@animalabs/agent-framework 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.
- package/LICENSE +21 -0
- package/README.md +233 -0
- package/dist/src/agent.d.ts +130 -0
- package/dist/src/agent.d.ts.map +1 -0
- package/dist/src/agent.js +406 -0
- package/dist/src/agent.js.map +1 -0
- package/dist/src/api/mcp-server.d.ts +37 -0
- package/dist/src/api/mcp-server.d.ts.map +1 -0
- package/dist/src/api/mcp-server.js +598 -0
- package/dist/src/api/mcp-server.js.map +1 -0
- package/dist/src/api/server.d.ts +83 -0
- package/dist/src/api/server.d.ts.map +1 -0
- package/dist/src/api/server.js +785 -0
- package/dist/src/api/server.js.map +1 -0
- package/dist/src/api/types.d.ts +395 -0
- package/dist/src/api/types.d.ts.map +1 -0
- package/dist/src/api/types.js +5 -0
- package/dist/src/api/types.js.map +1 -0
- package/dist/src/framework.d.ts +309 -0
- package/dist/src/framework.d.ts.map +1 -0
- package/dist/src/framework.js +2309 -0
- package/dist/src/framework.js.map +1 -0
- package/dist/src/gate/event-gate.d.ts +75 -0
- package/dist/src/gate/event-gate.d.ts.map +1 -0
- package/dist/src/gate/event-gate.js +503 -0
- package/dist/src/gate/event-gate.js.map +1 -0
- package/dist/src/gate/index.d.ts +3 -0
- package/dist/src/gate/index.d.ts.map +1 -0
- package/dist/src/gate/index.js +2 -0
- package/dist/src/gate/index.js.map +1 -0
- package/dist/src/gate/types.d.ts +82 -0
- package/dist/src/gate/types.d.ts.map +1 -0
- package/dist/src/gate/types.js +9 -0
- package/dist/src/gate/types.js.map +1 -0
- package/dist/src/index.d.ts +17 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +18 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/mcpl/channel-registry.d.ts +141 -0
- package/dist/src/mcpl/channel-registry.d.ts.map +1 -0
- package/dist/src/mcpl/channel-registry.js +647 -0
- package/dist/src/mcpl/channel-registry.js.map +1 -0
- package/dist/src/mcpl/checkpoint-manager.d.ts +79 -0
- package/dist/src/mcpl/checkpoint-manager.d.ts.map +1 -0
- package/dist/src/mcpl/checkpoint-manager.js +430 -0
- package/dist/src/mcpl/checkpoint-manager.js.map +1 -0
- package/dist/src/mcpl/errors.d.ts +52 -0
- package/dist/src/mcpl/errors.d.ts.map +1 -0
- package/dist/src/mcpl/errors.js +93 -0
- package/dist/src/mcpl/errors.js.map +1 -0
- package/dist/src/mcpl/feature-set-manager.d.ts +91 -0
- package/dist/src/mcpl/feature-set-manager.d.ts.map +1 -0
- package/dist/src/mcpl/feature-set-manager.js +250 -0
- package/dist/src/mcpl/feature-set-manager.js.map +1 -0
- package/dist/src/mcpl/hook-orchestrator.d.ts +51 -0
- package/dist/src/mcpl/hook-orchestrator.d.ts.map +1 -0
- package/dist/src/mcpl/hook-orchestrator.js +217 -0
- package/dist/src/mcpl/hook-orchestrator.js.map +1 -0
- package/dist/src/mcpl/index.d.ts +14 -0
- package/dist/src/mcpl/index.d.ts.map +1 -0
- package/dist/src/mcpl/index.js +21 -0
- package/dist/src/mcpl/index.js.map +1 -0
- package/dist/src/mcpl/inference-router.d.ts +67 -0
- package/dist/src/mcpl/inference-router.d.ts.map +1 -0
- package/dist/src/mcpl/inference-router.js +249 -0
- package/dist/src/mcpl/inference-router.js.map +1 -0
- package/dist/src/mcpl/push-handler.d.ts +60 -0
- package/dist/src/mcpl/push-handler.d.ts.map +1 -0
- package/dist/src/mcpl/push-handler.js +162 -0
- package/dist/src/mcpl/push-handler.js.map +1 -0
- package/dist/src/mcpl/scope-manager.d.ts +76 -0
- package/dist/src/mcpl/scope-manager.d.ts.map +1 -0
- package/dist/src/mcpl/scope-manager.js +213 -0
- package/dist/src/mcpl/scope-manager.js.map +1 -0
- package/dist/src/mcpl/server-connection.d.ts +174 -0
- package/dist/src/mcpl/server-connection.d.ts.map +1 -0
- package/dist/src/mcpl/server-connection.js +559 -0
- package/dist/src/mcpl/server-connection.js.map +1 -0
- package/dist/src/mcpl/server-registry.d.ts +63 -0
- package/dist/src/mcpl/server-registry.d.ts.map +1 -0
- package/dist/src/mcpl/server-registry.js +119 -0
- package/dist/src/mcpl/server-registry.js.map +1 -0
- package/dist/src/mcpl/types.d.ts +755 -0
- package/dist/src/mcpl/types.d.ts.map +1 -0
- package/dist/src/mcpl/types.js +48 -0
- package/dist/src/mcpl/types.js.map +1 -0
- package/dist/src/module-registry.d.ts +93 -0
- package/dist/src/module-registry.d.ts.map +1 -0
- package/dist/src/module-registry.js +386 -0
- package/dist/src/module-registry.js.map +1 -0
- package/dist/src/modules/api/index.d.ts +22 -0
- package/dist/src/modules/api/index.d.ts.map +1 -0
- package/dist/src/modules/api/index.js +63 -0
- package/dist/src/modules/api/index.js.map +1 -0
- package/dist/src/modules/discord/discord-js-client.d.ts +58 -0
- package/dist/src/modules/discord/discord-js-client.d.ts.map +1 -0
- package/dist/src/modules/discord/discord-js-client.js +273 -0
- package/dist/src/modules/discord/discord-js-client.js.map +1 -0
- package/dist/src/modules/discord/index.d.ts +82 -0
- package/dist/src/modules/discord/index.d.ts.map +1 -0
- package/dist/src/modules/discord/index.js +959 -0
- package/dist/src/modules/discord/index.js.map +1 -0
- package/dist/src/modules/discord/types.d.ts +327 -0
- package/dist/src/modules/discord/types.d.ts.map +1 -0
- package/dist/src/modules/discord/types.js +5 -0
- package/dist/src/modules/discord/types.js.map +1 -0
- package/dist/src/modules/index.d.ts +11 -0
- package/dist/src/modules/index.d.ts.map +1 -0
- package/dist/src/modules/index.js +7 -0
- package/dist/src/modules/index.js.map +1 -0
- package/dist/src/modules/workspace/index.d.ts +59 -0
- package/dist/src/modules/workspace/index.d.ts.map +1 -0
- package/dist/src/modules/workspace/index.js +831 -0
- package/dist/src/modules/workspace/index.js.map +1 -0
- package/dist/src/modules/workspace/sync.d.ts +48 -0
- package/dist/src/modules/workspace/sync.d.ts.map +1 -0
- package/dist/src/modules/workspace/sync.js +253 -0
- package/dist/src/modules/workspace/sync.js.map +1 -0
- package/dist/src/modules/workspace/types.d.ts +166 -0
- package/dist/src/modules/workspace/types.d.ts.map +1 -0
- package/dist/src/modules/workspace/types.js +5 -0
- package/dist/src/modules/workspace/types.js.map +1 -0
- package/dist/src/modules/workspace/watcher.d.ts +43 -0
- package/dist/src/modules/workspace/watcher.d.ts.map +1 -0
- package/dist/src/modules/workspace/watcher.js +120 -0
- package/dist/src/modules/workspace/watcher.js.map +1 -0
- package/dist/src/queue.d.ts +50 -0
- package/dist/src/queue.d.ts.map +1 -0
- package/dist/src/queue.js +95 -0
- package/dist/src/queue.js.map +1 -0
- package/dist/src/safe-slice.d.ts +8 -0
- package/dist/src/safe-slice.d.ts.map +1 -0
- package/dist/src/safe-slice.js +18 -0
- package/dist/src/safe-slice.js.map +1 -0
- package/dist/src/types/agent.d.ts +118 -0
- package/dist/src/types/agent.d.ts.map +1 -0
- package/dist/src/types/agent.js +2 -0
- package/dist/src/types/agent.js.map +1 -0
- package/dist/src/types/events.d.ts +220 -0
- package/dist/src/types/events.d.ts.map +1 -0
- package/dist/src/types/events.js +2 -0
- package/dist/src/types/events.js.map +1 -0
- package/dist/src/types/framework.d.ts +184 -0
- package/dist/src/types/framework.d.ts.map +1 -0
- package/dist/src/types/framework.js +2 -0
- package/dist/src/types/framework.js.map +1 -0
- package/dist/src/types/index.d.ts +7 -0
- package/dist/src/types/index.d.ts.map +1 -0
- package/dist/src/types/index.js +7 -0
- package/dist/src/types/index.js.map +1 -0
- package/dist/src/types/inference-log.d.ts +64 -0
- package/dist/src/types/inference-log.d.ts.map +1 -0
- package/dist/src/types/inference-log.js +5 -0
- package/dist/src/types/inference-log.js.map +1 -0
- package/dist/src/types/module.d.ts +302 -0
- package/dist/src/types/module.d.ts.map +1 -0
- package/dist/src/types/module.js +2 -0
- package/dist/src/types/module.js.map +1 -0
- package/dist/src/types/trace.d.ts +173 -0
- package/dist/src/types/trace.d.ts.map +1 -0
- package/dist/src/types/trace.js +2 -0
- package/dist/src/types/trace.js.map +1 -0
- package/dist/test/event-gate.test.d.ts +2 -0
- package/dist/test/event-gate.test.d.ts.map +1 -0
- package/dist/test/event-gate.test.js +535 -0
- package/dist/test/event-gate.test.js.map +1 -0
- package/dist/test/framework.test.d.ts +5 -0
- package/dist/test/framework.test.d.ts.map +1 -0
- package/dist/test/framework.test.js +738 -0
- package/dist/test/framework.test.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +58 -0
- package/src/agent.ts +512 -0
- package/src/api/mcp-server.ts +687 -0
- package/src/api/server.ts +1023 -0
- package/src/api/types.ts +542 -0
- package/src/framework.ts +2784 -0
- package/src/gate/event-gate.ts +623 -0
- package/src/gate/index.ts +12 -0
- package/src/gate/types.ts +112 -0
- package/src/index.ts +63 -0
- package/src/mcpl/channel-registry.ts +824 -0
- package/src/mcpl/checkpoint-manager.ts +545 -0
- package/src/mcpl/errors.ts +114 -0
- package/src/mcpl/feature-set-manager.ts +333 -0
- package/src/mcpl/hook-orchestrator.ts +281 -0
- package/src/mcpl/index.ts +134 -0
- package/src/mcpl/inference-router.ts +335 -0
- package/src/mcpl/push-handler.ts +232 -0
- package/src/mcpl/scope-manager.ts +262 -0
- package/src/mcpl/server-connection.ts +694 -0
- package/src/mcpl/server-registry.ts +144 -0
- package/src/mcpl/types.ts +991 -0
- package/src/module-registry.ts +547 -0
- package/src/modules/api/index.ts +94 -0
- package/src/modules/discord/discord-js-client.ts +353 -0
- package/src/modules/discord/index.ts +1146 -0
- package/src/modules/discord/types.ts +465 -0
- package/src/modules/index.ts +43 -0
- package/src/modules/workspace/index.ts +969 -0
- package/src/modules/workspace/sync.ts +314 -0
- package/src/modules/workspace/types.ts +202 -0
- package/src/modules/workspace/watcher.ts +142 -0
- package/src/queue.ts +106 -0
- package/src/safe-slice.ts +18 -0
- package/src/types/agent.ts +119 -0
- package/src/types/events.ts +252 -0
- package/src/types/framework.ts +211 -0
- package/src/types/index.ts +6 -0
- package/src/types/inference-log.ts +64 -0
- package/src/types/module.ts +367 -0
- package/src/types/trace.ts +196 -0
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CheckpointManager — MCPL state management with branching checkpoint trees.
|
|
3
|
+
*
|
|
4
|
+
* Manages per-(serverId, featureSet) checkpoint trees for stateful MCPL tools.
|
|
5
|
+
* Two modes:
|
|
6
|
+
* - hostState: true → host stores state data, applies JSON Patch deltas
|
|
7
|
+
* - hostState: false → host tracks opaque checkpoint IDs only
|
|
8
|
+
*
|
|
9
|
+
* Checkpoint tree metadata is persisted to Chronicle via a `mcpl/checkpoints`
|
|
10
|
+
* state slot. Host-managed state data is persisted per feature set.
|
|
11
|
+
*
|
|
12
|
+
* Spec reference: Section 8 (State Management).
|
|
13
|
+
*/
|
|
14
|
+
import type { JsStore } from '@animalabs/chronicle';
|
|
15
|
+
import type { StateCheckpoint, JsonPatchOperation } from './types.js';
|
|
16
|
+
/**
|
|
17
|
+
* Apply a JSON Patch (RFC 6902) to a document.
|
|
18
|
+
* Supports: add, remove, replace, test.
|
|
19
|
+
* Operates on a deep-cloned document to avoid mutation.
|
|
20
|
+
*/
|
|
21
|
+
export declare function applyJsonPatch(doc: unknown, ops: JsonPatchOperation[]): unknown;
|
|
22
|
+
export declare class CheckpointManager {
|
|
23
|
+
private store;
|
|
24
|
+
private emitTraceFn;
|
|
25
|
+
private trees;
|
|
26
|
+
constructor(store: JsStore, emitTraceFn: (event: {
|
|
27
|
+
type: string;
|
|
28
|
+
[key: string]: unknown;
|
|
29
|
+
}) => void);
|
|
30
|
+
/**
|
|
31
|
+
* Register a feature set as stateful.
|
|
32
|
+
* Called during initializeMcpl for feature sets with rollback or hostState.
|
|
33
|
+
*/
|
|
34
|
+
registerFeatureSet(serverId: string, featureSet: string, opts: {
|
|
35
|
+
hostState: boolean;
|
|
36
|
+
rollback: boolean;
|
|
37
|
+
}): void;
|
|
38
|
+
/**
|
|
39
|
+
* Record a checkpoint returned in a tool call response.
|
|
40
|
+
* Updates the tree and persists to Chronicle.
|
|
41
|
+
*/
|
|
42
|
+
recordCheckpoint(serverId: string, featureSet: string, checkpoint: StateCheckpoint): void;
|
|
43
|
+
/** Get current reconstructed state for host-managed feature sets. */
|
|
44
|
+
getCurrentState(serverId: string, featureSet: string): unknown | undefined;
|
|
45
|
+
/** Get current checkpoint ID for server-managed feature sets. */
|
|
46
|
+
getCurrentCheckpoint(serverId: string, featureSet: string): string | null;
|
|
47
|
+
/** Check if a (serverId, featureSet) pair is registered as stateful. */
|
|
48
|
+
isStateful(serverId: string, featureSet: string): boolean;
|
|
49
|
+
/** Check if a (serverId, featureSet) pair uses host-managed state. */
|
|
50
|
+
isHostManaged(serverId: string, featureSet: string): boolean;
|
|
51
|
+
/**
|
|
52
|
+
* Get the first stateful feature set for a given server.
|
|
53
|
+
* Returns null if no stateful feature sets are registered.
|
|
54
|
+
*/
|
|
55
|
+
getStatefulFeatureSet(serverId: string): string | null;
|
|
56
|
+
/**
|
|
57
|
+
* Roll back to a previous checkpoint in the tree.
|
|
58
|
+
* Updates the current pointer and, for host-managed state, reconstructs
|
|
59
|
+
* the state at that checkpoint.
|
|
60
|
+
*
|
|
61
|
+
* Returns the reconstructed state (host-managed) or undefined (server-managed).
|
|
62
|
+
* Throws if the checkpoint is not found.
|
|
63
|
+
*/
|
|
64
|
+
rollbackTo(serverId: string, featureSet: string, checkpoint: string): unknown | undefined;
|
|
65
|
+
/** Remove all state for a server (called on disconnect). */
|
|
66
|
+
removeServer(serverId: string): void;
|
|
67
|
+
/**
|
|
68
|
+
* Reconstruct host-managed state at a given checkpoint by walking
|
|
69
|
+
* from the nearest ancestor with full data down to the target.
|
|
70
|
+
*/
|
|
71
|
+
private reconstructState;
|
|
72
|
+
/** Persist checkpoint tree metadata to Chronicle. */
|
|
73
|
+
private persistTree;
|
|
74
|
+
/** Load checkpoint tree from Chronicle on startup. */
|
|
75
|
+
private loadFromStore;
|
|
76
|
+
private key;
|
|
77
|
+
private stateId;
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=checkpoint-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkpoint-manager.d.ts","sourceRoot":"","sources":["../../../src/mcpl/checkpoint-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAEpD,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAqFtE;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAmE/E;AAMD,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,KAAK,CAAU;IACvB,OAAO,CAAC,WAAW,CAA4D;IAC/E,OAAO,CAAC,KAAK,CAAsC;gBAGjD,KAAK,EAAE,OAAO,EACd,WAAW,EAAE,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,KAAK,IAAI;IAoBxE;;;OAGG;IACH,kBAAkB,CAChB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE;QAAE,SAAS,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,GAC9C,IAAI;IA2CP;;;OAGG;IACH,gBAAgB,CACd,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,eAAe,GAC1B,IAAI;IAmEP,qEAAqE;IACrE,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAI1E,iEAAiE;IACjE,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAQzE,wEAAwE;IACxE,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO;IAIzD,sEAAsE;IACtE,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO;IAI5D;;;OAGG;IACH,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IActD;;;;;;;OAOG;IACH,UAAU,CACR,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,OAAO,GAAG,SAAS;IA+BtB,4DAA4D;IAC5D,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAuBpC;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAoCxB,qDAAqD;IACrD,OAAO,CAAC,WAAW;IAwBnB,sDAAsD;IACtD,OAAO,CAAC,aAAa;IA8BrB,OAAO,CAAC,GAAG;IAIX,OAAO,CAAC,OAAO;CAGhB"}
|
|
@@ -0,0 +1,430 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CheckpointManager — MCPL state management with branching checkpoint trees.
|
|
3
|
+
*
|
|
4
|
+
* Manages per-(serverId, featureSet) checkpoint trees for stateful MCPL tools.
|
|
5
|
+
* Two modes:
|
|
6
|
+
* - hostState: true → host stores state data, applies JSON Patch deltas
|
|
7
|
+
* - hostState: false → host tracks opaque checkpoint IDs only
|
|
8
|
+
*
|
|
9
|
+
* Checkpoint tree metadata is persisted to Chronicle via a `mcpl/checkpoints`
|
|
10
|
+
* state slot. Host-managed state data is persisted per feature set.
|
|
11
|
+
*
|
|
12
|
+
* Spec reference: Section 8 (State Management).
|
|
13
|
+
*/
|
|
14
|
+
// ============================================================================
|
|
15
|
+
// Constants
|
|
16
|
+
// ============================================================================
|
|
17
|
+
/** Chronicle state ID for checkpoint tree metadata. */
|
|
18
|
+
const CHECKPOINTS_STATE_ID = 'mcpl/checkpoints';
|
|
19
|
+
/** Prefix for per-feature-set host-managed state. */
|
|
20
|
+
const STATE_PREFIX = 'mcpl/state';
|
|
21
|
+
// ============================================================================
|
|
22
|
+
// JSON Patch (RFC 6902) — minimal implementation
|
|
23
|
+
// ============================================================================
|
|
24
|
+
/**
|
|
25
|
+
* Parse a JSON Pointer (RFC 6901) into path segments.
|
|
26
|
+
* E.g. "/foo/0/bar" → ["foo", "0", "bar"]
|
|
27
|
+
*/
|
|
28
|
+
function parsePointer(pointer) {
|
|
29
|
+
if (pointer === '')
|
|
30
|
+
return [];
|
|
31
|
+
if (!pointer.startsWith('/')) {
|
|
32
|
+
throw new Error(`Invalid JSON Pointer: ${pointer}`);
|
|
33
|
+
}
|
|
34
|
+
return pointer.slice(1).split('/').map((s) => s.replace(/~1/g, '/').replace(/~0/g, '~'));
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Navigate to a parent container and return [parent, lastKey].
|
|
38
|
+
* Throws if the path doesn't exist.
|
|
39
|
+
*/
|
|
40
|
+
function navigateTo(doc, segments) {
|
|
41
|
+
let current = doc;
|
|
42
|
+
for (let i = 0; i < segments.length - 1; i++) {
|
|
43
|
+
const seg = segments[i];
|
|
44
|
+
if (Array.isArray(current)) {
|
|
45
|
+
current = current[Number(seg)];
|
|
46
|
+
}
|
|
47
|
+
else if (current !== null && typeof current === 'object') {
|
|
48
|
+
current = current[seg];
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
throw new Error(`Cannot navigate path segment "${seg}": not an object/array`);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return [current, segments[segments.length - 1]];
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Apply a JSON Patch (RFC 6902) to a document.
|
|
58
|
+
* Supports: add, remove, replace, test.
|
|
59
|
+
* Operates on a deep-cloned document to avoid mutation.
|
|
60
|
+
*/
|
|
61
|
+
export function applyJsonPatch(doc, ops) {
|
|
62
|
+
let result = structuredClone(doc);
|
|
63
|
+
for (const op of ops) {
|
|
64
|
+
const segments = parsePointer(op.path);
|
|
65
|
+
switch (op.op) {
|
|
66
|
+
case 'add': {
|
|
67
|
+
if (segments.length === 0) {
|
|
68
|
+
result = op.value;
|
|
69
|
+
break;
|
|
70
|
+
}
|
|
71
|
+
const [parent, key] = navigateTo(result, segments);
|
|
72
|
+
if (Array.isArray(parent)) {
|
|
73
|
+
const idx = key === '-' ? parent.length : Number(key);
|
|
74
|
+
parent.splice(idx, 0, op.value);
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
parent[key] = op.value;
|
|
78
|
+
}
|
|
79
|
+
break;
|
|
80
|
+
}
|
|
81
|
+
case 'remove': {
|
|
82
|
+
const [parent, key] = navigateTo(result, segments);
|
|
83
|
+
if (Array.isArray(parent)) {
|
|
84
|
+
parent.splice(Number(key), 1);
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
delete parent[key];
|
|
88
|
+
}
|
|
89
|
+
break;
|
|
90
|
+
}
|
|
91
|
+
case 'replace': {
|
|
92
|
+
if (segments.length === 0) {
|
|
93
|
+
result = op.value;
|
|
94
|
+
break;
|
|
95
|
+
}
|
|
96
|
+
const [parent, key] = navigateTo(result, segments);
|
|
97
|
+
if (Array.isArray(parent)) {
|
|
98
|
+
parent[Number(key)] = op.value;
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
parent[key] = op.value;
|
|
102
|
+
}
|
|
103
|
+
break;
|
|
104
|
+
}
|
|
105
|
+
case 'test': {
|
|
106
|
+
const [parent, key] = navigateTo(result, segments);
|
|
107
|
+
const actual = Array.isArray(parent)
|
|
108
|
+
? parent[Number(key)]
|
|
109
|
+
: parent[key];
|
|
110
|
+
if (JSON.stringify(actual) !== JSON.stringify(op.value)) {
|
|
111
|
+
throw new Error(`JSON Patch test failed at "${op.path}": expected ${JSON.stringify(op.value)}, got ${JSON.stringify(actual)}`);
|
|
112
|
+
}
|
|
113
|
+
break;
|
|
114
|
+
}
|
|
115
|
+
case 'move':
|
|
116
|
+
case 'copy':
|
|
117
|
+
// Deferred — not needed for MVP
|
|
118
|
+
throw new Error(`JSON Patch op "${op.op}" not yet supported`);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
return result;
|
|
122
|
+
}
|
|
123
|
+
// ============================================================================
|
|
124
|
+
// CheckpointManager
|
|
125
|
+
// ============================================================================
|
|
126
|
+
export class CheckpointManager {
|
|
127
|
+
store;
|
|
128
|
+
emitTraceFn;
|
|
129
|
+
trees = new Map();
|
|
130
|
+
constructor(store, emitTraceFn) {
|
|
131
|
+
this.store = store;
|
|
132
|
+
this.emitTraceFn = emitTraceFn;
|
|
133
|
+
// Register the checkpoint metadata state slot
|
|
134
|
+
try {
|
|
135
|
+
store.registerState({ id: CHECKPOINTS_STATE_ID, strategy: 'snapshot' });
|
|
136
|
+
}
|
|
137
|
+
catch {
|
|
138
|
+
// Already registered (e.g. framework restart)
|
|
139
|
+
}
|
|
140
|
+
// Load existing tree from Chronicle
|
|
141
|
+
this.loadFromStore();
|
|
142
|
+
}
|
|
143
|
+
// ==========================================================================
|
|
144
|
+
// Registration
|
|
145
|
+
// ==========================================================================
|
|
146
|
+
/**
|
|
147
|
+
* Register a feature set as stateful.
|
|
148
|
+
* Called during initializeMcpl for feature sets with rollback or hostState.
|
|
149
|
+
*/
|
|
150
|
+
registerFeatureSet(serverId, featureSet, opts) {
|
|
151
|
+
const key = this.key(serverId, featureSet);
|
|
152
|
+
if (this.trees.has(key))
|
|
153
|
+
return; // Already registered (e.g. from loaded state)
|
|
154
|
+
this.trees.set(key, {
|
|
155
|
+
hostState: opts.hostState,
|
|
156
|
+
rollback: opts.rollback,
|
|
157
|
+
currentCheckpoint: null,
|
|
158
|
+
currentState: undefined,
|
|
159
|
+
nodes: new Map(),
|
|
160
|
+
});
|
|
161
|
+
// Register per-feature-set state slot for host-managed state
|
|
162
|
+
if (opts.hostState) {
|
|
163
|
+
const stateId = this.stateId(serverId, featureSet);
|
|
164
|
+
try {
|
|
165
|
+
this.store.registerState({ id: stateId, strategy: 'snapshot' });
|
|
166
|
+
}
|
|
167
|
+
catch {
|
|
168
|
+
// Already registered
|
|
169
|
+
}
|
|
170
|
+
// Load existing state if any
|
|
171
|
+
const existing = this.store.getStateJson(stateId);
|
|
172
|
+
if (existing !== null && existing !== undefined) {
|
|
173
|
+
const tree = this.trees.get(key);
|
|
174
|
+
tree.currentState = existing;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
this.emitTraceFn({
|
|
178
|
+
type: 'mcpl:state_registered',
|
|
179
|
+
serverId,
|
|
180
|
+
featureSet,
|
|
181
|
+
hostState: opts.hostState,
|
|
182
|
+
rollback: opts.rollback,
|
|
183
|
+
});
|
|
184
|
+
this.persistTree();
|
|
185
|
+
}
|
|
186
|
+
// ==========================================================================
|
|
187
|
+
// Checkpoint recording
|
|
188
|
+
// ==========================================================================
|
|
189
|
+
/**
|
|
190
|
+
* Record a checkpoint returned in a tool call response.
|
|
191
|
+
* Updates the tree and persists to Chronicle.
|
|
192
|
+
*/
|
|
193
|
+
recordCheckpoint(serverId, featureSet, checkpoint) {
|
|
194
|
+
const key = this.key(serverId, featureSet);
|
|
195
|
+
const tree = this.trees.get(key);
|
|
196
|
+
if (!tree)
|
|
197
|
+
return;
|
|
198
|
+
// Add node to tree
|
|
199
|
+
const node = {
|
|
200
|
+
checkpoint: checkpoint.checkpoint,
|
|
201
|
+
parent: checkpoint.parent,
|
|
202
|
+
children: [],
|
|
203
|
+
data: checkpoint.data,
|
|
204
|
+
patch: checkpoint.patch,
|
|
205
|
+
};
|
|
206
|
+
// Link to parent
|
|
207
|
+
if (checkpoint.parent) {
|
|
208
|
+
const parentNode = tree.nodes.get(checkpoint.parent);
|
|
209
|
+
if (parentNode) {
|
|
210
|
+
parentNode.children.push(checkpoint.checkpoint);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
tree.nodes.set(checkpoint.checkpoint, node);
|
|
214
|
+
tree.currentCheckpoint = checkpoint.checkpoint;
|
|
215
|
+
// For host-managed state, reconstruct current state
|
|
216
|
+
if (tree.hostState) {
|
|
217
|
+
if (checkpoint.data !== undefined) {
|
|
218
|
+
// Full state provided — use directly
|
|
219
|
+
tree.currentState = structuredClone(checkpoint.data);
|
|
220
|
+
}
|
|
221
|
+
else if (checkpoint.patch) {
|
|
222
|
+
// Delta provided — apply to current state
|
|
223
|
+
try {
|
|
224
|
+
tree.currentState = applyJsonPatch(tree.currentState ?? {}, checkpoint.patch);
|
|
225
|
+
}
|
|
226
|
+
catch (err) {
|
|
227
|
+
console.error(`[CheckpointManager] JSON Patch failed for ${key}:`, err instanceof Error ? err.message : err);
|
|
228
|
+
// Keep existing state on patch failure
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
// Persist reconstructed state
|
|
232
|
+
this.store.setStateJson(this.stateId(serverId, featureSet), tree.currentState);
|
|
233
|
+
}
|
|
234
|
+
this.emitTraceFn({
|
|
235
|
+
type: 'mcpl:checkpoint_recorded',
|
|
236
|
+
serverId,
|
|
237
|
+
featureSet,
|
|
238
|
+
checkpoint: checkpoint.checkpoint,
|
|
239
|
+
parent: checkpoint.parent,
|
|
240
|
+
hasData: checkpoint.data !== undefined,
|
|
241
|
+
hasPatch: checkpoint.patch !== undefined,
|
|
242
|
+
});
|
|
243
|
+
this.persistTree();
|
|
244
|
+
}
|
|
245
|
+
// ==========================================================================
|
|
246
|
+
// State access (for tools/call params)
|
|
247
|
+
// ==========================================================================
|
|
248
|
+
/** Get current reconstructed state for host-managed feature sets. */
|
|
249
|
+
getCurrentState(serverId, featureSet) {
|
|
250
|
+
return this.trees.get(this.key(serverId, featureSet))?.currentState;
|
|
251
|
+
}
|
|
252
|
+
/** Get current checkpoint ID for server-managed feature sets. */
|
|
253
|
+
getCurrentCheckpoint(serverId, featureSet) {
|
|
254
|
+
return this.trees.get(this.key(serverId, featureSet))?.currentCheckpoint ?? null;
|
|
255
|
+
}
|
|
256
|
+
// ==========================================================================
|
|
257
|
+
// Queries
|
|
258
|
+
// ==========================================================================
|
|
259
|
+
/** Check if a (serverId, featureSet) pair is registered as stateful. */
|
|
260
|
+
isStateful(serverId, featureSet) {
|
|
261
|
+
return this.trees.has(this.key(serverId, featureSet));
|
|
262
|
+
}
|
|
263
|
+
/** Check if a (serverId, featureSet) pair uses host-managed state. */
|
|
264
|
+
isHostManaged(serverId, featureSet) {
|
|
265
|
+
return this.trees.get(this.key(serverId, featureSet))?.hostState ?? false;
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* Get the first stateful feature set for a given server.
|
|
269
|
+
* Returns null if no stateful feature sets are registered.
|
|
270
|
+
*/
|
|
271
|
+
getStatefulFeatureSet(serverId) {
|
|
272
|
+
const prefix = `${serverId}:`;
|
|
273
|
+
for (const [key] of this.trees) {
|
|
274
|
+
if (key.startsWith(prefix)) {
|
|
275
|
+
return key.slice(prefix.length);
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
return null;
|
|
279
|
+
}
|
|
280
|
+
// ==========================================================================
|
|
281
|
+
// Rollback
|
|
282
|
+
// ==========================================================================
|
|
283
|
+
/**
|
|
284
|
+
* Roll back to a previous checkpoint in the tree.
|
|
285
|
+
* Updates the current pointer and, for host-managed state, reconstructs
|
|
286
|
+
* the state at that checkpoint.
|
|
287
|
+
*
|
|
288
|
+
* Returns the reconstructed state (host-managed) or undefined (server-managed).
|
|
289
|
+
* Throws if the checkpoint is not found.
|
|
290
|
+
*/
|
|
291
|
+
rollbackTo(serverId, featureSet, checkpoint) {
|
|
292
|
+
const key = this.key(serverId, featureSet);
|
|
293
|
+
const tree = this.trees.get(key);
|
|
294
|
+
if (!tree)
|
|
295
|
+
throw new Error(`No stateful feature set: ${key}`);
|
|
296
|
+
const node = tree.nodes.get(checkpoint);
|
|
297
|
+
if (!node)
|
|
298
|
+
throw new Error(`Checkpoint not found: ${checkpoint}`);
|
|
299
|
+
tree.currentCheckpoint = checkpoint;
|
|
300
|
+
if (tree.hostState) {
|
|
301
|
+
// Reconstruct state at this checkpoint by walking from root
|
|
302
|
+
tree.currentState = this.reconstructState(tree, checkpoint);
|
|
303
|
+
this.store.setStateJson(this.stateId(serverId, featureSet), tree.currentState);
|
|
304
|
+
}
|
|
305
|
+
this.emitTraceFn({
|
|
306
|
+
type: 'mcpl:state_rollback',
|
|
307
|
+
serverId,
|
|
308
|
+
featureSet,
|
|
309
|
+
checkpoint,
|
|
310
|
+
});
|
|
311
|
+
this.persistTree();
|
|
312
|
+
return tree.currentState;
|
|
313
|
+
}
|
|
314
|
+
// ==========================================================================
|
|
315
|
+
// Cleanup
|
|
316
|
+
// ==========================================================================
|
|
317
|
+
/** Remove all state for a server (called on disconnect). */
|
|
318
|
+
removeServer(serverId) {
|
|
319
|
+
const prefix = `${serverId}:`;
|
|
320
|
+
const toRemove = [];
|
|
321
|
+
for (const [key] of this.trees) {
|
|
322
|
+
if (key.startsWith(prefix)) {
|
|
323
|
+
toRemove.push(key);
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
for (const key of toRemove) {
|
|
327
|
+
this.trees.delete(key);
|
|
328
|
+
}
|
|
329
|
+
if (toRemove.length > 0) {
|
|
330
|
+
this.persistTree();
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
// ==========================================================================
|
|
334
|
+
// Private: State reconstruction
|
|
335
|
+
// ==========================================================================
|
|
336
|
+
/**
|
|
337
|
+
* Reconstruct host-managed state at a given checkpoint by walking
|
|
338
|
+
* from the nearest ancestor with full data down to the target.
|
|
339
|
+
*/
|
|
340
|
+
reconstructState(tree, checkpoint) {
|
|
341
|
+
// Build path from root to checkpoint
|
|
342
|
+
const path = [];
|
|
343
|
+
let current = checkpoint;
|
|
344
|
+
while (current !== null) {
|
|
345
|
+
const node = tree.nodes.get(current);
|
|
346
|
+
if (!node)
|
|
347
|
+
break;
|
|
348
|
+
path.unshift(node);
|
|
349
|
+
current = node.parent;
|
|
350
|
+
}
|
|
351
|
+
// Walk forward, applying data/patches
|
|
352
|
+
let state = {};
|
|
353
|
+
for (const node of path) {
|
|
354
|
+
if (node.data !== undefined) {
|
|
355
|
+
// Full state snapshot — use it, discard prior state
|
|
356
|
+
state = structuredClone(node.data);
|
|
357
|
+
}
|
|
358
|
+
else if (node.patch) {
|
|
359
|
+
// Delta — apply to current state
|
|
360
|
+
try {
|
|
361
|
+
state = applyJsonPatch(state, node.patch);
|
|
362
|
+
}
|
|
363
|
+
catch {
|
|
364
|
+
// On patch failure, keep last known good state
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
return state;
|
|
369
|
+
}
|
|
370
|
+
// ==========================================================================
|
|
371
|
+
// Private: Persistence
|
|
372
|
+
// ==========================================================================
|
|
373
|
+
/** Persist checkpoint tree metadata to Chronicle. */
|
|
374
|
+
persistTree() {
|
|
375
|
+
const serialized = { trees: {} };
|
|
376
|
+
for (const [key, tree] of this.trees) {
|
|
377
|
+
const nodes = {};
|
|
378
|
+
for (const [id, node] of tree.nodes) {
|
|
379
|
+
nodes[id] = {
|
|
380
|
+
parent: node.parent,
|
|
381
|
+
children: node.children,
|
|
382
|
+
data: node.data,
|
|
383
|
+
patch: node.patch,
|
|
384
|
+
};
|
|
385
|
+
}
|
|
386
|
+
serialized.trees[key] = {
|
|
387
|
+
hostState: tree.hostState,
|
|
388
|
+
rollback: tree.rollback,
|
|
389
|
+
current: tree.currentCheckpoint,
|
|
390
|
+
nodes,
|
|
391
|
+
};
|
|
392
|
+
}
|
|
393
|
+
this.store.setStateJson(CHECKPOINTS_STATE_ID, serialized);
|
|
394
|
+
}
|
|
395
|
+
/** Load checkpoint tree from Chronicle on startup. */
|
|
396
|
+
loadFromStore() {
|
|
397
|
+
const data = this.store.getStateJson(CHECKPOINTS_STATE_ID);
|
|
398
|
+
if (!data?.trees)
|
|
399
|
+
return;
|
|
400
|
+
for (const [key, entry] of Object.entries(data.trees)) {
|
|
401
|
+
const nodes = new Map();
|
|
402
|
+
for (const [id, nodeData] of Object.entries(entry.nodes)) {
|
|
403
|
+
nodes.set(id, {
|
|
404
|
+
checkpoint: id,
|
|
405
|
+
parent: nodeData.parent,
|
|
406
|
+
children: [...nodeData.children],
|
|
407
|
+
data: nodeData.data,
|
|
408
|
+
patch: nodeData.patch,
|
|
409
|
+
});
|
|
410
|
+
}
|
|
411
|
+
this.trees.set(key, {
|
|
412
|
+
hostState: entry.hostState,
|
|
413
|
+
rollback: entry.rollback,
|
|
414
|
+
currentCheckpoint: entry.current,
|
|
415
|
+
currentState: undefined, // Will be loaded per-feature-set during registerFeatureSet
|
|
416
|
+
nodes,
|
|
417
|
+
});
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
// ==========================================================================
|
|
421
|
+
// Private: Helpers
|
|
422
|
+
// ==========================================================================
|
|
423
|
+
key(serverId, featureSet) {
|
|
424
|
+
return `${serverId}:${featureSet}`;
|
|
425
|
+
}
|
|
426
|
+
stateId(serverId, featureSet) {
|
|
427
|
+
return `${STATE_PREFIX}/${serverId}/${featureSet}`;
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
//# sourceMappingURL=checkpoint-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkpoint-manager.js","sourceRoot":"","sources":["../../../src/mcpl/checkpoint-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCPL error codes and helpers.
|
|
3
|
+
*
|
|
4
|
+
* Error codes from Spec Appendix A. Used when rejecting inbound messages
|
|
5
|
+
* from MCPL servers that violate permission or state constraints.
|
|
6
|
+
*/
|
|
7
|
+
import type { JsonRpcError } from './types.js';
|
|
8
|
+
/** Message used a disabled feature set. */
|
|
9
|
+
export declare const FEATURE_SET_NOT_ENABLED = -32001;
|
|
10
|
+
/** Message used an undeclared feature set. */
|
|
11
|
+
export declare const UNKNOWN_FEATURE_SET = -32003;
|
|
12
|
+
/** Rollback targeted a pruned or unknown checkpoint. */
|
|
13
|
+
export declare const CHECKPOINT_NOT_FOUND = -32005;
|
|
14
|
+
/** Lacking scope to publish or observe channel. */
|
|
15
|
+
export declare const CHANNEL_NOT_PERMITTED = -32017;
|
|
16
|
+
/** Channel ID doesn't exist or not registered. */
|
|
17
|
+
export declare const UNKNOWN_CHANNEL = -32023;
|
|
18
|
+
/** Server could not open/connect the requested channel. */
|
|
19
|
+
export declare const CHANNEL_OPEN_FAILED = -32024;
|
|
20
|
+
/**
|
|
21
|
+
* Create a "feature set not enabled" error.
|
|
22
|
+
* Returned when a server sends a message tagged with a feature set
|
|
23
|
+
* that the host has disabled.
|
|
24
|
+
*/
|
|
25
|
+
export declare function featureSetNotEnabled(featureSet: string, canEnable?: boolean): JsonRpcError;
|
|
26
|
+
/**
|
|
27
|
+
* Create an "unknown feature set" error.
|
|
28
|
+
* Returned when a server sends a message tagged with a feature set
|
|
29
|
+
* that was never declared in capabilities.
|
|
30
|
+
*/
|
|
31
|
+
export declare function unknownFeatureSet(featureSet: string): JsonRpcError;
|
|
32
|
+
/**
|
|
33
|
+
* Create a "checkpoint not found" error.
|
|
34
|
+
* Returned when a rollback targets a pruned or unknown checkpoint.
|
|
35
|
+
*/
|
|
36
|
+
export declare function checkpointNotFound(checkpoint: string): JsonRpcError;
|
|
37
|
+
/**
|
|
38
|
+
* Create a "channel not permitted" error.
|
|
39
|
+
* Returned when a server lacks scope to publish or observe a channel.
|
|
40
|
+
*/
|
|
41
|
+
export declare function channelNotPermitted(channelId: string): JsonRpcError;
|
|
42
|
+
/**
|
|
43
|
+
* Create an "unknown channel" error.
|
|
44
|
+
* Returned when a channel ID doesn't exist or isn't registered.
|
|
45
|
+
*/
|
|
46
|
+
export declare function unknownChannel(channelId: string): JsonRpcError;
|
|
47
|
+
/**
|
|
48
|
+
* Create a "channel open failed" error.
|
|
49
|
+
* Returned when a server could not open/connect the requested channel.
|
|
50
|
+
*/
|
|
51
|
+
export declare function channelOpenFailed(channelId: string, reason?: string): JsonRpcError;
|
|
52
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/mcpl/errors.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAM/C,2CAA2C;AAC3C,eAAO,MAAM,uBAAuB,SAAS,CAAC;AAE9C,8CAA8C;AAC9C,eAAO,MAAM,mBAAmB,SAAS,CAAC;AAE1C,wDAAwD;AACxD,eAAO,MAAM,oBAAoB,SAAS,CAAC;AAE3C,mDAAmD;AACnD,eAAO,MAAM,qBAAqB,SAAS,CAAC;AAE5C,kDAAkD;AAClD,eAAO,MAAM,eAAe,SAAS,CAAC;AAEtC,2DAA2D;AAC3D,eAAO,MAAM,mBAAmB,SAAS,CAAC;AAM1C;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,MAAM,EAClB,SAAS,GAAE,OAAc,GACxB,YAAY,CAMd;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,YAAY,CAMlE;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,YAAY,CAMnE;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,CAMnE;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,CAM9D;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,MAAM,GACd,YAAY,CAMd"}
|