@kb-labs/rest-api-contracts 2.119.0-canary.f8394d5fd → 2.119.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.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/error-code.ts","../src/envelopes.ts","../src/route-schemas.ts"],"names":["ErrorCode","z"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Standardized error codes shared across CLI, REST and Studio.\n * These values intentionally line up with the codes used by the\n * plugin runtime so adapters can map them to HTTP status codes.\n */\nexport enum ErrorCode {\n INTERNAL = 'INTERNAL',\n PLUGIN_PERMISSION_DENIED = 'PLUGIN_PERMISSION_DENIED',\n PLUGIN_CAPABILITY_MISSING = 'PLUGIN_CAPABILITY_MISSING',\n PLUGIN_HANDLER_NOT_FOUND = 'PLUGIN_HANDLER_NOT_FOUND',\n PLUGIN_TIMEOUT = 'PLUGIN_TIMEOUT',\n PLUGIN_SCHEMA_VALIDATION_FAILED = 'PLUGIN_SCHEMA_VALIDATION_FAILED',\n PLUGIN_ARTIFACT_FAILED = 'PLUGIN_ARTIFACT_FAILED',\n PLUGIN_QUOTA_EXCEEDED = 'PLUGIN_QUOTA_EXCEEDED',\n ARTIFACT_READ_DENIED = 'ARTIFACT_READ_DENIED',\n ARTIFACT_WRITE_DENIED = 'ARTIFACT_WRITE_DENIED',\n CONFLICT = 'CONFLICT',\n}\n\n/**\n * Helper describing a compact permission summary.\n */\nexport interface PermissionSummary {\n fs?: {\n mode?: string;\n allowCount?: number;\n denyCount?: number;\n };\n net?: 'none' | { allowHostsCount?: number; denyHostsCount?: number };\n env?: { allowCount?: number };\n quotas?: {\n timeoutMs?: number;\n memoryMb?: number;\n cpuMs?: number;\n };\n capabilities?: string[];\n}\n\n/**\n * Permissions diff emitted when the runtime compares required\n * vs granted permissions for a failing invocation.\n */\nexport interface PermissionDiff {\n required?: string[];\n granted?: string[];\n}\n\n","import { z } from 'zod';\nimport type { PermissionDiff, PermissionSummary } from './error-code';\n\nexport interface EnvelopeMeta {\n requestId: string;\n durationMs: number;\n apiVersion: string;\n [key: string]: unknown;\n}\n\nexport type SuccessEnvelope<T = unknown> = {\n ok: true;\n data: T;\n meta?: EnvelopeMeta;\n};\n\nexport type ErrorEnvelope = {\n ok: false;\n error: {\n code: string;\n message: string;\n details?: Record<string, unknown>;\n cause?: unknown;\n traceId?: string;\n };\n meta: EnvelopeMeta;\n};\n\nexport const errorEnvelopeSchema = z.object({\n ok: z.literal(false),\n error: z.object({\n code: z.string(),\n message: z.string(),\n details: z.record(z.string(), z.unknown()).optional(),\n cause: z.unknown().optional(),\n traceId: z.string().optional(),\n }),\n meta: z.object({\n requestId: z.string(),\n durationMs: z.number(),\n apiVersion: z.string(),\n }),\n});\n\n/**\n * Structured error produced by the plugin runtime.\n */\nexport interface PluginErrorEnvelope {\n status: 'error';\n http: number;\n code: string;\n message: string;\n details?: Record<string, unknown>;\n trace?: string;\n meta: {\n requestId: string;\n pluginId: string;\n pluginVersion: string;\n routeOrCommand: string;\n timeMs: number;\n cpuMs?: number;\n memMb?: number;\n perms?: PermissionSummary | PermissionDiff | Record<string, unknown>;\n };\n}\n\n\n","/**\n * @module @kb-labs/rest-api-contracts/route-schemas\n * Zod schemas for REST API route-level body/query/response.\n * Used with fastify-type-provider-zod so route schemas are fully typed.\n */\n\nimport { z } from 'zod';\n\n// ── Shared ────────────────────────────────────────────────────────────────────\n\nexport const ErrorResponseSchema = z.object({\n ok: z.literal(false),\n message: z.string().optional(),\n error: z.object({\n code: z.string(),\n message: z.string(),\n }),\n});\n\nexport const OkResponseSchema = z.object({ ok: z.literal(true) });\n\nconst AnyRecord = z.record(z.string(), z.unknown());\n\n// ── Jobs ──────────────────────────────────────────────────────────────────────\n\nexport const ListJobsQuerySchema = z.object({\n status: z.enum(['active', 'paused']).optional(),\n});\n\nexport const JobSchema = z.object({\n id: z.string(),\n name: z.string().optional(),\n status: z.enum(['active', 'paused']).optional(),\n schedule: z.string().optional(),\n}).passthrough();\n\nexport const JobsListResponseSchema = z.object({\n jobs: z.array(JobSchema),\n});\n\nexport const JobResponseSchema = z.object({\n job: JobSchema,\n});\n\nexport const JobStatsResponseSchema = z.object({\n stats: z.object({\n total: z.number(),\n jobs: z.array(JobSchema),\n }),\n});\n\nexport const JobActionResponseSchema = z.object({\n success: z.literal(true),\n message: z.string(),\n});\n\n// ── Workflows ─────────────────────────────────────────────────────────────────\n\nexport const ListWorkflowsQuerySchema = z.object({\n source: z.enum(['manifest', 'standalone']).optional(),\n status: z.enum(['active', 'paused', 'disabled']).optional(),\n tags: z.string().optional(),\n search: z.string().optional(),\n});\n\nexport const WorkflowSchema = AnyRecord;\n\nexport const WorkflowsListResponseSchema = z.object({\n workflows: z.array(AnyRecord),\n total: z.number(),\n});\n\nexport const WorkflowResponseSchema = z.object({\n workflow: AnyRecord.nullable(),\n});\n\nexport const CreateWorkflowBodySchema = z.object({\n spec: AnyRecord,\n});\n\nexport const UpdateWorkflowBodySchema = z.object({\n spec: z.object({\n name: z.string().min(1).optional(),\n version: z.string().min(1).optional(),\n description: z.string().optional(),\n on: z.any().optional(),\n env: z.record(z.string(), z.string()).optional(),\n secrets: z.array(z.string().min(1)).optional(),\n jobs: z.record(z.string().min(1), z.any()).optional(),\n }).optional(),\n status: z.enum(['active', 'paused', 'disabled']).optional(),\n});\n\nexport const ScheduleConfigBodySchema = z.object({\n cron: z.string().min(1),\n enabled: z.boolean(),\n timezone: z.string().optional(),\n});\n\nexport const ValidateWorkflowBodySchema = z.object({\n spec: z.any(),\n});\n\nexport const HandlersListResponseSchema = z.object({\n handlers: z.array(AnyRecord),\n total: z.number(),\n});\n"]}
1
+ {"version":3,"sources":["../../home/runner/work/kb-labs/kb-labs/services/rest-api/contracts/src/error-code.ts","../../home/runner/work/kb-labs/kb-labs/services/rest-api/contracts/src/envelopes.ts","../../home/runner/work/kb-labs/kb-labs/services/rest-api/contracts/src/route-schemas.ts"],"names":["ErrorCode","z"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Standardized error codes shared across CLI, REST and Studio.\n * These values intentionally line up with the codes used by the\n * plugin runtime so adapters can map them to HTTP status codes.\n */\nexport enum ErrorCode {\n INTERNAL = 'INTERNAL',\n PLUGIN_PERMISSION_DENIED = 'PLUGIN_PERMISSION_DENIED',\n PLUGIN_CAPABILITY_MISSING = 'PLUGIN_CAPABILITY_MISSING',\n PLUGIN_HANDLER_NOT_FOUND = 'PLUGIN_HANDLER_NOT_FOUND',\n PLUGIN_TIMEOUT = 'PLUGIN_TIMEOUT',\n PLUGIN_SCHEMA_VALIDATION_FAILED = 'PLUGIN_SCHEMA_VALIDATION_FAILED',\n PLUGIN_ARTIFACT_FAILED = 'PLUGIN_ARTIFACT_FAILED',\n PLUGIN_QUOTA_EXCEEDED = 'PLUGIN_QUOTA_EXCEEDED',\n ARTIFACT_READ_DENIED = 'ARTIFACT_READ_DENIED',\n ARTIFACT_WRITE_DENIED = 'ARTIFACT_WRITE_DENIED',\n CONFLICT = 'CONFLICT',\n}\n\n/**\n * Helper describing a compact permission summary.\n */\nexport interface PermissionSummary {\n fs?: {\n mode?: string;\n allowCount?: number;\n denyCount?: number;\n };\n net?: 'none' | { allowHostsCount?: number; denyHostsCount?: number };\n env?: { allowCount?: number };\n quotas?: {\n timeoutMs?: number;\n memoryMb?: number;\n cpuMs?: number;\n };\n capabilities?: string[];\n}\n\n/**\n * Permissions diff emitted when the runtime compares required\n * vs granted permissions for a failing invocation.\n */\nexport interface PermissionDiff {\n required?: string[];\n granted?: string[];\n}\n\n","import { z } from 'zod';\nimport type { PermissionDiff, PermissionSummary } from './error-code';\n\nexport interface EnvelopeMeta {\n requestId: string;\n durationMs: number;\n apiVersion: string;\n [key: string]: unknown;\n}\n\nexport type SuccessEnvelope<T = unknown> = {\n ok: true;\n data: T;\n meta?: EnvelopeMeta;\n};\n\nexport type ErrorEnvelope = {\n ok: false;\n error: {\n code: string;\n message: string;\n details?: Record<string, unknown>;\n cause?: unknown;\n traceId?: string;\n };\n meta: EnvelopeMeta;\n};\n\nexport const errorEnvelopeSchema = z.object({\n ok: z.literal(false),\n error: z.object({\n code: z.string(),\n message: z.string(),\n details: z.record(z.string(), z.unknown()).optional(),\n cause: z.unknown().optional(),\n traceId: z.string().optional(),\n }),\n meta: z.object({\n requestId: z.string(),\n durationMs: z.number(),\n apiVersion: z.string(),\n }),\n});\n\n/**\n * Structured error produced by the plugin runtime.\n */\nexport interface PluginErrorEnvelope {\n status: 'error';\n http: number;\n code: string;\n message: string;\n details?: Record<string, unknown>;\n trace?: string;\n meta: {\n requestId: string;\n pluginId: string;\n pluginVersion: string;\n routeOrCommand: string;\n timeMs: number;\n cpuMs?: number;\n memMb?: number;\n perms?: PermissionSummary | PermissionDiff | Record<string, unknown>;\n };\n}\n\n\n","/**\n * @module @kb-labs/rest-api-contracts/route-schemas\n * Zod schemas for REST API route-level body/query/response.\n * Used with fastify-type-provider-zod so route schemas are fully typed.\n */\n\nimport { z } from 'zod';\n\n// ── Shared ────────────────────────────────────────────────────────────────────\n\nexport const ErrorResponseSchema = z.object({\n ok: z.literal(false),\n message: z.string().optional(),\n error: z.object({\n code: z.string(),\n message: z.string(),\n }),\n});\n\nexport const OkResponseSchema = z.object({ ok: z.literal(true) });\n\nconst AnyRecord = z.record(z.string(), z.unknown());\n\n// ── Jobs ──────────────────────────────────────────────────────────────────────\n\nexport const ListJobsQuerySchema = z.object({\n status: z.enum(['active', 'paused']).optional(),\n});\n\nexport const JobSchema = z.object({\n id: z.string(),\n name: z.string().optional(),\n status: z.enum(['active', 'paused']).optional(),\n schedule: z.string().optional(),\n}).passthrough();\n\nexport const JobsListResponseSchema = z.object({\n jobs: z.array(JobSchema),\n});\n\nexport const JobResponseSchema = z.object({\n job: JobSchema,\n});\n\nexport const JobStatsResponseSchema = z.object({\n stats: z.object({\n total: z.number(),\n jobs: z.array(JobSchema),\n }),\n});\n\nexport const JobActionResponseSchema = z.object({\n success: z.literal(true),\n message: z.string(),\n});\n\n// ── Workflows ─────────────────────────────────────────────────────────────────\n\nexport const ListWorkflowsQuerySchema = z.object({\n source: z.enum(['manifest', 'standalone']).optional(),\n status: z.enum(['active', 'paused', 'disabled']).optional(),\n tags: z.string().optional(),\n search: z.string().optional(),\n});\n\nexport const WorkflowSchema = AnyRecord;\n\nexport const WorkflowsListResponseSchema = z.object({\n workflows: z.array(AnyRecord),\n total: z.number(),\n});\n\nexport const WorkflowResponseSchema = z.object({\n workflow: AnyRecord.nullable(),\n});\n\nexport const CreateWorkflowBodySchema = z.object({\n spec: AnyRecord,\n});\n\nexport const UpdateWorkflowBodySchema = z.object({\n spec: z.object({\n name: z.string().min(1).optional(),\n version: z.string().min(1).optional(),\n description: z.string().optional(),\n on: z.any().optional(),\n env: z.record(z.string(), z.string()).optional(),\n secrets: z.array(z.string().min(1)).optional(),\n jobs: z.record(z.string().min(1), z.any()).optional(),\n }).optional(),\n status: z.enum(['active', 'paused', 'disabled']).optional(),\n});\n\nexport const ScheduleConfigBodySchema = z.object({\n cron: z.string().min(1),\n enabled: z.boolean(),\n timezone: z.string().optional(),\n});\n\nexport const ValidateWorkflowBodySchema = z.object({\n spec: z.any(),\n});\n\nexport const HandlersListResponseSchema = z.object({\n handlers: z.array(AnyRecord),\n total: z.number(),\n});\n"]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@kb-labs/rest-api-contracts",
3
3
  "description": "Shared API contracts for KB Labs REST/CLI/Studio surfaces",
4
- "version": "2.119.0-canary.f8394d5fd",
4
+ "version": "2.119.0",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
7
7
  "types": "./dist/index.d.ts",
@@ -17,7 +17,7 @@
17
17
  ],
18
18
  "dependencies": {
19
19
  "zod": "^3.25.76",
20
- "@kb-labs/plugin-contracts": "2.119.0-canary.f8394d5fd"
20
+ "@kb-labs/plugin-contracts": "2.119.0"
21
21
  },
22
22
  "devDependencies": {
23
23
  "@types/node": "^24.3.3",
@@ -25,10 +25,10 @@
25
25
  "tsup": "^8.5.0",
26
26
  "typescript": "^5.6.3",
27
27
  "vitest": "^3.2.6",
28
- "@kb-labs/devkit": "2.119.0-canary.f8394d5fd"
28
+ "@kb-labs/devkit": "2.119.0"
29
29
  },
30
30
  "engines": {
31
- "node": ">=22.0.0",
31
+ "node": ">=24.0.0",
32
32
  "pnpm": ">=9.0.0"
33
33
  },
34
34
  "publishConfig": {