@jinion/core 0.3.0 → 0.5.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 (415) hide show
  1. package/dist/agent/agent.d.ts +5 -1
  2. package/dist/agent/agent.d.ts.map +1 -1
  3. package/dist/agent/agent.js +3 -2
  4. package/dist/agent/agent.js.map +1 -1
  5. package/dist/agent/claude/approvals.d.ts +2 -1
  6. package/dist/agent/claude/approvals.d.ts.map +1 -1
  7. package/dist/agent/claude/approvals.js +2 -2
  8. package/dist/agent/claude/approvals.js.map +1 -1
  9. package/dist/agent/claude/backend.d.ts +4 -0
  10. package/dist/agent/claude/backend.d.ts.map +1 -1
  11. package/dist/agent/claude/backend.js +1 -1
  12. package/dist/agent/claude/backend.js.map +1 -1
  13. package/dist/agent/claude/events.js +1 -1
  14. package/dist/agent/claude/events.js.map +1 -1
  15. package/dist/agent/claude/guard.d.ts.map +1 -1
  16. package/dist/agent/claude/guard.js +2 -1
  17. package/dist/agent/claude/guard.js.map +1 -1
  18. package/dist/agent/claude/jinion-tools.d.ts +9 -1
  19. package/dist/agent/claude/jinion-tools.d.ts.map +1 -1
  20. package/dist/agent/claude/jinion-tools.js +14 -2
  21. package/dist/agent/claude/jinion-tools.js.map +1 -1
  22. package/dist/agent/claude/mcp.d.ts.map +1 -1
  23. package/dist/agent/claude/mcp.js +21 -1
  24. package/dist/agent/claude/mcp.js.map +1 -1
  25. package/dist/agent/claude/options.d.ts +9 -1
  26. package/dist/agent/claude/options.d.ts.map +1 -1
  27. package/dist/agent/claude/options.js +7 -3
  28. package/dist/agent/claude/options.js.map +1 -1
  29. package/dist/agent/claude/paths.d.ts +0 -3
  30. package/dist/agent/claude/paths.d.ts.map +1 -1
  31. package/dist/agent/claude/paths.js +1 -7
  32. package/dist/agent/claude/paths.js.map +1 -1
  33. package/dist/agent/claude/permissions.js +1 -1
  34. package/dist/agent/claude/permissions.js.map +1 -1
  35. package/dist/agent/claude/policy.d.ts +1 -1
  36. package/dist/agent/claude/policy.d.ts.map +1 -1
  37. package/dist/agent/claude/policy.js +1 -0
  38. package/dist/agent/claude/policy.js.map +1 -1
  39. package/dist/agent/claude/prompt.d.ts +2 -1
  40. package/dist/agent/claude/prompt.d.ts.map +1 -1
  41. package/dist/agent/claude/prompt.js +10 -5
  42. package/dist/agent/claude/prompt.js.map +1 -1
  43. package/dist/agent/claude/review.d.ts +4 -1
  44. package/dist/agent/claude/review.d.ts.map +1 -1
  45. package/dist/agent/claude/review.js +5 -2
  46. package/dist/agent/claude/review.js.map +1 -1
  47. package/dist/agent/claude/session.d.ts +8 -1
  48. package/dist/agent/claude/session.d.ts.map +1 -1
  49. package/dist/agent/claude/session.js +7 -1
  50. package/dist/agent/claude/session.js.map +1 -1
  51. package/dist/agent/claude/tool-calls.d.ts.map +1 -1
  52. package/dist/agent/claude/tool-calls.js +11 -2
  53. package/dist/agent/claude/tool-calls.js.map +1 -1
  54. package/dist/agent/codex/approvals.d.ts +1 -1
  55. package/dist/agent/codex/approvals.d.ts.map +1 -1
  56. package/dist/agent/codex/approvals.js +1 -1
  57. package/dist/agent/codex/approvals.js.map +1 -1
  58. package/dist/agent/codex/backend.d.ts +4 -0
  59. package/dist/agent/codex/backend.d.ts.map +1 -1
  60. package/dist/agent/codex/backend.js +1 -1
  61. package/dist/agent/codex/backend.js.map +1 -1
  62. package/dist/agent/codex/events.d.ts.map +1 -1
  63. package/dist/agent/codex/events.js +15 -1
  64. package/dist/agent/codex/events.js.map +1 -1
  65. package/dist/agent/codex/jinion-tools.d.ts +38 -4
  66. package/dist/agent/codex/jinion-tools.d.ts.map +1 -1
  67. package/dist/agent/codex/jinion-tools.js +57 -10
  68. package/dist/agent/codex/jinion-tools.js.map +1 -1
  69. package/dist/agent/codex/mcp.d.ts.map +1 -1
  70. package/dist/agent/codex/mcp.js +4 -0
  71. package/dist/agent/codex/mcp.js.map +1 -1
  72. package/dist/agent/codex/modes.d.ts +2 -2
  73. package/dist/agent/codex/modes.d.ts.map +1 -1
  74. package/dist/agent/codex/modes.js +4 -3
  75. package/dist/agent/codex/modes.js.map +1 -1
  76. package/dist/agent/codex/rewind.js +1 -47
  77. package/dist/agent/codex/rewind.js.map +1 -1
  78. package/dist/agent/codex/session.d.ts +10 -3
  79. package/dist/agent/codex/session.d.ts.map +1 -1
  80. package/dist/agent/codex/session.js +21 -7
  81. package/dist/agent/codex/session.js.map +1 -1
  82. package/dist/agent/demo/mcp.d.ts +2 -0
  83. package/dist/agent/demo/mcp.d.ts.map +1 -1
  84. package/dist/agent/demo/mcp.js +14 -0
  85. package/dist/agent/demo/mcp.js.map +1 -1
  86. package/dist/agent/demo/script.d.ts +8 -2
  87. package/dist/agent/demo/script.d.ts.map +1 -1
  88. package/dist/agent/demo/tasks.d.ts +4 -1
  89. package/dist/agent/demo/tasks.d.ts.map +1 -1
  90. package/dist/agent/events.d.ts +4 -0
  91. package/dist/agent/events.d.ts.map +1 -1
  92. package/dist/agent/events.js +2 -0
  93. package/dist/agent/events.js.map +1 -1
  94. package/dist/agent/mcp.d.ts +5 -0
  95. package/dist/agent/mcp.d.ts.map +1 -1
  96. package/dist/agent/mcp.js +2 -0
  97. package/dist/agent/mcp.js.map +1 -1
  98. package/dist/agent/modes.d.ts +15 -1
  99. package/dist/agent/modes.d.ts.map +1 -1
  100. package/dist/agent/modes.js +16 -1
  101. package/dist/agent/modes.js.map +1 -1
  102. package/dist/agent/patches.d.ts +5 -0
  103. package/dist/agent/patches.d.ts.map +1 -1
  104. package/dist/agent/patches.js +49 -0
  105. package/dist/agent/patches.js.map +1 -1
  106. package/dist/agent/review-tools.d.ts +15 -0
  107. package/dist/agent/review-tools.d.ts.map +1 -0
  108. package/dist/agent/review-tools.js +13 -0
  109. package/dist/agent/review-tools.js.map +1 -0
  110. package/dist/agent/review.d.ts +18 -6
  111. package/dist/agent/review.d.ts.map +1 -1
  112. package/dist/agent/review.js +52 -17
  113. package/dist/agent/review.js.map +1 -1
  114. package/dist/api/client.d.ts +19 -5
  115. package/dist/api/client.d.ts.map +1 -1
  116. package/dist/api/client.js +14 -3
  117. package/dist/api/client.js.map +1 -1
  118. package/dist/api/connection.d.ts +7 -2
  119. package/dist/api/connection.d.ts.map +1 -1
  120. package/dist/api/connection.js +6 -0
  121. package/dist/api/connection.js.map +1 -1
  122. package/dist/api/fields.d.ts +9 -7
  123. package/dist/api/fields.d.ts.map +1 -1
  124. package/dist/api/fields.js +3 -2
  125. package/dist/api/fields.js.map +1 -1
  126. package/dist/api/json-schema.d.ts +604 -95
  127. package/dist/api/json-schema.d.ts.map +1 -1
  128. package/dist/api/json-schema.js +2 -1
  129. package/dist/api/json-schema.js.map +1 -1
  130. package/dist/api/methods/accounts.d.ts.map +1 -1
  131. package/dist/api/methods/accounts.js +1 -2
  132. package/dist/api/methods/accounts.js.map +1 -1
  133. package/dist/api/methods/app.d.ts.map +1 -1
  134. package/dist/api/methods/app.js +9 -5
  135. package/dist/api/methods/app.js.map +1 -1
  136. package/dist/api/methods/files.d.ts +3 -1
  137. package/dist/api/methods/files.d.ts.map +1 -1
  138. package/dist/api/methods/files.js +75 -2
  139. package/dist/api/methods/files.js.map +1 -1
  140. package/dist/api/methods/git.d.ts.map +1 -1
  141. package/dist/api/methods/git.js +54 -6
  142. package/dist/api/methods/git.js.map +1 -1
  143. package/dist/api/methods/lsp.d.ts +7 -0
  144. package/dist/api/methods/lsp.d.ts.map +1 -0
  145. package/dist/api/methods/lsp.js +68 -0
  146. package/dist/api/methods/lsp.js.map +1 -0
  147. package/dist/api/methods/preview.d.ts +4 -1
  148. package/dist/api/methods/preview.d.ts.map +1 -1
  149. package/dist/api/methods/preview.js +19 -3
  150. package/dist/api/methods/preview.js.map +1 -1
  151. package/dist/api/methods/terminals.d.ts.map +1 -1
  152. package/dist/api/methods/terminals.js +7 -1
  153. package/dist/api/methods/terminals.js.map +1 -1
  154. package/dist/api/protocol.d.ts +774 -13
  155. package/dist/api/protocol.d.ts.map +1 -1
  156. package/dist/api/protocol.js +126 -8
  157. package/dist/api/protocol.js.map +1 -1
  158. package/dist/api/schemas.d.ts +15 -2
  159. package/dist/api/schemas.d.ts.map +1 -1
  160. package/dist/api/schemas.js +4 -0
  161. package/dist/api/schemas.js.map +1 -1
  162. package/dist/api/screen.d.ts +2 -0
  163. package/dist/api/screen.d.ts.map +1 -1
  164. package/dist/api/screen.js +3 -0
  165. package/dist/api/screen.js.map +1 -1
  166. package/dist/api/server.d.ts +2 -0
  167. package/dist/api/server.d.ts.map +1 -1
  168. package/dist/api/server.js +13 -0
  169. package/dist/api/server.js.map +1 -1
  170. package/dist/commands/agent.js +3 -3
  171. package/dist/commands/agent.js.map +1 -1
  172. package/dist/commands/builtin.d.ts.map +1 -1
  173. package/dist/commands/builtin.js +2 -0
  174. package/dist/commands/builtin.js.map +1 -1
  175. package/dist/commands/conversation.d.ts.map +1 -1
  176. package/dist/commands/conversation.js +2 -0
  177. package/dist/commands/conversation.js.map +1 -1
  178. package/dist/commands/feedback.d.ts.map +1 -1
  179. package/dist/commands/feedback.js +1 -0
  180. package/dist/commands/feedback.js.map +1 -1
  181. package/dist/commands/notifications.d.ts.map +1 -1
  182. package/dist/commands/notifications.js +5 -3
  183. package/dist/commands/notifications.js.map +1 -1
  184. package/dist/commands/registry.d.ts +3 -0
  185. package/dist/commands/registry.d.ts.map +1 -1
  186. package/dist/commands/registry.js +14 -0
  187. package/dist/commands/registry.js.map +1 -1
  188. package/dist/commands/skill.d.ts +5 -0
  189. package/dist/commands/skill.d.ts.map +1 -0
  190. package/dist/commands/skill.js +30 -0
  191. package/dist/commands/skill.js.map +1 -0
  192. package/dist/commands/views.d.ts.map +1 -1
  193. package/dist/commands/views.js +5 -1
  194. package/dist/commands/views.js.map +1 -1
  195. package/dist/controllers/accounts.d.ts +5 -2
  196. package/dist/controllers/accounts.d.ts.map +1 -1
  197. package/dist/controllers/accounts.js +11 -8
  198. package/dist/controllers/accounts.js.map +1 -1
  199. package/dist/controllers/context.d.ts +2 -0
  200. package/dist/controllers/context.d.ts.map +1 -1
  201. package/dist/controllers/context.js.map +1 -1
  202. package/dist/controllers/feedback.d.ts +1 -1
  203. package/dist/controllers/feedback.d.ts.map +1 -1
  204. package/dist/controllers/feedback.js +4 -1
  205. package/dist/controllers/feedback.js.map +1 -1
  206. package/dist/controllers/input.d.ts.map +1 -1
  207. package/dist/controllers/input.js +2 -0
  208. package/dist/controllers/input.js.map +1 -1
  209. package/dist/controllers/jinion.d.ts +7 -0
  210. package/dist/controllers/jinion.d.ts.map +1 -1
  211. package/dist/controllers/jinion.js +7 -0
  212. package/dist/controllers/jinion.js.map +1 -1
  213. package/dist/controllers/mcp.d.ts +7 -2
  214. package/dist/controllers/mcp.d.ts.map +1 -1
  215. package/dist/controllers/mcp.js +23 -7
  216. package/dist/controllers/mcp.js.map +1 -1
  217. package/dist/controllers/mode.d.ts +8 -4
  218. package/dist/controllers/mode.d.ts.map +1 -1
  219. package/dist/controllers/mode.js +30 -4
  220. package/dist/controllers/mode.js.map +1 -1
  221. package/dist/controllers/session.d.ts.map +1 -1
  222. package/dist/controllers/session.js +5 -1
  223. package/dist/controllers/session.js.map +1 -1
  224. package/dist/controllers/turns.d.ts +1 -0
  225. package/dist/controllers/turns.d.ts.map +1 -1
  226. package/dist/controllers/turns.js +9 -2
  227. package/dist/controllers/turns.js.map +1 -1
  228. package/dist/conversation/activity.d.ts +5 -0
  229. package/dist/conversation/activity.d.ts.map +1 -0
  230. package/dist/conversation/activity.js +41 -0
  231. package/dist/conversation/activity.js.map +1 -0
  232. package/dist/conversation/apply-event.d.ts.map +1 -1
  233. package/dist/conversation/apply-event.js +2 -1
  234. package/dist/conversation/apply-event.js.map +1 -1
  235. package/dist/conversation/dialogs.d.ts +1 -0
  236. package/dist/conversation/dialogs.d.ts.map +1 -1
  237. package/dist/conversation/edits.d.ts +5 -0
  238. package/dist/conversation/edits.d.ts.map +1 -1
  239. package/dist/conversation/edits.js +10 -0
  240. package/dist/conversation/edits.js.map +1 -1
  241. package/dist/conversation/reducer.d.ts +12 -0
  242. package/dist/conversation/reducer.d.ts.map +1 -1
  243. package/dist/design/guides.d.ts +78 -5
  244. package/dist/design/guides.d.ts.map +1 -1
  245. package/dist/design/guides.js +78 -5
  246. package/dist/design/guides.js.map +1 -1
  247. package/dist/design/prompt.d.ts +1 -1
  248. package/dist/design/prompt.d.ts.map +1 -1
  249. package/dist/design/prompt.js +2 -2
  250. package/dist/design/prompt.js.map +1 -1
  251. package/dist/design/tools.d.ts +2 -0
  252. package/dist/design/tools.d.ts.map +1 -1
  253. package/dist/design/tools.js +6 -2
  254. package/dist/design/tools.js.map +1 -1
  255. package/dist/directions/directions.d.ts +42 -0
  256. package/dist/directions/directions.d.ts.map +1 -0
  257. package/dist/directions/directions.js +120 -0
  258. package/dist/directions/directions.js.map +1 -0
  259. package/dist/directions/store.d.ts +34 -0
  260. package/dist/directions/store.d.ts.map +1 -0
  261. package/dist/directions/store.js +61 -0
  262. package/dist/directions/store.js.map +1 -0
  263. package/dist/directions/tools.d.ts +29 -0
  264. package/dist/directions/tools.d.ts.map +1 -0
  265. package/dist/directions/tools.js +57 -0
  266. package/dist/directions/tools.js.map +1 -0
  267. package/dist/directions/viewer.d.ts +6 -0
  268. package/dist/directions/viewer.d.ts.map +1 -0
  269. package/dist/directions/viewer.js +266 -0
  270. package/dist/directions/viewer.js.map +1 -0
  271. package/dist/files/names.d.ts +6 -0
  272. package/dist/files/names.d.ts.map +1 -0
  273. package/dist/files/names.js +18 -0
  274. package/dist/files/names.js.map +1 -0
  275. package/dist/files/operations.d.ts +54 -0
  276. package/dist/files/operations.d.ts.map +1 -0
  277. package/dist/files/operations.js +173 -0
  278. package/dist/files/operations.js.map +1 -0
  279. package/dist/files/search.d.ts +11 -0
  280. package/dist/files/search.d.ts.map +1 -0
  281. package/dist/files/search.js +112 -0
  282. package/dist/files/search.js.map +1 -0
  283. package/dist/files/trash.d.ts +11 -0
  284. package/dist/files/trash.d.ts.map +1 -0
  285. package/dist/files/trash.js +64 -0
  286. package/dist/files/trash.js.map +1 -0
  287. package/dist/files/types.d.ts +112 -0
  288. package/dist/files/types.d.ts.map +1 -0
  289. package/dist/files/types.js +47 -0
  290. package/dist/files/types.js.map +1 -0
  291. package/dist/files/watch.d.ts +26 -0
  292. package/dist/files/watch.d.ts.map +1 -0
  293. package/dist/files/watch.js +107 -0
  294. package/dist/files/watch.js.map +1 -0
  295. package/dist/git/blame.d.ts +10 -0
  296. package/dist/git/blame.d.ts.map +1 -0
  297. package/dist/git/blame.js +91 -0
  298. package/dist/git/blame.js.map +1 -0
  299. package/dist/git/repos.d.ts +5 -0
  300. package/dist/git/repos.d.ts.map +1 -1
  301. package/dist/git/repos.js +13 -0
  302. package/dist/git/repos.js.map +1 -1
  303. package/dist/git/staging.d.ts +10 -1
  304. package/dist/git/staging.d.ts.map +1 -1
  305. package/dist/git/staging.js +21 -0
  306. package/dist/git/staging.js.map +1 -1
  307. package/dist/git/types.d.ts +48 -0
  308. package/dist/git/types.d.ts.map +1 -1
  309. package/dist/git/types.js +25 -0
  310. package/dist/git/types.js.map +1 -1
  311. package/dist/host.d.ts +2 -0
  312. package/dist/host.d.ts.map +1 -1
  313. package/dist/host.js +8 -1
  314. package/dist/host.js.map +1 -1
  315. package/dist/lib/glob.d.ts +6 -0
  316. package/dist/lib/glob.d.ts.map +1 -0
  317. package/dist/lib/glob.js +49 -0
  318. package/dist/lib/glob.js.map +1 -0
  319. package/dist/lib/paths.d.ts +3 -0
  320. package/dist/lib/paths.d.ts.map +1 -1
  321. package/dist/lib/paths.js +9 -1
  322. package/dist/lib/paths.js.map +1 -1
  323. package/dist/look/tools.d.ts +7 -1
  324. package/dist/look/tools.d.ts.map +1 -1
  325. package/dist/look/tools.js +19 -4
  326. package/dist/look/tools.js.map +1 -1
  327. package/dist/lsp/code-intelligence.d.ts +87 -0
  328. package/dist/lsp/code-intelligence.d.ts.map +1 -0
  329. package/dist/lsp/code-intelligence.js +343 -0
  330. package/dist/lsp/code-intelligence.js.map +1 -0
  331. package/dist/lsp/edits.d.ts +4 -0
  332. package/dist/lsp/edits.d.ts.map +1 -0
  333. package/dist/lsp/edits.js +14 -0
  334. package/dist/lsp/edits.js.map +1 -0
  335. package/dist/lsp/project-check.d.ts +8 -0
  336. package/dist/lsp/project-check.d.ts.map +1 -0
  337. package/dist/lsp/project-check.js +71 -0
  338. package/dist/lsp/project-check.js.map +1 -0
  339. package/dist/lsp/results.d.ts +95 -0
  340. package/dist/lsp/results.d.ts.map +1 -0
  341. package/dist/lsp/results.js +116 -0
  342. package/dist/lsp/results.js.map +1 -0
  343. package/dist/lsp/server.d.ts +22 -0
  344. package/dist/lsp/server.d.ts.map +1 -0
  345. package/dist/lsp/server.js +123 -0
  346. package/dist/lsp/server.js.map +1 -0
  347. package/dist/lsp/servers.d.ts +21 -0
  348. package/dist/lsp/servers.d.ts.map +1 -0
  349. package/dist/lsp/servers.js +57 -0
  350. package/dist/lsp/servers.js.map +1 -0
  351. package/dist/lsp/transport.d.ts +9 -0
  352. package/dist/lsp/transport.d.ts.map +1 -0
  353. package/dist/lsp/transport.js +64 -0
  354. package/dist/lsp/transport.js.map +1 -0
  355. package/dist/lsp/types.d.ts +262 -0
  356. package/dist/lsp/types.d.ts.map +1 -0
  357. package/dist/lsp/types.js +64 -0
  358. package/dist/lsp/types.js.map +1 -0
  359. package/dist/map/prompt.d.ts.map +1 -1
  360. package/dist/map/prompt.js +2 -1
  361. package/dist/map/prompt.js.map +1 -1
  362. package/dist/map/review.d.ts +29 -9
  363. package/dist/map/review.d.ts.map +1 -1
  364. package/dist/map/review.js +105 -25
  365. package/dist/map/review.js.map +1 -1
  366. package/dist/mcp/login.d.ts +2 -0
  367. package/dist/mcp/login.d.ts.map +1 -1
  368. package/dist/mcp/login.js +5 -0
  369. package/dist/mcp/login.js.map +1 -1
  370. package/dist/preview/pages.d.ts +17 -0
  371. package/dist/preview/pages.d.ts.map +1 -0
  372. package/dist/preview/pages.js +92 -0
  373. package/dist/preview/pages.js.map +1 -0
  374. package/dist/preview/previews.d.ts +22 -0
  375. package/dist/preview/previews.d.ts.map +1 -0
  376. package/dist/preview/previews.js +28 -0
  377. package/dist/preview/previews.js.map +1 -0
  378. package/dist/preview/prompt.d.ts +3 -0
  379. package/dist/preview/prompt.d.ts.map +1 -0
  380. package/dist/preview/prompt.js +5 -0
  381. package/dist/preview/prompt.js.map +1 -0
  382. package/dist/preview/tools.d.ts +21 -0
  383. package/dist/preview/tools.d.ts.map +1 -0
  384. package/dist/preview/tools.js +34 -0
  385. package/dist/preview/tools.js.map +1 -0
  386. package/dist/preview/types.d.ts +7 -0
  387. package/dist/preview/types.d.ts.map +1 -1
  388. package/dist/preview/types.js +2 -0
  389. package/dist/preview/types.js.map +1 -1
  390. package/dist/prompt/files.d.ts +4 -1
  391. package/dist/prompt/files.d.ts.map +1 -1
  392. package/dist/prompt/files.js +23 -8
  393. package/dist/prompt/files.js.map +1 -1
  394. package/dist/settings/user.d.ts +2 -0
  395. package/dist/settings/user.d.ts.map +1 -1
  396. package/dist/settings/user.js.map +1 -1
  397. package/dist/skills/tools.d.ts +26 -0
  398. package/dist/skills/tools.d.ts.map +1 -0
  399. package/dist/skills/tools.js +34 -0
  400. package/dist/skills/tools.js.map +1 -0
  401. package/dist/state/agent.d.ts +2 -2
  402. package/dist/state/session.d.ts +9 -5
  403. package/dist/state/session.d.ts.map +1 -1
  404. package/dist/state/session.js +1 -0
  405. package/dist/state/session.js.map +1 -1
  406. package/package.json +3 -1
  407. package/schema/api.json +3017 -45
  408. package/vendor/darwin-arm64/build.json +62 -0
  409. package/vendor/darwin-arm64/ffmpeg +0 -0
  410. package/vendor/darwin-arm64/ffprobe +0 -0
  411. package/vendor/darwin-arm64/licenses/README.md +13 -0
  412. package/vendor/darwin-arm64/licenses/ffmpeg-LGPL-2.1.txt +502 -0
  413. package/vendor/darwin-arm64/licenses/whisper.cpp-MIT.txt +21 -0
  414. package/vendor/darwin-arm64/voices.bin +0 -0
  415. package/vendor/darwin-arm64/whisper-cli +0 -0
