mcard-js 2.1.49 → 2.1.51
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/CardCollection-EMSBVZP3.js +10 -0
- package/dist/CardCollection-KQWR4PCV.js +10 -0
- package/dist/CardCollection-ORGE2XBG.js +10 -0
- package/dist/EngineRegistry-ABZXHZWO.js +17 -0
- package/dist/EngineRegistry-EIOT4MUZ.js +17 -0
- package/dist/EngineRegistry-IQ6EVO72.js +17 -0
- package/dist/EngineRegistry-PHRFXEOE.js +17 -0
- package/dist/IndexedDBEngine-EWA3SLAO.js +12 -0
- package/dist/IndexedDBEngine-FXAD42F3.js +12 -0
- package/dist/IndexedDBEngine-RD4447IS.js +12 -0
- package/dist/LLMRuntime-ARUWOX52.js +17 -0
- package/dist/LLMRuntime-C3XCO7WF.js +17 -0
- package/dist/LLMRuntime-CQ7X43QR.js +17 -0
- package/dist/LLMRuntime-PD45COKE.js +17 -0
- package/dist/LLMRuntime-QOUMLT33.js +17 -0
- package/dist/LLMRuntime-SZNLTHD7.js +17 -0
- package/dist/LLMRuntime-TVJGK2BG.js +17 -0
- package/dist/LambdaRuntime-25GMEJCU.js +19 -0
- package/dist/LambdaRuntime-7KQUMHPI.js +19 -0
- package/dist/LambdaRuntime-DRT7ODPC.js +19 -0
- package/dist/LambdaRuntime-HSREEYQG.js +19 -0
- package/dist/LambdaRuntime-IH7NVG6Z.js +19 -0
- package/dist/LambdaRuntime-MPG27FM2.js +19 -0
- package/dist/LambdaRuntime-ODSWIMNM.js +19 -0
- package/dist/LambdaRuntime-PHGRZYAW.js +19 -0
- package/dist/LambdaRuntime-QOEYR37L.js +19 -0
- package/dist/LambdaRuntime-RT33TFN2.js +19 -0
- package/dist/LambdaRuntime-W6TQBP5O.js +19 -0
- package/dist/Loader-35WSUC53.js +14 -0
- package/dist/Loader-STS3G4OQ.js +16 -0
- package/dist/Loader-W22AEM6F.js +12 -0
- package/dist/Loader-YBPWP43S.js +12 -0
- package/dist/Loader-ZYSS7B4D.js +12 -0
- package/dist/NetworkRuntime-KR2QITXV.js +987 -0
- package/dist/NetworkRuntime-S6V2CMZV.js +1575 -0
- package/dist/OllamaProvider-2ANW6EB2.js +9 -0
- package/dist/OllamaProvider-5QFJKYAC.js +9 -0
- package/dist/OllamaProvider-6QXJGR7V.js +9 -0
- package/dist/OllamaProvider-ABEEFX7M.js +9 -0
- package/dist/OllamaProvider-Z2CGY5LY.js +9 -0
- package/dist/VCard-225X42W7.js +25 -0
- package/dist/chunk-2APJYBH4.js +368 -0
- package/dist/chunk-4DFTWDRB.js +497 -0
- package/dist/chunk-4PBRTFSY.js +112 -0
- package/dist/chunk-4T3H25AP.js +299 -0
- package/dist/chunk-5DFXPIRL.js +42 -0
- package/dist/chunk-5HRZV4R3.js +217 -0
- package/dist/chunk-6ZRJXVJ3.js +529 -0
- package/dist/chunk-7N7JYGN2.js +364 -0
- package/dist/chunk-7QTJUGYQ.js +74 -0
- package/dist/chunk-7TXIPJI2.js +2360 -0
- package/dist/chunk-BFJUD527.js +2369 -0
- package/dist/chunk-CHXIVTQV.js +364 -0
- package/dist/chunk-DM2ABCA4.js +497 -0
- package/dist/chunk-DTPHGTBQ.js +275 -0
- package/dist/chunk-EDAJ5FO6.js +405 -0
- package/dist/chunk-ETJWXHKZ.js +246 -0
- package/dist/chunk-FLYGNPUC.js +2369 -0
- package/dist/chunk-FSDRDWOP.js +34 -0
- package/dist/chunk-GIKMCG4D.js +497 -0
- package/dist/chunk-IJKS3LGK.js +428 -0
- package/dist/chunk-JUQ2VQZA.js +428 -0
- package/dist/chunk-JVW4J7BY.js +2369 -0
- package/dist/chunk-JWTRVEC3.js +2369 -0
- package/dist/chunk-KJM4C65U.js +299 -0
- package/dist/chunk-KMC566CN.js +591 -0
- package/dist/chunk-KMNP6DBL.js +455 -0
- package/dist/chunk-LVU7O5IY.js +597 -0
- package/dist/chunk-M4C6RWLA.js +373 -0
- package/dist/chunk-NAAAKSEO.js +541 -0
- package/dist/chunk-NKIXLPHL.js +373 -0
- package/dist/chunk-NOEDMK7I.js +428 -0
- package/dist/chunk-NOPYSBOQ.js +2360 -0
- package/dist/chunk-P4G42QCY.js +2369 -0
- package/dist/chunk-PKLONZCF.js +253 -0
- package/dist/chunk-PNGECWPN.js +597 -0
- package/dist/chunk-PYP6T64W.js +217 -0
- package/dist/chunk-QFT3COE2.js +217 -0
- package/dist/chunk-QFZFXMNX.js +275 -0
- package/dist/chunk-QZGRQRJP.js +2369 -0
- package/dist/chunk-R3XRBAM7.js +253 -0
- package/dist/chunk-RYP66UMH.js +74 -0
- package/dist/chunk-RZIZYRLF.js +112 -0
- package/dist/chunk-T43V44RS.js +2369 -0
- package/dist/chunk-UCNVX5BZ.js +74 -0
- package/dist/chunk-UDF7HS4V.js +368 -0
- package/dist/chunk-VJPXJVEH.js +299 -0
- package/dist/chunk-VW3KBDK5.js +74 -0
- package/dist/chunk-X72XIYSN.js +364 -0
- package/dist/chunk-XETU7TV4.js +112 -0
- package/dist/chunk-Y4BT6LHA.js +368 -0
- package/dist/chunk-YQGB6BIA.js +2369 -0
- package/dist/chunk-ZEQPO3XV.js +217 -0
- package/dist/chunk-ZKRKWXEQ.js +2369 -0
- package/dist/chunk-ZMK2HTZ5.js +275 -0
- package/dist/constants-CLB7B6MN.js +101 -0
- package/dist/constants-O343SMHL.js +103 -0
- package/dist/constants-YPGDEX5X.js +103 -0
- package/dist/index.browser.cjs +11 -5
- package/dist/index.browser.js +12 -12
- package/dist/index.cjs +2358 -1896
- package/dist/index.d.cts +934 -776
- package/dist/index.d.ts +934 -776
- package/dist/index.js +1353 -1271
- package/dist/storage/SqliteNodeEngine.cjs +12 -6
- package/dist/storage/SqliteNodeEngine.js +4 -4
- package/dist/storage/SqliteWasmEngine.cjs +11 -5
- package/dist/storage/SqliteWasmEngine.js +4 -4
- package/package.json +5 -3
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
// ../config/app_config.json
|
|
2
|
+
var app_config_default = {
|
|
3
|
+
network: {
|
|
4
|
+
default_ws_host: "127.0.0.1",
|
|
5
|
+
default_ws_port: 5321,
|
|
6
|
+
default_api_port: 5320,
|
|
7
|
+
default_python_api_port: 28302,
|
|
8
|
+
default_js_api_port: 28303,
|
|
9
|
+
default_server_host: "0.0.0.0",
|
|
10
|
+
cors_origins: [
|
|
11
|
+
"http://localhost:3000",
|
|
12
|
+
"http://localhost:8000",
|
|
13
|
+
"https://localhost:3000",
|
|
14
|
+
"https://localhost:8000",
|
|
15
|
+
"http://localhost:8080",
|
|
16
|
+
"https://example.com"
|
|
17
|
+
]
|
|
18
|
+
},
|
|
19
|
+
web: {
|
|
20
|
+
api_key_header_name: "X-API-Key"
|
|
21
|
+
},
|
|
22
|
+
identity: {
|
|
23
|
+
provider: "sqlite",
|
|
24
|
+
space_path: "./data/agent_identities.db",
|
|
25
|
+
api_endpoint: null,
|
|
26
|
+
default_vapid_contact: "mailto:developer@example.com"
|
|
27
|
+
},
|
|
28
|
+
storage: {
|
|
29
|
+
default_db_path: "./data/content_memory.db",
|
|
30
|
+
test_db_path: "./tests/data/test_mcard.db",
|
|
31
|
+
default_data_root_dirname: "data",
|
|
32
|
+
default_data_user: "guest",
|
|
33
|
+
default_seed_dirname: "seed",
|
|
34
|
+
default_artifacts_dirname: "artifacts",
|
|
35
|
+
default_server_memory_db: "servermemory.db",
|
|
36
|
+
default_mcard_db: "mcard.db",
|
|
37
|
+
default_server_log_db: "server_log.db",
|
|
38
|
+
default_push_subscriptions_file: "subscriptions.json",
|
|
39
|
+
default_execution_log_path: "./data/execution_log.db"
|
|
40
|
+
},
|
|
41
|
+
services: {
|
|
42
|
+
default_ollama_base_url: "http://localhost:11434",
|
|
43
|
+
default_fallback_model: "qwen3:0.6b",
|
|
44
|
+
default_otlp_endpoint: "http://localhost:4317",
|
|
45
|
+
default_vllm_base_url: "http://localhost:8000",
|
|
46
|
+
default_lmstudio_base_url: "http://localhost:1234"
|
|
47
|
+
},
|
|
48
|
+
env: {
|
|
49
|
+
api_port: "MCARD_API_PORT",
|
|
50
|
+
ws_port: "MCARD_WS_PORT",
|
|
51
|
+
ws_host: "VITE_WS_HOST",
|
|
52
|
+
vite_ws_port: "VITE_WS_PORT",
|
|
53
|
+
identity_provider: "MCARD_IDENTITY_PROVIDER",
|
|
54
|
+
identity_space_path: "IDENTITY_SPACE_PATH",
|
|
55
|
+
identity_api_endpoint: "MCARD_IDENTITY_API_ENDPOINT",
|
|
56
|
+
data_root: "DATA_ROOT",
|
|
57
|
+
data_user: "DATA_USER",
|
|
58
|
+
artifacts_dir: "ARTIFACTS_DIR",
|
|
59
|
+
mcard_db_path: "MCARD_DB_PATH",
|
|
60
|
+
mcard_storage_path: "MCARD_STORAGE_PATH",
|
|
61
|
+
execution_logs_db_path: "EXECUTION_LOGS_DB_PATH",
|
|
62
|
+
server_log_db_path: "SERVER_LOG_DB_PATH",
|
|
63
|
+
server_memory_db_path: "SERVER_MEMORY_DB_PATH",
|
|
64
|
+
servermemory_db_path: "SERVERMEMORY_DB_PATH",
|
|
65
|
+
seeding_memory_db_path: "SEEDING_MEMORY_DB_PATH",
|
|
66
|
+
push_subscriptions_path: "PUSH_SUBSCRIPTIONS_PATH",
|
|
67
|
+
vapid_contact_email: "VAPID_CONTACT_EMAIL",
|
|
68
|
+
vapid_contact: "VAPID_CONTACT",
|
|
69
|
+
ollama_base_url: "OLLAMA_BASE_URL",
|
|
70
|
+
fallback_model: "FALLBACK_MODEL",
|
|
71
|
+
otlp_endpoint: "OTLP_ENDPOINT",
|
|
72
|
+
vllm_base_url: "VLLM_BASE_URL",
|
|
73
|
+
lmstudio_base_url: "LMSTUDIO_BASE_URL",
|
|
74
|
+
api_key_header_name: "X-API-Key"
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
// src/config/constants.ts
|
|
79
|
+
var network = app_config_default.network ?? {};
|
|
80
|
+
var identity = app_config_default.identity ?? {};
|
|
81
|
+
var services = app_config_default.services ?? {};
|
|
82
|
+
var web = app_config_default.web ?? {};
|
|
83
|
+
var DEFAULT_PAGE_SIZE = 10;
|
|
84
|
+
var MAX_PAGE_SIZE = 1e3;
|
|
85
|
+
var MIN_PAGE_SIZE = 1;
|
|
86
|
+
var DETECTION_SAMPLE_CAP = 8192;
|
|
87
|
+
var MAX_FILE_SIZE = typeof process !== "undefined" && process.env.MCARD_MAX_SIZE_BYTES ? parseInt(process.env.MCARD_MAX_SIZE_BYTES, 10) : 150 * 1024 * 1024;
|
|
88
|
+
var READ_TIMEOUT_MS = 5e3;
|
|
89
|
+
var READ_CHUNK_SIZE = 8192;
|
|
90
|
+
var KNOWN_TYPE_SIZE_LIMIT = 1024 * 1024;
|
|
91
|
+
var BINARY_CHECK_SAMPLE_SIZE = 32 * 1024;
|
|
92
|
+
var CONTENT_DETECTION_SAMPLE_SIZE = 1024 * 1024;
|
|
93
|
+
var MAX_VECTOR_CONTENT_CHARS = 1e4;
|
|
94
|
+
var DEFAULT_MAX_PROBLEM_BYTES = 2 * 1024 * 1024;
|
|
95
|
+
var WRAP_WIDTH_KNOWN = 1e3;
|
|
96
|
+
var INDEXEDDB_DEFAULT_DB_NAME = "mcard-db";
|
|
97
|
+
var INDEXEDDB_DEFAULT_DB_VERSION = 1;
|
|
98
|
+
var SQLITE_BUSY_TIMEOUT_MS = 5e3;
|
|
99
|
+
var DEFAULT_IDENTITY_PROVIDER = String(identity.provider ?? "sqlite");
|
|
100
|
+
var DEFAULT_IDENTITY_SPACE_PATH = String(identity.space_path ?? "./data/agent_identities.db");
|
|
101
|
+
var DEFAULT_EXECUTION_LOG_PATH = String(app_config_default.storage?.default_execution_log_path ?? "./data/execution_log.db");
|
|
102
|
+
var DEFAULT_API_PORT = Number(network.default_api_port ?? 5320);
|
|
103
|
+
var DEFAULT_PYTHON_API_PORT = Number(network.default_python_api_port ?? 28302);
|
|
104
|
+
var DEFAULT_JS_API_PORT = Number(network.default_js_api_port ?? 28303);
|
|
105
|
+
var ENV_API_PORT = "MCARD_API_PORT";
|
|
106
|
+
var DEFAULT_WS_PORT = Number(network.default_ws_port ?? 5321);
|
|
107
|
+
var DEFAULT_WS_HOST = String(network.default_ws_host ?? "127.0.0.1");
|
|
108
|
+
var DEFAULT_SERVER_HOST = String(network.default_server_host ?? "0.0.0.0");
|
|
109
|
+
var CORS_ORIGINS = Array.isArray(network.cors_origins) ? network.cors_origins : [];
|
|
110
|
+
var ENV_WS_PORT = "MCARD_WS_PORT";
|
|
111
|
+
var getEnvUrl = (key, fallback) => {
|
|
112
|
+
try {
|
|
113
|
+
if (typeof process !== "undefined" && process.env && process.env[key]) {
|
|
114
|
+
return process.env[key];
|
|
115
|
+
}
|
|
116
|
+
} catch (e) {
|
|
117
|
+
}
|
|
118
|
+
return fallback;
|
|
119
|
+
};
|
|
120
|
+
var API_KEY_HEADER_NAME = String(web.api_key_header_name ?? "X-API-Key");
|
|
121
|
+
var DEFAULT_OLLAMA_BASE_URL = getEnvUrl(
|
|
122
|
+
"OLLAMA_BASE_URL",
|
|
123
|
+
String(services.default_ollama_base_url ?? "http://localhost:11434")
|
|
124
|
+
);
|
|
125
|
+
var DEFAULT_OTLP_ENDPOINT = getEnvUrl(
|
|
126
|
+
"OTLP_ENDPOINT",
|
|
127
|
+
String(services.default_otlp_endpoint ?? "http://localhost:4317")
|
|
128
|
+
);
|
|
129
|
+
var DEFAULT_VLLM_BASE_URL = getEnvUrl(
|
|
130
|
+
"VLLM_BASE_URL",
|
|
131
|
+
String(services.default_vllm_base_url ?? "http://localhost:8000")
|
|
132
|
+
);
|
|
133
|
+
var DEFAULT_LMSTUDIO_BASE_URL = getEnvUrl(
|
|
134
|
+
"LMSTUDIO_BASE_URL",
|
|
135
|
+
String(services.default_lmstudio_base_url ?? "http://localhost:1234")
|
|
136
|
+
);
|
|
137
|
+
var DEFAULT_FALLBACK_MODEL = getEnvUrl(
|
|
138
|
+
"FALLBACK_MODEL",
|
|
139
|
+
String(services.default_fallback_model ?? "qwen3:0.6b")
|
|
140
|
+
);
|
|
141
|
+
var DEFAULT_SQLJS_WASM_URL = "https://sql.js.org/dist/";
|
|
142
|
+
var EMBEDDING_MODELS = {
|
|
143
|
+
"nomic-embed-text": {
|
|
144
|
+
dimensions: 768,
|
|
145
|
+
provider: "ollama",
|
|
146
|
+
max_tokens: 8192,
|
|
147
|
+
description: "High quality, general purpose embeddings"
|
|
148
|
+
},
|
|
149
|
+
"bge-m3": {
|
|
150
|
+
dimensions: 1024,
|
|
151
|
+
provider: "ollama",
|
|
152
|
+
max_tokens: 8192,
|
|
153
|
+
description: "Multi-lingual, multi-granularity embeddings"
|
|
154
|
+
},
|
|
155
|
+
"mxbai-embed-large": {
|
|
156
|
+
dimensions: 1024,
|
|
157
|
+
provider: "ollama",
|
|
158
|
+
max_tokens: 512,
|
|
159
|
+
description: "High quality embeddings for retrieval"
|
|
160
|
+
},
|
|
161
|
+
"all-minilm": {
|
|
162
|
+
dimensions: 384,
|
|
163
|
+
provider: "ollama",
|
|
164
|
+
max_tokens: 256,
|
|
165
|
+
description: "Fast, lightweight embeddings"
|
|
166
|
+
}
|
|
167
|
+
};
|
|
168
|
+
var DEFAULT_EMBEDDING_MODEL = "nomic-embed-text";
|
|
169
|
+
var VISION_MODELS = {
|
|
170
|
+
"moondream": {
|
|
171
|
+
size: "1.7GB",
|
|
172
|
+
description: "Moondream - Tiny, high-performance vision language model",
|
|
173
|
+
capabilities: ["image_description", "visual_qa"]
|
|
174
|
+
},
|
|
175
|
+
"llama3.2-vision": {
|
|
176
|
+
size: "7.9GB",
|
|
177
|
+
description: "Llama 3.2 Vision - 11B multimodal model with strong OCR",
|
|
178
|
+
capabilities: ["image_description", "ocr", "visual_qa"]
|
|
179
|
+
},
|
|
180
|
+
"llava": {
|
|
181
|
+
size: "4.7GB",
|
|
182
|
+
description: "LLaVA - Large Language and Vision Assistant",
|
|
183
|
+
capabilities: ["image_description", "visual_qa"]
|
|
184
|
+
},
|
|
185
|
+
"minicpm-v": {
|
|
186
|
+
size: "5.6GB",
|
|
187
|
+
description: "MiniCPM-V - Efficient vision-language model",
|
|
188
|
+
capabilities: ["image_description", "ocr", "multi_image"]
|
|
189
|
+
}
|
|
190
|
+
};
|
|
191
|
+
var DEFAULT_VISION_MODEL = "moondream";
|
|
192
|
+
var DEFAULT_SANDBOX_TIMEOUT_MS = 5e3;
|
|
193
|
+
var DEFAULT_CLM_TIMEOUT_MS = 5e3;
|
|
194
|
+
var DEFAULT_VM_EXECUTION_TIMEOUT_MS = 5e3;
|
|
195
|
+
var LLM_DEFAULT_TIMEOUT_SECS = 120;
|
|
196
|
+
var LLM_DEFAULT_RETRY_COUNT = 3;
|
|
197
|
+
var LLM_DEFAULT_RETRY_DELAY_SECS = 1;
|
|
198
|
+
var DEFAULT_WS_RECONNECT_MS = 3e3;
|
|
199
|
+
var DEFAULT_MAX_REDUCTION_STEPS = 1e3;
|
|
200
|
+
var DEFAULT_MAX_ETA_STEPS = 100;
|
|
201
|
+
var DEFAULT_MAX_INTROSPECTION_DEPTH = 100;
|
|
202
|
+
|
|
203
|
+
export {
|
|
204
|
+
DEFAULT_PAGE_SIZE,
|
|
205
|
+
MAX_PAGE_SIZE,
|
|
206
|
+
MIN_PAGE_SIZE,
|
|
207
|
+
DETECTION_SAMPLE_CAP,
|
|
208
|
+
MAX_FILE_SIZE,
|
|
209
|
+
READ_TIMEOUT_MS,
|
|
210
|
+
READ_CHUNK_SIZE,
|
|
211
|
+
KNOWN_TYPE_SIZE_LIMIT,
|
|
212
|
+
BINARY_CHECK_SAMPLE_SIZE,
|
|
213
|
+
CONTENT_DETECTION_SAMPLE_SIZE,
|
|
214
|
+
MAX_VECTOR_CONTENT_CHARS,
|
|
215
|
+
DEFAULT_MAX_PROBLEM_BYTES,
|
|
216
|
+
WRAP_WIDTH_KNOWN,
|
|
217
|
+
INDEXEDDB_DEFAULT_DB_NAME,
|
|
218
|
+
INDEXEDDB_DEFAULT_DB_VERSION,
|
|
219
|
+
SQLITE_BUSY_TIMEOUT_MS,
|
|
220
|
+
DEFAULT_IDENTITY_PROVIDER,
|
|
221
|
+
DEFAULT_IDENTITY_SPACE_PATH,
|
|
222
|
+
DEFAULT_EXECUTION_LOG_PATH,
|
|
223
|
+
DEFAULT_API_PORT,
|
|
224
|
+
DEFAULT_PYTHON_API_PORT,
|
|
225
|
+
DEFAULT_JS_API_PORT,
|
|
226
|
+
ENV_API_PORT,
|
|
227
|
+
DEFAULT_WS_PORT,
|
|
228
|
+
DEFAULT_WS_HOST,
|
|
229
|
+
DEFAULT_SERVER_HOST,
|
|
230
|
+
CORS_ORIGINS,
|
|
231
|
+
ENV_WS_PORT,
|
|
232
|
+
API_KEY_HEADER_NAME,
|
|
233
|
+
DEFAULT_OLLAMA_BASE_URL,
|
|
234
|
+
DEFAULT_OTLP_ENDPOINT,
|
|
235
|
+
DEFAULT_VLLM_BASE_URL,
|
|
236
|
+
DEFAULT_LMSTUDIO_BASE_URL,
|
|
237
|
+
DEFAULT_FALLBACK_MODEL,
|
|
238
|
+
DEFAULT_SQLJS_WASM_URL,
|
|
239
|
+
EMBEDDING_MODELS,
|
|
240
|
+
DEFAULT_EMBEDDING_MODEL,
|
|
241
|
+
VISION_MODELS,
|
|
242
|
+
DEFAULT_VISION_MODEL,
|
|
243
|
+
DEFAULT_SANDBOX_TIMEOUT_MS,
|
|
244
|
+
DEFAULT_CLM_TIMEOUT_MS,
|
|
245
|
+
DEFAULT_VM_EXECUTION_TIMEOUT_MS,
|
|
246
|
+
LLM_DEFAULT_TIMEOUT_SECS,
|
|
247
|
+
LLM_DEFAULT_RETRY_COUNT,
|
|
248
|
+
LLM_DEFAULT_RETRY_DELAY_SECS,
|
|
249
|
+
DEFAULT_WS_RECONNECT_MS,
|
|
250
|
+
DEFAULT_MAX_REDUCTION_STEPS,
|
|
251
|
+
DEFAULT_MAX_ETA_STEPS,
|
|
252
|
+
DEFAULT_MAX_INTROSPECTION_DEPTH
|
|
253
|
+
};
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
// src/storage/EngineRegistry.ts
|
|
2
|
+
var EngineType = /* @__PURE__ */ ((EngineType2) => {
|
|
3
|
+
EngineType2["INDEXED_DB"] = "indexeddb";
|
|
4
|
+
EngineType2["SQLITE_NODE"] = "sqlite-node";
|
|
5
|
+
EngineType2["SQLITE_WASM"] = "sqlite-wasm";
|
|
6
|
+
return EngineType2;
|
|
7
|
+
})(EngineType || {});
|
|
8
|
+
var ENGINE_INFO = {
|
|
9
|
+
["indexeddb" /* INDEXED_DB */]: {
|
|
10
|
+
type: "indexeddb" /* INDEXED_DB */,
|
|
11
|
+
displayName: "IndexedDB",
|
|
12
|
+
environment: "browser",
|
|
13
|
+
package: null,
|
|
14
|
+
description: "Browser-native IndexedDB key-value store"
|
|
15
|
+
},
|
|
16
|
+
["sqlite-node" /* SQLITE_NODE */]: {
|
|
17
|
+
type: "sqlite-node" /* SQLITE_NODE */,
|
|
18
|
+
displayName: "SQLite (Node.js)",
|
|
19
|
+
environment: "node",
|
|
20
|
+
package: "better-sqlite3",
|
|
21
|
+
description: "SQLite via native better-sqlite3 bindings"
|
|
22
|
+
},
|
|
23
|
+
["sqlite-wasm" /* SQLITE_WASM */]: {
|
|
24
|
+
type: "sqlite-wasm" /* SQLITE_WASM */,
|
|
25
|
+
displayName: "SQLite (WASM)",
|
|
26
|
+
environment: "browser",
|
|
27
|
+
package: "sql.js",
|
|
28
|
+
description: "SQLite via sql.js WebAssembly"
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
async function createEngine(type, options = {}) {
|
|
32
|
+
switch (type) {
|
|
33
|
+
case "indexeddb" /* INDEXED_DB */: {
|
|
34
|
+
const { IndexedDBEngine } = await import("./IndexedDBEngine-FXAD42F3.js");
|
|
35
|
+
const engine = new IndexedDBEngine();
|
|
36
|
+
await engine.init();
|
|
37
|
+
return engine;
|
|
38
|
+
}
|
|
39
|
+
case "sqlite-node" /* SQLITE_NODE */: {
|
|
40
|
+
const { SqliteNodeEngine } = await import("./storage/SqliteNodeEngine.js");
|
|
41
|
+
return SqliteNodeEngine.create(options.dbPath || ":memory:");
|
|
42
|
+
}
|
|
43
|
+
case "sqlite-wasm" /* SQLITE_WASM */: {
|
|
44
|
+
const { SqliteWasmEngine } = await import("./storage/SqliteWasmEngine.js");
|
|
45
|
+
const engine = new SqliteWasmEngine();
|
|
46
|
+
await engine.init(options.wasmUrl, options.existingData);
|
|
47
|
+
return engine;
|
|
48
|
+
}
|
|
49
|
+
default: {
|
|
50
|
+
const validTypes = Object.values(EngineType).join(", ");
|
|
51
|
+
throw new Error(
|
|
52
|
+
`Unknown engine type: "${type}". Valid types: ${validTypes}`
|
|
53
|
+
);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
function getAvailableEngines() {
|
|
58
|
+
return Object.values(EngineType);
|
|
59
|
+
}
|
|
60
|
+
function getEngineInfo(type) {
|
|
61
|
+
return ENGINE_INFO[type];
|
|
62
|
+
}
|
|
63
|
+
function getEnginesByEnvironment(env) {
|
|
64
|
+
return Object.values(ENGINE_INFO).filter((info) => info.environment === env);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
export {
|
|
68
|
+
EngineType,
|
|
69
|
+
ENGINE_INFO,
|
|
70
|
+
createEngine,
|
|
71
|
+
getAvailableEngines,
|
|
72
|
+
getEngineInfo,
|
|
73
|
+
getEnginesByEnvironment
|
|
74
|
+
};
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import {
|
|
2
|
+
AbstractSqlEngine,
|
|
3
|
+
CORE_SCHEMAS
|
|
4
|
+
} from "./chunk-4DFTWDRB.js";
|
|
5
|
+
import {
|
|
6
|
+
MCard
|
|
7
|
+
} from "./chunk-GGQCF7ZK.js";
|
|
8
|
+
import {
|
|
9
|
+
DEFAULT_SQLJS_WASM_URL
|
|
10
|
+
} from "./chunk-PKLONZCF.js";
|
|
11
|
+
|
|
12
|
+
// src/storage/engines/SqliteWasmEngine.ts
|
|
13
|
+
var SqliteWasmEngine = class extends AbstractSqlEngine {
|
|
14
|
+
db = null;
|
|
15
|
+
SQL = null;
|
|
16
|
+
/**
|
|
17
|
+
* Initialize the database
|
|
18
|
+
* @param wasmUrl URL to sql-wasm.wasm file (optional, defaults to CDN)
|
|
19
|
+
* @param existingData Optional existing database as Uint8Array
|
|
20
|
+
*/
|
|
21
|
+
async init(wasmUrl, existingData) {
|
|
22
|
+
const initSqlJs = (await import("sql.js")).default;
|
|
23
|
+
const SQL = await initSqlJs({
|
|
24
|
+
locateFile: (file) => wasmUrl || `${DEFAULT_SQLJS_WASM_URL}${file}`
|
|
25
|
+
});
|
|
26
|
+
this.SQL = SQL;
|
|
27
|
+
this.db = existingData ? new SQL.Database(existingData) : new SQL.Database();
|
|
28
|
+
this.db.run(CORE_SCHEMAS.card);
|
|
29
|
+
this.db.run(CORE_SCHEMAS.handleRegistry);
|
|
30
|
+
this.db.run(CORE_SCHEMAS.handleHistory);
|
|
31
|
+
this.db.run(CORE_SCHEMAS.handleIndex);
|
|
32
|
+
}
|
|
33
|
+
ensureDb() {
|
|
34
|
+
if (!this.db) throw new Error("Database not initialized. Call init() first.");
|
|
35
|
+
return this.db;
|
|
36
|
+
}
|
|
37
|
+
// ======================================================================
|
|
38
|
+
// AbstractSqlEngine primitives
|
|
39
|
+
// ======================================================================
|
|
40
|
+
async queryRows(sql, ...params) {
|
|
41
|
+
const db = this.ensureDb();
|
|
42
|
+
const stmt = db.prepare(sql);
|
|
43
|
+
if (params.length > 0) stmt.bind(params);
|
|
44
|
+
const results = [];
|
|
45
|
+
while (stmt.step()) {
|
|
46
|
+
const row = stmt.getAsObject();
|
|
47
|
+
results.push(row);
|
|
48
|
+
}
|
|
49
|
+
stmt.free();
|
|
50
|
+
return results;
|
|
51
|
+
}
|
|
52
|
+
async execSql(sql, ...params) {
|
|
53
|
+
const db = this.ensureDb();
|
|
54
|
+
if (params.length === 0) {
|
|
55
|
+
db.run(sql);
|
|
56
|
+
} else {
|
|
57
|
+
db.run(sql, params);
|
|
58
|
+
}
|
|
59
|
+
return 0;
|
|
60
|
+
}
|
|
61
|
+
// ======================================================================
|
|
62
|
+
// Row → MCard conversion (sql.js returns Uint8Array for BLOBs)
|
|
63
|
+
// ======================================================================
|
|
64
|
+
rowToCard(row) {
|
|
65
|
+
const rawContent = row.content;
|
|
66
|
+
const content = rawContent instanceof Uint8Array ? rawContent : typeof rawContent === "string" ? new TextEncoder().encode(rawContent) : new Uint8Array(0);
|
|
67
|
+
return MCard.fromData(content, String(row.hash), String(row.g_time));
|
|
68
|
+
}
|
|
69
|
+
// ======================================================================
|
|
70
|
+
// sql.js-specific helpers
|
|
71
|
+
// ======================================================================
|
|
72
|
+
/**
|
|
73
|
+
* Export database as Uint8Array (for persistence)
|
|
74
|
+
*/
|
|
75
|
+
export() {
|
|
76
|
+
return this.ensureDb().export();
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Get raw sql.js Database for use with VectorStore adapter.
|
|
80
|
+
*/
|
|
81
|
+
getRawDb() {
|
|
82
|
+
return this.ensureDb();
|
|
83
|
+
}
|
|
84
|
+
// =========== pruneHandleHistory override (needs count before delete) ===========
|
|
85
|
+
async pruneHandleHistory(handle, options = {}) {
|
|
86
|
+
const { validateHandle } = await import("./Handle-3N4QOA3U.js");
|
|
87
|
+
const db = this.ensureDb();
|
|
88
|
+
const normalized = validateHandle(handle);
|
|
89
|
+
if (options.deleteAll) {
|
|
90
|
+
const stmt = db.prepare("SELECT COUNT(*) FROM handle_history WHERE handle = ?");
|
|
91
|
+
stmt.bind([normalized]);
|
|
92
|
+
stmt.step();
|
|
93
|
+
const count = stmt.get()[0];
|
|
94
|
+
stmt.free();
|
|
95
|
+
db.run("DELETE FROM handle_history WHERE handle = ?", [normalized]);
|
|
96
|
+
return count;
|
|
97
|
+
} else if (options.olderThan) {
|
|
98
|
+
const stmt = db.prepare("SELECT COUNT(*) FROM handle_history WHERE handle = ? AND changed_at < ?");
|
|
99
|
+
stmt.bind([normalized, options.olderThan]);
|
|
100
|
+
stmt.step();
|
|
101
|
+
const count = stmt.get()[0];
|
|
102
|
+
stmt.free();
|
|
103
|
+
db.run("DELETE FROM handle_history WHERE handle = ? AND changed_at < ?", [normalized, options.olderThan]);
|
|
104
|
+
return count;
|
|
105
|
+
}
|
|
106
|
+
return 0;
|
|
107
|
+
}
|
|
108
|
+
};
|
|
109
|
+
|
|
110
|
+
export {
|
|
111
|
+
SqliteWasmEngine
|
|
112
|
+
};
|