@yss123/cage-http 0.2.0 → 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/routes.js CHANGED
@@ -1,15 +1,21 @@
1
- // 路由生成:启动时遍历注册表,为每个命令、聚合、查询、入站回调挂路由。路由本身不做任何判断,全部交给内核。
1
+ // 路由生成:启动时遍历注册表,为命令、聚合、查询、入站回调挂路由;这里只做协议适配,业务授权与状态判断交给内核。
2
2
  // 业务项目里禁止调用 app.get / app.post(lint 拦截),所以没有声明就没有路由。
3
3
  import { cageError, isRelation, kebab, systemCtx } from '@yss123/cage-kernel';
4
4
  import { z } from 'zod';
5
5
  import { registerTransfers, transferKey, transferRoutes } from './transfers.js';
6
+ import { fileRoutes } from './files.js';
7
+ /** 创建命令尚无对象 ID,其余命令将 ID 放入路径;命名转换与生成契约保持一致。 */
6
8
  export function commandUrl(c) {
7
9
  const base = `/api/${kebab(c.cmd.agg.name)}`;
8
10
  return c.cmd.from === 'new' ? `${base}/${kebab(c.name)}` : `${base}/:id/${kebab(c.name)}`;
9
11
  }
10
- /** 注册表 → 路由清单(cage gen 也用它生成路由清单和前端 SDK) */
12
+ /**
13
+ * 注册表转换为路由清单,供 HTTP 文档及生成工具使用;本函数本身不注册 Fastify handler。
14
+ * 仅 user 命令有浏览器入口,流程/任务/外部命令必须通过各自受控调用链执行。
15
+ * 关联读取列出源、目标双方能力;查询列出 reads 依赖,使消费者看到完整读权限边界。
16
+ */
11
17
  export function routeTable(k) {
12
- const out = [...transferRoutes];
18
+ const out = [...transferRoutes, ...fileRoutes];
13
19
  for (const c of k.registry.commands) {
14
20
  if (!c.cmd.invokedBy.includes('user'))
15
21
  continue; // 流程、任务、外部专用命令不对浏览器开放
@@ -34,6 +40,12 @@ export function routeTable(k) {
34
40
  }
35
41
  return out;
36
42
  }
43
+ /**
44
+ * 将请求上下文与输入交给内核,并返回相同注册表派生的文档清单。
45
+ * 对象命令使用路径 ID 覆盖请求体 ID,防止 URL 与实际写目标不一致;用户命令幂等键最多取 200 字符。
46
+ * 入站回调先使用原始请求体验签,再验证载荷并映射命令;external 身份仅持有该目标命令能力。
47
+ * 文件路由在 server 中另行注册,通用导入导出在这里注册;二者仍出现在返回的完整清单中。
48
+ */
37
49
  export function registerRoutes(app, k) {
38
50
  const table = routeTable(k);
39
51
  registerTransfers(app, k);
@@ -77,6 +89,7 @@ export function registerRoutes(app, k) {
77
89
  }
78
90
  return table;
79
91
  }
92
+ /** 聚合读取统一经过安全读侧;导出只创建异步任务并返回 202,不在 HTTP 请求里遍历全部数据。 */
80
93
  function registerAggregate(app, k, a) {
81
94
  const base = `/api/${kebab(a.name)}`;
82
95
  app.get(base, async (req) => k.read.list(a, req.query, req.cageCtx));
@@ -92,7 +105,11 @@ function registerAggregate(app, k, a) {
92
105
  return reply.code(202).send(task);
93
106
  });
94
107
  }
95
- /** 查询字符串都是字符串:按输入 schema 把数字和布尔转换过来 */
108
+ /**
109
+ * 为对象型查询输入适配 URL 字符串,只转换顶层数字与布尔字段;最终合法性仍由读侧 schema 校验。
110
+ * 布尔值采用当前协议的精确字符串规则:只有 true 字符串转换为真;其余字符串转换为假。
111
+ * 不修改原始 query,也不在这里递归展开数组或嵌套对象。
112
+ */
96
113
  function coerceQuery(schema, q) {
97
114
  if (!(schema instanceof z.ZodObject))
98
115
  return q;
@@ -109,6 +126,7 @@ function coerceQuery(schema, q) {
109
126
  }
110
127
  return out;
111
128
  }
