@msm-core/mini 0.4.0 → 0.5.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.
Files changed (112) hide show
  1. package/CHANGELOG.md +62 -0
  2. package/LICENSE +21 -0
  3. package/README.md +53 -0
  4. package/dist/adapters/index.d.ts +2 -1
  5. package/dist/adapters/index.js +2 -1
  6. package/dist/adapters/memory-redis.d.ts +38 -0
  7. package/dist/adapters/memory-redis.js +131 -0
  8. package/dist/adapters/redis-control.d.ts +0 -1
  9. package/dist/adapters/redis-control.js +0 -1
  10. package/dist/adapters/redis-lock.d.ts +0 -1
  11. package/dist/adapters/redis-lock.js +0 -1
  12. package/dist/adapters/redis-memory.d.ts +0 -1
  13. package/dist/adapters/redis-memory.js +0 -1
  14. package/dist/adapters/redis-types.d.ts +0 -1
  15. package/dist/adapters/redis-types.js +0 -1
  16. package/dist/brain/anthropic.d.ts +0 -1
  17. package/dist/brain/anthropic.js +15 -13
  18. package/dist/brain/factory.d.ts +0 -1
  19. package/dist/brain/factory.js +0 -1
  20. package/dist/brain/gemini.d.ts +0 -1
  21. package/dist/brain/gemini.js +11 -10
  22. package/dist/brain/ollama.d.ts +0 -1
  23. package/dist/brain/ollama.js +40 -7
  24. package/dist/brain/openai.d.ts +0 -1
  25. package/dist/brain/openai.js +6 -29
  26. package/dist/brain/pricing.d.ts +0 -1
  27. package/dist/brain/pricing.js +0 -1
  28. package/dist/brain/retry.d.ts +0 -1
  29. package/dist/brain/retry.js +0 -1
  30. package/dist/brain/tool-context.d.ts +37 -0
  31. package/dist/brain/tool-context.js +36 -0
  32. package/dist/brain/types.d.ts +0 -1
  33. package/dist/brain/types.js +0 -1
  34. package/dist/bridge/pipeline.d.ts +0 -1
  35. package/dist/bridge/pipeline.js +0 -1
  36. package/dist/core/context-builder.d.ts +0 -1
  37. package/dist/core/context-builder.js +0 -1
  38. package/dist/core/gates.d.ts +0 -1
  39. package/dist/core/gates.js +0 -1
  40. package/dist/core/guards.d.ts +3 -2
  41. package/dist/core/guards.js +24 -8
  42. package/dist/core/hooks.d.ts +0 -1
  43. package/dist/core/hooks.js +0 -1
  44. package/dist/core/loop.d.ts +0 -1
  45. package/dist/core/loop.js +5 -2
  46. package/dist/core/types.d.ts +7 -1
  47. package/dist/core/types.js +0 -1
  48. package/dist/definition/parser.d.ts +0 -1
  49. package/dist/definition/parser.js +13 -8
  50. package/dist/index.d.ts +0 -1
  51. package/dist/index.js +0 -1
  52. package/dist/quality/scorer.d.ts +0 -1
  53. package/dist/quality/scorer.js +0 -1
  54. package/dist/server.d.ts +0 -1
  55. package/dist/server.js +0 -1
  56. package/dist/tools/dedup.d.ts +0 -1
  57. package/dist/tools/dedup.js +0 -1
  58. package/dist/tools/executor.d.ts +0 -1
  59. package/dist/tools/executor.js +21 -4
  60. package/package.json +2 -7
  61. package/dist/adapters/index.d.ts.map +0 -1
  62. package/dist/adapters/index.js.map +0 -1
  63. package/dist/adapters/redis-control.d.ts.map +0 -1
  64. package/dist/adapters/redis-control.js.map +0 -1
  65. package/dist/adapters/redis-lock.d.ts.map +0 -1
  66. package/dist/adapters/redis-lock.js.map +0 -1
  67. package/dist/adapters/redis-memory.d.ts.map +0 -1
  68. package/dist/adapters/redis-memory.js.map +0 -1
  69. package/dist/adapters/redis-types.d.ts.map +0 -1
  70. package/dist/adapters/redis-types.js.map +0 -1
  71. package/dist/brain/anthropic.d.ts.map +0 -1
  72. package/dist/brain/anthropic.js.map +0 -1
  73. package/dist/brain/factory.d.ts.map +0 -1
  74. package/dist/brain/factory.js.map +0 -1
  75. package/dist/brain/gemini.d.ts.map +0 -1
  76. package/dist/brain/gemini.js.map +0 -1
  77. package/dist/brain/ollama.d.ts.map +0 -1
  78. package/dist/brain/ollama.js.map +0 -1
  79. package/dist/brain/openai.d.ts.map +0 -1
  80. package/dist/brain/openai.js.map +0 -1
  81. package/dist/brain/pricing.d.ts.map +0 -1
  82. package/dist/brain/pricing.js.map +0 -1
  83. package/dist/brain/retry.d.ts.map +0 -1
  84. package/dist/brain/retry.js.map +0 -1
  85. package/dist/brain/types.d.ts.map +0 -1
  86. package/dist/brain/types.js.map +0 -1
  87. package/dist/bridge/pipeline.d.ts.map +0 -1
  88. package/dist/bridge/pipeline.js.map +0 -1
  89. package/dist/core/context-builder.d.ts.map +0 -1
  90. package/dist/core/context-builder.js.map +0 -1
  91. package/dist/core/gates.d.ts.map +0 -1
  92. package/dist/core/gates.js.map +0 -1
  93. package/dist/core/guards.d.ts.map +0 -1
  94. package/dist/core/guards.js.map +0 -1
  95. package/dist/core/hooks.d.ts.map +0 -1
  96. package/dist/core/hooks.js.map +0 -1
  97. package/dist/core/loop.d.ts.map +0 -1
  98. package/dist/core/loop.js.map +0 -1
  99. package/dist/core/types.d.ts.map +0 -1
  100. package/dist/core/types.js.map +0 -1
  101. package/dist/definition/parser.d.ts.map +0 -1
  102. package/dist/definition/parser.js.map +0 -1
  103. package/dist/index.d.ts.map +0 -1
  104. package/dist/index.js.map +0 -1
  105. package/dist/quality/scorer.d.ts.map +0 -1
  106. package/dist/quality/scorer.js.map +0 -1
  107. package/dist/server.d.ts.map +0 -1
  108. package/dist/server.js.map +0 -1
  109. package/dist/tools/dedup.d.ts.map +0 -1
  110. package/dist/tools/dedup.js.map +0 -1
  111. package/dist/tools/executor.d.ts.map +0 -1
  112. package/dist/tools/executor.js.map +0 -1
