FEAT - TASKER: показ Codex Agent API по Launcher entitlement
This commit is contained in:
@@ -25,6 +25,7 @@ def get_nodedc_workspace_creation_policy(user, workspace_slug=None):
|
||||
"default_managed_by": "tasker",
|
||||
"invite_approval": "tasker",
|
||||
"default_invite_approval": "tasker",
|
||||
"service_modules": {},
|
||||
"workspaces": [],
|
||||
"reason": "NODE.DC workspace policy is not configured.",
|
||||
}
|
||||
@@ -45,6 +46,7 @@ def get_nodedc_workspace_creation_policy(user, workspace_slug=None):
|
||||
"default_managed_by": "tasker",
|
||||
"invite_approval": "tasker",
|
||||
"default_invite_approval": "tasker",
|
||||
"service_modules": {},
|
||||
"workspaces": [],
|
||||
"reason": "NODE.DC identity is not linked." if enforce_unlinked else "Standalone user without NODE.DC identity.",
|
||||
}
|
||||
@@ -75,11 +77,18 @@ def get_nodedc_workspace_creation_policy(user, workspace_slug=None):
|
||||
"default_managed_by": "tasker",
|
||||
"invite_approval": "disabled",
|
||||
"default_invite_approval": "tasker",
|
||||
"service_modules": {},
|
||||
"workspaces": [],
|
||||
"reason": "NODE.DC workspace policy is unavailable.",
|
||||
}
|
||||
|
||||
workspace_policy = payload.get("workspacePolicy") if isinstance(payload.get("workspacePolicy"), dict) else {}
|
||||
service_modules = normalize_service_modules(
|
||||
workspace_policy.get("serviceModules")
|
||||
or workspace_policy.get("service_modules")
|
||||
or payload.get("serviceModules")
|
||||
or payload.get("service_modules")
|
||||
)
|
||||
access_allowed = bool(payload.get("allowed"))
|
||||
if not workspace_policy:
|
||||
return {
|
||||
@@ -90,6 +99,7 @@ def get_nodedc_workspace_creation_policy(user, workspace_slug=None):
|
||||
"default_managed_by": "tasker",
|
||||
"invite_approval": "tasker",
|
||||
"default_invite_approval": "tasker",
|
||||
"service_modules": service_modules,
|
||||
"workspaces": [],
|
||||
"reason": payload.get("reason") or "NODE.DC access check does not expose workspace policy.",
|
||||
}
|
||||
@@ -117,6 +127,7 @@ def get_nodedc_workspace_creation_policy(user, workspace_slug=None):
|
||||
"default_managed_by": normalize_managed_by(workspace_policy.get("defaultManagedBy") or workspace_policy.get("managedBy")),
|
||||
"invite_approval": invite_approval,
|
||||
"default_invite_approval": default_invite_approval,
|
||||
"service_modules": service_modules,
|
||||
"workspaces": workspaces,
|
||||
"reason": workspace_policy.get("reason") or payload.get("reason") or "NODE.DC workspace policy decision.",
|
||||
}
|
||||
@@ -159,6 +170,18 @@ def normalize_workspace_management_list(value):
|
||||
return workspaces
|
||||
|
||||
|
||||
def normalize_service_modules(value):
|
||||
if not isinstance(value, dict):
|
||||
return {}
|
||||
|
||||
service_modules = {}
|
||||
for module_key in ("codex_agents",):
|
||||
if value.get(module_key) is True:
|
||||
service_modules[module_key] = True
|
||||
|
||||
return service_modules
|
||||
|
||||
|
||||
def resolve_workspace_managed_by(workspace_slug, workspaces, fallback):
|
||||
if isinstance(workspace_slug, str) and workspace_slug.strip():
|
||||
normalized_slug = workspace_slug.strip()
|
||||
|
||||
Reference in New Issue
Block a user