You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: schemas/animus-queue-protocol/QueueEnqueueRequest.json
+16Lines changed: 16 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -4,6 +4,22 @@
4
4
"description": "Request for [`METHOD_QUEUE_ENQUEUE`].",
5
5
"type": "object",
6
6
"properties": {
7
+
"expire_after_secs": {
8
+
"description": "Optional grace window, in seconds, applied after `run_at`. If a\ndeferred entry is still pending past `run_at + expire_after_secs`\n(e.g. the daemon was down through its window), the plugin drops it\non its next sweep instead of dispatching late. `None` means never\nexpire — always fire late whenever the daemon next leases. Ignored\nwhen `run_at` is `None`.",
9
+
"type": [
10
+
"integer",
11
+
"null"
12
+
],
13
+
"format": "uint64",
14
+
"minimum": 0
15
+
},
16
+
"run_at": {
17
+
"description": "Optional RFC 3339 earliest-dispatch time. When set and in the\nfuture, the entry is enqueued as deferred: it stays in\n[`status::PENDING`] but is excluded from [`METHOD_QUEUE_LEASE`]\nuntil this instant passes. `None` means dispatch as soon as\ncapacity allows (today's behavior).",
18
+
"type": [
19
+
"string",
20
+
"null"
21
+
]
22
+
},
7
23
"subject_dispatch": {
8
24
"description": "Full dispatch envelope to enqueue.",
Copy file name to clipboardExpand all lines: schemas/animus-queue-protocol/QueueEnqueueResponse.json
+8-1Lines changed: 8 additions & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -5,7 +5,7 @@
5
5
"type": "object",
6
6
"properties": {
7
7
"enqueued": {
8
-
"description": "`true` if a new entry was created. `false` if the dispatch was\nrejected as a duplicate of an existing pending/assigned entry\n(idempotent enqueue).",
8
+
"description": "`true` if a new entry was created. For immediate (non-deferred)\nenqueues this stays idempotent: `false` if the dispatch was\nrejected as a duplicate of an existing pending/assigned entry.\nDeferred enqueues (`run_at` set) are always created — scheduling\nthe same subject for distinct times is legitimate — so `enqueued`\nis `true` and any collision is surfaced via `warning` instead.",
9
9
"type": "boolean"
10
10
},
11
11
"entry_id": {
@@ -15,6 +15,13 @@
15
15
"subject_id": {
16
16
"description": "Convenience: the subject id from the dispatch envelope.",
17
17
"type": "string"
18
+
},
19
+
"warning": {
20
+
"description": "Non-fatal advisory. Set when the enqueue succeeded but the caller\nmay want to reconsider — most commonly that another pending,\ndeferred, or assigned entry already exists for this subject. The\nduplicate is still enqueued; the caller (agent or operator) decides\nwhether to drop it. `None` when there is nothing to flag.",
Copy file name to clipboardExpand all lines: schemas/animus-queue-protocol/QueueEntry.json
+16Lines changed: 16 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -19,13 +19,29 @@
19
19
"description": "Stable entry id (unique within the project queue). Mutation calls\ntarget this id.",
20
20
"type": "string"
21
21
},
22
+
"expire_after_secs": {
23
+
"description": "Grace window in seconds after `run_at` before the entry is expired\nand dropped on sweep. `None` means never expire. Ignored when\n`run_at` is `None`.",
24
+
"type": [
25
+
"integer",
26
+
"null"
27
+
],
28
+
"format": "uint64",
29
+
"minimum": 0
30
+
},
22
31
"held_at": {
23
32
"description": "RFC 3339 hold timestamp.",
24
33
"type": [
25
34
"string",
26
35
"null"
27
36
]
28
37
},
38
+
"run_at": {
39
+
"description": "RFC 3339 earliest-dispatch time for a deferred entry. While `now`\nis before this instant the entry is pending-but-not-leasable.\n`None` for ordinary (dispatch-ASAP) entries.",
Copy file name to clipboardExpand all lines: schemas/animus-queue-protocol/QueueLeaseResponse.json
+16Lines changed: 16 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -35,13 +35,29 @@
35
35
"description": "Stable entry id (unique within the project queue). Mutation calls\ntarget this id.",
36
36
"type": "string"
37
37
},
38
+
"expire_after_secs": {
39
+
"description": "Grace window in seconds after `run_at` before the entry is expired\nand dropped on sweep. `None` means never expire. Ignored when\n`run_at` is `None`.",
40
+
"type": [
41
+
"integer",
42
+
"null"
43
+
],
44
+
"format": "uint64",
45
+
"minimum": 0
46
+
},
38
47
"held_at": {
39
48
"description": "RFC 3339 hold timestamp.",
40
49
"type": [
41
50
"string",
42
51
"null"
43
52
]
44
53
},
54
+
"run_at": {
55
+
"description": "RFC 3339 earliest-dispatch time for a deferred entry. While `now`\nis before this instant the entry is pending-but-not-leasable.\n`None` for ordinary (dispatch-ASAP) entries.",
0 commit comments