@geminixiang/mikan 1.0.0-beta.39 → 1.0.0-beta.40

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 (397) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/README.md +50 -23
  3. package/dist/adapter.d.ts +1 -1
  4. package/dist/adapter.d.ts.map +1 -1
  5. package/dist/adapter.js.map +1 -1
  6. package/dist/adapters/discord/bot.d.ts +2 -1
  7. package/dist/adapters/discord/bot.d.ts.map +1 -1
  8. package/dist/adapters/discord/bot.js +3 -3
  9. package/dist/adapters/discord/bot.js.map +1 -1
  10. package/dist/adapters/discord/context.d.ts +2 -1
  11. package/dist/adapters/discord/context.d.ts.map +1 -1
  12. package/dist/adapters/discord/context.js +1 -1
  13. package/dist/adapters/discord/context.js.map +1 -1
  14. package/dist/adapters/github/bot.d.ts +2 -1
  15. package/dist/adapters/github/bot.d.ts.map +1 -1
  16. package/dist/adapters/github/bot.js +11 -7
  17. package/dist/adapters/github/bot.js.map +1 -1
  18. package/dist/adapters/github/client.js +2 -2
  19. package/dist/adapters/github/client.js.map +1 -1
  20. package/dist/adapters/github/context.d.ts +4 -2
  21. package/dist/adapters/github/context.d.ts.map +1 -1
  22. package/dist/adapters/github/context.js +2 -2
  23. package/dist/adapters/github/context.js.map +1 -1
  24. package/dist/adapters/github/gcp-auth.js +2 -2
  25. package/dist/adapters/github/gcp-auth.js.map +1 -1
  26. package/dist/adapters/github/github-ops.d.ts +3 -2
  27. package/dist/adapters/github/github-ops.d.ts.map +1 -1
  28. package/dist/adapters/github/github-ops.js +1 -1
  29. package/dist/adapters/github/github-ops.js.map +1 -1
  30. package/dist/adapters/github/ids.d.ts.map +1 -1
  31. package/dist/adapters/github/ids.js +7 -3
  32. package/dist/adapters/github/ids.js.map +1 -1
  33. package/dist/adapters/github/repo.js +3 -3
  34. package/dist/adapters/github/repo.js.map +1 -1
  35. package/dist/adapters/github/types.d.ts +2 -1
  36. package/dist/adapters/github/types.d.ts.map +1 -1
  37. package/dist/adapters/github/types.js.map +1 -1
  38. package/dist/adapters/progressive-renderer.js +1 -1
  39. package/dist/adapters/progressive-renderer.js.map +1 -1
  40. package/dist/adapters/shared.js +4 -4
  41. package/dist/adapters/shared.js.map +1 -1
  42. package/dist/adapters/slack/blocks.d.ts.map +1 -1
  43. package/dist/adapters/slack/blocks.js +3 -1
  44. package/dist/adapters/slack/blocks.js.map +1 -1
  45. package/dist/adapters/slack/bot.d.ts +12 -2
  46. package/dist/adapters/slack/bot.d.ts.map +1 -1
  47. package/dist/adapters/slack/bot.js +70 -9
  48. package/dist/adapters/slack/bot.js.map +1 -1
  49. package/dist/adapters/slack/context.d.ts +2 -1
  50. package/dist/adapters/slack/context.d.ts.map +1 -1
  51. package/dist/adapters/slack/context.js +1 -0
  52. package/dist/adapters/slack/context.js.map +1 -1
  53. package/dist/adapters/slack/response-lifecycle.d.ts.map +1 -1
  54. package/dist/adapters/slack/response-lifecycle.js +4 -4
  55. package/dist/adapters/slack/response-lifecycle.js.map +1 -1
  56. package/dist/adapters/slack/session.d.ts.map +1 -1
  57. package/dist/adapters/slack/session.js +2 -3
  58. package/dist/adapters/slack/session.js.map +1 -1
  59. package/dist/adapters/slack/tools/attach.js +1 -1
  60. package/dist/adapters/slack/tools/attach.js.map +1 -1
  61. package/dist/adapters/telegram/bot.d.ts +2 -1
  62. package/dist/adapters/telegram/bot.d.ts.map +1 -1
  63. package/dist/adapters/telegram/bot.js +6 -6
  64. package/dist/adapters/telegram/bot.js.map +1 -1
  65. package/dist/adapters/telegram/context.d.ts +2 -1
  66. package/dist/adapters/telegram/context.d.ts.map +1 -1
  67. package/dist/adapters/telegram/context.js.map +1 -1
  68. package/dist/adapters/telegram/html.d.ts.map +1 -1
  69. package/dist/adapters/telegram/html.js +10 -7
  70. package/dist/adapters/telegram/html.js.map +1 -1
  71. package/dist/adapters/types.d.ts +4 -2
  72. package/dist/adapters/types.d.ts.map +1 -1
  73. package/dist/adapters/types.js.map +1 -1
  74. package/dist/agent-events.d.ts +3 -2
  75. package/dist/agent-events.d.ts.map +1 -1
  76. package/dist/agent-events.js +19 -1
  77. package/dist/agent-events.js.map +1 -1
  78. package/dist/agent.d.ts.map +1 -1
  79. package/dist/agent.js +34 -9
  80. package/dist/agent.js.map +1 -1
  81. package/dist/cli/arg-grammar.d.ts.map +1 -1
  82. package/dist/cli/arg-grammar.js +5 -3
  83. package/dist/cli/arg-grammar.js.map +1 -1
  84. package/dist/cli/boot.d.ts.map +1 -1
  85. package/dist/cli/boot.js +5 -3
  86. package/dist/cli/boot.js.map +1 -1
  87. package/dist/cli/download.d.ts.map +1 -1
  88. package/dist/cli/download.js +2 -0
  89. package/dist/cli/download.js.map +1 -1
  90. package/dist/cli/ext-dev.d.ts.map +1 -1
  91. package/dist/cli/ext-dev.js +4 -1
  92. package/dist/cli/ext-dev.js.map +1 -1
  93. package/dist/cli/ext.d.ts.map +1 -1
  94. package/dist/cli/ext.js +123 -23
  95. package/dist/cli/ext.js.map +1 -1
  96. package/dist/cli/office.d.ts.map +1 -1
  97. package/dist/cli/office.js +2 -0
  98. package/dist/cli/office.js.map +1 -1
  99. package/dist/cli/types.d.ts +0 -6
  100. package/dist/cli/types.d.ts.map +1 -1
  101. package/dist/cli/types.js.map +1 -1
  102. package/dist/commands/admin.js +1 -1
  103. package/dist/commands/admin.js.map +1 -1
  104. package/dist/commands/auto-reply.js +2 -2
  105. package/dist/commands/auto-reply.js.map +1 -1
  106. package/dist/commands/extensions.js +1 -1
  107. package/dist/commands/extensions.js.map +1 -1
  108. package/dist/commands/login.js +1 -1
  109. package/dist/commands/login.js.map +1 -1
  110. package/dist/commands/manifest.d.ts +7 -0
  111. package/dist/commands/manifest.d.ts.map +1 -1
  112. package/dist/commands/manifest.js +28 -0
  113. package/dist/commands/manifest.js.map +1 -1
  114. package/dist/commands/model.d.ts.map +1 -1
  115. package/dist/commands/model.js +4 -1
  116. package/dist/commands/model.js.map +1 -1
  117. package/dist/commands/new.js +1 -1
  118. package/dist/commands/new.js.map +1 -1
  119. package/dist/commands/sandbox.js +3 -3
  120. package/dist/commands/sandbox.js.map +1 -1
  121. package/dist/commands/session-view.d.ts.map +1 -1
  122. package/dist/commands/session-view.js +5 -2
  123. package/dist/commands/session-view.js.map +1 -1
  124. package/dist/commands/types.d.ts +1 -1
  125. package/dist/commands/types.d.ts.map +1 -1
  126. package/dist/commands/types.js.map +1 -1
  127. package/dist/config.js +4 -4
  128. package/dist/config.js.map +1 -1
  129. package/dist/env-manifest.d.ts +2 -0
  130. package/dist/env-manifest.d.ts.map +1 -1
  131. package/dist/env-manifest.js +11 -1
  132. package/dist/env-manifest.js.map +1 -1
  133. package/dist/events.d.ts.map +1 -1
  134. package/dist/events.js +7 -6
  135. package/dist/events.js.map +1 -1
  136. package/dist/execution-resolver.d.ts.map +1 -1
  137. package/dist/execution-resolver.js +3 -2
  138. package/dist/execution-resolver.js.map +1 -1
  139. package/dist/extension-schedules.d.ts +31 -0
  140. package/dist/extension-schedules.d.ts.map +1 -0
  141. package/dist/extension-schedules.js +229 -0
  142. package/dist/extension-schedules.js.map +1 -0
  143. package/dist/harness/auth.js +5 -5
  144. package/dist/harness/auth.js.map +1 -1
  145. package/dist/harness/event-format.d.ts +2 -0
  146. package/dist/harness/event-format.d.ts.map +1 -1
  147. package/dist/harness/event-format.js +2 -1
  148. package/dist/harness/event-format.js.map +1 -1
  149. package/dist/harness/extensions/loader.d.ts +2 -2
  150. package/dist/harness/extensions/loader.d.ts.map +1 -1
  151. package/dist/harness/extensions/loader.js +135 -33
  152. package/dist/harness/extensions/loader.js.map +1 -1
  153. package/dist/harness/extensions/registry.d.ts +33 -1
  154. package/dist/harness/extensions/registry.d.ts.map +1 -1
  155. package/dist/harness/extensions/registry.js +79 -2
  156. package/dist/harness/extensions/registry.js.map +1 -1
  157. package/dist/harness/extensions/types.d.ts +165 -21
  158. package/dist/harness/extensions/types.d.ts.map +1 -1
  159. package/dist/harness/extensions/types.js.map +1 -1
  160. package/dist/harness/index.d.ts +2 -2
  161. package/dist/harness/index.d.ts.map +1 -1
  162. package/dist/harness/index.js +1 -1
  163. package/dist/harness/index.js.map +1 -1
  164. package/dist/harness/models.d.ts.map +1 -1
  165. package/dist/harness/models.js +36 -24
  166. package/dist/harness/models.js.map +1 -1
  167. package/dist/harness/runner.js +2 -2
  168. package/dist/harness/runner.js.map +1 -1
  169. package/dist/harness/session-store.d.ts.map +1 -1
  170. package/dist/harness/session-store.js +9 -7
  171. package/dist/harness/session-store.js.map +1 -1
  172. package/dist/harness/skills.js +3 -3
  173. package/dist/harness/skills.js.map +1 -1
  174. package/dist/harness/subagent-profiles.js +2 -2
  175. package/dist/harness/subagent-profiles.js.map +1 -1
  176. package/dist/harness/subagent-runner.js +3 -3
  177. package/dist/harness/subagent-runner.js.map +1 -1
  178. package/dist/index.d.ts +8 -8
  179. package/dist/index.d.ts.map +1 -1
  180. package/dist/index.js +5 -5
  181. package/dist/index.js.map +1 -1
  182. package/dist/main.js +58 -9
  183. package/dist/main.js.map +1 -1
  184. package/dist/observability/instrument.js +1 -1
  185. package/dist/observability/instrument.js.map +1 -1
  186. package/dist/observability/sentry.js +1 -1
  187. package/dist/observability/sentry.js.map +1 -1
  188. package/dist/office/index.d.ts +1 -1
  189. package/dist/office/index.d.ts.map +1 -1
  190. package/dist/office/index.js +1 -1
  191. package/dist/office/index.js.map +1 -1
  192. package/dist/office/layout.d.ts +7 -0
  193. package/dist/office/layout.d.ts.map +1 -1
  194. package/dist/office/layout.js +10 -1
  195. package/dist/office/layout.js.map +1 -1
  196. package/dist/office/registry.d.ts.map +1 -1
  197. package/dist/office/registry.js +7 -5
  198. package/dist/office/registry.js.map +1 -1
  199. package/dist/packages/materialize.js +10 -3
  200. package/dist/packages/materialize.js.map +1 -1
  201. package/dist/packages/source.d.ts +6 -0
  202. package/dist/packages/source.d.ts.map +1 -1
  203. package/dist/packages/source.js +14 -2
  204. package/dist/packages/source.js.map +1 -1
  205. package/dist/packages/types.d.ts +5 -3
  206. package/dist/packages/types.d.ts.map +1 -1
  207. package/dist/packages/types.js.map +1 -1
  208. package/dist/provisioner.js +5 -5
  209. package/dist/provisioner.js.map +1 -1
  210. package/dist/runtime/conversation-runtime.d.ts.map +1 -1
  211. package/dist/runtime/conversation-runtime.js +44 -2
  212. package/dist/runtime/conversation-runtime.js.map +1 -1
  213. package/dist/runtime/types.d.ts +10 -2
  214. package/dist/runtime/types.d.ts.map +1 -1
  215. package/dist/runtime/types.js.map +1 -1
  216. package/dist/sandbox/cloudflare.js +1 -1
  217. package/dist/sandbox/cloudflare.js.map +1 -1
  218. package/dist/sandbox/container.js +1 -2
  219. package/dist/sandbox/container.js.map +1 -1
  220. package/dist/sandbox/firecracker.js +1 -1
  221. package/dist/sandbox/firecracker.js.map +1 -1
  222. package/dist/sandbox/gondolin.d.ts.map +1 -1
  223. package/dist/sandbox/gondolin.js +1 -2
  224. package/dist/sandbox/gondolin.js.map +1 -1
  225. package/dist/sandbox/host.d.ts.map +1 -1
  226. package/dist/sandbox/host.js +4 -5
  227. package/dist/sandbox/host.js.map +1 -1
  228. package/dist/sandbox/index.js +1 -1
  229. package/dist/sandbox/index.js.map +1 -1
  230. package/dist/sandbox/utils.d.ts +2 -0
  231. package/dist/sandbox/utils.d.ts.map +1 -1
  232. package/dist/sandbox/utils.js +30 -1
  233. package/dist/sandbox/utils.js.map +1 -1
  234. package/dist/sessions/chat-history-sync.d.ts.map +1 -1
  235. package/dist/sessions/chat-history-sync.js +9 -8
  236. package/dist/sessions/chat-history-sync.js.map +1 -1
  237. package/dist/sessions/conversation-log.d.ts.map +1 -1
  238. package/dist/sessions/conversation-log.js +5 -2
  239. package/dist/sessions/conversation-log.js.map +1 -1
  240. package/dist/sessions/history-line.d.ts +9 -0
  241. package/dist/sessions/history-line.d.ts.map +1 -1
  242. package/dist/sessions/history-line.js +22 -1
  243. package/dist/sessions/history-line.js.map +1 -1
  244. package/dist/sessions/session-key.d.ts +5 -12
  245. package/dist/sessions/session-key.d.ts.map +1 -1
  246. package/dist/sessions/session-key.js +23 -0
  247. package/dist/sessions/session-key.js.map +1 -1
  248. package/dist/sessions/store.d.ts +2 -6
  249. package/dist/sessions/store.d.ts.map +1 -1
  250. package/dist/sessions/store.js +16 -16
  251. package/dist/sessions/store.js.map +1 -1
  252. package/dist/sessions/types.d.ts +2 -1
  253. package/dist/sessions/types.d.ts.map +1 -1
  254. package/dist/sessions/types.js.map +1 -1
  255. package/dist/tools/bash.js +1 -1
  256. package/dist/tools/bash.js.map +1 -1
  257. package/dist/tools/edit.d.ts.map +1 -1
  258. package/dist/tools/edit.js +4 -1
  259. package/dist/tools/edit.js.map +1 -1
  260. package/dist/tools/event.js +1 -1
  261. package/dist/tools/event.js.map +1 -1
  262. package/dist/tools/generate-image.js +3 -3
  263. package/dist/tools/generate-image.js.map +1 -1
  264. package/dist/tools/read.js +4 -4
  265. package/dist/tools/read.js.map +1 -1
  266. package/dist/tools/subagent.d.ts.map +1 -1
  267. package/dist/tools/subagent.js +9 -2
  268. package/dist/tools/subagent.js.map +1 -1
  269. package/dist/tools/types.d.ts +0 -26
  270. package/dist/tools/types.d.ts.map +1 -1
  271. package/dist/tools/types.js.map +1 -1
  272. package/dist/trigger.d.ts +2 -1
  273. package/dist/trigger.d.ts.map +1 -1
  274. package/dist/trigger.js.map +1 -1
  275. package/dist/types.d.ts +108 -16
  276. package/dist/types.d.ts.map +1 -1
  277. package/dist/types.js +2 -2
  278. package/dist/types.js.map +1 -1
  279. package/dist/utils/file-guards.d.ts +9 -0
  280. package/dist/utils/file-guards.d.ts.map +1 -1
  281. package/dist/utils/file-guards.js +44 -1
  282. package/dist/utils/file-guards.js.map +1 -1
  283. package/dist/vault/disabled.d.ts.map +1 -1
  284. package/dist/vault/disabled.js +3 -0
  285. package/dist/vault/disabled.js.map +1 -1
  286. package/dist/vault/index.d.ts +29 -0
  287. package/dist/vault/index.d.ts.map +1 -1
  288. package/dist/vault/index.js +68 -4
  289. package/dist/vault/index.js.map +1 -1
  290. package/dist/vault/types.d.ts +2 -0
  291. package/dist/vault/types.d.ts.map +1 -1
  292. package/dist/vault/types.js.map +1 -1
  293. package/dist/web/admin/portal.d.ts +1 -1
  294. package/dist/web/admin/portal.d.ts.map +1 -1
  295. package/dist/web/admin/portal.js +194 -22
  296. package/dist/web/admin/portal.js.map +1 -1
  297. package/dist/web/admin/provider-models.js +1 -1
  298. package/dist/web/admin/provider-models.js.map +1 -1
  299. package/dist/web/login/oauth.js +1 -1
  300. package/dist/web/login/oauth.js.map +1 -1
  301. package/dist/web/login/portal.d.ts +1 -1
  302. package/dist/web/login/portal.d.ts.map +1 -1
  303. package/dist/web/login/portal.js +13 -36
  304. package/dist/web/login/portal.js.map +1 -1
  305. package/dist/web/portal-shell.d.ts +17 -0
  306. package/dist/web/portal-shell.d.ts.map +1 -1
  307. package/dist/web/portal-shell.js +66 -1
  308. package/dist/web/portal-shell.js.map +1 -1
  309. package/dist/web/server.d.ts +3 -2
  310. package/dist/web/server.d.ts.map +1 -1
  311. package/dist/web/server.js +3 -3
  312. package/dist/web/server.js.map +1 -1
  313. package/dist/web/session-view/portal.d.ts +1 -1
  314. package/dist/web/session-view/portal.d.ts.map +1 -1
  315. package/dist/web/session-view/portal.js +10 -12
  316. package/dist/web/session-view/portal.js.map +1 -1
  317. package/dist/web/session-view/service.d.ts.map +1 -1
  318. package/dist/web/session-view/service.js +11 -6
  319. package/dist/web/session-view/service.js.map +1 -1
  320. package/dist/web/session-view/types.d.ts +0 -4
  321. package/dist/web/session-view/types.d.ts.map +1 -1
  322. package/dist/web/session-view/types.js.map +1 -1
  323. package/dist/web/token-store.js +1 -1
  324. package/dist/web/token-store.js.map +1 -1
  325. package/package.json +8 -17
  326. package/dist/cli/ext-git.d.ts +0 -17
  327. package/dist/cli/ext-git.d.ts.map +0 -1
  328. package/dist/cli/ext-git.js +0 -107
  329. package/dist/cli/ext-git.js.map +0 -1
  330. package/dist/commands/parse.d.ts +0 -7
  331. package/dist/commands/parse.d.ts.map +0 -1
  332. package/dist/commands/parse.js +0 -14
  333. package/dist/commands/parse.js.map +0 -1
  334. package/dist/commands/text.d.ts +0 -2
  335. package/dist/commands/text.d.ts.map +0 -1
  336. package/dist/commands/text.js +0 -16
  337. package/dist/commands/text.js.map +0 -1
  338. package/dist/harness/extensions/blockkit.d.ts +0 -19
  339. package/dist/harness/extensions/blockkit.d.ts.map +0 -1
  340. package/dist/harness/extensions/blockkit.js +0 -42
  341. package/dist/harness/extensions/blockkit.js.map +0 -1
  342. package/dist/sandbox/path-context.d.ts +0 -3
  343. package/dist/sandbox/path-context.d.ts.map +0 -1
  344. package/dist/sandbox/path-context.js +0 -30
  345. package/dist/sandbox/path-context.js.map +0 -1
  346. package/dist/sessions/metadata.d.ts +0 -3
  347. package/dist/sessions/metadata.d.ts.map +0 -1
  348. package/dist/sessions/metadata.js +0 -11
  349. package/dist/sessions/metadata.js.map +0 -1
  350. package/dist/sessions/policy.d.ts +0 -6
  351. package/dist/sessions/policy.d.ts.map +0 -1
  352. package/dist/sessions/policy.js +0 -25
  353. package/dist/sessions/policy.js.map +0 -1
  354. package/dist/tools/truncate.d.ts +0 -33
  355. package/dist/tools/truncate.d.ts.map +0 -1
  356. package/dist/tools/truncate.js +0 -184
  357. package/dist/tools/truncate.js.map +0 -1
  358. package/dist/utils/date.d.ts +0 -10
  359. package/dist/utils/date.d.ts.map +0 -1
  360. package/dist/utils/date.js +0 -23
  361. package/dist/utils/date.js.map +0 -1
  362. package/dist/utils/env.d.ts +0 -3
  363. package/dist/utils/env.d.ts.map +0 -1
  364. package/dist/utils/env.js +0 -12
  365. package/dist/utils/env.js.map +0 -1
  366. package/dist/utils/fs-atomic.d.ts +0 -10
  367. package/dist/utils/fs-atomic.d.ts.map +0 -1
  368. package/dist/utils/fs-atomic.js +0 -45
  369. package/dist/utils/fs-atomic.js.map +0 -1
  370. package/dist/utils/html.d.ts +0 -2
  371. package/dist/utils/html.d.ts.map +0 -1
  372. package/dist/utils/html.js +0 -4
  373. package/dist/utils/html.js.map +0 -1
  374. package/dist/utils/http-body.d.ts +0 -10
  375. package/dist/utils/http-body.d.ts.map +0 -1
  376. package/dist/utils/http-body.js +0 -34
  377. package/dist/utils/http-body.js.map +0 -1
  378. package/dist/vault/injection.d.ts +0 -12
  379. package/dist/vault/injection.d.ts.map +0 -1
  380. package/dist/vault/injection.js +0 -30
  381. package/dist/vault/injection.js.map +0 -1
  382. package/dist/vault/policy.d.ts +0 -20
  383. package/dist/vault/policy.d.ts.map +0 -1
  384. package/dist/vault/policy.js +0 -20
  385. package/dist/vault/policy.js.map +0 -1
  386. package/dist/web/agent-events/portal.d.ts +0 -3
  387. package/dist/web/agent-events/portal.d.ts.map +0 -1
  388. package/dist/web/agent-events/portal.js +0 -19
  389. package/dist/web/agent-events/portal.js.map +0 -1
  390. package/dist/web/request.d.ts +0 -3
  391. package/dist/web/request.d.ts.map +0 -1
  392. package/dist/web/request.js +0 -13
  393. package/dist/web/request.js.map +0 -1
  394. package/dist/web/session-view/command.d.ts +0 -4
  395. package/dist/web/session-view/command.d.ts.map +0 -1
  396. package/dist/web/session-view/command.js +0 -10
  397. package/dist/web/session-view/command.js.map +0 -1
