@exellix/ai-tasks 9.0.6 → 9.1.1

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 (177) hide show
  1. package/CHANGELOG.md +22 -4
  2. package/README.md +5 -5
  3. package/RUNTASK_REQUEST.md +17 -15
  4. package/dist/compile/compileTaskConfiguration.d.ts.map +1 -1
  5. package/dist/compile/compileTaskConfiguration.js +3 -0
  6. package/dist/compile/compileTaskConfiguration.js.map +1 -1
  7. package/dist/core/task-sdk.d.ts.map +1 -1
  8. package/dist/core/task-sdk.js +112 -166
  9. package/dist/core/task-sdk.js.map +1 -1
  10. package/dist/invocation/types.d.ts +1 -1
  11. package/dist/narrix/narrixUnitExecution.js +2 -2
  12. package/dist/narrix/narrixUnitExecution.js.map +1 -1
  13. package/dist/node-execution/buildRequestFromNodePlan.d.ts +4 -0
  14. package/dist/node-execution/buildRequestFromNodePlan.d.ts.map +1 -1
  15. package/dist/node-execution/buildRequestFromNodePlan.js +4 -13
  16. package/dist/node-execution/buildRequestFromNodePlan.js.map +1 -1
  17. package/dist/node-execution/compileProfessionalAnswerRequest.d.ts +2 -0
  18. package/dist/node-execution/compileProfessionalAnswerRequest.d.ts.map +1 -0
  19. package/dist/node-execution/compileProfessionalAnswerRequest.js +4 -0
  20. package/dist/node-execution/compileProfessionalAnswerRequest.js.map +1 -0
  21. package/dist/node-execution/rejectForbiddenWireFields.d.ts +2 -0
  22. package/dist/node-execution/rejectForbiddenWireFields.d.ts.map +1 -1
  23. package/dist/node-execution/rejectForbiddenWireFields.js +42 -7
  24. package/dist/node-execution/rejectForbiddenWireFields.js.map +1 -1
  25. package/dist/node-execution/resolveUnitModelSelection.d.ts.map +1 -1
  26. package/dist/node-execution/resolveUnitModelSelection.js +10 -1
  27. package/dist/node-execution/resolveUnitModelSelection.js.map +1 -1
  28. package/dist/observability/graphExecutionRunLogContract.d.ts +1 -1
  29. package/dist/observability/graphExecutionRunLogContract.js +1 -1
  30. package/dist/post-steps/audit/auditChecklistFuncxEnvelope.d.ts +19 -3
  31. package/dist/post-steps/audit/auditChecklistFuncxEnvelope.d.ts.map +1 -1
  32. package/dist/post-steps/audit/auditChecklistFuncxEnvelope.js +7 -1
  33. package/dist/post-steps/audit/auditChecklistFuncxEnvelope.js.map +1 -1
  34. package/dist/post-steps/audit/loadAuditTemplates.d.ts +2 -55
  35. package/dist/post-steps/audit/loadAuditTemplates.d.ts.map +1 -1
  36. package/dist/post-steps/audit/loadAuditTemplates.js +3 -38
  37. package/dist/post-steps/audit/loadAuditTemplates.js.map +1 -1
  38. package/dist/post-steps/audit/parseAuditFuncxOutput.d.ts +8 -0
  39. package/dist/post-steps/audit/parseAuditFuncxOutput.d.ts.map +1 -0
  40. package/dist/post-steps/audit/parseAuditFuncxOutput.js +62 -0
  41. package/dist/post-steps/audit/parseAuditFuncxOutput.js.map +1 -0
  42. package/dist/post-steps/audit/parseAuditOutput.d.ts +2 -0
  43. package/dist/post-steps/audit/parseAuditOutput.d.ts.map +1 -1
  44. package/dist/post-steps/audit/parseAuditOutput.js +56 -0
  45. package/dist/post-steps/audit/parseAuditOutput.js.map +1 -1
  46. package/dist/post-steps/audit/runAudit.d.ts.map +1 -1
  47. package/dist/post-steps/audit/runAudit.js +53 -113
  48. package/dist/post-steps/audit/runAudit.js.map +1 -1
  49. package/dist/post-steps/audit/runAuditFuncxCall.d.ts +18 -0
  50. package/dist/post-steps/audit/runAuditFuncxCall.d.ts.map +1 -0
  51. package/dist/post-steps/audit/runAuditFuncxCall.js +59 -0
  52. package/dist/post-steps/audit/runAuditFuncxCall.js.map +1 -0
  53. package/dist/synthesis/resolveSourceMaterial.d.ts.map +1 -1
  54. package/dist/synthesis/resolveSourceMaterial.js +14 -0
  55. package/dist/synthesis/resolveSourceMaterial.js.map +1 -1
  56. package/dist/types/task-types.d.ts +4 -3
  57. package/dist/types/task-types.d.ts.map +1 -1
  58. package/dist/utils/bridgeRunSkillGatewayMemory.d.ts.map +1 -1
  59. package/dist/utils/bridgeRunSkillGatewayMemory.js +1 -0
  60. package/dist/utils/bridgeRunSkillGatewayMemory.js.map +1 -1
  61. package/dist/utils/executionMemoryInputRecord.d.ts +12 -0
  62. package/dist/utils/executionMemoryInputRecord.d.ts.map +1 -0
  63. package/dist/utils/executionMemoryInputRecord.js +28 -0
  64. package/dist/utils/executionMemoryInputRecord.js.map +1 -0
  65. package/dist/utils/resolveAiProfileModel.d.ts +1 -1
  66. package/dist/utils/resolveAiProfileModel.d.ts.map +1 -1
  67. package/dist/utils/skillTemplateVariables.d.ts +3 -2
  68. package/dist/utils/skillTemplateVariables.d.ts.map +1 -1
  69. package/dist/utils/skillTemplateVariables.js +3 -2
  70. package/dist/utils/skillTemplateVariables.js.map +1 -1
  71. package/dist/validation/validateProfessionalAnswerContract.d.ts +8 -0
  72. package/dist/validation/validateProfessionalAnswerContract.d.ts.map +1 -0
  73. package/dist/validation/validateProfessionalAnswerContract.js +45 -0
  74. package/dist/validation/validateProfessionalAnswerContract.js.map +1 -0
  75. package/dist/validation/validateRunTaskConfig.d.ts.map +1 -1
  76. package/dist/validation/validateRunTaskConfig.js +2 -0
  77. package/dist/validation/validateRunTaskConfig.js.map +1 -1
  78. package/documenations/record-and-template-variables.md +21 -13
  79. package/documenations/run-task-execution-flow.md +1 -1
  80. package/documenations/schemas/v1/run-task-request.json +1 -1
  81. package/documenations/upstream-feature-requests/README.md +9 -5
  82. package/documenations/upstream-feature-requests/ai-skills-orchestrator-invoke-contract-5.9.md +1 -1
  83. package/documenations/upstream-feature-requests/funcx-4.9.13-open-items.md +62 -0
  84. package/documenations/upstream-feature-requests/funcx-gap-analysis-cr-fr.md +401 -0
  85. package/documenations/upstream-feature-requests/funcx-pre-post-sidekick-actions.md +1 -0
  86. package/documenations/upstream-feature-requests/graph-engine-runtask-contract-alignment-investigation.md +370 -0
  87. package/documenations/upstream-feature-requests/xynthesis-ai-profiles-2.1-import-break.md +2 -2
  88. package/documenations/upstream-feature-requests/xynthesis-openrouter-wire-model-double-prefix-bug.md +1 -1
  89. package/documenations/upstream-feature-requests/xynthesis-orchestrator-invoke-contract-4.2.md +1 -1
  90. package/package.json +14 -17
  91. package/.docs/DOWNSTREAM_ENV.md +0 -42
  92. package/.docs/FEEDBACK_TO_CLIENT_DOWNSTREAM_FIXES.md +0 -64
  93. package/.docs/INTERMEDIATE_STEPS.md +0 -82
  94. package/.docs/activity-structure.md +0 -31
  95. package/.docs/ai-task-ai-scoping-spec.md +0 -338
  96. package/.docs/ai-tasks-model-profile-aliases-7x.md +0 -96
  97. package/.docs/blockers-and-issues.md +0 -346
  98. package/.docs/building-runTask-sdk.md +0 -659
  99. package/.docs/building-skill-execution-orchestrator.md +0 -968
  100. package/.docs/code-used-before/run-task.txt +0 -39
  101. package/.docs/code-used-before/task-executor.ts.old +0 -57
  102. package/.docs/code-used-before/test-run-task.ts.old +0 -42
  103. package/.docs/code-used-before/types.txt +0 -23
  104. package/.docs/env-ready-policy.md +0 -40
  105. package/.docs/flow-io/flow-README.md +0 -76
  106. package/.docs/flow-io/narrix.md +0 -124
  107. package/.docs/flow-io/web-scoping.md +0 -135
  108. package/.docs/flow-io/xynthesis-post.md +0 -154
  109. package/.docs/flow-io/xynthesis-pre.md +0 -181
  110. package/.docs/gap-analysis.md +0 -201
  111. package/.docs/integration-facts-ai-tasks.md +0 -109
  112. package/.docs/investigation/ai-skills.md +0 -170
  113. package/.docs/investigation/external-packages-assignments.md +0 -66
  114. package/.docs/investigation/integration-summary.md +0 -20
  115. package/.docs/investigation/narrix-catalox.md +0 -29
  116. package/.docs/investigation/workplan-close-graph-engine-gaps.md +0 -101
  117. package/.docs/logging-stack.md +0 -30
  118. package/.docs/memory-narrix-adapter-developer-guide.md +0 -402
  119. package/.docs/memory-narrix-adapter-requirements.md +0 -112
  120. package/.docs/narrix-context-consumption-gap.md +0 -184
  121. package/.docs/narrix-context-downstream-report.md +0 -30
  122. package/.docs/narrix-ingest-and-packs-library-spec.md +0 -240
  123. package/.docs/narrix-record-input-current-design.md +0 -48
  124. package/.docs/pacakge.md +0 -48
  125. package/.docs/possible-components/README.md +0 -11
  126. package/.docs/possible-components/integration/README.md +0 -10
  127. package/.docs/possible-components/integration/gaps-when-merging.md +0 -16
  128. package/.docs/possible-components/integration/platform.md +0 -54
  129. package/.docs/possible-components/integration/reintegrate-into-ai-tasks.md +0 -26
  130. package/.docs/possible-components/integration/roadmap-and-checklists.md +0 -54
  131. package/.docs/possible-components/post-component/README.md +0 -18
  132. package/.docs/possible-components/post-component/builder-guide.md +0 -175
  133. package/.docs/possible-components/post-component/gaps-and-artifacts.md +0 -52
  134. package/.docs/possible-components/post-component/handler-audit.md +0 -47
  135. package/.docs/possible-components/post-component/handler-polish.md +0 -41
  136. package/.docs/possible-components/post-component/unified-protocol.md +0 -59
  137. package/.docs/possible-components/pre-component/README.md +0 -22
  138. package/.docs/possible-components/pre-component/builder-guide.md +0 -127
  139. package/.docs/possible-components/pre-component/gaps-and-artifacts.md +0 -35
  140. package/.docs/possible-components/pre-component/handler-ai-scoping.md +0 -45
  141. package/.docs/possible-components/pre-component/handler-narrix-preprocessor.md +0 -49
  142. package/.docs/possible-components/pre-component/handler-narrix-system2.md +0 -35
  143. package/.docs/possible-components/pre-component/handler-synthesized-context.md +0 -65
  144. package/.docs/possible-components/pre-component/handler-web-scope.md +0 -29
  145. package/.docs/possible-components/pre-component/unified-protocol.md +0 -89
  146. package/.docs/prefer-openrouter-routing-policy.md +0 -114
  147. package/.docs/questions-for-ai-skills.md +0 -123
  148. package/.docs/realtime-narrixing-gap-analysis.md +0 -40
  149. package/.docs/realtime-narrixing.md +0 -433
  150. package/.docs/run-context-object.md +0 -32
  151. package/.docs/session-id-usage.md +0 -26
  152. package/.docs/skill-library-spec.md +0 -249
  153. package/.docs/synthesized-context-strategy-spec.md +0 -906
  154. package/.docs/upstream-issue/2026-03-21_woroces-ai-tasks_ISSUE-006_web-scope-question-from-cni-entity.md +0 -46
  155. package/.docs/web-scopper-embed.md +0 -93
  156. package/.docs/xynthesis-wiring-and-io.md +0 -12
  157. package/documenations/activix-feature-request-identity.md +0 -123
  158. package/documenations/bug-report-xynthesis-and-synthesis-call.md +0 -217
  159. package/documenations/feature-request-ai-skills-raw-template-access.md +0 -82
  160. package/documenations/feature-request-athenix-core-directive.md +0 -145
  161. package/documenations/feature-request-athenix-token-extraction.md +0 -124
  162. package/documenations/funcx-upstream-github-issues-draft.md +0 -153
  163. package/documenations/identity-metadata-contract.md +0 -165
  164. package/documenations/run-task-single-run-checklist.md +0 -109
  165. package/documenations/sessions/2026-06-08-subnets-model-resolution/CR-1-no-concrete-wire-in-graph-plans.md +0 -93
  166. package/documenations/sessions/2026-06-08-subnets-model-resolution/CR-2-skillModel-profile-only-at-storage.md +0 -88
  167. package/documenations/sessions/2026-06-08-subnets-model-resolution/CR-3-reject-concrete-models-in-catalog-rows.md +0 -76
  168. package/documenations/sessions/2026-06-08-subnets-model-resolution/FR-1-suggested-profile-in-catalogs.md +0 -96
  169. package/documenations/sessions/2026-06-08-subnets-model-resolution/FR-2-graph-engine-failure-phase-attribution.md +0 -92
  170. package/documenations/sessions/2026-06-08-subnets-model-resolution/INVESTIGATION-original-bug.md +0 -182
  171. package/documenations/sessions/2026-06-08-subnets-model-resolution/PROBLEM.md +0 -236
  172. package/documenations/sessions/2026-06-08-subnets-model-resolution/README.md +0 -11
  173. package/documenations/sessions/2026-06-08-subnets-model-resolution/funcx-test-resolveModel.cheapDefaultWireSlug.test.ts +0 -117
  174. package/documenations/upstream-feature-requests/ai-tasks-wrap-up-after-upstream.md +0 -129
  175. package/documenations/upstream-feedback-request-shape-clarification.md +0 -101
  176. package/documenations/web-context-precedence.md +0 -33
  177. package/documenations/xynthesis-activix-telemetry.md +0 -28