@@ -4,6 +4,7 @@
4
4
  */
5
5
  import { computeCostUsd } from "./pricing.js";
6
6
  import { withRetry } from "./retry.js";
7
+ import { foldToolResults, toolParamsToJsonSchema } from "./tool-context.js";
7
8
  export function createOpenAIBrain(opts) {
8
9
  const model = opts.model ?? "gpt-4o-mini";
9
10
  return {
@@ -14,20 +15,10 @@ export function createOpenAIBrain(opts) {
14
15
  apiKey: opts.apiKey ?? process.env["OPENAI_API_KEY"],
15
16
  ...(opts.baseURL ? { baseURL: opts.baseURL } : {}),
16
17
  });
17
- // Fold prior tool results into the current user turn so the model can see
18
- // what its tool calls returned. Without this the model never learns a tool
19
- // already ran (or what it produced) and re-calls it forever — every model
20
- // loops to the guard cap. The nudge steers it to answer once results suffice.
21
- let userContent = input.raw;
22
- if (input.tool_results?.length) {
23
- const resultSummary = input.tool_results
24
- .map((r) => `[${r.tool}] ${r.status}: ${JSON.stringify(r.result ?? r.error)}`)
25
- .join("\n");
26
- userContent =
27
- `Tool results so far:\n${resultSummary}\n\n` +
28
- `If these results are sufficient to answer, respond directly with a final ` +
29
- `answer and do NOT call any tool again.\n\nUser request: ${input.raw}`;
30
- }
18
+ // Fold prior tool results into the current user turn (shared with all
19
+ // brains) so the model sees what its tool calls returned and is nudged to
20
+ // finalize rather than re-calling forever.
21
+ const userContent = foldToolResults(input.raw, input.tool_results);
31
22
  const messages = [
32
23
  { role: "system", content: input.system_context },
33
24
  ...input.history.map((m) => ({
@@ -42,20 +33,7 @@ export function createOpenAIBrain(opts) {
42
33
  function: {
43
34
  name: t.name,
44
35
  description: t.description,
45
- parameters: {
46
- type: "object",
47
- properties: Object.fromEntries(Object.entries(t.parameters).map(([k, v]) => [
48
- k,
49
- {
50
- type: v.type,
51
- description: v.description,
52
- enum: v.enum,
53
- },
54
- ])),
55
- required: Object.entries(t.parameters)
56
- .filter(([, v]) => v.required)
57
- .map(([k]) => k),
58
- },
36
+ parameters: toolParamsToJsonSchema(t.parameters),
59
37
  },
60
38
  }))
61
39
  : undefined;
@@ -112,4 +90,3 @@ export function createOpenAIBrain(opts) {
112
90
  },
113
91
  };
114
92
  }
115
- //# sourceMappingURL=openai.js.map
@@ -25,4 +25,3 @@ export declare const PRICE_PER_MILLION: Record<string, TokenPrice>;
25
25
  * longest-prefix match against the table.
26
26
  */
27
27
  export declare function computeCostUsd(model: string, inputTokens?: number, outputTokens?: number): number;
28
- //# sourceMappingURL=pricing.d.ts.map
@@ -50,4 +50,3 @@ function resolvePrice(model) {
50
50
  }
51
51
  return best?.price;
52
52
  }