@@ -29,6 +29,7 @@ import type { TSchema } from "@sinclair/typebox";
29
29
  import type { EventFilePayload, MikanSkill } from "../types.js";
30
30
  import type { ExtensionRegistry } from "./registry.js";
31
31
  import type { SubagentRunOutput, SubagentRunRequest, SubagentRunResult, CompactionEntry } from "../types.js";
32
+ import type { OfficeAddress, PlatformHistoryMessage, PlatformHistoryOptions, PlatformUserInfo } from "../../types.js";
32
33
  /**
33
34
  * Platform provenance of the run a hook event belongs to. Interactive runs
34
35
  * carry the triggering message's identity (usable with `api.react` and for
@@ -152,31 +153,62 @@ export interface MikanHookMap {
152
153
  }
153
154
  export type MikanHookName = keyof MikanHookMap;
154
155
  /**
155
- * A schedule contributed by an extension. Fires an autonomous agent run in
156
- * this conversation with `text` as the task prompt (the run does not inherit
157
- * conversation history — write `text` self-contained).
156
+ * What a schedule does when it fires — exactly one of:
157
+ *
158
+ * - `text`: an autonomous agent run in this conversation with `text` as the
159
+ * task prompt (the run does not inherit conversation history — write it
160
+ * self-contained).
161
+ * - `callback`: a deterministic host-side handler registered with
162
+ * `api.schedules.onCallback` — no agent run, no model call. `args` is
163
+ * stored with the schedule and passed to the handler on every fire.
158
164
  */
159
- export type ExtensionScheduleSpec = {
165
+ export type ExtensionScheduleAction = {
166
+ text: string;
167
+ /** Target platform; defaults to this conversation's own. */
168
+ platform?: string;
169
+ callback?: never;
170
+ args?: never;
171
+ } | {
172
+ /** Name of a callback registered with `api.schedules.onCallback`. */
173
+ callback: string;
174
+ /** JSON-serializable payload passed to the callback on each fire. */
175
+ args?: unknown;
176
+ text?: never;
177
+ platform?: never;
178
+ };
179
+ /** A schedule contributed by an extension. */
180
+ export type ExtensionScheduleSpec = ({
160
181
  type: "periodic";
161
182
  /** Cron expression (croner syntax). */
162
183
  schedule: string;
163
184
  /** IANA timezone, e.g. "Asia/Taipei". */
164
185
  timezone: string;
165
- text: string;
166
- /** Target platform; optional when only one platform is running. */
167
- platform?: string;
168
- } | {
186
+ } & ExtensionScheduleAction) | ({
169
187
  type: "one-shot";
170
188
  /** ISO 8601 timestamp with offset. */
171
189
  at: string;
172
- text: string;
173
- platform?: string;
174
- };
190
+ } & ExtensionScheduleAction);
191
+ /** The callback-actioned subset of {@link ExtensionScheduleSpec}. */
192
+ export type ExtensionCallbackScheduleSpec = Extract<ExtensionScheduleSpec, {
193
+ callback: string;
194
+ }>;
195
+ /** The agent-run (text) subset of {@link ExtensionScheduleSpec}. */
196
+ export type ExtensionTextScheduleSpec = Exclude<ExtensionScheduleSpec, {
197
+ callback: string;
198
+ }>;
175
199
  export interface ExtensionScheduleInfo {
176
200
  /** Extension-chosen schedule name. */
177
201
  name: string;
178
202
  spec: ExtensionScheduleSpec;
179
203
  }
