vis-agent 0.2.38.dev7473__tar.gz → 0.2.38.dev7554__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/PKG-INFO +1 -1
  2. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/contracts/fixtures/activity-cases.json +498 -0
  3. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/contracts/fixtures/activity-copy.json +47 -3
  4. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/contracts/schema/activity.json +66 -0
  5. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/contracts/schema/agents.json +10 -4
  6. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/contracts/schema/gateway.json +43 -1
  7. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/contracts/schema/toggle.json +25 -7
  8. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/pyproject.toml +1 -1
  9. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/src/blockether/vis/activity.py +6 -0
  10. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/src/blockether/vis/engine/_council.py +3 -2
  11. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/src/blockether/vis/extension.py +186 -9
  12. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/src/blockether/vis/extension_package.py +47 -1
  13. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/tests/test_agents.py +2 -2
  14. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/tests/test_declarations.py +44 -0
  15. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/tests/test_engine.py +2 -2
  16. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/tests/test_extension_package.py +45 -0
  17. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/tests/test_tools.py +70 -0
  18. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/.gitignore +0 -0
  19. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/LICENSE +0 -0
  20. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/README.md +0 -0
  21. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/contracts/fixtures/activity-arguments.json +0 -0
  22. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/contracts/fixtures/activity-execution.json +0 -0
  23. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/contracts/fixtures/activity-groups.json +0 -0
  24. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/contracts/fixtures/activity-read-session.json +0 -0
  25. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/contracts/fixtures/activity-reads.json +0 -0
  26. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/contracts/fixtures/activity-results.json +0 -0
  27. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/contracts/fixtures/activity-tables.json +0 -0
  28. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/contracts/fixtures/activity.json +0 -0
  29. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/contracts/fixtures/diff.json +0 -0
  30. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/contracts/fixtures/live-primitives.json +0 -0
  31. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/contracts/fixtures/session-health.json +0 -0
  32. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/contracts/fixtures/view.json +0 -0
  33. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/contracts/schema/automations.json +0 -0
  34. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/contracts/schema/common.json +0 -0
  35. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/contracts/schema/config.json +0 -0
  36. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/contracts/schema/content.json +0 -0
  37. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/contracts/schema/council.json +0 -0
  38. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/contracts/schema/diff.json +0 -0
  39. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/contracts/schema/improve.json +0 -0
  40. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/contracts/schema/provider.json +0 -0
  41. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/contracts/schema/rooms.json +0 -0
  42. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/contracts/schema/symbol.json +0 -0
  43. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/contracts/schema/view.json +0 -0
  44. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/examples/greeter/tests/test_greeter.py +0 -0
  45. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/hatch_build.py +0 -0
  46. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/src/blockether/vis/__init__.py +0 -0
  47. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/src/blockether/vis/_contracts.py +0 -0
  48. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/src/blockether/vis/_outside.py +0 -0
  49. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/src/blockether/vis/_wire.py +0 -0
  50. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/src/blockether/vis/engine/__init__.py +0 -0
  51. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/src/blockether/vis/engine/_agent.py +0 -0
  52. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/src/blockether/vis/engine/_agents.py +0 -0
  53. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/src/blockether/vis/engine/_client.py +0 -0
  54. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/src/blockether/vis/engine/_extensions.py +0 -0
  55. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/src/blockether/vis/engine/_local.py +0 -0
  56. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/src/blockether/vis/py.typed +0 -0
  57. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/src/blockether/vis/rooms.py +0 -0
  58. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/src/blockether/vis/views.py +0 -0
  59. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/tests/conftest.py +0 -0
  60. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/tests/test_activity.py +0 -0
  61. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/tests/test_agent.py +0 -0
  62. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/tests/test_agent_extension_lifecycle.py +0 -0
  63. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/tests/test_agent_extensions.py +0 -0
  64. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/tests/test_api_guides.py +0 -0
  65. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/tests/test_authoring.py +0 -0
  66. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/tests/test_catalog.py +0 -0
  67. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/tests/test_catalog_recipe.py +0 -0
  68. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/tests/test_ci_report_recipe.py +0 -0
  69. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/tests/test_client.py +0 -0
  70. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/tests/test_client_extensions_engine.py +0 -0
  71. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/tests/test_code_quality_recipe.py +0 -0
  72. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/tests/test_contracts.py +0 -0
  73. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/tests/test_council.py +0 -0
  74. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/tests/test_engine_docstrings.py +0 -0
  75. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/tests/test_extension_reference.py +0 -0
  76. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/tests/test_gateway_performance.py +0 -0
  77. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/tests/test_goals.py +0 -0
  78. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/tests/test_live_primitives.py +0 -0
  79. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/tests/test_live_wait.py +0 -0
  80. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/tests/test_local.py +0 -0
  81. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/tests/test_method_typing.py +0 -0
  82. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/tests/test_monitor_recipe.py +0 -0
  83. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/tests/test_namespace.py +0 -0
  84. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/tests/test_outside.py +0 -0
  85. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/tests/test_providers.py +0 -0
  86. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/tests/test_record_arguments.py +0 -0
  87. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/tests/test_registration.py +0 -0
  88. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/tests/test_repair_hooks.py +0 -0
  89. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/tests/test_result_sequence.py +0 -0
  90. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/tests/test_rooms.py +0 -0
  91. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/tests/test_scoped_settings.py +0 -0
  92. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/tests/test_sdk_bootstrap.py +0 -0
  93. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/tests/test_sdk_guide.py +0 -0
  94. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/tests/test_sdk_typing.py +0 -0
  95. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/tests/test_structured_live.py +0 -0
  96. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/tests/test_symbol_contract.py +0 -0
  97. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/tests/test_testing.py +0 -0
  98. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/tests/test_text_list_arguments.py +0 -0
  99. {vis_agent-0.2.38.dev7473 → vis_agent-0.2.38.dev7554}/tests/test_views.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: vis-agent
