switchroom 0.13.2 → 0.13.4

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 (69) hide show
  1. package/dist/agent-scheduler/index.js +2 -2
  2. package/dist/auth-broker/index.js +2 -2
  3. package/dist/cli/switchroom.js +132 -214
  4. package/dist/host-control/main.js +2 -2
  5. package/dist/vault/approvals/kernel-server.js +2 -2
  6. package/dist/vault/broker/server.js +2 -2
  7. package/package.json +1 -1
  8. package/profiles/_base/start.sh.hbs +8 -8
  9. package/profiles/default/CLAUDE.md.hbs +1 -1
  10. package/telegram-plugin/dist/gateway/gateway.js +42 -10
  11. package/telegram-plugin/gateway/boot-probes.ts +13 -6
  12. package/telegram-plugin/gateway/gateway.ts +44 -6
  13. package/telegram-plugin/hooks/silent-end-interrupt-stop.mjs +5 -1
  14. package/telegram-plugin/silent-end.ts +56 -0
  15. package/telegram-plugin/tests/boot-probes.test.ts +26 -2
  16. package/telegram-plugin/tests/silent-end.test.ts +69 -0
  17. package/telegram-plugin/uat/scenarios/bridge-flap-resilience-dm.test.ts +166 -0
  18. package/skills/buildkite-agent-infrastructure/SKILL.md +0 -321
  19. package/skills/buildkite-agent-infrastructure/agents/openai.yaml +0 -6
  20. package/skills/buildkite-agent-infrastructure/assets/buildkite-icon-large.png +0 -0
  21. package/skills/buildkite-agent-infrastructure/assets/buildkite-icon-small.png +0 -0
  22. package/skills/buildkite-agent-infrastructure/references/audit-logging.md +0 -87
  23. package/skills/buildkite-agent-infrastructure/references/graphql-mutations.md +0 -690
  24. package/skills/buildkite-agent-infrastructure/references/instance-shapes.md +0 -38
  25. package/skills/buildkite-agent-infrastructure/references/pipeline-templates.md +0 -73
  26. package/skills/buildkite-agent-infrastructure/references/self-hosted-agents.md +0 -137
  27. package/skills/buildkite-agent-infrastructure/references/sso-saml.md +0 -92
  28. package/skills/buildkite-agent-runtime/SKILL.md +0 -509
  29. package/skills/buildkite-agent-runtime/agents/openai.yaml +0 -6
  30. package/skills/buildkite-agent-runtime/assets/buildkite-icon-large.png +0 -0
  31. package/skills/buildkite-agent-runtime/assets/buildkite-icon-small.png +0 -0
  32. package/skills/buildkite-agent-runtime/references/flag-reference.md +0 -417
  33. package/skills/buildkite-agent-runtime/references/patterns-and-recipes.md +0 -555
  34. package/skills/buildkite-api/SKILL.md +0 -308
  35. package/skills/buildkite-api/agents/openai.yaml +0 -6
  36. package/skills/buildkite-api/assets/buildkite-icon-large.png +0 -0
  37. package/skills/buildkite-api/assets/buildkite-icon-small.png +0 -0
  38. package/skills/buildkite-api/references/graphql-reference.md +0 -195
  39. package/skills/buildkite-api/references/patterns.md +0 -44
  40. package/skills/buildkite-api/references/webhooks.md +0 -161
  41. package/skills/buildkite-cli/SKILL.md +0 -397
  42. package/skills/buildkite-cli/agents/openai.yaml +0 -6
  43. package/skills/buildkite-cli/assets/buildkite-icon-large.png +0 -0
  44. package/skills/buildkite-cli/assets/buildkite-icon-small.png +0 -0
  45. package/skills/buildkite-cli/references/command-reference.md +0 -181
  46. package/skills/buildkite-migration/SKILL.md +0 -195
  47. package/skills/buildkite-pipelines/SKILL.md +0 -481
  48. package/skills/buildkite-pipelines/agents/openai.yaml +0 -6
  49. package/skills/buildkite-pipelines/assets/buildkite-icon-large.png +0 -0
  50. package/skills/buildkite-pipelines/assets/buildkite-icon-small.png +0 -0
  51. package/skills/buildkite-pipelines/examples/basic-pipeline.yml +0 -24
  52. package/skills/buildkite-pipelines/examples/optimized-pipeline.yml +0 -100
  53. package/skills/buildkite-pipelines/references/advanced-patterns.md +0 -286
  54. package/skills/buildkite-pipelines/references/retry-and-error-codes.md +0 -131
  55. package/skills/buildkite-pipelines/references/step-types-reference.md +0 -225
  56. package/skills/buildkite-secure-delivery/SKILL.md +0 -182
  57. package/skills/buildkite-secure-delivery/agents/openai.yaml +0 -6
  58. package/skills/buildkite-secure-delivery/assets/buildkite-icon-large.png +0 -0
  59. package/skills/buildkite-secure-delivery/assets/buildkite-icon-small.png +0 -0
  60. package/skills/buildkite-secure-delivery/references/oidc-cloud-providers.md +0 -83
  61. package/skills/buildkite-secure-delivery/references/package-publishing.md +0 -100
  62. package/skills/buildkite-test-engine/SKILL.md +0 -256
  63. package/skills/buildkite-test-engine/agents/openai.yaml +0 -6
  64. package/skills/buildkite-test-engine/assets/buildkite-icon-large.png +0 -0
  65. package/skills/buildkite-test-engine/assets/buildkite-icon-small.png +0 -0
  66. package/skills/buildkite-test-engine/examples/bktec-splitting.yml +0 -16
  67. package/skills/buildkite-test-engine/examples/collector-pipeline.yml +0 -11
  68. package/skills/buildkite-test-engine/references/collectors.md +0 -198
  69. package/skills/buildkite-test-engine/references/splitting-examples.md +0 -93
