@msm-core/mini 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. package/README.md +297 -0
  2. package/dist/adapters/index.d.ts +9 -0
  3. package/dist/adapters/index.d.ts.map +1 -0
  4. package/dist/adapters/index.js +7 -0
  5. package/dist/adapters/index.js.map +1 -0
  6. package/dist/adapters/redis-control.d.ts +25 -0
  7. package/dist/adapters/redis-control.d.ts.map +1 -0
  8. package/dist/adapters/redis-control.js +48 -0
  9. package/dist/adapters/redis-control.js.map +1 -0
  10. package/dist/adapters/redis-lock.d.ts +31 -0
  11. package/dist/adapters/redis-lock.d.ts.map +1 -0
  12. package/dist/adapters/redis-lock.js +73 -0
  13. package/dist/adapters/redis-lock.js.map +1 -0
  14. package/dist/adapters/redis-memory.d.ts +42 -0
  15. package/dist/adapters/redis-memory.d.ts.map +1 -0
  16. package/dist/adapters/redis-memory.js +87 -0
  17. package/dist/adapters/redis-memory.js.map +1 -0
  18. package/dist/adapters/redis-types.d.ts +17 -0
  19. package/dist/adapters/redis-types.d.ts.map +1 -0
  20. package/dist/adapters/redis-types.js +2 -0
  21. package/dist/adapters/redis-types.js.map +1 -0
  22. package/dist/brain/anthropic.d.ts +10 -0
  23. package/dist/brain/anthropic.d.ts.map +1 -0
  24. package/dist/brain/anthropic.js +73 -0
  25. package/dist/brain/anthropic.js.map +1 -0
  26. package/dist/brain/factory.d.ts +7 -0
  27. package/dist/brain/factory.d.ts.map +1 -0
  28. package/dist/brain/factory.js +24 -0
  29. package/dist/brain/factory.js.map +1 -0
  30. package/dist/brain/gemini.d.ts +10 -0
  31. package/dist/brain/gemini.d.ts.map +1 -0
  32. package/dist/brain/gemini.js +113 -0
  33. package/dist/brain/gemini.js.map +1 -0
  34. package/dist/brain/ollama.d.ts +10 -0
  35. package/dist/brain/ollama.d.ts.map +1 -0
  36. package/dist/brain/ollama.js +38 -0
  37. package/dist/brain/ollama.js.map +1 -0
  38. package/dist/brain/openai.d.ts +11 -0
  39. package/dist/brain/openai.d.ts.map +1 -0
  40. package/dist/brain/openai.js +96 -0
  41. package/dist/brain/openai.js.map +1 -0
  42. package/dist/brain/types.d.ts +6 -0
  43. package/dist/brain/types.d.ts.map +1 -0
  44. package/dist/brain/types.js +2 -0
  45. package/dist/brain/types.js.map +1 -0
  46. package/dist/core/context-builder.d.ts +25 -0
  47. package/dist/core/context-builder.d.ts.map +1 -0
  48. package/dist/core/context-builder.js +107 -0
  49. package/dist/core/context-builder.js.map +1 -0
  50. package/dist/core/gates.d.ts +16 -0
  51. package/dist/core/gates.d.ts.map +1 -0
  52. package/dist/core/gates.js +70 -0
  53. package/dist/core/gates.js.map +1 -0
  54. package/dist/core/guards.d.ts +22 -0
  55. package/dist/core/guards.d.ts.map +1 -0
  56. package/dist/core/guards.js +119 -0
  57. package/dist/core/guards.js.map +1 -0
  58. package/dist/core/hooks.d.ts +13 -0
  59. package/dist/core/hooks.d.ts.map +1 -0
  60. package/dist/core/hooks.js +61 -0
  61. package/dist/core/hooks.js.map +1 -0
  62. package/dist/core/loop.d.ts +16 -0
  63. package/dist/core/loop.d.ts.map +1 -0
  64. package/dist/core/loop.js +255 -0
  65. package/dist/core/loop.js.map +1 -0
  66. package/dist/core/types.d.ts +310 -0
  67. package/dist/core/types.d.ts.map +1 -0
  68. package/dist/core/types.js +8 -0
  69. package/dist/core/types.js.map +1 -0
  70. package/dist/definition/parser.d.ts +12 -0
  71. package/dist/definition/parser.d.ts.map +1 -0
  72. package/dist/definition/parser.js +117 -0
  73. package/dist/definition/parser.js.map +1 -0
  74. package/dist/index.d.ts +22 -0
  75. package/dist/index.d.ts.map +1 -0
  76. package/dist/index.js +25 -0
  77. package/dist/index.js.map +1 -0
  78. package/dist/quality/scorer.d.ts +18 -0
  79. package/dist/quality/scorer.d.ts.map +1 -0
  80. package/dist/quality/scorer.js +22 -0
  81. package/dist/quality/scorer.js.map +1 -0
  82. package/dist/server.d.ts +27 -0
  83. package/dist/server.d.ts.map +1 -0
  84. package/dist/server.js +118 -0
  85. package/dist/server.js.map +1 -0
  86. package/dist/tools/dedup.d.ts +20 -0
  87. package/dist/tools/dedup.d.ts.map +1 -0
  88. package/dist/tools/dedup.js +47 -0
  89. package/dist/tools/dedup.js.map +1 -0
  90. package/dist/tools/executor.d.ts +32 -0
  91. package/dist/tools/executor.d.ts.map +1 -0
  92. package/dist/tools/executor.js +75 -0
  93. package/dist/tools/executor.js.map +1 -0
  94. package/package.json +67 -0
