@mcoda/codali 0.1.107 → 0.1.109

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 +226 -2
  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 +90 -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 +46 -0
  76. package/dist/gateway/LocalGatewayProvider.d.ts.map +1 -0
  77. package/dist/gateway/LocalGatewayProvider.js +161 -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 +354 -0
  81. package/dist/gateway/RelevanceJudge.d.ts +14 -0
  82. package/dist/gateway/RelevanceJudge.d.ts.map +1 -0
  83. package/dist/gateway/RelevanceJudge.js +87 -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 +108 -16
  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;
@@ -146,12 +149,39 @@ const buildFinalContextPayload = (contextPack) => ({
146
149
  confidence: evidence.confidence,
147
150
  relevance: evidence.relevance,
148
151
  freshness: evidence.freshness,
152
+ // Which tool produced this, so the synthesizer can join a commit, a ticket
153
+ // and a message about the same thing rather than treating three sources as
154
+ // three unrelated facts.
155
+ usedTool: evidence.usedTool,
156
+ taskId: evidence.taskId,
149
157
  })),
158
+ sourceBreakdown: summarizeSources(contextPack.decisionFacts),
150
159
  selectedExcerpts: contextPack.selectedExcerpts,
151
160
  contradictions: contextPack.contradictions,
152
161
  missingInformation: contextPack.missingInformation,
153
162
  toolSummary: contextPack.toolSummary,
154
163
  });
