@fabricorg/experiments-api-protocol 0.1.4 → 0.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -299,12 +299,22 @@ var TestRunListInput = zod.z.object({
299
299
  status: TestRunStatus.optional(),
300
300
  source: CreateTestRunInput.shape.source.optional(),
301
301
  suite: zod.z.string().min(1).max(240).optional(),
302
+ targetPack: zod.z.string().min(1).max(120).regex(/^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/).optional(),
302
303
  limit: zod.z.coerce.number().int().min(1).max(200).optional(),
303
304
  offset: zod.z.coerce.number().int().min(0).max(1e5).optional()
304
305
  });
305
306
  var TestRunListResponse = zod.z.object({
306
307
  runs: zod.z.array(TestRun.omit({ cases: true }))
307
308
  });
309
+ var HarnessOperatorDefinition = zod.z.object({
310
+ name: zod.z.enum(["quality-status", "srm-watcher", "analyst"]),
311
+ kind: zod.z.literal("job"),
312
+ description: zod.z.string(),
313
+ mutates: zod.z.boolean()
314
+ });
315
+ var HarnessOperatorListResponse = zod.z.array(HarnessOperatorDefinition);
316
+ var HarnessJobInput = zod.z.record(zod.z.unknown()).default({});
317
+ var HarnessJobResponse = zod.z.record(zod.z.unknown());
308
318
  var endpoints = {
309
319
  "tenants.me": {
310
320
  method: "GET",
@@ -617,6 +627,22 @@ var endpoints = {
617
627
  response: TestRun,
618
628
  mutates: false,
619
629
  requiresRole: "viewer"
630
+ },
631
+ "harness.definitions": {
632
+ method: "GET",
633
+ path: "/v1/orgs/:orgId/harness/admin/agents",
634
+ params: Empty,
635
+ response: HarnessOperatorListResponse,
636
+ mutates: false,
637
+ requiresRole: "viewer"
638
+ },
639
+ "harness.invokeJob": {
640
+ method: "POST",
641
+ path: "/v1/orgs/:orgId/harness/jobs/:jobName",
642
+ params: HarnessJobInput,
643
+ response: HarnessJobResponse,
644
+ mutates: true,
645
+ requiresRole: "experimenter"
620
646
  }
621
647
  };
622
648
  function buildPath(template, pathParams) {
@@ -664,6 +690,10 @@ exports.FeatureListResponse = FeatureListResponse;
664
690
  exports.FeatureRuleListResponse = FeatureRuleListResponse;
665
691
  exports.GovernanceSettings = GovernanceSettings;
666
692
  exports.GovernanceStatusResponse = GovernanceStatusResponse;
693
+ exports.HarnessJobInput = HarnessJobInput;
694
+ exports.HarnessJobResponse = HarnessJobResponse;
695
+ exports.HarnessOperatorDefinition = HarnessOperatorDefinition;
696
+ exports.HarnessOperatorListResponse = HarnessOperatorListResponse;
667
697
  exports.InvokeActionInput = InvokeActionInput;
668
698
  exports.InvokeActionResponse = InvokeActionResponse;
669
699
  exports.ManifestKey = ManifestKey;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/endpoints.ts","../src/errors.ts"],"names":["z","Project","Property","Environment","Feature","FeatureRule","EnvironmentPublication","Experiment","ExperimentState","ExperimentSpecBase","ExperimentId","ActionId","CreateProjectInput","CreatePropertyInput","CreateEnvironmentInput","CreateFeatureInput","CreateFeatureRuleInput"],"mappings":"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","file":"index.cjs","sourcesContent":["import {\n ActionId,\n CreateEnvironmentInput,\n CreateFeatureInput,\n CreateFeatureRuleInput,\n CreateProjectInput,\n CreatePropertyInput,\n Environment,\n EnvironmentPublication,\n Experiment,\n ExperimentId,\n ExperimentSpec,\n ExperimentSpecBase,\n ExperimentState,\n Feature,\n FeatureRule,\n Project,\n Property,\n} from '@fabricorg/experiments-domain';\nimport { z } from 'zod';\n\n/**\n * Each endpoint declares method, path template, request schema, and response\n * schema. The server registers handlers against this table; the api-client\n * derives its method signatures from it. Drift between client and server is\n * impossible by construction.\n */\n\nexport interface EndpointDef<\n TParams extends z.ZodTypeAny = z.ZodTypeAny,\n TResponse extends z.ZodTypeAny = z.ZodTypeAny,\n> {\n method: 'GET' | 'POST' | 'DELETE';\n /** Path with `:param` placeholders, e.g. `/v1/orgs/:orgId/experiments`. */\n path: string;\n /** Request schema. For GET, used to validate query params; otherwise body. */\n params: TParams;\n response: TResponse;\n /** True if this endpoint mutates state — server applies idempotency cache. */\n mutates: boolean;\n /** Required role on the active org. `null` = any authenticated session. */\n requiresRole: 'owner' | 'admin' | 'experimenter' | 'viewer' | null;\n}\n\nconst Empty = z.object({});\n\n// ---- tenants ----------------------------------------------------------------\n\nexport const TenantSelf = z.object({\n organization: z.object({\n id: z.string(),\n name: z.string(),\n slug: z.string(),\n createdAt: z.string().datetime(),\n }),\n member: z.object({\n role: z.enum(['owner', 'admin', 'experimenter', 'viewer']),\n }),\n user: z.object({\n id: z.string(),\n email: z.string().email(),\n name: z.string().nullable(),\n }),\n});\nexport type TenantSelf = z.infer<typeof TenantSelf>;\n\n// ---- workspace hierarchy ---------------------------------------------------\n\nexport const ProjectListResponse = z.object({ projects: z.array(Project) });\nexport const PropertyListResponse = z.object({ properties: z.array(Property) });\nexport const EnvironmentListResponse = z.object({ environments: z.array(Environment) });\nexport const FeatureListResponse = z.object({ features: z.array(Feature) });\nexport const FeatureRuleListResponse = z.object({ rules: z.array(FeatureRule) });\nexport const PublicationListResponse = z.object({ publications: z.array(EnvironmentPublication) });\nexport const PromoteEnvironmentInput = z.object({ sourceEnvironmentId: z.string().uuid() });\nexport const PromoteEnvironmentResponse = z.object({\n sourceEnvironmentId: z.string().uuid(),\n sourceVersion: z.number().int().positive(),\n targetEnvironmentId: z.string().uuid(),\n promotedRuleCount: z.number().int().nonnegative(),\n});\n\n// ---- experiments ------------------------------------------------------------\n\nexport const ExperimentSummary = z.object({\n id: Experiment.shape.id,\n name: Experiment.shape.name,\n state: ExperimentState,\n updatedAt: z.string().datetime(),\n});\nexport type ExperimentSummary = z.infer<typeof ExperimentSummary>;\n\nexport const ExperimentListResponse = z.object({\n experiments: z.array(ExperimentSummary),\n});\nexport type ExperimentListResponse = z.infer<typeof ExperimentListResponse>;\n\nexport const CreateExperimentInput = ExperimentSpecBase;\nexport type CreateExperimentInput = z.infer<typeof CreateExperimentInput>;\n\nexport const CreateExperimentResponse = z.object({\n experimentId: ExperimentId,\n idempotent: z.boolean().optional(),\n});\nexport type CreateExperimentResponse = z.infer<typeof CreateExperimentResponse>;\n\n/**\n * Aggregate row per variant for a given metric over an optional time window.\n * Sourced from the warehouse adapter (Databricks in prod, Local in dev).\n */\nexport const AggregateRow = z.object({\n variantKey: z.string(),\n exposureCount: z.number().int().nonnegative(),\n conversionCount: z.number().int().nonnegative(),\n conversionSum: z.number(),\n failureCount: z.number().int().nonnegative().default(0),\n});\nexport type AggregateRow = z.infer<typeof AggregateRow>;\n\nexport const AggregateInput = z.object({\n metric: z.string().min(1).max(120),\n fromIso: z.string().datetime().optional(),\n untilIso: z.string().datetime().optional(),\n segmentKey: z\n .string()\n .min(1)\n .max(80)\n .regex(/^[A-Za-z0-9_.-]+$/)\n .optional(),\n prePeriodDays: z.coerce.number().int().min(1).max(365).optional(),\n});\nexport type AggregateInput = z.infer<typeof AggregateInput>;\n\nexport const AggregateResponse = z.object({\n experimentId: ExperimentId,\n metric: z.string(),\n rows: z.array(AggregateRow),\n /** ISO datetime — when this aggregate was computed. SDKs may cache by this. */\n computedAt: z.string().datetime(),\n analytics: z\n .object({\n variants: z.array(\n z.object({\n variantKey: z.string(),\n exposedSubjects: z.number().int().nonnegative(),\n convertedSubjects: z.number().int().nonnegative(),\n meanTimeToConvertMs: z.number().nonnegative().nullable(),\n medianTimeToConvertMs: z.number().nonnegative().nullable(),\n p90TimeToConvertMs: z.number().nonnegative().nullable(),\n meanConversionDepth: z.number().nonnegative(),\n conversionDepth: z.object({\n oneOrMore: z.number().int().nonnegative(),\n twoOrMore: z.number().int().nonnegative(),\n threeOrMore: z.number().int().nonnegative(),\n }),\n cupedAdjustedRate: z.number().nullable(),\n cupedLift: z.number().nullable(),\n }),\n ),\n segments: z.array(\n z.object({\n segmentValue: z.string(),\n variantKey: z.string(),\n exposureCount: z.number().int().nonnegative(),\n conversionCount: z.number().int().nonnegative(),\n conversionRate: z.number().min(0).max(1),\n }),\n ),\n segmentKey: z.string().optional(),\n cuped: z.object({\n available: z.boolean(),\n prePeriodDays: z.number().int().positive(),\n theta: z.number().nullable(),\n varianceReduction: z.number().nullable(),\n }),\n })\n .optional(),\n});\nexport type AggregateResponse = z.infer<typeof AggregateResponse>;\n\nexport const InvokeActionInput = z.object({\n actionId: ActionId,\n params: z.record(z.unknown()),\n /** Optional client-supplied idempotency key. */\n idempotencyKey: z.string().min(8).max(128).optional(),\n});\nexport type InvokeActionInput = z.infer<typeof InvokeActionInput>;\n\nexport const InvokeActionResponse = z.object({\n success: z.boolean(),\n data: z.record(z.unknown()).optional(),\n error: z.string().optional(),\n});\nexport type InvokeActionResponse = z.infer<typeof InvokeActionResponse>;\n\n// ---- manifests --------------------------------------------------------------\n\n/** Result of pushing the signed manifest to the Cloudflare manifest-worker. */\nexport const EdgePushResult = z.object({\n pushed: z.boolean(),\n reason: z.string().optional(),\n status: z.number().int().optional(),\n});\nexport type EdgePushResult = z.infer<typeof EdgePushResult>;\n\nexport const PublishManifestResponse = z.object({\n manifestVersion: z.number().int().nonnegative(),\n contentHash: z.string().regex(/^[0-9a-f]{64}$/),\n experimentCount: z.number().int().nonnegative(),\n /** Edge push status. `pushed: false` with `reason: 'unconfigured'` is normal in local dev. */\n edgePush: EdgePushResult,\n});\nexport type PublishManifestResponse = z.infer<typeof PublishManifestResponse>;\n\nexport const ManifestKey = z.object({\n keyId: z.string(),\n publicKeyHex: z.string().regex(/^[0-9a-f]+$/),\n status: z.enum(['active', 'retiring', 'retired']),\n createdAt: z.string().datetime(),\n retiredAt: z.string().datetime().nullable(),\n});\nexport type ManifestKey = z.infer<typeof ManifestKey>;\n\nexport const ManifestKeysResponse = z.object({ keys: z.array(ManifestKey) });\nexport type ManifestKeysResponse = z.infer<typeof ManifestKeysResponse>;\n\n// ---- preview tokens ---------------------------------------------------------\n\nexport const PreviewSignInput = z.object({\n experimentId: ExperimentId,\n variantKey: z.string().min(1).max(32),\n /** Token TTL in seconds. Clamped server-side to [60, 3600]; default 900. */\n ttlSeconds: z.number().int().min(60).max(3600).optional(),\n});\nexport type PreviewSignInput = z.infer<typeof PreviewSignInput>;\n\nexport const PreviewSignResponse = z.object({\n token: z.string(),\n /** ISO datetime when the token expires. */\n expiresAt: z.string().datetime(),\n /** ID of the public JWKS key used to sign — exposed for debugging only. */\n keyId: z.string(),\n /** Unique JWT id for audit/debugging and future replay controls. */\n jti: z.string(),\n});\nexport type PreviewSignResponse = z.infer<typeof PreviewSignResponse>;\n\n// ---- audit ------------------------------------------------------------------\n\nexport const AuditEvent = z.object({\n id: z.string(),\n type: z.string(),\n experimentId: z.string(),\n actorId: z.string(),\n at: z.string().datetime(),\n payload: z.record(z.unknown()),\n});\nexport type AuditEvent = z.infer<typeof AuditEvent>;\n\nexport const AuditListResponse = z.object({ events: z.array(AuditEvent) });\nexport type AuditListResponse = z.infer<typeof AuditListResponse>;\n\n// ---- enterprise governance -------------------------------------------------\n\nexport const GovernanceSettings = z.object({\n requireQualityForProduction: z.boolean(),\n requiredQualitySuites: z.array(z.string().min(1).max(240)).max(50),\n qualityMaxAgeHours: z.number().int().min(1).max(8760),\n retentionDays: z.number().int().min(30).max(3650),\n legalHold: z.boolean(),\n updatedBy: z.string().nullable(),\n updatedAt: z.string().datetime().nullable(),\n});\nexport type GovernanceSettings = z.infer<typeof GovernanceSettings>;\n\nexport const UpdateGovernanceSettingsInput = GovernanceSettings.pick({\n requireQualityForProduction: true,\n requiredQualitySuites: true,\n qualityMaxAgeHours: true,\n retentionDays: true,\n legalHold: true,\n});\nexport type UpdateGovernanceSettingsInput = z.infer<typeof UpdateGovernanceSettingsInput>;\n\nexport const QualityGateResult = z.object({\n enabled: z.boolean(),\n passed: z.boolean(),\n checks: z.array(\n z.object({\n suite: z.string(),\n passed: z.boolean(),\n reason: z.string(),\n runId: z.string().nullable(),\n finishedAt: z.string().datetime().nullable(),\n }),\n ),\n});\nexport type QualityGateResult = z.infer<typeof QualityGateResult>;\n\nexport const GovernanceStatusResponse = z.object({\n settings: GovernanceSettings,\n qualityGate: QualityGateResult,\n});\n\nexport const AuditExport = z.object({\n id: z.string(),\n destinationKind: z.enum(['s3', 'r2', 'splunk-hec']),\n status: z.enum(['active', 'paused', 'failed']),\n lastCursorAt: z.string().datetime().nullable(),\n});\nexport const AuditExportListResponse = z.object({ exports: z.array(AuditExport) });\n\nexport const CreateAuditExportInput = z.object({\n destinationKind: z.enum(['s3', 'r2', 'splunk-hec']),\n /** Free-form config; encrypted at rest. Schema enforced by destination kind. */\n config: z.record(z.unknown()),\n});\n\n// ---- api keys ---------------------------------------------------------------\n\nexport const ApiKeySummary = z.object({\n id: z.string(),\n name: z.string(),\n prefix: z.string(),\n role: z.enum(['owner', 'admin', 'experimenter', 'viewer']),\n scopes: z.array(z.enum(['read', 'write', 'admin'])),\n createdAt: z.string().datetime(),\n lastUsedAt: z.string().datetime().nullable(),\n expiresAt: z.string().datetime().nullable(),\n});\nexport const ApiKeyListResponse = z.object({ keys: z.array(ApiKeySummary) });\n\nexport const CreateApiKeyInput = z.object({\n name: z.string().min(1).max(120),\n /** ISO datetime of expiry; null for non-expiring (not recommended in prod). */\n expiresAt: z.string().datetime().nullable(),\n /** Role assigned to the key. Defaults to the creator's role. */\n role: z.enum(['owner', 'admin', 'experimenter', 'viewer']).optional(),\n /** Permission scopes assigned to the key. Defaults are derived from role. */\n scopes: z.array(z.enum(['read', 'write', 'admin'])).optional(),\n});\nexport type CreateApiKeyInput = z.infer<typeof CreateApiKeyInput>;\n\nexport const CreateApiKeyResponse = ApiKeySummary.extend({\n /** Plaintext key, returned exactly once at creation time. */\n key: z.string(),\n});\nexport type CreateApiKeyResponse = z.infer<typeof CreateApiKeyResponse>;\n\n// ---- SAML / SSO --------------------------------------------------------------\n\nexport const SamlConfig = z\n .object({\n enabled: z.boolean(),\n connectionId: z.string().min(1).max(200).nullable(),\n issuer: z.string().min(1).max(500).nullable(),\n ssoUrl: z.string().url().nullable(),\n certificate: z.string().min(1).max(10000).nullable(),\n })\n .refine(\n (value) =>\n !value.enabled ||\n Boolean(value.connectionId && value.issuer && value.ssoUrl && value.certificate),\n {\n message: 'connectionId, issuer, ssoUrl, certificate required when SAML is enabled',\n },\n );\nexport type SamlConfig = z.infer<typeof SamlConfig>;\n\n// ---- quality / test evidence ------------------------------------------------\n\nexport const TestRunStatus = z.enum(['running', 'passed', 'failed', 'skipped', 'canceled']);\nexport type TestRunStatus = z.infer<typeof TestRunStatus>;\n\nexport const TestCaseStatus = z.enum([\n 'passed',\n 'failed',\n 'skipped',\n 'pending',\n 'undefined',\n 'unknown',\n]);\n\nexport const TestCaseResult = z.object({\n id: z.string().max(240).optional(),\n name: z.string().min(1).max(500),\n uri: z.string().max(1000).optional(),\n status: TestCaseStatus,\n durationMs: z.number().int().nonnegative().max(86_400_000),\n tags: z.array(z.string().max(120)).max(100).default([]),\n error: z.string().max(65_536).optional(),\n statementId: z.string().max(240).optional(),\n resourceUrl: z.string().url().max(4000).optional(),\n details: z.record(z.unknown()).optional(),\n});\nexport type TestCaseResult = z.infer<typeof TestCaseResult>;\n\nexport const TestRunSummary = z.object({\n total: z.number().int().nonnegative(),\n passed: z.number().int().nonnegative(),\n failed: z.number().int().nonnegative(),\n skipped: z.number().int().nonnegative(),\n pending: z.number().int().nonnegative().default(0),\n});\n\nexport const TestRunArtifact = z.object({\n name: z.string().min(1).max(240),\n url: z.string().url().max(4000),\n mediaType: z.string().max(240).optional(),\n});\n\nexport const CreateTestRunInput = z.object({\n externalId: z.string().min(1).max(300).optional(),\n source: z.enum(['bdd', 'live-suite', 'junit', 'cli', 'other']),\n suite: z.string().min(1).max(240),\n status: TestRunStatus,\n startedAt: z.string().datetime().nullable().optional(),\n finishedAt: z.string().datetime().nullable().optional(),\n durationMs: z.number().int().nonnegative().max(604_800_000).default(0),\n summary: TestRunSummary,\n environment: z.record(z.unknown()).default({}),\n revision: z.record(z.unknown()).default({}),\n cases: z.array(TestCaseResult).max(2000).default([]),\n artifacts: z.array(TestRunArtifact).max(100).default([]),\n});\nexport type CreateTestRunInput = z.infer<typeof CreateTestRunInput>;\n\nexport const TestRun = CreateTestRunInput.extend({\n id: z.string().uuid(),\n orgId: z.string(),\n createdBy: z.string(),\n createdAt: z.string().datetime(),\n updatedAt: z.string().datetime(),\n});\nexport type TestRun = z.infer<typeof TestRun>;\n\nexport const TestRunListInput = z.object({\n status: TestRunStatus.optional(),\n source: CreateTestRunInput.shape.source.optional(),\n suite: z.string().min(1).max(240).optional(),\n limit: z.coerce.number().int().min(1).max(200).optional(),\n offset: z.coerce.number().int().min(0).max(100_000).optional(),\n});\nexport const TestRunListResponse = z.object({\n runs: z.array(TestRun.omit({ cases: true })),\n});\n\n// ---- the registry ----------------------------------------------------------\n\nexport const endpoints = {\n 'tenants.me': {\n method: 'GET',\n path: '/v1/tenants/me',\n params: Empty,\n response: TenantSelf,\n mutates: false,\n requiresRole: null,\n },\n\n 'experiments.list': {\n method: 'GET',\n path: '/v1/orgs/:orgId/experiments',\n params: Empty,\n response: ExperimentListResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'experiments.create': {\n method: 'POST',\n path: '/v1/orgs/:orgId/experiments',\n params: CreateExperimentInput,\n response: CreateExperimentResponse,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'experiments.get': {\n method: 'GET',\n path: '/v1/orgs/:orgId/experiments/:experimentId',\n params: Empty,\n response: Experiment,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'experiments.invokeAction': {\n method: 'POST',\n path: '/v1/orgs/:orgId/experiments/actions',\n params: InvokeActionInput,\n response: InvokeActionResponse,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'experiments.aggregate': {\n method: 'GET',\n path: '/v1/orgs/:orgId/experiments/:experimentId/aggregate',\n params: AggregateInput,\n response: AggregateResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n\n 'projects.list': {\n method: 'GET',\n path: '/v1/orgs/:orgId/projects',\n params: Empty,\n response: ProjectListResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'projects.create': {\n method: 'POST',\n path: '/v1/orgs/:orgId/projects',\n params: CreateProjectInput,\n response: Project,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'properties.list': {\n method: 'GET',\n path: '/v1/orgs/:orgId/projects/:projectId/properties',\n params: Empty,\n response: PropertyListResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'properties.create': {\n method: 'POST',\n path: '/v1/orgs/:orgId/projects/:projectId/properties',\n params: CreatePropertyInput,\n response: Property,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'environments.list': {\n method: 'GET',\n path: '/v1/orgs/:orgId/projects/:projectId/environments',\n params: Empty,\n response: EnvironmentListResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'environments.create': {\n method: 'POST',\n path: '/v1/orgs/:orgId/projects/:projectId/environments',\n params: CreateEnvironmentInput,\n response: Environment,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'features.list': {\n method: 'GET',\n path: '/v1/orgs/:orgId/projects/:projectId/features',\n params: Empty,\n response: FeatureListResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'features.create': {\n method: 'POST',\n path: '/v1/orgs/:orgId/projects/:projectId/features',\n params: CreateFeatureInput,\n response: Feature,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'rules.list': {\n method: 'GET',\n path: '/v1/orgs/:orgId/features/:featureId/rules',\n params: Empty,\n response: FeatureRuleListResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'rules.create': {\n method: 'POST',\n path: '/v1/orgs/:orgId/features/:featureId/rules',\n params: CreateFeatureRuleInput,\n response: FeatureRule,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'environments.publish': {\n method: 'POST',\n path: '/v1/orgs/:orgId/environments/:environmentId/publish',\n params: Empty,\n response: EnvironmentPublication,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'environments.publications': {\n method: 'GET',\n path: '/v1/orgs/:orgId/environments/:environmentId/publications',\n params: Empty,\n response: PublicationListResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'environments.promote': {\n method: 'POST',\n path: '/v1/orgs/:orgId/environments/:environmentId/promote',\n params: PromoteEnvironmentInput,\n response: PromoteEnvironmentResponse,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'configuration.getPublished': {\n method: 'GET',\n path: '/v1/orgs/:orgId/environments/:environmentId/configuration',\n params: Empty,\n response: EnvironmentPublication,\n mutates: false,\n requiresRole: 'viewer',\n },\n\n 'manifests.publish': {\n method: 'POST',\n path: '/v1/orgs/:orgId/manifests/publish',\n params: Empty,\n response: PublishManifestResponse,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'manifests.getKeys': {\n method: 'GET',\n path: '/v1/orgs/:orgId/manifests/keys',\n params: Empty,\n response: ManifestKeysResponse,\n mutates: false,\n requiresRole: 'admin',\n },\n 'manifests.rotateKey': {\n method: 'POST',\n path: '/v1/orgs/:orgId/manifests/keys/rotate',\n params: z.object({ keyId: z.string().min(1).max(128) }),\n response: ManifestKey,\n mutates: true,\n requiresRole: 'admin',\n },\n 'manifests.retireKey': {\n method: 'POST',\n path: '/v1/orgs/:orgId/manifests/keys/retire',\n params: z.object({ keyId: z.string() }),\n response: ManifestKey,\n mutates: true,\n requiresRole: 'admin',\n },\n\n 'preview.sign': {\n method: 'POST',\n path: '/v1/orgs/:orgId/preview/sign',\n params: PreviewSignInput,\n response: PreviewSignResponse,\n mutates: true,\n requiresRole: 'experimenter',\n },\n\n 'audit.list': {\n method: 'GET',\n path: '/v1/orgs/:orgId/audit',\n params: Empty,\n response: AuditListResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'governance.get': {\n method: 'GET',\n path: '/v1/orgs/:orgId/governance',\n params: Empty,\n response: GovernanceStatusResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'governance.update': {\n method: 'POST',\n path: '/v1/orgs/:orgId/governance',\n params: UpdateGovernanceSettingsInput,\n response: GovernanceStatusResponse,\n mutates: true,\n requiresRole: 'admin',\n },\n 'audit.exports.list': {\n method: 'GET',\n path: '/v1/orgs/:orgId/audit/exports',\n params: Empty,\n response: AuditExportListResponse,\n mutates: false,\n requiresRole: 'admin',\n },\n 'audit.exports.create': {\n method: 'POST',\n path: '/v1/orgs/:orgId/audit/exports',\n params: CreateAuditExportInput,\n response: AuditExport,\n mutates: true,\n requiresRole: 'admin',\n },\n 'audit.exports.delete': {\n method: 'DELETE',\n path: '/v1/orgs/:orgId/audit/exports/:exportId',\n params: Empty,\n response: z.object({ ok: z.literal(true) }),\n mutates: true,\n requiresRole: 'admin',\n },\n\n 'apiKeys.list': {\n method: 'GET',\n path: '/v1/orgs/:orgId/api-keys',\n params: Empty,\n response: ApiKeyListResponse,\n mutates: false,\n requiresRole: 'admin',\n },\n 'apiKeys.create': {\n method: 'POST',\n path: '/v1/orgs/:orgId/api-keys',\n params: CreateApiKeyInput,\n response: CreateApiKeyResponse,\n mutates: true,\n requiresRole: 'admin',\n },\n 'apiKeys.revoke': {\n method: 'DELETE',\n path: '/v1/orgs/:orgId/api-keys/:keyId',\n params: Empty,\n response: z.object({ ok: z.literal(true) }),\n mutates: true,\n requiresRole: 'admin',\n },\n\n 'saml.get': {\n method: 'GET',\n path: '/v1/orgs/:orgId/saml',\n params: Empty,\n response: SamlConfig,\n mutates: false,\n requiresRole: 'owner',\n },\n 'saml.update': {\n method: 'POST',\n path: '/v1/orgs/:orgId/saml',\n params: SamlConfig,\n response: SamlConfig,\n mutates: true,\n requiresRole: 'owner',\n },\n\n 'testRuns.list': {\n method: 'GET',\n path: '/v1/orgs/:orgId/test-runs',\n params: TestRunListInput,\n response: TestRunListResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'testRuns.create': {\n method: 'POST',\n path: '/v1/orgs/:orgId/test-runs',\n params: CreateTestRunInput,\n response: TestRun,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'testRuns.get': {\n method: 'GET',\n path: '/v1/orgs/:orgId/test-runs/:runId',\n params: Empty,\n response: TestRun,\n mutates: false,\n requiresRole: 'viewer',\n },\n} satisfies Record<string, EndpointDef>;\n\nexport type EndpointName = keyof typeof endpoints;\nexport type EndpointParams<E extends EndpointName> = z.infer<(typeof endpoints)[E]['params']>;\nexport type EndpointResponse<E extends EndpointName> = z.infer<(typeof endpoints)[E]['response']>;\n\n/** Substitute path parameters in a path template. */\nexport function buildPath(template: string, pathParams: Record<string, string>): string {\n return template.replace(/:([a-zA-Z][a-zA-Z0-9_]*)/g, (_, name) => {\n const v = pathParams[name];\n if (v == null) throw new Error(`Missing path parameter: ${name}`);\n return encodeURIComponent(v);\n });\n}\n","import { z } from 'zod';\n\nexport const ApiError = z.object({\n code: z.enum([\n 'UNAUTHENTICATED',\n 'FORBIDDEN',\n 'NOT_FOUND',\n 'VALIDATION_FAILED',\n 'CONFLICT',\n 'RATE_LIMITED',\n 'INTERNAL',\n ]),\n message: z.string(),\n details: z.record(z.unknown()).optional(),\n});\nexport type ApiError = z.infer<typeof ApiError>;\n"]}
1
+ {"version":3,"sources":["../src/endpoints.ts","../src/errors.ts"],"names":["z","Project","Property","Environment","Feature","FeatureRule","EnvironmentPublication","Experiment","ExperimentState","ExperimentSpecBase","ExperimentId","ActionId","CreateProjectInput","CreatePropertyInput","CreateEnvironmentInput","CreateFeatureInput","CreateFeatureRuleInput"],"mappings":"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","file":"index.cjs","sourcesContent":["import {\n ActionId,\n CreateEnvironmentInput,\n CreateFeatureInput,\n CreateFeatureRuleInput,\n CreateProjectInput,\n CreatePropertyInput,\n Environment,\n EnvironmentPublication,\n Experiment,\n ExperimentId,\n ExperimentSpec,\n ExperimentSpecBase,\n ExperimentState,\n Feature,\n FeatureRule,\n Project,\n Property,\n} from '@fabricorg/experiments-domain';\nimport { z } from 'zod';\n\n/**\n * Each endpoint declares method, path template, request schema, and response\n * schema. The server registers handlers against this table; the api-client\n * derives its method signatures from it. Drift between client and server is\n * impossible by construction.\n */\n\nexport interface EndpointDef<\n TParams extends z.ZodTypeAny = z.ZodTypeAny,\n TResponse extends z.ZodTypeAny = z.ZodTypeAny,\n> {\n method: 'GET' | 'POST' | 'DELETE';\n /** Path with `:param` placeholders, e.g. `/v1/orgs/:orgId/experiments`. */\n path: string;\n /** Request schema. For GET, used to validate query params; otherwise body. */\n params: TParams;\n response: TResponse;\n /** True if this endpoint mutates state — server applies idempotency cache. */\n mutates: boolean;\n /** Required role on the active org. `null` = any authenticated session. */\n requiresRole: 'owner' | 'admin' | 'experimenter' | 'viewer' | null;\n}\n\nconst Empty = z.object({});\n\n// ---- tenants ----------------------------------------------------------------\n\nexport const TenantSelf = z.object({\n organization: z.object({\n id: z.string(),\n name: z.string(),\n slug: z.string(),\n createdAt: z.string().datetime(),\n }),\n member: z.object({\n role: z.enum(['owner', 'admin', 'experimenter', 'viewer']),\n }),\n user: z.object({\n id: z.string(),\n email: z.string().email(),\n name: z.string().nullable(),\n }),\n});\nexport type TenantSelf = z.infer<typeof TenantSelf>;\n\n// ---- workspace hierarchy ---------------------------------------------------\n\nexport const ProjectListResponse = z.object({ projects: z.array(Project) });\nexport const PropertyListResponse = z.object({ properties: z.array(Property) });\nexport const EnvironmentListResponse = z.object({ environments: z.array(Environment) });\nexport const FeatureListResponse = z.object({ features: z.array(Feature) });\nexport const FeatureRuleListResponse = z.object({ rules: z.array(FeatureRule) });\nexport const PublicationListResponse = z.object({ publications: z.array(EnvironmentPublication) });\nexport const PromoteEnvironmentInput = z.object({ sourceEnvironmentId: z.string().uuid() });\nexport const PromoteEnvironmentResponse = z.object({\n sourceEnvironmentId: z.string().uuid(),\n sourceVersion: z.number().int().positive(),\n targetEnvironmentId: z.string().uuid(),\n promotedRuleCount: z.number().int().nonnegative(),\n});\n\n// ---- experiments ------------------------------------------------------------\n\nexport const ExperimentSummary = z.object({\n id: Experiment.shape.id,\n name: Experiment.shape.name,\n state: ExperimentState,\n updatedAt: z.string().datetime(),\n});\nexport type ExperimentSummary = z.infer<typeof ExperimentSummary>;\n\nexport const ExperimentListResponse = z.object({\n experiments: z.array(ExperimentSummary),\n});\nexport type ExperimentListResponse = z.infer<typeof ExperimentListResponse>;\n\nexport const CreateExperimentInput = ExperimentSpecBase;\nexport type CreateExperimentInput = z.infer<typeof CreateExperimentInput>;\n\nexport const CreateExperimentResponse = z.object({\n experimentId: ExperimentId,\n idempotent: z.boolean().optional(),\n});\nexport type CreateExperimentResponse = z.infer<typeof CreateExperimentResponse>;\n\n/**\n * Aggregate row per variant for a given metric over an optional time window.\n * Sourced from the warehouse adapter (Databricks in prod, Local in dev).\n */\nexport const AggregateRow = z.object({\n variantKey: z.string(),\n exposureCount: z.number().int().nonnegative(),\n conversionCount: z.number().int().nonnegative(),\n conversionSum: z.number(),\n failureCount: z.number().int().nonnegative().default(0),\n});\nexport type AggregateRow = z.infer<typeof AggregateRow>;\n\nexport const AggregateInput = z.object({\n metric: z.string().min(1).max(120),\n fromIso: z.string().datetime().optional(),\n untilIso: z.string().datetime().optional(),\n segmentKey: z\n .string()\n .min(1)\n .max(80)\n .regex(/^[A-Za-z0-9_.-]+$/)\n .optional(),\n prePeriodDays: z.coerce.number().int().min(1).max(365).optional(),\n});\nexport type AggregateInput = z.infer<typeof AggregateInput>;\n\nexport const AggregateResponse = z.object({\n experimentId: ExperimentId,\n metric: z.string(),\n rows: z.array(AggregateRow),\n /** ISO datetime — when this aggregate was computed. SDKs may cache by this. */\n computedAt: z.string().datetime(),\n analytics: z\n .object({\n variants: z.array(\n z.object({\n variantKey: z.string(),\n exposedSubjects: z.number().int().nonnegative(),\n convertedSubjects: z.number().int().nonnegative(),\n meanTimeToConvertMs: z.number().nonnegative().nullable(),\n medianTimeToConvertMs: z.number().nonnegative().nullable(),\n p90TimeToConvertMs: z.number().nonnegative().nullable(),\n meanConversionDepth: z.number().nonnegative(),\n conversionDepth: z.object({\n oneOrMore: z.number().int().nonnegative(),\n twoOrMore: z.number().int().nonnegative(),\n threeOrMore: z.number().int().nonnegative(),\n }),\n cupedAdjustedRate: z.number().nullable(),\n cupedLift: z.number().nullable(),\n }),\n ),\n segments: z.array(\n z.object({\n segmentValue: z.string(),\n variantKey: z.string(),\n exposureCount: z.number().int().nonnegative(),\n conversionCount: z.number().int().nonnegative(),\n conversionRate: z.number().min(0).max(1),\n }),\n ),\n segmentKey: z.string().optional(),\n cuped: z.object({\n available: z.boolean(),\n prePeriodDays: z.number().int().positive(),\n theta: z.number().nullable(),\n varianceReduction: z.number().nullable(),\n }),\n })\n .optional(),\n});\nexport type AggregateResponse = z.infer<typeof AggregateResponse>;\n\nexport const InvokeActionInput = z.object({\n actionId: ActionId,\n params: z.record(z.unknown()),\n /** Optional client-supplied idempotency key. */\n idempotencyKey: z.string().min(8).max(128).optional(),\n});\nexport type InvokeActionInput = z.infer<typeof InvokeActionInput>;\n\nexport const InvokeActionResponse = z.object({\n success: z.boolean(),\n data: z.record(z.unknown()).optional(),\n error: z.string().optional(),\n});\nexport type InvokeActionResponse = z.infer<typeof InvokeActionResponse>;\n\n// ---- manifests --------------------------------------------------------------\n\n/** Result of pushing the signed manifest to the Cloudflare manifest-worker. */\nexport const EdgePushResult = z.object({\n pushed: z.boolean(),\n reason: z.string().optional(),\n status: z.number().int().optional(),\n});\nexport type EdgePushResult = z.infer<typeof EdgePushResult>;\n\nexport const PublishManifestResponse = z.object({\n manifestVersion: z.number().int().nonnegative(),\n contentHash: z.string().regex(/^[0-9a-f]{64}$/),\n experimentCount: z.number().int().nonnegative(),\n /** Edge push status. `pushed: false` with `reason: 'unconfigured'` is normal in local dev. */\n edgePush: EdgePushResult,\n});\nexport type PublishManifestResponse = z.infer<typeof PublishManifestResponse>;\n\nexport const ManifestKey = z.object({\n keyId: z.string(),\n publicKeyHex: z.string().regex(/^[0-9a-f]+$/),\n status: z.enum(['active', 'retiring', 'retired']),\n createdAt: z.string().datetime(),\n retiredAt: z.string().datetime().nullable(),\n});\nexport type ManifestKey = z.infer<typeof ManifestKey>;\n\nexport const ManifestKeysResponse = z.object({ keys: z.array(ManifestKey) });\nexport type ManifestKeysResponse = z.infer<typeof ManifestKeysResponse>;\n\n// ---- preview tokens ---------------------------------------------------------\n\nexport const PreviewSignInput = z.object({\n experimentId: ExperimentId,\n variantKey: z.string().min(1).max(32),\n /** Token TTL in seconds. Clamped server-side to [60, 3600]; default 900. */\n ttlSeconds: z.number().int().min(60).max(3600).optional(),\n});\nexport type PreviewSignInput = z.infer<typeof PreviewSignInput>;\n\nexport const PreviewSignResponse = z.object({\n token: z.string(),\n /** ISO datetime when the token expires. */\n expiresAt: z.string().datetime(),\n /** ID of the public JWKS key used to sign — exposed for debugging only. */\n keyId: z.string(),\n /** Unique JWT id for audit/debugging and future replay controls. */\n jti: z.string(),\n});\nexport type PreviewSignResponse = z.infer<typeof PreviewSignResponse>;\n\n// ---- audit ------------------------------------------------------------------\n\nexport const AuditEvent = z.object({\n id: z.string(),\n type: z.string(),\n experimentId: z.string(),\n actorId: z.string(),\n at: z.string().datetime(),\n payload: z.record(z.unknown()),\n});\nexport type AuditEvent = z.infer<typeof AuditEvent>;\n\nexport const AuditListResponse = z.object({ events: z.array(AuditEvent) });\nexport type AuditListResponse = z.infer<typeof AuditListResponse>;\n\n// ---- enterprise governance -------------------------------------------------\n\nexport const GovernanceSettings = z.object({\n requireQualityForProduction: z.boolean(),\n requiredQualitySuites: z.array(z.string().min(1).max(240)).max(50),\n qualityMaxAgeHours: z.number().int().min(1).max(8760),\n retentionDays: z.number().int().min(30).max(3650),\n legalHold: z.boolean(),\n updatedBy: z.string().nullable(),\n updatedAt: z.string().datetime().nullable(),\n});\nexport type GovernanceSettings = z.infer<typeof GovernanceSettings>;\n\nexport const UpdateGovernanceSettingsInput = GovernanceSettings.pick({\n requireQualityForProduction: true,\n requiredQualitySuites: true,\n qualityMaxAgeHours: true,\n retentionDays: true,\n legalHold: true,\n});\nexport type UpdateGovernanceSettingsInput = z.infer<typeof UpdateGovernanceSettingsInput>;\n\nexport const QualityGateResult = z.object({\n enabled: z.boolean(),\n passed: z.boolean(),\n checks: z.array(\n z.object({\n suite: z.string(),\n passed: z.boolean(),\n reason: z.string(),\n runId: z.string().nullable(),\n finishedAt: z.string().datetime().nullable(),\n }),\n ),\n});\nexport type QualityGateResult = z.infer<typeof QualityGateResult>;\n\nexport const GovernanceStatusResponse = z.object({\n settings: GovernanceSettings,\n qualityGate: QualityGateResult,\n});\n\nexport const AuditExport = z.object({\n id: z.string(),\n destinationKind: z.enum(['s3', 'r2', 'splunk-hec']),\n status: z.enum(['active', 'paused', 'failed']),\n lastCursorAt: z.string().datetime().nullable(),\n});\nexport const AuditExportListResponse = z.object({ exports: z.array(AuditExport) });\n\nexport const CreateAuditExportInput = z.object({\n destinationKind: z.enum(['s3', 'r2', 'splunk-hec']),\n /** Free-form config; encrypted at rest. Schema enforced by destination kind. */\n config: z.record(z.unknown()),\n});\n\n// ---- api keys ---------------------------------------------------------------\n\nexport const ApiKeySummary = z.object({\n id: z.string(),\n name: z.string(),\n prefix: z.string(),\n role: z.enum(['owner', 'admin', 'experimenter', 'viewer']),\n scopes: z.array(z.enum(['read', 'write', 'admin'])),\n createdAt: z.string().datetime(),\n lastUsedAt: z.string().datetime().nullable(),\n expiresAt: z.string().datetime().nullable(),\n});\nexport const ApiKeyListResponse = z.object({ keys: z.array(ApiKeySummary) });\n\nexport const CreateApiKeyInput = z.object({\n name: z.string().min(1).max(120),\n /** ISO datetime of expiry; null for non-expiring (not recommended in prod). */\n expiresAt: z.string().datetime().nullable(),\n /** Role assigned to the key. Defaults to the creator's role. */\n role: z.enum(['owner', 'admin', 'experimenter', 'viewer']).optional(),\n /** Permission scopes assigned to the key. Defaults are derived from role. */\n scopes: z.array(z.enum(['read', 'write', 'admin'])).optional(),\n});\nexport type CreateApiKeyInput = z.infer<typeof CreateApiKeyInput>;\n\nexport const CreateApiKeyResponse = ApiKeySummary.extend({\n /** Plaintext key, returned exactly once at creation time. */\n key: z.string(),\n});\nexport type CreateApiKeyResponse = z.infer<typeof CreateApiKeyResponse>;\n\n// ---- SAML / SSO --------------------------------------------------------------\n\nexport const SamlConfig = z\n .object({\n enabled: z.boolean(),\n connectionId: z.string().min(1).max(200).nullable(),\n issuer: z.string().min(1).max(500).nullable(),\n ssoUrl: z.string().url().nullable(),\n certificate: z.string().min(1).max(10000).nullable(),\n })\n .refine(\n (value) =>\n !value.enabled ||\n Boolean(value.connectionId && value.issuer && value.ssoUrl && value.certificate),\n {\n message: 'connectionId, issuer, ssoUrl, certificate required when SAML is enabled',\n },\n );\nexport type SamlConfig = z.infer<typeof SamlConfig>;\n\n// ---- quality / test evidence ------------------------------------------------\n\nexport const TestRunStatus = z.enum(['running', 'passed', 'failed', 'skipped', 'canceled']);\nexport type TestRunStatus = z.infer<typeof TestRunStatus>;\n\nexport const TestCaseStatus = z.enum([\n 'passed',\n 'failed',\n 'skipped',\n 'pending',\n 'undefined',\n 'unknown',\n]);\n\nexport const TestCaseResult = z.object({\n id: z.string().max(240).optional(),\n name: z.string().min(1).max(500),\n uri: z.string().max(1000).optional(),\n status: TestCaseStatus,\n durationMs: z.number().int().nonnegative().max(86_400_000),\n tags: z.array(z.string().max(120)).max(100).default([]),\n error: z.string().max(65_536).optional(),\n statementId: z.string().max(240).optional(),\n resourceUrl: z.string().url().max(4000).optional(),\n details: z.record(z.unknown()).optional(),\n});\nexport type TestCaseResult = z.infer<typeof TestCaseResult>;\n\nexport const TestRunSummary = z.object({\n total: z.number().int().nonnegative(),\n passed: z.number().int().nonnegative(),\n failed: z.number().int().nonnegative(),\n skipped: z.number().int().nonnegative(),\n pending: z.number().int().nonnegative().default(0),\n});\n\nexport const TestRunArtifact = z.object({\n name: z.string().min(1).max(240),\n url: z.string().url().max(4000),\n mediaType: z.string().max(240).optional(),\n});\n\nexport const CreateTestRunInput = z.object({\n externalId: z.string().min(1).max(300).optional(),\n source: z.enum(['bdd', 'live-suite', 'junit', 'cli', 'other']),\n suite: z.string().min(1).max(240),\n status: TestRunStatus,\n startedAt: z.string().datetime().nullable().optional(),\n finishedAt: z.string().datetime().nullable().optional(),\n durationMs: z.number().int().nonnegative().max(604_800_000).default(0),\n summary: TestRunSummary,\n environment: z.record(z.unknown()).default({}),\n revision: z.record(z.unknown()).default({}),\n cases: z.array(TestCaseResult).max(2000).default([]),\n artifacts: z.array(TestRunArtifact).max(100).default([]),\n});\nexport type CreateTestRunInput = z.infer<typeof CreateTestRunInput>;\n\nexport const TestRun = CreateTestRunInput.extend({\n id: z.string().uuid(),\n orgId: z.string(),\n createdBy: z.string(),\n createdAt: z.string().datetime(),\n updatedAt: z.string().datetime(),\n});\nexport type TestRun = z.infer<typeof TestRun>;\n\nexport const TestRunListInput = z.object({\n status: TestRunStatus.optional(),\n source: CreateTestRunInput.shape.source.optional(),\n suite: z.string().min(1).max(240).optional(),\n targetPack: z\n .string()\n .min(1)\n .max(120)\n .regex(/^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/)\n .optional(),\n limit: z.coerce.number().int().min(1).max(200).optional(),\n offset: z.coerce.number().int().min(0).max(100_000).optional(),\n});\nexport const TestRunListResponse = z.object({\n runs: z.array(TestRun.omit({ cases: true })),\n});\n\n// ---- Harness operator surface ---------------------------------------------\n\nexport const HarnessOperatorDefinition = z.object({\n name: z.enum(['quality-status', 'srm-watcher', 'analyst']),\n kind: z.literal('job'),\n description: z.string(),\n mutates: z.boolean(),\n});\nexport type HarnessOperatorDefinition = z.infer<typeof HarnessOperatorDefinition>;\n\nexport const HarnessOperatorListResponse = z.array(HarnessOperatorDefinition);\nexport const HarnessJobInput = z.record(z.unknown()).default({});\nexport const HarnessJobResponse = z.record(z.unknown());\n\n// ---- the registry ----------------------------------------------------------\n\nexport const endpoints = {\n 'tenants.me': {\n method: 'GET',\n path: '/v1/tenants/me',\n params: Empty,\n response: TenantSelf,\n mutates: false,\n requiresRole: null,\n },\n\n 'experiments.list': {\n method: 'GET',\n path: '/v1/orgs/:orgId/experiments',\n params: Empty,\n response: ExperimentListResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'experiments.create': {\n method: 'POST',\n path: '/v1/orgs/:orgId/experiments',\n params: CreateExperimentInput,\n response: CreateExperimentResponse,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'experiments.get': {\n method: 'GET',\n path: '/v1/orgs/:orgId/experiments/:experimentId',\n params: Empty,\n response: Experiment,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'experiments.invokeAction': {\n method: 'POST',\n path: '/v1/orgs/:orgId/experiments/actions',\n params: InvokeActionInput,\n response: InvokeActionResponse,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'experiments.aggregate': {\n method: 'GET',\n path: '/v1/orgs/:orgId/experiments/:experimentId/aggregate',\n params: AggregateInput,\n response: AggregateResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n\n 'projects.list': {\n method: 'GET',\n path: '/v1/orgs/:orgId/projects',\n params: Empty,\n response: ProjectListResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'projects.create': {\n method: 'POST',\n path: '/v1/orgs/:orgId/projects',\n params: CreateProjectInput,\n response: Project,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'properties.list': {\n method: 'GET',\n path: '/v1/orgs/:orgId/projects/:projectId/properties',\n params: Empty,\n response: PropertyListResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'properties.create': {\n method: 'POST',\n path: '/v1/orgs/:orgId/projects/:projectId/properties',\n params: CreatePropertyInput,\n response: Property,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'environments.list': {\n method: 'GET',\n path: '/v1/orgs/:orgId/projects/:projectId/environments',\n params: Empty,\n response: EnvironmentListResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'environments.create': {\n method: 'POST',\n path: '/v1/orgs/:orgId/projects/:projectId/environments',\n params: CreateEnvironmentInput,\n response: Environment,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'features.list': {\n method: 'GET',\n path: '/v1/orgs/:orgId/projects/:projectId/features',\n params: Empty,\n response: FeatureListResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'features.create': {\n method: 'POST',\n path: '/v1/orgs/:orgId/projects/:projectId/features',\n params: CreateFeatureInput,\n response: Feature,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'rules.list': {\n method: 'GET',\n path: '/v1/orgs/:orgId/features/:featureId/rules',\n params: Empty,\n response: FeatureRuleListResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'rules.create': {\n method: 'POST',\n path: '/v1/orgs/:orgId/features/:featureId/rules',\n params: CreateFeatureRuleInput,\n response: FeatureRule,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'environments.publish': {\n method: 'POST',\n path: '/v1/orgs/:orgId/environments/:environmentId/publish',\n params: Empty,\n response: EnvironmentPublication,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'environments.publications': {\n method: 'GET',\n path: '/v1/orgs/:orgId/environments/:environmentId/publications',\n params: Empty,\n response: PublicationListResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'environments.promote': {\n method: 'POST',\n path: '/v1/orgs/:orgId/environments/:environmentId/promote',\n params: PromoteEnvironmentInput,\n response: PromoteEnvironmentResponse,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'configuration.getPublished': {\n method: 'GET',\n path: '/v1/orgs/:orgId/environments/:environmentId/configuration',\n params: Empty,\n response: EnvironmentPublication,\n mutates: false,\n requiresRole: 'viewer',\n },\n\n 'manifests.publish': {\n method: 'POST',\n path: '/v1/orgs/:orgId/manifests/publish',\n params: Empty,\n response: PublishManifestResponse,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'manifests.getKeys': {\n method: 'GET',\n path: '/v1/orgs/:orgId/manifests/keys',\n params: Empty,\n response: ManifestKeysResponse,\n mutates: false,\n requiresRole: 'admin',\n },\n 'manifests.rotateKey': {\n method: 'POST',\n path: '/v1/orgs/:orgId/manifests/keys/rotate',\n params: z.object({ keyId: z.string().min(1).max(128) }),\n response: ManifestKey,\n mutates: true,\n requiresRole: 'admin',\n },\n 'manifests.retireKey': {\n method: 'POST',\n path: '/v1/orgs/:orgId/manifests/keys/retire',\n params: z.object({ keyId: z.string() }),\n response: ManifestKey,\n mutates: true,\n requiresRole: 'admin',\n },\n\n 'preview.sign': {\n method: 'POST',\n path: '/v1/orgs/:orgId/preview/sign',\n params: PreviewSignInput,\n response: PreviewSignResponse,\n mutates: true,\n requiresRole: 'experimenter',\n },\n\n 'audit.list': {\n method: 'GET',\n path: '/v1/orgs/:orgId/audit',\n params: Empty,\n response: AuditListResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'governance.get': {\n method: 'GET',\n path: '/v1/orgs/:orgId/governance',\n params: Empty,\n response: GovernanceStatusResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'governance.update': {\n method: 'POST',\n path: '/v1/orgs/:orgId/governance',\n params: UpdateGovernanceSettingsInput,\n response: GovernanceStatusResponse,\n mutates: true,\n requiresRole: 'admin',\n },\n 'audit.exports.list': {\n method: 'GET',\n path: '/v1/orgs/:orgId/audit/exports',\n params: Empty,\n response: AuditExportListResponse,\n mutates: false,\n requiresRole: 'admin',\n },\n 'audit.exports.create': {\n method: 'POST',\n path: '/v1/orgs/:orgId/audit/exports',\n params: CreateAuditExportInput,\n response: AuditExport,\n mutates: true,\n requiresRole: 'admin',\n },\n 'audit.exports.delete': {\n method: 'DELETE',\n path: '/v1/orgs/:orgId/audit/exports/:exportId',\n params: Empty,\n response: z.object({ ok: z.literal(true) }),\n mutates: true,\n requiresRole: 'admin',\n },\n\n 'apiKeys.list': {\n method: 'GET',\n path: '/v1/orgs/:orgId/api-keys',\n params: Empty,\n response: ApiKeyListResponse,\n mutates: false,\n requiresRole: 'admin',\n },\n 'apiKeys.create': {\n method: 'POST',\n path: '/v1/orgs/:orgId/api-keys',\n params: CreateApiKeyInput,\n response: CreateApiKeyResponse,\n mutates: true,\n requiresRole: 'admin',\n },\n 'apiKeys.revoke': {\n method: 'DELETE',\n path: '/v1/orgs/:orgId/api-keys/:keyId',\n params: Empty,\n response: z.object({ ok: z.literal(true) }),\n mutates: true,\n requiresRole: 'admin',\n },\n\n 'saml.get': {\n method: 'GET',\n path: '/v1/orgs/:orgId/saml',\n params: Empty,\n response: SamlConfig,\n mutates: false,\n requiresRole: 'owner',\n },\n 'saml.update': {\n method: 'POST',\n path: '/v1/orgs/:orgId/saml',\n params: SamlConfig,\n response: SamlConfig,\n mutates: true,\n requiresRole: 'owner',\n },\n\n 'testRuns.list': {\n method: 'GET',\n path: '/v1/orgs/:orgId/test-runs',\n params: TestRunListInput,\n response: TestRunListResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'testRuns.create': {\n method: 'POST',\n path: '/v1/orgs/:orgId/test-runs',\n params: CreateTestRunInput,\n response: TestRun,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'testRuns.get': {\n method: 'GET',\n path: '/v1/orgs/:orgId/test-runs/:runId',\n params: Empty,\n response: TestRun,\n mutates: false,\n requiresRole: 'viewer',\n },\n\n 'harness.definitions': {\n method: 'GET',\n path: '/v1/orgs/:orgId/harness/admin/agents',\n params: Empty,\n response: HarnessOperatorListResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'harness.invokeJob': {\n method: 'POST',\n path: '/v1/orgs/:orgId/harness/jobs/:jobName',\n params: HarnessJobInput,\n response: HarnessJobResponse,\n mutates: true,\n requiresRole: 'experimenter',\n },\n} satisfies Record<string, EndpointDef>;\n\nexport type EndpointName = keyof typeof endpoints;\nexport type EndpointParams<E extends EndpointName> = z.infer<(typeof endpoints)[E]['params']>;\nexport type EndpointResponse<E extends EndpointName> = z.infer<(typeof endpoints)[E]['response']>;\n\n/** Substitute path parameters in a path template. */\nexport function buildPath(template: string, pathParams: Record<string, string>): string {\n return template.replace(/:([a-zA-Z][a-zA-Z0-9_]*)/g, (_, name) => {\n const v = pathParams[name];\n if (v == null) throw new Error(`Missing path parameter: ${name}`);\n return encodeURIComponent(v);\n });\n}\n","import { z } from 'zod';\n\nexport const ApiError = z.object({\n code: z.enum([\n 'UNAUTHENTICATED',\n 'FORBIDDEN',\n 'NOT_FOUND',\n 'VALIDATION_FAILED',\n 'CONFLICT',\n 'RATE_LIMITED',\n 'INTERNAL',\n ]),\n message: z.string(),\n details: z.record(z.unknown()).optional(),\n});\nexport type ApiError = z.infer<typeof ApiError>;\n"]}
package/dist/index.d.cts CHANGED
@@ -3988,18 +3988,21 @@ declare const TestRunListInput: z.ZodObject<{
3988
3988
  status: z.ZodOptional<z.ZodEnum<["running", "passed", "failed", "skipped", "canceled"]>>;
3989
3989
  source: z.ZodOptional<z.ZodEnum<["bdd", "live-suite", "junit", "cli", "other"]>>;
3990
3990
  suite: z.ZodOptional<z.ZodString>;
3991
+ targetPack: z.ZodOptional<z.ZodString>;
3991
3992
  limit: z.ZodOptional<z.ZodNumber>;
3992
3993
  offset: z.ZodOptional<z.ZodNumber>;
3993
3994
  }, "strip", z.ZodTypeAny, {
3994
3995
  status?: "running" | "passed" | "failed" | "skipped" | "canceled" | undefined;
3995
3996
  suite?: string | undefined;
3996
3997
  source?: "bdd" | "live-suite" | "junit" | "cli" | "other" | undefined;
3998
+ targetPack?: string | undefined;
3997
3999
  limit?: number | undefined;
3998
4000
  offset?: number | undefined;
3999
4001
  }, {
4000
4002
  status?: "running" | "passed" | "failed" | "skipped" | "canceled" | undefined;
4001
4003
  suite?: string | undefined;
4002
4004
  source?: "bdd" | "live-suite" | "junit" | "cli" | "other" | undefined;
4005
+ targetPack?: string | undefined;
4003
4006
  limit?: number | undefined;
4004
4007
  offset?: number | undefined;
4005
4008
  }>;
@@ -4200,6 +4203,41 @@ declare const TestRunListResponse: z.ZodObject<{
4200
4203
  }[] | undefined;
4201
4204
  }[];
4202
4205
  }>;
