@exellix/ai-tasks 7.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +3 -0
- package/.metadata/instructions-builders/create-expected-output-instructions.md +195 -0
- package/.metadata/readme.md +48 -0
- package/.metadata/shared/audit.md +29 -0
- package/.metadata/skills/professional-answer +32 -0
- package/.metadata/skills/professional-answer.compressed.md +11 -0
- package/.metadata/skills/professional-answer.instructions +33 -0
- package/.metadata/skills/professional-answer.instructions.md +33 -0
- package/.metadata/skills/professional-answer.l2.md +28 -0
- package/.metadata/skills/professional-answer.md +32 -0
- package/.metadata/skills/professional-answer.prompt +1 -0
- package/.metadata/skills/professional-answer.prompt.md +1 -0
- package/.metadata/skills/professional-decision.md +26 -0
- package/BREAKING-CHANGES.md +43 -0
- package/CHANGELOG.md +147 -0
- package/README.md +2497 -0
- package/RUNTASK_REQUEST.md +369 -0
- package/dist/activix/activixClient.d.ts +6 -0
- package/dist/activix/activixClient.d.ts.map +1 -0
- package/dist/activix/activixClient.js +131 -0
- package/dist/activix/activixClient.js.map +1 -0
- package/dist/activix/getTaskActivities.d.ts +10 -0
- package/dist/activix/getTaskActivities.d.ts.map +1 -0
- package/dist/activix/getTaskActivities.js +17 -0
- package/dist/activix/getTaskActivities.js.map +1 -0
- package/dist/activix/phaseTracking.d.ts +17 -0
- package/dist/activix/phaseTracking.d.ts.map +1 -0
- package/dist/activix/phaseTracking.js +85 -0
- package/dist/activix/phaseTracking.js.map +1 -0
- package/dist/aiScoping/index.d.ts +6 -0
- package/dist/aiScoping/index.d.ts.map +1 -0
- package/dist/aiScoping/index.js +4 -0
- package/dist/aiScoping/index.js.map +1 -0
- package/dist/aiScoping/runAiScoping.d.ts +36 -0
- package/dist/aiScoping/runAiScoping.d.ts.map +1 -0
- package/dist/aiScoping/runAiScoping.js +100 -0
- package/dist/aiScoping/runAiScoping.js.map +1 -0
- package/dist/aiScoping/runScopingCall.d.ts +23 -0
- package/dist/aiScoping/runScopingCall.d.ts.map +1 -0
- package/dist/aiScoping/runScopingCall.js +50 -0
- package/dist/aiScoping/runScopingCall.js.map +1 -0
- package/dist/aiScoping/validateAiScoping.d.ts +7 -0
- package/dist/aiScoping/validateAiScoping.d.ts.map +1 -0
- package/dist/aiScoping/validateAiScoping.js +33 -0
- package/dist/aiScoping/validateAiScoping.js.map +1 -0
- package/dist/aiSkillsUpstreamExports.d.ts +13 -0
- package/dist/aiSkillsUpstreamExports.d.ts.map +1 -0
- package/dist/aiSkillsUpstreamExports.js +12 -0
- package/dist/aiSkillsUpstreamExports.js.map +1 -0
- package/dist/analysis/analyzeRunTaskRequest.d.ts +29 -0
- package/dist/analysis/analyzeRunTaskRequest.d.ts.map +1 -0
- package/dist/analysis/analyzeRunTaskRequest.js +85 -0
- package/dist/analysis/analyzeRunTaskRequest.js.map +1 -0
- package/dist/analysis/index.d.ts +3 -0
- package/dist/analysis/index.d.ts.map +1 -0
- package/dist/analysis/index.js +2 -0
- package/dist/analysis/index.js.map +1 -0
- package/dist/builders/task-request-builder.d.ts +310 -0
- package/dist/builders/task-request-builder.d.ts.map +1 -0
- package/dist/builders/task-request-builder.js +581 -0
- package/dist/builders/task-request-builder.js.map +1 -0
- package/dist/compile/compileTaskConfiguration.d.ts +15 -0
- package/dist/compile/compileTaskConfiguration.d.ts.map +1 -0
- package/dist/compile/compileTaskConfiguration.js +184 -0
- package/dist/compile/compileTaskConfiguration.js.map +1 -0
- package/dist/compile/index.d.ts +2 -0
- package/dist/compile/index.d.ts.map +1 -0
- package/dist/compile/index.js +2 -0
- package/dist/compile/index.js.map +1 -0
- package/dist/core/task-sdk.d.ts +36 -0
- package/dist/core/task-sdk.d.ts.map +1 -0
- package/dist/core/task-sdk.js +2432 -0
- package/dist/core/task-sdk.js.map +1 -0
- package/dist/errors/smartInputValidationError.d.ts +39 -0
- package/dist/errors/smartInputValidationError.d.ts.map +1 -0
- package/dist/errors/smartInputValidationError.js +97 -0
- package/dist/errors/smartInputValidationError.js.map +1 -0
- package/dist/errors/taskConfigurationCompileError.d.ts +16 -0
- package/dist/errors/taskConfigurationCompileError.d.ts.map +1 -0
- package/dist/errors/taskConfigurationCompileError.js +20 -0
- package/dist/errors/taskConfigurationCompileError.js.map +1 -0
- package/dist/execution-strategies/applyExecutionStrategyOutputs.d.ts +17 -0
- package/dist/execution-strategies/applyExecutionStrategyOutputs.d.ts.map +1 -0
- package/dist/execution-strategies/applyExecutionStrategyOutputs.js +63 -0
- package/dist/execution-strategies/applyExecutionStrategyOutputs.js.map +1 -0
- package/dist/execution-strategies/constants.d.ts +14 -0
- package/dist/execution-strategies/constants.d.ts.map +1 -0
- package/dist/execution-strategies/constants.js +13 -0
- package/dist/execution-strategies/constants.js.map +1 -0
- package/dist/execution-strategies/executionStrategyCatalogMetadata.d.ts +9 -0
- package/dist/execution-strategies/executionStrategyCatalogMetadata.d.ts.map +1 -0
- package/dist/execution-strategies/executionStrategyCatalogMetadata.js +37 -0
- package/dist/execution-strategies/executionStrategyCatalogMetadata.js.map +1 -0
- package/dist/execution-strategies/genericExecutionFuncxEnvelope.d.ts +94 -0
- package/dist/execution-strategies/genericExecutionFuncxEnvelope.d.ts.map +1 -0
- package/dist/execution-strategies/genericExecutionFuncxEnvelope.js +306 -0
- package/dist/execution-strategies/genericExecutionFuncxEnvelope.js.map +1 -0
- package/dist/execution-strategies/resolveExecutionStrategies.d.ts +14 -0
- package/dist/execution-strategies/resolveExecutionStrategies.d.ts.map +1 -0
- package/dist/execution-strategies/resolveExecutionStrategies.js +108 -0
- package/dist/execution-strategies/resolveExecutionStrategies.js.map +1 -0
- package/dist/execution-strategies/runFuncxExecutionStrategy.d.ts +37 -0
- package/dist/execution-strategies/runFuncxExecutionStrategy.d.ts.map +1 -0
- package/dist/execution-strategies/runFuncxExecutionStrategy.js +72 -0
- package/dist/execution-strategies/runFuncxExecutionStrategy.js.map +1 -0
- package/dist/index.d.ts +99 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +106 -0
- package/dist/index.js.map +1 -0
- package/dist/internal/resolveLlmCallForXynthesis.d.ts +52 -0
- package/dist/internal/resolveLlmCallForXynthesis.d.ts.map +1 -0
- package/dist/internal/resolveLlmCallForXynthesis.js +81 -0
- package/dist/internal/resolveLlmCallForXynthesis.js.map +1 -0
- package/dist/internal/resolveRunTaskRuntimeKnobs.d.ts +19 -0
- package/dist/internal/resolveRunTaskRuntimeKnobs.d.ts.map +1 -0
- package/dist/internal/resolveRunTaskRuntimeKnobs.js +52 -0
- package/dist/internal/resolveRunTaskRuntimeKnobs.js.map +1 -0
- package/dist/internal/runPostStepLlmCall.d.ts +52 -0
- package/dist/internal/runPostStepLlmCall.d.ts.map +1 -0
- package/dist/internal/runPostStepLlmCall.js +170 -0
- package/dist/internal/runPostStepLlmCall.js.map +1 -0
- package/dist/localTasks/collectEvidence.d.ts +3 -0
- package/dist/localTasks/collectEvidence.d.ts.map +1 -0
- package/dist/localTasks/collectEvidence.js +364 -0
- package/dist/localTasks/collectEvidence.js.map +1 -0
- package/dist/localTasks/decideWebScope.d.ts +3 -0
- package/dist/localTasks/decideWebScope.d.ts.map +1 -0
- package/dist/localTasks/decideWebScope.js +56 -0
- package/dist/localTasks/decideWebScope.js.map +1 -0
- package/dist/localTasks/index.d.ts +5 -0
- package/dist/localTasks/index.d.ts.map +1 -0
- package/dist/localTasks/index.js +19 -0
- package/dist/localTasks/index.js.map +1 -0
- package/dist/localTasks/narrixAssetPlayground.d.ts +13 -0
- package/dist/localTasks/narrixAssetPlayground.d.ts.map +1 -0
- package/dist/localTasks/narrixAssetPlayground.js +161 -0
- package/dist/localTasks/narrixAssetPlayground.js.map +1 -0
- package/dist/localTasks/narrixSubnetPlayground.d.ts +14 -0
- package/dist/localTasks/narrixSubnetPlayground.d.ts.map +1 -0
- package/dist/localTasks/narrixSubnetPlayground.js +168 -0
- package/dist/localTasks/narrixSubnetPlayground.js.map +1 -0
- package/dist/localTasks/narrixVulnGroupPlayground.d.ts +13 -0
- package/dist/localTasks/narrixVulnGroupPlayground.d.ts.map +1 -0
- package/dist/localTasks/narrixVulnGroupPlayground.js +161 -0
- package/dist/localTasks/narrixVulnGroupPlayground.js.map +1 -0
- package/dist/localTasks/narrixVulnInstancePlayground.d.ts +13 -0
- package/dist/localTasks/narrixVulnInstancePlayground.d.ts.map +1 -0
- package/dist/localTasks/narrixVulnInstancePlayground.js +165 -0
- package/dist/localTasks/narrixVulnInstancePlayground.js.map +1 -0
- package/dist/localTasks/nodeCallExport.d.ts +6 -0
- package/dist/localTasks/nodeCallExport.d.ts.map +1 -0
- package/dist/localTasks/nodeCallExport.js +99 -0
- package/dist/localTasks/nodeCallExport.js.map +1 -0
- package/dist/localTasks/nodeCallExportBatch.d.ts +3 -0
- package/dist/localTasks/nodeCallExportBatch.d.ts.map +1 -0
- package/dist/localTasks/nodeCallExportBatch.js +52 -0
- package/dist/localTasks/nodeCallExportBatch.js.map +1 -0
- package/dist/localTasks/normalizeNarrixResult.d.ts +3 -0
- package/dist/localTasks/normalizeNarrixResult.d.ts.map +1 -0
- package/dist/localTasks/normalizeNarrixResult.js +106 -0
- package/dist/localTasks/normalizeNarrixResult.js.map +1 -0
- package/dist/localTasks/registry.d.ts +4 -0
- package/dist/localTasks/registry.d.ts.map +1 -0
- package/dist/localTasks/registry.js +8 -0
- package/dist/localTasks/registry.js.map +1 -0
- package/dist/localTasks/types.d.ts +28 -0
- package/dist/localTasks/types.d.ts.map +1 -0
- package/dist/localTasks/types.js +2 -0
- package/dist/localTasks/types.js.map +1 -0
- package/dist/localTasks/validateInput.d.ts +3 -0
- package/dist/localTasks/validateInput.d.ts.map +1 -0
- package/dist/localTasks/validateInput.js +66 -0
- package/dist/localTasks/validateInput.js.map +1 -0
- package/dist/methods/convenience-methods.d.ts +45 -0
- package/dist/methods/convenience-methods.d.ts.map +1 -0
- package/dist/methods/convenience-methods.js +39 -0
- package/dist/methods/convenience-methods.js.map +1 -0
- package/dist/narrix/applyNarrixScope.d.ts +10 -0
- package/dist/narrix/applyNarrixScope.d.ts.map +1 -0
- package/dist/narrix/applyNarrixScope.js +69 -0
- package/dist/narrix/applyNarrixScope.js.map +1 -0
- package/dist/narrix/buildNarrixAttachment.d.ts +9 -0
- package/dist/narrix/buildNarrixAttachment.d.ts.map +1 -0
- package/dist/narrix/buildNarrixAttachment.js +29 -0
- package/dist/narrix/buildNarrixAttachment.js.map +1 -0
- package/dist/narrix/buildWebScopeScopeInput.d.ts +39 -0
- package/dist/narrix/buildWebScopeScopeInput.d.ts.map +1 -0
- package/dist/narrix/buildWebScopeScopeInput.js +193 -0
- package/dist/narrix/buildWebScopeScopeInput.js.map +1 -0
- package/dist/narrix/flags.d.ts +4 -0
- package/dist/narrix/flags.d.ts.map +1 -0
- package/dist/narrix/flags.js +4 -0
- package/dist/narrix/flags.js.map +1 -0
- package/dist/narrix/index.d.ts +11 -0
- package/dist/narrix/index.d.ts.map +1 -0
- package/dist/narrix/index.js +14 -0
- package/dist/narrix/index.js.map +1 -0
- package/dist/narrix/narrixClient.d.ts +9 -0
- package/dist/narrix/narrixClient.d.ts.map +1 -0
- package/dist/narrix/narrixClient.js +46 -0
- package/dist/narrix/narrixClient.js.map +1 -0
- package/dist/narrix/narrixContextMarkdown.d.ts +15 -0
- package/dist/narrix/narrixContextMarkdown.d.ts.map +1 -0
- package/dist/narrix/narrixContextMarkdown.js +98 -0
- package/dist/narrix/narrixContextMarkdown.js.map +1 -0
- package/dist/narrix/narrixRunnerModule.d.ts +11 -0
- package/dist/narrix/narrixRunnerModule.d.ts.map +1 -0
- package/dist/narrix/narrixRunnerModule.js +17 -0
- package/dist/narrix/narrixRunnerModule.js.map +1 -0
- package/dist/narrix/runNarrixForChat.d.ts +3 -0
- package/dist/narrix/runNarrixForChat.d.ts.map +1 -0
- package/dist/narrix/runNarrixForChat.js +51 -0
- package/dist/narrix/runNarrixForChat.js.map +1 -0
- package/dist/narrix/runNarrixForDocs.d.ts +3 -0
- package/dist/narrix/runNarrixForDocs.d.ts.map +1 -0
- package/dist/narrix/runNarrixForDocs.js +50 -0
- package/dist/narrix/runNarrixForDocs.js.map +1 -0
- package/dist/narrix/runNarrixForRecord.d.ts +3 -0
- package/dist/narrix/runNarrixForRecord.d.ts.map +1 -0
- package/dist/narrix/runNarrixForRecord.js +47 -0
- package/dist/narrix/runNarrixForRecord.js.map +1 -0
- package/dist/narrix/runNarrixForText.d.ts +3 -0
- package/dist/narrix/runNarrixForText.d.ts.map +1 -0
- package/dist/narrix/runNarrixForText.js +49 -0
- package/dist/narrix/runNarrixForText.js.map +1 -0
- package/dist/narrix/runnerDispatch.d.ts +12 -0
- package/dist/narrix/runnerDispatch.d.ts.map +1 -0
- package/dist/narrix/runnerDispatch.js +19 -0
- package/dist/narrix/runnerDispatch.js.map +1 -0
- package/dist/narrix/seedBundleRouting.d.ts +15 -0
- package/dist/narrix/seedBundleRouting.d.ts.map +1 -0
- package/dist/narrix/seedBundleRouting.js +46 -0
- package/dist/narrix/seedBundleRouting.js.map +1 -0
- package/dist/narrix/task.d.ts +4 -0
- package/dist/narrix/task.d.ts.map +1 -0
- package/dist/narrix/task.js +143 -0
- package/dist/narrix/task.js.map +1 -0
- package/dist/narrix/types.d.ts +104 -0
- package/dist/narrix/types.d.ts.map +1 -0
- package/dist/narrix/types.js +3 -0
- package/dist/narrix/types.js.map +1 -0
- package/dist/narrix/webContextMarkdown.d.ts +54 -0
- package/dist/narrix/webContextMarkdown.d.ts.map +1 -0
- package/dist/narrix/webContextMarkdown.js +206 -0
- package/dist/narrix/webContextMarkdown.js.map +1 -0
- package/dist/narrix/webScoper.d.ts +43 -0
- package/dist/narrix/webScoper.d.ts.map +1 -0
- package/dist/narrix/webScoper.js +144 -0
- package/dist/narrix/webScoper.js.map +1 -0
- package/dist/observability/debugTrace.d.ts +31 -0
- package/dist/observability/debugTrace.d.ts.map +1 -0
- package/dist/observability/debugTrace.js +117 -0
- package/dist/observability/debugTrace.js.map +1 -0
- package/dist/observability/extractAiTasksObservability.d.ts +7 -0
- package/dist/observability/extractAiTasksObservability.d.ts.map +1 -0
- package/dist/observability/extractAiTasksObservability.js +98 -0
- package/dist/observability/extractAiTasksObservability.js.map +1 -0
- package/dist/observability/graphExecutionRunLogContract.d.ts +19 -0
- package/dist/observability/graphExecutionRunLogContract.d.ts.map +1 -0
- package/dist/observability/graphExecutionRunLogContract.js +11 -0
- package/dist/observability/graphExecutionRunLogContract.js.map +1 -0
- package/dist/packaged-tasks-client.d.ts +66 -0
- package/dist/packaged-tasks-client.d.ts.map +1 -0
- package/dist/packaged-tasks-client.js +100 -0
- package/dist/packaged-tasks-client.js.map +1 -0
- package/dist/planWebScopeQuestions/index.d.ts +78 -0
- package/dist/planWebScopeQuestions/index.d.ts.map +1 -0
- package/dist/planWebScopeQuestions/index.js +282 -0
- package/dist/planWebScopeQuestions/index.js.map +1 -0
- package/dist/planWebScopeQuestions/runResearchPlanQuestionsFuncx.d.ts +18 -0
- package/dist/planWebScopeQuestions/runResearchPlanQuestionsFuncx.d.ts.map +1 -0
- package/dist/planWebScopeQuestions/runResearchPlanQuestionsFuncx.js +42 -0
- package/dist/planWebScopeQuestions/runResearchPlanQuestionsFuncx.js.map +1 -0
- package/dist/post-steps/audit/loadAuditTemplates.d.ts +72 -0
- package/dist/post-steps/audit/loadAuditTemplates.d.ts.map +1 -0
- package/dist/post-steps/audit/loadAuditTemplates.js +62 -0
- package/dist/post-steps/audit/loadAuditTemplates.js.map +1 -0
- package/dist/post-steps/audit/parseAuditOutput.d.ts +11 -0
- package/dist/post-steps/audit/parseAuditOutput.d.ts.map +1 -0
- package/dist/post-steps/audit/parseAuditOutput.js +50 -0
- package/dist/post-steps/audit/parseAuditOutput.js.map +1 -0
- package/dist/post-steps/audit/runAudit.d.ts +22 -0
- package/dist/post-steps/audit/runAudit.d.ts.map +1 -0
- package/dist/post-steps/audit/runAudit.js +406 -0
- package/dist/post-steps/audit/runAudit.js.map +1 -0
- package/dist/post-steps/audit/runAuditCall.d.ts +23 -0
- package/dist/post-steps/audit/runAuditCall.d.ts.map +1 -0
- package/dist/post-steps/audit/runAuditCall.js +32 -0
- package/dist/post-steps/audit/runAuditCall.js.map +1 -0
- package/dist/post-steps/polish/loadPolishTemplates.d.ts +35 -0
- package/dist/post-steps/polish/loadPolishTemplates.d.ts.map +1 -0
- package/dist/post-steps/polish/loadPolishTemplates.js +38 -0
- package/dist/post-steps/polish/loadPolishTemplates.js.map +1 -0
- package/dist/post-steps/polish/parsePolishOutput.d.ts +6 -0
- package/dist/post-steps/polish/parsePolishOutput.d.ts.map +1 -0
- package/dist/post-steps/polish/parsePolishOutput.js +47 -0
- package/dist/post-steps/polish/parsePolishOutput.js.map +1 -0
- package/dist/post-steps/polish/runPolish.d.ts +24 -0
- package/dist/post-steps/polish/runPolish.d.ts.map +1 -0
- package/dist/post-steps/polish/runPolish.js +147 -0
- package/dist/post-steps/polish/runPolish.js.map +1 -0
- package/dist/post-steps/polish/runPolishCall.d.ts +22 -0
- package/dist/post-steps/polish/runPolishCall.d.ts.map +1 -0
- package/dist/post-steps/polish/runPolishCall.js +32 -0
- package/dist/post-steps/polish/runPolishCall.js.map +1 -0
- package/dist/post-steps/resolvePostStepConfig.d.ts +58 -0
- package/dist/post-steps/resolvePostStepConfig.d.ts.map +1 -0
- package/dist/post-steps/resolvePostStepConfig.js +105 -0
- package/dist/post-steps/resolvePostStepConfig.js.map +1 -0
- package/dist/rendrixUpstreamExports.d.ts +7 -0
- package/dist/rendrixUpstreamExports.d.ts.map +1 -0
- package/dist/rendrixUpstreamExports.js +6 -0
- package/dist/rendrixUpstreamExports.js.map +1 -0
- package/dist/skillCatalogExports.d.ts +8 -0
- package/dist/skillCatalogExports.d.ts.map +1 -0
- package/dist/skillCatalogExports.js +8 -0
- package/dist/skillCatalogExports.js.map +1 -0
- package/dist/strategies/direct-execution-strategy.d.ts +31 -0
- package/dist/strategies/direct-execution-strategy.d.ts.map +1 -0
- package/dist/strategies/direct-execution-strategy.js +107 -0
- package/dist/strategies/direct-execution-strategy.js.map +1 -0
- package/dist/strategies/execution-strategy.interface.d.ts +31 -0
- package/dist/strategies/execution-strategy.interface.d.ts.map +1 -0
- package/dist/strategies/execution-strategy.interface.js +2 -0
- package/dist/strategies/execution-strategy.interface.js.map +1 -0
- package/dist/strategies/index.d.ts +9 -0
- package/dist/strategies/index.d.ts.map +1 -0
- package/dist/strategies/index.js +8 -0
- package/dist/strategies/index.js.map +1 -0
- package/dist/strategies/strategy-factory.d.ts +45 -0
- package/dist/strategies/strategy-factory.d.ts.map +1 -0
- package/dist/strategies/strategy-factory.js +59 -0
- package/dist/strategies/strategy-factory.js.map +1 -0
- package/dist/synthesis/index.d.ts +9 -0
- package/dist/synthesis/index.d.ts.map +1 -0
- package/dist/synthesis/index.js +8 -0
- package/dist/synthesis/index.js.map +1 -0
- package/dist/synthesis/resolveSourceMaterial.d.ts +35 -0
- package/dist/synthesis/resolveSourceMaterial.d.ts.map +1 -0
- package/dist/synthesis/resolveSourceMaterial.js +152 -0
- package/dist/synthesis/resolveSourceMaterial.js.map +1 -0
- package/dist/synthesis/runStructuredSynthesisRobust.d.ts +42 -0
- package/dist/synthesis/runStructuredSynthesisRobust.d.ts.map +1 -0
- package/dist/synthesis/runStructuredSynthesisRobust.js +303 -0
- package/dist/synthesis/runStructuredSynthesisRobust.js.map +1 -0
- package/dist/task-strategies/buildTaskStrategyCatalogDescriptor.d.ts +19 -0
- package/dist/task-strategies/buildTaskStrategyCatalogDescriptor.d.ts.map +1 -0
- package/dist/task-strategies/buildTaskStrategyCatalogDescriptor.js +242 -0
- package/dist/task-strategies/buildTaskStrategyCatalogDescriptor.js.map +1 -0
- package/dist/task-strategies/canonicalInputExecutionStrategies.d.ts +171 -0
- package/dist/task-strategies/canonicalInputExecutionStrategies.d.ts.map +1 -0
- package/dist/task-strategies/canonicalInputExecutionStrategies.js +117 -0
- package/dist/task-strategies/canonicalInputExecutionStrategies.js.map +1 -0
- package/dist/task-strategies/canonicalNarrixModes.d.ts +31 -0
- package/dist/task-strategies/canonicalNarrixModes.d.ts.map +1 -0
- package/dist/task-strategies/canonicalNarrixModes.js +35 -0
- package/dist/task-strategies/canonicalNarrixModes.js.map +1 -0
- package/dist/task-strategies/canonicalTaskStrategies.d.ts +104 -0
- package/dist/task-strategies/canonicalTaskStrategies.d.ts.map +1 -0
- package/dist/task-strategies/canonicalTaskStrategies.js +77 -0
- package/dist/task-strategies/canonicalTaskStrategies.js.map +1 -0
- package/dist/task-strategies/cataloxCatalogViews.d.ts +55 -0
- package/dist/task-strategies/cataloxCatalogViews.d.ts.map +1 -0
- package/dist/task-strategies/cataloxCatalogViews.js +65 -0
- package/dist/task-strategies/cataloxCatalogViews.js.map +1 -0
- package/dist/task-strategies/constants.d.ts +49 -0
- package/dist/task-strategies/constants.d.ts.map +1 -0
- package/dist/task-strategies/constants.js +49 -0
- package/dist/task-strategies/constants.js.map +1 -0
- package/dist/task-strategies/index.d.ts +22 -0
- package/dist/task-strategies/index.d.ts.map +1 -0
- package/dist/task-strategies/index.js +13 -0
- package/dist/task-strategies/index.js.map +1 -0
- package/dist/task-strategies/listAiTaskStrategies.d.ts +43 -0
- package/dist/task-strategies/listAiTaskStrategies.d.ts.map +1 -0
- package/dist/task-strategies/listAiTaskStrategies.js +74 -0
- package/dist/task-strategies/listAiTaskStrategies.js.map +1 -0
- package/dist/task-strategies/normalize.d.ts +7 -0
- package/dist/task-strategies/normalize.d.ts.map +1 -0
- package/dist/task-strategies/normalize.js +44 -0
- package/dist/task-strategies/normalize.js.map +1 -0
- package/dist/task-strategies/types.d.ts +37 -0
- package/dist/task-strategies/types.d.ts.map +1 -0
- package/dist/task-strategies/types.js +2 -0
- package/dist/task-strategies/types.js.map +1 -0
- package/dist/types/decision-contracts.d.ts +31 -0
- package/dist/types/decision-contracts.d.ts.map +1 -0
- package/dist/types/decision-contracts.js +23 -0
- package/dist/types/decision-contracts.js.map +1 -0
- package/dist/types/evidence-types.d.ts +108 -0
- package/dist/types/evidence-types.d.ts.map +1 -0
- package/dist/types/evidence-types.js +9 -0
- package/dist/types/evidence-types.js.map +1 -0
- package/dist/types/executionType.d.ts +9 -0
- package/dist/types/executionType.d.ts.map +1 -0
- package/dist/types/executionType.js +8 -0
- package/dist/types/executionType.js.map +1 -0
- package/dist/types/index.d.ts +28 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +12 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/llmCall.d.ts +121 -0
- package/dist/types/llmCall.d.ts.map +1 -0
- package/dist/types/llmCall.js +39 -0
- package/dist/types/llmCall.js.map +1 -0
- package/dist/types/task-configuration.d.ts +60 -0
- package/dist/types/task-configuration.d.ts.map +1 -0
- package/dist/types/task-configuration.js +3 -0
- package/dist/types/task-configuration.js.map +1 -0
- package/dist/types/task-types.d.ts +887 -0
- package/dist/types/task-types.d.ts.map +1 -0
- package/dist/types/task-types.js +21 -0
- package/dist/types/task-types.js.map +1 -0
- package/dist/utilities/runUtility.d.ts +3 -0
- package/dist/utilities/runUtility.d.ts.map +1 -0
- package/dist/utilities/runUtility.js +204 -0
- package/dist/utilities/runUtility.js.map +1 -0
- package/dist/utils/assertRequiredRunSkillCorrelation.d.ts +7 -0
- package/dist/utils/assertRequiredRunSkillCorrelation.d.ts.map +1 -0
- package/dist/utils/assertRequiredRunSkillCorrelation.js +17 -0
- package/dist/utils/assertRequiredRunSkillCorrelation.js.map +1 -0
- package/dist/utils/assertValidSmartInputConfig.d.ts +5 -0
- package/dist/utils/assertValidSmartInputConfig.d.ts.map +1 -0
- package/dist/utils/assertValidSmartInputConfig.js +71 -0
- package/dist/utils/assertValidSmartInputConfig.js.map +1 -0
- package/dist/utils/bridgeRunSkillGatewayMemory.d.ts +13 -0
- package/dist/utils/bridgeRunSkillGatewayMemory.d.ts.map +1 -0
- package/dist/utils/bridgeRunSkillGatewayMemory.js +65 -0
- package/dist/utils/bridgeRunSkillGatewayMemory.js.map +1 -0
- package/dist/utils/extractSmartInputRenderResult.d.ts +7 -0
- package/dist/utils/extractSmartInputRenderResult.d.ts.map +1 -0
- package/dist/utils/extractSmartInputRenderResult.js +30 -0
- package/dist/utils/extractSmartInputRenderResult.js.map +1 -0
- package/dist/utils/jsonPaths.d.ts +6 -0
- package/dist/utils/jsonPaths.d.ts.map +1 -0
- package/dist/utils/jsonPaths.js +32 -0
- package/dist/utils/jsonPaths.js.map +1 -0
- package/dist/utils/normalizeSmartInputConfig.d.ts +5 -0
- package/dist/utils/normalizeSmartInputConfig.d.ts.map +1 -0
- package/dist/utils/normalizeSmartInputConfig.js +30 -0
- package/dist/utils/normalizeSmartInputConfig.js.map +1 -0
- package/dist/utils/outputValidation.d.ts +19 -0
- package/dist/utils/outputValidation.d.ts.map +1 -0
- package/dist/utils/outputValidation.js +75 -0
- package/dist/utils/outputValidation.js.map +1 -0
- package/dist/utils/runTaskRequestShape.d.ts +16 -0
- package/dist/utils/runTaskRequestShape.d.ts.map +1 -0
- package/dist/utils/runTaskRequestShape.js +80 -0
- package/dist/utils/runTaskRequestShape.js.map +1 -0
- package/dist/utils/skillTemplateVariables.d.ts +20 -0
- package/dist/utils/skillTemplateVariables.d.ts.map +1 -0
- package/dist/utils/skillTemplateVariables.js +63 -0
- package/dist/utils/skillTemplateVariables.js.map +1 -0
- package/dist/utils/xynthesizedSmartInputPaths.d.ts +16 -0
- package/dist/utils/xynthesizedSmartInputPaths.d.ts.map +1 -0
- package/dist/utils/xynthesizedSmartInputPaths.js +56 -0
- package/dist/utils/xynthesizedSmartInputPaths.js.map +1 -0
- package/dist/utils/xynthesizedWrite.d.ts +10 -0
- package/dist/utils/xynthesizedWrite.d.ts.map +1 -0
- package/dist/utils/xynthesizedWrite.js +61 -0
- package/dist/utils/xynthesizedWrite.js.map +1 -0
- package/dist/validation/analyzeExpectedRunTaskInput.d.ts +41 -0
- package/dist/validation/analyzeExpectedRunTaskInput.d.ts.map +1 -0
- package/dist/validation/analyzeExpectedRunTaskInput.js +133 -0
- package/dist/validation/analyzeExpectedRunTaskInput.js.map +1 -0
- package/dist/validation/collectSmartInputValidationIssues.d.ts +6 -0
- package/dist/validation/collectSmartInputValidationIssues.d.ts.map +1 -0
- package/dist/validation/collectSmartInputValidationIssues.js +38 -0
- package/dist/validation/collectSmartInputValidationIssues.js.map +1 -0
- package/dist/validation/helpers.d.ts +15 -0
- package/dist/validation/helpers.d.ts.map +1 -0
- package/dist/validation/helpers.js +184 -0
- package/dist/validation/helpers.js.map +1 -0
- package/dist/validation/index.d.ts +9 -0
- package/dist/validation/index.d.ts.map +1 -0
- package/dist/validation/index.js +6 -0
- package/dist/validation/index.js.map +1 -0
- package/dist/validation/types.d.ts +51 -0
- package/dist/validation/types.d.ts.map +1 -0
- package/dist/validation/types.js +5 -0
- package/dist/validation/types.js.map +1 -0
- package/dist/validation/validateRunTaskConfig.d.ts +8 -0
- package/dist/validation/validateRunTaskConfig.d.ts.map +1 -0
- package/dist/validation/validateRunTaskConfig.js +158 -0
- package/dist/validation/validateRunTaskConfig.js.map +1 -0
- package/dist/validation/validateRunTaskInvoke.d.ts +30 -0
- package/dist/validation/validateRunTaskInvoke.d.ts.map +1 -0
- package/dist/validation/validateRunTaskInvoke.js +108 -0
- package/dist/validation/validateRunTaskInvoke.js.map +1 -0
- package/documenations/activix-feature-request-identity.md +123 -0
- package/documenations/activix.md +175 -0
- package/documenations/bug-report-xynthesis-and-synthesis-call.md +217 -0
- package/documenations/core-runtime-tokens-and-strategies.md +123 -0
- package/documenations/downstream-environment.md +48 -0
- package/documenations/downstream-test-runtime-teardown-cleanup.md +73 -0
- package/documenations/examples/xynthesis-run-task-request.example.json +170 -0
- package/documenations/feature-request-ai-skills-raw-template-access.md +82 -0
- package/documenations/feature-request-athenix-core-directive.md +145 -0
- package/documenations/feature-request-athenix-token-extraction.md +124 -0
- package/documenations/funcx-catalog-hosting-checklist.md +107 -0
- package/documenations/funcx-scoping-integration-gaps.md +120 -0
- package/documenations/funcx-upstream-github-issues-draft.md +153 -0
- package/documenations/identity-metadata-contract.md +165 -0
- package/documenations/intermediate-steps.md +33 -0
- package/documenations/record-and-template-variables.md +32 -0
- package/documenations/run-task-execution-flow.md +153 -0
- package/documenations/run-task-single-run-checklist.md +109 -0
- package/documenations/schemas/README.md +40 -0
- package/documenations/schemas/openapi-3.1-components.yaml +24 -0
- package/documenations/schemas/v1/output-schema.json +55 -0
- package/documenations/schemas/v1/output-validation-result.json +41 -0
- package/documenations/schemas/v1/run-task-request.json +219 -0
- package/documenations/schemas/v1/synthesized-artifacts.json +133 -0
- package/documenations/synthesis-invocation-notes.md +26 -0
- package/documenations/synthesized-context-guide.md +84 -0
- package/documenations/task-core-and-core-aware-synthesis.md +58 -0
- package/documenations/upstream-feature-requests/ai-skills-llm-observability.md +129 -0
- package/documenations/upstream-feature-requests/xynthesis-llm-observability.md +125 -0
- package/documenations/upstream-feedback-request-shape-clarification.md +101 -0
- package/documenations/web-context-precedence.md +33 -0
- package/documenations/web-scoping-in-ai-tasks.md +503 -0
- package/documenations/xynthesis-activix-telemetry.md +28 -0
- package/documenations/xynthesis-upstream-fixes-checklist.md +71 -0
- package/package.json +92 -0
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import { SYNTHESIZED_CONTEXT } from "../types/task-types.js";
|
|
2
|
+
import { compileTaskConfigurationOnRunTaskRequest } from "../compile/compileTaskConfiguration.js";
|
|
3
|
+
import { isTaskConfigurationCompileError } from "../errors/taskConfigurationCompileError.js";
|
|
4
|
+
import { collectExecutionPipelineWarnings } from "../utils/runTaskRequestShape.js";
|
|
5
|
+
import { resolveRunTaskRuntimeKnobs } from "../internal/resolveRunTaskRuntimeKnobs.js";
|
|
6
|
+
import { collectSmartInputValidationIssues } from "./collectSmartInputValidationIssues.js";
|
|
7
|
+
import { finalizeValidationResult, isNonEmptyString, pushIssue, validateLlmCallFields, validateModelConfigFields, } from "./helpers.js";
|
|
8
|
+
function validateExecutionPipeline(pipeline, issues) {
|
|
9
|
+
if (!pipeline?.length)
|
|
10
|
+
return;
|
|
11
|
+
const mainSteps = pipeline.filter((s) => s.phase === "main");
|
|
12
|
+
if (mainSteps.length !== 1) {
|
|
13
|
+
pushIssue(issues, {
|
|
14
|
+
code: "PIPELINE_MAIN_COUNT",
|
|
15
|
+
path: "executionPipeline",
|
|
16
|
+
message: `executionPipeline must contain exactly one step with phase "main"; got ${mainSteps.length}.`,
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
for (const w of collectExecutionPipelineWarnings(pipeline)) {
|
|
20
|
+
pushIssue(issues, {
|
|
21
|
+
code: "PIPELINE_UNSUPPORTED_STEP",
|
|
22
|
+
severity: "warning",
|
|
23
|
+
path: "executionPipeline",
|
|
24
|
+
message: w,
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
for (let i = 0; i < pipeline.length; i++) {
|
|
28
|
+
const step = pipeline[i];
|
|
29
|
+
if (step.phase === "pre" && step.type === SYNTHESIZED_CONTEXT) {
|
|
30
|
+
const cfg = (step.config ?? {});
|
|
31
|
+
validateModelConfigFields(cfg.modelConfig, `executionPipeline[${i}].config.modelConfig`, issues);
|
|
32
|
+
validateLlmCallFields(cfg.llmCall, `executionPipeline[${i}].config.llmCall`, issues);
|
|
33
|
+
}
|
|
34
|
+
if (step.phase === "post" && (step.type === "audit" || step.type === "polish")) {
|
|
35
|
+
const cfg = step.config;
|
|
36
|
+
if (cfg && typeof cfg === "object") {
|
|
37
|
+
validateModelConfigFields(cfg.modelConfig, `executionPipeline[${i}].config.modelConfig`, issues);
|
|
38
|
+
validateLlmCallFields(cfg.llmCall, `executionPipeline[${i}].config.llmCall`, issues);
|
|
39
|
+
const llm = cfg.llmCall;
|
|
40
|
+
if (llm && typeof llm === "object" && !Array.isArray(llm)) {
|
|
41
|
+
const nested = llm;
|
|
42
|
+
if (nested.audit) {
|
|
43
|
+
validateLlmCallFields(nested.audit, `executionPipeline[${i}].config.llmCall.audit`, issues);
|
|
44
|
+
}
|
|
45
|
+
if (nested.synthesis) {
|
|
46
|
+
validateLlmCallFields(nested.synthesis, `executionPipeline[${i}].config.llmCall.synthesis`, issues);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
function validateSynthesisPreRequirements(request, issues) {
|
|
54
|
+
const pipeline = request.executionPipeline;
|
|
55
|
+
if (!pipeline?.some((s) => s.phase === "pre" && s.type === SYNTHESIZED_CONTEXT))
|
|
56
|
+
return;
|
|
57
|
+
const hasContext = request.includeContextInPrompt === true ||
|
|
58
|
+
pipeline.some((s) => s.phase === "pre" &&
|
|
59
|
+
s.type === SYNTHESIZED_CONTEXT &&
|
|
60
|
+
s.config?.autoEnableContext === true);
|
|
61
|
+
if (!hasContext) {
|
|
62
|
+
pushIssue(issues, {
|
|
63
|
+
code: "SYNTHESIS_PRE_REQUIRES_CONTEXT",
|
|
64
|
+
path: "includeContextInPrompt",
|
|
65
|
+
message: 'PRE "synthesized-context" requires includeContextInPrompt: true or synthesisConfig.autoEnableContext: true on the PRE step.',
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Validate **static** `RunTaskRequest` configuration (model, pipeline, correlation ids, smartInput shape).
|
|
71
|
+
* Does **not** check whether memory paths resolve — use {@link validateRunTaskInvoke} for that.
|
|
72
|
+
*/
|
|
73
|
+
export function validateRunTaskConfig(request) {
|
|
74
|
+
const issues = [];
|
|
75
|
+
let resolved = request;
|
|
76
|
+
try {
|
|
77
|
+
resolved = compileTaskConfigurationOnRunTaskRequest(request).request;
|
|
78
|
+
}
|
|
79
|
+
catch (e) {
|
|
80
|
+
if (isTaskConfigurationCompileError(e)) {
|
|
81
|
+
pushIssue(issues, {
|
|
82
|
+
code: e.code,
|
|
83
|
+
path: "taskConfiguration",
|
|
84
|
+
message: e.message,
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
throw e;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
const skillKey = String(resolved.skillKey ?? "");
|
|
92
|
+
if (!isNonEmptyString(resolved.skillKey)) {
|
|
93
|
+
pushIssue(issues, {
|
|
94
|
+
code: "MISSING_SKILL_KEY",
|
|
95
|
+
path: "skillKey",
|
|
96
|
+
message: "runTask requires a non-empty skillKey.",
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
if (!isNonEmptyString(resolved.agentId)) {
|
|
100
|
+
pushIssue(issues, {
|
|
101
|
+
code: "MISSING_AGENT_ID",
|
|
102
|
+
path: "agentId",
|
|
103
|
+
message: `runTask requires non-empty agentId (@exellix/ai-skills correlation). skillKey: ${skillKey}`,
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
if (!isNonEmptyString(resolved.jobTypeId)) {
|
|
107
|
+
pushIssue(issues, {
|
|
108
|
+
code: "MISSING_JOB_TYPE_ID",
|
|
109
|
+
path: "jobTypeId",
|
|
110
|
+
message: `runTask requires non-empty jobTypeId. skillKey: ${skillKey}`,
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
if (!isNonEmptyString(resolved.taskTypeId)) {
|
|
114
|
+
pushIssue(issues, {
|
|
115
|
+
code: "MISSING_TASK_TYPE_ID",
|
|
116
|
+
path: "taskTypeId",
|
|
117
|
+
message: `runTask requires non-empty taskTypeId. skillKey: ${skillKey}`,
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
if (!Array.isArray(resolved.executionStrategies)) {
|
|
121
|
+
pushIssue(issues, {
|
|
122
|
+
code: "MISSING_EXECUTION_STRATEGIES",
|
|
123
|
+
path: "executionStrategies",
|
|
124
|
+
message: "runTask requires executionStrategies array (use [] for plain MAIN). skillKey: " + skillKey,
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
try {
|
|
129
|
+
resolveRunTaskRuntimeKnobs(resolved);
|
|
130
|
+
}
|
|
131
|
+
catch (e) {
|
|
132
|
+
pushIssue(issues, {
|
|
133
|
+
code: "RUNTIME_KNOBS_INVALID",
|
|
134
|
+
path: "executionStrategies",
|
|
135
|
+
message: e instanceof Error ? e.message : String(e),
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
issues.push(...collectSmartInputValidationIssues(resolved.smartInput, skillKey));
|
|
140
|
+
validateModelConfigFields(resolved.modelConfig, "modelConfig", issues);
|
|
141
|
+
validateLlmCallFields(resolved.llmCall, "llmCall", issues);
|
|
142
|
+
if (resolved.timeoutMs !== undefined) {
|
|
143
|
+
if (typeof resolved.timeoutMs !== "number" || !Number.isFinite(resolved.timeoutMs) || resolved.timeoutMs < 1) {
|
|
144
|
+
pushIssue(issues, {
|
|
145
|
+
code: "TIMEOUT_MS_INVALID",
|
|
146
|
+
path: "timeoutMs",
|
|
147
|
+
message: "timeoutMs must be a finite number >= 1 when set.",
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
validateExecutionPipeline(resolved.executionPipeline, issues);
|
|
152
|
+
validateSynthesisPreRequirements(resolved, issues);
|
|
153
|
+
if (resolved.aiScopingOptions?.llmCall) {
|
|
154
|
+
validateLlmCallFields(resolved.aiScopingOptions.llmCall, "aiScopingOptions.llmCall", issues);
|
|
155
|
+
}
|
|
156
|
+
return finalizeValidationResult(issues);
|
|
157
|
+
}
|
|
158
|
+
//# sourceMappingURL=validateRunTaskConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validateRunTaskConfig.js","sourceRoot":"","sources":["../../src/validation/validateRunTaskConfig.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { RunTaskRequest } from "../types/task-types.js";
|
|
2
|
+
import { type RunTaskTemplateResolver } from "./analyzeExpectedRunTaskInput.js";
|
|
3
|
+
import type { RunTaskInvokeValidationResult } from "./types.js";
|
|
4
|
+
export type ValidateRunTaskInvokeParams = {
|
|
5
|
+
request: RunTaskRequest;
|
|
6
|
+
/**
|
|
7
|
+
* When true (default), resolve skill templates and check expected paths against the request payload.
|
|
8
|
+
* Set false for a fast config-only pass (same as {@link validateRunTaskConfig}).
|
|
9
|
+
*/
|
|
10
|
+
analyzeTemplates?: boolean;
|
|
11
|
+
templateResolver?: RunTaskTemplateResolver;
|
|
12
|
+
instructions?: string;
|
|
13
|
+
prompt?: string;
|
|
14
|
+
/**
|
|
15
|
+
* When true, add errors for Rendrix `analyzeTemplateResolution` unparsed tokens
|
|
16
|
+
* (requires `instructions` / `prompt` text or resolver).
|
|
17
|
+
*/
|
|
18
|
+
checkTemplateResolution?: boolean;
|
|
19
|
+
/**
|
|
20
|
+
* When true (default), run Rendrix `renderSmartInput` against the request context
|
|
21
|
+
* to catch required smart-input paths that are missing (after shape validation passes).
|
|
22
|
+
*/
|
|
23
|
+
checkSmartInputRender?: boolean;
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Validate **config + payload**: static request shape/model config, then whether expected
|
|
27
|
+
* smart-input / template paths resolve against `input`, memories, and `xynthesized`.
|
|
28
|
+
*/
|
|
29
|
+
export declare function validateRunTaskInvoke(params: ValidateRunTaskInvokeParams): Promise<RunTaskInvokeValidationResult>;
|
|
30
|
+
//# sourceMappingURL=validateRunTaskInvoke.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validateRunTaskInvoke.d.ts","sourceRoot":"","sources":["../../src/validation/validateRunTaskInvoke.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAE7D,OAAO,EAGL,KAAK,uBAAuB,EAC7B,MAAM,kCAAkC,CAAC;AAI1C,OAAO,KAAK,EAAE,6BAA6B,EAA0B,MAAM,YAAY,CAAC;AAExF,MAAM,MAAM,2BAA2B,GAAG;IACxC,OAAO,EAAE,cAAc,CAAC;IACxB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,gBAAgB,CAAC,EAAE,uBAAuB,CAAC;IAC3C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC;;;OAGG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC,CAAC;AAEF;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,2BAA2B,GAClC,OAAO,CAAC,6BAA6B,CAAC,CA0GxC"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { renderSmartInput, SmartInputRequiredPathMissingError } from "@x12i/rendrix";
|
|
2
|
+
import { normalizeSmartInputConfig } from "../utils/normalizeSmartInputConfig.js";
|
|
3
|
+
import { analyzeExpectedRunTaskInput, checkExpectedInputAgainstRequest, } from "./analyzeExpectedRunTaskInput.js";
|
|
4
|
+
import { collectSmartInputValidationIssues } from "./collectSmartInputValidationIssues.js";
|
|
5
|
+
import { validateRunTaskConfig } from "./validateRunTaskConfig.js";
|
|
6
|
+
import { buildRunTaskValidationContext, finalizeValidationResult, pushIssue } from "./helpers.js";
|
|
7
|
+
/**
|
|
8
|
+
* Validate **config + payload**: static request shape/model config, then whether expected
|
|
9
|
+
* smart-input / template paths resolve against `input`, memories, and `xynthesized`.
|
|
10
|
+
*/
|
|
11
|
+
export async function validateRunTaskInvoke(params) {
|
|
12
|
+
const { request } = params;
|
|
13
|
+
const configResult = validateRunTaskConfig(request);
|
|
14
|
+
const issues = [...configResult.issues];
|
|
15
|
+
const smartInputShapeOk = request.smartInput === undefined ||
|
|
16
|
+
request.smartInput === null ||
|
|
17
|
+
collectSmartInputValidationIssues(request.smartInput, request.skillKey).length === 0;
|
|
18
|
+
if (smartInputShapeOk && request.smartInput && params.checkSmartInputRender !== false) {
|
|
19
|
+
try {
|
|
20
|
+
const normalized = normalizeSmartInputConfig(request.smartInput);
|
|
21
|
+
renderSmartInput({
|
|
22
|
+
smartInput: normalized,
|
|
23
|
+
context: buildRunTaskValidationContext(request),
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
catch (e) {
|
|
27
|
+
if (e instanceof SmartInputRequiredPathMissingError) {
|
|
28
|
+
pushIssue(issues, {
|
|
29
|
+
code: e.code,
|
|
30
|
+
path: `smartInput.paths (${e.path})`,
|
|
31
|
+
message: `${e.message} skillKey: ${request.skillKey}`,
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
const analyzeTemplates = params.analyzeTemplates !== false;
|
|
37
|
+
let expected = {
|
|
38
|
+
paths: [],
|
|
39
|
+
templateTokens: { instructions: [], prompt: [] },
|
|
40
|
+
};
|
|
41
|
+
let missingInputPaths = [];
|
|
42
|
+
let resolvedInputPaths = [];
|
|
43
|
+
if (analyzeTemplates) {
|
|
44
|
+
expected = await analyzeExpectedRunTaskInput({
|
|
45
|
+
skillKey: request.skillKey,
|
|
46
|
+
smartInput: request.smartInput,
|
|
47
|
+
instructions: params.instructions,
|
|
48
|
+
prompt: params.prompt,
|
|
49
|
+
templateResolver: params.templateResolver,
|
|
50
|
+
});
|
|
51
|
+
let instructionsText = params.instructions ?? "";
|
|
52
|
+
let promptText = params.prompt ?? "";
|
|
53
|
+
if (params.templateResolver) {
|
|
54
|
+
if (!instructionsText) {
|
|
55
|
+
instructionsText =
|
|
56
|
+
(await params.templateResolver.resolveRawTemplate(request.skillKey, "instructions")) ?? "";
|
|
57
|
+
}
|
|
58
|
+
if (!promptText) {
|
|
59
|
+
promptText = (await params.templateResolver.resolveRawTemplate(request.skillKey, "prompt")) ?? "";
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
const check = checkExpectedInputAgainstRequest({
|
|
63
|
+
request,
|
|
64
|
+
expected,
|
|
65
|
+
templateTexts: params.checkTemplateResolution === true
|
|
66
|
+
? { instructions: instructionsText, prompt: promptText }
|
|
67
|
+
: undefined,
|
|
68
|
+
});
|
|
69
|
+
missingInputPaths = check.missingInputPaths;
|
|
70
|
+
resolvedInputPaths = check.resolvedInputPaths;
|
|
71
|
+
for (const entry of check.missingInputPaths) {
|
|
72
|
+
pushIssue(issues, {
|
|
73
|
+
code: "REQUIRED_INPUT_PATH_MISSING",
|
|
74
|
+
path: entry.path,
|
|
75
|
+
message: `Required input path "${entry.path}" (${entry.source}) is missing or empty on the request. skillKey: ${request.skillKey}`,
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
for (const entry of expected.paths) {
|
|
79
|
+
if (entry.required === true)
|
|
80
|
+
continue;
|
|
81
|
+
const row = check.resolvedInputPaths.find((r) => r.path === entry.path);
|
|
82
|
+
if (row && !row.resolved && entry.source.startsWith("template-")) {
|
|
83
|
+
pushIssue(issues, {
|
|
84
|
+
code: "TEMPLATE_INPUT_PATH_MISSING",
|
|
85
|
+
severity: "warning",
|
|
86
|
+
path: entry.path,
|
|
87
|
+
message: `Template references path "${entry.path}" but it is undefined in the request payload (may be optional in template). skillKey: ${request.skillKey}`,
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
for (const unparsed of check.templateUnresolvedPaths) {
|
|
92
|
+
pushIssue(issues, {
|
|
93
|
+
code: "TEMPLATE_TOKEN_UNRESOLVED",
|
|
94
|
+
severity: "warning",
|
|
95
|
+
path: unparsed,
|
|
96
|
+
message: `Template token path not resolved in request context: ${unparsed}. skillKey: ${request.skillKey}`,
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
const finalized = finalizeValidationResult(issues);
|
|
101
|
+
return {
|
|
102
|
+
...finalized,
|
|
103
|
+
expectedInput: expected,
|
|
104
|
+
missingInputPaths,
|
|
105
|
+
resolvedInputPaths,
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=validateRunTaskInvoke.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validateRunTaskInvoke.js","sourceRoot":"","sources":["../../src/validation/validateRunTaskInvoke.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
# Feature request: Activix first-class `identity` object
|
|
2
|
+
|
|
3
|
+
## Summary
|
|
4
|
+
|
|
5
|
+
Extend `@xronoces/activix` to support a **first-class `identity` object** on activity records, so downstream systems can attach a stable identity envelope to every activity and query/group activities consistently.
|
|
6
|
+
|
|
7
|
+
This request is driven by the task methodology used in `@exellix/ai-tasks` (and the wider stack via `ai-skills`/`ai-gateway`).
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Problem
|
|
12
|
+
|
|
13
|
+
Today, many systems treat identity as “just more metadata” and bury it inside arbitrary blobs. That makes identity:
|
|
14
|
+
|
|
15
|
+
- inconsistent across producers,
|
|
16
|
+
- hard to query/index,
|
|
17
|
+
- easy to accidentally rename/flatten,
|
|
18
|
+
- easy to drop during updates,
|
|
19
|
+
- hard to standardize across a multi-package pipeline.
|
|
20
|
+
|
|
21
|
+
We want identity to be a **first-class citizen** in Activix, not an ad-hoc field hidden in random meta objects.
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## Proposed behavior (contract)
|
|
26
|
+
|
|
27
|
+
### 1) Record schema supports `identity`
|
|
28
|
+
|
|
29
|
+
Every Activix record should support a top-level field:
|
|
30
|
+
|
|
31
|
+
- `identity?: Record<string, unknown>`
|
|
32
|
+
|
|
33
|
+
Constraints:
|
|
34
|
+
|
|
35
|
+
- Must be persisted on `startRecord(...)` creation.
|
|
36
|
+
- Must remain intact across lifecycle operations (`completeRecord`, `failRecord`, `patchRecord`) unless explicitly changed.
|
|
37
|
+
- Must be returned by read/query APIs (`getRecord`, `findRecords`, etc).
|
|
38
|
+
|
|
39
|
+
### 2) Identity is preserved (no mutation by default)
|
|
40
|
+
|
|
41
|
+
Activix must not:
|
|
42
|
+
|
|
43
|
+
- rename keys inside `identity`,
|
|
44
|
+
- flatten `identity` into other fields,
|
|
45
|
+
- drop `identity` during updates.
|
|
46
|
+
|
|
47
|
+
### 3) Query by identity fields must be supported
|
|
48
|
+
|
|
49
|
+
Because `identity` is an object, querying by identity must be supported by the storage adapter. Minimum requirement:
|
|
50
|
+
|
|
51
|
+
- `findRecords({ "identity.taskId": "<id>" })` works (Mongo-style dotted-path query)
|
|
52
|
+
|
|
53
|
+
If Activix abstracts storage backends, the contract should specify which query patterns are supported (at least dotted-path equality for Mongo backend).
|
|
54
|
+
|
|
55
|
+
### 4) Indexing support (recommended)
|
|
56
|
+
|
|
57
|
+
To make querying scalable, Activix should support indexes over identity subfields (backend permitting). Recommended index patterns:
|
|
58
|
+
|
|
59
|
+
- `identity.taskId`
|
|
60
|
+
- optionally `identity.skillId`
|
|
61
|
+
|
|
62
|
+
This can be implemented as:
|
|
63
|
+
|
|
64
|
+
- a first-class `indexes` declaration (preferred), or
|
|
65
|
+
- documented guidance for consumers who configure collection indexes.
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## Required API / typing changes
|
|
70
|
+
|
|
71
|
+
### `startRecord`
|
|
72
|
+
|
|
73
|
+
Accept `identity` as a top-level field on the record meta payload:
|
|
74
|
+
|
|
75
|
+
- `ax.startRecord({ ..., identity })`
|
|
76
|
+
|
|
77
|
+
### `completeRecord` / `failRecord` / `patchRecord`
|
|
78
|
+
|
|
79
|
+
Ensure identity is not lost:
|
|
80
|
+
|
|
81
|
+
- If updates omit `identity`, the stored record keeps the previously set `identity`.
|
|
82
|
+
- If updates include `identity`, treat it as a full replace (or document merge semantics explicitly; default to replace to avoid surprising partial merges).
|
|
83
|
+
|
|
84
|
+
### Type exports
|
|
85
|
+
|
|
86
|
+
Expose a stable type for records that includes:
|
|
87
|
+
|
|
88
|
+
- `identity?: Record<string, unknown>`
|
|
89
|
+
|
|
90
|
+
---
|
|
91
|
+
|
|
92
|
+
## Interaction with `@exellix/ai-tasks`
|
|
93
|
+
|
|
94
|
+
`@exellix/ai-tasks` generates a unique per-run `taskId` and uses it to:
|
|
95
|
+
|
|
96
|
+
- attach `identity.taskId` to all activity records for that run, and
|
|
97
|
+
- retrieve “activities for the task” by that `taskId`.
|
|
98
|
+
|
|
99
|
+
Recommended alignment for the task methodology:
|
|
100
|
+
|
|
101
|
+
- `correlationId` remains the primary “group a run” field, but we will also carry `identity.taskId`.
|
|
102
|
+
- Optionally, stacks may choose to set `correlationId === identity.taskId` for convenience, but this should not be required by Activix.
|
|
103
|
+
|
|
104
|
+
See also: `documenations/identity-metadata-contract.md`
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
## Backward compatibility
|
|
109
|
+
|
|
110
|
+
- Records without `identity` remain valid.
|
|
111
|
+
- Existing producers may continue to omit identity.
|
|
112
|
+
- Query APIs should not require identity.
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
## Acceptance criteria
|
|
117
|
+
|
|
118
|
+
- `identity` can be written on `startRecord`.
|
|
119
|
+
- `identity` remains present after `completeRecord` / `failRecord` unless explicitly overwritten.
|
|
120
|
+
- `identity` is returned by `getRecord` and `findRecords`.
|
|
121
|
+
- Dotted-path queries against identity subfields work for Mongo backend (`"identity.taskId"` equality).
|
|
122
|
+
- Index configuration supports `identity.taskId` (either natively or via documented index config).
|
|
123
|
+
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
# Activix Integration
|
|
2
|
+
|
|
3
|
+
This packaged doc summarizes task-activity tracking via `@xronoces/activix`.
|
|
4
|
+
|
|
5
|
+
## Activix Integration Best Practices Checklist
|
|
6
|
+
|
|
7
|
+
Use this as the operational checklist for integrating `@xronoces/activix` correctly and consistently.
|
|
8
|
+
|
|
9
|
+
### 1) Ownership and boundaries
|
|
10
|
+
|
|
11
|
+
- Treat **Activix** as the activity-domain layer:
|
|
12
|
+
- lifecycle semantics (`start` / `in_progress` / `complete` / `fail`)
|
|
13
|
+
- activity contract validation
|
|
14
|
+
- run-context correlation persistence
|
|
15
|
+
- Treat **xronox-store** as the data tier:
|
|
16
|
+
- cache, write mode, retry policy, Mongo persistence behavior
|
|
17
|
+
- collection/index management
|
|
18
|
+
- generic primary-key storage mechanics
|
|
19
|
+
|
|
20
|
+
### 2) Construct once, reuse instance
|
|
21
|
+
|
|
22
|
+
- Prefer one `Activix` instance per service process (or one shared `XronoxStore` with `skipStoreInit: true`).
|
|
23
|
+
- Do not create a new `Activix` per tiny unit of work unless architecture requires it.
|
|
24
|
+
- If multi-instance is expected, pass `diagnostics` metadata so logs are self-identifying.
|
|
25
|
+
|
|
26
|
+
```ts
|
|
27
|
+
const ax = new Activix({
|
|
28
|
+
storageMode: 'automatic', // or 'database'
|
|
29
|
+
mongoUri: process.env.MONGO_URI!,
|
|
30
|
+
collection: 'task-activities',
|
|
31
|
+
diagnostics: {
|
|
32
|
+
owner: '@your-org/your-service',
|
|
33
|
+
component: 'graph-executor',
|
|
34
|
+
instanceLabel: 'worker-main',
|
|
35
|
+
workerId: process.pid.toString(),
|
|
36
|
+
},
|
|
37
|
+
});
|
|
38
|
+
await ax.init();
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### 3) Define collection contract explicitly
|
|
42
|
+
|
|
43
|
+
- Set collection names in code (`collection` or `collections`).
|
|
44
|
+
- Keep `primaryKey` and `primaryKeyPrefix` intentional.
|
|
45
|
+
- If you index `activityId` uniquely, Activix must always persist a non-null `activityId` (current behavior).
|
|
46
|
+
- Ensure store-side visibility matches `purgeAtField` if using soft purge.
|
|
47
|
+
|
|
48
|
+
### 4) Always pass run context at write time
|
|
49
|
+
|
|
50
|
+
- `runContext` is runtime context, not constructor config.
|
|
51
|
+
- Always pass a real `sessionId` from true upstream when available.
|
|
52
|
+
- Forward run context through layers; do not replace inherited correlation IDs.
|
|
53
|
+
|
|
54
|
+
```ts
|
|
55
|
+
const { activityId } = await ax.startRecord({
|
|
56
|
+
runContext: {
|
|
57
|
+
sessionId: request.sessionId,
|
|
58
|
+
jobId: request.jobId,
|
|
59
|
+
taskId: request.taskId,
|
|
60
|
+
},
|
|
61
|
+
outer: {
|
|
62
|
+
input: payload,
|
|
63
|
+
output: null,
|
|
64
|
+
metadata: { type: 'task' },
|
|
65
|
+
},
|
|
66
|
+
});
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### 5) Use lifecycle APIs as intended
|
|
70
|
+
|
|
71
|
+
- `startRecord()` first; keep returned `activityId`.
|
|
72
|
+
- Use the same `activityId` for all follow-ups:
|
|
73
|
+
- `markInProgress(activityId, ...)`
|
|
74
|
+
- `completeRecord(activityId, ...)`
|
|
75
|
+
- `failRecord(activityId, ...)`
|
|
76
|
+
- `patchRecord(activityId, ...)`
|
|
77
|
+
- `getRecord(activityId)`
|
|
78
|
+
- Never pass empty IDs; treat missing ID as integration bug and fail fast.
|
|
79
|
+
|
|
80
|
+
### 6) Respect payload ownership rules
|
|
81
|
+
|
|
82
|
+
- Integrators should provide domain payload (`outer`/`inner`/`runContext`).
|
|
83
|
+
- Do not provide lifecycle-owned fields manually:
|
|
84
|
+
- `activityId` / configured primary key
|
|
85
|
+
- `status`, `startTime`, `endTime`, `duration`
|
|
86
|
+
- `createdAt`, `updatedAt`
|
|
87
|
+
- `error` (except via `failRecord`)
|
|
88
|
+
|
|
89
|
+
### 7) Validate shape and observability expectations
|
|
90
|
+
|
|
91
|
+
- `outer` is required and must contain:
|
|
92
|
+
- `input`
|
|
93
|
+
- `output` (or omitted initially and normalized)
|
|
94
|
+
- `metadata` object
|
|
95
|
+
- Optional `inner` must follow request/response/metadata shape.
|
|
96
|
+
- Enable logs during rollout:
|
|
97
|
+
- `ACTIVIX_LOGS_LEVEL=debug`
|
|
98
|
+
- `XRONOX_STORE_LOG=1`
|
|
99
|
+
|
|
100
|
+
### 8) Multi-instance init diagnostics
|
|
101
|
+
|
|
102
|
+
If `storageMode: 'automatic'`, each Activix instance performs:
|
|
103
|
+
|
|
104
|
+
1. one Mongo probe
|
|
105
|
+
2. one store init
|
|
106
|
+
|
|
107
|
+
Use these fields to distinguish healthy multi-instance behavior from bugs:
|
|
108
|
+
|
|
109
|
+
- `activixInstanceId`
|
|
110
|
+
- `alreadyInitialized`
|
|
111
|
+
- `usingInitPromise`
|
|
112
|
+
- `initCallCount`
|
|
113
|
+
|
|
114
|
+
Expected pattern: one probe + one store init per `activixInstanceId`.
|
|
115
|
+
|
|
116
|
+
### 9) Reliability and retry expectations
|
|
117
|
+
|
|
118
|
+
- Retry/classification policy belongs to xronox-store.
|
|
119
|
+
- For deterministic Mongo failures (e.g. duplicate key), rely on current store behavior/version policy.
|
|
120
|
+
- Keep `@xronoces/xronox-store` up to date and pin known-good versions in CI.
|
|
121
|
+
|
|
122
|
+
### 10) Minimum production readiness checklist
|
|
123
|
+
|
|
124
|
+
- [ ] Single shared Activix instance (or intentional multi-instance with diagnostics metadata)
|
|
125
|
+
- [ ] Stable collection configuration committed in code
|
|
126
|
+
- [ ] `runContext.sessionId` passed from upstream for correlated runs
|
|
127
|
+
- [ ] `startRecord` return value (`activityId`) propagated through full lifecycle
|
|
128
|
+
- [ ] Logging flags documented for operations team
|
|
129
|
+
- [ ] Integration test path covers start -> progress -> complete/fail
|
|
130
|
+
- [ ] Dependency version policy defined for `@xronoces/xronox-store`
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
For deeper reference, see:
|
|
135
|
+
|
|
136
|
+
- `README.md`
|
|
137
|
+
- `.docs/run-context-object.md`
|
|
138
|
+
- `.docs/session-id-usage.md`
|
|
139
|
+
- `.docs/activity-structure.md`
|
|
140
|
+
- `.docs/logging-stack.md`
|
|
141
|
+
|
|
142
|
+
## What it tracks
|
|
143
|
+
|
|
144
|
+
A single `runTask()` call can emit phase records such as:
|
|
145
|
+
|
|
146
|
+
- `local`
|
|
147
|
+
- `narrix`
|
|
148
|
+
- `pipeline_pre`
|
|
149
|
+
- `direct`
|
|
150
|
+
- `audit`
|
|
151
|
+
- `polish`
|
|
152
|
+
- `narrix_then_direct`
|
|
153
|
+
|
|
154
|
+
All records for a run share a correlation id for grouping.
|
|
155
|
+
|
|
156
|
+
## Enablement
|
|
157
|
+
|
|
158
|
+
- Controlled by `ACTIVIX_ENABLED` (default off in README guidance).
|
|
159
|
+
- Activix failures are treated as non-fatal to task execution.
|
|
160
|
+
|
|
161
|
+
## Typical metadata
|
|
162
|
+
|
|
163
|
+
- `skillKey`, `executionStrategiesSummary`, `narrixMode`, `jobId`, `agentId`
|
|
164
|
+
- graph/node identity fields
|
|
165
|
+
- start/end/duration, status transitions
|
|
166
|
+
- success metadata and error details
|
|
167
|
+
|
|
168
|
+
## Stale cleanup
|
|
169
|
+
|
|
170
|
+
Use stale-marking (for example periodic `markStaleRecords`) to convert stuck `started` records to `timeout`.
|
|
171
|
+
|
|
172
|
+
## Related
|
|
173
|
+
|
|
174
|
+
- `README.md` (Activix section)
|
|
175
|
+
- `documenations/run-task-execution-flow.md`
|