53
- //# sourceMappingURL=pricing.js.map
@@ -18,4 +18,3 @@ export interface RetryOpts {
18
18
  export declare function isTransientError(err: unknown): boolean;
19
19
  /** Run `fn`, retrying once (by default) on transient provider errors. */
20
20
  export declare function withRetry<T>(fn: () => Promise<T>, opts?: RetryOpts): Promise<T>;
21
- //# sourceMappingURL=retry.d.ts.map
@@ -60,4 +60,3 @@ export async function withRetry(fn, opts = {}) {
60
60
  }
61
61
  throw lastErr;
62
62
  }
63
- //# sourceMappingURL=retry.js.map
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Shared brain helpers — the two things EVERY provider must do identically so
3
+ * tool-using agents behave the same across OpenAI / Anthropic / Gemini / Ollama.
4
+ * Previously each brain hand-rolled these (or skipped them), which is why the
5
+ * Anthropic and Ollama paths regressed (audit H1/H2):
6
+ *
7
+ * 1. foldToolResults() — splice the prior iteration's tool results into the
8
+ * current user turn WITH a "don't call again if these suffice" nudge. Without
9
+ * it the model never sees what its tool call returned, re-emits `use_tool`
10
+ * every iteration until the guard cap, and the loop's force-finalize answer is
11
+ * ungrounded. OpenAI/Gemini did this; Anthropic/Ollama did not.
12
+ *
13
+ * 2. toolParamsToJsonSchema() — map a tool's ToolParameter record to a JSON
14
+ * Schema object INCLUDING `enum`. The Anthropic brain dropped `enum`, so an
15
+ * enum-constrained parameter was silently unconstrained there.
16
+ */
17
+ import type { ToolParameter, ToolResult } from "../core/types.js";
18
+ /**
19
+ * Fold prior-iteration tool results into the user turn. Returns `raw` unchanged
20
+ * when there are none, so it is safe to call on the first iteration.
21
+ */
22
+ export declare function foldToolResults(raw: string, toolResults?: ToolResult[]): string;
23
+ export interface JsonSchemaObject {
24
+ type: "object";
25
+ properties: Record<string, {
26
+ type: string;
27
+ description: string;
28
+ enum?: string[];
29
+ }>;
30
+ required: string[];
31
+ }
32
+ /**
33
+ * Canonical JSON-Schema for a tool's parameters. Includes `enum` when present.
34
+ * Providers that need a different casing (e.g. Gemini's UPPERCASE types) adapt
35
+ * from this shape; the property/required/enum semantics stay identical.
36
+ */
37
+ export declare function toolParamsToJsonSchema(parameters: Record<string, ToolParameter>): JsonSchemaObject;
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Fold prior-iteration tool results into the user turn. Returns `raw` unchanged
3
+ * when there are none, so it is safe to call on the first iteration.
4
+ */
5
+ export function foldToolResults(raw, toolResults) {
6
+ if (!toolResults?.length)
7
+ return raw;
8
+ const resultSummary = toolResults
9
+ .map((r) => `[${r.tool}] ${r.status}: ${JSON.stringify(r.result ?? r.error)}`)
10
+ .join("\n");
11
+ return (`Tool results so far:\n${resultSummary}\n\n` +
12
+ `If these results are sufficient to answer, respond directly with a final ` +
13
+ `answer and do NOT call any tool again.\n\nUser request: ${raw}`);
14
+ }
15
+ /**
16
+ * Canonical JSON-Schema for a tool's parameters. Includes `enum` when present.
17
+ * Providers that need a different casing (e.g. Gemini's UPPERCASE types) adapt
18
+ * from this shape; the property/required/enum semantics stay identical.
19
+ */
20
+ export function toolParamsToJsonSchema(parameters) {
21
+ const properties = {};
22
+ for (const [k, v] of Object.entries(parameters)) {
23
+ properties[k] = {
24
+ type: v.type,
25
+ description: v.description,
26
+ ...(v.enum ? { enum: v.enum } : {}),
27
+ };
28
+ }
29
+ return {
30
+ type: "object",
31
+ properties,
32
+ required: Object.entries(parameters)
33
+ .filter(([, v]) => v.required)
34
+ .map(([k]) => k),
35
+ };
36
+ }
@@ -3,4 +3,3 @@
3
3
  * Re-exported here for clarity; primary definition is in core/types.ts.
4
4
  */
5
5
  export type { Brain, BrainRunInput, BrainPayload, BrainOrchestration, BrainGeneration } from "../core/types.js";
6
- //# sourceMappingURL=types.d.ts.map
@@ -1,2 +1 @@
1
1
  export {};
2
- //# sourceMappingURL=types.js.map
@@ -64,4 +64,3 @@ export interface PipelineLike {
64
64
  * — this bridge converts between them automatically.
65
65
  */
66
66
  export declare function wrapPipeline(pipeline: PipelineLike, name?: string): Brain;
67
- //# sourceMappingURL=pipeline.d.ts.map
@@ -102,4 +102,3 @@ export function wrapPipeline(pipeline, name = "pipeline") {
102
102
  },
103
103
  };
104
104
  }
