@centerseedwu/naru-agent 0.2.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 +392 -0
- package/dist/agent.d.ts +39 -0
- package/dist/agent.d.ts.map +1 -0
- package/dist/agent.js +578 -0
- package/dist/agent.js.map +1 -0
- package/dist/compression/base.d.ts +12 -0
- package/dist/compression/base.d.ts.map +1 -0
- package/dist/compression/base.js +2 -0
- package/dist/compression/base.js.map +1 -0
- package/dist/compression/compressor.d.ts +20 -0
- package/dist/compression/compressor.d.ts.map +1 -0
- package/dist/compression/compressor.js +52 -0
- package/dist/compression/compressor.js.map +1 -0
- package/dist/compression/in-memory-store.d.ts +8 -0
- package/dist/compression/in-memory-store.d.ts.map +1 -0
- package/dist/compression/in-memory-store.js +13 -0
- package/dist/compression/in-memory-store.js.map +1 -0
- package/dist/decision/index.d.ts +7 -0
- package/dist/decision/index.d.ts.map +1 -0
- package/dist/decision/index.js +4 -0
- package/dist/decision/index.js.map +1 -0
- package/dist/decision/llm-structured-classifier.d.ts +18 -0
- package/dist/decision/llm-structured-classifier.d.ts.map +1 -0
- package/dist/decision/llm-structured-classifier.js +44 -0
- package/dist/decision/llm-structured-classifier.js.map +1 -0
- package/dist/decision/tool-planner.d.ts +14 -0
- package/dist/decision/tool-planner.d.ts.map +1 -0
- package/dist/decision/tool-planner.js +35 -0
- package/dist/decision/tool-planner.js.map +1 -0
- package/dist/decision/types.d.ts +53 -0
- package/dist/decision/types.d.ts.map +1 -0
- package/dist/decision/types.js +12 -0
- package/dist/decision/types.js.map +1 -0
- package/dist/event-bus.d.ts +10 -0
- package/dist/event-bus.d.ts.map +1 -0
- package/dist/event-bus.js +34 -0
- package/dist/event-bus.js.map +1 -0
- package/dist/guardrails/base.d.ts +10 -0
- package/dist/guardrails/base.d.ts.map +1 -0
- package/dist/guardrails/base.js +2 -0
- package/dist/guardrails/base.js.map +1 -0
- package/dist/guardrails/keyword.d.ts +15 -0
- package/dist/guardrails/keyword.d.ts.map +1 -0
- package/dist/guardrails/keyword.js +37 -0
- package/dist/guardrails/keyword.js.map +1 -0
- package/dist/index.d.ts +51 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +39 -0
- package/dist/index.js.map +1 -0
- package/dist/intent/base.d.ts +19 -0
- package/dist/intent/base.d.ts.map +1 -0
- package/dist/intent/base.js +2 -0
- package/dist/intent/base.js.map +1 -0
- package/dist/intent/llm-classifier.d.ts +22 -0
- package/dist/intent/llm-classifier.d.ts.map +1 -0
- package/dist/intent/llm-classifier.js +49 -0
- package/dist/intent/llm-classifier.js.map +1 -0
- package/dist/intent/tool-calling-classifier.d.ts +16 -0
- package/dist/intent/tool-calling-classifier.d.ts.map +1 -0
- package/dist/intent/tool-calling-classifier.js +56 -0
- package/dist/intent/tool-calling-classifier.js.map +1 -0
- package/dist/knowledge/base.d.ts +14 -0
- package/dist/knowledge/base.d.ts.map +1 -0
- package/dist/knowledge/base.js +10 -0
- package/dist/knowledge/base.js.map +1 -0
- package/dist/knowledge/chroma-store.d.ts +25 -0
- package/dist/knowledge/chroma-store.d.ts.map +1 -0
- package/dist/knowledge/chroma-store.js +70 -0
- package/dist/knowledge/chroma-store.js.map +1 -0
- package/dist/knowledge/contextualizer.d.ts +17 -0
- package/dist/knowledge/contextualizer.d.ts.map +1 -0
- package/dist/knowledge/contextualizer.js +47 -0
- package/dist/knowledge/contextualizer.js.map +1 -0
- package/dist/knowledge/graph-store.d.ts +22 -0
- package/dist/knowledge/graph-store.d.ts.map +1 -0
- package/dist/knowledge/graph-store.js +116 -0
- package/dist/knowledge/graph-store.js.map +1 -0
- package/dist/knowledge/hybrid-store.d.ts +16 -0
- package/dist/knowledge/hybrid-store.d.ts.map +1 -0
- package/dist/knowledge/hybrid-store.js +39 -0
- package/dist/knowledge/hybrid-store.js.map +1 -0
- package/dist/knowledge/in-memory-store.d.ts +27 -0
- package/dist/knowledge/in-memory-store.d.ts.map +1 -0
- package/dist/knowledge/in-memory-store.js +54 -0
- package/dist/knowledge/in-memory-store.js.map +1 -0
- package/dist/knowledge/pgvector-store.d.ts +27 -0
- package/dist/knowledge/pgvector-store.d.ts.map +1 -0
- package/dist/knowledge/pgvector-store.js +68 -0
- package/dist/knowledge/pgvector-store.js.map +1 -0
- package/dist/memory/base.d.ts +21 -0
- package/dist/memory/base.d.ts.map +1 -0
- package/dist/memory/base.js +9 -0
- package/dist/memory/base.js.map +1 -0
- package/dist/memory/in-memory-store.d.ts +10 -0
- package/dist/memory/in-memory-store.d.ts.map +1 -0
- package/dist/memory/in-memory-store.js +35 -0
- package/dist/memory/in-memory-store.js.map +1 -0
- package/dist/memory/manager.d.ts +29 -0
- package/dist/memory/manager.d.ts.map +1 -0
- package/dist/memory/manager.js +121 -0
- package/dist/memory/manager.js.map +1 -0
- package/dist/memory/mem0-manager.d.ts +32 -0
- package/dist/memory/mem0-manager.d.ts.map +1 -0
- package/dist/memory/mem0-manager.js +77 -0
- package/dist/memory/mem0-manager.js.map +1 -0
- package/dist/memory/pgvector-store.d.ts +22 -0
- package/dist/memory/pgvector-store.d.ts.map +1 -0
- package/dist/memory/pgvector-store.js +89 -0
- package/dist/memory/pgvector-store.js.map +1 -0
- package/dist/orchestration/channel.d.ts +18 -0
- package/dist/orchestration/channel.d.ts.map +1 -0
- package/dist/orchestration/channel.js +2 -0
- package/dist/orchestration/channel.js.map +1 -0
- package/dist/orchestration/executor.d.ts +19 -0
- package/dist/orchestration/executor.d.ts.map +1 -0
- package/dist/orchestration/executor.js +2 -0
- package/dist/orchestration/executor.js.map +1 -0
- package/dist/orchestration/index.d.ts +13 -0
- package/dist/orchestration/index.d.ts.map +1 -0
- package/dist/orchestration/index.js +9 -0
- package/dist/orchestration/index.js.map +1 -0
- package/dist/orchestration/intent.d.ts +49 -0
- package/dist/orchestration/intent.d.ts.map +1 -0
- package/dist/orchestration/intent.js +57 -0
- package/dist/orchestration/intent.js.map +1 -0
- package/dist/orchestration/orchestrator.d.ts +59 -0
- package/dist/orchestration/orchestrator.d.ts.map +1 -0
- package/dist/orchestration/orchestrator.js +216 -0
- package/dist/orchestration/orchestrator.js.map +1 -0
- package/dist/orchestration/pending.d.ts +28 -0
- package/dist/orchestration/pending.d.ts.map +1 -0
- package/dist/orchestration/pending.js +32 -0
- package/dist/orchestration/pending.js.map +1 -0
- package/dist/orchestration/result.d.ts +24 -0
- package/dist/orchestration/result.d.ts.map +1 -0
- package/dist/orchestration/result.js +2 -0
- package/dist/orchestration/result.js.map +1 -0
- package/dist/orchestration/session-state.d.ts +24 -0
- package/dist/orchestration/session-state.d.ts.map +1 -0
- package/dist/orchestration/session-state.js +19 -0
- package/dist/orchestration/session-state.js.map +1 -0
- package/dist/orchestration/trace.d.ts +20 -0
- package/dist/orchestration/trace.d.ts.map +1 -0
- package/dist/orchestration/trace.js +2 -0
- package/dist/orchestration/trace.js.map +1 -0
- package/dist/session/base.d.ts +7 -0
- package/dist/session/base.d.ts.map +1 -0
- package/dist/session/base.js +2 -0
- package/dist/session/base.js.map +1 -0
- package/dist/session/in-memory-store.d.ts +9 -0
- package/dist/session/in-memory-store.d.ts.map +1 -0
- package/dist/session/in-memory-store.js +13 -0
- package/dist/session/in-memory-store.js.map +1 -0
- package/dist/session/redis-store.d.ts +16 -0
- package/dist/session/redis-store.d.ts.map +1 -0
- package/dist/session/redis-store.js +29 -0
- package/dist/session/redis-store.js.map +1 -0
- package/dist/skills/base.d.ts +38 -0
- package/dist/skills/base.d.ts.map +1 -0
- package/dist/skills/base.js +24 -0
- package/dist/skills/base.js.map +1 -0
- package/dist/skills/registry.d.ts +11 -0
- package/dist/skills/registry.d.ts.map +1 -0
- package/dist/skills/registry.js +37 -0
- package/dist/skills/registry.js.map +1 -0
- package/dist/skills/selectors.d.ts +23 -0
- package/dist/skills/selectors.d.ts.map +1 -0
- package/dist/skills/selectors.js +52 -0
- package/dist/skills/selectors.js.map +1 -0
- package/dist/tools/base.d.ts +34 -0
- package/dist/tools/base.d.ts.map +1 -0
- package/dist/tools/base.js +22 -0
- package/dist/tools/base.js.map +1 -0
- package/dist/tools/vercel-adapter.d.ts +17 -0
- package/dist/tools/vercel-adapter.d.ts.map +1 -0
- package/dist/tools/vercel-adapter.js +66 -0
- package/dist/tools/vercel-adapter.js.map +1 -0
- package/dist/tracing/collector.d.ts +16 -0
- package/dist/tracing/collector.d.ts.map +1 -0
- package/dist/tracing/collector.js +92 -0
- package/dist/tracing/collector.js.map +1 -0
- package/dist/tracing/exporters/jsonl.d.ts +13 -0
- package/dist/tracing/exporters/jsonl.d.ts.map +1 -0
- package/dist/tracing/exporters/jsonl.js +14 -0
- package/dist/tracing/exporters/jsonl.js.map +1 -0
- package/dist/tracing/trace.d.ts +34 -0
- package/dist/tracing/trace.d.ts.map +1 -0
- package/dist/tracing/trace.js +28 -0
- package/dist/tracing/trace.js.map +1 -0
- package/dist/types.d.ts +77 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +7 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/math.d.ts +3 -0
- package/dist/utils/math.d.ts.map +1 -0
- package/dist/utils/math.js +14 -0
- package/dist/utils/math.js.map +1 -0
- package/dist-cjs/agent.js +581 -0
- package/dist-cjs/compression/base.js +2 -0
- package/dist-cjs/compression/compressor.js +55 -0
- package/dist-cjs/compression/in-memory-store.js +16 -0
- package/dist-cjs/decision/index.js +9 -0
- package/dist-cjs/decision/llm-structured-classifier.js +47 -0
- package/dist-cjs/decision/tool-planner.js +38 -0
- package/dist-cjs/decision/types.js +15 -0
- package/dist-cjs/event-bus.js +37 -0
- package/dist-cjs/guardrails/base.js +2 -0
- package/dist-cjs/guardrails/keyword.js +40 -0
- package/dist-cjs/index.js +84 -0
- package/dist-cjs/intent/base.js +2 -0
- package/dist-cjs/intent/llm-classifier.js +52 -0
- package/dist-cjs/intent/tool-calling-classifier.js +59 -0
- package/dist-cjs/knowledge/base.js +12 -0
- package/dist-cjs/knowledge/chroma-store.js +106 -0
- package/dist-cjs/knowledge/contextualizer.js +50 -0
- package/dist-cjs/knowledge/graph-store.js +152 -0
- package/dist-cjs/knowledge/hybrid-store.js +42 -0
- package/dist-cjs/knowledge/in-memory-store.js +57 -0
- package/dist-cjs/knowledge/pgvector-store.js +71 -0
- package/dist-cjs/memory/base.js +11 -0
- package/dist-cjs/memory/in-memory-store.js +38 -0
- package/dist-cjs/memory/manager.js +124 -0
- package/dist-cjs/memory/mem0-manager.js +113 -0
- package/dist-cjs/memory/pgvector-store.js +92 -0
- package/dist-cjs/orchestration/channel.js +2 -0
- package/dist-cjs/orchestration/executor.js +2 -0
- package/dist-cjs/orchestration/index.js +17 -0
- package/dist-cjs/orchestration/intent.js +61 -0
- package/dist-cjs/orchestration/orchestrator.js +219 -0
- package/dist-cjs/orchestration/pending.js +36 -0
- package/dist-cjs/orchestration/result.js +2 -0
- package/dist-cjs/orchestration/session-state.js +22 -0
- package/dist-cjs/orchestration/trace.js +2 -0
- package/dist-cjs/session/base.js +2 -0
- package/dist-cjs/session/in-memory-store.js +16 -0
- package/dist-cjs/session/redis-store.js +32 -0
- package/dist-cjs/skills/base.js +27 -0
- package/dist-cjs/skills/registry.js +40 -0
- package/dist-cjs/skills/selectors.js +56 -0
- package/dist-cjs/tools/base.js +24 -0
- package/dist-cjs/tools/vercel-adapter.js +69 -0
- package/dist-cjs/tracing/collector.js +95 -0
- package/dist-cjs/tracing/exporters/jsonl.js +17 -0
- package/dist-cjs/tracing/trace.js +31 -0
- package/dist-cjs/types.js +9 -0
- package/dist-cjs/utils/math.js +17 -0
- package/package.json +70 -0
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pending state management — tracks confirmations awaiting user response.
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* InMemoryPendingStateManager — simple in-memory Map implementation.
|
|
6
|
+
*/
|
|
7
|
+
export class InMemoryPendingStateManager {
|
|
8
|
+
store = new Map();
|
|
9
|
+
async getPending(sessionId) {
|
|
10
|
+
return this.store.get(sessionId) ?? null;
|
|
11
|
+
}
|
|
12
|
+
async setPending(sessionId, state) {
|
|
13
|
+
this.store.set(sessionId, state);
|
|
14
|
+
}
|
|
15
|
+
async clearPending(sessionId) {
|
|
16
|
+
this.store.delete(sessionId);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
const CONFIRM_PATTERN = /^(好|確認|對|yes|y|ok|好的|是|沒問題|sure|confirm)$/i;
|
|
20
|
+
const REJECT_PATTERN = /^(不要|取消|no|n|不|cancel|否|算了|不行|reject)$/i;
|
|
21
|
+
/**
|
|
22
|
+
* Default implementation to classify a user message's disposition toward a pending confirmation.
|
|
23
|
+
*/
|
|
24
|
+
export function classifyConfirmationDisposition(message) {
|
|
25
|
+
const trimmed = message.trim();
|
|
26
|
+
if (CONFIRM_PATTERN.test(trimmed))
|
|
27
|
+
return "confirm";
|
|
28
|
+
if (REJECT_PATTERN.test(trimmed))
|
|
29
|
+
return "reject";
|
|
30
|
+
return "override";
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=pending.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pending.js","sourceRoot":"","sources":["../../src/orchestration/pending.ts"],"names":[],"mappings":"AAAA;;GAEG;AAgBH;;GAEG;AACH,MAAM,OAAO,2BAA2B;IAC9B,KAAK,GAAG,IAAI,GAAG,EAAwB,CAAC;IAEhD,KAAK,CAAC,UAAU,CAAC,SAAiB;QAChC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,SAAiB,EAAE,KAAmB;QACrD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,SAAiB;QAClC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC/B,CAAC;CACF;AAED,MAAM,eAAe,GAAG,4CAA4C,CAAC;AACrE,MAAM,cAAc,GAAG,yCAAyC,CAAC;AAEjE;;GAEG;AACH,MAAM,UAAU,+BAA+B,CAC7C,OAAe;IAEf,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAC/B,IAAI,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,SAAS,CAAC;IACpD,IAAI,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,QAAQ,CAAC;IAClD,OAAO,UAAU,CAAC;AACpB,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { NaruResult } from "../types.js";
|
|
2
|
+
import type { AgentDecisionTrace } from "./trace.js";
|
|
3
|
+
import type { OrchestratorIntent } from "./intent.js";
|
|
4
|
+
export interface PendingConfirmation {
|
|
5
|
+
type: string;
|
|
6
|
+
payload: Record<string, unknown>;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* OrchestrationResult extends NaruResult with orchestration-specific fields.
|
|
10
|
+
* All new fields are optional or have reasonable defaults.
|
|
11
|
+
*
|
|
12
|
+
* Note: `trace` from NaruResult (Trace | null) is preserved for backward compat.
|
|
13
|
+
* The orchestration decision trace is exposed via `decisionTrace`.
|
|
14
|
+
* The orchestration-resolved intent is exposed via `orchestrationIntent`.
|
|
15
|
+
*/
|
|
16
|
+
export interface OrchestrationResult extends NaruResult {
|
|
17
|
+
/** Full decision trace for this orchestration invocation */
|
|
18
|
+
decisionTrace: AgentDecisionTrace;
|
|
19
|
+
/** If set, agent is waiting for user confirmation */
|
|
20
|
+
pendingConfirmation: PendingConfirmation | null;
|
|
21
|
+
/** The orchestration-resolved intent (null if no resolver configured) */
|
|
22
|
+
orchestrationIntent: OrchestratorIntent<string> | null;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=result.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"result.d.ts","sourceRoot":"","sources":["../../src/orchestration/result.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEtD,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,mBAAoB,SAAQ,UAAU;IACrD,4DAA4D;IAC5D,aAAa,EAAE,kBAAkB,CAAC;IAClC,qDAAqD;IACrD,mBAAmB,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAChD,yEAAyE;IACzE,mBAAmB,EAAE,kBAAkB,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;CACxD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"result.js","sourceRoot":"","sources":["../../src/orchestration/result.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AgentSessionState — tracks entities presented in the last response for coreference resolution.
|
|
3
|
+
*/
|
|
4
|
+
export interface AgentSessionState {
|
|
5
|
+
sessionId: string;
|
|
6
|
+
lastPresentedEntities: unknown[];
|
|
7
|
+
metadata: Record<string, unknown>;
|
|
8
|
+
updatedAt: number;
|
|
9
|
+
}
|
|
10
|
+
export interface BaseSessionStateStore {
|
|
11
|
+
get(sessionId: string): Promise<AgentSessionState | null>;
|
|
12
|
+
save(sessionId: string, state: AgentSessionState): Promise<void>;
|
|
13
|
+
clear(sessionId: string): Promise<void>;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* InMemorySessionStateStore — simple in-memory Map implementation.
|
|
17
|
+
*/
|
|
18
|
+
export declare class InMemorySessionStateStore implements BaseSessionStateStore {
|
|
19
|
+
private store;
|
|
20
|
+
get(sessionId: string): Promise<AgentSessionState | null>;
|
|
21
|
+
save(sessionId: string, state: AgentSessionState): Promise<void>;
|
|
22
|
+
clear(sessionId: string): Promise<void>;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=session-state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-state.d.ts","sourceRoot":"","sources":["../../src/orchestration/session-state.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,qBAAqB,EAAE,OAAO,EAAE,CAAC;IACjC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,qBAAqB;IACpC,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;IAC1D,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjE,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACzC;AAED;;GAEG;AACH,qBAAa,yBAA0B,YAAW,qBAAqB;IACrE,OAAO,CAAC,KAAK,CAAwC;IAE/C,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAIzD,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAIhE,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAG9C"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AgentSessionState — tracks entities presented in the last response for coreference resolution.
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* InMemorySessionStateStore — simple in-memory Map implementation.
|
|
6
|
+
*/
|
|
7
|
+
export class InMemorySessionStateStore {
|
|
8
|
+
store = new Map();
|
|
9
|
+
async get(sessionId) {
|
|
10
|
+
return this.store.get(sessionId) ?? null;
|
|
11
|
+
}
|
|
12
|
+
async save(sessionId, state) {
|
|
13
|
+
this.store.set(sessionId, state);
|
|
14
|
+
}
|
|
15
|
+
async clear(sessionId) {
|
|
16
|
+
this.store.delete(sessionId);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=session-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-state.js","sourceRoot":"","sources":["../../src/orchestration/session-state.ts"],"names":[],"mappings":"AAAA;;GAEG;AAeH;;GAEG;AACH,MAAM,OAAO,yBAAyB;IAC5B,KAAK,GAAG,IAAI,GAAG,EAA6B,CAAC;IAErD,KAAK,CAAC,GAAG,CAAC,SAAiB;QACzB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,SAAiB,EAAE,KAAwB;QACpD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,SAAiB;QAC3B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC/B,CAAC;CACF"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { OrchestratorIntent } from "./intent.js";
|
|
2
|
+
/**
|
|
3
|
+
* AgentDecisionTrace — records the decision path and timings for each orchestrator invocation.
|
|
4
|
+
*/
|
|
5
|
+
export type OrchestrationPhase = "pending_confirmation" | "direct_execution" | "delegate" | "blocked";
|
|
6
|
+
export interface OrchestrationTimings {
|
|
7
|
+
total: number;
|
|
8
|
+
intentResolution?: number;
|
|
9
|
+
directExecution?: number;
|
|
10
|
+
delegate?: number;
|
|
11
|
+
}
|
|
12
|
+
export interface AgentDecisionTrace {
|
|
13
|
+
traceId: string;
|
|
14
|
+
phaseReached: OrchestrationPhase;
|
|
15
|
+
intentResolved: OrchestratorIntent<string> | null;
|
|
16
|
+
timings: OrchestrationTimings;
|
|
17
|
+
directExecutorUsed: string | null;
|
|
18
|
+
delegateUsed: string | null;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=trace.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trace.d.ts","sourceRoot":"","sources":["../../src/orchestration/trace.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEtD;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAC1B,sBAAsB,GACtB,kBAAkB,GAClB,UAAU,GACV,SAAS,CAAC;AAEd,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,kBAAkB,CAAC;IACjC,cAAc,EAAE,kBAAkB,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;IAClD,OAAO,EAAE,oBAAoB,CAAC;IAC9B,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trace.js","sourceRoot":"","sources":["../../src/orchestration/trace.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ModelMessage } from "ai";
|
|
2
|
+
export interface BaseSessionStore {
|
|
3
|
+
get(sessionId: string): Promise<ModelMessage[] | null>;
|
|
4
|
+
save(sessionId: string, history: ModelMessage[]): Promise<void>;
|
|
5
|
+
delete(sessionId: string): Promise<void>;
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=base.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/session/base.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAEvC,MAAM,WAAW,gBAAgB;IAC/B,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,CAAC;IACvD,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChE,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/session/base.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ModelMessage } from "ai";
|
|
2
|
+
import type { BaseSessionStore } from "./base.js";
|
|
3
|
+
export declare class InMemorySessionStore implements BaseSessionStore {
|
|
4
|
+
private store;
|
|
5
|
+
get(sessionId: string): Promise<ModelMessage[] | null>;
|
|
6
|
+
save(sessionId: string, history: ModelMessage[]): Promise<void>;
|
|
7
|
+
delete(sessionId: string): Promise<void>;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=in-memory-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"in-memory-store.d.ts","sourceRoot":"","sources":["../../src/session/in-memory-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AACvC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAElD,qBAAa,oBAAqB,YAAW,gBAAgB;IAC3D,OAAO,CAAC,KAAK,CAAqC;IAE5C,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC;IAItD,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/D,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAG/C"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export class InMemorySessionStore {
|
|
2
|
+
store = new Map();
|
|
3
|
+
async get(sessionId) {
|
|
4
|
+
return this.store.get(sessionId) ?? null;
|
|
5
|
+
}
|
|
6
|
+
async save(sessionId, history) {
|
|
7
|
+
this.store.set(sessionId, history);
|
|
8
|
+
}
|
|
9
|
+
async delete(sessionId) {
|
|
10
|
+
this.store.delete(sessionId);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=in-memory-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"in-memory-store.js","sourceRoot":"","sources":["../../src/session/in-memory-store.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,oBAAoB;IACvB,KAAK,GAAG,IAAI,GAAG,EAA0B,CAAC;IAElD,KAAK,CAAC,GAAG,CAAC,SAAiB;QACzB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,SAAiB,EAAE,OAAuB;QACnD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,SAAiB;QAC5B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC/B,CAAC;CACF"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { ModelMessage } from "ai";
|
|
2
|
+
import type { BaseSessionStore } from "./base.js";
|
|
3
|
+
/**
|
|
4
|
+
* Redis-backed session store. Requires `ioredis` as optional dependency.
|
|
5
|
+
*/
|
|
6
|
+
export declare class RedisSessionStore implements BaseSessionStore {
|
|
7
|
+
private redis;
|
|
8
|
+
private prefix;
|
|
9
|
+
private ttlSeconds;
|
|
10
|
+
constructor(redis: import("ioredis").default, prefix?: string, ttlSeconds?: number);
|
|
11
|
+
private key;
|
|
12
|
+
get(sessionId: string): Promise<ModelMessage[] | null>;
|
|
13
|
+
save(sessionId: string, history: ModelMessage[]): Promise<void>;
|
|
14
|
+
delete(sessionId: string): Promise<void>;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=redis-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redis-store.d.ts","sourceRoot":"","sources":["../../src/session/redis-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AACvC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAElD;;GAEG;AACH,qBAAa,iBAAkB,YAAW,gBAAgB;IACxD,OAAO,CAAC,KAAK,CAA4B;IACzC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,UAAU,CAAS;gBAGzB,KAAK,EAAE,OAAO,SAAS,EAAE,OAAO,EAChC,MAAM,SAAkB,EACxB,UAAU,SAAQ;IAOpB,OAAO,CAAC,GAAG;IAIL,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC;IAMtD,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAS/D,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAG/C"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Redis-backed session store. Requires `ioredis` as optional dependency.
|
|
3
|
+
*/
|
|
4
|
+
export class RedisSessionStore {
|
|
5
|
+
redis;
|
|
6
|
+
prefix;
|
|
7
|
+
ttlSeconds;
|
|
8
|
+
constructor(redis, prefix = "naru:session:", ttlSeconds = 86400) {
|
|
9
|
+
this.redis = redis;
|
|
10
|
+
this.prefix = prefix;
|
|
11
|
+
this.ttlSeconds = ttlSeconds;
|
|
12
|
+
}
|
|
13
|
+
key(sessionId) {
|
|
14
|
+
return `${this.prefix}${sessionId}`;
|
|
15
|
+
}
|
|
16
|
+
async get(sessionId) {
|
|
17
|
+
const data = await this.redis.get(this.key(sessionId));
|
|
18
|
+
if (!data)
|
|
19
|
+
return null;
|
|
20
|
+
return JSON.parse(data);
|
|
21
|
+
}
|
|
22
|
+
async save(sessionId, history) {
|
|
23
|
+
await this.redis.set(this.key(sessionId), JSON.stringify(history), "EX", this.ttlSeconds);
|
|
24
|
+
}
|
|
25
|
+
async delete(sessionId) {
|
|
26
|
+
await this.redis.del(this.key(sessionId));
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=redis-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redis-store.js","sourceRoot":"","sources":["../../src/session/redis-store.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,OAAO,iBAAiB;IACpB,KAAK,CAA4B;IACjC,MAAM,CAAS;IACf,UAAU,CAAS;IAE3B,YACE,KAAgC,EAChC,MAAM,GAAG,eAAe,EACxB,UAAU,GAAG,KAAK;QAElB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAEO,GAAG,CAAC,SAAiB;QAC3B,OAAO,GAAG,IAAI,CAAC,MAAM,GAAG,SAAS,EAAE,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,SAAiB;QACzB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;QACvD,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QACvB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAmB,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,SAAiB,EAAE,OAAuB;QACnD,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAClB,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EACnB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EACvB,IAAI,EACJ,IAAI,CAAC,UAAU,CAChB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,SAAiB;QAC5B,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;IAC5C,CAAC;CACF"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { BaseTool } from "../tools/base.js";
|
|
2
|
+
import type { BaseKnowledgeStore } from "../knowledge/base.js";
|
|
3
|
+
export interface SkillContext {
|
|
4
|
+
message: string;
|
|
5
|
+
userId?: string;
|
|
6
|
+
sessionId?: string;
|
|
7
|
+
memoryContext: string;
|
|
8
|
+
knowledgeStore?: BaseKnowledgeStore;
|
|
9
|
+
}
|
|
10
|
+
export interface SkillResult {
|
|
11
|
+
promptInjection: string;
|
|
12
|
+
extraTools: BaseTool[];
|
|
13
|
+
overrideSystemPrompt: string | null;
|
|
14
|
+
skillName: string;
|
|
15
|
+
skipped: boolean;
|
|
16
|
+
}
|
|
17
|
+
export interface BaseSkill {
|
|
18
|
+
name: string;
|
|
19
|
+
description: string;
|
|
20
|
+
triggers: string[];
|
|
21
|
+
priority: number;
|
|
22
|
+
alwaysActive: boolean;
|
|
23
|
+
run: (message: string, context: SkillContext) => Promise<SkillResult>;
|
|
24
|
+
}
|
|
25
|
+
export interface SkillConfig {
|
|
26
|
+
name: string;
|
|
27
|
+
description?: string;
|
|
28
|
+
triggers?: string[];
|
|
29
|
+
priority?: number;
|
|
30
|
+
alwaysActive?: boolean;
|
|
31
|
+
run: (message: string, context: SkillContext) => Promise<SkillResult>;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Factory function to create a skill (equivalent to Python @skill decorator).
|
|
35
|
+
*/
|
|
36
|
+
export declare function skill(config: SkillConfig): BaseSkill;
|
|
37
|
+
export declare function makeSkillResult(partial?: Partial<SkillResult>): SkillResult;
|
|
38
|
+
//# sourceMappingURL=base.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/skills/base.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE/D,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,kBAAkB,CAAC;CACrC;AAED,MAAM,WAAW,WAAW;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,QAAQ,EAAE,CAAC;IACvB,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,OAAO,CAAC;IACtB,GAAG,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;CACvE;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,GAAG,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;CACvE;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,CASpD;AAED,wBAAgB,eAAe,CAC7B,OAAO,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GAC7B,WAAW,CASb"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Factory function to create a skill (equivalent to Python @skill decorator).
|
|
3
|
+
*/
|
|
4
|
+
export function skill(config) {
|
|
5
|
+
return {
|
|
6
|
+
name: config.name,
|
|
7
|
+
description: config.description ?? "",
|
|
8
|
+
triggers: config.triggers ?? [],
|
|
9
|
+
priority: config.priority ?? 0,
|
|
10
|
+
alwaysActive: config.alwaysActive ?? false,
|
|
11
|
+
run: config.run,
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
export function makeSkillResult(partial) {
|
|
15
|
+
return {
|
|
16
|
+
promptInjection: "",
|
|
17
|
+
extraTools: [],
|
|
18
|
+
overrideSystemPrompt: null,
|
|
19
|
+
skillName: "",
|
|
20
|
+
skipped: false,
|
|
21
|
+
...partial,
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=base.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/skills/base.ts"],"names":[],"mappings":"AAqCA;;GAEG;AACH,MAAM,UAAU,KAAK,CAAC,MAAmB;IACvC,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,EAAE;QACrC,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,EAAE;QAC/B,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,CAAC;QAC9B,YAAY,EAAE,MAAM,CAAC,YAAY,IAAI,KAAK;QAC1C,GAAG,EAAE,MAAM,CAAC,GAAG;KAChB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,OAA8B;IAE9B,OAAO;QACL,eAAe,EAAE,EAAE;QACnB,UAAU,EAAE,EAAE;QACd,oBAAoB,EAAE,IAAI;QAC1B,SAAS,EAAE,EAAE;QACb,OAAO,EAAE,KAAK;QACd,GAAG,OAAO;KACX,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { BaseSkill, SkillContext, SkillResult } from "./base.js";
|
|
2
|
+
import type { BaseSkillSelector } from "./selectors.js";
|
|
3
|
+
export declare class SkillRegistry {
|
|
4
|
+
private skills;
|
|
5
|
+
private selector;
|
|
6
|
+
private maxActiveSkills;
|
|
7
|
+
constructor(skills: BaseSkill[], selector?: BaseSkillSelector, maxActiveSkills?: number);
|
|
8
|
+
selectSkills(message: string): Promise<BaseSkill[]>;
|
|
9
|
+
runSkills(message: string, context: SkillContext): Promise<SkillResult[]>;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/skills/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACtE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAIxD,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,QAAQ,CAAoB;IACpC,OAAO,CAAC,eAAe,CAAS;gBAG9B,MAAM,EAAE,SAAS,EAAE,EACnB,QAAQ,CAAC,EAAE,iBAAiB,EAC5B,eAAe,SAAI;IAOf,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAOnD,SAAS,CACb,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC,WAAW,EAAE,CAAC;CAuB1B"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { KeywordSkillSelector } from "./selectors.js";
|
|
2
|
+
import { makeSkillResult } from "./base.js";
|
|
3
|
+
export class SkillRegistry {
|
|
4
|
+
skills;
|
|
5
|
+
selector;
|
|
6
|
+
maxActiveSkills;
|
|
7
|
+
constructor(skills, selector, maxActiveSkills = 3) {
|
|
8
|
+
this.skills = skills;
|
|
9
|
+
this.selector = selector ?? new KeywordSkillSelector();
|
|
10
|
+
this.maxActiveSkills = maxActiveSkills;
|
|
11
|
+
}
|
|
12
|
+
async selectSkills(message) {
|
|
13
|
+
const selected = await this.selector.select(this.skills, message);
|
|
14
|
+
return selected
|
|
15
|
+
.sort((a, b) => b.priority - a.priority)
|
|
16
|
+
.slice(0, this.maxActiveSkills);
|
|
17
|
+
}
|
|
18
|
+
async runSkills(message, context) {
|
|
19
|
+
const selected = await this.selectSkills(message);
|
|
20
|
+
if (selected.length === 0)
|
|
21
|
+
return [];
|
|
22
|
+
const results = await Promise.allSettled(selected.map(async (s) => {
|
|
23
|
+
try {
|
|
24
|
+
const result = await s.run(message, context);
|
|
25
|
+
return { ...result, skillName: s.name };
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
return makeSkillResult({ skillName: s.name, skipped: true });
|
|
29
|
+
}
|
|
30
|
+
}));
|
|
31
|
+
return results
|
|
32
|
+
.filter((r) => r.status === "fulfilled")
|
|
33
|
+
.map((r) => r.value)
|
|
34
|
+
.filter((r) => !r.skipped);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/skills/registry.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAE5C,MAAM,OAAO,aAAa;IAChB,MAAM,CAAc;IACpB,QAAQ,CAAoB;IAC5B,eAAe,CAAS;IAEhC,YACE,MAAmB,EACnB,QAA4B,EAC5B,eAAe,GAAG,CAAC;QAEnB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,QAAQ,IAAI,IAAI,oBAAoB,EAAE,CAAC;QACvD,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,OAAe;QAChC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAClE,OAAO,QAAQ;aACZ,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;aACvC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,SAAS,CACb,OAAe,EACf,OAAqB;QAErB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAClD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAErC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CACtC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;YACvB,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBAC7C,OAAO,EAAE,GAAG,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YAC1C,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,eAAe,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YAC/D,CAAC;QACH,CAAC,CAAC,CACH,CAAC;QAEF,OAAO,OAAO;aACX,MAAM,CACL,CAAC,CAAC,EAA4C,EAAE,CAC9C,CAAC,CAAC,MAAM,KAAK,WAAW,CAC3B;aACA,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;aACnB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;CACF"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { BaseSkill } from "./base.js";
|
|
2
|
+
import type { EmbedFn } from "../types.js";
|
|
3
|
+
export interface BaseSkillSelector {
|
|
4
|
+
select(skills: BaseSkill[], message: string): Promise<BaseSkill[]>;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Case-insensitive keyword matching on skill triggers.
|
|
8
|
+
*/
|
|
9
|
+
export declare class KeywordSkillSelector implements BaseSkillSelector {
|
|
10
|
+
select(skills: BaseSkill[], message: string): Promise<BaseSkill[]>;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Embedding-based similarity matching for skill selection.
|
|
14
|
+
*/
|
|
15
|
+
export declare class EmbeddingSkillSelector implements BaseSkillSelector {
|
|
16
|
+
private embedFn;
|
|
17
|
+
private topK;
|
|
18
|
+
private similarityThreshold;
|
|
19
|
+
private cachedEmbeddings;
|
|
20
|
+
constructor(embedFn: EmbedFn, topK?: number, similarityThreshold?: number);
|
|
21
|
+
select(skills: BaseSkill[], message: string): Promise<BaseSkill[]>;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=selectors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selectors.d.ts","sourceRoot":"","sources":["../../src/skills/selectors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAG3C,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;CACpE;AAED;;GAEG;AACH,qBAAa,oBAAqB,YAAW,iBAAiB;IACtD,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;CAQzE;AAED;;GAEG;AACH,qBAAa,sBAAuB,YAAW,iBAAiB;IAC9D,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,mBAAmB,CAAS;IACpC,OAAO,CAAC,gBAAgB,CAAsC;gBAG5D,OAAO,EAAE,OAAO,EAChB,IAAI,SAAI,EACR,mBAAmB,SAAO;IAOtB,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;CA+BzE"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { cosineSimilarity } from "../utils/math.js";
|
|
2
|
+
/**
|
|
3
|
+
* Case-insensitive keyword matching on skill triggers.
|
|
4
|
+
*/
|
|
5
|
+
export class KeywordSkillSelector {
|
|
6
|
+
async select(skills, message) {
|
|
7
|
+
const lower = message.toLowerCase();
|
|
8
|
+
return skills.filter((s) => s.alwaysActive ||
|
|
9
|
+
s.triggers.some((t) => lower.includes(t.toLowerCase())));
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Embedding-based similarity matching for skill selection.
|
|
14
|
+
*/
|
|
15
|
+
export class EmbeddingSkillSelector {
|
|
16
|
+
embedFn;
|
|
17
|
+
topK;
|
|
18
|
+
similarityThreshold;
|
|
19
|
+
cachedEmbeddings = null;
|
|
20
|
+
constructor(embedFn, topK = 2, similarityThreshold = 0.45) {
|
|
21
|
+
this.embedFn = embedFn;
|
|
22
|
+
this.topK = topK;
|
|
23
|
+
this.similarityThreshold = similarityThreshold;
|
|
24
|
+
}
|
|
25
|
+
async select(skills, message) {
|
|
26
|
+
const alwaysActive = skills.filter((s) => s.alwaysActive);
|
|
27
|
+
const candidates = skills.filter((s) => !s.alwaysActive);
|
|
28
|
+
if (candidates.length === 0)
|
|
29
|
+
return alwaysActive;
|
|
30
|
+
// Build skill description embeddings (cached)
|
|
31
|
+
if (!this.cachedEmbeddings) {
|
|
32
|
+
const descriptions = candidates.map((s) => `${s.name}: ${s.description} ${s.triggers.join(" ")}`);
|
|
33
|
+
const embeddings = await this.embedFn(descriptions);
|
|
34
|
+
this.cachedEmbeddings = new Map();
|
|
35
|
+
for (let i = 0; i < candidates.length; i++) {
|
|
36
|
+
this.cachedEmbeddings.set(candidates[i].name, embeddings[i]);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
const [queryEmbed] = await this.embedFn([message]);
|
|
40
|
+
const scored = candidates
|
|
41
|
+
.map((s) => ({
|
|
42
|
+
skill: s,
|
|
43
|
+
score: cosineSimilarity(queryEmbed, this.cachedEmbeddings.get(s.name)),
|
|
44
|
+
}))
|
|
45
|
+
.filter((x) => x.score >= this.similarityThreshold)
|
|
46
|
+
.sort((a, b) => b.score - a.score)
|
|
47
|
+
.slice(0, this.topK)
|
|
48
|
+
.map((x) => x.skill);
|
|
49
|
+
return [...alwaysActive, ...scored];
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=selectors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selectors.js","sourceRoot":"","sources":["../../src/skills/selectors.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export interface BaseTool<TParams extends z.ZodType = z.ZodType> {
|
|
3
|
+
name: string;
|
|
4
|
+
description: string;
|
|
5
|
+
parameters: TParams;
|
|
6
|
+
execute: (params: z.infer<TParams>) => Promise<string>;
|
|
7
|
+
/** Execution timeout in milliseconds. */
|
|
8
|
+
timeout?: number;
|
|
9
|
+
/** Number of retries on failure (0 = no retry). */
|
|
10
|
+
retries?: number;
|
|
11
|
+
}
|
|
12
|
+
export interface ToolConfig<TParams extends z.ZodType = z.ZodType> {
|
|
13
|
+
name: string;
|
|
14
|
+
description: string;
|
|
15
|
+
parameters: TParams;
|
|
16
|
+
execute: (params: z.infer<TParams>) => Promise<string>;
|
|
17
|
+
/** Execution timeout in milliseconds. */
|
|
18
|
+
timeout?: number;
|
|
19
|
+
/** Number of retries on failure (0 = no retry). */
|
|
20
|
+
retries?: number;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Factory function to create a tool (equivalent to Python @tool decorator).
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* const weatherTool = tool({
|
|
27
|
+
* name: "get_weather",
|
|
28
|
+
* description: "Get weather for a city",
|
|
29
|
+
* parameters: z.object({ city: z.string() }),
|
|
30
|
+
* execute: async ({ city }) => `Weather in ${city}: sunny`,
|
|
31
|
+
* });
|
|
32
|
+
*/
|
|
33
|
+
export declare function tool<TParams extends z.ZodType>(config: ToolConfig<TParams>): BaseTool<TParams>;
|
|
34
|
+
//# sourceMappingURL=base.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/tools/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,WAAW,QAAQ,CAAC,OAAO,SAAS,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO;IAC7D,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACvD,yCAAyC;IACzC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mDAAmD;IACnD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO;IAC/D,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACvD,yCAAyC;IACzC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mDAAmD;IACnD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,IAAI,CAAC,OAAO,SAAS,CAAC,CAAC,OAAO,EAC5C,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,GAC1B,QAAQ,CAAC,OAAO,CAAC,CASnB"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Factory function to create a tool (equivalent to Python @tool decorator).
|
|
3
|
+
*
|
|
4
|
+
* @example
|
|
5
|
+
* const weatherTool = tool({
|
|
6
|
+
* name: "get_weather",
|
|
7
|
+
* description: "Get weather for a city",
|
|
8
|
+
* parameters: z.object({ city: z.string() }),
|
|
9
|
+
* execute: async ({ city }) => `Weather in ${city}: sunny`,
|
|
10
|
+
* });
|
|
11
|
+
*/
|
|
12
|
+
export function tool(config) {
|
|
13
|
+
return {
|
|
14
|
+
name: config.name,
|
|
15
|
+
description: config.description,
|
|
16
|
+
parameters: config.parameters,
|
|
17
|
+
execute: config.execute,
|
|
18
|
+
timeout: config.timeout,
|
|
19
|
+
retries: config.retries,
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=base.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/tools/base.ts"],"names":[],"mappings":"AAwBA;;;;;;;;;;GAUG;AACH,MAAM,UAAU,IAAI,CAClB,MAA2B;IAE3B,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,OAAO,EAAE,MAAM,CAAC,OAAO;KACxB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { type ToolSet } from "ai";
|
|
2
|
+
import type { BaseTool } from "./base.js";
|
|
3
|
+
/**
|
|
4
|
+
* Convert naru BaseTool[] to Vercel AI SDK ToolSet record.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* const tools = toVercelTools([weatherTool, searchTool]);
|
|
8
|
+
* const result = await generateText({ model, tools, prompt: "..." });
|
|
9
|
+
*/
|
|
10
|
+
export declare function toVercelTools(tools: BaseTool[]): ToolSet;
|
|
11
|
+
/**
|
|
12
|
+
* Same as toVercelTools but with a no-op execute.
|
|
13
|
+
* Useful for tool planning where you need LLM tool selection
|
|
14
|
+
* without actually executing tools.
|
|
15
|
+
*/
|
|
16
|
+
export declare function toVercelToolsNoop(tools: BaseTool[]): ToolSet;
|
|
17
|
+
//# sourceMappingURL=vercel-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vercel-adapter.d.ts","sourceRoot":"","sources":["../../src/tools/vercel-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,KAAK,OAAO,EAAE,MAAM,IAAI,CAAC;AACtD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAE1C;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,QAAQ,EAAE,GAChB,OAAO,CAwCT;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,OAAO,CAW5D"}
|