@vinkius-core/mcp-fusion 2.14.0 → 2.14.2

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 (61) hide show
  1. package/dist/cli/fusion.js +35 -35
  2. package/dist/cli/templates/config.js +26 -26
  3. package/dist/cli/templates/core.d.ts.map +1 -1
  4. package/dist/cli/templates/core.js +108 -111
  5. package/dist/cli/templates/core.js.map +1 -1
  6. package/dist/cli/templates/middleware.js +25 -25
  7. package/dist/cli/templates/readme.js +142 -142
  8. package/dist/cli/templates/testing.js +83 -83
  9. package/dist/cli/templates/tools.js +46 -46
  10. package/dist/cli/templates/vectors/database.js +69 -69
  11. package/dist/cli/templates/vectors/oauth.js +63 -63
  12. package/dist/cli/templates/vectors/openapi.js +97 -97
  13. package/dist/core/builder/ActionGroupBuilder.d.ts +6 -2
  14. package/dist/core/builder/ActionGroupBuilder.d.ts.map +1 -1
  15. package/dist/core/builder/ActionGroupBuilder.js +6 -2
  16. package/dist/core/builder/ActionGroupBuilder.js.map +1 -1
  17. package/dist/core/builder/FluentRouter.d.ts +6 -2
  18. package/dist/core/builder/FluentRouter.d.ts.map +1 -1
  19. package/dist/core/builder/FluentRouter.js +6 -2
  20. package/dist/core/builder/FluentRouter.js.map +1 -1
  21. package/dist/core/builder/FluentToolBuilder.d.ts +45 -9
  22. package/dist/core/builder/FluentToolBuilder.d.ts.map +1 -1
  23. package/dist/core/builder/FluentToolBuilder.js +54 -27
  24. package/dist/core/builder/FluentToolBuilder.js.map +1 -1
  25. package/dist/core/builder/GroupedToolBuilder.d.ts +32 -2
  26. package/dist/core/builder/GroupedToolBuilder.d.ts.map +1 -1
  27. package/dist/core/builder/GroupedToolBuilder.js +47 -2
  28. package/dist/core/builder/GroupedToolBuilder.js.map +1 -1
  29. package/dist/core/builder/defineTool.d.ts +5 -4
  30. package/dist/core/builder/defineTool.d.ts.map +1 -1
  31. package/dist/core/builder/defineTool.js +3 -2
  32. package/dist/core/builder/defineTool.js.map +1 -1
  33. package/dist/core/initFusion.d.ts +26 -1
  34. package/dist/core/initFusion.d.ts.map +1 -1
  35. package/dist/core/initFusion.js +5 -0
  36. package/dist/core/initFusion.js.map +1 -1
  37. package/dist/fsm/StateMachineGate.d.ts +264 -0
  38. package/dist/fsm/StateMachineGate.d.ts.map +1 -0
  39. package/dist/fsm/StateMachineGate.js +343 -0
  40. package/dist/fsm/StateMachineGate.js.map +1 -0
  41. package/dist/index.d.ts +4 -0
  42. package/dist/index.d.ts.map +1 -1
  43. package/dist/index.js +3 -0
  44. package/dist/index.js.map +1 -1
  45. package/dist/introspection/SemanticProbe.js +49 -49
  46. package/dist/observability/TelemetryBus.d.ts +82 -0
  47. package/dist/observability/TelemetryBus.d.ts.map +1 -0
  48. package/dist/observability/TelemetryBus.js +335 -0
  49. package/dist/observability/TelemetryBus.js.map +1 -0
  50. package/dist/observability/TelemetryEvent.d.ts +171 -0
  51. package/dist/observability/TelemetryEvent.d.ts.map +1 -0
  52. package/dist/observability/TelemetryEvent.js +2 -0
  53. package/dist/observability/TelemetryEvent.js.map +1 -0
  54. package/dist/presenter/definePresenter.d.ts +2 -2
  55. package/dist/presenter/definePresenter.d.ts.map +1 -1
  56. package/dist/prompt/FluentPromptBuilder.d.ts.map +1 -1
  57. package/dist/server/ServerAttachment.d.ts +63 -0
  58. package/dist/server/ServerAttachment.d.ts.map +1 -1
  59. package/dist/server/ServerAttachment.js +149 -6
  60. package/dist/server/ServerAttachment.js.map +1 -1
  61. package/package.json +10 -3
