aegra-hono 0.17.0 → 0.20.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/README.md CHANGED
@@ -42,10 +42,10 @@ docker compose up --build
42
42
 
43
43
  `init` 会生成可直接安装和部署的 TypeScript 后端,包括 `aegra.json`、LangGraph 图、严格 TypeScript 配置、列出全部运行时选项的 `.env.example`、Dockerfile 与 Docker Compose。`aegra-hono` 不携带任何第三方运行时依赖:必需库以 peer 依赖声明并由生成项目固定版本,Redis、Prometheus、OpenTelemetry、向量嵌入等可选集成只有在你启用对应功能时才需要安装。服务默认监听 `http://localhost:2026`,健康检查端点为 `GET /health`,接口文档位于 `/docs`:
44
44
 
45
- | 端点 | 内容 |
46
- |:--|:--|
47
- | `GET /docs` | Agent Protocol 接口的 Swagger UI |
48
- | `GET /redoc` | 同一份文档的 ReDoc 渲染 |
45
+ | 端点 | 内容 |
46
+ | :------------------ | :---------------------------------------- |
47
+ | `GET /docs` | Agent Protocol 接口的 Swagger UI |
48
+ | `GET /redoc` | 同一份文档的 ReDoc 渲染 |
49
49
  | `GET /openapi.json` | 原始 OpenAPI 3.1 文档(仓库内的契约文件) |
50
50
 
51
51
  `src/openapi.json` 是 Agent Protocol 的权威契约,`docs/openapi.json` 是它的镜像。测试会校验「文档中的每个操作都有对应路由」以及「不存在未写入文档的协议路由」,因此文档不会与实现脱节。
@@ -93,14 +93,14 @@ bun src/cli.ts version # 输出版本号
93
93
 
94
94
  ## 架构
95
95
 
96
- | 领域 | 实现 |
97
- |:--|:--|
98
- | HTTP | 原生 `Bun.serve` + Hono |
99
- | 校验 | Zod |
100
- | 持久化 | Drizzle ORM + `postgres.js` + PostgreSQL |
101
- | 图状态 | LangGraph `PostgresSaver` |
102
- | 分布式执行 | Redis 队列与发布订阅 |
103
- | 图与扩展 | TypeScript 模块导出 |
96
+ | 领域 | 实现 |
97
+ | :--------- | :--------------------------------------- |
98
+ | HTTP | 原生 `Bun.serve` + Hono |
99
+ | 校验 | Zod |
100
+ | 持久化 | Drizzle ORM + `postgres.js` + PostgreSQL |
101
+ | 图状态 | LangGraph `PostgresSaver` |
102
+ | 分布式执行 | Redis 队列与发布订阅 |
103
+ | 图与扩展 | TypeScript 模块导出 |
104
104
 
105
105
  Drizzle schema 位于 `src/core/schema.ts`,共享连接位于 `src/core/database.ts`。常规应用查询走 Drizzle,裸 SQL 仅用于初始化 DDL 和 PostgreSQL 特有的 checkpoint 清理。
106
106
 
package/dist/auth.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { AuthUser, JsonObject } from "./types.js";
1
+ import type { AuthUser, JsonObject } from './types.js';
2
2
  export interface AuthorizationContext {
3
3
  user: AuthUser;
4
4
  resource: string;
package/dist/auth.js CHANGED
@@ -14,6 +14,39 @@ var __export = (target, all) => {
14
14
  });
15
15
  };
16
16
  var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
17
+ var __using = (stack, value, async) => {
18
+ if (value != null) {
19
+ if (typeof value !== "object" && typeof value !== "function")
20
+ throw TypeError('Object expected to be assigned to "using" declaration');
21
+ let dispose;
22
+ if (async)
23
+ dispose = value[Symbol.asyncDispose];
24
+ if (dispose === undefined)
25
+ dispose = value[Symbol.dispose];
26
+ if (typeof dispose !== "function")
27
+ throw TypeError("Object not disposable");
28
+ stack.push([async, dispose, value]);
29
+ } else if (async) {
30
+ stack.push([async]);
31
+ }
32
+ return value;
33
+ };
34
+ var __callDispose = (stack, error, hasError) => {
35
+ let fail = (e) => error = hasError ? new SuppressedError(e, error, "An error was suppressed during disposal") : (hasError = true, e), next = (it) => {
36
+ while (it = stack.pop()) {
37
+ try {
38
+ var result = it[1] && it[1].call(it[2]);
39
+ if (it[0])
40
+ return Promise.resolve(result).then(next, (e) => (fail(e), next()));
41
+ } catch (e) {
42
+ fail(e);
43
+ }
44
+ }
45
+ if (hasError)
46
+ throw error;
47
+ };
48
+ return next();
49
+ };
17
50
 
18
51
  // src/auth.ts
