@namzu/sdk 0.1.3 → 0.1.4-rc.1
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 +14 -2
- package/dist/advisory/context.d.ts +23 -0
- package/dist/advisory/context.d.ts.map +1 -0
- package/dist/advisory/context.js +33 -0
- package/dist/advisory/context.js.map +1 -0
- package/dist/advisory/evaluator.d.ts +14 -0
- package/dist/advisory/evaluator.d.ts.map +1 -0
- package/dist/advisory/evaluator.js +87 -0
- package/dist/advisory/evaluator.js.map +1 -0
- package/dist/advisory/executor.d.ts +40 -0
- package/dist/advisory/executor.d.ts.map +1 -0
- package/dist/advisory/executor.js +132 -0
- package/dist/advisory/executor.js.map +1 -0
- package/dist/advisory/index.d.ts +6 -0
- package/dist/advisory/index.d.ts.map +1 -0
- package/dist/advisory/index.js +5 -0
- package/dist/advisory/index.js.map +1 -0
- package/dist/advisory/registry.d.ts +14 -0
- package/dist/advisory/registry.d.ts.map +1 -0
- package/dist/advisory/registry.js +36 -0
- package/dist/advisory/registry.js.map +1 -0
- package/dist/agents/SupervisorAgent.d.ts.map +1 -1
- package/dist/agents/SupervisorAgent.js +11 -1
- package/dist/agents/SupervisorAgent.js.map +1 -1
- package/dist/compaction/extractor.d.ts +7 -0
- package/dist/compaction/extractor.d.ts.map +1 -0
- package/dist/compaction/extractor.js +131 -0
- package/dist/compaction/extractor.js.map +1 -0
- package/dist/compaction/index.d.ts +6 -0
- package/dist/compaction/index.d.ts.map +1 -0
- package/dist/compaction/index.js +5 -0
- package/dist/compaction/index.js.map +1 -0
- package/dist/compaction/manager.d.ts +22 -0
- package/dist/compaction/manager.d.ts.map +1 -0
- package/dist/compaction/manager.js +91 -0
- package/dist/compaction/manager.js.map +1 -0
- package/dist/compaction/serializer.d.ts +3 -0
- package/dist/compaction/serializer.d.ts.map +1 -0
- package/dist/compaction/serializer.js +67 -0
- package/dist/compaction/serializer.js.map +1 -0
- package/dist/compaction/types.d.ts +40 -0
- package/dist/compaction/types.d.ts.map +1 -0
- package/dist/compaction/types.js +2 -0
- package/dist/compaction/types.js.map +1 -0
- package/dist/compaction/verifier.d.ts +6 -0
- package/dist/compaction/verifier.d.ts.map +1 -0
- package/dist/compaction/verifier.js +68 -0
- package/dist/compaction/verifier.js.map +1 -0
- package/dist/config/runtime.d.ts +193 -0
- package/dist/config/runtime.d.ts.map +1 -1
- package/dist/config/runtime.js +29 -0
- package/dist/config/runtime.js.map +1 -1
- package/dist/constants/advisory/index.d.ts +8 -0
- package/dist/constants/advisory/index.d.ts.map +1 -0
- package/dist/constants/advisory/index.js +8 -0
- package/dist/constants/advisory/index.js.map +1 -0
- package/dist/constants/compaction/index.d.ts +17 -0
- package/dist/constants/compaction/index.d.ts.map +1 -0
- package/dist/constants/compaction/index.js +17 -0
- package/dist/constants/compaction/index.js.map +1 -0
- package/dist/constants/index.d.ts +2 -0
- package/dist/constants/index.d.ts.map +1 -1
- package/dist/constants/index.js +2 -0
- package/dist/constants/index.js.map +1 -1
- package/dist/contracts/schemas.d.ts +20 -20
- package/dist/index.d.ts +13 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -1
- package/dist/index.js.map +1 -1
- package/dist/persona/assembler.d.ts +2 -1
- package/dist/persona/assembler.d.ts.map +1 -1
- package/dist/persona/assembler.js +23 -0
- package/dist/persona/assembler.js.map +1 -1
- package/dist/registry/tool/execute.d.ts +3 -0
- package/dist/registry/tool/execute.d.ts.map +1 -1
- package/dist/registry/tool/execute.js +45 -11
- package/dist/registry/tool/execute.js.map +1 -1
- package/dist/router/index.d.ts +2 -0
- package/dist/router/index.d.ts.map +1 -0
- package/dist/router/index.js +2 -0
- package/dist/router/index.js.map +1 -0
- package/dist/router/task-router.d.ts +8 -0
- package/dist/router/task-router.d.ts.map +1 -0
- package/dist/router/task-router.js +19 -0
- package/dist/router/task-router.js.map +1 -0
- package/dist/runtime/query/executor.d.ts +1 -0
- package/dist/runtime/query/executor.d.ts.map +1 -1
- package/dist/runtime/query/executor.js +19 -1
- package/dist/runtime/query/executor.js.map +1 -1
- package/dist/runtime/query/index.d.ts +2 -0
- package/dist/runtime/query/index.d.ts.map +1 -1
- package/dist/runtime/query/index.js.map +1 -1
- package/dist/runtime/query/prompt.d.ts.map +1 -1
- package/dist/runtime/query/prompt.js +4 -0
- package/dist/runtime/query/prompt.js.map +1 -1
- package/dist/tools/advisory/index.d.ts +7 -0
- package/dist/tools/advisory/index.d.ts.map +1 -0
- package/dist/tools/advisory/index.js +125 -0
- package/dist/tools/advisory/index.js.map +1 -0
- package/dist/tools/defineTool.d.ts +1 -0
- package/dist/tools/defineTool.d.ts.map +1 -1
- package/dist/tools/defineTool.js +1 -0
- package/dist/tools/defineTool.js.map +1 -1
- package/dist/types/advisory/config.d.ts +33 -0
- package/dist/types/advisory/config.d.ts.map +1 -0
- package/dist/types/advisory/config.js +2 -0
- package/dist/types/advisory/config.js.map +1 -0
- package/dist/types/advisory/index.d.ts +4 -0
- package/dist/types/advisory/index.d.ts.map +1 -0
- package/dist/types/advisory/index.js +2 -0
- package/dist/types/advisory/index.js.map +1 -0
- package/dist/types/advisory/result.d.ts +35 -0
- package/dist/types/advisory/result.d.ts.map +1 -0
- package/dist/types/advisory/result.js +2 -0
- package/dist/types/advisory/result.js.map +1 -0
- package/dist/types/advisory/trigger.d.ts +44 -0
- package/dist/types/advisory/trigger.d.ts.map +1 -0
- package/dist/types/advisory/trigger.js +2 -0
- package/dist/types/advisory/trigger.js.map +1 -0
- package/dist/types/agent/factory.d.ts +2 -0
- package/dist/types/agent/factory.d.ts.map +1 -1
- package/dist/types/agent/supervisor.d.ts +2 -0
- package/dist/types/agent/supervisor.d.ts.map +1 -1
- package/dist/types/ids/index.d.ts +2 -0
- package/dist/types/ids/index.d.ts.map +1 -1
- package/dist/types/persona/index.d.ts +9 -0
- package/dist/types/persona/index.d.ts.map +1 -1
- package/dist/types/router/index.d.ts +2 -0
- package/dist/types/router/index.d.ts.map +1 -0
- package/dist/types/router/index.js +2 -0
- package/dist/types/router/index.js.map +1 -0
- package/dist/types/router/task-router.d.ts +12 -0
- package/dist/types/router/task-router.d.ts.map +1 -0
- package/dist/types/router/task-router.js +2 -0
- package/dist/types/router/task-router.js.map +1 -0
- package/dist/types/tool/index.d.ts +13 -0
- package/dist/types/tool/index.d.ts.map +1 -1
- package/dist/utils/id.d.ts +3 -1
- package/dist/utils/id.d.ts.map +1 -1
- package/dist/utils/id.js +6 -0
- package/dist/utils/id.js.map +1 -1
- package/dist/utils/shell-compress.d.ts +13 -0
- package/dist/utils/shell-compress.d.ts.map +1 -0
- package/dist/utils/shell-compress.js +97 -0
- package/dist/utils/shell-compress.js.map +1 -0
- package/package.json +5 -1
- package/src/advisory/context.ts +47 -0
- package/src/advisory/evaluator.ts +98 -0
- package/src/advisory/executor.ts +187 -0
- package/src/advisory/index.ts +5 -0
- package/src/advisory/registry.ts +42 -0
- package/src/agents/SupervisorAgent.ts +12 -1
- package/src/compaction/extractor.ts +149 -0
- package/src/compaction/index.ts +21 -0
- package/src/compaction/manager.ts +107 -0
- package/src/compaction/serializer.ts +88 -0
- package/src/compaction/types.ts +37 -0
- package/src/compaction/verifier.ts +91 -0
- package/src/config/runtime.ts +33 -0
- package/src/constants/advisory/index.ts +7 -0
- package/src/constants/compaction/index.ts +20 -0
- package/src/constants/index.ts +2 -0
- package/src/index.ts +50 -2
- package/src/persona/assembler.ts +36 -1
- package/src/registry/tool/execute.ts +51 -11
- package/src/router/index.ts +1 -0
- package/src/router/task-router.ts +24 -0
- package/src/runtime/query/executor.ts +22 -1
- package/src/runtime/query/index.ts +3 -0
- package/src/runtime/query/prompt.ts +5 -0
- package/src/tools/advisory/index.ts +157 -0
- package/src/tools/defineTool.ts +2 -0
- package/src/types/advisory/config.ts +35 -0
- package/src/types/advisory/index.ts +18 -0
- package/src/types/advisory/result.ts +34 -0
- package/src/types/advisory/trigger.ts +39 -0
- package/src/types/agent/factory.ts +3 -0
- package/src/types/agent/supervisor.ts +3 -0
- package/src/types/ids/index.ts +2 -0
- package/src/types/persona/index.ts +11 -0
- package/src/types/router/index.ts +1 -0
- package/src/types/router/task-router.ts +20 -0
- package/src/types/tool/index.ts +15 -0
- package/src/utils/id.ts +10 -0
- package/src/utils/shell-compress.ts +137 -0
package/README.md
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
# Namzu
|
|
2
2
|
|
|
3
|
+
Open-source AI agent framework — multi-model, multi-tenant, MCP + A2A native.
|
|
4
|
+
|
|
3
5
|
[](https://www.npmjs.com/package/@namzu/sdk)
|
|
4
6
|
[](https://github.com/cogitave/namzu/actions/workflows/ci.yml)
|
|
5
7
|
[](./LICENSE.md)
|
|
6
8
|
[](https://www.typescriptlang.org/)
|
|
7
9
|
[](https://nodejs.org/)
|
|
8
10
|
|
|
9
|
-
TypeScript SDK for building AI agents with tool use, multi-model support, orchestration patterns, RAG, MCP integration, and A2A protocol compatibility.
|
|
10
|
-
|
|
11
11
|
> **Our goal is to build an open, community-driven agent framework that reduces systemic dependencies on proprietary platforms — so that everyone can build, own, and run AI agents freely.** Namzu is designed to work with any LLM provider through a bring-your-own-key model, and every version becomes fully open source (MIT) after two years. If this vision resonates with you, we'd love your help — whether it's a bug report, a feature idea, a pull request, or just spreading the word. Every contribution matters.
|
|
12
12
|
|
|
13
13
|
## Why Namzu?
|
|
@@ -28,6 +28,14 @@ There are great agent frameworks out there — LangChain, CrewAI, AutoGen, Verce
|
|
|
28
28
|
|
|
29
29
|
**Progressive tool disclosure.** Agents don't see all tools at once. Tools start as deferred (searchable but not active), get activated on demand, and can be suspended. This keeps the LLM's context focused and reduces hallucinated tool calls.
|
|
30
30
|
|
|
31
|
+
**Advisory System.** A three-layer advisory architecture where agents can consult specialized advisors mid-execution. Unlike Anthropic's Advisor Tool (Claude-only, single advisor), Namzu's system is provider-agnostic (any model advises any model via BYOK), supports multi-advisor with domain routing, configurable triggers, and agent-autonomous consultation. Define a security advisor on Bedrock, an architecture advisor on OpenRouter, and let the agent decide when to consult whom.
|
|
32
|
+
|
|
33
|
+
**Structured compaction.** When context reaches capacity, Namzu doesn't just truncate — it incrementally extracts structured data (task, plan, files, decisions, failures) into a typed WorkingState, serializes it as compact markdown, and replaces old messages. The agent continues with full context awareness at a fraction of the token cost.
|
|
34
|
+
|
|
35
|
+
**Tool tiering.** Configurable tier system that teaches the LLM to prefer cheaper tools first. Unlike hardcoded approaches, Namzu's tiers are fully user-defined — bring your own tier labels, priorities, and guidance templates.
|
|
36
|
+
|
|
37
|
+
**Task routing.** Route sub-tasks to different models based on task type. Compaction and summarization go to cheap models, coding stays on expensive ones. Provider-agnostic, configurable per task type, with automatic fallback chains.
|
|
38
|
+
|
|
31
39
|
| | Namzu | LangChain/LangGraph | CrewAI | OpenAI Agents SDK | Vercel AI SDK |
|
|
32
40
|
|---|---|---|---|---|---|
|
|
33
41
|
| Language | TypeScript | Python/JS | Python | Python/JS | TypeScript |
|
|
@@ -40,6 +48,10 @@ There are great agent frameworks out there — LangChain, CrewAI, AutoGen, Verce
|
|
|
40
48
|
| Plan review (HITL) | Structured | Graph interrupts | No | Basic | Tool approval |
|
|
41
49
|
| Persona inheritance | Yes | No | Role strings | Instructions | System prompt |
|
|
42
50
|
| Progressive tool loading | Yes | No | No | No | No |
|
|
51
|
+
| Advisory system | Multi-advisor, provider-agnostic | No | No | No | No |
|
|
52
|
+
| Context compaction | Structured WorkingState | No | No | No | No |
|
|
53
|
+
| Tool tiering | Configurable, user-defined | No | No | No | No |
|
|
54
|
+
| Task routing | Per-task model selection | No | No | No | No |
|
|
43
55
|
| RAG built-in | Full pipeline | Via integrations | Via integrations | Via tools | No |
|
|
44
56
|
| Telemetry | OpenTelemetry | LangSmith | CrewAI+ | Built-in tracing | No |
|
|
45
57
|
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { AdvisoryBudget, AdvisoryCallRecord } from '../types/advisory/index.js';
|
|
2
|
+
import type { TriggerEvaluator } from './evaluator.js';
|
|
3
|
+
import type { AdvisoryExecutor } from './executor.js';
|
|
4
|
+
import type { AdvisorRegistry } from './registry.js';
|
|
5
|
+
export declare class AdvisoryContext {
|
|
6
|
+
readonly registry: AdvisorRegistry;
|
|
7
|
+
readonly executor: AdvisoryExecutor;
|
|
8
|
+
readonly evaluator: TriggerEvaluator;
|
|
9
|
+
readonly callHistory: AdvisoryCallRecord[];
|
|
10
|
+
private readonly budget;
|
|
11
|
+
constructor(registry: AdvisorRegistry, executor: AdvisoryExecutor, evaluator: TriggerEvaluator, budget?: AdvisoryBudget);
|
|
12
|
+
recordCall(record: AdvisoryCallRecord): void;
|
|
13
|
+
getBudgetStatus(): {
|
|
14
|
+
remaining: number | undefined;
|
|
15
|
+
total: number | undefined;
|
|
16
|
+
used: number;
|
|
17
|
+
};
|
|
18
|
+
checkBudget(): {
|
|
19
|
+
allowed: boolean;
|
|
20
|
+
reason?: string;
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/advisory/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AACpF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAEpD,qBAAa,eAAe;IAC3B,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAA;IAClC,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAA;IACnC,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAA;IACpC,QAAQ,CAAC,WAAW,EAAE,kBAAkB,EAAE,CAAK;IAE/C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4B;gBAGlD,QAAQ,EAAE,eAAe,EACzB,QAAQ,EAAE,gBAAgB,EAC1B,SAAS,EAAE,gBAAgB,EAC3B,MAAM,CAAC,EAAE,cAAc;IAQxB,UAAU,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI;IAI5C,eAAe,IAAI;QAAE,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE;IAO7F,WAAW,IAAI;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE;CAUpD"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export class AdvisoryContext {
|
|
2
|
+
registry;
|
|
3
|
+
executor;
|
|
4
|
+
evaluator;
|
|
5
|
+
callHistory = [];
|
|
6
|
+
budget;
|
|
7
|
+
constructor(registry, executor, evaluator, budget) {
|
|
8
|
+
this.registry = registry;
|
|
9
|
+
this.executor = executor;
|
|
10
|
+
this.evaluator = evaluator;
|
|
11
|
+
this.budget = budget;
|
|
12
|
+
}
|
|
13
|
+
recordCall(record) {
|
|
14
|
+
this.callHistory.push(record);
|
|
15
|
+
}
|
|
16
|
+
getBudgetStatus() {
|
|
17
|
+
const used = this.callHistory.length;
|
|
18
|
+
const total = this.budget?.maxCallsPerRun;
|
|
19
|
+
const remaining = total !== undefined ? total - used : undefined;
|
|
20
|
+
return { remaining, total, used };
|
|
21
|
+
}
|
|
22
|
+
checkBudget() {
|
|
23
|
+
const { remaining, total } = this.getBudgetStatus();
|
|
24
|
+
if (remaining !== undefined && remaining <= 0) {
|
|
25
|
+
return {
|
|
26
|
+
allowed: false,
|
|
27
|
+
reason: `Advisory budget exhausted: ${total} calls used of ${total} allowed per run`,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
return { allowed: true };
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/advisory/context.ts"],"names":[],"mappings":"AAKA,MAAM,OAAO,eAAe;IAClB,QAAQ,CAAiB;IACzB,QAAQ,CAAkB;IAC1B,SAAS,CAAkB;IAC3B,WAAW,GAAyB,EAAE,CAAA;IAE9B,MAAM,CAA4B;IAEnD,YACC,QAAyB,EACzB,QAA0B,EAC1B,SAA2B,EAC3B,MAAuB;QAEvB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACxB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACxB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAC1B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACrB,CAAC;IAED,UAAU,CAAC,MAA0B;QACpC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAC9B,CAAC;IAED,eAAe;QACd,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAA;QACpC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,cAAc,CAAA;QACzC,MAAM,SAAS,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,CAAA;QAChE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,CAAA;IAClC,CAAC;IAED,WAAW;QACV,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,eAAe,EAAE,CAAA;QACnD,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,IAAI,CAAC,EAAE,CAAC;YAC/C,OAAO;gBACN,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,8BAA8B,KAAK,kBAAkB,KAAK,kBAAkB;aACpF,CAAA;QACF,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;IACzB,CAAC;CACD"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { AdvisoryBudget, AdvisoryTrigger, TriggerEvaluationState } from '../types/advisory/index.js';
|
|
2
|
+
export declare class TriggerEvaluator {
|
|
3
|
+
private readonly triggers;
|
|
4
|
+
private readonly budget;
|
|
5
|
+
private readonly lastFiredMap;
|
|
6
|
+
private callCount;
|
|
7
|
+
constructor(triggers: AdvisoryTrigger[], budget?: AdvisoryBudget);
|
|
8
|
+
evaluate(state: TriggerEvaluationState): AdvisoryTrigger[];
|
|
9
|
+
recordFiring(triggerId: string, iteration: number): void;
|
|
10
|
+
private isBudgetExhausted;
|
|
11
|
+
private isCooldownSatisfied;
|
|
12
|
+
private matchesCondition;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=evaluator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evaluator.d.ts","sourceRoot":"","sources":["../../src/advisory/evaluator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,cAAc,EACd,eAAe,EAEf,sBAAsB,EACtB,MAAM,4BAA4B,CAAA;AAMnC,qBAAa,gBAAgB;IAC5B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmB;IAC5C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4B;IACnD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAiC;IAC9D,OAAO,CAAC,SAAS,CAAI;gBAET,QAAQ,EAAE,eAAe,EAAE,EAAE,MAAM,CAAC,EAAE,cAAc;IAOhE,QAAQ,CAAC,KAAK,EAAE,sBAAsB,GAAG,eAAe,EAAE;IAiB1D,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAKxD,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,mBAAmB;IAW3B,OAAO,CAAC,gBAAgB;CAiCxB"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
function assertNever(value) {
|
|
2
|
+
throw new Error(`Unhandled trigger condition type: ${value.type}`);
|
|
3
|
+
}
|
|
4
|
+
export class TriggerEvaluator {
|
|
5
|
+
triggers;
|
|
6
|
+
budget;
|
|
7
|
+
lastFiredMap = new Map();
|
|
8
|
+
callCount = 0;
|
|
9
|
+
constructor(triggers, budget) {
|
|
10
|
+
this.triggers = triggers
|
|
11
|
+
.filter((t) => t.enabled !== false)
|
|
12
|
+
.sort((a, b) => (b.priority ?? 0) - (a.priority ?? 0));
|
|
13
|
+
this.budget = budget;
|
|
14
|
+
}
|
|
15
|
+
evaluate(state) {
|
|
16
|
+
if (this.isBudgetExhausted()) {
|
|
17
|
+
return [];
|
|
18
|
+
}
|
|
19
|
+
const fired = [];
|
|
20
|
+
for (const trigger of this.triggers) {
|
|
21
|
+
if (!this.isCooldownSatisfied(trigger, state.iteration)) {
|
|
22
|
+
continue;
|
|
23
|
+
}
|
|
24
|
+
if (this.matchesCondition(trigger.condition, state)) {
|
|
25
|
+
fired.push(trigger);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return fired;
|
|
29
|
+
}
|
|
30
|
+
recordFiring(triggerId, iteration) {
|
|
31
|
+
this.lastFiredMap.set(triggerId, iteration);
|
|
32
|
+
this.callCount++;
|
|
33
|
+
}
|
|
34
|
+
isBudgetExhausted() {
|
|
35
|
+
if (this.budget?.maxCallsPerRun === undefined) {
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
return this.callCount >= this.budget.maxCallsPerRun;
|
|
39
|
+
}
|
|
40
|
+
isCooldownSatisfied(trigger, currentIteration) {
|
|
41
|
+
if (trigger.cooldownIterations === undefined) {
|
|
42
|
+
return true;
|
|
43
|
+
}
|
|
44
|
+
const lastFired = this.lastFiredMap.get(trigger.id);
|
|
45
|
+
if (lastFired === undefined) {
|
|
46
|
+
return true;
|
|
47
|
+
}
|
|
48
|
+
return currentIteration - lastFired >= trigger.cooldownIterations;
|
|
49
|
+
}
|
|
50
|
+
matchesCondition(condition, state) {
|
|
51
|
+
switch (condition.type) {
|
|
52
|
+
case 'on_error': {
|
|
53
|
+
if (state.lastError === undefined)
|
|
54
|
+
return false;
|
|
55
|
+
if (condition.categories && condition.categories.length > 0) {
|
|
56
|
+
return condition.categories.some((cat) => state.lastError?.includes(cat));
|
|
57
|
+
}
|
|
58
|
+
return true;
|
|
59
|
+
}
|
|
60
|
+
case 'on_iteration': {
|
|
61
|
+
return state.iteration % condition.everyN === 0;
|
|
62
|
+
}
|
|
63
|
+
case 'on_context_percent': {
|
|
64
|
+
return state.contextWindowPercent >= condition.threshold;
|
|
65
|
+
}
|
|
66
|
+
case 'on_tool_category': {
|
|
67
|
+
if (state.lastToolCategory === undefined)
|
|
68
|
+
return false;
|
|
69
|
+
return condition.categories.includes(state.lastToolCategory);
|
|
70
|
+
}
|
|
71
|
+
case 'on_cost_percent': {
|
|
72
|
+
if (state.costBudgetPercent === undefined)
|
|
73
|
+
return false;
|
|
74
|
+
return state.costBudgetPercent >= condition.threshold;
|
|
75
|
+
}
|
|
76
|
+
case 'on_complexity': {
|
|
77
|
+
return state.totalToolCalls >= condition.toolCallThreshold;
|
|
78
|
+
}
|
|
79
|
+
case 'custom': {
|
|
80
|
+
return condition.predicate(state);
|
|
81
|
+
}
|
|
82
|
+
default:
|
|
83
|
+
return assertNever(condition);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=evaluator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evaluator.js","sourceRoot":"","sources":["../../src/advisory/evaluator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { AdvisorDefinition } from '../types/advisory/config.js';
|
|
2
|
+
import type { AdvisoryRequest, AdvisoryResult } from '../types/advisory/result.js';
|
|
3
|
+
import type { CostInfo, TokenUsage } from '../types/common/index.js';
|
|
4
|
+
import type { Message } from '../types/message/index.js';
|
|
5
|
+
import type { LLMToolSchema } from '../types/tool/index.js';
|
|
6
|
+
import type { Logger } from '../utils/logger.js';
|
|
7
|
+
export interface AdvisoryCallContext {
|
|
8
|
+
readonly messages: Message[];
|
|
9
|
+
readonly workingStateSummary?: string;
|
|
10
|
+
readonly toolCatalog?: LLMToolSchema[];
|
|
11
|
+
readonly iteration: number;
|
|
12
|
+
}
|
|
13
|
+
export interface AdvisoryExecutionResult {
|
|
14
|
+
readonly result: AdvisoryResult;
|
|
15
|
+
readonly usage: TokenUsage;
|
|
16
|
+
readonly cost: CostInfo;
|
|
17
|
+
readonly durationMs: number;
|
|
18
|
+
}
|
|
19
|
+
export declare class AdvisoryExecutor {
|
|
20
|
+
private readonly logger;
|
|
21
|
+
constructor(logger?: Logger);
|
|
22
|
+
consult(advisor: AdvisorDefinition, request: AdvisoryRequest, callCtx: AdvisoryCallContext): Promise<AdvisoryExecutionResult>;
|
|
23
|
+
private buildSystemPrompt;
|
|
24
|
+
private buildContext;
|
|
25
|
+
private truncateMessages;
|
|
26
|
+
/**
|
|
27
|
+
* Parses the raw LLM response into an AdvisoryResult.
|
|
28
|
+
*
|
|
29
|
+
* Phase 1: text-only extraction. Structured parsing comes later.
|
|
30
|
+
*/
|
|
31
|
+
private parseResult;
|
|
32
|
+
/**
|
|
33
|
+
* Computes cost from token usage.
|
|
34
|
+
*
|
|
35
|
+
* Returns zero-value cost since pricing is provider-specific.
|
|
36
|
+
* Callers with pricing data can recompute via calculateCost().
|
|
37
|
+
*/
|
|
38
|
+
private computeCost;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=executor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../src/advisory/executor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAA;AACpE,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAClF,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AACpE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAA;AAExD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAC3D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAGhD,MAAM,WAAW,mBAAmB;IACnC,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAA;IAC5B,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAA;IACrC,QAAQ,CAAC,WAAW,CAAC,EAAE,aAAa,EAAE,CAAA;IACtC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAC1B;AAED,MAAM,WAAW,uBAAuB;IACvC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAA;IAC/B,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAA;IAC1B,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;IACvB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;CAC3B;AAED,qBAAa,gBAAgB;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;gBAEnB,MAAM,CAAC,EAAE,MAAM;IAIrB,OAAO,CACZ,OAAO,EAAE,iBAAiB,EAC1B,OAAO,EAAE,eAAe,EACxB,OAAO,EAAE,mBAAmB,GAC1B,OAAO,CAAC,uBAAuB,CAAC;IAgDnC,OAAO,CAAC,iBAAiB;IAoBzB,OAAO,CAAC,YAAY;IAoCpB,OAAO,CAAC,gBAAgB;IAsBxB;;;;OAIG;IACH,OAAO,CAAC,WAAW;IAMnB;;;;;OAKG;IACH,OAAO,CAAC,WAAW;CAQnB"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import { assembleSystemPrompt } from '../persona/assembler.js';
|
|
2
|
+
import { createSystemMessage, createUserMessage } from '../types/message/index.js';
|
|
3
|
+
import { getRootLogger } from '../utils/logger.js';
|
|
4
|
+
export class AdvisoryExecutor {
|
|
5
|
+
logger;
|
|
6
|
+
constructor(logger) {
|
|
7
|
+
this.logger = (logger ?? getRootLogger()).child({ component: 'AdvisoryExecutor' });
|
|
8
|
+
}
|
|
9
|
+
async consult(advisor, request, callCtx) {
|
|
10
|
+
const startMs = Date.now();
|
|
11
|
+
const systemPrompt = this.buildSystemPrompt(advisor);
|
|
12
|
+
const contextMessages = this.buildContext(advisor, request, callCtx);
|
|
13
|
+
const messages = [
|
|
14
|
+
createSystemMessage(systemPrompt),
|
|
15
|
+
...contextMessages,
|
|
16
|
+
createUserMessage(request.question),
|
|
17
|
+
];
|
|
18
|
+
this.logger.debug('advisory call starting', {
|
|
19
|
+
advisorId: advisor.id,
|
|
20
|
+
model: advisor.model,
|
|
21
|
+
messageCount: messages.length,
|
|
22
|
+
urgency: request.urgency,
|
|
23
|
+
});
|
|
24
|
+
const response = await advisor.provider.chat({
|
|
25
|
+
model: advisor.model,
|
|
26
|
+
messages,
|
|
27
|
+
temperature: advisor.temperature,
|
|
28
|
+
maxTokens: advisor.maxResponseTokens,
|
|
29
|
+
toolChoice: 'none',
|
|
30
|
+
});
|
|
31
|
+
const durationMs = Date.now() - startMs;
|
|
32
|
+
const result = this.parseResult(response.message.content ?? '');
|
|
33
|
+
const cost = this.computeCost(response.usage);
|
|
34
|
+
this.logger.info('advisory call completed', {
|
|
35
|
+
advisorId: advisor.id,
|
|
36
|
+
model: advisor.model,
|
|
37
|
+
durationMs,
|
|
38
|
+
totalTokens: response.usage.totalTokens,
|
|
39
|
+
});
|
|
40
|
+
return {
|
|
41
|
+
result,
|
|
42
|
+
usage: response.usage,
|
|
43
|
+
cost,
|
|
44
|
+
durationMs,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
buildSystemPrompt(advisor) {
|
|
48
|
+
if (advisor.systemPrompt) {
|
|
49
|
+
return advisor.systemPrompt;
|
|
50
|
+
}
|
|
51
|
+
if (advisor.persona) {
|
|
52
|
+
return assembleSystemPrompt(advisor.persona);
|
|
53
|
+
}
|
|
54
|
+
return [
|
|
55
|
+
`You are ${advisor.name}, an advisory agent.`,
|
|
56
|
+
advisor.domains && advisor.domains.length > 0
|
|
57
|
+
? `Your domains of expertise: ${advisor.domains.join(', ')}.`
|
|
58
|
+
: undefined,
|
|
59
|
+
'Provide concise, actionable advice. Focus on what the agent should do next.',
|
|
60
|
+
]
|
|
61
|
+
.filter(Boolean)
|
|
62
|
+
.join('\n\n');
|
|
63
|
+
}
|
|
64
|
+
buildContext(advisor, request, callCtx) {
|
|
65
|
+
if (request.includeContext === false) {
|
|
66
|
+
return [];
|
|
67
|
+
}
|
|
68
|
+
const contextParts = [];
|
|
69
|
+
if (callCtx.workingStateSummary) {
|
|
70
|
+
contextParts.push(`## Working State\n${callCtx.workingStateSummary}`);
|
|
71
|
+
}
|
|
72
|
+
if (callCtx.toolCatalog && callCtx.toolCatalog.length > 0) {
|
|
73
|
+
const toolNames = callCtx.toolCatalog.map((t) => t.function.name);
|
|
74
|
+
contextParts.push(`## Available Tools\n${toolNames.join(', ')}`);
|
|
75
|
+
}
|
|
76
|
+
const messagesToInclude = this.truncateMessages(callCtx.messages, advisor.maxContextTokens);
|
|
77
|
+
if (messagesToInclude.length > 0) {
|
|
78
|
+
const conversationSummary = messagesToInclude
|
|
79
|
+
.map((m) => `[${m.role}]: ${m.content ?? '(tool calls)'}`)
|
|
80
|
+
.join('\n');
|
|
81
|
+
contextParts.push(`## Conversation Context\n${conversationSummary}`);
|
|
82
|
+
}
|
|
83
|
+
if (contextParts.length === 0) {
|
|
84
|
+
return [];
|
|
85
|
+
}
|
|
86
|
+
return [createUserMessage(contextParts.join('\n\n'))];
|
|
87
|
+
}
|
|
88
|
+
truncateMessages(messages, maxTokens) {
|
|
89
|
+
if (!maxTokens) {
|
|
90
|
+
return messages;
|
|
91
|
+
}
|
|
92
|
+
// Rough heuristic: 1 token ~= 4 characters
|
|
93
|
+
const charBudget = maxTokens * 4;
|
|
94
|
+
let totalChars = 0;
|
|
95
|
+
const result = [];
|
|
96
|
+
// Walk from most recent to oldest, accumulate until budget exhausted
|
|
97
|
+
for (let i = messages.length - 1; i >= 0; i--) {
|
|
98
|
+
const msg = messages[i];
|
|
99
|
+
const msgChars = (msg.content ?? '').length;
|
|
100
|
+
if (totalChars + msgChars > charBudget)
|
|
101
|
+
break;
|
|
102
|
+
totalChars += msgChars;
|
|
103
|
+
result.unshift(msg);
|
|
104
|
+
}
|
|
105
|
+
return result;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Parses the raw LLM response into an AdvisoryResult.
|
|
109
|
+
*
|
|
110
|
+
* Phase 1: text-only extraction. Structured parsing comes later.
|
|
111
|
+
*/
|
|
112
|
+
parseResult(rawContent) {
|
|
113
|
+
return {
|
|
114
|
+
advice: rawContent,
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Computes cost from token usage.
|
|
119
|
+
*
|
|
120
|
+
* Returns zero-value cost since pricing is provider-specific.
|
|
121
|
+
* Callers with pricing data can recompute via calculateCost().
|
|
122
|
+
*/
|
|
123
|
+
computeCost(_usage) {
|
|
124
|
+
return {
|
|
125
|
+
inputCostPer1M: 0,
|
|
126
|
+
outputCostPer1M: 0,
|
|
127
|
+
totalCost: 0,
|
|
128
|
+
cacheDiscount: 0,
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
//# sourceMappingURL=executor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../src/advisory/executor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAK9D,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAGlF,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAgBlD,MAAM,OAAO,gBAAgB;IACX,MAAM,CAAQ;IAE/B,YAAY,MAAe;QAC1B,IAAI,CAAC,MAAM,GAAG,CAAC,MAAM,IAAI,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC,CAAA;IACnF,CAAC;IAED,KAAK,CAAC,OAAO,CACZ,OAA0B,EAC1B,OAAwB,EACxB,OAA4B;QAE5B,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QAE1B,MAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAA;QACpD,MAAM,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;QAEpE,MAAM,QAAQ,GAAc;YAC3B,mBAAmB,CAAC,YAAY,CAAC;YACjC,GAAG,eAAe;YAClB,iBAAiB,CAAC,OAAO,CAAC,QAAQ,CAAC;SACnC,CAAA;QAED,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,EAAE;YAC3C,SAAS,EAAE,OAAO,CAAC,EAAE;YACrB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,YAAY,EAAE,QAAQ,CAAC,MAAM;YAC7B,OAAO,EAAE,OAAO,CAAC,OAAO;SACxB,CAAC,CAAA;QAEF,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;YAC5C,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,QAAQ;YACR,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,SAAS,EAAE,OAAO,CAAC,iBAAiB;YACpC,UAAU,EAAE,MAAM;SAClB,CAAC,CAAA;QAEF,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAA;QAEvC,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,CAAA;QAE/D,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;QAE7C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,yBAAyB,EAAE;YAC3C,SAAS,EAAE,OAAO,CAAC,EAAE;YACrB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,UAAU;YACV,WAAW,EAAE,QAAQ,CAAC,KAAK,CAAC,WAAW;SACvC,CAAC,CAAA;QAEF,OAAO;YACN,MAAM;YACN,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,IAAI;YACJ,UAAU;SACV,CAAA;IACF,CAAC;IAEO,iBAAiB,CAAC,OAA0B;QACnD,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;YAC1B,OAAO,OAAO,CAAC,YAAY,CAAA;QAC5B,CAAC;QAED,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACrB,OAAO,oBAAoB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QAC7C,CAAC;QAED,OAAO;YACN,WAAW,OAAO,CAAC,IAAI,sBAAsB;YAC7C,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;gBAC5C,CAAC,CAAC,8BAA8B,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;gBAC7D,CAAC,CAAC,SAAS;YACZ,6EAA6E;SAC7E;aACC,MAAM,CAAC,OAAO,CAAC;aACf,IAAI,CAAC,MAAM,CAAC,CAAA;IACf,CAAC;IAEO,YAAY,CACnB,OAA0B,EAC1B,OAAwB,EACxB,OAA4B;QAE5B,IAAI,OAAO,CAAC,cAAc,KAAK,KAAK,EAAE,CAAC;YACtC,OAAO,EAAE,CAAA;QACV,CAAC;QAED,MAAM,YAAY,GAAa,EAAE,CAAA;QAEjC,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC;YACjC,YAAY,CAAC,IAAI,CAAC,qBAAqB,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAA;QACtE,CAAC;QAED,IAAI,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3D,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;YACjE,YAAY,CAAC,IAAI,CAAC,uBAAuB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACjE,CAAC;QAED,MAAM,iBAAiB,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAA;QAE3F,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClC,MAAM,mBAAmB,GAAG,iBAAiB;iBAC3C,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,OAAO,IAAI,cAAc,EAAE,CAAC;iBACzD,IAAI,CAAC,IAAI,CAAC,CAAA;YACZ,YAAY,CAAC,IAAI,CAAC,4BAA4B,mBAAmB,EAAE,CAAC,CAAA;QACrE,CAAC;QAED,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,OAAO,EAAE,CAAA;QACV,CAAC;QAED,OAAO,CAAC,iBAAiB,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IACtD,CAAC;IAEO,gBAAgB,CAAC,QAAmB,EAAE,SAA6B;QAC1E,IAAI,CAAC,SAAS,EAAE,CAAC;YAChB,OAAO,QAAQ,CAAA;QAChB,CAAC;QAED,2CAA2C;QAC3C,MAAM,UAAU,GAAG,SAAS,GAAG,CAAC,CAAA;QAChC,IAAI,UAAU,GAAG,CAAC,CAAA;QAClB,MAAM,MAAM,GAAc,EAAE,CAAA;QAE5B,qEAAqE;QACrE,KAAK,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/C,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAY,CAAA;YAClC,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,MAAM,CAAA;YAC3C,IAAI,UAAU,GAAG,QAAQ,GAAG,UAAU;gBAAE,MAAK;YAC7C,UAAU,IAAI,QAAQ,CAAA;YACtB,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QACpB,CAAC;QAED,OAAO,MAAM,CAAA;IACd,CAAC;IAED;;;;OAIG;IACK,WAAW,CAAC,UAAkB;QACrC,OAAO;YACN,MAAM,EAAE,UAAU;SAClB,CAAA;IACF,CAAC;IAED;;;;;OAKG;IACK,WAAW,CAAC,MAAkB;QACrC,OAAO;YACN,cAAc,EAAE,CAAC;YACjB,eAAe,EAAE,CAAC;YAClB,SAAS,EAAE,CAAC;YACZ,aAAa,EAAE,CAAC;SAChB,CAAA;IACF,CAAC;CACD"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { AdvisorRegistry } from './registry.js';
|
|
2
|
+
export { AdvisoryExecutor } from './executor.js';
|
|
3
|
+
export type { AdvisoryCallContext, AdvisoryExecutionResult } from './executor.js';
|
|
4
|
+
export { TriggerEvaluator } from './evaluator.js';
|
|
5
|
+
export { AdvisoryContext } from './context.js';
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/advisory/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAChD,YAAY,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAA;AACjF,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/advisory/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAEhD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Registry } from '../registry/Registry.js';
|
|
2
|
+
import type { AdvisorDefinition } from '../types/advisory/index.js';
|
|
3
|
+
export declare class AdvisorRegistry extends Registry<AdvisorDefinition> {
|
|
4
|
+
private readonly defaultId;
|
|
5
|
+
constructor(advisors: AdvisorDefinition[], defaultId?: string);
|
|
6
|
+
/**
|
|
7
|
+
* Resolves the advisor for a given request.
|
|
8
|
+
*
|
|
9
|
+
* Priority: explicit ID > domain match > default > first registered.
|
|
10
|
+
*/
|
|
11
|
+
resolve(advisorId?: string, domain?: string): AdvisorDefinition | undefined;
|
|
12
|
+
listAll(): AdvisorDefinition[];
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/advisory/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AAClD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AAEnE,qBAAa,eAAgB,SAAQ,QAAQ,CAAC,iBAAiB,CAAC;IAC/D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAoB;gBAElC,QAAQ,EAAE,iBAAiB,EAAE,EAAE,SAAS,CAAC,EAAE,MAAM;IAQ7D;;;;OAIG;IACH,OAAO,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAmB3E,OAAO,IAAI,iBAAiB,EAAE;CAG9B"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { Registry } from '../registry/Registry.js';
|
|
2
|
+
export class AdvisorRegistry extends Registry {
|
|
3
|
+
defaultId;
|
|
4
|
+
constructor(advisors, defaultId) {
|
|
5
|
+
super();
|
|
6
|
+
for (const advisor of advisors) {
|
|
7
|
+
this.register(advisor.id, advisor);
|
|
8
|
+
}
|
|
9
|
+
this.defaultId = defaultId;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Resolves the advisor for a given request.
|
|
13
|
+
*
|
|
14
|
+
* Priority: explicit ID > domain match > default > first registered.
|
|
15
|
+
*/
|
|
16
|
+
resolve(advisorId, domain) {
|
|
17
|
+
if (advisorId) {
|
|
18
|
+
return this.get(advisorId);
|
|
19
|
+
}
|
|
20
|
+
if (domain) {
|
|
21
|
+
const all = this.getAll();
|
|
22
|
+
const match = all.find((a) => a.domains?.some((d) => d === domain));
|
|
23
|
+
if (match)
|
|
24
|
+
return match;
|
|
25
|
+
}
|
|
26
|
+
if (this.defaultId) {
|
|
27
|
+
return this.get(this.defaultId);
|
|
28
|
+
}
|
|
29
|
+
const all = this.getAll();
|
|
30
|
+
return all.length > 0 ? all[0] : undefined;
|
|
31
|
+
}
|
|
32
|
+
listAll() {
|
|
33
|
+
return this.getAll();
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/advisory/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AAGlD,MAAM,OAAO,eAAgB,SAAQ,QAA2B;IAC9C,SAAS,CAAoB;IAE9C,YAAY,QAA6B,EAAE,SAAkB;QAC5D,KAAK,EAAE,CAAA;QACP,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAChC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,CAAA;QACnC,CAAC;QACD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;IAC3B,CAAC;IAED;;;;OAIG;IACH,OAAO,CAAC,SAAkB,EAAE,MAAe;QAC1C,IAAI,SAAS,EAAE,CAAC;YACf,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;QAC3B,CAAC;QAED,IAAI,MAAM,EAAE,CAAC;YACZ,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAA;YACzB,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAA;YACnE,IAAI,KAAK;gBAAE,OAAO,KAAK,CAAA;QACxB,CAAC;QAED,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QAChC,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAA;QACzB,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAC3C,CAAC;IAED,OAAO;QACN,OAAO,IAAI,CAAC,MAAM,EAAE,CAAA;IACrB,CAAC;CACD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SupervisorAgent.d.ts","sourceRoot":"","sources":["../../src/agents/SupervisorAgent.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACX,UAAU,EACV,aAAa,EACb,qBAAqB,EACrB,qBAAqB,EACrB,MAAM,yBAAyB,CAAA;AAIhC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAE7D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAElD,qBAAa,eAAgB,SAAQ,aAAa,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;IAC/F,QAAQ,CAAC,IAAI,EAAG,YAAY,CAAS;gBAEzB,QAAQ,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,GAAG,cAAc,CAAC;IAa5D,GAAG,CACR,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,qBAAqB,EAC7B,QAAQ,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"SupervisorAgent.d.ts","sourceRoot":"","sources":["../../src/agents/SupervisorAgent.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACX,UAAU,EACV,aAAa,EACb,qBAAqB,EACrB,qBAAqB,EACrB,MAAM,yBAAyB,CAAA;AAIhC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAE7D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAElD,qBAAa,eAAgB,SAAQ,aAAa,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;IAC/F,QAAQ,CAAC,IAAI,EAAG,YAAY,CAAS;gBAEzB,QAAQ,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,GAAG,cAAc,CAAC;IAa5D,GAAG,CACR,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,qBAAqB,EAC7B,QAAQ,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,qBAAqB,CAAC;CAgIjC"}
|
|
@@ -30,6 +30,16 @@ export class SupervisorAgent extends AbstractAgent {
|
|
|
30
30
|
gateway = config.gateway;
|
|
31
31
|
}
|
|
32
32
|
else if (config.agentManager) {
|
|
33
|
+
const mergedFactoryOptions = config.factoryOptions
|
|
34
|
+
? {
|
|
35
|
+
...config.factoryOptions,
|
|
36
|
+
taskRouter: config.taskRouter ?? config.factoryOptions.taskRouter,
|
|
37
|
+
}
|
|
38
|
+
: config.taskRouter
|
|
39
|
+
? {
|
|
40
|
+
taskRouter: config.taskRouter,
|
|
41
|
+
}
|
|
42
|
+
: undefined;
|
|
33
43
|
const taskContext = {
|
|
34
44
|
parentRunId: runId,
|
|
35
45
|
parentAgentId: this.metadata.id,
|
|
@@ -39,7 +49,7 @@ export class SupervisorAgent extends AbstractAgent {
|
|
|
39
49
|
total: config.tokenBudget,
|
|
40
50
|
remaining: config.tokenBudget,
|
|
41
51
|
},
|
|
42
|
-
factoryOptions:
|
|
52
|
+
factoryOptions: mergedFactoryOptions,
|
|
43
53
|
threadId: config.threadId,
|
|
44
54
|
};
|
|
45
55
|
gateway = new LocalTaskGateway(config.agentManager, taskContext, listener, input);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SupervisorAgent.js","sourceRoot":"","sources":["../../src/agents/SupervisorAgent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AAEtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAA;AASrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAG5D,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAElD,MAAM,OAAO,eAAgB,SAAQ,aAA2D;IACtF,IAAI,GAAG,YAAqB,CAAA;IAErC,YAAY,QAAsD;QACjE,KAAK,CAAC;YACL,GAAG,QAAQ;YACX,IAAI,EAAE,YAAY;YAClB,YAAY,EAAE;gBACb,aAAa,EAAE,IAAI;gBACnB,iBAAiB,EAAE,IAAI;gBACvB,mBAAmB,EAAE,IAAI;gBACzB,iBAAiB,EAAE,IAAI;aACvB;SACD,CAAC,CAAA;IACH,CAAC;IAED,KAAK,CAAC,GAAG,CACR,KAAiB,EACjB,MAA6B,EAC7B,QAA2B;QAE3B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;QAEhC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAA;QAC/D,CAAC;QAED,IAAI,OAAoB,CAAA;QACxB,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,GAAG,MAAM,CAAC,OAAO,CAAA;QACzB,CAAC;aAAM,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;YAChC,MAAM,WAAW,GAAqB;gBACrC,WAAW,EAAE,KAAK;gBAClB,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE;gBAC/B,qBAAqB,EAAE,IAAI,CAAC,eAAe;gBAC3C,KAAK,EAAE,CAAC;gBACR,aAAa,EAAE;oBACd,KAAK,EAAE,MAAM,CAAC,WAAW;oBACzB,SAAS,EAAE,MAAM,CAAC,WAAW;iBAC7B;gBACD,cAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"SupervisorAgent.js","sourceRoot":"","sources":["../../src/agents/SupervisorAgent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { CompactionConfig } from '../config/runtime.js';
|
|
2
|
+
import type { WorkingStateManager } from './manager.js';
|
|
3
|
+
export declare function extractFromToolCall(manager: WorkingStateManager, toolName: string, args: string): void;
|
|
4
|
+
export declare function extractFromToolResult(manager: WorkingStateManager, toolName: string, result: string, isError: boolean): void;
|
|
5
|
+
export declare function extractFromUserMessage(manager: WorkingStateManager, content: string, isFirst: boolean): void;
|
|
6
|
+
export declare function extractFromAssistantMessage(manager: WorkingStateManager, content: string, config: CompactionConfig): void;
|
|
7
|
+
//# sourceMappingURL=extractor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extractor.d.ts","sourceRoot":"","sources":["../../src/compaction/extractor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAE5D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAsCvD,wBAAgB,mBAAmB,CAClC,OAAO,EAAE,mBAAmB,EAC5B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,GACV,IAAI,CA4BN;AAED,wBAAgB,qBAAqB,CACpC,OAAO,EAAE,mBAAmB,EAC5B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,GACd,IAAI,CAuCN;AAED,wBAAgB,sBAAsB,CACrC,OAAO,EAAE,mBAAmB,EAC5B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,OAAO,GACd,IAAI,CAQN;AAED,wBAAgB,2BAA2B,CAC1C,OAAO,EAAE,mBAAmB,EAC5B,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,gBAAgB,GACtB,IAAI,CAUN"}
|