gnosys 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (188) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1387 -0
  3. package/dist/cli.d.ts +7 -0
  4. package/dist/cli.d.ts.map +1 -0
  5. package/dist/cli.js +3753 -0
  6. package/dist/cli.js.map +1 -0
  7. package/dist/index.d.ts +8 -0
  8. package/dist/index.d.ts.map +1 -0
  9. package/dist/index.js +2267 -0
  10. package/dist/index.js.map +1 -0
  11. package/dist/lib/archive.d.ts +95 -0
  12. package/dist/lib/archive.d.ts.map +1 -0
  13. package/dist/lib/archive.js +311 -0
  14. package/dist/lib/archive.js.map +1 -0
  15. package/dist/lib/ask.d.ts +77 -0
  16. package/dist/lib/ask.d.ts.map +1 -0
  17. package/dist/lib/ask.js +316 -0
  18. package/dist/lib/ask.js.map +1 -0
  19. package/dist/lib/audit.d.ts +47 -0
  20. package/dist/lib/audit.d.ts.map +1 -0
  21. package/dist/lib/audit.js +136 -0
  22. package/dist/lib/audit.js.map +1 -0
  23. package/dist/lib/bootstrap.d.ts +56 -0
  24. package/dist/lib/bootstrap.d.ts.map +1 -0
  25. package/dist/lib/bootstrap.js +163 -0
  26. package/dist/lib/bootstrap.js.map +1 -0
  27. package/dist/lib/config.d.ts +239 -0
  28. package/dist/lib/config.d.ts.map +1 -0
  29. package/dist/lib/config.js +371 -0
  30. package/dist/lib/config.js.map +1 -0
  31. package/dist/lib/dashboard.d.ts +81 -0
  32. package/dist/lib/dashboard.d.ts.map +1 -0
  33. package/dist/lib/dashboard.js +314 -0
  34. package/dist/lib/dashboard.js.map +1 -0
  35. package/dist/lib/db.d.ts +182 -0
  36. package/dist/lib/db.d.ts.map +1 -0
  37. package/dist/lib/db.js +620 -0
  38. package/dist/lib/db.js.map +1 -0
  39. package/dist/lib/dbSearch.d.ts +65 -0
  40. package/dist/lib/dbSearch.d.ts.map +1 -0
  41. package/dist/lib/dbSearch.js +239 -0
  42. package/dist/lib/dbSearch.js.map +1 -0
  43. package/dist/lib/dbWrite.d.ts +56 -0
  44. package/dist/lib/dbWrite.d.ts.map +1 -0
  45. package/dist/lib/dbWrite.js +171 -0
  46. package/dist/lib/dbWrite.js.map +1 -0
  47. package/dist/lib/dream.d.ts +170 -0
  48. package/dist/lib/dream.d.ts.map +1 -0
  49. package/dist/lib/dream.js +706 -0
  50. package/dist/lib/dream.js.map +1 -0
  51. package/dist/lib/embeddings.d.ts +84 -0
  52. package/dist/lib/embeddings.d.ts.map +1 -0
  53. package/dist/lib/embeddings.js +226 -0
  54. package/dist/lib/embeddings.js.map +1 -0
  55. package/dist/lib/export.d.ts +92 -0
  56. package/dist/lib/export.d.ts.map +1 -0
  57. package/dist/lib/export.js +362 -0
  58. package/dist/lib/export.js.map +1 -0
  59. package/dist/lib/federated.d.ts +113 -0
  60. package/dist/lib/federated.d.ts.map +1 -0
  61. package/dist/lib/federated.js +346 -0
  62. package/dist/lib/federated.js.map +1 -0
  63. package/dist/lib/graph.d.ts +50 -0
  64. package/dist/lib/graph.d.ts.map +1 -0
  65. package/dist/lib/graph.js +118 -0
  66. package/dist/lib/graph.js.map +1 -0
  67. package/dist/lib/history.d.ts +39 -0
  68. package/dist/lib/history.d.ts.map +1 -0
  69. package/dist/lib/history.js +112 -0
  70. package/dist/lib/history.js.map +1 -0
  71. package/dist/lib/hybridSearch.d.ts +80 -0
  72. package/dist/lib/hybridSearch.d.ts.map +1 -0
  73. package/dist/lib/hybridSearch.js +296 -0
  74. package/dist/lib/hybridSearch.js.map +1 -0
  75. package/dist/lib/import.d.ts +52 -0
  76. package/dist/lib/import.d.ts.map +1 -0
  77. package/dist/lib/import.js +365 -0
  78. package/dist/lib/import.js.map +1 -0
  79. package/dist/lib/ingest.d.ts +51 -0
  80. package/dist/lib/ingest.d.ts.map +1 -0
  81. package/dist/lib/ingest.js +144 -0
  82. package/dist/lib/ingest.js.map +1 -0
  83. package/dist/lib/lensing.d.ts +35 -0
  84. package/dist/lib/lensing.d.ts.map +1 -0
  85. package/dist/lib/lensing.js +85 -0
  86. package/dist/lib/lensing.js.map +1 -0
  87. package/dist/lib/llm.d.ts +84 -0
  88. package/dist/lib/llm.d.ts.map +1 -0
  89. package/dist/lib/llm.js +386 -0
  90. package/dist/lib/llm.js.map +1 -0
  91. package/dist/lib/lock.d.ts +28 -0
  92. package/dist/lib/lock.d.ts.map +1 -0
  93. package/dist/lib/lock.js +145 -0
  94. package/dist/lib/lock.js.map +1 -0
  95. package/dist/lib/maintenance.d.ts +124 -0
  96. package/dist/lib/maintenance.d.ts.map +1 -0
  97. package/dist/lib/maintenance.js +587 -0
  98. package/dist/lib/maintenance.js.map +1 -0
  99. package/dist/lib/migrate.d.ts +19 -0
  100. package/dist/lib/migrate.d.ts.map +1 -0
  101. package/dist/lib/migrate.js +260 -0
  102. package/dist/lib/migrate.js.map +1 -0
  103. package/dist/lib/preferences.d.ts +49 -0
  104. package/dist/lib/preferences.d.ts.map +1 -0
  105. package/dist/lib/preferences.js +149 -0
  106. package/dist/lib/preferences.js.map +1 -0
  107. package/dist/lib/projectIdentity.d.ts +66 -0
  108. package/dist/lib/projectIdentity.d.ts.map +1 -0
  109. package/dist/lib/projectIdentity.js +148 -0
  110. package/dist/lib/projectIdentity.js.map +1 -0
  111. package/dist/lib/recall.d.ts +82 -0
  112. package/dist/lib/recall.d.ts.map +1 -0
  113. package/dist/lib/recall.js +289 -0
  114. package/dist/lib/recall.js.map +1 -0
  115. package/dist/lib/resolver.d.ts +116 -0
  116. package/dist/lib/resolver.d.ts.map +1 -0
  117. package/dist/lib/resolver.js +372 -0
  118. package/dist/lib/resolver.js.map +1 -0
  119. package/dist/lib/retry.d.ts +24 -0
  120. package/dist/lib/retry.d.ts.map +1 -0
  121. package/dist/lib/retry.js +60 -0
  122. package/dist/lib/retry.js.map +1 -0
  123. package/dist/lib/rulesGen.d.ts +51 -0
  124. package/dist/lib/rulesGen.d.ts.map +1 -0
  125. package/dist/lib/rulesGen.js +167 -0
  126. package/dist/lib/rulesGen.js.map +1 -0
  127. package/dist/lib/search.d.ts +51 -0
  128. package/dist/lib/search.d.ts.map +1 -0
  129. package/dist/lib/search.js +190 -0
  130. package/dist/lib/search.js.map +1 -0
  131. package/dist/lib/staticSearch.d.ts +70 -0
  132. package/dist/lib/staticSearch.d.ts.map +1 -0
  133. package/dist/lib/staticSearch.js +162 -0
  134. package/dist/lib/staticSearch.js.map +1 -0
  135. package/dist/lib/store.d.ts +79 -0
  136. package/dist/lib/store.d.ts.map +1 -0
  137. package/dist/lib/store.js +227 -0
  138. package/dist/lib/store.js.map +1 -0
  139. package/dist/lib/structuredIngest.d.ts +37 -0
  140. package/dist/lib/structuredIngest.d.ts.map +1 -0
  141. package/dist/lib/structuredIngest.js +208 -0
  142. package/dist/lib/structuredIngest.js.map +1 -0
  143. package/dist/lib/tags.d.ts +26 -0
  144. package/dist/lib/tags.d.ts.map +1 -0
  145. package/dist/lib/tags.js +109 -0
  146. package/dist/lib/tags.js.map +1 -0
  147. package/dist/lib/timeline.d.ts +34 -0
  148. package/dist/lib/timeline.d.ts.map +1 -0
  149. package/dist/lib/timeline.js +116 -0
  150. package/dist/lib/timeline.js.map +1 -0
  151. package/dist/lib/trace.d.ts +42 -0
  152. package/dist/lib/trace.d.ts.map +1 -0
  153. package/dist/lib/trace.js +338 -0
  154. package/dist/lib/trace.js.map +1 -0
  155. package/dist/lib/webIndex.d.ts +28 -0
  156. package/dist/lib/webIndex.d.ts.map +1 -0
  157. package/dist/lib/webIndex.js +208 -0
  158. package/dist/lib/webIndex.js.map +1 -0
  159. package/dist/lib/webIngest.d.ts +51 -0
  160. package/dist/lib/webIngest.d.ts.map +1 -0
  161. package/dist/lib/webIngest.js +533 -0
  162. package/dist/lib/webIngest.js.map +1 -0
  163. package/dist/lib/wikilinks.d.ts +63 -0
  164. package/dist/lib/wikilinks.d.ts.map +1 -0
  165. package/dist/lib/wikilinks.js +146 -0
  166. package/dist/lib/wikilinks.js.map +1 -0
  167. package/dist/sandbox/client.d.ts +82 -0
  168. package/dist/sandbox/client.d.ts.map +1 -0
  169. package/dist/sandbox/client.js +128 -0
  170. package/dist/sandbox/client.js.map +1 -0
  171. package/dist/sandbox/helper-template.d.ts +14 -0
  172. package/dist/sandbox/helper-template.d.ts.map +1 -0
  173. package/dist/sandbox/helper-template.js +285 -0
  174. package/dist/sandbox/helper-template.js.map +1 -0
  175. package/dist/sandbox/index.d.ts +10 -0
  176. package/dist/sandbox/index.d.ts.map +1 -0
  177. package/dist/sandbox/index.js +10 -0
  178. package/dist/sandbox/index.js.map +1 -0
  179. package/dist/sandbox/manager.d.ts +40 -0
  180. package/dist/sandbox/manager.d.ts.map +1 -0
  181. package/dist/sandbox/manager.js +220 -0
  182. package/dist/sandbox/manager.js.map +1 -0
  183. package/dist/sandbox/server.d.ts +44 -0
  184. package/dist/sandbox/server.d.ts.map +1 -0
  185. package/dist/sandbox/server.js +661 -0
  186. package/dist/sandbox/server.js.map +1 -0
  187. package/package.json +103 -0
  188. package/prompts/synthesize.md +21 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helper-template.js","sourceRoot":"","sources":["../../src/sandbox/helper-template.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAEhE;;;;GAIG;AACH,SAAS,oBAAoB,CAAC,SAAwB;IACpD,OAAO;;;;;;;;;;;;;;gBAcO,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;cAC1B,SAAS,IAAI,uBAAuB;;;;;;;;;;;oCAWd,SAAS,CAAC,CAAC,CAAC,IAAI,SAAS,GAAG,CAAC,CAAC,CAAC,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4NxE,CAAC;AACF,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,SAAiB;IACpD,qCAAqC;IACrC,IAAI,SAAS,GAAkB,IAAI,CAAC;IACpC,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,mBAAmB,CAAC,SAAS,CAAC,CAAC;QACtD,SAAS,GAAG,QAAQ,EAAE,QAAQ,CAAC,SAAS,IAAI,IAAI,CAAC;IACnD,CAAC;IAAC,MAAM,CAAC;QACP,0CAA0C;IAC5C,CAAC;IAED,MAAM,MAAM,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAC;IAC/C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;IAE5D,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7C,OAAO,UAAU,CAAC;AACpB,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Gnosys Sandbox — Public API
