gnosys 5.10.0 → 5.11.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +66 -0
- package/dist/cli.d.ts +0 -1
- package/dist/cli.js +293 -139
- package/dist/index.d.ts +5 -1
- package/dist/index.js +429 -349
- package/dist/lib/archive.d.ts +3 -4
- package/dist/lib/archive.js +0 -1
- package/dist/lib/ask.d.ts +3 -4
- package/dist/lib/ask.js +2 -2
- package/dist/lib/atomicWrite.d.ts +7 -0
- package/dist/lib/atomicWrite.js +46 -0
- package/dist/lib/attachments.d.ts +0 -1
- package/dist/lib/attachments.js +0 -1
- package/dist/lib/audioExtract.d.ts +0 -1
- package/dist/lib/audioExtract.js +0 -1
- package/dist/lib/audit.d.ts +0 -1
- package/dist/lib/audit.js +0 -1
- package/dist/lib/bootstrap.d.ts +1 -2
- package/dist/lib/bootstrap.js +0 -1
- package/dist/lib/centralize.d.ts +20 -0
- package/dist/lib/centralize.js +34 -0
- package/dist/lib/chat/SlashPalette.d.ts +2 -3
- package/dist/lib/chat/SlashPalette.js +0 -1
- package/dist/lib/chat/boot-splash.d.ts +1 -2
- package/dist/lib/chat/boot-splash.js +0 -1
- package/dist/lib/chat/choose.d.ts +0 -1
- package/dist/lib/chat/choose.js +0 -2
- package/dist/lib/chat/commands.d.ts +1 -2
- package/dist/lib/chat/commands.js +0 -1
- package/dist/lib/chat/components/CitationText.d.ts +1 -2
- package/dist/lib/chat/components/CitationText.js +0 -1
- package/dist/lib/chat/components/MarkdownRenderer.d.ts +0 -1
- package/dist/lib/chat/components/MarkdownRenderer.js +0 -1
- package/dist/lib/chat/components/ToolCallCard.d.ts +1 -2
- package/dist/lib/chat/components/ToolCallCard.js +0 -1
- package/dist/lib/chat/focus.d.ts +3 -3
- package/dist/lib/chat/focus.js +0 -1
- package/dist/lib/chat/index.d.ts +3 -4
- package/dist/lib/chat/index.js +2 -2
- package/dist/lib/chat/intent.d.ts +1 -17
- package/dist/lib/chat/intent.js +2 -3
- package/dist/lib/chat/llmTurn.d.ts +5 -6
- package/dist/lib/chat/llmTurn.js +0 -1
- package/dist/lib/chat/recall.d.ts +2 -3
- package/dist/lib/chat/recall.js +1 -2
- package/dist/lib/chat/render.d.ts +2 -3
- package/dist/lib/chat/render.js +0 -1
- package/dist/lib/chat/session.d.ts +0 -1
- package/dist/lib/chat/session.js +0 -1
- package/dist/lib/chat/theme.d.ts +0 -1
- package/dist/lib/chat/theme.js +0 -1
- package/dist/lib/chat/toolFence.d.ts +2 -2
- package/dist/lib/chat/toolFence.js +0 -1
- package/dist/lib/chat/tools.d.ts +0 -1
- package/dist/lib/chat/tools.js +0 -1
- package/dist/lib/chat/types.d.ts +0 -1
- package/dist/lib/chat/types.js +0 -1
- package/dist/lib/chat/write.d.ts +5 -5
- package/dist/lib/chat/write.js +0 -1
- package/dist/lib/chunkSplitter.d.ts +0 -1
- package/dist/lib/chunkSplitter.js +0 -1
- package/dist/lib/cleanup.d.ts +0 -1
- package/dist/lib/cleanup.js +0 -1
- package/dist/lib/config.d.ts +0 -1
- package/dist/lib/config.js +3 -3
- package/dist/lib/dashboard.d.ts +3 -4
- package/dist/lib/dashboard.js +0 -1
- package/dist/lib/db.d.ts +0 -1
- package/dist/lib/db.js +40 -8
- package/dist/lib/dbSearch.d.ts +3 -4
- package/dist/lib/dbSearch.js +0 -1
- package/dist/lib/dbWrite.d.ts +2 -3
- package/dist/lib/dbWrite.js +0 -1
- package/dist/lib/desktopNotify.d.ts +0 -1
- package/dist/lib/desktopNotify.js +0 -1
- package/dist/lib/docxExtract.d.ts +0 -1
- package/dist/lib/docxExtract.js +22 -1
- package/dist/lib/dream.d.ts +2 -3
- package/dist/lib/dream.js +2 -2
- package/dist/lib/embeddings.d.ts +0 -3
- package/dist/lib/embeddings.js +7 -3
- package/dist/lib/export.d.ts +6 -2
- package/dist/lib/export.js +24 -2
- package/dist/lib/exportProject.d.ts +4 -3
- package/dist/lib/exportProject.js +3 -1
- package/dist/lib/federated.d.ts +1 -2
- package/dist/lib/federated.js +0 -1
- package/dist/lib/fileDetect.d.ts +0 -1
- package/dist/lib/fileDetect.js +0 -1
- package/dist/lib/graph.d.ts +4 -4
- package/dist/lib/graph.js +0 -1
- package/dist/lib/heartbeat.d.ts +0 -13
- package/dist/lib/heartbeat.js +1 -2
- package/dist/lib/hybridSearch.d.ts +5 -21
- package/dist/lib/hybridSearch.js +0 -1
- package/dist/lib/idFormat.d.ts +0 -2
- package/dist/lib/idFormat.js +1 -2
- package/dist/lib/imageExtract.d.ts +0 -1
- package/dist/lib/imageExtract.js +0 -1
- package/dist/lib/import.d.ts +6 -5
- package/dist/lib/import.js +3 -33
- package/dist/lib/importProject.d.ts +4 -4
- package/dist/lib/importProject.js +1 -2
- package/dist/lib/ingest.d.ts +3 -4
- package/dist/lib/ingest.js +2 -2
- package/dist/lib/lensing.d.ts +1 -2
- package/dist/lib/lensing.js +0 -1
- package/dist/lib/llm.d.ts +6 -45
- package/dist/lib/llm.js +27 -9
- package/dist/lib/lock.d.ts +0 -1
- package/dist/lib/lock.js +0 -1
- package/dist/lib/log.d.ts +4 -0
- package/dist/lib/log.js +85 -0
- package/dist/lib/machineConfig.d.ts +2 -3
- package/dist/lib/machineConfig.js +14 -3
- package/dist/lib/machineMigrate.d.ts +0 -1
- package/dist/lib/machineMigrate.js +0 -1
- package/dist/lib/maintenance.d.ts +4 -5
- package/dist/lib/maintenance.js +0 -1
- package/dist/lib/mcpClientConfig.d.ts +20 -0
- package/dist/lib/mcpClientConfig.js +50 -0
- package/dist/lib/mcpHttp.d.ts +52 -0
- package/dist/lib/mcpHttp.js +227 -0
- package/dist/lib/migrate.d.ts +1 -2
- package/dist/lib/migrate.js +1 -1
- package/dist/lib/modelValidation.d.ts +0 -1
- package/dist/lib/modelValidation.js +0 -1
- package/dist/lib/multimodalIngest.d.ts +1 -2
- package/dist/lib/multimodalIngest.js +0 -1
- package/dist/lib/packageManager.d.ts +5 -0
- package/dist/lib/packageManager.js +30 -0
- package/dist/lib/paths.d.ts +0 -7
- package/dist/lib/paths.js +1 -2
- package/dist/lib/pdfExtract.d.ts +0 -1
- package/dist/lib/pdfExtract.js +0 -1
- package/dist/lib/platform.d.ts +24 -0
- package/dist/lib/platform.js +114 -0
- package/dist/lib/portfolio.d.ts +1 -2
- package/dist/lib/portfolio.js +0 -1
- package/dist/lib/portfolioHtml.d.ts +1 -2
- package/dist/lib/portfolioHtml.js +0 -1
- package/dist/lib/preferences.d.ts +6 -2
- package/dist/lib/preferences.js +19 -1
- package/dist/lib/progress.d.ts +2 -2
- package/dist/lib/progress.js +0 -1
- package/dist/lib/projectIdentity.d.ts +1 -2
- package/dist/lib/projectIdentity.js +5 -5
- package/dist/lib/projectPaths.d.ts +2 -2
- package/dist/lib/projectPaths.js +0 -1
- package/dist/lib/projectScan.d.ts +2 -2
- package/dist/lib/projectScan.js +0 -1
- package/dist/lib/recall.d.ts +6 -6
- package/dist/lib/recall.js +0 -1
- package/dist/lib/remote.d.ts +7 -20
- package/dist/lib/remote.js +58 -3
- package/dist/lib/remoteWizard.d.ts +1 -2
- package/dist/lib/remoteWizard.js +124 -7
- package/dist/lib/resolver.d.ts +1 -2
- package/dist/lib/resolver.js +2 -3
- package/dist/lib/retry.d.ts +0 -1
- package/dist/lib/retry.js +1 -2
- package/dist/lib/rulesGen.d.ts +2 -8
- package/dist/lib/rulesGen.js +1 -2
- package/dist/lib/search.d.ts +1 -2
- package/dist/lib/search.js +1 -1
- package/dist/lib/searchTypes.d.ts +18 -0
- package/dist/lib/searchTypes.js +2 -0
- package/dist/lib/setup/coldStart.d.ts +0 -1
- package/dist/lib/setup/coldStart.js +0 -1
- package/dist/lib/setup/configSetRender.d.ts +0 -1
- package/dist/lib/setup/configSetRender.js +0 -1
- package/dist/lib/setup/dreamRender.d.ts +0 -1
- package/dist/lib/setup/dreamRender.js +0 -1
- package/dist/lib/setup/dreamState.d.ts +2 -2
- package/dist/lib/setup/dreamState.js +0 -1
- package/dist/lib/setup/modelsRender.d.ts +0 -1
- package/dist/lib/setup/modelsRender.js +0 -1
- package/dist/lib/setup/remoteRender.d.ts +0 -1
- package/dist/lib/setup/remoteRender.js +0 -1
- package/dist/lib/setup/routingRender.d.ts +0 -1
- package/dist/lib/setup/routingRender.js +0 -1
- package/dist/lib/setup/sections/ides.d.ts +1 -2
- package/dist/lib/setup/sections/ides.js +3 -2
- package/dist/lib/setup/sections/preferences.d.ts +1 -2
- package/dist/lib/setup/sections/preferences.js +3 -2
- package/dist/lib/setup/sections/routing.d.ts +1 -2
- package/dist/lib/setup/sections/routing.js +0 -1
- package/dist/lib/setup/storePath.d.ts +0 -1
- package/dist/lib/setup/storePath.js +0 -1
- package/dist/lib/setup/summary.d.ts +1 -2
- package/dist/lib/setup/summary.js +0 -1
- package/dist/lib/setup/syncProjectsRender.d.ts +0 -1
- package/dist/lib/setup/syncProjectsRender.js +0 -1
- package/dist/lib/setup/ui/diff.d.ts +0 -1
- package/dist/lib/setup/ui/diff.js +0 -1
- package/dist/lib/setup/ui/footer.d.ts +0 -1
- package/dist/lib/setup/ui/footer.js +0 -1
- package/dist/lib/setup/ui/header.d.ts +0 -1
- package/dist/lib/setup/ui/header.js +0 -1
- package/dist/lib/setup/ui/index.d.ts +0 -1
- package/dist/lib/setup/ui/index.js +0 -1
- package/dist/lib/setup/ui/menu.d.ts +0 -1
- package/dist/lib/setup/ui/menu.js +0 -1
- package/dist/lib/setup/ui/panel.d.ts +0 -1
- package/dist/lib/setup/ui/panel.js +0 -1
- package/dist/lib/setup/ui/prompt.d.ts +0 -1
- package/dist/lib/setup/ui/prompt.js +0 -1
- package/dist/lib/setup/ui/safePrompt.d.ts +0 -1
- package/dist/lib/setup/ui/safePrompt.js +0 -1
- package/dist/lib/setup/ui/spinner.d.ts +0 -1
- package/dist/lib/setup/ui/spinner.js +0 -1
- package/dist/lib/setup/ui/status.d.ts +0 -1
- package/dist/lib/setup/ui/status.js +0 -1
- package/dist/lib/setup/ui/table.d.ts +0 -1
- package/dist/lib/setup/ui/table.js +0 -1
- package/dist/lib/setup/ui/title.d.ts +0 -1
- package/dist/lib/setup/ui/title.js +0 -1
- package/dist/lib/setup/ui/tokens.d.ts +0 -1
- package/dist/lib/setup/ui/tokens.js +0 -1
- package/dist/lib/setup.d.ts +2 -31
- package/dist/lib/setup.js +56 -54
- package/dist/lib/staticSearch.d.ts +0 -1
- package/dist/lib/staticSearch.js +0 -1
- package/dist/lib/store.d.ts +0 -1
- package/dist/lib/store.js +0 -1
- package/dist/lib/structuredIngest.d.ts +0 -1
- package/dist/lib/structuredIngest.js +0 -1
- package/dist/lib/tags.d.ts +0 -1
- package/dist/lib/tags.js +0 -1
- package/dist/lib/timeline.d.ts +2 -3
- package/dist/lib/timeline.js +3 -4
- package/dist/lib/trace.d.ts +1 -16
- package/dist/lib/trace.js +0 -1
- package/dist/lib/upgrade.d.ts +4 -2
- package/dist/lib/upgrade.js +15 -3
- package/dist/lib/videoExtract.d.ts +0 -1
- package/dist/lib/videoExtract.js +2 -5
- package/dist/lib/webIndex.d.ts +1 -3
- package/dist/lib/webIndex.js +0 -1
- package/dist/lib/webIngest.d.ts +13 -1
- package/dist/lib/webIngest.js +98 -24
- package/dist/lib/wikilinks.d.ts +3 -3
- package/dist/lib/wikilinks.js +0 -1
- package/dist/postinstall.d.ts +0 -1
- package/dist/postinstall.js +0 -1
- package/dist/sandbox/client.d.ts +0 -1
- package/dist/sandbox/client.js +0 -1
- package/dist/sandbox/helper-template.d.ts +0 -1
- package/dist/sandbox/helper-template.js +0 -1
- package/dist/sandbox/manager.d.ts +0 -9
- package/dist/sandbox/manager.js +2 -3
- package/dist/sandbox/server.d.ts +2 -3
- package/dist/sandbox/server.js +7 -7
- package/docs/logo.svg +25 -0
- package/package.json +18 -6
- package/prompts/synthesize.md +2 -0
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/lib/archive.d.ts.map +0 -1
- package/dist/lib/archive.js.map +0 -1
- package/dist/lib/ask.d.ts.map +0 -1
- package/dist/lib/ask.js.map +0 -1
- package/dist/lib/attachments.d.ts.map +0 -1
- package/dist/lib/attachments.js.map +0 -1
- package/dist/lib/audioExtract.d.ts.map +0 -1
- package/dist/lib/audioExtract.js.map +0 -1
- package/dist/lib/audit.d.ts.map +0 -1
- package/dist/lib/audit.js.map +0 -1
- package/dist/lib/bootstrap.d.ts.map +0 -1
- package/dist/lib/bootstrap.js.map +0 -1
- package/dist/lib/chat/SlashPalette.d.ts.map +0 -1
- package/dist/lib/chat/SlashPalette.js.map +0 -1
- package/dist/lib/chat/boot-splash.d.ts.map +0 -1
- package/dist/lib/chat/boot-splash.js.map +0 -1
- package/dist/lib/chat/choose.d.ts.map +0 -1
- package/dist/lib/chat/choose.js.map +0 -1
- package/dist/lib/chat/commands.d.ts.map +0 -1
- package/dist/lib/chat/commands.js.map +0 -1
- package/dist/lib/chat/components/CitationText.d.ts.map +0 -1
- package/dist/lib/chat/components/CitationText.js.map +0 -1
- package/dist/lib/chat/components/MarkdownRenderer.d.ts.map +0 -1
- package/dist/lib/chat/components/MarkdownRenderer.js.map +0 -1
- package/dist/lib/chat/components/ToolCallCard.d.ts.map +0 -1
- package/dist/lib/chat/components/ToolCallCard.js.map +0 -1
- package/dist/lib/chat/focus.d.ts.map +0 -1
- package/dist/lib/chat/focus.js.map +0 -1
- package/dist/lib/chat/index.d.ts.map +0 -1
- package/dist/lib/chat/index.js.map +0 -1
- package/dist/lib/chat/intent.d.ts.map +0 -1
- package/dist/lib/chat/intent.js.map +0 -1
- package/dist/lib/chat/llmTurn.d.ts.map +0 -1
- package/dist/lib/chat/llmTurn.js.map +0 -1
- package/dist/lib/chat/recall.d.ts.map +0 -1
- package/dist/lib/chat/recall.js.map +0 -1
- package/dist/lib/chat/render.d.ts.map +0 -1
- package/dist/lib/chat/render.js.map +0 -1
- package/dist/lib/chat/session.d.ts.map +0 -1
- package/dist/lib/chat/session.js.map +0 -1
- package/dist/lib/chat/theme.d.ts.map +0 -1
- package/dist/lib/chat/theme.js.map +0 -1
- package/dist/lib/chat/toolFence.d.ts.map +0 -1
- package/dist/lib/chat/toolFence.js.map +0 -1
- package/dist/lib/chat/tools.d.ts.map +0 -1
- package/dist/lib/chat/tools.js.map +0 -1
- package/dist/lib/chat/types.d.ts.map +0 -1
- package/dist/lib/chat/types.js.map +0 -1
- package/dist/lib/chat/write.d.ts.map +0 -1
- package/dist/lib/chat/write.js.map +0 -1
- package/dist/lib/chunkSplitter.d.ts.map +0 -1
- package/dist/lib/chunkSplitter.js.map +0 -1
- package/dist/lib/cleanup.d.ts.map +0 -1
- package/dist/lib/cleanup.js.map +0 -1
- package/dist/lib/config.d.ts.map +0 -1
- package/dist/lib/config.js.map +0 -1
- package/dist/lib/dashboard.d.ts.map +0 -1
- package/dist/lib/dashboard.js.map +0 -1
- package/dist/lib/db.d.ts.map +0 -1
- package/dist/lib/db.js.map +0 -1
- package/dist/lib/dbSearch.d.ts.map +0 -1
- package/dist/lib/dbSearch.js.map +0 -1
- package/dist/lib/dbWrite.d.ts.map +0 -1
- package/dist/lib/dbWrite.js.map +0 -1
- package/dist/lib/desktopNotify.d.ts.map +0 -1
- package/dist/lib/desktopNotify.js.map +0 -1
- package/dist/lib/docxExtract.d.ts.map +0 -1
- package/dist/lib/docxExtract.js.map +0 -1
- package/dist/lib/dream.d.ts.map +0 -1
- package/dist/lib/dream.js.map +0 -1
- package/dist/lib/embeddings.d.ts.map +0 -1
- package/dist/lib/embeddings.js.map +0 -1
- package/dist/lib/export.d.ts.map +0 -1
- package/dist/lib/export.js.map +0 -1
- package/dist/lib/exportProject.d.ts.map +0 -1
- package/dist/lib/exportProject.js.map +0 -1
- package/dist/lib/federated.d.ts.map +0 -1
- package/dist/lib/federated.js.map +0 -1
- package/dist/lib/fileDetect.d.ts.map +0 -1
- package/dist/lib/fileDetect.js.map +0 -1
- package/dist/lib/graph.d.ts.map +0 -1
- package/dist/lib/graph.js.map +0 -1
- package/dist/lib/heartbeat.d.ts.map +0 -1
- package/dist/lib/heartbeat.js.map +0 -1
- package/dist/lib/history.d.ts +0 -39
- package/dist/lib/history.d.ts.map +0 -1
- package/dist/lib/history.js +0 -112
- package/dist/lib/history.js.map +0 -1
- package/dist/lib/hybridSearch.d.ts.map +0 -1
- package/dist/lib/hybridSearch.js.map +0 -1
- package/dist/lib/idFormat.d.ts.map +0 -1
- package/dist/lib/idFormat.js.map +0 -1
- package/dist/lib/imageExtract.d.ts.map +0 -1
- package/dist/lib/imageExtract.js.map +0 -1
- package/dist/lib/import.d.ts.map +0 -1
- package/dist/lib/import.js.map +0 -1
- package/dist/lib/importProject.d.ts.map +0 -1
- package/dist/lib/importProject.js.map +0 -1
- package/dist/lib/ingest.d.ts.map +0 -1
- package/dist/lib/ingest.js.map +0 -1
- package/dist/lib/lensing.d.ts.map +0 -1
- package/dist/lib/lensing.js.map +0 -1
- package/dist/lib/llm.d.ts.map +0 -1
- package/dist/lib/llm.js.map +0 -1
- package/dist/lib/lock.d.ts.map +0 -1
- package/dist/lib/lock.js.map +0 -1
- package/dist/lib/machineConfig.d.ts.map +0 -1
- package/dist/lib/machineConfig.js.map +0 -1
- package/dist/lib/machineMigrate.d.ts.map +0 -1
- package/dist/lib/machineMigrate.js.map +0 -1
- package/dist/lib/maintenance.d.ts.map +0 -1
- package/dist/lib/maintenance.js.map +0 -1
- package/dist/lib/migrate.d.ts.map +0 -1
- package/dist/lib/migrate.js.map +0 -1
- package/dist/lib/modelValidation.d.ts.map +0 -1
- package/dist/lib/modelValidation.js.map +0 -1
- package/dist/lib/multimodalIngest.d.ts.map +0 -1
- package/dist/lib/multimodalIngest.js.map +0 -1
- package/dist/lib/paths.d.ts.map +0 -1
- package/dist/lib/paths.js.map +0 -1
- package/dist/lib/pdfExtract.d.ts.map +0 -1
- package/dist/lib/pdfExtract.js.map +0 -1
- package/dist/lib/portfolio.d.ts.map +0 -1
- package/dist/lib/portfolio.js.map +0 -1
- package/dist/lib/portfolioHtml.d.ts.map +0 -1
- package/dist/lib/portfolioHtml.js.map +0 -1
- package/dist/lib/preferences.d.ts.map +0 -1
- package/dist/lib/preferences.js.map +0 -1
- package/dist/lib/progress.d.ts.map +0 -1
- package/dist/lib/progress.js.map +0 -1
- package/dist/lib/projectIdentity.d.ts.map +0 -1
- package/dist/lib/projectIdentity.js.map +0 -1
- package/dist/lib/projectPaths.d.ts.map +0 -1
- package/dist/lib/projectPaths.js.map +0 -1
- package/dist/lib/projectScan.d.ts.map +0 -1
- package/dist/lib/projectScan.js.map +0 -1
- package/dist/lib/recall.d.ts.map +0 -1
- package/dist/lib/recall.js.map +0 -1
- package/dist/lib/remote.d.ts.map +0 -1
- package/dist/lib/remote.js.map +0 -1
- package/dist/lib/remoteWizard.d.ts.map +0 -1
- package/dist/lib/remoteWizard.js.map +0 -1
- package/dist/lib/resolver.d.ts.map +0 -1
- package/dist/lib/resolver.js.map +0 -1
- package/dist/lib/retry.d.ts.map +0 -1
- package/dist/lib/retry.js.map +0 -1
- package/dist/lib/rulesGen.d.ts.map +0 -1
- package/dist/lib/rulesGen.js.map +0 -1
- package/dist/lib/search.d.ts.map +0 -1
- package/dist/lib/search.js.map +0 -1
- package/dist/lib/setup/coldStart.d.ts.map +0 -1
- package/dist/lib/setup/coldStart.js.map +0 -1
- package/dist/lib/setup/configSetRender.d.ts.map +0 -1
- package/dist/lib/setup/configSetRender.js.map +0 -1
- package/dist/lib/setup/dreamRender.d.ts.map +0 -1
- package/dist/lib/setup/dreamRender.js.map +0 -1
- package/dist/lib/setup/dreamState.d.ts.map +0 -1
- package/dist/lib/setup/dreamState.js.map +0 -1
- package/dist/lib/setup/modelsRender.d.ts.map +0 -1
- package/dist/lib/setup/modelsRender.js.map +0 -1
- package/dist/lib/setup/remoteRender.d.ts.map +0 -1
- package/dist/lib/setup/remoteRender.js.map +0 -1
- package/dist/lib/setup/routingRender.d.ts.map +0 -1
- package/dist/lib/setup/routingRender.js.map +0 -1
- package/dist/lib/setup/sections/ides.d.ts.map +0 -1
- package/dist/lib/setup/sections/ides.js.map +0 -1
- package/dist/lib/setup/sections/preferences.d.ts.map +0 -1
- package/dist/lib/setup/sections/preferences.js.map +0 -1
- package/dist/lib/setup/sections/routing.d.ts.map +0 -1
- package/dist/lib/setup/sections/routing.js.map +0 -1
- package/dist/lib/setup/storePath.d.ts.map +0 -1
- package/dist/lib/setup/storePath.js.map +0 -1
- package/dist/lib/setup/summary.d.ts.map +0 -1
- package/dist/lib/setup/summary.js.map +0 -1
- package/dist/lib/setup/syncProjectsRender.d.ts.map +0 -1
- package/dist/lib/setup/syncProjectsRender.js.map +0 -1
- package/dist/lib/setup/ui/diff.d.ts.map +0 -1
- package/dist/lib/setup/ui/diff.js.map +0 -1
- package/dist/lib/setup/ui/footer.d.ts.map +0 -1
- package/dist/lib/setup/ui/footer.js.map +0 -1
- package/dist/lib/setup/ui/header.d.ts.map +0 -1
- package/dist/lib/setup/ui/header.js.map +0 -1
- package/dist/lib/setup/ui/index.d.ts.map +0 -1
- package/dist/lib/setup/ui/index.js.map +0 -1
- package/dist/lib/setup/ui/menu.d.ts.map +0 -1
- package/dist/lib/setup/ui/menu.js.map +0 -1
- package/dist/lib/setup/ui/panel.d.ts.map +0 -1
- package/dist/lib/setup/ui/panel.js.map +0 -1
- package/dist/lib/setup/ui/prompt.d.ts.map +0 -1
- package/dist/lib/setup/ui/prompt.js.map +0 -1
- package/dist/lib/setup/ui/safePrompt.d.ts.map +0 -1
- package/dist/lib/setup/ui/safePrompt.js.map +0 -1
- package/dist/lib/setup/ui/spinner.d.ts.map +0 -1
- package/dist/lib/setup/ui/spinner.js.map +0 -1
- package/dist/lib/setup/ui/status.d.ts.map +0 -1
- package/dist/lib/setup/ui/status.js.map +0 -1
- package/dist/lib/setup/ui/table.d.ts.map +0 -1
- package/dist/lib/setup/ui/table.js.map +0 -1
- package/dist/lib/setup/ui/title.d.ts.map +0 -1
- package/dist/lib/setup/ui/title.js.map +0 -1
- package/dist/lib/setup/ui/tokens.d.ts.map +0 -1
- package/dist/lib/setup/ui/tokens.js.map +0 -1
- package/dist/lib/setup.d.ts.map +0 -1
- package/dist/lib/setup.js.map +0 -1
- package/dist/lib/staticSearch.d.ts.map +0 -1
- package/dist/lib/staticSearch.js.map +0 -1
- package/dist/lib/store.d.ts.map +0 -1
- package/dist/lib/store.js.map +0 -1
- package/dist/lib/structuredIngest.d.ts.map +0 -1
- package/dist/lib/structuredIngest.js.map +0 -1
- package/dist/lib/tags.d.ts.map +0 -1
- package/dist/lib/tags.js.map +0 -1
- package/dist/lib/timeline.d.ts.map +0 -1
- package/dist/lib/timeline.js.map +0 -1
- package/dist/lib/trace.d.ts.map +0 -1
- package/dist/lib/trace.js.map +0 -1
- package/dist/lib/upgrade.d.ts.map +0 -1
- package/dist/lib/upgrade.js.map +0 -1
- package/dist/lib/videoExtract.d.ts.map +0 -1
- package/dist/lib/videoExtract.js.map +0 -1
- package/dist/lib/webIndex.d.ts.map +0 -1
- package/dist/lib/webIndex.js.map +0 -1
- package/dist/lib/webIngest.d.ts.map +0 -1
- package/dist/lib/webIngest.js.map +0 -1
- package/dist/lib/wikilinks.d.ts.map +0 -1
- package/dist/lib/wikilinks.js.map +0 -1
- package/dist/postinstall.d.ts.map +0 -1
- package/dist/postinstall.js.map +0 -1
- package/dist/sandbox/client.d.ts.map +0 -1
- package/dist/sandbox/client.js.map +0 -1
- package/dist/sandbox/helper-template.d.ts.map +0 -1
- package/dist/sandbox/helper-template.js.map +0 -1
- package/dist/sandbox/index.d.ts +0 -10
- package/dist/sandbox/index.d.ts.map +0 -1
- package/dist/sandbox/index.js +0 -10
- package/dist/sandbox/index.js.map +0 -1
- package/dist/sandbox/manager.d.ts.map +0 -1
- package/dist/sandbox/manager.js.map +0 -1
- package/dist/sandbox/server.d.ts.map +0 -1
- package/dist/sandbox/server.js.map +0 -1
package/dist/cli.js
CHANGED
|
@@ -20,14 +20,15 @@ import { getGnosysHome } from "./lib/paths.js";
|
|
|
20
20
|
import { GnosysSearch } from "./lib/search.js";
|
|
21
21
|
import { GnosysTagRegistry } from "./lib/tags.js";
|
|
22
22
|
import { applyLens } from "./lib/lensing.js";
|
|
23
|
-
import { getFileHistory, rollbackToCommit, hasGitHistory, getFileDiff } from "./lib/history.js";
|
|
24
23
|
import { computeStats } from "./lib/timeline.js";
|
|
25
24
|
import { buildLinkGraph, getBacklinks, getOutgoingLinks, formatGraphSummary } from "./lib/wikilinks.js";
|
|
26
25
|
import { loadConfig, generateConfigTemplate, DEFAULT_CONFIG, writeConfig, resolveTaskModel, ALL_PROVIDERS, getProviderModel } from "./lib/config.js";
|
|
27
26
|
import { getLLMProvider, isProviderAvailable } from "./lib/llm.js";
|
|
28
27
|
import { GnosysDB } from "./lib/db.js";
|
|
28
|
+
import { logError } from "./lib/log.js";
|
|
29
|
+
import { getSecureStorageSetupHint } from "./lib/platform.js";
|
|
29
30
|
import { createProjectIdentity, readProjectIdentity, findProjectIdentity, migrateProject } from "./lib/projectIdentity.js";
|
|
30
|
-
import { setPreference, getPreference, getAllPreferences, deletePreference } from "./lib/preferences.js";
|
|
31
|
+
import { setPreference, getPreference, getAllPreferences, deletePreference, KNOWN_PREFERENCE_KEYS, suggestPreferenceKey } from "./lib/preferences.js";
|
|
31
32
|
import { syncToTarget } from "./lib/rulesGen.js";
|
|
32
33
|
// Lazy-loaded inside action handlers (each ~200ms-2.5s on cold cache):
|
|
33
34
|
// - ./lib/embeddings.js (@huggingface/transformers — 80MB)
|
|
@@ -209,6 +210,45 @@ program
|
|
|
209
210
|
.description("Read a specific memory. Supports layer prefix (e.g., project:decisions/auth.md)")
|
|
210
211
|
.option("--json", "Output as JSON")
|
|
211
212
|
.action(async (memoryPath, opts) => {
|
|
213
|
+
const centralDb = GnosysDB.openCentral();
|
|
214
|
+
if (centralDb.isAvailable()) {
|
|
215
|
+
const dbMem = centralDb.getMemory(memoryPath);
|
|
216
|
+
if (dbMem) {
|
|
217
|
+
try {
|
|
218
|
+
const tags = dbMem.tags || "[]";
|
|
219
|
+
const headerLines = [
|
|
220
|
+
`---`,
|
|
221
|
+
`id: ${dbMem.id}`,
|
|
222
|
+
`title: '${dbMem.title}'`,
|
|
223
|
+
`category: ${dbMem.category}`,
|
|
224
|
+
`tags: ${tags}`,
|
|
225
|
+
`relevance: ${dbMem.relevance}`,
|
|
226
|
+
`author: ${dbMem.author}`,
|
|
227
|
+
`authority: ${dbMem.authority}`,
|
|
228
|
+
`confidence: ${dbMem.confidence}`,
|
|
229
|
+
`status: ${dbMem.status}`,
|
|
230
|
+
`tier: ${dbMem.tier}`,
|
|
231
|
+
`created: '${dbMem.created}'`,
|
|
232
|
+
`modified: '${dbMem.modified}'`,
|
|
233
|
+
];
|
|
234
|
+
if (dbMem.source_file) {
|
|
235
|
+
headerLines.push(`source_file: ${dbMem.source_file}${dbMem.source_page != null ? ` (page ${Number(dbMem.source_page)})` : ""}`);
|
|
236
|
+
}
|
|
237
|
+
if (dbMem.source_path)
|
|
238
|
+
headerLines.push(`source_path: ${dbMem.source_path}`);
|
|
239
|
+
headerLines.push(`---`);
|
|
240
|
+
const raw = `[Source: gnosys.db]\n\n${headerLines.join("\n")}\n\n${dbMem.content}`;
|
|
241
|
+
outputResult(!!opts.json, { path: memoryPath, source: "gnosys.db", content: raw, memory: dbMem }, () => {
|
|
242
|
+
console.log(raw);
|
|
243
|
+
});
|
|
244
|
+
return;
|
|
245
|
+
}
|
|
246
|
+
finally {
|
|
247
|
+
centralDb.close();
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
centralDb.close();
|
|
212
252
|
const resolver = await getResolver();
|
|
213
253
|
const memory = await resolver.readMemory(memoryPath);
|
|
214
254
|
if (!memory) {
|
|
@@ -262,7 +302,7 @@ program
|
|
|
262
302
|
});
|
|
263
303
|
}
|
|
264
304
|
catch (err) {
|
|
265
|
-
|
|
305
|
+
logError(err, { module: "cli", op: "discover" });
|
|
266
306
|
process.exit(1);
|
|
267
307
|
}
|
|
268
308
|
finally {
|
|
@@ -302,7 +342,7 @@ program
|
|
|
302
342
|
});
|
|
303
343
|
}
|
|
304
344
|
catch (err) {
|
|
305
|
-
|
|
345
|
+
logError(err, { module: "cli", op: "discover" });
|
|
306
346
|
process.exit(1);
|
|
307
347
|
}
|
|
308
348
|
finally {
|
|
@@ -354,7 +394,7 @@ program
|
|
|
354
394
|
});
|
|
355
395
|
}
|
|
356
396
|
catch (err) {
|
|
357
|
-
|
|
397
|
+
logError(err, { module: "cli", op: "search" });
|
|
358
398
|
process.exit(1);
|
|
359
399
|
}
|
|
360
400
|
finally {
|
|
@@ -393,7 +433,7 @@ program
|
|
|
393
433
|
});
|
|
394
434
|
}
|
|
395
435
|
catch (err) {
|
|
396
|
-
|
|
436
|
+
logError(err, { module: "cli", op: "search" });
|
|
397
437
|
process.exit(1);
|
|
398
438
|
}
|
|
399
439
|
finally {
|
|
@@ -468,7 +508,7 @@ program
|
|
|
468
508
|
});
|
|
469
509
|
}
|
|
470
510
|
catch (err) {
|
|
471
|
-
|
|
511
|
+
logError(err, { module: "cli", op: "list" });
|
|
472
512
|
process.exit(1);
|
|
473
513
|
}
|
|
474
514
|
finally {
|
|
@@ -1961,6 +2001,7 @@ program
|
|
|
1961
2001
|
.option("--modified-after <date>", "Modified after ISO date")
|
|
1962
2002
|
.option("--modified-before <date>", "Modified before ISO date")
|
|
1963
2003
|
.option("--or", "Combine filters with OR instead of AND (default: AND)")
|
|
2004
|
+
.option("--json", "Output as JSON")
|
|
1964
2005
|
.action(async (opts) => {
|
|
1965
2006
|
const resolver = await getResolver();
|
|
1966
2007
|
const allMemories = await resolver.getAllMemories();
|
|
@@ -1990,82 +2031,73 @@ program
|
|
|
1990
2031
|
if (opts.modifiedBefore)
|
|
1991
2032
|
lens.modifiedBefore = opts.modifiedBefore;
|
|
1992
2033
|
const result = applyLens(allMemories, lens);
|
|
1993
|
-
|
|
1994
|
-
|
|
1995
|
-
|
|
1996
|
-
|
|
1997
|
-
|
|
1998
|
-
|
|
1999
|
-
|
|
2000
|
-
|
|
2001
|
-
|
|
2002
|
-
|
|
2003
|
-
|
|
2034
|
+
const items = result.map((m) => ({
|
|
2035
|
+
title: m.frontmatter.title,
|
|
2036
|
+
status: m.frontmatter.status,
|
|
2037
|
+
confidence: m.frontmatter.confidence,
|
|
2038
|
+
sourceLabel: m.sourceLabel || "",
|
|
2039
|
+
relativePath: m.relativePath,
|
|
2040
|
+
}));
|
|
2041
|
+
outputResult(!!opts.json, { count: items.length, items }, () => {
|
|
2042
|
+
if (result.length === 0) {
|
|
2043
|
+
console.log("No memories match the lens filter.");
|
|
2044
|
+
return;
|
|
2045
|
+
}
|
|
2046
|
+
console.log(`${result.length} memories match:\n`);
|
|
2047
|
+
for (const m of result) {
|
|
2048
|
+
const src = m.sourceLabel || "";
|
|
2049
|
+
console.log(` [${m.frontmatter.status}] ${m.frontmatter.title} (${m.frontmatter.confidence})`);
|
|
2050
|
+
console.log(` ${src ? src + ":" : ""}${m.relativePath}`);
|
|
2051
|
+
console.log();
|
|
2052
|
+
}
|
|
2053
|
+
});
|
|
2004
2054
|
});
|
|
2005
2055
|
// ─── gnosys history <path> ───────────────────────────────────────────────
|
|
2006
2056
|
program
|
|
2007
2057
|
.command("history <memoryPath>")
|
|
2008
|
-
.description("Show
|
|
2058
|
+
.description("Show audit history for a memory")
|
|
2009
2059
|
.option("-n, --limit <number>", "Max entries", "20")
|
|
2010
|
-
.option("--
|
|
2060
|
+
.option("--json", "Output as JSON")
|
|
2011
2061
|
.action(async (memPath, opts) => {
|
|
2012
|
-
const
|
|
2013
|
-
|
|
2014
|
-
|
|
2015
|
-
console.error(`Memory not found: ${memPath}`);
|
|
2016
|
-
process.exit(1);
|
|
2017
|
-
}
|
|
2018
|
-
const sourceStore = resolver.getStores().find((s) => s.label === memory.sourceLabel);
|
|
2019
|
-
if (!sourceStore) {
|
|
2020
|
-
console.error("Could not locate source store.");
|
|
2021
|
-
process.exit(1);
|
|
2022
|
-
}
|
|
2023
|
-
if (!hasGitHistory(sourceStore.path)) {
|
|
2024
|
-
console.error("No git history available for this store.");
|
|
2062
|
+
const centralDb = GnosysDB.openCentral();
|
|
2063
|
+
if (!centralDb.isAvailable()) {
|
|
2064
|
+
console.error("Central DB not available.");
|
|
2025
2065
|
process.exit(1);
|
|
2026
2066
|
}
|
|
2027
|
-
|
|
2028
|
-
const
|
|
2029
|
-
if (!
|
|
2030
|
-
console.error(
|
|
2067
|
+
try {
|
|
2068
|
+
const dbMem = centralDb.getMemory(memPath);
|
|
2069
|
+
if (!dbMem) {
|
|
2070
|
+
console.error(`Memory not found: ${memPath}`);
|
|
2031
2071
|
process.exit(1);
|
|
2032
2072
|
}
|
|
2033
|
-
|
|
2034
|
-
|
|
2035
|
-
|
|
2036
|
-
|
|
2037
|
-
|
|
2038
|
-
|
|
2039
|
-
|
|
2040
|
-
|
|
2041
|
-
|
|
2042
|
-
|
|
2043
|
-
|
|
2044
|
-
|
|
2045
|
-
});
|
|
2046
|
-
|
|
2047
|
-
|
|
2048
|
-
|
|
2049
|
-
|
|
2050
|
-
|
|
2051
|
-
|
|
2052
|
-
|
|
2053
|
-
|
|
2054
|
-
|
|
2055
|
-
|
|
2056
|
-
|
|
2057
|
-
|
|
2058
|
-
if (!sourceStore?.writable) {
|
|
2059
|
-
console.error("Cannot rollback: store is read-only.");
|
|
2060
|
-
process.exit(1);
|
|
2061
|
-
}
|
|
2062
|
-
const success = rollbackToCommit(sourceStore.path, memory.relativePath, commitHash);
|
|
2063
|
-
if (success) {
|
|
2064
|
-
console.log(`Rolled back ${memory.frontmatter.title} to commit ${commitHash.substring(0, 7)}.`);
|
|
2073
|
+
const limit = parseInt(opts.limit, 10) || 20;
|
|
2074
|
+
const audits = centralDb.getAuditLog(dbMem.id, limit);
|
|
2075
|
+
outputResult(!!opts.json, {
|
|
2076
|
+
memoryId: dbMem.id,
|
|
2077
|
+
title: dbMem.title,
|
|
2078
|
+
created: dbMem.created,
|
|
2079
|
+
modified: dbMem.modified,
|
|
2080
|
+
entries: audits,
|
|
2081
|
+
}, () => {
|
|
2082
|
+
if (audits.length === 0) {
|
|
2083
|
+
console.log(`Memory: ${dbMem.title} (${dbMem.id})`);
|
|
2084
|
+
console.log(`Created: ${dbMem.created}`);
|
|
2085
|
+
console.log(`Modified: ${dbMem.modified}`);
|
|
2086
|
+
console.log("No audit history recorded.");
|
|
2087
|
+
return;
|
|
2088
|
+
}
|
|
2089
|
+
console.log(`History for ${dbMem.title} (${dbMem.id}, ${audits.length} entries):\n`);
|
|
2090
|
+
console.log(`Created: ${dbMem.created}`);
|
|
2091
|
+
console.log(`Modified: ${dbMem.modified}\n`);
|
|
2092
|
+
for (const entry of audits) {
|
|
2093
|
+
const date = entry.timestamp.split("T")[0];
|
|
2094
|
+
const detail = entry.details ? ` (${entry.details})` : "";
|
|
2095
|
+
console.log(` ${date} ${entry.operation}${detail}`);
|
|
2096
|
+
}
|
|
2097
|
+
});
|
|
2065
2098
|
}
|
|
2066
|
-
|
|
2067
|
-
|
|
2068
|
-
process.exit(1);
|
|
2099
|
+
finally {
|
|
2100
|
+
centralDb.close();
|
|
2069
2101
|
}
|
|
2070
2102
|
});
|
|
2071
2103
|
// ─── gnosys timeline ────────────────────────────────────────────────────
|
|
@@ -2075,6 +2107,7 @@ program
|
|
|
2075
2107
|
.option("-p, --period <period>", "Group by: day, week, month (default), year", "month")
|
|
2076
2108
|
.option("--project <id>", "Filter to a specific project ID (default: all projects)")
|
|
2077
2109
|
.option("--limit-titles <n>", "Show titles inline when an entry has <= N memories (default 5)", "5")
|
|
2110
|
+
.option("--json", "Output as JSON")
|
|
2078
2111
|
.action(async (opts) => {
|
|
2079
2112
|
const { groupDbByPeriod } = await import("./lib/timeline.js");
|
|
2080
2113
|
const centralDb = GnosysDB.openCentral();
|
|
@@ -2087,25 +2120,29 @@ program
|
|
|
2087
2120
|
? centralDb.getMemoriesByProject(opts.project)
|
|
2088
2121
|
: centralDb.getActiveMemories();
|
|
2089
2122
|
if (memories.length === 0) {
|
|
2090
|
-
|
|
2123
|
+
outputResult(!!opts.json, { period: opts.period, count: 0, entries: [] }, () => {
|
|
2124
|
+
console.log("No memories found.");
|
|
2125
|
+
});
|
|
2091
2126
|
return;
|
|
2092
2127
|
}
|
|
2093
2128
|
const entries = groupDbByPeriod(memories, opts.period);
|
|
2094
2129
|
const titleLimit = Math.max(0, parseInt(opts.limitTitles, 10) || 5);
|
|
2095
|
-
|
|
2096
|
-
|
|
2097
|
-
const
|
|
2098
|
-
|
|
2099
|
-
|
|
2100
|
-
|
|
2101
|
-
|
|
2102
|
-
|
|
2103
|
-
|
|
2104
|
-
|
|
2105
|
-
|
|
2130
|
+
outputResult(!!opts.json, { period: opts.period, count: memories.length, entries }, () => {
|
|
2131
|
+
console.log(`Knowledge Timeline (by ${opts.period}, ${memories.length} memories):\n`);
|
|
2132
|
+
for (const entry of entries) {
|
|
2133
|
+
const parts = [];
|
|
2134
|
+
if (entry.created > 0)
|
|
2135
|
+
parts.push(`${entry.created} created`);
|
|
2136
|
+
if (entry.modified > 0)
|
|
2137
|
+
parts.push(`${entry.modified} modified`);
|
|
2138
|
+
console.log(` ${entry.period}: ${parts.join(", ")}`);
|
|
2139
|
+
if (entry.titles.length > 0 && entry.titles.length <= titleLimit) {
|
|
2140
|
+
for (const t of entry.titles) {
|
|
2141
|
+
console.log(` + ${t}`);
|
|
2142
|
+
}
|
|
2106
2143
|
}
|
|
2107
2144
|
}
|
|
2108
|
-
}
|
|
2145
|
+
});
|
|
2109
2146
|
}
|
|
2110
2147
|
finally {
|
|
2111
2148
|
centralDb.close();
|
|
@@ -2253,7 +2290,8 @@ program
|
|
|
2253
2290
|
program
|
|
2254
2291
|
.command("links <memoryPath>")
|
|
2255
2292
|
.description("Show wikilinks for a memory — both outgoing [[links]] and backlinks from other memories")
|
|
2256
|
-
.
|
|
2293
|
+
.option("--json", "Output as JSON")
|
|
2294
|
+
.action(async (memPath, opts) => {
|
|
2257
2295
|
const resolver = await getResolver();
|
|
2258
2296
|
const memory = await resolver.readMemory(memPath);
|
|
2259
2297
|
if (!memory) {
|
|
@@ -2263,33 +2301,41 @@ program
|
|
|
2263
2301
|
const allMemories = await resolver.getAllMemories();
|
|
2264
2302
|
const outgoing = getOutgoingLinks(allMemories, memory.relativePath);
|
|
2265
2303
|
const backlinks = getBacklinks(allMemories, memory.relativePath);
|
|
2266
|
-
|
|
2267
|
-
|
|
2268
|
-
|
|
2269
|
-
|
|
2270
|
-
|
|
2271
|
-
|
|
2304
|
+
outputResult(!!opts.json, {
|
|
2305
|
+
memoryPath: memPath,
|
|
2306
|
+
title: memory.frontmatter.title,
|
|
2307
|
+
outgoing,
|
|
2308
|
+
backlinks,
|
|
2309
|
+
}, () => {
|
|
2310
|
+
console.log(`Links for ${memory.frontmatter.title}:\n`);
|
|
2311
|
+
if (outgoing.length > 0) {
|
|
2312
|
+
console.log(` Outgoing (${outgoing.length}):`);
|
|
2313
|
+
for (const link of outgoing) {
|
|
2314
|
+
const display = link.displayText ? ` (${link.displayText})` : "";
|
|
2315
|
+
console.log(` → [[${link.target}]]${display}`);
|
|
2316
|
+
}
|
|
2272
2317
|
}
|
|
2273
|
-
|
|
2274
|
-
|
|
2275
|
-
console.log(" No outgoing links.");
|
|
2276
|
-
}
|
|
2277
|
-
console.log();
|
|
2278
|
-
if (backlinks.length > 0) {
|
|
2279
|
-
console.log(` Backlinks (${backlinks.length}):`);
|
|
2280
|
-
for (const link of backlinks) {
|
|
2281
|
-
console.log(` ← ${link.sourceTitle} (${link.sourcePath})`);
|
|
2318
|
+
else {
|
|
2319
|
+
console.log(" No outgoing links.");
|
|
2282
2320
|
}
|
|
2283
|
-
|
|
2284
|
-
|
|
2285
|
-
|
|
2286
|
-
|
|
2321
|
+
console.log();
|
|
2322
|
+
if (backlinks.length > 0) {
|
|
2323
|
+
console.log(` Backlinks (${backlinks.length}):`);
|
|
2324
|
+
for (const link of backlinks) {
|
|
2325
|
+
console.log(` ← ${link.sourceTitle} (${link.sourcePath})`);
|
|
2326
|
+
}
|
|
2327
|
+
}
|
|
2328
|
+
else {
|
|
2329
|
+
console.log(" No backlinks.");
|
|
2330
|
+
}
|
|
2331
|
+
});
|
|
2287
2332
|
});
|
|
2288
2333
|
// ─── gnosys graph ───────────────────────────────────────────────────────
|
|
2289
2334
|
program
|
|
2290
2335
|
.command("graph")
|
|
2291
2336
|
.description("Show the [[wikilink]] cross-reference graph between memories. Empty until you start using [[Title]] in memory content — then this shows which memories reference each other.")
|
|
2292
|
-
.
|
|
2337
|
+
.option("--json", "Output as JSON")
|
|
2338
|
+
.action(async (opts) => {
|
|
2293
2339
|
// v5.4.1: Query the central DB directly. Previously this used the
|
|
2294
2340
|
// filesystem resolver, which returns nothing in v5.x DB-only mode
|
|
2295
2341
|
// because memories no longer live as markdown files.
|
|
@@ -2302,7 +2348,9 @@ program
|
|
|
2302
2348
|
}
|
|
2303
2349
|
const dbMemories = centralDb.getAllMemories();
|
|
2304
2350
|
if (dbMemories.length === 0) {
|
|
2305
|
-
|
|
2351
|
+
outputResult(!!opts.json, { totalLinks: 0, orphanedLinks: [], nodes: [] }, () => {
|
|
2352
|
+
console.log("No memories found.");
|
|
2353
|
+
});
|
|
2306
2354
|
return;
|
|
2307
2355
|
}
|
|
2308
2356
|
// Adapt DbMemory → legacy Memory shape that buildLinkGraph expects.
|
|
@@ -2339,7 +2387,13 @@ program
|
|
|
2339
2387
|
};
|
|
2340
2388
|
});
|
|
2341
2389
|
const graph = buildLinkGraph(adapted);
|
|
2342
|
-
|
|
2390
|
+
outputResult(!!opts.json, {
|
|
2391
|
+
totalLinks: graph.totalLinks,
|
|
2392
|
+
orphanedLinks: graph.orphanedLinks,
|
|
2393
|
+
nodes: Array.from(graph.nodes.values()),
|
|
2394
|
+
}, () => {
|
|
2395
|
+
console.log(formatGraphSummary(graph));
|
|
2396
|
+
});
|
|
2343
2397
|
}
|
|
2344
2398
|
finally {
|
|
2345
2399
|
centralDb?.close();
|
|
@@ -2689,6 +2743,7 @@ program
|
|
|
2689
2743
|
.command("semantic-search <query>")
|
|
2690
2744
|
.description("Search using semantic similarity only (requires embeddings)")
|
|
2691
2745
|
.option("-l, --limit <n>", "Max results", "15")
|
|
2746
|
+
.option("--json", "Output as JSON")
|
|
2692
2747
|
.action(async (query, opts) => {
|
|
2693
2748
|
const resolver = await getResolver();
|
|
2694
2749
|
const stores = resolver.getStores();
|
|
@@ -2707,10 +2762,20 @@ program
|
|
|
2707
2762
|
const embeddings = new GnosysEmbeddings(storePath);
|
|
2708
2763
|
const hybridSearch = new GnosysHybridSearch(search, embeddings, resolver, storePath);
|
|
2709
2764
|
const results = await hybridSearch.hybridSearch(query, parseInt(opts.limit), "semantic");
|
|
2710
|
-
|
|
2711
|
-
|
|
2712
|
-
|
|
2713
|
-
|
|
2765
|
+
outputResult(!!opts.json, {
|
|
2766
|
+
query,
|
|
2767
|
+
count: results.length,
|
|
2768
|
+
results: results.map((r) => ({
|
|
2769
|
+
title: r.title,
|
|
2770
|
+
relativePath: r.relativePath,
|
|
2771
|
+
score: r.score,
|
|
2772
|
+
snippet: r.snippet,
|
|
2773
|
+
})),
|
|
2774
|
+
}, () => {
|
|
2775
|
+
if (results.length === 0) {
|
|
2776
|
+
console.log(`No semantic results for "${query}". Run gnosys reindex first.`);
|
|
2777
|
+
return;
|
|
2778
|
+
}
|
|
2714
2779
|
console.log(`Found ${results.length} semantic results for "${query}":\n`);
|
|
2715
2780
|
for (const r of results) {
|
|
2716
2781
|
console.log(` ${r.title}`);
|
|
@@ -2718,7 +2783,7 @@ program
|
|
|
2718
2783
|
console.log(` Similarity: ${r.score.toFixed(4)}`);
|
|
2719
2784
|
console.log(` ${r.snippet.substring(0, 120)}...\n`);
|
|
2720
2785
|
}
|
|
2721
|
-
}
|
|
2786
|
+
});
|
|
2722
2787
|
search.close();
|
|
2723
2788
|
embeddings.close();
|
|
2724
2789
|
});
|
|
@@ -2732,6 +2797,7 @@ program
|
|
|
2732
2797
|
.option("--federated", "Use federated search with tier boosting (project > user > global)")
|
|
2733
2798
|
.option("--scope <scope>", "Filter by scope: project, user, global (comma-separated)")
|
|
2734
2799
|
.option("-d, --directory <dir>", "Project directory for context")
|
|
2800
|
+
.option("--json", "Output as JSON")
|
|
2735
2801
|
.action(async (question, opts) => {
|
|
2736
2802
|
const resolver = await getResolver();
|
|
2737
2803
|
const stores = resolver.getStores();
|
|
@@ -2771,7 +2837,7 @@ program
|
|
|
2771
2837
|
const envVar = envVarMap[providerName];
|
|
2772
2838
|
if (envVar) {
|
|
2773
2839
|
console.error(`No LLM provider available. Configured default is "${providerName}" but its key wasn't found. ` +
|
|
2774
|
-
`Set ${envVar}, run 'gnosys setup' to store one in
|
|
2840
|
+
`Set ${envVar}, run 'gnosys setup' to store one in ${getSecureStorageSetupHint()}, or add llm.${providerName}.apiKey to gnosys.json.`);
|
|
2775
2841
|
}
|
|
2776
2842
|
else {
|
|
2777
2843
|
console.error(`No LLM provider available. Provider "${providerName}" is not reachable. Run 'gnosys setup' to configure one.`);
|
|
@@ -2808,7 +2874,7 @@ program
|
|
|
2808
2874
|
}
|
|
2809
2875
|
}
|
|
2810
2876
|
const mode = opts.mode;
|
|
2811
|
-
const useStream = opts.stream !== false;
|
|
2877
|
+
const useStream = opts.stream !== false && !opts.json;
|
|
2812
2878
|
try {
|
|
2813
2879
|
const result = await ask.ask(question, {
|
|
2814
2880
|
limit: parseInt(opts.limit),
|
|
@@ -2827,25 +2893,35 @@ program
|
|
|
2827
2893
|
}
|
|
2828
2894
|
: undefined,
|
|
2829
2895
|
});
|
|
2830
|
-
|
|
2831
|
-
|
|
2832
|
-
|
|
2833
|
-
|
|
2834
|
-
|
|
2835
|
-
|
|
2836
|
-
|
|
2837
|
-
|
|
2896
|
+
outputResult(!!opts.json, {
|
|
2897
|
+
question,
|
|
2898
|
+
answer: result.answer,
|
|
2899
|
+
sources: result.sources.map((s) => ({
|
|
2900
|
+
title: s.title,
|
|
2901
|
+
relativePath: s.relativePath,
|
|
2902
|
+
})),
|
|
2903
|
+
deepQueryUsed: result.deepQueryUsed ?? false,
|
|
2904
|
+
}, () => {
|
|
2905
|
+
if (!useStream) {
|
|
2906
|
+
console.log(result.answer);
|
|
2907
|
+
}
|
|
2908
|
+
if (result.sources.length > 0) {
|
|
2909
|
+
console.log("\n\n--- Sources ---");
|
|
2910
|
+
for (const s of result.sources) {
|
|
2911
|
+
console.log(` [[${s.relativePath.split("/").pop()}]] — ${s.title}`);
|
|
2912
|
+
}
|
|
2913
|
+
}
|
|
2914
|
+
if (result.deepQueryUsed) {
|
|
2915
|
+
console.log("\n(Deep query was used — a follow-up search expanded the context)");
|
|
2838
2916
|
}
|
|
2839
|
-
|
|
2917
|
+
});
|
|
2918
|
+
if (result.sources.length > 0) {
|
|
2840
2919
|
const writeTarget = resolver.getWriteTarget();
|
|
2841
2920
|
if (writeTarget) {
|
|
2842
2921
|
const { GnosysMaintenanceEngine } = await import("./lib/maintenance.js");
|
|
2843
2922
|
await GnosysMaintenanceEngine.reinforceBatch(writeTarget.store, result.sources.map((s) => s.relativePath)).catch(() => { });
|
|
2844
2923
|
}
|
|
2845
2924
|
}
|
|
2846
|
-
if (result.deepQueryUsed) {
|
|
2847
|
-
console.log("\n(Deep query was used — a follow-up search expanded the context)");
|
|
2848
|
-
}
|
|
2849
2925
|
}
|
|
2850
2926
|
catch (err) {
|
|
2851
2927
|
console.error(`Ask failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
@@ -3254,7 +3330,7 @@ program
|
|
|
3254
3330
|
}
|
|
3255
3331
|
const archive = new GnosysArchive(writeTarget.path);
|
|
3256
3332
|
if (!archive.isAvailable()) {
|
|
3257
|
-
console.error("Archive not available.
|
|
3333
|
+
console.error("Archive not available. Install it with: npm install better-sqlite3");
|
|
3258
3334
|
process.exit(1);
|
|
3259
3335
|
}
|
|
3260
3336
|
const results = archive.searchArchive(query, parseInt(opts.limit));
|
|
@@ -3598,20 +3674,27 @@ program
|
|
|
3598
3674
|
// global binary (see src/lib/upgrade.ts).
|
|
3599
3675
|
program
|
|
3600
3676
|
.command("upgrade")
|
|
3601
|
-
.description("Upgrade gnosys itself
|
|
3677
|
+
.description("Upgrade gnosys itself and signal running MCP servers to restart. After upgrading, suggests running 'gnosys setup sync-projects'.")
|
|
3602
3678
|
.option("--yes", "Skip the post-upgrade sync-projects prompt and exit")
|
|
3603
3679
|
.option("--no-sync", "Don't suggest running sync-projects afterward")
|
|
3604
3680
|
.action(async (opts) => {
|
|
3605
3681
|
const currentVersion = pkg.version;
|
|
3606
3682
|
console.log(`Gnosys CLI: currently v${currentVersion}`);
|
|
3607
|
-
|
|
3683
|
+
const { detectPackageManager, upgradeCommand } = await import("./lib/packageManager.js");
|
|
3684
|
+
const pm = detectPackageManager();
|
|
3685
|
+
const cmd = upgradeCommand(pm);
|
|
3686
|
+
if (!cmd) {
|
|
3687
|
+
console.log("Running under npx — there's no global install to upgrade. Use `npx gnosys@latest` to run the latest.");
|
|
3688
|
+
return;
|
|
3689
|
+
}
|
|
3690
|
+
console.log(`Running: ${cmd} ...`);
|
|
3608
3691
|
const { execSync } = await import("child_process");
|
|
3609
3692
|
try {
|
|
3610
|
-
execSync(
|
|
3693
|
+
execSync(cmd, { stdio: "inherit" });
|
|
3611
3694
|
}
|
|
3612
3695
|
catch (err) {
|
|
3613
3696
|
console.error(`\nUpgrade failed: ${err instanceof Error ? err.message : err}`);
|
|
3614
|
-
console.error(`Try running '
|
|
3697
|
+
console.error(`Try running '${cmd}' manually.`);
|
|
3615
3698
|
process.exit(1);
|
|
3616
3699
|
}
|
|
3617
3700
|
// Read the newly-installed version (best-effort — we may still be the
|
|
@@ -3898,6 +3981,7 @@ async function isLegacyStoreSafeToRemove(localDbPath) {
|
|
|
3898
3981
|
try {
|
|
3899
3982
|
const Database = (await import("better-sqlite3")).default;
|
|
3900
3983
|
const localDb = new Database(localDbPath, { readonly: true });
|
|
3984
|
+
localDb.pragma("busy_timeout = 5000");
|
|
3901
3985
|
let localIds = [];
|
|
3902
3986
|
try {
|
|
3903
3987
|
const rows = localDb.prepare("SELECT id FROM memories").all();
|
|
@@ -4322,6 +4406,9 @@ exportCmd
|
|
|
4322
4406
|
const ratio = (result.compressedBytes / result.uncompressedBytes * 100).toFixed(1);
|
|
4323
4407
|
console.log(`Exported project ${projectId}`);
|
|
4324
4408
|
console.log(` Memories: ${result.memoryCount}`);
|
|
4409
|
+
if (result.archivedExcluded > 0) {
|
|
4410
|
+
console.log(` Archived: ${result.archivedExcluded} excluded — re-run with --include-archived for a full backup`);
|
|
4411
|
+
}
|
|
4325
4412
|
console.log(` Relationships: ${result.relationshipCount}`);
|
|
4326
4413
|
console.log(` Audit entries: ${result.auditEntryCount}`);
|
|
4327
4414
|
console.log(` Bundle: ${result.outputPath}`);
|
|
@@ -4337,7 +4424,18 @@ program
|
|
|
4337
4424
|
.command("serve")
|
|
4338
4425
|
.description("Start the MCP server (stdio mode). Used by IDE integrations — Claude Code/Desktop, Cursor, Codex, etc. spawn this command in the background to talk to gnosys via the Model Context Protocol. You don't normally invoke this yourself; `gnosys init <ide>` wires it into the IDE config.")
|
|
4339
4426
|
.option("--with-maintenance", "Run maintenance every 6 hours in background")
|
|
4427
|
+
.option("--transport <mode>", "Transport: 'stdio' (default) or 'http' (central-server topology)", "stdio")
|
|
4428
|
+
.option("--host <addr>", "HTTP bind address — http transport (default 127.0.0.1; use a tailnet addr to share)", "127.0.0.1")
|
|
4429
|
+
.option("--port <n>", "HTTP port — http transport", "7777")
|
|
4430
|
+
.option("--token <token>", "Require 'Authorization: Bearer <token>' — http transport")
|
|
4340
4431
|
.action(async (opts) => {
|
|
4432
|
+
if (opts.transport === "http") {
|
|
4433
|
+
process.env.GNOSYS_TRANSPORT = "http";
|
|
4434
|
+
process.env.GNOSYS_HTTP_HOST = opts.host || "127.0.0.1";
|
|
4435
|
+
process.env.GNOSYS_HTTP_PORT = String(opts.port || "7777");
|
|
4436
|
+
if (opts.token)
|
|
4437
|
+
process.env.GNOSYS_SERVE_TOKEN = opts.token;
|
|
4438
|
+
}
|
|
4341
4439
|
if (opts.withMaintenance) {
|
|
4342
4440
|
// Start background maintenance loop
|
|
4343
4441
|
const SIX_HOURS = 6 * 60 * 60 * 1000;
|
|
@@ -4363,7 +4461,8 @@ program
|
|
|
4363
4461
|
setInterval(runMaintenance, SIX_HOURS);
|
|
4364
4462
|
console.error("[maintenance] Background maintenance enabled (every 6 hours)");
|
|
4365
4463
|
}
|
|
4366
|
-
await import("./index.js");
|
|
4464
|
+
const { startMcpServer } = await import("./index.js");
|
|
4465
|
+
await startMcpServer();
|
|
4367
4466
|
});
|
|
4368
4467
|
// ─── gnosys recall ───────────────────────────────────────────────────────
|
|
4369
4468
|
program
|
|
@@ -4715,6 +4814,55 @@ program
|
|
|
4715
4814
|
function isDeadProjectDir(dir) {
|
|
4716
4815
|
return !existsSync(dir);
|
|
4717
4816
|
}
|
|
4817
|
+
program
|
|
4818
|
+
.command("connect")
|
|
4819
|
+
.description("Point an IDE at a remote gnosys server (central-server topology) instead of spawning a local one")
|
|
4820
|
+
.requiredOption("--url <url>", "Remote MCP URL, e.g. http://studio.tailnet.ts.net:7777/mcp")
|
|
4821
|
+
.option("--token <token>", "Bearer token if the server requires auth")
|
|
4822
|
+
.option("--ide <ide>", "IDE config to write: cursor | claude-desktop", "cursor")
|
|
4823
|
+
.option("--dir <dir>", "Project dir for cursor config (default: cwd)")
|
|
4824
|
+
.option("--print", "Print the config snippet instead of writing files")
|
|
4825
|
+
.action(async (opts) => {
|
|
4826
|
+
const m = await import("./lib/mcpClientConfig.js");
|
|
4827
|
+
const remote = { url: opts.url, token: opts.token };
|
|
4828
|
+
if (opts.print) {
|
|
4829
|
+
console.log(JSON.stringify({ mcpServers: { gnosys: m.remoteMcpEntry(remote) } }, null, 2));
|
|
4830
|
+
return;
|
|
4831
|
+
}
|
|
4832
|
+
const ide = opts.ide === "claude-desktop" ? "claude-desktop" : "cursor";
|
|
4833
|
+
try {
|
|
4834
|
+
const file = await m.writeRemoteClientConfig(ide, opts.dir || process.cwd(), remote);
|
|
4835
|
+
console.log(`✓ Pointed ${ide} at ${opts.url}`);
|
|
4836
|
+
console.log(` wrote: ${file}${opts.token ? " (bearer token included)" : ""}`);
|
|
4837
|
+
console.log(" Restart the IDE / MCP servers to pick it up.");
|
|
4838
|
+
}
|
|
4839
|
+
catch (e) {
|
|
4840
|
+
console.error(`connect failed: ${e instanceof Error ? e.message : e}`);
|
|
4841
|
+
process.exit(1);
|
|
4842
|
+
}
|
|
4843
|
+
});
|
|
4844
|
+
program
|
|
4845
|
+
.command("centralize")
|
|
4846
|
+
.description("Copy this machine's local brain (~/.gnosys/gnosys.db) to seed a central server — a Docker volume or another host")
|
|
4847
|
+
.requiredOption("--to <dir>", "Target directory to write gnosys.db into (e.g. a mounted volume)")
|
|
4848
|
+
.option("--from-local", "Source is this machine's local brain (default)")
|
|
4849
|
+
.option("--force", "Overwrite an existing gnosys.db at the target")
|
|
4850
|
+
.action(async (opts) => {
|
|
4851
|
+
const { centralizeDb } = await import("./lib/centralize.js");
|
|
4852
|
+
try {
|
|
4853
|
+
const r = await centralizeDb({ to: opts.to, force: opts.force });
|
|
4854
|
+
const mb = (r.bytes / 1024 / 1024).toFixed(1);
|
|
4855
|
+
console.log("✓ Seeded central brain:");
|
|
4856
|
+
console.log(` from: ${r.source}`);
|
|
4857
|
+
console.log(` to: ${r.target} (${mb} MB)`);
|
|
4858
|
+
console.log("");
|
|
4859
|
+
console.log(`Run the server against it with GNOSYS_HOME=${opts.to}, or mount this dir as the container's /data volume.`);
|
|
4860
|
+
}
|
|
4861
|
+
catch (e) {
|
|
4862
|
+
console.error(`centralize failed: ${e instanceof Error ? e.message : e}`);
|
|
4863
|
+
process.exit(1);
|
|
4864
|
+
}
|
|
4865
|
+
});
|
|
4718
4866
|
const machineCmd = program
|
|
4719
4867
|
.command("machine")
|
|
4720
4868
|
.description("Manage this machine's local config (machine.json: machineId, roots, remote)");
|
|
@@ -4954,6 +5102,13 @@ prefCmd
|
|
|
4954
5102
|
console.error("Central DB not available (better-sqlite3 missing).");
|
|
4955
5103
|
process.exit(1);
|
|
4956
5104
|
}
|
|
5105
|
+
if (!KNOWN_PREFERENCE_KEYS.includes(key)) {
|
|
5106
|
+
const suggestion = suggestPreferenceKey(key);
|
|
5107
|
+
if (suggestion) {
|
|
5108
|
+
console.error(`Unknown preference key \`${key}\` — did you mean \`${suggestion}\`?`);
|
|
5109
|
+
process.exit(1);
|
|
5110
|
+
}
|
|
5111
|
+
}
|
|
4957
5112
|
const tags = opts.tags ? opts.tags.split(",").map((t) => t.trim()) : undefined;
|
|
4958
5113
|
const pref = setPreference(centralDb, key, value, { title: opts.title, tags });
|
|
4959
5114
|
console.log(`Preference set: ${pref.title}`);
|
|
@@ -5394,8 +5549,8 @@ program
|
|
|
5394
5549
|
const dashboardPath = path.join(home, "gnosys-dashboard.html");
|
|
5395
5550
|
const { writeFileSync } = await import("fs");
|
|
5396
5551
|
writeFileSync(dashboardPath, generatePortfolioHtml(report, dashboardPath), "utf-8");
|
|
5397
|
-
const {
|
|
5398
|
-
|
|
5552
|
+
const { execFile } = await import("child_process");
|
|
5553
|
+
execFile("open", [dashboardPath]);
|
|
5399
5554
|
console.log(`Dashboard opened: ${dashboardPath}`);
|
|
5400
5555
|
return;
|
|
5401
5556
|
}
|
|
@@ -5729,7 +5884,7 @@ program
|
|
|
5729
5884
|
const dbDir = GnosysDB.getCentralDbDir();
|
|
5730
5885
|
const db = new GnosysDB(dbDir);
|
|
5731
5886
|
if (!db.isAvailable()) {
|
|
5732
|
-
console.error("Error: GnosysDB not available.
|
|
5887
|
+
console.error("Error: GnosysDB not available. Install it with: npm install better-sqlite3");
|
|
5733
5888
|
process.exit(1);
|
|
5734
5889
|
}
|
|
5735
5890
|
const result = traceCodebase(db, directory, {
|
|
@@ -5774,7 +5929,7 @@ program
|
|
|
5774
5929
|
const dbDir = GnosysDB.getCentralDbDir();
|
|
5775
5930
|
const db = new GnosysDB(dbDir);
|
|
5776
5931
|
if (!db.isAvailable()) {
|
|
5777
|
-
console.error("Error: GnosysDB not available.
|
|
5932
|
+
console.error("Error: GnosysDB not available. Install it with: npm install better-sqlite3");
|
|
5778
5933
|
process.exit(1);
|
|
5779
5934
|
}
|
|
5780
5935
|
const params = {
|
|
@@ -5834,7 +5989,7 @@ program
|
|
|
5834
5989
|
const dbDir = GnosysDB.getCentralDbDir();
|
|
5835
5990
|
const db = new GnosysDB(dbDir);
|
|
5836
5991
|
if (!db.isAvailable()) {
|
|
5837
|
-
console.error("Error: GnosysDB not available.
|
|
5992
|
+
console.error("Error: GnosysDB not available. Install it with: npm install better-sqlite3");
|
|
5838
5993
|
process.exit(1);
|
|
5839
5994
|
}
|
|
5840
5995
|
const params = {
|
|
@@ -6571,4 +6726,3 @@ if (!isTestEnv()) {
|
|
|
6571
6726
|
}
|
|
6572
6727
|
}
|
|
6573
6728
|
program.parse();
|
|
6574
|
-
//# sourceMappingURL=cli.js.map
|