4206
+ declare const HarnessOperatorDefinition: z.ZodObject<{
4207
+ name: z.ZodEnum<["quality-status", "srm-watcher", "analyst"]>;
4208
+ kind: z.ZodLiteral<"job">;
4209
+ description: z.ZodString;
4210
+ mutates: z.ZodBoolean;
4211
+ }, "strip", z.ZodTypeAny, {
4212
+ name: "quality-status" | "srm-watcher" | "analyst";
4213
+ kind: "job";
4214
+ description: string;
4215
+ mutates: boolean;
4216
+ }, {
4217
+ name: "quality-status" | "srm-watcher" | "analyst";
4218
+ kind: "job";
4219
+ description: string;
4220
+ mutates: boolean;
4221
+ }>;
4222
+ type HarnessOperatorDefinition = z.infer<typeof HarnessOperatorDefinition>;
4223
+ declare const HarnessOperatorListResponse: z.ZodArray<z.ZodObject<{
4224
+ name: z.ZodEnum<["quality-status", "srm-watcher", "analyst"]>;
4225
+ kind: z.ZodLiteral<"job">;
4226
+ description: z.ZodString;
4227
+ mutates: z.ZodBoolean;
4228
+ }, "strip", z.ZodTypeAny, {
4229
+ name: "quality-status" | "srm-watcher" | "analyst";
4230
+ kind: "job";
4231
+ description: string;
4232
+ mutates: boolean;
4233
+ }, {
4234
+ name: "quality-status" | "srm-watcher" | "analyst";
4235
+ kind: "job";
4236
+ description: string;
4237
+ mutates: boolean;
4238
+ }>, "many">;
4239
+ declare const HarnessJobInput: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
4240
+ declare const HarnessJobResponse: z.ZodRecord<z.ZodString, z.ZodUnknown>;
4203
4241
  declare const endpoints: {
4204
4242
  'tenants.me': {
4205
4243
  method: "GET";
@@ -11423,18 +11461,21 @@ declare const endpoints: {
11423
11461
  status: z.ZodOptional<z.ZodEnum<["running", "passed", "failed", "skipped", "canceled"]>>;
11424
11462
  source: z.ZodOptional<z.ZodEnum<["bdd", "live-suite", "junit", "cli", "other"]>>;
11425
11463
  suite: z.ZodOptional<z.ZodString>;
11464
+ targetPack: z.ZodOptional<z.ZodString>;
11426
11465
  limit: z.ZodOptional<z.ZodNumber>;
11427
11466
  offset: z.ZodOptional<z.ZodNumber>;
11428
11467
  }, "strip", z.ZodTypeAny, {
11429
11468
  status?: "running" | "passed" | "failed" | "skipped" | "canceled" | undefined;
11430
11469
  suite?: string | undefined;
11431
11470
  source?: "bdd" | "live-suite" | "junit" | "cli" | "other" | undefined;
11471
+ targetPack?: string | undefined;
11432
11472
  limit?: number | undefined;
11433
11473
  offset?: number | undefined;
11434
11474
  }, {
11435
11475
  status?: "running" | "passed" | "failed" | "skipped" | "canceled" | undefined;
11436
11476
  suite?: string | undefined;
11437
11477
  source?: "bdd" | "live-suite" | "junit" | "cli" | "other" | undefined;
11478
+ targetPack?: string | undefined;
11438
11479
  limit?: number | undefined;
11439
11480
  offset?: number | undefined;
11440
11481
  }>;
@@ -12118,6 +12159,37 @@ declare const endpoints: {
12118
12159
  mutates: false;
12119
12160
  requiresRole: "viewer";
12120
12161
  };
12162
+ 'harness.definitions': {
12163
+ method: "GET";
12164
+ path: string;
12165
+ params: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
12166
+ response: z.ZodArray<z.ZodObject<{
12167
+ name: z.ZodEnum<["quality-status", "srm-watcher", "analyst"]>;
12168
+ kind: z.ZodLiteral<"job">;
12169
+ description: z.ZodString;
12170
+ mutates: z.ZodBoolean;
12171
+ }, "strip", z.ZodTypeAny, {
12172
+ name: "quality-status" | "srm-watcher" | "analyst";
12173
+ kind: "job";
12174
+ description: string;
12175
+ mutates: boolean;
12176
+ }, {
12177
+ name: "quality-status" | "srm-watcher" | "analyst";
12178
+ kind: "job";
12179
+ description: string;
12180
+ mutates: boolean;
12181
+ }>, "many">;
12182
+ mutates: false;
12183
+ requiresRole: "viewer";
12184
+ };
12185
+ 'harness.invokeJob': {
12186
+ method: "POST";
12187
+ path: string;
12188
+ params: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
12189
+ response: z.ZodRecord<z.ZodString, z.ZodUnknown>;
12190
+ mutates: true;
12191
+ requiresRole: "experimenter";
12192
+ };
12121
12193
  };
12122
12194
  type EndpointName = keyof typeof endpoints;
12123
12195
  type EndpointParams<E extends EndpointName> = z.infer<(typeof endpoints)[E]['params']>;
@@ -12140,4 +12212,4 @@ declare const ApiError: z.ZodObject<{
12140
12212
  }>;
12141
12213
  type ApiError = z.infer<typeof ApiError>;
12142
12214
 
12143
- export { AggregateInput, AggregateResponse, AggregateRow, ApiError, ApiKeyListResponse, ApiKeySummary, AuditEvent, AuditExport, AuditExportListResponse, AuditListResponse, CreateApiKeyInput, CreateApiKeyResponse, CreateAuditExportInput, CreateExperimentInput, CreateExperimentResponse, CreateTestRunInput, EdgePushResult, type EndpointDef, type EndpointName, type EndpointParams, type EndpointResponse, EnvironmentListResponse, ExperimentListResponse, ExperimentSummary, FeatureListResponse, FeatureRuleListResponse, GovernanceSettings, GovernanceStatusResponse, InvokeActionInput, InvokeActionResponse, ManifestKey, ManifestKeysResponse, PreviewSignInput, PreviewSignResponse, ProjectListResponse, PromoteEnvironmentInput, PromoteEnvironmentResponse, PropertyListResponse, PublicationListResponse, PublishManifestResponse, QualityGateResult, SamlConfig, TenantSelf, TestCaseResult, TestCaseStatus, TestRun, TestRunArtifact, TestRunListInput, TestRunListResponse, TestRunStatus, TestRunSummary, UpdateGovernanceSettingsInput, buildPath, endpoints };
12215
+ export { AggregateInput, AggregateResponse, AggregateRow, ApiError, ApiKeyListResponse, ApiKeySummary, AuditEvent, AuditExport, AuditExportListResponse, AuditListResponse, CreateApiKeyInput, CreateApiKeyResponse, CreateAuditExportInput, CreateExperimentInput, CreateExperimentResponse, CreateTestRunInput, EdgePushResult, type EndpointDef, type EndpointName, type EndpointParams, type EndpointResponse, EnvironmentListResponse, ExperimentListResponse, ExperimentSummary, FeatureListResponse, FeatureRuleListResponse, GovernanceSettings, GovernanceStatusResponse, HarnessJobInput, HarnessJobResponse, HarnessOperatorDefinition, HarnessOperatorListResponse, InvokeActionInput, InvokeActionResponse, ManifestKey, ManifestKeysResponse, PreviewSignInput, PreviewSignResponse, ProjectListResponse, PromoteEnvironmentInput, PromoteEnvironmentResponse, PropertyListResponse, PublicationListResponse, PublishManifestResponse, QualityGateResult, SamlConfig, TenantSelf, TestCaseResult, TestCaseStatus, TestRun, TestRunArtifact, TestRunListInput, TestRunListResponse, TestRunStatus, TestRunSummary, UpdateGovernanceSettingsInput, buildPath, endpoints };
package/dist/index.d.ts CHANGED
@@ -3988,18 +3988,21 @@ declare const TestRunListInput: z.ZodObject<{
3988
3988
  status: z.ZodOptional<z.ZodEnum<["running", "passed", "failed", "skipped", "canceled"]>>;
3989
3989
  source: z.ZodOptional<z.ZodEnum<["bdd", "live-suite", "junit", "cli", "other"]>>;
3990
3990
  suite: z.ZodOptional<z.ZodString>;
3991
+ targetPack: z.ZodOptional<z.ZodString>;
3991
3992
  limit: z.ZodOptional<z.ZodNumber>;
3992
3993
  offset: z.ZodOptional<z.ZodNumber>;
3993
3994
  }, "strip", z.ZodTypeAny, {
3994
3995
  status?: "running" | "passed" | "failed" | "skipped" | "canceled" | undefined;
3995
3996
  suite?: string | undefined;
3996
3997
  source?: "bdd" | "live-suite" | "junit" | "cli" | "other" | undefined;
3998
+ targetPack?: string | undefined;
3997
3999
  limit?: number | undefined;
3998
4000
  offset?: number | undefined;
3999
4001
  }, {
4000
4002
  status?: "running" | "passed" | "failed" | "skipped" | "canceled" | undefined;
4001
4003
  suite?: string | undefined;
4002
4004
  source?: "bdd" | "live-suite" | "junit" | "cli" | "other" | undefined;
4005
+ targetPack?: string | undefined;
4003
4006
  limit?: number | undefined;
4004
4007
  offset?: number | undefined;
4005
4008
  }>;
@@ -4200,6 +4203,41 @@ declare const TestRunListResponse: z.ZodObject<{
4200
4203
  }[] | undefined;
4201
4204
  }[];
