1from apify_client import ApifyClient
2
3
4
5client = ApifyClient("<YOUR_API_TOKEN>")
6
7
8run_input = { "request": {
9 "graph": {
10 "nodes": [
11 {
12 "id": "planner",
13 "type": "agent",
14 },
15 {
16 "id": "worker",
17 "type": "agent",
18 },
19 {
20 "id": "payment",
21 "type": "effect",
22 },
23 ],
24 "edges": [
25 {
26 "from": "planner",
27 "to": "payment",
28 "mode": "DIRECT",
29 },
30 {
31 "from": "planner",
32 "to": "worker",
33 "mode": "DELEGATED",
34 },
35 {
36 "from": "worker",
37 "to": "payment",
38 "mode": "DIRECT",
39 },
40 {
41 "from": "planner",
42 "to": "payment",
43 "mode": "RETRY",
44 },
45 ],
46 },
47 "invariants": [{
48 "id": "spend-cap",
49 "effect": "payment",
50 "operator": "BOUND",
51 "field": "amount",
52 "comparison": "<=",
53 "value": 100,
54 "scope": "cumulative",
55 }],
56 "evidence": [
57 {
58 "invariant_id": "spend-cap",
59 "invariant_signature": "4d428aeec56889ddb78341d9c252df15e60131af38ce8c393bea6a30ef4a9606",
60 "surface": "payment",
61 "mode": "DIRECT",
62 "condition": "ABOVE_THRESHOLD",
63 "result": "PASS",
64 "witness_id": "test:DIRECT:ABOVE_THRESHOLD",
65 },
66 {
67 "invariant_id": "spend-cap",
68 "invariant_signature": "4d428aeec56889ddb78341d9c252df15e60131af38ce8c393bea6a30ef4a9606",
69 "surface": "payment",
70 "mode": "DELEGATED",
71 "condition": "AT_THRESHOLD",
72 "result": "PASS",
73 "witness_id": "test:DELEGATED:AT_THRESHOLD",
74 },
75 {
76 "invariant_id": "spend-cap",
77 "invariant_signature": "4d428aeec56889ddb78341d9c252df15e60131af38ce8c393bea6a30ef4a9606",
78 "surface": "payment",
79 "mode": "DIRECT",
80 "condition": "AT_THRESHOLD",
81 "result": "PASS",
82 "witness_id": "test:DIRECT:AT_THRESHOLD",
83 },
84 {
85 "invariant_id": "spend-cap",
86 "invariant_signature": "4d428aeec56889ddb78341d9c252df15e60131af38ce8c393bea6a30ef4a9606",
87 "surface": "payment",
88 "mode": "RETRY",
89 "condition": "AT_THRESHOLD",
90 "result": "PASS",
91 "witness_id": "test:RETRY:AT_THRESHOLD",
92 },
93 {
94 "invariant_id": "spend-cap",
95 "invariant_signature": "4d428aeec56889ddb78341d9c252df15e60131af38ce8c393bea6a30ef4a9606",
96 "surface": "payment",
97 "mode": "DELEGATED",
98 "condition": "BELOW_THRESHOLD",
99 "result": "PASS",
100 "witness_id": "test:DELEGATED:BELOW_THRESHOLD",
101 },
102 {
103 "invariant_id": "spend-cap",
104 "invariant_signature": "4d428aeec56889ddb78341d9c252df15e60131af38ce8c393bea6a30ef4a9606",
105 "surface": "payment",
106 "mode": "DIRECT",
107 "condition": "BELOW_THRESHOLD",
108 "result": "PASS",
109 "witness_id": "test:DIRECT:BELOW_THRESHOLD",
110 },
111 {
112 "invariant_id": "spend-cap",
113 "invariant_signature": "4d428aeec56889ddb78341d9c252df15e60131af38ce8c393bea6a30ef4a9606",
114 "surface": "payment",
115 "mode": "RETRY",
116 "condition": "BELOW_THRESHOLD",
117 "result": "PASS",
118 "witness_id": "test:RETRY:BELOW_THRESHOLD",
119 },
120 {
121 "invariant_id": "spend-cap",
122 "invariant_signature": "4d428aeec56889ddb78341d9c252df15e60131af38ce8c393bea6a30ef4a9606",
123 "surface": "payment",
124 "mode": "RETRY",
125 "condition": "MULTI_ACTION_BELOW",
126 "result": "PASS",
127 "witness_id": "test:RETRY:MULTI_ACTION_BELOW",
128 },
129 ],
130 } }
131
132
133run = client.actor("bono718/agent-invariant-coverage-gap-resolver").call(run_input=run_input)
134
135
136print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
137for item in client.dataset(run.default_dataset_id).iterate_items():
138 print(item)
139
140