@cat-factory/orchestration 0.277.1 → 0.279.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.
Files changed (52) hide show
  1. package/dist/container/dependencies.d.ts +2 -6
  2. package/dist/container/dependencies.d.ts.map +1 -1
  3. package/dist/container.d.ts +10 -1
  4. package/dist/container.d.ts.map +1 -1
  5. package/dist/container.js +1 -0
  6. package/dist/container.js.map +1 -1
  7. package/dist/modules/execution/AgentContextBuilder.d.ts.map +1 -1
  8. package/dist/modules/execution/AgentContextBuilder.js +3 -0
  9. package/dist/modules/execution/AgentContextBuilder.js.map +1 -1
  10. package/dist/modules/execution/RunAdmission.d.ts +9 -0
  11. package/dist/modules/execution/RunAdmission.d.ts.map +1 -1
  12. package/dist/modules/execution/RunAdmission.js +26 -5
  13. package/dist/modules/execution/RunAdmission.js.map +1 -1
  14. package/dist/modules/execution/run-catalog-context.d.ts +20 -11
  15. package/dist/modules/execution/run-catalog-context.d.ts.map +1 -1
  16. package/dist/modules/execution/run-catalog-context.js +19 -17
  17. package/dist/modules/execution/run-catalog-context.js.map +1 -1
  18. package/dist/modules/execution/run-foundational-credentials.d.ts +32 -0
  19. package/dist/modules/execution/run-foundational-credentials.d.ts.map +1 -0
  20. package/dist/modules/execution/run-foundational-credentials.js +58 -0
  21. package/dist/modules/execution/run-foundational-credentials.js.map +1 -0
  22. package/dist/modules/execution/run-foundational-services.d.ts +13 -1
  23. package/dist/modules/execution/run-foundational-services.d.ts.map +1 -1
  24. package/dist/modules/execution/run-foundational-services.js.map +1 -1
  25. package/dist/modules/sandbox/SandboxRunService.d.ts +6 -1
  26. package/dist/modules/sandbox/SandboxRunService.d.ts.map +1 -1
  27. package/dist/modules/sandbox/SandboxRunService.js +34 -27
  28. package/dist/modules/sandbox/SandboxRunService.js.map +1 -1
  29. package/dist/modules/sandbox/SandboxService.d.ts +26 -3
  30. package/dist/modules/sandbox/SandboxService.d.ts.map +1 -1
  31. package/dist/modules/sandbox/SandboxService.js +81 -19
  32. package/dist/modules/sandbox/SandboxService.js.map +1 -1
  33. package/dist/modules/sandbox/sandbox-input.d.ts +16 -0
  34. package/dist/modules/sandbox/sandbox-input.d.ts.map +1 -0
  35. package/dist/modules/sandbox/sandbox-input.js +274 -0
  36. package/dist/modules/sandbox/sandbox-input.js.map +1 -0
  37. package/dist/modules/sandbox/sandbox.logic.d.ts +0 -8
  38. package/dist/modules/sandbox/sandbox.logic.d.ts.map +1 -1
  39. package/dist/modules/sandbox/sandbox.logic.js +4 -48
  40. package/dist/modules/sandbox/sandbox.logic.js.map +1 -1
  41. package/dist/modules/sandbox/sandboxAdmission.d.ts +36 -0
  42. package/dist/modules/sandbox/sandboxAdmission.d.ts.map +1 -0
  43. package/dist/modules/sandbox/sandboxAdmission.js +83 -0
  44. package/dist/modules/sandbox/sandboxAdmission.js.map +1 -0
  45. package/dist/validation/validateBinaryGenerators.d.ts +11 -6
  46. package/dist/validation/validateBinaryGenerators.d.ts.map +1 -1
  47. package/dist/validation/validateBinaryGenerators.js +13 -13
  48. package/dist/validation/validateBinaryGenerators.js.map +1 -1
  49. package/dist/validation/validateRegistrations.d.ts.map +1 -1
  50. package/dist/validation/validateRegistrations.js +100 -1
  51. package/dist/validation/validateRegistrations.js.map +1 -1
  52. package/package.json +11 -11
@@ -1,6 +1,6 @@
1
1
  import type { AgentKindRegistry } from '@cat-factory/agents';
2
2
  import type { PipelineStep } from '@cat-factory/contracts';
3
- import type { BinaryGeneratorSource, ExecutionInstance, InjectedContextFile, Logger, ResolvedBinaryGenerator } from '@cat-factory/kernel';
3
+ import type { BinaryGeneratorSource, ExecutionInstance, InjectedContextFile, Logger, ResolvedBinaryGenerator, ResolvedServiceCredentials } from '@cat-factory/kernel';
4
4
  import { type FoundationalServiceResolver } from './run-foundational-services.js';
