@msm-core/mini 0.1.0 → 0.3.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/CHANGELOG.md +87 -0
- package/dist/adapters/index.d.ts +2 -0
- package/dist/adapters/index.d.ts.map +1 -1
- package/dist/brain/anthropic.d.ts.map +1 -1
- package/dist/brain/anthropic.js +14 -5
- package/dist/brain/anthropic.js.map +1 -1
- package/dist/brain/gemini.d.ts.map +1 -1
- package/dist/brain/gemini.js +1 -1
- package/dist/brain/gemini.js.map +1 -1
- package/dist/brain/ollama.d.ts.map +1 -1
- package/dist/brain/ollama.js +1 -0
- package/dist/brain/ollama.js.map +1 -1
- package/dist/brain/openai.d.ts.map +1 -1
- package/dist/brain/openai.js +16 -12
- package/dist/brain/openai.js.map +1 -1
- package/dist/brain/pricing.d.ts +28 -0
- package/dist/brain/pricing.d.ts.map +1 -0
- package/dist/brain/pricing.js +53 -0
- package/dist/brain/pricing.js.map +1 -0
- package/dist/bridge/pipeline.d.ts +67 -0
- package/dist/bridge/pipeline.d.ts.map +1 -0
- package/dist/bridge/pipeline.js +105 -0
- package/dist/bridge/pipeline.js.map +1 -0
- package/dist/core/guards.d.ts.map +1 -1
- package/dist/core/guards.js +15 -3
- package/dist/core/guards.js.map +1 -1
- package/dist/core/loop.d.ts.map +1 -1
- package/dist/core/loop.js +100 -20
- package/dist/core/loop.js.map +1 -1
- package/dist/core/types.d.ts +76 -4
- package/dist/core/types.d.ts.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +17 -0
- package/dist/server.js.map +1 -1
- package/package.json +24 -11
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
# Changelog — @msm-core/mini
|
|
2
|
+
|
|
3
|
+
All notable changes are documented here.
|
|
4
|
+
Follows [Semantic Versioning](https://semver.org/).
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## [0.3.0] — 2026-06-09
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
|
|
12
|
+
- **`kill()` now actually halts a task.** The control bus writes `kill:<reason>` but the guard
|
|
13
|
+
checked `=== "kill"`, so `agent.kill()` silently no-op'd. The guard now matches the base verb.
|
|
14
|
+
|
|
15
|
+
### Added
|
|
16
|
+
|
|
17
|
+
- **Bounded brain calls.** Each `brain.run` is raced against the remaining time budget
|
|
18
|
+
(`runWithTimeout` + `AbortController`); a hung LLM call can no longer block the loop forever.
|
|
19
|
+
`BrainRunInput.signal` is threaded to all providers so they can cancel the underlying request.
|
|
20
|
+
- **Real cost guard.** New `computeCostUsd` (per-million pricing table); the OpenAI and Anthropic
|
|
21
|
+
brains now populate `costUsd`, so `costCapPerTask` is enforceable (was Gemini-only).
|
|
22
|
+
- **Optional output gate.** `AgentConfig.validator` runs on the terminal response — `block`
|
|
23
|
+
suppresses the text (outcome `"suppressed"`), `review`/`release` deliver it and attach the
|
|
24
|
+
result to `outcome.validation`. Structurally compatible with `@msm-core/validate`; fails safe.
|
|
25
|
+
- **Multi-tenant Redis scoping.** Optional `AgentEvent.tenantContext` namespaces all Redis keys to
|
|
26
|
+
`{prefix}:{companyId}:{agentType}`; `kill`/`pause`/`resume` accept the tenant. Per-request
|
|
27
|
+
`guardsOverride`. `RedisLike` is now exported from `@msm-core/mini/adapters`.
|
|
28
|
+
- First integration tests of the core loop, plus pricing tests.
|
|
29
|
+
|
|
30
|
+
### Changed
|
|
31
|
+
|
|
32
|
+
- Default Anthropic model `claude-3-5-sonnet-20241022` (retired) → `claude-sonnet-4-6`.
|
|
33
|
+
- Removed the unused `zod` dependency.
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## [0.2.0] — 2026-06-01
|
|
38
|
+
|
|
39
|
+
### Added
|
|
40
|
+
|
|
41
|
+
- **Redis client sharing** — `RedisConfig` now accepts `client?: RedisLike` in addition to
|
|
42
|
+
`url?: string`. Pass your application's existing Redis connection to avoid a second pool.
|
|
43
|
+
Existing `{ url: "redis://..." }` configs work unchanged.
|
|
44
|
+
- **`wrapPipeline` bridge** (`@msm-core/mini/bridge`) — adapts any `@msm-core/pipeline`
|
|
45
|
+
instance to mini's `Brain` interface. Enables the mini + context + pipeline pattern without
|
|
46
|
+
either package depending on the other (duck-typed `PipelineLike` interface).
|
|
47
|
+
- Field mapping: `brain.action` → `orchestration.action`, `brain.response_text` →
|
|
48
|
+
`generation.response_text`, tool results shape converted automatically.
|
|
49
|
+
|
|
50
|
+
### Changed
|
|
51
|
+
|
|
52
|
+
- `RedisConfig.url` is now optional (was required). At least one of `url` or `client` must be
|
|
53
|
+
provided — a descriptive error is thrown at runtime if neither is set.
|
|
54
|
+
|
|
55
|
+
### Example — shared Redis client
|
|
56
|
+
|
|
57
|
+
```typescript
|
|
58
|
+
import { createAgent } from "@msm-core/mini";
|
|
59
|
+
const agent = createAgent({
|
|
60
|
+
brain,
|
|
61
|
+
redis: { client: myRedisInstance },
|
|
62
|
+
tools: [],
|
|
63
|
+
});
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### Example — pipeline bridge
|
|
67
|
+
|
|
68
|
+
```typescript
|
|
69
|
+
import { wrapPipeline } from "@msm-core/mini/bridge";
|
|
70
|
+
const agent = createAgent({
|
|
71
|
+
brain: wrapPipeline(pipeline),
|
|
72
|
+
redis: { url },
|
|
73
|
+
tools: [],
|
|
74
|
+
});
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
## [0.1.0] — 2025-xx-xx
|
|
80
|
+
|
|
81
|
+
### Added
|
|
82
|
+
|
|
83
|
+
- Initial release: agent execution loop, guards, tool dispatch, Redis session management.
|
|
84
|
+
- `createAgent`, `createGeminiBrain`, `createOpenAIBrain`, `parseDefinition`.
|
|
85
|
+
- Distributed kill/pause control bus.
|
|
86
|
+
- Tool deduplication cache.
|
|
87
|
+
- 43 vitest tests.
|
package/dist/adapters/index.d.ts
CHANGED
|
@@ -6,4 +6,6 @@ export type { SessionMetadata } from "./redis-memory.js";
|
|
|
6
6
|
export { RedisControlBus } from "./redis-control.js";
|
|
7
7
|
export { RedisDistributedLock } from "./redis-lock.js";
|
|
8
8
|
export type { LockHandle } from "./redis-lock.js";
|
|
9
|
+
/** The client shape RedisConfig.client expects — for wiring a custom client. */
|
|
10
|
+
export type { RedisLike } from "./redis-types.js";
|
|
9
11
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC9D,YAAY,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC9D,YAAY,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,gFAAgF;AAChF,YAAY,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../src/brain/anthropic.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,KAAK,EAIN,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../src/brain/anthropic.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,KAAK,EAIN,MAAM,YAAY,CAAC;AAIpB,wBAAgB,oBAAoB,CAAC,IAAI,EAAE;IACzC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,KAAK,CAwFR"}
|
package/dist/brain/anthropic.js
CHANGED
|
@@ -2,8 +2,11 @@
|
|
|
2
2
|
* Anthropic Brain — Claude via Messages API.
|
|
3
3
|
* Peer dependency: @anthropic-ai/sdk >= 0.20.0
|
|
4
4
|
*/
|
|
5
|
+
import { computeCostUsd } from "./pricing.js";
|
|
5
6
|
export function createAnthropicBrain(opts) {
|
|
6
|
-
|
|
7
|
+
// claude-3-5-sonnet-20241022 was retired (2025-10-28); claude-sonnet-4-6 is
|
|
8
|
+
// its current drop-in replacement.
|
|
9
|
+
const model = opts.model ?? "claude-sonnet-4-6";
|
|
7
10
|
return {
|
|
8
11
|
name: "anthropic",
|
|
9
12
|
async run(input) {
|
|
@@ -44,8 +47,11 @@ export function createAnthropicBrain(opts) {
|
|
|
44
47
|
...baseParams,
|
|
45
48
|
tools: tools,
|
|
46
49
|
}
|
|
47
|
-
: baseParams);
|
|
50
|
+
: baseParams, input.signal ? { signal: input.signal } : {});
|
|
48
51
|
const content = response.content;
|
|
52
|
+
const inputTokens = response.usage.input_tokens;
|
|
53
|
+
const outputTokens = response.usage.output_tokens;
|
|
54
|
+
const costUsd = computeCostUsd(model, inputTokens, outputTokens);
|
|
49
55
|
// Tool use
|
|
50
56
|
const toolUseBlock = content.find((b) => b.type === "tool_use");
|
|
51
57
|
if (toolUseBlock && toolUseBlock.type === "tool_use") {
|
|
@@ -55,17 +61,20 @@ export function createAnthropicBrain(opts) {
|
|
|
55
61
|
tool_name: toolUseBlock.name,
|
|
56
62
|
tool_params: toolUseBlock.input,
|
|
57
63
|
};
|
|
58
|
-
return {
|
|
64
|
+
return {
|
|
65
|
+
orchestration,
|
|
66
|
+
usage: { inputTokens, outputTokens },
|
|
67
|
+
costUsd,
|
|
68
|
+
};
|
|
59
69
|
}
|
|
60
70
|
// Text
|
|
61
71
|
const textBlock = content.find((b) => b.type === "text");
|
|
62
72
|
const text = textBlock && textBlock.type === "text" ? textBlock.text : "";
|
|
63
|
-
const inputTokens = response.usage.input_tokens;
|
|
64
|
-
const outputTokens = response.usage.output_tokens;
|
|
65
73
|
return {
|
|
66
74
|
generation: { response_text: text },
|
|
67
75
|
orchestration: { action: "respond", confidence: 0.95 },
|
|
68
76
|
usage: { inputTokens, outputTokens },
|
|
77
|
+
costUsd,
|
|
69
78
|
};
|
|
70
79
|
},
|
|
71
80
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../src/brain/anthropic.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../src/brain/anthropic.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../src/brain/gemini.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,KAAK,EAIN,MAAM,YAAY,CAAC;AAIpB,wBAAgB,iBAAiB,CAAC,IAAI,EAAE;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,KAAK,
|
|
1
|
+
{"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../src/brain/gemini.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,KAAK,EAIN,MAAM,YAAY,CAAC;AAIpB,wBAAgB,iBAAiB,CAAC,IAAI,EAAE;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,KAAK,CAkHR"}
|
package/dist/brain/gemini.js
CHANGED
|
@@ -49,7 +49,7 @@ export function createGeminiBrain(opts) {
|
|
|
49
49
|
tools: tools,
|
|
50
50
|
}
|
|
51
51
|
: { systemInstruction: input.system_context, contents };
|
|
52
|
-
const result = await geminiModel.generateContent(request);
|
|
52
|
+
const result = await geminiModel.generateContent(request, input.signal ? { signal: input.signal } : {});
|
|
53
53
|
const response = result.response;
|
|
54
54
|
const parts = response?.candidates?.[0]?.content?.parts ?? [];
|
|
55
55
|
// Check for function call
|
package/dist/brain/gemini.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../src/brain/gemini.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAG3D,MAAM,UAAU,iBAAiB,CAAC,IAGjC;IACC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,kBAAkB,CAAC;IAE/C,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,KAAK,CAAC,GAAG,CAAC,KAAoB;YAC5B,MAAM,MAAM,GACV,IAAI,CAAC,MAAM;gBACX,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;gBAC7B,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;YAChC,IAAI,CAAC,MAAM;gBAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;YAEjE,MAAM,KAAK,GAAG,IAAI,kBAAkB,CAAC,MAAM,CAAC,CAAC;YAC7C,MAAM,WAAW,GAAG,KAAK,CAAC,kBAAkB,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YAExD,uDAAuD;YACvD,MAAM,QAAQ,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;YAE5C,8BAA8B;YAC9B,MAAM,KAAK,GACT,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;gBACpB,CAAC,CAAC;oBACE;wBACE,oBAAoB,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;4BAC5C,IAAI,EAAE,CAAC,CAAC,IAAI;4BACZ,WAAW,EAAE,CAAC,CAAC,WAAW;4BAC1B,UAAU,EAAE;gCACV,IAAI,EAAE,QAAiB;gCACvB,UAAU,EAAE,MAAM,CAAC,WAAW,CAC5B,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;oCAC3C,CAAC;oCACD;wCACE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE;wCAC1B,WAAW,EAAE,CAAC,CAAC,WAAW;wCAC1B,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qCACpC;iCACF,CAAC,CACH;gCACD,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC;qCACnC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;qCAC7B,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;6BACnB;yBACF,CAAC,CAAC;qBACJ;iBACF;gBACH,CAAC,CAAC,SAAS,CAAC;YAEhB,MAAM,OAAO,GAA2B,KAAK;gBAC3C,CAAC,CAAC;oBACE,iBAAiB,EAAE,KAAK,CAAC,cAAc;oBACvC,QAAQ;oBACR,KAAK,EAAE,KAEN;iBACF;gBACH,CAAC,CAAC,EAAE,iBAAiB,EAAE,KAAK,CAAC,cAAc,EAAE,QAAQ,EAAE,CAAC;YAC1D,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,eAAe,
|
|
1
|
+
{"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../src/brain/gemini.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ollama.d.ts","sourceRoot":"","sources":["../../src/brain/ollama.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAmD,MAAM,YAAY,CAAC;AAEzF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,KAAK,
|
|
1
|
+
{"version":3,"file":"ollama.d.ts","sourceRoot":"","sources":["../../src/brain/ollama.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAmD,MAAM,YAAY,CAAC;AAEzF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,KAAK,CA0CR"}
|
package/dist/brain/ollama.js
CHANGED
|
@@ -17,6 +17,7 @@ export function createOllamaBrain(opts) {
|
|
|
17
17
|
method: "POST",
|
|
18
18
|
headers: { "Content-Type": "application/json" },
|
|
19
19
|
body: JSON.stringify({ model, messages, stream: false }),
|
|
20
|
+
...(input.signal ? { signal: input.signal } : {}),
|
|
20
21
|
});
|
|
21
22
|
if (!response.ok) {
|
|
22
23
|
throw new Error(`Ollama error: ${response.status} ${response.statusText}`);
|
package/dist/brain/ollama.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ollama.js","sourceRoot":"","sources":["../../src/brain/ollama.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,UAAU,iBAAiB,CAAC,IAGjC;IACC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,wBAAwB,CAAC;IAC7F,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,UAAU,CAAC;IAEvC,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,KAAK,CAAC,GAAG,CAAC,KAAoB;YAC5B,MAAM,QAAQ,GAAG;gBACf,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAC,cAAc,EAAE;gBACjD,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;gBACnE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,GAAG,EAAE;aACrC,CAAC;YAEF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,QAAQ,WAAW,EAAE;gBACnD,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;gBAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"ollama.js","sourceRoot":"","sources":["../../src/brain/ollama.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,UAAU,iBAAiB,CAAC,IAGjC;IACC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,wBAAwB,CAAC;IAC7F,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,UAAU,CAAC;IAEvC,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,KAAK,CAAC,GAAG,CAAC,KAAoB;YAC5B,MAAM,QAAQ,GAAG;gBACf,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAC,cAAc,EAAE;gBACjD,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;gBACnE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,GAAG,EAAE;aACrC,CAAC;YAEF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,QAAQ,WAAW,EAAE;gBACnD,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;gBAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;gBACxD,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAClD,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,iBAAiB,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;YAC7E,CAAC;YAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAIlC,CAAC;YAEF,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,OAAO,IAAI,EAAE,CAAC;YACzC,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC;YAC3C,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC;YACrC,OAAO;gBACL,UAAU,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE;gBACnC,aAAa,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAwB;gBAC5E,GAAG,CAAC,WAAW,KAAK,SAAS,IAAI,YAAY,KAAK,SAAS;oBACzD,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;oBAC/H,CAAC,CAAC,EAAE,CAAC;aACR,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../src/brain/openai.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,KAAK,EAIN,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../src/brain/openai.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,KAAK,EAIN,MAAM,YAAY,CAAC;AAIpB,wBAAgB,iBAAiB,CAAC,IAAI,EAAE;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,KAAK,CA+GR"}
|
package/dist/brain/openai.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* OpenAI Brain — wraps the OpenAI Chat Completions API.
|
|
3
3
|
* Peer dependency: openai >= 4.0.0
|
|
4
4
|
*/
|
|
5
|
+
import { computeCostUsd } from "./pricing.js";
|
|
5
6
|
export function createOpenAIBrain(opts) {
|
|
6
7
|
const model = opts.model ?? "gpt-4o-mini";
|
|
7
8
|
return {
|
|
@@ -51,11 +52,23 @@ export function createOpenAIBrain(opts) {
|
|
|
51
52
|
tool_choice: "auto",
|
|
52
53
|
}
|
|
53
54
|
: { model, messages: messages };
|
|
54
|
-
const response = await client.chat.completions.create(body);
|
|
55
|
+
const response = await client.chat.completions.create(body, input.signal ? { signal: input.signal } : {});
|
|
55
56
|
const choice = response.choices[0];
|
|
56
57
|
if (!choice)
|
|
57
58
|
return {};
|
|
58
59
|
const msg = choice.message;
|
|
60
|
+
const inputTokens = response.usage?.prompt_tokens;
|
|
61
|
+
const outputTokens = response.usage?.completion_tokens;
|
|
62
|
+
const costUsd = computeCostUsd(model, inputTokens, outputTokens);
|
|
63
|
+
const usageBlock = inputTokens !== undefined || outputTokens !== undefined
|
|
64
|
+
? {
|
|
65
|
+
usage: {
|
|
66
|
+
...(inputTokens !== undefined ? { inputTokens } : {}),
|
|
67
|
+
...(outputTokens !== undefined ? { outputTokens } : {}),
|
|
68
|
+
},
|
|
69
|
+
costUsd,
|
|
70
|
+
}
|
|
71
|
+
: {};
|
|
59
72
|
// Tool call response
|
|
60
73
|
if (msg.tool_calls?.length) {
|
|
61
74
|
const call = msg.tool_calls[0];
|
|
@@ -73,22 +86,13 @@ export function createOpenAIBrain(opts) {
|
|
|
73
86
|
tool_name: call.function?.name ?? "",
|
|
74
87
|
tool_params: params,
|
|
75
88
|
};
|
|
76
|
-
return { orchestration };
|
|
89
|
+
return { orchestration, ...usageBlock };
|
|
77
90
|
}
|
|
78
91
|
const text = msg.content ?? "";
|
|
79
|
-
const inputTokens = response.usage?.prompt_tokens;
|
|
80
|
-
const outputTokens = response.usage?.completion_tokens;
|
|
81
92
|
return {
|
|
82
93
|
generation: { response_text: text },
|
|
83
94
|
orchestration: { action: "respond", confidence: 0.95 },
|
|
84
|
-
...
|
|
85
|
-
? {
|
|
86
|
-
usage: {
|
|
87
|
-
...(inputTokens !== undefined ? { inputTokens } : {}),
|
|
88
|
-
...(outputTokens !== undefined ? { outputTokens } : {}),
|
|
89
|
-
},
|
|
90
|
-
}
|
|
91
|
-
: {}),
|
|
95
|
+
...usageBlock,
|
|
92
96
|
};
|
|
93
97
|
},
|
|
94
98
|
};
|
package/dist/brain/openai.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/brain/openai.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/brain/openai.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Token pricing — turns reported token usage into a USD cost so the loop's
|
|
3
|
+
* cost-cap guard (`costCapPerTask`) is actually enforceable.
|
|
4
|
+
*
|
|
5
|
+
* Without this, only the Gemini brain populated `costUsd`, so the cost guard
|
|
6
|
+
* was inert for OpenAI/Anthropic (they reported `usage` but no cost).
|
|
7
|
+
*
|
|
8
|
+
* Prices are USD per 1M tokens. THESE DRIFT — verify periodically:
|
|
9
|
+
* - Anthropic: confirmed via the claude-api reference, 2026-06.
|
|
10
|
+
* - OpenAI: public pricing (https://openai.com/api/pricing) — re-check on bumps.
|
|
11
|
+
* Unknown models resolve to 0 (cost simply isn't tracked) rather than throwing,
|
|
12
|
+
* so an unrecognised model never breaks the loop — it just disables the cap.
|
|
13
|
+
*/
|
|
14
|
+
export interface TokenPrice {
|
|
15
|
+
/** USD per 1M input tokens */
|
|
16
|
+
input: number;
|
|
17
|
+
/** USD per 1M output tokens */
|
|
18
|
+
output: number;
|
|
19
|
+
}
|
|
20
|
+
/** Keyed by model id (or id prefix — see resolution in {@link computeCostUsd}). */
|
|
21
|
+
export declare const PRICE_PER_MILLION: Record<string, TokenPrice>;
|
|
22
|
+
/**
|
|
23
|
+
* Cost in USD for one call. Returns 0 when the model is unknown or usage is
|
|
24
|
+
* missing. Resolves dated/aliased ids (e.g. `gpt-4o-mini-2024-07-18`) by
|
|
25
|
+
* longest-prefix match against the table.
|
|
26
|
+
*/
|
|
27
|
+
export declare function computeCostUsd(model: string, inputTokens?: number, outputTokens?: number): number;
|
|
28
|
+
//# sourceMappingURL=pricing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pricing.d.ts","sourceRoot":"","sources":["../../src/brain/pricing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,MAAM,WAAW,UAAU;IACzB,8BAA8B;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,+BAA+B;IAC/B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,mFAAmF;AACnF,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAYxD,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,MAAM,EACb,WAAW,CAAC,EAAE,MAAM,EACpB,YAAY,CAAC,EAAE,MAAM,GACpB,MAAM,CAMR"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Token pricing — turns reported token usage into a USD cost so the loop's
|
|
3
|
+
* cost-cap guard (`costCapPerTask`) is actually enforceable.
|
|
4
|
+
*
|
|
5
|
+
* Without this, only the Gemini brain populated `costUsd`, so the cost guard
|
|
6
|
+
* was inert for OpenAI/Anthropic (they reported `usage` but no cost).
|
|
7
|
+
*
|
|
8
|
+
* Prices are USD per 1M tokens. THESE DRIFT — verify periodically:
|
|
9
|
+
* - Anthropic: confirmed via the claude-api reference, 2026-06.
|
|
10
|
+
* - OpenAI: public pricing (https://openai.com/api/pricing) — re-check on bumps.
|
|
11
|
+
* Unknown models resolve to 0 (cost simply isn't tracked) rather than throwing,
|
|
12
|
+
* so an unrecognised model never breaks the loop — it just disables the cap.
|
|
13
|
+
*/
|
|
14
|
+
/** Keyed by model id (or id prefix — see resolution in {@link computeCostUsd}). */
|
|
15
|
+
export const PRICE_PER_MILLION = {
|
|
16
|
+
// Anthropic (claude-api reference, 2026-06)
|
|
17
|
+
"claude-opus-4-8": { input: 5, output: 25 },
|
|
18
|
+
"claude-opus-4-7": { input: 5, output: 25 },
|
|
19
|
+
"claude-opus-4-6": { input: 5, output: 25 },
|
|
20
|
+
"claude-sonnet-4-6": { input: 3, output: 15 },
|
|
21
|
+
"claude-haiku-4-5": { input: 1, output: 5 },
|
|
22
|
+
// OpenAI (public pricing — verify on changes)
|
|
23
|
+
"gpt-4o-mini": { input: 0.15, output: 0.6 },
|
|
24
|
+
"gpt-4o": { input: 2.5, output: 10 },
|
|
25
|
+
// Google Gemini (public pricing)
|
|
26
|
+
"gemini-2.5-flash": { input: 0.075, output: 0.3 },
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* Cost in USD for one call. Returns 0 when the model is unknown or usage is
|
|
30
|
+
* missing. Resolves dated/aliased ids (e.g. `gpt-4o-mini-2024-07-18`) by
|
|
31
|
+
* longest-prefix match against the table.
|
|
32
|
+
*/
|
|
33
|
+
export function computeCostUsd(model, inputTokens, outputTokens) {
|
|
34
|
+
const price = resolvePrice(model);
|
|
35
|
+
if (!price)
|
|
36
|
+
return 0;
|
|
37
|
+
const inTok = inputTokens ?? 0;
|
|
38
|
+
const outTok = outputTokens ?? 0;
|
|
39
|
+
return (inTok * price.input + outTok * price.output) / 1_000_000;
|
|
40
|
+
}
|
|
41
|
+
function resolvePrice(model) {
|
|
42
|
+
if (PRICE_PER_MILLION[model])
|
|
43
|
+
return PRICE_PER_MILLION[model];
|
|
44
|
+
// Longest-prefix match so dated variants resolve to their base model.
|
|
45
|
+
let best;
|
|
46
|
+
for (const [key, price] of Object.entries(PRICE_PER_MILLION)) {
|
|
47
|
+
if (model.startsWith(key) && (!best || key.length > best.key.length)) {
|
|
48
|
+
best = { key, price };
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return best?.price;
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=pricing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pricing.js","sourceRoot":"","sources":["../../src/brain/pricing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AASH,mFAAmF;AACnF,MAAM,CAAC,MAAM,iBAAiB,GAA+B;IAC3D,4CAA4C;IAC5C,iBAAiB,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;IAC3C,iBAAiB,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;IAC3C,iBAAiB,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;IAC3C,mBAAmB,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;IAC7C,kBAAkB,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;IAC3C,8CAA8C;IAC9C,aAAa,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE;IAC3C,QAAQ,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE;IACpC,iCAAiC;IACjC,kBAAkB,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE;CAClD,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAC5B,KAAa,EACb,WAAoB,EACpB,YAAqB;IAErB,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IAClC,IAAI,CAAC,KAAK;QAAE,OAAO,CAAC,CAAC;IACrB,MAAM,KAAK,GAAG,WAAW,IAAI,CAAC,CAAC;IAC/B,MAAM,MAAM,GAAG,YAAY,IAAI,CAAC,CAAC;IACjC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,GAAG,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;AACnE,CAAC;AAED,SAAS,YAAY,CAAC,KAAa;IACjC,IAAI,iBAAiB,CAAC,KAAK,CAAC;QAAE,OAAO,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAC9D,sEAAsE;IACtE,IAAI,IAAoD,CAAC;IACzD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,CAAC;QAC7D,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YACrE,IAAI,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;QACxB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,EAAE,KAAK,CAAC;AACrB,CAAC"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* wrapPipeline — Connect @msm-core/pipeline to @msm-core/mini.
|
|
3
|
+
*
|
|
4
|
+
* Wraps a pipeline as a Brain so mini's agent loop can call it
|
|
5
|
+
* without either package knowing about the other.
|
|
6
|
+
*
|
|
7
|
+
* Usage:
|
|
8
|
+
* import { createPipeline } from "@msm-core/pipeline";
|
|
9
|
+
* import { wrapPipeline } from "@msm-core/mini/bridge";
|
|
10
|
+
* import { createAgent } from "@msm-core/mini";
|
|
11
|
+
*
|
|
12
|
+
* const pipeline = await createPipeline("./manifest.yaml");
|
|
13
|
+
* const agent = createAgent({ brain: wrapPipeline(pipeline), ... });
|
|
14
|
+
*
|
|
15
|
+
* The pipeline is duck-typed — no direct import of @msm-core/pipeline.
|
|
16
|
+
*/
|
|
17
|
+
import type { Brain } from "../core/types.js";
|
|
18
|
+
export interface PipelineLike {
|
|
19
|
+
run(input: {
|
|
20
|
+
raw: string;
|
|
21
|
+
modality: "text" | "voice" | "image";
|
|
22
|
+
history?: Array<{
|
|
23
|
+
role: "user" | "assistant";
|
|
24
|
+
content: string;
|
|
25
|
+
}>;
|
|
26
|
+
tools?: Array<{
|
|
27
|
+
name: string;
|
|
28
|
+
description: string;
|
|
29
|
+
parameters: Record<string, unknown>;
|
|
30
|
+
}>;
|
|
31
|
+
tool_results?: Array<{
|
|
32
|
+
tool_name: string;
|
|
33
|
+
status: string;
|
|
34
|
+
output?: unknown;
|
|
35
|
+
}>;
|
|
36
|
+
}): Promise<{
|
|
37
|
+
payload: {
|
|
38
|
+
brain?: {
|
|
39
|
+
action: string;
|
|
40
|
+
response_text?: string;
|
|
41
|
+
response_text_ar?: string;
|
|
42
|
+
tool_name?: string;
|
|
43
|
+
tool_params?: Record<string, unknown>;
|
|
44
|
+
reasoning?: string;
|
|
45
|
+
confidence?: number;
|
|
46
|
+
};
|
|
47
|
+
final_output?: {
|
|
48
|
+
text: string;
|
|
49
|
+
action_required?: boolean;
|
|
50
|
+
};
|
|
51
|
+
};
|
|
52
|
+
pipeline_status: "ok" | "failed";
|
|
53
|
+
}>;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Wrap an @msm-core/pipeline as a Brain for @msm-core/mini.
|
|
57
|
+
*
|
|
58
|
+
* Field mapping:
|
|
59
|
+
* mini BrainRunInput → pipeline MSMInput
|
|
60
|
+
* pipeline PipelineTrace → mini BrainPayload
|
|
61
|
+
*
|
|
62
|
+
* Note: mini tool_results use { tool, status, result }
|
|
63
|
+
* pipeline expects { tool_name, status, output }
|
|
64
|
+
* — this bridge converts between them automatically.
|
|
65
|
+
*/
|
|
66
|
+
export declare function wrapPipeline(pipeline: PipelineLike, name?: string): Brain;
|
|
67
|
+
//# sourceMappingURL=pipeline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../src/bridge/pipeline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EACV,KAAK,EAIN,MAAM,kBAAkB,CAAC;AAI1B,MAAM,WAAW,YAAY;IAC3B,GAAG,CAAC,KAAK,EAAE;QACT,GAAG,EAAE,MAAM,CAAC;QACZ,QAAQ,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;QACrC,OAAO,CAAC,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QACjE,KAAK,CAAC,EAAE,KAAK,CAAC;YACZ,IAAI,EAAE,MAAM,CAAC;YACb,WAAW,EAAE,MAAM,CAAC;YACpB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;SACrC,CAAC,CAAC;QACH,YAAY,CAAC,EAAE,KAAK,CAAC;YACnB,SAAS,EAAE,MAAM,CAAC;YAClB,MAAM,EAAE,MAAM,CAAC;YACf,MAAM,CAAC,EAAE,OAAO,CAAC;SAClB,CAAC,CAAC;KACJ,GAAG,OAAO,CAAC;QACV,OAAO,EAAE;YACP,KAAK,CAAC,EAAE;gBACN,MAAM,EAAE,MAAM,CAAC;gBACf,aAAa,CAAC,EAAE,MAAM,CAAC;gBACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;gBAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;gBACnB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBACtC,SAAS,CAAC,EAAE,MAAM,CAAC;gBACnB,UAAU,CAAC,EAAE,MAAM,CAAC;aACrB,CAAC;YACF,YAAY,CAAC,EAAE;gBAAE,IAAI,EAAE,MAAM,CAAC;gBAAC,eAAe,CAAC,EAAE,OAAO,CAAA;aAAE,CAAC;SAC5D,CAAC;QACF,eAAe,EAAE,IAAI,GAAG,QAAQ,CAAC;KAClC,CAAC,CAAC;CACJ;AAID;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,SAAa,GAAG,KAAK,CAgF7E"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* wrapPipeline — Connect @msm-core/pipeline to @msm-core/mini.
|
|
3
|
+
*
|
|
4
|
+
* Wraps a pipeline as a Brain so mini's agent loop can call it
|
|
5
|
+
* without either package knowing about the other.
|
|
6
|
+
*
|
|
7
|
+
* Usage:
|
|
8
|
+
* import { createPipeline } from "@msm-core/pipeline";
|
|
9
|
+
* import { wrapPipeline } from "@msm-core/mini/bridge";
|
|
10
|
+
* import { createAgent } from "@msm-core/mini";
|
|
11
|
+
*
|
|
12
|
+
* const pipeline = await createPipeline("./manifest.yaml");
|
|
13
|
+
* const agent = createAgent({ brain: wrapPipeline(pipeline), ... });
|
|
14
|
+
*
|
|
15
|
+
* The pipeline is duck-typed — no direct import of @msm-core/pipeline.
|
|
16
|
+
*/
|
|
17
|
+
// ─── Adapter ──────────────────────────────────────────────────
|
|
18
|
+
/**
|
|
19
|
+
* Wrap an @msm-core/pipeline as a Brain for @msm-core/mini.
|
|
20
|
+
*
|
|
21
|
+
* Field mapping:
|
|
22
|
+
* mini BrainRunInput → pipeline MSMInput
|
|
23
|
+
* pipeline PipelineTrace → mini BrainPayload
|
|
24
|
+
*
|
|
25
|
+
* Note: mini tool_results use { tool, status, result }
|
|
26
|
+
* pipeline expects { tool_name, status, output }
|
|
27
|
+
* — this bridge converts between them automatically.
|
|
28
|
+
*/
|
|
29
|
+
export function wrapPipeline(pipeline, name = "pipeline") {
|
|
30
|
+
return {
|
|
31
|
+
name,
|
|
32
|
+
async run(input) {
|
|
33
|
+
const result = await pipeline.run({
|
|
34
|
+
raw: input.raw,
|
|
35
|
+
modality: "text",
|
|
36
|
+
// Only pass user/assistant messages — filter out system/tool messages
|
|
37
|
+
history: input.history
|
|
38
|
+
.filter((m) => m.role === "user" || m.role === "assistant")
|
|
39
|
+
.map((m) => ({
|
|
40
|
+
role: m.role,
|
|
41
|
+
content: m.content,
|
|
42
|
+
})),
|
|
43
|
+
tools: input.tools.map((t) => ({
|
|
44
|
+
name: t.name,
|
|
45
|
+
description: t.description,
|
|
46
|
+
parameters: t.parameters,
|
|
47
|
+
})),
|
|
48
|
+
// Convert mini tool result shape → pipeline shape (only when present)
|
|
49
|
+
...(input.tool_results?.length
|
|
50
|
+
? {
|
|
51
|
+
tool_results: input.tool_results.map((r) => ({
|
|
52
|
+
tool_name: r.tool,
|
|
53
|
+
status: r.status,
|
|
54
|
+
output: r.result,
|
|
55
|
+
})),
|
|
56
|
+
}
|
|
57
|
+
: {}),
|
|
58
|
+
});
|
|
59
|
+
const brain = result.payload.brain;
|
|
60
|
+
// Normalise action — pipeline may return arbitrary strings; mini only knows these
|
|
61
|
+
const VALID_ACTIONS = new Set([
|
|
62
|
+
"use_tool",
|
|
63
|
+
"respond",
|
|
64
|
+
"clarify",
|
|
65
|
+
"escalate",
|
|
66
|
+
"delegate",
|
|
67
|
+
]);
|
|
68
|
+
const rawAction = brain?.action ?? "respond";
|
|
69
|
+
const action = VALID_ACTIONS.has(rawAction)
|
|
70
|
+
? rawAction
|
|
71
|
+
: "respond";
|
|
72
|
+
if (!brain) {
|
|
73
|
+
const payload = {
|
|
74
|
+
orchestration: { action: "respond", confidence: 0 },
|
|
75
|
+
};
|
|
76
|
+
if (result.payload.final_output) {
|
|
77
|
+
payload.final_output = result.payload.final_output;
|
|
78
|
+
}
|
|
79
|
+
return payload;
|
|
80
|
+
}
|
|
81
|
+
const orchestration = {
|
|
82
|
+
action,
|
|
83
|
+
confidence: brain.confidence ?? 0.9,
|
|
84
|
+
};
|
|
85
|
+
if (brain.tool_name !== undefined)
|
|
86
|
+
orchestration.tool_name = brain.tool_name;
|
|
87
|
+
if (brain.tool_params !== undefined)
|
|
88
|
+
orchestration.tool_params = brain.tool_params;
|
|
89
|
+
if (brain.reasoning !== undefined)
|
|
90
|
+
orchestration.reasoning = brain.reasoning;
|
|
91
|
+
const payload = { orchestration };
|
|
92
|
+
if (brain.response_text !== undefined) {
|
|
93
|
+
payload.generation = { response_text: brain.response_text };
|
|
94
|
+
if (brain.response_text_ar !== undefined) {
|
|
95
|
+
payload.generation.response_text_ar = brain.response_text_ar;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
if (result.payload.final_output !== undefined) {
|
|
99
|
+
payload.final_output = result.payload.final_output;
|
|
100
|
+
}
|
|
101
|
+
return payload;
|
|
102
|
+
},
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=pipeline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../src/bridge/pipeline.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guards.d.ts","sourceRoot":"","sources":["../../src/core/guards.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAErE,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC,WAAW,CAOhD,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,WAAW,CACzB,KAAK,EAAE,QAAQ,EACf,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,EAC7B,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,GAAG,IAAI,GAC5B,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"guards.d.ts","sourceRoot":"","sources":["../../src/core/guards.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAErE,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC,WAAW,CAOhD,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,WAAW,CACzB,KAAK,EAAE,QAAQ,EACf,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,EAC7B,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,GAAG,IAAI,GAC5B,WAAW,EAAE,CAsGf;AAED,uDAAuD;AACvD,wBAAgB,YAAY,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,OAAO,CAE5D;AAED,2DAA2D;AAC3D,wBAAgB,UAAU,CACxB,OAAO,EAAE,WAAW,EAAE,GACrB,WAAW,CAAC,QAAQ,CAAC,GAAG,SAAS,CAEnC;AAED,4CAA4C;AAC5C,wBAAgB,aAAa,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC,CASzE"}
|