kibi-cli 2.35.1 → 2.38.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 (154) hide show
  1. package/dist/cli-operation-metadata.d.ts +1 -1
  2. package/dist/cli-operation-metadata.js +1 -1
  3. package/dist/cli-register-foundation.d.ts.map +1 -1
  4. package/dist/cli-register-foundation.js +2 -1
  5. package/dist/cli-register-maintenance.d.ts.map +1 -1
  6. package/dist/cli-register-maintenance.js +5 -0
  7. package/dist/cli-validate.d.ts.map +1 -1
  8. package/dist/cli-validate.js +21 -2
  9. package/dist/cli.d.ts.map +1 -1
  10. package/dist/cli.js +16 -1
  11. package/dist/commands/aggregated-checks.d.ts.map +1 -1
  12. package/dist/commands/aggregated-checks.js +89 -16
  13. package/dist/commands/doctor.d.ts.map +1 -1
  14. package/dist/commands/doctor.js +56 -35
  15. package/dist/commands/github-init.d.ts.map +1 -1
  16. package/dist/commands/github-init.js +4 -2
  17. package/dist/commands/hook-managers.d.ts +43 -0
  18. package/dist/commands/hook-managers.d.ts.map +1 -0
  19. package/dist/commands/hook-managers.js +426 -0
  20. package/dist/commands/init.d.ts +1 -0
  21. package/dist/commands/init.d.ts.map +1 -1
  22. package/dist/commands/init.js +40 -5
  23. package/dist/commands/sync/persistence.d.ts.map +1 -1
  24. package/dist/commands/sync/persistence.js +43 -1
  25. package/dist/commands/telemetry.d.ts +7 -0
  26. package/dist/commands/telemetry.d.ts.map +1 -0
  27. package/dist/commands/telemetry.js +23 -0
  28. package/dist/decision-firmness.d.ts.map +1 -1
  29. package/dist/decision-firmness.js +11 -14
  30. package/dist/engine-limits.d.ts.map +1 -1
  31. package/dist/engine-limits.js +8 -10
  32. package/dist/entity-body-context.d.ts.map +1 -1
  33. package/dist/entity-body-context.js +39 -36
  34. package/dist/extractors/symbol-coordinates.d.ts.map +1 -1
  35. package/dist/extractors/symbol-coordinates.js +23 -4
  36. package/dist/firm-decision-edit.d.ts.map +1 -1
  37. package/dist/firm-decision-edit.js +1 -3
  38. package/dist/intent-search.d.ts +5 -1
  39. package/dist/intent-search.d.ts.map +1 -1
  40. package/dist/intent-search.js +118 -33
  41. package/dist/logic/ir.d.ts.map +1 -1
  42. package/dist/logic/ir.js +82 -108
  43. package/dist/operations/bootstrap/guidance-actions.d.ts.map +1 -1
  44. package/dist/operations/bootstrap/guidance-actions.js +2 -1
  45. package/dist/operations/bootstrap/plugin-offers.d.ts +11 -2
  46. package/dist/operations/bootstrap/plugin-offers.d.ts.map +1 -1
  47. package/dist/operations/bootstrap/plugin-offers.js +48 -9
  48. package/dist/operations/proof/claim-bindings.d.ts.map +1 -1
  49. package/dist/operations/proof/claim-bindings.js +1 -0
  50. package/dist/operations/proof/code-certificates.d.ts +2 -0
  51. package/dist/operations/proof/code-certificates.d.ts.map +1 -1
  52. package/dist/operations/proof/code-certificates.js +34 -14
  53. package/dist/operations/proof/code-models.d.ts.map +1 -1
  54. package/dist/operations/proof/code-models.js +19 -5
  55. package/dist/operations/proof/code-runner.d.ts +16 -0
  56. package/dist/operations/proof/code-runner.d.ts.map +1 -1
  57. package/dist/operations/proof/code-runner.js +42 -6
  58. package/dist/plugins/compose-search-hints.d.ts +29 -0
  59. package/dist/plugins/compose-search-hints.d.ts.map +1 -0
  60. package/dist/plugins/compose-search-hints.js +94 -0
  61. package/dist/plugins/external-allowlist.d.ts +7 -0
  62. package/dist/plugins/external-allowlist.d.ts.map +1 -1
  63. package/dist/plugins/external-allowlist.js +11 -0
  64. package/dist/plugins/registry.d.ts +8 -1
  65. package/dist/plugins/registry.d.ts.map +1 -1
  66. package/dist/plugins/registry.js +22 -3
  67. package/dist/prolog/codec.d.ts.map +1 -1
  68. package/dist/prolog/codec.js +10 -20
  69. package/dist/public/impact/coverage-depth-quality.d.ts.map +1 -1
  70. package/dist/public/impact/coverage-depth-quality.js +32 -16
  71. package/dist/public/impact/full-kb-quality.d.ts +6 -0
  72. package/dist/public/impact/full-kb-quality.d.ts.map +1 -1
  73. package/dist/public/impact/full-kb-quality.js +8 -3
  74. package/dist/public/impact/requirement-quality.d.ts.map +1 -1
  75. package/dist/public/impact/requirement-quality.js +56 -29
  76. package/dist/public/operations/catalog.d.ts +13 -3
  77. package/dist/public/operations/catalog.d.ts.map +1 -1
  78. package/dist/public/operations/check-executor.d.ts +6 -0
  79. package/dist/public/operations/check-executor.d.ts.map +1 -1
  80. package/dist/public/operations/check-executor.js +34 -2
  81. package/dist/public/operations/discovery-executors.d.ts +5 -1
  82. package/dist/public/operations/discovery-executors.d.ts.map +1 -1
  83. package/dist/public/operations/discovery-executors.js +65 -4
  84. package/dist/public/operations/evidence-floor.d.ts +8 -1
  85. package/dist/public/operations/evidence-floor.d.ts.map +1 -1
  86. package/dist/public/operations/evidence-floor.js +3 -4
  87. package/dist/public/operations/migration-plan.d.ts.map +1 -1
  88. package/dist/public/operations/migration-plan.js +41 -10
  89. package/dist/public/operations/node-ports.d.ts.map +1 -1
  90. package/dist/public/operations/node-ports.js +3 -1
  91. package/dist/public/operations/source-analysis-cache.d.ts +22 -0
  92. package/dist/public/operations/source-analysis-cache.d.ts.map +1 -0
  93. package/dist/public/operations/source-analysis-cache.js +157 -0
  94. package/dist/public/operations/specs/discovery.d.ts +7 -2
  95. package/dist/public/operations/specs/discovery.d.ts.map +1 -1
  96. package/dist/public/operations/specs/discovery.js +7 -2
  97. package/dist/public/operations/specs/mutation-schemas.d.ts +6 -1
  98. package/dist/public/operations/specs/mutation-schemas.d.ts.map +1 -1
  99. package/dist/public/operations/specs/upsert.d.ts +6 -1
  100. package/dist/public/operations/specs/upsert.d.ts.map +1 -1
  101. package/dist/public/operations/symbol-granularity-check.d.ts +3 -1
  102. package/dist/public/operations/symbol-granularity-check.d.ts.map +1 -1
  103. package/dist/public/operations/symbol-granularity-check.js +21 -7
  104. package/dist/public/proof-protocol.d.ts +6 -1
  105. package/dist/public/proof-protocol.d.ts.map +1 -1
  106. package/dist/public/proof-protocol.js +12 -3
  107. package/dist/public/proof-sources.d.ts +2 -0
  108. package/dist/public/proof-sources.d.ts.map +1 -1
  109. package/dist/public/proof-sources.js +32 -6
  110. package/dist/public/skills/kibi-bootstrap/SKILL.md +2 -2
  111. package/dist/public/skills/kibi-usage/SKILL.md +42 -3
  112. package/dist/public/skills/kibi-usage/resources/fact-lanes.md +34 -0
  113. package/dist/public/skills/kibi-usage/resources/proof.md +13 -5
  114. package/dist/public/skills/kibi-usage/resources/workflows.md +10 -0
  115. package/dist/relationships/shards.d.ts +2 -0
  116. package/dist/relationships/shards.d.ts.map +1 -1
  117. package/dist/relationships/shards.js +25 -1
  118. package/dist/schemas/entity.schema.json +6 -1
  119. package/dist/search-answer.js +1 -1
  120. package/dist/search-hints.d.ts +58 -0
  121. package/dist/search-hints.d.ts.map +1 -0
  122. package/dist/search-hints.js +187 -0
  123. package/dist/search-ranking.d.ts +7 -0
  124. package/dist/search-ranking.d.ts.map +1 -1
  125. package/dist/search-ranking.js +54 -56
  126. package/dist/search-token-cache.d.ts +30 -0
  127. package/dist/search-token-cache.d.ts.map +1 -0
  128. package/dist/search-token-cache.js +86 -0
  129. package/dist/usage-telemetry.d.ts +11 -0
  130. package/dist/usage-telemetry.d.ts.map +1 -0
  131. package/dist/usage-telemetry.js +47 -0
  132. package/dist/utils/branch-resolver.d.ts.map +1 -1
  133. package/dist/utils/branch-resolver.js +1 -0
  134. package/package.json +5 -4
  135. package/src/public/impact/coverage-depth-quality.ts +59 -21
  136. package/src/public/impact/full-kb-quality.ts +15 -1
  137. package/src/public/impact/requirement-quality.ts +95 -38
  138. package/src/public/operations/check-executor.ts +41 -1
  139. package/src/public/operations/discovery-executors.ts +92 -4
  140. package/src/public/operations/evidence-floor.ts +15 -3
  141. package/src/public/operations/migration-plan.ts +41 -9
  142. package/src/public/operations/node-ports.ts +3 -1
  143. package/src/public/operations/source-analysis-cache.ts +196 -0
  144. package/src/public/operations/specs/discovery.ts +8 -2
  145. package/src/public/operations/symbol-granularity-check.ts +25 -5
  146. package/src/public/proof-protocol-types.d.ts +1 -1
  147. package/src/public/proof-protocol.ts +18 -4
  148. package/src/public/proof-sources.ts +37 -6
  149. package/src/public/skills/kibi-bootstrap/SKILL.md +2 -2
  150. package/src/public/skills/kibi-usage/SKILL.md +42 -3
  151. package/src/public/skills/kibi-usage/resources/fact-lanes.md +34 -0
  152. package/src/public/skills/kibi-usage/resources/proof.md +13 -5
  153. package/src/public/skills/kibi-usage/resources/workflows.md +10 -0
  154. package/src/schemas/entity.schema.json +6 -1
