akanjs 3.0.0-alpha.20 → 3.0.0-alpha.21

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "akanjs",
3
- "version": "3.0.0-alpha.20",
3
+ "version": "3.0.0-alpha.21",
4
4
  "sourceType": "module",
5
5
  "type": "module",
6
6
  "publishConfig": {
@@ -1,4 +1,4 @@
1
- import type { BaseEnv, PromiseOrObject } from "akanjs/base";
1
+ import type { BackendEnv, PromiseOrObject } from "akanjs/base";
2
2
  import type { Adaptor, AdaptorCls, LlmOption } from "akanjs/service";
3
3
  import type { AgentRelayPolicy, MiddlewareCls } from "akanjs/signal";
4
4
  import type { McpServerOption } from "./akanServer";
@@ -14,7 +14,7 @@ export interface AdaptorOverride {
14
14
  * App/library server option builder: use objects, signal middleware, adaptor overrides, web proxies, and the
15
15
  * server settings an app owns — MCP, the agent relay's access policy, and the LLM the relay speaks to.
16
16
  */
17
- export class AkanOption<Env extends BaseEnv = BaseEnv> {
17
+ export class AkanOption<Env = unknown> {
18
18
  readonly #getUses: ((env: Env) => Record<string, PromiseOrObject<unknown>>)[];
19
19
  readonly #middlewares: MiddlewareCls[] = [];
20
20
  readonly #adaptorOverrides: AdaptorOverride[] = [];
@@ -25,7 +25,11 @@ export class AkanOption<Env extends BaseEnv = BaseEnv> {
25
25
  constructor() {
26
26
  this.#getUses = [];
27
27
  }
28
- use(fnOrObject: ((env: Env) => Record<string, PromiseOrObject<unknown>>) | Record<string, PromiseOrObject<unknown>>) {
28
+ use(
29
+ fnOrObject:
30
+ | ((env: Env & BackendEnv) => Record<string, PromiseOrObject<unknown>>)
31
+ | Record<string, PromiseOrObject<unknown>>,
32
+ ) {
29
33
  if (typeof fnOrObject === "function")
30
34
  this.#getUses.push(fnOrObject as (env: Env) => Record<string, PromiseOrObject<unknown>>);
31
35
  else this.#getUses.push(() => fnOrObject);
@@ -67,7 +71,7 @@ export class AkanOption<Env extends BaseEnv = BaseEnv> {
67
71
  else this.#getLlms.push(() => llmOrFn);
68
72
  return this;
69
73
  }
70
- getUses(env: Env): Record<string, PromiseOrObject<unknown>> {
74
+ getUses(env: Env & BackendEnv): Record<string, PromiseOrObject<unknown>> {
71
75
  const uses = this.#getUses.map((fn) => fn(env));
72
76
  return Object.assign({}, ...uses);
73
77
  }
@@ -86,11 +90,11 @@ export class AkanOption<Env extends BaseEnv = BaseEnv> {
86
90
  getAgentAccess(): AgentRelayPolicy | null | undefined {
87
91
  return this.#agentAccess;
88
92
  }
89
- getLlm(env: Env): LlmOption {
93
+ getLlm(env: Env & BackendEnv): LlmOption {
90
94
  return Object.assign({}, ...this.#getLlms.map((fn) => fn(env)));
91
95
  }
92
96
  }
93
97
 
94
98
  export function createDefaultAkanOption() {
95
- return new AkanOption<BaseEnv>().applyWebProxy(LocaleWebProxy, HostBasePathWebProxy);
99
+ return new AkanOption().applyWebProxy(LocaleWebProxy, HostBasePathWebProxy);
96
100
  }
@@ -129,7 +129,7 @@ export class AkanServer {
129
129
  #metricsTimer: Timer | null = null;
130
130
  constructor(
131
131
  name = "AkanServer",
132
- env: BaseEnv = getEnv(),
132
+ env = {},
133
133
  serverMode: "federation" | "batch" | "all" = (process.env.SERVER_MODE as
134
134
  | "federation"
135
135
  | "batch"
@@ -141,7 +141,7 @@ export class AkanServer {
141
141
  this.name = name;
142
142
  this.logger = new Logger(name);
143
143
  this.libs = libs;
144
- this.env = { ...env };
144
+ this.env = Object.assign(getEnv(), env);
145
145
  this.openapi = options?.openapi ?? this.openapi;
146
146
 
147
147
  libs.forEach((lib) => {
@@ -1,4 +1,4 @@
1
- import type { BaseEnv, PromiseOrObject } from "akanjs/base";
1
+ import type { BackendEnv, PromiseOrObject } from "akanjs/base";
2
2
  import type { Adaptor, AdaptorCls, LlmOption } from "akanjs/service";
3
3
  import type { AgentRelayPolicy, MiddlewareCls } from "akanjs/signal";
4
4
  import type { McpServerOption } from "./akanServer.d.ts";
@@ -11,10 +11,10 @@ export interface AdaptorOverride {
11
11
  * App/library server option builder: use objects, signal middleware, adaptor overrides, web proxies, and the
12
12
  * server settings an app owns — MCP, the agent relay's access policy, and the LLM the relay speaks to.
13
13
  */
14
- export declare class AkanOption<Env extends BaseEnv = BaseEnv> {
14
+ export declare class AkanOption<Env = unknown> {
15
15
  #private;
16
16
  constructor();
17
- use(fnOrObject: ((env: Env) => Record<string, PromiseOrObject<unknown>>) | Record<string, PromiseOrObject<unknown>>): this;
17
+ use(fnOrObject: ((env: Env & BackendEnv) => Record<string, PromiseOrObject<unknown>>) | Record<string, PromiseOrObject<unknown>>): this;
18
18
  applyMiddleware(...middlewares: MiddlewareCls[]): this;
19
19
  /** Rebinds a predefined adaptor role (e.g. `LlmAdaptorRole`) to the app's own implementation. Last writer wins. */
20
20
  applyAdaptor<T extends Adaptor>(role: AdaptorCls<T>, adaptor: AdaptorCls<T>): this;
@@ -32,12 +32,12 @@ export declare class AkanOption<Env extends BaseEnv = BaseEnv> {
32
32
  setAgentAccess(policy: AgentRelayPolicy | null): this;
33
33
  /** Settings for whichever adaptor fills `LlmAdaptorRole`, injected into it as the `llmOption` use. */
34
34
  setLlm(llmOrFn: LlmOption | ((env: Env) => LlmOption)): this;
35
- getUses(env: Env): Record<string, PromiseOrObject<unknown>>;
35
+ getUses(env: Env & BackendEnv): Record<string, PromiseOrObject<unknown>>;
36
36
  getMiddlewares(): MiddlewareCls[];
37
37
  getAdaptorOverrides(): AdaptorOverride[];
38
38
  getWebProxies(): WebProxyRegistration[];
39
39
  getMcp(): boolean | McpServerOption | undefined;
40
40
  getAgentAccess(): AgentRelayPolicy | null | undefined;
41
- getLlm(env: Env): LlmOption;
41
+ getLlm(env: Env & BackendEnv): LlmOption;
42
42
  }
43
- export declare function createDefaultAkanOption(): AkanOption<BaseEnv>;
43
+ export declare function createDefaultAkanOption(): AkanOption<unknown>;
@@ -81,7 +81,7 @@ export declare class AkanServer {
81
81
  mcpOption: Omit<McpServerOption, "enabled" | "readOnly" | "auth">;
82
82
  serverMode: "federation" | "batch" | "all";
83
83
  shutdownTimeoutMs: number;
84
- constructor(name?: string, env?: BaseEnv, serverMode?: "federation" | "batch" | "all", ...libsOrOptions: (AkanLib | AkanServerOptions)[]);
84
+ constructor(name?: string, env?: {}, serverMode?: "federation" | "batch" | "all", ...libsOrOptions: (AkanLib | AkanServerOptions)[]);
85
85
  setPrefix(prefix: string): this;
86
86
  setWebsocketPrefix(websocketPrefix: string): this;
87
87
  setOpenApi(openapi?: boolean): this;