@nex-ai/nex 0.1.37 → 0.1.38

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.
Files changed (71) hide show
  1. package/dist/cli.js +0 -2
  2. package/dist/cli.js.map +1 -1
  3. package/dist/index.js +12 -12
  4. package/dist/index.js.map +1 -1
  5. package/dist/lib/config.d.ts +2 -2
  6. package/dist/lib/config.js +4 -33
  7. package/dist/lib/config.js.map +1 -1
  8. package/dist/mcp/config.d.ts +0 -5
  9. package/dist/mcp/config.js +1 -16
  10. package/dist/mcp/config.js.map +1 -1
  11. package/dist/mcp/file-manifest.d.ts +1 -1
  12. package/dist/mcp/file-manifest.js +7 -11
  13. package/dist/mcp/file-manifest.js.map +1 -1
  14. package/dist/mcp/rate-limiter.js +2 -2
  15. package/dist/mcp/rate-limiter.js.map +1 -1
  16. package/dist/mcp/session-store.js +2 -2
  17. package/dist/mcp/session-store.js.map +1 -1
  18. package/dist/plugin/auto-register.d.ts +1 -1
  19. package/dist/plugin/auto-register.js +6 -34
  20. package/dist/plugin/auto-register.js.map +1 -1
  21. package/dist/plugin/config.d.ts +4 -11
  22. package/dist/plugin/config.js +5 -21
  23. package/dist/plugin/config.js.map +1 -1
  24. package/dist/plugin/file-manifest.js +6 -10
  25. package/dist/plugin/file-manifest.js.map +1 -1
  26. package/dist/plugin/rate-limiter.js +2 -2
  27. package/dist/plugin/rate-limiter.js.map +1 -1
  28. package/dist/plugin/recall-filter.js +6 -10
  29. package/dist/plugin/recall-filter.js.map +1 -1
  30. package/dist/plugin/session-store.js +3 -2
  31. package/dist/plugin/session-store.js.map +1 -1
  32. package/package.json +1 -1
  33. package/dist/commands/workspace.d.ts +0 -8
  34. package/dist/commands/workspace.js +0 -251
  35. package/dist/commands/workspace.js.map +0 -1
  36. package/dist/lib/workspace-registry.d.ts +0 -47
  37. package/dist/lib/workspace-registry.js +0 -240
  38. package/dist/lib/workspace-registry.js.map +0 -1
  39. package/dist/mcp/workspace-data-dir.d.ts +0 -2
  40. package/dist/mcp/workspace-data-dir.js +0 -28
  41. package/dist/mcp/workspace-data-dir.js.map +0 -1
  42. package/dist/plugin/adapters/cline-capture.d.ts +0 -7
  43. package/dist/plugin/adapters/cline-capture.js +0 -25
  44. package/dist/plugin/adapters/cline-capture.js.map +0 -1
  45. package/dist/plugin/adapters/cline-recall.d.ts +0 -7
  46. package/dist/plugin/adapters/cline-recall.js +0 -30
  47. package/dist/plugin/adapters/cline-recall.js.map +0 -1
  48. package/dist/plugin/adapters/cline-task-start.d.ts +0 -7
  49. package/dist/plugin/adapters/cline-task-start.js +0 -30
  50. package/dist/plugin/adapters/cline-task-start.js.map +0 -1
  51. package/dist/plugin/adapters/cursor-recall.d.ts +0 -7
  52. package/dist/plugin/adapters/cursor-recall.js +0 -31
  53. package/dist/plugin/adapters/cursor-recall.js.map +0 -1
  54. package/dist/plugin/adapters/cursor-session-start.d.ts +0 -7
  55. package/dist/plugin/adapters/cursor-session-start.js +0 -30
  56. package/dist/plugin/adapters/cursor-session-start.js.map +0 -1
  57. package/dist/plugin/adapters/cursor-stop.d.ts +0 -7
  58. package/dist/plugin/adapters/cursor-stop.js +0 -25
  59. package/dist/plugin/adapters/cursor-stop.js.map +0 -1
  60. package/dist/plugin/adapters/windsurf-capture.d.ts +0 -7
  61. package/dist/plugin/adapters/windsurf-capture.js +0 -25
  62. package/dist/plugin/adapters/windsurf-capture.js.map +0 -1
  63. package/dist/plugin/adapters/windsurf-recall.d.ts +0 -7
  64. package/dist/plugin/adapters/windsurf-recall.js +0 -31
  65. package/dist/plugin/adapters/windsurf-recall.js.map +0 -1
  66. package/dist/plugin/shared.d.ts +0 -39
  67. package/dist/plugin/shared.js +0 -380
  68. package/dist/plugin/shared.js.map +0 -1
  69. package/dist/plugin/workspace-data-dir.d.ts +0 -2
  70. package/dist/plugin/workspace-data-dir.js +0 -31
  71. package/dist/plugin/workspace-data-dir.js.map +0 -1
