@mcoda/codali 0.1.108 → 0.1.110

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 (149) hide show
  1. package/dist/agents/AgentInventory.d.ts +56 -0
  2. package/dist/agents/AgentInventory.d.ts.map +1 -0
  3. package/dist/agents/AgentInventory.js +131 -0
  4. package/dist/agents/RoleResolution.d.ts +49 -0
  5. package/dist/agents/RoleResolution.d.ts.map +1 -0
  6. package/dist/agents/RoleResolution.js +166 -0
  7. package/dist/api/ChatCompletionsAdapter.d.ts +76 -0
  8. package/dist/api/ChatCompletionsAdapter.d.ts.map +1 -0
  9. package/dist/api/ChatCompletionsAdapter.js +54 -0
  10. package/dist/api/CodaliApi.d.ts +78 -0
  11. package/dist/api/CodaliApi.d.ts.map +1 -0
  12. package/dist/api/CodaliApi.js +273 -0
  13. package/dist/api/CodaliServer.d.ts +42 -0
  14. package/dist/api/CodaliServer.d.ts.map +1 -0
  15. package/dist/api/CodaliServer.js +118 -0
  16. package/dist/cli/AskCommand.d.ts +66 -0
  17. package/dist/cli/AskCommand.d.ts.map +1 -0
  18. package/dist/cli/AskCommand.js +536 -0
  19. package/dist/cli/AuthCommand.d.ts +19 -0
  20. package/dist/cli/AuthCommand.d.ts.map +1 -0
  21. package/dist/cli/AuthCommand.js +161 -0
  22. package/dist/cli/ServeCommand.d.ts +5 -0
  23. package/dist/cli/ServeCommand.d.ts.map +1 -0
  24. package/dist/cli/ServeCommand.js +87 -0
  25. package/dist/cli/ToolsCommand.d.ts +22 -0
  26. package/dist/cli/ToolsCommand.d.ts.map +1 -0
  27. package/dist/cli/ToolsCommand.js +208 -0
  28. package/dist/cli.d.ts.map +1 -1
  29. package/dist/cli.js +29 -1
  30. package/dist/connectors/http/HttpToolDefinition.d.ts +74 -0
  31. package/dist/connectors/http/HttpToolDefinition.d.ts.map +1 -0
  32. package/dist/connectors/http/HttpToolDefinition.js +190 -0
  33. package/dist/connectors/http/HttpToolSource.d.ts +18 -0
  34. package/dist/connectors/http/HttpToolSource.d.ts.map +1 -0
  35. package/dist/connectors/http/HttpToolSource.js +29 -0
  36. package/dist/connectors/mcp/McpClient.d.ts +132 -0
  37. package/dist/connectors/mcp/McpClient.d.ts.map +1 -0
  38. package/dist/connectors/mcp/McpClient.js +215 -0
  39. package/dist/connectors/mcp/McpServerRegistry.d.ts +75 -0
  40. package/dist/connectors/mcp/McpServerRegistry.d.ts.map +1 -0
  41. package/dist/connectors/mcp/McpServerRegistry.js +180 -0
  42. package/dist/connectors/mcp/McpToolAdapter.d.ts +48 -0
  43. package/dist/connectors/mcp/McpToolAdapter.d.ts.map +1 -0
  44. package/dist/connectors/mcp/McpToolAdapter.js +101 -0
  45. package/dist/connectors/mcp/McpToolSource.d.ts +27 -0
  46. package/dist/connectors/mcp/McpToolSource.d.ts.map +1 -0
  47. package/dist/connectors/mcp/McpToolSource.js +33 -0
  48. package/dist/connectors/media/ImageGenerationTool.d.ts +43 -0
  49. package/dist/connectors/media/ImageGenerationTool.d.ts.map +1 -0
  50. package/dist/connectors/media/ImageGenerationTool.js +122 -0
  51. package/dist/connectors/oauth/DeviceCodeAuth.d.ts +74 -0
  52. package/dist/connectors/oauth/DeviceCodeAuth.d.ts.map +1 -0
  53. package/dist/connectors/oauth/DeviceCodeAuth.js +153 -0
  54. package/dist/docdex/DocdexClient.d.ts +2 -0
  55. package/dist/docdex/DocdexClient.d.ts.map +1 -1
  56. package/dist/docdex/DocdexClient.js +4 -0
  57. package/dist/gateway/CodaliGateway.d.ts +51 -3
  58. package/dist/gateway/CodaliGateway.d.ts.map +1 -1
  59. package/dist/gateway/CodaliGateway.js +241 -3
  60. package/dist/gateway/CodaliGatewayTypes.d.ts +34 -0
  61. package/dist/gateway/CodaliGatewayTypes.d.ts.map +1 -1
  62. package/dist/gateway/EvidenceNormalizer.d.ts.map +1 -1
  63. package/dist/gateway/EvidenceNormalizer.js +98 -1
  64. package/dist/gateway/Finalizer.d.ts +50 -0
  65. package/dist/gateway/Finalizer.d.ts.map +1 -0
  66. package/dist/gateway/Finalizer.js +79 -0
  67. package/dist/gateway/GatewayPlanner.d.ts +13 -0
  68. package/dist/gateway/GatewayPlanner.d.ts.map +1 -1
  69. package/dist/gateway/GatewayPlanner.js +81 -16
  70. package/dist/gateway/GatewayStateMachine.d.ts.map +1 -1
  71. package/dist/gateway/GatewayStateMachine.js +6 -0
  72. package/dist/gateway/GatewayTracer.d.ts +93 -0
  73. package/dist/gateway/GatewayTracer.d.ts.map +1 -0
  74. package/dist/gateway/GatewayTracer.js +214 -0
  75. package/dist/gateway/LocalGatewayProvider.d.ts +59 -0
  76. package/dist/gateway/LocalGatewayProvider.d.ts.map +1 -0
  77. package/dist/gateway/LocalGatewayProvider.js +195 -0
  78. package/dist/gateway/LocalGatewayTaskRunner.d.ts +79 -0
  79. package/dist/gateway/LocalGatewayTaskRunner.d.ts.map +1 -0
  80. package/dist/gateway/LocalGatewayTaskRunner.js +361 -0
  81. package/dist/gateway/RelevanceJudge.d.ts +25 -0
  82. package/dist/gateway/RelevanceJudge.d.ts.map +1 -0
  83. package/dist/gateway/RelevanceJudge.js +124 -0
  84. package/dist/gateway/ResponseSchema.d.ts +32 -0
  85. package/dist/gateway/ResponseSchema.d.ts.map +1 -0
  86. package/dist/gateway/ResponseSchema.js +120 -0
  87. package/dist/gateway/TemporalContext.d.ts +36 -0
  88. package/dist/gateway/TemporalContext.d.ts.map +1 -0
  89. package/dist/gateway/TemporalContext.js +115 -0
  90. package/dist/gateway/ToolCapabilityCompiler.d.ts +5 -0
  91. package/dist/gateway/ToolCapabilityCompiler.d.ts.map +1 -1
  92. package/dist/gateway/ToolCapabilityCompiler.js +27 -2
  93. package/dist/gateway/ToolDescriptorSource.d.ts +6 -0
  94. package/dist/gateway/ToolDescriptorSource.d.ts.map +1 -0
  95. package/dist/gateway/ToolDescriptorSource.js +30 -0
  96. package/dist/gateway/ToolExposure.d.ts +36 -0
  97. package/dist/gateway/ToolExposure.d.ts.map +1 -0
  98. package/dist/gateway/ToolExposure.js +154 -0
  99. package/dist/index.d.ts +57 -0
  100. package/dist/index.d.ts.map +1 -1
  101. package/dist/index.js +45 -0
  102. package/dist/providers/ClaudeCliProvider.d.ts +2 -0
  103. package/dist/providers/ClaudeCliProvider.d.ts.map +1 -1
  104. package/dist/providers/ClaudeCliProvider.js +2 -0
  105. package/dist/providers/CodexCliProvider.d.ts +2 -0
  106. package/dist/providers/CodexCliProvider.d.ts.map +1 -1
  107. package/dist/providers/CodexCliProvider.js +2 -0
  108. package/dist/providers/MswarmWorkerProvider.d.ts +2 -0
  109. package/dist/providers/MswarmWorkerProvider.d.ts.map +1 -1
  110. package/dist/providers/MswarmWorkerProvider.js +2 -0
  111. package/dist/providers/OllamaRemoteProvider.d.ts +2 -0
  112. package/dist/providers/OllamaRemoteProvider.d.ts.map +1 -1
  113. package/dist/providers/OllamaRemoteProvider.js +2 -0
  114. package/dist/providers/OpenAiCompatibleProvider.d.ts +2 -0
  115. package/dist/providers/OpenAiCompatibleProvider.d.ts.map +1 -1
  116. package/dist/providers/OpenAiCompatibleProvider.js +2 -0
  117. package/dist/providers/ProviderTypes.d.ts +13 -0
  118. package/dist/providers/ProviderTypes.d.ts.map +1 -1
  119. package/dist/providers/ProviderTypes.js +1 -1
  120. package/dist/runcontext/CredentialFile.d.ts +12 -0
  121. package/dist/runcontext/CredentialFile.d.ts.map +1 -0
  122. package/dist/runcontext/CredentialFile.js +81 -0
  123. package/dist/runcontext/RunContextResolver.d.ts +126 -0
  124. package/dist/runcontext/RunContextResolver.d.ts.map +1 -0
  125. package/dist/runcontext/RunContextResolver.js +389 -0
  126. package/dist/storage/CodaliDatasetPrivacyEngine.d.ts +1 -1
  127. package/dist/storage/CodaliDatasetPrivacyEngine.d.ts.map +1 -1
  128. package/dist/storage/CodaliDatasetPrivacyEngine.js +12 -0
  129. package/dist/tools/ToolRegistry.d.ts +14 -1
  130. package/dist/tools/ToolRegistry.d.ts.map +1 -1
  131. package/dist/tools/ToolRegistry.js +38 -1
  132. package/dist/tools/ToolTypes.d.ts +35 -0
  133. package/dist/tools/ToolTypes.d.ts.map +1 -1
  134. package/dist/tools/ToolTypes.js +21 -0
  135. package/dist/tools/TruncateResult.d.ts +29 -0
  136. package/dist/tools/TruncateResult.d.ts.map +1 -0
  137. package/dist/tools/TruncateResult.js +91 -0
  138. package/dist/tools/diff/DiffTool.d.ts.map +1 -1
  139. package/dist/tools/diff/DiffTool.js +2 -0
  140. package/dist/tools/docdex/DocdexTools.d.ts +21 -1
  141. package/dist/tools/docdex/DocdexTools.d.ts.map +1 -1
  142. package/dist/tools/docdex/DocdexTools.js +151 -17
  143. package/dist/tools/filesystem/FileTools.d.ts.map +1 -1
  144. package/dist/tools/filesystem/FileTools.js +8 -0
  145. package/dist/tools/search/SearchTool.d.ts.map +1 -1
  146. package/dist/tools/search/SearchTool.js +3 -1
  147. package/dist/tools/shell/ShellTool.d.ts.map +1 -1
  148. package/dist/tools/shell/ShellTool.js +2 -0
  149. package/package.json +4 -3