@@ -58,16 +58,22 @@ export function buildAuditMergeFuncxEnvelope(input) {
58
58
  tags.taskId = input.taskId;
59
59
  if (input.agentId)
60
60
  tags.agentId = input.agentId;
61
+ const args = {};
62
+ if (input.customSynthesisGuidelines?.trim()) {
63
+ args.customSynthesisGuidelines = input.customSynthesisGuidelines.trim();
64
+ }
61
65
  return {
62
66
  goal: "Merge the best parts of two candidate outputs into a single improved answer.",
63
67
  input: {
68
+ originalInput: input.originalInput,
69
+ promptContext: input.promptContext,
64
70
  candidateA: input.candidateA,
65
71
  candidateB: input.candidateB,
66
72
  },
67
73
  context: {
68
74
  templateCores: ["analysis"],
69
- task: input.taskDescription,
70
75
  },
76
+ ...(Object.keys(args).length > 0 ? { args } : {}),
71
77
  attribution: {
72
78
  functionId: FUNCX_POST_AUDIT_MERGE_ID,
73
79
  ...(input.jobId ? { runId: input.jobId } : {}),
@@ -1 +1 @@
1
- {"version":3,"file":"auditChecklistFuncxEnvelope.js","sourceRoot":"","sources":["../../../src/post-steps/audit/auditChecklistFuncxEnvelope.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auditChecklistFuncxEnvelope.js","sourceRoot":"","sources":["../../../src/post-steps/audit/auditChecklistFuncxEnvelope.ts"],"names":[],"mappings":"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"}
@@ -1,31 +1,11 @@
1
1
  /**
2
- * Load audit POST step templates from disk. Base path = AUDIT_TEMPLATES_PATH or cwd/templates/post-steps/audit.
2
+ * Load audit POST step feedback-injection template from disk.
3
+ * Base path = AUDIT_TEMPLATES_PATH or cwd/templates/post-steps/audit.
3
4
  */
4
5
  export type AuditTemplates = {
5
- system: string;
6
- user: string;
7
6
  feedbackInjection: string;
8
- synthesis: string;
9
7
  };
10
8
  export declare function loadAuditTemplates(): Promise<AuditTemplates>;
11
- export declare function renderAuditSystem(template: string, data: {
12
- customGuidelines?: string;
13
- }): string;
14
- export declare function renderAuditUser(template: string, data: {
15
- originalInput: string;
16
- promptContext: string;
17
- candidateOutput: string;
18
- mustChecks: {
19
- check: string;
20
- weight: number;
21
- }[];
22
- shouldChecks: {
23
- check: string;
24
- weight: number;
25
- }[];
26
- previousFeedback?: string;
27
- previousCycle?: number;
28
- }): string;
29
9
  export declare function renderFeedbackInjection(template: string, data: {
30
10
  cycle: number;
31
11
  maxCycles: number;
@@ -36,37 +16,4 @@ export declare function renderFeedbackInjection(template: string, data: {
36
16
  }[];
37
17
  overallFeedback: string;
38
18
  }): string;
39
- export declare function renderSynthesis(template: string, data: {
40
- originalInput: string;
41
- promptContext: string;
42
- candidateA: {
43
- cycle: number;
44
- score: number;
45
- output: string;
46
- failedChecks: {
47
- kind: string;
48
- check: string;
49
- feedback: string;
50
- }[];
51
- passedChecks: {
52
- kind: string;
53
- check: string;
54
- }[];
55
- };
56
- candidateB: {
57
- cycle: number;
58
- score: number;
59
- output: string;
60
- failedChecks: {
61
- kind: string;
62
- check: string;
63
- feedback: string;
64
- }[];
65
- passedChecks: {
66
- kind: string;
67
- check: string;
68
- }[];
69
- };
70
- customSynthesisGuidelines?: string;
71
- }): string;
72
19
  //# sourceMappingURL=loadAuditTemplates.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"loadAuditTemplates.d.ts","sourceRoot":"","sources":["../../../src/post-steps/audit/loadAuditTemplates.ts"],"names":[],"mappings":"AAAA;;GAEG;AAWH,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAMF,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,cAAc,CAAC,CA2BlE;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE;IAAE,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAG/F;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE;IACtD,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAChD,YAAY,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAClD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,GAAG,MAAM,CAGT;AAED,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE;IAC9D,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAClE,eAAe,EAAE,MAAM,CAAC;CACzB,GAAG,MAAM,CAGT;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE;IACtD,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAA;SAAE,EAAE,CAAC;QAAC,YAAY,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,EAAE,CAAA;KAAE,CAAC;IACjL,UAAU,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAA;SAAE,EAAE,CAAC;QAAC,YAAY,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,EAAE,CAAA;KAAE,CAAC;IACjL,yBAAyB,CAAC,EAAE,MAAM,CAAC;CACpC,GAAG,MAAM,CAGT"}
1
+ {"version":3,"file":"loadAuditTemplates.d.ts","sourceRoot":"","sources":["../../../src/post-steps/audit/loadAuditTemplates.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,MAAM,MAAM,cAAc,GAAG;IAC3B,iBAAiB,EAAE,MAAM,CAAC;CAC3B,CAAC;AAMF,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,cAAc,CAAC,CASlE;AAED,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE;IAC9D,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAClE,eAAe,EAAE,MAAM,CAAC;CACzB,GAAG,MAAM,CAGT"}
@@ -1,62 +1,27 @@
1
1
  /**
2
- * Load audit POST step templates from disk. Base path = AUDIT_TEMPLATES_PATH or cwd/templates/post-steps/audit.
2
+ * Load audit POST step feedback-injection template from disk.
3
+ * Base path = AUDIT_TEMPLATES_PATH or cwd/templates/post-steps/audit.
3
4
  */
4
5
  import { readFile } from "fs/promises";
5
6
  import { join } from "path";
6
7
  import Handlebars from "handlebars";
7
- const DEFAULT_SYSTEM = `You are a strict quality auditor. Evaluate every check, output structured markdown with "### Checks" and "### Overall feedback" sections.`;
8
- const DEFAULT_USER = `Original input: {{originalInput}}\n\nContext: {{promptContext}}\n\nCandidate: {{candidateOutput}}\n\nMust: {{mustChecks}}\nShould: {{shouldChecks}}`;
9
8
  const DEFAULT_FEEDBACK = `## Audit Feedback (cycle {{cycle}} of {{maxCycles}})\n\n{{overallFeedback}}\n\nFailed: {{failedChecks}}`;
10
- const DEFAULT_SYNTHESIS = `Merge the best of two candidates. Output only the merged task output.`;
11
9
  function getBasePath() {
12
10
  return process.env.AUDIT_TEMPLATES_PATH ?? process.cwd();
13
11
  }
14
12
  export async function loadAuditTemplates() {
15
13
  const base = join(getBasePath(), "templates", "post-steps", "audit");
16
- let system = DEFAULT_SYSTEM;
17
- let user = DEFAULT_USER;
18
14
  let feedbackInjection = DEFAULT_FEEDBACK;
19
- let synthesis = DEFAULT_SYNTHESIS;
20
- try {
21
- system = await readFile(join(base, "system.md"), "utf-8");
22
- }
23
- catch {
24
- /* use default */
25
- }
26
- try {
27
- user = await readFile(join(base, "user.txt"), "utf-8");
28
- }
29
- catch {
30
- /* use default */
31
- }
32
15
  try {
33
16
  feedbackInjection = await readFile(join(base, "feedback-injection.md"), "utf-8");
34
17
  }
35
18
  catch {
36
19
  /* use default */
37
20
  }
38
- try {
39
- synthesis = await readFile(join(base, "synthesis.md"), "utf-8");
40
- }
41
- catch {
42
- /* use default */
43
- }
44
- return { system, user, feedbackInjection, synthesis };
45
- }
46
- export function renderAuditSystem(template, data) {
47
- const t = Handlebars.compile(template);
48
- return t(data);
49
- }
50
- export function renderAuditUser(template, data) {
51
- const t = Handlebars.compile(template);
52
- return t(data);
21
+ return { feedbackInjection };
53
22
  }
54
23
  export function renderFeedbackInjection(template, data) {
55
24
  const t = Handlebars.compile(template);
56
25
  return t(data);
57
26
  }
58
- export function renderSynthesis(template, data) {
59
- const t = Handlebars.compile(template);
60
- return t(data);
61
- }
62
27
  //# sourceMappingURL=loadAuditTemplates.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"loadAuditTemplates.js","sourceRoot":"","sources":["../../../src/post-steps/audit/loadAuditTemplates.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,UAAU,MAAM,YAAY,CAAC;AAEpC,MAAM,cAAc,GAAG,2IAA2I,CAAC;AACnK,MAAM,YAAY,GAAG,qJAAqJ,CAAC;AAC3K,MAAM,gBAAgB,GAAG,yGAAyG,CAAC;AACnI,MAAM,iBAAiB,GAAG,uEAAuE,CAAC;AASlG,SAAS,WAAW;IAClB,OAAO,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;AAC3D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB;IACtC,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,EAAE,WAAW,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;IACrE,IAAI,MAAM,GAAG,cAAc,CAAC;IAC5B,IAAI,IAAI,GAAG,YAAY,CAAC;IACxB,IAAI,iBAAiB,GAAG,gBAAgB,CAAC;IACzC,IAAI,SAAS,GAAG,iBAAiB,CAAC;IAClC,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,OAAO,CAAC,CAAC;IAC5D,CAAC;IAAC,MAAM,CAAC;QACP,iBAAiB;IACnB,CAAC;IACD,IAAI,CAAC;QACH,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,CAAC;IACzD,CAAC;IAAC,MAAM,CAAC;QACP,iBAAiB;IACnB,CAAC;IACD,IAAI,CAAC;QACH,iBAAiB,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,uBAAuB,CAAC,EAAE,OAAO,CAAC,CAAC;IACnF,CAAC;IAAC,MAAM,CAAC;QACP,iBAAiB;IACnB,CAAC;IACD,IAAI,CAAC;QACH,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CAAC;IAClE,CAAC;IAAC,MAAM,CAAC;QACP,iBAAiB;IACnB,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,SAAS,EAAE,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,QAAgB,EAAE,IAAmC;IACrF,MAAM,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACvC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,QAAgB,EAAE,IAQjD;IACC,MAAM,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACvC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,QAAgB,EAAE,IAKzD;IACC,MAAM,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACvC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,QAAgB,EAAE,IAMjD;IACC,MAAM,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACvC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"loadAuditTemplates.js","sourceRoot":"","sources":["../../../src/post-steps/audit/loadAuditTemplates.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,UAAU,MAAM,YAAY,CAAC;AAEpC,MAAM,gBAAgB,GAAG,yGAAyG,CAAC;AAMnI,SAAS,WAAW;IAClB,OAAO,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;AAC3D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB;IACtC,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,EAAE,WAAW,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;IACrE,IAAI,iBAAiB,GAAG,gBAAgB,CAAC;IACzC,IAAI,CAAC;QACH,iBAAiB,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,uBAAuB,CAAC,EAAE,OAAO,CAAC,CAAC;IACnF,CAAC;IAAC,MAAM,CAAC;QACP,iBAAiB;IACnB,CAAC;IACD,OAAO,EAAE,iBAAiB,EAAE,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,QAAgB,EAAE,IAKzD;IACC,MAAM,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACvC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC;AACjB,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Normalize FuncX `post/audit-checklist` run() output to {@link AuditLLMOutput}.
3
+ * Accepts markdown (preferred) or JSON `{ checks, overall_feedback }` from schema validation.
4
+ */
5
+ import type { AuditLLMOutput } from "../../types/task-types.js";
6
+ /** Parse audit checklist output from FuncX `run()` value or markdown text. */
7
+ export declare function parseAuditFuncxOutput(value: unknown): AuditLLMOutput;
8
+ //# sourceMappingURL=parseAuditFuncxOutput.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseAuditFuncxOutput.d.ts","sourceRoot":"","sources":["../../../src/post-steps/audit/parseAuditFuncxOutput.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAoB,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAgClF,8EAA8E;AAC9E,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,cAAc,CAwBpE"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Normalize FuncX `post/audit-checklist` run() output to {@link AuditLLMOutput}.
3
+ * Accepts markdown (preferred) or JSON `{ checks, overall_feedback }` from schema validation.
4
+ */
5
+ import { parseAuditOutputFromMarkdown } from "./parseAuditOutput.js";
6
+ function isRecord(v) {
7
+ return v !== null && typeof v === "object" && !Array.isArray(v);
8
+ }
9
+ function normalizePassed(v) {
10
+ if (typeof v === "boolean")
11
+ return v;
12
+ if (typeof v === "string")
13
+ return v.toLowerCase() === "yes" || v.toLowerCase() === "true";
14
+ return false;
15
+ }
16
+ function parseChecksFromJson(checks) {
17
+ if (!Array.isArray(checks))
18
+ return [];
19
+ const out = [];
20
+ for (const item of checks) {
21
+ if (!isRecord(item))
22
+ continue;
23
+ const check = typeof item.check === "string" ? item.check.trim() : "";
24
+ const kindRaw = typeof item.kind === "string" ? item.kind.toLowerCase() : "should";
25
+ const kind = kindRaw === "must" ? "must" : "should";
26
+ if (!check)
27
+ continue;
28
+ out.push({
29
+ check,
30
+ kind,
31
+ passed: normalizePassed(item.passed),
32
+ feedback: typeof item.feedback === "string" ? item.feedback.trim() : "",
33
+ });
34
+ }
35
+ return out;
36
+ }
37
+ /** Parse audit checklist output from FuncX `run()` value or markdown text. */
38
+ export function parseAuditFuncxOutput(value) {
39
+ if (typeof value === "string") {
40
+ return parseAuditOutputFromMarkdown(value);
41
+ }
42
+ if (!isRecord(value)) {
43
+ return { checks: [], overallFeedback: "" };
44
+ }
45
+ if (typeof value.markdown === "string") {
46
+ return parseAuditOutputFromMarkdown(value.markdown);
47
+ }
48
+ if (typeof value.text === "string") {
49
+ return parseAuditOutputFromMarkdown(value.text);
50
+ }
51
+ const checks = parseChecksFromJson(value.checks);
52
+ const overallFeedback = typeof value.overall_feedback === "string"
53
+ ? value.overall_feedback.trim()
54
+ : typeof value.overallFeedback === "string"
55
+ ? value.overallFeedback.trim()
56
+ : "";
57
+ if (checks.length > 0 || overallFeedback) {
58
+ return { checks, overallFeedback };
59
+ }
60
+ return parseAuditOutputFromMarkdown(JSON.stringify(value, null, 2));
61
+ }
62
+ //# sourceMappingURL=parseAuditFuncxOutput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseAuditFuncxOutput.js","sourceRoot":"","sources":["../../../src/post-steps/audit/parseAuditFuncxOutput.ts"],"names":[],"mappings":"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"}
@@ -8,4 +8,6 @@ import type { AuditLLMOutput } from "../../types/task-types.js";
8
8
  * Expects sections: "### Checks" with blocks of Check/Kind/Passed/Feedback, then "### Overall feedback".
9
9
  */
10
10
  export declare function parseAuditOutputFromMarkdown(text: string): AuditLLMOutput;
11
+ /** Parse FuncX `post/audit-checklist` run() output (markdown or JSON) into {@link AuditLLMOutput}. */
12
+ export declare function parseAuditChecklistOutput(value: unknown): AuditLLMOutput;
11
13
  //# sourceMappingURL=parseAuditOutput.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"parseAuditOutput.d.ts","sourceRoot":"","sources":["../../../src/post-steps/audit/parseAuditOutput.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAoB,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAElF;;;GAGG;AACH,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CA2CzE"}
1
+ {"version":3,"file":"parseAuditOutput.d.ts","sourceRoot":"","sources":["../../../src/post-steps/audit/parseAuditOutput.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAoB,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAElF;;;GAGG;AACH,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CA2CzE;AA+BD,sGAAsG;AACtG,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,GAAG,cAAc,CAwBxE"}
@@ -47,4 +47,60 @@ export function parseAuditOutputFromMarkdown(text) {
47
47
  }
48
48
  return { checks, overallFeedback };
49
49
  }
50
+ function isRecord(v) {
51
+ return v !== null && typeof v === "object" && !Array.isArray(v);
52
+ }
53
+ function normalizePassed(v) {
54
+ if (typeof v === "boolean")
55
+ return v;
56
+ if (typeof v === "string")
57
+ return v.toLowerCase() === "yes" || v.toLowerCase() === "true";
58
+ return false;
59
+ }
60
+ function parseChecksFromJson(checks) {
61
+ if (!Array.isArray(checks))
62
+ return [];
63
+ const out = [];
64
+ for (const item of checks) {
65
+ if (!isRecord(item))
66
+ continue;
67
+ const check = typeof item.check === "string" ? item.check.trim() : "";
68
+ const kindRaw = typeof item.kind === "string" ? item.kind.toLowerCase() : "should";
69
+ const kind = kindRaw === "must" ? "must" : "should";
70
+ if (!check)
71
+ continue;
72
+ out.push({
73
+ check,
74
+ kind,
75
+ passed: normalizePassed(item.passed),
76
+ feedback: typeof item.feedback === "string" ? item.feedback.trim() : "",
77
+ });
78
+ }
79
+ return out;
80
+ }
81
+ /** Parse FuncX `post/audit-checklist` run() output (markdown or JSON) into {@link AuditLLMOutput}. */
82
+ export function parseAuditChecklistOutput(value) {
83
+ if (typeof value === "string") {
84
+ return parseAuditOutputFromMarkdown(value);
85
+ }
86
+ if (!isRecord(value)) {
87
+ return { checks: [], overallFeedback: "" };
88
+ }
89
+ if (typeof value.markdown === "string") {
90
+ return parseAuditOutputFromMarkdown(value.markdown);
91
+ }
92
+ if (typeof value.text === "string") {
93
+ return parseAuditOutputFromMarkdown(value.text);
94
+ }
95
+ const checks = parseChecksFromJson(value.checks);
96
+ const overallFeedback = typeof value.overall_feedback === "string"
97
+ ? value.overall_feedback.trim()
98
+ : typeof value.overallFeedback === "string"
99
+ ? value.overallFeedback.trim()
100
+ : "";
101
+ if (checks.length > 0 || overallFeedback) {
102
+ return { checks, overallFeedback };
103
+ }
104
+ return parseAuditOutputFromMarkdown(JSON.stringify(value, null, 2));
105
+ }
50
106
  //# sourceMappingURL=parseAuditOutput.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"parseAuditOutput.js","sourceRoot":"","sources":["../../../src/post-steps/audit/parseAuditOutput.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH;;;GAGG;AACH,MAAM,UAAU,4BAA4B,CAAC,IAAY;IACvD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,MAAM,MAAM,GAAuB,EAAE,CAAC;IACtC,IAAI,eAAe,GAAG,EAAE,CAAC;IAEzB,MAAM,YAAY,GAAG,qDAAqD,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACzF,IAAI,YAAY,EAAE,CAAC;QACjB,eAAe,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC3C,CAAC;IAED,MAAM,aAAa,GAAG,2CAA2C,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAChF,IAAI,aAAa,EAAE,CAAC;QAClB,MAAM,KAAK,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,UAAU,GAAG,4KAA4K,CAAC;QAChM,IAAI,CAAyB,CAAC;QAC9B,OAAO,CAAC,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YAC7C,MAAM,CAAC,IAAI,CAAC;gBACV,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;gBAClB,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAuB;gBAC7C,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,KAAK;gBACpC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;aACtB,CAAC,CAAC;QACL,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,MAAM,cAAc,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC5C,KAAK,MAAM,CAAC,IAAI,cAAc,EAAE,CAAC;gBAC/B,MAAM,UAAU,GAAG,2BAA2B,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACvD,MAAM,SAAS,GAAG,gCAAgC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC3D,MAAM,WAAW,GAAG,6BAA6B,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC1D,MAAM,aAAa,GAAG,+BAA+B,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC9D,IAAI,UAAU,IAAI,SAAS,EAAE,CAAC;oBAC5B,MAAM,CAAC,IAAI,CAAC;wBACV,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;wBAC3B,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,EAAuB;wBACrD,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK;wBACpE,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE;qBACvD,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC;AACrC,CAAC"}
1
+ {"version":3,"file":"parseAuditOutput.js","sourceRoot":"","sources":["../../../src/post-steps/audit/parseAuditOutput.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"runAudit.d.ts","sourceRoot":"","sources":["../../../src/post-steps/audit/runAudit.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,KAAK,EACV,WAAW,EAEX,qBAAqB,EAErB,gBAAgB,EACjB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAkB7E,MAAM,MAAM,uBAAuB,CAAC,OAAO,GAAG,GAAG,IAAI;IACnD,OAAO,EAAE,cAAc,CAAC;IACxB,UAAU,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;IACrC,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,WAAW,CAAC;IACpB,SAAS,EAAE,CAAC,eAAe,EAAE,MAAM,KAAK,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;IAC1E,iEAAiE;IACjE,cAAc,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAAC;CAC7C,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,qBAAqB,CAAC;IAChC,iBAAiB,EAAE,gBAAgB,EAAE,CAAC;CACvC,CAAC;AA2CF,wBAAsB,gBAAgB,CAAC,OAAO,GAAG,GAAG,EAClD,GAAG,EAAE,uBAAuB,CAAC,OAAO,CAAC,GACpC,OAAO,CAAC,sBAAsB,CAAC,CAuajC"}
1
+ {"version":3,"file":"runAudit.d.ts","sourceRoot":"","sources":["../../../src/post-steps/audit/runAudit.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,KAAK,EACV,WAAW,EAEX,qBAAqB,EAErB,gBAAgB,EACjB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAe7E,MAAM,MAAM,uBAAuB,CAAC,OAAO,GAAG,GAAG,IAAI;IACnD,OAAO,EAAE,cAAc,CAAC;IACxB,UAAU,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;IACrC,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,WAAW,CAAC;IACpB,SAAS,EAAE,CAAC,eAAe,EAAE,MAAM,KAAK,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;IAC1E,iEAAiE;IACjE,cAAc,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAAC;CAC7C,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,qBAAqB,CAAC;IAChC,iBAAiB,EAAE,gBAAgB,EAAE,CAAC;CACvC,CAAC;AA2CF,wBAAsB,gBAAgB,CAAC,OAAO,GAAG,GAAG,EAClD,GAAG,EAAE,uBAAuB,CAAC,OAAO,CAAC,GACpC,OAAO,CAAC,sBAAsB,CAAC,CAmXjC"}
@@ -2,11 +2,9 @@
2
2
  * Audit POST step: quality-gate loop with re-runs and optional synthesis.
3
3
  */
4
4
  import { llmCallEnvPrefix, resolveLlmCall, } from "../resolvePostStepConfig.js";
5
- import { loadAuditTemplates, renderAuditSystem, renderAuditUser, renderFeedbackInjection, renderSynthesis } from "./loadAuditTemplates.js";
6
- import { parseAuditOutputFromMarkdown } from "./parseAuditOutput.js";
7
- import { runAuditCall } from "./runAuditCall.js";
8
- import { runPostStepLlmCall } from "../../internal/runPostStepLlmCall.js";
9
- import { buildXynthesisWorkScopeIdentity } from "../../internal/buildXynthesisWorkScopeIdentity.js";
5
+ import { loadAuditTemplates, renderFeedbackInjection } from "./loadAuditTemplates.js";
6
+ import { parseAuditChecklistOutput } from "./parseAuditOutput.js";
7
+ import { runAuditChecklistFuncxCall, runAuditMergeFuncxCall } from "./runAuditFuncxCall.js";
10
8
  import { createNxCache } from "nx-cache";
11
9
  import { createHash } from "crypto";
12
10
  import { getPostActionModelFromSlots } from "../../utils/routeModelConfigSlots.js";
@@ -81,65 +79,28 @@ export async function runAuditPostStep(ctx) {
81
79
  // pushed here. Surfaced on `metadata.llmCalls` (see end of function). Outside trace mode the array
82
80
  // remains empty and is omitted from metadata.
83
81
  const llmCalls = [];
84
- const observationSink = traceCollector
85
- ? (obs) => {
86
- llmCalls.push(obs);
87
- }
88
- : undefined;
89
82
  let currentOutput = typeof mainResult.rawText === "string"
90
83
  ? mainResult.rawText
91
84
  : JSON.stringify(mainResult.parsed ?? mainResult.rawText ?? "", null, 2);
92
85
  const originalInputStr = typeof request.input === "string" ? request.input : JSON.stringify(request.input ?? {}, null, 2);
93
- const baseTraceMeta = () => ({
94
- jobId: request.jobId,
95
- taskId: request.taskId,
96
- skillKey: request.skillKey,
97
- phase: "audit",
98
- postStepType: "audit",
99
- });
100
- const workScopeIdentity = buildXynthesisWorkScopeIdentity({
101
- jobId: request.jobId,
102
- taskId: request.taskId,
103
- agentId: request.agentId,
104
- graphId: request.graphId,
105
- nodeId: request.nodeId,
106
- prevNodeId: request.prevNodeId,
107
- coreSkillId: request.coreSkillId,
108
- masterSkillId: request.masterSkillId,
109
- identity: request.identity,
110
- });
111
- const makeTraceTask = (opts) => ({
112
- taskType: "post-execution",
113
- details: opts.details,
114
- modelUsed: opts.modelUsed,
115
- metadata: {
116
- ...baseTraceMeta(),
117
- step: { phase: "post", type: "audit", stepId: opts.stepId },
118
- },
119
- });
120
86
  const callAudit = async (params) => {
121
- const { systemPrompt, userPrompt, llmCallOverride, stepId, stage } = params;
87
+ const { funcxChecklistInput, llmCallOverride, stepId } = params;
122
88
  const effective = { ...auditLlmCall, ...(llmCallOverride ?? {}) };
123
- return runAuditCall({
124
- systemPrompt,
125
- userPrompt,
126
- llmCall: effective,
89
+ const { text } = await runAuditChecklistFuncxCall({
90
+ originalInput: funcxChecklistInput.originalInput,
91
+ promptContext: funcxChecklistInput.promptContext,
92
+ candidateOutput: funcxChecklistInput.candidateOutput,
93
+ mustChecks,
94
+ shouldChecks,
95
+ previousFeedback: funcxChecklistInput.previousFeedback,
96
+ previousCycle: funcxChecklistInput.previousCycle,
97
+ customAuditGuidelines: config.customAuditGuidelines,
127
98
  jobId: postStepJobId,
128
99
  taskId: request.taskId,
129
100
  agentId: "audit-evaluator",
130
- traceCollector: traceCollector ?? undefined,
131
- traceTask: traceCollector
132
- ? makeTraceTask({
133
- stepId,
134
- details: "audit evaluator call",
135
- modelUsed: effective.model ?? null,
136
- })
137
- : undefined,
138
- observationSink,
139
- stage: stage ?? "post-audit",
140
- stepId,
141
- workScopeIdentity,
142
- });
101
+ }, effective);
102
+ void stepId;
103
+ return text;
143
104
  };
144
105
  let auditCallFailures = 0;
145
106
  /** Prompt context MAIN used for `currentOutput` on this audit cycle (matches `reRunMain` override after prior failures). */
@@ -163,18 +124,13 @@ export async function runAuditPostStep(ctx) {
163
124
  else {
164
125
  rawAuditText = await callAudit({
165
126
  stepId: `audit-evaluator-cycle-${cycle}`,
166
- systemPrompt: renderAuditSystem(templates.system, {
167
- customGuidelines: config.customAuditGuidelines,
168
- }),
169
- userPrompt: renderAuditUser(templates.user, {
127
+ funcxChecklistInput: {
170
128
  originalInput: originalInputStr,
171
129
  promptContext: mainContextForEvaluator,
172
130
  candidateOutput: currentOutput,
173
- mustChecks,
174
- shouldChecks,
175
131
  previousFeedback: cycle > 1 ? auditResults[auditResults.length - 1]?.overallFeedback : undefined,
176
132
  previousCycle: cycle > 1 ? cycle - 1 : undefined,
177
- }),
133
+ },
178
134
  });
179
135
  auditCache.write(cacheKey, rawAuditText, { ttlMs: 300_000 });
180
136
  }
@@ -182,18 +138,13 @@ export async function runAuditPostStep(ctx) {
182
138
  else {
183
139
  rawAuditText = await callAudit({
184
140
  stepId: `audit-evaluator-cycle-${cycle}`,
185
- systemPrompt: renderAuditSystem(templates.system, {
186
- customGuidelines: config.customAuditGuidelines,
187
- }),
188
- userPrompt: renderAuditUser(templates.user, {
141
+ funcxChecklistInput: {
189
142
  originalInput: originalInputStr,
190
143
  promptContext: mainContextForEvaluator,
191
144
  candidateOutput: currentOutput,
192
- mustChecks,
193
- shouldChecks,
194
145
  previousFeedback: cycle > 1 ? auditResults[auditResults.length - 1]?.overallFeedback : undefined,
195
146
  previousCycle: cycle > 1 ? cycle - 1 : undefined,
196
- }),
147
+ },
197
148
  });
198
149
  }
199
150
  }
@@ -227,7 +178,7 @@ export async function runAuditPostStep(ctx) {
227
178
  }
228
179
  let parsed;
229
180
  try {
230
- parsed = parseAuditOutputFromMarkdown(rawAuditText);
181
+ parsed = parseAuditChecklistOutput(rawAuditText);
231
182
  }
232
183
  catch {
233
184
  parsed = { checks: [], overallFeedback: "Parse failed." };
@@ -278,50 +229,42 @@ export async function runAuditPostStep(ctx) {
278
229
  if (selectionStrategy === "synthesis" && candidates.length >= 2) {
279
230
  const sorted = [...candidates].sort((a, b) => b.weightedScore - a.weightedScore);
280
231
  const [a, b] = sorted.slice(0, 2);
281
- const synthesisPrompt = renderSynthesis(templates.synthesis, {
282
- originalInput: originalInputStr,
283
- promptContext: contextMarkdown,
284
- candidateA: {
285
- cycle: a.cycle,
286
- score: a.weightedScore,
287
- output: a.output,
288
- failedChecks: a.auditResult.checks.filter((c) => !c.passed).map((c) => ({ kind: c.kind, check: c.check, feedback: c.feedback })),
289
- passedChecks: a.auditResult.checks.filter((c) => c.passed).map((c) => ({ kind: c.kind, check: c.check })),
290
- },
291
- candidateB: {
292
- cycle: b.cycle,
293
- score: b.weightedScore,
294
- output: b.output,
295
- failedChecks: b.auditResult.checks.filter((c) => !c.passed).map((c) => ({ kind: c.kind, check: c.check, feedback: c.feedback })),
296
- passedChecks: b.auditResult.checks.filter((c) => c.passed).map((c) => ({ kind: c.kind, check: c.check })),
297
- },
298
- customSynthesisGuidelines: config.customSynthesisGuidelines,
299
- });
232
+ const candidateAEnvelope = {
233
+ cycle: a.cycle,
234
+ score: a.weightedScore,
235
+ output: a.output,
236
+ failedChecks: a.auditResult.checks
237
+ .filter((c) => !c.passed)
238
+ .map((c) => ({ kind: c.kind, check: c.check, feedback: c.feedback })),
239
+ passedChecks: a.auditResult.checks
240
+ .filter((c) => c.passed)
241
+ .map((c) => ({ kind: c.kind, check: c.check })),
242
+ };
243
+ const candidateBEnvelope = {
244
+ cycle: b.cycle,
245
+ score: b.weightedScore,
246
+ output: b.output,
247
+ failedChecks: b.auditResult.checks
248
+ .filter((c) => !c.passed)
249
+ .map((c) => ({ kind: c.kind, check: c.check, feedback: c.feedback })),
250
+ passedChecks: b.auditResult.checks
251
+ .filter((c) => c.passed)
252
+ .map((c) => ({ kind: c.kind, check: c.check })),
253
+ };
300
254
  let synthesizedOutput;
301
255
  let mergeFailed = false;
302
256
  let mergeError = null;
303
257
  try {
304
- const { text } = await runPostStepLlmCall({
305
- systemPrompt: synthesisPrompt,
306
- userPrompt: "\n",
307
- llmCall: synthLlmCall,
308
- stage: "post-audit-merge",
309
- stepId: "audit-synthesis-merge",
258
+ synthesizedOutput = await runAuditMergeFuncxCall({
259
+ originalInput: originalInputStr,
260
+ promptContext: contextMarkdown,
261
+ candidateA: candidateAEnvelope,
262
+ candidateB: candidateBEnvelope,
263
+ customSynthesisGuidelines: config.customSynthesisGuidelines,
310
264
  jobId: postStepJobId,
311
265
  taskId: request.taskId,
312
266
  agentId: "audit-synthesis-merge",
313
- workScopeIdentity,
314
- traceCollector,
315
- traceTask: traceCollector
316
- ? makeTraceTask({
317
- stepId: "audit-synthesis-merge",
318
- details: "audit synthesis merge",
319
- modelUsed: synthLlmCall.model ?? null,
320
- })
321
- : undefined,
322
- observationSink,
323
- });
324
- synthesizedOutput = text.trim();
267
+ }, synthLlmCall);
325
268
  }
326
269
  catch (err) {
327
270
  // Previously the merge failure was silently swallowed; now we still fall back to the best
@@ -343,16 +286,13 @@ export async function runAuditPostStep(ctx) {
343
286
  }
344
287
  const synthAuditText = await callAudit({
345
288
  stepId: "audit-evaluator-synth-candidate",
346
- systemPrompt: renderAuditSystem(templates.system, { customGuidelines: config.customAuditGuidelines }),
347
- userPrompt: renderAuditUser(templates.user, {
289
+ funcxChecklistInput: {
348
290
  originalInput: originalInputStr,
349
291
  promptContext: contextMarkdown,
350
292
  candidateOutput: synthesizedOutput,
351
- mustChecks,
352
- shouldChecks,
353
- }),
293
+ },
354
294
  });
355
- const synthParsed = parseAuditOutputFromMarkdown(synthAuditText);
295
+ const synthParsed = parseAuditChecklistOutput(synthAuditText);
356
296
  const synthScore = computeWeightedScore(synthParsed.checks, gateway);
357
297
  const synthResult = { ...synthParsed, weightedScore: synthScore };
358
298
  auditResults.push(synthResult);