@sanqianx/project-knowledge 5.0.9-rc.10 → 5.0.9-rc.11

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.
@@ -9,7 +9,7 @@
9
9
  "plugins": [
10
10
  {
11
11
  "name": "project-knowledge",
12
- "version": "5.0.9-rc.10",
12
+ "version": "5.0.9-rc.11",
13
13
  "source": "./plugins/project-knowledge",
14
14
  "description": "Search durable project decisions and implementation history through MCP."
15
15
  }
package/CHANGELOG.md CHANGED
@@ -1,5 +1,16 @@
1
1
  # Changelog
2
2
 
3
+ ## [5.0.9-rc.11] - 2026-10-11
4
+
5
+ - Pin vector-hub 1.0.8-rc.3 and vendor engine 0.2.3-rc.5. Raw commit
6
+ conversations and internal backups are analysis evidence, not knowledge.
7
+ Exclude them from managed indexes, search and get; retain source evidence.
8
+ - Prune stale derived records during sync and rebuild once on source-policy
9
+ upgrade, without repeating paid whole-index work on ordinary restarts.
10
+ - Keep standalone vector-hub general document support unchanged.
11
+ - Record both original failing regressions and successful Node 22/24 reruns;
12
+ installed, real model and existing-v5 gates still precede latest promotion.
13
+
3
14
  ## [5.0.9-rc.10] - 2026-10-11
4
15
 
5
16
  - Preserve acknowledged brain/domain knowledge-directory bindings when changing
@@ -1,5 +1,7 @@
1
1
  # knowledge-engine
2
2
 
3
+ 正式知识检索(包括 `get`)排除 `dev-conversations`、内部会话、备份与隐藏目录。提交会话只作为分析证据,不直接充当已晋升知识;原始证据仍由事件模块保留。
4
+
3
5
  > 开发前读 [AGENTS.md](AGENTS.md)。该指南中的脚手架状态是历史背景;当前运行契约及实现状态以本 README 为准。
4
6
 
5
7
  `project-knowledge` 模块家族的第四块:**知识引擎**。owns 两个职责面,shell 只负责连接与投影("The shell owns no features"):
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sanqianx/ai-coding-knowledge-engine",
3
- "version": "0.2.3-rc.4",
3
+ "version": "0.2.3-rc.5",
4
4
  "description": "Knowledge engine module for project-knowledge: commit-boundary triggered knowledge analysis/generation (trigger plane) and retrieval for development assistants (retrieval plane).",
5
5
  "license": "Apache-2.0",
6
6
  "main": "src/server.js",
@@ -2,7 +2,7 @@
2
2
  const fs = require('node:fs');
3
3
  const path = require('node:path');
4
4
  const { KnowledgeRetrievalService } = require('./runtime/knowledge-retrieval-service');
5
- const { listMarkdownFiles } = require('./runtime/markdown-knowledge-indexer');
5
+ const { listMarkdownFiles, isExcludedKnowledgePath } = require('./runtime/markdown-knowledge-indexer');
6
6
  const { DomainError } = require('./runtime/contracts');
7
7
 
8
8
  class EngineRetrieval extends KnowledgeRetrievalService {
@@ -116,6 +116,7 @@ class EngineRetrieval extends KnowledgeRetrievalService {
116
116
  if (input.spaceId && !scope && input.spaceId !== `project:${registration.projectId}`) throw new DomainError('PROJECT_NOT_FOUND', '知识范围与项目归属不匹配。', { status: 404 });
117
117
  const project = scope ? { projectId: scope.id, knowledgePath: scope.knowledgePath } : registration;
118
118
  const entryId = String(input.entryId || input.entry || '').replace(/\\/g, '/');
119
+ if (isExcludedKnowledgePath(entryId)) throw new DomainError('PATH_OUTSIDE_ROOT', '会话证据与内部数据不能作为正式知识读取。', { status: 403 });
119
120
  const target = path.resolve(project.knowledgePath, entryId);
120
121
  if (!entryId || !/\.md$/i.test(target) || !this.layout.isPathInside(project.knowledgePath, target, { realpath: true })) throw new DomainError('PATH_OUTSIDE_ROOT', '知识文件越界。', { status: 403 });
121
122
  if (!fs.existsSync(target) || !fs.statSync(target).isFile() || fs.lstatSync(target).isSymbolicLink()) throw new DomainError('PROJECT_NOT_FOUND', '知识文件不存在。', { status: 404 });
@@ -5,13 +5,17 @@ const { sha256 } = require('./content-hash');
5
5
  const CHUNKER_VERSION = 1;
6
6
  const DEFAULT_MAX_CHARS = 1200;
7
7
  const DEFAULT_OVERLAP_CHARS = 120;
8
- const EXCLUDED_DIRS = new Set(['.git', '_ai', '_backup', 'node_modules']);
8
+ const EXCLUDED_DIRS = new Set(['.git', '_ai', '_backup', 'node_modules', 'dev-conversations']);
9
9
  const DERIVED_INDEX_FILENAME = '00-index.md';
10
10
 
11
11
  function normalizeRel(value) {
12
12
  return String(value || '').replace(/\\/g, '/').replace(/^\.\//, '');
13
13
  }
14
14
 
15
+ function isExcludedKnowledgePath(value) {
16
+ return normalizeRel(value).split('/').some(segment => segment.startsWith('.') || EXCLUDED_DIRS.has(segment.toLowerCase()));
17
+ }
18
+
15
19
  function stripFrontmatter(markdown) {
16
20
  return String(markdown || '').replace(/^---\s*\r?\n[\s\S]*?\r?\n---\s*\r?\n?/, '');
17
21
  }
@@ -112,7 +116,7 @@ function listMarkdownFiles(root, options = {}) {
112
116
  const files = [];
113
117
  const walk = (dir) => {
114
118
  for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {
115
- if (entry.name.startsWith('.') || EXCLUDED_DIRS.has(entry.name)) continue;
119
+ if (entry.name.startsWith('.') || EXCLUDED_DIRS.has(entry.name.toLowerCase())) continue;
116
120
  const abs = path.join(dir, entry.name);
117
121
  if (entry.isDirectory()) walk(abs);
118
122
  else if (entry.isFile() && /\.md$/i.test(entry.name) && (includeDerived || !isDerivedIndex(entry.name))) files.push(abs);
@@ -224,6 +228,7 @@ module.exports = {
224
228
  CHUNKER_VERSION,
225
229
  chunkMarkdown,
226
230
  listMarkdownFiles,
231
+ isExcludedKnowledgePath,
227
232
  isDerivedIndex,
228
233
  inferEntryType,
229
234
  parseKnowledgeMetadata,
@@ -112,9 +112,9 @@
112
112
  "vectorHub": {
113
113
  "name": "@sanqianx/vector-hub",
114
114
  "installName": "@sanqianx/vector-hub",
115
- "version": "1.0.8-rc.2",
115
+ "version": "1.0.8-rc.3",
116
116
  "files": {
117
- "README.md": "b0d0fd647aef14c803ac4573f58bd2d425c2dc9bc736187a4684d7caba473184",
117
+ "README.md": "da267117f2f3cf61bc865a6fa3a2097dcb999f7f7e50eb7add0b74494a9f982e",
118
118
  "dist/cjs/bin.d.ts": "43e818adf60173644896298637f47b01d5819b17eda46eaa32d0c7d64724d012",
119
119
  "dist/cjs/bin.js": "8d0317ce087d22074b4ad350d63bf39cd6d218da565496621cd0daf4245cbdc4",
120
120
  "dist/cjs/bin.js.map": "818e872380d9c7ba045238ba65ce77111ba822b356be26327ed05936e5667e5e",
@@ -122,12 +122,12 @@
122
122
  "dist/cjs/core/embeddings.js": "5e199fd6e0de174aad1ba5440dd6358d9b180d4f82d62c7d8cd1fb8a17efb2d7",
123
123
  "dist/cjs/core/embeddings.js.map": "f1b9ec78274cdd7359a59e8a47af7c376de61587bc4b9fc78df970734169ee38",
124
124
  "dist/cjs/core/hub.d.ts": "5173ac7396ffdce780fa0b93428a330142a1a2edf378527b6291036edc9a0d7d",
125
- "dist/cjs/core/hub.js": "c84ddbcde8468ec81dcd07149bfdcc748c650c43d3dc0f35a7f495ccfdb35f97",
126
- "dist/cjs/core/hub.js.map": "9b424cefdc5046c29b0e4aa71e7881bf8499fbf968a2f8591615b9de497e49fc",
127
- "dist/cjs/core/kb-sync.d.ts": "9b0538911c52ac47ae4784a7856aa7d7e15f6b09887a6b3db8aaa12046179d30",
128
- "dist/cjs/core/kb-sync.js": "a03da0f0d5844380a5cbb3307f92472a8ef0cd5185a8b062b4e54c56dfac4032",
129
- "dist/cjs/core/kb-sync.js.map": "fbd2ae982a20b2f7977438eeb71d86a23f25c49f8e5c4d4a6abde2bd46c51065",
130
- "dist/cjs/core/types.d.ts": "293e642a88a592c2f105ac31cbaa800697c357b3d6a039ec68763c028cf70643",
125
+ "dist/cjs/core/hub.js": "f90ee514c0cf9ac67d7aae728d7af2606d7404ab84436fbdc066663006cb67e2",
126
+ "dist/cjs/core/hub.js.map": "10d5d99d4ca8edb6af289b9da28eb63037ffa6762f382434040292d517d887fa",
127
+ "dist/cjs/core/kb-sync.d.ts": "8290ae4c5840dcf98769cfec1734d5ebeb102020b348da2a8382b1cad057da1b",
128
+ "dist/cjs/core/kb-sync.js": "b6bc7f11d3e63894fe8633151ac38c853f30d8675a15e57605bd8ff68bffd4b5",
129
+ "dist/cjs/core/kb-sync.js.map": "687ce74cdf668c1b99809a23c078861e66dacd0050056ff0231d69c3d6e6b85a",
130
+ "dist/cjs/core/types.d.ts": "b54fd90a3aaef7b90fe106857de350b2300b7eaa46a5bfb6b4959bfe09faa554",
131
131
  "dist/cjs/core/types.js": "b0d2bc4142d0c62d43f996aaeb64f22c4889ac853f8a3765758b505d972d0149",
132
132
  "dist/cjs/core/types.js.map": "9c8da204af4d662188e539b27e61f9ee44ecbe68da4211676ebdda14303e6f3b",
133
133
  "dist/cjs/index.d.ts": "96aa5a8b9c843a85c7cdc00901e0e95ecae6f01655e7de2d965f96b1d19181a0",
@@ -136,12 +136,12 @@
136
136
  "dist/cjs/server/folder-picker.d.ts": "b9c59dbc834fff668b1894f516450c2edc985c7bfac31edf9b7b4e766474b32b",
137
137
  "dist/cjs/server/folder-picker.js": "053121152a210c899e8593d60670a2a510b435c3b479300c572aa4bc8443e58e",
138
138
  "dist/cjs/server/folder-picker.js.map": "dce1ad1b03c8a6a4fba7b3cacec5b65e55c1dfd1886c5e70df384efd1a5c68a6",
139
- "dist/cjs/server/manager.d.ts": "d23ee9c3f9b72ff89c511f81f5cfb6e2b62d4ba4963099c3c9f5a65531216097",
140
- "dist/cjs/server/manager.js": "aea5c81a048cf2bd7736c289dbee9cf2d0bea4caf7093a1d8f8179d6fcea48a3",
141
- "dist/cjs/server/manager.js.map": "594ac93b2986160e47f927683f2f5feee84054dbf7255d965ada9dea561845b8",
139
+ "dist/cjs/server/manager.d.ts": "06c0e5c05ad47b3ab0a826303703d1b38d68e45f3686e687d832470dac56a05b",
140
+ "dist/cjs/server/manager.js": "947aba093ae79b294a67d8ebd10ceedcc5ff92a3298dfffbc09681f66eed4448",
141
+ "dist/cjs/server/manager.js.map": "d5236999f576019189c8464c4a9aaf1776902da2c5c09d962b557210cc3d8427",
142
142
  "dist/cjs/server/server.d.ts": "13288ace9aa6ec016a2b06dc036868324ac6c23c7e73771e95d120be778f238a",
143
- "dist/cjs/server/server.js": "43d6e18a1a36fd1af6179ff98d356efaee1da9464c85d76e9bf057b71741534e",
144
- "dist/cjs/server/server.js.map": "d599dbfbe0f98abaf103849eafee70b407d332ff0d767c1d95f54c80e85bf2bb",
143
+ "dist/cjs/server/server.js": "18cb8c4ada3a7b4c8fa20a2bdfcee2d7bff440ab1d0caabf7c6eaed2b5178bed",
144
+ "dist/cjs/server/server.js.map": "e7a4689fdaedcea9644c0c1a3065cce71017af9aa13be6cb4a90889eae0e7885",
145
145
  "dist/esm/bin.d.ts": "43e818adf60173644896298637f47b01d5819b17eda46eaa32d0c7d64724d012",
146
146
  "dist/esm/bin.js": "69f6059ce2336eb7f0d9503f86c83da787aaf74a8bfd804c694ba5b2e1728be0",
147
147
  "dist/esm/bin.js.map": "fc174c2b5c66c20ff88184ddeb00577406185945ccadb0bddbb2014909339e9e",
@@ -149,12 +149,12 @@
149
149
  "dist/esm/core/embeddings.js": "b19e0cf42ca03e50644e39e39da4c003b9e273213c4532bd443c77085d2db521",
150
150
  "dist/esm/core/embeddings.js.map": "043aa6822e6b4a692be025d89efb5d7d44f4b6b39ce36bcfad2e64dde45589bb",
151
151
  "dist/esm/core/hub.d.ts": "5173ac7396ffdce780fa0b93428a330142a1a2edf378527b6291036edc9a0d7d",
152
- "dist/esm/core/hub.js": "1c4c0230ad4e9c51670a9148fd9b2464fec260b449c1a37eda94fe377b1292a8",
153
- "dist/esm/core/hub.js.map": "74beda8c34a6891b60548d84f3d8c5e6a9f5ec1055549674ee51ea6f9c4f40c6",
154
- "dist/esm/core/kb-sync.d.ts": "9b0538911c52ac47ae4784a7856aa7d7e15f6b09887a6b3db8aaa12046179d30",
155
- "dist/esm/core/kb-sync.js": "5b1df6a4d3f2a80d3c59e276590346d81d3f558c01ebb87410ebddc70f50adaa",
156
- "dist/esm/core/kb-sync.js.map": "5b959d1d3da3534c0913b72d2e9160d9e05ed2a3474c8ab8c4d50adbad2ee181",
157
- "dist/esm/core/types.d.ts": "293e642a88a592c2f105ac31cbaa800697c357b3d6a039ec68763c028cf70643",
152
+ "dist/esm/core/hub.js": "ea14e891ce2b1861b2a2a1cc9acf0d4249fab2b3354694cfbe519a26f4199453",
153
+ "dist/esm/core/hub.js.map": "a02798e02a9b4a4c41e7496c23d12c12bee25b3ed6adccb0fde91a5b757f70a6",
154
+ "dist/esm/core/kb-sync.d.ts": "8290ae4c5840dcf98769cfec1734d5ebeb102020b348da2a8382b1cad057da1b",
155
+ "dist/esm/core/kb-sync.js": "cbdfab9fecbdd2d6996744ad0bf88f446012d5616f57fdc60f5a8e8d8c462c5f",
156
+ "dist/esm/core/kb-sync.js.map": "e14d56e04a08642f6fb917310cf296ab2cf05c6a2fc6a2cab8ab929f50300843",
157
+ "dist/esm/core/types.d.ts": "b54fd90a3aaef7b90fe106857de350b2300b7eaa46a5bfb6b4959bfe09faa554",
158
158
  "dist/esm/core/types.js": "01ae2a5b120382f9a648ced7ee8507493a134f216d100fc61600c6c9738235d2",
159
159
  "dist/esm/core/types.js.map": "9c8da204af4d662188e539b27e61f9ee44ecbe68da4211676ebdda14303e6f3b",
160
160
  "dist/esm/index.d.ts": "96aa5a8b9c843a85c7cdc00901e0e95ecae6f01655e7de2d965f96b1d19181a0",
@@ -164,13 +164,13 @@
164
164
  "dist/esm/server/folder-picker.d.ts": "b9c59dbc834fff668b1894f516450c2edc985c7bfac31edf9b7b4e766474b32b",
165
165
  "dist/esm/server/folder-picker.js": "6c8247e431b7181c45fb169b29e5825a0b3589f44e1625b3a5a291d7b8358042",
166
166
  "dist/esm/server/folder-picker.js.map": "f70723213f032a0f10f538289a176a50fc8f02c200b0194479ffc139b5fbb13b",
167
- "dist/esm/server/manager.d.ts": "d23ee9c3f9b72ff89c511f81f5cfb6e2b62d4ba4963099c3c9f5a65531216097",
168
- "dist/esm/server/manager.js": "2f1772ce5885128694e8cd9c89ca7ae74694a1f85758fc8e17b577b7ab54c2e4",
169
- "dist/esm/server/manager.js.map": "f68a87c9763e8c4e3ddfc98e981ada4ea83922793035f19051b88dc3e7f47bc0",
167
+ "dist/esm/server/manager.d.ts": "06c0e5c05ad47b3ab0a826303703d1b38d68e45f3686e687d832470dac56a05b",
168
+ "dist/esm/server/manager.js": "96e1262505a02299e3d6ae5dc1c7ba3a3f69c694f57d89d97e3e4c163b40523e",
169
+ "dist/esm/server/manager.js.map": "10bb43dec7cdf07d1e6260552f40ca347a6eb491ba8bbe81b6ce2a41157a9a87",
170
170
  "dist/esm/server/server.d.ts": "13288ace9aa6ec016a2b06dc036868324ac6c23c7e73771e95d120be778f238a",
171
- "dist/esm/server/server.js": "df4caa8a596a9724c526dab5395e5018f63164ef0d10522d75ca4c44d62c1ee3",
172
- "dist/esm/server/server.js.map": "3743325b664476176931989f2d762d53b48c5eb4bcbf3d81ab222c4231d026be",
173
- "package.json": "812251c1b6f091da2f7ab06c93446e5f7c19bf4715074919e38e956e0eca373b",
171
+ "dist/esm/server/server.js": "fcf74d2d6ddc19be2ceab561efc904a2b703507901a6a35c3646c4032cac56d6",
172
+ "dist/esm/server/server.js.map": "6c19f311146c60a1ccea89ac223a16ca44e690ac5ac4d8408cd19edc7066f83e",
173
+ "package.json": "5010182529b9f1d4624ff4abd02b8eb48dbbeb4ddf92ef4bc45dd6b332aed100",
174
174
  "ui/index.html": "7301a595d625dadcd424069e7bb978004bfb6118eddef7a223bd25449ca6e0eb",
175
175
  "ui/vendor/marked.min.js": "c68075672d976e4777390560baa112194855bd4404b13647da4855aae1f9360c"
176
176
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sanqianx/project-knowledge",
3
- "version": "5.0.9-rc.10",
3
+ "version": "5.0.9-rc.11",
4
4
  "description": "Knowledge base manager with Git integration, AI-driven analysis, and bilingual (zh-CN/en-US) knowledge output",
5
5
  "main": "_site/server.js",
6
6
  "scripts": {
@@ -81,7 +81,7 @@
81
81
  "@lancedb/lancedb": "0.31.0",
82
82
  "@modelcontextprotocol/sdk": "1.29.0",
83
83
  "@sanqianx/ai-coding-event-bridge-console": "0.7.2",
84
- "@sanqianx/vector-hub": "1.0.8-rc.2",
84
+ "@sanqianx/vector-hub": "1.0.8-rc.3",
85
85
  "buffer": "^6.0.3",
86
86
  "cheerio": "^1.2.0",
87
87
  "claude-ai-workbench": "npm:@sanqianx/claude-ai-workbench@0.13.2-rc.4",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json",
3
3
  "name": "project-knowledge",
4
- "version": "5.0.9-rc.10",
4
+ "version": "5.0.9-rc.11",
5
5
  "description": "Read durable project decisions and implementation history from Project Knowledge.",
6
6
  "author": {
7
7
  "name": "SanQianX",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "project-knowledge",
3
- "version": "5.0.9-rc.10",
3
+ "version": "5.0.9-rc.11",
4
4
  "description": "Read durable project decisions and implementation history from Project Knowledge.",
5
5
  "author": {
6
6
  "name": "SanQianX",
@@ -6,7 +6,7 @@
6
6
  "args": [
7
7
  "-y",
8
8
  "--package",
9
- "@sanqianx/project-knowledge@5.0.9-rc.10",
9
+ "@sanqianx/project-knowledge@5.0.9-rc.11",
10
10
  "project-knowledge-mcp"
11
11
  ]
12
12
  }
@@ -3,11 +3,11 @@
3
3
  "modules": {
4
4
  "knowledge-engine": {
5
5
  "name": "@sanqianx/ai-coding-knowledge-engine",
6
- "version": "0.2.3-rc.4",
6
+ "version": "0.2.3-rc.5",
7
7
  "root": "_modules/knowledge-engine",
8
8
  "files": {
9
- "README.md": "df15aafdfe833186c1f655a1847171435214b96ad168c5eb44774fec82d28cf6",
10
- "package.json": "61e95ac2871a4e4e8964851161aac3c7fe4ef5015c8d03ec6ff1e9e53bbaa43f",
9
+ "README.md": "8c501eebd770b4a54f3ec97bb2c21b8953eed7d7b21ce1a0ecdb9e11ac795c7b",
10
+ "package.json": "bb46aa0bb25124f104eedd14287003201da26d6dfdbd0bde9218d65997eb0801",
11
11
  "src/analysis-contract.js": "fee063967d32eefc955cf0729f7dc8cb31bd690b85e22471c9059494a599c77a",
12
12
  "src/analysis-output.js": "95a3c19dcc9ab85d1dba7fee5b9aec80f9c000dfba89da3fd0be25a81e2fb680",
13
13
  "src/analysis-worker.js": "a105cabe6e1573b2d986b1e7a5aaf615e2fb53524156fc8e4e2c0a71f2c97e55",
@@ -19,7 +19,7 @@
19
19
  "src/index-request.js": "78f26b872299005499fff4f2d1f9e8f986784f2ff36a5cf2be2b1e7b7c7d9378",
20
20
  "src/knowledge-targets.js": "aa44ec285d16d7b1c0b63bf084058a1d6f867fa9929c753b6b0cbb24f7b20ee2",
21
21
  "src/memories.js": "0a8667e6daba99fa5022393951a28e96cdadf98af85b6af9a6be96c7f4e896fc",
22
- "src/retrieval.js": "bbb09cefc3c6ed692a51edfeecf6ac50619b8a2afbdf2034e0fdb5e00f4cfa68",
22
+ "src/retrieval.js": "4cfc2a6d11fcd480ac4e87818729e475b0c24917082e460594e62af0509afdd4",
23
23
  "src/runtime/README.md": "9be676eca76a7857b34d7357194e6f0ee733c22e61d962d53984715dbec7f673",
24
24
  "src/runtime/atomic-file.js": "9846b4b69db5ded811acf19a1181ef93615d93efaa542b858e552a7f3124ad23",
25
25
  "src/runtime/automation-config.js": "6498c5397be12b155829740595a1553d4dcd6eaa7db6ced3ef88fdc60218f00e",
@@ -36,7 +36,7 @@
36
36
  "src/runtime/knowledge-promotion.js": "c24aba505caf11cdc8faba763beffc65956c1330ef28ed5fbd6ae16eac640fa6",
37
37
  "src/runtime/knowledge-retrieval-service.js": "75444f495a9ad0720af0e57b8d27d7ac1325c78a768f4f68ebd86ebc2524945e",
38
38
  "src/runtime/layout.js": "c48fa1db62e5df1edefe13218e470c5ceea4ef2781293512c2c18e5c2ba0c7e9",
39
- "src/runtime/markdown-knowledge-indexer.js": "44a76a9adefad07e78f77b1106b10d6c1cc7873d76362df4c546892b21f3939c",
39
+ "src/runtime/markdown-knowledge-indexer.js": "4d6b5b955849d274ca0614ef030c94526da7c39ab0874f02c168d0681f5b1406",
40
40
  "src/runtime/scanner.js": "d99fa8d74a6fbbaae75ca49f62127e14cf9e48b1404e4b4d597ef39df5441410",
41
41
  "src/server.js": "7deff466d28b94ec8975cd87ebd55c59d0aa6b49a8dfa447b552b1d32aa9c4b7",
42
42
  "src/store.js": "71f0417c2c1e42b89429e3dee1adff7b2c09e86682cb3f4843ce6d9e5aafd7ec",