3
+ *
4
+ * Re-exports the client, manager, and server utilities
5
+ * for use by the CLI and helper library.
6
+ */
7
+ export { SandboxClient } from "./client.js";
8
+ export { startSandbox, stopSandbox, sandboxStatus, ensureSandbox, type SandboxStatus, } from "./manager.js";
9
+ export { getSocketPath, getPidPath, getSandboxDir, handleRequest, startServer, initDreamMode, type SandboxRequest, type SandboxResponse, type DreamState, } from "./server.js";
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sandbox/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EACL,YAAY,EACZ,WAAW,EACX,aAAa,EACb,aAAa,EACb,KAAK,aAAa,GACnB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,aAAa,EACb,UAAU,EACV,aAAa,EACb,aAAa,EACb,WAAW,EACX,aAAa,EACb,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,UAAU,GAChB,MAAM,aAAa,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Gnosys Sandbox — Public API
3
+ *
4
+ * Re-exports the client, manager, and server utilities
5
+ * for use by the CLI and helper library.
6
+ */
7
+ export { SandboxClient } from "./client.js";
8
+ export { startSandbox, stopSandbox, sandboxStatus, ensureSandbox, } from "./manager.js";
9
+ export { getSocketPath, getPidPath, getSandboxDir, handleRequest, startServer, initDreamMode, } from "./server.js";
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sandbox/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EACL,YAAY,EACZ,WAAW,EACX,aAAa,EACb,aAAa,GAEd,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,aAAa,EACb,UAAU,EACV,aAAa,EACb,aAAa,EACb,WAAW,EACX,aAAa,GAId,MAAM,aAAa,CAAC"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Gnosys Sandbox Manager
3
+ *
4
+ * Manages the lifecycle of the background sandbox server process.
5
+ * Handles start, stop, status, and auto-start on helper import.
6
+ */
7
+ import { SandboxClient } from "./client.js";
8
+ export interface SandboxStatus {
9
+ running: boolean;
10
+ pid?: number;
11
+ socketPath?: string;
12
+ uptime?: string;
13
+ dbPath?: string;
14
+ }
15
+ /**
16
+ * Start the sandbox server as a detached background process.
17
+ * Returns the PID of the spawned process.
18
+ */
19
+ export declare function startSandbox(opts?: {
20
+ persistent?: boolean;
21
+ dbPath?: string;
22
+ wait?: boolean;
23
+ }): Promise<number>;
24
+ /**
25
+ * Stop the sandbox server gracefully.
26
+ * First tries the shutdown command, then falls back to SIGTERM.
27
+ */
28
+ export declare function stopSandbox(): Promise<boolean>;
29
+ /**
30
+ * Get the current status of the sandbox.
31
+ */
32
+ export declare function sandboxStatus(): Promise<SandboxStatus>;
33
+ /**
34
+ * Ensure the sandbox is running (auto-start if needed).
35
+ * Used by the helper library to transparently start the sandbox.
36
+ */
37
+ export declare function ensureSandbox(opts?: {
38
+ dbPath?: string;
39
+ }): Promise<SandboxClient>;
40
+ //# sourceMappingURL=manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/sandbox/manager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAK5C,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AA4DD;;;GAGG;AACH,wBAAsB,YAAY,CAAC,IAAI,CAAC,EAAE;IACxC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,GAAG,OAAO,CAAC,MAAM,CAAC,CA6DlB;AAED;;;GAGG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,CA0CpD;AAED;;GAEG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,aAAa,CAAC,CAyB5D;AAED;;;GAGG;AACH,wBAAsB,aAAa,CAAC,IAAI,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,aAAa,CAAC,CAUtF"}
@@ -0,0 +1,220 @@
1
+ /**
2
+ * Gnosys Sandbox Manager
3
+ *
4
+ * Manages the lifecycle of the background sandbox server process.
5
+ * Handles start, stop, status, and auto-start on helper import.
6
+ */
7
+ import { spawn } from "child_process";
8
+ import fs from "fs";
9
+ import path from "path";
10
+ import { fileURLToPath } from "url";
11
+ import { getSandboxDir, getPidPath, getSocketPath } from "./server.js";
12
+ import { SandboxClient } from "./client.js";
13
+ const __filename = fileURLToPath(import.meta.url);
14
+ const __dirname = path.dirname(__filename);
15
+ /**
16
+ * Get the path to the compiled server entry point.
17
+ * Falls back to ts-node / tsx for development.
18
+ */
19
+ function getServerScript() {
20
+ // In production (dist/), look for the compiled JS
21
+ const distServer = path.resolve(__dirname, "..", "sandbox", "server.js");
22
+ if (fs.existsSync(distServer))
23
+ return distServer;
24
+ // In development (src/), look for the TS source
25
+ const srcServer = path.resolve(__dirname, "..", "..", "src", "sandbox", "server.ts");
26
+ if (fs.existsSync(srcServer))
27
+ return srcServer;
28
+ // Fallback: relative to this file
29
+ return path.resolve(__dirname, "server.js");
30
+ }
31
+ /**
32
+ * Read the PID from the PID file, if it exists.
33
+ */
34
+ function readPid() {
35
+ const pidPath = getPidPath();
36
+ try {
37
+ const content = fs.readFileSync(pidPath, "utf8").trim();
38
+ const pid = parseInt(content, 10);
39
+ return isNaN(pid) ? null : pid;
40
+ }
41
+ catch {
42
+ return null;
43
+ }
44
+ }
45
+ /**
46
+ * Check if a process with the given PID is alive.
47
+ */
48
+ function isProcessAlive(pid) {
49
+ try {
50
+ process.kill(pid, 0); // signal 0 = just check existence
51
+ return true;
52
+ }
53
+ catch {
54
+ return false;
55
+ }
56
+ }
57
+ /**
58
+ * Clean up stale PID and socket files when the process is no longer running.
59
+ */
60
+ function cleanupStale() {
61
+ const pidPath = getPidPath();
62
+ const socketPath = getSocketPath();
63
+ try {
64
+ if (fs.existsSync(pidPath))
65
+ fs.unlinkSync(pidPath);
66
+ }
67
+ catch { /* best effort */ }
68
+ try {
69
+ if (process.platform !== "win32" && fs.existsSync(socketPath)) {
70
+ fs.unlinkSync(socketPath);
71
+ }
72
+ }
73
+ catch { /* best effort */ }
74
+ }
75
+ /**
76
+ * Start the sandbox server as a detached background process.
77
+ * Returns the PID of the spawned process.
78
+ */
79
+ export async function startSandbox(opts) {
80
+ // Check if already running
81
+ const client = new SandboxClient();
82
+ if (await client.isRunning()) {
83
+ const status = await client.ping();
84
+ return status.pid;
85
+ }
86
+ // Clean up stale files
87
+ cleanupStale();
88
+ const serverScript = getServerScript();
89
+ const args = [serverScript];
90
+ if (opts?.dbPath)
91
+ args.push(`--db-path=${opts.dbPath}`);
92
+ // Determine how to run the script
93
+ let command;
94
+ let spawnArgs;
95
+ if (serverScript.endsWith(".ts")) {
96
+ // Development mode — use tsx or ts-node
97
+ command = "npx";
98
+ spawnArgs = ["tsx", ...args];
99
+ }
100
+ else {
101
+ command = process.execPath; // node
102
+ spawnArgs = args;
103
+ }
104
+ const logPath = path.join(getSandboxDir(), "sandbox.log");
105
+ const logFd = fs.openSync(logPath, "a");
106
+ const child = spawn(command, spawnArgs, {
107
+ detached: true,
108
+ stdio: ["ignore", logFd, logFd],
109
+ env: { ...process.env },
110
+ });
111
+ child.unref();
112
+ fs.closeSync(logFd);
113
+ if (!child.pid) {
114
+ throw new Error("Failed to spawn sandbox process");
115
+ }
116
+ // Wait for the socket to become available (up to 5 seconds)
117
+ if (opts?.wait !== false) {
118
+ const start = Date.now();
119
+ while (Date.now() - start < 5000) {
120
+ if (await client.isRunning()) {
121
+ return child.pid;
122
+ }
123
+ await new Promise((r) => setTimeout(r, 200));
124
+ }
125
+ // Even if we timeout, the process may still be starting
126
+ // Check the PID file as fallback
127
+ const pid = readPid();
128
+ if (pid && isProcessAlive(pid))
129
+ return pid;
130
+ throw new Error("Sandbox started but failed to respond within 5 seconds. Check ~/.gnosys/sandbox/sandbox.log");
131
+ }
132
+ return child.pid;
133
+ }
134
+ /**
135
+ * Stop the sandbox server gracefully.
136
+ * First tries the shutdown command, then falls back to SIGTERM.
137
+ */
138
+ export async function stopSandbox() {
139
+ const pid = readPid();
140
+ if (!pid || !isProcessAlive(pid)) {
141
+ cleanupStale();
142
+ return false; // wasn't running
143
+ }
144
+ // Try graceful shutdown via the protocol
145
+ try {
146
+ const client = new SandboxClient();
147
+ await client.shutdown();
148
+ // Give it a moment to clean up
149
+ await new Promise((r) => setTimeout(r, 500));
150
+ if (!isProcessAlive(pid)) {
151
+ cleanupStale();
152
+ return true;
153
+ }
154
+ }
155
+ catch {
156
+ // Socket may be unavailable — fall back to signal
157
+ }
158
+ // SIGTERM
159
+ try {
160
+ process.kill(pid, "SIGTERM");
161
+ // Wait up to 3 seconds
162
+ const start = Date.now();
163
+ while (Date.now() - start < 3000) {
164
+ if (!isProcessAlive(pid)) {
165
+ cleanupStale();
166
+ return true;
167
+ }
168
+ await new Promise((r) => setTimeout(r, 200));
169
+ }
170
+ // Force kill
171
+ process.kill(pid, "SIGKILL");
172
+ }
173
+ catch {
174
+ // Process may have already exited
175
+ }
176
+ cleanupStale();
177
+ return true;
178
+ }
179
+ /**
180
+ * Get the current status of the sandbox.
181
+ */
182
+ export async function sandboxStatus() {
183
+ const pid = readPid();
184
+ const socketPath = getSocketPath();
185
+ if (!pid || !isProcessAlive(pid)) {
186
+ cleanupStale();
187
+ return { running: false };
188
+ }
189
+ // Verify by actually pinging
190
+ const client = new SandboxClient();
191
+ try {
192
+ await client.ping();
193
+ return {
194
+ running: true,
195
+ pid,
196
+ socketPath,
197
+ };
198
+ }
199
+ catch {
200
+ // Process exists but socket is unresponsive
201
+ return {
202
+ running: false,
203
+ pid,
204
+ };
205
+ }
206
+ }
207
+ /**
208
+ * Ensure the sandbox is running (auto-start if needed).
209
+ * Used by the helper library to transparently start the sandbox.
210
+ */
211
+ export async function ensureSandbox(opts) {
212
+ const client = new SandboxClient();
213
+ if (await client.isRunning()) {
214
+ return client;
215
+ }
216
+ // Auto-start
217
+ await startSandbox({ dbPath: opts?.dbPath, wait: true });
218
+ return client;
219
+ }
220
+ //# sourceMappingURL=manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/sandbox/manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Gnosys Sandbox Server
3
+ *
4
+ * Lightweight background Node process that holds a GnosysDB connection
5
+ * and processes requests over a Unix domain socket (or named pipe on Windows).
6
+ *
7
+ * Phase 9b: Integrates Dream Mode (idle-triggered), preferences, and sync.
8
+ *
9
+ * No Docker. No external deps. Just Node + better-sqlite3.
10
+ */
11
+ import net from "net";
12
+ import { GnosysDB } from "../lib/db.js";
13
+ import { DreamScheduler, DreamConfig, DreamReport } from "../lib/dream.js";
14
+ import { GnosysConfig } from "../lib/config.js";
15
+ export declare function getSandboxDir(): string;
16
+ export declare function getSocketPath(): string;
17
+ export declare function getPidPath(): string;
18
+ export interface SandboxRequest {
19
+ id: string;
20
+ method: string;
21
+ params: Record<string, unknown>;
22
+ }
23
+ export interface SandboxResponse {
24
+ id: string;
25
+ ok: boolean;
26
+ result?: unknown;
27
+ error?: string;
28
+ }
29
+ /** Sandbox-level dream state for status reporting. */
30
+ export interface DreamState {
31
+ enabled: boolean;
32
+ idleMinutes: number;
33
+ lastDreamReport: DreamReport | null;
34
+ dreamsCompleted: number;
35
+ isDreaming: boolean;
36
+ }
37
+ /**
38
+ * Initialize Dream Mode in the sandbox.
39
+ * Called once during server startup.
40
+ */
41
+ export declare function initDreamMode(db: GnosysDB, config: GnosysConfig, dreamConfig?: Partial<DreamConfig>): DreamScheduler | null;
42
+ export declare function handleRequest(db: GnosysDB, req: SandboxRequest): SandboxResponse;
43
+ export declare function startServer(dbPath?: string): net.Server;
44
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/sandbox/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,GAAG,MAAM,KAAK,CAAC;AAItB,OAAO,EAAE,QAAQ,EAAY,MAAM,cAAc,CAAC;AAGlD,OAAO,EAAqB,cAAc,EAAE,WAAW,EAAE,WAAW,EAAwB,MAAM,iBAAiB,CAAC;AACpH,OAAO,EAAkB,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAKhE,wBAAgB,aAAa,IAAI,MAAM,CAItC;AAED,wBAAgB,aAAa,IAAI,MAAM,CAKtC;AAED,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAID,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAID,sDAAsD;AACtD,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,WAAW,GAAG,IAAI,CAAC;IACpC,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,OAAO,CAAC;CACrB;AAYD;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,EAAE,EAAE,QAAQ,EACZ,MAAM,EAAE,YAAY,EACpB,WAAW,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GACjC,cAAc,GAAG,IAAI,CAqCvB;AAID,wBAAgB,aAAa,CAAC,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,cAAc,GAAG,eAAe,CAohBhF;AAID,wBAAgB,WAAW,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAyHvD"}