@@ -1,12 +1,15 @@
1
1
  import { randomUUID } from "node:crypto";
2
2
  import { resolveCodaliGatewayAgentTiers, } from "./AgentTierResolver.js";
3
3
  import { createCodaliContextPackBuilder, } from "./ContextPackBuilder.js";
4
+ import { artifactRefsFromStored, decideFinalizerMode, formatArtifactAnswer, formatDeterministicAnswer, } from "./Finalizer.js";
5
+ import { describeViolations, validateResponseAgainstSchema, } from "./ResponseSchema.js";
4
6
  import { compileCodaliGatewayPolicy, } from "./GatewayPolicyCompiler.js";
5
7
  import { CodaliGatewayPlanner, } from "./GatewayPlanner.js";
6
8
  import { createInMemoryCodaliGatewayStore, } from "./CodaliGatewayStore.js";
7
9
  import { buildCodaliGatewayTraceEvents, exportCodaliGatewayReplayFixture, readCodaliGatewayTrace, summarizeCodaliGatewayTrace, } from "./GatewayTraceReplay.js";
8
10
  import { CodaliGatewayStateMachine, } from "./GatewayStateMachine.js";
9
11
  import { CODALI_GATEWAY_SECURITY_PROMPT_HARDENING } from "./GatewaySecurityPolicy.js";
