@kb-labs/gateway-contracts 2.96.0 → 2.100.0

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.d.ts CHANGED
@@ -386,12 +386,19 @@ declare const AuthConfigSchema: z.ZodObject<{
386
386
  tenantId: z.ZodString;
387
387
  /** Admin email — also readable from env GATEWAY_BOOTSTRAP_ADMIN_EMAIL. */
388
388
  adminEmail: z.ZodOptional<z.ZodString>;
389
+ /**
390
+ * When true, the gateway mints a bootstrap CLI machine credential on first
391
+ * start and writes it to ~/.kb/credentials.json (kb-create --yes flow, #271).
392
+ */
393
+ provisionCliCredentials: z.ZodOptional<z.ZodBoolean>;
389
394
  }, "strip", z.ZodTypeAny, {
390
395
  tenantId: string;
391
396
  adminEmail?: string | undefined;
397
+ provisionCliCredentials?: boolean | undefined;
392
398
  }, {
393
399
  tenantId: string;
394
400
  adminEmail?: string | undefined;
401
+ provisionCliCredentials?: boolean | undefined;
395
402
  }>>;
396
403
  /**
397
404
  * Identity providers to load, keyed by instance id (ADR-0020 DD-4).
@@ -430,6 +437,7 @@ declare const AuthConfigSchema: z.ZodObject<{
430
437
  bootstrap?: {
431
438
  tenantId: string;
432
439
  adminEmail?: string | undefined;
440
+ provisionCliCredentials?: boolean | undefined;
433
441
  } | undefined;
434
442
  providers?: Record<string, z.objectOutputType<{
435
443
  type: z.ZodString;
@@ -455,6 +463,7 @@ declare const AuthConfigSchema: z.ZodObject<{
455
463
  bootstrap?: {
456
464
  tenantId: string;
457
465
  adminEmail?: string | undefined;
466
+ provisionCliCredentials?: boolean | undefined;
458
467
  } | undefined;
459
468
  providers?: Record<string, z.objectInputType<{
460
469
  type: z.ZodString;
@@ -755,12 +764,19 @@ declare const GatewayConfigSchema: z.ZodObject<{
755
764
  tenantId: z.ZodString;
756
765
  /** Admin email — also readable from env GATEWAY_BOOTSTRAP_ADMIN_EMAIL. */
757
766
  adminEmail: z.ZodOptional<z.ZodString>;
767
+ /**
768
+ * When true, the gateway mints a bootstrap CLI machine credential on first
769
+ * start and writes it to ~/.kb/credentials.json (kb-create --yes flow, #271).
770
+ */
771
+ provisionCliCredentials: z.ZodOptional<z.ZodBoolean>;
758
772
  }, "strip", z.ZodTypeAny, {
759
773
  tenantId: string;
760
774
  adminEmail?: string | undefined;
775
+ provisionCliCredentials?: boolean | undefined;
761
776
  }, {
762
777
  tenantId: string;
763
778
  adminEmail?: string | undefined;
779
+ provisionCliCredentials?: boolean | undefined;
764
780
  }>>;
765
781
  /**
766
782
  * Identity providers to load, keyed by instance id (ADR-0020 DD-4).
@@ -799,6 +815,7 @@ declare const GatewayConfigSchema: z.ZodObject<{
799
815
  bootstrap?: {
800
816
  tenantId: string;
801
817
  adminEmail?: string | undefined;
818
+ provisionCliCredentials?: boolean | undefined;
802
819
  } | undefined;
803
820
  providers?: Record<string, z.objectOutputType<{
804
821
  type: z.ZodString;
@@ -824,6 +841,7 @@ declare const GatewayConfigSchema: z.ZodObject<{
824
841
  bootstrap?: {
825
842
  tenantId: string;
826
843
  adminEmail?: string | undefined;
844
+ provisionCliCredentials?: boolean | undefined;
827
845
  } | undefined;
828
846
  providers?: Record<string, z.objectInputType<{
829
847
  type: z.ZodString;
@@ -909,6 +927,7 @@ declare const GatewayConfigSchema: z.ZodObject<{
909
927
  bootstrap?: {
910
928
  tenantId: string;
911
929
  adminEmail?: string | undefined;
930
+ provisionCliCredentials?: boolean | undefined;
912
931
  } | undefined;
913
932
  providers?: Record<string, z.objectOutputType<{
914
933
  type: z.ZodString;
@@ -985,6 +1004,7 @@ declare const GatewayConfigSchema: z.ZodObject<{
985
1004
  bootstrap?: {
986
1005
  tenantId: string;
987
1006
  adminEmail?: string | undefined;
1007
+ provisionCliCredentials?: boolean | undefined;
988
1008
  } | undefined;
989
1009
  providers?: Record<string, z.objectInputType<{
990
1010
  type: z.ZodString;
package/dist/index.js CHANGED
@@ -67,7 +67,12 @@ var AuthBootstrapSchema = z.object({
67
67
  /** Tenant ID for the bootstrap admin account (used in subdomain routing). */
68
68
  tenantId: z.string().min(1),
69
69
  /** Admin email — also readable from env GATEWAY_BOOTSTRAP_ADMIN_EMAIL. */
70
- adminEmail: z.string().email().optional()
70
+ adminEmail: z.string().email().optional(),
71
+ /**
72
+ * When true, the gateway mints a bootstrap CLI machine credential on first
73
+ * start and writes it to ~/.kb/credentials.json (kb-create --yes flow, #271).
74
+ */
75
+ provisionCliCredentials: z.boolean().optional()
71
76
  }).optional();
