@msm-core/mini 0.2.0 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/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 +31 -13
- 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/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 +137 -18
- package/dist/core/loop.js.map +1 -1
- package/dist/core/types.d.ts +62 -3
- 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 +15 -6
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":"AAAA;;;GAGG;AAQH,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAG9C,MAAM,UAAU,oBAAoB,CAAC,IAGpC;IACC,4EAA4E;IAC5E,mCAAmC;IACnC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,mBAAmB,CAAC;IAEhD,OAAO;QACL,IAAI,EAAE,WAAW;QACjB,KAAK,CAAC,GAAG,CAAC,KAAoB;YAC5B,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;YACjE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;YAC/D,IAAI,CAAC,MAAM;gBAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;YACpE,MAAM,MAAM,GAAkB,IAAI,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;YAExD,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACzC,IAAI,EAAE,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM;gBACnD,OAAO,EAAE,CAAC,CAAC,OAAO;aACnB,CAAC,CAAC,CAAC;YACJ,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;YAEpD,MAAM,KAAK,GACT,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;gBACpB,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBACtB,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,WAAW,EAAE,CAAC,CAAC,WAAW;oBAC1B,YAAY,EAAE;wBACZ,IAAI,EAAE,QAAQ;wBACd,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;4BAC3C,CAAC;4BACD,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE;yBAC7C,CAAC,CACH;wBACD,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC;6BACnC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;6BAC7B,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;qBACnB;iBACF,CAAC,CAAC;gBACL,CAAC,CAAC,SAAS,CAAC;YAGhB,MAAM,UAAU,GAAG;gBACjB,KAAK;gBACL,UAAU,EAAE,IAAI;gBAChB,MAAM,EAAE,KAAK,CAAC,cAAc;gBAC5B,QAAQ,EAAE,QAA+B;aAC1C,CAAC;YACF,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,CAC3C,KAAK;gBACH,CAAC,CAAC;oBACE,GAAG,UAAU;oBACb,KAAK,EAAE,KAAiD;iBACzD;gBACH,CAAC,CAAC,UAAU,EACd,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAC7C,CAAC;YAEF,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;YACjC,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC;YAChD,MAAM,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC;YAClD,MAAM,OAAO,GAAG,cAAc,CAAC,KAAK,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;YAEjE,WAAW;YACX,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;YAChE,IAAI,YAAY,IAAI,YAAY,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBACrD,MAAM,aAAa,GAAuB;oBACxC,MAAM,EAAE,UAAU;oBAClB,UAAU,EAAE,GAAG;oBACf,SAAS,EAAE,YAAY,CAAC,IAAI;oBAC5B,WAAW,EAAE,YAAY,CAAC,KAAgC;iBAC3D,CAAC;gBACF,OAAO;oBACL,aAAa;oBACb,KAAK,EAAE,EAAE,WAAW,EAAE,YAAY,EAAE;oBACpC,OAAO;iBACR,CAAC;YACJ,CAAC;YAED,OAAO;YACP,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;YACzD,MAAM,IAAI,GAAG,SAAS,IAAI,SAAS,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1E,OAAO;gBACL,UAAU,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE;gBACnC,aAAa,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE;gBACtD,KAAK,EAAE,EAAE,WAAW,EAAE,YAAY,EAAE;gBACpC,OAAO;aACR,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -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,CA8HR"}
|
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 {
|
|
@@ -12,13 +13,27 @@ export function createOpenAIBrain(opts) {
|
|
|
12
13
|
apiKey: opts.apiKey ?? process.env["OPENAI_API_KEY"],
|
|
13
14
|
...(opts.baseURL ? { baseURL: opts.baseURL } : {}),
|
|
14
15
|
});
|
|
16
|
+
// Fold prior tool results into the current user turn so the model can see
|
|
17
|
+
// what its tool calls returned. Without this the model never learns a tool
|
|
18
|
+
// already ran (or what it produced) and re-calls it forever — every model
|
|
19
|
+
// loops to the guard cap. The nudge steers it to answer once results suffice.
|
|
20
|
+
let userContent = input.raw;
|
|
21
|
+
if (input.tool_results?.length) {
|
|
22
|
+
const resultSummary = input.tool_results
|
|
23
|
+
.map((r) => `[${r.tool}] ${r.status}: ${JSON.stringify(r.result ?? r.error)}`)
|
|
24
|
+
.join("\n");
|
|
25
|
+
userContent =
|
|
26
|
+
`Tool results so far:\n${resultSummary}\n\n` +
|
|
27
|
+
`If these results are sufficient to answer, respond directly with a final ` +
|
|
28
|
+
`answer and do NOT call any tool again.\n\nUser request: ${input.raw}`;
|
|
29
|
+
}
|
|
15
30
|
const messages = [
|
|
16
31
|
{ role: "system", content: input.system_context },
|
|
17
32
|
...input.history.map((m) => ({
|
|
18
33
|
role: (m.role === "assistant" ? "assistant" : "user"),
|
|
19
34
|
content: m.content,
|
|
20
35
|
})),
|
|
21
|
-
{ role: "user", content:
|
|
36
|
+
{ role: "user", content: userContent },
|
|
22
37
|
];
|
|
23
38
|
const tools = input.tools.length > 0
|
|
24
39
|
? input.tools.map((t) => ({
|
|
@@ -51,11 +66,23 @@ export function createOpenAIBrain(opts) {
|
|
|
51
66
|
tool_choice: "auto",
|
|
52
67
|
}
|
|
53
68
|
: { model, messages: messages };
|
|
54
|
-
const response = await client.chat.completions.create(body);
|
|
69
|
+
const response = await client.chat.completions.create(body, input.signal ? { signal: input.signal } : {});
|
|
55
70
|
const choice = response.choices[0];
|
|
56
71
|
if (!choice)
|
|
57
72
|
return {};
|
|
58
73
|
const msg = choice.message;
|
|
74
|
+
const inputTokens = response.usage?.prompt_tokens;
|
|
75
|
+
const outputTokens = response.usage?.completion_tokens;
|
|
76
|
+
const costUsd = computeCostUsd(model, inputTokens, outputTokens);
|
|
77
|
+
const usageBlock = inputTokens !== undefined || outputTokens !== undefined
|
|
78
|
+
? {
|
|
79
|
+
usage: {
|
|
80
|
+
...(inputTokens !== undefined ? { inputTokens } : {}),
|
|
81
|
+
...(outputTokens !== undefined ? { outputTokens } : {}),
|
|
82
|
+
},
|
|
83
|
+
costUsd,
|
|
84
|
+
}
|
|
85
|
+
: {};
|
|
59
86
|
// Tool call response
|
|
60
87
|
if (msg.tool_calls?.length) {
|
|
61
88
|
const call = msg.tool_calls[0];
|
|
@@ -73,22 +100,13 @@ export function createOpenAIBrain(opts) {
|
|
|
73
100
|
tool_name: call.function?.name ?? "",
|
|
74
101
|
tool_params: params,
|
|
75
102
|
};
|
|
76
|
-
return { orchestration };
|
|
103
|
+
return { orchestration, ...usageBlock };
|
|
77
104
|
}
|
|
78
105
|
const text = msg.content ?? "";
|
|
79
|
-
const inputTokens = response.usage?.prompt_tokens;
|
|
80
|
-
const outputTokens = response.usage?.completion_tokens;
|
|
81
106
|
return {
|
|
82
107
|
generation: { response_text: text },
|
|
83
108
|
orchestration: { action: "respond", confidence: 0.95 },
|
|
84
|
-
...
|
|
85
|
-
? {
|
|
86
|
-
usage: {
|
|
87
|
-
...(inputTokens !== undefined ? { inputTokens } : {}),
|
|
88
|
-
...(outputTokens !== undefined ? { outputTokens } : {}),
|
|
89
|
-
},
|
|
90
|
-
}
|
|
91
|
-
: {}),
|
|
109
|
+
...usageBlock,
|
|
92
110
|
};
|
|
93
111
|
},
|
|
94
112
|
};
|
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"}
|
|
@@ -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"}
|
package/dist/core/guards.js
CHANGED
|
@@ -20,16 +20,24 @@ export const DEFAULT_GUARDS = {
|
|
|
20
20
|
*/
|
|
21
21
|
export function checkGuards(state, config, action, confidence, controlCommand) {
|
|
22
22
|
const signals = [];
|
|
23
|
+
// Control commands are written as a verb optionally followed by ":<detail>"
|
|
24
|
+
// (e.g. "kill:rate_limited", "disabled:search"). Normalize to the base verb
|
|
25
|
+
// so the match works regardless of the suffix — the kill bus writes
|
|
26
|
+
// "kill:<reason>", so an exact `=== "kill"` check never fired.
|
|
27
|
+
const verb = controlCommand ? controlCommand.split(":", 1)[0] : null;
|
|
23
28
|
// ─── Hard: task killed via control bus ───────────────────
|
|
24
|
-
if (
|
|
29
|
+
if (verb === "kill") {
|
|
30
|
+
const reason = controlCommand.includes(":")
|
|
31
|
+
? controlCommand.slice(controlCommand.indexOf(":") + 1)
|
|
32
|
+
: "killed";
|
|
25
33
|
signals.push({
|
|
26
34
|
type: "task_killed",
|
|
27
35
|
hard: true,
|
|
28
|
-
message:
|
|
36
|
+
message: `Task killed via control bus (${reason})`,
|
|
29
37
|
action: "abort",
|
|
30
38
|
});
|
|
31
39
|
}
|
|
32
|
-
if (
|
|
40
|
+
if (verb === "pause") {
|
|
33
41
|
signals.push({
|
|
34
42
|
type: "tenant_paused",
|
|
35
43
|
hard: true,
|
|
@@ -87,6 +95,10 @@ export function checkGuards(state, config, action, confidence, controlCommand) {
|
|
|
87
95
|
});
|
|
88
96
|
}
|
|
89
97
|
// ─── Soft: confidence gate ────────────────────────────────
|
|
98
|
+
// `confidence` is provider-reported. The built-in LLM brains report a coarse
|
|
99
|
+
// fixed value (~0.9 on tool calls), so this gate only bites for brains that
|
|
100
|
+
// emit a real confidence signal (e.g. an HDC/perception brain). Soft by
|
|
101
|
+
// design — it requests clarification, it does not abort.
|
|
90
102
|
if (action === "use_tool" && confidence < config.confidenceThreshold) {
|
|
91
103
|
signals.push({
|
|
92
104
|
type: "confidence_low",
|
package/dist/core/guards.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guards.js","sourceRoot":"","sources":["../../src/core/guards.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,MAAM,CAAC,MAAM,cAAc,GAA0B;IACnD,aAAa,EAAE,EAAE;IACjB,cAAc,EAAE,GAAG;IACnB,SAAS,EAAE,OAAO,EAAE,SAAS;IAC7B,mBAAmB,EAAE,IAAI;IACzB,mBAAmB,EAAE,GAAG;IACxB,sBAAsB,EAAE,CAAC;CAC1B,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,WAAW,CACzB,KAAe,EACf,MAA6B,EAC7B,MAAc,EACd,UAAkB,EAClB,cAA6B;IAE7B,MAAM,OAAO,GAAkB,EAAE,CAAC;IAElC,4DAA4D;IAC5D,IAAI,
|
|
1
|
+
{"version":3,"file":"guards.js","sourceRoot":"","sources":["../../src/core/guards.ts"],"names":[],"mappings":"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"}
|
package/dist/core/loop.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../../src/core/loop.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EACV,WAAW,
|
|
1
|
+
{"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../../src/core/loop.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EACV,WAAW,EAUZ,MAAM,YAAY,CAAC;AA2BpB;;;GAGG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,YAAY,EAAE,KAAK,CAia3E"}
|
package/dist/core/loop.js
CHANGED
|
@@ -51,14 +51,23 @@ export function createAgent(config) {
|
|
|
51
51
|
const sessionId = event.sessionId;
|
|
52
52
|
const taskId = makeTaskId();
|
|
53
53
|
const started = Date.now();
|
|
54
|
+
// Scope all Redis keys to the tenant when a TenantContext is present.
|
|
55
|
+
// Format: {base}:{companyId}:{agentType}:session:{sessionId}:...
|
|
56
|
+
const tenantPrefix = event.tenantContext
|
|
57
|
+
? `${prefix}:${event.tenantContext.companyId}:${event.tenantContext.agentType}`
|
|
58
|
+
: prefix;
|
|
59
|
+
// Per-event guard overrides (e.g. per-company cost caps from config_json).
|
|
60
|
+
const effectiveGuards = event.guardsOverride
|
|
61
|
+
? resolveGuards({ ...guards, ...event.guardsOverride })
|
|
62
|
+
: guards;
|
|
54
63
|
const redis = await getRedis();
|
|
55
64
|
const memory = new RedisMemory(redis, {
|
|
56
|
-
prefix,
|
|
65
|
+
prefix: tenantPrefix,
|
|
57
66
|
...(ttl.history !== undefined ? { historyTtl: ttl.history } : {}),
|
|
58
67
|
...(ttl.document !== undefined ? { documentTtl: ttl.document } : {}),
|
|
59
68
|
});
|
|
60
|
-
const controlBus = new RedisControlBus(redis,
|
|
61
|
-
const lock = new RedisDistributedLock(redis,
|
|
69
|
+
const controlBus = new RedisControlBus(redis, tenantPrefix);
|
|
70
|
+
const lock = new RedisDistributedLock(redis, tenantPrefix);
|
|
62
71
|
// ── Gates (zero-LLM filters) ─────────────────────────────
|
|
63
72
|
const gated = runGates(sessionId, taskId, event.message, config.gates);
|
|
64
73
|
if (gated)
|
|
@@ -79,7 +88,7 @@ export function createAgent(config) {
|
|
|
79
88
|
const toolResults = [];
|
|
80
89
|
try {
|
|
81
90
|
// Load history
|
|
82
|
-
const history = await memory.getHistory(sessionId,
|
|
91
|
+
const history = await memory.getHistory(sessionId, effectiveGuards.maxIterations * 4);
|
|
83
92
|
// Loop
|
|
84
93
|
while (true) {
|
|
85
94
|
state.iteration++;
|
|
@@ -88,11 +97,13 @@ export function createAgent(config) {
|
|
|
88
97
|
// ── Guards ────────────────────────────────────────────
|
|
89
98
|
const action = state.lastPayload?.orchestration?.action ?? "respond";
|
|
90
99
|
const confidence = state.lastPayload?.orchestration?.confidence ?? 1;
|
|
91
|
-
const guardSignals = checkGuards(state,
|
|
100
|
+
const guardSignals = checkGuards(state, effectiveGuards, action, confidence, command);
|
|
92
101
|
if (hasHardBlock(guardSignals)) {
|
|
93
102
|
const hardSignal = guardSignals.find((s) => s.hard);
|
|
94
103
|
fireGuard(config.hooks, sessionId, hardSignal, state.iteration);
|
|
95
104
|
const ha = hardAction(guardSignals);
|
|
105
|
+
if (process.env["MINI_DEBUG"])
|
|
106
|
+
console.error(`[mini] hardBlock type=${hardSignal.type} action=${ha} toolResults=${toolResults.length}`);
|
|
96
107
|
if (ha === "abort") {
|
|
97
108
|
await lockHandle.release();
|
|
98
109
|
return makeOutcome("error", sessionId, taskId, state, started, {
|
|
@@ -100,6 +111,52 @@ export function createAgent(config) {
|
|
|
100
111
|
terminatedBy: hardSignal.type,
|
|
101
112
|
});
|
|
102
113
|
}
|
|
114
|
+
// Budget exhausted (tool-call / iteration cap) but we DID gather tool
|
|
115
|
+
// results: don't give up with a canned message — make one final brain
|
|
116
|
+
// call with tools DISABLED, forcing the model to answer from what it
|
|
117
|
+
// already retrieved. This is the difference between "I couldn't finish"
|
|
118
|
+
// and a grounded answer when a model over-eagerly re-calls tools.
|
|
119
|
+
const budgetExhausted = hardSignal.type === "budget_tool_calls" ||
|
|
120
|
+
hardSignal.type === "budget_iterations";
|
|
121
|
+
if (ha !== "escalate" && budgetExhausted && toolResults.length > 0) {
|
|
122
|
+
try {
|
|
123
|
+
const { system_context, history: finalHistory } = buildContext(def, history, toolDefs, event.context);
|
|
124
|
+
const finalController = new AbortController();
|
|
125
|
+
const finalRemainingMs = effectiveGuards.timeoutMs > 0
|
|
126
|
+
? Math.max(1, effectiveGuards.timeoutMs - (Date.now() - state.startedAt))
|
|
127
|
+
: 0;
|
|
128
|
+
const finalPayload = await runWithTimeout(config.brain.run({
|
|
129
|
+
raw: event.message,
|
|
130
|
+
system_context,
|
|
131
|
+
history: finalHistory,
|
|
132
|
+
tools: [], // no tools → the model must produce a textual answer
|
|
133
|
+
tool_results: toolResults.slice(-5),
|
|
134
|
+
signal: finalController.signal,
|
|
135
|
+
}), finalRemainingMs, finalController);
|
|
136
|
+
state.totalCostUsd += finalPayload.costUsd ?? 0;
|
|
137
|
+
const forced = finalPayload.generation?.response_text ??
|
|
138
|
+
finalPayload.final_output?.text ??
|
|
139
|
+
"";
|
|
140
|
+
if (process.env["MINI_DEBUG"])
|
|
141
|
+
console.error(`[mini] finalize fired; forced.len=${forced.length} orch=${finalPayload.orchestration?.action}`);
|
|
142
|
+
if (forced) {
|
|
143
|
+
await memory.appendHistory(sessionId, {
|
|
144
|
+
role: "assistant",
|
|
145
|
+
content: forced,
|
|
146
|
+
timestamp: Date.now(),
|
|
147
|
+
});
|
|
148
|
+
await lockHandle.release();
|
|
149
|
+
return makeOutcome("response", sessionId, taskId, state, started, {
|
|
150
|
+
text: forced,
|
|
151
|
+
terminatedBy: hardSignal.type,
|
|
152
|
+
toolCalls: toolResults,
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
catch {
|
|
157
|
+
// fall through to the canned message below
|
|
158
|
+
}
|
|
159
|
+
}
|
|
103
160
|
// force_respond / escalate → emit last text if available
|
|
104
161
|
const lastText = state.lastPayload?.generation?.response_text ??
|
|
105
162
|
state.lastPayload?.final_output?.text ??
|
|
@@ -120,7 +177,7 @@ export function createAgent(config) {
|
|
|
120
177
|
// ── Context build ─────────────────────────────────────
|
|
121
178
|
const documentState = await memory.getDocumentState(sessionId);
|
|
122
179
|
const currentSection = documentState?.currentSection;
|
|
123
|
-
fireIteration(config.hooks, state,
|
|
180
|
+
fireIteration(config.hooks, state, effectiveGuards.maxIterations, currentSection);
|
|
124
181
|
const { system_context, history: trimmedHistory } = buildContext(def, history, toolDefs, event.context);
|
|
125
182
|
// ── Brain call ────────────────────────────────────────
|
|
126
183
|
const brainInput = {
|
|
@@ -132,7 +189,15 @@ export function createAgent(config) {
|
|
|
132
189
|
? { tool_results: toolResults.slice(-5) }
|
|
133
190
|
: {}),
|
|
134
191
|
};
|
|
135
|
-
|
|
192
|
+
// Bound the brain call by the remaining time budget. Without this a hung
|
|
193
|
+
// LLM call blocks forever — the wall-clock guard only runs *between*
|
|
194
|
+
// iterations, never during one.
|
|
195
|
+
const controller = new AbortController();
|
|
196
|
+
const elapsed = Date.now() - state.startedAt;
|
|
197
|
+
const remainingMs = effectiveGuards.timeoutMs > 0
|
|
198
|
+
? Math.max(1, effectiveGuards.timeoutMs - elapsed)
|
|
199
|
+
: 0;
|
|
200
|
+
const payload = await runWithTimeout(config.brain.run({ ...brainInput, signal: controller.signal }), remainingMs, controller);
|
|
136
201
|
state.lastPayload = payload;
|
|
137
202
|
state.totalCostUsd += payload.costUsd ?? 0;
|
|
138
203
|
const orch = payload.orchestration;
|
|
@@ -165,9 +230,10 @@ export function createAgent(config) {
|
|
|
165
230
|
sessionId,
|
|
166
231
|
iteration: state.iteration,
|
|
167
232
|
agentName: def.name,
|
|
233
|
+
...(event.tenantContext ? { tenantContext: event.tenantContext } : {}),
|
|
168
234
|
}, {
|
|
169
235
|
redis,
|
|
170
|
-
redisPrefix:
|
|
236
|
+
redisPrefix: tenantPrefix,
|
|
171
237
|
dedupTtlSeconds: ttl.toolDedup ?? 300,
|
|
172
238
|
});
|
|
173
239
|
fireToolCall(config.hooks, sessionId, exec.result, state.iteration, exec.cached, exec.durationMs);
|
|
@@ -196,7 +262,31 @@ export function createAgent(config) {
|
|
|
196
262
|
fireSectionComplete(config.hooks, sessionId, currentSection, idx, documentState.sections.length);
|
|
197
263
|
}
|
|
198
264
|
}
|
|
199
|
-
//
|
|
265
|
+
// ── Optional output gate ─────────────────────────────
|
|
266
|
+
// Runs only when a validator is configured. A throwing validator must
|
|
267
|
+
// never drop a valid response, so it fails safe to "review".
|
|
268
|
+
let finalText = text;
|
|
269
|
+
let validation;
|
|
270
|
+
if (config.validator && text) {
|
|
271
|
+
try {
|
|
272
|
+
validation = await config.validator.validate(text);
|
|
273
|
+
}
|
|
274
|
+
catch {
|
|
275
|
+
validation = {
|
|
276
|
+
passed: false,
|
|
277
|
+
score: 0,
|
|
278
|
+
violations: ["validator_error"],
|
|
279
|
+
action: "review",
|
|
280
|
+
strategy: "error",
|
|
281
|
+
latency_ms: 0,
|
|
282
|
+
};
|
|
283
|
+
}
|
|
284
|
+
if (validation.action === "block") {
|
|
285
|
+
finalText =
|
|
286
|
+
"I'm not able to share that response. Could you rephrase your request?";
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
// Record to history (the delivered text, post-gate)
|
|
200
290
|
await memory.appendHistory(sessionId, {
|
|
201
291
|
role: "user",
|
|
202
292
|
content: event.message,
|
|
@@ -204,18 +294,20 @@ export function createAgent(config) {
|
|
|
204
294
|
});
|
|
205
295
|
await memory.appendHistory(sessionId, {
|
|
206
296
|
role: "assistant",
|
|
207
|
-
content:
|
|
297
|
+
content: finalText,
|
|
208
298
|
timestamp: Date.now(),
|
|
209
299
|
});
|
|
210
|
-
const
|
|
300
|
+
const baseType = orch?.action === "clarify"
|
|
211
301
|
? "clarify"
|
|
212
302
|
: orch?.action === "escalate"
|
|
213
303
|
? "escalate"
|
|
214
304
|
: "response";
|
|
305
|
+
const outcomeType = validation?.action === "block" ? "suppressed" : baseType;
|
|
215
306
|
await lockHandle.release();
|
|
216
307
|
return makeOutcome(outcomeType, sessionId, taskId, state, started, {
|
|
217
|
-
text,
|
|
308
|
+
text: finalText,
|
|
218
309
|
toolCalls: toolResults,
|
|
310
|
+
...(validation ? { validation } : {}),
|
|
219
311
|
});
|
|
220
312
|
}
|
|
221
313
|
}
|
|
@@ -229,24 +321,51 @@ export function createAgent(config) {
|
|
|
229
321
|
});
|
|
230
322
|
}
|
|
231
323
|
}
|
|
232
|
-
async function kill(sessionId) {
|
|
324
|
+
async function kill(sessionId, companyId, agentType) {
|
|
233
325
|
const redis = await getRedis();
|
|
234
|
-
const
|
|
326
|
+
const p = companyId && agentType ? `${prefix}:${companyId}:${agentType}` : prefix;
|
|
327
|
+
const bus = new RedisControlBus(redis, p);
|
|
235
328
|
await bus.kill(sessionId);
|
|
236
329
|
}
|
|
237
|
-
async function pause(sessionId) {
|
|
330
|
+
async function pause(sessionId, companyId, agentType) {
|
|
238
331
|
const redis = await getRedis();
|
|
239
|
-
const
|
|
332
|
+
const p = companyId && agentType ? `${prefix}:${companyId}:${agentType}` : prefix;
|
|
333
|
+
const bus = new RedisControlBus(redis, p);
|
|
240
334
|
await bus.pause(sessionId);
|
|
241
335
|
}
|
|
242
|
-
async function resume(sessionId) {
|
|
336
|
+
async function resume(sessionId, companyId, agentType) {
|
|
243
337
|
const redis = await getRedis();
|
|
244
|
-
const
|
|
338
|
+
const p = companyId && agentType ? `${prefix}:${companyId}:${agentType}` : prefix;
|
|
339
|
+
const bus = new RedisControlBus(redis, p);
|
|
245
340
|
await bus.resume(sessionId);
|
|
246
341
|
}
|
|
247
342
|
return { handle, kill, pause, resume };
|
|
248
343
|
}
|
|
249
344
|
// ─── Helpers ──────────────────────────────────────────────────
|
|
345
|
+
/**
|
|
346
|
+
* Race a brain call against a time budget. On timeout, abort the controller
|
|
347
|
+
* (so providers that honor the signal cancel the underlying request) and reject
|
|
348
|
+
* — the loop's try/catch turns the rejection into an error outcome instead of
|
|
349
|
+
* hanging. A budget of 0 means "no timeout" (returns the call unwrapped).
|
|
350
|
+
*/
|
|
351
|
+
async function runWithTimeout(brainCall, budgetMs, controller) {
|
|
352
|
+
if (!(budgetMs > 0))
|
|
353
|
+
return brainCall;
|
|
354
|
+
let timer;
|
|
355
|
+
const timeout = new Promise((_, reject) => {
|
|
356
|
+
timer = setTimeout(() => {
|
|
357
|
+
controller.abort();
|
|
358
|
+
reject(new Error(`brain.run exceeded time budget (${budgetMs}ms)`));
|
|
359
|
+
}, budgetMs);
|
|
360
|
+
});
|
|
361
|
+
try {
|
|
362
|
+
return await Promise.race([brainCall, timeout]);
|
|
363
|
+
}
|
|
364
|
+
finally {
|
|
365
|
+
if (timer)
|
|
366
|
+
clearTimeout(timer);
|
|
367
|
+
}
|
|
368
|
+
}
|
|
250
369
|
function makeOutcome(type, sessionId, taskId, state, started, extra = {}) {
|
|
251
370
|
return {
|
|
252
371
|
type,
|
package/dist/core/loop.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loop.js","sourceRoot":"","sources":["../../src/core/loop.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"loop.js","sourceRoot":"","sources":["../../src/core/loop.ts"],"names":[],"mappings":"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"}
|
package/dist/core/types.d.ts
CHANGED
|
@@ -36,6 +36,15 @@ export interface AgentContext {
|
|
|
36
36
|
/** App-specific fields — passed through unchanged, not used by the loop itself. */
|
|
37
37
|
customFields?: Record<string, unknown>;
|
|
38
38
|
}
|
|
39
|
+
/**
|
|
40
|
+
* Carries the company + agent-type identity for a single request.
|
|
41
|
+
* Threaded through the loop to scope Redis keys and tool execution.
|
|
42
|
+
* Gateway injects this via X-Company-Id / X-Agent-Type headers (or request body).
|
|
43
|
+
*/
|
|
44
|
+
export interface TenantContext {
|
|
45
|
+
companyId: string;
|
|
46
|
+
agentType: string;
|
|
47
|
+
}
|
|
39
48
|
export interface AgentEvent {
|
|
40
49
|
sessionId: string;
|
|
41
50
|
/** The user's message */
|
|
@@ -47,6 +56,16 @@ export interface AgentEvent {
|
|
|
47
56
|
context?: AgentContext;
|
|
48
57
|
/** Optional: resume a task that was previously killed or interrupted */
|
|
49
58
|
resumeTaskId?: string;
|
|
59
|
+
/**
|
|
60
|
+
* Tenant identity for this request — scopes all Redis keys and tool execution.
|
|
61
|
+
* Set by the gateway; agents should not hard-code this.
|
|
62
|
+
*/
|
|
63
|
+
tenantContext?: TenantContext;
|
|
64
|
+
/**
|
|
65
|
+
* Per-request guard overrides — applied on top of the agent's static config.
|
|
66
|
+
* Used to enforce per-company limits from company_agents.config_json.
|
|
67
|
+
*/
|
|
68
|
+
guardsOverride?: Partial<GuardConfig>;
|
|
50
69
|
}
|
|
51
70
|
/** A single role+content message in conversation history */
|
|
52
71
|
export interface Message {
|
|
@@ -84,6 +103,12 @@ export interface BrainRunInput {
|
|
|
84
103
|
tool_results?: ToolResult[];
|
|
85
104
|
/** Available tool definitions */
|
|
86
105
|
tools: ToolDefinition[];
|
|
106
|
+
/**
|
|
107
|
+
* Abort signal from the loop's per-call time budget. Providers that honor it
|
|
108
|
+
* cancel the underlying request when the budget is exceeded; ignoring it is
|
|
109
|
+
* safe — the loop still stops waiting via its timeout race.
|
|
110
|
+
*/
|
|
111
|
+
signal?: AbortSignal;
|
|
87
112
|
}
|
|
88
113
|
export interface BrainOrchestration {
|
|
89
114
|
action: "use_tool" | "respond" | "clarify" | "escalate" | "delegate";
|
|
@@ -130,6 +155,8 @@ export interface ToolMeta {
|
|
|
130
155
|
sessionId: string;
|
|
131
156
|
iteration: number;
|
|
132
157
|
agentName: string;
|
|
158
|
+
/** Tenant identity threaded from AgentEvent — use to scope DB queries and KB searches. */
|
|
159
|
+
tenantContext?: TenantContext;
|
|
133
160
|
}
|
|
134
161
|
/**
|
|
135
162
|
* A tool passed explicitly by the app. No registries — every tool the agent
|
|
@@ -144,6 +171,30 @@ export interface Tool {
|
|
|
144
171
|
requiresApproval?: boolean;
|
|
145
172
|
execute(args: Record<string, unknown>, meta: ToolMeta): Promise<ToolResult>;
|
|
146
173
|
}
|
|
174
|
+
/**
|
|
175
|
+
* Result of a final output-gate check. Structurally compatible with
|
|
176
|
+
* @msm-core/validate's `ValidationResult` — a validate cascade satisfies this
|
|
177
|
+
* directly, with no adapter and no hard dependency from mini on validate.
|
|
178
|
+
*/
|
|
179
|
+
export interface OutputValidation {
|
|
180
|
+
passed: boolean;
|
|
181
|
+
score: number;
|
|
182
|
+
violations: string[];
|
|
183
|
+
/** release = deliver as-is · review = deliver but flag · block = suppress text */
|
|
184
|
+
action: "release" | "block" | "review";
|
|
185
|
+
strategy: string;
|
|
186
|
+
latency_ms: number;
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Optional final output gate. Any object with a compatible `validate(text)` —
|
|
190
|
+
* e.g. a `@msm-core/validate` validator/cascade — works. When set on
|
|
191
|
+
* AgentConfig, the loop runs it on the terminal response: `block` suppresses
|
|
192
|
+
* the text (a safe fallback is returned instead), `review`/`release` deliver
|
|
193
|
+
* the text and attach the result to the outcome. Off unless configured.
|
|
194
|
+
*/
|
|
195
|
+
export interface OutputValidator {
|
|
196
|
+
validate(text: string): Promise<OutputValidation>;
|
|
197
|
+
}
|
|
147
198
|
export type GuardSignalType = "budget_iterations" | "budget_cost" | "budget_timeout" | "budget_tool_calls" | "confidence_low" | "task_killed" | "tenant_paused" | "tool_disabled" | "consecutive_failures";
|
|
148
199
|
export interface GuardSignal {
|
|
149
200
|
type: GuardSignalType;
|
|
@@ -179,6 +230,8 @@ export interface LoopOutcome {
|
|
|
179
230
|
};
|
|
180
231
|
/** Guard that terminated the loop, if any */
|
|
181
232
|
terminatedBy?: GuardSignalType;
|
|
233
|
+
/** Output-gate result, when a validator is configured. */
|
|
234
|
+
validation?: OutputValidation;
|
|
182
235
|
error?: string;
|
|
183
236
|
}
|
|
184
237
|
/**
|
|
@@ -251,6 +304,11 @@ export interface AgentConfig {
|
|
|
251
304
|
guards?: GuardConfig;
|
|
252
305
|
gates?: GateConfig;
|
|
253
306
|
hooks?: AgentHooks;
|
|
307
|
+
/**
|
|
308
|
+
* Optional output gate run on the terminal response (e.g. a
|
|
309
|
+
* @msm-core/validate cascade). When omitted, no validation runs.
|
|
310
|
+
*/
|
|
311
|
+
validator?: OutputValidator;
|
|
254
312
|
}
|
|
255
313
|
export interface IterationInfo {
|
|
256
314
|
sessionId: string;
|
|
@@ -316,8 +374,9 @@ export interface AgentDefinition {
|
|
|
316
374
|
}
|
|
317
375
|
export interface Agent {
|
|
318
376
|
handle(event: AgentEvent): Promise<LoopOutcome>;
|
|
319
|
-
kill
|
|
320
|
-
|
|
321
|
-
|
|
377
|
+
/** companyId + agentType scope the kill/pause to the right tenant Redis namespace. */
|
|
378
|
+
kill(sessionId: string, companyId?: string, agentType?: string): Promise<void>;
|
|
379
|
+
pause(sessionId: string, companyId?: string, agentType?: string): Promise<void>;
|
|
380
|
+
resume(sessionId: string, companyId?: string, agentType?: string): Promise<void>;
|
|
322
381
|
}
|
|
323
382
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/core/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,2EAA2E;IAC3E,MAAM,EAAE,MAAM,CAAC;IACf,qDAAqD;IACrD,OAAO,EAAE,MAAM,CAAC;IAChB,oDAAoD;IACpD,KAAK,EAAE,MAAM,CAAC;IACd,iEAAiE;IACjE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,uFAAuF;IACvF,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC;IACzB,kFAAkF;IAClF,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,mFAAmF;IACnF,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACxC;AAID,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,yBAAyB;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,wEAAwE;IACxE,YAAY,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -13,7 +13,7 @@ export { createAnthropicBrain } from "./brain/anthropic.js";
|
|
|
13
13
|
export { createOllamaBrain } from "./brain/ollama.js";
|
|
14
14
|
export { buildBrain } from "./brain/factory.js";
|
|
15
15
|
export { parseDefinition } from "./definition/parser.js";
|
|
16
|
-
export type { Agent, AgentConfig, AgentEvent, AgentContext, AgentDefinition, AgentHooks, Brain, BrainPayload, BrainRunInput, DocumentState, GateConfig, GuardConfig, GuardSignal, GuardSignalType, IterationInfo, LoopOutcome, MemoryEntry, Message, OutcomeType, RedisConfig, RunState, SectionInfo, Tool, ToolCallInfo, ToolDefinition, ToolMeta, ToolParameter, ToolResult, } from "./core/types.js";
|
|
16
|
+
export type { Agent, AgentConfig, AgentEvent, AgentContext, AgentDefinition, AgentHooks, Brain, BrainPayload, BrainRunInput, DocumentState, GateConfig, GuardConfig, GuardSignal, GuardSignalType, IterationInfo, LoopOutcome, MemoryEntry, Message, OutcomeType, OutputValidation, OutputValidator, RedisConfig, RunState, SectionInfo, TenantContext, Tool, ToolCallInfo, ToolDefinition, ToolMeta, ToolParameter, ToolResult, } from "./core/types.js";
|
|
17
17
|
export { resolveGuards, DEFAULT_GUARDS } from "./core/guards.js";
|
|
18
18
|
export { scoreOutcome } from "./quality/scorer.js";
|
|
19
19
|
export type { QualityScore, QualityFlag } from "./quality/scorer.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGhD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAGzD,YAAY,EACV,KAAK,EACL,WAAW,EACX,UAAU,EACV,YAAY,EACZ,eAAe,EACf,UAAU,EACV,KAAK,EACL,YAAY,EACZ,aAAa,EACb,aAAa,EACb,UAAU,EACV,WAAW,EACX,WAAW,EACX,eAAe,EACf,aAAa,EACb,WAAW,EACX,WAAW,EACX,OAAO,EACP,WAAW,EACX,WAAW,EACX,QAAQ,EACR,WAAW,EACX,IAAI,EACJ,YAAY,EACZ,cAAc,EACd,QAAQ,EACR,aAAa,EACb,UAAU,GACX,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGjE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,YAAY,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGhD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAGzD,YAAY,EACV,KAAK,EACL,WAAW,EACX,UAAU,EACV,YAAY,EACZ,eAAe,EACf,UAAU,EACV,KAAK,EACL,YAAY,EACZ,aAAa,EACb,aAAa,EACb,UAAU,EACV,WAAW,EACX,WAAW,EACX,eAAe,EACf,aAAa,EACb,WAAW,EACX,WAAW,EACX,OAAO,EACP,WAAW,EACX,gBAAgB,EAChB,eAAe,EACf,WAAW,EACX,QAAQ,EACR,WAAW,EACX,aAAa,EACb,IAAI,EACJ,YAAY,EACZ,cAAc,EACd,QAAQ,EACR,aAAa,EACb,UAAU,GACX,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGjE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,YAAY,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,+EAA+E;AAC/E,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,+EAA+E;AAC/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,+EAA+E;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,+EAA+E;AAC/E,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,+EAA+E;AAC/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,+EAA+E;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAqCzD,+EAA+E;AAC/E,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEjE,+EAA+E;AAC/E,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGnD,+EAA+E;AAC/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAOH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAE7C,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACvB;AA4BD,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,kBAAkB,GACvB,WAAW,
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAOH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAE7C,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACvB;AA4BD,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,kBAAkB,GACvB,WAAW,CA4Gb"}
|
package/dist/server.js
CHANGED
|
@@ -78,9 +78,26 @@ export function createAgentServer(agent, opts) {
|
|
|
78
78
|
});
|
|
79
79
|
return;
|
|
80
80
|
}
|
|
81
|
+
// Resolve TenantContext from:
|
|
82
|
+
// 1. Request body (preferred — forwarded by UTS API server)
|
|
83
|
+
// 2. X-Company-Id / X-Agent-Type headers (set by platform gateway)
|
|
84
|
+
const bodyTenant = body["tenantContext"];
|
|
85
|
+
const companyId = (typeof bodyTenant?.["companyId"] === "string" ? bodyTenant["companyId"] : undefined) ??
|
|
86
|
+
(typeof req.headers["x-company-id"] === "string" ? req.headers["x-company-id"] : undefined);
|
|
87
|
+
const agentType = (typeof bodyTenant?.["agentType"] === "string" ? bodyTenant["agentType"] : undefined) ??
|
|
88
|
+
(typeof req.headers["x-agent-type"] === "string" ? req.headers["x-agent-type"] : undefined);
|
|
89
|
+
const tenantContext = companyId && agentType ? { companyId, agentType } : undefined;
|
|
90
|
+
// Per-tenant guard overrides (cost cap, rate limits) from body.
|
|
91
|
+
const guardsOverride = body["guardsOverride"] !== undefined &&
|
|
92
|
+
typeof body["guardsOverride"] === "object" &&
|
|
93
|
+
body["guardsOverride"] !== null
|
|
94
|
+
? body["guardsOverride"]
|
|
95
|
+
: undefined;
|
|
81
96
|
const outcome = await agent.handle({
|
|
82
97
|
sessionId,
|
|
83
98
|
message: text,
|
|
99
|
+
...(tenantContext ? { tenantContext } : {}),
|
|
100
|
+
...(guardsOverride ? { guardsOverride } : {}),
|
|
84
101
|
});
|
|
85
102
|
json(res, 200, outcome);
|
|
86
103
|
return;
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@msm-core/mini",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.1",
|
|
4
4
|
"description": "Portable AI agent execution loop — brain-agnostic, zero embedded databases",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -25,13 +25,23 @@
|
|
|
25
25
|
},
|
|
26
26
|
"files": [
|
|
27
27
|
"dist",
|
|
28
|
-
"README.md"
|
|
28
|
+
"README.md",
|
|
29
|
+
"CHANGELOG.md"
|
|
29
30
|
],
|
|
31
|
+
"publishConfig": {
|
|
32
|
+
"access": "public"
|
|
33
|
+
},
|
|
34
|
+
"repository": {
|
|
35
|
+
"type": "git",
|
|
36
|
+
"url": "https://github.com/msm-core/sdk.git",
|
|
37
|
+
"directory": "mini"
|
|
38
|
+
},
|
|
30
39
|
"scripts": {
|
|
31
40
|
"build": "tsc",
|
|
32
41
|
"test": "vitest run",
|
|
33
42
|
"test:watch": "vitest",
|
|
34
|
-
"clean": "rm -rf dist"
|
|
43
|
+
"clean": "rm -rf dist",
|
|
44
|
+
"prepublishOnly": "npm run build && npm test"
|
|
35
45
|
},
|
|
36
46
|
"peerDependencies": {
|
|
37
47
|
"openai": ">=4.0.0",
|
|
@@ -50,8 +60,7 @@
|
|
|
50
60
|
}
|
|
51
61
|
},
|
|
52
62
|
"dependencies": {
|
|
53
|
-
"ioredis": "^5.3.2"
|
|
54
|
-
"zod": "^3.22.4"
|
|
63
|
+
"ioredis": "^5.3.2"
|
|
55
64
|
},
|
|
56
65
|
"devDependencies": {
|
|
57
66
|
"@types/node": "^20.0.0",
|
|
@@ -68,4 +77,4 @@
|
|
|
68
77
|
],
|
|
69
78
|
"author": "Emad Jumaah",
|
|
70
79
|
"license": "MIT"
|
|
71
|
-
}
|
|
80
|
+
}
|