Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0aa45ee2f9 |
@@ -1,2 +0,0 @@
|
||||
AIOS governed Action smoke test
|
||||
2026-08-25
|
||||
@@ -0,0 +1,721 @@
|
||||
{
|
||||
"schema_version": "aios.chatgpt-action-schema-capability-manifest.v2",
|
||||
"source_schema": {
|
||||
"path": "docs/gitops/openapi-chatgpt-actions.yaml",
|
||||
"operation_count": 31,
|
||||
"sha256": "d6129421085c9516ba88796d8727bc4ba1c4b4b48bac74f146e68ebf7cc9cd96"
|
||||
},
|
||||
"public_runtime_schema": {
|
||||
"path": "docs/gitops/openapi-chatgpt-actions-public-runtime-2e599646.yaml",
|
||||
"immutable_runtime_oid": "2e5996463de564793df881df5c5f684359733627",
|
||||
"operation_count": 30,
|
||||
"sha256": "4cee48511e9435cb147b8925c37aaa135c384a468ede34d6828bad42c97c5fcc"
|
||||
},
|
||||
"authoritative_server_urls": [
|
||||
"https://cnnetmkt.top"
|
||||
],
|
||||
"union_operation_count": 46,
|
||||
"schemas": [
|
||||
{
|
||||
"path": "docs/gitops/openapi-chatgpt-actions-governed-release.yaml",
|
||||
"trust_domain": "governed-release",
|
||||
"operation_count": 26,
|
||||
"public_action_import": true
|
||||
},
|
||||
{
|
||||
"path": "docs/gitops/openapi-chatgpt-actions-online-gitops-task.yaml",
|
||||
"trust_domain": "online-gitops-task",
|
||||
"operation_count": 14,
|
||||
"public_action_import": true
|
||||
},
|
||||
{
|
||||
"path": "docs/gitops/openapi-chatgpt-actions-online-agent-task.yaml",
|
||||
"trust_domain": "online-agent-task",
|
||||
"operation_count": 6,
|
||||
"public_action_import": true
|
||||
}
|
||||
],
|
||||
"operations": [
|
||||
{
|
||||
"operation_id": "acquireWriterLease",
|
||||
"schema": "docs/gitops/openapi-chatgpt-actions-governed-release.yaml",
|
||||
"trust_domain": "governed-release",
|
||||
"server_url": "https://cnnetmkt.top",
|
||||
"server_route": "/acquireWriterLease",
|
||||
"method": "POST",
|
||||
"declared_openapi_security": [],
|
||||
"required_scope": "file:write",
|
||||
"exposure": "control-plane",
|
||||
"source_origin": null,
|
||||
"public_origin": "docs/gitops/openapi-chatgpt-actions-public-runtime-2e599646.yaml"
|
||||
},
|
||||
{
|
||||
"operation_id": "cancelOnlineAgentTask",
|
||||
"schema": "docs/gitops/openapi-chatgpt-actions-online-agent-task.yaml",
|
||||
"trust_domain": "online-agent-task",
|
||||
"server_url": "https://cnnetmkt.top",
|
||||
"server_route": "/cancelOnlineAgentTask",
|
||||
"method": "POST",
|
||||
"declared_openapi_security": [],
|
||||
"required_scope": "agent-task:control",
|
||||
"exposure": "control-plane",
|
||||
"source_origin": null,
|
||||
"public_origin": "docs/gitops/openapi-chatgpt-actions-public-runtime-2e599646.yaml"
|
||||
},
|
||||
{
|
||||
"operation_id": "commitChanges",
|
||||
"schema": "docs/gitops/openapi-chatgpt-actions-online-gitops-task.yaml",
|
||||
"trust_domain": "online-gitops-task",
|
||||
"server_url": "https://cnnetmkt.top",
|
||||
"server_route": "/api/commit",
|
||||
"method": "POST",
|
||||
"declared_openapi_security": [
|
||||
{
|
||||
"bearerAuth": []
|
||||
}
|
||||
],
|
||||
"required_scope": "commit:create",
|
||||
"exposure": "control-plane",
|
||||
"source_origin": "docs/gitops/openapi-chatgpt-actions.yaml",
|
||||
"public_origin": null
|
||||
},
|
||||
{
|
||||
"operation_id": "commitFile",
|
||||
"schema": "docs/gitops/openapi-chatgpt-actions-online-gitops-task.yaml",
|
||||
"trust_domain": "online-gitops-task",
|
||||
"server_url": "https://cnnetmkt.top",
|
||||
"server_route": "/api/file",
|
||||
"method": "POST",
|
||||
"declared_openapi_security": [
|
||||
{
|
||||
"bearerAuth": []
|
||||
}
|
||||
],
|
||||
"required_scope": "file:write",
|
||||
"exposure": "control-plane",
|
||||
"source_origin": "docs/gitops/openapi-chatgpt-actions.yaml",
|
||||
"public_origin": null
|
||||
},
|
||||
{
|
||||
"operation_id": "commitFileAtomic",
|
||||
"schema": "docs/gitops/openapi-chatgpt-actions-online-gitops-task.yaml",
|
||||
"trust_domain": "online-gitops-task",
|
||||
"server_url": "https://cnnetmkt.top",
|
||||
"server_route": "/api/commit-file",
|
||||
"method": "POST",
|
||||
"declared_openapi_security": [
|
||||
{
|
||||
"bearerAuth": []
|
||||
}
|
||||
],
|
||||
"required_scope": "file:write",
|
||||
"exposure": "control-plane",
|
||||
"source_origin": "docs/gitops/openapi-chatgpt-actions.yaml",
|
||||
"public_origin": null
|
||||
},
|
||||
{
|
||||
"operation_id": "commitFileGoverned",
|
||||
"schema": "docs/gitops/openapi-chatgpt-actions-governed-release.yaml",
|
||||
"trust_domain": "governed-release",
|
||||
"server_url": "https://cnnetmkt.top",
|
||||
"server_route": "/commitFileGoverned",
|
||||
"method": "POST",
|
||||
"declared_openapi_security": [],
|
||||
"required_scope": "file:write",
|
||||
"exposure": "control-plane",
|
||||
"source_origin": null,
|
||||
"public_origin": "docs/gitops/openapi-chatgpt-actions-public-runtime-2e599646.yaml"
|
||||
},
|
||||
{
|
||||
"operation_id": "commitFilesGoverned",
|
||||
"schema": "docs/gitops/openapi-chatgpt-actions-governed-release.yaml",
|
||||
"trust_domain": "governed-release",
|
||||
"server_url": "https://cnnetmkt.top",
|
||||
"server_route": "/commitFilesGoverned",
|
||||
"method": "POST",
|
||||
"declared_openapi_security": [],
|
||||
"required_scope": "file:write",
|
||||
"exposure": "control-plane",
|
||||
"source_origin": null,
|
||||
"public_origin": "docs/gitops/openapi-chatgpt-actions-public-runtime-2e599646.yaml"
|
||||
},
|
||||
{
|
||||
"operation_id": "createBranch",
|
||||
"schema": "docs/gitops/openapi-chatgpt-actions-online-gitops-task.yaml",
|
||||
"trust_domain": "online-gitops-task",
|
||||
"server_url": "https://cnnetmkt.top",
|
||||
"server_route": "/api/branch",
|
||||
"method": "POST",
|
||||
"declared_openapi_security": [
|
||||
{
|
||||
"bearerAuth": []
|
||||
}
|
||||
],
|
||||
"required_scope": "branch:create",
|
||||
"exposure": "control-plane",
|
||||
"source_origin": "docs/gitops/openapi-chatgpt-actions.yaml",
|
||||
"public_origin": null
|
||||
},
|
||||
{
|
||||
"operation_id": "createGovernedTask",
|
||||
"schema": "docs/gitops/openapi-chatgpt-actions-governed-release.yaml",
|
||||
"trust_domain": "governed-release",
|
||||
"server_url": "https://cnnetmkt.top",
|
||||
"server_route": "/createGovernedTask",
|
||||
"method": "POST",
|
||||
"declared_openapi_security": [],
|
||||
"required_scope": "branch:create",
|
||||
"exposure": "control-plane",
|
||||
"source_origin": null,
|
||||
"public_origin": "docs/gitops/openapi-chatgpt-actions-public-runtime-2e599646.yaml"
|
||||
},
|
||||
{
|
||||
"operation_id": "createOnlineAgentTask",
|
||||
"schema": "docs/gitops/openapi-chatgpt-actions-online-agent-task.yaml",
|
||||
"trust_domain": "online-agent-task",
|
||||
"server_url": "https://cnnetmkt.top",
|
||||
"server_route": "/createOnlineAgentTask",
|
||||
"method": "POST",
|
||||
"declared_openapi_security": [],
|
||||
"required_scope": "agent-task:control",
|
||||
"exposure": "control-plane",
|
||||
"source_origin": null,
|
||||
"public_origin": "docs/gitops/openapi-chatgpt-actions-public-runtime-2e599646.yaml"
|
||||
},
|
||||
{
|
||||
"operation_id": "createPatch",
|
||||
"schema": "docs/gitops/openapi-chatgpt-actions-online-gitops-task.yaml",
|
||||
"trust_domain": "online-gitops-task",
|
||||
"server_url": "https://cnnetmkt.top",
|
||||
"server_route": "/api/patch",
|
||||
"method": "POST",
|
||||
"declared_openapi_security": [
|
||||
{
|
||||
"bearerAuth": []
|
||||
}
|
||||
],
|
||||
"required_scope": "patch:create",
|
||||
"exposure": "control-plane",
|
||||
"source_origin": "docs/gitops/openapi-chatgpt-actions.yaml",
|
||||
"public_origin": null
|
||||
},
|
||||
{
|
||||
"operation_id": "createReleaseCandidate",
|
||||
"schema": "docs/gitops/openapi-chatgpt-actions-governed-release.yaml",
|
||||
"trust_domain": "governed-release",
|
||||
"server_url": "https://cnnetmkt.top",
|
||||
"server_route": "/createReleaseCandidate",
|
||||
"method": "POST",
|
||||
"declared_openapi_security": [
|
||||
{
|
||||
"bearerAuth": []
|
||||
}
|
||||
],
|
||||
"required_scope": "release:candidate",
|
||||
"exposure": "control-plane",
|
||||
"source_origin": "docs/gitops/openapi-chatgpt-actions.yaml",
|
||||
"public_origin": "docs/gitops/openapi-chatgpt-actions-public-runtime-2e599646.yaml"
|
||||
},
|
||||
{
|
||||
"operation_id": "createReleaseIntent",
|
||||
"schema": "docs/gitops/openapi-chatgpt-actions-governed-release.yaml",
|
||||
"trust_domain": "governed-release",
|
||||
"server_url": "https://cnnetmkt.top",
|
||||
"server_route": "/createReleaseIntent",
|
||||
"method": "POST",
|
||||
"declared_openapi_security": [
|
||||
{
|
||||
"bearerAuth": []
|
||||
}
|
||||
],
|
||||
"required_scope": "release:candidate",
|
||||
"exposure": "control-plane",
|
||||
"source_origin": "docs/gitops/openapi-chatgpt-actions.yaml",
|
||||
"public_origin": null
|
||||
},
|
||||
{
|
||||
"operation_id": "getApprovalEnvelope",
|
||||
"schema": "docs/gitops/openapi-chatgpt-actions-governed-release.yaml",
|
||||
"trust_domain": "governed-release",
|
||||
"server_url": "https://cnnetmkt.top",
|
||||
"server_route": "/getApprovalEnvelope",
|
||||
"method": "GET",
|
||||
"declared_openapi_security": [],
|
||||
"required_scope": null,
|
||||
"exposure": "public",
|
||||
"source_origin": "docs/gitops/openapi-chatgpt-actions.yaml",
|
||||
"public_origin": "docs/gitops/openapi-chatgpt-actions-public-runtime-2e599646.yaml"
|
||||
},
|
||||
{
|
||||
"operation_id": "getBaseline",
|
||||
"schema": "docs/gitops/openapi-chatgpt-actions-online-gitops-task.yaml",
|
||||
"trust_domain": "online-gitops-task",
|
||||
"server_url": "https://cnnetmkt.top",
|
||||
"server_route": "/api/base",
|
||||
"method": "GET",
|
||||
"declared_openapi_security": [],
|
||||
"required_scope": null,
|
||||
"exposure": "public",
|
||||
"source_origin": "docs/gitops/openapi-chatgpt-actions.yaml",
|
||||
"public_origin": "docs/gitops/openapi-chatgpt-actions-public-runtime-2e599646.yaml"
|
||||
},
|
||||
{
|
||||
"operation_id": "getCapabilityStatus",
|
||||
"schema": "docs/gitops/openapi-chatgpt-actions-governed-release.yaml",
|
||||
"trust_domain": "governed-release",
|
||||
"server_url": "https://cnnetmkt.top",
|
||||
"server_route": "/getCapabilityStatus",
|
||||
"method": "GET",
|
||||
"declared_openapi_security": [],
|
||||
"required_scope": null,
|
||||
"exposure": "public",
|
||||
"source_origin": "docs/gitops/openapi-chatgpt-actions.yaml",
|
||||
"public_origin": null
|
||||
},
|
||||
{
|
||||
"operation_id": "getControlPlaneSnapshot",
|
||||
"schema": "docs/gitops/openapi-chatgpt-actions-governed-release.yaml",
|
||||
"trust_domain": "governed-release",
|
||||
"server_url": "https://cnnetmkt.top",
|
||||
"server_route": "/api/control-plane-snapshot",
|
||||
"method": "GET",
|
||||
"declared_openapi_security": [],
|
||||
"required_scope": null,
|
||||
"exposure": "public",
|
||||
"source_origin": null,
|
||||
"public_origin": "docs/gitops/openapi-chatgpt-actions-public-runtime-2e599646.yaml"
|
||||
},
|
||||
{
|
||||
"operation_id": "getDiff",
|
||||
"schema": "docs/gitops/openapi-chatgpt-actions-online-gitops-task.yaml",
|
||||
"trust_domain": "online-gitops-task",
|
||||
"server_url": "https://cnnetmkt.top",
|
||||
"server_route": "/api/diff",
|
||||
"method": "GET",
|
||||
"declared_openapi_security": [],
|
||||
"required_scope": null,
|
||||
"exposure": "public",
|
||||
"source_origin": "docs/gitops/openapi-chatgpt-actions.yaml",
|
||||
"public_origin": "docs/gitops/openapi-chatgpt-actions-public-runtime-2e599646.yaml"
|
||||
},
|
||||
{
|
||||
"operation_id": "getGitOpsJob",
|
||||
"schema": "docs/gitops/openapi-chatgpt-actions-governed-release.yaml",
|
||||
"trust_domain": "governed-release",
|
||||
"server_url": "https://cnnetmkt.top",
|
||||
"server_route": "/getGitOpsJob",
|
||||
"method": "POST",
|
||||
"declared_openapi_security": [],
|
||||
"required_scope": "file:write",
|
||||
"exposure": "control-plane",
|
||||
"source_origin": null,
|
||||
"public_origin": "docs/gitops/openapi-chatgpt-actions-public-runtime-2e599646.yaml"
|
||||
},
|
||||
{
|
||||
"operation_id": "getGovernedWriteCapabilities",
|
||||
"schema": "docs/gitops/openapi-chatgpt-actions-governed-release.yaml",
|
||||
"trust_domain": "governed-release",
|
||||
"server_url": "https://cnnetmkt.top",
|
||||
"server_route": "/api/governed-write-capabilities",
|
||||
"method": "GET",
|
||||
"declared_openapi_security": [],
|
||||
"required_scope": null,
|
||||
"exposure": "public",
|
||||
"source_origin": null,
|
||||
"public_origin": "docs/gitops/openapi-chatgpt-actions-public-runtime-2e599646.yaml"
|
||||
},
|
||||
{
|
||||
"operation_id": "getOnlineAgentTask",
|
||||
"schema": "docs/gitops/openapi-chatgpt-actions-online-agent-task.yaml",
|
||||
"trust_domain": "online-agent-task",
|
||||
"server_url": "https://cnnetmkt.top",
|
||||
"server_route": "/api/online-agent-task",
|
||||
"method": "GET",
|
||||
"declared_openapi_security": [],
|
||||
"required_scope": "agent-task:control",
|
||||
"exposure": "control-plane",
|
||||
"source_origin": null,
|
||||
"public_origin": "docs/gitops/openapi-chatgpt-actions-public-runtime-2e599646.yaml"
|
||||
},
|
||||
{
|
||||
"operation_id": "getOnlineAgentTaskEvents",
|
||||
"schema": "docs/gitops/openapi-chatgpt-actions-online-agent-task.yaml",
|
||||
"trust_domain": "online-agent-task",
|
||||
"server_url": "https://cnnetmkt.top",
|
||||
"server_route": "/api/online-agent-task-events",
|
||||
"method": "GET",
|
||||
"declared_openapi_security": [],
|
||||
"required_scope": "agent-task:control",
|
||||
"exposure": "control-plane",
|
||||
"source_origin": null,
|
||||
"public_origin": "docs/gitops/openapi-chatgpt-actions-public-runtime-2e599646.yaml"
|
||||
},
|
||||
{
|
||||
"operation_id": "getRecoveryStatus",
|
||||
"schema": "docs/gitops/openapi-chatgpt-actions-governed-release.yaml",
|
||||
"trust_domain": "governed-release",
|
||||
"server_url": "https://cnnetmkt.top",
|
||||
"server_route": "/getRecoveryStatus",
|
||||
"method": "GET",
|
||||
"declared_openapi_security": [],
|
||||
"required_scope": null,
|
||||
"exposure": "public",
|
||||
"source_origin": "docs/gitops/openapi-chatgpt-actions.yaml",
|
||||
"public_origin": null
|
||||
},
|
||||
{
|
||||
"operation_id": "getReleaseAcceptance",
|
||||
"schema": "docs/gitops/openapi-chatgpt-actions-governed-release.yaml",
|
||||
"trust_domain": "governed-release",
|
||||
"server_url": "https://cnnetmkt.top",
|
||||
"server_route": "/getReleaseAcceptance",
|
||||
"method": "GET",
|
||||
"declared_openapi_security": [],
|
||||
"required_scope": null,
|
||||
"exposure": "public",
|
||||
"source_origin": "docs/gitops/openapi-chatgpt-actions.yaml",
|
||||
"public_origin": null
|
||||
},
|
||||
{
|
||||
"operation_id": "getReleaseCandidate",
|
||||
"schema": "docs/gitops/openapi-chatgpt-actions-governed-release.yaml",
|
||||
"trust_domain": "governed-release",
|
||||
"server_url": "https://cnnetmkt.top",
|
||||
"server_route": "/getReleaseCandidate",
|
||||
"method": "GET",
|
||||
"declared_openapi_security": [],
|
||||
"required_scope": null,
|
||||
"exposure": "public",
|
||||
"source_origin": "docs/gitops/openapi-chatgpt-actions.yaml",
|
||||
"public_origin": "docs/gitops/openapi-chatgpt-actions-public-runtime-2e599646.yaml"
|
||||
},
|
||||
{
|
||||
"operation_id": "getReleaseConsistency",
|
||||
"schema": "docs/gitops/openapi-chatgpt-actions-governed-release.yaml",
|
||||
"trust_domain": "governed-release",
|
||||
"server_url": "https://cnnetmkt.top",
|
||||
"server_route": "/api/release-consistency",
|
||||
"method": "GET",
|
||||
"declared_openapi_security": [],
|
||||
"required_scope": null,
|
||||
"exposure": "public",
|
||||
"source_origin": "docs/gitops/openapi-chatgpt-actions.yaml",
|
||||
"public_origin": "docs/gitops/openapi-chatgpt-actions-public-runtime-2e599646.yaml"
|
||||
},
|
||||
{
|
||||
"operation_id": "getReleasePlan",
|
||||
"schema": "docs/gitops/openapi-chatgpt-actions-governed-release.yaml",
|
||||
"trust_domain": "governed-release",
|
||||
"server_url": "https://cnnetmkt.top",
|
||||
"server_route": "/getReleasePlan",
|
||||
"method": "GET",
|
||||
"declared_openapi_security": [],
|
||||
"required_scope": null,
|
||||
"exposure": "public",
|
||||
"source_origin": "docs/gitops/openapi-chatgpt-actions.yaml",
|
||||
"public_origin": null
|
||||
},
|
||||
{
|
||||
"operation_id": "getReleaseSaga",
|
||||
"schema": "docs/gitops/openapi-chatgpt-actions-governed-release.yaml",
|
||||
"trust_domain": "governed-release",
|
||||
"server_url": "https://cnnetmkt.top",
|
||||
"server_route": "/getReleaseSaga",
|
||||
"method": "GET",
|
||||
"declared_openapi_security": [],
|
||||
"required_scope": null,
|
||||
"exposure": "public",
|
||||
"source_origin": "docs/gitops/openapi-chatgpt-actions.yaml",
|
||||
"public_origin": "docs/gitops/openapi-chatgpt-actions-public-runtime-2e599646.yaml"
|
||||
},
|
||||
{
|
||||
"operation_id": "getRuntimeStatus",
|
||||
"schema": "docs/gitops/openapi-chatgpt-actions-online-gitops-task.yaml",
|
||||
"trust_domain": "online-gitops-task",
|
||||
"server_url": "https://cnnetmkt.top",
|
||||
"server_route": "/api/run",
|
||||
"method": "GET",
|
||||
"declared_openapi_security": [],
|
||||
"required_scope": null,
|
||||
"exposure": "public",
|
||||
"source_origin": "docs/gitops/openapi-chatgpt-actions.yaml",
|
||||
"public_origin": "docs/gitops/openapi-chatgpt-actions-public-runtime-2e599646.yaml"
|
||||
},
|
||||
{
|
||||
"operation_id": "getTagPublicationStatus",
|
||||
"schema": "docs/gitops/openapi-chatgpt-actions-governed-release.yaml",
|
||||
"trust_domain": "governed-release",
|
||||
"server_url": "https://cnnetmkt.top",
|
||||
"server_route": "/api/tag-publication-status",
|
||||
"method": "GET",
|
||||
"declared_openapi_security": [],
|
||||
"required_scope": null,
|
||||
"exposure": "public",
|
||||
"source_origin": "docs/gitops/openapi-chatgpt-actions.yaml",
|
||||
"public_origin": "docs/gitops/openapi-chatgpt-actions-public-runtime-2e599646.yaml"
|
||||
},
|
||||
{
|
||||
"operation_id": "listPatches",
|
||||
"schema": "docs/gitops/openapi-chatgpt-actions-online-gitops-task.yaml",
|
||||
"trust_domain": "online-gitops-task",
|
||||
"server_url": "https://cnnetmkt.top",
|
||||
"server_route": "/api/patch",
|
||||
"method": "GET",
|
||||
"declared_openapi_security": [],
|
||||
"required_scope": null,
|
||||
"exposure": "public",
|
||||
"source_origin": "docs/gitops/openapi-chatgpt-actions.yaml",
|
||||
"public_origin": null
|
||||
},
|
||||
{
|
||||
"operation_id": "listVersions",
|
||||
"schema": "docs/gitops/openapi-chatgpt-actions-online-gitops-task.yaml",
|
||||
"trust_domain": "online-gitops-task",
|
||||
"server_url": "https://cnnetmkt.top",
|
||||
"server_route": "/api/ver",
|
||||
"method": "GET",
|
||||
"declared_openapi_security": [],
|
||||
"required_scope": null,
|
||||
"exposure": "public",
|
||||
"source_origin": "docs/gitops/openapi-chatgpt-actions.yaml",
|
||||
"public_origin": "docs/gitops/openapi-chatgpt-actions-public-runtime-2e599646.yaml"
|
||||
},
|
||||
{
|
||||
"operation_id": "planNaturalLanguageGitOpsAction",
|
||||
"schema": "docs/gitops/openapi-chatgpt-actions-online-gitops-task.yaml",
|
||||
"trust_domain": "online-gitops-task",
|
||||
"server_url": "https://cnnetmkt.top",
|
||||
"server_route": "/api/nl",
|
||||
"method": "POST",
|
||||
"declared_openapi_security": [
|
||||
{
|
||||
"bearerAuth": []
|
||||
}
|
||||
],
|
||||
"required_scope": "nl:plan",
|
||||
"exposure": "control-plane",
|
||||
"source_origin": "docs/gitops/openapi-chatgpt-actions.yaml",
|
||||
"public_origin": null
|
||||
},
|
||||
{
|
||||
"operation_id": "readModelRegistry",
|
||||
"schema": "docs/gitops/openapi-chatgpt-actions-online-gitops-task.yaml",
|
||||
"trust_domain": "online-gitops-task",
|
||||
"server_url": "https://cnnetmkt.top",
|
||||
"server_route": "/api/model",
|
||||
"method": "GET",
|
||||
"declared_openapi_security": [],
|
||||
"required_scope": null,
|
||||
"exposure": "public",
|
||||
"source_origin": "docs/gitops/openapi-chatgpt-actions.yaml",
|
||||
"public_origin": null
|
||||
},
|
||||
{
|
||||
"operation_id": "reconcileGitOpsJob",
|
||||
"schema": "docs/gitops/openapi-chatgpt-actions-governed-release.yaml",
|
||||
"trust_domain": "governed-release",
|
||||
"server_url": "https://cnnetmkt.top",
|
||||
"server_route": "/reconcileGitOpsJob",
|
||||
"method": "POST",
|
||||
"declared_openapi_security": [],
|
||||
"required_scope": "file:write",
|
||||
"exposure": "control-plane",
|
||||
"source_origin": null,
|
||||
"public_origin": "docs/gitops/openapi-chatgpt-actions-public-runtime-2e599646.yaml"
|
||||
},
|
||||
{
|
||||
"operation_id": "registerModel",
|
||||
"schema": "docs/gitops/openapi-chatgpt-actions-online-gitops-task.yaml",
|
||||
"trust_domain": "online-gitops-task",
|
||||
"server_url": "https://cnnetmkt.top",
|
||||
"server_route": "/api/model",
|
||||
"method": "POST",
|
||||
"declared_openapi_security": [
|
||||
{
|
||||
"bearerAuth": []
|
||||
}
|
||||
],
|
||||
"required_scope": "model:write",
|
||||
"exposure": "control-plane",
|
||||
"source_origin": "docs/gitops/openapi-chatgpt-actions.yaml",
|
||||
"public_origin": null
|
||||
},
|
||||
{
|
||||
"operation_id": "registerOnlineAgent",
|
||||
"schema": "docs/gitops/openapi-chatgpt-actions-online-agent-task.yaml",
|
||||
"trust_domain": "online-agent-task",
|
||||
"server_url": "https://cnnetmkt.top",
|
||||
"server_route": "/registerOnlineAgent",
|
||||
"method": "POST",
|
||||
"declared_openapi_security": [],
|
||||
"required_scope": "agent-task:control",
|
||||
"exposure": "control-plane",
|
||||
"source_origin": null,
|
||||
"public_origin": "docs/gitops/openapi-chatgpt-actions-public-runtime-2e599646.yaml"
|
||||
},
|
||||
{
|
||||
"operation_id": "requestOrCreateTag",
|
||||
"schema": "docs/gitops/openapi-chatgpt-actions-governed-release.yaml",
|
||||
"trust_domain": "governed-release",
|
||||
"server_url": "https://cnnetmkt.top",
|
||||
"server_route": "/api/tag",
|
||||
"method": "POST",
|
||||
"declared_openapi_security": [
|
||||
{
|
||||
"bearerAuth": []
|
||||
}
|
||||
],
|
||||
"required_scope": "tag:create",
|
||||
"exposure": "control-plane",
|
||||
"source_origin": "docs/gitops/openapi-chatgpt-actions.yaml",
|
||||
"public_origin": "docs/gitops/openapi-chatgpt-actions-public-runtime-2e599646.yaml"
|
||||
},
|
||||
{
|
||||
"operation_id": "requestRollback",
|
||||
"schema": "docs/gitops/openapi-chatgpt-actions-governed-release.yaml",
|
||||
"trust_domain": "governed-release",
|
||||
"server_url": "https://cnnetmkt.top",
|
||||
"server_route": "/api/rollback",
|
||||
"method": "POST",
|
||||
"declared_openapi_security": [
|
||||
{
|
||||
"bearerAuth": []
|
||||
}
|
||||
],
|
||||
"required_scope": "rollback:request",
|
||||
"exposure": "control-plane",
|
||||
"source_origin": "docs/gitops/openapi-chatgpt-actions.yaml",
|
||||
"public_origin": "docs/gitops/openapi-chatgpt-actions-public-runtime-2e599646.yaml"
|
||||
},
|
||||
{
|
||||
"operation_id": "resumeGitOpsJob",
|
||||
"schema": "docs/gitops/openapi-chatgpt-actions-governed-release.yaml",
|
||||
"trust_domain": "governed-release",
|
||||
"server_url": "https://cnnetmkt.top",
|
||||
"server_route": "/resumeGitOpsJob",
|
||||
"method": "POST",
|
||||
"declared_openapi_security": [],
|
||||
"required_scope": "file:write",
|
||||
"exposure": "control-plane",
|
||||
"source_origin": null,
|
||||
"public_origin": "docs/gitops/openapi-chatgpt-actions-public-runtime-2e599646.yaml"
|
||||
},
|
||||
{
|
||||
"operation_id": "runReleaseAcceptance",
|
||||
"schema": "docs/gitops/openapi-chatgpt-actions-governed-release.yaml",
|
||||
"trust_domain": "governed-release",
|
||||
"server_url": "https://cnnetmkt.top",
|
||||
"server_route": "/api/release-acceptance",
|
||||
"method": "GET",
|
||||
"declared_openapi_security": [],
|
||||
"required_scope": null,
|
||||
"exposure": "public",
|
||||
"source_origin": "docs/gitops/openapi-chatgpt-actions.yaml",
|
||||
"public_origin": "docs/gitops/openapi-chatgpt-actions-public-runtime-2e599646.yaml"
|
||||
},
|
||||
{
|
||||
"operation_id": "setModelPriority",
|
||||
"schema": "docs/gitops/openapi-chatgpt-actions-online-gitops-task.yaml",
|
||||
"trust_domain": "online-gitops-task",
|
||||
"server_url": "https://cnnetmkt.top",
|
||||
"server_route": "/api/model-priority",
|
||||
"method": "PUT",
|
||||
"declared_openapi_security": [
|
||||
{
|
||||
"bearerAuth": []
|
||||
}
|
||||
],
|
||||
"required_scope": "model:priority",
|
||||
"exposure": "control-plane",
|
||||
"source_origin": "docs/gitops/openapi-chatgpt-actions.yaml",
|
||||
"public_origin": null
|
||||
},
|
||||
{
|
||||
"operation_id": "startDeployment",
|
||||
"schema": "docs/gitops/openapi-chatgpt-actions-governed-release.yaml",
|
||||
"trust_domain": "governed-release",
|
||||
"server_url": "https://cnnetmkt.top",
|
||||
"server_route": "/startDeployment",
|
||||
"method": "POST",
|
||||
"declared_openapi_security": [
|
||||
{
|
||||
"bearerAuth": []
|
||||
}
|
||||
],
|
||||
"required_scope": "release:deploy",
|
||||
"exposure": "control-plane",
|
||||
"source_origin": "docs/gitops/openapi-chatgpt-actions.yaml",
|
||||
"public_origin": "docs/gitops/openapi-chatgpt-actions-public-runtime-2e599646.yaml"
|
||||
},
|
||||
{
|
||||
"operation_id": "submitOwnerApproval",
|
||||
"schema": "docs/gitops/openapi-chatgpt-actions-governed-release.yaml",
|
||||
"trust_domain": "governed-release",
|
||||
"server_url": "https://cnnetmkt.top",
|
||||
"server_route": "/submitOwnerApproval",
|
||||
"method": "POST",
|
||||
"declared_openapi_security": [
|
||||
{
|
||||
"bearerAuth": []
|
||||
}
|
||||
],
|
||||
"required_scope": "release:approve",
|
||||
"exposure": "control-plane",
|
||||
"source_origin": "docs/gitops/openapi-chatgpt-actions.yaml",
|
||||
"public_origin": "docs/gitops/openapi-chatgpt-actions-public-runtime-2e599646.yaml"
|
||||
},
|
||||
{
|
||||
"operation_id": "submitSignedApproval",
|
||||
"schema": "docs/gitops/openapi-chatgpt-actions-governed-release.yaml",
|
||||
"trust_domain": "governed-release",
|
||||
"server_url": "https://cnnetmkt.top",
|
||||
"server_route": "/submitSignedApproval",
|
||||
"method": "POST",
|
||||
"declared_openapi_security": [
|
||||
{
|
||||
"bearerAuth": []
|
||||
}
|
||||
],
|
||||
"required_scope": "release:approve",
|
||||
"exposure": "control-plane",
|
||||
"source_origin": "docs/gitops/openapi-chatgpt-actions.yaml",
|
||||
"public_origin": null
|
||||
},
|
||||
{
|
||||
"operation_id": "verifyOnlineAgentTask",
|
||||
"schema": "docs/gitops/openapi-chatgpt-actions-online-agent-task.yaml",
|
||||
"trust_domain": "online-agent-task",
|
||||
"server_url": "https://cnnetmkt.top",
|
||||
"server_route": "/verifyOnlineAgentTask",
|
||||
"method": "POST",
|
||||
"declared_openapi_security": [],
|
||||
"required_scope": "agent-task:control",
|
||||
"exposure": "control-plane",
|
||||
"source_origin": null,
|
||||
"public_origin": "docs/gitops/openapi-chatgpt-actions-public-runtime-2e599646.yaml"
|
||||
}
|
||||
],
|
||||
"scope_provenance": {
|
||||
"release_and_gitops": "immutable staging runtime aios_model_api_staging.py handler scope checks",
|
||||
"agent_task_control": {
|
||||
"required_scope": "agent-task:control",
|
||||
"immutable_runtime_oid": "2e5996463de564793df881df5c5f684359733627",
|
||||
"proxy_routes": [
|
||||
"/api/online-agent-task",
|
||||
"/api/online-agent-task-events",
|
||||
"/createOnlineAgentTask",
|
||||
"/registerOnlineAgent",
|
||||
"/verifyOnlineAgentTask",
|
||||
"/cancelOnlineAgentTask"
|
||||
],
|
||||
"operation_ids": [
|
||||
"cancelOnlineAgentTask",
|
||||
"createOnlineAgentTask",
|
||||
"getOnlineAgentTask",
|
||||
"getOnlineAgentTaskEvents",
|
||||
"registerOnlineAgent",
|
||||
"verifyOnlineAgentTask"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
# ChatGPT Action schema trust-domain reconciliation
|
||||
|
||||
The main source has **31** operations while immutable public runtime `2e5996463de564793df881df5c5f684359733627` serves a different **30**. Both are retained as non-import parity fixtures. Their exact compatible union is **46** operations.
|
||||
|
||||
Import only these bounded specs:
|
||||
|
||||
- `openapi-chatgpt-actions-governed-release.yaml` — 26 Governed GitOps and Release operations.
|
||||
- `openapi-chatgpt-actions-online-gitops-task.yaml` — 14 Online GitOps Task operations.
|
||||
- `openapi-chatgpt-actions-online-agent-task.yaml` — 6 actual public Online Agent Task operations.
|
||||
|
||||
The machine-readable capability manifest records split schema, server route, declared OpenAPI security, required runtime scope, exposure, and `source_origin` / `public_origin` for every union operation. The dedicated Online Agent Task document includes `createOnlineAgentTask`, `registerOnlineAgent`, `getOnlineAgentTask`, `getOnlineAgentTaskEvents`, `verifyOnlineAgentTask`, and `cancelOnlineAgentTask`; each requires runtime scope `agent-task:control`. Its declared OpenAPI security is copied from the public snapshot without rewrite, while the manifest records the runtime scope separately.
|
||||
|
||||
Run `python3 scripts/validate_chatgpt_action_schema_split.py` and `python3 -m unittest discover -s tests -p 'test_chatgpt_action_schema_split.py' -v`. The validator reports `formal_validator=NOT_INSTALLED` rather than a false formal pass if `openapi-spec-validator` is absent.
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,782 @@
|
||||
openapi: 3.1.0
|
||||
info:
|
||||
title: AIOS ChatGPT Actions - Online Agent Task
|
||||
version: V1R1C0-chatgpt-actions-online-agent-task
|
||||
description: Trust-domain import from the exact union of the 31-operation main source and 30-operation
|
||||
immutable public runtime; operation, server route, and declared security are preserved.
|
||||
servers:
|
||||
- url: https://cnnetmkt.top
|
||||
security: []
|
||||
components:
|
||||
securitySchemes:
|
||||
bearerAuth:
|
||||
type: http
|
||||
scheme: bearer
|
||||
bearerFormat: opaque-token
|
||||
schemas:
|
||||
PublicationState:
|
||||
type: string
|
||||
description: Canonical durable publication state. Legacy TAG_CREATED_LOCAL is normalized on read
|
||||
and is never emitted by new writes.
|
||||
enum:
|
||||
- PENDING
|
||||
- LOCAL_TAG_CREATED
|
||||
- REMOTE_PUSH_PENDING
|
||||
- REMOTE_PUSH_CONFIRMED
|
||||
- GITEA_API_CONFIRMED
|
||||
- BASELINE_UPDATE_PENDING
|
||||
- BASELINE_UPDATED
|
||||
- PRODUCTION_DEPLOYED
|
||||
- RECONCILIATION_REQUIRED
|
||||
- MANUAL_OWNER_REVIEW_REQUIRED
|
||||
PublicationStatus:
|
||||
type: object
|
||||
required:
|
||||
- version
|
||||
- state
|
||||
properties:
|
||||
version:
|
||||
type: string
|
||||
state:
|
||||
$ref: '#/components/schemas/PublicationState'
|
||||
fail_closed:
|
||||
type: boolean
|
||||
BranchRequest:
|
||||
type: object
|
||||
required:
|
||||
- branch
|
||||
properties:
|
||||
branch:
|
||||
type: string
|
||||
example: patch/chatgpt-actions-demo
|
||||
base:
|
||||
type: string
|
||||
default: main
|
||||
message:
|
||||
type: string
|
||||
FileCommitRequest:
|
||||
type: object
|
||||
required:
|
||||
- branch
|
||||
- path
|
||||
- content
|
||||
properties:
|
||||
branch:
|
||||
type: string
|
||||
base:
|
||||
type: string
|
||||
default: main
|
||||
create_branch:
|
||||
type: boolean
|
||||
default: false
|
||||
path:
|
||||
type: string
|
||||
example: docs/gitops/chatgpt-change.md
|
||||
content:
|
||||
type: string
|
||||
message:
|
||||
type: string
|
||||
AtomicFileCommitRequest:
|
||||
type: object
|
||||
additionalProperties: false
|
||||
required:
|
||||
- branch
|
||||
- path
|
||||
- content
|
||||
- message
|
||||
- expected_head_oid
|
||||
- idempotency_key
|
||||
properties:
|
||||
branch:
|
||||
type: string
|
||||
pattern: ^patch/[A-Za-z0-9._/-]+$
|
||||
path:
|
||||
type: string
|
||||
minLength: 1
|
||||
maxLength: 512
|
||||
content:
|
||||
type: string
|
||||
maxLength: 1048576
|
||||
message:
|
||||
type: string
|
||||
minLength: 1
|
||||
maxLength: 200
|
||||
expected_head_oid:
|
||||
type: string
|
||||
pattern: ^[0-9a-f]{40}$
|
||||
idempotency_key:
|
||||
type: string
|
||||
pattern: ^[A-Za-z0-9][A-Za-z0-9._:-]{7,127}$
|
||||
CommitRequest:
|
||||
type: object
|
||||
properties:
|
||||
branch:
|
||||
type: string
|
||||
paths:
|
||||
type: array
|
||||
items:
|
||||
type: string
|
||||
message:
|
||||
type: string
|
||||
PatchRequest:
|
||||
type: object
|
||||
required:
|
||||
- patch_name
|
||||
properties:
|
||||
patch_name:
|
||||
type: string
|
||||
branch:
|
||||
type: string
|
||||
base:
|
||||
type: string
|
||||
default: main
|
||||
risk:
|
||||
type: string
|
||||
enum:
|
||||
- low
|
||||
- medium
|
||||
- high
|
||||
description:
|
||||
type: string
|
||||
message:
|
||||
type: string
|
||||
TagRequest:
|
||||
type: object
|
||||
required:
|
||||
- version
|
||||
- target_oid
|
||||
- evidence_closure_oid
|
||||
- approval_plan_id
|
||||
properties:
|
||||
version:
|
||||
type: string
|
||||
example: V1R1C1
|
||||
target_oid:
|
||||
type: string
|
||||
pattern: ^[0-9a-fA-F]{40}$
|
||||
description: Full approved commit OID. The tag is created explicitly at this commit, never implicitly
|
||||
at workspace HEAD.
|
||||
evidence_closure_oid:
|
||||
type: string
|
||||
pattern: ^[0-9a-fA-F]{40}$
|
||||
description: Required evidence closure commit. target_oid must be its ancestor.
|
||||
approval_plan_id:
|
||||
type: string
|
||||
description: Audited owner-approved release or tag plan identifier.
|
||||
message:
|
||||
type: string
|
||||
execute:
|
||||
type: boolean
|
||||
description: Owner-approved calls only. Otherwise an approval request commit is created.
|
||||
RollbackRequest:
|
||||
type: object
|
||||
required:
|
||||
- target_version
|
||||
properties:
|
||||
target_version:
|
||||
type: string
|
||||
reason:
|
||||
type: string
|
||||
branch:
|
||||
type: string
|
||||
ModelRequest:
|
||||
type: object
|
||||
required:
|
||||
- provider_name
|
||||
- base_url
|
||||
- model_name
|
||||
properties:
|
||||
username:
|
||||
type: string
|
||||
provider_name:
|
||||
type: string
|
||||
base_url:
|
||||
type: string
|
||||
model_name:
|
||||
type: string
|
||||
display_name:
|
||||
type: string
|
||||
api_key_secret_ref:
|
||||
type: string
|
||||
description: Preferred. Git stores this secret_ref only.
|
||||
api_key:
|
||||
type: string
|
||||
writeOnly: true
|
||||
description: Accepted only for runtime secret storage; never committed to Git or logs.
|
||||
branch:
|
||||
type: string
|
||||
message:
|
||||
type: string
|
||||
ModelPriorityRequest:
|
||||
type: object
|
||||
required:
|
||||
- items
|
||||
properties:
|
||||
username:
|
||||
type: string
|
||||
branch:
|
||||
type: string
|
||||
items:
|
||||
type: array
|
||||
items:
|
||||
type: object
|
||||
properties:
|
||||
model_id:
|
||||
type: string
|
||||
priority:
|
||||
type: integer
|
||||
enabled:
|
||||
type: boolean
|
||||
fallback_policy:
|
||||
type: string
|
||||
NLRequest:
|
||||
type: object
|
||||
required:
|
||||
- text
|
||||
properties:
|
||||
text:
|
||||
type: string
|
||||
branch:
|
||||
type: string
|
||||
DeploymentPlan:
|
||||
type: object
|
||||
required:
|
||||
- service
|
||||
- release_path
|
||||
- release_root
|
||||
- cutover_link
|
||||
- dropin_path
|
||||
- dropin_sha256
|
||||
- systemd_unit_sha256
|
||||
- rollback_path
|
||||
- rollback_sha256
|
||||
- source_commit
|
||||
- tree_oid
|
||||
- artifact_sha256
|
||||
- manifest_sha256
|
||||
- package_closure_sha256
|
||||
- authoritative_git_dir
|
||||
- repository_identity
|
||||
- writer_expected
|
||||
- baseline_before_sha256
|
||||
- registry_before_sha256
|
||||
- production_tag_refset_before_sha256
|
||||
- health_contract_version
|
||||
- timeout_policy
|
||||
- retry_policy
|
||||
- policy_sha256
|
||||
- health_contract
|
||||
properties:
|
||||
service:
|
||||
type: string
|
||||
release_path:
|
||||
type: string
|
||||
release_root:
|
||||
type: string
|
||||
cutover_link:
|
||||
type: string
|
||||
dropin_path:
|
||||
type: string
|
||||
dropin_sha256:
|
||||
type: string
|
||||
pattern: ^[0-9a-f]{64}$
|
||||
systemd_unit_sha256:
|
||||
type: string
|
||||
pattern: ^[0-9a-f]{64}$
|
||||
rollback_path:
|
||||
type: string
|
||||
rollback_sha256:
|
||||
type: string
|
||||
pattern: ^[0-9a-f]{64}$
|
||||
source_commit:
|
||||
type: string
|
||||
pattern: ^[0-9a-f]{40}$
|
||||
tree_oid:
|
||||
type: string
|
||||
pattern: ^[0-9a-f]{40}$
|
||||
artifact_sha256:
|
||||
type: string
|
||||
pattern: ^[0-9a-f]{64}$
|
||||
manifest_sha256:
|
||||
type: string
|
||||
pattern: ^[0-9a-f]{64}$
|
||||
package_closure_sha256:
|
||||
type: string
|
||||
pattern: ^[0-9a-f]{64}$
|
||||
authoritative_git_dir:
|
||||
type: string
|
||||
repository_identity:
|
||||
type: string
|
||||
writer_expected:
|
||||
type: boolean
|
||||
enum:
|
||||
- false
|
||||
baseline_before_sha256:
|
||||
type: string
|
||||
pattern: ^[0-9a-f]{64}$
|
||||
registry_before_sha256:
|
||||
type: string
|
||||
pattern: ^[0-9a-f]{64}$
|
||||
production_tag_refset_before_sha256:
|
||||
type: string
|
||||
pattern: ^[0-9a-f]{64}$
|
||||
health_contract_version:
|
||||
type: string
|
||||
timeout_policy:
|
||||
type: object
|
||||
retry_policy:
|
||||
type: object
|
||||
policy_sha256:
|
||||
type: string
|
||||
pattern: ^[0-9a-f]{64}$
|
||||
health_contract:
|
||||
type: object
|
||||
additionalProperties: true
|
||||
ReleaseCandidateInput:
|
||||
type: object
|
||||
required:
|
||||
- source_commit
|
||||
- version
|
||||
additionalProperties: false
|
||||
properties:
|
||||
candidate_id:
|
||||
type: string
|
||||
pattern: ^[A-Za-z0-9][A-Za-z0-9_.-]{2,127}$
|
||||
source_commit:
|
||||
type: string
|
||||
pattern: ^[0-9a-f]{40}$
|
||||
version:
|
||||
type: string
|
||||
pattern: ^V[0-9]+R[0-9]+C[0-9]+(?:[-.][A-Za-z0-9][A-Za-z0-9.-]*)?$
|
||||
ReleaseIntentInput:
|
||||
type: object
|
||||
required:
|
||||
- event_id
|
||||
- source_commit
|
||||
additionalProperties: false
|
||||
properties:
|
||||
event_id:
|
||||
type: string
|
||||
pattern: ^[A-Za-z0-9][A-Za-z0-9_.:-]{2,255}$
|
||||
source_commit:
|
||||
type: string
|
||||
pattern: ^[0-9a-f]{40}$
|
||||
SignedReleasePlanApproval:
|
||||
type: object
|
||||
required:
|
||||
- release_plan_id
|
||||
- candidate_id
|
||||
- source_commit
|
||||
- tree_oid
|
||||
- artifact_sha256
|
||||
- manifest_sha256
|
||||
- deployment_plan_sha256
|
||||
- release_plan_sha256
|
||||
- policy_sha256
|
||||
- approval_plan_id
|
||||
- evidence_closure_oid
|
||||
- owner_approval_record_oid
|
||||
- capabilities
|
||||
- owner_identity
|
||||
- trust_domain
|
||||
- issued_at
|
||||
- not_before
|
||||
- expires_at
|
||||
- nonce
|
||||
- key_id
|
||||
- signature
|
||||
properties:
|
||||
release_plan_id:
|
||||
type: string
|
||||
candidate_id:
|
||||
type: string
|
||||
source_commit:
|
||||
type: string
|
||||
pattern: ^[0-9a-f]{40}$
|
||||
tree_oid:
|
||||
type: string
|
||||
pattern: ^[0-9a-f]{40}$
|
||||
artifact_sha256:
|
||||
type: string
|
||||
pattern: ^[0-9a-f]{64}$
|
||||
manifest_sha256:
|
||||
type: string
|
||||
pattern: ^[0-9a-f]{64}$
|
||||
deployment_plan_sha256:
|
||||
type: string
|
||||
pattern: ^[0-9a-f]{64}$
|
||||
release_plan_sha256:
|
||||
type: string
|
||||
pattern: ^[0-9a-f]{64}$
|
||||
policy_sha256:
|
||||
type: string
|
||||
pattern: ^[0-9a-f]{64}$
|
||||
approval_plan_id:
|
||||
type: string
|
||||
evidence_closure_oid:
|
||||
type: string
|
||||
pattern: ^[0-9a-f]{40}$
|
||||
owner_approval_record_oid:
|
||||
type: string
|
||||
pattern: ^[0-9a-f]{40}$
|
||||
owner_identity:
|
||||
type: string
|
||||
trust_domain:
|
||||
type: string
|
||||
issued_at:
|
||||
type: string
|
||||
format: date-time
|
||||
not_before:
|
||||
type: string
|
||||
format: date-time
|
||||
capabilities:
|
||||
type: array
|
||||
uniqueItems: true
|
||||
items:
|
||||
type: string
|
||||
enum:
|
||||
- runtime_switch
|
||||
- tag_publish
|
||||
- baseline_registry_finalize
|
||||
expires_at:
|
||||
type: string
|
||||
format: date-time
|
||||
nonce:
|
||||
type: string
|
||||
minLength: 16
|
||||
key_id:
|
||||
type: string
|
||||
signature:
|
||||
type: string
|
||||
format: byte
|
||||
writeOnly: true
|
||||
StartDeploymentRequest:
|
||||
type: object
|
||||
required:
|
||||
- candidate_id
|
||||
additionalProperties: false
|
||||
properties:
|
||||
candidate_id:
|
||||
type: string
|
||||
Oid40:
|
||||
type: string
|
||||
pattern: ^[0-9a-f]{40}$
|
||||
CreateGovernedTaskRequest:
|
||||
type: object
|
||||
additionalProperties: false
|
||||
required:
|
||||
- task_id
|
||||
- repository
|
||||
- base_oid
|
||||
- target_branch
|
||||
- risk
|
||||
- description
|
||||
- idempotency_key
|
||||
properties:
|
||||
task_id:
|
||||
type: string
|
||||
repository:
|
||||
type: string
|
||||
const: aios/aios
|
||||
base_oid:
|
||||
$ref: '#/components/schemas/Oid40'
|
||||
target_branch:
|
||||
type: string
|
||||
pattern: ^agent/
|
||||
risk:
|
||||
type: string
|
||||
enum:
|
||||
- low
|
||||
- medium
|
||||
- high
|
||||
- engineering
|
||||
description:
|
||||
type: string
|
||||
idempotency_key:
|
||||
type: string
|
||||
expected_branch_oid:
|
||||
$ref: '#/components/schemas/Oid40'
|
||||
generation:
|
||||
type: integer
|
||||
minimum: 1
|
||||
WriterLeaseRequest:
|
||||
type: object
|
||||
additionalProperties: false
|
||||
required:
|
||||
- schema
|
||||
- task_id
|
||||
- repository
|
||||
- branch_mode
|
||||
- base_oid
|
||||
- expected_branch_oid
|
||||
- target_branch
|
||||
- generation
|
||||
- lease_seconds
|
||||
properties:
|
||||
schema:
|
||||
type: string
|
||||
task_id:
|
||||
type: string
|
||||
repository:
|
||||
type: string
|
||||
const: aios/aios
|
||||
branch_mode:
|
||||
type: string
|
||||
enum:
|
||||
- CREATE_NEW
|
||||
- CONTINUE_EXISTING
|
||||
base_oid:
|
||||
$ref: '#/components/schemas/Oid40'
|
||||
expected_branch_oid:
|
||||
$ref: '#/components/schemas/Oid40'
|
||||
target_branch:
|
||||
type: string
|
||||
pattern: ^agent/
|
||||
generation:
|
||||
type: integer
|
||||
minimum: 1
|
||||
lease_seconds:
|
||||
type: integer
|
||||
minimum: 1
|
||||
maximum: 86400
|
||||
CommitFileGovernedRequest:
|
||||
type: object
|
||||
additionalProperties: false
|
||||
required:
|
||||
- task_id
|
||||
- repository
|
||||
- expected_branch_oid
|
||||
- target_branch
|
||||
- generation
|
||||
- idempotency_key
|
||||
- path
|
||||
- content_base64
|
||||
- message
|
||||
properties:
|
||||
task_id:
|
||||
type: string
|
||||
repository:
|
||||
type: string
|
||||
const: aios/aios
|
||||
expected_branch_oid:
|
||||
$ref: '#/components/schemas/Oid40'
|
||||
target_branch:
|
||||
type: string
|
||||
pattern: ^agent/
|
||||
generation:
|
||||
type: integer
|
||||
minimum: 1
|
||||
idempotency_key:
|
||||
type: string
|
||||
path:
|
||||
type: string
|
||||
content_base64:
|
||||
type: string
|
||||
message:
|
||||
type: string
|
||||
CommitFilesGovernedRequest:
|
||||
type: object
|
||||
additionalProperties: false
|
||||
required:
|
||||
- task_id
|
||||
- repository
|
||||
- expected_branch_oid
|
||||
- target_branch
|
||||
- generation
|
||||
- idempotency_key
|
||||
- files
|
||||
- message
|
||||
properties:
|
||||
task_id:
|
||||
type: string
|
||||
repository:
|
||||
type: string
|
||||
const: aios/aios
|
||||
expected_branch_oid:
|
||||
$ref: '#/components/schemas/Oid40'
|
||||
target_branch:
|
||||
type: string
|
||||
pattern: ^agent/
|
||||
generation:
|
||||
type: integer
|
||||
minimum: 1
|
||||
idempotency_key:
|
||||
type: string
|
||||
files:
|
||||
type: object
|
||||
additionalProperties:
|
||||
type: string
|
||||
description: Base64 encoded file bytes
|
||||
message:
|
||||
type: string
|
||||
CreateOnlineAgentTaskRequest:
|
||||
type: object
|
||||
additionalProperties: false
|
||||
required:
|
||||
- goal
|
||||
- instructions
|
||||
- success_criteria
|
||||
- idempotency_key
|
||||
properties:
|
||||
task_id:
|
||||
type: string
|
||||
goal:
|
||||
type: string
|
||||
instructions:
|
||||
type: string
|
||||
success_criteria:
|
||||
type: array
|
||||
items: {}
|
||||
required_capabilities:
|
||||
type: array
|
||||
items:
|
||||
type: string
|
||||
constraints:
|
||||
type: object
|
||||
additionalProperties: true
|
||||
metadata:
|
||||
type: object
|
||||
additionalProperties: true
|
||||
deadline:
|
||||
type: string
|
||||
format: date-time
|
||||
priority:
|
||||
type: integer
|
||||
minimum: -100
|
||||
maximum: 100
|
||||
max_attempts:
|
||||
type: integer
|
||||
minimum: 1
|
||||
maximum: 20
|
||||
idempotency_key:
|
||||
type: string
|
||||
paths:
|
||||
/createOnlineAgentTask:
|
||||
post:
|
||||
operationId: createOnlineAgentTask
|
||||
x-openai-isConsequential: true
|
||||
requestBody:
|
||||
required: true
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/CreateOnlineAgentTaskRequest'
|
||||
responses:
|
||||
'200':
|
||||
description: Online task created
|
||||
'201':
|
||||
description: Online task created
|
||||
/registerOnlineAgent:
|
||||
post:
|
||||
operationId: registerOnlineAgent
|
||||
x-openai-isConsequential: true
|
||||
description: 'Control operation. The returned agent token is secret material and must be delivered
|
||||
through runtime secret storage, never Git.
|
||||
|
||||
'
|
||||
requestBody:
|
||||
required: true
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: object
|
||||
required:
|
||||
- agent_id
|
||||
- agent_type
|
||||
- agent_version
|
||||
- capabilities
|
||||
properties:
|
||||
agent_id:
|
||||
type: string
|
||||
agent_type:
|
||||
type: string
|
||||
agent_version:
|
||||
type: string
|
||||
capabilities:
|
||||
type: array
|
||||
items:
|
||||
type: string
|
||||
metadata:
|
||||
type: object
|
||||
additionalProperties: true
|
||||
responses:
|
||||
'201':
|
||||
description: Agent registered
|
||||
/api/online-agent-task:
|
||||
get:
|
||||
operationId: getOnlineAgentTask
|
||||
parameters:
|
||||
- name: task_id
|
||||
in: query
|
||||
required: true
|
||||
schema:
|
||||
type: string
|
||||
responses:
|
||||
'200':
|
||||
description: Task status
|
||||
/api/online-agent-task-events:
|
||||
get:
|
||||
operationId: getOnlineAgentTaskEvents
|
||||
parameters:
|
||||
- name: task_id
|
||||
in: query
|
||||
required: true
|
||||
schema:
|
||||
type: string
|
||||
responses:
|
||||
'200':
|
||||
description: Task events
|
||||
/verifyOnlineAgentTask:
|
||||
post:
|
||||
operationId: verifyOnlineAgentTask
|
||||
x-openai-isConsequential: true
|
||||
requestBody:
|
||||
required: true
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: object
|
||||
required:
|
||||
- task_id
|
||||
- decision
|
||||
properties:
|
||||
task_id:
|
||||
type: string
|
||||
decision:
|
||||
type: string
|
||||
enum:
|
||||
- SUCCEEDED
|
||||
- NEEDS_REWORK
|
||||
- FAILED
|
||||
verification:
|
||||
type: object
|
||||
additionalProperties: true
|
||||
responses:
|
||||
'200':
|
||||
description: Verification applied
|
||||
/cancelOnlineAgentTask:
|
||||
post:
|
||||
operationId: cancelOnlineAgentTask
|
||||
x-openai-isConsequential: true
|
||||
requestBody:
|
||||
required: true
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: object
|
||||
required:
|
||||
- task_id
|
||||
properties:
|
||||
task_id:
|
||||
type: string
|
||||
reason:
|
||||
type: string
|
||||
responses:
|
||||
'200':
|
||||
description: Task cancelled
|
||||
x-aios-schema-reconciliation:
|
||||
source_schema: docs/gitops/openapi-chatgpt-actions.yaml
|
||||
public_runtime_schema: docs/gitops/openapi-chatgpt-actions-public-runtime-2e599646.yaml
|
||||
trust_domain: online-agent-task
|
||||
operation_count: 6
|
||||
public_action_import: true
|
||||
@@ -0,0 +1,881 @@
|
||||
openapi: 3.1.0
|
||||
info:
|
||||
title: AIOS ChatGPT Actions - Online GitOps Task
|
||||
version: V1R1C0-chatgpt-actions-online-gitops-task
|
||||
description: Trust-domain import from the exact union of the 31-operation main source and 30-operation
|
||||
immutable public runtime; operation, server route, and declared security are preserved.
|
||||
servers:
|
||||
- url: https://cnnetmkt.top
|
||||
security: []
|
||||
components:
|
||||
securitySchemes:
|
||||
bearerAuth:
|
||||
type: http
|
||||
scheme: bearer
|
||||
bearerFormat: opaque-token
|
||||
schemas:
|
||||
PublicationState:
|
||||
type: string
|
||||
description: Canonical durable publication state. Legacy TAG_CREATED_LOCAL is normalized on read
|
||||
and is never emitted by new writes.
|
||||
enum:
|
||||
- PENDING
|
||||
- LOCAL_TAG_CREATED
|
||||
- REMOTE_PUSH_PENDING
|
||||
- REMOTE_PUSH_CONFIRMED
|
||||
- GITEA_API_CONFIRMED
|
||||
- BASELINE_UPDATE_PENDING
|
||||
- BASELINE_UPDATED
|
||||
- PRODUCTION_DEPLOYED
|
||||
- RECONCILIATION_REQUIRED
|
||||
- MANUAL_OWNER_REVIEW_REQUIRED
|
||||
PublicationStatus:
|
||||
type: object
|
||||
required:
|
||||
- version
|
||||
- state
|
||||
properties:
|
||||
version:
|
||||
type: string
|
||||
state:
|
||||
$ref: '#/components/schemas/PublicationState'
|
||||
fail_closed:
|
||||
type: boolean
|
||||
BranchRequest:
|
||||
type: object
|
||||
required:
|
||||
- branch
|
||||
properties:
|
||||
branch:
|
||||
type: string
|
||||
example: patch/chatgpt-actions-demo
|
||||
base:
|
||||
type: string
|
||||
default: main
|
||||
message:
|
||||
type: string
|
||||
FileCommitRequest:
|
||||
type: object
|
||||
required:
|
||||
- branch
|
||||
- path
|
||||
- content
|
||||
properties:
|
||||
branch:
|
||||
type: string
|
||||
base:
|
||||
type: string
|
||||
default: main
|
||||
create_branch:
|
||||
type: boolean
|
||||
default: false
|
||||
path:
|
||||
type: string
|
||||
example: docs/gitops/chatgpt-change.md
|
||||
content:
|
||||
type: string
|
||||
message:
|
||||
type: string
|
||||
AtomicFileCommitRequest:
|
||||
type: object
|
||||
additionalProperties: false
|
||||
required:
|
||||
- branch
|
||||
- path
|
||||
- content
|
||||
- message
|
||||
- expected_head_oid
|
||||
- idempotency_key
|
||||
properties:
|
||||
branch:
|
||||
type: string
|
||||
pattern: ^patch/[A-Za-z0-9._/-]+$
|
||||
path:
|
||||
type: string
|
||||
minLength: 1
|
||||
maxLength: 512
|
||||
content:
|
||||
type: string
|
||||
maxLength: 1048576
|
||||
message:
|
||||
type: string
|
||||
minLength: 1
|
||||
maxLength: 200
|
||||
expected_head_oid:
|
||||
type: string
|
||||
pattern: ^[0-9a-f]{40}$
|
||||
idempotency_key:
|
||||
type: string
|
||||
pattern: ^[A-Za-z0-9][A-Za-z0-9._:-]{7,127}$
|
||||
CommitRequest:
|
||||
type: object
|
||||
properties:
|
||||
branch:
|
||||
type: string
|
||||
paths:
|
||||
type: array
|
||||
items:
|
||||
type: string
|
||||
message:
|
||||
type: string
|
||||
PatchRequest:
|
||||
type: object
|
||||
required:
|
||||
- patch_name
|
||||
properties:
|
||||
patch_name:
|
||||
type: string
|
||||
branch:
|
||||
type: string
|
||||
base:
|
||||
type: string
|
||||
default: main
|
||||
risk:
|
||||
type: string
|
||||
enum:
|
||||
- low
|
||||
- medium
|
||||
- high
|
||||
description:
|
||||
type: string
|
||||
message:
|
||||
type: string
|
||||
TagRequest:
|
||||
type: object
|
||||
required:
|
||||
- version
|
||||
- target_oid
|
||||
- evidence_closure_oid
|
||||
- approval_plan_id
|
||||
properties:
|
||||
version:
|
||||
type: string
|
||||
example: V1R1C1
|
||||
target_oid:
|
||||
type: string
|
||||
pattern: ^[0-9a-fA-F]{40}$
|
||||
description: Full approved commit OID. The tag is created explicitly at this commit, never implicitly
|
||||
at workspace HEAD.
|
||||
evidence_closure_oid:
|
||||
type: string
|
||||
pattern: ^[0-9a-fA-F]{40}$
|
||||
description: Required evidence closure commit. target_oid must be its ancestor.
|
||||
approval_plan_id:
|
||||
type: string
|
||||
description: Audited owner-approved release or tag plan identifier.
|
||||
message:
|
||||
type: string
|
||||
execute:
|
||||
type: boolean
|
||||
description: Owner-approved calls only. Otherwise an approval request commit is created.
|
||||
RollbackRequest:
|
||||
type: object
|
||||
required:
|
||||
- target_version
|
||||
properties:
|
||||
target_version:
|
||||
type: string
|
||||
reason:
|
||||
type: string
|
||||
branch:
|
||||
type: string
|
||||
ModelRequest:
|
||||
type: object
|
||||
required:
|
||||
- provider_name
|
||||
- base_url
|
||||
- model_name
|
||||
properties:
|
||||
username:
|
||||
type: string
|
||||
provider_name:
|
||||
type: string
|
||||
base_url:
|
||||
type: string
|
||||
model_name:
|
||||
type: string
|
||||
display_name:
|
||||
type: string
|
||||
api_key_secret_ref:
|
||||
type: string
|
||||
description: Preferred. Git stores this secret_ref only.
|
||||
api_key:
|
||||
type: string
|
||||
writeOnly: true
|
||||
description: Accepted only for runtime secret storage; never committed to Git or logs.
|
||||
branch:
|
||||
type: string
|
||||
message:
|
||||
type: string
|
||||
ModelPriorityRequest:
|
||||
type: object
|
||||
required:
|
||||
- items
|
||||
properties:
|
||||
username:
|
||||
type: string
|
||||
branch:
|
||||
type: string
|
||||
items:
|
||||
type: array
|
||||
items:
|
||||
type: object
|
||||
properties:
|
||||
model_id:
|
||||
type: string
|
||||
priority:
|
||||
type: integer
|
||||
enabled:
|
||||
type: boolean
|
||||
fallback_policy:
|
||||
type: string
|
||||
NLRequest:
|
||||
type: object
|
||||
required:
|
||||
- text
|
||||
properties:
|
||||
text:
|
||||
type: string
|
||||
branch:
|
||||
type: string
|
||||
DeploymentPlan:
|
||||
type: object
|
||||
required:
|
||||
- service
|
||||
- release_path
|
||||
- release_root
|
||||
- cutover_link
|
||||
- dropin_path
|
||||
- dropin_sha256
|
||||
- systemd_unit_sha256
|
||||
- rollback_path
|
||||
- rollback_sha256
|
||||
- source_commit
|
||||
- tree_oid
|
||||
- artifact_sha256
|
||||
- manifest_sha256
|
||||
- package_closure_sha256
|
||||
- authoritative_git_dir
|
||||
- repository_identity
|
||||
- writer_expected
|
||||
- baseline_before_sha256
|
||||
- registry_before_sha256
|
||||
- production_tag_refset_before_sha256
|
||||
- health_contract_version
|
||||
- timeout_policy
|
||||
- retry_policy
|
||||
- policy_sha256
|
||||
- health_contract
|
||||
properties:
|
||||
service:
|
||||
type: string
|
||||
release_path:
|
||||
type: string
|
||||
release_root:
|
||||
type: string
|
||||
cutover_link:
|
||||
type: string
|
||||
dropin_path:
|
||||
type: string
|
||||
dropin_sha256:
|
||||
type: string
|
||||
pattern: ^[0-9a-f]{64}$
|
||||
systemd_unit_sha256:
|
||||
type: string
|
||||
pattern: ^[0-9a-f]{64}$
|
||||
rollback_path:
|
||||
type: string
|
||||
rollback_sha256:
|
||||
type: string
|
||||
pattern: ^[0-9a-f]{64}$
|
||||
source_commit:
|
||||
type: string
|
||||
pattern: ^[0-9a-f]{40}$
|
||||
tree_oid:
|
||||
type: string
|
||||
pattern: ^[0-9a-f]{40}$
|
||||
artifact_sha256:
|
||||
type: string
|
||||
pattern: ^[0-9a-f]{64}$
|
||||
manifest_sha256:
|
||||
type: string
|
||||
pattern: ^[0-9a-f]{64}$
|
||||
package_closure_sha256:
|
||||
type: string
|
||||
pattern: ^[0-9a-f]{64}$
|
||||
authoritative_git_dir:
|
||||
type: string
|
||||
repository_identity:
|
||||
type: string
|
||||
writer_expected:
|
||||
type: boolean
|
||||
enum:
|
||||
- false
|
||||
baseline_before_sha256:
|
||||
type: string
|
||||
pattern: ^[0-9a-f]{64}$
|
||||
registry_before_sha256:
|
||||
type: string
|
||||
pattern: ^[0-9a-f]{64}$
|
||||
production_tag_refset_before_sha256:
|
||||
type: string
|
||||
pattern: ^[0-9a-f]{64}$
|
||||
health_contract_version:
|
||||
type: string
|
||||
timeout_policy:
|
||||
type: object
|
||||
retry_policy:
|
||||
type: object
|
||||
policy_sha256:
|
||||
type: string
|
||||
pattern: ^[0-9a-f]{64}$
|
||||
health_contract:
|
||||
type: object
|
||||
additionalProperties: true
|
||||
ReleaseCandidateInput:
|
||||
type: object
|
||||
required:
|
||||
- source_commit
|
||||
- version
|
||||
additionalProperties: false
|
||||
properties:
|
||||
candidate_id:
|
||||
type: string
|
||||
pattern: ^[A-Za-z0-9][A-Za-z0-9_.-]{2,127}$
|
||||
source_commit:
|
||||
type: string
|
||||
pattern: ^[0-9a-f]{40}$
|
||||
version:
|
||||
type: string
|
||||
pattern: ^V[0-9]+R[0-9]+C[0-9]+(?:[-.][A-Za-z0-9][A-Za-z0-9.-]*)?$
|
||||
ReleaseIntentInput:
|
||||
type: object
|
||||
required:
|
||||
- event_id
|
||||
- source_commit
|
||||
additionalProperties: false
|
||||
properties:
|
||||
event_id:
|
||||
type: string
|
||||
pattern: ^[A-Za-z0-9][A-Za-z0-9_.:-]{2,255}$
|
||||
source_commit:
|
||||
type: string
|
||||
pattern: ^[0-9a-f]{40}$
|
||||
SignedReleasePlanApproval:
|
||||
type: object
|
||||
required:
|
||||
- release_plan_id
|
||||
- candidate_id
|
||||
- source_commit
|
||||
- tree_oid
|
||||
- artifact_sha256
|
||||
- manifest_sha256
|
||||
- deployment_plan_sha256
|
||||
- release_plan_sha256
|
||||
- policy_sha256
|
||||
- approval_plan_id
|
||||
- evidence_closure_oid
|
||||
- owner_approval_record_oid
|
||||
- capabilities
|
||||
- owner_identity
|
||||
- trust_domain
|
||||
- issued_at
|
||||
- not_before
|
||||
- expires_at
|
||||
- nonce
|
||||
- key_id
|
||||
- signature
|
||||
properties:
|
||||
release_plan_id:
|
||||
type: string
|
||||
candidate_id:
|
||||
type: string
|
||||
source_commit:
|
||||
type: string
|
||||
pattern: ^[0-9a-f]{40}$
|
||||
tree_oid:
|
||||
type: string
|
||||
pattern: ^[0-9a-f]{40}$
|
||||
artifact_sha256:
|
||||
type: string
|
||||
pattern: ^[0-9a-f]{64}$
|
||||
manifest_sha256:
|
||||
type: string
|
||||
pattern: ^[0-9a-f]{64}$
|
||||
deployment_plan_sha256:
|
||||
type: string
|
||||
pattern: ^[0-9a-f]{64}$
|
||||
release_plan_sha256:
|
||||
type: string
|
||||
pattern: ^[0-9a-f]{64}$
|
||||
policy_sha256:
|
||||
type: string
|
||||
pattern: ^[0-9a-f]{64}$
|
||||
approval_plan_id:
|
||||
type: string
|
||||
evidence_closure_oid:
|
||||
type: string
|
||||
pattern: ^[0-9a-f]{40}$
|
||||
owner_approval_record_oid:
|
||||
type: string
|
||||
pattern: ^[0-9a-f]{40}$
|
||||
owner_identity:
|
||||
type: string
|
||||
trust_domain:
|
||||
type: string
|
||||
issued_at:
|
||||
type: string
|
||||
format: date-time
|
||||
not_before:
|
||||
type: string
|
||||
format: date-time
|
||||
capabilities:
|
||||
type: array
|
||||
uniqueItems: true
|
||||
items:
|
||||
type: string
|
||||
enum:
|
||||
- runtime_switch
|
||||
- tag_publish
|
||||
- baseline_registry_finalize
|
||||
expires_at:
|
||||
type: string
|
||||
format: date-time
|
||||
nonce:
|
||||
type: string
|
||||
minLength: 16
|
||||
key_id:
|
||||
type: string
|
||||
signature:
|
||||
type: string
|
||||
format: byte
|
||||
writeOnly: true
|
||||
StartDeploymentRequest:
|
||||
type: object
|
||||
required:
|
||||
- candidate_id
|
||||
additionalProperties: false
|
||||
properties:
|
||||
candidate_id:
|
||||
type: string
|
||||
Oid40:
|
||||
type: string
|
||||
pattern: ^[0-9a-f]{40}$
|
||||
CreateGovernedTaskRequest:
|
||||
type: object
|
||||
additionalProperties: false
|
||||
required:
|
||||
- task_id
|
||||
- repository
|
||||
- base_oid
|
||||
- target_branch
|
||||
- risk
|
||||
- description
|
||||
- idempotency_key
|
||||
properties:
|
||||
task_id:
|
||||
type: string
|
||||
repository:
|
||||
type: string
|
||||
const: aios/aios
|
||||
base_oid:
|
||||
$ref: '#/components/schemas/Oid40'
|
||||
target_branch:
|
||||
type: string
|
||||
pattern: ^agent/
|
||||
risk:
|
||||
type: string
|
||||
enum:
|
||||
- low
|
||||
- medium
|
||||
- high
|
||||
- engineering
|
||||
description:
|
||||
type: string
|
||||
idempotency_key:
|
||||
type: string
|
||||
expected_branch_oid:
|
||||
$ref: '#/components/schemas/Oid40'
|
||||
generation:
|
||||
type: integer
|
||||
minimum: 1
|
||||
WriterLeaseRequest:
|
||||
type: object
|
||||
additionalProperties: false
|
||||
required:
|
||||
- schema
|
||||
- task_id
|
||||
- repository
|
||||
- branch_mode
|
||||
- base_oid
|
||||
- expected_branch_oid
|
||||
- target_branch
|
||||
- generation
|
||||
- lease_seconds
|
||||
properties:
|
||||
schema:
|
||||
type: string
|
||||
task_id:
|
||||
type: string
|
||||
repository:
|
||||
type: string
|
||||
const: aios/aios
|
||||
branch_mode:
|
||||
type: string
|
||||
enum:
|
||||
- CREATE_NEW
|
||||
- CONTINUE_EXISTING
|
||||
base_oid:
|
||||
$ref: '#/components/schemas/Oid40'
|
||||
expected_branch_oid:
|
||||
$ref: '#/components/schemas/Oid40'
|
||||
target_branch:
|
||||
type: string
|
||||
pattern: ^agent/
|
||||
generation:
|
||||
type: integer
|
||||
minimum: 1
|
||||
lease_seconds:
|
||||
type: integer
|
||||
minimum: 1
|
||||
maximum: 86400
|
||||
CommitFileGovernedRequest:
|
||||
type: object
|
||||
additionalProperties: false
|
||||
required:
|
||||
- task_id
|
||||
- repository
|
||||
- expected_branch_oid
|
||||
- target_branch
|
||||
- generation
|
||||
- idempotency_key
|
||||
- path
|
||||
- content_base64
|
||||
- message
|
||||
properties:
|
||||
task_id:
|
||||
type: string
|
||||
repository:
|
||||
type: string
|
||||
const: aios/aios
|
||||
expected_branch_oid:
|
||||
$ref: '#/components/schemas/Oid40'
|
||||
target_branch:
|
||||
type: string
|
||||
pattern: ^agent/
|
||||
generation:
|
||||
type: integer
|
||||
minimum: 1
|
||||
idempotency_key:
|
||||
type: string
|
||||
path:
|
||||
type: string
|
||||
content_base64:
|
||||
type: string
|
||||
message:
|
||||
type: string
|
||||
CommitFilesGovernedRequest:
|
||||
type: object
|
||||
additionalProperties: false
|
||||
required:
|
||||
- task_id
|
||||
- repository
|
||||
- expected_branch_oid
|
||||
- target_branch
|
||||
- generation
|
||||
- idempotency_key
|
||||
- files
|
||||
- message
|
||||
properties:
|
||||
task_id:
|
||||
type: string
|
||||
repository:
|
||||
type: string
|
||||
const: aios/aios
|
||||
expected_branch_oid:
|
||||
$ref: '#/components/schemas/Oid40'
|
||||
target_branch:
|
||||
type: string
|
||||
pattern: ^agent/
|
||||
generation:
|
||||
type: integer
|
||||
minimum: 1
|
||||
idempotency_key:
|
||||
type: string
|
||||
files:
|
||||
type: object
|
||||
additionalProperties:
|
||||
type: string
|
||||
description: Base64 encoded file bytes
|
||||
message:
|
||||
type: string
|
||||
CreateOnlineAgentTaskRequest:
|
||||
type: object
|
||||
additionalProperties: false
|
||||
required:
|
||||
- goal
|
||||
- instructions
|
||||
- success_criteria
|
||||
- idempotency_key
|
||||
properties:
|
||||
task_id:
|
||||
type: string
|
||||
goal:
|
||||
type: string
|
||||
instructions:
|
||||
type: string
|
||||
success_criteria:
|
||||
type: array
|
||||
items: {}
|
||||
required_capabilities:
|
||||
type: array
|
||||
items:
|
||||
type: string
|
||||
constraints:
|
||||
type: object
|
||||
additionalProperties: true
|
||||
metadata:
|
||||
type: object
|
||||
additionalProperties: true
|
||||
deadline:
|
||||
type: string
|
||||
format: date-time
|
||||
priority:
|
||||
type: integer
|
||||
minimum: -100
|
||||
maximum: 100
|
||||
max_attempts:
|
||||
type: integer
|
||||
minimum: 1
|
||||
maximum: 20
|
||||
idempotency_key:
|
||||
type: string
|
||||
paths:
|
||||
/api/base:
|
||||
get:
|
||||
operationId: getBaseline
|
||||
summary: Read current AIOS baseline
|
||||
responses:
|
||||
'200':
|
||||
description: OK
|
||||
/api/ver:
|
||||
get:
|
||||
operationId: listVersions
|
||||
summary: List GitOps versions
|
||||
responses:
|
||||
'200':
|
||||
description: OK
|
||||
/api/diff:
|
||||
get:
|
||||
operationId: getDiff
|
||||
summary: Read Git diff between refs
|
||||
parameters:
|
||||
- in: query
|
||||
name: from
|
||||
schema:
|
||||
type: string
|
||||
default: HEAD~1
|
||||
- in: query
|
||||
name: to
|
||||
schema:
|
||||
type: string
|
||||
default: HEAD
|
||||
responses:
|
||||
'200':
|
||||
description: OK
|
||||
/api/patch:
|
||||
get:
|
||||
operationId: listPatches
|
||||
summary: List patch records
|
||||
responses:
|
||||
'200':
|
||||
description: OK
|
||||
post:
|
||||
operationId: createPatch
|
||||
summary: Create a patch branch and commit metadata
|
||||
security:
|
||||
- bearerAuth: []
|
||||
requestBody:
|
||||
required: true
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/PatchRequest'
|
||||
responses:
|
||||
'200':
|
||||
description: Patch branch committed
|
||||
'401':
|
||||
description: Unauthorized
|
||||
'403':
|
||||
description: Forbidden
|
||||
x-openai-isConsequential: true
|
||||
/api/model:
|
||||
get:
|
||||
operationId: readModelRegistry
|
||||
summary: Read visible model registry and priority
|
||||
responses:
|
||||
'200':
|
||||
description: OK
|
||||
post:
|
||||
operationId: registerModel
|
||||
summary: Register a custom model; API keys are stored as runtime secrets and Git receives secret_ref
|
||||
only
|
||||
security:
|
||||
- bearerAuth: []
|
||||
requestBody:
|
||||
required: true
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/ModelRequest'
|
||||
responses:
|
||||
'200':
|
||||
description: Model registered and committed
|
||||
'401':
|
||||
description: Unauthorized
|
||||
'403':
|
||||
description: Forbidden
|
||||
x-openai-isConsequential: true
|
||||
/api/run:
|
||||
get:
|
||||
operationId: getRuntimeStatus
|
||||
summary: Read runtime status
|
||||
responses:
|
||||
'200':
|
||||
description: OK
|
||||
/api/branch:
|
||||
post:
|
||||
operationId: createBranch
|
||||
summary: Create a non-main branch and commit branch metadata
|
||||
security:
|
||||
- bearerAuth: []
|
||||
requestBody:
|
||||
required: true
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/BranchRequest'
|
||||
responses:
|
||||
'200':
|
||||
description: Branch created
|
||||
'401':
|
||||
description: Unauthorized
|
||||
'403':
|
||||
description: Forbidden
|
||||
x-openai-isConsequential: true
|
||||
/api/file:
|
||||
post:
|
||||
operationId: commitFile
|
||||
summary: Write a file and create a Git commit on a non-main branch
|
||||
security:
|
||||
- bearerAuth: []
|
||||
requestBody:
|
||||
required: true
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/FileCommitRequest'
|
||||
responses:
|
||||
'200':
|
||||
description: File committed
|
||||
'400':
|
||||
description: Secret rejected or invalid path
|
||||
'401':
|
||||
description: Unauthorized
|
||||
x-openai-isConsequential: true
|
||||
/api/commit-file:
|
||||
post:
|
||||
operationId: commitFileAtomic
|
||||
summary: Atomically write one allowlisted file, commit, push, and verify using Token Policy V2
|
||||
security:
|
||||
- bearerAuth: []
|
||||
requestBody:
|
||||
required: true
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/AtomicFileCommitRequest'
|
||||
responses:
|
||||
'200':
|
||||
description: Completed or idempotently replayed
|
||||
'400':
|
||||
description: Invalid canonical request
|
||||
'401':
|
||||
description: Missing
|
||||
invalid: null
|
||||
expired: null
|
||||
or revoked Token Policy V2 grant: null
|
||||
'403':
|
||||
description: Audience
|
||||
source: null
|
||||
branch: null
|
||||
operation: null
|
||||
path: null
|
||||
or policy denied: null
|
||||
'409':
|
||||
description: Idempotency conflict or manual review required
|
||||
'413':
|
||||
description: Request too large
|
||||
'503':
|
||||
description: Push or remote verification unavailable; recoverable
|
||||
x-openai-isConsequential: true
|
||||
/api/commit:
|
||||
post:
|
||||
operationId: commitChanges
|
||||
summary: Commit existing workspace changes on a non-main branch
|
||||
security:
|
||||
- bearerAuth: []
|
||||
requestBody:
|
||||
required: false
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/CommitRequest'
|
||||
responses:
|
||||
'200':
|
||||
description: Commit result
|
||||
'401':
|
||||
description: Unauthorized
|
||||
x-openai-isConsequential: true
|
||||
/api/model-priority:
|
||||
put:
|
||||
operationId: setModelPriority
|
||||
summary: Set model priority and commit policy file
|
||||
security:
|
||||
- bearerAuth: []
|
||||
requestBody:
|
||||
required: true
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/ModelPriorityRequest'
|
||||
responses:
|
||||
'200':
|
||||
description: Priority updated and committed
|
||||
'401':
|
||||
description: Unauthorized
|
||||
x-openai-isConsequential: true
|
||||
/api/nl:
|
||||
post:
|
||||
operationId: planNaturalLanguageGitOpsAction
|
||||
summary: Convert natural language to a safe committed plan without executing V-level changes
|
||||
security:
|
||||
- bearerAuth: []
|
||||
requestBody:
|
||||
required: true
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/NLRequest'
|
||||
responses:
|
||||
'200':
|
||||
description: Safe GitOps plan
|
||||
'401':
|
||||
description: Unauthorized
|
||||
x-openai-isConsequential: true
|
||||
x-aios-schema-reconciliation:
|
||||
source_schema: docs/gitops/openapi-chatgpt-actions.yaml
|
||||
public_runtime_schema: docs/gitops/openapi-chatgpt-actions-public-runtime-2e599646.yaml
|
||||
trust_domain: online-gitops-task
|
||||
operation_count: 14
|
||||
public_action_import: true
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,67 @@
|
||||
#!/usr/bin/env python3
|
||||
from pathlib import Path
|
||||
import copy,hashlib,importlib.util,json,sys,yaml
|
||||
R=Path(__file__).resolve().parents[1];D=R/'docs/gitops';M={'get','post','put','patch','delete','head','options','trace'}
|
||||
N=['openapi-chatgpt-actions-governed-release.yaml','openapi-chatgpt-actions-online-gitops-task.yaml','openapi-chatgpt-actions-online-agent-task.yaml']
|
||||
def die(s):raise AssertionError(s)
|
||||
def load(p):
|
||||
x=yaml.safe_load(Path(p).read_text());
|
||||
if not isinstance(x,dict):die('yaml mapping required:'+str(p))
|
||||
return x
|
||||
def op(d,label):
|
||||
r={}
|
||||
for route,ms in d.get('paths',{}).items():
|
||||
if not isinstance(ms,dict) or not isinstance(route,str) or not route.startswith('/'):die(label+': paths')
|
||||
for method,x in ms.items():
|
||||
if method.lower() in M:
|
||||
if not isinstance(x,dict) or not x.get('operationId'):die(label+': operationId')
|
||||
i=x['operationId'];
|
||||
if i in r:die(label+': duplicate '+i)
|
||||
r[i]={'route':route,'method':method.upper(),'security':copy.deepcopy(x.get('security',d.get('security',[])))}
|
||||
return r
|
||||
def st(x):return json.dumps(x,sort_keys=True,separators=(',',':'))
|
||||
def refs(x,c,label):
|
||||
if isinstance(x,dict):
|
||||
if isinstance(x.get('$ref'),str) and x['$ref'].startswith('#/components/'):
|
||||
z={'components':c}
|
||||
for k in x['$ref'][2:].split('/'):
|
||||
if not isinstance(z,dict) or k not in z:die(label+': unresolved '+x['$ref'])
|
||||
z=z[k]
|
||||
for v in x.values():refs(v,c,label)
|
||||
elif isinstance(x,list):
|
||||
for v in x:refs(v,c,label)
|
||||
def main():
|
||||
s,p=load(D/'openapi-chatgpt-actions.yaml'),load(D/'openapi-chatgpt-actions-public-runtime-2e599646.yaml');so,po=op(s,'source'),op(p,'public')
|
||||
if (len(so),len(po))!=(31,30) or s.get('servers')!=p.get('servers'):die('input count/server drift')
|
||||
for i in so.keys()&po.keys():
|
||||
if any(st(so[i][k])!=st(po[i][k]) for k in ('route','method','security')):die('common drift '+i)
|
||||
u={**so,**po}
|
||||
if len(u)!=46:die('union count')
|
||||
z={}
|
||||
for n in N:
|
||||
d=load(D/n)
|
||||
if not str(d.get('openapi','')).startswith('3.') or d.get('servers')!=s['servers'] or not isinstance(d.get('components'),dict):die('openapi structure '+n)
|
||||
refs(d.get('paths'),d['components'],n); q=op(d,n)
|
||||
if not 1<=len(q)<=30 or z.keys()&q.keys():die('limit/duplicate '+n)
|
||||
z.update(q)
|
||||
if set(z)!=set(u):die('split coverage')
|
||||
for i in u:
|
||||
if any(st(z[i][k])!=st(u[i][k]) for k in ('route','method','security')):die('route/auth '+i)
|
||||
m=json.loads((D/'chatgpt-action-schema-capability-manifest.json').read_text());r={x.get('operation_id'):x for x in m.get('operations',[]) if isinstance(x,dict)}
|
||||
if m.get('union_operation_count')!=46 or set(r)!=set(u):die('manifest coverage')
|
||||
for i,x in u.items():
|
||||
a=r[i]
|
||||
if a.get('server_route')!=x['route'] or a.get('method')!=x['method'] or st(a.get('declared_openapi_security'))!=st(x['security']):die('manifest route/auth '+i)
|
||||
if bool(a.get('source_origin'))!=(i in so) or bool(a.get('public_origin'))!=(i in po):die('manifest origins '+i)
|
||||
A={'createOnlineAgentTask','registerOnlineAgent','getOnlineAgentTask','getOnlineAgentTaskEvents','verifyOnlineAgentTask','cancelOnlineAgentTask'}
|
||||
if set(m.get('scope_provenance',{}).get('agent_task_control',{}).get('operation_ids',[]))!=A:die('agent ids')
|
||||
for i in A:
|
||||
if r[i].get('required_scope')!='agent-task:control' or r[i].get('schema')!='docs/gitops/openapi-chatgpt-actions-online-agent-task.yaml':die('agent scope '+i)
|
||||
if importlib.util.find_spec('openapi_spec_validator'):
|
||||
from openapi_spec_validator import validate_spec
|
||||
for n in N:validate_spec(load(D/n))
|
||||
print('formal_validator=PASS')
|
||||
else:print('formal_validator=NOT_INSTALLED')
|
||||
print('yaml_parse=PASS');print('openapi_structure=PASS');print('source_coverage=PASS');print('public_runtime_coverage=PASS');print('union_route_auth_reconciliation=PASS');print('capability_manifest=PASS');print('schema_split_validation=PASS')
|
||||
try:main()
|
||||
except (AssertionError,OSError,ValueError,yaml.YAMLError,json.JSONDecodeError) as e:print('schema_split_validation=FAIL: '+str(e),file=sys.stderr);sys.exit(1)
|
||||
@@ -0,0 +1,9 @@
|
||||
import subprocess,sys,unittest
|
||||
from pathlib import Path
|
||||
R=Path(__file__).resolve().parents[1]
|
||||
class SchemaSplitTest(unittest.TestCase):
|
||||
def test_reconciliation(self):
|
||||
x=subprocess.run([sys.executable,str(R/'scripts/validate_chatgpt_action_schema_split.py')],cwd=R,text=True,capture_output=True)
|
||||
self.assertEqual(x.returncode,0,x.stdout+x.stderr)
|
||||
for s in ('source_coverage=PASS','public_runtime_coverage=PASS','union_route_auth_reconciliation=PASS','schema_split_validation=PASS'):self.assertIn(s,x.stdout)
|
||||
if __name__=='__main__':unittest.main()
|
||||
Reference in New Issue
Block a user