4202
4205
  }>;
4206
+ declare const HarnessOperatorDefinition: z.ZodObject<{
4207
+ name: z.ZodEnum<["quality-status", "srm-watcher", "analyst"]>;
4208
+ kind: z.ZodLiteral<"job">;
4209
+ description: z.ZodString;
4210
+ mutates: z.ZodBoolean;
4211
+ }, "strip", z.ZodTypeAny, {
4212
+ name: "quality-status" | "srm-watcher" | "analyst";
4213
+ kind: "job";
4214
+ description: string;
4215
+ mutates: boolean;
4216
+ }, {
4217
+ name: "quality-status" | "srm-watcher" | "analyst";
4218
+ kind: "job";
4219
+ description: string;
4220
+ mutates: boolean;
4221
+ }>;
4222
+ type HarnessOperatorDefinition = z.infer<typeof HarnessOperatorDefinition>;
4223
+ declare const HarnessOperatorListResponse: z.ZodArray<z.ZodObject<{
4224
+ name: z.ZodEnum<["quality-status", "srm-watcher", "analyst"]>;
4225
+ kind: z.ZodLiteral<"job">;
4226
+ description: z.ZodString;
4227
+ mutates: z.ZodBoolean;
4228
+ }, "strip", z.ZodTypeAny, {
4229
+ name: "quality-status" | "srm-watcher" | "analyst";
4230
+ kind: "job";
4231
+ description: string;
4232
+ mutates: boolean;
4233
+ }, {
4234
+ name: "quality-status" | "srm-watcher" | "analyst";
4235
+ kind: "job";
4236
+ description: string;
4237
+ mutates: boolean;
4238
+ }>, "many">;
4239
+ declare const HarnessJobInput: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
4240
+ declare const HarnessJobResponse: z.ZodRecord<z.ZodString, z.ZodUnknown>;
4203
4241
  declare const endpoints: {
4204
4242
  'tenants.me': {
4205
4243
  method: "GET";
@@ -11423,18 +11461,21 @@ declare const endpoints: {
11423
11461
  status: z.ZodOptional<z.ZodEnum<["running", "passed", "failed", "skipped", "canceled"]>>;
11424
11462
  source: z.ZodOptional<z.ZodEnum<["bdd", "live-suite", "junit", "cli", "other"]>>;
11425
11463
  suite: z.ZodOptional<z.ZodString>;
11464
+ targetPack: z.ZodOptional<z.ZodString>;
11426
11465
  limit: z.ZodOptional<z.ZodNumber>;
11427
11466
  offset: z.ZodOptional<z.ZodNumber>;
11428
11467
  }, "strip", z.ZodTypeAny, {
11429
11468
  status?: "running" | "passed" | "failed" | "skipped" | "canceled" | undefined;
11430
11469
  suite?: string | undefined;
11431
11470
  source?: "bdd" | "live-suite" | "junit" | "cli" | "other" | undefined;
11471
+ targetPack?: string | undefined;
11432
11472
  limit?: number | undefined;
11433
11473
  offset?: number | undefined;
11434
11474
  }, {
11435
11475
  status?: "running" | "passed" | "failed" | "skipped" | "canceled" | undefined;
11436
11476
  suite?: string | undefined;
11437
11477
  source?: "bdd" | "live-suite" | "junit" | "cli" | "other" | undefined;
11478
+ targetPack?: string | undefined;
11438
11479
  limit?: number | undefined;
11439
11480
  offset?: number | undefined;
11440
11481
  }>;
@@ -12118,6 +12159,37 @@ declare const endpoints: {
12118
12159
  mutates: false;
12119
12160
  requiresRole: "viewer";
12120
12161
  };
12162
+ 'harness.definitions': {
12163
+ method: "GET";
12164
+ path: string;
12165
+ params: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
12166
+ response: z.ZodArray<z.ZodObject<{
12167
+ name: z.ZodEnum<["quality-status", "srm-watcher", "analyst"]>;
12168
+ kind: z.ZodLiteral<"job">;
12169
+ description: z.ZodString;
12170
+ mutates: z.ZodBoolean;
12171
+ }, "strip", z.ZodTypeAny, {
12172
+ name: "quality-status" | "srm-watcher" | "analyst";
12173
+ kind: "job";
12174
+ description: string;
12175
+ mutates: boolean;
12176
+ }, {
12177
+ name: "quality-status" | "srm-watcher" | "analyst";
12178
+ kind: "job";
12179
+ description: string;
12180
+ mutates: boolean;
12181
+ }>, "many">;
12182
+ mutates: false;
12183
+ requiresRole: "viewer";
12184
+ };
12185
+ 'harness.invokeJob': {
12186
+ method: "POST";
12187
+ path: string;
12188
+ params: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
12189
+ response: z.ZodRecord<z.ZodString, z.ZodUnknown>;
12190
+ mutates: true;
12191
+ requiresRole: "experimenter";
12192
+ };
12121
12193
  };
12122
12194
  type EndpointName = keyof typeof endpoints;
12123
12195
  type EndpointParams<E extends EndpointName> = z.infer<(typeof endpoints)[E]['params']>;
@@ -12140,4 +12212,4 @@ declare const ApiError: z.ZodObject<{
12140
12212
  }>;
12141
12213
  type ApiError = z.infer<typeof ApiError>;
12142
12214
 
12143
- export { AggregateInput, AggregateResponse, AggregateRow, ApiError, ApiKeyListResponse, ApiKeySummary, AuditEvent, AuditExport, AuditExportListResponse, AuditListResponse, CreateApiKeyInput, CreateApiKeyResponse, CreateAuditExportInput, CreateExperimentInput, CreateExperimentResponse, CreateTestRunInput, EdgePushResult, type EndpointDef, type EndpointName, type EndpointParams, type EndpointResponse, EnvironmentListResponse, ExperimentListResponse, ExperimentSummary, FeatureListResponse, FeatureRuleListResponse, GovernanceSettings, GovernanceStatusResponse, InvokeActionInput, InvokeActionResponse, ManifestKey, ManifestKeysResponse, PreviewSignInput, PreviewSignResponse, ProjectListResponse, PromoteEnvironmentInput, PromoteEnvironmentResponse, PropertyListResponse, PublicationListResponse, PublishManifestResponse, QualityGateResult, SamlConfig, TenantSelf, TestCaseResult, TestCaseStatus, TestRun, TestRunArtifact, TestRunListInput, TestRunListResponse, TestRunStatus, TestRunSummary, UpdateGovernanceSettingsInput, buildPath, endpoints };
12215
+ export { AggregateInput, AggregateResponse, AggregateRow, ApiError, ApiKeyListResponse, ApiKeySummary, AuditEvent, AuditExport, AuditExportListResponse, AuditListResponse, CreateApiKeyInput, CreateApiKeyResponse, CreateAuditExportInput, CreateExperimentInput, CreateExperimentResponse, CreateTestRunInput, EdgePushResult, type EndpointDef, type EndpointName, type EndpointParams, type EndpointResponse, EnvironmentListResponse, ExperimentListResponse, ExperimentSummary, FeatureListResponse, FeatureRuleListResponse, GovernanceSettings, GovernanceStatusResponse, HarnessJobInput, HarnessJobResponse, HarnessOperatorDefinition, HarnessOperatorListResponse, InvokeActionInput, InvokeActionResponse, ManifestKey, ManifestKeysResponse, PreviewSignInput, PreviewSignResponse, ProjectListResponse, PromoteEnvironmentInput, PromoteEnvironmentResponse, PropertyListResponse, PublicationListResponse, PublishManifestResponse, QualityGateResult, SamlConfig, TenantSelf, TestCaseResult, TestCaseStatus, TestRun, TestRunArtifact, TestRunListInput, TestRunListResponse, TestRunStatus, TestRunSummary, UpdateGovernanceSettingsInput, buildPath, endpoints };
package/dist/index.js CHANGED
@@ -297,12 +297,22 @@ var TestRunListInput = z.object({
297
297
  status: TestRunStatus.optional(),
298
298
  source: CreateTestRunInput.shape.source.optional(),
299
299
  suite: z.string().min(1).max(240).optional(),
300
+ targetPack: z.string().min(1).max(120).regex(/^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/).optional(),
300
301
  limit: z.coerce.number().int().min(1).max(200).optional(),
301
302
  offset: z.coerce.number().int().min(0).max(1e5).optional()
302
303
  });
303
304
  var TestRunListResponse = z.object({
304
305
  runs: z.array(TestRun.omit({ cases: true }))
305
306
  });
307
+ var HarnessOperatorDefinition = z.object({
308
+ name: z.enum(["quality-status", "srm-watcher", "analyst"]),
309
+ kind: z.literal("job"),
310
+ description: z.string(),
311
+ mutates: z.boolean()
312
+ });
313
+ var HarnessOperatorListResponse = z.array(HarnessOperatorDefinition);
314
+ var HarnessJobInput = z.record(z.unknown()).default({});
315
+ var HarnessJobResponse = z.record(z.unknown());
306
316
  var endpoints = {
307
317
  "tenants.me": {
308
318
  method: "GET",
@@ -615,6 +625,22 @@ var endpoints = {
615
625
  response: TestRun,
616
626
  mutates: false,
617
627
  requiresRole: "viewer"
628
+ },
629
+ "harness.definitions": {
630
+ method: "GET",
631
+ path: "/v1/orgs/:orgId/harness/admin/agents",
632
+ params: Empty,
633
+ response: HarnessOperatorListResponse,
634
+ mutates: false,
635
+ requiresRole: "viewer"
636
+ },
637
+ "harness.invokeJob": {
638
+ method: "POST",
639
+ path: "/v1/orgs/:orgId/harness/jobs/:jobName",
640
+ params: HarnessJobInput,
641
+ response: HarnessJobResponse,
642
+ mutates: true,
643
+ requiresRole: "experimenter"
618
644
  }
619
645
  };
620
646
  function buildPath(template, pathParams) {
@@ -638,6 +664,6 @@ var ApiError = z.object({
638
664
  details: z.record(z.unknown()).optional()
639
665
  });
640
666
 
641
- export { AggregateInput, AggregateResponse, AggregateRow, ApiError, ApiKeyListResponse, ApiKeySummary, AuditEvent, AuditExport, AuditExportListResponse, AuditListResponse, CreateApiKeyInput, CreateApiKeyResponse, CreateAuditExportInput, CreateExperimentInput, CreateExperimentResponse, CreateTestRunInput, EdgePushResult, EnvironmentListResponse, ExperimentListResponse, ExperimentSummary, FeatureListResponse, FeatureRuleListResponse, GovernanceSettings, GovernanceStatusResponse, InvokeActionInput, InvokeActionResponse, ManifestKey, ManifestKeysResponse, PreviewSignInput, PreviewSignResponse, ProjectListResponse, PromoteEnvironmentInput, PromoteEnvironmentResponse, PropertyListResponse, PublicationListResponse, PublishManifestResponse, QualityGateResult, SamlConfig, TenantSelf, TestCaseResult, TestCaseStatus, TestRun, TestRunArtifact, TestRunListInput, TestRunListResponse, TestRunStatus, TestRunSummary, UpdateGovernanceSettingsInput, buildPath, endpoints };
667
+ export { AggregateInput, AggregateResponse, AggregateRow, ApiError, ApiKeyListResponse, ApiKeySummary, AuditEvent, AuditExport, AuditExportListResponse, AuditListResponse, CreateApiKeyInput, CreateApiKeyResponse, CreateAuditExportInput, CreateExperimentInput, CreateExperimentResponse, CreateTestRunInput, EdgePushResult, EnvironmentListResponse, ExperimentListResponse, ExperimentSummary, FeatureListResponse, FeatureRuleListResponse, GovernanceSettings, GovernanceStatusResponse, HarnessJobInput, HarnessJobResponse, HarnessOperatorDefinition, HarnessOperatorListResponse, InvokeActionInput, InvokeActionResponse, ManifestKey, ManifestKeysResponse, PreviewSignInput, PreviewSignResponse, ProjectListResponse, PromoteEnvironmentInput, PromoteEnvironmentResponse, PropertyListResponse, PublicationListResponse, PublishManifestResponse, QualityGateResult, SamlConfig, TenantSelf, TestCaseResult, TestCaseStatus, TestRun, TestRunArtifact, TestRunListInput, TestRunListResponse, TestRunStatus, TestRunSummary, UpdateGovernanceSettingsInput, buildPath, endpoints };
642
668
  //# sourceMappingURL=index.js.map
643
669
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/endpoints.ts","../src/errors.ts"],"names":["z"],"mappings":"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","file":"index.js","sourcesContent":["import {\n ActionId,\n CreateEnvironmentInput,\n CreateFeatureInput,\n CreateFeatureRuleInput,\n CreateProjectInput,\n CreatePropertyInput,\n Environment,\n EnvironmentPublication,\n Experiment,\n ExperimentId,\n ExperimentSpec,\n ExperimentSpecBase,\n ExperimentState,\n Feature,\n FeatureRule,\n Project,\n Property,\n} from '@fabricorg/experiments-domain';\nimport { z } from 'zod';\n\n/**\n * Each endpoint declares method, path template, request schema, and response\n * schema. The server registers handlers against this table; the api-client\n * derives its method signatures from it. Drift between client and server is\n * impossible by construction.\n */\n\nexport interface EndpointDef<\n TParams extends z.ZodTypeAny = z.ZodTypeAny,\n TResponse extends z.ZodTypeAny = z.ZodTypeAny,\n> {\n method: 'GET' | 'POST' | 'DELETE';\n /** Path with `:param` placeholders, e.g. `/v1/orgs/:orgId/experiments`. */\n path: string;\n /** Request schema. For GET, used to validate query params; otherwise body. */\n params: TParams;\n response: TResponse;\n /** True if this endpoint mutates state — server applies idempotency cache. */\n mutates: boolean;\n /** Required role on the active org. `null` = any authenticated session. */\n requiresRole: 'owner' | 'admin' | 'experimenter' | 'viewer' | null;\n}\n\nconst Empty = z.object({});\n\n// ---- tenants ----------------------------------------------------------------\n\nexport const TenantSelf = z.object({\n organization: z.object({\n id: z.string(),\n name: z.string(),\n slug: z.string(),\n createdAt: z.string().datetime(),\n }),\n member: z.object({\n role: z.enum(['owner', 'admin', 'experimenter', 'viewer']),\n }),\n user: z.object({\n id: z.string(),\n email: z.string().email(),\n name: z.string().nullable(),\n }),\n});\nexport type TenantSelf = z.infer<typeof TenantSelf>;\n\n// ---- workspace hierarchy ---------------------------------------------------\n\nexport const ProjectListResponse = z.object({ projects: z.array(Project) });\nexport const PropertyListResponse = z.object({ properties: z.array(Property) });\nexport const EnvironmentListResponse = z.object({ environments: z.array(Environment) });\nexport const FeatureListResponse = z.object({ features: z.array(Feature) });\nexport const FeatureRuleListResponse = z.object({ rules: z.array(FeatureRule) });\nexport const PublicationListResponse = z.object({ publications: z.array(EnvironmentPublication) });\nexport const PromoteEnvironmentInput = z.object({ sourceEnvironmentId: z.string().uuid() });\nexport const PromoteEnvironmentResponse = z.object({\n sourceEnvironmentId: z.string().uuid(),\n sourceVersion: z.number().int().positive(),\n targetEnvironmentId: z.string().uuid(),\n promotedRuleCount: z.number().int().nonnegative(),\n});\n\n// ---- experiments ------------------------------------------------------------\n\nexport const ExperimentSummary = z.object({\n id: Experiment.shape.id,\n name: Experiment.shape.name,\n state: ExperimentState,\n updatedAt: z.string().datetime(),\n});\nexport type ExperimentSummary = z.infer<typeof ExperimentSummary>;\n\nexport const ExperimentListResponse = z.object({\n experiments: z.array(ExperimentSummary),\n});\nexport type ExperimentListResponse = z.infer<typeof ExperimentListResponse>;\n\nexport const CreateExperimentInput = ExperimentSpecBase;\nexport type CreateExperimentInput = z.infer<typeof CreateExperimentInput>;\n\nexport const CreateExperimentResponse = z.object({\n experimentId: ExperimentId,\n idempotent: z.boolean().optional(),\n});\nexport type CreateExperimentResponse = z.infer<typeof CreateExperimentResponse>;\n\n/**\n * Aggregate row per variant for a given metric over an optional time window.\n * Sourced from the warehouse adapter (Databricks in prod, Local in dev).\n */\nexport const AggregateRow = z.object({\n variantKey: z.string(),\n exposureCount: z.number().int().nonnegative(),\n conversionCount: z.number().int().nonnegative(),\n conversionSum: z.number(),\n failureCount: z.number().int().nonnegative().default(0),\n});\nexport type AggregateRow = z.infer<typeof AggregateRow>;\n\nexport const AggregateInput = z.object({\n metric: z.string().min(1).max(120),\n fromIso: z.string().datetime().optional(),\n untilIso: z.string().datetime().optional(),\n segmentKey: z\n .string()\n .min(1)\n .max(80)\n .regex(/^[A-Za-z0-9_.-]+$/)\n .optional(),\n prePeriodDays: z.coerce.number().int().min(1).max(365).optional(),\n});\nexport type AggregateInput = z.infer<typeof AggregateInput>;\n\nexport const AggregateResponse = z.object({\n experimentId: ExperimentId,\n metric: z.string(),\n rows: z.array(AggregateRow),\n /** ISO datetime — when this aggregate was computed. SDKs may cache by this. */\n computedAt: z.string().datetime(),\n analytics: z\n .object({\n variants: z.array(\n z.object({\n variantKey: z.string(),\n exposedSubjects: z.number().int().nonnegative(),\n convertedSubjects: z.number().int().nonnegative(),\n meanTimeToConvertMs: z.number().nonnegative().nullable(),\n medianTimeToConvertMs: z.number().nonnegative().nullable(),\n p90TimeToConvertMs: z.number().nonnegative().nullable(),\n meanConversionDepth: z.number().nonnegative(),\n conversionDepth: z.object({\n oneOrMore: z.number().int().nonnegative(),\n twoOrMore: z.number().int().nonnegative(),\n threeOrMore: z.number().int().nonnegative(),\n }),\n cupedAdjustedRate: z.number().nullable(),\n cupedLift: z.number().nullable(),\n }),\n ),\n segments: z.array(\n z.object({\n segmentValue: z.string(),\n variantKey: z.string(),\n exposureCount: z.number().int().nonnegative(),\n conversionCount: z.number().int().nonnegative(),\n conversionRate: z.number().min(0).max(1),\n }),\n ),\n segmentKey: z.string().optional(),\n cuped: z.object({\n available: z.boolean(),\n prePeriodDays: z.number().int().positive(),\n theta: z.number().nullable(),\n varianceReduction: z.number().nullable(),\n }),\n })\n .optional(),\n});\nexport type AggregateResponse = z.infer<typeof AggregateResponse>;\n\nexport const InvokeActionInput = z.object({\n actionId: ActionId,\n params: z.record(z.unknown()),\n /** Optional client-supplied idempotency key. */\n idempotencyKey: z.string().min(8).max(128).optional(),\n});\nexport type InvokeActionInput = z.infer<typeof InvokeActionInput>;\n\nexport const InvokeActionResponse = z.object({\n success: z.boolean(),\n data: z.record(z.unknown()).optional(),\n error: z.string().optional(),\n});\nexport type InvokeActionResponse = z.infer<typeof InvokeActionResponse>;\n\n// ---- manifests --------------------------------------------------------------\n\n/** Result of pushing the signed manifest to the Cloudflare manifest-worker. */\nexport const EdgePushResult = z.object({\n pushed: z.boolean(),\n reason: z.string().optional(),\n status: z.number().int().optional(),\n});\nexport type EdgePushResult = z.infer<typeof EdgePushResult>;\n\nexport const PublishManifestResponse = z.object({\n manifestVersion: z.number().int().nonnegative(),\n contentHash: z.string().regex(/^[0-9a-f]{64}$/),\n experimentCount: z.number().int().nonnegative(),\n /** Edge push status. `pushed: false` with `reason: 'unconfigured'` is normal in local dev. */\n edgePush: EdgePushResult,\n});\nexport type PublishManifestResponse = z.infer<typeof PublishManifestResponse>;\n\nexport const ManifestKey = z.object({\n keyId: z.string(),\n publicKeyHex: z.string().regex(/^[0-9a-f]+$/),\n status: z.enum(['active', 'retiring', 'retired']),\n createdAt: z.string().datetime(),\n retiredAt: z.string().datetime().nullable(),\n});\nexport type ManifestKey = z.infer<typeof ManifestKey>;\n\nexport const ManifestKeysResponse = z.object({ keys: z.array(ManifestKey) });\nexport type ManifestKeysResponse = z.infer<typeof ManifestKeysResponse>;\n\n// ---- preview tokens ---------------------------------------------------------\n\nexport const PreviewSignInput = z.object({\n experimentId: ExperimentId,\n variantKey: z.string().min(1).max(32),\n /** Token TTL in seconds. Clamped server-side to [60, 3600]; default 900. */\n ttlSeconds: z.number().int().min(60).max(3600).optional(),\n});\nexport type PreviewSignInput = z.infer<typeof PreviewSignInput>;\n\nexport const PreviewSignResponse = z.object({\n token: z.string(),\n /** ISO datetime when the token expires. */\n expiresAt: z.string().datetime(),\n /** ID of the public JWKS key used to sign — exposed for debugging only. */\n keyId: z.string(),\n /** Unique JWT id for audit/debugging and future replay controls. */\n jti: z.string(),\n});\nexport type PreviewSignResponse = z.infer<typeof PreviewSignResponse>;\n\n// ---- audit ------------------------------------------------------------------\n\nexport const AuditEvent = z.object({\n id: z.string(),\n type: z.string(),\n experimentId: z.string(),\n actorId: z.string(),\n at: z.string().datetime(),\n payload: z.record(z.unknown()),\n});\nexport type AuditEvent = z.infer<typeof AuditEvent>;\n\nexport const AuditListResponse = z.object({ events: z.array(AuditEvent) });\nexport type AuditListResponse = z.infer<typeof AuditListResponse>;\n\n// ---- enterprise governance -------------------------------------------------\n\nexport const GovernanceSettings = z.object({\n requireQualityForProduction: z.boolean(),\n requiredQualitySuites: z.array(z.string().min(1).max(240)).max(50),\n qualityMaxAgeHours: z.number().int().min(1).max(8760),\n retentionDays: z.number().int().min(30).max(3650),\n legalHold: z.boolean(),\n updatedBy: z.string().nullable(),\n updatedAt: z.string().datetime().nullable(),\n});\nexport type GovernanceSettings = z.infer<typeof GovernanceSettings>;\n\nexport const UpdateGovernanceSettingsInput = GovernanceSettings.pick({\n requireQualityForProduction: true,\n requiredQualitySuites: true,\n qualityMaxAgeHours: true,\n retentionDays: true,\n legalHold: true,\n});\nexport type UpdateGovernanceSettingsInput = z.infer<typeof UpdateGovernanceSettingsInput>;\n\nexport const QualityGateResult = z.object({\n enabled: z.boolean(),\n passed: z.boolean(),\n checks: z.array(\n z.object({\n suite: z.string(),\n passed: z.boolean(),\n reason: z.string(),\n runId: z.string().nullable(),\n finishedAt: z.string().datetime().nullable(),\n }),\n ),\n});\nexport type QualityGateResult = z.infer<typeof QualityGateResult>;\n\nexport const GovernanceStatusResponse = z.object({\n settings: GovernanceSettings,\n qualityGate: QualityGateResult,\n});\n\nexport const AuditExport = z.object({\n id: z.string(),\n destinationKind: z.enum(['s3', 'r2', 'splunk-hec']),\n status: z.enum(['active', 'paused', 'failed']),\n lastCursorAt: z.string().datetime().nullable(),\n});\nexport const AuditExportListResponse = z.object({ exports: z.array(AuditExport) });\n\nexport const CreateAuditExportInput = z.object({\n destinationKind: z.enum(['s3', 'r2', 'splunk-hec']),\n /** Free-form config; encrypted at rest. Schema enforced by destination kind. */\n config: z.record(z.unknown()),\n});\n\n// ---- api keys ---------------------------------------------------------------\n\nexport const ApiKeySummary = z.object({\n id: z.string(),\n name: z.string(),\n prefix: z.string(),\n role: z.enum(['owner', 'admin', 'experimenter', 'viewer']),\n scopes: z.array(z.enum(['read', 'write', 'admin'])),\n createdAt: z.string().datetime(),\n lastUsedAt: z.string().datetime().nullable(),\n expiresAt: z.string().datetime().nullable(),\n});\nexport const ApiKeyListResponse = z.object({ keys: z.array(ApiKeySummary) });\n\nexport const CreateApiKeyInput = z.object({\n name: z.string().min(1).max(120),\n /** ISO datetime of expiry; null for non-expiring (not recommended in prod). */\n expiresAt: z.string().datetime().nullable(),\n /** Role assigned to the key. Defaults to the creator's role. */\n role: z.enum(['owner', 'admin', 'experimenter', 'viewer']).optional(),\n /** Permission scopes assigned to the key. Defaults are derived from role. */\n scopes: z.array(z.enum(['read', 'write', 'admin'])).optional(),\n});\nexport type CreateApiKeyInput = z.infer<typeof CreateApiKeyInput>;\n\nexport const CreateApiKeyResponse = ApiKeySummary.extend({\n /** Plaintext key, returned exactly once at creation time. */\n key: z.string(),\n});\nexport type CreateApiKeyResponse = z.infer<typeof CreateApiKeyResponse>;\n\n// ---- SAML / SSO --------------------------------------------------------------\n\nexport const SamlConfig = z\n .object({\n enabled: z.boolean(),\n connectionId: z.string().min(1).max(200).nullable(),\n issuer: z.string().min(1).max(500).nullable(),\n ssoUrl: z.string().url().nullable(),\n certificate: z.string().min(1).max(10000).nullable(),\n })\n .refine(\n (value) =>\n !value.enabled ||\n Boolean(value.connectionId && value.issuer && value.ssoUrl && value.certificate),\n {\n message: 'connectionId, issuer, ssoUrl, certificate required when SAML is enabled',\n },\n );\nexport type SamlConfig = z.infer<typeof SamlConfig>;\n\n// ---- quality / test evidence ------------------------------------------------\n\nexport const TestRunStatus = z.enum(['running', 'passed', 'failed', 'skipped', 'canceled']);\nexport type TestRunStatus = z.infer<typeof TestRunStatus>;\n\nexport const TestCaseStatus = z.enum([\n 'passed',\n 'failed',\n 'skipped',\n 'pending',\n 'undefined',\n 'unknown',\n]);\n\nexport const TestCaseResult = z.object({\n id: z.string().max(240).optional(),\n name: z.string().min(1).max(500),\n uri: z.string().max(1000).optional(),\n status: TestCaseStatus,\n durationMs: z.number().int().nonnegative().max(86_400_000),\n tags: z.array(z.string().max(120)).max(100).default([]),\n error: z.string().max(65_536).optional(),\n statementId: z.string().max(240).optional(),\n resourceUrl: z.string().url().max(4000).optional(),\n details: z.record(z.unknown()).optional(),\n});\nexport type TestCaseResult = z.infer<typeof TestCaseResult>;\n\nexport const TestRunSummary = z.object({\n total: z.number().int().nonnegative(),\n passed: z.number().int().nonnegative(),\n failed: z.number().int().nonnegative(),\n skipped: z.number().int().nonnegative(),\n pending: z.number().int().nonnegative().default(0),\n});\n\nexport const TestRunArtifact = z.object({\n name: z.string().min(1).max(240),\n url: z.string().url().max(4000),\n mediaType: z.string().max(240).optional(),\n});\n\nexport const CreateTestRunInput = z.object({\n externalId: z.string().min(1).max(300).optional(),\n source: z.enum(['bdd', 'live-suite', 'junit', 'cli', 'other']),\n suite: z.string().min(1).max(240),\n status: TestRunStatus,\n startedAt: z.string().datetime().nullable().optional(),\n finishedAt: z.string().datetime().nullable().optional(),\n durationMs: z.number().int().nonnegative().max(604_800_000).default(0),\n summary: TestRunSummary,\n environment: z.record(z.unknown()).default({}),\n revision: z.record(z.unknown()).default({}),\n cases: z.array(TestCaseResult).max(2000).default([]),\n artifacts: z.array(TestRunArtifact).max(100).default([]),\n});\nexport type CreateTestRunInput = z.infer<typeof CreateTestRunInput>;\n\nexport const TestRun = CreateTestRunInput.extend({\n id: z.string().uuid(),\n orgId: z.string(),\n createdBy: z.string(),\n createdAt: z.string().datetime(),\n updatedAt: z.string().datetime(),\n});\nexport type TestRun = z.infer<typeof TestRun>;\n\nexport const TestRunListInput = z.object({\n status: TestRunStatus.optional(),\n source: CreateTestRunInput.shape.source.optional(),\n suite: z.string().min(1).max(240).optional(),\n limit: z.coerce.number().int().min(1).max(200).optional(),\n offset: z.coerce.number().int().min(0).max(100_000).optional(),\n});\nexport const TestRunListResponse = z.object({\n runs: z.array(TestRun.omit({ cases: true })),\n});\n\n// ---- the registry ----------------------------------------------------------\n\nexport const endpoints = {\n 'tenants.me': {\n method: 'GET',\n path: '/v1/tenants/me',\n params: Empty,\n response: TenantSelf,\n mutates: false,\n requiresRole: null,\n },\n\n 'experiments.list': {\n method: 'GET',\n path: '/v1/orgs/:orgId/experiments',\n params: Empty,\n response: ExperimentListResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'experiments.create': {\n method: 'POST',\n path: '/v1/orgs/:orgId/experiments',\n params: CreateExperimentInput,\n response: CreateExperimentResponse,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'experiments.get': {\n method: 'GET',\n path: '/v1/orgs/:orgId/experiments/:experimentId',\n params: Empty,\n response: Experiment,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'experiments.invokeAction': {\n method: 'POST',\n path: '/v1/orgs/:orgId/experiments/actions',\n params: InvokeActionInput,\n response: InvokeActionResponse,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'experiments.aggregate': {\n method: 'GET',\n path: '/v1/orgs/:orgId/experiments/:experimentId/aggregate',\n params: AggregateInput,\n response: AggregateResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n\n 'projects.list': {\n method: 'GET',\n path: '/v1/orgs/:orgId/projects',\n params: Empty,\n response: ProjectListResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'projects.create': {\n method: 'POST',\n path: '/v1/orgs/:orgId/projects',\n params: CreateProjectInput,\n response: Project,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'properties.list': {\n method: 'GET',\n path: '/v1/orgs/:orgId/projects/:projectId/properties',\n params: Empty,\n response: PropertyListResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'properties.create': {\n method: 'POST',\n path: '/v1/orgs/:orgId/projects/:projectId/properties',\n params: CreatePropertyInput,\n response: Property,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'environments.list': {\n method: 'GET',\n path: '/v1/orgs/:orgId/projects/:projectId/environments',\n params: Empty,\n response: EnvironmentListResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'environments.create': {\n method: 'POST',\n path: '/v1/orgs/:orgId/projects/:projectId/environments',\n params: CreateEnvironmentInput,\n response: Environment,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'features.list': {\n method: 'GET',\n path: '/v1/orgs/:orgId/projects/:projectId/features',\n params: Empty,\n response: FeatureListResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'features.create': {\n method: 'POST',\n path: '/v1/orgs/:orgId/projects/:projectId/features',\n params: CreateFeatureInput,\n response: Feature,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'rules.list': {\n method: 'GET',\n path: '/v1/orgs/:orgId/features/:featureId/rules',\n params: Empty,\n response: FeatureRuleListResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'rules.create': {\n method: 'POST',\n path: '/v1/orgs/:orgId/features/:featureId/rules',\n params: CreateFeatureRuleInput,\n response: FeatureRule,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'environments.publish': {\n method: 'POST',\n path: '/v1/orgs/:orgId/environments/:environmentId/publish',\n params: Empty,\n response: EnvironmentPublication,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'environments.publications': {\n method: 'GET',\n path: '/v1/orgs/:orgId/environments/:environmentId/publications',\n params: Empty,\n response: PublicationListResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'environments.promote': {\n method: 'POST',\n path: '/v1/orgs/:orgId/environments/:environmentId/promote',\n params: PromoteEnvironmentInput,\n response: PromoteEnvironmentResponse,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'configuration.getPublished': {\n method: 'GET',\n path: '/v1/orgs/:orgId/environments/:environmentId/configuration',\n params: Empty,\n response: EnvironmentPublication,\n mutates: false,\n requiresRole: 'viewer',\n },\n\n 'manifests.publish': {\n method: 'POST',\n path: '/v1/orgs/:orgId/manifests/publish',\n params: Empty,\n response: PublishManifestResponse,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'manifests.getKeys': {\n method: 'GET',\n path: '/v1/orgs/:orgId/manifests/keys',\n params: Empty,\n response: ManifestKeysResponse,\n mutates: false,\n requiresRole: 'admin',\n },\n 'manifests.rotateKey': {\n method: 'POST',\n path: '/v1/orgs/:orgId/manifests/keys/rotate',\n params: z.object({ keyId: z.string().min(1).max(128) }),\n response: ManifestKey,\n mutates: true,\n requiresRole: 'admin',\n },\n 'manifests.retireKey': {\n method: 'POST',\n path: '/v1/orgs/:orgId/manifests/keys/retire',\n params: z.object({ keyId: z.string() }),\n response: ManifestKey,\n mutates: true,\n requiresRole: 'admin',\n },\n\n 'preview.sign': {\n method: 'POST',\n path: '/v1/orgs/:orgId/preview/sign',\n params: PreviewSignInput,\n response: PreviewSignResponse,\n mutates: true,\n requiresRole: 'experimenter',\n },\n\n 'audit.list': {\n method: 'GET',\n path: '/v1/orgs/:orgId/audit',\n params: Empty,\n response: AuditListResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'governance.get': {\n method: 'GET',\n path: '/v1/orgs/:orgId/governance',\n params: Empty,\n response: GovernanceStatusResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'governance.update': {\n method: 'POST',\n path: '/v1/orgs/:orgId/governance',\n params: UpdateGovernanceSettingsInput,\n response: GovernanceStatusResponse,\n mutates: true,\n requiresRole: 'admin',\n },\n 'audit.exports.list': {\n method: 'GET',\n path: '/v1/orgs/:orgId/audit/exports',\n params: Empty,\n response: AuditExportListResponse,\n mutates: false,\n requiresRole: 'admin',\n },\n 'audit.exports.create': {\n method: 'POST',\n path: '/v1/orgs/:orgId/audit/exports',\n params: CreateAuditExportInput,\n response: AuditExport,\n mutates: true,\n requiresRole: 'admin',\n },\n 'audit.exports.delete': {\n method: 'DELETE',\n path: '/v1/orgs/:orgId/audit/exports/:exportId',\n params: Empty,\n response: z.object({ ok: z.literal(true) }),\n mutates: true,\n requiresRole: 'admin',\n },\n\n 'apiKeys.list': {\n method: 'GET',\n path: '/v1/orgs/:orgId/api-keys',\n params: Empty,\n response: ApiKeyListResponse,\n mutates: false,\n requiresRole: 'admin',\n },\n 'apiKeys.create': {\n method: 'POST',\n path: '/v1/orgs/:orgId/api-keys',\n params: CreateApiKeyInput,\n response: CreateApiKeyResponse,\n mutates: true,\n requiresRole: 'admin',\n },\n 'apiKeys.revoke': {\n method: 'DELETE',\n path: '/v1/orgs/:orgId/api-keys/:keyId',\n params: Empty,\n response: z.object({ ok: z.literal(true) }),\n mutates: true,\n requiresRole: 'admin',\n },\n\n 'saml.get': {\n method: 'GET',\n path: '/v1/orgs/:orgId/saml',\n params: Empty,\n response: SamlConfig,\n mutates: false,\n requiresRole: 'owner',\n },\n 'saml.update': {\n method: 'POST',\n path: '/v1/orgs/:orgId/saml',\n params: SamlConfig,\n response: SamlConfig,\n mutates: true,\n requiresRole: 'owner',\n },\n\n 'testRuns.list': {\n method: 'GET',\n path: '/v1/orgs/:orgId/test-runs',\n params: TestRunListInput,\n response: TestRunListResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'testRuns.create': {\n method: 'POST',\n path: '/v1/orgs/:orgId/test-runs',\n params: CreateTestRunInput,\n response: TestRun,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'testRuns.get': {\n method: 'GET',\n path: '/v1/orgs/:orgId/test-runs/:runId',\n params: Empty,\n response: TestRun,\n mutates: false,\n requiresRole: 'viewer',\n },\n} satisfies Record<string, EndpointDef>;\n\nexport type EndpointName = keyof typeof endpoints;\nexport type EndpointParams<E extends EndpointName> = z.infer<(typeof endpoints)[E]['params']>;\nexport type EndpointResponse<E extends EndpointName> = z.infer<(typeof endpoints)[E]['response']>;\n\n/** Substitute path parameters in a path template. */\nexport function buildPath(template: string, pathParams: Record<string, string>): string {\n return template.replace(/:([a-zA-Z][a-zA-Z0-9_]*)/g, (_, name) => {\n const v = pathParams[name];\n if (v == null) throw new Error(`Missing path parameter: ${name}`);\n return encodeURIComponent(v);\n });\n}\n","import { z } from 'zod';\n\nexport const ApiError = z.object({\n code: z.enum([\n 'UNAUTHENTICATED',\n 'FORBIDDEN',\n 'NOT_FOUND',\n 'VALIDATION_FAILED',\n 'CONFLICT',\n 'RATE_LIMITED',\n 'INTERNAL',\n ]),\n message: z.string(),\n details: z.record(z.unknown()).optional(),\n});\nexport type ApiError = z.infer<typeof ApiError>;\n"]}
1
+ {"version":3,"sources":["../src/endpoints.ts","../src/errors.ts"],"names":["z"],"mappings":"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","file":"index.js","sourcesContent":["import {\n ActionId,\n CreateEnvironmentInput,\n CreateFeatureInput,\n CreateFeatureRuleInput,\n CreateProjectInput,\n CreatePropertyInput,\n Environment,\n EnvironmentPublication,\n Experiment,\n ExperimentId,\n ExperimentSpec,\n ExperimentSpecBase,\n ExperimentState,\n Feature,\n FeatureRule,\n Project,\n Property,\n} from '@fabricorg/experiments-domain';\nimport { z } from 'zod';\n\n/**\n * Each endpoint declares method, path template, request schema, and response\n * schema. The server registers handlers against this table; the api-client\n * derives its method signatures from it. Drift between client and server is\n * impossible by construction.\n */\n\nexport interface EndpointDef<\n TParams extends z.ZodTypeAny = z.ZodTypeAny,\n TResponse extends z.ZodTypeAny = z.ZodTypeAny,\n> {\n method: 'GET' | 'POST' | 'DELETE';\n /** Path with `:param` placeholders, e.g. `/v1/orgs/:orgId/experiments`. */\n path: string;\n /** Request schema. For GET, used to validate query params; otherwise body. */\n params: TParams;\n response: TResponse;\n /** True if this endpoint mutates state — server applies idempotency cache. */\n mutates: boolean;\n /** Required role on the active org. `null` = any authenticated session. */\n requiresRole: 'owner' | 'admin' | 'experimenter' | 'viewer' | null;\n}\n\nconst Empty = z.object({});\n\n// ---- tenants ----------------------------------------------------------------\n\nexport const TenantSelf = z.object({\n organization: z.object({\n id: z.string(),\n name: z.string(),\n slug: z.string(),\n createdAt: z.string().datetime(),\n }),\n member: z.object({\n role: z.enum(['owner', 'admin', 'experimenter', 'viewer']),\n }),\n user: z.object({\n id: z.string(),\n email: z.string().email(),\n name: z.string().nullable(),\n }),\n});\nexport type TenantSelf = z.infer<typeof TenantSelf>;\n\n// ---- workspace hierarchy ---------------------------------------------------\n\nexport const ProjectListResponse = z.object({ projects: z.array(Project) });\nexport const PropertyListResponse = z.object({ properties: z.array(Property) });\nexport const EnvironmentListResponse = z.object({ environments: z.array(Environment) });\nexport const FeatureListResponse = z.object({ features: z.array(Feature) });\nexport const FeatureRuleListResponse = z.object({ rules: z.array(FeatureRule) });\nexport const PublicationListResponse = z.object({ publications: z.array(EnvironmentPublication) });\nexport const PromoteEnvironmentInput = z.object({ sourceEnvironmentId: z.string().uuid() });\nexport const PromoteEnvironmentResponse = z.object({\n sourceEnvironmentId: z.string().uuid(),\n sourceVersion: z.number().int().positive(),\n targetEnvironmentId: z.string().uuid(),\n promotedRuleCount: z.number().int().nonnegative(),\n});\n\n// ---- experiments ------------------------------------------------------------\n\nexport const ExperimentSummary = z.object({\n id: Experiment.shape.id,\n name: Experiment.shape.name,\n state: ExperimentState,\n updatedAt: z.string().datetime(),\n});\nexport type ExperimentSummary = z.infer<typeof ExperimentSummary>;\n\nexport const ExperimentListResponse = z.object({\n experiments: z.array(ExperimentSummary),\n});\nexport type ExperimentListResponse = z.infer<typeof ExperimentListResponse>;\n\nexport const CreateExperimentInput = ExperimentSpecBase;\nexport type CreateExperimentInput = z.infer<typeof CreateExperimentInput>;\n\nexport const CreateExperimentResponse = z.object({\n experimentId: ExperimentId,\n idempotent: z.boolean().optional(),\n});\nexport type CreateExperimentResponse = z.infer<typeof CreateExperimentResponse>;\n\n/**\n * Aggregate row per variant for a given metric over an optional time window.\n * Sourced from the warehouse adapter (Databricks in prod, Local in dev).\n */\nexport const AggregateRow = z.object({\n variantKey: z.string(),\n exposureCount: z.number().int().nonnegative(),\n conversionCount: z.number().int().nonnegative(),\n conversionSum: z.number(),\n failureCount: z.number().int().nonnegative().default(0),\n});\nexport type AggregateRow = z.infer<typeof AggregateRow>;\n\nexport const AggregateInput = z.object({\n metric: z.string().min(1).max(120),\n fromIso: z.string().datetime().optional(),\n untilIso: z.string().datetime().optional(),\n segmentKey: z\n .string()\n .min(1)\n .max(80)\n .regex(/^[A-Za-z0-9_.-]+$/)\n .optional(),\n prePeriodDays: z.coerce.number().int().min(1).max(365).optional(),\n});\nexport type AggregateInput = z.infer<typeof AggregateInput>;\n\nexport const AggregateResponse = z.object({\n experimentId: ExperimentId,\n metric: z.string(),\n rows: z.array(AggregateRow),\n /** ISO datetime — when this aggregate was computed. SDKs may cache by this. */\n computedAt: z.string().datetime(),\n analytics: z\n .object({\n variants: z.array(\n z.object({\n variantKey: z.string(),\n exposedSubjects: z.number().int().nonnegative(),\n convertedSubjects: z.number().int().nonnegative(),\n meanTimeToConvertMs: z.number().nonnegative().nullable(),\n medianTimeToConvertMs: z.number().nonnegative().nullable(),\n p90TimeToConvertMs: z.number().nonnegative().nullable(),\n meanConversionDepth: z.number().nonnegative(),\n conversionDepth: z.object({\n oneOrMore: z.number().int().nonnegative(),\n twoOrMore: z.number().int().nonnegative(),\n threeOrMore: z.number().int().nonnegative(),\n }),\n cupedAdjustedRate: z.number().nullable(),\n cupedLift: z.number().nullable(),\n }),\n ),\n segments: z.array(\n z.object({\n segmentValue: z.string(),\n variantKey: z.string(),\n exposureCount: z.number().int().nonnegative(),\n conversionCount: z.number().int().nonnegative(),\n conversionRate: z.number().min(0).max(1),\n }),\n ),\n segmentKey: z.string().optional(),\n cuped: z.object({\n available: z.boolean(),\n prePeriodDays: z.number().int().positive(),\n theta: z.number().nullable(),\n varianceReduction: z.number().nullable(),\n }),\n })\n .optional(),\n});\nexport type AggregateResponse = z.infer<typeof AggregateResponse>;\n\nexport const InvokeActionInput = z.object({\n actionId: ActionId,\n params: z.record(z.unknown()),\n /** Optional client-supplied idempotency key. */\n idempotencyKey: z.string().min(8).max(128).optional(),\n});\nexport type InvokeActionInput = z.infer<typeof InvokeActionInput>;\n\nexport const InvokeActionResponse = z.object({\n success: z.boolean(),\n data: z.record(z.unknown()).optional(),\n error: z.string().optional(),\n});\nexport type InvokeActionResponse = z.infer<typeof InvokeActionResponse>;\n\n// ---- manifests --------------------------------------------------------------\n\n/** Result of pushing the signed manifest to the Cloudflare manifest-worker. */\nexport const EdgePushResult = z.object({\n pushed: z.boolean(),\n reason: z.string().optional(),\n status: z.number().int().optional(),\n});\nexport type EdgePushResult = z.infer<typeof EdgePushResult>;\n\nexport const PublishManifestResponse = z.object({\n manifestVersion: z.number().int().nonnegative(),\n contentHash: z.string().regex(/^[0-9a-f]{64}$/),\n experimentCount: z.number().int().nonnegative(),\n /** Edge push status. `pushed: false` with `reason: 'unconfigured'` is normal in local dev. */\n edgePush: EdgePushResult,\n});\nexport type PublishManifestResponse = z.infer<typeof PublishManifestResponse>;\n\nexport const ManifestKey = z.object({\n keyId: z.string(),\n publicKeyHex: z.string().regex(/^[0-9a-f]+$/),\n status: z.enum(['active', 'retiring', 'retired']),\n createdAt: z.string().datetime(),\n retiredAt: z.string().datetime().nullable(),\n});\nexport type ManifestKey = z.infer<typeof ManifestKey>;\n\nexport const ManifestKeysResponse = z.object({ keys: z.array(ManifestKey) });\nexport type ManifestKeysResponse = z.infer<typeof ManifestKeysResponse>;\n\n// ---- preview tokens ---------------------------------------------------------\n\nexport const PreviewSignInput = z.object({\n experimentId: ExperimentId,\n variantKey: z.string().min(1).max(32),\n /** Token TTL in seconds. Clamped server-side to [60, 3600]; default 900. */\n ttlSeconds: z.number().int().min(60).max(3600).optional(),\n});\nexport type PreviewSignInput = z.infer<typeof PreviewSignInput>;\n\nexport const PreviewSignResponse = z.object({\n token: z.string(),\n /** ISO datetime when the token expires. */\n expiresAt: z.string().datetime(),\n /** ID of the public JWKS key used to sign — exposed for debugging only. */\n keyId: z.string(),\n /** Unique JWT id for audit/debugging and future replay controls. */\n jti: z.string(),\n});\nexport type PreviewSignResponse = z.infer<typeof PreviewSignResponse>;\n\n// ---- audit ------------------------------------------------------------------\n\nexport const AuditEvent = z.object({\n id: z.string(),\n type: z.string(),\n experimentId: z.string(),\n actorId: z.string(),\n at: z.string().datetime(),\n payload: z.record(z.unknown()),\n});\nexport type AuditEvent = z.infer<typeof AuditEvent>;\n\nexport const AuditListResponse = z.object({ events: z.array(AuditEvent) });\nexport type AuditListResponse = z.infer<typeof AuditListResponse>;\n\n// ---- enterprise governance -------------------------------------------------\n\nexport const GovernanceSettings = z.object({\n requireQualityForProduction: z.boolean(),\n requiredQualitySuites: z.array(z.string().min(1).max(240)).max(50),\n qualityMaxAgeHours: z.number().int().min(1).max(8760),\n retentionDays: z.number().int().min(30).max(3650),\n legalHold: z.boolean(),\n updatedBy: z.string().nullable(),\n updatedAt: z.string().datetime().nullable(),\n});\nexport type GovernanceSettings = z.infer<typeof GovernanceSettings>;\n\nexport const UpdateGovernanceSettingsInput = GovernanceSettings.pick({\n requireQualityForProduction: true,\n requiredQualitySuites: true,\n qualityMaxAgeHours: true,\n retentionDays: true,\n legalHold: true,\n});\nexport type UpdateGovernanceSettingsInput = z.infer<typeof UpdateGovernanceSettingsInput>;\n\nexport const QualityGateResult = z.object({\n enabled: z.boolean(),\n passed: z.boolean(),\n checks: z.array(\n z.object({\n suite: z.string(),\n passed: z.boolean(),\n reason: z.string(),\n runId: z.string().nullable(),\n finishedAt: z.string().datetime().nullable(),\n }),\n ),\n});\nexport type QualityGateResult = z.infer<typeof QualityGateResult>;\n\nexport const GovernanceStatusResponse = z.object({\n settings: GovernanceSettings,\n qualityGate: QualityGateResult,\n});\n\nexport const AuditExport = z.object({\n id: z.string(),\n destinationKind: z.enum(['s3', 'r2', 'splunk-hec']),\n status: z.enum(['active', 'paused', 'failed']),\n lastCursorAt: z.string().datetime().nullable(),\n});\nexport const AuditExportListResponse = z.object({ exports: z.array(AuditExport) });\n\nexport const CreateAuditExportInput = z.object({\n destinationKind: z.enum(['s3', 'r2', 'splunk-hec']),\n /** Free-form config; encrypted at rest. Schema enforced by destination kind. */\n config: z.record(z.unknown()),\n});\n\n// ---- api keys ---------------------------------------------------------------\n\nexport const ApiKeySummary = z.object({\n id: z.string(),\n name: z.string(),\n prefix: z.string(),\n role: z.enum(['owner', 'admin', 'experimenter', 'viewer']),\n scopes: z.array(z.enum(['read', 'write', 'admin'])),\n createdAt: z.string().datetime(),\n lastUsedAt: z.string().datetime().nullable(),\n expiresAt: z.string().datetime().nullable(),\n});\nexport const ApiKeyListResponse = z.object({ keys: z.array(ApiKeySummary) });\n\nexport const CreateApiKeyInput = z.object({\n name: z.string().min(1).max(120),\n /** ISO datetime of expiry; null for non-expiring (not recommended in prod). */\n expiresAt: z.string().datetime().nullable(),\n /** Role assigned to the key. Defaults to the creator's role. */\n role: z.enum(['owner', 'admin', 'experimenter', 'viewer']).optional(),\n /** Permission scopes assigned to the key. Defaults are derived from role. */\n scopes: z.array(z.enum(['read', 'write', 'admin'])).optional(),\n});\nexport type CreateApiKeyInput = z.infer<typeof CreateApiKeyInput>;\n\nexport const CreateApiKeyResponse = ApiKeySummary.extend({\n /** Plaintext key, returned exactly once at creation time. */\n key: z.string(),\n});\nexport type CreateApiKeyResponse = z.infer<typeof CreateApiKeyResponse>;\n\n// ---- SAML / SSO --------------------------------------------------------------\n\nexport const SamlConfig = z\n .object({\n enabled: z.boolean(),\n connectionId: z.string().min(1).max(200).nullable(),\n issuer: z.string().min(1).max(500).nullable(),\n ssoUrl: z.string().url().nullable(),\n certificate: z.string().min(1).max(10000).nullable(),\n })\n .refine(\n (value) =>\n !value.enabled ||\n Boolean(value.connectionId && value.issuer && value.ssoUrl && value.certificate),\n {\n message: 'connectionId, issuer, ssoUrl, certificate required when SAML is enabled',\n },\n );\nexport type SamlConfig = z.infer<typeof SamlConfig>;\n\n// ---- quality / test evidence ------------------------------------------------\n\nexport const TestRunStatus = z.enum(['running', 'passed', 'failed', 'skipped', 'canceled']);\nexport type TestRunStatus = z.infer<typeof TestRunStatus>;\n\nexport const TestCaseStatus = z.enum([\n 'passed',\n 'failed',\n 'skipped',\n 'pending',\n 'undefined',\n 'unknown',\n]);\n\nexport const TestCaseResult = z.object({\n id: z.string().max(240).optional(),\n name: z.string().min(1).max(500),\n uri: z.string().max(1000).optional(),\n status: TestCaseStatus,\n durationMs: z.number().int().nonnegative().max(86_400_000),\n tags: z.array(z.string().max(120)).max(100).default([]),\n error: z.string().max(65_536).optional(),\n statementId: z.string().max(240).optional(),\n resourceUrl: z.string().url().max(4000).optional(),\n details: z.record(z.unknown()).optional(),\n});\nexport type TestCaseResult = z.infer<typeof TestCaseResult>;\n\nexport const TestRunSummary = z.object({\n total: z.number().int().nonnegative(),\n passed: z.number().int().nonnegative(),\n failed: z.number().int().nonnegative(),\n skipped: z.number().int().nonnegative(),\n pending: z.number().int().nonnegative().default(0),\n});\n\nexport const TestRunArtifact = z.object({\n name: z.string().min(1).max(240),\n url: z.string().url().max(4000),\n mediaType: z.string().max(240).optional(),\n});\n\nexport const CreateTestRunInput = z.object({\n externalId: z.string().min(1).max(300).optional(),\n source: z.enum(['bdd', 'live-suite', 'junit', 'cli', 'other']),\n suite: z.string().min(1).max(240),\n status: TestRunStatus,\n startedAt: z.string().datetime().nullable().optional(),\n finishedAt: z.string().datetime().nullable().optional(),\n durationMs: z.number().int().nonnegative().max(604_800_000).default(0),\n summary: TestRunSummary,\n environment: z.record(z.unknown()).default({}),\n revision: z.record(z.unknown()).default({}),\n cases: z.array(TestCaseResult).max(2000).default([]),\n artifacts: z.array(TestRunArtifact).max(100).default([]),\n});\nexport type CreateTestRunInput = z.infer<typeof CreateTestRunInput>;\n\nexport const TestRun = CreateTestRunInput.extend({\n id: z.string().uuid(),\n orgId: z.string(),\n createdBy: z.string(),\n createdAt: z.string().datetime(),\n updatedAt: z.string().datetime(),\n});\nexport type TestRun = z.infer<typeof TestRun>;\n\nexport const TestRunListInput = z.object({\n status: TestRunStatus.optional(),\n source: CreateTestRunInput.shape.source.optional(),\n suite: z.string().min(1).max(240).optional(),\n targetPack: z\n .string()\n .min(1)\n .max(120)\n .regex(/^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/)\n .optional(),\n limit: z.coerce.number().int().min(1).max(200).optional(),\n offset: z.coerce.number().int().min(0).max(100_000).optional(),\n});\nexport const TestRunListResponse = z.object({\n runs: z.array(TestRun.omit({ cases: true })),\n});\n\n// ---- Harness operator surface ---------------------------------------------\n\nexport const HarnessOperatorDefinition = z.object({\n name: z.enum(['quality-status', 'srm-watcher', 'analyst']),\n kind: z.literal('job'),\n description: z.string(),\n mutates: z.boolean(),\n});\nexport type HarnessOperatorDefinition = z.infer<typeof HarnessOperatorDefinition>;\n\nexport const HarnessOperatorListResponse = z.array(HarnessOperatorDefinition);\nexport const HarnessJobInput = z.record(z.unknown()).default({});\nexport const HarnessJobResponse = z.record(z.unknown());\n\n// ---- the registry ----------------------------------------------------------\n\nexport const endpoints = {\n 'tenants.me': {\n method: 'GET',\n path: '/v1/tenants/me',\n params: Empty,\n response: TenantSelf,\n mutates: false,\n requiresRole: null,\n },\n\n 'experiments.list': {\n method: 'GET',\n path: '/v1/orgs/:orgId/experiments',\n params: Empty,\n response: ExperimentListResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'experiments.create': {\n method: 'POST',\n path: '/v1/orgs/:orgId/experiments',\n params: CreateExperimentInput,\n response: CreateExperimentResponse,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'experiments.get': {\n method: 'GET',\n path: '/v1/orgs/:orgId/experiments/:experimentId',\n params: Empty,\n response: Experiment,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'experiments.invokeAction': {\n method: 'POST',\n path: '/v1/orgs/:orgId/experiments/actions',\n params: InvokeActionInput,\n response: InvokeActionResponse,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'experiments.aggregate': {\n method: 'GET',\n path: '/v1/orgs/:orgId/experiments/:experimentId/aggregate',\n params: AggregateInput,\n response: AggregateResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n\n 'projects.list': {\n method: 'GET',\n path: '/v1/orgs/:orgId/projects',\n params: Empty,\n response: ProjectListResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'projects.create': {\n method: 'POST',\n path: '/v1/orgs/:orgId/projects',\n params: CreateProjectInput,\n response: Project,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'properties.list': {\n method: 'GET',\n path: '/v1/orgs/:orgId/projects/:projectId/properties',\n params: Empty,\n response: PropertyListResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'properties.create': {\n method: 'POST',\n path: '/v1/orgs/:orgId/projects/:projectId/properties',\n params: CreatePropertyInput,\n response: Property,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'environments.list': {\n method: 'GET',\n path: '/v1/orgs/:orgId/projects/:projectId/environments',\n params: Empty,\n response: EnvironmentListResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'environments.create': {\n method: 'POST',\n path: '/v1/orgs/:orgId/projects/:projectId/environments',\n params: CreateEnvironmentInput,\n response: Environment,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'features.list': {\n method: 'GET',\n path: '/v1/orgs/:orgId/projects/:projectId/features',\n params: Empty,\n response: FeatureListResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'features.create': {\n method: 'POST',\n path: '/v1/orgs/:orgId/projects/:projectId/features',\n params: CreateFeatureInput,\n response: Feature,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'rules.list': {\n method: 'GET',\n path: '/v1/orgs/:orgId/features/:featureId/rules',\n params: Empty,\n response: FeatureRuleListResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'rules.create': {\n method: 'POST',\n path: '/v1/orgs/:orgId/features/:featureId/rules',\n params: CreateFeatureRuleInput,\n response: FeatureRule,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'environments.publish': {\n method: 'POST',\n path: '/v1/orgs/:orgId/environments/:environmentId/publish',\n params: Empty,\n response: EnvironmentPublication,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'environments.publications': {\n method: 'GET',\n path: '/v1/orgs/:orgId/environments/:environmentId/publications',\n params: Empty,\n response: PublicationListResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'environments.promote': {\n method: 'POST',\n path: '/v1/orgs/:orgId/environments/:environmentId/promote',\n params: PromoteEnvironmentInput,\n response: PromoteEnvironmentResponse,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'configuration.getPublished': {\n method: 'GET',\n path: '/v1/orgs/:orgId/environments/:environmentId/configuration',\n params: Empty,\n response: EnvironmentPublication,\n mutates: false,\n requiresRole: 'viewer',\n },\n\n 'manifests.publish': {\n method: 'POST',\n path: '/v1/orgs/:orgId/manifests/publish',\n params: Empty,\n response: PublishManifestResponse,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'manifests.getKeys': {\n method: 'GET',\n path: '/v1/orgs/:orgId/manifests/keys',\n params: Empty,\n response: ManifestKeysResponse,\n mutates: false,\n requiresRole: 'admin',\n },\n 'manifests.rotateKey': {\n method: 'POST',\n path: '/v1/orgs/:orgId/manifests/keys/rotate',\n params: z.object({ keyId: z.string().min(1).max(128) }),\n response: ManifestKey,\n mutates: true,\n requiresRole: 'admin',\n },\n 'manifests.retireKey': {\n method: 'POST',\n path: '/v1/orgs/:orgId/manifests/keys/retire',\n params: z.object({ keyId: z.string() }),\n response: ManifestKey,\n mutates: true,\n requiresRole: 'admin',\n },\n\n 'preview.sign': {\n method: 'POST',\n path: '/v1/orgs/:orgId/preview/sign',\n params: PreviewSignInput,\n response: PreviewSignResponse,\n mutates: true,\n requiresRole: 'experimenter',\n },\n\n 'audit.list': {\n method: 'GET',\n path: '/v1/orgs/:orgId/audit',\n params: Empty,\n response: AuditListResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'governance.get': {\n method: 'GET',\n path: '/v1/orgs/:orgId/governance',\n params: Empty,\n response: GovernanceStatusResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'governance.update': {\n method: 'POST',\n path: '/v1/orgs/:orgId/governance',\n params: UpdateGovernanceSettingsInput,\n response: GovernanceStatusResponse,\n mutates: true,\n requiresRole: 'admin',\n },\n 'audit.exports.list': {\n method: 'GET',\n path: '/v1/orgs/:orgId/audit/exports',\n params: Empty,\n response: AuditExportListResponse,\n mutates: false,\n requiresRole: 'admin',\n },\n 'audit.exports.create': {\n method: 'POST',\n path: '/v1/orgs/:orgId/audit/exports',\n params: CreateAuditExportInput,\n response: AuditExport,\n mutates: true,\n requiresRole: 'admin',\n },\n 'audit.exports.delete': {\n method: 'DELETE',\n path: '/v1/orgs/:orgId/audit/exports/:exportId',\n params: Empty,\n response: z.object({ ok: z.literal(true) }),\n mutates: true,\n requiresRole: 'admin',\n },\n\n 'apiKeys.list': {\n method: 'GET',\n path: '/v1/orgs/:orgId/api-keys',\n params: Empty,\n response: ApiKeyListResponse,\n mutates: false,\n requiresRole: 'admin',\n },\n 'apiKeys.create': {\n method: 'POST',\n path: '/v1/orgs/:orgId/api-keys',\n params: CreateApiKeyInput,\n response: CreateApiKeyResponse,\n mutates: true,\n requiresRole: 'admin',\n },\n 'apiKeys.revoke': {\n method: 'DELETE',\n path: '/v1/orgs/:orgId/api-keys/:keyId',\n params: Empty,\n response: z.object({ ok: z.literal(true) }),\n mutates: true,\n requiresRole: 'admin',\n },\n\n 'saml.get': {\n method: 'GET',\n path: '/v1/orgs/:orgId/saml',\n params: Empty,\n response: SamlConfig,\n mutates: false,\n requiresRole: 'owner',\n },\n 'saml.update': {\n method: 'POST',\n path: '/v1/orgs/:orgId/saml',\n params: SamlConfig,\n response: SamlConfig,\n mutates: true,\n requiresRole: 'owner',\n },\n\n 'testRuns.list': {\n method: 'GET',\n path: '/v1/orgs/:orgId/test-runs',\n params: TestRunListInput,\n response: TestRunListResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'testRuns.create': {\n method: 'POST',\n path: '/v1/orgs/:orgId/test-runs',\n params: CreateTestRunInput,\n response: TestRun,\n mutates: true,\n requiresRole: 'experimenter',\n },\n 'testRuns.get': {\n method: 'GET',\n path: '/v1/orgs/:orgId/test-runs/:runId',\n params: Empty,\n response: TestRun,\n mutates: false,\n requiresRole: 'viewer',\n },\n\n 'harness.definitions': {\n method: 'GET',\n path: '/v1/orgs/:orgId/harness/admin/agents',\n params: Empty,\n response: HarnessOperatorListResponse,\n mutates: false,\n requiresRole: 'viewer',\n },\n 'harness.invokeJob': {\n method: 'POST',\n path: '/v1/orgs/:orgId/harness/jobs/:jobName',\n params: HarnessJobInput,\n response: HarnessJobResponse,\n mutates: true,\n requiresRole: 'experimenter',\n },\n} satisfies Record<string, EndpointDef>;\n\nexport type EndpointName = keyof typeof endpoints;\nexport type EndpointParams<E extends EndpointName> = z.infer<(typeof endpoints)[E]['params']>;\nexport type EndpointResponse<E extends EndpointName> = z.infer<(typeof endpoints)[E]['response']>;\n\n/** Substitute path parameters in a path template. */\nexport function buildPath(template: string, pathParams: Record<string, string>): string {\n return template.replace(/:([a-zA-Z][a-zA-Z0-9_]*)/g, (_, name) => {\n const v = pathParams[name];\n if (v == null) throw new Error(`Missing path parameter: ${name}`);\n return encodeURIComponent(v);\n });\n}\n","import { z } from 'zod';\n\nexport const ApiError = z.object({\n code: z.enum([\n 'UNAUTHENTICATED',\n 'FORBIDDEN',\n 'NOT_FOUND',\n 'VALIDATION_FAILED',\n 'CONFLICT',\n 'RATE_LIMITED',\n 'INTERNAL',\n ]),\n message: z.string(),\n details: z.record(z.unknown()).optional(),\n});\nexport type ApiError = z.infer<typeof ApiError>;\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fabricorg/experiments-api-protocol",
3
- "version": "0.1.4",
3
+ "version": "0.1.6",
4
4
  "description": "Zod endpoint registry shared by the hosted API server and api-client.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -34,6 +34,6 @@
34
34
  "devDependencies": {
35
35
  "tsup": "^8.3.5",
36
36
  "typescript": "^5.8.3",
37
- "vitest": "^2.1.8"
37
+ "vitest": "^3.2.7"
38
38
  }
39
39
  }