@task-shepherd/agent 1.0.6 → 1.0.8
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/cli/index.js +1054 -86
- package/dist/index.js +1 -1
- package/dist/meta.json +358 -67
- package/package.json +2 -2
- package/shared/dist/index.d.ts +15 -0
- package/shared/dist/index.js +12 -0
- package/shared/dist/mcp-client/client.d.ts +18 -0
- package/shared/dist/mcp-client/client.js +49 -0
- package/shared/dist/mcp-client/index.d.ts +7 -0
- package/shared/dist/mcp-client/index.js +7 -0
- package/shared/dist/mcp-client/types.d.ts +822 -0
- package/shared/dist/mcp-client/types.js +193 -0
- package/shared/dist/schema/index.d.ts +189 -0
- package/shared/dist/schema/index.js +142 -0
- package/shared/dist/schema/mcp-mappings.d.ts +50 -0
- package/shared/dist/schema/mcp-mappings.js +563 -0
- package/shared/dist/schema/validation.d.ts +91 -0
- package/shared/dist/schema/validation.js +282 -0
- package/shared/dist/work-queue/index.d.ts +7 -0
- package/shared/dist/work-queue/index.js +7 -0
- package/shared/dist/work-queue/types.d.ts +147 -0
- package/shared/dist/work-queue/types.js +4 -0
- package/shared/dist/work-queue/validation.d.ts +24 -0
- package/shared/dist/work-queue/validation.js +160 -0
- package/shared/dist/workspace/constants.d.ts +148 -0
- package/shared/dist/workspace/constants.js +432 -0
- package/shared/dist/workspace/index.d.ts +10 -0
- package/shared/dist/workspace/index.js +10 -0
- package/shared/dist/workspace/types.d.ts +477 -0
- package/shared/dist/workspace/types.js +9 -0
- package/shared/dist/workspace/utils.d.ts +79 -0
- package/shared/dist/workspace/utils.js +334 -0
- package/shared/dist/workspace/validation.d.ts +1312 -0
- package/shared/dist/workspace/validation.js +467 -0
- package/shared/graphql/generated-internal.ts +3629 -0
- package/shared/graphql/generated-public.ts +773 -0
- package/shared/graphql/generated.d.ts +7456 -0
- package/shared/graphql/generated.js +11799 -0
- package/shared/graphql/generated.ts +27569 -0
- package/shared/graphql/generated.ts.backup +16531 -0
- package/shared/graphql/generated.ts.working +4828 -0
- package/shared/graphql/introspection-internal.json +15845 -0
- package/shared/graphql/introspection-public.json +9658 -0
- package/shared/graphql/introspection.json +44263 -0
- package/shared/graphql/operations/ai-service.graphql +131 -0
- package/shared/graphql/operations/ai-work-queue.graphql +31 -0
- package/shared/graphql/operations/analytics.graphql +283 -0
- package/shared/graphql/operations/analytics.ts +3 -0
- package/shared/graphql/operations/api-keys.graphql +126 -0
- package/shared/graphql/operations/attachments.graphql +53 -0
- package/shared/graphql/operations/attachments.ts +39 -0
- package/shared/graphql/operations/audit.graphql +46 -0
- package/shared/graphql/operations/auth.graphql +83 -0
- package/shared/graphql/operations/claude-usage.graphql +178 -0
- package/shared/graphql/operations/comments.graphql +4 -0
- package/shared/graphql/operations/dashboard.graphql +29 -0
- package/shared/graphql/operations/development-plans.graphql +408 -0
- package/shared/graphql/operations/early-access.graphql.disabled +21 -0
- package/shared/graphql/operations/errors.graphql.disabled +83 -0
- package/shared/graphql/operations/internal-api.graphql +931 -0
- package/shared/graphql/operations/notifications.graphql +4 -0
- package/shared/graphql/operations/organization-invites.graphql.disabled +32 -0
- package/shared/graphql/operations/performance.graphql +4 -0
- package/shared/graphql/operations/project-reviews.graphql +610 -0
- package/shared/graphql/operations/projects.graphql +98 -0
- package/shared/graphql/operations/settings.graphql +4 -0
- package/shared/graphql/operations/stories.graphql +113 -0
- package/shared/graphql/operations/subscriptions.graphql +235 -0
- package/shared/graphql/operations/subscriptions.graphql.disabled +96 -0
- package/shared/graphql/operations/tasks.graphql +257 -0
- package/shared/graphql/operations/team.graphql +111 -0
- package/shared/graphql/operations/team.ts +226 -0
- package/shared/graphql/operations/time-tracking.graphql.disabled +96 -0
- package/shared/graphql/operations/work-queue.graphql +210 -0
- package/shared/graphql/operations/work-queue.graphql.disabled +474 -0
- package/shared/graphql/operations/workspace.graphql +146 -0
- package/shared/graphql/schema-internal.graphql +1085 -0
- package/shared/graphql/schema-public.graphql +709 -0
- package/shared/graphql/schema.graphql +3473 -0
- package/shared/package.json +23 -0
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
# AI Service Session Operations
|
|
2
|
+
|
|
3
|
+
query AIServiceSessions {
|
|
4
|
+
aiServiceSessions {
|
|
5
|
+
id
|
|
6
|
+
user {
|
|
7
|
+
id
|
|
8
|
+
email
|
|
9
|
+
displayName
|
|
10
|
+
}
|
|
11
|
+
serviceEndpoint
|
|
12
|
+
sessionToken
|
|
13
|
+
capabilities {
|
|
14
|
+
projectReview
|
|
15
|
+
developmentPlanning
|
|
16
|
+
storyImplementation
|
|
17
|
+
codeReview
|
|
18
|
+
maxConcurrentTasks
|
|
19
|
+
supportedLanguages
|
|
20
|
+
}
|
|
21
|
+
status
|
|
22
|
+
lastHeartbeat
|
|
23
|
+
isConnected
|
|
24
|
+
hasProjectReviewCapability
|
|
25
|
+
hasDevelopmentPlanningCapability
|
|
26
|
+
hasStoryImplementationCapability
|
|
27
|
+
hasCodeReviewCapability
|
|
28
|
+
createdAt
|
|
29
|
+
updatedAt
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
query MyActiveAISession {
|
|
34
|
+
myActiveAISession {
|
|
35
|
+
id
|
|
36
|
+
user {
|
|
37
|
+
id
|
|
38
|
+
email
|
|
39
|
+
displayName
|
|
40
|
+
}
|
|
41
|
+
serviceEndpoint
|
|
42
|
+
sessionToken
|
|
43
|
+
capabilities {
|
|
44
|
+
projectReview
|
|
45
|
+
developmentPlanning
|
|
46
|
+
storyImplementation
|
|
47
|
+
codeReview
|
|
48
|
+
maxConcurrentTasks
|
|
49
|
+
supportedLanguages
|
|
50
|
+
}
|
|
51
|
+
status
|
|
52
|
+
lastHeartbeat
|
|
53
|
+
isConnected
|
|
54
|
+
hasProjectReviewCapability
|
|
55
|
+
hasDevelopmentPlanningCapability
|
|
56
|
+
hasStoryImplementationCapability
|
|
57
|
+
hasCodeReviewCapability
|
|
58
|
+
createdAt
|
|
59
|
+
updatedAt
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
mutation CreateAIServiceSession($input: CreateAIServiceSessionInput!) {
|
|
64
|
+
createAIServiceSession(input: $input) {
|
|
65
|
+
id
|
|
66
|
+
user {
|
|
67
|
+
id
|
|
68
|
+
email
|
|
69
|
+
displayName
|
|
70
|
+
}
|
|
71
|
+
serviceEndpoint
|
|
72
|
+
sessionToken
|
|
73
|
+
capabilities {
|
|
74
|
+
projectReview
|
|
75
|
+
developmentPlanning
|
|
76
|
+
storyImplementation
|
|
77
|
+
codeReview
|
|
78
|
+
maxConcurrentTasks
|
|
79
|
+
supportedLanguages
|
|
80
|
+
}
|
|
81
|
+
status
|
|
82
|
+
lastHeartbeat
|
|
83
|
+
isConnected
|
|
84
|
+
hasProjectReviewCapability
|
|
85
|
+
hasDevelopmentPlanningCapability
|
|
86
|
+
hasStoryImplementationCapability
|
|
87
|
+
hasCodeReviewCapability
|
|
88
|
+
createdAt
|
|
89
|
+
updatedAt
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
mutation DisconnectAIService {
|
|
94
|
+
disconnectAIService
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
# Query Recent Activity for AI Agent Dashboard
|
|
98
|
+
query GetAIRecentActivity($days: Int!, $filter: AnalyticsFilter) {
|
|
99
|
+
recentActivity(days: $days, filter: $filter) {
|
|
100
|
+
date
|
|
101
|
+
activeUsers
|
|
102
|
+
tasksCompleted
|
|
103
|
+
tasksCreated
|
|
104
|
+
storiesCompleted
|
|
105
|
+
storiesCreated
|
|
106
|
+
commentsAdded
|
|
107
|
+
attachmentsUploaded
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
# Query AI Workers associated with current user
|
|
112
|
+
query MyAIWorkers {
|
|
113
|
+
me {
|
|
114
|
+
id
|
|
115
|
+
email
|
|
116
|
+
displayName
|
|
117
|
+
aiWorkers {
|
|
118
|
+
id
|
|
119
|
+
workerId
|
|
120
|
+
workerName
|
|
121
|
+
status
|
|
122
|
+
capabilities
|
|
123
|
+
scope
|
|
124
|
+
maxConcurrentTasks
|
|
125
|
+
lastHeartbeat
|
|
126
|
+
createdAt
|
|
127
|
+
updatedAt
|
|
128
|
+
metadata
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# AI Work Queue operations for Task Shepherd
|
|
2
|
+
# Work queue management and error tracking
|
|
3
|
+
|
|
4
|
+
# Queries
|
|
5
|
+
|
|
6
|
+
# Get errors for a specific work item
|
|
7
|
+
query GetWorkItemErrors($workItemId: String!) {
|
|
8
|
+
getWorkItemErrors(workItemId: $workItemId) {
|
|
9
|
+
id
|
|
10
|
+
workItemId
|
|
11
|
+
assignmentId
|
|
12
|
+
workType
|
|
13
|
+
errorType
|
|
14
|
+
message
|
|
15
|
+
stack
|
|
16
|
+
stage
|
|
17
|
+
workerId
|
|
18
|
+
severity
|
|
19
|
+
category
|
|
20
|
+
retryable
|
|
21
|
+
tags
|
|
22
|
+
context
|
|
23
|
+
occurredAt
|
|
24
|
+
resolved
|
|
25
|
+
resolutionMethod
|
|
26
|
+
resolutionDescription
|
|
27
|
+
resolvedAt
|
|
28
|
+
createdAt
|
|
29
|
+
updatedAt
|
|
30
|
+
}
|
|
31
|
+
}
|
|
@@ -0,0 +1,283 @@
|
|
|
1
|
+
# Analytics Queries
|
|
2
|
+
|
|
3
|
+
query GetWorkspaceStats($filter: AnalyticsFilter) {
|
|
4
|
+
workspaceStats(filter: $filter) {
|
|
5
|
+
totalProjects
|
|
6
|
+
activeProjects
|
|
7
|
+
totalUsers
|
|
8
|
+
activeUsers
|
|
9
|
+
totalStories
|
|
10
|
+
totalTasks
|
|
11
|
+
totalComments
|
|
12
|
+
totalAttachments
|
|
13
|
+
overallCompletionRate
|
|
14
|
+
averageProjectVelocity
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
query GetProjectStats($projectId: String!, $filter: AnalyticsFilter) {
|
|
19
|
+
projectStats(projectId: $projectId, filter: $filter) {
|
|
20
|
+
projectId
|
|
21
|
+
projectName
|
|
22
|
+
totalStories
|
|
23
|
+
completedStories
|
|
24
|
+
inProgressStories
|
|
25
|
+
todoStories
|
|
26
|
+
totalTasks
|
|
27
|
+
completedTasks
|
|
28
|
+
inProgressTasks
|
|
29
|
+
todoTasks
|
|
30
|
+
completionPercentage
|
|
31
|
+
totalStoryPoints
|
|
32
|
+
completedStoryPoints
|
|
33
|
+
averageStoryPoints
|
|
34
|
+
velocityThisWeek
|
|
35
|
+
velocityLastWeek
|
|
36
|
+
activeTeamMembers
|
|
37
|
+
totalAttachments
|
|
38
|
+
totalComments
|
|
39
|
+
lastActivityAt
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
query GetUserStats($userId: String, $filter: AnalyticsFilter) {
|
|
44
|
+
userStats(userId: $userId, filter: $filter) {
|
|
45
|
+
userId
|
|
46
|
+
userFullName
|
|
47
|
+
userAvatarUrl
|
|
48
|
+
assignedStories
|
|
49
|
+
completedStories
|
|
50
|
+
assignedTasks
|
|
51
|
+
completedTasks
|
|
52
|
+
createdProjects
|
|
53
|
+
totalComments
|
|
54
|
+
totalAttachments
|
|
55
|
+
completionRate
|
|
56
|
+
averageTaskCompletionTime
|
|
57
|
+
lastActiveAt
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
query GetAnalyticsDashboardData($filter: AnalyticsFilter) {
|
|
62
|
+
dashboardData(filter: $filter) {
|
|
63
|
+
workspaceStats {
|
|
64
|
+
totalProjects
|
|
65
|
+
activeProjects
|
|
66
|
+
totalUsers
|
|
67
|
+
activeUsers
|
|
68
|
+
totalStories
|
|
69
|
+
totalTasks
|
|
70
|
+
totalComments
|
|
71
|
+
totalAttachments
|
|
72
|
+
overallCompletionRate
|
|
73
|
+
averageProjectVelocity
|
|
74
|
+
}
|
|
75
|
+
topProjects {
|
|
76
|
+
projectId
|
|
77
|
+
projectName
|
|
78
|
+
totalStories
|
|
79
|
+
completedStories
|
|
80
|
+
completionPercentage
|
|
81
|
+
velocityThisWeek
|
|
82
|
+
velocityLastWeek
|
|
83
|
+
activeTeamMembers
|
|
84
|
+
lastActivityAt
|
|
85
|
+
}
|
|
86
|
+
topPerformers {
|
|
87
|
+
userId
|
|
88
|
+
userFullName
|
|
89
|
+
userAvatarUrl
|
|
90
|
+
assignedStories
|
|
91
|
+
completedStories
|
|
92
|
+
assignedTasks
|
|
93
|
+
completedTasks
|
|
94
|
+
completionRate
|
|
95
|
+
averageTaskCompletionTime
|
|
96
|
+
lastActiveAt
|
|
97
|
+
}
|
|
98
|
+
recentActivity {
|
|
99
|
+
date
|
|
100
|
+
storiesCreated
|
|
101
|
+
storiesCompleted
|
|
102
|
+
tasksCreated
|
|
103
|
+
tasksCompleted
|
|
104
|
+
commentsAdded
|
|
105
|
+
attachmentsUploaded
|
|
106
|
+
activeUsers
|
|
107
|
+
}
|
|
108
|
+
velocityTrend {
|
|
109
|
+
week
|
|
110
|
+
storyPointsCompleted
|
|
111
|
+
storiesCompleted
|
|
112
|
+
tasksCompleted
|
|
113
|
+
averageCompletionTime
|
|
114
|
+
teamSize
|
|
115
|
+
}
|
|
116
|
+
projectProgress {
|
|
117
|
+
entityId
|
|
118
|
+
entityType
|
|
119
|
+
entityTitle
|
|
120
|
+
completionPercentage
|
|
121
|
+
startDate
|
|
122
|
+
endDate
|
|
123
|
+
estimatedEndDate
|
|
124
|
+
totalItems
|
|
125
|
+
completedItems
|
|
126
|
+
inProgressItems
|
|
127
|
+
overdueItems
|
|
128
|
+
}
|
|
129
|
+
teamPerformance {
|
|
130
|
+
teamMemberId
|
|
131
|
+
teamMemberName
|
|
132
|
+
teamMemberAvatar
|
|
133
|
+
completedItems
|
|
134
|
+
inProgressItems
|
|
135
|
+
completionRate
|
|
136
|
+
averageCompletionTime
|
|
137
|
+
totalStoryPoints
|
|
138
|
+
completedStoryPoints
|
|
139
|
+
lastActivityAt
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
query GetMyAnalyticsDashboard($filter: AnalyticsFilter) {
|
|
145
|
+
myDashboard(filter: $filter) {
|
|
146
|
+
userId
|
|
147
|
+
userFullName
|
|
148
|
+
userAvatarUrl
|
|
149
|
+
assignedStories
|
|
150
|
+
completedStories
|
|
151
|
+
assignedTasks
|
|
152
|
+
completedTasks
|
|
153
|
+
createdProjects
|
|
154
|
+
totalComments
|
|
155
|
+
totalAttachments
|
|
156
|
+
completionRate
|
|
157
|
+
averageTaskCompletionTime
|
|
158
|
+
lastActiveAt
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
query GetActivityMetrics($timeRange: TimeRange!, $filter: AnalyticsFilter) {
|
|
163
|
+
activityMetrics(timeRange: $timeRange, filter: $filter) {
|
|
164
|
+
date
|
|
165
|
+
storiesCreated
|
|
166
|
+
storiesCompleted
|
|
167
|
+
tasksCreated
|
|
168
|
+
tasksCompleted
|
|
169
|
+
commentsAdded
|
|
170
|
+
attachmentsUploaded
|
|
171
|
+
activeUsers
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
query GetVelocityMetrics($timeRange: TimeRange!, $filter: AnalyticsFilter) {
|
|
176
|
+
velocityMetrics(timeRange: $timeRange, filter: $filter) {
|
|
177
|
+
week
|
|
178
|
+
storyPointsCompleted
|
|
179
|
+
storiesCompleted
|
|
180
|
+
tasksCompleted
|
|
181
|
+
averageCompletionTime
|
|
182
|
+
teamSize
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
query GetRecentActivity($days: Int, $filter: AnalyticsFilter) {
|
|
187
|
+
recentActivity(days: $days, filter: $filter) {
|
|
188
|
+
date
|
|
189
|
+
storiesCreated
|
|
190
|
+
storiesCompleted
|
|
191
|
+
tasksCreated
|
|
192
|
+
tasksCompleted
|
|
193
|
+
commentsAdded
|
|
194
|
+
attachmentsUploaded
|
|
195
|
+
activeUsers
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
query GetProjectVelocity($projectId: String!, $weeks: Int) {
|
|
200
|
+
projectVelocity(projectId: $projectId, weeks: $weeks) {
|
|
201
|
+
week
|
|
202
|
+
storyPointsCompleted
|
|
203
|
+
storiesCompleted
|
|
204
|
+
tasksCompleted
|
|
205
|
+
averageCompletionTime
|
|
206
|
+
teamSize
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
query GetTeamPerformance($filter: AnalyticsFilter) {
|
|
211
|
+
teamPerformance(filter: $filter) {
|
|
212
|
+
teamMemberId
|
|
213
|
+
teamMemberName
|
|
214
|
+
teamMemberAvatar
|
|
215
|
+
completedItems
|
|
216
|
+
inProgressItems
|
|
217
|
+
completionRate
|
|
218
|
+
averageCompletionTime
|
|
219
|
+
totalStoryPoints
|
|
220
|
+
completedStoryPoints
|
|
221
|
+
lastActivityAt
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
query GetProjectProgress($filter: AnalyticsFilter) {
|
|
226
|
+
projectProgress(filter: $filter) {
|
|
227
|
+
entityId
|
|
228
|
+
entityType
|
|
229
|
+
entityTitle
|
|
230
|
+
completionPercentage
|
|
231
|
+
startDate
|
|
232
|
+
endDate
|
|
233
|
+
estimatedEndDate
|
|
234
|
+
totalItems
|
|
235
|
+
completedItems
|
|
236
|
+
inProgressItems
|
|
237
|
+
overdueItems
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
query GetTopProjects($limit: Int, $filter: AnalyticsFilter) {
|
|
242
|
+
topProjects(limit: $limit, filter: $filter) {
|
|
243
|
+
projectId
|
|
244
|
+
projectName
|
|
245
|
+
totalStories
|
|
246
|
+
completedStories
|
|
247
|
+
completionPercentage
|
|
248
|
+
velocityThisWeek
|
|
249
|
+
velocityLastWeek
|
|
250
|
+
activeTeamMembers
|
|
251
|
+
lastActivityAt
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
query GetTopPerformers($limit: Int, $filter: AnalyticsFilter) {
|
|
256
|
+
topPerformers(limit: $limit, filter: $filter) {
|
|
257
|
+
userId
|
|
258
|
+
userFullName
|
|
259
|
+
userAvatarUrl
|
|
260
|
+
assignedStories
|
|
261
|
+
completedStories
|
|
262
|
+
assignedTasks
|
|
263
|
+
completedTasks
|
|
264
|
+
completionRate
|
|
265
|
+
averageTaskCompletionTime
|
|
266
|
+
lastActiveAt
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
query GetUserComparison($userIds: [String!]!, $filter: AnalyticsFilter) {
|
|
271
|
+
userComparison(userIds: $userIds, filter: $filter) {
|
|
272
|
+
userId
|
|
273
|
+
userFullName
|
|
274
|
+
userAvatarUrl
|
|
275
|
+
assignedStories
|
|
276
|
+
completedStories
|
|
277
|
+
assignedTasks
|
|
278
|
+
completedTasks
|
|
279
|
+
completionRate
|
|
280
|
+
averageTaskCompletionTime
|
|
281
|
+
lastActiveAt
|
|
282
|
+
}
|
|
283
|
+
}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
# API Key Management Operations
|
|
2
|
+
|
|
3
|
+
# Query to get user's API keys
|
|
4
|
+
query GetApiKeys($scope: ApiKeyScope) {
|
|
5
|
+
apiKeys(scope: $scope) {
|
|
6
|
+
id
|
|
7
|
+
name
|
|
8
|
+
keyPrefix
|
|
9
|
+
keyType
|
|
10
|
+
scope
|
|
11
|
+
createdAt
|
|
12
|
+
lastUsedAt
|
|
13
|
+
user {
|
|
14
|
+
id
|
|
15
|
+
displayName
|
|
16
|
+
email
|
|
17
|
+
}
|
|
18
|
+
createdBy {
|
|
19
|
+
id
|
|
20
|
+
displayName
|
|
21
|
+
email
|
|
22
|
+
}
|
|
23
|
+
agentConfiguration {
|
|
24
|
+
priorityFilters {
|
|
25
|
+
teams
|
|
26
|
+
projects
|
|
27
|
+
taskTypes
|
|
28
|
+
priorities
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
isActive
|
|
32
|
+
isExpired
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
# Query to get a specific API key (for management purposes)
|
|
37
|
+
query GetApiKey($id: ID!) {
|
|
38
|
+
apiKey(id: $id) {
|
|
39
|
+
id
|
|
40
|
+
name
|
|
41
|
+
keyPrefix
|
|
42
|
+
keyType
|
|
43
|
+
scope
|
|
44
|
+
createdAt
|
|
45
|
+
lastUsedAt
|
|
46
|
+
user {
|
|
47
|
+
id
|
|
48
|
+
displayName
|
|
49
|
+
email
|
|
50
|
+
}
|
|
51
|
+
createdBy {
|
|
52
|
+
id
|
|
53
|
+
displayName
|
|
54
|
+
email
|
|
55
|
+
}
|
|
56
|
+
agentConfiguration {
|
|
57
|
+
priorityFilters {
|
|
58
|
+
teams
|
|
59
|
+
projects
|
|
60
|
+
taskTypes
|
|
61
|
+
priorities
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
# Mutation to create a new API key
|
|
68
|
+
mutation CreateApiKey($input: CreateApiKeyInput!) {
|
|
69
|
+
createApiKey(input: $input) {
|
|
70
|
+
id
|
|
71
|
+
name
|
|
72
|
+
keyPrefix
|
|
73
|
+
keyType
|
|
74
|
+
scope
|
|
75
|
+
key # Only returned on creation for one-time reveal
|
|
76
|
+
createdAt
|
|
77
|
+
lastUsedAt
|
|
78
|
+
user {
|
|
79
|
+
id
|
|
80
|
+
displayName
|
|
81
|
+
email
|
|
82
|
+
}
|
|
83
|
+
createdBy {
|
|
84
|
+
id
|
|
85
|
+
displayName
|
|
86
|
+
email
|
|
87
|
+
}
|
|
88
|
+
agentConfiguration {
|
|
89
|
+
priorityFilters {
|
|
90
|
+
teams
|
|
91
|
+
projects
|
|
92
|
+
taskTypes
|
|
93
|
+
priorities
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
isActive
|
|
97
|
+
isExpired
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
# Mutation to delete an API key
|
|
102
|
+
mutation DeleteApiKey($id: ID!) {
|
|
103
|
+
deleteApiKey(id: $id)
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
# Mutation to update API key configuration (for agent filters)
|
|
107
|
+
mutation UpdateApiKey($id: ID!, $input: UpdateApiKeyInput!) {
|
|
108
|
+
updateApiKey(id: $id, input: $input) {
|
|
109
|
+
id
|
|
110
|
+
name
|
|
111
|
+
keyPrefix
|
|
112
|
+
user {
|
|
113
|
+
id
|
|
114
|
+
displayName
|
|
115
|
+
email
|
|
116
|
+
}
|
|
117
|
+
agentConfiguration {
|
|
118
|
+
priorityFilters {
|
|
119
|
+
teams
|
|
120
|
+
projects
|
|
121
|
+
taskTypes
|
|
122
|
+
priorities
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# Attachment Operations
|
|
2
|
+
# Note: Attachment system is not yet implemented in backend
|
|
3
|
+
|
|
4
|
+
# TODO: Enable when backend attachment support is implemented
|
|
5
|
+
#
|
|
6
|
+
# query GetAttachments($search: AttachmentSearchInput, $limit: Int, $offset: Int) {
|
|
7
|
+
# attachments(search: $search, limit: $limit, offset: $offset) {
|
|
8
|
+
# id
|
|
9
|
+
# filename
|
|
10
|
+
# originalFilename
|
|
11
|
+
# fileSize
|
|
12
|
+
# fileSizeFormatted
|
|
13
|
+
# mimeType
|
|
14
|
+
# url
|
|
15
|
+
# thumbnailUrl
|
|
16
|
+
# uploadedBy {
|
|
17
|
+
# id
|
|
18
|
+
# fullName
|
|
19
|
+
# email
|
|
20
|
+
# }
|
|
21
|
+
# project {
|
|
22
|
+
# id
|
|
23
|
+
# name
|
|
24
|
+
# }
|
|
25
|
+
# story {
|
|
26
|
+
# id
|
|
27
|
+
# title
|
|
28
|
+
# }
|
|
29
|
+
# task {
|
|
30
|
+
# id
|
|
31
|
+
# title
|
|
32
|
+
# }
|
|
33
|
+
# createdAt
|
|
34
|
+
# updatedAt
|
|
35
|
+
# }
|
|
36
|
+
# }
|
|
37
|
+
#
|
|
38
|
+
# mutation CreateAttachment($input: CreateAttachmentInput!) {
|
|
39
|
+
# createAttachment(input: $input) {
|
|
40
|
+
# id
|
|
41
|
+
# filename
|
|
42
|
+
# originalFilename
|
|
43
|
+
# fileSize
|
|
44
|
+
# mimeType
|
|
45
|
+
# url
|
|
46
|
+
# uploadUrl
|
|
47
|
+
# createdAt
|
|
48
|
+
# }
|
|
49
|
+
# }
|
|
50
|
+
#
|
|
51
|
+
# mutation DeleteAttachment($id: String!) {
|
|
52
|
+
# deleteAttachment(id: $id)
|
|
53
|
+
# }
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
|
|
2
|
+
import { gql } from '@apollo/client';
|
|
3
|
+
|
|
4
|
+
// TODO: Implement actual attachment operations when backend supports them
|
|
5
|
+
export const GET_ATTACHMENTS = gql`
|
|
6
|
+
query GetAttachments($search: AttachmentSearchInput, $limit: Int, $offset: Int) {
|
|
7
|
+
attachments(search: $search, limit: $limit, offset: $offset) {
|
|
8
|
+
id
|
|
9
|
+
filename
|
|
10
|
+
fileSize
|
|
11
|
+
mimeType
|
|
12
|
+
url
|
|
13
|
+
createdAt
|
|
14
|
+
createdBy {
|
|
15
|
+
id
|
|
16
|
+
fullName
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
`;
|
|
21
|
+
|
|
22
|
+
export const DELETE_ATTACHMENT = gql`
|
|
23
|
+
mutation DeleteAttachment($id: ID!) {
|
|
24
|
+
deleteAttachment(id: $id)
|
|
25
|
+
}
|
|
26
|
+
`;
|
|
27
|
+
|
|
28
|
+
export const UPLOAD_ATTACHMENT = gql`
|
|
29
|
+
mutation UploadAttachment($input: AttachmentUploadInput!) {
|
|
30
|
+
uploadAttachment(input: $input) {
|
|
31
|
+
id
|
|
32
|
+
filename
|
|
33
|
+
fileSize
|
|
34
|
+
mimeType
|
|
35
|
+
url
|
|
36
|
+
createdAt
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
`;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# Audit Operations
|
|
2
|
+
|
|
3
|
+
# Get work item audit history from AIWorkAudit system
|
|
4
|
+
query GetWorkItemAuditHistory($workItemId: String!, $limit: Int! = 50) {
|
|
5
|
+
getWorkItemAuditHistory(workItemId: $workItemId, limit: $limit) {
|
|
6
|
+
id
|
|
7
|
+
actionType
|
|
8
|
+
actorType
|
|
9
|
+
actorId
|
|
10
|
+
reason
|
|
11
|
+
details
|
|
12
|
+
previousStatus
|
|
13
|
+
newStatus
|
|
14
|
+
previousWorkerId
|
|
15
|
+
newWorkerId
|
|
16
|
+
metadata
|
|
17
|
+
isStatusChange
|
|
18
|
+
isWorkerChange
|
|
19
|
+
duration
|
|
20
|
+
source
|
|
21
|
+
hasError
|
|
22
|
+
errorMessage
|
|
23
|
+
createdAt
|
|
24
|
+
user {
|
|
25
|
+
id
|
|
26
|
+
fullName
|
|
27
|
+
email
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
# TODO: Enable additional audit queries when needed
|
|
33
|
+
#
|
|
34
|
+
# query SearchAuditLogs($search: AuditSearchInput, $limit: Int, $offset: Int) {
|
|
35
|
+
# searchAuditLogs(search: $search, limit: $limit, offset: $offset) {
|
|
36
|
+
# id
|
|
37
|
+
# entityType
|
|
38
|
+
# entityId
|
|
39
|
+
# action
|
|
40
|
+
# timestamp
|
|
41
|
+
# userId
|
|
42
|
+
# userName
|
|
43
|
+
# changes
|
|
44
|
+
# metadata
|
|
45
|
+
# }
|
|
46
|
+
# }
|