@nitrostack/core 1.0.16 → 1.1.0-beta.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/dist/core/app-decorator.d.ts +5 -0
- package/dist/core/app-decorator.d.ts.map +1 -1
- package/dist/core/app-decorator.js +2 -1
- package/dist/core/app-decorator.js.map +1 -1
- package/dist/core/builders.d.ts.map +1 -1
- package/dist/core/builders.js +2 -0
- package/dist/core/builders.js.map +1 -1
- package/dist/core/decorators.d.ts +11 -0
- package/dist/core/decorators.d.ts.map +1 -1
- package/dist/core/decorators.js.map +1 -1
- package/dist/core/health/health-checks.resource.d.ts +4 -3
- package/dist/core/health/health-checks.resource.d.ts.map +1 -1
- package/dist/core/health/health-checks.resource.js +35 -8
- package/dist/core/health/health-checks.resource.js.map +1 -1
- package/dist/core/health/health.interface.d.ts +40 -0
- package/dist/core/health/health.interface.d.ts.map +1 -0
- package/dist/core/health/health.interface.js +2 -0
- package/dist/core/health/health.interface.js.map +1 -0
- package/dist/core/index.d.ts +11 -2
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +9 -1
- package/dist/core/index.js.map +1 -1
- package/dist/core/interceptors/data-spillover.interceptor.d.ts +30 -0
- package/dist/core/interceptors/data-spillover.interceptor.d.ts.map +1 -0
- package/dist/core/interceptors/data-spillover.interceptor.js +174 -0
- package/dist/core/interceptors/data-spillover.interceptor.js.map +1 -0
- package/dist/core/interceptors/interceptor.decorator.d.ts +17 -8
- package/dist/core/interceptors/interceptor.decorator.d.ts.map +1 -1
- package/dist/core/interceptors/interceptor.decorator.js +36 -11
- package/dist/core/interceptors/interceptor.decorator.js.map +1 -1
- package/dist/core/interceptors/interceptor.interface.d.ts +4 -0
- package/dist/core/interceptors/interceptor.interface.d.ts.map +1 -1
- package/dist/core/interceptors/spillover/fs-spillover.store.d.ts +54 -0
- package/dist/core/interceptors/spillover/fs-spillover.store.d.ts.map +1 -0
- package/dist/core/interceptors/spillover/fs-spillover.store.js +302 -0
- package/dist/core/interceptors/spillover/fs-spillover.store.js.map +1 -0
- package/dist/core/interceptors/spillover/index.d.ts +6 -0
- package/dist/core/interceptors/spillover/index.d.ts.map +1 -0
- package/dist/core/interceptors/spillover/index.js +6 -0
- package/dist/core/interceptors/spillover/index.js.map +1 -0
- package/dist/core/interceptors/spillover/memory-spillover.store.d.ts +25 -0
- package/dist/core/interceptors/spillover/memory-spillover.store.d.ts.map +1 -0
- package/dist/core/interceptors/spillover/memory-spillover.store.js +115 -0
- package/dist/core/interceptors/spillover/memory-spillover.store.js.map +1 -0
- package/dist/core/interceptors/spillover/preview-generator.d.ts +7 -0
- package/dist/core/interceptors/spillover/preview-generator.d.ts.map +1 -0
- package/dist/core/interceptors/spillover/preview-generator.js +79 -0
- package/dist/core/interceptors/spillover/preview-generator.js.map +1 -0
- package/dist/core/interceptors/spillover/spillover-store.interface.d.ts +20 -0
- package/dist/core/interceptors/spillover/spillover-store.interface.d.ts.map +1 -0
- package/dist/core/interceptors/spillover/spillover-store.interface.js +2 -0
- package/dist/core/interceptors/spillover/spillover-store.interface.js.map +1 -0
- package/dist/core/interceptors/spillover/types.d.ts +71 -0
- package/dist/core/interceptors/spillover/types.d.ts.map +1 -0
- package/dist/core/interceptors/spillover/types.js +12 -0
- package/dist/core/interceptors/spillover/types.js.map +1 -0
- package/dist/core/protocol/adapter.d.ts +7 -1
- package/dist/core/protocol/adapter.d.ts.map +1 -1
- package/dist/core/protocol/modern-v2.adapter.d.ts +95 -2
- package/dist/core/protocol/modern-v2.adapter.d.ts.map +1 -1
- package/dist/core/protocol/modern-v2.adapter.js +688 -157
- package/dist/core/protocol/modern-v2.adapter.js.map +1 -1
- package/dist/core/server.d.ts +104 -4
- package/dist/core/server.d.ts.map +1 -1
- package/dist/core/server.js +450 -44
- package/dist/core/server.js.map +1 -1
- package/dist/core/task.d.ts.map +1 -1
- package/dist/core/task.js +8 -7
- package/dist/core/task.js.map +1 -1
- package/dist/core/tool.d.ts +12 -3
- package/dist/core/tool.d.ts.map +1 -1
- package/dist/core/tool.js +21 -3
- package/dist/core/tool.js.map +1 -1
- package/dist/core/transforms/catalog.transform.d.ts +40 -0
- package/dist/core/transforms/catalog.transform.d.ts.map +1 -0
- package/dist/core/transforms/catalog.transform.js +52 -0
- package/dist/core/transforms/catalog.transform.js.map +1 -0
- package/dist/core/transforms/code-mode/code-mode.transform.d.ts +75 -0
- package/dist/core/transforms/code-mode/code-mode.transform.d.ts.map +1 -0
- package/dist/core/transforms/code-mode/code-mode.transform.js +226 -0
- package/dist/core/transforms/code-mode/code-mode.transform.js.map +1 -0
- package/dist/core/transforms/code-mode/destructive-guard.d.ts +7 -0
- package/dist/core/transforms/code-mode/destructive-guard.d.ts.map +1 -0
- package/dist/core/transforms/code-mode/destructive-guard.js +18 -0
- package/dist/core/transforms/code-mode/destructive-guard.js.map +1 -0
- package/dist/core/transforms/code-mode/guest-evaluator.d.ts +17 -0
- package/dist/core/transforms/code-mode/guest-evaluator.d.ts.map +1 -0
- package/dist/core/transforms/code-mode/guest-evaluator.js +277 -0
- package/dist/core/transforms/code-mode/guest-evaluator.js.map +1 -0
- package/dist/core/transforms/code-mode/index.d.ts +11 -0
- package/dist/core/transforms/code-mode/index.d.ts.map +1 -0
- package/dist/core/transforms/code-mode/index.js +11 -0
- package/dist/core/transforms/code-mode/index.js.map +1 -0
- package/dist/core/transforms/code-mode/ipc-messages.d.ts +31 -0
- package/dist/core/transforms/code-mode/ipc-messages.d.ts.map +1 -0
- package/dist/core/transforms/code-mode/ipc-messages.js +2 -0
- package/dist/core/transforms/code-mode/ipc-messages.js.map +1 -0
- package/dist/core/transforms/code-mode/legible-error.d.ts +8 -0
- package/dist/core/transforms/code-mode/legible-error.d.ts.map +1 -0
- package/dist/core/transforms/code-mode/legible-error.js +17 -0
- package/dist/core/transforms/code-mode/legible-error.js.map +1 -0
- package/dist/core/transforms/code-mode/quickjs-wasm.provider.d.ts +25 -0
- package/dist/core/transforms/code-mode/quickjs-wasm.provider.d.ts.map +1 -0
- package/dist/core/transforms/code-mode/quickjs-wasm.provider.js +31 -0
- package/dist/core/transforms/code-mode/quickjs-wasm.provider.js.map +1 -0
- package/dist/core/transforms/code-mode/sandbox.interface.d.ts +10 -0
- package/dist/core/transforms/code-mode/sandbox.interface.d.ts.map +1 -0
- package/dist/core/transforms/code-mode/sandbox.interface.js +2 -0
- package/dist/core/transforms/code-mode/sandbox.interface.js.map +1 -0
- package/dist/core/transforms/code-mode/sandbox.worker.d.ts +2 -0
- package/dist/core/transforms/code-mode/sandbox.worker.d.ts.map +1 -0
- package/dist/core/transforms/code-mode/sandbox.worker.js +69 -0
- package/dist/core/transforms/code-mode/sandbox.worker.js.map +1 -0
- package/dist/core/transforms/code-mode/synthetic-tools.d.ts +23 -0
- package/dist/core/transforms/code-mode/synthetic-tools.d.ts.map +1 -0
- package/dist/core/transforms/code-mode/synthetic-tools.js +112 -0
- package/dist/core/transforms/code-mode/synthetic-tools.js.map +1 -0
- package/dist/core/transforms/code-mode/types.d.ts +32 -0
- package/dist/core/transforms/code-mode/types.d.ts.map +1 -0
- package/dist/core/transforms/code-mode/types.js +2 -0
- package/dist/core/transforms/code-mode/types.js.map +1 -0
- package/dist/core/transforms/code-mode/worker-pool.d.ts +71 -0
- package/dist/core/transforms/code-mode/worker-pool.d.ts.map +1 -0
- package/dist/core/transforms/code-mode/worker-pool.js +435 -0
- package/dist/core/transforms/code-mode/worker-pool.js.map +1 -0
- package/dist/core/transforms/index.d.ts +6 -0
- package/dist/core/transforms/index.d.ts.map +1 -0
- package/dist/core/transforms/index.js +6 -0
- package/dist/core/transforms/index.js.map +1 -0
- package/dist/core/transforms/search/base-search.transform.d.ts +59 -0
- package/dist/core/transforms/search/base-search.transform.d.ts.map +1 -0
- package/dist/core/transforms/search/base-search.transform.js +166 -0
- package/dist/core/transforms/search/base-search.transform.js.map +1 -0
- package/dist/core/transforms/search/bm25-search.transform.d.ts +27 -0
- package/dist/core/transforms/search/bm25-search.transform.d.ts.map +1 -0
- package/dist/core/transforms/search/bm25-search.transform.js +37 -0
- package/dist/core/transforms/search/bm25-search.transform.js.map +1 -0
- package/dist/core/transforms/search/bm25.engine.d.ts +46 -0
- package/dist/core/transforms/search/bm25.engine.d.ts.map +1 -0
- package/dist/core/transforms/search/bm25.engine.js +160 -0
- package/dist/core/transforms/search/bm25.engine.js.map +1 -0
- package/dist/core/transforms/search/index.d.ts +9 -0
- package/dist/core/transforms/search/index.d.ts.map +1 -0
- package/dist/core/transforms/search/index.js +9 -0
- package/dist/core/transforms/search/index.js.map +1 -0
- package/dist/core/transforms/search/regex-match.worker.d.ts +2 -0
- package/dist/core/transforms/search/regex-match.worker.d.ts.map +1 -0
- package/dist/core/transforms/search/regex-match.worker.js +19 -0
- package/dist/core/transforms/search/regex-match.worker.js.map +1 -0
- package/dist/core/transforms/search/regex-search.transform.d.ts +41 -0
- package/dist/core/transforms/search/regex-search.transform.d.ts.map +1 -0
- package/dist/core/transforms/search/regex-search.transform.js +237 -0
- package/dist/core/transforms/search/regex-search.transform.js.map +1 -0
- package/dist/core/transforms/search/synthetic-tools.d.ts +11 -0
- package/dist/core/transforms/search/synthetic-tools.d.ts.map +1 -0
- package/dist/core/transforms/search/synthetic-tools.js +76 -0
- package/dist/core/transforms/search/synthetic-tools.js.map +1 -0
- package/dist/core/transforms/search/tokenizer.d.ts +11 -0
- package/dist/core/transforms/search/tokenizer.d.ts.map +1 -0
- package/dist/core/transforms/search/tokenizer.js +38 -0
- package/dist/core/transforms/search/tokenizer.js.map +1 -0
- package/dist/core/transforms/search/tool-serializer.d.ts +6 -0
- package/dist/core/transforms/search/tool-serializer.d.ts.map +1 -0
- package/dist/core/transforms/search/tool-serializer.js +41 -0
- package/dist/core/transforms/search/tool-serializer.js.map +1 -0
- package/dist/core/transforms/search/types.d.ts +36 -0
- package/dist/core/transforms/search/types.d.ts.map +1 -0
- package/dist/core/transforms/search/types.js +2 -0
- package/dist/core/transforms/search/types.js.map +1 -0
- package/dist/core/transforms/tool-cache-key.d.ts +15 -0
- package/dist/core/transforms/tool-cache-key.d.ts.map +1 -0
- package/dist/core/transforms/tool-cache-key.js +61 -0
- package/dist/core/transforms/tool-cache-key.js.map +1 -0
- package/dist/core/transforms/transform.interface.d.ts +34 -0
- package/dist/core/transforms/transform.interface.d.ts.map +1 -0
- package/dist/core/transforms/transform.interface.js +2 -0
- package/dist/core/transforms/transform.interface.js.map +1 -0
- package/dist/core/transforms/validate-tool-arguments.d.ts +10 -0
- package/dist/core/transforms/validate-tool-arguments.d.ts.map +1 -0
- package/dist/core/transforms/validate-tool-arguments.js +62 -0
- package/dist/core/transforms/validate-tool-arguments.js.map +1 -0
- package/dist/core/transforms/visibility/index.d.ts +3 -0
- package/dist/core/transforms/visibility/index.d.ts.map +1 -0
- package/dist/core/transforms/visibility/index.js +3 -0
- package/dist/core/transforms/visibility/index.js.map +1 -0
- package/dist/core/transforms/visibility/session-store.d.ts +132 -0
- package/dist/core/transforms/visibility/session-store.d.ts.map +1 -0
- package/dist/core/transforms/visibility/session-store.js +330 -0
- package/dist/core/transforms/visibility/session-store.js.map +1 -0
- package/dist/core/transforms/visibility/visibility.transform.d.ts +42 -0
- package/dist/core/transforms/visibility/visibility.transform.d.ts.map +1 -0
- package/dist/core/transforms/visibility/visibility.transform.js +109 -0
- package/dist/core/transforms/visibility/visibility.transform.js.map +1 -0
- package/dist/core/types.d.ts +60 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +3 -0
- package/dist/testing/index.js.map +1 -1
- package/package.json +9 -6
- package/dist/core/widget-bundle-paths.d.ts +0 -5
- package/dist/core/widget-bundle-paths.d.ts.map +0 -1
- package/dist/core/widget-bundle-paths.js +0 -25
- package/dist/core/widget-bundle-paths.js.map +0 -1
- package/dist/core/widget-html-mime.d.ts +0 -7
- package/dist/core/widget-html-mime.d.ts.map +0 -1
- package/dist/core/widget-html-mime.js +0 -7
- package/dist/core/widget-html-mime.js.map +0 -1
- package/dist/core/widget-mime.d.ts +0 -29
- package/dist/core/widget-mime.d.ts.map +0 -1
- package/dist/core/widget-mime.js +0 -41
- package/dist/core/widget-mime.js.map +0 -1
|
@@ -0,0 +1,330 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Manages per-session dynamic visibility state for MCP tools with memory bounds,
|
|
3
|
+
* TTL expiry, and LRU pruning.
|
|
4
|
+
*/
|
|
5
|
+
export class SessionVisibilityStore {
|
|
6
|
+
sessions = new Map();
|
|
7
|
+
/**
|
|
8
|
+
* Explicit revokes survive LRU eviction of the session record so disableTools
|
|
9
|
+
* does not fail open while the entry is still inside its TTL. The same TTL
|
|
10
|
+
* sweeps them; they are also capped at maxSessions.
|
|
11
|
+
*/
|
|
12
|
+
revocations = new Map();
|
|
13
|
+
/**
|
|
14
|
+
* Denies that follow a verified subject across session ids.
|
|
15
|
+
* Anonymous callers have no entry here. A full map refuses a new subject
|
|
16
|
+
* rather than dropping a live deny.
|
|
17
|
+
*/
|
|
18
|
+
subjectDenies = new Map();
|
|
19
|
+
ttlMs;
|
|
20
|
+
maxSessions;
|
|
21
|
+
sweepTimer;
|
|
22
|
+
logger;
|
|
23
|
+
constructor(options = {}) {
|
|
24
|
+
this.ttlMs = (options.ttlMinutes ?? 60) * 60 * 1000;
|
|
25
|
+
this.maxSessions = options.maxSessions ?? 10000;
|
|
26
|
+
this.logger = options.logger;
|
|
27
|
+
const sweepIntervalMs = (options.sweepIntervalSeconds ?? 300) * 1000;
|
|
28
|
+
// Periodic sweep with unref to avoid keeping Node.js event loop open
|
|
29
|
+
this.sweepTimer = setInterval(() => this.cleanupExpired(), sweepIntervalMs);
|
|
30
|
+
if (typeof this.sweepTimer.unref === 'function') {
|
|
31
|
+
this.sweepTimer.unref();
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
setLogger(logger) {
|
|
35
|
+
this.logger = logger;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Retrieves active session state or initializes a new entry.
|
|
39
|
+
* Updates lastActive timestamp and maintains Map insertion order for LRU.
|
|
40
|
+
*/
|
|
41
|
+
getOrCreateSession(sessionId) {
|
|
42
|
+
let state = this.sessions.get(sessionId);
|
|
43
|
+
if (!state) {
|
|
44
|
+
if (this.sessions.size >= this.maxSessions) {
|
|
45
|
+
this.evictOldest();
|
|
46
|
+
}
|
|
47
|
+
state = {
|
|
48
|
+
sessionId,
|
|
49
|
+
enabledTools: new Set(),
|
|
50
|
+
disabledTools: new Set(this.liveRevocation(sessionId)?.tools ?? []),
|
|
51
|
+
lastActive: Date.now(),
|
|
52
|
+
};
|
|
53
|
+
this.sessions.set(sessionId, state);
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
state.lastActive = Date.now();
|
|
57
|
+
// Re-insert to maintain LRU access order
|
|
58
|
+
this.sessions.delete(sessionId);
|
|
59
|
+
this.sessions.set(sessionId, state);
|
|
60
|
+
}
|
|
61
|
+
this.touchRevocation(sessionId);
|
|
62
|
+
return state;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Retrieves active session state without creating one if absent.
|
|
66
|
+
* Updates lastActive timestamp and LRU order if found.
|
|
67
|
+
*/
|
|
68
|
+
getSession(sessionId) {
|
|
69
|
+
const state = this.sessions.get(sessionId);
|
|
70
|
+
if (state) {
|
|
71
|
+
state.lastActive = Date.now();
|
|
72
|
+
this.sessions.delete(sessionId);
|
|
73
|
+
this.sessions.set(sessionId, state);
|
|
74
|
+
this.touchRevocation(sessionId);
|
|
75
|
+
}
|
|
76
|
+
return state;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Explicitly enables (reveals) tools for a given session.
|
|
80
|
+
*/
|
|
81
|
+
enableTools(sessionId, toolNames) {
|
|
82
|
+
const session = this.getOrCreateSession(sessionId);
|
|
83
|
+
const revoked = this.liveRevocation(sessionId);
|
|
84
|
+
for (const name of toolNames) {
|
|
85
|
+
session.enabledTools.add(name);
|
|
86
|
+
session.disabledTools.delete(name);
|
|
87
|
+
revoked?.tools.delete(name);
|
|
88
|
+
}
|
|
89
|
+
if (revoked && revoked.tools.size === 0) {
|
|
90
|
+
this.revocations.delete(sessionId);
|
|
91
|
+
}
|
|
92
|
+
else if (revoked) {
|
|
93
|
+
this.touchRevocation(sessionId);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Explicitly disables (hides) tools for a given session.
|
|
98
|
+
* Throws when a new session cannot be recorded without dropping another live deny.
|
|
99
|
+
*/
|
|
100
|
+
disableTools(sessionId, toolNames) {
|
|
101
|
+
const session = this.getOrCreateSession(sessionId);
|
|
102
|
+
let revoked = this.liveRevocation(sessionId);
|
|
103
|
+
if (!revoked) {
|
|
104
|
+
this.makeRevocationRoom(sessionId);
|
|
105
|
+
revoked = { tools: new Set(), lastActive: Date.now() };
|
|
106
|
+
}
|
|
107
|
+
for (const name of toolNames) {
|
|
108
|
+
session.disabledTools.add(name);
|
|
109
|
+
session.enabledTools.delete(name);
|
|
110
|
+
revoked.tools.add(name);
|
|
111
|
+
}
|
|
112
|
+
revoked.lastActive = Date.now();
|
|
113
|
+
this.revocations.delete(sessionId);
|
|
114
|
+
this.revocations.set(sessionId, revoked);
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Returns whether a tool is explicitly enabled for a session.
|
|
118
|
+
*/
|
|
119
|
+
hasEnabled(sessionId, toolName) {
|
|
120
|
+
return this.sessions.get(sessionId)?.enabledTools.has(toolName) ?? false;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Returns whether a tool is explicitly disabled for a session.
|
|
124
|
+
*/
|
|
125
|
+
hasDisabled(sessionId, toolName) {
|
|
126
|
+
if (this.liveRevocation(sessionId)?.tools.has(toolName))
|
|
127
|
+
return true;
|
|
128
|
+
return this.sessions.get(sessionId)?.disabledTools.has(toolName) ?? false;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Hides tools for a verified subject. The deny survives a new session id.
|
|
132
|
+
* Throws when a new subject cannot be recorded without dropping another live deny.
|
|
133
|
+
*/
|
|
134
|
+
disableSubject(subject, toolNames) {
|
|
135
|
+
let entry = this.liveSubjectDeny(subject);
|
|
136
|
+
if (!entry) {
|
|
137
|
+
this.makeSubjectRoom(subject);
|
|
138
|
+
entry = { tools: new Set(), lastActive: Date.now() };
|
|
139
|
+
this.subjectDenies.set(subject, entry);
|
|
140
|
+
}
|
|
141
|
+
for (const name of toolNames)
|
|
142
|
+
entry.tools.add(name);
|
|
143
|
+
this.touchSubjectDeny(subject);
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Lifts a subject-scoped deny and the same names on every session key for
|
|
147
|
+
* that subject, so a grant on a later session restores the earlier one.
|
|
148
|
+
*/
|
|
149
|
+
enableSubject(subject, toolNames) {
|
|
150
|
+
const entry = this.liveSubjectDeny(subject);
|
|
151
|
+
if (entry) {
|
|
152
|
+
for (const name of toolNames)
|
|
153
|
+
entry.tools.delete(name);
|
|
154
|
+
if (entry.tools.size === 0)
|
|
155
|
+
this.subjectDenies.delete(subject);
|
|
156
|
+
else
|
|
157
|
+
this.touchSubjectDeny(subject);
|
|
158
|
+
}
|
|
159
|
+
const prefix = `user:${encodeURIComponent(subject)}:`;
|
|
160
|
+
for (const [id, session] of this.sessions) {
|
|
161
|
+
if (!id.startsWith(prefix))
|
|
162
|
+
continue;
|
|
163
|
+
for (const name of toolNames)
|
|
164
|
+
session.disabledTools.delete(name);
|
|
165
|
+
}
|
|
166
|
+
for (const [id, entry] of [...this.revocations]) {
|
|
167
|
+
if (!id.startsWith(prefix))
|
|
168
|
+
continue;
|
|
169
|
+
for (const name of toolNames)
|
|
170
|
+
entry.tools.delete(name);
|
|
171
|
+
if (entry.tools.size === 0)
|
|
172
|
+
this.revocations.delete(id);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
hasSubjectDisabled(subject, toolName) {
|
|
176
|
+
const entry = this.liveSubjectDeny(subject);
|
|
177
|
+
if (!entry)
|
|
178
|
+
return false;
|
|
179
|
+
this.touchSubjectDeny(subject);
|
|
180
|
+
return entry.tools.has(toolName);
|
|
181
|
+
}
|
|
182
|
+
hasSubjectDenies(subject) {
|
|
183
|
+
const entry = this.liveSubjectDeny(subject);
|
|
184
|
+
return !!entry && entry.tools.size > 0;
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* True when this session still has at least one unexpired revocation.
|
|
188
|
+
* Used after the session record itself has been evicted.
|
|
189
|
+
*/
|
|
190
|
+
hasRevocations(sessionId) {
|
|
191
|
+
const entry = this.liveRevocation(sessionId);
|
|
192
|
+
return !!entry && entry.tools.size > 0;
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Clears visibility state for a session.
|
|
196
|
+
*/
|
|
197
|
+
clearSession(sessionId) {
|
|
198
|
+
this.sessions.delete(sessionId);
|
|
199
|
+
this.revocations.delete(sessionId);
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Total number of tracked sessions currently in memory.
|
|
203
|
+
*/
|
|
204
|
+
get activeSessionCount() {
|
|
205
|
+
return this.sessions.size;
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Sweeps and purges sessions and revocations that have exceeded the TTL limit.
|
|
209
|
+
*/
|
|
210
|
+
cleanupExpired() {
|
|
211
|
+
const now = Date.now();
|
|
212
|
+
for (const [id, session] of this.sessions.entries()) {
|
|
213
|
+
if (now - session.lastActive > this.ttlMs) {
|
|
214
|
+
this.sessions.delete(id);
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
for (const [id, entry] of this.revocations.entries()) {
|
|
218
|
+
if (now - entry.lastActive > this.ttlMs) {
|
|
219
|
+
if (entry.tools.size > 0) {
|
|
220
|
+
this.logger?.warn('Session visibility revocation expired', {
|
|
221
|
+
sessionId: id,
|
|
222
|
+
toolCount: entry.tools.size,
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
this.revocations.delete(id);
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
for (const [subject, entry] of this.subjectDenies.entries()) {
|
|
229
|
+
if (now - entry.lastActive > this.ttlMs) {
|
|
230
|
+
if (entry.tools.size > 0) {
|
|
231
|
+
this.logger?.warn('Session visibility subject deny expired', {
|
|
232
|
+
subject,
|
|
233
|
+
toolCount: entry.tools.size,
|
|
234
|
+
});
|
|
235
|
+
}
|
|
236
|
+
this.subjectDenies.delete(subject);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Evicts the least-recently used session entry.
|
|
242
|
+
* Revocations are left in place until their own TTL.
|
|
243
|
+
*/
|
|
244
|
+
evictOldest() {
|
|
245
|
+
const oldestKey = this.sessions.keys().next().value;
|
|
246
|
+
if (oldestKey) {
|
|
247
|
+
this.sessions.delete(oldestKey);
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
liveRevocation(sessionId) {
|
|
251
|
+
const entry = this.revocations.get(sessionId);
|
|
252
|
+
if (!entry)
|
|
253
|
+
return undefined;
|
|
254
|
+
if (Date.now() - entry.lastActive > this.ttlMs) {
|
|
255
|
+
this.revocations.delete(sessionId);
|
|
256
|
+
return undefined;
|
|
257
|
+
}
|
|
258
|
+
return entry;
|
|
259
|
+
}
|
|
260
|
+
touchRevocation(sessionId) {
|
|
261
|
+
const entry = this.liveRevocation(sessionId);
|
|
262
|
+
if (!entry)
|
|
263
|
+
return;
|
|
264
|
+
entry.lastActive = Date.now();
|
|
265
|
+
this.revocations.delete(sessionId);
|
|
266
|
+
this.revocations.set(sessionId, entry);
|
|
267
|
+
}
|
|
268
|
+
liveSubjectDeny(subject) {
|
|
269
|
+
const entry = this.subjectDenies.get(subject);
|
|
270
|
+
if (!entry)
|
|
271
|
+
return undefined;
|
|
272
|
+
if (Date.now() - entry.lastActive > this.ttlMs) {
|
|
273
|
+
this.subjectDenies.delete(subject);
|
|
274
|
+
return undefined;
|
|
275
|
+
}
|
|
276
|
+
return entry;
|
|
277
|
+
}
|
|
278
|
+
touchSubjectDeny(subject) {
|
|
279
|
+
const entry = this.subjectDenies.get(subject);
|
|
280
|
+
if (!entry)
|
|
281
|
+
return;
|
|
282
|
+
entry.lastActive = Date.now();
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* Sweeps expired subject denies. A new subject is refused when the map is still
|
|
286
|
+
* at the cap, so a live deny is never dropped to make room.
|
|
287
|
+
*/
|
|
288
|
+
makeSubjectRoom(subject) {
|
|
289
|
+
if (this.liveSubjectDeny(subject) || this.subjectDenies.size < this.maxSessions)
|
|
290
|
+
return;
|
|
291
|
+
const now = Date.now();
|
|
292
|
+
for (const [id, entry] of [...this.subjectDenies]) {
|
|
293
|
+
if (this.subjectDenies.size < this.maxSessions)
|
|
294
|
+
return;
|
|
295
|
+
if (now - entry.lastActive > this.ttlMs) {
|
|
296
|
+
this.subjectDenies.delete(id);
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
if (this.subjectDenies.size < this.maxSessions)
|
|
300
|
+
return;
|
|
301
|
+
this.logger?.warn(`Session visibility subject deny cap (${this.maxSessions}) is full; refused a new subject deny`, { subject });
|
|
302
|
+
throw new Error(`Session visibility subject deny cap (${this.maxSessions}) is full`);
|
|
303
|
+
}
|
|
304
|
+
makeRevocationRoom(sessionId) {
|
|
305
|
+
if (this.revocations.has(sessionId) || this.revocations.size < this.maxSessions)
|
|
306
|
+
return;
|
|
307
|
+
const now = Date.now();
|
|
308
|
+
for (const [id, entry] of [...this.revocations]) {
|
|
309
|
+
if (this.revocations.size < this.maxSessions)
|
|
310
|
+
return;
|
|
311
|
+
if (now - entry.lastActive > this.ttlMs) {
|
|
312
|
+
this.revocations.delete(id);
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
if (this.revocations.size < this.maxSessions)
|
|
316
|
+
return;
|
|
317
|
+
this.logger?.warn(`Session visibility revocation cap (${this.maxSessions}) is full; refused a new revocation`, { sessionId });
|
|
318
|
+
throw new Error(`Session visibility revocation cap (${this.maxSessions}) is full`);
|
|
319
|
+
}
|
|
320
|
+
/**
|
|
321
|
+
* Cleans up timers and drops all session records.
|
|
322
|
+
*/
|
|
323
|
+
destroy() {
|
|
324
|
+
clearInterval(this.sweepTimer);
|
|
325
|
+
this.sessions.clear();
|
|
326
|
+
this.revocations.clear();
|
|
327
|
+
this.subjectDenies.clear();
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
//# sourceMappingURL=session-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-store.js","sourceRoot":"","sources":["../../../../src/core/transforms/visibility/session-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { CatalogTransform } from '../catalog.transform.js';
|
|
2
|
+
import { Tool } from '../../tool.js';
|
|
3
|
+
import { ExecutionContext } from '../../types.js';
|
|
4
|
+
import { SessionVisibilityStore } from './session-store.js';
|
|
5
|
+
export declare class VisibilityResolutionError extends Error {
|
|
6
|
+
readonly code = -32601;
|
|
7
|
+
constructor(message: string);
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Session visibility.
|
|
11
|
+
*
|
|
12
|
+
* A missing session id is not an authorization decision: hidden tools stay
|
|
13
|
+
* hidden, and every other tool stays visible. The modern adapter rejects
|
|
14
|
+
* `tools/list` and `tools/call` that do not present a session id this process
|
|
15
|
+
* minted, including on the `auto` protocol.
|
|
16
|
+
*
|
|
17
|
+
* `disableTools` on a visible tool is a per-session workflow gate for anonymous
|
|
18
|
+
* callers. A new anonymous session starts with an empty deny list, so a tool
|
|
19
|
+
* that must stay unreachable until an explicit grant has to be created with
|
|
20
|
+
* `visibility: 'hidden'`. For a verified subject the same `disableTools` call
|
|
21
|
+
* also writes a subject deny, and that deny applies on later session ids.
|
|
22
|
+
*/
|
|
23
|
+
export declare class VisibilityTransform extends CatalogTransform {
|
|
24
|
+
readonly store: SessionVisibilityStore;
|
|
25
|
+
readonly name = "visibility";
|
|
26
|
+
constructor(store?: SessionVisibilityStore);
|
|
27
|
+
/**
|
|
28
|
+
* `withBypass` exists so search and code mode do not rebuild while a tool
|
|
29
|
+
* lists the catalog. It is not permission to reveal hidden tools.
|
|
30
|
+
*/
|
|
31
|
+
protected honorsBypass(): boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Filters the raw tool catalog down to tools authorized for the current session.
|
|
34
|
+
*/
|
|
35
|
+
protected applyTransform(tools: Tool[], context?: ExecutionContext): Promise<Tool[]>;
|
|
36
|
+
/**
|
|
37
|
+
* Intercepts direct tool calls (tools/call).
|
|
38
|
+
* Guards against calls to hidden or revoked tools by throwing JSON-RPC -32601.
|
|
39
|
+
*/
|
|
40
|
+
resolveTool(name: string, next: (name: string, ctx?: ExecutionContext) => Promise<Tool | undefined>, context?: ExecutionContext): Promise<Tool | undefined>;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=visibility.transform.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"visibility.transform.d.ts","sourceRoot":"","sources":["../../../../src/core/transforms/visibility/visibility.transform.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAE5D,qBAAa,yBAA0B,SAAQ,KAAK;IAClD,QAAQ,CAAC,IAAI,UAAU;gBAEX,OAAO,EAAE,MAAM;CAK5B;AAED;;;;;;;;;;;;;GAaG;AACH,qBAAa,mBAAoB,SAAQ,gBAAgB;IAG3C,QAAQ,CAAC,KAAK,EAAE,sBAAsB;IAFlD,QAAQ,CAAC,IAAI,gBAAgB;gBAER,KAAK,GAAE,sBAAqD;IAIjF;;;OAGG;IACH,SAAS,CAAC,YAAY,IAAI,OAAO;IAIjC;;OAEG;cACa,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAwC1F;;;OAGG;IACG,WAAW,CACf,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,gBAAgB,KAAK,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC,EACzE,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC;CAqC7B"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { CatalogTransform } from '../catalog.transform.js';
|
|
2
|
+
import { SessionVisibilityStore } from './session-store.js';
|
|
3
|
+
export class VisibilityResolutionError extends Error {
|
|
4
|
+
code = -32601;
|
|
5
|
+
constructor(message) {
|
|
6
|
+
super(message);
|
|
7
|
+
this.name = 'VisibilityResolutionError';
|
|
8
|
+
Object.setPrototypeOf(this, VisibilityResolutionError.prototype);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Session visibility.
|
|
13
|
+
*
|
|
14
|
+
* A missing session id is not an authorization decision: hidden tools stay
|
|
15
|
+
* hidden, and every other tool stays visible. The modern adapter rejects
|
|
16
|
+
* `tools/list` and `tools/call` that do not present a session id this process
|
|
17
|
+
* minted, including on the `auto` protocol.
|
|
18
|
+
*
|
|
19
|
+
* `disableTools` on a visible tool is a per-session workflow gate for anonymous
|
|
20
|
+
* callers. A new anonymous session starts with an empty deny list, so a tool
|
|
21
|
+
* that must stay unreachable until an explicit grant has to be created with
|
|
22
|
+
* `visibility: 'hidden'`. For a verified subject the same `disableTools` call
|
|
23
|
+
* also writes a subject deny, and that deny applies on later session ids.
|
|
24
|
+
*/
|
|
25
|
+
export class VisibilityTransform extends CatalogTransform {
|
|
26
|
+
store;
|
|
27
|
+
name = 'visibility';
|
|
28
|
+
constructor(store = new SessionVisibilityStore()) {
|
|
29
|
+
super();
|
|
30
|
+
this.store = store;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* `withBypass` exists so search and code mode do not rebuild while a tool
|
|
34
|
+
* lists the catalog. It is not permission to reveal hidden tools.
|
|
35
|
+
*/
|
|
36
|
+
honorsBypass() {
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Filters the raw tool catalog down to tools authorized for the current session.
|
|
41
|
+
*/
|
|
42
|
+
async applyTransform(tools, context) {
|
|
43
|
+
// No session: hidden tools stay hidden. A verified subject deny still applies.
|
|
44
|
+
if (!context?.sessionId) {
|
|
45
|
+
return tools.filter((tool) => {
|
|
46
|
+
if (context?.verifiedSubject &&
|
|
47
|
+
this.store.hasSubjectDisabled(context.verifiedSubject, tool.name)) {
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
return tool.visibility !== 'hidden';
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
const session = this.store.getSession(context.sessionId);
|
|
54
|
+
return tools.filter((tool) => {
|
|
55
|
+
// Subject denies survive a new session id and win over a fresh session.
|
|
56
|
+
if (context.verifiedSubject &&
|
|
57
|
+
this.store.hasSubjectDisabled(context.verifiedSubject, tool.name)) {
|
|
58
|
+
return false;
|
|
59
|
+
}
|
|
60
|
+
// 1. Explicit revokes survive session eviction and always win
|
|
61
|
+
if (this.store.hasDisabled(context.sessionId, tool.name)) {
|
|
62
|
+
return false;
|
|
63
|
+
}
|
|
64
|
+
if (!session) {
|
|
65
|
+
return tool.visibility !== 'hidden';
|
|
66
|
+
}
|
|
67
|
+
// 2. Explicitly enabled for this session always wins
|
|
68
|
+
if (session.enabledTools.has(tool.name)) {
|
|
69
|
+
return true;
|
|
70
|
+
}
|
|
71
|
+
// 3. Fallback to default visibility
|
|
72
|
+
return tool.visibility !== 'hidden';
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Intercepts direct tool calls (tools/call).
|
|
77
|
+
* Guards against calls to hidden or revoked tools by throwing JSON-RPC -32601.
|
|
78
|
+
*/
|
|
79
|
+
async resolveTool(name, next, context) {
|
|
80
|
+
// Catalog bypass must not skip this guard. withBypass only suppresses
|
|
81
|
+
// catalog reshaping so a tool can list tools without re-entering the pipeline.
|
|
82
|
+
const tool = await next(name, context);
|
|
83
|
+
if (!tool) {
|
|
84
|
+
return undefined;
|
|
85
|
+
}
|
|
86
|
+
if (context?.verifiedSubject &&
|
|
87
|
+
this.store.hasSubjectDisabled(context.verifiedSubject, name)) {
|
|
88
|
+
throw new VisibilityResolutionError(`Tool '${name}' is disabled for subject '${context.verifiedSubject}'.`);
|
|
89
|
+
}
|
|
90
|
+
// Guard checks:
|
|
91
|
+
if (context?.sessionId) {
|
|
92
|
+
const session = this.store.getSession(context.sessionId);
|
|
93
|
+
if (this.store.hasDisabled(context.sessionId, name)) {
|
|
94
|
+
throw new VisibilityResolutionError(`Tool '${name}' is disabled in session '${context.sessionId}'.`);
|
|
95
|
+
}
|
|
96
|
+
if (tool.visibility === 'hidden' && !session?.enabledTools.has(name)) {
|
|
97
|
+
throw new VisibilityResolutionError(`Tool '${name}' is not available in session '${context.sessionId}'.`);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
// Stateless request attempting to invoke hidden tool
|
|
102
|
+
if (tool.visibility === 'hidden') {
|
|
103
|
+
throw new VisibilityResolutionError(`Tool '${name}' is hidden and cannot be invoked in stateless mode.`);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
return tool;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=visibility.transform.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"visibility.transform.js","sourceRoot":"","sources":["../../../../src/core/transforms/visibility/visibility.transform.ts"],"names":[],"mappings":"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"}
|
package/dist/core/types.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
import type { McpTransform } from './transforms/index.js';
|
|
2
3
|
/**
|
|
3
4
|
* Primitive JSON values
|
|
4
5
|
*/
|
|
@@ -39,6 +40,16 @@ export interface McpServerConfig {
|
|
|
39
40
|
name: string;
|
|
40
41
|
version: string;
|
|
41
42
|
description?: string;
|
|
43
|
+
transforms?: McpTransform[];
|
|
44
|
+
/**
|
|
45
|
+
* Payload spillover store created with the server. Interceptors read this
|
|
46
|
+
* store; they do not replace it.
|
|
47
|
+
*/
|
|
48
|
+
spillover?: {
|
|
49
|
+
driver?: 'memory' | 'filesystem';
|
|
50
|
+
storageDir?: string;
|
|
51
|
+
maxSizeBytes?: number;
|
|
52
|
+
};
|
|
42
53
|
capabilities?: {
|
|
43
54
|
tools?: boolean;
|
|
44
55
|
resources?: boolean;
|
|
@@ -121,6 +132,10 @@ export interface ToolAnnotations {
|
|
|
121
132
|
* @deprecated Use title field on tool definition instead
|
|
122
133
|
*/
|
|
123
134
|
title?: string;
|
|
135
|
+
/**
|
|
136
|
+
* If true, this tool remains directly exposed in tools/list when progressive discovery transforms are active.
|
|
137
|
+
*/
|
|
138
|
+
alwaysVisible?: boolean;
|
|
124
139
|
}
|
|
125
140
|
/**
|
|
126
141
|
* Tool definition with schema validation
|
|
@@ -325,6 +340,51 @@ export interface ExecutionContext {
|
|
|
325
340
|
metadata?: Record<string, JsonValue>;
|
|
326
341
|
/** Authentication context (if authenticated) */
|
|
327
342
|
auth?: AuthContext;
|
|
343
|
+
/**
|
|
344
|
+
* Isolation key for this request.
|
|
345
|
+
*
|
|
346
|
+
* On a context NitroStackServer builds, this is `anon:<session>` or
|
|
347
|
+
* `user:<subject>:<session>`, not the raw `Mcp-Session-Id` header.
|
|
348
|
+
* Visibility and spillover compare this string. A hand-built context must
|
|
349
|
+
* pass that same key, or be created with `createExecutionContext`.
|
|
350
|
+
*/
|
|
351
|
+
sessionId?: string;
|
|
352
|
+
/**
|
|
353
|
+
* Aborted when the calling sandbox script times out or the worker is torn down.
|
|
354
|
+
* The tool runner checks this before entering the handler and between pipeline
|
|
355
|
+
* stages. A handler that has already started must observe the signal itself;
|
|
356
|
+
* the runner cannot roll back a side effect that has already been committed.
|
|
357
|
+
*/
|
|
358
|
+
abortSignal?: AbortSignal;
|
|
359
|
+
/**
|
|
360
|
+
* Verified principal for subject-scoped visibility denies.
|
|
361
|
+
* Set only from `extra.auth.subject` on a context the server builds.
|
|
362
|
+
* The unsigned bearer decode that fills `auth` does not populate this.
|
|
363
|
+
*/
|
|
364
|
+
verifiedSubject?: string;
|
|
365
|
+
/**
|
|
366
|
+
* Dynamically reveals specified tools for the current session.
|
|
367
|
+
* Updates SessionVisibilityStore and broadcasts notifications/tools/list_changed.
|
|
368
|
+
*
|
|
369
|
+
* Optional so that hand-built contexts (test fixtures, custom transports) stay
|
|
370
|
+
* valid; NitroStackServer populates it on every context it creates.
|
|
371
|
+
*
|
|
372
|
+
* @param names Array of tool names to make visible.
|
|
373
|
+
*/
|
|
374
|
+
enableTools?(names: string[]): Promise<void>;
|
|
375
|
+
/**
|
|
376
|
+
* Dynamically hides specified tools for the current session.
|
|
377
|
+
* Updates SessionVisibilityStore and broadcasts notifications/tools/list_changed.
|
|
378
|
+
*
|
|
379
|
+
* @param names Array of tool names to hide.
|
|
380
|
+
*/
|
|
381
|
+
disableTools?(names: string[]): Promise<void>;
|
|
382
|
+
/**
|
|
383
|
+
* Returns current visibility state for this session:
|
|
384
|
+
* - If session has specific enabled/disabled rules, returns calculated allowed set.
|
|
385
|
+
* - If unrestricted session, returns undefined.
|
|
386
|
+
*/
|
|
387
|
+
getVisibleTools?(): Set<string> | undefined;
|
|
328
388
|
/**
|
|
329
389
|
* Task context — populated when the tool is invoked as a task.
|
|
330
390
|
* Use this to report progress and check for cancellation.
|
package/dist/core/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAGrE,KAAK,gBAAgB,CAAC,CAAC,GAAG,OAAO,IAAI,KAAK,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AASnE;;GAEG;AAEH;;GAEG;AACH,UAAU,QAAQ;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,qBAAa,UAAW,YAAW,MAAM;IACvC,IAAI,EAAE,QAAQ,EAAE,CAAM;IAEtB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAI5C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAI3C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAI3C,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAI5C,KAAK,IAAI,IAAI;IAIb,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO;CAGhD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,gBAAgB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"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"}
|
package/dist/testing/index.js
CHANGED