5
5
  /**
6
6
  * Everything one dispatch takes from the CATALOG side, as {@link CatalogRunContext.sliceFor}
@@ -11,6 +11,12 @@ export interface CatalogRunSlice {
11
11
  foundationalContextFiles: InjectedContextFile[];
12
12
  binaryOutputContextFiles: InjectedContextFile[];
13
13
  binaryGenerators: ResolvedBinaryGenerator[];
14
+ /**
15
+ * The credential DECLARATIONS of every catalog service this dispatch was briefed on: the key
16
+ * names the container executor resolves values for onto the job body. Empty when nothing this
17
+ * dispatch reads or writes through needs authenticating, which is the ordinary case.
18
+ */
19
+ foundationalCredentials: ResolvedServiceCredentials[];
14
20
  /**
15
21
  * The catalog service this dispatch stores through, when it was briefed to store anything.
16
22
  * Pure (no I/O) and derived from the same trait gate as the two reads above, so it rides the
@@ -41,25 +47,28 @@ export declare class CatalogRunContext {
41
47
  private readonly recordBinaryOutput;
42
48
  constructor(deps: CatalogRunContextDeps);
43
49
  /**
44
- * ALL THREE catalog-backed reads of one dispatch, resolved concurrently — the ONE entry the
45
- * context read wave takes, so the builder holds a single wave slot rather than three:
50
+ * ALL FOUR catalog-backed reads of one dispatch, resolved concurrently — the ONE entry the
51
+ * context read wave takes, so the builder holds a single wave slot rather than four:
46
52
  *
47
53
  * - the FOUNDATIONAL SERVICES files (the catalog for a design kind, the declared services' API
48
54
  * contracts for a consumer kind, nothing for anything else), read only from the steps BEFORE
49
55
  * the one being dispatched so a re-dispatched design cannot read its own prior round;
50
56
  * - the BINARY-OUTPUT brief for a kind carrying the trait, off the step's own selection;
51
57
  * - the GENERATIVE INTEGRATIONS that selection names — the non-secret projection the container
52
- * executor turns into credentials on the job body.
58
+ * executor turns into credentials on the job body;
59
+ * - the CREDENTIAL declarations of every catalog service this dispatch was briefed on, which is
60
+ * the same projection one layer over: what authenticates the storage and context services,
61
+ * where the integrations' half authenticates what MAKES the artifact.
53
62
  *
54
- * They belong together rather than merely being adjacent: all three go through this
55
- * collaborator, all three are BEST-EFFORT inside (each gap has a stated rendering — an
63
+ * They belong together rather than merely being adjacent: all four go through this
64
+ * collaborator, all four are BEST-EFFORT inside (each gap has a stated rendering — an
56
65
  * `unavailable` catalog file, an absent brief the trait guidance already defines as "do not
57
- * attempt any upload", no integrations to hand credentials for), and on a mothership-mode node
58
- * all three can cross the machine API. That last point is why the generative half belongs in
59
- * the wave at all rather than after it, where it would serialise a round trip behind the
60
- * others for nothing.
66
+ * attempt any upload", no integrations to hand credentials for, an unset variable the briefs
67
+ * define as "the platform could not provide it"), and on a mothership-mode node all four can
68
+ * cross the machine API. That last point is why the generative half belongs in the wave at all
69
+ * rather than after it, where it would serialise a round trip behind the others for nothing.
61
70
  *
62
- * Exposed as the WHOLE slice rather than three per-read methods, because the sharing below is
71
+ * Exposed as the WHOLE slice rather than four per-read methods, because the sharing below is
63
72
  * only correct within one dispatch: a caller that could take the halves separately could take
64
73
  * them at different times, which is the drift this collaborator exists to prevent.
65
74
  *
@@ -1 +1 @@
1
- {"version":3,"file":"run-catalog-context.d.ts","sourceRoot":"","sources":["../../../src/modules/execution/run-catalog-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,KAAK,EACV,qBAAqB,EACrB,iBAAiB,EACjB,mBAAmB,EACnB,MAAM,EACN,uBAAuB,EACxB,MAAM,qBAAqB,CAAA;AAE5B,OAAO,EAEL,KAAK,2BAA2B,EAGjC,MAAM,gCAAgC,CAAA;AAmBvC;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,wBAAwB,EAAE,mBAAmB,EAAE,CAAA;IAC/C,wBAAwB,EAAE,mBAAmB,EAAE,CAAA;IAC/C,gBAAgB,EAAE,uBAAuB,EAAE,CAAA;IAC3C;;;;OAIG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAA;CAChC;AAED,MAAM,WAAW,qBAAqB;IACpC,iBAAiB,EAAE,iBAAiB,CAAA;IACpC,2BAA2B,CAAC,EAAE,2BAA2B,CAAA;IACzD;;;;;OAKG;IACH,qBAAqB,CAAC,EAAE,qBAAqB,CAAA;IAC7C,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,qBAAa,iBAAiB;IAShB,OAAO,CAAC,QAAQ,CAAC,IAAI;IARjC;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAiC;IACpE,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAiC;IAEpE,YAA6B,IAAI,EAAE,qBAAqB,EAGvD;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8BG;IACG,QAAQ,CACZ,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,EAClB,QAAQ,EAAE,iBAAiB,GAC1B,OAAO,CAAC,eAAe,CAAC,CAyB1B;IAED;;;;OAIG;IACH,6BAA6B,CAC3B,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,YAAY,EAClB,MAAM,EAAE,MAAM,GAAG,SAAS,GACzB,OAAO,CAAC,IAAI,CAAC,CAEf;IAED;;;OAGG;IACH,6BAA6B,CAC3B,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,YAAY,EAClB,MAAM,EAAE,MAAM,GAAG,SAAS,GACzB,OAAO,CAAC,IAAI,CAAC,CAEf;CACF"}
1
+ {"version":3,"file":"run-catalog-context.d.ts","sourceRoot":"","sources":["../../../src/modules/execution/run-catalog-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,KAAK,EACV,qBAAqB,EACrB,iBAAiB,EACjB,mBAAmB,EACnB,MAAM,EACN,uBAAuB,EACvB,0BAA0B,EAC3B,MAAM,qBAAqB,CAAA;AAE5B,OAAO,EAEL,KAAK,2BAA2B,EAGjC,MAAM,gCAAgC,CAAA;AAoBvC;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,wBAAwB,EAAE,mBAAmB,EAAE,CAAA;IAC/C,wBAAwB,EAAE,mBAAmB,EAAE,CAAA;IAC/C,gBAAgB,EAAE,uBAAuB,EAAE,CAAA;IAC3C;;;;OAIG;IACH,uBAAuB,EAAE,0BAA0B,EAAE,CAAA;IACrD;;;;OAIG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAA;CAChC;AAED,MAAM,WAAW,qBAAqB;IACpC,iBAAiB,EAAE,iBAAiB,CAAA;IACpC,2BAA2B,CAAC,EAAE,2BAA2B,CAAA;IACzD;;;;;OAKG;IACH,qBAAqB,CAAC,EAAE,qBAAqB,CAAA;IAC7C,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,qBAAa,iBAAiB;IAShB,OAAO,CAAC,QAAQ,CAAC,IAAI;IARjC;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAiC;IACpE,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAiC;IAEpE,YAA6B,IAAI,EAAE,qBAAqB,EAGvD;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiCG;IACG,QAAQ,CACZ,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,EAClB,QAAQ,EAAE,iBAAiB,GAC1B,OAAO,CAAC,eAAe,CAAC,CA2B1B;IAED;;;;OAIG;IACH,6BAA6B,CAC3B,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,YAAY,EAClB,MAAM,EAAE,MAAM,GAAG,SAAS,GACzB,OAAO,CAAC,IAAI,CAAC,CAEf;IAED;;;OAGG;IACH,6BAA6B,CAC3B,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,YAAY,EAClB,MAAM,EAAE,MAAM,GAAG,SAAS,GACzB,OAAO,CAAC,IAAI,CAAC,CAEf;CACF"}
@@ -1,5 +1,6 @@
1
1
  import { memoizeBinaryGeneratorViews } from '@cat-factory/kernel';
2
2
  import { createFoundationalDeclarationRecorder, resolveFoundationalContext, } from './run-foundational-services.js';
3
+ import { dispatchFoundationalCredentialsFor } from './run-foundational-credentials.js';
3
4
  import { createBinaryOutputDeclarationRecorder, dispatchBinaryGeneratorsFor, dispatchBinaryStorageFor, resolveBinaryOutputContext, } from './run-binary-output.js';
4
5
  export class CatalogRunContext {
5
6
  deps;
@@ -16,25 +17,28 @@ export class CatalogRunContext {
16
17
  this.recordBinaryOutput = createBinaryOutputDeclarationRecorder(deps);
17
18
  }
18
19
  /**
19
- * ALL THREE catalog-backed reads of one dispatch, resolved concurrently — the ONE entry the
20
- * context read wave takes, so the builder holds a single wave slot rather than three:
20
+ * ALL FOUR catalog-backed reads of one dispatch, resolved concurrently — the ONE entry the
21
+ * context read wave takes, so the builder holds a single wave slot rather than four:
21
22
  *
22
23
  * - the FOUNDATIONAL SERVICES files (the catalog for a design kind, the declared services' API
23
24
  * contracts for a consumer kind, nothing for anything else), read only from the steps BEFORE
24
25
  * the one being dispatched so a re-dispatched design cannot read its own prior round;
25
26
  * - the BINARY-OUTPUT brief for a kind carrying the trait, off the step's own selection;
26
27
  * - the GENERATIVE INTEGRATIONS that selection names — the non-secret projection the container
27
- * executor turns into credentials on the job body.
28
+ * executor turns into credentials on the job body;
29
+ * - the CREDENTIAL declarations of every catalog service this dispatch was briefed on, which is
30
+ * the same projection one layer over: what authenticates the storage and context services,
31
+ * where the integrations' half authenticates what MAKES the artifact.
28
32
  *
29
- * They belong together rather than merely being adjacent: all three go through this
30
- * collaborator, all three are BEST-EFFORT inside (each gap has a stated rendering — an
33
+ * They belong together rather than merely being adjacent: all four go through this
34
+ * collaborator, all four are BEST-EFFORT inside (each gap has a stated rendering — an
31
35
  * `unavailable` catalog file, an absent brief the trait guidance already defines as "do not
32
- * attempt any upload", no integrations to hand credentials for), and on a mothership-mode node
33
- * all three can cross the machine API. That last point is why the generative half belongs in
34
- * the wave at all rather than after it, where it would serialise a round trip behind the
35
- * others for nothing.
36
+ * attempt any upload", no integrations to hand credentials for, an unset variable the briefs
37
+ * define as "the platform could not provide it"), and on a mothership-mode node all four can
38
+ * cross the machine API. That last point is why the generative half belongs in the wave at all
39
+ * rather than after it, where it would serialise a round trip behind the others for nothing.
36
40
  *
37
- * Exposed as the WHOLE slice rather than three per-read methods, because the sharing below is
41
+ * Exposed as the WHOLE slice rather than four per-read methods, because the sharing below is
38
42
  * only correct within one dispatch: a caller that could take the halves separately could take
39
43
  * them at different times, which is the drift this collaborator exists to prevent.
40
44
  *
@@ -53,21 +57,19 @@ export class CatalogRunContext {
53
57
  binaryGeneratorSource: memoizeBinaryGeneratorViews(this.deps.binaryGeneratorSource),
54
58
  }
55
59
  : this.deps;
56
- const [foundationalContextFiles, binaryOutputContextFiles, binaryGenerators] = await Promise.all([
57
- resolveFoundationalContext({
58
- ...deps,
59
- workspaceId,
60
- agentKind,
61
- priorSteps: instance.steps.slice(0, instance.currentStep),
62
- }),
60
+ const priorSteps = instance.steps.slice(0, instance.currentStep);
61
+ const [foundationalContextFiles, binaryOutputContextFiles, binaryGenerators, foundationalCredentials,] = await Promise.all([
62
+ resolveFoundationalContext({ ...deps, workspaceId, agentKind, priorSteps }),
63
63
  resolveBinaryOutputContext({ ...deps, workspaceId, agentKind, step }),
64
64
  dispatchBinaryGeneratorsFor({ ...deps, agentKind, step }),
65
+ dispatchFoundationalCredentialsFor({ ...deps, workspaceId, agentKind, step, priorSteps }),
65
66
  ]);
66
67
  const binaryStorageServiceId = dispatchBinaryStorageFor({ ...deps, agentKind, step });
67
68
  return {
68
69
  foundationalContextFiles,
69
70
  binaryOutputContextFiles,
70
71
  binaryGenerators,
72
+ foundationalCredentials,
71
73
  ...(binaryStorageServiceId ? { binaryStorageServiceId } : {}),
72
74
  };
73
75
  }
@@ -1 +1 @@
1
- {"version":3,"file":"run-catalog-context.js","sourceRoot":"","sources":["../../../src/modules/execution/run-catalog-context.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAA;AACjE,OAAO,EAGL,qCAAqC,EACrC,0BAA0B,GAC3B,MAAM,gCAAgC,CAAA;AACvC,OAAO,EAEL,qCAAqC,EACrC,2BAA2B,EAC3B,wBAAwB,EACxB,0BAA0B,GAC3B,MAAM,wBAAwB,CAAA;AA0C/B,MAAM,OAAO,iBAAiB;IASC,IAAI;IARjC;;;;OAIG;IACc,kBAAkB,CAAiC;IACnD,kBAAkB,CAAiC;IAEpE,YAA6B,IAA2B;oBAA3B,IAAI;QAC/B,IAAI,CAAC,kBAAkB,GAAG,qCAAqC,CAAC,IAAI,CAAC,CAAA;QACrE,IAAI,CAAC,kBAAkB,GAAG,qCAAqC,CAAC,IAAI,CAAC,CAAA;IACvE,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8BG;IACH,KAAK,CAAC,QAAQ,CACZ,WAAmB,EACnB,SAAiB,EACjB,IAAkB,EAClB,QAA2B;QAE3B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,qBAAqB;YAC1C,CAAC,CAAC;gBACE,GAAG,IAAI,CAAC,IAAI;gBACZ,qBAAqB,EAAE,2BAA2B,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC;aACpF;YACH,CAAC,CAAC,IAAI,CAAC,IAAI,CAAA;QACb,MAAM,CAAC,wBAAwB,EAAE,wBAAwB,EAAE,gBAAgB,CAAC,GAC1E,MAAM,OAAO,CAAC,GAAG,CAAC;YAChB,0BAA0B,CAAC;gBACzB,GAAG,IAAI;gBACP,WAAW;gBACX,SAAS;gBACT,UAAU,EAAE,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,WAAW,CAAC;aAC1D,CAAC;YACF,0BAA0B,CAAC,EAAE,GAAG,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;YACrE,2BAA2B,CAAC,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;SAC1D,CAAC,CAAA;QACJ,MAAM,sBAAsB,GAAG,wBAAwB,CAAC,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QACrF,OAAO;YACL,wBAAwB;YACxB,wBAAwB;YACxB,gBAAgB;YAChB,GAAG,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAAE,sBAAsB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC9D,CAAA;IACH,CAAC;IAED;;;;OAIG;IACH,6BAA6B,CAC3B,WAAmB,EACnB,IAAkB,EAClB,MAA0B;QAE1B,OAAO,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;IAC3D,CAAC;IAED;;;OAGG;IACH,6BAA6B,CAC3B,WAAmB,EACnB,IAAkB,EAClB,MAA0B;QAE1B,OAAO,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;IAC3D,CAAC;CACF"}
1
+ {"version":3,"file":"run-catalog-context.js","sourceRoot":"","sources":["../../../src/modules/execution/run-catalog-context.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAA;AACjE,OAAO,EAGL,qCAAqC,EACrC,0BAA0B,GAC3B,MAAM,gCAAgC,CAAA;AACvC,OAAO,EAAE,kCAAkC,EAAE,MAAM,mCAAmC,CAAA;AACtF,OAAO,EAEL,qCAAqC,EACrC,2BAA2B,EAC3B,wBAAwB,EACxB,0BAA0B,GAC3B,MAAM,wBAAwB,CAAA;AAgD/B,MAAM,OAAO,iBAAiB;IASC,IAAI;IARjC;;;;OAIG;IACc,kBAAkB,CAAiC;IACnD,kBAAkB,CAAiC;IAEpE,YAA6B,IAA2B;oBAA3B,IAAI;QAC/B,IAAI,CAAC,kBAAkB,GAAG,qCAAqC,CAAC,IAAI,CAAC,CAAA;QACrE,IAAI,CAAC,kBAAkB,GAAG,qCAAqC,CAAC,IAAI,CAAC,CAAA;IACvE,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiCG;IACH,KAAK,CAAC,QAAQ,CACZ,WAAmB,EACnB,SAAiB,EACjB,IAAkB,EAClB,QAA2B;QAE3B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,qBAAqB;YAC1C,CAAC,CAAC;gBACE,GAAG,IAAI,CAAC,IAAI;gBACZ,qBAAqB,EAAE,2BAA2B,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC;aACpF;YACH,CAAC,CAAC,IAAI,CAAC,IAAI,CAAA;QACb,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAA;QAChE,MAAM,CACJ,wBAAwB,EACxB,wBAAwB,EACxB,gBAAgB,EAChB,uBAAuB,EACxB,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACpB,0BAA0B,CAAC,EAAE,GAAG,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;YAC3E,0BAA0B,CAAC,EAAE,GAAG,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;YACrE,2BAA2B,CAAC,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;YACzD,kCAAkC,CAAC,EAAE,GAAG,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;SAC1F,CAAC,CAAA;QACF,MAAM,sBAAsB,GAAG,wBAAwB,CAAC,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QACrF,OAAO;YACL,wBAAwB;YACxB,wBAAwB;YACxB,gBAAgB;YAChB,uBAAuB;YACvB,GAAG,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAAE,sBAAsB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC9D,CAAA;IACH,CAAC;IAED;;;;OAIG;IACH,6BAA6B,CAC3B,WAAmB,EACnB,IAAkB,EAClB,MAA0B;QAE1B,OAAO,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;IAC3D,CAAC;IAED;;;OAGG;IACH,6BAA6B,CAC3B,WAAmB,EACnB,IAAkB,EAClB,MAA0B;QAE1B,OAAO,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;IAC3D,CAAC;CACF"}
@@ -0,0 +1,32 @@
1
+ import type { AgentKindRegistry } from '@cat-factory/agents';
2
+ import type { PipelineStep } from '@cat-factory/contracts';
3
+ import type { AgentKind, Logger, ResolvedServiceCredentials } from '@cat-factory/kernel';
4
+ import { type FoundationalServiceResolver } from './run-foundational-services.js';
5
+ export interface DispatchFoundationalCredentialsInput {
6
+ workspaceId: string;
7
+ /** The EFFECTIVE dispatched kind (a gate helper dispatches its own kind, not the step's). */
8
+ agentKind: AgentKind;
9
+ agentKindRegistry: AgentKindRegistry;
10
+ /** The step being dispatched: its `stepOptions.binaryOutput` is the generating selection. */
11
+ step: PipelineStep;
12
+ /** The run's steps BEFORE this one, newest-last, where a design step's declaration lives. */
13
+ priorSteps: PipelineStep[];
14
+ foundationalServiceResolver?: FoundationalServiceResolver;
15
+ logger?: Logger;
16
+ }
17
+ /**
18
+ * The foundational services this dispatch was BRIEFED on, so it may be given their credentials.
19
+ *
20
+ * Gated on the same traits as the two injected-file reads, and that pairing is the whole safety
21
+ * property: a credential is delivered only for a service whose contract the agent was also handed.
22
+ * The alternative in either direction is a defect. Credentials with no brief put a live secret in
23
+ * a process that was never told the service exists; a brief with no credentials is the state this
24
+ * function was added to end.
25
+ *
26
+ * The two id sets are unioned rather than chosen between, because one kind can carry both traits:
27
+ * a generating step that also consumes a prior design's declared services reads two catalogs'
28
+ * worth of contracts in one dispatch, and dropping either half would leave one of them
29
+ * unauthenticated for a reason no layer states.
30
+ */
31
+ export declare function dispatchFoundationalCredentialsFor(input: DispatchFoundationalCredentialsInput): Promise<ResolvedServiceCredentials[]>;
32
+ //# sourceMappingURL=run-foundational-credentials.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-foundational-credentials.d.ts","sourceRoot":"","sources":["../../../src/modules/execution/run-foundational-credentials.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAE5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAA;AAExF,OAAO,EAAqB,KAAK,2BAA2B,EAAE,MAAM,gCAAgC,CAAA;AAmBpG,MAAM,WAAW,oCAAoC;IACnD,WAAW,EAAE,MAAM,CAAA;IACnB,6FAA6F;IAC7F,SAAS,EAAE,SAAS,CAAA;IACpB,iBAAiB,EAAE,iBAAiB,CAAA;IACpC,6FAA6F;IAC7F,IAAI,EAAE,YAAY,CAAA;IAClB,6FAA6F;IAC7F,UAAU,EAAE,YAAY,EAAE,CAAA;IAC1B,2BAA2B,CAAC,EAAE,2BAA2B,CAAA;IACzD,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,kCAAkC,CACtD,KAAK,EAAE,oCAAoC,GAC1C,OAAO,CAAC,0BAA0B,EAAE,CAAC,CAiBvC"}
@@ -0,0 +1,58 @@
1
+ import { BINARY_OUTPUT_TRAIT, FOUNDATIONAL_CONTRACTS_TRAIT, hasTrait } from '@cat-factory/agents';
2
+ import { noopLogger, runBestEffort } from '@cat-factory/kernel';
3
+ import { declaredSelection } from './run-foundational-services.js';
4
+ /**
5
+ * The foundational services this dispatch was BRIEFED on, so it may be given their credentials.
6
+ *
7
+ * Gated on the same traits as the two injected-file reads, and that pairing is the whole safety
8
+ * property: a credential is delivered only for a service whose contract the agent was also handed.
9
+ * The alternative in either direction is a defect. Credentials with no brief put a live secret in
10
+ * a process that was never told the service exists; a brief with no credentials is the state this
11
+ * function was added to end.
12
+ *
13
+ * The two id sets are unioned rather than chosen between, because one kind can carry both traits:
14
+ * a generating step that also consumes a prior design's declared services reads two catalogs'
15
+ * worth of contracts in one dispatch, and dropping either half would leave one of them
16
+ * unauthenticated for a reason no layer states.
17
+ */
18
+ export async function dispatchFoundationalCredentialsFor(input) {
19
+ const resolver = input.foundationalServiceResolver;
20
+ if (!resolver)
21
+ return [];
22
+ const ids = briefedServiceIds(input);
23
+ if (ids.length === 0)
24
+ return [];
25
+ // BEST-EFFORT, and the degraded state is one the agent already understands: an unresolved
26
+ // credential is an unset variable, which every brief on this seam defines as "the platform
27
+ // could not provide it — report the gap rather than calling the service". Failing the dispatch
28
+ // instead would turn an unreachable catalog into a run that produces nothing and explains
29
+ // nothing, where one that runs and NAMES what it could not reach is strictly more useful.
30
+ const resolved = await runBestEffort(input.logger ?? noopLogger, 'foundationalServices.credentials', () => resolver.credentialsFor(input.workspaceId, ids), { workspaceId: input.workspaceId, agentKind: input.agentKind });
31
+ return resolved ?? [];
32
+ }
33
+ /**
34
+ * Every catalog service id this dispatch has been told about, deduped and in a stable order.
35
+ *
36
+ * Order is stable because the job body is persisted with the dispatch and read back on the poll
37
+ * path: a set that reshuffled per resolve would make two identical dispatches differ on the wire
38
+ * for no reason anyone could act on.
39
+ */
40
+ function briefedServiceIds(input) {
41
+ const { agentKind, agentKindRegistry } = input;
42
+ const ids = new Set();
43
+ if (hasTrait(agentKind, BINARY_OUTPUT_TRAIT, agentKindRegistry)) {
44
+ const selection = input.step.stepOptions?.binaryOutput;
45
+ if (selection?.storageServiceId)
46
+ ids.add(selection.storageServiceId);
47
+ for (const id of selection?.contextServiceIds ?? [])
48
+ ids.add(id);
49
+ }
50
+ if (hasTrait(agentKind, FOUNDATIONAL_CONTRACTS_TRAIT, agentKindRegistry)) {
51
+ // The DECLARED half only, never `unknown`: an id the catalog does not contain resolves to no
52
+ // service, so there is nothing to authenticate to and the index file already states the gap.
53
+ for (const id of declaredSelection(input.priorSteps)?.declared ?? [])
54
+ ids.add(id);
55
+ }
56
+ return [...ids];
57
+ }
58
+ //# sourceMappingURL=run-foundational-credentials.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-foundational-credentials.js","sourceRoot":"","sources":["../../../src/modules/execution/run-foundational-credentials.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,4BAA4B,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAGjG,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAC/D,OAAO,EAAE,iBAAiB,EAAoC,MAAM,gCAAgC,CAAA;AAgCpG;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,KAAK,UAAU,kCAAkC,CACtD,KAA2C;IAE3C,MAAM,QAAQ,GAAG,KAAK,CAAC,2BAA2B,CAAA;IAClD,IAAI,CAAC,QAAQ;QAAE,OAAO,EAAE,CAAA;IACxB,MAAM,GAAG,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAA;IACpC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IAC/B,0FAA0F;IAC1F,2FAA2F;IAC3F,+FAA+F;IAC/F,0FAA0F;IAC1F,0FAA0F;IAC1F,MAAM,QAAQ,GAAG,MAAM,aAAa,CAClC,KAAK,CAAC,MAAM,IAAI,UAAU,EAC1B,kCAAkC,EAClC,GAAG,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC,EACrD,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAC/D,CAAA;IACD,OAAO,QAAQ,IAAI,EAAE,CAAA;AACvB,CAAC;AAED;;;;;;GAMG;AACH,SAAS,iBAAiB,CAAC,KAA2C;IACpE,MAAM,EAAE,SAAS,EAAE,iBAAiB,EAAE,GAAG,KAAK,CAAA;IAC9C,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAA;IAC7B,IAAI,QAAQ,CAAC,SAAS,EAAE,mBAAmB,EAAE,iBAAiB,CAAC,EAAE,CAAC;QAChE,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAA;QACtD,IAAI,SAAS,EAAE,gBAAgB;YAAE,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAA;QACpE,KAAK,MAAM,EAAE,IAAI,SAAS,EAAE,iBAAiB,IAAI,EAAE;YAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IAClE,CAAC;IACD,IAAI,QAAQ,CAAC,SAAS,EAAE,4BAA4B,EAAE,iBAAiB,CAAC,EAAE,CAAC;QACzE,6FAA6F;QAC7F,6FAA6F;QAC7F,KAAK,MAAM,EAAE,IAAI,iBAAiB,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,QAAQ,IAAI,EAAE;YAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IACnF,CAAC;IACD,OAAO,CAAC,GAAG,GAAG,CAAC,CAAA;AACjB,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import type { AgentKindRegistry } from '@cat-factory/agents';
2
2
  import type { BinaryCandidateStepState, BinaryOutputConfig, FoundationalServiceSelection, PipelineStep } from '@cat-factory/contracts';
