@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 +30 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +73 -1
- package/dist/index.d.ts +73 -1
- package/dist/index.js +27 -1
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
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;
|
package/dist/index.cjs.map
CHANGED
|
@@ -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.
|
|
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.
|
|
37
|
+
"vitest": "^3.2.7"
|
|
38
38
|
}
|
|
39
39
|
}
|