package/dist/host.js CHANGED
@@ -11,11 +11,13 @@ import { inProcessTransports } from './api/transport.js';
11
11
  import { builtinCommands } from './commands/builtin.js';
12
12
  import { CommandRegistry } from './commands/registry.js';
13
13
  import { FileSessionStore, MemorySessionStore } from './conversation/store.js';
14
+ import { Directions } from './directions/directions.js';
14
15
  import { DebugLog } from './lib/debug.js';
15
16
  import { ProjectMap } from './map/map.js';
16
17
  import { McpConfig } from './mcp/config.js';
17
18
  import { McpLogins } from './mcp/login.js';
18
19
  import { MemoryStore } from './memory/store.js';
20
+ import { Previews } from './preview/previews.js';
19
21
  import { loadProjectSettings } from './settings/project.js';
20
22
  import { loadSettings } from './settings/user.js';
21
23
  import { Signals } from './signals/signals.js';
@@ -27,7 +29,9 @@ export async function coreOptions(flags) {
27
29
  const { mode } = loadProjectSettings(cwd);
28
30
  const memory = new MemoryStore(cwd);
29
31
  const map = demo ? undefined : new ProjectMap(cwd);
32
+ const directions = demo ? undefined : new Directions(cwd);
30
33
  const terminals = flags.terminals ? new Terminals() : undefined;
34
+ const previews = flags.preview ? new Previews() : undefined;
31
35
  const debug = flags.debug ? new DebugLog() : undefined;
32
36
  const settings = loadSettings();
33
37
  // Before the first prompt is built from it, so it holds what changed while Jinion wasn't running. Only so long: a
@@ -45,12 +49,14 @@ export async function coreOptions(flags) {
45
49
  terminals,
46
50
  map,
47
51
  describeMap,
52
+ directions,
53
+ previews,
48
54
  mcp: new McpConfig(cwd),
49
55
  logins: new McpLogins(),
50
56
  debug,
51
57
  syncSkills,
52
58
  }),
