@kici-dev/engine 0.1.16 → 0.1.18

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 (104) hide show
  1. package/dist/approval/types.js +1 -1
  2. package/dist/audit/access-log-policy.js +3 -1
  3. package/dist/audit/activity.js +1 -1
  4. package/dist/audit/retention-policy.js +5 -1
  5. package/dist/bundler/index.js +1 -1
  6. package/dist/bundler/rolldown-config.js +1 -1
  7. package/dist/env/environment-allowlist.d.ts +1 -1
  8. package/dist/env/environment-allowlist.js +13 -2
  9. package/dist/environment/index.js +1 -1
  10. package/dist/environment/scope-resolver.js +1 -1
  11. package/dist/environment/types.js +1 -1
  12. package/dist/fanout/materialize.d.ts +123 -0
  13. package/dist/fanout/materialize.js +176 -0
  14. package/dist/index.d.ts +4 -2
  15. package/dist/index.js +9 -7
  16. package/dist/labels/compile.d.ts +40 -0
  17. package/dist/labels/compile.js +91 -0
  18. package/dist/labels-match.d.ts +32 -0
  19. package/dist/labels-match.js +55 -0
  20. package/dist/labels.js +1 -1
  21. package/dist/matrix/expand.d.ts +48 -0
  22. package/dist/matrix/expand.js +72 -0
  23. package/dist/matrix/format.d.ts +10 -0
  24. package/dist/matrix/format.js +20 -0
  25. package/dist/metrics/catalog-policy.js +8 -3
  26. package/dist/metrics/metric-catalog.generated.d.ts +11 -1
  27. package/dist/metrics/metric-catalog.generated.js +14 -2
  28. package/dist/protocol/analytics-events.js +1 -1
  29. package/dist/protocol/cluster-name.js +1 -1
  30. package/dist/protocol/dashboard-global-workflows.js +1 -1
  31. package/dist/protocol/dashboard-write-operations.js +1 -1
  32. package/dist/protocol/event-log-payload.js +1 -1
  33. package/dist/protocol/messages/access-log.d.ts +15 -5
  34. package/dist/protocol/messages/access-log.js +3 -1
  35. package/dist/protocol/messages/actor.js +1 -1
  36. package/dist/protocol/messages/auth.d.ts +1 -0
  37. package/dist/protocol/messages/auth.js +11 -2
  38. package/dist/protocol/messages/browser.js +1 -1
  39. package/dist/protocol/messages/capabilities.js +1 -1
  40. package/dist/protocol/messages/common.js +1 -1
  41. package/dist/protocol/messages/dashboard-global-workflows.js +1 -1
  42. package/dist/protocol/messages/dashboard.d.ts +985 -57
  43. package/dist/protocol/messages/dashboard.js +368 -13
  44. package/dist/protocol/messages/event-log.js +1 -1
  45. package/dist/protocol/messages/execution-status.d.ts +13 -1
  46. package/dist/protocol/messages/execution-status.js +13 -3
  47. package/dist/protocol/messages/join.js +1 -1
  48. package/dist/protocol/messages/log-pull.js +1 -1
  49. package/dist/protocol/messages/observe.d.ts +1 -0
  50. package/dist/protocol/messages/oidc-token-relay.d.ts +31 -0
  51. package/dist/protocol/messages/oidc-token-relay.js +34 -0
  52. package/dist/protocol/messages/orchestrator-agent.d.ts +56 -0
  53. package/dist/protocol/messages/orchestrator-agent.js +47 -2
  54. package/dist/protocol/messages/peer.d.ts +48 -0
  55. package/dist/protocol/messages/peer.js +12 -1
  56. package/dist/protocol/messages/platform-orchestrator.d.ts +171 -4
  57. package/dist/protocol/messages/platform-orchestrator.js +1 -1
  58. package/dist/protocol/messages/run-events.js +1 -1
  59. package/dist/protocol/messages/scaler-event.js +1 -1
  60. package/dist/protocol/messages/source-registration.d.ts +7 -6
  61. package/dist/protocol/messages/source-registration.js +7 -6
  62. package/dist/protocol/version.js +1 -1
  63. package/dist/provenance/bundle.d.ts +54 -0
  64. package/dist/provenance/bundle.js +53 -0
  65. package/dist/provenance/dsse.d.ts +39 -0
  66. package/dist/provenance/dsse.js +53 -0
  67. package/dist/provenance/schema.js +1 -1
  68. package/dist/provenance/verify.d.ts +71 -0
  69. package/dist/provenance/verify.js +135 -0
  70. package/dist/provider/changed-files-fetcher.js +1 -1
  71. package/dist/provider/check-run-conclusion.js +1 -1
  72. package/dist/provider/check-status-poster.js +1 -1
  73. package/dist/provider/clone-token-provider.js +1 -1
  74. package/dist/provider/contributor-resolver.js +1 -1
  75. package/dist/provider/index.js +1 -1
  76. package/dist/provider/lock-file-fetcher.js +1 -1
  77. package/dist/provider/lock-file-parse-error.js +3 -1
  78. package/dist/provider/repo-url-builder.js +1 -1
  79. package/dist/provider/types.d.ts +2 -2
  80. package/dist/provider/types.js +1 -1
  81. package/dist/provider/webhook-normalizer.js +1 -1
  82. package/dist/registration/registerable-trigger-type.js +1 -1
  83. package/dist/scaler/resource-types.js +1 -1
  84. package/dist/scaler/scaler-backend-type.js +1 -1
  85. package/dist/secrets/index.js +1 -1
  86. package/dist/secrets/types.js +1 -1
  87. package/dist/state-machine/index.js +1 -1
  88. package/dist/state-machine/machine.js +1 -1
  89. package/dist/state-machine/types.js +1 -1
  90. package/dist/trigger/decision-trace.js +1 -1
  91. package/dist/trigger/jsonpath-matcher.js +1 -1
  92. package/dist/trigger/matcher.js +1 -1
  93. package/dist/trigger/trigger-event-type.js +1 -1
  94. package/dist/trigger/types.d.ts +76 -3
  95. package/dist/trigger/types.js +33 -5
  96. package/dist/webhook/signature.js +1 -1
  97. package/dist/ws/close-codes.js +1 -1
  98. package/dist/ws/rate-limiter.js +3 -1
  99. package/dist/ws/ws-like.js +1 -1
  100. package/package.json +26 -3
  101. package/sbom.spdx.json +85 -10
  102. package/dist/protocol/messages/observe.js +0 -70
  103. package/dist/protocol/messages/test-run.js +0 -52
  104. /package/dist/{chunk-gOLHoazu.js → chunk-BTugEXQM.js} +0 -0
