Implement Dispatcher v0.4 local state and controls

This commit is contained in:
2026-09-27 22:45:51 +08:00
parent 7653a4cea8
commit 3ea5f34583
68 changed files with 2375 additions and 460 deletions
@@ -0,0 +1,11 @@
{
"schema_version": "call-execute.v0.4-proposal",
"dispatcher_id": "11111111-1111-4111-8111-111111111111",
"tenant_id": "33333333-3333-4333-8333-333333333333",
"tenant_key": "tenant-A",
"trace_id": "aaaaaaaa-aaaa-4aaa-8aaa-aaaaaaaaaaaa",
"command_id": "bbbbbbbb-bbbb-4bbb-8bbb-bbbbbbbbbbbb",
"issued_at": "2026-09-27T02:00:00Z",
"command_type": "call.execute",
"payload": {"task_id": "a02", "callee": "15830461047"}
}
@@ -0,0 +1,12 @@
{
"schema_version": "call-execute.v0.4-proposal",
"dispatcher_id": "11111111-1111-4111-8111-111111111111",
"tenant_id": "33333333-3333-4333-8333-333333333333",
"tenant_key": "tenant-A",
"trace_id": "44444444-4444-4444-8444-444444444444",
"command_id": "77777777-7777-4777-8777-777777777777",
"issued_at": "2026-09-20T01:00:00Z",
"not_after": "2026-09-20T01:05:00Z",
"command_type": "call.execute",
"payload": {"task_id": "a01", "callee": "15003164745"}
}
@@ -0,0 +1,11 @@
{
"schema_version": "call-execute.v0.4-proposal",
"dispatcher_id": "11111111-1111-4111-8111-111111111111",
"tenant_id": "33333333-3333-4333-8333-333333333333",
"tenant_key": "tenant-A",
"trace_id": "44444444-4444-4444-8444-444444444444",
"command_id": "77777777-7777-4777-8777-777777777777",
"issued_at": "2026-09-20T01:00:00Z",
"command_type": "call.execute",
"payload": {"task_id": "a01", "callee": "15003164745"}
}
@@ -0,0 +1,11 @@
{
"schema_version": "call-execute.v0.4-proposal",
"dispatcher_id": "11111111-1111-4111-8111-111111111111",
"tenant_id": "33333333-3333-4333-8333-333333333333",
"tenant_key": "tenant-A",
"trace_id": "88888888-8888-4888-8888-888888888888",
"command_id": "99999999-9999-4999-8999-999999999999",
"issued_at": "2026-09-27T01:00:00Z",
"command_type": "call.execute",
"payload": {"task_id": "a01", "callee": "15003164745"}
}
@@ -0,0 +1,10 @@
{
"schema_version": "task-control.v0.4-proposal",
"dispatcher_id": "11111111-1111-4111-8111-111111111111",
"tenant_id": "33333333-3333-4333-8333-333333333333",
"tenant_key": "tenant-A",
"trace_id": "44444444-4444-4444-8444-444444444444",
"issued_at": "2026-09-27T01:00:00Z",
"command_type": "task.control",
"payload": {"task_id": "a01", "action": "pause", "active_call_policy": "drain", "reason": "paused by SaaS"}
}
@@ -0,0 +1,11 @@
{
"schema_version": "task-control.v0.4-proposal",
"dispatcher_id": "11111111-1111-4111-8111-111111111111",
"tenant_id": "33333333-3333-4333-8333-333333333333",
"tenant_key": "tenant-A",
"trace_id": "44444444-4444-4444-8444-444444444444",
"issued_at": "2026-09-20T01:00:00Z",
"not_after": "2026-09-20T01:05:00Z",
"command_type": "task.control",
"payload": {"task_id": "a01", "action": "stop", "reason": "stopped by SaaS"}
}
@@ -0,0 +1,10 @@
{
"schema_version": "task-control.v0.4-proposal",
"dispatcher_id": "11111111-1111-4111-8111-111111111111",
"tenant_id": "33333333-3333-4333-8333-333333333333",
"tenant_key": "tenant-A",
"trace_id": "44444444-4444-4444-8444-444444444444",
"issued_at": "2026-09-27T01:00:00Z",
"command_type": "task.control",
"payload": {"task_id": "a01", "action": "pause", "reason": "paused by SaaS"}
}
@@ -0,0 +1,10 @@
{
"schema_version": "task-control.v0.4-proposal",
"dispatcher_id": "11111111-1111-4111-8111-111111111111",
"tenant_id": "33333333-3333-4333-8333-333333333333",
"tenant_key": "tenant-A",
"trace_id": "66666666-6666-4666-8666-666666666666",
"issued_at": "2026-09-27T01:02:00Z",
"command_type": "task.control",
"payload": {"task_id": "a01", "action": "resume", "reason": "resumed by SaaS"}
}
@@ -0,0 +1,10 @@
{
"schema_version": "task-control.v0.4-proposal",
"dispatcher_id": "11111111-1111-4111-8111-111111111111",
"tenant_id": "33333333-3333-4333-8333-333333333333",
"tenant_key": "tenant-A",
"trace_id": "55555555-5555-4555-8555-555555555555",
"issued_at": "2026-09-27T01:01:00Z",
"command_type": "task.control",
"payload": {"task_id": "a01", "action": "stop", "reason": "stopped by SaaS"}
}
@@ -0,0 +1,9 @@
{
"schema_version": "task-discovery.v0.4-proposal",
"mode": "changes",
"dispatcher_id": "11111111-1111-4111-8111-111111111111",
"tasks": [
{"task_id": "a01", "tenant_id": "tenant-1", "tenant_key": "tenant-A", "status": "removed", "task_revision": 6}
],
"next_cursor": "43"
}
@@ -0,0 +1,8 @@
{
"schema_version": "task-discovery.v0.4-proposal",
"resource": "error",
"error": {
"code": "snapshot_unavailable",
"message": "Snapshot is no longer available; restart full discovery with admission closed"
}
}
@@ -0,0 +1,10 @@
{
"schema_version": "task-discovery.v0.4-proposal",
"mode": "snapshot",
"dispatcher_id": "11111111-1111-4111-8111-111111111111",
"snapshot_id": "22222222-2222-4222-8222-222222222222",
"watermark": "42",
"tasks": [],
"next_page_token": null,
"unexpected_unapproved_field": true
}
@@ -0,0 +1,11 @@
{
"schema_version": "task-discovery.v0.4-proposal",
"mode": "snapshot",
"dispatcher_id": "11111111-1111-4111-8111-111111111111",
"snapshot_id": "22222222-2222-4222-8222-222222222222",
"watermark": "42",
"tasks": [
{"task_id": "a01", "tenant_id": "tenant-1", "tenant_key": "tenant-A", "status": "running", "task_revision": 5}
],
"next_page_token": "page-2"
}
@@ -0,0 +1,11 @@
{
"schema_version": "task-discovery.v0.4-proposal",
"mode": "snapshot",
"dispatcher_id": "11111111-1111-4111-8111-111111111111",
"snapshot_id": "22222222-2222-4222-8222-222222222222",
"watermark": "42",
"tasks": [
{"task_id": "a02", "tenant_id": "tenant-1", "tenant_key": "tenant-A", "status": "paused", "task_revision": 3}
],
"next_page_token": null
}