@@ -1,240 +0,0 @@
1
- /**
2
- * Workspace registry — manages multiple Nex workspaces on a single machine.
3
- *
4
- * Storage:
5
- * ~/.nex/config.json → registry (active_workspace + workspace list)
6
- * ~/.nex/workspaces/<slug>/ → per-workspace credentials + state
7
- *
8
- * All functions accept an optional `baseDir` for testing (defaults to ~/.nex).
9
- */
10
- import { existsSync, mkdirSync, readFileSync, writeFileSync, renameSync, rmSync, } from "node:fs";
11
- import { join } from "node:path";
12
- import { homedir } from "node:os";
13
- const DEFAULT_BASE_DIR = process.env.NEX_BASE_DIR || join(homedir(), ".nex");
14
- // --- State file names that get moved during migration ---
15
- const STATE_FILES = [
16
- "file-scan-manifest.json",
17
- "claude-sessions.json",
18
- "mcp-sessions.json",
19
- "cli-sessions.json",
20
- "recall-state.json",
21
- "rate-limiter.json",
22
- ];
23
- // --- Core functions ---
24
- export function loadRegistry(baseDir = DEFAULT_BASE_DIR) {
25
- const configPath = join(baseDir, "config.json");
26
- try {
27
- const raw = readFileSync(configPath, "utf-8");
28
- const data = JSON.parse(raw);
29
- if (data && data.active_workspace !== undefined && data.workspaces) {
30
- return data;
31
- }
32
- // Flat config detected — trigger migration
33
- if (data && data.api_key) {
34
- migrateIfNeeded(baseDir);
35
- return JSON.parse(readFileSync(configPath, "utf-8"));
36
- }
37
- return { active_workspace: "", workspaces: {} };
38
- }
39
- catch {
40
- return { active_workspace: "", workspaces: {} };
41
- }
42
- }
43
- export function saveRegistry(registry, baseDir = DEFAULT_BASE_DIR) {
44
- mkdirSync(baseDir, { recursive: true });
45
- writeFileSync(join(baseDir, "config.json"), JSON.stringify(registry, null, 2), "utf-8");
46
- }
47
- export function addWorkspace(slug, credentials, nickname, baseDir = DEFAULT_BASE_DIR) {
48
- const registry = loadRegistry(baseDir);
49
- const wsDir = join(baseDir, "workspaces", slug);
50
- mkdirSync(wsDir, { recursive: true });
51
- // Write credentials
52
- writeFileSync(join(wsDir, "credentials.json"), JSON.stringify(credentials, null, 2), "utf-8");
53
- // Update registry — preserve existing nickname if no new one provided
54
- const existing = registry.workspaces[slug];
55
- registry.workspaces[slug] = {
56
- nickname: nickname ?? existing?.nickname,
57
- added_at: existing?.added_at ?? Date.now(),
58
- };
59
- // Set as active if first workspace or no active set
60
- if (!registry.active_workspace || Object.keys(registry.workspaces).length === 1) {
61
- registry.active_workspace = slug;
62
- }
63
- saveRegistry(registry, baseDir);
64
- }
65
- export function removeWorkspace(slug, baseDir = DEFAULT_BASE_DIR) {
66
- const registry = loadRegistry(baseDir);
67
- delete registry.workspaces[slug];
68
- // Clean up active_workspace pointer
69
- if (registry.active_workspace === slug) {
70
- const remaining = Object.keys(registry.workspaces);
71
- registry.active_workspace = remaining[0] ?? "";
72
- }
73
- // Remove workspace directory
74
- const wsDir = join(baseDir, "workspaces", slug);
75
- rmSync(wsDir, { recursive: true, force: true });
76
- saveRegistry(registry, baseDir);
77
- }
78
- export function switchWorkspace(slug, baseDir = DEFAULT_BASE_DIR) {
79
- const registry = loadRegistry(baseDir);
80
- if (!registry.workspaces[slug]) {
81
- throw new Error(`Workspace "${slug}" not found`);
82
- }
83
- registry.active_workspace = slug;
84
- saveRegistry(registry, baseDir);
85
- return loadCredentials(slug, baseDir);
86
- }
87
- export function renameWorkspace(slug, nickname, baseDir = DEFAULT_BASE_DIR) {
88
- const registry = loadRegistry(baseDir);
89
- if (!registry.workspaces[slug]) {
90
- throw new Error(`Workspace "${slug}" not found`);
91
- }
92
- registry.workspaces[slug].nickname = nickname;
93
- saveRegistry(registry, baseDir);
94
- }
95
- export function getActiveCredentials(baseDir = DEFAULT_BASE_DIR) {
96
- const registry = loadRegistry(baseDir);
97
- if (!registry.active_workspace)
98
- return undefined;
99
- try {
100
- return loadCredentials(registry.active_workspace, baseDir);
101
- }
102
- catch {
103
- return undefined;
104
- }
105
- }
106
- export function listWorkspaces(baseDir = DEFAULT_BASE_DIR) {
107
- const registry = loadRegistry(baseDir);
108
- return Object.entries(registry.workspaces)
109
- .map(([slug, meta]) => {
110
- let email = "";
111
- try {
112
- const creds = loadCredentials(slug, baseDir);
113
- email = creds.email;
114
- }
115
- catch { /* missing credentials */ }
116
- return { slug, nickname: meta.nickname, added_at: meta.added_at, email };
117
- })
118
- .sort((a, b) => a.added_at - b.added_at);
119
- }
120
- /** Resolve the data directory for a workspace's state files. */
121
- let _cachedDataDir;
122
- export function workspaceDataDir(slug, baseDir = DEFAULT_BASE_DIR) {
123
- if (slug) {
124
- return join(baseDir, "workspaces", slug);
125
- }
126
- if (!_cachedDataDir) {
127
- const registry = loadRegistry(baseDir);
128
- if (registry.active_workspace) {
129
- _cachedDataDir = join(baseDir, "workspaces", registry.active_workspace);
130
- }
131
- else {
132
- // Fallback to base dir if no workspace (pre-registration)
133
- return baseDir;
134
- }
135
- }
136
- return _cachedDataDir;
137
- }
138
- /** Reset cached data dir (for testing or after workspace switch). */
139
- export function resetDataDirCache() {
140
- _cachedDataDir = undefined;
141
- }
142
- /**
143
- * Resolve a workspace slug from a slug-or-nickname input.
144
- * Resolution: exact slug → case-insensitive nickname → null.
145
- */
146
- export function resolveSlug(input, baseDir = DEFAULT_BASE_DIR) {
147
- const registry = loadRegistry(baseDir);
148
- if (registry.workspaces[input])
149
- return input;
150
- const lower = input.toLowerCase();
151
- for (const [slug, meta] of Object.entries(registry.workspaces)) {
152
- if (meta.nickname?.toLowerCase() === lower)
153
- return slug;
154
- }
155
- return null;
156
- }
157
- // --- Migration ---
158
- export function migrateIfNeeded(baseDir = DEFAULT_BASE_DIR, legacyMcpPath) {
159
- const configPath = join(baseDir, "config.json");
160
- let data = {};
161
- try {
162
- data = JSON.parse(readFileSync(configPath, "utf-8"));
163
- }
164
- catch {
165
- return; // No config file — nothing to migrate
166
- }
167
- // Already migrated
168
- if (data.active_workspace !== undefined)
169
- return;
170
- // No api_key — nothing to migrate
171
- if (!data.api_key)
172
- return;
173
- const slug = data.workspace_slug || "default";
174
- const wsDir = join(baseDir, "workspaces", slug);
175
- mkdirSync(wsDir, { recursive: true });
176
- // Write credentials
177
- const credentials = {
178
- api_key: data.api_key,
179
- email: data.email || "",
180
- workspace_id: String(data.workspace_id || ""),
181
- workspace_slug: slug,
182
- };
183
- writeFileSync(join(wsDir, "credentials.json"), JSON.stringify(credentials, null, 2), "utf-8");
184
- // Move state files
185
- for (const file of STATE_FILES) {
186
- const src = join(baseDir, file);
187
- const dest = join(wsDir, file);
188
- if (existsSync(src)) {
189
- try {
190
- renameSync(src, dest);
191
- }
192
- catch {
193
- // Cross-device move fallback
194
- writeFileSync(dest, readFileSync(src));
195
- rmSync(src);
196
- }
197
- }
198
- }
199
- // Build new config — preserve global settings, remove credential fields
200
- const { api_key, email, workspace_id, workspace_slug, ...globalSettings } = data;
201
- const newConfig = {
202
- ...globalSettings,
203
- active_workspace: slug,
204
- workspaces: {
205
- [slug]: { added_at: Date.now() },
206
- },
207
- };
208
- writeFileSync(configPath, JSON.stringify(newConfig, null, 2), "utf-8");
209
- // Migrate legacy MCP config if present
210
- const mcpPath = legacyMcpPath ?? join(homedir(), ".nex-mcp.json");
211
- try {
212
- const mcpData = JSON.parse(readFileSync(mcpPath, "utf-8"));
213
- if (mcpData.api_key && mcpData.workspace_slug && mcpData.workspace_slug !== slug) {
214
- // Different workspace — add it
215
- const mcpSlug = mcpData.workspace_slug;
216
- const mcpWsDir = join(baseDir, "workspaces", mcpSlug);
217
- mkdirSync(mcpWsDir, { recursive: true });
218
- const mcpCreds = {
219
- api_key: mcpData.api_key,
220
- email: mcpData.email || "",
221
- workspace_id: String(mcpData.workspace_id || ""),
222
- workspace_slug: mcpSlug,
223
- };
224
- writeFileSync(join(mcpWsDir, "credentials.json"), JSON.stringify(mcpCreds, null, 2), "utf-8");
225
- newConfig.workspaces[mcpSlug] = { added_at: Date.now() };
226
- writeFileSync(configPath, JSON.stringify(newConfig, null, 2), "utf-8");
227
- }
228
- // Backup legacy file
229
- renameSync(mcpPath, mcpPath + ".bak");
230
- }
231
- catch {
232
- // No MCP config or already backed up — fine
233
- }
234
- }
235
- // --- Helpers ---
236
- function loadCredentials(slug, baseDir) {
237
- const credPath = join(baseDir, "workspaces", slug, "credentials.json");
238
- return JSON.parse(readFileSync(credPath, "utf-8"));
239
- }
240
- //# sourceMappingURL=workspace-registry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"workspace-registry.js","sourceRoot":"","sources":["../../src/lib/workspace-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACL,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAClD,UAAU,EAAE,MAAM,GACnB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC,CAAC;AAuB7E,2DAA2D;AAE3D,MAAM,WAAW,GAAG;IAClB,yBAAyB;IACzB,sBAAsB;IACtB,mBAAmB;IACnB,mBAAmB;IACnB,mBAAmB;IACnB,mBAAmB;CACpB,CAAC;AAEF,yBAAyB;AAEzB,MAAM,UAAU,YAAY,CAAC,OAAO,GAAG,gBAAgB;IACrD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IAChD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAC9C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,IAAI,IAAI,IAAI,CAAC,gBAAgB,KAAK,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACnE,OAAO,IAAyB,CAAC;QACnC,CAAC;QACD,2CAA2C;QAC3C,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACzB,eAAe,CAAC,OAAO,CAAC,CAAC;YACzB,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAsB,CAAC;QAC5E,CAAC;QACD,OAAO,EAAE,gBAAgB,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;IAClD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,gBAAgB,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;IAClD,CAAC;AACH,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,QAA2B,EAAE,OAAO,GAAG,gBAAgB;IAClF,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACxC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AAC1F,CAAC;AAED,MAAM,UAAU,YAAY,CAC1B,IAAY,EACZ,WAAiC,EACjC,QAAiB,EACjB,OAAO,GAAG,gBAAgB;IAE1B,MAAM,QAAQ,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IACvC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;IAChD,SAAS,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEtC,oBAAoB;IACpB,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,kBAAkB,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAE9F,sEAAsE;IACtE,MAAM,QAAQ,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC3C,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG;QAC1B,QAAQ,EAAE,QAAQ,IAAI,QAAQ,EAAE,QAAQ;QACxC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,IAAI,IAAI,CAAC,GAAG,EAAE;KAC3C,CAAC;IAEF,oDAAoD;IACpD,IAAI,CAAC,QAAQ,CAAC,gBAAgB,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChF,QAAQ,CAAC,gBAAgB,GAAG,IAAI,CAAC;IACnC,CAAC;IAED,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAY,EAAE,OAAO,GAAG,gBAAgB;IACtE,MAAM,QAAQ,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IACvC,OAAO,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAEjC,oCAAoC;IACpC,IAAI,QAAQ,CAAC,gBAAgB,KAAK,IAAI,EAAE,CAAC;QACvC,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QACnD,QAAQ,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACjD,CAAC;IAED,6BAA6B;IAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;IAChD,MAAM,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAEhD,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAY,EAAE,OAAO,GAAG,gBAAgB;IACtE,MAAM,QAAQ,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IACvC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,cAAc,IAAI,aAAa,CAAC,CAAC;IACnD,CAAC;IACD,QAAQ,CAAC,gBAAgB,GAAG,IAAI,CAAC;IACjC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAChC,OAAO,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAY,EAAE,QAAgB,EAAE,OAAO,GAAG,gBAAgB;IACxF,MAAM,QAAQ,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IACvC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,cAAc,IAAI,aAAa,CAAC,CAAC;IACnD,CAAC;IACD,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC9C,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,OAAO,GAAG,gBAAgB;IAC7D,MAAM,QAAQ,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IACvC,IAAI,CAAC,QAAQ,CAAC,gBAAgB;QAAE,OAAO,SAAS,CAAC;IACjD,IAAI,CAAC;QACH,OAAO,eAAe,CAAC,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;IAC7D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,OAAO,GAAG,gBAAgB;IACvD,MAAM,QAAQ,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IACvC,OAAO,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC;SACvC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;QACpB,IAAI,KAAK,GAAG,EAAE,CAAC;QACf,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAC7C,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QACtB,CAAC;QAAC,MAAM,CAAC,CAAC,yBAAyB,CAAC,CAAC;QACrC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC;IAC3E,CAAC,CAAC;SACD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;AAC7C,CAAC;AAED,gEAAgE;AAChE,IAAI,cAAkC,CAAC;AAEvC,MAAM,UAAU,gBAAgB,CAAC,IAAa,EAAE,OAAO,GAAG,gBAAgB;IACxE,IAAI,IAAI,EAAE,CAAC;QACT,OAAO,IAAI,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;IAC3C,CAAC;IACD,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,MAAM,QAAQ,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;QACvC,IAAI,QAAQ,CAAC,gBAAgB,EAAE,CAAC;YAC9B,cAAc,GAAG,IAAI,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,CAAC,gBAAgB,CAAC,CAAC;QAC1E,CAAC;aAAM,CAAC;YACN,0DAA0D;YAC1D,OAAO,OAAO,CAAC;QACjB,CAAC;IACH,CAAC;IACD,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,iBAAiB;IAC/B,cAAc,GAAG,SAAS,CAAC;AAC7B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,KAAa,EAAE,OAAO,GAAG,gBAAgB;IACnE,MAAM,QAAQ,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IACvC,IAAI,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC7C,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IAClC,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/D,IAAI,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE,KAAK,KAAK;YAAE,OAAO,IAAI,CAAC;IAC1D,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,oBAAoB;AAEpB,MAAM,UAAU,eAAe,CAAC,OAAO,GAAG,gBAAgB,EAAE,aAAsB;IAChF,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IAEhD,IAAI,IAAI,GAA4B,EAAE,CAAC;IACvC,IAAI,CAAC;QACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;IACvD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,sCAAsC;IAChD,CAAC;IAED,mBAAmB;IACnB,IAAI,IAAI,CAAC,gBAAgB,KAAK,SAAS;QAAE,OAAO;IAEhD,kCAAkC;IAClC,IAAI,CAAC,IAAI,CAAC,OAAO;QAAE,OAAO;IAE1B,MAAM,IAAI,GAAI,IAAI,CAAC,cAAyB,IAAI,SAAS,CAAC;IAC1D,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;IAChD,SAAS,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEtC,oBAAoB;IACpB,MAAM,WAAW,GAAyB;QACxC,OAAO,EAAE,IAAI,CAAC,OAAiB;QAC/B,KAAK,EAAG,IAAI,CAAC,KAAgB,IAAI,EAAE;QACnC,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC;QAC7C,cAAc,EAAE,IAAI;KACrB,CAAC;IACF,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,kBAAkB,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAE9F,mBAAmB;IACnB,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAChC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC/B,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACpB,IAAI,CAAC;gBACH,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACxB,CAAC;YAAC,MAAM,CAAC;gBACP,6BAA6B;gBAC7B,aAAa,CAAC,IAAI,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;gBACvC,MAAM,CAAC,GAAG,CAAC,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;IAED,wEAAwE;IACxE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,GAAG,cAAc,EAAE,GAAG,IAAI,CAAC;IACjF,MAAM,SAAS,GAAsB;QACnC,GAAG,cAAc;QACjB,gBAAgB,EAAE,IAAI;QACtB,UAAU,EAAE;YACV,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE;SACjC;KACF,CAAC;IAEF,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAEvE,uCAAuC;IACvC,MAAM,OAAO,GAAG,aAAa,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,eAAe,CAAC,CAAC;IAClE,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;QAC3D,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,cAAc,IAAI,OAAO,CAAC,cAAc,KAAK,IAAI,EAAE,CAAC;YACjF,+BAA+B;YAC/B,MAAM,OAAO,GAAG,OAAO,CAAC,cAAwB,CAAC;YACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;YACtD,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAEzC,MAAM,QAAQ,GAAyB;gBACrC,OAAO,EAAE,OAAO,CAAC,OAAiB;gBAClC,KAAK,EAAG,OAAO,CAAC,KAAgB,IAAI,EAAE;gBACtC,YAAY,EAAE,MAAM,CAAC,OAAO,CAAC,YAAY,IAAI,EAAE,CAAC;gBAChD,cAAc,EAAE,OAAO;aACxB,CAAC;YACF,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YAE9F,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;YACzD,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QACzE,CAAC;QAED,qBAAqB;QACrB,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,CAAC;IACxC,CAAC;IAAC,MAAM,CAAC;QACP,4CAA4C;IAC9C,CAAC;AACH,CAAC;AAED,kBAAkB;AAElB,SAAS,eAAe,CAAC,IAAY,EAAE,OAAe;IACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,kBAAkB,CAAC,CAAC;IACvE,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAyB,CAAC;AAC7E,CAAC"}
@@ -1,2 +0,0 @@
1
- export declare function workspaceDataDir(): string;
2
- export declare function resetWorkspaceCache(): void;
@@ -1,28 +0,0 @@
1
- /**
2
- * Resolve the active workspace's data directory for the MCP server.
3
- * Reads from ~/.nex/config.json (workspace registry format).
4
- * Falls back to ~/.nex/ if no workspace is configured (pre-migration).
5
- */
6
- import { readFileSync } from "node:fs";
7
- import { join } from "node:path";
8
- import { homedir } from "node:os";
9
- const BASE_DIR = process.env.NEX_BASE_DIR || join(homedir(), ".nex");
10
- let _cached;
11
- export function workspaceDataDir() {
12
- if (_cached)
13
- return _cached;
14
- try {
15
- const raw = readFileSync(join(BASE_DIR, "config.json"), "utf-8");
16
- const config = JSON.parse(raw);
17
- if (config.active_workspace) {
18
- _cached = join(BASE_DIR, "workspaces", config.active_workspace);
19
- return _cached;
20
- }
21
- }
22
- catch { /* fall back */ }
23
- return BASE_DIR;
24
- }
25
- export function resetWorkspaceCache() {
26
- _cached = undefined;
27
- }
28
- //# sourceMappingURL=workspace-data-dir.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"workspace-data-dir.js","sourceRoot":"","sources":["../../src/mcp/workspace-data-dir.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC,CAAC;AAErE,IAAI,OAA2B,CAAC;AAEhC,MAAM,UAAU,gBAAgB;IAC9B,IAAI,OAAO;QAAE,OAAO,OAAO,CAAC;IAC5B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,EAAE,OAAO,CAAC,CAAC;QACjE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,MAAM,CAAC,gBAAgB,EAAE,CAAC;YAC5B,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,YAAY,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC;YAChE,OAAO,OAAO,CAAC;QACjB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC;IAC3B,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,OAAO,GAAG,SAAS,CAAC;AACtB,CAAC"}
@@ -1,7 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * Cline TaskComplete hook — auto-capture to Nex.
4
- * Input: { taskComplete: { result: string } }
5
- * Output: {}
6
- */
7
- export {};
@@ -1,25 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * Cline TaskComplete hook — auto-capture to Nex.
4
- * Input: { taskComplete: { result: string } }
5
- * Output: {}
6
- */
7
- import { doCapture, readStdin } from "../shared.js";
8
- async function main() {
9
- try {
10
- const raw = await readStdin();
11
- let input = {};
12
- try {
13
- input = JSON.parse(raw);
14
- }
15
- catch { /* defaults */ }
16
- await doCapture({ message: input.taskComplete?.result ?? "" });
17
- process.stdout.write("{}");
18
- }
19
- catch (err) {
20
- process.stderr.write(`[nex-cline] Capture error: ${err instanceof Error ? err.message : String(err)}\n`);
21
- process.stdout.write("{}");
22
- }
23
- }
24
- main().then(() => process.exit(0)).catch(() => process.exit(0));
25
- //# sourceMappingURL=cline-capture.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cline-capture.js","sourceRoot":"","sources":["../../../src/plugin/adapters/cline-capture.ts"],"names":[],"mappings":";AACA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAMpD,KAAK,UAAU,IAAI;IACjB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,SAAS,EAAE,CAAC;QAC9B,IAAI,KAAK,GAAe,EAAE,CAAC;QAC3B,IAAI,CAAC;YAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,cAAc,CAAC,CAAC;QAEzD,MAAM,SAAS,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,YAAY,EAAE,MAAM,IAAI,EAAE,EAAE,CAAC,CAAC;QAC/D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,8BAA8B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACzG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC"}
@@ -1,7 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * Cline UserPromptSubmit hook — auto-recall from Nex.
4
- * Input: { userPromptSubmit: { prompt: string } }
5
- * Output: { contextModification: "..." } or {}
6
- */
7
- export {};
@@ -1,30 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * Cline UserPromptSubmit hook — auto-recall from Nex.
4
- * Input: { userPromptSubmit: { prompt: string } }
5
- * Output: { contextModification: "..." } or {}
6
- */
7
- import { doRecall, readStdin } from "../shared.js";
8
- async function main() {
9
- try {
10
- const raw = await readStdin();
11
- let input = {};
12
- try {
13
- input = JSON.parse(raw);
14
- }
15
- catch { /* defaults */ }
16
- const prompt = input.userPromptSubmit?.prompt ?? "";
17
- const result = await doRecall(prompt, input.session_id);
18
- if (!result) {
19
- process.stdout.write("{}");
20
- return;
21
- }
22
- process.stdout.write(JSON.stringify({ contextModification: result.context }));
23
- }
24
- catch (err) {
25
- process.stderr.write(`[nex-cline] Recall error: ${err instanceof Error ? err.message : String(err)}\n`);
26
- process.stdout.write("{}");
27
- }
28
- }
29
- main().then(() => process.exit(0)).catch(() => process.exit(0));
30
- //# sourceMappingURL=cline-recall.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cline-recall.js","sourceRoot":"","sources":["../../../src/plugin/adapters/cline-recall.ts"],"names":[],"mappings":";AACA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAOnD,KAAK,UAAU,IAAI;IACjB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,SAAS,EAAE,CAAC;QAC9B,IAAI,KAAK,GAAe,EAAE,CAAC;QAC3B,IAAI,CAAC;YAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,cAAc,CAAC,CAAC;QAEzD,MAAM,MAAM,GAAG,KAAK,CAAC,gBAAgB,EAAE,MAAM,IAAI,EAAE,CAAC;QACpD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;QAExD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC3B,OAAO;QACT,CAAC;QAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,mBAAmB,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAChF,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACxG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC"}
@@ -1,7 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * Cline TaskStart hook — load baseline context from Nex.
4
- * Input: { taskStart: { task: string } }
5
- * Output: { contextModification: "..." } or {}
6
- */
7
- export {};
@@ -1,30 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * Cline TaskStart hook — load baseline context from Nex.
4
- * Input: { taskStart: { task: string } }
5
- * Output: { contextModification: "..." } or {}
6
- */
7
- import { doSessionStart, readStdin } from "../shared.js";
8
- async function main() {
9
- try {
10
- const raw = await readStdin();
11
- let input = {};
12
- try {
13
- input = JSON.parse(raw);
14
- }
15
- catch { /* defaults */ }
16
- const result = await doSessionStart("startup", input.session_id);
17
- if (!result) {
18
- process.stdout.write("{}");
19
- return;
20
- }
21
- const context = result.registrationPrompt ?? result.context;
22
- process.stdout.write(JSON.stringify({ contextModification: context }));
23
- }
24
- catch (err) {
25
- process.stderr.write(`[nex-cline] Task start error: ${err instanceof Error ? err.message : String(err)}\n`);
26
- process.stdout.write("{}");
27
- }
28
- }
29
- main().then(() => process.exit(0)).catch(() => process.exit(0));
30
- //# sourceMappingURL=cline-task-start.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cline-task-start.js","sourceRoot":"","sources":["../../../src/plugin/adapters/cline-task-start.ts"],"names":[],"mappings":";AACA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAOzD,KAAK,UAAU,IAAI;IACjB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,SAAS,EAAE,CAAC;QAC9B,IAAI,KAAK,GAAe,EAAE,CAAC;QAC3B,IAAI,CAAC;YAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,cAAc,CAAC,CAAC;QAEzD,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,SAAS,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;QACjE,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC3B,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,CAAC,kBAAkB,IAAI,MAAM,CAAC,OAAO,CAAC;QAC5D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,mBAAmB,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;IACzE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,iCAAiC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC5G,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC"}
@@ -1,7 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * Cursor userPromptSubmit hook — auto-recall from Nex.
4
- * Input: { prompt?: string, attachments?: unknown[], session_id?: string }
5
- * Output: { continue: true, user_message: "<original + context>" } or {}
6
- */
7
- export {};
@@ -1,31 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * Cursor userPromptSubmit hook — auto-recall from Nex.
4
- * Input: { prompt?: string, attachments?: unknown[], session_id?: string }
5
- * Output: { continue: true, user_message: "<original + context>" } or {}
6
- */
7
- import { doRecall, readStdin } from "../shared.js";
8
- async function main() {
9
- try {
10
- const raw = await readStdin();
11
- let input = {};
12
- try {
13
- input = JSON.parse(raw);
14
- }
15
- catch { /* defaults */ }
16
- const prompt = input.prompt ?? "";
17
- const result = await doRecall(prompt, input.session_id);
18
- if (!result) {
19
- process.stdout.write("{}");
20
- return;
21
- }
22
- // Inject context as additional_context (Cursor's context injection mechanism)
23
- process.stdout.write(JSON.stringify({ additional_context: result.context }));
24
- }
25
- catch (err) {
26
- process.stderr.write(`[nex-cursor] Recall error: ${err instanceof Error ? err.message : String(err)}\n`);
27
- process.stdout.write("{}");
28
- }
29
- }
30
- main().then(() => process.exit(0)).catch(() => process.exit(0));
31
- //# sourceMappingURL=cursor-recall.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cursor-recall.js","sourceRoot":"","sources":["../../../src/plugin/adapters/cursor-recall.ts"],"names":[],"mappings":";AACA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAQnD,KAAK,UAAU,IAAI;IACjB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,SAAS,EAAE,CAAC;QAC9B,IAAI,KAAK,GAAgB,EAAE,CAAC;QAC5B,IAAI,CAAC;YAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,cAAc,CAAC,CAAC;QAEzD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;QAExD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC3B,OAAO;QACT,CAAC;QAED,8EAA8E;QAC9E,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,kBAAkB,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAC/E,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,8BAA8B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACzG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC"}
@@ -1,7 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * Cursor sessionStart hook — load baseline context from Nex.
4
- * Input: { session_id?: string }
5
- * Output: { additional_context: "..." } or {}
6
- */
7
- export {};
@@ -1,30 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * Cursor sessionStart hook — load baseline context from Nex.
4
- * Input: { session_id?: string }
5
- * Output: { additional_context: "..." } or {}
6
- */
7
- import { doSessionStart, readStdin } from "../shared.js";
8
- async function main() {
9
- try {
10
- const raw = await readStdin();
11
- let input = {};
12
- try {
13
- input = JSON.parse(raw);
14
- }
15
- catch { /* defaults */ }
16
- const result = await doSessionStart("startup", input.session_id);
17
- if (!result) {
18
- process.stdout.write("{}");
19
- return;
20
- }
21
- const context = result.registrationPrompt ?? result.context;
22
- process.stdout.write(JSON.stringify({ additional_context: context }));
23
- }
24
- catch (err) {
25
- process.stderr.write(`[nex-cursor] Session start error: ${err instanceof Error ? err.message : String(err)}\n`);
26
- process.stdout.write("{}");
27
- }
28
- }
29
- main().then(() => process.exit(0)).catch(() => process.exit(0));
30
- //# sourceMappingURL=cursor-session-start.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cursor-session-start.js","sourceRoot":"","sources":["../../../src/plugin/adapters/cursor-session-start.ts"],"names":[],"mappings":";AACA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzD,KAAK,UAAU,IAAI;IACjB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,SAAS,EAAE,CAAC;QAC9B,IAAI,KAAK,GAA4B,EAAE,CAAC;QACxC,IAAI,CAAC;YAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,cAAc,CAAC,CAAC;QAEzD,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,SAAS,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;QACjE,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC3B,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,CAAC,kBAAkB,IAAI,MAAM,CAAC,OAAO,CAAC;QAC5D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,kBAAkB,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;IACxE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,qCAAqC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAChH,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC"}
@@ -1,7 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * Cursor stop hook — auto-capture conversation to Nex.
4
- * Input: { last_message?: string, status?: string, session_id?: string }
5
- * Output: {}
6
- */
7
- export {};
@@ -1,25 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * Cursor stop hook — auto-capture conversation to Nex.
4
- * Input: { last_message?: string, status?: string, session_id?: string }
5
- * Output: {}
6
- */
7
- import { doCapture, readStdin } from "../shared.js";
8
- async function main() {
9
- try {
10
- const raw = await readStdin();
11
- let input = {};
12
- try {
13
- input = JSON.parse(raw);
14
- }
15
- catch { /* defaults */ }
16
- await doCapture({ message: input.last_message ?? "" });
17
- process.stdout.write("{}");
18
- }
19
- catch (err) {
20
- process.stderr.write(`[nex-cursor] Capture error: ${err instanceof Error ? err.message : String(err)}\n`);
21
- process.stdout.write("{}");
22
- }
23
- }
24
- main().then(() => process.exit(0)).catch(() => process.exit(0));
25
- //# sourceMappingURL=cursor-stop.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cursor-stop.js","sourceRoot":"","sources":["../../../src/plugin/adapters/cursor-stop.ts"],"names":[],"mappings":";AACA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAQpD,KAAK,UAAU,IAAI;IACjB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,SAAS,EAAE,CAAC;QAC9B,IAAI,KAAK,GAAoB,EAAE,CAAC;QAChC,IAAI,CAAC;YAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,cAAc,CAAC,CAAC;QAEzD,MAAM,SAAS,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,YAAY,IAAI,EAAE,EAAE,CAAC,CAAC;QACvD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,+BAA+B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC1G,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC"}
@@ -1,7 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * Windsurf post_cascade_response hook — auto-capture to Nex.
4
- * Input: { tool_info: { response: string } }
5
- * Output: {}
6
- */
7
- export {};
@@ -1,25 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * Windsurf post_cascade_response hook — auto-capture to Nex.
4
- * Input: { tool_info: { response: string } }
5
- * Output: {}
6
- */
7
- import { doCapture, readStdin } from "../shared.js";
8
- async function main() {
9
- try {
10
- const raw = await readStdin();
11
- let input = {};
12
- try {
13
- input = JSON.parse(raw);
14
- }
15
- catch { /* defaults */ }
16
- await doCapture({ message: input.tool_info?.response ?? "" });
17
- process.stdout.write("{}");
18
- }
19
- catch (err) {
20
- process.stderr.write(`[nex-windsurf] Capture error: ${err instanceof Error ? err.message : String(err)}\n`);
21
- process.stdout.write("{}");
22
- }
23
- }
24
- main().then(() => process.exit(0)).catch(() => process.exit(0));
25
- //# sourceMappingURL=windsurf-capture.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"windsurf-capture.js","sourceRoot":"","sources":["../../../src/plugin/adapters/windsurf-capture.ts"],"names":[],"mappings":";AACA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAMpD,KAAK,UAAU,IAAI;IACjB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,SAAS,EAAE,CAAC;QAC9B,IAAI,KAAK,GAAkB,EAAE,CAAC;QAC9B,IAAI,CAAC;YAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,cAAc,CAAC,CAAC;QAEzD,MAAM,SAAS,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,SAAS,EAAE,QAAQ,IAAI,EAAE,EAAE,CAAC,CAAC;QAC9D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,iCAAiC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC5G,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC"}
@@ -1,7 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * Windsurf pre_user_prompt hook — auto-recall from Nex.
4
- * Input: { tool_info: { user_prompt: string } }
5
- * Output: context string on stdout (displayed via show_output) or {}
6
- */
7
- export {};
@@ -1,31 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * Windsurf pre_user_prompt hook — auto-recall from Nex.
4
- * Input: { tool_info: { user_prompt: string } }
5
- * Output: context string on stdout (displayed via show_output) or {}
6
- */
7
- import { doRecall, readStdin } from "../shared.js";
8
- async function main() {
9
- try {
10
- const raw = await readStdin();
11
- let input = {};
12
- try {
13
- input = JSON.parse(raw);
14
- }
15
- catch { /* defaults */ }
16
- const prompt = input.tool_info?.user_prompt ?? "";
17
- const result = await doRecall(prompt, input.session_id);
18
- if (!result) {
19
- process.stdout.write("{}");
20
- return;
21
- }
22
- // Windsurf displays stdout content via show_output
23
- process.stdout.write(JSON.stringify({ additional_context: result.context }));
24
- }
25
- catch (err) {
26
- process.stderr.write(`[nex-windsurf] Recall error: ${err instanceof Error ? err.message : String(err)}\n`);
27
- process.stdout.write("{}");
28
- }
29
- }
30
- main().then(() => process.exit(0)).catch(() => process.exit(0));
31
- //# sourceMappingURL=windsurf-recall.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"windsurf-recall.js","sourceRoot":"","sources":["../../../src/plugin/adapters/windsurf-recall.ts"],"names":[],"mappings":";AACA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAOnD,KAAK,UAAU,IAAI;IACjB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,SAAS,EAAE,CAAC;QAC9B,IAAI,KAAK,GAAkB,EAAE,CAAC;QAC9B,IAAI,CAAC;YAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,cAAc,CAAC,CAAC;QAEzD,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,EAAE,WAAW,IAAI,EAAE,CAAC;QAClD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;QAExD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC3B,OAAO;QACT,CAAC;QAED,mDAAmD;QACnD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,kBAAkB,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAC/E,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC3G,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC"}