@kici-dev/engine 0.1.15 → 0.1.17

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 (102) hide show
  1. package/dist/approval/types.d.ts +56 -0
  2. package/dist/approval/types.js +42 -0
  3. package/dist/audit/access-log-policy.js +5 -1
  4. package/dist/audit/activity.js +1 -1
  5. package/dist/audit/retention-policy.js +9 -1
  6. package/dist/bundler/index.js +1 -1
  7. package/dist/bundler/rolldown-config.js +1 -1
  8. package/dist/env/environment-allowlist.js +1 -1
  9. package/dist/environment/index.js +1 -1
  10. package/dist/environment/scope-resolver.js +1 -1
  11. package/dist/environment/types.d.ts +8 -0
  12. package/dist/environment/types.js +1 -1
  13. package/dist/fanout/materialize.d.ts +67 -0
  14. package/dist/fanout/materialize.js +119 -0
  15. package/dist/index.d.ts +4 -2
  16. package/dist/index.js +10 -8
  17. package/dist/labels.js +1 -1
  18. package/dist/matrix/expand.d.ts +43 -0
  19. package/dist/matrix/expand.js +66 -0
  20. package/dist/matrix/format.d.ts +10 -0
  21. package/dist/matrix/format.js +19 -0
  22. package/dist/metrics/catalog-policy.js +8 -3
  23. package/dist/metrics/metric-catalog.generated.d.ts +1 -1
  24. package/dist/metrics/metric-catalog.generated.js +2 -2
  25. package/dist/protocol/analytics-events.js +1 -1
  26. package/dist/protocol/cluster-name.js +1 -1
  27. package/dist/protocol/dashboard-global-workflows.js +1 -1
  28. package/dist/protocol/dashboard-write-operations.js +1 -1
  29. package/dist/protocol/event-log-payload.js +1 -1
  30. package/dist/protocol/messages/access-log.d.ts +25 -5
  31. package/dist/protocol/messages/access-log.js +5 -1
  32. package/dist/protocol/messages/actor.js +1 -1
  33. package/dist/protocol/messages/auth.d.ts +1 -0
  34. package/dist/protocol/messages/auth.js +11 -2
  35. package/dist/protocol/messages/browser.js +1 -1
  36. package/dist/protocol/messages/capabilities.js +1 -1
  37. package/dist/protocol/messages/common.js +1 -1
  38. package/dist/protocol/messages/dashboard-global-workflows.js +1 -1
  39. package/dist/protocol/messages/dashboard.d.ts +1030 -50
  40. package/dist/protocol/messages/dashboard.js +377 -7
  41. package/dist/protocol/messages/event-log.js +1 -1
  42. package/dist/protocol/messages/execution-status.d.ts +13 -1
  43. package/dist/protocol/messages/execution-status.js +13 -3
  44. package/dist/protocol/messages/join.js +1 -1
  45. package/dist/protocol/messages/log-pull.js +1 -1
  46. package/dist/protocol/messages/observe.d.ts +1 -0
  47. package/dist/protocol/messages/oidc-token-relay.d.ts +31 -0
  48. package/dist/protocol/messages/oidc-token-relay.js +34 -0
  49. package/dist/protocol/messages/orchestrator-agent.d.ts +161 -0
  50. package/dist/protocol/messages/orchestrator-agent.js +117 -4
  51. package/dist/protocol/messages/peer.d.ts +76 -0
  52. package/dist/protocol/messages/peer.js +37 -2
  53. package/dist/protocol/messages/platform-orchestrator.d.ts +187 -10
  54. package/dist/protocol/messages/platform-orchestrator.js +13 -2
  55. package/dist/protocol/messages/run-events.js +1 -1
  56. package/dist/protocol/messages/scaler-event.js +1 -1
  57. package/dist/protocol/messages/source-registration.d.ts +7 -6
  58. package/dist/protocol/messages/source-registration.js +7 -6
  59. package/dist/protocol/version.js +1 -1
  60. package/dist/provenance/bundle.d.ts +54 -0
  61. package/dist/provenance/bundle.js +53 -0
  62. package/dist/provenance/dsse.d.ts +39 -0
  63. package/dist/provenance/dsse.js +53 -0
  64. package/dist/provenance/schema.d.ts +407 -0
  65. package/dist/provenance/schema.js +143 -0
  66. package/dist/provenance/verify.d.ts +71 -0
  67. package/dist/provenance/verify.js +135 -0
  68. package/dist/provider/changed-files-fetcher.js +1 -1
  69. package/dist/provider/check-run-conclusion.js +1 -1
  70. package/dist/provider/check-status-poster.js +1 -1
  71. package/dist/provider/clone-token-provider.js +1 -1
  72. package/dist/provider/contributor-resolver.js +1 -1
  73. package/dist/provider/index.js +1 -1
  74. package/dist/provider/lock-file-fetcher.js +1 -1
  75. package/dist/provider/lock-file-parse-error.js +3 -1
  76. package/dist/provider/repo-url-builder.js +1 -1
  77. package/dist/provider/types.d.ts +2 -2
  78. package/dist/provider/types.js +1 -1
  79. package/dist/provider/webhook-normalizer.js +1 -1
  80. package/dist/registration/registerable-trigger-type.js +1 -1
  81. package/dist/scaler/resource-types.js +1 -1
  82. package/dist/scaler/scaler-backend-type.js +1 -1
  83. package/dist/secrets/index.js +1 -1
  84. package/dist/secrets/types.js +1 -1
  85. package/dist/state-machine/index.js +1 -1
  86. package/dist/state-machine/machine.js +1 -1
  87. package/dist/state-machine/types.js +1 -1
  88. package/dist/trigger/decision-trace.js +1 -1
  89. package/dist/trigger/jsonpath-matcher.js +1 -1
  90. package/dist/trigger/matcher.js +1 -1
  91. package/dist/trigger/trigger-event-type.js +1 -1
  92. package/dist/trigger/types.d.ts +34 -1
  93. package/dist/trigger/types.js +14 -5
  94. package/dist/webhook/signature.js +1 -1
  95. package/dist/ws/close-codes.js +1 -1
  96. package/dist/ws/rate-limiter.js +3 -1
  97. package/dist/ws/ws-like.js +1 -1
  98. package/package.json +23 -1
  99. package/sbom.spdx.json +55 -5
  100. package/dist/protocol/messages/observe.js +0 -70
  101. package/dist/protocol/messages/test-run.js +0 -52
  102. /package/dist/{chunk-gOLHoazu.js → chunk-BTugEXQM.js} +0 -0
