@dikolab/kbdb 0.1.5 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (193) hide show
  1. package/README.md +30 -9
  2. package/dist/cli.cjs +181 -50
  3. package/dist/cli.cjs.map +3 -3
  4. package/dist/cli.mjs +181 -50
  5. package/dist/cli.mjs.map +3 -3
  6. package/dist/kbdb-worker.cjs +283 -29
  7. package/dist/kbdb-worker.cjs.map +4 -4
  8. package/dist/mod.cjs +13 -2
  9. package/dist/mod.cjs.map +2 -2
  10. package/dist/mod.mjs +13 -2
  11. package/dist/mod.mjs.map +2 -2
  12. package/dist/src/shared/cli/functions/format-output.function.d.ts +7 -7
  13. package/dist/src/shared/cli/functions/run-search.function.d.ts +25 -16
  14. package/dist/src/shared/cli/index.d.ts +1 -1
  15. package/dist/src/shared/cli/typings/cli-options.interface.d.ts +2 -0
  16. package/dist/src/shared/cli/typings/search-display.model.d.ts +25 -7
  17. package/dist/src/shared/mcp/functions/handle-recall.function.d.ts +29 -0
  18. package/dist/src/shared/mcp/typings/mcp-client.interface.d.ts +30 -11
  19. package/dist/src/shared/version/constants/version.constant.d.ts +1 -1
  20. package/dist/src/shared/wasm-codec/functions/decode-recall-result.function.d.ts +28 -0
  21. package/dist/src/shared/wasm-codec/functions/decode-scored-results.function.d.ts +14 -7
  22. package/dist/src/shared/wasm-codec/functions/encode-recall-params.function.d.ts +21 -0
  23. package/dist/src/shared/wasm-codec/functions/encode-search-params.function.d.ts +1 -1
  24. package/dist/src/shared/wasm-codec/index.d.ts +5 -2
  25. package/dist/src/shared/worker-client/classes/worker-client.class.d.ts +13 -3
  26. package/dist/src/shared/worker-client/index.d.ts +2 -1
  27. package/dist/src/shared/worker-client/typings/recall-result.model.d.ts +94 -0
  28. package/dist/src/shared/worker-client/typings/search-params.model.d.ts +2 -0
  29. package/dist/src/shared/worker-client/typings/search-result.model.d.ts +23 -7
  30. package/dist/src/shared/worker-daemon/classes/worker-daemon.class.d.ts +1 -0
  31. package/dist/wasm/fs-database/kbdb_fs_database.d.ts +18 -0
  32. package/dist/wasm/fs-database/kbdb_fs_database.js +30 -0
  33. package/dist/wasm/fs-database/kbdb_fs_database_bg.wasm +0 -0
  34. package/dist/wasm/fs-database/kbdb_fs_database_bg.wasm.d.ts +2 -0
  35. package/dist/wasm/kb-worker/kbdb_worker.d.ts +38 -0
  36. package/dist/wasm/kb-worker/kbdb_worker.js +56 -0
  37. package/dist/wasm/kb-worker/kbdb_worker_bg.wasm +0 -0
  38. package/dist/wasm/kb-worker/kbdb_worker_bg.wasm.d.ts +3 -0
  39. package/dist/worker.mjs +283 -29
  40. package/dist/worker.mjs.map +4 -4
  41. package/docs/details/README.md +26 -0
  42. package/docs/details/cli.md +608 -0
  43. package/docs/details/library-api.md +406 -0
  44. package/docs/details/mcp-server.md +430 -0
  45. package/docs/details/search-and-ranking.md +457 -0
  46. package/docs/details/storage.md +529 -0
  47. package/docs/goals/agents.md +751 -0
  48. package/docs/goals/architecture.svg +198 -0
  49. package/docs/goals/cli.md +2308 -0
  50. package/docs/goals/content-composer.md +609 -0
  51. package/docs/goals/content-parser.md +279 -0
  52. package/docs/goals/database.md +1452 -0
  53. package/docs/goals/document.md +368 -0
  54. package/docs/goals/mcp.md +1467 -0
  55. package/docs/goals/overview.md +124 -0
  56. package/docs/goals/query-parser.md +271 -0
  57. package/docs/goals/query-result.md +693 -0
  58. package/docs/goals/skills.md +738 -0
  59. package/docs/goals/worker-client.md +944 -0
  60. package/docs/goals/worker-daemon.md +1447 -0
  61. package/docs/modules/overview.md +298 -0
  62. package/docs/modules/rust/fs-database/functions/document.md +48 -0
  63. package/docs/modules/rust/fs-database/functions/integrity.md +68 -0
  64. package/docs/modules/rust/fs-database/functions/io.md +87 -0
  65. package/docs/modules/rust/fs-database/functions/module.md +22 -0
  66. package/docs/modules/rust/fs-database/functions/query-exec.md +44 -0
  67. package/docs/modules/rust/fs-database/functions/section.md +59 -0
  68. package/docs/modules/rust/fs-database/indexes/btree.md +35 -0
  69. package/docs/modules/rust/fs-database/indexes/corpus.md +61 -0
  70. package/docs/modules/rust/fs-database/indexes/inverted.md +60 -0
  71. package/docs/modules/rust/fs-database/indexes/module.md +64 -0
  72. package/docs/modules/rust/fs-database/indexes/positional.md +39 -0
  73. package/docs/modules/rust/fs-database/module.md +149 -0
  74. package/docs/modules/rust/fs-database/types/catalog.md +53 -0
  75. package/docs/modules/rust/fs-database/types/module.md +12 -0
  76. package/docs/modules/rust/fs-database/types/section.md +101 -0
  77. package/docs/modules/rust/kb-worker/functions/compose.md +57 -0
  78. package/docs/modules/rust/kb-worker/functions/module.md +20 -0
  79. package/docs/modules/rust/kb-worker/functions/retrieve.md +194 -0
  80. package/docs/modules/rust/kb-worker/functions/search.md +173 -0
  81. package/docs/modules/rust/kb-worker/functions/write.md +172 -0
  82. package/docs/modules/rust/kb-worker/module.md +171 -0
  83. package/docs/modules/rust/kb-worker/types/cache.md +90 -0
  84. package/docs/modules/rust/kb-worker/types/context.md +26 -0
  85. package/docs/modules/rust/kb-worker/types/module.md +16 -0
  86. package/docs/modules/rust/kb-worker/types/status.md +29 -0
  87. package/docs/modules/rust/kb-worker/types/token.md +50 -0
  88. package/docs/modules/rust/overview.md +495 -0
  89. package/docs/modules/rust/query-parser/functions/extract.md +56 -0
  90. package/docs/modules/rust/query-parser/functions/module.md +16 -0
  91. package/docs/modules/rust/query-parser/functions/parse.md +33 -0
  92. package/docs/modules/rust/query-parser/functions/pipeline.md +103 -0
  93. package/docs/modules/rust/query-parser/functions/rank.md +85 -0
  94. package/docs/modules/rust/query-parser/module.md +136 -0
  95. package/docs/modules/rust/query-parser/types/cache.md +39 -0
  96. package/docs/modules/rust/query-parser/types/keyphrase.md +60 -0
  97. package/docs/modules/rust/query-parser/types/module.md +17 -0
  98. package/docs/modules/rust/query-parser/types/token.md +42 -0
  99. package/docs/modules/rust/shared/content-composer/functions.md +114 -0
  100. package/docs/modules/rust/shared/content-composer/module.md +147 -0
  101. package/docs/modules/rust/shared/content-composer/types.md +93 -0
  102. package/docs/modules/rust/shared/content-parser/functions.md +72 -0
  103. package/docs/modules/rust/shared/content-parser/module.md +99 -0
  104. package/docs/modules/rust/shared/content-parser/types.md +71 -0
  105. package/docs/modules/rust/shared/corpus/module.md +24 -0
  106. package/docs/modules/rust/shared/corpus/types.md +141 -0
  107. package/docs/modules/rust/shared/document/module.md +25 -0
  108. package/docs/modules/rust/shared/document/types.md +154 -0
  109. package/docs/modules/rust/shared/encode/module.md +22 -0
  110. package/docs/modules/rust/shared/encode/traits.md +304 -0
  111. package/docs/modules/rust/shared/error/module.md +28 -0
  112. package/docs/modules/rust/shared/error/types.md +302 -0
  113. package/docs/modules/rust/shared/kbid/module.md +24 -0
  114. package/docs/modules/rust/shared/kbid/types.md +147 -0
  115. package/docs/modules/rust/shared/memory/functions.md +209 -0
  116. package/docs/modules/rust/shared/memory/module.md +24 -0
  117. package/docs/modules/rust/shared/module.md +168 -0
  118. package/docs/modules/rust/shared/query/module.md +27 -0
  119. package/docs/modules/rust/shared/query/types.md +236 -0
  120. package/docs/modules/rust/shared/section/module.md +25 -0
  121. package/docs/modules/rust/shared/section/types.md +294 -0
  122. package/docs/modules/rust/shared/term/module.md +25 -0
  123. package/docs/modules/rust/shared/term/types.md +139 -0
  124. package/docs/modules/typescript/cli.md +129 -0
  125. package/docs/modules/typescript/kbdb-worker.md +135 -0
  126. package/docs/modules/typescript/overview.md +378 -0
  127. package/docs/modules/typescript/shared/cli/constants.md +23 -0
  128. package/docs/modules/typescript/shared/cli/functions.md +630 -0
  129. package/docs/modules/typescript/shared/cli/module.md +125 -0
  130. package/docs/modules/typescript/shared/cli/typings.md +172 -0
  131. package/docs/modules/typescript/shared/hash/functions.md +20 -0
  132. package/docs/modules/typescript/shared/hash/module.md +21 -0
  133. package/docs/modules/typescript/shared/mcp/classes.md +179 -0
  134. package/docs/modules/typescript/shared/mcp/functions.md +386 -0
  135. package/docs/modules/typescript/shared/mcp/module.md +160 -0
  136. package/docs/modules/typescript/shared/mcp/typings.md +522 -0
  137. package/docs/modules/typescript/shared/module.md +94 -0
  138. package/docs/modules/typescript/shared/platform/functions.md +42 -0
  139. package/docs/modules/typescript/shared/platform/module.md +25 -0
  140. package/docs/modules/typescript/shared/runtime/functions.md +26 -0
  141. package/docs/modules/typescript/shared/runtime/module.md +27 -0
  142. package/docs/modules/typescript/shared/runtime/typings.md +13 -0
  143. package/docs/modules/typescript/shared/version/module.md +27 -0
  144. package/docs/modules/typescript/shared/wasm-codec/functions.md +391 -0
  145. package/docs/modules/typescript/shared/wasm-codec/module.md +98 -0
  146. package/docs/modules/typescript/shared/worker-client/classes.md +264 -0
  147. package/docs/modules/typescript/shared/worker-client/functions.md +175 -0
  148. package/docs/modules/typescript/shared/worker-client/module.md +84 -0
  149. package/docs/modules/typescript/shared/worker-client/typings.md +508 -0
  150. package/docs/modules/typescript/shared/worker-daemon/classes.md +239 -0
  151. package/docs/modules/typescript/shared/worker-daemon/constants.md +37 -0
  152. package/docs/modules/typescript/shared/worker-daemon/functions.md +221 -0
  153. package/docs/modules/typescript/shared/worker-daemon/module.md +112 -0
  154. package/docs/modules/typescript/shared/worker-daemon/typings.md +126 -0
  155. package/docs/overview.md +188 -0
  156. package/docs/release-notes/0.1.0.md +189 -0
  157. package/docs/release-notes/0.1.1.md +46 -0
  158. package/docs/release-notes/0.1.2.md +38 -0
  159. package/docs/release-notes/0.1.3.md +42 -0
  160. package/docs/release-notes/0.2.0.md +147 -0
  161. package/docs/release-notes/README.md +9 -0
  162. package/package.json +8 -2
  163. package/src/shared/cli/functions/dispatch-command.function.ts +3 -3
  164. package/src/shared/cli/functions/format-output.function.ts +41 -34
  165. package/src/shared/cli/functions/parse-args.function.ts +7 -0
  166. package/src/shared/cli/functions/run-search.function.ts +53 -27
  167. package/src/shared/cli/index.ts +4 -1
  168. package/src/shared/cli/typings/cli-options.interface.ts +2 -0
  169. package/src/shared/cli/typings/search-display.model.ts +26 -7
  170. package/src/shared/mcp/functions/create-tool-definitions.function.ts +64 -4
  171. package/src/shared/mcp/functions/handle-recall.function.ts +66 -0
  172. package/src/shared/mcp/functions/handle-tool-call.function.ts +11 -1
  173. package/src/shared/mcp/typings/mcp-client.interface.ts +33 -15
  174. package/src/shared/version/constants/version.constant.ts +1 -1
  175. package/src/shared/wasm-codec/functions/decode-recall-result.function.ts +267 -0
  176. package/src/shared/wasm-codec/functions/decode-scored-results.function.ts +81 -27
  177. package/src/shared/wasm-codec/functions/encode-recall-params.function.ts +68 -0
  178. package/src/shared/wasm-codec/functions/encode-search-params.function.ts +4 -1
  179. package/src/shared/wasm-codec/index.ts +11 -3
  180. package/src/shared/worker-client/classes/worker-client.class.ts +24 -4
  181. package/src/shared/worker-client/index.ts +11 -1
  182. package/src/shared/worker-client/typings/recall-result.model.ts +98 -0
  183. package/src/shared/worker-client/typings/search-params.model.ts +2 -0
  184. package/src/shared/worker-client/typings/search-result.model.ts +24 -7
  185. package/src/shared/worker-daemon/classes/worker-daemon.class.ts +25 -4
  186. package/src/wasm/fs-database/kbdb_fs_database.d.ts +18 -0
  187. package/src/wasm/fs-database/kbdb_fs_database.js +30 -0
  188. package/src/wasm/fs-database/kbdb_fs_database_bg.wasm +0 -0
  189. package/src/wasm/fs-database/kbdb_fs_database_bg.wasm.d.ts +2 -0
  190. package/src/wasm/kb-worker/kbdb_worker.d.ts +38 -0
  191. package/src/wasm/kb-worker/kbdb_worker.js +56 -0
  192. package/src/wasm/kb-worker/kbdb_worker_bg.wasm +0 -0
  193. package/src/wasm/kb-worker/kbdb_worker_bg.wasm.d.ts +3 -0
