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
@@ -1059,6 +1059,35 @@ declare const REDACTED = "[secret-redacted]";
1059
1059
  /** The text with its keys covered. Idempotent: the mark has no key shape. */
1060
1060
  declare function redactSecrets(text: string): string;
1061
1061
 
1062
+ /**
1063
+ * How a copy `packages/handoff` wrote is told apart from a conversation the person had.
1064
+ *
1065
+ * It lives here and not in the handoff package because the twin's history readers
1066
+ * (`history/claude-code.ts`, `history/codex.ts`) must recognise the carried records and skip
1067
+ * them, and `@panoma/core` imports nothing from the other packages. A carried record is not
1068
+ * owner evidence: the person said those words at the source, where they were already mined,
1069
+ * and counting them again would weigh every reaction in that conversation twice.
1070
+ *
1071
+ * The marks are the writers' own stamps on the record, never the text of the first prompt:
1072
+ * `version` on every Claude Code record `writers/claude.ts` writes, and
1073
+ * `session_meta.payload.originator` on every rollout `writers/codex.ts` writes. Until
1074
+ * 12-Sep-2026 the readers keyed on the first two words of the provenance line instead, and
1075
+ * dropped the file whole; that lost two things the feature exists for. A `brief` is a Markdown
1076
+ * document that starts with the same line and is meant to be pasted as a first message, so the
1077
+ * person's own conversation that opened with one vanished from the twin. And `claude --resume`
1078
+ * and `codex resume` append the person's new turns to the copy itself, so every reaction given
1079
+ * after the handoff was never read. A stamp is on the record and not in its text — a person
1080
+ * cannot type it — and it marks the carried prefix and not the file. The prefix constant stays
1081
+ * for the line the writers put in front of the first turn (`notes.ts` in the handoff package)
1082
+ * and for a person reading the file; it is not a skip key anywhere, and both stamps have been
1083
+ * on every copy since the first one was written on 11-Sep-2026, so no older copy needs it.
1084
+ */
1085
+ declare const HANDOFF_PROVENANCE_PREFIX = "Continued from ";
1086
+ /** The `version` every Claude Code record written by `packages/handoff` carries. Claude Code writes its own version number there. */
1087
+ declare const HANDOFF_CLAUDE_RECORD_VERSION = "panoma-handoff";
1088
+ /** The `originator` in the `session_meta` of every Codex rollout written by `packages/handoff`. Codex writes its client's name there. */
1089
+ declare const HANDOFF_CODEX_ORIGINATOR = "panoma";
1090
+
1062
1091
  /**
1063
1092
  * The brand that distinguishes our hooks from those of any other.
1064
1093
  *
@@ -1757,6 +1786,15 @@ interface MineStats {
1757
1786
  * that there aren't any there.
1758
1787
  */
1759
1788
  sidechain: number;
1789
+ /**
1790
+ * Copies panoma wrote: a conversation handed off from another agent (`packages/handoff`),
1791
+ * one count per file. Its carried records are stamped `version: "panoma-handoff"` and are
1792
+ * skipped, because their turns are the same ones the source file already contributed and
1793
+ * counting them would weigh every reaction in that conversation twice. What the person typed
1794
+ * after resuming the copy is theirs and is read as always; until 12-Sep-2026 the whole file
1795
+ * was skipped and those turns —the continuation the feature exists for— were never read.
1796
+ */
1797
+ handedOff: number;
1760
1798
  commands: number;
1761
1799
  reactions: number;
1762
1800
  briefs: number;
