@geminixiang/mikan 1.0.0-beta.6 → 1.0.0-beta.60

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 (791) hide show
  1. package/CHANGELOG.md +926 -0
  2. package/README.md +95 -37
  3. package/dist/adapter.d.ts +11 -1
  4. package/dist/adapter.d.ts.map +1 -1
  5. package/dist/adapter.js +18 -1
  6. package/dist/adapter.js.map +1 -1
  7. package/dist/adapters/commands/admin.d.ts.map +1 -0
  8. package/dist/{commands → adapters/commands}/admin.js +11 -8
  9. package/dist/adapters/commands/admin.js.map +1 -0
  10. package/dist/{commands → adapters/commands}/auto-reply.d.ts +0 -3
  11. package/dist/adapters/commands/auto-reply.d.ts.map +1 -0
  12. package/dist/adapters/commands/auto-reply.js +38 -0
  13. package/dist/adapters/commands/auto-reply.js.map +1 -0
  14. package/dist/adapters/commands/login.d.ts +6 -0
  15. package/dist/adapters/commands/login.d.ts.map +1 -0
  16. package/dist/adapters/commands/login.js +166 -0
  17. package/dist/adapters/commands/login.js.map +1 -0
  18. package/dist/adapters/commands/manifest.d.ts +37 -0
  19. package/dist/adapters/commands/manifest.d.ts.map +1 -0
  20. package/dist/adapters/commands/manifest.js +155 -0
  21. package/dist/adapters/commands/manifest.js.map +1 -0
  22. package/dist/adapters/commands/model.d.ts +15 -0
  23. package/dist/adapters/commands/model.d.ts.map +1 -0
  24. package/dist/adapters/commands/model.js +153 -0
  25. package/dist/adapters/commands/model.js.map +1 -0
  26. package/dist/adapters/commands/new.d.ts.map +1 -0
  27. package/dist/adapters/commands/new.js +41 -0
  28. package/dist/adapters/commands/new.js.map +1 -0
  29. package/dist/adapters/commands/registry.d.ts +5 -0
  30. package/dist/adapters/commands/registry.d.ts.map +1 -0
  31. package/dist/adapters/commands/registry.js +43 -0
  32. package/dist/adapters/commands/registry.js.map +1 -0
  33. package/dist/adapters/commands/sandbox.d.ts.map +1 -0
  34. package/dist/adapters/commands/sandbox.js +148 -0
  35. package/dist/adapters/commands/sandbox.js.map +1 -0
  36. package/dist/adapters/commands/session-view.d.ts.map +1 -0
  37. package/dist/{commands → adapters/commands}/session-view.js +23 -16
  38. package/dist/adapters/commands/session-view.js.map +1 -0
  39. package/dist/adapters/commands/types.d.ts +145 -0
  40. package/dist/adapters/commands/types.d.ts.map +1 -0
  41. package/dist/adapters/commands/types.js.map +1 -0
  42. package/dist/adapters/commands/utils.d.ts +14 -0
  43. package/dist/adapters/commands/utils.d.ts.map +1 -0
  44. package/dist/{commands → adapters/commands}/utils.js +18 -1
  45. package/dist/adapters/commands/utils.js.map +1 -0
  46. package/dist/adapters/discord/bot.d.ts +11 -8
  47. package/dist/adapters/discord/bot.d.ts.map +1 -1
  48. package/dist/adapters/discord/bot.js +218 -252
  49. package/dist/adapters/discord/bot.js.map +1 -1
  50. package/dist/adapters/discord/components.d.ts +28 -0
  51. package/dist/adapters/discord/components.d.ts.map +1 -0
  52. package/dist/adapters/discord/components.js +32 -0
  53. package/dist/adapters/discord/components.js.map +1 -0
  54. package/dist/adapters/discord/context.d.ts +2 -6
  55. package/dist/adapters/discord/context.d.ts.map +1 -1
  56. package/dist/adapters/discord/context.js +63 -218
  57. package/dist/adapters/discord/context.js.map +1 -1
  58. package/dist/adapters/discord/format.d.ts +3 -0
  59. package/dist/adapters/discord/format.d.ts.map +1 -0
  60. package/dist/adapters/discord/format.js +84 -0
  61. package/dist/adapters/discord/format.js.map +1 -0
  62. package/dist/adapters/discord/types.d.ts +7 -0
  63. package/dist/adapters/discord/types.d.ts.map +1 -1
  64. package/dist/adapters/discord/types.js.map +1 -1
  65. package/dist/adapters/github/bot.d.ts +102 -0
  66. package/dist/adapters/github/bot.d.ts.map +1 -0
  67. package/dist/adapters/github/bot.js +720 -0
  68. package/dist/adapters/github/bot.js.map +1 -0
  69. package/dist/adapters/github/client.d.ts +122 -0
  70. package/dist/adapters/github/client.d.ts.map +1 -0
  71. package/dist/adapters/github/client.js +301 -0
  72. package/dist/adapters/github/client.js.map +1 -0
  73. package/dist/adapters/github/context.d.ts +5 -0
  74. package/dist/adapters/github/context.d.ts.map +1 -0
  75. package/dist/adapters/github/context.js +101 -0
  76. package/dist/adapters/github/context.js.map +1 -0
  77. package/dist/adapters/github/github-ops.d.ts +78 -0
  78. package/dist/adapters/github/github-ops.d.ts.map +1 -0
  79. package/dist/adapters/github/github-ops.js +337 -0
  80. package/dist/adapters/github/github-ops.js.map +1 -0
  81. package/dist/adapters/github/ids.d.ts +34 -0
  82. package/dist/adapters/github/ids.d.ts.map +1 -0
  83. package/dist/adapters/github/ids.js +57 -0
  84. package/dist/adapters/github/ids.js.map +1 -0
  85. package/dist/adapters/github/repo.d.ts +33 -0
  86. package/dist/adapters/github/repo.d.ts.map +1 -0
  87. package/dist/adapters/github/repo.js +141 -0
  88. package/dist/adapters/github/repo.js.map +1 -0
  89. package/dist/adapters/github/tool-pack.d.ts +14 -0
  90. package/dist/adapters/github/tool-pack.d.ts.map +1 -0
  91. package/dist/adapters/github/tool-pack.js +55 -0
  92. package/dist/adapters/github/tool-pack.js.map +1 -0
  93. package/dist/adapters/github/tools/checks.d.ts +18 -0
  94. package/dist/adapters/github/tools/checks.d.ts.map +1 -0
  95. package/dist/adapters/github/tools/checks.js +86 -0
  96. package/dist/adapters/github/tools/checks.js.map +1 -0
  97. package/dist/adapters/github/tools/issue.d.ts +21 -0
  98. package/dist/adapters/github/tools/issue.d.ts.map +1 -0
  99. package/dist/adapters/github/tools/issue.js +48 -0
  100. package/dist/adapters/github/tools/issue.js.map +1 -0
  101. package/dist/adapters/github/tools/pr.d.ts +22 -0
  102. package/dist/adapters/github/tools/pr.d.ts.map +1 -0
  103. package/dist/adapters/github/tools/pr.js +48 -0
  104. package/dist/adapters/github/tools/pr.js.map +1 -0
  105. package/dist/adapters/github/tools/read.d.ts +21 -0
  106. package/dist/adapters/github/tools/read.d.ts.map +1 -0
  107. package/dist/adapters/github/tools/read.js +141 -0
  108. package/dist/adapters/github/tools/read.js.map +1 -0
  109. package/dist/adapters/github/tools/review-reply.d.ts +17 -0
  110. package/dist/adapters/github/tools/review-reply.d.ts.map +1 -0
  111. package/dist/adapters/github/tools/review-reply.js +38 -0
  112. package/dist/adapters/github/tools/review-reply.js.map +1 -0
  113. package/dist/adapters/github/tools/sync.d.ts +17 -0
  114. package/dist/adapters/github/tools/sync.d.ts.map +1 -0
  115. package/dist/adapters/github/tools/sync.js +34 -0
  116. package/dist/adapters/github/tools/sync.js.map +1 -0
  117. package/dist/adapters/github/types.d.ts +345 -0
  118. package/dist/adapters/github/types.d.ts.map +1 -0
  119. package/dist/adapters/github/types.js.map +1 -0
  120. package/dist/adapters/github/webhook.d.ts +20 -0
  121. package/dist/adapters/github/webhook.d.ts.map +1 -0
  122. package/dist/adapters/github/webhook.js +78 -0
  123. package/dist/adapters/github/webhook.js.map +1 -0
  124. package/dist/adapters/intake.d.ts +16 -5
  125. package/dist/adapters/intake.d.ts.map +1 -1
  126. package/dist/adapters/intake.js +86 -27
  127. package/dist/adapters/intake.js.map +1 -1
  128. package/dist/adapters/markdown-tables.d.ts +19 -0
  129. package/dist/adapters/markdown-tables.d.ts.map +1 -0
  130. package/dist/adapters/markdown-tables.js +152 -0
  131. package/dist/adapters/markdown-tables.js.map +1 -0
  132. package/dist/adapters/progressive-renderer.d.ts +7 -0
  133. package/dist/adapters/progressive-renderer.d.ts.map +1 -0
  134. package/dist/adapters/progressive-renderer.js +439 -0
  135. package/dist/adapters/progressive-renderer.js.map +1 -0
  136. package/dist/adapters/shared.d.ts +35 -11
  137. package/dist/adapters/shared.d.ts.map +1 -1
  138. package/dist/adapters/shared.js +105 -24
  139. package/dist/adapters/shared.js.map +1 -1
  140. package/dist/adapters/slack/assistant.d.ts +73 -0
  141. package/dist/adapters/slack/assistant.d.ts.map +1 -0
  142. package/dist/adapters/slack/assistant.js +205 -0
  143. package/dist/adapters/slack/assistant.js.map +1 -0
  144. package/dist/adapters/slack/blocks.d.ts +14 -0
  145. package/dist/adapters/slack/blocks.d.ts.map +1 -1
  146. package/dist/adapters/slack/blocks.js +104 -148
  147. package/dist/adapters/slack/blocks.js.map +1 -1
  148. package/dist/adapters/slack/bot.d.ts +116 -18
  149. package/dist/adapters/slack/bot.d.ts.map +1 -1
  150. package/dist/adapters/slack/bot.js +760 -468
  151. package/dist/adapters/slack/bot.js.map +1 -1
  152. package/dist/adapters/slack/context.d.ts +2 -6
  153. package/dist/adapters/slack/context.d.ts.map +1 -1
  154. package/dist/adapters/slack/context.js +11 -17
  155. package/dist/adapters/slack/context.js.map +1 -1
  156. package/dist/adapters/slack/markdown.d.ts +3 -0
  157. package/dist/adapters/slack/markdown.d.ts.map +1 -0
  158. package/dist/adapters/slack/markdown.js +48 -0
  159. package/dist/adapters/slack/markdown.js.map +1 -0
  160. package/dist/adapters/slack/response-lifecycle.d.ts.map +1 -1
  161. package/dist/adapters/slack/response-lifecycle.js +240 -345
  162. package/dist/adapters/slack/response-lifecycle.js.map +1 -1
  163. package/dist/adapters/slack/session.d.ts.map +1 -1
  164. package/dist/adapters/slack/session.js +7 -11
  165. package/dist/adapters/slack/session.js.map +1 -1
  166. package/dist/adapters/slack/stream-limits.d.ts +35 -0
  167. package/dist/adapters/slack/stream-limits.d.ts.map +1 -0
  168. package/dist/adapters/slack/stream-limits.js +56 -0
  169. package/dist/adapters/slack/stream-limits.js.map +1 -0
  170. package/dist/adapters/slack/tool-pack.d.ts +11 -0
  171. package/dist/adapters/slack/tool-pack.d.ts.map +1 -0
  172. package/dist/adapters/slack/tool-pack.js +45 -0
  173. package/dist/adapters/slack/tool-pack.js.map +1 -0
  174. package/dist/adapters/slack/tools/blockkit.d.ts +14 -0
  175. package/dist/adapters/slack/tools/blockkit.d.ts.map +1 -0
  176. package/dist/adapters/slack/tools/blockkit.js +106 -0
  177. package/dist/adapters/slack/tools/blockkit.js.map +1 -0
  178. package/dist/adapters/slack/types.d.ts +73 -2
  179. package/dist/adapters/slack/types.d.ts.map +1 -1
  180. package/dist/adapters/slack/types.js.map +1 -1
  181. package/dist/adapters/slack/update-diagnostics.d.ts +14 -0
  182. package/dist/adapters/slack/update-diagnostics.d.ts.map +1 -0
  183. package/dist/adapters/slack/update-diagnostics.js +134 -0
  184. package/dist/adapters/slack/update-diagnostics.js.map +1 -0
  185. package/dist/adapters/telegram/bot.d.ts +10 -9
  186. package/dist/adapters/telegram/bot.d.ts.map +1 -1
  187. package/dist/adapters/telegram/bot.js +129 -198
  188. package/dist/adapters/telegram/bot.js.map +1 -1
  189. package/dist/adapters/telegram/context.d.ts +2 -6
  190. package/dist/adapters/telegram/context.d.ts.map +1 -1
  191. package/dist/adapters/telegram/context.js +52 -190
  192. package/dist/adapters/telegram/context.js.map +1 -1
  193. package/dist/adapters/types.d.ts +144 -13
  194. package/dist/adapters/types.d.ts.map +1 -1
  195. package/dist/adapters/types.js.map +1 -1
  196. package/dist/adapters/web/admin/portal.d.ts +44 -0
  197. package/dist/adapters/web/admin/portal.d.ts.map +1 -0
  198. package/dist/adapters/web/admin/portal.js +3284 -0
  199. package/dist/adapters/web/admin/portal.js.map +1 -0
  200. package/dist/{web → adapters/web}/admin/provider-models.d.ts +1 -1
  201. package/dist/adapters/web/admin/provider-models.d.ts.map +1 -0
  202. package/dist/{web → adapters/web}/admin/provider-models.js +1 -1
  203. package/dist/adapters/web/admin/provider-models.js.map +1 -0
  204. package/dist/adapters/web/admin/types.d.ts +50 -0
  205. package/dist/adapters/web/admin/types.d.ts.map +1 -0
  206. package/dist/adapters/web/admin/types.js.map +1 -0
  207. package/dist/adapters/web/login/oauth.d.ts +5 -0
  208. package/dist/adapters/web/login/oauth.d.ts.map +1 -0
  209. package/dist/{web → adapters/web}/login/oauth.js +50 -85
  210. package/dist/adapters/web/login/oauth.js.map +1 -0
  211. package/dist/{web → adapters/web}/login/portal.d.ts +9 -3
  212. package/dist/adapters/web/login/portal.d.ts.map +1 -0
  213. package/dist/{web → adapters/web}/login/portal.js +161 -119
  214. package/dist/adapters/web/login/portal.js.map +1 -0
  215. package/dist/{web → adapters/web}/login/types.d.ts +1 -12
  216. package/dist/adapters/web/login/types.d.ts.map +1 -0
  217. package/dist/adapters/web/login/types.js.map +1 -0
  218. package/dist/adapters/web/portal-shell.d.ts +22 -0
  219. package/dist/adapters/web/portal-shell.d.ts.map +1 -0
  220. package/dist/{portal-shell.js → adapters/web/portal-shell.js} +78 -2
  221. package/dist/adapters/web/portal-shell.js.map +1 -0
  222. package/dist/{web → adapters/web}/server.d.ts +11 -8
  223. package/dist/adapters/web/server.d.ts.map +1 -0
  224. package/dist/{web → adapters/web}/server.js +16 -7
  225. package/dist/adapters/web/server.js.map +1 -0
  226. package/dist/adapters/web/session-view/portal.d.ts +20 -0
  227. package/dist/adapters/web/session-view/portal.d.ts.map +1 -0
  228. package/dist/{web → adapters/web}/session-view/portal.js +632 -162
  229. package/dist/adapters/web/session-view/portal.js.map +1 -0
  230. package/dist/{web → adapters/web}/session-view/types.d.ts +11 -6
  231. package/dist/adapters/web/session-view/types.d.ts.map +1 -0
  232. package/dist/adapters/web/session-view/types.js.map +1 -0
  233. package/dist/adapters/web/token-store.d.ts.map +1 -0
  234. package/dist/{web → adapters/web}/token-store.js +1 -1
  235. package/dist/adapters/web/token-store.js.map +1 -0
  236. package/dist/adapters/web/types.d.ts.map +1 -0
  237. package/dist/adapters/web/types.js.map +1 -0
  238. package/dist/cli/arg-grammar.d.ts +11 -0
  239. package/dist/cli/arg-grammar.d.ts.map +1 -0
  240. package/dist/cli/arg-grammar.js +50 -0
  241. package/dist/cli/arg-grammar.js.map +1 -0
  242. package/dist/cli/boot.d.ts +5 -0
  243. package/dist/cli/boot.d.ts.map +1 -0
  244. package/dist/cli/boot.js +90 -0
  245. package/dist/cli/boot.js.map +1 -0
  246. package/dist/cli/download.d.ts.map +1 -0
  247. package/dist/cli/download.js +88 -0
  248. package/dist/cli/download.js.map +1 -0
  249. package/dist/cli/office.d.ts +2 -0
  250. package/dist/cli/office.d.ts.map +1 -0
  251. package/dist/cli/office.js +83 -0
  252. package/dist/cli/office.js.map +1 -0
  253. package/dist/cli/onboard.d.ts +10 -0
  254. package/dist/cli/onboard.d.ts.map +1 -0
  255. package/dist/cli/onboard.js +225 -0
  256. package/dist/cli/onboard.js.map +1 -0
  257. package/dist/cli/sessions.d.ts +2 -0
  258. package/dist/cli/sessions.d.ts.map +1 -0
  259. package/dist/cli/sessions.js +88 -0
  260. package/dist/cli/sessions.js.map +1 -0
  261. package/dist/cli/types.d.ts +25 -0
  262. package/dist/cli/types.d.ts.map +1 -0
  263. package/dist/cli/types.js.map +1 -0
  264. package/dist/config.d.ts +38 -39
  265. package/dist/config.d.ts.map +1 -1
  266. package/dist/config.js +256 -215
  267. package/dist/config.js.map +1 -1
  268. package/dist/dream/index.d.ts +20 -0
  269. package/dist/dream/index.d.ts.map +1 -0
  270. package/dist/dream/index.js +264 -0
  271. package/dist/dream/index.js.map +1 -0
  272. package/dist/dream/types.d.ts +30 -0
  273. package/dist/dream/types.d.ts.map +1 -0
  274. package/dist/dream/types.js +2 -0
  275. package/dist/dream/types.js.map +1 -0
  276. package/dist/env-manifest.d.ts +32 -0
  277. package/dist/env-manifest.d.ts.map +1 -0
  278. package/dist/env-manifest.js +244 -0
  279. package/dist/env-manifest.js.map +1 -0
  280. package/dist/events/index.d.ts +150 -0
  281. package/dist/events/index.d.ts.map +1 -0
  282. package/dist/events/index.js +249 -0
  283. package/dist/events/index.js.map +1 -0
  284. package/dist/{events.d.ts → events/watcher.d.ts} +4 -4
  285. package/dist/events/watcher.d.ts.map +1 -0
  286. package/dist/{events.js → events/watcher.js} +23 -84
  287. package/dist/events/watcher.js.map +1 -0
  288. package/dist/{utils/file-guards.d.ts → file-guards.d.ts} +9 -0
  289. package/dist/file-guards.d.ts.map +1 -0
  290. package/dist/{utils/file-guards.js → file-guards.js} +44 -1
  291. package/dist/file-guards.js.map +1 -0
  292. package/dist/harness/execution-env.d.ts +19 -0
  293. package/dist/harness/execution-env.d.ts.map +1 -0
  294. package/dist/harness/execution-env.js +262 -0
  295. package/dist/harness/execution-env.js.map +1 -0
  296. package/dist/harness/execution-resolver.d.ts +25 -0
  297. package/dist/harness/execution-resolver.d.ts.map +1 -0
  298. package/dist/harness/execution-resolver.js +156 -0
  299. package/dist/harness/execution-resolver.js.map +1 -0
  300. package/dist/harness/index.d.ts +17 -13
  301. package/dist/harness/index.d.ts.map +1 -1
  302. package/dist/harness/index.js +10 -11
  303. package/dist/harness/index.js.map +1 -1
  304. package/dist/harness/mcp.d.ts +38 -0
  305. package/dist/harness/mcp.d.ts.map +1 -0
  306. package/dist/harness/mcp.js +306 -0
  307. package/dist/harness/mcp.js.map +1 -0
  308. package/dist/harness/models.d.ts +7 -4
  309. package/dist/harness/models.d.ts.map +1 -1
  310. package/dist/harness/models.js +54 -55
  311. package/dist/harness/models.js.map +1 -1
  312. package/dist/harness/open-connector.d.ts +14 -0
  313. package/dist/harness/open-connector.d.ts.map +1 -0
  314. package/dist/harness/open-connector.js +204 -0
  315. package/dist/harness/open-connector.js.map +1 -0
  316. package/dist/harness/presenter.d.ts +30 -0
  317. package/dist/harness/presenter.d.ts.map +1 -0
  318. package/dist/harness/presenter.js +804 -0
  319. package/dist/harness/presenter.js.map +1 -0
  320. package/dist/harness/prompt.d.ts +30 -0
  321. package/dist/harness/prompt.d.ts.map +1 -0
  322. package/dist/harness/prompt.js +426 -0
  323. package/dist/harness/prompt.js.map +1 -0
  324. package/dist/harness/runner.d.ts +2 -123
  325. package/dist/harness/runner.d.ts.map +1 -1
  326. package/dist/harness/runner.js +505 -417
  327. package/dist/harness/runner.js.map +1 -1
  328. package/dist/harness/session.d.ts +119 -0
  329. package/dist/harness/session.d.ts.map +1 -0
  330. package/dist/harness/session.js +561 -0
  331. package/dist/harness/session.js.map +1 -0
  332. package/dist/harness/skills.d.ts +17 -28
  333. package/dist/harness/skills.d.ts.map +1 -1
  334. package/dist/harness/skills.js +104 -39
  335. package/dist/harness/skills.js.map +1 -1
  336. package/dist/harness/subagent-profiles.d.ts +8 -0
  337. package/dist/harness/subagent-profiles.d.ts.map +1 -0
  338. package/dist/harness/subagent-profiles.js +284 -0
  339. package/dist/harness/subagent-profiles.js.map +1 -0
  340. package/dist/harness/subagent.d.ts +64 -0
  341. package/dist/harness/subagent.d.ts.map +1 -0
  342. package/dist/harness/subagent.js +687 -0
  343. package/dist/harness/subagent.js.map +1 -0
  344. package/dist/harness/tools/attach.d.ts.map +1 -0
  345. package/dist/{adapters/slack → harness}/tools/attach.js +1 -1
  346. package/dist/harness/tools/attach.js.map +1 -0
  347. package/dist/{tools → harness/tools}/event.d.ts +3 -32
  348. package/dist/harness/tools/event.d.ts.map +1 -0
  349. package/dist/harness/tools/event.js +178 -0
  350. package/dist/harness/tools/event.js.map +1 -0
  351. package/dist/harness/tools/generate-image.d.ts +23 -0
  352. package/dist/harness/tools/generate-image.d.ts.map +1 -0
  353. package/dist/harness/tools/generate-image.js +65 -0
  354. package/dist/harness/tools/generate-image.js.map +1 -0
  355. package/dist/harness/tools/host-fn-tool.d.ts +21 -0
  356. package/dist/harness/tools/host-fn-tool.d.ts.map +1 -0
  357. package/dist/harness/tools/host-fn-tool.js +32 -0
  358. package/dist/harness/tools/host-fn-tool.js.map +1 -0
  359. package/dist/harness/tools/index.d.ts +38 -0
  360. package/dist/harness/tools/index.d.ts.map +1 -0
  361. package/dist/harness/tools/index.js +45 -0
  362. package/dist/harness/tools/index.js.map +1 -0
  363. package/dist/harness/tools/pi-tools.d.ts +18 -0
  364. package/dist/harness/tools/pi-tools.d.ts.map +1 -0
  365. package/dist/harness/tools/pi-tools.js +84 -0
  366. package/dist/harness/tools/pi-tools.js.map +1 -0
  367. package/dist/harness/tools/react.d.ts.map +1 -0
  368. package/dist/{tools → harness/tools}/react.js +6 -17
  369. package/dist/harness/tools/react.js.map +1 -0
  370. package/dist/{tools → harness/tools}/sandbox.d.ts +4 -4
  371. package/dist/harness/tools/sandbox.d.ts.map +1 -0
  372. package/dist/{tools → harness/tools}/sandbox.js +12 -8
  373. package/dist/harness/tools/sandbox.js.map +1 -0
  374. package/dist/harness/tools/subagent.d.ts +88 -0
  375. package/dist/harness/tools/subagent.d.ts.map +1 -0
  376. package/dist/harness/tools/subagent.js +681 -0
  377. package/dist/harness/tools/subagent.js.map +1 -0
  378. package/dist/harness/tools/types.d.ts +29 -0
  379. package/dist/harness/tools/types.d.ts.map +1 -0
  380. package/dist/harness/tools/types.js +2 -0
  381. package/dist/harness/tools/types.js.map +1 -0
  382. package/dist/harness/types.d.ts +384 -25
  383. package/dist/harness/types.d.ts.map +1 -1
  384. package/dist/harness/types.js +1 -1
  385. package/dist/harness/types.js.map +1 -1
  386. package/dist/index.d.ts +33 -9
  387. package/dist/index.d.ts.map +1 -1
  388. package/dist/index.js +19 -6
  389. package/dist/index.js.map +1 -1
  390. package/dist/main.js +344 -188
  391. package/dist/main.js.map +1 -1
  392. package/dist/observability/index.d.ts +33 -0
  393. package/dist/observability/index.d.ts.map +1 -0
  394. package/dist/observability/index.js +257 -0
  395. package/dist/observability/index.js.map +1 -0
  396. package/dist/observability/instrument.js +14 -6
  397. package/dist/observability/instrument.js.map +1 -1
  398. package/dist/observability/otel.d.ts +10 -0
  399. package/dist/observability/otel.d.ts.map +1 -0
  400. package/dist/observability/otel.js +183 -0
  401. package/dist/observability/otel.js.map +1 -0
  402. package/dist/observability/sentry.d.ts +40 -7
  403. package/dist/observability/sentry.d.ts.map +1 -1
  404. package/dist/observability/sentry.js +176 -32
  405. package/dist/observability/sentry.js.map +1 -1
  406. package/dist/observability/types.d.ts +24 -3
  407. package/dist/observability/types.d.ts.map +1 -1
  408. package/dist/observability/types.js.map +1 -1
  409. package/dist/office/index.d.ts +138 -0
  410. package/dist/office/index.d.ts.map +1 -0
  411. package/dist/office/index.js +1084 -0
  412. package/dist/office/index.js.map +1 -0
  413. package/dist/office/projection.d.ts +22 -0
  414. package/dist/office/projection.d.ts.map +1 -0
  415. package/dist/office/projection.js +208 -0
  416. package/dist/office/projection.js.map +1 -0
  417. package/dist/office/types.d.ts +116 -0
  418. package/dist/office/types.d.ts.map +1 -0
  419. package/dist/office/types.js +2 -0
  420. package/dist/office/types.js.map +1 -0
  421. package/dist/platform-messages.d.ts +1 -0
  422. package/dist/platform-messages.d.ts.map +1 -1
  423. package/dist/platform-messages.js +3 -0
  424. package/dist/platform-messages.js.map +1 -1
  425. package/dist/process-lifecycle.d.ts +19 -0
  426. package/dist/process-lifecycle.d.ts.map +1 -0
  427. package/dist/process-lifecycle.js +67 -0
  428. package/dist/process-lifecycle.js.map +1 -0
  429. package/dist/runtime/conversation-runtime.d.ts +1 -1
  430. package/dist/runtime/conversation-runtime.d.ts.map +1 -1
  431. package/dist/runtime/conversation-runtime.js +398 -149
  432. package/dist/runtime/conversation-runtime.js.map +1 -1
  433. package/dist/runtime/session-lifecycle.d.ts +76 -0
  434. package/dist/runtime/session-lifecycle.d.ts.map +1 -0
  435. package/dist/runtime/session-lifecycle.js +404 -0
  436. package/dist/runtime/session-lifecycle.js.map +1 -0
  437. package/dist/runtime/types.d.ts +58 -14
  438. package/dist/runtime/types.d.ts.map +1 -1
  439. package/dist/runtime/types.js.map +1 -1
  440. package/dist/sandbox/cloudflare.d.ts +4 -0
  441. package/dist/sandbox/cloudflare.d.ts.map +1 -1
  442. package/dist/sandbox/cloudflare.js +54 -52
  443. package/dist/sandbox/cloudflare.js.map +1 -1
  444. package/dist/sandbox/container.d.ts +3 -0
  445. package/dist/sandbox/container.d.ts.map +1 -1
  446. package/dist/sandbox/container.js +19 -7
  447. package/dist/sandbox/container.js.map +1 -1
  448. package/dist/sandbox/host.d.ts +3 -0
  449. package/dist/sandbox/host.d.ts.map +1 -1
  450. package/dist/sandbox/host.js +44 -35
  451. package/dist/sandbox/host.js.map +1 -1
  452. package/dist/sandbox/identity.d.ts +42 -0
  453. package/dist/sandbox/identity.d.ts.map +1 -0
  454. package/dist/sandbox/identity.js +77 -0
  455. package/dist/sandbox/identity.js.map +1 -0
  456. package/dist/sandbox/index.d.ts +16 -6
  457. package/dist/sandbox/index.d.ts.map +1 -1
  458. package/dist/sandbox/index.js +73 -17
  459. package/dist/sandbox/index.js.map +1 -1
  460. package/dist/sandbox/provisioner.d.ts +121 -0
  461. package/dist/sandbox/provisioner.d.ts.map +1 -0
  462. package/dist/{provisioner.js → sandbox/provisioner.js} +352 -20
  463. package/dist/sandbox/provisioner.js.map +1 -0
  464. package/dist/sandbox/types.d.ts +43 -9
  465. package/dist/sandbox/types.d.ts.map +1 -1
  466. package/dist/sandbox/types.js.map +1 -1
  467. package/dist/sandbox/utils.d.ts +24 -0
  468. package/dist/sandbox/utils.d.ts.map +1 -1
  469. package/dist/sandbox/utils.js +92 -1
  470. package/dist/sandbox/utils.js.map +1 -1
  471. package/dist/sessions/chat-history-sync.d.ts +23 -0
  472. package/dist/sessions/chat-history-sync.d.ts.map +1 -0
  473. package/dist/sessions/{agent-memory-file-manager.js → chat-history-sync.js} +234 -175
  474. package/dist/sessions/chat-history-sync.js.map +1 -0
  475. package/dist/sessions/history-line.d.ts +29 -0
  476. package/dist/sessions/history-line.d.ts.map +1 -0
  477. package/dist/sessions/history-line.js +45 -0
  478. package/dist/sessions/history-line.js.map +1 -0
  479. package/dist/sessions/migrate-common.d.ts +43 -0
  480. package/dist/sessions/migrate-common.d.ts.map +1 -0
  481. package/dist/sessions/migrate-common.js +99 -0
  482. package/dist/sessions/migrate-common.js.map +1 -0
  483. package/dist/sessions/migrate-pi-084.d.ts +8 -0
  484. package/dist/sessions/migrate-pi-084.d.ts.map +1 -0
  485. package/dist/sessions/migrate-pi-084.js +302 -0
  486. package/dist/sessions/migrate-pi-084.js.map +1 -0
  487. package/dist/sessions/migrate-v3.d.ts +15 -0
  488. package/dist/sessions/migrate-v3.d.ts.map +1 -0
  489. package/dist/sessions/migrate-v3.js +419 -0
  490. package/dist/sessions/migrate-v3.js.map +1 -0
  491. package/dist/sessions/session-key.d.ts +33 -0
  492. package/dist/sessions/session-key.d.ts.map +1 -0
  493. package/dist/sessions/session-key.js +115 -0
  494. package/dist/sessions/session-key.js.map +1 -0
  495. package/dist/sessions/session-store.d.ts +51 -0
  496. package/dist/sessions/session-store.d.ts.map +1 -0
  497. package/dist/sessions/session-store.js +658 -0
  498. package/dist/sessions/session-store.js.map +1 -0
  499. package/dist/sessions/store.d.ts +17 -10
  500. package/dist/sessions/store.d.ts.map +1 -1
  501. package/dist/sessions/store.js +182 -47
  502. package/dist/sessions/store.js.map +1 -1
  503. package/dist/sessions/types.d.ts +73 -7
  504. package/dist/sessions/types.d.ts.map +1 -1
  505. package/dist/sessions/types.js +1 -1
  506. package/dist/sessions/types.js.map +1 -1
  507. package/dist/settings-mutation.d.ts +40 -0
  508. package/dist/settings-mutation.d.ts.map +1 -0
  509. package/dist/settings-mutation.js +66 -0
  510. package/dist/settings-mutation.js.map +1 -0
  511. package/dist/types.d.ts +331 -140
  512. package/dist/types.d.ts.map +1 -1
  513. package/dist/types.js +2 -2
  514. package/dist/types.js.map +1 -1
  515. package/dist/vault/index.d.ts +52 -2
  516. package/dist/vault/index.d.ts.map +1 -1
  517. package/dist/vault/index.js +218 -86
  518. package/dist/vault/index.js.map +1 -1
  519. package/dist/vault/types.d.ts +6 -2
  520. package/dist/vault/types.d.ts.map +1 -1
  521. package/dist/vault/types.js.map +1 -1
  522. package/package.json +77 -39
  523. package/dist/adapters/slack/tools/attach.d.ts.map +0 -1
  524. package/dist/adapters/slack/tools/attach.js.map +0 -1
  525. package/dist/adapters/streaming.d.ts +0 -18
  526. package/dist/adapters/streaming.d.ts.map +0 -1
  527. package/dist/adapters/streaming.js +0 -44
  528. package/dist/adapters/streaming.js.map +0 -1
  529. package/dist/adapters/telegram/html.d.ts +0 -3
  530. package/dist/adapters/telegram/html.d.ts.map +0 -1
  531. package/dist/adapters/telegram/html.js +0 -98
  532. package/dist/adapters/telegram/html.js.map +0 -1
  533. package/dist/agent-events.d.ts +0 -5
  534. package/dist/agent-events.d.ts.map +0 -1
  535. package/dist/agent-events.js +0 -26
  536. package/dist/agent-events.js.map +0 -1
  537. package/dist/agent.d.ts +0 -39
  538. package/dist/agent.d.ts.map +0 -1
  539. package/dist/agent.js +0 -1291
  540. package/dist/agent.js.map +0 -1
  541. package/dist/commands/admin.d.ts.map +0 -1
  542. package/dist/commands/admin.js.map +0 -1
  543. package/dist/commands/auto-reply.d.ts.map +0 -1
  544. package/dist/commands/auto-reply.js +0 -76
  545. package/dist/commands/auto-reply.js.map +0 -1
  546. package/dist/commands/extensions.d.ts +0 -14
  547. package/dist/commands/extensions.d.ts.map +0 -1
  548. package/dist/commands/extensions.js +0 -55
  549. package/dist/commands/extensions.js.map +0 -1
  550. package/dist/commands/login.d.ts +0 -5
  551. package/dist/commands/login.d.ts.map +0 -1
  552. package/dist/commands/login.js +0 -115
  553. package/dist/commands/login.js.map +0 -1
  554. package/dist/commands/model.d.ts +0 -10
  555. package/dist/commands/model.d.ts.map +0 -1
  556. package/dist/commands/model.js +0 -102
  557. package/dist/commands/model.js.map +0 -1
  558. package/dist/commands/new.d.ts.map +0 -1
  559. package/dist/commands/new.js +0 -25
  560. package/dist/commands/new.js.map +0 -1
  561. package/dist/commands/parse.d.ts +0 -7
  562. package/dist/commands/parse.d.ts.map +0 -1
  563. package/dist/commands/parse.js +0 -14
  564. package/dist/commands/parse.js.map +0 -1
  565. package/dist/commands/registry.d.ts +0 -5
  566. package/dist/commands/registry.d.ts.map +0 -1
  567. package/dist/commands/registry.js +0 -31
  568. package/dist/commands/registry.js.map +0 -1
  569. package/dist/commands/sandbox.d.ts.map +0 -1
  570. package/dist/commands/sandbox.js +0 -78
  571. package/dist/commands/sandbox.js.map +0 -1
  572. package/dist/commands/session-view.d.ts.map +0 -1
  573. package/dist/commands/session-view.js.map +0 -1
  574. package/dist/commands/types.d.ts +0 -66
  575. package/dist/commands/types.d.ts.map +0 -1
  576. package/dist/commands/types.js.map +0 -1
  577. package/dist/commands/utils.d.ts +0 -11
  578. package/dist/commands/utils.d.ts.map +0 -1
  579. package/dist/commands/utils.js.map +0 -1
  580. package/dist/download.d.ts.map +0 -1
  581. package/dist/download.js +0 -89
  582. package/dist/download.js.map +0 -1
  583. package/dist/events.d.ts.map +0 -1
  584. package/dist/events.js.map +0 -1
  585. package/dist/execution-resolver.d.ts +0 -21
  586. package/dist/execution-resolver.d.ts.map +0 -1
  587. package/dist/execution-resolver.js +0 -170
  588. package/dist/execution-resolver.js.map +0 -1
  589. package/dist/harness/auth.d.ts +0 -16
  590. package/dist/harness/auth.d.ts.map +0 -1
  591. package/dist/harness/auth.js +0 -86
  592. package/dist/harness/auth.js.map +0 -1
  593. package/dist/harness/extensions/loader.d.ts +0 -62
  594. package/dist/harness/extensions/loader.d.ts.map +0 -1
  595. package/dist/harness/extensions/loader.js +0 -374
  596. package/dist/harness/extensions/loader.js.map +0 -1
  597. package/dist/harness/extensions/registry.d.ts +0 -23
  598. package/dist/harness/extensions/registry.d.ts.map +0 -1
  599. package/dist/harness/extensions/registry.js +0 -45
  600. package/dist/harness/extensions/registry.js.map +0 -1
  601. package/dist/harness/extensions/types.d.ts +0 -248
  602. package/dist/harness/extensions/types.d.ts.map +0 -1
  603. package/dist/harness/extensions/types.js.map +0 -1
  604. package/dist/harness/session-store.d.ts +0 -77
  605. package/dist/harness/session-store.d.ts.map +0 -1
  606. package/dist/harness/session-store.js +0 -248
  607. package/dist/harness/session-store.js.map +0 -1
  608. package/dist/harness/settings.d.ts +0 -47
  609. package/dist/harness/settings.d.ts.map +0 -1
  610. package/dist/harness/settings.js +0 -29
  611. package/dist/harness/settings.js.map +0 -1
  612. package/dist/model-registry.d.ts +0 -4
  613. package/dist/model-registry.d.ts.map +0 -1
  614. package/dist/model-registry.js +0 -7
  615. package/dist/model-registry.js.map +0 -1
  616. package/dist/portal-shell.d.ts +0 -4
  617. package/dist/portal-shell.d.ts.map +0 -1
  618. package/dist/portal-shell.js.map +0 -1
  619. package/dist/provisioner.d.ts +0 -61
  620. package/dist/provisioner.d.ts.map +0 -1
  621. package/dist/provisioner.js.map +0 -1
  622. package/dist/runtime/agent-run-controller.d.ts +0 -31
  623. package/dist/runtime/agent-run-controller.d.ts.map +0 -1
  624. package/dist/runtime/agent-run-controller.js +0 -195
  625. package/dist/runtime/agent-run-controller.js.map +0 -1
  626. package/dist/sandbox/errors.d.ts +0 -6
  627. package/dist/sandbox/errors.d.ts.map +0 -1
  628. package/dist/sandbox/errors.js +0 -11
  629. package/dist/sandbox/errors.js.map +0 -1
  630. package/dist/sandbox/firecracker.d.ts +0 -15
  631. package/dist/sandbox/firecracker.d.ts.map +0 -1
  632. package/dist/sandbox/firecracker.js +0 -212
  633. package/dist/sandbox/firecracker.js.map +0 -1
  634. package/dist/sandbox/image.d.ts +0 -3
  635. package/dist/sandbox/image.d.ts.map +0 -1
  636. package/dist/sandbox/image.js +0 -27
  637. package/dist/sandbox/image.js.map +0 -1
  638. package/dist/sandbox/path-context.d.ts +0 -3
  639. package/dist/sandbox/path-context.d.ts.map +0 -1
  640. package/dist/sandbox/path-context.js +0 -20
  641. package/dist/sandbox/path-context.js.map +0 -1
  642. package/dist/sessions/agent-memory-file-manager.d.ts +0 -19
  643. package/dist/sessions/agent-memory-file-manager.d.ts.map +0 -1
  644. package/dist/sessions/agent-memory-file-manager.js.map +0 -1
  645. package/dist/sessions/metadata.d.ts +0 -3
  646. package/dist/sessions/metadata.d.ts.map +0 -1
  647. package/dist/sessions/metadata.js +0 -11
  648. package/dist/sessions/metadata.js.map +0 -1
  649. package/dist/sessions/policy.d.ts +0 -6
  650. package/dist/sessions/policy.d.ts.map +0 -1
  651. package/dist/sessions/policy.js +0 -23
  652. package/dist/sessions/policy.js.map +0 -1
  653. package/dist/store.d.ts +0 -46
  654. package/dist/store.d.ts.map +0 -1
  655. package/dist/store.js +0 -177
  656. package/dist/store.js.map +0 -1
  657. package/dist/tools/bash.d.ts +0 -10
  658. package/dist/tools/bash.d.ts.map +0 -1
  659. package/dist/tools/bash.js +0 -80
  660. package/dist/tools/bash.js.map +0 -1
  661. package/dist/tools/edit.d.ts +0 -11
  662. package/dist/tools/edit.d.ts.map +0 -1
  663. package/dist/tools/edit.js +0 -131
  664. package/dist/tools/edit.js.map +0 -1
  665. package/dist/tools/event.d.ts.map +0 -1
  666. package/dist/tools/event.js +0 -252
  667. package/dist/tools/event.js.map +0 -1
  668. package/dist/tools/index.d.ts +0 -24
  669. package/dist/tools/index.d.ts.map +0 -1
  670. package/dist/tools/index.js +0 -31
  671. package/dist/tools/index.js.map +0 -1
  672. package/dist/tools/react.d.ts.map +0 -1
  673. package/dist/tools/react.js.map +0 -1
  674. package/dist/tools/read.d.ts +0 -11
  675. package/dist/tools/read.d.ts.map +0 -1
  676. package/dist/tools/read.js +0 -134
  677. package/dist/tools/read.js.map +0 -1
  678. package/dist/tools/sandbox.d.ts.map +0 -1
  679. package/dist/tools/sandbox.js.map +0 -1
  680. package/dist/tools/truncate.d.ts +0 -33
  681. package/dist/tools/truncate.d.ts.map +0 -1
  682. package/dist/tools/truncate.js +0 -184
  683. package/dist/tools/truncate.js.map +0 -1
  684. package/dist/tools/types.d.ts +0 -54
  685. package/dist/tools/types.d.ts.map +0 -1
  686. package/dist/tools/types.js.map +0 -1
  687. package/dist/tools/write.d.ts +0 -10
  688. package/dist/tools/write.d.ts.map +0 -1
  689. package/dist/tools/write.js +0 -29
  690. package/dist/tools/write.js.map +0 -1
  691. package/dist/trigger.d.ts +0 -22
  692. package/dist/trigger.d.ts.map +0 -1
  693. package/dist/trigger.js +0 -100
  694. package/dist/trigger.js.map +0 -1
  695. package/dist/utils/date.d.ts +0 -10
  696. package/dist/utils/date.d.ts.map +0 -1
  697. package/dist/utils/date.js +0 -23
  698. package/dist/utils/date.js.map +0 -1
  699. package/dist/utils/env.d.ts +0 -3
  700. package/dist/utils/env.d.ts.map +0 -1
  701. package/dist/utils/env.js +0 -12
  702. package/dist/utils/env.js.map +0 -1
  703. package/dist/utils/file-guards.d.ts.map +0 -1
  704. package/dist/utils/file-guards.js.map +0 -1
  705. package/dist/utils/fs-atomic.d.ts +0 -10
  706. package/dist/utils/fs-atomic.d.ts.map +0 -1
  707. package/dist/utils/fs-atomic.js +0 -45
  708. package/dist/utils/fs-atomic.js.map +0 -1
  709. package/dist/utils/html.d.ts +0 -2
  710. package/dist/utils/html.d.ts.map +0 -1
  711. package/dist/utils/html.js +0 -4
  712. package/dist/utils/html.js.map +0 -1
  713. package/dist/utils/http-body.d.ts +0 -10
  714. package/dist/utils/http-body.d.ts.map +0 -1
  715. package/dist/utils/http-body.js +0 -34
  716. package/dist/utils/http-body.js.map +0 -1
  717. package/dist/vault/routing.d.ts +0 -3
  718. package/dist/vault/routing.d.ts.map +0 -1
  719. package/dist/vault/routing.js +0 -13
  720. package/dist/vault/routing.js.map +0 -1
  721. package/dist/web/admin/portal.d.ts +0 -5
  722. package/dist/web/admin/portal.d.ts.map +0 -1
  723. package/dist/web/admin/portal.js +0 -2572
  724. package/dist/web/admin/portal.js.map +0 -1
  725. package/dist/web/admin/provider-models.d.ts.map +0 -1
  726. package/dist/web/admin/provider-models.js.map +0 -1
  727. package/dist/web/admin/store.d.ts +0 -13
  728. package/dist/web/admin/store.d.ts.map +0 -1
  729. package/dist/web/admin/store.js +0 -14
  730. package/dist/web/admin/store.js.map +0 -1
  731. package/dist/web/admin/types.d.ts +0 -30
  732. package/dist/web/admin/types.d.ts.map +0 -1
  733. package/dist/web/admin/types.js.map +0 -1
  734. package/dist/web/agent-events/portal.d.ts +0 -3
  735. package/dist/web/agent-events/portal.d.ts.map +0 -1
  736. package/dist/web/agent-events/portal.js +0 -18
  737. package/dist/web/agent-events/portal.js.map +0 -1
  738. package/dist/web/login/oauth.d.ts +0 -6
  739. package/dist/web/login/oauth.d.ts.map +0 -1
  740. package/dist/web/login/oauth.js.map +0 -1
  741. package/dist/web/login/portal.d.ts.map +0 -1
  742. package/dist/web/login/portal.js.map +0 -1
  743. package/dist/web/login/store.d.ts +0 -8
  744. package/dist/web/login/store.d.ts.map +0 -1
  745. package/dist/web/login/store.js +0 -15
  746. package/dist/web/login/store.js.map +0 -1
  747. package/dist/web/login/types.d.ts.map +0 -1
  748. package/dist/web/login/types.js.map +0 -1
  749. package/dist/web/request.d.ts +0 -3
  750. package/dist/web/request.d.ts.map +0 -1
  751. package/dist/web/request.js +0 -13
  752. package/dist/web/request.js.map +0 -1
  753. package/dist/web/server.d.ts.map +0 -1
  754. package/dist/web/server.js.map +0 -1
  755. package/dist/web/session-view/command.d.ts +0 -4
  756. package/dist/web/session-view/command.d.ts.map +0 -1
  757. package/dist/web/session-view/command.js +0 -7
  758. package/dist/web/session-view/command.js.map +0 -1
  759. package/dist/web/session-view/portal.d.ts +0 -13
  760. package/dist/web/session-view/portal.d.ts.map +0 -1
  761. package/dist/web/session-view/portal.js.map +0 -1
  762. package/dist/web/session-view/service.d.ts +0 -6
  763. package/dist/web/session-view/service.d.ts.map +0 -1
  764. package/dist/web/session-view/service.js +0 -498
  765. package/dist/web/session-view/service.js.map +0 -1
  766. package/dist/web/session-view/store.d.ts +0 -8
  767. package/dist/web/session-view/store.d.ts.map +0 -1
  768. package/dist/web/session-view/store.js +0 -15
  769. package/dist/web/session-view/store.js.map +0 -1
  770. package/dist/web/session-view/types.d.ts.map +0 -1
  771. package/dist/web/session-view/types.js.map +0 -1
  772. package/dist/web/token-store.d.ts.map +0 -1
  773. package/dist/web/token-store.js.map +0 -1
  774. package/dist/web/types.d.ts.map +0 -1
  775. package/dist/web/types.js.map +0 -1
  776. /package/dist/{commands → adapters/commands}/admin.d.ts +0 -0
  777. /package/dist/{commands → adapters/commands}/new.d.ts +0 -0
  778. /package/dist/{commands → adapters/commands}/sandbox.d.ts +0 -0
  779. /package/dist/{commands → adapters/commands}/session-view.d.ts +0 -0
  780. /package/dist/{commands → adapters/commands}/types.js +0 -0
  781. /package/dist/{harness/extensions → adapters/github}/types.js +0 -0
  782. /package/dist/{tools → adapters/web/admin}/types.js +0 -0
  783. /package/dist/{web/admin → adapters/web/login}/types.js +0 -0
  784. /package/dist/{web/login → adapters/web/session-view}/types.js +0 -0
  785. /package/dist/{web → adapters/web}/token-store.d.ts +0 -0
  786. /package/dist/{web → adapters/web}/types.d.ts +0 -0
  787. /package/dist/{web/session-view → adapters/web}/types.js +0 -0
  788. /package/dist/{download.d.ts → cli/download.d.ts} +0 -0
  789. /package/dist/{web → cli}/types.js +0 -0
  790. /package/dist/{adapters/slack → harness}/tools/attach.d.ts +0 -0
  791. /package/dist/{tools → harness/tools}/react.d.ts +0 -0