3
- Version: 0.2.38.dev7473
3
+ Version: 0.2.38.dev7554
4
4
  Summary: The Vis Python SDK — author extensions and control local or remote engines.
5
5
  Project-URL: Homepage, https://vis.blockether.com
6
6
  Project-URL: Documentation, https://vis.blockether.com
@@ -2148,5 +2148,503 @@
2148
2148
  }
2149
2149
  ]
2150
2150
  }
2151
+ },
2152
+ {
2153
+ "name": "terminal-block",
2154
+ "valid": true,
2155
+ "projection": {
2156
+ "state": "succeeded",
2157
+ "counts": {
2158
+ "running": 0,
2159
+ "succeeded": 1,
2160
+ "failed": 0,
2161
+ "cancelled": 0
2162
+ },
2163
+ "rows": [
2164
+ {
2165
+ "id": "call-1",
2166
+ "sequence": 1,
2167
+ "operation": "shell",
2168
+ "presenter": "shell",
2169
+ "signal": "verification",
2170
+ "state": "succeeded",
2171
+ "summary": "npm test",
2172
+ "duration_ms": 900,
2173
+ "resources": [],
2174
+ "evidence": [],
2175
+ "presentation": {
2176
+ "headline": "npm test",
2177
+ "summary": "",
2178
+ "aside": "~/vis · exit 1",
2179
+ "outcome": "Tests: 41 passed",
2180
+ "content": [
2181
+ {
2182
+ "type": "terminal",
2183
+ "command": [
2184
+ "cd apps/web",
2185
+ "&& npm test",
2186
+ "| tail -3"
2187
+ ],
2188
+ "lines": [
2189
+ {
2190
+ "text": "Tests: 41 passed",
2191
+ "stream": "stdout"
2192
+ },
2193
+ {
2194
+ "text": "warning: slow test",
2195
+ "stream": "stderr"
2196
+ }
2197
+ ],
2198
+ "omitted_lines": 12,
2199
+ "exit": 1
2200
+ }
2201
+ ],
2202
+ "verdict": "failed"
2203
+ }
2204
+ }
2205
+ ]
2206
+ }
2207
+ },
2208
+ {
2209
+ "name": "terminal-minimal",
2210
+ "valid": true,
2211
+ "projection": {
2212
+ "state": "succeeded",
2213
+ "counts": {
2214
+ "running": 0,
2215
+ "succeeded": 1,
2216
+ "failed": 0,
2217
+ "cancelled": 0
2218
+ },
2219
+ "rows": [
2220
+ {
2221
+ "id": "call-1",
2222
+ "sequence": 1,
2223
+ "operation": "shell",
2224
+ "presenter": "shell",
2225
+ "signal": "verification",
2226
+ "state": "succeeded",
2227
+ "summary": "npm test",
2228
+ "duration_ms": 900,
2229
+ "resources": [],
2230
+ "evidence": [],
2231
+ "presentation": {
2232
+ "headline": "npm test",
2233
+ "summary": "",
2234
+ "aside": "~/vis · exit 1",
2235
+ "outcome": "Tests: 41 passed",
2236
+ "content": [
2237
+ {
2238
+ "type": "terminal",
2239
+ "command": [
2240
+ "cd apps/web",
2241
+ "&& npm test",
2242
+ "| tail -3"
2243
+ ],
2244
+ "lines": [
2245
+ {
2246
+ "text": "Tests: 41 passed",
2247
+ "stream": "stdout"
2248
+ },
2249
+ {
2250
+ "text": "warning: slow test",
2251
+ "stream": "stderr"
2252
+ }
2253
+ ]
2254
+ }
2255
+ ],
2256
+ "verdict": "failed"
2257
+ }
2258
+ }
2259
+ ]
2260
+ }
2261
+ },
2262
+ {
2263
+ "name": "terminal-rejects-empty-command",
2264
+ "valid": false,
2265
+ "projection": {
2266
+ "state": "succeeded",
2267
+ "counts": {
2268
+ "running": 0,
2269
+ "succeeded": 1,
2270
+ "failed": 0,
2271
+ "cancelled": 0
2272
+ },
2273
+ "rows": [
2274
+ {
2275
+ "id": "call-1",
2276
+ "sequence": 1,
2277
+ "operation": "shell",
2278
+ "presenter": "shell",
2279
+ "signal": "verification",
2280
+ "state": "succeeded",
2281
+ "summary": "npm test",
2282
+ "duration_ms": 900,
2283
+ "resources": [],
2284
+ "evidence": [],
2285
+ "presentation": {
2286
+ "headline": "npm test",
2287
+ "summary": "",
2288
+ "aside": "~/vis · exit 1",
2289
+ "outcome": "Tests: 41 passed",
2290
+ "content": [
2291
+ {
2292
+ "type": "terminal",
2293
+ "command": [],
2294
+ "lines": [
2295
+ {
2296
+ "text": "Tests: 41 passed",
2297
+ "stream": "stdout"
2298
+ },
2299
+ {
2300
+ "text": "warning: slow test",
2301
+ "stream": "stderr"
2302
+ }
2303
+ ],
2304
+ "omitted_lines": 12,
2305
+ "exit": 1
2306
+ }
2307
+ ],
2308
+ "verdict": "failed"
2309
+ }
2310
+ }
2311
+ ]
2312
+ }
2313
+ },
2314
+ {
2315
+ "name": "terminal-rejects-unknown-stream",
2316
+ "valid": false,
2317
+ "projection": {
2318
+ "state": "succeeded",
2319
+ "counts": {
2320
+ "running": 0,
2321
+ "succeeded": 1,
2322
+ "failed": 0,
2323
+ "cancelled": 0
2324
+ },
2325
+ "rows": [
2326
+ {
2327
+ "id": "call-1",
2328
+ "sequence": 1,
2329
+ "operation": "shell",
2330
+ "presenter": "shell",
2331
+ "signal": "verification",
2332
+ "state": "succeeded",
2333
+ "summary": "npm test",
2334
+ "duration_ms": 900,
2335
+ "resources": [],
2336
+ "evidence": [],
2337
+ "presentation": {
2338
+ "headline": "npm test",
2339
+ "summary": "",
2340
+ "aside": "~/vis · exit 1",
2341
+ "outcome": "Tests: 41 passed",
2342
+ "content": [
2343
+ {
2344
+ "type": "terminal",
2345
+ "command": [
2346
+ "cd apps/web",
2347
+ "&& npm test",
2348
+ "| tail -3"
2349
+ ],
2350
+ "lines": [
2351
+ {
2352
+ "text": "Tests: 41 passed",
2353
+ "stream": "stdin"
2354
+ },
2355
+ {
2356
+ "text": "warning: slow test",
2357
+ "stream": "stderr"
2358
+ }
2359
+ ],
2360
+ "omitted_lines": 12,
2361
+ "exit": 1
2362
+ }
2363
+ ],
2364
+ "verdict": "failed"
2365
+ }
2366
+ }
2367
+ ]
2368
+ }
2369
+ },
2370
+ {
2371
+ "name": "terminal-line-rejects-newline",
2372
+ "valid": false,
2373
+ "projection": {
2374
+ "state": "succeeded",
2375
+ "counts": {
2376
+ "running": 0,
2377
+ "succeeded": 1,
2378
+ "failed": 0,
2379
+ "cancelled": 0
2380
+ },
2381
+ "rows": [
2382
+ {
2383
+ "id": "call-1",
2384
+ "sequence": 1,
2385
+ "operation": "shell",
2386
+ "presenter": "shell",
2387
+ "signal": "verification",
2388
+ "state": "succeeded",
2389
+ "summary": "npm test",
2390
+ "duration_ms": 900,
2391
+ "resources": [],
2392
+ "evidence": [],
2393
+ "presentation": {
2394
+ "headline": "npm test",
2395
+ "summary": "",
2396
+ "aside": "~/vis · exit 1",
2397
+ "outcome": "Tests: 41 passed",
2398
+ "content": [
2399
+ {
2400
+ "type": "terminal",
2401
+ "command": [
2402
+ "cd apps/web",
2403
+ "&& npm test",
2404
+ "| tail -3"
2405
+ ],
2406
+ "lines": [
2407
+ {
2408
+ "text": "a\nb",
2409
+ "stream": "stdout"
2410
+ },
2411
+ {
2412
+ "text": "warning: slow test",
2413
+ "stream": "stderr"
2414
+ }
2415
+ ],
2416
+ "omitted_lines": 12,
2417
+ "exit": 1
2418
+ }
2419
+ ],
2420
+ "verdict": "failed"
2421
+ }
2422
+ }
2423
+ ]
2424
+ }
2425
+ },
2426
+ {
2427
+ "name": "terminal-rejects-negative-omitted",
2428
+ "valid": false,
2429
+ "projection": {
2430
+ "state": "succeeded",
2431
+ "counts": {
2432
+ "running": 0,
2433
+ "succeeded": 1,
2434
+ "failed": 0,
2435
+ "cancelled": 0
2436
+ },
2437
+ "rows": [
2438
+ {
2439
+ "id": "call-1",
2440
+ "sequence": 1,
2441
+ "operation": "shell",
2442
+ "presenter": "shell",
2443
+ "signal": "verification",
2444
+ "state": "succeeded",
2445
+ "summary": "npm test",
2446
+ "duration_ms": 900,
2447
+ "resources": [],
2448
+ "evidence": [],
2449
+ "presentation": {
2450
+ "headline": "npm test",
2451
+ "summary": "",
2452
+ "aside": "~/vis · exit 1",
2453
+ "outcome": "Tests: 41 passed",
2454
+ "content": [
2455
+ {
2456
+ "type": "terminal",
2457
+ "command": [
2458
+ "cd apps/web",
2459
+ "&& npm test",
2460
+ "| tail -3"
2461
+ ],
2462
+ "lines": [
2463
+ {
2464
+ "text": "Tests: 41 passed",
2465
+ "stream": "stdout"
2466
+ },
2467
+ {
2468
+ "text": "warning: slow test",
2469
+ "stream": "stderr"
2470
+ }
2471
+ ],
2472
+ "omitted_lines": -1,
2473
+ "exit": 1
2474
+ }
2475
+ ],
2476
+ "verdict": "failed"
2477
+ }
2478
+ }
2479
+ ]
2480
+ }
2481
+ },
2482
+ {
2483
+ "name": "aside-rejects-newline",
2484
+ "valid": false,
2485
+ "projection": {
2486
+ "state": "succeeded",
2487
+ "counts": {
2488
+ "running": 0,
2489
+ "succeeded": 1,
2490
+ "failed": 0,
2491
+ "cancelled": 0
2492
+ },
2493
+ "rows": [
2494
+ {
2495
+ "id": "call-1",
2496
+ "sequence": 1,
2497
+ "operation": "shell",
2498
+ "presenter": "shell",
2499
+ "signal": "verification",
2500
+ "state": "succeeded",
2501
+ "summary": "npm test",
2502
+ "duration_ms": 900,
2503
+ "resources": [],
2504
+ "evidence": [],
2505
+ "presentation": {
2506
+ "headline": "npm test",
2507
+ "summary": "",
2508
+ "aside": "~/vis\nexit 1",
2509
+ "outcome": "Tests: 41 passed",
2510
+ "content": [
2511
+ {
2512
+ "type": "terminal",
2513
+ "command": [
2514
+ "cd apps/web",
2515
+ "&& npm test",
2516
+ "| tail -3"
2517
+ ],
2518
+ "lines": [
2519
+ {
2520
+ "text": "Tests: 41 passed",
2521
+ "stream": "stdout"
2522
+ },
2523
+ {
2524
+ "text": "warning: slow test",
2525
+ "stream": "stderr"
2526
+ }
2527
+ ],
2528
+ "omitted_lines": 12,
2529
+ "exit": 1
2530
+ }
2531
+ ],
2532
+ "verdict": "failed"
2533
+ }
2534
+ }
2535
+ ]
2536
+ }
2537
+ },
2538
+ {
2539
+ "name": "aside-rejects-empty",
2540
+ "valid": false,
2541
+ "projection": {
2542
+ "state": "succeeded",
2543
+ "counts": {
2544
+ "running": 0,
2545
+ "succeeded": 1,
2546
+ "failed": 0,
2547
+ "cancelled": 0
2548
+ },
2549
+ "rows": [
2550
+ {
2551
+ "id": "call-1",
2552
+ "sequence": 1,
2553
+ "operation": "shell",
2554
+ "presenter": "shell",
2555
+ "signal": "verification",
2556
+ "state": "succeeded",
2557
+ "summary": "npm test",
2558
+ "duration_ms": 900,
2559
+ "resources": [],
2560
+ "evidence": [],
2561
+ "presentation": {
2562
+ "headline": "npm test",
2563
+ "summary": "",
2564
+ "aside": "",
2565
+ "outcome": "Tests: 41 passed",
2566
+ "content": [
2567
+ {
2568
+ "type": "terminal",
2569
+ "command": [
2570
+ "cd apps/web",
2571
+ "&& npm test",
2572
+ "| tail -3"
2573
+ ],
2574
+ "lines": [
2575
+ {
2576
+ "text": "Tests: 41 passed",
2577
+ "stream": "stdout"
2578
+ },
2579
+ {
2580
+ "text": "warning: slow test",
2581
+ "stream": "stderr"
2582
+ }
2583
+ ],
2584
+ "omitted_lines": 12,
2585
+ "exit": 1
2586
+ }
2587
+ ],
2588
+ "verdict": "failed"
2589
+ }
2590
+ }
2591
+ ]
2592
+ }
2593
+ },
2594
+ {
2595
+ "name": "outcome-rejects-newline",
2596
+ "valid": false,
2597
+ "projection": {
2598
+ "state": "succeeded",
2599
+ "counts": {
2600
+ "running": 0,
2601
+ "succeeded": 1,
2602
+ "failed": 0,
2603
+ "cancelled": 0
2604
+ },
2605
+ "rows": [
2606
+ {
2607
+ "id": "call-1",
2608
+ "sequence": 1,
2609
+ "operation": "shell",
2610
+ "presenter": "shell",
2611
+ "signal": "verification",
2612
+ "state": "succeeded",
2613
+ "summary": "npm test",
2614
+ "duration_ms": 900,
2615
+ "resources": [],
2616
+ "evidence": [],
2617
+ "presentation": {
2618
+ "headline": "npm test",
2619
+ "summary": "",
2620
+ "aside": "~/vis · exit 1",
2621
+ "outcome": "a\nb",
2622
+ "content": [
2623
+ {
2624
+ "type": "terminal",
2625
+ "command": [
2626
+ "cd apps/web",
2627
+ "&& npm test",
2628
+ "| tail -3"
2629
+ ],
2630
+ "lines": [
2631
+ {
2632
+ "text": "Tests: 41 passed",
2633
+ "stream": "stdout"
2634
+ },
2635
+ {
2636
+ "text": "warning: slow test",
2637
+ "stream": "stderr"
2638
+ }
2639
+ ],
2640
+ "omitted_lines": 12,
2641
+ "exit": 1
2642
+ }
2643
+ ],
2644
+ "verdict": "failed"
2645
+ }
2646
+ }
2647
+ ]
2648
+ }
2151
2649
  }