129
+ /** 去除可选、可空和默认值包装,只为识别基础标量类型;不执行默认值或实际校验。 */
112
130
  function unwrap(s) {
113
131
  let cur = s;
114
132
  while (cur && (cur instanceof z.ZodOptional || cur instanceof z.ZodNullable || cur instanceof z.ZodDefault))
@@ -1 +1 @@
1
- {"version":3,"file":"routes.js","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"routes.js","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"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"}
package/dist/server.d.ts CHANGED
@@ -1,10 +1,16 @@
1
1
  import { type DatabaseUrls, type Kernel } from '@yss123/cage-kernel';
2
- import { type FastifyInstance } from 'fastify';
2
+ import { type FastifyInstance, type FastifyServerOptions } from 'fastify';
3
3
  import { type AuthOptions } from './auth.js';
4
+ import { FileService, type FileServiceOptions } from '@yss123/cage-files';
5
+ /** HTTP 进程的组合配置;领域声明决定能力与路由,选项只负责部署、认证和服务生命周期。 */
4
6
  export interface ServerOptions {
7
+ /** 私有文件存储与上传限制;默认本地 .cage-files。 */
8
+ files?: FileServiceOptions;
5
9
  /** domain 包的导出:import * as domain from '@app/domain' */
6
10
  domain: object;
11
+ /** 写账号与只读账号由内核分别使用;省略时从项目环境读取,不在启动时建库或执行迁移。 */
7
12
  urls?: DatabaseUrls;
13
+ /** 密码认证选项及可选 OIDC issuer;具体凭据来源由认证模块和部署环境决定。 */
8
14
  auth?: AuthOptions & {
9
15
  oidcIssuer?: string;
10
16
  };
@@ -14,9 +20,17 @@ export interface ServerOptions {
14
20
  admin?: boolean;
15
21
  /** 系统管理显示名,使用 aggregate:/command:/capability: 等图谱键;覆盖本地配置。 */
16
22
  adminLabels?: Record<string, string>;
17
- /** 首次启动时初始化组织并打印初始管理员账号,默认开启 */
23
+ /** 仅保留 false 的兼容入口。组织初始化请显式调用 bootstrapOrg,不在服务启动时执行。 */
18
24
  bootstrap?: boolean;
25
+ /** 默认不信任转发头;反向代理部署应显式配置可信地址、网段或跳数。 */
26
+ trustProxy?: FastifyServerOptions['trustProxy'];
27
+ /** 默认读取 CAGE_COOKIE_SECRET;生产环境必须提供至少 32 字节的独立密钥。 */
28
+ cookieSecret?: string;
29
+ /** 就绪探测的每个数据库等待上限,默认 2000 毫秒。 */
30
+ readinessTimeoutMs?: number;
31
+ /** 默认监听端口;listen 调用参数优先,其次本选项、PORT 环境变量,最后 3000。 */
19
32
  port?: number;
33
+ /** 默认监听地址;listen 调用参数优先,其次本选项、HOST 环境变量,最后 0.0.0.0。 */
20
34
  host?: string;
21
35
  /** 默认每个客户端每分钟 300 次 */
22
36
  rateLimitPerMinute?: number;
@@ -24,17 +38,46 @@ export interface ServerOptions {
24
38
  authRateLimitPerMinute?: number;
25
39
  /** 关闭 CSRF(只用于测试) */
26
40
  csrf?: boolean;
41
+ /** false 关闭 HTTP 日志;默认启用框架脱敏日志配置。 */
27
42
  logger?: boolean;
43
+ /** 可选 OpenAPI 文档标题,仅用于接口说明。 */
28
44
  title?: string;
29
45
  }
46
+ /** 已创建但未必已开始监听的服务;嵌入式测试可只调用 ready,再通过 app 注入请求。 */
30
47
  export interface CageServer {
48
+ /** 本服务拥有的文件协调器,HTTP 上传路由与关闭流程使用同一实例。 */
49
+ files: FileService;
50
+ /** Fastify 实例;ready 之后可用 inject 测试,listen 后才接受网络连接。 */
31
51
  app: FastifyInstance;
52
+ /** 本 HTTP 服务装配的内核,业务请求通过它执行命令和安全读取。 */
32
53
  kernel: Kernel;
54
+ /** 注册路由、启动扩展与授权监听;重复调用共享同一次初始化及其失败结果。 */
33
55
  ready(): Promise<FastifyInstance>;
56
+ /** 检查数据库及授权监听等就绪依赖,返回状态快照,不证明异步业务已完成。 */
57
+ health(): Promise<ServerHealth>;
58
+ /** 先完成 ready,再按参数/配置监听网络;返回监听地址,启动失败向调用方抛出。 */
34
59
  listen(opts?: {
35
60
  port?: number;
36
61
  host?: string;
37
62
  }): Promise<string>;
63
+ /** 关闭 HTTP 及其装配资源;由宿主退出流程调用,不能把停止接收请求当作业务回滚。 */
38
64
  close(): Promise<void>;
39
65
  }
66
+ /** 就绪状态只覆盖当前 HTTP 进程依赖;异步 worker 的消费健康需单独探测。 */
67
+ export interface ServerHealth {
68
+ /** 当前就绪依赖均满足时为 true,不代表整个部署的 worker 或外部系统健康。 */
69
+ ok: boolean;
70
+ /** appDb/readDb 为连接探测,grantsListener 为授权监听状态;不包含秘密连接信息。 */
71
+ dependencies: {
72
+ appDb: boolean;
73
+ readDb: boolean;
74
+ grantsListener: boolean;
75
+ };
76
+ }
77
+ /**
78
+ * 组合组织模型、业务内核、文件服务和 HTTP 安全基线,返回由调用者掌控的启动/停止句柄。
79
+ * 创建阶段校验环境并建立资源对象,ready 才注册插件、扩展和监听;不会初始化组织或更新数据库。
80
+ * 生产密钥无效或显式要求隐式 bootstrap 时立即失败,避免服务启动产生不可审查的管理凭据。
81
+ * close 先停止 HTTP 及扩展后台活动,再关闭授权监听与内核连接,防止清理任务访问已关闭的连接池。
82
+ */
40
83
  export declare function createServer(opts: ServerOptions): CageServer;
package/dist/server.js CHANGED
@@ -2,22 +2,27 @@
2
2
  import { existsSync, readFileSync } from 'node:fs';
3
3
  import { dirname, join, resolve } from 'node:path';
4
4
  import { createRequire } from 'node:module';
5
+ import { randomBytes } from 'node:crypto';
5
6
  import cookie from '@fastify/cookie';
6
7
  import csrf from '@fastify/csrf-protection';
7
8
  import helmet from '@fastify/helmet';
8
9
  import rateLimit from '@fastify/rate-limit';
9
10
  import fastifyStatic from '@fastify/static';
10
11
  import * as adminDomain from '@yss123/cage-admin/domain';
11
- import { adminRoutes, bootstrapOrg } from '@yss123/cage-admin';
12
+ import { adminRoutes } from '@yss123/cage-admin';
12
13
  import { approvalRoutes } from '@yss123/cage-approval';
13
- import { createKernel, toCageError, urlsFromEnv } from '@yss123/cage-kernel';
14
+ import { createKernel, runtimeServices, toCageError, urlsFromEnv } from '@yss123/cage-kernel';
14
15
  import Fastify from 'fastify';
16
+ import { sql } from 'kysely';
15
17
  import { authRoutes, csrfRoute, registerAuthHook, Sessions } from './auth.js';
16
18
  import { CtxCache } from './ctx.js';
17
19
  import { buildLogger } from './logger.js';
18
20
  import { oidcRoutes } from './oidc.js';
19
21
  import { buildOpenApi } from './openapi.js';
20
22
  import { registerRoutes } from './routes.js';
23
+ import { FileService } from '@yss123/cage-files';
24
+ import { registerFiles } from './files.js';
25
+ /** 从实际安装的 admin 包定位已构建静态资源;未附带 UI 时返回 null,仍可注册管理 API。 */
21
26
  function adminUiDir() {
22
27
  // 通过包公开入口定位资源;package.json 未被 exports 公开,且安装后的 pnpm
23
28
  // 目录与 monorepo 不同,不能依赖 ../../admin 的工作区相对路径。
@@ -25,22 +30,82 @@ function adminUiDir() {
25
30
  const dir = resolve(dirname(entry), '../ui');
26
31
  return existsSync(dir) ? dir : null;
27
32
  }
33
+ /**
34
+ * 组合组织模型、业务内核、文件服务和 HTTP 安全基线,返回由调用者掌控的启动/停止句柄。
35
+ * 创建阶段校验环境并建立资源对象,ready 才注册插件、扩展和监听;不会初始化组织或更新数据库。
36
+ * 生产密钥无效或显式要求隐式 bootstrap 时立即失败,避免服务启动产生不可审查的管理凭据。
37
+ * close 先停止 HTTP 及扩展后台活动,再关闭授权监听与内核连接,防止清理任务访问已关闭的连接池。
38
+ */
28
39
  export function createServer(opts) {
40
+ const production = process.env.NODE_ENV === 'production';
41
+ const configuredSecret = opts.cookieSecret ?? process.env.CAGE_COOKIE_SECRET;
42
+ if (production && (!configuredSecret || Buffer.byteLength(configuredSecret) < 32 || /change.?me|replace.with|cage-dev-cookie-secret/i.test(configuredSecret))) {
43
+ throw new Error('[CAGE-ENV-002] 生产环境必须配置至少 32 字节的 CAGE_COOKIE_SECRET,不能使用开发占位值');
44
+ }
45
+ if (opts.bootstrap)
46
+ throw new Error('[CAGE-ENV-003] 服务启动不再隐式初始化组织;请在受控初始化入口显式调用 bootstrapOrg 并安全交付初始凭据');
47
+ const readinessTimeoutMs = opts.readinessTimeoutMs ?? 2000;
48
+ if (!Number.isSafeInteger(readinessTimeoutMs) || readinessTimeoutMs < 1)
49
+ throw new Error('[CAGE-ENV-002] readinessTimeoutMs 必须为正整数');
50
+ // 开发会话密钥也是随机值,重启会使旧 CSRF/OIDC cookie 失效;多实例必须显式共享配置。
51
+ const cookieSecret = configuredSecret ?? randomBytes(32).toString('hex');
29
52
  const urls = opts.urls ?? urlsFromEnv();
53
+ // 组织模型永远在注册表里(同一对象重复导出会自动去重)。
54
+ const kernel = createKernel({ domain: [adminDomain, opts.domain], urls, logger: undefined });
55
+ const files = new FileService(kernel, opts.files);
56
+ const services = runtimeServices(kernel);
30
57
  const app = Fastify({
31
58
  bodyLimit: 1_048_576, // 请求体最大 1 MB
32
- trustProxy: true, // 在负载均衡后面取真实客户端 IP
33
- logger: false,
59
+ trustProxy: opts.trustProxy ?? false,
60
+ logger: opts.logger === false ? false : buildLogger(kernel.registry),
34
61
  genReqId: () => crypto.randomUUID(),
35
62
  });
36
- // 组织模型永远在注册表里(同一对象重复导出会自动去重)
37
- const kernel = createKernel({ domain: [adminDomain, opts.domain], urls, logger: undefined });
38
- if (opts.logger !== false) {
39
- const pino = Fastify({ logger: buildLogger(kernel.registry) }).log;
40
- kernel.log = pino;
41
- app.log = pino;
42
- }
63
+ if (opts.logger !== false)
64
+ kernel.log = app.log;
43
65
  const cache = new CtxCache(kernel);
66
+ let closing = false;
67
+ let fileCleanup = null;
68
+ let fileTimer;
69
+ /** 一次只允许一个清理批次运行;失败留待下周期重试,停止时等待当前批次完成。 */
70
+ const cleanFiles = () => {
71
+ if (closing || fileCleanup)
72
+ return;
73
+ fileCleanup = files.cleanup().catch(err => kernel.log.error({ err }, '文件清理失败,将在下一周期重试')).finally(() => { fileCleanup = null; });
74
+ };
75
+ app.addHook('preClose', async () => {
76
+ closing = true;
77
+ clearInterval(fileTimer);
78
+ await files.close();
79
+ await Promise.all(services.map(service => service.close()));
80
+ await fileCleanup;
81
+ });
82
+ const probes = new Map();
83
+ /** 检查账号能否访问它应访问的 schema;超时只结束本次等待,不取消底层尚未返回的查询。 */
84
+ const probe = async (name) => {
85
+ // 超时的探测不重复申请连接,避免依赖故障时探针本身耗尽连接池。
86
+ let pending = probes.get(name);
87
+ if (!pending) {
88
+ pending = Promise.resolve().then(() => name === 'appDb'
89
+ ? sql `select 1 from sys.user limit 0`.execute(kernel.app)
90
+ : sql `select 1 from safe.user limit 0`.execute(kernel.readDb)).then(() => true, () => false);
91
+ probes.set(name, pending);
92
+ void pending.finally(() => probes.delete(name));
93
+ }
94
+ let timer;
95
+ try {
96
+ return await Promise.race([pending, new Promise((resolve) => { timer = setTimeout(() => resolve(false), readinessTimeoutMs); })]);
97
+ }
98
+ finally {
99
+ if (timer)
100
+ clearTimeout(timer);
101
+ }
102
+ };
103
+ /** readiness 同时要求写库、只读安全视图和撤权通知可用;关闭期间固定为不可接流量。 */
104
+ const health = async () => {
105
+ const [appDb, readDb] = closing ? [false, false] : await Promise.all([probe('appDb'), probe('readDb')]);
106
+ const dependencies = { appDb, readDb, grantsListener: cache.healthy };
107
+ return { ok: !closing && Object.values(dependencies).every(Boolean), dependencies };
108
+ };
44
109
  const authOpts = {
45
110
  ...opts.auth,
46
111
  oidc: opts.auth?.oidc ?? (opts.auth?.oidcIssuer && process.env.OIDC_CLIENT_ID
@@ -53,6 +118,7 @@ export function createServer(opts) {
53
118
  : undefined),
54
119
  };
55
120
  const sessions = new Sessions(kernel, authOpts.sessionHours ?? 8);
121
+ /** 注册顺序保证会话、CSRF 和统一错误处理覆盖业务路由;原始 JSON 同时供第三方回调验签。 */
56
122
  const build = async () => {
57
123
  // 原始请求体:入站回调验签要用
58
124
  app.addContentTypeParser('application/json', { parseAs: 'string' }, (req, body, done) => {
@@ -70,7 +136,7 @@ export function createServer(opts) {
70
136
  contentSecurityPolicy: { directives: { defaultSrc: ["'self'"], scriptSrc: ["'self'"], styleSrc: ["'self'", "'unsafe-inline'"], imgSrc: ["'self'", 'data:'] } },
71
137
  });
72
138
  await app.register(rateLimit, { max: opts.rateLimitPerMinute ?? 300, timeWindow: '1 minute' });
73
- await app.register(cookie, { secret: process.env.CAGE_COOKIE_SECRET ?? 'cage-dev-cookie-secret-change-me' });
139
+ await app.register(cookie, { secret: cookieSecret });
74
140
  await app.register(csrf, { sessionPlugin: '@fastify/cookie', cookieOpts: { signed: true, httpOnly: true, sameSite: 'lax', path: '/' } });
75
141
  registerAuthHook(app, kernel, sessions, cache);
76
142
  if (opts.csrf !== false) {
@@ -88,10 +154,12 @@ export function createServer(opts) {
88
154
  reply.status(e.http).send({ code: e.code, ...(e.domainCode ? { domainCode: e.domainCode } : {}), detail: e.code === 'INTERNAL' ? undefined : e.detail, requestId: req.id });
89
155
  });
90
156
  app.setNotFoundHandler((req, reply) => {
91
- if (req.url.startsWith('/api/') || req.url.startsWith('/hooks/') || req.url.startsWith('/auth/')) {
92
- return reply.status(404).send({ code: 'NOT_FOUND' });
93
- }
94
- if (opts.webDir && existsSync(join(opts.webDir, 'index.html')))
157
+ const path = req.url.split('?')[0];
158
+ // History 路由的深链接由业务 SPA 接管;API、系统管理和静态资源有各自的 404。
159
+ // 只有浏览器请求页面时回退,不能把丢失的 JS/CSS 或未知写接口伪装成成功 HTML。
160
+ const backendOrAsset = /^\/(api|hooks|auth|admin|assets)(\/|$)/.test(path);
161
+ const page = (req.method === 'GET' || req.method === 'HEAD') && req.headers.accept?.includes('text/html');
162
+ if (page && !backendOrAsset && opts.webDir && existsSync(join(opts.webDir, 'index.html')))
95
163
  return reply.sendFile('index.html', opts.webDir);
96
164
  return reply.status(404).send({ code: 'NOT_FOUND' });
97
165
  });
@@ -103,7 +171,12 @@ export function createServer(opts) {
103
171
  });
104
172
  csrfRoute(app);
105
173
  app.get('/healthz', async () => ({ ok: true }));
174
+ app.get('/readyz', async (_req, reply) => {
175
+ const state = await health();
176
+ return reply.status(state.ok ? 200 : 503).send(state);
177
+ });
106
178
  const routes = registerRoutes(app, kernel);
179
+ await registerFiles(app, files);
107
180
  app.get('/api/openapi.json', async () => buildOpenApi(kernel, routes, { title: opts.title }));
108
181
  if (opts.admin !== false) {
109
182
  // CLI dev 和部署均以项目根为工作目录。展示文案复用已有图谱配置,业务无需维护两份翻译。
@@ -115,6 +188,10 @@ export function createServer(opts) {
115
188
  const engines = kernel.registry.extensions.filter((e) => e.kind === 'ROUTE').map((e) => e.value.engine(kernel));
116
189
  if (engines.length)
117
190
  approvalRoutes(app, { kernel, engines, ctxOf: (req) => req.cageCtx });
191
+ for (const service of services) {
192
+ await service.ready();
193
+ await service.http?.(app);
194
+ }
118
195
  const ui = opts.admin !== false ? adminUiDir() : null;
119
196
  if (ui) {
120
197
  await app.register(fastifyStatic, { root: ui, prefix: '/admin/', decorateReply: !opts.webDir });
@@ -124,25 +201,23 @@ export function createServer(opts) {
124
201
  await app.register(fastifyStatic, { root: opts.webDir, prefix: '/', decorateReply: true, wildcard: false });
125
202
  }
126
203
  await cache.listen(urls.app);
127
- if (opts.bootstrap !== false) {
128
- const b = await bootstrapOrg(kernel).catch((e) => {
129
- kernel.log.warn({ err: String(e) }, '组织初始化失败(是否已执行 cage migrate?)');
130
- return { created: false };
131
- });
132
- if (b.created) {
133
- // 初始管理员账号只在终端里打印一次
134
- console.log(`\n 初始管理员 用户名 ${b.username} 密码 ${b.password}\n 请登录 /admin 后立即修改密码\n`);
135
- }
136
- }
137
204
  await app.ready();
205
+ if (kernel.registry.aggregates.some(a => Object.values(a.fields).some((f) => f.kind === 'file' || f.kind === 'files'))) {
206
+ cleanFiles();
207
+ fileTimer = setInterval(cleanFiles, 60_000);
208
+ fileTimer.unref();
209
+ }
138
210
  return app;
139
211
  };
212
+ // 共享初始化 Promise,避免 listen、测试和健康管理代码并发调用时重复挂载路由或后台任务。
140
213
  let readyP = null;
141
214
  const ready = () => (readyP ??= build());
142
215
  return {
143
216
  app,
144
217
  kernel,
218
+ files,
145
219
  ready,
220
+ health,
146
221
  async listen(l = {}) {
147
222
  await ready();
148
223
  const port = l.port ?? opts.port ?? Number(process.env.PORT ?? 3000);
@@ -152,6 +227,7 @@ export function createServer(opts) {
152
227
  return addr;
153
228
  },
154
229
  async close() {
230
+ closing = true;
155
231
  await app.close();
156
232
  await cache.close();
157
233
  await kernel.close();
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,14 @@
1
1
  import { type Kernel } from '@yss123/cage-kernel';
2
2
  import type { FastifyInstance, FastifyRequest } from 'fastify';
3
3
  import type { RouteInfo } from './routes.js';
4
+ /** 任务枚举、提交、状态与下载共用的系统路由,供 OpenAPI 和客户端能力发现使用。 */
4
5
  export declare const transferRoutes: RouteInfo[];
5
6
  /** 不截断幂等键,避免两个不同请求因前缀相同而被当作同一次提交。 */
6
7
  export declare function transferKey(req: FastifyRequest): string;
8
+ /**
9
+ * 挂载通用导入导出入口:options 按当前能力筛选候选,任务服务在提交、执行和下载时继续复核授权。
10
+ * 导入只接受用户可调用命令,CSV 列来自命令输入 schema,逐行写入仍经过完整命令流水线。
11
+ * 提交返回 202 与任务 ID;状态和结果属于提交者,下载不通过公开静态目录暴露文件。
12
+ * options 中的 limits 是前端交互提示,实际资源限制由内核任务服务强制执行。
13
+ */
7
14
  export declare function registerTransfers(app: FastifyInstance, k: Kernel): void;
package/dist/transfers.js CHANGED
@@ -1,6 +1,7 @@
1
1
  // 通用任务接口始终挂载(不依赖 /admin 是否开启),因此业务前端也能使用生成的 SDK。
2
2
  import { cageError, importRequestSchema, kebab } from '@yss123/cage-kernel';
3
3
  import { z } from 'zod';
4
+ /** 任务枚举、提交、状态与下载共用的系统路由,供 OpenAPI 和客户端能力发现使用。 */
4
5
  export const transferRoutes = [
5
6
  { method: 'GET', url: '/api/sys/transfers', kind: 'transfer-list' },
6
7
  { method: 'GET', url: '/api/sys/transfers/options', kind: 'transfer-options' },
@@ -15,6 +16,12 @@ export function transferKey(req) {
15
16
  throw cageError('INVALID_INPUT', '任务提交需要 Idempotency-Key(1–200 字符)');
16
17
  return key;
17
18
  }
19
+ /**
20
+ * 挂载通用导入导出入口:options 按当前能力筛选候选,任务服务在提交、执行和下载时继续复核授权。
21
+ * 导入只接受用户可调用命令,CSV 列来自命令输入 schema,逐行写入仍经过完整命令流水线。
22
+ * 提交返回 202 与任务 ID;状态和结果属于提交者,下载不通过公开静态目录暴露文件。
23
+ * options 中的 limits 是前端交互提示,实际资源限制由内核任务服务强制执行。
24
+ */
18
25
  export function registerTransfers(app, k) {
19
26
  app.get('/api/sys/transfers', (req) => k.transfers.list(req.cageCtx, req.query.aggregate));
20
27
  app.get('/api/sys/transfers/options', async (req) => {
@@ -1 +1 @@
1
- {"version":3,"file":"transfers.js","sourceRoot":"","sources":["../src/transfers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transfers.js","sourceRoot":"","sources":["../src/transfers.ts"],"names":[],"mappings":"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"}
package/dist/worker.d.ts CHANGED
@@ -1,4 +1,8 @@
1
1
  import { type WorkerOptions } from '@yss123/cage-kernel/worker';
2
+ /** 启动与 HTTP 服务共享领域声明的后台进程,并为默认日志套用相同的脱敏规则。
3
+ * 自动合并组织模型;传入已有 kernel 时复用它的注册表并替换其日志句柄,不另建业务内核。
4
+ * 返回底层 worker 的停止/健康句柄;消费者注册、重试、调度与停机等待全部由内核 worker 实现。
5
+ */
2
6
  export declare function startWorker(opts: WorkerOptions & {
3
7
  domain: object;
4
8
  }): Promise<import("@yss123/cage-kernel/worker").WorkerHandle>;
package/dist/worker.js CHANGED
@@ -1,7 +1,17 @@
1
1
  // worker 入口的便捷封装:自动并入组织模型。也可以直接用 @yss123/cage-kernel/worker 的 startWorker。
2
2
  import * as adminDomain from '@yss123/cage-admin/domain';
3
3
  import { startWorker as start } from '@yss123/cage-kernel/worker';
4
+ import { buildRegistry } from '@yss123/cage-kernel';
5
+ import { createSafeLogger } from './logger.js';
6
+ /** 启动与 HTTP 服务共享领域声明的后台进程,并为默认日志套用相同的脱敏规则。
7
+ * 自动合并组织模型;传入已有 kernel 时复用它的注册表并替换其日志句柄,不另建业务内核。
8
+ * 返回底层 worker 的停止/健康句柄;消费者注册、重试、调度与停机等待全部由内核 worker 实现。
9
+ */
4
10
  export function startWorker(opts) {
5
- return start({ ...opts, domain: [adminDomain, opts.domain] });
11
+ const domain = [adminDomain, opts.domain];
12
+ const logger = opts.logger ?? createSafeLogger(opts.kernel?.registry ?? buildRegistry(domain));
13
+ if (opts.kernel)
14
+ Object.assign(opts.kernel, { log: logger });
15
+ return start({ ...opts, domain, logger });
6
16
  }
7
17
  //# sourceMappingURL=worker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"worker.js","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,OAAO,KAAK,WAAW,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,WAAW,IAAI,KAAK,EAAsB,MAAM,4BAA4B,CAAC;AAEtF,MAAM,UAAU,WAAW,CAAC,IAAwC;IAClE,OAAO,KAAK,CAAC,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAChE,CAAC"}
1
+ {"version":3,"file":"worker.js","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,OAAO,KAAK,WAAW,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,WAAW,IAAI,KAAK,EAAsB,MAAM,4BAA4B,CAAC;AACtF,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,IAAwC;IAClE,MAAM,MAAM,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;IAC/F,IAAI,IAAI,CAAC,MAAM;QAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC;IAC7D,OAAO,KAAK,CAAC,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;AAC5C,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yss123/cage-http",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "description": "笼子 HTTP 层:Fastify 插件、路由生成、认证、安全基线",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -30,9 +30,10 @@
30
30
  "pg": "^8.16.3",
31
31
  "zod": "^4.1.5",
32
32
  "kysely": "^0.28.5",
33
- "@yss123/cage-admin": "0.2.0",
34
- "@yss123/cage-approval": "0.2.0",
35
- "@yss123/cage-kernel": "0.2.0"
33
+ "@yss123/cage-approval": "0.3.0",
34
+ "@yss123/cage-admin": "0.3.0",
35
+ "@yss123/cage-files": "0.3.0",
36
+ "@yss123/cage-kernel": "0.3.0"
36
37
  },
37
38
  "devDependencies": {
38
39
  "@types/pg": "^8.15.5"