@@ -0,0 +1,38 @@
1
+ import type { Api, Model } from "@earendil-works/pi-ai";
2
+ import type { ConversationKind } from "../../adapter.js";
3
+ import type { Executor, SandboxConfig } from "../../sandbox/index.js";
4
+ import type { OfficeAddress, SandboxResourceController } from "../../types.js";
5
+ import { type MikanHarnessTool } from "./pi-tools.js";
6
+ import type { PlatformToolPackFactory, PlatformToolRunContext } from "./types.js";
7
+ export { createSubagentTool } from "./subagent.js";
8
+ export declare function createMikanTools(executor: Executor, workspaceDir: string, sandboxController?: {
9
+ sandbox: SandboxConfig;
10
+ resourceController?: Pick<SandboxResourceController, "getLimitStatus" | "setLimits">;
11
+ },
12
+ /** Platform capability pack factories (e.g. GitHub PR/CI); instantiated
13
+ * here so each runner owns its packs' bind state. Not core tools. */
14
+ platformToolPackFactories?: readonly PlatformToolPackFactory[], imageGeneration?: {
15
+ model: Model<Api>;
16
+ getApiKey: () => Promise<string | undefined>;
17
+ outputDir: string;
18
+ }): {
19
+ tools: MikanHarnessTool[];
20
+ setUploadFunction: (fn: (filePath: string, title?: string) => Promise<void>) => void;
21
+ /** Upload for generate_image. Receives the file's HOST path — the tool
22
+ * writes host-side, so this must not stage through the sandbox like the
23
+ * attach upload does. No-op when image generation is not configured. */
24
+ setImageUploadFunction: (fn: (hostPath: string, title?: string) => Promise<void>) => void;
25
+ setReactFunction: (fn: ((emoji: string) => Promise<void>) | null) => void;
26
+ bindPlatformToolPacks: (ctx: PlatformToolRunContext) => void;
27
+ setEventContext: (context: {
28
+ platform: string;
29
+ conversationId: string;
30
+ conversationKind: ConversationKind;
31
+ userId: string;
32
+ }) => void;
33
+ setSandboxContext: (context: {
34
+ address: OfficeAddress;
35
+ userId: string;
36
+ }) => void;
37
+ };
38
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/harness/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,KAAK,EAAE,aAAa,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAI/E,OAAO,EAAsC,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAG1F,OAAO,KAAK,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAElF,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnD,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,MAAM,EACpB,iBAAiB,CAAC,EAAE;IAClB,OAAO,EAAE,aAAa,CAAC;IACvB,kBAAkB,CAAC,EAAE,IAAI,CAAC,yBAAyB,EAAE,gBAAgB,GAAG,WAAW,CAAC,CAAC;CACtF;AACD;sEACsE;AACtE,yBAAyB,GAAE,SAAS,uBAAuB,EAAO,EAClE,eAAe,CAAC,EAAE;IAChB,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IAClB,SAAS,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAC7C,SAAS,EAAE,MAAM,CAAC;CACnB,GACA;IACD,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,iBAAiB,EAAE,CAAC,EAAE,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;IACrF;;6EAEyE;IACzE,sBAAsB,EAAE,CAAC,EAAE,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;IAC1F,gBAAgB,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,KAAK,IAAI,CAAC;IAC1E,qBAAqB,EAAE,CAAC,GAAG,EAAE,sBAAsB,KAAK,IAAI,CAAC;IAC7D,eAAe,EAAE,CAAC,OAAO,EAAE;QACzB,QAAQ,EAAE,MAAM,CAAC;QACjB,cAAc,EAAE,MAAM,CAAC;QACvB,gBAAgB,EAAE,gBAAgB,CAAC;QACnC,MAAM,EAAE,MAAM,CAAC;KAChB,KAAK,IAAI,CAAC;IACX,iBAAiB,EAAE,CAAC,OAAO,EAAE;QAAE,OAAO,EAAE,aAAa,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;CAClF,CAoCA"}
@@ -0,0 +1,45 @@
1
+ import { createAttachTool } from "./attach.js";
2
+ import { HostEventStore } from "../../events/index.js";
3
+ import { createEventTool } from "./event.js";
4
+ import { createGenerateImageTool } from "./generate-image.js";
5
+ import { adaptAgentTool, createSandboxTools } from "./pi-tools.js";
6
+ import { createReactTool } from "./react.js";
7
+ import { createSandboxTool } from "./sandbox.js";
8
+ export { createSubagentTool } from "./subagent.js";
9
+ export function createMikanTools(executor, workspaceDir, sandboxController,
10
+ /** Platform capability pack factories (e.g. GitHub PR/CI); instantiated
11
+ * here so each runner owns its packs' bind state. Not core tools. */
12
+ platformToolPackFactories = [], imageGeneration) {
13
+ const { tool: attachTool, setUploadFunction } = createAttachTool();
14
+ const imageTool = imageGeneration ? createGenerateImageTool(imageGeneration) : undefined;
15
+ const { tool: reactTool, setReactFunction } = createReactTool();
16
+ const { tool: eventTool, setEventContext } = createEventTool(HostEventStore.fromWorkspaceDir(workspaceDir));
17
+ const { tool: sandboxTool, setSandboxContext } = createSandboxTool(sandboxController ?? { sandbox: executor.getSandboxConfig() });
18
+ const platformToolPacks = platformToolPackFactories.map((createPack) => createPack());
19
+ const packTools = platformToolPacks.flatMap((pack) => pack.tools);
20
+ return {
21
+ tools: [
22
+ // pi-native read/write/edit/bash, addressed through the sandbox env.
23
+ ...createSandboxTools(),
24
+ adaptAgentTool(eventTool),
25
+ adaptAgentTool(sandboxTool),
26
+ adaptAgentTool(attachTool),
27
+ ...(imageTool ? [adaptAgentTool(imageTool.tool)] : []),
28
+ adaptAgentTool(reactTool),
29
+ ...packTools.map(adaptAgentTool),
30
+ ],
31
+ setUploadFunction,
32
+ setImageUploadFunction: (fn) => {
33
+ imageTool?.setUploadFunction(fn);
34
+ },
35
+ setReactFunction,
36
+ bindPlatformToolPacks: (ctx) => {
37
+ for (const pack of platformToolPacks) {
38
+ pack.bindRun(ctx);
39
+ }
40
+ },
41
+ setEventContext,
42
+ setSandboxContext,
43
+ };
44
+ }
45
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/harness/tools/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAG/C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAyB,MAAM,eAAe,CAAC;AAC1F,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAGjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnD,MAAM,UAAU,gBAAgB,CAC9B,QAAkB,EAClB,YAAoB,EACpB,iBAGC;AACD;sEACsE;AACtE,yBAAyB,GAAuC,EAAE,EAClE,eAIC;IAkBD,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,iBAAiB,EAAE,GAAG,gBAAgB,EAAE,CAAC;IACnE,MAAM,SAAS,GAAG,eAAe,CAAC,CAAC,CAAC,uBAAuB,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACzF,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,gBAAgB,EAAE,GAAG,eAAe,EAAE,CAAC;IAChE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,eAAe,EAAE,GAAG,eAAe,CAC1D,cAAc,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAC9C,CAAC;IACF,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,iBAAiB,EAAE,GAAG,iBAAiB,CAChE,iBAAiB,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,gBAAgB,EAAE,EAAE,CAC9D,CAAC;IACF,MAAM,iBAAiB,GAAG,yBAAyB,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC;IACtF,MAAM,SAAS,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClE,OAAO;QACL,KAAK,EAAE;YACL,qEAAqE;YACrE,GAAG,kBAAkB,EAAE;YACvB,cAAc,CAAC,SAAS,CAAC;YACzB,cAAc,CAAC,WAAW,CAAC;YAC3B,cAAc,CAAC,UAAU,CAAC;YAC1B,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACtD,cAAc,CAAC,SAAS,CAAC;YACzB,GAAG,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC;SACjC;QACD,iBAAiB;QACjB,sBAAsB,EAAE,CAAC,EAAE,EAAE,EAAE;YAC7B,SAAS,EAAE,iBAAiB,CAAC,EAAE,CAAC,CAAC;QACnC,CAAC;QACD,gBAAgB;QAChB,qBAAqB,EAAE,CAAC,GAAG,EAAE,EAAE;YAC7B,KAAK,MAAM,IAAI,IAAI,iBAAiB,EAAE,CAAC;gBACrC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACpB,CAAC;QACH,CAAC;QACD,eAAe;QACf,iBAAiB;KAClB,CAAC;AACJ,CAAC","sourcesContent":["import type { Api, Model } from \"@earendil-works/pi-ai\";\nimport type { ConversationKind } from \"../../adapter.js\";\nimport { createAttachTool } from \"./attach.js\";\nimport type { Executor, SandboxConfig } from \"../../sandbox/index.js\";\nimport type { OfficeAddress, SandboxResourceController } from \"../../types.js\";\nimport { HostEventStore } from \"../../events/index.js\";\nimport { createEventTool } from \"./event.js\";\nimport { createGenerateImageTool } from \"./generate-image.js\";\nimport { adaptAgentTool, createSandboxTools, type MikanHarnessTool } from \"./pi-tools.js\";\nimport { createReactTool } from \"./react.js\";\nimport { createSandboxTool } from \"./sandbox.js\";\nimport type { PlatformToolPackFactory, PlatformToolRunContext } from \"./types.js\";\n\nexport { createSubagentTool } from \"./subagent.js\";\n\nexport function createMikanTools(\n executor: Executor,\n workspaceDir: string,\n sandboxController?: {\n sandbox: SandboxConfig;\n resourceController?: Pick<SandboxResourceController, \"getLimitStatus\" | \"setLimits\">;\n },\n /** Platform capability pack factories (e.g. GitHub PR/CI); instantiated\n * here so each runner owns its packs' bind state. Not core tools. */\n platformToolPackFactories: readonly PlatformToolPackFactory[] = [],\n imageGeneration?: {\n model: Model<Api>;\n getApiKey: () => Promise<string | undefined>;\n outputDir: string;\n },\n): {\n tools: MikanHarnessTool[];\n setUploadFunction: (fn: (filePath: string, title?: string) => Promise<void>) => void;\n /** Upload for generate_image. Receives the file's HOST path — the tool\n * writes host-side, so this must not stage through the sandbox like the\n * attach upload does. No-op when image generation is not configured. */\n setImageUploadFunction: (fn: (hostPath: string, title?: string) => Promise<void>) => void;\n setReactFunction: (fn: ((emoji: string) => Promise<void>) | null) => void;\n bindPlatformToolPacks: (ctx: PlatformToolRunContext) => void;\n setEventContext: (context: {\n platform: string;\n conversationId: string;\n conversationKind: ConversationKind;\n userId: string;\n }) => void;\n setSandboxContext: (context: { address: OfficeAddress; userId: string }) => void;\n} {\n const { tool: attachTool, setUploadFunction } = createAttachTool();\n const imageTool = imageGeneration ? createGenerateImageTool(imageGeneration) : undefined;\n const { tool: reactTool, setReactFunction } = createReactTool();\n const { tool: eventTool, setEventContext } = createEventTool(\n HostEventStore.fromWorkspaceDir(workspaceDir),\n );\n const { tool: sandboxTool, setSandboxContext } = createSandboxTool(\n sandboxController ?? { sandbox: executor.getSandboxConfig() },\n );\n const platformToolPacks = platformToolPackFactories.map((createPack) => createPack());\n const packTools = platformToolPacks.flatMap((pack) => pack.tools);\n return {\n tools: [\n // pi-native read/write/edit/bash, addressed through the sandbox env.\n ...createSandboxTools(),\n adaptAgentTool(eventTool),\n adaptAgentTool(sandboxTool),\n adaptAgentTool(attachTool),\n ...(imageTool ? [adaptAgentTool(imageTool.tool)] : []),\n adaptAgentTool(reactTool),\n ...packTools.map(adaptAgentTool),\n ],\n setUploadFunction,\n setImageUploadFunction: (fn) => {\n imageTool?.setUploadFunction(fn);\n },\n setReactFunction,\n bindPlatformToolPacks: (ctx) => {\n for (const pack of platformToolPacks) {\n pack.bindRun(ctx);\n }\n },\n setEventContext,\n setSandboxContext,\n };\n}\n"]}
@@ -0,0 +1,18 @@
1
+ import { type AgentTool } from "@earendil-works/pi-agent-core";
2
+ import type { MikanHarnessTool } from "../types.js";
3
+ export type { MikanHarnessTool };
4
+ export declare function isHarnessTool(tool: unknown): tool is MikanHarnessTool;
5
+ /**
6
+ * pi's four execution tools, bound to the sandbox-backed env supplied as the
7
+ * harness `toolContext`. Nothing mikan-specific lives here beyond `label` and
8
+ * the bash cwd (pi defaults it to `env.cwd` anyway, but pinning it documents
9
+ * that the runtime workspace root is the shell's working directory).
10
+ */
11
+ export declare function createSandboxTools(): MikanHarnessTool[];
12
+ /**
13
+ * Adapt a mikan-authored `AgentTool` (its execute takes `(id, params, signal,
14
+ * onUpdate)`) to a harness tool. mikan's tools carry their own sandbox executor
15
+ * and read the abort signal from the harness context.
16
+ */
17
+ export declare function adaptAgentTool(tool: AgentTool): MikanHarnessTool;
18
+ //# sourceMappingURL=pi-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pi-tools.d.ts","sourceRoot":"","sources":["../../../src/harness/tools/pi-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,SAAS,EACf,MAAM,+BAA+B,CAAC;AAEvC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,YAAY,EAAE,gBAAgB,EAAE,CAAC;AAYjC,wBAAgB,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,gBAAgB,CAErE;AAkDD;;;;;GAKG;AACH,wBAAgB,kBAAkB,IAAI,gBAAgB,EAAE,CAYvD;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,SAAS,GAAG,gBAAgB,CAQhE"}
@@ -0,0 +1,84 @@
1
+ import { createBashTool, createEditTool, createReadTool, createWriteTool, } from "@earendil-works/pi-agent-core";
2
+ import { Type } from "@sinclair/typebox";
3
+ /**
4
+ * Marker distinguishing harness-native tools from mikan's own `AgentTool`s.
5
+ *
6
+ * `MikanAgentSession` is published API and historically accepted plain
7
+ * `AgentTool`s, so the session upgrades any untagged tool at the boundary
8
+ * instead of forcing every caller to adapt first. Pi's native tools and
9
+ * `adaptAgentTool` results carry the marker so they pass through untouched.
10
+ */
11
+ const HARNESS_TOOL = Symbol.for("mikan.harnessTool");
12
+ export function isHarnessTool(tool) {
13
+ return Boolean(tool && tool[HARNESS_TOOL]);
14
+ }
15
+ function tagHarnessTool(tool) {
16
+ Object.defineProperty(tool, HARNESS_TOOL, { value: true });
17
+ return tool;
18
+ }
19
+ /**
20
+ * Add mikan's `label` parameter to a pi-native tool.
21
+ *
22
+ * pi's tools do not carry a `label`, but mikan's system prompt tells the model
23
+ * every tool takes one and the presenter renders it as the run's current step.
24
+ * The parameter is optional so pi's own validation still accepts a raw call,
25
+ * and it is stripped before the original tool sees the arguments.
26
+ */
27
+ function withLabel(tool) {
28
+ const schema = tool.parameters;
29
+ // Pi uses `typebox`, not mikan's `@sinclair/typebox`. Preserve its JSON
30
+ // Schema (especially required) instead of rebuilding optional markers.
31
+ const parameters = {
32
+ ...schema,
33
+ properties: {
34
+ ...schema.properties,
35
+ label: Type.String({ description: "Brief description of this action (shown to user)" }),
36
+ },
37
+ };
38
+ return tagHarnessTool({
39
+ ...tool,
40
+ parameters,
41
+ execute: async (...args) => {
42
+ const [toolCallId, params, onUpdate, toolContext, invocation, context] = args;
43
+ if (!toolContext?.env) {
44
+ throw new Error(`Tool ${tool.name} requires toolContext.env; supply an authorized execution env.`);
45
+ }
46
+ const { label: _label, ...rest } = params;
47
+ return tool.execute(toolCallId, rest, onUpdate, toolContext, invocation, context);
48
+ },
49
+ });
50
+ }
51
+ /**
52
+ * pi's four execution tools, bound to the sandbox-backed env supplied as the
53
+ * harness `toolContext`. Nothing mikan-specific lives here beyond `label` and
54
+ * the bash cwd (pi defaults it to `env.cwd` anyway, but pinning it documents
55
+ * that the runtime workspace root is the shell's working directory).
56
+ */
57
+ export function createSandboxTools() {
58
+ const bash = createBashTool({
59
+ prepare: (execution, toolContext) => {
60
+ execution.cwd = toolContext.env.cwd;
61
+ },
62
+ });
63
+ return [
64
+ withLabel(createReadTool()),
65
+ withLabel(createWriteTool()),
66
+ withLabel(createEditTool()),
67
+ withLabel(bash),
68
+ ];
69
+ }
70
+ /**
71
+ * Adapt a mikan-authored `AgentTool` (its execute takes `(id, params, signal,
72
+ * onUpdate)`) to a harness tool. mikan's tools carry their own sandbox executor
73
+ * and read the abort signal from the harness context.
74
+ */
75
+ export function adaptAgentTool(tool) {
76
+ return tagHarnessTool({
77
+ ...tool,
78
+ execute: (...args) => {
79
+ const [toolCallId, params, onUpdate, , , context] = args;
80
+ return tool.execute(toolCallId, params, context.abortSignal, onUpdate);
81
+ },
82
+ });
83
+ }
84
+ //# sourceMappingURL=pi-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pi-tools.js","sourceRoot":"","sources":["../../../src/harness/tools/pi-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,cAAc,EACd,cAAc,EACd,eAAe,GAEhB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,IAAI,EAAgB,MAAM,mBAAmB,CAAC;AAKvD;;;;;;;GAOG;AACH,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;AAErD,MAAM,UAAU,aAAa,CAAC,IAAa;IACzC,OAAO,OAAO,CAAC,IAAI,IAAK,IAAqC,CAAC,YAAY,CAAC,CAAC,CAAC;AAC/E,CAAC;AAED,SAAS,cAAc,CAAC,IAAsB;IAC5C,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3D,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,SAAS,CAAC,IAAsB;IACvC,MAAM,MAAM,GAAG,IAAI,CAAC,UAAqB,CAAC;IAC1C,wEAAwE;IACxE,uEAAuE;IACvE,MAAM,UAAU,GAAG;QACjB,GAAG,MAAM;QACT,UAAU,EAAE;YACV,GAAG,MAAM,CAAC,UAAU;YACpB,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,kDAAkD,EAAE,CAAC;SACxF;KACF,CAAC;IAEF,OAAO,cAAc,CAAC;QACpB,GAAG,IAAI;QACP,UAAU;QACV,OAAO,EAAE,KAAK,EAAE,GAAG,IAA6C,EAAE,EAAE;YAClE,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;YAC9E,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC;gBACtB,MAAM,IAAI,KAAK,CACb,QAAQ,IAAI,CAAC,IAAI,gEAAgE,CAClF,CAAC;YACJ,CAAC;YACD,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,MAAiC,CAAC;YACrE,OAAO,IAAI,CAAC,OAAO,CACjB,UAAU,EACV,IAAqB,EACrB,QAAQ,EACR,WAAW,EACX,UAAU,EACV,OAAO,CACR,CAAC;QACJ,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB;IAChC,MAAM,IAAI,GAAG,cAAc,CAAC;QAC1B,OAAO,EAAE,CAAC,SAAS,EAAE,WAAW,EAAE,EAAE;YAClC,SAAS,CAAC,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC;QACtC,CAAC;KACF,CAAC,CAAC;IACH,OAAO;QACL,SAAS,CAAC,cAAc,EAAsB,CAAC;QAC/C,SAAS,CAAC,eAAe,EAAsB,CAAC;QAChD,SAAS,CAAC,cAAc,EAAsB,CAAC;QAC/C,SAAS,CAAC,IAAwB,CAAC;KACpC,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,IAAe;IAC5C,OAAO,cAAc,CAAC;QACpB,GAAG,IAAI;QACP,OAAO,EAAE,CAAC,GAAG,IAA6C,EAAE,EAAE;YAC5D,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,AAAD,EAAG,AAAD,EAAG,OAAO,CAAC,GAAG,IAAI,CAAC;YACzD,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QACzE,CAAC;KACkB,CAAC,CAAC;AACzB,CAAC","sourcesContent":["import {\n createBashTool,\n createEditTool,\n createReadTool,\n createWriteTool,\n type AgentTool,\n} from \"@earendil-works/pi-agent-core\";\nimport { Type, type TSchema } from \"@sinclair/typebox\";\nimport type { MikanHarnessTool } from \"../types.js\";\n\nexport type { MikanHarnessTool };\n\n/**\n * Marker distinguishing harness-native tools from mikan's own `AgentTool`s.\n *\n * `MikanAgentSession` is published API and historically accepted plain\n * `AgentTool`s, so the session upgrades any untagged tool at the boundary\n * instead of forcing every caller to adapt first. Pi's native tools and\n * `adaptAgentTool` results carry the marker so they pass through untouched.\n */\nconst HARNESS_TOOL = Symbol.for(\"mikan.harnessTool\");\n\nexport function isHarnessTool(tool: unknown): tool is MikanHarnessTool {\n return Boolean(tool && (tool as Record<PropertyKey, unknown>)[HARNESS_TOOL]);\n}\n\nfunction tagHarnessTool(tool: MikanHarnessTool): MikanHarnessTool {\n Object.defineProperty(tool, HARNESS_TOOL, { value: true });\n return tool;\n}\n\n/**\n * Add mikan's `label` parameter to a pi-native tool.\n *\n * pi's tools do not carry a `label`, but mikan's system prompt tells the model\n * every tool takes one and the presenter renders it as the run's current step.\n * The parameter is optional so pi's own validation still accepts a raw call,\n * and it is stripped before the original tool sees the arguments.\n */\nfunction withLabel(tool: MikanHarnessTool): MikanHarnessTool {\n const schema = tool.parameters as TSchema;\n // Pi uses `typebox`, not mikan's `@sinclair/typebox`. Preserve its JSON\n // Schema (especially required) instead of rebuilding optional markers.\n const parameters = {\n ...schema,\n properties: {\n ...schema.properties,\n label: Type.String({ description: \"Brief description of this action (shown to user)\" }),\n },\n };\n\n return tagHarnessTool({\n ...tool,\n parameters,\n execute: async (...args: Parameters<MikanHarnessTool[\"execute\"]>) => {\n const [toolCallId, params, onUpdate, toolContext, invocation, context] = args;\n if (!toolContext?.env) {\n throw new Error(\n `Tool ${tool.name} requires toolContext.env; supply an authorized execution env.`,\n );\n }\n const { label: _label, ...rest } = params as Record<string, unknown>;\n return tool.execute(\n toolCallId,\n rest as typeof params,\n onUpdate,\n toolContext,\n invocation,\n context,\n );\n },\n });\n}\n\n/**\n * pi's four execution tools, bound to the sandbox-backed env supplied as the\n * harness `toolContext`. Nothing mikan-specific lives here beyond `label` and\n * the bash cwd (pi defaults it to `env.cwd` anyway, but pinning it documents\n * that the runtime workspace root is the shell's working directory).\n */\nexport function createSandboxTools(): MikanHarnessTool[] {\n const bash = createBashTool({\n prepare: (execution, toolContext) => {\n execution.cwd = toolContext.env.cwd;\n },\n });\n return [\n withLabel(createReadTool() as MikanHarnessTool),\n withLabel(createWriteTool() as MikanHarnessTool),\n withLabel(createEditTool() as MikanHarnessTool),\n withLabel(bash as MikanHarnessTool),\n ];\n}\n\n/**\n * Adapt a mikan-authored `AgentTool` (its execute takes `(id, params, signal,\n * onUpdate)`) to a harness tool. mikan's tools carry their own sandbox executor\n * and read the abort signal from the harness context.\n */\nexport function adaptAgentTool(tool: AgentTool): MikanHarnessTool {\n return tagHarnessTool({\n ...tool,\n execute: (...args: Parameters<MikanHarnessTool[\"execute\"]>) => {\n const [toolCallId, params, onUpdate, , , context] = args;\n return tool.execute(toolCallId, params, context.abortSignal, onUpdate);\n },\n } as MikanHarnessTool);\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../../../src/harness/tools/react.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAI/D,QAAA,MAAM,WAAW;;EAKf,CAAC;AAEH;;;;GAIG;AACH,wBAAgB,eAAe,IAAI;IACjC,IAAI,EAAE,SAAS,CAAC,OAAO,WAAW,CAAC,CAAC;IACpC,gBAAgB,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,KAAK,IAAI,CAAC;CAC3E,CAiBA"}
@@ -1,4 +1,5 @@
1
1
  import { Type } from "@sinclair/typebox";
