noteconnection 1.7.0 → 1.9.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 (328) hide show
  1. package/LICENSE +674 -21
  2. package/README.md +260 -1626
  3. package/dist/src/agent_workspace.contract.parity.test.js +159 -0
  4. package/dist/src/agent_workspace.frontend.test.js +10388 -0
  5. package/dist/src/agent_workspace.locale.contract.test.js +95 -0
  6. package/dist/src/agent_workspace.runtime.behavior.test.js +5072 -0
  7. package/dist/src/android.knowledgebase.picker.contract.test.js +102 -0
  8. package/dist/src/appimage.patchelf.test.js +113 -0
  9. package/dist/src/appimage.portability.test.js +156 -0
  10. package/dist/src/backend/FileLoader.js +18 -4
  11. package/dist/src/backend/FileLoader.test.js +125 -0
  12. package/dist/src/backend/GraphBuilder.identity.test.js +86 -0
  13. package/dist/src/backend/GraphBuilder.js +66 -18
  14. package/dist/src/backend/GraphBuilder.matching.test.js +127 -0
  15. package/dist/src/backend/GraphMetrics.js +0 -3
  16. package/dist/src/backend/ResourceIdentity.js +155 -0
  17. package/dist/src/backend/ResourceIdentity.test.js +113 -0
  18. package/dist/src/backend/algorithms/CycleDetection.js +0 -1
  19. package/dist/src/backend/algorithms/HybridEngine.js +0 -3
  20. package/dist/src/backend/algorithms/LayoutEngine.js +0 -1
  21. package/dist/src/backend/algorithms/StatisticalAnalyzer.js +0 -4
  22. package/dist/src/backend/algorithms/TopologicalSort.js +0 -2
  23. package/dist/src/backend/build_dag.js +0 -1
  24. package/dist/src/capacitor.bridge.serialization.contract.test.js +3 -0
  25. package/dist/src/capacitor.runtime.contract.test.js +11 -2
  26. package/dist/src/copy.assets.contract.test.js +130 -0
  27. package/dist/src/core/Graph.js +138 -42
  28. package/dist/src/core/Graph.test.js +74 -0
  29. package/dist/src/core/NoteConnection.js +2 -2
  30. package/dist/src/core/PathBridge.js +293 -5
  31. package/dist/src/core/ResourceReference.js +17 -0
  32. package/dist/src/desktop.godot.pack.test.js +142 -0
  33. package/dist/src/desktop.runtime.graph.test.js +66 -0
  34. package/dist/src/export/WorkspaceExportBundle.js +1174 -0
  35. package/dist/src/export/WorkspaceExportBundle.test.js +1541 -0
  36. package/dist/src/export/index.js +18 -0
  37. package/dist/src/export/types.js +2 -0
  38. package/dist/src/fixrisk.issue.verifier.contract.test.js +3 -1
  39. package/dist/src/foundation.ann.runtime.contract.test.js +81 -0
  40. package/dist/src/foundation.release.evidence.contract.test.js +524 -0
  41. package/dist/src/foundation.sqlite.runtime.contract.test.js +88 -0
  42. package/dist/src/frontend/README.md +260 -1626
  43. package/dist/src/frontend/agent_workspace.js +6011 -0
  44. package/dist/src/frontend/agent_workspace_runtime.js +4434 -0
  45. package/dist/src/frontend/analysis.js +31 -4
  46. package/dist/src/frontend/app.js +2178 -62
  47. package/dist/src/frontend/focus_mode_interactions.js +33 -0
  48. package/dist/src/frontend/godot_future_path_renderer.js +540 -0
  49. package/dist/src/frontend/godot_tree_interactions.js +178 -0
  50. package/dist/src/frontend/graph_state.mjs +105 -0
  51. package/dist/src/frontend/hosted_future_path_runtime.js +157 -0
  52. package/dist/src/frontend/i18n.mjs +186 -0
  53. package/dist/src/frontend/index.html +672 -268
  54. package/dist/src/frontend/knowledge_projection_contract.js +230 -0
  55. package/dist/src/frontend/knowledge_projection_store.js +214 -0
  56. package/dist/src/frontend/layout_gpu.js +12 -4
  57. package/dist/src/frontend/libs/path_core.js +158 -42
  58. package/dist/src/frontend/locales/en.json +753 -5
  59. package/dist/src/frontend/locales/zh.json +753 -5
  60. package/dist/src/frontend/main.mjs +60 -0
  61. package/dist/src/frontend/markdown_runtime.js +827 -0
  62. package/dist/src/frontend/mobile_budget_runtime.js +33 -0
  63. package/dist/src/frontend/mobile_exact_analyzer.js +393 -0
  64. package/dist/src/frontend/mobile_identity_contract.js +221 -0
  65. package/dist/src/frontend/mobile_semantic_comparator.js +264 -0
  66. package/dist/src/frontend/notemd.css +49 -0
  67. package/dist/src/frontend/notemd.html +7 -1
  68. package/dist/src/frontend/notemd.js +64 -0
  69. package/dist/src/frontend/path.html +113 -2
  70. package/dist/src/frontend/path_app.js +2108 -130
  71. package/dist/src/frontend/path_layout.mjs +143 -0
  72. package/dist/src/frontend/path_mermaid_utils.mjs +108 -0
  73. package/dist/src/frontend/path_modules_bridge.js +486 -0
  74. package/dist/src/frontend/path_state.mjs +118 -0
  75. package/dist/src/frontend/path_styles.css +146 -0
  76. package/dist/src/frontend/path_worker_bridge.mjs +85 -0
  77. package/dist/src/frontend/reader.js +393 -33
  78. package/dist/src/frontend/runtime_bridge.js +67 -54
  79. package/dist/src/frontend/runtime_bridge.mjs +279 -0
  80. package/dist/src/frontend/settings.js +130 -12
  81. package/dist/src/frontend/simulationWorker.js +1 -1
  82. package/dist/src/frontend/source_manager.js +297 -22
  83. package/dist/src/frontend/storage_provider.js +661 -71
  84. package/dist/src/frontend/styles.css +2814 -72
  85. package/dist/src/frontend/workbench_state.mjs +101 -0
  86. package/dist/src/frontend/workspace_panes.js +10272 -0
  87. package/dist/src/frontend.locale.contract.test.js +62 -0
  88. package/dist/src/frontend.runtime.assets.contract.test.js +81 -0
  89. package/dist/src/godot.sidecar.bootstrap.contract.test.js +244 -0
  90. package/dist/src/graph.answer.operator.contract.test.js +72 -0
  91. package/dist/src/index.js +6 -2
  92. package/dist/src/index.knowledge-root.test.js +118 -0
  93. package/dist/src/indexing/IndexLifecycle.js +217 -0
  94. package/dist/src/indexing/IndexLifecycle.test.js +73 -0
  95. package/dist/src/indexing/SegmentBuilder.js +64 -0
  96. package/dist/src/indexing/UnitBuilder.js +48 -0
  97. package/dist/src/indexing/types.js +2 -0
  98. package/dist/src/knowledge.api.contract.test.js +172 -0
  99. package/dist/src/knowledge_projection.contract.test.js +134 -0
  100. package/dist/src/knowledge_projection_store.test.js +200 -0
  101. package/dist/src/learning/AnswerQualityEvaluation.js +153 -0
  102. package/dist/src/learning/AnswerQualityEvaluation.test.js +118 -0
  103. package/dist/src/learning/KnowledgeLearningPlatform.js +11181 -0
  104. package/dist/src/learning/KnowledgeLearningPlatform.persistence.test.js +745 -0
  105. package/dist/src/learning/KnowledgeLearningPlatform.program-f.test.js +99 -0
  106. package/dist/src/learning/KnowledgeLearningPlatform.test.js +3208 -0
  107. package/dist/src/learning/KnowledgeWorkspaceConversationRegression.js +2998 -0
  108. package/dist/src/learning/KnowledgeWorkspaceConversationRegression.test.js +3936 -0
  109. package/dist/src/learning/MeasurementEvidenceConflicts.test.js +78 -0
  110. package/dist/src/learning/PublicAnswerContract.test.js +85 -0
  111. package/dist/src/learning/PublicEvidenceSelection.test.js +94 -0
  112. package/dist/src/learning/PublicMeasurementDisclosure.test.js +54 -0
  113. package/dist/src/learning/agentConversationExecution.js +211 -0
  114. package/dist/src/learning/agentConversationExecution.test.js +209 -0
  115. package/dist/src/learning/agentConversationSerialization.js +266 -0
  116. package/dist/src/learning/agentConversationSerialization.test.js +165 -0
  117. package/dist/src/learning/agentResponseBudget.js +179 -0
  118. package/dist/src/learning/agentResponseBudget.test.js +97 -0
  119. package/dist/src/learning/agentWorkspaceCapabilityContracts.js +65 -0
  120. package/dist/src/learning/answerReleaseReview.js +5260 -0
  121. package/dist/src/learning/answerReleaseReview.test.js +4174 -0
  122. package/dist/src/learning/answerTaskPlan.js +473 -0
  123. package/dist/src/learning/api.js +2 -0
  124. package/dist/src/learning/conversationComposer.js +1721 -0
  125. package/dist/src/learning/conversationComposer.test.js +3220 -0
  126. package/dist/src/learning/domains/ConversationManager.js +53 -0
  127. package/dist/src/learning/domains/KnowledgeIngestor.js +238 -0
  128. package/dist/src/learning/domains/KnowledgeQuerier.js +187 -0
  129. package/dist/src/learning/domains/MasteryEngine.js +387 -0
  130. package/dist/src/learning/domains/MemoryPolicyManager.js +408 -0
  131. package/dist/src/learning/domains/QualityEvaluator.js +307 -0
  132. package/dist/src/learning/domains/TutorRouter.js +313 -0
  133. package/dist/src/learning/domains/index.js +33 -0
  134. package/dist/src/learning/domains/types.js +7 -0
  135. package/dist/src/learning/errors.js +29 -0
  136. package/dist/src/learning/evidenceContextAssembler.js +1368 -0
  137. package/dist/src/learning/evidenceContextAssembler.test.js +6332 -0
  138. package/dist/src/learning/graphAnswerCoverage.js +37 -0
  139. package/dist/src/learning/graphAnswerCoverage.test.js +93 -0
  140. package/dist/src/learning/graphAnswerCoverageCalibration.js +59 -0
  141. package/dist/src/learning/graphAnswerCoverageCalibration.test.js +46 -0
  142. package/dist/src/learning/graphAnswerFacts.js +94 -0
  143. package/dist/src/learning/graphAnswerFacts.test.js +39 -0
  144. package/dist/src/learning/graphAnswerPlan.js +908 -0
  145. package/dist/src/learning/graphAnswerPlan.test.js +907 -0
  146. package/dist/src/learning/graphAnswerQualityCalibration.js +255 -0
  147. package/dist/src/learning/graphAnswerQualityCalibration.test.js +72 -0
  148. package/dist/src/learning/graphAnswerQualityPolicy.js +30 -0
  149. package/dist/src/learning/graphClaimMatcher.js +104 -0
  150. package/dist/src/learning/graphConditionedContext.js +109 -0
  151. package/dist/src/learning/graphConditionedContext.test.js +99 -0
  152. package/dist/src/learning/graphContextAssembler.js +860 -0
  153. package/dist/src/learning/graphContextAssembler.test.js +1033 -0
  154. package/dist/src/learning/graphExpansionPolicy.js +22 -0
  155. package/dist/src/learning/graphExpansionPolicy.test.js +33 -0
  156. package/dist/src/learning/identityMetadata.test.js +26 -0
  157. package/dist/src/learning/index.js +29 -0
  158. package/dist/src/learning/mobileAnswerProjection.js +104 -0
  159. package/dist/src/learning/mobileAnswerProjection.test.js +102 -0
  160. package/dist/src/learning/queryBackend.js +1922 -0
  161. package/dist/src/learning/queryBackend.test.js +976 -0
  162. package/dist/src/learning/ragContextPack.js +356 -0
  163. package/dist/src/learning/ragContextPack.test.js +311 -0
  164. package/dist/src/learning/ragEvidenceQuality.js +96 -0
  165. package/dist/src/learning/ragEvidenceQuality.test.js +29 -0
  166. package/dist/src/learning/ragPublicText.js +101 -0
  167. package/dist/src/learning/ragPublicText.test.js +57 -0
  168. package/dist/src/learning/ragSufficiencyJudge.js +171 -0
  169. package/dist/src/learning/ragSufficiencyJudge.test.js +177 -0
  170. package/dist/src/learning/ragSufficiencyProviderJudge.js +217 -0
  171. package/dist/src/learning/ragSufficiencyProviderJudge.test.js +207 -0
  172. package/dist/src/learning/requestNormalization.js +304 -0
  173. package/dist/src/learning/requestNormalization.test.js +101 -0
  174. package/dist/src/learning/runtimeCapability.js +4677 -0
  175. package/dist/src/learning/runtimeCapability.test.js +3635 -0
  176. package/dist/src/learning/store.js +1344 -0
  177. package/dist/src/learning/store.test.js +1425 -0
  178. package/dist/src/learning/tutorAdapter.js +2 -0
  179. package/dist/src/learning/types.js +2 -0
  180. package/dist/src/learning/vectorAccelerationAdapter.js +958 -0
  181. package/dist/src/learning/vectorAccelerationAdapter.test.js +412 -0
  182. package/dist/src/learning/workspaceHydration.js +168 -0
  183. package/dist/src/learning/workspaceHydration.test.js +30 -0
  184. package/dist/src/lfs.asset.policy.contract.test.js +153 -0
  185. package/dist/src/license.policy.contract.test.js +71 -0
  186. package/dist/src/markdown/MarkdownGateway.js +4 -0
  187. package/dist/src/markdown/MarkdownGateway.test.js +59 -0
  188. package/dist/src/memory/MemoryGovernance.js +74 -0
  189. package/dist/src/memory/MemoryGovernance.test.js +46 -0
  190. package/dist/src/memory/types.js +2 -0
  191. package/dist/src/mermaid.frontend.guard.contract.test.js +77 -0
  192. package/dist/src/middleware/SseResponseWriter.js +122 -0
  193. package/dist/src/middleware/SseResponseWriter.test.js +54 -0
  194. package/dist/src/middleware/auth.js +38 -0
  195. package/dist/src/middleware/auth.test.js +33 -0
  196. package/dist/src/middleware/body-parser.js +45 -0
  197. package/dist/src/middleware/cors.js +44 -0
  198. package/dist/src/middleware/index.js +22 -0
  199. package/dist/src/middleware/request-trace.js +96 -0
  200. package/dist/src/mobile.android.evidence.contract.test.js +146 -0
  201. package/dist/src/mobile.android.signing.contract.test.js +66 -0
  202. package/dist/src/mobile.artifact.contract.test.js +144 -0
  203. package/dist/src/mobile.budget.contract.test.js +90 -0
  204. package/dist/src/mobile.canonical-id.readiness.test.js +54 -0
  205. package/dist/src/mobile.graph.parity.contract.test.js +207 -0
  206. package/dist/src/mobile.identity.contract.test.js +66 -0
  207. package/dist/src/mobile.identity.corpus.manifest.test.js +72 -0
  208. package/dist/src/mobile.identity.corpus.test.js +40 -0
  209. package/dist/src/mobile.native.recovery.contract.test.js +64 -0
  210. package/dist/src/mobile.pipeline.test.js +11 -1
  211. package/dist/src/mobile.profile.contract.test.js +225 -0
  212. package/dist/src/mobile.semantic.parity.test.js +92 -0
  213. package/dist/src/mobile_exact_analyzer.test.js +113 -0
  214. package/dist/src/notemd/AppConfigToml.js +6 -4
  215. package/dist/src/notemd/ContentGenerator.js +4 -9
  216. package/dist/src/notemd/FileProcessor.js +4 -9
  217. package/dist/src/notemd/MermaidProcessor.js +400 -50
  218. package/dist/src/notemd/NotemdService.js +506 -26
  219. package/dist/src/notemd/PromptManager.js +15 -0
  220. package/dist/src/notemd/Translator.js +4 -9
  221. package/dist/src/notemd/cli/commands.js +357 -0
  222. package/dist/src/notemd/cli/dispatcher.js +225 -0
  223. package/dist/src/notemd/cli/index.js +169 -0
  224. package/dist/src/notemd/cli/parser.js +68 -0
  225. package/dist/src/notemd/cli/types.js +2 -0
  226. package/dist/src/notemd/constants.js +43 -0
  227. package/dist/src/notemd/diagram/diagramGenerationService.js +78 -0
  228. package/dist/src/notemd/diagram/diagramSpec.js +79 -0
  229. package/dist/src/notemd/diagram/diagramSpecResponseParser.js +131 -0
  230. package/dist/src/notemd/diagram/intent.js +95 -0
  231. package/dist/src/notemd/diagram/planner.js +71 -0
  232. package/dist/src/notemd/diagram/prompts/diagramSpecPrompt.js +42 -0
  233. package/dist/src/notemd/diagram/types.js +18 -0
  234. package/dist/src/notemd/index.js +26 -0
  235. package/dist/src/notemd/operations/capabilityManifest.js +23 -0
  236. package/dist/src/notemd/operations/cliContracts.js +17 -0
  237. package/dist/src/notemd/operations/configProfileCommands.js +85 -0
  238. package/dist/src/notemd/operations/registry.contract.test.js +95 -0
  239. package/dist/src/notemd/operations/registry.js +991 -0
  240. package/dist/src/notemd/operations/types.js +2 -0
  241. package/dist/src/notemd/progressReporter.js +9 -0
  242. package/dist/src/notemd/providerDiagnostics.js +220 -0
  243. package/dist/src/notemd/providerProfiles.js +42 -0
  244. package/dist/src/notemd/providerTemplates.js +231 -0
  245. package/dist/src/notemd/search/DuckDuckGoProvider.js +39 -0
  246. package/dist/src/notemd/search/SearchManager.js +13 -0
  247. package/dist/src/notemd/search/SearchProvider.js +2 -0
  248. package/dist/src/notemd/search/TavilyProvider.js +44 -0
  249. package/dist/src/notemd.agent.manifest.test.js +85 -0
  250. package/dist/src/notemd.api.contract.test.js +14 -1
  251. package/dist/src/notemd.app_config_toml.test.js +2 -1
  252. package/dist/src/notemd.batch.workflow.test.js +117 -0
  253. package/dist/src/notemd.cli.e2e.test.js +136 -0
  254. package/dist/src/notemd.core.test.js +51 -0
  255. package/dist/src/notemd.diagram.pipeline.test.js +233 -0
  256. package/dist/src/notemd.providerTemplates.test.js +34 -0
  257. package/dist/src/notemd.server.integration.test.js +262 -39
  258. package/dist/src/notemd.workflow.pipeline.test.js +162 -0
  259. package/dist/src/pathbridge.handshake.contract.test.js +45 -2
  260. package/dist/src/pathbridge.host-adapter.contract.test.js +133 -0
  261. package/dist/src/pathcore.bundle.contract.test.js +8 -0
  262. package/dist/src/pathmode.background.contract.test.js +69 -0
  263. package/dist/src/pathmode.settings.api.contract.test.js +9 -0
  264. package/dist/src/pkg.sidecar.contract.test.js +9 -3
  265. package/dist/src/platform/ExportProfile.js +86 -0
  266. package/dist/src/platform/MobileBudget.js +11 -0
  267. package/dist/src/platform/PlatformCapabilities.js +59 -0
  268. package/dist/src/platform/PlatformCapabilities.test.js +36 -0
  269. package/dist/src/platform/RenderMaterializer.js +33 -0
  270. package/dist/src/platform/RenderMaterializer.test.js +32 -0
  271. package/dist/src/query_backend.external_http.integration.test.js +410 -0
  272. package/dist/src/reader_renderer.js +404 -3
  273. package/dist/src/reader_renderer.test.js +87 -0
  274. package/dist/src/release.godot.mirror.contract.test.js +97 -0
  275. package/dist/src/resources/ResourceRegistry.js +263 -0
  276. package/dist/src/resources/ResourceRegistry.test.js +97 -0
  277. package/dist/src/resources/types.js +2 -0
  278. package/dist/src/routes/agentWorkspaceDiagnostics.js +173 -0
  279. package/dist/src/routes/index.js +19 -0
  280. package/dist/src/routes/knowledge.js +981 -0
  281. package/dist/src/routes/knowledgePayload.js +185 -0
  282. package/dist/src/routes/knowledgePayload.test.js +53 -0
  283. package/dist/src/routes/markdown.js +295 -0
  284. package/dist/src/routes/notemd.js +1321 -0
  285. package/dist/src/routes/registry.contract.test.js +133 -0
  286. package/dist/src/routes/registry.shadow.contract.test.js +22 -0
  287. package/dist/src/routes/render.js +248 -0
  288. package/dist/src/routes/runtimeRunbookRouteOps.js +149 -0
  289. package/dist/src/routes/runtimeRunbookRouteOps.test.js +194 -0
  290. package/dist/src/routes/settings.js +6 -0
  291. package/dist/src/routes/staticFiles.js +94 -0
  292. package/dist/src/routes/types.js +2 -0
  293. package/dist/src/runtime.capabilities.test.js +18 -2
  294. package/dist/src/runtime.transport.adapter.contract.test.js +81 -0
  295. package/dist/src/server.js +10342 -1325
  296. package/dist/src/server.migration.test.js +584 -10
  297. package/dist/src/server.port.fallback.contract.test.js +63 -0
  298. package/dist/src/session/SessionStateStore.js +81 -0
  299. package/dist/src/session/SessionStateStore.test.js +58 -0
  300. package/dist/src/session/types.js +2 -0
  301. package/dist/src/settings.runtime.contract.test.js +50 -0
  302. package/dist/src/shared/types.contract.test.js +107 -0
  303. package/dist/src/shared/types.js +22 -0
  304. package/dist/src/sidecar.build.lock.contract.test.js +201 -0
  305. package/dist/src/sidecar.freshness.contract.test.js +184 -0
  306. package/dist/src/sidecar.replacement.boundary.contract.test.js +131 -0
  307. package/dist/src/sidecar.supply.readiness.contract.test.js +155 -0
  308. package/dist/src/simulation.worker.offline.test.js +104 -0
  309. package/dist/src/source_manager.loadflow.test.js +46 -0
  310. package/dist/src/startup.layout.snapshot.contract.test.js +57 -0
  311. package/dist/src/storage.provider.capacitor.content.contract.test.js +4 -1
  312. package/dist/src/storage.provider.contract.test.js +152 -1
  313. package/dist/src/tauri.frontend.build.contract.test.js +68 -0
  314. package/dist/src/tauri.sidecar.cleanup.contract.test.js +21 -0
  315. package/dist/src/tauri.window.evidence.execution.test.js +68 -0
  316. package/dist/src/utils/RuntimePaths.js +10 -13
  317. package/dist/src/utils/RuntimePaths.test.js +27 -0
  318. package/dist/src/utils/platform.js +153 -0
  319. package/dist/src/windows.installer.build.test.js +109 -0
  320. package/dist/src/windows.installer.payload.test.js +76 -0
  321. package/dist/src/windows.installer.runtime.test.js +69 -0
  322. package/dist/src/workflows/WorkflowArtifactStore.js +96 -0
  323. package/dist/src/workflows/WorkflowArtifactStore.test.js +80 -0
  324. package/dist/src/workflows/types.js +2 -0
  325. package/dist/src/workspace/WorkspaceRegistry.js +135 -0
  326. package/dist/src/workspace/WorkspaceRegistry.test.js +29 -0
  327. package/dist/src/workspace/types.js +2 -0
  328. package/package.json +80 -15