@@ -0,0 +1,343 @@
1
+ /**
2
+ * StateMachineGate — Temporal Anti-Hallucination Engine
3
+ *
4
+ * Zero-hallucination tool ordering via finite state machines.
5
+ * Tools bound to FSM states are **physically removed** from
6
+ * `tools/list` when the current state doesn't match — the LLM
7
+ * cannot call what doesn't exist in its reality.
8
+ *
9
+ * Powered by XState v5 (optional peer dependency, lazy-loaded).
10
+ *
11
+ * @example
12
+ * ```typescript
13
+ * const gate = new StateMachineGate({
14
+ * id: 'checkout',
15
+ * initial: 'empty',
16
+ * states: {
17
+ * empty: { on: { ADD_ITEM: 'has_items' } },
18
+ * has_items: { on: { CHECKOUT: 'payment', CLEAR: 'empty' } },
19
+ * payment: { on: { PAY: 'confirmed', CANCEL: 'has_items' } },
20
+ * confirmed: { on: { RESET: 'empty' } },
21
+ * },
22
+ * });
23
+ *
24
+ * gate.bindTool('cart_add_item', ['empty', 'has_items'], 'ADD_ITEM');
25
+ * gate.bindTool('cart_checkout', ['has_items'], 'CHECKOUT');
26
+ * gate.bindTool('cart_pay', ['payment'], 'PAY');
27
+ * ```
28
+ *
29
+ * ## Architecture
30
+ *
31
+ * ```
32
+ * ┌──────────────────────────────────────────────────────┐
33
+ * │ Boot: StateMachineGate(config) │
34
+ * │ │
35
+ * │ XState createMachine() → createActor() → .start() │
36
+ * │ │ │
37
+ * │ ▼ │
38
+ * │ tools/list request │
39
+ * │ │ │
40
+ * │ ▼ │
41
+ * │ gate.getVisibleTools(allTools) │
42
+ * │ → filter by current FSM state │
43
+ * │ → return only allowed tools │
44
+ * │ │ │
45
+ * │ ▼ │
46
+ * │ tools/call succeeds │
47
+ * │ → gate.transition(event) │
48
+ * │ → FSM advances → list_changed notification │
49
+ * └──────────────────────────────────────────────────────┘
50
+ * ```
51
+ *
52
+ * @module
53
+ */
54
+ // ── Lazy XState Loading ──────────────────────────────────
55
+ /** Cached XState module reference */
56
+ let xstateModule = null;
57
+ /** Whether we already attempted to load XState */
58
+ let xstateLoadAttempted = false;
59
+ /**
60
+ * Lazily load the `xstate` module.
61
+ *
62
+ * Returns `null` if `xstate` is not installed — the framework
63
+ * degrades gracefully (all tools remain visible, no gating).
64
+ *
65
+ * @internal
66
+ */
67
+ async function loadXState() {
68
+ if (xstateLoadAttempted)
69
+ return xstateModule;
70
+ xstateLoadAttempted = true;
71
+ try {
72
+ xstateModule = await import('xstate');
73
+ return xstateModule;
74
+ }
75
+ catch {
76
+ return null;
77
+ }
78
+ }
79
+ /**
80
+ * Pre-load `xstate` at boot time (optional optimization).
81
+ *
82
+ * Call during server startup to avoid the first-use dynamic import latency.
83
+ * Returns `true` if xstate is available, `false` otherwise.
84
+ *
85
+ * @example
86
+ * ```typescript
87
+ * import { initFsmEngine } from '@vinkius-core/mcp-fusion';
88
+ * const available = await initFsmEngine();
89
+ * if (!available) console.warn('xstate not installed — FSM gating disabled');
90
+ * ```
91
+ */
92
+ export async function initFsmEngine() {
93
+ return (await loadXState()) !== null;
94
+ }
95
+ // ── StateMachineGate ─────────────────────────────────────
96
+ /**
97
+ * Temporal Anti-Hallucination Engine.
98
+ *
99
+ * Wraps an XState v5 finite state machine and controls which MCP tools
100
+ * are visible to the LLM based on the current workflow state.
101
+ *
102
+ * **Hard constraint**: Tools not bound to the current state are removed
103
+ * from `tools/list` entirely — the LLM physically cannot call them.
104
+ *
105
+ * **Soft constraint**: `suggestActions` (HATEOAS) continues to recommend
106
+ * the best next action within the visible set. Zero conflict.
107
+ */
108
+ export class StateMachineGate {
109
+ _config;
110
+ _bindings = new Map();
111
+ _transitionCallbacks = [];
112
+ _actor = null;
113
+ _currentState;
114
+ _initialized = false;
115
+ /**
116
+ * @param config - FSM definition (states, transitions, initial state)
117
+ */
118
+ constructor(config) {
119
+ this._config = config;
120
+ this._currentState = config.initial;
121
+ }
122
+ // ── Initialization ───────────────────────────────────
123
+ /**
124
+ * Initialize the XState actor (lazy-loaded).
125
+ *
126
+ * Called automatically on first use. Can be called explicitly
127
+ * at boot time for eager initialization.
128
+ *
129
+ * @returns `true` if XState is available and the actor started
130
+ */
131
+ async init() {
132
+ if (this._initialized)
133
+ return this._actor !== null;
134
+ const xstate = await loadXState();
135
+ if (!xstate) {
136
+ this._initialized = true;
137
+ return false;
138
+ }
139
+ try {
140
+ const machine = xstate.createMachine(this._config);
141
+ this._actor = xstate.createActor(machine);
142
+ this._actor.subscribe((snapshot) => {
143
+ const newState = typeof snapshot.value === 'string'
144
+ ? snapshot.value
145
+ : Object.keys(snapshot.value)[0] ?? this._config.initial;
146
+ if (newState !== this._currentState) {
147
+ this._currentState = newState;
148
+ for (const cb of this._transitionCallbacks) {
149
+ cb();
150
+ }
151
+ }
152
+ });
153
+ this._actor.start();
154
+ this._initialized = true;
155
+ return true;
156
+ }
157
+ catch {
158
+ this._initialized = true;
159
+ return false;
160
+ }
161
+ }
162
+ // ── Tool Binding ─────────────────────────────────────
163
+ /**
164
+ * Bind a tool to specific FSM states.
165
+ *
166
+ * The tool will only appear in `tools/list` when the FSM
167
+ * is in one of the specified states.
168
+ *
169
+ * @param toolName - MCP tool name (flat: `cart_add_item`, grouped: `cart`)
170
+ * @param allowedStates - FSM states where this tool is visible
171
+ * @param transitionEvent - Event to send on successful execution (optional)
172
+ * @returns `this` for chaining
173
+ *
174
+ * @example
175
+ * ```typescript
176
+ * gate.bindTool('cart_add_item', ['empty', 'has_items'], 'ADD_ITEM');
177
+ * gate.bindTool('cart_checkout', ['has_items'], 'CHECKOUT');
178
+ * ```
179
+ */
180
+ bindTool(toolName, allowedStates, transitionEvent) {
181
+ const binding = {
182
+ allowedStates: new Set(allowedStates),
183
+ };
184
+ if (transitionEvent !== undefined)
185
+ binding.transitionEvent = transitionEvent;
186
+ this._bindings.set(toolName, binding);
187
+ return this;
188
+ }
189
+ // ── State Queries ────────────────────────────────────
190
+ /**
191
+ * Get the current FSM state.
192
+ */
193
+ get currentState() {
194
+ return this._currentState;
195
+ }
196
+ /**
197
+ * Check if a specific tool is allowed in the current FSM state.
198
+ *
199
+ * Tools **not** registered via `bindTool()` are always visible
200
+ * (ungated — they don't participate in FSM gating).
201
+ *
202
+ * @param toolName - MCP tool name to check
203
+ * @returns `true` if the tool should appear in `tools/list`
204
+ */
205
+ isToolAllowed(toolName) {
206
+ const binding = this._bindings.get(toolName);
207
+ if (!binding)
208
+ return true; // Ungated tools are always visible
209
+ return binding.allowedStates.has(this._currentState);
210
+ }
211
+ /**
212
+ * Filter a list of tool names by the current FSM state.
213
+ *
214
+ * @param toolNames - All registered tool names
215
+ * @returns Only the tools allowed in the current state
216
+ */
217
+ getVisibleToolNames(toolNames) {
218
+ return toolNames.filter(name => this.isToolAllowed(name));
219
+ }
220
+ /**
221
+ * Get the transition event for a tool (if any).
222
+ *
223
+ * @param toolName - MCP tool name
224
+ * @returns The event string, or `undefined` if no transition is bound
225
+ */
226
+ getTransitionEvent(toolName) {
227
+ return this._bindings.get(toolName)?.transitionEvent;
228
+ }
229
+ /**
230
+ * Check if any tools are bound to this FSM gate.
231
+ *
232
+ * @returns `true` if at least one tool is state-gated
233
+ */
234
+ get hasBindings() {
235
+ return this._bindings.size > 0;
236
+ }
237
+ // ── State Transitions ────────────────────────────────
238
+ /**
239
+ * Send an event to the FSM, potentially triggering a state transition.
240
+ *
241
+ * @param eventType - The event to send (e.g. `'ADD_ITEM'`, `'CHECKOUT'`)
242
+ * @returns Result indicating whether the state changed
243
+ */
244
+ async transition(eventType) {
245
+ const previousState = this._currentState;
246
+ // Ensure initialized
247
+ if (!this._initialized) {
248
+ await this.init();
249
+ }
250
+ if (this._actor) {
251
+ // XState actor handles the transition
252
+ this._actor.send({ type: eventType });
253
+ }
254
+ else {
255
+ // Fallback: manual transition without XState
256
+ this._transitionManual(eventType);
257
+ }
258
+ return {
259
+ changed: this._currentState !== previousState,
260
+ previousState,
261
+ currentState: this._currentState,
262
+ };
263
+ }
264
+ /**
265
+ * Manual state transition fallback when XState is not installed.
266
+ *
267
+ * Reads the FSM config directly to determine the next state.
268
+ * This provides basic FSM gating even without `xstate` installed,
269
+ * though without XState's guards, actions, and advanced features.
270
+ *
271
+ * @internal
272
+ */
273
+ _transitionManual(eventType) {
274
+ const stateConfig = this._config.states[this._currentState];
275
+ if (!stateConfig?.on)
276
+ return;
277
+ const target = stateConfig.on[eventType];
278
+ if (target && this._config.states[target]) {
279
+ const previousState = this._currentState;
280
+ this._currentState = target;
281
+ if (previousState !== this._currentState) {
282
+ for (const cb of this._transitionCallbacks) {
283
+ cb();
284
+ }
285
+ }
286
+ }
287
+ }
288
+ // ── Transition Callbacks ─────────────────────────────
289
+ /**
290
+ * Register a callback that fires when the FSM state changes.
291
+ *
292
+ * Used by `ServerAttachment` to emit `notifications/tools/list_changed`
293
+ * when a state transition makes tools appear or disappear.
294
+ *
295
+ * @param callback - Function to call on state change
296
+ * @returns Unsubscribe function
297
+ */
298
+ onTransition(callback) {
299
+ this._transitionCallbacks.push(callback);
300
+ return () => {
301
+ const idx = this._transitionCallbacks.indexOf(callback);
302
+ if (idx >= 0)
303
+ this._transitionCallbacks.splice(idx, 1);
304
+ };
305
+ }
306
+ // ── Persistence (Serverless/Edge) ────────────────────
307
+ /**
308
+ * Create a serializable snapshot of the current FSM state.
309
+ *
310
+ * Used with `FsmStateStore` for serverless deployments where
311
+ * FSM state must survive across request boundaries.
312
+ *
313
+ * @returns Serializable snapshot
314
+ */
315
+ snapshot() {
316
+ return {
317
+ state: this._currentState,
318
+ updatedAt: Date.now(),
319
+ };
320
+ }
321
+ /**
322
+ * Restore FSM state from a persisted snapshot.
323
+ *
324
+ * @param snap - Previously saved snapshot
325
+ */
326
+ restore(snap) {
327
+ if (this._config.states[snap.state]) {
328
+ this._currentState = snap.state;
329
+ }
330
+ }
331
+ // ── Cleanup ──────────────────────────────────────────
332
+ /**
333
+ * Stop the XState actor and release resources.
334
+ */
335
+ dispose() {
336
+ if (this._actor) {
337
+ this._actor.stop();
338
+ this._actor = null;
339
+ }
340
+ this._transitionCallbacks.length = 0;
341
+ }
342
+ }
343
+ //# sourceMappingURL=StateMachineGate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StateMachineGate.js","sourceRoot":"","sources":["../../src/fsm/StateMachineGate.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -135,4 +135,8 @@ export type { GuardResult } from './sandbox/index.js';
135
135
  export { createSerializer, defaultSerializer } from './core/serialization/index.js';