72
77
  var AuthConfigSchema = z.object({
73
78
  /**
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/config.ts","../src/protocol.ts","../src/host.ts","../src/auth.ts","../src/client-protocol.ts","../src/llm-gateway.ts","../src/telemetry.ts","../src/platform-api.ts"],"names":["z"],"mappings":"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","file":"index.js","sourcesContent":["import { z } from 'zod';\n\nexport const UpstreamConfigSchema = z.object({\n /** Key into the transport services map — identifies which service to proxy to */\n serviceId: z.string().min(1),\n prefix: z.string().startsWith('/'),\n /** Strip prefix before forwarding. Default: keep prefix as-is. Use \"\" to strip. */\n rewritePrefix: z.string().optional(),\n /** Enable WebSocket proxying for this upstream. Default: false. */\n websocket: z.boolean().optional(),\n /** Paths under this prefix that are NOT proxied (handled by gateway itself). */\n excludePaths: z.array(z.string()).optional(),\n description: z.string().optional(),\n});\n\nexport const StaticTokenEntrySchema = z.object({\n hostId: z.string(),\n namespaceId: z.string(),\n});\n\n// ── Pressure control (HTTP rate limiting via core ResourceBroker) ───────────\n// See ADR-0056. Two layers: per-service (in onRequest, before auth) and\n// per-tenant (in preHandler, after auth). Limit-only resources are registered\n// at gateway boot via broker.registerLimit and queried via broker.tryAcquire.\n\nexport const RateLimitConfigSchema = z.object({\n tokensPerMinute: z.number().int().positive().optional(),\n requestsPerMinute: z.number().int().positive().optional(),\n requestsPerSecond: z.number().int().positive().optional(),\n maxConcurrentRequests: z.number().int().positive().optional(),\n /** 0..1, default 0.9 in core. Set to 1 to disable the safety cushion. */\n safetyMargin: z.number().min(0).max(1).optional(),\n});\n\nexport const PressureRouteOverrideSchema = z.object({\n /** Resource id used in the broker, e.g. \"gateway:route:webhooks-github\". */\n resource: z.string().min(1),\n /** Path prefix matched against request.url (first match wins). */\n pathPrefix: z.string().startsWith('/'),\n /** HTTP methods this override applies to. Omit to match any method. */\n methods: z.array(z.enum(['GET', 'POST', 'PUT', 'PATCH', 'DELETE'])).optional(),\n limits: RateLimitConfigSchema,\n});\n\nexport const PressureTenantConfigSchema = z.object({\n /** When true, applies per-tenant limits keyed by AuthContext.namespaceId. */\n enabled: z.boolean().default(false),\n /** Limits applied to each tenant. Resource id = \"gateway:tenant:<namespaceId>\". */\n limits: RateLimitConfigSchema,\n});\n\nexport const PressureConfigSchema = z.object({\n enabled: z.boolean().default(true),\n /** Per-upstream limits. Resource id = \"gateway:service:<name>\". */\n perService: z.record(z.string(), RateLimitConfigSchema).default({}),\n /** Per-path-prefix overrides (checked before service-level resolution). */\n perRoute: z.array(PressureRouteOverrideSchema).default([]),\n /** Optional per-tenant layer (requires JWT). */\n perTenant: PressureTenantConfigSchema.optional(),\n});\n\n// ── Auth config (ADR-0020) ─────────────────────────────────────────────────\n\nconst AuthPasswordPolicySchema = z.object({\n minLength: z.number().int().min(1).default(8),\n maxLength: z.number().int().min(1).default(256),\n /** When true, new passwords are checked against the HaveIBeenPwned API. */\n hibpEnabled: z.boolean().default(true),\n});\n\nconst AuthRateLimitSchema = z.object({\n /** Max failed login attempts per IP per minute before 429. */\n loginPerIpPerMinute: z.number().int().positive().default(10),\n /** Max failed login attempts for a single email per minute (across all IPs). */\n loginPerEmailPerMinute: z.number().int().positive().default(5),\n /** Max activation attempts per IP per hour. */\n activatePerIpPerHour: z.number().int().positive().default(20),\n});\n\nconst AuthBootstrapSchema = z.object({\n /** Tenant ID for the bootstrap admin account (used in subdomain routing). */\n tenantId: z.string().min(1),\n /** Admin email — also readable from env GATEWAY_BOOTSTRAP_ADMIN_EMAIL. */\n adminEmail: z.string().email().optional(),\n}).optional();\n\nexport const AuthConfigSchema = z.object({\n /**\n * Whether authentication is enforced. Default true (cloud/team).\n * When false (solo/local mode) the gateway runs every request as a local\n * admin and Studio opens without login. The startup guardrail refuses to\n * start with auth disabled on a non-loopback bind (B-023).\n */\n enabled: z.boolean().default(true),\n /** Whether to set Secure flag on session cookies. Set false in dev only. */\n cookieSecure: z.boolean().default(true),\n /** Access token TTL in seconds. Default 15 min. */\n sessionAccessTtlSec: z.number().int().positive().default(900),\n /** Refresh token TTL in seconds. Default 30 days. */\n sessionRefreshTtlSec: z.number().int().positive().default(30 * 24 * 3600),\n /** Grace window for refresh token reuse detection (CD-5). */\n refreshGraceWindowSec: z.number().int().nonnegative().default(5),\n /** bcrypt cost factor for password hashing. */\n bcryptCost: z.number().int().min(4).max(31).default(12),\n passwordPolicy: AuthPasswordPolicySchema.default({}),\n rateLimit: AuthRateLimitSchema.default({}),\n /** Invite link TTL in milliseconds. Default 7 days. */\n inviteTtlMs: z.number().int().positive().default(7 * 24 * 60 * 60 * 1000),\n /** Bootstrap admin account seeding. Credentials come from env vars. */\n bootstrap: AuthBootstrapSchema,\n /**\n * Identity providers to load, keyed by instance id (ADR-0020 DD-4).\n *\n * Each entry carries a discriminating `type` (built-in `email-password`\n * / `oidc`, or a package name for third-party providers). Everything\n * else passes through so each provider validates its own slice with its\n * own zod schema. Omitting `providers` registers the built-in\n * `email-password` provider as the default (DD-3).\n */\n providers: z\n .record(z.string(), z.object({ type: z.string().min(1) }).passthrough())\n .optional(),\n});\n\nexport const TenantsConfigSchema = z.object({\n /**\n * Subdomain pattern used to resolve tenant from the Host header.\n * Use `{tenant}` as placeholder. E.g. `\"{tenant}.kblabs.ru\"`.\n */\n pattern: z.string().default('{tenant}.kblabs.ru'),\n});\n\nexport const GatewayConfigSchema = z.object({\n port: z.number().default(4000),\n /**\n * Bind host. Defaults to '0.0.0.0' (deployed platform) when omitted — the\n * fallback is applied in code. Solo/local installs set '127.0.0.1' so a\n * no-auth Studio is never reachable off the machine.\n */\n host: z.string().optional(),\n upstreams: z.record(z.string(), UpstreamConfigSchema).default({}),\n /** Static tokens seeded into ICache at bootstrap — for dev/service tokens before full auth */\n staticTokens: z.record(z.string(), StaticTokenEntrySchema).default({}),\n /** HTTP pressure control (rate limiting via ResourceBroker). */\n pressure: PressureConfigSchema.optional(),\n /** User auth configuration (ADR-0020). */\n auth: AuthConfigSchema.optional(),\n /** Tenant routing configuration. */\n tenants: TenantsConfigSchema.optional(),\n});\n\nexport type RateLimitConfig = z.infer<typeof RateLimitConfigSchema>;\nexport type PressureRouteOverride = z.infer<typeof PressureRouteOverrideSchema>;\nexport type PressureTenantConfig = z.infer<typeof PressureTenantConfigSchema>;\nexport type PressureConfig = z.infer<typeof PressureConfigSchema>;\nexport type UpstreamConfig = z.infer<typeof UpstreamConfigSchema>;\nexport type AuthConfig = z.infer<typeof AuthConfigSchema>;\nexport type TenantsConfig = z.infer<typeof TenantsConfigSchema>;\nexport type GatewayConfig = z.infer<typeof GatewayConfigSchema>;\n","import { z } from 'zod';\n\nexport const TraceContextSchema = z.object({\n traceId: z.string(),\n spanId: z.string(),\n parentId: z.string().optional(),\n});\n\n// Workspace info advertised by host on connect\nexport const WorkspaceInfoSchema = z.object({\n workspaceId: z.string(),\n repoFingerprint: z.string().optional(),\n branch: z.string().optional(),\n});\n\n// Plugin inventory advertised by host on connect\nexport const PluginInfoSchema = z.object({\n id: z.string(),\n version: z.string(),\n});\n\n// Host → Gateway: первое сообщение после подключения\nexport const HelloMessageSchema = z.object({\n type: z.literal('hello'),\n protocolVersion: z.string(),\n agentVersion: z.string(),\n hostId: z.string().optional(), // для reconnect\n capabilities: z.array(z.string()).optional(), // адаптеры которые умеет этот хост\n hostType: z.enum(['local', 'cloud']).optional(), // Workspace Agent type\n workspaces: z.array(WorkspaceInfoSchema).optional(), // advertised workspaces\n plugins: z.array(PluginInfoSchema).optional(), // installed plugins inventory\n});\n\n// Gateway → Host: подтверждение подключения\nexport const ConnectedMessageSchema = z.object({\n type: z.literal('connected'),\n protocolVersion: z.string(),\n hostId: z.string(),\n sessionId: z.string(),\n});\n\n// Gateway → Host: версия несовместима\nexport const NegotiateMessageSchema = z.object({\n type: z.literal('negotiate'),\n supportedVersions: z.array(z.string()),\n});\n\n// Gateway → Host: вызов адаптера\nexport const CallMessageSchema = z.object({\n type: z.literal('call'),\n requestId: z.string(),\n adapter: z.string(),\n method: z.string(),\n args: z.array(z.unknown()),\n bulk: z.boolean().optional(), // true → BulkRedirect\n trace: TraceContextSchema,\n});\n\n// Gateway → Host: redirect для bulk операций (большие файлы)\nexport const BulkRedirectMessageSchema = z.object({\n type: z.literal('bulk-redirect'),\n requestId: z.string(),\n uploadUrl: z.string(),\n expiresAt: z.number(),\n});\n\n// Host → Gateway: чанк данных (стриминг)\nexport const ChunkMessageSchema = z.object({\n type: z.literal('chunk'),\n requestId: z.string(),\n data: z.unknown(),\n index: z.number(),\n});\n\n// Host → Gateway: завершение вызова\nexport const ResultMessageSchema = z.object({\n type: z.literal('result'),\n requestId: z.string(),\n done: z.literal(true),\n trace: TraceContextSchema.optional(),\n});\n\n// Host → Gateway: ошибка при вызове\nexport const ErrorMessageSchema = z.object({\n type: z.literal('error'),\n requestId: z.string(),\n error: z.object({\n code: z.string(),\n message: z.string(),\n retryable: z.boolean(),\n }),\n});\n\n// Host → Gateway: heartbeat\nexport const HeartbeatMessageSchema = z.object({\n type: z.literal('heartbeat'),\n});\n\n// Gateway → Host: ack heartbeat\nexport const AckMessageSchema = z.object({\n type: z.literal('ack'),\n});\n\n// ── Execution event schemas (CC1 — Streaming) ──\n\n// Execution output event (stdout/stderr from handler)\nexport const ExecutionOutputSchema = z.object({\n type: z.literal('execution:output'),\n requestId: z.string(),\n executionId: z.string(),\n stream: z.enum(['stdout', 'stderr']),\n data: z.string(),\n timestamp: z.number(),\n});\n\n// Execution progress event\nexport const ExecutionProgressSchema = z.object({\n type: z.literal('execution:progress'),\n requestId: z.string(),\n executionId: z.string(),\n step: z.number().int().nonnegative(),\n total: z.number().int().positive(),\n label: z.string(),\n timestamp: z.number(),\n});\n\n// Execution artifact event (file created during execution)\nexport const ExecutionArtifactSchema = z.object({\n type: z.literal('execution:artifact'),\n requestId: z.string(),\n executionId: z.string(),\n name: z.string(),\n mime: z.string(),\n url: z.string(),\n sizeBytes: z.number().optional(),\n});\n\n// Execution error event\nexport const ExecutionErrorEventSchema = z.object({\n type: z.literal('execution:error'),\n requestId: z.string(),\n executionId: z.string(),\n code: z.string(),\n message: z.string(),\n retryable: z.boolean(),\n attempt: z.number().int().optional(),\n maxAttempts: z.number().int().optional(),\n});\n\n// Execution done event (final — execution completed)\nexport const ExecutionDoneSchema = z.object({\n type: z.literal('execution:done'),\n requestId: z.string(),\n executionId: z.string(),\n exitCode: z.number().int(),\n durationMs: z.number().int().nonnegative(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n});\n\n// Execution retry event (between attempts — CC3)\nexport const ExecutionRetrySchema = z.object({\n type: z.literal('execution:retry'),\n requestId: z.string(),\n executionId: z.string(),\n attempt: z.number().int().positive(),\n maxAttempts: z.number().int().positive(),\n delayMs: z.number().nonnegative(),\n error: z.string(),\n});\n\n// Execution cancelled event\nexport const ExecutionCancelledSchema = z.object({\n type: z.literal('execution:cancelled'),\n requestId: z.string(),\n executionId: z.string(),\n reason: z.enum(['user', 'timeout', 'disconnect', 'system']),\n durationMs: z.number().int().nonnegative(),\n});\n\n// Cancel message: client → Gateway\nexport const CancelMessageSchema = z.object({\n type: z.literal('cancel'),\n requestId: z.string(),\n reason: z.enum(['user', 'timeout', 'disconnect']).optional(),\n});\n\n// Subscribe message: client → Gateway (multi-client pub/sub, CC5)\nexport const SubscribeMessageSchema = z.object({\n type: z.literal('subscribe'),\n executionId: z.string(),\n});\n\n// Unsubscribe message: client → Gateway\nexport const UnsubscribeMessageSchema = z.object({\n type: z.literal('unsubscribe'),\n executionId: z.string(),\n});\n\n// ── Adapter reverse proxy schemas (Workspace Agent → Gateway → Platform) ──\n\n/** Serialized error for adapter:error messages */\nexport const SerializedErrorSchema = z.object({\n code: z.string(),\n message: z.string(),\n retryable: z.boolean(),\n details: z.unknown().optional(),\n});\n\n/** Adapter call context — propagated from host to platform */\nexport const AdapterCallContextSchema = z.object({\n namespaceId: z.string(),\n hostId: z.string(),\n workspaceId: z.string().optional(),\n environmentId: z.string().optional(),\n executionRequestId: z.string().optional(),\n});\n\n/** Allowed adapter names for reverse proxy */\nexport const AdapterNameSchema = z.enum([\n 'llm',\n 'cache',\n 'vectorStore',\n 'embeddings',\n 'storage',\n 'state',\n]);\n\n// Host → Gateway: вызов platform adapter (reverse proxy)\nexport const AdapterCallMessageSchema = z.object({\n type: z.literal('adapter:call'),\n requestId: z.string(),\n adapter: AdapterNameSchema,\n method: z.string(),\n args: z.array(z.unknown()),\n timeout: z.number().positive().optional(),\n context: AdapterCallContextSchema,\n});\n\n// Gateway → Host: успешный ответ на adapter:call\nexport const AdapterResponseMessageSchema = z.object({\n type: z.literal('adapter:response'),\n requestId: z.string(),\n result: z.unknown(),\n});\n\n// Gateway → Host: ошибка при adapter:call\nexport const AdapterErrorMessageSchema = z.object({\n type: z.literal('adapter:error'),\n requestId: z.string(),\n error: SerializedErrorSchema,\n});\n\n// Gateway → Host: streaming chunk для adapter:call (Phase 2+)\nexport const AdapterChunkMessageSchema = z.object({\n type: z.literal('adapter:chunk'),\n requestId: z.string(),\n data: z.unknown(),\n index: z.number().int().nonnegative(),\n});\n\n// Host → Gateway: cancel in-flight adapter:call (Phase 2+)\nexport const AdapterCancelMessageSchema = z.object({\n type: z.literal('adapter:cancel'),\n requestId: z.string(),\n});\n\n// ── Execute request schema (for POST /api/v1/execute) ──\n\nexport const ExecuteRequestSchema = z.object({\n pluginId: z.string(),\n handlerRef: z.string(),\n exportName: z.string().optional(),\n input: z.unknown(),\n timeoutMs: z.number().int().positive().optional(),\n});\n\nexport const SUPPORTED_PROTOCOL_VERSIONS = ['1.0'] as const;\n\nexport type TraceContext = z.infer<typeof TraceContextSchema>;\nexport type HelloMessage = z.infer<typeof HelloMessageSchema>;\nexport type ConnectedMessage = z.infer<typeof ConnectedMessageSchema>;\nexport type NegotiateMessage = z.infer<typeof NegotiateMessageSchema>;\nexport type CallMessage = z.infer<typeof CallMessageSchema>;\nexport type BulkRedirectMessage = z.infer<typeof BulkRedirectMessageSchema>;\nexport type ChunkMessage = z.infer<typeof ChunkMessageSchema>;\nexport type ResultMessage = z.infer<typeof ResultMessageSchema>;\nexport type ErrorMessage = z.infer<typeof ErrorMessageSchema>;\nexport type HeartbeatMessage = z.infer<typeof HeartbeatMessageSchema>;\nexport type AckMessage = z.infer<typeof AckMessageSchema>;\nexport type ExecutionOutputMessage = z.infer<typeof ExecutionOutputSchema>;\nexport type ExecutionProgressMessage = z.infer<typeof ExecutionProgressSchema>;\nexport type ExecutionArtifactMessage = z.infer<typeof ExecutionArtifactSchema>;\nexport type ExecutionErrorEventMessage = z.infer<typeof ExecutionErrorEventSchema>;\nexport type ExecutionDoneMessage = z.infer<typeof ExecutionDoneSchema>;\nexport type ExecutionRetryMessage = z.infer<typeof ExecutionRetrySchema>;\nexport type ExecutionCancelledMessage = z.infer<typeof ExecutionCancelledSchema>;\nexport type CancelMessage = z.infer<typeof CancelMessageSchema>;\nexport type SubscribeMessage = z.infer<typeof SubscribeMessageSchema>;\nexport type UnsubscribeMessage = z.infer<typeof UnsubscribeMessageSchema>;\nexport type ExecuteRequest = z.infer<typeof ExecuteRequestSchema>;\nexport type WorkspaceInfo = z.infer<typeof WorkspaceInfoSchema>;\nexport type PluginInfo = z.infer<typeof PluginInfoSchema>;\nexport type SerializedError = z.infer<typeof SerializedErrorSchema>;\nexport type AdapterCallContext = z.infer<typeof AdapterCallContextSchema>;\nexport type AdapterName = z.infer<typeof AdapterNameSchema>;\nexport type AdapterCallMessage = z.infer<typeof AdapterCallMessageSchema>;\nexport type AdapterResponseMessage = z.infer<typeof AdapterResponseMessageSchema>;\nexport type AdapterErrorMessage = z.infer<typeof AdapterErrorMessageSchema>;\nexport type AdapterChunkMessage = z.infer<typeof AdapterChunkMessageSchema>;\nexport type AdapterCancelMessage = z.infer<typeof AdapterCancelMessageSchema>;\n\nexport type ExecutionEventMessage =\n | ExecutionOutputMessage\n | ExecutionProgressMessage\n | ExecutionArtifactMessage\n | ExecutionErrorEventMessage\n | ExecutionDoneMessage\n | ExecutionRetryMessage\n | ExecutionCancelledMessage;\n\nexport type InboundMessage =\n | HelloMessage\n | HeartbeatMessage\n | ChunkMessage\n | ResultMessage\n | ErrorMessage\n | CancelMessage\n | SubscribeMessage\n | UnsubscribeMessage\n | AdapterCallMessage\n | AdapterCancelMessage;\n\nexport type OutboundMessage =\n | ConnectedMessage\n | NegotiateMessage\n | CallMessage\n | BulkRedirectMessage\n | AckMessage\n | ExecutionOutputMessage\n | ExecutionProgressMessage\n | ExecutionArtifactMessage\n | ExecutionErrorEventMessage\n | ExecutionDoneMessage\n | AdapterResponseMessage\n | AdapterErrorMessage\n | AdapterChunkMessage;\n","import { z } from 'zod';\nimport { WorkspaceInfoSchema, PluginInfoSchema } from './protocol.js';\n\nexport const HostCapabilitySchema = z.enum(['filesystem', 'git', 'editor-context', 'execution']);\n\nexport const HostTypeSchema = z.enum(['local', 'cloud']);\n\nexport const HostRegistrationSchema = z.object({\n name: z.string(),\n namespaceId: z.string(),\n capabilities: z.array(HostCapabilitySchema),\n workspacePaths: z.array(z.string()),\n hostType: HostTypeSchema.optional(),\n});\n\nexport const HostStatusSchema = z.enum(['online', 'offline', 'degraded', 'reconnecting']);\n\nexport const HostDescriptorSchema = z.object({\n hostId: z.string(),\n name: z.string(),\n namespaceId: z.string(),\n capabilities: z.array(HostCapabilitySchema),\n status: HostStatusSchema,\n lastSeen: z.number(),\n connections: z.array(z.string()),\n // Workspace Agent metadata (populated from hello message)\n hostType: HostTypeSchema.optional(),\n workspaces: z.array(WorkspaceInfoSchema).optional(),\n plugins: z.array(PluginInfoSchema).optional(),\n // Persistence metadata\n createdAt: z.number().optional(),\n updatedAt: z.number().optional(),\n});\n\nexport const HostRegisterResponseSchema = z.object({\n hostId: z.string(),\n machineToken: z.string(),\n status: HostStatusSchema,\n});\n\nexport type HostStatus = z.infer<typeof HostStatusSchema>;\nexport type HostCapability = z.infer<typeof HostCapabilitySchema>;\nexport type HostType = z.infer<typeof HostTypeSchema>;\nexport type HostRegistration = z.infer<typeof HostRegistrationSchema>;\nexport type HostDescriptor = z.infer<typeof HostDescriptorSchema>;\nexport type HostRegisterResponse = z.infer<typeof HostRegisterResponseSchema>;\n\n/**\n * Durable host storage abstraction.\n *\n * Implementations persist host descriptors and tokens across restarts.\n * The registry uses this as the \"cold\" layer while ICache serves as \"hot\" layer.\n */\nexport interface IHostStore {\n /** Persist or update a host descriptor. */\n save(descriptor: HostDescriptor): Promise<void>;\n\n /** Retrieve a host by id + namespace. */\n get(hostId: string, namespaceId: string): Promise<HostDescriptor | null>;\n\n /** List all hosts in a namespace. */\n list(namespaceId: string): Promise<HostDescriptor[]>;\n\n /** List all hosts across all namespaces. */\n listAll(): Promise<HostDescriptor[]>;\n\n /** Remove a host. Returns true if it existed. */\n delete(hostId: string, namespaceId: string): Promise<boolean>;\n\n /** Persist a machine token → host mapping. */\n saveToken(token: string, hostId: string, namespaceId: string): Promise<void>;\n\n /** Resolve a machine token to its host. */\n resolveToken(token: string): Promise<{ hostId: string; namespaceId: string } | null>;\n\n /** Remove a machine token. */\n deleteToken(token: string): Promise<void>;\n}\n","import { z } from 'zod';\n\nexport const TokenTypeSchema = z.enum(['user', 'cli', 'machine']);\n\nexport const AuthContextSchema = z.object({\n type: TokenTypeSchema,\n userId: z.string(),\n namespaceId: z.string(),\n tier: z.enum(['free', 'pro', 'enterprise']),\n permissions: z.array(z.string()),\n});\n\nexport type TokenType = z.infer<typeof TokenTypeSchema>;\nexport type AuthContext = z.infer<typeof AuthContextSchema>;\n\n// ── JWT / Auth service contracts ─────────────────────────────────────────────\n\nexport const RegisterRequestSchema = z.object({\n /** Human-readable name for this agent (e.g. \"MacBook Pro\") */\n name: z.string().min(1).max(64),\n capabilities: z.array(z.string()).default([]),\n /**\n * X25519 public key for E2E encryption, base64url encoded.\n * Generated by the agent; the server stores it for encrypting call payloads.\n */\n publicKey: z.string().optional(),\n /** Unique author handle for the marketplace (e.g. \"kirill\"). Lowercase letters, digits, hyphens. */\n handle: z.string().regex(/^[a-z0-9-]{2,32}$/).optional(),\n /** Contact email for the author. */\n email: z.string().email().optional(),\n});\n\nexport const RegisterResponseSchema = z.object({\n clientId: z.string(),\n clientSecret: z.string(),\n hostId: z.string(),\n /** Server-assigned namespace — use this in subsequent API calls. */\n namespaceId: z.string(),\n handle: z.string().optional(),\n});\n\nexport const TokenRequestSchema = z.object({\n clientId: z.string(),\n clientSecret: z.string(),\n});\n\nexport const TokenResponseSchema = z.object({\n accessToken: z.string(),\n refreshToken: z.string(),\n /** Seconds until accessToken expires */\n expiresIn: z.number(),\n tokenType: z.literal('Bearer'),\n});\n\nexport const RefreshRequestSchema = z.object({\n refreshToken: z.string(),\n});\n\n/** JWT payload (sub = hostId) */\nexport const JwtPayloadSchema = z.object({\n sub: z.string(), // hostId\n namespaceId: z.string(),\n tier: z.enum(['free', 'pro', 'enterprise']),\n type: TokenTypeSchema,\n /** Permissions embedded in the token at issuance time. */\n permissions: z.array(z.string()).optional(),\n iat: z.number(),\n exp: z.number(),\n});\n\nexport type RegisterRequest = z.infer<typeof RegisterRequestSchema>;\nexport type RegisterResponse = z.infer<typeof RegisterResponseSchema>;\nexport type TokenRequest = z.infer<typeof TokenRequestSchema>;\nexport type TokenResponse = z.infer<typeof TokenResponseSchema>;\nexport type RefreshRequest = z.infer<typeof RefreshRequestSchema>;\nexport type JwtPayload = z.infer<typeof JwtPayloadSchema>;\n","/**\n * @module gateway-contracts/client-protocol\n *\n * WS protocol for observer clients (CLI, Studio, IDE).\n * Endpoint: /clients/connect\n *\n * Separate from host-protocol (protocol.ts) — clients observe executions,\n * they don't serve adapter calls.\n *\n * Client → Gateway inbound messages:\n * - client:hello — handshake\n * - client:subscribe — subscribe to execution events\n * - client:unsubscribe\n * - client:cancel — cancel an execution (convenience, same as POST /execute/:id/cancel)\n *\n * Gateway → Client outbound messages:\n * - client:connected — handshake ack\n * - execution:output — (reused from protocol.ts ExecutionEventMessage)\n * - execution:progress\n * - execution:artifact\n * - execution:error\n * - execution:done\n * - client:error — protocol-level error (bad subscribe, not found, etc.)\n */\n\nimport { z } from 'zod';\nimport type { ExecutionEventMessage } from './protocol.js';\n\n// ── Inbound (Client → Gateway) ────────────────────────────────────────────────\n\nexport const ClientHelloSchema = z.object({\n type: z.literal('client:hello'),\n clientVersion: z.string(),\n});\n\nexport const ClientSubscribeSchema = z.object({\n type: z.literal('client:subscribe'),\n executionId: z.string().uuid(),\n});\n\nexport const ClientUnsubscribeSchema = z.object({\n type: z.literal('client:unsubscribe'),\n executionId: z.string().uuid(),\n});\n\nexport const ClientCancelSchema = z.object({\n type: z.literal('client:cancel'),\n executionId: z.string().uuid(),\n reason: z.enum(['user', 'timeout']).optional(),\n});\n\n// ── Outbound (Gateway → Client) ───────────────────────────────────────────────\n\nexport const ClientConnectedSchema = z.object({\n type: z.literal('client:connected'),\n protocolVersion: z.string(),\n connectionId: z.string(),\n});\n\nexport const ClientErrorSchema = z.object({\n type: z.literal('client:error'),\n code: z.enum([\n 'EXECUTION_NOT_FOUND',\n 'FORBIDDEN',\n 'INVALID_MESSAGE',\n 'CANCEL_FAILED',\n ]),\n message: z.string(),\n executionId: z.string().optional(),\n});\n\n// ── Types ─────────────────────────────────────────────────────────────────────\n\nexport type ClientHello = z.infer<typeof ClientHelloSchema>;\nexport type ClientSubscribe = z.infer<typeof ClientSubscribeSchema>;\nexport type ClientUnsubscribe = z.infer<typeof ClientUnsubscribeSchema>;\nexport type ClientCancel = z.infer<typeof ClientCancelSchema>;\nexport type ClientConnected = z.infer<typeof ClientConnectedSchema>;\nexport type ClientError = z.infer<typeof ClientErrorSchema>;\n\nexport type ClientInboundMessage =\n | ClientHello\n | ClientSubscribe\n | ClientUnsubscribe\n | ClientCancel;\n\nexport type ClientOutboundMessage =\n | ClientConnected\n | ClientError\n | ExecutionEventMessage;\n\nexport const CLIENT_PROTOCOL_VERSION = '1.0';\n","/**\n * @module @kb-labs/gateway-contracts/llm-gateway\n * OpenAI-compatible AI Gateway schemas and types.\n *\n * Clients interact using OpenAI ChatCompletion format, but `model` field\n * is a tier abstraction (small/medium/large/fast), NOT a literal model name.\n * The platform resolves the tier to a concrete provider + model via LLMRouter config.\n */\nimport { z } from 'zod';\n\n// ── Request ─────────────────────────────────────────────────────────────────\n\n/** Tier-based model selector. Clients never specify a concrete model. */\nexport const LLMTierSchema = z.enum(['small', 'medium', 'large']);\n\nexport const ChatMessageSchema = z.object({\n role: z.enum(['system', 'user', 'assistant', 'tool']),\n content: z.string(),\n tool_call_id: z.string().optional(),\n tool_calls: z\n .array(\n z.object({\n id: z.string(),\n type: z.literal('function'),\n function: z.object({\n name: z.string(),\n arguments: z.string(), // JSON-stringified\n }),\n }),\n )\n .optional(),\n});\n\nexport const ChatToolSchema = z.object({\n type: z.literal('function'),\n function: z.object({\n name: z.string(),\n description: z.string().optional(),\n parameters: z.record(z.unknown()).optional(),\n }),\n});\n\nexport const ChatCompletionRequestSchema = z.object({\n /** Tier-based model selector: \"small\" | \"medium\" | \"large\" | \"fast\" */\n model: LLMTierSchema,\n messages: z.array(ChatMessageSchema).min(1),\n temperature: z.number().min(0).max(2).optional(),\n max_tokens: z.number().int().positive().optional(),\n stop: z.union([z.string(), z.array(z.string())]).optional(),\n stream: z.boolean().optional().default(false),\n tools: z.array(ChatToolSchema).optional(),\n tool_choice: z\n .union([\n z.enum(['auto', 'required', 'none']),\n z.object({\n type: z.literal('function'),\n function: z.object({ name: z.string() }),\n }),\n ])\n .optional(),\n});\n\nexport type ChatCompletionRequest = z.infer<typeof ChatCompletionRequestSchema>;\n\n// ── Response ────────────────────────────────────────────────────────────────\n\nexport interface ChatCompletionChoice {\n index: number;\n message: {\n role: 'assistant';\n content: string | null;\n tool_calls?: Array<{\n id: string;\n type: 'function';\n function: { name: string; arguments: string };\n }>;\n };\n finish_reason: 'stop' | 'tool_calls' | 'length' | null;\n}\n\nexport interface ChatCompletionUsage {\n prompt_tokens: number;\n completion_tokens: number;\n total_tokens: number;\n}\n\nexport interface ChatCompletionResponse {\n id: string;\n object: 'chat.completion';\n created: number;\n /** Returns the tier used, not the concrete model (abstraction preserved) */\n model: string;\n choices: ChatCompletionChoice[];\n usage: ChatCompletionUsage;\n}\n\n// ── Streaming ───────────────────────────────────────────────────────────────\n\nexport interface ChatCompletionChunkDelta {\n role?: 'assistant';\n content?: string | null;\n tool_calls?: Array<{\n index: number;\n id?: string;\n type?: 'function';\n function?: { name?: string; arguments?: string };\n }>;\n}\n\nexport interface ChatCompletionChunk {\n id: string;\n object: 'chat.completion.chunk';\n created: number;\n model: string;\n choices: Array<{\n index: number;\n delta: ChatCompletionChunkDelta;\n finish_reason: 'stop' | 'tool_calls' | 'length' | null;\n }>;\n}\n","/**\n * @module @kb-labs/gateway-contracts/telemetry\n * Telemetry ingestion schemas for the AI Gateway.\n *\n * External products send events through `POST /telemetry/v1/ingest`.\n * Events are written to platform analytics (SQLite/DuckDB/File) via IAnalytics.track().\n *\n * Schema is intentionally minimal — `payload` is free-form.\n * Platform provides recommended presets but does not enforce them.\n */\nimport { z } from 'zod';\n\n// ── Single event ────────────────────────────────────────────────────────────\n\nexport const TelemetryEventSchema = z.object({\n /** Source product/service name (e.g., \"my-api\", \"billing-service\") */\n source: z.string().min(1).max(128),\n /** Event type/name using dot notation (e.g., \"user.signup\", \"api.request\") */\n type: z.string().min(1).max(256),\n /** ISO 8601 timestamp. Defaults to server ingest time if omitted. */\n timestamp: z.string().datetime().optional(),\n /** Free-form event data. No schema enforced — products decide what to send. */\n payload: z.record(z.unknown()).optional(),\n /** Flat key-value tags for filtering/aggregation (e.g., { env: \"prod\", region: \"eu\" }) */\n tags: z.record(z.string()).optional(),\n});\n\nexport type TelemetryEvent = z.infer<typeof TelemetryEventSchema>;\n\n// ── Batch ingestion request ─────────────────────────────────────────────────\n\nexport const TelemetryIngestRequestSchema = z.object({\n /** Array of events to ingest (1–500 per batch) */\n events: z.array(TelemetryEventSchema).min(1).max(500),\n});\n\nexport type TelemetryIngestRequest = z.infer<typeof TelemetryIngestRequestSchema>;\n\n// ── Ingestion response ──────────────────────────────────────────────────────\n\nexport interface TelemetryIngestResponse {\n /** Number of events accepted */\n accepted: number;\n /** Number of events rejected (validation errors) */\n rejected: number;\n /** Errors for rejected events, if any */\n errors?: Array<{ index: number; message: string }>;\n}\n","/**\n * @module @kb-labs/gateway-contracts/platform-api\n * Unified Platform API — single dispatch endpoint for any adapter.\n *\n * Route: POST /platform/v1/{adapter}/{method}\n * Adapter and method come from URL params; args come from the request body.\n */\nimport { z } from 'zod';\n\n// ── Request ─────────────────────────────────────────────────────────────────\n\nexport const PlatformCallRequestSchema = z.object({\n /** Arguments to pass to the adapter method. Order matters. */\n args: z.array(z.unknown()).default([]),\n});\n\nexport type PlatformCallRequest = z.infer<typeof PlatformCallRequestSchema>;\n\n// ── Response ────────────────────────────────────────────────────────────────\n\nexport interface PlatformCallResponse {\n ok: boolean;\n result?: unknown;\n error?: { message: string; code?: string };\n /** Wall-clock duration of the adapter call in milliseconds. */\n durationMs: number;\n}\n"]}
1
+ {"version":3,"sources":["../src/config.ts","../src/protocol.ts","../src/host.ts","../src/auth.ts","../src/client-protocol.ts","../src/llm-gateway.ts","../src/telemetry.ts","../src/platform-api.ts"],"names":["z"],"mappings":"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","file":"index.js","sourcesContent":["import { z } from 'zod';\n\nexport const UpstreamConfigSchema = z.object({\n /** Key into the transport services map — identifies which service to proxy to */\n serviceId: z.string().min(1),\n prefix: z.string().startsWith('/'),\n /** Strip prefix before forwarding. Default: keep prefix as-is. Use \"\" to strip. */\n rewritePrefix: z.string().optional(),\n /** Enable WebSocket proxying for this upstream. Default: false. */\n websocket: z.boolean().optional(),\n /** Paths under this prefix that are NOT proxied (handled by gateway itself). */\n excludePaths: z.array(z.string()).optional(),\n description: z.string().optional(),\n});\n\nexport const StaticTokenEntrySchema = z.object({\n hostId: z.string(),\n namespaceId: z.string(),\n});\n\n// ── Pressure control (HTTP rate limiting via core ResourceBroker) ───────────\n// See ADR-0056. Two layers: per-service (in onRequest, before auth) and\n// per-tenant (in preHandler, after auth). Limit-only resources are registered\n// at gateway boot via broker.registerLimit and queried via broker.tryAcquire.\n\nexport const RateLimitConfigSchema = z.object({\n tokensPerMinute: z.number().int().positive().optional(),\n requestsPerMinute: z.number().int().positive().optional(),\n requestsPerSecond: z.number().int().positive().optional(),\n maxConcurrentRequests: z.number().int().positive().optional(),\n /** 0..1, default 0.9 in core. Set to 1 to disable the safety cushion. */\n safetyMargin: z.number().min(0).max(1).optional(),\n});\n\nexport const PressureRouteOverrideSchema = z.object({\n /** Resource id used in the broker, e.g. \"gateway:route:webhooks-github\". */\n resource: z.string().min(1),\n /** Path prefix matched against request.url (first match wins). */\n pathPrefix: z.string().startsWith('/'),\n /** HTTP methods this override applies to. Omit to match any method. */\n methods: z.array(z.enum(['GET', 'POST', 'PUT', 'PATCH', 'DELETE'])).optional(),\n limits: RateLimitConfigSchema,\n});\n\nexport const PressureTenantConfigSchema = z.object({\n /** When true, applies per-tenant limits keyed by AuthContext.namespaceId. */\n enabled: z.boolean().default(false),\n /** Limits applied to each tenant. Resource id = \"gateway:tenant:<namespaceId>\". */\n limits: RateLimitConfigSchema,\n});\n\nexport const PressureConfigSchema = z.object({\n enabled: z.boolean().default(true),\n /** Per-upstream limits. Resource id = \"gateway:service:<name>\". */\n perService: z.record(z.string(), RateLimitConfigSchema).default({}),\n /** Per-path-prefix overrides (checked before service-level resolution). */\n perRoute: z.array(PressureRouteOverrideSchema).default([]),\n /** Optional per-tenant layer (requires JWT). */\n perTenant: PressureTenantConfigSchema.optional(),\n});\n\n// ── Auth config (ADR-0020) ─────────────────────────────────────────────────\n\nconst AuthPasswordPolicySchema = z.object({\n minLength: z.number().int().min(1).default(8),\n maxLength: z.number().int().min(1).default(256),\n /** When true, new passwords are checked against the HaveIBeenPwned API. */\n hibpEnabled: z.boolean().default(true),\n});\n\nconst AuthRateLimitSchema = z.object({\n /** Max failed login attempts per IP per minute before 429. */\n loginPerIpPerMinute: z.number().int().positive().default(10),\n /** Max failed login attempts for a single email per minute (across all IPs). */\n loginPerEmailPerMinute: z.number().int().positive().default(5),\n /** Max activation attempts per IP per hour. */\n activatePerIpPerHour: z.number().int().positive().default(20),\n});\n\nconst AuthBootstrapSchema = z.object({\n /** Tenant ID for the bootstrap admin account (used in subdomain routing). */\n tenantId: z.string().min(1),\n /** Admin email — also readable from env GATEWAY_BOOTSTRAP_ADMIN_EMAIL. */\n adminEmail: z.string().email().optional(),\n /**\n * When true, the gateway mints a bootstrap CLI machine credential on first\n * start and writes it to ~/.kb/credentials.json (kb-create --yes flow, #271).\n */\n provisionCliCredentials: z.boolean().optional(),\n}).optional();\n\nexport const AuthConfigSchema = z.object({\n /**\n * Whether authentication is enforced. Default true (cloud/team).\n * When false (solo/local mode) the gateway runs every request as a local\n * admin and Studio opens without login. The startup guardrail refuses to\n * start with auth disabled on a non-loopback bind (B-023).\n */\n enabled: z.boolean().default(true),\n /** Whether to set Secure flag on session cookies. Set false in dev only. */\n cookieSecure: z.boolean().default(true),\n /** Access token TTL in seconds. Default 15 min. */\n sessionAccessTtlSec: z.number().int().positive().default(900),\n /** Refresh token TTL in seconds. Default 30 days. */\n sessionRefreshTtlSec: z.number().int().positive().default(30 * 24 * 3600),\n /** Grace window for refresh token reuse detection (CD-5). */\n refreshGraceWindowSec: z.number().int().nonnegative().default(5),\n /** bcrypt cost factor for password hashing. */\n bcryptCost: z.number().int().min(4).max(31).default(12),\n passwordPolicy: AuthPasswordPolicySchema.default({}),\n rateLimit: AuthRateLimitSchema.default({}),\n /** Invite link TTL in milliseconds. Default 7 days. */\n inviteTtlMs: z.number().int().positive().default(7 * 24 * 60 * 60 * 1000),\n /** Bootstrap admin account seeding. Credentials come from env vars. */\n bootstrap: AuthBootstrapSchema,\n /**\n * Identity providers to load, keyed by instance id (ADR-0020 DD-4).\n *\n * Each entry carries a discriminating `type` (built-in `email-password`\n * / `oidc`, or a package name for third-party providers). Everything\n * else passes through so each provider validates its own slice with its\n * own zod schema. Omitting `providers` registers the built-in\n * `email-password` provider as the default (DD-3).\n */\n providers: z\n .record(z.string(), z.object({ type: z.string().min(1) }).passthrough())\n .optional(),\n});\n\nexport const TenantsConfigSchema = z.object({\n /**\n * Subdomain pattern used to resolve tenant from the Host header.\n * Use `{tenant}` as placeholder. E.g. `\"{tenant}.kblabs.ru\"`.\n */\n pattern: z.string().default('{tenant}.kblabs.ru'),\n});\n\nexport const GatewayConfigSchema = z.object({\n port: z.number().default(4000),\n /**\n * Bind host. Defaults to '0.0.0.0' (deployed platform) when omitted — the\n * fallback is applied in code. Solo/local installs set '127.0.0.1' so a\n * no-auth Studio is never reachable off the machine.\n */\n host: z.string().optional(),\n upstreams: z.record(z.string(), UpstreamConfigSchema).default({}),\n /** Static tokens seeded into ICache at bootstrap — for dev/service tokens before full auth */\n staticTokens: z.record(z.string(), StaticTokenEntrySchema).default({}),\n /** HTTP pressure control (rate limiting via ResourceBroker). */\n pressure: PressureConfigSchema.optional(),\n /** User auth configuration (ADR-0020). */\n auth: AuthConfigSchema.optional(),\n /** Tenant routing configuration. */\n tenants: TenantsConfigSchema.optional(),\n});\n\nexport type RateLimitConfig = z.infer<typeof RateLimitConfigSchema>;\nexport type PressureRouteOverride = z.infer<typeof PressureRouteOverrideSchema>;\nexport type PressureTenantConfig = z.infer<typeof PressureTenantConfigSchema>;\nexport type PressureConfig = z.infer<typeof PressureConfigSchema>;\nexport type UpstreamConfig = z.infer<typeof UpstreamConfigSchema>;\nexport type AuthConfig = z.infer<typeof AuthConfigSchema>;\nexport type TenantsConfig = z.infer<typeof TenantsConfigSchema>;\nexport type GatewayConfig = z.infer<typeof GatewayConfigSchema>;\n","import { z } from 'zod';\n\nexport const TraceContextSchema = z.object({\n traceId: z.string(),\n spanId: z.string(),\n parentId: z.string().optional(),\n});\n\n// Workspace info advertised by host on connect\nexport const WorkspaceInfoSchema = z.object({\n workspaceId: z.string(),\n repoFingerprint: z.string().optional(),\n branch: z.string().optional(),\n});\n\n// Plugin inventory advertised by host on connect\nexport const PluginInfoSchema = z.object({\n id: z.string(),\n version: z.string(),\n});\n\n// Host → Gateway: первое сообщение после подключения\nexport const HelloMessageSchema = z.object({\n type: z.literal('hello'),\n protocolVersion: z.string(),\n agentVersion: z.string(),\n hostId: z.string().optional(), // для reconnect\n capabilities: z.array(z.string()).optional(), // адаптеры которые умеет этот хост\n hostType: z.enum(['local', 'cloud']).optional(), // Workspace Agent type\n workspaces: z.array(WorkspaceInfoSchema).optional(), // advertised workspaces\n plugins: z.array(PluginInfoSchema).optional(), // installed plugins inventory\n});\n\n// Gateway → Host: подтверждение подключения\nexport const ConnectedMessageSchema = z.object({\n type: z.literal('connected'),\n protocolVersion: z.string(),\n hostId: z.string(),\n sessionId: z.string(),\n});\n\n// Gateway → Host: версия несовместима\nexport const NegotiateMessageSchema = z.object({\n type: z.literal('negotiate'),\n supportedVersions: z.array(z.string()),\n});\n\n// Gateway → Host: вызов адаптера\nexport const CallMessageSchema = z.object({\n type: z.literal('call'),\n requestId: z.string(),\n adapter: z.string(),\n method: z.string(),\n args: z.array(z.unknown()),\n bulk: z.boolean().optional(), // true → BulkRedirect\n trace: TraceContextSchema,\n});\n\n// Gateway → Host: redirect для bulk операций (большие файлы)\nexport const BulkRedirectMessageSchema = z.object({\n type: z.literal('bulk-redirect'),\n requestId: z.string(),\n uploadUrl: z.string(),\n expiresAt: z.number(),\n});\n\n// Host → Gateway: чанк данных (стриминг)\nexport const ChunkMessageSchema = z.object({\n type: z.literal('chunk'),\n requestId: z.string(),\n data: z.unknown(),\n index: z.number(),\n});\n\n// Host → Gateway: завершение вызова\nexport const ResultMessageSchema = z.object({\n type: z.literal('result'),\n requestId: z.string(),\n done: z.literal(true),\n trace: TraceContextSchema.optional(),\n});\n\n// Host → Gateway: ошибка при вызове\nexport const ErrorMessageSchema = z.object({\n type: z.literal('error'),\n requestId: z.string(),\n error: z.object({\n code: z.string(),\n message: z.string(),\n retryable: z.boolean(),\n }),\n});\n\n// Host → Gateway: heartbeat\nexport const HeartbeatMessageSchema = z.object({\n type: z.literal('heartbeat'),\n});\n\n// Gateway → Host: ack heartbeat\nexport const AckMessageSchema = z.object({\n type: z.literal('ack'),\n});\n\n// ── Execution event schemas (CC1 — Streaming) ──\n\n// Execution output event (stdout/stderr from handler)\nexport const ExecutionOutputSchema = z.object({\n type: z.literal('execution:output'),\n requestId: z.string(),\n executionId: z.string(),\n stream: z.enum(['stdout', 'stderr']),\n data: z.string(),\n timestamp: z.number(),\n});\n\n// Execution progress event\nexport const ExecutionProgressSchema = z.object({\n type: z.literal('execution:progress'),\n requestId: z.string(),\n executionId: z.string(),\n step: z.number().int().nonnegative(),\n total: z.number().int().positive(),\n label: z.string(),\n timestamp: z.number(),\n});\n\n// Execution artifact event (file created during execution)\nexport const ExecutionArtifactSchema = z.object({\n type: z.literal('execution:artifact'),\n requestId: z.string(),\n executionId: z.string(),\n name: z.string(),\n mime: z.string(),\n url: z.string(),\n sizeBytes: z.number().optional(),\n});\n\n// Execution error event\nexport const ExecutionErrorEventSchema = z.object({\n type: z.literal('execution:error'),\n requestId: z.string(),\n executionId: z.string(),\n code: z.string(),\n message: z.string(),\n retryable: z.boolean(),\n attempt: z.number().int().optional(),\n maxAttempts: z.number().int().optional(),\n});\n\n// Execution done event (final — execution completed)\nexport const ExecutionDoneSchema = z.object({\n type: z.literal('execution:done'),\n requestId: z.string(),\n executionId: z.string(),\n exitCode: z.number().int(),\n durationMs: z.number().int().nonnegative(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n});\n\n// Execution retry event (between attempts — CC3)\nexport const ExecutionRetrySchema = z.object({\n type: z.literal('execution:retry'),\n requestId: z.string(),\n executionId: z.string(),\n attempt: z.number().int().positive(),\n maxAttempts: z.number().int().positive(),\n delayMs: z.number().nonnegative(),\n error: z.string(),\n});\n\n// Execution cancelled event\nexport const ExecutionCancelledSchema = z.object({\n type: z.literal('execution:cancelled'),\n requestId: z.string(),\n executionId: z.string(),\n reason: z.enum(['user', 'timeout', 'disconnect', 'system']),\n durationMs: z.number().int().nonnegative(),\n});\n\n// Cancel message: client → Gateway\nexport const CancelMessageSchema = z.object({\n type: z.literal('cancel'),\n requestId: z.string(),\n reason: z.enum(['user', 'timeout', 'disconnect']).optional(),\n});\n\n// Subscribe message: client → Gateway (multi-client pub/sub, CC5)\nexport const SubscribeMessageSchema = z.object({\n type: z.literal('subscribe'),\n executionId: z.string(),\n});\n\n// Unsubscribe message: client → Gateway\nexport const UnsubscribeMessageSchema = z.object({\n type: z.literal('unsubscribe'),\n executionId: z.string(),\n});\n\n// ── Adapter reverse proxy schemas (Workspace Agent → Gateway → Platform) ──\n\n/** Serialized error for adapter:error messages */\nexport const SerializedErrorSchema = z.object({\n code: z.string(),\n message: z.string(),\n retryable: z.boolean(),\n details: z.unknown().optional(),\n});\n\n/** Adapter call context — propagated from host to platform */\nexport const AdapterCallContextSchema = z.object({\n namespaceId: z.string(),\n hostId: z.string(),\n workspaceId: z.string().optional(),\n environmentId: z.string().optional(),\n executionRequestId: z.string().optional(),\n});\n\n/** Allowed adapter names for reverse proxy */\nexport const AdapterNameSchema = z.enum([\n 'llm',\n 'cache',\n 'vectorStore',\n 'embeddings',\n 'storage',\n 'state',\n]);\n\n// Host → Gateway: вызов platform adapter (reverse proxy)\nexport const AdapterCallMessageSchema = z.object({\n type: z.literal('adapter:call'),\n requestId: z.string(),\n adapter: AdapterNameSchema,\n method: z.string(),\n args: z.array(z.unknown()),\n timeout: z.number().positive().optional(),\n context: AdapterCallContextSchema,\n});\n\n// Gateway → Host: успешный ответ на adapter:call\nexport const AdapterResponseMessageSchema = z.object({\n type: z.literal('adapter:response'),\n requestId: z.string(),\n result: z.unknown(),\n});\n\n// Gateway → Host: ошибка при adapter:call\nexport const AdapterErrorMessageSchema = z.object({\n type: z.literal('adapter:error'),\n requestId: z.string(),\n error: SerializedErrorSchema,\n});\n\n// Gateway → Host: streaming chunk для adapter:call (Phase 2+)\nexport const AdapterChunkMessageSchema = z.object({\n type: z.literal('adapter:chunk'),\n requestId: z.string(),\n data: z.unknown(),\n index: z.number().int().nonnegative(),\n});\n\n// Host → Gateway: cancel in-flight adapter:call (Phase 2+)\nexport const AdapterCancelMessageSchema = z.object({\n type: z.literal('adapter:cancel'),\n requestId: z.string(),\n});\n\n// ── Execute request schema (for POST /api/v1/execute) ──\n\nexport const ExecuteRequestSchema = z.object({\n pluginId: z.string(),\n handlerRef: z.string(),\n exportName: z.string().optional(),\n input: z.unknown(),\n timeoutMs: z.number().int().positive().optional(),\n});\n\nexport const SUPPORTED_PROTOCOL_VERSIONS = ['1.0'] as const;\n\nexport type TraceContext = z.infer<typeof TraceContextSchema>;\nexport type HelloMessage = z.infer<typeof HelloMessageSchema>;\nexport type ConnectedMessage = z.infer<typeof ConnectedMessageSchema>;\nexport type NegotiateMessage = z.infer<typeof NegotiateMessageSchema>;\nexport type CallMessage = z.infer<typeof CallMessageSchema>;\nexport type BulkRedirectMessage = z.infer<typeof BulkRedirectMessageSchema>;\nexport type ChunkMessage = z.infer<typeof ChunkMessageSchema>;\nexport type ResultMessage = z.infer<typeof ResultMessageSchema>;\nexport type ErrorMessage = z.infer<typeof ErrorMessageSchema>;\nexport type HeartbeatMessage = z.infer<typeof HeartbeatMessageSchema>;\nexport type AckMessage = z.infer<typeof AckMessageSchema>;\nexport type ExecutionOutputMessage = z.infer<typeof ExecutionOutputSchema>;\nexport type ExecutionProgressMessage = z.infer<typeof ExecutionProgressSchema>;\nexport type ExecutionArtifactMessage = z.infer<typeof ExecutionArtifactSchema>;\nexport type ExecutionErrorEventMessage = z.infer<typeof ExecutionErrorEventSchema>;\nexport type ExecutionDoneMessage = z.infer<typeof ExecutionDoneSchema>;\nexport type ExecutionRetryMessage = z.infer<typeof ExecutionRetrySchema>;\nexport type ExecutionCancelledMessage = z.infer<typeof ExecutionCancelledSchema>;\nexport type CancelMessage = z.infer<typeof CancelMessageSchema>;\nexport type SubscribeMessage = z.infer<typeof SubscribeMessageSchema>;\nexport type UnsubscribeMessage = z.infer<typeof UnsubscribeMessageSchema>;\nexport type ExecuteRequest = z.infer<typeof ExecuteRequestSchema>;\nexport type WorkspaceInfo = z.infer<typeof WorkspaceInfoSchema>;\nexport type PluginInfo = z.infer<typeof PluginInfoSchema>;\nexport type SerializedError = z.infer<typeof SerializedErrorSchema>;\nexport type AdapterCallContext = z.infer<typeof AdapterCallContextSchema>;\nexport type AdapterName = z.infer<typeof AdapterNameSchema>;\nexport type AdapterCallMessage = z.infer<typeof AdapterCallMessageSchema>;\nexport type AdapterResponseMessage = z.infer<typeof AdapterResponseMessageSchema>;\nexport type AdapterErrorMessage = z.infer<typeof AdapterErrorMessageSchema>;\nexport type AdapterChunkMessage = z.infer<typeof AdapterChunkMessageSchema>;\nexport type AdapterCancelMessage = z.infer<typeof AdapterCancelMessageSchema>;\n\nexport type ExecutionEventMessage =\n | ExecutionOutputMessage\n | ExecutionProgressMessage\n | ExecutionArtifactMessage\n | ExecutionErrorEventMessage\n | ExecutionDoneMessage\n | ExecutionRetryMessage\n | ExecutionCancelledMessage;\n\nexport type InboundMessage =\n | HelloMessage\n | HeartbeatMessage\n | ChunkMessage\n | ResultMessage\n | ErrorMessage\n | CancelMessage\n | SubscribeMessage\n | UnsubscribeMessage\n | AdapterCallMessage\n | AdapterCancelMessage;\n\nexport type OutboundMessage =\n | ConnectedMessage\n | NegotiateMessage\n | CallMessage\n | BulkRedirectMessage\n | AckMessage\n | ExecutionOutputMessage\n | ExecutionProgressMessage\n | ExecutionArtifactMessage\n | ExecutionErrorEventMessage\n | ExecutionDoneMessage\n | AdapterResponseMessage\n | AdapterErrorMessage\n | AdapterChunkMessage;\n","import { z } from 'zod';\nimport { WorkspaceInfoSchema, PluginInfoSchema } from './protocol.js';\n\nexport const HostCapabilitySchema = z.enum(['filesystem', 'git', 'editor-context', 'execution']);\n\nexport const HostTypeSchema = z.enum(['local', 'cloud']);\n\nexport const HostRegistrationSchema = z.object({\n name: z.string(),\n namespaceId: z.string(),\n capabilities: z.array(HostCapabilitySchema),\n workspacePaths: z.array(z.string()),\n hostType: HostTypeSchema.optional(),\n});\n\nexport const HostStatusSchema = z.enum(['online', 'offline', 'degraded', 'reconnecting']);\n\nexport const HostDescriptorSchema = z.object({\n hostId: z.string(),\n name: z.string(),\n namespaceId: z.string(),\n capabilities: z.array(HostCapabilitySchema),\n status: HostStatusSchema,\n lastSeen: z.number(),\n connections: z.array(z.string()),\n // Workspace Agent metadata (populated from hello message)\n hostType: HostTypeSchema.optional(),\n workspaces: z.array(WorkspaceInfoSchema).optional(),\n plugins: z.array(PluginInfoSchema).optional(),\n // Persistence metadata\n createdAt: z.number().optional(),\n updatedAt: z.number().optional(),\n});\n\nexport const HostRegisterResponseSchema = z.object({\n hostId: z.string(),\n machineToken: z.string(),\n status: HostStatusSchema,\n});\n\nexport type HostStatus = z.infer<typeof HostStatusSchema>;\nexport type HostCapability = z.infer<typeof HostCapabilitySchema>;\nexport type HostType = z.infer<typeof HostTypeSchema>;\nexport type HostRegistration = z.infer<typeof HostRegistrationSchema>;\nexport type HostDescriptor = z.infer<typeof HostDescriptorSchema>;\nexport type HostRegisterResponse = z.infer<typeof HostRegisterResponseSchema>;\n\n/**\n * Durable host storage abstraction.\n *\n * Implementations persist host descriptors and tokens across restarts.\n * The registry uses this as the \"cold\" layer while ICache serves as \"hot\" layer.\n */\nexport interface IHostStore {\n /** Persist or update a host descriptor. */\n save(descriptor: HostDescriptor): Promise<void>;\n\n /** Retrieve a host by id + namespace. */\n get(hostId: string, namespaceId: string): Promise<HostDescriptor | null>;\n\n /** List all hosts in a namespace. */\n list(namespaceId: string): Promise<HostDescriptor[]>;\n\n /** List all hosts across all namespaces. */\n listAll(): Promise<HostDescriptor[]>;\n\n /** Remove a host. Returns true if it existed. */\n delete(hostId: string, namespaceId: string): Promise<boolean>;\n\n /** Persist a machine token → host mapping. */\n saveToken(token: string, hostId: string, namespaceId: string): Promise<void>;\n\n /** Resolve a machine token to its host. */\n resolveToken(token: string): Promise<{ hostId: string; namespaceId: string } | null>;\n\n /** Remove a machine token. */\n deleteToken(token: string): Promise<void>;\n}\n","import { z } from 'zod';\n\nexport const TokenTypeSchema = z.enum(['user', 'cli', 'machine']);\n\nexport const AuthContextSchema = z.object({\n type: TokenTypeSchema,\n userId: z.string(),\n namespaceId: z.string(),\n tier: z.enum(['free', 'pro', 'enterprise']),\n permissions: z.array(z.string()),\n});\n\nexport type TokenType = z.infer<typeof TokenTypeSchema>;\nexport type AuthContext = z.infer<typeof AuthContextSchema>;\n\n// ── JWT / Auth service contracts ─────────────────────────────────────────────\n\nexport const RegisterRequestSchema = z.object({\n /** Human-readable name for this agent (e.g. \"MacBook Pro\") */\n name: z.string().min(1).max(64),\n capabilities: z.array(z.string()).default([]),\n /**\n * X25519 public key for E2E encryption, base64url encoded.\n * Generated by the agent; the server stores it for encrypting call payloads.\n */\n publicKey: z.string().optional(),\n /** Unique author handle for the marketplace (e.g. \"kirill\"). Lowercase letters, digits, hyphens. */\n handle: z.string().regex(/^[a-z0-9-]{2,32}$/).optional(),\n /** Contact email for the author. */\n email: z.string().email().optional(),\n});\n\nexport const RegisterResponseSchema = z.object({\n clientId: z.string(),\n clientSecret: z.string(),\n hostId: z.string(),\n /** Server-assigned namespace — use this in subsequent API calls. */\n namespaceId: z.string(),\n handle: z.string().optional(),\n});\n\nexport const TokenRequestSchema = z.object({\n clientId: z.string(),\n clientSecret: z.string(),\n});\n\nexport const TokenResponseSchema = z.object({\n accessToken: z.string(),\n refreshToken: z.string(),\n /** Seconds until accessToken expires */\n expiresIn: z.number(),\n tokenType: z.literal('Bearer'),\n});\n\nexport const RefreshRequestSchema = z.object({\n refreshToken: z.string(),\n});\n\n/** JWT payload (sub = hostId) */\nexport const JwtPayloadSchema = z.object({\n sub: z.string(), // hostId\n namespaceId: z.string(),\n tier: z.enum(['free', 'pro', 'enterprise']),\n type: TokenTypeSchema,\n /** Permissions embedded in the token at issuance time. */\n permissions: z.array(z.string()).optional(),\n iat: z.number(),\n exp: z.number(),\n});\n\nexport type RegisterRequest = z.infer<typeof RegisterRequestSchema>;\nexport type RegisterResponse = z.infer<typeof RegisterResponseSchema>;\nexport type TokenRequest = z.infer<typeof TokenRequestSchema>;\nexport type TokenResponse = z.infer<typeof TokenResponseSchema>;\nexport type RefreshRequest = z.infer<typeof RefreshRequestSchema>;\nexport type JwtPayload = z.infer<typeof JwtPayloadSchema>;\n","/**\n * @module gateway-contracts/client-protocol\n *\n * WS protocol for observer clients (CLI, Studio, IDE).\n * Endpoint: /clients/connect\n *\n * Separate from host-protocol (protocol.ts) — clients observe executions,\n * they don't serve adapter calls.\n *\n * Client → Gateway inbound messages:\n * - client:hello — handshake\n * - client:subscribe — subscribe to execution events\n * - client:unsubscribe\n * - client:cancel — cancel an execution (convenience, same as POST /execute/:id/cancel)\n *\n * Gateway → Client outbound messages:\n * - client:connected — handshake ack\n * - execution:output — (reused from protocol.ts ExecutionEventMessage)\n * - execution:progress\n * - execution:artifact\n * - execution:error\n * - execution:done\n * - client:error — protocol-level error (bad subscribe, not found, etc.)\n */\n\nimport { z } from 'zod';\nimport type { ExecutionEventMessage } from './protocol.js';\n\n// ── Inbound (Client → Gateway) ────────────────────────────────────────────────\n\nexport const ClientHelloSchema = z.object({\n type: z.literal('client:hello'),\n clientVersion: z.string(),\n});\n\nexport const ClientSubscribeSchema = z.object({\n type: z.literal('client:subscribe'),\n executionId: z.string().uuid(),\n});\n\nexport const ClientUnsubscribeSchema = z.object({\n type: z.literal('client:unsubscribe'),\n executionId: z.string().uuid(),\n});\n\nexport const ClientCancelSchema = z.object({\n type: z.literal('client:cancel'),\n executionId: z.string().uuid(),\n reason: z.enum(['user', 'timeout']).optional(),\n});\n\n// ── Outbound (Gateway → Client) ───────────────────────────────────────────────\n\nexport const ClientConnectedSchema = z.object({\n type: z.literal('client:connected'),\n protocolVersion: z.string(),\n connectionId: z.string(),\n});\n\nexport const ClientErrorSchema = z.object({\n type: z.literal('client:error'),\n code: z.enum([\n 'EXECUTION_NOT_FOUND',\n 'FORBIDDEN',\n 'INVALID_MESSAGE',\n 'CANCEL_FAILED',\n ]),\n message: z.string(),\n executionId: z.string().optional(),\n});\n\n// ── Types ─────────────────────────────────────────────────────────────────────\n\nexport type ClientHello = z.infer<typeof ClientHelloSchema>;\nexport type ClientSubscribe = z.infer<typeof ClientSubscribeSchema>;\nexport type ClientUnsubscribe = z.infer<typeof ClientUnsubscribeSchema>;\nexport type ClientCancel = z.infer<typeof ClientCancelSchema>;\nexport type ClientConnected = z.infer<typeof ClientConnectedSchema>;\nexport type ClientError = z.infer<typeof ClientErrorSchema>;\n\nexport type ClientInboundMessage =\n | ClientHello\n | ClientSubscribe\n | ClientUnsubscribe\n | ClientCancel;\n\nexport type ClientOutboundMessage =\n | ClientConnected\n | ClientError\n | ExecutionEventMessage;\n\nexport const CLIENT_PROTOCOL_VERSION = '1.0';\n","/**\n * @module @kb-labs/gateway-contracts/llm-gateway\n * OpenAI-compatible AI Gateway schemas and types.\n *\n * Clients interact using OpenAI ChatCompletion format, but `model` field\n * is a tier abstraction (small/medium/large/fast), NOT a literal model name.\n * The platform resolves the tier to a concrete provider + model via LLMRouter config.\n */\nimport { z } from 'zod';\n\n// ── Request ─────────────────────────────────────────────────────────────────\n\n/** Tier-based model selector. Clients never specify a concrete model. */\nexport const LLMTierSchema = z.enum(['small', 'medium', 'large']);\n\nexport const ChatMessageSchema = z.object({\n role: z.enum(['system', 'user', 'assistant', 'tool']),\n content: z.string(),\n tool_call_id: z.string().optional(),\n tool_calls: z\n .array(\n z.object({\n id: z.string(),\n type: z.literal('function'),\n function: z.object({\n name: z.string(),\n arguments: z.string(), // JSON-stringified\n }),\n }),\n )\n .optional(),\n});\n\nexport const ChatToolSchema = z.object({\n type: z.literal('function'),\n function: z.object({\n name: z.string(),\n description: z.string().optional(),\n parameters: z.record(z.unknown()).optional(),\n }),\n});\n\nexport const ChatCompletionRequestSchema = z.object({\n /** Tier-based model selector: \"small\" | \"medium\" | \"large\" | \"fast\" */\n model: LLMTierSchema,\n messages: z.array(ChatMessageSchema).min(1),\n temperature: z.number().min(0).max(2).optional(),\n max_tokens: z.number().int().positive().optional(),\n stop: z.union([z.string(), z.array(z.string())]).optional(),\n stream: z.boolean().optional().default(false),\n tools: z.array(ChatToolSchema).optional(),\n tool_choice: z\n .union([\n z.enum(['auto', 'required', 'none']),\n z.object({\n type: z.literal('function'),\n function: z.object({ name: z.string() }),\n }),\n ])\n .optional(),\n});\n\nexport type ChatCompletionRequest = z.infer<typeof ChatCompletionRequestSchema>;\n\n// ── Response ────────────────────────────────────────────────────────────────\n\nexport interface ChatCompletionChoice {\n index: number;\n message: {\n role: 'assistant';\n content: string | null;\n tool_calls?: Array<{\n id: string;\n type: 'function';\n function: { name: string; arguments: string };\n }>;\n };\n finish_reason: 'stop' | 'tool_calls' | 'length' | null;\n}\n\nexport interface ChatCompletionUsage {\n prompt_tokens: number;\n completion_tokens: number;\n total_tokens: number;\n}\n\nexport interface ChatCompletionResponse {\n id: string;\n object: 'chat.completion';\n created: number;\n /** Returns the tier used, not the concrete model (abstraction preserved) */\n model: string;\n choices: ChatCompletionChoice[];\n usage: ChatCompletionUsage;\n}\n\n// ── Streaming ───────────────────────────────────────────────────────────────\n\nexport interface ChatCompletionChunkDelta {\n role?: 'assistant';\n content?: string | null;\n tool_calls?: Array<{\n index: number;\n id?: string;\n type?: 'function';\n function?: { name?: string; arguments?: string };\n }>;\n}\n\nexport interface ChatCompletionChunk {\n id: string;\n object: 'chat.completion.chunk';\n created: number;\n model: string;\n choices: Array<{\n index: number;\n delta: ChatCompletionChunkDelta;\n finish_reason: 'stop' | 'tool_calls' | 'length' | null;\n }>;\n}\n","/**\n * @module @kb-labs/gateway-contracts/telemetry\n * Telemetry ingestion schemas for the AI Gateway.\n *\n * External products send events through `POST /telemetry/v1/ingest`.\n * Events are written to platform analytics (SQLite/DuckDB/File) via IAnalytics.track().\n *\n * Schema is intentionally minimal — `payload` is free-form.\n * Platform provides recommended presets but does not enforce them.\n */\nimport { z } from 'zod';\n\n// ── Single event ────────────────────────────────────────────────────────────\n\nexport const TelemetryEventSchema = z.object({\n /** Source product/service name (e.g., \"my-api\", \"billing-service\") */\n source: z.string().min(1).max(128),\n /** Event type/name using dot notation (e.g., \"user.signup\", \"api.request\") */\n type: z.string().min(1).max(256),\n /** ISO 8601 timestamp. Defaults to server ingest time if omitted. */\n timestamp: z.string().datetime().optional(),\n /** Free-form event data. No schema enforced — products decide what to send. */\n payload: z.record(z.unknown()).optional(),\n /** Flat key-value tags for filtering/aggregation (e.g., { env: \"prod\", region: \"eu\" }) */\n tags: z.record(z.string()).optional(),\n});\n\nexport type TelemetryEvent = z.infer<typeof TelemetryEventSchema>;\n\n// ── Batch ingestion request ─────────────────────────────────────────────────\n\nexport const TelemetryIngestRequestSchema = z.object({\n /** Array of events to ingest (1–500 per batch) */\n events: z.array(TelemetryEventSchema).min(1).max(500),\n});\n\nexport type TelemetryIngestRequest = z.infer<typeof TelemetryIngestRequestSchema>;\n\n// ── Ingestion response ──────────────────────────────────────────────────────\n\nexport interface TelemetryIngestResponse {\n /** Number of events accepted */\n accepted: number;\n /** Number of events rejected (validation errors) */\n rejected: number;\n /** Errors for rejected events, if any */\n errors?: Array<{ index: number; message: string }>;\n}\n","/**\n * @module @kb-labs/gateway-contracts/platform-api\n * Unified Platform API — single dispatch endpoint for any adapter.\n *\n * Route: POST /platform/v1/{adapter}/{method}\n * Adapter and method come from URL params; args come from the request body.\n */\nimport { z } from 'zod';\n\n// ── Request ─────────────────────────────────────────────────────────────────\n\nexport const PlatformCallRequestSchema = z.object({\n /** Arguments to pass to the adapter method. Order matters. */\n args: z.array(z.unknown()).default([]),\n});\n\nexport type PlatformCallRequest = z.infer<typeof PlatformCallRequestSchema>;\n\n// ── Response ────────────────────────────────────────────────────────────────\n\nexport interface PlatformCallResponse {\n ok: boolean;\n result?: unknown;\n error?: { message: string; code?: string };\n /** Wall-clock duration of the adapter call in milliseconds. */\n durationMs: number;\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kb-labs/gateway-contracts",
3
- "version": "2.96.0",
3
+ "version": "2.100.0",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -21,7 +21,7 @@
21
21
  "tsup": "^8.5.0",
22
22
  "typescript": "^5",
23
23
  "vitest": "^3.2.6",
24
- "@kb-labs/devkit": "2.96.0"
24
+ "@kb-labs/devkit": "2.100.0"
25
25
  },
26
26
  "engines": {
27
27
  "node": ">=20.0.0",