stellavault 0.2.0 → 0.3.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.
- package/package.json +1 -1
- package/packages/core/dist/api/dashboard.d.ts +3 -0
- package/packages/core/{src/api/dashboard.ts → dist/api/dashboard.js} +8 -11
- package/packages/core/dist/api/graph-data.d.ts +11 -0
- package/packages/core/dist/api/graph-data.js +255 -0
- package/packages/core/dist/api/pwa.d.ts +3 -0
- package/packages/core/{src/api/pwa.ts → dist/api/pwa.js} +27 -32
- package/packages/core/dist/api/server.d.ts +16 -0
- package/packages/core/dist/api/server.js +718 -0
- package/packages/core/dist/capture/voice.d.ts +24 -0
- package/packages/core/dist/capture/voice.js +135 -0
- package/packages/core/{src/cloud/index.ts → dist/cloud/index.d.ts} +1 -0
- package/packages/core/dist/cloud/index.js +2 -0
- package/packages/core/dist/cloud/sync.d.ts +29 -0
- package/packages/core/dist/cloud/sync.js +137 -0
- package/packages/core/dist/config.d.ts +27 -0
- package/packages/core/dist/config.js +55 -0
- package/packages/core/dist/federation/credits.d.ts +26 -0
- package/packages/core/dist/federation/credits.js +56 -0
- package/packages/core/dist/federation/identity.d.ts +14 -0
- package/packages/core/dist/federation/identity.js +74 -0
- package/packages/core/{src/federation/index.ts → dist/federation/index.d.ts} +1 -2
- package/packages/core/dist/federation/index.js +5 -0
- package/packages/core/dist/federation/node.d.ts +31 -0
- package/packages/core/dist/federation/node.js +216 -0
- package/packages/core/dist/federation/privacy.d.ts +8 -0
- package/packages/core/dist/federation/privacy.js +40 -0
- package/packages/core/dist/federation/reputation.d.ts +37 -0
- package/packages/core/dist/federation/reputation.js +139 -0
- package/packages/core/dist/federation/search.d.ts +19 -0
- package/packages/core/dist/federation/search.js +101 -0
- package/packages/core/dist/federation/sharing.d.ts +72 -0
- package/packages/core/dist/federation/sharing.js +246 -0
- package/packages/core/dist/federation/trust.d.ts +15 -0
- package/packages/core/dist/federation/trust.js +60 -0
- package/packages/core/dist/federation/types.d.ts +40 -0
- package/packages/core/dist/federation/types.js +3 -0
- package/packages/core/dist/i18n/index.d.ts +6 -0
- package/packages/core/dist/i18n/index.js +81 -0
- package/packages/core/{src/index.ts → dist/index.d.ts} +46 -65
- package/packages/core/dist/index.js +69 -0
- package/packages/core/dist/indexer/chunker.d.ts +14 -0
- package/packages/core/dist/indexer/chunker.js +148 -0
- package/packages/core/dist/indexer/embedder.d.ts +8 -0
- package/packages/core/dist/indexer/embedder.js +3 -0
- package/packages/core/dist/indexer/index.d.ts +28 -0
- package/packages/core/dist/indexer/index.js +74 -0
- package/packages/core/dist/indexer/local-embedder.d.ts +3 -0
- package/packages/core/dist/indexer/local-embedder.js +29 -0
- package/packages/core/dist/indexer/scanner.d.ts +11 -0
- package/packages/core/dist/indexer/scanner.js +137 -0
- package/packages/core/dist/indexer/watcher.d.ts +19 -0
- package/packages/core/dist/indexer/watcher.js +49 -0
- package/packages/core/dist/intelligence/code-linker.d.ts +20 -0
- package/packages/core/dist/intelligence/code-linker.js +88 -0
- package/packages/core/dist/intelligence/contradiction-detector.d.ts +20 -0
- package/packages/core/dist/intelligence/contradiction-detector.js +115 -0
- package/packages/core/dist/intelligence/decay-engine.d.ts +27 -0
- package/packages/core/dist/intelligence/decay-engine.js +190 -0
- package/packages/core/dist/intelligence/duplicate-detector.d.ts +20 -0
- package/packages/core/dist/intelligence/duplicate-detector.js +55 -0
- package/packages/core/dist/intelligence/fsrs.d.ts +43 -0
- package/packages/core/dist/intelligence/fsrs.js +70 -0
- package/packages/core/dist/intelligence/gap-detector.d.ts +25 -0
- package/packages/core/dist/intelligence/gap-detector.js +78 -0
- package/packages/core/dist/intelligence/learning-path.d.ts +31 -0
- package/packages/core/dist/intelligence/learning-path.js +53 -0
- package/packages/core/dist/intelligence/notifications.d.ts +31 -0
- package/packages/core/dist/intelligence/notifications.js +65 -0
- package/packages/core/dist/intelligence/predictive-gaps.d.ts +14 -0
- package/packages/core/dist/intelligence/predictive-gaps.js +74 -0
- package/packages/core/dist/intelligence/semantic-versioning.d.ts +37 -0
- package/packages/core/dist/intelligence/semantic-versioning.js +68 -0
- package/packages/core/dist/intelligence/types.d.ts +28 -0
- package/packages/core/dist/intelligence/types.js +3 -0
- package/packages/core/dist/mcp/custom-tools.d.ts +29 -0
- package/packages/core/dist/mcp/custom-tools.js +70 -0
- package/packages/core/{src/mcp/index.ts → dist/mcp/index.d.ts} +1 -0
- package/packages/core/dist/mcp/index.js +2 -0
- package/packages/core/dist/mcp/server.d.ts +49 -0
- package/packages/core/dist/mcp/server.js +151 -0
- package/packages/core/dist/mcp/tools/agentic-graph.d.ts +87 -0
- package/packages/core/dist/mcp/tools/agentic-graph.js +88 -0
- package/packages/core/dist/mcp/tools/brief.d.ts +31 -0
- package/packages/core/dist/mcp/tools/brief.js +39 -0
- package/packages/core/dist/mcp/tools/decay.d.ts +33 -0
- package/packages/core/dist/mcp/tools/decay.js +32 -0
- package/packages/core/dist/mcp/tools/decision-journal.d.ts +78 -0
- package/packages/core/dist/mcp/tools/decision-journal.js +79 -0
- package/packages/core/dist/mcp/tools/detect-gaps.d.ts +24 -0
- package/packages/core/dist/mcp/tools/detect-gaps.js +47 -0
- package/packages/core/dist/mcp/tools/export.d.ts +29 -0
- package/packages/core/dist/mcp/tools/export.js +60 -0
- package/packages/core/dist/mcp/tools/federated-search.d.ts +29 -0
- package/packages/core/dist/mcp/tools/federated-search.js +36 -0
- package/packages/core/dist/mcp/tools/generate-claude-md.d.ts +35 -0
- package/packages/core/dist/mcp/tools/generate-claude-md.js +107 -0
- package/packages/core/dist/mcp/tools/get-document.d.ts +35 -0
- package/packages/core/dist/mcp/tools/get-document.js +25 -0
- package/packages/core/dist/mcp/tools/get-evolution.d.ts +28 -0
- package/packages/core/dist/mcp/tools/get-evolution.js +70 -0
- package/packages/core/dist/mcp/tools/get-related.d.ts +32 -0
- package/packages/core/dist/mcp/tools/get-related.js +33 -0
- package/packages/core/dist/mcp/tools/learning-path.d.ts +23 -0
- package/packages/core/dist/mcp/tools/learning-path.js +45 -0
- package/packages/core/dist/mcp/tools/link-code.d.ts +34 -0
- package/packages/core/dist/mcp/tools/link-code.js +44 -0
- package/packages/core/dist/mcp/tools/list-topics.d.ts +15 -0
- package/packages/core/dist/mcp/tools/list-topics.js +18 -0
- package/packages/core/dist/mcp/tools/search.d.ts +39 -0
- package/packages/core/dist/mcp/tools/search.js +29 -0
- package/packages/core/dist/mcp/tools/snapshot.d.ts +47 -0
- package/packages/core/dist/mcp/tools/snapshot.js +84 -0
- package/packages/core/dist/multi-vault/index.d.ts +26 -0
- package/packages/core/dist/multi-vault/index.js +80 -0
- package/packages/core/dist/pack/creator.d.ts +21 -0
- package/packages/core/dist/pack/creator.js +105 -0
- package/packages/core/dist/pack/exporter.d.ts +4 -0
- package/packages/core/dist/pack/exporter.js +18 -0
- package/packages/core/dist/pack/importer.d.ts +10 -0
- package/packages/core/dist/pack/importer.js +55 -0
- package/packages/core/{src/pack/index.ts → dist/pack/index.d.ts} +1 -0
- package/packages/core/dist/pack/index.js +5 -0
- package/packages/core/dist/pack/marketplace.d.ts +14 -0
- package/packages/core/dist/pack/marketplace.js +90 -0
- package/packages/core/dist/pack/pii-masker.d.ts +7 -0
- package/packages/core/dist/pack/pii-masker.js +29 -0
- package/packages/core/dist/pack/types.d.ts +36 -0
- package/packages/core/dist/pack/types.js +3 -0
- package/packages/core/dist/plugins/index.d.ts +35 -0
- package/packages/core/dist/plugins/index.js +57 -0
- package/packages/core/dist/plugins/webhooks.d.ts +30 -0
- package/packages/core/dist/plugins/webhooks.js +79 -0
- package/packages/core/dist/search/adaptive.d.ts +16 -0
- package/packages/core/dist/search/adaptive.js +67 -0
- package/packages/core/dist/search/bm25.d.ts +4 -0
- package/packages/core/dist/search/bm25.js +10 -0
- package/packages/core/dist/search/index.d.ts +15 -0
- package/packages/core/dist/search/index.js +64 -0
- package/packages/core/dist/search/rrf.d.ts +7 -0
- package/packages/core/dist/search/rrf.js +21 -0
- package/packages/core/dist/search/semantic.d.ts +5 -0
- package/packages/core/dist/search/semantic.js +6 -0
- package/packages/core/{src/store/index.ts → dist/store/index.d.ts} +1 -0
- package/packages/core/dist/store/index.js +2 -0
- package/packages/core/dist/store/sqlite-vec.d.ts +6 -0
- package/packages/core/dist/store/sqlite-vec.js +251 -0
- package/packages/core/dist/store/types.d.ts +20 -0
- package/packages/core/dist/store/types.js +3 -0
- package/packages/core/dist/team/index.d.ts +25 -0
- package/packages/core/dist/team/index.js +97 -0
- package/packages/core/dist/types/chunk.d.ts +23 -0
- package/packages/core/dist/types/chunk.js +3 -0
- package/packages/core/dist/types/document.d.ts +23 -0
- package/packages/core/dist/types/document.js +3 -0
- package/packages/core/dist/types/graph.d.ts +39 -0
- package/packages/core/dist/types/graph.js +3 -0
- package/packages/core/dist/types/index.d.ts +5 -0
- package/packages/core/dist/types/index.js +2 -0
- package/packages/core/dist/types/search.d.ts +39 -0
- package/packages/core/dist/types/search.js +3 -0
- package/packages/core/dist/utils/retry.d.ts +25 -0
- package/packages/core/dist/utils/retry.js +59 -0
- package/.github/workflows/pages.yml +0 -37
- package/memory/MEMORY.md +0 -25
- package/packages/cli/dist/commands/brief-cmd.d.ts.map +0 -1
- package/packages/cli/dist/commands/brief-cmd.js.map +0 -1
- package/packages/cli/dist/commands/capture-cmd.d.ts.map +0 -1
- package/packages/cli/dist/commands/capture-cmd.js.map +0 -1
- package/packages/cli/dist/commands/card-cmd.d.ts.map +0 -1
- package/packages/cli/dist/commands/card-cmd.js.map +0 -1
- package/packages/cli/dist/commands/clip-cmd.d.ts.map +0 -1
- package/packages/cli/dist/commands/clip-cmd.js.map +0 -1
- package/packages/cli/dist/commands/cloud-cmd.d.ts.map +0 -1
- package/packages/cli/dist/commands/cloud-cmd.js.map +0 -1
- package/packages/cli/dist/commands/contradictions-cmd.d.ts.map +0 -1
- package/packages/cli/dist/commands/contradictions-cmd.js.map +0 -1
- package/packages/cli/dist/commands/decay-cmd.d.ts.map +0 -1
- package/packages/cli/dist/commands/decay-cmd.js.map +0 -1
- package/packages/cli/dist/commands/digest-cmd.d.ts.map +0 -1
- package/packages/cli/dist/commands/digest-cmd.js.map +0 -1
- package/packages/cli/dist/commands/duplicates-cmd.d.ts.map +0 -1
- package/packages/cli/dist/commands/duplicates-cmd.js.map +0 -1
- package/packages/cli/dist/commands/federate-cmd.d.ts.map +0 -1
- package/packages/cli/dist/commands/federate-cmd.js.map +0 -1
- package/packages/cli/dist/commands/gaps-cmd.d.ts.map +0 -1
- package/packages/cli/dist/commands/gaps-cmd.js.map +0 -1
- package/packages/cli/dist/commands/graph-cmd.d.ts.map +0 -1
- package/packages/cli/dist/commands/graph-cmd.js.map +0 -1
- package/packages/cli/dist/commands/index-cmd.d.ts.map +0 -1
- package/packages/cli/dist/commands/index-cmd.js.map +0 -1
- package/packages/cli/dist/commands/init-cmd.d.ts.map +0 -1
- package/packages/cli/dist/commands/init-cmd.js.map +0 -1
- package/packages/cli/dist/commands/learn-cmd.d.ts.map +0 -1
- package/packages/cli/dist/commands/learn-cmd.js.map +0 -1
- package/packages/cli/dist/commands/pack-cmd.d.ts.map +0 -1
- package/packages/cli/dist/commands/pack-cmd.js.map +0 -1
- package/packages/cli/dist/commands/review-cmd.d.ts.map +0 -1
- package/packages/cli/dist/commands/review-cmd.js.map +0 -1
- package/packages/cli/dist/commands/search-cmd.d.ts.map +0 -1
- package/packages/cli/dist/commands/search-cmd.js.map +0 -1
- package/packages/cli/dist/commands/serve-cmd.d.ts.map +0 -1
- package/packages/cli/dist/commands/serve-cmd.js.map +0 -1
- package/packages/cli/dist/commands/status-cmd.d.ts.map +0 -1
- package/packages/cli/dist/commands/status-cmd.js.map +0 -1
- package/packages/cli/dist/commands/sync-cmd.d.ts.map +0 -1
- package/packages/cli/dist/commands/sync-cmd.js.map +0 -1
- package/packages/cli/dist/commands/vault-cmd.d.ts.map +0 -1
- package/packages/cli/dist/commands/vault-cmd.js.map +0 -1
- package/packages/cli/dist/index.d.ts.map +0 -1
- package/packages/cli/dist/index.js.map +0 -1
- package/packages/cli/src/commands/brief-cmd.ts +0 -87
- package/packages/cli/src/commands/capture-cmd.ts +0 -34
- package/packages/cli/src/commands/card-cmd.ts +0 -29
- package/packages/cli/src/commands/clip-cmd.ts +0 -172
- package/packages/cli/src/commands/cloud-cmd.ts +0 -75
- package/packages/cli/src/commands/contradictions-cmd.ts +0 -41
- package/packages/cli/src/commands/decay-cmd.ts +0 -57
- package/packages/cli/src/commands/digest-cmd.ts +0 -89
- package/packages/cli/src/commands/duplicates-cmd.ts +0 -38
- package/packages/cli/src/commands/federate-cmd.ts +0 -256
- package/packages/cli/src/commands/gaps-cmd.ts +0 -40
- package/packages/cli/src/commands/graph-cmd.ts +0 -88
- package/packages/cli/src/commands/index-cmd.ts +0 -65
- package/packages/cli/src/commands/init-cmd.ts +0 -145
- package/packages/cli/src/commands/learn-cmd.ts +0 -56
- package/packages/cli/src/commands/pack-cmd.ts +0 -121
- package/packages/cli/src/commands/review-cmd.ts +0 -125
- package/packages/cli/src/commands/search-cmd.ts +0 -45
- package/packages/cli/src/commands/serve-cmd.ts +0 -17
- package/packages/cli/src/commands/status-cmd.ts +0 -37
- package/packages/cli/src/commands/sync-cmd.ts +0 -68
- package/packages/cli/src/commands/vault-cmd.ts +0 -64
- package/packages/cli/src/index.ts +0 -187
- package/packages/core/src/api/graph-data.ts +0 -286
- package/packages/core/src/api/server.ts +0 -660
- package/packages/core/src/capture/voice.ts +0 -168
- package/packages/core/src/cloud/sync.ts +0 -167
- package/packages/core/src/config.ts +0 -82
- package/packages/core/src/federation/credits.ts +0 -80
- package/packages/core/src/federation/hyperswarm.d.ts +0 -19
- package/packages/core/src/federation/identity.ts +0 -90
- package/packages/core/src/federation/node.ts +0 -235
- package/packages/core/src/federation/privacy.ts +0 -52
- package/packages/core/src/federation/reputation.ts +0 -202
- package/packages/core/src/federation/search.ts +0 -129
- package/packages/core/src/federation/sharing.ts +0 -315
- package/packages/core/src/federation/trust.ts +0 -76
- package/packages/core/src/federation/types.ts +0 -25
- package/packages/core/src/i18n/index.ts +0 -85
- package/packages/core/src/indexer/chunker.ts +0 -180
- package/packages/core/src/indexer/embedder.ts +0 -9
- package/packages/core/src/indexer/index.ts +0 -113
- package/packages/core/src/indexer/local-embedder.ts +0 -35
- package/packages/core/src/indexer/scanner.ts +0 -142
- package/packages/core/src/indexer/watcher.ts +0 -62
- package/packages/core/src/intelligence/contradiction-detector.ts +0 -134
- package/packages/core/src/intelligence/decay-engine.ts +0 -229
- package/packages/core/src/intelligence/duplicate-detector.ts +0 -71
- package/packages/core/src/intelligence/fsrs.ts +0 -79
- package/packages/core/src/intelligence/gap-detector.ts +0 -109
- package/packages/core/src/intelligence/learning-path.ts +0 -86
- package/packages/core/src/intelligence/notifications.ts +0 -106
- package/packages/core/src/intelligence/predictive-gaps.ts +0 -94
- package/packages/core/src/intelligence/semantic-versioning.ts +0 -97
- package/packages/core/src/intelligence/types.ts +0 -28
- package/packages/core/src/mcp/custom-tools.ts +0 -97
- package/packages/core/src/mcp/server.ts +0 -142
- package/packages/core/src/mcp/tools/agentic-graph.ts +0 -96
- package/packages/core/src/mcp/tools/brief.ts +0 -49
- package/packages/core/src/mcp/tools/decay.ts +0 -40
- package/packages/core/src/mcp/tools/decision-journal.ts +0 -95
- package/packages/core/src/mcp/tools/export.ts +0 -72
- package/packages/core/src/mcp/tools/federated-search.ts +0 -43
- package/packages/core/src/mcp/tools/generate-claude-md.ts +0 -130
- package/packages/core/src/mcp/tools/get-document.ts +0 -26
- package/packages/core/src/mcp/tools/get-related.ts +0 -41
- package/packages/core/src/mcp/tools/learning-path.ts +0 -52
- package/packages/core/src/mcp/tools/list-topics.ts +0 -20
- package/packages/core/src/mcp/tools/search.ts +0 -35
- package/packages/core/src/mcp/tools/snapshot.ts +0 -98
- package/packages/core/src/multi-vault/index.ts +0 -118
- package/packages/core/src/pack/creator.ts +0 -127
- package/packages/core/src/pack/exporter.ts +0 -21
- package/packages/core/src/pack/importer.ts +0 -82
- package/packages/core/src/pack/marketplace.ts +0 -103
- package/packages/core/src/pack/pii-masker.ts +0 -38
- package/packages/core/src/pack/types.ts +0 -39
- package/packages/core/src/plugins/index.ts +0 -100
- package/packages/core/src/plugins/webhooks.ts +0 -110
- package/packages/core/src/search/bm25.ts +0 -16
- package/packages/core/src/search/index.ts +0 -83
- package/packages/core/src/search/rrf.ts +0 -31
- package/packages/core/src/search/semantic.ts +0 -15
- package/packages/core/src/store/sqlite-vec.ts +0 -290
- package/packages/core/src/store/types.ts +0 -22
- package/packages/core/src/team/index.ts +0 -126
- package/packages/core/src/types/chunk.ts +0 -25
- package/packages/core/src/types/document.ts +0 -24
- package/packages/core/src/types/graph.ts +0 -44
- package/packages/core/src/types/index.ts +0 -15
- package/packages/core/src/types/search.ts +0 -38
- package/packages/core/src/utils/retry.ts +0 -85
- package/packages/core/tests/api-card.test.ts +0 -60
- package/packages/core/tests/api-routes.test.ts +0 -98
- package/packages/core/tests/bm25.test.ts +0 -87
- package/packages/core/tests/chunker.test.ts +0 -48
- package/packages/core/tests/cluster.test.ts +0 -75
- package/packages/core/tests/constellation.test.ts +0 -77
- package/packages/core/tests/export-utils.test.ts +0 -97
- package/packages/core/tests/fsrs.test.ts +0 -96
- package/packages/core/tests/gesture-detector.test.ts +0 -45
- package/packages/core/tests/graph-data.test.ts +0 -87
- package/packages/core/tests/layout.test.ts +0 -83
- package/packages/core/tests/mcp.test.ts +0 -148
- package/packages/core/tests/pack.test.ts +0 -127
- package/packages/core/tests/pii-masker.test.ts +0 -42
- package/packages/core/tests/profile-card.test.ts +0 -62
- package/packages/core/tests/rrf.test.ts +0 -29
- package/packages/core/tests/search-integration.test.ts +0 -139
- package/packages/core/tests/store.test.ts +0 -80
- package/packages/graph/click-result.png +0 -0
- package/packages/graph/dist/assets/camera_utils-BMxqtvoZ.js +0 -1
- package/packages/graph/dist/assets/hands-DXA01_mx.js +0 -18
- package/packages/graph/dist/assets/index-DMEe2diW.js +0 -4192
- package/packages/graph/dist/assets/layout.worker-DbKCEFTz.js +0 -1
- package/packages/graph/dist/index.html +0 -17
- package/packages/graph/index.html +0 -17
- package/packages/graph/package.json +0 -32
- package/packages/graph/src/App.tsx +0 -7
- package/packages/graph/src/api/client.ts +0 -39
- package/packages/graph/src/components/ClusterFilter.tsx +0 -73
- package/packages/graph/src/components/ConstellationView.tsx +0 -232
- package/packages/graph/src/components/ExportPanel.tsx +0 -177
- package/packages/graph/src/components/Graph3D.tsx +0 -230
- package/packages/graph/src/components/GraphEdges.tsx +0 -100
- package/packages/graph/src/components/GraphNodes.tsx +0 -386
- package/packages/graph/src/components/HealthDashboard.tsx +0 -173
- package/packages/graph/src/components/Layout.tsx +0 -214
- package/packages/graph/src/components/MotionOverlay.tsx +0 -81
- package/packages/graph/src/components/MotionToggle.tsx +0 -33
- package/packages/graph/src/components/MultiverseView.tsx +0 -286
- package/packages/graph/src/components/NodeDetail.tsx +0 -232
- package/packages/graph/src/components/PulseParticle.tsx +0 -232
- package/packages/graph/src/components/SearchBar.tsx +0 -107
- package/packages/graph/src/components/StarField.tsx +0 -197
- package/packages/graph/src/components/StatusBar.tsx +0 -53
- package/packages/graph/src/components/Timeline.tsx +0 -148
- package/packages/graph/src/components/ToolsPanel.tsx +0 -512
- package/packages/graph/src/components/Tooltip.tsx +0 -100
- package/packages/graph/src/components/TypeFilter.tsx +0 -131
- package/packages/graph/src/embed/EmbedGraph.tsx +0 -144
- package/packages/graph/src/hooks/useConstellationLOD.ts +0 -76
- package/packages/graph/src/hooks/useDecay.ts +0 -37
- package/packages/graph/src/hooks/useExport.ts +0 -165
- package/packages/graph/src/hooks/useGraph.ts +0 -69
- package/packages/graph/src/hooks/useKeyboardNav.ts +0 -122
- package/packages/graph/src/hooks/useLayout.ts +0 -45
- package/packages/graph/src/hooks/useMotion.ts +0 -120
- package/packages/graph/src/hooks/usePulse.ts +0 -58
- package/packages/graph/src/hooks/useSearch.ts +0 -71
- package/packages/graph/src/lib/constellation.ts +0 -107
- package/packages/graph/src/lib/export-utils.ts +0 -48
- package/packages/graph/src/lib/gesture-detector.ts +0 -123
- package/packages/graph/src/lib/layout.worker.ts +0 -153
- package/packages/graph/src/lib/motion-controller.ts +0 -83
- package/packages/graph/src/lib/profile-card.ts +0 -122
- package/packages/graph/src/main.tsx +0 -4
- package/packages/graph/src/stores/graph-store.ts +0 -155
- package/packages/graph/success.png +0 -0
- package/packages/graph/test-click.mjs +0 -49
- package/packages/graph/test-explore.mjs +0 -102
- package/packages/graph/test-final.mjs +0 -61
- package/packages/graph/test-graph.mjs +0 -139
- package/packages/graph/test-hover.mjs +0 -48
- package/packages/graph/test-pulse.mjs +0 -68
- package/packages/graph/test-screenshot.mjs +0 -56
- package/packages/graph/test-v2.mjs +0 -97
- package/packages/graph/tsconfig.tsbuildinfo +0 -1
- package/packages/graph/vite.config.ts +0 -15
- package/packages/sync/.env.example +0 -11
- package/packages/sync/.sync-state.json +0 -317
- package/packages/sync/.upload-state.json +0 -1009
- package/packages/sync/create-stella-network-notion.mjs +0 -151
- package/packages/sync/create-stellavault-project-notion.mjs +0 -322
- package/packages/sync/logs/sync-2026-03-28.log +0 -6
- package/packages/sync/logs/sync-2026-03-29.log +0 -12
- package/packages/sync/logs/sync-2026-03-30.log +0 -6
- package/packages/sync/logs/sync-2026-03-31.log +0 -6
- package/packages/sync/logs/sync-2026-04-01.log +0 -6
- package/packages/sync/logs/sync-2026-04-02.log +0 -6
- package/packages/sync/package-lock.json +0 -373
- package/packages/sync/package.json +0 -16
- package/packages/sync/run-sync.bat +0 -18
- package/packages/sync/run-sync.mjs +0 -46
- package/packages/sync/setup-scheduler.mjs +0 -119
- package/packages/sync/structured-sync.mjs +0 -187
- package/packages/sync/sync-to-obsidian.mjs +0 -264
- package/packages/sync/upload-pdca-to-notion.mjs +0 -495
- package/tsconfig.base.json +0 -18
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
// Federation: Sharing Control v2 — Level-based sharing system
|
|
2
|
+
// Level 0: 차단 (검색 안 됨)
|
|
3
|
+
// Level 1: 제목 + 유사도만
|
|
4
|
+
// Level 2: Level 1 + 50자 스니펫
|
|
5
|
+
// Level 3: Level 2 + 요청 시 전문 (피어 승인)
|
|
6
|
+
// Level 4: Level 3 + 전문 자동 공개
|
|
7
|
+
//
|
|
8
|
+
// 상호 매칭: 내 공개 레벨이 높을수록 남의 것도 더 많이 볼 수 있음
|
|
9
|
+
import { readFileSync, writeFileSync, existsSync, mkdirSync } from 'node:fs';
|
|
10
|
+
import { join } from 'node:path';
|
|
11
|
+
import { homedir } from 'node:os';
|
|
12
|
+
export const LEVEL_LABELS = {
|
|
13
|
+
0: 'Blocked (not searchable)',
|
|
14
|
+
1: 'Title + similarity only',
|
|
15
|
+
2: 'Title + snippet (50 chars)',
|
|
16
|
+
3: 'Full text on request (approval needed)',
|
|
17
|
+
4: 'Full text auto-shared',
|
|
18
|
+
};
|
|
19
|
+
export const LEVEL_ICONS = {
|
|
20
|
+
0: '🚫', 1: '📌', 2: '📝', 3: '📖', 4: '🌐',
|
|
21
|
+
};
|
|
22
|
+
// 크레딧 보너스 (레벨별)
|
|
23
|
+
export const LEVEL_CREDIT_MULTIPLIER = {
|
|
24
|
+
0: 0, 1: 1, 2: 2, 3: 5, 4: 10,
|
|
25
|
+
};
|
|
26
|
+
const SHARING_FILE = join(homedir(), '.stellavault', 'federation', 'sharing.json');
|
|
27
|
+
const SENSITIVE_PATTERNS = [
|
|
28
|
+
/\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b/,
|
|
29
|
+
/\b\d{3}[-.]?\d{4}[-.]?\d{4}\b/,
|
|
30
|
+
/\b(sk-|pk-|api[_-]?key|token|secret)[a-zA-Z0-9_-]{10,}\b/i,
|
|
31
|
+
/\bpassword\s*[:=]\s*\S+/i,
|
|
32
|
+
/\b\d{6}[-]\d{7}\b/,
|
|
33
|
+
];
|
|
34
|
+
const DEFAULT_CONFIG = {
|
|
35
|
+
defaultLevel: 2, // 기본: 스니펫까지
|
|
36
|
+
myNodeLevel: 2, // 내 노드 기본: 스니펫까지
|
|
37
|
+
rules: [
|
|
38
|
+
// 기본 규칙
|
|
39
|
+
{ pattern: 'public', type: 'tag', level: 4 },
|
|
40
|
+
{ pattern: 'opensource', type: 'tag', level: 4 },
|
|
41
|
+
{ pattern: 'personal', type: 'tag', level: 1 },
|
|
42
|
+
{ pattern: 'private', type: 'tag', level: 0 },
|
|
43
|
+
{ pattern: 'secret', type: 'tag', level: 0 },
|
|
44
|
+
{ pattern: 'diary', type: 'tag', level: 0 },
|
|
45
|
+
{ pattern: 'salary', type: 'tag', level: 0 },
|
|
46
|
+
{ pattern: 'password', type: 'tag', level: 0 },
|
|
47
|
+
{ pattern: 'credential', type: 'tag', level: 0 },
|
|
48
|
+
{ pattern: '03_Daily', type: 'folder', level: 1 },
|
|
49
|
+
{ pattern: '06_Archive', type: 'folder', level: 1 },
|
|
50
|
+
{ pattern: '.obsidian', type: 'folder', level: 0 },
|
|
51
|
+
],
|
|
52
|
+
blockedDocIds: [],
|
|
53
|
+
blockSensitivePatterns: true,
|
|
54
|
+
pendingRequests: [],
|
|
55
|
+
};
|
|
56
|
+
export function loadSharingConfig() {
|
|
57
|
+
if (existsSync(SHARING_FILE)) {
|
|
58
|
+
const raw = JSON.parse(readFileSync(SHARING_FILE, 'utf-8'));
|
|
59
|
+
return { ...DEFAULT_CONFIG, ...raw };
|
|
60
|
+
}
|
|
61
|
+
return { ...DEFAULT_CONFIG };
|
|
62
|
+
}
|
|
63
|
+
export function saveSharingConfig(config) {
|
|
64
|
+
mkdirSync(join(homedir(), '.stellavault', 'federation'), { recursive: true });
|
|
65
|
+
writeFileSync(SHARING_FILE, JSON.stringify(config, null, 2), 'utf-8');
|
|
66
|
+
}
|
|
67
|
+
// 문서의 공유 레벨 결정
|
|
68
|
+
export function getDocumentLevel(doc, config) {
|
|
69
|
+
const cfg = config ?? loadSharingConfig();
|
|
70
|
+
// 1. 개별 차단
|
|
71
|
+
if (cfg.blockedDocIds.includes(doc.id))
|
|
72
|
+
return 0;
|
|
73
|
+
// 2. 민감 패턴 감지 → Level 0
|
|
74
|
+
if (cfg.blockSensitivePatterns) {
|
|
75
|
+
for (const pattern of SENSITIVE_PATTERNS) {
|
|
76
|
+
if (pattern.test(doc.content))
|
|
77
|
+
return 0;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
// 3. 규칙 매칭 (가장 구체적인 규칙 우선)
|
|
81
|
+
let matchedLevel = null;
|
|
82
|
+
// 문서ID 규칙 (가장 구체적)
|
|
83
|
+
for (const rule of cfg.rules) {
|
|
84
|
+
if (rule.type === 'doc' && rule.pattern === doc.id) {
|
|
85
|
+
return rule.level;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
// 태그 규칙 (가장 제한적인 것 적용)
|
|
89
|
+
const docTags = doc.tags.map(t => t.toLowerCase());
|
|
90
|
+
for (const rule of cfg.rules) {
|
|
91
|
+
if (rule.type === 'tag' && docTags.includes(rule.pattern.toLowerCase())) {
|
|
92
|
+
if (matchedLevel === null || rule.level < matchedLevel) {
|
|
93
|
+
matchedLevel = rule.level;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
// 폴더 규칙
|
|
98
|
+
for (const rule of cfg.rules) {
|
|
99
|
+
if (rule.type === 'folder' && doc.filePath.startsWith(rule.pattern)) {
|
|
100
|
+
if (matchedLevel === null || rule.level < matchedLevel) {
|
|
101
|
+
matchedLevel = rule.level;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
return matchedLevel ?? cfg.defaultLevel;
|
|
106
|
+
}
|
|
107
|
+
// 이전 API 호환: isDocumentShareable = Level > 0
|
|
108
|
+
export function isDocumentShareable(doc, config) {
|
|
109
|
+
return getDocumentLevel(doc, config) > 0;
|
|
110
|
+
}
|
|
111
|
+
// 상호 매칭: 내 레벨에 따라 상대 문서를 어디까지 볼 수 있는가
|
|
112
|
+
export function getAccessibleLevel(myLevel, docLevel) {
|
|
113
|
+
// 내 공개 레벨이 상대 문서 레벨 이상이어야 열람 가능
|
|
114
|
+
// 단, 상대가 공개한 범위를 넘을 수는 없음
|
|
115
|
+
return Math.min(myLevel, docLevel);
|
|
116
|
+
}
|
|
117
|
+
export function buildLeveledResult(doc, similarity, requesterNodeLevel, config) {
|
|
118
|
+
const docLevel = getDocumentLevel(doc, config);
|
|
119
|
+
if (docLevel === 0)
|
|
120
|
+
return null; // 차단
|
|
121
|
+
const accessLevel = getAccessibleLevel(requesterNodeLevel, docLevel);
|
|
122
|
+
if (accessLevel === 0)
|
|
123
|
+
return null;
|
|
124
|
+
return {
|
|
125
|
+
title: accessLevel >= 1 ? doc.title : '[Hidden]',
|
|
126
|
+
similarity,
|
|
127
|
+
snippet: accessLevel >= 2 ? sanitizeSnippet(doc.content.slice(0, 50)) : undefined,
|
|
128
|
+
fullTextAvailable: docLevel >= 3,
|
|
129
|
+
autoShare: docLevel >= 4,
|
|
130
|
+
level: accessLevel,
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
// 전문 열람 요청
|
|
134
|
+
export function createFullTextRequest(fromPeerId, fromName, documentId, documentTitle) {
|
|
135
|
+
const cfg = loadSharingConfig();
|
|
136
|
+
const request = {
|
|
137
|
+
requestId: `req-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`,
|
|
138
|
+
fromPeerId, fromName, documentTitle, documentId,
|
|
139
|
+
requestedAt: new Date().toISOString(),
|
|
140
|
+
status: 'pending',
|
|
141
|
+
};
|
|
142
|
+
cfg.pendingRequests.push(request);
|
|
143
|
+
// 최근 50개만 유지
|
|
144
|
+
if (cfg.pendingRequests.length > 50)
|
|
145
|
+
cfg.pendingRequests = cfg.pendingRequests.slice(-50);
|
|
146
|
+
saveSharingConfig(cfg);
|
|
147
|
+
return request;
|
|
148
|
+
}
|
|
149
|
+
export function approveRequest(requestId) {
|
|
150
|
+
const cfg = loadSharingConfig();
|
|
151
|
+
const req = cfg.pendingRequests.find(r => r.requestId === requestId);
|
|
152
|
+
if (!req)
|
|
153
|
+
return false;
|
|
154
|
+
req.status = 'approved';
|
|
155
|
+
saveSharingConfig(cfg);
|
|
156
|
+
return true;
|
|
157
|
+
}
|
|
158
|
+
export function denyRequest(requestId) {
|
|
159
|
+
const cfg = loadSharingConfig();
|
|
160
|
+
const req = cfg.pendingRequests.find(r => r.requestId === requestId);
|
|
161
|
+
if (!req)
|
|
162
|
+
return false;
|
|
163
|
+
req.status = 'denied';
|
|
164
|
+
saveSharingConfig(cfg);
|
|
165
|
+
return true;
|
|
166
|
+
}
|
|
167
|
+
export function getPendingRequests() {
|
|
168
|
+
return loadSharingConfig().pendingRequests.filter(r => r.status === 'pending');
|
|
169
|
+
}
|
|
170
|
+
// 스니펫 민감 정보 제거
|
|
171
|
+
export function sanitizeSnippet(snippet) {
|
|
172
|
+
let safe = snippet;
|
|
173
|
+
for (const pattern of SENSITIVE_PATTERNS) {
|
|
174
|
+
safe = safe.replace(pattern, '[REDACTED]');
|
|
175
|
+
}
|
|
176
|
+
return safe;
|
|
177
|
+
}
|
|
178
|
+
// 규칙 관리 헬퍼
|
|
179
|
+
export function setTagLevel(tag, level) {
|
|
180
|
+
const cfg = loadSharingConfig();
|
|
181
|
+
const existing = cfg.rules.findIndex(r => r.type === 'tag' && r.pattern.toLowerCase() === tag.toLowerCase());
|
|
182
|
+
if (existing >= 0)
|
|
183
|
+
cfg.rules[existing].level = level;
|
|
184
|
+
else
|
|
185
|
+
cfg.rules.push({ pattern: tag.toLowerCase(), type: 'tag', level });
|
|
186
|
+
saveSharingConfig(cfg);
|
|
187
|
+
}
|
|
188
|
+
export function setFolderLevel(folder, level) {
|
|
189
|
+
const cfg = loadSharingConfig();
|
|
190
|
+
const existing = cfg.rules.findIndex(r => r.type === 'folder' && r.pattern === folder);
|
|
191
|
+
if (existing >= 0)
|
|
192
|
+
cfg.rules[existing].level = level;
|
|
193
|
+
else
|
|
194
|
+
cfg.rules.push({ pattern: folder, type: 'folder', level });
|
|
195
|
+
saveSharingConfig(cfg);
|
|
196
|
+
}
|
|
197
|
+
export function setNodeLevel(level) {
|
|
198
|
+
const cfg = loadSharingConfig();
|
|
199
|
+
cfg.myNodeLevel = level;
|
|
200
|
+
saveSharingConfig(cfg);
|
|
201
|
+
}
|
|
202
|
+
export function setDefaultLevel(level) {
|
|
203
|
+
const cfg = loadSharingConfig();
|
|
204
|
+
cfg.defaultLevel = level;
|
|
205
|
+
saveSharingConfig(cfg);
|
|
206
|
+
}
|
|
207
|
+
// CLI 요약
|
|
208
|
+
export function getSharingSummary(config) {
|
|
209
|
+
const cfg = config ?? loadSharingConfig();
|
|
210
|
+
const lines = [];
|
|
211
|
+
lines.push(`My Node Level: ${LEVEL_ICONS[cfg.myNodeLevel]} Level ${cfg.myNodeLevel} (${LEVEL_LABELS[cfg.myNodeLevel]})`);
|
|
212
|
+
lines.push(`Default Doc Level: ${LEVEL_ICONS[cfg.defaultLevel]} Level ${cfg.defaultLevel}`);
|
|
213
|
+
lines.push(`Credit Multiplier: ${LEVEL_CREDIT_MULTIPLIER[cfg.myNodeLevel]}x`);
|
|
214
|
+
lines.push('');
|
|
215
|
+
lines.push('Rules:');
|
|
216
|
+
for (const rule of cfg.rules) {
|
|
217
|
+
lines.push(` ${LEVEL_ICONS[rule.level]} [${rule.type}] ${rule.pattern} → Level ${rule.level}`);
|
|
218
|
+
}
|
|
219
|
+
if (cfg.blockedDocIds.length > 0) {
|
|
220
|
+
lines.push(` 🚫 ${cfg.blockedDocIds.length} docs individually blocked`);
|
|
221
|
+
}
|
|
222
|
+
lines.push('');
|
|
223
|
+
const pending = cfg.pendingRequests.filter(r => r.status === 'pending');
|
|
224
|
+
if (pending.length > 0) {
|
|
225
|
+
lines.push(`📬 ${pending.length} pending full-text requests`);
|
|
226
|
+
}
|
|
227
|
+
lines.push(`Sensitive pattern filter: ${cfg.blockSensitivePatterns ? 'ON' : 'OFF'}`);
|
|
228
|
+
return lines.join('\n');
|
|
229
|
+
}
|
|
230
|
+
// 레거시 호환
|
|
231
|
+
export function addBlockedTag(tag) { setTagLevel(tag, 0); }
|
|
232
|
+
export function removeBlockedTag(tag) { setTagLevel(tag, 2); }
|
|
233
|
+
export function addBlockedFolder(folder) { setFolderLevel(folder, 0); }
|
|
234
|
+
export function blockDocument(docId) {
|
|
235
|
+
const cfg = loadSharingConfig();
|
|
236
|
+
if (!cfg.blockedDocIds.includes(docId)) {
|
|
237
|
+
cfg.blockedDocIds.push(docId);
|
|
238
|
+
saveSharingConfig(cfg);
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
export function unblockDocument(docId) {
|
|
242
|
+
const cfg = loadSharingConfig();
|
|
243
|
+
cfg.blockedDocIds = cfg.blockedDocIds.filter(id => id !== docId);
|
|
244
|
+
saveSharingConfig(cfg);
|
|
245
|
+
}
|
|
246
|
+
//# sourceMappingURL=sharing.js.map
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export interface TrustEntry {
|
|
2
|
+
peerId: string;
|
|
3
|
+
displayName: string;
|
|
4
|
+
level: 'vouched' | 'neutral' | 'blocked';
|
|
5
|
+
reason?: string;
|
|
6
|
+
updatedAt: string;
|
|
7
|
+
}
|
|
8
|
+
export declare function vouch(peerId: string, displayName: string, reason?: string): TrustEntry;
|
|
9
|
+
export declare function revoke(peerId: string): boolean;
|
|
10
|
+
export declare function block(peerId: string, displayName: string, reason?: string): TrustEntry;
|
|
11
|
+
export declare function getTrustLevel(peerId: string): TrustEntry['level'];
|
|
12
|
+
export declare function isBlocked(peerId: string): boolean;
|
|
13
|
+
export declare function listTrusted(): TrustEntry[];
|
|
14
|
+
export declare function computeTrustScore(peerId: string): number;
|
|
15
|
+
//# sourceMappingURL=trust.d.ts.map
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
// Federation Phase 2: Web of Trust
|
|
2
|
+
// vouch/revoke/block — 노드 간 상호 신뢰 관리
|
|
3
|
+
import { readFileSync, writeFileSync, existsSync, mkdirSync } from 'node:fs';
|
|
4
|
+
import { join } from 'node:path';
|
|
5
|
+
import { homedir } from 'node:os';
|
|
6
|
+
const TRUST_FILE = join(homedir(), '.stellavault', 'federation', 'trust.json');
|
|
7
|
+
function loadTrustDb() {
|
|
8
|
+
if (!existsSync(TRUST_FILE))
|
|
9
|
+
return new Map();
|
|
10
|
+
const raw = JSON.parse(readFileSync(TRUST_FILE, 'utf-8'));
|
|
11
|
+
return new Map(raw.map(e => [e.peerId, e]));
|
|
12
|
+
}
|
|
13
|
+
function saveTrustDb(db) {
|
|
14
|
+
mkdirSync(join(homedir(), '.stellavault', 'federation'), { recursive: true });
|
|
15
|
+
writeFileSync(TRUST_FILE, JSON.stringify([...db.values()], null, 2), 'utf-8');
|
|
16
|
+
}
|
|
17
|
+
export function vouch(peerId, displayName, reason) {
|
|
18
|
+
const db = loadTrustDb();
|
|
19
|
+
const entry = { peerId, displayName, level: 'vouched', reason, updatedAt: new Date().toISOString() };
|
|
20
|
+
db.set(peerId, entry);
|
|
21
|
+
saveTrustDb(db);
|
|
22
|
+
return entry;
|
|
23
|
+
}
|
|
24
|
+
export function revoke(peerId) {
|
|
25
|
+
const db = loadTrustDb();
|
|
26
|
+
const entry = db.get(peerId);
|
|
27
|
+
if (!entry)
|
|
28
|
+
return false;
|
|
29
|
+
entry.level = 'neutral';
|
|
30
|
+
entry.updatedAt = new Date().toISOString();
|
|
31
|
+
saveTrustDb(db);
|
|
32
|
+
return true;
|
|
33
|
+
}
|
|
34
|
+
export function block(peerId, displayName, reason) {
|
|
35
|
+
const db = loadTrustDb();
|
|
36
|
+
const entry = { peerId, displayName, level: 'blocked', reason, updatedAt: new Date().toISOString() };
|
|
37
|
+
db.set(peerId, entry);
|
|
38
|
+
saveTrustDb(db);
|
|
39
|
+
return entry;
|
|
40
|
+
}
|
|
41
|
+
export function getTrustLevel(peerId) {
|
|
42
|
+
const db = loadTrustDb();
|
|
43
|
+
return db.get(peerId)?.level ?? 'neutral';
|
|
44
|
+
}
|
|
45
|
+
export function isBlocked(peerId) {
|
|
46
|
+
return getTrustLevel(peerId) === 'blocked';
|
|
47
|
+
}
|
|
48
|
+
export function listTrusted() {
|
|
49
|
+
return [...loadTrustDb().values()];
|
|
50
|
+
}
|
|
51
|
+
// 신뢰 점수 계산 (0-100)
|
|
52
|
+
export function computeTrustScore(peerId) {
|
|
53
|
+
const level = getTrustLevel(peerId);
|
|
54
|
+
switch (level) {
|
|
55
|
+
case 'vouched': return 80;
|
|
56
|
+
case 'neutral': return 50;
|
|
57
|
+
case 'blocked': return 0;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=trust.js.map
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
export interface PeerInfo {
|
|
2
|
+
peerId: string;
|
|
3
|
+
displayName: string;
|
|
4
|
+
documentCount: number;
|
|
5
|
+
topTopics: string[];
|
|
6
|
+
joinedAt: string;
|
|
7
|
+
lastSeen: string;
|
|
8
|
+
}
|
|
9
|
+
export interface FederatedSearchResult {
|
|
10
|
+
title: string;
|
|
11
|
+
similarity: number;
|
|
12
|
+
snippet: string;
|
|
13
|
+
peerId: string;
|
|
14
|
+
peerName: string;
|
|
15
|
+
}
|
|
16
|
+
export type FederationMessage = {
|
|
17
|
+
type: 'handshake';
|
|
18
|
+
peerId: string;
|
|
19
|
+
displayName: string;
|
|
20
|
+
version: string;
|
|
21
|
+
documentCount: number;
|
|
22
|
+
topTopics: string[];
|
|
23
|
+
} | {
|
|
24
|
+
type: 'search_query';
|
|
25
|
+
queryId: string;
|
|
26
|
+
embedding: number[];
|
|
27
|
+
limit: number;
|
|
28
|
+
} | {
|
|
29
|
+
type: 'search_result';
|
|
30
|
+
queryId: string;
|
|
31
|
+
results: Array<{
|
|
32
|
+
title: string;
|
|
33
|
+
similarity: number;
|
|
34
|
+
snippet: string;
|
|
35
|
+
}>;
|
|
36
|
+
} | {
|
|
37
|
+
type: 'leave';
|
|
38
|
+
peerId: string;
|
|
39
|
+
};
|
|
40
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export type Locale = 'en' | 'ko' | 'ja' | 'zh';
|
|
2
|
+
export declare function setLocale(locale: Locale): void;
|
|
3
|
+
export declare function getLocale(): Locale;
|
|
4
|
+
export declare function t(key: string, fallback?: string): string;
|
|
5
|
+
export declare function detectLocale(): Locale;
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
// i18n Foundation (F-A19)
|
|
2
|
+
// Simple string externalization for CLI and Graph UI
|
|
3
|
+
const strings = {
|
|
4
|
+
en: {
|
|
5
|
+
'init.welcome': 'Stellavault Setup Wizard',
|
|
6
|
+
'init.tagline': "Notes die in folders. Let's bring yours to life.",
|
|
7
|
+
'init.step1': 'Where is your Obsidian vault?',
|
|
8
|
+
'init.step2': 'Indexing your vault',
|
|
9
|
+
'init.step3': 'Try your first search',
|
|
10
|
+
'init.done': 'Setup complete!',
|
|
11
|
+
'index.complete': 'Indexing complete',
|
|
12
|
+
'search.no_results': 'No results found.',
|
|
13
|
+
'decay.report_title': 'Knowledge Decay Report',
|
|
14
|
+
'decay.tip': 'Search a topic to refresh decaying knowledge',
|
|
15
|
+
'learn.title': 'Your Learning Path',
|
|
16
|
+
'learn.all_clear': 'All clear! Your knowledge is in great shape.',
|
|
17
|
+
'contradictions.title': 'potential contradictions found',
|
|
18
|
+
'contradictions.none': 'No contradictions detected. Your knowledge is consistent!',
|
|
19
|
+
'graph.title': 'Stellavault',
|
|
20
|
+
'graph.subtitle': 'Neural Knowledge Graph',
|
|
21
|
+
'error.vault_not_found': 'Vault not found',
|
|
22
|
+
'error.db_init_failed': 'Database initialization failed',
|
|
23
|
+
'error.embedder_failed': 'Embedding model failed to load',
|
|
24
|
+
},
|
|
25
|
+
ko: {
|
|
26
|
+
'init.welcome': 'Stellavault 설정 마법사',
|
|
27
|
+
'init.tagline': '노트는 폴더에서 죽습니다. 당신의 지식을 살려봅시다.',
|
|
28
|
+
'init.step1': 'Obsidian vault 경로가 어디인가요?',
|
|
29
|
+
'init.step2': 'vault 인덱싱 중',
|
|
30
|
+
'init.step3': '첫 번째 검색을 해보세요',
|
|
31
|
+
'init.done': '설정 완료!',
|
|
32
|
+
'index.complete': '인덱싱 완료',
|
|
33
|
+
'search.no_results': '검색 결과가 없습니다.',
|
|
34
|
+
'decay.report_title': '지식 감쇠 리포트',
|
|
35
|
+
'decay.tip': '검색하면 감쇠 중인 지식이 리프레시됩니다',
|
|
36
|
+
'learn.title': '당신의 학습 경로',
|
|
37
|
+
'learn.all_clear': '모든 지식이 건강합니다!',
|
|
38
|
+
'contradictions.title': '개의 잠재적 모순 발견',
|
|
39
|
+
'contradictions.none': '모순이 없습니다. 지식이 일관됩니다!',
|
|
40
|
+
'graph.title': 'Stellavault',
|
|
41
|
+
'graph.subtitle': '뉴럴 지식 그래프',
|
|
42
|
+
'error.vault_not_found': 'vault를 찾을 수 없습니다',
|
|
43
|
+
'error.db_init_failed': '데이터베이스 초기화 실패',
|
|
44
|
+
'error.embedder_failed': '임베딩 모델 로딩 실패',
|
|
45
|
+
},
|
|
46
|
+
ja: {
|
|
47
|
+
'init.welcome': 'Stellavault セットアップウィザード',
|
|
48
|
+
'init.tagline': 'ノートはフォルダで死にます。あなたの知識を生かしましょう。',
|
|
49
|
+
'graph.title': 'Stellavault',
|
|
50
|
+
'graph.subtitle': 'ニューラルナレッジグラフ',
|
|
51
|
+
'search.no_results': '検索結果がありません。',
|
|
52
|
+
},
|
|
53
|
+
zh: {
|
|
54
|
+
'init.welcome': 'Stellavault 设置向导',
|
|
55
|
+
'init.tagline': '笔记在文件夹中消亡。让你的知识活起来。',
|
|
56
|
+
'graph.title': 'Stellavault',
|
|
57
|
+
'graph.subtitle': '神经知识图谱',
|
|
58
|
+
'search.no_results': '没有搜索结果。',
|
|
59
|
+
},
|
|
60
|
+
};
|
|
61
|
+
let currentLocale = 'en';
|
|
62
|
+
export function setLocale(locale) {
|
|
63
|
+
currentLocale = locale;
|
|
64
|
+
}
|
|
65
|
+
export function getLocale() {
|
|
66
|
+
return currentLocale;
|
|
67
|
+
}
|
|
68
|
+
export function t(key, fallback) {
|
|
69
|
+
return strings[currentLocale]?.[key] ?? strings.en[key] ?? fallback ?? key;
|
|
70
|
+
}
|
|
71
|
+
export function detectLocale() {
|
|
72
|
+
const env = process.env.LANG || process.env.LANGUAGE || process.env.LC_ALL || '';
|
|
73
|
+
if (env.startsWith('ko'))
|
|
74
|
+
return 'ko';
|
|
75
|
+
if (env.startsWith('ja'))
|
|
76
|
+
return 'ja';
|
|
77
|
+
if (env.startsWith('zh'))
|
|
78
|
+
return 'zh';
|
|
79
|
+
return 'en';
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -1,47 +1,21 @@
|
|
|
1
|
-
// Design Ref: §4.2 — Core Internal API (Facade)
|
|
2
|
-
// Design Ref: §9.3 — Dependency Injection Pattern
|
|
3
|
-
|
|
4
1
|
export { loadConfig } from './config.js';
|
|
5
2
|
export type { StellavaultConfig } from './config.js';
|
|
6
|
-
|
|
7
|
-
// Types
|
|
8
3
|
export type { Document } from './types/document.js';
|
|
9
4
|
export type { Chunk, ScoredChunk } from './types/chunk.js';
|
|
10
|
-
export type {
|
|
11
|
-
SearchResult,
|
|
12
|
-
SearchOptions,
|
|
13
|
-
TopicInfo,
|
|
14
|
-
StoreStats,
|
|
15
|
-
} from './types/search.js';
|
|
16
|
-
|
|
17
|
-
// Interfaces
|
|
5
|
+
export type { SearchResult, SearchOptions, TopicInfo, StoreStats, } from './types/search.js';
|
|
18
6
|
export type { VectorStore } from './store/types.js';
|
|
19
7
|
export type { Embedder } from './indexer/embedder.js';
|
|
20
|
-
|
|
21
|
-
// Store
|
|
22
8
|
export { createSqliteVecStore } from './store/index.js';
|
|
23
|
-
|
|
24
|
-
// Indexer
|
|
25
9
|
export { indexVault, scanVault, chunkDocument, createLocalEmbedder } from './indexer/index.js';
|
|
26
10
|
export type { IndexResult, IndexerOptions } from './indexer/index.js';
|
|
27
|
-
|
|
28
|
-
// Search
|
|
29
11
|
export { createSearchEngine } from './search/index.js';
|
|
30
12
|
export type { SearchEngine } from './search/index.js';
|
|
31
|
-
|
|
32
|
-
// MCP
|
|
33
13
|
export { createMcpServer } from './mcp/index.js';
|
|
34
|
-
|
|
35
|
-
// Pack (Phase 3)
|
|
36
14
|
export { createPack, exportPack, importPack, packToSummary, maskPII } from './pack/index.js';
|
|
37
15
|
export type { KnowledgePack, PackChunk, PackInfo, CreatePackOptions, ImportResult, MaskResult } from './pack/index.js';
|
|
38
|
-
|
|
39
|
-
// API (Phase 2)
|
|
40
16
|
export { createApiServer } from './api/server.js';
|
|
41
17
|
export type { ApiServerOptions } from './api/server.js';
|
|
42
18
|
export type { GraphNode, GraphEdge, Cluster, GraphData, GraphResponse } from './types/graph.js';
|
|
43
|
-
|
|
44
|
-
// Intelligence (Phase 4b)
|
|
45
19
|
export { DecayEngine } from './intelligence/decay-engine.js';
|
|
46
20
|
export type { DecayState, AccessEvent, DecayReport } from './intelligence/types.js';
|
|
47
21
|
export { computeRetrievability, updateStability, estimateInitialStability, elapsedDays } from './intelligence/fsrs.js';
|
|
@@ -58,35 +32,19 @@ export { generateLearningPath } from './intelligence/learning-path.js';
|
|
|
58
32
|
export type { LearningPath, LearningItem, LearningPathInput } from './intelligence/learning-path.js';
|
|
59
33
|
export { checkNotifications } from './intelligence/notifications.js';
|
|
60
34
|
export type { Notification, NotificationConfig } from './intelligence/notifications.js';
|
|
61
|
-
|
|
62
|
-
// Multi-Vault
|
|
63
35
|
export { addVault, removeVault, listVaults, getVault, searchAllVaults } from './multi-vault/index.js';
|
|
64
36
|
export type { VaultEntry, CrossVaultSearchResult } from './multi-vault/index.js';
|
|
65
|
-
|
|
66
|
-
// Voice Capture
|
|
67
37
|
export { captureVoice, transcribeAudio, isWhisperAvailable } from './capture/voice.js';
|
|
68
38
|
export type { CaptureResult, CaptureOptions } from './capture/voice.js';
|
|
69
|
-
|
|
70
|
-
// Dashboard + PWA
|
|
71
39
|
export { mountDashboard } from './api/dashboard.js';
|
|
72
40
|
export { mountPWA } from './api/pwa.js';
|
|
73
|
-
|
|
74
|
-
// Agentic Graph
|
|
75
41
|
export { createAgenticGraphTools } from './mcp/tools/agentic-graph.js';
|
|
76
|
-
|
|
77
|
-
// Cloud
|
|
78
42
|
export { syncToCloud, restoreFromCloud, getSyncState, encrypt, decrypt, getOrCreateEncryptionKey } from './cloud/index.js';
|
|
79
43
|
export type { CloudConfig, SyncResult } from './cloud/index.js';
|
|
80
|
-
|
|
81
|
-
// Team
|
|
82
44
|
export { inviteMember, authenticateMember, hasPermission, listMembers, removeMember, createAuthMiddleware, loadTeamConfig, generateToken } from './team/index.js';
|
|
83
45
|
export type { TeamMember, TeamRole, TeamConfig } from './team/index.js';
|
|
84
|
-
|
|
85
|
-
// Pack Marketplace
|
|
86
46
|
export { searchMarketplace, createPackageJson, getPublishInstructions } from './pack/marketplace.js';
|
|
87
47
|
export type { PackListing } from './pack/marketplace.js';
|
|
88
|
-
|
|
89
|
-
// Federation
|
|
90
48
|
export { FederationNode, FederatedSearch, getOrCreateIdentity } from './federation/index.js';
|
|
91
49
|
export type { PeerInfo, FederatedSearchResult, FederationMessage, NodeIdentity } from './federation/index.js';
|
|
92
50
|
export { vouch, revoke, block, getTrustLevel, isBlocked, listTrusted, computeTrustScore } from './federation/trust.js';
|
|
@@ -99,35 +57,58 @@ export { addDPNoise, addDPNoiseNormalized, maskSnippet } from './federation/priv
|
|
|
99
57
|
export type { DPConfig } from './federation/privacy.js';
|
|
100
58
|
export { getBalance, getAccount, earn, spend, earnForSearchResponse, spendForSearch, getRecentTransactions } from './federation/credits.js';
|
|
101
59
|
export type { CreditAccount, CreditTransaction } from './federation/credits.js';
|
|
102
|
-
|
|
103
|
-
// Plugin SDK
|
|
104
60
|
export { PluginManager } from './plugins/index.js';
|
|
105
61
|
export type { StellavaultPlugin, PluginManifest, PluginEvent, PluginContext } from './plugins/index.js';
|
|
106
62
|
export { WebhookManager } from './plugins/webhooks.js';
|
|
107
63
|
export type { WebhookConfig, WebhookDelivery } from './plugins/webhooks.js';
|
|
108
64
|
export { loadCustomTools } from './mcp/custom-tools.js';
|
|
109
65
|
export type { CustomToolDef, LoadedCustomTool } from './mcp/custom-tools.js';
|
|
110
|
-
|
|
111
|
-
// i18n
|
|
112
66
|
export { t, setLocale, getLocale, detectLocale } from './i18n/index.js';
|
|
113
67
|
export type { Locale } from './i18n/index.js';
|
|
114
|
-
|
|
115
|
-
// Error Recovery
|
|
116
68
|
export { withRetry, StellavaultError, wrapError, errors } from './utils/retry.js';
|
|
117
69
|
export type { RetryOptions } from './utils/retry.js';
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
import
|
|
121
|
-
import
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
70
|
+
export declare function createKnowledgeHub(config: import('./config.js').StellavaultConfig): {
|
|
71
|
+
store: import("./store/types.js").VectorStore;
|
|
72
|
+
embedder: import("./indexer/embedder.js").Embedder;
|
|
73
|
+
searchEngine: import("./search/index.js").SearchEngine;
|
|
74
|
+
mcpServer: {
|
|
75
|
+
startStdio(): Promise<void>;
|
|
76
|
+
startHttp(port?: number): Promise<void>;
|
|
77
|
+
server: import("@modelcontextprotocol/sdk/server").Server<{
|
|
78
|
+
method: string;
|
|
79
|
+
params?: {
|
|
80
|
+
[x: string]: unknown;
|
|
81
|
+
_meta?: {
|
|
82
|
+
[x: string]: unknown;
|
|
83
|
+
progressToken?: string | number | undefined;
|
|
84
|
+
"io.modelcontextprotocol/related-task"?: {
|
|
85
|
+
taskId: string;
|
|
86
|
+
} | undefined;
|
|
87
|
+
} | undefined;
|
|
88
|
+
} | undefined;
|
|
89
|
+
}, {
|
|
90
|
+
method: string;
|
|
91
|
+
params?: {
|
|
92
|
+
[x: string]: unknown;
|
|
93
|
+
_meta?: {
|
|
94
|
+
[x: string]: unknown;
|
|
95
|
+
progressToken?: string | number | undefined;
|
|
96
|
+
"io.modelcontextprotocol/related-task"?: {
|
|
97
|
+
taskId: string;
|
|
98
|
+
} | undefined;
|
|
99
|
+
} | undefined;
|
|
100
|
+
} | undefined;
|
|
101
|
+
}, {
|
|
102
|
+
[x: string]: unknown;
|
|
103
|
+
_meta?: {
|
|
104
|
+
[x: string]: unknown;
|
|
105
|
+
progressToken?: string | number | undefined;
|
|
106
|
+
"io.modelcontextprotocol/related-task"?: {
|
|
107
|
+
taskId: string;
|
|
108
|
+
} | undefined;
|
|
109
|
+
} | undefined;
|
|
110
|
+
}>;
|
|
111
|
+
};
|
|
112
|
+
config: import("./config.js").StellavaultConfig;
|
|
113
|
+
};
|
|
114
|
+
//# sourceMappingURL=index.d.ts.map
|