2152
2650
  ]
@@ -6,7 +6,7 @@
6
6
  "counts": {
7
7
  "running": 1,
8
8
  "succeeded": 2,
9
- "failed": 1,
9
+ "failed": 2,
10
10
  "cancelled": 1
11
11
  },
12
12
  "rows": [
@@ -45,7 +45,10 @@
45
45
  "kind": "context",
46
46
  "text": "kept"
47
47
  },
48
- {"kind": "context", "text": ""}
48
+ {
49
+ "kind": "context",
50
+ "text": ""
51
+ }
49
52
  ],
50
53
  "additions": 1,
51
54
  "deletions": 1,
@@ -207,9 +210,50 @@
207
210
  "duration_ms": 5,
208
211
  "result_summary": "2 matches",
209
212
  "argument_key": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
213
+ },
214
+ {
215
+ "id": "copy-terminal",
216
+ "sequence": 6,
217
+ "operation": "shell",
218
+ "presenter": "shell",
219
+ "signal": "generic",
220
+ "state": "failed",
221
+ "summary": "npm test",
222
+ "duration_ms": 1200,
223
+ "resources": [],
224
+ "evidence": [],
225
+ "presentation": {
226
+ "headline": "npm test",
227
+ "summary": "",
228
+ "aside": "~/vis · exit 1",
229
+ "outcome": "Tests: 41 passed",
230
+ "content": [
231
+ {
232
+ "type": "terminal",
233
+ "command": [
234
+ "cd apps/web",
235
+ "&& npm test",
236
+ "| tail -3"
237
+ ],
238
+ "lines": [
239
+ {
240
+ "text": "Tests: 41 passed",
241
+ "stream": "stdout"
242
+ },
243
+ {
244
+ "text": "warning: slow test",
245
+ "stream": "stderr"
246
+ }
247
+ ],
248
+ "omitted_lines": 12,
249
+ "exit": 1
250
+ }
251
+ ],
252
+ "verdict": "failed"
253
+ }
210
254
  }
