@kammcs/buildit-mcp 0.7.0 → 0.8.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/CHANGELOG.md +33 -0
- package/README.md +27 -6
- package/dist/api/generated/operations.js +175 -3
- package/dist/api/generated/schemas.js +259 -4
- package/dist/api/generated/strict.js +292 -4
- package/dist/capabilities.js +236 -0
- package/dist/channel/api.js +32 -1
- package/dist/channel/handoffs.js +190 -0
- package/dist/channel/item-events.js +29 -3
- package/dist/channel/loop.js +262 -4
- package/dist/cli/commands.js +29 -1
- package/dist/config.js +27 -0
- package/dist/errors.js +11 -1
- package/dist/server.js +9 -1
- package/dist/tools/handoff.js +409 -0
- package/dist/tools/items-read.js +1 -0
- package/dist/tools/items-write.js +11 -1
- package/dist/tools/shared.js +14 -0
- package/dist/tools/threads.js +26 -0
- package/dist/tools/whoami.js +36 -0
- package/dist/transports/stdio.js +36 -14
- package/package.json +1 -1
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Exact schemas for the agent API: closed objects and enums, patterns and bounds. The test fake uses them to check requests and its own responses against the contract; the server parses responses with the tolerant schemas.ts.
|
|
3
3
|
*
|
|
4
4
|
* GENERATED by scripts/generate.ts from openapi/openapi.json (agent API
|
|
5
|
-
* 1.
|
|
5
|
+
* 1.9.0). Do not edit: change the contract, then run
|
|
6
6
|
* `npm run generate`.
|
|
7
7
|
*/
|
|
8
8
|
import { z } from 'zod';
|
|
@@ -31,6 +31,8 @@ export const ApprovalRuleEntrySchema = z.strictObject({
|
|
|
31
31
|
toolName: z.string().regex(new RegExp('^[A-Za-z0-9][A-Za-z0-9_.:-]{0,99}$', 'u')),
|
|
32
32
|
ruleContent: z.string().optional(),
|
|
33
33
|
});
|
|
34
|
+
export const CapabilitySchema = z.string().regex(new RegExp('^[a-z0-9][a-z0-9+._-]{0,31}$', 'u'));
|
|
35
|
+
export const CapabilityInSchema = z.string().min(1).max(64);
|
|
34
36
|
export const CardAnswerSchema = z.union([
|
|
35
37
|
z.strictObject({ action: z.string().min(1).max(40) }),
|
|
36
38
|
z.strictObject({ inputs: z.record(z.string(), z.union([z.string(), z.array(z.string())])) }),
|
|
@@ -58,6 +60,7 @@ export const CustomValueInSchema = z
|
|
|
58
60
|
export const DateSchema = z
|
|
59
61
|
.string()
|
|
60
62
|
.regex(new RegExp('^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$', 'u'));
|
|
63
|
+
export const DeclineSessionHandoffRequestSchema = z.strictObject({ reason: z.string() });
|
|
61
64
|
export const DevelopmentBranchSchema = z.strictObject({
|
|
62
65
|
name: z.string(),
|
|
63
66
|
state: z.enum(['active', 'deleted']),
|
|
@@ -89,6 +92,7 @@ export const EntityKindSchema = z.enum([
|
|
|
89
92
|
'response',
|
|
90
93
|
'agent',
|
|
91
94
|
'approval',
|
|
95
|
+
'handoff',
|
|
92
96
|
]);
|
|
93
97
|
export const EstimateSchema = z.number().min(0).max(9999.99);
|
|
94
98
|
export const EstimateScaleSchema = z.enum(['none', 'points', 'tshirt']);
|
|
@@ -197,6 +201,7 @@ export const RateLimitsSchema = z.strictObject({
|
|
|
197
201
|
polls_per_minute: z.int().optional(),
|
|
198
202
|
typing_per_minute: z.int().optional(),
|
|
199
203
|
approvals_per_minute: z.int().optional(),
|
|
204
|
+
handoffs_per_minute: z.int().optional(),
|
|
200
205
|
});
|
|
201
206
|
export const ReleaseRefSchema = z.string().min(1).max(80);
|
|
202
207
|
export const ReleaseStatusSchema = z.enum(['unreleased', 'released', 'archived']);
|
|
@@ -291,6 +296,7 @@ export const ConnectStartRequestSchema = z.strictObject({
|
|
|
291
296
|
machine: z.string().min(1).max(64),
|
|
292
297
|
label: z.string().min(1).max(40),
|
|
293
298
|
projects: z.array(ProjectRefSchema).min(1).max(10),
|
|
299
|
+
capabilities: z.array(CapabilityInSchema).max(20).optional(),
|
|
294
300
|
});
|
|
295
301
|
export const ConnectStartResponseSchema = z.strictObject({
|
|
296
302
|
device_code: DeviceCodeSchema,
|
|
@@ -488,7 +494,9 @@ export const ErrorSchema = z.strictObject({
|
|
|
488
494
|
code: z.literal('method_not_allowed'),
|
|
489
495
|
message: z.string().min(1),
|
|
490
496
|
hint: z.string().optional(),
|
|
491
|
-
details: z.strictObject({
|
|
497
|
+
details: z.strictObject({
|
|
498
|
+
allowed: z.array(z.enum(['GET', 'POST', 'PUT', 'PATCH', 'DELETE'])),
|
|
499
|
+
}),
|
|
492
500
|
}),
|
|
493
501
|
z.strictObject({
|
|
494
502
|
code: z.literal('conflict'),
|
|
@@ -627,6 +635,7 @@ export const ErrorSchema = z.strictObject({
|
|
|
627
635
|
'connect_pending_per_address',
|
|
628
636
|
'session_typing_per_minute',
|
|
629
637
|
'session_approvals_per_minute',
|
|
638
|
+
'session_handoffs_per_minute',
|
|
630
639
|
]),
|
|
631
640
|
}),
|
|
632
641
|
}),
|
|
@@ -802,6 +811,7 @@ export const ErrorSchema = z.strictObject({
|
|
|
802
811
|
'projects_off',
|
|
803
812
|
'not_in_channel',
|
|
804
813
|
'archived',
|
|
814
|
+
'item_deleted',
|
|
805
815
|
]),
|
|
806
816
|
}),
|
|
807
817
|
}),
|
|
@@ -828,6 +838,62 @@ export const ErrorSchema = z.strictObject({
|
|
|
828
838
|
hint: z.string().optional(),
|
|
829
839
|
details: z.strictObject({ open: z.int().min(0) }),
|
|
830
840
|
}),
|
|
841
|
+
z.strictObject({
|
|
842
|
+
code: z.literal('handoffs_off'),
|
|
843
|
+
message: z.string().min(1),
|
|
844
|
+
hint: z.string().optional(),
|
|
845
|
+
details: z.strictObject({ by: z.enum(['platform']) }),
|
|
846
|
+
}),
|
|
847
|
+
z.strictObject({
|
|
848
|
+
code: z.literal('not_parent_session'),
|
|
849
|
+
message: z.string().min(1),
|
|
850
|
+
hint: z.string().optional(),
|
|
851
|
+
details: z.strictObject({
|
|
852
|
+
item_id: z
|
|
853
|
+
.string()
|
|
854
|
+
.regex(new RegExp('^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'u')),
|
|
855
|
+
}),
|
|
856
|
+
}),
|
|
857
|
+
z.strictObject({
|
|
858
|
+
code: z.literal('handoff_not_allowed'),
|
|
859
|
+
message: z.string().min(1),
|
|
860
|
+
hint: z.string().optional(),
|
|
861
|
+
details: z.strictObject({
|
|
862
|
+
reason: z.enum([
|
|
863
|
+
'needs_missing',
|
|
864
|
+
'closed',
|
|
865
|
+
'agent_assigned',
|
|
866
|
+
'person_assigned',
|
|
867
|
+
'other_session',
|
|
868
|
+
]),
|
|
869
|
+
}),
|
|
870
|
+
}),
|
|
871
|
+
z.strictObject({
|
|
872
|
+
code: z.literal('handoff_exists'),
|
|
873
|
+
message: z.string().min(1),
|
|
874
|
+
hint: z.string().optional(),
|
|
875
|
+
details: z.strictObject({
|
|
876
|
+
handoff_id: z
|
|
877
|
+
.string()
|
|
878
|
+
.regex(new RegExp('^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'u')),
|
|
879
|
+
}),
|
|
880
|
+
}),
|
|
881
|
+
z.strictObject({
|
|
882
|
+
code: z.literal('no_target'),
|
|
883
|
+
message: z.string().min(1),
|
|
884
|
+
hint: z.string().optional(),
|
|
885
|
+
details: z.strictObject({ needs: z.array(z.string()) }),
|
|
886
|
+
}),
|
|
887
|
+
z.strictObject({
|
|
888
|
+
code: z.literal('handoff_closed'),
|
|
889
|
+
message: z.string().min(1),
|
|
890
|
+
hint: z.string().optional(),
|
|
891
|
+
details: z.strictObject({
|
|
892
|
+
handoff_id: z
|
|
893
|
+
.string()
|
|
894
|
+
.regex(new RegExp('^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$', 'u')),
|
|
895
|
+
}),
|
|
896
|
+
}),
|
|
831
897
|
]),
|
|
832
898
|
});
|
|
833
899
|
export const FeedbackSchema = z.strictObject({
|
|
@@ -893,6 +959,7 @@ export const ItemBriefSchema = z.strictObject({
|
|
|
893
959
|
key: ItemKeySchema,
|
|
894
960
|
title: z.string(),
|
|
895
961
|
});
|
|
962
|
+
export const ItemIdKeySchema = z.strictObject({ id: UuidSchema, key: z.string() });
|
|
896
963
|
export const LabelSchema = z.strictObject({
|
|
897
964
|
id: UuidSchema,
|
|
898
965
|
name: z.string(),
|
|
@@ -987,6 +1054,10 @@ export const ProjectTypeSchema = z.strictObject({
|
|
|
987
1054
|
color: ColorSchema.nullable(),
|
|
988
1055
|
workflow: z.strictObject({ id: UuidSchema, name: z.string() }),
|
|
989
1056
|
});
|
|
1057
|
+
export const ProposeSessionHandoffRequestSchema = z.strictObject({
|
|
1058
|
+
id: UuidSchema,
|
|
1059
|
+
item: ItemRefSchema,
|
|
1060
|
+
});
|
|
990
1061
|
export const RankPositionSchema = z.strictObject({
|
|
991
1062
|
before: ItemRefSchema.optional(),
|
|
992
1063
|
after: ItemRefSchema.optional(),
|
|
@@ -1056,6 +1127,10 @@ export const SessionApprovalSchema = z.strictObject({
|
|
|
1056
1127
|
decided_at: TimestampSchema.optional(),
|
|
1057
1128
|
});
|
|
1058
1129
|
export const SessionBriefSchema = z.strictObject({ id: UuidSchema, label: z.string() });
|
|
1130
|
+
export const SessionCapabilitiesResponseSchema = z.strictObject({
|
|
1131
|
+
capabilities: z.array(CapabilitySchema).max(20),
|
|
1132
|
+
capabilities_detected: z.array(CapabilitySchema).max(20),
|
|
1133
|
+
});
|
|
1059
1134
|
export const SessionCardMessageSchema = z.strictObject({
|
|
1060
1135
|
id: UuidSchema,
|
|
1061
1136
|
thread_id: UuidSchema.nullable(),
|
|
@@ -1070,6 +1145,29 @@ export const SessionCardResponseSchema = z.strictObject({
|
|
|
1070
1145
|
created_at: TimestampSchema,
|
|
1071
1146
|
updated_at: TimestampSchema,
|
|
1072
1147
|
});
|
|
1148
|
+
export const SessionChildItemSchema = z.strictObject({
|
|
1149
|
+
id: UuidSchema,
|
|
1150
|
+
key: z.string(),
|
|
1151
|
+
title: z.string(),
|
|
1152
|
+
status: z
|
|
1153
|
+
.strictObject({ key: z.string().nullable(), name: z.string().nullable(), category: z.string() })
|
|
1154
|
+
.nullable(),
|
|
1155
|
+
});
|
|
1156
|
+
export const SessionChildResultSchema = z.strictObject({
|
|
1157
|
+
untrusted: z.literal(true),
|
|
1158
|
+
message: z.strictObject({
|
|
1159
|
+
id: UuidSchema,
|
|
1160
|
+
author: z.strictObject({
|
|
1161
|
+
kind: z.enum(['user', 'app', 'agent']),
|
|
1162
|
+
id: UuidSchema.nullable(),
|
|
1163
|
+
name: z.string(),
|
|
1164
|
+
}),
|
|
1165
|
+
from_owner: z.boolean(),
|
|
1166
|
+
via_agent: z.string().nullable(),
|
|
1167
|
+
text: z.string(),
|
|
1168
|
+
created_at: TimestampSchema,
|
|
1169
|
+
}),
|
|
1170
|
+
});
|
|
1073
1171
|
export const SessionContextMessageSchema = z.strictObject({
|
|
1074
1172
|
id: UuidSchema,
|
|
1075
1173
|
author: z.strictObject({
|
|
@@ -1137,6 +1235,9 @@ export const SessionTypingRequestSchema = z.strictObject({
|
|
|
1137
1235
|
thread_id: UuidSchema.nullable().optional(),
|
|
1138
1236
|
typing: z.boolean().optional(),
|
|
1139
1237
|
});
|
|
1238
|
+
export const SetSessionCapabilitiesRequestSchema = z.strictObject({
|
|
1239
|
+
detected: z.array(CapabilityInSchema).max(20),
|
|
1240
|
+
});
|
|
1140
1241
|
export const SprintSchema = z.strictObject({
|
|
1141
1242
|
id: UuidSchema,
|
|
1142
1243
|
number: z.int(),
|
|
@@ -1360,6 +1461,7 @@ export const CreateItemRequestSchema = z.strictObject({
|
|
|
1360
1461
|
assignee_agent: AgentRefSchema.optional(),
|
|
1361
1462
|
priority: PrioritySchema.optional(),
|
|
1362
1463
|
labels: z.array(LabelRefSchema).max(100).optional(),
|
|
1464
|
+
needs: z.array(CapabilityInSchema).max(10).optional(),
|
|
1363
1465
|
estimate: EstimateSchema.optional(),
|
|
1364
1466
|
start_date: DateSchema.optional(),
|
|
1365
1467
|
due_date: DateSchema.optional(),
|
|
@@ -1398,6 +1500,17 @@ export const FieldDefSchema = z.strictObject({
|
|
|
1398
1500
|
position: z.int(),
|
|
1399
1501
|
});
|
|
1400
1502
|
export const GetSessionApprovalResponseSchema = z.strictObject({ approval: SessionApprovalSchema });
|
|
1503
|
+
export const HandoffOptionSchema = z.strictObject({
|
|
1504
|
+
kind: z.enum(['session', 'agent']),
|
|
1505
|
+
agent: AgentBriefSchema,
|
|
1506
|
+
session: SessionBriefSchema.nullable(),
|
|
1507
|
+
online: z.boolean(),
|
|
1508
|
+
});
|
|
1509
|
+
export const HandoffTargetSchema = z.strictObject({
|
|
1510
|
+
kind: z.enum(['session', 'agent']),
|
|
1511
|
+
agent: AgentBriefSchema,
|
|
1512
|
+
session: SessionBriefSchema.nullable(),
|
|
1513
|
+
});
|
|
1401
1514
|
export const HistoryEventSchema = z.strictObject({
|
|
1402
1515
|
id: z.int(),
|
|
1403
1516
|
at: TimestampSchema,
|
|
@@ -1425,6 +1538,7 @@ export const ItemSummarySchema = z.strictObject({
|
|
|
1425
1538
|
parent: ItemBriefSchema.nullable(),
|
|
1426
1539
|
initiative: InitiativeBriefSchema.nullable(),
|
|
1427
1540
|
labels: z.array(LabelSchema),
|
|
1541
|
+
needs: z.array(CapabilitySchema).max(10).optional(),
|
|
1428
1542
|
estimate: z.number().nullable(),
|
|
1429
1543
|
start_date: DateSchema.nullable(),
|
|
1430
1544
|
due_date: DateSchema.nullable(),
|
|
@@ -1617,6 +1731,13 @@ export const SessionApprovalOutcomeSchema = z.strictObject({
|
|
|
1617
1731
|
decided_at: TimestampSchema.optional(),
|
|
1618
1732
|
rule: ApprovalRuleSchema.optional(),
|
|
1619
1733
|
});
|
|
1734
|
+
export const SessionAssignedHandoffSchema = z.strictObject({
|
|
1735
|
+
id: UuidSchema,
|
|
1736
|
+
parent: ItemIdKeySchema,
|
|
1737
|
+
from: z.strictObject({ agent: AgentBriefSchema, session: SessionBriefSchema.nullable() }),
|
|
1738
|
+
needs: z.array(CapabilitySchema),
|
|
1739
|
+
queued: z.boolean(),
|
|
1740
|
+
});
|
|
1620
1741
|
export const SessionCardResponseDataSchema = z.strictObject({
|
|
1621
1742
|
channel: z.strictObject({ id: UuidSchema, name: z.string().nullable() }),
|
|
1622
1743
|
message: SessionCardMessageSchema,
|
|
@@ -1677,6 +1798,8 @@ export const SessionResponseSchema = z.strictObject({
|
|
|
1677
1798
|
approved_at: TimestampSchema,
|
|
1678
1799
|
last_seen_at: TimestampSchema.nullable(),
|
|
1679
1800
|
expires_at: TimestampSchema,
|
|
1801
|
+
capabilities: z.array(CapabilitySchema).max(20).optional(),
|
|
1802
|
+
capabilities_detected: z.array(CapabilitySchema).max(20).optional(),
|
|
1680
1803
|
}),
|
|
1681
1804
|
agent: AgentBriefSchema,
|
|
1682
1805
|
owner: SessionOwnerSchema,
|
|
@@ -1696,10 +1819,29 @@ export const SessionThreadSchema = z.strictObject({
|
|
|
1696
1819
|
status: SessionItemStatusSchema.nullable(),
|
|
1697
1820
|
})
|
|
1698
1821
|
.nullable(),
|
|
1699
|
-
bound_reason: z.enum(['posted', 'routed', 'handed', 'assigned', 'mentioned']),
|
|
1822
|
+
bound_reason: z.enum(['posted', 'routed', 'handed', 'assigned', 'mentioned', 'handoff']),
|
|
1700
1823
|
bound_at: TimestampSchema,
|
|
1701
1824
|
last_owner_message_at: TimestampSchema.nullable(),
|
|
1702
1825
|
open_cards: z.int().min(0),
|
|
1826
|
+
handoff: z
|
|
1827
|
+
.strictObject({
|
|
1828
|
+
id: UuidSchema,
|
|
1829
|
+
role: z.enum(['target', 'asked']),
|
|
1830
|
+
status: z.enum([
|
|
1831
|
+
'proposed',
|
|
1832
|
+
'cancelled',
|
|
1833
|
+
'expired',
|
|
1834
|
+
'stale',
|
|
1835
|
+
'withdrawn',
|
|
1836
|
+
'closed',
|
|
1837
|
+
'handed',
|
|
1838
|
+
'declined',
|
|
1839
|
+
'ended',
|
|
1840
|
+
'finished',
|
|
1841
|
+
]),
|
|
1842
|
+
})
|
|
1843
|
+
.nullable()
|
|
1844
|
+
.optional(),
|
|
1703
1845
|
});
|
|
1704
1846
|
export const SprintItemsResponseSchema = z.strictObject({
|
|
1705
1847
|
sprint: SprintSchema,
|
|
@@ -1732,6 +1874,7 @@ export const UpdateItemRequestSchema = z.strictObject({
|
|
|
1732
1874
|
labels: z.array(LabelRefSchema).max(100).optional(),
|
|
1733
1875
|
add_labels: z.array(LabelRefSchema).max(100).optional(),
|
|
1734
1876
|
remove_labels: z.array(LabelRefSchema).max(100).optional(),
|
|
1877
|
+
needs: z.array(CapabilityInSchema).max(10).optional(),
|
|
1735
1878
|
estimate: EstimateSchema.nullable().optional(),
|
|
1736
1879
|
start_date: DateSchema.nullable().optional(),
|
|
1737
1880
|
due_date: DateSchema.nullable().optional(),
|
|
@@ -1918,6 +2061,31 @@ export const SessionCardResponseEventSchema = z.strictObject({
|
|
|
1918
2061
|
session: SessionBriefSchema,
|
|
1919
2062
|
data: SessionCardResponseDataSchema,
|
|
1920
2063
|
});
|
|
2064
|
+
export const SessionChildDoneDataSchema = z.strictObject({
|
|
2065
|
+
channel: z.strictObject({ id: UuidSchema, name: z.string().nullable() }),
|
|
2066
|
+
project: SessionEventProjectSchema,
|
|
2067
|
+
item: SessionEventItemSchema,
|
|
2068
|
+
child: SessionChildItemSchema,
|
|
2069
|
+
handoff: z.strictObject({
|
|
2070
|
+
id: UuidSchema,
|
|
2071
|
+
needs: z.array(CapabilitySchema),
|
|
2072
|
+
target: z.strictObject({ agent: AgentBriefSchema, session: SessionBriefSchema.nullable() }),
|
|
2073
|
+
}),
|
|
2074
|
+
outcome: z.enum(['in_review', 'done', 'declined', 'ended']),
|
|
2075
|
+
reason: z
|
|
2076
|
+
.enum([
|
|
2077
|
+
'canceled',
|
|
2078
|
+
'unassigned',
|
|
2079
|
+
'reassigned',
|
|
2080
|
+
'moved',
|
|
2081
|
+
'deleted',
|
|
2082
|
+
'owner_left',
|
|
2083
|
+
'agent_deleted',
|
|
2084
|
+
'expired',
|
|
2085
|
+
])
|
|
2086
|
+
.nullable(),
|
|
2087
|
+
result: SessionChildResultSchema.nullable(),
|
|
2088
|
+
});
|
|
1921
2089
|
export const SessionEventDataSchema = z.strictObject({
|
|
1922
2090
|
channel: z.strictObject({ id: UuidSchema, name: z.string().nullable() }).optional(),
|
|
1923
2091
|
message: SessionEventMessageSchema.optional(),
|
|
@@ -1927,6 +2095,81 @@ export const SessionEventDataSchema = z.strictObject({
|
|
|
1927
2095
|
assignment: SessionItemAssignmentSchema.nullable().optional(),
|
|
1928
2096
|
context: SessionItemContextSchema.optional(),
|
|
1929
2097
|
});
|
|
2098
|
+
export const SessionHandoffSchema = z.strictObject({
|
|
2099
|
+
id: UuidSchema,
|
|
2100
|
+
item: ItemIdKeySchema,
|
|
2101
|
+
parent: ItemIdKeySchema,
|
|
2102
|
+
needs: z.array(CapabilitySchema),
|
|
2103
|
+
status: z.enum([
|
|
2104
|
+
'proposed',
|
|
2105
|
+
'cancelled',
|
|
2106
|
+
'expired',
|
|
2107
|
+
'stale',
|
|
2108
|
+
'withdrawn',
|
|
2109
|
+
'closed',
|
|
2110
|
+
'handed',
|
|
2111
|
+
'declined',
|
|
2112
|
+
'ended',
|
|
2113
|
+
'finished',
|
|
2114
|
+
]),
|
|
2115
|
+
card_message_id: UuidSchema.nullable(),
|
|
2116
|
+
closes_at: TimestampSchema,
|
|
2117
|
+
targets: z.array(HandoffOptionSchema).max(4),
|
|
2118
|
+
target: HandoffTargetSchema.optional(),
|
|
2119
|
+
queued: z.boolean().optional(),
|
|
2120
|
+
outcome: z.enum(['applied', 'cancelled', 'expired', 'stale', 'withdrawn', 'closed']).optional(),
|
|
2121
|
+
reason: z
|
|
2122
|
+
.enum([
|
|
2123
|
+
'deleted',
|
|
2124
|
+
'moved',
|
|
2125
|
+
'closed',
|
|
2126
|
+
'agent_assigned',
|
|
2127
|
+
'person_assigned',
|
|
2128
|
+
'other_session',
|
|
2129
|
+
'parent_changed',
|
|
2130
|
+
'no_target',
|
|
2131
|
+
'session_ended',
|
|
2132
|
+
'unassigned',
|
|
2133
|
+
'removed',
|
|
2134
|
+
'interrupted',
|
|
2135
|
+
'switched_off',
|
|
2136
|
+
'canceled',
|
|
2137
|
+
'reassigned',
|
|
2138
|
+
'owner_left',
|
|
2139
|
+
'agent_deleted',
|
|
2140
|
+
'expired',
|
|
2141
|
+
])
|
|
2142
|
+
.optional(),
|
|
2143
|
+
});
|
|
2144
|
+
export const SessionHandoffOutcomeSchema = z.strictObject({
|
|
2145
|
+
id: UuidSchema,
|
|
2146
|
+
item: ItemIdKeySchema,
|
|
2147
|
+
outcome: z.enum(['applied', 'cancelled', 'expired', 'stale', 'withdrawn', 'closed']),
|
|
2148
|
+
reason: z
|
|
2149
|
+
.enum([
|
|
2150
|
+
'deleted',
|
|
2151
|
+
'moved',
|
|
2152
|
+
'closed',
|
|
2153
|
+
'agent_assigned',
|
|
2154
|
+
'person_assigned',
|
|
2155
|
+
'other_session',
|
|
2156
|
+
'parent_changed',
|
|
2157
|
+
'no_target',
|
|
2158
|
+
'session_ended',
|
|
2159
|
+
'unassigned',
|
|
2160
|
+
'removed',
|
|
2161
|
+
'interrupted',
|
|
2162
|
+
'switched_off',
|
|
2163
|
+
'canceled',
|
|
2164
|
+
'reassigned',
|
|
2165
|
+
'owner_left',
|
|
2166
|
+
'agent_deleted',
|
|
2167
|
+
'expired',
|
|
2168
|
+
])
|
|
2169
|
+
.optional(),
|
|
2170
|
+
target: HandoffTargetSchema.optional(),
|
|
2171
|
+
queued: z.boolean().optional(),
|
|
2172
|
+
});
|
|
1930
2173
|
export const SessionItemAssignedDataSchema = z.strictObject({
|
|
1931
2174
|
channel: z.strictObject({ id: UuidSchema, name: z.string().nullable() }),
|
|
1932
2175
|
project: SessionEventProjectSchema,
|
|
@@ -1934,13 +2177,23 @@ export const SessionItemAssignedDataSchema = z.strictObject({
|
|
|
1934
2177
|
assignment: SessionItemAssignmentSchema,
|
|
1935
2178
|
context: SessionItemContextSchema,
|
|
1936
2179
|
user: SessionEventUserSchema.nullable(),
|
|
2180
|
+
handoff: SessionAssignedHandoffSchema.optional(),
|
|
1937
2181
|
});
|
|
1938
2182
|
export const SessionItemUnassignedDataSchema = z.strictObject({
|
|
1939
2183
|
channel: z.strictObject({ id: UuidSchema, name: z.string().nullable() }),
|
|
1940
2184
|
project: SessionEventProjectSchema,
|
|
1941
2185
|
item: SessionEventItemSchema,
|
|
1942
2186
|
assignment: SessionItemAssignmentSchema.nullable(),
|
|
1943
|
-
reason: z.enum([
|
|
2187
|
+
reason: z.enum([
|
|
2188
|
+
'unassigned',
|
|
2189
|
+
'reassigned',
|
|
2190
|
+
'moved',
|
|
2191
|
+
'deleted',
|
|
2192
|
+
'owner_left',
|
|
2193
|
+
'agent_deleted',
|
|
2194
|
+
'declined',
|
|
2195
|
+
'handoff_expired',
|
|
2196
|
+
]),
|
|
1944
2197
|
user: SessionEventUserSchema.nullable(),
|
|
1945
2198
|
});
|
|
1946
2199
|
export const SessionMentionDataSchema = z.strictObject({
|
|
@@ -2004,6 +2257,7 @@ export const ItemDetailSchema = z.strictObject({
|
|
|
2004
2257
|
parent: ItemBriefSchema.nullable(),
|
|
2005
2258
|
initiative: InitiativeBriefSchema.nullable(),
|
|
2006
2259
|
labels: z.array(LabelSchema),
|
|
2260
|
+
needs: z.array(CapabilitySchema).max(10).optional(),
|
|
2007
2261
|
estimate: z.number().nullable(),
|
|
2008
2262
|
start_date: DateSchema.nullable(),
|
|
2009
2263
|
due_date: DateSchema.nullable(),
|
|
@@ -2039,6 +2293,7 @@ export const ItemSearchResultSchema = z.strictObject({
|
|
|
2039
2293
|
parent: ItemBriefSchema.nullable(),
|
|
2040
2294
|
initiative: InitiativeBriefSchema.nullable(),
|
|
2041
2295
|
labels: z.array(LabelSchema),
|
|
2296
|
+
needs: z.array(CapabilitySchema).max(10).optional(),
|
|
2042
2297
|
estimate: z.number().nullable(),
|
|
2043
2298
|
start_date: DateSchema.nullable(),
|
|
2044
2299
|
due_date: DateSchema.nullable(),
|
|
@@ -2062,6 +2317,22 @@ export const ListPinsResponseSchema = z.strictObject({
|
|
|
2062
2317
|
items: z.array(PinnedMessageSchema),
|
|
2063
2318
|
next_cursor: z.string().nullable(),
|
|
2064
2319
|
});
|
|
2320
|
+
export const ProposeSessionHandoffResponseSchema = z.strictObject({
|
|
2321
|
+
handoff: SessionHandoffSchema,
|
|
2322
|
+
created: z.boolean(),
|
|
2323
|
+
});
|
|
2324
|
+
export const SessionChildDoneEventSchema = z.strictObject({
|
|
2325
|
+
v: z.literal(1),
|
|
2326
|
+
id: UuidSchema,
|
|
2327
|
+
type: z.literal('work_item.child_done'),
|
|
2328
|
+
created_at: TimestampSchema,
|
|
2329
|
+
org: z.strictObject({ id: UuidSchema }),
|
|
2330
|
+
app: z.strictObject({ id: UuidSchema, installation_id: UuidSchema }),
|
|
2331
|
+
attempt: z.int().min(1),
|
|
2332
|
+
session: SessionBriefSchema,
|
|
2333
|
+
data: SessionChildDoneDataSchema,
|
|
2334
|
+
});
|
|
2335
|
+
export const SessionHandoffResponseSchema = z.strictObject({ handoff: SessionHandoffSchema });
|
|
2065
2336
|
export const SessionItemAssignedEventSchema = z.strictObject({
|
|
2066
2337
|
v: z.literal(1),
|
|
2067
2338
|
id: UuidSchema,
|
|
@@ -2153,6 +2424,7 @@ export const SessionCardClosedDataSchema = z.strictObject({
|
|
|
2153
2424
|
private: z.unknown(),
|
|
2154
2425
|
plan: SessionPlanOutcomeSchema.optional(),
|
|
2155
2426
|
approval: SessionApprovalOutcomeSchema.optional(),
|
|
2427
|
+
handoff: SessionHandoffOutcomeSchema.optional(),
|
|
2156
2428
|
});
|
|
2157
2429
|
export const SessionCardClosedEventSchema = z.strictObject({
|
|
2158
2430
|
v: z.literal(1),
|
|
@@ -2172,6 +2444,7 @@ export const SessionEventSchema = z.union([
|
|
|
2172
2444
|
SessionMentionEventSchema,
|
|
2173
2445
|
SessionItemAssignedEventSchema,
|
|
2174
2446
|
SessionItemUnassignedEventSchema,
|
|
2447
|
+
SessionChildDoneEventSchema,
|
|
2175
2448
|
]);
|
|
2176
2449
|
export const SessionEventsResponseSchema = z.strictObject({
|
|
2177
2450
|
events: z.array(SessionEventSchema),
|
|
@@ -2192,6 +2465,7 @@ export const QUERY_SCHEMAS = {
|
|
|
2192
2465
|
archive_release: z.strictObject({}),
|
|
2193
2466
|
close_session_approval: z.strictObject({}),
|
|
2194
2467
|
close_session_card: z.strictObject({}),
|
|
2468
|
+
close_session_handoff: z.strictObject({}),
|
|
2195
2469
|
complete_sprint: z.strictObject({}),
|
|
2196
2470
|
connect_poll: z.strictObject({}),
|
|
2197
2471
|
connect_start: z.strictObject({}),
|
|
@@ -2202,6 +2476,7 @@ export const QUERY_SCHEMAS = {
|
|
|
2202
2476
|
create_project: z.strictObject({}),
|
|
2203
2477
|
create_release: z.strictObject({}),
|
|
2204
2478
|
create_sprint: z.strictObject({}),
|
|
2479
|
+
decline_session_handoff: z.strictObject({}),
|
|
2205
2480
|
describe_project: z.strictObject({}),
|
|
2206
2481
|
generate_release_notes: z.strictObject({}),
|
|
2207
2482
|
get_item: z.strictObject({
|
|
@@ -2219,6 +2494,7 @@ export const QUERY_SCHEMAS = {
|
|
|
2219
2494
|
get_page: z.strictObject({}),
|
|
2220
2495
|
get_session: z.strictObject({}),
|
|
2221
2496
|
get_session_approval: z.strictObject({}),
|
|
2497
|
+
get_session_handoff: z.strictObject({}),
|
|
2222
2498
|
get_thread: z.strictObject({
|
|
2223
2499
|
cursor: CursorSchema.optional(),
|
|
2224
2500
|
limit: z.coerce.number().int().min(1).max(100).optional(),
|
|
@@ -2282,6 +2558,7 @@ export const QUERY_SCHEMAS = {
|
|
|
2282
2558
|
post_plan_card: z.strictObject({}),
|
|
2283
2559
|
post_session_approval: z.strictObject({}),
|
|
2284
2560
|
post_session_message: z.strictObject({}),
|
|
2561
|
+
propose_session_handoff: z.strictObject({}),
|
|
2285
2562
|
rank_item: z.strictObject({}),
|
|
2286
2563
|
release_version: z.strictObject({}),
|
|
2287
2564
|
remove_link: z.strictObject({}),
|
|
@@ -2331,6 +2608,7 @@ export const QUERY_SCHEMAS = {
|
|
|
2331
2608
|
}),
|
|
2332
2609
|
session_heartbeat: z.strictObject({}),
|
|
2333
2610
|
session_typing: z.strictObject({}),
|
|
2611
|
+
set_session_capabilities: z.strictObject({}),
|
|
2334
2612
|
start_sprint: z.strictObject({}),
|
|
2335
2613
|
transition_item: z.strictObject({}),
|
|
2336
2614
|
update_item: z.strictObject({}),
|
|
@@ -2350,6 +2628,7 @@ export const REQUEST_SCHEMAS = {
|
|
|
2350
2628
|
archive_release: null,
|
|
2351
2629
|
close_session_approval: CloseSessionApprovalRequestSchema,
|
|
2352
2630
|
close_session_card: EmptyRequestSchema,
|
|
2631
|
+
close_session_handoff: EmptyRequestSchema,
|
|
2353
2632
|
complete_sprint: CompleteSprintRequestSchema,
|
|
2354
2633
|
connect_poll: ConnectPollRequestSchema,
|
|
2355
2634
|
connect_start: ConnectStartRequestSchema,
|
|
@@ -2360,6 +2639,7 @@ export const REQUEST_SCHEMAS = {
|
|
|
2360
2639
|
create_project: CreateProjectRequestSchema,
|
|
2361
2640
|
create_release: CreateReleaseRequestSchema,
|
|
2362
2641
|
create_sprint: CreateSprintRequestSchema,
|
|
2642
|
+
decline_session_handoff: DeclineSessionHandoffRequestSchema,
|
|
2363
2643
|
describe_project: null,
|
|
2364
2644
|
generate_release_notes: ReleaseNotesRequestSchema,
|
|
2365
2645
|
get_item: null,
|
|
@@ -2369,6 +2649,7 @@ export const REQUEST_SCHEMAS = {
|
|
|
2369
2649
|
get_page: null,
|
|
2370
2650
|
get_session: null,
|
|
2371
2651
|
get_session_approval: null,
|
|
2652
|
+
get_session_handoff: null,
|
|
2372
2653
|
get_thread: null,
|
|
2373
2654
|
get_workflow: null,
|
|
2374
2655
|
list_channel_messages: null,
|
|
@@ -2388,6 +2669,7 @@ export const REQUEST_SCHEMAS = {
|
|
|
2388
2669
|
post_plan_card: PostPlanCardRequestSchema,
|
|
2389
2670
|
post_session_approval: PostSessionApprovalRequestSchema,
|
|
2390
2671
|
post_session_message: PostSessionMessageRequestSchema,
|
|
2672
|
+
propose_session_handoff: ProposeSessionHandoffRequestSchema,
|
|
2391
2673
|
rank_item: RankItemRequestSchema,
|
|
2392
2674
|
release_version: ReleaseVersionRequestSchema,
|
|
2393
2675
|
remove_link: null,
|
|
@@ -2400,6 +2682,7 @@ export const REQUEST_SCHEMAS = {
|
|
|
2400
2682
|
search_pages: null,
|
|
2401
2683
|
session_heartbeat: SessionHeartbeatRequestSchema,
|
|
2402
2684
|
session_typing: SessionTypingRequestSchema,
|
|
2685
|
+
set_session_capabilities: SetSessionCapabilitiesRequestSchema,
|
|
2403
2686
|
start_sprint: StartSprintRequestSchema,
|
|
2404
2687
|
transition_item: TransitionItemRequestSchema,
|
|
2405
2688
|
update_item: UpdateItemRequestSchema,
|
|
@@ -2419,6 +2702,7 @@ export const RESPONSE_SCHEMAS = {
|
|
|
2419
2702
|
archive_release: ReleaseResponseSchema,
|
|
2420
2703
|
close_session_approval: CloseSessionApprovalResponseSchema,
|
|
2421
2704
|
close_session_card: CloseSessionCardResponseSchema,
|
|
2705
|
+
close_session_handoff: SessionHandoffResponseSchema,
|
|
2422
2706
|
complete_sprint: CompleteSprintResponseSchema,
|
|
2423
2707
|
connect_poll: ConnectPollResponseSchema,
|
|
2424
2708
|
connect_start: ConnectStartResponseSchema,
|
|
@@ -2429,6 +2713,7 @@ export const RESPONSE_SCHEMAS = {
|
|
|
2429
2713
|
create_project: CreateProjectResponseSchema,
|
|
2430
2714
|
create_release: ReleaseResponseSchema,
|
|
2431
2715
|
create_sprint: SprintResponseSchema,
|
|
2716
|
+
decline_session_handoff: SessionHandoffResponseSchema,
|
|
2432
2717
|
describe_project: DescribeProjectResponseSchema,
|
|
2433
2718
|
generate_release_notes: ReleaseNotesResponseSchema,
|
|
2434
2719
|
get_item: GetItemResponseSchema,
|
|
@@ -2438,6 +2723,7 @@ export const RESPONSE_SCHEMAS = {
|
|
|
2438
2723
|
get_page: PageResponseSchema,
|
|
2439
2724
|
get_session: SessionResponseSchema,
|
|
2440
2725
|
get_session_approval: GetSessionApprovalResponseSchema,
|
|
2726
|
+
get_session_handoff: SessionHandoffResponseSchema,
|
|
2441
2727
|
get_thread: ThreadResponseSchema,
|
|
2442
2728
|
get_workflow: GetWorkflowResponseSchema,
|
|
2443
2729
|
list_channel_messages: ListChannelMessagesResponseSchema,
|
|
@@ -2457,6 +2743,7 @@ export const RESPONSE_SCHEMAS = {
|
|
|
2457
2743
|
post_plan_card: PostPlanCardResponseSchema,
|
|
2458
2744
|
post_session_approval: PostSessionApprovalResponseSchema,
|
|
2459
2745
|
post_session_message: PostSessionMessageResponseSchema,
|
|
2746
|
+
propose_session_handoff: ProposeSessionHandoffResponseSchema,
|
|
2460
2747
|
rank_item: RankItemResponseSchema,
|
|
2461
2748
|
release_version: ReleaseResponseSchema,
|
|
2462
2749
|
remove_link: RemoveLinkResponseSchema,
|
|
@@ -2469,6 +2756,7 @@ export const RESPONSE_SCHEMAS = {
|
|
|
2469
2756
|
search_pages: SearchPagesResponseSchema,
|
|
2470
2757
|
session_heartbeat: SessionHeartbeatResponseSchema,
|
|
2471
2758
|
session_typing: NoContentSchema,
|
|
2759
|
+
set_session_capabilities: SessionCapabilitiesResponseSchema,
|
|
2472
2760
|
start_sprint: StartSprintResponseSchema,
|
|
2473
2761
|
transition_item: TransitionItemResponseSchema,
|
|
2474
2762
|
update_item: ItemWriteResponseSchema,
|