@@ -2518,4 +2556,4 @@ interface McpTomlMergeResult {
2518
2556
  */
2519
2557
  declare function mergeMcpToml(existing: string | undefined, entry: McpEntry): McpTomlMergeResult;
2520
2558
 
2521
- export { AGENT_DOC_FILES, type AccessKey, type AgentAsks, type AgentsMdFile, type AgentsMdFinding, type AgentsMdOptions, type AgentsMdReport, type AnalyzeOptions, type AssetReport, CLAUDE_BRIDGE, type CatalogMdContext, type Composition, type ConsentState, type CriticFinding, type CriticKind, type CriticReport, type DatabaseLease, type Dependency, type DesignColor, type DesignFingerprint, type DesignSignal, type DetectedDistribution, type DetectedTechnology, type DiskReport, type DistributionKind, type DocTouch, ENGINE_VERSION, type Ecosystem, type EcosystemReport, type EnvContract, type Evidence, type FamilyMember, type FileIndex, type FitRefusal, type FittedShot, type GitInfo, HOOKS_BRAND, type HealthScore, type HealthSignal, type HistorySource, type HistorySourceId, type Identity, type IdentityCandidate, type ImageType, LANGUAGE_BY_EXTENSION, type LanguageStat, type Launch, type LintFacts, MAX_FITTABLE_BYTES, MAX_FIT_PIXELS, MAX_SCREENSHOT_BYTES, MCP_FILE_MODE, type Matcher, type McpEntry, McpMergeError, type McpMergeReason, type McpMergeResult, type McpTarget, type McpTargetKind, McpTomlError, type MineOptions, type MineOutcome, type MineResult, type MineStats, type Narrative, ORIGIN_EVIDENCE_CODES, type OriginEvidence, type OriginEvidenceCode, type OriginKind, PANOMA_BLOCK_BEGIN, PANOMA_BLOCK_END, PANOMA_HOME_VAR, POSTGRES_DEL_PAQUETE, type PanomaBlockData, type ProjectAnalysis, type ProjectFamily, type ProjectKind, type ProjectLink, type ProjectOrigin, type Provenance, type QuoteRedaction, REDACTED, RULES, type Reaction, type ReclaimableDir, type RiskCode, type RiskLevel, type Rule, type RunCommand, type Runbook, type RuntimeNeed, SERVER_NAME, SHOTS_DIR, SKIP_DIRS, SMALL_SCREENSHOT_WIDTH, type Screenshot, ScreenshotError, type ScreenshotProblem, type SecretFinding, type SecretReport, type SeededTopic, type Severity, type Shot, type ShotsInbox, type Summary, TASTE_CAP, TASTE_FILE, TASTE_GLOBAL_ONLY, TASTE_TOPICS, TasteFullError, type TasteLine, type TasteProfile, type TasteTopic, type TechKind, type TwinConsent, type UnusedAsset, type VerdictSignal, type WalkOptions, type WorkRisk, type WorkState, agentKindAliases, agentsMdHash, analyzeCargo, analyzeComposer, analyzeEcosystems, analyzeGo, analyzeNpm, analyzeProject, analyzePub, analyzePypi, analyzeRubyGems, applyEnrichment, asShellLine, avisoDeFormato, buildFileIndex, canonicalAgentKind, classifyOrigin, clearLease, commitsPerDay, composeBlockData, composeSummary, composedText, computeHealth, computeLanguages, consentState, critiqueKey, deduceIdentity, depVersions, detectDistributions, detectSignals, discoverProjects, docHash, ensureAccessKey, estimateTokens, evidenceText, expandTilde, fallbackColor, findDuplicateFamilies, findExecutable, findIcon, findSecrets, findUnusedAssets, fingerprint, fitScreenshot, hasPanomaBlock, hasReader, hookIsOurs, identityCandidate, imageTypeOf, inventoryHistory, isAllowed, isLoopbackHost, isNewerVersion, isProjectRoot, leaseDir, leaseIntruder, leasePath, lintAgentDoc, mcpProjectTarget, mcpSnippet, mcpTarget, measureDisk, mergeMcp, mergeMcpToml, mergePreToolUse, mergeStop, mineHistory, normalizeName, normalizePypiName, openShots, panomaHome, panomaPath, parseTaste, pickAgentDoc, pidAlive, postCommitScript, publishesInferred, qualifyWithFolder, qualifyWithParent, readAccessKey, readAgentsMd, readConsent, readDesign, readEnvKeys, readGitInfo, readLeases, readProvenance, readRunbook, readScreenshot, readShots, readSummary, readTaste, readableSources, readmeName, redactQuote, redactSecrets, removeStop, renderPanomaBlock, renderTaste, repairAgentDoc, resolveExecutable, resolveLinks, restrictToOwner, reviewProject, setConsent, setInferredConsent, shotsOpen, shotsPath, slugify, tasteDigest, topicsOf, trackedByGit, upsertPanomaBlock, versionEnDisco, workRisks, worstBlock, writeLease, writeTaste };
2559
+ export { AGENT_DOC_FILES, type AccessKey, type AgentAsks, type AgentsMdFile, type AgentsMdFinding, type AgentsMdOptions, type AgentsMdReport, type AnalyzeOptions, type AssetReport, CLAUDE_BRIDGE, type CatalogMdContext, type Composition, type ConsentState, type CriticFinding, type CriticKind, type CriticReport, type DatabaseLease, type Dependency, type DesignColor, type DesignFingerprint, type DesignSignal, type DetectedDistribution, type DetectedTechnology, type DiskReport, type DistributionKind, type DocTouch, ENGINE_VERSION, type Ecosystem, type EcosystemReport, type EnvContract, type Evidence, type FamilyMember, type FileIndex, type FitRefusal, type FittedShot, type GitInfo, HANDOFF_CLAUDE_RECORD_VERSION, HANDOFF_CODEX_ORIGINATOR, HANDOFF_PROVENANCE_PREFIX, HOOKS_BRAND, type HealthScore, type HealthSignal, type HistorySource, type HistorySourceId, type Identity, type IdentityCandidate, type ImageType, LANGUAGE_BY_EXTENSION, type LanguageStat, type Launch, type LintFacts, MAX_FITTABLE_BYTES, MAX_FIT_PIXELS, MAX_SCREENSHOT_BYTES, MCP_FILE_MODE, type Matcher, type McpEntry, McpMergeError, type McpMergeReason, type McpMergeResult, type McpTarget, type McpTargetKind, McpTomlError, type MineOptions, type MineOutcome, type MineResult, type MineStats, type Narrative, ORIGIN_EVIDENCE_CODES, type OriginEvidence, type OriginEvidenceCode, type OriginKind, PANOMA_BLOCK_BEGIN, PANOMA_BLOCK_END, PANOMA_HOME_VAR, POSTGRES_DEL_PAQUETE, type PanomaBlockData, type ProjectAnalysis, type ProjectFamily, type ProjectKind, type ProjectLink, type ProjectOrigin, type Provenance, type QuoteRedaction, REDACTED, RULES, type Reaction, type ReclaimableDir, type RiskCode, type RiskLevel, type Rule, type RunCommand, type Runbook, type RuntimeNeed, SERVER_NAME, SHOTS_DIR, SKIP_DIRS, SMALL_SCREENSHOT_WIDTH, type Screenshot, ScreenshotError, type ScreenshotProblem, type SecretFinding, type SecretReport, type SeededTopic, type Severity, type Shot, type ShotsInbox, type Summary, TASTE_CAP, TASTE_FILE, TASTE_GLOBAL_ONLY, TASTE_TOPICS, TasteFullError, type TasteLine, type TasteProfile, type TasteTopic, type TechKind, type TwinConsent, type UnusedAsset, type VerdictSignal, type WalkOptions, type WorkRisk, type WorkState, agentKindAliases, agentsMdHash, analyzeCargo, analyzeComposer, analyzeEcosystems, analyzeGo, analyzeNpm, analyzeProject, analyzePub, analyzePypi, analyzeRubyGems, applyEnrichment, asShellLine, avisoDeFormato, buildFileIndex, canonicalAgentKind, classifyOrigin, clearLease, commitsPerDay, composeBlockData, composeSummary, composedText, computeHealth, computeLanguages, consentState, critiqueKey, deduceIdentity, depVersions, detectDistributions, detectSignals, discoverProjects, docHash, ensureAccessKey, estimateTokens, evidenceText, expandTilde, fallbackColor, findDuplicateFamilies, findExecutable, findIcon, findSecrets, findUnusedAssets, fingerprint, fitScreenshot, hasPanomaBlock, hasReader, hookIsOurs, identityCandidate, imageTypeOf, inventoryHistory, isAllowed, isLoopbackHost, isNewerVersion, isProjectRoot, leaseDir, leaseIntruder, leasePath, lintAgentDoc, mcpProjectTarget, mcpSnippet, mcpTarget, measureDisk, mergeMcp, mergeMcpToml, mergePreToolUse, mergeStop, mineHistory, normalizeName, normalizePypiName, openShots, panomaHome, panomaPath, parseTaste, pickAgentDoc, pidAlive, postCommitScript, publishesInferred, qualifyWithFolder, qualifyWithParent, readAccessKey, readAgentsMd, readConsent, readDesign, readEnvKeys, readGitInfo, readLeases, readProvenance, readRunbook, readScreenshot, readShots, readSummary, readTaste, readableSources, readmeName, redactQuote, redactSecrets, removeStop, renderPanomaBlock, renderTaste, repairAgentDoc, resolveExecutable, resolveLinks, restrictToOwner, reviewProject, setConsent, setInferredConsent, shotsOpen, shotsPath, slugify, tasteDigest, topicsOf, trackedByGit, upsertPanomaBlock, versionEnDisco, workRisks, worstBlock, writeLease, writeTaste };
@@ -4616,6 +4616,11 @@ function redactSecrets(text) {
4616
4616
  return out;
4617
4617
  }
4618
4618
 
4619
+ // src/handoff-marker.ts
4620
+ var HANDOFF_PROVENANCE_PREFIX = "Continued from ";
4621
+ var HANDOFF_CLAUDE_RECORD_VERSION = "panoma-handoff";
4622
+ var HANDOFF_CODEX_ORIGINATOR = "panoma";
4623
+
4619
4624
  // src/hooks-install.ts
4620
4625
  var HOOKS_BRAND = "# panoma-hooks";
4621
4626
  function hookIsOurs(text) {
@@ -7263,6 +7268,7 @@ function emptyStats() {
7263
7268
  userTurns: 0,
7264
7269
  toolResults: 0,
7265
7270
  sidechain: 0,
7271
+ handedOff: 0,
7266
7272
  commands: 0,
7267
7273
  reactions: 0,
7268
7274
  briefs: 0,
@@ -7328,6 +7334,7 @@ async function mineTranscript(path, options, limit, stats, sessions, out, narrat
7328
7334
  const orphans = [];
7329
7335
  const fallbackSession = basename4(path, ".jsonl");
7330
7336
  const capture = narratives === void 0 ? void 0 : new NarrativeCapture(Math.max(0, limit - narratives.length), options.cwdPrefix);
7337
+ let carriedSeen = false;
7331
7338
  try {
7332
7339
  for await (const line of lines) {
7333
7340
  if (line.length < 2 || line.length > MAX_LINE_CHARS2) continue;
@@ -7342,7 +7349,12 @@ async function mineTranscript(path, options, limit, stats, sessions, out, narrat
7342
7349
  const type = parsed["type"];
7343
7350
  if (type !== "user" && type !== "assistant") continue;
7344
7351
  const sessionId = typeof parsed["sessionId"] === "string" && parsed["sessionId"].length > 0 ? parsed["sessionId"] : fallbackSession;
7345
- sessions.add(sessionId);
7352
+ const carried = parsed["version"] === HANDOFF_CLAUDE_RECORD_VERSION;
7353
+ if (!carried) sessions.add(sessionId);
7354
+ else if (!carriedSeen) {
7355
+ carriedSeen = true;
7356
+ stats.handedOff += 1;
7357
+ }
7346
7358
  const message = parsed["message"];
7347
7359
  const content = readContent(isRecord(message) ? message["content"] : void 0);
7348
7360
  if (type === "assistant") {
@@ -7363,6 +7375,7 @@ async function mineTranscript(path, options, limit, stats, sessions, out, narrat
7363
7375
  if (content.hasText && text2.length > 0) delivery = text2;
7364
7376
  continue;
7365
7377
  }
7378
+ if (carried) continue;
7366
7379
  if (content.toolResult) {
7367
7380
  stats.toolResults += 1;
7368
7381
  continue;
@@ -7598,6 +7611,7 @@ function emptyStats2() {
7598
7611
  userTurns: 0,
7599
7612
  toolResults: 0,
7600
7613
  sidechain: 0,
7614
+ handedOff: 0,
7601
7615
  commands: 0,
7602
7616
  reactions: 0,
7603
7617
  briefs: 0,
@@ -7698,9 +7712,14 @@ var SESSION_META = '"session_meta"';
7698
7712
  var TURN_CONTEXT = '"turn_context"';
7699
7713
  var USER_MESSAGE = '"user_message"';
7700
7714
  var AGENT_MESSAGE = '"agent_message"';
7715
+ var USER_ITEM = '"UserMessage"';
7716
+ var AGENT_ITEM = '"AgentMessage"';
7717
+ var INPUT_TEXT = '"input_text"';
7718
+ var OUTPUT_TEXT = '"output_text"';
7701
7719
  var TOOL_CALL = '"function_call"';
7702
7720
  var TOOL_OUTPUT = '"function_call_output"';
7703
7721
  var CUSTOM_CALL = '"custom_tool_call"';
7722
+ var THREAD_SETTINGS = '"thread_settings_applied"';
7704
7723
  var MAX_TOUCHED2 = 12;
7705
7724
  var MAX_SESSION_PATHS2 = 64;
7706
7725
  var MAX_CALL_CHARS = 4e4;
@@ -7762,8 +7781,15 @@ function objectIn(text) {
7762
7781
  var INJECTED_BLOCKS2 = [
7763
7782
  /<realtime_delegation>[\s\S]*?<\/realtime_delegation>/g,
7764
7783
  /<in-app-browser-context[\s\S]*?<\/in-app-browser-context>/g,
7765
- /<environment_context>[\s\S]*?<\/environment_context>/g
7784
+ /<environment_context>[\s\S]*?<\/environment_context>/g,
7785
+ // The app's blocks, measured on 12-Sep-2026 over the user-role response items of the newest
7786
+ // 120 rollouts here: the plugin list opens 71, an aborted turn 3, an internal goal 1. The
7787
+ // `<send_user_message_question_reply>` block is not here: it is the person's own answer.
7788
+ /<recommended_plugins>[\s\S]*?<\/recommended_plugins>/g,
7789
+ /<turn_aborted>[\s\S]*?<\/turn_aborted>/g,
7790
+ /<codex_internal_context[\s\S]*?<\/codex_internal_context>/g
7766
7791
  ];
7792
+ var INJECTED_WHOLE = /^#[ \t]+AGENTS\.md instructions\b/;
7767
7793
  var REQUEST_MARKER = /^##[ \t]+My request(?:[ \t]+for[ \t]+Codex)?:[ \t]*$/m;
7768
7794
  async function mineCodex(options = {}) {
7769
7795
  const root = join16(options.home ?? homedir5(), ".codex");
@@ -7815,11 +7841,72 @@ async function mineRollout(path, options, limit, stats, sessions, out, narrative
7815
7841
  const orphans = [];
7816
7842
  const capture = narratives === void 0 ? void 0 : new NarrativeCapture(Math.max(0, limit - narratives.length), options.cwdPrefix);
7817
7843
  capture?.begin(sessionId);
7844
+ let carried = false;
7845
+ let lastShown;
7846
+ let held;
7847
+ let lastTurn;
7848
+ const takeHeld = () => {
7849
+ if (held === void 0) return;
7850
+ const { raw, at } = held;
7851
+ held = void 0;
7852
+ userTurn(raw, at);
7853
+ };
7854
+ const userTurn = (raw, at) => {
7855
+ lastTurn = raw;
7856
+ if (carried) return;
7857
+ if (subagent) {
7858
+ stats.sidechain += 1;
7859
+ return;
7860
+ }
7861
+ if (raw.length === 0) return;
7862
+ const text = stripInjected2(raw);
7863
+ if (text.length === 0) {
7864
+ stats.commands += 1;
7865
+ return;
7866
+ }
7867
+ stats.userTurns += 1;
7868
+ sessions.add(sessionId);
7869
+ capture?.owner({
7870
+ source: "codex",
7871
+ sessionId,
7872
+ at,
7873
+ cwd: turnCwd ?? sessionCwd,
7874
+ gitBranch
7875
+ }, text);
7876
+ if (delivery === void 0) {
7877
+ stats.spontaneous += 1;
7878
+ return;
7879
+ }
7880
+ const brief = isBrief(text);
7881
+ const signals = brief ? [] : detectSignals(text);
7882
+ stats.reactions += 1;
7883
+ if (brief) stats.briefs += 1;
7884
+ if (signals.length > 0) stats.withSignal += 1;
7885
+ if (options.onlySignals === true && signals.length === 0) return;
7886
+ const cwd = turnCwd ?? sessionCwd;
7887
+ if (!underPrefix(cwd, options.cwdPrefix)) return;
7888
+ const reaction = {
7889
+ source: "codex",
7890
+ sessionId,
7891
+ at,
7892
+ delivery: excerpt(redactQuote(delivery).text, DELIVERY_CHARS),
7893
+ reaction: cap(redactQuote(text).text, REACTION_CHARS),
7894
+ chars: text.length,
7895
+ brief,
7896
+ signals
7897
+ };
7898
+ if (cwd !== void 0) reaction.cwd = cwd;
7899
+ if (window.size > 0) reaction.paths = [...window];
7900
+ else orphans.push(reaction);
7901
+ window.clear();
7902
+ if (gitBranch !== void 0) reaction.gitBranch = gitBranch;
7903
+ if (out.length < limit) out.push(reaction);
7904
+ };
7818
7905
  try {
7819
7906
  for await (const line of lines) {
7820
7907
  if (line.length < 2) continue;
7821
7908
  const scan = line.length > SCAN_CHARS ? line.slice(0, SCAN_CHARS) : line;
7822
- if (!scan.includes(SESSION_META) && !scan.includes(TURN_CONTEXT) && !scan.includes(USER_MESSAGE) && !scan.includes(AGENT_MESSAGE)) {
7909
+ if (!scan.includes(SESSION_META) && !scan.includes(TURN_CONTEXT) && !scan.includes(USER_MESSAGE) && !scan.includes(AGENT_MESSAGE) && !scan.includes(USER_ITEM) && !scan.includes(AGENT_ITEM) && !scan.includes(INPUT_TEXT) && !scan.includes(OUTPUT_TEXT) && !(carried && scan.includes(THREAD_SETTINGS))) {
7823
7910
  if (scan.includes(TOOL_CALL) || scan.includes(TOOL_OUTPUT)) stats.toolResults += 1;
7824
7911
  const call = scan.includes(TOOL_CALL) || scan.includes(CUSTOM_CALL);
7825
7912
  if (!call || line.length > MAX_CALL_CHARS) continue;
@@ -7855,6 +7942,7 @@ async function mineRollout(path, options, limit, stats, sessions, out, narrative
7855
7942
  if (!isRecord(payload)) continue;
7856
7943
  const type = parsed["type"];
7857
7944
  if (type === "session_meta") {
7945
+ takeHeld();
7858
7946
  const id = readString(payload["id"]);
7859
7947
  if (id !== void 0) sessionId = id;
7860
7948
  sessionCwd = readString(payload["cwd"]);
@@ -7864,75 +7952,51 @@ async function mineRollout(path, options, limit, stats, sessions, out, narrative
7864
7952
  subagent = isRecord(source) && source["subagent"] !== void 0;
7865
7953
  turnCwd = void 0;
7866
7954
  delivery = void 0;
7955
+ lastShown = void 0;
7956
+ lastTurn = void 0;
7867
7957
  window.clear();
7868
7958
  capture?.begin(sessionId);
7869
- sessions.add(sessionId);
7959
+ carried = payload["originator"] === HANDOFF_CODEX_ORIGINATOR;
7960
+ if (carried) stats.handedOff += 1;
7961
+ else sessions.add(sessionId);
7870
7962
  continue;
7871
7963
  }
7872
7964
  if (type === "turn_context") {
7873
- const cwd2 = readString(payload["cwd"]);
7874
- if (cwd2 !== void 0) turnCwd = cwd2;
7965
+ const cwd = readString(payload["cwd"]);
7966
+ if (cwd !== void 0) turnCwd = cwd;
7875
7967
  continue;
7876
7968
  }
7877
- if (type !== "event_msg") continue;
7878
7969
  const kind = payload["type"];
7879
- if (kind !== "user_message" && kind !== "agent_message") continue;
7880
- const message = readString(payload["message"]) ?? readString(payload["text"]);
7881
- if (kind === "agent_message") {
7882
- const shown = message?.trim() ?? "";
7883
- if (shown.length > 0) delivery = shown;
7884
- if (!subagent) capture?.assistant(shown);
7885
- continue;
7886
- }
7887
- if (subagent) {
7888
- stats.sidechain += 1;
7970
+ if (carried && type === "event_msg" && kind === "thread_settings_applied") {
7971
+ carried = false;
7889
7972
  continue;
7890
7973
  }
7891
- const raw = message?.trim() ?? "";
7892
- if (raw.length === 0) continue;
7893
- const text = stripInjected2(raw);
7894
- if (text.length === 0) {
7895
- stats.commands += 1;
7974
+ const spoken = spokenOf(type, kind, payload);
7975
+ if (spoken === void 0) continue;
7976
+ const at = readString(parsed["timestamp"]) ?? "";
7977
+ if (spoken.role === "assistant") {
7978
+ takeHeld();
7979
+ const shown = spoken.text.trim();
7980
+ if (shown.length > 0 && shown !== lastShown) {
7981
+ delivery = shown;
7982
+ lastShown = shown;
7983
+ if (!subagent) capture?.assistant(shown);
7984
+ }
7896
7985
  continue;
7897
7986
  }
7898
- stats.userTurns += 1;
7899
- sessions.add(sessionId);
7900
- capture?.owner({
7901
- source: "codex",
7902
- sessionId,
7903
- at: readString(parsed["timestamp"]) ?? "",
7904
- cwd: turnCwd ?? sessionCwd,
7905
- gitBranch
7906
- }, text);
7907
- if (delivery === void 0) {
7908
- stats.spontaneous += 1;
7987
+ if (spoken.channel === "response") {
7988
+ takeHeld();
7989
+ const raw = spoken.text.trim();
7990
+ if (raw.length === 0 || stripInjected2(raw).length === 0) continue;
7991
+ if (raw === lastTurn) continue;
7992
+ held = { raw, at };
7909
7993
  continue;
7910
7994
  }
7911
- const brief = isBrief(text);
7912
- const signals = brief ? [] : detectSignals(text);
7913
- stats.reactions += 1;
7914
- if (brief) stats.briefs += 1;
7915
- if (signals.length > 0) stats.withSignal += 1;
7916
- if (options.onlySignals === true && signals.length === 0) continue;
7917
- const cwd = turnCwd ?? sessionCwd;
7918
- if (!underPrefix(cwd, options.cwdPrefix)) continue;
7919
- const reaction = {
7920
- source: "codex",
7921
- sessionId,
7922
- at: readString(parsed["timestamp"]) ?? "",
7923
- delivery: excerpt(redactQuote(delivery).text, DELIVERY_CHARS),
7924
- reaction: cap(redactQuote(text).text, REACTION_CHARS),
7925
- chars: text.length,
7926
- brief,
7927
- signals
7928
- };
7929
- if (cwd !== void 0) reaction.cwd = cwd;
7930
- if (window.size > 0) reaction.paths = [...window];
7931
- else orphans.push(reaction);
7932
- window.clear();
7933
- if (gitBranch !== void 0) reaction.gitBranch = gitBranch;
7934
- if (out.length < limit) out.push(reaction);
7995
+ if (held !== void 0 && held.raw === spoken.text.trim()) held = void 0;
7996
+ else takeHeld();
7997
+ userTurn(spoken.text.trim(), at);
7935
7998
  }
7999
+ takeHeld();
7936
8000
  } catch {
7937
8001
  } finally {
7938
8002
  lines.close();
@@ -7947,9 +8011,34 @@ async function mineRollout(path, options, limit, stats, sessions, out, narrative
7947
8011
  for (const narrative of capture.finish()) narratives.push(narrative);
7948
8012
  }
7949
8013
  }
8014
+ function spokenOf(type, kind, payload) {
8015
+ if (type === "event_msg") {
8016
+ if (kind === "user_message" || kind === "agent_message") {
8017
+ const text = readString(payload["message"]) ?? readString(payload["text"]) ?? "";
8018
+ return { role: kind === "user_message" ? "user" : "assistant", channel: "event", text };
8019
+ }
8020
+ if (kind !== "item_completed") return void 0;
8021
+ const item = payload["item"];
8022
+ if (!isRecord(item)) return void 0;
8023
+ if (item["type"] === "UserMessage") return { role: "user", channel: "event", text: partsText(item["content"]) };
8024
+ if (item["type"] === "AgentMessage") return { role: "assistant", channel: "event", text: partsText(item["content"]) };
8025
+ return void 0;
8026
+ }
8027
+ if (type === "response_item" && kind === "message") {
8028
+ const role = payload["role"];
8029
+ if (role !== "user" && role !== "assistant") return void 0;
8030
+ return { role, channel: "response", text: partsText(payload["content"]) };
8031
+ }
8032
+ return void 0;
8033
+ }
8034
+ function partsText(content) {
8035
+ if (!Array.isArray(content)) return "";
8036
+ return content.map((part) => isRecord(part) ? readString(part["text"]) ?? "" : "").filter((text) => text.length > 0).join("\n");
8037
+ }
7950
8038
  function stripInjected2(text) {
7951
8039
  let out = text;
7952
8040
  for (const block of INJECTED_BLOCKS2) out = out.replace(block, " ");
8041
+ if (INJECTED_WHOLE.test(out.trimStart())) return "";
7953
8042
  const marker = REQUEST_MARKER.exec(out);
7954
8043
  if (marker !== null) out = out.slice(marker.index + marker[0].length);
7955
8044
  return out.trim();
@@ -8385,6 +8474,9 @@ export {
8385
8474
  AGENT_DOC_FILES,
8386
8475
  CLAUDE_BRIDGE,
8387
8476
  ENGINE_VERSION,
8477
+ HANDOFF_CLAUDE_RECORD_VERSION,
8478
+ HANDOFF_CODEX_ORIGINATOR,
8479
+ HANDOFF_PROVENANCE_PREFIX,
8388
8480
  HOOKS_BRAND,
8389
8481
  LANGUAGE_BY_EXTENSION,
8390
8482
  MAX_FITTABLE_BYTES,
@@ -26,7 +26,20 @@ type UntrustedOrigin = "readme" | "commits" | "journal" | "tasks" | "manifest" |
26
26
  * read someone else's text — the approval filters intention, not origin, and origin is what this
27
27
  * vocabulary classifies.
28
28
  */
29
- | "notes";
29
+ | "notes"
30
+ /**
31
+ * The turns of a conversation an agent kept on disk: the person's own words, and every tool
32
+ * output the agent read, which includes other people's READMEs and pages. Wrapped before a
33
+ * model writes the digest of a handoff (`packages/handoff`).
34
+ */
35
+ | "conversation"
36
+ /**
37
+ * What an optional app reported about a job it ran: the sentence each stage ended on, the
38
+ * reason a kind of video was set aside, what a review measured. Written by a program that
39
+ * read the project's README and pages, and by a model when the person wired one — so what it
40
+ * says about the product is that program's reading, and what it quotes is the product's.
41
+ */
42
+ | "app";
30
43
  interface UntrustedOptions {
31
44
  /** Where the text came from. It is told to the model. */
32
45
  origin: UntrustedOrigin;
@@ -23,6 +23,7 @@ __export(schema_exports, {
23
23
  exclusions: () => exclusions,
24
24
  families: () => families,
25
25
  familyMembers: () => familyMembers,
26
+ handoffs: () => handoffs,
26
27
  launches: () => launches,
27
28
  looks: () => looks,
28
29
  memoryJobs: () => memoryJobs,
@@ -95,7 +96,14 @@ var appJobs = pgTable("app_jobs", {
95
96
  reservedCalls: integer("reserved_calls").notNull().default(0),
96
97
  requestedAt: timestamp("requested_at", { withTimezone: true }).notNull().defaultNow(),
97
98
  startedAt: timestamp("started_at", { withTimezone: true }),
98
- finishedAt: timestamp("finished_at", { withTimezone: true })
99
+ finishedAt: timestamp("finished_at", { withTimezone: true }),
100
+ /**
101
+ * The agent that asked for it over the MCP channel (`panoma_video`), by the name its key was
102
+ * issued under; `null` when a person did, from the screen or the terminal. The same word the
103
+ * `handoffs` table keeps, for the same reason: attribution, not authority — the job's gate is
104
+ * the operator's, and its budget is the person's settings whoever asked.
105
+ */
106
+ requestedBy: text("requested_by")
99
107
  }, (table) => [
100
108
  index("app_jobs_identity_idx").on(table.identity, table.requestedAt),
101
109
  index("app_jobs_status_idx").on(table.status),
@@ -646,6 +654,52 @@ var launches = pgTable(
646
654
  // The screen asks 'what has been launched from this project, the latest first'.
647
655
  (table) => [index("launches_project_idx").on(table.projectId, table.at)]
648
656
  );
657
+ var handoffs = pgTable(
658
+ "handoffs",
659
+ {
660
+ /** `hnd_` + random: a receipt is born of an event, and two handoffs of one conversation are two rows. */
661
+ id: text("id").primaryKey(),
662
+ projectId: text("project_id").references(() => projects.id, { onDelete: "set null" }),
663
+ /** The folder the conversation belongs to, kept even when it is not a catalog project. */
664
+ cwd: text("cwd").notNull(),
665
+ /** The source title, redacted before it is stored. */
666
+ title: text("title"),
667
+ /** Canonical provider ids: `claude-cli`, `codex-cli`, `opencode`, `gemini-cli`… */
668
+ sourceAgent: text("source_agent").notNull(),
669
+ sourceSessionId: text("source_session_id").notNull(),
670
+ sourcePath: text("source_path").notNull(),
671
+ /** sha256 over the normalized turns: the key that says 'this one was already handed to that agent'. */
672
+ sourceHash: text("source_hash").notNull(),
673
+ targetAgent: text("target_agent").notNull(),
674
+ /**
675
+ * `cli` or `app`: the terminal, or the vendor's desktop app, which shares the store. The file
676
+ * is the same either way; the surface decides which door the receipt opens (a command or a
677
+ * deep link) and keys the 'already handed to Claude (app)' check together with the agent.
678
+ */
679
+ targetSurface: text("target_surface").$type().notNull().default("cli"),
680
+ targetSessionId: text("target_session_id").notNull(),
681
+ targetPath: text("target_path").notNull(),
682
+ tier: text("tier").$type().notNull(),
683
+ turns: integer("turns").notNull(),
684
+ bytes: integer("bytes").notNull(),
685
+ dropped: jsonb("dropped").$type().notNull().default({ thinking: 0, images: 0, subagents: 0, offloaded: 0, secrets: 0, other: 0 }),
686
+ resumeCommand: text("resume_command"),
687
+ /**
688
+ * The agent that asked for it over the MCP channel (`panoma_handoff`), by the name its key
689
+ * was issued under; `null` when a person did, from the screen or the terminal. Attribution,
690
+ * not authority: the channel's gate is the operator's, and the name is what the receipt says
691
+ * afterwards.
692
+ */
693
+ requestedBy: text("requested_by"),
694
+ createdAt: timestamp("created_at", { withTimezone: true }).notNull().defaultNow()
695
+ },
696
+ (table) => [
697
+ // The project card and the screen ask 'what was handed off from here, the latest first'.
698
+ index("handoffs_project_idx").on(table.projectId, table.createdAt),
699
+ // The panel asks 'was this conversation already handed to that agent?' before writing again.
700
+ index("handoffs_source_idx").on(table.sourceHash, table.targetAgent)
701
+ ]
702
+ );
649
703
  var runs = pgTable(
650
704
  "runs",
651
705
  {
@@ -1165,8 +1219,9 @@ var modelCalls = pgTable(
1165
1219
  id: text("id").primaryKey(),
1166
1220
  /**
1167
1221
  * Which organ spent: look · distill · classify · synthesize · memory · ask · rehearse ·
1168
- * episodes · describe · review · probe. The list lives in `apps/web/lib/spend-settings.ts`
1169
- * (`FAMILY_KINDS`), and the budgets are applied per family there, not per kind.
1222
+ * episodes · describe · review · app · handoff · probe. The list lives in
1223
+ * `apps/web/lib/spend-settings.ts` (`FAMILY_KINDS`), and the budgets are applied per family
1224
+ * there, not per kind.
1170
1225
  */
1171
1226
  kind: text("kind").notNull(),
1172
1227
  provider: text("provider").notNull(),
@@ -1278,6 +1333,7 @@ export {
1278
1333
  consultations,
1279
1334
  servings,
1280
1335
  launches,
1336
+ handoffs,
1281
1337
  runs,
1282
1338
  decisions,
1283
1339
  exclusions,