claude-code-workflow 6.2.2 → 6.2.4
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/ccw/dist/cli.d.ts +2 -0
- package/ccw/dist/cli.d.ts.map +1 -0
- package/ccw/dist/cli.js +219 -0
- package/ccw/dist/cli.js.map +1 -0
- package/ccw/dist/commands/cli.d.ts +32 -0
- package/ccw/dist/commands/cli.d.ts.map +1 -0
- package/ccw/dist/commands/cli.js +619 -0
- package/ccw/dist/commands/cli.js.map +1 -0
- package/ccw/dist/commands/core-memory.d.ts +32 -0
- package/ccw/dist/commands/core-memory.d.ts.map +1 -0
- package/ccw/dist/commands/core-memory.js +640 -0
- package/ccw/dist/commands/core-memory.js.map +1 -0
- package/ccw/dist/commands/hook.d.ts +16 -0
- package/ccw/dist/commands/hook.d.ts.map +1 -0
- package/ccw/dist/commands/hook.js +276 -0
- package/ccw/dist/commands/hook.js.map +1 -0
- package/ccw/dist/commands/install.d.ts +12 -0
- package/ccw/dist/commands/install.d.ts.map +1 -0
- package/ccw/dist/commands/install.js +443 -0
- package/ccw/dist/commands/install.js.map +1 -0
- package/ccw/dist/commands/list.d.ts +5 -0
- package/ccw/dist/commands/list.d.ts.map +1 -0
- package/ccw/dist/commands/list.js +32 -0
- package/ccw/dist/commands/list.js.map +1 -0
- package/ccw/dist/commands/memory.d.ts +57 -0
- package/ccw/dist/commands/memory.d.ts.map +1 -0
- package/ccw/dist/commands/memory.js +890 -0
- package/ccw/dist/commands/memory.js.map +1 -0
- package/ccw/dist/commands/serve.d.ts +12 -0
- package/ccw/dist/commands/serve.d.ts.map +1 -0
- package/ccw/dist/commands/serve.js +63 -0
- package/ccw/dist/commands/serve.js.map +1 -0
- package/ccw/dist/commands/session-path-resolver.d.ts +45 -0
- package/ccw/dist/commands/session-path-resolver.d.ts.map +1 -0
- package/ccw/dist/commands/session-path-resolver.js +302 -0
- package/ccw/dist/commands/session-path-resolver.js.map +1 -0
- package/ccw/dist/commands/session.d.ts +12 -0
- package/ccw/dist/commands/session.d.ts.map +1 -0
- package/ccw/dist/commands/session.js +954 -0
- package/ccw/dist/commands/session.js.map +1 -0
- package/ccw/dist/commands/stop.d.ts +11 -0
- package/ccw/dist/commands/stop.d.ts.map +1 -0
- package/ccw/dist/commands/stop.js +96 -0
- package/ccw/dist/commands/stop.js.map +1 -0
- package/ccw/dist/commands/tool.d.ts +29 -0
- package/ccw/dist/commands/tool.d.ts.map +1 -0
- package/ccw/dist/commands/tool.js +173 -0
- package/ccw/dist/commands/tool.js.map +1 -0
- package/ccw/dist/commands/uninstall.d.ts +9 -0
- package/ccw/dist/commands/uninstall.d.ts.map +1 -0
- package/ccw/dist/commands/uninstall.js +239 -0
- package/ccw/dist/commands/uninstall.js.map +1 -0
- package/ccw/dist/commands/upgrade.d.ts +10 -0
- package/ccw/dist/commands/upgrade.d.ts.map +1 -0
- package/ccw/dist/commands/upgrade.js +288 -0
- package/ccw/dist/commands/upgrade.js.map +1 -0
- package/ccw/dist/commands/view.d.ts +14 -0
- package/ccw/dist/commands/view.d.ts.map +1 -0
- package/ccw/dist/commands/view.js +100 -0
- package/ccw/dist/commands/view.js.map +1 -0
- package/ccw/dist/config/storage-paths.d.ts +184 -0
- package/ccw/dist/config/storage-paths.d.ts.map +1 -0
- package/ccw/dist/config/storage-paths.js +536 -0
- package/ccw/dist/config/storage-paths.js.map +1 -0
- package/ccw/dist/core/cache-manager.d.ts +80 -0
- package/ccw/dist/core/cache-manager.d.ts.map +1 -0
- package/ccw/dist/core/cache-manager.js +260 -0
- package/ccw/dist/core/cache-manager.js.map +1 -0
- package/ccw/dist/core/claude-freshness.d.ts +53 -0
- package/ccw/dist/core/claude-freshness.d.ts.map +1 -0
- package/ccw/dist/core/claude-freshness.js +232 -0
- package/ccw/dist/core/claude-freshness.js.map +1 -0
- package/ccw/dist/core/core-memory-store.d.ts +320 -0
- package/ccw/dist/core/core-memory-store.d.ts.map +1 -0
- package/ccw/dist/core/core-memory-store.js +1177 -0
- package/ccw/dist/core/core-memory-store.js.map +1 -0
- package/ccw/dist/core/dashboard-generator-patch.d.ts +2 -0
- package/ccw/dist/core/dashboard-generator-patch.d.ts.map +1 -0
- package/ccw/dist/core/dashboard-generator-patch.js +48 -0
- package/ccw/dist/core/dashboard-generator-patch.js.map +1 -0
- package/ccw/dist/core/dashboard-generator.d.ts +8 -0
- package/ccw/dist/core/dashboard-generator.d.ts.map +1 -0
- package/ccw/dist/core/dashboard-generator.js +695 -0
- package/ccw/dist/core/dashboard-generator.js.map +1 -0
- package/ccw/dist/core/data-aggregator.d.ts +145 -0
- package/ccw/dist/core/data-aggregator.d.ts.map +1 -0
- package/ccw/dist/core/data-aggregator.js +416 -0
- package/ccw/dist/core/data-aggregator.js.map +1 -0
- package/ccw/dist/core/history-importer.d.ts +102 -0
- package/ccw/dist/core/history-importer.d.ts.map +1 -0
- package/ccw/dist/core/history-importer.js +493 -0
- package/ccw/dist/core/history-importer.js.map +1 -0
- package/ccw/dist/core/lite-scanner-complete.d.ts +81 -0
- package/ccw/dist/core/lite-scanner-complete.d.ts.map +1 -0
- package/ccw/dist/core/lite-scanner-complete.js +368 -0
- package/ccw/dist/core/lite-scanner-complete.js.map +1 -0
- package/ccw/dist/core/lite-scanner.d.ts +81 -0
- package/ccw/dist/core/lite-scanner.d.ts.map +1 -0
- package/ccw/dist/core/lite-scanner.js +368 -0
- package/ccw/dist/core/lite-scanner.js.map +1 -0
- package/ccw/dist/core/manifest.d.ts +88 -0
- package/ccw/dist/core/manifest.d.ts.map +1 -0
- package/ccw/dist/core/manifest.js +214 -0
- package/ccw/dist/core/manifest.js.map +1 -0
- package/ccw/dist/core/memory-embedder-bridge.d.ts +83 -0
- package/ccw/dist/core/memory-embedder-bridge.d.ts.map +1 -0
- package/ccw/dist/core/memory-embedder-bridge.js +181 -0
- package/ccw/dist/core/memory-embedder-bridge.js.map +1 -0
- package/ccw/dist/core/memory-store.d.ts +249 -0
- package/ccw/dist/core/memory-store.d.ts.map +1 -0
- package/ccw/dist/core/memory-store.js +781 -0
- package/ccw/dist/core/memory-store.js.map +1 -0
- package/ccw/dist/core/routes/ccw-routes.d.ts +20 -0
- package/ccw/dist/core/routes/ccw-routes.d.ts.map +1 -0
- package/ccw/dist/core/routes/ccw-routes.js +70 -0
- package/ccw/dist/core/routes/ccw-routes.js.map +1 -0
- package/ccw/dist/core/routes/claude-routes.d.ts +19 -0
- package/ccw/dist/core/routes/claude-routes.d.ts.map +1 -0
- package/ccw/dist/core/routes/claude-routes.js +1017 -0
- package/ccw/dist/core/routes/claude-routes.js.map +1 -0
- package/ccw/dist/core/routes/cli-routes.d.ts +20 -0
- package/ccw/dist/core/routes/cli-routes.d.ts.map +1 -0
- package/ccw/dist/core/routes/cli-routes.js +468 -0
- package/ccw/dist/core/routes/cli-routes.js.map +1 -0
- package/ccw/dist/core/routes/codexlens-routes.d.ts +20 -0
- package/ccw/dist/core/routes/codexlens-routes.d.ts.map +1 -0
- package/ccw/dist/core/routes/codexlens-routes.js +754 -0
- package/ccw/dist/core/routes/codexlens-routes.js.map +1 -0
- package/ccw/dist/core/routes/core-memory-routes.d.ts +21 -0
- package/ccw/dist/core/routes/core-memory-routes.d.ts.map +1 -0
- package/ccw/dist/core/routes/core-memory-routes.js +520 -0
- package/ccw/dist/core/routes/core-memory-routes.js.map +1 -0
- package/ccw/dist/core/routes/files-routes.d.ts +20 -0
- package/ccw/dist/core/routes/files-routes.d.ts.map +1 -0
- package/ccw/dist/core/routes/files-routes.js +374 -0
- package/ccw/dist/core/routes/files-routes.js.map +1 -0
- package/ccw/dist/core/routes/graph-routes.d.ts +20 -0
- package/ccw/dist/core/routes/graph-routes.d.ts.map +1 -0
- package/ccw/dist/core/routes/graph-routes.js +517 -0
- package/ccw/dist/core/routes/graph-routes.js.map +1 -0
- package/ccw/dist/core/routes/help-routes.d.ts +20 -0
- package/ccw/dist/core/routes/help-routes.d.ts.map +1 -0
- package/ccw/dist/core/routes/help-routes.js +250 -0
- package/ccw/dist/core/routes/help-routes.js.map +1 -0
- package/ccw/dist/core/routes/hooks-routes.d.ts +21 -0
- package/ccw/dist/core/routes/hooks-routes.d.ts.map +1 -0
- package/ccw/dist/core/routes/hooks-routes.js +346 -0
- package/ccw/dist/core/routes/hooks-routes.js.map +1 -0
- package/ccw/dist/core/routes/mcp-routes.d.ts +20 -0
- package/ccw/dist/core/routes/mcp-routes.d.ts.map +1 -0
- package/ccw/dist/core/routes/mcp-routes.js +1129 -0
- package/ccw/dist/core/routes/mcp-routes.js.map +1 -0
- package/ccw/dist/core/routes/mcp-templates-db.d.ts +54 -0
- package/ccw/dist/core/routes/mcp-templates-db.d.ts.map +1 -0
- package/ccw/dist/core/routes/mcp-templates-db.js +226 -0
- package/ccw/dist/core/routes/mcp-templates-db.js.map +1 -0
- package/ccw/dist/core/routes/memory-routes.d.ts +21 -0
- package/ccw/dist/core/routes/memory-routes.d.ts.map +1 -0
- package/ccw/dist/core/routes/memory-routes.js +1095 -0
- package/ccw/dist/core/routes/memory-routes.js.map +1 -0
- package/ccw/dist/core/routes/rules-routes.d.ts +20 -0
- package/ccw/dist/core/routes/rules-routes.d.ts.map +1 -0
- package/ccw/dist/core/routes/rules-routes.js +442 -0
- package/ccw/dist/core/routes/rules-routes.js.map +1 -0
- package/ccw/dist/core/routes/session-routes.d.ts +20 -0
- package/ccw/dist/core/routes/session-routes.d.ts.map +1 -0
- package/ccw/dist/core/routes/session-routes.js +423 -0
- package/ccw/dist/core/routes/session-routes.js.map +1 -0
- package/ccw/dist/core/routes/skills-routes.d.ts +20 -0
- package/ccw/dist/core/routes/skills-routes.d.ts.map +1 -0
- package/ccw/dist/core/routes/skills-routes.js +533 -0
- package/ccw/dist/core/routes/skills-routes.js.map +1 -0
- package/ccw/dist/core/routes/status-routes.d.ts +20 -0
- package/ccw/dist/core/routes/status-routes.d.ts.map +1 -0
- package/ccw/dist/core/routes/status-routes.js +38 -0
- package/ccw/dist/core/routes/status-routes.js.map +1 -0
- package/ccw/dist/core/routes/system-routes.d.ts +22 -0
- package/ccw/dist/core/routes/system-routes.d.ts.map +1 -0
- package/ccw/dist/core/routes/system-routes.js +354 -0
- package/ccw/dist/core/routes/system-routes.js.map +1 -0
- package/ccw/dist/core/server.d.ts +17 -0
- package/ccw/dist/core/server.d.ts.map +1 -0
- package/ccw/dist/core/server.js +386 -0
- package/ccw/dist/core/server.js.map +1 -0
- package/ccw/dist/core/session-clustering-service.d.ts +153 -0
- package/ccw/dist/core/session-clustering-service.d.ts.map +1 -0
- package/ccw/dist/core/session-clustering-service.js +1065 -0
- package/ccw/dist/core/session-clustering-service.js.map +1 -0
- package/ccw/dist/core/session-scanner.d.ts +32 -0
- package/ccw/dist/core/session-scanner.d.ts.map +1 -0
- package/ccw/dist/core/session-scanner.js +253 -0
- package/ccw/dist/core/session-scanner.js.map +1 -0
- package/ccw/dist/core/websocket.d.ts +23 -0
- package/ccw/dist/core/websocket.d.ts.map +1 -0
- package/ccw/dist/core/websocket.js +168 -0
- package/ccw/dist/core/websocket.js.map +1 -0
- package/ccw/dist/index.d.ts +10 -0
- package/ccw/dist/index.d.ts.map +1 -0
- package/ccw/dist/index.js +10 -0
- package/ccw/dist/index.js.map +1 -0
- package/ccw/dist/mcp-server/index.d.ts +7 -0
- package/ccw/dist/mcp-server/index.d.ts.map +1 -0
- package/ccw/dist/mcp-server/index.js +157 -0
- package/ccw/dist/mcp-server/index.js.map +1 -0
- package/ccw/dist/tools/classify-folders.d.ts +26 -0
- package/ccw/dist/tools/classify-folders.d.ts.map +1 -0
- package/ccw/dist/tools/classify-folders.js +201 -0
- package/ccw/dist/tools/classify-folders.js.map +1 -0
- package/ccw/dist/tools/cli-config-manager.d.ts +62 -0
- package/ccw/dist/tools/cli-config-manager.d.ts.map +1 -0
- package/ccw/dist/tools/cli-config-manager.js +221 -0
- package/ccw/dist/tools/cli-config-manager.js.map +1 -0
- package/ccw/dist/tools/cli-executor.d.ts +373 -0
- package/ccw/dist/tools/cli-executor.d.ts.map +1 -0
- package/ccw/dist/tools/cli-executor.js +1625 -0
- package/ccw/dist/tools/cli-executor.js.map +1 -0
- package/ccw/dist/tools/cli-history-store.d.ts +330 -0
- package/ccw/dist/tools/cli-history-store.d.ts.map +1 -0
- package/ccw/dist/tools/cli-history-store.js +916 -0
- package/ccw/dist/tools/cli-history-store.js.map +1 -0
- package/ccw/dist/tools/codex-lens.d.ts +118 -0
- package/ccw/dist/tools/codex-lens.d.ts.map +1 -0
- package/ccw/dist/tools/codex-lens.js +962 -0
- package/ccw/dist/tools/codex-lens.js.map +1 -0
- package/ccw/dist/tools/convert-tokens-to-css.d.ts +14 -0
- package/ccw/dist/tools/convert-tokens-to-css.d.ts.map +1 -0
- package/ccw/dist/tools/convert-tokens-to-css.js +244 -0
- package/ccw/dist/tools/convert-tokens-to-css.js.map +1 -0
- package/ccw/dist/tools/core-memory.d.ts +66 -0
- package/ccw/dist/tools/core-memory.d.ts.map +1 -0
- package/ccw/dist/tools/core-memory.js +324 -0
- package/ccw/dist/tools/core-memory.js.map +1 -0
- package/ccw/dist/tools/detect-changed-modules.d.ts +24 -0
- package/ccw/dist/tools/detect-changed-modules.d.ts.map +1 -0
- package/ccw/dist/tools/detect-changed-modules.js +277 -0
- package/ccw/dist/tools/detect-changed-modules.js.map +1 -0
- package/ccw/dist/tools/discover-design-files.d.ts +36 -0
- package/ccw/dist/tools/discover-design-files.d.ts.map +1 -0
- package/ccw/dist/tools/discover-design-files.js +147 -0
- package/ccw/dist/tools/discover-design-files.js.map +1 -0
- package/ccw/dist/tools/edit-file.d.ts +28 -0
- package/ccw/dist/tools/edit-file.d.ts.map +1 -0
- package/ccw/dist/tools/edit-file.js +479 -0
- package/ccw/dist/tools/edit-file.js.map +1 -0
- package/ccw/dist/tools/generate-module-docs.d.ts +22 -0
- package/ccw/dist/tools/generate-module-docs.d.ts.map +1 -0
- package/ccw/dist/tools/generate-module-docs.js +379 -0
- package/ccw/dist/tools/generate-module-docs.js.map +1 -0
- package/ccw/dist/tools/get-modules-by-depth.d.ts +15 -0
- package/ccw/dist/tools/get-modules-by-depth.d.ts.map +1 -0
- package/ccw/dist/tools/get-modules-by-depth.js +296 -0
- package/ccw/dist/tools/get-modules-by-depth.js.map +1 -0
- package/ccw/dist/tools/index.d.ts +55 -0
- package/ccw/dist/tools/index.d.ts.map +1 -0
- package/ccw/dist/tools/index.js +304 -0
- package/ccw/dist/tools/index.js.map +1 -0
- package/ccw/dist/tools/native-session-discovery.d.ts +97 -0
- package/ccw/dist/tools/native-session-discovery.d.ts.map +1 -0
- package/ccw/dist/tools/native-session-discovery.js +700 -0
- package/ccw/dist/tools/native-session-discovery.js.map +1 -0
- package/ccw/dist/tools/notifier.d.ts +50 -0
- package/ccw/dist/tools/notifier.d.ts.map +1 -0
- package/ccw/dist/tools/notifier.js +90 -0
- package/ccw/dist/tools/notifier.js.map +1 -0
- package/ccw/dist/tools/read-file.d.ts +32 -0
- package/ccw/dist/tools/read-file.d.ts.map +1 -0
- package/ccw/dist/tools/read-file.js +329 -0
- package/ccw/dist/tools/read-file.js.map +1 -0
- package/ccw/dist/tools/resume-strategy.d.ts +48 -0
- package/ccw/dist/tools/resume-strategy.d.ts.map +1 -0
- package/ccw/dist/tools/resume-strategy.js +248 -0
- package/ccw/dist/tools/resume-strategy.js.map +1 -0
- package/ccw/dist/tools/session-content-parser.d.ts +58 -0
- package/ccw/dist/tools/session-content-parser.d.ts.map +1 -0
- package/ccw/dist/tools/session-content-parser.js +420 -0
- package/ccw/dist/tools/session-content-parser.js.map +1 -0
- package/ccw/dist/tools/session-manager.d.ts +9 -0
- package/ccw/dist/tools/session-manager.d.ts.map +1 -0
- package/ccw/dist/tools/session-manager.js +834 -0
- package/ccw/dist/tools/session-manager.js.map +1 -0
- package/ccw/dist/tools/smart-context.d.ts +35 -0
- package/ccw/dist/tools/smart-context.d.ts.map +1 -0
- package/ccw/dist/tools/smart-context.js +182 -0
- package/ccw/dist/tools/smart-context.js.map +1 -0
- package/ccw/dist/tools/smart-search.d.ts +105 -0
- package/ccw/dist/tools/smart-search.d.ts.map +1 -0
- package/ccw/dist/tools/smart-search.js +1753 -0
- package/ccw/dist/tools/smart-search.js.map +1 -0
- package/ccw/dist/tools/storage-manager.d.ts +114 -0
- package/ccw/dist/tools/storage-manager.d.ts.map +1 -0
- package/ccw/dist/tools/storage-manager.js +392 -0
- package/ccw/dist/tools/storage-manager.js.map +1 -0
- package/ccw/dist/tools/ui-generate-preview.d.ts +39 -0
- package/ccw/dist/tools/ui-generate-preview.d.ts.map +1 -0
- package/ccw/dist/tools/ui-generate-preview.js +300 -0
- package/ccw/dist/tools/ui-generate-preview.js.map +1 -0
- package/ccw/dist/tools/ui-instantiate-prototypes.d.ts +75 -0
- package/ccw/dist/tools/ui-instantiate-prototypes.d.ts.map +1 -0
- package/ccw/dist/tools/ui-instantiate-prototypes.js +256 -0
- package/ccw/dist/tools/ui-instantiate-prototypes.js.map +1 -0
- package/ccw/dist/tools/update-module-claude.d.ts +80 -0
- package/ccw/dist/tools/update-module-claude.d.ts.map +1 -0
- package/ccw/dist/tools/update-module-claude.js +351 -0
- package/ccw/dist/tools/update-module-claude.js.map +1 -0
- package/ccw/dist/tools/write-file.d.ts +19 -0
- package/ccw/dist/tools/write-file.d.ts.map +1 -0
- package/ccw/dist/tools/write-file.js +193 -0
- package/ccw/dist/tools/write-file.js.map +1 -0
- package/ccw/dist/types/config.d.ts +11 -0
- package/ccw/dist/types/config.d.ts.map +1 -0
- package/ccw/dist/types/config.js +2 -0
- package/ccw/dist/types/config.js.map +1 -0
- package/ccw/dist/types/index.d.ts +4 -0
- package/ccw/dist/types/index.d.ts.map +1 -0
- package/ccw/dist/types/index.js +4 -0
- package/ccw/dist/types/index.js.map +1 -0
- package/ccw/dist/types/session.d.ts +20 -0
- package/ccw/dist/types/session.d.ts.map +1 -0
- package/ccw/dist/types/session.js +2 -0
- package/ccw/dist/types/session.js.map +1 -0
- package/ccw/dist/types/tool.d.ts +36 -0
- package/ccw/dist/types/tool.d.ts.map +1 -0
- package/ccw/dist/types/tool.js +11 -0
- package/ccw/dist/types/tool.js.map +1 -0
- package/ccw/dist/utils/browser-launcher.d.ts +13 -0
- package/ccw/dist/utils/browser-launcher.d.ts.map +1 -0
- package/ccw/dist/utils/browser-launcher.js +60 -0
- package/ccw/dist/utils/browser-launcher.js.map +1 -0
- package/ccw/dist/utils/file-utils.d.ts +25 -0
- package/ccw/dist/utils/file-utils.d.ts.map +1 -0
- package/ccw/dist/utils/file-utils.js +48 -0
- package/ccw/dist/utils/file-utils.js.map +1 -0
- package/ccw/dist/utils/path-resolver.d.ts +80 -0
- package/ccw/dist/utils/path-resolver.d.ts.map +1 -0
- package/ccw/dist/utils/path-resolver.js +260 -0
- package/ccw/dist/utils/path-resolver.js.map +1 -0
- package/ccw/dist/utils/path-validator.d.ts +49 -0
- package/ccw/dist/utils/path-validator.d.ts.map +1 -0
- package/ccw/dist/utils/path-validator.js +123 -0
- package/ccw/dist/utils/path-validator.js.map +1 -0
- package/ccw/dist/utils/ui.d.ts +62 -0
- package/ccw/dist/utils/ui.d.ts.map +1 -0
- package/ccw/dist/utils/ui.js +129 -0
- package/ccw/dist/utils/ui.js.map +1 -0
- package/ccw/package.json +1 -1
- package/package.json +5 -2
|
@@ -0,0 +1,386 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
import http from 'http';
|
|
3
|
+
import { URL } from 'url';
|
|
4
|
+
import { readFileSync, existsSync } from 'fs';
|
|
5
|
+
import { join } from 'path';
|
|
6
|
+
import { getRecentPaths, normalizePathForDisplay } from '../utils/path-resolver.js';
|
|
7
|
+
// Import route handlers
|
|
8
|
+
import { handleStatusRoutes } from './routes/status-routes.js';
|
|
9
|
+
import { handleCliRoutes } from './routes/cli-routes.js';
|
|
10
|
+
import { handleMemoryRoutes } from './routes/memory-routes.js';
|
|
11
|
+
import { handleCoreMemoryRoutes } from './routes/core-memory-routes.js';
|
|
12
|
+
import { handleMcpRoutes } from './routes/mcp-routes.js';
|
|
13
|
+
import { handleHooksRoutes } from './routes/hooks-routes.js';
|
|
14
|
+
import { handleCodexLensRoutes } from './routes/codexlens-routes.js';
|
|
15
|
+
import { handleGraphRoutes } from './routes/graph-routes.js';
|
|
16
|
+
import { handleSystemRoutes } from './routes/system-routes.js';
|
|
17
|
+
import { handleFilesRoutes } from './routes/files-routes.js';
|
|
18
|
+
import { handleSkillsRoutes } from './routes/skills-routes.js';
|
|
19
|
+
import { handleRulesRoutes } from './routes/rules-routes.js';
|
|
20
|
+
import { handleSessionRoutes } from './routes/session-routes.js';
|
|
21
|
+
import { handleCcwRoutes } from './routes/ccw-routes.js';
|
|
22
|
+
import { handleClaudeRoutes } from './routes/claude-routes.js';
|
|
23
|
+
import { handleHelpRoutes } from './routes/help-routes.js';
|
|
24
|
+
// Import WebSocket handling
|
|
25
|
+
import { handleWebSocketUpgrade, broadcastToClients } from './websocket.js';
|
|
26
|
+
// Template paths
|
|
27
|
+
const TEMPLATE_PATH = join(import.meta.dirname, '../../src/templates/dashboard.html');
|
|
28
|
+
const MODULE_CSS_DIR = join(import.meta.dirname, '../../src/templates/dashboard-css');
|
|
29
|
+
const JS_FILE = join(import.meta.dirname, '../../src/templates/dashboard.js');
|
|
30
|
+
const MODULE_JS_DIR = join(import.meta.dirname, '../../src/templates/dashboard-js');
|
|
31
|
+
const ASSETS_DIR = join(import.meta.dirname, '../../src/templates/assets');
|
|
32
|
+
// Modular CSS files in load order
|
|
33
|
+
const MODULE_CSS_FILES = [
|
|
34
|
+
'01-base.css',
|
|
35
|
+
'02-session.css',
|
|
36
|
+
'03-tasks.css',
|
|
37
|
+
'04-lite-tasks.css',
|
|
38
|
+
'05-context.css',
|
|
39
|
+
'06-cards.css',
|
|
40
|
+
'07-managers.css',
|
|
41
|
+
'08-review.css',
|
|
42
|
+
'09-explorer.css',
|
|
43
|
+
// CLI modules (split from 10-cli.css)
|
|
44
|
+
'10-cli-status.css',
|
|
45
|
+
'11-cli-history.css',
|
|
46
|
+
'12-cli-legacy.css',
|
|
47
|
+
'13-cli-ccw.css',
|
|
48
|
+
'14-cli-modals.css',
|
|
49
|
+
'15-cli-endpoints.css',
|
|
50
|
+
'16-cli-session.css',
|
|
51
|
+
'17-cli-conversation.css',
|
|
52
|
+
'18-cli-settings.css',
|
|
53
|
+
'19-cli-native-session.css',
|
|
54
|
+
'20-cli-taskqueue.css',
|
|
55
|
+
'21-cli-toolmgmt.css',
|
|
56
|
+
'22-cli-semantic.css',
|
|
57
|
+
// Other modules
|
|
58
|
+
'23-memory.css',
|
|
59
|
+
'24-prompt-history.css',
|
|
60
|
+
'25-skills-rules.css',
|
|
61
|
+
'26-claude-manager.css',
|
|
62
|
+
'27-graph-explorer.css',
|
|
63
|
+
'28-mcp-manager.css',
|
|
64
|
+
'29-help.css',
|
|
65
|
+
'30-core-memory.css'
|
|
66
|
+
];
|
|
67
|
+
// Modular JS files in dependency order
|
|
68
|
+
const MODULE_FILES = [
|
|
69
|
+
'i18n.js', // Must be loaded first for translations
|
|
70
|
+
'help-i18n.js', // Help page translations
|
|
71
|
+
'utils.js',
|
|
72
|
+
'state.js',
|
|
73
|
+
'api.js',
|
|
74
|
+
'components/theme.js',
|
|
75
|
+
'components/modals.js',
|
|
76
|
+
'components/navigation.js',
|
|
77
|
+
'components/sidebar.js',
|
|
78
|
+
'components/tabs-context.js',
|
|
79
|
+
'components/tabs-other.js',
|
|
80
|
+
'components/task-drawer-core.js',
|
|
81
|
+
'components/task-drawer-renderers.js',
|
|
82
|
+
'components/flowchart.js',
|
|
83
|
+
'components/carousel.js',
|
|
84
|
+
'components/notifications.js',
|
|
85
|
+
'components/global-notifications.js',
|
|
86
|
+
'components/task-queue-sidebar.js',
|
|
87
|
+
'components/cli-status.js',
|
|
88
|
+
'components/cli-history.js',
|
|
89
|
+
'components/mcp-manager.js',
|
|
90
|
+
'components/hook-manager.js',
|
|
91
|
+
'components/version-check.js',
|
|
92
|
+
'components/storage-manager.js',
|
|
93
|
+
'components/index-manager.js',
|
|
94
|
+
'components/_exp_helpers.js',
|
|
95
|
+
'components/_conflict_tab.js',
|
|
96
|
+
'components/_review_tab.js',
|
|
97
|
+
'views/home.js',
|
|
98
|
+
'views/project-overview.js',
|
|
99
|
+
'views/session-detail.js',
|
|
100
|
+
'views/review-session.js',
|
|
101
|
+
'views/lite-tasks.js',
|
|
102
|
+
'views/fix-session.js',
|
|
103
|
+
'views/cli-manager.js',
|
|
104
|
+
'views/codexlens-manager.js',
|
|
105
|
+
'views/explorer.js',
|
|
106
|
+
'views/mcp-manager.js',
|
|
107
|
+
'views/hook-manager.js',
|
|
108
|
+
'views/history.js',
|
|
109
|
+
'views/graph-explorer.js',
|
|
110
|
+
'views/memory.js',
|
|
111
|
+
'views/core-memory.js',
|
|
112
|
+
'views/core-memory-graph.js',
|
|
113
|
+
'views/core-memory-clusters.js',
|
|
114
|
+
'views/prompt-history.js',
|
|
115
|
+
'views/skills-manager.js',
|
|
116
|
+
'views/rules-manager.js',
|
|
117
|
+
'views/claude-manager.js',
|
|
118
|
+
'views/help.js',
|
|
119
|
+
'main.js'
|
|
120
|
+
];
|
|
121
|
+
/**
|
|
122
|
+
* Handle POST request with JSON body
|
|
123
|
+
*/
|
|
124
|
+
function handlePostRequest(req, res, handler) {
|
|
125
|
+
let body = '';
|
|
126
|
+
req.on('data', chunk => { body += chunk; });
|
|
127
|
+
req.on('end', async () => {
|
|
128
|
+
try {
|
|
129
|
+
const parsed = JSON.parse(body);
|
|
130
|
+
const result = await handler(parsed);
|
|
131
|
+
if (result.error) {
|
|
132
|
+
const status = result.status || 500;
|
|
133
|
+
res.writeHead(status, { 'Content-Type': 'application/json' });
|
|
134
|
+
res.end(JSON.stringify({ error: result.error }));
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
res.writeHead(200, { 'Content-Type': 'application/json' });
|
|
138
|
+
res.end(JSON.stringify(result));
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
catch (error) {
|
|
142
|
+
res.writeHead(500, { 'Content-Type': 'application/json' });
|
|
143
|
+
res.end(JSON.stringify({ error: error.message }));
|
|
144
|
+
}
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Generate dashboard HTML with embedded CSS and JS
|
|
149
|
+
*/
|
|
150
|
+
function generateServerDashboard(initialPath) {
|
|
151
|
+
let html = readFileSync(TEMPLATE_PATH, 'utf8');
|
|
152
|
+
// Read and concatenate modular CSS files in load order
|
|
153
|
+
const cssContent = MODULE_CSS_FILES.map(file => {
|
|
154
|
+
const filePath = join(MODULE_CSS_DIR, file);
|
|
155
|
+
return existsSync(filePath) ? readFileSync(filePath, 'utf8') : '';
|
|
156
|
+
}).join('\n\n');
|
|
157
|
+
// Read and concatenate modular JS files in dependency order
|
|
158
|
+
let jsContent = MODULE_FILES.map(file => {
|
|
159
|
+
const filePath = join(MODULE_JS_DIR, file);
|
|
160
|
+
return existsSync(filePath) ? readFileSync(filePath, 'utf8') : '';
|
|
161
|
+
}).join('\n\n');
|
|
162
|
+
// Inject CSS content
|
|
163
|
+
html = html.replace('{{CSS_CONTENT}}', cssContent);
|
|
164
|
+
// Prepare JS content with empty initial data (will be loaded dynamically)
|
|
165
|
+
const emptyData = {
|
|
166
|
+
generatedAt: new Date().toISOString(),
|
|
167
|
+
activeSessions: [],
|
|
168
|
+
archivedSessions: [],
|
|
169
|
+
liteTasks: { litePlan: [], liteFix: [] },
|
|
170
|
+
reviewData: { dimensions: {} },
|
|
171
|
+
projectOverview: null,
|
|
172
|
+
statistics: { totalSessions: 0, activeSessions: 0, totalTasks: 0, completedTasks: 0, reviewFindings: 0, litePlanCount: 0, liteFixCount: 0 }
|
|
173
|
+
};
|
|
174
|
+
// Replace JS placeholders
|
|
175
|
+
jsContent = jsContent.replace('{{WORKFLOW_DATA}}', JSON.stringify(emptyData, null, 2));
|
|
176
|
+
jsContent = jsContent.replace(/\{\{PROJECT_PATH\}\}/g, normalizePathForDisplay(initialPath).replace(/\\/g, '/'));
|
|
177
|
+
jsContent = jsContent.replace('{{RECENT_PATHS}}', JSON.stringify(getRecentPaths()));
|
|
178
|
+
// Add server mode flag at the start of JS
|
|
179
|
+
const serverModeScript = `
|
|
180
|
+
// Server mode - load data dynamically
|
|
181
|
+
window.SERVER_MODE = true;
|
|
182
|
+
window.INITIAL_PATH = '${normalizePathForDisplay(initialPath).replace(/\\/g, '/')}';
|
|
183
|
+
`;
|
|
184
|
+
// Prepend server mode script to JS content
|
|
185
|
+
jsContent = serverModeScript + jsContent;
|
|
186
|
+
// Inject JS content
|
|
187
|
+
html = html.replace('{{JS_CONTENT}}', jsContent);
|
|
188
|
+
// Replace any remaining placeholders in HTML
|
|
189
|
+
html = html.replace(/\{\{PROJECT_PATH\}\}/g, normalizePathForDisplay(initialPath).replace(/\\/g, '/'));
|
|
190
|
+
return html;
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Create and start the dashboard server
|
|
194
|
+
* @param {Object} options - Server options
|
|
195
|
+
* @param {number} options.port - Port to listen on (default: 3456)
|
|
196
|
+
* @param {string} options.initialPath - Initial project path
|
|
197
|
+
* @returns {Promise<http.Server>}
|
|
198
|
+
*/
|
|
199
|
+
export async function startServer(options = {}) {
|
|
200
|
+
const port = options.port || 3456;
|
|
201
|
+
const initialPath = options.initialPath || process.cwd();
|
|
202
|
+
const server = http.createServer(async (req, res) => {
|
|
203
|
+
const url = new URL(req.url, `http://localhost:${port}`);
|
|
204
|
+
const pathname = url.pathname;
|
|
205
|
+
// CORS headers for API requests
|
|
206
|
+
res.setHeader('Access-Control-Allow-Origin', '*');
|
|
207
|
+
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, DELETE, OPTIONS');
|
|
208
|
+
res.setHeader('Access-Control-Allow-Headers', 'Content-Type');
|
|
209
|
+
if (req.method === 'OPTIONS') {
|
|
210
|
+
res.writeHead(200);
|
|
211
|
+
res.end();
|
|
212
|
+
return;
|
|
213
|
+
}
|
|
214
|
+
try {
|
|
215
|
+
// Debug log for API requests
|
|
216
|
+
if (pathname.startsWith('/api/')) {
|
|
217
|
+
console.log(`[API] ${req.method} ${pathname}`);
|
|
218
|
+
}
|
|
219
|
+
// Route context for all handlers
|
|
220
|
+
const routeContext = {
|
|
221
|
+
pathname,
|
|
222
|
+
url,
|
|
223
|
+
req,
|
|
224
|
+
res,
|
|
225
|
+
initialPath,
|
|
226
|
+
handlePostRequest,
|
|
227
|
+
broadcastToClients,
|
|
228
|
+
server
|
|
229
|
+
};
|
|
230
|
+
// Try each route handler in order
|
|
231
|
+
// Order matters: more specific routes should come before general ones
|
|
232
|
+
// Status routes (/api/status/*) - Aggregated endpoint for faster loading
|
|
233
|
+
if (pathname.startsWith('/api/status/')) {
|
|
234
|
+
if (await handleStatusRoutes(routeContext))
|
|
235
|
+
return;
|
|
236
|
+
}
|
|
237
|
+
// CLI routes (/api/cli/*)
|
|
238
|
+
if (pathname.startsWith('/api/cli/')) {
|
|
239
|
+
if (await handleCliRoutes(routeContext))
|
|
240
|
+
return;
|
|
241
|
+
}
|
|
242
|
+
// Claude CLAUDE.md routes (/api/memory/claude/*) and Language routes (/api/language/*)
|
|
243
|
+
if (pathname.startsWith('/api/memory/claude/') || pathname.startsWith('/api/language/')) {
|
|
244
|
+
if (await handleClaudeRoutes(routeContext))
|
|
245
|
+
return;
|
|
246
|
+
}
|
|
247
|
+
// Memory routes (/api/memory/*)
|
|
248
|
+
if (pathname.startsWith('/api/memory/')) {
|
|
249
|
+
if (await handleMemoryRoutes(routeContext))
|
|
250
|
+
return;
|
|
251
|
+
}
|
|
252
|
+
// Core Memory routes (/api/core-memory/*)
|
|
253
|
+
if (pathname.startsWith('/api/core-memory/')) {
|
|
254
|
+
if (await handleCoreMemoryRoutes(routeContext))
|
|
255
|
+
return;
|
|
256
|
+
}
|
|
257
|
+
// MCP routes (/api/mcp*, /api/codex-mcp*)
|
|
258
|
+
if (pathname.startsWith('/api/mcp') || pathname.startsWith('/api/codex-mcp')) {
|
|
259
|
+
if (await handleMcpRoutes(routeContext))
|
|
260
|
+
return;
|
|
261
|
+
}
|
|
262
|
+
// Hooks routes (/api/hooks, /api/hook)
|
|
263
|
+
if (pathname.startsWith('/api/hook')) {
|
|
264
|
+
if (await handleHooksRoutes(routeContext))
|
|
265
|
+
return;
|
|
266
|
+
}
|
|
267
|
+
// CodexLens routes (/api/codexlens/*)
|
|
268
|
+
if (pathname.startsWith('/api/codexlens/')) {
|
|
269
|
+
if (await handleCodexLensRoutes(routeContext))
|
|
270
|
+
return;
|
|
271
|
+
}
|
|
272
|
+
// Graph routes (/api/graph/*)
|
|
273
|
+
if (pathname.startsWith('/api/graph/')) {
|
|
274
|
+
if (await handleGraphRoutes(routeContext))
|
|
275
|
+
return;
|
|
276
|
+
}
|
|
277
|
+
// CCW routes (/api/ccw/*)
|
|
278
|
+
if (pathname.startsWith('/api/ccw/')) {
|
|
279
|
+
if (await handleCcwRoutes(routeContext))
|
|
280
|
+
return;
|
|
281
|
+
}
|
|
282
|
+
// Skills routes (/api/skills*)
|
|
283
|
+
if (pathname.startsWith('/api/skills')) {
|
|
284
|
+
if (await handleSkillsRoutes(routeContext))
|
|
285
|
+
return;
|
|
286
|
+
}
|
|
287
|
+
// Rules routes (/api/rules*)
|
|
288
|
+
if (pathname.startsWith('/api/rules')) {
|
|
289
|
+
if (await handleRulesRoutes(routeContext))
|
|
290
|
+
return;
|
|
291
|
+
}
|
|
292
|
+
// Help routes (/api/help/*)
|
|
293
|
+
if (pathname.startsWith('/api/help/')) {
|
|
294
|
+
if (await handleHelpRoutes(routeContext))
|
|
295
|
+
return;
|
|
296
|
+
}
|
|
297
|
+
// Session routes (/api/session-detail, /api/update-task-status, /api/bulk-update-task-status)
|
|
298
|
+
if (pathname.includes('session') || pathname.includes('task-status')) {
|
|
299
|
+
if (await handleSessionRoutes(routeContext))
|
|
300
|
+
return;
|
|
301
|
+
}
|
|
302
|
+
// Files routes (/api/files, /api/file, /api/file-content, /api/update-claude-md)
|
|
303
|
+
if (pathname === '/api/files' || pathname === '/api/file' ||
|
|
304
|
+
pathname === '/api/file-content' || pathname === '/api/update-claude-md') {
|
|
305
|
+
if (await handleFilesRoutes(routeContext))
|
|
306
|
+
return;
|
|
307
|
+
}
|
|
308
|
+
// System routes (data, health, version, paths, shutdown, notify, storage)
|
|
309
|
+
if (pathname === '/api/data' || pathname === '/api/health' ||
|
|
310
|
+
pathname === '/api/version-check' || pathname === '/api/shutdown' ||
|
|
311
|
+
pathname === '/api/recent-paths' || pathname === '/api/switch-path' ||
|
|
312
|
+
pathname === '/api/remove-recent-path' || pathname === '/api/system/notify' ||
|
|
313
|
+
pathname.startsWith('/api/storage/')) {
|
|
314
|
+
if (await handleSystemRoutes(routeContext))
|
|
315
|
+
return;
|
|
316
|
+
}
|
|
317
|
+
// Serve dashboard HTML
|
|
318
|
+
if (pathname === '/' || pathname === '/index.html') {
|
|
319
|
+
const html = generateServerDashboard(initialPath);
|
|
320
|
+
res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });
|
|
321
|
+
res.end(html);
|
|
322
|
+
return;
|
|
323
|
+
}
|
|
324
|
+
// Handle favicon.ico (return empty response to prevent 404)
|
|
325
|
+
if (pathname === '/favicon.ico') {
|
|
326
|
+
res.writeHead(204);
|
|
327
|
+
res.end();
|
|
328
|
+
return;
|
|
329
|
+
}
|
|
330
|
+
// Serve static assets (js, css, images, fonts)
|
|
331
|
+
if (pathname.startsWith('/assets/')) {
|
|
332
|
+
const assetPath = join(ASSETS_DIR, pathname.replace('/assets/', ''));
|
|
333
|
+
if (existsSync(assetPath)) {
|
|
334
|
+
const ext = assetPath.split('.').pop().toLowerCase();
|
|
335
|
+
const mimeTypes = {
|
|
336
|
+
'js': 'application/javascript',
|
|
337
|
+
'css': 'text/css',
|
|
338
|
+
'json': 'application/json',
|
|
339
|
+
'png': 'image/png',
|
|
340
|
+
'jpg': 'image/jpeg',
|
|
341
|
+
'jpeg': 'image/jpeg',
|
|
342
|
+
'svg': 'image/svg+xml',
|
|
343
|
+
'woff': 'font/woff',
|
|
344
|
+
'woff2': 'font/woff2',
|
|
345
|
+
'ttf': 'font/ttf'
|
|
346
|
+
};
|
|
347
|
+
const contentType = mimeTypes[ext] || 'application/octet-stream';
|
|
348
|
+
const content = readFileSync(assetPath);
|
|
349
|
+
res.writeHead(200, {
|
|
350
|
+
'Content-Type': contentType,
|
|
351
|
+
'Cache-Control': 'no-cache, must-revalidate'
|
|
352
|
+
});
|
|
353
|
+
res.end(content);
|
|
354
|
+
return;
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
// 404
|
|
358
|
+
res.writeHead(404, { 'Content-Type': 'text/plain' });
|
|
359
|
+
res.end('Not Found');
|
|
360
|
+
}
|
|
361
|
+
catch (error) {
|
|
362
|
+
console.error('Server error:', error);
|
|
363
|
+
res.writeHead(500, { 'Content-Type': 'application/json' });
|
|
364
|
+
res.end(JSON.stringify({ error: error.message }));
|
|
365
|
+
}
|
|
366
|
+
});
|
|
367
|
+
// Handle WebSocket upgrade requests
|
|
368
|
+
server.on('upgrade', (req, socket, head) => {
|
|
369
|
+
if (req.url === '/ws') {
|
|
370
|
+
handleWebSocketUpgrade(req, socket, head);
|
|
371
|
+
}
|
|
372
|
+
else {
|
|
373
|
+
socket.destroy();
|
|
374
|
+
}
|
|
375
|
+
});
|
|
376
|
+
return new Promise((resolve, reject) => {
|
|
377
|
+
server.listen(port, () => {
|
|
378
|
+
console.log(`Dashboard server running at http://localhost:${port}`);
|
|
379
|
+
console.log(`WebSocket endpoint available at ws://localhost:${port}/ws`);
|
|
380
|
+
console.log(`Hook endpoint available at POST http://localhost:${port}/api/hook`);
|
|
381
|
+
resolve(server);
|
|
382
|
+
});
|
|
383
|
+
server.on('error', reject);
|
|
384
|
+
});
|
|
385
|
+
}
|
|
386
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/core/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session Clustering Service
|
|
3
|
+
* Intelligently groups related sessions into clusters using multi-dimensional similarity analysis
|
|
4
|
+
*/
|
|
5
|
+
import { SessionMetadataCache } from './core-memory-store.js';
|
|
6
|
+
export interface ClusteringOptions {
|
|
7
|
+
scope?: 'all' | 'recent' | 'unclustered';
|
|
8
|
+
timeRange?: {
|
|
9
|
+
start: string;
|
|
10
|
+
end: string;
|
|
11
|
+
};
|
|
12
|
+
minClusterSize?: number;
|
|
13
|
+
}
|
|
14
|
+
export interface ClusteringResult {
|
|
15
|
+
clustersCreated: number;
|
|
16
|
+
sessionsProcessed: number;
|
|
17
|
+
sessionsClustered: number;
|
|
18
|
+
}
|
|
19
|
+
export declare class SessionClusteringService {
|
|
20
|
+
private coreMemoryStore;
|
|
21
|
+
private cliHistoryStore;
|
|
22
|
+
private projectPath;
|
|
23
|
+
constructor(projectPath: string);
|
|
24
|
+
/**
|
|
25
|
+
* Collect all session sources
|
|
26
|
+
*/
|
|
27
|
+
collectSessions(options?: ClusteringOptions): Promise<SessionMetadataCache[]>;
|
|
28
|
+
/**
|
|
29
|
+
* Extract metadata from a session
|
|
30
|
+
*/
|
|
31
|
+
extractMetadata(session: any, type: 'core_memory' | 'workflow' | 'cli_history' | 'native'): SessionMetadataCache;
|
|
32
|
+
/**
|
|
33
|
+
* Extract keywords from content
|
|
34
|
+
*/
|
|
35
|
+
private extractKeywords;
|
|
36
|
+
/**
|
|
37
|
+
* Extract file patterns from content
|
|
38
|
+
*/
|
|
39
|
+
private extractFilePatterns;
|
|
40
|
+
/**
|
|
41
|
+
* Calculate relevance score between two sessions
|
|
42
|
+
*/
|
|
43
|
+
calculateRelevance(session1: SessionMetadataCache, session2: SessionMetadataCache): number;
|
|
44
|
+
/**
|
|
45
|
+
* Calculate file path overlap score (Jaccard similarity)
|
|
46
|
+
*/
|
|
47
|
+
private calculateFileOverlap;
|
|
48
|
+
/**
|
|
49
|
+
* Calculate temporal proximity score
|
|
50
|
+
* 24h: 1.0, 7d: 0.7, 30d: 0.4, >30d: 0.1
|
|
51
|
+
*/
|
|
52
|
+
private calculateTemporalProximity;
|
|
53
|
+
/**
|
|
54
|
+
* Calculate semantic similarity using keyword overlap (Jaccard similarity)
|
|
55
|
+
*/
|
|
56
|
+
private calculateSemanticSimilarity;
|
|
57
|
+
/**
|
|
58
|
+
* Calculate intent alignment score
|
|
59
|
+
* Based on title/summary keyword matching
|
|
60
|
+
*/
|
|
61
|
+
private calculateIntentAlignment;
|
|
62
|
+
/**
|
|
63
|
+
* Calculate vector similarity using pre-computed embeddings from memory_chunks
|
|
64
|
+
* Returns average cosine similarity of chunk embeddings
|
|
65
|
+
*/
|
|
66
|
+
private calculateVectorSimilarity;
|
|
67
|
+
/**
|
|
68
|
+
* Get session embedding by averaging all chunk embeddings
|
|
69
|
+
*/
|
|
70
|
+
private getSessionEmbedding;
|
|
71
|
+
/**
|
|
72
|
+
* Calculate cosine similarity between two vectors
|
|
73
|
+
*/
|
|
74
|
+
private cosineSimilarity;
|
|
75
|
+
/**
|
|
76
|
+
* Find the most relevant existing cluster for a set of session IDs
|
|
77
|
+
* Returns the cluster with highest session overlap
|
|
78
|
+
*/
|
|
79
|
+
private findExistingClusterForSessions;
|
|
80
|
+
/**
|
|
81
|
+
* Determine if a new cluster should merge with an existing one
|
|
82
|
+
* Based on 70% session overlap threshold
|
|
83
|
+
*/
|
|
84
|
+
private shouldMergeWithExisting;
|
|
85
|
+
/**
|
|
86
|
+
* Run auto-clustering algorithm
|
|
87
|
+
* Optimized to prevent duplicate clusters by checking existing clusters first
|
|
88
|
+
*/
|
|
89
|
+
autocluster(options?: ClusteringOptions): Promise<ClusteringResult>;
|
|
90
|
+
/**
|
|
91
|
+
* Deduplicate clusters by merging similar ones
|
|
92
|
+
* Clusters with same name or >50% member overlap are merged
|
|
93
|
+
* @returns Statistics about deduplication
|
|
94
|
+
*/
|
|
95
|
+
deduplicateClusters(): Promise<{
|
|
96
|
+
merged: number;
|
|
97
|
+
deleted: number;
|
|
98
|
+
remaining: number;
|
|
99
|
+
}>;
|
|
100
|
+
/**
|
|
101
|
+
* Agglomerative clustering algorithm
|
|
102
|
+
* Returns array of clusters (each cluster is array of sessions)
|
|
103
|
+
*/
|
|
104
|
+
private agglomerativeClustering;
|
|
105
|
+
/**
|
|
106
|
+
* Calculate average linkage between two clusters
|
|
107
|
+
*/
|
|
108
|
+
private averageLinkage;
|
|
109
|
+
/**
|
|
110
|
+
* Generate cluster name from members
|
|
111
|
+
*/
|
|
112
|
+
private generateClusterName;
|
|
113
|
+
/**
|
|
114
|
+
* Generate cluster intent from members
|
|
115
|
+
*/
|
|
116
|
+
private generateClusterIntent;
|
|
117
|
+
/**
|
|
118
|
+
* Get progressive disclosure index for hook
|
|
119
|
+
* @param options - Configuration options
|
|
120
|
+
* @param options.type - 'session-start' returns recent sessions, 'context' returns intent-matched sessions
|
|
121
|
+
* @param options.sessionId - Current session ID (optional)
|
|
122
|
+
* @param options.prompt - User prompt for intent matching (required for 'context' type)
|
|
123
|
+
*/
|
|
124
|
+
getProgressiveIndex(options: {
|
|
125
|
+
type: 'session-start' | 'context';
|
|
126
|
+
sessionId?: string;
|
|
127
|
+
prompt?: string;
|
|
128
|
+
}): Promise<string>;
|
|
129
|
+
/**
|
|
130
|
+
* Get recent sessions index (for session-start)
|
|
131
|
+
* Shows sessions grouped by clusters with progressive disclosure
|
|
132
|
+
*/
|
|
133
|
+
private getRecentSessionsIndex;
|
|
134
|
+
/**
|
|
135
|
+
* Get intent-matched sessions index (for context with prompt)
|
|
136
|
+
* Shows sessions grouped by clusters and ranked by relevance
|
|
137
|
+
*/
|
|
138
|
+
private getIntentMatchedIndex;
|
|
139
|
+
/**
|
|
140
|
+
* Legacy method for backward compatibility
|
|
141
|
+
* @deprecated Use getProgressiveIndex({ type, sessionId, prompt }) instead
|
|
142
|
+
*/
|
|
143
|
+
getProgressiveIndexLegacy(sessionId?: string): Promise<string>;
|
|
144
|
+
/**
|
|
145
|
+
* Parse workflow session files
|
|
146
|
+
*/
|
|
147
|
+
private parseWorkflowSessions;
|
|
148
|
+
/**
|
|
149
|
+
* Update metadata cache for all sessions
|
|
150
|
+
*/
|
|
151
|
+
refreshMetadataCache(): Promise<number>;
|
|
152
|
+
}
|
|
153
|
+
//# sourceMappingURL=session-clustering-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-clustering-service.d.ts","sourceRoot":"","sources":["../../src/core/session-clustering-service.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAkD,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAkB9G,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,aAAa,CAAC;IACzC,SAAS,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3C,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,gBAAgB;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,qBAAa,wBAAwB;IACnC,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,WAAW,CAAS;gBAEhB,WAAW,EAAE,MAAM;IAM/B;;OAEG;IACG,eAAe,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAoDnF;;OAEG;IACH,eAAe,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,aAAa,GAAG,UAAU,GAAG,aAAa,GAAG,QAAQ,GAAG,oBAAoB;IA4ChH;;OAEG;IACH,OAAO,CAAC,eAAe;IA+DvB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAyB3B;;OAEG;IACH,kBAAkB,CAAC,QAAQ,EAAE,oBAAoB,EAAE,QAAQ,EAAE,oBAAoB,GAAG,MAAM;IAgB1F;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAY5B;;;OAGG;IACH,OAAO,CAAC,0BAA0B;IAclC;;OAEG;IACH,OAAO,CAAC,2BAA2B;IAYnC;;;OAGG;IACH,OAAO,CAAC,wBAAwB;IAmBhC;;;OAGG;IACH,OAAO,CAAC,yBAAyB;IAYjC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA4C3B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA0BxB;;;OAGG;IACH,OAAO,CAAC,8BAA8B;IA4BtC;;;OAGG;IACH,OAAO,CAAC,uBAAuB;IAe/B;;;OAGG;IACG,WAAW,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAoIzE;;;;OAIG;IACG,mBAAmB,IAAI,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAsG5F;;;OAGG;IACH,OAAO,CAAC,uBAAuB;IA2C/B;;OAEG;IACH,OAAO,CAAC,cAAc;IAkBtB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAuB3B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAgB7B;;;;;;OAMG;IACG,mBAAmB,CAAC,OAAO,EAAE;QACjC,IAAI,EAAE,eAAe,GAAG,SAAS,CAAC;QAClC,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC,MAAM,CAAC;IAiBnB;;;OAGG;YACW,sBAAsB;IAmGpC;;;OAGG;YACW,qBAAqB;IA2InC;;;OAGG;IACG,yBAAyB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAyFpE;;OAEG;YACW,qBAAqB;IA4CnC;;OAEG;IACG,oBAAoB,IAAI,OAAO,CAAC,MAAM,CAAC;CAS9C"}
|