53
- new CodexBackend({ cwd, version, memory, terminals, map, describeMap, debug }),
59
+ new CodexBackend({ cwd, version, memory, terminals, map, describeMap, directions, previews, debug }),
54
60
  ];
55
61
  const backend = backends.find(({ name }) => name === settings.agent) ?? backends[0];
56
62
  // Flags win over the choice `/model` saved in an earlier run.
@@ -69,6 +75,7 @@ export async function coreOptions(flags) {
69
75
  memory,
70
76
  map,
71
77
  terminals,
78
+ previews,
72
79
  initial: flags.continue ? saved.list()[0] : undefined,
73
80
  onExit: (message) => farewells.push(message),
74
81
  signals: demo ? undefined : new Signals(flags.client, version),
package/dist/host.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"host.js","sourceRoot":"","sources":["../src/host.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"host.js","sourceRoot":"","sources":["../src/host.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Whether a path, with `/` between its folders, fits a glob: `*` and `?` within a name, `**` across folders, `[abc]` and
3
+ * `[!abc]`, `{a,b}` and `{1..3}`. A glob with no `/` fits the name in any folder; one with a `/` fits from the top.
4
+ */
5
+ export declare function matchesGlob(glob: string, path: string): boolean;
6
+ //# sourceMappingURL=glob.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"glob.d.ts","sourceRoot":"","sources":["../../src/lib/glob.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,WAKrD"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Whether a path, with `/` between its folders, fits a glob: `*` and `?` within a name, `**` across folders, `[abc]` and
3
+ * `[!abc]`, `{a,b}` and `{1..3}`. A glob with no `/` fits the name in any folder; one with a `/` fits from the top.
4
+ */
5
+ export function matchesGlob(glob, path) {
6
+ const anchored = glob.includes('/');
7
+ const pattern = patternOf(glob.replace(/^\//, ''));
8
+ return new RegExp(anchored ? `^${pattern}$` : `^(?:.*/)?${pattern}$`).test(path);
9
+ }
10
+ function patternOf(glob) {
11
+ let pattern = '';
12
+ for (let index = 0; index < glob.length; index++) {
13
+ const char = glob[index];
14
+ const close = char === '[' ? glob.indexOf(']', index) : char === '{' ? glob.indexOf('}', index) : -1;
15
+ if (char === '*' && glob[index + 1] === '*') {
16
+ pattern += '.*';
17
+ index++;
18
+ }
19
+ else if (char === '*')
20
+ pattern += '[^/]*';
21
+ else if (char === '?')
22
+ pattern += '[^/]';
23
+ else if (char === '\\' && index + 1 < glob.length)
24
+ pattern += literal(glob[++index]);
25
+ else if (close === -1)
26
+ pattern += literal(char);
27
+ else {
28
+ pattern += char === '[' ? classOf(glob.slice(index + 1, close)) : choicesOf(glob.slice(index + 1, close));
29
+ index = close;
30
+ }
31
+ }
32
+ return pattern;
33
+ }
34
+ function classOf(inner) {
35
+ return `[${inner.startsWith('!') ? `^${inner.slice(1)}` : inner}]`;
36
+ }
37
+ /** `{a,b}` as either, `{1..3}` as any whole number from one to the other. */
38
+ function choicesOf(inner) {
39
+ const range = /^(-?\d+)\.\.(-?\d+)$/.exec(inner);
40
+ if (range) {
41
+ const [from, to] = [Number(range[1]), Number(range[2])].sort((a, b) => a - b);
42
+ return to - from > 1000 ? '-?\\d+' : `(?:${Array.from({ length: to - from + 1 }, (_, step) => from + step).join('|')})`;
43
+ }
44
+ return inner.includes(',') ? `(?:${inner.split(',').map(patternOf).join('|')})` : `\\{${literal(inner)}\\}`;
45
+ }
46
+ function literal(text) {
47
+ return text.replace(/[.*+?^${}()|[\]\\/]/g, '\\$&');
48
+ }
49
+ //# sourceMappingURL=glob.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"glob.js","sourceRoot":"","sources":["../../src/lib/glob.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,8 @@
1
1
  export declare const jinionHome: () => string;
2
2
  export declare const projectSlug: (cwd: string) => string;
3
3
  export declare const projectDir: (cwd: string) => string;
4
+ /** `path` as `dir` names it, from `dir` itself as `''`; `undefined` outside it. Lexical: links aren't followed. */
5
+ export declare function within(path: string, dir: string): string | undefined;
6
+ export declare function inside(path: string, dir: string): boolean;
4
7
  export declare function tildify(path: string): string;
5
8
  //# sourceMappingURL=paths.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/lib/paths.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,UAAU,cAA8D,CAAC;AAEtF,eAAO,MAAM,WAAW,QAAS,MAAM,WAAsC,CAAC;AAE9E,eAAO,MAAM,UAAU,QAAS,MAAM,WAAqD,CAAC;AAE5F,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,UAInC"}
1
+ {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/lib/paths.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,UAAU,cAA8D,CAAC;AAEtF,eAAO,MAAM,WAAW,QAAS,MAAM,WAAsC,CAAC;AAE9E,eAAO,MAAM,UAAU,QAAS,MAAM,WAAqD,CAAC;AAE5F,mHAAmH;AACnH,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,sBAI/C;AAED,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,WAE/C;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,UAInC"}
package/dist/lib/paths.js CHANGED
@@ -1,8 +1,16 @@
1
1
  import { homedir } from 'node:os';
2
- import { join } from 'node:path';
2
+ import { isAbsolute, join, relative, resolve } from 'node:path';
3
3
  export const jinionHome = () => process.env.JINION_HOME ?? join(homedir(), '.jinion');
4
4
  export const projectSlug = (cwd) => cwd.replace(/[^a-zA-Z0-9]/g, '-');
5
5
  export const projectDir = (cwd) => join(jinionHome(), 'projects', projectSlug(cwd));
6
+ /** `path` as `dir` names it, from `dir` itself as `''`; `undefined` outside it. Lexical: links aren't followed. */
7
+ export function within(path, dir) {
8
+ const from = relative(dir, resolve(dir, path));
9
+ return from.startsWith('..') || isAbsolute(from) ? undefined : from;
10
+ }
11
+ export function inside(path, dir) {
12
+ return within(path, dir) !== undefined;
13
+ }
6
14
  export function tildify(path) {
7
15
  const home = homedir();
8
16
  return path === home || path.startsWith(`${home}/`) ? `~${path.slice(home.length)}` : path;
@@ -1 +1 @@
1
- {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/lib/paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,CAAC,MAAM,UAAU,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;AAEtF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;AAE9E,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,UAAU,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;AAE5F,MAAM,UAAU,OAAO,CAAC,IAAY;IAClC,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IAEvB,OAAO,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7F,CAAC"}
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/lib/paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEhE,MAAM,CAAC,MAAM,UAAU,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;AAEtF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;AAE9E,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,UAAU,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;AAE5F,mHAAmH;AACnH,MAAM,UAAU,MAAM,CAAC,IAAY,EAAE,GAAW;IAC9C,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;IAE/C,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;AACtE,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,IAAY,EAAE,GAAW;IAC9C,OAAO,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,SAAS,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,IAAY;IAClC,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IAEvB,OAAO,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7F,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { z } from 'zod';
2
2
  import type { ToolCall } from '../agent/tools.js';
3
+ import type { Previews } from '../preview/previews.js';
3
4
  import { captureDevice, capturePage, findBrowser, type Picture } from './capture.js';
4
5
  /** What a look gives back: what to tell the agent, and the picture when there is one. */
5
6
  export interface Seen {
@@ -18,8 +19,13 @@ export interface Eyes {
18
19
  capturePage: typeof capturePage;
19
20
  captureDevice: typeof captureDevice;
20
21
  }
22
+ export interface LookOptions {
23
+ /** The Preview of the app the user works in, which draws a page as they see it. */
24
+ previews?: Previews;
25
+ eyes?: Eyes;
26
+ }
21
27
  /** `cwd` is where the conversation works, its worktree or the project, which a file's path is read from. */
22
- export declare function lookTools(cwd: () => string, eyes?: Eyes): {
28
+ export declare function lookTools(cwd: () => string, { previews, eyes }?: LookOptions): {
23
29
  look: LookTool<{
24
30
  page: z.ZodOptional<z.ZodString>;
25
31
  device: z.ZodOptional<z.ZodEnum<{
@@ -1 +1 @@
1
- {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/look/tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAElD,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAW,KAAK,OAAO,EAAE,MAAM,cAAc,CAAC;AAE9F,yFAAyF;AACzF,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,kGAAkG;AAClG,MAAM,WAAW,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW;IAC/D,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,CAAC,CAAC;IACT,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACpD;AAED,gEAAgE;AAChE,MAAM,WAAW,IAAI;IACnB,WAAW,EAAE,OAAO,WAAW,CAAC;IAChC,WAAW,EAAE,OAAO,WAAW,CAAC;IAChC,aAAa,EAAE,OAAO,aAAa,CAAC;CACrC;AAOD,4GAA4G;AAC5G,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,MAAM,EAAE,IAAI,GAAE,IAAkD;IAEjG,IAAI;;;;;;;;;;;;;EAmCP;AAED,MAAM,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC;AAErD,MAAM,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC;AAEzC,eAAO,MAAM,YAAY,aAAmD,CAAC;AAE7E,+FAA+F;AAC/F,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,QAAQ,CAIjD"}
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/look/tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAElD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAW,KAAK,OAAO,EAAE,MAAM,cAAc,CAAC;AAE9F,yFAAyF;AACzF,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,kGAAkG;AAClG,MAAM,WAAW,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW;IAC/D,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,CAAC,CAAC;IACT,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACpD;AAED,gEAAgE;AAChE,MAAM,WAAW,IAAI;IACnB,WAAW,EAAE,OAAO,WAAW,CAAC;IAChC,WAAW,EAAE,OAAO,WAAW,CAAC;IAChC,aAAa,EAAE,OAAO,aAAa,CAAC;CACrC;AAED,MAAM,WAAW,WAAW;IAC1B,mFAAmF;IACnF,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,IAAI,CAAC,EAAE,IAAI,CAAC;CACb;AAOD,4GAA4G;AAC5G,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAkD,EAAE,GAAE,WAAgB;IAE3H,IAAI;;;;;;;;;;;;;EAqDP;AAED,MAAM,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC;AAErD,MAAM,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC;AAEzC,eAAO,MAAM,YAAY,aAAmD,CAAC;AAE7E,+FAA+F;AAC/F,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,QAAQ,CAIjD"}
@@ -5,10 +5,10 @@ const WIDTH = 1280;
5
5
  const HEIGHT = 800;
6
6
  const define = (tool) => tool;
7
7
  /** `cwd` is where the conversation works, its worktree or the project, which a file's path is read from. */
8
- export function lookTools(cwd, eyes = { findBrowser, capturePage, captureDevice }) {
8
+ export function lookTools(cwd, { previews, eyes = { findBrowser, capturePage, captureDevice } } = {}) {
9
9
  return {
10
10
  look: define({
11
- description: 'Takes a picture of what you made and shows it to you: a page, by its address on the dev server or as a file of the project, drawn by the browser on this machine without a window; or the screen of the booted iOS simulator or the running Android emulator. Use it after you built or changed interface, to check what a build can’t: alignment, spacing, overflow, each state, the narrow width and the dark scheme. It only looks; it clicks and types nothing, so bring a page to the state you want to see through its address.',
11
+ description: 'Takes a picture of what you made and shows it to you: a page, by its address on the dev server or as a file of the project, drawn by the browser on this machine without a window, or in the Preview beside the conversation where the app has one; or the screen of the booted iOS simulator or the running Android emulator. Use it after you built or changed interface, to check what a build can’t: alignment, spacing, overflow, each state, the narrow width and the dark scheme. It only looks; it clicks and types nothing, so bring a page to the state you want to see through its address.',
12
12
  input: {
13
13
  page: z.string().optional().describe('An address such as http://localhost:3000/settings, or the path of an HTML file in the project. Start the dev server first.'),
14
14
  device: z.enum(['ios', 'android']).optional().describe('Instead of a page: the booted iOS simulator, or the running Android emulator.'),
@@ -16,7 +16,7 @@ export function lookTools(cwd, eyes = { findBrowser, capturePage, captureDevice
16
16
  height: z.number().int().min(320).max(4000).optional().describe(`Of the window; ${HEIGHT} when left out. A taller one shows more of a long page.`),
17
17
  scheme: z.enum(['light', 'dark']).optional().describe('The color scheme the page is told the user prefers; light when left out.'),
18
18
  },
19
- run: async ({ page, device, width = WIDTH, height = HEIGHT, scheme }) => {
19
+ run: async ({ page, device, width, height, scheme }) => {
20
20
  try {
21
21
  if (device)
22
22
  return { text: `The screen of the ${device === 'ios' ? 'iOS simulator' : 'Android emulator'}.`, picture: await eyes.captureDevice(device) };
@@ -26,13 +26,28 @@ export function lookTools(cwd, eyes = { findBrowser, capturePage, captureDevice
26
26
  if (!url)
27
27
  return { text: `${page} is no address on the web and no file in the project, so there is nothing to draw.` };
28
28
  const browser = eyes.findBrowser();
29
+ // The Preview draws the page at its own size and in the app's scheme, so a size or scheme asked for goes to the browser.
30
+ const sized = width !== undefined || height !== undefined || scheme !== undefined;
31
+ const preview = !sized || !browser ? previews?.client : undefined;
32
+ const address = preview && (await previews.addressOf(page, cwd()));
33
+ if (preview && address) {
34
+ const { error } = await preview.open(address);
35
+ if (error)
36
+ return { text: `The Preview couldn’t load ${url}: ${error}. Tell the user you couldn’t look at it.` };
37
+ const drawn = await preview.capture();
38
+ if (drawn) {
39
+ const unset = sized ? ' The size and scheme asked for couldn’t be set there, since no browser of its own was found.' : '';
40
+ return { text: `${url} as the Preview beside the conversation shows it, which the user sees too.${unset}`, picture: { data: drawn.data, mediaType: drawn.mediaType } };
41
+ }
42
+ }
29
43
  if (!browser) {
30
44
  return {
31
45
  text: 'No Chrome, Chromium, Edge or Brave was found on this machine, so the page can’t be drawn here. Tell the user you couldn’t look at it, rather than implying it looks right.',
32
46
  };
33
47
  }
34
48
  const dark = scheme === 'dark';
35
- return { text: `${url} at ${width} by ${height}, in the ${dark ? 'dark' : 'light'} scheme.`, picture: await eyes.capturePage(browser, { url, width, height, dark }) };
49
+ const shot = { url, width: width ?? WIDTH, height: height ?? HEIGHT, dark };
50
+ return { text: `${url} at ${shot.width} by ${shot.height}, in the ${dark ? 'dark' : 'light'} scheme.`, picture: await eyes.capturePage(browser, shot) };
36
51
  }
37
52
  catch (error) {
38
53
  return { text: `The picture couldn’t be taken: ${errorMessage(error)}. Tell the user you couldn’t look at it.` };
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/look/tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/look/tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,87 @@
1
+ import type { CompletionItem, Completions, FileDiagnostics, FileEdits, Hover, Location, Position, ServerState, SignatureHelp, TextEdit } from './types.js';
2
+ /** A server of a folder that started, ended or couldn't start. */
3
+ export interface ServerChange extends ServerState {
4
+ folder: string;
5
+ }
6
+ /** A change in what is known of a file's errors, for the folder it is in. */
7
+ export interface DiagnosticsChange extends FileDiagnostics {
8
+ folder: string;
9
+ }
10
+ /**
11
+ * The language servers of every folder Jinion's sessions work in, started the first time a file of theirs is opened:
12
+ * what clients open goes to them as they type, and what they find in it comes back. Paths are the folder's own, as the
13
+ * files API names them.
14
+ */
15
+ export declare class CodeIntelligence {
16
+ private readonly servers;
17
+ private readonly documents;
18
+ /**
19
+ * What the servers found as files were typed, none included: the open files of a server that is asked, and every
20
+ * file a server that sends of itself spoke of. It wins over the last check of the project.
21
+ */
22
+ private readonly live;
23
+ /** What the last check of the whole project found, by folder and then by file. */
24
+ private readonly checked;
25
+ /** The folders whose whole project is checked, as one used in Code mode is, and where their check stands. */
26
+ private readonly checks;
27
+ private readonly listeners;
28
+ /** How each server stands, by folder and name, once it was first started. */
29
+ private readonly states;
30
+ private readonly serverListeners;
31
+ private readonly pulls;
32
+ private readonly idle;
33
+ /** The documents each server was told are open. */
34
+ private readonly opened;
35
+ /** Whether a server shipped with Jinion reads the file, so opening it is worth anything. */
36
+ knows(path: string): boolean;
37
+ /** How the server that reads the file stands; none for a file no server shipped with Jinion reads. */
38
+ serverFor(folder: string, path: string): ServerState | undefined;
39
+ /** Starts the file's server again, as after it failed, with the documents open in it. */
40
+ restart(folder: string, path: string): Promise<void>;
41
+ onServer(listener: (change: ServerChange) => void): () => undefined;
42
+ open(folder: string, path: string, text: string): Promise<void>;
43
+ change(folder: string, path: string, text: string): Promise<void>;
44
+ close(folder: string, path: string): Promise<void>;
45
+ hover(folder: string, path: string, position: Position): Promise<Hover | null>;
46
+ definition(folder: string, path: string, position: Position): Promise<Location[]>;
47
+ references(folder: string, path: string, position: Position): Promise<Location[]>;
48
+ completion(folder: string, path: string, position: Position, trigger?: string): Promise<Completions>;
49
+ /** The item with what the server leaves out of the list until asked, such as its documentation. */
50
+ completionDetail(folder: string, path: string, item: CompletionItem): Promise<CompletionItem>;
51
+ signatureHelp(folder: string, path: string, position: Position): Promise<SignatureHelp | null>;
52
+ /**
53
+ * Renames what is at the position everywhere the server finds it. Files nobody has open are changed on disk here; the
54
+ * edits to the ones open come back, for the editor holding each to make, as unsaved changes there.
55
+ */
56
+ rename(folder: string, path: string, position: Position, name: string): Promise<FileEdits[]>;
57
+ format(folder: string, path: string, options: {
58
+ tabSize: number;
59
+ insertSpaces: boolean;
60
+ }): Promise<TextEdit[]>;
61
+ /** Every error and warning known in the folder, by file; asking starts checking its whole project. */
62
+ problems(folder: string): FileDiagnostics[];
63
+ /** Checks the folder's whole project again soon, as after a save or a turn, when it is one being checked. */
64
+ recheck(folder: string, delay?: number): void;
65
+ onDiagnostics(listener: (change: DiagnosticsChange) => void): () => undefined;
66
+ closeAll(): Promise<void>;
67
+ private ask;
68
+ /** Tells the server of the document when it doesn't know it yet; true when it already did. */
69
+ private ensureOpen;
70
+ /** The document's server, started if it isn't; one that ended is started again, and given the documents open in it. */
71
+ private server;
72
+ private setState;
73
+ /** A server that answers `textDocument/diagnostic` sends no errors of itself, so they are asked for. */
74
+ private asksFor;
75
+ private pullLater;
76
+ private stopLater;
77
+ /** What a file shows: what a server found as it was typed, and otherwise the last check of the project. */
78
+ private shown;
79
+ /** `undefined` once nothing a server found holds for the file any more, as after it closes. */
80
+ private setLive;
81
+ private watch;
82
+ /** One check at a time per folder; one asked for while one runs follows it, with what changed meanwhile. */
83
+ private check;
84
+ /** Makes the change, then tells of each of the files whose errors look otherwise for it. */
85
+ private changing;
86
+ }
87
+ //# sourceMappingURL=code-intelligence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code-intelligence.d.ts","sourceRoot":"","sources":["../../src/lsp/code-intelligence.ts"],"names":[],"mappings":"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"}