@@ -0,0 +1,135 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WorkspaceRegistry = void 0;
4
+ class WorkspaceRegistry {
5
+ constructor(nextId) {
6
+ this.nextId = nextId;
7
+ this.workspaces = new Map();
8
+ this.bindings = new Map();
9
+ this.bindingIdsByDocumentId = new Map();
10
+ }
11
+ normalizePathPrefix(value) {
12
+ return String(value || '')
13
+ .trim()
14
+ .replace(/\\/g, '/')
15
+ .replace(/\/{2,}/g, '/')
16
+ .replace(/\/+$/g, '')
17
+ .toLowerCase();
18
+ }
19
+ inferCorpusIdFromSourcePath(sourcePath) {
20
+ const normalized = String(sourcePath || '').replace(/\\/g, '/');
21
+ const segments = normalized.split('/').filter(Boolean);
22
+ const normalizeSegment = (value) => String(value || '')
23
+ .trim()
24
+ .toLowerCase()
25
+ .replace(/\.[^.]+$/g, '');
26
+ const kbIndex = segments.findIndex((segment) => segment.toLowerCase() === 'knowledge_base');
27
+ if (kbIndex >= 0 && segments[kbIndex + 1]) {
28
+ return normalizeSegment(segments[kbIndex + 1]) || 'default';
29
+ }
30
+ return segments[0] ? normalizeSegment(segments[0]) || 'default' : 'default';
31
+ }
32
+ ensureWorkspace(params) {
33
+ const corpusId = String(params.corpusId || '').trim().toLowerCase()
34
+ || this.inferCorpusIdFromSourcePath(params.sourcePath);
35
+ const workspaceId = String(params.workspaceId || '').trim().toLowerCase() || corpusId;
36
+ const sourcePathPrefix = this.normalizePathPrefix(params.sourcePath).split('/').slice(0, 2).join('/');
37
+ const existing = this.workspaces.get(workspaceId);
38
+ const nextLanguage = String(params.language || 'unknown').trim().toLowerCase() || 'unknown';
39
+ const languages = Array.from(new Set([...(existing?.languages || []), nextLanguage])).sort((left, right) => left.localeCompare(right));
40
+ const record = {
41
+ workspaceId,
42
+ corpusId,
43
+ name: corpusId,
44
+ sourcePathPrefix,
45
+ languages,
46
+ exportProfileId: String(params.exportProfileId || existing?.exportProfileId || 'desktop-full').trim() || 'desktop-full',
47
+ status: 'active',
48
+ createdAt: existing?.createdAt || params.createdAt,
49
+ updatedAt: params.createdAt,
50
+ };
51
+ this.workspaces.set(workspaceId, record);
52
+ return record;
53
+ }
54
+ bindProjection(params) {
55
+ const documentId = String(params.documentId || '').trim();
56
+ const existingBindingId = documentId ? this.bindingIdsByDocumentId.get(documentId) || '' : '';
57
+ const bindingId = existingBindingId || this.nextId('workspace_binding');
58
+ const previousBinding = existingBindingId ? this.bindings.get(existingBindingId) || null : null;
59
+ const record = {
60
+ bindingId,
61
+ workspaceId: String(params.workspaceId || '').trim().toLowerCase(),
62
+ corpusId: String(params.corpusId || '').trim().toLowerCase(),
63
+ resourceId: params.resourceId,
64
+ projectionId: params.projectionId,
65
+ documentId: documentId || null,
66
+ sourcePath: params.sourcePath,
67
+ createdAt: previousBinding?.createdAt || params.boundAt,
68
+ updatedAt: params.boundAt,
69
+ };
70
+ this.bindings.set(bindingId, record);
71
+ if (documentId) {
72
+ this.bindingIdsByDocumentId.set(documentId, bindingId);
73
+ }
74
+ return record;
75
+ }
76
+ resolveBindingByDocumentId(documentId) {
77
+ const bindingId = this.bindingIdsByDocumentId.get(String(documentId || '').trim());
78
+ if (!bindingId) {
79
+ return null;
80
+ }
81
+ return this.bindings.get(bindingId) || null;
82
+ }
83
+ /** Mirrors a committed document move for workspace-scoped path filters. */
84
+ updateDocumentSourcePath(documentId, sourcePath, updatedAt) {
85
+ const binding = this.resolveBindingByDocumentId(documentId);
86
+ if (!binding) {
87
+ return false;
88
+ }
89
+ this.bindings.set(binding.bindingId, {
90
+ ...binding,
91
+ sourcePath,
92
+ updatedAt,
93
+ });
94
+ return true;
95
+ }
96
+ getWorkspaceById(workspaceId) {
97
+ return this.workspaces.get(String(workspaceId || '').trim().toLowerCase()) || null;
98
+ }
99
+ listBindingsByWorkspace(workspaceId) {
100
+ const normalizedWorkspaceId = String(workspaceId || '').trim().toLowerCase();
101
+ if (!normalizedWorkspaceId) {
102
+ return [];
103
+ }
104
+ return Array.from(this.bindings.values())
105
+ .filter((binding) => binding.workspaceId === normalizedWorkspaceId)
106
+ .sort((left, right) => left.bindingId.localeCompare(right.bindingId));
107
+ }
108
+ listActiveWorkspaces() {
109
+ return Array.from(this.workspaces.values()).filter((workspace) => workspace.status === 'active');
110
+ }
111
+ buildSnapshot() {
112
+ return {
113
+ workspaces: Array.from(this.workspaces.values()).map((workspace) => ({ ...workspace, languages: [...workspace.languages] })),
114
+ bindings: Array.from(this.bindings.values()).map((binding) => ({ ...binding })),
115
+ };
116
+ }
117
+ restoreFromSnapshot(snapshot) {
118
+ this.workspaces.clear();
119
+ this.bindings.clear();
120
+ this.bindingIdsByDocumentId.clear();
121
+ (snapshot?.workspaces || []).forEach((workspace) => {
122
+ this.workspaces.set(workspace.workspaceId, {
123
+ ...workspace,
124
+ languages: [...workspace.languages],
125
+ });
126
+ });
127
+ (snapshot?.bindings || []).forEach((binding) => {
128
+ this.bindings.set(binding.bindingId, { ...binding });
129
+ if (binding.documentId) {
130
+ this.bindingIdsByDocumentId.set(binding.documentId, binding.bindingId);
131
+ }
132
+ });
133
+ }
134
+ }
135
+ exports.WorkspaceRegistry = WorkspaceRegistry;
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const WorkspaceRegistry_1 = require("./WorkspaceRegistry");
4
+ describe('WorkspaceRegistry', () => {
5
+ test('ensures workspace from source path and exposes bindings by workspace and document', () => {
6
+ let idCounter = 0;
7
+ const registry = new WorkspaceRegistry_1.WorkspaceRegistry((prefix = 'workspace') => `${prefix}_${++idCounter}`);
8
+ const workspace = registry.ensureWorkspace({
9
+ sourcePath: 'Knowledge_Base/optics/absorption.md',
10
+ language: 'zh',
11
+ exportProfileId: 'mobile-slim',
12
+ createdAt: '2026-05-26T00:00:00.000Z',
13
+ });
14
+ expect(workspace.workspaceId).toBe('optics');
15
+ expect(workspace.exportProfileId).toBe('mobile-slim');
16
+ const binding = registry.bindProjection({
17
+ workspaceId: workspace.workspaceId,
18
+ corpusId: workspace.corpusId,
19
+ resourceId: 'resource_1',
20
+ projectionId: 'projection_1',
21
+ documentId: 'doc_optics',
22
+ sourcePath: 'Knowledge_Base/optics/absorption.md',
23
+ boundAt: '2026-05-26T00:01:00.000Z',
24
+ });
25
+ expect(registry.resolveBindingByDocumentId('doc_optics')).toEqual(binding);
26
+ expect(registry.getWorkspaceById('optics')).toEqual(workspace);
27
+ expect(registry.listBindingsByWorkspace('optics')).toHaveLength(1);
28
+ });
29
+ });
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "noteconnection",
3
- "version": "1.7.0",
3
+ "version": "1.9.0",
4
4
  "description": "Hierarchical Knowledge Graph Visualization System",