211
255
  ]
212
256
  },
213
- "text": "ACTIVITY\n\ngrep [succeeded] (5ms)\n same query\n Result: 2 matches\n file: src/main.clj\n arguments:\n {\"query\":\"[REDACTED]\"}\n result:\n first result\n second result\n\ngrep [failed]\n same query\n Error: Directory unavailable\n error:\n Directory unavailable\n\n shell [running]\n command running\n\n shell [cancelled]\n cancelled command\n\npatch [succeeded]\n src/main.clj\n diff:\n src/main.clj\n --- before\n @@ -1 +1 @@\n -old\n +[REDACTED]\n kept\n \n Diff truncated\n Diff redacted\n Patched source\n Retained preview\n Verification\n Plain text\n **Ready**\n print(1)\n print(2)\n -old\n +new\n Check\tState\n Unit\tPassed\n image: Screenshot (image-1)\n video: Playback (video-1)\n audio: Recording (audio-1)\n file: Report (file-1)\n Checks: 1/2\n Waiting\n Details\n Still bounded\n Section output\n Details truncated"
257
+ "text": "ACTIVITY\n\ngrep [succeeded] (5ms)\n same query\n Result: 2 matches\n file: src/main.clj\n arguments:\n {\"query\":\"[REDACTED]\"}\n result:\n first result\n second result\n\ngrep [failed]\n same query\n Error: Directory unavailable\n error:\n Directory unavailable\n\n shell [running]\n command running\n\n shell [cancelled]\n cancelled command\n\npatch [succeeded]\n src/main.clj\n diff:\n src/main.clj\n --- before\n @@ -1 +1 @@\n -old\n +[REDACTED]\n kept\n \n Diff truncated\n Diff redacted\n Patched source\n Retained preview\n Verification\n Plain text\n **Ready**\n print(1)\n print(2)\n -old\n +new\n Check\tState\n Unit\tPassed\n image: Screenshot (image-1)\n video: Playback (video-1)\n audio: Recording (audio-1)\n file: Report (file-1)\n Checks: 1/2\n Waiting\n Details\n Still bounded\n Section output\n Details truncated\n\nshell [failed] (1200ms)\n npm test\n npm test\n ~/vis · exit 1\n → Tests: 41 passed\n $ cd apps/web && npm test | tail -3\n … 12 earlier lines\n Tests: 41 passed\n warning: slow test"
214
258
  }
