@cat-factory/orchestration 0.278.0 → 0.280.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/dist/container/dependencies.d.ts +18 -7
- package/dist/container/dependencies.d.ts.map +1 -1
- package/dist/container/execution-service.d.ts.map +1 -1
- package/dist/container/execution-service.js +4 -0
- package/dist/container/execution-service.js.map +1 -1
- package/dist/container/runtime.d.ts +1 -0
- package/dist/container/runtime.d.ts.map +1 -1
- package/dist/container/runtime.js +6 -0
- package/dist/container/runtime.js.map +1 -1
- package/dist/container.d.ts +8 -1
- package/dist/container.d.ts.map +1 -1
- package/dist/container.js.map +1 -1
- package/dist/modules/execution/AgentContextBuilder.d.ts +9 -10
- package/dist/modules/execution/AgentContextBuilder.d.ts.map +1 -1
- package/dist/modules/execution/AgentContextBuilder.js +35 -4
- package/dist/modules/execution/AgentContextBuilder.js.map +1 -1
- package/dist/modules/execution/ExecutionServiceDependencies.d.ts +7 -1
- package/dist/modules/execution/ExecutionServiceDependencies.d.ts.map +1 -1
- package/dist/modules/execution/run-context-admission.d.ts +1 -1
- package/dist/modules/execution/run-context-admission.d.ts.map +1 -1
- package/dist/modules/execution/run-context-admission.js +1 -0
- package/dist/modules/execution/run-context-admission.js.map +1 -1
- package/dist/modules/execution/run-skills.d.ts +27 -1
- package/dist/modules/execution/run-skills.d.ts.map +1 -1
- package/dist/modules/execution/run-skills.js +32 -2
- package/dist/modules/execution/run-skills.js.map +1 -1
- package/dist/modules/sandbox/SandboxRunService.d.ts +6 -1
- package/dist/modules/sandbox/SandboxRunService.d.ts.map +1 -1
- package/dist/modules/sandbox/SandboxRunService.js +34 -27
- package/dist/modules/sandbox/SandboxRunService.js.map +1 -1
- package/dist/modules/sandbox/SandboxService.d.ts +26 -3
- package/dist/modules/sandbox/SandboxService.d.ts.map +1 -1
- package/dist/modules/sandbox/SandboxService.js +81 -19
- package/dist/modules/sandbox/SandboxService.js.map +1 -1
- package/dist/modules/sandbox/sandbox-input.d.ts +16 -0
- package/dist/modules/sandbox/sandbox-input.d.ts.map +1 -0
- package/dist/modules/sandbox/sandbox-input.js +274 -0
- package/dist/modules/sandbox/sandbox-input.js.map +1 -0
- package/dist/modules/sandbox/sandbox.logic.d.ts +0 -8
- package/dist/modules/sandbox/sandbox.logic.d.ts.map +1 -1
- package/dist/modules/sandbox/sandbox.logic.js +4 -48
- package/dist/modules/sandbox/sandbox.logic.js.map +1 -1
- package/dist/modules/sandbox/sandboxAdmission.d.ts +36 -0
- package/dist/modules/sandbox/sandboxAdmission.d.ts.map +1 -0
- package/dist/modules/sandbox/sandboxAdmission.js +83 -0
- package/dist/modules/sandbox/sandboxAdmission.js.map +1 -0
- package/package.json +11 -11
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExecutionServiceDependencies.d.ts","sourceRoot":"","sources":["../../../src/modules/execution/ExecutionServiceDependencies.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,aAAa,EACb,qBAAqB,EACrB,qBAAqB,EACrB,eAAe,EACf,gBAAgB,EAChB,2BAA2B,EAC3B,eAAe,EACf,aAAa,EACb,uBAAuB,EACvB,KAAK,EACL,wBAAwB,EACxB,sBAAsB,EACtB,kBAAkB,EAClB,uBAAuB,EACvB,uBAAuB,EACvB,mBAAmB,EACnB,qBAAqB,EACrB,YAAY,EACZ,gBAAgB,EAChB,WAAW,EACX,wBAAwB,EACxB,oBAAoB,EACpB,sBAAsB,EACtB,aAAa,EACb,aAAa,EACb,gCAAgC,EAChC,4BAA4B,EAC5B,MAAM,EACN,qBAAqB,EACrB,qBAAqB,EACrB,QAAQ,EACR,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,6BAA6B,EAC7B,oBAAoB,EACpB,gBAAgB,EAChB,yBAAyB,EACzB,iBAAiB,EACjB,2BAA2B,EAC3B,0BAA0B,EAC1B,qBAAqB,EACrB,oBAAoB,EACpB,yBAAyB,EACzB,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,EACpB,gCAAgC,EAChC,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,qBAAqB,EACrB,UAAU,EACV,gCAAgC,EAChC,mBAAmB,EACnB,2BAA2B,EAC5B,MAAM,qBAAqB,CAAA;AAC5B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"ExecutionServiceDependencies.d.ts","sourceRoot":"","sources":["../../../src/modules/execution/ExecutionServiceDependencies.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,aAAa,EACb,qBAAqB,EACrB,qBAAqB,EACrB,eAAe,EACf,gBAAgB,EAChB,2BAA2B,EAC3B,eAAe,EACf,aAAa,EACb,uBAAuB,EACvB,KAAK,EACL,wBAAwB,EACxB,sBAAsB,EACtB,kBAAkB,EAClB,uBAAuB,EACvB,uBAAuB,EACvB,mBAAmB,EACnB,qBAAqB,EACrB,YAAY,EACZ,gBAAgB,EAChB,WAAW,EACX,wBAAwB,EACxB,oBAAoB,EACpB,sBAAsB,EACtB,aAAa,EACb,aAAa,EACb,gCAAgC,EAChC,4BAA4B,EAC5B,MAAM,EACN,qBAAqB,EACrB,qBAAqB,EACrB,QAAQ,EACR,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,6BAA6B,EAC7B,oBAAoB,EACpB,gBAAgB,EAChB,yBAAyB,EACzB,iBAAiB,EACjB,2BAA2B,EAC3B,0BAA0B,EAC1B,qBAAqB,EACrB,oBAAoB,EACpB,yBAAyB,EACzB,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,EACpB,gCAAgC,EAChC,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,qBAAqB,EACrB,UAAU,EACV,gCAAgC,EAChC,mBAAmB,EACnB,2BAA2B,EAC5B,MAAM,qBAAqB,CAAA;AAC5B,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAC7E,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAA;AACtE,OAAO,KAAK,EACV,gBAAgB,EAChB,8BAA8B,EAC9B,0BAA0B,EAC3B,MAAM,2BAA2B,CAAA;AAClC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAA;AAC3E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAA;AAC9E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAA;AACjF,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,6CAA6C,CAAA;AAC7F,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAA;AAC7E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAA;AAC3E,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAA;AAClF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,6CAA6C,CAAA;AAC1F,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAA;AAClF,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,6CAA6C,CAAA;AAC3F,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,yCAAyC,CAAA;AACvF,OAAO,KAAK,EACV,mBAAmB,EACnB,oBAAoB,EACpB,aAAa,EACd,MAAM,0BAA0B,CAAA;AACjC,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,gCAAgC,CAAA;AACjF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAC3D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAA;AAQ5E,uFAAuF;AACvF,MAAM,WAAW,mBAAmB;IAClC,kBAAkB,CAChB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,GAAG,IAAI,EACtB,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,OAAO,CAAC,CAAA;CACpB;AAED,MAAM,WAAW,4BAA4B;IAC3C,mBAAmB,EAAE,mBAAmB,CAAA;IACxC,eAAe,EAAE,eAAe,CAAA;IAChC,kBAAkB,EAAE,kBAAkB,CAAA;IACtC;;;;;;;;OAQG;IACH,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;IACnC;;;;;OAKG;IACH,kBAAkB,EAAE,kBAAkB,CAAA;IACtC,mBAAmB,EAAE,mBAAmB,CAAA;IACxC;;;OAGG;IACH,iBAAiB,EAAE,iBAAiB,CAAA;IACpC,WAAW,EAAE,WAAW,CAAA;IACxB,KAAK,EAAE,KAAK,CAAA;IACZ,aAAa,EAAE,aAAa,CAAA;IAC5B;;;;OAIG;IACH,iBAAiB,EAAE,iBAAiB,CAAA;IACpC;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;IACnC;;;;OAIG;IACH,YAAY,EAAE,YAAY,CAAA;IAC1B;;;;;;OAMG;IACH,aAAa,EAAE,aAAa,CAAA;IAC5B,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B;;;OAGG;IACH,oBAAoB,EAAE,oBAAoB,CAAA;IAC1C;;;;OAIG;IACH,gBAAgB,EAAE,gBAAgB,CAAA;IAClC;;;;OAIG;IACH,wBAAwB,EAAE,wBAAwB,CAAA;IAClD;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,qBAAqB,CAAA;IAC7C;;;;;OAKG;IACH,gCAAgC,CAAC,EAAE,gCAAgC,CAAA;IACnE;;;;;OAKG;IACH,qBAAqB,CAAC,EAAE,qBAAqB,CAAA;IAC7C;;;;;OAKG;IACH,4BAA4B,CAAC,EAAE,4BAA4B,CAAA;IAC3D;;;;OAIG;IACH,wBAAwB,CAAC,EAAE,wBAAwB,CAAA;IACnD,UAAU,EAAE,UAAU,CAAA;IACtB,uBAAuB,EAAE,uBAAuB,CAAA;IAChD,YAAY,EAAE,YAAY,CAAA;IAC1B,YAAY,EAAE,YAAY,CAAA;IAC1B;;;OAGG;IACH,kBAAkB,CAAC,EAAE,kBAAkB,CAAA;IACvC;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,mBAAmB,CAAA;IACzC;;;;;;OAMG;IACH,iBAAiB,CAAC,EAAE,uBAAuB,CAAA;IAC3C;;;OAGG;IACH,cAAc,CAAC,EAAE,cAAc,CAAA;IAC/B;;;;;;OAMG;IACH,2BAA2B,CAAC,EAAE,2BAA2B,CAAA;IACzD;;;;OAIG;IACH,sBAAsB,CAAC,EAAE,sBAAsB,CAAA;IAC/C;;;;;OAKG;IACH,wBAAwB,CAAC,EAAE,wBAAwB,CAAA;IACnD;;;;;;OAMG;IACH,mBAAmB,CAAC,EAAE,mBAAmB,CAAA;IACzC;;;;;OAKG;IACH,eAAe,CAAC,EAAE,eAAe,CAAA;IACjC;;;;;OAKG;IACH,qBAAqB,CAAC,EAAE,qBAAqB,CAAA;IAC7C;;;;OAIG;IACH,eAAe,CAAC,EAAE,eAAe,CAAA;IACjC;;;;OAIG;IACH,uBAAuB,CAAC,EAAE,uBAAuB,CAAA;IACjD;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,oBAAoB,CAAA;IAC3C;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC,eAAe,EAAE,iBAAiB,CAAC,CAAA;IAC/D;;;;OAIG;IACH,2BAA2B,CAAC,EAAE,2BAA2B,CAAA;IACzD;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,oBAAoB,CAAA;IACvC;;;;OAIG;IACH,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B;;;;OAIG;IACH,eAAe,CAAC,EAAE,eAAe,CAAA;IACjC;;;;OAIG;IACH,2BAA2B,CAAC,EAAE,2BAA2B,CAAA;IACzD;;;;;;;;;;;OAWG;IACH,qBAAqB,CAAC,EAAE,qBAAqB,CAAA;IAC7C;;;;;OAKG;IACH,gCAAgC,CAAC,EAAE,gCAAgC,CAAA;IACnE;;;;;;;OAOG;IACH,4BAA4B,CAAC,EAAE,CAC7B,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,aAAa,CAAC,EAAE,MAAM,KACnB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;IAChC;;;;;;;;OAQG;IACH,2BAA2B,CAAC,EAAE,CAC5B,WAAW,EAAE,MAAM,EACnB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,EAC3B,aAAa,CAAC,EAAE,MAAM,KACnB,OAAO,CAAC,oBAAoB,CAAC,CAAA;IAClC;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,CAAC,GAAG,EAAE,QAAQ,KAAK,OAAO,CAAA;IAC7C;;;;OAIG;IACH,uBAAuB,CAAC,EAAE,8BAA8B,CAAA;IACxD;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,aAAa,EAAE,CAAC,CAAA;IAC1F;;;;;OAKG;IACH,uBAAuB,CAAC,EAAE,CACxB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,KACZ,OAAO,CAAC,wBAAwB,GAAG,IAAI,CAAC,CAAA;IAC7C;;;;;OAKG;IACH,0BAA0B,CAAC,EAAE,0BAA0B,CAAA;IACvD;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,0BAA0B,CAAA;IAChD;;;;;OAKG;IACH,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,mBAAmB,CAAA;IACzC;;;;;;OAMG;IACH,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;IACrC;;;;;OAKG;IACH,oBAAoB,CAAC,EAAE,oBAAoB,CAAA;IAC3C;;;;;;OAMG;IACH,0BAA0B,CAAC,EAAE,0BAA0B,CAAA;IACvD;;;;;;OAMG;IACH,kBAAkB,CAAC,EAAE,CACnB,WAAW,EAAE,MAAM,EACnB,iBAAiB,EAAE,MAAM,EACzB,OAAO,CAAC,EAAE,oBAAoB,KAC3B,IAAI,CAAA;IACT;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,mBAAmB,CAAA;IACzC;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;IACnC;;;;OAIG;IACH,wBAAwB,CAAC,EAAE,wBAAwB,CAAA;IAMnD;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;IACrC;;;;;;;;OAQG;IACH,gBAAgB,CAAC,EAAE,yBAAyB,CAAA;IAC5C;;;;;OAKG;IACH,eAAe,CAAC,EAAE,gBAAgB,CAAC,oBAAoB,CAAC,CAAA;IACxD;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,gBAAgB,CAAC,qBAAqB,CAAC,CAAA;IAC1D;;;;;;OAMG;IACH,2BAA2B,CAAC,EAAE,gBAAgB,CAAC,gCAAgC,CAAC,CAAA;IAChF;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,uBAAuB,CAAA;IAC1C;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;IACrC;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,qBAAqB,CAAA;IAC7C;;;;;OAKG;IACH,cAAc,CAAC,EAAE,sBAAsB,CAAA;IACvC;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;IACnC;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,uBAAuB,CAAA;IAC1C;;;;;;OAMG;IACH,qBAAqB,CAAC,EAAE,qBAAqB,CAAA;IAC7C;;;;;OAKG;IACH,4BAA4B,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACrE;;;;;;OAMG;IACH,6BAA6B,CAAC,EAAE,6BAA6B,CAAA;IAC7D;;;;;OAKG;IACH,yBAAyB,CAAC,EAAE,yBAAyB,CAAA;IACrD;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB;;;OAGG;IACH,2BAA2B,CAAC,EAAE,2BAA2B,CAAA;IACzD;;;;;OAKG;IACH,qBAAqB,CAAC,EAAE,qBAAqB,CAAA;IAC7C;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB"}
|
|
@@ -17,7 +17,7 @@ import type { ExecutionServiceDependencies } from './ExecutionService.js';
|
|
|
17
17
|
* value the constructor passed inline, so the two collaborators are built from an identical
|
|
18
18
|
* input to before.
|
|
19
19
|
*/
|
|
20
|
-
export type RunContextAdmissionDeps = Pick<ExecutionServiceDependencies, 'workspaceRepository' | 'blockRepository' | 'executionRepository' | 'accountRepository' | 'agentKindRegistry' | 'gateRegistry' | 'initiativePresetRegistry' | 'taskTypeRegistry' | 'agentPromptRepository' | 'consensusGroupRepository' | 'documentRepository' | 'documentUrlResolver' | 'documentRefresher' | 'taskRepository' | 'requirementReviewRepository' | 'docInterviewRepository' | 'clarityReviewRepository' | 'brainstormSessionRepository' | 'initiativeRepository' | 'environmentProvisioning' | 'resolveTestSecretRefs' | 'resolveValidationChecks' | 'fragmentResolver' | 'skillResolver' | 'spendService' | 'workspaceSettingsService' | 'resolveBinaryArtifactStore' | 'resolveProviderCapabilities' | 'inlineHarnessRef' | 'resolveWorkspaceModelDefault' | 'assertAgentBackendConfigured' | 'logger' | 'workspaceAgentSettingsRepository' | 'modelPresetRepository' | 'modelPresetCache' | 'localModelEndpointRepository' | 'localModelDeclarationsCache' | 'foundationalServiceResolver' | 'binaryGeneratorSource'>;
|
|
20
|
+
export type RunContextAdmissionDeps = Pick<ExecutionServiceDependencies, 'workspaceRepository' | 'blockRepository' | 'executionRepository' | 'accountRepository' | 'agentKindRegistry' | 'gateRegistry' | 'initiativePresetRegistry' | 'taskTypeRegistry' | 'agentPromptRepository' | 'consensusGroupRepository' | 'documentRepository' | 'documentUrlResolver' | 'documentRefresher' | 'taskRepository' | 'requirementReviewRepository' | 'docInterviewRepository' | 'clarityReviewRepository' | 'brainstormSessionRepository' | 'initiativeRepository' | 'environmentProvisioning' | 'resolveTestSecretRefs' | 'resolveValidationChecks' | 'fragmentResolver' | 'skillResolver' | 'agentKindSource' | 'spendService' | 'workspaceSettingsService' | 'resolveBinaryArtifactStore' | 'resolveProviderCapabilities' | 'inlineHarnessRef' | 'resolveWorkspaceModelDefault' | 'assertAgentBackendConfigured' | 'logger' | 'workspaceAgentSettingsRepository' | 'modelPresetRepository' | 'modelPresetCache' | 'localModelEndpointRepository' | 'localModelDeclarationsCache' | 'foundationalServiceResolver' | 'binaryGeneratorSource'>;
|
|
21
21
|
export declare function buildRunContextAndAdmission(deps: RunContextAdmissionDeps): {
|
|
22
22
|
contextBuilder: AgentContextBuilder;
|
|
23
23
|
admission: RunAdmission;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-context-admission.d.ts","sourceRoot":"","sources":["../../../src/modules/execution/run-context-admission.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAA;AAEzE;;;;GAIG;AACH,MAAM,MAAM,uBAAuB,GAAG,IAAI,CACxC,4BAA4B,EAC1B,qBAAqB,GACrB,iBAAiB,GACjB,qBAAqB,GACrB,mBAAmB,GACnB,mBAAmB,GACnB,cAAc,GACd,0BAA0B,GAC1B,kBAAkB,GAClB,uBAAuB,GACvB,0BAA0B,GAC1B,oBAAoB,GACpB,qBAAqB,GACrB,mBAAmB,GACnB,gBAAgB,GAChB,6BAA6B,GAC7B,wBAAwB,GACxB,yBAAyB,GACzB,6BAA6B,GAC7B,sBAAsB,GACtB,yBAAyB,GACzB,uBAAuB,GACvB,yBAAyB,GACzB,kBAAkB,GAClB,eAAe,GACf,cAAc,GACd,0BAA0B,GAC1B,4BAA4B,GAC5B,6BAA6B,GAC7B,kBAAkB,GAClB,8BAA8B,GAC9B,8BAA8B,GAC9B,QAAQ,GACR,kCAAkC,GAClC,uBAAuB,GACvB,kBAAkB,GAClB,8BAA8B,GAC9B,6BAA6B,GAC7B,6BAA6B,GAC7B,uBAAuB,CAC1B,CAAA;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,uBAAuB,GAAG;IAC1E,cAAc,EAAE,mBAAmB,CAAA;IACnC,SAAS,EAAE,YAAY,CAAA;CACxB,
|
|
1
|
+
{"version":3,"file":"run-context-admission.d.ts","sourceRoot":"","sources":["../../../src/modules/execution/run-context-admission.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAA;AAEzE;;;;GAIG;AACH,MAAM,MAAM,uBAAuB,GAAG,IAAI,CACxC,4BAA4B,EAC1B,qBAAqB,GACrB,iBAAiB,GACjB,qBAAqB,GACrB,mBAAmB,GACnB,mBAAmB,GACnB,cAAc,GACd,0BAA0B,GAC1B,kBAAkB,GAClB,uBAAuB,GACvB,0BAA0B,GAC1B,oBAAoB,GACpB,qBAAqB,GACrB,mBAAmB,GACnB,gBAAgB,GAChB,6BAA6B,GAC7B,wBAAwB,GACxB,yBAAyB,GACzB,6BAA6B,GAC7B,sBAAsB,GACtB,yBAAyB,GACzB,uBAAuB,GACvB,yBAAyB,GACzB,kBAAkB,GAClB,eAAe,GACf,iBAAiB,GACjB,cAAc,GACd,0BAA0B,GAC1B,4BAA4B,GAC5B,6BAA6B,GAC7B,kBAAkB,GAClB,8BAA8B,GAC9B,8BAA8B,GAC9B,QAAQ,GACR,kCAAkC,GAClC,uBAAuB,GACvB,kBAAkB,GAClB,8BAA8B,GAC9B,6BAA6B,GAC7B,6BAA6B,GAC7B,uBAAuB,CAC1B,CAAA;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,uBAAuB,GAAG;IAC1E,cAAc,EAAE,mBAAmB,CAAA;IACnC,SAAS,EAAE,YAAY,CAAA;CACxB,CAwDA"}
|
|
@@ -40,6 +40,7 @@ export function buildRunContextAndAdmission(deps) {
|
|
|
40
40
|
resolveValidationChecks: deps.resolveValidationChecks,
|
|
41
41
|
fragmentResolver: deps.fragmentResolver,
|
|
42
42
|
skillResolver: deps.skillResolver,
|
|
43
|
+
agentKindSource: deps.agentKindSource,
|
|
43
44
|
foundationalServiceResolver: deps.foundationalServiceResolver,
|
|
44
45
|
binaryGeneratorSource: deps.binaryGeneratorSource,
|
|
45
46
|
resolveBinaryArtifactStore: deps.resolveBinaryArtifactStore,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-context-admission.js","sourceRoot":"","sources":["../../../src/modules/execution/run-context-admission.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"run-context-admission.js","sourceRoot":"","sources":["../../../src/modules/execution/run-context-admission.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAoDhD,MAAM,UAAU,2BAA2B,CAAC,IAA6B;IAIvE,MAAM,cAAc,GAAG,IAAI,mBAAmB,CAAC;QAC7C,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;QAC7C,eAAe,EAAE,IAAI,CAAC,eAAe;QACrC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;QACzC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;QACzC,wBAAwB,EAAE,IAAI,CAAC,wBAAwB;QACvD,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;QACvC,YAAY,EAAE,IAAI,CAAC,qBAAqB;QACxC,aAAa,EAAE,IAAI,CAAC,gCAAgC;QACpD,YAAY,EAAE,IAAI,CAAC,qBAAqB;QACxC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;QACvC,mBAAmB,EAAE,IAAI,CAAC,4BAA4B;QACtD,2BAA2B,EAAE,IAAI,CAAC,2BAA2B;QAC7D,eAAe,EAAE,IAAI,CAAC,wBAAwB;QAC9C,SAAS,EAAE,IAAI,CAAC,kBAAkB;QAClC,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;QAC7C,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;QACzC,KAAK,EAAE,IAAI,CAAC,cAAc;QAC1B,kBAAkB,EAAE,IAAI,CAAC,2BAA2B;QACpD,aAAa,EAAE,IAAI,CAAC,sBAAsB;QAC1C,cAAc,EAAE,IAAI,CAAC,uBAAuB;QAC5C,kBAAkB,EAAE,IAAI,CAAC,2BAA2B;QACpD,WAAW,EAAE,IAAI,CAAC,oBAAoB;QACtC,uBAAuB,EAAE,IAAI,CAAC,uBAAuB;QACrD,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;QACjD,uBAAuB,EAAE,IAAI,CAAC,uBAAuB;QACrD,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;QACvC,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,eAAe,EAAE,IAAI,CAAC,eAAe;QACrC,2BAA2B,EAAE,IAAI,CAAC,2BAA2B;QAC7D,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;QACjD,0BAA0B,EAAE,IAAI,CAAC,0BAA0B;QAC3D,MAAM,EAAE,IAAI,CAAC,MAAM;KACpB,CAAC,CAAA;IACF,uFAAuF;IACvF,gFAAgF;IAChF,MAAM,SAAS,GAAG,IAAI,YAAY,CAAC;QACjC,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;QAC7C,eAAe,EAAE,IAAI,CAAC,eAAe;QACrC,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;QAC7C,cAAc;QACd,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;QACzC,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,KAAK,EAAE,IAAI,CAAC,YAAY;QACxB,uBAAuB,EAAE,IAAI,CAAC,uBAAuB;QACrD,wBAAwB,EAAE,IAAI,CAAC,wBAAwB;QACvD,0BAA0B,EAAE,IAAI,CAAC,0BAA0B;QAC3D,2BAA2B,EAAE,IAAI,CAAC,2BAA2B;QAC7D,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;QACjD,2BAA2B,EAAE,IAAI,CAAC,2BAA2B;QAC7D,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;QACvC,4BAA4B,EAAE,IAAI,CAAC,4BAA4B;QAC/D,4BAA4B,EAAE,IAAI,CAAC,4BAA4B;KAChE,CAAC,CAAA;IACF,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,CAAA;AACtC,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AgentKindRegistry } from '@cat-factory/agents';
|
|
1
|
+
import type { AgentKindCapabilityView, AgentKindRegistry, AgentKindSource } from '@cat-factory/agents';
|
|
2
2
|
import type { PipelineStep } from '@cat-factory/contracts';
|
|
3
3
|
import type { AgentKind, Logger, ResolvedSkill, SkillVersionPin } from '@cat-factory/kernel';
|
|
4
4
|
import type { SkillResolver } from './AgentContextBuilder.js';
|
|
@@ -9,6 +9,13 @@ export interface ResolveRunSkillsInput {
|
|
|
9
9
|
/** The step being dispatched; its `skillVersions` pin is written here. */
|
|
10
10
|
step: PipelineStep;
|
|
11
11
|
agentKindRegistry: AgentKindRegistry;
|
|
12
|
+
/**
|
|
13
|
+
* This dispatch's already-resolved capability declarations (see {@link resolveKindCapabilities}).
|
|
14
|
+
* Passed IN rather than resolved here because the tool-server half of the same answer travels to
|
|
15
|
+
* the executor, and resolving twice would mean two reads of a deployment-level source that
|
|
16
|
+
* crosses a network. Absent ⇒ resolved from `agentKindRegistry` alone.
|
|
17
|
+
*/
|
|
18
|
+
capabilities?: AgentKindCapabilityView;
|
|
12
19
|
/** Wired only when the skill library is configured; absent ⇒ no catalog skill can resolve. */
|
|
13
20
|
skillResolver?: SkillResolver;
|
|
14
21
|
logger?: Logger;
|
|
@@ -35,4 +42,23 @@ export declare function resolveRunSkills(input: ResolveRunSkillsInput): Promise<
|
|
|
35
42
|
skills: ResolvedSkill[];
|
|
36
43
|
versions: SkillVersionPin[];
|
|
37
44
|
}>;
|
|
45
|
+
/**
|
|
46
|
+
* The capability declarations one dispatch applies: this build's registry MERGED with the
|
|
47
|
+
* deployment's layer when a source is wired (a mothership-mode node reads the mothership's).
|
|
48
|
+
*
|
|
49
|
+
* A merge, not a replacement, and that is the difference from the three sibling sources
|
|
50
|
+
* (foundational services, binary generators, prompt fragments), which forbid one. Those replace a
|
|
51
|
+
* set the node also registers, so a merge would let a stale local copy win by id. Here the halves
|
|
52
|
+
* are different things: a KIND's own declarations belong to the code implementing it and stay with
|
|
53
|
+
* that code, while the deployment's `assignSkills`/`assignToolServers` are a layer on top. This is
|
|
54
|
+
* the same union `skillsFor` already performs in-process, with the deployment's half read from the
|
|
55
|
+
* process that owns it.
|
|
56
|
+
*
|
|
57
|
+
* Exported because the TOOL-SERVER half of the same answer is resolved here too and rides the
|
|
58
|
+
* dispatch context to the executor, which is what keeps this to ONE read per dispatch.
|
|
59
|
+
*/
|
|
60
|
+
export declare function resolveKindCapabilities(agentKind: AgentKind, deps: {
|
|
61
|
+
agentKindRegistry: AgentKindRegistry;
|
|
62
|
+
agentKindSource?: AgentKindSource;
|
|
63
|
+
}): Promise<AgentKindCapabilityView>;
|
|
38
64
|
//# sourceMappingURL=run-skills.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-skills.d.ts","sourceRoot":"","sources":["../../../src/modules/execution/run-skills.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"run-skills.d.ts","sourceRoot":"","sources":["../../../src/modules/execution/run-skills.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,uBAAuB,EACvB,iBAAiB,EACjB,eAAe,EAChB,MAAM,qBAAqB,CAAA;AAM5B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAE5F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAY7D,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,MAAM,CAAA;IACnB,6FAA6F;IAC7F,SAAS,EAAE,SAAS,CAAA;IACpB,0EAA0E;IAC1E,IAAI,EAAE,YAAY,CAAA;IAClB,iBAAiB,EAAE,iBAAiB,CAAA;IACpC;;;;;OAKG;IACH,YAAY,CAAC,EAAE,uBAAuB,CAAA;IACtC,8FAA8F;IAC9F,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,qBAAqB,GAC3B,OAAO,CAAC;IAAE,MAAM,EAAE,aAAa,EAAE,CAAC;IAAC,QAAQ,EAAE,eAAe,EAAE,CAAA;CAAE,CAAC,CAiDnE;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,uBAAuB,CAC3C,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE;IAAE,iBAAiB,EAAE,iBAAiB,CAAC;IAAC,eAAe,CAAC,EAAE,eAAe,CAAA;CAAE,GAChF,OAAO,CAAC,uBAAuB,CAAC,CAYlC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { bundledSkillToResolved, SKILL_AGENT_KIND } from '@cat-factory/agents';
|
|
1
|
+
import { bundledSkillToResolved, mergeKindCapabilities, SKILL_AGENT_KIND, } from '@cat-factory/agents';
|
|
2
2
|
import { ValidationError, noopLogger, runBestEffort } from '@cat-factory/kernel';
|
|
3
3
|
/**
|
|
4
4
|
* Resolve every skill this dispatch applies, in the order they should be applied: the kind's own
|
|
@@ -19,7 +19,8 @@ import { ValidationError, noopLogger, runBestEffort } from '@cat-factory/kernel'
|
|
|
19
19
|
* version is the deployment's), which the caller records on the step.
|
|
20
20
|
*/
|
|
21
21
|
export async function resolveRunSkills(input) {
|
|
22
|
-
const declared = input.
|
|
22
|
+
const declared = (input.capabilities ?? (await resolveKindCapabilities(input.agentKind, input)))
|
|
23
|
+
.skills;
|
|
23
24
|
const pickedSkillId = input.agentKind === SKILL_AGENT_KIND ? input.step.stepOptions?.skillId?.trim() : undefined;
|
|
24
25
|
if (!declared.bundled.length && !declared.catalog.length && !pickedSkillId) {
|
|
25
26
|
// Clear on this path too, not just the one below: a step re-dispatched after its pick was
|
|
@@ -63,6 +64,35 @@ export async function resolveRunSkills(input) {
|
|
|
63
64
|
input.step.skillVersions = versions.length ? versions : undefined;
|
|
64
65
|
return { skills, versions };
|
|
65
66
|
}
|
|
67
|
+
/**
|
|
68
|
+
* The capability declarations one dispatch applies: this build's registry MERGED with the
|
|
69
|
+
* deployment's layer when a source is wired (a mothership-mode node reads the mothership's).
|
|
70
|
+
*
|
|
71
|
+
* A merge, not a replacement, and that is the difference from the three sibling sources
|
|
72
|
+
* (foundational services, binary generators, prompt fragments), which forbid one. Those replace a
|
|
73
|
+
* set the node also registers, so a merge would let a stale local copy win by id. Here the halves
|
|
74
|
+
* are different things: a KIND's own declarations belong to the code implementing it and stay with
|
|
75
|
+
* that code, while the deployment's `assignSkills`/`assignToolServers` are a layer on top. This is
|
|
76
|
+
* the same union `skillsFor` already performs in-process, with the deployment's half read from the
|
|
77
|
+
* process that owns it.
|
|
78
|
+
*
|
|
79
|
+
* Exported because the TOOL-SERVER half of the same answer is resolved here too and rides the
|
|
80
|
+
* dispatch context to the executor, which is what keeps this to ONE read per dispatch.
|
|
81
|
+
*/
|
|
82
|
+
export async function resolveKindCapabilities(agentKind, deps) {
|
|
83
|
+
const local = {
|
|
84
|
+
kind: agentKind,
|
|
85
|
+
skills: deps.agentKindRegistry.skillsFor(agentKind),
|
|
86
|
+
toolServers: deps.agentKindRegistry.toolServersFor(agentKind),
|
|
87
|
+
};
|
|
88
|
+
if (!deps.agentKindSource)
|
|
89
|
+
return local;
|
|
90
|
+
// A failed read THROWS out of the source and is NOT swallowed here: an empty layer and an
|
|
91
|
+
// unreachable mothership are the same value and opposite facts, and a dispatch that quietly
|
|
92
|
+
// dropped the org's playbook is the exact failure this seam exists to remove.
|
|
93
|
+
const org = (await deps.agentKindSource.capabilities()).find((view) => view.kind === agentKind);
|
|
94
|
+
return mergeKindCapabilities(local, org);
|
|
95
|
+
}
|
|
66
96
|
/**
|
|
67
97
|
* Resolve ONE account-catalog skill. An unwired resolver, or a resolver that throws (an unknown /
|
|
68
98
|
* tombstoned skill id), fails the dispatch unless the reference declared itself optional — in
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-skills.js","sourceRoot":"","sources":["../../../src/modules/execution/run-skills.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"run-skills.js","sourceRoot":"","sources":["../../../src/modules/execution/run-skills.ts"],"names":[],"mappings":"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"}
|
|
@@ -45,7 +45,12 @@ export declare class SandboxRunService {
|
|
|
45
45
|
private failRun;
|
|
46
46
|
/** Resolve every prompt version referenced by the matrix to its system text + label. */
|
|
47
47
|
private resolvePrompts;
|
|
48
|
-
/**
|
|
48
|
+
/**
|
|
49
|
+
* Resolve every fixture referenced by the matrix (stored, else builtin), refusing one the driver
|
|
50
|
+
* cannot run and RENDERING each one's task input. Every refusal this method can raise therefore
|
|
51
|
+
* happens before the run is claimed, so a bad matrix is a 4xx with no grid rather than a
|
|
52
|
+
* half-finished experiment.
|
|
53
|
+
*/
|
|
49
54
|
private resolveFixtures;
|
|
50
55
|
/** The model provider for a workspace's scope (per-scope DB pool, else the static one). */
|
|
51
56
|
private providerFor;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SandboxRunService.d.ts","sourceRoot":"","sources":["../../../src/modules/sandbox/SandboxRunService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,KAAK,EACL,WAAW,EACX,aAAa,EACb,qBAAqB,EACrB,QAAQ,EAER,2BAA2B,EAE3B,wBAAwB,EAExB,sBAAsB,EACtB,8BAA8B,EAE9B,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,qBAAqB,CAAA;AAW5B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"SandboxRunService.d.ts","sourceRoot":"","sources":["../../../src/modules/sandbox/SandboxRunService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,KAAK,EACL,WAAW,EACX,aAAa,EACb,qBAAqB,EACrB,QAAQ,EAER,2BAA2B,EAE3B,wBAAwB,EAExB,sBAAsB,EACtB,8BAA8B,EAE9B,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,qBAAqB,CAAA;AAW5B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAgB5D,OAAO,EAA2B,KAAK,uBAAuB,EAAE,MAAM,qBAAqB,CAAA;AAY3F,MAAM,WAAW,6BAA6B;IAC5C,8BAA8B,EAAE,8BAA8B,CAAA;IAC9D,wBAAwB,EAAE,wBAAwB,CAAA;IAClD,2BAA2B,EAAE,2BAA2B,CAAA;IACxD,oBAAoB,EAAE,oBAAoB,CAAA;IAC1C,sBAAsB,EAAE,sBAAsB,CAAA;IAC9C,mBAAmB,EAAE,mBAAmB,CAAA;IACxC,WAAW,EAAE,WAAW,CAAA;IACxB,KAAK,EAAE,KAAK,CAAA;IACZ,+EAA+E;IAC/E,iBAAiB,EAAE,iBAAiB,CAAA;IACpC,wFAAwF;IACxF,qBAAqB,CAAC,EAAE,qBAAqB,CAAA;IAC7C,kEAAkE;IAClE,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B,yEAAyE;IACzE,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,KAAK,QAAQ,GAAG,SAAS,CAAA;IACtE,uFAAuF;IACvF,eAAe,CAAC,EAAE,QAAQ,CAAA;IAC1B;;;OAGG;IACH,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,QAAQ,KAAK,OAAO,CAAA;CACxC;AAsBD;;;;;;;;;;;GAWG;AACH,qBAAa,iBAAiB;IAChB,OAAO,CAAC,QAAQ,CAAC,IAAI;IAAjC,YAA6B,IAAI,EAAE,6BAA6B,EAAI;IAE9D,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC,CA6MxF;YAIa,OAAO;IASrB,wFAAwF;YAC1E,cAAc;IAuB5B;;;;;OAKG;YACW,eAAe;IAqB7B,2FAA2F;YAC7E,WAAW;IASzB,oGAAoG;IACpG,OAAO,CAAC,MAAM;IAUd,OAAO,CAAC,MAAM;CAGf"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { assertFound, ConflictError, getErrorMessage, inlineModelRef, requireWorkspace, resolveScopedModelProvider, ValidationError, } from '@cat-factory/kernel';
|
|
2
|
-
import { catFactoryObservability,
|
|
3
|
-
import {
|
|
4
|
-
import { expandMatrix, listBaselines, listBuiltinFixtures, rubricFor, sandboxKindMeta, versionLabel, weightedTotal, } from '@cat-factory/sandbox';
|
|
2
|
+
import { catFactoryObservability, composedSystemPromptFor } from '@cat-factory/agents';
|
|
3
|
+
import { expandMatrix, listBaselines, listBuiltinFixtures, rubricFor, versionLabel, weightedTotal, } from '@cat-factory/sandbox';
|
|
5
4
|
import { generateText } from 'ai';
|
|
5
|
+
import { assertSandboxFixtureMatchesKind, assertSandboxRunnable, assertSandboxRunnableFixture, } from './sandboxAdmission.js';
|
|
6
6
|
import { composeExperimentDetail } from './SandboxService.js';
|
|
7
|
-
import {
|
|
7
|
+
import { renderFixtureInput } from './sandbox-input.js';
|
|
8
|
+
import { buildJudgePrompt, coerceJudgeScores, extractJson, gradedDimensionCount, JUDGE_SYSTEM_PROMPT, objectiveFor, parseModelCatalogId, } from './sandbox.logic.js';
|
|
8
9
|
/**
|
|
9
10
|
* The Sandbox run-driver + judge. {@link launch} expands a draft experiment's matrix
|
|
10
11
|
* into cells, runs each inline candidate (one LLM call against the prompt-version's
|
|
@@ -28,22 +29,20 @@ export class SandboxRunService {
|
|
|
28
29
|
if (experiment.status === 'running') {
|
|
29
30
|
throw new ConflictError('This experiment is already running.');
|
|
30
31
|
}
|
|
31
|
-
const meta =
|
|
32
|
-
if (!meta)
|
|
33
|
-
throw new ValidationError(`"${experiment.agentKind}" is not a Sandbox-testable kind`);
|
|
34
|
-
if (meta.bucket === 'container') {
|
|
35
|
-
throw new ValidationError(`The "${experiment.agentKind}" agent runs in a container; container experiments are not yet supported in the Sandbox.`);
|
|
36
|
-
}
|
|
32
|
+
const meta = assertSandboxRunnable(experiment.agentKind);
|
|
37
33
|
const provider = await this.providerFor(workspaceId);
|
|
38
34
|
const prompts = await this.resolvePrompts(workspaceId, experiment);
|
|
39
|
-
const fixtures = await this.resolveFixtures(workspaceId, experiment);
|
|
35
|
+
const fixtures = await this.resolveFixtures(workspaceId, experiment, meta);
|
|
40
36
|
const rubric = rubricFor(meta.rubric);
|
|
41
37
|
// Atomically claim the run BEFORE touching the grid: the conditional transition to
|
|
42
38
|
// `running` lets exactly one concurrent launch win, so two simultaneous launches can't
|
|
43
39
|
// both clear + re-expand the grid (duplicating cells) or race the grid-clearing deletes.
|
|
44
40
|
// The fast-path read above is just a friendly early error; THIS is the authoritative gate.
|
|
45
|
-
// Validation/resolution runs first,
|
|
46
|
-
//
|
|
41
|
+
// Validation/resolution runs first, RENDERING each fixture's task input as it goes, so every
|
|
42
|
+
// refusal a bad matrix can raise lands here rather than mid-grid: a fixture whose payload the
|
|
43
|
+
// builder cannot read is a 4xx with nothing persisted, never a run that spends tokens on the
|
|
44
|
+
// cells before it and leaves the rest `queued` with no error to explain them. The `finally`
|
|
45
|
+
// below settles the terminal status from here on.
|
|
47
46
|
if (!(await this.deps.sandboxExperimentRepository.claimForRun(workspaceId, experimentId))) {
|
|
48
47
|
throw new ConflictError('This experiment is already running.');
|
|
49
48
|
}
|
|
@@ -85,14 +84,14 @@ export class SandboxRunService {
|
|
|
85
84
|
// candidate output inspectable with the error, so the cell is `done` but not counted graded.
|
|
86
85
|
const runCell = async (run) => {
|
|
87
86
|
const prompt = prompts.get(run.promptVersionId);
|
|
88
|
-
const
|
|
89
|
-
if (!prompt || !
|
|
87
|
+
const resolved = fixtures.get(run.fixtureId);
|
|
88
|
+
if (!prompt || !resolved) {
|
|
90
89
|
await this.failRun(workspaceId, run, prompt
|
|
91
90
|
? `Unknown fixture "${run.fixtureId}"`
|
|
92
91
|
: `Unknown prompt version "${run.promptVersionId}"`);
|
|
93
92
|
return { tokensSpent: 0, graded: false };
|
|
94
93
|
}
|
|
95
|
-
const taskInput =
|
|
94
|
+
const { fixture, taskInput } = resolved;
|
|
96
95
|
let cellSpent = 0;
|
|
97
96
|
// Phase 1 — run the candidate. A failure here means the cell produced nothing,
|
|
98
97
|
// so the whole cell is `failed`.
|
|
@@ -103,11 +102,12 @@ export class SandboxRunService {
|
|
|
103
102
|
const candidate = await generateText({
|
|
104
103
|
model: provider.resolve(candidateRef),
|
|
105
104
|
// Composed exactly as production dispatch composes a workspace prompt override: the
|
|
106
|
-
// stored text is the BASE
|
|
107
|
-
// directives and trait guidance
|
|
108
|
-
// is never sent
|
|
109
|
-
// to the live prompt, since the promoted
|
|
110
|
-
|
|
105
|
+
// stored text is the shipped BASE prompt, and `composedSystemPromptFor` puts the rest
|
|
106
|
+
// back (surface directives and trait guidance, or a bespoke kind's directives half).
|
|
107
|
+
// Grading the bare base would measure text that is never sent, which matters most at the
|
|
108
|
+
// moment a well-graded candidate is promoted to the live prompt, since the promoted
|
|
109
|
+
// prompt would then behave unlike the graded one.
|
|
110
|
+
system: composedSystemPromptFor(experiment.agentKind, this.deps.agentKindRegistry, prompt.systemText),
|
|
111
111
|
prompt: taskInput,
|
|
112
112
|
temperature: 0.2,
|
|
113
113
|
maxOutputTokens: 4000,
|
|
@@ -228,18 +228,25 @@ export class SandboxRunService {
|
|
|
228
228
|
}
|
|
229
229
|
return map;
|
|
230
230
|
}
|
|
231
|
-
/**
|
|
232
|
-
|
|
231
|
+
/**
|
|
232
|
+
* Resolve every fixture referenced by the matrix (stored, else builtin), refusing one the driver
|
|
233
|
+
* cannot run and RENDERING each one's task input. Every refusal this method can raise therefore
|
|
234
|
+
* happens before the run is claimed, so a bad matrix is a 4xx with no grid rather than a
|
|
235
|
+
* half-finished experiment.
|
|
236
|
+
*/
|
|
237
|
+
async resolveFixtures(workspaceId, experiment, meta) {
|
|
233
238
|
const builtins = new Map(listBuiltinFixtures(this.deps.clock.now()).map((f) => [f.id, f]));
|
|
234
239
|
const map = new Map();
|
|
235
240
|
for (const id of new Set(experiment.matrix.fixtureIds)) {
|
|
236
241
|
const fixture = (await this.deps.sandboxFixtureRepository.get(workspaceId, id)) ?? builtins.get(id);
|
|
237
242
|
if (!fixture)
|
|
238
243
|
throw new ValidationError(`Unknown fixture "${id}"`);
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
244
|
+
assertSandboxRunnableFixture(fixture);
|
|
245
|
+
assertSandboxFixtureMatchesKind(fixture, meta);
|
|
246
|
+
map.set(id, {
|
|
247
|
+
fixture,
|
|
248
|
+
taskInput: renderFixtureInput(fixture, meta, this.deps.agentKindRegistry),
|
|
249
|
+
});
|
|
243
250
|
}
|
|
244
251
|
return map;
|
|
245
252
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SandboxRunService.js","sourceRoot":"","sources":["../../../src/modules/sandbox/SandboxRunService.ts"],"names":[],"mappings":"AAiBA,OAAO,EACL,WAAW,EACX,aAAa,EACb,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,0BAA0B,EAC1B,eAAe,GAChB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,uBAAuB,EAAE,
|
|
1
|
+
{"version":3,"file":"SandboxRunService.js","sourceRoot":"","sources":["../../../src/modules/sandbox/SandboxRunService.ts"],"names":[],"mappings":"AAiBA,OAAO,EACL,WAAW,EACX,aAAa,EACb,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,0BAA0B,EAC1B,eAAe,GAChB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAA;AAEtF,OAAO,EACL,YAAY,EACZ,aAAa,EACb,mBAAmB,EACnB,SAAS,EAET,YAAY,EACZ,aAAa,GACd,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAA;AACjC,OAAO,EACL,+BAA+B,EAC/B,qBAAqB,EACrB,4BAA4B,GAC7B,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,uBAAuB,EAAgC,MAAM,qBAAqB,CAAA;AAC3F,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AACvD,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,EACX,oBAAoB,EACpB,mBAAmB,EACnB,YAAY,EACZ,mBAAmB,GACpB,MAAM,oBAAoB,CAAA;AAgD3B;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,iBAAiB;IACC,IAAI;IAAjC,YAA6B,IAAmC;oBAAnC,IAAI;IAAkC,CAAC;IAEpE,KAAK,CAAC,MAAM,CAAC,WAAmB,EAAE,YAAoB;QACpD,MAAM,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,WAAW,CAAC,CAAA;QAClE,MAAM,UAAU,GAAG,WAAW,CAC5B,MAAM,IAAI,CAAC,IAAI,CAAC,2BAA2B,CAAC,GAAG,CAAC,WAAW,EAAE,YAAY,CAAC,EAC1E,mBAAmB,EACnB,YAAY,CACb,CAAA;QACD,IAAI,UAAU,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACpC,MAAM,IAAI,aAAa,CAAC,qCAAqC,CAAC,CAAA;QAChE,CAAC;QACD,MAAM,IAAI,GAAG,qBAAqB,CAAC,UAAU,CAAC,SAAS,CAAC,CAAA;QAExD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAA;QACpD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,UAAU,CAAC,CAAA;QAClE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,UAAU,EAAE,IAAI,CAAC,CAAA;QAC1E,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAErC,mFAAmF;QACnF,uFAAuF;QACvF,yFAAyF;QACzF,2FAA2F;QAC3F,6FAA6F;QAC7F,8FAA8F;QAC9F,6FAA6F;QAC7F,4FAA4F;QAC5F,kDAAkD;QAClD,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,2BAA2B,CAAC,WAAW,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC;YAC1F,MAAM,IAAI,aAAa,CAAC,qCAAqC,CAAC,CAAA;QAChE,CAAC;QAED,gFAAgF;QAChF,mFAAmF;QACnF,mFAAmF;QACnF,gFAAgF;QAChF,kEAAkE;QAClE,IAAI,MAAM,GAAG,CAAC,CAAA;QACd,sFAAsF;QACtF,wFAAwF;QACxF,yEAAyE;QACzE,IAAI,CAAC;YACH,sFAAsF;YACtF,kFAAkF;YAClF,MAAM,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,kBAAkB,CAAC,WAAW,EAAE,YAAY,CAAC,CAAA;YACpF,MAAM,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,WAAW,EAAE,YAAY,CAAC,CAAA;YAElF,oFAAoF;YACpF,6BAA6B;YAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAA;YACjC,MAAM,IAAI,GAAG,YAAY,CAAC,UAAU,EAAE;gBACpC,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;gBAC/C,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,EAAE;gBAC9C,GAAG;aACJ,CAAC,CAAA;YACF,KAAK,MAAM,GAAG,IAAI,IAAI;gBAAE,MAAM,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,CAAA;YAErF,oFAAoF;YACpF,oFAAoF;YACpF,sFAAsF;YACtF,uFAAuF;YACvF,qFAAqF;YACrF,gDAAgD;YAChD,MAAM,MAAM,GAAG,UAAU,CAAC,YAAY,CAAA;YACtC,IAAI,KAAK,GAAG,CAAC,CAAA;YACb,2FAA2F;YAC3F,8FAA8F;YAC9F,wFAAwF;YACxF,6FAA6F;YAC7F,MAAM,OAAO,GAAG,KAAK,EACnB,GAAe,EACoC,EAAE;gBACrD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;gBAC/C,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;gBAC5C,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACzB,MAAM,IAAI,CAAC,OAAO,CAChB,WAAW,EACX,GAAG,EACH,MAAM;wBACJ,CAAC,CAAC,oBAAoB,GAAG,CAAC,SAAS,GAAG;wBACtC,CAAC,CAAC,2BAA2B,GAAG,CAAC,eAAe,GAAG,CACtD,CAAA;oBACD,OAAO,EAAE,WAAW,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;gBAC1C,CAAC;gBACD,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,QAAQ,CAAA;gBACvC,IAAI,SAAS,GAAG,CAAC,CAAA;gBAEjB,+EAA+E;gBAC/E,iCAAiC;gBACjC,IAAI,IAAgB,CAAA;gBACpB,IAAI,CAAC;oBACH,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;oBAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAA;oBACrC,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC;wBACnC,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC;wBACrC,oFAAoF;wBACpF,sFAAsF;wBACtF,qFAAqF;wBACrF,yFAAyF;wBACzF,oFAAoF;wBACpF,kDAAkD;wBAClD,MAAM,EAAE,uBAAuB,CAC7B,UAAU,CAAC,SAAS,EACpB,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAC3B,MAAM,CAAC,UAAU,CAClB;wBACD,MAAM,EAAE,SAAS;wBACjB,WAAW,EAAE,GAAG;wBAChB,eAAe,EAAE,IAAI;wBACrB,eAAe,EAAE,uBAAuB,CAAC;4BACvC,SAAS,EAAE,WAAW,UAAU,CAAC,SAAS,EAAE;4BAC5C,WAAW;yBACZ,CAAC;qBACH,CAAC,CAAA;oBACF,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,OAAO,CAAA;oBACjD,MAAM,KAAK,GAAG;wBACZ,WAAW,EAAE,SAAS,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC;wBAC7C,YAAY,EAAE,SAAS,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC;qBAChD,CAAA;oBACD,SAAS,IAAI,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,YAAY,CAAA;oBACnD,IAAI,GAAG;wBACL,GAAG,GAAG;wBACN,MAAM,EAAE,MAAM;wBACd,UAAU,EAAE,SAAS,CAAC,IAAI;wBAC1B,KAAK;wBACL,SAAS;wBACT,SAAS,EAAE,OAAO;wBAClB,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE;qBAClC,CAAA;oBACD,MAAM,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,CAAA;gBAChE,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,CAAA;oBACxD,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;gBAClD,CAAC;gBAED,4EAA4E;gBAC5E,iFAAiF;gBACjF,kDAAkD;gBAClD,IAAI,CAAC;oBACH,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAA;oBACnD,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC;wBAChC,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC;wBACjC,MAAM,EAAE,mBAAmB;wBAC3B,MAAM,EAAE,gBAAgB,CACtB,MAAM,EACN,SAAS,EACT,IAAI,CAAC,UAAU,IAAI,EAAE,EACrB,cAAc,CAAC,OAAO,CAAC,CACxB;wBACD,WAAW,EAAE,CAAC;wBACd,eAAe,EAAE,IAAI;wBACrB,eAAe,EAAE,uBAAuB,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,WAAW,EAAE,CAAC;qBACtF,CAAC,CAAA;oBACF,SAAS,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,CAAC,CAAA;oBAC/E,yEAAyE;oBACzE,8EAA8E;oBAC9E,+EAA+E;oBAC/E,gFAAgF;oBAChF,kFAAkF;oBAClF,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;oBACvC,IAAI,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;wBAC/C,MAAM,IAAI,KAAK,CACb,0EAA0E,CAC3E,CAAA;oBACH,CAAC;oBACD,MAAM,MAAM,GAAG,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;oBAChD,MAAM,KAAK,GAAiB;wBAC1B,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;wBACrC,KAAK,EAAE,GAAG,CAAC,EAAE;wBACb,UAAU,EAAE,UAAU,CAAC,UAAU;wBACjC,MAAM;wBACN,aAAa,EAAE,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC;wBACjD,SAAS,EAAE,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC;wBACvD,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE;qBACjC,CAAA;oBACD,MAAM,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,CAAA;oBACjE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBACjD,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,MAAM,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,WAAW,EAAE;wBACvD,GAAG,IAAI;wBACP,KAAK,EAAE,mBAAmB,eAAe,CAAC,CAAC,CAAC,EAAE;qBAC/C,CAAC,CAAA;oBACF,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;gBAClD,CAAC;YACH,CAAC,CAAA;YAED,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,IAAI,MAAM,KAAK,IAAI,IAAI,KAAK,IAAI,MAAM,EAAE,CAAC;oBACvC,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,EAAE,8CAA8C,CAAC,CAAA;oBACpF,SAAQ;gBACV,CAAC;gBACD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAA;gBAClC,KAAK,IAAI,OAAO,CAAC,WAAW,CAAA;gBAC5B,IAAI,OAAO,CAAC,MAAM;oBAAE,MAAM,EAAE,CAAA;YAC9B,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,kFAAkF;YAClF,oFAAoF;YACpF,oFAAoF;YACpF,wBAAwB;YACxB,MAAM,IAAI,CAAC,IAAI,CAAC,2BAA2B,CAAC,SAAS,CACnD,WAAW,EACX,YAAY,EACZ,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAC/B,CAAA;QACH,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,YAAY,CAAC,CAAA;IAC/C,CAAC;IAED,8EAA8E;IAEtE,KAAK,CAAC,OAAO,CAAC,WAAmB,EAAE,GAAe,EAAE,KAAa;QACvE,MAAM,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,WAAW,EAAE;YACvD,GAAG,GAAG;YACN,MAAM,EAAE,QAAQ;YAChB,KAAK;YACL,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE;SAClC,CAAC,CAAA;IACJ,CAAC;IAED,wFAAwF;IAChF,KAAK,CAAC,cAAc,CAC1B,WAAmB,EACnB,UAA6B;QAE7B,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;QACnF,MAAM,GAAG,GAAG,IAAI,GAAG,EAA0B,CAAA;QAC7C,KAAK,MAAM,EAAE,IAAI,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC;YAC7D,IAAI,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC/B,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;gBACnD,IAAI,CAAC,QAAQ;oBAAE,MAAM,IAAI,eAAe,CAAC,4BAA4B,EAAE,GAAG,CAAC,CAAA;gBAC3E,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,KAAK,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;YACxE,CAAC;iBAAM,CAAC;gBACN,MAAM,OAAO,GAAG,WAAW,CACzB,MAAM,IAAI,CAAC,IAAI,CAAC,8BAA8B,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC,EACnE,sBAAsB,EACtB,EAAE,CACH,CAAA;gBACD,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,KAAK,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;YAC/E,CAAC;QACH,CAAC;QACD,OAAO,GAAG,CAAA;IACZ,CAAC;IAED;;;;;OAKG;IACK,KAAK,CAAC,eAAe,CAC3B,WAAmB,EACnB,UAA6B,EAC7B,IAA0B;QAE1B,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;QAC1F,MAAM,GAAG,GAAG,IAAI,GAAG,EAA2B,CAAA;QAC9C,KAAK,MAAM,EAAE,IAAI,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;YACvD,MAAM,OAAO,GACX,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YACrF,IAAI,CAAC,OAAO;gBAAE,MAAM,IAAI,eAAe,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAA;YAClE,4BAA4B,CAAC,OAAO,CAAC,CAAA;YACrC,+BAA+B,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;YAC9C,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE;gBACV,OAAO;gBACP,SAAS,EAAE,kBAAkB,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC;aAC1E,CAAC,CAAA;QACJ,CAAC;QACD,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,2FAA2F;IACnF,KAAK,CAAC,WAAW,CAAC,WAAmB;QAC3C,6FAA6F;QAC7F,4FAA4F;QAC5F,kFAAkF;QAClF,MAAM,QAAQ,GAAG,MAAM,0BAA0B,CAAC,EAAE,WAAW,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;QAC7E,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,eAAe,CAAC,iDAAiD,CAAC,CAAA;QAC3F,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED,oGAAoG;IAC5F,MAAM,CAAC,OAAe;QAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,OAAO,CAAC,IAAI,mBAAmB,CAAC,OAAO,CAAC,CAAA;QACpF,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAA;QACvC,OAAO,cAAc,CACnB,QAAQ,EACR,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,QAAQ,EACrC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CACjC,CAAA;IACH,CAAC;IAEO,MAAM,CAAC,WAAmB,EAAE,YAAoB;QACtD,OAAO,uBAAuB,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,YAAY,CAAC,CAAA;IACtE,CAAC;CACF;AAED,SAAS,cAAc,CAAC,OAAuB;IAC7C,OAAO,OAAO,CAAC,SAAS,EAAE,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAA;AACrF,CAAC"}
|
|
@@ -98,7 +98,7 @@ export declare class SandboxService {
|
|
|
98
98
|
setLabels(workspaceId: string, id: string, input: SetSandboxLabelsInput): Promise<SandboxPromptVersion>;
|
|
99
99
|
/** Soft-archive a candidate version (hidden from the default listing). */
|
|
100
100
|
archivePrompt(workspaceId: string, id: string): Promise<void>;
|
|
101
|
-
/** The fixture library,
|
|
101
|
+
/** The fixture library, reconciled against the shipped builtin catalog first. */
|
|
102
102
|
listFixtures(workspaceId: string): Promise<SandboxFixture[]>;
|
|
103
103
|
/** Create a workspace-authored fixture. */
|
|
104
104
|
createFixture(workspaceId: string, input: CreateSandboxFixtureInput): Promise<SandboxFixture>;
|
|
@@ -109,10 +109,33 @@ export declare class SandboxService {
|
|
|
109
109
|
getExperiment(workspaceId: string, id: string): Promise<SandboxExperimentDetail>;
|
|
110
110
|
/** Create a draft experiment. Launching it (the run-driver) expands + grades the matrix. */
|
|
111
111
|
createExperiment(workspaceId: string, input: CreateSandboxExperimentInput): Promise<SandboxExperiment>;
|
|
112
|
+
/**
|
|
113
|
+
* Refuse a matrix naming a fixture the run-driver cannot run (a repository seed) or one the
|
|
114
|
+
* chosen agent kind is not exercised against.
|
|
115
|
+
*
|
|
116
|
+
* An unknown id is deliberately NOT refused here: the run-driver resolves fixtures against the
|
|
117
|
+
* workspace store AND the builtins at launch, and a fixture can legitimately be authored between
|
|
118
|
+
* create and launch. Refusing an absent id would only move that failure earlier while adding a way
|
|
119
|
+
* for a valid draft to be rejected.
|
|
120
|
+
*/
|
|
121
|
+
private assertRunnableFixtures;
|
|
112
122
|
/** Resolve the shipped baseline a clone derives from (by base-prompt id, else by kind). */
|
|
113
123
|
private resolveBaseline;
|
|
114
|
-
/**
|
|
115
|
-
|
|
124
|
+
/**
|
|
125
|
+
* Bring the workspace's builtin fixture rows up to date with the shipped catalog, leaving
|
|
126
|
+
* workspace-authored ones untouched. Idempotent, and a no-op write-wise once they agree.
|
|
127
|
+
*
|
|
128
|
+
* Reconciled against the CATALOG rather than seeded once, for the same reason built-in pipelines
|
|
129
|
+
* are: a "seed only when the workspace has none" gate makes every LATER release invisible to
|
|
130
|
+
* every workspace that has already opened the surface. This shipped two new agent kinds, and on
|
|
131
|
+
* such a workspace their fixture lists came back empty, so the kind was offered in the builder
|
|
132
|
+
* with a permanently disabled Run button and nothing on screen saying why.
|
|
133
|
+
*
|
|
134
|
+
* Compared field by field (rather than upserting all of them every time) because this runs on
|
|
135
|
+
* every overview load: a workspace whose builtins already match pays reads only. `createdAt` is
|
|
136
|
+
* taken from the stored row, so an unchanged fixture is byte-identical and no row churns.
|
|
137
|
+
*/
|
|
138
|
+
private reconcileBuiltinFixtures;
|
|
116
139
|
/**
|
|
117
140
|
* The judge model to use when the caller didn't pick one: the deployment's routing
|
|
118
141
|
* default. We do NOT guess a provider — if no default is configured (e.g. a minimal
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SandboxService.d.ts","sourceRoot":"","sources":["../../../src/modules/sandbox/SandboxService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,qBAAqB,EACrB,KAAK,EACL,WAAW,EACX,QAAQ,EACR,iBAAiB,EACjB,2BAA2B,EAC3B,cAAc,EACd,wBAAwB,EACxB,YAAY,EACZ,sBAAsB,EACtB,oBAAoB,EACpB,8BAA8B,EAC9B,UAAU,EACV,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,qBAAqB,CAAA;AAE5B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAC5D,OAAO,KAAK,EACV,4BAA4B,EAC5B,yBAAyB,EACzB,uBAAuB,EACvB,uBAAuB,EACvB,qBAAqB,EACtB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAQL,KAAK,oBAAoB,EAK1B,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"SandboxService.d.ts","sourceRoot":"","sources":["../../../src/modules/sandbox/SandboxService.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { assertFound, ConflictError, requireWorkspace, ValidationError } from '@cat-factory/kernel';
|
|
2
2
|
import { cellCount, firstVersionFromBaseline, isRunnableMatrix, listBaselines, listBuiltinFixtures, nextVersion, SANDBOX_AGENT_KINDS, baselineVersionId, sandboxKindMeta, sandboxPromptKinds, workspacePromptVersions, } from '@cat-factory/sandbox';
|
|
3
|
+
import { assertSandboxFixtureMatchesKind, assertSandboxRunnable, assertSandboxRunnableFixture, } from './sandboxAdmission.js';
|
|
3
4
|
/** A safety ceiling on how many cells one experiment may expand to (cost guard). */
|
|
4
5
|
export const MAX_SANDBOX_CELLS = 100;
|
|
5
6
|
/**
|
|
@@ -15,6 +16,26 @@ export async function composeExperimentDetail(repos, workspaceId, experimentId)
|
|
|
15
16
|
]);
|
|
16
17
|
return { experiment, runs, grades };
|
|
17
18
|
}
|
|
19
|
+
/**
|
|
20
|
+
* A stored fixture's content, as a comparable string: every field a reconcile could need to
|
|
21
|
+
* refresh, serialized in a FIXED order.
|
|
22
|
+
*
|
|
23
|
+
* Ordered explicitly rather than stringifying the row, because the two are built by different
|
|
24
|
+
* code (one by the catalog, one by a repository's row mapping) and JSON key order is significant
|
|
25
|
+
* to `JSON.stringify`. Reading the row's own order would make every comparison false and turn a
|
|
26
|
+
* read-only reconcile into a write per builtin on every overview load. Both facades persist these
|
|
27
|
+
* as JSON TEXT, so the nested payload round-trips byte-stable.
|
|
28
|
+
*/
|
|
29
|
+
function fixtureContent(fixture) {
|
|
30
|
+
return JSON.stringify([
|
|
31
|
+
fixture.kind,
|
|
32
|
+
fixture.name,
|
|
33
|
+
fixture.payload,
|
|
34
|
+
fixture.repoRef,
|
|
35
|
+
fixture.objective,
|
|
36
|
+
fixture.origin,
|
|
37
|
+
]);
|
|
38
|
+
}
|
|
18
39
|
/**
|
|
19
40
|
* Management CRUD for the Sandbox (the parallel prompt/model testing surface): the
|
|
20
41
|
* shipped baselines + stored candidate prompt versions, the fixture library (builtins
|
|
@@ -149,10 +170,10 @@ export class SandboxService {
|
|
|
149
170
|
await this.deps.sandboxPromptVersionRepository.archive(workspaceId, id, this.deps.clock.now());
|
|
150
171
|
}
|
|
151
172
|
// ---- fixtures -------------------------------------------------------------
|
|
152
|
-
/** The fixture library,
|
|
173
|
+
/** The fixture library, reconciled against the shipped builtin catalog first. */
|
|
153
174
|
async listFixtures(workspaceId) {
|
|
154
175
|
await requireWorkspace(this.deps.workspaceRepository, workspaceId);
|
|
155
|
-
await this.
|
|
176
|
+
await this.reconcileBuiltinFixtures(workspaceId);
|
|
156
177
|
return this.deps.sandboxFixtureRepository.list(workspaceId);
|
|
157
178
|
}
|
|
158
179
|
/** Create a workspace-authored fixture. */
|
|
@@ -193,19 +214,17 @@ export class SandboxService {
|
|
|
193
214
|
/** Create a draft experiment. Launching it (the run-driver) expands + grades the matrix. */
|
|
194
215
|
async createExperiment(workspaceId, input) {
|
|
195
216
|
await requireWorkspace(this.deps.workspaceRepository, workspaceId);
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
// Refuse container kinds up front: the in-product run driver only runs inline cells,
|
|
201
|
-
// so a container experiment could be persisted but never launched. Reject at create
|
|
202
|
-
// time rather than leaving an un-launchable draft in the workspace.
|
|
203
|
-
if (meta.bucket === 'container') {
|
|
204
|
-
throw new ValidationError(`The "${input.agentKind}" agent runs in a container; container experiments are not yet supported in the Sandbox.`);
|
|
205
|
-
}
|
|
217
|
+
// Refuse an un-runnable kind up front, through the same assertion the run-driver uses: the
|
|
218
|
+
// driver only runs inline cells, so a draft naming a kind it cannot dispatch could be persisted
|
|
219
|
+
// and never launched.
|
|
220
|
+
const meta = assertSandboxRunnable(input.agentKind);
|
|
206
221
|
if (!isRunnableMatrix(input.matrix)) {
|
|
207
222
|
throw new ValidationError('The experiment matrix needs at least one prompt, model and fixture');
|
|
208
223
|
}
|
|
224
|
+
// ...and the same for the FIXTURES the matrix names, which only `launch` used to check. One
|
|
225
|
+
// list read indexed into a Map rather than a point read per id (the banned N+1), and the
|
|
226
|
+
// builtins fill in whatever a workspace has not had seeded yet.
|
|
227
|
+
await this.assertRunnableFixtures(workspaceId, input.matrix.fixtureIds, meta);
|
|
209
228
|
const repeats = input.repeats ?? 1;
|
|
210
229
|
const total = cellCount(input.matrix, repeats);
|
|
211
230
|
if (total > MAX_SANDBOX_CELLS) {
|
|
@@ -227,6 +246,30 @@ export class SandboxService {
|
|
|
227
246
|
return experiment;
|
|
228
247
|
}
|
|
229
248
|
// ---- internals ------------------------------------------------------------
|
|
249
|
+
/**
|
|
250
|
+
* Refuse a matrix naming a fixture the run-driver cannot run (a repository seed) or one the
|
|
251
|
+
* chosen agent kind is not exercised against.
|
|
252
|
+
*
|
|
253
|
+
* An unknown id is deliberately NOT refused here: the run-driver resolves fixtures against the
|
|
254
|
+
* workspace store AND the builtins at launch, and a fixture can legitimately be authored between
|
|
255
|
+
* create and launch. Refusing an absent id would only move that failure earlier while adding a way
|
|
256
|
+
* for a valid draft to be rejected.
|
|
257
|
+
*/
|
|
258
|
+
async assertRunnableFixtures(workspaceId, fixtureIds, meta) {
|
|
259
|
+
const byId = new Map();
|
|
260
|
+
for (const fixture of listBuiltinFixtures(this.deps.clock.now()))
|
|
261
|
+
byId.set(fixture.id, fixture);
|
|
262
|
+
for (const fixture of await this.deps.sandboxFixtureRepository.list(workspaceId)) {
|
|
263
|
+
byId.set(fixture.id, fixture);
|
|
264
|
+
}
|
|
265
|
+
for (const id of new Set(fixtureIds)) {
|
|
266
|
+
const fixture = byId.get(id);
|
|
267
|
+
if (!fixture)
|
|
268
|
+
continue;
|
|
269
|
+
assertSandboxRunnableFixture(fixture);
|
|
270
|
+
assertSandboxFixtureMatchesKind(fixture, meta);
|
|
271
|
+
}
|
|
272
|
+
}
|
|
230
273
|
/** Resolve the shipped baseline a clone derives from (by base-prompt id, else by kind). */
|
|
231
274
|
resolveBaseline(agentKind, basePromptId) {
|
|
232
275
|
const baselines = listBaselines(this.deps.clock.now(), this.deps.agentKindRegistry);
|
|
@@ -236,13 +279,32 @@ export class SandboxService {
|
|
|
236
279
|
throw new ValidationError(`No baseline prompt for agent kind "${agentKind}"`);
|
|
237
280
|
return source;
|
|
238
281
|
}
|
|
239
|
-
/**
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
282
|
+
/**
|
|
283
|
+
* Bring the workspace's builtin fixture rows up to date with the shipped catalog, leaving
|
|
284
|
+
* workspace-authored ones untouched. Idempotent, and a no-op write-wise once they agree.
|
|
285
|
+
*
|
|
286
|
+
* Reconciled against the CATALOG rather than seeded once, for the same reason built-in pipelines
|
|
287
|
+
* are: a "seed only when the workspace has none" gate makes every LATER release invisible to
|
|
288
|
+
* every workspace that has already opened the surface. This shipped two new agent kinds, and on
|
|
289
|
+
* such a workspace their fixture lists came back empty, so the kind was offered in the builder
|
|
290
|
+
* with a permanently disabled Run button and nothing on screen saying why.
|
|
291
|
+
*
|
|
292
|
+
* Compared field by field (rather than upserting all of them every time) because this runs on
|
|
293
|
+
* every overview load: a workspace whose builtins already match pays reads only. `createdAt` is
|
|
294
|
+
* taken from the stored row, so an unchanged fixture is byte-identical and no row churns.
|
|
295
|
+
*/
|
|
296
|
+
async reconcileBuiltinFixtures(workspaceId) {
|
|
297
|
+
const stored = new Map((await this.deps.sandboxFixtureRepository.list(workspaceId)).map((f) => [f.id, f]));
|
|
298
|
+
for (const shipped of listBuiltinFixtures(this.deps.clock.now())) {
|
|
299
|
+
const existing = stored.get(shipped.id);
|
|
300
|
+
if (existing && fixtureContent(existing) === fixtureContent(shipped))
|
|
301
|
+
continue;
|
|
302
|
+
// Keep the original `createdAt` on a refresh: the row is the same fixture, and the library
|
|
303
|
+
// is ordered by it, so re-stamping would reshuffle the list on an unrelated release.
|
|
304
|
+
await this.deps.sandboxFixtureRepository.upsert(workspaceId, {
|
|
305
|
+
...shipped,
|
|
306
|
+
...(existing ? { createdAt: existing.createdAt } : {}),
|
|
307
|
+
});
|
|
246
308
|
}
|
|
247
309
|
}
|
|
248
310
|
/**
|