@nex-ai/nex 0.1.53 → 0.1.54

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 (36) hide show
  1. package/dist/commands/dispatch.js +38 -1
  2. package/dist/commands/dispatch.js.map +1 -1
  3. package/dist/index.js +0 -0
  4. package/dist/mcp/channel.js +41 -11
  5. package/dist/mcp/channel.js.map +1 -1
  6. package/dist/mcp/index.js +0 -0
  7. package/dist/mcp/tools/notifications.js +4 -4
  8. package/dist/mcp/tools/notifications.js.map +1 -1
  9. package/dist/plugin/adapters/cline-capture.d.ts +7 -0
  10. package/dist/plugin/adapters/cline-capture.js +25 -0
  11. package/dist/plugin/adapters/cline-capture.js.map +1 -0
  12. package/dist/plugin/adapters/cline-recall.d.ts +7 -0
  13. package/dist/plugin/adapters/cline-recall.js +30 -0
  14. package/dist/plugin/adapters/cline-recall.js.map +1 -0
  15. package/dist/plugin/adapters/cline-task-start.d.ts +7 -0
  16. package/dist/plugin/adapters/cline-task-start.js +30 -0
  17. package/dist/plugin/adapters/cline-task-start.js.map +1 -0
  18. package/dist/plugin/adapters/cursor-recall.d.ts +7 -0
  19. package/dist/plugin/adapters/cursor-recall.js +31 -0
  20. package/dist/plugin/adapters/cursor-recall.js.map +1 -0
  21. package/dist/plugin/adapters/cursor-session-start.d.ts +7 -0
  22. package/dist/plugin/adapters/cursor-session-start.js +30 -0
  23. package/dist/plugin/adapters/cursor-session-start.js.map +1 -0
  24. package/dist/plugin/adapters/cursor-stop.d.ts +7 -0
  25. package/dist/plugin/adapters/cursor-stop.js +25 -0
  26. package/dist/plugin/adapters/cursor-stop.js.map +1 -0
  27. package/dist/plugin/adapters/windsurf-capture.d.ts +7 -0
  28. package/dist/plugin/adapters/windsurf-capture.js +25 -0
  29. package/dist/plugin/adapters/windsurf-capture.js.map +1 -0
  30. package/dist/plugin/adapters/windsurf-recall.d.ts +7 -0
  31. package/dist/plugin/adapters/windsurf-recall.js +31 -0
  32. package/dist/plugin/adapters/windsurf-recall.js.map +1 -0
  33. package/dist/plugin/shared.d.ts +39 -0
  34. package/dist/plugin/shared.js +380 -0
  35. package/dist/plugin/shared.js.map +1 -0
  36. package/package.json +1 -1
@@ -0,0 +1,7 @@
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 {};
@@ -0,0 +1,30 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,7 @@
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 {};
@@ -0,0 +1,31 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,7 @@
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 {};
@@ -0,0 +1,30 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,7 @@
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 {};
@@ -0,0 +1,25 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,7 @@
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 {};
@@ -0,0 +1,25 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,7 @@
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 {};
@@ -0,0 +1,31 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Shared hook logic — platform-agnostic recall, capture, and session-start.
3
+ *
4
+ * Extracted from auto-recall.ts, auto-capture.ts, auto-session-start.ts
5
+ * so adapters for Cursor, Windsurf, Cline, etc. can reuse the same logic
6
+ * without duplicating filter/client/format code.
7
+ */
8
+ export interface RecallResult {
9
+ context: string;
10
+ nexSessionId?: string;
11
+ }
12
+ export interface CaptureInput {
13
+ message: string;
14
+ sessionId?: string;
15
+ planDir?: string;
16
+ }
17
+ export interface SessionStartResult {
18
+ context: string;
19
+ nexSessionId?: string;
20
+ registrationPrompt?: string;
21
+ }
22
+ /**
23
+ * Run recall logic: filter prompt → query Nex /ask → return formatted context.
24
+ * Returns null if recall is skipped or fails.
25
+ */
26
+ export declare function doRecall(prompt: string, sessionKey?: string): Promise<RecallResult | null>;
27
+ /**
28
+ * Run capture logic: filter message → ingest to Nex + scan plan files.
29
+ */
30
+ export declare function doCapture(input: CaptureInput): Promise<void>;
31
+ /**
32
+ * Run session-start logic: scan files → query Nex baseline → return context.
33
+ * Returns null if disabled. Returns registrationPrompt if no API key.
34
+ */
35
+ export declare function doSessionStart(source: string, sessionKey?: string): Promise<SessionStartResult | null>;
36
+ /** Read stdin as a string (shared across all hook scripts). */
37
+ export declare function readStdin(): Promise<string>;
38
+ /** Wrap output in Claude Code hookSpecificOutput format. */
39
+ export declare function claudeCodeOutput(hookEventName: string, additionalContext: string): string;