@@ -1,12 +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";
9
10
  import { ApprovalDecision, HoldScope, approverClauseSchema } from "../../approval/types.js";
11
+ import { IfFailedPolicy } from "../../trigger/types.js";
10
12
  import { globalWorkflowsGetRequestSchema, globalWorkflowsGetResponseSchema, globalWorkflowsUpdateRequestSchema, globalWorkflowsUpdateResponseSchema } from "./dashboard-global-workflows.js";
11
13
  import { z } from "zod";
12
14
  //#region src/protocol/messages/dashboard.ts
@@ -47,6 +49,12 @@ const dashboardJobDetailSchema = z.object({
47
49
  jobName: z.string(),
48
50
  status: z.string(),
49
51
  matrixValues: z.record(z.string(), z.unknown()).nullable(),
52
+ /** Base (logical) job name for a fan-out child; null for non-fanned jobs. */
53
+ baseJobName: z.string().nullable().optional(),
54
+ /** Fan-out kind for a child: 'matrix' | 'host'; null for non-fanned jobs. */
55
+ variantKind: z.string().nullable().optional(),
56
+ /** Fan-out label for a child: matrix suffix or hostname; null for non-fanned jobs. */
57
+ variantLabel: z.string().nullable().optional(),
50
58
  startedAt: z.number().nullable(),
51
59
  completedAt: z.number().nullable(),
52
60
  durationMs: z.number().nullable(),
@@ -64,6 +72,16 @@ const dashboardJobDetailSchema = z.object({
64
72
  * the job is a synthetic `rejected-*` or `init-failed-*` row; status will be 'failed'.
65
73
  */
66
74
  initFailure: initFailureSchema.optional(),
75
+ /**
76
+ * Upstream dependency edges for this job (one entry per `needs` declaration),
77
+ * resolved by the orchestrator from execution_job_needs. `upstreamName` is the
78
+ * upstream job name; `ifFailed` is the per-edge failure policy. null/absent when
79
+ * the job has no upstreams.
80
+ */
81
+ needs: z.array(z.object({
82
+ upstreamName: z.string(),
83
+ ifFailed: IfFailedPolicy
84
+ })).nullable().optional(),
67
85
  steps: z.array(dashboardStepDetailSchema)
68
86
  });
69
87
  /** Trust context from orchestrator execution_runs (populated for PR-triggered runs). */
@@ -97,6 +115,36 @@ const dashboardStepLogsResponseSchema = z.object({
97
115
  totalLines: z.number(),
98
116
  error: z.string().optional()
99
117
  });
118
+ /** Request the build-provenance attestations for a run. */
119
+ const dashboardAttestationsListRequestSchema = z.object({
120
+ type: z.literal("dashboard.attestations.list"),
121
+ requestId: z.string(),
122
+ actor: actorPrincipalSchema,
123
+ runId: z.string()
124
+ });
125
+ /**
126
+ * Single attestation in the list response, with its bundle inlined from object
127
+ * storage so the dashboard verifies it without a second fetch. The bundle is a
128
+ * KiCI Mode-A bundle (`@kici-dev/engine/provenance/bundle`).
129
+ */
130
+ const attestationListItemSchema = z.object({
131
+ id: z.string(),
132
+ jobId: z.string(),
133
+ jobName: z.string().nullable(),
134
+ subjectName: z.string(),
135
+ subjectDigest: z.string(),
136
+ mode: z.string(),
137
+ mediaType: z.string(),
138
+ createdAt: z.string(),
139
+ bundle: kiciBundleSchema
140
+ });
141
+ /** Response with the run's attestations (correlates to dashboard.attestations.list). */
142
+ const dashboardAttestationsListResponseSchema = z.object({
143
+ type: z.literal("dashboard.attestations.list.response"),
144
+ requestId: z.string(),
145
+ attestations: z.array(attestationListItemSchema),
146
+ error: z.string().optional()
147
+ });
100
148
  /**
101
149
  * Run-summary projection from the orchestrator's execution_runs table.
102
150
  *
@@ -521,7 +569,23 @@ const concurrencyStrategySchema = z.enum(["queue", "cancel-pending"]);
521
569
  const envListRequestSchema = z.object({
522
570
  type: z.literal("dashboard.environments.list"),
523
571
  requestId: z.string(),
524
- actor: actorPrincipalSchema
572
+ actor: actorPrincipalSchema,
573
+ /**
574
+ * When true, each returned environment carries its reachable secret key
575
+ * names (never values) in `secretKeys`. Used by the developer CLI's
576
+ * `kici secrets list` / `kici types` commands.
577
+ */
578
+ includeSecrets: z.boolean().optional(),
579
+ /**
580
+ * Target org the read must be scoped to, carried per-request by the Platform
581
+ * (the validated `:orgId` path param). The orchestrator honors this over its
582
+ * static connection-level org so a Platform-first `kici run remote` org —
583
+ * anchored only by `remote_sources` — sees its own environments even when the
584
+ * orchestrator's connection also serves a webhook source for a different org.
585
+ * Absent on the legacy customer-dashboard path, where the connection org is
586
+ * already the request org.
587
+ */
588
+ orgId: z.string().optional()
525
589
  });