136
136
  /** @category Serialization */
137
137
  export type { StringifyFn, JsonSerializer } from './core/serialization/index.js';
138
+ /** @category FSM */
139
+ export { StateMachineGate, initFsmEngine } from './fsm/StateMachineGate.js';
140
+ /** @category FSM */
141
+ export type { FsmConfig, FsmStateStore, FsmSnapshot, TransitionResult, } from './fsm/StateMachineGate.js';
138
142
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAGH,8BAA8B;AAC9B,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,8BAA8B;AAC9B,OAAO,EAAE,KAAK,IAAI,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACzD,8BAA8B;AAC9B,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,8BAA8B;AAC9B,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,8BAA8B;AAC9B,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,8BAA8B;AAC9B,OAAO,EAAE,KAAK,WAAW,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC9E,8BAA8B;AAC9B,OAAO,EAAE,KAAK,eAAe,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAC1F,8BAA8B;AAC9B,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,8BAA8B;AAC9B,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,8BAA8B;AAC9B,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,8BAA8B;AAC9B,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAGhD,2BAA2B;AAC3B,OAAO,EACH,aAAa,EACb,KAAK,cAAc,EAAE,kBAAkB,EACvC,KAAK,aAAa,EAAE,iBAAiB,EACrC,KAAK,eAAe,EAAE,mBAAmB,EACzC,KAAK,iBAAiB,EAAE,qBAAqB,EAC7C,KAAK,wBAAwB,EAAE,4BAA4B,EAC9D,MAAM,uBAAuB,CAAC;AAG/B,qBAAqB;AACrB,OAAO,EACH,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAChD,kBAAkB,EAAE,kBAAkB,EAAE,UAAU,EAAE,UAAU,EAC9D,YAAY,EACZ,uBAAuB,EACvB,OAAO,EAAE,IAAI,EACb,QAAQ,EACR,gBAAgB,EAAE,iBAAiB,EACnC,UAAU,EACV,WAAW,EACX,mBAAmB,EAAE,aAAa,EAAE,gBAAgB,EAAE,aAAa,EAEnE,iBAAiB,EAAE,YAAY,GAClC,MAAM,iBAAiB,CAAC;AACzB,qBAAqB;AACrB,YAAY,EACR,YAAY,EAAE,gBAAgB,EAAE,SAAS,EAAE,aAAa,EACxD,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAC7C,UAAU,EACV,WAAW,EAAE,cAAc,EAC3B,MAAM,EAAE,OAAO,EAAE,OAAO,EACxB,UAAU,EAAE,SAAS,EAAE,QAAQ,EAC/B,aAAa,EAAE,YAAY,EAC3B,oBAAoB,EAAE,YAAY,EAAE,eAAe,EACnD,iBAAiB,EAAE,YAAY,EAC/B,aAAa,EAAE,aAAa,EAAE,gBAAgB,EAC9C,cAAc,EACd,WAAW,EAAE,WAAW,EAAE,aAAa,EACvC,gBAAgB,EAAE,mBAAmB,EAAE,mBAAmB,EAC1D,eAAe,EAAE,gBAAgB,EACjC,gBAAgB,EAChB,aAAa,GAChB,MAAM,iBAAiB,CAAC;AAGzB,uBAAuB;AACvB,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC/F,uBAAuB;AACvB,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,SAAS,EAAE,WAAW,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAGzJ,8BAA8B;AAC9B,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/E,8BAA8B;AAC9B,YAAY,EACR,UAAU,EAAE,eAAe,EAC3B,UAAU,EAAE,aAAa,EAAE,eAAe,EAAE,YAAY,EAAE,UAAU,EACpE,eAAe,EAAE,mBAAmB,EACpC,UAAU,EAAE,YAAY,EAAE,oBAAoB,GACjD,MAAM,0BAA0B,CAAC;AAGlC,0BAA0B;AAC1B,OAAO,EACH,eAAe,EAAE,QAAQ,EAAE,iBAAiB,EAC5C,EAAE,EAAE,CAAC,EAAE,OAAO,EACd,SAAS,EAAE,eAAe,EAAE,WAAW,EACvC,wBAAwB,EACxB,eAAe,EACf,sBAAsB,EACtB,eAAe,EAAE,gBAAgB,GACpC,MAAM,sBAAsB,CAAC;AAC9B,0BAA0B;AAC1B,YAAY,EAAE,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAGxI,uBAAuB;AACvB,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACpG,uBAAuB;AACvB,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,uBAAuB;AACvB,YAAY,EACR,oBAAoB,EAAE,YAAY,EAClC,cAAc,EAAE,eAAe,EAC/B,aAAa,EAAE,YAAY,GAC9B,MAAM,mBAAmB,CAAC;AAC3B,uBAAuB;AACvB,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAG7E,uBAAuB;AACvB,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACjE,uBAAuB;AACvB,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,uBAAuB;AACvB,YAAY,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,uBAAuB;AACvB,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,uBAAuB;AACvB,YAAY,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAGpE,2BAA2B;AAC3B,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAG9E,0BAA0B;AAC1B,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAChG,0BAA0B;AAC1B,YAAY,EACR,cAAc,EAAE,UAAU,EAAE,eAAe,EAAE,cAAc,EAC3D,iBAAiB,EAAE,oBAAoB,EAAE,cAAc,GAC1D,MAAM,uBAAuB,CAAC;AAG/B,wBAAwB;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,wBAAwB;AACxB,YAAY,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAG1D,2BAA2B;AAC3B,OAAO,EACH,mBAAmB,EACnB,gBAAgB,EAChB,MAAM,EACN,YAAY,GACf,MAAM,iCAAiC,CAAC;AACzC,2BAA2B;AAC3B,YAAY,EACR,YAAY,EACZ,WAAW,EACX,cAAc,EACd,YAAY,EACZ,2BAA2B,EAC3B,qBAAqB,EACrB,mBAAmB,GACtB,MAAM,iCAAiC,CAAC;AACzC,2BAA2B;AAC3B,OAAO,EACH,aAAa,EACb,gBAAgB,EAChB,iBAAiB,GACpB,MAAM,iCAAiC,CAAC;AACzC,2BAA2B;AAC3B,YAAY,EACR,aAAa,EACb,kBAAkB,EAClB,aAAa,EACb,aAAa,GAChB,MAAM,iCAAiC,CAAC;AACzC,2BAA2B;AAC3B,OAAO,EACH,aAAa,EACb,mBAAmB,EACnB,oBAAoB,GACvB,MAAM,mCAAmC,CAAC;AAC3C,2BAA2B;AAC3B,YAAY,EACR,oBAAoB,EACpB,gBAAgB,EAChB,YAAY,EACZ,gBAAgB,GACnB,MAAM,mCAAmC,CAAC;AAE3C,2BAA2B;AAC3B,OAAO,EACH,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,aAAa,EACb,YAAY,EACZ,aAAa,GAChB,MAAM,uCAAuC,CAAC;AAC/C,2BAA2B;AAC3B,YAAY,EACR,kBAAkB,EAClB,oBAAoB,EACpB,YAAY,EACZ,mBAAmB,EACnB,oBAAoB,EACpB,sBAAsB,EACtB,oBAAoB,EACpB,mBAAmB,EACnB,cAAc,EACd,sBAAsB,EACtB,iBAAiB,EACjB,uBAAuB,GAC1B,MAAM,uCAAuC,CAAC;AAC/C,2BAA2B;AAC3B,OAAO,EACH,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,GACnB,MAAM,sCAAsC,CAAC;AAC9C,2BAA2B;AAC3B,YAAY,EACR,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,GACxB,MAAM,sCAAsC,CAAC;AAC9C,2BAA2B;AAC3B,OAAO,EACH,cAAc,EACd,YAAY,EACZ,eAAe,EACf,oBAAoB,EACpB,iBAAiB,GACpB,MAAM,mCAAmC,CAAC;AAC3C,2BAA2B;AAC3B,YAAY,EACR,aAAa,EACb,iBAAiB,EACjB,SAAS,EACT,eAAe,EACf,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,GACrB,MAAM,mCAAmC,CAAC;AAC3C,2BAA2B;AAC3B,OAAO,EACH,UAAU,EACV,iBAAiB,EACjB,cAAc,EACd,eAAe,GAClB,MAAM,uCAAuC,CAAC;AAC/C,2BAA2B;AAC3B,YAAY,EACR,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,EACpB,mBAAmB,EACnB,iBAAiB,GACpB,MAAM,uCAAuC,CAAC;AAC/C,2BAA2B;AAC3B,OAAO,EACH,WAAW,EACX,gBAAgB,EAChB,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,gBAAgB,GACnB,MAAM,kCAAkC,CAAC;AAC1C,2BAA2B;AAC3B,YAAY,EACR,mBAAmB,EACnB,oBAAoB,EACpB,aAAa,EACb,mBAAmB,EACnB,UAAU,EACV,mBAAmB,GACtB,MAAM,kCAAkC,CAAC;AAC1C,2BAA2B;AAC3B,OAAO,EACH,qBAAqB,EACrB,kBAAkB,GACrB,MAAM,6CAA6C,CAAC;AACrD,2BAA2B;AAC3B,YAAY,EACR,iBAAiB,EACjB,iBAAiB,GACpB,MAAM,6CAA6C,CAAC;AACrD,2BAA2B;AAC3B,OAAO,EACH,wBAAwB,EACxB,kBAAkB,GACrB,MAAM,uCAAuC,CAAC;AAC/C,2BAA2B;AAC3B,YAAY,EACR,wBAAwB,EACxB,kBAAkB,GACrB,MAAM,uCAAuC,CAAC;AAG/C,wBAAwB;AACxB,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AACpG,wBAAwB;AACxB,YAAY,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGtD,8BAA8B;AAC9B,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AACpF,8BAA8B;AAC9B,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -102,4 +102,7 @@ export { SandboxEngine, validateSandboxCode, SANDBOX_SYSTEM_INSTRUCTION } from '
102
102
  // ── Serialization (AOT JSON Engine) ─────────────────────
