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.
- package/README.md +1 -0
- package/app/BUILD-INFO.json +3 -3
- package/app/apps/web/.next-bundle/BUILD_ID +1 -1
- package/app/apps/web/.next-bundle/app-build-manifest.json +414 -322
- package/app/apps/web/.next-bundle/app-path-routes-manifest.json +45 -33
- package/app/apps/web/.next-bundle/build-manifest.json +3 -3
- package/app/apps/web/.next-bundle/prerender-manifest.json +9 -9
- package/app/apps/web/.next-bundle/required-server-files.json +5 -4
- package/app/apps/web/.next-bundle/routes-manifest.json +14 -0
- package/app/apps/web/.next-bundle/server/app/(app)/agents/page.js +2 -2
- package/app/apps/web/.next-bundle/server/app/(app)/agents/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/(app)/ai/page.js +2 -2
- package/app/apps/web/.next-bundle/server/app/(app)/ai/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/(app)/apps/[id]/page.js +2 -2
- package/app/apps/web/.next-bundle/server/app/(app)/apps/[id]/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/(app)/apps/page.js +2 -2
- package/app/apps/web/.next-bundle/server/app/(app)/apps/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/(app)/bridge/page.js +2 -2
- package/app/apps/web/.next-bundle/server/app/(app)/bridge/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/(app)/copies/page.js +2 -2
- package/app/apps/web/.next-bundle/server/app/(app)/copies/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/(app)/credentials/page.js +2 -2
- package/app/apps/web/.next-bundle/server/app/(app)/credentials/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/(app)/disk/page.js +2 -2
- package/app/apps/web/.next-bundle/server/app/(app)/disk/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/(app)/handoff/page.js +2 -0
- package/app/apps/web/.next-bundle/server/app/(app)/handoff/page_client-reference-manifest.js +1 -0
- package/app/apps/web/.next-bundle/server/app/(app)/hidden/page.js +2 -2
- package/app/apps/web/.next-bundle/server/app/(app)/hidden/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/(app)/p/[slug]/page.js +2 -2
- package/app/apps/web/.next-bundle/server/app/(app)/p/[slug]/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/(app)/p/[slug]/video/page.js +2 -2
- package/app/apps/web/.next-bundle/server/app/(app)/p/[slug]/video/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/(app)/packages/page.js +2 -2
- package/app/apps/web/.next-bundle/server/app/(app)/packages/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/(app)/page.js +2 -2
- package/app/apps/web/.next-bundle/server/app/(app)/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/(app)/runs/[id]/page.js +2 -2
- package/app/apps/web/.next-bundle/server/app/(app)/runs/[id]/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/(app)/runs/page.js +2 -2
- package/app/apps/web/.next-bundle/server/app/(app)/runs/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/(app)/search/page.js +2 -2
- package/app/apps/web/.next-bundle/server/app/(app)/search/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/(app)/spend/page.js +2 -2
- package/app/apps/web/.next-bundle/server/app/(app)/spend/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/(app)/twin/look/page.js +2 -2
- package/app/apps/web/.next-bundle/server/app/(app)/twin/look/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/(app)/twin/page.js +2 -2
- package/app/apps/web/.next-bundle/server/app/(app)/twin/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/(app)/unsaved/page.js +2 -2
- package/app/apps/web/.next-bundle/server/app/(app)/unsaved/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/_not-found/page.js +2 -2
- package/app/apps/web/.next-bundle/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/accounts/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/accounts/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/agent/apps/route.js +1 -0
- package/app/apps/web/.next-bundle/server/app/api/agent/apps/route_client-reference-manifest.js +1 -0
- package/app/apps/web/.next-bundle/server/app/api/agent/consult/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/agent/consult/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/agent/context/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/agent/context/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/agent/conversations/route.js +1 -0
- package/app/apps/web/.next-bundle/server/app/api/agent/conversations/route_client-reference-manifest.js +1 -0
- package/app/apps/web/.next-bundle/server/app/api/agent/handoff/route.js +1 -0
- package/app/apps/web/.next-bundle/server/app/api/agent/handoff/route_client-reference-manifest.js +1 -0
- package/app/apps/web/.next-bundle/server/app/api/agent/hello/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/agent/hello/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/agent/journal/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/agent/journal/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/agent/keys/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/agent/keys/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/agent/log/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/agent/log/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/agent/mcp/route.js +2 -2
- package/app/apps/web/.next-bundle/server/app/api/agent/mcp/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/agent/notes/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/agent/notes/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/agent/tasks/[id]/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/agent/tasks/[id]/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/agent/tasks/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/agent/tasks/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/agent/video/cancel/route.js +1 -0
- package/app/apps/web/.next-bundle/server/app/api/agent/video/cancel/route_client-reference-manifest.js +1 -0
- package/app/apps/web/.next-bundle/server/app/api/agent/video/jobs/route.js +1 -0
- package/app/apps/web/.next-bundle/server/app/api/agent/video/jobs/route_client-reference-manifest.js +1 -0
- package/app/apps/web/.next-bundle/server/app/api/agent/video/route.js +1 -0
- package/app/apps/web/.next-bundle/server/app/api/agent/video/route_client-reference-manifest.js +1 -0
- package/app/apps/web/.next-bundle/server/app/api/ai/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/ai/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/apps/[id]/[operation]/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/apps/[id]/[operation]/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/apps/[id]/credentials/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/apps/[id]/credentials/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/apps/[id]/jobs/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/apps/[id]/jobs/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/apps/[id]/legal/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/apps/[id]/legal/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/apps/[id]/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/apps/[id]/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/apps/[id]/settings/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/apps/[id]/settings/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/apps/jobs/[jobId]/artifact/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/apps/jobs/[jobId]/artifact/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/apps/jobs/[jobId]/cancel/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/apps/jobs/[jobId]/cancel/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/apps/jobs/[jobId]/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/apps/jobs/[jobId]/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/apps/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/apps/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/assets/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/assets/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/assignments/launch/route.js +2 -2
- package/app/apps/web/.next-bundle/server/app/api/assignments/launch/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/assignments/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/assignments/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/catalog/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/catalog/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/check/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/check/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/consultations/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/consultations/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/describe/route.js +2 -2
- package/app/apps/web/.next-bundle/server/app/api/describe/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/disk/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/disk/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/enrich/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/enrich/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/environment/route.js +2 -2
- package/app/apps/web/.next-bundle/server/app/api/environment/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/handoff/[id]/route.js +1 -0
- package/app/apps/web/.next-bundle/server/app/api/handoff/[id]/route_client-reference-manifest.js +1 -0
- package/app/apps/web/.next-bundle/server/app/api/handoff/digest/route.js +1 -0
- package/app/apps/web/.next-bundle/server/app/api/handoff/digest/route_client-reference-manifest.js +1 -0
- package/app/apps/web/.next-bundle/server/app/api/handoff/launch/route.js +1 -0
- package/app/apps/web/.next-bundle/server/app/api/handoff/launch/route_client-reference-manifest.js +1 -0
- package/app/apps/web/.next-bundle/server/app/api/handoff/record/route.js +1 -0
- package/app/apps/web/.next-bundle/server/app/api/handoff/record/route_client-reference-manifest.js +1 -0
- package/app/apps/web/.next-bundle/server/app/api/handoff/route.js +1 -0
- package/app/apps/web/.next-bundle/server/app/api/handoff/route_client-reference-manifest.js +1 -0
- package/app/apps/web/.next-bundle/server/app/api/hooks/route.js +2 -2
- package/app/apps/web/.next-bundle/server/app/api/hooks/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/ingest/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/ingest/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/md/apply/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/md/apply/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/md/context/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/md/context/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/md/inspect/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/md/inspect/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/md/repair/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/md/repair/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/md/review/route.js +2 -2
- package/app/apps/web/.next-bundle/server/app/api/md/review/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/memory/export/route.js +2 -2
- package/app/apps/web/.next-bundle/server/app/api/memory/export/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/north/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/north/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/notes/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/notes/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/open/all/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/open/all/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/open/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/open/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/project/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/project/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/rescan/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/rescan/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/roots/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/roots/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/runs/[id]/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/runs/[id]/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/runs/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/runs/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/scale/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/scale/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/search/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/search/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/secrets/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/secrets/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/spend/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/spend/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/tasks/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/tasks/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/today/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/today/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/twin/assign/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/twin/assign/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/twin/classify/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/twin/classify/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/twin/critique/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/twin/critique/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/twin/design/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/twin/design/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/twin/distill/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/twin/distill/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/twin/episodes/learn/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/twin/episodes/learn/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/twin/episodes/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/twin/episodes/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/twin/look/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/twin/look/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/twin/mine/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/twin/mine/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/twin/rehearse/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/twin/rehearse/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/twin/score/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/twin/score/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/twin/shot/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/twin/shot/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/twin/sources/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/twin/sources/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/twin/synthesize/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/twin/synthesize/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/twin/taste/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/twin/taste/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/twin/verdicts/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/twin/verdicts/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/watch/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/api/watch/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/apple-icon.png/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/icon/[id]/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app/icon/[id]/route_client-reference-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/app/icon.png/route.js +1 -1
- package/app/apps/web/.next-bundle/server/app-paths-manifest.json +45 -33
- package/app/apps/web/.next-bundle/server/chunks/1190.js +1 -1
- package/app/apps/web/.next-bundle/server/chunks/1214.js +217 -0
- package/app/apps/web/.next-bundle/server/chunks/1646.js +5 -5
- package/app/apps/web/.next-bundle/server/chunks/2455.js +1 -1
- package/app/apps/web/.next-bundle/server/chunks/2658.js +2 -2
- package/app/apps/web/.next-bundle/server/chunks/305.js +3 -0
- package/app/apps/web/.next-bundle/server/chunks/329.js +1 -0
- package/app/apps/web/.next-bundle/server/chunks/3347.js +1 -1
- package/app/apps/web/.next-bundle/server/chunks/376.js +1 -0
- package/app/apps/web/.next-bundle/server/chunks/3815.js +1 -0
- package/app/apps/web/.next-bundle/server/chunks/3834.js +1 -1
- package/app/apps/web/.next-bundle/server/chunks/3863.js +1 -0
- package/app/apps/web/.next-bundle/server/chunks/3896.js +16 -0
- package/app/apps/web/.next-bundle/server/chunks/4478.js +1 -1
- package/app/apps/web/.next-bundle/server/chunks/4498.js +2 -2
- package/app/apps/web/.next-bundle/server/chunks/4810.js +5 -5
- package/app/apps/web/.next-bundle/server/chunks/5103.js +1 -1
- package/app/apps/web/.next-bundle/server/chunks/{5975.js → 5676.js} +1 -1
- package/app/apps/web/.next-bundle/server/chunks/5839.js +1 -0
- package/app/apps/web/.next-bundle/server/chunks/6206.js +1 -0
- package/app/apps/web/.next-bundle/server/chunks/6384.js +1 -0
- package/app/apps/web/.next-bundle/server/chunks/6913.js +7 -7
- package/app/apps/web/.next-bundle/server/chunks/{2256.js → 7011.js} +2 -2
- package/app/apps/web/.next-bundle/server/chunks/7245.js +1 -1
- package/app/apps/web/.next-bundle/server/chunks/7400.js +3 -0
- package/app/apps/web/.next-bundle/server/chunks/7498.js +2 -0
- package/app/apps/web/.next-bundle/server/chunks/7957.js +1 -1
- package/app/apps/web/.next-bundle/server/chunks/8404.js +1 -1
- package/app/apps/web/.next-bundle/server/chunks/8441.js +1 -0
- package/app/apps/web/.next-bundle/server/chunks/8463.js +1 -1
- package/app/apps/web/.next-bundle/server/chunks/9006.js +3 -0
- package/app/apps/web/.next-bundle/server/chunks/9128.js +1 -0
- package/app/apps/web/.next-bundle/server/chunks/{6693.js → 9226.js} +2 -2
- package/app/apps/web/.next-bundle/server/chunks/9441.js +1 -0
- package/app/apps/web/.next-bundle/server/chunks/9511.js +16 -0
- package/app/apps/web/.next-bundle/server/functions-config-manifest.json +14 -8
- package/app/apps/web/.next-bundle/server/middleware-build-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/middleware-manifest.json +5 -5
- package/app/apps/web/.next-bundle/server/middleware.js +2 -2
- package/app/apps/web/.next-bundle/server/next-font-manifest.js +1 -1
- package/app/apps/web/.next-bundle/server/next-font-manifest.json +1 -1
- package/app/apps/web/.next-bundle/server/pages/500.html +1 -1
- package/app/apps/web/.next-bundle/server/server-reference-manifest.json +1 -1
- package/app/apps/web/.next-bundle/static/chunks/1369-514f421b74ddd546.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/{2202-897aaad3cd785ea6.js → 2202-320ee3883061ca36.js} +1 -1
- package/app/apps/web/.next-bundle/static/chunks/2575-e53eff318f43e123.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/2921-92c9a83559025278.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/2948-db3dde2d3c76f184.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/4189-0adcbb5b786fe4ed.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/7f092448-875cfd730dc78b44.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/(app)/agents/{page-28b11f831b7bc8c4.js → page-be3b13d1301a5855.js} +1 -1
- package/app/apps/web/.next-bundle/static/chunks/app/(app)/ai/{page-8b5fe63986bf3757.js → page-beb96e7f7a56ac65.js} +1 -1
- package/app/apps/web/.next-bundle/static/chunks/app/(app)/apps/[id]/{page-dc2c3a7874636c29.js → page-7fd561dfea561bee.js} +1 -1
- package/app/apps/web/.next-bundle/static/chunks/app/(app)/apps/page-ba0da767076b59ee.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/(app)/bridge/page-b8cc7ef93c7a01f7.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/(app)/copies/page-1c5bac527b81fbfb.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/(app)/credentials/{page-0c3307d9cff31e71.js → page-db952949fd680244.js} +1 -1
- package/app/apps/web/.next-bundle/static/chunks/app/(app)/disk/{page-13cd17998c4b3c05.js → page-58dba9a693f3efd1.js} +1 -1
- package/app/apps/web/.next-bundle/static/chunks/app/(app)/error-2c3f75f2c68c6bab.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/(app)/handoff/page-af0790c554af2371.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/(app)/hidden/page-a2f95d21457cf062.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/(app)/layout-2f357c79701ed83e.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/(app)/p/[slug]/page-ea0ecbae2d960666.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/(app)/p/[slug]/video/page-51409af610218587.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/(app)/packages/page-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/(app)/page-ad2cd4e236fd2f60.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/(app)/runs/[id]/{page-0f664082168a49b2.js → page-75c179ccca63a724.js} +1 -1
- package/app/apps/web/.next-bundle/static/chunks/app/(app)/runs/page-1c5bac527b81fbfb.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/(app)/search/{page-0c57c71f581cdf40.js → page-5f61bffc868d47cc.js} +1 -1
- package/app/apps/web/.next-bundle/static/chunks/app/(app)/spend/page-fce603598ab4b457.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/(app)/twin/look/{page-a1f666c611d55a0c.js → page-e8582a3dd4da47bb.js} +1 -1
- package/app/apps/web/.next-bundle/static/chunks/app/(app)/twin/{page-c7212909b051736c.js → page-6e103fc5ed54eabe.js} +1 -1
- package/app/apps/web/.next-bundle/static/chunks/app/(app)/unsaved/page-433663c1b9556d04.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/_not-found/page-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/api/accounts/route-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/api/agent/apps/route-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/api/agent/consult/route-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/api/agent/context/route-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/api/agent/conversations/route-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/api/agent/handoff/route-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/api/agent/hello/route-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/api/agent/journal/route-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/api/agent/keys/route-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/api/agent/log/route-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/api/agent/mcp/route-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/api/agent/notes/route-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/api/agent/tasks/[id]/route-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/api/agent/tasks/route-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/api/agent/video/cancel/route-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/api/agent/video/jobs/route-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/api/agent/video/route-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/api/ai/route-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/api/apps/[id]/[operation]/route-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/api/apps/[id]/credentials/route-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/api/apps/[id]/jobs/route-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/api/apps/[id]/legal/route-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/api/apps/[id]/route-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/api/apps/[id]/settings/route-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/api/apps/jobs/[jobId]/artifact/route-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/api/apps/jobs/[jobId]/cancel/route-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/api/apps/jobs/[jobId]/route-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/api/apps/route-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/api/assets/route-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/api/assignments/launch/route-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/api/assignments/route-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/api/catalog/route-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/api/check/route-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/api/consultations/route-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/api/describe/route-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/api/disk/route-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/api/enrich/route-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/api/environment/route-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/api/handoff/[id]/route-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/api/handoff/digest/route-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/api/handoff/launch/route-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/api/handoff/record/route-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/api/handoff/route-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/api/hooks/route-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/api/ingest/route-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/api/md/apply/route-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/api/md/context/route-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/api/md/inspect/route-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/api/md/repair/route-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/api/md/review/route-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/api/memory/export/route-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/api/north/route-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/api/notes/route-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/api/open/all/route-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/api/open/route-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/api/project/route-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/api/rescan/route-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/api/roots/route-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/api/runs/[id]/route-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/api/runs/route-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/api/scale/route-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/api/search/route-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/api/secrets/route-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/api/spend/route-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/api/tasks/route-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/api/today/route-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/api/twin/assign/route-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/api/twin/classify/route-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/api/twin/critique/route-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/api/twin/design/route-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/api/twin/distill/route-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/api/twin/episodes/learn/route-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/api/twin/episodes/route-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/api/twin/look/route-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/api/twin/mine/route-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/api/twin/rehearse/route-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/api/twin/score/route-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/api/twin/shot/route-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/api/twin/sources/route-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/api/twin/synthesize/route-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/api/twin/taste/route-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/api/twin/verdicts/route-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/api/watch/route-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/global-not-found-1c5bac527b81fbfb.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/icon/[id]/route-eac7618918d667c0.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/app/not-found-1c5bac527b81fbfb.js +1 -0
- package/app/apps/web/.next-bundle/static/chunks/{main-app-a35ca295bbc2c578.js → main-app-0bad81d9bc79bc82.js} +1 -1
- package/app/apps/web/.next-bundle/static/css/5fdcdf46b29ffe26.css +1 -0
- package/app/apps/web/.next-bundle/static/phRAJdip0Dtgh1L1Yw0jm/_buildManifest.js +1 -0
- package/app/apps/web/server.js +1 -1
- package/app/node_modules/@panoma/ai/dist/index.d.ts +6 -1
- package/app/node_modules/@panoma/ai/dist/index.js +43 -6
- package/app/node_modules/@panoma/core/dist/index.d.ts +39 -1
- package/app/node_modules/@panoma/core/dist/index.js +149 -57
- package/app/node_modules/@panoma/core/dist/untrusted.d.ts +14 -1
- package/app/node_modules/@panoma/db/dist/{chunk-V6TJYC6N.js → chunk-VTHU57AZ.js} +59 -3
- package/app/node_modules/@panoma/db/dist/{client-B1_3MF0o.d.ts → client-B2H4A_7h.d.ts} +379 -3
- package/app/node_modules/@panoma/db/dist/client.d.ts +1 -1
- package/app/node_modules/@panoma/db/dist/client.js +1 -1
- package/app/node_modules/@panoma/db/dist/index.d.ts +56 -4
- package/app/node_modules/@panoma/db/dist/index.js +104 -27
- package/app/node_modules/@panoma/db/migrations/0060_handoffs.sql +23 -0
- package/app/node_modules/@panoma/db/migrations/0061_handoff_surface.sql +1 -0
- package/app/node_modules/@panoma/db/migrations/0062_handoff_requested_by.sql +1 -0
- package/app/node_modules/@panoma/db/migrations/0063_app_job_requested_by.sql +1 -0
- package/app/node_modules/@panoma/db/migrations/meta/0060_snapshot.json +4258 -0
- package/app/node_modules/@panoma/db/migrations/meta/0061_snapshot.json +4265 -0
- package/app/node_modules/@panoma/db/migrations/meta/0062_snapshot.json +4271 -0
- package/app/node_modules/@panoma/db/migrations/meta/0063_snapshot.json +4277 -0
- package/app/node_modules/@panoma/db/migrations/meta/_journal.json +28 -0
- package/app/node_modules/@panoma/handoff/dist/chunk-4PTSNPI3.js +73 -0
- package/app/node_modules/@panoma/handoff/dist/faults.d.ts +26 -0
- package/app/node_modules/@panoma/handoff/dist/faults.js +14 -0
- package/app/node_modules/@panoma/handoff/dist/index.d.ts +579 -0
- package/app/node_modules/@panoma/handoff/dist/index.js +3364 -0
- package/app/node_modules/@panoma/handoff/package.json +23 -0
- package/app/node_modules/@panoma/mcp/dist/index.js +709 -13
- package/app/node_modules/drizzle-orm/node_modules/.bin/gel +3 -3
- package/dist/{ai-command-IRSVAWYU.js → ai-command-TSSMG7H3.js} +4 -4
- package/dist/{apps-FI2Q2CFP.js → apps-7E4RUVJY.js} +4 -4
- package/dist/{check-command-PPILA25M.js → check-command-RIUGB4HV.js} +4 -4
- package/dist/{chunk-P7ZGHSMO.js → chunk-3QYJKRW6.js} +209 -1
- package/dist/{chunk-5EG7NRL4.js → chunk-3T3WTSPS.js} +147 -57
- package/dist/{chunk-BCHIG2AU.js → chunk-47UUF7B7.js} +2 -2
- package/dist/{chunk-JY7ALFNX.js → chunk-6RVG2VUY.js} +44 -7
- package/dist/{chunk-2MKBCYVH.js → chunk-FWSQH4NS.js} +3 -3
- package/dist/{chunk-YQOQAFTY.js → chunk-HHHT2MTQ.js} +2 -2
- package/dist/{chunk-AW6KPPIR.js → chunk-WAI2SCFY.js} +22 -4
- package/dist/{dist-NQIOBJFO.js → dist-F3N6LCV6.js} +2 -2
- package/dist/{dist-G32QKT7H.js → dist-PQLBVRZQ.js} +7 -1
- package/dist/{dist-F5A5RVCK.js → dist-RNXJD4VL.js} +1 -1
- package/dist/handoff-command-NGSYPGWW.js +3876 -0
- package/dist/index.js +47 -16
- package/dist/{md-command-Q4M2YBEH.js → md-command-PYD3SPHA.js} +3 -3
- package/dist/{memory-command-IXVQSADX.js → memory-command-BWP52OQS.js} +3 -3
- package/dist/{next-command-2PXBP5OR.js → next-command-NFDGQMHO.js} +4 -4
- package/dist/{north-command-XFUNSNPH.js → north-command-SKBVZEGK.js} +4 -4
- package/dist/{review-command-6AH7MVKP.js → review-command-SMYI7XKH.js} +2 -2
- package/dist/{spend-command-DA36GLNI.js → spend-command-NYAELLRP.js} +3 -3
- package/dist/{twin-command-HYEG2WPA.js → twin-command-M25PTHLP.js} +9 -8
- package/dist/{video-TWUW2L36.js → video-QKEQ2FGR.js} +6 -6
- package/npm-shrinkwrap.json +2 -2
- package/package.json +3 -2
- package/app/apps/web/.next-bundle/server/chunks/1602.js +0 -3
- package/app/apps/web/.next-bundle/server/chunks/3088.js +0 -16
- package/app/apps/web/.next-bundle/server/chunks/3768.js +0 -3
- package/app/apps/web/.next-bundle/server/chunks/5251.js +0 -217
- package/app/apps/web/.next-bundle/server/chunks/5741.js +0 -1
- package/app/apps/web/.next-bundle/server/chunks/5941.js +0 -1
- package/app/apps/web/.next-bundle/server/chunks/7581.js +0 -1
- package/app/apps/web/.next-bundle/server/chunks/8384.js +0 -1
- package/app/apps/web/.next-bundle/server/chunks/8990.js +0 -2
- package/app/apps/web/.next-bundle/static/chunks/1369-8f6dde7e48bc4684.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/2340-11b365d374b2be7b.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/2575-62182d00e5cf3115.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/261-1c2829beaca77dc9.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/7f092448-e07c21e2897ac52e.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/(app)/apps/page-00ec4bf42a14ac17.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/(app)/bridge/page-86a819d6d7f65cd0.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/(app)/copies/page-69ee3fc638b1eecf.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/(app)/error-4706c73d842251e2.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/(app)/hidden/page-55639b16ccebad95.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/(app)/layout-7f3d387ae540018d.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/(app)/p/[slug]/page-c3c3a9be458adeed.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/(app)/p/[slug]/video/page-088684f252e3d59c.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/(app)/packages/page-de6e3e5d6198c075.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/(app)/page-6cf474454fb2ea5e.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/(app)/runs/page-69ee3fc638b1eecf.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/(app)/spend/page-201b626f17f11eeb.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/(app)/unsaved/page-c545489e991b83d2.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/_not-found/page-de6e3e5d6198c075.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/api/accounts/route-de6e3e5d6198c075.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/api/agent/consult/route-de6e3e5d6198c075.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/api/agent/context/route-de6e3e5d6198c075.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/api/agent/hello/route-de6e3e5d6198c075.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/api/agent/journal/route-de6e3e5d6198c075.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/api/agent/keys/route-de6e3e5d6198c075.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/api/agent/log/route-de6e3e5d6198c075.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/api/agent/mcp/route-de6e3e5d6198c075.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/api/agent/notes/route-de6e3e5d6198c075.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/api/agent/tasks/[id]/route-de6e3e5d6198c075.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/api/agent/tasks/route-de6e3e5d6198c075.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/api/ai/route-de6e3e5d6198c075.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/api/apps/[id]/[operation]/route-de6e3e5d6198c075.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/api/apps/[id]/credentials/route-de6e3e5d6198c075.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/api/apps/[id]/jobs/route-de6e3e5d6198c075.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/api/apps/[id]/legal/route-de6e3e5d6198c075.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/api/apps/[id]/route-de6e3e5d6198c075.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/api/apps/[id]/settings/route-de6e3e5d6198c075.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/api/apps/jobs/[jobId]/artifact/route-de6e3e5d6198c075.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/api/apps/jobs/[jobId]/cancel/route-de6e3e5d6198c075.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/api/apps/jobs/[jobId]/route-de6e3e5d6198c075.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/api/apps/route-de6e3e5d6198c075.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/api/assets/route-de6e3e5d6198c075.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/api/assignments/launch/route-de6e3e5d6198c075.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/api/assignments/route-de6e3e5d6198c075.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/api/catalog/route-de6e3e5d6198c075.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/api/check/route-de6e3e5d6198c075.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/api/consultations/route-de6e3e5d6198c075.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/api/describe/route-de6e3e5d6198c075.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/api/disk/route-de6e3e5d6198c075.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/api/enrich/route-de6e3e5d6198c075.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/api/environment/route-de6e3e5d6198c075.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/api/hooks/route-de6e3e5d6198c075.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/api/ingest/route-de6e3e5d6198c075.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/api/md/apply/route-de6e3e5d6198c075.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/api/md/context/route-de6e3e5d6198c075.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/api/md/inspect/route-de6e3e5d6198c075.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/api/md/repair/route-de6e3e5d6198c075.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/api/md/review/route-de6e3e5d6198c075.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/api/memory/export/route-de6e3e5d6198c075.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/api/north/route-de6e3e5d6198c075.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/api/notes/route-de6e3e5d6198c075.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/api/open/all/route-de6e3e5d6198c075.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/api/open/route-de6e3e5d6198c075.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/api/project/route-de6e3e5d6198c075.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/api/rescan/route-de6e3e5d6198c075.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/api/roots/route-de6e3e5d6198c075.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/api/runs/[id]/route-de6e3e5d6198c075.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/api/runs/route-de6e3e5d6198c075.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/api/scale/route-de6e3e5d6198c075.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/api/search/route-de6e3e5d6198c075.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/api/secrets/route-de6e3e5d6198c075.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/api/spend/route-de6e3e5d6198c075.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/api/tasks/route-de6e3e5d6198c075.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/api/today/route-de6e3e5d6198c075.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/api/twin/assign/route-de6e3e5d6198c075.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/api/twin/classify/route-de6e3e5d6198c075.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/api/twin/critique/route-de6e3e5d6198c075.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/api/twin/design/route-de6e3e5d6198c075.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/api/twin/distill/route-de6e3e5d6198c075.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/api/twin/episodes/learn/route-de6e3e5d6198c075.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/api/twin/episodes/route-de6e3e5d6198c075.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/api/twin/look/route-de6e3e5d6198c075.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/api/twin/mine/route-de6e3e5d6198c075.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/api/twin/rehearse/route-de6e3e5d6198c075.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/api/twin/score/route-de6e3e5d6198c075.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/api/twin/shot/route-de6e3e5d6198c075.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/api/twin/sources/route-de6e3e5d6198c075.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/api/twin/synthesize/route-de6e3e5d6198c075.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/api/twin/taste/route-de6e3e5d6198c075.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/api/twin/verdicts/route-de6e3e5d6198c075.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/api/watch/route-de6e3e5d6198c075.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/global-not-found-69ee3fc638b1eecf.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/icon/[id]/route-de6e3e5d6198c075.js +0 -1
- package/app/apps/web/.next-bundle/static/chunks/app/not-found-69ee3fc638b1eecf.js +0 -1
- package/app/apps/web/.next-bundle/static/css/988bfb2024e770b7.css +0 -1
- package/app/apps/web/.next-bundle/static/mhsTm5XiqL98MCgDVB08u/_buildManifest.js +0 -1
- /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
|
-
|
|
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
|
-
|
|
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
|
|
7874
|
-
if (
|
|
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 (
|
|
7880
|
-
|
|
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
|
|
7892
|
-
if (
|
|
7893
|
-
const
|
|
7894
|
-
if (
|
|
7895
|
-
|
|
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
|
-
|
|
7899
|
-
|
|
7900
|
-
|
|
7901
|
-
|
|
7902
|
-
|
|
7903
|
-
|
|
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
|
-
|
|
7912
|
-
|
|
7913
|
-
|
|
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
|
|
1169
|
-
* (`FAMILY_KINDS`), and the budgets are applied per family
|
|
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,
|