@mcoda/mswarm 0.1.89 → 0.1.91

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 (116) hide show
  1. package/dist/codali-executor.d.ts +107 -6
  2. package/dist/codali-executor.d.ts.map +1 -1
  3. package/dist/codali-executor.js +500 -26
  4. package/dist/codali-executor.js.map +1 -1
  5. package/dist/runtime.d.ts +6 -3
  6. package/dist/runtime.d.ts.map +1 -1
  7. package/dist/runtime.js +18 -5
  8. package/dist/runtime.js.map +1 -1
  9. package/dist/server.d.ts.map +1 -1
  10. package/dist/server.js +18 -3
  11. package/dist/server.js.map +1 -1
  12. package/dist/vendor/codali/cli/DatasetCommand.d.ts +38 -0
  13. package/dist/vendor/codali/cli/DatasetCommand.d.ts.map +1 -0
  14. package/dist/vendor/codali/cli/DatasetCommand.js +959 -0
  15. package/dist/vendor/codali/cli/EvalCommand.d.ts +3 -0
  16. package/dist/vendor/codali/cli/EvalCommand.d.ts.map +1 -1
  17. package/dist/vendor/codali/cli/EvalCommand.js +55 -1
  18. package/dist/vendor/codali/cli/ImprovementCommand.d.ts +97 -0
  19. package/dist/vendor/codali/cli/ImprovementCommand.d.ts.map +1 -0
  20. package/dist/vendor/codali/cli/ImprovementCommand.js +1879 -0
  21. package/dist/vendor/codali/cli.d.ts.map +1 -1
  22. package/dist/vendor/codali/cli.js +15 -0
  23. package/dist/vendor/codali/dataset-cli.d.ts +3 -0
  24. package/dist/vendor/codali/dataset-cli.d.ts.map +1 -0
  25. package/dist/vendor/codali/dataset-cli.js +30 -0
  26. package/dist/vendor/codali/eval/CodaliGatewayLiveHarness.d.ts +90 -1
  27. package/dist/vendor/codali/eval/CodaliGatewayLiveHarness.d.ts.map +1 -1
  28. package/dist/vendor/codali/eval/CodaliGatewayLiveHarness.js +443 -9
  29. package/dist/vendor/codali/eval/GatewayDatasetEval.d.ts +70 -0
  30. package/dist/vendor/codali/eval/GatewayDatasetEval.d.ts.map +1 -0
  31. package/dist/vendor/codali/eval/GatewayDatasetEval.js +477 -0
  32. package/dist/vendor/codali/eval/GatewayEvalSuite.d.ts +52 -0
  33. package/dist/vendor/codali/eval/GatewayEvalSuite.d.ts.map +1 -1
  34. package/dist/vendor/codali/eval/GatewayEvalSuite.js +135 -1
  35. package/dist/vendor/codali/gateway/CodaliGateway.d.ts +4 -0
  36. package/dist/vendor/codali/gateway/CodaliGateway.d.ts.map +1 -1
  37. package/dist/vendor/codali/gateway/CodaliGateway.js +37 -1
  38. package/dist/vendor/codali/gateway/CodaliGatewaySchemas.d.ts.map +1 -1
  39. package/dist/vendor/codali/gateway/CodaliGatewaySchemas.js +0 -4
  40. package/dist/vendor/codali/gateway/CodaliGatewayStore.d.ts.map +1 -1
  41. package/dist/vendor/codali/gateway/CodaliGatewayStore.js +1 -0
  42. package/dist/vendor/codali/gateway/GatewayPlanner.d.ts.map +1 -1
  43. package/dist/vendor/codali/gateway/GatewayPlanner.js +355 -41
  44. package/dist/vendor/codali/gateway/GatewayStateMachine.d.ts +1 -0
  45. package/dist/vendor/codali/gateway/GatewayStateMachine.d.ts.map +1 -1
  46. package/dist/vendor/codali/gateway/GatewayStateMachine.js +221 -5
  47. package/dist/vendor/codali/improvement/CandidateReleaseBuilder.d.ts +201 -0
  48. package/dist/vendor/codali/improvement/CandidateReleaseBuilder.d.ts.map +1 -0
  49. package/dist/vendor/codali/improvement/CandidateReleaseBuilder.js +1175 -0
  50. package/dist/vendor/codali/improvement/DatasetEligibilityGate.d.ts +75 -0
  51. package/dist/vendor/codali/improvement/DatasetEligibilityGate.d.ts.map +1 -0
  52. package/dist/vendor/codali/improvement/DatasetEligibilityGate.js +497 -0
  53. package/dist/vendor/codali/improvement/DatasetExportManifestReader.d.ts +88 -0
  54. package/dist/vendor/codali/improvement/DatasetExportManifestReader.d.ts.map +1 -0
  55. package/dist/vendor/codali/improvement/DatasetExportManifestReader.js +333 -0
  56. package/dist/vendor/codali/improvement/DocdexRetrievalCandidateBuilder.d.ts +192 -0
  57. package/dist/vendor/codali/improvement/DocdexRetrievalCandidateBuilder.d.ts.map +1 -0
  58. package/dist/vendor/codali/improvement/DocdexRetrievalCandidateBuilder.js +625 -0
  59. package/dist/vendor/codali/improvement/EvalReplayCandidateBuilder.d.ts +173 -0
  60. package/dist/vendor/codali/improvement/EvalReplayCandidateBuilder.d.ts.map +1 -0
  61. package/dist/vendor/codali/improvement/EvalReplayCandidateBuilder.js +363 -0
  62. package/dist/vendor/codali/improvement/FineTuneJobPlanner.d.ts +281 -0
  63. package/dist/vendor/codali/improvement/FineTuneJobPlanner.d.ts.map +1 -0
  64. package/dist/vendor/codali/improvement/FineTuneJobPlanner.js +823 -0
  65. package/dist/vendor/codali/improvement/ImprovementEvalRunner.d.ts +50 -0
  66. package/dist/vendor/codali/improvement/ImprovementEvalRunner.d.ts.map +1 -0
  67. package/dist/vendor/codali/improvement/ImprovementEvalRunner.js +648 -0
  68. package/dist/vendor/codali/improvement/ImprovementPolicy.d.ts +272 -0
  69. package/dist/vendor/codali/improvement/ImprovementPolicy.d.ts.map +1 -0
  70. package/dist/vendor/codali/improvement/ImprovementPolicy.js +1450 -0
  71. package/dist/vendor/codali/improvement/ModelRouterCandidateBuilder.d.ts +186 -0
  72. package/dist/vendor/codali/improvement/ModelRouterCandidateBuilder.d.ts.map +1 -0
  73. package/dist/vendor/codali/improvement/ModelRouterCandidateBuilder.js +880 -0
  74. package/dist/vendor/codali/improvement/OperatorInspector.d.ts +182 -0
  75. package/dist/vendor/codali/improvement/OperatorInspector.d.ts.map +1 -0
  76. package/dist/vendor/codali/improvement/OperatorInspector.js +604 -0
  77. package/dist/vendor/codali/improvement/ProductionGovernance.d.ts +91 -0
  78. package/dist/vendor/codali/improvement/ProductionGovernance.d.ts.map +1 -0
  79. package/dist/vendor/codali/improvement/ProductionGovernance.js +329 -0
  80. package/dist/vendor/codali/improvement/PromptSchemaToolMetadataCandidateBuilder.d.ts +152 -0
  81. package/dist/vendor/codali/improvement/PromptSchemaToolMetadataCandidateBuilder.d.ts.map +1 -0
  82. package/dist/vendor/codali/improvement/PromptSchemaToolMetadataCandidateBuilder.js +480 -0
  83. package/dist/vendor/codali/improvement/PublishOrchestrator.d.ts +113 -0
  84. package/dist/vendor/codali/improvement/PublishOrchestrator.d.ts.map +1 -0
  85. package/dist/vendor/codali/improvement/PublishOrchestrator.js +590 -0
  86. package/dist/vendor/codali/improvement/ReleaseOutcomeReporter.d.ts +133 -0
  87. package/dist/vendor/codali/improvement/ReleaseOutcomeReporter.d.ts.map +1 -0
  88. package/dist/vendor/codali/improvement/ReleaseOutcomeReporter.js +501 -0
  89. package/dist/vendor/codali/improvement/StorageServiceImprovementClient.d.ts +71 -0
  90. package/dist/vendor/codali/improvement/StorageServiceImprovementClient.d.ts.map +1 -0
  91. package/dist/vendor/codali/improvement/StorageServiceImprovementClient.js +245 -0
  92. package/dist/vendor/codali/index.d.ts +43 -0
  93. package/dist/vendor/codali/index.d.ts.map +1 -1
  94. package/dist/vendor/codali/index.js +21 -0
  95. package/dist/vendor/codali/runtime/CodaliRuntime.d.ts +0 -2
  96. package/dist/vendor/codali/runtime/CodaliRuntime.d.ts.map +1 -1
  97. package/dist/vendor/codali/runtime/CodaliRuntime.js +0 -5
  98. package/dist/vendor/codali/storage/CodaliDatasetPrivacyEngine.d.ts +138 -0
  99. package/dist/vendor/codali/storage/CodaliDatasetPrivacyEngine.d.ts.map +1 -0
  100. package/dist/vendor/codali/storage/CodaliDatasetPrivacyEngine.js +417 -0
  101. package/dist/vendor/codali/storage/CodaliFeedbackReviewIngestion.d.ts +50 -0
  102. package/dist/vendor/codali/storage/CodaliFeedbackReviewIngestion.d.ts.map +1 -0
  103. package/dist/vendor/codali/storage/CodaliFeedbackReviewIngestion.js +141 -0
  104. package/dist/vendor/codali/storage/CodaliStorageContracts.d.ts +337 -0
  105. package/dist/vendor/codali/storage/CodaliStorageContracts.d.ts.map +1 -0
  106. package/dist/vendor/codali/storage/CodaliStorageContracts.js +1555 -0
  107. package/dist/vendor/codali/storage/DatasetExportJob.d.ts +51 -0
  108. package/dist/vendor/codali/storage/DatasetExportJob.d.ts.map +1 -0
  109. package/dist/vendor/codali/storage/DatasetExportJob.js +358 -0
  110. package/dist/vendor/codali/storage/DatasetReviewQueue.d.ts +98 -0
  111. package/dist/vendor/codali/storage/DatasetReviewQueue.d.ts.map +1 -0
  112. package/dist/vendor/codali/storage/DatasetReviewQueue.js +426 -0
  113. package/dist/vendor/codali/storage/GatewayDatasetStore.d.ts +233 -0
  114. package/dist/vendor/codali/storage/GatewayDatasetStore.d.ts.map +1 -0
  115. package/dist/vendor/codali/storage/GatewayDatasetStore.js +2070 -0
  116. package/package.json +3 -3