103
103
  /** @category Serialization */
104
104
  export { createSerializer, defaultSerializer } from './core/serialization/index.js';
105
+ // ── FSM State Gate (Temporal Anti-Hallucination) ─────────
106
+ /** @category FSM */
107
+ export { StateMachineGate, initFsmEngine } from './fsm/StateMachineGate.js';
105
108
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -62,57 +62,57 @@ export function createProbe(toolName, actionKey, input, expectedOutput, actualOu
62
62
  * @returns Complete evaluation prompt
63
63
  */
64
64
  export function buildJudgePrompt(probe) {
65
- return `You are a semantic evaluation judge for an MCP (Model Context Protocol) tool.
66
-
67
- Your task is to compare two outputs from the same tool handler and determine:
68
- 1. Whether they are semantically equivalent
69
- 2. Whether the current output violates the tool's behavioral contract
70
-
71
- ## Tool Information
72
- - **Tool**: ${probe.toolName}
73
- - **Action**: ${probe.actionKey}
74
- - **Description**: ${probe.contractContext.description ?? 'No description'}
75
- - **Read-Only**: ${probe.contractContext.readOnly}
76
- - **Destructive**: ${probe.contractContext.destructive}
77
-
78
- ## Behavioral Contract
65
+ return `You are a semantic evaluation judge for an MCP (Model Context Protocol) tool.
66
+
67
+ Your task is to compare two outputs from the same tool handler and determine:
68
+ 1. Whether they are semantically equivalent
69
+ 2. Whether the current output violates the tool's behavioral contract
70
+
71
+ ## Tool Information
72
+ - **Tool**: ${probe.toolName}
73
+ - **Action**: ${probe.actionKey}
74
+ - **Description**: ${probe.contractContext.description ?? 'No description'}
75
+ - **Read-Only**: ${probe.contractContext.readOnly}
76
+ - **Destructive**: ${probe.contractContext.destructive}
77
+
78
+ ## Behavioral Contract
79
79
  ${probe.contractContext.systemRules.length > 0
80
80
  ? `### System Rules\n${probe.contractContext.systemRules.map((r, i) => `${i + 1}. ${r}`).join('\n')}`
81
- : 'No system rules declared.'}
82
-
83
- ### Expected Output Schema Fields
84
- ${probe.contractContext.schemaKeys.join(', ') || 'No schema declared'}
85
-
86
- ## Input Arguments
87
- \`\`\`json
88
- ${JSON.stringify(probe.input, null, 2)}
89
- \`\`\`
90
-
91
- ## Expected Output (Baseline)
92
- \`\`\`json
93
- ${JSON.stringify(probe.expectedOutput, null, 2)}
94
- \`\`\`
95
-
96
- ## Actual Output (Current)
97
- \`\`\`json
98
- ${JSON.stringify(probe.actualOutput, null, 2)}
99
- \`\`\`
100
-
101
- ## Evaluation Instructions
102
- Compare the Expected Output with the Actual Output. Consider:
103
- - Are the outputs semantically equivalent (same meaning, even if format differs)?
104
- - Does the Actual Output violate any system rules?
105
- - Does the Actual Output return fields not in the expected schema?
106
- - Has the behavior meaningfully changed from the baseline?
107
-
108
- Respond with ONLY a JSON object in this exact format:
109
- \`\`\`json
110
- {
111
- "similarityScore": <number 0.0-1.0>,
112
- "contractViolated": <boolean>,
113
- "violations": [<string descriptions of violations>],
114
- "reasoning": "<brief explanation of your assessment>"
115
- }
81
+ : 'No system rules declared.'}
82
+
83
+ ### Expected Output Schema Fields
84
+ ${probe.contractContext.schemaKeys.join(', ') || 'No schema declared'}
85
+
86
+ ## Input Arguments
87
+ \`\`\`json
88
+ ${JSON.stringify(probe.input, null, 2)}
89
+ \`\`\`
90
+
91
+ ## Expected Output (Baseline)
92
+ \`\`\`json
93
+ ${JSON.stringify(probe.expectedOutput, null, 2)}
94
+ \`\`\`
95
+
96
+ ## Actual Output (Current)
97
+ \`\`\`json
98
+ ${JSON.stringify(probe.actualOutput, null, 2)}
99
+ \`\`\`
100
+
101
+ ## Evaluation Instructions
102
+ Compare the Expected Output with the Actual Output. Consider:
103
+ - Are the outputs semantically equivalent (same meaning, even if format differs)?
104
+ - Does the Actual Output violate any system rules?
105
+ - Does the Actual Output return fields not in the expected schema?
106
+ - Has the behavior meaningfully changed from the baseline?
107
+
108
+ Respond with ONLY a JSON object in this exact format:
109
+ \`\`\`json
110
+ {
111
+ "similarityScore": <number 0.0-1.0>,
112
+ "contractViolated": <boolean>,
113
+ "violations": [<string descriptions of violations>],
114
+ "reasoning": "<brief explanation of your assessment>"
115
+ }
116
116
  \`\`\``;
117
117
  }
118
118
  /**
@@ -0,0 +1,82 @@
1
+ import type { TelemetryEvent, TelemetrySink } from './TelemetryEvent.js';
2
+ /**
3
+ * Compute the IPC path for a given process ID.
4
+ *
5
+ * - Windows: `\\.\pipe\mcp-fusion-{pid}` (Named Pipe, auto-cleaned by OS)
6
+ * - POSIX: `/tmp/mcp-fusion-{pid}.sock` (Unix Domain Socket)
7
+ *
8
+ * @param pid - Process ID (defaults to `process.pid`)
9
+ * @returns The IPC path string
10
+ */
11
+ export declare function getTelemetryPath(pid?: number): string;
12
+ /**
13
+ * Discover active telemetry sockets by scanning for `mcp-fusion-*.sock`.
14
+ * Returns an array of `{ pid, path }` for each discovered socket.
15
+ *
16
+ * On Windows, Named Pipes are not file-system entities, so we probe
17
+ * a list of candidate PIDs from the user.
18
+ *
19
+ * @param candidatePids - Optional list of PIDs to probe (Windows-only)
20
+ * @returns Array of discovered sockets with their PIDs
21
+ */
22
+ export declare function discoverSockets(candidatePids?: number[]): Array<{
23
+ pid: number;
24
+ path: string;
25
+ }>;
26
+ /**
27
+ * Configuration for the telemetry bus.
28
+ */
29
+ export interface TelemetryBusConfig {
30
+ /**
31
+ * Custom IPC path. If omitted, uses the default path convention.
32
+ */
33
+ readonly path?: string;
34
+ /**
35
+ * Callback invoked when a TUI client connects.
36
+ * Receives a function to send the initial topology snapshot.
37
+ */
38
+ readonly onConnect?: () => TelemetryEvent | undefined;
39
+ }
40
+ /**
41
+ * A running telemetry bus instance.
42
+ */
43
+ export interface TelemetryBusInstance {
44
+ /** The emit function — pass as `TelemetrySink` to the server */
45
+ readonly emit: TelemetrySink;
46
+ /** The IPC path the bus is listening on */
47
+ readonly path: string;
48
+ /** Number of connected TUI clients */
49
+ readonly clientCount: () => number;
50
+ /** Gracefully shut down the bus */
51
+ readonly close: () => Promise<void>;
52
+ }
53
+ /**
54
+ * Create an out-of-band telemetry bus for MCP Fusion.
55
+ *
56
+ * The returned `emit` function is the {@link TelemetrySink} to pass
57
+ * to `AttachOptions.telemetry`. It broadcasts events as NDJSON
58
+ * to all connected TUI clients via IPC.
59
+ *
60
+ * When no clients are connected, `emit()` is a no-op — zero overhead.
61
+ *
62
+ * @param config - Optional configuration
63
+ * @returns A promise that resolves to the running bus instance
64
+ *
65
+ * @example
66
+ * ```typescript
67
+ * import { createTelemetryBus } from '@vinkius-core/mcp-fusion/observability';
68
+ *
69
+ * const bus = await createTelemetryBus();
70
+ *
71
+ * // Pass to server attachment
72
+ * registry.attachToServer(server, {
73
+ * contextFactory: createContext,
74
+ * telemetry: bus.emit,
75
+ * });
76
+ *
77
+ * // On shutdown
78
+ * await bus.close();
79
+ * ```
80
+ */
81
+ export declare function createTelemetryBus(config?: TelemetryBusConfig): Promise<TelemetryBusInstance>;
82
+ //# sourceMappingURL=TelemetryBus.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TelemetryBus.d.ts","sourceRoot":"","sources":["../../src/observability/TelemetryBus.ts"],"names":[],"mappings":"AAiCA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAgBzE;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAMrD;AAED;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CA0B9F;AA2ED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAC/B;;OAEG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAEvB;;;OAGG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,cAAc,GAAG,SAAS,CAAC;CACzD;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACjC,gEAAgE;IAChE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,2CAA2C;IAC3C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,sCAAsC;IACtC,QAAQ,CAAC,WAAW,EAAE,MAAM,MAAM,CAAC;IACnC,mCAAmC;IACnC,QAAQ,CAAC,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACvC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAsB,kBAAkB,CAAC,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CA+InG"}