215
259
  ]
@@ -835,6 +835,63 @@
835
835
  "value"
836
836
  ]
837
837
  }
838
+ },
839
+ {
840
+ "type": "object",
841
+ "additionalProperties": false,
842
+ "properties": {
843
+ "type": {
844
+ "const": "terminal"
845
+ },
846
+ "command": {
847
+ "type": "array",
848
+ "minItems": 1,
849
+ "maxItems": 32,
850
+ "items": {
851
+ "type": "string",
852
+ "minLength": 1,
853
+ "maxLength": 4096
854
+ }
855
+ },
856
+ "lines": {
857
+ "type": "array",
858
+ "maxItems": 400,
859
+ "items": {
860
+ "type": "object",
861
+ "additionalProperties": false,
862
+ "properties": {
863
+ "text": {
864
+ "type": "string",
865
+ "maxLength": 4096,
866
+ "pattern": "^[^\\u0000-\\u0008\\u000a-\\u001f\\u007f\\u2028\\u2029]*$"
867
+ },
868
+ "stream": {
869
+ "type": "string",
870
+ "enum": [
871
+ "stdout",
872
+ "stderr"
873
+ ]
874
+ }
875
+ },
876
+ "required": [
877
+ "text",
878
+ "stream"
879
+ ]
880
+ }
881
+ },
882
+ "omitted_lines": {
883
+ "type": "integer",
884
+ "minimum": 0
885
+ },
886
+ "exit": {
887
+ "type": "integer"
888
+ }
889
+ },
890
+ "required": [
891
+ "type",
892
+ "command",
893
+ "lines"
894
+ ]
838
895
  }