526
590
  const envListResponseSchema = z.object({
527
591
  type: z.literal("dashboard.environments.list.response"),
@@ -534,7 +598,13 @@ const envListResponseSchema = z.object({
534
598
  enabled: z.boolean(),
535
599
  allowLocalExecution: z.boolean(),
536
600
  createdAt: z.coerce.string(),
537
- updatedAt: z.coerce.string()
601
+ updatedAt: z.coerce.string(),
602
+ /**
603
+ * Distinct secret key names reachable from this environment's scope
604
+ * bindings (never values). Present only when the request set
605
+ * `includeSecrets: true`.
606
+ */
607
+ secretKeys: z.array(z.string()).optional()
538
608
  })).optional(),
539
609
  error: z.string().optional()
540
610
  });
@@ -1088,13 +1158,7 @@ const dashboardDiagnosticsResponseSchema = z.object({
1088
1158
  /** Total number of registered agents (always populated regardless of includeAgents). */
1089
1159
  agentCount: z.number().nullable().optional(),
1090
1160
  /** Number of agents not bound to any scaler. */
1091
- statefulAgentCount: z.number().nullable().optional(),
1092
- /**
1093
- * Distinct host names of stateful (unbound) agents, derived from their
1094
- * self-reported kici:host: labels. Lets the dashboard surface the hosts of
1095
- * long-lived standalone agents on the collapsed "Stateful agents" header.
1096
- */
1097
- statefulHosts: z.array(z.string()).optional()
1161
+ statefulAgentCount: z.number().nullable().optional()
1098
1162
  }),
1099
1163
  agents: z.array(diagnosticsAgentSchema),
1100
1164
  scalers: z.array(diagnosticsScalerSchema).optional(),
@@ -1312,10 +1376,128 @@ const backendTestResponseSchema = z.object({
1312
1376
  latencyMs: z.number().optional(),
1313
1377
  error: z.string().optional()
1314
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
+ });
1315
1496
  /** Dashboard messages flowing from Platform to Orchestrator. */
