panoma 0.9.0 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (547) hide show
  1. package/README.md +1 -0
  2. package/app/BUILD-INFO.json +3 -3
  3. package/app/apps/web/.next-bundle/BUILD_ID +1 -1
  4. package/app/apps/web/.next-bundle/app-build-manifest.json +414 -322
  5. package/app/apps/web/.next-bundle/app-path-routes-manifest.json +45 -33
  6. package/app/apps/web/.next-bundle/build-manifest.json +3 -3
  7. package/app/apps/web/.next-bundle/prerender-manifest.json +9 -9
  8. package/app/apps/web/.next-bundle/required-server-files.json +5 -4
  9. package/app/apps/web/.next-bundle/routes-manifest.json +14 -0
  10. package/app/apps/web/.next-bundle/server/app/(app)/agents/page.js +2 -2
  11. package/app/apps/web/.next-bundle/server/app/(app)/agents/page_client-reference-manifest.js +1 -1
  12. package/app/apps/web/.next-bundle/server/app/(app)/ai/page.js +2 -2
  13. package/app/apps/web/.next-bundle/server/app/(app)/ai/page_client-reference-manifest.js +1 -1
  14. package/app/apps/web/.next-bundle/server/app/(app)/apps/[id]/page.js +2 -2
  15. package/app/apps/web/.next-bundle/server/app/(app)/apps/[id]/page_client-reference-manifest.js +1 -1
  16. package/app/apps/web/.next-bundle/server/app/(app)/apps/page.js +2 -2
  17. package/app/apps/web/.next-bundle/server/app/(app)/apps/page_client-reference-manifest.js +1 -1
  18. package/app/apps/web/.next-bundle/server/app/(app)/bridge/page.js +2 -2
  19. package/app/apps/web/.next-bundle/server/app/(app)/bridge/page_client-reference-manifest.js +1 -1
  20. package/app/apps/web/.next-bundle/server/app/(app)/copies/page.js +2 -2
  21. package/app/apps/web/.next-bundle/server/app/(app)/copies/page_client-reference-manifest.js +1 -1
  22. package/app/apps/web/.next-bundle/server/app/(app)/credentials/page.js +2 -2
  23. package/app/apps/web/.next-bundle/server/app/(app)/credentials/page_client-reference-manifest.js +1 -1
  24. package/app/apps/web/.next-bundle/server/app/(app)/disk/page.js +2 -2
  25. package/app/apps/web/.next-bundle/server/app/(app)/disk/page_client-reference-manifest.js +1 -1
  26. package/app/apps/web/.next-bundle/server/app/(app)/handoff/page.js +2 -0
  27. package/app/apps/web/.next-bundle/server/app/(app)/handoff/page_client-reference-manifest.js +1 -0
  28. package/app/apps/web/.next-bundle/server/app/(app)/hidden/page.js +2 -2
  29. package/app/apps/web/.next-bundle/server/app/(app)/hidden/page_client-reference-manifest.js +1 -1
  30. package/app/apps/web/.next-bundle/server/app/(app)/p/[slug]/page.js +2 -2
  31. package/app/apps/web/.next-bundle/server/app/(app)/p/[slug]/page_client-reference-manifest.js +1 -1
  32. package/app/apps/web/.next-bundle/server/app/(app)/p/[slug]/video/page.js +2 -2
  33. package/app/apps/web/.next-bundle/server/app/(app)/p/[slug]/video/page_client-reference-manifest.js +1 -1
  34. package/app/apps/web/.next-bundle/server/app/(app)/packages/page.js +2 -2
  35. package/app/apps/web/.next-bundle/server/app/(app)/packages/page_client-reference-manifest.js +1 -1
  36. package/app/apps/web/.next-bundle/server/app/(app)/page.js +2 -2
  37. package/app/apps/web/.next-bundle/server/app/(app)/page_client-reference-manifest.js +1 -1
  38. package/app/apps/web/.next-bundle/server/app/(app)/runs/[id]/page.js +2 -2
  39. package/app/apps/web/.next-bundle/server/app/(app)/runs/[id]/page_client-reference-manifest.js +1 -1
  40. package/app/apps/web/.next-bundle/server/app/(app)/runs/page.js +2 -2
  41. package/app/apps/web/.next-bundle/server/app/(app)/runs/page_client-reference-manifest.js +1 -1
  42. package/app/apps/web/.next-bundle/server/app/(app)/search/page.js +2 -2
  43. package/app/apps/web/.next-bundle/server/app/(app)/search/page_client-reference-manifest.js +1 -1
  44. package/app/apps/web/.next-bundle/server/app/(app)/spend/page.js +2 -2
  45. package/app/apps/web/.next-bundle/server/app/(app)/spend/page_client-reference-manifest.js +1 -1
  46. package/app/apps/web/.next-bundle/server/app/(app)/twin/look/page.js +2 -2
  47. package/app/apps/web/.next-bundle/server/app/(app)/twin/look/page_client-reference-manifest.js +1 -1
  48. package/app/apps/web/.next-bundle/server/app/(app)/twin/page.js +2 -2
  49. package/app/apps/web/.next-bundle/server/app/(app)/twin/page_client-reference-manifest.js +1 -1
  50. package/app/apps/web/.next-bundle/server/app/(app)/unsaved/page.js +2 -2
  51. package/app/apps/web/.next-bundle/server/app/(app)/unsaved/page_client-reference-manifest.js +1 -1
  52. package/app/apps/web/.next-bundle/server/app/_not-found/page.js +2 -2
  53. package/app/apps/web/.next-bundle/server/app/_not-found/page_client-reference-manifest.js +1 -1
  54. package/app/apps/web/.next-bundle/server/app/api/accounts/route.js +1 -1
  55. package/app/apps/web/.next-bundle/server/app/api/accounts/route_client-reference-manifest.js +1 -1
  56. package/app/apps/web/.next-bundle/server/app/api/agent/apps/route.js +1 -0
  57. package/app/apps/web/.next-bundle/server/app/api/agent/apps/route_client-reference-manifest.js +1 -0
  58. package/app/apps/web/.next-bundle/server/app/api/agent/consult/route.js +1 -1
  59. package/app/apps/web/.next-bundle/server/app/api/agent/consult/route_client-reference-manifest.js +1 -1
  60. package/app/apps/web/.next-bundle/server/app/api/agent/context/route.js +1 -1
  61. package/app/apps/web/.next-bundle/server/app/api/agent/context/route_client-reference-manifest.js +1 -1
  62. package/app/apps/web/.next-bundle/server/app/api/agent/conversations/route.js +1 -0
  63. package/app/apps/web/.next-bundle/server/app/api/agent/conversations/route_client-reference-manifest.js +1 -0
  64. package/app/apps/web/.next-bundle/server/app/api/agent/handoff/route.js +1 -0
  65. package/app/apps/web/.next-bundle/server/app/api/agent/handoff/route_client-reference-manifest.js +1 -0
  66. package/app/apps/web/.next-bundle/server/app/api/agent/hello/route.js +1 -1
  67. package/app/apps/web/.next-bundle/server/app/api/agent/hello/route_client-reference-manifest.js +1 -1
  68. package/app/apps/web/.next-bundle/server/app/api/agent/journal/route.js +1 -1
  69. package/app/apps/web/.next-bundle/server/app/api/agent/journal/route_client-reference-manifest.js +1 -1
  70. package/app/apps/web/.next-bundle/server/app/api/agent/keys/route.js +1 -1
  71. package/app/apps/web/.next-bundle/server/app/api/agent/keys/route_client-reference-manifest.js +1 -1
  72. package/app/apps/web/.next-bundle/server/app/api/agent/log/route.js +1 -1
  73. package/app/apps/web/.next-bundle/server/app/api/agent/log/route_client-reference-manifest.js +1 -1
  74. package/app/apps/web/.next-bundle/server/app/api/agent/mcp/route.js +2 -2
  75. package/app/apps/web/.next-bundle/server/app/api/agent/mcp/route_client-reference-manifest.js +1 -1
  76. package/app/apps/web/.next-bundle/server/app/api/agent/notes/route.js +1 -1
  77. package/app/apps/web/.next-bundle/server/app/api/agent/notes/route_client-reference-manifest.js +1 -1
  78. package/app/apps/web/.next-bundle/server/app/api/agent/tasks/[id]/route.js +1 -1
  79. package/app/apps/web/.next-bundle/server/app/api/agent/tasks/[id]/route_client-reference-manifest.js +1 -1
  80. package/app/apps/web/.next-bundle/server/app/api/agent/tasks/route.js +1 -1
  81. package/app/apps/web/.next-bundle/server/app/api/agent/tasks/route_client-reference-manifest.js +1 -1
  82. package/app/apps/web/.next-bundle/server/app/api/agent/video/cancel/route.js +1 -0
  83. package/app/apps/web/.next-bundle/server/app/api/agent/video/cancel/route_client-reference-manifest.js +1 -0
  84. package/app/apps/web/.next-bundle/server/app/api/agent/video/jobs/route.js +1 -0
  85. package/app/apps/web/.next-bundle/server/app/api/agent/video/jobs/route_client-reference-manifest.js +1 -0
  86. package/app/apps/web/.next-bundle/server/app/api/agent/video/route.js +1 -0
  87. package/app/apps/web/.next-bundle/server/app/api/agent/video/route_client-reference-manifest.js +1 -0
  88. package/app/apps/web/.next-bundle/server/app/api/ai/route.js +1 -1
  89. package/app/apps/web/.next-bundle/server/app/api/ai/route_client-reference-manifest.js +1 -1
  90. package/app/apps/web/.next-bundle/server/app/api/apps/[id]/[operation]/route.js +1 -1
  91. package/app/apps/web/.next-bundle/server/app/api/apps/[id]/[operation]/route_client-reference-manifest.js +1 -1
  92. package/app/apps/web/.next-bundle/server/app/api/apps/[id]/credentials/route.js +1 -1
  93. package/app/apps/web/.next-bundle/server/app/api/apps/[id]/credentials/route_client-reference-manifest.js +1 -1
  94. package/app/apps/web/.next-bundle/server/app/api/apps/[id]/jobs/route.js +1 -1
  95. package/app/apps/web/.next-bundle/server/app/api/apps/[id]/jobs/route_client-reference-manifest.js +1 -1
  96. package/app/apps/web/.next-bundle/server/app/api/apps/[id]/legal/route.js +1 -1
  97. package/app/apps/web/.next-bundle/server/app/api/apps/[id]/legal/route_client-reference-manifest.js +1 -1
  98. package/app/apps/web/.next-bundle/server/app/api/apps/[id]/route.js +1 -1
  99. package/app/apps/web/.next-bundle/server/app/api/apps/[id]/route_client-reference-manifest.js +1 -1
  100. package/app/apps/web/.next-bundle/server/app/api/apps/[id]/settings/route.js +1 -1
  101. package/app/apps/web/.next-bundle/server/app/api/apps/[id]/settings/route_client-reference-manifest.js +1 -1
  102. package/app/apps/web/.next-bundle/server/app/api/apps/jobs/[jobId]/artifact/route.js +1 -1
  103. package/app/apps/web/.next-bundle/server/app/api/apps/jobs/[jobId]/artifact/route_client-reference-manifest.js +1 -1
  104. package/app/apps/web/.next-bundle/server/app/api/apps/jobs/[jobId]/cancel/route.js +1 -1
  105. package/app/apps/web/.next-bundle/server/app/api/apps/jobs/[jobId]/cancel/route_client-reference-manifest.js +1 -1
  106. package/app/apps/web/.next-bundle/server/app/api/apps/jobs/[jobId]/route.js +1 -1
  107. package/app/apps/web/.next-bundle/server/app/api/apps/jobs/[jobId]/route_client-reference-manifest.js +1 -1
  108. package/app/apps/web/.next-bundle/server/app/api/apps/route.js +1 -1
  109. package/app/apps/web/.next-bundle/server/app/api/apps/route_client-reference-manifest.js +1 -1
  110. package/app/apps/web/.next-bundle/server/app/api/assets/route.js +1 -1
  111. package/app/apps/web/.next-bundle/server/app/api/assets/route_client-reference-manifest.js +1 -1
  112. package/app/apps/web/.next-bundle/server/app/api/assignments/launch/route.js +2 -2
  113. package/app/apps/web/.next-bundle/server/app/api/assignments/launch/route_client-reference-manifest.js +1 -1
  114. package/app/apps/web/.next-bundle/server/app/api/assignments/route.js +1 -1
  115. package/app/apps/web/.next-bundle/server/app/api/assignments/route_client-reference-manifest.js +1 -1
  116. package/app/apps/web/.next-bundle/server/app/api/catalog/route.js +1 -1
  117. package/app/apps/web/.next-bundle/server/app/api/catalog/route_client-reference-manifest.js +1 -1
  118. package/app/apps/web/.next-bundle/server/app/api/check/route.js +1 -1
  119. package/app/apps/web/.next-bundle/server/app/api/check/route_client-reference-manifest.js +1 -1
  120. package/app/apps/web/.next-bundle/server/app/api/consultations/route.js +1 -1
  121. package/app/apps/web/.next-bundle/server/app/api/consultations/route_client-reference-manifest.js +1 -1
  122. package/app/apps/web/.next-bundle/server/app/api/describe/route.js +2 -2
  123. package/app/apps/web/.next-bundle/server/app/api/describe/route_client-reference-manifest.js +1 -1
  124. package/app/apps/web/.next-bundle/server/app/api/disk/route.js +1 -1
  125. package/app/apps/web/.next-bundle/server/app/api/disk/route_client-reference-manifest.js +1 -1
  126. package/app/apps/web/.next-bundle/server/app/api/enrich/route.js +1 -1
  127. package/app/apps/web/.next-bundle/server/app/api/enrich/route_client-reference-manifest.js +1 -1
  128. package/app/apps/web/.next-bundle/server/app/api/environment/route.js +2 -2
  129. package/app/apps/web/.next-bundle/server/app/api/environment/route_client-reference-manifest.js +1 -1
  130. package/app/apps/web/.next-bundle/server/app/api/handoff/[id]/route.js +1 -0
  131. package/app/apps/web/.next-bundle/server/app/api/handoff/[id]/route_client-reference-manifest.js +1 -0
  132. package/app/apps/web/.next-bundle/server/app/api/handoff/digest/route.js +1 -0
  133. package/app/apps/web/.next-bundle/server/app/api/handoff/digest/route_client-reference-manifest.js +1 -0
  134. package/app/apps/web/.next-bundle/server/app/api/handoff/launch/route.js +1 -0
  135. package/app/apps/web/.next-bundle/server/app/api/handoff/launch/route_client-reference-manifest.js +1 -0
  136. package/app/apps/web/.next-bundle/server/app/api/handoff/record/route.js +1 -0
  137. package/app/apps/web/.next-bundle/server/app/api/handoff/record/route_client-reference-manifest.js +1 -0
  138. package/app/apps/web/.next-bundle/server/app/api/handoff/route.js +1 -0
  139. package/app/apps/web/.next-bundle/server/app/api/handoff/route_client-reference-manifest.js +1 -0
  140. package/app/apps/web/.next-bundle/server/app/api/hooks/route.js +2 -2
  141. package/app/apps/web/.next-bundle/server/app/api/hooks/route_client-reference-manifest.js +1 -1
  142. package/app/apps/web/.next-bundle/server/app/api/ingest/route.js +1 -1
  143. package/app/apps/web/.next-bundle/server/app/api/ingest/route_client-reference-manifest.js +1 -1
  144. package/app/apps/web/.next-bundle/server/app/api/md/apply/route.js +1 -1
  145. package/app/apps/web/.next-bundle/server/app/api/md/apply/route_client-reference-manifest.js +1 -1
  146. package/app/apps/web/.next-bundle/server/app/api/md/context/route.js +1 -1
  147. package/app/apps/web/.next-bundle/server/app/api/md/context/route_client-reference-manifest.js +1 -1
  148. package/app/apps/web/.next-bundle/server/app/api/md/inspect/route.js +1 -1
  149. package/app/apps/web/.next-bundle/server/app/api/md/inspect/route_client-reference-manifest.js +1 -1
  150. package/app/apps/web/.next-bundle/server/app/api/md/repair/route.js +1 -1
  151. package/app/apps/web/.next-bundle/server/app/api/md/repair/route_client-reference-manifest.js +1 -1
  152. package/app/apps/web/.next-bundle/server/app/api/md/review/route.js +2 -2
  153. package/app/apps/web/.next-bundle/server/app/api/md/review/route_client-reference-manifest.js +1 -1
  154. package/app/apps/web/.next-bundle/server/app/api/memory/export/route.js +2 -2
  155. package/app/apps/web/.next-bundle/server/app/api/memory/export/route_client-reference-manifest.js +1 -1
  156. package/app/apps/web/.next-bundle/server/app/api/north/route.js +1 -1
  157. package/app/apps/web/.next-bundle/server/app/api/north/route_client-reference-manifest.js +1 -1
  158. package/app/apps/web/.next-bundle/server/app/api/notes/route.js +1 -1
  159. package/app/apps/web/.next-bundle/server/app/api/notes/route_client-reference-manifest.js +1 -1
  160. package/app/apps/web/.next-bundle/server/app/api/open/all/route.js +1 -1
  161. package/app/apps/web/.next-bundle/server/app/api/open/all/route_client-reference-manifest.js +1 -1
  162. package/app/apps/web/.next-bundle/server/app/api/open/route.js +1 -1
  163. package/app/apps/web/.next-bundle/server/app/api/open/route_client-reference-manifest.js +1 -1
  164. package/app/apps/web/.next-bundle/server/app/api/project/route.js +1 -1
  165. package/app/apps/web/.next-bundle/server/app/api/project/route_client-reference-manifest.js +1 -1
  166. package/app/apps/web/.next-bundle/server/app/api/rescan/route.js +1 -1
  167. package/app/apps/web/.next-bundle/server/app/api/rescan/route_client-reference-manifest.js +1 -1
  168. package/app/apps/web/.next-bundle/server/app/api/roots/route.js +1 -1
  169. package/app/apps/web/.next-bundle/server/app/api/roots/route_client-reference-manifest.js +1 -1
  170. package/app/apps/web/.next-bundle/server/app/api/runs/[id]/route.js +1 -1
  171. package/app/apps/web/.next-bundle/server/app/api/runs/[id]/route_client-reference-manifest.js +1 -1
  172. package/app/apps/web/.next-bundle/server/app/api/runs/route.js +1 -1
  173. package/app/apps/web/.next-bundle/server/app/api/runs/route_client-reference-manifest.js +1 -1
  174. package/app/apps/web/.next-bundle/server/app/api/scale/route.js +1 -1
  175. package/app/apps/web/.next-bundle/server/app/api/scale/route_client-reference-manifest.js +1 -1
  176. package/app/apps/web/.next-bundle/server/app/api/search/route.js +1 -1
  177. package/app/apps/web/.next-bundle/server/app/api/search/route_client-reference-manifest.js +1 -1
  178. package/app/apps/web/.next-bundle/server/app/api/secrets/route.js +1 -1
  179. package/app/apps/web/.next-bundle/server/app/api/secrets/route_client-reference-manifest.js +1 -1
  180. package/app/apps/web/.next-bundle/server/app/api/spend/route.js +1 -1
  181. package/app/apps/web/.next-bundle/server/app/api/spend/route_client-reference-manifest.js +1 -1
  182. package/app/apps/web/.next-bundle/server/app/api/tasks/route.js +1 -1
  183. package/app/apps/web/.next-bundle/server/app/api/tasks/route_client-reference-manifest.js +1 -1
  184. package/app/apps/web/.next-bundle/server/app/api/today/route.js +1 -1
  185. package/app/apps/web/.next-bundle/server/app/api/today/route_client-reference-manifest.js +1 -1
  186. package/app/apps/web/.next-bundle/server/app/api/twin/assign/route.js +1 -1
  187. package/app/apps/web/.next-bundle/server/app/api/twin/assign/route_client-reference-manifest.js +1 -1
  188. package/app/apps/web/.next-bundle/server/app/api/twin/classify/route.js +1 -1
  189. package/app/apps/web/.next-bundle/server/app/api/twin/classify/route_client-reference-manifest.js +1 -1
  190. package/app/apps/web/.next-bundle/server/app/api/twin/critique/route.js +1 -1
  191. package/app/apps/web/.next-bundle/server/app/api/twin/critique/route_client-reference-manifest.js +1 -1
  192. package/app/apps/web/.next-bundle/server/app/api/twin/design/route.js +1 -1
  193. package/app/apps/web/.next-bundle/server/app/api/twin/design/route_client-reference-manifest.js +1 -1
  194. package/app/apps/web/.next-bundle/server/app/api/twin/distill/route.js +1 -1
  195. package/app/apps/web/.next-bundle/server/app/api/twin/distill/route_client-reference-manifest.js +1 -1
  196. package/app/apps/web/.next-bundle/server/app/api/twin/episodes/learn/route.js +1 -1
  197. package/app/apps/web/.next-bundle/server/app/api/twin/episodes/learn/route_client-reference-manifest.js +1 -1
  198. package/app/apps/web/.next-bundle/server/app/api/twin/episodes/route.js +1 -1
  199. package/app/apps/web/.next-bundle/server/app/api/twin/episodes/route_client-reference-manifest.js +1 -1
  200. package/app/apps/web/.next-bundle/server/app/api/twin/look/route.js +1 -1
  201. package/app/apps/web/.next-bundle/server/app/api/twin/look/route_client-reference-manifest.js +1 -1
  202. package/app/apps/web/.next-bundle/server/app/api/twin/mine/route.js +1 -1
  203. package/app/apps/web/.next-bundle/server/app/api/twin/mine/route_client-reference-manifest.js +1 -1
  204. package/app/apps/web/.next-bundle/server/app/api/twin/rehearse/route.js +1 -1
  205. package/app/apps/web/.next-bundle/server/app/api/twin/rehearse/route_client-reference-manifest.js +1 -1
  206. package/app/apps/web/.next-bundle/server/app/api/twin/score/route.js +1 -1
  207. package/app/apps/web/.next-bundle/server/app/api/twin/score/route_client-reference-manifest.js +1 -1
  208. package/app/apps/web/.next-bundle/server/app/api/twin/shot/route.js +1 -1
  209. package/app/apps/web/.next-bundle/server/app/api/twin/shot/route_client-reference-manifest.js +1 -1
  210. package/app/apps/web/.next-bundle/server/app/api/twin/sources/route.js +1 -1
  211. package/app/apps/web/.next-bundle/server/app/api/twin/sources/route_client-reference-manifest.js +1 -1
  212. package/app/apps/web/.next-bundle/server/app/api/twin/synthesize/route.js +1 -1
  213. package/app/apps/web/.next-bundle/server/app/api/twin/synthesize/route_client-reference-manifest.js +1 -1
  214. package/app/apps/web/.next-bundle/server/app/api/twin/taste/route.js +1 -1
  215. package/app/apps/web/.next-bundle/server/app/api/twin/taste/route_client-reference-manifest.js +1 -1
  216. package/app/apps/web/.next-bundle/server/app/api/twin/verdicts/route.js +1 -1
  217. package/app/apps/web/.next-bundle/server/app/api/twin/verdicts/route_client-reference-manifest.js +1 -1
  218. package/app/apps/web/.next-bundle/server/app/api/watch/route.js +1 -1
  219. package/app/apps/web/.next-bundle/server/app/api/watch/route_client-reference-manifest.js +1 -1
  220. package/app/apps/web/.next-bundle/server/app/apple-icon.png/route.js +1 -1
  221. package/app/apps/web/.next-bundle/server/app/icon/[id]/route.js +1 -1
  222. package/app/apps/web/.next-bundle/server/app/icon/[id]/route_client-reference-manifest.js +1 -1
  223. package/app/apps/web/.next-bundle/server/app/icon.png/route.js +1 -1
  224. package/app/apps/web/.next-bundle/server/app-paths-manifest.json +45 -33
  225. package/app/apps/web/.next-bundle/server/chunks/1190.js +1 -1
  226. package/app/apps/web/.next-bundle/server/chunks/1214.js +217 -0
  227. package/app/apps/web/.next-bundle/server/chunks/1646.js +5 -5
  228. package/app/apps/web/.next-bundle/server/chunks/2455.js +1 -1
  229. package/app/apps/web/.next-bundle/server/chunks/2658.js +2 -2
  230. package/app/apps/web/.next-bundle/server/chunks/305.js +3 -0
  231. package/app/apps/web/.next-bundle/server/chunks/329.js +1 -0
  232. package/app/apps/web/.next-bundle/server/chunks/3347.js +1 -1
  233. package/app/apps/web/.next-bundle/server/chunks/376.js +1 -0
  234. package/app/apps/web/.next-bundle/server/chunks/3815.js +1 -0
  235. package/app/apps/web/.next-bundle/server/chunks/3834.js +1 -1
  236. package/app/apps/web/.next-bundle/server/chunks/3863.js +1 -0
  237. package/app/apps/web/.next-bundle/server/chunks/3896.js +16 -0
  238. package/app/apps/web/.next-bundle/server/chunks/4478.js +1 -1
  239. package/app/apps/web/.next-bundle/server/chunks/4498.js +2 -2
  240. package/app/apps/web/.next-bundle/server/chunks/4810.js +5 -5
  241. package/app/apps/web/.next-bundle/server/chunks/5103.js +1 -1
  242. package/app/apps/web/.next-bundle/server/chunks/{5975.js → 5676.js} +1 -1
  243. package/app/apps/web/.next-bundle/server/chunks/5839.js +1 -0
  244. package/app/apps/web/.next-bundle/server/chunks/6206.js +1 -0
  245. package/app/apps/web/.next-bundle/server/chunks/6384.js +1 -0
  246. package/app/apps/web/.next-bundle/server/chunks/6913.js +7 -7
  247. package/app/apps/web/.next-bundle/server/chunks/{2256.js → 7011.js} +2 -2
  248. package/app/apps/web/.next-bundle/server/chunks/7245.js +1 -1
  249. package/app/apps/web/.next-bundle/server/chunks/7400.js +3 -0
  250. package/app/apps/web/.next-bundle/server/chunks/7498.js +2 -0
  251. package/app/apps/web/.next-bundle/server/chunks/7957.js +1 -1
  252. package/app/apps/web/.next-bundle/server/chunks/8404.js +1 -1
  253. package/app/apps/web/.next-bundle/server/chunks/8441.js +1 -0
  254. package/app/apps/web/.next-bundle/server/chunks/8463.js +1 -1
  255. package/app/apps/web/.next-bundle/server/chunks/9006.js +3 -0
  256. package/app/apps/web/.next-bundle/server/chunks/9128.js +1 -0
  257. package/app/apps/web/.next-bundle/server/chunks/{6693.js → 9226.js} +2 -2
  258. package/app/apps/web/.next-bundle/server/chunks/9441.js +1 -0
  259. package/app/apps/web/.next-bundle/server/chunks/9511.js +16 -0
  260. package/app/apps/web/.next-bundle/server/functions-config-manifest.json +14 -8
  261. package/app/apps/web/.next-bundle/server/middleware-build-manifest.js +1 -1
  262. package/app/apps/web/.next-bundle/server/middleware-manifest.json +5 -5
  263. package/app/apps/web/.next-bundle/server/middleware.js +2 -2
  264. package/app/apps/web/.next-bundle/server/next-font-manifest.js +1 -1
  265. package/app/apps/web/.next-bundle/server/next-font-manifest.json +1 -1
  266. package/app/apps/web/.next-bundle/server/pages/500.html +1 -1
  267. package/app/apps/web/.next-bundle/server/server-reference-manifest.json +1 -1
  268. package/app/apps/web/.next-bundle/static/chunks/1369-514f421b74ddd546.js +1 -0
  269. package/app/apps/web/.next-bundle/static/chunks/{2202-897aaad3cd785ea6.js → 2202-320ee3883061ca36.js} +1 -1
  270. package/app/apps/web/.next-bundle/static/chunks/2575-e53eff318f43e123.js +1 -0
  271. package/app/apps/web/.next-bundle/static/chunks/2921-92c9a83559025278.js +1 -0
  272. package/app/apps/web/.next-bundle/static/chunks/2948-db3dde2d3c76f184.js +1 -0
  273. package/app/apps/web/.next-bundle/static/chunks/4189-0adcbb5b786fe4ed.js +1 -0
  274. package/app/apps/web/.next-bundle/static/chunks/7f092448-875cfd730dc78b44.js +1 -0
  275. package/app/apps/web/.next-bundle/static/chunks/app/(app)/agents/{page-28b11f831b7bc8c4.js → page-be3b13d1301a5855.js} +1 -1
  276. package/app/apps/web/.next-bundle/static/chunks/app/(app)/ai/{page-8b5fe63986bf3757.js → page-beb96e7f7a56ac65.js} +1 -1
  277. package/app/apps/web/.next-bundle/static/chunks/app/(app)/apps/[id]/{page-dc2c3a7874636c29.js → page-7fd561dfea561bee.js} +1 -1
  278. package/app/apps/web/.next-bundle/static/chunks/app/(app)/apps/page-ba0da767076b59ee.js +1 -0
  279. package/app/apps/web/.next-bundle/static/chunks/app/(app)/bridge/page-b8cc7ef93c7a01f7.js +1 -0
  280. package/app/apps/web/.next-bundle/static/chunks/app/(app)/copies/page-1c5bac527b81fbfb.js +1 -0
  281. package/app/apps/web/.next-bundle/static/chunks/app/(app)/credentials/{page-0c3307d9cff31e71.js → page-db952949fd680244.js} +1 -1
  282. package/app/apps/web/.next-bundle/static/chunks/app/(app)/disk/{page-13cd17998c4b3c05.js → page-58dba9a693f3efd1.js} +1 -1
  283. package/app/apps/web/.next-bundle/static/chunks/app/(app)/error-2c3f75f2c68c6bab.js +1 -0
  284. package/app/apps/web/.next-bundle/static/chunks/app/(app)/handoff/page-af0790c554af2371.js +1 -0
  285. package/app/apps/web/.next-bundle/static/chunks/app/(app)/hidden/page-a2f95d21457cf062.js +1 -0
  286. package/app/apps/web/.next-bundle/static/chunks/app/(app)/layout-2f357c79701ed83e.js +1 -0
  287. package/app/apps/web/.next-bundle/static/chunks/app/(app)/p/[slug]/page-ea0ecbae2d960666.js +1 -0
  288. package/app/apps/web/.next-bundle/static/chunks/app/(app)/p/[slug]/video/page-51409af610218587.js +1 -0
  289. package/app/apps/web/.next-bundle/static/chunks/app/(app)/packages/page-eac7618918d667c0.js +1 -0
  290. package/app/apps/web/.next-bundle/static/chunks/app/(app)/page-ad2cd4e236fd2f60.js +1 -0
  291. package/app/apps/web/.next-bundle/static/chunks/app/(app)/runs/[id]/{page-0f664082168a49b2.js → page-75c179ccca63a724.js} +1 -1
  292. package/app/apps/web/.next-bundle/static/chunks/app/(app)/runs/page-1c5bac527b81fbfb.js +1 -0
  293. package/app/apps/web/.next-bundle/static/chunks/app/(app)/search/{page-0c57c71f581cdf40.js → page-5f61bffc868d47cc.js} +1 -1
  294. package/app/apps/web/.next-bundle/static/chunks/app/(app)/spend/page-fce603598ab4b457.js +1 -0
  295. package/app/apps/web/.next-bundle/static/chunks/app/(app)/twin/look/{page-a1f666c611d55a0c.js → page-e8582a3dd4da47bb.js} +1 -1
  296. package/app/apps/web/.next-bundle/static/chunks/app/(app)/twin/{page-c7212909b051736c.js → page-6e103fc5ed54eabe.js} +1 -1
  297. package/app/apps/web/.next-bundle/static/chunks/app/(app)/unsaved/page-433663c1b9556d04.js +1 -0
  298. package/app/apps/web/.next-bundle/static/chunks/app/_not-found/page-eac7618918d667c0.js +1 -0
  299. package/app/apps/web/.next-bundle/static/chunks/app/api/accounts/route-eac7618918d667c0.js +1 -0
  300. package/app/apps/web/.next-bundle/static/chunks/app/api/agent/apps/route-eac7618918d667c0.js +1 -0
  301. package/app/apps/web/.next-bundle/static/chunks/app/api/agent/consult/route-eac7618918d667c0.js +1 -0
  302. package/app/apps/web/.next-bundle/static/chunks/app/api/agent/context/route-eac7618918d667c0.js +1 -0
  303. package/app/apps/web/.next-bundle/static/chunks/app/api/agent/conversations/route-eac7618918d667c0.js +1 -0
  304. package/app/apps/web/.next-bundle/static/chunks/app/api/agent/handoff/route-eac7618918d667c0.js +1 -0
  305. package/app/apps/web/.next-bundle/static/chunks/app/api/agent/hello/route-eac7618918d667c0.js +1 -0
  306. package/app/apps/web/.next-bundle/static/chunks/app/api/agent/journal/route-eac7618918d667c0.js +1 -0
  307. package/app/apps/web/.next-bundle/static/chunks/app/api/agent/keys/route-eac7618918d667c0.js +1 -0
  308. package/app/apps/web/.next-bundle/static/chunks/app/api/agent/log/route-eac7618918d667c0.js +1 -0
  309. package/app/apps/web/.next-bundle/static/chunks/app/api/agent/mcp/route-eac7618918d667c0.js +1 -0
  310. package/app/apps/web/.next-bundle/static/chunks/app/api/agent/notes/route-eac7618918d667c0.js +1 -0
  311. package/app/apps/web/.next-bundle/static/chunks/app/api/agent/tasks/[id]/route-eac7618918d667c0.js +1 -0
  312. package/app/apps/web/.next-bundle/static/chunks/app/api/agent/tasks/route-eac7618918d667c0.js +1 -0
  313. package/app/apps/web/.next-bundle/static/chunks/app/api/agent/video/cancel/route-eac7618918d667c0.js +1 -0
  314. package/app/apps/web/.next-bundle/static/chunks/app/api/agent/video/jobs/route-eac7618918d667c0.js +1 -0
  315. package/app/apps/web/.next-bundle/static/chunks/app/api/agent/video/route-eac7618918d667c0.js +1 -0
  316. package/app/apps/web/.next-bundle/static/chunks/app/api/ai/route-eac7618918d667c0.js +1 -0
  317. package/app/apps/web/.next-bundle/static/chunks/app/api/apps/[id]/[operation]/route-eac7618918d667c0.js +1 -0
  318. package/app/apps/web/.next-bundle/static/chunks/app/api/apps/[id]/credentials/route-eac7618918d667c0.js +1 -0
  319. package/app/apps/web/.next-bundle/static/chunks/app/api/apps/[id]/jobs/route-eac7618918d667c0.js +1 -0
  320. package/app/apps/web/.next-bundle/static/chunks/app/api/apps/[id]/legal/route-eac7618918d667c0.js +1 -0
  321. package/app/apps/web/.next-bundle/static/chunks/app/api/apps/[id]/route-eac7618918d667c0.js +1 -0
  322. package/app/apps/web/.next-bundle/static/chunks/app/api/apps/[id]/settings/route-eac7618918d667c0.js +1 -0
  323. package/app/apps/web/.next-bundle/static/chunks/app/api/apps/jobs/[jobId]/artifact/route-eac7618918d667c0.js +1 -0
  324. package/app/apps/web/.next-bundle/static/chunks/app/api/apps/jobs/[jobId]/cancel/route-eac7618918d667c0.js +1 -0
  325. package/app/apps/web/.next-bundle/static/chunks/app/api/apps/jobs/[jobId]/route-eac7618918d667c0.js +1 -0
  326. package/app/apps/web/.next-bundle/static/chunks/app/api/apps/route-eac7618918d667c0.js +1 -0
  327. package/app/apps/web/.next-bundle/static/chunks/app/api/assets/route-eac7618918d667c0.js +1 -0
  328. package/app/apps/web/.next-bundle/static/chunks/app/api/assignments/launch/route-eac7618918d667c0.js +1 -0
  329. package/app/apps/web/.next-bundle/static/chunks/app/api/assignments/route-eac7618918d667c0.js +1 -0
  330. package/app/apps/web/.next-bundle/static/chunks/app/api/catalog/route-eac7618918d667c0.js +1 -0
  331. package/app/apps/web/.next-bundle/static/chunks/app/api/check/route-eac7618918d667c0.js +1 -0
  332. package/app/apps/web/.next-bundle/static/chunks/app/api/consultations/route-eac7618918d667c0.js +1 -0
  333. package/app/apps/web/.next-bundle/static/chunks/app/api/describe/route-eac7618918d667c0.js +1 -0
  334. package/app/apps/web/.next-bundle/static/chunks/app/api/disk/route-eac7618918d667c0.js +1 -0
  335. package/app/apps/web/.next-bundle/static/chunks/app/api/enrich/route-eac7618918d667c0.js +1 -0
  336. package/app/apps/web/.next-bundle/static/chunks/app/api/environment/route-eac7618918d667c0.js +1 -0
  337. package/app/apps/web/.next-bundle/static/chunks/app/api/handoff/[id]/route-eac7618918d667c0.js +1 -0
  338. package/app/apps/web/.next-bundle/static/chunks/app/api/handoff/digest/route-eac7618918d667c0.js +1 -0
  339. package/app/apps/web/.next-bundle/static/chunks/app/api/handoff/launch/route-eac7618918d667c0.js +1 -0
  340. package/app/apps/web/.next-bundle/static/chunks/app/api/handoff/record/route-eac7618918d667c0.js +1 -0
  341. package/app/apps/web/.next-bundle/static/chunks/app/api/handoff/route-eac7618918d667c0.js +1 -0
  342. package/app/apps/web/.next-bundle/static/chunks/app/api/hooks/route-eac7618918d667c0.js +1 -0
  343. package/app/apps/web/.next-bundle/static/chunks/app/api/ingest/route-eac7618918d667c0.js +1 -0
  344. package/app/apps/web/.next-bundle/static/chunks/app/api/md/apply/route-eac7618918d667c0.js +1 -0
  345. package/app/apps/web/.next-bundle/static/chunks/app/api/md/context/route-eac7618918d667c0.js +1 -0
  346. package/app/apps/web/.next-bundle/static/chunks/app/api/md/inspect/route-eac7618918d667c0.js +1 -0
  347. package/app/apps/web/.next-bundle/static/chunks/app/api/md/repair/route-eac7618918d667c0.js +1 -0
  348. package/app/apps/web/.next-bundle/static/chunks/app/api/md/review/route-eac7618918d667c0.js +1 -0
  349. package/app/apps/web/.next-bundle/static/chunks/app/api/memory/export/route-eac7618918d667c0.js +1 -0
  350. package/app/apps/web/.next-bundle/static/chunks/app/api/north/route-eac7618918d667c0.js +1 -0
  351. package/app/apps/web/.next-bundle/static/chunks/app/api/notes/route-eac7618918d667c0.js +1 -0
  352. package/app/apps/web/.next-bundle/static/chunks/app/api/open/all/route-eac7618918d667c0.js +1 -0
  353. package/app/apps/web/.next-bundle/static/chunks/app/api/open/route-eac7618918d667c0.js +1 -0
  354. package/app/apps/web/.next-bundle/static/chunks/app/api/project/route-eac7618918d667c0.js +1 -0
  355. package/app/apps/web/.next-bundle/static/chunks/app/api/rescan/route-eac7618918d667c0.js +1 -0
  356. package/app/apps/web/.next-bundle/static/chunks/app/api/roots/route-eac7618918d667c0.js +1 -0
  357. package/app/apps/web/.next-bundle/static/chunks/app/api/runs/[id]/route-eac7618918d667c0.js +1 -0
  358. package/app/apps/web/.next-bundle/static/chunks/app/api/runs/route-eac7618918d667c0.js +1 -0
  359. package/app/apps/web/.next-bundle/static/chunks/app/api/scale/route-eac7618918d667c0.js +1 -0
  360. package/app/apps/web/.next-bundle/static/chunks/app/api/search/route-eac7618918d667c0.js +1 -0
  361. package/app/apps/web/.next-bundle/static/chunks/app/api/secrets/route-eac7618918d667c0.js +1 -0
  362. package/app/apps/web/.next-bundle/static/chunks/app/api/spend/route-eac7618918d667c0.js +1 -0
  363. package/app/apps/web/.next-bundle/static/chunks/app/api/tasks/route-eac7618918d667c0.js +1 -0
  364. package/app/apps/web/.next-bundle/static/chunks/app/api/today/route-eac7618918d667c0.js +1 -0
  365. package/app/apps/web/.next-bundle/static/chunks/app/api/twin/assign/route-eac7618918d667c0.js +1 -0
  366. package/app/apps/web/.next-bundle/static/chunks/app/api/twin/classify/route-eac7618918d667c0.js +1 -0
  367. package/app/apps/web/.next-bundle/static/chunks/app/api/twin/critique/route-eac7618918d667c0.js +1 -0
  368. package/app/apps/web/.next-bundle/static/chunks/app/api/twin/design/route-eac7618918d667c0.js +1 -0
  369. package/app/apps/web/.next-bundle/static/chunks/app/api/twin/distill/route-eac7618918d667c0.js +1 -0
  370. package/app/apps/web/.next-bundle/static/chunks/app/api/twin/episodes/learn/route-eac7618918d667c0.js +1 -0
  371. package/app/apps/web/.next-bundle/static/chunks/app/api/twin/episodes/route-eac7618918d667c0.js +1 -0
  372. package/app/apps/web/.next-bundle/static/chunks/app/api/twin/look/route-eac7618918d667c0.js +1 -0
  373. package/app/apps/web/.next-bundle/static/chunks/app/api/twin/mine/route-eac7618918d667c0.js +1 -0
  374. package/app/apps/web/.next-bundle/static/chunks/app/api/twin/rehearse/route-eac7618918d667c0.js +1 -0
  375. package/app/apps/web/.next-bundle/static/chunks/app/api/twin/score/route-eac7618918d667c0.js +1 -0
  376. package/app/apps/web/.next-bundle/static/chunks/app/api/twin/shot/route-eac7618918d667c0.js +1 -0
  377. package/app/apps/web/.next-bundle/static/chunks/app/api/twin/sources/route-eac7618918d667c0.js +1 -0
  378. package/app/apps/web/.next-bundle/static/chunks/app/api/twin/synthesize/route-eac7618918d667c0.js +1 -0
  379. package/app/apps/web/.next-bundle/static/chunks/app/api/twin/taste/route-eac7618918d667c0.js +1 -0
  380. package/app/apps/web/.next-bundle/static/chunks/app/api/twin/verdicts/route-eac7618918d667c0.js +1 -0
  381. package/app/apps/web/.next-bundle/static/chunks/app/api/watch/route-eac7618918d667c0.js +1 -0
  382. package/app/apps/web/.next-bundle/static/chunks/app/global-not-found-1c5bac527b81fbfb.js +1 -0
  383. package/app/apps/web/.next-bundle/static/chunks/app/icon/[id]/route-eac7618918d667c0.js +1 -0
  384. package/app/apps/web/.next-bundle/static/chunks/app/not-found-1c5bac527b81fbfb.js +1 -0
  385. package/app/apps/web/.next-bundle/static/chunks/{main-app-a35ca295bbc2c578.js → main-app-0bad81d9bc79bc82.js} +1 -1
  386. package/app/apps/web/.next-bundle/static/css/5fdcdf46b29ffe26.css +1 -0
  387. package/app/apps/web/.next-bundle/static/phRAJdip0Dtgh1L1Yw0jm/_buildManifest.js +1 -0
  388. package/app/apps/web/server.js +1 -1
  389. package/app/node_modules/@panoma/ai/dist/index.d.ts +6 -1
  390. package/app/node_modules/@panoma/ai/dist/index.js +43 -6
  391. package/app/node_modules/@panoma/core/dist/index.d.ts +39 -1
  392. package/app/node_modules/@panoma/core/dist/index.js +149 -57
  393. package/app/node_modules/@panoma/core/dist/untrusted.d.ts +14 -1
  394. package/app/node_modules/@panoma/db/dist/{chunk-V6TJYC6N.js → chunk-VTHU57AZ.js} +59 -3
  395. package/app/node_modules/@panoma/db/dist/{client-B1_3MF0o.d.ts → client-B2H4A_7h.d.ts} +379 -3
  396. package/app/node_modules/@panoma/db/dist/client.d.ts +1 -1
  397. package/app/node_modules/@panoma/db/dist/client.js +1 -1
  398. package/app/node_modules/@panoma/db/dist/index.d.ts +56 -4
  399. package/app/node_modules/@panoma/db/dist/index.js +104 -27
  400. package/app/node_modules/@panoma/db/migrations/0060_handoffs.sql +23 -0
  401. package/app/node_modules/@panoma/db/migrations/0061_handoff_surface.sql +1 -0
  402. package/app/node_modules/@panoma/db/migrations/0062_handoff_requested_by.sql +1 -0
  403. package/app/node_modules/@panoma/db/migrations/0063_app_job_requested_by.sql +1 -0
  404. package/app/node_modules/@panoma/db/migrations/meta/0060_snapshot.json +4258 -0
  405. package/app/node_modules/@panoma/db/migrations/meta/0061_snapshot.json +4265 -0
  406. package/app/node_modules/@panoma/db/migrations/meta/0062_snapshot.json +4271 -0
  407. package/app/node_modules/@panoma/db/migrations/meta/0063_snapshot.json +4277 -0
  408. package/app/node_modules/@panoma/db/migrations/meta/_journal.json +28 -0
  409. package/app/node_modules/@panoma/handoff/dist/chunk-4PTSNPI3.js +73 -0
  410. package/app/node_modules/@panoma/handoff/dist/faults.d.ts +26 -0
  411. package/app/node_modules/@panoma/handoff/dist/faults.js +14 -0
  412. package/app/node_modules/@panoma/handoff/dist/index.d.ts +579 -0
  413. package/app/node_modules/@panoma/handoff/dist/index.js +3364 -0
  414. package/app/node_modules/@panoma/handoff/package.json +23 -0
  415. package/app/node_modules/@panoma/mcp/dist/index.js +709 -13
  416. package/app/node_modules/drizzle-orm/node_modules/.bin/gel +3 -3
  417. package/dist/{ai-command-IRSVAWYU.js → ai-command-TSSMG7H3.js} +4 -4
  418. package/dist/{apps-FI2Q2CFP.js → apps-7E4RUVJY.js} +4 -4
  419. package/dist/{check-command-PPILA25M.js → check-command-RIUGB4HV.js} +4 -4
  420. package/dist/{chunk-P7ZGHSMO.js → chunk-3QYJKRW6.js} +209 -1
  421. package/dist/{chunk-5EG7NRL4.js → chunk-3T3WTSPS.js} +147 -57
  422. package/dist/{chunk-BCHIG2AU.js → chunk-47UUF7B7.js} +2 -2
  423. package/dist/{chunk-JY7ALFNX.js → chunk-6RVG2VUY.js} +44 -7
  424. package/dist/{chunk-2MKBCYVH.js → chunk-FWSQH4NS.js} +3 -3
  425. package/dist/{chunk-YQOQAFTY.js → chunk-HHHT2MTQ.js} +2 -2
  426. package/dist/{chunk-AW6KPPIR.js → chunk-WAI2SCFY.js} +22 -4
  427. package/dist/{dist-NQIOBJFO.js → dist-F3N6LCV6.js} +2 -2
  428. package/dist/{dist-G32QKT7H.js → dist-PQLBVRZQ.js} +7 -1
  429. package/dist/{dist-F5A5RVCK.js → dist-RNXJD4VL.js} +1 -1
  430. package/dist/handoff-command-NGSYPGWW.js +3876 -0
  431. package/dist/index.js +47 -16
  432. package/dist/{md-command-Q4M2YBEH.js → md-command-PYD3SPHA.js} +3 -3
  433. package/dist/{memory-command-IXVQSADX.js → memory-command-BWP52OQS.js} +3 -3
  434. package/dist/{next-command-2PXBP5OR.js → next-command-NFDGQMHO.js} +4 -4
  435. package/dist/{north-command-XFUNSNPH.js → north-command-SKBVZEGK.js} +4 -4
  436. package/dist/{review-command-6AH7MVKP.js → review-command-SMYI7XKH.js} +2 -2
  437. package/dist/{spend-command-DA36GLNI.js → spend-command-NYAELLRP.js} +3 -3
  438. package/dist/{twin-command-HYEG2WPA.js → twin-command-M25PTHLP.js} +9 -8
  439. package/dist/{video-TWUW2L36.js → video-QKEQ2FGR.js} +6 -6
  440. package/npm-shrinkwrap.json +2 -2
  441. package/package.json +3 -2
  442. package/app/apps/web/.next-bundle/server/chunks/1602.js +0 -3
  443. package/app/apps/web/.next-bundle/server/chunks/3088.js +0 -16
  444. package/app/apps/web/.next-bundle/server/chunks/3768.js +0 -3
  445. package/app/apps/web/.next-bundle/server/chunks/5251.js +0 -217
  446. package/app/apps/web/.next-bundle/server/chunks/5741.js +0 -1
  447. package/app/apps/web/.next-bundle/server/chunks/5941.js +0 -1
  448. package/app/apps/web/.next-bundle/server/chunks/7581.js +0 -1
  449. package/app/apps/web/.next-bundle/server/chunks/8384.js +0 -1
  450. package/app/apps/web/.next-bundle/server/chunks/8990.js +0 -2
  451. package/app/apps/web/.next-bundle/static/chunks/1369-8f6dde7e48bc4684.js +0 -1
  452. package/app/apps/web/.next-bundle/static/chunks/2340-11b365d374b2be7b.js +0 -1
  453. package/app/apps/web/.next-bundle/static/chunks/2575-62182d00e5cf3115.js +0 -1
  454. package/app/apps/web/.next-bundle/static/chunks/261-1c2829beaca77dc9.js +0 -1
  455. package/app/apps/web/.next-bundle/static/chunks/7f092448-e07c21e2897ac52e.js +0 -1
  456. package/app/apps/web/.next-bundle/static/chunks/app/(app)/apps/page-00ec4bf42a14ac17.js +0 -1
  457. package/app/apps/web/.next-bundle/static/chunks/app/(app)/bridge/page-86a819d6d7f65cd0.js +0 -1
  458. package/app/apps/web/.next-bundle/static/chunks/app/(app)/copies/page-69ee3fc638b1eecf.js +0 -1
  459. package/app/apps/web/.next-bundle/static/chunks/app/(app)/error-4706c73d842251e2.js +0 -1
  460. package/app/apps/web/.next-bundle/static/chunks/app/(app)/hidden/page-55639b16ccebad95.js +0 -1
  461. package/app/apps/web/.next-bundle/static/chunks/app/(app)/layout-7f3d387ae540018d.js +0 -1
  462. package/app/apps/web/.next-bundle/static/chunks/app/(app)/p/[slug]/page-c3c3a9be458adeed.js +0 -1
  463. package/app/apps/web/.next-bundle/static/chunks/app/(app)/p/[slug]/video/page-088684f252e3d59c.js +0 -1
  464. package/app/apps/web/.next-bundle/static/chunks/app/(app)/packages/page-de6e3e5d6198c075.js +0 -1
  465. package/app/apps/web/.next-bundle/static/chunks/app/(app)/page-6cf474454fb2ea5e.js +0 -1
  466. package/app/apps/web/.next-bundle/static/chunks/app/(app)/runs/page-69ee3fc638b1eecf.js +0 -1
  467. package/app/apps/web/.next-bundle/static/chunks/app/(app)/spend/page-201b626f17f11eeb.js +0 -1
  468. package/app/apps/web/.next-bundle/static/chunks/app/(app)/unsaved/page-c545489e991b83d2.js +0 -1
  469. package/app/apps/web/.next-bundle/static/chunks/app/_not-found/page-de6e3e5d6198c075.js +0 -1
  470. package/app/apps/web/.next-bundle/static/chunks/app/api/accounts/route-de6e3e5d6198c075.js +0 -1
  471. package/app/apps/web/.next-bundle/static/chunks/app/api/agent/consult/route-de6e3e5d6198c075.js +0 -1
  472. package/app/apps/web/.next-bundle/static/chunks/app/api/agent/context/route-de6e3e5d6198c075.js +0 -1
  473. package/app/apps/web/.next-bundle/static/chunks/app/api/agent/hello/route-de6e3e5d6198c075.js +0 -1
  474. package/app/apps/web/.next-bundle/static/chunks/app/api/agent/journal/route-de6e3e5d6198c075.js +0 -1
  475. package/app/apps/web/.next-bundle/static/chunks/app/api/agent/keys/route-de6e3e5d6198c075.js +0 -1
  476. package/app/apps/web/.next-bundle/static/chunks/app/api/agent/log/route-de6e3e5d6198c075.js +0 -1
  477. package/app/apps/web/.next-bundle/static/chunks/app/api/agent/mcp/route-de6e3e5d6198c075.js +0 -1
  478. package/app/apps/web/.next-bundle/static/chunks/app/api/agent/notes/route-de6e3e5d6198c075.js +0 -1
  479. package/app/apps/web/.next-bundle/static/chunks/app/api/agent/tasks/[id]/route-de6e3e5d6198c075.js +0 -1
  480. package/app/apps/web/.next-bundle/static/chunks/app/api/agent/tasks/route-de6e3e5d6198c075.js +0 -1
  481. package/app/apps/web/.next-bundle/static/chunks/app/api/ai/route-de6e3e5d6198c075.js +0 -1
  482. package/app/apps/web/.next-bundle/static/chunks/app/api/apps/[id]/[operation]/route-de6e3e5d6198c075.js +0 -1
  483. package/app/apps/web/.next-bundle/static/chunks/app/api/apps/[id]/credentials/route-de6e3e5d6198c075.js +0 -1
  484. package/app/apps/web/.next-bundle/static/chunks/app/api/apps/[id]/jobs/route-de6e3e5d6198c075.js +0 -1
  485. package/app/apps/web/.next-bundle/static/chunks/app/api/apps/[id]/legal/route-de6e3e5d6198c075.js +0 -1
  486. package/app/apps/web/.next-bundle/static/chunks/app/api/apps/[id]/route-de6e3e5d6198c075.js +0 -1
  487. package/app/apps/web/.next-bundle/static/chunks/app/api/apps/[id]/settings/route-de6e3e5d6198c075.js +0 -1
  488. package/app/apps/web/.next-bundle/static/chunks/app/api/apps/jobs/[jobId]/artifact/route-de6e3e5d6198c075.js +0 -1
  489. package/app/apps/web/.next-bundle/static/chunks/app/api/apps/jobs/[jobId]/cancel/route-de6e3e5d6198c075.js +0 -1
  490. package/app/apps/web/.next-bundle/static/chunks/app/api/apps/jobs/[jobId]/route-de6e3e5d6198c075.js +0 -1
  491. package/app/apps/web/.next-bundle/static/chunks/app/api/apps/route-de6e3e5d6198c075.js +0 -1
  492. package/app/apps/web/.next-bundle/static/chunks/app/api/assets/route-de6e3e5d6198c075.js +0 -1
  493. package/app/apps/web/.next-bundle/static/chunks/app/api/assignments/launch/route-de6e3e5d6198c075.js +0 -1
  494. package/app/apps/web/.next-bundle/static/chunks/app/api/assignments/route-de6e3e5d6198c075.js +0 -1
  495. package/app/apps/web/.next-bundle/static/chunks/app/api/catalog/route-de6e3e5d6198c075.js +0 -1
  496. package/app/apps/web/.next-bundle/static/chunks/app/api/check/route-de6e3e5d6198c075.js +0 -1
  497. package/app/apps/web/.next-bundle/static/chunks/app/api/consultations/route-de6e3e5d6198c075.js +0 -1
  498. package/app/apps/web/.next-bundle/static/chunks/app/api/describe/route-de6e3e5d6198c075.js +0 -1
  499. package/app/apps/web/.next-bundle/static/chunks/app/api/disk/route-de6e3e5d6198c075.js +0 -1
  500. package/app/apps/web/.next-bundle/static/chunks/app/api/enrich/route-de6e3e5d6198c075.js +0 -1
  501. package/app/apps/web/.next-bundle/static/chunks/app/api/environment/route-de6e3e5d6198c075.js +0 -1
  502. package/app/apps/web/.next-bundle/static/chunks/app/api/hooks/route-de6e3e5d6198c075.js +0 -1
  503. package/app/apps/web/.next-bundle/static/chunks/app/api/ingest/route-de6e3e5d6198c075.js +0 -1
  504. package/app/apps/web/.next-bundle/static/chunks/app/api/md/apply/route-de6e3e5d6198c075.js +0 -1
  505. package/app/apps/web/.next-bundle/static/chunks/app/api/md/context/route-de6e3e5d6198c075.js +0 -1
  506. package/app/apps/web/.next-bundle/static/chunks/app/api/md/inspect/route-de6e3e5d6198c075.js +0 -1
  507. package/app/apps/web/.next-bundle/static/chunks/app/api/md/repair/route-de6e3e5d6198c075.js +0 -1
  508. package/app/apps/web/.next-bundle/static/chunks/app/api/md/review/route-de6e3e5d6198c075.js +0 -1
  509. package/app/apps/web/.next-bundle/static/chunks/app/api/memory/export/route-de6e3e5d6198c075.js +0 -1
  510. package/app/apps/web/.next-bundle/static/chunks/app/api/north/route-de6e3e5d6198c075.js +0 -1
  511. package/app/apps/web/.next-bundle/static/chunks/app/api/notes/route-de6e3e5d6198c075.js +0 -1
  512. package/app/apps/web/.next-bundle/static/chunks/app/api/open/all/route-de6e3e5d6198c075.js +0 -1
  513. package/app/apps/web/.next-bundle/static/chunks/app/api/open/route-de6e3e5d6198c075.js +0 -1
  514. package/app/apps/web/.next-bundle/static/chunks/app/api/project/route-de6e3e5d6198c075.js +0 -1
  515. package/app/apps/web/.next-bundle/static/chunks/app/api/rescan/route-de6e3e5d6198c075.js +0 -1
  516. package/app/apps/web/.next-bundle/static/chunks/app/api/roots/route-de6e3e5d6198c075.js +0 -1
  517. package/app/apps/web/.next-bundle/static/chunks/app/api/runs/[id]/route-de6e3e5d6198c075.js +0 -1
  518. package/app/apps/web/.next-bundle/static/chunks/app/api/runs/route-de6e3e5d6198c075.js +0 -1
  519. package/app/apps/web/.next-bundle/static/chunks/app/api/scale/route-de6e3e5d6198c075.js +0 -1
  520. package/app/apps/web/.next-bundle/static/chunks/app/api/search/route-de6e3e5d6198c075.js +0 -1
  521. package/app/apps/web/.next-bundle/static/chunks/app/api/secrets/route-de6e3e5d6198c075.js +0 -1
  522. package/app/apps/web/.next-bundle/static/chunks/app/api/spend/route-de6e3e5d6198c075.js +0 -1
  523. package/app/apps/web/.next-bundle/static/chunks/app/api/tasks/route-de6e3e5d6198c075.js +0 -1
  524. package/app/apps/web/.next-bundle/static/chunks/app/api/today/route-de6e3e5d6198c075.js +0 -1
  525. package/app/apps/web/.next-bundle/static/chunks/app/api/twin/assign/route-de6e3e5d6198c075.js +0 -1
  526. package/app/apps/web/.next-bundle/static/chunks/app/api/twin/classify/route-de6e3e5d6198c075.js +0 -1
  527. package/app/apps/web/.next-bundle/static/chunks/app/api/twin/critique/route-de6e3e5d6198c075.js +0 -1
  528. package/app/apps/web/.next-bundle/static/chunks/app/api/twin/design/route-de6e3e5d6198c075.js +0 -1
  529. package/app/apps/web/.next-bundle/static/chunks/app/api/twin/distill/route-de6e3e5d6198c075.js +0 -1
  530. package/app/apps/web/.next-bundle/static/chunks/app/api/twin/episodes/learn/route-de6e3e5d6198c075.js +0 -1
  531. package/app/apps/web/.next-bundle/static/chunks/app/api/twin/episodes/route-de6e3e5d6198c075.js +0 -1
  532. package/app/apps/web/.next-bundle/static/chunks/app/api/twin/look/route-de6e3e5d6198c075.js +0 -1
  533. package/app/apps/web/.next-bundle/static/chunks/app/api/twin/mine/route-de6e3e5d6198c075.js +0 -1
  534. package/app/apps/web/.next-bundle/static/chunks/app/api/twin/rehearse/route-de6e3e5d6198c075.js +0 -1
  535. package/app/apps/web/.next-bundle/static/chunks/app/api/twin/score/route-de6e3e5d6198c075.js +0 -1
  536. package/app/apps/web/.next-bundle/static/chunks/app/api/twin/shot/route-de6e3e5d6198c075.js +0 -1
  537. package/app/apps/web/.next-bundle/static/chunks/app/api/twin/sources/route-de6e3e5d6198c075.js +0 -1
  538. package/app/apps/web/.next-bundle/static/chunks/app/api/twin/synthesize/route-de6e3e5d6198c075.js +0 -1
  539. package/app/apps/web/.next-bundle/static/chunks/app/api/twin/taste/route-de6e3e5d6198c075.js +0 -1
  540. package/app/apps/web/.next-bundle/static/chunks/app/api/twin/verdicts/route-de6e3e5d6198c075.js +0 -1
  541. package/app/apps/web/.next-bundle/static/chunks/app/api/watch/route-de6e3e5d6198c075.js +0 -1
  542. package/app/apps/web/.next-bundle/static/chunks/app/global-not-found-69ee3fc638b1eecf.js +0 -1
  543. package/app/apps/web/.next-bundle/static/chunks/app/icon/[id]/route-de6e3e5d6198c075.js +0 -1
  544. package/app/apps/web/.next-bundle/static/chunks/app/not-found-69ee3fc638b1eecf.js +0 -1
  545. package/app/apps/web/.next-bundle/static/css/988bfb2024e770b7.css +0 -1
  546. package/app/apps/web/.next-bundle/static/mhsTm5XiqL98MCgDVB08u/_buildManifest.js +0 -1
  547. /package/app/apps/web/.next-bundle/static/{mhsTm5XiqL98MCgDVB08u → phRAJdip0Dtgh1L1Yw0jm}/_ssgManifest.js +0 -0
