mozart-router 0.1.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/LICENSE +21 -0
- package/README.md +250 -0
- package/dist/adapters/cursor.d.ts +10 -0
- package/dist/adapters/cursor.d.ts.map +1 -0
- package/dist/adapters/cursor.js +39 -0
- package/dist/adapters/cursor.js.map +1 -0
- package/dist/adapters/generic.d.ts +24 -0
- package/dist/adapters/generic.d.ts.map +1 -0
- package/dist/adapters/generic.js +192 -0
- package/dist/adapters/generic.js.map +1 -0
- package/dist/adapters/hermes.d.ts +10 -0
- package/dist/adapters/hermes.d.ts.map +1 -0
- package/dist/adapters/hermes.js +170 -0
- package/dist/adapters/hermes.js.map +1 -0
- package/dist/adapters/index.d.ts +13 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js +27 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/adapters/litellm.d.ts +15 -0
- package/dist/adapters/litellm.d.ts.map +1 -0
- package/dist/adapters/litellm.js +238 -0
- package/dist/adapters/litellm.js.map +1 -0
- package/dist/adapters/lmstudio.d.ts +12 -0
- package/dist/adapters/lmstudio.d.ts.map +1 -0
- package/dist/adapters/lmstudio.js +128 -0
- package/dist/adapters/lmstudio.js.map +1 -0
- package/dist/adapters/nim.d.ts +12 -0
- package/dist/adapters/nim.d.ts.map +1 -0
- package/dist/adapters/nim.js +163 -0
- package/dist/adapters/nim.js.map +1 -0
- package/dist/adapters/ollama.d.ts +12 -0
- package/dist/adapters/ollama.d.ts.map +1 -0
- package/dist/adapters/ollama.js +243 -0
- package/dist/adapters/ollama.js.map +1 -0
- package/dist/adapters/openclaw.d.ts +10 -0
- package/dist/adapters/openclaw.d.ts.map +1 -0
- package/dist/adapters/openclaw.js +197 -0
- package/dist/adapters/openclaw.js.map +1 -0
- package/dist/adapters/opencode.d.ts +10 -0
- package/dist/adapters/opencode.d.ts.map +1 -0
- package/dist/adapters/opencode.js +180 -0
- package/dist/adapters/opencode.js.map +1 -0
- package/dist/adapters/openrouter.d.ts +13 -0
- package/dist/adapters/openrouter.d.ts.map +1 -0
- package/dist/adapters/openrouter.js +173 -0
- package/dist/adapters/openrouter.js.map +1 -0
- package/dist/adapters/vllm.d.ts +12 -0
- package/dist/adapters/vllm.d.ts.map +1 -0
- package/dist/adapters/vllm.js +129 -0
- package/dist/adapters/vllm.js.map +1 -0
- package/dist/api/dashboard.d.ts +3 -0
- package/dist/api/dashboard.d.ts.map +1 -0
- package/dist/api/dashboard.js +98 -0
- package/dist/api/dashboard.js.map +1 -0
- package/dist/api/mcp.d.ts +32 -0
- package/dist/api/mcp.d.ts.map +1 -0
- package/dist/api/mcp.js +215 -0
- package/dist/api/mcp.js.map +1 -0
- package/dist/api/middleware.d.ts +20 -0
- package/dist/api/middleware.d.ts.map +1 -0
- package/dist/api/middleware.js +239 -0
- package/dist/api/middleware.js.map +1 -0
- package/dist/api/server.d.ts +26 -0
- package/dist/api/server.d.ts.map +1 -0
- package/dist/api/server.js +294 -0
- package/dist/api/server.js.map +1 -0
- package/dist/api/streaming.d.ts +19 -0
- package/dist/api/streaming.d.ts.map +1 -0
- package/dist/api/streaming.js +274 -0
- package/dist/api/streaming.js.map +1 -0
- package/dist/cli/config-init.d.ts +2 -0
- package/dist/cli/config-init.d.ts.map +1 -0
- package/dist/cli/config-init.js +73 -0
- package/dist/cli/config-init.js.map +1 -0
- package/dist/cli/main.d.ts +3 -0
- package/dist/cli/main.d.ts.map +1 -0
- package/dist/cli/main.js +618 -0
- package/dist/cli/main.js.map +1 -0
- package/dist/context/advanced-optimizer.d.ts +12 -0
- package/dist/context/advanced-optimizer.d.ts.map +1 -0
- package/dist/context/advanced-optimizer.js +64 -0
- package/dist/context/advanced-optimizer.js.map +1 -0
- package/dist/context/optimizer.d.ts +7 -0
- package/dist/context/optimizer.d.ts.map +1 -0
- package/dist/context/optimizer.js +101 -0
- package/dist/context/optimizer.js.map +1 -0
- package/dist/core/cache.d.ts +39 -0
- package/dist/core/cache.d.ts.map +1 -0
- package/dist/core/cache.js +90 -0
- package/dist/core/cache.js.map +1 -0
- package/dist/core/health.d.ts +32 -0
- package/dist/core/health.d.ts.map +1 -0
- package/dist/core/health.js +92 -0
- package/dist/core/health.js.map +1 -0
- package/dist/core/inventory.d.ts +28 -0
- package/dist/core/inventory.d.ts.map +1 -0
- package/dist/core/inventory.js +106 -0
- package/dist/core/inventory.js.map +1 -0
- package/dist/core/metrics.d.ts +48 -0
- package/dist/core/metrics.d.ts.map +1 -0
- package/dist/core/metrics.js +115 -0
- package/dist/core/metrics.js.map +1 -0
- package/dist/core/mozart.d.ts +39 -0
- package/dist/core/mozart.d.ts.map +1 -0
- package/dist/core/mozart.js +156 -0
- package/dist/core/mozart.js.map +1 -0
- package/dist/core/persistence.d.ts +13 -0
- package/dist/core/persistence.d.ts.map +1 -0
- package/dist/core/persistence.js +119 -0
- package/dist/core/persistence.js.map +1 -0
- package/dist/core/plugins.d.ts +18 -0
- package/dist/core/plugins.d.ts.map +1 -0
- package/dist/core/plugins.js +110 -0
- package/dist/core/plugins.js.map +1 -0
- package/dist/core/reliability.d.ts +23 -0
- package/dist/core/reliability.d.ts.map +1 -0
- package/dist/core/reliability.js +70 -0
- package/dist/core/reliability.js.map +1 -0
- package/dist/core/session.d.ts +17 -0
- package/dist/core/session.d.ts.map +1 -0
- package/dist/core/session.js +67 -0
- package/dist/core/session.js.map +1 -0
- package/dist/cost/dynamic-pricing.d.ts +24 -0
- package/dist/cost/dynamic-pricing.d.ts.map +1 -0
- package/dist/cost/dynamic-pricing.js +71 -0
- package/dist/cost/dynamic-pricing.js.map +1 -0
- package/dist/cost/estimator.d.ts +8 -0
- package/dist/cost/estimator.d.ts.map +1 -0
- package/dist/cost/estimator.js +48 -0
- package/dist/cost/estimator.js.map +1 -0
- package/dist/explain/engine.d.ts +6 -0
- package/dist/explain/engine.d.ts.map +1 -0
- package/dist/explain/engine.js +59 -0
- package/dist/explain/engine.js.map +1 -0
- package/dist/index.d.ts +59 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +112 -0
- package/dist/index.js.map +1 -0
- package/dist/logs/logger.d.ts +35 -0
- package/dist/logs/logger.d.ts.map +1 -0
- package/dist/logs/logger.js +73 -0
- package/dist/logs/logger.js.map +1 -0
- package/dist/logs/redactor.d.ts +6 -0
- package/dist/logs/redactor.d.ts.map +1 -0
- package/dist/logs/redactor.js +54 -0
- package/dist/logs/redactor.js.map +1 -0
- package/dist/policy/engine.d.ts +9 -0
- package/dist/policy/engine.d.ts.map +1 -0
- package/dist/policy/engine.js +55 -0
- package/dist/policy/engine.js.map +1 -0
- package/dist/policy/loader.d.ts +3 -0
- package/dist/policy/loader.d.ts.map +1 -0
- package/dist/policy/loader.js +27 -0
- package/dist/policy/loader.js.map +1 -0
- package/dist/policy/profiles.d.ts +11 -0
- package/dist/policy/profiles.d.ts.map +1 -0
- package/dist/policy/profiles.js +263 -0
- package/dist/policy/profiles.js.map +1 -0
- package/dist/policy/yaml-loader.d.ts +10 -0
- package/dist/policy/yaml-loader.d.ts.map +1 -0
- package/dist/policy/yaml-loader.js +160 -0
- package/dist/policy/yaml-loader.js.map +1 -0
- package/dist/privacy/guard.d.ts +8 -0
- package/dist/privacy/guard.d.ts.map +1 -0
- package/dist/privacy/guard.js +125 -0
- package/dist/privacy/guard.js.map +1 -0
- package/dist/routing/circuit-breaker.d.ts +23 -0
- package/dist/routing/circuit-breaker.d.ts.map +1 -0
- package/dist/routing/circuit-breaker.js +74 -0
- package/dist/routing/circuit-breaker.js.map +1 -0
- package/dist/routing/classifier.d.ts +5 -0
- package/dist/routing/classifier.d.ts.map +1 -0
- package/dist/routing/classifier.js +102 -0
- package/dist/routing/classifier.js.map +1 -0
- package/dist/routing/fallback.d.ts +27 -0
- package/dist/routing/fallback.d.ts.map +1 -0
- package/dist/routing/fallback.js +66 -0
- package/dist/routing/fallback.js.map +1 -0
- package/dist/routing/multistage.d.ts +49 -0
- package/dist/routing/multistage.d.ts.map +1 -0
- package/dist/routing/multistage.js +108 -0
- package/dist/routing/multistage.js.map +1 -0
- package/dist/routing/router.d.ts +22 -0
- package/dist/routing/router.d.ts.map +1 -0
- package/dist/routing/router.js +123 -0
- package/dist/routing/router.js.map +1 -0
- package/dist/routing/scorer.d.ts +8 -0
- package/dist/routing/scorer.d.ts.map +1 -0
- package/dist/routing/scorer.js +131 -0
- package/dist/routing/scorer.js.map +1 -0
- package/dist/skills/definitions.d.ts +10 -0
- package/dist/skills/definitions.d.ts.map +1 -0
- package/dist/skills/definitions.js +112 -0
- package/dist/skills/definitions.js.map +1 -0
- package/dist/skills/index.d.ts +3 -0
- package/dist/skills/index.d.ts.map +1 -0
- package/dist/skills/index.js +14 -0
- package/dist/skills/index.js.map +1 -0
- package/dist/types/index.d.ts +298 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +34 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/canrunit.d.ts +26 -0
- package/dist/utils/canrunit.d.ts.map +1 -0
- package/dist/utils/canrunit.js +69 -0
- package/dist/utils/canrunit.js.map +1 -0
- package/dist/utils/dealsforge.d.ts +6 -0
- package/dist/utils/dealsforge.d.ts.map +1 -0
- package/dist/utils/dealsforge.js +105 -0
- package/dist/utils/dealsforge.js.map +1 -0
- package/docs/ADAPTERS.md +129 -0
- package/docs/ARCHITECTURE.md +113 -0
- package/docs/DELEGATED_EXECUTION.md +62 -0
- package/docs/FEATURE_MATRIX.md +113 -0
- package/docs/GATEWAY_FIRST_PRINCIPLES.md +66 -0
- package/docs/INTEGRATIONS.md +94 -0
- package/docs/LIMITATIONS.md +43 -0
- package/docs/RECOMMEND_ONLY_MODE.md +82 -0
- package/docs/ROADMAP.md +70 -0
- package/docs/SECURITY.md +74 -0
- package/docs/SKILLS_AND_TOOLS.md +141 -0
- package/examples/community-adapter/TEMPLATE.md +157 -0
- package/examples/generic-tools/README.md +29 -0
- package/examples/generic-tools/mozart-tools.json +86 -0
- package/examples/hermes/README.md +29 -0
- package/examples/hermes/mozart-tool.json +48 -0
- package/examples/litellm/README.md +21 -0
- package/examples/litellm/config.yaml +39 -0
- package/examples/ollama/README.md +37 -0
- package/examples/ollama/usage.ts +59 -0
- package/examples/openclaw/README.md +26 -0
- package/examples/openclaw/mozart-skill.yaml +80 -0
- package/examples/opencode/README.md +30 -0
- package/examples/opencode/SKILL.md +47 -0
- package/examples/opencode/mozart-skill.json +64 -0
- package/examples/openrouter/README.md +21 -0
- package/examples/openrouter/config.json +14 -0
- package/package.json +53 -0
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { RouteDecision, CostEstimate, TokenUsage } from '../types';
|
|
2
|
+
export interface MetricsSnapshot {
|
|
3
|
+
timestamp: string;
|
|
4
|
+
routes: {
|
|
5
|
+
total: number;
|
|
6
|
+
byTaskType: Record<string, number>;
|
|
7
|
+
byProvider: Record<string, number>;
|
|
8
|
+
byModel: Record<string, number>;
|
|
9
|
+
};
|
|
10
|
+
costs: {
|
|
11
|
+
totalEstimated: number;
|
|
12
|
+
totalSaved: number;
|
|
13
|
+
averagePerCall: number;
|
|
14
|
+
};
|
|
15
|
+
tokens: {
|
|
16
|
+
totalInput: number;
|
|
17
|
+
totalOutput: number;
|
|
18
|
+
total: number;
|
|
19
|
+
};
|
|
20
|
+
privacy: {
|
|
21
|
+
checks: number;
|
|
22
|
+
blocks: number;
|
|
23
|
+
filesKeptLocal: number;
|
|
24
|
+
};
|
|
25
|
+
gateways: {
|
|
26
|
+
active: number;
|
|
27
|
+
total: number;
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
export declare class MetricsCollector {
|
|
31
|
+
private routes;
|
|
32
|
+
private costEstimates;
|
|
33
|
+
private tokenUsages;
|
|
34
|
+
private privacyBlocks;
|
|
35
|
+
private privacyChecks;
|
|
36
|
+
private filesKeptLocal;
|
|
37
|
+
private startTime;
|
|
38
|
+
recordRoute(route: RouteDecision): void;
|
|
39
|
+
recordCost(cost: CostEstimate): void;
|
|
40
|
+
recordTokens(tokens: TokenUsage): void;
|
|
41
|
+
recordPrivacyCheck(blocked: boolean): void;
|
|
42
|
+
recordFileKeptLocal(): void;
|
|
43
|
+
snapshot(activeGateways: number, totalGateways: number): MetricsSnapshot;
|
|
44
|
+
toPrometheus(): string;
|
|
45
|
+
toJSON(): MetricsSnapshot;
|
|
46
|
+
reset(): void;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=metrics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../src/core/metrics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEnE,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE;QACN,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACnC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACnC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACjC,CAAC;IACF,KAAK,EAAE;QACL,cAAc,EAAE,MAAM,CAAC;QACvB,UAAU,EAAE,MAAM,CAAC;QACnB,cAAc,EAAE,MAAM,CAAC;KACxB,CAAC;IACF,MAAM,EAAE;QACN,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;QACpB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,OAAO,EAAE;QACP,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,cAAc,EAAE,MAAM,CAAC;KACxB,CAAC;IACF,QAAQ,EAAE;QACR,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,aAAa,CAAsB;IAC3C,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,SAAS,CAAc;IAE/B,WAAW,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAIvC,UAAU,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;IAIpC,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAItC,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAK1C,mBAAmB,IAAI,IAAI;IAI3B,QAAQ,CAAC,cAAc,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,eAAe;IA+CxE,YAAY,IAAI,MAAM;IA8BtB,MAAM,IAAI,eAAe;IAIzB,KAAK,IAAI,IAAI;CASd"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MetricsCollector = void 0;
|
|
4
|
+
class MetricsCollector {
|
|
5
|
+
routes = [];
|
|
6
|
+
costEstimates = [];
|
|
7
|
+
tokenUsages = [];
|
|
8
|
+
privacyBlocks = 0;
|
|
9
|
+
privacyChecks = 0;
|
|
10
|
+
filesKeptLocal = 0;
|
|
11
|
+
startTime = Date.now();
|
|
12
|
+
recordRoute(route) {
|
|
13
|
+
this.routes.push(route);
|
|
14
|
+
}
|
|
15
|
+
recordCost(cost) {
|
|
16
|
+
this.costEstimates.push(cost);
|
|
17
|
+
}
|
|
18
|
+
recordTokens(tokens) {
|
|
19
|
+
this.tokenUsages.push(tokens);
|
|
20
|
+
}
|
|
21
|
+
recordPrivacyCheck(blocked) {
|
|
22
|
+
this.privacyChecks++;
|
|
23
|
+
if (blocked)
|
|
24
|
+
this.privacyBlocks++;
|
|
25
|
+
}
|
|
26
|
+
recordFileKeptLocal() {
|
|
27
|
+
this.filesKeptLocal++;
|
|
28
|
+
}
|
|
29
|
+
snapshot(activeGateways, totalGateways) {
|
|
30
|
+
const taskTypeCounts = {};
|
|
31
|
+
const providerCounts = {};
|
|
32
|
+
const modelCounts = {};
|
|
33
|
+
for (const r of this.routes) {
|
|
34
|
+
const tt = r.explanation[0]?.split(':')[0]?.replace('Task', '').trim() ?? 'unknown';
|
|
35
|
+
taskTypeCounts[tt] = (taskTypeCounts[tt] ?? 0) + 1;
|
|
36
|
+
providerCounts[r.selectedProvider] = (providerCounts[r.selectedProvider] ?? 0) + 1;
|
|
37
|
+
modelCounts[r.selectedModel] = (modelCounts[r.selectedModel] ?? 0) + 1;
|
|
38
|
+
}
|
|
39
|
+
const totalCost = this.costEstimates.reduce((s, c) => s + c.totalCost, 0);
|
|
40
|
+
const totalSaved = this.costEstimates.reduce((s, c) => s + (c.comparedToPremium && c.totalCost < c.comparedToPremium ? c.comparedToPremium - c.totalCost : 0), 0);
|
|
41
|
+
const totalInput = this.tokenUsages.reduce((s, t) => s + t.input, 0);
|
|
42
|
+
const totalOutput = this.tokenUsages.reduce((s, t) => s + t.output, 0);
|
|
43
|
+
return {
|
|
44
|
+
timestamp: new Date().toISOString(),
|
|
45
|
+
routes: {
|
|
46
|
+
total: this.routes.length,
|
|
47
|
+
byTaskType: taskTypeCounts,
|
|
48
|
+
byProvider: providerCounts,
|
|
49
|
+
byModel: modelCounts,
|
|
50
|
+
},
|
|
51
|
+
costs: {
|
|
52
|
+
totalEstimated: Math.round(totalCost * 10000) / 10000,
|
|
53
|
+
totalSaved: Math.round(totalSaved * 10000) / 10000,
|
|
54
|
+
averagePerCall: this.costEstimates.length > 0 ? Math.round((totalCost / this.costEstimates.length) * 10000) / 10000 : 0,
|
|
55
|
+
},
|
|
56
|
+
tokens: {
|
|
57
|
+
totalInput,
|
|
58
|
+
totalOutput,
|
|
59
|
+
total: totalInput + totalOutput,
|
|
60
|
+
},
|
|
61
|
+
privacy: {
|
|
62
|
+
checks: this.privacyChecks,
|
|
63
|
+
blocks: this.privacyBlocks,
|
|
64
|
+
filesKeptLocal: this.filesKeptLocal,
|
|
65
|
+
},
|
|
66
|
+
gateways: {
|
|
67
|
+
active: activeGateways,
|
|
68
|
+
total: totalGateways,
|
|
69
|
+
},
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
toPrometheus() {
|
|
73
|
+
const snapshot = this.snapshot(0, 0);
|
|
74
|
+
const lines = [
|
|
75
|
+
`# HELP mozart_routes_total Total routes processed`,
|
|
76
|
+
`# TYPE mozart_routes_total counter`,
|
|
77
|
+
`mozart_routes_total ${snapshot.routes.total}`,
|
|
78
|
+
``,
|
|
79
|
+
`# HELP mozart_cost_estimated_total Estimated cost in USD`,
|
|
80
|
+
`# TYPE mozart_cost_estimated_total gauge`,
|
|
81
|
+
`mozart_cost_estimated_total ${snapshot.costs.totalEstimated}`,
|
|
82
|
+
``,
|
|
83
|
+
`# HELP mozart_cost_saved_total Estimated savings in USD`,
|
|
84
|
+
`# TYPE mozart_cost_saved_total gauge`,
|
|
85
|
+
`mozart_cost_saved_total ${snapshot.costs.totalSaved}`,
|
|
86
|
+
``,
|
|
87
|
+
`# HELP mozart_tokens_input_total Total input tokens`,
|
|
88
|
+
`# TYPE mozart_tokens_input_total counter`,
|
|
89
|
+
`mozart_tokens_input_total ${snapshot.tokens.totalInput}`,
|
|
90
|
+
``,
|
|
91
|
+
`# HELP mozart_tokens_output_total Total output tokens`,
|
|
92
|
+
`# TYPE mozart_tokens_output_total counter`,
|
|
93
|
+
`mozart_tokens_output_total ${snapshot.tokens.totalOutput}`,
|
|
94
|
+
``,
|
|
95
|
+
`# HELP mozart_privacy_blocks_total Total privacy blocks`,
|
|
96
|
+
`# TYPE mozart_privacy_blocks_total counter`,
|
|
97
|
+
`mozart_privacy_blocks_total ${snapshot.privacy.blocks}`,
|
|
98
|
+
];
|
|
99
|
+
return lines.join('\n');
|
|
100
|
+
}
|
|
101
|
+
toJSON() {
|
|
102
|
+
return this.snapshot(0, 0);
|
|
103
|
+
}
|
|
104
|
+
reset() {
|
|
105
|
+
this.routes = [];
|
|
106
|
+
this.costEstimates = [];
|
|
107
|
+
this.tokenUsages = [];
|
|
108
|
+
this.privacyBlocks = 0;
|
|
109
|
+
this.privacyChecks = 0;
|
|
110
|
+
this.filesKeptLocal = 0;
|
|
111
|
+
this.startTime = Date.now();
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
exports.MetricsCollector = MetricsCollector;
|
|
115
|
+
//# sourceMappingURL=metrics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../src/core/metrics.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { MozartRequest, MozartResponse, RouteDecision, PolicyConfig, InventorySnapshot } from '../types';
|
|
2
|
+
import { InventoryRegistry } from './inventory';
|
|
3
|
+
import { SessionTracker } from './session';
|
|
4
|
+
import { TaskClassifier } from '../routing/classifier';
|
|
5
|
+
import { RoutingEngine } from '../routing/router';
|
|
6
|
+
import { PolicyEngine } from '../policy/engine';
|
|
7
|
+
import { PrivacyGuard } from '../privacy/guard';
|
|
8
|
+
import { ContextOptimizer } from '../context/optimizer';
|
|
9
|
+
import { CostEstimator } from '../cost/estimator';
|
|
10
|
+
import { ExplainabilityEngine } from '../explain/engine';
|
|
11
|
+
import { Logger } from '../logs/logger';
|
|
12
|
+
export interface MozartConfig {
|
|
13
|
+
policy?: Partial<PolicyConfig>;
|
|
14
|
+
registry?: InventoryRegistry;
|
|
15
|
+
logger?: Logger;
|
|
16
|
+
}
|
|
17
|
+
export declare class Mozart {
|
|
18
|
+
registry: InventoryRegistry;
|
|
19
|
+
policy: PolicyEngine;
|
|
20
|
+
classifier: TaskClassifier;
|
|
21
|
+
router: RoutingEngine;
|
|
22
|
+
privacyGuard: PrivacyGuard;
|
|
23
|
+
contextOptimizer: ContextOptimizer;
|
|
24
|
+
costEstimator: CostEstimator;
|
|
25
|
+
explainer: ExplainabilityEngine;
|
|
26
|
+
logger: Logger;
|
|
27
|
+
session: SessionTracker;
|
|
28
|
+
constructor(config?: MozartConfig);
|
|
29
|
+
process(request: MozartRequest): Promise<MozartResponse>;
|
|
30
|
+
simulate(input: string, taskHint?: string): Promise<RouteDecision>;
|
|
31
|
+
route(input: string): Promise<RouteDecision>;
|
|
32
|
+
recommend(input: string): Promise<RouteDecision>;
|
|
33
|
+
delegate(route: RouteDecision, request: MozartRequest): Promise<string>;
|
|
34
|
+
detectAll(): Promise<number>;
|
|
35
|
+
getInventory(): InventorySnapshot;
|
|
36
|
+
generateReport(): string;
|
|
37
|
+
explainLastRoute(): string;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=mozart.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mozart.d.ts","sourceRoot":"","sources":["../../src/core/mozart.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,cAAc,EACd,aAAa,EAIb,YAAY,EAGZ,iBAAiB,EAClB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAExC,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAC/B,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,MAAM;IACV,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,MAAM,EAAE,YAAY,CAAC;IACrB,UAAU,EAAE,cAAc,CAAC;IAC3B,MAAM,EAAE,aAAa,CAAC;IACtB,YAAY,EAAE,YAAY,CAAC;IAC3B,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,aAAa,EAAE,aAAa,CAAC;IAC7B,SAAS,EAAE,oBAAoB,CAAC;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,cAAc,CAAC;gBAEnB,MAAM,CAAC,EAAE,YAAY;IAkB3B,OAAO,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC;IAkExD,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAelE,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAe5C,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAIhD,QAAQ,CAAC,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;IAgCvE,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;IAmBlC,YAAY,IAAI,iBAAiB;IAIjC,cAAc,IAAI,MAAM;IAIxB,gBAAgB,IAAI,MAAM;CAG3B"}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Mozart = void 0;
|
|
4
|
+
const types_1 = require("../types");
|
|
5
|
+
const inventory_1 = require("./inventory");
|
|
6
|
+
const session_1 = require("./session");
|
|
7
|
+
const classifier_1 = require("../routing/classifier");
|
|
8
|
+
const router_1 = require("../routing/router");
|
|
9
|
+
const engine_1 = require("../policy/engine");
|
|
10
|
+
const guard_1 = require("../privacy/guard");
|
|
11
|
+
const optimizer_1 = require("../context/optimizer");
|
|
12
|
+
const estimator_1 = require("../cost/estimator");
|
|
13
|
+
const engine_2 = require("../explain/engine");
|
|
14
|
+
const logger_1 = require("../logs/logger");
|
|
15
|
+
class Mozart {
|
|
16
|
+
registry;
|
|
17
|
+
policy;
|
|
18
|
+
classifier;
|
|
19
|
+
router;
|
|
20
|
+
privacyGuard;
|
|
21
|
+
contextOptimizer;
|
|
22
|
+
costEstimator;
|
|
23
|
+
explainer;
|
|
24
|
+
logger;
|
|
25
|
+
session;
|
|
26
|
+
constructor(config) {
|
|
27
|
+
this.registry = config?.registry ?? new inventory_1.InventoryRegistry();
|
|
28
|
+
const policyConfig = { ...types_1.DEFAULT_POLICY, ...config?.policy };
|
|
29
|
+
this.policy = new engine_1.PolicyEngine(policyConfig);
|
|
30
|
+
this.logger = config?.logger ?? new logger_1.Logger(policyConfig.logs);
|
|
31
|
+
this.classifier = new classifier_1.TaskClassifier();
|
|
32
|
+
this.privacyGuard = new guard_1.PrivacyGuard(this.logger);
|
|
33
|
+
this.contextOptimizer = new optimizer_1.ContextOptimizer();
|
|
34
|
+
this.costEstimator = new estimator_1.CostEstimator();
|
|
35
|
+
this.router = new router_1.RoutingEngine(this.registry, this.policy, this.costEstimator);
|
|
36
|
+
this.explainer = new engine_2.ExplainabilityEngine();
|
|
37
|
+
this.session = new session_1.SessionTracker();
|
|
38
|
+
}
|
|
39
|
+
async process(request) {
|
|
40
|
+
const mode = request.executionMode ?? 'recommend';
|
|
41
|
+
const taskProfile = this.classifier.classify(request.input, request.taskHint);
|
|
42
|
+
const privacyResult = this.privacyGuard.evaluate(request.input);
|
|
43
|
+
if (request.context?.length) {
|
|
44
|
+
for (const ctx of request.context) {
|
|
45
|
+
this.privacyGuard.evaluate(ctx);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
this.logger.logRoutingDecision(taskProfile.taskType, request.input.slice(0, 100));
|
|
49
|
+
const policyEval = this.policy.evaluate(taskProfile, privacyResult, request.budgetMode ?? this.policy.config.budget.mode, request.privacyMode ?? this.policy.config.privacy.mode);
|
|
50
|
+
const contextStrategy = this.contextOptimizer.optimize(request.input, request.context ?? [], taskProfile);
|
|
51
|
+
const route = this.router.route(taskProfile, privacyResult, policyEval, contextStrategy);
|
|
52
|
+
const cost = this.costEstimator.estimate(route, contextStrategy);
|
|
53
|
+
const tokens = {
|
|
54
|
+
input: contextStrategy.estimatedInputTokens,
|
|
55
|
+
output: Math.ceil(contextStrategy.estimatedInputTokens * 0.3),
|
|
56
|
+
total: 0,
|
|
57
|
+
};
|
|
58
|
+
tokens.total = tokens.input + tokens.output;
|
|
59
|
+
this.session.recordRoute(route);
|
|
60
|
+
let output;
|
|
61
|
+
if (mode === 'execute' || mode === 'delegate') {
|
|
62
|
+
output = await this.delegate(route, request);
|
|
63
|
+
}
|
|
64
|
+
const explanation = this.explainer.explain(route, taskProfile, cost, privacyResult);
|
|
65
|
+
return {
|
|
66
|
+
output,
|
|
67
|
+
route,
|
|
68
|
+
cost,
|
|
69
|
+
tokens,
|
|
70
|
+
privacy: privacyResult,
|
|
71
|
+
fallbacks: route.fallbacks,
|
|
72
|
+
explanation,
|
|
73
|
+
logsRef: this.logger.getLastLogRef(),
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
async simulate(input, taskHint) {
|
|
77
|
+
const taskProfile = this.classifier.classify(input, taskHint);
|
|
78
|
+
const privacyResult = this.privacyGuard.evaluate(input);
|
|
79
|
+
const policyEval = this.policy.evaluate(taskProfile, privacyResult, 'balanced', 'balanced');
|
|
80
|
+
const contextStrategy = this.contextOptimizer.optimize(input, [], taskProfile);
|
|
81
|
+
const route = this.router.route(taskProfile, privacyResult, policyEval, contextStrategy);
|
|
82
|
+
this.session.recordRoute(route);
|
|
83
|
+
return route;
|
|
84
|
+
}
|
|
85
|
+
async route(input) {
|
|
86
|
+
const taskProfile = this.classifier.classify(input);
|
|
87
|
+
const privacyResult = this.privacyGuard.evaluate(input);
|
|
88
|
+
const policyEval = this.policy.evaluate(taskProfile, privacyResult, 'balanced', 'balanced');
|
|
89
|
+
const contextStrategy = this.contextOptimizer.optimize(input, [], taskProfile);
|
|
90
|
+
const route = this.router.route(taskProfile, privacyResult, policyEval, contextStrategy);
|
|
91
|
+
this.session.recordRoute(route);
|
|
92
|
+
return route;
|
|
93
|
+
}
|
|
94
|
+
async recommend(input) {
|
|
95
|
+
return this.route(input);
|
|
96
|
+
}
|
|
97
|
+
async delegate(route, request) {
|
|
98
|
+
this.logger.logEvent('delegation', `Delegating to ${route.selectedGateway ?? 'direct'} -> ${route.selectedProvider}/${route.selectedModel}`);
|
|
99
|
+
if (this.registry.hasAdapter(route.selectedGateway)) {
|
|
100
|
+
const adapter = this.registry.getAdapter(route.selectedGateway);
|
|
101
|
+
if (adapter?.execute) {
|
|
102
|
+
const target = adapter.getExecutionTarget
|
|
103
|
+
? await adapter.getExecutionTarget(route)
|
|
104
|
+
: undefined;
|
|
105
|
+
const execReq = {
|
|
106
|
+
input: request.input,
|
|
107
|
+
context: request.context,
|
|
108
|
+
model: route.selectedModel,
|
|
109
|
+
provider: route.selectedProvider,
|
|
110
|
+
gateway: route.selectedGateway,
|
|
111
|
+
executionTarget: target ?? {
|
|
112
|
+
adapter: adapter.id,
|
|
113
|
+
provider: route.selectedProvider,
|
|
114
|
+
model: route.selectedModel,
|
|
115
|
+
apiKeyManagedBy: 'gateway',
|
|
116
|
+
method: 'gateway_call',
|
|
117
|
+
},
|
|
118
|
+
};
|
|
119
|
+
const result = await adapter.execute(execReq);
|
|
120
|
+
this.logger.logEvent('execution', `Result from ${route.selectedModel}: success=${result.success}`);
|
|
121
|
+
return result.output ?? `[Execution delegated to ${route.selectedGateway}]}`;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
return `[Recommendation only] Route: ${route.selectedGateway ?? 'direct'} / ${route.selectedProvider} / ${route.selectedModel}`;
|
|
125
|
+
}
|
|
126
|
+
async detectAll() {
|
|
127
|
+
let modelsFound = 0;
|
|
128
|
+
for (const adapter of this.registry.listAdapters()) {
|
|
129
|
+
try {
|
|
130
|
+
const detection = await adapter.detect();
|
|
131
|
+
this.registry.recordDetection(detection);
|
|
132
|
+
if (detection.detected) {
|
|
133
|
+
const providers = await adapter.listProviders();
|
|
134
|
+
const models = await adapter.listModels();
|
|
135
|
+
this.registry.mergeFromAdapter(adapter.id, providers, models);
|
|
136
|
+
modelsFound += models.length;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
catch {
|
|
140
|
+
// skip adapters that fail
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
return modelsFound;
|
|
144
|
+
}
|
|
145
|
+
getInventory() {
|
|
146
|
+
return this.registry.snapshot();
|
|
147
|
+
}
|
|
148
|
+
generateReport() {
|
|
149
|
+
return this.session.generateReport();
|
|
150
|
+
}
|
|
151
|
+
explainLastRoute() {
|
|
152
|
+
return this.session.explainLast();
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
exports.Mozart = Mozart;
|
|
156
|
+
//# sourceMappingURL=mozart.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mozart.js","sourceRoot":"","sources":["../../src/core/mozart.ts"],"names":[],"mappings":";;;AAAA,oCAWkB;AAClB,2CAAgD;AAChD,uCAA2C;AAC3C,sDAAuD;AACvD,8CAAkD;AAClD,6CAAgD;AAChD,4CAAgD;AAChD,oDAAwD;AACxD,iDAAkD;AAClD,8CAAyD;AACzD,2CAAwC;AAQxC,MAAa,MAAM;IACV,QAAQ,CAAoB;IAC5B,MAAM,CAAe;IACrB,UAAU,CAAiB;IAC3B,MAAM,CAAgB;IACtB,YAAY,CAAe;IAC3B,gBAAgB,CAAmB;IACnC,aAAa,CAAgB;IAC7B,SAAS,CAAuB;IAChC,MAAM,CAAS;IACf,OAAO,CAAiB;IAE/B,YAAY,MAAqB;QAC/B,IAAI,CAAC,QAAQ,GAAG,MAAM,EAAE,QAAQ,IAAI,IAAI,6BAAiB,EAAE,CAAC;QAC5D,MAAM,YAAY,GAAG,EAAE,GAAG,sBAAc,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,CAAC;QAC9D,IAAI,CAAC,MAAM,GAAG,IAAI,qBAAY,CAAC,YAAY,CAAC,CAAC;QAC7C,IAAI,CAAC,MAAM,GAAG,MAAM,EAAE,MAAM,IAAI,IAAI,eAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAC9D,IAAI,CAAC,UAAU,GAAG,IAAI,2BAAc,EAAE,CAAC;QACvC,IAAI,CAAC,YAAY,GAAG,IAAI,oBAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClD,IAAI,CAAC,gBAAgB,GAAG,IAAI,4BAAgB,EAAE,CAAC;QAC/C,IAAI,CAAC,aAAa,GAAG,IAAI,yBAAa,EAAE,CAAC;QACzC,IAAI,CAAC,MAAM,GAAG,IAAI,sBAAa,CAC7B,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,aAAa,CACnB,CAAC;QACF,IAAI,CAAC,SAAS,GAAG,IAAI,6BAAoB,EAAE,CAAC;QAC5C,IAAI,CAAC,OAAO,GAAG,IAAI,wBAAc,EAAE,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAAsB;QAClC,MAAM,IAAI,GAAkB,OAAO,CAAC,aAAa,IAAI,WAAW,CAAC;QAEjE,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAC1C,OAAO,CAAC,KAAK,EACb,OAAO,CAAC,QAAQ,CACjB,CAAC;QAEF,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAChE,IAAI,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;YAC5B,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBAClC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAClC,CAAC;QACH,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAElF,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CACrC,WAAW,EACX,aAAa,EACb,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EACpD,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CACvD,CAAC;QAEF,MAAM,eAAe,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CACpD,OAAO,CAAC,KAAK,EACb,OAAO,CAAC,OAAO,IAAI,EAAE,EACrB,WAAW,CACZ,CAAC;QAEF,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAC7B,WAAW,EACX,aAAa,EACb,UAAU,EACV,eAAe,CAChB,CAAC;QAEF,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;QACjE,MAAM,MAAM,GAAe;YACzB,KAAK,EAAE,eAAe,CAAC,oBAAoB;YAC3C,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,oBAAoB,GAAG,GAAG,CAAC;YAC7D,KAAK,EAAE,CAAC;SACT,CAAC;QACF,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;QAE5C,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAEhC,IAAI,MAA0B,CAAC;QAC/B,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;YAC9C,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC/C,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;QAEpF,OAAO;YACL,MAAM;YACN,KAAK;YACL,IAAI;YACJ,MAAM;YACN,OAAO,EAAE,aAAa;YACtB,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,WAAW;YACX,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE;SACrC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,KAAa,EAAE,QAAiB;QAC7C,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC9D,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACxD,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CACrC,WAAW,EACX,aAAa,EACb,UAAU,EACV,UAAU,CACX,CAAC;QACF,MAAM,eAAe,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,EAAE,WAAW,CAAC,CAAC;QAC/E,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,aAAa,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC;QACzF,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAChC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,KAAa;QACvB,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACpD,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACxD,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CACrC,WAAW,EACX,aAAa,EACb,UAAU,EACV,UAAU,CACX,CAAC;QACF,MAAM,eAAe,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,EAAE,WAAW,CAAC,CAAC;QAC/E,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,aAAa,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC;QACzF,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAChC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,KAAa;QAC3B,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,KAAoB,EAAE,OAAsB;QACzD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE,iBAAiB,KAAK,CAAC,eAAe,IAAI,QAAQ,OAAO,KAAK,CAAC,gBAAgB,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC;QAE7I,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC;YACpD,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,eAAgB,CAAC,CAAC;YACjE,IAAI,OAAO,EAAE,OAAO,EAAE,CAAC;gBACrB,MAAM,MAAM,GAAG,OAAO,CAAC,kBAAkB;oBACvC,CAAC,CAAC,MAAM,OAAO,CAAC,kBAAkB,CAAC,KAAK,CAAC;oBACzC,CAAC,CAAC,SAAS,CAAC;gBACd,MAAM,OAAO,GAAG;oBACd,KAAK,EAAE,OAAO,CAAC,KAAK;oBACpB,OAAO,EAAE,OAAO,CAAC,OAAO;oBACxB,KAAK,EAAE,KAAK,CAAC,aAAa;oBAC1B,QAAQ,EAAE,KAAK,CAAC,gBAAgB;oBAChC,OAAO,EAAE,KAAK,CAAC,eAAe;oBAC9B,eAAe,EAAE,MAAM,IAAI;wBACzB,OAAO,EAAE,OAAO,CAAC,EAAE;wBACnB,QAAQ,EAAE,KAAK,CAAC,gBAAgB;wBAChC,KAAK,EAAE,KAAK,CAAC,aAAa;wBAC1B,eAAe,EAAE,SAAS;wBAC1B,MAAM,EAAE,cAAc;qBACvB;iBACF,CAAC;gBACF,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;gBAC9C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,eAAe,KAAK,CAAC,aAAa,aAAa,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;gBACnG,OAAO,MAAM,CAAC,MAAM,IAAI,2BAA2B,KAAK,CAAC,eAAe,IAAI,CAAC;YAC/E,CAAC;QACH,CAAC;QAED,OAAO,gCAAgC,KAAK,CAAC,eAAe,IAAI,QAAQ,MAAM,KAAK,CAAC,gBAAgB,MAAM,KAAK,CAAC,aAAa,EAAE,CAAC;IAClI,CAAC;IAED,KAAK,CAAC,SAAS;QACb,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,EAAE,CAAC;YACnD,IAAI,CAAC;gBACH,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC;gBACzC,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;gBACzC,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC;oBACvB,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,aAAa,EAAE,CAAC;oBAChD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;oBAC1C,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;oBAC9D,WAAW,IAAI,MAAM,CAAC,MAAM,CAAC;gBAC/B,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,0BAA0B;YAC5B,CAAC;QACH,CAAC;QACD,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,YAAY;QACV,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;IAClC,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;IACvC,CAAC;IAED,gBAAgB;QACd,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;IACpC,CAAC;CACF;AAhMD,wBAgMC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { InventorySnapshot, SessionReport, RouteDecision } from '../types';
|
|
2
|
+
export declare function saveInventory(snapshot: InventorySnapshot): void;
|
|
3
|
+
export declare function loadInventory(): InventorySnapshot | null;
|
|
4
|
+
export declare function saveSession(report: SessionReport, routes: RouteDecision[]): void;
|
|
5
|
+
export declare function loadSession(): {
|
|
6
|
+
report: SessionReport;
|
|
7
|
+
routes: RouteDecision[];
|
|
8
|
+
} | null;
|
|
9
|
+
export declare function saveConfig(configYaml: string): void;
|
|
10
|
+
export declare function loadConfigYaml(): string | null;
|
|
11
|
+
export declare function getMozartDir(): string;
|
|
12
|
+
export declare function clearAllData(): void;
|
|
13
|
+
//# sourceMappingURL=persistence.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"persistence.d.ts","sourceRoot":"","sources":["../../src/core/persistence.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAa3E,wBAAgB,aAAa,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAI/D;AAED,wBAAgB,aAAa,IAAI,iBAAiB,GAAG,IAAI,CASxD;AAID,wBAAgB,WAAW,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI,CAQhF;AAED,wBAAgB,WAAW,IAAI;IAAE,MAAM,EAAE,aAAa,CAAC;IAAC,MAAM,EAAE,aAAa,EAAE,CAAA;CAAE,GAAG,IAAI,CASvF;AAID,wBAAgB,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAInD;AAED,wBAAgB,cAAc,IAAI,MAAM,GAAG,IAAI,CAQ9C;AAID,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED,wBAAgB,YAAY,IAAI,IAAI,CAOnC"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.saveInventory = saveInventory;
|
|
37
|
+
exports.loadInventory = loadInventory;
|
|
38
|
+
exports.saveSession = saveSession;
|
|
39
|
+
exports.loadSession = loadSession;
|
|
40
|
+
exports.saveConfig = saveConfig;
|
|
41
|
+
exports.loadConfigYaml = loadConfigYaml;
|
|
42
|
+
exports.getMozartDir = getMozartDir;
|
|
43
|
+
exports.clearAllData = clearAllData;
|
|
44
|
+
const fs = __importStar(require("fs"));
|
|
45
|
+
const path = __importStar(require("path"));
|
|
46
|
+
const os = __importStar(require("os"));
|
|
47
|
+
const DEFAULT_DIR = path.join(os.homedir(), '.mozart');
|
|
48
|
+
function ensureDir() {
|
|
49
|
+
if (!fs.existsSync(DEFAULT_DIR)) {
|
|
50
|
+
fs.mkdirSync(DEFAULT_DIR, { recursive: true });
|
|
51
|
+
}
|
|
52
|
+
return DEFAULT_DIR;
|
|
53
|
+
}
|
|
54
|
+
// ── Inventory Persistence ─────────────────────────────────
|
|
55
|
+
function saveInventory(snapshot) {
|
|
56
|
+
const dir = ensureDir();
|
|
57
|
+
const filePath = path.join(dir, 'inventory.json');
|
|
58
|
+
fs.writeFileSync(filePath, JSON.stringify(snapshot, null, 2), 'utf-8');
|
|
59
|
+
}
|
|
60
|
+
function loadInventory() {
|
|
61
|
+
const filePath = path.join(DEFAULT_DIR, 'inventory.json');
|
|
62
|
+
if (!fs.existsSync(filePath))
|
|
63
|
+
return null;
|
|
64
|
+
try {
|
|
65
|
+
const data = fs.readFileSync(filePath, 'utf-8');
|
|
66
|
+
return JSON.parse(data);
|
|
67
|
+
}
|
|
68
|
+
catch {
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
// ── Session Persistence ───────────────────────────────────
|
|
73
|
+
function saveSession(report, routes) {
|
|
74
|
+
const dir = ensureDir();
|
|
75
|
+
const filePath = path.join(dir, 'session.json');
|
|
76
|
+
fs.writeFileSync(filePath, JSON.stringify({ report, routes, savedAt: new Date().toISOString() }, null, 2), 'utf-8');
|
|
77
|
+
}
|
|
78
|
+
function loadSession() {
|
|
79
|
+
const filePath = path.join(DEFAULT_DIR, 'session.json');
|
|
80
|
+
if (!fs.existsSync(filePath))
|
|
81
|
+
return null;
|
|
82
|
+
try {
|
|
83
|
+
const data = fs.readFileSync(filePath, 'utf-8');
|
|
84
|
+
return JSON.parse(data);
|
|
85
|
+
}
|
|
86
|
+
catch {
|
|
87
|
+
return null;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
// ── Config Persistence ────────────────────────────────────
|
|
91
|
+
function saveConfig(configYaml) {
|
|
92
|
+
const dir = ensureDir();
|
|
93
|
+
const filePath = path.join(dir, 'config.yaml');
|
|
94
|
+
fs.writeFileSync(filePath, configYaml, 'utf-8');
|
|
95
|
+
}
|
|
96
|
+
function loadConfigYaml() {
|
|
97
|
+
const filePath = path.join(DEFAULT_DIR, 'config.yaml');
|
|
98
|
+
if (!fs.existsSync(filePath))
|
|
99
|
+
return null;
|
|
100
|
+
try {
|
|
101
|
+
return fs.readFileSync(filePath, 'utf-8');
|
|
102
|
+
}
|
|
103
|
+
catch {
|
|
104
|
+
return null;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
// ── Directory ─────────────────────────────────────────────
|
|
108
|
+
function getMozartDir() {
|
|
109
|
+
return ensureDir();
|
|
110
|
+
}
|
|
111
|
+
function clearAllData() {
|
|
112
|
+
const dir = DEFAULT_DIR;
|
|
113
|
+
if (fs.existsSync(dir)) {
|
|
114
|
+
for (const file of fs.readdirSync(dir)) {
|
|
115
|
+
fs.unlinkSync(path.join(dir, file));
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=persistence.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"persistence.js","sourceRoot":"","sources":["../../src/core/persistence.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { GatewayAdapter } from '../types';
|
|
2
|
+
export interface MozartPlugin {
|
|
3
|
+
name: string;
|
|
4
|
+
version: string;
|
|
5
|
+
adapters: GatewayAdapter[];
|
|
6
|
+
onRegister?: () => Promise<void>;
|
|
7
|
+
}
|
|
8
|
+
export declare class PluginRegistry {
|
|
9
|
+
private plugins;
|
|
10
|
+
register(plugin: MozartPlugin): void;
|
|
11
|
+
get(name: string): MozartPlugin | undefined;
|
|
12
|
+
list(): MozartPlugin[];
|
|
13
|
+
getAllAdapters(): GatewayAdapter[];
|
|
14
|
+
loadFromDirectory(dirPath: string): Promise<number>;
|
|
15
|
+
loadInstalledPlugins(): Promise<number>;
|
|
16
|
+
}
|
|
17
|
+
export declare const pluginRegistry: PluginRegistry;
|
|
18
|
+
//# sourceMappingURL=plugins.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugins.d.ts","sourceRoot":"","sources":["../../src/core/plugins.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAM1C,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAClC;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CAAwC;IAEvD,QAAQ,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IAIpC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAI3C,IAAI,IAAI,YAAY,EAAE;IAItB,cAAc,IAAI,cAAc,EAAE;IAQ5B,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAgCnD,oBAAoB,IAAI,OAAO,CAAC,MAAM,CAAC;CA6C9C;AAGD,eAAO,MAAM,cAAc,gBAAuB,CAAC"}
|