1316
1497
  const dashboardPlatformToOrchSchema = z.discriminatedUnion("type", [
1317
1498
  dashboardRunDetailRequestSchema,
1318
1499
  dashboardStepLogsRequestSchema,
1500
+ dashboardAttestationsListRequestSchema,
1319
1501
  dashboardRunsListRequestSchema,
1320
1502
  dashboardRunsFiltersRequestSchema,
1321
1503
  dashboardSourcesListRequestSchema,
@@ -1368,12 +1550,18 @@ const dashboardPlatformToOrchSchema = z.discriminatedUnion("type", [
1368
1550
  dashboardEventDlqDiscardRequestSchema,
1369
1551
  globalWorkflowsGetRequestSchema,
1370
1552
  globalWorkflowsUpdateRequestSchema,
1371
- dashboardAccessLogListRequestSchema
1553
+ dashboardAccessLogListRequestSchema,
1554
+ testRelayUploadsInitRequestSchema,
1555
+ testRelayTriggerRequestSchema,
1556
+ testRelayRunStatusRequestSchema,
1557
+ testRelayRunLogsRequestSchema,
1558
+ testRelayCancelRequestSchema
1372
1559
  ]);
1373
1560
  /** Dashboard messages flowing from Orchestrator to Platform. */
1374
1561
  const dashboardOrchToPlatformSchema = z.discriminatedUnion("type", [
1375
1562
  dashboardRunDetailResponseSchema,
1376
1563
  dashboardStepLogsResponseSchema,
1564
+ dashboardAttestationsListResponseSchema,
1377
1565
  dashboardRunsListResponseSchema,
1378
1566
  dashboardRunsFiltersResponseSchema,
1379
1567
  dashboardSourcesListResponseSchema,
@@ -1426,7 +1614,12 @@ const dashboardOrchToPlatformSchema = z.discriminatedUnion("type", [
1426
1614
  dashboardEventDlqDiscardResponseSchema,
1427
1615
  globalWorkflowsGetResponseSchema,
1428
1616
  globalWorkflowsUpdateResponseSchema,
1429
- dashboardAccessLogListResponseSchema
1617
+ dashboardAccessLogListResponseSchema,
1618
+ testRelayUploadsInitResponseSchema,
1619
+ testRelayTriggerResponseSchema,
1620
+ testRelayRunStatusResponseSchema,
1621
+ testRelayRunLogsResponseSchema,
1622
+ testRelayCancelResponseSchema
1430
1623
  ]);
1431
1624
  /** REST API response for run detail (jobs with nested steps). */
1432
1625
  const dashboardRunDetailApiResponseSchema = z.object({
@@ -1445,6 +1638,168 @@ const dashboardStepLogsApiResponseSchema = z.object({
1445
1638
  lines: z.array(z.string()),
1446
1639
  totalLines: z.number()
1447
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
+ scalers: z.array(diagnosticsInfraScalerSchema),
1768
+ dependencyHealth: z.array(z.object({
1769
+ name: z.string(),
1770
+ status: z.enum([
1771
+ "pass",
1772
+ "warn",
1773
+ "fail"
1774
+ ]),
1775
+ message: z.string().nullable(),
1776
+ details: z.record(z.string(), z.unknown()).optional(),
1777
+ durationMs: z.number().optional()
1778
+ })).optional(),
1779
+ error: z.string().optional()
1780
+ });
1781
+ const diagnosticsInfraAlertSchema = z.object({
1782
+ type: z.string(),
1783
+ message: z.string(),
1784
+ severity: z.string()
1785
+ });
1786
+ const diagnosticsInfrastructureResponseSchema = z.object({
1787
+ orchestrators: z.array(diagnosticsInfraOrchestratorSchema),
1788
+ alerts: z.array(diagnosticsInfraAlertSchema),
1789
+ latestVersion: z.string().nullable().optional()
1790
+ });
1791
+ const diagnosticsExecutionMetricsSchema = z.object({
1792
+ totalRuns: z.number(),
1793
+ successRate: z.number(),
1794
+ avgDurationSeconds: z.number(),
1795
+ queuedJobs: z.number(),
1796
+ runningJobs: z.number()
1797
+ });
1798
+ const diagnosticsSummaryResponseSchema = z.object({
1799
+ connections: z.array(z.unknown()),
1800
+ executionMetrics: diagnosticsExecutionMetricsSchema,
1801
+ orphanedConnections: z.number()
1802
+ });
1448
1803
  /** Single infrastructure event for a run (from run_events table). */
1449
1804
  const runEventSchema = z.object({
1450
1805
  id: z.string(),
@@ -1503,6 +1858,6 @@ const orgMemberSchema = z.object({
1503
1858
  /** Response for org members list endpoint. */
1504
1859
  const memberListResponseSchema = z.object({ members: z.array(orgMemberSchema) });
1505
1860
  //#endregion
1506
- 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 };
1861
+ 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 };
1507
1862
 
1508
1863
  //# 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