@@ -1,690 +0,0 @@
1
- # GraphQL Mutations Reference — Platform Engineering
2
-
3
- Complete mutation examples for managing Buildkite clusters, queues, agent tokens, pipeline templates, SSO providers, and audit events via the GraphQL API at `https://graphql.buildkite.com/v1`.
4
-
5
- All mutations require an API token with appropriate scopes. Pass it as a Bearer token in the `Authorization` header.
6
-
7
- ## Prerequisites — Get Organization and Cluster IDs
8
-
9
- ```graphql
10
- query {
11
- organization(slug: "my-org") {
12
- id
13
- teams(first: 100) {
14
- edges {
15
- node { id slug name }
16
- }
17
- }
18
- clusters(first: 50) {
19
- edges {
20
- node {
21
- id
22
- uuid
23
- name
24
- description
25
- color
26
- emoji
27
- defaultQueue { id key }
28
- }
29
- }
30
- }
31
- }
32
- }
33
- ```
34
-
35
- ---
36
-
37
- ## Clusters
38
-
39
- ### Create a cluster
40
-
41
- ```graphql
42
- mutation CreateCluster {
43
- clusterCreate(input: {
44
- organizationId: "T3JnYW5pemF0aW9uLS0tYWJjMTIz"
45
- name: "Production"
46
- description: "Production CI/CD cluster"
47
- emoji: ":rocket:"
48
- color: "#14CC80"
49
- }) {
50
- cluster {
51
- id
52
- uuid
53
- name
54
- description
55
- emoji
56
- color
57
- defaultQueue { id key }
58
- createdBy { name email }
59
- }
60
- }
61
- }
62
- ```
63
-
64
- ### Update a cluster
65
-
66
- ```graphql
67
- mutation UpdateCluster {
68
- clusterUpdate(input: {
69
- organizationId: "org-id"
70
- id: "cluster-id"
71
- name: "Production (Primary)"
72
- description: "Updated description"
73
- emoji: ":rocket:"
74
- color: "#0B79CE"
75
- defaultQueueId: "queue-id"
76
- }) {
77
- cluster { id name description defaultQueue { id key } }
78
- }
79
- }
80
- ```
81
-
82
- ### Delete a cluster
83
-
84
- ```graphql
85
- mutation DeleteCluster {
86
- clusterDelete(input: {
87
- organizationId: "org-id"
88
- id: "cluster-id"
89
- }) {
90
- deletedClusterId
91
- }
92
- }
93
- ```
94
-
95
- ---
96
-
97
- ## Queues
98
-
99
- ### Create a self-hosted queue
100
-
101
- ```graphql
102
- mutation CreateSelfHostedQueue {
103
- clusterQueueCreate(input: {
104
- organizationId: "org-id"
105
- clusterId: "cluster-id"
106
- key: "gpu-runners"
107
- description: "GPU-equipped self-hosted agents for ML workloads"
108
- }) {
109
- clusterQueue {
110
- id
111
- uuid
112
- key
113
- description
114
- dispatchPaused
115
- hosted
116
- createdBy { name email }
117
- }
118
- }
119
- }
120
- ```
121
-
122
- ### Create a hosted queue (Linux)
123
-
124
- ```graphql
125
- mutation CreateHostedLinuxQueue {
126
- clusterQueueCreate(input: {
127
- organizationId: "org-id"
128
- clusterId: "cluster-id"
129
- key: "linux-large"
130
- description: "Linux 8 vCPU / 32 GB for heavy compilation"
131
- hostedAgents: {
132
- instanceShape: LINUX_AMD64_8X32
133
- }
134
- }) {
135
- clusterQueue {
136
- id
137
- uuid
138
- key
139
- description
140
- hosted
141
- hostedAgents {
142
- instanceShape {
143
- name
144
- size
145
- vcpu
146
- memory
147
- }
148
- }
149
- }
150
- }
151
- }
152
- ```
153
-
154
- ### Create a hosted queue (macOS)
155
-
156
- ```graphql
157
- mutation CreateHostedMacOSQueue {
158
- clusterQueueCreate(input: {
159
- organizationId: "org-id"
160
- clusterId: "cluster-id"
161
- key: "macos-ci"
162
- description: "macOS M4 for Xcode builds"
163
- hostedAgents: {
164
- instanceShape: MACOS_M4_12X56
165
- macosVersion: SEQUOIA
166
- }
167
- }) {
168
- clusterQueue {
169
- id
170
- key
171
- hostedAgents {
172
- instanceShape { name vcpu memory }
173
- }
174
- }
175
- }
176
- }
177
- ```
178
-
179
- ### Create a hosted queue with custom agent image
180
-
181
- ```graphql
182
- mutation CreateHostedCustomImageQueue {
183
- clusterQueueCreate(input: {
184
- organizationId: "org-id"
185
- clusterId: "cluster-id"
186
- key: "custom-linux"
187
- description: "Custom Linux image with pre-installed toolchain"
188
- hostedAgents: {
189
- instanceShape: LINUX_AMD64_4X16
190
- agentImageRef: "my-org.registry.buildkite.com/ci-image:latest"
191
- }
192
- }) {
193
- clusterQueue {
194
- id
195
- key
196
- hostedAgents { instanceShape { name vcpu memory } }
197
- }
198
- }
199
- }
200
- ```
201
-
202
- ### Update a queue
203
-
204
- ```graphql
205
- mutation UpdateQueue {
206
- clusterQueueUpdate(input: {
207
- organizationId: "org-id"
208
- id: "queue-id"
209
- description: "Updated queue description"
210
- }) {
211
- clusterQueue { id key description }
212
- }
213
- }
214
- ```
215
-
216
- ### Pause dispatch
217
-
218
- ```graphql
219
- mutation PauseQueue {
220
- clusterQueuePauseDispatch(input: {
221
- organizationId: "org-id"
222
- id: "queue-id"
223
- note: "Maintenance window 2026-03-26 22:00-23:00 UTC"
224
- }) {
225
- clusterQueue { id key dispatchPaused }
226
- }
227
- }
228
- ```
229
-
230
- ### Resume dispatch
231
-
232
- ```graphql
233
- mutation ResumeQueue {
234
- clusterQueueResumeDispatch(input: {
235
- organizationId: "org-id"
236
- id: "queue-id"
237
- }) {
238
- clusterQueue { id key dispatchPaused }
239
- }
240
- }
241
- ```
242
-
243
- ### Delete a queue
244
-
245
- ```graphql
246
- mutation DeleteQueue {
247
- clusterQueueDelete(input: {
248
- organizationId: "org-id"
249
- id: "queue-id"
250
- }) {
251
- deletedClusterQueueId
252
- }
253
- }
254
- ```
255
-
256
- ---
257
-
258
- ## Agent Tokens
259
-
260
- ### Create a clustered agent token
261
-
262
- ```graphql
263
- mutation CreateClusterToken {
264
- clusterAgentTokenCreate(input: {
265
- organizationId: "org-id"
266
- clusterId: "cluster-id"
267
- description: "Backend CI agents - production"
268
- allowedIpAddresses: "10.0.0.0/8,172.16.0.0/12"
269
- }) {
270
- clusterAgentTokenEdge {
271
- node {
272
- id
273
- uuid
274
- description
275
- allowedIpAddresses
276
- token # Only returned at creation — store immediately
277
- createdAt
278
- }
279
- }
280
- }
281
- }
282
- ```
283
-
284
- ### Create an unclustered agent token
285
-
286
- ```graphql
287
- mutation CreateUnclusteredToken {
288
- agentTokenCreate(input: {
289
- organizationId: "org-id"
290
- description: "Legacy unclustered agents"
291
- }) {
292
- agentTokenEdge {
293
- node {
294
- id
295
- description
296
- token # Only returned at creation
297
- }
298
- }
299
- }
300
- }
301
- ```
302
-
303
- ### Revoke a token
304
-
305
- ```graphql
306
- mutation RevokeToken {
307
- agentTokenRevoke(input: {
308
- id: "token-id"
309
- reason: "Compromised — rotated to new token"
310
- }) {
311
- agentToken { id description revokedAt revokedReason }
312
- }
313
- }
314
- ```
315
-
316
- ---
317
-
318
- ## Pipeline Templates
319
-
320
- Enterprise-only. Templates define standard pipeline YAML that pipelines can inherit.
321
-
322
- ### Create a template
323
-
324
- ```graphql
325
- mutation CreateTemplate {
326
- pipelineTemplateCreate(input: {
327
- organizationId: "org-id"
328
- name: "Standard CI Template"
329
- description: "Organization-standard pipeline with security scanning"
330
- available: true
331
- configuration: """
332
- steps:
333
- - label: ":pipeline: Upload"
334
- command: buildkite-agent pipeline upload
335
-
336
- - wait
337
-
338
- - label: ":shield: Security Scan"
339
- command: "scripts/security-scan.sh"
340
- agents:
341
- queue: "security-scanners"
342
- retry:
343
- automatic:
344
- - exit_status: -1
345
- limit: 2
346
-
347
- - wait
348
-
349
- - label: ":rocket: Deploy"
350
- command: "scripts/deploy.sh"
351
- branches: "main"
352
- concurrency: 1
353
- concurrency_group: "deploy/production"
354
- """
355
- }) {
356
- pipelineTemplate {
357
- id
358
- uuid
359
- name
360
- description
361
- available
362
- configuration
363
- }
364
- }
365
- }
366
- ```
367
-
368
- ### Update a template
369
-
370
- ```graphql
371
- mutation UpdateTemplate {
372
- pipelineTemplateUpdate(input: {
373
- id: "template-id"
374
- name: "Standard CI Template v2"
375
- description: "Updated with artifact signing step"
376
- available: true
377
- configuration: "..."
378
- }) {
379
- pipelineTemplate { id name available }
380
- }
381
- }
382
- ```
383
-
384
- ### Delete a template
385
-
386
- ```graphql
387
- mutation DeleteTemplate {
388
- pipelineTemplateDelete(input: {
389
- id: "template-id"
390
- }) {
391
- deletedPipelineTemplateId
392
- }
393
- }
394
- ```
395
-
396
- ---
397
-
398
- ## SSO Providers
399
-
400
- ### Create a SAML provider
401
-
402
- ```graphql
403
- mutation CreateSAMLProvider {
404
- ssoProviderCreate(input: {
405
- organizationId: "org-id"
406
- type: SAML
407
- emailDomain: "example.com"
408
- emailDomainVerificationAddress: "admin@example.com"
409
- }) {
410
- ssoProvider {
411
- id
412
- state
413
- emailDomain
414
- emailDomainVerificationAddress
415
- serviceProvider {
416
- metadata { url }
417
- ssoURL # ACS URL — configure this in the IdP
418
- issuer # Entity ID — configure this in the IdP
419
- }
420
- }
421
- }
422
- }
423
- ```
424
-
425
- ### Update provider with IdP metadata URL
426
-
427
- ```graphql
428
- mutation UpdateSSOWithMetadataURL {
429
- ssoProviderUpdate(input: {
430
- id: "sso-provider-id"
431
- identityProvider: {
432
- metadata: {
433
- url: "https://idp.example.com/app/abc123/sso/saml/metadata"
434
- }
435
- }
436
- }) {
437
- ssoProvider {
438
- id
439
- state
440
- ... on SSOProviderSAML {
441
- identityProvider {
442
- ssoURL
443
- issuer
444
- metadata { url }
445
- }
446
- }
447
- }
448
- }
449
- }
450
- ```
451
-
452
- ### Update provider with manual configuration
453
-
454
- ```graphql
455
- mutation UpdateSSOManual {
456
- ssoProviderUpdate(input: {
457
- id: "sso-provider-id"
458
- identityProvider: {
459
- ssoURL: "https://idp.example.com/saml/sso"
460
- issuer: "https://idp.example.com"
461
- certificate: "-----BEGIN CERTIFICATE-----\nMIID...base64...==\n-----END CERTIFICATE-----"
462
- }
463
- }) {
464
- ssoProvider { id state }
465
- }
466
- }
467
- ```
468
-
469
- ### Enable a provider
470
-
471
- ```graphql
472
- mutation EnableSSO {
473
- ssoProviderEnable(input: {
474
- id: "sso-provider-id"
475
- }) {
476
- ssoProvider { id state enabledAt }
477
- }
478
- }
479
- ```
480
-
481
- ### Disable a provider
482
-
483
- ```graphql
484
- mutation DisableSSO {
485
- ssoProviderDisable(input: {
486
- id: "sso-provider-id"
487
- disabledReason: "Migrating to new IdP"
488
- }) {
489
- ssoProvider { id state }
490
- }
491
- }
492
- ```
493
-
494
- ### Query all SSO providers
495
-
496
- ```graphql
497
- query ListSSOProviders {
498
- organization(slug: "my-org") {
499
- ssoProviders(first: 10) {
500
- edges {
501
- node {
502
- id
503
- type
504
- state
505
- emailDomain
506
- emailDomainVerificationAddress
507
- emailDomainVerifiedAt
508
- createdAt
509
- enabledAt
510
- url
511
- ... on SSOProviderSAML {
512
- identityProvider {
513
- ssoURL
514
- issuer
515
- certificate
516
- metadata { url xml }
517
- }
518
- }
519
- ... on SSOProviderGoogleGSuite {
520
- googleHostedDomain
521
- discloseGoogleHostedDomain
522
- }
523
- }
524
- }
525
- }
526
- }
527
- }
528
- ```
529
-
530
- ---
531
-
532
- ## Audit Events
533
-
534
- ### Query recent audit events
535
-
536
- ```graphql
537
- query RecentAuditEvents {
538
- organization(slug: "my-org") {
539
- auditEvents(
540
- first: 100
541
- occurredAtFrom: "2026-03-01T00:00:00Z"
542
- occurredAtTo: "2026-03-31T23:59:59Z"
543
- order: RECENTLY_OCCURRED
544
- ) {
545
- edges {
546
- node {
547
- type
548
- occurredAt
549
- actor { name type uuid }
550
- subject { name type uuid }
551
- data
552
- context
553
- }
554
- }
555
- pageInfo {
556
- hasNextPage
557
- endCursor
558
- }
559
- }
560
- }
561
- }
562
- ```
563
-
564
- ### Filter by event type
565
-
566
- ```graphql
567
- query AgentTokenEvents {
568
- organization(slug: "my-org") {
569
- auditEvents(
570
- first: 50
571
- type: AGENT_TOKEN_CREATED
572
- ) {
573
- edges {
574
- node {
575
- type
576
- occurredAt
577
- actor { name }
578
- subject { name type }
579
- }
580
- }
581
- }
582
- }
583
- }
584
- ```
585
-
586
- ### Filter by subject
587
-
588
- ```graphql
589
- query PipelineAuditTrail {
590
- organization(slug: "my-org") {
591
- auditEvents(
592
- first: 50
593
- subjectType: PIPELINE
594
- subjectUUID: "pipeline-uuid"
595
- ) {
596
- edges {
597
- node {
598
- type
599
- occurredAt
600
- actor { name }
601
- data
602
- }
603
- }
604
- }
605
- }
606
- }
607
- ```
608
-
609
- ---
610
-
611
- ## Pipelines — Create with Cluster and Team Assignment
612
-
613
- ### Create a pipeline in a cluster
614
-
615
- ```graphql
616
- mutation CreatePipeline {
617
- pipelineCreate(input: {
618
- organizationId: "org-id"
619
- name: "backend-api"
620
- repository: {
621
- url: "git@github.com:my-org/backend-api.git"
622
- }
623
- clusterId: "cluster-id"
624
- steps: {
625
- yaml: """
626
- steps:
627
- - label: ":pipeline: Upload"
628
- command: buildkite-agent pipeline upload
629
- """
630
- }
631
- teams: [
632
- { id: "team-id" }
633
- ]
634
- }) {
635
- pipeline {
636
- id
637
- slug
638
- name
639
- cluster { id name }
640
- }
641
- }
642
- }
643
- ```
644
-
645
- ---
646
-
647
- ## Organization — Teams and Permissions
648
-
649
- ### List teams with pipeline creation permissions
650
-
651
- ```graphql
652
- query TeamsWithPipelineCreation {
653
- organization(slug: "my-org") {
654
- teams(first: 100) {
655
- edges {
656
- node {
657
- id
658
- slug
659
- name
660
- membersCanCreatePipelines
661
- members(first: 100) {
662
- edges {
663
- node {
664
- role
665
- user { name email }
666
- }
667
- }
668
- }
669
- }
670
- }
671
- }
672
- }
673
- }
674
- ```
675
-
676
- ### Check organization permissions
677
-
678
- ```graphql
679
- query OrgPermissions {
680
- organization(slug: "my-org") {
681
- permissions {
682
- ssoProviderCreate { allowed }
683
- ssoProviderUpdate { allowed }
684
- teamAdmin { allowed }
685
- teamCreate { allowed }
686
- teamEnabledChange { allowed }
687
- }
688
- }
689
- }
690
- ```
@@ -1,38 +0,0 @@
1
- # Hosted Agent Instance Shapes
2
-
3
- Hosted agent compute sizes available for queue creation.
4
-
5
- ## Linux AMD64
6
-
7
- | Shape | vCPU | Memory |
8
- |-------|------|--------|
9
- | `LINUX_AMD64_2X4` | 2 | 4 GB |
10
- | `LINUX_AMD64_4X16` | 4 | 16 GB |
11
- | `LINUX_AMD64_8X32` | 8 | 32 GB |
12
- | `LINUX_AMD64_16X64` | 16 | 64 GB |
13
-
14
- ## Linux ARM64
15
-
16
- | Shape | vCPU | Memory |
17
- |-------|------|--------|
18
- | `LINUX_ARM64_2X4` | 2 | 4 GB |
19
- | `LINUX_ARM64_4X16` | 4 | 16 GB |
20
- | `LINUX_ARM64_8X32` | 8 | 32 GB |
21
- | `LINUX_ARM64_16X64` | 16 | 64 GB |
22
-
23
- ## macOS M2
24
-
25
- | Shape | vCPU | Memory |
26
- |-------|------|--------|
27
- | `MACOS_M2_4X7` | 4 | 7 GB |
28
- | `MACOS_M2_6X14` | 6 | 14 GB |
29
- | `MACOS_M2_12X28` | 12 | 28 GB |
30
-
31
- ## macOS M4
32
-
33
- | Shape | vCPU | Memory |
34
- |-------|------|--------|
35
- | `MACOS_M4_6X28` | 6 | 28 GB |
36
- | `MACOS_M4_12X56` | 12 | 56 GB |
37
-
38
- macOS queues accept additional settings: `macosVersion` (`SONOMA`, `SEQUOIA`, `TAHOE`) and `xcodeVersion`. Linux queues accept `agentImageRef` for custom Docker images.