@framers/agentos 0.2.6 → 0.2.7
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/dist/memory-router/MemoryRouter.d.ts +195 -0
- package/dist/memory-router/MemoryRouter.d.ts.map +1 -0
- package/dist/memory-router/MemoryRouter.js +155 -0
- package/dist/memory-router/MemoryRouter.js.map +1 -0
- package/dist/memory-router/backend-costs.d.ts +67 -0
- package/dist/memory-router/backend-costs.d.ts.map +1 -0
- package/dist/memory-router/backend-costs.js +136 -0
- package/dist/memory-router/backend-costs.js.map +1 -0
- package/dist/memory-router/classifier.d.ts +169 -0
- package/dist/memory-router/classifier.d.ts.map +1 -0
- package/dist/memory-router/classifier.js +193 -0
- package/dist/memory-router/classifier.js.map +1 -0
- package/dist/memory-router/dispatcher.d.ts +115 -0
- package/dist/memory-router/dispatcher.d.ts.map +1 -0
- package/dist/memory-router/dispatcher.js +84 -0
- package/dist/memory-router/dispatcher.js.map +1 -0
- package/dist/memory-router/index.d.ts +124 -0
- package/dist/memory-router/index.d.ts.map +1 -0
- package/dist/memory-router/index.js +121 -0
- package/dist/memory-router/index.js.map +1 -0
- package/dist/memory-router/routing-tables.d.ts +125 -0
- package/dist/memory-router/routing-tables.d.ts.map +1 -0
- package/dist/memory-router/routing-tables.js +137 -0
- package/dist/memory-router/routing-tables.js.map +1 -0
- package/dist/memory-router/select-backend.d.ts +136 -0
- package/dist/memory-router/select-backend.d.ts.map +1 -0
- package/dist/memory-router/select-backend.js +210 -0
- package/dist/memory-router/select-backend.js.map +1 -0
- package/package.json +6 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"select-backend.d.ts","sourceRoot":"","sources":["../../src/memory-router/select-backend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,KAAK,EACV,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,YAAY,EACb,MAAM,qBAAqB,CAAC;AAE7B;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,MAAM,GAAG,mBAAmB,CAAC;AAErE;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,QAAQ,CAAC,UAAU,EAAE,gBAAgB,CAAC;IACtC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,eAAe,EAAE,sBAAsB,CAAC,CAAC,CAAC;CAClF;AAED;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,iBAAiB,EAAE,mBAAmB,CAAC;IAChD;;;;;OAKG;IACH,QAAQ,CAAC,mBAAmB,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACzD,QAAQ,CAAC,aAAa,EAAE,eAAe,CAAC;IACxC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAC;CACrC;AAED;;;;GAIG;AACH,qBAAa,gCAAiC,SAAQ,KAAK;aAC7B,QAAQ,EAAE,MAAM;gBAAhB,QAAQ,EAAE,MAAM;CAI7C;AAED;;;;;GAKG;AACH,qBAAa,+BAAgC,SAAQ,KAAK;aAEtC,OAAO,EAAE,eAAe;aACxB,IAAI,EAAE,MAAM;aACZ,MAAM,EAAE,MAAM;gBAFd,OAAO,EAAE,eAAe,EACxB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM;CAQjC;AAOD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE;IAClC,iBAAiB,EAAE,mBAAmB,CAAC;IACvC,mBAAmB,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAChD,MAAM,EAAE,kBAAkB,CAAC;CAC5B,GAAG,qBAAqB,CA6IxB"}
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file select-backend.ts
|
|
3
|
+
* @description Pure function that turns a classifier-predicted category
|
|
4
|
+
* + a {@link MemoryRouterConfig} into a {@link MemoryRoutingDecision}.
|
|
5
|
+
*
|
|
6
|
+
* Stateless. Deterministic. No I/O. Suitable for use inside hot dispatch
|
|
7
|
+
* loops and inside cache-key construction (the function's output is a
|
|
8
|
+
* pure function of its inputs).
|
|
9
|
+
*
|
|
10
|
+
* The decision carries:
|
|
11
|
+
* - the chosen {@link MemoryBackendId},
|
|
12
|
+
* - the predicted category (and optional ground-truth for telemetry),
|
|
13
|
+
* - the estimated USD cost of the routing pick,
|
|
14
|
+
* - the budget ceiling (if any) and whether the pick exceeded it,
|
|
15
|
+
* - a human-readable reason explaining the routing path taken.
|
|
16
|
+
*
|
|
17
|
+
* @module @framers/agentos/memory-router/select-backend
|
|
18
|
+
*/
|
|
19
|
+
/**
|
|
20
|
+
* Thrown when the predicted category is not in the routing table. Should
|
|
21
|
+
* never fire with the three shipping presets (each covers all six
|
|
22
|
+
* categories) but guards custom-table misuse.
|
|
23
|
+
*/
|
|
24
|
+
export class MemoryRouterUnknownCategoryError extends Error {
|
|
25
|
+
constructor(category) {
|
|
26
|
+
super(`MemoryRouter: category '${category}' not in routing table`);
|
|
27
|
+
this.category = category;
|
|
28
|
+
this.name = 'MemoryRouterUnknownCategoryError';
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Thrown by `hard` budget mode when the routing-table pick exceeds the
|
|
33
|
+
* per-query USD ceiling. Carries the picked backend + cost + budget so
|
|
34
|
+
* application-layer fallbacks can decide what to do (fall back to a
|
|
35
|
+
* different memory architecture, return a typed 402 to the user, etc).
|
|
36
|
+
*/
|
|
37
|
+
export class MemoryRouterBudgetExceededError extends Error {
|
|
38
|
+
constructor(backend, cost, budget) {
|
|
39
|
+
super(`MemoryRouter: backend '${backend}' cost $${cost.toFixed(4)} ` +
|
|
40
|
+
`exceeds hard budget $${budget.toFixed(4)}`);
|
|
41
|
+
this.backend = backend;
|
|
42
|
+
this.cost = cost;
|
|
43
|
+
this.budget = budget;
|
|
44
|
+
this.name = 'MemoryRouterBudgetExceededError';
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Pure routing decision: maps a predicted category to a backend choice
|
|
49
|
+
* given a routing table + budget policy + cost-points data.
|
|
50
|
+
*
|
|
51
|
+
* Algorithm:
|
|
52
|
+
* 1. Look up the table's preferred backend for the predicted category.
|
|
53
|
+
* Throw if missing (custom-table misuse).
|
|
54
|
+
* 2. If no budget is set, return the table's pick.
|
|
55
|
+
* 3. If the pick fits the budget, return it.
|
|
56
|
+
* 4. If the pick exceeds:
|
|
57
|
+
* - `hard`: throw {@link MemoryRouterBudgetExceededError}.
|
|
58
|
+
* - `cheapest-fallback`: pick the cheapest backend that fits;
|
|
59
|
+
* if none fits, pick the absolute cheapest and flag exceeded.
|
|
60
|
+
* - `soft`: keep the pick if its $/correct beats the cheapest fits;
|
|
61
|
+
* otherwise downgrade to the cheapest fits. Globally-no-fit case
|
|
62
|
+
* falls through to absolute-cheapest with budgetExceeded=true.
|
|
63
|
+
*
|
|
64
|
+
* @param args
|
|
65
|
+
* @param args.predictedCategory - Category predicted by the LLM-as-judge classifier.
|
|
66
|
+
* @param args.groundTruthCategory - Gold-label category for telemetry, or null in production.
|
|
67
|
+
* @param args.config - Routing table + budget policy + cost-points map.
|
|
68
|
+
*
|
|
69
|
+
* @returns A {@link MemoryRoutingDecision} describing the chosen backend.
|
|
70
|
+
*
|
|
71
|
+
* @throws {@link MemoryRouterUnknownCategoryError} when the table does not
|
|
72
|
+
* cover `predictedCategory`.
|
|
73
|
+
* @throws {@link MemoryRouterBudgetExceededError} when `budgetMode === 'hard'`
|
|
74
|
+
* and the routing-table pick exceeds the budget.
|
|
75
|
+
*
|
|
76
|
+
* @example
|
|
77
|
+
* ```ts
|
|
78
|
+
* const decision = selectBackend({
|
|
79
|
+
* predictedCategory: 'multi-session',
|
|
80
|
+
* groundTruthCategory: null,
|
|
81
|
+
* config: {
|
|
82
|
+
* table: MINIMIZE_COST_TABLE,
|
|
83
|
+
* budgetPerQuery: 0.05,
|
|
84
|
+
* budgetMode: 'cheapest-fallback',
|
|
85
|
+
* backendCosts: DEFAULT_MEMORY_BACKEND_COSTS,
|
|
86
|
+
* },
|
|
87
|
+
* });
|
|
88
|
+
* console.log(decision.chosenBackend); // 'observational-memory-v11' (fits)
|
|
89
|
+
* ```
|
|
90
|
+
*/
|
|
91
|
+
export function selectBackend(args) {
|
|
92
|
+
const { predictedCategory, groundTruthCategory, config } = args;
|
|
93
|
+
const { table, budgetPerQuery, budgetMode, backendCosts } = config;
|
|
94
|
+
// 1. Validate: category must be in routing table.
|
|
95
|
+
const picked = table.defaultMapping[predictedCategory];
|
|
96
|
+
if (!picked) {
|
|
97
|
+
throw new MemoryRouterUnknownCategoryError(predictedCategory);
|
|
98
|
+
}
|
|
99
|
+
// 2. Compute per-query cost for the picked backend on this category.
|
|
100
|
+
const pickedCost = backendCosts[picked].perCategoryCostPerQuery[predictedCategory];
|
|
101
|
+
// 3. Budget pass-through: no budget OR pick fits.
|
|
102
|
+
if (budgetPerQuery === null || pickedCost <= budgetPerQuery) {
|
|
103
|
+
return {
|
|
104
|
+
predictedCategory,
|
|
105
|
+
groundTruthCategory,
|
|
106
|
+
chosenBackend: picked,
|
|
107
|
+
chosenBackendReason: budgetPerQuery === null
|
|
108
|
+
? 'routing-table pick, no budget'
|
|
109
|
+
: 'routing-table pick fits budget',
|
|
110
|
+
estimatedCostUsd: pickedCost,
|
|
111
|
+
budgetCeiling: budgetPerQuery,
|
|
112
|
+
budgetExceeded: false,
|
|
113
|
+
preset: table.preset,
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
// 4. Budget exceeded. Hard mode bails immediately.
|
|
117
|
+
if (budgetMode === 'hard') {
|
|
118
|
+
throw new MemoryRouterBudgetExceededError(picked, pickedCost, budgetPerQuery);
|
|
119
|
+
}
|
|
120
|
+
// Find the cheapest backend that fits the budget on this category.
|
|
121
|
+
const candidates = Object.values(backendCosts).map((c) => ({
|
|
122
|
+
backend: c.backend,
|
|
123
|
+
cost: c.perCategoryCostPerQuery[predictedCategory],
|
|
124
|
+
}));
|
|
125
|
+
const fits = candidates.filter((c) => c.cost <= budgetPerQuery);
|
|
126
|
+
const cheapestFits = fits.length > 0
|
|
127
|
+
? fits.reduce((a, b) => (a.cost <= b.cost ? a : b))
|
|
128
|
+
: null;
|
|
129
|
+
// No backend fits at all -> globally cheapest with budgetExceeded=true.
|
|
130
|
+
if (!cheapestFits) {
|
|
131
|
+
const globallyCheapest = candidates.reduce((a, b) => a.cost <= b.cost ? a : b);
|
|
132
|
+
return {
|
|
133
|
+
predictedCategory,
|
|
134
|
+
groundTruthCategory,
|
|
135
|
+
chosenBackend: globallyCheapest.backend,
|
|
136
|
+
chosenBackendReason: 'no backend fits budget; picking absolute cheapest',
|
|
137
|
+
estimatedCostUsd: globallyCheapest.cost,
|
|
138
|
+
budgetCeiling: budgetPerQuery,
|
|
139
|
+
budgetExceeded: true,
|
|
140
|
+
preset: table.preset,
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
// cheapest-fallback: silently downgrade.
|
|
144
|
+
if (budgetMode === 'cheapest-fallback') {
|
|
145
|
+
return {
|
|
146
|
+
predictedCategory,
|
|
147
|
+
groundTruthCategory,
|
|
148
|
+
chosenBackend: cheapestFits.backend,
|
|
149
|
+
chosenBackendReason: 'budget downgrade (cheapest-fallback mode)',
|
|
150
|
+
estimatedCostUsd: cheapestFits.cost,
|
|
151
|
+
budgetCeiling: budgetPerQuery,
|
|
152
|
+
budgetExceeded: false,
|
|
153
|
+
preset: table.preset,
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
// soft: keep the pick only if it's better $/correct than cheapest-fits.
|
|
157
|
+
const pickedAcc = backendCosts[picked].perCategoryAccuracy[predictedCategory];
|
|
158
|
+
const cheapestAcc = backendCosts[cheapestFits.backend].perCategoryAccuracy[predictedCategory];
|
|
159
|
+
// Edge case: picked has zero accuracy -> always downgrade.
|
|
160
|
+
if (pickedAcc === 0) {
|
|
161
|
+
return {
|
|
162
|
+
predictedCategory,
|
|
163
|
+
groundTruthCategory,
|
|
164
|
+
chosenBackend: cheapestFits.backend,
|
|
165
|
+
chosenBackendReason: 'soft budget downgrade: picked has 0 acc on category',
|
|
166
|
+
estimatedCostUsd: cheapestFits.cost,
|
|
167
|
+
budgetCeiling: budgetPerQuery,
|
|
168
|
+
budgetExceeded: false,
|
|
169
|
+
preset: table.preset,
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
// Edge case: cheapest has zero accuracy -> stay with picked even though exceeded.
|
|
173
|
+
if (cheapestAcc === 0) {
|
|
174
|
+
return {
|
|
175
|
+
predictedCategory,
|
|
176
|
+
groundTruthCategory,
|
|
177
|
+
chosenBackend: picked,
|
|
178
|
+
chosenBackendReason: 'soft exceed: cheapest has 0 acc',
|
|
179
|
+
estimatedCostUsd: pickedCost,
|
|
180
|
+
budgetCeiling: budgetPerQuery,
|
|
181
|
+
budgetExceeded: true,
|
|
182
|
+
preset: table.preset,
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
const pickedCPC = pickedCost / pickedAcc;
|
|
186
|
+
const cheapestCPC = cheapestFits.cost / cheapestAcc;
|
|
187
|
+
if (pickedCPC <= cheapestCPC) {
|
|
188
|
+
return {
|
|
189
|
+
predictedCategory,
|
|
190
|
+
groundTruthCategory,
|
|
191
|
+
chosenBackend: picked,
|
|
192
|
+
chosenBackendReason: 'soft exceed: better $/correct',
|
|
193
|
+
estimatedCostUsd: pickedCost,
|
|
194
|
+
budgetCeiling: budgetPerQuery,
|
|
195
|
+
budgetExceeded: true,
|
|
196
|
+
preset: table.preset,
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
return {
|
|
200
|
+
predictedCategory,
|
|
201
|
+
groundTruthCategory,
|
|
202
|
+
chosenBackend: cheapestFits.backend,
|
|
203
|
+
chosenBackendReason: 'soft budget downgrade: cheaper $/correct',
|
|
204
|
+
estimatedCostUsd: cheapestFits.cost,
|
|
205
|
+
budgetCeiling: budgetPerQuery,
|
|
206
|
+
budgetExceeded: false,
|
|
207
|
+
preset: table.preset,
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
//# sourceMappingURL=select-backend.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"select-backend.js","sourceRoot":"","sources":["../../src/memory-router/select-backend.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@framers/agentos",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.7",
|
|
4
4
|
"description": "Modular AgentOS orchestration library",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -258,6 +258,11 @@
|
|
|
258
258
|
"default": "./dist/query-router/index.js",
|
|
259
259
|
"types": "./dist/query-router/index.d.ts"
|
|
260
260
|
},
|
|
261
|
+
"./memory-router": {
|
|
262
|
+
"import": "./dist/memory-router/index.js",
|
|
263
|
+
"default": "./dist/memory-router/index.js",
|
|
264
|
+
"types": "./dist/memory-router/index.d.ts"
|
|
265
|
+
},
|
|
261
266
|
"./memory/index": {
|
|
262
267
|
"import": "./dist/memory/index.js",
|
|
263
268
|
"default": "./dist/memory/index.js",
|