Add profile-driven lifecycle rules

This commit is contained in:
tegwick 2026-05-18 22:20:14 +02:00
parent 322571c02c
commit 908494b712
12 changed files with 700 additions and 14 deletions

View file

@ -29,7 +29,7 @@ KONTEXTUAL_DELEGATION_SCHEMA = "phase_memory.kontextual.delegation.v1"
SERVICE_OPERATIONS = {
"profile.plan": {"request": ["profile"], "response": "runtime_envelope"},
"graph.import": {"request": ["graph"], "response": "runtime_envelope"},
"graph.lifecycle.plan": {"request": ["graph", "parameters"], "response": "runtime_envelope"},
"graph.lifecycle.plan": {"request": ["graph", "parameters", "profile?"], "response": "runtime_envelope"},
"lifecycle.apply": {"request": ["actions", "review_record"], "response": "runtime_envelope"},
"graph.activation.plan": {"request": ["graph", "budget"], "response": "runtime_envelope"},
"package.compile": {"request": ["selection"], "response": "runtime_envelope"},
@ -353,6 +353,25 @@ class LocalServiceRunner:
return self.runtime.plan_profile(payload["profile"], source_ref=payload.get("source_ref", "service"))
if operation == "graph.import":
return self.runtime.import_graph(payload["graph"], source_ref=payload.get("source_ref", "service"))
if operation == "graph.lifecycle.plan":
parameters = payload.get("parameters", {})
if payload.get("profile"):
return self.runtime.plan_lifecycle_with_profile(
payload["profile"],
payload["graph"],
source_ref=payload.get("source_ref", "service"),
profile_source_ref=payload.get("profile_source_ref", "service-profile"),
refresh_digests=dict(parameters.get("refresh_digests") or {}),
compact_node_ids=tuple(parameters.get("compact_node_ids") or ()),
)
return self.runtime.plan_lifecycle(
payload["graph"],
source_ref=payload.get("source_ref", "service"),
stale_after_days=parameters.get("stale_after_days"),
delete_after_days=parameters.get("delete_after_days"),
refresh_digests=dict(parameters.get("refresh_digests") or {}),
compact_node_ids=tuple(parameters.get("compact_node_ids") or ()),
)
if operation == "graph.activation.plan":
budget = payload.get("budget", {})
return self.runtime.plan_activation(