@brew-cms/api 0.2.2 → 0.3.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/errors.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import { DomainError } from '@brew-cms/core';
1
2
  export interface ApiErrorEnvelope {
2
3
  error: {
3
4
  code: string;
@@ -6,6 +7,26 @@ export interface ApiErrorEnvelope {
6
7
  details?: unknown;
7
8
  };
8
9
  }
10
+ /**
11
+ * Explicit API-layer error with a stable machine-readable code.
12
+ * Prefer these (or core DomainError subclasses) over ad-hoc inline
13
+ * `{ error: { code } }` bodies so every failure carries requestId.
14
+ */
15
+ export declare class ApiError extends DomainError {
16
+ constructor(message: string, code: string, statusCode: number, details?: unknown);
17
+ }
18
+ export declare class NoMediaRepositoryError extends ApiError {
19
+ constructor();
20
+ }
21
+ export declare class IntelligenceUnavailableError extends ApiError {
22
+ constructor(message?: string);
23
+ }
24
+ export declare class InvalidQueryError extends ApiError {
25
+ constructor(message?: string);
26
+ }
27
+ export declare class RouteNotFoundError extends ApiError {
28
+ constructor(path: string);
29
+ }
9
30
  export declare function formatErrorResponse(err: unknown, requestId?: string): {
10
31
  status: number;
11
32
  body: ApiErrorEnvelope;
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB,CAAC;CACH;AAED,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,OAAO,EACZ,SAAS,CAAC,EAAE,MAAM,GACjB;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,gBAAgB,CAAA;CAAE,CA2B5C"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB,CAAC;CACH;AAED;;;;GAIG;AACH,qBAAa,QAAS,SAAQ,WAAW;gBAC3B,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO;CAGjF;AAED,qBAAa,sBAAuB,SAAQ,QAAQ;;CAInD;AAED,qBAAa,4BAA6B,SAAQ,QAAQ;gBAC5C,OAAO,SAA4C;CAGhE;AAED,qBAAa,iBAAkB,SAAQ,QAAQ;gBACjC,OAAO,SAAqC;CAGzD;AAED,qBAAa,kBAAmB,SAAQ,QAAQ;gBAClC,IAAI,EAAE,MAAM;CAGzB;AAED,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,OAAO,EACZ,SAAS,CAAC,EAAE,MAAM,GACjB;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,gBAAgB,CAAA;CAAE,CAgD5C"}
package/dist/errors.js CHANGED
@@ -1,4 +1,35 @@
1
+ import { ZodError } from 'zod';
1
2
  import { DomainError } from '@brew-cms/core';
3
+ /**
4
+ * Explicit API-layer error with a stable machine-readable code.
5
+ * Prefer these (or core DomainError subclasses) over ad-hoc inline
6
+ * `{ error: { code } }` bodies so every failure carries requestId.
7
+ */
8
+ export class ApiError extends DomainError {
9
+ constructor(message, code, statusCode, details) {
10
+ super(message, code, statusCode, details);
11
+ }
12
+ }
13
+ export class NoMediaRepositoryError extends ApiError {
14
+ constructor() {
15
+ super('Media repository not configured.', 'NO_MEDIA_REPO', 500);
16
+ }
17
+ }
18
+ export class IntelligenceUnavailableError extends ApiError {
19
+ constructor(message = 'Intelligence service is not configured.') {
20
+ super(message, 'INTELLIGENCE_UNAVAILABLE', 503);
21
+ }
22
+ }
23
+ export class InvalidQueryError extends ApiError {
24
+ constructor(message = "Query parameter 'q' is required.") {
25
+ super(message, 'INVALID_QUERY', 400);
26
+ }
27
+ }
28
+ export class RouteNotFoundError extends ApiError {
29
+ constructor(path) {
30
+ super(`No route matches '${path}'.`, 'ROUTE_NOT_FOUND', 404, { path });
31
+ }
32
+ }
2
33
  export function formatErrorResponse(err, requestId) {
3
34
  if (err instanceof DomainError) {
4
35
  return {
@@ -13,14 +44,34 @@ export function formatErrorResponse(err, requestId) {
13
44
  },
14
45
  };
15
46
  }
16
- // Fallback for unexpected internal errors: NEVER expose raw stack traces or internal SQL details
17
- const fallbackMessage = err instanceof Error ? err.message : 'An unexpected internal error occurred.';
47
+ // Zod input validation stable 422 (never 500 for client mistakes)
48
+ if (err instanceof ZodError) {
49
+ return {
50
+ status: 422,
51
+ body: {
52
+ error: {
53
+ code: 'VALIDATION_ERROR',
54
+ message: 'Request validation failed.',
55
+ requestId,
56
+ details: err.issues.map((i) => ({
57
+ path: i.path.join('.'),
58
+ message: i.message,
59
+ code: i.code,
60
+ })),
61
+ },
62
+ },
63
+ };
64
+ }
65
+ // Fallback: NEVER expose raw messages (may contain SQL internals),
66
+ // stack traces, or secrets. Correlate via requestId in server logs.
67
+ // eslint-disable-next-line no-console
68
+ console.error(`[brew-cms:api] internal error (requestId=${requestId ?? 'n/a'}):`, err);
18
69
  return {
19
70
  status: 500,
20
71
  body: {
21
72
  error: {
22
73
  code: 'INTERNAL_ERROR',
23
- message: fallbackMessage,
74
+ message: 'An unexpected internal error occurred.',
24
75
  requestId,
25
76
  },
26
77
  },
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAW7C,MAAM,UAAU,mBAAmB,CACjC,GAAY,EACZ,SAAkB;IAElB,IAAI,GAAG,YAAY,WAAW,EAAE,CAAC;QAC/B,OAAO;YACL,MAAM,EAAE,GAAG,CAAC,UAAU;YACtB,IAAI,EAAE;gBACJ,KAAK,EAAE;oBACL,IAAI,EAAE,GAAG,CAAC,IAAI;oBACd,OAAO,EAAE,GAAG,CAAC,OAAO;oBACpB,SAAS;oBACT,OAAO,EAAE,GAAG,CAAC,OAAO;iBACrB;aACF;SACF,CAAC;IACJ,CAAC;IAED,iGAAiG;IACjG,MAAM,eAAe,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,wCAAwC,CAAC;IACtG,OAAO;QACL,MAAM,EAAE,GAAG;QACX,IAAI,EAAE;YACJ,KAAK,EAAE;gBACL,IAAI,EAAE,gBAAgB;gBACtB,OAAO,EAAE,eAAe;gBACxB,SAAS;aACV;SACF;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAW7C;;;;GAIG;AACH,MAAM,OAAO,QAAS,SAAQ,WAAW;IACvC,YAAY,OAAe,EAAE,IAAY,EAAE,UAAkB,EAAE,OAAiB;QAC9E,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC;CACF;AAED,MAAM,OAAO,sBAAuB,SAAQ,QAAQ;IAClD;QACE,KAAK,CAAC,kCAAkC,EAAE,eAAe,EAAE,GAAG,CAAC,CAAC;IAClE,CAAC;CACF;AAED,MAAM,OAAO,4BAA6B,SAAQ,QAAQ;IACxD,YAAY,OAAO,GAAG,yCAAyC;QAC7D,KAAK,CAAC,OAAO,EAAE,0BAA0B,EAAE,GAAG,CAAC,CAAC;IAClD,CAAC;CACF;AAED,MAAM,OAAO,iBAAkB,SAAQ,QAAQ;IAC7C,YAAY,OAAO,GAAG,kCAAkC;QACtD,KAAK,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,CAAC,CAAC;IACvC,CAAC;CACF;AAED,MAAM,OAAO,kBAAmB,SAAQ,QAAQ;IAC9C,YAAY,IAAY;QACtB,KAAK,CAAC,qBAAqB,IAAI,IAAI,EAAE,iBAAiB,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IACzE,CAAC;CACF;AAED,MAAM,UAAU,mBAAmB,CACjC,GAAY,EACZ,SAAkB;IAElB,IAAI,GAAG,YAAY,WAAW,EAAE,CAAC;QAC/B,OAAO;YACL,MAAM,EAAE,GAAG,CAAC,UAAU;YACtB,IAAI,EAAE;gBACJ,KAAK,EAAE;oBACL,IAAI,EAAE,GAAG,CAAC,IAAI;oBACd,OAAO,EAAE,GAAG,CAAC,OAAO;oBACpB,SAAS;oBACT,OAAO,EAAE,GAAG,CAAC,OAAO;iBACrB;aACF;SACF,CAAC;IACJ,CAAC;IAED,oEAAoE;IACpE,IAAI,GAAG,YAAY,QAAQ,EAAE,CAAC;QAC5B,OAAO;YACL,MAAM,EAAE,GAAG;YACX,IAAI,EAAE;gBACJ,KAAK,EAAE;oBACL,IAAI,EAAE,kBAAkB;oBACxB,OAAO,EAAE,4BAA4B;oBACrC,SAAS;oBACT,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;wBAC9B,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;wBACtB,OAAO,EAAE,CAAC,CAAC,OAAO;wBAClB,IAAI,EAAE,CAAC,CAAC,IAAI;qBACb,CAAC,CAAC;iBACJ;aACF;SACF,CAAC;IACJ,CAAC;IAED,mEAAmE;IACnE,oEAAoE;IACpE,sCAAsC;IACtC,OAAO,CAAC,KAAK,CAAC,4CAA4C,SAAS,IAAI,KAAK,IAAI,EAAE,GAAG,CAAC,CAAC;IACvF,OAAO;QACL,MAAM,EAAE,GAAG;QACX,IAAI,EAAE;YACJ,KAAK,EAAE;gBACL,IAAI,EAAE,gBAAgB;gBACtB,OAAO,EAAE,wCAAwC;gBACjD,SAAS;aACV;SACF;KACF,CAAC;AACJ,CAAC"}
package/dist/router.d.ts CHANGED
@@ -1,6 +1,5 @@
1
- import type { Actor, DocumentService, WorkflowService, AgentService, AuditService, TaxonomyService, RevisionRepository, MediaProvider, MediaAssetRepository, AgentRepository } from '@brew-cms/core';
1
+ import type { Actor, DocumentService, WorkflowService, AgentService, AuditService, TaxonomyService, MediaService, IdempotencyStore, PolicyDecision } from '@brew-cms/core';
2
2
  import type { SourceRegistry, IndexingService, HybridRetrievalService, CanonicalSourceResolver } from '@brew-cms/intelligence';
3
- import { InMemoryIdempotencyStore } from './idempotency.js';
4
3
  export interface ApiRequest {
5
4
  method: string;
6
5
  path: string;
@@ -14,17 +13,30 @@ export interface ApiResponse {
14
13
  headers?: Record<string, string>;
15
14
  body: unknown;
16
15
  }
16
+ /**
17
+ * Success envelope (Charter Phase 1). Default shape for every 2xx response:
18
+ * `{ data, requestId, policy? }`. Pass `?envelope=legacy` to receive the
19
+ * historic raw body (supported for one release cycle, then removed).
20
+ * `policy` is populated only where the router truthfully knows the gate
21
+ * outcome (agent approval flows); it is omitted elsewhere rather than
22
+ * fabricated. Full policy surfacing arrives with service-returned decisions.
23
+ */
24
+ export interface ApiSuccessEnvelope {
25
+ data: unknown;
26
+ requestId: string;
27
+ policy?: {
28
+ decision: PolicyDecision;
29
+ reason?: string;
30
+ };
31
+ }
17
32
  export interface ApiContext {
18
33
  documentService: DocumentService;
19
34
  workflowService: WorkflowService;
20
35
  agentService: AgentService;
21
36
  auditService: AuditService;
22
37
  taxonomyService: TaxonomyService;
23
- revisionRepo: RevisionRepository;
24
- mediaProvider?: MediaProvider;
25
- mediaRepo?: MediaAssetRepository;
26
- agentRepo?: AgentRepository;
27
- idempotencyStore?: InMemoryIdempotencyStore;
38
+ mediaService?: MediaService;
39
+ idempotencyStore?: IdempotencyStore;
28
40
  sourceRegistry?: SourceRegistry;
29
41
  indexingService?: IndexingService;
30
42
  retrievalService?: HybridRetrievalService;
@@ -1 +1 @@
1
- {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,KAAK,EACL,eAAe,EACf,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,kBAAkB,EAClB,aAAa,EACb,oBAAoB,EACpB,eAAe,EAChB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EACV,cAAc,EACd,eAAe,EACf,sBAAsB,EACtB,uBAAuB,EACxB,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAW5D,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IAC3C,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IAC7C,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,KAAK,CAAC;CACd;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,IAAI,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,UAAU;IACzB,eAAe,EAAE,eAAe,CAAC;IACjC,eAAe,EAAE,eAAe,CAAC;IACjC,YAAY,EAAE,YAAY,CAAC;IAC3B,YAAY,EAAE,YAAY,CAAC;IAC3B,eAAe,EAAE,eAAe,CAAC;IACjC,YAAY,EAAE,kBAAkB,CAAC;IACjC,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,SAAS,CAAC,EAAE,oBAAoB,CAAC;IACjC,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,gBAAgB,CAAC,EAAE,wBAAwB,CAAC;IAC5C,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,gBAAgB,CAAC,EAAE,sBAAsB,CAAC;IAC1C,iBAAiB,CAAC,EAAE,uBAAuB,CAAC;CAC7C;AAED,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,UAAU,EACf,GAAG,EAAE,UAAU,GACd,OAAO,CAAC,WAAW,CAAC,CAiCtB"}
1
+ {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,KAAK,EACL,eAAe,EACf,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,YAAY,EACZ,gBAAgB,EAChB,cAAc,EACf,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EACV,cAAc,EACd,eAAe,EACf,sBAAsB,EACtB,uBAAuB,EACxB,MAAM,wBAAwB,CAAC;AAoBhC,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IAC3C,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IAC7C,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,KAAK,CAAC;CACd;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,IAAI,EAAE,OAAO,CAAC;CACf;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE;QACP,QAAQ,EAAE,cAAc,CAAC;QACzB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,MAAM,WAAW,UAAU;IACzB,eAAe,EAAE,eAAe,CAAC;IACjC,eAAe,EAAE,eAAe,CAAC;IACjC,YAAY,EAAE,YAAY,CAAC;IAC3B,YAAY,EAAE,YAAY,CAAC;IAC3B,eAAe,EAAE,eAAe,CAAC;IACjC,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,gBAAgB,CAAC,EAAE,sBAAsB,CAAC;IAC1C,iBAAiB,CAAC,EAAE,uBAAuB,CAAC;CAC7C;AAOD,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,UAAU,EACf,GAAG,EAAE,UAAU,GACd,OAAO,CAAC,WAAW,CAAC,CA6CtB"}
package/dist/router.js CHANGED
@@ -1,30 +1,46 @@
1
+ import { randomUUID } from 'node:crypto';
1
2
  import { compileContent } from '@brew-cms/content';
2
- import { formatErrorResponse } from './errors.js';
3
+ import { formatErrorResponse, NoMediaRepositoryError, IntelligenceUnavailableError, InvalidQueryError, RouteNotFoundError, } from './errors.js';
4
+ import { ValidationError } from '@brew-cms/core';
3
5
  import { CreateDocumentRequestSchema, UpdateDocumentRequestSchema, PublishDocumentRequestSchema, ScheduleDocumentRequestSchema, CreateTopicRequestSchema, CreateTagRequestSchema, CreateSeriesRequestSchema, } from './validators.js';
4
6
  export async function handleApiRequest(req, ctx) {
7
+ const requestId = req.headers?.['x-request-id'] || `req_${randomUUID()}`;
8
+ const legacy = req.query?.envelope === 'legacy';
5
9
  const idempotencyKey = req.headers?.['idempotency-key'];
6
10
  const idempotencyStore = ctx.idempotencyStore;
7
- // 1. Idempotency Check for mutations
8
- if (idempotencyKey && req.method !== 'GET' && idempotencyStore) {
9
- const cached = idempotencyStore.get(idempotencyKey, req.actor.id);
11
+ // Scope replay keys by envelope mode so legacy and enveloped callers
12
+ // never receive each other's cached shapes.
13
+ const cacheKey = idempotencyKey ? `${legacy ? 'legacy' : 'enveloped'}:${idempotencyKey}` : undefined;
14
+ // 1. Idempotency Check for mutations (raw bodies are cached; the envelope
15
+ // is applied on the way out so both modes replay correctly).
16
+ if (cacheKey && req.method !== 'GET' && idempotencyStore) {
17
+ const cached = idempotencyStore.get(cacheKey, req.actor.id);
10
18
  if (cached) {
11
19
  return {
12
20
  status: cached.responseStatus,
13
21
  headers: { 'X-Cache-Lookup': 'HIT', 'Idempotency-Key': idempotencyKey },
14
- body: cached.responseBody,
22
+ body: legacy ? cached.responseBody : toEnvelope(cached.responseBody, requestId),
15
23
  };
16
24
  }
17
25
  }
18
26
  try {
19
- const response = await dispatchRoute(req, ctx);
20
- // Save in idempotency store if mutation
21
- if (idempotencyKey && req.method !== 'GET' && idempotencyStore && response.status < 400) {
22
- idempotencyStore.set(idempotencyKey, req.actor.id, response.status, response.body);
27
+ const result = await dispatchRoute(req, ctx);
28
+ const { policy, ...response } = result;
29
+ // Save in idempotency store if mutation (raw dispatch body)
30
+ if (cacheKey && req.method !== 'GET' && idempotencyStore && response.status < 400) {
31
+ idempotencyStore.set(cacheKey, req.actor.id, response.status, response.body);
23
32
  }
24
- return response;
33
+ if (legacy)
34
+ return response;
35
+ if (response.status >= 400)
36
+ return response; // errors are already enveloped
37
+ return {
38
+ ...response,
39
+ body: toEnvelope(response.body, requestId, policy),
40
+ };
25
41
  }
26
42
  catch (err) {
27
- const errorFormatted = formatErrorResponse(err, req.headers?.['x-request-id']);
43
+ const errorFormatted = formatErrorResponse(err, requestId);
28
44
  return {
29
45
  status: errorFormatted.status,
30
46
  headers: { 'Content-Type': 'application/json' },
@@ -32,6 +48,23 @@ export async function handleApiRequest(req, ctx) {
32
48
  };
33
49
  }
34
50
  }
51
+ function toEnvelope(data, requestId, policy) {
52
+ return policy ? { data, requestId, policy } : { data, requestId };
53
+ }
54
+ /**
55
+ * Parses a `limit` query parameter. Rejects non-integers and values < 1
56
+ * (a negative LIMIT means "unlimited" in SQLite — never honor that from
57
+ * a remote caller). Absent → undefined (repository default applies).
58
+ */
59
+ function parseLimit(raw, def) {
60
+ if (raw === undefined)
61
+ return def;
62
+ const n = Number(raw);
63
+ if (!Number.isInteger(n) || n < 1) {
64
+ throw new ValidationError(`Invalid 'limit' parameter: '${raw}'. Must be a positive integer.`);
65
+ }
66
+ return n;
67
+ }
35
68
  async function dispatchRoute(req, ctx) {
36
69
  const { path: rawPath, method, actor } = req;
37
70
  const urlPath = rawPath.replace(/\/$/, '');
@@ -49,7 +82,8 @@ async function dispatchRoute(req, ctx) {
49
82
  type: req.query?.type,
50
83
  status: req.query?.status,
51
84
  query: req.query?.q,
52
- limit: req.query?.limit ? Number(req.query.limit) : undefined,
85
+ limit: parseLimit(req.query?.limit),
86
+ cursor: req.query?.cursor,
53
87
  });
54
88
  return { status: 200, body: result };
55
89
  }
@@ -83,7 +117,7 @@ async function dispatchRoute(req, ctx) {
83
117
  const doc = await ctx.documentService.getDocument(id);
84
118
  return { status: 200, body: doc };
85
119
  }
86
- if (method === 'PUT') {
120
+ if (method === 'PUT' || method === 'PATCH') {
87
121
  const validated = UpdateDocumentRequestSchema.parse(req.body);
88
122
  let compiled;
89
123
  if (validated.sourceMarkdown !== undefined) {
@@ -116,7 +150,7 @@ async function dispatchRoute(req, ctx) {
116
150
  const revMatch = urlPath.match(/^\/api\/v1\/documents\/([^/]+)\/revisions$/);
117
151
  if (revMatch && method === 'GET') {
118
152
  const id = revMatch[1];
119
- const revisions = await ctx.revisionRepo.listByDocumentId(id);
153
+ const revisions = await ctx.documentService.getRevisions(id);
120
154
  return { status: 200, body: { revisions } };
121
155
  }
122
156
  // Publish: /api/v1/documents/:id/publish
@@ -227,56 +261,47 @@ async function dispatchRoute(req, ctx) {
227
261
  return { status: 201, body: res };
228
262
  }
229
263
  }
230
- // Media: /api/v1/media
264
+ // Media: /api/v1/media (converged on MediaService — no direct provider/repo use)
231
265
  if (urlPath === '/api/v1/media') {
266
+ if (!ctx.mediaService) {
267
+ throw new NoMediaRepositoryError();
268
+ }
232
269
  if (method === 'GET') {
233
- const items = ctx.mediaRepo
234
- ? await ctx.mediaRepo.list({
235
- mimeType: req.query?.mimeType,
236
- limit: req.query?.limit ? Number(req.query.limit) : 50,
237
- })
238
- : [];
270
+ const items = await ctx.mediaService.listAssets({
271
+ mimeType: req.query?.mimeType,
272
+ limit: parseLimit(req.query?.limit, 50),
273
+ });
239
274
  return { status: 200, body: { items } };
240
275
  }
241
276
  if (method === 'POST') {
242
- const body = req.body;
243
- if (!ctx.mediaRepo) {
244
- return { status: 500, body: { error: { code: 'NO_MEDIA_REPO', message: 'Media repository not configured.' } } };
245
- }
246
- let stored = null;
247
- if (ctx.mediaProvider && body.contentBase64) {
248
- stored = await ctx.mediaProvider.put({
249
- filename: body.filename,
250
- mimeType: body.mimeType,
251
- content: Buffer.from(body.contentBase64, 'base64'),
252
- prefix: body.prefix,
253
- });
254
- }
255
- const asset = await ctx.mediaRepo.create({
256
- id: body.id || `med_${Date.now()}`,
257
- provider: stored?.provider || 'local',
258
- providerKey: stored?.providerKey || body.providerKey || body.filename,
259
- mimeType: body.mimeType || 'application/octet-stream',
260
- sizeBytes: stored?.sizeBytes || body.sizeBytes || 0,
277
+ const body = (req.body ?? {});
278
+ const asset = await ctx.mediaService.uploadAsset(actor, {
279
+ id: body.id,
280
+ filename: body.filename,
281
+ mimeType: body.mimeType,
282
+ contentBase64: body.contentBase64,
283
+ prefix: body.prefix,
284
+ providerKey: body.providerKey,
285
+ sizeBytes: body.sizeBytes,
261
286
  width: body.width ?? null,
262
287
  height: body.height ?? null,
263
288
  altText: body.altText ?? null,
264
289
  caption: body.caption ?? null,
265
290
  metadata: body.metadata ?? null,
266
- createdBy: actor.id,
267
291
  });
268
292
  return { status: 201, body: asset };
269
293
  }
270
294
  }
271
295
  // Audit Events
272
296
  if (urlPath === '/api/v1/audit' && method === 'GET') {
273
- const events = await ctx.auditService.listEvents({
297
+ const result = await ctx.auditService.listEvents({
274
298
  resourceType: req.query?.resourceType,
275
299
  resourceId: req.query?.resourceId,
276
300
  actorId: req.query?.actorId,
277
- limit: req.query?.limit ? Number(req.query.limit) : 50,
301
+ limit: parseLimit(req.query?.limit),
302
+ cursor: req.query?.cursor,
278
303
  });
279
- return { status: 200, body: { items: events } };
304
+ return { status: 200, body: result };
280
305
  }
281
306
  // Agents: /api/v1/agents
282
307
  if (urlPath === '/api/v1/agents') {
@@ -295,13 +320,14 @@ async function dispatchRoute(req, ctx) {
295
320
  return { status: 201, body: agent };
296
321
  }
297
322
  }
298
- // Agent Action Runs: /api/v1/agent/runs
323
+ // Agent Action Runs: /api/v1/agent/runs (converged on AgentService)
299
324
  if (urlPath === '/api/v1/agent/runs') {
300
325
  if (method === 'GET') {
301
- const runs = ctx.agentRepo
302
- ? await ctx.agentRepo.listActionRuns({ limit: req.query?.limit ? Number(req.query.limit) : 50 })
303
- : [];
304
- return { status: 200, body: { items: runs } };
326
+ const result = await ctx.agentService.listActionRuns({
327
+ limit: parseLimit(req.query?.limit),
328
+ cursor: req.query?.cursor,
329
+ });
330
+ return { status: 200, body: result };
305
331
  }
306
332
  }
307
333
  // Agent Action Run Approval: /api/v1/agent/runs/:id/approve
@@ -309,14 +335,23 @@ async function dispatchRoute(req, ctx) {
309
335
  if (approveRunMatch && method === 'POST') {
310
336
  const runId = approveRunMatch[1];
311
337
  const res = await ctx.agentService.approveActionRun(actor, runId, req.body?.reason);
312
- return { status: 200, body: res };
338
+ return {
339
+ status: 200,
340
+ body: res,
341
+ // Truthful gate outcome: the decision that forced human approval.
342
+ policy: { decision: res.actionRun.policyDecision },
343
+ };
313
344
  }
314
345
  // Agent Action Run Rejection: /api/v1/agent/runs/:id/reject
315
346
  const rejectRunMatch = urlPath.match(/^\/api\/v1\/agent\/runs\/([^/]+)\/reject$/);
316
347
  if (rejectRunMatch && method === 'POST') {
317
348
  const runId = rejectRunMatch[1];
318
349
  const res = await ctx.agentService.rejectActionRun(actor, runId, req.body?.reason);
319
- return { status: 200, body: res };
350
+ return {
351
+ status: 200,
352
+ body: res,
353
+ policy: { decision: res.actionRun.policyDecision },
354
+ };
320
355
  }
321
356
  // Intelligence: Status / Sources
322
357
  if (urlPath === '/api/v1/intelligence/status' && method === 'GET') {
@@ -340,27 +375,11 @@ async function dispatchRoute(req, ctx) {
340
375
  // Intelligence: Hybrid Retrieval
341
376
  if (urlPath === '/api/v1/intelligence/search' && method === 'GET') {
342
377
  if (!ctx.retrievalService) {
343
- return {
344
- status: 503,
345
- body: {
346
- error: {
347
- code: 'INTELLIGENCE_UNAVAILABLE',
348
- message: 'Retrieval service is not configured.',
349
- },
350
- },
351
- };
378
+ throw new IntelligenceUnavailableError('Retrieval service is not configured.');
352
379
  }
353
380
  const q = req.query?.q;
354
381
  if (!q || typeof q !== 'string') {
355
- return {
356
- status: 400,
357
- body: {
358
- error: {
359
- code: 'INVALID_QUERY',
360
- message: "Query parameter 'q' is required.",
361
- },
362
- },
363
- };
382
+ throw new InvalidQueryError();
364
383
  }
365
384
  const limit = req.query?.limit ? Number(req.query.limit) : 10;
366
385
  const minScore = req.query?.minScore ? Number(req.query.minScore) : undefined;
@@ -399,15 +418,7 @@ async function dispatchRoute(req, ctx) {
399
418
  // Intelligence: Indexing
400
419
  if (urlPath === '/api/v1/intelligence/index' && method === 'POST') {
401
420
  if (!ctx.indexingService) {
402
- return {
403
- status: 503,
404
- body: {
405
- error: {
406
- code: 'INTELLIGENCE_UNAVAILABLE',
407
- message: 'Indexing service is not configured.',
408
- },
409
- },
410
- };
421
+ throw new IntelligenceUnavailableError('Indexing service is not configured.');
411
422
  }
412
423
  const body = (req.body || {});
413
424
  if (body.sourceId && body.contentId) {
@@ -423,14 +434,6 @@ async function dispatchRoute(req, ctx) {
423
434
  return { status: 200, body: { success: true, summaries } };
424
435
  }
425
436
  }
426
- return {
427
- status: 404,
428
- body: {
429
- error: {
430
- code: 'ROUTE_NOT_FOUND',
431
- message: `Endpoint '${method} ${urlPath}' was not found.`,
432
- },
433
- },
434
- };
437
+ throw new RouteNotFoundError(`${method} ${urlPath}`);
435
438
  }
436
439
  //# sourceMappingURL=router.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"router.js","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"router.js","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@brew-cms/api",
3
- "version": "0.2.2",
3
+ "version": "0.3.0",
4
4
  "description": "REST API router, OpenAPI spec, idempotency, and request validation for BrewCMS",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
@@ -9,7 +9,8 @@
9
9
  "exports": {
10
10
  ".": {
11
11
  "types": "./dist/index.d.ts",
12
- "import": "./dist/index.js"
12
+ "import": "./dist/index.js",
13
+ "default": "./dist/index.js"
13
14
  }
14
15
  },
15
16
  "files": [
@@ -17,14 +18,14 @@
17
18
  "LICENSE"
18
19
  ],
19
20
  "dependencies": {
20
- "@brew-cms/content": "0.2.2",
21
- "@brew-cms/core": "0.2.1",
22
- "@brew-cms/intelligence": "0.2.1",
23
- "@brew-cms/policy": "0.1.0",
21
+ "@brew-cms/content": "0.2.3",
22
+ "@brew-cms/core": "0.3.0",
23
+ "@brew-cms/intelligence": "0.2.3",
24
+ "@brew-cms/policy": "0.1.2",
24
25
  "zod": "^3.24.1"
25
26
  },
26
27
  "devDependencies": {
27
- "@brew-cms/db": "0.2.1"
28
+ "@brew-cms/db": "0.3.0"
28
29
  },
29
30
  "scripts": {
30
31
  "build": "tsc -b",