@sanqianx/project-knowledge 5.0.15 → 5.0.16-rc.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.
@@ -9,7 +9,7 @@
9
9
  "plugins": [
10
10
  {
11
11
  "name": "project-knowledge",
12
- "version": "5.0.15",
12
+ "version": "5.0.16-rc.1",
13
13
  "source": "./plugins/project-knowledge",
14
14
  "description": "Search durable project decisions and implementation history through MCP."
15
15
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sanqianx/ai-coding-knowledge-engine",
3
- "version": "0.2.7-rc.4",
3
+ "version": "0.2.7-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",
@@ -45,19 +45,65 @@ function decodeUtf8(buffer) {
45
45
  catch (error) { throw new DomainError('INVALID_ARGUMENT', 'Staged Markdown must be valid UTF-8.', { cause: error }); }
46
46
  }
47
47
 
48
+ // A quoted sample is exempt only when the same sentence of the original
49
+ // document names a concrete UI field or attribute context; a quoted marker
50
+ // without that context is still unfinished prose, whatever it quotes.
51
+ const UI_CONTEXT = /(?:<(?:input|textarea|select)\b|#[a-zA-Z][\w-]*|\b(?:input|textarea|select|field|form|dialog|ui|html|attribute)\b|属性|字段|输入|表单|对话框|界面|控件|提示|文案)/i;
52
+
53
+ function sentenceAround(text, index) {
54
+ const delimiters = /[。!?;\n.!?;]/g;
55
+ let start = 0;
56
+ let end = text.length;
57
+ let match;
58
+ while ((match = delimiters.exec(text))) {
59
+ if (match.index < index) start = match.index + 1;
60
+ else { end = match.index; break; }
61
+ }
62
+ return { text: text.slice(start, end), start };
63
+ }
64
+
65
+ // Mask frontmatter, fenced blocks and inline code with spaces, keeping
66
+ // length and newlines so each hit keeps its original offset for sentence
67
+ // context; only real prose can carry a placeholder marker.
68
+ function maskCoded(content) {
69
+ return content
70
+ .replace(/^---\r?\n[\s\S]*?\r?\n---(?:\r?\n|$)/, block => block.replace(/[^\n]/g, ' '))
71
+ .replace(/^[ \t]*(`{3,}|~{3,})[^\n]*\n[\s\S]*?^[ \t]*\1[ \t]*(?:\n|$)/gm, block => block.replace(/[^\n]/g, ' '))
72
+ .replace(/(`+)[^\n]*?\1/g, span => span.replace(/[^\n]/g, ' '));
73
+ }
74
+
75
+ function unfinishedPlaceholder(prose, source) {
76
+ const re = /\bplaceholder\b[ \t]*(=|[「"'“][^」"'”]*[」"'”])?/gi;
77
+ let match;
78
+ while ((match = re.exec(prose))) {
79
+ if (match[1] === '=') continue;
80
+ if (match[1]) {
81
+ const sample = match[1].slice(1, -1).trim();
82
+ if (!sample || /^[..…]+$/.test(sample)) return match[0];
83
+ // Context must come from this very sentence, outside the quoted value,
84
+ // so neither an earlier twin hit nor the sample itself can vouch for it.
85
+ const sentence = sentenceAround(source, match.index);
86
+ const quoteOffset = match.index + match[0].length - match[1].length - sentence.start;
87
+ const context = sentence.text.slice(0, quoteOffset) + ' '.repeat(match[1].length) + sentence.text.slice(quoteOffset + match[1].length);
88
+ if (UI_CONTEXT.test(context)) continue;
89
+ }
90
+ return match[0];
91
+ }
92
+ return null;
93
+ }
94
+
48
95
  function validateMarkdown(content, relativePath) {
49
96
  if (/[\u0000-\u0008\u000b\u000c\u000e-\u001f\u007f]/.test(content)) {
50
97
  throw new DomainError('INVALID_ARGUMENT', `Staged Markdown contains disallowed control characters: ${relativePath}.`);
51
98
  }
52
99
  if (!content.trim() || !/^#\s+\S+/m.test(content)) throw new DomainError('INVALID_ARGUMENT', `Staged Markdown must contain a title: ${relativePath}.`);
53
- // UI attributes and quoted source examples describe real changes; they are
54
- // not unfinished prose. Still reject a document containing only a quoted
55
- // unfinished marker, so fencing a placeholder cannot make it valid knowledge.
56
- const marker = /(?:\[TODO:|\bTODO:\s|\bTBD\b|\bPLACEHOLDER\b(?!\s*=))/i;
57
- const prose = content.replace(/^---\r?\n[\s\S]*?\r?\n---(?:\r?\n|$)/, '')
58
- .replace(/^[ \t]*(`{3,}|~{3,})[^\n]*\n[\s\S]*?^[ \t]*\1[ \t]*(?:\n|$)/gm, '')
59
- .replace(/(`+)[^\n]*?\1/g, '');
60
- if (marker.test(prose) || !prose.replace(/^#{1,6}[ \t]+.*$/gm, '').trim() && marker.test(content)) {
100
+ // UI attributes and quoted source samples describe real changes; they are
101
+ // not unfinished prose. Quoted samples still need a UI context in the same
102
+ // sentence, so fencing a placeholder cannot make it valid knowledge.
103
+ const marker = /(?:\[TODO:|\bTODO:\s|\bTBD\b)/i;
104
+ const prose = maskCoded(content);
105
+ const bare = !prose.replace(/^#{1,6}[ \t]+.*$/gm, '').trim();
106
+ if (marker.test(prose) || unfinishedPlaceholder(prose, content) || bare && (marker.test(content) || unfinishedPlaceholder(content, content))) {
61
107
  throw new DomainError('INVALID_ARGUMENT', `Placeholder knowledge is not allowed: ${relativePath}.`);
62
108
  }
63
109
  const fences = content.match(/^```/gm) || [];
@@ -8,20 +8,20 @@
8
8
  "plugins/project-knowledge/hooks/claude.json": "d61510327e3e1facbb4c645228e9f50cad05a88b33d80c4c22e5ba9f8b9f5359",
9
9
  "plugins/project-knowledge/hooks/codex.json": "216e03c07295606ef6ebb2c4f669ad0d790b5e7c4f3f34600488033db75e4239",
10
10
  "plugins/project-knowledge/scripts/context-hook.cjs": "da666153ad5723592cce42d25337ae649f7d93e43fab76b3c6d1263933de063f",
11
- "plugins/project-knowledge/.claude-plugin/plugin.json": "c6877fdc7c66bf4b6d296a219d465bb82a239027fe83fdd31b482690d618454b",
12
- "plugins/project-knowledge/.codex-plugin/plugin.json": "e0e933b11567453b730510d3706aa1d9869064100d9d330a1d5865d5f3c1620c",
13
- "plugins/project-knowledge/.mcp.json": "ad7e042a32ae84d501595f71cf4e865d424b8ae1621bdee0b1e06b851c67b949"
11
+ "plugins/project-knowledge/.claude-plugin/plugin.json": "3d62d2d5a00fd5c7caf552d0e83103bf1a35b6778aba0cc414b76e7f1b5c11b5",
12
+ "plugins/project-knowledge/.codex-plugin/plugin.json": "8951eacae21cb37ef16c9b334109e7441cf5b5f77ab9095959de951bebc2a71d",
13
+ "plugins/project-knowledge/.mcp.json": "d0476ae3dee485ba43bf8c5449c31fdf7a6da0957af1831001321f6c2ecf1f6a"
14
14
  },
15
15
  "modules": {
16
16
  "terminal": {
17
17
  "name": "@sanqianx/claude-ai-workbench",
18
18
  "installName": "claude-ai-workbench",
19
- "version": "0.13.2-rc.9",
19
+ "version": "0.13.2-rc.10",
20
20
  "files": {
21
21
  "LICENSE": "c1b9df1275e769f3dbab000d1e457a2d4b0f28eb5da6c77e48dc37eeba202ed7",
22
- "README.md": "5a382c531372deaa63b3e014f4dbd077d41ce02efee40347973463081848cb86",
22
+ "README.md": "7227e5dccce535f48d7e42c5f72c96f3d659d3a664476c0b304f461315a424c3",
23
23
  "apps/agent-terminal/app.css": "ede36d9fdb1f7036e3453134c0d5a86197bfc30e3ac547a24b4fc1d17847277e",
24
- "apps/agent-terminal/app.js": "e23fde6529f72031b745b47d5658e62f9079678248aab95599487d1d0660b6e7",
24
+ "apps/agent-terminal/app.js": "c1ec298f4c1f0d237e33c3cdde3f093769118ce8d25af04e22b8dd81b790eea1",
25
25
  "apps/agent-terminal/index.html": "cdffd5c535c81f56aba70ec5dd3bc060f59ec2abcdc8676b79c8f327126be605",
26
26
  "apps/ai-profile-settings-host/index.html": "bc158f68954506d2b8e43c690f28dbe931eff9a02b1524855ac17e74ea4df736",
27
27
  "apps/ai-profile-settings-host/page.css": "8b75cbf7f1ea5aaa92f2889390720ece310a8fd4b9ca38c890fa447d4323a557",
@@ -33,28 +33,28 @@
33
33
  "apps/minimal-test-host/README.md": "fa73136f4ee3865c2d91eb97b2e8c03679aa4688e44c1e1c8ec6e27d604b0de5",
34
34
  "docs/sdk/FILE_LAYOUT.md": "17882f96505c8161bfb66876684b9d2d3f50021a111b8b844502d3cb4e97870a",
35
35
  "docs/sdk/INTEGRATION.md": "d4c0c80d2d2fc610205102d703a429bfaa20f9f3a48f1718f5bab02ee90138df",
36
- "docs/sdk/openapi.yaml": "f93a0c93247267603838448814ec3f3be7d9e6827360024267cd1a3f1584721b",
36
+ "docs/sdk/openapi.yaml": "a254fa35a612c9c7993ec8fe70c27c73aff3d69045c91d4b5a47cd28eb5ee30a",
37
37
  "docs/sdk/README.md": "7ab591d39c36a3b84cfdf487ff567040ec453975f3ef0fba86dc822094667b61",
38
- "package.json": "01da288b2ade8f920695aac2f4687af3c686e153473565ac5def9ed15c1d86c1",
38
+ "package.json": "e226cd693afd17cf520607841990f7643af8bec5f214e15c6f1510cba2847f6a",
39
39
  "packages/client/index.d.ts": "fb66b7b21ac936cddcb7f74543cf4f3bb7e80c169534ec249ab8ef2356224162",
40
40
  "packages/client/index.js": "92fe5ddd32289d729f336f669e47bd9601e562f5a4309ee4fa7f7f15b567edc2",
41
- "packages/client/package.json": "563c7296c103fda4ab1c606579e0c605ed44369753baec22a6152301836dbc5f",
41
+ "packages/client/package.json": "0ebc8ac3a805b94eb278374723d1fa6bd65f197b17d860a496608969dd75e27e",
42
42
  "packages/client/README.md": "342dff9b1dcbc85fccc9b980ed3e4e455aa71133af1d0805b8431ea2ac564ef8",
43
43
  "packages/contracts/index.d.ts": "edc717067bfb864c6c95df0c408a799fbf90b7552519131e6dc35af3f9eb9006",
44
44
  "packages/contracts/index.js": "565b4a88190dbb8994cd0a9309b30b00f64305d65505fff9fa360d7ce69dfb58",
45
- "packages/contracts/package.json": "5f0d12f470196be581f0d57bdfb25d1f4e01b4672d63d5ad509ddd7241ca76f2",
45
+ "packages/contracts/package.json": "45a181c72e58e6c8485b1ecdcae048efdbf52d4278cf396e69f50c8eabff03c0",
46
46
  "packages/contracts/README.md": "44d83a3cc508cec6c5c20dfa1f2c08d5ea03e3afb2853639fdc0a9cc8eb5b9c8",
47
47
  "packages/core/index.d.ts": "c95b24a13f8aeeb128497833cf298790563baca6036ea5d29a9d8daff53199d7",
48
48
  "packages/core/index.js": "5579ceb1a63d3f962f5656c75f82cf60cd834fd270b4aa95e581bf38e4432448",
49
- "packages/core/package.json": "b272aceffc541023730d4d39b7464de64e08347af9d28ee182135beea4f7e2eb",
49
+ "packages/core/package.json": "b72dc5d2b6ccff73b3e9ad13d4814e93337b8a47a203054d036bd57246d0c89c",
50
50
  "packages/core/README.md": "e222c546104a168f1038d95c6c4efb8e5603edd6145ab2cab79cab977fb710e5",
51
51
  "packages/server/bin/agent-terminal-server.js": "043dff4d76e3fd213b666a55e581ed1e72f9e5b8de6cb798fbf42bd39ed26861",
52
52
  "packages/server/bin/claude-workbench-server.js": "b03c730b6d86faf6974afea26c74109d59b1bbc1ecc656c1d6270258708694ac",
53
53
  "packages/server/bin/claude-workbench.js": "98dbd550d4d657056a75a190e7ee0dffd9f760fba58783f3ffb8d389ad7a32de",
54
- "packages/server/index.d.ts": "ad39d5091056df5ec94e031a0de47c2c4ff75128ec3edadc3d3a364fca1b912b",
54
+ "packages/server/index.d.ts": "2dcfe86bb75f064ae2b8bf6211cc7e69da42c29352d859b7bdfd23cc8d37afa9",
55
55
  "packages/server/index.js": "77556a727cbe0e43dedfa87273a069010cad48ae46fb57a0e42a14908ab01b91",
56
56
  "packages/server/lib/agent-discovery.js": "7fa15684329fd287cd0869183808311bf975263255425562f2896bc2c1a69e7c",
57
- "packages/server/lib/agent-registry.js": "fbf4f3e96542502a41e7fdf77037d63c3b0444d26708ad9766bec90fbb6b38bb",
57
+ "packages/server/lib/agent-registry.js": "ef14c8ab8f5af56499a0cf1f7167a9495fc1745ef190e5d7b0298659a04a15ff",
58
58
  "packages/server/lib/attachment-store.js": "5c92c45c7ec5a8b0ee9c14edb42eeda5fce93d8e654718dcd75c12e3f0bfa6e7",
59
59
  "packages/server/lib/bridges/app-server-bridge.js": "85bb644ab570a7a7e6aa26123c8e3cd2e8c11c3ff4e1270954b8e26517968f69",
60
60
  "packages/server/lib/bridges/opencode-server-bridge.js": "910e4216b184d35b98fb525c629670007f4eaf52f27cfe58a631764983271ff6",
@@ -63,10 +63,10 @@
63
63
  "packages/server/lib/context-resolver.js": "d3060bfe35fb184e521847fc0900cf6114f8ebf3120ce13ed39dfc224af54660",
64
64
  "packages/server/lib/conversation-capture.js": "9f3ee29003eaea4778dc1e4b7e23e868f2ba0268bd43db07317acba62f48a094",
65
65
  "packages/server/lib/diagnostics.js": "b45687fcc07f8baeb33ffd08efdc875494d4e3205887514fdfd7e1ce6370753b",
66
- "packages/server/lib/drivers/cli-json-runner.js": "d3ad5dc67481d69abb3593ca58e7ca703bf1c438042d634d83642803849d797f",
67
- "packages/server/lib/drivers/codex-driver.js": "01d65b05cf8ba6fedf5fd7f5ce4c634f2ca69461175556286448c667031424b6",
68
- "packages/server/lib/drivers/opencode-driver.js": "322043d2d1912204c17b8c46f14d19bf132c096365cdacfdb98cfc0855e88c73",
69
- "packages/server/lib/drivers/zcode-driver.js": "9b5e6fb461c2df5b2fe530e38da9d782f10fcdbf9d187933d5d74d4e1b4bb763",
66
+ "packages/server/lib/drivers/cli-json-runner.js": "1da3da5c0bd16f3c0056b1eefd94a8bebaf8ff10b2fc14ee6ccd066d7d298d0a",
67
+ "packages/server/lib/drivers/codex-driver.js": "461c4fc4f072de87b2526252a3e3bbdca6fca79fcdec30c58d1ea2335abfe60e",
68
+ "packages/server/lib/drivers/opencode-driver.js": "3a43dd3ef139470604335e74dcd6017f1c734610da67cc5e26c3d6925ffc9ddf",
69
+ "packages/server/lib/drivers/zcode-driver.js": "5906ccb2178e19a53a1fd831e5af3cfc9fc2b56bc56a29095470721f04c1ade8",
70
70
  "packages/server/lib/drivers/zcode-profile-runtime.js": "77c5ac83551cc424375918863d4a31039984492c3a1c987a615a072ac7cb1f14",
71
71
  "packages/server/lib/event-stream.js": "b0f20bac19933a1a428c22938ae2666a1231b74a4330619b885171662133f48b",
72
72
  "packages/server/lib/folder-picker.js": "70f55df999262b90433f2b4251aa69dd70a23b55a84756b5f1d24dbeacfbda31",
@@ -79,8 +79,8 @@
79
79
  "packages/server/lib/session-archive-store.js": "d3335b832a6e9fb9792991056f6596a997a4959efa6e62b60fb60133fb724196",
80
80
  "packages/server/lib/system-doctor.js": "2b0e858d69d8fb268eaed950c9883473ee9850684b532bc2db8e14674a974919",
81
81
  "packages/server/lib/ui-preferences-store.js": "e108cb22e7cc1f3438704913d5401e01de2c0e717eb2abd3bdc4727209393819",
82
- "packages/server/lib/workbench-service.js": "206e50b8d4d9cbe18c79ffce145b4f37f711d4e18a1222010d723dfcc13f5ec4",
83
- "packages/server/package.json": "c443d9b9427fc10799fd0f5f4288e9db328ae2d3a898e39fce28c2dacc0d2388",
82
+ "packages/server/lib/workbench-service.js": "19781d2a27fa849e5508a5e233b29008b3ff18e1f10344615c371e5947601437",
83
+ "packages/server/package.json": "869f248f0291c0a36acf7d60d739e9e6d33940507f2ec01dfdb8fe8a276f5b0e",
84
84
  "packages/server/README.md": "a34cfaa4f4e859008b44e2be8e1aafb56e97fe83e6129c968a8562945fa843f3",
85
85
  "packages/ui/ai-profile-settings.d.ts": "0551b6c6eda6d18ea89a976daddf01b2161195f4874fe2d67a57cd9ecc6ce643",
86
86
  "packages/ui/ai-profile-settings.js": "e92bbac67a1199d473e4e44b32d1cc76c5b6c79306d4fef9d9067a1bb6ec42ca",
@@ -88,7 +88,7 @@
88
88
  "packages/ui/claude-terminal.js": "96bd217a4a7e4792ae3fbaaf46249ecee13b0f4e01fc6d25a1b8b22d8f8fe00c",
89
89
  "packages/ui/index.d.ts": "e547ab39640fe7519fb367b78442dc8a2c51b2efd17b66f8b0a003b154b36ead",
90
90
  "packages/ui/index.js": "f4394aabd395938f5c3fe587e430471d4033e83945a9b9c7e0149ad4040982c9",
91
- "packages/ui/package.json": "9290a2406dbef5448fd6ef20a5ecb20b8a276547d4f656e69055953347cc074b",
91
+ "packages/ui/package.json": "0ec6ce96d7a6f23075f0268a612367008bd89f70001e69faa164f9c967ca8469",
92
92
  "packages/ui/README.md": "793c4a9c286fee23f39062a1976ca3afe9d2816dcdb55e156ba940e1ef514f89",
93
93
  "packages/ui/theme.css": "8f03a081272a7db11b196f7a70d0fafb1f8d954778f329f1ba53d110d9d5fd98",
94
94
  "src/assets/claude-prompts.json": "cb111f2e0a45afe8a31c251a504d1ab5375966ed61291660e61fd2efd77f6d9f",
@@ -101,7 +101,7 @@
101
101
  "src/backend/lib/ai-vendor-presets.js": "02c6de9c2e89ad0286426e8eb4900c3c6a4960ef0e8f9d27ffb5836062abfbb2",
102
102
  "src/backend/lib/ai-workspace.js": "969917f26cd0b0a272932714819d838a2bab2a5aac5c4e946647dfa3afa479bf",
103
103
  "src/backend/lib/automation-config.js": "c23b868bbcfbcece4465c9c939faccaef582667e858f3f36fc7b6d19bcd545e6",
104
- "src/backend/lib/claude-cli-runner.js": "f7f621b6e9bbfb02603d29dc52dc09533b302a467e2d74aef913d93d92740dd0",
104
+ "src/backend/lib/claude-cli-runner.js": "c01a25ed57fdefe6fbd176e42674bfdbeaa317071b5578638eaf957b46ff5b32",
105
105
  "src/backend/lib/data-dir.js": "a62d96d1ab538e37690ad31fe4f51e84120b55b6bc767661ed98ad9242f879db",
106
106
  "src/backend/lib/llm-client.js": "76d1a73fbea445b5ac34c23d1a3b084e0884c5efed6f7d3b9ed76d406d2cd038",
107
107
  "src/backend/lib/model-context-windows.js": "f64f7c995143407b7390105087e3ebcd56a5a3ba2fd3019478a86f9e3c6b7896",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sanqianx/project-knowledge",
3
- "version": "5.0.15",
3
+ "version": "5.0.16-rc.1",
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": {
@@ -84,7 +84,7 @@
84
84
  "@sanqianx/vector-hub": "1.0.8-rc.4",
85
85
  "buffer": "^6.0.3",
86
86
  "cheerio": "^1.2.0",
87
- "claude-ai-workbench": "npm:@sanqianx/claude-ai-workbench@0.13.2-rc.9",
87
+ "claude-ai-workbench": "npm:@sanqianx/claude-ai-workbench@0.13.2-rc.10",
88
88
  "cross-spawn": "7.0.6",
89
89
  "dotenv": "^17.4.2",
90
90
  "gpt-tokenizer": "^3.4.0",
@@ -2,7 +2,7 @@
2
2
  "$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json",
3
3
  "name": "project-knowledge",
4
4
  "hooks": "./hooks/claude.json",
5
- "version": "5.0.15",
5
+ "version": "5.0.16-rc.1",
6
6
  "description": "Read durable project decisions and implementation history from Project Knowledge.",
7
7
  "author": {
8
8
  "name": "SanQianX",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "project-knowledge",
3
- "version": "5.0.15",
3
+ "version": "5.0.16-rc.1",
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.15",
9
+ "@sanqianx/project-knowledge@5.0.16-rc.1",
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.7-rc.4",
6
+ "version": "0.2.7-rc.5",
7
7
  "root": "_modules/knowledge-engine",
8
8
  "files": {
9
9
  "README.md": "e55d09671139a97825bb59b1ce2e594cf82a51d392205442bc4f09c4cf42708c",
10
- "package.json": "1faf25907fd3382dddc68c1a3e92e767c268e5e55715ba6579a33507583759c1",
10
+ "package.json": "aade97e4cde45a55154fe81e97890ab4f42184f0d344a6921c174c09462afa21",
11
11
  "src/analysis-contract.js": "913a63b63fb4a4a9df071f95bbeb8f8c40ef87e2f8445ab0742086ced70ffbf7",
12
12
  "src/analysis-output.js": "95a3c19dcc9ab85d1dba7fee5b9aec80f9c000dfba89da3fd0be25a81e2fb680",
13
13
  "src/analysis-worker.js": "a105cabe6e1573b2d986b1e7a5aaf615e2fb53524156fc8e4e2c0a71f2c97e55",
@@ -36,7 +36,7 @@
36
36
  "src/runtime/conversation-store.js": "644318f9c04376a3317ced240dd94afa99a79631f0ecc394c5aa298ae2bc0474",
37
37
  "src/runtime/evidence-bundle.js": "33d4614849d5e1d69aba8b75c3a43c18b7b6f94e5c78654c82ef631331cc94cc",
38
38
  "src/runtime/git-runner.js": "b74fe197bd4dcf3e70635ef7b1f2615edf965c1d9a3ffe5406aabd41b76d74a9",
39
- "src/runtime/knowledge-promotion.js": "3bf9de68e8604adeb197fe8437012c3688fb3ddac884d4321ec132218df10935",
39
+ "src/runtime/knowledge-promotion.js": "cb48eeba8ff5f69411d1b35c418302f0ff51e2de25e435c7641ef7f63c329471",
40
40
  "src/runtime/knowledge-retrieval-service.js": "75444f495a9ad0720af0e57b8d27d7ac1325c78a768f4f68ebd86ebc2524945e",
41
41
  "src/runtime/layout.js": "e47fe54c605218493ce46f6289798d9db2a3ecec95089d288ed03d3b75cf871a",
42
42
  "src/runtime/markdown-knowledge-indexer.js": "4d6b5b955849d274ca0614ef030c94526da7c39ab0874f02c168d0681f5b1406",
@@ -47,7 +47,7 @@
47
47
  "ui/app.js": "33a2ba38f0dafbbb2e30a1eb3fc93476bfcaf528e124e1a9b2edd2fb69221e9e",
48
48
  "ui/index.html": "ce3565cfefd4838b11d37a91a906ef26ca5a1834844fe3f7c897b56851a3c418"
49
49
  },
50
- "sourceCommit": "5c07a801aae1e0a79698763cbe161575bcda0578"
50
+ "sourceCommit": "af65e4f31fc237df07f571b063b3c0c76f922cda"
51
51
  }
52
52
  }
53
53
  }