@@ -3,6 +3,7 @@ import { compileCodaliGatewayPolicy, } from "./GatewayPolicyCompiler.js";
3
3
  import { normalizeCodaliEvidence } from "./EvidenceNormalizer.js";
4
4
  import { validateCodaliGatewayVerifierOutput } from "./CodaliGatewaySchemas.js";
5
5
  import { CODALI_GATEWAY_SECURITY_PROMPT_HARDENING } from "./GatewaySecurityPolicy.js";
6
+ import { dispatchAppToolGateway, AppToolGatewayDispatchError, } from "./AppToolGatewayDispatcher.js";
6
7
  const DEFAULT_PER_TASK_TIMEOUT_MS = 30000;
7
8
  const positiveInteger = (value, fallback) => Number.isFinite(value) && value !== undefined && value > 0
8
9
  ? Math.floor(value)
@@ -14,6 +15,23 @@ const isRecord = (value) => Boolean(value && typeof value === "object" && !Array
14
15
  const readBoolean = (metadata, key) => isRecord(metadata) && typeof metadata[key] === "boolean"
15
16
  ? metadata[key]
16
17
  : undefined;
18
+ const readString = (metadata, key) => {
19
+ if (!isRecord(metadata))
20
+ return undefined;
21
+ const value = metadata[key];
22
+ if (typeof value === "string" && value.trim())
23
+ return value.trim();
24
+ if (typeof value === "number" && Number.isFinite(value))
25
+ return String(value);
26
+ return undefined;
27
+ };
28
+ const readStringArray = (value) => {
29
+ if (!Array.isArray(value))
30
+ return [];
31
+ return value
32
+ .filter((item) => typeof item === "string" && item.trim().length > 0)
33
+ .map((item) => item.trim());
34
+ };
17
35
  const isRequiredWorkerTask = (task) => {
18
36
  if (readBoolean(task.metadata, "required") === false)
19
37
  return false;
@@ -32,6 +50,50 @@ const uniqueInOrder = (values) => {
32
50
  }
33
51
  return output;
34
52
  };
53
+ const searchableTokens = (...values) => {
54
+ const text = values
55
+ .map((value) => {
56
+ if (typeof value === "string")
57
+ return value;
58
+ if (Array.isArray(value))
59
+ return value.join(" ");
60
+ if (isRecord(value))
61
+ return JSON.stringify(value);
62
+ return "";
63
+ })
64
+ .join(" ")
65
+ .toLowerCase();
66
+ return new Set(text
67
+ .split(/[^a-z0-9]+/g)
68
+ .map((token) => token.trim())
69
+ .filter((token) => token.length >= 2));
70
+ };
71
+ const appGatewayToolRelevance = (toolName, contract, task, request) => {
72
+ const intentTokens = searchableTokens(request.query, task.query, task.objective, task.workerRole, task.outputFormat, task.expectedSources);
73
+ if (intentTokens.size === 0)
74
+ return 0;
75
+ const toolTokens = searchableTokens(toolName, contract);
76
+ let score = 0;
77
+ for (const token of intentTokens) {
78
+ if (toolTokens.has(token))
79
+ score += 2;
80
+ for (const toolToken of toolTokens) {
81
+ if (toolToken.includes(token) || token.includes(toolToken)) {
82
+ score += 1;
83
+ break;
84
+ }
85
+ }
86
+ }
87
+ return score;
88
+ };
89
+ const sortAppGatewayToolsByRelevance = (tools, contracts, task, request) => tools
90
+ .map((tool, index) => ({
91
+ tool,
92
+ index,
93
+ score: appGatewayToolRelevance(tool, contracts[tool], task, request),
94
+ }))
95
+ .sort((left, right) => right.score - left.score || left.index - right.index)
96
+ .map((item) => item.tool);
35
97
  const requestHasTenantScope = (request) => Boolean(request.tenant?.id || request.tenant?.slug || request.tenant?.realm);
36
98
  const isImageArtifact = (artifact) => {
37
99
  const type = artifact.type.toLowerCase();
@@ -523,6 +585,115 @@ export class CodaliGatewayStateMachine {
523
585
  }
524
586
  return prepared;
525
587
  }
588
+ async dispatchAssignedAppGatewayTools(args) {
589
+ const gateway = args.policyCompilation.toolCompilation.appToolGateway;
590
+ if (!gateway || args.remainingToolCalls <= 0) {
591
+ return { evidence: [], toolCalls: [], metadata: { skipped: "no_gateway_or_budget" } };
592
+ }
593
+ const contracts = args.policyCompilation.toolCompilation.appToolContracts;
594
+ const assignedAppTools = args.task.allowedTools
595
+ .filter((tool) => Boolean(contracts[tool]));
596
+ const policyAppTools = args.policyCompilation.effectiveAllowedTools
597
+ .filter((tool) => Boolean(contracts[tool]));
598
+ const dispatchSource = assignedAppTools.length > 0
599
+ ? "assigned_task_tools"
600
+ : "policy_app_tools_fallback";
601
+ const appTools = (assignedAppTools.length > 0
602
+ ? assignedAppTools
603
+ : sortAppGatewayToolsByRelevance(uniqueInOrder(policyAppTools), contracts, args.task.task, args.input.request))
604
+ .slice(0, args.remainingToolCalls);
605
+ if (appTools.length === 0) {
606
+ return { evidence: [], toolCalls: [], metadata: { skipped: "no_assigned_app_tools" } };
607
+ }
608
+ const request = args.input.request;
609
+ const requester = isRecord(request.requester) ? request.requester : undefined;
610
+ const requestMetadata = isRecord(request.metadata) ? request.metadata : undefined;
611
+ const scopedRequestId = readString(requestMetadata, "scoped_request_id") ??
612
+ readString(requestMetadata, "scopedRequestId") ??
613
+ readString(requestMetadata, "feedback_request_id") ??
614
+ readString(requestMetadata, "feedbackRequestId") ??
615
+ readString(requestMetadata, "conversation_message_id") ??
616
+ readString(requestMetadata, "conversationMessageId") ??
617
+ readString(requestMetadata, "ai_chat_request_id") ??
618
+ readString(requestMetadata, "aiChatRequestId") ??
619
+ readString(requestMetadata, "request_id") ??
620
+ readString(requestMetadata, "requestId") ??
621
+ request.id;
622
+ const tenantScope = {
623
+ tenant_id: request.tenant?.id,
624
+ tenant_slug: request.tenant?.slug,
625
+ tenant_realm: request.tenant?.realm,
626
+ docdex_repo_id: request.docdex?.repoId,
627
+ };
628
+ const requesterScope = {
629
+ request_id: scopedRequestId,
630
+ owner_user_id: readString(requester, "owner_user_id") ?? readString(requester, "ownerUserId"),
631
+ requester_id: request.requester?.id,
632
+ requester_role: request.requester?.role,
633
+ api_key_id: readString(requester, "api_key_id") ?? readString(requester, "apiKeyId"),
634
+ agent_slug: readString(requestMetadata, "agentSlug") ?? readString(requestMetadata, "agent_slug"),
635
+ };
636
+ const output = { evidence: [], toolCalls: [], metadata: { dispatchSource, dispatchedTools: appTools } };
637
+ for (const toolName of appTools) {
638
+ const startedAtMs = this.now();
639
+ const contract = contracts[toolName];
640
+ try {
641
+ const result = await dispatchAppToolGateway({
642
+ runId: args.input.runId,
643
+ sessionId: request.conversation?.id,
644
+ requestId: scopedRequestId,
645
+ tenantScope,
646
+ requesterScope,
647
+ toolName,
648
+ args: {
649
+ mode: "search",
650
+ query: args.task.task.query ?? request.query,
651
+ limit: 20,
652
+ filters: {
653
+ taskId: args.task.task.id,
654
+ workerRole: args.task.task.workerRole,
655
+ objective: args.task.task.objective,
656
+ expectedSources: args.task.task.expectedSources ?? [],
657
+ },
658
+ include: args.task.task.expectedSources ?? [],
659
+ },
660
+ contract,
661
+ gateway,
662
+ allowedTools: args.policyCompilation.effectiveAllowedTools,
663
+ deniedTools: args.policyCompilation.effectiveDeniedTools,
664
+ now: () => new Date(this.now()),
665
+ });
666
+ output.evidence.push(result.evidencePayload);
667
+ output.toolCalls.push({
668
+ tool: toolName,
669
+ status: "success",
670
+ latencyMs: Math.max(0, this.now() - startedAtMs),
671
+ args: result.redactedRequest,
672
+ result: result.redactedResponse,
673
+ metadata: {
674
+ dispatch: "app_tool_gateway",
675
+ responseStatus: result.responseStatus,
676
+ },
677
+ });
678
+ }
679
+ catch (error) {
680
+ const dispatchError = error instanceof AppToolGatewayDispatchError ? error : undefined;
681
+ output.toolCalls.push({
682
+ tool: toolName,
683
+ status: "failed",
684
+ latencyMs: Math.max(0, this.now() - startedAtMs),
685
+ errorCode: dispatchError?.code ?? "GATEWAY_APP_TOOL_DISPATCH_FAILED",
686
+ errorMessage: error instanceof Error ? error.message : String(error),
687
+ metadata: {
688
+ dispatch: "app_tool_gateway",
689
+ retryable: dispatchError?.retryable ?? false,
690
+ details: dispatchError?.details,
691
+ },
692
+ });
693
+ }
694
+ }
695
+ return output;
696
+ }
526
697
  async runTask(args) {
527
698
  const startedAtMs = this.now();
528
699
  const prompt = buildCodaliGatewayWorkerPrompt({
@@ -541,21 +712,54 @@ export class CodaliGatewayStateMachine {
541
712
  removedTools: args.task.removedTools,
542
713
  },
543
714
  });
715
+ const appToolPrefetch = await this.dispatchAssignedAppGatewayTools(args);
716
+ const remainingToolCallsAfterPrefetch = Math.max(0, args.remainingToolCalls - appToolPrefetch.toolCalls.length);
544
717
  try {
545
718
  const workerResult = await withTimeout(this.options.taskRunner.run({
546
719
  runId: args.input.runId,
547
720
  task: args.task.task,
548
721
  prompt,
549
722
  allowedTools: args.task.allowedTools,
550
- remainingToolCalls: args.remainingToolCalls,
723
+ remainingToolCalls: remainingToolCallsAfterPrefetch,
551
724
  remainingModelCalls: args.remainingModelCalls,
552
725
  timeoutMs: args.perTaskTimeoutMs,
553
726
  request: args.input.request,
554
727
  policyCompilation: args.policyCompilation,
555
728
  }), args.perTaskTimeoutMs, args.task.task.id);
556
- return await this.persistWorkerResult(args, workerResult, startedAtMs);
729
+ return await this.persistWorkerResult(args, {
730
+ ...workerResult,
731
+ evidence: [
732
+ ...appToolPrefetch.evidence,
733
+ ...(workerResult.evidence ?? []),
734
+ ],
735
+ toolCalls: [
736
+ ...appToolPrefetch.toolCalls,
737
+ ...(workerResult.toolCalls ?? []),
738
+ ],
739
+ metadata: {
740
+ ...(workerResult.metadata ?? {}),
741
+ appToolPrefetch: appToolPrefetch.metadata,
742
+ },
743
+ }, startedAtMs);
557
744
  }
558
745
  catch (error) {
746
+ if (appToolPrefetch.evidence.length > 0 || appToolPrefetch.toolCalls.length > 0) {
747
+ return await this.persistWorkerResult(args, {
748
+ status: "succeeded",
749
+ output: {
750
+ summary: "Worker model failed after assigned app-tool gateway dispatch; using collected app-tool evidence.",
751
+ },
752
+ evidence: appToolPrefetch.evidence,
753
+ toolCalls: appToolPrefetch.toolCalls,
754
+ metadata: {
755
+ appToolPrefetch: appToolPrefetch.metadata,
756
+ workerError: {
757
+ name: error instanceof Error ? error.name : "Error",
758
+ message: error instanceof Error ? error.message : String(error),
759
+ },
760
+ },
761
+ }, startedAtMs);
762
+ }
559
763
  const errorCode = error instanceof Error && error.name === "CodaliGatewayWorkerTimeoutError"
560
764
  ? "GATEWAY_WORKER_TIMEOUT"
561
765
  : "GATEWAY_WORKER_FAILED";
@@ -589,7 +793,19 @@ export class CodaliGatewayStateMachine {
589
793
  }
590
794
  }
591
795
  async persistWorkerResult(args, workerResult, startedAtMs) {
592
- const allowed = new Set(args.task.allowedTools);
796
+ const workerMetadata = isRecord(workerResult.metadata) ? workerResult.metadata : undefined;
797
+ const appToolPrefetchMetadata = isRecord(workerMetadata?.appToolPrefetch)
798
+ ? workerMetadata.appToolPrefetch
799
+ : undefined;
800
+ const policyAllowed = new Set(args.policyCompilation.effectiveAllowedTools);
801
+ const appToolContracts = args.policyCompilation.toolCompilation.appToolContracts;
802
+ const prefetchAllowedTools = readStringArray(appToolPrefetchMetadata?.dispatchedTools)
803
+ .filter((tool) => policyAllowed.has(tool) && Boolean(appToolContracts[tool]));
804
+ const effectiveTaskAllowedTools = uniqueInOrder([
805
+ ...args.task.allowedTools,
806
+ ...prefetchAllowedTools,
807
+ ]);
808
+ const allowed = new Set(effectiveTaskAllowedTools);
593
809
  const disallowedToolCalls = (workerResult.toolCalls ?? [])
594
810
  .filter((call) => !allowed.has(call.tool));
595
811
  const toolCalls = (workerResult.toolCalls ?? []).map((call) => {
@@ -707,7 +923,7 @@ export class CodaliGatewayStateMachine {
707
923
  metadata: {
708
924
  ...(args.task.task.metadata ?? {}),
709
925
  required: args.task.required,
710
- allowedTools: args.task.allowedTools,
926
+ allowedTools: effectiveTaskAllowedTools,
711
927
  removedTools: args.task.removedTools,
712
928
  errorCode,
713
929
  output: workerResult.output,
@@ -735,7 +951,7 @@ export class CodaliGatewayStateMachine {
735
951
  workerRole: args.task.task.workerRole,
736
952
  status,
737
953
  required: args.task.required,
738
- allowedTools: args.task.allowedTools,
954
+ allowedTools: effectiveTaskAllowedTools,
739
955
  removedTools: args.task.removedTools,
740
956
  durationMs: Math.max(0, this.now() - startedAtMs),
741
957
  evidenceCount: evidence.length,
@@ -0,0 +1,201 @@
1
+ import { type CodaliImprovementRelease, type CodaliImprovementReleaseLevel, type CodaliImprovementScope } from "./ImprovementPolicy.js";
2
+ import type { DatasetExportManifestReaderResult } from "./DatasetExportManifestReader.js";
3
+ import { CODALI_PATCH_CANDIDATE_SCHEMA_VERSION, type CodaliPatchCandidateBundle, type CodaliPatchProposalArtifact } from "./PromptSchemaToolMetadataCandidateBuilder.js";
4
+ export declare const CODALI_CANDIDATE_RELEASE_SCHEMA_VERSION: "codali.improvement.candidate_release.v1";
5
+ export declare const CODALI_CANDIDATE_RELEASE_PLAN_SCHEMA_VERSION: "codali.improvement.release_plan.v1";
6
+ export declare const DEFAULT_CODALI_CANDIDATE_RELEASE_APPROVED_PATHS: readonly [".codali/improvement/"];
7
+ export declare const DEFAULT_CODALI_CANDIDATE_RELEASE_DIRECTORIES: readonly [".codali/improvement/candidates"];
8
+ export type CodaliCandidateReleaseGeneratedArtifactKind = "candidate_release" | "package_version" | "release_manifest";
9
+ export type CodaliCandidateReleaseSemverBump = "patch" | "minor" | "major";
10
+ export type CodaliCandidateReleaseWriteStatus = "dry_run" | "ready" | "written" | "blocked";
11
+ export interface CodaliCandidateReleaseCommandResult {
12
+ exitCode: number;
13
+ stdout: string;
14
+ stderr?: string;
15
+ error?: string;
16
+ }
17
+ export type CodaliCandidateReleaseCommandRunner = (command: string, args: string[], options: {
18
+ cwd: string;
19
+ }) => CodaliCandidateReleaseCommandResult;
20
+ export interface CodaliCandidateReleaseDirtyEntry {
21
+ status: string;
22
+ path: string;
23
+ }
24
+ export interface CodaliCandidateReleaseGeneratedArtifact {
25
+ artifactId: string;
26
+ artifactKind: CodaliCandidateReleaseGeneratedArtifactKind;
27
+ schemaVersion: typeof CODALI_CANDIDATE_RELEASE_SCHEMA_VERSION;
28
+ sourceExportIds: string[];
29
+ sourceSchemaVersions: {
30
+ candidateRelease: typeof CODALI_CANDIDATE_RELEASE_SCHEMA_VERSION;
31
+ patchCandidate: typeof CODALI_PATCH_CANDIDATE_SCHEMA_VERSION;
32
+ storageManifest: string;
33
+ };
34
+ relativePath: string;
35
+ contentHash: string;
36
+ byteSize: number;
37
+ }
38
+ export interface CodaliCandidateReleaseWriteTarget {
39
+ relativePath: string;
40
+ content: string;
41
+ artifact: CodaliCandidateReleaseGeneratedArtifact;
42
+ }
43
+ export interface CodaliCandidateReleaseWritePlan {
44
+ status: CodaliCandidateReleaseWriteStatus;
45
+ dryRun: boolean;
46
+ repoRoot: string;
47
+ approvedPaths: string[];
48
+ targets: Array<{
49
+ relativePath: string;
50
+ approved: boolean;
51
+ dirty: boolean;
52
+ contentHash: string;
53
+ byteSize: number;
54
+ }>;
55
+ blockedReasons: string[];
56
+ }
57
+ export interface CodaliCandidateReleaseWorkspace {
58
+ workspaceId: string;
59
+ branchName: string;
60
+ branchPrefix: "codali/auto-improve";
61
+ candidateDate: string;
62
+ runId: string;
63
+ discardable: true;
64
+ dryRunOnly: boolean;
65
+ defaultApprovedPaths: readonly string[];
66
+ approvedPaths: string[];
67
+ targetDirectory: string;
68
+ patchOutput: string;
69
+ discardInstructions: string[];
70
+ }
71
+ export interface CodaliCandidateReleaseDirtySummary {
72
+ status: "clean" | "dirty" | "unavailable";
73
+ dirtyFileCount: number;
74
+ targetDirtyFiles: string[];
75
+ unrelatedDirtyFileCount: number;
76
+ unrelatedDirtyFilesSample: string[];
77
+ warning?: string;
78
+ }
79
+ export interface CodaliCandidateReleasePlanGate {
80
+ gateId: string;
81
+ status: "passed" | "blocked" | "warning" | "skipped";
82
+ reasons: string[];
83
+ }
84
+ export interface CodaliCandidateReleasePackageVersionTarget {
85
+ packageName: string;
86
+ relativePath: string;
87
+ currentVersion: string;
88
+ plannedVersion: string;
89
+ privatePackage: boolean;
90
+ }
91
+ export interface CodaliCandidateReleaseChangelogNotes {
92
+ sourceExportIds: string[];
93
+ changedArtifactClasses: string[];
94
+ evalDeltas: {
95
+ status: "provided" | "not_provided";
96
+ summary: string;
97
+ metrics: Record<string, number>;
98
+ };
99
+ privacySummary: {
100
+ status: "provided" | "not_provided";
101
+ recordCount?: number;
102
+ containsCustomerData?: boolean;
103
+ containsSecrets?: boolean;
104
+ exportAllowedCount?: number;
105
+ trainingAllowedCount?: number;
106
+ policyTags?: string[];
107
+ };
108
+ rollback: string[];
109
+ notes: string[];
110
+ rawCustomerDataIncluded: false;
111
+ }
112
+ export interface CodaliCandidateReleasePlan {
113
+ schemaVersion: typeof CODALI_CANDIDATE_RELEASE_PLAN_SCHEMA_VERSION;
114
+ dryRun: boolean;
115
+ candidateId: string;
116
+ releaseId: string;
117
+ storageServiceReleaseId: string;
118
+ semverBump: CodaliCandidateReleaseSemverBump;
119
+ version: string;
120
+ futureTag: string;
121
+ branch: {
122
+ name: string;
123
+ discardable: true;
124
+ };
125
+ commit: {
126
+ message: string;
127
+ files: string[];
128
+ rawCustomerDataIncluded: false;
129
+ };
130
+ tag: {
131
+ name: string;
132
+ message: string;
133
+ matchesPackageVersions: boolean;
134
+ rawCustomerDataIncluded: false;
135
+ };
136
+ gates: CodaliCandidateReleasePlanGate[];
137
+ rollback: {
138
+ commands: string[];
139
+ packageVersions: CodaliCandidateReleasePackageVersionTarget[];
140
+ };
141
+ packageVersions: {
142
+ currentVersion: string;
143
+ plannedVersion: string;
144
+ futureTag: string;
145
+ matchesFutureTag: boolean;
146
+ targets: CodaliCandidateReleasePackageVersionTarget[];
147
+ };
148
+ changelog: CodaliCandidateReleaseChangelogNotes;
149
+ }
150
+ export interface CodaliCandidateReleaseBuild {
151
+ schemaVersion: typeof CODALI_CANDIDATE_RELEASE_SCHEMA_VERSION;
152
+ dryRun: boolean;
153
+ release: CodaliImprovementRelease;
154
+ releasePlan: CodaliCandidateReleasePlan;
155
+ candidateWorkspace: CodaliCandidateReleaseWorkspace;
156
+ writePlan: CodaliCandidateReleaseWritePlan;
157
+ dirtyWorktree: CodaliCandidateReleaseDirtySummary;
158
+ generatedArtifacts: CodaliCandidateReleaseGeneratedArtifact[];
159
+ proposals: CodaliPatchCandidateBundle[];
160
+ patchOutput: string;
161
+ blockedReasons: string[];
162
+ }
163
+ export interface BuildCodaliCandidateReleaseInput {
164
+ inspection: DatasetExportManifestReaderResult;
165
+ artifacts?: readonly CodaliPatchProposalArtifact[];
166
+ repoRoot?: string;
167
+ scope?: CodaliImprovementScope;
168
+ releaseLevel?: CodaliImprovementReleaseLevel;
169
+ dryRun?: boolean;
170
+ runId?: string;
171
+ candidateDate?: string;
172
+ candidateId?: string;
173
+ candidatePath?: string;
174
+ candidateDirectories?: readonly string[];
175
+ outputPath?: string;
176
+ approvedPaths?: readonly string[];
177
+ now?: () => Date;
178
+ dirtyEntries?: readonly CodaliCandidateReleaseDirtyEntry[];
179
+ commandRunner?: CodaliCandidateReleaseCommandRunner;
180
+ }
181
+ export interface BuildCodaliCandidateReleasePlanInput {
182
+ candidateId: string;
183
+ candidatePath?: string;
184
+ candidateDirectories?: readonly string[];
185
+ repoRoot?: string;
186
+ scope?: CodaliImprovementScope;
187
+ releaseLevel?: CodaliImprovementReleaseLevel;
188
+ dryRun?: boolean;
189
+ runId?: string;
190
+ candidateDate?: string;
191
+ now?: () => Date;
192
+ dirtyEntries?: readonly CodaliCandidateReleaseDirtyEntry[];
193
+ commandRunner?: CodaliCandidateReleaseCommandRunner;
194
+ }
195
+ export declare class CodaliCandidateReleaseBuilderError extends Error {
196
+ readonly code: string;
197
+ constructor(code: string, message: string);
198
+ }
199
+ export declare const buildCodaliCandidateRelease: (input: BuildCodaliCandidateReleaseInput) => Promise<CodaliCandidateReleaseBuild>;
200
+ export declare const buildCodaliCandidateReleasePlan: (input: BuildCodaliCandidateReleasePlanInput) => Promise<CodaliCandidateReleaseBuild>;
201
+ //# sourceMappingURL=CandidateReleaseBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CandidateReleaseBuilder.d.ts","sourceRoot":"","sources":["../../src/improvement/CandidateReleaseBuilder.ts"],"names":[],"mappings":"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"}