@automate.ax/api-contract 0.55.0 → 0.56.0

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.
package/dist/index.d.ts CHANGED
@@ -1090,6 +1090,23 @@ export declare const contract: {
1090
1090
  reason: import("zod").ZodLiteral<"failed-dependency">;
1091
1091
  status: import("zod").ZodLiteral<"skipped">;
1092
1092
  }, import("zod/v4/core").$strip>]>>>;
1093
+ collectionEntries: import("zod").ZodDefault<import("zod").ZodArray<import("zod").ZodObject<{
1094
+ actionDependencyIds: import("zod").ZodArray<import("zod").ZodString>;
1095
+ eventDependencyIds: import("zod").ZodArray<import("zod").ZodString>;
1096
+ signalDependencyIds: import("zod").ZodArray<import("zod").ZodString>;
1097
+ slot: import("zod").ZodNumber;
1098
+ count: import("zod").ZodNumber;
1099
+ key: import("zod").ZodOptional<import("zod").ZodCustom<import("@automate.ax/codec").Encodable, import("@automate.ax/codec").Encodable>>;
1100
+ outcomeSeq: import("zod").ZodNumber;
1101
+ primaryPosition: import("zod").ZodEnum<{
1102
+ first: "first";
1103
+ last: "last";
1104
+ }>;
1105
+ ttl: import("zod").ZodOptional<import("zod").ZodUnion<readonly [import("zod").ZodString, import("zod").ZodNumber]>>;
1106
+ parameterActionDependencyIds: import("zod").ZodArray<import("zod").ZodString>;
1107
+ parameterEventDependencyIds: import("zod").ZodArray<import("zod").ZodString>;
1108
+ parameterSignalDependencyIds: import("zod").ZodArray<import("zod").ZodString>;
1109
+ }, import("zod/v4/core").$strip>>>;
1093
1110
  correlationEntries: import("zod").ZodDefault<import("zod").ZodArray<import("zod").ZodObject<{
1094
1111
  actionDependencyIds: import("zod").ZodArray<import("zod").ZodString>;
1095
1112
  eventDependencyIds: import("zod").ZodArray<import("zod").ZodString>;
@@ -1129,6 +1146,23 @@ export declare const contract: {
1129
1146
  selectedIndex: import("zod").ZodOptional<import("zod").ZodNumber>;
1130
1147
  status: import("zod").ZodLiteral<"open">;
1131
1148
  }, import("zod/v4/core").$strip>]>>>;
1149
+ windowEntries: import("zod").ZodDefault<import("zod").ZodArray<import("zod").ZodObject<{
1150
+ actionDependencyIds: import("zod").ZodArray<import("zod").ZodString>;
1151
+ eventDependencyIds: import("zod").ZodArray<import("zod").ZodString>;
1152
+ signalDependencyIds: import("zod").ZodArray<import("zod").ZodString>;
1153
+ slot: import("zod").ZodNumber;
1154
+ duration: import("zod").ZodUnion<readonly [import("zod").ZodString, import("zod").ZodNumber]>;
1155
+ key: import("zod").ZodOptional<import("zod").ZodCustom<import("@automate.ax/codec").Encodable, import("@automate.ax/codec").Encodable>>;
1156
+ outcomeSeq: import("zod").ZodNumber;
1157
+ primaryPosition: import("zod").ZodEnum<{
1158
+ first: "first";
1159
+ last: "last";
1160
+ }>;
1161
+ ttl: import("zod").ZodOptional<import("zod").ZodUnion<readonly [import("zod").ZodString, import("zod").ZodNumber]>>;
1162
+ parameterActionDependencyIds: import("zod").ZodArray<import("zod").ZodString>;
1163
+ parameterEventDependencyIds: import("zod").ZodArray<import("zod").ZodString>;
1164
+ parameterSignalDependencyIds: import("zod").ZodArray<import("zod").ZodString>;
1165
+ }, import("zod/v4/core").$strip>>>;
1132
1166
  }, import("zod/v4/core").$strip>, import("zod").ZodVoid, Record<never, never>, Record<never, never>>;
