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/local/apps/serverLifecycle/serverLifecycle-local.db-shm +0 -0
- package/local/apps/serverLifecycle/serverLifecycle-local_solid.db-shm +0 -0
- package/package.json +1 -1
- package/server/akanOption.ts +10 -6
- package/server/akanServer.ts +2 -2
- package/types/server/akanOption.d.ts +6 -6
- package/types/server/akanServer.d.ts +1 -1
|
Binary file
|
|
Binary file
|
package/package.json
CHANGED
package/server/akanOption.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
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
|
|
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(
|
|
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
|
|
99
|
+
return new AkanOption().applyWebProxy(LocaleWebProxy, HostBasePathWebProxy);
|
|
96
100
|
}
|
package/server/akanServer.ts
CHANGED
|
@@ -129,7 +129,7 @@ export class AkanServer {
|
|
|
129
129
|
#metricsTimer: Timer | null = null;
|
|
130
130
|
constructor(
|
|
131
131
|
name = "AkanServer",
|
|
132
|
-
env
|
|
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 =
|
|
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 {
|
|
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
|
|
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<
|
|
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?:
|
|
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;
|