@nex-ai/nex 0.1.65 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +236 -231
- package/bin/nex-mcp.js +50 -0
- package/bin/nex.js +53 -0
- package/package.json +9 -36
- package/dist/agent/adoption.d.ts +0 -23
- package/dist/agent/adoption.js +0 -87
- package/dist/agent/adoption.js.map +0 -1
- package/dist/agent/gossip.d.ts +0 -17
- package/dist/agent/gossip.js +0 -48
- package/dist/agent/gossip.js.map +0 -1
- package/dist/agent/loop.d.ts +0 -59
- package/dist/agent/loop.js +0 -389
- package/dist/agent/loop.js.map +0 -1
- package/dist/agent/queues.d.ts +0 -16
- package/dist/agent/queues.js +0 -44
- package/dist/agent/queues.js.map +0 -1
- package/dist/agent/session-store.d.ts +0 -21
- package/dist/agent/session-store.js +0 -96
- package/dist/agent/session-store.js.map +0 -1
- package/dist/agent/templates.d.ts +0 -5
- package/dist/agent/templates.js +0 -55
- package/dist/agent/templates.js.map +0 -1
- package/dist/agent/tools.d.ts +0 -25
- package/dist/agent/tools.js +0 -238
- package/dist/agent/tools.js.map +0 -1
- package/dist/agent/types.d.ts +0 -59
- package/dist/agent/types.js +0 -5
- package/dist/agent/types.js.map +0 -1
- package/dist/calendar/scheduler.d.ts +0 -32
- package/dist/calendar/scheduler.js +0 -178
- package/dist/calendar/scheduler.js.map +0 -1
- package/dist/calendar/store.d.ts +0 -15
- package/dist/calendar/store.js +0 -50
- package/dist/calendar/store.js.map +0 -1
- package/dist/calendar/types.d.ts +0 -17
- package/dist/calendar/types.js +0 -5
- package/dist/calendar/types.js.map +0 -1
- package/dist/chat/channel.d.ts +0 -20
- package/dist/chat/channel.js +0 -84
- package/dist/chat/channel.js.map +0 -1
- package/dist/chat/message-store.d.ts +0 -18
- package/dist/chat/message-store.js +0 -82
- package/dist/chat/message-store.js.map +0 -1
- package/dist/chat/router.d.ts +0 -17
- package/dist/chat/router.js +0 -65
- package/dist/chat/router.js.map +0 -1
- package/dist/chat/suggested-responses.d.ts +0 -6
- package/dist/chat/suggested-responses.js +0 -99
- package/dist/chat/suggested-responses.js.map +0 -1
- package/dist/chat/types.d.ts +0 -28
- package/dist/chat/types.js +0 -5
- package/dist/chat/types.js.map +0 -1
- package/dist/cli.d.ts +0 -5
- package/dist/cli.js +0 -20
- package/dist/cli.js.map +0 -1
- package/dist/commands/attribute.d.ts +0 -4
- package/dist/commands/attribute.js +0 -75
- package/dist/commands/attribute.js.map +0 -1
- package/dist/commands/config-cmd.d.ts +0 -4
- package/dist/commands/config-cmd.js +0 -53
- package/dist/commands/config-cmd.js.map +0 -1
- package/dist/commands/context.d.ts +0 -4
- package/dist/commands/context.js +0 -167
- package/dist/commands/context.js.map +0 -1
- package/dist/commands/dispatch.d.ts +0 -44
- package/dist/commands/dispatch.js +0 -1544
- package/dist/commands/dispatch.js.map +0 -1
- package/dist/commands/graph.d.ts +0 -5
- package/dist/commands/graph.js +0 -77
- package/dist/commands/graph.js.map +0 -1
- package/dist/commands/init.d.ts +0 -49
- package/dist/commands/init.js +0 -319
- package/dist/commands/init.js.map +0 -1
- package/dist/commands/insight.d.ts +0 -4
- package/dist/commands/insight.js +0 -39
- package/dist/commands/insight.js.map +0 -1
- package/dist/commands/integrate.d.ts +0 -4
- package/dist/commands/integrate.js +0 -361
- package/dist/commands/integrate.js.map +0 -1
- package/dist/commands/list-job.d.ts +0 -4
- package/dist/commands/list-job.js +0 -41
- package/dist/commands/list-job.js.map +0 -1
- package/dist/commands/list.d.ts +0 -4
- package/dist/commands/list.js +0 -148
- package/dist/commands/list.js.map +0 -1
- package/dist/commands/note.d.ts +0 -4
- package/dist/commands/note.js +0 -77
- package/dist/commands/note.js.map +0 -1
- package/dist/commands/object.d.ts +0 -4
- package/dist/commands/object.js +0 -78
- package/dist/commands/object.js.map +0 -1
- package/dist/commands/parse-input.d.ts +0 -5
- package/dist/commands/parse-input.js +0 -37
- package/dist/commands/parse-input.js.map +0 -1
- package/dist/commands/record.d.ts +0 -4
- package/dist/commands/record.js +0 -126
- package/dist/commands/record.js.map +0 -1
- package/dist/commands/register.d.ts +0 -4
- package/dist/commands/register.js +0 -23
- package/dist/commands/register.js.map +0 -1
- package/dist/commands/relationship.d.ts +0 -4
- package/dist/commands/relationship.js +0 -80
- package/dist/commands/relationship.js.map +0 -1
- package/dist/commands/scan.d.ts +0 -4
- package/dist/commands/scan.js +0 -111
- package/dist/commands/scan.js.map +0 -1
- package/dist/commands/search.d.ts +0 -4
- package/dist/commands/search.js +0 -62
- package/dist/commands/search.js.map +0 -1
- package/dist/commands/session.d.ts +0 -4
- package/dist/commands/session.js +0 -31
- package/dist/commands/session.js.map +0 -1
- package/dist/commands/setup.d.ts +0 -25
- package/dist/commands/setup.js +0 -584
- package/dist/commands/setup.js.map +0 -1
- package/dist/commands/task.d.ts +0 -4
- package/dist/commands/task.js +0 -140
- package/dist/commands/task.js.map +0 -1
- package/dist/commands/workspace.d.ts +0 -8
- package/dist/commands/workspace.js +0 -251
- package/dist/commands/workspace.js.map +0 -1
- package/dist/index.d.ts +0 -9
- package/dist/index.js +0 -142
- package/dist/index.js.map +0 -1
- package/dist/lib/capture-filter.d.ts +0 -9
- package/dist/lib/capture-filter.js +0 -14
- package/dist/lib/capture-filter.js.map +0 -1
- package/dist/lib/client.d.ts +0 -20
- package/dist/lib/client.js +0 -160
- package/dist/lib/client.js.map +0 -1
- package/dist/lib/compounding-worker.d.ts +0 -2
- package/dist/lib/compounding-worker.js +0 -21
- package/dist/lib/compounding-worker.js.map +0 -1
- package/dist/lib/compounding.d.ts +0 -20
- package/dist/lib/compounding.js +0 -45
- package/dist/lib/compounding.js.map +0 -1
- package/dist/lib/config.d.ts +0 -35
- package/dist/lib/config.js +0 -96
- package/dist/lib/config.js.map +0 -1
- package/dist/lib/context-format.d.ts +0 -7
- package/dist/lib/context-format.js +0 -21
- package/dist/lib/context-format.js.map +0 -1
- package/dist/lib/errors.d.ts +0 -18
- package/dist/lib/errors.js +0 -30
- package/dist/lib/errors.js.map +0 -1
- package/dist/lib/file-scanner.d.ts +0 -38
- package/dist/lib/file-scanner.js +0 -188
- package/dist/lib/file-scanner.js.map +0 -1
- package/dist/lib/graph-html.d.ts +0 -59
- package/dist/lib/graph-html.js +0 -859
- package/dist/lib/graph-html.js.map +0 -1
- package/dist/lib/installers.d.ts +0 -80
- package/dist/lib/installers.js +0 -602
- package/dist/lib/installers.js.map +0 -1
- package/dist/lib/integrations.d.ts +0 -23
- package/dist/lib/integrations.js +0 -25
- package/dist/lib/integrations.js.map +0 -1
- package/dist/lib/output.d.ts +0 -7
- package/dist/lib/output.js +0 -70
- package/dist/lib/output.js.map +0 -1
- package/dist/lib/platform-detect.d.ts +0 -23
- package/dist/lib/platform-detect.js +0 -359
- package/dist/lib/platform-detect.js.map +0 -1
- package/dist/lib/project-config.d.ts +0 -53
- package/dist/lib/project-config.js +0 -151
- package/dist/lib/project-config.js.map +0 -1
- package/dist/lib/prompt.d.ts +0 -15
- package/dist/lib/prompt.js +0 -213
- package/dist/lib/prompt.js.map +0 -1
- package/dist/lib/rate-limiter.d.ts +0 -13
- package/dist/lib/rate-limiter.js +0 -49
- package/dist/lib/rate-limiter.js.map +0 -1
- package/dist/lib/recall-filter.d.ts +0 -5
- package/dist/lib/recall-filter.js +0 -24
- package/dist/lib/recall-filter.js.map +0 -1
- package/dist/lib/session-store.d.ts +0 -15
- package/dist/lib/session-store.js +0 -62
- package/dist/lib/session-store.js.map +0 -1
- package/dist/lib/tui.d.ts +0 -57
- package/dist/lib/tui.js +0 -247
- package/dist/lib/tui.js.map +0 -1
- package/dist/lib/workspace-registry.d.ts +0 -47
- package/dist/lib/workspace-registry.js +0 -240
- package/dist/lib/workspace-registry.js.map +0 -1
- package/dist/mcp/channel.d.ts +0 -24
- package/dist/mcp/channel.js +0 -198
- package/dist/mcp/channel.js.map +0 -1
- package/dist/mcp/client.d.ts +0 -20
- package/dist/mcp/client.js +0 -131
- package/dist/mcp/client.js.map +0 -1
- package/dist/mcp/config.d.ts +0 -19
- package/dist/mcp/config.js +0 -48
- package/dist/mcp/config.js.map +0 -1
- package/dist/mcp/context-files.d.ts +0 -9
- package/dist/mcp/context-files.js +0 -90
- package/dist/mcp/context-files.js.map +0 -1
- package/dist/mcp/file-manifest.d.ts +0 -27
- package/dist/mcp/file-manifest.js +0 -68
- package/dist/mcp/file-manifest.js.map +0 -1
- package/dist/mcp/file-scanner.d.ts +0 -17
- package/dist/mcp/file-scanner.js +0 -77
- package/dist/mcp/file-scanner.js.map +0 -1
- package/dist/mcp/index.d.ts +0 -2
- package/dist/mcp/index.js +0 -51
- package/dist/mcp/index.js.map +0 -1
- package/dist/mcp/rate-limiter.d.ts +0 -14
- package/dist/mcp/rate-limiter.js +0 -60
- package/dist/mcp/rate-limiter.js.map +0 -1
- package/dist/mcp/server.d.ts +0 -6
- package/dist/mcp/server.js +0 -44
- package/dist/mcp/server.js.map +0 -1
- package/dist/mcp/session-store.d.ts +0 -16
- package/dist/mcp/session-store.js +0 -70
- package/dist/mcp/session-store.js.map +0 -1
- package/dist/mcp/tools/context.d.ts +0 -3
- package/dist/mcp/tools/context.js +0 -65
- package/dist/mcp/tools/context.js.map +0 -1
- package/dist/mcp/tools/insights.d.ts +0 -3
- package/dist/mcp/tools/insights.js +0 -24
- package/dist/mcp/tools/insights.js.map +0 -1
- package/dist/mcp/tools/integrations.d.ts +0 -3
- package/dist/mcp/tools/integrations.js +0 -27
- package/dist/mcp/tools/integrations.js.map +0 -1
- package/dist/mcp/tools/lists.d.ts +0 -3
- package/dist/mcp/tools/lists.js +0 -101
- package/dist/mcp/tools/lists.js.map +0 -1
- package/dist/mcp/tools/notes.d.ts +0 -3
- package/dist/mcp/tools/notes.js +0 -52
- package/dist/mcp/tools/notes.js.map +0 -1
- package/dist/mcp/tools/notifications.d.ts +0 -3
- package/dist/mcp/tools/notifications.js +0 -53
- package/dist/mcp/tools/notifications.js.map +0 -1
- package/dist/mcp/tools/records.d.ts +0 -3
- package/dist/mcp/tools/records.js +0 -74
- package/dist/mcp/tools/records.js.map +0 -1
- package/dist/mcp/tools/register.d.ts +0 -3
- package/dist/mcp/tools/register.js +0 -41
- package/dist/mcp/tools/register.js.map +0 -1
- package/dist/mcp/tools/relationships.d.ts +0 -3
- package/dist/mcp/tools/relationships.js +0 -47
- package/dist/mcp/tools/relationships.js.map +0 -1
- package/dist/mcp/tools/scan.d.ts +0 -3
- package/dist/mcp/tools/scan.js +0 -37
- package/dist/mcp/tools/scan.js.map +0 -1
- package/dist/mcp/tools/schema.d.ts +0 -3
- package/dist/mcp/tools/schema.js +0 -108
- package/dist/mcp/tools/schema.js.map +0 -1
- package/dist/mcp/tools/search.d.ts +0 -3
- package/dist/mcp/tools/search.js +0 -8
- package/dist/mcp/tools/search.js.map +0 -1
- package/dist/mcp/tools/tasks.d.ts +0 -3
- package/dist/mcp/tools/tasks.js +0 -88
- package/dist/mcp/tools/tasks.js.map +0 -1
- package/dist/mcp/workspace-data-dir.d.ts +0 -2
- package/dist/mcp/workspace-data-dir.js +0 -28
- package/dist/mcp/workspace-data-dir.js.map +0 -1
- package/dist/orchestration/budget.d.ts +0 -32
- package/dist/orchestration/budget.js +0 -72
- package/dist/orchestration/budget.js.map +0 -1
- package/dist/orchestration/executor.d.ts +0 -59
- package/dist/orchestration/executor.js +0 -197
- package/dist/orchestration/executor.js.map +0 -1
- package/dist/orchestration/router.d.ts +0 -30
- package/dist/orchestration/router.js +0 -98
- package/dist/orchestration/router.js.map +0 -1
- package/dist/orchestration/templates.d.ts +0 -11
- package/dist/orchestration/templates.js +0 -99
- package/dist/orchestration/templates.js.map +0 -1
- package/dist/orchestration/types.d.ts +0 -58
- package/dist/orchestration/types.js +0 -7
- package/dist/orchestration/types.js.map +0 -1
- package/dist/plugin/auto-capture.d.ts +0 -11
- package/dist/plugin/auto-capture.js +0 -135
- package/dist/plugin/auto-capture.js.map +0 -1
- package/dist/plugin/auto-recall-worker.d.ts +0 -2
- package/dist/plugin/auto-recall-worker.js +0 -74
- package/dist/plugin/auto-recall-worker.js.map +0 -1
- package/dist/plugin/auto-recall.d.ts +0 -11
- package/dist/plugin/auto-recall.js +0 -186
- package/dist/plugin/auto-recall.js.map +0 -1
- package/dist/plugin/auto-register.d.ts +0 -10
- package/dist/plugin/auto-register.js +0 -81
- package/dist/plugin/auto-register.js.map +0 -1
- package/dist/plugin/auto-scan.d.ts +0 -10
- package/dist/plugin/auto-scan.js +0 -54
- package/dist/plugin/auto-scan.js.map +0 -1
- package/dist/plugin/auto-session-start.d.ts +0 -14
- package/dist/plugin/auto-session-start.js +0 -156
- package/dist/plugin/auto-session-start.js.map +0 -1
- package/dist/plugin/capture-filter.d.ts +0 -21
- package/dist/plugin/capture-filter.js +0 -32
- package/dist/plugin/capture-filter.js.map +0 -1
- package/dist/plugin/config.d.ts +0 -61
- package/dist/plugin/config.js +0 -182
- package/dist/plugin/config.js.map +0 -1
- package/dist/plugin/context-files.d.ts +0 -23
- package/dist/plugin/context-files.js +0 -103
- package/dist/plugin/context-files.js.map +0 -1
- package/dist/plugin/context-format.d.ts +0 -18
- package/dist/plugin/context-format.js +0 -34
- package/dist/plugin/context-format.js.map +0 -1
- package/dist/plugin/file-manifest.d.ts +0 -27
- package/dist/plugin/file-manifest.js +0 -68
- package/dist/plugin/file-manifest.js.map +0 -1
- package/dist/plugin/file-scanner.d.ts +0 -19
- package/dist/plugin/file-scanner.js +0 -90
- package/dist/plugin/file-scanner.js.map +0 -1
- package/dist/plugin/nex-client.d.ts +0 -50
- package/dist/plugin/nex-client.js +0 -129
- package/dist/plugin/nex-client.js.map +0 -1
- package/dist/plugin/rate-limiter.d.ts +0 -26
- package/dist/plugin/rate-limiter.js +0 -65
- package/dist/plugin/rate-limiter.js.map +0 -1
- package/dist/plugin/recall-cache.d.ts +0 -41
- package/dist/plugin/recall-cache.js +0 -195
- package/dist/plugin/recall-cache.js.map +0 -1
- package/dist/plugin/recall-filter.d.ts +0 -13
- package/dist/plugin/recall-filter.js +0 -39
- package/dist/plugin/recall-filter.js.map +0 -1
- package/dist/plugin/session-store.d.ts +0 -23
- package/dist/plugin/session-store.js +0 -73
- package/dist/plugin/session-store.js.map +0 -1
- package/dist/plugin/workspace-data-dir.d.ts +0 -2
- package/dist/plugin/workspace-data-dir.js +0 -31
- package/dist/plugin/workspace-data-dir.js.map +0 -1
- package/dist/tui/agent-colors.d.ts +0 -19
- package/dist/tui/agent-colors.js +0 -34
- package/dist/tui/agent-colors.js.map +0 -1
- package/dist/tui/app.d.ts +0 -14
- package/dist/tui/app.js +0 -181
- package/dist/tui/app.js.map +0 -1
- package/dist/tui/channel-colors.d.ts +0 -16
- package/dist/tui/channel-colors.js +0 -43
- package/dist/tui/channel-colors.js.map +0 -1
- package/dist/tui/components/agent-card.d.ts +0 -11
- package/dist/tui/components/agent-card.js +0 -40
- package/dist/tui/components/agent-card.js.map +0 -1
- package/dist/tui/components/banner.d.ts +0 -44
- package/dist/tui/components/banner.js +0 -130
- package/dist/tui/components/banner.js.map +0 -1
- package/dist/tui/components/channel-colors.d.ts +0 -21
- package/dist/tui/components/channel-colors.js +0 -53
- package/dist/tui/components/channel-colors.js.map +0 -1
- package/dist/tui/components/channel-message.d.ts +0 -53
- package/dist/tui/components/channel-message.js +0 -66
- package/dist/tui/components/channel-message.js.map +0 -1
- package/dist/tui/components/chat-input.d.ts +0 -11
- package/dist/tui/components/chat-input.js +0 -19
- package/dist/tui/components/chat-input.js.map +0 -1
- package/dist/tui/components/data-table.d.ts +0 -11
- package/dist/tui/components/data-table.js +0 -47
- package/dist/tui/components/data-table.js.map +0 -1
- package/dist/tui/components/error-box.d.ts +0 -11
- package/dist/tui/components/error-box.js +0 -59
- package/dist/tui/components/error-box.js.map +0 -1
- package/dist/tui/components/help-screen.d.ts +0 -3
- package/dist/tui/components/help-screen.js +0 -63
- package/dist/tui/components/help-screen.js.map +0 -1
- package/dist/tui/components/index.d.ts +0 -17
- package/dist/tui/components/index.js +0 -10
- package/dist/tui/components/index.js.map +0 -1
- package/dist/tui/components/inline-confirm.d.ts +0 -14
- package/dist/tui/components/inline-confirm.js +0 -13
- package/dist/tui/components/inline-confirm.js.map +0 -1
- package/dist/tui/components/inline-select.d.ts +0 -21
- package/dist/tui/components/inline-select.js +0 -20
- package/dist/tui/components/inline-select.js.map +0 -1
- package/dist/tui/components/markdown.d.ts +0 -6
- package/dist/tui/components/markdown.js +0 -179
- package/dist/tui/components/markdown.js.map +0 -1
- package/dist/tui/components/mention-autocomplete.d.ts +0 -79
- package/dist/tui/components/mention-autocomplete.js +0 -250
- package/dist/tui/components/mention-autocomplete.js.map +0 -1
- package/dist/tui/components/message-list.d.ts +0 -18
- package/dist/tui/components/message-list.js +0 -29
- package/dist/tui/components/message-list.js.map +0 -1
- package/dist/tui/components/picker.d.ts +0 -16
- package/dist/tui/components/picker.js +0 -32
- package/dist/tui/components/picker.js.map +0 -1
- package/dist/tui/components/progress-steps.d.ts +0 -13
- package/dist/tui/components/progress-steps.js +0 -21
- package/dist/tui/components/progress-steps.js.map +0 -1
- package/dist/tui/components/slack/compose.d.ts +0 -27
- package/dist/tui/components/slack/compose.js +0 -147
- package/dist/tui/components/slack/compose.js.map +0 -1
- package/dist/tui/components/slack/layout.d.ts +0 -36
- package/dist/tui/components/slack/layout.js +0 -96
- package/dist/tui/components/slack/layout.js.map +0 -1
- package/dist/tui/components/slack/messages.d.ts +0 -72
- package/dist/tui/components/slack/messages.js +0 -177
- package/dist/tui/components/slack/messages.js.map +0 -1
- package/dist/tui/components/slack/quick-switcher.d.ts +0 -33
- package/dist/tui/components/slack/quick-switcher.js +0 -98
- package/dist/tui/components/slack/quick-switcher.js.map +0 -1
- package/dist/tui/components/slack/sidebar-types.d.ts +0 -65
- package/dist/tui/components/slack/sidebar-types.js +0 -7
- package/dist/tui/components/slack/sidebar-types.js.map +0 -1
- package/dist/tui/components/slack/sidebar.d.ts +0 -46
- package/dist/tui/components/slack/sidebar.js +0 -52
- package/dist/tui/components/slack/sidebar.js.map +0 -1
- package/dist/tui/components/slack/thread-panel.d.ts +0 -45
- package/dist/tui/components/slack/thread-panel.js +0 -47
- package/dist/tui/components/slack/thread-panel.js.map +0 -1
- package/dist/tui/components/slash-autocomplete.d.ts +0 -83
- package/dist/tui/components/slash-autocomplete.js +0 -233
- package/dist/tui/components/slash-autocomplete.js.map +0 -1
- package/dist/tui/components/spinner.d.ts +0 -17
- package/dist/tui/components/spinner.js +0 -30
- package/dist/tui/components/spinner.js.map +0 -1
- package/dist/tui/components/status-bar.d.ts +0 -23
- package/dist/tui/components/status-bar.js +0 -55
- package/dist/tui/components/status-bar.js.map +0 -1
- package/dist/tui/components/success-box.d.ts +0 -7
- package/dist/tui/components/success-box.js +0 -10
- package/dist/tui/components/success-box.js.map +0 -1
- package/dist/tui/components/tool-indicator.d.ts +0 -12
- package/dist/tui/components/tool-indicator.js +0 -18
- package/dist/tui/components/tool-indicator.js.map +0 -1
- package/dist/tui/components/viewport.d.ts +0 -9
- package/dist/tui/components/viewport.js +0 -24
- package/dist/tui/components/viewport.js.map +0 -1
- package/dist/tui/generative/bindings.d.ts +0 -27
- package/dist/tui/generative/bindings.js +0 -152
- package/dist/tui/generative/bindings.js.map +0 -1
- package/dist/tui/generative/registry.d.ts +0 -19
- package/dist/tui/generative/registry.js +0 -31
- package/dist/tui/generative/registry.js.map +0 -1
- package/dist/tui/generative/renderer.d.ts +0 -24
- package/dist/tui/generative/renderer.js +0 -160
- package/dist/tui/generative/renderer.js.map +0 -1
- package/dist/tui/generative/types.d.ts +0 -68
- package/dist/tui/generative/types.js +0 -7
- package/dist/tui/generative/types.js.map +0 -1
- package/dist/tui/hooks/use-cancellable.d.ts +0 -28
- package/dist/tui/hooks/use-cancellable.js +0 -51
- package/dist/tui/hooks/use-cancellable.js.map +0 -1
- package/dist/tui/hooks/use-streaming.d.ts +0 -44
- package/dist/tui/hooks/use-streaming.js +0 -105
- package/dist/tui/hooks/use-streaming.js.map +0 -1
- package/dist/tui/index.d.ts +0 -4
- package/dist/tui/index.js +0 -7
- package/dist/tui/index.js.map +0 -1
- package/dist/tui/keybindings.d.ts +0 -25
- package/dist/tui/keybindings.js +0 -277
- package/dist/tui/keybindings.js.map +0 -1
- package/dist/tui/register-views.d.ts +0 -8
- package/dist/tui/register-views.js +0 -122
- package/dist/tui/register-views.js.map +0 -1
- package/dist/tui/router.d.ts +0 -29
- package/dist/tui/router.js +0 -87
- package/dist/tui/router.js.map +0 -1
- package/dist/tui/services/agent-service.d.ts +0 -58
- package/dist/tui/services/agent-service.js +0 -197
- package/dist/tui/services/agent-service.js.map +0 -1
- package/dist/tui/services/calendar-service.d.ts +0 -31
- package/dist/tui/services/calendar-service.js +0 -133
- package/dist/tui/services/calendar-service.js.map +0 -1
- package/dist/tui/services/chat-service.d.ts +0 -28
- package/dist/tui/services/chat-service.js +0 -91
- package/dist/tui/services/chat-service.js.map +0 -1
- package/dist/tui/services/orchestration-service.d.ts +0 -42
- package/dist/tui/services/orchestration-service.js +0 -153
- package/dist/tui/services/orchestration-service.js.map +0 -1
- package/dist/tui/slash-commands.d.ts +0 -106
- package/dist/tui/slash-commands.js +0 -1421
- package/dist/tui/slash-commands.js.map +0 -1
- package/dist/tui/store.d.ts +0 -96
- package/dist/tui/store.js +0 -120
- package/dist/tui/store.js.map +0 -1
- package/dist/tui/theme.d.ts +0 -40
- package/dist/tui/theme.js +0 -39
- package/dist/tui/theme.js.map +0 -1
- package/dist/tui/tui-context.d.ts +0 -22
- package/dist/tui/tui-context.js +0 -17
- package/dist/tui/tui-context.js.map +0 -1
- package/dist/tui/views/agent-list.d.ts +0 -8
- package/dist/tui/views/agent-list.js +0 -11
- package/dist/tui/views/agent-list.js.map +0 -1
- package/dist/tui/views/ask-chat.d.ts +0 -9
- package/dist/tui/views/ask-chat.js +0 -40
- package/dist/tui/views/ask-chat.js.map +0 -1
- package/dist/tui/views/calendar.d.ts +0 -15
- package/dist/tui/views/calendar.js +0 -29
- package/dist/tui/views/calendar.js.map +0 -1
- package/dist/tui/views/chat.d.ts +0 -18
- package/dist/tui/views/chat.js +0 -28
- package/dist/tui/views/chat.js.map +0 -1
- package/dist/tui/views/generative.d.ts +0 -14
- package/dist/tui/views/generative.js +0 -37
- package/dist/tui/views/generative.js.map +0 -1
- package/dist/tui/views/help.d.ts +0 -6
- package/dist/tui/views/help.js +0 -9
- package/dist/tui/views/help.js.map +0 -1
- package/dist/tui/views/home-screen.d.ts +0 -67
- package/dist/tui/views/home-screen.js +0 -192
- package/dist/tui/views/home-screen.js.map +0 -1
- package/dist/tui/views/home.d.ts +0 -33
- package/dist/tui/views/home.js +0 -60
- package/dist/tui/views/home.js.map +0 -1
- package/dist/tui/views/index.d.ts +0 -20
- package/dist/tui/views/index.js +0 -11
- package/dist/tui/views/index.js.map +0 -1
- package/dist/tui/views/insights.d.ts +0 -19
- package/dist/tui/views/insights.js +0 -46
- package/dist/tui/views/insights.js.map +0 -1
- package/dist/tui/views/orchestration.d.ts +0 -18
- package/dist/tui/views/orchestration.js +0 -73
- package/dist/tui/views/orchestration.js.map +0 -1
- package/dist/tui/views/record-detail.d.ts +0 -10
- package/dist/tui/views/record-detail.js +0 -22
- package/dist/tui/views/record-detail.js.map +0 -1
- package/dist/tui/views/record-list.d.ts +0 -15
- package/dist/tui/views/record-list.js +0 -22
- package/dist/tui/views/record-list.js.map +0 -1
- package/dist/tui/views/slack-channel-header.d.ts +0 -15
- package/dist/tui/views/slack-channel-header.js +0 -16
- package/dist/tui/views/slack-channel-header.js.map +0 -1
- package/dist/tui/views/slack-home.d.ts +0 -21
- package/dist/tui/views/slack-home.js +0 -572
- package/dist/tui/views/slack-home.js.map +0 -1
- package/dist/tui/views/stream.d.ts +0 -16
- package/dist/tui/views/stream.js +0 -210
- package/dist/tui/views/stream.js.map +0 -1
- package/dist/tui/views/task-board.d.ts +0 -21
- package/dist/tui/views/task-board.js +0 -33
- package/dist/tui/views/task-board.js.map +0 -1
- package/dist/tui/views/timeline.d.ts +0 -17
- package/dist/tui/views/timeline.js +0 -24
- package/dist/tui/views/timeline.js.map +0 -1
|
@@ -1,135 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
/**
|
|
3
|
-
* Claude Code Stop hook — auto-capture conversation to Nex + plan file ingestion.
|
|
4
|
-
*
|
|
5
|
-
* Reads { last_assistant_message, session_id } from stdin,
|
|
6
|
-
* filters and sends to Nex for ingestion. Also checks .claude/plans/
|
|
7
|
-
* for changed plan files and ingests up to 2.
|
|
8
|
-
*
|
|
9
|
-
* On ANY error: outputs {} and exits 0 (graceful degradation).
|
|
10
|
-
*/
|
|
11
|
-
import { readdirSync, statSync, readFileSync } from "node:fs";
|
|
12
|
-
import { join, extname } from "node:path";
|
|
13
|
-
import { loadConfig, loadScanConfig, isHookEnabled } from "./config.js";
|
|
14
|
-
import { NexClient } from "./nex-client.js";
|
|
15
|
-
import { captureFilter } from "./capture-filter.js";
|
|
16
|
-
import { RateLimiter } from "./rate-limiter.js";
|
|
17
|
-
import { readManifest, writeManifest, isChanged, markIngested } from "./file-manifest.js";
|
|
18
|
-
/** Ingest timeout — 3s leaves buffer within hook timeout */
|
|
19
|
-
const INGEST_TIMEOUT_MS = 3_000;
|
|
20
|
-
const MAX_PLAN_FILES = 2;
|
|
21
|
-
const rateLimiter = new RateLimiter();
|
|
22
|
-
/**
|
|
23
|
-
* Scan .claude/plans/ for changed .md files and ingest up to MAX_PLAN_FILES.
|
|
24
|
-
*/
|
|
25
|
-
async function ingestPlanFiles(client) {
|
|
26
|
-
const scanConfig = loadScanConfig();
|
|
27
|
-
if (!scanConfig.enabled)
|
|
28
|
-
return;
|
|
29
|
-
const plansDir = join(process.cwd(), ".claude", "plans");
|
|
30
|
-
let entries;
|
|
31
|
-
try {
|
|
32
|
-
entries = readdirSync(plansDir, { withFileTypes: true });
|
|
33
|
-
}
|
|
34
|
-
catch {
|
|
35
|
-
return; // No .claude/plans/ dir — normal, skip silently
|
|
36
|
-
}
|
|
37
|
-
const manifest = readManifest();
|
|
38
|
-
let ingested = 0;
|
|
39
|
-
for (const entry of entries) {
|
|
40
|
-
if (ingested >= MAX_PLAN_FILES)
|
|
41
|
-
break;
|
|
42
|
-
if (!entry.isFile())
|
|
43
|
-
continue;
|
|
44
|
-
if (extname(entry.name).toLowerCase() !== ".md")
|
|
45
|
-
continue;
|
|
46
|
-
const fullPath = join(plansDir, entry.name);
|
|
47
|
-
try {
|
|
48
|
-
const stat = statSync(fullPath);
|
|
49
|
-
if (!isChanged(fullPath, stat, manifest))
|
|
50
|
-
continue;
|
|
51
|
-
if (!rateLimiter.canProceed()) {
|
|
52
|
-
process.stderr.write("[nex-capture] Rate limited — skipping plan file ingest\n");
|
|
53
|
-
break;
|
|
54
|
-
}
|
|
55
|
-
let content = readFileSync(fullPath, "utf-8");
|
|
56
|
-
if (content.length > 100_000) {
|
|
57
|
-
content = content.slice(0, 100_000) + "\n[...truncated]";
|
|
58
|
-
}
|
|
59
|
-
const context = `claude-code-plan:${entry.name}`;
|
|
60
|
-
await client.ingest(content, context, INGEST_TIMEOUT_MS);
|
|
61
|
-
markIngested(fullPath, stat, context, manifest);
|
|
62
|
-
ingested++;
|
|
63
|
-
}
|
|
64
|
-
catch (err) {
|
|
65
|
-
process.stderr.write(`[nex-capture] Plan file ingest failed (${entry.name}): ${err instanceof Error ? err.message : String(err)}\n`);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
if (ingested > 0) {
|
|
69
|
-
writeManifest(manifest);
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
async function main() {
|
|
73
|
-
try {
|
|
74
|
-
// Read stdin
|
|
75
|
-
const chunks = [];
|
|
76
|
-
for await (const chunk of process.stdin) {
|
|
77
|
-
chunks.push(chunk);
|
|
78
|
-
}
|
|
79
|
-
const raw = Buffer.concat(chunks).toString("utf-8");
|
|
80
|
-
// Check .nex.toml kill switch
|
|
81
|
-
if (!isHookEnabled("capture")) {
|
|
82
|
-
process.stdout.write("{}");
|
|
83
|
-
return;
|
|
84
|
-
}
|
|
85
|
-
let input;
|
|
86
|
-
try {
|
|
87
|
-
input = JSON.parse(raw);
|
|
88
|
-
}
|
|
89
|
-
catch {
|
|
90
|
-
process.stdout.write("{}");
|
|
91
|
-
return;
|
|
92
|
-
}
|
|
93
|
-
let cfg;
|
|
94
|
-
try {
|
|
95
|
-
cfg = loadConfig();
|
|
96
|
-
}
|
|
97
|
-
catch {
|
|
98
|
-
process.stdout.write("{}");
|
|
99
|
-
return;
|
|
100
|
-
}
|
|
101
|
-
const client = new NexClient(cfg.apiKey, cfg.baseUrl);
|
|
102
|
-
// --- Conversation capture (existing behavior) ---
|
|
103
|
-
const message = input.last_assistant_message?.trim();
|
|
104
|
-
if (message) {
|
|
105
|
-
const filterResult = captureFilter(message);
|
|
106
|
-
if (!filterResult.skipped) {
|
|
107
|
-
if (rateLimiter.canProceed()) {
|
|
108
|
-
try {
|
|
109
|
-
await client.ingest(filterResult.text, "claude-code-conversation", INGEST_TIMEOUT_MS);
|
|
110
|
-
}
|
|
111
|
-
catch (err) {
|
|
112
|
-
process.stderr.write(`[nex-capture] Ingest failed: ${err instanceof Error ? err.message : String(err)}\n`);
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
else {
|
|
116
|
-
process.stderr.write("[nex-capture] Rate limited — skipping conversation ingest\n");
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
// --- Plan file ingestion ---
|
|
121
|
-
try {
|
|
122
|
-
await ingestPlanFiles(client);
|
|
123
|
-
}
|
|
124
|
-
catch (err) {
|
|
125
|
-
process.stderr.write(`[nex-capture] Plan file scan error: ${err instanceof Error ? err.message : String(err)}\n`);
|
|
126
|
-
}
|
|
127
|
-
process.stdout.write("{}");
|
|
128
|
-
}
|
|
129
|
-
catch (err) {
|
|
130
|
-
process.stderr.write(`[nex-capture] Unexpected error: ${err instanceof Error ? err.message : String(err)}\n`);
|
|
131
|
-
process.stdout.write("{}");
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
main().then(() => process.exit(0)).catch(() => process.exit(0));
|
|
135
|
-
//# sourceMappingURL=auto-capture.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auto-capture.js","sourceRoot":"","sources":["../../src/plugin/auto-capture.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import { loadConfig } from "./config.js";
|
|
3
|
-
import { formatNexContext } from "./context-format.js";
|
|
4
|
-
import { NexClient } from "./nex-client.js";
|
|
5
|
-
import { RecallCache } from "./recall-cache.js";
|
|
6
|
-
import { SessionStore } from "./session-store.js";
|
|
7
|
-
const sessions = new SessionStore();
|
|
8
|
-
const recallCache = new RecallCache();
|
|
9
|
-
function readTimeoutEnv(name, fallbackMs) {
|
|
10
|
-
const raw = process.env[name];
|
|
11
|
-
const parsed = Number.parseInt(raw ?? "", 10);
|
|
12
|
-
return Number.isFinite(parsed) && parsed > 0 ? parsed : fallbackMs;
|
|
13
|
-
}
|
|
14
|
-
const BACKGROUND_RECALL_TIMEOUT_MS = readTimeoutEnv("NEX_RECALL_BACKGROUND_TIMEOUT_MS", 60_000);
|
|
15
|
-
const PENDING_CACHE_TTL_MS = readTimeoutEnv("NEX_RECALL_PENDING_TTL_MS", BACKGROUND_RECALL_TIMEOUT_MS + 30_000);
|
|
16
|
-
async function readInput() {
|
|
17
|
-
const chunks = [];
|
|
18
|
-
for await (const chunk of process.stdin) {
|
|
19
|
-
chunks.push(chunk);
|
|
20
|
-
}
|
|
21
|
-
try {
|
|
22
|
-
return JSON.parse(Buffer.concat(chunks).toString("utf-8"));
|
|
23
|
-
}
|
|
24
|
-
catch {
|
|
25
|
-
return {};
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
async function main() {
|
|
29
|
-
let input = {};
|
|
30
|
-
try {
|
|
31
|
-
input = await readInput();
|
|
32
|
-
const prompt = input.prompt?.trim();
|
|
33
|
-
const promptHash = input.prompt_hash?.trim();
|
|
34
|
-
const sessionKey = input.session_id?.trim();
|
|
35
|
-
if (!prompt || !promptHash || !sessionKey) {
|
|
36
|
-
return;
|
|
37
|
-
}
|
|
38
|
-
if (!recallCache.hasPending(sessionKey, promptHash, PENDING_CACHE_TTL_MS)) {
|
|
39
|
-
return;
|
|
40
|
-
}
|
|
41
|
-
const cfg = loadConfig();
|
|
42
|
-
const client = new NexClient(cfg.apiKey, cfg.baseUrl);
|
|
43
|
-
const nexSessionId = sessions.get(sessionKey);
|
|
44
|
-
const result = await client.ask(prompt, nexSessionId, BACKGROUND_RECALL_TIMEOUT_MS);
|
|
45
|
-
if (!result.answer) {
|
|
46
|
-
recallCache.clearPending(sessionKey, promptHash);
|
|
47
|
-
return;
|
|
48
|
-
}
|
|
49
|
-
if (result.session_id) {
|
|
50
|
-
sessions.set(sessionKey, result.session_id);
|
|
51
|
-
}
|
|
52
|
-
const context = formatNexContext({
|
|
53
|
-
answer: result.answer,
|
|
54
|
-
entityCount: result.entity_references?.length ?? 0,
|
|
55
|
-
sessionId: result.session_id,
|
|
56
|
-
});
|
|
57
|
-
if (!recallCache.hasPending(sessionKey, promptHash, PENDING_CACHE_TTL_MS)) {
|
|
58
|
-
return;
|
|
59
|
-
}
|
|
60
|
-
recallCache.setReady(sessionKey, {
|
|
61
|
-
promptHash,
|
|
62
|
-
context,
|
|
63
|
-
});
|
|
64
|
-
}
|
|
65
|
-
catch {
|
|
66
|
-
const promptHash = input.prompt_hash?.trim();
|
|
67
|
-
const sessionKey = input.session_id?.trim();
|
|
68
|
-
if (promptHash && sessionKey) {
|
|
69
|
-
recallCache.clearPending(sessionKey, promptHash);
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
main().then(() => process.exit(0)).catch(() => process.exit(0));
|
|
74
|
-
//# sourceMappingURL=auto-recall-worker.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auto-recall-worker.js","sourceRoot":"","sources":["../../src/plugin/auto-recall-worker.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
/**
|
|
3
|
-
* Claude Code UserPromptSubmit hook — auto-recall from Nex.
|
|
4
|
-
*
|
|
5
|
-
* Reads the user's prompt from stdin, runs it through the recall filter
|
|
6
|
-
* to decide if recall is needed, queries Nex for relevant context,
|
|
7
|
-
* and outputs { additionalContext: "..." } to inject into the conversation.
|
|
8
|
-
*
|
|
9
|
-
* On ANY error: outputs {} and exits 0 (graceful degradation).
|
|
10
|
-
*/
|
|
11
|
-
export {};
|
|
@@ -1,186 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
/**
|
|
3
|
-
* Claude Code UserPromptSubmit hook — auto-recall from Nex.
|
|
4
|
-
*
|
|
5
|
-
* Reads the user's prompt from stdin, runs it through the recall filter
|
|
6
|
-
* to decide if recall is needed, queries Nex for relevant context,
|
|
7
|
-
* and outputs { additionalContext: "..." } to inject into the conversation.
|
|
8
|
-
*
|
|
9
|
-
* On ANY error: outputs {} and exits 0 (graceful degradation).
|
|
10
|
-
*/
|
|
11
|
-
import { loadConfig, isHookEnabled } from "./config.js";
|
|
12
|
-
import { NexClient } from "./nex-client.js";
|
|
13
|
-
import { formatNexContext } from "./context-format.js";
|
|
14
|
-
import { RecallCache, hashPrompt } from "./recall-cache.js";
|
|
15
|
-
import { SessionStore } from "./session-store.js";
|
|
16
|
-
import { shouldRecall } from "./recall-filter.js";
|
|
17
|
-
import { spawn } from "node:child_process";
|
|
18
|
-
import { dirname, join } from "node:path";
|
|
19
|
-
import { fileURLToPath } from "node:url";
|
|
20
|
-
const sessions = new SessionStore();
|
|
21
|
-
const recallCache = new RecallCache();
|
|
22
|
-
const FAST_RECALL_BUDGET_MS = readTimeoutEnv("NEX_RECALL_SYNC_BUDGET_MS", 8_000);
|
|
23
|
-
const BACKGROUND_RECALL_TIMEOUT_MS = readTimeoutEnv("NEX_RECALL_BACKGROUND_TIMEOUT_MS", 60_000);
|
|
24
|
-
const READY_CACHE_TTL_MS = readTimeoutEnv("NEX_RECALL_READY_TTL_MS", 5 * 60_000);
|
|
25
|
-
const PENDING_CACHE_TTL_MS = readTimeoutEnv("NEX_RECALL_PENDING_TTL_MS", BACKGROUND_RECALL_TIMEOUT_MS + 30_000);
|
|
26
|
-
const WORKER_PATH = join(dirname(fileURLToPath(import.meta.url)), "auto-recall-worker.js");
|
|
27
|
-
function readTimeoutEnv(name, fallbackMs) {
|
|
28
|
-
const raw = process.env[name];
|
|
29
|
-
const parsed = Number.parseInt(raw ?? "", 10);
|
|
30
|
-
return Number.isFinite(parsed) && parsed > 0 ? parsed : fallbackMs;
|
|
31
|
-
}
|
|
32
|
-
function writeHookContext(context) {
|
|
33
|
-
process.stdout.write(JSON.stringify({
|
|
34
|
-
hookSpecificOutput: {
|
|
35
|
-
hookEventName: "UserPromptSubmit",
|
|
36
|
-
additionalContext: context,
|
|
37
|
-
},
|
|
38
|
-
}));
|
|
39
|
-
}
|
|
40
|
-
function isAbortError(error) {
|
|
41
|
-
return error instanceof Error && error.name === "AbortError";
|
|
42
|
-
}
|
|
43
|
-
function launchBackgroundRecall(prompt, sessionKey, promptHash) {
|
|
44
|
-
try {
|
|
45
|
-
const child = spawn(process.execPath, [WORKER_PATH], {
|
|
46
|
-
detached: true,
|
|
47
|
-
env: {
|
|
48
|
-
...process.env,
|
|
49
|
-
NEX_RECALL_BACKGROUND_TIMEOUT_MS: String(BACKGROUND_RECALL_TIMEOUT_MS),
|
|
50
|
-
NEX_RECALL_PENDING_TTL_MS: String(PENDING_CACHE_TTL_MS),
|
|
51
|
-
},
|
|
52
|
-
stdio: ["pipe", "ignore", "ignore"],
|
|
53
|
-
});
|
|
54
|
-
child.stdin.end(JSON.stringify({
|
|
55
|
-
prompt,
|
|
56
|
-
prompt_hash: promptHash,
|
|
57
|
-
session_id: sessionKey,
|
|
58
|
-
}));
|
|
59
|
-
child.unref();
|
|
60
|
-
}
|
|
61
|
-
catch {
|
|
62
|
-
recallCache.clearPending(sessionKey, promptHash);
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* Check if this is the first prompt for this session.
|
|
67
|
-
* A session with no stored Nex session ID is considered "first prompt"
|
|
68
|
-
* (SessionStart may have already set one, but that's fine — it means
|
|
69
|
-
* baseline context was loaded, and first user prompt still gets recall).
|
|
70
|
-
*/
|
|
71
|
-
function isFirstPrompt(sessionKey) {
|
|
72
|
-
if (!sessionKey)
|
|
73
|
-
return true;
|
|
74
|
-
return !sessions.get(sessionKey);
|
|
75
|
-
}
|
|
76
|
-
async function main() {
|
|
77
|
-
try {
|
|
78
|
-
// Read stdin
|
|
79
|
-
const chunks = [];
|
|
80
|
-
for await (const chunk of process.stdin) {
|
|
81
|
-
chunks.push(chunk);
|
|
82
|
-
}
|
|
83
|
-
const raw = Buffer.concat(chunks).toString("utf-8");
|
|
84
|
-
let input;
|
|
85
|
-
try {
|
|
86
|
-
input = JSON.parse(raw);
|
|
87
|
-
}
|
|
88
|
-
catch {
|
|
89
|
-
process.stderr.write("[nex-recall] Failed to parse stdin JSON\n");
|
|
90
|
-
process.stdout.write("{}");
|
|
91
|
-
return;
|
|
92
|
-
}
|
|
93
|
-
// Check .nex.toml kill switch
|
|
94
|
-
if (!isHookEnabled("recall")) {
|
|
95
|
-
process.stdout.write("{}");
|
|
96
|
-
return;
|
|
97
|
-
}
|
|
98
|
-
const prompt = input.prompt?.trim();
|
|
99
|
-
if (!prompt || prompt.length < 5) {
|
|
100
|
-
process.stdout.write("{}");
|
|
101
|
-
return;
|
|
102
|
-
}
|
|
103
|
-
// Skip slash commands
|
|
104
|
-
if (prompt.startsWith("/")) {
|
|
105
|
-
process.stdout.write("{}");
|
|
106
|
-
return;
|
|
107
|
-
}
|
|
108
|
-
// --- Recall filter: decide if this prompt needs memory recall ---
|
|
109
|
-
const decision = shouldRecall(prompt, isFirstPrompt(input.session_id));
|
|
110
|
-
if (!decision.shouldRecall) {
|
|
111
|
-
process.stdout.write("{}");
|
|
112
|
-
return;
|
|
113
|
-
}
|
|
114
|
-
let cfg;
|
|
115
|
-
try {
|
|
116
|
-
cfg = loadConfig();
|
|
117
|
-
}
|
|
118
|
-
catch (err) {
|
|
119
|
-
process.stderr.write(`[nex-recall] Config error: ${err instanceof Error ? err.message : String(err)}\n`);
|
|
120
|
-
process.stdout.write("{}");
|
|
121
|
-
return;
|
|
122
|
-
}
|
|
123
|
-
const client = new NexClient(cfg.apiKey, cfg.baseUrl);
|
|
124
|
-
// Resolve session ID for multi-turn continuity
|
|
125
|
-
const sessionKey = input.session_id;
|
|
126
|
-
const promptHash = hashPrompt(prompt);
|
|
127
|
-
const nexSessionId = sessionKey ? sessions.get(sessionKey) : undefined;
|
|
128
|
-
const cachedReady = sessionKey
|
|
129
|
-
? recallCache.getInjectable(sessionKey, READY_CACHE_TTL_MS)
|
|
130
|
-
: undefined;
|
|
131
|
-
if (sessionKey && cachedReady?.promptHash === promptHash) {
|
|
132
|
-
recallCache.markReadyDelivered(sessionKey);
|
|
133
|
-
writeHookContext(cachedReady.context);
|
|
134
|
-
return;
|
|
135
|
-
}
|
|
136
|
-
const hasPendingCurrent = sessionKey
|
|
137
|
-
? recallCache.hasPending(sessionKey, promptHash, PENDING_CACHE_TTL_MS)
|
|
138
|
-
: false;
|
|
139
|
-
let shouldStartBackground = false;
|
|
140
|
-
if (!hasPendingCurrent) {
|
|
141
|
-
try {
|
|
142
|
-
const result = await client.ask(prompt, nexSessionId, FAST_RECALL_BUDGET_MS);
|
|
143
|
-
if (result.answer) {
|
|
144
|
-
if (result.session_id && sessionKey) {
|
|
145
|
-
sessions.set(sessionKey, result.session_id);
|
|
146
|
-
}
|
|
147
|
-
const context = formatNexContext({
|
|
148
|
-
answer: result.answer,
|
|
149
|
-
entityCount: result.entity_references?.length ?? 0,
|
|
150
|
-
sessionId: result.session_id,
|
|
151
|
-
});
|
|
152
|
-
if (sessionKey) {
|
|
153
|
-
recallCache.setReady(sessionKey, { promptHash, context });
|
|
154
|
-
recallCache.markReadyDelivered(sessionKey);
|
|
155
|
-
}
|
|
156
|
-
writeHookContext(context);
|
|
157
|
-
return;
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
catch (err) {
|
|
161
|
-
if (isAbortError(err)) {
|
|
162
|
-
shouldStartBackground = true;
|
|
163
|
-
}
|
|
164
|
-
else {
|
|
165
|
-
process.stderr.write(`[nex-recall] Fast-path error: ${err instanceof Error ? err.message : String(err)}\n`);
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
if (sessionKey && shouldStartBackground && !hasPendingCurrent) {
|
|
170
|
-
recallCache.setPending(sessionKey, promptHash);
|
|
171
|
-
launchBackgroundRecall(prompt, sessionKey, promptHash);
|
|
172
|
-
}
|
|
173
|
-
if (sessionKey && cachedReady) {
|
|
174
|
-
recallCache.markReadyDelivered(sessionKey);
|
|
175
|
-
writeHookContext(cachedReady.context);
|
|
176
|
-
return;
|
|
177
|
-
}
|
|
178
|
-
process.stdout.write("{}");
|
|
179
|
-
}
|
|
180
|
-
catch (err) {
|
|
181
|
-
process.stderr.write(`[nex-recall] Unexpected error: ${err instanceof Error ? err.message : String(err)}\n`);
|
|
182
|
-
process.stdout.write("{}");
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
main().then(() => process.exit(0)).catch(() => process.exit(0));
|
|
186
|
-
//# sourceMappingURL=auto-recall.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auto-recall.js","sourceRoot":"","sources":["../../src/plugin/auto-recall.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
/**
|
|
3
|
-
* Registration entry point — creates a Nex account and persists the API key.
|
|
4
|
-
*
|
|
5
|
-
* Usage: node dist/auto-register.js <email> [name] [company]
|
|
6
|
-
*
|
|
7
|
-
* On success: saves to workspace credentials.json and legacy ~/.nex-mcp.json.
|
|
8
|
-
* If already registered (API key exists): prints status and exits.
|
|
9
|
-
*/
|
|
10
|
-
export {};
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
/**
|
|
3
|
-
* Registration entry point — creates a Nex account and persists the API key.
|
|
4
|
-
*
|
|
5
|
-
* Usage: node dist/auto-register.js <email> [name] [company]
|
|
6
|
-
*
|
|
7
|
-
* On success: saves to workspace credentials.json and legacy ~/.nex-mcp.json.
|
|
8
|
-
* If already registered (API key exists): prints status and exits.
|
|
9
|
-
*/
|
|
10
|
-
import { loadMcpConfig, loadWorkspaceCredentials, persistRegistration, loadBaseUrl, MCP_CONFIG_PATH } from "./config.js";
|
|
11
|
-
import { NexClient } from "./nex-client.js";
|
|
12
|
-
import { workspaceDataDir } from "./workspace-data-dir.js";
|
|
13
|
-
import { writeFileSync, mkdirSync } from "node:fs";
|
|
14
|
-
import { join } from "node:path";
|
|
15
|
-
/** Persist credentials to the active workspace directory. */
|
|
16
|
-
function persistWorkspaceCredentials(data) {
|
|
17
|
-
const slug = typeof data.workspace_slug === "string" ? data.workspace_slug : undefined;
|
|
18
|
-
if (!slug)
|
|
19
|
-
return;
|
|
20
|
-
const wsDir = workspaceDataDir();
|
|
21
|
-
mkdirSync(wsDir, { recursive: true });
|
|
22
|
-
const creds = {
|
|
23
|
-
api_key: data.api_key,
|
|
24
|
-
email: data.email,
|
|
25
|
-
workspace_id: typeof data.workspace_id === "number" ? String(data.workspace_id) : data.workspace_id,
|
|
26
|
-
workspace_slug: slug,
|
|
27
|
-
};
|
|
28
|
-
writeFileSync(join(wsDir, "credentials.json"), JSON.stringify(creds, null, 2) + "\n", "utf-8");
|
|
29
|
-
}
|
|
30
|
-
async function main() {
|
|
31
|
-
const email = process.argv[2];
|
|
32
|
-
const name = process.argv[3];
|
|
33
|
-
const company = process.argv[4];
|
|
34
|
-
if (!email) {
|
|
35
|
-
console.error("Usage: auto-register.js <email> [name] [company]");
|
|
36
|
-
process.exit(1);
|
|
37
|
-
}
|
|
38
|
-
// Check if already registered — workspace credentials take priority
|
|
39
|
-
const wsCreds = loadWorkspaceCredentials();
|
|
40
|
-
if (wsCreds.api_key) {
|
|
41
|
-
console.log("Already registered.");
|
|
42
|
-
console.log(` API key: ${wsCreds.api_key.slice(0, 12)}...`);
|
|
43
|
-
console.log(` Config: ${workspaceDataDir()}/credentials.json`);
|
|
44
|
-
console.log("\nTo re-register, delete the credentials.json in your workspace directory.");
|
|
45
|
-
return;
|
|
46
|
-
}
|
|
47
|
-
const existing = loadMcpConfig();
|
|
48
|
-
if (existing.api_key) {
|
|
49
|
-
console.log("Already registered.");
|
|
50
|
-
console.log(` API key: ${existing.api_key.slice(0, 12)}...`);
|
|
51
|
-
console.log(` Config: ${MCP_CONFIG_PATH}`);
|
|
52
|
-
console.log("\nTo re-register, delete ~/.nex-mcp.json first.");
|
|
53
|
-
return;
|
|
54
|
-
}
|
|
55
|
-
const baseUrl = loadBaseUrl();
|
|
56
|
-
console.log(`Registering ${email} at ${baseUrl} ...`);
|
|
57
|
-
try {
|
|
58
|
-
const result = await NexClient.register(baseUrl, email, name, company);
|
|
59
|
-
if (!result.api_key) {
|
|
60
|
-
console.error("Registration succeeded but no API key returned.");
|
|
61
|
-
console.error("Response:", JSON.stringify(result, null, 2));
|
|
62
|
-
process.exit(1);
|
|
63
|
-
}
|
|
64
|
-
// Persist to workspace credentials and legacy config
|
|
65
|
-
const resultData = result;
|
|
66
|
-
persistWorkspaceCredentials(resultData);
|
|
67
|
-
persistRegistration(resultData);
|
|
68
|
-
console.log("Registration successful!");
|
|
69
|
-
console.log(` API key: ${result.api_key.slice(0, 12)}...`);
|
|
70
|
-
if (result.workspace_slug)
|
|
71
|
-
console.log(` Workspace: ${result.workspace_slug}`);
|
|
72
|
-
console.log(` Saved to: ${workspaceDataDir()}/credentials.json`);
|
|
73
|
-
console.log("\nAll Nex memory features are now active. No restart needed.");
|
|
74
|
-
}
|
|
75
|
-
catch (err) {
|
|
76
|
-
console.error(`Registration failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
77
|
-
process.exit(1);
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
main();
|
|
81
|
-
//# sourceMappingURL=auto-register.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auto-register.js","sourceRoot":"","sources":["../../src/plugin/auto-register.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
/**
|
|
3
|
-
* Standalone entry point for the /nex:scan slash command.
|
|
4
|
-
*
|
|
5
|
-
* Reads optional directory from argv[2] or stdin, scans for project files,
|
|
6
|
-
* and ingests changed ones into Nex. Prints results to stdout.
|
|
7
|
-
*
|
|
8
|
-
* Usage: node dist/auto-scan.js [directory]
|
|
9
|
-
*/
|
|
10
|
-
export {};
|
package/dist/plugin/auto-scan.js
DELETED
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
/**
|
|
3
|
-
* Standalone entry point for the /nex:scan slash command.
|
|
4
|
-
*
|
|
5
|
-
* Reads optional directory from argv[2] or stdin, scans for project files,
|
|
6
|
-
* and ingests changed ones into Nex. Prints results to stdout.
|
|
7
|
-
*
|
|
8
|
-
* Usage: node dist/auto-scan.js [directory]
|
|
9
|
-
*/
|
|
10
|
-
import { loadConfig, loadScanConfig } from "./config.js";
|
|
11
|
-
import { NexClient } from "./nex-client.js";
|
|
12
|
-
import { RateLimiter } from "./rate-limiter.js";
|
|
13
|
-
import { scanAndIngest } from "./file-scanner.js";
|
|
14
|
-
import { readManifest, markScanned, writeManifest } from "./file-manifest.js";
|
|
15
|
-
async function main() {
|
|
16
|
-
try {
|
|
17
|
-
// Determine target directory: argv[2] > cwd
|
|
18
|
-
const targetDir = process.argv[2] || process.cwd();
|
|
19
|
-
let cfg;
|
|
20
|
-
try {
|
|
21
|
-
cfg = loadConfig();
|
|
22
|
-
}
|
|
23
|
-
catch (err) {
|
|
24
|
-
console.error(`Config error: ${err instanceof Error ? err.message : String(err)}`);
|
|
25
|
-
process.exit(1);
|
|
26
|
-
}
|
|
27
|
-
const scanConfig = loadScanConfig();
|
|
28
|
-
if (!scanConfig.enabled) {
|
|
29
|
-
console.log("File scanning is disabled (NEX_SCAN_ENABLED=false).");
|
|
30
|
-
return;
|
|
31
|
-
}
|
|
32
|
-
const client = new NexClient(cfg.apiKey, cfg.baseUrl);
|
|
33
|
-
const rateLimiter = new RateLimiter();
|
|
34
|
-
console.log(`Scanning ${targetDir} ...`);
|
|
35
|
-
const result = await scanAndIngest(client, rateLimiter, targetDir, scanConfig);
|
|
36
|
-
// Mark scan time so session start can skip if fresh
|
|
37
|
-
const manifest = readManifest();
|
|
38
|
-
markScanned(manifest);
|
|
39
|
-
writeManifest(manifest);
|
|
40
|
-
console.log(`Scan complete:`);
|
|
41
|
-
console.log(` Scanned: ${result.scanned} files`);
|
|
42
|
-
console.log(` Ingested: ${result.ingested} files`);
|
|
43
|
-
console.log(` Skipped: ${result.skipped} files (unchanged)`);
|
|
44
|
-
if (result.errors > 0) {
|
|
45
|
-
console.log(` Errors: ${result.errors}`);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
catch (err) {
|
|
49
|
-
console.error(`Scan failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
50
|
-
process.exit(1);
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
main();
|
|
54
|
-
//# sourceMappingURL=auto-scan.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auto-scan.js","sourceRoot":"","sources":["../../src/plugin/auto-scan.ts"],"names":[],"mappings":";AACA;;;;;;;GAOG;AAEH,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAE9E,KAAK,UAAU,IAAI;IACjB,IAAI,CAAC;QACH,4CAA4C;QAC5C,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAEnD,IAAI,GAAG,CAAC;QACR,IAAI,CAAC;YACH,GAAG,GAAG,UAAU,EAAE,CAAC;QACrB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,iBAAiB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACnF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,UAAU,GAAG,cAAc,EAAE,CAAC;QACpC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;YACnE,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;QACtD,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;QAEtC,OAAO,CAAC,GAAG,CAAC,YAAY,SAAS,MAAM,CAAC,CAAC;QACzC,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;QAE/E,oDAAoD;QACpD,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAC;QAChC,WAAW,CAAC,QAAQ,CAAC,CAAC;QACtB,aAAa,CAAC,QAAQ,CAAC,CAAC;QAExB,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,cAAc,MAAM,CAAC,OAAO,QAAQ,CAAC,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,QAAQ,QAAQ,CAAC,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,cAAc,MAAM,CAAC,OAAO,oBAAoB,CAAC,CAAC;QAC9D,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,aAAa,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,gBAAgB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
/**
|
|
3
|
-
* Claude Code SessionStart hook — bulk context load from Nex + file scan.
|
|
4
|
-
*
|
|
5
|
-
* Fires once when a new Claude Code session begins. Queries Nex for
|
|
6
|
-
* a baseline context summary and injects it so the agent "already knows"
|
|
7
|
-
* relevant business context from the first message.
|
|
8
|
-
*
|
|
9
|
-
* On startup/clear: also scans project files and ingests changed ones.
|
|
10
|
-
* On compact/resume: skips file scan (files already ingested, just re-query summary).
|
|
11
|
-
*
|
|
12
|
-
* On ANY error: outputs {} and exits 0 (graceful degradation).
|
|
13
|
-
*/
|
|
14
|
-
export {};
|