@@ -274,27 +274,25 @@ export function splitTopLevelGeneral(str, delimiter) {
274
274
  // implements REQ-009
275
275
  return scanTopLevelGeneral(str, delimiter).parts;
276
276
  }
277
+ // Parts are sliced from the input rather than built a character at a time:
278
+ // candidate pages run to megabytes, and per-character concatenation made
279
+ // scanning them most of a search's parsing time.
277
280
  function scanTopLevelGeneral(str, delimiter) {
278
281
  const results = [];
279
- let current = "";
282
+ let partStart = 0;
280
283
  let quote = null;
281
284
  const delimiters = [];
282
285
  let balanced = true;
283
286
  for (let i = 0; i < str.length; i++) {
284
287
  const char = str[i];
285
288
  if (quote !== null) {
286
- current += char;
287
289
  if (char === "\\") {
288
- const escaped = str[i + 1];
289
- if (escaped !== undefined) {
290
- current += escaped;
290
+ if (i + 1 < str.length)
291
291
  i++;
292
- }
293
292
  }
294
293
  else if (char === quote) {
295
294
  const doubledPrologQuote = quote === "'" && str[i + 1] === "'";
296
295
  if (doubledPrologQuote) {
297
- current += str[i + 1] ?? "";
298
296
  i++;
299
297
  }
300
298
  else {
@@ -305,12 +303,10 @@ function scanTopLevelGeneral(str, delimiter) {
305
303
  }
306
304
  if (char === "'" || char === '"') {
307
305
  quote = char;
308
- current += char;
309
306
  continue;
310
307
  }
311
308
  if (char === "[" || char === "(" || char === "{") {
312
309
  delimiters.push(char);
313
- current += char;
314
310
  continue;
315
311
  }
316
312
  if (char === "]" || char === ")" || char === "}") {
@@ -321,25 +317,19 @@ function scanTopLevelGeneral(str, delimiter) {
321
317
  else {
322
318
  delimiters.pop();
323
319
  }
324
- current += char;
325
320
  continue;
326
321
  }
327
322
  if (delimiters.length === 0 &&
328
323
  delimiter.length > 0 &&
329
324
  str.startsWith(delimiter, i)) {
330
- if (current) {
331
- results.push(current);
332
- current = "";
333
- }
325
+ if (i > partStart)
326
+ results.push(str.slice(partStart, i));
334
327
  i += delimiter.length - 1;
328
+ partStart = i + 1;
335
329
  }
336
- else {
337
- current += char;
338
- }
339
- }
340
- if (current) {
341
- results.push(current);
342
330
  }
331
+ if (str.length > partStart)
332
+ results.push(str.slice(partStart));
343
333
  return {
344
334
  parts: results,
345
335
  balanced: balanced && quote === null && delimiters.length === 0,
@@ -1 +1 @@
1
- {"version":3,"file":"coverage-depth-quality.d.ts","sourceRoot":"","sources":["../../../src/public/impact/coverage-depth-quality.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,gBAAgB,EACjB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAsIpD,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,MAAM,EAAE,CAI1E;AAgLD,wBAAgB,qCAAqC,CACnD,eAAe,EAAE,SAAS,gBAAgB,EAAE,EAC5C,kBAAkB,GAAE,WAAW,CAC7B,MAAM,EACN,QAAQ,CAAC;IACP,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7C,QAAQ,CAAC,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC9C,CAAC,CACS,GACZ,SAAS,iBAAiB,EAAE,CAmB9B;AAID;;;;;GAKG;AAEH,wBAAgB,oCAAoC,CAClD,eAAe,EAAE,SAAS,gBAAgB,EAAE,GAC3C,SAAS,iBAAiB,EAAE,CA2D9B"}
1
+ {"version":3,"file":"coverage-depth-quality.d.ts","sourceRoot":"","sources":["../../../src/public/impact/coverage-depth-quality.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,gBAAgB,EACjB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAgLpD,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,MAAM,EAAE,CAI1E;AA2KD,wBAAgB,qCAAqC,CACnD,eAAe,EAAE,SAAS,gBAAgB,EAAE,EAC5C,kBAAkB,GAAE,WAAW,CAC7B,MAAM,EACN,QAAQ,CAAC;IACP,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7C,QAAQ,CAAC,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC9C,CAAC,CACS,GACZ,SAAS,iBAAiB,EAAE,CAoB9B;AAID;;;;;GAKG;AAEH,wBAAgB,oCAAoC,CAClD,eAAe,EAAE,SAAS,gBAAgB,EAAE,GAC3C,SAAS,iBAAiB,EAAE,CA2D9B"}
@@ -1,4 +1,29 @@
1
1
  import { COARSE_GRANULARITY_REASONS } from "../symbol-granularity.generated.js";
2
+ function incomingKey(type, relationshipType, targetId) {
3
+ return `${type}\0${relationshipType}\0${targetId}`;
4
+ }
5
+ function coverageIndex(manifestResults) {
6
+ const incomingByTarget = new Map();
7
+ // A result linking the same target twice is listed twice; every reader
8
+ // dedupes by entity id.
9
+ for (const result of manifestResults) {
10
+ for (const relationship of result.relationships) {
11
+ const key = incomingKey(result.entity.type, relationship.type, relationship.to);
12
+ const list = incomingByTarget.get(key);
13
+ if (list === undefined)
14
+ incomingByTarget.set(key, [result.entity]);
15
+ else
16
+ list.push(result.entity);
17
+ }
18
+ }
19
+ return {
20
+ resultsById: new Map(manifestResults.map((manifestResult) => [
21
+ manifestResult.entity.id,
22
+ manifestResult,
23
+ ])),
24
+ incomingByTarget,
25
+ };
26
+ }
2
27
  function entitiesById(manifestResults) {
3
28
  return new Map(manifestResults.map((result) => [result.entity.id, result.entity]));
4
29
  }
@@ -11,14 +36,7 @@ function outgoingTargets(lookup) {
11
36
  });
12
37
  }
13
38
  function incomingSources(lookup) {
14
- return lookup.manifestResults.flatMap((result) => {
15
- if (result.entity.type !== lookup.type)
16
- return [];
17
- return result.relationships.some((relationship) => relationship.type === lookup.relationshipType &&
18
- relationship.to === lookup.targetId)
19
- ? [result.entity]
20
- : [];
21
- });
39
+ return (lookup.index.incomingByTarget.get(incomingKey(lookup.type, lookup.relationshipType, lookup.targetId)) ?? []);
22
40
  }
23
41
  function uniqueEntities(entities) {
24
42
  return [
@@ -129,11 +147,8 @@ function createDiagnostic(coverage, proofEvidence) {
129
147
  },
130
148
  };
131
149
  }
132
- function coverageForRequirement(result, manifestResults, entities) {
133
- const resultsById = new Map(manifestResults.map((manifestResult) => [
134
- manifestResult.entity.id,
135
- manifestResult,
136
- ]));
150
+ function coverageForRequirement(result, index, entities) {
151
+ const resultsById = index.resultsById;
137
152
  const scenarios = outgoingTargets({
138
153
  result,
139
154
  relationshipType: "specified_by",
@@ -154,7 +169,7 @@ function coverageForRequirement(result, manifestResults, entities) {
154
169
  entities,
155
170
  }),
156
171
  ...incomingSources({
157
- manifestResults,
172
+ index,
158
173
  targetId: result.entity.id,
159
174
  relationshipType: "validates",
160
175
  type: "test",
@@ -164,7 +179,7 @@ function coverageForRequirement(result, manifestResults, entities) {
164
179
  const scenarioResult = resultsById.get(scenario.id);
165
180
  return [
166
181
  ...incomingSources({
167
- manifestResults,
182
+ index,
168
183
  targetId: scenario.id,
169
184
  relationshipType: "validates",
170
185
  type: "test",
@@ -215,11 +230,12 @@ function isReviewableRequirement(requirement, superseded) {
215
230
  export function createCoverageDepthQualityDiagnostics(manifestResults, proofByRequirement = new Map()) {
216
231
  const entities = entitiesById(manifestResults);
217
232
  const superseded = supersededRequirementIds(manifestResults);
233
+ const index = coverageIndex(manifestResults);
218
234
  return manifestResults
219
235
  .filter((result) => result.entity.type === "req" &&
220
236
  isReviewableRequirement(result.entity, superseded))
221
237
  .flatMap((result) => {
222
- const diagnostic = createDiagnostic(coverageForRequirement(result, manifestResults, entities), proofByRequirement.get(result.entity.id));
238
+ const diagnostic = createDiagnostic(coverageForRequirement(result, index, entities), proofByRequirement.get(result.entity.id));
223
239
  return diagnostic === undefined ? [] : [diagnostic];
224
240
  })
225
241
  .toSorted((left, right) => (left.entityId ?? "").localeCompare(right.entityId ?? ""));
@@ -9,6 +9,12 @@ type FullKbQualityDiagnosticsOptions = {
9
9
  readonly now?: Date;
10
10
  readonly proofSnapshot?: string;
11
11
  readonly checkedAt?: string;
12
+ /**
13
+ * The per-contract receipt bindings kb_coverage uses (a Prolog
14
+ * TestId -> binding hash dict), or null for strict snapshot binding. Read
15
+ * lazily so a check without proof evidence never pays for it.
16
+ */
17
+ readonly proofTestBindings?: () => Promise<string | null>;
12
18
  };
13
19
  export declare function loadKbExtractionResults(prolog: Pick<PrologPort, "query" | "queryEntities">): Promise<ExtractionResult[]>;
14
20
  export declare function passingE2eStage(passingE2e: unknown): Readonly<Record<string, unknown>> | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"full-kb-quality.d.ts","sourceRoot":"","sources":["../../../src/public/impact/full-kb-quality.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAEV,gBAAgB,EACjB,MAAM,8BAA8B,CAAC;AAatC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAcjE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AASpD,KAAK,+BAA+B,GAAG;IACrC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,GAAG,eAAe,CAAC,CAAC;IAC7D,QAAQ,CAAC,sBAAsB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACtD,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC;AAqgBF,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,GAAG,eAAe,CAAC,GAClD,OAAO,CAAC,gBAAgB,EAAE,CAAC,CA8C7B;AAED,wBAAgB,eAAe,CAC7B,UAAU,EAAE,OAAO,GAClB,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,SAAS,CAM/C;AA2ID,wBAAsB,+BAA+B,CACnD,OAAO,EAAE,+BAA+B,GACvC,OAAO,CAAC,SAAS,iBAAiB,EAAE,CAAC,CAmCvC"}
1
+ {"version":3,"file":"full-kb-quality.d.ts","sourceRoot":"","sources":["../../../src/public/impact/full-kb-quality.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAEV,gBAAgB,EACjB,MAAM,8BAA8B,CAAC;AAatC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAcjE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AASpD,KAAK,+BAA+B,GAAG;IACrC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,GAAG,eAAe,CAAC,CAAC;IAC7D,QAAQ,CAAC,sBAAsB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACtD,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B;;;;OAIG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;CAC3D,CAAC;AAqgBF,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,GAAG,eAAe,CAAC,GAClD,OAAO,CAAC,gBAAgB,EAAE,CAAC,CA8C7B;AAED,wBAAgB,eAAe,CAC7B,UAAU,EAAE,OAAO,GAClB,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,SAAS,CAM/C;AAkJD,wBAAsB,+BAA+B,CACnD,OAAO,EAAE,+BAA+B,GACvC,OAAO,CAAC,SAAS,iBAAiB,EAAE,CAAC,CAoCvC"}
@@ -450,7 +450,7 @@ export function passingE2eStage(passingE2e) {
450
450
  function stringArrayField(value) {
451
451
  return Array.isArray(value) ? value.map(String) : undefined;
452
452
  }
453
- async function loadCoverageProofEvidence(prolog, requirementCount, proofSnapshot, checkedAt) {
453
+ async function loadCoverageProofEvidence(prolog, requirementCount, proofSnapshot, checkedAt, proofTestBindings) {
454
454
  if (proofSnapshot === undefined ||
455
455
  checkedAt === undefined ||
456
456
  requirementCount === 0) {
@@ -458,11 +458,16 @@ async function loadCoverageProofEvidence(prolog, requirementCount, proofSnapshot
458
458
  }
459
459
  let payload;
460
460
  try {
461
+ // Judge receipts with the binding kb_coverage uses; under strict snapshot
462
+ // binding any unrelated change since kibi prove would read every receipt
463
+ // as stale and bring back the weak-depth review.
464
+ const bindings = (await proofTestBindings?.()) ?? null;
465
+ const binding = bindings === null ? "strict_snapshot, _{}" : `per_contract, ${bindings}`;
461
466
  // W1 push-down: the slim evidence projection returns only the fields the
462
467
  // quality diagnostics consume, keeping the response far below the output
463
468
  // capacity limit on large KBs (the full coverage report rows were the
464
469
  // original ENOBUFS offender).
465
- payload = await runOperationJsonQuery(prolog, "discovery.pl", `discovery:coverage_evidence_json(${toPrologList([])}, ${toPrologAtom(proofSnapshot)}, ${toPrologAtom(checkedAt)}, ${PROOF_RECEIPT_MAX_AGE_SECONDS}, JsonString)`, "Quality diagnostic coverage evidence");
470
+ payload = await runOperationJsonQuery(prolog, "discovery.pl", `discovery:coverage_evidence_json(${toPrologList([])}, ${binding}, ${toPrologAtom(proofSnapshot)}, ${toPrologAtom(checkedAt)}, ${PROOF_RECEIPT_MAX_AGE_SECONDS}, JsonString)`, "Quality diagnostic coverage evidence");
466
471
  }
467
472
  catch {
468
473
  // Quality diagnostics must fail closed when the optional proof readback is
@@ -542,7 +547,7 @@ export async function collectFullKbQualityDiagnostics(options) {
542
547
  loadKbExtractionResults(options.prolog),
543
548
  collectTelemetryDiagnostics(options.workspaceRoot, options.now ?? new Date()),
544
549
  ]);
545
- const proofEvidence = await loadCoverageProofEvidence(options.prolog, manifestResults.filter((result) => result.entity.type === "req").length, options.proofSnapshot, options.checkedAt);
550
+ const proofEvidence = await loadCoverageProofEvidence(options.prolog, manifestResults.filter((result) => result.entity.type === "req").length, options.proofSnapshot, options.checkedAt, options.proofTestBindings);
546
551
  const coverageDepthDiagnostics = createCoverageDepthQualityDiagnostics(manifestResults, proofEvidence);
547
552
  const diagnostics = [
548
553
  ...telemetryDiagnostics,
@@ -1 +1 @@
1
- {"version":3,"file":"requirement-quality.d.ts","sourceRoot":"","sources":["../../../src/public/impact/requirement-quality.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0CAA0C,CAAC;AACrF,OAAO,KAAK,EAAE,oCAAoC,EAAE,MAAM,YAAY,CAAC;AA2PvE,wBAAgB,mCAAmC,CACjD,OAAO,EAAE,oCAAoC,GAC5C,oBAAoB,EAAE,CAMxB"}
1
+ {"version":3,"file":"requirement-quality.d.ts","sourceRoot":"","sources":["../../../src/public/impact/requirement-quality.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0CAA0C,CAAC;AACrF,OAAO,KAAK,EAAE,oCAAoC,EAAE,MAAM,YAAY,CAAC;AAoTvE,wBAAgB,mCAAmC,CACjD,OAAO,EAAE,oCAAoC,GAC5C,oBAAoB,EAAE,CAMxB"}
@@ -42,41 +42,67 @@ function targetHasType(targetId, type, typesByEntityId) {
42
42
  const targetType = typesByEntityId.get(targetId);
43
43
  return targetType === undefined || targetType === type;
44
44
  }
45
- function collectFanout(requirementId, results, typesByEntityId) {
46
- const implementingSymbolIds = [];
47
- const scenarioIds = [];
48
- const testIds = [];
49
- const dependentRequirementIds = [];
45
+ /** One pass over every relationship, so each requirement's fanout is a lookup. */
46
+ function fanoutIndex(results) {
47
+ const relationshipsByEntityId = new Map();
48
+ const implementerIdsByRequirementId = new Map();
49
+ const dependentRequirementIdsByRequirementId = new Map();
50
+ const append = (index, key, value) => {
51
+ const list = index.get(key);
52
+ if (list === undefined)
53
+ index.set(key, [value]);
54
+ else
55
+ list.push(value);
56
+ };
50
57
  for (const result of results) {
58
+ const relationships = relationshipsByEntityId.get(result.entity.id);
59
+ if (relationships === undefined) {
60
+ relationshipsByEntityId.set(result.entity.id, [...result.relationships]);
61
+ }
62
+ else {
63
+ relationships.push(...result.relationships);
64
+ }
51
65
  for (const relationship of result.relationships) {
52
- if (relationship.type === "implements" &&
53
- relationship.to === requirementId) {
54
- implementingSymbolIds.push(result.entity.id);
55
- }
56
- if (result.entity.id === requirementId &&
57
- relationship.type === "specified_by" &&
58
- targetHasType(relationship.to, "scenario", typesByEntityId)) {
59
- scenarioIds.push(relationship.to);
66
+ if (relationship.type === "implements") {
67
+ append(implementerIdsByRequirementId, relationship.to, result.entity.id);
60
68
  }
61
- if (result.entity.id === requirementId &&
62
- (relationship.type === "verified_by" ||
63
- relationship.type === "covered_by") &&
64
- targetHasType(relationship.to, "test", typesByEntityId)) {
65
- testIds.push(relationship.to);
66
- }
67
- if (relationship.type === "depends_on") {
68
- if (result.entity.id === requirementId &&
69
- targetHasType(relationship.to, "req", typesByEntityId)) {
70
- dependentRequirementIds.push(relationship.to);
71
- }
72
- if (relationship.to === requirementId && result.entity.type === "req") {
73
- dependentRequirementIds.push(result.entity.id);
74
- }
69
+ if (relationship.type === "depends_on" && result.entity.type === "req") {
70
+ append(dependentRequirementIdsByRequirementId, relationship.to, result.entity.id);
75
71
  }
76
72
  }
77
73
  }
78
74
  return {
79
- implementingSymbolIds: sortedUnique(implementingSymbolIds),
75
+ relationshipsByEntityId,
76
+ implementerIdsByRequirementId,
77
+ dependentRequirementIdsByRequirementId,
78
+ };
79
+ }
80
+ function collectFanout(requirementId, index, typesByEntityId) {
81
+ const scenarioIds = [];
82
+ const testIds = [];
83
+ const dependentRequirementIds = [];
84
+ // rationale: every requirement this is called for is in the index, so the
85
+ // fallback list is never read.
86
+ // Stryker disable next-line ArrayDeclaration
87
+ const relationships = index.relationshipsByEntityId.get(requirementId) ?? [];
88
+ for (const relationship of relationships) {
89
+ if (relationship.type === "specified_by" &&
90
+ targetHasType(relationship.to, "scenario", typesByEntityId)) {
91
+ scenarioIds.push(relationship.to);
92
+ }
93
+ if ((relationship.type === "verified_by" ||
94
+ relationship.type === "covered_by") &&
95
+ targetHasType(relationship.to, "test", typesByEntityId)) {
96
+ testIds.push(relationship.to);
97
+ }
98
+ if (relationship.type === "depends_on" &&
99
+ targetHasType(relationship.to, "req", typesByEntityId)) {
100
+ dependentRequirementIds.push(relationship.to);
101
+ }
102
+ }
103
+ dependentRequirementIds.push(...(index.dependentRequirementIdsByRequirementId.get(requirementId) ?? []));
104
+ return {
105
+ implementingSymbolIds: sortedUnique(index.implementerIdsByRequirementId.get(requirementId) ?? []),
80
106
  scenarioIds: sortedUnique(scenarioIds),
81
107
  testIds: sortedUnique(testIds),
82
108
  dependentRequirementIds: sortedUnique(dependentRequirementIds),
@@ -96,10 +122,11 @@ function isUmbrellaRequirement(result) {
96
122
  }
97
123
  function createBroadRequirementDiagnostics(results) {
98
124
  const typesByEntityId = entityTypeById(results);
125
+ const index = fanoutIndex(results);
99
126
  return results.flatMap((result) => {
100
127
  if (!isCurrentRequirement(result))
101
128
  return [];
102
- const fanout = collectFanout(result.entity.id, results, typesByEntityId);
129
+ const fanout = collectFanout(result.entity.id, index, typesByEntityId);
103
130
  if (!exceedsBroadThreshold(fanout))
104
131
  return [];
105
132
  if (isUmbrellaRequirement(result))
@@ -176,7 +176,7 @@ export declare const OPERATION_CATALOG: readonly [{
176
176
  }, {
177
177
  readonly name: "kb_search";
178
178
  readonly cliName: "search";
179
- readonly description: "Ask the KB a question or search it. Default intent-v1 ranking accepts questions, host-agent semantic facets and changed-code source locations, returns evidence, abstains below its confidence threshold and adds an answer layer: the current requirements that govern the topic, what must stay true (linked facts), why (ADRs) and what verifies it (scenarios, tests). Use before changing behavior, then kb_query for exact follow-up. No mutation side effects.";
179
+ readonly description: "Ask the KB a question or search it. Default intent-v1 ranking accepts questions, host-agent semantic facets and changed-code source locations, returns evidence, abstains below its confidence threshold and adds an answer layer: the current requirements that govern the topic, what must stay true (linked facts), why (ADRs) and what verifies it (scenarios, tests). A weak answer may add queryAnalysis.hints from a search-hints plugin: requirements the question may mean, to re-ask with. Use before changing behavior, then kb_query for exact follow-up. No mutation side effects.";
180
180
  readonly businessInputSchema: {
181
181
  readonly type: "object";
182
182
  readonly required: readonly ["query"];
@@ -215,6 +215,11 @@ export declare const OPERATION_CATALOG: readonly [{
215
215
  readonly default: true;
216
216
  readonly description: "Intent-v1 only, first page only. When true (default) the result includes an answer layer: current governing requirements with their linked facts, scenarios, tests and ADRs, superseded requirements listed separately, and observation facts labelled as notes. Bounded in size; discovery, not proof.";
217
217
  };
218
+ readonly hints: {
219
+ readonly type: "boolean";
220
+ readonly default: true;
221
+ readonly description: "Intent-v1 only, first page only. When true (default) and the project activates a kibi.search-hints.v1 plugin, a weak or abstained answer adds queryAnalysis.hints: requirements the question may mean, to re-ask with. Hints never change results or the answer layer.";
222
+ };
218
223
  readonly semanticFacets: {
219
224
  readonly type: "object";
220
225
  readonly additionalProperties: false;
@@ -255,7 +260,7 @@ export declare const OPERATION_CATALOG: readonly [{
255
260
  readonly maxItems: 20;
256
261
  };
257
262
  };
258
- readonly description: "Optional host-agent semantic interpretation. Kibi uses these strings as deterministic aliases/facets; it does not call a model itself.";
263
+ readonly description: "Optional host-agent semantic interpretation. Kibi uses these strings as deterministic aliases/facets; ranking never calls a model.";
259
264
  };
260
265
  readonly sourceLocations: {
261
266
  readonly type: "array";
@@ -1277,6 +1282,11 @@ export declare const OPERATION_CATALOG: readonly [{
1277
1282
  readonly minLength: 1;
1278
1283
  readonly description: "The name the domain is exported under in the symbol's source file, when the symbol's title is not that name.";
1279
1284
  };
1285
+ readonly field: {
1286
+ readonly type: "string";
1287
+ readonly minLength: 1;
1288
+ readonly description: "exhaustive: when the export is a list of records, the field of each record that names a domain member (a catalog's name).";
1289
+ };
1280
1290
  };
1281
1291
  readonly additionalProperties: false;
1282
1292
  };
@@ -1304,7 +1314,7 @@ export declare const OPERATION_CATALOG: readonly [{
1304
1314
  };
1305
1315
  readonly value_source: {
1306
1316
  readonly type: "array";
1307
- readonly description: "arithmetic and smt: code constants the assumptions read. Kibi evaluates each export at ingest and requires the certificate to assume the variable equals that value, so the proof is about the code and not only the knowledge base. With measure count the value is the size of a list, set, map or object export, so a count claim reads the collection itself. An entry {source, measure: count} counts the members Kibi reads from a project source (routes, tables, environment variables).";
1317
+ readonly description: "arithmetic and smt: code constants the assumptions read. Kibi evaluates each export at ingest and requires the certificate to assume the variable equals that value, so the proof is about the code and not only the knowledge base. With measure count the value is the size of a list, set, map or object export, so a count claim reads the collection itself. A dotted export (POLICY.eventLimit) reads one field of an object export. An entry {source, measure: count} counts the members Kibi reads from a project source (routes, tables, environment variables).";
1308
1318
  readonly minItems: 1;
1309
1319
  readonly items: {
1310
1320
  readonly type: "object";
@@ -1 +1 @@
1
- {"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../../src/public/operations/catalog.ts"],"names":[],"mappings":"AA6BA,OAAO,KAAK,EACV,aAAa,EACb,aAAa,EACb,qBAAqB,EACtB,MAAM,YAAY,CAAC;AAEpB,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyBe,CAAC;AAyF9C,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,aAAa,GAClB,qBAAqB,CA+BvB;AAQD,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,qBAAqB,GAAG,SAAS,EACvC,IAAI,EAAE,aAAa,GAClB,qBAAqB,CAKvB;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,aAAa,GAAG,qBAAqB,CAElE;AAGD,wBAAgB,SAAS,IAAI,SAAS,qBAAqB,EAAE,CAE5D"}
1
+ {"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../../src/public/operations/catalog.ts"],"names":[],"mappings":"AA6BA,OAAO,KAAK,EACV,aAAa,EACb,aAAa,EACb,qBAAqB,EACtB,MAAM,YAAY,CAAC;AAEpB,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyBe,CAAC;AAyF9C,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,aAAa,GAClB,qBAAqB,CA+BvB;AAQD,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,qBAAqB,GAAG,SAAS,EACvC,IAAI,EAAE,aAAa,GAClB,qBAAqB,CAKvB;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,aAAa,GAAG,qBAAqB,CAElE;AAGD,wBAAgB,SAAS,IAAI,SAAS,qBAAqB,EAAE,CAE5D"}
@@ -35,5 +35,11 @@ export type CheckExecutionOptions = {
35
35
  * missing), so kb_check reports this instead of any of them.
36
36
  */
37
37
  export declare function uncompiledBranchStoreViolation(context: OperationContext, workspaceRoot: string): Violation | null;
38
+ /**
39
+ * The branch store this check reads, when the engine is known to read it, as
40
+ * the place to keep parsed source analyses. A read-only detached snapshot
41
+ * and an unknown store (an explicit --kb-path) get no cache.
42
+ */
43
+ export declare function analysisCacheDir(context: OperationContext, workspaceRoot: string, options: CheckExecutionOptions): string | undefined;
38
44
  export declare function executeCheck(args: CheckInput, context: OperationContext, options?: CheckExecutionOptions): Promise<OperationResult<CheckPayload>>;
39
45
  //# sourceMappingURL=check-executor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"check-executor.d.ts","sourceRoot":"","sources":["../../../src/public/operations/check-executor.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,sBAAsB,EAC3B,sBAAsB,EACtB,YAAY,EACb,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAIL,iBAAiB,EAGjB,iBAAiB,EAGlB,MAAM,oBAAoB,CAAC;AAc5B,OAAO,KAAK,EAAE,gBAAgB,EAAc,MAAM,oBAAoB,CAAC;AAOvE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAIlD,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,sBAAsB,CAAC,EAAE,OAAO,CAAC;IAC1C,QAAQ,CAAC,wBAAwB,CAAC,EAAE,OAAO,CAAC;IAC5C,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,6EAA6E;IAC7E,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,sBAAsB,CAAC;AAClD,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,sBAAsB,EAAE,CAAC;AACxE,OAAO,EACL,sBAAsB,EACtB,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,GAClB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,CAAC,6CAA6C,CAAC,EAAE,OAAO,CAAC;IACjE;;;;;;OAMG;IACH,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAC;CACxC,CAAC;AAoFF;;;;;GAKG;AAEH,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,gBAAgB,EACzB,aAAa,EAAE,MAAM,GACpB,SAAS,GAAG,IAAI,CAgClB;AAGD,wBAAsB,YAAY,CAChC,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,gBAAgB,EACzB,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC,CAwQxC"}
1
+ {"version":3,"file":"check-executor.d.ts","sourceRoot":"","sources":["../../../src/public/operations/check-executor.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,sBAAsB,EAC3B,sBAAsB,EACtB,YAAY,EACb,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAIL,iBAAiB,EAGjB,iBAAiB,EAGlB,MAAM,oBAAoB,CAAC;AAc5B,OAAO,KAAK,EAAE,gBAAgB,EAAc,MAAM,oBAAoB,CAAC;AAOvE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAIlD,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,sBAAsB,CAAC,EAAE,OAAO,CAAC;IAC1C,QAAQ,CAAC,wBAAwB,CAAC,EAAE,OAAO,CAAC;IAC5C,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,6EAA6E;IAC7E,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,sBAAsB,CAAC;AAClD,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,sBAAsB,EAAE,CAAC;AACxE,OAAO,EACL,sBAAsB,EACtB,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,GAClB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,CAAC,6CAA6C,CAAC,EAAE,OAAO,CAAC;IACjE;;;;;;OAMG;IACH,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAC;CACxC,CAAC;AAoFF;;;;;GAKG;AAEH,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,gBAAgB,EACzB,aAAa,EAAE,MAAM,GACpB,SAAS,GAAG,IAAI,CAgClB;AAED;;;;GAIG;AAEH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,gBAAgB,EACzB,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,qBAAqB,GAC7B,MAAM,GAAG,SAAS,CAiBpB;AAGD,wBAAsB,YAAY,CAChC,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,gBAAgB,EACzB,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC,CAmRxC"}
@@ -120,6 +120,28 @@ export function uncompiledBranchStoreViolation(context, workspaceRoot) {
120
120
  },
121
121
  };
122
122
  }
123
+ /**
124
+ * The branch store this check reads, when the engine is known to read it, as
125
+ * the place to keep parsed source analyses. A read-only detached snapshot
126
+ * and an unknown store (an explicit --kb-path) get no cache.
127
+ */
128
+ // implements REQ-cli-check
129
+ export function analysisCacheDir(context, workspaceRoot, options) {
130
+ if (context.branchAttachment === undefined &&
131
+ options.branchStoreAttached !== true) {
132
+ return undefined;
133
+ }
134
+ try {
135
+ const attachment = context.branchAttachment ?? resolveBranchAttachment(workspaceRoot);
136
+ if ("storePath" in attachment && attachment.readOnly === undefined) {
137
+ return attachment.storePath;
138
+ }
139
+ }
140
+ catch {
141
+ // A branch that cannot be resolved gets no cache.
142
+ }
143
+ return undefined;
144
+ }
123
145
  // implements REQ-kibi-operation-interface-parity, REQ-002
124
146
  export async function executeCheck(args, context, options = {}) {
125
147
  try {
@@ -130,6 +152,10 @@ export async function executeCheck(args, context, options = {}) {
130
152
  ? snapshotEvidence.snapshot.hash
131
153
  : undefined;
132
154
  const checkedAt = context.clock().toISOString();
155
+ const proofTestBindings = async () => {
156
+ const { perContractTestBindings } = await import("./specs/reporting.js");
157
+ return perContractTestBindings({ ...context, prolog });
158
+ };
133
159
  // Enforcement policy is Kibi-owned and deterministic from the installed
134
160
  // version. `args.rules` is an invocation-time diagnostic selector only.
135
161
  const rulesAllowlist = resolveCheckRules(args);
@@ -197,6 +223,7 @@ export async function executeCheck(args, context, options = {}) {
197
223
  workspaceRoot,
198
224
  ...(proofSnapshot !== undefined ? { proofSnapshot } : {}),
199
225
  checkedAt,
226
+ proofTestBindings,
200
227
  now: context.clock(),
201
228
  ...maxDiagnosticsOption,
202
229
  });
@@ -239,12 +266,16 @@ export async function executeCheck(args, context, options = {}) {
239
266
  const sourcePathFindings = rulesAllowlist.has(SOURCE_PATH_DANGLING_RULE)
240
267
  ? collectSourcePathDanglingViolations(workspaceRoot)
241
268
  : [];
242
- const symbolGranularityFindings = await collectSymbolGranularityViolations(prolog, workspaceRoot, rulesAllowlist);
269
+ const symbolGranularityFindings = await collectSymbolGranularityViolations(prolog, workspaceRoot, rulesAllowlist, analysisCacheDir(context, workspaceRoot, options));
243
270
  const originReviewFindings = await collectOriginReviewViolations(prolog, rulesAllowlist, workspaceRoot);
244
271
  const entityContextFindings = collectEntityContextViolations(rulesAllowlist, workspaceRoot);
245
272
  const decisionFirmnessFindings = collectDecisionFirmnessViolations(rulesAllowlist, workspaceRoot);
246
273
  const checkPolicyFindings = await collectCheckPolicyViolations(prolog, rulesAllowlist, workspaceRoot);
247
- const evidenceFloorFindings = await collectEvidenceFloorViolations(context, rulesAllowlist, { freshEvidence: args.freshEvidence === true });
274
+ const evidenceFloorFindings = await collectEvidenceFloorViolations(context, rulesAllowlist, {
275
+ freshEvidence: args.freshEvidence === true,
276
+ checkedAt,
277
+ snapshotEvidence,
278
+ });
248
279
  const proofContractClaimFindings = await collectProofContractClaimViolations(context, rulesAllowlist);
249
280
  const partitioned = partitionCheckFindings([
250
281
  ...aggregatedFindings,
@@ -281,6 +312,7 @@ export async function executeCheck(args, context, options = {}) {
281
312
  workspaceRoot,
282
313
  ...(proofSnapshot !== undefined ? { proofSnapshot } : {}),
283
314
  checkedAt,
315
+ proofTestBindings,
284
316
  now: context.clock(),
285
317
  ...maxDiagnosticsOption,
286
318
  });
@@ -1,5 +1,6 @@
1
1
  import { type IntentSearchAnalysis, type IntentSearchFacets, type IntentSearchMatch, type SourceLocation } from "../../intent-search.js";
2
2
  import { type SearchAnswer } from "../../search-answer.js";
3
+ import { type SearchHintsAnalysis } from "../../search-hints.js";
3
4
  import type { SearchMatch } from "../../search-ranking.js";
4
5
  import { BRANCH_STORE_NOT_COMPILED, type BranchStoreInspection } from "../../utils/branch-store.js";
5
6
  import { type MigrationConfigStatus, type MigrationPlan } from "./migration-plan.js";
@@ -84,6 +85,7 @@ export type SearchInput = {
84
85
  readonly minScore?: number;
85
86
  readonly fields?: "summary" | "full";
86
87
  readonly answer?: boolean;
88
+ readonly hints?: boolean;
87
89
  };
88
90
  export type SearchPayload = {
89
91
  readonly results: readonly (SearchMatch | IntentSearchMatch)[];
@@ -92,7 +94,9 @@ export type SearchPayload = {
92
94
  /** Rows in `results`: the page this call returned. */
93
95
  readonly returned: number;
94
96
  readonly truncated?: boolean;
95
- readonly queryAnalysis?: IntentSearchAnalysis;
97
+ readonly queryAnalysis?: IntentSearchAnalysis & {
98
+ readonly hints?: SearchHintsAnalysis;
99
+ };
96
100
  readonly answer?: SearchAnswer;
97
101
  /** The Kibi branch whose store was searched, when the runtime attached one. */
98
102
  readonly branch?: string | null;
@@ -1 +1 @@
1
- {"version":3,"file":"discovery-executors.d.ts","sourceRoot":"","sources":["../../../src/public/operations/discovery-executors.ts"],"names":[],"mappings":"AAQA,OAAO,EACL,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,cAAc,EAIpB,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EAAE,KAAK,YAAY,EAAqB,MAAM,wBAAwB,CAAC;AAE9E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAE3D,OAAO,EACL,yBAAyB,EACzB,KAAK,qBAAqB,EAM3B,MAAM,6BAA6B,CAAC;AAWrC,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,aAAa,EAGnB,MAAM,qBAAqB,CAAC;AAM7B,OAAO,KAAK,EAAE,gBAAgB,EAAc,MAAM,oBAAoB,CAAC;AACvE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAGlD,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,iEAAiE;IACjE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAClD,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;IAC3C,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IACtC,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,sBAAsB,CAAC;IAChD,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,kEAAkE;IAClE,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;CAChC,CAAC;AAEF,wDAAwD;AACxD,MAAM,MAAM,aAAa,GAAG,QAAQ,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAEpE;;;;;GAKG;AACH,MAAM,MAAM,gBAAgB,GAAG,QAAQ,CAAC;IACtC,IAAI,EAAE,WAAW,GAAG,UAAU,GAAG,SAAS,GAAG,WAAW,CAAC;IACzD,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACxC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC1C,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC7C,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,IAAI,EAAE,SAAS,aAAa,EAAE,CAAC;CAChC,CAAC,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IACtD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,CAAC,EAAE,gBAAgB,CAAC;IACtC,qFAAqF;IACrF,QAAQ,CAAC,WAAW,CAAC,EAAE,uBAAuB,CAAC;IAC/C,4DAA4D;IAC5D,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC;CAC3B,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,SAAS,GAAG,QAAQ,CAAC;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC,CAAC;AAEH,8EAA8E;AAC9E,eAAO,MAAM,oBAAoB,QAAS,CAAC;AAE3C,eAAO,MAAM,UAAU,uHASb,CAAC;AA+BX,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,CAAC,EAAE,QAAQ,GAAG,WAAW,CAAC;IAC9C,QAAQ,CAAC,cAAc,CAAC,EAAE,kBAAkB,CAAC;IAC7C,QAAQ,CAAC,eAAe,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;IACrD,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;IACrC,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,WAAW,GAAG,iBAAiB,CAAC,EAAE,CAAC;IAC/D,iEAAiE;IACjE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,sDAAsD;IACtD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,aAAa,CAAC,EAAE,oBAAoB,CAAC;IAC9C,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC;IAC/B,+EAA+E;IAC/E,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,0EAA0E;IAC1E,QAAQ,CAAC,WAAW,CAAC,EAAE,uBAAuB,CAAC;CAChD,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC;IAC/B,QAAQ,CAAC,IAAI,EAAE,OAAO,yBAAyB,CAAC;IAChD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACzD,CAAC;AA6BF,MAAM,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;AAE1D,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,OAAO,CAAC;IAC1C,QAAQ,CAAC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IACtC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IACzC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IACvC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAC3D,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IACzC,0EAA0E;IAC1E,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IACtD,QAAQ,CAAC,gBAAgB,CAAC,EAAE;QAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,IAAI,EACT,OAAO,GACP,mBAAmB,GACnB,eAAe,GACf,mBAAmB,CAAC;QACxB,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAC;KACrC,CAAC;IACF,QAAQ,CAAC,oBAAoB,CAAC,EAAE,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IACnE,QAAQ,CAAC,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAC3C,QAAQ,CAAC,6BAA6B,CAAC,EAAE,OAAO,CAAC;IACjD,QAAQ,CAAC,WAAW,CAAC,EAAE,qBAAqB,CAAC;IAC7C,QAAQ,CAAC,YAAY,CAAC,EAAE;QACtB,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,aAAa,CAAC;QAC1C,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;KACpC,CAAC;IACF,QAAQ,CAAC,YAAY,CAAC,EAAE,qBAAqB,CAAC;IAC9C,QAAQ,CAAC,aAAa,CAAC,EAAE,aAAa,CAAC;IACvC,QAAQ,CAAC,SAAS,CAAC,EAAE;QACnB,QAAQ,CAAC,sBAAsB,CAAC,EAAE,SAAS,QAAQ,CACjD,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CACxB,EAAE,CAAC;QACJ,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;QACjC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;QAChC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;QAC/B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;KACzD,CAAC;CACH,CAAC;AAqaF,wBAAsB,YAAY,CAChC,KAAK,EAAE,UAAU,EACjB,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC,CAmFxC;AA4HD,wBAAsB,aAAa,CACjC,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC,CAoIzC;AAED,wBAAsB,aAAa,CACjC,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC,CAuWzC"}
1
+ {"version":3,"file":"discovery-executors.d.ts","sourceRoot":"","sources":["../../../src/public/operations/discovery-executors.ts"],"names":[],"mappings":"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"}