@@ -1,11 +1,14 @@
1
- import "../../chunk-gOLHoazu.js";
1
+ import "../../chunk-BTugEXQM.js";
2
2
  import { actorPrincipalSchema } from "./actor.js";
3
3
  import { initFailureSchema } from "./execution-status.js";
4
4
  import { SourceSubtype } from "./source-registration.js";
5
+ import { kiciBundleSchema } from "../../provenance/bundle.js";
5
6
  import { dashboardAccessLogListRequestSchema, dashboardAccessLogListResponseSchema } from "./access-log.js";
6
7
  import { dashboardOrchLogsRequestSchema, dashboardOrchLogsResponseSchema } from "./run-events.js";
7
8
  import { EventLogSource, EventLogStatus, PayloadOmittedReason } from "./event-log.js";
8
9
  import { ScalerBackendType } from "../../scaler/scaler-backend-type.js";
10
+ import { ApprovalDecision, HoldScope, approverClauseSchema } from "../../approval/types.js";
11
+ import { IfFailedPolicy } from "../../trigger/types.js";
9
12
  import { globalWorkflowsGetRequestSchema, globalWorkflowsGetResponseSchema, globalWorkflowsUpdateRequestSchema, globalWorkflowsUpdateResponseSchema } from "./dashboard-global-workflows.js";
10
13
  import { z } from "zod";
11
14
  //#region src/protocol/messages/dashboard.ts
@@ -63,6 +66,16 @@ const dashboardJobDetailSchema = z.object({
63
66
  * the job is a synthetic `rejected-*` or `init-failed-*` row; status will be 'failed'.
64
67
  */
65
68
  initFailure: initFailureSchema.optional(),
69
+ /**
70
+ * Upstream dependency edges for this job (one entry per `needs` declaration),
71
+ * resolved by the orchestrator from execution_job_needs. `upstreamName` is the
72
+ * upstream job name; `ifFailed` is the per-edge failure policy. null/absent when
73
+ * the job has no upstreams.
74
+ */
75
+ needs: z.array(z.object({
76
+ upstreamName: z.string(),
77
+ ifFailed: IfFailedPolicy
78
+ })).nullable().optional(),
66
79
  steps: z.array(dashboardStepDetailSchema)
67
80
  });
68
81
  /** Trust context from orchestrator execution_runs (populated for PR-triggered runs). */
@@ -96,6 +109,36 @@ const dashboardStepLogsResponseSchema = z.object({
96
109
  totalLines: z.number(),
97
110
  error: z.string().optional()
98
111
  });
112
+ /** Request the build-provenance attestations for a run. */
113
+ const dashboardAttestationsListRequestSchema = z.object({
114
+ type: z.literal("dashboard.attestations.list"),
115
+ requestId: z.string(),
116
+ actor: actorPrincipalSchema,
117
+ runId: z.string()
118
+ });
119
+ /**
120
+ * Single attestation in the list response, with its bundle inlined from object
121
+ * storage so the dashboard verifies it without a second fetch. The bundle is a
122
+ * KiCI Mode-A bundle (`@kici-dev/engine/provenance/bundle`).
123
+ */
124
+ const attestationListItemSchema = z.object({
125
+ id: z.string(),
126
+ jobId: z.string(),
127
+ jobName: z.string().nullable(),
128
+ subjectName: z.string(),
129
+ subjectDigest: z.string(),
130
+ mode: z.string(),
131
+ mediaType: z.string(),
132
+ createdAt: z.string(),
133
+ bundle: kiciBundleSchema
134
+ });
135
+ /** Response with the run's attestations (correlates to dashboard.attestations.list). */
136
+ const dashboardAttestationsListResponseSchema = z.object({
137
+ type: z.literal("dashboard.attestations.list.response"),
138
+ requestId: z.string(),
139
+ attestations: z.array(attestationListItemSchema),
140
+ error: z.string().optional()
141
+ });
99
142
  /**
100
143
  * Run-summary projection from the orchestrator's execution_runs table.
101
144
  *
@@ -520,7 +563,23 @@ const concurrencyStrategySchema = z.enum(["queue", "cancel-pending"]);
520
563
  const envListRequestSchema = z.object({
521
564
  type: z.literal("dashboard.environments.list"),
522
565
  requestId: z.string(),
523
- actor: actorPrincipalSchema
566
+ actor: actorPrincipalSchema,
567
+ /**
568
+ * When true, each returned environment carries its reachable secret key
569
+ * names (never values) in `secretKeys`. Used by the developer CLI's
570
+ * `kici secrets list` / `kici types` commands.
571
+ */
572
+ includeSecrets: z.boolean().optional(),
573
+ /**
574
+ * Target org the read must be scoped to, carried per-request by the Platform
575
+ * (the validated `:orgId` path param). The orchestrator honors this over its
576
+ * static connection-level org so a Platform-first `kici run remote` org —
577
+ * anchored only by `remote_sources` — sees its own environments even when the
578
+ * orchestrator's connection also serves a webhook source for a different org.
579
+ * Absent on the legacy customer-dashboard path, where the connection org is
580
+ * already the request org.
581
+ */
582
+ orgId: z.string().optional()
524
583
  });