3
- import type { AgentKind, BinaryGeneratorSource, FoundationalCatalogView, InjectedContextFile, Logger } from '@cat-factory/kernel';
3
+ import type { AgentKind, BinaryGeneratorSource, FoundationalCatalogView, InjectedContextFile, Logger, ResolvedServiceCredentials } from '@cat-factory/kernel';
4
4
  /**
5
5
  * The engine-facing seam over the catalog, implemented by
6
6
  * `FoundationalServiceRunResolver` (`@cat-factory/agents`) and wired only when the catalog is
@@ -16,6 +16,18 @@ export interface FoundationalServiceResolver {
16
16
  */
17
17
  catalogIdsFor(workspaceId: string): Promise<string[]>;
18
18
  contextFilesFor(workspaceId: string, selection: FoundationalServiceSelection | undefined): Promise<InjectedContextFile[]>;
19
+ /**
20
+ * The credential DECLARATIONS (key names, never values) of the services named by `serviceIds`,
21
+ * for the container executor to resolve values for onto the job body. Ids the catalog does not
22
+ * resolve, and services declaring no credential, are simply absent from the answer.
23
+ *
24
+ * On this interface for the reason `binaryOutputContextFilesFor` is: it is the same catalog
25
+ * behind the same tier merge and cache, and the brief that tells an agent which variable to
26
+ * read must be built from the same read as the projection that puts a value in it. THROWS on a
27
+ * mothership-mode node whose mothership is unreachable, which the caller's best-effort wrapper
28
+ * turns into no credentials and therefore unset variables, the state every brief defines.
29
+ */
30
+ credentialsFor(workspaceId: string, serviceIds: readonly string[]): Promise<ResolvedServiceCredentials[]>;
19
31
  /**
20
32
  * The BINARY-OUTPUT read (`run-binary-output.ts`): the brief + contract files for a
21
33
  * generating step's own selection (`stepOptions.binaryOutput`). On this interface rather
@@ -1 +1 @@
1
- {"version":3,"file":"run-foundational-services.d.ts","sourceRoot":"","sources":["../../../src/modules/execution/run-foundational-services.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAM5D,OAAO,KAAK,EACV,wBAAwB,EACxB,kBAAkB,EAClB,4BAA4B,EAC5B,YAAY,EACb,MAAM,wBAAwB,CAAA;AAC/B,OAAO,KAAK,EACV,SAAS,EACT,qBAAqB,EACrB,uBAAuB,EACvB,mBAAmB,EACnB,MAAM,EACP,MAAM,qBAAqB,CAAA;AAwB5B;;;;GAIG;AACH,MAAM,WAAW,2BAA2B;IAC1C,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,EAAE,CAAC,CAAA;IACnE;;;;;OAKG;IACH,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IACrD,eAAe,CACb,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,4BAA4B,GAAG,SAAS,GAClD,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAA;IACjC;;;;;;;;;;;;OAYG;IACH,2BAA2B,CACzB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,kBAAkB,GAAG,SAAS,EACtC,eAAe,CAAC,EAAE,qBAAqB;IACvC;qFACiF;IACjF,UAAU,CAAC,EAAE,wBAAwB,GAAG,IAAI,GAC3C,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAA;CAClC;AAED,MAAM,WAAW,+BAA+B;IAC9C,WAAW,EAAE,MAAM,CAAA;IACnB,6FAA6F;IAC7F,SAAS,EAAE,SAAS,CAAA;IACpB,iBAAiB,EAAE,iBAAiB,CAAA;IACpC,oEAAoE;IACpE,UAAU,EAAE,YAAY,EAAE,CAAA;IAC1B,2BAA2B,CAAC,EAAE,2BAA2B,CAAA;IACzD,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,0BAA0B,CAC9C,KAAK,EAAE,+BAA+B,GACrC,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAwDhC;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,YAAY,EAAE,GACzB,4BAA4B,GAAG,SAAS,CAM1C;AAED;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,+BAA+B,GAAG,CAC5C,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,YAAY;AAClB;sEACsE;AACtE,MAAM,EAAE,MAAM,GAAG,SAAS,KACvB,OAAO,CAAC,IAAI,CAAC,CAAA;AAElB;;;;GAIG;AACH,wBAAgB,qCAAqC,CAAC,IAAI,EAAE;IAC1D,iBAAiB,EAAE,iBAAiB,CAAA;IACpC,2BAA2B,CAAC,EAAE,2BAA2B,CAAA;IACzD,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,GAAG,+BAA+B,CAelC"}
1
+ {"version":3,"file":"run-foundational-services.d.ts","sourceRoot":"","sources":["../../../src/modules/execution/run-foundational-services.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAM5D,OAAO,KAAK,EACV,wBAAwB,EACxB,kBAAkB,EAClB,4BAA4B,EAC5B,YAAY,EACb,MAAM,wBAAwB,CAAA;AAC/B,OAAO,KAAK,EACV,SAAS,EACT,qBAAqB,EACrB,uBAAuB,EACvB,mBAAmB,EACnB,MAAM,EACN,0BAA0B,EAC3B,MAAM,qBAAqB,CAAA;AAwB5B;;;;GAIG;AACH,MAAM,WAAW,2BAA2B;IAC1C,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,EAAE,CAAC,CAAA;IACnE;;;;;OAKG;IACH,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IACrD,eAAe,CACb,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,4BAA4B,GAAG,SAAS,GAClD,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAA;IACjC;;;;;;;;;;OAUG;IACH,cAAc,CACZ,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,SAAS,MAAM,EAAE,GAC5B,OAAO,CAAC,0BAA0B,EAAE,CAAC,CAAA;IACxC;;;;;;;;;;;;OAYG;IACH,2BAA2B,CACzB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,kBAAkB,GAAG,SAAS,EACtC,eAAe,CAAC,EAAE,qBAAqB;IACvC;qFACiF;IACjF,UAAU,CAAC,EAAE,wBAAwB,GAAG,IAAI,GAC3C,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAA;CAClC;AAED,MAAM,WAAW,+BAA+B;IAC9C,WAAW,EAAE,MAAM,CAAA;IACnB,6FAA6F;IAC7F,SAAS,EAAE,SAAS,CAAA;IACpB,iBAAiB,EAAE,iBAAiB,CAAA;IACpC,oEAAoE;IACpE,UAAU,EAAE,YAAY,EAAE,CAAA;IAC1B,2BAA2B,CAAC,EAAE,2BAA2B,CAAA;IACzD,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,0BAA0B,CAC9C,KAAK,EAAE,+BAA+B,GACrC,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAwDhC;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,YAAY,EAAE,GACzB,4BAA4B,GAAG,SAAS,CAM1C;AAED;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,+BAA+B,GAAG,CAC5C,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,YAAY;AAClB;sEACsE;AACtE,MAAM,EAAE,MAAM,GAAG,SAAS,KACvB,OAAO,CAAC,IAAI,CAAC,CAAA;AAElB;;;;GAIG;AACH,wBAAgB,qCAAqC,CAAC,IAAI,EAAE;IAC1D,iBAAiB,EAAE,iBAAiB,CAAA;IACpC,2BAA2B,CAAC,EAAE,2BAA2B,CAAA;IACzD,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,GAAG,+BAA+B,CAelC"}
@@ -1 +1 @@
1
- {"version":3,"file":"run-foundational-services.js","sourceRoot":"","sources":["../../../src/modules/execution/run-foundational-services.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run-foundational-services.js","sourceRoot":"","sources":["../../../src/modules/execution/run-foundational-services.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
- /** Resolve every fixture referenced by the matrix (stored, else builtin), refusing repo fixtures. */
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;AAY5D,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;AAQD;;;;;;;;;;;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,CA+MxF;YAIa,OAAO;IASrB,wFAAwF;YAC1E,cAAc;IAuB5B,qGAAqG;YACvF,eAAe;IAoB7B,2FAA2F;YAC7E,WAAW;IASzB,oGAAoG;IACpG,OAAO,CAAC,MAAM;IAUd,OAAO,CAAC,MAAM;CAGf"}
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, systemPromptFor } from '@cat-factory/agents';
3
- import { SANDBOX_REPO_FIXTURE_KINDS } from '@cat-factory/contracts';
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 { buildJudgePrompt, coerceJudgeScores, extractJson, gradedDimensionCount, JUDGE_SYSTEM_PROMPT, objectiveFor, parseModelCatalogId, renderFixtureInput, } from './sandbox.logic.js';
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 = sandboxKindMeta(experiment.agentKind);
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, so a bad request never mutates state or strands the
46
- // experiment `running`. The `finally` below settles the terminal status from here on.
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 fixture = fixtures.get(run.fixtureId);
89
- if (!prompt || !fixture) {
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 = renderFixtureInput(fixture);
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 (track) prompt, and `systemPromptFor` layers the surface
107
- // directives and trait guidance on top. Grading the bare base would measure text that
108
- // is never sent — which matters most at the moment a well-graded candidate is promoted
109
- // to the live prompt, since the promoted prompt would then behave unlike the graded one.
110
- system: systemPromptFor(experiment.agentKind, this.deps.agentKindRegistry, prompt.systemText),
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
- /** Resolve every fixture referenced by the matrix (stored, else builtin), refusing repo fixtures. */
232
- async resolveFixtures(workspaceId, experiment) {
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
- if (SANDBOX_REPO_FIXTURE_KINDS.includes(fixture.kind)) {
240
- throw new ValidationError(`Fixture "${fixture.name}" needs a repository checkout; repo fixtures are not yet supported in the Sandbox.`);
241
- }
242
- map.set(id, fixture);
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":"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"}
1
+ {"version":3,"file":"SandboxRunService.js","sourceRoot":"","sources":["../../../src/modules/sandbox/SandboxRunService.ts"],"names":[],"mappings":"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"}
@@ -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, seeding the builtin fixtures on first use. */
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
- /** Seed the builtin fixture library for a workspace that has none yet. Idempotent. */
115
- private ensureBuiltinFixtures;
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":"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"}
1
+ {"version":3,"file":"SandboxService.d.ts","sourceRoot":"","sources":["../../../src/modules/sandbox/SandboxService.ts"],"names":[],"mappings":"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"}