12
+ import { buildTemporalContext } from "./TemporalContext.js";
10
13
  import { collectGatewayDatasetResultNonBlocking, } from "../storage/GatewayDatasetStore.js";
11
14
  const DEFAULT_FINAL_MAX_TOKENS = 2000;
12
15
  const DEFAULT_FINAL_TEMPERATURE = 0.2;
@@ -130,11 +133,24 @@ const finalModelFromAssignment = (assignment) => assignment && assignment.candid
130
133
  model: assignment.candidate.model,
131
134
  }
132
135
  : undefined;
136
+ /**
137
+ * Evidence with no tool result behind it — the model's own words.
138
+ *
139
+ * Kept separate in the payload because low confidence alone did not stop the
140
+ * synthesizer asserting it. Asked what a class does, a model with zero tool
141
+ * calls produced a fluent, plausible, entirely invented description and the
142
+ * final answer stated it as fact with a citation. Separating the lists lets the
143
+ * prompt forbid that specifically.
144
+ */
145
+ const isUnverified = (evidence) => evidence.sourceType === "model_observation";
133
146
  const buildFinalContextPayload = (contextPack) => ({
134
147
  contextPackId: contextPack.id,
135
148
  runId: contextPack.runId,
136
149
  originalQuery: contextPack.originalQuery,
137
- decisionFacts: contextPack.decisionFacts.map((evidence) => ({
150
+ unverifiedObservations: contextPack.decisionFacts
151
+ .filter(isUnverified)
152
+ .map((evidence) => ({ evidenceId: evidence.id, claim: evidence.claim })),
153
+ decisionFacts: contextPack.decisionFacts.filter((evidence) => !isUnverified(evidence)).map((evidence) => ({
138
154
  evidenceId: evidence.id,
139
155
  claim: evidence.claim,
140
156
  summary: evidence.summary,
@@ -146,12 +162,39 @@ const buildFinalContextPayload = (contextPack) => ({
146
162
  confidence: evidence.confidence,
147
163
  relevance: evidence.relevance,
148
164
  freshness: evidence.freshness,
165
+ // Which tool produced this, so the synthesizer can join a commit, a ticket
166
+ // and a message about the same thing rather than treating three sources as
167
+ // three unrelated facts.
168
+ usedTool: evidence.usedTool,
169
+ taskId: evidence.taskId,
149
170
  })),
171
+ sourceBreakdown: summarizeSources(contextPack.decisionFacts),
150
172
  selectedExcerpts: contextPack.selectedExcerpts,
151
173
  contradictions: contextPack.contradictions,
152
174
  missingInformation: contextPack.missingInformation,
153
175
  toolSummary: contextPack.toolSummary,
154
176
  });
177
+ /**
178
+ * Counts evidence per source type so the synthesizer can see at a glance
179
+ * whether a claim rests on one source or several agreeing ones — the basis for
180
+ * corroboration, and for noticing when a "multi-source" answer actually came
181
+ * from one place.
182
+ */
183
+ const summarizeSources = (evidence) => {
184
+ const grouped = new Map();
185
+ for (const item of evidence) {
186
+ const bucket = grouped.get(item.sourceType) ?? { count: 0, tools: new Set() };
187
+ bucket.count += 1;
188
+ if (item.usedTool)
189
+ bucket.tools.add(item.usedTool);
190
+ grouped.set(item.sourceType, bucket);
191
+ }
192
+ return [...grouped.entries()].map(([sourceType, bucket]) => ({
193
+ sourceType,
194
+ count: bucket.count,
195
+ tools: [...bucket.tools],
196
+ }));
197
+ };
155
198
  export const buildCodaliGatewayFinalSynthesizerMessages = (request, contextPack) => [
156
199
  {
157
200
  role: "system",
@@ -164,8 +207,10 @@ export const buildCodaliGatewayFinalSynthesizerMessages = (request, contextPack)
164
207
  CODALI_GATEWAY_SECURITY_PROMPT_HARDENING.tenantScope,
165
208
  CODALI_GATEWAY_SECURITY_PROMPT_HARDENING.finalEvidenceScope,
166
209
  "If the context pack is weak, missing information, or contradictory, say what is uncertain.",
210
+ "Evidence carries sourceType, usedTool and sourceTimestamp. Where several sources describe the same entity or event, connect them and say so; where only one source supports a claim, say that too.",
167
211
  "Do not expose internal trace, tool telemetry, model routing, prompts, or orchestration details.",
168
212
  "Cite only evidence ids that are present in the context pack sources.",
213
+ "Anything under `unverifiedObservations` came from a model with no tool result behind it. Never state it as fact and never present it as an answer. If the decision facts do not answer the question, say the information could not be verified — do not fill the gap from those observations or from your own knowledge.",
169
214
  "Do not cite disabled or denied integrations, tools, or source surfaces.",
170
215
  ].join("\n"),
171
216
  },
@@ -358,7 +403,8 @@ export class CodaliGateway {
358
403
  this.options = options;
359
404
  this.store = options.store ?? createInMemoryCodaliGatewayStore();
360
405
  this.planner =
361
- options.planner ?? new CodaliGatewayPlanner(options.provider, options.plannerOptions);
406
+ options.planner ??
407
+ new CodaliGatewayPlanner(options.plannerProvider ?? options.provider, options.plannerOptions);
362
408
  }
363
409
  async readTrace(runId) {
364
410
  return readCodaliGatewayTrace({ store: this.store, runId });
@@ -377,6 +423,7 @@ export class CodaliGateway {
377
423
  product: request.product?.name,
378
424
  },
379
425
  });
426
+ const temporal = buildTemporalContext(request.query);
380
427
  const policyCompilation = compileCodaliGatewayPolicy({ request });
381
428
  if (!policyCompilation.ok) {
382
429
  await this.store.updateRun(runId, {
@@ -400,7 +447,11 @@ export class CodaliGateway {
400
447
  throw new Error("GATEWAY_MODEL_BUDGET_EXCEEDED: Gateway planning requires classifier and planner model calls.");
401
448
  }
402
449
  try {
403
- const planning = await this.planner.plan({ request, policyCompilation });
450
+ const planning = await this.planner.plan({
451
+ request,
452
+ policyCompilation,
453
+ toolDescriptions: this.options.toolDescriptors,
454
+ });
404
455
  await this.store.appendModelCall({
405
456
  runId,
406
457
  role: "classifier",
@@ -419,12 +470,22 @@ export class CodaliGateway {
419
470
  status: "succeeded",
420
471
  warnings: planning.warnings,
421
472
  });
473
+ await this.store.updateRun(runId, {
474
+ metadata: {
475
+ mode: request.mode ?? "balanced",
476
+ product: request.product?.name,
477
+ // Stamped so re-running a report is reproducible: "the last two
478
+ // weeks" must mean the same window it meant at plan time.
479
+ temporal,
480
+ },
481
+ });
422
482
  return {
423
483
  runId,
424
484
  policyCompilation,
425
485
  classifier: planning.classifier,
426
486
  planner: planning.planner,
427
487
  planning,
488
+ temporal,
428
489
  trace: await this.store.readRunTrace(runId),
429
490
  };
430
491
  }
@@ -442,6 +503,13 @@ export class CodaliGateway {
442
503
  }
443
504
  async run(request) {
444
505
  const planning = await this.plan(request);
506
+ // An ambiguous request stops here. Spending a research budget guessing
507
+ // which "Bekir" was meant produces a confident answer about the wrong
508
+ // person, which is worse than asking.
509
+ const clarification = planning.classifier.needsClarification?.trim();
510
+ if (clarification) {
511
+ return this.buildClarificationResult(request, planning, clarification);
512
+ }
445
513
  const workers = await this.executePlannedWorkerTasks(request, planning);
446
514
  const failedRequiredWorker = workers.workers.taskResults.find((task) => task.required && task.status === "failed");
447
515
  const result = failedRequiredWorker
@@ -484,6 +552,36 @@ export class CodaliGateway {
484
552
  const finalModel = finalModelFromAssignment(finalAgent.assignment);
485
553
  const messages = buildCodaliGatewayFinalSynthesizerMessages(input.request, contextPack);
486
554
  const traceBeforeFinal = await this.store.readRunTrace(input.runId);
555
+ const artifacts = artifactRefsFromStored(traceBeforeFinal?.artifacts ?? []);
556
+ // Every run passes through the finalizer. Choosing the deterministic or
557
+ // artifact mode skips the large model, but never skips normalization: no
558
+ // caller ever receives raw tool output.
559
+ const finalizer = decideFinalizerMode({
560
+ request: input.request,
561
+ contextPack,
562
+ artifacts,
563
+ // The classifier only emits a direct-answer candidate when it judged the
564
+ // query answerable from a single retrieved fact.
565
+ directLookup: Boolean(input.planning?.classifier.directAnswerCandidate?.trim()),
566
+ });
567
+ if (finalizer.mode !== "synthesizer") {
568
+ const deterministicAnswer = finalizer.mode === "artifact"
569
+ ? formatArtifactAnswer(artifacts)
570
+ : formatDeterministicAnswer(contextPack);
571
+ if (deterministicAnswer.trim()) {
572
+ return this.buildFinalizedResult({
573
+ input,
574
+ contextPack,
575
+ sources,
576
+ artifacts,
577
+ finalModel,
578
+ answer: deterministicAnswer,
579
+ finalizer,
580
+ });
581
+ }
582
+ // Nothing formattable: fall through to the synthesizer rather than
583
+ // returning an empty answer.
584
+ }
487
585
  const modelBudget = input.planning?.policyCompilation.security.limits.maxModelCalls ??
488
586
  compileCodaliGatewayPolicy({ request: input.request }).security.limits.maxModelCalls;
489
587
  const remainingFinalModelCalls = Math.max(0, modelBudget - (traceBeforeFinal?.modelCalls.length ?? 0));
@@ -549,6 +647,46 @@ export class CodaliGateway {
549
647
  sourceEvidenceIds: sources.map((source) => source.evidenceId),
550
648
  },
551
649
  });
650
+ // Enforce the caller's response schema. Historically this field was
651
+ // accepted and silently ignored, which pushed parsing and correction
652
+ // logic into every consuming product.
653
+ const schema = input.request.response?.schema;
654
+ const validation = validateResponseAgainstSchema(answer, schema);
655
+ if (schema && !validation.ok) {
656
+ const canRepair = attempt < maxAttempts;
657
+ if (canRepair) {
658
+ warnings.push(`final_response_schema_repair:${attempt}`);
659
+ messages.push({ role: "assistant", content: answer }, {
660
+ role: "user",
661
+ content: [
662
+ "The response did not satisfy the required schema:",
663
+ describeViolations(validation.violations),
664
+ "",
665
+ "Return only valid JSON conforming to the schema. No prose, no code fences.",
666
+ ].join("\n"),
667
+ });
668
+ continue;
669
+ }
670
+ // Out of attempts: report partial rather than handing back output
671
+ // the caller asked to be structured and is not.
672
+ warnings.push("final_response_schema_unsatisfied");
673
+ return this.buildFinalizedResult({
674
+ input,
675
+ contextPack,
676
+ sources,
677
+ artifacts,
678
+ finalModel,
679
+ answer,
680
+ finalizer: { mode: "synthesizer", reason: finalizer.reason },
681
+ status: "partial",
682
+ output: validation.value,
683
+ warnings,
684
+ errors: [
685
+ ...errors,
686
+ `GATEWAY_RESPONSE_SCHEMA_UNSATISFIED:${describeViolations(validation.violations)}`,
687
+ ],
688
+ });
689
+ }
552
690
  const confidence = confidenceFromContextPack(contextPack);
553
691
  await this.updateRunPreservingMetadata(input.runId, {
554
692
  status: "succeeded",
@@ -569,15 +707,20 @@ export class CodaliGateway {
569
707
  runId: input.runId,
570
708
  status: "succeeded",
571
709
  answer,
710
+ output: validation.value ?? answer,
572
711
  sources,
573
712
  confidence,
574
713
  evidence: contextPack.decisionFacts,
714
+ artifacts,
715
+ warnings,
575
716
  contextPack,
576
717
  finalModel,
577
718
  trace: gatewayTrace,
578
719
  telemetry: {
579
720
  finalAttempts: attempt,
580
721
  finalProvider: this.options.provider.name,
722
+ finalizerMode: finalizer.mode,
723
+ finalizerReason: finalizer.reason,
581
724
  contextPackTokenEstimate: contextPack.tokenEstimate,
582
725
  docdexRequestIds,
583
726
  usage,
@@ -649,6 +792,10 @@ export class CodaliGateway {
649
792
  failureMessage: "Final synthesizer failed without producing a response.",
650
793
  });
651
794
  }
795
+ /**
796
+ * Executes an already-computed plan. Public so a caller can interleave its
797
+ * own tracing between planning and execution without re-planning.
798
+ */
652
799
  async executePlannedWorkerTasks(request, planning) {
653
800
  if (planning.planner.workerTasks.length === 0) {
654
801
  const trace = await this.store.readRunTrace(planning.runId);
@@ -696,6 +843,12 @@ export class CodaliGateway {
696
843
  return sanitizeGatewayDatasetCollectionResult(collection);
697
844
  }
698
845
  resolveFinalAgent(request, override) {
846
+ if (this.options.finalAgent) {
847
+ return {
848
+ resolution: this.options.agentResolution,
849
+ assignment: this.options.finalAgent,
850
+ };
851
+ }
699
852
  const resolution = override ??
700
853
  this.options.agentResolution ??
701
854
  (this.options.agentInventory
@@ -756,6 +909,8 @@ export class CodaliGateway {
756
909
  sources,
757
910
  confidence: "low",
758
911
  evidence: sanitizedPack?.decisionFacts ?? [],
912
+ artifacts: artifactRefsFromStored(trace?.artifacts ?? []),
913
+ warnings: [],
759
914
  contextPack: sanitizedPack,
760
915
  finalModel: finalModelFromAssignment(assignment?.candidate.tier === "large" ? assignment : undefined),
761
916
  trace: gatewayTrace,
@@ -769,6 +924,85 @@ export class CodaliGateway {
769
924
  },
770
925
  };
771
926
  }
927
+ /**
928
+ * Builds a result that came out of the finalizer without a synthesizer
929
+ * failure — the deterministic and artifact modes, and the schema-unsatisfied
930
+ * partial. Kept in one place so every finished result carries the same
931
+ * fields regardless of which mode produced it.
932
+ */
933
+ /**
934
+ * Returns the clarifying question instead of an answer. Carries the same
935
+ * result contract as any other outcome so a caller needs no special case
936
+ * beyond checking `status`.
937
+ */
938
+ async buildClarificationResult(request, planning, question) {
939
+ await this.updateRunPreservingMetadata(planning.runId, {
940
+ status: "needs_clarification",
941
+ warnings: [],
942
+ errors: [],
943
+ finalSynthesis: { status: "needs_clarification", question },
944
+ });
945
+ const trace = await this.store.readRunTrace(planning.runId);
946
+ return {
947
+ runId: planning.runId,
948
+ status: "needs_clarification",
949
+ answer: question,
950
+ output: question,
951
+ sources: [],
952
+ confidence: "low",
953
+ evidence: [],
954
+ artifacts: [],
955
+ warnings: [],
956
+ trace: buildGatewayTrace(planning.runId, request, "needs_clarification", trace),
957
+ telemetry: { clarificationRequested: true },
958
+ metadata: { classifier: planning.classifier.queryType },
959
+ };
960
+ }
961
+ async buildFinalizedResult(args) {
962
+ const status = args.status ?? "succeeded";
963
+ const warnings = args.warnings ?? [];
964
+ const errors = args.errors ?? [];
965
+ const confidence = confidenceFromContextPack(args.contextPack);
966
+ await this.updateRunPreservingMetadata(args.input.runId, {
967
+ status,
968
+ warnings,
969
+ errors,
970
+ finalSynthesis: {
971
+ status,
972
+ finalizerMode: args.finalizer.mode,
973
+ finalizerReason: args.finalizer.reason,
974
+ finalModel: args.finalModel,
975
+ sourceEvidenceIds: args.sources.map((source) => source.evidenceId),
976
+ contextPackId: args.contextPack.id,
977
+ },
978
+ });
979
+ const trace = await this.store.readRunTrace(args.input.runId);
980
+ const docdexRequestIds = collectDocdexRequestIds(trace, args.contextPack);
981
+ return {
982
+ runId: args.input.runId,
983
+ status,
984
+ answer: args.answer,
985
+ output: args.output ?? args.answer,
986
+ sources: args.sources,
987
+ confidence,
988
+ evidence: args.contextPack.decisionFacts,
989
+ artifacts: args.artifacts,
990
+ warnings,
991
+ contextPack: args.contextPack,
992
+ finalModel: args.finalModel,
993
+ trace: buildGatewayTrace(args.input.runId, args.input.request, status, trace, warnings, errors),
994
+ telemetry: {
995
+ finalizerMode: args.finalizer.mode,
996
+ finalizerReason: args.finalizer.reason,
997
+ contextPackTokenEstimate: args.contextPack.tokenEstimate,
998
+ docdexRequestIds,
999
+ },
1000
+ metadata: {
1001
+ workerStatus: args.input.workers?.status,
1002
+ planningWarnings: args.input.planning?.planning.warnings,
1003
+ },
1004
+ };
1005
+ }
772
1006
  async buildDegradedFinalResult(input) {
773
1007
  const answer = createDegradedFinalAnswer(input.contextPack);
774
1008
  await this.updateRunPreservingMetadata(input.input.runId, {
@@ -793,6 +1027,8 @@ export class CodaliGateway {
793
1027
  sources: input.sources,
794
1028
  confidence: "low",
795
1029
  evidence: input.contextPack.decisionFacts,
1030
+ artifacts: artifactRefsFromStored(trace?.artifacts ?? []),
1031
+ warnings: [...input.warnings, "final_synthesizer_degraded_answer"],
796
1032
  contextPack: input.contextPack,
797
1033
  finalModel: input.finalModel,
798
1034
  trace: gatewayTrace,
@@ -829,6 +1065,8 @@ export class CodaliGateway {
829
1065
  sources: input.sources,
830
1066
  confidence: "low",
831
1067
  evidence: input.contextPack.decisionFacts,
1068
+ artifacts: artifactRefsFromStored(trace?.artifacts ?? []),
1069
+ warnings: input.warnings,
832
1070
  contextPack: input.contextPack,
833
1071
  finalModel: input.finalModel,
834
1072
  trace: gatewayTrace,
@@ -205,13 +205,36 @@ export interface CodaliGatewayFinalModel {
205
205
  tier: "large";
206
206
  model?: string;
207
207
  }
208
+ /**
209
+ * A non-text output produced during a run — a generated image, a rendered
210
+ * file. Artifacts are referenced, never inlined, so a result stays small
211
+ * regardless of what was produced.
212
+ */
213
+ export interface CodaliArtifactRef {
214
+ id: string;
215
+ type: string;
216
+ uri?: string;
217
+ path?: string;
218
+ mimeType?: string;
219
+ model?: string;
220
+ taskId?: string;
221
+ metadata?: Record<string, unknown>;
222
+ }
208
223
  export interface CodaliGatewayResult {
209
224
  runId: string;
210
225
  status: CodaliGatewayStatus;
211
226
  answer: string;
227
+ /**
228
+ * Structured output when the caller supplied `response.schema`, validated
229
+ * against it. Falls back to `answer` when no schema was requested.
230
+ */
231
+ output?: unknown;
212
232
  sources: CodaliGatewaySource[];
213
233
  confidence: CodaliGatewayConfidence;
214
234
  evidence: CodaliEvidenceItem[];
235
+ artifacts: CodaliArtifactRef[];
236
+ /** Non-fatal problems the caller should be able to surface or log. */
237
+ warnings: string[];
215
238
  contextPack?: CodaliContextPack;
216
239
  finalModel?: CodaliGatewayFinalModel;
217
240
  trace: CodaliGatewayTrace;
@@ -232,6 +255,17 @@ export interface CodaliGatewayClassifierOutput {
232
255
  needsAppTools: boolean;
233
256
  needsImageWorker: boolean;
234
257
  directAnswerCandidate?: string;
258
+ /**
259
+ * Capability groups the classifier selected. Drives stage-2 tool expansion
260
+ * in the planner prompt; absent means "expand everything".
261
+ */
262
+ capabilities?: string[];
263
+ /**
264
+ * Set when the request cannot be answered without more information — an
265
+ * unidentifiable person, project, or scope. Produces a
266
+ * `needs_clarification` result rather than a guessed identity.
267
+ */
268
+ needsClarification?: string;
235
269
  rationale?: string;
236
270
  confidence?: CodaliGatewayConfidence;
237
271
  metadata?: Record<string, unknown>;
@@ -1 +1 @@
1
- {"version":3,"file":"CodaliGatewayTypes.d.ts","sourceRoot":"","sources":["../../src/gateway/CodaliGatewayTypes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CodaliGatewayTypes.d.ts","sourceRoot":"","sources":["../../src/gateway/CodaliGatewayTypes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,6BAA6B,EAC7B,mCAAmC,EACnC,wBAAwB,EACxB,yBAAyB,EAC1B,MAAM,6BAA6B,CAAC;AAErC,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,UAAU,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;AAEjF,MAAM,MAAM,mBAAmB,GAC3B,WAAW,GACX,QAAQ,GACR,SAAS,GACT,qBAAqB,CAAC;AAE1B,MAAM,MAAM,uBAAuB,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AAEhE,MAAM,MAAM,sBAAsB,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAC;AAE5E,MAAM,MAAM,wBAAwB,GAAG,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;AAEvE,MAAM,MAAM,2BAA2B,GAAG,MAAM,GAAG,MAAM,GAAG,aAAa,CAAC;AAE1E,MAAM,MAAM,sBAAsB,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;AAE9E,MAAM,MAAM,6BAA6B,GACrC,WAAW,GACX,qBAAqB,GACrB,qBAAqB,CAAC;AAE1B,MAAM,MAAM,2BAA2B,GACnC,cAAc,GACd,UAAU,GACV,UAAU,GACV,QAAQ,GACR,SAAS,GACT,SAAS,CAAC;AAEd,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,wBAAwB,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,oBAAoB;IACnC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,iBAAiB,CAAC;IACzB,OAAO,CAAC,EAAE;QACR,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,MAAM,CAAC,EAAE;QACP,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,SAAS,CAAC,EAAE;QACV,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,YAAY,CAAC,EAAE;QACb,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,QAAQ,CAAC,EAAE,oBAAoB,EAAE,CAAC;KACnC,CAAC;IACF,MAAM,CAAC,EAAE,wBAAwB,CAAC;IAClC,KAAK,CAAC,EAAE,yBAAyB,CAAC;IAClC,MAAM,EAAE,mBAAmB,CAAC;IAC5B,WAAW,CAAC,EAAE,qBAAqB,CAAC;IACpC,QAAQ,CAAC,EAAE,2BAA2B,CAAC;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,gBAAgB,CAAC,EAAE,6BAA6B,CAAC;IACjD,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,cAAc,CAAC,EAAE,mCAAmC,CAAC;IACrD,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,WAAW,EAAE,KAAK,CAAC;IACnB,UAAU,EAAE,KAAK,CAAC;IAClB,0BAA0B,EAAE,KAAK,CAAC;IAClC,qBAAqB,EAAE,KAAK,CAAC;IAC7B,sBAAsB,EAAE,OAAO,CAAC;IAChC,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,2BAA2B;IAC1C,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,2BAA2B,CAAC;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,6BAA6B,CAAC;IAC7C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,kCAAkC;IACjD,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;CAC9C;AAED,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,SAAS,GAAG,OAAO,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,6BAA6B,CAAC;IAC5C,QAAQ,EAAE,gCAAgC,CAAC;IAC3C,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,4BAA4B;IAC3C,kBAAkB,EAAE,MAAM,CAAC;IAC3B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,2BAA2B;IAC1C,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,kCAAkC,CAAC;IAC3C,SAAS,EAAE,qBAAqB,EAAE,CAAC;IACnC,SAAS,EAAE,2BAA2B,EAAE,CAAC;IACzC,QAAQ,EAAE,0BAA0B,EAAE,CAAC;IACvC,MAAM,EAAE,0BAA0B,EAAE,CAAC;IACrC,eAAe,EAAE,4BAA4B,CAAC;CAC/C;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,sBAAsB,CAAC;IAC7B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;CACjC;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;CAC/C;AAED,MAAM,WAAW,2BAA2B;IAC1C,MAAM,CAAC,EAAE,2BAA2B,CAAC;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,sBAAsB,CAAC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,8BAA8B;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,wBAAwB;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,4BAA4B;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,kBAAkB,EAAE,CAAC;IACpC,cAAc,EAAE,8BAA8B,EAAE,CAAC;IACjD,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,gBAAgB,EAAE,wBAAwB,EAAE,CAAC;IAC7C,WAAW,EAAE,4BAA4B,EAAE,CAAC;IAC5C,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,uBAAuB;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,mBAAmB,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,mBAAmB,EAAE,CAAC;IAC/B,UAAU,EAAE,uBAAuB,CAAC;IACpC,QAAQ,EAAE,kBAAkB,EAAE,CAAC;IAC/B,SAAS,EAAE,iBAAiB,EAAE,CAAC;IAC/B,sEAAsE;IACtE,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,UAAU,CAAC,EAAE,uBAAuB,CAAC;IACrC,KAAK,EAAE,kBAAkB,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,wBAAwB;IACvC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,6BAA6B;IAC5C,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,cAAc,EAAE,OAAO,CAAC;IACxB,WAAW,EAAE,OAAO,CAAC;IACrB,aAAa,EAAE,OAAO,CAAC;IACvB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,uBAAuB,CAAC;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,uBAAuB;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,0BAA0B;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,wBAAwB,EAAE,CAAC;IACzC,WAAW,EAAE,uBAAuB,EAAE,CAAC;IACvC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;IACxC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,2BAA2B;IAC1C,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,MAAM,EAAE,0BAA0B,EAAE,CAAC;IACrC,cAAc,EAAE,8BAA8B,EAAE,CAAC;IACjD,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,aAAa,EAAE,uBAAuB,EAAE,CAAC;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,uBAAuB;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;IACrD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,sBAAsB,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;IACrD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,iBAAiB,CAAC;IACxB,MAAM,EAAE,mBAAmB,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,SAAS,EAAE,0BAA0B,EAAE,CAAC;IACxC,UAAU,EAAE,2BAA2B,EAAE,CAAC;IAC1C,MAAM,EAAE,uBAAuB,EAAE,CAAC;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,4BAA4B;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,MAAM,6BAA6B,CAAC,CAAC,IACvC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,CAAC,CAAC;IAAC,MAAM,EAAE,EAAE,CAAA;CAAE,GAClC;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,4BAA4B,EAAE,CAAA;CAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"EvidenceNormalizer.d.ts","sourceRoot":"","sources":["../../src/gateway/EvidenceNormalizer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,kBAAkB,EAEnB,MAAM,yBAAyB,CAAC;AAEjC,MAAM,WAAW,gCAAgC;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC;IACnD,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,6BAA6B;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;IACrB,SAAS,CAAC,EAAE,gCAAgC,EAAE,CAAC;IAC/C,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,EAAE,kBAAkB,EAAE,CAAC;IAC/B,QAAQ,EAAE,0BAA0B,EAAE,CAAC;IACvC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;CACxB;AA0eD,eAAO,MAAM,uBAAuB,GAClC,OAAO,6BAA6B,KACnC,8BA+HF,CAAC;AAEF,eAAO,MAAM,wBAAwB,UAlI5B,6BAA6B,KACnC,8BAiI4D,CAAC"}
1
+ {"version":3,"file":"EvidenceNormalizer.d.ts","sourceRoot":"","sources":["../../src/gateway/EvidenceNormalizer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,kBAAkB,EAEnB,MAAM,yBAAyB,CAAC;AAEjC,MAAM,WAAW,gCAAgC;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC;IACnD,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,6BAA6B;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;IACrB,SAAS,CAAC,EAAE,gCAAgC,EAAE,CAAC;IAC/C,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,EAAE,kBAAkB,EAAE,CAAC;IAC/B,QAAQ,EAAE,0BAA0B,EAAE,CAAC;IACvC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;CACxB;AA0jBD,eAAO,MAAM,uBAAuB,GAClC,OAAO,6BAA6B,KACnC,8BAoJF,CAAC;AAEF,eAAO,MAAM,wBAAwB,UAvJ5B,6BAA6B,KACnC,8BAsJ4D,CAAC"}
@@ -14,6 +14,12 @@ const EVIDENCE_ARRAY_KEYS = [
14
14
  "hits",
15
15
  "items",
16
16
  "records",
17
+ // Docdex web research returns fetched pages here. Without it a web search
18
+ // produced zero evidence: the model saw that discovery happened and reported
19
+ // it could not find the answer, while the answer sat in the payload.
20
+ "web_context",
21
+ "webContext",
22
+ "value",
17
23
  ];
18
24
  const isRecord = (value) => Boolean(value && typeof value === "object" && !Array.isArray(value));
19
25
  const readString = (record, keys) => {
@@ -162,6 +168,75 @@ const parseMaybeJson = (value) => {
162
168
  return { malformed: true };
163
169
  }
164
170
  };
171
+ /**
172
+ * Builds a claim from a record that carries no explicit `claim` field.
173
+ *
174
+ * Connector results are lists of domain records — commits, issues, messages —
175
+ * none of which name a field "claim". Without this every item in a 12-commit
176
+ * result collapsed into one placeholder ("Tool … returned structured data"),
177
+ * so the synthesizer never saw the commits at all and could only report the
178
+ * one the worker happened to mention in prose.
179
+ *
180
+ * Deliberately field-name based rather than connector-specific: GitHub nests
181
+ * the message under `commit.message`, Jira under `fields.summary`, Graph puts
182
+ * it at `subject` or `body.content`. One set of conventional names covers all
183
+ * of them, and an unrecognized shape simply yields nothing rather than a guess.
184
+ */
185
+ const DESCRIPTIVE_FIELDS = [
186
+ "ai_digested_content",
187
+ "aiDigestedContent",
188
+ "message",
189
+ "summary",
190
+ "subject",
191
+ "title",
192
+ "description",
193
+ "text",
194
+ "content",
195
+ "name",
196
+ "displayName",
197
+ "topic",
198
+ ];
199
+ /** Containers connectors nest their fields inside. */
200
+ const NESTED_CONTAINERS = ["commit", "fields", "body", "properties", "attributes"];
201
+ const describeRecord = (record) => {
202
+ const direct = readString(record, DESCRIPTIVE_FIELDS);
203
+ if (direct)
204
+ return direct;
205
+ for (const container of NESTED_CONTAINERS) {
206
+ const nested = record[container];
207
+ if (isRecord(nested)) {
208
+ const value = readString(nested, DESCRIPTIVE_FIELDS);
209
+ if (value)
210
+ return value;
211
+ }
212
+ }
213
+ return undefined;
214
+ };
215
+ /** Identifier and timestamp, so items from different sources can be correlated. */
216
+ const recordIdentity = (record) => {
217
+ const id = readString(record, ["id", "key", "sha", "number", "uid", "messageId"]);
218
+ let timestamp = readString(record, [
219
+ "date", "createdDateTime", "receivedDateTime", "created_at", "createdAt",
220
+ "updated", "updatedAt", "lastUpdatedDateTime", "timestamp",
221
+ ]);
222
+ if (!timestamp) {
223
+ for (const container of NESTED_CONTAINERS) {
224
+ const nested = record[container];
225
+ if (!isRecord(nested))
226
+ continue;
227
+ timestamp = readString(nested, ["date", "created_at", "createdAt", "updated", "timestamp"]);
228
+ if (timestamp)
229
+ break;
230
+ const author = nested.author;
231
+ if (isRecord(author)) {
232
+ timestamp = readString(author, ["date", "createdAt", "timestamp"]);
233
+ if (timestamp)
234
+ break;
235
+ }
236
+ }
237
+ }
238
+ return { id, timestamp };
239
+ };
165
240
  const buildCandidateFromRecord = (record, context) => {
166
241
  const source = sourceRecord(record);
167
242
  const docdexLike = hasDocdexShape(record);
@@ -176,9 +251,12 @@ const buildCandidateFromRecord = (record, context) => {
176
251
  (source ? readString(source, ["sourceTitle", "source_title", "title", "name", "path"]) : undefined);
177
252
  const rawExcerpt = truncate(readString(record, ["rawExcerpt", "raw_excerpt", "excerpt", "snippet", "text"])) ??
178
253
  (source ? truncate(readString(source, ["rawExcerpt", "raw_excerpt", "excerpt", "snippet", "text"])) : undefined);
254
+ const described = describeRecord(record);
255
+ const identity = recordIdentity(record);
179
256
  const claim = readString(record, ["claim", "fact", "statement", "summary", "description", "text", "content"]) ??
180
257
  rawExcerpt ??
181
- sourceTitle;
258
+ sourceTitle ??
259
+ described;
182
260
  if (!claim) {
183
261
  return undefined;
184
262
  }
@@ -198,6 +276,8 @@ const buildCandidateFromRecord = (record, context) => {
198
276
  const path = readString(record, ["rel_path", "relPath", "path", "file"]);
199
277
  if (path)
200
278
  metadata.path = path;
279
+ if (identity.id && !metadata.recordId)
280
+ metadata.recordId = identity.id;
201
281
  if (source && Object.keys(source).length > 0)
202
282
  metadata.source = source;
203
283
  const unprovenanced = !provenancePresent({
@@ -374,6 +454,16 @@ export const normalizeCodaliEvidence = (input) => {
374
454
  const warnings = [];
375
455
  const rejected = [];
376
456
  const candidates = [];
457
+ /**
458
+ * Whether this task actually retrieved anything.
459
+ *
460
+ * A worker that made no successful tool call has only its own text to offer,
461
+ * and a model will happily supply a `sourceId` for a file it invented — that
462
+ * fabricated path then became a citable source, and the final answer stated
463
+ * it with confidence. So when nothing was retrieved, everything the worker
464
+ * says is forced to `unprovenanced` regardless of the provenance it claims.
465
+ */
466
+ const retrievedSomething = (input.toolCalls ?? []).some((call) => !call.status || call.status === "success");
377
467
  for (const evidence of input.evidence ?? []) {
378
468
  candidates.push(...collectCandidates(evidence, {
379
469
  sourceType: input.defaultSourceType,
@@ -392,6 +482,13 @@ export const normalizeCodaliEvidence = (input) => {
392
482
  rootStringMode: true,
393
483
  }, warnings));
394
484
  }
485
+ // Everything gathered so far came from the worker's own words. If the task
486
+ // retrieved nothing, strip any provenance it claimed for itself.
487
+ if (!retrievedSomething) {
488
+ for (const candidate of candidates) {
489
+ candidate.unprovenanced = true;
490
+ }
491
+ }
395
492
  for (const call of input.toolCalls ?? []) {
396
493
  if (call.status && call.status !== "success") {
397
494
  continue;