525
584
  const envListResponseSchema = z.object({
526
585
  type: z.literal("dashboard.environments.list.response"),
@@ -533,7 +592,13 @@ const envListResponseSchema = z.object({
533
592
  enabled: z.boolean(),
534
593
  allowLocalExecution: z.boolean(),
535
594
  createdAt: z.coerce.string(),
536
- updatedAt: z.coerce.string()
595
+ updatedAt: z.coerce.string(),
596
+ /**
597
+ * Distinct secret key names reachable from this environment's scope
598
+ * bindings (never values). Present only when the request set
599
+ * `includeSecrets: true`.
600
+ */
601
+ secretKeys: z.array(z.string()).optional()
537
602
  })).optional(),
538
603
  error: z.string().optional()
539
604
  });
@@ -906,7 +971,20 @@ const heldRunsListResponseSchema = z.object({
906
971
  reason: z.string().nullable(),
907
972
  expiresAt: z.coerce.string().nullable(),
908
973
  contributorUsername: z.string().nullable().optional(),
909
- trustTier: z.string().nullable().optional()
974
+ trustTier: z.string().nullable().optional(),
975
+ jobId: z.string().optional(),
976
+ holdScope: HoldScope.optional(),
977
+ stepIndex: z.number().nullable().optional(),
978
+ requirement: z.object({
979
+ clauses: z.array(approverClauseSchema),
980
+ reason: z.string().nullable().optional()
981
+ }).nullable().optional(),
982
+ decisions: z.array(z.object({
983
+ approverUserId: z.string(),
984
+ decision: ApprovalDecision,
985
+ clausesSatisfied: z.array(approverClauseSchema).nullable().optional(),
986
+ createdAt: z.coerce.string()
987
+ })).optional()
910
988
  })).optional(),
911
989
  error: z.string().optional()
912
990
  });
@@ -1298,10 +1376,128 @@ const backendTestResponseSchema = z.object({
1298
1376
  latencyMs: z.number().optional(),
1299
1377
  error: z.string().optional()
1300
1378
  });
1379
+ /** Enum of the five test-relay control message types (request side). */
1380
+ const TestRelayType = z.enum([
1381
+ "test.relay.uploads.init",
1382
+ "test.relay.trigger",
1383
+ "test.relay.run.status",
1384
+ "test.relay.run.logs",
1385
+ "test.relay.cancel"
1386
+ ]);
1387
+ /** Request an external presigned upload URL for the overlay tarball. */
1388
+ const testRelayUploadsInitRequestSchema = z.object({
1389
+ type: z.literal("test.relay.uploads.init"),
1390
+ requestId: z.string(),
1391
+ actor: actorPrincipalSchema,
1392
+ routingKey: z.string(),
1393
+ sha: z.string().optional(),
1394
+ fileCount: z.number().optional(),
1395
+ compressedSize: z.number().optional()
1396
+ });
1397
+ /** Response with the external presigned upload URL + ephemeral encryption key. */
1398
+ const testRelayUploadsInitResponseSchema = z.object({
1399
+ type: z.literal("test.relay.uploads.init.response"),
1400
+ requestId: z.string(),
1401
+ uploadId: z.string().optional(),
1402
+ signedUrl: z.string().optional(),
1403
+ publicKey: z.string().optional(),
1404
+ expiresIn: z.number().optional(),
1405
+ error: z.string().optional()
1406
+ });
1407
+ /** Trigger a remote test run (mirrors the orchestrator's TestTriggerInput). */
1408
+ const testRelayTriggerRequestSchema = z.object({
1409
+ type: z.literal("test.relay.trigger"),
1410
+ requestId: z.string(),
1411
+ actor: actorPrincipalSchema,
1412
+ routingKey: z.string(),
1413
+ fixtureId: z.string(),
1414
+ event: z.object({
1415
+ type: z.string(),
1416
+ action: z.string().optional(),
1417
+ targetBranch: z.string(),
1418
+ sourceBranch: z.string().optional(),
1419
+ payload: z.record(z.string(), z.unknown()),
1420
+ changedFiles: z.array(z.string()).optional()
1421
+ }),
1422
+ workflowName: z.string().optional(),
1423
+ uploadId: z.string().optional(),
1424
+ cliPublicKey: z.string().optional(),
1425
+ inlineLockFile: z.string().optional(),
1426
+ fullRepo: z.boolean().optional(),
1427
+ secrets: z.record(z.string(), z.string()).optional(),
1428
+ encryptedSecrets: z.string().optional(),
1429
+ encryptedSecretsKey: z.string().optional()
1430
+ });
1431
+ /** Response acknowledging a triggered run. */
1432
+ const testRelayTriggerResponseSchema = z.object({
1433
+ type: z.literal("test.relay.trigger.response"),
1434
+ requestId: z.string(),
1435
+ runId: z.string().optional(),
1436
+ status: z.enum(["accepted", "rejected"]).optional(),
1437
+ reason: z.string().optional(),
1438
+ jobIds: z.array(z.string()).optional(),
1439
+ error: z.string().optional()
1440
+ });
1441
+ /** Request a snapshot of a run's status. */
1442
+ const testRelayRunStatusRequestSchema = z.object({
1443
+ type: z.literal("test.relay.run.status"),
1444
+ requestId: z.string(),
1445
+ actor: actorPrincipalSchema,
1446
+ runId: z.string()
1447
+ });
1448
+ /** Response carrying a run-status snapshot. */
1449
+ const testRelayRunStatusResponseSchema = z.object({
1450
+ type: z.literal("test.relay.run.status.response"),
1451
+ requestId: z.string(),
1452
+ runId: z.string().optional(),
1453
+ status: z.string().optional(),
1454
+ jobs: z.array(z.object({
1455
+ jobId: z.string(),
1456
+ jobName: z.string(),
1457
+ status: z.string(),
1458
+ exitCode: z.number().nullable().optional(),
1459
+ errorMessage: z.string().nullable().optional()
1460
+ })).optional(),
1461
+ done: z.boolean().optional(),
1462
+ error: z.string().optional()
1463
+ });
1464
+ /** Request the next chunk of a run's logs from a cursor. */
1465
+ const testRelayRunLogsRequestSchema = z.object({
1466
+ type: z.literal("test.relay.run.logs"),
1467
+ requestId: z.string(),
1468
+ actor: actorPrincipalSchema,
1469
+ runId: z.string(),
1470
+ cursor: z.number()
1471
+ });
1472
+ /** Response carrying the next log chunk + a monotonic cursor. */
1473
+ const testRelayRunLogsResponseSchema = z.object({
1474
+ type: z.literal("test.relay.run.logs.response"),
1475
+ requestId: z.string(),
1476
+ lines: z.array(z.string()).optional(),
1477
+ nextCursor: z.number().optional(),
1478
+ done: z.boolean().optional(),
1479
+ error: z.string().optional()
1480
+ });
1481
+ /** Request to cancel a run. */
1482
+ const testRelayCancelRequestSchema = z.object({
1483
+ type: z.literal("test.relay.cancel"),
1484
+ requestId: z.string(),
1485
+ actor: actorPrincipalSchema,
1486
+ runId: z.string().optional(),
1487
+ branch: z.string().optional()
1488
+ });
1489
+ /** Response acknowledging a cancel. */
1490
+ const testRelayCancelResponseSchema = z.object({
1491
+ type: z.literal("test.relay.cancel.response"),
1492
+ requestId: z.string(),
1493
+ cancelled: z.boolean().optional(),
1494
+ error: z.string().optional()
1495
+ });
1301
1496
  /** Dashboard messages flowing from Platform to Orchestrator. */