105
- //# sourceMappingURL=pipeline.js.map
@@ -22,4 +22,3 @@ export interface ContextBudget {
22
22
  * Enforces token budget by truncating memories from the bottom.
23
23
  */
24
24
  export declare function buildContext(def: AgentDefinition, history: Message[], tools: ToolDefinition[], context?: AgentContext, budget?: ContextBudget): Pick<BrainRunInput, "system_context" | "history">;
25
- //# sourceMappingURL=context-builder.d.ts.map
@@ -104,4 +104,3 @@ function fitMemoriesToBudget(memories, budgetTokens) {
104
104
  }
105
105
  return result;
106
106
  }
107
- //# sourceMappingURL=context-builder.js.map
@@ -13,4 +13,3 @@ export declare function isAcknowledgement(text: string): boolean;
13
13
  * or null if the message should proceed to the brain loop.
14
14
  */
15
15
  export declare function runGates(sessionId: string, taskId: string, message: string, gates?: GateConfig): LoopOutcome | null;
16
- //# sourceMappingURL=gates.d.ts.map
@@ -67,4 +67,3 @@ export function runGates(sessionId, taskId, message, gates) {
67
67
  }
68
68
  return null;
69
69
  }
70
- //# sourceMappingURL=gates.js.map
@@ -17,6 +17,7 @@ export declare function checkGuards(state: RunState, config: Required<GuardConfi
17
17
  export declare function hasHardBlock(signals: GuardSignal[]): boolean;
18
18
  /** Returns the first hard signal's action, or undefined */
19
19
  export declare function hardAction(signals: GuardSignal[]): GuardSignal["action"] | undefined;
20
- /** Merge user guard config with defaults */
20
+ /** Merge user guard config with defaults, rejecting NaN/Infinity and clamping to sane bounds.
21
+ * (A field set to 0 where the check is `> 0` — cost / timeout / tool-calls / failures — is a
22
+ * DELIBERATE disable and is preserved; only non-finite garbage falls back to the default.) */
21
23
  export declare function resolveGuards(config?: GuardConfig): Required<GuardConfig>;
22
- //# sourceMappingURL=guards.d.ts.map
@@ -117,15 +117,31 @@ export function hasHardBlock(signals) {
117
117
  export function hardAction(signals) {
118
118
  return signals.find((s) => s.hard)?.action;
119
119
  }
120
- /** Merge user guard config with defaults */
120
+ /**
121
+ * Coerce a guard value: keep it only when it is a FINITE number within [min,max]
122
+ * (clamping out-of-range), else fall back to the default. This is the fix for the
123
+ * silent-cap-disable bug: `??` only falls back on null/undefined, so a `NaN`
124
+ * (e.g. a typo'd agent.md limit → `Number("foo")`) or `Infinity` slipped through —
125
+ * and `iteration >= NaN` / `cost > NaN` / `timeout > NaN` are all `false`, so the
126
+ * iteration, cost, and timeout caps were SILENTLY DISABLED. The upper bound also
127
+ * stops an absurd override (in-process or over HTTP) from removing a cap.
128
+ */
129
+ function clampFinite(value, fallback, min, max) {
130
+ if (typeof value !== "number" || !Number.isFinite(value))
131
+ return fallback;
132
+ return Math.min(max, Math.max(min, value));
133
+ }
134
+ const DAY_MS = 24 * 60 * 60 * 1000;
135
+ /** Merge user guard config with defaults, rejecting NaN/Infinity and clamping to sane bounds.
136
+ * (A field set to 0 where the check is `> 0` — cost / timeout / tool-calls / failures — is a
137
+ * DELIBERATE disable and is preserved; only non-finite garbage falls back to the default.) */
121
138
  export function resolveGuards(config) {
122
139
  return {
123
- maxIterations: config?.maxIterations ?? DEFAULT_GUARDS.maxIterations,
124
- costCapPerTask: config?.costCapPerTask ?? DEFAULT_GUARDS.costCapPerTask,
125
- timeoutMs: config?.timeoutMs ?? DEFAULT_GUARDS.timeoutMs,
126
- confidenceThreshold: config?.confidenceThreshold ?? DEFAULT_GUARDS.confidenceThreshold,
127
- maxToolCallsPerTask: config?.maxToolCallsPerTask ?? DEFAULT_GUARDS.maxToolCallsPerTask,
128
- maxConsecutiveFailures: config?.maxConsecutiveFailures ?? DEFAULT_GUARDS.maxConsecutiveFailures,
140
+ maxIterations: clampFinite(config?.maxIterations, DEFAULT_GUARDS.maxIterations, 1, 100_000),
141
+ costCapPerTask: clampFinite(config?.costCapPerTask, DEFAULT_GUARDS.costCapPerTask, 0, 1_000_000),
142
+ timeoutMs: clampFinite(config?.timeoutMs, DEFAULT_GUARDS.timeoutMs, 0, 30 * DAY_MS),
143
+ confidenceThreshold: clampFinite(config?.confidenceThreshold, DEFAULT_GUARDS.confidenceThreshold, 0, 1),
144
+ maxToolCallsPerTask: clampFinite(config?.maxToolCallsPerTask, DEFAULT_GUARDS.maxToolCallsPerTask, 0, 1_000_000),
145
+ maxConsecutiveFailures: clampFinite(config?.maxConsecutiveFailures, DEFAULT_GUARDS.maxConsecutiveFailures, 0, 100_000),
129
146
  };
130
147
  }
131
- //# sourceMappingURL=guards.js.map
@@ -10,4 +10,3 @@ export declare function fireSectionComplete(hooks: AgentHooks | undefined, sessi
10
10
  export declare function fireToolCall(hooks: AgentHooks | undefined, sessionId: string, result: ToolResult, iteration: number, cached: boolean, durationMs: number): void;
11
11
  export declare function fireGuard(hooks: AgentHooks | undefined, sessionId: string, signal: GuardSignal, iteration: number): void;
12
12
  export declare function fireFatalError(hooks: AgentHooks | undefined, error: Error, sessionId: string): void;
13
- //# sourceMappingURL=hooks.d.ts.map
@@ -58,4 +58,3 @@ export function fireFatalError(hooks, error, sessionId) {
58
58
  return;
59
59
  safely(() => hooks.onFatalError(error, sessionId));
60
60
  }
61
- //# sourceMappingURL=hooks.js.map
@@ -13,4 +13,3 @@ import type { AgentConfig } from "./types.js";
13
13
  * Returns an Agent object — call .handle() on every incoming event.
14
14
  */
15
15
  export declare function createAgent(config: AgentConfig): import("./types.js").Agent;
16
- //# sourceMappingURL=loop.d.ts.map
package/dist/core/loop.js CHANGED
@@ -28,7 +28,11 @@ export function createAgent(config) {
28
28
  const def = typeof config.definition === "string"
29
29
  ? parseDefinition(config.definition)
30
30
  : config.definition;
31
- const guards = resolveGuards(config.guards);
31
+ // Guard precedence (low → high): defaults < the agent.md `## Limits` block
32
+ // (def.limits) < explicit config.guards. Previously def.limits was parsed but
33
+ // never applied — the documented limits silently no-op'd (M1). resolveGuards
34
+ // then rejects any NaN/garbage and clamps to sane bounds (H10).
35
+ const guards = resolveGuards({ ...def.limits, ...config.guards });
32
36
  const prefix = config.redis.prefix ?? "msm";
33
37
  const ttl = config.redis.ttl ?? {};
34
38
  // Lazy-initialized shared Redis connection
@@ -445,4 +449,3 @@ function makeOutcome(type, sessionId, taskId, state, started, extra = {}) {
445
449
  ...extra,
446
450
  };
447
451
  }
448
- //# sourceMappingURL=loop.js.map
@@ -343,9 +343,16 @@ export interface GuardFiredInfo {
343
343
  * "proceed" — execute the tool normally
344
344
  * "skip" — skip execution, return { skipped: true }
345
345
  * { substituteResult } — return this result instead of executing
346
+ * { substituteParams } — execute the tool, but with THESE params instead of the
347
+ * model's (re-validated first). This is what lets an
348
+ * approval gate apply an operator's `approved_with_edits`
349
+ * before the tool runs — without it, edits are silently
350
+ * dropped and the original params execute.
346
351
  */
347
352
  export type BeforeToolHookResult = "proceed" | "skip" | {
348
353
  substituteResult: ToolResult;
354
+ } | {
355
+ substituteParams: Record<string, unknown>;
349
356
  };
350
357
  export interface AgentHooks {
351
358
  onIteration?: (info: IterationInfo) => void;
@@ -405,4 +412,3 @@ export interface Agent {
405
412
  pause(sessionId: string, companyId?: string, agentType?: string): Promise<void>;
406
413
  resume(sessionId: string, companyId?: string, agentType?: string): Promise<void>;
407
414
  }
408
- //# sourceMappingURL=types.d.ts.map
@@ -5,4 +5,3 @@
5
5
  * databases. Application layer owns persistence; agent owns the loop.
6
6
  */
7
7
  export {};
8
- //# sourceMappingURL=types.js.map
@@ -9,4 +9,3 @@ import type { AgentDefinition } from "../core/types.js";
9
9
  * Parse an agent definition from a .md file path or raw markdown string.
10
10
  */
11
11
  export declare function parseDefinition(input: string): AgentDefinition;
12
- //# sourceMappingURL=parser.d.ts.map
@@ -53,18 +53,24 @@ function parseMd(md) {
53
53
  },
54
54
  capabilities,
55
55
  limits: {
56
- maxIterations: Number(limits["maxIterations"] ?? limits["MaxIterations"] ?? 60),
57
- costCapPerTask: Number(limits["costCapPerTask"] ?? limits["CostCapPerTask"] ?? 2.5),
58
- timeoutMs: Number(limits["timeoutMs"] ?? limits["TimeoutMs"] ?? 900_000),
59
- confidenceThreshold: Number(limits["confidenceThreshold"] ?? limits["ConfidenceThreshold"] ?? 0.75),
60
- maxConsecutiveFailures: Number(limits["maxConsecutiveFailures"] ??
61
- limits["MaxConsecutiveFailures"] ??
62
- 3),
56
+ // safeNum coerces and rejects NaN (a garbage value like "fast" must NOT
57
+ // survive as NaN downstream `iteration >= NaN` is always false, silently
58
+ // disabling the cap). resolveGuards re-validates + clamps as the final gate.
59
+ maxIterations: safeNum(limits["maxIterations"] ?? limits["MaxIterations"], 60),
60
+ costCapPerTask: safeNum(limits["costCapPerTask"] ?? limits["CostCapPerTask"], 2.5),
61
+ timeoutMs: safeNum(limits["timeoutMs"] ?? limits["TimeoutMs"], 900_000),
62
+ confidenceThreshold: safeNum(limits["confidenceThreshold"] ?? limits["ConfidenceThreshold"], 0.75),
63
+ maxConsecutiveFailures: safeNum(limits["maxConsecutiveFailures"] ?? limits["MaxConsecutiveFailures"], 3),
63
64
  },
64
65
  ...(sections.length > 0 ? { sections } : {}),
65
66
  };
66
67
  }
67
68
  // ─── Helpers ─────────────────────────────────────────────────
69
+ /** Coerce to a finite number; fall back when missing or garbage (never returns NaN). */
70
+ function safeNum(value, fallback) {
71
+ const n = Number(value);
72
+ return Number.isFinite(n) ? n : fallback;
73
+ }
68
74
  function parseTopMeta(lines) {
69
75
  const result = {};
70
76
  for (const line of lines) {
@@ -117,4 +123,3 @@ function parseLimitsSection(lines) {
117
123
  function extractKey(obj, key) {
118
124
  return obj[key] ?? obj[key.toLowerCase()];
119
125
  }
120
- //# sourceMappingURL=parser.js.map
package/dist/index.d.ts CHANGED
@@ -19,4 +19,3 @@ export { scoreOutcome } from "./quality/scorer.js";
19
19
  export type { QualityScore, QualityFlag } from "./quality/scorer.js";
20
20
  export { createAgentServer } from "./server.js";
21
21
  export type { AgentServer, AgentServerOptions } from "./server.js";
22
- //# sourceMappingURL=index.d.ts.map
package/dist/index.js CHANGED
@@ -22,4 +22,3 @@ export { resolveGuards, DEFAULT_GUARDS } from "./core/guards.js";
22
22
  export { scoreOutcome } from "./quality/scorer.js";
23
23
  // ── HTTP server wrapper ─────────────────────────────────────────────────────
24
24
  export { createAgentServer } from "./server.js";
25
- //# sourceMappingURL=index.js.map
@@ -15,4 +15,3 @@ export interface QualityScore {
15
15
  flags: QualityFlag[];
16
16
  }
17
17
  export declare function scoreOutcome(outcome: LoopOutcome): QualityScore;
18
- //# sourceMappingURL=scorer.d.ts.map
@@ -19,4 +19,3 @@ export function scoreOutcome(outcome) {
19
19
  flags.push("high_error_rate");
20
20
  return { resolution, efficiency, errorRate, flags };
21
21
  }
22
- //# sourceMappingURL=scorer.js.map
package/dist/server.d.ts CHANGED
@@ -47,4 +47,3 @@ export interface AgentServer {
47
47
  */
48
48
  export declare function sanitizeGuardsOverride(raw: unknown): Partial<GuardConfig> | undefined;
49
49
  export declare function createAgentServer(agent: Agent, opts: AgentServerOptions): AgentServer;
50
- //# sourceMappingURL=server.d.ts.map
package/dist/server.js CHANGED
@@ -197,4 +197,3 @@ export function createAgentServer(agent, opts) {
197
197
  },
198
198
  };
199
199
  }
200
- //# sourceMappingURL=server.js.map
@@ -22,4 +22,3 @@ export declare function storeDedup(redis: RedisLike, dedupKey: string, hash: str
22
22
  */
23
23
  export declare function hashToolCall(toolName: string, args: Record<string, unknown>): string;
24
24
  export {};
25
- //# sourceMappingURL=dedup.d.ts.map
@@ -44,4 +44,3 @@ function sortKeys(obj) {
44
44
  .sort(([a], [b]) => a.localeCompare(b))
45
45
  .map(([k, v]) => [k, sortKeys(v)]));
46
46
  }
47
- //# sourceMappingURL=dedup.js.map
@@ -33,4 +33,3 @@ export declare function executeTool(tool: Tool, params: Record<string, unknown>,
33
33
  /** Build a ToolDefinition list from app-provided Tool objects (for brain prompt) */
34
34
  export declare function toToolDefinitions(tools: Tool[]): import("../core/types.js").ToolDefinition[];
35
35
  export {};
36
- //# sourceMappingURL=executor.d.ts.map
@@ -22,6 +22,9 @@ export async function executeTool(tool, params, meta, opts) {
22
22
  durationMs: Date.now() - start,
23
23
  };
24
24
  }
25
+ // The params the tool actually runs with — the onBeforeTool hook may override
26
+ // them (approval gate's approved_with_edits).
27
+ let effectiveParams = params;
25
28
  // Step 2: onBeforeTool hook — approval gate, audit, dry-run, etc.
26
29
  // Runs BEFORE the dedup check so every call (including ones that would be
27
30
  // served from cache) passes the gate — an approval/audit hook must never be
@@ -61,6 +64,20 @@ export async function executeTool(tool, params, meta, opts) {
61
64
  durationMs: Date.now() - start,
62
65
  };
63
66
  }
67
+ if (typeof directive === "object" && "substituteParams" in directive) {
68
+ // Operator approved WITH EDITS — run the tool with the edited params. Re-
69
+ // validate them (they are operator-supplied) and let dedup/execute below
70
+ // key off the NEW params.
71
+ effectiveParams = directive.substituteParams;
72
+ const editErr = validateParams(tool, effectiveParams);
73
+ if (editErr) {
74
+ return {
75
+ result: { tool: tool.name, status: "failed", error: editErr },
76
+ cached: false,
77
+ durationMs: Date.now() - start,
78
+ };
79
+ }
80
+ }
64
81
  // "proceed" — fall through
65
82
  }
66
83
  else if (tool.requiresApproval) {
@@ -76,8 +93,9 @@ export async function executeTool(tool, params, meta, opts) {
76
93
  durationMs: Date.now() - start,
77
94
  };
78
95
  }
79
- // Step 3: Dedup check
80
- const hash = hashToolCall(tool.name, params);
96
+ // Step 3: Dedup check (keyed on the EFFECTIVE params, so edited-approval runs
97
+ // are not served a cached result for the original params).
98
+ const hash = hashToolCall(tool.name, effectiveParams);
81
99
  const dedupKey = toolDedupKey(opts.redisPrefix, meta.sessionId);
82
100
  const cached = await checkDedup(opts.redis, dedupKey, hash);
83
101
  if (cached) {
@@ -86,7 +104,7 @@ export async function executeTool(tool, params, meta, opts) {
86
104
  // Step 4: Execute
87
105
  let result;
88
106
  try {
89
- result = await tool.execute(params, meta);
107
+ result = await tool.execute(effectiveParams, meta);
90
108
  }
91
109
  catch (err) {
92
110
  result = {
@@ -128,4 +146,3 @@ export function toToolDefinitions(tools) {
128
146
  : {}),
129
147
  }));
130
148
  }
131
- //# sourceMappingURL=executor.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@msm-core/mini",
3
- "version": "0.4.0",
3
+ "version": "0.5.0",
4
4
  "description": "Portable AI agent execution loop — brain-agnostic, zero embedded databases",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -31,11 +31,6 @@
31
31
  "publishConfig": {
32
32
  "access": "public"
33
33
  },
34
- "repository": {
35
- "type": "git",
36
- "url": "https://github.com/msm-core/sdk.git",
37
- "directory": "mini"
38
- },
39
34
  "scripts": {
40
35
  "build": "tsc",
41
36
  "test": "vitest run",
@@ -76,5 +71,5 @@
76
71
  "portable"
77
72
  ],
78
73
  "author": "Emad Jumaah",
79
- "license": "MIT"
74
+ "license": "UNLICENSED"
80
75
  }
@@ -1 +0,0 @@
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 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAE9D,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"redis-control.d.ts","sourceRoot":"","sources":["../../src/adapters/redis-control.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAIlD,qBAAa,eAAe;IAExB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBADN,KAAK,EAAE,SAAS,EAChB,MAAM,GAAE,MAAc;IAGzC,OAAO,CAAC,UAAU;IAIlB,4EAA4E;IACtE,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAIrD,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,SAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzD,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvC,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKxC,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/D,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7C,0EAA0E;IAC1E,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI;CAI3D"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"redis-control.js","sourceRoot":"","sources":["../../src/adapters/redis-control.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,SAAS;AAE9C,MAAM,OAAO,eAAe;IAEP;IACA;IAFnB,YACmB,KAAgB,EAChB,SAAiB,KAAK;QADtB,UAAK,GAAL,KAAK,CAAW;QAChB,WAAM,GAAN,MAAM,CAAgB;IACtC,CAAC;IAEI,UAAU,CAAC,SAAiB;QAClC,OAAO,GAAG,IAAI,CAAC,MAAM,kBAAkB,SAAS,EAAE,CAAC;IACrD,CAAC;IAED,4EAA4E;IAC5E,KAAK,CAAC,UAAU,CAAC,SAAiB;QAChC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,SAAiB,EAAE,MAAM,GAAG,QAAQ;QAC7C,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,QAAQ,MAAM,EAAE,CAAC,CAAC;IACnF,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,SAAiB;QAC3B,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,CAAC;IAC5D,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,SAAiB;QAC5B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAI,GAAG,KAAK,OAAO;YAAE,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;IACxE,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,SAAiB,EAAE,QAAgB;QACnD,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,YAAY,QAAQ,EAAE,CAAC,CAAC;IAC3E,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,SAAiB;QAC3B,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;IACnD,CAAC;IAED,0EAA0E;IAC1E,MAAM,CAAC,YAAY,CAAC,OAAsB;QACxC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,WAAW,CAAC;YAAE,OAAO,IAAI,CAAC;QACnD,OAAO,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC;CACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"redis-lock.d.ts","sourceRoot":"","sources":["../../src/adapters/redis-lock.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAkBlD,MAAM,WAAW,UAAU;IACzB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACzC;AAED,qBAAa,oBAAoB;IAE7B,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBADN,KAAK,EAAE,SAAS,EAChB,MAAM,GAAE,MAAc;IAGzC,OAAO,CAAC,OAAO;IAIf;;;OAGG;IACG,OAAO,CACX,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAiB7B;;;OAGG;IACG,gBAAgB,CACpB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,MAAM,SAAO,EACb,aAAa,SAAM,GAClB,OAAO,CAAC,UAAU,CAAC;CASvB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"redis-lock.js","sourceRoot":"","sources":["../../src/adapters/redis-lock.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAGrC,MAAM,cAAc,GAAG;;;;;;CAMtB,CAAC;AAEF,MAAM,aAAa,GAAG;;;;;;CAMrB,CAAC;AAOF,MAAM,OAAO,oBAAoB;IAEZ;IACA;IAFnB,YACmB,KAAgB,EAChB,SAAiB,KAAK;QADtB,UAAK,GAAL,KAAK,CAAW;QAChB,WAAM,GAAN,MAAM,CAAgB;IACtC,CAAC;IAEI,OAAO,CAAC,SAAiB;QAC/B,OAAO,GAAG,IAAI,CAAC,MAAM,YAAY,SAAS,OAAO,CAAC;IACpD,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,OAAO,CACX,SAAiB,EACjB,KAAa;QAEb,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACpC,MAAM,KAAK,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QACnE,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QAEzB,OAAO;YACL,OAAO,EAAE,KAAK,IAAI,EAAE;gBAClB,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;YACvD,CAAC;YACD,MAAM,EAAE,KAAK,EAAE,QAAgB,EAAE,EAAE;gBACjC,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAChF,OAAO,CAAC,KAAK,CAAC,CAAC;YACjB,CAAC;SACF,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,gBAAgB,CACpB,SAAiB,EACjB,KAAa,EACb,MAAM,GAAG,IAAI,EACb,aAAa,GAAG,GAAG;QAEnB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC;QACrC,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;YAC7B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YACpD,IAAI,MAAM;gBAAE,OAAO,MAAM,CAAC;YAC1B,MAAM,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QAClD,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,gDAAgD,SAAS,WAAW,MAAM,IAAI,CAAC,CAAC;IAClG,CAAC;CACF;AAED,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"redis-memory.d.ts","sourceRoot":"","sources":["../../src/adapters/redis-memory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAElD,MAAM,WAAW,eAAe;IAC9B,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAC;CACvD;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAY;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAS;gBAGzC,KAAK,EAAE,SAAS,EAChB,IAAI,GAAE;QACJ,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,qEAAqE;QACrE,iBAAiB,CAAC,EAAE,MAAM,CAAC;KACvB;IASR,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,WAAW;IAMb,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAU/D,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAc7D,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IAU/D,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAUpE,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAUlE,gBAAgB,CACpB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,aAAa,GACnB,OAAO,CAAC,IAAI,CAAC;CAOjB;AAED,uDAAuD;AACvD,wBAAsB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAMlE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"redis-memory.js","sourceRoot":"","sources":["../../src/adapters/redis-memory.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"redis-types.d.ts","sourceRoot":"","sources":["../../src/adapters/redis-types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAEzC,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAClC,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACrE,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9C,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1D,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACpE,yEAAyE;IACzE,KAAK,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACnE,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACvD,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACzD,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAElE,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACzE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"redis-types.js","sourceRoot":"","sources":["../../src/adapters/redis-types.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
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;AAKpB,wBAAgB,oBAAoB,CAAC,IAAI,EAAE;IACzC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,KAAK,CA4FR"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../src/brain/anthropic.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/brain/factory.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAM/D,wBAAgB,UAAU,CAAC,GAAG,EAAE,eAAe,GAAG,KAAK,CAiBtD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/brain/factory.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,UAAU,UAAU,CAAC,GAAoB;IAC7C,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC;IAExD,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,QAAQ;YACX,OAAO,iBAAiB,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACvI,KAAK,WAAW;YACd,OAAO,oBAAoB,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9F,KAAK,QAAQ;YACX,OAAO,iBAAiB,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAC3F,KAAK,QAAQ;YACX,OAAO,iBAAiB,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAC/F;YACE,MAAM,IAAI,KAAK,CACb,qCAAqC,MAAM,CAAC,QAAQ,CAAC,qDAAqD,CAC3G,CAAC;IACN,CAAC;AACH,CAAC"}
@@ -1 +0,0 @@
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;AAKpB,wBAAgB,iBAAiB,CAAC,IAAI,EAAE;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,KAAK,CAsHR"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../src/brain/gemini.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
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;AAGzF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,KAAK,CA8CR"}