fix: refresh checked workflow contract manifest

This commit is contained in:
lda
2026-09-09 19:34:17 +07:00 Verified
parent 5cd8d8c7e1
commit b7c5f4e0eb
2 changed files with 643 additions and 3 deletions
+640
View File
@@ -2516,6 +2516,21 @@
], ],
"type": "object" "type": "object"
}, },
"ListSchedulesResult": {
"description": "Schedule listing payload shared by the admin surface.",
"properties": {
"schedules": {
"items": {
"$ref": "#/components/schemas/ScheduleResult"
},
"type": "array"
}
},
"required": [
"schedules"
],
"type": "object"
},
"ListSourcesResult": { "ListSourcesResult": {
"description": "Cursor-paged compact source discovery result.", "description": "Cursor-paged compact source discovery result.",
"properties": { "properties": {
@@ -2874,6 +2889,52 @@
], ],
"type": "object" "type": "object"
}, },
"OccurrencePage": {
"description": "One occurrence-history page, optionally with a live pending row.\n\nMatches the schedule-store page shape (``occurrences``, ``total``,\n``cursor``, ``next_cursor``, ``limit``); see\n``WorkflowScheduleApi.list_schedule_occurrences`` for the pending-row\nsynthesis contract.",
"properties": {
"cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"limit": {
"type": "integer"
},
"next_cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"occurrences": {
"items": {
"additionalProperties": true,
"type": "object"
},
"type": "array"
},
"total": {
"type": "integer"
}
},
"required": [
"occurrences",
"total",
"cursor",
"next_cursor",
"limit"
],
"type": "object"
},
"OutputBinding": { "OutputBinding": {
"additionalProperties": false, "additionalProperties": false,
"description": "Map one node-local output path into one workflow state path.", "description": "Map one node-local output path into one workflow state path.",
@@ -3831,6 +3892,101 @@
], ],
"type": "object" "type": "object"
}, },
"ScheduleResult": {
"description": "JSON projection of one schedule definition.\n\nMirrors ``Schedule.model_dump(mode=\"json\")`` exactly; ``created_at`` and\n``updated_at`` are ISO strings in this projection.",
"properties": {
"blocked_reason": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"created_at": {
"type": "string"
},
"deleted": {
"type": "boolean"
},
"deployment_id": {
"type": "string"
},
"enabled": {
"type": "boolean"
},
"exhausted": {
"type": "boolean"
},
"id": {
"type": "string"
},
"input_bindings": {
"items": {
"additionalProperties": true,
"type": "object"
},
"type": "array"
},
"lateness_allowance_s": {
"type": "number"
},
"max_active_runs": {
"type": "integer"
},
"max_steps": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
]
},
"misfire": {
"type": "string"
},
"overlap": {
"type": "string"
},
"paused": {
"type": "boolean"
},
"revision": {
"type": "integer"
},
"trigger": {
"additionalProperties": true,
"type": "object"
},
"updated_at": {
"type": "string"
}
},
"required": [
"id",
"deployment_id",
"trigger",
"input_bindings",
"max_steps",
"overlap",
"misfire",
"max_active_runs",
"lateness_allowance_s",
"revision",
"enabled",
"paused",
"deleted",
"exhausted",
"blocked_reason",
"created_at",
"updated_at"
],
"type": "object"
},
"SchemaRef": { "SchemaRef": {
"additionalProperties": true, "additionalProperties": true,
"description": "JSON Schema object used at workflow and node boundaries.", "description": "JSON Schema object used at workflow and node boundaries.",
@@ -8647,6 +8803,7 @@
"anyOf": [ "anyOf": [
{ {
"enum": [ "enum": [
"admitted",
"completed", "completed",
"failed", "failed",
"interrupted" "interrupted"
@@ -8855,6 +9012,489 @@
} }
} }
}, },
{
"action": "create",
"errors": [
{
"$ref": "#/components/errors/5000"
}
],
"method": "workflow.schedules.create",
"namespace": [
"workflow",
"schedules"
],
"params": [
{
"name": "schedule_id",
"required": true,
"schema": {
"minLength": 1,
"type": "string"
}
},
{
"name": "deployment_id",
"required": true,
"schema": {
"minLength": 1,
"type": "string"
}
},
{
"name": "trigger",
"required": true,
"schema": {
"additionalProperties": true,
"type": "object"
}
},
{
"name": "input_bindings",
"required": false,
"schema": {
"items": {
"additionalProperties": true,
"type": "object"
},
"type": "array"
}
},
{
"name": "overlap",
"required": false,
"schema": {
"default": "skip",
"type": "string"
}
},
{
"name": "misfire",
"required": false,
"schema": {
"default": "skip",
"type": "string"
}
},
{
"name": "max_active_runs",
"required": false,
"schema": {
"default": 1,
"minimum": 1,
"type": "integer"
}
},
{
"name": "lateness_allowance_s",
"required": false,
"schema": {
"default": 60.0,
"minimum": 0,
"type": "number"
}
},
{
"name": "max_steps",
"required": false,
"schema": {
"anyOf": [
{
"minimum": 1,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional schedule step budget. The server default applies when omitted."
}
},
{
"name": "enabled",
"required": false,
"schema": {
"default": true,
"type": "boolean"
}
}
],
"result": {
"schema": {
"$ref": "#/components/schemas/ScheduleResult"
}
}
},
{
"action": "delete",
"errors": [
{
"$ref": "#/components/errors/5000"
}
],
"method": "workflow.schedules.delete",
"namespace": [
"workflow",
"schedules"
],
"params": [
{
"name": "schedule_id",
"required": true,
"schema": {
"minLength": 1,
"type": "string"
}
}
],
"result": {
"schema": {
"$ref": "#/components/schemas/ScheduleResult"
}
}
},
{
"action": "get",
"errors": [
{
"$ref": "#/components/errors/5000"
}
],
"method": "workflow.schedules.get",
"namespace": [
"workflow",
"schedules"
],
"params": [
{
"name": "schedule_id",
"required": true,
"schema": {
"minLength": 1,
"type": "string"
}
}
],
"result": {
"schema": {
"$ref": "#/components/schemas/ScheduleResult"
}
}
},
{
"action": "list",
"errors": [
{
"$ref": "#/components/errors/5000"
}
],
"method": "workflow.schedules.list",
"namespace": [
"workflow",
"schedules"
],
"params": [
{
"name": "include_deleted",
"required": false,
"schema": {
"default": false,
"type": "boolean"
}
}
],
"result": {
"schema": {
"$ref": "#/components/schemas/ListSchedulesResult"
}
}
},
{
"action": "list",
"errors": [
{
"$ref": "#/components/errors/5000"
}
],
"method": "workflow.schedules.occurrences.list",
"namespace": [
"workflow",
"schedules",
"occurrences"
],
"params": [
{
"name": "schedule_id",
"required": true,
"schema": {
"minLength": 1,
"type": "string"
}
},
{
"name": "cursor",
"required": false,
"schema": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null
}
},
{
"name": "limit",
"required": false,
"schema": {
"default": 50,
"maximum": 100,
"minimum": 1,
"type": "integer"
}
}
],
"result": {
"schema": {
"$ref": "#/components/schemas/OccurrencePage"
}
}
},
{
"action": "pause",
"errors": [
{
"$ref": "#/components/errors/5000"
}
],
"method": "workflow.schedules.pause",
"namespace": [
"workflow",
"schedules"
],
"params": [
{
"name": "schedule_id",
"required": true,
"schema": {
"minLength": 1,
"type": "string"
}
}
],
"result": {
"schema": {
"$ref": "#/components/schemas/ScheduleResult"
}
}
},
{
"action": "resume",
"errors": [
{
"$ref": "#/components/errors/5000"
}
],
"method": "workflow.schedules.resume",
"namespace": [
"workflow",
"schedules"
],
"params": [
{
"name": "schedule_id",
"required": true,
"schema": {
"minLength": 1,
"type": "string"
}
}
],
"result": {
"schema": {
"$ref": "#/components/schemas/ScheduleResult"
}
}
},
{
"action": "update",
"errors": [
{
"$ref": "#/components/errors/5000"
}
],
"method": "workflow.schedules.update",
"namespace": [
"workflow",
"schedules"
],
"params": [
{
"name": "schedule_id",
"required": true,
"schema": {
"minLength": 1,
"type": "string"
}
},
{
"name": "expected_revision",
"required": true,
"schema": {
"type": "integer"
}
},
{
"name": "deployment_id",
"required": false,
"schema": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null
}
},
{
"name": "trigger",
"required": false,
"schema": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null
}
},
{
"name": "input_bindings",
"required": false,
"schema": {
"anyOf": [
{
"items": {
"additionalProperties": true,
"type": "object"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null
}
},
{
"name": "overlap",
"required": false,
"schema": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null
}
},
{
"name": "misfire",
"required": false,
"schema": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null
}
},
{
"name": "max_active_runs",
"required": false,
"schema": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null
}
},
{
"name": "lateness_allowance_s",
"required": false,
"schema": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null
}
},
{
"name": "max_steps",
"required": false,
"schema": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null
}
},
{
"name": "enabled",
"required": false,
"schema": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null
}
}
],
"result": {
"schema": {
"$ref": "#/components/schemas/ScheduleResult"
}
}
},
{ {
"action": "diagnose", "action": "diagnose",
"errors": [ "errors": [
+3 -3
View File
@@ -90,9 +90,9 @@ def test_generates_the_complete_real_workflow_contract() -> None:
manifest = generate_manifest() manifest = generate_manifest()
schemas = manifest["components"]["schemas"] schemas = manifest["components"]["schemas"]
assert len(manifest["operations"]) == 72 assert len(manifest["operations"]) == 80
assert len({operation["method"] for operation in manifest["operations"]}) == 72 assert len({operation["method"] for operation in manifest["operations"]}) == 80
assert len(schemas) == 141 assert len(schemas) == 144
assert len(manifest["components"]["errors"]) == 1 assert len(manifest["components"]["errors"]) == 1
assert all( assert all(
set(operation["result"]["schema"]) == {"$ref"} set(operation["result"]["schema"]) == {"$ref"}