5
5
  "main": "dist/src/server.js",
6
6
  "bin": {
@@ -10,29 +10,49 @@
10
10
  "start": "node scripts/start-server.js",
11
11
  "start:prod": "node dist/src/server.js",
12
12
  "tauri": "tauri",
13
- "tauri:dev": "npm run build && npm run ensure:sidecar:dev && npm run cleanup:tauri:sidecars && npx kill-port 3000 && npx tauri dev",
14
- "tauri:dev:mini": "npm run build:mini && npm run ensure:sidecar:dev && npm run cleanup:tauri:sidecars && npx kill-port 3000 && npx tauri dev",
13
+ "tauri:dev": "npm run build && npm run ensure:sidecar:dev && npm run cleanup:tauri:sidecars && npx kill-port 3000 && node scripts/run-tauri-dev.js",
14
+ "tauri:dev:mini": "npm run build:mini && npm run ensure:sidecar:dev && npm run cleanup:tauri:sidecars && npx kill-port 3000 && node scripts/run-tauri-dev.js",
15
+ "tauri:dev:full": "npm run build:full && npm run ensure:sidecar:dev && npm run cleanup:tauri:sidecars && npx kill-port 3000 && node scripts/run-tauri-dev.js",
15
16
  "tauri:dev:gpu": "set NOTE_CONNECTION_GPU=1&& npm run tauri:dev",
16
17
  "tauri:dev:mini:gpu": "set NOTE_CONNECTION_GPU=1&& npm run tauri:dev:mini",
17
18
  "tauri:build": "npm run build && npm run build:sidecar && npm run cleanup:tauri:sidecars && node scripts/run-tauri-build.js",
18
19
  "tauri:build:mini": "npm run build:mini && npm run build:sidecar && npm run cleanup:tauri:sidecars && node scripts/run-tauri-build.js",
20
+ "tauri:build:full": "npm run build:full && npm run build:sidecar && npm run cleanup:tauri:sidecars && node scripts/run-tauri-build.js --frontend-build-mode full",
19
21
  "verify:android:env": "node scripts/verify-tauri-android-prereqs.js",
20
22
  "verify:capacitor:device": "node scripts/verify-capacitor-device-acceptance.js",
21
23
  "capture:capacitor:evidence": "node scripts/capture-capacitor-device-evidence.js",
22
24
  "verify:capacitor:evidence": "node scripts/verify-capacitor-evidence-freshness.js",
23
25
  "tauri:android:patch:pathmode": "node scripts/apply-tauri-android-pathmode.js",
24
- "tauri:android:init": "npm run build:mini && npm run verify:android:env && node scripts/run-tauri-android.js init",
25
- "tauri:android:dev": "npm run build:mini && npm run verify:android:env && npm run build:sidecar && node scripts/run-tauri-android.js dev",
26
- "tauri:android:build": "npm run build:mini && npm run verify:android:env && npm run build:sidecar && node scripts/run-tauri-android.js build",
26
+ "configure:tauri:android:signing": "node scripts/configure-tauri-android-signing.js",
27
+ "tauri:android:init": "npm run mobile:prepare:slim && npm run verify:android:env && node scripts/run-tauri-android.js init",
28
+ "tauri:android:dev": "npm run mobile:prepare:slim && npm run verify:android:env && node scripts/run-tauri-android.js dev",
29
+ "tauri:android:build": "npm run mobile:prepare:slim && npm run verify:android:env && node scripts/run-tauri-android.js build",
27
30
  "tauri:android:dev:universal": "set NOTE_CONNECTION_TAURI_ANDROID_TARGET=universal&& npm run tauri:android:dev",
28
31
  "tauri:android:build:universal": "set NOTE_CONNECTION_TAURI_ANDROID_TARGET=universal&& npm run tauri:android:build",
29
32
  "mobile:build:capacitor": "build_apk.bat",
30
33
  "mobile:build:tauri-android": "npm run tauri:android:build",
34
+ "mobile:build:release": "npm run mobile:build:tauri-android",
35
+ "mobile:build:compatibility": "npm run mobile:build:both",
31
36
  "mobile:build:both": "npm run mobile:build:capacitor && npm run mobile:build:tauri-android",
37
+ "mobile:prepare:slim": "npm run build:mini && node scripts/prepare-mobile-slim.js && node scripts/verify-mobile-slim-budget.js",
38
+ "verify:mobile:slim:budget": "node scripts/verify-mobile-slim-budget.js",
39
+ "verify:mobile:artifact": "node scripts/verify-mobile-artifact.js",
40
+ "verify:mobile:artifact:release": "node scripts/verify-mobile-artifact.js --require-rss --require-arm64 --require-arm64-only --require-signed",
41
+ "verify:mobile:projection-replay": "node scripts/verify-mobile-projection-replay.js",
42
+ "verify:mobile:native-recovery": "node scripts/verify-mobile-native-recovery.js",
43
+ "verify:identity:corpus": "node scripts/verify-identity-corpus.js",
44
+ "verify:canonical:id:readiness": "node scripts/verify-canonical-id-readiness.js",
45
+ "capture:tauri:android:evidence": "node scripts/capture-tauri-android-rss-evidence.js",
32
46
  "build": "node scripts/copy-reader-runtime-assets.js && tsc && node scripts/bundle_path_core.js && node scripts/copy-assets.js && node scripts/sync-wasm-parity-artifact.js",
33
47
  "build:mini": "node scripts/copy-reader-runtime-assets.js && tsc && node scripts/bundle_path_core.js && node scripts/copy-assets.js --mini && node scripts/sync-wasm-parity-artifact.js",
48
+ "build:full": "node scripts/copy-reader-runtime-assets.js && tsc && node scripts/bundle_path_core.js && node scripts/copy-assets.js --include-generated-graph-assets && node scripts/sync-wasm-parity-artifact.js",
49
+ "build:vite": "vite build --config vite.config.ts",
50
+ "build:vite:dev": "vite build --config vite.config.ts --mode development --minify false",
51
+ "build:with-vite": "npm run build && npm run build:vite && npm run verify:frontend:runtime-assets",
52
+ "dev:vite": "vite --config vite.config.ts",
34
53
  "prepare:godot:bin": "node scripts/ensure-godot-sidecar.js",
35
54
  "verify:tauri:bin": "node scripts/validate-tauri-sidecars.js",
55
+ "verify:appimage": "node scripts/verify-appimage.js",
36
56
  "build:sidecar": "node scripts/copy-reader-runtime-assets.js && tsc && node scripts/build-sidecar.js && npm run prepare:godot:bin && npm run verify:tauri:bin",
37
57
  "build:sidecar:all": "node scripts/copy-reader-runtime-assets.js && tsc && node scripts/build-sidecar.js --all && npm run prepare:godot:bin && node scripts/validate-tauri-sidecars.js --all",
38
58
  "ensure:sidecar:dev": "node scripts/ensure-sidecar-ready.js",
@@ -55,6 +75,9 @@
55
75
  "verify:fixrisk:issues": "node scripts/verify-fixrisk-issues.js",
56
76
  "verify:fixrisk:issues:strict": "node scripts/verify-fixrisk-issues.js --strict-pending",
57
77
  "verify:fixrisk:issues:strict:evidence": "node scripts/verify-fixrisk-issues.js --strict-pending --require-evidence-root",
78
+ "verify:lfs:policy": "node scripts/verify-lfs-asset-policy.js",
79
+ "verify:lfs:policy:strict": "node scripts/verify-lfs-asset-policy.js --strict",
80
+ "verify:sidecar:supply": "node scripts/verify-sidecar-supply-readiness.js",
58
81
  "verify:markdown:mermaid:fence": "node scripts/verify-markdown-mermaid-fence.js",
59
82
  "fix:markdown:mermaid:fence": "node scripts/verify-markdown-mermaid-fence.js --fix",
60
83
  "perf:startup:compare": "node scripts/compare-startup-perf.js",
@@ -64,6 +87,7 @@
64
87
  "perf:startup:cohorts:verify": "node scripts/verify-startup-perf-cohorts.js",
65
88
  "perf:startup:signoff:nohw": "node scripts/verify-startup-release-readiness.js --strict-engineering",
66
89
  "verify:pathbridge:strict": "node scripts/verify-pathbridge-strict-schema.js",
90
+ "verify:route:shadow": "npm run build:mini && node scripts/verify-route-registry-shadow.js",
67
91
  "generate:sbom": "node scripts/generate-sbom.js",
68
92
  "generate:sbom:attestation": "node scripts/generate-sbom-attestation.js",
69
93
  "verify:sbom": "node scripts/verify-sbom-policy.js",
@@ -75,26 +99,64 @@
75
99
  "ops:fixrisk:close": "node scripts/run-fixrisk-ops-closure.js",
76
100
  "ops:fixrisk:close:dry": "node scripts/run-fixrisk-ops-closure.js --dry-run",
77
101
  "test:mobile:contracts": "jest src/mobile.pipeline.test.ts src/runtime.capabilities.test.ts src/source_manager.loadflow.test.ts src/capacitor.runtime.contract.test.ts src/android.pathmode.contract.test.ts src/android.pathmode.smoke.contract.test.ts src/graph.accessibility.contract.test.ts src/detox.pipeline.contract.test.ts src/privacy.manifest.contract.test.ts --runInBand && npm run verify:detox:pipeline && npm run verify:privacy:manifest",
78
- "test:migration": "jest src/core/Graph.test.ts src/core/PathEngine.test.ts src/core/TreeLayout.test.ts src/backend/algorithms/CycleDetection.test.ts src/backend/algorithms/TopologicalSort.test.ts src/backend/algorithms/WasmParityHistory.test.ts src/utils/RuntimePaths.test.ts src/server.migration.test.ts src/pkg.sidecar.contract.test.ts src/pkg.snapshot.safety.contract.test.ts src/mobile.pipeline.test.ts src/capacitor.device.utils.contract.test.ts src/capacitor.evidence.contract.test.ts src/runtime.capabilities.test.ts src/runtime.heap.policy.contract.test.ts src/runtime.spool.policy.contract.test.ts src/runtime.transport.adapter.contract.test.ts src/storage.provider.contract.test.ts src/storage.provider.capacitor.content.contract.test.ts src/storage.provider.capacitor.worker.contract.test.ts src/wasm.parity.runtime.contract.test.ts src/wasm.parity.runtime.functional.test.ts src/wasm.parity.output.equivalence.contract.test.ts src/wasm.parity.benchmark.contract.test.ts src/wasm.parity.benchmark.guards.contract.test.ts src/wasm.parity.history.gate.contract.test.ts src/wasm.parity.artifact.probe.contract.test.ts src/wasm.parity.artifact.provisioning.contract.test.ts src/source_manager.loadflow.test.ts src/capacitor.runtime.contract.test.ts src/welcome.loadflow.test.ts src/pathmode.history.contract.test.ts src/android.pathmode.contract.test.ts src/android.pathmode.smoke.contract.test.ts src/pathbridge.handshake.contract.test.ts src/pathbridge.strict.policy.contract.test.ts src/graph.accessibility.contract.test.ts src/detox.pipeline.contract.test.ts src/privacy.manifest.contract.test.ts src/server.port.fallback.contract.test.ts src/sidecar.signature.contract.test.ts src/sbom.policy.contract.test.ts src/sbom.attestation.policy.contract.test.ts src/sidecar.relaunch.contract.test.ts src/tauri.test.runner.contract.test.ts --runInBand",
102
+ "test:migration": "jest src/core/Graph.test.ts src/core/PathEngine.test.ts src/core/TreeLayout.test.ts src/backend/algorithms/CycleDetection.test.ts src/backend/algorithms/TopologicalSort.test.ts src/backend/algorithms/WasmParityHistory.test.ts src/utils/RuntimePaths.test.ts src/server.migration.test.ts src/pkg.sidecar.contract.test.ts src/sidecar.build.lock.contract.test.ts src/sidecar.freshness.contract.test.ts src/foundation.sqlite.runtime.contract.test.ts src/foundation.ann.runtime.contract.test.ts src/foundation.release.evidence.contract.test.ts src/pkg.snapshot.safety.contract.test.ts src/godot.sidecar.bootstrap.contract.test.ts src/release.godot.mirror.contract.test.ts src/sidecar.replacement.boundary.contract.test.ts src/sidecar.supply.readiness.contract.test.ts src/lfs.asset.policy.contract.test.ts src/tauri.frontend.build.contract.test.ts src/mobile.pipeline.test.ts src/mobile.artifact.contract.test.ts src/capacitor.device.utils.contract.test.ts src/capacitor.evidence.contract.test.ts src/runtime.capabilities.test.ts src/runtime.heap.policy.contract.test.ts src/runtime.spool.policy.contract.test.ts src/runtime.transport.adapter.contract.test.ts src/storage.provider.contract.test.ts src/storage.provider.capacitor.content.contract.test.ts src/storage.provider.capacitor.worker.contract.test.ts src/wasm.parity.runtime.contract.test.ts src/wasm.parity.runtime.functional.test.ts src/wasm.parity.output.equivalence.contract.test.ts src/wasm.parity.benchmark.contract.test.ts src/wasm.parity.benchmark.guards.contract.test.ts src/wasm.parity.history.gate.contract.test.ts src/wasm.parity.artifact.probe.contract.test.ts src/wasm.parity.artifact.provisioning.contract.test.ts src/source_manager.loadflow.test.ts src/capacitor.runtime.contract.test.ts src/welcome.loadflow.test.ts src/pathmode.history.contract.test.ts src/android.pathmode.contract.test.ts src/android.pathmode.smoke.contract.test.ts src/pathbridge.handshake.contract.test.ts src/graph.accessibility.contract.test.ts src/detox.pipeline.contract.test.ts src/privacy.manifest.contract.test.ts src/server.port.fallback.contract.test.ts src/sidecar.signature.contract.test.ts src/sbom.policy.contract.test.ts src/sbom.attestation.policy.contract.test.ts src/sidecar.relaunch.contract.test.ts src/tauri.test.runner.contract.test.ts src/learning/conversationComposer.test.ts src/routes/registry.shadow.contract.test.ts src/routes/runtimeRunbookRouteOps.test.ts --runInBand",
79
103
  "test:tauri": "node scripts/run-tauri-tests.js",
80
- "test:gates": "npm run test:migration && npm run test:wasm:parity:gates && npm run test:tauri && npm run verify:android:env && npm run verify:detox:pipeline && npm run verify:privacy:manifest && npm run verify:pathbridge:strict && npm run verify:sbom -- --contract-only && npm run verify:sbom:attestation -- --contract-only && npm run verify:sidecar:signatures -- --contract-only",
81
- "prepublishOnly": "npm run build:mini",
104
+ "test:agent-workspace:contracts": "jest src/agent_workspace.contract.parity.test.ts src/agent_workspace.frontend.test.ts src/agent_workspace.runtime.behavior.test.ts --runInBand",
105
+ "test:foundation:rollout-boundary": "jest src/notemd.server.integration.test.ts src/learning/queryBackend.test.ts src/foundation.release.evidence.contract.test.ts src/runtime.capabilities.test.ts --runInBand --ci",
106
+ "test:conversation-turn-cache:durability": "jest src/notemd.server.integration.test.ts --runInBand --testNamePattern=\"turn-cache alert trend restart durability\"",
107
+ "test:license:contract": "jest src/license.policy.contract.test.ts --runInBand",
108
+ "verify:agent-workspace:runtime": "node scripts/verify-agent-workspace-runtime.js",
109
+ "verify:frontend:runtime-assets": "node scripts/verify-frontend-runtime-assets.js",
110
+ "verify:agent-answer:browser": "node scripts/verify-agent-answer-browser.js",
111
+ "verify:knowledge-workspace:runtime": "npm run build && node scripts/verify-knowledge-workspace-runtime.js --full",
112
+ "verify:foundation:ann-runtime": "npm run build && node scripts/ensure-sidecar-ready.js && node scripts/verify-foundation-ann-runtime.js",
113
+ "verify:foundation:ann-runtime:matrix": "npm run build && node scripts/ensure-sidecar-ready.js && node scripts/verify-foundation-ann-runtime.js --matrix",
114
+ "verify:foundation:ann-runtime:release": "npm run build && node scripts/ensure-sidecar-ready.js && node scripts/verify-foundation-ann-runtime.js --matrix --release-gates",
115
+ "verify:foundation:release-evidence": "node scripts/verify-foundation-release-evidence.js",
116
+ "verify:foundation:release-evidence:strict": "node scripts/verify-foundation-release-evidence.js --min-report-count 3",
117
+ "verify:foundation:release-evidence:multi-host": "node scripts/verify-foundation-release-evidence.js --min-report-count 3 --min-host-count 2",
118
+ "verify:foundation:sqlite-runtime": "npm run build && node scripts/ensure-sidecar-ready.js && node scripts/verify-foundation-sqlite-runtime.js",
119
+ "verify:foundation:sqlite-runtime:heavy": "npm run build && node scripts/ensure-sidecar-ready.js && node scripts/verify-foundation-sqlite-runtime.js --heavy",
120
+ "verify:foundation:sqlite-runtime:matrix": "npm run build && node scripts/ensure-sidecar-ready.js && node scripts/verify-foundation-sqlite-runtime.js --matrix",
121
+ "verify:foundation:sqlite-runtime:soak": "npm run build && node scripts/ensure-sidecar-ready.js && node scripts/verify-foundation-sqlite-runtime.js --soak",
122
+ "verify:foundation:sqlite-runtime:release": "npm run build && node scripts/ensure-sidecar-ready.js && node scripts/verify-foundation-sqlite-runtime.js --soak",
123
+ "verify:core-real-machine": "node scripts/verify-core-real-machine-tests.js",
124
+ "verify:core-real-machine:clean": "node scripts/verify-core-real-machine-tests.js --restore-sidecar-binaries",
125
+ "verify:agent-workspace:browser": "node scripts/verify-agent-workspace-browser.js",
126
+ "verify:agent-workspace:tauri": "node scripts/verify-agent-workspace-tauri.js",
127
+ "verify:agent-workspace:tauri:window-evidence": "node scripts/verify-agent-workspace-tauri-window-evidence.js",
128
+ "verify:agent-workspace:tauri:window-evidence:strict": "node scripts/verify-agent-workspace-tauri-window-evidence.js --strict",
129
+ "verify:agent-workspace:tauri:rust": "node scripts/verify-agent-workspace-tauri-rust.js",
130
+ "verify:agent-workspace:tauri:rust:strict": "node scripts/verify-agent-workspace-tauri-rust.js --strict",
131
+ "verify:agent-workspace:tauri:evidence:index": "node scripts/verify-agent-workspace-tauri-evidence-index.js",
132
+ "verify:agent-workspace:tauri:evidence:index:strict": "node scripts/verify-agent-workspace-tauri-evidence-index.js --strict",
133
+ "verify:agent-workspace:tauri:evidence:summary": "node scripts/render-agent-workspace-tauri-evidence-summary.js",
134
+ "verify:agent-workspace:tauri:evidence:release-fragment": "node scripts/render-agent-workspace-tauri-evidence-release-fragment.js",
135
+ "verify:agent-workspace:tauri:evidence:manifest": "node scripts/render-agent-workspace-tauri-evidence-manifest.js",
136
+ "verify:agent-workspace:tauri:evidence:manifest:strict": "node scripts/render-agent-workspace-tauri-evidence-manifest.js --strict",
137
+ "verify:agent-workspace:tauri:evidence:publish-release-notes": "node scripts/publish-agent-workspace-tauri-evidence-release-notes.js",
138
+ "debug:runtime:page": "node scripts/capture-noteconnection-runtime-debug.js",
139
+ "debug:runtime:window": "powershell -NoProfile -ExecutionPolicy Bypass -File scripts/capture-noteconnection-window.ps1",
140
+ "debug:runtime:webview": "node scripts/capture-noteconnection-webview-debug.js",
141
+ "test:gates": "npm run test:migration && npm run test:foundation:rollout-boundary && npm run test:convergence && npm run test:wasm:parity:gates && npm run test:tauri && npm run test:agent-workspace:contracts && npm run test:conversation-turn-cache:durability && npm run test:license:contract && npm run verify:android:env && npm run verify:detox:pipeline && npm run verify:privacy:manifest && npm run verify:pathbridge:strict && npm run verify:sbom -- --contract-only && npm run verify:sbom:attestation -- --contract-only && npm run verify:sidecar:signatures -- --contract-only",
142
+ "prepublishOnly": "npm run build",
82
143
  "test": "jest",
83
144
  "cleanup:tauri:sidecars": "node scripts/cleanup-tauri-sidecars.js",
84
145
  "docs:diataxis:check": "node scripts/verify-diataxis-map.js",
85
146
  "docs:site:build": "node scripts/run-mkdocs.js build --config-file mkdocs.yml",
86
147
  "docs:site:serve": "node scripts/run-mkdocs.js serve --config-file mkdocs.yml",
87
148
  "docs:github-pages:publish": "node -e \"console.log('Use GitHub Actions workflow: Docs GitHub Pages Publish (.github/workflows/docs-github-pages-publish.yml).')\"",
88
- "docs:github-pages:rollback": "node -e \"console.log('Run workflow_dispatch for docs-github-pages-publish.yml and set git_ref to the target stable tag/commit.')\""
149
+ "docs:github-pages:rollback": "node -e \"console.log('Run workflow_dispatch for docs-github-pages-publish.yml and set git_ref to the target stable tag/commit.')\"",
150
+ "test:convergence": "jest src/learning/KnowledgeLearningPlatform.persistence.test.ts src/learning/agentConversationExecution.test.ts src/learning/vectorAccelerationAdapter.test.ts src/learning/agentConversationSerialization.test.ts src/middleware/SseResponseWriter.test.ts src/backend/GraphBuilder.matching.test.ts src/server.migration.test.ts src/learning/ragPublicText.test.ts src/learning/AnswerQualityEvaluation.test.ts src/index.knowledge-root.test.ts src/backend/FileLoader.test.ts src/learning/MeasurementEvidenceConflicts.test.ts src/learning/PublicEvidenceSelection.test.ts src/learning/PublicMeasurementDisclosure.test.ts src/learning/PublicAnswerContract.test.ts src/tauri.window.evidence.execution.test.ts --runInBand --ci",
151
+ "evaluate:answer-quality": "node scripts/evaluate-answer-quality.js",
152
+ "measure:convergence": "node --expose-gc scripts/measure-convergence-runtime.js"
89
153
  },