@@ -0,0 +1,198 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg"
2
+ width="780" height="770" viewBox="0 0 780 770"
3
+ font-family="system-ui, -apple-system, sans-serif">
4
+
5
+ <defs>
6
+ <marker id="arrowhead" viewBox="0 0 10 7"
7
+ refX="10" refY="3.5"
8
+ markerWidth="8" markerHeight="6" orient="auto">
9
+ <path d="M0,0 L10,3.5 L0,7 z" fill="#6b7280"/>
10
+ </marker>
11
+ <marker id="arrowhead-red" viewBox="0 0 10 7"
12
+ refX="10" refY="3.5"
13
+ markerWidth="8" markerHeight="6" orient="auto">
14
+ <path d="M0,0 L10,3.5 L0,7 z" fill="#dc2626"/>
15
+ </marker>
16
+ </defs>
17
+
18
+ <!-- Background -->
19
+ <rect width="780" height="770" fill="#ffffff"/>
20
+
21
+ <!-- =========================================== -->
22
+ <!-- Process boundary: kbdb executable -->
23
+ <!-- =========================================== -->
24
+ <rect x="35" y="90" width="710" height="200" rx="12"
25
+ fill="none" stroke="#d1d5db" stroke-width="1.5"
26
+ stroke-dasharray="8,4"/>
27
+ <text x="50" y="105" font-size="11" fill="#9ca3af"
28
+ font-weight="500">kbdb executable</text>
29
+
30
+ <!-- =========================================== -->
31
+ <!-- Process boundary: worker daemon -->
32
+ <!-- =========================================== -->
33
+ <rect x="35" y="355" width="710" height="285" rx="12"
34
+ fill="none" stroke="#d1d5db" stroke-width="1.5"
35
+ stroke-dasharray="8,4"/>
36
+ <text x="50" y="370" font-size="11" fill="#9ca3af"
37
+ font-weight="500">worker daemon (detached process)</text>
38
+
39
+ <!-- =========================================== -->
40
+ <!-- External: User / Script -->
41
+ <!-- =========================================== -->
42
+ <rect x="85" y="20" width="200" height="44" rx="8"
43
+ fill="#f8f9fa" stroke="#9ca3af" stroke-width="1.5"
44
+ stroke-dasharray="6,3"/>
45
+ <text x="185" y="47" text-anchor="middle"
46
+ font-size="13" font-weight="600" fill="#495057">User / Script</text>
47
+
48
+ <!-- =========================================== -->
49
+ <!-- External: AI Agent Host -->
50
+ <!-- =========================================== -->
51
+ <rect x="495" y="20" width="200" height="44" rx="8"
52
+ fill="#f8f9fa" stroke="#9ca3af" stroke-width="1.5"
53
+ stroke-dasharray="6,3"/>
54
+ <text x="595" y="47" text-anchor="middle"
55
+ font-size="13" font-weight="600" fill="#495057">AI Agent Host</text>
56
+
57
+ <!-- =========================================== -->
58
+ <!-- CLI Mode -->
59
+ <!-- =========================================== -->
60
+ <rect x="85" y="110" width="200" height="52" rx="8"
61
+ fill="#dbeafe" stroke="#3b82f6" stroke-width="1.5"/>
62
+ <text x="185" y="134" text-anchor="middle"
63
+ font-size="13" font-weight="600" fill="#1e40af">CLI Mode</text>
64
+ <text x="185" y="150" text-anchor="middle"
65
+ font-size="11" fill="#6b7280">cli.ts</text>
66
+
67
+ <!-- =========================================== -->
68
+ <!-- MCP Mode -->
69
+ <!-- =========================================== -->
70
+ <rect x="495" y="110" width="200" height="52" rx="8"
71
+ fill="#dbeafe" stroke="#3b82f6" stroke-width="1.5"/>
72
+ <text x="595" y="134" text-anchor="middle"
73
+ font-size="13" font-weight="600" fill="#1e40af">MCP Mode</text>
74
+ <text x="595" y="150" text-anchor="middle"
75
+ font-size="11" fill="#6b7280">mcp.ts (stdio)</text>
76
+
77
+ <!-- =========================================== -->
78
+ <!-- Worker Client -->
79
+ <!-- =========================================== -->
80
+ <rect x="240" y="220" width="300" height="52" rx="8"
81
+ fill="#d1fae5" stroke="#10b981" stroke-width="1.5"/>
82
+ <text x="390" y="244" text-anchor="middle"
83
+ font-size="13" font-weight="600" fill="#065f46">Worker Client</text>
84
+ <text x="390" y="260" text-anchor="middle"
85
+ font-size="11" fill="#6b7280">src/shared/worker-client/</text>
86
+
87
+ <!-- =========================================== -->
88
+ <!-- Worker Daemon -->
89
+ <!-- =========================================== -->
90
+ <rect x="240" y="375" width="300" height="52" rx="8"
91
+ fill="#fed7aa" stroke="#f97316" stroke-width="1.5"/>
92
+ <text x="390" y="399" text-anchor="middle"
93
+ font-size="13" font-weight="600" fill="#9a3412">Worker Daemon</text>
94
+ <text x="390" y="415" text-anchor="middle"
95
+ font-size="11" fill="#6b7280">kbdb-worker.ts</text>
96
+
97
+ <!-- =========================================== -->
98
+ <!-- kb-worker.wasm -->
99
+ <!-- =========================================== -->
100
+ <rect x="265" y="475" width="250" height="46" rx="8"
101
+ fill="#ede9fe" stroke="#8b5cf6" stroke-width="1.5"/>
102
+ <text x="390" y="503" text-anchor="middle"
103
+ font-size="13" font-weight="600" fill="#5b21b6">kb-worker.wasm</text>
104
+
105
+ <!-- =========================================== -->
106
+ <!-- query-parser.wasm -->
107
+ <!-- =========================================== -->
108
+ <rect x="55" y="575" width="220" height="46" rx="8"
109
+ fill="#ede9fe" stroke="#8b5cf6" stroke-width="1.5"/>
110
+ <text x="165" y="603" text-anchor="middle"
111
+ font-size="13" font-weight="600" fill="#5b21b6">query-parser.wasm</text>
112
+
113
+ <!-- =========================================== -->
114
+ <!-- fs-database.wasm -->
115
+ <!-- =========================================== -->
116
+ <rect x="505" y="575" width="220" height="46" rx="8"
117
+ fill="#ede9fe" stroke="#8b5cf6" stroke-width="1.5"/>
118
+ <text x="615" y="603" text-anchor="middle"
119
+ font-size="13" font-weight="600" fill="#5b21b6">fs-database.wasm</text>
120
+
121
+ <!-- =========================================== -->
122
+ <!-- .kbdb/ directory -->
123
+ <!-- =========================================== -->
124
+ <rect x="505" y="700" width="220" height="50" rx="8"
125
+ fill="#f3f4f6" stroke="#6b7280" stroke-width="1.5"/>
126
+ <text x="615" y="722" text-anchor="middle"
127
+ font-size="13" font-weight="600" fill="#374151">.kbdb/</text>
128
+ <text x="615" y="738" text-anchor="middle"
129
+ font-size="11" fill="#6b7280">directory on disk</text>
130
+
131
+ <!-- =========================================== -->
132
+ <!-- Arrows -->
133
+ <!-- =========================================== -->
134
+
135
+ <!-- User → CLI -->
136
+ <line x1="185" y1="64" x2="185" y2="108"
137
+ stroke="#6b7280" stroke-width="1.5"
138
+ marker-end="url(#arrowhead)"/>
139
+ <text x="195" y="91" font-size="10" fill="#6b7280"
140
+ font-style="italic">args / stdout</text>
141
+
142
+ <!-- AI Agent → MCP -->
143
+ <line x1="595" y1="64" x2="595" y2="108"
144
+ stroke="#6b7280" stroke-width="1.5"
145
+ marker-end="url(#arrowhead)"/>
146
+ <text x="605" y="84" font-size="10" fill="#6b7280"
147
+ font-style="italic">stdio</text>
148
+ <text x="605" y="96" font-size="10" fill="#6b7280"
149
+ font-style="italic">(JSON-RPC 2.0)</text>
150
+
151
+ <!-- CLI → Worker Client -->
152
+ <line x1="215" y1="162" x2="320" y2="218"
153
+ stroke="#6b7280" stroke-width="1.5"
154
+ marker-end="url(#arrowhead)"/>
155
+
156
+ <!-- MCP → Worker Client -->
157
+ <line x1="565" y1="162" x2="460" y2="218"
158
+ stroke="#6b7280" stroke-width="1.5"
159
+ marker-end="url(#arrowhead)"/>
160
+
161
+ <!-- Worker Client → Worker Daemon (IPC boundary) -->
162
+ <line x1="390" y1="272" x2="390" y2="373"
163
+ stroke="#dc2626" stroke-width="2"
164
+ marker-end="url(#arrowhead-red)"/>
165
+ <text x="400" y="318" font-size="11" fill="#dc2626"
166
+ font-weight="600">IPC (JSON-RPC 2.0)</text>
167
+ <text x="400" y="333" font-size="10" fill="#dc2626"
168
+ font-style="italic">Unix socket / named pipe</text>
169
+
170
+ <!-- Worker Daemon → kb-worker.wasm -->
171
+ <line x1="390" y1="427" x2="390" y2="473"
172
+ stroke="#6b7280" stroke-width="1.5"
173
+ marker-end="url(#arrowhead)"/>
174
+ <text x="400" y="455" font-size="10" fill="#6b7280"
175
+ font-style="italic">loads</text>
176
+
177
+ <!-- kb-worker.wasm → query-parser.wasm -->
178
+ <line x1="315" y1="521" x2="210" y2="573"
179
+ stroke="#6b7280" stroke-width="1.5"
180
+ marker-end="url(#arrowhead)"/>
181
+ <text x="232" y="543" font-size="10" fill="#6b7280"
182
+ font-style="italic">imports</text>
183
+
184
+ <!-- kb-worker.wasm → fs-database.wasm -->
185
+ <line x1="465" y1="521" x2="570" y2="573"
186
+ stroke="#6b7280" stroke-width="1.5"
187
+ marker-end="url(#arrowhead)"/>
188
+ <text x="508" y="543" font-size="10" fill="#6b7280"
189
+ font-style="italic">imports</text>
190
+
191
+ <!-- fs-database.wasm → .kbdb/ -->
192
+ <line x1="615" y1="621" x2="615" y2="698"
193
+ stroke="#6b7280" stroke-width="1.5"
194
+ marker-end="url(#arrowhead)"/>
195
+ <text x="625" y="665" font-size="10" fill="#6b7280"
196
+ font-style="italic">host file I/O</text>
197
+
198
+ </svg>