839
896
  ]
840
897
  }
@@ -881,6 +938,15 @@
881
938
  "summary_format": {
882
939
  "$ref": "#/$defs/section/properties/summary_format"
883
940
  },
941
+ "outcome": {
942
+ "$ref": "#/$defs/section/properties/summary"
943
+ },
944
+ "aside": {
945
+ "type": "string",
946
+ "minLength": 1,
947
+ "maxLength": 128,
948
+ "pattern": "^[^\\u0000-\\u001f\\u007f\\u2028\\u2029]+$"
949
+ },
884
950
  "content": {
885
951
  "$ref": "#/$defs/content"
886
952
  },
@@ -2,8 +2,8 @@
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
3
  "$id": "https://contract.blockether.com/vis/schema/agents.json",
4
4
  "$ref": "#/$defs/agent",
5
- "x-vis-max-team-children": 32,
6
- "x-vis-max-active-children": 8,
5
+ "x-vis-max-team-children": 128,
6
+ "x-vis-max-active-children": 16,
7
7
  "$comment": "Child-count limits are enforced against persisted team and leader state, not one agent payload.",
8
8
  "$defs": {
9
9
  "spawn": {
@@ -26,8 +26,8 @@
26
26
  "iteration_budget": {
27
27
  "type": "integer",
28
28
  "minimum": 1,
29
- "maximum": 200,
30
- "default": 32
29
+ "maximum": 600,
30
+ "default": 64
31
31
  },
32
32
  "allowed_models": {
33
33
  "type": "array",
@@ -42,6 +42,12 @@
42
42
  "type": "string",
43
43
  "minLength": 1,
44
44
  "maxLength": 256
45
+ },
46
+ "context": {
47
+ "enum": [
48
+ "full",
49
+ "task"
50
+ ]
45
51
  }
46
52
  },
47
53
  "required": [