chishiki-mcp 0.0.0-stage → 0.3.1

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 ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2025 Seo Jong Hak
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,4 @@
1
+ export * from './src/adapter.js';
2
+ export * from './src/schema.js';
3
+ export * from './src/server.js';
4
+ //# sourceMappingURL=index.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../index.mts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC"}
package/dist/index.mjs ADDED
@@ -0,0 +1,3 @@
1
+ export * from './src/adapter.js';
2
+ export * from './src/schema.js';
3
+ export * from './src/server.js';
@@ -0,0 +1,20 @@
1
+ import { type ChishikiCore, type StorageAdapter } from 'chishiki-core';
2
+ /** Mirrors the `directories` crate's data_dir for ProjectDirs("app","chishiki","Chishiki"). */
3
+ export declare const defaultDbPath: () => string;
4
+ export declare class NodeSqliteAdapter implements StorageAdapter {
5
+ private readonly path;
6
+ private db;
7
+ constructor(path?: string);
8
+ private get conn();
9
+ initialize(): Promise<void>;
10
+ query<T = unknown>(sql: string, params?: unknown[]): Promise<T[]>;
11
+ execute(sql: string, params?: unknown[]): Promise<void>;
12
+ transaction<T>(fn: () => Promise<T>): Promise<T>;
13
+ close(): Promise<void>;
14
+ /** Whole-file backup via VACUUM INTO (WAL-safe). */
15
+ export(): Promise<Uint8Array>;
16
+ import(data: Uint8Array): Promise<void>;
17
+ }
18
+ /** Convenience: core backed by the local node:sqlite file. Hosted deployments build their own core with another StorageAdapter and call createServer(core). */
19
+ export declare const createCore: (dbPath?: string) => Promise<ChishikiCore>;
20
+ //# sourceMappingURL=adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/adapter.ts"],"names":[],"mappings":"AAUA,OAAO,EAAkB,KAAK,YAAY,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AAavF,+FAA+F;AAC/F,eAAO,MAAM,aAAa,QAAO,MAiBhC,CAAC;AAEF,qBAAa,iBAAkB,YAAW,cAAc;IAG1C,OAAO,CAAC,QAAQ,CAAC,IAAI;IAFjC,OAAO,CAAC,EAAE,CAA6B;gBAEV,IAAI,GAAE,MAAwB;IAE3D,OAAO,KAAK,IAAI,GAGf;IAEK,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAO3B,KAAK,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAIjE,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAOvD,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAIhD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAK5B,oDAAoD;IAC9C,MAAM,IAAI,OAAO,CAAC,UAAU,CAAC;IAM7B,MAAM,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CAK9C;AAED,+JAA+J;AAC/J,eAAO,MAAM,UAAU,GAAU,SAAS,MAAM,KAAG,OAAO,CAAC,YAAY,CAItE,CAAC"}
@@ -0,0 +1,87 @@
1
+ /**
2
+ * Node StorageAdapter backed by node:sqlite (stdlib, Node >= 22.13).
3
+ *
4
+ * Defaults to the same chishiki.db the Tauri desktop app uses, so the AI
5
+ * assistant and the desktop app share one learning record store.
6
+ */
7
+ import { DatabaseSync } from 'node:sqlite';
8
+ import { join } from 'node:path';
9
+ import { readFile, writeFile } from 'node:fs/promises';
10
+ import { homedir } from 'node:os';
11
+ import { createChishiki } from 'chishiki-core';
12
+ import { SCHEMA } from './schema.js';
13
+ const toParams = (params) => (params ?? []).map(p => {
14
+ if (p === undefined || p === null)
15
+ return null;
16
+ if (typeof p === 'boolean')
17
+ return p ? 1 : 0;
18
+ if (typeof p === 'number' || typeof p === 'bigint' || typeof p === 'string' || p instanceof Uint8Array)
19
+ return p;
20
+ return JSON.stringify(p);
21
+ });
22
+ /** Mirrors the `directories` crate's data_dir for ProjectDirs("app","chishiki","Chishiki"). */
23
+ export const defaultDbPath = () => {
24
+ if (process.env.CHISHIKI_DB)
25
+ return process.env.CHISHIKI_DB;
26
+ const home = homedir();
27
+ switch (process.platform) {
28
+ case 'win32':
29
+ return join(process.env.APPDATA ?? join(home, 'AppData', 'Roaming'), 'chishiki', 'Chishiki', 'data', 'chishiki.db');
30
+ case 'darwin':
31
+ return join(home, 'Library', 'Application Support', 'app.chishiki.Chishiki', 'chishiki.db');
32
+ default:
33
+ return join(process.env.XDG_DATA_HOME ?? join(home, '.local', 'share'), 'chishiki', 'chishiki.db');
34
+ }
35
+ };
36
+ export class NodeSqliteAdapter {
37
+ path;
38
+ db = null;
39
+ constructor(path = defaultDbPath()) {
40
+ this.path = path;
41
+ }
42
+ get conn() {
43
+ if (!this.db)
44
+ throw new Error('NodeSqliteAdapter not initialized');
45
+ return this.db;
46
+ }
47
+ async initialize() {
48
+ if (this.db)
49
+ return;
50
+ this.db = new DatabaseSync(this.path);
51
+ this.db.exec('PRAGMA journal_mode = WAL; PRAGMA foreign_keys = ON;');
52
+ this.db.exec(SCHEMA);
53
+ }
54
+ async query(sql, params) {
55
+ return this.conn.prepare(sql).all(...toParams(params));
56
+ }
57
+ async execute(sql, params) {
58
+ this.conn.prepare(sql).run(...toParams(params));
59
+ }
60
+ // ponytail: core's callers await inside fn, so a real BEGIN/COMMIT around async
61
+ // work would interleave with other calls; node:sqlite is single-connection and
62
+ // synchronous per statement, so just run fn. Add SAVEPOINT if atomicity matters.
63
+ async transaction(fn) {
64
+ return fn();
65
+ }
66
+ async close() {
67
+ this.db?.close();
68
+ this.db = null;
69
+ }
70
+ /** Whole-file backup via VACUUM INTO (WAL-safe). */
71
+ async export() {
72
+ const out = `${this.path}.export-${Date.now()}`;
73
+ this.conn.exec(`VACUUM INTO '${out.replace(/'/g, "''")}'`);
74
+ return new Uint8Array(await readFile(out));
75
+ }
76
+ async import(data) {
77
+ await this.close();
78
+ await writeFile(this.path, data);
79
+ await this.initialize();
80
+ }
81
+ }
82
+ /** Convenience: core backed by the local node:sqlite file. Hosted deployments build their own core with another StorageAdapter and call createServer(core). */
83
+ export const createCore = async (dbPath) => {
84
+ const core = createChishiki({ storage: new NodeSqliteAdapter(dbPath) });
85
+ await core.initialize();
86
+ return core;
87
+ };
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env node
2
+ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
3
+ import { createCore } from './adapter.js';
4
+ import { createServer } from './server.js';
5
+ const core = await createCore(process.argv[2]);
6
+ await createServer(core).connect(new StdioServerTransport());
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=lrs-query.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lrs-query.test.d.ts","sourceRoot":"","sources":["../../src/lrs-query.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,78 @@
1
+ /**
2
+ * Regression tests for chishiki-core's lrs.query, run here because core has no test runner and this package's
3
+ * node:sqlite adapter is a real storage backend.
4
+ */
5
+ import assert from 'node:assert/strict';
6
+ import { mkdtempSync } from 'node:fs';
7
+ import { tmpdir } from 'node:os';
8
+ import { join } from 'node:path';
9
+ import { test } from 'node:test';
10
+ import { createCore } from './adapter.js';
11
+ const ANSWERED = 'http://adlnet.gov/expapi/verbs/answered';
12
+ const REVIEWED = 'http://id.tincanapi.com/verb/reviewed';
13
+ const VIEWED = 'http://id.tincanapi.com/verb/viewed';
14
+ const card = (n) => `https://example.test/cards/${n}`;
15
+ const seed = async () => {
16
+ const core = await createCore(join(mkdtempSync(join(tmpdir(), 'chishiki-lrs-')), 'test.db'));
17
+ const rec = (verb, n, timestamp, registration) => core.lrs.record({
18
+ verb: { id: verb, display: { 'en-US': verb.split('/').pop() ?? '' } },
19
+ object: { objectType: 'Activity', id: card(n), definition: { name: { 'en-US': n } } },
20
+ result: { success: true },
21
+ context: registration ? { registration } : undefined,
22
+ timestamp,
23
+ });
24
+ await rec(ANSWERED, 'g', '2026-01-01T00:00:00.000Z', 'reg-a');
25
+ await rec(REVIEWED, 'k', '2026-01-02T00:00:00.000Z', 'reg-a');
26
+ await rec(VIEWED, 'g', '2026-01-03T00:00:00.000Z', 'reg-b');
27
+ await rec(ANSWERED, 'd', '2026-01-04T00:00:00.000Z');
28
+ return core;
29
+ };
30
+ const names = (r) => r.statements.map(s => s.object.definition.name['en-US']);
31
+ test('since is an inclusive lower bound, not an exact match', async () => {
32
+ const core = await seed();
33
+ assert.deepEqual(names(await core.lrs.query({ since: '2026-01-02T00:00:00.000Z' })), ['d', 'g', 'k']);
34
+ assert.deepEqual(names(await core.lrs.query({ since: '2026-01-02T12:00:00.000Z' })), ['d', 'g']);
35
+ assert.deepEqual(names(await core.lrs.query({ until: '2026-01-02T00:00:00.000Z' })), ['k', 'g']);
36
+ assert.deepEqual(names(await core.lrs.query({ since: '2026-01-02T00:00:00.000Z', until: '2026-01-03T00:00:00.000Z' })), ['g', 'k']);
37
+ await core.close();
38
+ });
39
+ test('an activity or actor the store has never seen matches nothing', async () => {
40
+ const core = await seed();
41
+ assert.equal((await core.lrs.query({ activity: card('never-reviewed') })).statements.length, 0);
42
+ assert.deepEqual(names(await core.lrs.query({ activity: card('g') })), ['g', 'g']);
43
+ const nobody = { objectType: 'Agent', mbox: 'mailto:nobody@example.test' };
44
+ assert.equal((await core.lrs.query({ actor: nobody })).statements.length, 0);
45
+ assert.equal((await core.lrs.query({ actor: await core.lrs.getActor() })).statements.length, 4);
46
+ await core.close();
47
+ });
48
+ test('several verbs work alone and together with the other filters', async () => {
49
+ const core = await seed();
50
+ assert.deepEqual(names(await core.lrs.query({ verb: [ANSWERED, REVIEWED] })), ['d', 'k', 'g']);
51
+ assert.deepEqual(names(await core.lrs.query({ verb: [ANSWERED, VIEWED], activity: card('g'), since: '2026-01-02T00:00:00.000Z' })), ['g']);
52
+ assert.deepEqual(names(await core.lrs.query({ verb: ANSWERED })), ['d', 'g']);
53
+ assert.equal((await core.lrs.query({ verb: [] })).statements.length, 4, 'an empty verb list is no filter');
54
+ await core.close();
55
+ });
56
+ test('registration filters on the statement context', async () => {
57
+ const core = await seed();
58
+ assert.deepEqual(names(await core.lrs.query({ registration: 'reg-a' })), ['k', 'g']);
59
+ assert.deepEqual(names(await core.lrs.query({ registration: 'reg-a', activity: card('g') })), ['g']);
60
+ assert.equal((await core.lrs.query({ registration: 'reg-missing' })).statements.length, 0);
61
+ await core.close();
62
+ });
63
+ test('order, limit and the mapped statement', async () => {
64
+ const core = await seed();
65
+ assert.deepEqual(names(await core.lrs.query({ ascending: true, limit: 2 })), ['g', 'k']);
66
+ assert.equal((await core.lrs.query({ limit: 0 })).statements.length, 0);
67
+ const [latest] = (await core.lrs.query({ limit: 1 })).statements;
68
+ assert.equal(latest.verb.id, ANSWERED);
69
+ assert.equal(latest.timestamp, '2026-01-04T00:00:00.000Z');
70
+ assert.deepEqual(latest.object, {
71
+ objectType: 'Activity',
72
+ id: card('d'),
73
+ definition: { type: 'https://chishiki.app/activity-types/activity', name: { 'en-US': 'd' } },
74
+ });
75
+ assert.equal(latest.actor.mbox, 'mailto:local@chishiki.app');
76
+ assert.deepEqual(latest.result, { success: true });
77
+ await core.close();
78
+ });
@@ -0,0 +1,3 @@
1
+ /** Chishiki DB schema. Any StorageAdapter (node:sqlite, libSQL/Turso, ...) runs this in initialize(). */
2
+ export declare const SCHEMA = "\nCREATE TABLE IF NOT EXISTS actors (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n mbox TEXT NOT NULL UNIQUE,\n name TEXT NOT NULL,\n created_at TEXT NOT NULL\n);\nCREATE TABLE IF NOT EXISTS learning_content (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n content_type TEXT NOT NULL,\n raw_content TEXT NOT NULL,\n metadata TEXT NOT NULL DEFAULT '{}',\n title TEXT NOT NULL,\n source_url TEXT,\n language TEXT,\n created_at TEXT NOT NULL,\n updated_at TEXT NOT NULL\n);\nCREATE TABLE IF NOT EXISTS activities (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n activity_iri TEXT NOT NULL UNIQUE,\n name TEXT NOT NULL,\n description TEXT,\n activity_type TEXT NOT NULL,\n content_id INTEGER,\n created_at TEXT NOT NULL,\n FOREIGN KEY (content_id) REFERENCES learning_content(id) ON DELETE SET NULL\n);\nCREATE TABLE IF NOT EXISTS statements (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n statement_id TEXT NOT NULL UNIQUE,\n actor_id INTEGER NOT NULL,\n verb_id TEXT NOT NULL,\n activity_id INTEGER NOT NULL,\n result TEXT,\n context TEXT,\n timestamp TEXT NOT NULL,\n stored TEXT NOT NULL,\n FOREIGN KEY (actor_id) REFERENCES actors(id),\n FOREIGN KEY (activity_id) REFERENCES activities(id)\n);\nCREATE TABLE IF NOT EXISTS generated_activities (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n content_id INTEGER NOT NULL,\n activity_type TEXT NOT NULL,\n activity_data TEXT NOT NULL,\n generation_prompt TEXT,\n created_at TEXT NOT NULL,\n FOREIGN KEY (content_id) REFERENCES learning_content(id) ON DELETE CASCADE\n);\nCREATE TABLE IF NOT EXISTS scheduling_items (\n item_id TEXT PRIMARY KEY,\n activity_id TEXT NOT NULL,\n content_id TEXT NOT NULL,\n ease_factor REAL NOT NULL DEFAULT 2.5,\n interval INTEGER NOT NULL DEFAULT 0,\n repetitions INTEGER NOT NULL DEFAULT 0,\n next_review TEXT NOT NULL,\n last_review TEXT,\n difficulty TEXT NOT NULL DEFAULT 'new',\n created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ','now')),\n updated_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ','now'))\n);\nCREATE INDEX IF NOT EXISTS idx_scheduling_next_review ON scheduling_items(next_review);\nCREATE INDEX IF NOT EXISTS idx_activities_content ON activities(content_id);\n";
3
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/schema.ts"],"names":[],"mappings":"AAAA,yGAAyG;AAEzG,eAAO,MAAM,MAAM,0qEAiElB,CAAC"}
@@ -0,0 +1,68 @@
1
+ /** Chishiki DB schema. Any StorageAdapter (node:sqlite, libSQL/Turso, ...) runs this in initialize(). */
2
+ // Same DDL as apps/tauri-app/src-tauri/src/db/schema.rs plus core's scheduling_items.
3
+ export const SCHEMA = `
4
+ CREATE TABLE IF NOT EXISTS actors (
5
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
6
+ mbox TEXT NOT NULL UNIQUE,
7
+ name TEXT NOT NULL,
8
+ created_at TEXT NOT NULL
9
+ );
10
+ CREATE TABLE IF NOT EXISTS learning_content (
11
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
12
+ content_type TEXT NOT NULL,
13
+ raw_content TEXT NOT NULL,
14
+ metadata TEXT NOT NULL DEFAULT '{}',
15
+ title TEXT NOT NULL,
16
+ source_url TEXT,
17
+ language TEXT,
18
+ created_at TEXT NOT NULL,
19
+ updated_at TEXT NOT NULL
20
+ );
21
+ CREATE TABLE IF NOT EXISTS activities (
22
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
23
+ activity_iri TEXT NOT NULL UNIQUE,
24
+ name TEXT NOT NULL,
25
+ description TEXT,
26
+ activity_type TEXT NOT NULL,
27
+ content_id INTEGER,
28
+ created_at TEXT NOT NULL,
29
+ FOREIGN KEY (content_id) REFERENCES learning_content(id) ON DELETE SET NULL
30
+ );
31
+ CREATE TABLE IF NOT EXISTS statements (
32
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
33
+ statement_id TEXT NOT NULL UNIQUE,
34
+ actor_id INTEGER NOT NULL,
35
+ verb_id TEXT NOT NULL,
36
+ activity_id INTEGER NOT NULL,
37
+ result TEXT,
38
+ context TEXT,
39
+ timestamp TEXT NOT NULL,
40
+ stored TEXT NOT NULL,
41
+ FOREIGN KEY (actor_id) REFERENCES actors(id),
42
+ FOREIGN KEY (activity_id) REFERENCES activities(id)
43
+ );
44
+ CREATE TABLE IF NOT EXISTS generated_activities (
45
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
46
+ content_id INTEGER NOT NULL,
47
+ activity_type TEXT NOT NULL,
48
+ activity_data TEXT NOT NULL,
49
+ generation_prompt TEXT,
50
+ created_at TEXT NOT NULL,
51
+ FOREIGN KEY (content_id) REFERENCES learning_content(id) ON DELETE CASCADE
52
+ );
53
+ CREATE TABLE IF NOT EXISTS scheduling_items (
54
+ item_id TEXT PRIMARY KEY,
55
+ activity_id TEXT NOT NULL,
56
+ content_id TEXT NOT NULL,
57
+ ease_factor REAL NOT NULL DEFAULT 2.5,
58
+ interval INTEGER NOT NULL DEFAULT 0,
59
+ repetitions INTEGER NOT NULL DEFAULT 0,
60
+ next_review TEXT NOT NULL,
61
+ last_review TEXT,
62
+ difficulty TEXT NOT NULL DEFAULT 'new',
63
+ created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ','now')),
64
+ updated_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ','now'))
65
+ );
66
+ CREATE INDEX IF NOT EXISTS idx_scheduling_next_review ON scheduling_items(next_review);
67
+ CREATE INDEX IF NOT EXISTS idx_activities_content ON activities(content_id);
68
+ `;
@@ -0,0 +1,4 @@
1
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import type { ChishikiCore } from 'chishiki-core';
3
+ export declare const createServer: (core: ChishikiCore) => McpServer;
4
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAKlD,eAAO,MAAM,YAAY,GAAI,MAAM,YAAY,KAAG,SAuGjD,CAAC"}
@@ -0,0 +1,63 @@
1
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import { z } from 'zod';
3
+ import { addCards, addContent, getDueCards, getStatements, importWordList, recordReview } from './study.js';
4
+ const json = (data) => ({ content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] });
5
+ export const createServer = (core) => {
6
+ const server = new McpServer({ name: 'chishiki', version: '0.1.0' });
7
+ server.registerTool('list_content', {
8
+ description: 'List learning content (texts, vocabulary sets) stored in Chishiki.',
9
+ inputSchema: {
10
+ language: z.string().optional().describe('BCP 47 filter, e.g. "ko"'),
11
+ limit: z.number().int().optional(),
12
+ },
13
+ }, async ({ language, limit }) => json(await core.content.list({ language, limit: limit ?? 50 })));
14
+ server.registerTool('add_content', {
15
+ description: 'Store a text (lesson, dialogue, article) as learning content. Returns its id.',
16
+ inputSchema: {
17
+ title: z.string(),
18
+ text: z.string(),
19
+ language: z.string().optional().describe('BCP 47, e.g. "ko"'),
20
+ sourceUrl: z.string().optional(),
21
+ },
22
+ }, async (input) => json({ id: await addContent(core, input) }));
23
+ server.registerTool('add_cards', {
24
+ description: 'Add flashcards (front/back) optionally linked to a content id. Returns created card ids.',
25
+ inputSchema: {
26
+ contentId: z.string().optional(),
27
+ cards: z.array(z.object({ front: z.string(), back: z.string() })).min(1),
28
+ },
29
+ }, async ({ contentId, cards }) => json(await addCards(core, contentId ?? null, cards)));
30
+ server.registerTool('import_word_list', {
31
+ description: 'Import a polyglot-bundles word-list JSON file (e.g. D:/glotblocks/polyglot-bundles/packages/ko/word-lists/src/json/a1/a1-vocabulary-01.json) as content + one flashcard per word.',
32
+ inputSchema: { path: z.string(), language: z.string().default('ko') },
33
+ }, async ({ path, language }) => json(await importWordList(core, path, language)));
34
+ server.registerTool('get_due_cards', {
35
+ description: 'Cards to study now: `review` = due per SM-2 schedule, `fresh` = never seen. Quiz the learner with the front, then call record_review.',
36
+ inputSchema: {
37
+ limit: z.number().int().optional().describe('max due reviews (default 20)'),
38
+ newLimit: z.number().int().optional().describe('max new cards (default 10)'),
39
+ contentId: z.string().optional(),
40
+ },
41
+ }, async (opts) => json(await getDueCards(core, opts)));
42
+ server.registerTool('record_review', {
43
+ description: "Record the learner's answer for a card. quality: 0=blank, 1=wrong but recognised, 2=wrong, easy recall, 3=correct with effort, 4=correct after hesitation, 5=perfect. Updates SM-2 schedule and writes an xAPI statement.",
44
+ inputSchema: {
45
+ cardId: z.string(),
46
+ quality: z.union([z.literal(0), z.literal(1), z.literal(2), z.literal(3), z.literal(4), z.literal(5)]),
47
+ response: z.string().optional().describe("learner's actual answer"),
48
+ },
49
+ }, async ({ cardId, quality, response }) => json(await recordReview(core, cardId, quality, response)));
50
+ server.registerTool('get_statements', {
51
+ description: "The learner's answer history, newest first: one xAPI statement per record_review, with the card id and front, quality (0-5), success and the learner's response. Read-only.",
52
+ inputSchema: {
53
+ cardId: z.string().optional().describe('only answers for this card'),
54
+ contentId: z.string().optional().describe('only cards from this content, e.g. one lesson'),
55
+ since: z.string().optional().describe('ISO 8601: answers at or after this time'),
56
+ until: z.string().optional().describe('ISO 8601: answers at or before this time'),
57
+ limit: z.number().int().optional().describe('max answers (default 100, max 1000)'),
58
+ },
59
+ annotations: { readOnlyHint: true },
60
+ }, async (opts) => json(await getStatements(core, opts)));
61
+ server.registerTool('get_stats', { description: 'Scheduler statistics: total cards tracked, due now/today/week, ease, retention.', inputSchema: {} }, async () => json(await core.scheduler.getStats()));
62
+ return server;
63
+ };
@@ -0,0 +1,63 @@
1
+ import type { ChishikiCore } from 'chishiki-core';
2
+ export declare const FLASHCARD_TYPE = "flashcard";
3
+ export interface Card {
4
+ id: string;
5
+ front: string;
6
+ back: string;
7
+ contentId: string | null;
8
+ }
9
+ export declare const addContent: (core: ChishikiCore, input: {
10
+ title: string;
11
+ text: string;
12
+ language?: string;
13
+ sourceUrl?: string;
14
+ }) => Promise<string>;
15
+ export declare const addCards: (core: ChishikiCore, contentId: string | null, cards: {
16
+ front: string;
17
+ back: string;
18
+ }[]) => Promise<Card[]>;
19
+ export declare const getCard: (core: ChishikiCore, id: string) => Promise<(Card & {
20
+ iri: string;
21
+ }) | null>;
22
+ /** Due reviews first (SM-2 schedule), then never-seen cards up to newLimit. */
23
+ export declare const getDueCards: (core: ChishikiCore, opts?: {
24
+ limit?: number;
25
+ newLimit?: number;
26
+ contentId?: string;
27
+ }) => Promise<{
28
+ review: Card[];
29
+ fresh: Card[];
30
+ }>;
31
+ export declare const recordReview: (core: ChishikiCore, cardId: string, quality: 0 | 1 | 2 | 3 | 4 | 5, response?: string) => Promise<{
32
+ nextReview: string;
33
+ interval: number;
34
+ }>;
35
+ export interface AnswerRecord {
36
+ time: string;
37
+ verb: string;
38
+ cardId: string;
39
+ front: string;
40
+ iri: string;
41
+ quality?: number;
42
+ success?: boolean;
43
+ response?: string;
44
+ }
45
+ /**
46
+ * The learner's answer history, newest first. Reads the tables directly rather than through core.lrs.query
47
+ * because it reports each answer by card id and filters by content, which xAPI statements do not carry.
48
+ */
49
+ export declare const getStatements: (core: ChishikiCore, opts?: {
50
+ cardId?: string;
51
+ contentId?: string;
52
+ since?: string;
53
+ until?: string;
54
+ limit?: number;
55
+ }) => Promise<{
56
+ statements: AnswerRecord[];
57
+ }>;
58
+ /** polyglot-bundles word-list JSON: { name, description, source, sourceUrl, words:[{word, translation, ...}] } */
59
+ export declare const importWordList: (core: ChishikiCore, path: string, language: string) => Promise<{
60
+ contentId: string;
61
+ cards: number;
62
+ }>;
63
+ //# sourceMappingURL=study.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"study.d.ts","sourceRoot":"","sources":["../../src/study.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAElD,eAAO,MAAM,cAAc,cAAc,CAAC;AAG1C,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAiBD,eAAO,MAAM,UAAU,GACrB,MAAM,YAAY,EAClB,OAAO;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,KAC5E,OAAO,CAAC,MAAM,CAIhB,CAAC;AAEF,eAAO,MAAM,QAAQ,GACnB,MAAM,YAAY,EAClB,WAAW,MAAM,GAAG,IAAI,EACxB,OAAO;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,KACvC,OAAO,CAAC,IAAI,EAAE,CAahB,CAAC;AAEF,eAAO,MAAM,OAAO,GAAU,MAAM,YAAY,EAAE,IAAI,MAAM,KAAG,OAAO,CAAC,CAAC,IAAI,GAAG;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,IAAI,CAMrG,CAAC;AAEF,+EAA+E;AAC/E,eAAO,MAAM,WAAW,GACtB,MAAM,YAAY,EAClB,OAAM;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,KACnE,OAAO,CAAC;IAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAAC,KAAK,EAAE,IAAI,EAAE,CAAA;CAAE,CAmB3C,CAAC;AAEF,eAAO,MAAM,YAAY,GACvB,MAAM,YAAY,EAClB,QAAQ,MAAM,EACd,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAC9B,WAAW,MAAM,KAChB,OAAO,CAAC;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAWlD,CAAC;AAEF,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AA0BD;;;GAGG;AACH,eAAO,MAAM,aAAa,GACxB,MAAM,YAAY,EAClB,OAAM;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,KACjG,OAAO,CAAC;IAAE,UAAU,EAAE,YAAY,EAAE,CAAA;CAAE,CA2CxC,CAAC;AAEF,kHAAkH;AAClH,eAAO,MAAM,cAAc,GACzB,MAAM,YAAY,EAClB,MAAM,MAAM,EACZ,UAAU,MAAM,KACf,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAsB9C,CAAC"}
@@ -0,0 +1,135 @@
1
+ /**
2
+ * Flashcard study operations on top of ChishikiCore.
3
+ * A card is an `activities` row of type `flashcard`: name = front, description = back.
4
+ */
5
+ import { readFile } from 'node:fs/promises';
6
+ import { randomUUID } from 'node:crypto';
7
+ export const FLASHCARD_TYPE = 'flashcard';
8
+ const ANSWERED = 'http://adlnet.gov/expapi/verbs/answered';
9
+ const toCard = (r) => ({
10
+ id: String(r.id),
11
+ front: r.name,
12
+ back: r.description ?? '',
13
+ contentId: r.content_id === null ? null : String(r.content_id),
14
+ });
15
+ export const addContent = async (core, input) => {
16
+ const id = await core.content.import({ type: 'text', text: input.text, format: 'text/plain' });
17
+ await core.content.update(id, { title: input.title, language: input.language, sourceUrl: input.sourceUrl });
18
+ return id;
19
+ };
20
+ export const addCards = async (core, contentId, cards) => {
21
+ const now = new Date().toISOString();
22
+ const out = [];
23
+ for (const c of cards) {
24
+ const iri = `https://chishiki.app/activities/${FLASHCARD_TYPE}/${randomUUID()}`;
25
+ await core.storage.execute('INSERT INTO activities (activity_iri, name, description, activity_type, content_id, created_at) VALUES (?, ?, ?, ?, ?, ?)', [iri, c.front, c.back, FLASHCARD_TYPE, contentId === null ? null : Number(contentId), now]);
26
+ const [{ id }] = await core.storage.query('SELECT last_insert_rowid() AS id');
27
+ out.push({ id: String(id), front: c.front, back: c.back, contentId });
28
+ }
29
+ return out;
30
+ };
31
+ export const getCard = async (core, id) => {
32
+ const rows = await core.storage.query('SELECT * FROM activities WHERE id = ? AND activity_type = ?', [
33
+ Number(id),
34
+ FLASHCARD_TYPE,
35
+ ]);
36
+ return rows[0] ? { ...toCard(rows[0]), iri: rows[0].activity_iri } : null;
37
+ };
38
+ /** Due reviews first (SM-2 schedule), then never-seen cards up to newLimit. */
39
+ export const getDueCards = async (core, opts = {}) => {
40
+ const limit = opts.limit ?? 20;
41
+ const due = await core.scheduler.getDue({ limit: 1000 });
42
+ const ids = due.map(d => Number(d.id)).filter(n => Number.isFinite(n));
43
+ const contentClause = opts.contentId ? ' AND content_id = ?' : '';
44
+ const contentParam = opts.contentId ? [Number(opts.contentId)] : [];
45
+ const review = ids.length
46
+ ? await core.storage.query(`SELECT * FROM activities WHERE activity_type = ? AND id IN (${ids.map(() => '?').join(',')})${contentClause} LIMIT ?`, [FLASHCARD_TYPE, ...ids, ...contentParam, limit])
47
+ : [];
48
+ const fresh = await core.storage.query(`SELECT * FROM activities WHERE activity_type = ?
49
+ AND id NOT IN (SELECT CAST(item_id AS INTEGER) FROM scheduling_items)${contentClause}
50
+ ORDER BY id LIMIT ?`, [FLASHCARD_TYPE, ...contentParam, opts.newLimit ?? 10]);
51
+ return { review: review.map(toCard), fresh: fresh.map(toCard) };
52
+ };
53
+ export const recordReview = async (core, cardId, quality, response) => {
54
+ const card = await getCard(core, cardId);
55
+ if (!card)
56
+ throw new Error(`Card ${cardId} not found`);
57
+ await core.scheduler.recordReview(cardId, { quality });
58
+ await core.lrs.record({
59
+ verb: { id: ANSWERED, display: { 'en-US': 'answered' } },
60
+ object: { objectType: 'Activity', id: card.iri, definition: { name: { 'en-US': card.front } } },
61
+ result: { score: { scaled: quality / 5, raw: quality, min: 0, max: 5 }, success: quality >= 3, response },
62
+ });
63
+ const item = await core.scheduler.getItem(cardId);
64
+ return { nextReview: item?.nextReview ?? '', interval: item?.interval ?? 0 };
65
+ };
66
+ const parseStoredResult = (json) => {
67
+ if (!json)
68
+ return {};
69
+ try {
70
+ return JSON.parse(json);
71
+ }
72
+ catch {
73
+ return {};
74
+ }
75
+ };
76
+ /**
77
+ * The learner's answer history, newest first. Reads the tables directly rather than through core.lrs.query
78
+ * because it reports each answer by card id and filters by content, which xAPI statements do not carry.
79
+ */
80
+ export const getStatements = async (core, opts = {}) => {
81
+ const where = [];
82
+ const params = [];
83
+ if (opts.cardId) {
84
+ where.push('a.id = ?');
85
+ params.push(Number(opts.cardId));
86
+ }
87
+ if (opts.contentId) {
88
+ where.push('a.content_id = ?');
89
+ params.push(Number(opts.contentId));
90
+ }
91
+ if (opts.since) {
92
+ where.push('s.timestamp >= ?');
93
+ params.push(opts.since);
94
+ }
95
+ if (opts.until) {
96
+ where.push('s.timestamp <= ?');
97
+ params.push(opts.until);
98
+ }
99
+ const limit = Math.min(Math.max(Math.trunc(opts.limit ?? 100), 1), 1000);
100
+ const rows = await core.storage.query(`SELECT s.timestamp, s.verb_id, s.result, a.id AS card_id, a.name, a.activity_iri
101
+ FROM statements s JOIN activities a ON a.id = s.activity_id
102
+ ${where.length ? `WHERE ${where.join(' AND ')}` : ''}
103
+ ORDER BY s.timestamp DESC, s.id DESC
104
+ LIMIT ?`, [...params, limit]);
105
+ return {
106
+ statements: rows.map(r => {
107
+ const res = parseStoredResult(r.result);
108
+ return {
109
+ time: r.timestamp,
110
+ verb: r.verb_id.split('/').pop() ?? r.verb_id,
111
+ cardId: String(r.card_id),
112
+ front: r.name,
113
+ iri: r.activity_iri,
114
+ quality: res.score?.raw,
115
+ success: res.success,
116
+ response: res.response,
117
+ };
118
+ }),
119
+ };
120
+ };
121
+ /** polyglot-bundles word-list JSON: { name, description, source, sourceUrl, words:[{word, translation, ...}] } */
122
+ export const importWordList = async (core, path, language) => {
123
+ const list = JSON.parse(await readFile(path, 'utf8'));
124
+ const contentId = await addContent(core, {
125
+ title: list.name,
126
+ text: list.words.map(w => `${w.word}\t${w.translation}`).join('\n'),
127
+ language,
128
+ sourceUrl: list.sourceUrl,
129
+ });
130
+ const cards = await addCards(core, contentId, list.words.map(w => ({
131
+ front: w.word,
132
+ back: w.partOfSpeech ? `${w.translation} (${w.partOfSpeech})` : w.translation,
133
+ })));
134
+ return { contentId, cards: cards.length };
135
+ };
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=study.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"study.test.d.ts","sourceRoot":"","sources":["../../src/study.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,61 @@
1
+ import assert from 'node:assert/strict';
2
+ import { mkdtempSync } from 'node:fs';
3
+ import { tmpdir } from 'node:os';
4
+ import { join } from 'node:path';
5
+ import { test } from 'node:test';
6
+ import { createCore } from './adapter.js';
7
+ import { addCards, addContent, getDueCards, getStatements, recordReview } from './study.js';
8
+ test('add cards, study, review, schedule', async () => {
9
+ const core = await createCore(join(mkdtempSync(join(tmpdir(), 'chishiki-')), 'test.db'));
10
+ const contentId = await addContent(core, { title: 'Greetings', text: '안녕하세요', language: 'ko' });
11
+ const [card] = await addCards(core, contentId, [{ front: '안녕하세요', back: 'hello' }]);
12
+ let due = await getDueCards(core);
13
+ assert.equal(due.fresh.length, 1);
14
+ assert.equal(due.review.length, 0);
15
+ const r = await recordReview(core, card.id, 5, 'hello');
16
+ assert.ok(r.interval >= 1);
17
+ due = await getDueCards(core);
18
+ assert.equal(due.fresh.length, 0);
19
+ assert.equal(due.review.length, 0);
20
+ const stats = await core.scheduler.getStats();
21
+ assert.equal(stats.totalItems, 1);
22
+ const stmts = await core.lrs.query({ limit: 10 });
23
+ assert.equal(stmts.statements.length, 1);
24
+ await core.close();
25
+ });
26
+ test('get_statements returns the answer history with filters', async () => {
27
+ const core = await createCore(join(mkdtempSync(join(tmpdir(), 'chishiki-')), 'test.db'));
28
+ const lesson1 = await addContent(core, { title: 'Lesson 1', text: 'ㄱ ㅋ', language: 'ko' });
29
+ const lesson2 = await addContent(core, { title: 'Lesson 2', text: 'ㄷ', language: 'ko' });
30
+ const [g, k] = await addCards(core, lesson1, [
31
+ { front: 'ㄱ', back: 'g' },
32
+ { front: 'ㅋ', back: 'k' },
33
+ ]);
34
+ const [d] = await addCards(core, lesson2, [{ front: 'ㄷ', back: 'd' }]);
35
+ await recordReview(core, g.id, 4, 'hear→see · picked ㄱ · 2.1s · 1 play');
36
+ await recordReview(core, k.id, 1, 'hear→see · picked ㄱ · 3.4s · 2 plays');
37
+ await new Promise(r => setTimeout(r, 5));
38
+ const between = new Date().toISOString();
39
+ await new Promise(r => setTimeout(r, 5));
40
+ await recordReview(core, d.id, 4, 'see→hear · picked ㄷ · 1.2s · 3 plays');
41
+ const all = await getStatements(core);
42
+ assert.equal(all.statements.length, 3);
43
+ assert.equal(all.statements[0].front, 'ㄷ', 'newest first');
44
+ const miss = all.statements.find(s => s.cardId === k.id);
45
+ assert.ok(miss);
46
+ assert.equal(miss.verb, 'answered');
47
+ assert.equal(miss.quality, 1);
48
+ assert.equal(miss.success, false);
49
+ assert.equal(miss.response, 'hear→see · picked ㄱ · 3.4s · 2 plays');
50
+ assert.match(miss.iri, /^https:\/\/chishiki\.app\/activities\/flashcard\//);
51
+ assert.deepEqual((await getStatements(core, { cardId: k.id })).statements.map(s => s.front), ['ㅋ']);
52
+ assert.deepEqual((await getStatements(core, { contentId: lesson1 })).statements.map(s => s.front).sort(), [
53
+ 'ㄱ',
54
+ 'ㅋ',
55
+ ]);
56
+ assert.deepEqual((await getStatements(core, { since: between })).statements.map(s => s.front), ['ㄷ']);
57
+ assert.equal((await getStatements(core, { until: between })).statements.length, 2);
58
+ assert.equal((await getStatements(core, { limit: 1 })).statements.length, 1);
59
+ assert.equal((await getStatements(core, { cardId: '99999' })).statements.length, 0, 'unknown card matches nothing');
60
+ await core.close();
61
+ });
@@ -0,0 +1 @@
1
+ {"fileNames":["../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2023.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2024.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.esnext.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.array.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.error.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.object.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.string.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2023.array.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2023.collection.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2023.intl.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2024.collection.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2024.object.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2024.promise.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2024.regexp.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2024.string.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.esnext.array.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.esnext.collection.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.esnext.disposable.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.esnext.promise.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.esnext.decorators.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.esnext.iterator.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.esnext.float16.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../node_modules/.pnpm/@types+react@19.1.12/node_modules/@types/react/global.d.ts","../../../node_modules/.pnpm/csstype@3.1.3/node_modules/csstype/index.d.ts","../../../node_modules/.pnpm/@types+react@19.1.12/node_modules/@types/react/index.d.ts","../../../node_modules/.pnpm/@types+react@19.1.12/node_modules/@types/react/jsx-runtime.d.ts","../../core/dist/src/activities.d.ts","../../core/dist/src/content.d.ts","../../core/dist/src/lrs.d.ts","../../core/dist/src/plugins.d.ts","../../core/dist/src/scheduler.d.ts","../../core/dist/src/storage.d.ts","../../core/dist/src/sync.d.ts","../../core/dist/src/chishiki.d.ts","../../core/dist/src/index.d.ts","../../core/dist/index.d.mts","../src/schema.ts","../src/adapter.ts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v3/helpers/typealiases.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v3/helpers/util.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v3/zoderror.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v3/locales/en.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v3/errors.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v3/helpers/parseutil.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v3/helpers/enumutil.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v3/helpers/errorutil.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v3/helpers/partialutil.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v3/standard-schema.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v3/types.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v3/external.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v3/index.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/json-schema.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/standard-schema.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/registries.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/to-json-schema.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/util.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/versions.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/schemas.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/checks.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/errors.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/core.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/parse.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/regexes.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/ar.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/az.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/be.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/bg.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/ca.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/cs.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/da.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/de.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/en.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/eo.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/es.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/fa.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/fi.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/fr.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/fr-ca.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/he.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/hu.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/hy.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/id.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/is.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/it.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/ja.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/ka.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/kh.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/km.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/ko.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/lt.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/mk.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/ms.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/nl.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/no.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/ota.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/ps.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/pl.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/pt.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/ru.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/sl.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/sv.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/ta.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/th.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/tr.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/ua.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/uk.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/ur.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/uz.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/vi.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/zh-cn.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/zh-tw.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/yo.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/index.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/doc.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/api.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/json-schema-processors.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/json-schema-generator.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/index.d.cts","../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.32.2_zod@4.3.6/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-compat.d.ts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/classic/errors.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/classic/parse.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/classic/schemas.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/classic/checks.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/classic/compat.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/classic/from-json-schema.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/classic/iso.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/classic/coerce.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/classic/external.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/classic/index.d.cts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/index.d.cts","../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.32.2_zod@4.3.6/node_modules/@modelcontextprotocol/sdk/dist/esm/server/auth/types.d.ts","../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.32.2_zod@4.3.6/node_modules/@modelcontextprotocol/sdk/dist/esm/types.d.ts","../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.32.2_zod@4.3.6/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/transport.d.ts","../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.32.2_zod@4.3.6/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/types.d.ts","../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.32.2_zod@4.3.6/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/interfaces.d.ts","../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.32.2_zod@4.3.6/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/responsemessage.d.ts","../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.32.2_zod@4.3.6/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.d.ts","../../../node_modules/.pnpm/json-schema-typed@8.0.2/node_modules/json-schema-typed/draft_2020_12.d.ts","../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.32.2_zod@4.3.6/node_modules/@modelcontextprotocol/sdk/dist/esm/validation/types.d.ts","../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.32.2_zod@4.3.6/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/server.d.ts","../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.32.2_zod@4.3.6/node_modules/@modelcontextprotocol/sdk/dist/esm/server/index.d.ts","../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.32.2_zod@4.3.6/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/uritemplate.d.ts","../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.32.2_zod@4.3.6/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/mcp-server.d.ts","../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.32.2_zod@4.3.6/node_modules/@modelcontextprotocol/sdk/dist/esm/server/mcp.d.ts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/index.d.cts","../src/study.ts","../src/server.ts","../index.mts","../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.32.2_zod@4.3.6/node_modules/@modelcontextprotocol/sdk/dist/esm/server/stdio.d.ts","../src/cli.ts","../src/lrs-query.test.ts","../src/study.test.ts","../../../node_modules/.pnpm/@types+node@22.18.1/node_modules/@types/node/compatibility/disposable.d.ts","../../../node_modules/.pnpm/@types+node@22.18.1/node_modules/@types/node/compatibility/indexable.d.ts","../../../node_modules/.pnpm/@types+node@22.18.1/node_modules/@types/node/compatibility/iterators.d.ts","../../../node_modules/.pnpm/@types+node@22.18.1/node_modules/@types/node/compatibility/index.d.ts","../../../node_modules/.pnpm/@types+node@22.18.1/node_modules/@types/node/globals.typedarray.d.ts","../../../node_modules/.pnpm/@types+node@22.18.1/node_modules/@types/node/buffer.buffer.d.ts","../../../node_modules/.pnpm/@types+node@22.18.1/node_modules/@types/node/globals.d.ts","../../../node_modules/.pnpm/@types+node@22.18.1/node_modules/@types/node/web-globals/abortcontroller.d.ts","../../../node_modules/.pnpm/@types+node@22.18.1/node_modules/@types/node/web-globals/domexception.d.ts","../../../node_modules/.pnpm/@types+node@22.18.1/node_modules/@types/node/web-globals/events.d.ts","../../../node_modules/.pnpm/buffer@5.7.1/node_modules/buffer/index.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/header.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/readable.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/file.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/fetch.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/formdata.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/connector.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/client.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/errors.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/dispatcher.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/global-dispatcher.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/global-origin.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/pool-stats.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/pool.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/handlers.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/balanced-pool.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/agent.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-interceptor.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-agent.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-client.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-pool.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-errors.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/proxy-agent.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/env-http-proxy-agent.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/retry-handler.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/retry-agent.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/api.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/interceptors.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/util.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/cookies.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/patch.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/websocket.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/eventsource.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/filereader.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/diagnostics-channel.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/content-type.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/cache.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/index.d.ts","../../../node_modules/.pnpm/@types+node@22.18.1/node_modules/@types/node/web-globals/fetch.d.ts","../../../node_modules/.pnpm/@types+node@22.18.1/node_modules/@types/node/web-globals/navigator.d.ts","../../../node_modules/.pnpm/@types+node@22.18.1/node_modules/@types/node/web-globals/storage.d.ts","../../../node_modules/.pnpm/@types+node@22.18.1/node_modules/@types/node/assert.d.ts","../../../node_modules/.pnpm/@types+node@22.18.1/node_modules/@types/node/assert/strict.d.ts","../../../node_modules/.pnpm/@types+node@22.18.1/node_modules/@types/node/async_hooks.d.ts","../../../node_modules/.pnpm/@types+node@22.18.1/node_modules/@types/node/buffer.d.ts","../../../node_modules/.pnpm/@types+node@22.18.1/node_modules/@types/node/child_process.d.ts","../../../node_modules/.pnpm/@types+node@22.18.1/node_modules/@types/node/cluster.d.ts","../../../node_modules/.pnpm/@types+node@22.18.1/node_modules/@types/node/console.d.ts","../../../node_modules/.pnpm/@types+node@22.18.1/node_modules/@types/node/constants.d.ts","../../../node_modules/.pnpm/@types+node@22.18.1/node_modules/@types/node/crypto.d.ts","../../../node_modules/.pnpm/@types+node@22.18.1/node_modules/@types/node/dgram.d.ts","../../../node_modules/.pnpm/@types+node@22.18.1/node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/.pnpm/@types+node@22.18.1/node_modules/@types/node/dns.d.ts","../../../node_modules/.pnpm/@types+node@22.18.1/node_modules/@types/node/dns/promises.d.ts","../../../node_modules/.pnpm/@types+node@22.18.1/node_modules/@types/node/domain.d.ts","../../../node_modules/.pnpm/@types+node@22.18.1/node_modules/@types/node/events.d.ts","../../../node_modules/.pnpm/@types+node@22.18.1/node_modules/@types/node/fs.d.ts","../../../node_modules/.pnpm/@types+node@22.18.1/node_modules/@types/node/fs/promises.d.ts","../../../node_modules/.pnpm/@types+node@22.18.1/node_modules/@types/node/http.d.ts","../../../node_modules/.pnpm/@types+node@22.18.1/node_modules/@types/node/http2.d.ts","../../../node_modules/.pnpm/@types+node@22.18.1/node_modules/@types/node/https.d.ts","../../../node_modules/.pnpm/@types+node@22.18.1/node_modules/@types/node/inspector.d.ts","../../../node_modules/.pnpm/@types+node@22.18.1/node_modules/@types/node/module.d.ts","../../../node_modules/.pnpm/@types+node@22.18.1/node_modules/@types/node/net.d.ts","../../../node_modules/.pnpm/@types+node@22.18.1/node_modules/@types/node/os.d.ts","../../../node_modules/.pnpm/@types+node@22.18.1/node_modules/@types/node/path.d.ts","../../../node_modules/.pnpm/@types+node@22.18.1/node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/.pnpm/@types+node@22.18.1/node_modules/@types/node/process.d.ts","../../../node_modules/.pnpm/@types+node@22.18.1/node_modules/@types/node/punycode.d.ts","../../../node_modules/.pnpm/@types+node@22.18.1/node_modules/@types/node/querystring.d.ts","../../../node_modules/.pnpm/@types+node@22.18.1/node_modules/@types/node/readline.d.ts","../../../node_modules/.pnpm/@types+node@22.18.1/node_modules/@types/node/readline/promises.d.ts","../../../node_modules/.pnpm/@types+node@22.18.1/node_modules/@types/node/repl.d.ts","../../../node_modules/.pnpm/@types+node@22.18.1/node_modules/@types/node/sea.d.ts","../../../node_modules/.pnpm/@types+node@22.18.1/node_modules/@types/node/sqlite.d.ts","../../../node_modules/.pnpm/@types+node@22.18.1/node_modules/@types/node/stream.d.ts","../../../node_modules/.pnpm/@types+node@22.18.1/node_modules/@types/node/stream/promises.d.ts","../../../node_modules/.pnpm/@types+node@22.18.1/node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/.pnpm/@types+node@22.18.1/node_modules/@types/node/stream/web.d.ts","../../../node_modules/.pnpm/@types+node@22.18.1/node_modules/@types/node/string_decoder.d.ts","../../../node_modules/.pnpm/@types+node@22.18.1/node_modules/@types/node/test.d.ts","../../../node_modules/.pnpm/@types+node@22.18.1/node_modules/@types/node/timers.d.ts","../../../node_modules/.pnpm/@types+node@22.18.1/node_modules/@types/node/timers/promises.d.ts","../../../node_modules/.pnpm/@types+node@22.18.1/node_modules/@types/node/tls.d.ts","../../../node_modules/.pnpm/@types+node@22.18.1/node_modules/@types/node/trace_events.d.ts","../../../node_modules/.pnpm/@types+node@22.18.1/node_modules/@types/node/tty.d.ts","../../../node_modules/.pnpm/@types+node@22.18.1/node_modules/@types/node/url.d.ts","../../../node_modules/.pnpm/@types+node@22.18.1/node_modules/@types/node/util.d.ts","../../../node_modules/.pnpm/@types+node@22.18.1/node_modules/@types/node/v8.d.ts","../../../node_modules/.pnpm/@types+node@22.18.1/node_modules/@types/node/vm.d.ts","../../../node_modules/.pnpm/@types+node@22.18.1/node_modules/@types/node/wasi.d.ts","../../../node_modules/.pnpm/@types+node@22.18.1/node_modules/@types/node/worker_threads.d.ts","../../../node_modules/.pnpm/@types+node@22.18.1/node_modules/@types/node/zlib.d.ts","../../../node_modules/.pnpm/@types+node@22.18.1/node_modules/@types/node/index.d.ts"],"fileIdsList":[[176,189,191,194,215,264],[176,189,192,201,215,264],[176,189,193,194,198,215,264],[189,215,264],[215,264],[176,189,194,196,197,215,264],[176,189,190,192,194,198,199,200,215,264],[189,190,215,264,295],[108,175,215,264],[176,188,189,190,192,193,215,264],[187,188,215,264],[195,215,264],[215,261,264],[215,263,264],[264],[215,264,269,298],[215,264,265,270,275,283,295,306],[215,264,265,266,275,283],[210,211,212,215,264],[215,264,267,307],[215,264,268,269,276,284],[215,264,269,295,303],[215,264,270,272,275,283],[215,263,264,271],[215,264,272,273],[215,264,274,275],[215,263,264,275],[215,264,275,276,277,295,306],[215,264,275,276,277,290,295,298],[215,257,264,272,275,278,283,295,306],[215,264,275,276,278,279,283,295,303,306],[215,264,278,280,295,303,306],[213,214,215,216,217,218,219,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312],[215,264,275,281],[215,264,282,306],[215,264,272,275,283,295],[215,264,284],[215,264,285],[215,263,264,286],[215,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312],[215,264,288],[215,264,289],[215,264,275,290,291],[215,264,290,292,307,309],[215,264,275,295,296,298],[215,264,297,298],[215,264,295,296],[215,264,298],[215,264,299],[215,261,264,295,300],[215,264,275,301,302],[215,264,301,302],[215,264,269,283,295,303],[215,264,304],[215,264,283,305],[215,264,278,289,306],[215,264,269,307],[215,264,295,308],[215,264,282,309],[215,264,310],[215,257,264],[215,264,275,277,286,295,298,306,308,309,311],[215,264,295,312],[80,81,215,264],[82,215,264],[215,229,233,264,306],[215,229,264,295,306],[215,224,264],[215,226,229,264,303,306],[215,264,283,303],[215,264,313],[215,224,264,313],[215,226,229,264,283,306],[215,221,222,225,228,264,275,295,306],[215,229,236,264],[215,221,227,264],[215,229,250,251,264],[215,225,229,264,298,306,313],[215,250,264,313],[215,223,224,264,313],[215,229,264],[215,223,224,225,226,227,228,229,230,231,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,251,252,253,254,255,256,264],[215,229,244,264],[215,229,236,237,264],[215,227,229,237,238,264],[215,228,264],[215,221,224,229,264],[215,229,233,237,238,264],[215,233,264],[215,227,229,232,264,306],[215,221,226,229,236,264],[215,264,295],[215,224,229,250,264,311,313],[185,215,264],[98,99,215,264],[96,97,98,100,101,106,215,264],[97,98,215,264],[106,215,264],[107,215,264],[98,215,264],[96,97,98,101,102,103,104,105,215,264],[96,97,108,215,264],[175,215,264],[175,179,215,264],[170,173,175,177,178,179,180,181,182,183,184,215,264],[109,111,179,215,264],[175,177,215,264],[110,175,178,215,264],[111,113,115,116,117,118,215,264],[113,115,117,118,215,264],[113,115,117,215,264],[110,113,115,116,118,215,264],[109,111,112,113,114,115,116,117,118,119,120,170,171,172,173,174,215,264],[109,111,112,115,215,264],[111,112,115,215,264],[115,118,215,264],[109,110,112,113,114,116,117,118,215,264],[109,110,111,115,175,215,264],[115,116,117,118,215,264],[186,215,264],[117,215,264],[121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,215,264],[92,215,264],[84,85,86,87,88,89,90,215,264],[84,85,86,87,88,89,90,91,215,264],[83,94,95,204,215,264],[83,93,94,215,264,277,284,285,294],[83,95,204,206,215,264],[83,93,95,215,262,264,276,284,285,300],[83,215,264],[83,93,201,202,203,215,264],[83,95,203,215,262,264,276,284,285,300],[83,93,215,264,269,277]],"fileInfos":[{"version":"69684132aeb9b5642cbcd9e22dff7818ff0ee1aa831728af0ecf97d3364d5546","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"27bdc30a0e32783366a5abeda841bc22757c1797de8681bbe81fbc735eeb1c10","impliedFormat":1},{"version":"8fd575e12870e9944c7e1d62e1f5a73fcf23dd8d3a321f2a2c74c20d022283fe","impliedFormat":1},{"version":"8bf8b5e44e3c9c36f98e1007e8b7018c0f38d8adc07aecef42f5200114547c70","impliedFormat":1},{"version":"092c2bfe125ce69dbb1223c85d68d4d2397d7d8411867b5cc03cec902c233763","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"936e80ad36a2ee83fc3caf008e7c4c5afe45b3cf3d5c24408f039c1d47bdc1df","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"fef8cfad2e2dc5f5b3d97a6f4f2e92848eb1b88e897bb7318cef0e2820bceaab","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"b5ce7a470bc3628408429040c4e3a53a27755022a32fd05e2cb694e7015386c7","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"df83c2a6c73228b625b0beb6669c7ee2a09c914637e2d35170723ad49c0f5cd4","affectsGlobalScope":true,"impliedFormat":1},{"version":"436aaf437562f276ec2ddbee2f2cdedac7664c1e4c1d2c36839ddd582eeb3d0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e3c06ea092138bf9fa5e874a1fdbc9d54805d074bee1de31b99a11e2fec239d","affectsGlobalScope":true,"impliedFormat":1},{"version":"87dc0f382502f5bbce5129bdc0aea21e19a3abbc19259e0b43ae038a9fc4e326","affectsGlobalScope":true,"impliedFormat":1},{"version":"b1cb28af0c891c8c96b2d6b7be76bd394fddcfdb4709a20ba05a7c1605eea0f9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2fef54945a13095fdb9b84f705f2b5994597640c46afeb2ce78352fab4cb3279","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac77cb3e8c6d3565793eb90a8373ee8033146315a3dbead3bde8db5eaf5e5ec6","affectsGlobalScope":true,"impliedFormat":1},{"version":"56e4ed5aab5f5920980066a9409bfaf53e6d21d3f8d020c17e4de584d29600ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ece9f17b3866cc077099c73f4983bddbcb1dc7ddb943227f1ec070f529dedd1","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a6282c8827e4b9a95f4bf4f5c205673ada31b982f50572d27103df8ceb8013c","affectsGlobalScope":true,"impliedFormat":1},{"version":"1c9319a09485199c1f7b0498f2988d6d2249793ef67edda49d1e584746be9032","affectsGlobalScope":true,"impliedFormat":1},{"version":"e3a2a0cee0f03ffdde24d89660eba2685bfbdeae955a6c67e8c4c9fd28928eeb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811c71eee4aa0ac5f7adf713323a5c41b0cf6c4e17367a34fbce379e12bbf0a4","affectsGlobalScope":true,"impliedFormat":1},{"version":"51ad4c928303041605b4d7ae32e0c1ee387d43a24cd6f1ebf4a2699e1076d4fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"60037901da1a425516449b9a20073aa03386cce92f7a1fd902d7602be3a7c2e9","affectsGlobalScope":true,"impliedFormat":1},{"version":"d4b1d2c51d058fc21ec2629fff7a76249dec2e36e12960ea056e3ef89174080f","affectsGlobalScope":true,"impliedFormat":1},{"version":"22adec94ef7047a6c9d1af3cb96be87a335908bf9ef386ae9fd50eeb37f44c47","affectsGlobalScope":true,"impliedFormat":1},{"version":"4245fee526a7d1754529d19227ecbf3be066ff79ebb6a380d78e41648f2f224d","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"170d4db14678c68178ee8a3d5a990d5afb759ecb6ec44dbd885c50f6da6204f6","affectsGlobalScope":true,"impliedFormat":1},{"version":"8a8eb4ebffd85e589a1cc7c178e291626c359543403d58c9cd22b81fab5b1fb9","impliedFormat":1},{"version":"bea6c0f5b819cf8cba6608bf3530089119294f949640714011d46ec8013b61c2","impliedFormat":1},{"version":"42c169fb8c2d42f4f668c624a9a11e719d5d07dacbebb63cbcf7ef365b0a75b3","impliedFormat":1},{"version":"ba30b3cd464f6d5a7e52a7e9febeadf8ae089762f51117fffab957d59d8dbd86","impliedFormat":99},{"version":"9bd96c58d969d7f8b0c5667ebff872243bb4ac2fecc6237021fd4ee1d0742c2b","impliedFormat":99},{"version":"22ddee935d15c79a12d28c5b06272a3c919389b49c07682de8124f127284c10d","impliedFormat":99},{"version":"da0b77eb7864c125c602c7e53b89121e4236bc2c18f654738ff2807675dceeb1","impliedFormat":99},{"version":"b7b5fe8371922595d39c2b7a91ce4ca9d122514bf4857d04c5cfe3dd16e7e25b","impliedFormat":99},{"version":"90c43e8e3debeb7b366bd3a3ad7c6ef473800d1c262922e6f6c4bd49945f8b33","impliedFormat":99},{"version":"7f665faceb46279346adcd23681c412086f520e923c1aa940828f727e0538ad9","impliedFormat":99},{"version":"52780dd1f29a54717ac94f3938861329a238b644522e37553121ce7ad9129fba","impliedFormat":99},{"version":"a33cea0cb586469840caf45930e52811cfa1ac8fc4fc3102d3892b33b508c3d4","impliedFormat":99},{"version":"31d05deea3ee1778f4feaed2d07e432a9599ec37d2abeea0e4d1a248199f45c0","impliedFormat":99},{"version":"87fa5b9a623f92819b5aed6f0661a6e77ffa2bc4cbf847f8118393aa569be5d8","signature":"243f206309b9f8da122d14ee6f499c1b71e77949994de5b7ed9a4f9c1e2a122d","impliedFormat":99},{"version":"97c6d94209f6097f55aae33a7daca31847b54f0ba662f48b1fed9e1543a1bae9","signature":"2999b61295ae43b6cb5493522bfa5221c0fc3ca02beb27bb3733ea820ea801d2","impliedFormat":99},{"version":"d3cfde44f8089768ebb08098c96d01ca260b88bccf238d55eee93f1c620ff5a5","impliedFormat":1},{"version":"293eadad9dead44c6fd1db6de552663c33f215c55a1bfa2802a1bceed88ff0ec","impliedFormat":1},{"version":"36eb5babc665b890786550d4a8cb20ef7105673a6d5551fbdd7012877bb26942","impliedFormat":1},{"version":"fec412ded391a7239ef58f455278154b62939370309c1fed322293d98c8796a6","impliedFormat":1},{"version":"e3498cf5e428e6c6b9e97bd88736f26d6cf147dedbfa5a8ad3ed8e05e059af8a","impliedFormat":1},{"version":"dba3f34531fd9b1b6e072928b6f885aa4d28dd6789cbd0e93563d43f4b62da53","impliedFormat":1},{"version":"f672c876c1a04a223cf2023b3d91e8a52bb1544c576b81bf64a8fec82be9969c","impliedFormat":1},{"version":"e4b03ddcf8563b1c0aee782a185286ed85a255ce8a30df8453aade2188bbc904","impliedFormat":1},{"version":"2329d90062487e1eaca87b5e06abcbbeeecf80a82f65f949fd332cfcf824b87b","impliedFormat":1},{"version":"25b3f581e12ede11e5739f57a86e8668fbc0124f6649506def306cad2c59d262","impliedFormat":1},{"version":"93c3e73824ad57f98fd23b39335dbdae2db0bd98199b0dc0b9ccc60bf3c5134a","impliedFormat":1},{"version":"a9ebb67d6bbead6044b43714b50dcb77b8f7541ffe803046fdec1714c1eba206","impliedFormat":1},{"version":"833e92c058d033cde3f29a6c7603f517001d1ddd8020bc94d2067a3bc69b2a8e","impliedFormat":1},{"version":"c1a2e05eb6d7ca8d7e4a7f4c93ccf0c2857e842a64c98eaee4d85841ee9855e6","impliedFormat":1},{"version":"835fb2909ce458740fb4a49fc61709896c6864f5ce3db7f0a88f06c720d74d02","impliedFormat":1},{"version":"6e5857f38aa297a859cab4ec891408659218a5a2610cd317b6dcbef9979459cc","impliedFormat":1},{"version":"ead8e39c2e11891f286b06ae2aa71f208b1802661fcdb2425cffa4f494a68854","impliedFormat":1},{"version":"82919acbb38870fcf5786ec1292f0f5afe490f9b3060123e48675831bd947192","impliedFormat":1},{"version":"e222701788ec77bd57c28facbbd142eadf5c749a74d586bc2f317db7e33544b1","impliedFormat":1},{"version":"09154713fae0ed7befacdad783e5bd1970c06fc41a5f866f7f933b96312ce764","impliedFormat":1},{"version":"8d67b13da77316a8a2fabc21d340866ddf8a4b99e76a6c951cc45189142df652","impliedFormat":1},{"version":"a91c8d28d10fee7fe717ddf3743f287b68770c813c98f796b6e38d5d164bd459","impliedFormat":1},{"version":"68add36d9632bc096d7245d24d6b0b8ad5f125183016102a3dad4c9c2438ccb0","impliedFormat":1},{"version":"3a819c2928ee06bbcc84e2797fd3558ae2ebb7e0ed8d87f71732fb2e2acc87b4","impliedFormat":1},{"version":"f6f827cd43e92685f194002d6b52a9408309cda1cec46fb7ca8489a95cbd2fd4","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"a270a1a893d1aee5a3c1c8c276cd2778aa970a2741ee2ccf29cc3210d7da80f5","impliedFormat":1},{"version":"add0ce7b77ba5b308492fa68f77f24d1ed1d9148534bdf05ac17c30763fc1a79","impliedFormat":1},{"version":"8926594ee895917e90701d8cbb5fdf77fc238b266ac540f929c7253f8ad6233d","impliedFormat":1},{"version":"2f67911e4bf4e0717dc2ded248ce2d5e4398d945ee13889a6852c1233ea41508","impliedFormat":1},{"version":"d8430c275b0f59417ea8e173cfb888a4477b430ec35b595bf734f3ec7a7d729f","impliedFormat":1},{"version":"69364df1c776372d7df1fb46a6cb3a6bf7f55e700f533a104e3f9d70a32bec18","impliedFormat":1},{"version":"0648a8c200b5544e30677f7f7059b1e384d6cab716c82659716457e3f317ebae","impliedFormat":99},{"version":"6042774c61ece4ba77b3bf375f15942eb054675b7957882a00c22c0e4fe5865c","impliedFormat":1},{"version":"5a3bd57ed7a9d9afef74c75f77fce79ba3c786401af9810cdf45907c4e93f30e","impliedFormat":1},{"version":"ed8763205f02fb65e84eff7432155258df7f93b7d938f01785cb447d043d53f3","impliedFormat":1},{"version":"30db853bb2e60170ba11e39ab48bacecb32d06d4def89eedf17e58ebab762a65","impliedFormat":1},{"version":"e27451b24234dfed45f6cf22112a04955183a99c42a2691fb4936d63cfe42761","impliedFormat":1},{"version":"2316301dd223d31962d917999acf8e543e0119c5d24ec984c9f22cb23247160c","impliedFormat":1},{"version":"58d65a2803c3b6629b0e18c8bf1bc883a686fcf0333230dd0151ab6e85b74307","impliedFormat":1},{"version":"e818471014c77c103330aee11f00a7a00b37b35500b53ea6f337aefacd6174c9","impliedFormat":1},{"version":"d4a5b1d2ff02c37643e18db302488cd64c342b00e2786e65caac4e12bda9219b","impliedFormat":1},{"version":"d8bc0c5487582c6d887c32c92d8b4ffb23310146fcb1d82adf4b15c77f57c4ac","impliedFormat":1},{"version":"8cb31102790372bebfd78dd56d6752913b0f3e2cefbeb08375acd9f5ba737155","impliedFormat":1},{"version":"f17ed72d1b1882ab6dc66d45e699f757d15bba0807af2fc9c3ec98fe367611c1","impliedFormat":99},{"version":"b1067ccb56b38af060dc3299ea7c4c6362cad4f07d0d454325a74808204fc801","impliedFormat":99},{"version":"3315dbac8f60921dd2939d872097f94e8b9a94c5a4856b0cf2a1c62a807b2302","impliedFormat":99},{"version":"ba678532514244768286bdfdc82b33f072d5de4e9d281a75bcccdba9970788d7","impliedFormat":99},{"version":"46a1409698484e8e79c99cf8c6dccf24243bfc6c42e739473ce80e9335e4c1a4","impliedFormat":99},{"version":"5993793a23b298afd20c2e1cd2bf8468cc7e9415d314d0771e93dd8b2e389d28","impliedFormat":99},{"version":"43bba4583a338a796b93309b1ef48edd67850349f942de43ca7d380ba45ed950","impliedFormat":99},{"version":"104fae9b53b5eaa040d9ce626e1bf0b3e6e27d269a899a98a4a28358cdcbc155","impliedFormat":99},{"version":"50a6aa665f3a2e769a4d683f9f74cd15164d0947fb957d8016331b170ab8b643","impliedFormat":99},{"version":"6b83491ca98ce7dc82ec0c54f1456705c9ea08f5a39fa8cea17134b28e2a73d7","impliedFormat":99},{"version":"33aa2f336bb0bc598652ddd1ad3095ef7a14e4dbed9cf829fa9357e989fff31a","impliedFormat":99},{"version":"d691e546590145171d00d78b341bd3ca4844c96eb34f870be84058a1cab585c3","impliedFormat":99},{"version":"c9d12ca3f67129b3ed2b81bf54537c970673cedd05ba28fbeba70c1e8aff684b","impliedFormat":99},{"version":"4bc84914e0e9f3f82acf52a0ac53c284897a879d9bb2a0bfe3c12ebf7dcf88e7","impliedFormat":99},{"version":"29f823cbe0166e10e7176a94afe609a24b9e5af3858628c541ff8ce1727023cd","impliedFormat":1},{"version":"19c5a6e0c719d40b62373add06dcbc0effecfaefbccde489284ac025ced577b4","signature":"6d5355f0f67e9b4eb6e8abb5e8c1422f6687d863ac250923cf24cf40fbc609be","impliedFormat":99},{"version":"5637391eade69ddd4f02d9c6633068e95e88271692eba51729340369d28c974f","signature":"d330d0cf915a92eeb7768bce7d6e36864332d5d5da739d82eb5e15d3742160a4","impliedFormat":99},{"version":"8f110250de54785b438fc552311fe3944bc538aba96c4cfadbafdc70750661c3","impliedFormat":99},{"version":"e8b1b4448f077d5a459acb418b7122bfb2f48fec26d59b5586778e1b3def2d2c","impliedFormat":99},{"version":"ca19aa06985d38de4fbabf5ef75b3fce417bf1a82996ac76f2c63cf8ecb2b85a","signature":"43e818adf60173644896298637f47b01d5819b17eda46eaa32d0c7d64724d012","impliedFormat":99},{"version":"0ee26019ddf7d4de19fe2f2b9febb2a3e673604f8d5558381384035540f1aa3e","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881","impliedFormat":99},{"version":"d62d74d2bbda45172e3dc6ecd9ba0bf1d2a752f11c80587d3669ed55b56326b6","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881","impliedFormat":99},{"version":"6c7176368037af28cb72f2392010fa1cef295d6d6744bca8cfb54985f3a18c3e","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab41ef1f2cdafb8df48be20cd969d875602483859dc194e9c97c8a576892c052","affectsGlobalScope":true,"impliedFormat":1},{"version":"437e20f2ba32abaeb7985e0afe0002de1917bc74e949ba585e49feba65da6ca1","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"a79e62f1e20467e11a904399b8b18b18c0c6eea6b50c1168bf215356d5bebfaf","affectsGlobalScope":true,"impliedFormat":1},{"version":"d802f0e6b5188646d307f070d83512e8eb94651858de8a82d1e47f60fb6da4e2","affectsGlobalScope":true,"impliedFormat":1},{"version":"17bb4105d0ea2ab2bfcb4f77ff8585691d5569c90ae15f4fa8d5ff9fb42b910b","affectsGlobalScope":true,"impliedFormat":1},{"version":"1db0b7dca579049ca4193d034d835f6bfe73096c73663e5ef9a0b5779939f3d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"456fa0c0ab68731564917642b977c71c3b7682240685b118652fb9253c9a6429","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e9c23ba78aabc2e0a27033f18737a6df754067731e69dc5f52823957d60a4b6","impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"763fe0f42b3d79b440a9b6e51e9ba3f3f91352469c1e4b3b67bfa4ff6352f3f4","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","impliedFormat":1},{"version":"7f182617db458e98fc18dfb272d40aa2fff3a353c44a89b2c0ccb3937709bfb5","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","impliedFormat":1},{"version":"a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"2cbe0621042e2a68c7cbce5dfed3906a1862a16a7d496010636cdbdb91341c0f","affectsGlobalScope":true,"impliedFormat":1},{"version":"f9501cc13ce624c72b61f12b3963e84fad210fbdf0ffbc4590e08460a3f04eba","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"a38efe83ff77c34e0f418a806a01ca3910c02ee7d64212a59d59bca6c2c38fa1","impliedFormat":1},{"version":"7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","impliedFormat":1},{"version":"2b06b93fd01bcd49d1a6bd1f9b65ddcae6480b9a86e9061634d6f8e354c1468f","impliedFormat":1},{"version":"7b988bc259155186e6b09dd8b32856d9e45c8d261e63c19abaf590bb6550f922","affectsGlobalScope":true,"impliedFormat":1},{"version":"fe7b52f993f9336b595190f3c1fcc259bb2cf6dcb4ac8fdb1e0454cc5df7301e","impliedFormat":1},{"version":"e9b97d69510658d2f4199b7d384326b7c4053b9e6645f5c19e1c2a54ede427fc","impliedFormat":1},{"version":"c2510f124c0293ab80b1777c44d80f812b75612f297b9857406468c0f4dafe29","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"81711af669f63d43ccb4c08e15beda796656dd46673d0def001c7055db53852d","affectsGlobalScope":true,"impliedFormat":1},{"version":"19d5f8d3930e9f99aa2c36258bf95abbe5adf7e889e6181872d1cdba7c9a7dd5","impliedFormat":1},{"version":"9855e02d837744303391e5623a531734443a5f8e6e8755e018c41d63ad797db2","impliedFormat":1},{"version":"bdba81959361810be44bcfdd283f4d601e406ab5ad1d2bdff0ed480cf983c9d7","impliedFormat":1},{"version":"836a356aae992ff3c28a0212e3eabcb76dd4b0cc06bcb9607aeef560661b860d","impliedFormat":1},{"version":"1e0d1f8b0adfa0b0330e028c7941b5a98c08b600efe7f14d2d2a00854fb2f393","impliedFormat":1},{"version":"b326f4813b90d230ec3950f66bd5b5ce3971aac5fac67cfafc54aa07b39fd07f","affectsGlobalScope":true,"impliedFormat":1},{"version":"c8420c7c2b778b334587a4c0311833b5212ff2f684ea37b2f0e2b117f1d7210d","impliedFormat":1},{"version":"b6b08215821c9833b0e8e30ea1ed178009f2f3ff5d7fae3865ee42f97cc87784","impliedFormat":1},{"version":"b795c3e47a26be91ac33d8115acdc37bfa41ecc701fb237c64a23da4d2b7e1d8","impliedFormat":1},{"version":"73cf6cc19f16c0191e4e9d497ab0c11c7b38f1ca3f01ad0f09a3a5a971aac4b8","impliedFormat":1},{"version":"528b62e4272e3ddfb50e8eed9e359dedea0a4d171c3eb8f337f4892aac37b24b","impliedFormat":1},{"version":"ed58b9974bb3114f39806c9c2c6258c4ffa6a255921976a7c53dfa94bf178f42","impliedFormat":1},{"version":"e6fa9ad47c5f71ff733744a029d1dc472c618de53804eae08ffc243b936f87ff","affectsGlobalScope":true,"impliedFormat":1},{"version":"f72bc8fe16da67e4e3268599295797b202b95e54bd215a03f97e925dd1502a36","impliedFormat":1},{"version":"b1b6ee0d012aeebe11d776a155d8979730440082797695fc8e2a5c326285678f","impliedFormat":1},{"version":"45875bcae57270aeb3ebc73a5e3fb4c7b9d91d6b045f107c1d8513c28ece71c0","impliedFormat":1},{"version":"915e18c559321c0afaa8d34674d3eb77e1ded12c3e85bf2a9891ec48b07a1ca5","affectsGlobalScope":true,"impliedFormat":1},{"version":"e9727a118ce60808e62457c89762fe5a4e2be8e9fd0112d12432d1bafdba942f","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f16a7e4deafa527ed9995a772bb380eb7d3c2c0fd4ae178c5263ed18394db2c","impliedFormat":1},{"version":"933921f0bb0ec12ef45d1062a1fc0f27635318f4d294e4d99de9a5493e618ca2","impliedFormat":1},{"version":"71a0f3ad612c123b57239a7749770017ecfe6b66411488000aba83e4546fde25","impliedFormat":1},{"version":"70b57b5529051497e9f6482b76d91c0dcbb103d9ead8a0549f5bab8f65e5d031","impliedFormat":1},{"version":"4f9d8ca0c417b67b69eeb54c7ca1bedd7b56034bb9bfd27c5d4f3bc4692daca7","impliedFormat":1},{"version":"814118df420c4e38fe5ae1b9a3bafb6e9c2aa40838e528cde908381867be6466","impliedFormat":1},{"version":"3a90b9beac4c2bfdf6517faae0940a042b81652badf747df0a7c7593456f6ebe","impliedFormat":1},{"version":"8302157cd431b3943eed09ad439b4441826c673d9f870dcb0e1f48e891a4211e","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"125d792ec6c0c0f657d758055c494301cc5fdb327d9d9d5960b3f129aff76093","impliedFormat":1},{"version":"dba28a419aec76ed864ef43e5f577a5c99a010c32e5949fe4e17a4d57c58dd11","affectsGlobalScope":true,"impliedFormat":1},{"version":"2754d8221d77c7b382096651925eb476f1066b3348da4b73fe71ced7801edada","impliedFormat":1},{"version":"a5890565ed564c7b29eb1b1038d4e10c03a3f5231b0a8d48fea4b41ab19f4f46","impliedFormat":1},{"version":"f0be1b8078cd549d91f37c30c222c2a187ac1cf981d994fb476a1adc61387b14","affectsGlobalScope":true,"impliedFormat":1},{"version":"0aaed1d72199b01234152f7a60046bc947f1f37d78d182e9ae09c4289e06a592","impliedFormat":1},{"version":"98ffdf93dfdd206516971d28e3e473f417a5cfd41172e46b4ce45008f640588e","impliedFormat":1},{"version":"66ba1b2c3e3a3644a1011cd530fb444a96b1b2dfe2f5e837a002d41a1a799e60","impliedFormat":1},{"version":"7e514f5b852fdbc166b539fdd1f4e9114f29911592a5eb10a94bb3a13ccac3c4","impliedFormat":1},{"version":"cee74f5970ffc01041e5bffc3f324c20450534af4054d2c043cb49dbbd4ec8f7","affectsGlobalScope":true,"impliedFormat":1},{"version":"1a654e0d950353614ba4637a8de4f9d367903a0692b748e11fccf8c880c99735","affectsGlobalScope":true,"impliedFormat":1},{"version":"42da246c46ca3fd421b6fd88bb4466cda7137cf33e87ba5ceeded30219c428bd","impliedFormat":1},{"version":"3a051941721a7f905544732b0eb819c8d88333a96576b13af08b82c4f17581e4","impliedFormat":1},{"version":"ac5ed35e649cdd8143131964336ab9076937fa91802ec760b3ea63b59175c10a","impliedFormat":1},{"version":"f2feb9696208311cdcf1936df2b7cbec96a3f0ab9d403952bf170546d4253a90","affectsGlobalScope":true,"impliedFormat":1},{"version":"db3d77167a7da6c5ba0c51c5b654820e3464093f21724ccd774c0b9bc3f81bc0","impliedFormat":1},{"version":"d9b6fd8640f6ad3f13ce9ce47d91061a698cf7763fed7f668e4f89709989aae5","impliedFormat":1}],"root":[94,95,[203,205],[207,209]],"options":{"allowJs":true,"allowSyntheticDefaultImports":true,"composite":true,"declaration":true,"declarationMap":true,"downlevelIteration":true,"esModuleInterop":true,"jsx":4,"module":199,"noImplicitAny":true,"noImplicitReturns":true,"outDir":"./","skipLibCheck":true,"strict":true,"strictNullChecks":true,"target":99},"referencedMap":[[192,1],[200,2],[197,3],[191,4],[188,5],[198,6],[201,7],[206,8],[176,9],[194,10],[193,4],[190,4],[199,5],[189,11],[196,12],[261,13],[262,13],[263,14],[215,15],[264,16],[265,17],[266,18],[210,5],[213,19],[211,5],[212,5],[267,20],[268,21],[269,22],[270,23],[271,24],[272,25],[273,25],[274,26],[275,27],[276,28],[277,29],[216,5],[214,5],[278,30],[279,31],[280,32],[313,33],[281,34],[282,35],[283,36],[284,37],[285,38],[286,39],[287,40],[288,41],[289,42],[290,43],[291,43],[292,44],[293,5],[294,5],[295,45],[297,46],[296,47],[298,48],[299,49],[300,50],[301,51],[302,52],[303,53],[304,54],[305,55],[306,56],[307,57],[308,58],[309,59],[310,60],[217,5],[218,5],[219,5],[258,61],[259,5],[260,5],[311,62],[312,63],[80,5],[82,64],[83,65],[220,5],[81,5],[195,5],[78,5],[79,5],[13,5],[15,5],[14,5],[2,5],[16,5],[17,5],[18,5],[19,5],[20,5],[21,5],[22,5],[23,5],[3,5],[24,5],[25,5],[4,5],[26,5],[30,5],[27,5],[28,5],[29,5],[31,5],[32,5],[33,5],[5,5],[34,5],[35,5],[36,5],[37,5],[6,5],[41,5],[38,5],[39,5],[40,5],[42,5],[7,5],[43,5],[48,5],[49,5],[44,5],[45,5],[46,5],[47,5],[8,5],[53,5],[50,5],[51,5],[52,5],[54,5],[9,5],[55,5],[56,5],[57,5],[59,5],[58,5],[60,5],[61,5],[10,5],[62,5],[63,5],[64,5],[11,5],[65,5],[66,5],[67,5],[68,5],[69,5],[1,5],[70,5],[71,5],[12,5],[75,5],[73,5],[77,5],[72,5],[76,5],[74,5],[236,66],[246,67],[235,66],[256,68],[227,69],[226,70],[255,71],[249,72],[254,73],[229,74],[243,75],[228,76],[252,77],[224,78],[223,71],[253,79],[225,80],[230,81],[231,5],[234,81],[221,5],[257,82],[247,83],[238,84],[239,85],[241,86],[237,87],[240,88],[250,71],[232,89],[233,90],[242,91],[222,92],[245,83],[244,81],[248,5],[251,93],[202,94],[100,95],[107,96],[102,5],[103,5],[101,97],[104,98],[96,5],[97,5],[108,99],[99,100],[105,5],[106,101],[98,102],[180,103],[184,104],[181,104],[177,103],[185,105],[182,106],[186,94],[183,104],[178,107],[179,108],[172,109],[116,110],[118,111],[171,5],[117,112],[175,113],[174,114],[173,115],[109,5],[119,110],[120,5],[111,116],[115,117],[110,5],[112,118],[113,119],[114,5],[187,120],[121,121],[122,121],[123,121],[124,121],[125,121],[126,121],[127,121],[128,121],[129,121],[130,121],[131,121],[132,121],[133,121],[135,121],[134,121],[136,121],[137,121],[138,121],[139,121],[170,122],[140,121],[141,121],[142,121],[143,121],[144,121],[145,121],[146,121],[147,121],[148,121],[149,121],[150,121],[151,121],[152,121],[154,121],[153,121],[155,121],[156,121],[157,121],[158,121],[159,121],[160,121],[161,121],[162,121],[163,121],[164,121],[165,121],[166,121],[169,121],[167,121],[168,121],[93,123],[84,5],[91,124],[85,5],[92,125],[86,5],[87,5],[88,5],[89,5],[90,5],[205,126],[95,127],[207,128],[208,129],[94,130],[204,131],[209,132],[203,133]],"latestChangedDtsFile":"./src/lrs-query.test.d.ts","version":"5.8.3"}
package/package.json CHANGED
@@ -1,6 +1,45 @@
1
1
  {
2
2
  "name": "chishiki-mcp",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
3
+ "version": "0.3.1",
4
+ "description": "MCP server exposing Chishiki (content, flashcards, SM-2 scheduling, xAPI LRS) to AI assistants",
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "git+https://github.com/fustilio/chishiki.git",
8
+ "directory": "packages/mcp-server"
9
+ },
10
+ "type": "module",
11
+ "sideEffects": false,
12
+ "files": [
13
+ "dist/**"
14
+ ],
15
+ "types": "dist/index.d.mts",
16
+ "main": "dist/index.mjs",
17
+ "bin": {
18
+ "chishiki-mcp": "./dist/src/cli.js"
19
+ },
20
+ "publishConfig": {
21
+ "access": "public"
22
+ },
23
+ "dependencies": {
24
+ "@modelcontextprotocol/sdk": "^1.32.2",
25
+ "zod": "^4.1.12",
26
+ "chishiki-core": "0.8.1"
27
+ },
28
+ "devDependencies": {
29
+ "@types/node": "^22.15.0",
30
+ "@extension/tsconfig": "0.6.0"
31
+ },
32
+ "scripts": {
33
+ "clean:bundle": "rimraf dist",
34
+ "clean:node_modules": "pnpx rimraf node_modules",
35
+ "clean:turbo": "rimraf .turbo",
36
+ "clean": "pnpm clean:bundle && pnpm clean:node_modules && pnpm clean:turbo",
37
+ "ready": "tsc -b",
38
+ "start": "node dist/src/cli.js",
39
+ "test": "pnpm ready && node --test dist/src/*.test.js",
40
+ "lint": "eslint .",
41
+ "lint:fix": "pnpm lint --fix",
42
+ "format": "prettier . --write --ignore-path ../../.prettierignore",
43
+ "type-check": "tsc --noEmit"
44
+ }
6
45
  }
package/README.md DELETED
@@ -1,3 +0,0 @@
1
- # Temporary Holding Version
2
-
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.