19
52
  class Auth {
@@ -35,4 +68,4 @@ export {
35
68
  Auth
36
69
  };
37
70
 
38
- //# debugId=3B0927EBA12BFB6E64756E2164756E21
71
+ //# debugId=876308163D57455964756E2164756E21
package/dist/auth.js.map CHANGED
@@ -2,9 +2,9 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/auth.ts"],
4
4
  "sourcesContent": [
5
- "import type { AuthUser, JsonObject } from \"./types.ts\";\n\nexport interface AuthorizationContext {\n user: AuthUser;\n resource: string;\n action: string;\n permissions: string[];\n}\n\nexport type AuthenticateHandler = (request: Request) => AuthUser | Promise<AuthUser>;\nexport type AuthorizationHandler = (\n context: AuthorizationContext,\n value: JsonObject,\n) => boolean | JsonObject | void | Promise<boolean | JsonObject | void>;\n\nexport class Auth {\n authenticateHandler?: AuthenticateHandler;\n readonly handlers = new Map<string, AuthorizationHandler>();\n\n authenticate(handler: AuthenticateHandler): AuthenticateHandler {\n this.authenticateHandler = handler;\n return handler;\n }\n\n on(resource: string, action: string, handler: AuthorizationHandler): AuthorizationHandler {\n this.handlers.set(`${resource}:${action}`, handler);\n return handler;\n }\n\n handler(resource: string, action: string): AuthorizationHandler | undefined {\n return this.handlers.get(`${resource}:${action}`)\n ?? this.handlers.get(`${resource}:*`)\n ?? this.handlers.get(`*:${action}`)\n ?? this.handlers.get(\"*:*\");\n }\n}\n"
5
+ "import type { AuthUser, JsonObject } from './types.ts'\n\nexport interface AuthorizationContext {\n user: AuthUser\n resource: string\n action: string\n permissions: string[]\n}\n\nexport type AuthenticateHandler = (request: Request) => AuthUser | Promise<AuthUser>\nexport type AuthorizationHandler = (\n context: AuthorizationContext,\n value: JsonObject\n) => boolean | JsonObject | void | Promise<boolean | JsonObject | void>\n\nexport class Auth {\n authenticateHandler?: AuthenticateHandler\n readonly handlers = new Map<string, AuthorizationHandler>()\n\n authenticate(handler: AuthenticateHandler): AuthenticateHandler {\n this.authenticateHandler = handler\n return handler\n }\n\n on(resource: string, action: string, handler: AuthorizationHandler): AuthorizationHandler {\n this.handlers.set(`${resource}:${action}`, handler)\n return handler\n }\n\n handler(resource: string, action: string): AuthorizationHandler | undefined {\n return (\n this.handlers.get(`${resource}:${action}`) ??\n this.handlers.get(`${resource}:*`) ??\n this.handlers.get(`*:${action}`) ??\n this.handlers.get('*:*')\n )\n }\n}\n"
6
6
  ],
7
- "mappings": ";;;;;;;;;;;;;;;;;;AAeO,MAAM,KAAK;AAAA,EAChB;AAAA,EACS,WAAW,IAAI;AAAA,EAExB,YAAY,CAAC,SAAmD;AAAA,IAC9D,KAAK,sBAAsB;AAAA,IAC3B,OAAO;AAAA;AAAA,EAGT,EAAE,CAAC,UAAkB,QAAgB,SAAqD;AAAA,IACxF,KAAK,SAAS,IAAI,GAAG,YAAY,UAAU,OAAO;AAAA,IAClD,OAAO;AAAA;AAAA,EAGT,OAAO,CAAC,UAAkB,QAAkD;AAAA,IAC1E,OAAO,KAAK,SAAS,IAAI,GAAG,YAAY,QAAQ,KAC3C,KAAK,SAAS,IAAI,GAAG,YAAY,KACjC,KAAK,SAAS,IAAI,KAAK,QAAQ,KAC/B,KAAK,SAAS,IAAI,KAAK;AAAA;AAEhC;",
8
- "debugId": "3B0927EBA12BFB6E64756E2164756E21",
7
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAeO,MAAM,KAAK;AAAA,EAChB;AAAA,EACS,WAAW,IAAI;AAAA,EAExB,YAAY,CAAC,SAAmD;AAAA,IAC9D,KAAK,sBAAsB;AAAA,IAC3B,OAAO;AAAA;AAAA,EAGT,EAAE,CAAC,UAAkB,QAAgB,SAAqD;AAAA,IACxF,KAAK,SAAS,IAAI,GAAG,YAAY,UAAU,OAAO;AAAA,IAClD,OAAO;AAAA;AAAA,EAGT,OAAO,CAAC,UAAkB,QAAkD;AAAA,IAC1E,OACE,KAAK,SAAS,IAAI,GAAG,YAAY,QAAQ,KACzC,KAAK,SAAS,IAAI,GAAG,YAAY,KACjC,KAAK,SAAS,IAAI,KAAK,QAAQ,KAC/B,KAAK,SAAS,IAAI,KAAK;AAAA;AAG7B;",
8
+ "debugId": "876308163D57455964756E2164756E21",
9
9
  "names": []
10
10
  }