1133
1167
  completeAction: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<import("zod").ZodUnion<readonly [import("zod").ZodObject<{
1134
1168
  reason: import("zod").ZodLiteral<"closed-dependency">;
@@ -1285,6 +1319,7 @@ export declare const contract: {
1285
1319
  signalDependencyIds: import("zod").ZodArray<import("zod").ZodString>;
1286
1320
  slot: import("zod").ZodNumber;
1287
1321
  actionInvocationId: import("zod").ZodString;
1322
+ contextId: import("zod").ZodString;
1288
1323
  status: import("zod").ZodLiteral<"pending">;
1289
1324
  }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
1290
1325
  actionDependencyIds: import("zod").ZodArray<import("zod").ZodString>;
@@ -1295,6 +1330,7 @@ export declare const contract: {
1295
1330
  signalDependencyIds: import("zod").ZodArray<import("zod").ZodString>;
1296
1331
  slot: import("zod").ZodNumber;
1297
1332
  actionInvocationId: import("zod").ZodString;
1333
+ contextId: import("zod").ZodString;
1298
1334
  failure: import("zod").ZodObject<{
1299
1335
  message: import("zod").ZodString;
1300
1336
  name: import("zod").ZodString;
@@ -1310,6 +1346,7 @@ export declare const contract: {
1310
1346
  signalDependencyIds: import("zod").ZodArray<import("zod").ZodString>;
1311
1347
  slot: import("zod").ZodNumber;
1312
1348
  actionInvocationId: import("zod").ZodString;
1349
+ contextId: import("zod").ZodString;
1313
1350
  outcomeSeq: import("zod").ZodNumber;
1314
1351
  reason: import("zod").ZodLiteral<"closed-dependency">;
1315
1352
  status: import("zod").ZodLiteral<"skipped">;
@@ -1322,6 +1359,7 @@ export declare const contract: {
1322
1359
  signalDependencyIds: import("zod").ZodArray<import("zod").ZodString>;
1323
1360
  slot: import("zod").ZodNumber;
1324
1361
  actionInvocationId: import("zod").ZodString;
1362
+ contextId: import("zod").ZodString;
1325
1363
  failure: import("zod").ZodObject<{
1326
1364
  message: import("zod").ZodString;
1327
1365
  name: import("zod").ZodString;
@@ -1338,12 +1376,20 @@ export declare const contract: {
1338
1376
  signalDependencyIds: import("zod").ZodArray<import("zod").ZodString>;
1339
1377
  slot: import("zod").ZodNumber;
1340
1378
  actionInvocationId: import("zod").ZodString;
1379
+ contextId: import("zod").ZodString;
1341
1380
  outcomeSeq: import("zod").ZodNumber;
1342
1381
  status: import("zod").ZodLiteral<"succeeded">;
1343
1382
  }, import("zod/v4/core").$strip>]>>;
1344
1383
  contextId: import("zod").ZodString;
1384
+ contextParents: import("zod").ZodArray<import("zod").ZodObject<{
1385
+ contextId: import("zod").ZodString;
1386
+ isPrimary: import("zod").ZodBoolean;
1387
+ parentContextId: import("zod").ZodString;
1388
+ position: import("zod").ZodNumber;
1389
+ }, import("zod/v4/core").$strip>>;
1345
1390
  events: import("zod").ZodArray<import("zod").ZodObject<{
1346
1391
  automationEventId: import("zod").ZodString;
1392
+ contextId: import("zod").ZodString;
1347
1393
  outcomeSeq: import("zod").ZodNumber;
1348
1394
  slot: import("zod").ZodNumber;
1349
1395
  }, import("zod/v4/core").$strip>>;
@@ -1352,6 +1398,7 @@ export declare const contract: {
1352
1398
  eventDependencyIds: import("zod").ZodArray<import("zod").ZodString>;
1353
1399
  signalDependencyIds: import("zod").ZodArray<import("zod").ZodString>;
1354
1400
  slot: import("zod").ZodNumber;
1401
+ contextId: import("zod").ZodString;
1355
1402
  outcomeSeq: import("zod").ZodNumber;
1356
1403
  signalInvocationId: import("zod").ZodString;
1357
1404
  selectedIndex: import("zod").ZodOptional<import("zod").ZodNumber>;
@@ -1361,6 +1408,7 @@ export declare const contract: {
1361
1408
  eventDependencyIds: import("zod").ZodArray<import("zod").ZodString>;
1362
1409
  signalDependencyIds: import("zod").ZodArray<import("zod").ZodString>;
1363
1410
  slot: import("zod").ZodNumber;
1411
+ contextId: import("zod").ZodString;
1364
1412
  outcomeSeq: import("zod").ZodNumber;
1365
1413
  signalInvocationId: import("zod").ZodString;
1366
1414
  status: import("zod").ZodLiteral<"closed">;
@@ -1369,6 +1417,7 @@ export declare const contract: {
1369
1417
  eventDependencyIds: import("zod").ZodArray<import("zod").ZodString>;
1370
1418
  signalDependencyIds: import("zod").ZodArray<import("zod").ZodString>;
1371
1419
  slot: import("zod").ZodNumber;
1420
+ contextId: import("zod").ZodString;
1372
1421
  outcomeSeq: import("zod").ZodNumber;
1373
1422
  signalInvocationId: import("zod").ZodString;
1374
1423
  failure: import("zod").ZodObject<{
@@ -1381,6 +1430,7 @@ export declare const contract: {
1381
1430
  eventDependencyIds: import("zod").ZodArray<import("zod").ZodString>;
1382
1431
  signalDependencyIds: import("zod").ZodArray<import("zod").ZodString>;
1383
1432
  slot: import("zod").ZodNumber;
1433
+ contextId: import("zod").ZodString;
1384
1434
  outcomeSeq: import("zod").ZodNumber;
1385
1435
  signalInvocationId: import("zod").ZodString;
1386
1436
  status: import("zod").ZodLiteral<"succeeded">;
@@ -1391,8 +1441,9 @@ export declare const contract: {
1391
1441
  context: import("zod").ZodObject<{
1392
1442
  actionOutputs: import("zod").ZodArray<import("zod").ZodUnion<readonly [import("zod").ZodObject<{
1393
1443
  actionInvocationId: import("zod").ZodString;
1394
- outcomeSeq: import("zod").ZodNumber;
1444
+ contextId: import("zod").ZodString;
1395
1445
  slot: import("zod").ZodNumber;
1446
+ outcomeSeq: import("zod").ZodNumber;
1396
1447
  status: import("zod").ZodLiteral<"failed">;
1397
1448
  failure: import("zod").ZodObject<{
1398
1449
  message: import("zod").ZodString;
@@ -1400,46 +1451,68 @@ export declare const contract: {
1400
1451
  }, import("zod/v4/core").$strip>;
1401
1452
  }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
1402
1453
  actionInvocationId: import("zod").ZodString;
1454
+ contextId: import("zod").ZodString;
1403
1455
  outcomeSeq: import("zod").ZodNumber;
1404
- reason: import("zod").ZodLiteral<"closed-dependency">;
1405
1456
  slot: import("zod").ZodNumber;
1457
+ reason: import("zod").ZodLiteral<"closed-dependency">;
1406
1458
  status: import("zod").ZodLiteral<"skipped">;
1407
1459
  }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
1408
1460
  actionInvocationId: import("zod").ZodString;
1461
+ contextId: import("zod").ZodString;
1462
+ outcomeSeq: import("zod").ZodNumber;
1463
+ slot: import("zod").ZodNumber;
1409
1464
  failure: import("zod").ZodObject<{
1410
1465
  message: import("zod").ZodString;
1411
1466
  name: import("zod").ZodString;
1412
1467
  }, import("zod/v4/core").$strip>;
1413
- outcomeSeq: import("zod").ZodNumber;
1414
1468
  reason: import("zod").ZodLiteral<"failed-dependency">;
1415
- slot: import("zod").ZodNumber;
1416
1469
  status: import("zod").ZodLiteral<"skipped">;
1417
1470
  }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
1418
1471
  actionInvocationId: import("zod").ZodString;
1472
+ contextId: import("zod").ZodString;
1419
1473
  outcomeSeq: import("zod").ZodNumber;
1420
- output: import("zod").ZodOptional<import("zod").ZodCustom<import("@automate.ax/codec").Encodable, import("@automate.ax/codec").Encodable>>;
1421
1474
  slot: import("zod").ZodNumber;
1475
+ output: import("zod").ZodOptional<import("zod").ZodCustom<import("@automate.ax/codec").Encodable, import("@automate.ax/codec").Encodable>>;
1422
1476
  status: import("zod").ZodLiteral<"succeeded">;
1423
1477
  }, import("zod/v4/core").$strip>]>>;
1478
+ bufferGroups: import("zod").ZodArray<import("zod").ZodObject<{
1479
+ items: import("zod").ZodArray<import("zod").ZodObject<{
1480
+ actionDependencyIds: import("zod").ZodArray<import("zod").ZodString>;
1481
+ eventDependencyIds: import("zod").ZodArray<import("zod").ZodString>;
1482
+ signalDependencyIds: import("zod").ZodArray<import("zod").ZodString>;
1483
+ contextId: import("zod").ZodString;
1484
+ }, import("zod/v4/core").$strip>>;
1485
+ signalInvocationId: import("zod").ZodString;
1486
+ }, import("zod/v4/core").$strip>>;
1424
1487
  contextId: import("zod").ZodString;
1488
+ contextParents: import("zod").ZodArray<import("zod").ZodObject<{
1489
+ contextId: import("zod").ZodString;
1490
+ isPrimary: import("zod").ZodBoolean;
1491
+ parentContextId: import("zod").ZodString;
1492
+ position: import("zod").ZodNumber;
1493
+ }, import("zod/v4/core").$strip>>;
1425
1494
  events: import("zod").ZodArray<import("zod").ZodObject<{
1426
1495
  automationEventId: import("zod").ZodString;
1496
+ contextId: import("zod").ZodString;
1427
1497
  outcomeSeq: import("zod").ZodNumber;
1428
1498
  payload: import("zod").ZodOptional<import("zod").ZodCustom<import("@automate.ax/codec").Encodable, import("@automate.ax/codec").Encodable>>;
1429
1499
  slot: import("zod").ZodNumber;
1430
1500
  }, import("zod/v4/core").$strip>>;
1431
1501
  signalOutputs: import("zod").ZodArray<import("zod").ZodUnion<readonly [import("zod").ZodObject<{
1502
+ contextId: import("zod").ZodString;
1432
1503
  outcomeSeq: import("zod").ZodNumber;
1433
1504
  signalInvocationId: import("zod").ZodString;
1434
1505
  slot: import("zod").ZodNumber;
1435
1506
  selectedIndex: import("zod").ZodOptional<import("zod").ZodNumber>;
1436
1507
  status: import("zod").ZodLiteral<"open">;
1437
1508
  }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
1509
+ contextId: import("zod").ZodString;
1438
1510
  outcomeSeq: import("zod").ZodNumber;
1439
1511
  signalInvocationId: import("zod").ZodString;
1440
1512
  slot: import("zod").ZodNumber;
1441
1513
  status: import("zod").ZodLiteral<"closed">;
1442
1514
  }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
1515
+ contextId: import("zod").ZodString;
1443
1516
  outcomeSeq: import("zod").ZodNumber;
1444
1517
  signalInvocationId: import("zod").ZodString;
1445
1518
  slot: import("zod").ZodNumber;
@@ -1449,6 +1522,7 @@ export declare const contract: {
1449
1522
  }, import("zod/v4/core").$strip>;
1450
1523
  status: import("zod").ZodLiteral<"failed">;
1451
1524
  }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
1525
+ contextId: import("zod").ZodString;
1452
1526
  outcomeSeq: import("zod").ZodNumber;
1453
1527
  signalInvocationId: import("zod").ZodString;
1454
1528
  slot: import("zod").ZodNumber;
@@ -1476,8 +1550,9 @@ export declare const contract: {
1476
1550
  }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
1477
1551
  actionOutputs: import("zod").ZodArray<import("zod").ZodUnion<readonly [import("zod").ZodObject<{
1478
1552
  actionInvocationId: import("zod").ZodString;
1479
- outcomeSeq: import("zod").ZodNumber;
1553
+ contextId: import("zod").ZodString;
1480
1554
  slot: import("zod").ZodNumber;
1555
+ outcomeSeq: import("zod").ZodNumber;
1481
1556
  status: import("zod").ZodLiteral<"failed">;
1482
1557
  failure: import("zod").ZodObject<{
1483
1558
  message: import("zod").ZodString;
@@ -1485,46 +1560,68 @@ export declare const contract: {
1485
1560
  }, import("zod/v4/core").$strip>;
1486
1561
  }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
1487
1562
  actionInvocationId: import("zod").ZodString;
1563
+ contextId: import("zod").ZodString;
1488
1564
  outcomeSeq: import("zod").ZodNumber;
1489
- reason: import("zod").ZodLiteral<"closed-dependency">;
1490
1565
  slot: import("zod").ZodNumber;
1566
+ reason: import("zod").ZodLiteral<"closed-dependency">;
1491
1567
  status: import("zod").ZodLiteral<"skipped">;
1492
1568
  }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
1493
1569
  actionInvocationId: import("zod").ZodString;
1570
+ contextId: import("zod").ZodString;
1571
+ outcomeSeq: import("zod").ZodNumber;
1572
+ slot: import("zod").ZodNumber;
1494
1573
  failure: import("zod").ZodObject<{
1495
1574
  message: import("zod").ZodString;
1496
1575
  name: import("zod").ZodString;
1497
1576
  }, import("zod/v4/core").$strip>;
1498
- outcomeSeq: import("zod").ZodNumber;
1499
1577
  reason: import("zod").ZodLiteral<"failed-dependency">;
1500
- slot: import("zod").ZodNumber;
1501
1578
  status: import("zod").ZodLiteral<"skipped">;
1502
1579
  }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
1503
1580
  actionInvocationId: import("zod").ZodString;
1581
+ contextId: import("zod").ZodString;
1504
1582
  outcomeSeq: import("zod").ZodNumber;
1505
- output: import("zod").ZodOptional<import("zod").ZodCustom<import("@automate.ax/codec").Encodable, import("@automate.ax/codec").Encodable>>;
1506
1583
  slot: import("zod").ZodNumber;
1584
+ output: import("zod").ZodOptional<import("zod").ZodCustom<import("@automate.ax/codec").Encodable, import("@automate.ax/codec").Encodable>>;
1507
1585
  status: import("zod").ZodLiteral<"succeeded">;
1508
1586
  }, import("zod/v4/core").$strip>]>>;
1587
+ bufferGroups: import("zod").ZodArray<import("zod").ZodObject<{
1588
+ items: import("zod").ZodArray<import("zod").ZodObject<{
1589
+ actionDependencyIds: import("zod").ZodArray<import("zod").ZodString>;
1590
+ eventDependencyIds: import("zod").ZodArray<import("zod").ZodString>;
1591
+ signalDependencyIds: import("zod").ZodArray<import("zod").ZodString>;
1592
+ contextId: import("zod").ZodString;
1593
+ }, import("zod/v4/core").$strip>>;
1594
+ signalInvocationId: import("zod").ZodString;
1595
+ }, import("zod/v4/core").$strip>>;
1509
1596
  contextId: import("zod").ZodString;
1597
+ contextParents: import("zod").ZodArray<import("zod").ZodObject<{
1598
+ contextId: import("zod").ZodString;
1599
+ isPrimary: import("zod").ZodBoolean;
1600
+ parentContextId: import("zod").ZodString;
1601
+ position: import("zod").ZodNumber;
1602
+ }, import("zod/v4/core").$strip>>;
1510
1603
  events: import("zod").ZodArray<import("zod").ZodObject<{
1511
1604
  automationEventId: import("zod").ZodString;
1605
+ contextId: import("zod").ZodString;
1512
1606
  outcomeSeq: import("zod").ZodNumber;
1513
1607
  payload: import("zod").ZodOptional<import("zod").ZodCustom<import("@automate.ax/codec").Encodable, import("@automate.ax/codec").Encodable>>;
1514
1608
  slot: import("zod").ZodNumber;
1515
1609
  }, import("zod/v4/core").$strip>>;
1516
1610
  signalOutputs: import("zod").ZodArray<import("zod").ZodUnion<readonly [import("zod").ZodObject<{
1611
+ contextId: import("zod").ZodString;
1517
1612
  outcomeSeq: import("zod").ZodNumber;
1518
1613
  signalInvocationId: import("zod").ZodString;
1519
1614
  slot: import("zod").ZodNumber;
1520
1615
  selectedIndex: import("zod").ZodOptional<import("zod").ZodNumber>;
1521
1616
  status: import("zod").ZodLiteral<"open">;
1522
1617
  }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
1618
+ contextId: import("zod").ZodString;
1523
1619
  outcomeSeq: import("zod").ZodNumber;
1524
1620
  signalInvocationId: import("zod").ZodString;
1525
1621
  slot: import("zod").ZodNumber;
1526
1622
  status: import("zod").ZodLiteral<"closed">;
1527
1623
  }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
1624
+ contextId: import("zod").ZodString;
1528
1625
  outcomeSeq: import("zod").ZodNumber;
1529
1626
  signalInvocationId: import("zod").ZodString;
1530
1627
  slot: import("zod").ZodNumber;
@@ -1534,6 +1631,7 @@ export declare const contract: {
1534
1631
  }, import("zod/v4/core").$strip>;
1535
1632
  status: import("zod").ZodLiteral<"failed">;
1536
1633
  }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
1634
+ contextId: import("zod").ZodString;
1537
1635
  outcomeSeq: import("zod").ZodNumber;
1538
1636
  signalInvocationId: import("zod").ZodString;
1539
1637
  slot: import("zod").ZodNumber;
package/dist/runtime.d.ts CHANGED
@@ -223,6 +223,23 @@ export declare const runtimeContract: {
223
223
  reason: z.ZodLiteral<"failed-dependency">;
224
224
  status: z.ZodLiteral<"skipped">;
225
225
  }, z.core.$strip>]>>>;
226
+ collectionEntries: z.ZodDefault<z.ZodArray<z.ZodObject<{
227
+ actionDependencyIds: z.ZodArray<z.ZodString>;
228
+ eventDependencyIds: z.ZodArray<z.ZodString>;
229
+ signalDependencyIds: z.ZodArray<z.ZodString>;
230
+ slot: z.ZodNumber;
231
+ count: z.ZodNumber;
232
+ key: z.ZodOptional<z.ZodCustom<import("@automate.ax/codec").Encodable, import("@automate.ax/codec").Encodable>>;
233
+ outcomeSeq: z.ZodNumber;
234
+ primaryPosition: z.ZodEnum<{
235
+ first: "first";
236
+ last: "last";
237
+ }>;
238
+ ttl: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
239
+ parameterActionDependencyIds: z.ZodArray<z.ZodString>;
240
+ parameterEventDependencyIds: z.ZodArray<z.ZodString>;
241
+ parameterSignalDependencyIds: z.ZodArray<z.ZodString>;
242
+ }, z.core.$strip>>>;
226
243
  correlationEntries: z.ZodDefault<z.ZodArray<z.ZodObject<{
227
244
  actionDependencyIds: z.ZodArray<z.ZodString>;
228
245
  eventDependencyIds: z.ZodArray<z.ZodString>;
@@ -262,6 +279,23 @@ export declare const runtimeContract: {
262
279
  selectedIndex: z.ZodOptional<z.ZodNumber>;
263
280
  status: z.ZodLiteral<"open">;
264
281
  }, z.core.$strip>]>>>;
282
+ windowEntries: z.ZodDefault<z.ZodArray<z.ZodObject<{
283
+ actionDependencyIds: z.ZodArray<z.ZodString>;
284
+ eventDependencyIds: z.ZodArray<z.ZodString>;
285
+ signalDependencyIds: z.ZodArray<z.ZodString>;
286
+ slot: z.ZodNumber;
287
+ duration: z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>;
288
+ key: z.ZodOptional<z.ZodCustom<import("@automate.ax/codec").Encodable, import("@automate.ax/codec").Encodable>>;
289
+ outcomeSeq: z.ZodNumber;
290
+ primaryPosition: z.ZodEnum<{
291
+ first: "first";
292
+ last: "last";
293
+ }>;
294
+ ttl: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
295
+ parameterActionDependencyIds: z.ZodArray<z.ZodString>;
296
+ parameterEventDependencyIds: z.ZodArray<z.ZodString>;
297
+ parameterSignalDependencyIds: z.ZodArray<z.ZodString>;
298
+ }, z.core.$strip>>>;
265
299
  }, z.core.$strip>, z.ZodVoid, Record<never, never>, Record<never, never>>;
266
300
  completeAction: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodUnion<readonly [z.ZodObject<{
267
301
  reason: z.ZodLiteral<"closed-dependency">;
@@ -418,6 +452,7 @@ export declare const runtimeContract: {
418
452
  signalDependencyIds: z.ZodArray<z.ZodString>;
419
453
  slot: z.ZodNumber;
420
454
  actionInvocationId: z.ZodString;
455
+ contextId: z.ZodString;
421
456
  status: z.ZodLiteral<"pending">;
422
457
  }, z.core.$strip>, z.ZodObject<{
423
458
  actionDependencyIds: z.ZodArray<z.ZodString>;
@@ -428,6 +463,7 @@ export declare const runtimeContract: {
428
463
  signalDependencyIds: z.ZodArray<z.ZodString>;
429
464
  slot: z.ZodNumber;
430
465
  actionInvocationId: z.ZodString;
466
+ contextId: z.ZodString;
431
467
  failure: z.ZodObject<{
432
468
  message: z.ZodString;
433
469
  name: z.ZodString;
@@ -443,6 +479,7 @@ export declare const runtimeContract: {
443
479
  signalDependencyIds: z.ZodArray<z.ZodString>;
444
480
  slot: z.ZodNumber;
445
481
  actionInvocationId: z.ZodString;
482
+ contextId: z.ZodString;
446
483
  outcomeSeq: z.ZodNumber;
447
484
  reason: z.ZodLiteral<"closed-dependency">;
448
485
  status: z.ZodLiteral<"skipped">;
@@ -455,6 +492,7 @@ export declare const runtimeContract: {
455
492
  signalDependencyIds: z.ZodArray<z.ZodString>;
456
493
  slot: z.ZodNumber;
457
494
  actionInvocationId: z.ZodString;
495
+ contextId: z.ZodString;
458
496
  failure: z.ZodObject<{
459
497
  message: z.ZodString;
460
498
  name: z.ZodString;
@@ -471,12 +509,20 @@ export declare const runtimeContract: {
471
509
  signalDependencyIds: z.ZodArray<z.ZodString>;
472
510
  slot: z.ZodNumber;
473
511
  actionInvocationId: z.ZodString;
512
+ contextId: z.ZodString;
474
513
  outcomeSeq: z.ZodNumber;
475
514
  status: z.ZodLiteral<"succeeded">;
476
515
  }, z.core.$strip>]>>;
477
516
  contextId: z.ZodString;
517
+ contextParents: z.ZodArray<z.ZodObject<{
518
+ contextId: z.ZodString;
519
+ isPrimary: z.ZodBoolean;
520
+ parentContextId: z.ZodString;
521
+ position: z.ZodNumber;
522
+ }, z.core.$strip>>;
478
523
  events: z.ZodArray<z.ZodObject<{
479
524
  automationEventId: z.ZodString;
525
+ contextId: z.ZodString;
480
526
  outcomeSeq: z.ZodNumber;
481
527
  slot: z.ZodNumber;
482
528
  }, z.core.$strip>>;
@@ -485,6 +531,7 @@ export declare const runtimeContract: {
485
531
  eventDependencyIds: z.ZodArray<z.ZodString>;
486
532
  signalDependencyIds: z.ZodArray<z.ZodString>;
487
533
  slot: z.ZodNumber;
534
+ contextId: z.ZodString;
488
535
  outcomeSeq: z.ZodNumber;
489
536
  signalInvocationId: z.ZodString;
490
537
  selectedIndex: z.ZodOptional<z.ZodNumber>;
@@ -494,6 +541,7 @@ export declare const runtimeContract: {
494
541
  eventDependencyIds: z.ZodArray<z.ZodString>;
495
542
  signalDependencyIds: z.ZodArray<z.ZodString>;
496
543
  slot: z.ZodNumber;
544
+ contextId: z.ZodString;
497
545
  outcomeSeq: z.ZodNumber;
498
546
  signalInvocationId: z.ZodString;
499
547
  status: z.ZodLiteral<"closed">;
@@ -502,6 +550,7 @@ export declare const runtimeContract: {
502
550
  eventDependencyIds: z.ZodArray<z.ZodString>;
503
551
  signalDependencyIds: z.ZodArray<z.ZodString>;
504
552
  slot: z.ZodNumber;
553
+ contextId: z.ZodString;
505
554
  outcomeSeq: z.ZodNumber;
506
555
  signalInvocationId: z.ZodString;
507
556
  failure: z.ZodObject<{
@@ -514,6 +563,7 @@ export declare const runtimeContract: {
514
563
  eventDependencyIds: z.ZodArray<z.ZodString>;
515
564
  signalDependencyIds: z.ZodArray<z.ZodString>;
516
565
  slot: z.ZodNumber;
566
+ contextId: z.ZodString;
517
567
  outcomeSeq: z.ZodNumber;
518
568
  signalInvocationId: z.ZodString;
519
569
  status: z.ZodLiteral<"succeeded">;
@@ -524,8 +574,9 @@ export declare const runtimeContract: {
524
574
  context: z.ZodObject<{
525
575
  actionOutputs: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
526
576
  actionInvocationId: z.ZodString;
527
- outcomeSeq: z.ZodNumber;
577
+ contextId: z.ZodString;
528
578
  slot: z.ZodNumber;
579
+ outcomeSeq: z.ZodNumber;
529
580
  status: z.ZodLiteral<"failed">;
530
581
  failure: z.ZodObject<{
531
582
  message: z.ZodString;
@@ -533,46 +584,68 @@ export declare const runtimeContract: {
533
584
  }, z.core.$strip>;
534
585
  }, z.core.$strip>, z.ZodObject<{
535
586
  actionInvocationId: z.ZodString;
587
+ contextId: z.ZodString;
536
588
  outcomeSeq: z.ZodNumber;
537
- reason: z.ZodLiteral<"closed-dependency">;
538
589
  slot: z.ZodNumber;
590
+ reason: z.ZodLiteral<"closed-dependency">;
539
591
  status: z.ZodLiteral<"skipped">;
540
592
  }, z.core.$strip>, z.ZodObject<{
541
593
  actionInvocationId: z.ZodString;
594
+ contextId: z.ZodString;
595
+ outcomeSeq: z.ZodNumber;
596
+ slot: z.ZodNumber;
542
597
  failure: z.ZodObject<{
543
598
  message: z.ZodString;
544
599
  name: z.ZodString;
545
600
  }, z.core.$strip>;
546
- outcomeSeq: z.ZodNumber;
547
601
  reason: z.ZodLiteral<"failed-dependency">;
548
- slot: z.ZodNumber;
549
602
  status: z.ZodLiteral<"skipped">;
550
603
  }, z.core.$strip>, z.ZodObject<{
551
604
  actionInvocationId: z.ZodString;
605
+ contextId: z.ZodString;
552
606
  outcomeSeq: z.ZodNumber;
553
- output: z.ZodOptional<z.ZodCustom<import("@automate.ax/codec").Encodable, import("@automate.ax/codec").Encodable>>;
554
607
  slot: z.ZodNumber;
608
+ output: z.ZodOptional<z.ZodCustom<import("@automate.ax/codec").Encodable, import("@automate.ax/codec").Encodable>>;
555
609
  status: z.ZodLiteral<"succeeded">;
556
610
  }, z.core.$strip>]>>;
611
+ bufferGroups: z.ZodArray<z.ZodObject<{
612
+ items: z.ZodArray<z.ZodObject<{
613
+ actionDependencyIds: z.ZodArray<z.ZodString>;
614
+ eventDependencyIds: z.ZodArray<z.ZodString>;
615
+ signalDependencyIds: z.ZodArray<z.ZodString>;
616
+ contextId: z.ZodString;
617
+ }, z.core.$strip>>;
618
+ signalInvocationId: z.ZodString;
619
+ }, z.core.$strip>>;
557
620
  contextId: z.ZodString;
621
+ contextParents: z.ZodArray<z.ZodObject<{
622
+ contextId: z.ZodString;
623
+ isPrimary: z.ZodBoolean;
624
+ parentContextId: z.ZodString;
625
+ position: z.ZodNumber;
626
+ }, z.core.$strip>>;
558
627
  events: z.ZodArray<z.ZodObject<{
559
628
  automationEventId: z.ZodString;
629
+ contextId: z.ZodString;
560
630
  outcomeSeq: z.ZodNumber;
561
631
  payload: z.ZodOptional<z.ZodCustom<import("@automate.ax/codec").Encodable, import("@automate.ax/codec").Encodable>>;
562
632
  slot: z.ZodNumber;
563
633
  }, z.core.$strip>>;
564
634
  signalOutputs: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
635
+ contextId: z.ZodString;
565
636
  outcomeSeq: z.ZodNumber;
566
637
  signalInvocationId: z.ZodString;
567
638
  slot: z.ZodNumber;
568
639
  selectedIndex: z.ZodOptional<z.ZodNumber>;
569
640
  status: z.ZodLiteral<"open">;
570
641
  }, z.core.$strip>, z.ZodObject<{
642
+ contextId: z.ZodString;
571
643
  outcomeSeq: z.ZodNumber;
572
644
  signalInvocationId: z.ZodString;
573
645
  slot: z.ZodNumber;
574
646
  status: z.ZodLiteral<"closed">;
575
647
  }, z.core.$strip>, z.ZodObject<{
648
+ contextId: z.ZodString;
576
649
  outcomeSeq: z.ZodNumber;
577
650
  signalInvocationId: z.ZodString;
578
651
  slot: z.ZodNumber;
@@ -582,6 +655,7 @@ export declare const runtimeContract: {
582
655
  }, z.core.$strip>;
583
656
  status: z.ZodLiteral<"failed">;
584
657
  }, z.core.$strip>, z.ZodObject<{
658
+ contextId: z.ZodString;
585
659
  outcomeSeq: z.ZodNumber;
586
660
  signalInvocationId: z.ZodString;
587
661
  slot: z.ZodNumber;
@@ -609,8 +683,9 @@ export declare const runtimeContract: {
609
683
  }, z.core.$strip>, z.ZodObject<{
610
684
  actionOutputs: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
611
685
  actionInvocationId: z.ZodString;
612
- outcomeSeq: z.ZodNumber;
686
+ contextId: z.ZodString;
613
687
  slot: z.ZodNumber;
688
+ outcomeSeq: z.ZodNumber;
614
689
  status: z.ZodLiteral<"failed">;
615
690
  failure: z.ZodObject<{
616
691
  message: z.ZodString;
@@ -618,46 +693,68 @@ export declare const runtimeContract: {
618
693
  }, z.core.$strip>;
619
694
  }, z.core.$strip>, z.ZodObject<{
620
695
  actionInvocationId: z.ZodString;
696
+ contextId: z.ZodString;
621
697
  outcomeSeq: z.ZodNumber;
622
- reason: z.ZodLiteral<"closed-dependency">;
623
698
  slot: z.ZodNumber;
699
+ reason: z.ZodLiteral<"closed-dependency">;
624
700
  status: z.ZodLiteral<"skipped">;
625
701
  }, z.core.$strip>, z.ZodObject<{
626
702
  actionInvocationId: z.ZodString;
703
+ contextId: z.ZodString;
704
+ outcomeSeq: z.ZodNumber;
705
+ slot: z.ZodNumber;
627
706
  failure: z.ZodObject<{
628
707
  message: z.ZodString;
629
708
  name: z.ZodString;
630
709
  }, z.core.$strip>;
631
- outcomeSeq: z.ZodNumber;
632
710
  reason: z.ZodLiteral<"failed-dependency">;
633
- slot: z.ZodNumber;
634
711
  status: z.ZodLiteral<"skipped">;
635
712
  }, z.core.$strip>, z.ZodObject<{
636
713
  actionInvocationId: z.ZodString;
714
+ contextId: z.ZodString;
637
715
  outcomeSeq: z.ZodNumber;
638
- output: z.ZodOptional<z.ZodCustom<import("@automate.ax/codec").Encodable, import("@automate.ax/codec").Encodable>>;
639
716
  slot: z.ZodNumber;
717
+ output: z.ZodOptional<z.ZodCustom<import("@automate.ax/codec").Encodable, import("@automate.ax/codec").Encodable>>;
640
718
  status: z.ZodLiteral<"succeeded">;
641
719
  }, z.core.$strip>]>>;
720
+ bufferGroups: z.ZodArray<z.ZodObject<{
721
+ items: z.ZodArray<z.ZodObject<{
722
+ actionDependencyIds: z.ZodArray<z.ZodString>;
723
+ eventDependencyIds: z.ZodArray<z.ZodString>;
724
+ signalDependencyIds: z.ZodArray<z.ZodString>;
725
+ contextId: z.ZodString;
726
+ }, z.core.$strip>>;
727
+ signalInvocationId: z.ZodString;
728
+ }, z.core.$strip>>;
642
729
  contextId: z.ZodString;
730
+ contextParents: z.ZodArray<z.ZodObject<{
731
+ contextId: z.ZodString;
732
+ isPrimary: z.ZodBoolean;
733
+ parentContextId: z.ZodString;
734
+ position: z.ZodNumber;
735
+ }, z.core.$strip>>;
643
736
  events: z.ZodArray<z.ZodObject<{
644
737
  automationEventId: z.ZodString;
738
+ contextId: z.ZodString;
645
739
  outcomeSeq: z.ZodNumber;
646
740
  payload: z.ZodOptional<z.ZodCustom<import("@automate.ax/codec").Encodable, import("@automate.ax/codec").Encodable>>;
647
741
  slot: z.ZodNumber;
648
742
  }, z.core.$strip>>;
649
743
  signalOutputs: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
744
+ contextId: z.ZodString;
650
745
  outcomeSeq: z.ZodNumber;
651
746
  signalInvocationId: z.ZodString;
652
747
  slot: z.ZodNumber;
653
748
  selectedIndex: z.ZodOptional<z.ZodNumber>;
654
749
  status: z.ZodLiteral<"open">;
655
750
  }, z.core.$strip>, z.ZodObject<{
751
+ contextId: z.ZodString;
656
752
  outcomeSeq: z.ZodNumber;
657
753
  signalInvocationId: z.ZodString;
658
754
  slot: z.ZodNumber;
659
755
  status: z.ZodLiteral<"closed">;
660
756
  }, z.core.$strip>, z.ZodObject<{
757
+ contextId: z.ZodString;
661
758
  outcomeSeq: z.ZodNumber;
662
759
  signalInvocationId: z.ZodString;
663
760
  slot: z.ZodNumber;
@@ -667,6 +764,7 @@ export declare const runtimeContract: {
667
764
  }, z.core.$strip>;
668
765
  status: z.ZodLiteral<"failed">;
669
766
  }, z.core.$strip>, z.ZodObject<{
767
+ contextId: z.ZodString;
670
768
  outcomeSeq: z.ZodNumber;
671
769
  signalInvocationId: z.ZodString;
672
770
  slot: z.ZodNumber;
package/dist/runtime.js CHANGED
@@ -80,6 +80,7 @@ const ACTION_INVOCATION_SCHEMA = z.union([
80
80
  ]);
81
81
  const ACTION_RUN_INVOCATION_BASE_SCHEMA = ACTION_INVOCATION_BASE_SCHEMA.extend({
82
82
  actionInvocationId: z.string(),
83
+ contextId: z.string(),
83
84
  });
84
85
  const ACTION_RUN_INVOCATION_SCHEMA = z.union([
85
86
  ACTION_RUN_INVOCATION_BASE_SCHEMA.extend({ status: z.literal("pending") }),
@@ -110,14 +111,59 @@ const SIGNAL_INVOCATION_DEPENDENCIES_SCHEMA = z.object({
110
111
  signalDependencyIds: z.string().array(),
111
112
  slot: z.number().int().nonnegative(),
112
113
  });
114
+ const BUFFER_PARAMETER_DEPENDENCIES_SCHEMA = z.object({
115
+ parameterActionDependencyIds: z.string().array(),
116
+ parameterEventDependencyIds: z.string().array(),
117
+ parameterSignalDependencyIds: z.string().array(),
118
+ });
119
+ const BUFFER_PRIMARY_POSITION_SCHEMA = z.enum(["first", "last"]);
120
+ const CORRELATION_STREAM_NAMES_SCHEMA = z
121
+ .string()
122
+ .min(1)
123
+ .array()
124
+ .min(2)
125
+ .refine((names) => new Set(names).size === names.length, {
126
+ message: "Correlation stream names must be unique.",
127
+ });
113
128
  const CORRELATION_ENTRY_SCHEMA = SIGNAL_INVOCATION_DEPENDENCIES_SCHEMA.extend({
114
129
  key: encodableSchema,
115
- order: z.string().min(1).array().min(2).optional(),
130
+ order: CORRELATION_STREAM_NAMES_SCHEMA.optional(),
116
131
  outcomeSeq: OUTCOME_SEQUENCE_SCHEMA,
117
132
  streamName: z.string().min(1),
118
- streamNames: z.string().min(1).array().min(2),
133
+ streamNames: CORRELATION_STREAM_NAMES_SCHEMA,
119
134
  ttl: z.union([z.string().min(1), z.number().nonnegative()]).optional(),
135
+ }).superRefine((entry, context) => {
136
+ if (!entry.streamNames.includes(entry.streamName)) {
137
+ context.addIssue({
138
+ code: "custom",
139
+ message: "Correlation stream must be included in streamNames.",
140
+ path: ["streamName"],
141
+ });
142
+ }
143
+ if (entry.order &&
144
+ (entry.order.length !== entry.streamNames.length ||
145
+ entry.order.some((name) => !entry.streamNames.includes(name)))) {
146
+ context.addIssue({
147
+ code: "custom",
148
+ message: "Correlation order must name every stream exactly once.",
149
+ path: ["order"],
150
+ });
151
+ }
120
152
  });
153
+ const COLLECTION_ENTRY_SCHEMA = SIGNAL_INVOCATION_DEPENDENCIES_SCHEMA.extend({
154
+ count: z.number().int().positive(),
155
+ key: encodableSchema,
156
+ outcomeSeq: OUTCOME_SEQUENCE_SCHEMA,
157
+ primaryPosition: BUFFER_PRIMARY_POSITION_SCHEMA,
158
+ ttl: z.union([z.string().min(1), z.number().nonnegative()]).optional(),
159
+ }).extend(BUFFER_PARAMETER_DEPENDENCIES_SCHEMA.shape);
160
+ const WINDOW_ENTRY_SCHEMA = SIGNAL_INVOCATION_DEPENDENCIES_SCHEMA.extend({
161
+ duration: z.union([z.string().min(1), z.number().nonnegative()]),
162
+ key: encodableSchema,
163
+ outcomeSeq: OUTCOME_SEQUENCE_SCHEMA,
164
+ primaryPosition: BUFFER_PRIMARY_POSITION_SCHEMA,
165
+ ttl: z.union([z.string().min(1), z.number().nonnegative()]).optional(),
166
+ }).extend(BUFFER_PARAMETER_DEPENDENCIES_SCHEMA.shape);
121
167
  const SIGNAL_INVOCATION_SCHEMA = z.union([
122
168
  SIGNAL_INVOCATION_DEPENDENCIES_SCHEMA.extend({
123
169
  outcomeSeq: OUTCOME_SEQUENCE_SCHEMA.optional(),
@@ -134,6 +180,7 @@ const SIGNAL_INVOCATION_SCHEMA = z.union([
134
180
  }),
135
181
  ]);
136
182
  const SIGNAL_BATCH_OUTCOME_BASE_SCHEMA = SIGNAL_INVOCATION_DEPENDENCIES_SCHEMA.extend({
183
+ contextId: z.string(),
137
184
  outcomeSeq: OUTCOME_SEQUENCE_SCHEMA,
138
185
  signalInvocationId: z.string(),
139
186
  });
@@ -149,42 +196,50 @@ const SIGNAL_BATCH_OUTCOME_SCHEMA = z.union([
149
196
  }),
150
197
  SIGNAL_BATCH_OUTCOME_BASE_SCHEMA.extend({ status: z.literal("succeeded") }),
151
198
  ]);
199
+ const ACTION_VALUE_OUTCOME_BASE_SCHEMA = z.object({
200
+ actionInvocationId: z.string(),
201
+ contextId: z.string(),
202
+ outcomeSeq: OUTCOME_SEQUENCE_SCHEMA,
203
+ slot: z.number().int(),
204
+ });
152
205
  const ACTION_VALUE_OUTCOME_SCHEMA = z.union([
153
- z.object({
154
- actionInvocationId: z.string(),
206
+ ACTION_VALUE_OUTCOME_BASE_SCHEMA.extend({
155
207
  outcomeSeq: OUTCOME_SEQUENCE_SCHEMA,
156
- slot: z.number().int(),
157
208
  status: z.literal("failed"),
158
209
  failure: SIGNAL_FAILURE_SCHEMA,
159
210
  }),
160
- z.object({
161
- actionInvocationId: z.string(),
162
- outcomeSeq: OUTCOME_SEQUENCE_SCHEMA,
211
+ ACTION_VALUE_OUTCOME_BASE_SCHEMA.extend({
163
212
  reason: z.literal("closed-dependency"),
164
- slot: z.number().int(),
165
213
  status: z.literal("skipped"),
166
214
  }),
167
- z.object({
168
- actionInvocationId: z.string(),
215
+ ACTION_VALUE_OUTCOME_BASE_SCHEMA.extend({
169
216
  failure: SIGNAL_FAILURE_SCHEMA,
170
- outcomeSeq: OUTCOME_SEQUENCE_SCHEMA,
171
217
  reason: z.literal("failed-dependency"),
172
- slot: z.number().int(),
173
218
  status: z.literal("skipped"),
174
219
  }),
175
- z.object({
176
- actionInvocationId: z.string(),
177
- outcomeSeq: OUTCOME_SEQUENCE_SCHEMA,
220
+ ACTION_VALUE_OUTCOME_BASE_SCHEMA.extend({
178
221
  output: encodableSchema,
179
- slot: z.number().int(),
180
222
  status: z.literal("succeeded"),
181
223
  }),
182
224
  ]);
183
225
  const SIGNAL_VALUE_OUTCOME_BASE_SCHEMA = z.object({
226
+ contextId: z.string(),
184
227
  outcomeSeq: OUTCOME_SEQUENCE_SCHEMA,
185
228
  signalInvocationId: z.string(),
186
229
  slot: z.number().int(),
187
230
  });
231
+ const RUNTIME_CONTEXT_PARENT_SCHEMA = z.object({
232
+ contextId: z.string(),
233
+ isPrimary: z.boolean(),
234
+ parentContextId: z.string(),
235
+ position: z.number().int().nonnegative(),
236
+ });
237
+ const BUFFER_VALUE_GROUP_SCHEMA = z.object({
238
+ items: SIGNAL_INVOCATION_DEPENDENCIES_SCHEMA.omit({ slot: true })
239
+ .extend({ contextId: z.string() })
240
+ .array(),
241
+ signalInvocationId: z.string(),
242
+ });
188
243
  const SIGNAL_VALUE_OUTCOME_SCHEMA = z.union([
189
244
  SIGNAL_VALUE_OUTCOME_BASE_SCHEMA.extend({
190
245
  selectedIndex: z.number().int().nonnegative().optional(),
@@ -202,10 +257,13 @@ const SIGNAL_VALUE_OUTCOME_SCHEMA = z.union([
202
257
  ]);
203
258
  const RUNTIME_VALUE_CONTEXT_SCHEMA = z.object({
204
259
  actionOutputs: ACTION_VALUE_OUTCOME_SCHEMA.array(),
260
+ bufferGroups: BUFFER_VALUE_GROUP_SCHEMA.array(),
205
261
  contextId: z.string(),
262
+ contextParents: RUNTIME_CONTEXT_PARENT_SCHEMA.array(),
206
263
  events: z
207
264
  .object({
208
265
  automationEventId: z.string(),
266
+ contextId: z.string(),
209
267
  outcomeSeq: OUTCOME_SEQUENCE_SCHEMA,
210
268
  payload: encodableSchema,
211
269
  slot: z.number().int(),
@@ -216,9 +274,11 @@ const RUNTIME_VALUE_CONTEXT_SCHEMA = z.object({
216
274
  const RUNTIME_RUN_CONTEXT_SCHEMA = z.object({
217
275
  actions: ACTION_RUN_INVOCATION_SCHEMA.array(),
218
276
  contextId: z.string(),
277
+ contextParents: RUNTIME_CONTEXT_PARENT_SCHEMA.array(),
219
278
  events: z
220
279
  .object({
221
280
  automationEventId: z.string(),
281
+ contextId: z.string(),
222
282
  outcomeSeq: OUTCOME_SEQUENCE_SCHEMA,
223
283
  slot: z.number().int(),
224
284
  })
@@ -357,9 +417,11 @@ export const runtimeContract = {
357
417
  commit: oc
358
418
  .input(z.object({
359
419
  actionInvocations: ACTION_INVOCATION_SCHEMA.array().default([]),
420
+ collectionEntries: COLLECTION_ENTRY_SCHEMA.array().default([]),
360
421
  correlationEntries: CORRELATION_ENTRY_SCHEMA.array().default([]),
361
422
  settled: z.boolean().default(true),
362
423
  signalInvocations: SIGNAL_INVOCATION_SCHEMA.array().default([]),
424
+ windowEntries: WINDOW_ENTRY_SCHEMA.array().default([]),
363
425
  }))
364
426
  .output(z.void()),
365
427
  completeAction: oc
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@automate.ax/api-contract",
3
- "version": "0.55.0",
3
+ "version": "0.56.0",
4
4
  "description": "Public oRPC contract for the Automate.ax API.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -28,7 +28,7 @@
28
28
  },
29
29
  "dependencies": {
30
30
  "@ai-sdk/gateway": "^4.0.46",
31
- "@automate.ax/codec": "0.55.0",
31
+ "@automate.ax/codec": "0.56.0",
32
32
  "@orpc/contract": "1.15.0",
33
33
  "zod": "^4.3.6"
34
34
  },
package/src/runtime.ts CHANGED
@@ -94,6 +94,7 @@ const ACTION_INVOCATION_SCHEMA = z.union([
94
94
 
95
95
  const ACTION_RUN_INVOCATION_BASE_SCHEMA = ACTION_INVOCATION_BASE_SCHEMA.extend({
96
96
  actionInvocationId: z.string(),
97
+ contextId: z.string(),
97
98
  })
98
99
 
99
100
  const ACTION_RUN_INVOCATION_SCHEMA = z.union([
@@ -127,15 +128,66 @@ const SIGNAL_INVOCATION_DEPENDENCIES_SCHEMA = z.object({
127
128
  slot: z.number().int().nonnegative(),
128
129
  })
129
130
 
131
+ const BUFFER_PARAMETER_DEPENDENCIES_SCHEMA = z.object({
132
+ parameterActionDependencyIds: z.string().array(),
133
+ parameterEventDependencyIds: z.string().array(),
134
+ parameterSignalDependencyIds: z.string().array(),
135
+ })
136
+
137
+ const BUFFER_PRIMARY_POSITION_SCHEMA = z.enum(["first", "last"])
138
+ const CORRELATION_STREAM_NAMES_SCHEMA = z
139
+ .string()
140
+ .min(1)
141
+ .array()
142
+ .min(2)
143
+ .refine((names) => new Set(names).size === names.length, {
144
+ message: "Correlation stream names must be unique.",
145
+ })
146
+
130
147
  const CORRELATION_ENTRY_SCHEMA = SIGNAL_INVOCATION_DEPENDENCIES_SCHEMA.extend({
131
148
  key: encodableSchema,
132
- order: z.string().min(1).array().min(2).optional(),
149
+ order: CORRELATION_STREAM_NAMES_SCHEMA.optional(),
133
150
  outcomeSeq: OUTCOME_SEQUENCE_SCHEMA,
134
151
  streamName: z.string().min(1),
135
- streamNames: z.string().min(1).array().min(2),
152
+ streamNames: CORRELATION_STREAM_NAMES_SCHEMA,
136
153
  ttl: z.union([z.string().min(1), z.number().nonnegative()]).optional(),
154
+ }).superRefine((entry, context) => {
155
+ if (!entry.streamNames.includes(entry.streamName)) {
156
+ context.addIssue({
157
+ code: "custom",
158
+ message: "Correlation stream must be included in streamNames.",
159
+ path: ["streamName"],
160
+ })
161
+ }
162
+ if (
163
+ entry.order &&
164
+ (entry.order.length !== entry.streamNames.length ||
165
+ entry.order.some((name) => !entry.streamNames.includes(name)))
166
+ ) {
167
+ context.addIssue({
168
+ code: "custom",
169
+ message: "Correlation order must name every stream exactly once.",
170
+ path: ["order"],
171
+ })
172
+ }
137
173
  })
138
174
 
175
+ const COLLECTION_ENTRY_SCHEMA = SIGNAL_INVOCATION_DEPENDENCIES_SCHEMA.extend({
176
+ count: z.number().int().positive(),
177
+ key: encodableSchema,
178
+ outcomeSeq: OUTCOME_SEQUENCE_SCHEMA,
179
+ primaryPosition: BUFFER_PRIMARY_POSITION_SCHEMA,
180
+ ttl: z.union([z.string().min(1), z.number().nonnegative()]).optional(),
181
+ }).extend(BUFFER_PARAMETER_DEPENDENCIES_SCHEMA.shape)
182
+
183
+ const WINDOW_ENTRY_SCHEMA = SIGNAL_INVOCATION_DEPENDENCIES_SCHEMA.extend({
184
+ duration: z.union([z.string().min(1), z.number().nonnegative()]),
185
+ key: encodableSchema,
186
+ outcomeSeq: OUTCOME_SEQUENCE_SCHEMA,
187
+ primaryPosition: BUFFER_PRIMARY_POSITION_SCHEMA,
188
+ ttl: z.union([z.string().min(1), z.number().nonnegative()]).optional(),
189
+ }).extend(BUFFER_PARAMETER_DEPENDENCIES_SCHEMA.shape)
190
+
139
191
  const SIGNAL_INVOCATION_SCHEMA = z.union([
140
192
  SIGNAL_INVOCATION_DEPENDENCIES_SCHEMA.extend({
141
193
  outcomeSeq: OUTCOME_SEQUENCE_SCHEMA.optional(),
@@ -154,6 +206,7 @@ const SIGNAL_INVOCATION_SCHEMA = z.union([
154
206
 
155
207
  const SIGNAL_BATCH_OUTCOME_BASE_SCHEMA =
156
208
  SIGNAL_INVOCATION_DEPENDENCIES_SCHEMA.extend({
209
+ contextId: z.string(),
157
210
  outcomeSeq: OUTCOME_SEQUENCE_SCHEMA,
158
211
  signalInvocationId: z.string(),
159
212
  })
@@ -171,44 +224,55 @@ const SIGNAL_BATCH_OUTCOME_SCHEMA = z.union([
171
224
  SIGNAL_BATCH_OUTCOME_BASE_SCHEMA.extend({ status: z.literal("succeeded") }),
172
225
  ])
173
226
 
227
+ const ACTION_VALUE_OUTCOME_BASE_SCHEMA = z.object({
228
+ actionInvocationId: z.string(),
229
+ contextId: z.string(),
230
+ outcomeSeq: OUTCOME_SEQUENCE_SCHEMA,
231
+ slot: z.number().int(),
232
+ })
233
+
174
234
  const ACTION_VALUE_OUTCOME_SCHEMA = z.union([
175
- z.object({
176
- actionInvocationId: z.string(),
235
+ ACTION_VALUE_OUTCOME_BASE_SCHEMA.extend({
177
236
  outcomeSeq: OUTCOME_SEQUENCE_SCHEMA,
178
- slot: z.number().int(),
179
237
  status: z.literal("failed"),
180
238
  failure: SIGNAL_FAILURE_SCHEMA,
181
239
  }),
182
- z.object({
183
- actionInvocationId: z.string(),
184
- outcomeSeq: OUTCOME_SEQUENCE_SCHEMA,
240
+ ACTION_VALUE_OUTCOME_BASE_SCHEMA.extend({
185
241
  reason: z.literal("closed-dependency"),
186
- slot: z.number().int(),
187
242
  status: z.literal("skipped"),
188
243
  }),
189
- z.object({
190
- actionInvocationId: z.string(),
244
+ ACTION_VALUE_OUTCOME_BASE_SCHEMA.extend({
191
245
  failure: SIGNAL_FAILURE_SCHEMA,
192
- outcomeSeq: OUTCOME_SEQUENCE_SCHEMA,
193
246
  reason: z.literal("failed-dependency"),
194
- slot: z.number().int(),
195
247
  status: z.literal("skipped"),
196
248
  }),
197
- z.object({
198
- actionInvocationId: z.string(),
199
- outcomeSeq: OUTCOME_SEQUENCE_SCHEMA,
249
+ ACTION_VALUE_OUTCOME_BASE_SCHEMA.extend({
200
250
  output: encodableSchema,
201
- slot: z.number().int(),
202
251
  status: z.literal("succeeded"),
203
252
  }),
204
253
  ])
205
254
 
206
255
  const SIGNAL_VALUE_OUTCOME_BASE_SCHEMA = z.object({
256
+ contextId: z.string(),
207
257
  outcomeSeq: OUTCOME_SEQUENCE_SCHEMA,
208
258
  signalInvocationId: z.string(),
209
259
  slot: z.number().int(),
210
260
  })
211
261
 
262
+ const RUNTIME_CONTEXT_PARENT_SCHEMA = z.object({
263
+ contextId: z.string(),
264
+ isPrimary: z.boolean(),
265
+ parentContextId: z.string(),
266
+ position: z.number().int().nonnegative(),
267
+ })
268
+
269
+ const BUFFER_VALUE_GROUP_SCHEMA = z.object({
270
+ items: SIGNAL_INVOCATION_DEPENDENCIES_SCHEMA.omit({ slot: true })
271
+ .extend({ contextId: z.string() })
272
+ .array(),
273
+ signalInvocationId: z.string(),
274
+ })
275
+
212
276
  const SIGNAL_VALUE_OUTCOME_SCHEMA = z.union([
213
277
  SIGNAL_VALUE_OUTCOME_BASE_SCHEMA.extend({
214
278
  selectedIndex: z.number().int().nonnegative().optional(),
@@ -227,10 +291,13 @@ const SIGNAL_VALUE_OUTCOME_SCHEMA = z.union([
227
291
 
228
292
  const RUNTIME_VALUE_CONTEXT_SCHEMA = z.object({
229
293
  actionOutputs: ACTION_VALUE_OUTCOME_SCHEMA.array(),
294
+ bufferGroups: BUFFER_VALUE_GROUP_SCHEMA.array(),
230
295
  contextId: z.string(),
296
+ contextParents: RUNTIME_CONTEXT_PARENT_SCHEMA.array(),
231
297
  events: z
232
298
  .object({
233
299
  automationEventId: z.string(),
300
+ contextId: z.string(),
234
301
  outcomeSeq: OUTCOME_SEQUENCE_SCHEMA,
235
302
  payload: encodableSchema,
236
303
  slot: z.number().int(),
@@ -242,9 +309,11 @@ const RUNTIME_VALUE_CONTEXT_SCHEMA = z.object({
242
309
  const RUNTIME_RUN_CONTEXT_SCHEMA = z.object({
243
310
  actions: ACTION_RUN_INVOCATION_SCHEMA.array(),
244
311
  contextId: z.string(),
312
+ contextParents: RUNTIME_CONTEXT_PARENT_SCHEMA.array(),
245
313
  events: z
246
314
  .object({
247
315
  automationEventId: z.string(),
316
+ contextId: z.string(),
248
317
  outcomeSeq: OUTCOME_SEQUENCE_SCHEMA,
249
318
  slot: z.number().int(),
250
319
  })
@@ -406,9 +475,11 @@ export const runtimeContract = {
406
475
  .input(
407
476
  z.object({
408
477
  actionInvocations: ACTION_INVOCATION_SCHEMA.array().default([]),
478
+ collectionEntries: COLLECTION_ENTRY_SCHEMA.array().default([]),
409
479
  correlationEntries: CORRELATION_ENTRY_SCHEMA.array().default([]),
410
480
  settled: z.boolean().default(true),
411
481
  signalInvocations: SIGNAL_INVOCATION_SCHEMA.array().default([]),
482
+ windowEntries: WINDOW_ENTRY_SCHEMA.array().default([]),
412
483
  }),
413
484
  )
414
485
  .output(z.void()),