@363045841yyt/klinechart-ai-runtime 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/README.md +130 -0
- package/dist/createWithMcp.d.ts +9 -0
- package/dist/createWithMcp.d.ts.map +1 -0
- package/dist/createWithMcp.js +15 -0
- package/dist/createWithMcp.js.map +1 -0
- package/dist/describeControllers.d.ts +34 -0
- package/dist/describeControllers.d.ts.map +1 -0
- package/dist/describeControllers.js +104 -0
- package/dist/describeControllers.js.map +1 -0
- package/dist/executeTool.d.ts +12 -0
- package/dist/executeTool.d.ts.map +1 -0
- package/dist/executeTool.js +63 -0
- package/dist/executeTool.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/mcpServer.d.ts +35 -0
- package/dist/mcpServer.d.ts.map +1 -0
- package/dist/mcpServer.js +189 -0
- package/dist/mcpServer.js.map +1 -0
- package/dist/serialization.d.ts +28 -0
- package/dist/serialization.d.ts.map +1 -0
- package/dist/serialization.js +53 -0
- package/dist/serialization.js.map +1 -0
- package/dist/sessionRegistry.d.ts +19 -0
- package/dist/sessionRegistry.d.ts.map +1 -0
- package/dist/sessionRegistry.js +41 -0
- package/dist/sessionRegistry.js.map +1 -0
- package/dist/toolSchemas.d.ts +14 -0
- package/dist/toolSchemas.d.ts.map +1 -0
- package/dist/toolSchemas.js +216 -0
- package/dist/toolSchemas.js.map +1 -0
- package/dist/types.d.ts +75 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/package.json +63 -0
- package/src/__tests__/chartBridge.integration.test.ts +100 -0
- package/src/__tests__/describeControllers.test.ts +163 -0
- package/src/__tests__/executeTool.test.ts +187 -0
- package/src/__tests__/mcpServer.integration.test.ts +155 -0
- package/src/__tests__/mcpServer.test.ts +30 -0
- package/src/__tests__/serialization.test.ts +116 -0
- package/src/__tests__/sessionRegistry.test.ts +139 -0
- package/src/__tests__/toolSchemas.test.ts +149 -0
- package/src/createWithMcp.ts +28 -0
- package/src/describeControllers.ts +166 -0
- package/src/executeTool.ts +92 -0
- package/src/index.ts +38 -0
- package/src/mcpServer.ts +268 -0
- package/src/serialization.ts +88 -0
- package/src/sessionRegistry.ts +61 -0
- package/src/toolSchemas.ts +235 -0
- package/src/types.ts +52 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcpServer.js","sourceRoot":"","sources":["../src/mcpServer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { SerializedChartState } from './types';
|
|
2
|
+
export declare class ChartSerializationError extends Error {
|
|
3
|
+
readonly code: string;
|
|
4
|
+
constructor(code: string, message: string);
|
|
5
|
+
}
|
|
6
|
+
export interface ChartSnapshotInput {
|
|
7
|
+
label?: string;
|
|
8
|
+
viewport?: {
|
|
9
|
+
zoomLevel: number;
|
|
10
|
+
visibleFrom: number;
|
|
11
|
+
visibleTo: number;
|
|
12
|
+
};
|
|
13
|
+
theme?: 'light' | 'dark';
|
|
14
|
+
indicators?: ReadonlyArray<{
|
|
15
|
+
definitionId: string;
|
|
16
|
+
params: Readonly<Record<string, number | string | boolean>>;
|
|
17
|
+
}>;
|
|
18
|
+
alerts?: ReadonlyArray<{
|
|
19
|
+
id: string;
|
|
20
|
+
name: string;
|
|
21
|
+
predicate: unknown;
|
|
22
|
+
oneShot: boolean;
|
|
23
|
+
cooldownMs?: number;
|
|
24
|
+
}>;
|
|
25
|
+
}
|
|
26
|
+
export declare function serialize(snapshot: ChartSnapshotInput): SerializedChartState;
|
|
27
|
+
export declare function deserialize(json: string): SerializedChartState;
|
|
28
|
+
//# sourceMappingURL=serialization.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serialization.d.ts","sourceRoot":"","sources":["../src/serialization.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAInD,qBAAa,uBAAwB,SAAQ,KAAK;IAChD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;gBACT,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAK1C;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAA;IACxE,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAA;IACxB,UAAU,CAAC,EAAE,aAAa,CAAC;QACzB,YAAY,EAAE,MAAM,CAAA;QACpB,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC,CAAA;KAC5D,CAAC,CAAA;IACF,MAAM,CAAC,EAAE,aAAa,CAAC;QACrB,EAAE,EAAE,MAAM,CAAA;QACV,IAAI,EAAE,MAAM,CAAA;QACZ,SAAS,EAAE,OAAO,CAAA;QAClB,OAAO,EAAE,OAAO,CAAA;QAChB,UAAU,CAAC,EAAE,MAAM,CAAA;KACpB,CAAC,CAAA;CACH;AAED,wBAAgB,SAAS,CACvB,QAAQ,EAAE,kBAAkB,GAC3B,oBAAoB,CActB;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,oBAAoB,CAuC9D"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
const SCHEMA_VERSION = 1;
|
|
2
|
+
export class ChartSerializationError extends Error {
|
|
3
|
+
code;
|
|
4
|
+
constructor(code, message) {
|
|
5
|
+
super(message);
|
|
6
|
+
this.name = 'ChartSerializationError';
|
|
7
|
+
this.code = code;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
export function serialize(snapshot) {
|
|
11
|
+
const controllers = {};
|
|
12
|
+
if (snapshot.viewport !== undefined)
|
|
13
|
+
controllers.viewport = snapshot.viewport;
|
|
14
|
+
if (snapshot.theme !== undefined)
|
|
15
|
+
controllers.theme = snapshot.theme;
|
|
16
|
+
if (snapshot.indicators !== undefined)
|
|
17
|
+
controllers.indicators = snapshot.indicators;
|
|
18
|
+
if (snapshot.alerts !== undefined)
|
|
19
|
+
controllers.alerts = snapshot.alerts;
|
|
20
|
+
const out = {
|
|
21
|
+
schemaVersion: SCHEMA_VERSION,
|
|
22
|
+
snapshotTakenAt: new Date().toISOString(),
|
|
23
|
+
controllers,
|
|
24
|
+
};
|
|
25
|
+
if (snapshot.label !== undefined)
|
|
26
|
+
out.label = snapshot.label;
|
|
27
|
+
return out;
|
|
28
|
+
}
|
|
29
|
+
export function deserialize(json) {
|
|
30
|
+
let parsed;
|
|
31
|
+
try {
|
|
32
|
+
parsed = JSON.parse(json);
|
|
33
|
+
}
|
|
34
|
+
catch (err) {
|
|
35
|
+
throw new ChartSerializationError('INVALID_JSON', `Could not parse SerializedChartState as JSON: ${err.message}`);
|
|
36
|
+
}
|
|
37
|
+
if (typeof parsed !== 'object' || parsed === null) {
|
|
38
|
+
throw new ChartSerializationError('NOT_OBJECT', 'SerializedChartState root must be an object.');
|
|
39
|
+
}
|
|
40
|
+
const root = parsed;
|
|
41
|
+
if (root.schemaVersion !== SCHEMA_VERSION) {
|
|
42
|
+
throw new ChartSerializationError('SCHEMA_VERSION_MISMATCH', `Expected schemaVersion ${SCHEMA_VERSION}, got ${String(root.schemaVersion)}.`);
|
|
43
|
+
}
|
|
44
|
+
if (typeof root.snapshotTakenAt !== 'string' ||
|
|
45
|
+
Number.isNaN(Date.parse(root.snapshotTakenAt))) {
|
|
46
|
+
throw new ChartSerializationError('INVALID_TIMESTAMP', 'snapshotTakenAt must be an ISO 8601 string.');
|
|
47
|
+
}
|
|
48
|
+
if (typeof root.controllers !== 'object' || root.controllers === null) {
|
|
49
|
+
throw new ChartSerializationError('MISSING_CONTROLLERS', 'controllers object is required.');
|
|
50
|
+
}
|
|
51
|
+
return root;
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=serialization.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serialization.js","sourceRoot":"","sources":["../src/serialization.ts"],"names":[],"mappings":"AAEA,MAAM,cAAc,GAAG,CAAU,CAAA;AAEjC,MAAM,OAAO,uBAAwB,SAAQ,KAAK;IACvC,IAAI,CAAQ;IACrB,YAAY,IAAY,EAAE,OAAe;QACvC,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAA;QACrC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IAClB,CAAC;CACF;AAmBD,MAAM,UAAU,SAAS,CACvB,QAA4B;IAE5B,MAAM,WAAW,GAAwC,EAAE,CAAA;IAC3D,IAAI,QAAQ,CAAC,QAAQ,KAAK,SAAS;QAAE,WAAW,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAA;IAC7E,IAAI,QAAQ,CAAC,KAAK,KAAK,SAAS;QAAE,WAAW,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAA;IACpE,IAAI,QAAQ,CAAC,UAAU,KAAK,SAAS;QACnC,WAAW,CAAC,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAA;IAC9C,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS;QAAE,WAAW,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAA;IACvE,MAAM,GAAG,GAAyB;QAChC,aAAa,EAAE,cAAc;QAC7B,eAAe,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACzC,WAAW;KACZ,CAAA;IACD,IAAI,QAAQ,CAAC,KAAK,KAAK,SAAS;QAAE,GAAG,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAA;IAC5D,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,IAAI,MAAe,CAAA;IACnB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAC3B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,uBAAuB,CAC/B,cAAc,EACd,iDAAkD,GAAa,CAAC,OAAO,EAAE,CAC1E,CAAA;IACH,CAAC;IACD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QAClD,MAAM,IAAI,uBAAuB,CAC/B,YAAY,EACZ,8CAA8C,CAC/C,CAAA;IACH,CAAC;IACD,MAAM,IAAI,GAAG,MAAuC,CAAA;IACpD,IAAI,IAAI,CAAC,aAAa,KAAK,cAAc,EAAE,CAAC;QAC1C,MAAM,IAAI,uBAAuB,CAC/B,yBAAyB,EACzB,0BAA0B,cAAc,SAAS,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAC/E,CAAA;IACH,CAAC;IACD,IACE,OAAO,IAAI,CAAC,eAAe,KAAK,QAAQ;QACxC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,EAC9C,CAAC;QACD,MAAM,IAAI,uBAAuB,CAC/B,mBAAmB,EACnB,6CAA6C,CAC9C,CAAA;IACH,CAAC;IACD,IAAI,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC;QACtE,MAAM,IAAI,uBAAuB,CAC/B,qBAAqB,EACrB,iCAAiC,CAClC,CAAA;IACH,CAAC;IACD,OAAO,IAA4B,CAAA;AACrC,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { ToolCall, ToolResult } from './executeTool';
|
|
2
|
+
import type { ControllerDescription } from './types';
|
|
3
|
+
export interface SessionHandle {
|
|
4
|
+
readonly sessionId: string;
|
|
5
|
+
executeTool(call: ToolCall): Promise<ToolResult>;
|
|
6
|
+
}
|
|
7
|
+
export declare class SessionRegistry {
|
|
8
|
+
private sessions;
|
|
9
|
+
private states;
|
|
10
|
+
register(sessionId: string, handle: SessionHandle): void;
|
|
11
|
+
unregister(sessionId: string): void;
|
|
12
|
+
get(sessionId: string): SessionHandle | undefined;
|
|
13
|
+
has(sessionId: string): boolean;
|
|
14
|
+
getActiveSessionIds(): string[];
|
|
15
|
+
updateState(sessionId: string, descriptions: Record<string, ControllerDescription>): void;
|
|
16
|
+
getState(sessionId: string): Record<string, ControllerDescription> | undefined;
|
|
17
|
+
getSummary(sessionId: string): string;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=sessionRegistry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessionRegistry.d.ts","sourceRoot":"","sources":["../src/sessionRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AACzD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAEpD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,WAAW,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;CACjD;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAmC;IACnD,OAAO,CAAC,MAAM,CAA2D;IAEzE,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI;IAKxD,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAKnC,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAIjD,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAI/B,mBAAmB,IAAI,MAAM,EAAE;IAI/B,WAAW,CACT,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,GAClD,IAAI;IAOP,QAAQ,CACN,SAAS,EAAE,MAAM,GAChB,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,GAAG,SAAS;IAIpD,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;CAUtC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
export class SessionRegistry {
|
|
2
|
+
sessions = new Map();
|
|
3
|
+
states = new Map();
|
|
4
|
+
register(sessionId, handle) {
|
|
5
|
+
this.sessions.set(sessionId, handle);
|
|
6
|
+
this.states.set(sessionId, {});
|
|
7
|
+
}
|
|
8
|
+
unregister(sessionId) {
|
|
9
|
+
this.sessions.delete(sessionId);
|
|
10
|
+
this.states.delete(sessionId);
|
|
11
|
+
}
|
|
12
|
+
get(sessionId) {
|
|
13
|
+
return this.sessions.get(sessionId);
|
|
14
|
+
}
|
|
15
|
+
has(sessionId) {
|
|
16
|
+
return this.sessions.has(sessionId);
|
|
17
|
+
}
|
|
18
|
+
getActiveSessionIds() {
|
|
19
|
+
return Array.from(this.sessions.keys());
|
|
20
|
+
}
|
|
21
|
+
updateState(sessionId, descriptions) {
|
|
22
|
+
const existing = this.states.get(sessionId);
|
|
23
|
+
if (existing) {
|
|
24
|
+
Object.assign(existing, descriptions);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
getState(sessionId) {
|
|
28
|
+
return this.states.get(sessionId);
|
|
29
|
+
}
|
|
30
|
+
getSummary(sessionId) {
|
|
31
|
+
const descriptions = this.states.get(sessionId);
|
|
32
|
+
if (!descriptions)
|
|
33
|
+
return 'No state available.';
|
|
34
|
+
const parts = [];
|
|
35
|
+
for (const desc of Object.values(descriptions)) {
|
|
36
|
+
parts.push(`[${desc.controllerId}] ${desc.summary}`);
|
|
37
|
+
}
|
|
38
|
+
return parts.length > 0 ? parts.join(' | ') : 'No controllers described.';
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=sessionRegistry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessionRegistry.js","sourceRoot":"","sources":["../src/sessionRegistry.ts"],"names":[],"mappings":"AAQA,MAAM,OAAO,eAAe;IAClB,QAAQ,GAAG,IAAI,GAAG,EAAyB,CAAA;IAC3C,MAAM,GAAG,IAAI,GAAG,EAAiD,CAAA;IAEzE,QAAQ,CAAC,SAAiB,EAAE,MAAqB;QAC/C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;QACpC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC,CAAA;IAChC,CAAC;IAED,UAAU,CAAC,SAAiB;QAC1B,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;QAC/B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;IAC/B,CAAC;IAED,GAAG,CAAC,SAAiB;QACnB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;IACrC,CAAC;IAED,GAAG,CAAC,SAAiB;QACnB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;IACrC,CAAC;IAED,mBAAmB;QACjB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;IACzC,CAAC;IAED,WAAW,CACT,SAAiB,EACjB,YAAmD;QAEnD,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;QAC3C,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAA;QACvC,CAAC;IACH,CAAC;IAED,QAAQ,CACN,SAAiB;QAEjB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;IACnC,CAAC;IAED,UAAU,CAAC,SAAiB;QAC1B,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;QAC/C,IAAI,CAAC,YAAY;YAAE,OAAO,qBAAqB,CAAA;QAE/C,MAAM,KAAK,GAAa,EAAE,CAAA;QAC1B,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;YAC/C,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC,CAAA;QACtD,CAAC;QACD,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,2BAA2B,CAAA;IAC3E,CAAC;CACF"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { McpToolSchema } from './types';
|
|
2
|
+
export declare const CHART_NAVIGATION_TOOLS: McpToolSchema[];
|
|
3
|
+
export declare const INDICATOR_TOOLS: McpToolSchema[];
|
|
4
|
+
export declare const ALERT_TOOLS: McpToolSchema[];
|
|
5
|
+
export declare const REPLAY_TOOLS: McpToolSchema[];
|
|
6
|
+
export declare const ALL_TOOLS: ReadonlyArray<McpToolSchema>;
|
|
7
|
+
export declare const TOOL_GROUPS: {
|
|
8
|
+
readonly navigation: McpToolSchema[];
|
|
9
|
+
readonly indicators: McpToolSchema[];
|
|
10
|
+
readonly alerts: McpToolSchema[];
|
|
11
|
+
readonly replay: McpToolSchema[];
|
|
12
|
+
};
|
|
13
|
+
export declare function findTool(name: string): McpToolSchema | null;
|
|
14
|
+
//# sourceMappingURL=toolSchemas.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toolSchemas.d.ts","sourceRoot":"","sources":["../src/toolSchemas.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAE5C,eAAO,MAAM,sBAAsB,EAAE,aAAa,EAuCjD,CAAA;AAED,eAAO,MAAM,eAAe,EAAE,aAAa,EA+D1C,CAAA;AAED,eAAO,MAAM,WAAW,EAAE,aAAa,EA4DtC,CAAA;AAED,eAAO,MAAM,YAAY,EAAE,aAAa,EA2CvC,CAAA;AAED,eAAO,MAAM,SAAS,EAAE,aAAa,CAAC,aAAa,CAKlD,CAAA;AAED,eAAO,MAAM,WAAW;;;;;CAKd,CAAA;AAEV,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAK3D"}
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
export const CHART_NAVIGATION_TOOLS = [
|
|
2
|
+
{
|
|
3
|
+
name: 'chart.zoomToLevel',
|
|
4
|
+
description: 'Zoom the chart to a specific discrete level (1 = most zoomed out, ' +
|
|
5
|
+
'higher numbers = more zoomed in). Use when the user says "zoom in", ' +
|
|
6
|
+
'"zoom out", "fit the chart", or asks for a specific zoom level.',
|
|
7
|
+
inputSchema: {
|
|
8
|
+
type: 'object',
|
|
9
|
+
properties: {
|
|
10
|
+
level: {
|
|
11
|
+
type: 'integer',
|
|
12
|
+
minimum: 1,
|
|
13
|
+
maximum: 20,
|
|
14
|
+
description: 'Discrete zoom level. Higher = more zoomed in.',
|
|
15
|
+
},
|
|
16
|
+
anchorX: {
|
|
17
|
+
type: 'number',
|
|
18
|
+
description: 'Optional X coordinate to keep stationary during zoom.',
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
required: ['level'],
|
|
22
|
+
},
|
|
23
|
+
safety: 'mutates-state',
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
name: 'chart.setTheme',
|
|
27
|
+
description: 'Switch between light and dark theme. Use when the user asks for ' +
|
|
28
|
+
'"dark mode", "light mode", or expresses a theme preference.',
|
|
29
|
+
inputSchema: {
|
|
30
|
+
type: 'object',
|
|
31
|
+
properties: {
|
|
32
|
+
theme: { type: 'string', enum: ['light', 'dark'] },
|
|
33
|
+
},
|
|
34
|
+
required: ['theme'],
|
|
35
|
+
},
|
|
36
|
+
safety: 'mutates-state',
|
|
37
|
+
},
|
|
38
|
+
];
|
|
39
|
+
export const INDICATOR_TOOLS = [
|
|
40
|
+
{
|
|
41
|
+
name: 'indicators.add',
|
|
42
|
+
description: 'Add a technical indicator to the chart by its catalog id (e.g. "MA", ' +
|
|
43
|
+
'"BOLL", "MACD", "RSI"). Use when the user asks to "add a moving ' +
|
|
44
|
+
'average", "show MACD", "I want to see Bollinger Bands", etc.',
|
|
45
|
+
inputSchema: {
|
|
46
|
+
type: 'object',
|
|
47
|
+
properties: {
|
|
48
|
+
definitionId: {
|
|
49
|
+
type: 'string',
|
|
50
|
+
description: 'Catalog id of the indicator. Common: MA, EMA, BOLL, EXPMA, ' +
|
|
51
|
+
'MACD, RSI, KDJ, VOL, ATR, OBV.',
|
|
52
|
+
},
|
|
53
|
+
},
|
|
54
|
+
required: ['definitionId'],
|
|
55
|
+
},
|
|
56
|
+
outputSchema: {
|
|
57
|
+
type: 'object',
|
|
58
|
+
properties: {
|
|
59
|
+
instanceId: {
|
|
60
|
+
type: 'string',
|
|
61
|
+
description: 'New instance id, or null if the indicator was already active.',
|
|
62
|
+
},
|
|
63
|
+
},
|
|
64
|
+
},
|
|
65
|
+
safety: 'mutates-state',
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
name: 'indicators.remove',
|
|
69
|
+
description: 'Remove an indicator instance by its instance id.',
|
|
70
|
+
inputSchema: {
|
|
71
|
+
type: 'object',
|
|
72
|
+
properties: {
|
|
73
|
+
instanceId: { type: 'string' },
|
|
74
|
+
},
|
|
75
|
+
required: ['instanceId'],
|
|
76
|
+
},
|
|
77
|
+
safety: 'mutates-state',
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
name: 'indicators.updateParams',
|
|
81
|
+
description: 'Change the parameters of an active indicator (e.g. MA period from ' +
|
|
82
|
+
'20 to 50, BOLL multiplier from 2 to 2.5).',
|
|
83
|
+
inputSchema: {
|
|
84
|
+
type: 'object',
|
|
85
|
+
properties: {
|
|
86
|
+
instanceId: { type: 'string' },
|
|
87
|
+
params: {
|
|
88
|
+
type: 'object',
|
|
89
|
+
properties: {},
|
|
90
|
+
additionalProperties: true,
|
|
91
|
+
description: 'Param key to value map (numbers, strings, booleans).',
|
|
92
|
+
},
|
|
93
|
+
},
|
|
94
|
+
required: ['instanceId', 'params'],
|
|
95
|
+
},
|
|
96
|
+
safety: 'mutates-state',
|
|
97
|
+
},
|
|
98
|
+
];
|
|
99
|
+
export const ALERT_TOOLS = [
|
|
100
|
+
{
|
|
101
|
+
name: 'alerts.addPriceCross',
|
|
102
|
+
description: 'Create a price-crossing alert. Use when the user says "alert me when ' +
|
|
103
|
+
'BTC crosses 100k", "tell me when price drops below X", "wake me up at Y".',
|
|
104
|
+
inputSchema: {
|
|
105
|
+
type: 'object',
|
|
106
|
+
properties: {
|
|
107
|
+
id: { type: 'string', description: 'Unique alert id.' },
|
|
108
|
+
name: { type: 'string', description: 'Human-readable label.' },
|
|
109
|
+
price: { type: 'number' },
|
|
110
|
+
direction: { type: 'string', enum: ['up', 'down', 'any'] },
|
|
111
|
+
oneShot: {
|
|
112
|
+
type: 'boolean',
|
|
113
|
+
description: 'If true, fires once then auto-disables.',
|
|
114
|
+
},
|
|
115
|
+
},
|
|
116
|
+
required: ['id', 'name', 'price', 'direction', 'oneShot'],
|
|
117
|
+
},
|
|
118
|
+
safety: 'mutates-state',
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
name: 'alerts.addIndicatorCross',
|
|
122
|
+
description: 'Alert when an indicator value crosses a threshold (e.g. RSI > 70, MACD ' +
|
|
123
|
+
'histogram goes positive).',
|
|
124
|
+
inputSchema: {
|
|
125
|
+
type: 'object',
|
|
126
|
+
properties: {
|
|
127
|
+
id: { type: 'string' },
|
|
128
|
+
name: { type: 'string' },
|
|
129
|
+
indicatorId: { type: 'string' },
|
|
130
|
+
threshold: { type: 'number' },
|
|
131
|
+
direction: { type: 'string', enum: ['up', 'down', 'any'] },
|
|
132
|
+
oneShot: { type: 'boolean' },
|
|
133
|
+
},
|
|
134
|
+
required: [
|
|
135
|
+
'id',
|
|
136
|
+
'name',
|
|
137
|
+
'indicatorId',
|
|
138
|
+
'threshold',
|
|
139
|
+
'direction',
|
|
140
|
+
'oneShot',
|
|
141
|
+
],
|
|
142
|
+
},
|
|
143
|
+
safety: 'mutates-state',
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
name: 'alerts.remove',
|
|
147
|
+
description: 'Remove an existing alert rule by its id. Use when the user says ' +
|
|
148
|
+
'"cancel the BTC alert", "delete that alert", "I no longer need notification X".',
|
|
149
|
+
inputSchema: {
|
|
150
|
+
type: 'object',
|
|
151
|
+
properties: { id: { type: 'string' } },
|
|
152
|
+
required: ['id'],
|
|
153
|
+
},
|
|
154
|
+
safety: 'mutates-state',
|
|
155
|
+
},
|
|
156
|
+
];
|
|
157
|
+
export const REPLAY_TOOLS = [
|
|
158
|
+
{
|
|
159
|
+
name: 'replay.seekTo',
|
|
160
|
+
description: 'Move the replay cursor to a specific bar index. Use when the user says ' +
|
|
161
|
+
'"go to bar X", "rewind to the start", "show me what happened at this point".',
|
|
162
|
+
inputSchema: {
|
|
163
|
+
type: 'object',
|
|
164
|
+
properties: {
|
|
165
|
+
position: { type: 'number', description: 'Bar index (float).' },
|
|
166
|
+
},
|
|
167
|
+
required: ['position'],
|
|
168
|
+
},
|
|
169
|
+
safety: 'mutates-state',
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
name: 'replay.play',
|
|
173
|
+
description: 'Start replay from the current cursor at the configured pacing and speed. ' +
|
|
174
|
+
'Use when the user says "play", "start replay", "go".',
|
|
175
|
+
inputSchema: { type: 'object', properties: {} },
|
|
176
|
+
safety: 'mutates-state',
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
name: 'replay.pause',
|
|
180
|
+
description: 'Pause the replay at the current bar. Use when the user says "pause", ' +
|
|
181
|
+
'"stop", "hold on", or wants to inspect a specific bar.',
|
|
182
|
+
inputSchema: { type: 'object', properties: {} },
|
|
183
|
+
safety: 'mutates-state',
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
name: 'replay.setSpeed',
|
|
187
|
+
description: 'Set replay speed multiplier (1.0 = real-time, 10.0 = 10x speed). ' +
|
|
188
|
+
'Use when the user says "faster", "slow down", "real-time".',
|
|
189
|
+
inputSchema: {
|
|
190
|
+
type: 'object',
|
|
191
|
+
properties: { speed: { type: 'number', minimum: 0.01 } },
|
|
192
|
+
required: ['speed'],
|
|
193
|
+
},
|
|
194
|
+
safety: 'mutates-state',
|
|
195
|
+
},
|
|
196
|
+
];
|
|
197
|
+
export const ALL_TOOLS = [
|
|
198
|
+
...CHART_NAVIGATION_TOOLS,
|
|
199
|
+
...INDICATOR_TOOLS,
|
|
200
|
+
...ALERT_TOOLS,
|
|
201
|
+
...REPLAY_TOOLS,
|
|
202
|
+
];
|
|
203
|
+
export const TOOL_GROUPS = {
|
|
204
|
+
navigation: CHART_NAVIGATION_TOOLS,
|
|
205
|
+
indicators: INDICATOR_TOOLS,
|
|
206
|
+
alerts: ALERT_TOOLS,
|
|
207
|
+
replay: REPLAY_TOOLS,
|
|
208
|
+
};
|
|
209
|
+
export function findTool(name) {
|
|
210
|
+
for (const tool of ALL_TOOLS) {
|
|
211
|
+
if (tool.name === name)
|
|
212
|
+
return tool;
|
|
213
|
+
}
|
|
214
|
+
return null;
|
|
215
|
+
}
|
|
216
|
+
//# sourceMappingURL=toolSchemas.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toolSchemas.js","sourceRoot":"","sources":["../src/toolSchemas.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
export interface McpToolSchema {
|
|
2
|
+
name: string;
|
|
3
|
+
description: string;
|
|
4
|
+
inputSchema: JsonSchema;
|
|
5
|
+
outputSchema?: JsonSchema;
|
|
6
|
+
safety: 'readonly' | 'mutates-state' | 'destroys-state';
|
|
7
|
+
}
|
|
8
|
+
export type JsonSchema = {
|
|
9
|
+
type: 'object';
|
|
10
|
+
properties: Record<string, JsonSchema>;
|
|
11
|
+
required?: string[];
|
|
12
|
+
additionalProperties?: boolean;
|
|
13
|
+
description?: string;
|
|
14
|
+
} | {
|
|
15
|
+
type: 'array';
|
|
16
|
+
items: JsonSchema;
|
|
17
|
+
description?: string;
|
|
18
|
+
} | {
|
|
19
|
+
type: 'string';
|
|
20
|
+
enum?: ReadonlyArray<string>;
|
|
21
|
+
description?: string;
|
|
22
|
+
} | {
|
|
23
|
+
type: 'number';
|
|
24
|
+
minimum?: number;
|
|
25
|
+
maximum?: number;
|
|
26
|
+
description?: string;
|
|
27
|
+
} | {
|
|
28
|
+
type: 'integer';
|
|
29
|
+
minimum?: number;
|
|
30
|
+
maximum?: number;
|
|
31
|
+
description?: string;
|
|
32
|
+
} | {
|
|
33
|
+
type: 'boolean';
|
|
34
|
+
description?: string;
|
|
35
|
+
} | {
|
|
36
|
+
type: 'null';
|
|
37
|
+
description?: string;
|
|
38
|
+
} | {
|
|
39
|
+
oneOf: JsonSchema[];
|
|
40
|
+
description?: string;
|
|
41
|
+
} | {
|
|
42
|
+
anyOf: JsonSchema[];
|
|
43
|
+
description?: string;
|
|
44
|
+
};
|
|
45
|
+
export interface ControllerDescription {
|
|
46
|
+
controllerId: string;
|
|
47
|
+
summary: string;
|
|
48
|
+
facts: Readonly<Record<string, string | number | boolean | null>>;
|
|
49
|
+
warnings?: ReadonlyArray<string>;
|
|
50
|
+
}
|
|
51
|
+
export interface SerializedChartState {
|
|
52
|
+
schemaVersion: 1;
|
|
53
|
+
snapshotTakenAt: string;
|
|
54
|
+
label?: string;
|
|
55
|
+
controllers: {
|
|
56
|
+
viewport?: {
|
|
57
|
+
zoomLevel: number;
|
|
58
|
+
visibleFrom: number;
|
|
59
|
+
visibleTo: number;
|
|
60
|
+
};
|
|
61
|
+
theme?: 'light' | 'dark';
|
|
62
|
+
indicators?: ReadonlyArray<{
|
|
63
|
+
definitionId: string;
|
|
64
|
+
params: Readonly<Record<string, number | string | boolean>>;
|
|
65
|
+
}>;
|
|
66
|
+
alerts?: ReadonlyArray<{
|
|
67
|
+
id: string;
|
|
68
|
+
name: string;
|
|
69
|
+
predicate: unknown;
|
|
70
|
+
oneShot: boolean;
|
|
71
|
+
cooldownMs?: number;
|
|
72
|
+
}>;
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,UAAU,CAAA;IACvB,YAAY,CAAC,EAAE,UAAU,CAAA;IACzB,MAAM,EAAE,UAAU,GAAG,eAAe,GAAG,gBAAgB,CAAA;CACxD;AAED,MAAM,MAAM,UAAU,GAClB;IACE,IAAI,EAAE,QAAQ,CAAA;IACd,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;IACtC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IACnB,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB,GACD;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,UAAU,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GAC1D;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GACtE;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5E;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GAC7E;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GACzC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GACtC;IAAE,KAAK,EAAE,UAAU,EAAE,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GAC7C;IAAE,KAAK,EAAE,UAAU,EAAE,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAEjD,MAAM,WAAW,qBAAqB;IACpC,YAAY,EAAE,MAAM,CAAA;IACpB,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC,CAAC,CAAA;IACjE,QAAQ,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;CACjC;AAED,MAAM,WAAW,oBAAoB;IACnC,aAAa,EAAE,CAAC,CAAA;IAChB,eAAe,EAAE,MAAM,CAAA;IACvB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,EAAE;QACX,QAAQ,CAAC,EAAE;YAAE,SAAS,EAAE,MAAM,CAAC;YAAC,WAAW,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,MAAM,CAAA;SAAE,CAAA;QACxE,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAA;QACxB,UAAU,CAAC,EAAE,aAAa,CAAC;YACzB,YAAY,EAAE,MAAM,CAAA;YACpB,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC,CAAA;SAC5D,CAAC,CAAA;QACF,MAAM,CAAC,EAAE,aAAa,CAAC;YACrB,EAAE,EAAE,MAAM,CAAA;YACV,IAAI,EAAE,MAAM,CAAA;YACZ,SAAS,EAAE,OAAO,CAAA;YAClB,OAAO,EAAE,OAAO,CAAA;YAChB,UAAU,CAAC,EAAE,MAAM,CAAA;SACpB,CAAC,CAAA;KACH,CAAA;CACF"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
package/package.json
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@363045841yyt/klinechart-ai-runtime",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "AI Native runtime for @363045841yyt/klinechart — MCP tool schemas, controller describe() output, chart state serialization.",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"kline",
|
|
7
|
+
"candlestick",
|
|
8
|
+
"chart",
|
|
9
|
+
"mcp",
|
|
10
|
+
"model-context-protocol",
|
|
11
|
+
"ai",
|
|
12
|
+
"agent",
|
|
13
|
+
"websocket",
|
|
14
|
+
"trading",
|
|
15
|
+
"quantitative"
|
|
16
|
+
],
|
|
17
|
+
"license": "MIT",
|
|
18
|
+
"type": "module",
|
|
19
|
+
"sideEffects": false,
|
|
20
|
+
"main": "./dist/index.js",
|
|
21
|
+
"module": "./dist/index.js",
|
|
22
|
+
"types": "./dist/index.d.ts",
|
|
23
|
+
"exports": {
|
|
24
|
+
".": {
|
|
25
|
+
"types": "./dist/index.d.ts",
|
|
26
|
+
"import": "./dist/index.js"
|
|
27
|
+
},
|
|
28
|
+
"./mcp-server": {
|
|
29
|
+
"types": "./dist/mcpServer.d.ts",
|
|
30
|
+
"import": "./dist/mcpServer.js"
|
|
31
|
+
},
|
|
32
|
+
"./create-with-mcp": {
|
|
33
|
+
"types": "./dist/createWithMcp.d.ts",
|
|
34
|
+
"import": "./dist/createWithMcp.js"
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
"files": [
|
|
38
|
+
"dist",
|
|
39
|
+
"src"
|
|
40
|
+
],
|
|
41
|
+
"scripts": {
|
|
42
|
+
"build": "tsc -p tsconfig.build.json",
|
|
43
|
+
"prepublishOnly": "pnpm build",
|
|
44
|
+
"start": "tsx scripts/dev.ts",
|
|
45
|
+
"test": "vitest run",
|
|
46
|
+
"inspect": "npx @modelcontextprotocol/inspector npx tsx scripts/dev.ts"
|
|
47
|
+
},
|
|
48
|
+
"peerDependencies": {
|
|
49
|
+
"@363045841yyt/klinechart-core": "workspace:*"
|
|
50
|
+
},
|
|
51
|
+
"dependencies": {
|
|
52
|
+
"@modelcontextprotocol/sdk": "^1",
|
|
53
|
+
"ws": "^8"
|
|
54
|
+
},
|
|
55
|
+
"devDependencies": {
|
|
56
|
+
"@types/ws": "^8",
|
|
57
|
+
"typescript": "~6.0.3",
|
|
58
|
+
"vitest": "^4.1.5"
|
|
59
|
+
},
|
|
60
|
+
"publishConfig": {
|
|
61
|
+
"access": "public"
|
|
62
|
+
}
|
|
63
|
+
}
|