@jait/gateway 0.1.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 (474) hide show
  1. package/bin/jait.mjs +144 -0
  2. package/dist/config.d.ts +24 -0
  3. package/dist/config.d.ts.map +1 -0
  4. package/dist/config.js +73 -0
  5. package/dist/config.js.map +1 -0
  6. package/dist/db/connection.d.ts +37 -0
  7. package/dist/db/connection.d.ts.map +1 -0
  8. package/dist/db/connection.js +85 -0
  9. package/dist/db/connection.js.map +1 -0
  10. package/dist/db/index.d.ts +4 -0
  11. package/dist/db/index.d.ts.map +1 -0
  12. package/dist/db/index.js +4 -0
  13. package/dist/db/index.js.map +1 -0
  14. package/dist/db/migrations.d.ts +24 -0
  15. package/dist/db/migrations.d.ts.map +1 -0
  16. package/dist/db/migrations.js +312 -0
  17. package/dist/db/migrations.js.map +1 -0
  18. package/dist/db/schema.d.ts +2253 -0
  19. package/dist/db/schema.d.ts.map +1 -0
  20. package/dist/db/schema.js +195 -0
  21. package/dist/db/schema.js.map +1 -0
  22. package/dist/foundation.d.ts +26 -0
  23. package/dist/foundation.d.ts.map +1 -0
  24. package/dist/foundation.js +15 -0
  25. package/dist/foundation.js.map +1 -0
  26. package/dist/index.d.ts +3 -0
  27. package/dist/index.d.ts.map +1 -0
  28. package/dist/index.js +413 -0
  29. package/dist/index.js.map +1 -0
  30. package/dist/lib/uuidv7.d.ts +10 -0
  31. package/dist/lib/uuidv7.d.ts.map +1 -0
  32. package/dist/lib/uuidv7.js +33 -0
  33. package/dist/lib/uuidv7.js.map +1 -0
  34. package/dist/memory/contracts.d.ts +42 -0
  35. package/dist/memory/contracts.d.ts.map +1 -0
  36. package/dist/memory/contracts.js +2 -0
  37. package/dist/memory/contracts.js.map +1 -0
  38. package/dist/memory/embeddings.d.ts +4 -0
  39. package/dist/memory/embeddings.d.ts.map +1 -0
  40. package/dist/memory/embeddings.js +26 -0
  41. package/dist/memory/embeddings.js.map +1 -0
  42. package/dist/memory/service.d.ts +17 -0
  43. package/dist/memory/service.d.ts.map +1 -0
  44. package/dist/memory/service.js +82 -0
  45. package/dist/memory/service.js.map +1 -0
  46. package/dist/memory/sqlite-backend.d.ts +11 -0
  47. package/dist/memory/sqlite-backend.d.ts.map +1 -0
  48. package/dist/memory/sqlite-backend.js +68 -0
  49. package/dist/memory/sqlite-backend.js.map +1 -0
  50. package/dist/plugins/contracts.d.ts +11 -0
  51. package/dist/plugins/contracts.d.ts.map +1 -0
  52. package/dist/plugins/contracts.js +2 -0
  53. package/dist/plugins/contracts.js.map +1 -0
  54. package/dist/providers/claude-code-provider.d.ts +39 -0
  55. package/dist/providers/claude-code-provider.d.ts.map +1 -0
  56. package/dist/providers/claude-code-provider.js +322 -0
  57. package/dist/providers/claude-code-provider.js.map +1 -0
  58. package/dist/providers/codex-provider.d.ts +51 -0
  59. package/dist/providers/codex-provider.d.ts.map +1 -0
  60. package/dist/providers/codex-provider.js +826 -0
  61. package/dist/providers/codex-provider.js.map +1 -0
  62. package/dist/providers/contracts.d.ts +167 -0
  63. package/dist/providers/contracts.d.ts.map +1 -0
  64. package/dist/providers/contracts.js +13 -0
  65. package/dist/providers/contracts.js.map +1 -0
  66. package/dist/providers/index.d.ts +6 -0
  67. package/dist/providers/index.d.ts.map +1 -0
  68. package/dist/providers/index.js +5 -0
  69. package/dist/providers/index.js.map +1 -0
  70. package/dist/providers/jait-provider.d.ts +23 -0
  71. package/dist/providers/jait-provider.d.ts.map +1 -0
  72. package/dist/providers/jait-provider.js +67 -0
  73. package/dist/providers/jait-provider.js.map +1 -0
  74. package/dist/providers/registry.d.ts +39 -0
  75. package/dist/providers/registry.d.ts.map +1 -0
  76. package/dist/providers/registry.js +64 -0
  77. package/dist/providers/registry.js.map +1 -0
  78. package/dist/pty-broker-client.d.ts +46 -0
  79. package/dist/pty-broker-client.d.ts.map +1 -0
  80. package/dist/pty-broker-client.js +142 -0
  81. package/dist/pty-broker-client.js.map +1 -0
  82. package/dist/routes/auth.d.ts +6 -0
  83. package/dist/routes/auth.d.ts.map +1 -0
  84. package/dist/routes/auth.js +236 -0
  85. package/dist/routes/auth.js.map +1 -0
  86. package/dist/routes/chat.d.ts +32 -0
  87. package/dist/routes/chat.d.ts.map +1 -0
  88. package/dist/routes/chat.js +1503 -0
  89. package/dist/routes/chat.js.map +1 -0
  90. package/dist/routes/consent.d.ts +10 -0
  91. package/dist/routes/consent.d.ts.map +1 -0
  92. package/dist/routes/consent.js +127 -0
  93. package/dist/routes/consent.js.map +1 -0
  94. package/dist/routes/filesystem.d.ts +14 -0
  95. package/dist/routes/filesystem.d.ts.map +1 -0
  96. package/dist/routes/filesystem.js +152 -0
  97. package/dist/routes/filesystem.js.map +1 -0
  98. package/dist/routes/git.d.ts +17 -0
  99. package/dist/routes/git.d.ts.map +1 -0
  100. package/dist/routes/git.js +213 -0
  101. package/dist/routes/git.js.map +1 -0
  102. package/dist/routes/health.d.ts +7 -0
  103. package/dist/routes/health.d.ts.map +1 -0
  104. package/dist/routes/health.js +21 -0
  105. package/dist/routes/health.js.map +1 -0
  106. package/dist/routes/hooks.d.ts +9 -0
  107. package/dist/routes/hooks.d.ts.map +1 -0
  108. package/dist/routes/hooks.js +22 -0
  109. package/dist/routes/hooks.js.map +1 -0
  110. package/dist/routes/jobs.d.ts +5 -0
  111. package/dist/routes/jobs.d.ts.map +1 -0
  112. package/dist/routes/jobs.js +333 -0
  113. package/dist/routes/jobs.js.map +1 -0
  114. package/dist/routes/mcp-server.d.ts +23 -0
  115. package/dist/routes/mcp-server.d.ts.map +1 -0
  116. package/dist/routes/mcp-server.js +177 -0
  117. package/dist/routes/mcp-server.js.map +1 -0
  118. package/dist/routes/mobile.d.ts +12 -0
  119. package/dist/routes/mobile.d.ts.map +1 -0
  120. package/dist/routes/mobile.js +64 -0
  121. package/dist/routes/mobile.js.map +1 -0
  122. package/dist/routes/network.d.ts +3 -0
  123. package/dist/routes/network.d.ts.map +1 -0
  124. package/dist/routes/network.js +367 -0
  125. package/dist/routes/network.js.map +1 -0
  126. package/dist/routes/repositories.d.ts +18 -0
  127. package/dist/routes/repositories.d.ts.map +1 -0
  128. package/dist/routes/repositories.js +90 -0
  129. package/dist/routes/repositories.js.map +1 -0
  130. package/dist/routes/screen-share.d.ts +17 -0
  131. package/dist/routes/screen-share.d.ts.map +1 -0
  132. package/dist/routes/screen-share.js +92 -0
  133. package/dist/routes/screen-share.js.map +1 -0
  134. package/dist/routes/sessions.d.ts +18 -0
  135. package/dist/routes/sessions.d.ts.map +1 -0
  136. package/dist/routes/sessions.js +169 -0
  137. package/dist/routes/sessions.js.map +1 -0
  138. package/dist/routes/terminals.d.ts +15 -0
  139. package/dist/routes/terminals.d.ts.map +1 -0
  140. package/dist/routes/terminals.js +326 -0
  141. package/dist/routes/terminals.js.map +1 -0
  142. package/dist/routes/threads.d.ts +38 -0
  143. package/dist/routes/threads.d.ts.map +1 -0
  144. package/dist/routes/threads.js +488 -0
  145. package/dist/routes/threads.js.map +1 -0
  146. package/dist/routes/trust.d.ts +9 -0
  147. package/dist/routes/trust.d.ts.map +1 -0
  148. package/dist/routes/trust.js +25 -0
  149. package/dist/routes/trust.js.map +1 -0
  150. package/dist/routes/voice.d.ts +5 -0
  151. package/dist/routes/voice.d.ts.map +1 -0
  152. package/dist/routes/voice.js +37 -0
  153. package/dist/routes/voice.js.map +1 -0
  154. package/dist/routes/workspace.d.ts +13 -0
  155. package/dist/routes/workspace.d.ts.map +1 -0
  156. package/dist/routes/workspace.js +275 -0
  157. package/dist/routes/workspace.js.map +1 -0
  158. package/dist/scheduler/contracts.d.ts +15 -0
  159. package/dist/scheduler/contracts.d.ts.map +1 -0
  160. package/dist/scheduler/contracts.js +2 -0
  161. package/dist/scheduler/contracts.js.map +1 -0
  162. package/dist/scheduler/hooks.d.ts +20 -0
  163. package/dist/scheduler/hooks.d.ts.map +1 -0
  164. package/dist/scheduler/hooks.js +78 -0
  165. package/dist/scheduler/hooks.js.map +1 -0
  166. package/dist/scheduler/service.d.ts +65 -0
  167. package/dist/scheduler/service.d.ts.map +1 -0
  168. package/dist/scheduler/service.js +188 -0
  169. package/dist/scheduler/service.js.map +1 -0
  170. package/dist/security/consent-executor.d.ts +48 -0
  171. package/dist/security/consent-executor.d.ts.map +1 -0
  172. package/dist/security/consent-executor.js +158 -0
  173. package/dist/security/consent-executor.js.map +1 -0
  174. package/dist/security/consent-manager.d.ts +105 -0
  175. package/dist/security/consent-manager.d.ts.map +1 -0
  176. package/dist/security/consent-manager.js +227 -0
  177. package/dist/security/consent-manager.js.map +1 -0
  178. package/dist/security/contracts.d.ts +31 -0
  179. package/dist/security/contracts.d.ts.map +1 -0
  180. package/dist/security/contracts.js +2 -0
  181. package/dist/security/contracts.js.map +1 -0
  182. package/dist/security/http-auth.d.ts +10 -0
  183. package/dist/security/http-auth.d.ts.map +1 -0
  184. package/dist/security/http-auth.js +48 -0
  185. package/dist/security/http-auth.js.map +1 -0
  186. package/dist/security/index.d.ts +10 -0
  187. package/dist/security/index.d.ts.map +1 -0
  188. package/dist/security/index.js +9 -0
  189. package/dist/security/index.js.map +1 -0
  190. package/dist/security/path-guard.d.ts +40 -0
  191. package/dist/security/path-guard.d.ts.map +1 -0
  192. package/dist/security/path-guard.js +125 -0
  193. package/dist/security/path-guard.js.map +1 -0
  194. package/dist/security/sandbox-manager.d.ts +43 -0
  195. package/dist/security/sandbox-manager.d.ts.map +1 -0
  196. package/dist/security/sandbox-manager.js +110 -0
  197. package/dist/security/sandbox-manager.js.map +1 -0
  198. package/dist/security/ssrf-guard.d.ts +11 -0
  199. package/dist/security/ssrf-guard.d.ts.map +1 -0
  200. package/dist/security/ssrf-guard.js +59 -0
  201. package/dist/security/ssrf-guard.js.map +1 -0
  202. package/dist/security/tool-permissions.d.ts +61 -0
  203. package/dist/security/tool-permissions.d.ts.map +1 -0
  204. package/dist/security/tool-permissions.js +105 -0
  205. package/dist/security/tool-permissions.js.map +1 -0
  206. package/dist/security/tool-profiles.d.ts +23 -0
  207. package/dist/security/tool-profiles.d.ts.map +1 -0
  208. package/dist/security/tool-profiles.js +106 -0
  209. package/dist/security/tool-profiles.js.map +1 -0
  210. package/dist/security/trust-engine.d.ts +61 -0
  211. package/dist/security/trust-engine.d.ts.map +1 -0
  212. package/dist/security/trust-engine.js +192 -0
  213. package/dist/security/trust-engine.js.map +1 -0
  214. package/dist/server.d.ts +54 -0
  215. package/dist/server.d.ts.map +1 -0
  216. package/dist/server.js +188 -0
  217. package/dist/server.js.map +1 -0
  218. package/dist/services/audit.d.ts +60 -0
  219. package/dist/services/audit.d.ts.map +1 -0
  220. package/dist/services/audit.js +58 -0
  221. package/dist/services/audit.js.map +1 -0
  222. package/dist/services/device-registry.d.ts +15 -0
  223. package/dist/services/device-registry.d.ts.map +1 -0
  224. package/dist/services/device-registry.js +32 -0
  225. package/dist/services/device-registry.js.map +1 -0
  226. package/dist/services/git.d.ts +168 -0
  227. package/dist/services/git.d.ts.map +1 -0
  228. package/dist/services/git.js +957 -0
  229. package/dist/services/git.js.map +1 -0
  230. package/dist/services/repositories.d.ts +32 -0
  231. package/dist/services/repositories.d.ts.map +1 -0
  232. package/dist/services/repositories.js +70 -0
  233. package/dist/services/repositories.js.map +1 -0
  234. package/dist/services/session-state.d.ts +20 -0
  235. package/dist/services/session-state.d.ts.map +1 -0
  236. package/dist/services/session-state.js +89 -0
  237. package/dist/services/session-state.js.map +1 -0
  238. package/dist/services/sessions.d.ts +68 -0
  239. package/dist/services/sessions.d.ts.map +1 -0
  240. package/dist/services/sessions.js +136 -0
  241. package/dist/services/sessions.js.map +1 -0
  242. package/dist/services/thread-title.d.ts +23 -0
  243. package/dist/services/thread-title.d.ts.map +1 -0
  244. package/dist/services/thread-title.js +141 -0
  245. package/dist/services/thread-title.js.map +1 -0
  246. package/dist/services/threads.d.ts +64 -0
  247. package/dist/services/threads.d.ts.map +1 -0
  248. package/dist/services/threads.js +202 -0
  249. package/dist/services/threads.js.map +1 -0
  250. package/dist/services/users.d.ts +39 -0
  251. package/dist/services/users.d.ts.map +1 -0
  252. package/dist/services/users.js +203 -0
  253. package/dist/services/users.js.map +1 -0
  254. package/dist/sessions/contracts.d.ts +14 -0
  255. package/dist/sessions/contracts.d.ts.map +1 -0
  256. package/dist/sessions/contracts.js +2 -0
  257. package/dist/sessions/contracts.js.map +1 -0
  258. package/dist/surfaces/browser.d.ts +65 -0
  259. package/dist/surfaces/browser.d.ts.map +1 -0
  260. package/dist/surfaces/browser.js +615 -0
  261. package/dist/surfaces/browser.js.map +1 -0
  262. package/dist/surfaces/contracts.d.ts +34 -0
  263. package/dist/surfaces/contracts.d.ts.map +1 -0
  264. package/dist/surfaces/contracts.js +2 -0
  265. package/dist/surfaces/contracts.js.map +1 -0
  266. package/dist/surfaces/filesystem.d.ts +76 -0
  267. package/dist/surfaces/filesystem.d.ts.map +1 -0
  268. package/dist/surfaces/filesystem.js +245 -0
  269. package/dist/surfaces/filesystem.js.map +1 -0
  270. package/dist/surfaces/index.d.ts +6 -0
  271. package/dist/surfaces/index.d.ts.map +1 -0
  272. package/dist/surfaces/index.js +5 -0
  273. package/dist/surfaces/index.js.map +1 -0
  274. package/dist/surfaces/registry.d.ts +24 -0
  275. package/dist/surfaces/registry.d.ts.map +1 -0
  276. package/dist/surfaces/registry.js +59 -0
  277. package/dist/surfaces/registry.js.map +1 -0
  278. package/dist/surfaces/terminal.d.ts +76 -0
  279. package/dist/surfaces/terminal.d.ts.map +1 -0
  280. package/dist/surfaces/terminal.js +271 -0
  281. package/dist/surfaces/terminal.js.map +1 -0
  282. package/dist/tools/agent-loop.d.ts +302 -0
  283. package/dist/tools/agent-loop.d.ts.map +1 -0
  284. package/dist/tools/agent-loop.js +918 -0
  285. package/dist/tools/agent-loop.js.map +1 -0
  286. package/dist/tools/agent-tools.d.ts +39 -0
  287. package/dist/tools/agent-tools.d.ts.map +1 -0
  288. package/dist/tools/agent-tools.js +263 -0
  289. package/dist/tools/agent-tools.js.map +1 -0
  290. package/dist/tools/browser-tools.d.ts +38 -0
  291. package/dist/tools/browser-tools.d.ts.map +1 -0
  292. package/dist/tools/browser-tools.js +725 -0
  293. package/dist/tools/browser-tools.js.map +1 -0
  294. package/dist/tools/chat-modes.d.ts +75 -0
  295. package/dist/tools/chat-modes.d.ts.map +1 -0
  296. package/dist/tools/chat-modes.js +228 -0
  297. package/dist/tools/chat-modes.js.map +1 -0
  298. package/dist/tools/contracts.d.ts +69 -0
  299. package/dist/tools/contracts.d.ts.map +1 -0
  300. package/dist/tools/contracts.js +2 -0
  301. package/dist/tools/contracts.js.map +1 -0
  302. package/dist/tools/core/agent.d.ts +31 -0
  303. package/dist/tools/core/agent.d.ts.map +1 -0
  304. package/dist/tools/core/agent.js +65 -0
  305. package/dist/tools/core/agent.js.map +1 -0
  306. package/dist/tools/core/edit.d.ts +30 -0
  307. package/dist/tools/core/edit.d.ts.map +1 -0
  308. package/dist/tools/core/edit.js +109 -0
  309. package/dist/tools/core/edit.js.map +1 -0
  310. package/dist/tools/core/execute.d.ts +36 -0
  311. package/dist/tools/core/execute.d.ts.map +1 -0
  312. package/dist/tools/core/execute.js +81 -0
  313. package/dist/tools/core/execute.js.map +1 -0
  314. package/dist/tools/core/get-fs.d.ts +32 -0
  315. package/dist/tools/core/get-fs.d.ts.map +1 -0
  316. package/dist/tools/core/get-fs.js +143 -0
  317. package/dist/tools/core/get-fs.js.map +1 -0
  318. package/dist/tools/core/index.d.ts +26 -0
  319. package/dist/tools/core/index.d.ts.map +1 -0
  320. package/dist/tools/core/index.js +26 -0
  321. package/dist/tools/core/index.js.map +1 -0
  322. package/dist/tools/core/jait.d.ts +60 -0
  323. package/dist/tools/core/jait.d.ts.map +1 -0
  324. package/dist/tools/core/jait.js +256 -0
  325. package/dist/tools/core/jait.js.map +1 -0
  326. package/dist/tools/core/read.d.ts +26 -0
  327. package/dist/tools/core/read.d.ts.map +1 -0
  328. package/dist/tools/core/read.js +118 -0
  329. package/dist/tools/core/read.js.map +1 -0
  330. package/dist/tools/core/search.d.ts +34 -0
  331. package/dist/tools/core/search.d.ts.map +1 -0
  332. package/dist/tools/core/search.js +187 -0
  333. package/dist/tools/core/search.js.map +1 -0
  334. package/dist/tools/core/todo.d.ts +38 -0
  335. package/dist/tools/core/todo.d.ts.map +1 -0
  336. package/dist/tools/core/todo.js +116 -0
  337. package/dist/tools/core/todo.js.map +1 -0
  338. package/dist/tools/core/web.d.ts +34 -0
  339. package/dist/tools/core/web.d.ts.map +1 -0
  340. package/dist/tools/core/web.js +120 -0
  341. package/dist/tools/core/web.js.map +1 -0
  342. package/dist/tools/cron-tools.d.ts +7 -0
  343. package/dist/tools/cron-tools.d.ts.map +1 -0
  344. package/dist/tools/cron-tools.js +116 -0
  345. package/dist/tools/cron-tools.js.map +1 -0
  346. package/dist/tools/file-tools.d.ts +32 -0
  347. package/dist/tools/file-tools.d.ts.map +1 -0
  348. package/dist/tools/file-tools.js +178 -0
  349. package/dist/tools/file-tools.js.map +1 -0
  350. package/dist/tools/gateway-tools.d.ts +15 -0
  351. package/dist/tools/gateway-tools.d.ts.map +1 -0
  352. package/dist/tools/gateway-tools.js +39 -0
  353. package/dist/tools/gateway-tools.js.map +1 -0
  354. package/dist/tools/index.d.ts +57 -0
  355. package/dist/tools/index.d.ts.map +1 -0
  356. package/dist/tools/index.js +170 -0
  357. package/dist/tools/index.js.map +1 -0
  358. package/dist/tools/mcp-bridge.d.ts +111 -0
  359. package/dist/tools/mcp-bridge.d.ts.map +1 -0
  360. package/dist/tools/mcp-bridge.js +166 -0
  361. package/dist/tools/mcp-bridge.js.map +1 -0
  362. package/dist/tools/memory-tools.d.ts +19 -0
  363. package/dist/tools/memory-tools.d.ts.map +1 -0
  364. package/dist/tools/memory-tools.js +78 -0
  365. package/dist/tools/memory-tools.js.map +1 -0
  366. package/dist/tools/meta-tools.d.ts +25 -0
  367. package/dist/tools/meta-tools.d.ts.map +1 -0
  368. package/dist/tools/meta-tools.js +125 -0
  369. package/dist/tools/meta-tools.js.map +1 -0
  370. package/dist/tools/network-tools.d.ts +21 -0
  371. package/dist/tools/network-tools.d.ts.map +1 -0
  372. package/dist/tools/network-tools.js +189 -0
  373. package/dist/tools/network-tools.js.map +1 -0
  374. package/dist/tools/os-tools.d.ts +18 -0
  375. package/dist/tools/os-tools.d.ts.map +1 -0
  376. package/dist/tools/os-tools.js +210 -0
  377. package/dist/tools/os-tools.js.map +1 -0
  378. package/dist/tools/prompts/claude-prompt.d.ts +8 -0
  379. package/dist/tools/prompts/claude-prompt.d.ts.map +1 -0
  380. package/dist/tools/prompts/claude-prompt.js +228 -0
  381. package/dist/tools/prompts/claude-prompt.js.map +1 -0
  382. package/dist/tools/prompts/default-openai-prompt.d.ts +8 -0
  383. package/dist/tools/prompts/default-openai-prompt.d.ts.map +1 -0
  384. package/dist/tools/prompts/default-openai-prompt.js +67 -0
  385. package/dist/tools/prompts/default-openai-prompt.js.map +1 -0
  386. package/dist/tools/prompts/default-prompt.d.ts +7 -0
  387. package/dist/tools/prompts/default-prompt.d.ts.map +1 -0
  388. package/dist/tools/prompts/default-prompt.js +50 -0
  389. package/dist/tools/prompts/default-prompt.js.map +1 -0
  390. package/dist/tools/prompts/gemini-prompt.d.ts +8 -0
  391. package/dist/tools/prompts/gemini-prompt.d.ts.map +1 -0
  392. package/dist/tools/prompts/gemini-prompt.js +118 -0
  393. package/dist/tools/prompts/gemini-prompt.js.map +1 -0
  394. package/dist/tools/prompts/gpt5-codex-prompt.d.ts +8 -0
  395. package/dist/tools/prompts/gpt5-codex-prompt.d.ts.map +1 -0
  396. package/dist/tools/prompts/gpt5-codex-prompt.js +72 -0
  397. package/dist/tools/prompts/gpt5-codex-prompt.js.map +1 -0
  398. package/dist/tools/prompts/gpt5-prompt.d.ts +8 -0
  399. package/dist/tools/prompts/gpt5-prompt.d.ts.map +1 -0
  400. package/dist/tools/prompts/gpt5-prompt.js +177 -0
  401. package/dist/tools/prompts/gpt5-prompt.js.map +1 -0
  402. package/dist/tools/prompts/gpt51-prompt.d.ts +8 -0
  403. package/dist/tools/prompts/gpt51-prompt.d.ts.map +1 -0
  404. package/dist/tools/prompts/gpt51-prompt.js +178 -0
  405. package/dist/tools/prompts/gpt51-prompt.js.map +1 -0
  406. package/dist/tools/prompts/gpt52-prompt.d.ts +8 -0
  407. package/dist/tools/prompts/gpt52-prompt.d.ts.map +1 -0
  408. package/dist/tools/prompts/gpt52-prompt.js +198 -0
  409. package/dist/tools/prompts/gpt52-prompt.js.map +1 -0
  410. package/dist/tools/prompts/index.d.ts +22 -0
  411. package/dist/tools/prompts/index.d.ts.map +1 -0
  412. package/dist/tools/prompts/index.js +23 -0
  413. package/dist/tools/prompts/index.js.map +1 -0
  414. package/dist/tools/prompts/prompt-registry.d.ts +44 -0
  415. package/dist/tools/prompts/prompt-registry.d.ts.map +1 -0
  416. package/dist/tools/prompts/prompt-registry.js +60 -0
  417. package/dist/tools/prompts/prompt-registry.js.map +1 -0
  418. package/dist/tools/prompts/shared-sections.d.ts +28 -0
  419. package/dist/tools/prompts/shared-sections.d.ts.map +1 -0
  420. package/dist/tools/prompts/shared-sections.js +111 -0
  421. package/dist/tools/prompts/shared-sections.js.map +1 -0
  422. package/dist/tools/prompts/xai-prompt.d.ts +8 -0
  423. package/dist/tools/prompts/xai-prompt.d.ts.map +1 -0
  424. package/dist/tools/prompts/xai-prompt.js +68 -0
  425. package/dist/tools/prompts/xai-prompt.js.map +1 -0
  426. package/dist/tools/redeploy-tools.d.ts +30 -0
  427. package/dist/tools/redeploy-tools.d.ts.map +1 -0
  428. package/dist/tools/redeploy-tools.js +191 -0
  429. package/dist/tools/redeploy-tools.js.map +1 -0
  430. package/dist/tools/registry.d.ts +51 -0
  431. package/dist/tools/registry.d.ts.map +1 -0
  432. package/dist/tools/registry.js +148 -0
  433. package/dist/tools/registry.js.map +1 -0
  434. package/dist/tools/screen-share-tools.d.ts +31 -0
  435. package/dist/tools/screen-share-tools.d.ts.map +1 -0
  436. package/dist/tools/screen-share-tools.js +183 -0
  437. package/dist/tools/screen-share-tools.js.map +1 -0
  438. package/dist/tools/surface-tools.d.ts +23 -0
  439. package/dist/tools/surface-tools.d.ts.map +1 -0
  440. package/dist/tools/surface-tools.js +99 -0
  441. package/dist/tools/surface-tools.js.map +1 -0
  442. package/dist/tools/terminal-tools.d.ts +37 -0
  443. package/dist/tools/terminal-tools.d.ts.map +1 -0
  444. package/dist/tools/terminal-tools.js +448 -0
  445. package/dist/tools/terminal-tools.js.map +1 -0
  446. package/dist/tools/thread-tools.d.ts +61 -0
  447. package/dist/tools/thread-tools.d.ts.map +1 -0
  448. package/dist/tools/thread-tools.js +484 -0
  449. package/dist/tools/thread-tools.js.map +1 -0
  450. package/dist/tools/token-estimator.d.ts +55 -0
  451. package/dist/tools/token-estimator.d.ts.map +1 -0
  452. package/dist/tools/token-estimator.js +82 -0
  453. package/dist/tools/token-estimator.js.map +1 -0
  454. package/dist/tools/tool-names.d.ts +64 -0
  455. package/dist/tools/tool-names.d.ts.map +1 -0
  456. package/dist/tools/tool-names.js +76 -0
  457. package/dist/tools/tool-names.js.map +1 -0
  458. package/dist/tools/validate.d.ts +27 -0
  459. package/dist/tools/validate.d.ts.map +1 -0
  460. package/dist/tools/validate.js +99 -0
  461. package/dist/tools/validate.js.map +1 -0
  462. package/dist/tools/voice-tools.d.ts +8 -0
  463. package/dist/tools/voice-tools.d.ts.map +1 -0
  464. package/dist/tools/voice-tools.js +32 -0
  465. package/dist/tools/voice-tools.js.map +1 -0
  466. package/dist/voice/service.d.ts +42 -0
  467. package/dist/voice/service.d.ts.map +1 -0
  468. package/dist/voice/service.js +75 -0
  469. package/dist/voice/service.js.map +1 -0
  470. package/dist/ws.d.ts +90 -0
  471. package/dist/ws.d.ts.map +1 -0
  472. package/dist/ws.js +562 -0
  473. package/dist/ws.js.map +1 -0
  474. package/package.json +61 -0