1302
1497
  const dashboardPlatformToOrchSchema = z.discriminatedUnion("type", [
1303
1498
  dashboardRunDetailRequestSchema,
1304
1499
  dashboardStepLogsRequestSchema,
1500
+ dashboardAttestationsListRequestSchema,
1305
1501
  dashboardRunsListRequestSchema,
1306
1502
  dashboardRunsFiltersRequestSchema,
1307
1503
  dashboardSourcesListRequestSchema,
@@ -1354,12 +1550,18 @@ const dashboardPlatformToOrchSchema = z.discriminatedUnion("type", [
1354
1550
  dashboardEventDlqDiscardRequestSchema,
1355
1551
  globalWorkflowsGetRequestSchema,
1356
1552
  globalWorkflowsUpdateRequestSchema,
1357
- dashboardAccessLogListRequestSchema
1553
+ dashboardAccessLogListRequestSchema,
1554
+ testRelayUploadsInitRequestSchema,
1555
+ testRelayTriggerRequestSchema,
1556
+ testRelayRunStatusRequestSchema,
1557
+ testRelayRunLogsRequestSchema,
1558
+ testRelayCancelRequestSchema
1358
1559
  ]);
1359
1560
  /** Dashboard messages flowing from Orchestrator to Platform. */
1360
1561
  const dashboardOrchToPlatformSchema = z.discriminatedUnion("type", [
1361
1562
  dashboardRunDetailResponseSchema,
1362
1563
  dashboardStepLogsResponseSchema,
1564
+ dashboardAttestationsListResponseSchema,
1363
1565
  dashboardRunsListResponseSchema,
1364
1566
  dashboardRunsFiltersResponseSchema,
1365
1567
  dashboardSourcesListResponseSchema,
@@ -1412,7 +1614,12 @@ const dashboardOrchToPlatformSchema = z.discriminatedUnion("type", [
1412
1614
  dashboardEventDlqDiscardResponseSchema,
1413
1615
  globalWorkflowsGetResponseSchema,
1414
1616
  globalWorkflowsUpdateResponseSchema,
1415
- dashboardAccessLogListResponseSchema
1617
+ dashboardAccessLogListResponseSchema,
1618
+ testRelayUploadsInitResponseSchema,
1619
+ testRelayTriggerResponseSchema,
1620
+ testRelayRunStatusResponseSchema,
1621
+ testRelayRunLogsResponseSchema,
1622
+ testRelayCancelResponseSchema
1416
1623
  ]);
1417
1624
  /** REST API response for run detail (jobs with nested steps). */
1418
1625
  const dashboardRunDetailApiResponseSchema = z.object({
@@ -1431,6 +1638,169 @@ const dashboardStepLogsApiResponseSchema = z.object({
1431
1638
  lines: z.array(z.string()),
1432
1639
  totalLines: z.number()
1433
1640
  });
1641
+ /**
1642
+ * REST API response for the run attestations list. The orchestrator-relayed
1643
+ * `attestations` array is augmented by Platform with the provenance trust root
1644
+ * from its own `oidcIssuer` config: `trustedIssuer` is the issuer the dashboard
1645
+ * pins each bundle's identity token to (never the bundle's own `iss`), and
1646
+ * `jwksUri` is the discovery JWKS endpoint the dashboard fetches to verify.
1647
+ * Both are null when the Platform has no provenance issuer configured — the
1648
+ * dashboard then lists + downloads the bundles but renders the badge as
1649
+ * "verification unavailable".
1650
+ */
1651
+ const dashboardAttestationsApiResponseSchema = z.object({
1652
+ trustedIssuer: z.string().nullable(),
1653
+ jwksUri: z.string().nullable(),
1654
+ attestations: z.array(attestationListItemSchema)
1655
+ });
1656
+ /** Resolved user identity attached to run attribution fields. */
1657
+ const runListPrincipalUserSchema = z.object({
1658
+ sub: z.string(),
1659
+ email: z.string().nullable(),
1660
+ displayName: z.string().nullable()
1661
+ });
1662
+ /** Source identity attached to a run summary. */
1663
+ const runListSourceSchema = z.object({
1664
+ routingKey: z.string(),
1665
+ name: z.string().nullable(),
1666
+ subtype: SourceSubtype.nullable(),
1667
+ provider: z.string()
1668
+ });
1669
+ /** Single run summary in the paginated run list. */
1670
+ const runListItemSchema = z.object({
1671
+ runId: z.string(),
1672
+ workflowName: z.string(),
1673
+ status: z.string(),
1674
+ repoIdentifier: z.string().nullable(),
1675
+ sha: z.string().nullable(),
1676
+ ref: z.string().nullable(),
1677
+ triggerEvent: z.string().nullable(),
1678
+ commitMessage: z.string().nullable(),
1679
+ jobCount: z.number().nullable(),
1680
+ startedAt: z.coerce.string().nullable(),
1681
+ completedAt: z.coerce.string().nullable(),
1682
+ durationMs: z.number().nullable(),
1683
+ parentRunId: z.string().nullable(),
1684
+ originalRunId: z.string().nullable(),
1685
+ triggeredBy: z.string().nullable(),
1686
+ triggeredByUser: runListPrincipalUserSchema.nullable(),
1687
+ cancelledBy: z.string().nullable(),
1688
+ cancelledByUser: runListPrincipalUserSchema.nullable(),
1689
+ failureReason: z.string().optional(),
1690
+ hadCompileJob: z.boolean(),
1691
+ compileJobId: z.string().nullable(),
1692
+ source: runListSourceSchema.nullable()
1693
+ });
1694
+ /** Paginated run list response envelope. */
1695
+ const runListResponseSchema = z.object({
1696
+ runs: z.array(runListItemSchema),
1697
+ total: z.number(),
1698
+ page: z.number(),
1699
+ pageSize: z.number(),
1700
+ hasMore: z.boolean()
1701
+ });
1702
+ const diagnosticsInfraAgentSchema = z.object({
1703
+ agentId: z.string(),
1704
+ labels: z.array(z.string()),
1705
+ platform: z.string(),
1706
+ arch: z.string(),
1707
+ activeJobs: z.number(),
1708
+ maxConcurrency: z.number(),
1709
+ lastHeartbeatAt: z.number(),
1710
+ registeredAt: z.number(),
1711
+ version: z.string().nullable().optional(),
1712
+ hostname: z.string().nullable().optional(),
1713
+ osRelease: z.string().nullable().optional(),
1714
+ osVersion: z.string().nullable().optional(),
1715
+ totalMemoryMb: z.number().nullable().optional(),
1716
+ cpuCount: z.number().nullable().optional(),
1717
+ nodeVersion: z.string().nullable().optional(),
1718
+ memoryUsedMb: z.number().nullable().optional(),
1719
+ memoryAvailableMb: z.number().nullable().optional(),
1720
+ uptimeSeconds: z.number().nullable().optional(),
1721
+ runningAsUser: z.string().nullable().optional(),
1722
+ runningAsUid: z.number().nullable().optional(),
1723
+ scalerName: z.string().nullable().optional()
1724
+ });
1725
+ const diagnosticsInfraScalerSchema = z.object({
1726
+ name: z.string(),
1727
+ type: z.string(),
1728
+ maxAgents: z.number(),
1729
+ activeAgents: z.number(),
1730
+ labelSets: z.array(z.array(z.string())),
1731
+ config: z.record(z.string(), z.unknown()).optional(),
1732
+ hosts: z.array(z.string()).optional()
1733
+ });
1734
+ const diagnosticsInfraOrchestratorSchema = z.object({
1735
+ connectionId: z.string(),
1736
+ clusterName: z.string().nullable().optional(),
1737
+ instanceId: z.string().nullable().optional(),
1738
+ routingKeys: z.array(z.string()),
1739
+ connected: z.boolean(),
1740
+ connectedAt: z.number().nullable().optional(),
1741
+ lastHeartbeat: z.number().nullable().optional(),
1742
+ version: z.string().nullable().optional(),
1743
+ mode: z.string().nullable().optional(),
1744
+ role: z.string().nullable().optional(),
1745
+ raftRole: z.string().nullable().optional(),
1746
+ raftTerm: z.number().nullable().optional(),
1747
+ raftLeaderId: z.string().nullable().optional(),
1748
+ scalerBackends: z.array(z.string()),
1749
+ s3LogAccess: z.boolean().nullable().optional(),
1750
+ agentCount: z.number(),
1751
+ runningJobs: z.number(),
1752
+ queuedJobs: z.number(),
1753
+ pendingLabelGaps: z.array(z.string()),
1754
+ agents: z.array(diagnosticsInfraAgentSchema),
1755
+ hostname: z.string().nullable().optional(),
1756
+ osRelease: z.string().nullable().optional(),
1757
+ osVersion: z.string().nullable().optional(),
1758
+ totalMemoryMb: z.number().nullable().optional(),
1759
+ cpuCount: z.number().nullable().optional(),
1760
+ nodeVersion: z.string().nullable().optional(),
1761
+ memoryUsedMb: z.number().nullable().optional(),
1762
+ memoryAvailableMb: z.number().nullable().optional(),
1763
+ uptimeSeconds: z.number().nullable().optional(),
1764
+ runningAsUser: z.string().nullable().optional(),
1765
+ runningAsUid: z.number().nullable().optional(),
1766
+ statefulAgentCount: z.number(),
1767
+ statefulHosts: z.array(z.string()),
1768
+ scalers: z.array(diagnosticsInfraScalerSchema),
1769
+ dependencyHealth: z.array(z.object({
1770
+ name: z.string(),
1771
+ status: z.enum([
1772
+ "pass",
1773
+ "warn",
1774
+ "fail"
1775
+ ]),
1776
+ message: z.string().nullable(),
1777
+ details: z.record(z.string(), z.unknown()).optional(),
1778
+ durationMs: z.number().optional()
1779
+ })).optional(),
1780
+ error: z.string().optional()
1781
+ });
1782
+ const diagnosticsInfraAlertSchema = z.object({
1783
+ type: z.string(),
1784
+ message: z.string(),
1785
+ severity: z.string()
1786
+ });
1787
+ const diagnosticsInfrastructureResponseSchema = z.object({
1788
+ orchestrators: z.array(diagnosticsInfraOrchestratorSchema),
1789
+ alerts: z.array(diagnosticsInfraAlertSchema),
1790
+ latestVersion: z.string().nullable().optional()
1791
+ });
1792
+ const diagnosticsExecutionMetricsSchema = z.object({
1793
+ totalRuns: z.number(),
1794
+ successRate: z.number(),
1795
+ avgDurationSeconds: z.number(),
1796
+ queuedJobs: z.number(),
1797
+ runningJobs: z.number()
1798
+ });
1799
+ const diagnosticsSummaryResponseSchema = z.object({
1800
+ connections: z.array(z.unknown()),
1801
+ executionMetrics: diagnosticsExecutionMetricsSchema,
1802
+ orphanedConnections: z.number()
1803
+ });
1434
1804
  /** Single infrastructure event for a run (from run_events table). */
1435
1805
  const runEventSchema = z.object({
1436
1806
  id: z.string(),
@@ -1489,6 +1859,6 @@ const orgMemberSchema = z.object({
1489
1859
  /** Response for org members list endpoint. */
1490
1860
  const memberListResponseSchema = z.object({ members: z.array(orgMemberSchema) });
1491
1861
  //#endregion
1492
- export { EnvDeleteErrorCode, EventLogPayloadStreamError, HeldRunQueueType, HeldRunStatus, backendGetRequestSchema, backendGetResponseSchema, backendItemSchema, backendSyncRequestSchema, backendSyncResponseSchema, backendTestRequestSchema, backendTestResponseSchema, backendsListRequestSchema, backendsListResponseSchema, backendsSyncAllRequestSchema, backendsSyncAllResponseSchema, browserEventLogPayloadChunkSchema, dashboardDiagnosticsRequestSchema, dashboardDiagnosticsResponseSchema, dashboardEventDlqCountRequestSchema, dashboardEventDlqDiscardRequestSchema, dashboardEventDlqListItemSchema, dashboardEventDlqListRequestSchema, dashboardEventDlqRetryRequestSchema, dashboardEventLogDetailRequestSchema, dashboardEventLogListRequestSchema, dashboardEventLogPayloadChunkSchema, dashboardEventLogPayloadStreamRequestSchema, dashboardJobDetailSchema, dashboardOrchToPlatformSchema, dashboardPayloadRequestSchema, dashboardPlatformToOrchSchema, dashboardRunDetailApiResponseSchema, dashboardRunDetailRequestSchema, dashboardRunDetailResponseSchema, dashboardRunSummarySchema, dashboardRunsFiltersRequestSchema, dashboardRunsFiltersResponseSchema, dashboardRunsListRequestSchema, dashboardRunsListResponseSchema, dashboardScalerAgentsRequestSchema, dashboardScalerAgentsResponseSchema, dashboardScalerCapacityRequestSchema, dashboardScalerCapacityResponseSchema, dashboardSourceSummarySchema, dashboardSourcesListRequestSchema, dashboardSourcesListResponseSchema, dashboardStepLogsApiResponseSchema, dashboardStepLogsRequestSchema, dashboardStepLogsResponseSchema, envBindingsListRequestSchema, envBindingsSetRequestSchema, envCreateRequestSchema, envDeleteRequestSchema, envGetRequestSchema, envHistoryRequestSchema, envListRequestSchema, envSecretDeleteRequestSchema, envSecretScopeCreateRequestSchema, envSecretScopeDeleteRequestSchema, envSecretScopeRenameRequestSchema, envSecretSetRequestSchema, envSecretsListRequestSchema, envSourceOverrideDeleteRequestSchema, envSourceOverrideSetRequestSchema, envSourceOverridesListRequestSchema, envTestAccessSetRequestSchema, envUpdateRequestSchema, envVarDeleteRequestSchema, envVarSetRequestSchema, envVarsListRequestSchema, eventLogListItemSchema, heldRunApproveRequestSchema, heldRunRejectRequestSchema, heldRunsListRequestSchema, identityLinkItemSchema, identityLinkListResponseSchema, manualScheduleRequestSchema, memberIdentityLinkSchema, memberListResponseSchema, memberRoleAssignmentSchema, orgMemberSchema, registrationDeleteRequestSchema, registrationDisableRequestSchema, registrationItemSchema, registrationsListRequestSchema, registrationsListResponseSchema, runCancelRequestSchema, runEventSchema, runLineageResponseSchema, runRerunRequestSchema, trustPolicyResponseSchema };
1862
+ export { EnvDeleteErrorCode, EventLogPayloadStreamError, HeldRunQueueType, HeldRunStatus, TestRelayType, attestationListItemSchema, backendGetRequestSchema, backendGetResponseSchema, backendItemSchema, backendSyncRequestSchema, backendSyncResponseSchema, backendTestRequestSchema, backendTestResponseSchema, backendsListRequestSchema, backendsListResponseSchema, backendsSyncAllRequestSchema, backendsSyncAllResponseSchema, browserEventLogPayloadChunkSchema, dashboardAttestationsApiResponseSchema, dashboardAttestationsListRequestSchema, dashboardAttestationsListResponseSchema, dashboardDiagnosticsRequestSchema, dashboardDiagnosticsResponseSchema, dashboardEventDlqCountRequestSchema, dashboardEventDlqDiscardRequestSchema, dashboardEventDlqListItemSchema, dashboardEventDlqListRequestSchema, dashboardEventDlqRetryRequestSchema, dashboardEventLogDetailRequestSchema, dashboardEventLogListRequestSchema, dashboardEventLogPayloadChunkSchema, dashboardEventLogPayloadStreamRequestSchema, dashboardJobDetailSchema, dashboardOrchToPlatformSchema, dashboardPayloadRequestSchema, dashboardPlatformToOrchSchema, dashboardRunDetailApiResponseSchema, dashboardRunDetailRequestSchema, dashboardRunDetailResponseSchema, dashboardRunSummarySchema, dashboardRunsFiltersRequestSchema, dashboardRunsFiltersResponseSchema, dashboardRunsListRequestSchema, dashboardRunsListResponseSchema, dashboardScalerAgentsRequestSchema, dashboardScalerAgentsResponseSchema, dashboardScalerCapacityRequestSchema, dashboardScalerCapacityResponseSchema, dashboardSourceSummarySchema, dashboardSourcesListRequestSchema, dashboardSourcesListResponseSchema, dashboardStepLogsApiResponseSchema, dashboardStepLogsRequestSchema, dashboardStepLogsResponseSchema, diagnosticsInfrastructureResponseSchema, diagnosticsSummaryResponseSchema, envBindingsListRequestSchema, envBindingsSetRequestSchema, envCreateRequestSchema, envDeleteRequestSchema, envGetRequestSchema, envHistoryRequestSchema, envListRequestSchema, envSecretDeleteRequestSchema, envSecretScopeCreateRequestSchema, envSecretScopeDeleteRequestSchema, envSecretScopeRenameRequestSchema, envSecretSetRequestSchema, envSecretsListRequestSchema, envSourceOverrideDeleteRequestSchema, envSourceOverrideSetRequestSchema, envSourceOverridesListRequestSchema, envTestAccessSetRequestSchema, envUpdateRequestSchema, envVarDeleteRequestSchema, envVarSetRequestSchema, envVarsListRequestSchema, eventLogListItemSchema, heldRunApproveRequestSchema, heldRunRejectRequestSchema, heldRunsListRequestSchema, identityLinkItemSchema, identityLinkListResponseSchema, manualScheduleRequestSchema, memberIdentityLinkSchema, memberListResponseSchema, memberRoleAssignmentSchema, orgMemberSchema, registrationDeleteRequestSchema, registrationDisableRequestSchema, registrationItemSchema, registrationsListRequestSchema, registrationsListResponseSchema, runCancelRequestSchema, runEventSchema, runLineageResponseSchema, runListItemSchema, runListResponseSchema, runRerunRequestSchema, testRelayCancelRequestSchema, testRelayCancelResponseSchema, testRelayRunLogsRequestSchema, testRelayRunLogsResponseSchema, testRelayRunStatusRequestSchema, testRelayRunStatusResponseSchema, testRelayTriggerRequestSchema, testRelayTriggerResponseSchema, testRelayUploadsInitRequestSchema, testRelayUploadsInitResponseSchema, trustPolicyResponseSchema };
1493
1863
 
1494
1864
  //# sourceMappingURL=dashboard.js.map
@@ -1,4 +1,4 @@
1
- import "../../chunk-gOLHoazu.js";
1
+ import "../../chunk-BTugEXQM.js";
2
2
  import { z } from "zod";
3
3
  //#region src/protocol/messages/event-log.ts
4
4
  /**
@@ -1,5 +1,14 @@
1
1
  import { z } from 'zod';
2
- /** Status values for execution runs (execution_runs table). */
2
+ /**
3
+ * Status values for execution runs (execution_runs table).
4
+ *
5
+ * `held` = the run is paused at the workflow install gate (a `registries:` /
6
+ * `installEnv:` protection rule returned hold/wait/queue). It is alive and
7
+ * resumable — NOT terminal — so it is deliberately absent from
8
+ * `TERMINAL_RUN_STATES`. On release (reviewer approve, wait-timer expiry,
9
+ * concurrency slot free) the run resumes into job dispatch; on reject it
10
+ * transitions to `cancelled`.
11
+ */
3
12
  export declare const ExecutionRunStatus: z.ZodEnum<{
4
13
  success: "success";
5
14
  pending: "pending";
@@ -7,6 +16,7 @@ export declare const ExecutionRunStatus: z.ZodEnum<{
7
16
  failed: "failed";
8
17
  cancelled: "cancelled";
9
18
  cancelling: "cancelling";
19
+ held: "held";
10
20
  }>;
11
21
  export type ExecutionRunStatus = z.infer<typeof ExecutionRunStatus>;
12
22
  /** Status values for execution jobs (execution_jobs table + job.status protocol messages). */
@@ -146,6 +156,7 @@ export declare const executionStatusSchema: z.ZodObject<{
146
156
  failed: "failed";
147
157
  cancelled: "cancelled";
148
158
  cancelling: "cancelling";
159
+ held: "held";
149
160
  }>;
150
161
  repoIdentifier: z.ZodOptional<z.ZodString>;
151
162
  sha: z.ZodOptional<z.ZodString>;
@@ -263,6 +274,7 @@ export declare const stateReplaySchema: z.ZodObject<{
263
274
  failed: "failed";
264
275
  cancelled: "cancelled";
265
276
  cancelling: "cancelling";
277
+ held: "held";
266
278
  }>;
267
279
  routingKey: z.ZodOptional<z.ZodString>;
268
280
  repoIdentifier: z.ZodOptional<z.ZodString>;
@@ -1,14 +1,24 @@
1
- import "../../chunk-gOLHoazu.js";
1
+ import "../../chunk-BTugEXQM.js";
2
2
  import { z } from "zod";
3
3
  //#region src/protocol/messages/execution-status.ts
4
- /** Status values for execution runs (execution_runs table). */
4
+ /**
5
+ * Status values for execution runs (execution_runs table).
6
+ *
7
+ * `held` = the run is paused at the workflow install gate (a `registries:` /
8
+ * `installEnv:` protection rule returned hold/wait/queue). It is alive and
9
+ * resumable — NOT terminal — so it is deliberately absent from
10
+ * `TERMINAL_RUN_STATES`. On release (reviewer approve, wait-timer expiry,
11
+ * concurrency slot free) the run resumes into job dispatch; on reject it
12
+ * transitions to `cancelled`.
13
+ */
5
14
  const ExecutionRunStatus = z.enum([
6
15
  "pending",
7
16
  "running",
8
17
  "success",
9
18
  "failed",
10
19
  "cancelled",
11
- "cancelling"
20
+ "cancelling",
21
+ "held"
12
22
  ]);
13
23
  /** Status values for execution jobs (execution_jobs table + job.status protocol messages). */
14
24
  const ExecutionJobStatus = z.enum([
@@ -1,4 +1,4 @@
1
- import "../../chunk-gOLHoazu.js";
1
+ import "../../chunk-BTugEXQM.js";
2
2
  import { z } from "zod";
3
3
  //#region src/protocol/messages/join.ts
4
4
  /** Join request sent by a new orchestrator (via Platform relay or direct peer). */
@@ -1,4 +1,4 @@
1
- import "../../chunk-gOLHoazu.js";
1
+ import "../../chunk-BTugEXQM.js";
2
2
  import { z } from "zod";
3
3
  //#region src/protocol/messages/log-pull.ts
4
4
  /** Request historical logs for a completed or running execution. */
@@ -17,6 +17,7 @@ export declare const observeStatusSchema: z.ZodObject<{
17
17
  failed: "failed";
18
18
  cancelled: "cancelled";
19
19
  cancelling: "cancelling";
20
+ held: "held";
20
21
  }>;
21
22
  jobName: z.ZodOptional<z.ZodString>;
22
23
  timestamp: z.ZodNumber;
@@ -0,0 +1,31 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * agent.api method name for the provenance ID-token relay.
4
+ *
5
+ * Single source of truth: both the orchestrator's relay-handler registration
6
+ * and the SDK `ctx.kici.oidc.token()` wrapper import this constant, so the
7
+ * wire method name lives in exactly one place.
8
+ */
9
+ export declare const OIDC_TOKEN_REQUEST_METHOD = "oidc.token.request";
10
+ /**
11
+ * Params an agent sends with an OIDC_TOKEN_REQUEST_METHOD call. The agent
12
+ * supplies only the job it is running plus the requested token audience; the
13
+ * orchestrator binds the mint to the job the agent actually owns and derives
14
+ * every identity claim server-side, so the agent never asserts a repo/ref.
15
+ */
16
+ export declare const oidcTokenRequestParamsSchema: z.ZodObject<{
17
+ jobId: z.ZodString;
18
+ audience: z.ZodString;
19
+ }, z.core.$strip>;
20
+ export type OidcTokenRequestParams = z.infer<typeof oidcTokenRequestParamsSchema>;
21
+ /**
22
+ * Result the orchestrator returns to the agent: the minted short-lived JWT
23
+ * plus its lifetime and identifier.
24
+ */
25
+ export declare const oidcTokenResultSchema: z.ZodObject<{
26
+ token: z.ZodString;
27
+ expiresIn: z.ZodNumber;
28
+ jti: z.ZodString;
29
+ }, z.core.$strip>;
30
+ export type OidcTokenResult = z.infer<typeof oidcTokenResultSchema>;
31
+ //# sourceMappingURL=oidc-token-relay.d.ts.map
@@ -0,0 +1,34 @@
1
+ import "../../chunk-BTugEXQM.js";
2
+ import { z } from "zod";
3
+ //#region src/protocol/messages/oidc-token-relay.ts
4
+ /**
5
+ * agent.api method name for the provenance ID-token relay.
6
+ *
7
+ * Single source of truth: both the orchestrator's relay-handler registration
8
+ * and the SDK `ctx.kici.oidc.token()` wrapper import this constant, so the
9
+ * wire method name lives in exactly one place.
10
+ */
11
+ const OIDC_TOKEN_REQUEST_METHOD = "oidc.token.request";
12
+ /**
13
+ * Params an agent sends with an OIDC_TOKEN_REQUEST_METHOD call. The agent
14
+ * supplies only the job it is running plus the requested token audience; the
15
+ * orchestrator binds the mint to the job the agent actually owns and derives
16
+ * every identity claim server-side, so the agent never asserts a repo/ref.
17
+ */
18
+ const oidcTokenRequestParamsSchema = z.object({
19
+ jobId: z.string().min(1),
20
+ audience: z.string().min(1).max(255)
21
+ });
22
+ /**
23
+ * Result the orchestrator returns to the agent: the minted short-lived JWT
24
+ * plus its lifetime and identifier.
25
+ */
26
+ const oidcTokenResultSchema = z.object({
27
+ token: z.string(),
28
+ expiresIn: z.number().int().positive(),
29
+ jti: z.string()
30
+ });
31
+ //#endregion
32
+ export { OIDC_TOKEN_REQUEST_METHOD, oidcTokenRequestParamsSchema, oidcTokenResultSchema };
33
+
34
+ //# sourceMappingURL=oidc-token-relay.js.map