90
154
  "pkg": {
91
155
  "scripts": [
92
156
  "dist/src/backend/workers/**/*.js"
93
157
  ],
94
158
  "assets": [
95
- "dist/src/**/*",
96
- "data.js",
97
- "graph_data.json"
159
+ "dist/src/**/*"
98
160
  ]
99
161
  },
100
162
  "files": [
@@ -123,10 +185,10 @@
123
185
  "bugs": {
124
186
  "url": "https://github.com/Jacobinwwey/NoteConnection/issues"
125
187
  },
126
- "license": "ISC",
188
+ "license": "GPL-3.0-only",
127
189
  "type": "commonjs",
128
190
  "devDependencies": {
129
- "@tauri-apps/cli": "^2.10.0",
191
+ "@tauri-apps/cli": "^2.12.1",
130
192
  "@types/jest": "^30.0.0",
131
193
  "@types/jsdom": "^21.1.7",
132
194
  "@types/node": "^25.0.3",
@@ -154,5 +216,8 @@
154
216
  "mermaid": "^11.12.3",
155
217
  "tslib": "^2.8.1",
156
218
  "ws": "^8.19.0"
219
+ },
220
+ "engines": {
221
+ "node": ">=22.19.0 <23 || >=24.0.0 <25"
157
222
  }
158
223
  }