2
+ import { defineHostFnTool } from "./host-fn-tool.js";
2
3
  const reactSchema = Type.Object({
3
4
  emoji: Type.String({
4
5
  description: "Emoji to react with. Use a short name without colons (e.g. eyes, white_check_mark, +1) on Slack, or a Unicode emoji on Discord/Telegram.",
@@ -10,31 +11,19 @@ const reactSchema = Type.Object({
10
11
  * {@link createReactTool}'s setter; the model only supplies the emoji.
11
12
  */
12
13
  export function createReactTool() {
13
- let reactFn = null;
14
- const tool = {
14
+ const { tool, setFn } = defineHostFnTool({
15
15
  name: "react",
16
- label: "react",
17
16
  description: "Add an emoji reaction to the message you are responding to. Useful for a lightweight acknowledgement (e.g. eyes to show you saw a request, white_check_mark when done) instead of a full reply.",
18
17
  parameters: reactSchema,
19
- execute: async (_toolCallId, { emoji }, signal) => {
20
- if (!reactFn) {
21
- throw new Error("Reactions are not supported in this conversation.");
22
- }
23
- if (signal?.aborted) {
24
- throw new Error("Operation aborted");
25
- }
18
+ unavailable: "Reactions are not supported in this conversation.",
19
+ run: async (reactFn, { emoji }) => {
26
20
  await reactFn(emoji);
27
21
  return {
28
22
  content: [{ type: "text", text: `Reacted with :${emoji.replace(/^:|:$/g, "")}:` }],
29
23
  details: undefined,
30
24
  };
31
25
  },
32
- };
33
- return {
34
- tool,
35
- setReactFunction: (fn) => {
36
- reactFn = fn;
37
- },
38
- };
26
+ });
27
+ return { tool, setReactFunction: setFn };
39
28
  }
40
29
  //# sourceMappingURL=react.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react.js","sourceRoot":"","sources":["../../../src/harness/tools/react.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC;IAC9B,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC;QACjB,WAAW,EACT,0IAA0I;KAC7I,CAAC;CACH,CAAC,CAAC;AAEH;;;;GAIG;AACH,MAAM,UAAU,eAAe;IAI7B,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,gBAAgB,CAAuD;QAC7F,IAAI,EAAE,OAAO;QACb,WAAW,EACT,iMAAiM;QACnM,UAAU,EAAE,WAAW;QACvB,WAAW,EAAE,mDAAmD;QAChE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;YAChC,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC;YACrB,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,iBAAiB,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC;gBAC3F,OAAO,EAAE,SAAS;aACnB,CAAC;QACJ,CAAC;KACF,CAAC,CAAC;IAEH,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC;AAC3C,CAAC","sourcesContent":["import type { AgentTool } from \"@earendil-works/pi-agent-core\";\nimport { Type } from \"@sinclair/typebox\";\nimport { defineHostFnTool } from \"./host-fn-tool.js\";\n\nconst reactSchema = Type.Object({\n emoji: Type.String({\n description:\n \"Emoji to react with. Use a short name without colons (e.g. eyes, white_check_mark, +1) on Slack, or a Unicode emoji on Discord/Telegram.\",\n }),\n});\n\n/**\n * The `react` tool adds an emoji reaction to the message that triggered the\n * current run. The channel and message timestamp are captured per run via\n * {@link createReactTool}'s setter; the model only supplies the emoji.\n */\nexport function createReactTool(): {\n tool: AgentTool<typeof reactSchema>;\n setReactFunction: (fn: ((emoji: string) => Promise<void>) | null) => void;\n} {\n const { tool, setFn } = defineHostFnTool<(emoji: string) => Promise<void>, typeof reactSchema>({\n name: \"react\",\n description:\n \"Add an emoji reaction to the message you are responding to. Useful for a lightweight acknowledgement (e.g. eyes to show you saw a request, white_check_mark when done) instead of a full reply.\",\n parameters: reactSchema,\n unavailable: \"Reactions are not supported in this conversation.\",\n run: async (reactFn, { emoji }) => {\n await reactFn(emoji);\n return {\n content: [{ type: \"text\" as const, text: `Reacted with :${emoji.replace(/^:|:$/g, \"\")}:` }],\n details: undefined,\n };\n },\n });\n\n return { tool, setReactFunction: setFn };\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  import type { AgentTool } from "@earendil-works/pi-agent-core";
2
- import type { DockerContainerManager } from "../provisioner.js";
3
- import type { SandboxConfig } from "../sandbox/index.js";
2
+ import type { SandboxConfig } from "../../sandbox/index.js";
3
+ import type { OfficeAddress, SandboxResourceController } from "../../types.js";
4
4
  declare const sandboxSchema: import("@sinclair/typebox").TObject<{
5
5
  action: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"status">, import("@sinclair/typebox").TLiteral<"set">]>;
6
6
  cpus: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
@@ -8,11 +8,11 @@ declare const sandboxSchema: import("@sinclair/typebox").TObject<{
8
8
  }>;
9
9
  interface SandboxToolContext {
10
10
  userId: string;
11
- conversationId: string;
11
+ address: OfficeAddress;
12
12
  }
13
13
  interface SandboxToolController {
14
14
  sandbox: SandboxConfig;
15
- provisioner?: Pick<DockerContainerManager, "getLimitStatus" | "setLimits">;
15
+ resourceController?: Pick<SandboxResourceController, "getLimitStatus" | "setLimits">;
16
16
  }
17
17
  export declare function createSandboxTool(controller: SandboxToolController): {
18
18
  tool: AgentTool<typeof sandboxSchema>;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sandbox.d.ts","sourceRoot":"","sources":["../../../src/harness/tools/sandbox.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAE/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,KAAK,EAAE,aAAa,EAAkB,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAG/F,QAAA,MAAM,aAAa;;;;EAcjB,CAAC;AAQH,UAAU,kBAAkB;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,aAAa,CAAC;CACxB;AAED,UAAU,qBAAqB;IAC7B,OAAO,EAAE,aAAa,CAAC;IACvB,kBAAkB,CAAC,EAAE,IAAI,CAAC,yBAAyB,EAAE,gBAAgB,GAAG,WAAW,CAAC,CAAC;CACtF;AAED,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,qBAAqB,GAAG;IACpE,IAAI,EAAE,SAAS,CAAC,OAAO,aAAa,CAAC,CAAC;IACtC,iBAAiB,EAAE,CAAC,OAAO,EAAE,kBAAkB,KAAK,IAAI,CAAC;CAC1D,CA+CA"}
@@ -1,11 +1,11 @@
1
1
  import { Type } from "@sinclair/typebox";
2
- import { resolveActorVaultKey } from "../vault/routing.js";
2
+ import { runtimeResourceKey } from "../../sandbox/identity.js";
3
3
  const sandboxSchema = Type.Object({
4
4
  action: Type.Union([Type.Literal("status"), Type.Literal("set")], {
5
5
  description: "Use status to inspect current limits, or set to apply temporary limits.",
6
6
  }),
7
7
  cpus: Type.Optional(Type.String({
8
- description: "Docker CPU limit for action=set, for example '0.5', '1', or '2'.",
8
+ description: "CPU limit for action=set, for example '0.5', '1', or '2'.",
9
9
  })),
10
10
  memory: Type.Optional(Type.String({
11
11
  description: "Docker memory limit for action=set, for example '512m', '1g', or '4g'.",
@@ -16,7 +16,8 @@ export function createSandboxTool(controller) {
16
16
  const tool = {
17
17
  name: "sandbox",
18
18
  label: "sandbox",
19
- description: "Inspect or temporarily set CPU/memory limits for the current managed image sandbox. Limits apply to this conversation's sandbox container and are cleared when the container stops.",
19
+ executionMode: "sequential",
20
+ description: "Inspect or temporarily set CPU/memory limits for the current managed sandbox. Limits apply to this conversation's runtime and are cleared when it stops.",
20
21
  parameters: sandboxSchema,
21
22
  execute: async (_toolCallId, params, signal) => {
22
23
  if (signal?.aborted) {
@@ -25,16 +26,19 @@ export function createSandboxTool(controller) {
25
26
  if (!sandboxContext) {
26
27
  throw new Error("Sandbox context not configured");
27
28
  }
28
- if (controller.sandbox.type !== "image" || !controller.provisioner) {
29
+ if (controller.sandbox.type !== "image" || !controller.resourceController) {
29
30
  throw new Error("The sandbox tool only supports image:* managed sandboxes");
30
31
  }
31
- const containerKey = resolveActorVaultKey(controller.sandbox, sandboxContext.userId, sandboxContext.conversationId);
32
+ const containerKey = runtimeResourceKey(controller.sandbox, {
33
+ userId: sandboxContext.userId,
34
+ address: sandboxContext.address,
35
+ });
32
36
  if (params.action === "set") {
33
37
  const limits = normalizeLimits(params);
34
- const status = await controller.provisioner.setLimits(containerKey, limits);
35
- return textResult(`Updated sandbox limits for ${containerKey}: ${formatLimits(status.limits)}. These temporary limits are cleared when the sandbox container stops.`);
38
+ const status = await controller.resourceController.setLimits(containerKey, limits);
39
+ return textResult(`Updated sandbox limits for ${containerKey}: ${formatLimits(status.limits)}. These temporary limits are cleared when the sandbox runtime stops.`);
36
40
  }
37
- const status = controller.provisioner.getLimitStatus(containerKey);
41
+ const status = controller.resourceController.getLimitStatus(containerKey);
38
42
  return textResult(`Sandbox limits for ${containerKey}: ${formatLimits(status.limits)}${status.boosted ? " (boosted)" : ""}.`);
39
43
  },
40
44
  };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sandbox.js","sourceRoot":"","sources":["../../../src/harness/tools/sandbox.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAGzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAE/D,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC;IAChC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE;QAChE,WAAW,EAAE,yEAAyE;KACvF,CAAC;IACF,IAAI,EAAE,IAAI,CAAC,QAAQ,CACjB,IAAI,CAAC,MAAM,CAAC;QACV,WAAW,EAAE,2DAA2D;KACzE,CAAC,CACH;IACD,MAAM,EAAE,IAAI,CAAC,QAAQ,CACnB,IAAI,CAAC,MAAM,CAAC;QACV,WAAW,EAAE,wEAAwE;KACtF,CAAC,CACH;CACF,CAAC,CAAC;AAkBH,MAAM,UAAU,iBAAiB,CAAC,UAAiC;IAIjE,IAAI,cAAc,GAA8B,IAAI,CAAC;IAErD,MAAM,IAAI,GAAoC;QAC5C,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,SAAS;QAChB,aAAa,EAAE,YAAY;QAC3B,WAAW,EACT,0JAA0J;QAC5J,UAAU,EAAE,aAAa;QACzB,OAAO,EAAE,KAAK,EAAE,WAAmB,EAAE,MAAyB,EAAE,MAAoB,EAAE,EAAE;YACtF,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;gBACpB,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;YACvC,CAAC;YACD,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpB,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;YACpD,CAAC;YACD,IAAI,UAAU,CAAC,OAAO,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC;gBAC1E,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;YAC9E,CAAC;YAED,MAAM,YAAY,GAAG,kBAAkB,CAAC,UAAU,CAAC,OAAO,EAAE;gBAC1D,MAAM,EAAE,cAAc,CAAC,MAAM;gBAC7B,OAAO,EAAE,cAAc,CAAC,OAAO;aAChC,CAAC,CAAC;YAEH,IAAI,MAAM,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;gBAC5B,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;gBACvC,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,kBAAkB,CAAC,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;gBACnF,OAAO,UAAU,CACf,8BAA8B,YAAY,KAAK,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,sEAAsE,CACjJ,CAAC;YACJ,CAAC;YAED,MAAM,MAAM,GAAG,UAAU,CAAC,kBAAkB,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;YAC1E,OAAO,UAAU,CACf,sBAAsB,YAAY,KAAK,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,GAAG,CAC3G,CAAC;QACJ,CAAC;KACF,CAAC;IAEF,OAAO;QACL,IAAI;QACJ,iBAAiB,EAAE,CAAC,OAA2B,EAAE,EAAE;YACjD,cAAc,GAAG,OAAO,CAAC;QAC3B,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,MAAyB;IAChD,MAAM,IAAI,GAAG,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,mBAAmB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5D,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAC5D,CAAC;IACD,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;AACtE,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAY,EAAE,KAAyB;IAClE,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAC/B,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,sDAAsD,CAAC,CAAC;IACjF,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,YAAY,CAAC,MAAkC;IACtD,OAAO,OAAO,MAAM,EAAE,IAAI,IAAI,WAAW,aAAa,MAAM,EAAE,MAAM,IAAI,WAAW,EAAE,CAAC;AACxF,CAAC;AAED,SAAS,UAAU,CAAC,IAAY;IAI9B,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;AACnE,CAAC","sourcesContent":["import type { AgentTool } from \"@earendil-works/pi-agent-core\";\nimport { Type } from \"@sinclair/typebox\";\nimport type { SandboxConfig } from \"../../sandbox/index.js\";\nimport type { OfficeAddress, ResourceLimits, SandboxResourceController } from \"../../types.js\";\nimport { runtimeResourceKey } from \"../../sandbox/identity.js\";\n\nconst sandboxSchema = Type.Object({\n action: Type.Union([Type.Literal(\"status\"), Type.Literal(\"set\")], {\n description: \"Use status to inspect current limits, or set to apply temporary limits.\",\n }),\n cpus: Type.Optional(\n Type.String({\n description: \"CPU limit for action=set, for example '0.5', '1', or '2'.\",\n }),\n ),\n memory: Type.Optional(\n Type.String({\n description: \"Docker memory limit for action=set, for example '512m', '1g', or '4g'.\",\n }),\n ),\n});\n\ntype SandboxToolParams = {\n action: \"status\" | \"set\";\n cpus?: string;\n memory?: string;\n};\n\ninterface SandboxToolContext {\n userId: string;\n address: OfficeAddress;\n}\n\ninterface SandboxToolController {\n sandbox: SandboxConfig;\n resourceController?: Pick<SandboxResourceController, \"getLimitStatus\" | \"setLimits\">;\n}\n\nexport function createSandboxTool(controller: SandboxToolController): {\n tool: AgentTool<typeof sandboxSchema>;\n setSandboxContext: (context: SandboxToolContext) => void;\n} {\n let sandboxContext: SandboxToolContext | null = null;\n\n const tool: AgentTool<typeof sandboxSchema> = {\n name: \"sandbox\",\n label: \"sandbox\",\n executionMode: \"sequential\",\n description:\n \"Inspect or temporarily set CPU/memory limits for the current managed sandbox. Limits apply to this conversation's runtime and are cleared when it stops.\",\n parameters: sandboxSchema,\n execute: async (_toolCallId: string, params: SandboxToolParams, signal?: AbortSignal) => {\n if (signal?.aborted) {\n throw new Error(\"Operation aborted\");\n }\n if (!sandboxContext) {\n throw new Error(\"Sandbox context not configured\");\n }\n if (controller.sandbox.type !== \"image\" || !controller.resourceController) {\n throw new Error(\"The sandbox tool only supports image:* managed sandboxes\");\n }\n\n const containerKey = runtimeResourceKey(controller.sandbox, {\n userId: sandboxContext.userId,\n address: sandboxContext.address,\n });\n\n if (params.action === \"set\") {\n const limits = normalizeLimits(params);\n const status = await controller.resourceController.setLimits(containerKey, limits);\n return textResult(\n `Updated sandbox limits for ${containerKey}: ${formatLimits(status.limits)}. These temporary limits are cleared when the sandbox runtime stops.`,\n );\n }\n\n const status = controller.resourceController.getLimitStatus(containerKey);\n return textResult(\n `Sandbox limits for ${containerKey}: ${formatLimits(status.limits)}${status.boosted ? \" (boosted)\" : \"\"}.`,\n );\n },\n };\n\n return {\n tool,\n setSandboxContext: (context: SandboxToolContext) => {\n sandboxContext = context;\n },\n };\n}\n\nfunction normalizeLimits(params: SandboxToolParams): ResourceLimits {\n const cpus = normalizeLimitValue(\"cpus\", params.cpus);\n const memory = normalizeLimitValue(\"memory\", params.memory);\n if (!cpus && !memory) {\n throw new Error(\"action=set requires cpus and/or memory\");\n }\n return { ...(cpus ? { cpus } : {}), ...(memory ? { memory } : {}) };\n}\n\nfunction normalizeLimitValue(name: string, value: string | undefined): string | undefined {\n if (value === undefined) return undefined;\n const trimmed = value.trim();\n if (!trimmed) return undefined;\n if (!/^[A-Za-z0-9_.-]+$/.test(trimmed)) {\n throw new Error(`${name} must not contain whitespace or shell metacharacters`);\n }\n return trimmed;\n}\n\nfunction formatLimits(limits: ResourceLimits | undefined): string {\n return `CPU ${limits?.cpus ?? \"unlimited\"} / Memory ${limits?.memory ?? \"unlimited\"}`;\n}\n\nfunction textResult(text: string): {\n content: Array<{ type: \"text\"; text: string }>;\n details: undefined;\n} {\n return { content: [{ type: \"text\", text }], details: undefined };\n}\n"]}
@@ -0,0 +1,88 @@
1
+ import type { AgentTool } from "@earendil-works/pi-agent-core";
2
+ import { type TSchema } from "@sinclair/typebox";
3
+ import type { SubagentRunOutput, SubagentRunRequest, SubagentRunResult } from "../types.js";
4
+ import type { SubagentProgressNode, SubagentProgressSnapshot } from "../../types.js";
5
+ declare const subagentSchema: import("@sinclair/typebox").TObject<{
6
+ parentContext: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
7
+ mode: import("@sinclair/typebox").TLiteral<"normalized">;
8
+ recentTurns: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
9
+ }>>;
10
+ outputSchema: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnknown>>;
11
+ budget: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
12
+ maxTurns: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
13
+ maxTokens: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
14
+ maxCostUsd: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
15
+ maxDurationMs: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
16
+ }>>;
17
+ task: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
18
+ profile: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
19
+ label: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
20
+ input: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnknown>;
21
+ tasks: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
22
+ task: import("@sinclair/typebox").TString;
23
+ profile: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
24
+ label: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
25
+ input: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnknown>;
26
+ }>>>;
27
+ dag: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
28
+ nodes: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
29
+ task: import("@sinclair/typebox").TString;
30
+ profile: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
31
+ label: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
32
+ input: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnknown>;
33
+ id: import("@sinclair/typebox").TString;
34
+ dependsOn: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
35
+ }>>;
36
+ maxConcurrency: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
37
+ }>>;
38
+ }>;
39
+ /**
40
+ * `hooks` carries host-side callbacks rather than widening the request: the
41
+ * request is the public shape the model asks for, and a
42
+ * progress sink belongs to whoever is displaying the run.
43
+ */
44
+ type RunSubagent = <TOutputSchema extends TSchema | undefined = undefined>(request: SubagentRunRequest<TOutputSchema>, hooks?: {
45
+ onActivity?: (activity: string) => void;
46
+ }) => Promise<SubagentRunResult<SubagentRunOutput<TOutputSchema>>>;
47
+ /** What the model needs to choose a profile: what it is, and what it can do. */
48
+ interface SubagentProfileMenuEntry {
49
+ description: string;
50
+ tools?: string[];
51
+ }
52
+ /**
53
+ * Create the normal agent's bounded subagent delegation and DAG tool.
54
+ * `globalSlots` is the process-wide fan-out account shared across every
55
+ * conversation's tool instance; omitted, fan-out is bounded per run only.
56
+ *
57
+ * `profiles` must be non-empty: it is both the model-facing menu and the only
58
+ * way to grant a subagent any capability at all.
59
+ */
60
+ export declare function createSubagentTool(runSubagent: RunSubagent, profiles: ReadonlyMap<string, SubagentProfileMenuEntry>): AgentTool<typeof subagentSchema>;
61
+ /** Longest label the dashboard renders; longer ones are clamped, never rejected. */
62
+ export declare const MAX_SUBAGENT_LABEL_CHARS = 100;
63
+ /** The display bounds, applied once at construction and again on parse. */
64
+ export declare function boundSubagentProgressNode(node: SubagentProgressNode): SubagentProgressNode;
65
+ /**
66
+ * Parse a snapshot back off the untyped transport. All-or-nothing: one
67
+ * malformed node means the payload is not ours (any tool can put anything in
68
+ * `details`), so the whole candidate is rejected rather than partially shown.
69
+ */
70
+ export declare function parseSubagentProgressSnapshot(value: unknown): SubagentProgressSnapshot | undefined;
71
+ /**
72
+ * Project a live snapshot to its end-of-tool state: nodes still pending or
73
+ * running settle to the tool call's outcome. Metrics spread through
74
+ * unchanged — an unsettled node never reported any.
75
+ */
76
+ export declare function settleSubagentProgress(snapshot: SubagentProgressSnapshot, isError: boolean): SubagentProgressSnapshot;
77
+ /**
78
+ * Fold concurrent or successive subagent fan-outs into the single snapshot the
79
+ * dashboard renders. A run can call the subagent tool more than once; picking
80
+ * one snapshot would drop the others' cost and status, and alternating between
81
+ * them makes the live view flicker. Node ids are namespaced by source because
82
+ * each fan-out numbers its own nodes from zero.
83
+ */
84
+ export declare function mergeSubagentProgress(snapshots: readonly SubagentProgressSnapshot[]): SubagentProgressSnapshot | undefined;
85
+ /** The dashboard as response source Markdown; adapters own any conversion. */
86
+ export declare function renderSubagentDashboard(snapshot: SubagentProgressSnapshot): string;
87
+ export {};
88
+ //# sourceMappingURL=subagent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subagent.d.ts","sourceRoot":"","sources":["../../../src/harness/tools/subagent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAA2B,MAAM,+BAA+B,CAAC;AACxF,OAAO,EAAqB,KAAK,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAI5F,OAAO,KAAK,EACV,oBAAoB,EACpB,wBAAwB,EAEzB,MAAM,gBAAgB,CAAC;AAuHxB,QAAA,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAA0B,CAAC;AAM/C;;;;GAIG;AACH,KAAK,WAAW,GAAG,CAAC,aAAa,SAAS,OAAO,GAAG,SAAS,GAAG,SAAS,EACvE,OAAO,EAAE,kBAAkB,CAAC,aAAa,CAAC,EAC1C,KAAK,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;CAAE,KAChD,OAAO,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;AA2VlE,gFAAgF;AAChF,UAAU,wBAAwB;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAyBD;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,wBAAwB,CAAC,GACtD,SAAS,CAAC,OAAO,cAAc,CAAC,CA8ElC;AAKD,oFAAoF;AACpF,eAAO,MAAM,wBAAwB,MAAM,CAAC;AA0C5C,2EAA2E;AAC3E,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,oBAAoB,GAAG,oBAAoB,CAU1F;AAsCD;;;;GAIG;AACH,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,OAAO,GACb,wBAAwB,GAAG,SAAS,CAgBtC;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,wBAAwB,EAClC,OAAO,EAAE,OAAO,GACf,wBAAwB,CAS1B;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,SAAS,wBAAwB,EAAE,GAC7C,wBAAwB,GAAG,SAAS,CAYtC;AAoFD,8EAA8E;AAC9E,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,wBAAwB,GAAG,MAAM,CAOlF"}