@task-shepherd/agent 1.0.6 → 1.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/dist/cli/index.js +1 -1
  2. package/dist/index.js +1 -1
  3. package/dist/meta.json +5 -5
  4. package/package.json +2 -2
  5. package/shared/dist/index.d.ts +15 -0
  6. package/shared/dist/index.js +12 -0
  7. package/shared/dist/mcp-client/client.d.ts +18 -0
  8. package/shared/dist/mcp-client/client.js +49 -0
  9. package/shared/dist/mcp-client/index.d.ts +7 -0
  10. package/shared/dist/mcp-client/index.js +7 -0
  11. package/shared/dist/mcp-client/types.d.ts +822 -0
  12. package/shared/dist/mcp-client/types.js +193 -0
  13. package/shared/dist/schema/index.d.ts +189 -0
  14. package/shared/dist/schema/index.js +142 -0
  15. package/shared/dist/schema/mcp-mappings.d.ts +50 -0
  16. package/shared/dist/schema/mcp-mappings.js +563 -0
  17. package/shared/dist/schema/validation.d.ts +91 -0
  18. package/shared/dist/schema/validation.js +282 -0
  19. package/shared/dist/work-queue/index.d.ts +7 -0
  20. package/shared/dist/work-queue/index.js +7 -0
  21. package/shared/dist/work-queue/types.d.ts +147 -0
  22. package/shared/dist/work-queue/types.js +4 -0
  23. package/shared/dist/work-queue/validation.d.ts +24 -0
  24. package/shared/dist/work-queue/validation.js +160 -0
  25. package/shared/dist/workspace/constants.d.ts +148 -0
  26. package/shared/dist/workspace/constants.js +432 -0
  27. package/shared/dist/workspace/index.d.ts +10 -0
  28. package/shared/dist/workspace/index.js +10 -0
  29. package/shared/dist/workspace/types.d.ts +477 -0
  30. package/shared/dist/workspace/types.js +9 -0
  31. package/shared/dist/workspace/utils.d.ts +79 -0
  32. package/shared/dist/workspace/utils.js +334 -0
  33. package/shared/dist/workspace/validation.d.ts +1312 -0
  34. package/shared/dist/workspace/validation.js +467 -0
  35. package/shared/graphql/generated-internal.ts +3629 -0
  36. package/shared/graphql/generated-public.ts +773 -0
  37. package/shared/graphql/generated.d.ts +7456 -0
  38. package/shared/graphql/generated.js +11799 -0
  39. package/shared/graphql/generated.ts +27569 -0
  40. package/shared/graphql/generated.ts.backup +16531 -0
  41. package/shared/graphql/generated.ts.working +4828 -0
  42. package/shared/graphql/introspection-internal.json +15845 -0
  43. package/shared/graphql/introspection-public.json +9658 -0
  44. package/shared/graphql/introspection.json +44263 -0
  45. package/shared/graphql/operations/ai-service.graphql +131 -0
  46. package/shared/graphql/operations/ai-work-queue.graphql +31 -0
  47. package/shared/graphql/operations/analytics.graphql +283 -0
  48. package/shared/graphql/operations/analytics.ts +3 -0
  49. package/shared/graphql/operations/api-keys.graphql +126 -0
  50. package/shared/graphql/operations/attachments.graphql +53 -0
  51. package/shared/graphql/operations/attachments.ts +39 -0
  52. package/shared/graphql/operations/audit.graphql +46 -0
  53. package/shared/graphql/operations/auth.graphql +83 -0
  54. package/shared/graphql/operations/claude-usage.graphql +178 -0
  55. package/shared/graphql/operations/comments.graphql +4 -0
  56. package/shared/graphql/operations/dashboard.graphql +29 -0
  57. package/shared/graphql/operations/development-plans.graphql +408 -0
  58. package/shared/graphql/operations/early-access.graphql.disabled +21 -0
  59. package/shared/graphql/operations/errors.graphql.disabled +83 -0
  60. package/shared/graphql/operations/internal-api.graphql +931 -0
  61. package/shared/graphql/operations/notifications.graphql +4 -0
  62. package/shared/graphql/operations/organization-invites.graphql.disabled +32 -0
  63. package/shared/graphql/operations/performance.graphql +4 -0
  64. package/shared/graphql/operations/project-reviews.graphql +610 -0
  65. package/shared/graphql/operations/projects.graphql +98 -0
  66. package/shared/graphql/operations/settings.graphql +4 -0
  67. package/shared/graphql/operations/stories.graphql +113 -0
  68. package/shared/graphql/operations/subscriptions.graphql +235 -0
  69. package/shared/graphql/operations/subscriptions.graphql.disabled +96 -0
  70. package/shared/graphql/operations/tasks.graphql +257 -0
  71. package/shared/graphql/operations/team.graphql +111 -0
  72. package/shared/graphql/operations/team.ts +226 -0
  73. package/shared/graphql/operations/time-tracking.graphql.disabled +96 -0
  74. package/shared/graphql/operations/work-queue.graphql +210 -0
  75. package/shared/graphql/operations/work-queue.graphql.disabled +474 -0
  76. package/shared/graphql/operations/workspace.graphql +146 -0
  77. package/shared/graphql/schema-internal.graphql +1085 -0
  78. package/shared/graphql/schema-public.graphql +709 -0
  79. package/shared/graphql/schema.graphql +3473 -0
  80. package/shared/package.json +23 -0