@@ -0,0 +1,579 @@
1
+ export { HANDOFF_FAULTS, HandoffFault, HandoffFaultCode, asHandoffFault, faultOf, isHandoffFaultCode } from './faults.js';
2
+ import { posix } from 'node:path';
3
+
4
+ /**
5
+ * The vocabulary of a handoff, shared by the engine, the catalog, the web and the CLI.
6
+ *
7
+ * A **conversation** is the transcript an agent keeps on disk for one chat. It is not a
8
+ * *session*: `agent_sessions` in the catalog are the logbook sessions of the agent channel, a
9
+ * different thing with a different owner. A **handoff** passes a conversation to another agent
10
+ * — or resumes it in the same agent after signing in — so it continues there.
11
+ *
12
+ * Everything here is data. Nothing in this file reads a disk, opens a database or talks to a
13
+ * model, and the shapes are frozen: the routes, the CLI and the tests all code against them.
14
+ */
15
+ /** The canonical provider ids of `packages/ai/src/providers.ts` for the agents that run in a terminal. */
16
+ declare const AGENT_IDS: readonly ["claude-cli", "codex-cli", "opencode", "gemini-cli", "cursor-agent", "copilot-cli", "aider", "amp-cli", "goose"];
17
+ type AgentId = (typeof AGENT_IDS)[number];
18
+ /** The agents whose store this package can read and write so that their own resume finds the file. */
19
+ declare const NATIVE_AGENTS: readonly AgentId[];
20
+ /**
21
+ * Where a conversation is read or continued: the terminal, or the vendor's desktop app.
22
+ *
23
+ * The app and the CLI of one vendor share one store — Claude.app's Code tab and `claude` both
24
+ * live in `~/.claude/projects`, the Codex app and `codex` in `$CODEX_HOME/sessions` — so the
25
+ * surface is not another agent: it is a marker on the file (`entrypoint` for Claude,
26
+ * `originator` for Codex) and a different way of opening it (a deep link instead of a command).
27
+ */
28
+ declare const SURFACES: readonly ["cli", "app"];
29
+ type Surface = (typeof SURFACES)[number];
30
+ declare function isSurface(value: string): value is Surface;
31
+ /** The desktop app of an agent, when one exists: its handoff id, its name, and the macOS bundle. */
32
+ interface DesktopApp {
33
+ /** `claude-app` is the id the open-all family already uses for Claude.app; `codex-app` is new. */
34
+ id: "claude-app" | "codex-app";
35
+ name: string;
36
+ /** The `.app` bundle name under /Applications; the Codex app lives inside ChatGPT.app. */
37
+ bundle: "Claude" | "ChatGPT";
38
+ }
39
+ declare const APP_OF: Readonly<Partial<Record<AgentId, DesktopApp>>>;
40
+ /** The plain words the terminal accepts for an app target: `--to claude-app`. */
41
+ declare const APP_WORDS: Readonly<Record<string, AgentId>>;
42
+ /** The agent behind an app id, or nothing. */
43
+ declare function agentOfApp(appId: string): AgentId | undefined;
44
+ /** What a person calls each agent, the way the terminal accepts it: `--to codex`. */
45
+ declare const AGENT_WORDS: Readonly<Record<string, AgentId>>;
46
+ /** The display names, one per id; the same ones the `Agents` screen paints. */
47
+ declare const AGENT_NAMES: Readonly<Record<AgentId, string>>;
48
+ /** A plain word or a canonical id, case-insensitively, or nothing. */
49
+ declare function agentFromWord(word: string): AgentId | undefined;
50
+ declare function isAgentId(value: string): value is AgentId;
51
+ /** How much travels. */
52
+ declare const TIERS: readonly ["full", "compact", "brief"];
53
+ type Tier = (typeof TIERS)[number];
54
+ declare function isTier(value: string): value is Tier;
55
+ /**
56
+ * Where the stores are. Every function that touches a store takes this, and under test both
57
+ * `home` and `env` are mandatory: a forgotten default on a developer machine would read — and
58
+ * with `handoff()` write — the real stores.
59
+ */
60
+ interface StoreOptions {
61
+ home?: string;
62
+ env?: NodeJS.ProcessEnv;
63
+ platform?: NodeJS.Platform;
64
+ }
65
+ /** The source ended on a usage limit. `resetsAt` is ISO when the agent recorded it. */
66
+ interface LimitHit {
67
+ at: string;
68
+ resetsAt?: string;
69
+ /** The agent's own word for which limit: `five_hour`, `weekly`, `primary`, `secondary`… */
70
+ kind?: string;
71
+ }
72
+ /** One row of the list: what discovery learns without reading the whole file. */
73
+ interface ConversationRef {
74
+ /** `${agent}:${sessionId}` — the handle the routes and the CLI resolve. */
75
+ id: string;
76
+ agent: AgentId;
77
+ sessionId: string;
78
+ /** The first characters of the session id, what a person types back. See `shortHandle`. */
79
+ handle: string;
80
+ /** The transcript file; for OpenCode, the database file. */
81
+ path: string;
82
+ cwd: string;
83
+ gitBranch?: string;
84
+ title?: string;
85
+ model?: string;
86
+ startedAt?: string;
87
+ updatedAt: string;
88
+ /** Exact when the file was read whole; `null` when only its head and tail were. */
89
+ turnCount: number | null;
90
+ bytes: number;
91
+ /** The source already carries a summary of its own beginning. */
92
+ compacted: boolean;
93
+ limit?: LimitHit;
94
+ /** Read from the file's own marker; absent means the reader could not tell (treated as `cli`). */
95
+ surface?: Surface;
96
+ }
97
+ interface Turn {
98
+ role: "user" | "assistant";
99
+ at?: string;
100
+ parts: Part[];
101
+ }
102
+ type Part = {
103
+ kind: "text";
104
+ text: string;
105
+ } | {
106
+ kind: "tool_call";
107
+ id: string;
108
+ name: string;
109
+ input: unknown;
110
+ } | {
111
+ kind: "tool_result";
112
+ callId: string;
113
+ output: string;
114
+ isError?: boolean;
115
+ }
116
+ /** A compaction summary at the position it holds in the source. */
117
+ | {
118
+ kind: "summary";
119
+ text: string;
120
+ };
121
+ interface Compaction {
122
+ at?: string;
123
+ text: string;
124
+ tokensBefore?: number;
125
+ }
126
+ /** What could not travel, counted so the screen can say it before anything is written. */
127
+ interface Dropped {
128
+ thinking: number;
129
+ images: number;
130
+ subagents: number;
131
+ /** Tool outputs the source kept in a side file that was too large to inline. */
132
+ offloaded: number;
133
+ /** Credential-shaped strings replaced by the redaction mark. */
134
+ secrets: number;
135
+ other: number;
136
+ }
137
+ declare const NOTHING_DROPPED: Readonly<Dropped>;
138
+ /** A whole conversation, normalized. Thinking, signatures, encrypted reasoning and images never enter. */
139
+ interface Conversation extends ConversationRef {
140
+ version: 1;
141
+ /** sha256 over the normalized turns, without timestamps: the fidelity contract and the re-handoff key. */
142
+ hash: string;
143
+ turns: Turn[];
144
+ compactions: Compaction[];
145
+ dropped: Dropped;
146
+ }
147
+ /** The mechanical summary, or the one a model wrote. Derived and regenerable; never memory. */
148
+ interface Digest {
149
+ by: "panoma" | "model";
150
+ title: string;
151
+ goal: string;
152
+ /** The newest summary the source agent made, or the model's, when there is one. */
153
+ summary?: string;
154
+ decisions: string[];
155
+ filesTouched: string[];
156
+ commandsRun: string[];
157
+ openItems: string[];
158
+ lastExchange: {
159
+ user?: string;
160
+ assistant?: string;
161
+ };
162
+ stats: {
163
+ turns: number;
164
+ toolCalls: number;
165
+ estimatedTokens: number;
166
+ };
167
+ }
168
+ /** Written into every file this package produces, and stored in the receipt. */
169
+ interface Provenance {
170
+ sourceAgent: AgentId;
171
+ sourceSessionId: string;
172
+ sourceHash: string;
173
+ tier: Tier;
174
+ at: string;
175
+ by: "panoma";
176
+ }
177
+ /** What a target keeps and what it leaves behind, stated before the write. */
178
+ interface Fidelity {
179
+ agent: AgentId;
180
+ /** The target's own resume finds the file. */
181
+ native: boolean;
182
+ carries: string[];
183
+ leaves: string[];
184
+ /** The version the writer was checked against by hand. */
185
+ testedWith?: string;
186
+ /** How the target resumes, in words. */
187
+ resumeShape: string;
188
+ }
189
+ /** The command that resumes a conversation in its agent, and the one line a person pastes. */
190
+ interface Resume {
191
+ command: string;
192
+ args: string[];
193
+ /** `cd '<cwd>' && <command> <args>`, so it works from any folder. */
194
+ line: string;
195
+ }
196
+ /**
197
+ * How the vendor's desktop app opens a conversation: a deep link the app registered, verified
198
+ * on 11-Sep-2026 (`claude://resume?session=<id>` adopts the file into the Code tab;
199
+ * `codex://threads/<id>` registers and opens the thread). macOS only: the apps exist nowhere else.
200
+ */
201
+ interface ResumeInApp {
202
+ app: DesktopApp;
203
+ url: string;
204
+ /** `open '<url>'`, the line a person pastes. */
205
+ line: string;
206
+ /** What to do by hand when the link does not answer, in English. */
207
+ sentence: string;
208
+ }
209
+ interface WriteResult {
210
+ agent: AgentId;
211
+ /** Where the copy is meant to be opened; the file is the same either way. */
212
+ surface: Surface;
213
+ sessionId: string;
214
+ path: string;
215
+ resume: Resume | undefined;
216
+ /** Set when the target has a desktop app and this machine can open one. */
217
+ resumeInApp: ResumeInApp | undefined;
218
+ /** Extra steps, in English, that the person runs: e.g. the `opencode import` line. */
219
+ steps: string[];
220
+ fidelity: Fidelity;
221
+ provenance: Provenance;
222
+ turns: number;
223
+ bytes: number;
224
+ dropped: Dropped;
225
+ }
226
+ interface StoreReport {
227
+ agent: AgentId;
228
+ path: string;
229
+ found: boolean;
230
+ conversations: number;
231
+ }
232
+ interface Discovery {
233
+ conversations: ConversationRef[];
234
+ stores: StoreReport[];
235
+ }
236
+ /** Injectable randomness, so a writer test can snapshot a file byte for byte. */
237
+ interface Random {
238
+ uuid(): string;
239
+ hex(bytes: number): string;
240
+ }
241
+ interface HandoffInput {
242
+ conversation: Conversation;
243
+ target: AgentId;
244
+ /** `app` when the person will open the copy in the vendor's desktop app. Default `cli`. */
245
+ surface?: Surface;
246
+ tier: Tier;
247
+ digest?: Digest;
248
+ /** The folder the target resumes in; defaults to the conversation's own. */
249
+ cwd?: string;
250
+ gitBranch?: string;
251
+ /**
252
+ * Another home for the same agent (a second `CLAUDE_CONFIG_DIR`, another `CODEX_HOME`).
253
+ * Absolute, and it must already contain the store: this package never creates a tree.
254
+ * CLI only — the web never sends a path.
255
+ */
256
+ targetHome?: string;
257
+ /** With `compact`: how many of the newest turns travel whole. Default 12. */
258
+ keepTurns?: number;
259
+ /** With `brief` and no native target: where the document goes. */
260
+ out?: string;
261
+ now?: Date;
262
+ random?: Random;
263
+ options?: StoreOptions;
264
+ }
265
+ /** The portable file: the conversation and its digest, for another machine. */
266
+ interface Bundle {
267
+ format: "panoma-conversation";
268
+ version: 1;
269
+ exportedAt: string;
270
+ conversation: Conversation;
271
+ digest: Digest;
272
+ }
273
+ declare const KEEP_TURNS_DEFAULT = 12;
274
+ declare const DISCOVERY_LIMIT_DEFAULT = 40;
275
+ /** Files up to this size are read whole by discovery; larger ones only by head and tail. */
276
+ declare const DISCOVERY_WHOLE_FILE_BYTES: number;
277
+ declare const DISCOVERY_WINDOW_BYTES: number;
278
+ /** Above this, the screen preselects `compact`. */
279
+ declare const LARGE_CONVERSATION_BYTES: number;
280
+ /** Above this, `handoff()` refuses with `too-large`. */
281
+ declare const MAX_CONVERSATION_BYTES: number;
282
+
283
+ declare function isSafeId(value: string): boolean;
284
+ /** The shape of a session id in that agent's store, checked before any id reaches a command. */
285
+ declare function isSessionIdOf(agent: AgentId, value: string): boolean;
286
+ /** The first eight useful characters: what the list prints and what a person types back. */
287
+ declare function shortHandle(agent: AgentId, sessionId: string): string;
288
+ /** `${agent}:${sessionId}`, the handle the routes and the CLI resolve. */
289
+ declare function conversationId(agent: AgentId, sessionId: string): string;
290
+ declare function splitConversationId(id: string): {
291
+ agent: string;
292
+ sessionId: string;
293
+ } | undefined;
294
+ /** The default source of randomness; tests inject their own to snapshot a file. */
295
+ declare const cryptoRandom: Random;
296
+ /**
297
+ * An OpenCode id: `prefix_` + 12 hex digits of `ms * 4096 + counter` + 14 base62 characters,
298
+ * which is how `packages/opencode/src/id/id.ts` keeps its rows time-sortable.
299
+ */
300
+ declare function opencodeId(prefix: "ses" | "msg" | "prt", at: Date, counter: number, random: Random): string;
301
+
302
+ declare function fidelityOf(target: AgentId): Fidelity;
303
+ declare function isNativeTarget(target: AgentId): boolean;
304
+ /**
305
+ * The commands each agent uses to sign out and to sign in, for the same-agent flow: a person
306
+ * with two accounts signs out of one, signs in with the other, and resumes the same file,
307
+ * because every store here is per machine and folder and never per account. Panoma prints
308
+ * them and never runs them; it holds no credential and rotates nothing.
309
+ */
310
+ declare const SIGN_OUT: Readonly<Partial<Record<AgentId, string>>>;
311
+ declare const SIGN_IN: Readonly<Partial<Record<AgentId, string>>>;
312
+ declare function quoteForShell(value: string, platform?: NodeJS.Platform): string;
313
+ /** `cd '<cwd>' && <command> <args>` — one line that works from any folder, or nothing for a document-only agent. */
314
+ declare function resumeOf(agent: AgentId, sessionId: string, cwd: string, platform?: NodeJS.Platform): Resume | undefined;
315
+ declare function forkOf(agent: AgentId, sessionId: string, cwd: string, platform?: NodeJS.Platform): Resume | undefined;
316
+ /**
317
+ * How the vendor's app opens a conversation, or nothing when there is no app for that agent or
318
+ * the id does not fit. The apps exist only on macOS, so any other platform gets nothing.
319
+ */
320
+ declare function resumeInApp(agent: AgentId, sessionId: string, cwd: string, platform?: NodeJS.Platform): ResumeInApp | undefined;
321
+
322
+ interface ResolvedStoreOptions {
323
+ home: string;
324
+ env: NodeJS.ProcessEnv;
325
+ platform: NodeJS.Platform;
326
+ /** `path.win32` or `path.posix`, so the Windows branch runs on any machine. */
327
+ path: typeof posix;
328
+ }
329
+
330
+ interface ClaudeStore {
331
+ /** `CLAUDE_CONFIG_DIR` or `~/.claude`. */
332
+ root: string;
333
+ projects: string;
334
+ resolved: ResolvedStoreOptions;
335
+ }
336
+ declare function claudeStore(options?: StoreOptions): ClaudeStore;
337
+ /** The same store rooted somewhere else: a second config folder the person names. */
338
+ declare function claudeStoreAt(root: string, options?: StoreOptions): ClaudeStore;
339
+ declare function claudeStoreExists(store: ClaudeStore): boolean;
340
+ /**
341
+ * The folder name Claude Code derives from a working directory.
342
+ *
343
+ * Every character outside `[A-Za-z0-9]` becomes `-`, which is why a slug starts with `-` on
344
+ * POSIX and with the drive letter on Windows (`C--Users-x-proj`). The rule is the same on both
345
+ * platforms; only the join differs.
346
+ */
347
+ declare function claudeSlug(cwd: string): string;
348
+ declare function claudeProjectDir(store: ClaudeStore, cwd: string): string;
349
+ declare function claudeTranscriptPath(store: ClaudeStore, cwd: string, sessionId: string): string;
350
+
351
+ interface CodexStore {
352
+ /** `CODEX_HOME` or `~/.codex`. */
353
+ root: string;
354
+ sessions: string;
355
+ index: string;
356
+ /** `config.toml`: read for its `model`, `model_reasoning_effort`, `approval_policy` and `sandbox_mode` lines, never written. */
357
+ config: string;
358
+ resolved: ResolvedStoreOptions;
359
+ }
360
+ declare function codexStore(options?: StoreOptions): CodexStore;
361
+ declare function codexStoreAt(root: string, options?: StoreOptions): CodexStore;
362
+ declare function codexStoreExists(store: CodexStore): boolean;
363
+ /** The day folder and the file name a new rollout gets, both from the same instant in local time. */
364
+ declare function codexRolloutPath(store: CodexStore, at: Date, sessionId: string): string;
365
+
366
+ /**
367
+ * Where OpenCode keeps its conversations.
368
+ *
369
+ * Verified on OpenCode 1.2.6 (11-Sep-2026): `$XDG_DATA_HOME/opencode/opencode.db`, default
370
+ * `~/.local/share/opencode`, a SQLite file with the tables `session`, `message` and `part`
371
+ * whose `data` column holds JSON. Beside it, the legacy JSON store `storage/{session,message,
372
+ * part}/**` that older versions wrote and `opencode db migrate` folds in; it is the fallback
373
+ * when `node:sqlite` cannot open the file. Nothing else of OpenCode's in that folder is opened
374
+ * — `auth.json` lives there too.
375
+ *
376
+ * Writing goes through the official door, `opencode import <file>`: the envelope file,
377
+ * `panoma-import-<id>.json`, is written next to the database and the caller runs the import;
378
+ * the reader opens it again to preview the copy, so it is on the list below with the files
379
+ * OpenCode writes. On Windows the data folder is taken from `LOCALAPPDATA` by the same XDG
380
+ * resolution OpenCode uses; it is not verified there (docs/open-questions.md).
381
+ */
382
+
383
+ interface OpencodeStore {
384
+ /** `$XDG_DATA_HOME/opencode` or `~/.local/share/opencode`. */
385
+ root: string;
386
+ db: string;
387
+ storage: string;
388
+ resolved: ResolvedStoreOptions;
389
+ }
390
+ declare function opencodeStore(options?: StoreOptions): OpencodeStore;
391
+ declare function opencodeStoreAt(root: string, options?: StoreOptions): OpencodeStore;
392
+ /** Either the database or the legacy JSON store counts: an old install has only the second. */
393
+ declare function opencodeStoreExists(store: OpencodeStore): boolean;
394
+ declare function opencodeEnvelopePath(store: OpencodeStore, sessionId: string): string;
395
+
396
+ interface GeminiStore {
397
+ /** `~/.gemini`. */
398
+ root: string;
399
+ tmp: string;
400
+ registry: string;
401
+ resolved: ResolvedStoreOptions;
402
+ }
403
+ declare function geminiStore(options?: StoreOptions): GeminiStore;
404
+ declare function geminiStoreAt(root: string, options?: StoreOptions): GeminiStore;
405
+ declare function geminiStoreExists(store: GeminiStore): boolean;
406
+ /** The project id Gemini CLI uses for a working directory on this store. */
407
+ declare function geminiProjectId(store: GeminiStore, cwd: string): string;
408
+ /**
409
+ * `session-2026-09-11T14-00-<id8>.jsonl`: the UTC instant, ISO to the minute, which is how
410
+ * Gemini's own `ChatRecordingService` names its files — the ones on this disk spell the `Z` hour
411
+ * of their `startTime`, not the local one. Until 12-Sep-2026 this sentence said «local time»
412
+ * while the code said UTC; the Codex store made the opposite slip and had to be corrected, so
413
+ * the sentence and the code now agree, and `stores.test.ts` pins the spelling.
414
+ */
415
+ declare function geminiChatPath(store: GeminiStore, projectId: string, at: Date, sessionId: string): string;
416
+
417
+ /** Per native agent, the relative globs under its store root this package may open. */
418
+ declare const MAY_OPEN: Readonly<Partial<Record<AgentId, readonly string[]>>>;
419
+
420
+ interface GeminiReadDeps {
421
+ /** Folders whose sha256 may be this chat's project id: the catalog roots, the current folder. */
422
+ cwds?: readonly string[];
423
+ }
424
+ declare function readGeminiConversation(path: string, options?: StoreOptions, deps?: GeminiReadDeps): Promise<Conversation>;
425
+
426
+ /** What a test injects instead of `node:sqlite`; the real one is wrapped to this shape. */
427
+ interface SqliteOpener {
428
+ open(path: string): SqliteHandle;
429
+ }
430
+ interface SqliteHandle {
431
+ all(sql: string, ...params: (string | number)[]): Record<string, unknown>[];
432
+ close(): void;
433
+ }
434
+ interface OpencodeReadDeps {
435
+ sqlite?: SqliteOpener;
436
+ }
437
+ interface OpencodeSource {
438
+ /** The database file, the data folder, or an envelope file. */
439
+ path: string;
440
+ sessionId: string;
441
+ }
442
+ declare function readOpencodeConversation(source: OpencodeSource, options?: StoreOptions, deps?: OpencodeReadDeps): Promise<Conversation>;
443
+
444
+ interface ReadSource {
445
+ agent: AgentId;
446
+ /** The transcript file; for OpenCode, the database, the data folder, or an envelope file. */
447
+ path: string;
448
+ /** Needed for OpenCode, where one file holds every session. */
449
+ sessionId?: string;
450
+ }
451
+ interface ReadDeps extends OpencodeReadDeps, GeminiReadDeps {
452
+ }
453
+ declare function readConversation(source: ReadSource, options?: StoreOptions, deps?: ReadDeps): Promise<Conversation>;
454
+
455
+ declare function readClaudeConversation(path: string, options?: StoreOptions): Promise<Conversation>;
456
+
457
+ declare function readCodexConversation(path: string, options?: StoreOptions): Promise<Conversation>;
458
+
459
+ declare function digestConversation(conversation: Conversation): Digest;
460
+ /** The digest as the Markdown a `summary` part or a brief carries. */
461
+ declare function digestMarkdown(digest: Digest): string;
462
+
463
+ interface CompactOptions {
464
+ keepTurns?: number;
465
+ }
466
+ declare function compactConversation(conversation: Conversation, digest: Digest, options?: CompactOptions): Conversation;
467
+
468
+ interface WriteRequest {
469
+ /** The turns already reduced to the tier: `full` as read, `compact` from `compactConversation`. */
470
+ conversation: Conversation;
471
+ tier: Tier;
472
+ /** The store root of the target: its config folder, `CODEX_HOME`, the data folder, `~/.gemini`. */
473
+ root: string;
474
+ cwd: string;
475
+ gitBranch?: string;
476
+ /** What the target lists it as; the digest title when there is one. */
477
+ title?: string;
478
+ now: Date;
479
+ random: Random;
480
+ platform: NodeJS.Platform;
481
+ /** Where the copy is meant to be opened. The file is the same; only the result's doors differ. */
482
+ surface?: Surface;
483
+ }
484
+ /** `redactSecrets` at the mouth, with the marks counted into `dropped.secrets`. */
485
+ declare class Redactor {
486
+ count: number;
487
+ text(value: string): string;
488
+ }
489
+
490
+ interface BriefOptions {
491
+ keepTurns?: number;
492
+ now?: Date;
493
+ /** Filled with the number of secret marks the document carries. */
494
+ redactor?: Redactor;
495
+ }
496
+ declare function briefMarkdown(conversation: Conversation, digest: Digest, options?: BriefOptions): string;
497
+ /** The document on disk, 0600, folders created. Returns the bytes written. */
498
+ declare function writeBrief(path: string, markdown: string): Promise<number>;
499
+
500
+ declare function writeClaudeConversation(request: WriteRequest): Promise<WriteResult>;
501
+
502
+ declare function writeCodexConversation(request: WriteRequest): Promise<WriteResult>;
503
+
504
+ declare function writeOpencodeConversation(request: WriteRequest): Promise<WriteResult>;
505
+
506
+ declare function writeGeminiConversation(request: WriteRequest): Promise<WriteResult>;
507
+
508
+ /**
509
+ * The folder as this disk spells it: absolute, with `.` and `..` and a trailing separator
510
+ * folded, and resolved through every link where it exists. An empty string stays empty —
511
+ * `resolve("")` would answer the process's own folder, and a conversation without a folder
512
+ * is not one that ran here.
513
+ */
514
+ declare function realFolder(folder: string): Promise<string>;
515
+ /** `cwd` equals or is inside `folder`; case-insensitive on Windows, separators normalized. */
516
+ declare function insideFolder(cwd: string, folder: string, platform?: NodeJS.Platform): boolean;
517
+ /** The two spellings name one folder; case-insensitive on Windows, separators normalized. */
518
+ declare function sameFolder(a: string, b: string, platform?: NodeJS.Platform): boolean;
519
+
520
+ interface DiscoverOptions extends StoreOptions {
521
+ /** Newest conversations per store. Default 40. With `cwd`, the newest of that folder's. */
522
+ limit?: number;
523
+ /** Keep only conversations whose `cwd` equals or is inside this folder, chosen before the cap. */
524
+ cwd?: string;
525
+ /** Which stores to read. Default: the four native agents. */
526
+ agents?: readonly AgentId[];
527
+ /** Folders whose sha256 may be a Gemini project id. */
528
+ cwds?: readonly string[];
529
+ /** Injected instead of `node:sqlite`, for tests. */
530
+ sqlite?: SqliteOpener;
531
+ }
532
+ declare function discoverConversations(options?: DiscoverOptions): Promise<Discovery>;
533
+ /** The store reports alone: where each store is, whether it exists, how many candidates it holds. */
534
+ declare function stores(options?: StoreOptions): Promise<StoreReport[]>;
535
+
536
+ declare function resolveConversation(handleOrPrefix: string, discovery: Discovery): ConversationRef;
537
+ /** Two conversations from different agents closer than this are not chosen between. */
538
+ declare const SAME_HOUR_MS: number;
539
+ /**
540
+ * The conversation a caller means when it names none: the newest of the folder — and the rival
541
+ * that stops the choice, when there is one. Two agents within the same hour is not a choice the
542
+ * machine makes: the person was in both, and the wrong one handed over is the one they were not
543
+ * looking at. Every row within the hour of the newest is looked at, not only the second: two
544
+ * Codex sessions ten minutes apart and a Claude one behind them are still two agents in one
545
+ * hour, and until 12-Sep-2026 both doors read the second row alone and handed the newest over.
546
+ * The rows come newest first, as discovery lists them; the rule is shared by `panoma handoff`
547
+ * and `POST /api/agent/handoff` so the two doors cannot drift apart.
548
+ */
549
+ declare function newestOfFolder(refs: readonly ConversationRef[]): {
550
+ newest: ConversationRef | undefined;
551
+ rival: ConversationRef | undefined;
552
+ };
553
+
554
+ declare function toBundle(conversation: Conversation, digest: Digest, now?: Date): Bundle;
555
+ /** A path, as opposed to a handle: it has a separator or ends with `.json`. */
556
+ declare function isBundlePath(value: string): boolean;
557
+ declare function fromBundle(value: unknown): Bundle;
558
+
559
+ interface NormalTurn {
560
+ role: "user" | "assistant";
561
+ parts: string[];
562
+ }
563
+ declare function normalizeTurns(turns: readonly Turn[]): NormalTurn[];
564
+ declare function hashTurns(turns: readonly Turn[]): string;
565
+
566
+ /** Every part as the text a text-only agent would keep. */
567
+ declare function textOfPart(part: Part): string;
568
+ /** `Continued from Claude Code conversation <id> by panoma on 2026-09-11 · tier full`. */
569
+ declare function provenanceLine(source: AgentId, sessionId: string, tier: Tier, at: Date): string;
570
+
571
+ declare function handoff(input: HandoffInput): Promise<WriteResult>;
572
+ /**
573
+ * The refusals `handoff()` would raise for this input, in its order, and no file: the same
574
+ * `prepare()`, thrown away. `now`, `random` and `out` are accepted and unused, so a caller can
575
+ * pass the very input it will write with.
576
+ */
577
+ declare function checkHandoff(input: HandoffInput): Promise<void>;
578
+
579
+ export { AGENT_IDS, AGENT_NAMES, AGENT_WORDS, APP_OF, APP_WORDS, type AgentId, type BriefOptions, type Bundle, type ClaudeStore, type CodexStore, type CompactOptions, type Compaction, type Conversation, type ConversationRef, DISCOVERY_LIMIT_DEFAULT, DISCOVERY_WHOLE_FILE_BYTES, DISCOVERY_WINDOW_BYTES, type DesktopApp, type Digest, type DiscoverOptions, type Discovery, type Dropped, type Fidelity, type GeminiReadDeps, type GeminiStore, type HandoffInput, KEEP_TURNS_DEFAULT, LARGE_CONVERSATION_BYTES, type LimitHit, MAX_CONVERSATION_BYTES, MAY_OPEN, NATIVE_AGENTS, NOTHING_DROPPED, type OpencodeReadDeps, type OpencodeSource, type OpencodeStore, type Part, type Provenance, type Random, type ReadDeps, type ReadSource, type Resume, type ResumeInApp, SAME_HOUR_MS, SIGN_IN, SIGN_OUT, SURFACES, type SqliteHandle, type SqliteOpener, type StoreOptions, type StoreReport, type Surface, TIERS, type Tier, type Turn, type WriteRequest, type WriteResult, agentFromWord, agentOfApp, briefMarkdown, checkHandoff, claudeProjectDir, claudeSlug, claudeStore, claudeStoreAt, claudeStoreExists, claudeTranscriptPath, codexRolloutPath, codexStore, codexStoreAt, codexStoreExists, compactConversation, conversationId, cryptoRandom, digestConversation, digestMarkdown, discoverConversations, fidelityOf, forkOf, fromBundle, geminiChatPath, geminiProjectId, geminiStore, geminiStoreAt, geminiStoreExists, handoff, hashTurns, insideFolder, isAgentId, isBundlePath, isNativeTarget, isSafeId, isSessionIdOf, isSurface, isTier, newestOfFolder, normalizeTurns, opencodeEnvelopePath, opencodeId, opencodeStore, opencodeStoreAt, opencodeStoreExists, provenanceLine, quoteForShell, readClaudeConversation, readCodexConversation, readConversation, readGeminiConversation, readOpencodeConversation, realFolder, resolveConversation, resumeInApp, resumeOf, sameFolder, shortHandle, splitConversationId, stores, textOfPart, toBundle, writeBrief, writeClaudeConversation, writeCodexConversation, writeGeminiConversation, writeOpencodeConversation };