204
+ /** One fire of a callback-actioned schedule, as seen by the handler. */
205
+ export interface ExtensionScheduleCallbackEvent {
206
+ /** Name of the schedule that fired. */
207
+ scheduleName: string;
208
+ /** The `args` stored on the schedule spec, if any. */
209
+ args?: unknown;
210
+ }
211
+ export type ExtensionScheduleCallbackHandler = (event: ExtensionScheduleCallbackEvent) => void | Promise<void>;
180
212
  /**
181
213
  * Event-file payload the harness hands to the embedder's schedule store —
182
214
  * the canonical event-file shape owned by the event-format module.
@@ -264,6 +296,38 @@ export interface ExtensionScheduleStore {
264
296
  payload: ExtensionSchedulePayload;
265
297
  }>>;
266
298
  }
299
+ /**
300
+ * Persistence + arming backend for callback-actioned schedules, injected by
301
+ * the embedder scoped to one conversation. Unlike {@link ExtensionScheduleStore}
302
+ * (the agent-writable workspace event bus), this store must be
303
+ * host-authoritative: a fired callback crosses into trusted host code, so
304
+ * sandboxed agents must never be able to create or edit its entries. mikan
305
+ * backs it with files under the host-only state dir.
306
+ */
307
+ export interface ExtensionCallbackScheduleStore {
308
+ upsert(slug: string, name: string, spec: ExtensionCallbackScheduleSpec): Promise<void>;
309
+ delete(slug: string, name: string): Promise<boolean>;
310
+ list(slug: string): Promise<ExtensionScheduleInfo[]>;
311
+ }
312
+ /**
313
+ * Process-wide engine behind {@link ExtensionCallbackScheduleStore}: persists
314
+ * callback schedules per conversation, arms them across restarts, and
315
+ * dispatches fires into the owning conversation's extension registry.
316
+ */
317
+ export interface ExtensionScheduleEngine {
318
+ upsert(address: OfficeAddress, slug: string, name: string, spec: ExtensionCallbackScheduleSpec): Promise<void>;
319
+ delete(address: OfficeAddress, slug: string, name: string): Promise<boolean>;
320
+ list(address: OfficeAddress, slug: string): Promise<ExtensionScheduleInfo[]>;
321
+ }
322
+ /** One fire dispatched by the engine to the conversation runtime. */
323
+ export interface ExtensionScheduleCallbackFire {
324
+ platform: string;
325
+ conversationId: string;
326
+ slug: string;
327
+ scheduleName: string;
328
+ callback: string;
329
+ args?: unknown;
330
+ }
267
331
  /**
268
332
  * Host services injected into extensions by the embedder. All fields are
269
333
  * optional: the corresponding api surface throws an informative error when
@@ -274,8 +338,22 @@ export interface ExtensionHostServices {
274
338
  stateDir?: string;
275
339
  /** Schedule persistence; enables `api.schedules`. */
276
340
  scheduleStore?: ExtensionScheduleStore;
277
- /** Post a message to a conversation without an agent run; enables `api.notify`. */
278
- postMessage?: (conversationId: string, text: string, platform?: string) => Promise<void>;
341
+ /**
342
+ * Post a message to a conversation without an agent run, resolving to the
343
+ * posted message's platform id; enables `api.notify`.
344
+ */
345
+ postMessage?: (conversationId: string, text: string, options?: {
346
+ platform?: string;
347
+ threadTs?: string;
348
+ }) => Promise<string>;
349
+ /** Resolve a user's DM conversation id; enables `api.openDm`. */
350
+ openDirectConversation?: (userId: string, platform?: string) => Promise<string>;
351
+ /** Read recent conversation messages; enables `api.fetchHistory`. */
352
+ fetchHistory?: (conversationId: string, options?: PlatformHistoryOptions & {
353
+ platform?: string;
354
+ }) => Promise<PlatformHistoryMessage[]>;
355
+ /** List the platform workspace's active users; enables `api.listUsers`. */
356
+ listUsers?: (platform?: string) => Promise<PlatformUserInfo[]>;
279
357
  /** Post an interactive Block Kit message; enables `api.blockkit.post`. */