@@ -0,0 +1,709 @@
1
+ enum AIWorkType {
2
+ CODE_REVIEW
3
+ IMPLEMENTATION_PLAN
4
+ PROJECT_REVIEW
5
+ REVIEW_APPLICATION
6
+ STORY_IMPLEMENTATION
7
+ TASK_COMPLETION
8
+ }
9
+
10
+ type AIWorker {
11
+ accessibleServices: [String!]!
12
+ accessibleWorkspaces: [String!]!
13
+ canAcceptWork: Boolean!
14
+ capabilities: [AIWorkType!]!
15
+ createdAt: Date!
16
+ createdBy: String
17
+ currentTaskCount: Float!
18
+ healthMetrics: JSONObject
19
+ id: ID!
20
+ isAvailable: Boolean!
21
+ isHealthy: Boolean!
22
+ lastActivity: Date
23
+ lastHeartbeat: Date
24
+ maxConcurrentTasks: Float!
25
+ metadata: JSONObject
26
+ project: Project
27
+ resourceLimits: JSONObject
28
+ scope: WorkerScope!
29
+ scopeId: String!
30
+ status: AIWorkerStatus!
31
+ team: Team
32
+ updatedAt: Date!
33
+ updatedBy: String
34
+ uptimeSeconds: Float!
35
+ user: User
36
+ utilizationPercentage: Float!
37
+ workerId: String!
38
+ workerName: String!
39
+ }
40
+
41
+ enum AIWorkerStatus {
42
+ ACTIVE
43
+ BUSY
44
+ DEGRADED
45
+ DISCONNECTED
46
+ ERROR
47
+ IDLE
48
+ REGISTERING
49
+ }
50
+
51
+ input AcceptOrganizationInviteInput {
52
+ acceptedTerms: Boolean
53
+ ageVerified: Boolean!
54
+ firstName: String!
55
+ inviteToken: String!
56
+ lastName: String!
57
+ organizationName: String!
58
+ organizationSubdomain: String!
59
+ password: String!
60
+ }
61
+
62
+ type Attachment {
63
+ createdAt: Date!
64
+ createdBy: String
65
+ duration: Int
66
+ fileExtension: String!
67
+ fileSize: Int!
68
+ fileSizeFormatted: String!
69
+ filename: String!
70
+ height: Int
71
+ id: ID!
72
+ isAudio: Boolean!
73
+ isDocument: Boolean!
74
+ isImage: Boolean!
75
+ isPublic: Boolean!
76
+ isVideo: Boolean!
77
+ mimeType: String!
78
+ originalFilename: String!
79
+ storageProvider: String!
80
+ story: Story
81
+ task: Task
82
+ updatedAt: Date!
83
+ updatedBy: String
84
+ width: Int
85
+ }
86
+
87
+ type Comment {
88
+ canDelete: Boolean!
89
+ canEdit: Boolean!
90
+ canReply: Boolean!
91
+ content: String!
92
+ contentHtml: String
93
+ createdAt: Date!
94
+ createdBy: String
95
+ editedAt: Date
96
+ hasReplies: Boolean!
97
+ id: ID!
98
+ isEdited: Boolean!
99
+ isReply: Boolean!
100
+ isTopLevel: Boolean!
101
+ parentComment: Comment
102
+ replies: [Comment!]!
103
+ replyCount: Float!
104
+ story: Story
105
+ task: Task
106
+ threadDepth: Int!
107
+ updatedAt: Date!
108
+ updatedBy: String
109
+ }
110
+
111
+ """
112
+ Date custom scalar type that accepts both date-only (YYYY-MM-DD) and full DateTime (ISO 8601) strings
113
+ """
114
+ scalar Date
115
+
116
+ type EarlyAccessRegistration {
117
+ acceptedTerms: Boolean!
118
+ ageVerified: Boolean!
119
+ aiTools: [String!]!
120
+ comments: String
121
+ companyName: String
122
+ contactName: String
123
+ createdAt: Date!
124
+ createdBy: String
125
+ currentTools: [String!]!
126
+ email: String!
127
+ id: ID!
128
+ inviteSentAt: Date
129
+ inviteToken: String
130
+ notes: String
131
+ organizationInviteId: String
132
+ painPoints: [String!]!
133
+ primaryLanguages: [String!]!
134
+ projectTypes: [String!]!
135
+ repoStructure: String
136
+ role: String
137
+ serviceCount: String
138
+ status: String!
139
+ subscribeToNewsletter: Boolean
140
+ teamSize: String
141
+ updatedAt: Date!
142
+ updatedBy: String
143
+ }
144
+
145
+ """
146
+ The `JSON` scalar type represents JSON values as specified by [ECMA-404](http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf).
147
+ """
148
+ scalar JSON
149
+
150
+ """
151
+ The `JSONObject` scalar type represents JSON objects as specified by [ECMA-404](http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf).
152
+ """
153
+ scalar JSONObject
154
+
155
+ type Mutation {
156
+ acceptOrganizationInvite(
157
+ input: AcceptOrganizationInviteInput!
158
+ ): OrganizationRegistrationResponse!
159
+ createEarlyAccessRegistration(
160
+ input: PublicEarlyAccessRegistrationInput!
161
+ ): EarlyAccessRegistration!
162
+ }
163
+
164
+ type Organization {
165
+ createdAt: Date!
166
+ createdBy: String
167
+ deletedAt: Date
168
+ description: String
169
+ fullDomain: String!
170
+ id: ID!
171
+ isActive: Boolean!
172
+ name: String!
173
+ settings: JSON
174
+ status: OrganizationStatus!
175
+ subdomain: String!
176
+ updatedAt: Date!
177
+ updatedBy: String
178
+ }
179
+
180
+ type OrganizationInvite {
181
+ acceptedAt: Date
182
+ acceptedByUserId: String
183
+ companySize: String
184
+ createdAt: Date!
185
+ createdBy: String
186
+ createdOrganizationId: String
187
+ email: String!
188
+ expiresAt: Date
189
+ features: [String!]!
190
+ id: ID!
191
+ inviteToken: String!
192
+ invitedBy: User
193
+ message: String
194
+ status: String!
195
+ suggestedOrgName: String
196
+ suggestedSubdomain: String
197
+ updatedAt: Date!
198
+ updatedBy: String
199
+ useCase: String
200
+ }
201
+
202
+ type OrganizationRegistrationResponse {
203
+ loginUrl: String
204
+ message: String!
205
+ organizationId: String
206
+ success: Boolean!
207
+ userId: String
208
+ }
209
+
210
+ enum OrganizationRole {
211
+ ADMIN
212
+ MEMBER
213
+ OWNER
214
+ VIEWER
215
+ }
216
+
217
+ enum OrganizationStatus {
218
+ ACTIVE
219
+ ARCHIVED
220
+ DELETED
221
+ SUSPENDED
222
+ }
223
+
224
+ type Phase {
225
+ allStoriesComplete: Boolean!
226
+ completedAt: Date
227
+ completedStories: Int!
228
+ createdAt: Date!
229
+ createdBy: String
230
+ description: String
231
+ id: ID!
232
+ isCompleted: Boolean!
233
+ name: String!
234
+ orderIndex: Int!
235
+ progressPercentage: Int!
236
+ project: Project!
237
+ stories: [Story!]!
238
+ totalStories: Int!
239
+ updatedAt: Date!
240
+ updatedBy: String
241
+ }
242
+
243
+ enum PlatformRole {
244
+ AGENT_ADMIN
245
+ AGENT_REVIEWER
246
+ AUDIT_VIEWER
247
+ BILLING_ADMIN
248
+ SUPER_ADMIN
249
+ SUPPORT
250
+ }
251
+
252
+ enum PriorityLevel {
253
+ CRITICAL
254
+ HIGH
255
+ LOW
256
+ MEDIUM
257
+ }
258
+
259
+ type Project {
260
+ affectedServices: [WorkspaceService!]!
261
+ blockedStoriesCount: Int!
262
+ completedStoriesCount: Int!
263
+ createdAt: Date!
264
+ createdBy: String
265
+ createdByUser: User
266
+ description: String
267
+ documentationUrl: String
268
+ healthScore: Float
269
+ id: ID!
270
+ implementationStoriesCount: Int!
271
+ isActive: Boolean!
272
+ isArchived: Boolean!
273
+ isComplete: Boolean!
274
+ isPublic: Boolean!
275
+ links: JSONObject
276
+ name: String!
277
+ notes: [ProjectNote!]!
278
+ organization: Organization!
279
+ pendingStoriesCount: Int!
280
+ phases: [Phase!]!
281
+ progressPercentage: Int!
282
+ qualityMetrics: JSONObject
283
+ repositoryUrl: String
284
+ requirements: [ProjectRequirement!]!
285
+ reviewHistory: JSONObject
286
+ reviewStoriesCount: Int!
287
+ riskProfile: JSONObject
288
+ sprints: [Sprint!]!
289
+ stage: ProjectStage!
290
+ startDate: Date
291
+ stories(limit: Int! = 50, offset: Int! = 0): [Story!]!
292
+ storiesCount: Int!
293
+ targetCompletionDate: Date
294
+ tasksCount: Int!
295
+ team: Team
296
+ updatedAt: Date!
297
+ updatedBy: String
298
+ workspaceConfig: JSONObject
299
+ workspaces: [Workspace!]!
300
+ }
301
+
302
+ type ProjectNote {
303
+ content: String!
304
+ createdAt: Date!
305
+ createdBy: String
306
+ id: ID!
307
+ isPinned: Boolean!
308
+ project: Project!
309
+ title: String
310
+ updatedAt: Date!
311
+ updatedBy: String
312
+ }
313
+
314
+ type ProjectRequirement {
315
+ acceptanceCriteria: [String!]!
316
+ applicationArea: String
317
+ createdAt: Date!
318
+ createdBy: String
319
+ description: String!
320
+ id: ID!
321
+ isCompleted: Boolean!
322
+ priority: PriorityLevel!
323
+ project: Project!
324
+ title: String!
325
+ updatedAt: Date!
326
+ updatedBy: String
327
+ }
328
+
329
+ enum ProjectStage {
330
+ ARCHIVED
331
+ COMPLETE
332
+ DESIGN
333
+ DEVELOPMENT
334
+ IMPLEMENTATION
335
+ REQUIREMENTS
336
+ }
337
+
338
+ input PublicEarlyAccessRegistrationInput {
339
+ acceptedTerms: Boolean!
340
+ ageVerified: Boolean!
341
+ aiTools: [String!]!
342
+ comments: String
343
+ companyName: String
344
+ contactName: String
345
+ currentTools: [String!]!
346
+ email: String!
347
+ painPoints: [String!]!
348
+ primaryLanguages: [String!]!
349
+ projectTypes: [String!]!
350
+ repoStructure: String
351
+ role: String
352
+ serviceCount: String
353
+ subscribeToNewsletter: Boolean
354
+ teamSize: String
355
+ }
356
+
357
+ type Query {
358
+ getOrganizationInviteByToken(token: String!): OrganizationInvite
359
+ publicApiHealth: String!
360
+ validateSubdomain(subdomain: String!): SubdomainValidationResponse!
361
+ }
362
+
363
+ type Role {
364
+ createdAt: Date!
365
+ createdBy: String
366
+ description: String
367
+ id: ID!
368
+ isSystemRole: Boolean!
369
+ name: String!
370
+ permissions: JSONObject!
371
+ updatedAt: Date!
372
+ updatedBy: String
373
+ }
374
+
375
+ """
376
+ Available service technologies
377
+ """
378
+ enum ServiceTechnology {
379
+ DATABASE
380
+ DOCKER
381
+ GO
382
+ JAVA
383
+ NGINX
384
+ NODEJS
385
+ OTHER
386
+ PYTHON
387
+ REACT
388
+ REDIS
389
+ RUST
390
+ }
391
+
392
+ type Sprint {
393
+ completedStories: Float!
394
+ createdAt: Date!
395
+ createdBy: String
396
+ duration: Float!
397
+ endDate: Date!
398
+ goal: String
399
+ id: ID!
400
+ isActive: Boolean!
401
+ isEnded: Boolean!
402
+ isInProgress: Boolean!
403
+ isStarted: Boolean!
404
+ name: String!
405
+ progressPercentage: Float!
406
+ project: Project!
407
+ startDate: Date!
408
+ stories: [Story!]!
409
+ totalStories: Float!
410
+ updatedAt: Date!
411
+ updatedBy: String
412
+ }
413
+
414
+ type Story {
415
+ acceptanceCriteria: [String!]!
416
+ affectedServices: [String!]!
417
+ assignedTo: String
418
+ assignedToUser: User
419
+ attachments: [Attachment!]!
420
+ canBeClaimed: Boolean!
421
+ claimedAt: Date
422
+ comments: [Comment!]!
423
+ completedAt: Date
424
+ completedTasks: Float!
425
+ completedTasksCount: Int!
426
+ createdAt: Date!
427
+ createdBy: String
428
+ crossWorkspaceCoordination: String
429
+ dependencies: [Story!]
430
+ dependsOn: [Story!]
431
+ description: String
432
+ estimate: Int
433
+ hasBlockingDependencies: Boolean!
434
+ id: ID!
435
+ implementationDuration: Int
436
+ isAssigned: Boolean!
437
+ isBlocked: Boolean!
438
+ isComplete: Boolean!
439
+ isInProgress: Boolean!
440
+ isInReview: Boolean!
441
+ isPending: Boolean!
442
+ orderIndex: Int
443
+ organization: Organization!
444
+ phase: Phase
445
+ priority: PriorityLevel!
446
+ progressPercentage: Int!
447
+ project: Project!
448
+ pullRequestLink: String
449
+ relatedWorkspaces: [String!]!
450
+ reviewNotes: String
451
+ reviewedAt: Date
452
+ reviewedBy: User
453
+ sprint: Sprint
454
+ startedAt: Date
455
+ status: StoryState!
456
+ storyLink: String
457
+ tags: [String!]!
458
+ taskProgressPercentage: Float!
459
+ tasks(limit: Int! = 100, offset: Int! = 0): [Task!]!
460
+ tasksCount: Int!
461
+ title: String!
462
+ totalTasks: Float!
463
+ updatedAt: Date!
464
+ updatedBy: String
465
+ workspaceId: String
466
+ }
467
+
468
+ enum StoryState {
469
+ BLOCKED
470
+ COMPLETE
471
+ IMPLEMENTATION
472
+ PENDING
473
+ REVIEW
474
+ }
475
+
476
+ type SubdomainValidationResponse {
477
+ error: String
478
+ isValid: Boolean!
479
+ suggestions: [String!]!
480
+ }
481
+
482
+ type Task {
483
+ actualHours: Int
484
+ actualTime: Int
485
+ affectedWorkspaces: [String!]!
486
+ areas: [String!]!
487
+ assignedTo: String
488
+ assignedToUser: User
489
+ attachments: [Attachment!]!
490
+ canBeClaimed: Boolean!
491
+ claimedAt: Date
492
+ comments: [Comment!]!
493
+ completedAt: Date
494
+ completionPercentage: Int!
495
+ createdAt: Date!
496
+ createdBy: String
497
+ currentSessionDuration: Float!
498
+ currentSessionStart: Date
499
+ deadline: Date
500
+ dependencies: [Task!]
501
+ dependsOn: [Task!]
502
+ description: String
503
+ dueDate: Date
504
+ estimate: Int
505
+ estimatedHours: Int
506
+ estimatedTime: Int
507
+ hasBlockingDependencies: Boolean!
508
+ id: ID!
509
+ implementationDuration: Int
510
+ implementationSummary: String
511
+ isAsk: Boolean!
512
+ isAssigned: Boolean!
513
+ isBlocked: Boolean!
514
+ isComplete: Boolean!
515
+ isFollowup: Boolean!
516
+ isInProgress: Boolean!
517
+ isOverdue: Boolean!
518
+ isPending: Boolean!
519
+ isPlanned: Boolean!
520
+ isTimerRunning: Boolean!
521
+ keyFiles: [String!]
522
+ orderIndex: Int
523
+ organization: Organization!
524
+ priority: PriorityLevel!
525
+ startedAt: Date
526
+ state: TaskState!
527
+ status: TaskState!
528
+ story: Story!
529
+ targetFilePaths: [String!]!
530
+ targetService: String
531
+ title: String!
532
+ totalTimeIncludingCurrent: Float!
533
+ totalTrackedTime: Int!
534
+ type: TaskType!
535
+ updatedAt: Date!
536
+ updatedBy: String
537
+ workspaceId: String
538
+ }
539
+
540
+ enum TaskState {
541
+ BLOCKED
542
+ COMPLETE
543
+ IMPLEMENTATION
544
+ PENDING
545
+ }
546
+
547
+ enum TaskType {
548
+ ASK
549
+ FOLLOWUP
550
+ PLANNED
551
+ }
552
+
553
+ type Team {
554
+ createdAt: Date!
555
+ createdBy: String
556
+ description: String
557
+ id: ID!
558
+ isActive: Boolean!
559
+ memberCount: Int!
560
+ members: [TeamMember!]!
561
+ name: String!
562
+ projectCount: Int!
563
+ settings: JSONObject
564
+ updatedAt: Date!
565
+ updatedBy: String
566
+ }
567
+
568
+ type TeamMember {
569
+ createdAt: Date!
570
+ createdBy: String
571
+ id: ID!
572
+ joinedAt: Date!
573
+ role: Role!
574
+ status: String!
575
+ team: Team!
576
+ updatedAt: Date!
577
+ updatedBy: String
578
+ user: User!
579
+ }
580
+
581
+ type User {
582
+ activeApiKeysCount: Int!
583
+ aiWorkers: [AIWorker!]!
584
+ assignedStoriesCount: Int!
585
+ assignedTasksCount: Int!
586
+ avatarUrl: String
587
+ canAccessAudits: Boolean!
588
+ canAccessInternal: Boolean!
589
+ canManageBilling: Boolean!
590
+ canSupportOrganizations: Boolean!
591
+ commentsCount: Int!
592
+ createdAt: Date!
593
+ createdBy: String
594
+ createdProjectsCount: Int!
595
+ displayName: String!
596
+ email: String!
597
+ firstName: String
598
+ fullName: String!
599
+ id: ID!
600
+ isActive: Boolean!
601
+ isAdmin: Boolean!
602
+ lastLoginAt: Date
603
+ lastName: String
604
+ organizationMemberships: [UserOrganization!]!
605
+ platformRoles: [UserPlatformRole!]!
606
+ role: UserRole!
607
+ status: UserStatus!
608
+ storiesCount: Int!
609
+ tasksCount: Int!
610
+ teamMemberships: [TeamMember!]!
611
+ timezone: String
612
+ updatedAt: Date!
613
+ updatedBy: String
614
+ }
615
+
616
+ type UserOrganization {
617
+ createdAt: Date!
618
+ createdBy: String
619
+ id: ID!
620
+ invitationToken: String
621
+ invitedAt: Date
622
+ invitedBy: String
623
+ joinedAt: Date!
624
+ lastAccessedAt: Date
625
+ organization: Organization!
626
+ role: OrganizationRole!
627
+ status: UserOrganizationStatus!
628
+ updatedAt: Date!
629
+ updatedBy: String
630
+ user: User!
631
+ }
632
+
633
+ """
634
+ Status of user membership in an organization
635
+ """
636
+ enum UserOrganizationStatus {
637
+ ACTIVE
638
+ INVITED
639
+ LEFT
640
+ SUSPENDED
641
+ }
642
+
643
+ type UserPlatformRole {
644
+ createdAt: Date!
645
+ createdBy: String
646
+ expiresAt: Date
647
+ grantedAt: Date
648
+ grantedBy: User
649
+ id: ID!
650
+ reason: String
651
+ role: PlatformRole!
652
+ updatedAt: Date!
653
+ updatedBy: String
654
+ user: User!
655
+ }
656
+
657
+ enum UserRole {
658
+ ADMIN
659
+ PRODUCT
660
+ VIEW
661
+ WORKER
662
+ }
663
+
664
+ enum UserStatus {
665
+ ACTIVE
666
+ DISABLED
667
+ }
668
+
669
+ enum WorkerScope {
670
+ ORGANIZATION
671
+ PROJECT
672
+ TEAM
673
+ USER
674
+ }
675
+
676
+ type Workspace {
677
+ config: JSONObject
678
+ createdAt: Date!
679
+ createdBy: String
680
+ description: String
681
+ errors: [String!]!
682
+ id: ID!
683
+ isActive: Boolean!
684
+ name: String!
685
+ path: String!
686
+ pattern: String!
687
+ projects: [Project!]!
688
+ services: [WorkspaceService!]!
689
+ updatedAt: Date!
690
+ updatedBy: String
691
+ workspaceId: String!
692
+ }
693
+
694
+ type WorkspaceService {
695
+ createdAt: Date!
696
+ createdBy: String
697
+ description: String
698
+ healthCheckUrl: String
699
+ id: ID!
700
+ isActive: Boolean!
701
+ name: String!
702
+ path: String
703
+ port: Float
704
+ repositoryUrl: String
705
+ serviceId: String!
706
+ technology: ServiceTechnology!
707
+ updatedAt: Date!
708
+ updatedBy: String
709
+ }