@cat-factory/orchestration 0.88.0 → 0.89.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/modules/execution/ExecutionService.d.ts +23 -1
- package/dist/modules/execution/ExecutionService.d.ts.map +1 -1
- package/dist/modules/execution/ExecutionService.js +95 -4
- package/dist/modules/execution/ExecutionService.js.map +1 -1
- package/dist/modules/execution/RunDispatcher.d.ts.map +1 -1
- package/dist/modules/execution/RunDispatcher.js +4 -1
- package/dist/modules/execution/RunDispatcher.js.map +1 -1
- package/dist/modules/execution/deployer.logic.d.ts +66 -1
- package/dist/modules/execution/deployer.logic.d.ts.map +1 -1
- package/dist/modules/execution/deployer.logic.js +77 -0
- package/dist/modules/execution/deployer.logic.js.map +1 -1
- package/package.json +11 -11
|
@@ -60,4 +60,81 @@ export function orderProvisionTargets(targets, providersOf) {
|
|
|
60
60
|
export function deployEvictionEpoch(step) {
|
|
61
61
|
return (step.evictionRecoveries ?? 0) + (step.transientEvictionRecoveries ?? 0);
|
|
62
62
|
}
|
|
63
|
+
// ---------------------------------------------------------------------------
|
|
64
|
+
// Run-start Deployer-config gate (pure half).
|
|
65
|
+
//
|
|
66
|
+
// When a pipeline INCLUDES an enabled `deployer` step, the environment it will stand up must be
|
|
67
|
+
// fully + correctly configured on BOTH sides of the "what/where ÷ how" split: the SERVICE owns
|
|
68
|
+
// the in-repo "what/where" (its declared provision type + manifest source / compose path /
|
|
69
|
+
// custom-manifest id), the WORKSPACE owns the "how" (an infra handler that resolves for the
|
|
70
|
+
// type + its credentials). A gap on either side means the deployer would fail mid-run (an async
|
|
71
|
+
// failed environment) or — for docker-compose with no handler — silently no-op, both of which
|
|
72
|
+
// this gate turns into an actionable up-front launch error. `ExecutionService` resolves the IO
|
|
73
|
+
// inputs (service config, handler resolution, an optional live connection probe) and translates
|
|
74
|
+
// the verdict into a `ConflictError` with a machine-readable reason the SPA deep-links off.
|
|
75
|
+
// ---------------------------------------------------------------------------
|
|
76
|
+
/**
|
|
77
|
+
* Whether the ENABLED chain contains a `deployer` step. The Deployer-config gate fires only then:
|
|
78
|
+
* a pipeline with no enabled deployer stands no environment up, so its provisioning config is
|
|
79
|
+
* irrelevant. Mirrors the enabled-subset walk the other pipeline-shape checks use (`enabled?.[i]
|
|
80
|
+
* !== false`), so a disabled deployer is correctly treated as absent.
|
|
81
|
+
*/
|
|
82
|
+
export function hasEnabledDeployerStep(agentKinds, enabled) {
|
|
83
|
+
return agentKinds.some((kind, i) => enabled?.[i] !== false && kind === DEPLOYER_AGENT_KIND);
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* The service-owned provisioning fields a Deployer REQUIRES to stand a `type` environment up (the
|
|
87
|
+
* "what + where" the service must supply — the workspace handler owns the "how"). Returns the list
|
|
88
|
+
* of MISSING field names; empty ⇒ the service config is complete for its type. `infraless` and an
|
|
89
|
+
* undeclared type need nothing (the deployer stands nothing up), so they are always complete.
|
|
90
|
+
* - `kubernetes` → `manifestSource` (where the per-PR manifests live)
|
|
91
|
+
* - `docker-compose` → `composePath` OR a `recipe` that layers compose file(s)
|
|
92
|
+
* - `custom` → `manifestId` (the custom-manifest type matched to a remote-custom handler)
|
|
93
|
+
*/
|
|
94
|
+
export function deployerServiceConfigIssues(provisioning) {
|
|
95
|
+
switch (provisioning?.type) {
|
|
96
|
+
case 'kubernetes':
|
|
97
|
+
return provisioning.manifestSource ? [] : ['manifestSource'];
|
|
98
|
+
case 'docker-compose':
|
|
99
|
+
return provisioning.composePath?.trim() ||
|
|
100
|
+
(provisioning.recipe?.composeFiles?.length ?? 0) > 0
|
|
101
|
+
? []
|
|
102
|
+
: ['composePath'];
|
|
103
|
+
case 'custom':
|
|
104
|
+
return provisioning.manifestId ? [] : ['manifestId'];
|
|
105
|
+
default:
|
|
106
|
+
return [];
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Decide whether a Deployer-bearing pipeline may START, given the service's provisioning
|
|
111
|
+
* completeness, whether a workspace handler resolves for its type, and (bonus) a live connection
|
|
112
|
+
* probe. Ordered most-fundamental-first so the surfaced fix is the right one: an incomplete SERVICE
|
|
113
|
+
* config is reported before the WORKSPACE handler (there's nothing to connect to a half-declared
|
|
114
|
+
* service), and a failing connection only after both structural checks pass. `infraless`/undeclared
|
|
115
|
+
* always pass — the deployer stands nothing up for them.
|
|
116
|
+
*/
|
|
117
|
+
export function decideDeployerConfig(input) {
|
|
118
|
+
const { provisionType } = input;
|
|
119
|
+
if (!provisionType || provisionType === 'infraless')
|
|
120
|
+
return { ok: true };
|
|
121
|
+
if (input.serviceIssues.length > 0) {
|
|
122
|
+
return { ok: false, reason: 'service-config-incomplete', missing: input.serviceIssues };
|
|
123
|
+
}
|
|
124
|
+
if (!input.handlerResolution.ok) {
|
|
125
|
+
return {
|
|
126
|
+
ok: false,
|
|
127
|
+
reason: 'workspace-unhandled',
|
|
128
|
+
handlerReason: input.handlerResolution.reason ?? 'no-handler',
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
if (input.connectionTest && !input.connectionTest.ok) {
|
|
132
|
+
return {
|
|
133
|
+
ok: false,
|
|
134
|
+
reason: 'connection-failed',
|
|
135
|
+
...(input.connectionTest.message ? { message: input.connectionTest.message } : {}),
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
return { ok: true };
|
|
139
|
+
}
|
|
63
140
|
//# sourceMappingURL=deployer.logic.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deployer.logic.js","sourceRoot":"","sources":["../../../src/modules/execution/deployer.logic.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AAE/D;;;;;;;;;GASG;AACH,MAAM,UAAU,WAAW,CAAC,WAAmB,EAAE,KAAa,EAAE,OAAgB;IAC9E,wFAAwF;IACxF,8FAA8F;IAC9F,oFAAoF;IACpF,MAAM,IAAI,GAAG,GAAG,WAAW,IAAI,mBAAmB,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAA;IACnF,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;AAC9C,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,qBAAqB,CACnC,OAA+D,EAC/D,WAAqD;IAErD,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;IACxD,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAA;IACxD,MAAM,MAAM,GAAG,CAAC,CAAS,EAAE,CAAS,EAAU,EAAE;QAC9C,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QACzC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QACzC,IAAI,EAAE,KAAK,EAAE;YAAE,OAAO,EAAE,GAAG,EAAE,CAAA;QAC7B,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACnC,CAAC,CAAA;IACD,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,OAAO,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QAC1B,IAAI,KAAK,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE;YACvC,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YACrC,OAAO,CAAC,SAAS,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;QACpE,CAAC,CAAC,CAAA;QACF,2FAA2F;QAC3F,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,KAAK,GAAG,CAAC,GAAG,SAAS,CAAC,CAAA;QAC9C,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAClB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAE,CAAA;QACtB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAChB,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACxB,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAkB;IACpD,OAAO,CAAC,IAAI,CAAC,kBAAkB,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,2BAA2B,IAAI,CAAC,CAAC,CAAA;AACjF,CAAC"}
|
|
1
|
+
{"version":3,"file":"deployer.logic.js","sourceRoot":"","sources":["../../../src/modules/execution/deployer.logic.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cat-factory/orchestration",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.89.0",
|
|
4
4
|
"description": "Delivery-workflow engine for the Agent Architecture Board (execution, bootstrap, pipelines, board, boardScan, requirements, and composition root).",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -25,20 +25,20 @@
|
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
27
|
"ai": "^6.0.219",
|
|
28
|
-
"@cat-factory/agents": "0.40.
|
|
29
|
-
"@cat-factory/caching": "0.6.
|
|
30
|
-
"@cat-factory/contracts": "0.
|
|
31
|
-
"@cat-factory/integrations": "0.
|
|
32
|
-
"@cat-factory/kernel": "0.104.
|
|
33
|
-
"@cat-factory/prompt-fragments": "0.10.
|
|
34
|
-
"@cat-factory/sandbox": "0.9.
|
|
35
|
-
"@cat-factory/spend": "0.11.
|
|
36
|
-
"@cat-factory/workspaces": "0.12.
|
|
28
|
+
"@cat-factory/agents": "0.40.10",
|
|
29
|
+
"@cat-factory/caching": "0.6.1",
|
|
30
|
+
"@cat-factory/contracts": "0.115.0",
|
|
31
|
+
"@cat-factory/integrations": "0.77.0",
|
|
32
|
+
"@cat-factory/kernel": "0.104.1",
|
|
33
|
+
"@cat-factory/prompt-fragments": "0.10.23",
|
|
34
|
+
"@cat-factory/sandbox": "0.9.24",
|
|
35
|
+
"@cat-factory/spend": "0.11.7",
|
|
36
|
+
"@cat-factory/workspaces": "0.12.7"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|
|
39
39
|
"typescript": "7.0.1-rc",
|
|
40
40
|
"vitest": "^4.1.9",
|
|
41
|
-
"@cat-factory/sandbox-fixtures": "0.7.
|
|
41
|
+
"@cat-factory/sandbox-fixtures": "0.7.131"
|
|
42
42
|
},
|
|
43
43
|
"scripts": {
|
|
44
44
|
"build": "tsc -b tsconfig.build.json",
|