164
+ /**
165
+ * Counts evidence per source type so the synthesizer can see at a glance
166
+ * whether a claim rests on one source or several agreeing ones — the basis for
167
+ * corroboration, and for noticing when a "multi-source" answer actually came
168
+ * from one place.
169
+ */
170
+ const summarizeSources = (evidence) => {
171
+ const grouped = new Map();
172
+ for (const item of evidence) {
173
+ const bucket = grouped.get(item.sourceType) ?? { count: 0, tools: new Set() };
174
+ bucket.count += 1;
175
+ if (item.usedTool)
176
+ bucket.tools.add(item.usedTool);
177
+ grouped.set(item.sourceType, bucket);
178
+ }
179
+ return [...grouped.entries()].map(([sourceType, bucket]) => ({
180
+ sourceType,
181
+ count: bucket.count,
182
+ tools: [...bucket.tools],
183
+ }));
184
+ };
155
185
  export const buildCodaliGatewayFinalSynthesizerMessages = (request, contextPack) => [
156
186
  {
157
187
  role: "system",
@@ -164,6 +194,7 @@ export const buildCodaliGatewayFinalSynthesizerMessages = (request, contextPack)
164
194
  CODALI_GATEWAY_SECURITY_PROMPT_HARDENING.tenantScope,
165
195
  CODALI_GATEWAY_SECURITY_PROMPT_HARDENING.finalEvidenceScope,
166
196
  "If the context pack is weak, missing information, or contradictory, say what is uncertain.",
197
+ "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
198
  "Do not expose internal trace, tool telemetry, model routing, prompts, or orchestration details.",
168
199
  "Cite only evidence ids that are present in the context pack sources.",
169
200
  "Do not cite disabled or denied integrations, tools, or source surfaces.",
@@ -358,7 +389,8 @@ export class CodaliGateway {
358
389
  this.options = options;
359
390
  this.store = options.store ?? createInMemoryCodaliGatewayStore();
360
391
  this.planner =
361
- options.planner ?? new CodaliGatewayPlanner(options.provider, options.plannerOptions);
392
+ options.planner ??
393
+ new CodaliGatewayPlanner(options.plannerProvider ?? options.provider, options.plannerOptions);
362
394
  }
363
395
  async readTrace(runId) {
364
396
  return readCodaliGatewayTrace({ store: this.store, runId });
@@ -377,6 +409,7 @@ export class CodaliGateway {
377
409
  product: request.product?.name,
378
410
  },
379
411
  });
412
+ const temporal = buildTemporalContext(request.query);
380
413
  const policyCompilation = compileCodaliGatewayPolicy({ request });
381
414
  if (!policyCompilation.ok) {
382
415
  await this.store.updateRun(runId, {
@@ -400,7 +433,11 @@ export class CodaliGateway {
400
433
  throw new Error("GATEWAY_MODEL_BUDGET_EXCEEDED: Gateway planning requires classifier and planner model calls.");
401
434
  }
402
435
  try {
403
- const planning = await this.planner.plan({ request, policyCompilation });
436
+ const planning = await this.planner.plan({
437
+ request,
438
+ policyCompilation,
439
+ toolDescriptions: this.options.toolDescriptors,
440
+ });
404
441
  await this.store.appendModelCall({
405
442
  runId,
406
443
  role: "classifier",
@@ -419,12 +456,22 @@ export class CodaliGateway {
419
456
  status: "succeeded",
420
457
  warnings: planning.warnings,
421
458
  });
459
+ await this.store.updateRun(runId, {
460
+ metadata: {
461
+ mode: request.mode ?? "balanced",
462
+ product: request.product?.name,
463
+ // Stamped so re-running a report is reproducible: "the last two
464
+ // weeks" must mean the same window it meant at plan time.
465
+ temporal,
466
+ },
467
+ });
422
468
  return {
423
469
  runId,
424
470
  policyCompilation,
425
471
  classifier: planning.classifier,
426
472
  planner: planning.planner,
427
473
  planning,
474
+ temporal,
428
475
  trace: await this.store.readRunTrace(runId),
429
476
  };
430
477
  }
@@ -442,6 +489,13 @@ export class CodaliGateway {
442
489
  }
443
490
  async run(request) {
444
491
  const planning = await this.plan(request);
492
+ // An ambiguous request stops here. Spending a research budget guessing
493
+ // which "Bekir" was meant produces a confident answer about the wrong
494
+ // person, which is worse than asking.
495
+ const clarification = planning.classifier.needsClarification?.trim();
496
+ if (clarification) {
497
+ return this.buildClarificationResult(request, planning, clarification);
498
+ }
445
499
  const workers = await this.executePlannedWorkerTasks(request, planning);
446
500
  const failedRequiredWorker = workers.workers.taskResults.find((task) => task.required && task.status === "failed");
447
501
  const result = failedRequiredWorker
@@ -484,6 +538,36 @@ export class CodaliGateway {
484
538
  const finalModel = finalModelFromAssignment(finalAgent.assignment);
485
539
  const messages = buildCodaliGatewayFinalSynthesizerMessages(input.request, contextPack);
486
540
  const traceBeforeFinal = await this.store.readRunTrace(input.runId);
541
+ const artifacts = artifactRefsFromStored(traceBeforeFinal?.artifacts ?? []);
542
+ // Every run passes through the finalizer. Choosing the deterministic or
543
+ // artifact mode skips the large model, but never skips normalization: no
544
+ // caller ever receives raw tool output.
545
+ const finalizer = decideFinalizerMode({
546
+ request: input.request,
547
+ contextPack,
548
+ artifacts,
549
+ // The classifier only emits a direct-answer candidate when it judged the
550
+ // query answerable from a single retrieved fact.
551
+ directLookup: Boolean(input.planning?.classifier.directAnswerCandidate?.trim()),
552
+ });
553
+ if (finalizer.mode !== "synthesizer") {
554
+ const deterministicAnswer = finalizer.mode === "artifact"
555
+ ? formatArtifactAnswer(artifacts)
556
+ : formatDeterministicAnswer(contextPack);
557
+ if (deterministicAnswer.trim()) {
558
+ return this.buildFinalizedResult({
559
+ input,
560
+ contextPack,
561
+ sources,
562
+ artifacts,
563
+ finalModel,
564
+ answer: deterministicAnswer,
565
+ finalizer,
566
+ });
567
+ }
568
+ // Nothing formattable: fall through to the synthesizer rather than
569
+ // returning an empty answer.
570
+ }
487
571
  const modelBudget = input.planning?.policyCompilation.security.limits.maxModelCalls ??
488
572
  compileCodaliGatewayPolicy({ request: input.request }).security.limits.maxModelCalls;
489
573
  const remainingFinalModelCalls = Math.max(0, modelBudget - (traceBeforeFinal?.modelCalls.length ?? 0));
@@ -549,6 +633,46 @@ export class CodaliGateway {
549
633
  sourceEvidenceIds: sources.map((source) => source.evidenceId),
550
634
  },
551
635
  });
636
+ // Enforce the caller's response schema. Historically this field was
637
+ // accepted and silently ignored, which pushed parsing and correction
638
+ // logic into every consuming product.
639
+ const schema = input.request.response?.schema;
640
+ const validation = validateResponseAgainstSchema(answer, schema);
641
+ if (schema && !validation.ok) {
642
+ const canRepair = attempt < maxAttempts;
643
+ if (canRepair) {
644
+ warnings.push(`final_response_schema_repair:${attempt}`);
645
+ messages.push({ role: "assistant", content: answer }, {
646
+ role: "user",
647
+ content: [
648
+ "The response did not satisfy the required schema:",
649
+ describeViolations(validation.violations),
650
+ "",
651
+ "Return only valid JSON conforming to the schema. No prose, no code fences.",
652
+ ].join("\n"),
653
+ });
654
+ continue;
655
+ }
656
+ // Out of attempts: report partial rather than handing back output
657
+ // the caller asked to be structured and is not.
658
+ warnings.push("final_response_schema_unsatisfied");
659
+ return this.buildFinalizedResult({
660
+ input,
661
+ contextPack,
662
+ sources,
663
+ artifacts,
664
+ finalModel,
665
+ answer,
666
+ finalizer: { mode: "synthesizer", reason: finalizer.reason },
667
+ status: "partial",
668
+ output: validation.value,
669
+ warnings,
670
+ errors: [
671
+ ...errors,
672
+ `GATEWAY_RESPONSE_SCHEMA_UNSATISFIED:${describeViolations(validation.violations)}`,
673
+ ],
674
+ });
675
+ }
552
676
  const confidence = confidenceFromContextPack(contextPack);
553
677
  await this.updateRunPreservingMetadata(input.runId, {
554
678
  status: "succeeded",
@@ -569,15 +693,20 @@ export class CodaliGateway {
569
693
  runId: input.runId,
570
694
  status: "succeeded",
571
695
  answer,
696
+ output: validation.value ?? answer,
572
697
  sources,
573
698
  confidence,
574
699
  evidence: contextPack.decisionFacts,
700
+ artifacts,
701
+ warnings,
575
702
  contextPack,
576
703
  finalModel,
577
704
  trace: gatewayTrace,
578
705
  telemetry: {
579
706
  finalAttempts: attempt,
580
707
  finalProvider: this.options.provider.name,
708
+ finalizerMode: finalizer.mode,
709
+ finalizerReason: finalizer.reason,
581
710
  contextPackTokenEstimate: contextPack.tokenEstimate,
582
711
  docdexRequestIds,
583
712
  usage,
@@ -649,6 +778,10 @@ export class CodaliGateway {
649
778
  failureMessage: "Final synthesizer failed without producing a response.",
650
779
  });
651
780
  }
781
+ /**
782
+ * Executes an already-computed plan. Public so a caller can interleave its
783
+ * own tracing between planning and execution without re-planning.
784
+ */
652
785
  async executePlannedWorkerTasks(request, planning) {
653
786
  if (planning.planner.workerTasks.length === 0) {
654
787
  const trace = await this.store.readRunTrace(planning.runId);
@@ -696,6 +829,12 @@ export class CodaliGateway {
696
829
  return sanitizeGatewayDatasetCollectionResult(collection);
697
830
  }
698
831
  resolveFinalAgent(request, override) {
832
+ if (this.options.finalAgent) {
833
+ return {
834
+ resolution: this.options.agentResolution,
835
+ assignment: this.options.finalAgent,
836
+ };
837
+ }
699
838
  const resolution = override ??
700
839
  this.options.agentResolution ??
701
840
  (this.options.agentInventory
@@ -756,6 +895,8 @@ export class CodaliGateway {
756
895
  sources,
757
896
  confidence: "low",
758
897
  evidence: sanitizedPack?.decisionFacts ?? [],
898
+ artifacts: artifactRefsFromStored(trace?.artifacts ?? []),
899
+ warnings: [],
759
900
  contextPack: sanitizedPack,
760
901
  finalModel: finalModelFromAssignment(assignment?.candidate.tier === "large" ? assignment : undefined),
761
902
  trace: gatewayTrace,
@@ -769,6 +910,85 @@ export class CodaliGateway {
769
910
  },
770
911
  };
771
912
  }
913
+ /**
914
+ * Builds a result that came out of the finalizer without a synthesizer
915
+ * failure — the deterministic and artifact modes, and the schema-unsatisfied
916
+ * partial. Kept in one place so every finished result carries the same
917
+ * fields regardless of which mode produced it.
918
+ */
919
+ /**
920
+ * Returns the clarifying question instead of an answer. Carries the same
921
+ * result contract as any other outcome so a caller needs no special case
922
+ * beyond checking `status`.
923
+ */
924
+ async buildClarificationResult(request, planning, question) {
925
+ await this.updateRunPreservingMetadata(planning.runId, {
926
+ status: "needs_clarification",
927
+ warnings: [],
928
+ errors: [],
929
+ finalSynthesis: { status: "needs_clarification", question },
930
+ });
931
+ const trace = await this.store.readRunTrace(planning.runId);
932
+ return {
933
+ runId: planning.runId,
934
+ status: "needs_clarification",
935
+ answer: question,
936
+ output: question,
937
+ sources: [],
938
+ confidence: "low",
939
+ evidence: [],
940
+ artifacts: [],
941
+ warnings: [],
942
+ trace: buildGatewayTrace(planning.runId, request, "needs_clarification", trace),
943
+ telemetry: { clarificationRequested: true },
944
+ metadata: { classifier: planning.classifier.queryType },
945
+ };
946
+ }
947
+ async buildFinalizedResult(args) {
948
+ const status = args.status ?? "succeeded";
949
+ const warnings = args.warnings ?? [];
950
+ const errors = args.errors ?? [];
951
+ const confidence = confidenceFromContextPack(args.contextPack);
952
+ await this.updateRunPreservingMetadata(args.input.runId, {
953
+ status,
954
+ warnings,
955
+ errors,
956
+ finalSynthesis: {
957
+ status,
958
+ finalizerMode: args.finalizer.mode,
959
+ finalizerReason: args.finalizer.reason,
960
+ finalModel: args.finalModel,
961
+ sourceEvidenceIds: args.sources.map((source) => source.evidenceId),
962
+ contextPackId: args.contextPack.id,
963
+ },
964
+ });
965
+ const trace = await this.store.readRunTrace(args.input.runId);
966
+ const docdexRequestIds = collectDocdexRequestIds(trace, args.contextPack);
967
+ return {
968
+ runId: args.input.runId,
969
+ status,
970
+ answer: args.answer,
971
+ output: args.output ?? args.answer,
972
+ sources: args.sources,
973
+ confidence,
974
+ evidence: args.contextPack.decisionFacts,
975
+ artifacts: args.artifacts,
976
+ warnings,
977
+ contextPack: args.contextPack,
978
+ finalModel: args.finalModel,
979
+ trace: buildGatewayTrace(args.input.runId, args.input.request, status, trace, warnings, errors),
980
+ telemetry: {
981
+ finalizerMode: args.finalizer.mode,
982
+ finalizerReason: args.finalizer.reason,
983
+ contextPackTokenEstimate: args.contextPack.tokenEstimate,
984
+ docdexRequestIds,
985
+ },
986
+ metadata: {
987
+ workerStatus: args.input.workers?.status,
988
+ planningWarnings: args.input.planning?.planning.warnings,
989
+ },
990
+ };
991
+ }
772
992
  async buildDegradedFinalResult(input) {
773
993
  const answer = createDegradedFinalAnswer(input.contextPack);
774
994
  await this.updateRunPreservingMetadata(input.input.runId, {
@@ -793,6 +1013,8 @@ export class CodaliGateway {
793
1013
  sources: input.sources,
794
1014
  confidence: "low",
795
1015
  evidence: input.contextPack.decisionFacts,
1016
+ artifacts: artifactRefsFromStored(trace?.artifacts ?? []),
1017
+ warnings: [...input.warnings, "final_synthesizer_degraded_answer"],
796
1018
  contextPack: input.contextPack,
797
1019
  finalModel: input.finalModel,
798
1020
  trace: gatewayTrace,
@@ -829,6 +1051,8 @@ export class CodaliGateway {
829
1051
  sources: input.sources,
830
1052
  confidence: "low",
831
1053
  evidence: input.contextPack.decisionFacts,
1054
+ artifacts: artifactRefsFromStored(trace?.artifacts ?? []),
1055
+ warnings: input.warnings,
832
1056
  contextPack: input.contextPack,
833
1057
  finalModel: input.finalModel,
834
1058
  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":"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"}
@@ -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;AAkjBD,eAAO,MAAM,uBAAuB,GAClC,OAAO,6BAA6B,KACnC,8BAoJF,CAAC;AAEF,eAAO,MAAM,wBAAwB,UAvJ5B,6BAA6B,KACnC,8BAsJ4D,CAAC"}
@@ -162,6 +162,73 @@ const parseMaybeJson = (value) => {
162
162
  return { malformed: true };
163
163
  }
164
164
  };
165
+ /**
166
+ * Builds a claim from a record that carries no explicit `claim` field.
167
+ *
168
+ * Connector results are lists of domain records — commits, issues, messages —
169
+ * none of which name a field "claim". Without this every item in a 12-commit
170
+ * result collapsed into one placeholder ("Tool … returned structured data"),
171
+ * so the synthesizer never saw the commits at all and could only report the
172
+ * one the worker happened to mention in prose.
173
+ *
174
+ * Deliberately field-name based rather than connector-specific: GitHub nests
175
+ * the message under `commit.message`, Jira under `fields.summary`, Graph puts
176
+ * it at `subject` or `body.content`. One set of conventional names covers all
177
+ * of them, and an unrecognized shape simply yields nothing rather than a guess.
178
+ */
179
+ const DESCRIPTIVE_FIELDS = [
180
+ "message",
181
+ "summary",
182
+ "subject",
183
+ "title",
184
+ "description",
185
+ "text",
186
+ "content",
187
+ "name",
188
+ "displayName",
189
+ "topic",
190
+ ];
191
+ /** Containers connectors nest their fields inside. */
192
+ const NESTED_CONTAINERS = ["commit", "fields", "body", "properties", "attributes"];
193
+ const describeRecord = (record) => {
194
+ const direct = readString(record, DESCRIPTIVE_FIELDS);
195
+ if (direct)
196
+ return direct;
197
+ for (const container of NESTED_CONTAINERS) {
198
+ const nested = record[container];
199
+ if (isRecord(nested)) {
200
+ const value = readString(nested, DESCRIPTIVE_FIELDS);
201
+ if (value)
202
+ return value;
203
+ }
204
+ }
205
+ return undefined;
206
+ };
207
+ /** Identifier and timestamp, so items from different sources can be correlated. */
208
+ const recordIdentity = (record) => {
209
+ const id = readString(record, ["id", "key", "sha", "number", "uid", "messageId"]);
210
+ let timestamp = readString(record, [
211
+ "date", "createdDateTime", "receivedDateTime", "created_at", "createdAt",
212
+ "updated", "updatedAt", "lastUpdatedDateTime", "timestamp",
213
+ ]);
214
+ if (!timestamp) {
215
+ for (const container of NESTED_CONTAINERS) {
216
+ const nested = record[container];
217
+ if (!isRecord(nested))
218
+ continue;
219
+ timestamp = readString(nested, ["date", "created_at", "createdAt", "updated", "timestamp"]);
220
+ if (timestamp)
221
+ break;
222
+ const author = nested.author;
223
+ if (isRecord(author)) {
224
+ timestamp = readString(author, ["date", "createdAt", "timestamp"]);
225
+ if (timestamp)
226
+ break;
227
+ }
228
+ }
229
+ }
230
+ return { id, timestamp };
231
+ };
165
232
  const buildCandidateFromRecord = (record, context) => {
166
233
  const source = sourceRecord(record);
167
234
  const docdexLike = hasDocdexShape(record);
@@ -176,9 +243,12 @@ const buildCandidateFromRecord = (record, context) => {
176
243
  (source ? readString(source, ["sourceTitle", "source_title", "title", "name", "path"]) : undefined);
177
244
  const rawExcerpt = truncate(readString(record, ["rawExcerpt", "raw_excerpt", "excerpt", "snippet", "text"])) ??
178
245
  (source ? truncate(readString(source, ["rawExcerpt", "raw_excerpt", "excerpt", "snippet", "text"])) : undefined);
246
+ const described = describeRecord(record);
247
+ const identity = recordIdentity(record);
179
248
  const claim = readString(record, ["claim", "fact", "statement", "summary", "description", "text", "content"]) ??
180
249
  rawExcerpt ??
181
- sourceTitle;
250
+ sourceTitle ??
251
+ described;
182
252
  if (!claim) {
183
253
  return undefined;
184
254
  }
@@ -198,6 +268,8 @@ const buildCandidateFromRecord = (record, context) => {
198
268
  const path = readString(record, ["rel_path", "relPath", "path", "file"]);
199
269
  if (path)
200
270
  metadata.path = path;
271
+ if (identity.id && !metadata.recordId)
272
+ metadata.recordId = identity.id;
201
273
  if (source && Object.keys(source).length > 0)
202
274
  metadata.source = source;
203
275
  const unprovenanced = !provenancePresent({
@@ -374,6 +446,16 @@ export const normalizeCodaliEvidence = (input) => {
374
446
  const warnings = [];
375
447
  const rejected = [];
376
448
  const candidates = [];
449
+ /**
450
+ * Whether this task actually retrieved anything.
451
+ *
452
+ * A worker that made no successful tool call has only its own text to offer,
453
+ * and a model will happily supply a `sourceId` for a file it invented — that
454
+ * fabricated path then became a citable source, and the final answer stated
455
+ * it with confidence. So when nothing was retrieved, everything the worker
456
+ * says is forced to `unprovenanced` regardless of the provenance it claims.
457
+ */
458
+ const retrievedSomething = (input.toolCalls ?? []).some((call) => !call.status || call.status === "success");
377
459
  for (const evidence of input.evidence ?? []) {
378
460
  candidates.push(...collectCandidates(evidence, {
379
461
  sourceType: input.defaultSourceType,
@@ -392,6 +474,13 @@ export const normalizeCodaliEvidence = (input) => {
392
474
  rootStringMode: true,
393
475
  }, warnings));
394
476
  }
477
+ // Everything gathered so far came from the worker's own words. If the task
478
+ // retrieved nothing, strip any provenance it claimed for itself.
479
+ if (!retrievedSomething) {
480
+ for (const candidate of candidates) {
481
+ candidate.unprovenanced = true;
482
+ }
483
+ }
395
484
  for (const call of input.toolCalls ?? []) {
396
485
  if (call.status && call.status !== "success") {
397
486
  continue;
@@ -0,0 +1,50 @@
1
+ import type { CodaliContextPack, CodaliGatewayRequest } from "./CodaliGatewayTypes.js";
2
+ import type { CodaliGatewayStoredArtifact } from "./CodaliGatewayStore.js";
3
+ import type { CodaliArtifactRef } from "./CodaliGatewayTypes.js";
4
+ /**
5
+ * The finishing step every run passes through.
6
+ *
7
+ * Skipping the large synthesizer for a simple factual lookup is sensible;
8
+ * skipping *normalization* is not. Without one consistent finisher each tool
9
+ * shapes its own output, citations quietly disappear, units go unlabelled, and
10
+ * raw tool error strings leak to end users. So there is no path from a tool
11
+ * result to a caller that does not come through here.
12
+ *
13
+ * Three modes:
14
+ *
15
+ * - `deterministic` — one clean, well-attributed result. Formatted in code,
16
+ * no model call. This is what makes a simple lookup cheap.
17
+ * - `synthesizer` — multiple, conflicting, or unstructured sources. Needs
18
+ * the large model to reconcile them.
19
+ * - `artifact` — media. The artifact is the answer; prose only frames it.
20
+ */
21
+ export type FinalizerMode = "deterministic" | "synthesizer" | "artifact";
22
+ export interface FinalizerDecision {
23
+ mode: FinalizerMode;
24
+ reason: string;
25
+ }
26
+ export interface FinalizerDecisionInput {
27
+ request: CodaliGatewayRequest;
28
+ contextPack: CodaliContextPack;
29
+ artifacts: readonly CodaliArtifactRef[];
30
+ /**
31
+ * Set when the router judged this a direct lookup — a question whose answer
32
+ * *is* the retrieved fact, rather than something that must be reasoned from
33
+ * it. Required for the deterministic path.
34
+ */
35
+ directLookup?: boolean;
36
+ }
37
+ export declare const decideFinalizerMode: (input: FinalizerDecisionInput) => FinalizerDecision;
38
+ /**
39
+ * Formats a single fact without a model call. Deliberately conservative: it
40
+ * restates the claim and attributes it. It never paraphrases, because
41
+ * paraphrasing without a model is how meaning gets lost.
42
+ */
43
+ export declare const formatDeterministicAnswer: (contextPack: CodaliContextPack) => string;
44
+ /**
45
+ * Frames artifacts as the answer. The artifact reference carries the payload;
46
+ * this is only the surrounding text.
47
+ */
48
+ export declare const formatArtifactAnswer: (artifacts: readonly CodaliArtifactRef[], existingAnswer?: string) => string;
49
+ export declare const artifactRefsFromStored: (artifacts: readonly CodaliGatewayStoredArtifact[]) => CodaliArtifactRef[];
50
+ //# sourceMappingURL=Finalizer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Finalizer.d.ts","sourceRoot":"","sources":["../../src/gateway/Finalizer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACvF,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AAC3E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEjE;;;;;;;;;;;;;;;;GAgBG;AAEH,MAAM,MAAM,aAAa,GAAG,eAAe,GAAG,aAAa,GAAG,UAAU,CAAC;AAEzE,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,aAAa,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,oBAAoB,CAAC;IAC9B,WAAW,EAAE,iBAAiB,CAAC;IAC/B,SAAS,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACxC;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAQD,eAAO,MAAM,mBAAmB,GAC9B,OAAO,sBAAsB,KAC5B,iBAqCF,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,GAAI,aAAa,iBAAiB,KAAG,MAM1E,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,oBAAoB,GAC/B,WAAW,SAAS,iBAAiB,EAAE,EACvC,iBAAiB,MAAM,KACtB,MAUF,CAAC;AAEF,eAAO,MAAM,sBAAsB,GACjC,WAAW,SAAS,2BAA2B,EAAE,KAChD,iBAAiB,EAaf,CAAC"}