280
358
  postBlocks?: (conversationId: string, message: {
281
359
  text: string;
@@ -293,21 +371,40 @@ export interface ExtensionHostServices {
293
371
  addReaction?: (conversationId: string, messageTs: string, emoji: string, platform?: string) => Promise<void>;
294
372
  /** Upload a host file into a conversation; enables `api.uploadFile`. */
295
373
  uploadFile?: (conversationId: string, filePath: string, title?: string, platform?: string) => Promise<void>;
374
+ /** Callback-schedule persistence; enables `api.schedules` callback specs. */
375
+ callbackScheduleStore?: ExtensionCallbackScheduleStore;
296
376
  /** Resolve read-only secrets for an extension slug; enables `api.secrets`. */
297
377
  resolveSecrets?: (slug: string) => Record<string, string>;
298
378
  /** Run a fresh isolated subagent; enables `api.subagent`. */
299
379
  runSubagent?: <TOutputSchema extends TSchema | undefined = undefined>(request: SubagentRunRequest<TOutputSchema>, contributedTools: AgentTool[]) => Promise<SubagentRunResult<SubagentRunOutput<TOutputSchema>>>;
300
380
  }
381
+ /**
382
+ * One secret an extension declares in its `package.json` (`mikan.secrets`).
383
+ * Declarations drive provisioning surfaces (the admin portal, `mikan ext`)
384
+ * and activation-time validation: a missing `required` secret fails that
385
+ * extension's activation with a provisioning hint instead of a confusing
386
+ * runtime error.
387
+ */
388
+ export interface ExtensionSecretDeclaration {
389
+ /** Env-style key, e.g. "SLACK_BOT_TOKEN". */
390
+ key: string;
391
+ /** One-line hint shown on provisioning surfaces. */
392
+ description?: string;
393
+ /** When true, activation fails while the secret is unprovisioned. */
394
+ required?: boolean;
395
+ }
301
396
  /**
302
397
  * Optional `manifest.json` next to a directory-form extension's entrypoint.
303
398
  * `name` is the display name only; the slug (data dir, secrets, schedule
304
399
  * ownership) always derives from the install path so identity is
305
- * admin-controlled and stable across manifest edits.
400
+ * admin-controlled and stable across manifest edits. `secrets` comes from
401
+ * `package.json`'s `mikan.secrets` only.
306
402
  */
307
403
  export interface ExtensionManifest {
308
404
  name?: string;
309
405
  version?: string;
310
406
  description?: string;
407
+ secrets?: ExtensionSecretDeclaration[];
311
408
  }
312
409
  /** API handed to an extension's `activate` function. */
313
410
  export interface MikanExtensionApi {
@@ -368,9 +465,11 @@ export interface MikanExtensionApi {
368
465
  list(): string[];
369
466
  };
370
467
  /**
371
- * Named schedules owned by this extension + conversation. Backed by the
372
- * embedder's schedule store; in mikan these become event files that fire
373
- * autonomous agent runs (hot-reloaded, persisted across restarts).
468
+ * Named schedules owned by this extension + conversation, persisted across
469
+ * restarts. `text` specs become event files that fire autonomous agent
470
+ * runs; `callback` specs fire a handler registered with `onCallback` —
471
+ * deterministic, no model call. One namespace: upserting a name switches
472
+ * its kind atomically.
374
473
  */
375
474
  readonly schedules: {
376
475
  /** Create or replace a named schedule. */
@@ -379,18 +478,59 @@ export interface MikanExtensionApi {
379
478
  delete(name: string): Promise<boolean>;
380
479
  /** Schedules owned by this extension in this conversation. */
381
480
  list(): Promise<ExtensionScheduleInfo[]>;
481
+ /**
482
+ * Register the handler for callback-actioned schedules naming
483
+ * `callbackName`. Register during `activate` so the handler exists
484
+ * whenever a schedule fires (including right after a restart). Invalid
485
+ * names throw; a duplicate registration keeps the first.
486
+ */
487
+ onCallback(callbackName: string, handler: ExtensionScheduleCallbackHandler): void;
382
488
  };
383
489
  /** Fresh isolated subagent runs. */
384
490
  readonly subagent: SubagentApi;
385
491
  /**
386
492
  * Post text into a conversation without triggering an agent run. Defaults
387
493
  * to this conversation; pass `conversationId` to post elsewhere (pairs
388
- * with `sharedDataDir` for cross-conversation applications). Available
389
- * when the embedder provides platform messaging.
494
+ * with `sharedDataDir` for cross-conversation applications). The platform
495
+ * defaults to this conversation's own; pass `platform` only when targeting
496
+ * a conversation on a different one. `threadTs` posts into a platform
497
+ * thread where the adapter supports it. Available when the embedder
498
+ * provides platform messaging.
499
+ *
500
+ * Resolves to the posted message's platform id — pass it back as
501
+ * `fetchHistory({ threadTs })` to read replies to what you just posted, or
502
+ * to `react` to annotate it.
390
503
  */
391
504
  notify(text: string, options?: {
392
505
  conversationId?: string;
393
- }): Promise<void>;
506
+ platform?: string;
507
+ threadTs?: string;
508
+ }): Promise<string>;
509
+ /**
510
+ * Resolve the direct-message conversation with a platform user, returning
511
+ * a conversation id usable with `notify`/`uploadFile`. Available when the
512
+ * embedder provides DM resolution and the platform supports it.
513
+ */
514
+ openDm(userId: string): Promise<string>;
515
+ /**
516
+ * Read recent messages from a conversation, oldest first, without an agent
517
+ * run. Defaults to this conversation; adapters may cap `limit` and return
518
+ * a single page — page forward by passing the last returned `ts` as
519
+ * `oldest`. Pass `threadTs` to read the replies inside one thread instead
520
+ * of the conversation's top-level messages (the parent is not returned).
521
+ * Available when the embedder provides history reads.
522
+ */
523
+ fetchHistory(options?: {
524
+ conversationId?: string;
525
+ oldest?: string;
526
+ limit?: number;
527
+ threadTs?: string;
528
+ }): Promise<PlatformHistoryMessage[]>;
529
+ /**
530
+ * List the platform workspace's active users without an agent run.
531
+ * Available when the embedder provides user listings.
532
+ */
533
+ listUsers(): Promise<PlatformUserInfo[]>;
394
534
  /**
395
535
  * Interactive platform surfaces (Slack Block Kit). `post` namespaces every
396
536
  * `action_id` in the blocks with this extension's slug; interactions on
@@ -462,6 +602,8 @@ export interface InstalledExtensionInfo {
462
602
  description?: string;
463
603
  /** Names of skills shipped in the extension's skills/ directory. */
464
604
  skillNames: string[];
605
+ /** Secrets declared in package.json `mikan.secrets`. */
606
+ secrets: ExtensionSecretDeclaration[];
465
607
  }
466
608
  export interface LoadExtensionsOptions {
467
609
  /**
@@ -480,7 +622,7 @@ export interface LoadExtensionsOptions {
480
622
  roots?: string[];
481
623
  context: {
482
624
  /** Office identity; host-only state keys derive from it. */
483
- address: import("../../types.js").OfficeAddress;
625
+ address: OfficeAddress;
484
626
  /** Raw platform id — what extension code sees and platform APIs accept. */
485
627
  conversationId: string;
486
628
  workspaceDir: string;
@@ -515,6 +657,8 @@ export interface ExtensionValidation {
515
657
  entrypoint?: string;
516
658
  /** Skill names shipped alongside the extension. */
517
659
  skillNames: string[];
660
+ /** Secrets declared in package.json `mikan.secrets`. */
661
+ secrets: ExtensionSecretDeclaration[];
518
662
  errors: string[];
519
663
  warnings: string[];
520
664
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/harness/extensions/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/harness/extensions/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/harness/extensions/types.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * mikan extension system, v1.\n *\n * Extensions are ES modules that export an `activate` function (either as\n * the default export or a named `activate` export, optionally wrapped in an\n * object that also carries a `name`). `activate` receives a\n * {@link MikanExtensionApi} and registers hooks and tools.\n *\n * ```js\n * // extensions/audit.mjs\n * export default function activate(api) {\n * api.on(\"tool_call\", ({ toolName, args }) => {\n * if (toolName === \"bash\" && String(args.command).includes(\"rm -rf /\")) {\n * return { block: true, reason: \"destructive command\" };\n * }\n * });\n * }\n * ```\n *\n * Hooks run in registration order. Result semantics are per hook:\n * `tool_call` keeps v1's first-non-undefined-wins; `before_agent_start`,\n * `context`, `message_end`, and `tool_result` chain — each handler sees the\n * event as rewritten by earlier handlers, and for `before_agent_start` a\n * `block` from any handler wins. Hook errors are logged and never crash a run.\n */\nimport type { AgentMessage, AgentTool, ThinkingLevel } from \"@earendil-works/pi-agent-core\";\nimport type { Api, ImageContent, Model, TextContent, Usage } from \"@earendil-works/pi-ai\";\nimport type { TSchema } from \"@sinclair/typebox\";\nimport type { EventFilePayload, MikanSkill } from \"../types.js\";\nimport type { ExtensionRegistry } from \"./registry.js\";\nimport type {\n SubagentRunOutput,\n SubagentRunRequest,\n SubagentRunResult,\n CompactionEntry,\n} from \"../types.js\";\n\n/**\n * Platform provenance of the run a hook event belongs to. Interactive runs\n * carry the triggering message's identity (usable with `api.react` and for\n * per-user policy); autonomous runs (schedules/events) have no triggering\n * platform message, so only `kind` and `platform` are set.\n */\nexport interface RunOrigin {\n kind: \"interactive\" | \"event\";\n /** Platform adapter name serving this run (e.g. \"slack\"). */\n platform?: string;\n /** Platform message id of the triggering message; pass to `api.react`. */\n messageTs?: string;\n userId?: string;\n userName?: string;\n threadTs?: string;\n /** Attachments already downloaded to host paths (extensions run on host). */\n attachments?: { name: string; localPath: string }[];\n}\n\nexport interface BeforeAgentStartHookEvent {\n prompt: string;\n images?: ImageContent[];\n systemPrompt: string;\n origin?: RunOrigin;\n}\n\nexport interface BeforeAgentStartHookResult {\n /** Replace the system prompt for this turn. */\n systemPrompt?: string;\n /** Rewrite the user prompt for this turn. */\n prompt?: string;\n /** Block the turn entirely; the model is never called and nothing persists. */\n block?: boolean;\n /** Shown to the user when the turn is blocked. */\n reason?: string;\n}\n\nexport interface ToolCallHookEvent {\n toolCallId: string;\n toolName: string;\n args: unknown;\n origin?: RunOrigin;\n}\n\nexport interface ToolCallHookResult {\n /** Block the tool call; the model receives an error tool result instead. */\n block?: boolean;\n reason?: string;\n}\n\nexport interface ContextHookEvent {\n /** A call-local clone of the transcript about to be sent to the LLM. */\n messages: AgentMessage[];\n origin?: RunOrigin;\n}\n\nexport interface ContextHookResult {\n /** Replace the messages sent for this LLM call only. */\n messages?: AgentMessage[];\n}\n\nexport interface ToolResultHookEvent {\n toolCallId: string;\n toolName: string;\n args: unknown;\n content: (TextContent | ImageContent)[];\n details: unknown;\n isError: boolean;\n /** Usage from the tool execution itself, if available. */\n usage?: Usage;\n origin?: RunOrigin;\n}\n\nexport interface ToolResultHookResult {\n /** Replace the tool result content sent back to the model (e.g. redaction). */\n content?: (TextContent | ImageContent)[];\n /** Replace the structured tool result details. */\n details?: unknown;\n /** Override the tool result error flag. */\n isError?: boolean;\n /** Replace usage reported by the tool execution. */\n usage?: Usage;\n}\n\nexport interface MessageEndHookEvent {\n message: AgentMessage;\n origin?: RunOrigin;\n}\n\nexport interface MessageEndHookResult {\n /** Replace the finalized message. The replacement must keep the original role. */\n message?: AgentMessage;\n}\n\nexport interface TurnEndHookEvent {\n messages: AgentMessage[];\n origin?: RunOrigin;\n}\n\nexport interface SessionCompactHookEvent {\n entry: CompactionEntry;\n reason: \"threshold\" | \"overflow\" | \"manual\";\n}\n\n/** A turn settled with an error after retries were exhausted (or none applied). */\nexport interface AgentErrorHookEvent {\n errorMessage: string;\n origin?: RunOrigin;\n}\n\n/** The run budget circuit breaker tripped and the run was aborted. */\nexport interface BudgetExceededHookEvent {\n /** Which cap was hit, e.g. \"cost 2.01 USD >= 2 USD limit\". */\n reason: string;\n tokens: number;\n costUsd: number;\n llmCalls: number;\n durationMs: number;\n origin?: RunOrigin;\n}\n\n/** Map of hook names to handler signatures. */\nexport interface MikanHookMap {\n before_agent_start: (\n event: BeforeAgentStartHookEvent,\n ) =>\n | BeforeAgentStartHookResult\n | undefined\n | void\n | Promise<BeforeAgentStartHookResult | undefined | void>;\n tool_call: (\n event: ToolCallHookEvent,\n ) => ToolCallHookResult | undefined | void | Promise<ToolCallHookResult | undefined | void>;\n context: (\n event: ContextHookEvent,\n ) => ContextHookResult | undefined | void | Promise<ContextHookResult | undefined | void>;\n tool_result: (\n event: ToolResultHookEvent,\n ) => ToolResultHookResult | undefined | void | Promise<ToolResultHookResult | undefined | void>;\n message_end: (\n event: MessageEndHookEvent,\n ) => MessageEndHookResult | undefined | void | Promise<MessageEndHookResult | undefined | void>;\n turn_end: (event: TurnEndHookEvent) => void | Promise<void>;\n session_compact: (event: SessionCompactHookEvent) => void | Promise<void>;\n agent_error: (event: AgentErrorHookEvent) => void | Promise<void>;\n budget_exceeded: (event: BudgetExceededHookEvent) => void | Promise<void>;\n}\n\nexport type MikanHookName = keyof MikanHookMap;\n\n// ── v2: schedules ────────────────────────────────────────────────────────────\n\n/**\n * A schedule contributed by an extension. Fires an autonomous agent run in\n * this conversation with `text` as the task prompt (the run does not inherit\n * conversation history — write `text` self-contained).\n */\nexport type ExtensionScheduleSpec =\n | {\n type: \"periodic\";\n /** Cron expression (croner syntax). */\n schedule: string;\n /** IANA timezone, e.g. \"Asia/Taipei\". */\n timezone: string;\n text: string;\n /** Target platform; optional when only one platform is running. */\n platform?: string;\n }\n | {\n type: \"one-shot\";\n /** ISO 8601 timestamp with offset. */\n at: string;\n text: string;\n platform?: string;\n };\n\nexport interface ExtensionScheduleInfo {\n /** Extension-chosen schedule name. */\n name: string;\n spec: ExtensionScheduleSpec;\n}\n\n/**\n * Event-file payload the harness hands to the embedder's schedule store —\n * the canonical event-file shape owned by the event-format module.\n * `platform` may be omitted when the embedder runs a single platform.\n * `immediate` backs `api.triggerRun` — the event fires as soon as the\n * embedder's watcher picks it up.\n */\nexport type ExtensionSchedulePayload = EventFilePayload;\n\n// ── v3: commands and lifecycle ───────────────────────────────────────────────\n\n/** Cleanup callback run when the harness instance owning the extension is discarded. */\nexport type ExtensionDisposer = () => void | Promise<void>;\n\n/** Context handed to an extension command handler for one invocation. */\nexport interface ExtensionCommandContext {\n /** Text after the command name, trimmed (\"\" when none). */\n args: string;\n conversationId: string;\n userId?: string;\n userName?: string;\n /**\n * Platform thread the command was sent from, when threaded. Pass to\n * `blockkit.post` so interactive messages land in the same thread.\n */\n threadTs?: string;\n /** Reply in the conversation the command was sent from. */\n respond(text: string): Promise<void>;\n}\n\n/**\n * A chat command contributed by an extension (`/name args…`). Dispatched\n * deterministically by the embedder — no model call, no agent-session entry\n * (the triggering message still syncs to chat history).\n * Built-in commands always win over extension commands of the same name.\n */\nexport interface ExtensionCommand {\n /** Command name without the leading slash; `[a-z0-9_-]+`, case-insensitive match. */\n name: string;\n /** One-line description for inventory surfaces. */\n description?: string;\n handler: (context: ExtensionCommandContext) => void | Promise<void>;\n}\n\n// ── blockkit: interactive platform surfaces ──────────────────────────────────\n\n/** One user interaction with an interactive element posted by this extension. */\nexport interface ExtensionBlockAction {\n /** The extension's own action id (the routing namespace is stripped). */\n actionId: string;\n /** Button value or single-select selected value. */\n value?: string;\n /** Selected option values for multi-selects and checkboxes. */\n selectedValues?: string[];\n userId?: string;\n userName?: string;\n conversationId: string;\n /** Platform message id of the interactive message; pass to `blockkit.update`. */\n messageTs?: string;\n threadTs?: string;\n}\n\nexport type ExtensionBlockActionHandler = (action: ExtensionBlockAction) => void | Promise<void>;\n\n/** Platform-native interactive message content (Slack Block Kit blocks). */\nexport interface ExtensionBlockKitMessage {\n /** Plain-text fallback for notifications and screen readers. */\n text: string;\n /** Block Kit blocks. `post` namespaces every action_id with the extension slug. */\n blocks: object[];\n /** Post into this platform thread; omit for a top-level message. */\n threadTs?: string;\n}\n\nexport interface SubagentApi {\n /**\n * Run one fresh subagent and return its result to the extension. The\n * subagent has no conversation history, receives no tools by default, and\n * cannot recursively start another subagent run. Never rejects: every\n * failure, including request validation, resolves to a result with a\n * terminal status.\n */\n run<TOutputSchema extends TSchema | undefined = undefined>(\n request: SubagentRunRequest<TOutputSchema>,\n ): Promise<SubagentRunResult<SubagentRunOutput<TOutputSchema>>>;\n}\n\n// ── v2: embedder-injected services ───────────────────────────────────────────\n\n/**\n * Persistence backend for extension schedules, injected by the embedder\n * (mikan backs this with event files watched by its EventsWatcher).\n * Filenames are fully qualified by the harness (`ext-<slug>-<name>.json`).\n */\nexport interface ExtensionScheduleStore {\n write(filename: string, payload: ExtensionSchedulePayload): Promise<void>;\n delete(filename: string): Promise<boolean>;\n /** List all schedule files, harness filters by ownership prefix. */\n list(): Promise<Array<{ filename: string; payload: ExtensionSchedulePayload }>>;\n}\n\n/**\n * Host services injected into extensions by the embedder. All fields are\n * optional: the corresponding api surface throws an informative error when\n * the running context does not provide the service.\n */\nexport interface ExtensionHostServices {\n /** State dir for per-extension data dirs; defaults to `~/.mikan`. */\n stateDir?: string;\n /** Schedule persistence; enables `api.schedules`. */\n scheduleStore?: ExtensionScheduleStore;\n /** Post a message to a conversation without an agent run; enables `api.notify`. */\n postMessage?: (conversationId: string, text: string, platform?: string) => Promise<void>;\n /** Post an interactive Block Kit message; enables `api.blockkit.post`. */\n postBlocks?: (\n conversationId: string,\n message: { text: string; blocks: object[]; threadTs?: string },\n platform?: string,\n ) => Promise<{ ts: string }>;\n /** Update an interactive Block Kit message; enables `api.blockkit.update`. */\n updateBlocks?: (\n conversationId: string,\n messageTs: string,\n message: { text: string; blocks: object[] },\n platform?: string,\n ) => Promise<void>;\n /** Add an emoji reaction to a message; enables `api.react`. */\n addReaction?: (\n conversationId: string,\n messageTs: string,\n emoji: string,\n platform?: string,\n ) => Promise<void>;\n /** Upload a host file into a conversation; enables `api.uploadFile`. */\n uploadFile?: (\n conversationId: string,\n filePath: string,\n title?: string,\n platform?: string,\n ) => Promise<void>;\n /** Resolve read-only secrets for an extension slug; enables `api.secrets`. */\n resolveSecrets?: (slug: string) => Record<string, string>;\n /** Run a fresh isolated subagent; enables `api.subagent`. */\n runSubagent?: <TOutputSchema extends TSchema | undefined = undefined>(\n request: SubagentRunRequest<TOutputSchema>,\n contributedTools: AgentTool[],\n ) => Promise<SubagentRunResult<SubagentRunOutput<TOutputSchema>>>;\n}\n\n// ── v2: manifest ─────────────────────────────────────────────────────────────\n\n/**\n * Optional `manifest.json` next to a directory-form extension's entrypoint.\n * `name` is the display name only; the slug (data dir, secrets, schedule\n * ownership) always derives from the install path so identity is\n * admin-controlled and stable across manifest edits.\n */\nexport interface ExtensionManifest {\n name?: string;\n version?: string;\n description?: string;\n}\n\n/** API handed to an extension's `activate` function. */\nexport interface MikanExtensionApi {\n /** Register a hook handler. */\n on<T extends MikanHookName>(hook: T, handler: MikanHookMap[T]): void;\n /** Contribute an additional agent tool. */\n registerTool(tool: AgentTool): void;\n /**\n * Contribute a chat command (`/name`). Dispatched without a model call;\n * built-in commands and earlier registrations of the same name win.\n */\n registerCommand(command: ExtensionCommand): void;\n /**\n * Register cleanup to run when this harness instance is discarded\n * (`/pi-new`, session eviction, shutdown). Alternative to returning a\n * disposer from `activate`. Disposers run in reverse registration order.\n */\n onDispose(disposer: ExtensionDisposer): void;\n /** Extension-scoped logging that lands in mikan's structured log. */\n log(message: string): void;\n /** Context about the conversation this harness instance serves. */\n readonly context: {\n readonly conversationId: string;\n readonly workspaceDir: string;\n readonly model: Model<Api>;\n readonly thinkingLevel: ThinkingLevel;\n };\n /**\n * Host-only filesystem locations owned by this extension (never mounted\n * into sandbox containers). Which one you use is a declaration: `dataDir`\n * for conversation-scoped state (the safe default — isolation for free),\n * `sharedDataDir` for deliberately cross-conversation state (you own tenant\n * partitioning and concurrency). See `LAYOUT.md`.\n */\n readonly paths: {\n /**\n * This conversation's private data directory\n * (`conversations/<conversationId>/extension-data/<slug>`), created on\n * first access. Default choice: co-located with the conversation, so it\n * disappears when the conversation is deleted.\n */\n readonly dataDir: string;\n /**\n * Data shared across all conversations this extension serves\n * (`global/extension-data/<slug>`), created on first access. Explicit\n * opt-in for multi-conversation applications (e.g. a PM tool with\n * cross-channel views); key rows by conversation id yourself.\n */\n readonly sharedDataDir: string;\n };\n /**\n * Read-only secrets from the embedder's vault\n * (mikan: `<stateDir>/vaults/extensions/<slug>/env`).\n */\n readonly secrets: {\n get(key: string): string | undefined;\n /** Secret names only, never values. */\n list(): string[];\n };\n /**\n * Named schedules owned by this extension + conversation. Backed by the\n * embedder's schedule store; in mikan these become event files that fire\n * autonomous agent runs (hot-reloaded, persisted across restarts).\n */\n readonly schedules: {\n /** Create or replace a named schedule. */\n upsert(name: string, spec: ExtensionScheduleSpec): Promise<void>;\n /** Delete a named schedule. Returns false when it did not exist. */\n delete(name: string): Promise<boolean>;\n /** Schedules owned by this extension in this conversation. */\n list(): Promise<ExtensionScheduleInfo[]>;\n };\n /** Fresh isolated subagent runs. */\n readonly subagent: SubagentApi;\n /**\n * Post text into a conversation without triggering an agent run. Defaults\n * to this conversation; pass `conversationId` to post elsewhere (pairs\n * with `sharedDataDir` for cross-conversation applications). Available\n * when the embedder provides platform messaging.\n */\n notify(text: string, options?: { conversationId?: string }): Promise<void>;\n /**\n * Interactive platform surfaces (Slack Block Kit). `post` namespaces every\n * `action_id` in the blocks with this extension's slug; interactions on\n * those elements are dispatched exclusively to `onAction` handlers — no\n * agent run, no model call. The extension decides whether to involve the\n * model afterwards (`triggerRun`). Available when the embedder provides\n * Block Kit messaging.\n */\n readonly blockkit: {\n /** Post an interactive message into this conversation. Returns its message id. */\n post(message: ExtensionBlockKitMessage): Promise<{ ts: string }>;\n /** Replace an interactive message previously posted with `post`. */\n update(messageTs: string, message: { text: string; blocks: object[] }): Promise<void>;\n /** Register a handler for interactions on this extension's elements. */\n onAction(actionId: string, handler: ExtensionBlockActionHandler): void;\n };\n /**\n * Add an emoji reaction to a message in this conversation. `messageTs` is\n * the platform message id the extension read from an event (see\n * `RunOrigin.messageTs`); `emoji` is a short name without colons.\n * Available when the embedder provides reaction support.\n */\n react(messageTs: string, emoji: string): Promise<void>;\n /**\n * Upload a host-side file into this conversation without an agent run.\n * Available when the embedder provides file uploads for the platform.\n */\n uploadFile(filePath: string, title?: string): Promise<void>;\n /**\n * Fire an autonomous agent run in this conversation as soon as possible.\n * Like a schedule, the run does not inherit conversation history — write\n * `text` self-contained. Backed by the embedder's schedule store.\n */\n triggerRun(text: string): Promise<void>;\n}\n\nexport type MikanExtensionActivate = (\n api: MikanExtensionApi,\n) => void | ExtensionDisposer | Promise<void | ExtensionDisposer>;\n\nexport interface MikanExtensionModule {\n name?: string;\n activate: MikanExtensionActivate;\n}\n\nexport interface LoadedExtension {\n name: string;\n path: string;\n /** Filesystem-safe identifier used for data dirs, secrets, and schedules. */\n slug: string;\n version?: string;\n description?: string;\n /** Skills discovered under the extension's `skills/` directory. */\n skills: MikanSkill[];\n}\n\nexport interface ExtensionLoadError {\n path: string;\n error: string;\n}\n\n/** Discovery-only view of an installed extension (module is not imported). */\nexport interface InstalledExtensionInfo {\n /** Display name: manifest name, falling back to the slug. */\n name: string;\n slug: string;\n path: string;\n /** Scan directory the extension was found in. */\n dir: string;\n version?: string;\n description?: string;\n /** Names of skills shipped in the extension's skills/ directory. */\n skillNames: string[];\n}\n\nexport interface LoadExtensionsOptions {\n /**\n * Directories to scan for extensions, in ascending precedence. Missing\n * directories are skipped. When two directories contribute the same slug,\n * the later one wins — that is how a conversation-scoped copy of a package\n * shadows the global one instead of activating alongside it.\n */\n dirs: string[];\n /**\n * Extension roots to load directly, without scanning for children. Each\n * path is one extension (a directory with an entrypoint, or a bare file).\n * Highest precedence, after every scanned directory. This is what\n * `mikan ext dev` points at a working copy.\n */\n roots?: string[];\n context: {\n /** Office identity; host-only state keys derive from it. */\n address: import(\"../../types.js\").OfficeAddress;\n /** Raw platform id — what extension code sees and platform APIs accept. */\n conversationId: string;\n workspaceDir: string;\n model: Model<Api>;\n thinkingLevel: ThinkingLevel;\n };\n /** Embedder-provided services backing the v2 api surface. */\n services?: ExtensionHostServices;\n}\n\nexport interface LoadExtensionsResult {\n registry: ExtensionRegistry;\n extensions: LoadedExtension[];\n errors: ExtensionLoadError[];\n /** Skills contributed by extensions (inline: bodies ride in the prompt). */\n skills: MikanSkill[];\n /**\n * Run extension disposers (from `api.onDispose` and `activate` return\n * values). Call when the harness instance owning these extensions is\n * discarded. Idempotent; disposer errors are logged, never thrown.\n */\n dispose(): Promise<void>;\n}\n\nexport interface ExtensionValidation {\n ok: boolean;\n /** Slug the extension would install as (from the source dir/file name). */\n slug: string;\n /** Display name (manifest name, else slug). */\n name: string;\n version?: string;\n description?: string;\n /** Resolved entrypoint that would be imported. */\n entrypoint?: string;\n /** Skill names shipped alongside the extension. */\n skillNames: string[];\n errors: string[];\n warnings: string[];\n}\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/harness/extensions/types.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * mikan extension system, v1.\n *\n * Extensions are ES modules that export an `activate` function (either as\n * the default export or a named `activate` export, optionally wrapped in an\n * object that also carries a `name`). `activate` receives a\n * {@link MikanExtensionApi} and registers hooks and tools.\n *\n * ```js\n * // extensions/audit.mjs\n * export default function activate(api) {\n * api.on(\"tool_call\", ({ toolName, args }) => {\n * if (toolName === \"bash\" && String(args.command).includes(\"rm -rf /\")) {\n * return { block: true, reason: \"destructive command\" };\n * }\n * });\n * }\n * ```\n *\n * Hooks run in registration order. Result semantics are per hook:\n * `tool_call` keeps v1's first-non-undefined-wins; `before_agent_start`,\n * `context`, `message_end`, and `tool_result` chain — each handler sees the\n * event as rewritten by earlier handlers, and for `before_agent_start` a\n * `block` from any handler wins. Hook errors are logged and never crash a run.\n */\nimport type { AgentMessage, AgentTool, ThinkingLevel } from \"@earendil-works/pi-agent-core\";\nimport type { Api, ImageContent, Model, TextContent, Usage } from \"@earendil-works/pi-ai\";\nimport type { TSchema } from \"@sinclair/typebox\";\nimport type { EventFilePayload, MikanSkill } from \"../types.js\";\nimport type { ExtensionRegistry } from \"./registry.js\";\nimport type {\n SubagentRunOutput,\n SubagentRunRequest,\n SubagentRunResult,\n CompactionEntry,\n} from \"../types.js\";\nimport type {\n OfficeAddress,\n PlatformHistoryMessage,\n PlatformHistoryOptions,\n PlatformUserInfo,\n} from \"../../types.js\";\n\n/**\n * Platform provenance of the run a hook event belongs to. Interactive runs\n * carry the triggering message's identity (usable with `api.react` and for\n * per-user policy); autonomous runs (schedules/events) have no triggering\n * platform message, so only `kind` and `platform` are set.\n */\nexport interface RunOrigin {\n kind: \"interactive\" | \"event\";\n /** Platform adapter name serving this run (e.g. \"slack\"). */\n platform?: string;\n /** Platform message id of the triggering message; pass to `api.react`. */\n messageTs?: string;\n userId?: string;\n userName?: string;\n threadTs?: string;\n /** Attachments already downloaded to host paths (extensions run on host). */\n attachments?: { name: string; localPath: string }[];\n}\n\nexport interface BeforeAgentStartHookEvent {\n prompt: string;\n images?: ImageContent[];\n systemPrompt: string;\n origin?: RunOrigin;\n}\n\nexport interface BeforeAgentStartHookResult {\n /** Replace the system prompt for this turn. */\n systemPrompt?: string;\n /** Rewrite the user prompt for this turn. */\n prompt?: string;\n /** Block the turn entirely; the model is never called and nothing persists. */\n block?: boolean;\n /** Shown to the user when the turn is blocked. */\n reason?: string;\n}\n\nexport interface ToolCallHookEvent {\n toolCallId: string;\n toolName: string;\n args: unknown;\n origin?: RunOrigin;\n}\n\nexport interface ToolCallHookResult {\n /** Block the tool call; the model receives an error tool result instead. */\n block?: boolean;\n reason?: string;\n}\n\nexport interface ContextHookEvent {\n /** A call-local clone of the transcript about to be sent to the LLM. */\n messages: AgentMessage[];\n origin?: RunOrigin;\n}\n\nexport interface ContextHookResult {\n /** Replace the messages sent for this LLM call only. */\n messages?: AgentMessage[];\n}\n\nexport interface ToolResultHookEvent {\n toolCallId: string;\n toolName: string;\n args: unknown;\n content: (TextContent | ImageContent)[];\n details: unknown;\n isError: boolean;\n /** Usage from the tool execution itself, if available. */\n usage?: Usage;\n origin?: RunOrigin;\n}\n\nexport interface ToolResultHookResult {\n /** Replace the tool result content sent back to the model (e.g. redaction). */\n content?: (TextContent | ImageContent)[];\n /** Replace the structured tool result details. */\n details?: unknown;\n /** Override the tool result error flag. */\n isError?: boolean;\n /** Replace usage reported by the tool execution. */\n usage?: Usage;\n}\n\nexport interface MessageEndHookEvent {\n message: AgentMessage;\n origin?: RunOrigin;\n}\n\nexport interface MessageEndHookResult {\n /** Replace the finalized message. The replacement must keep the original role. */\n message?: AgentMessage;\n}\n\nexport interface TurnEndHookEvent {\n messages: AgentMessage[];\n origin?: RunOrigin;\n}\n\nexport interface SessionCompactHookEvent {\n entry: CompactionEntry;\n reason: \"threshold\" | \"overflow\" | \"manual\";\n}\n\n/** A turn settled with an error after retries were exhausted (or none applied). */\nexport interface AgentErrorHookEvent {\n errorMessage: string;\n origin?: RunOrigin;\n}\n\n/** The run budget circuit breaker tripped and the run was aborted. */\nexport interface BudgetExceededHookEvent {\n /** Which cap was hit, e.g. \"cost 2.01 USD >= 2 USD limit\". */\n reason: string;\n tokens: number;\n costUsd: number;\n llmCalls: number;\n durationMs: number;\n origin?: RunOrigin;\n}\n\n/** Map of hook names to handler signatures. */\nexport interface MikanHookMap {\n before_agent_start: (\n event: BeforeAgentStartHookEvent,\n ) =>\n | BeforeAgentStartHookResult\n | undefined\n | void\n | Promise<BeforeAgentStartHookResult | undefined | void>;\n tool_call: (\n event: ToolCallHookEvent,\n ) => ToolCallHookResult | undefined | void | Promise<ToolCallHookResult | undefined | void>;\n context: (\n event: ContextHookEvent,\n ) => ContextHookResult | undefined | void | Promise<ContextHookResult | undefined | void>;\n tool_result: (\n event: ToolResultHookEvent,\n ) => ToolResultHookResult | undefined | void | Promise<ToolResultHookResult | undefined | void>;\n message_end: (\n event: MessageEndHookEvent,\n ) => MessageEndHookResult | undefined | void | Promise<MessageEndHookResult | undefined | void>;\n turn_end: (event: TurnEndHookEvent) => void | Promise<void>;\n session_compact: (event: SessionCompactHookEvent) => void | Promise<void>;\n agent_error: (event: AgentErrorHookEvent) => void | Promise<void>;\n budget_exceeded: (event: BudgetExceededHookEvent) => void | Promise<void>;\n}\n\nexport type MikanHookName = keyof MikanHookMap;\n\n// ── v2: schedules ────────────────────────────────────────────────────────────\n\n/**\n * What a schedule does when it fires — exactly one of:\n *\n * - `text`: an autonomous agent run in this conversation with `text` as the\n * task prompt (the run does not inherit conversation history — write it\n * self-contained).\n * - `callback`: a deterministic host-side handler registered with\n * `api.schedules.onCallback` — no agent run, no model call. `args` is\n * stored with the schedule and passed to the handler on every fire.\n */\nexport type ExtensionScheduleAction =\n | {\n text: string;\n /** Target platform; defaults to this conversation's own. */\n platform?: string;\n callback?: never;\n args?: never;\n }\n | {\n /** Name of a callback registered with `api.schedules.onCallback`. */\n callback: string;\n /** JSON-serializable payload passed to the callback on each fire. */\n args?: unknown;\n text?: never;\n platform?: never;\n };\n\n/** A schedule contributed by an extension. */\nexport type ExtensionScheduleSpec =\n | ({\n type: \"periodic\";\n /** Cron expression (croner syntax). */\n schedule: string;\n /** IANA timezone, e.g. \"Asia/Taipei\". */\n timezone: string;\n } & ExtensionScheduleAction)\n | ({\n type: \"one-shot\";\n /** ISO 8601 timestamp with offset. */\n at: string;\n } & ExtensionScheduleAction);\n\n/** The callback-actioned subset of {@link ExtensionScheduleSpec}. */\nexport type ExtensionCallbackScheduleSpec = Extract<ExtensionScheduleSpec, { callback: string }>;\n\n/** The agent-run (text) subset of {@link ExtensionScheduleSpec}. */\nexport type ExtensionTextScheduleSpec = Exclude<ExtensionScheduleSpec, { callback: string }>;\n\nexport interface ExtensionScheduleInfo {\n /** Extension-chosen schedule name. */\n name: string;\n spec: ExtensionScheduleSpec;\n}\n\n/** One fire of a callback-actioned schedule, as seen by the handler. */\nexport interface ExtensionScheduleCallbackEvent {\n /** Name of the schedule that fired. */\n scheduleName: string;\n /** The `args` stored on the schedule spec, if any. */\n args?: unknown;\n}\n\nexport type ExtensionScheduleCallbackHandler = (\n event: ExtensionScheduleCallbackEvent,\n) => void | Promise<void>;\n\n/**\n * Event-file payload the harness hands to the embedder's schedule store —\n * the canonical event-file shape owned by the event-format module.\n * `platform` may be omitted when the embedder runs a single platform.\n * `immediate` backs `api.triggerRun` — the event fires as soon as the\n * embedder's watcher picks it up.\n */\nexport type ExtensionSchedulePayload = EventFilePayload;\n\n// ── v3: commands and lifecycle ───────────────────────────────────────────────\n\n/** Cleanup callback run when the harness instance owning the extension is discarded. */\nexport type ExtensionDisposer = () => void | Promise<void>;\n\n/** Context handed to an extension command handler for one invocation. */\nexport interface ExtensionCommandContext {\n /** Text after the command name, trimmed (\"\" when none). */\n args: string;\n conversationId: string;\n userId?: string;\n userName?: string;\n /**\n * Platform thread the command was sent from, when threaded. Pass to\n * `blockkit.post` so interactive messages land in the same thread.\n */\n threadTs?: string;\n /** Reply in the conversation the command was sent from. */\n respond(text: string): Promise<void>;\n}\n\n/**\n * A chat command contributed by an extension (`/name args…`). Dispatched\n * deterministically by the embedder — no model call, no agent-session entry\n * (the triggering message still syncs to chat history).\n * Built-in commands always win over extension commands of the same name.\n */\nexport interface ExtensionCommand {\n /** Command name without the leading slash; `[a-z0-9_-]+`, case-insensitive match. */\n name: string;\n /** One-line description for inventory surfaces. */\n description?: string;\n handler: (context: ExtensionCommandContext) => void | Promise<void>;\n}\n\n// ── blockkit: interactive platform surfaces ──────────────────────────────────\n\n/** One user interaction with an interactive element posted by this extension. */\nexport interface ExtensionBlockAction {\n /** The extension's own action id (the routing namespace is stripped). */\n actionId: string;\n /** Button value or single-select selected value. */\n value?: string;\n /** Selected option values for multi-selects and checkboxes. */\n selectedValues?: string[];\n userId?: string;\n userName?: string;\n conversationId: string;\n /** Platform message id of the interactive message; pass to `blockkit.update`. */\n messageTs?: string;\n threadTs?: string;\n}\n\nexport type ExtensionBlockActionHandler = (action: ExtensionBlockAction) => void | Promise<void>;\n\n/** Platform-native interactive message content (Slack Block Kit blocks). */\nexport interface ExtensionBlockKitMessage {\n /** Plain-text fallback for notifications and screen readers. */\n text: string;\n /** Block Kit blocks. `post` namespaces every action_id with the extension slug. */\n blocks: object[];\n /** Post into this platform thread; omit for a top-level message. */\n threadTs?: string;\n}\n\nexport interface SubagentApi {\n /**\n * Run one fresh subagent and return its result to the extension. The\n * subagent has no conversation history, receives no tools by default, and\n * cannot recursively start another subagent run. Never rejects: every\n * failure, including request validation, resolves to a result with a\n * terminal status.\n */\n run<TOutputSchema extends TSchema | undefined = undefined>(\n request: SubagentRunRequest<TOutputSchema>,\n ): Promise<SubagentRunResult<SubagentRunOutput<TOutputSchema>>>;\n}\n\n// ── v2: embedder-injected services ───────────────────────────────────────────\n\n/**\n * Persistence backend for extension schedules, injected by the embedder\n * (mikan backs this with event files watched by its EventsWatcher).\n * Filenames are fully qualified by the harness (`ext-<slug>-<name>.json`).\n */\nexport interface ExtensionScheduleStore {\n write(filename: string, payload: ExtensionSchedulePayload): Promise<void>;\n delete(filename: string): Promise<boolean>;\n /** List all schedule files, harness filters by ownership prefix. */\n list(): Promise<Array<{ filename: string; payload: ExtensionSchedulePayload }>>;\n}\n\n/**\n * Persistence + arming backend for callback-actioned schedules, injected by\n * the embedder scoped to one conversation. Unlike {@link ExtensionScheduleStore}\n * (the agent-writable workspace event bus), this store must be\n * host-authoritative: a fired callback crosses into trusted host code, so\n * sandboxed agents must never be able to create or edit its entries. mikan\n * backs it with files under the host-only state dir.\n */\nexport interface ExtensionCallbackScheduleStore {\n upsert(slug: string, name: string, spec: ExtensionCallbackScheduleSpec): Promise<void>;\n delete(slug: string, name: string): Promise<boolean>;\n list(slug: string): Promise<ExtensionScheduleInfo[]>;\n}\n\n/**\n * Process-wide engine behind {@link ExtensionCallbackScheduleStore}: persists\n * callback schedules per conversation, arms them across restarts, and\n * dispatches fires into the owning conversation's extension registry.\n */\nexport interface ExtensionScheduleEngine {\n upsert(\n address: OfficeAddress,\n slug: string,\n name: string,\n spec: ExtensionCallbackScheduleSpec,\n ): Promise<void>;\n delete(address: OfficeAddress, slug: string, name: string): Promise<boolean>;\n list(address: OfficeAddress, slug: string): Promise<ExtensionScheduleInfo[]>;\n}\n\n/** One fire dispatched by the engine to the conversation runtime. */\nexport interface ExtensionScheduleCallbackFire {\n platform: string;\n conversationId: string;\n slug: string;\n scheduleName: string;\n callback: string;\n args?: unknown;\n}\n\n/**\n * Host services injected into extensions by the embedder. All fields are\n * optional: the corresponding api surface throws an informative error when\n * the running context does not provide the service.\n */\nexport interface ExtensionHostServices {\n /** State dir for per-extension data dirs; defaults to `~/.mikan`. */\n stateDir?: string;\n /** Schedule persistence; enables `api.schedules`. */\n scheduleStore?: ExtensionScheduleStore;\n /**\n * Post a message to a conversation without an agent run, resolving to the\n * posted message's platform id; enables `api.notify`.\n */\n postMessage?: (\n conversationId: string,\n text: string,\n options?: { platform?: string; threadTs?: string },\n ) => Promise<string>;\n /** Resolve a user's DM conversation id; enables `api.openDm`. */\n openDirectConversation?: (userId: string, platform?: string) => Promise<string>;\n /** Read recent conversation messages; enables `api.fetchHistory`. */\n fetchHistory?: (\n conversationId: string,\n options?: PlatformHistoryOptions & { platform?: string },\n ) => Promise<PlatformHistoryMessage[]>;\n /** List the platform workspace's active users; enables `api.listUsers`. */\n listUsers?: (platform?: string) => Promise<PlatformUserInfo[]>;\n /** Post an interactive Block Kit message; enables `api.blockkit.post`. */\n postBlocks?: (\n conversationId: string,\n message: { text: string; blocks: object[]; threadTs?: string },\n platform?: string,\n ) => Promise<{ ts: string }>;\n /** Update an interactive Block Kit message; enables `api.blockkit.update`. */\n updateBlocks?: (\n conversationId: string,\n messageTs: string,\n message: { text: string; blocks: object[] },\n platform?: string,\n ) => Promise<void>;\n /** Add an emoji reaction to a message; enables `api.react`. */\n addReaction?: (\n conversationId: string,\n messageTs: string,\n emoji: string,\n platform?: string,\n ) => Promise<void>;\n /** Upload a host file into a conversation; enables `api.uploadFile`. */\n uploadFile?: (\n conversationId: string,\n filePath: string,\n title?: string,\n platform?: string,\n ) => Promise<void>;\n /** Callback-schedule persistence; enables `api.schedules` callback specs. */\n callbackScheduleStore?: ExtensionCallbackScheduleStore;\n /** Resolve read-only secrets for an extension slug; enables `api.secrets`. */\n resolveSecrets?: (slug: string) => Record<string, string>;\n /** Run a fresh isolated subagent; enables `api.subagent`. */\n runSubagent?: <TOutputSchema extends TSchema | undefined = undefined>(\n request: SubagentRunRequest<TOutputSchema>,\n contributedTools: AgentTool[],\n ) => Promise<SubagentRunResult<SubagentRunOutput<TOutputSchema>>>;\n}\n\n// ── v2: manifest ─────────────────────────────────────────────────────────────\n\n/**\n * One secret an extension declares in its `package.json` (`mikan.secrets`).\n * Declarations drive provisioning surfaces (the admin portal, `mikan ext`)\n * and activation-time validation: a missing `required` secret fails that\n * extension's activation with a provisioning hint instead of a confusing\n * runtime error.\n */\nexport interface ExtensionSecretDeclaration {\n /** Env-style key, e.g. \"SLACK_BOT_TOKEN\". */\n key: string;\n /** One-line hint shown on provisioning surfaces. */\n description?: string;\n /** When true, activation fails while the secret is unprovisioned. */\n required?: boolean;\n}\n\n/**\n * Optional `manifest.json` next to a directory-form extension's entrypoint.\n * `name` is the display name only; the slug (data dir, secrets, schedule\n * ownership) always derives from the install path so identity is\n * admin-controlled and stable across manifest edits. `secrets` comes from\n * `package.json`'s `mikan.secrets` only.\n */\nexport interface ExtensionManifest {\n name?: string;\n version?: string;\n description?: string;\n secrets?: ExtensionSecretDeclaration[];\n}\n\n/** API handed to an extension's `activate` function. */\nexport interface MikanExtensionApi {\n /** Register a hook handler. */\n on<T extends MikanHookName>(hook: T, handler: MikanHookMap[T]): void;\n /** Contribute an additional agent tool. */\n registerTool(tool: AgentTool): void;\n /**\n * Contribute a chat command (`/name`). Dispatched without a model call;\n * built-in commands and earlier registrations of the same name win.\n */\n registerCommand(command: ExtensionCommand): void;\n /**\n * Register cleanup to run when this harness instance is discarded\n * (`/pi-new`, session eviction, shutdown). Alternative to returning a\n * disposer from `activate`. Disposers run in reverse registration order.\n */\n onDispose(disposer: ExtensionDisposer): void;\n /** Extension-scoped logging that lands in mikan's structured log. */\n log(message: string): void;\n /** Context about the conversation this harness instance serves. */\n readonly context: {\n readonly conversationId: string;\n readonly workspaceDir: string;\n readonly model: Model<Api>;\n readonly thinkingLevel: ThinkingLevel;\n };\n /**\n * Host-only filesystem locations owned by this extension (never mounted\n * into sandbox containers). Which one you use is a declaration: `dataDir`\n * for conversation-scoped state (the safe default — isolation for free),\n * `sharedDataDir` for deliberately cross-conversation state (you own tenant\n * partitioning and concurrency). See `LAYOUT.md`.\n */\n readonly paths: {\n /**\n * This conversation's private data directory\n * (`conversations/<conversationId>/extension-data/<slug>`), created on\n * first access. Default choice: co-located with the conversation, so it\n * disappears when the conversation is deleted.\n */\n readonly dataDir: string;\n /**\n * Data shared across all conversations this extension serves\n * (`global/extension-data/<slug>`), created on first access. Explicit\n * opt-in for multi-conversation applications (e.g. a PM tool with\n * cross-channel views); key rows by conversation id yourself.\n */\n readonly sharedDataDir: string;\n };\n /**\n * Read-only secrets from the embedder's vault\n * (mikan: `<stateDir>/vaults/extensions/<slug>/env`).\n */\n readonly secrets: {\n get(key: string): string | undefined;\n /** Secret names only, never values. */\n list(): string[];\n };\n /**\n * Named schedules owned by this extension + conversation, persisted across\n * restarts. `text` specs become event files that fire autonomous agent\n * runs; `callback` specs fire a handler registered with `onCallback` —\n * deterministic, no model call. One namespace: upserting a name switches\n * its kind atomically.\n */\n readonly schedules: {\n /** Create or replace a named schedule. */\n upsert(name: string, spec: ExtensionScheduleSpec): Promise<void>;\n /** Delete a named schedule. Returns false when it did not exist. */\n delete(name: string): Promise<boolean>;\n /** Schedules owned by this extension in this conversation. */\n list(): Promise<ExtensionScheduleInfo[]>;\n /**\n * Register the handler for callback-actioned schedules naming\n * `callbackName`. Register during `activate` so the handler exists\n * whenever a schedule fires (including right after a restart). Invalid\n * names throw; a duplicate registration keeps the first.\n */\n onCallback(callbackName: string, handler: ExtensionScheduleCallbackHandler): void;\n };\n /** Fresh isolated subagent runs. */\n readonly subagent: SubagentApi;\n /**\n * Post text into a conversation without triggering an agent run. Defaults\n * to this conversation; pass `conversationId` to post elsewhere (pairs\n * with `sharedDataDir` for cross-conversation applications). The platform\n * defaults to this conversation's own; pass `platform` only when targeting\n * a conversation on a different one. `threadTs` posts into a platform\n * thread where the adapter supports it. Available when the embedder\n * provides platform messaging.\n *\n * Resolves to the posted message's platform id — pass it back as\n * `fetchHistory({ threadTs })` to read replies to what you just posted, or\n * to `react` to annotate it.\n */\n notify(\n text: string,\n options?: { conversationId?: string; platform?: string; threadTs?: string },\n ): Promise<string>;\n /**\n * Resolve the direct-message conversation with a platform user, returning\n * a conversation id usable with `notify`/`uploadFile`. Available when the\n * embedder provides DM resolution and the platform supports it.\n */\n openDm(userId: string): Promise<string>;\n /**\n * Read recent messages from a conversation, oldest first, without an agent\n * run. Defaults to this conversation; adapters may cap `limit` and return\n * a single page — page forward by passing the last returned `ts` as\n * `oldest`. Pass `threadTs` to read the replies inside one thread instead\n * of the conversation's top-level messages (the parent is not returned).\n * Available when the embedder provides history reads.\n */\n fetchHistory(options?: {\n conversationId?: string;\n oldest?: string;\n limit?: number;\n threadTs?: string;\n }): Promise<PlatformHistoryMessage[]>;\n /**\n * List the platform workspace's active users without an agent run.\n * Available when the embedder provides user listings.\n */\n listUsers(): Promise<PlatformUserInfo[]>;\n /**\n * Interactive platform surfaces (Slack Block Kit). `post` namespaces every\n * `action_id` in the blocks with this extension's slug; interactions on\n * those elements are dispatched exclusively to `onAction` handlers — no\n * agent run, no model call. The extension decides whether to involve the\n * model afterwards (`triggerRun`). Available when the embedder provides\n * Block Kit messaging.\n */\n readonly blockkit: {\n /** Post an interactive message into this conversation. Returns its message id. */\n post(message: ExtensionBlockKitMessage): Promise<{ ts: string }>;\n /** Replace an interactive message previously posted with `post`. */\n update(messageTs: string, message: { text: string; blocks: object[] }): Promise<void>;\n /** Register a handler for interactions on this extension's elements. */\n onAction(actionId: string, handler: ExtensionBlockActionHandler): void;\n };\n /**\n * Add an emoji reaction to a message in this conversation. `messageTs` is\n * the platform message id the extension read from an event (see\n * `RunOrigin.messageTs`); `emoji` is a short name without colons.\n * Available when the embedder provides reaction support.\n */\n react(messageTs: string, emoji: string): Promise<void>;\n /**\n * Upload a host-side file into this conversation without an agent run.\n * Available when the embedder provides file uploads for the platform.\n */\n uploadFile(filePath: string, title?: string): Promise<void>;\n /**\n * Fire an autonomous agent run in this conversation as soon as possible.\n * Like a schedule, the run does not inherit conversation history — write\n * `text` self-contained. Backed by the embedder's schedule store.\n */\n triggerRun(text: string): Promise<void>;\n}\n\nexport type MikanExtensionActivate = (\n api: MikanExtensionApi,\n) => void | ExtensionDisposer | Promise<void | ExtensionDisposer>;\n\nexport interface MikanExtensionModule {\n name?: string;\n activate: MikanExtensionActivate;\n}\n\nexport interface LoadedExtension {\n name: string;\n path: string;\n /** Filesystem-safe identifier used for data dirs, secrets, and schedules. */\n slug: string;\n version?: string;\n description?: string;\n /** Skills discovered under the extension's `skills/` directory. */\n skills: MikanSkill[];\n}\n\nexport interface ExtensionLoadError {\n path: string;\n error: string;\n}\n\n/** Discovery-only view of an installed extension (module is not imported). */\nexport interface InstalledExtensionInfo {\n /** Display name: manifest name, falling back to the slug. */\n name: string;\n slug: string;\n path: string;\n /** Scan directory the extension was found in. */\n dir: string;\n version?: string;\n description?: string;\n /** Names of skills shipped in the extension's skills/ directory. */\n skillNames: string[];\n /** Secrets declared in package.json `mikan.secrets`. */\n secrets: ExtensionSecretDeclaration[];\n}\n\nexport interface LoadExtensionsOptions {\n /**\n * Directories to scan for extensions, in ascending precedence. Missing\n * directories are skipped. When two directories contribute the same slug,\n * the later one wins — that is how a conversation-scoped copy of a package\n * shadows the global one instead of activating alongside it.\n */\n dirs: string[];\n /**\n * Extension roots to load directly, without scanning for children. Each\n * path is one extension (a directory with an entrypoint, or a bare file).\n * Highest precedence, after every scanned directory. This is what\n * `mikan ext dev` points at a working copy.\n */\n roots?: string[];\n context: {\n /** Office identity; host-only state keys derive from it. */\n address: OfficeAddress;\n /** Raw platform id — what extension code sees and platform APIs accept. */\n conversationId: string;\n workspaceDir: string;\n model: Model<Api>;\n thinkingLevel: ThinkingLevel;\n };\n /** Embedder-provided services backing the v2 api surface. */\n services?: ExtensionHostServices;\n}\n\nexport interface LoadExtensionsResult {\n registry: ExtensionRegistry;\n extensions: LoadedExtension[];\n errors: ExtensionLoadError[];\n /** Skills contributed by extensions (inline: bodies ride in the prompt). */\n skills: MikanSkill[];\n /**\n * Run extension disposers (from `api.onDispose` and `activate` return\n * values). Call when the harness instance owning these extensions is\n * discarded. Idempotent; disposer errors are logged, never thrown.\n */\n dispose(): Promise<void>;\n}\n\nexport interface ExtensionValidation {\n ok: boolean;\n /** Slug the extension would install as (from the source dir/file name). */\n slug: string;\n /** Display name (manifest name, else slug). */\n name: string;\n version?: string;\n description?: string;\n /** Resolved entrypoint that would be imported. */\n entrypoint?: string;\n /** Skill names shipped alongside the extension. */\n skillNames: string[];\n /** Secrets declared in package.json `mikan.secrets`. */\n secrets: ExtensionSecretDeclaration[];\n errors: string[];\n warnings: string[];\n}\n"]}
@@ -21,9 +21,9 @@ export type { BudgetSettings, HarnessSettings, RetrySettings } from "./types.js"
21
21
  export { buildEventPayload, EventTypeSchema, parseEventPayload } from "./event-format.js";
22
22
  export type { EventConversationKind, EventFilePayload, EventPayloadInput, EventType, ImmediateEventPayload, OneShotEventPayload, PeriodicEventPayload, } from "./types.js";
23
23
  export { ExtensionRegistry, parseCommandInput } from "./extensions/registry.js";
24
- export { EXT_ACTION_PREFIX, namespaceActionIds, parseExtActionId } from "./extensions/blockkit.js";
24
+ export { EXT_ACTION_PREFIX, namespaceActionIds, parseExtActionId } from "./extensions/registry.js";
25
25
  export { defaultExtensionDirs, extensionSlug, listInstalledExtensions, loadExtensions, validateExtension, } from "./extensions/loader.js";
26
26
  export type { ExtensionValidation, InstalledExtensionInfo, LoadExtensionsOptions, LoadExtensionsResult, } from "./extensions/types.js";
27
- export type { AgentErrorHookEvent, BeforeAgentStartHookEvent, BeforeAgentStartHookResult, BudgetExceededHookEvent, ContextHookEvent, ContextHookResult, SubagentApi, ExtensionBlockAction, ExtensionBlockActionHandler, ExtensionBlockKitMessage, ExtensionCommand, ExtensionCommandContext, ExtensionDisposer, ExtensionHostServices, ExtensionLoadError, ExtensionManifest, ExtensionScheduleInfo, ExtensionSchedulePayload, ExtensionScheduleSpec, ExtensionScheduleStore, LoadedExtension, MessageEndHookEvent, MessageEndHookResult, MikanExtensionActivate, MikanExtensionApi, MikanExtensionModule, MikanHookMap, MikanHookName, RunOrigin, SessionCompactHookEvent, ToolCallHookEvent, ToolCallHookResult, ToolResultHookEvent, ToolResultHookResult, TurnEndHookEvent, } from "./extensions/types.js";
27
+ export type { AgentErrorHookEvent, BeforeAgentStartHookEvent, BeforeAgentStartHookResult, BudgetExceededHookEvent, ContextHookEvent, ContextHookResult, SubagentApi, ExtensionBlockAction, ExtensionBlockActionHandler, ExtensionBlockKitMessage, ExtensionCallbackScheduleSpec, ExtensionCallbackScheduleStore, ExtensionCommand, ExtensionCommandContext, ExtensionDisposer, ExtensionHostServices, ExtensionLoadError, ExtensionManifest, ExtensionScheduleAction, ExtensionScheduleCallbackEvent, ExtensionScheduleCallbackFire, ExtensionScheduleCallbackHandler, ExtensionScheduleEngine, ExtensionScheduleInfo, ExtensionSchedulePayload, ExtensionScheduleSpec, ExtensionScheduleStore, ExtensionSecretDeclaration, ExtensionTextScheduleSpec, LoadedExtension, MessageEndHookEvent, MessageEndHookResult, MikanExtensionActivate, MikanExtensionApi, MikanExtensionModule, MikanHookMap, MikanHookName, RunOrigin, SessionCompactHookEvent, ToolCallHookEvent, ToolCallHookResult, ToolResultHookEvent, ToolResultHookResult, TurnEndHookEvent, } from "./extensions/types.js";
28
28
  export { type SubagentModelSpec, type SubagentProfile, type SubagentParentContext, type SubagentRunBudget, type SubagentRunOutput, type SubagentRunRequest, type SubagentRunResult, type SubagentRunStatus, type SubagentUsage, type SubagentUsageSink, CURRENT_SESSION_VERSION, type BranchSummaryEntry, type CompactionEntry, type CustomEntry, type CustomMessageEntry, type SessionContext, type SessionEntry, type SessionFileEntry, type SessionHeader, type SessionInfoEntry, type SessionMessageEntry, } from "./types.js";
29
29
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/harness/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/harness/index.ts"],"names":[],"mappings":"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"}
@@ -15,7 +15,7 @@ export { loadSubagentProfiles } from "./subagent-profiles.js";
15
15
  export { DEFAULT_BUDGET_SETTINGS, DEFAULT_EVENT_BUDGET, DEFAULT_RETRY_SETTINGS, resolveHarnessSettings, } from "./settings.js";
16
16
  export { buildEventPayload, EventTypeSchema, parseEventPayload } from "./event-format.js";
17
17
  export { ExtensionRegistry, parseCommandInput } from "./extensions/registry.js";
18
- export { EXT_ACTION_PREFIX, namespaceActionIds, parseExtActionId } from "./extensions/blockkit.js";
18
+ export { EXT_ACTION_PREFIX, namespaceActionIds, parseExtActionId } from "./extensions/registry.js";
19
19
  export { defaultExtensionDirs, extensionSlug, listInstalledExtensions, loadExtensions, validateExtension, } from "./extensions/loader.js";
20
20
  export { CURRENT_SESSION_VERSION, } from "./types.js";
21
21
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/harness/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,EACL,4BAA4B,EAC5B,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEjE,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AACnG,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAQhD,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEzF,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,EACL,uBAAuB,EACvB,oBAAoB,EACpB,sBAAsB,EACtB,sBAAsB,GAEvB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAU1F,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACnG,OAAO,EACL,oBAAoB,EACpB,aAAa,EACb,uBAAuB,EACvB,cAAc,EACd,iBAAiB,GAClB,MAAM,wBAAwB,CAAC;AA4ChC,OAAO,EAWL,uBAAuB,GAWxB,MAAM,YAAY,CAAC","sourcesContent":["/**\n * mikan agent harness.\n *\n * mikan's own harness engineering layer, built directly on pi-agent-core\n * (agent loop, compaction, context building) and pi-ai (providers, models,\n * auth). See `src/harness/README.md` for the architecture.\n */\nexport { FileCredentialStore, defaultAuthPath } from \"./auth.js\";\nexport {\n DEFAULT_HTTP_IDLE_TIMEOUT_MS,\n configureHttpDispatcher,\n parseHttpIdleTimeoutMs,\n} from \"./http.js\";\nexport { MikanModels, defaultModelsJsonPath } from \"./models.js\";\nexport type { CreateMikanModelsOptions } from \"./types.js\";\nexport { SessionStore, loadSessionFileEntries, parseSessionFileEntries } from \"./session-store.js\";\nexport { MikanAgentSession } from \"./runner.js\";\nexport type {\n CompactionReason,\n HarnessEvent,\n HarnessEventListener,\n MikanAgentSessionOptions,\n PromptBlockedOutcome,\n} from \"./types.js\";\nexport { formatSkillsForPrompt, loadSkillsFromDir, parseFrontmatter } from \"./skills.js\";\nexport type { LoadSkillsResult, MikanSkill, SkillDiagnostic } from \"./types.js\";\nexport { loadSubagentProfiles } from \"./subagent-profiles.js\";\nexport type { LoadSubagentProfilesResult, SubagentProfileDiagnostic } from \"./types.js\";\nexport {\n DEFAULT_BUDGET_SETTINGS,\n DEFAULT_EVENT_BUDGET,\n DEFAULT_RETRY_SETTINGS,\n resolveHarnessSettings,\n type CompactionSettings,\n} from \"./settings.js\";\nexport type { BudgetSettings, HarnessSettings, RetrySettings } from \"./types.js\";\nexport { buildEventPayload, EventTypeSchema, parseEventPayload } from \"./event-format.js\";\nexport type {\n EventConversationKind,\n EventFilePayload,\n EventPayloadInput,\n EventType,\n ImmediateEventPayload,\n OneShotEventPayload,\n PeriodicEventPayload,\n} from \"./types.js\";\nexport { ExtensionRegistry, parseCommandInput } from \"./extensions/registry.js\";\nexport { EXT_ACTION_PREFIX, namespaceActionIds, parseExtActionId } from \"./extensions/blockkit.js\";\nexport {\n defaultExtensionDirs,\n extensionSlug,\n listInstalledExtensions,\n loadExtensions,\n validateExtension,\n} from \"./extensions/loader.js\";\nexport type {\n ExtensionValidation,\n InstalledExtensionInfo,\n LoadExtensionsOptions,\n LoadExtensionsResult,\n} from \"./extensions/types.js\";\nexport type {\n AgentErrorHookEvent,\n BeforeAgentStartHookEvent,\n BeforeAgentStartHookResult,\n BudgetExceededHookEvent,\n ContextHookEvent,\n ContextHookResult,\n SubagentApi,\n ExtensionBlockAction,\n ExtensionBlockActionHandler,\n ExtensionBlockKitMessage,\n ExtensionCommand,\n ExtensionCommandContext,\n ExtensionDisposer,\n ExtensionHostServices,\n ExtensionLoadError,\n ExtensionManifest,\n ExtensionScheduleInfo,\n ExtensionSchedulePayload,\n ExtensionScheduleSpec,\n ExtensionScheduleStore,\n LoadedExtension,\n MessageEndHookEvent,\n MessageEndHookResult,\n MikanExtensionActivate,\n MikanExtensionApi,\n MikanExtensionModule,\n MikanHookMap,\n MikanHookName,\n RunOrigin,\n SessionCompactHookEvent,\n ToolCallHookEvent,\n ToolCallHookResult,\n ToolResultHookEvent,\n ToolResultHookResult,\n TurnEndHookEvent,\n} from \"./extensions/types.js\";\nexport {\n type SubagentModelSpec,\n type SubagentProfile,\n type SubagentParentContext,\n type SubagentRunBudget,\n type SubagentRunOutput,\n type SubagentRunRequest,\n type SubagentRunResult,\n type SubagentRunStatus,\n type SubagentUsage,\n type SubagentUsageSink,\n CURRENT_SESSION_VERSION,\n type BranchSummaryEntry,\n type CompactionEntry,\n type CustomEntry,\n type CustomMessageEntry,\n type SessionContext,\n type SessionEntry,\n type SessionFileEntry,\n type SessionHeader,\n type SessionInfoEntry,\n type SessionMessageEntry,\n} from \"./types.js\";\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/harness/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,EACL,4BAA4B,EAC5B,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEjE,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AACnG,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAQhD,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEzF,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,EACL,uBAAuB,EACvB,oBAAoB,EACpB,sBAAsB,EACtB,sBAAsB,GAEvB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAU1F,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACnG,OAAO,EACL,oBAAoB,EACpB,aAAa,EACb,uBAAuB,EACvB,cAAc,EACd,iBAAiB,GAClB,MAAM,wBAAwB,CAAC;AAqDhC,OAAO,EAWL,uBAAuB,GAWxB,MAAM,YAAY,CAAC","sourcesContent":["/**\n * mikan agent harness.\n *\n * mikan's own harness engineering layer, built directly on pi-agent-core\n * (agent loop, compaction, context building) and pi-ai (providers, models,\n * auth). See `src/harness/README.md` for the architecture.\n */\nexport { FileCredentialStore, defaultAuthPath } from \"./auth.js\";\nexport {\n DEFAULT_HTTP_IDLE_TIMEOUT_MS,\n configureHttpDispatcher,\n parseHttpIdleTimeoutMs,\n} from \"./http.js\";\nexport { MikanModels, defaultModelsJsonPath } from \"./models.js\";\nexport type { CreateMikanModelsOptions } from \"./types.js\";\nexport { SessionStore, loadSessionFileEntries, parseSessionFileEntries } from \"./session-store.js\";\nexport { MikanAgentSession } from \"./runner.js\";\nexport type {\n CompactionReason,\n HarnessEvent,\n HarnessEventListener,\n MikanAgentSessionOptions,\n PromptBlockedOutcome,\n} from \"./types.js\";\nexport { formatSkillsForPrompt, loadSkillsFromDir, parseFrontmatter } from \"./skills.js\";\nexport type { LoadSkillsResult, MikanSkill, SkillDiagnostic } from \"./types.js\";\nexport { loadSubagentProfiles } from \"./subagent-profiles.js\";\nexport type { LoadSubagentProfilesResult, SubagentProfileDiagnostic } from \"./types.js\";\nexport {\n DEFAULT_BUDGET_SETTINGS,\n DEFAULT_EVENT_BUDGET,\n DEFAULT_RETRY_SETTINGS,\n resolveHarnessSettings,\n type CompactionSettings,\n} from \"./settings.js\";\nexport type { BudgetSettings, HarnessSettings, RetrySettings } from \"./types.js\";\nexport { buildEventPayload, EventTypeSchema, parseEventPayload } from \"./event-format.js\";\nexport type {\n EventConversationKind,\n EventFilePayload,\n EventPayloadInput,\n EventType,\n ImmediateEventPayload,\n OneShotEventPayload,\n PeriodicEventPayload,\n} from \"./types.js\";\nexport { ExtensionRegistry, parseCommandInput } from \"./extensions/registry.js\";\nexport { EXT_ACTION_PREFIX, namespaceActionIds, parseExtActionId } from \"./extensions/registry.js\";\nexport {\n defaultExtensionDirs,\n extensionSlug,\n listInstalledExtensions,\n loadExtensions,\n validateExtension,\n} from \"./extensions/loader.js\";\nexport type {\n ExtensionValidation,\n InstalledExtensionInfo,\n LoadExtensionsOptions,\n LoadExtensionsResult,\n} from \"./extensions/types.js\";\nexport type {\n AgentErrorHookEvent,\n BeforeAgentStartHookEvent,\n BeforeAgentStartHookResult,\n BudgetExceededHookEvent,\n ContextHookEvent,\n ContextHookResult,\n SubagentApi,\n ExtensionBlockAction,\n ExtensionBlockActionHandler,\n ExtensionBlockKitMessage,\n ExtensionCallbackScheduleSpec,\n ExtensionCallbackScheduleStore,\n ExtensionCommand,\n ExtensionCommandContext,\n ExtensionDisposer,\n ExtensionHostServices,\n ExtensionLoadError,\n ExtensionManifest,\n ExtensionScheduleAction,\n ExtensionScheduleCallbackEvent,\n ExtensionScheduleCallbackFire,\n ExtensionScheduleCallbackHandler,\n ExtensionScheduleEngine,\n ExtensionScheduleInfo,\n ExtensionSchedulePayload,\n ExtensionScheduleSpec,\n ExtensionScheduleStore,\n ExtensionSecretDeclaration,\n ExtensionTextScheduleSpec,\n LoadedExtension,\n MessageEndHookEvent,\n MessageEndHookResult,\n MikanExtensionActivate,\n MikanExtensionApi,\n MikanExtensionModule,\n MikanHookMap,\n MikanHookName,\n RunOrigin,\n SessionCompactHookEvent,\n ToolCallHookEvent,\n ToolCallHookResult,\n ToolResultHookEvent,\n ToolResultHookResult,\n TurnEndHookEvent,\n} from \"./extensions/types.js\";\nexport {\n type SubagentModelSpec,\n type SubagentProfile,\n type SubagentParentContext,\n type SubagentRunBudget,\n type SubagentRunOutput,\n type SubagentRunRequest,\n type SubagentRunResult,\n type SubagentRunStatus,\n type SubagentUsage,\n type SubagentUsageSink,\n CURRENT_SESSION_VERSION,\n type BranchSummaryEntry,\n type CompactionEntry,\n type CustomEntry,\n type CustomMessageEntry,\n type SessionContext,\n type SessionEntry,\n type SessionFileEntry,\n type SessionHeader,\n type SessionInfoEntry,\n type SessionMessageEntry,\n} from \"./types.js\";\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../src/harness/models.ts"],"names":[],"mappings":"AA6BA,OAAO,EAEL,KAAK,GAAG,EACR,KAAK,UAAU,EACf,KAAK,KAAK,EACV,KAAK,MAAM,EAIZ,MAAM,uBAAuB,CAAC;AAS/B,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAE3D,YAAY,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AA8C3D,+CAA+C;AAC/C,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AA8GD;;;GAGG;AACH,qBAAa,WAAW;IACtB,mEAAmE;IACnE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,SAAS,CAAqB;IAEtC,OAAO,eAGN;IAED,MAAM,CAAC,MAAM,CAAC,OAAO,GAAE,wBAA6B,GAAG,WAAW,CAwBjE;IAED,8EAA8E;IAC9E,QAAQ,IAAI,MAAM,GAAG,SAAS,CAE7B;IAED,+CAA+C;IAC/C,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAErB;IAED,uCAAuC;IACvC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS,CAE9D;IAED;;;OAGG;IACH,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAMrD;IAED,kFAAkF;IAC5E,YAAY,IAAI,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAkB1C;IAED,qEAAqE;IACrE,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAE1D;IAED;;;OAGG;IACG,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CASxE;CACF"}
1
+ {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../src/harness/models.ts"],"names":[],"mappings":"AA6BA,OAAO,EAEL,KAAK,GAAG,EACR,KAAK,UAAU,EACf,KAAK,KAAK,EACV,KAAK,MAAM,EAIZ,MAAM,uBAAuB,CAAC;AAS/B,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAE3D,YAAY,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AA8C3D,+CAA+C;AAC/C,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AA2ID;;;GAGG;AACH,qBAAa,WAAW;IACtB,mEAAmE;IACnE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,SAAS,CAAqB;IAEtC,OAAO,eAGN;IAED,MAAM,CAAC,MAAM,CAAC,OAAO,GAAE,wBAA6B,GAAG,WAAW,CAMjE;IAED,8EAA8E;IAC9E,QAAQ,IAAI,MAAM,GAAG,SAAS,CAE7B;IAED,+CAA+C;IAC/C,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAErB;IAED,uCAAuC;IACvC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS,CAE9D;IAED;;;OAGG;IACH,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAMrD;IAED,kFAAkF;IAC5E,YAAY,IAAI,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAoB1C;IAED,qEAAqE;IACrE,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAE1D;IAED;;;OAGG;IACG,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CASxE;CACF"}