@@ -0,0 +1,255 @@
1
+ /**
2
+ * Execution Loop — The core of msm-mini.
3
+ *
4
+ * event → gates → lock → control bus → context build → brain call →
5
+ * guards → dispatch:
6
+ * use_tool → validate/dedup/execute → record → loop
7
+ * respond/clarify/escalate → deliver → done
8
+ * budget exhausted → force_respond → done
9
+ */
10
+ import { randomBytes } from "crypto";
11
+ import { resolveGuards, checkGuards, hasHardBlock, hardAction, } from "./guards.js";
12
+ import { runGates } from "./gates.js";
13
+ import { buildContext } from "./context-builder.js";
14
+ import { fireIteration, fireToolCall, fireGuard, fireFatalError, fireSectionComplete, } from "./hooks.js";
15
+ import { RedisMemory, connectRedis } from "../adapters/redis-memory.js";
16
+ import { RedisControlBus } from "../adapters/redis-control.js";
17
+ import { RedisDistributedLock } from "../adapters/redis-lock.js";
18
+ import { executeTool, toToolDefinitions } from "../tools/executor.js";
19
+ import { parseDefinition } from "../definition/parser.js";
20
+ function makeTaskId() {
21
+ return randomBytes(8).toString("hex");
22
+ }
23
+ /**
24
+ * Create a stateful agent from config.
25
+ * Returns an Agent object — call .handle() on every incoming event.
26
+ */
27
+ export function createAgent(config) {
28
+ const def = typeof config.definition === "string"
29
+ ? parseDefinition(config.definition)
30
+ : config.definition;
31
+ const guards = resolveGuards(config.guards);
32
+ const prefix = config.redis.prefix ?? "msm";
33
+ const ttl = config.redis.ttl ?? {};
34
+ // Lazy-initialized shared Redis connection
35
+ let _redis = null;
36
+ async function getRedis() {
37
+ if (!_redis)
38
+ _redis = (await connectRedis(config.redis.url));
39
+ return _redis;
40
+ }
41
+ async function handle(event) {
42
+ const sessionId = event.sessionId;
43
+ const taskId = makeTaskId();
44
+ const started = Date.now();
45
+ const redis = await getRedis();
46
+ const memory = new RedisMemory(redis, {
47
+ prefix,
48
+ ...(ttl.history !== undefined ? { historyTtl: ttl.history } : {}),
49
+ ...(ttl.document !== undefined ? { documentTtl: ttl.document } : {}),
50
+ });
51
+ const controlBus = new RedisControlBus(redis, prefix);
52
+ const lock = new RedisDistributedLock(redis, prefix);
53
+ // ── Gates (zero-LLM filters) ─────────────────────────────
54
+ const gated = runGates(sessionId, taskId, event.message, config.gates);
55
+ if (gated)
56
+ return gated;
57
+ // ── Distributed lock ─────────────────────────────────────
58
+ const lockHandle = await lock.acquireWithRetry(sessionId, guards.timeoutMs + 30_000);
59
+ const state = {
60
+ sessionId,
61
+ taskId,
62
+ iteration: 0,
63
+ startedAt: started,
64
+ totalCostUsd: 0,
65
+ totalToolCalls: 0,
66
+ consecutiveToolFailures: 0,
67
+ };
68
+ const toolDefs = toToolDefinitions(config.tools);
69
+ const toolMap = new Map(config.tools.map((t) => [t.name, t]));
70
+ const toolResults = [];
71
+ try {
72
+ // Load history
73
+ const history = await memory.getHistory(sessionId, guards.maxIterations * 4);
74
+ // Loop
75
+ while (true) {
76
+ state.iteration++;
77
+ // ── Control bus check ─────────────────────────────────
78
+ const command = await controlBus.getCommand(sessionId);
79
+ // ── Guards ────────────────────────────────────────────
80
+ const action = state.lastPayload?.orchestration?.action ?? "respond";
81
+ const confidence = state.lastPayload?.orchestration?.confidence ?? 1;
82
+ const guardSignals = checkGuards(state, guards, action, confidence, command);
83
+ if (hasHardBlock(guardSignals)) {
84
+ const hardSignal = guardSignals.find((s) => s.hard);
85
+ fireGuard(config.hooks, sessionId, hardSignal, state.iteration);
86
+ const ha = hardAction(guardSignals);
87
+ if (ha === "abort") {
88
+ await lockHandle.release();
89
+ return makeOutcome("error", sessionId, taskId, state, started, {
90
+ text: `Aborted: ${hardSignal.message}`,
91
+ terminatedBy: hardSignal.type,
92
+ });
93
+ }
94
+ // force_respond / escalate → emit last text if available
95
+ const lastText = state.lastPayload?.generation?.response_text ??
96
+ state.lastPayload?.final_output?.text ??
97
+ "I was unable to complete this request within the allowed limits. Please try a more specific question.";
98
+ const outcomeType = ha === "escalate" ? "escalate" : "response";
99
+ await memory.appendHistory(sessionId, {
100
+ role: "assistant",
101
+ content: lastText,
102
+ timestamp: Date.now(),
103
+ });
104
+ await lockHandle.release();
105
+ return makeOutcome(outcomeType, sessionId, taskId, state, started, {
106
+ text: lastText,
107
+ terminatedBy: hardSignal.type,
108
+ toolCalls: toolResults,
109
+ });
110
+ }
111
+ // ── Context build ─────────────────────────────────────
112
+ const documentState = await memory.getDocumentState(sessionId);
113
+ const currentSection = documentState?.currentSection;
114
+ fireIteration(config.hooks, state, guards.maxIterations, currentSection);
115
+ const { system_context, history: trimmedHistory } = buildContext(def, history, toolDefs, event.context);
116
+ // ── Brain call ────────────────────────────────────────
117
+ const brainInput = {
118
+ raw: event.message,
119
+ system_context,
120
+ history: trimmedHistory,
121
+ tools: toolDefs,
122
+ ...(toolResults.length > 0
123
+ ? { tool_results: toolResults.slice(-5) }
124
+ : {}),
125
+ };
126
+ const payload = await config.brain.run(brainInput);
127
+ state.lastPayload = payload;
128
+ state.totalCostUsd += payload.costUsd ?? 0;
129
+ const orch = payload.orchestration;
130
+ // ── Tool call ─────────────────────────────────────────
131
+ if (orch?.action === "use_tool" && orch.tool_name) {
132
+ const toolName = orch.tool_name;
133
+ // Check if tool is disabled
134
+ const disabledTool = RedisControlBus.disabledTool(command);
135
+ if (disabledTool === toolName) {
136
+ toolResults.push({
137
+ tool: toolName,
138
+ status: "failed",
139
+ error: `Tool "${toolName}" is currently disabled`,
140
+ });
141
+ state.consecutiveToolFailures++;
142
+ continue;
143
+ }
144
+ const tool = toolMap.get(toolName);
145
+ if (!tool) {
146
+ toolResults.push({
147
+ tool: toolName,
148
+ status: "failed",
149
+ error: `Unknown tool: "${toolName}"`,
150
+ });
151
+ state.consecutiveToolFailures++;
152
+ continue;
153
+ }
154
+ const params = (orch.tool_params ?? {});
155
+ const exec = await executeTool(tool, params, {
156
+ sessionId,
157
+ iteration: state.iteration,
158
+ agentName: def.name,
159
+ }, {
160
+ redis,
161
+ redisPrefix: prefix,
162
+ dedupTtlSeconds: ttl.toolDedup ?? 300,
163
+ });
164
+ fireToolCall(config.hooks, sessionId, exec.result, state.iteration, exec.cached, exec.durationMs);
165
+ toolResults.push(exec.result);
166
+ state.totalToolCalls++;
167
+ if (exec.result.status === "failed") {
168
+ state.consecutiveToolFailures++;
169
+ }
170
+ else {
171
+ state.consecutiveToolFailures = 0;
172
+ }
173
+ continue; // next iteration
174
+ }
175
+ // ── Terminal outcome ──────────────────────────────────
176
+ const text = payload.generation?.response_text ?? payload.final_output?.text ?? "";
177
+ // Section complete tracking
178
+ if (documentState && currentSection) {
179
+ const idx = documentState.sections.indexOf(currentSection);
180
+ if (idx >= 0 &&
181
+ !documentState.completedSections.includes(currentSection)) {
182
+ documentState.completedSections.push(currentSection);
183
+ const nextSection = documentState.sections[idx + 1];
184
+ documentState.currentSection = nextSection ?? currentSection;
185
+ documentState.updatedAt = Date.now();
186
+ await memory.setDocumentState(sessionId, documentState);
187
+ fireSectionComplete(config.hooks, sessionId, currentSection, idx, documentState.sections.length);
188
+ }
189
+ }
190
+ // Record to history
191
+ await memory.appendHistory(sessionId, {
192
+ role: "user",
193
+ content: event.message,
194
+ timestamp: started,
195
+ });
196
+ await memory.appendHistory(sessionId, {
197
+ role: "assistant",
198
+ content: text,
199
+ timestamp: Date.now(),
200
+ });
201
+ const outcomeType = orch?.action === "clarify"
202
+ ? "clarify"
203
+ : orch?.action === "escalate"
204
+ ? "escalate"
205
+ : "response";
206
+ await lockHandle.release();
207
+ return makeOutcome(outcomeType, sessionId, taskId, state, started, {
208
+ text,
209
+ toolCalls: toolResults,
210
+ });
211
+ }
212
+ }
213
+ catch (err) {
214
+ const error = err instanceof Error ? err : new Error(String(err));
215
+ fireFatalError(config.hooks, error, sessionId);
216
+ await lockHandle.release();
217
+ return makeOutcome("error", sessionId, taskId, state, started, {
218
+ text: "An unexpected error occurred. Please try again.",
219
+ error: error.message,
220
+ });
221
+ }
222
+ }
223
+ async function kill(sessionId) {
224
+ const redis = await getRedis();
225
+ const bus = new RedisControlBus(redis, prefix);
226
+ await bus.kill(sessionId);
227
+ }
228
+ async function pause(sessionId) {
229
+ const redis = await getRedis();
230
+ const bus = new RedisControlBus(redis, prefix);
231
+ await bus.pause(sessionId);
232
+ }
233
+ async function resume(sessionId) {
234
+ const redis = await getRedis();
235
+ const bus = new RedisControlBus(redis, prefix);
236
+ await bus.resume(sessionId);
237
+ }
238
+ return { handle, kill, pause, resume };
239
+ }
240
+ // ─── Helpers ──────────────────────────────────────────────────
241
+ function makeOutcome(type, sessionId, taskId, state, started, extra = {}) {
242
+ return {
243
+ type,
244
+ sessionId,
245
+ taskId,
246
+ metrics: {
247
+ iterations: state.iteration,
248
+ totalCostUsd: state.totalCostUsd,
249
+ durationMs: Date.now() - started,
250
+ totalToolCalls: state.totalToolCalls,
251
+ },
252
+ ...extra,
253
+ };
254
+ }
255
+ //# sourceMappingURL=loop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loop.js","sourceRoot":"","sources":["../../src/core/loop.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,310 @@
1
+ /**
2
+ * msm-mini — Core Types
3
+ *
4
+ * All contracts for the lite agent runtime. Brain-agnostic, zero embedded
5
+ * databases. Application layer owns persistence; agent owns the loop.
6
+ */
7
+ /**
8
+ * A single memory entry — assembled by msm-context or by the app directly.
9
+ * The agent injects these into every brain call in priority order.
10
+ */
11
+ export interface MemoryEntry {
12
+ /** Tier/source identifier, e.g. "ground_truth", "project", "user_notes" */
13
+ source: string;
14
+ /** The text chunk to inject into the brain prompt */
15
+ content: string;
16
+ /** Similarity score 0–1 (higher = more relevant) */
17
+ score: number;
18
+ /** Estimated token count (used by context budget enforcement) */
19
+ tokenCount?: number;
20
+ metadata?: Record<string, unknown>;
21
+ }
22
+ /**
23
+ * Injected context — assembled by the app or msm-context before calling agent.handle().
24
+ * The agent never queries external stores directly; it receives ready context here.
25
+ */
26
+ export interface AgentContext {
27
+ /**
28
+ * Optional system prompt prefix — prepended to the agent's own persona/capabilities block.
29
+ * Use to inject study type, company profile, or session-specific instructions.
30
+ */
31
+ systemPrompt?: string;
32
+ /** Ordered memory entries (highest priority first). Injected into every brain call. */
33
+ memories?: MemoryEntry[];
34
+ /** Arbitrary user/profile facts — passed through to the brain prompt verbatim. */
35
+ userProfile?: Record<string, unknown>;
36
+ /** App-specific fields — passed through unchanged, not used by the loop itself. */
37
+ customFields?: Record<string, unknown>;
38
+ }
39
+ export interface AgentEvent {
40
+ sessionId: string;
41
+ /** The user's message */
42
+ message: string;
43
+ /**
44
+ * Pre-assembled context from msm-context or the app layer.
45
+ * Not required — agent works without context injection.
46
+ */
47
+ context?: AgentContext;
48
+ /** Optional: resume a task that was previously killed or interrupted */
49
+ resumeTaskId?: string;
50
+ }
51
+ /** A single role+content message in conversation history */
52
+ export interface Message {
53
+ role: "user" | "assistant" | "system" | "tool";
54
+ content: string;
55
+ toolName?: string;
56
+ toolCallId?: string;
57
+ timestamp?: number;
58
+ }
59
+ /** Tool definition passed to the brain so it knows what to call */
60
+ export interface ToolDefinition {
61
+ name: string;
62
+ description: string;
63
+ parameters: Record<string, ToolParameter>;
64
+ destructive?: boolean;
65
+ requiresApproval?: boolean;
66
+ category?: string;
67
+ }
68
+ export interface ToolParameter {
69
+ type: "string" | "number" | "boolean" | "object" | "array";
70
+ description: string;
71
+ required?: boolean;
72
+ enum?: string[];
73
+ default?: unknown;
74
+ }
75
+ /** Input the loop hands to every brain call */
76
+ export interface BrainRunInput {
77
+ /** Raw user message */
78
+ raw: string;
79
+ /** Assembled system context (persona + memories + tools + history) */
80
+ system_context: string;
81
+ /** Conversation history for this session */
82
+ history: Message[];
83
+ /** Tool results from previous iteration, if any */
84
+ tool_results?: ToolResult[];
85
+ /** Available tool definitions */
86
+ tools: ToolDefinition[];
87
+ }
88
+ export interface BrainOrchestration {
89
+ action: "use_tool" | "respond" | "clarify" | "escalate" | "delegate";
90
+ confidence: number;
91
+ tool_name?: string;
92
+ tool_params?: Record<string, unknown>;
93
+ reasoning?: string;
94
+ [key: string]: unknown;
95
+ }
96
+ export interface BrainGeneration {
97
+ response_text: string;
98
+ response_text_ar?: string;
99
+ [key: string]: unknown;
100
+ }
101
+ /** The payload every brain implementation must return */
102
+ export interface BrainPayload {
103
+ orchestration?: BrainOrchestration;
104
+ generation?: BrainGeneration;
105
+ /** Direct final output (alternative to generation.response_text) */
106
+ final_output?: {
107
+ text: string;
108
+ };
109
+ /** Reported cost in USD for this call (for cost accumulator) */
110
+ costUsd?: number;
111
+ /** Token usage from the brain */
112
+ usage?: {
113
+ inputTokens?: number;
114
+ outputTokens?: number;
115
+ };
116
+ [key: string]: unknown;
117
+ }
118
+ /** The Brain interface — any model that implements this works with msm-mini */
119
+ export interface Brain {
120
+ name: string;
121
+ run(input: BrainRunInput): Promise<BrainPayload>;
122
+ }
123
+ export interface ToolResult {
124
+ tool: string;
125
+ status: "ok" | "failed";
126
+ result?: Record<string, unknown>;
127
+ error?: string;
128
+ }
129
+ export interface ToolMeta {
130
+ sessionId: string;
131
+ iteration: number;
132
+ agentName: string;
133
+ }
134
+ /**
135
+ * A tool passed explicitly by the app. No registries — every tool the agent
136
+ * can call is declared at createAgent() time.
137
+ */
138
+ export interface Tool {
139
+ name: string;
140
+ description: string;
141
+ /** Zod schema or JSON Schema object — used for parameter validation */
142
+ parameters: Record<string, ToolParameter>;
143
+ /** Tool requires human approval before execution */
144
+ requiresApproval?: boolean;
145
+ execute(args: Record<string, unknown>, meta: ToolMeta): Promise<ToolResult>;
146
+ }
147
+ export type GuardSignalType = "budget_iterations" | "budget_cost" | "budget_timeout" | "budget_tool_calls" | "confidence_low" | "task_killed" | "tenant_paused" | "tool_disabled" | "consecutive_failures";
148
+ export interface GuardSignal {
149
+ type: GuardSignalType;
150
+ hard: boolean;
151
+ message: string;
152
+ /** Action the loop should take when this guard fires */
153
+ action?: "force_respond" | "clarify" | "escalate" | "abort";
154
+ }
155
+ export interface RunState {
156
+ sessionId: string;
157
+ taskId: string;
158
+ iteration: number;
159
+ startedAt: number;
160
+ totalCostUsd: number;
161
+ totalToolCalls: number;
162
+ consecutiveToolFailures: number;
163
+ /** Last brain payload (for force-respond on budget exhaustion) */
164
+ lastPayload?: BrainPayload;
165
+ }
166
+ export type OutcomeType = "response" | "tool_calls" | "error" | "clarify" | "escalate" | "suppressed";
167
+ export interface LoopOutcome {
168
+ type: OutcomeType;
169
+ sessionId: string;
170
+ taskId: string;
171
+ text?: string;
172
+ text_ar?: string;
173
+ toolCalls?: ToolResult[];
174
+ metrics: {
175
+ iterations: number;
176
+ totalCostUsd: number;
177
+ durationMs: number;
178
+ totalToolCalls: number;
179
+ };
180
+ /** Guard that terminated the loop, if any */
181
+ terminatedBy?: GuardSignalType;
182
+ error?: string;
183
+ }
184
+ /**
185
+ * Lightweight section tracker for document-generation agents.
186
+ * Stored in Redis as session:{id}:document — survives session interruption.
187
+ */
188
+ export interface DocumentState {
189
+ /** Ordered section list from agent definition ## Sections block */
190
+ sections: string[];
191
+ currentSection: string;
192
+ completedSections: string[];
193
+ /** Partial content of the section currently being drafted */
194
+ draftBuffer: string;
195
+ startedAt: number;
196
+ updatedAt: number;
197
+ }
198
+ export interface RedisConfig {
199
+ url: string;
200
+ /** Key prefix (default: "msm") */
201
+ prefix?: string;
202
+ ttl?: {
203
+ /** Session history TTL seconds (default: 86400 = 24h) */
204
+ history?: number;
205
+ /** Tool dedup TTL seconds (default: 300 = 5 min) */
206
+ toolDedup?: number;
207
+ /** Document state TTL seconds (default: 14400 = 4h) */
208
+ document?: number;
209
+ };
210
+ }
211
+ export interface GuardConfig {
212
+ maxIterations?: number;
213
+ costCapPerTask?: number;
214
+ timeoutMs?: number;
215
+ confidenceThreshold?: number;
216
+ maxToolCallsPerTask?: number;
217
+ maxConsecutiveFailures?: number;
218
+ }
219
+ export interface GateConfig {
220
+ /** Enable acknowledgement suppression gate (default: true) */
221
+ acknowledgement?: boolean;
222
+ /** Business hours gate — disabled by default */
223
+ businessHours?: {
224
+ days: Array<"sun" | "mon" | "tue" | "wed" | "thu" | "fri" | "sat">;
225
+ from: string;
226
+ to: string;
227
+ timezone: string;
228
+ closedMessage?: string;
229
+ };
230
+ }
231
+ export interface AgentConfig {
232
+ /** Path to .md definition file or pre-parsed AgentDefinition object */
233
+ definition: string | AgentDefinition;
234
+ brain: Brain;
235
+ redis: RedisConfig;
236
+ /** App-provided tools — agent can only call tools listed here */
237
+ tools: Tool[];
238
+ guards?: GuardConfig;
239
+ gates?: GateConfig;
240
+ hooks?: AgentHooks;
241
+ }
242
+ export interface IterationInfo {
243
+ sessionId: string;
244
+ iteration: number;
245
+ maxIterations: number;
246
+ currentSection?: string;
247
+ totalCostUsd: number;
248
+ elapsedMs: number;
249
+ }
250
+ export interface SectionInfo {
251
+ sessionId: string;
252
+ sectionName: string;
253
+ sectionIndex: number;
254
+ totalSections: number;
255
+ completedAt: number;
256
+ }
257
+ export interface ToolCallInfo {
258
+ sessionId: string;
259
+ toolName: string;
260
+ iteration: number;
261
+ cached: boolean;
262
+ durationMs: number;
263
+ status: "ok" | "failed";
264
+ }
265
+ export interface GuardFiredInfo {
266
+ sessionId: string;
267
+ signal: GuardSignal;
268
+ iteration: number;
269
+ }
270
+ export interface AgentHooks {
271
+ onIteration?: (info: IterationInfo) => void;
272
+ onSectionComplete?: (info: SectionInfo) => void;
273
+ onToolCall?: (info: ToolCallInfo) => void;
274
+ onGuard?: (info: GuardFiredInfo) => void;
275
+ onFatalError?: (error: Error, sessionId: string) => void;
276
+ }
277
+ export interface AgentDefinition {
278
+ name: string;
279
+ domain?: string;
280
+ language?: string;
281
+ persona: {
282
+ name?: string;
283
+ style?: string;
284
+ [key: string]: unknown;
285
+ };
286
+ brain: {
287
+ provider: "openai" | "anthropic" | "ollama" | "gemini" | "custom";
288
+ model: string;
289
+ endpoint?: string;
290
+ apiKey?: string;
291
+ [key: string]: unknown;
292
+ };
293
+ capabilities: string[];
294
+ limits: {
295
+ maxIterations: number;
296
+ costCapPerTask: number;
297
+ timeoutMs: number;
298
+ confidenceThreshold: number;
299
+ maxConsecutiveFailures?: number;
300
+ };
301
+ /** Ordered section list for document-generation agents */
302
+ sections?: string[];
303
+ }
304
+ export interface Agent {
305
+ handle(event: AgentEvent): Promise<LoopOutcome>;
306
+ kill(sessionId: string): Promise<void>;
307
+ pause(sessionId: string): Promise<void>;
308
+ resume(sessionId: string): Promise<void>;
309
+ }
310
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * msm-mini — Core Types
3
+ *
4
+ * All contracts for the lite agent runtime. Brain-agnostic, zero embedded
5
+ * databases. Application layer owns persistence; agent owns the loop.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Definition Parser — parse .md agent definition files.
3
+ *
4
+ * Supported sections: Persona, Brain, Capabilities, Limits, Sections
5
+ * Stripped: Equipment, Skills, Hours, Memory rules (owned by the app layer)
6
+ */
7
+ import type { AgentDefinition } from "../core/types.js";
8
+ /**
9
+ * Parse an agent definition from a .md file path or raw markdown string.
10
+ */
11
+ export declare function parseDefinition(input: string): AgentDefinition;
12
+ //# sourceMappingURL=parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/definition/parser.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAExD;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe,CAM9D"}