stageflow 0.40.0 → 0.44.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/README.md +15 -4
- package/dist/agent/activity.d.ts +18 -0
- package/dist/agent/claudeAdapter.js +7 -0
- package/dist/agent/claudeTools.d.ts +27 -18
- package/dist/agent/claudeTools.js +54 -15
- package/dist/agent/compactionEvents.d.ts +34 -0
- package/dist/agent/compactionEvents.js +37 -0
- package/dist/agent/openRouterRouting.d.ts +7 -0
- package/dist/agent/openRouterRouting.js +23 -0
- package/dist/agent/piAdapter.d.ts +6 -0
- package/dist/agent/piAdapter.js +128 -27
- package/dist/agent/piSettings.d.ts +7 -0
- package/dist/agent/piSettings.js +9 -0
- package/dist/agent/sandboxPiTools.d.ts +3 -1
- package/dist/agent/sandboxPiTools.js +8 -2
- package/dist/agent/stageTurnDriver.d.ts +11 -2
- package/dist/agent/stageTurnDriver.js +45 -4
- package/dist/agent/toolOutputBudget.d.ts +15 -1
- package/dist/agent/toolOutputBudget.js +18 -0
- package/dist/agent/toolOutputBudgetExtension.d.ts +2 -0
- package/dist/agent/toolOutputBudgetExtension.js +40 -3
- package/dist/agents/authorChat.d.ts +5 -0
- package/dist/agents/authorChat.js +120 -12
- package/dist/agents/authorSessionStore.d.ts +38 -0
- package/dist/agents/authorSessionStore.js +167 -0
- package/dist/agents/chatTurn.d.ts +2 -0
- package/dist/agents/chatTurn.js +17 -1
- package/dist/agents/errors.d.ts +1 -1
- package/dist/agents/errors.js +1 -0
- package/dist/agents/evalGate.d.ts +61 -0
- package/dist/agents/evalGate.js +103 -0
- package/dist/agents/evalSession.d.ts +26 -0
- package/dist/agents/evalSession.js +29 -0
- package/dist/agents/hostContext.d.ts +4 -1
- package/dist/agents/hostContext.js +4 -1
- package/dist/agents/runtime/piRuntime.d.ts +6 -2
- package/dist/agents/runtime/piRuntime.js +50 -16
- package/dist/agents/runtime/types.d.ts +3 -1
- package/dist/agents/service.d.ts +27 -2
- package/dist/agents/service.js +91 -15
- package/dist/agents/sessions.d.ts +8 -0
- package/dist/agents/sessions.js +53 -11
- package/dist/agents/store.d.ts +14 -3
- package/dist/agents/store.js +45 -7
- package/dist/agents/toolRisk.d.ts +21 -0
- package/dist/agents/toolRisk.js +50 -0
- package/dist/cli/doctorCommand.js +26 -0
- package/dist/cli/evalCommand.d.ts +20 -0
- package/dist/cli/evalCommand.js +720 -0
- package/dist/cli/exportAllCommand.js +1 -1
- package/dist/cli/hostClient.d.ts +60 -0
- package/dist/cli/hostClient.js +71 -0
- package/dist/cli/validateOutput.d.ts +2 -2
- package/dist/cli/validateOutput.js +2 -2
- package/dist/cli.js +10 -0
- package/dist/compaction/directives.d.ts +18 -0
- package/dist/compaction/directives.js +119 -0
- package/dist/compaction/extension.d.ts +20 -0
- package/dist/compaction/extension.js +78 -0
- package/dist/compaction/mask.d.ts +18 -0
- package/dist/compaction/mask.js +155 -0
- package/dist/compaction/pin.d.ts +21 -0
- package/dist/compaction/pin.js +270 -0
- package/dist/compaction/scrub.d.ts +7 -0
- package/dist/compaction/scrub.js +26 -0
- package/dist/compaction/sessionWiring.d.ts +22 -0
- package/dist/compaction/sessionWiring.js +26 -0
- package/dist/compaction/summarize.d.ts +79 -0
- package/dist/compaction/summarize.js +171 -0
- package/dist/compaction/toolPolicy.d.ts +3 -0
- package/dist/compaction/toolPolicy.js +33 -0
- package/dist/compaction/types.d.ts +45 -0
- package/dist/compaction/types.js +7 -0
- package/dist/compaction/workingState.d.ts +56 -0
- package/dist/compaction/workingState.js +198 -0
- package/dist/config/atomicWrite.d.ts +15 -0
- package/dist/config/atomicWrite.js +43 -0
- package/dist/config/browseCatalog.d.ts +2 -0
- package/dist/config/browseCatalog.js +4 -2
- package/dist/config/createPipeline.js +2 -0
- package/dist/config/createTrigger.js +7 -1
- package/dist/config/csv.d.ts +9 -0
- package/dist/config/csv.js +81 -0
- package/dist/config/datasetAgentCheck.d.ts +18 -0
- package/dist/config/datasetAgentCheck.js +109 -0
- package/dist/config/datasetCandidates.d.ts +22 -0
- package/dist/config/datasetCandidates.js +86 -0
- package/dist/config/datasetFromSessions.d.ts +34 -0
- package/dist/config/datasetFromSessions.js +105 -0
- package/dist/config/datasetHash.d.ts +1 -0
- package/dist/config/datasetHash.js +4 -0
- package/dist/config/datasetImport.d.ts +21 -0
- package/dist/config/datasetImport.js +120 -0
- package/dist/config/datasetStageCheck.d.ts +9 -0
- package/dist/config/datasetStageCheck.js +17 -0
- package/dist/config/datasetTypes.d.ts +27 -0
- package/dist/config/datasetTypes.js +1 -0
- package/dist/config/ensureCatalogScanRoot.d.ts +4 -1
- package/dist/config/ensureCatalogScanRoot.js +8 -6
- package/dist/config/evalCatalog.d.ts +22 -0
- package/dist/config/evalCatalog.js +95 -0
- package/dist/config/evalWriteRoots.d.ts +17 -0
- package/dist/config/evalWriteRoots.js +109 -0
- package/dist/config/githubTriggerAction.d.ts +8 -0
- package/dist/config/githubTriggerAction.js +29 -0
- package/dist/config/hostConfig.js +3 -0
- package/dist/config/installEvalSample.d.ts +34 -0
- package/dist/config/installEvalSample.js +182 -0
- package/dist/config/loadDataset.d.ts +16 -0
- package/dist/config/loadDataset.js +318 -0
- package/dist/config/loadEval.d.ts +32 -0
- package/dist/config/loadEval.js +1103 -0
- package/dist/config/loadOutcome.d.ts +5 -0
- package/dist/config/loadStageflowManifest.js +64 -0
- package/dist/config/pipelineNeeds.d.ts +2 -0
- package/dist/config/pipelineNeeds.js +16 -3
- package/dist/config/pipelineRoute.js +5 -4
- package/dist/config/resolveAgentTarget.d.ts +32 -0
- package/dist/config/resolveAgentTarget.js +118 -0
- package/dist/config/resolveEvalTarget.d.ts +21 -0
- package/dist/config/resolveEvalTarget.js +89 -0
- package/dist/config/scanCatalogPaths.d.ts +1 -1
- package/dist/config/scanCatalogPaths.js +17 -5
- package/dist/config/validateCatalog.d.ts +2 -2
- package/dist/config/validateCatalog.js +21 -1
- package/dist/config/validateEval.d.ts +36 -0
- package/dist/config/validateEval.js +446 -0
- package/dist/config/writeDataset.d.ts +54 -0
- package/dist/config/writeDataset.js +186 -0
- package/dist/config/writeEval.d.ts +25 -0
- package/dist/config/writeEval.js +398 -0
- package/dist/diagnostics/checks.js +1 -1
- package/dist/envelope/assertEmittedArtifacts.d.ts +12 -0
- package/dist/envelope/assertEmittedArtifacts.js +43 -0
- package/dist/envelope/preEmitChecks.d.ts +3 -0
- package/dist/evals/agentDiff.d.ts +13 -0
- package/dist/evals/agentDiff.js +11 -0
- package/dist/evals/canonical.d.ts +3 -0
- package/dist/evals/canonical.js +24 -0
- package/dist/evals/caseTask.d.ts +3 -0
- package/dist/evals/caseTask.js +9 -0
- package/dist/evals/compare.d.ts +94 -0
- package/dist/evals/compare.js +201 -0
- package/dist/evals/constants.d.ts +62 -0
- package/dist/evals/constants.js +97 -0
- package/dist/evals/engine/FakeEngine.d.ts +33 -0
- package/dist/evals/engine/FakeEngine.js +177 -0
- package/dist/evals/engine/index.d.ts +9 -0
- package/dist/evals/engine/index.js +19 -0
- package/dist/evals/engine/promptfoo/PromptfooEngine.d.ts +52 -0
- package/dist/evals/engine/promptfoo/PromptfooEngine.js +312 -0
- package/dist/evals/engine/promptfoo/errors.d.ts +5 -0
- package/dist/evals/engine/promptfoo/errors.js +8 -0
- package/dist/evals/engine/promptfoo/generate.d.ts +30 -0
- package/dist/evals/engine/promptfoo/generate.js +345 -0
- package/dist/evals/engine/promptfoo/guard.d.ts +10 -0
- package/dist/evals/engine/promptfoo/guard.js +116 -0
- package/dist/evals/engine/promptfoo/install.d.ts +17 -0
- package/dist/evals/engine/promptfoo/install.js +73 -0
- package/dist/evals/engine/promptfoo/judgeProviders.d.ts +2 -0
- package/dist/evals/engine/promptfoo/judgeProviders.js +9 -0
- package/dist/evals/engine/promptfoo/judgeServices.d.ts +6 -0
- package/dist/evals/engine/promptfoo/judgeServices.js +41 -0
- package/dist/evals/engine/promptfoo/locate.d.ts +21 -0
- package/dist/evals/engine/promptfoo/locate.js +68 -0
- package/dist/evals/engine/promptfoo/nodeVersion.d.ts +7 -0
- package/dist/evals/engine/promptfoo/nodeVersion.js +14 -0
- package/dist/evals/engine/promptfoo/normalize.d.ts +66 -0
- package/dist/evals/engine/promptfoo/normalize.js +261 -0
- package/dist/evals/engine/promptfoo/pinned.d.ts +5 -0
- package/dist/evals/engine/promptfoo/pinned.js +5 -0
- package/dist/evals/engine/promptfoo/rubricPrompt.d.ts +14 -0
- package/dist/evals/engine/promptfoo/rubricPrompt.js +105 -0
- package/dist/evals/engine/promptfoo/runTokens.d.ts +18 -0
- package/dist/evals/engine/promptfoo/runTokens.js +31 -0
- package/dist/evals/engine/promptfoo/status.d.ts +13 -0
- package/dist/evals/engine/promptfoo/status.js +16 -0
- package/dist/evals/estimate.d.ts +56 -0
- package/dist/evals/estimate.js +66 -0
- package/dist/evals/graders/codeGrader.d.ts +6 -0
- package/dist/evals/graders/codeGrader.js +85 -0
- package/dist/evals/graders/conversationCheckGrader.d.ts +6 -0
- package/dist/evals/graders/conversationCheckGrader.js +62 -0
- package/dist/evals/graders/fieldGrader.d.ts +11 -0
- package/dist/evals/graders/fieldGrader.js +117 -0
- package/dist/evals/graders/goal.d.ts +3 -0
- package/dist/evals/graders/goal.js +14 -0
- package/dist/evals/graders/index.d.ts +18 -0
- package/dist/evals/graders/index.js +34 -0
- package/dist/evals/graders/notApplicable.d.ts +5 -0
- package/dist/evals/graders/notApplicable.js +9 -0
- package/dist/evals/graders/path.d.ts +26 -0
- package/dist/evals/graders/path.js +75 -0
- package/dist/evals/graders/referenceGrader.d.ts +5 -0
- package/dist/evals/graders/referenceGrader.js +59 -0
- package/dist/evals/graders/schemaGrader.d.ts +5 -0
- package/dist/evals/graders/schemaGrader.js +29 -0
- package/dist/evals/graders/subject.d.ts +6 -0
- package/dist/evals/graders/subject.js +33 -0
- package/dist/evals/graders/toolCallsGrader.d.ts +6 -0
- package/dist/evals/graders/toolCallsGrader.js +100 -0
- package/dist/evals/graders/transcript.d.ts +12 -0
- package/dist/evals/graders/transcript.js +57 -0
- package/dist/evals/graders/types.d.ts +20 -0
- package/dist/evals/graders/types.js +1 -0
- package/dist/evals/judgeProviders.d.ts +16 -0
- package/dist/evals/judgeProviders.js +27 -0
- package/dist/evals/lineDiff.d.ts +5 -0
- package/dist/evals/lineDiff.js +34 -0
- package/dist/evals/listStatus.d.ts +31 -0
- package/dist/evals/listStatus.js +48 -0
- package/dist/evals/manager.d.ts +187 -0
- package/dist/evals/manager.js +795 -0
- package/dist/evals/plan.d.ts +65 -0
- package/dist/evals/plan.js +621 -0
- package/dist/evals/planInternalAgent.d.ts +19 -0
- package/dist/evals/planInternalAgent.js +205 -0
- package/dist/evals/providerKeys.d.ts +1 -0
- package/dist/evals/providerKeys.js +21 -0
- package/dist/evals/read/agentTargets.d.ts +37 -0
- package/dist/evals/read/agentTargets.js +101 -0
- package/dist/evals/read/api.d.ts +208 -0
- package/dist/evals/read/api.js +363 -0
- package/dist/evals/read/compare.d.ts +4 -0
- package/dist/evals/read/compare.js +39 -0
- package/dist/evals/read/datasets.d.ts +105 -0
- package/dist/evals/read/datasets.js +318 -0
- package/dist/evals/read/list.d.ts +66 -0
- package/dist/evals/read/list.js +182 -0
- package/dist/evals/read/results.d.ts +46 -0
- package/dist/evals/read/results.js +107 -0
- package/dist/evals/read/runs.d.ts +154 -0
- package/dist/evals/read/runs.js +295 -0
- package/dist/evals/read/suggestions.d.ts +43 -0
- package/dist/evals/read/suggestions.js +73 -0
- package/dist/evals/runner/FakeAgentBackend.d.ts +40 -0
- package/dist/evals/runner/FakeAgentBackend.js +82 -0
- package/dist/evals/runner/agentCaseRunner.d.ts +24 -0
- package/dist/evals/runner/agentCaseRunner.js +388 -0
- package/dist/evals/runner/caseRunner.d.ts +8 -0
- package/dist/evals/runner/caseRunner.js +28 -0
- package/dist/evals/runner/conversationSubject.d.ts +18 -0
- package/dist/evals/runner/conversationSubject.js +123 -0
- package/dist/evals/runner/internalAgentCaseRunner.d.ts +6 -0
- package/dist/evals/runner/internalAgentCaseRunner.js +250 -0
- package/dist/evals/runner/simulatorModel.d.ts +51 -0
- package/dist/evals/runner/simulatorModel.js +58 -0
- package/dist/evals/runner/simulatorPrompt.d.ts +29 -0
- package/dist/evals/runner/simulatorPrompt.js +59 -0
- package/dist/evals/runner/stageCaseRunner.d.ts +30 -0
- package/dist/evals/runner/stageCaseRunner.js +279 -0
- package/dist/evals/runner/userDriver.d.ts +71 -0
- package/dist/evals/runner/userDriver.js +104 -0
- package/dist/evals/scoring.d.ts +34 -0
- package/dist/evals/scoring.js +67 -0
- package/dist/evals/snapshot.d.ts +191 -0
- package/dist/evals/snapshot.js +70 -0
- package/dist/evals/stageDiff.d.ts +8 -0
- package/dist/evals/stageDiff.js +48 -0
- package/dist/evals/stats.d.ts +95 -0
- package/dist/evals/stats.js +220 -0
- package/dist/evals/statsAdapter.d.ts +4 -0
- package/dist/evals/statsAdapter.js +30 -0
- package/dist/evals/statsTypes.d.ts +51 -0
- package/dist/evals/statsTypes.js +18 -0
- package/dist/evals/storeError.d.ts +5 -0
- package/dist/evals/storeError.js +8 -0
- package/dist/evals/storeTypes.d.ts +207 -0
- package/dist/evals/storeTypes.js +1 -0
- package/dist/evals/tTable.d.ts +3 -0
- package/dist/evals/tTable.js +15 -0
- package/dist/evals/triage/constants.d.ts +26 -0
- package/dist/evals/triage/constants.js +33 -0
- package/dist/evals/triage/credentials.d.ts +13 -0
- package/dist/evals/triage/credentials.js +20 -0
- package/dist/evals/triage/jevClassifier.d.ts +14 -0
- package/dist/evals/triage/jevClassifier.js +124 -0
- package/dist/evals/triage/judgeClassifier.d.ts +10 -0
- package/dist/evals/triage/judgeClassifier.js +76 -0
- package/dist/evals/triage/prompts.d.ts +16 -0
- package/dist/evals/triage/prompts.js +64 -0
- package/dist/evals/triage/service.d.ts +79 -0
- package/dist/evals/triage/service.js +217 -0
- package/dist/evals/triage/stateBuilder.d.ts +19 -0
- package/dist/evals/triage/stateBuilder.js +125 -0
- package/dist/evals/triage/types.d.ts +60 -0
- package/dist/evals/triage/types.js +8 -0
- package/dist/evals/types.d.ts +357 -0
- package/dist/evals/types.js +4 -0
- package/dist/guide/cardContract.d.ts +133 -0
- package/dist/guide/cardContract.js +156 -0
- package/dist/guide/chat.d.ts +45 -0
- package/dist/guide/chat.js +378 -0
- package/dist/guide/knowledge/index.d.ts +14 -0
- package/dist/guide/knowledge/index.js +109 -0
- package/dist/guide/knowledge/topics/agents.d.ts +2 -0
- package/dist/guide/knowledge/topics/agents.js +58 -0
- package/dist/guide/knowledge/topics/bestPractices.d.ts +2 -0
- package/dist/guide/knowledge/topics/bestPractices.js +67 -0
- package/dist/guide/knowledge/topics/connections.d.ts +2 -0
- package/dist/guide/knowledge/topics/connections.js +66 -0
- package/dist/guide/knowledge/topics/consoleMap.d.ts +2 -0
- package/dist/guide/knowledge/topics/consoleMap.js +55 -0
- package/dist/guide/knowledge/topics/evals.d.ts +2 -0
- package/dist/guide/knowledge/topics/evals.js +72 -0
- package/dist/guide/knowledge/topics/limitations.d.ts +2 -0
- package/dist/guide/knowledge/topics/limitations.js +84 -0
- package/dist/guide/knowledge/topics/mcpSkillsBrowser.d.ts +2 -0
- package/dist/guide/knowledge/topics/mcpSkillsBrowser.js +57 -0
- package/dist/guide/knowledge/topics/memories.d.ts +2 -0
- package/dist/guide/knowledge/topics/memories.js +63 -0
- package/dist/guide/knowledge/topics/modelsAndProviders.d.ts +2 -0
- package/dist/guide/knowledge/topics/modelsAndProviders.js +56 -0
- package/dist/guide/knowledge/topics/overview.d.ts +2 -0
- package/dist/guide/knowledge/topics/overview.js +56 -0
- package/dist/guide/knowledge/topics/pipelines.d.ts +2 -0
- package/dist/guide/knowledge/topics/pipelines.js +93 -0
- package/dist/guide/knowledge/topics/stages.d.ts +2 -0
- package/dist/guide/knowledge/topics/stages.js +54 -0
- package/dist/guide/knowledge/topics/tasks.d.ts +2 -0
- package/dist/guide/knowledge/topics/tasks.js +52 -0
- package/dist/guide/knowledge/topics/triggers.d.ts +2 -0
- package/dist/guide/knowledge/topics/triggers.js +68 -0
- package/dist/guide/knowledge/topics/troubleshooting.d.ts +2 -0
- package/dist/guide/knowledge/topics/troubleshooting.js +85 -0
- package/dist/guide/knowledgeTools.d.ts +2 -0
- package/dist/guide/knowledgeTools.js +56 -0
- package/dist/guide/showUi.d.ts +6 -0
- package/dist/guide/showUi.js +546 -0
- package/dist/guide/threadStore.d.ts +48 -0
- package/dist/guide/threadStore.js +189 -0
- package/dist/guide/writeRoot.d.ts +11 -0
- package/dist/guide/writeRoot.js +70 -0
- package/dist/hosted/translate.js +2 -0
- package/dist/mcp/agentTools.js +12 -0
- package/dist/mcp/catalogTools.js +18 -20
- package/dist/mcp/catalogWriteTools.d.ts +8 -0
- package/dist/mcp/catalogWriteTools.js +225 -0
- package/dist/mcp/connectionTools.d.ts +3 -0
- package/dist/mcp/connectionTools.js +85 -0
- package/dist/mcp/controlTools.js +34 -1
- package/dist/mcp/deps.d.ts +16 -0
- package/dist/mcp/evalTools.d.ts +3 -0
- package/dist/mcp/evalTools.js +943 -0
- package/dist/mcp/memoryHostTools.d.ts +3 -0
- package/dist/mcp/memoryHostTools.js +72 -0
- package/dist/mcp/pipelineAuthorTools.js +14 -1
- package/dist/mcp/server.js +6 -0
- package/dist/mcp/tools.js +8 -0
- package/dist/mcp/triggerTools.js +77 -31
- package/dist/models/response.d.ts +7 -2
- package/dist/models/response.js +6 -1
- package/dist/operatorAgent/agentAuthorContext.d.ts +1 -1
- package/dist/operatorAgent/agentAuthorContext.js +1 -1
- package/dist/operatorAgent/evalGate.d.ts +22 -0
- package/dist/operatorAgent/evalGate.js +77 -0
- package/dist/operatorAgent/fakeHost.js +10 -2
- package/dist/operatorAgent/host.js +18 -2
- package/dist/operatorAgent/index.d.ts +1 -0
- package/dist/operatorAgent/index.js +1 -0
- package/dist/operatorAgent/internalAgents.d.ts +11 -0
- package/dist/operatorAgent/internalAgents.js +13 -0
- package/dist/operatorAgent/piModel.d.ts +5 -1
- package/dist/operatorAgent/piModel.js +32 -14
- package/dist/operatorAgent/profiles/agentAuthor.d.ts +3 -1
- package/dist/operatorAgent/profiles/agentAuthor.js +201 -32
- package/dist/operatorAgent/profiles/agentAuthorPlaybook.d.ts +1 -1
- package/dist/operatorAgent/profiles/agentAuthorPlaybook.js +48 -15
- package/dist/operatorAgent/profiles/authorReadable.d.ts +2 -0
- package/dist/operatorAgent/profiles/authorReadable.js +26 -0
- package/dist/operatorAgent/profiles/guideConfirm.d.ts +21 -0
- package/dist/operatorAgent/profiles/guideConfirm.js +100 -0
- package/dist/operatorAgent/profiles/guideTools.d.ts +7 -0
- package/dist/operatorAgent/profiles/guideTools.js +123 -0
- package/dist/operatorAgent/profiles/stageflowGuide.d.ts +7 -0
- package/dist/operatorAgent/profiles/stageflowGuide.js +132 -0
- package/dist/operatorAgent/profiles/workshopAuthor.js +23 -0
- package/dist/operatorAgent/profiles/workshopAuthorPlaybook.d.ts +1 -1
- package/dist/operatorAgent/profiles/workshopAuthorPlaybook.js +9 -1
- package/dist/operatorAgent/profiles/workshopAuthorTools.d.ts +2 -0
- package/dist/operatorAgent/profiles/workshopAuthorTools.js +197 -9
- package/dist/operatorAgent/types.d.ts +23 -0
- package/dist/package-meta.d.ts +1 -1
- package/dist/package-meta.js +1 -1
- package/dist/runstore/port.d.ts +43 -0
- package/dist/runstore/retention.d.ts +2 -1
- package/dist/runstore/retention.js +3 -7
- package/dist/runstore/runStatusClock.d.ts +17 -0
- package/dist/runstore/runStatusClock.js +19 -0
- package/dist/runstore/sqlite/SqliteRunStore.d.ts +29 -0
- package/dist/runstore/sqlite/SqliteRunStore.js +144 -50
- package/dist/runstore/sqlite/evalStore.d.ts +20 -0
- package/dist/runstore/sqlite/evalStore.js +541 -0
- package/dist/runstore/sqlite/migrations/015-evals.d.ts +12 -0
- package/dist/runstore/sqlite/migrations/015-evals.js +157 -0
- package/dist/runstore/sqlite/migrations/016-eval-subject-ref.d.ts +12 -0
- package/dist/runstore/sqlite/migrations/016-eval-subject-ref.js +20 -0
- package/dist/runstore/sqlite/migrations/017-eval-result-suggestions.d.ts +11 -0
- package/dist/runstore/sqlite/migrations/017-eval-result-suggestions.js +36 -0
- package/dist/runstore/sqlite/migrations/index.js +6 -0
- package/dist/runstore/sqlite/suggestionStore.d.ts +14 -0
- package/dist/runstore/sqlite/suggestionStore.js +132 -0
- package/dist/runstore/workspaceLayout.js +6 -1
- package/dist/runtime/artifactDiskInspect.d.ts +14 -0
- package/dist/runtime/artifactDiskInspect.js +52 -0
- package/dist/runtime/artifactPath.d.ts +24 -0
- package/dist/runtime/artifactPath.js +84 -0
- package/dist/runtime/completionCheckRunner.js +15 -43
- package/dist/runtime/githubPollSource.d.ts +22 -4
- package/dist/runtime/githubPollSource.js +93 -8
- package/dist/runtime/pipelineRunner.d.ts +2 -1
- package/dist/runtime/pipelineRunner.js +2 -0
- package/dist/runtime/priorArtifactGrants.d.ts +8 -0
- package/dist/runtime/priorArtifactGrants.js +105 -0
- package/dist/runtime/runActionEligibility.d.ts +46 -0
- package/dist/runtime/runActionEligibility.js +123 -0
- package/dist/runtime/runManager.d.ts +6 -2
- package/dist/runtime/runManager.js +60 -16
- package/dist/runtime/runRetentionSweep.js +2 -2
- package/dist/runtime/runRetryCoordinator.d.ts +2 -14
- package/dist/runtime/runRetryCoordinator.js +3 -67
- package/dist/runtime/sandboxContainer.d.ts +7 -0
- package/dist/runtime/sandboxContainer.js +48 -6
- package/dist/runtime/sandboxDesk.d.ts +2 -1
- package/dist/runtime/sandboxDesk.js +11 -12
- package/dist/runtime/stageEnvironment.js +1 -0
- package/dist/runtime/stageRoots.d.ts +12 -0
- package/dist/runtime/stageSandbox.d.ts +2 -1
- package/dist/runtime/stageSandbox.js +18 -2
- package/dist/runtime/stageWorker.js +20 -0
- package/dist/server/agentAuthorRoutes.js +59 -1
- package/dist/server/bootstrap.d.ts +13 -0
- package/dist/server/bootstrap.js +69 -0
- package/dist/server/controlToken.js +3 -0
- package/dist/server/evalInternalRoutes.d.ts +14 -0
- package/dist/server/evalInternalRoutes.js +87 -0
- package/dist/server/evalRouteContext.d.ts +46 -0
- package/dist/server/evalRouteContext.js +43 -0
- package/dist/server/evalRoutes.d.ts +5 -0
- package/dist/server/evalRoutes.js +1456 -0
- package/dist/server/evalTriageRoutes.d.ts +2 -0
- package/dist/server/evalTriageRoutes.js +95 -0
- package/dist/server/guideRoutes.d.ts +5 -0
- package/dist/server/guideRoutes.js +166 -0
- package/dist/server/http.d.ts +15 -0
- package/dist/server/http.js +67 -3
- package/dist/server/internalAgentRoutes.d.ts +6 -0
- package/dist/server/internalAgentRoutes.js +12 -0
- package/dist/server/mcpHost.js +5 -0
- package/dist/toolkit/meta.d.ts +1 -1
- package/dist/toolkit/meta.js +53 -0
- package/dist/toolkit/profiles.d.ts +5 -0
- package/dist/toolkit/profiles.js +13 -1
- package/dist/tools/askOperator.js +2 -1
- package/dist/tools/emitStageEnvelope.d.ts +17 -16
- package/dist/tools/emitStageEnvelope.js +46 -32
- package/dist/tools/stageToolNames.d.ts +4 -0
- package/dist/tools/stageToolNames.js +4 -0
- package/dist/tools/workingState.d.ts +40 -0
- package/dist/tools/workingState.js +108 -0
- package/dist/tools/writeStageArtifact.d.ts +0 -9
- package/dist/tools/writeStageArtifact.js +2 -1
- package/dist/types/stageflowManifest.d.ts +6 -0
- package/dist/ui/assets/{MarkdownText-D7tYaIFO.js → MarkdownText-S5C_vemc.js} +2 -2
- package/dist/ui/assets/adapters-C0l4ruiR.js +17 -0
- package/dist/ui/assets/chat-CjnsmvqR.js +2 -0
- package/dist/ui/assets/chat-DFDd4UjS.css +2 -0
- package/dist/ui/assets/{main-BFo79krC.css → main-Del1GeLf.css} +1 -1
- package/dist/ui/assets/main-_yXVqcW9.js +277 -0
- package/dist/ui/chat.html +3 -4
- package/dist/ui/index.html +3 -4
- package/dist/workshop/chatTurn.js +1 -1
- package/dist/workshop/workshopPin.d.ts +3 -3
- package/dist/workshop/workshopPin.js +16 -15
- package/examples/README.md +2 -0
- package/examples/compaction-stress/README.md +30 -0
- package/examples/compaction-stress/check-run.mjs +53 -0
- package/examples/compaction-stress/collect-evidence.yaml +60 -0
- package/examples/compaction-stress/compaction-stress.pipeline.yaml +141 -0
- package/examples/compaction-stress/compaction-stress.task.yaml +15 -0
- package/examples/compaction-stress/generate-evidence.mjs +110 -0
- package/examples/compaction-stress/root-cause.yaml +26 -0
- package/examples/compaction-stress/stageflow.yaml +9 -0
- package/examples/compaction-stress/write-postmortem.yaml +40 -0
- package/examples/document-policy-review/README.md +35 -0
- package/examples/document-policy-review/agents/compliance.agent.yaml +42 -0
- package/examples/document-policy-review/documents/acme-vendor-sow.md +15 -0
- package/examples/document-policy-review/documents/support-runbook.md +13 -0
- package/examples/document-policy-review/policies/acceptable-use.md +13 -0
- package/examples/document-policy-review/policies/data-handling.md +17 -0
- package/examples/document-policy-review/policies/vendor-security.md +17 -0
- package/examples/evals/README.md +141 -0
- package/examples/evals/critique-sample.dataset.jsonl +8 -0
- package/examples/evals/critique-sample.eval.yaml +34 -0
- package/examples/evals/critique-sample.task.yaml +4 -0
- package/examples/evals/eval-sample.pipeline.yaml +35 -0
- package/examples/evals/guide-behavior.dataset.jsonl +15 -0
- package/examples/evals/guide-behavior.eval.yaml +35 -0
- package/examples/evals/guide-depth.dataset.jsonl +35 -0
- package/examples/evals/guide-depth.eval.yaml +169 -0
- package/examples/evals/support-sample.agent.yaml +20 -0
- package/examples/evals/support-sample.dataset.jsonl +6 -0
- package/examples/evals/support-sample.eval.yaml +38 -0
- package/examples/memory/evals/guide-behavior.dataset.jsonl +15 -0
- package/examples/memory/evals/guide-behavior.eval.yaml +35 -0
- package/examples/memory/evals/guide-depth.dataset.jsonl +35 -0
- package/examples/memory/evals/guide-depth.eval.yaml +169 -0
- package/examples/stageflow.yaml +6 -0
- package/package.json +1 -1
- package/skills/stageflow/SKILL.md +5 -2
- package/skills/stageflow/references/control-surface.md +4 -2
- package/skills/stageflow/references/evals.md +68 -0
- package/skills/stageflow-author/SKILL.md +4 -0
- package/skills/stageflow-run/SKILL.md +4 -0
- package/dist/ui/assets/AssistantRuntimeProvider-CsiPFhCT.js +0 -9
- package/dist/ui/assets/ReadonlyStore-BfXqHykm.js +0 -6
- package/dist/ui/assets/chat-BbLukq9W.js +0 -5
- package/dist/ui/assets/chat-zIZU_bP1.css +0 -2
- package/dist/ui/assets/main-CijYMeM0.js +0 -259
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import path from "node:path";
|
|
2
|
+
import { Type } from "typebox";
|
|
2
3
|
import { peekDefaultModel } from "../../models/catalog.js";
|
|
3
4
|
import { parse as parseYaml } from "yaml";
|
|
4
5
|
import { CatalogPathError, resolveDefaultWriteRoot, } from "../../config/catalogRelativePath.js";
|
|
5
6
|
import { defaultWorkshopPackageDirectory } from "../../config/ensureCatalogScanRoot.js";
|
|
7
|
+
import { canonicalizeNeedTerminalState } from "../../config/pipelineNeeds.js";
|
|
6
8
|
import { publishDraftPackage } from "../../config/publishDraftPackage.js";
|
|
7
9
|
import { globalStageflowHome } from "../../project/globalHome.js";
|
|
8
10
|
import { emptyDraftPackage, isWorkshopDraftContext, readDraftFromContext, withDraft, } from "../draftContext.js";
|
|
@@ -34,6 +36,9 @@ export const WORKSHOP_AUTHOR_TOOL_NAMES = [
|
|
|
34
36
|
"retrieve_docs",
|
|
35
37
|
];
|
|
36
38
|
export const WORKSHOP_FORBIDDEN_AGENT_TOOLS = ["bash", "write", "edit"];
|
|
39
|
+
const closed = { additionalProperties: false };
|
|
40
|
+
const jsonObject = Type.Record(Type.String(), Type.Unknown());
|
|
41
|
+
const emptyParams = Type.Object({}, closed);
|
|
37
42
|
const REQUIRED_IO = {
|
|
38
43
|
io: {
|
|
39
44
|
input: { schema: { type: "object" } },
|
|
@@ -82,6 +87,9 @@ function stringArg(args, key) {
|
|
|
82
87
|
const value = args[key];
|
|
83
88
|
return typeof value === "string" && value.trim() ? value.trim() : undefined;
|
|
84
89
|
}
|
|
90
|
+
function isStringList(value) {
|
|
91
|
+
return Array.isArray(value) && value.every((item) => typeof item === "string");
|
|
92
|
+
}
|
|
85
93
|
function applyMutation(ctx, summary, nextDraft) {
|
|
86
94
|
const current = readDraftFromContext(ctx.getContext());
|
|
87
95
|
const proposal = {
|
|
@@ -174,6 +182,52 @@ async function resolveSaveWriteTarget(ctx, options) {
|
|
|
174
182
|
await store.close();
|
|
175
183
|
}
|
|
176
184
|
}
|
|
185
|
+
function normalizeRouteOnField(on) {
|
|
186
|
+
if (Array.isArray(on)) {
|
|
187
|
+
return on.map((item) => canonicalizeNeedTerminalState(item) ?? item);
|
|
188
|
+
}
|
|
189
|
+
const one = canonicalizeNeedTerminalState(on);
|
|
190
|
+
return one ?? on;
|
|
191
|
+
}
|
|
192
|
+
function normalizeRouteEntries(route) {
|
|
193
|
+
if (!Array.isArray(route))
|
|
194
|
+
return route;
|
|
195
|
+
return route.map((entry) => {
|
|
196
|
+
if (!entry || typeof entry !== "object" || Array.isArray(entry))
|
|
197
|
+
return entry;
|
|
198
|
+
const rec = entry;
|
|
199
|
+
if (rec.on === undefined)
|
|
200
|
+
return entry;
|
|
201
|
+
return { ...rec, on: normalizeRouteOnField(rec.on) };
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
function isInlinePipelineStageBody(stage) {
|
|
205
|
+
return stage.system_prompt !== undefined || stage.uses === undefined;
|
|
206
|
+
}
|
|
207
|
+
function normalizePipelineStagesRouteOn(stages, options) {
|
|
208
|
+
const next = stages.map((stage) => {
|
|
209
|
+
if (!stage || typeof stage !== "object")
|
|
210
|
+
return stage;
|
|
211
|
+
let out = { ...stage };
|
|
212
|
+
if (Array.isArray(out.route)) {
|
|
213
|
+
out = {
|
|
214
|
+
...out,
|
|
215
|
+
route: normalizeRouteEntries(out.route),
|
|
216
|
+
};
|
|
217
|
+
}
|
|
218
|
+
if (isInlinePipelineStageBody(out) && out.io === undefined) {
|
|
219
|
+
out = { ...out, ...REQUIRED_IO };
|
|
220
|
+
}
|
|
221
|
+
return out;
|
|
222
|
+
});
|
|
223
|
+
if (options?.ensureEntry &&
|
|
224
|
+
next.length > 0 &&
|
|
225
|
+
!next.some((stage) => stage?.entry === true)) {
|
|
226
|
+
const first = next[0];
|
|
227
|
+
next[0] = { ...first, entry: true };
|
|
228
|
+
}
|
|
229
|
+
return next;
|
|
230
|
+
}
|
|
177
231
|
export function buildCreateStageDraft(draft, args) {
|
|
178
232
|
const existingIds = new Set(draft.pipeline.stages.map((s) => (typeof s.id === "string" ? s.id : "")));
|
|
179
233
|
let stageId = stringArg(args, "id") ??
|
|
@@ -211,7 +265,7 @@ export function buildCreateStageDraft(draft, args) {
|
|
|
211
265
|
...(entry ? { entry: true } : {}),
|
|
212
266
|
};
|
|
213
267
|
if (Array.isArray(args.route)) {
|
|
214
|
-
pipelineEntry.route = args.route;
|
|
268
|
+
pipelineEntry.route = normalizeRouteEntries(args.route);
|
|
215
269
|
}
|
|
216
270
|
const nextDraft = {
|
|
217
271
|
...draft,
|
|
@@ -244,7 +298,7 @@ export function buildEditStageDraft(draft, args) {
|
|
|
244
298
|
if (typeof args.entry === "boolean")
|
|
245
299
|
next.entry = args.entry;
|
|
246
300
|
if (Array.isArray(args.route))
|
|
247
|
-
next.route = args.route;
|
|
301
|
+
next.route = normalizeRouteEntries(args.route);
|
|
248
302
|
if (stringArg(args, "uses"))
|
|
249
303
|
next.uses = stringArg(args, "uses");
|
|
250
304
|
return next;
|
|
@@ -317,7 +371,16 @@ export function buildCreatePipelineDraft(draft, args) {
|
|
|
317
371
|
ok: true,
|
|
318
372
|
nextDraft: {
|
|
319
373
|
...draft,
|
|
320
|
-
pipeline: {
|
|
374
|
+
pipeline: {
|
|
375
|
+
...pipeline,
|
|
376
|
+
id: pipeline.id.trim(),
|
|
377
|
+
model: typeof pipeline.model === "string" && pipeline.model.trim()
|
|
378
|
+
? pipeline.model
|
|
379
|
+
: stringArg(args, "model") ?? peekDefaultModel(),
|
|
380
|
+
stages: normalizePipelineStagesRouteOn(pipeline.stages, {
|
|
381
|
+
ensureEntry: true,
|
|
382
|
+
}),
|
|
383
|
+
},
|
|
321
384
|
...(Array.isArray(args.stages)
|
|
322
385
|
? { stages: args.stages }
|
|
323
386
|
: {}),
|
|
@@ -331,15 +394,51 @@ export function buildCreatePipelineDraft(draft, args) {
|
|
|
331
394
|
pipeline: {
|
|
332
395
|
...draft.pipeline,
|
|
333
396
|
id,
|
|
334
|
-
|
|
397
|
+
model: stringArg(args, "model") ?? peekDefaultModel(),
|
|
335
398
|
...(args.agent !== undefined ? { agent: args.agent } : {}),
|
|
336
399
|
...(Array.isArray(args.stages)
|
|
337
|
-
? {
|
|
400
|
+
? {
|
|
401
|
+
stages: normalizePipelineStagesRouteOn(args.stages, { ensureEntry: true }),
|
|
402
|
+
}
|
|
338
403
|
: {}),
|
|
339
404
|
},
|
|
340
405
|
},
|
|
341
406
|
};
|
|
342
407
|
}
|
|
408
|
+
function normalizeDraftStagePath(stagePath) {
|
|
409
|
+
return stagePath.replace(/\\/g, "/").replace(/^\.\//, "");
|
|
410
|
+
}
|
|
411
|
+
function stageWiringMatchesArtifact(stage, artifact) {
|
|
412
|
+
const id = typeof stage.id === "string" ? stage.id : "";
|
|
413
|
+
const uses = typeof stage.uses === "string" ? stage.uses : "";
|
|
414
|
+
const bodyId = typeof artifact.body.id === "string" ? artifact.body.id : "";
|
|
415
|
+
return ((uses.length > 0 &&
|
|
416
|
+
normalizeDraftStagePath(artifact.path) ===
|
|
417
|
+
normalizeDraftStagePath(uses)) ||
|
|
418
|
+
(id.length > 0 && bodyId === id));
|
|
419
|
+
}
|
|
420
|
+
/** Refuse stages wiring that diverges from draft.stages bodies (no silent prune). */
|
|
421
|
+
export function validateEditPipelineStagesWiring(draft, nextStages) {
|
|
422
|
+
const artifacts = draft.stages ?? [];
|
|
423
|
+
for (const stage of nextStages) {
|
|
424
|
+
const matched = artifacts.some((artifact) => stageWiringMatchesArtifact(stage, artifact));
|
|
425
|
+
if (!matched) {
|
|
426
|
+
const label = (typeof stage.id === "string" && stage.id) ||
|
|
427
|
+
(typeof stage.uses === "string" && stage.uses) ||
|
|
428
|
+
"(unnamed)";
|
|
429
|
+
return `edit_pipeline stages wiring references "${label}" without a matching stage body — use create_stage / edit_stage to add or change stage files`;
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
for (const artifact of artifacts) {
|
|
433
|
+
const stillWired = nextStages.some((stage) => stageWiringMatchesArtifact(stage, artifact));
|
|
434
|
+
if (!stillWired) {
|
|
435
|
+
const label = (typeof artifact.body.id === "string" && artifact.body.id) ||
|
|
436
|
+
artifact.path;
|
|
437
|
+
return `edit_pipeline stages wiring drops stage body "${label}" — use create_stage / edit_stage to change stage files; wiring-only remove is refused`;
|
|
438
|
+
}
|
|
439
|
+
}
|
|
440
|
+
return null;
|
|
441
|
+
}
|
|
343
442
|
export function buildEditPipelineDraft(draft, args) {
|
|
344
443
|
const patch = isPlainObject(args.patch) ? args.patch : args;
|
|
345
444
|
const nextPipeline = {
|
|
@@ -352,12 +451,30 @@ export function buildEditPipelineDraft(draft, args) {
|
|
|
352
451
|
if (patch.agent !== undefined)
|
|
353
452
|
nextPipeline.agent = patch.agent;
|
|
354
453
|
if (Array.isArray(patch.stages)) {
|
|
355
|
-
|
|
454
|
+
const nextStages = normalizePipelineStagesRouteOn(patch.stages);
|
|
455
|
+
const wiringError = validateEditPipelineStagesWiring(draft, nextStages);
|
|
456
|
+
if (wiringError)
|
|
457
|
+
return { ok: false, error: wiringError };
|
|
458
|
+
nextPipeline.stages = nextStages;
|
|
356
459
|
}
|
|
357
460
|
if (patch.schemas !== undefined)
|
|
358
461
|
nextPipeline.schemas = patch.schemas;
|
|
359
462
|
if (patch.requires !== undefined)
|
|
360
463
|
nextPipeline.requires = patch.requires;
|
|
464
|
+
if (isStringList(patch.memories)) {
|
|
465
|
+
if (patch.memories.length === 0)
|
|
466
|
+
delete nextPipeline.memories;
|
|
467
|
+
else
|
|
468
|
+
nextPipeline.memories = patch.memories;
|
|
469
|
+
}
|
|
470
|
+
if (patch.channels !== undefined) {
|
|
471
|
+
if (Array.isArray(patch.channels) && patch.channels.length === 0) {
|
|
472
|
+
delete nextPipeline.channels;
|
|
473
|
+
}
|
|
474
|
+
else {
|
|
475
|
+
nextPipeline.channels = patch.channels;
|
|
476
|
+
}
|
|
477
|
+
}
|
|
361
478
|
return {
|
|
362
479
|
ok: true,
|
|
363
480
|
nextDraft: { ...draft, pipeline: nextPipeline },
|
|
@@ -428,6 +545,7 @@ export function createWorkshopBuildTools() {
|
|
|
428
545
|
const listBuildsTool = {
|
|
429
546
|
name: "list_builds",
|
|
430
547
|
description: "List the same workshop rows as the studio picker (open builds and unbound disk pipelines). Each row includes catalogListed (whether Tasks/Pipelines would list that pipeline path). Does not create a build. Works when no build is focused.",
|
|
548
|
+
parameters: emptyParams,
|
|
431
549
|
async handler(_args, ctx) {
|
|
432
550
|
const live = liveWorkshopBinding(ctx);
|
|
433
551
|
if (!live) {
|
|
@@ -458,7 +576,14 @@ export function createWorkshopBuildTools() {
|
|
|
458
576
|
};
|
|
459
577
|
const focusBuildTool = {
|
|
460
578
|
name: "focus_build",
|
|
461
|
-
description: "Move this chat onto a build by id, or onto an unbound disk pipeline by projectRoot and relativePath. A failed open returns the error, creates nothing, and leaves the pointer unchanged.",
|
|
579
|
+
description: "Move this chat onto a build by id, or onto an unbound disk pipeline by projectRoot and relativePath. Mid-turn, the mutation pin moves with the focus so studio and draft tools stay on the same build. A failed open returns the error, creates nothing, and leaves the pointer unchanged.",
|
|
580
|
+
parameters: Type.Union([
|
|
581
|
+
Type.Object({ id: Type.String({ minLength: 1 }) }, closed),
|
|
582
|
+
Type.Object({
|
|
583
|
+
projectRoot: Type.String({ minLength: 1 }),
|
|
584
|
+
relativePath: Type.String({ minLength: 1 }),
|
|
585
|
+
}, closed),
|
|
586
|
+
]),
|
|
462
587
|
async handler(args, ctx) {
|
|
463
588
|
const live = liveWorkshopBinding(ctx);
|
|
464
589
|
if (!live) {
|
|
@@ -530,7 +655,8 @@ export function createWorkshopBuildTools() {
|
|
|
530
655
|
};
|
|
531
656
|
const createBuildTool = {
|
|
532
657
|
name: "create_build",
|
|
533
|
-
description: "Persist a new untitled build and focus it
|
|
658
|
+
description: "Persist a new untitled build and focus it when none is pinned. When a build is already pinned, returns that build without creating another. No build id argument.",
|
|
659
|
+
parameters: emptyParams,
|
|
534
660
|
async handler(_args, ctx) {
|
|
535
661
|
const live = liveWorkshopBinding(ctx);
|
|
536
662
|
if (!live) {
|
|
@@ -551,6 +677,13 @@ export function createWorkshopAuthorMutatingTools() {
|
|
|
551
677
|
const createPipelineTool = {
|
|
552
678
|
name: "create_pipeline",
|
|
553
679
|
description: "Create or replace the draft pipeline (id, optional model/stages). Mutates the in-memory draft immediately.",
|
|
680
|
+
parameters: Type.Object({
|
|
681
|
+
id: Type.String({ minLength: 1 }),
|
|
682
|
+
model: Type.Optional(Type.String()),
|
|
683
|
+
agent: Type.Optional(Type.Unknown()),
|
|
684
|
+
stages: Type.Optional(Type.Array(jsonObject)),
|
|
685
|
+
pipeline: Type.Optional(jsonObject),
|
|
686
|
+
}, closed),
|
|
554
687
|
handler(args, ctx) {
|
|
555
688
|
const built = buildCreatePipelineDraft(readDraftFromContext(ctx.getContext()), args);
|
|
556
689
|
if (!built.ok)
|
|
@@ -561,7 +694,18 @@ export function createWorkshopAuthorMutatingTools() {
|
|
|
561
694
|
};
|
|
562
695
|
const editPipelineTool = {
|
|
563
696
|
name: "edit_pipeline",
|
|
564
|
-
description: "Edit pipeline fields on the current draft (id, model, stages wiring, etc.). Mutates immediately.",
|
|
697
|
+
description: "Edit pipeline fields on the current draft (id, model, stages wiring, etc.). Stages wiring must match existing stage bodies — use create_stage / edit_stage to add or remove stages. Mutates immediately.",
|
|
698
|
+
parameters: Type.Object({
|
|
699
|
+
id: Type.Optional(Type.String()),
|
|
700
|
+
model: Type.Optional(Type.String()),
|
|
701
|
+
agent: Type.Optional(Type.Unknown()),
|
|
702
|
+
stages: Type.Optional(Type.Array(jsonObject)),
|
|
703
|
+
schemas: Type.Optional(Type.Unknown()),
|
|
704
|
+
requires: Type.Optional(Type.Unknown()),
|
|
705
|
+
memories: Type.Optional(Type.Array(Type.String())),
|
|
706
|
+
channels: Type.Optional(Type.Unknown()),
|
|
707
|
+
patch: Type.Optional(jsonObject),
|
|
708
|
+
}, closed),
|
|
565
709
|
handler(args, ctx) {
|
|
566
710
|
const built = buildEditPipelineDraft(readDraftFromContext(ctx.getContext()), args);
|
|
567
711
|
if (!built.ok)
|
|
@@ -573,6 +717,18 @@ export function createWorkshopAuthorMutatingTools() {
|
|
|
573
717
|
const createStageTool = {
|
|
574
718
|
name: "create_stage",
|
|
575
719
|
description: "Add a file-backed stage to the draft (uses: ./id.yaml + stage body with io). Mutates immediately; Accept confirms, Reject soft-undos.",
|
|
720
|
+
parameters: Type.Object({
|
|
721
|
+
id: Type.Optional(Type.String()),
|
|
722
|
+
summary: Type.Optional(Type.String()),
|
|
723
|
+
label: Type.Optional(Type.String()),
|
|
724
|
+
uses: Type.Optional(Type.String()),
|
|
725
|
+
body: Type.Optional(jsonObject),
|
|
726
|
+
system_prompt: Type.Optional(Type.String()),
|
|
727
|
+
model: Type.Optional(Type.String()),
|
|
728
|
+
io: Type.Optional(jsonObject),
|
|
729
|
+
entry: Type.Optional(Type.Boolean()),
|
|
730
|
+
route: Type.Optional(Type.Array(Type.Unknown())),
|
|
731
|
+
}, closed),
|
|
576
732
|
handler(args, ctx) {
|
|
577
733
|
const built = buildCreateStageDraft(readDraftFromContext(ctx.getContext()), args);
|
|
578
734
|
if (!built.ok)
|
|
@@ -584,6 +740,18 @@ export function createWorkshopAuthorMutatingTools() {
|
|
|
584
740
|
const editStageTool = {
|
|
585
741
|
name: "edit_stage",
|
|
586
742
|
description: "Edit an existing draft stage by id (body fields and/or pipeline entry route/entry/uses). Mutates immediately.",
|
|
743
|
+
parameters: Type.Object({
|
|
744
|
+
id: Type.String({ minLength: 1 }),
|
|
745
|
+
patch: Type.Optional(jsonObject),
|
|
746
|
+
body: Type.Optional(jsonObject),
|
|
747
|
+
pipeline_entry: Type.Optional(jsonObject),
|
|
748
|
+
entry: Type.Optional(Type.Boolean()),
|
|
749
|
+
route: Type.Optional(Type.Array(Type.Unknown())),
|
|
750
|
+
uses: Type.Optional(Type.String()),
|
|
751
|
+
system_prompt: Type.Optional(Type.String()),
|
|
752
|
+
model: Type.Optional(Type.String()),
|
|
753
|
+
io: Type.Optional(jsonObject),
|
|
754
|
+
}, closed),
|
|
587
755
|
handler(args, ctx) {
|
|
588
756
|
const built = buildEditStageDraft(readDraftFromContext(ctx.getContext()), args);
|
|
589
757
|
if (!built.ok)
|
|
@@ -595,6 +763,13 @@ export function createWorkshopAuthorMutatingTools() {
|
|
|
595
763
|
const createTaskTool = {
|
|
596
764
|
name: "create_task",
|
|
597
765
|
description: "Create or replace the optional task (id + goal) on the draft. Mutates immediately.",
|
|
766
|
+
parameters: Type.Object({
|
|
767
|
+
id: Type.Optional(Type.String()),
|
|
768
|
+
goal: Type.Optional(Type.String()),
|
|
769
|
+
summary: Type.Optional(Type.String()),
|
|
770
|
+
filename: Type.Optional(Type.String()),
|
|
771
|
+
body: Type.Optional(jsonObject),
|
|
772
|
+
}, closed),
|
|
598
773
|
handler(args, ctx) {
|
|
599
774
|
const built = buildCreateTaskDraft(readDraftFromContext(ctx.getContext()), args);
|
|
600
775
|
if (!built.ok)
|
|
@@ -606,6 +781,13 @@ export function createWorkshopAuthorMutatingTools() {
|
|
|
606
781
|
const editTaskTool = {
|
|
607
782
|
name: "edit_task",
|
|
608
783
|
description: "Edit the draft task fields (id, goal, body). Mutates immediately.",
|
|
784
|
+
parameters: Type.Object({
|
|
785
|
+
id: Type.Optional(Type.String()),
|
|
786
|
+
goal: Type.Optional(Type.String()),
|
|
787
|
+
filename: Type.Optional(Type.String()),
|
|
788
|
+
patch: Type.Optional(jsonObject),
|
|
789
|
+
body: Type.Optional(jsonObject),
|
|
790
|
+
}, closed),
|
|
609
791
|
handler(args, ctx) {
|
|
610
792
|
const built = buildEditTaskDraft(readDraftFromContext(ctx.getContext()), args);
|
|
611
793
|
if (!built.ok)
|
|
@@ -627,6 +809,12 @@ export function createSaveTool(options = {}) {
|
|
|
627
809
|
return {
|
|
628
810
|
name: "save",
|
|
629
811
|
description: "Validate-then-write the draft via catalog facades (createDraftPackage / overwriteDraftPackage). When directory is omitted, writes under workshop/<pipeline-id> on registered catalogs (or <pipeline-id> on the workspace catalog). The host adds registered workshop paths to stageflow.yaml so Run can see them. Pass directory only when the operator names a folder. Soft undo does not reverse disk. Prefer mode auto; set allowInvalid only when the operator explicitly requests saving invalid YAML. Do not pass projectRoot — the host binds it.",
|
|
812
|
+
parameters: Type.Object({
|
|
813
|
+
directory: Type.Optional(Type.String()),
|
|
814
|
+
pipelineFilename: Type.Optional(Type.String()),
|
|
815
|
+
mode: Type.Optional(Type.Union([Type.Literal("auto"), Type.Literal("create"), Type.Literal("overwrite")])),
|
|
816
|
+
allowInvalid: Type.Optional(Type.Boolean()),
|
|
817
|
+
}, closed),
|
|
630
818
|
async handler(args, ctx) {
|
|
631
819
|
const writeTarget = await resolveSaveWriteTarget(ctx, options);
|
|
632
820
|
if (!writeTarget.ok) {
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { TSchema } from "typebox";
|
|
1
2
|
import type { DraftPackage } from "../config/draftPackage.js";
|
|
2
3
|
import type { ValidationResult } from "../config/validateCatalog.js";
|
|
3
4
|
import type { AcceptProposalResult, ProposalArtifactDiff, UndoMutationResult } from "./proposals.js";
|
|
@@ -10,6 +11,7 @@ export type OperatorAgentToolHandler = (args: Record<string, unknown>, ctx: Oper
|
|
|
10
11
|
export type OperatorAgentTool = {
|
|
11
12
|
name: string;
|
|
12
13
|
description: string;
|
|
14
|
+
parameters: TSchema;
|
|
13
15
|
handler: OperatorAgentToolHandler;
|
|
14
16
|
};
|
|
15
17
|
export type OperatorAgentToolContext = {
|
|
@@ -17,6 +19,14 @@ export type OperatorAgentToolContext = {
|
|
|
17
19
|
setContext(next: unknown): void;
|
|
18
20
|
/** Apply mutation immediately and record an undo receipt. */
|
|
19
21
|
emitProposal(proposal: OperatorAgentProposal): void;
|
|
22
|
+
/**
|
|
23
|
+
* Set only on an eval session. Returning a result skips the tool handler.
|
|
24
|
+
* Returning null lets the handler run. Absent on Workshop, author and Guide sessions.
|
|
25
|
+
*/
|
|
26
|
+
evalGate?: {
|
|
27
|
+
decide(name: string, args: Record<string, unknown>): OperatorAgentToolResult | null;
|
|
28
|
+
observe(name: string, result: OperatorAgentToolResult): void;
|
|
29
|
+
};
|
|
20
30
|
};
|
|
21
31
|
export type OperatorAgentProposal = {
|
|
22
32
|
/** Mutation id (Accept confirms; Reject / undoMutation soft-undos). */
|
|
@@ -72,6 +82,10 @@ export type WorkshopToolActivityUpdate = {
|
|
|
72
82
|
draft?: DraftPackage;
|
|
73
83
|
/** Build the turn is editing. Absent when the chat is unlinked. */
|
|
74
84
|
buildId?: string;
|
|
85
|
+
/** Tool arguments, on `running`. */
|
|
86
|
+
args?: Record<string, unknown>;
|
|
87
|
+
/** Tool result `content`, on `complete`. */
|
|
88
|
+
result?: unknown;
|
|
75
89
|
};
|
|
76
90
|
export type OperatorAgentSession = {
|
|
77
91
|
readonly profileId: string;
|
|
@@ -111,6 +125,15 @@ export type OperatorAgentHost = {
|
|
|
111
125
|
profileId: string;
|
|
112
126
|
context: unknown;
|
|
113
127
|
}): OperatorAgentSession;
|
|
128
|
+
/**
|
|
129
|
+
* A session whose tools pass through `gate` before they run. The gate is required:
|
|
130
|
+
* an eval session with no gate is refused.
|
|
131
|
+
*/
|
|
132
|
+
openEvalSession(input: {
|
|
133
|
+
profileId: string;
|
|
134
|
+
context: unknown;
|
|
135
|
+
gate: NonNullable<OperatorAgentToolContext["evalGate"]>;
|
|
136
|
+
}): OperatorAgentSession;
|
|
114
137
|
};
|
|
115
138
|
export type WorkshopDraftContext = {
|
|
116
139
|
draft: DraftPackage;
|
package/dist/package-meta.d.ts
CHANGED
package/dist/package-meta.js
CHANGED
package/dist/runstore/port.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { StageLogLine } from "../agent/activity.js";
|
|
2
|
+
import type { EvalTargetKind } from "../evals/constants.js";
|
|
2
3
|
import type { ConfigOriginRecord } from "../config/configOrigin.js";
|
|
3
4
|
import type { RunSubmission, RunSubmissionRecord } from "./submission.js";
|
|
4
5
|
import type { AskOperatorPrompt } from "../tools/askOperator.js";
|
|
@@ -8,6 +9,9 @@ import type { CompletionCheck } from "../types/completion.js";
|
|
|
8
9
|
import type { StageGateKind } from "../types/stage.js";
|
|
9
10
|
import type { StageUsage } from "../types/usage.js";
|
|
10
11
|
import type { OverviewRunRow } from "./overviewSummary.js";
|
|
12
|
+
import type { CreateEvalRunInput, EvalCaseInput, EvalCaseRow, EvalGraderVersionInput, EvalResultInput, EvalResultWithGrades, EvalReviewPatch, EvalReviewRow, EvalRunPage, EvalRunProgress, EvalRunRow, FinishEvalRunInput, ListEvalRunsQuery } from "../evals/storeTypes.js";
|
|
13
|
+
import type { SuggestionStatus } from "../evals/triage/constants.js";
|
|
14
|
+
import type { SuggestionInput, SuggestionRow } from "../evals/triage/types.js";
|
|
11
15
|
export type { ConfigOriginRecord };
|
|
12
16
|
export type RunStatus = "created" | "queued" | "running" | "succeeded" | "failed" | "cancelled";
|
|
13
17
|
export type RunPipelineDagSnapshot = ResolvedPipelineDag & {
|
|
@@ -40,6 +44,7 @@ export type PipelineTrackProjection = {
|
|
|
40
44
|
nodes: PipelineTrackNode[];
|
|
41
45
|
edges: PipelineTrackEdge[];
|
|
42
46
|
};
|
|
47
|
+
export type RunOrigin = "eval";
|
|
43
48
|
export type RunMeta = {
|
|
44
49
|
run_id: string;
|
|
45
50
|
pipeline_id: string;
|
|
@@ -69,6 +74,8 @@ export type RunMeta = {
|
|
|
69
74
|
config_origins?: ConfigOriginRecord[];
|
|
70
75
|
pipeline_source?: "inline" | "path";
|
|
71
76
|
caller_id?: string;
|
|
77
|
+
/** `eval` for stage runs started by an eval run; absent for normal runs. */
|
|
78
|
+
origin?: RunOrigin;
|
|
72
79
|
run_manifest?: unknown;
|
|
73
80
|
skip_gates?: boolean;
|
|
74
81
|
/**
|
|
@@ -372,6 +379,7 @@ export type CreateRunInput = {
|
|
|
372
379
|
*/
|
|
373
380
|
inlinePipeline?: InlinePipelineDefinition;
|
|
374
381
|
callerId?: string;
|
|
382
|
+
origin?: RunOrigin;
|
|
375
383
|
runManifest?: unknown;
|
|
376
384
|
skipGates?: boolean;
|
|
377
385
|
};
|
|
@@ -382,6 +390,8 @@ export type ListRunsFilter = {
|
|
|
382
390
|
/** Match pipeline_id or pipeline_path */
|
|
383
391
|
pipeline?: string;
|
|
384
392
|
caller_id?: string;
|
|
393
|
+
/** Default (undefined) hides eval stage runs; `"any"` includes them; `"eval"` returns only them. */
|
|
394
|
+
origin?: RunOrigin | "any";
|
|
385
395
|
};
|
|
386
396
|
/**
|
|
387
397
|
* Persistence port for pipeline run state.
|
|
@@ -466,6 +476,39 @@ export interface RunStore {
|
|
|
466
476
|
listRuns(filter?: ListRunsFilter): Promise<RunSummary[]>;
|
|
467
477
|
/** One light row per run created at or after `since` (ISO), newest first, with summed stage cost. No stages are loaded. */
|
|
468
478
|
listRunOverviewRows(since: string): Promise<OverviewRunRow[]>;
|
|
479
|
+
createEvalRun(input: CreateEvalRunInput): Promise<EvalRunRow>;
|
|
480
|
+
insertEvalCases(evalRunId: string, cases: EvalCaseInput[]): Promise<void>;
|
|
481
|
+
/** Result row and its grade rows in one transaction; replaces any earlier grades for the same result. */
|
|
482
|
+
upsertEvalResult(result: EvalResultInput): Promise<void>;
|
|
483
|
+
updateEvalRunProgress(evalRunId: string, progress: EvalRunProgress): Promise<void>;
|
|
484
|
+
finishEvalRun(evalRunId: string, input: FinishEvalRunInput): Promise<void>;
|
|
485
|
+
getEvalRun(evalRunId: string): Promise<EvalRunRow | null>;
|
|
486
|
+
getEvalRunByNumber(projectRoot: string, evalId: string, runNumber: number): Promise<EvalRunRow | null>;
|
|
487
|
+
listEvalRuns(query: ListEvalRunsQuery): Promise<EvalRunPage>;
|
|
488
|
+
listEvalResults(evalRunId: string): Promise<EvalResultWithGrades[]>;
|
|
489
|
+
getEvalResultsForCase(evalRunId: string, caseId: string): Promise<EvalResultWithGrades[]>;
|
|
490
|
+
getEvalCases(evalRunId: string): Promise<EvalCaseRow[]>;
|
|
491
|
+
/** `tags` replaces the tag set and is accepted only for results with `passed = 0`. */
|
|
492
|
+
putEvalReview(evalRunId: string, caseId: string, repeatIndex: number, patch: EvalReviewPatch): Promise<EvalReviewRow>;
|
|
493
|
+
getEvalReviews(evalRunId: string): Promise<EvalReviewRow[]>;
|
|
494
|
+
/** The eval's failure-type vocabulary, most recently used first. */
|
|
495
|
+
listFailureTypes(projectRoot: string, evalId: string): Promise<string[]>;
|
|
496
|
+
/** Inserts unseen grader hashes with the next ordinal per grader id; returns grader id to ordinal. */
|
|
497
|
+
recordGraderVersions(projectRoot: string, evalId: string, graders: EvalGraderVersionInput[]): Promise<Record<string, number>>;
|
|
498
|
+
/** Deletes the eval run and its rows; returns the stage run ids it started so the caller can delete those runs. */
|
|
499
|
+
deleteEvalRun(evalRunId: string): Promise<string[]>;
|
|
500
|
+
/** Distinct non-null result subject refs (stage run ids or agent session ids) when the run's target kind matches. */
|
|
501
|
+
listEvalSubjectRefs(evalRunId: string, targetKind: EvalTargetKind): Promise<string[]>;
|
|
502
|
+
/** Inserts or replaces pending suggestions (accepted and dismissed are kept); returns the rows written. */
|
|
503
|
+
upsertEvalSuggestions(evalRunId: string, inputs: SuggestionInput[]): Promise<SuggestionRow[]>;
|
|
504
|
+
listEvalSuggestions(evalRunId: string, status?: SuggestionStatus): Promise<SuggestionRow[]>;
|
|
505
|
+
/** Pending only; returns how many changed. */
|
|
506
|
+
dismissEvalSuggestions(evalRunId: string, ids: string[]): Promise<number>;
|
|
507
|
+
/** Pending only; adds the failure type and `bucket:` tags through the review write path. */
|
|
508
|
+
acceptEvalSuggestions(evalRunId: string, ids: string[]): Promise<{
|
|
509
|
+
accepted: number;
|
|
510
|
+
tagged: number;
|
|
511
|
+
}>;
|
|
469
512
|
/** Idempotent upsert; returns the realpath/resolve-normalized absolute key. */
|
|
470
513
|
ensureProject(absPath: string): Promise<string>;
|
|
471
514
|
/** Absolute roots from the durable projects registry. */
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { RunMeta, RunStatus } from "./port.js";
|
|
2
|
+
import { type RunClockTerminalStatus } from "./runStatusClock.js";
|
|
2
3
|
export type RetentionDecision = "none" | "slim" | "purge";
|
|
3
4
|
export type StatusRetentionWindow = {
|
|
4
5
|
slimMs: number;
|
|
@@ -24,4 +25,4 @@ export declare function slimArtifactMaxBytesFromEnv(env?: NodeJS.ProcessEnv): nu
|
|
|
24
25
|
* Already-slimmed rows past SLIM but not PURGE return `"none"` (R18).
|
|
25
26
|
*/
|
|
26
27
|
export declare function retentionDecision(row: RetentionRow, now: Date, windows?: RetentionWindows): RetentionDecision;
|
|
27
|
-
export declare function isTerminalRunStatus(status: RunStatus | undefined): status is
|
|
28
|
+
export declare function isTerminalRunStatus(status: RunStatus | undefined): status is RunClockTerminalStatus;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { isRunClockTerminal, } from "./runStatusClock.js";
|
|
1
2
|
export const DAY_MS = 24 * 60 * 60 * 1000;
|
|
2
3
|
/** Defaults: succeeded 3d/30d; failed and cancelled 30d/90d (R30 / AE6). */
|
|
3
4
|
export const DEFAULT_RETENTION_WINDOWS = {
|
|
@@ -7,11 +8,6 @@ export const DEFAULT_RETENTION_WINDOWS = {
|
|
|
7
8
|
};
|
|
8
9
|
export const DEFAULT_BARE_CACHE_TTL_MS = 30 * DAY_MS;
|
|
9
10
|
export const DEFAULT_SLIM_ARTIFACT_MAX_BYTES = 1024 * 1024;
|
|
10
|
-
const TERMINAL = new Set([
|
|
11
|
-
"succeeded",
|
|
12
|
-
"failed",
|
|
13
|
-
"cancelled",
|
|
14
|
-
]);
|
|
15
11
|
function parsePositiveMs(raw) {
|
|
16
12
|
if (raw === undefined)
|
|
17
13
|
return undefined;
|
|
@@ -52,7 +48,7 @@ export function slimArtifactMaxBytesFromEnv(env = process.env) {
|
|
|
52
48
|
*/
|
|
53
49
|
export function retentionDecision(row, now, windows = DEFAULT_RETENTION_WINDOWS) {
|
|
54
50
|
const status = row.status;
|
|
55
|
-
if (
|
|
51
|
+
if (!isRunClockTerminal(status))
|
|
56
52
|
return "none";
|
|
57
53
|
if (row.finished_at === undefined || row.finished_at === "")
|
|
58
54
|
return "none";
|
|
@@ -70,5 +66,5 @@ export function retentionDecision(row, now, windows = DEFAULT_RETENTION_WINDOWS)
|
|
|
70
66
|
return "none";
|
|
71
67
|
}
|
|
72
68
|
export function isTerminalRunStatus(status) {
|
|
73
|
-
return
|
|
69
|
+
return isRunClockTerminal(status);
|
|
74
70
|
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export declare const RUN_CLOCK_TERMINAL_STATUSES: readonly ["succeeded", "failed", "cancelled"];
|
|
2
|
+
export type RunClockTerminalStatus = (typeof RUN_CLOCK_TERMINAL_STATUSES)[number];
|
|
3
|
+
export type RunClockStatus = "created" | "queued" | "running" | RunClockTerminalStatus;
|
|
4
|
+
export declare function isRunClockTerminal(status: string | undefined): status is RunClockTerminalStatus;
|
|
5
|
+
export type FinishedAtDecision = {
|
|
6
|
+
action: "stamp";
|
|
7
|
+
finishedAt: string;
|
|
8
|
+
} | {
|
|
9
|
+
action: "keep";
|
|
10
|
+
} | {
|
|
11
|
+
action: "clear";
|
|
12
|
+
};
|
|
13
|
+
export declare function nextFinishedAt(input: {
|
|
14
|
+
nextStatus: RunClockStatus;
|
|
15
|
+
currentFinishedAt: string | null | undefined;
|
|
16
|
+
now: string;
|
|
17
|
+
}): FinishedAtDecision;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export const RUN_CLOCK_TERMINAL_STATUSES = [
|
|
2
|
+
"succeeded",
|
|
3
|
+
"failed",
|
|
4
|
+
"cancelled",
|
|
5
|
+
];
|
|
6
|
+
const TERMINAL = new Set(RUN_CLOCK_TERMINAL_STATUSES);
|
|
7
|
+
export function isRunClockTerminal(status) {
|
|
8
|
+
return status !== undefined && TERMINAL.has(status);
|
|
9
|
+
}
|
|
10
|
+
export function nextFinishedAt(input) {
|
|
11
|
+
if (isRunClockTerminal(input.nextStatus)) {
|
|
12
|
+
if (input.currentFinishedAt != null &&
|
|
13
|
+
input.currentFinishedAt !== "") {
|
|
14
|
+
return { action: "keep" };
|
|
15
|
+
}
|
|
16
|
+
return { action: "stamp", finishedAt: input.now };
|
|
17
|
+
}
|
|
18
|
+
return { action: "clear" };
|
|
19
|
+
}
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
import Database from "better-sqlite3";
|
|
2
|
+
import type { CreateEvalRunInput, EvalCaseInput, EvalCaseRow, EvalGraderVersionInput, EvalResultInput, EvalResultWithGrades, EvalReviewPatch, EvalReviewRow, EvalRunPage, EvalRunProgress, EvalRunRow, FinishEvalRunInput, ListEvalRunsQuery } from "../../evals/storeTypes.js";
|
|
3
|
+
import type { EvalTargetKind } from "../../evals/constants.js";
|
|
2
4
|
import type { StageEnvelope } from "../../types/envelope.js";
|
|
3
5
|
import type { StageLogLine } from "../../agent/activity.js";
|
|
4
6
|
import { type CreateFeedbackLoopInput, type CreateFeedbackReplayInput, type CreateFeedbackReplayStagePassInput, type CreateForkGenerationInput, type CreateRunInput, type CreatedRun, type FeedbackLoopPatch, type FeedbackLoopRecord, type FeedbackLoopState, type FeedbackReplayPatch, type FeedbackReplayRecord, type FeedbackReplayStagePassPatch, type FeedbackReplayStagePassRecord, type ForkGenerationPatch, type ForkGenerationRecord, type ListRunsFilter, type RunDetail, type RunMeta, type RunPipelineDagSnapshot, type RunStatus, type RunStore, type RunSummary, type StageExecution, type StageExecutionPatch, type StageLogEvent, type TriggerRecord, type UpsertTriggerInput, type VerificationCheckResult, type VerificationCheckResultPatch, type ConfigOriginRecord } from "../port.js";
|
|
7
|
+
import type { SuggestionStatus } from "../../evals/triage/constants.js";
|
|
8
|
+
import type { SuggestionInput, SuggestionRow } from "../../evals/triage/types.js";
|
|
5
9
|
import type { OverviewRunRow } from "../overviewSummary.js";
|
|
6
10
|
import { type RunSubmissionRecord } from "../submission.js";
|
|
7
11
|
type SqliteRunStoreOpenerMode = "assert" | "migrate";
|
|
@@ -28,6 +32,7 @@ export declare class SqliteRunStore implements RunStore {
|
|
|
28
32
|
findRunByDispatchKey(dispatchKey: string): Promise<CreatedRun | undefined>;
|
|
29
33
|
private readSubmission;
|
|
30
34
|
getRunBySubmission(key: string): Promise<RunSubmissionRecord | null>;
|
|
35
|
+
private applyRunStatusUpdate;
|
|
31
36
|
updateRunStatus(runId: string, status: RunStatus): Promise<void>;
|
|
32
37
|
tryUpdateRunStatus(runId: string, status: RunStatus, expectedStatus: RunStatus): Promise<boolean>;
|
|
33
38
|
patchRunWorkspaceBinding(runId: string, patch: {
|
|
@@ -78,6 +83,30 @@ export declare class SqliteRunStore implements RunStore {
|
|
|
78
83
|
listStageEvents(runId: string, stageId: string, attempt?: number): Promise<StageLogEvent[]>;
|
|
79
84
|
listRuns(filter?: ListRunsFilter): Promise<RunSummary[]>;
|
|
80
85
|
listRunOverviewRows(since: string): Promise<OverviewRunRow[]>;
|
|
86
|
+
createEvalRun(input: CreateEvalRunInput): Promise<EvalRunRow>;
|
|
87
|
+
insertEvalCases(evalRunId: string, cases: EvalCaseInput[]): Promise<void>;
|
|
88
|
+
upsertEvalResult(result: EvalResultInput): Promise<void>;
|
|
89
|
+
updateEvalRunProgress(evalRunId: string, progress: EvalRunProgress): Promise<void>;
|
|
90
|
+
finishEvalRun(evalRunId: string, input: FinishEvalRunInput): Promise<void>;
|
|
91
|
+
getEvalRun(evalRunId: string): Promise<EvalRunRow | null>;
|
|
92
|
+
getEvalRunByNumber(projectRoot: string, evalId: string, runNumber: number): Promise<EvalRunRow | null>;
|
|
93
|
+
listEvalRuns(query: ListEvalRunsQuery): Promise<EvalRunPage>;
|
|
94
|
+
listEvalResults(evalRunId: string): Promise<EvalResultWithGrades[]>;
|
|
95
|
+
getEvalResultsForCase(evalRunId: string, caseId: string): Promise<EvalResultWithGrades[]>;
|
|
96
|
+
getEvalCases(evalRunId: string): Promise<EvalCaseRow[]>;
|
|
97
|
+
putEvalReview(evalRunId: string, caseId: string, repeatIndex: number, patch: EvalReviewPatch): Promise<EvalReviewRow>;
|
|
98
|
+
getEvalReviews(evalRunId: string): Promise<EvalReviewRow[]>;
|
|
99
|
+
listFailureTypes(projectRoot: string, evalId: string): Promise<string[]>;
|
|
100
|
+
recordGraderVersions(projectRoot: string, evalId: string, graders: EvalGraderVersionInput[]): Promise<Record<string, number>>;
|
|
101
|
+
listEvalSubjectRefs(evalRunId: string, targetKind: EvalTargetKind): Promise<string[]>;
|
|
102
|
+
upsertEvalSuggestions(evalRunId: string, inputs: SuggestionInput[]): Promise<SuggestionRow[]>;
|
|
103
|
+
listEvalSuggestions(evalRunId: string, status?: SuggestionStatus): Promise<SuggestionRow[]>;
|
|
104
|
+
dismissEvalSuggestions(evalRunId: string, ids: string[]): Promise<number>;
|
|
105
|
+
acceptEvalSuggestions(evalRunId: string, ids: string[]): Promise<{
|
|
106
|
+
accepted: number;
|
|
107
|
+
tagged: number;
|
|
108
|
+
}>;
|
|
109
|
+
deleteEvalRun(evalRunId: string): Promise<string[]>;
|
|
81
110
|
ensureProject(absPath: string): Promise<string>;
|
|
82
111
|
listRegisteredProjects(): Promise<string[]>;
|
|
83
112
|
upsertTrigger(input: UpsertTriggerInput): Promise<TriggerRecord>;
|