@nex-ai/nex 0.1.65 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +190 -263
- package/bin/nex-mcp.js +50 -0
- package/bin/nex.js +53 -0
- package/package.json +15 -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
package/dist/mcp/channel.js
DELETED
|
@@ -1,198 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Nex Channel — pushes daily digests and proactive notifications
|
|
3
|
-
* into active Claude Code sessions via the Channels API.
|
|
4
|
-
*
|
|
5
|
-
* Fetches notification preferences and pending notifications from
|
|
6
|
-
* the Nex API. Frequency is controlled server-side via the
|
|
7
|
-
* notifications/preferences endpoint.
|
|
8
|
-
*/
|
|
9
|
-
import { existsSync, readFileSync, writeFileSync, mkdirSync } from "node:fs";
|
|
10
|
-
import { homedir } from "node:os";
|
|
11
|
-
import { join } from "node:path";
|
|
12
|
-
// ---------------------------------------------------------------------------
|
|
13
|
-
// Constants
|
|
14
|
-
// ---------------------------------------------------------------------------
|
|
15
|
-
const STATE_DIR = join(homedir(), ".nex");
|
|
16
|
-
const DIGEST_STATE_PATH = join(STATE_DIR, "channel-state.json");
|
|
17
|
-
/** How often to check whether a daily digest is due (1 hour). */
|
|
18
|
-
const DIGEST_CHECK_INTERVAL_MS = 60 * 60 * 1000;
|
|
19
|
-
/** Minimum gap between daily digests (24 hours). */
|
|
20
|
-
const DIGEST_COOLDOWN_MS = 24 * 60 * 60 * 1000;
|
|
21
|
-
/** Default notification polling interval if API doesn't specify one (15 minutes). */
|
|
22
|
-
const DEFAULT_NOTIFY_INTERVAL_MS = 15 * 60 * 1000;
|
|
23
|
-
/** Override: set via NEX_NOTIFY_INTERVAL_MINUTES env var (e.g. "1" for 1m). */
|
|
24
|
-
const NOTIFY_INTERVAL_OVERRIDE_MS = process.env.NEX_NOTIFY_INTERVAL_MINUTES
|
|
25
|
-
? Math.max(1, parseInt(process.env.NEX_NOTIFY_INTERVAL_MINUTES, 10)) * 60 * 1000
|
|
26
|
-
: 0;
|
|
27
|
-
/** Delay before the first checks after startup (10 seconds). */
|
|
28
|
-
const INITIAL_DELAY_MS = 10_000;
|
|
29
|
-
// ---------------------------------------------------------------------------
|
|
30
|
-
// Digest state (local — digest is client-initiated)
|
|
31
|
-
// ---------------------------------------------------------------------------
|
|
32
|
-
function loadDigestState() {
|
|
33
|
-
try {
|
|
34
|
-
if (existsSync(DIGEST_STATE_PATH)) {
|
|
35
|
-
const data = JSON.parse(readFileSync(DIGEST_STATE_PATH, "utf-8"));
|
|
36
|
-
return { lastDigestAt: data.lastDigestAt ?? 0 };
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
catch {
|
|
40
|
-
// Corrupted or unreadable — start fresh
|
|
41
|
-
}
|
|
42
|
-
return { lastDigestAt: 0 };
|
|
43
|
-
}
|
|
44
|
-
function saveDigestState(state) {
|
|
45
|
-
try {
|
|
46
|
-
if (!existsSync(STATE_DIR))
|
|
47
|
-
mkdirSync(STATE_DIR, { recursive: true });
|
|
48
|
-
writeFileSync(DIGEST_STATE_PATH, JSON.stringify(state));
|
|
49
|
-
}
|
|
50
|
-
catch {
|
|
51
|
-
// Best-effort
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
// ---------------------------------------------------------------------------
|
|
55
|
-
// Push helper
|
|
56
|
-
// ---------------------------------------------------------------------------
|
|
57
|
-
async function pushChannelEvent(server, content, meta = {}) {
|
|
58
|
-
try {
|
|
59
|
-
await server.notification({
|
|
60
|
-
method: "notifications/claude/channel",
|
|
61
|
-
params: { content, meta },
|
|
62
|
-
});
|
|
63
|
-
console.error(`[nex-channel] pushed ${meta.type || "event"} (${content.length} chars)`);
|
|
64
|
-
}
|
|
65
|
-
catch (err) {
|
|
66
|
-
console.error("[nex-channel] push failed:", err.message);
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
// ---------------------------------------------------------------------------
|
|
70
|
-
// Fetch preferences from API
|
|
71
|
-
// ---------------------------------------------------------------------------
|
|
72
|
-
async function fetchPreferences(client) {
|
|
73
|
-
try {
|
|
74
|
-
return (await client.get("/v1/notifications/preferences"));
|
|
75
|
-
}
|
|
76
|
-
catch (err) {
|
|
77
|
-
console.error("[nex-channel] failed to fetch preferences:", err.message);
|
|
78
|
-
return {};
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
// ---------------------------------------------------------------------------
|
|
82
|
-
// Digest logic (client-initiated, local state)
|
|
83
|
-
// ---------------------------------------------------------------------------
|
|
84
|
-
async function checkDigest(server, client, state) {
|
|
85
|
-
const now = Date.now();
|
|
86
|
-
if (now - state.lastDigestAt < DIGEST_COOLDOWN_MS)
|
|
87
|
-
return;
|
|
88
|
-
try {
|
|
89
|
-
const result = (await client.post("/v1/context/ask", {
|
|
90
|
-
query: "Provide a comprehensive daily digest: summarize all key context " +
|
|
91
|
-
"collected in the last 24 hours, including important updates, new " +
|
|
92
|
-
"relationships, deal changes, upcoming events, and any actionable " +
|
|
93
|
-
"items. Be specific with names, dates, and numbers.",
|
|
94
|
-
}));
|
|
95
|
-
if (result.answer && result.answer.trim().length > 0) {
|
|
96
|
-
await pushChannelEvent(server, result.answer, {
|
|
97
|
-
type: "daily_digest",
|
|
98
|
-
period: "24h",
|
|
99
|
-
});
|
|
100
|
-
state.lastDigestAt = now;
|
|
101
|
-
saveDigestState(state);
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
catch (err) {
|
|
105
|
-
console.error("[nex-channel] digest check failed:", err);
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
// ---------------------------------------------------------------------------
|
|
109
|
-
// Proactive notification logic (polls /v1/notifications/feed)
|
|
110
|
-
// ---------------------------------------------------------------------------
|
|
111
|
-
/** Track the last seen sent_at so we only fetch new items. */
|
|
112
|
-
let lastFeedCheckAt;
|
|
113
|
-
async function checkNotifications(server, client) {
|
|
114
|
-
try {
|
|
115
|
-
const params = new URLSearchParams({ limit: "10" });
|
|
116
|
-
if (lastFeedCheckAt)
|
|
117
|
-
params.set("since", lastFeedCheckAt);
|
|
118
|
-
const result = (await client.get(`/v1/notifications/feed?${params.toString()}`));
|
|
119
|
-
const items = result.items ?? [];
|
|
120
|
-
if (items.length === 0)
|
|
121
|
-
return;
|
|
122
|
-
// Update cursor to the most recent sent_at
|
|
123
|
-
for (const item of items) {
|
|
124
|
-
if (item.sent_at && (!lastFeedCheckAt || item.sent_at > lastFeedCheckAt)) {
|
|
125
|
-
lastFeedCheckAt = item.sent_at;
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
// Format feed items into a readable summary
|
|
129
|
-
const lines = [];
|
|
130
|
-
for (const item of items) {
|
|
131
|
-
if (item.content?.important_items) {
|
|
132
|
-
for (const ci of item.content.important_items) {
|
|
133
|
-
lines.push(`- [important] ${ci.title}${ci.context ? ` — ${ci.context}` : ""}`);
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
if (item.content?.entity_changes) {
|
|
137
|
-
for (const ci of item.content.entity_changes) {
|
|
138
|
-
lines.push(`- [change] ${ci.title}${ci.context ? ` — ${ci.context}` : ""}`);
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
if (lines.length === 0)
|
|
143
|
-
return;
|
|
144
|
-
await pushChannelEvent(server, lines.join("\n"), {
|
|
145
|
-
type: "proactive_notification",
|
|
146
|
-
count: String(items.length),
|
|
147
|
-
});
|
|
148
|
-
}
|
|
149
|
-
catch (err) {
|
|
150
|
-
console.error("[nex-channel] notification check failed:", err);
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
// ---------------------------------------------------------------------------
|
|
154
|
-
// Scheduling with setTimeout chains (allows dynamic interval)
|
|
155
|
-
// ---------------------------------------------------------------------------
|
|
156
|
-
function scheduleDigestLoop(server, client, state) {
|
|
157
|
-
const run = async () => {
|
|
158
|
-
await checkDigest(server, client, state);
|
|
159
|
-
setTimeout(run, DIGEST_CHECK_INTERVAL_MS);
|
|
160
|
-
};
|
|
161
|
-
setTimeout(run, INITIAL_DELAY_MS);
|
|
162
|
-
}
|
|
163
|
-
function scheduleNotificationLoop(server, client, intervalMs) {
|
|
164
|
-
const run = async () => {
|
|
165
|
-
await checkNotifications(server, client);
|
|
166
|
-
// Re-fetch preferences each cycle to pick up frequency changes
|
|
167
|
-
const prefs = await fetchPreferences(client);
|
|
168
|
-
const nextInterval = NOTIFY_INTERVAL_OVERRIDE_MS ||
|
|
169
|
-
(prefs.frequency_minutes ?? intervalMs / 60_000) * 60_000;
|
|
170
|
-
setTimeout(run, nextInterval);
|
|
171
|
-
};
|
|
172
|
-
setTimeout(run, INITIAL_DELAY_MS + 5_000); // stagger slightly after digest
|
|
173
|
-
}
|
|
174
|
-
// ---------------------------------------------------------------------------
|
|
175
|
-
// Entry point
|
|
176
|
-
// ---------------------------------------------------------------------------
|
|
177
|
-
/**
|
|
178
|
-
* Start the Nex notification channel. Call this after the MCP server
|
|
179
|
-
* has connected to its transport.
|
|
180
|
-
*
|
|
181
|
-
* Fetches notification preferences from the API to determine polling
|
|
182
|
-
* frequency. Digest state is kept locally (client-initiated).
|
|
183
|
-
*/
|
|
184
|
-
export async function startChannel(server, client) {
|
|
185
|
-
if (!client.isAuthenticated)
|
|
186
|
-
return;
|
|
187
|
-
// Fetch initial preferences
|
|
188
|
-
const prefs = await fetchPreferences(client);
|
|
189
|
-
const intervalMs = NOTIFY_INTERVAL_OVERRIDE_MS ||
|
|
190
|
-
(prefs.frequency_minutes ?? DEFAULT_NOTIFY_INTERVAL_MS / 60_000) * 60_000;
|
|
191
|
-
// Digest uses local state (client-initiated)
|
|
192
|
-
const digestState = loadDigestState();
|
|
193
|
-
scheduleDigestLoop(server, client, digestState);
|
|
194
|
-
// Notifications use API-backed state and server-controlled frequency
|
|
195
|
-
scheduleNotificationLoop(server, client, intervalMs);
|
|
196
|
-
console.error(`[nex-channel] started (digest: 24h, notifications: ${intervalMs / 60_000}m)`);
|
|
197
|
-
}
|
|
198
|
-
//# sourceMappingURL=channel.js.map
|
package/dist/mcp/channel.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"channel.js","sourceRoot":"","sources":["../../src/mcp/channel.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp/client.d.ts
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
export declare class NexApiError extends Error {
|
|
2
|
-
status: number;
|
|
3
|
-
statusText: string;
|
|
4
|
-
body: unknown;
|
|
5
|
-
constructor(status: number, statusText: string, body: unknown);
|
|
6
|
-
}
|
|
7
|
-
export declare class NexApiClient {
|
|
8
|
-
private apiKey;
|
|
9
|
-
constructor(apiKey?: string);
|
|
10
|
-
get isAuthenticated(): boolean;
|
|
11
|
-
setApiKey(key: string): void;
|
|
12
|
-
private requireAuth;
|
|
13
|
-
private request;
|
|
14
|
-
register(email: string, name?: string, companyName?: string, source?: string): Promise<unknown>;
|
|
15
|
-
get(path: string): Promise<unknown>;
|
|
16
|
-
post(path: string, body?: unknown): Promise<unknown>;
|
|
17
|
-
put(path: string, body?: unknown): Promise<unknown>;
|
|
18
|
-
patch(path: string, body?: unknown): Promise<unknown>;
|
|
19
|
-
delete(path: string): Promise<unknown>;
|
|
20
|
-
}
|
package/dist/mcp/client.js
DELETED
|
@@ -1,131 +0,0 @@
|
|
|
1
|
-
import { loadConfig } from "./config.js";
|
|
2
|
-
function getBaseUrl() {
|
|
3
|
-
const config = loadConfig();
|
|
4
|
-
const base = process.env.NEX_API_BASE_URL || config.base_url || config.dev_url || "https://app.nex.ai";
|
|
5
|
-
return `${base.replace(/\/+$/, "")}/api/developers`;
|
|
6
|
-
}
|
|
7
|
-
function getRegisterUrl() {
|
|
8
|
-
const config = loadConfig();
|
|
9
|
-
const base = process.env.NEX_API_BASE_URL || config.base_url || config.dev_url || "https://app.nex.ai";
|
|
10
|
-
return `${base.replace(/\/+$/, "")}/api/v1/agents/register`;
|
|
11
|
-
}
|
|
12
|
-
export class NexApiError extends Error {
|
|
13
|
-
status;
|
|
14
|
-
statusText;
|
|
15
|
-
body;
|
|
16
|
-
constructor(status, statusText, body) {
|
|
17
|
-
super(`Nex API error ${status}: ${statusText}`);
|
|
18
|
-
this.status = status;
|
|
19
|
-
this.statusText = statusText;
|
|
20
|
-
this.body = body;
|
|
21
|
-
this.name = "NexApiError";
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
export class NexApiClient {
|
|
25
|
-
apiKey;
|
|
26
|
-
constructor(apiKey) {
|
|
27
|
-
this.apiKey = apiKey;
|
|
28
|
-
}
|
|
29
|
-
get isAuthenticated() {
|
|
30
|
-
return this.apiKey !== undefined && this.apiKey.length > 0;
|
|
31
|
-
}
|
|
32
|
-
setApiKey(key) {
|
|
33
|
-
this.apiKey = key;
|
|
34
|
-
}
|
|
35
|
-
requireAuth() {
|
|
36
|
-
if (!this.isAuthenticated) {
|
|
37
|
-
throw new NexApiError(401, "Not registered", {
|
|
38
|
-
message: "No API key configured. Call the 'register' tool first with your email to get an API key.",
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
async request(method, path, body) {
|
|
43
|
-
this.requireAuth();
|
|
44
|
-
const url = `${getBaseUrl()}${path}`;
|
|
45
|
-
const headers = {
|
|
46
|
-
Authorization: `Bearer ${this.apiKey}`,
|
|
47
|
-
"X-Nex-Source": "mcp",
|
|
48
|
-
};
|
|
49
|
-
if (body !== undefined) {
|
|
50
|
-
headers["Content-Type"] = "application/json";
|
|
51
|
-
}
|
|
52
|
-
const res = await fetch(url, {
|
|
53
|
-
method,
|
|
54
|
-
headers,
|
|
55
|
-
body: body !== undefined ? JSON.stringify(body) : undefined,
|
|
56
|
-
signal: AbortSignal.timeout(120_000),
|
|
57
|
-
});
|
|
58
|
-
if (res.status === 401 || res.status === 403) {
|
|
59
|
-
throw new NexApiError(res.status, res.statusText, {
|
|
60
|
-
message: "API key expired or invalid. Run 'nex register --email <email>' to get a new key.",
|
|
61
|
-
});
|
|
62
|
-
}
|
|
63
|
-
if (!res.ok) {
|
|
64
|
-
let errorBody;
|
|
65
|
-
try {
|
|
66
|
-
errorBody = await res.json();
|
|
67
|
-
}
|
|
68
|
-
catch {
|
|
69
|
-
errorBody = await res.text();
|
|
70
|
-
}
|
|
71
|
-
throw new NexApiError(res.status, res.statusText, errorBody);
|
|
72
|
-
}
|
|
73
|
-
const text = await res.text();
|
|
74
|
-
if (!text)
|
|
75
|
-
return {};
|
|
76
|
-
try {
|
|
77
|
-
return JSON.parse(text);
|
|
78
|
-
}
|
|
79
|
-
catch {
|
|
80
|
-
return { message: text };
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
async register(email, name, companyName, source) {
|
|
84
|
-
const body = {
|
|
85
|
-
email,
|
|
86
|
-
source: source ?? "mcp",
|
|
87
|
-
};
|
|
88
|
-
if (name !== undefined)
|
|
89
|
-
body.name = name;
|
|
90
|
-
if (companyName !== undefined)
|
|
91
|
-
body.company_name = companyName;
|
|
92
|
-
const res = await fetch(getRegisterUrl(), {
|
|
93
|
-
method: "POST",
|
|
94
|
-
headers: { "Content-Type": "application/json" },
|
|
95
|
-
body: JSON.stringify(body),
|
|
96
|
-
signal: AbortSignal.timeout(120_000),
|
|
97
|
-
});
|
|
98
|
-
if (!res.ok) {
|
|
99
|
-
let errorBody;
|
|
100
|
-
try {
|
|
101
|
-
errorBody = await res.json();
|
|
102
|
-
}
|
|
103
|
-
catch {
|
|
104
|
-
errorBody = await res.text();
|
|
105
|
-
}
|
|
106
|
-
throw new NexApiError(res.status, res.statusText, errorBody);
|
|
107
|
-
}
|
|
108
|
-
const data = await res.json();
|
|
109
|
-
const apiKey = data.api_key;
|
|
110
|
-
if (typeof apiKey === "string" && apiKey.length > 0) {
|
|
111
|
-
this.apiKey = apiKey;
|
|
112
|
-
}
|
|
113
|
-
return data;
|
|
114
|
-
}
|
|
115
|
-
async get(path) {
|
|
116
|
-
return this.request("GET", path);
|
|
117
|
-
}
|
|
118
|
-
async post(path, body) {
|
|
119
|
-
return this.request("POST", path, body);
|
|
120
|
-
}
|
|
121
|
-
async put(path, body) {
|
|
122
|
-
return this.request("PUT", path, body);
|
|
123
|
-
}
|
|
124
|
-
async patch(path, body) {
|
|
125
|
-
return this.request("PATCH", path, body);
|
|
126
|
-
}
|
|
127
|
-
async delete(path) {
|
|
128
|
-
return this.request("DELETE", path);
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
//# sourceMappingURL=client.js.map
|
package/dist/mcp/client.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/mcp/client.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp/config.d.ts
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
declare const CONFIG_PATH: string;
|
|
2
|
-
interface NexMcpConfig {
|
|
3
|
-
api_key?: string;
|
|
4
|
-
base_url?: string;
|
|
5
|
-
dev_url?: string;
|
|
6
|
-
workspace_id?: string;
|
|
7
|
-
workspace_slug?: string;
|
|
8
|
-
[key: string]: unknown;
|
|
9
|
-
}
|
|
10
|
-
export declare function loadConfig(): NexMcpConfig;
|
|
11
|
-
export declare function saveConfig(config: NexMcpConfig): void;
|
|
12
|
-
interface WorkspaceCredentials {
|
|
13
|
-
api_key?: string;
|
|
14
|
-
[key: string]: unknown;
|
|
15
|
-
}
|
|
16
|
-
export declare function loadWorkspaceCredentials(): WorkspaceCredentials;
|
|
17
|
-
export declare function loadApiKey(): string | undefined;
|
|
18
|
-
export declare function persistRegistration(data: Record<string, unknown>): void;
|
|
19
|
-
export { CONFIG_PATH };
|
package/dist/mcp/config.js
DELETED
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import { readFileSync, writeFileSync, mkdirSync } from "node:fs";
|
|
2
|
-
import { homedir } from "node:os";
|
|
3
|
-
import { join, dirname } from "node:path";
|
|
4
|
-
import { workspaceDataDir } from "./workspace-data-dir.js";
|
|
5
|
-
const CONFIG_PATH = join(homedir(), ".nex", "config.json");
|
|
6
|
-
export function loadConfig() {
|
|
7
|
-
try {
|
|
8
|
-
const raw = readFileSync(CONFIG_PATH, "utf-8");
|
|
9
|
-
return JSON.parse(raw);
|
|
10
|
-
}
|
|
11
|
-
catch {
|
|
12
|
-
return {};
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
export function saveConfig(config) {
|
|
16
|
-
mkdirSync(dirname(CONFIG_PATH), { recursive: true });
|
|
17
|
-
writeFileSync(CONFIG_PATH, JSON.stringify(config, null, 2) + "\n", "utf-8");
|
|
18
|
-
}
|
|
19
|
-
export function loadWorkspaceCredentials() {
|
|
20
|
-
try {
|
|
21
|
-
const credPath = join(workspaceDataDir(), "credentials.json");
|
|
22
|
-
const raw = readFileSync(credPath, "utf-8");
|
|
23
|
-
return JSON.parse(raw);
|
|
24
|
-
}
|
|
25
|
-
catch {
|
|
26
|
-
return {};
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
export function loadApiKey() {
|
|
30
|
-
// NEX_API_KEY env → workspace credentials → legacy config → undefined
|
|
31
|
-
return (process.env.NEX_API_KEY ||
|
|
32
|
-
loadWorkspaceCredentials().api_key ||
|
|
33
|
-
loadConfig().api_key ||
|
|
34
|
-
undefined);
|
|
35
|
-
}
|
|
36
|
-
export function persistRegistration(data) {
|
|
37
|
-
const existing = loadConfig();
|
|
38
|
-
if (typeof data.api_key === "string")
|
|
39
|
-
existing.api_key = data.api_key;
|
|
40
|
-
if (typeof data.workspace_id === "string" || typeof data.workspace_id === "number") {
|
|
41
|
-
existing.workspace_id = String(data.workspace_id);
|
|
42
|
-
}
|
|
43
|
-
if (typeof data.workspace_slug === "string")
|
|
44
|
-
existing.workspace_slug = data.workspace_slug;
|
|
45
|
-
saveConfig(existing);
|
|
46
|
-
}
|
|
47
|
-
export { CONFIG_PATH };
|
|
48
|
-
//# sourceMappingURL=config.js.map
|
package/dist/mcp/config.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/mcp/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;AAW3D,MAAM,UAAU,UAAU;IACxB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAiB,CAAC;IACzC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,MAAoB;IAC7C,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACrD,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;AAC9E,CAAC;AAOD,MAAM,UAAU,wBAAwB;IACtC,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,EAAE,EAAE,kBAAkB,CAAC,CAAC;QAC9D,MAAM,GAAG,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAyB,CAAC;IACjD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,sEAAsE;IACtE,OAAO,CACL,OAAO,CAAC,GAAG,CAAC,WAAW;QACvB,wBAAwB,EAAE,CAAC,OAAO;QAClC,UAAU,EAAE,CAAC,OAAO;QACpB,SAAS,CACV,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAA6B;IAC/D,MAAM,QAAQ,GAAG,UAAU,EAAE,CAAC;IAC9B,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ;QAAE,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;IACtE,IAAI,OAAO,IAAI,CAAC,YAAY,KAAK,QAAQ,IAAI,OAAO,IAAI,CAAC,YAAY,KAAK,QAAQ,EAAE,CAAC;QACnF,QAAQ,CAAC,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACpD,CAAC;IACD,IAAI,OAAO,IAAI,CAAC,cAAc,KAAK,QAAQ;QAAE,QAAQ,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;IAC3F,UAAU,CAAC,QAAQ,CAAC,CAAC;AACvB,CAAC;AAED,OAAO,EAAE,WAAW,EAAE,CAAC"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { NexApiClient } from "./client.js";
|
|
2
|
-
import type { RateLimiter } from "./rate-limiter.js";
|
|
3
|
-
export interface ContextFilesResult {
|
|
4
|
-
ingested: number;
|
|
5
|
-
skipped: number;
|
|
6
|
-
errors: number;
|
|
7
|
-
files: string[];
|
|
8
|
-
}
|
|
9
|
-
export declare function ingestContextFiles(client: NexApiClient, rateLimiter: RateLimiter, cwd: string): Promise<ContextFilesResult>;
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Ingests Claude Code context files (CLAUDE.md + memory files) into Nex.
|
|
3
|
-
*
|
|
4
|
-
* Reads from both global and project-level locations:
|
|
5
|
-
* - ~/.claude/CLAUDE.md (global instructions)
|
|
6
|
-
* - {cwd}/CLAUDE.md (project instructions)
|
|
7
|
-
* - ~/.claude/projects/{project-key}/memory/*.md (memory files)
|
|
8
|
-
*
|
|
9
|
-
* Uses the file manifest for change detection — unchanged files are skipped.
|
|
10
|
-
*/
|
|
11
|
-
import { existsSync, readdirSync, statSync, readFileSync } from "node:fs";
|
|
12
|
-
import { join, extname, basename } from "node:path";
|
|
13
|
-
import { homedir } from "node:os";
|
|
14
|
-
import { readManifest, writeManifest, isChanged, markIngested } from "./file-manifest.js";
|
|
15
|
-
const CLAUDE_DIR = join(homedir(), ".claude");
|
|
16
|
-
const INGEST_TIMEOUT_MS = 10_000;
|
|
17
|
-
const MAX_FILE_SIZE = 100_000;
|
|
18
|
-
function projectKey(cwd) {
|
|
19
|
-
return cwd.replace(/\//g, "-");
|
|
20
|
-
}
|
|
21
|
-
function collectContextFiles(cwd) {
|
|
22
|
-
const files = [];
|
|
23
|
-
const key = projectKey(cwd);
|
|
24
|
-
const globalClaude = join(CLAUDE_DIR, "CLAUDE.md");
|
|
25
|
-
if (existsSync(globalClaude)) {
|
|
26
|
-
files.push({ path: globalClaude, contextTag: "claude-md:global" });
|
|
27
|
-
}
|
|
28
|
-
const projectClaude = join(cwd, "CLAUDE.md");
|
|
29
|
-
if (existsSync(projectClaude)) {
|
|
30
|
-
files.push({ path: projectClaude, contextTag: "claude-md:project" });
|
|
31
|
-
}
|
|
32
|
-
const memoryDir = join(CLAUDE_DIR, "projects", key, "memory");
|
|
33
|
-
if (existsSync(memoryDir)) {
|
|
34
|
-
try {
|
|
35
|
-
const entries = readdirSync(memoryDir, { withFileTypes: true });
|
|
36
|
-
for (const entry of entries) {
|
|
37
|
-
if (!entry.isFile())
|
|
38
|
-
continue;
|
|
39
|
-
if (extname(entry.name).toLowerCase() !== ".md")
|
|
40
|
-
continue;
|
|
41
|
-
const fullPath = join(memoryDir, entry.name);
|
|
42
|
-
const name = basename(entry.name, ".md");
|
|
43
|
-
files.push({ path: fullPath, contextTag: `claude-memory:${name}` });
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
catch {
|
|
47
|
-
// memoryDir unreadable — skip
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
return files;
|
|
51
|
-
}
|
|
52
|
-
export async function ingestContextFiles(client, rateLimiter, cwd) {
|
|
53
|
-
const result = { ingested: 0, skipped: 0, errors: 0, files: [] };
|
|
54
|
-
const manifest = readManifest();
|
|
55
|
-
const candidates = collectContextFiles(cwd);
|
|
56
|
-
let dirty = false;
|
|
57
|
-
for (const { path, contextTag } of candidates) {
|
|
58
|
-
try {
|
|
59
|
-
const stat = statSync(path);
|
|
60
|
-
if (!isChanged(path, stat, manifest)) {
|
|
61
|
-
result.skipped++;
|
|
62
|
-
continue;
|
|
63
|
-
}
|
|
64
|
-
if (!rateLimiter.canProceed()) {
|
|
65
|
-
process.stderr.write("[nex-context-files] Rate limited — stopping context file ingest\n");
|
|
66
|
-
result.skipped += candidates.length - result.ingested - result.skipped - result.errors;
|
|
67
|
-
break;
|
|
68
|
-
}
|
|
69
|
-
let content = readFileSync(path, "utf-8");
|
|
70
|
-
if (content.length > MAX_FILE_SIZE) {
|
|
71
|
-
content = content.slice(0, MAX_FILE_SIZE) + "\n[...truncated]";
|
|
72
|
-
}
|
|
73
|
-
await client.post("/v1/context/text", { content, context: contextTag });
|
|
74
|
-
rateLimiter.recordRequest();
|
|
75
|
-
markIngested(path, stat, contextTag, manifest);
|
|
76
|
-
result.ingested++;
|
|
77
|
-
result.files.push(contextTag);
|
|
78
|
-
dirty = true;
|
|
79
|
-
}
|
|
80
|
-
catch (err) {
|
|
81
|
-
process.stderr.write(`[nex-context-files] Failed to ingest ${contextTag}: ${err instanceof Error ? err.message : String(err)}\n`);
|
|
82
|
-
result.errors++;
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
if (dirty) {
|
|
86
|
-
writeManifest(manifest);
|
|
87
|
-
}
|
|
88
|
-
return result;
|
|
89
|
-
}
|
|
90
|
-
//# sourceMappingURL=context-files.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"context-files.js","sourceRoot":"","sources":["../../src/mcp/context-files.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Persistent file manifest — tracks which files have been ingested
|
|
3
|
-
* using mtime + size as change detection.
|
|
4
|
-
*
|
|
5
|
-
* Stored at <workspaceDataDir>/file-scan-manifest.json.
|
|
6
|
-
*/
|
|
7
|
-
import { type Stats } from "node:fs";
|
|
8
|
-
export interface FileManifestEntry {
|
|
9
|
-
mtime: number;
|
|
10
|
-
size: number;
|
|
11
|
-
ingestedAt: number;
|
|
12
|
-
context: string;
|
|
13
|
-
}
|
|
14
|
-
export interface FileManifest {
|
|
15
|
-
version: 1;
|
|
16
|
-
lastScanAt?: number;
|
|
17
|
-
files: Record<string, FileManifestEntry>;
|
|
18
|
-
}
|
|
19
|
-
export declare function readManifest(): FileManifest;
|
|
20
|
-
export declare function writeManifest(manifest: FileManifest): void;
|
|
21
|
-
export declare function isChanged(path: string, stat: Stats, manifest: FileManifest): boolean;
|
|
22
|
-
export declare function markIngested(path: string, stat: Stats, context: string, manifest: FileManifest): void;
|
|
23
|
-
/**
|
|
24
|
-
* Record that a full scan completed at this moment.
|
|
25
|
-
*/
|
|
26
|
-
export declare function markScanned(manifest: FileManifest): void;
|
|
27
|
-
export declare function isScanFresh(manifest: FileManifest, windowMs?: number): boolean;
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Persistent file manifest — tracks which files have been ingested
|
|
3
|
-
* using mtime + size as change detection.
|
|
4
|
-
*
|
|
5
|
-
* Stored at <workspaceDataDir>/file-scan-manifest.json.
|
|
6
|
-
*/
|
|
7
|
-
import { readFileSync, writeFileSync, mkdirSync } from "node:fs";
|
|
8
|
-
import { join } from "node:path";
|
|
9
|
-
import { workspaceDataDir } from "./workspace-data-dir.js";
|
|
10
|
-
function dataDir() {
|
|
11
|
-
return workspaceDataDir();
|
|
12
|
-
}
|
|
13
|
-
function manifestPath() {
|
|
14
|
-
return join(dataDir(), "file-scan-manifest.json");
|
|
15
|
-
}
|
|
16
|
-
export function readManifest() {
|
|
17
|
-
try {
|
|
18
|
-
const raw = readFileSync(manifestPath(), "utf-8");
|
|
19
|
-
const data = JSON.parse(raw);
|
|
20
|
-
if (data && data.version === 1 && data.files) {
|
|
21
|
-
return data;
|
|
22
|
-
}
|
|
23
|
-
return { version: 1, files: {} };
|
|
24
|
-
}
|
|
25
|
-
catch {
|
|
26
|
-
return { version: 1, files: {} };
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
export function writeManifest(manifest) {
|
|
30
|
-
try {
|
|
31
|
-
mkdirSync(dataDir(), { recursive: true });
|
|
32
|
-
writeFileSync(manifestPath(), JSON.stringify(manifest, null, 2), "utf-8");
|
|
33
|
-
}
|
|
34
|
-
catch {
|
|
35
|
-
// Best-effort — if we can't write, next scan re-ingests
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
export function isChanged(path, stat, manifest) {
|
|
39
|
-
const entry = manifest.files[path];
|
|
40
|
-
if (!entry)
|
|
41
|
-
return true;
|
|
42
|
-
return entry.mtime !== stat.mtimeMs || entry.size !== stat.size;
|
|
43
|
-
}
|
|
44
|
-
export function markIngested(path, stat, context, manifest) {
|
|
45
|
-
manifest.files[path] = {
|
|
46
|
-
mtime: stat.mtimeMs,
|
|
47
|
-
size: stat.size,
|
|
48
|
-
ingestedAt: Date.now(),
|
|
49
|
-
context,
|
|
50
|
-
};
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* Record that a full scan completed at this moment.
|
|
54
|
-
*/
|
|
55
|
-
export function markScanned(manifest) {
|
|
56
|
-
manifest.lastScanAt = Date.now();
|
|
57
|
-
}
|
|
58
|
-
/**
|
|
59
|
-
* Check if a scan completed recently (within the given window).
|
|
60
|
-
* Default window: 1 hour.
|
|
61
|
-
*/
|
|
62
|
-
const DEFAULT_SCAN_FRESHNESS_MS = 60 * 60 * 1000; // 1 hour
|
|
63
|
-
export function isScanFresh(manifest, windowMs = DEFAULT_SCAN_FRESHNESS_MS) {
|
|
64
|
-
if (!manifest.lastScanAt)
|
|
65
|
-
return false;
|
|
66
|
-
return Date.now() - manifest.lastScanAt < windowMs;
|
|
67
|
-
}
|
|
68
|
-
//# sourceMappingURL=file-manifest.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"file-manifest.js","sourceRoot":"","sources":["../../src/mcp/file-manifest.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAc,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D,SAAS,OAAO;IACd,OAAO,gBAAgB,EAAE,CAAC;AAC5B,CAAC;AAED,SAAS,YAAY;IACnB,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,yBAAyB,CAAC,CAAC;AACpD,CAAC;AAeD,MAAM,UAAU,YAAY;IAC1B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,YAAY,EAAE,EAAE,OAAO,CAAC,CAAC;QAClD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC7C,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IACnC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,QAAsB;IAClD,IAAI,CAAC;QACH,SAAS,CAAC,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1C,aAAa,CAAC,YAAY,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAC5E,CAAC;IAAC,MAAM,CAAC;QACP,wDAAwD;IAC1D,CAAC;AACH,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,IAAY,EAAE,IAAW,EAAE,QAAsB;IACzE,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,OAAO,KAAK,CAAC,KAAK,KAAK,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,IAAW,EAAE,OAAe,EAAE,QAAsB;IAC7F,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG;QACrB,KAAK,EAAE,IAAI,CAAC,OAAO;QACnB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE;QACtB,OAAO;KACR,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,QAAsB;IAChD,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AACnC,CAAC;AAED;;;GAGG;AACH,MAAM,yBAAyB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,SAAS;AAE3D,MAAM,UAAU,WAAW,CAAC,QAAsB,EAAE,QAAQ,GAAG,yBAAyB;IACtF,IAAI,CAAC,QAAQ,CAAC,UAAU;QAAE,OAAO,KAAK,CAAC;IACvC,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,UAAU,GAAG,QAAQ,CAAC;AACrD,CAAC"}
|