@@ -0,0 +1,110 @@
1
+ import { spawn } from "node:child_process";
2
+ import { mkdirSync } from "node:fs";
3
+ import { resolve } from "node:path";
4
+ export class SandboxManager {
5
+ runProcess;
6
+ constructor(runProcess = runDockerProcess) {
7
+ this.runProcess = runProcess;
8
+ }
9
+ async runCommand(options) {
10
+ const workspaceRoot = resolve(options.workspaceRoot);
11
+ const mountMode = options.mountMode ?? "read-write";
12
+ const containerName = `jait-sb-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 8)}`;
13
+ const timeoutMs = Math.max(1000, options.timeoutMs);
14
+ const mountArgs = this.buildMountArgs(workspaceRoot, mountMode);
15
+ const networkArgs = options.networkEnabled === false ? ["--network", "none"] : [];
16
+ const memoryArgs = options.memoryLimitMb ? ["--memory", `${options.memoryLimitMb}m`] : [];
17
+ const cpuArgs = options.cpuLimit ? ["--cpus", options.cpuLimit] : [];
18
+ const cmd = [
19
+ "docker",
20
+ "run",
21
+ "--rm",
22
+ "--name",
23
+ containerName,
24
+ ...networkArgs,
25
+ ...memoryArgs,
26
+ ...cpuArgs,
27
+ ...mountArgs,
28
+ "-w",
29
+ "/workspace",
30
+ "jait/sandbox:latest",
31
+ "bash",
32
+ "-lc",
33
+ options.command,
34
+ ];
35
+ const result = await this.runProcess(cmd, timeoutMs);
36
+ return {
37
+ ok: !result.timedOut && result.exitCode === 0,
38
+ output: result.output,
39
+ exitCode: result.exitCode,
40
+ timedOut: result.timedOut,
41
+ containerName,
42
+ };
43
+ }
44
+ async startBrowserSandbox(options) {
45
+ const workspaceRoot = resolve(options.workspaceRoot);
46
+ const novncPort = options.novncPort ?? 6080;
47
+ const vncPort = options.vncPort ?? 5900;
48
+ const mountArgs = this.buildMountArgs(workspaceRoot, options.mountMode ?? "read-only");
49
+ const containerName = `jait-browser-sb-${Date.now().toString(36)}`;
50
+ const cmd = [
51
+ "docker",
52
+ "run",
53
+ "-d",
54
+ "--rm",
55
+ "--name",
56
+ containerName,
57
+ "--network",
58
+ "none",
59
+ ...mountArgs,
60
+ "-p",
61
+ `${novncPort}:6080`,
62
+ "-p",
63
+ `${vncPort}:5900`,
64
+ "jait/sandbox-browser:latest",
65
+ ];
66
+ const result = await this.runProcess(cmd, 30_000);
67
+ if (result.exitCode !== 0) {
68
+ throw new Error(`Failed to start sandbox browser: ${result.output}`);
69
+ }
70
+ return {
71
+ containerName,
72
+ novncUrl: `http://127.0.0.1:${novncPort}/vnc.html`,
73
+ vncPort,
74
+ novncPort,
75
+ };
76
+ }
77
+ buildMountArgs(workspaceRoot, mode) {
78
+ mkdirSync(workspaceRoot, { recursive: true });
79
+ if (mode === "none")
80
+ return [];
81
+ const readOnly = mode === "read-only" ? ":ro" : "";
82
+ return ["-v", `${workspaceRoot}:/workspace${readOnly}`];
83
+ }
84
+ }
85
+ async function runDockerProcess(cmd, timeoutMs) {
86
+ return new Promise((resolveResult) => {
87
+ const child = spawn(cmd[0], cmd.slice(1), { stdio: ["ignore", "pipe", "pipe"] });
88
+ let output = "";
89
+ let timedOut = false;
90
+ const timer = setTimeout(() => {
91
+ timedOut = true;
92
+ child.kill("SIGKILL");
93
+ }, timeoutMs);
94
+ child.stdout.on("data", (chunk) => {
95
+ output += chunk.toString();
96
+ });
97
+ child.stderr.on("data", (chunk) => {
98
+ output += chunk.toString();
99
+ });
100
+ child.on("error", (err) => {
101
+ clearTimeout(timer);
102
+ resolveResult({ output: `${output}\n${err.message}`.trim(), exitCode: null, timedOut });
103
+ });
104
+ child.on("close", (code) => {
105
+ clearTimeout(timer);
106
+ resolveResult({ output: output.trim() || "(no output)", exitCode: code, timedOut });
107
+ });
108
+ });
109
+ }
110
+ //# sourceMappingURL=sandbox-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sandbox-manager.js","sourceRoot":"","sources":["../../src/security/sandbox-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export interface SSRFGuardOptions {
2
+ allowPrivateHosts?: boolean;
3
+ allowedHosts?: string[];
4
+ }
5
+ export declare class SSRFGuard {
6
+ private readonly options;
7
+ constructor(options?: SSRFGuardOptions);
8
+ validate(rawUrl: string): URL;
9
+ private isPrivateHost;
10
+ }
11
+ //# sourceMappingURL=ssrf-guard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ssrf-guard.d.ts","sourceRoot":"","sources":["../../src/security/ssrf-guard.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,gBAAgB;IAC/B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,qBAAa,SAAS;IACR,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,GAAE,gBAAqB;IAE3D,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG;IA2B7B,OAAO,CAAC,aAAa;CAsBtB"}
@@ -0,0 +1,59 @@
1
+ import { isIP } from "node:net";
2
+ export class SSRFGuard {
3
+ options;
4
+ constructor(options = {}) {
5
+ this.options = options;
6
+ }
7
+ validate(rawUrl) {
8
+ let parsed;
9
+ try {
10
+ parsed = new URL(rawUrl);
11
+ }
12
+ catch {
13
+ throw new Error(`Invalid URL: ${rawUrl}`);
14
+ }
15
+ if (!["http:", "https:"].includes(parsed.protocol)) {
16
+ throw new Error(`Blocked protocol: ${parsed.protocol}`);
17
+ }
18
+ const host = parsed.hostname.toLowerCase();
19
+ if (this.options.allowedHosts?.length) {
20
+ const allowed = this.options.allowedHosts.some((candidate) => candidate.toLowerCase() === host);
21
+ if (!allowed) {
22
+ throw new Error(`Host not allowlisted: ${host}`);
23
+ }
24
+ }
25
+ if (!this.options.allowPrivateHosts && this.isPrivateHost(host)) {
26
+ throw new Error(`Blocked private host: ${host}`);
27
+ }
28
+ return parsed;
29
+ }
30
+ isPrivateHost(host) {
31
+ if (host === "localhost" || host.endsWith(".localhost") || host === "0.0.0.0")
32
+ return true;
33
+ const ipVersion = isIP(host);
34
+ if (ipVersion === 4) {
35
+ const [a = 0, b = 0] = host.split(".").map((v) => Number(v));
36
+ if (a === 10)
37
+ return true;
38
+ if (a === 127)
39
+ return true;
40
+ if (a === 169 && b === 254)
41
+ return true;
42
+ if (a === 172 && b >= 16 && b <= 31)
43
+ return true;
44
+ if (a === 192 && b === 168)
45
+ return true;
46
+ return false;
47
+ }
48
+ if (ipVersion === 6) {
49
+ if (host === "::1")
50
+ return true;
51
+ if (host.startsWith("fc") || host.startsWith("fd"))
52
+ return true;
53
+ if (host.startsWith("fe80"))
54
+ return true;
55
+ }
56
+ return false;
57
+ }
58
+ }
59
+ //# sourceMappingURL=ssrf-guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ssrf-guard.js","sourceRoot":"","sources":["../../src/security/ssrf-guard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAOhC,MAAM,OAAO,SAAS;IACS;IAA7B,YAA6B,UAA4B,EAAE;QAA9B,YAAO,GAAP,OAAO,CAAuB;IAAG,CAAC;IAE/D,QAAQ,CAAC,MAAc;QACrB,IAAI,MAAW,CAAC;QAChB,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;QAC3B,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,gBAAgB,MAAM,EAAE,CAAC,CAAC;QAC5C,CAAC;QAED,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnD,MAAM,IAAI,KAAK,CAAC,qBAAqB,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC1D,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;QAC3C,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;YACtC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,CAAC;YAChG,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,IAAI,KAAK,CAAC,yBAAyB,IAAI,EAAE,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;YAChE,MAAM,IAAI,KAAK,CAAC,yBAAyB,IAAI,EAAE,CAAC,CAAC;QACnD,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,aAAa,CAAC,IAAY;QAChC,IAAI,IAAI,KAAK,WAAW,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,IAAI,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;QAE3F,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,SAAS,KAAK,CAAC,EAAE,CAAC;YACpB,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7D,IAAI,CAAC,KAAK,EAAE;gBAAE,OAAO,IAAI,CAAC;YAC1B,IAAI,CAAC,KAAK,GAAG;gBAAE,OAAO,IAAI,CAAC;YAC3B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG;gBAAE,OAAO,IAAI,CAAC;YACxC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;gBAAE,OAAO,IAAI,CAAC;YACjD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG;gBAAE,OAAO,IAAI,CAAC;YACxC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,SAAS,KAAK,CAAC,EAAE,CAAC;YACpB,IAAI,IAAI,KAAK,KAAK;gBAAE,OAAO,IAAI,CAAC;YAChC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;gBAAE,OAAO,IAAI,CAAC;YAChE,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;gBAAE,OAAO,IAAI,CAAC;QAC3C,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;CACF"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Tool Permission Model — Sprint 4.2
3
+ *
4
+ * Per-tool configuration: consent level, allowed/denied commands & paths.
5
+ * The consent level determines when user approval is required:
6
+ *
7
+ * "none" — always auto-execute (safe reads)
8
+ * "once" — ask once, then auto for the session
9
+ * "always" — always ask
10
+ * "dangerous" — always ask + show risk warning
11
+ */
12
+ export type ConsentLevel = "none" | "once" | "always" | "dangerous";
13
+ export interface ToolPermission {
14
+ /** Tool name (e.g. "terminal.run") */
15
+ toolName: string;
16
+ /** Consent level for this tool */
17
+ consentLevel: ConsentLevel;
18
+ /** Risk assessment shown in consent UI */
19
+ risk: "low" | "medium" | "high";
20
+ /** Allowed shell commands (glob patterns). Empty = all allowed. */
21
+ allowedCommands?: string[];
22
+ /** Denied shell commands (glob patterns). Takes precedence over allowed. */
23
+ deniedCommands?: string[];
24
+ /** Allowed file paths (glob patterns). Empty = all within workspace. */
25
+ allowedPaths?: string[];
26
+ /** Denied file paths (glob patterns). Takes precedence over allowed. */
27
+ deniedPaths?: string[];
28
+ /** Human-readable description of what this tool does */
29
+ description?: string;
30
+ }
31
+ export interface ToolPermissionConfig {
32
+ permissions: Map<string, ToolPermission>;
33
+ /** Session-scoped set of tool names that have been approved via "once" */
34
+ sessionApprovals: Set<string>;
35
+ }
36
+ /**
37
+ * Check if a tool execution requires consent based on its permission config,
38
+ * the current trust level, and whether it's been session-approved.
39
+ */
40
+ export declare function requiresConsent(permission: ToolPermission | undefined, trustLevel: number, sessionApprovals: Set<string>): boolean;
41
+ /**
42
+ * Check if a command is allowed by the permission's allow/deny lists.
43
+ * Returns { allowed: boolean, reason?: string }.
44
+ */
45
+ export declare function isCommandAllowed(command: string, permission: ToolPermission | undefined): {
46
+ allowed: boolean;
47
+ reason?: string;
48
+ };
49
+ /**
50
+ * Check if a file path is allowed by the permission's allow/deny lists.
51
+ */
52
+ export declare function isPathAllowedByPermission(filePath: string, permission: ToolPermission | undefined): {
53
+ allowed: boolean;
54
+ reason?: string;
55
+ };
56
+ /**
57
+ * Simple glob matching: supports *, ?, and ** for path segments.
58
+ * Not a full glob implementation — covers the common cases.
59
+ */
60
+ export declare function matchGlob(value: string, pattern: string): boolean;
61
+ //# sourceMappingURL=tool-permissions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-permissions.d.ts","sourceRoot":"","sources":["../../src/security/tool-permissions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,WAAW,CAAC;AAEpE,MAAM,WAAW,cAAc;IAC7B,sCAAsC;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,kCAAkC;IAClC,YAAY,EAAE,YAAY,CAAC;IAC3B,0CAA0C;IAC1C,IAAI,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IAChC,mEAAmE;IACnE,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,4EAA4E;IAC5E,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,wEAAwE;IACxE,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,wEAAwE;IACxE,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,wDAAwD;IACxD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACzC,0EAA0E;IAC1E,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC/B;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,UAAU,EAAE,cAAc,GAAG,SAAS,EACtC,UAAU,EAAE,MAAM,EAClB,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,GAC5B,OAAO,CA6BT;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,cAAc,GAAG,SAAS,GACrC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAqBvC;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,cAAc,GAAG,SAAS,GACrC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAmBvC;AAID;;;GAGG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAWjE"}
@@ -0,0 +1,105 @@
1
+ /**
2
+ * Tool Permission Model — Sprint 4.2
3
+ *
4
+ * Per-tool configuration: consent level, allowed/denied commands & paths.
5
+ * The consent level determines when user approval is required:
6
+ *
7
+ * "none" — always auto-execute (safe reads)
8
+ * "once" — ask once, then auto for the session
9
+ * "always" — always ask
10
+ * "dangerous" — always ask + show risk warning
11
+ */
12
+ /**
13
+ * Check if a tool execution requires consent based on its permission config,
14
+ * the current trust level, and whether it's been session-approved.
15
+ */
16
+ export function requiresConsent(permission, trustLevel, sessionApprovals) {
17
+ if (!permission) {
18
+ // Unknown tools always require consent
19
+ return true;
20
+ }
21
+ switch (permission.consentLevel) {
22
+ case "none":
23
+ return false;
24
+ case "once":
25
+ // Already approved in this session?
26
+ if (sessionApprovals.has(permission.toolName))
27
+ return false;
28
+ // Trust level 2+ auto-approves "once" tools
29
+ if (trustLevel >= 2)
30
+ return false;
31
+ return true;
32
+ case "always":
33
+ // Trust level 3 (autopilot) can bypass "always"
34
+ if (trustLevel >= 3)
35
+ return false;
36
+ return true;
37
+ case "dangerous":
38
+ // Always requires consent, regardless of trust level
39
+ return true;
40
+ default:
41
+ return true;
42
+ }
43
+ }
44
+ /**
45
+ * Check if a command is allowed by the permission's allow/deny lists.
46
+ * Returns { allowed: boolean, reason?: string }.
47
+ */
48
+ export function isCommandAllowed(command, permission) {
49
+ if (!permission)
50
+ return { allowed: true };
51
+ // Check denied commands first (takes precedence)
52
+ if (permission.deniedCommands?.length) {
53
+ for (const pattern of permission.deniedCommands) {
54
+ if (matchGlob(command, pattern)) {
55
+ return { allowed: false, reason: `Command matches denied pattern: ${pattern}` };
56
+ }
57
+ }
58
+ }
59
+ // If allowed commands are specified, command must match at least one
60
+ if (permission.allowedCommands?.length) {
61
+ const matches = permission.allowedCommands.some((p) => matchGlob(command, p));
62
+ if (!matches) {
63
+ return { allowed: false, reason: "Command not in allowed list" };
64
+ }
65
+ }
66
+ return { allowed: true };
67
+ }
68
+ /**
69
+ * Check if a file path is allowed by the permission's allow/deny lists.
70
+ */
71
+ export function isPathAllowedByPermission(filePath, permission) {
72
+ if (!permission)
73
+ return { allowed: true };
74
+ if (permission.deniedPaths?.length) {
75
+ for (const pattern of permission.deniedPaths) {
76
+ if (matchGlob(filePath, pattern)) {
77
+ return { allowed: false, reason: `Path matches denied pattern: ${pattern}` };
78
+ }
79
+ }
80
+ }
81
+ if (permission.allowedPaths?.length) {
82
+ const matches = permission.allowedPaths.some((p) => matchGlob(filePath, p));
83
+ if (!matches) {
84
+ return { allowed: false, reason: "Path not in allowed list" };
85
+ }
86
+ }
87
+ return { allowed: true };
88
+ }
89
+ // ── Simple glob matcher ──────────────────────────────────────────────
90
+ /**
91
+ * Simple glob matching: supports *, ?, and ** for path segments.
92
+ * Not a full glob implementation — covers the common cases.
93
+ */
94
+ export function matchGlob(value, pattern) {
95
+ // Escape regex special chars except * and ?
96
+ const regexStr = pattern
97
+ .replace(/[.+^${}()|[\]\\]/g, "\\$&")
98
+ .replace(/\*\*/g, "<<GLOBSTAR>>")
99
+ .replace(/\*/g, "[^/]*")
100
+ .replace(/\?/g, ".")
101
+ .replace(/<<GLOBSTAR>>/g, ".*");
102
+ const regex = new RegExp(`^${regexStr}$`, "i");
103
+ return regex.test(value);
104
+ }
105
+ //# sourceMappingURL=tool-permissions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-permissions.js","sourceRoot":"","sources":["../../src/security/tool-permissions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Tool Profiles — Sprint 4.3
3
+ *
4
+ * Pre-configured permission sets for common use cases:
5
+ * - minimal: read-only, no terminal, no installs
6
+ * - coding: read/write/patch files, run commands with consent
7
+ * - full: everything enabled, dangerous ops require consent
8
+ */
9
+ import type { ToolPermission } from "./tool-permissions.js";
10
+ export type ProfileName = "minimal" | "coding" | "full";
11
+ /**
12
+ * Get a permission map for the given profile name.
13
+ */
14
+ export declare function getProfile(name: ProfileName): Map<string, ToolPermission>;
15
+ /**
16
+ * List all available profile names.
17
+ */
18
+ export declare function listProfiles(): ProfileName[];
19
+ /**
20
+ * Create a custom permission map by extending a base profile with overrides.
21
+ */
22
+ export declare function extendProfile(baseName: ProfileName, overrides: ToolPermission[]): Map<string, ToolPermission>;
23
+ //# sourceMappingURL=tool-profiles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-profiles.d.ts","sourceRoot":"","sources":["../../src/security/tool-profiles.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAgB,MAAM,uBAAuB,CAAC;AAE1E,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;AAuFxD;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,WAAW,GAAG,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAMzE;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,WAAW,EAAE,CAE5C;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,WAAW,EACrB,SAAS,EAAE,cAAc,EAAE,GAC1B,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAM7B"}
@@ -0,0 +1,106 @@
1
+ /**
2
+ * Tool Profiles — Sprint 4.3
3
+ *
4
+ * Pre-configured permission sets for common use cases:
5
+ * - minimal: read-only, no terminal, no installs
6
+ * - coding: read/write/patch files, run commands with consent
7
+ * - full: everything enabled, dangerous ops require consent
8
+ */
9
+ /** Build a permission entry shorthand */
10
+ function perm(toolName, consentLevel, risk, extra = {}) {
11
+ return { toolName, consentLevel, risk, ...extra };
12
+ }
13
+ // ── Minimal Profile ──────────────────────────────────────────────────
14
+ // Read-only. No terminal, no installs, no writes.
15
+ const MINIMAL = [
16
+ perm("file.read", "none", "low"),
17
+ perm("file.list", "none", "low"),
18
+ perm("file.stat", "none", "low"),
19
+ perm("file.write", "dangerous", "high"),
20
+ perm("file.patch", "dangerous", "high"),
21
+ perm("terminal.run", "dangerous", "high"),
22
+ perm("terminal.stream", "dangerous", "high"),
23
+ perm("os.query", "once", "low"),
24
+ perm("os.install", "dangerous", "high"),
25
+ perm("surfaces.list", "none", "low"),
26
+ perm("surfaces.start", "always", "medium"),
27
+ perm("surfaces.stop", "always", "medium"),
28
+ perm("network.scan", "none", "low"),
29
+ perm("thread.control", "dangerous", "high"),
30
+ perm("gateway.redeploy", "always", "high"),
31
+ ];
32
+ // ── Coding Profile ───────────────────────────────────────────────────
33
+ // File read/write/patch auto, terminal requires consent.
34
+ const CODING = [
35
+ perm("file.read", "none", "low"),
36
+ perm("file.list", "none", "low"),
37
+ perm("file.stat", "none", "low"),
38
+ perm("file.write", "once", "medium"),
39
+ perm("file.patch", "once", "medium"),
40
+ perm("terminal.run", "once", "medium", {
41
+ deniedCommands: ["rm -rf *", "del /s /q *", "format *", "mkfs*", "dd if=*"],
42
+ }),
43
+ perm("terminal.stream", "once", "medium"),
44
+ perm("os.query", "none", "low"),
45
+ perm("os.install", "always", "high"),
46
+ perm("surfaces.list", "none", "low"),
47
+ perm("surfaces.start", "once", "low"),
48
+ perm("surfaces.stop", "once", "low"),
49
+ perm("network.scan", "none", "low"),
50
+ perm("thread.control", "once", "high"),
51
+ perm("gateway.redeploy", "always", "high"),
52
+ ];
53
+ // ── Full Profile ─────────────────────────────────────────────────────
54
+ // Maximum capability. Dangerous ops still require consent.
55
+ const FULL = [
56
+ perm("file.read", "none", "low"),
57
+ perm("file.list", "none", "low"),
58
+ perm("file.stat", "none", "low"),
59
+ perm("file.write", "none", "low"),
60
+ perm("file.patch", "none", "low"),
61
+ perm("terminal.run", "once", "medium", {
62
+ deniedCommands: ["rm -rf /", "format C:", "mkfs*", "dd if=/dev/zero*"],
63
+ }),
64
+ perm("terminal.stream", "once", "medium"),
65
+ perm("os.query", "none", "low"),
66
+ perm("os.install", "once", "high"),
67
+ perm("surfaces.list", "none", "low"),
68
+ perm("surfaces.start", "none", "low"),
69
+ perm("surfaces.stop", "none", "low"),
70
+ perm("network.scan", "none", "low"),
71
+ perm("thread.control", "once", "high"),
72
+ perm("gateway.redeploy", "always", "high"),
73
+ ];
74
+ // ── Profile Map ──────────────────────────────────────────────────────
75
+ const PROFILES = {
76
+ minimal: MINIMAL,
77
+ coding: CODING,
78
+ full: FULL,
79
+ };
80
+ /**
81
+ * Get a permission map for the given profile name.
82
+ */
83
+ export function getProfile(name) {
84
+ const perms = PROFILES[name];
85
+ if (!perms) {
86
+ throw new Error(`Unknown profile: ${name}`);
87
+ }
88
+ return new Map(perms.map((p) => [p.toolName, p]));
89
+ }
90
+ /**
91
+ * List all available profile names.
92
+ */
93
+ export function listProfiles() {
94
+ return Object.keys(PROFILES);
95
+ }
96
+ /**
97
+ * Create a custom permission map by extending a base profile with overrides.
98
+ */
99
+ export function extendProfile(baseName, overrides) {
100
+ const base = getProfile(baseName);
101
+ for (const override of overrides) {
102
+ base.set(override.toolName, override);
103
+ }
104
+ return base;
105
+ }
106
+ //# sourceMappingURL=tool-profiles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-profiles.js","sourceRoot":"","sources":["../../src/security/tool-profiles.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Trust Level Engine — Sprint 4.4
3
+ *
4
+ * Tracks per-action-type trust progression Level 0→3:
5
+ *
6
+ * Level 0 — Observer: everything requires consent
7
+ * Level 1 — Assisted: low-risk ops auto-execute
8
+ * Level 2 — Trusted: "once" consent ops auto-execute after first approval
9
+ * Level 3 — Autopilot: "always" consent ops also auto-execute
10
+ *
11
+ * Trust increases after consecutive successful approved actions.
12
+ * Trust decreases (revert) when actions are rolled back or fail dangerously.
13
+ *
14
+ * Thresholds:
15
+ * Level 0 → 1: 3 approved actions
16
+ * Level 1 → 2: 10 approved actions (cumulative)
17
+ * Level 2 → 3: 25 approved actions (cumulative)
18
+ *
19
+ * Any revert drops one level and resets the revert counter.
20
+ */
21
+ import type { JaitDB } from "../db/connection.js";
22
+ import type { TrustLevel } from "./contracts.js";
23
+ export interface TrustState {
24
+ actionType: string;
25
+ approvedCount: number;
26
+ revertedCount: number;
27
+ currentLevel: TrustLevel;
28
+ }
29
+ export declare class TrustEngine {
30
+ private readonly db?;
31
+ private cache;
32
+ constructor(db?: JaitDB | undefined);
33
+ /**
34
+ * Get the current trust level for an action type.
35
+ */
36
+ getLevel(actionType: string): TrustLevel;
37
+ /**
38
+ * Get the full trust state for an action type.
39
+ */
40
+ getState(actionType: string): TrustState;
41
+ /**
42
+ * Record a successful approved action. May increase trust level.
43
+ * Returns the new trust state.
44
+ */
45
+ recordApproval(actionType: string): TrustState;
46
+ /**
47
+ * Record a revert / dangerous failure. Drops one level.
48
+ * Returns the new trust state.
49
+ */
50
+ recordRevert(actionType: string): TrustState;
51
+ /**
52
+ * Reset trust for an action type back to Level 0.
53
+ */
54
+ reset(actionType: string): TrustState;
55
+ /**
56
+ * Get all tracked trust states.
57
+ */
58
+ listAll(): TrustState[];
59
+ private persist;
60
+ }
61
+ //# sourceMappingURL=trust-engine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trust-engine.d.ts","sourceRoot":"","sources":["../../src/security/trust-engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAGlD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAajD,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,UAAU,CAAC;CAC1B;AAID,qBAAa,WAAW;IAGV,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;IAFhC,OAAO,CAAC,KAAK,CAAiC;gBAEjB,EAAE,CAAC,EAAE,MAAM,YAAA;IAExC;;OAEG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,UAAU;IAIxC;;OAEG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,UAAU;IAoCxC;;;OAGG;IACH,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,UAAU;IAc9C;;;OAGG;IACH,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,UAAU;IAa5C;;OAEG;IACH,KAAK,CAAC,UAAU,EAAE,MAAM,GAAG,UAAU;IAYrC;;OAEG;IACH,OAAO,IAAI,UAAU,EAAE;IAcvB,OAAO,CAAC,OAAO;CAmChB"}