tower-studio 0.1.9 → 0.1.10
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/.next/BUILD_ID +1 -1
- package/.next/build-manifest.json +3 -3
- package/.next/cache/.previewinfo +1 -1
- package/.next/cache/.rscinfo +1 -1
- package/.next/cache/.tsbuildinfo +1 -1
- package/.next/diagnostics/route-bundle-stats.json +46 -46
- package/.next/fallback-build-manifest.json +3 -3
- package/.next/prerender-manifest.json +3 -3
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.rsc +1 -1
- package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/_not-found/page/server-reference-manifest.json +23 -23
- package/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +14 -14
- package/.next/server/app/_not-found.segments/_full.segment.rsc +14 -14
- package/.next/server/app/_not-found.segments/_head.segment.rsc +4 -4
- package/.next/server/app/_not-found.segments/_index.segment.rsc +9 -9
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/api/browse-fs/route.js.nft.json +1 -1
- package/.next/server/app/api/files/assets/[projectId]/[filename]/route.js.nft.json +1 -1
- package/.next/server/app/api/git/route.js.nft.json +1 -1
- package/.next/server/app/api/internal/assets/[projectId]/[filename]/route.js.nft.json +1 -1
- package/.next/server/app/api/internal/assets/reveal/route.js.nft.json +1 -1
- package/.next/server/app/api/internal/assistant/chat/route.js.nft.json +1 -1
- package/.next/server/app/api/internal/assistant/images/route.js.nft.json +1 -1
- package/.next/server/app/api/internal/assistant/sessions/route.js.nft.json +1 -1
- package/.next/server/app/api/internal/cache/[...segments]/route.js.nft.json +1 -1
- package/.next/server/app/api/internal/hooks/upload/route.js.nft.json +1 -1
- package/.next/server/app/api/internal/terminal/[taskId]/start/route.js.nft.json +1 -1
- package/.next/server/app/api/tasks/[taskId]/merge/route.js.nft.json +1 -1
- package/.next/server/app/index.html +1 -1
- package/.next/server/app/index.rsc +14 -14
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/index.segments/_full.segment.rsc +14 -14
- package/.next/server/app/index.segments/_head.segment.rsc +4 -4
- package/.next/server/app/index.segments/_index.segment.rsc +9 -9
- package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/missions/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/missions/page/server-reference-manifest.json +50 -50
- package/.next/server/app/missions/page.js.nft.json +1 -1
- package/.next/server/app/missions/page_client-reference-manifest.js +1 -1
- package/.next/server/app/onboarding/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/onboarding/page/server-reference-manifest.json +23 -23
- package/.next/server/app/onboarding/page.js.nft.json +1 -1
- package/.next/server/app/onboarding/page_client-reference-manifest.js +1 -1
- package/.next/server/app/onboarding.html +1 -1
- package/.next/server/app/onboarding.rsc +16 -16
- package/.next/server/app/onboarding.segments/_full.segment.rsc +16 -16
- package/.next/server/app/onboarding.segments/_head.segment.rsc +4 -4
- package/.next/server/app/onboarding.segments/_index.segment.rsc +9 -9
- package/.next/server/app/onboarding.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/onboarding.segments/onboarding/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/onboarding.segments/onboarding.segment.rsc +3 -3
- package/.next/server/app/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/page/server-reference-manifest.json +23 -23
- package/.next/server/app/page.js.nft.json +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/settings/page/server-reference-manifest.json +32 -32
- package/.next/server/app/settings/page.js.nft.json +1 -1
- package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings.html +1 -1
- package/.next/server/app/settings.rsc +16 -16
- package/.next/server/app/settings.segments/_full.segment.rsc +16 -16
- package/.next/server/app/settings.segments/_head.segment.rsc +4 -4
- package/.next/server/app/settings.segments/_index.segment.rsc +9 -9
- package/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/settings.segments/settings.segment.rsc +3 -3
- package/.next/server/app/workspaces/[workspaceId]/archive/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/workspaces/[workspaceId]/archive/page/server-reference-manifest.json +75 -75
- package/.next/server/app/workspaces/[workspaceId]/archive/page.js.nft.json +1 -1
- package/.next/server/app/workspaces/[workspaceId]/archive/page_client-reference-manifest.js +1 -1
- package/.next/server/app/workspaces/[workspaceId]/assets/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/workspaces/[workspaceId]/assets/page/server-reference-manifest.json +64 -64
- package/.next/server/app/workspaces/[workspaceId]/assets/page.js.nft.json +1 -1
- package/.next/server/app/workspaces/[workspaceId]/assets/page_client-reference-manifest.js +1 -1
- package/.next/server/app/workspaces/[workspaceId]/notes/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/workspaces/[workspaceId]/notes/page/server-reference-manifest.json +49 -49
- package/.next/server/app/workspaces/[workspaceId]/notes/page.js.nft.json +1 -1
- package/.next/server/app/workspaces/[workspaceId]/notes/page_client-reference-manifest.js +1 -1
- package/.next/server/app/workspaces/[workspaceId]/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/workspaces/[workspaceId]/page/server-reference-manifest.json +51 -51
- package/.next/server/app/workspaces/[workspaceId]/page.js.nft.json +1 -1
- package/.next/server/app/workspaces/[workspaceId]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/page/server-reference-manifest.json +23 -23
- package/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/page.js.nft.json +1 -1
- package/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/workspaces/[workspaceId]/tasks/[taskId]/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/workspaces/[workspaceId]/tasks/[taskId]/page/server-reference-manifest.json +56 -56
- package/.next/server/app/workspaces/[workspaceId]/tasks/[taskId]/page.js.nft.json +1 -1
- package/.next/server/app/workspaces/[workspaceId]/tasks/[taskId]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/workspaces/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/workspaces/page/server-reference-manifest.json +39 -39
- package/.next/server/app/workspaces/page.js.nft.json +1 -1
- package/.next/server/app/workspaces/page_client-reference-manifest.js +1 -1
- package/.next/server/chunks/10ge_next_dist_esm_build_templates_app-route_13~vb_i.js +2 -2
- package/.next/server/chunks/[root-of-the-server]__043lk8~._.js +2 -2
- package/.next/server/chunks/ssr/0~.g_src_app_workspaces_[workspaceId]_tasks_[taskId]_task-page-client_tsx_0bbseig._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0.8y0n9._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__01ws4-7._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__02ipahf._.js +1 -1
- package/.next/server/chunks/ssr/{[root-of-the-server]__0i1tzvg._.js → [root-of-the-server]__08_0ex9._.js} +2 -2
- package/.next/server/chunks/ssr/[root-of-the-server]__0bk3s4l._.js +1 -1
- package/.next/server/chunks/ssr/{[root-of-the-server]__0i52qt7._.js → [root-of-the-server]__0bo1n69._.js} +2 -2
- package/.next/server/chunks/ssr/[root-of-the-server]__0ld6_w6._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0l~dc3x._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0rs7pkn._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0sysz2q._.js +3 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__0y-lkvf._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__12f810l._.js +1 -1
- package/.next/server/chunks/ssr/tower_0donrdk._.js +3 -0
- package/.next/server/chunks/ssr/{tower_0cmuq4n._.js → tower_0i9k4a6._.js} +2 -2
- package/.next/server/chunks/ssr/tower_0kl_bfy._.js +1 -1
- package/.next/server/chunks/ssr/tower_0m_uudm._.js +3 -0
- package/.next/server/chunks/ssr/{tower_0tjo~2z._.js → tower_0mn8ig7._.js} +2 -2
- package/.next/server/chunks/ssr/tower_0mz4ut.._.js +1 -1
- package/.next/server/chunks/ssr/tower_0pcqezm._.js +1 -1
- package/.next/server/chunks/ssr/{tower_0.csoof._.js → tower_0pmey24._.js} +2 -2
- package/.next/server/chunks/ssr/{tower_0c8unc1._.js → tower_0ut7r._._.js} +2 -2
- package/.next/server/chunks/ssr/tower_0wvk~r.._.js +1 -1
- package/.next/server/chunks/ssr/tower_10p15te._.js +1 -1
- package/.next/server/chunks/ssr/tower_117pzh8._.js +1 -1
- package/.next/server/chunks/ssr/tower_11q5_.m._.js +1 -1
- package/.next/server/chunks/ssr/tower_138qlx5._.js +1 -1
- package/.next/server/chunks/ssr/tower_src_077qk8s._.js +3 -0
- package/.next/server/chunks/ssr/tower_src_actions_agent-actions_ts_0j.e1tn._.js +1 -1
- package/.next/server/chunks/ssr/tower_src_actions_file-actions_ts_0424lna._.js +1 -1
- package/.next/server/chunks/ssr/tower_src_app_missions_missions-client_tsx_0a9vjyr._.js +1 -1
- package/.next/server/chunks/ssr/tower_src_app_onboarding_page_tsx_0_3krz1._.js +1 -1
- package/.next/server/chunks/ssr/tower_src_app_settings_page_tsx_0vo5e-o._.js +1 -1
- package/.next/server/chunks/ssr/tower_src_app_workspaces_[workspaceId]_assets_assets-page-client_tsx_0zfgzhi._.js +1 -1
- package/.next/server/chunks/ssr/tower_src_app_workspaces_[workspaceId]_board-page-client_tsx_0kjp1u0._.js +1 -1
- package/.next/server/chunks/tower_0a-x6m.._.js +1 -1
- package/.next/server/chunks/tower_src_0..vg-t._.js +1 -1
- package/.next/server/instrumentation.js.nft.json +1 -1
- package/.next/server/middleware-build-manifest.js +3 -3
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.js +1 -1
- package/.next/server/server-reference-manifest.json +186 -186
- package/.next/static/chunks/{01499ombtjk9..js → 0-z_mj0p3..hy.js} +1 -1
- package/.next/static/chunks/{0drgc-oztq6o-.css → 04pjsuj.mivbh.css} +1 -1
- package/.next/static/chunks/{04zt_ewq9gd.f.js → 053~3fys7om-7.js} +2 -2
- package/.next/static/chunks/0887ab.hh21q9.js +1 -0
- package/.next/static/chunks/0c7oqfzd78s3-.js +1 -0
- package/.next/static/chunks/{12p4plfwlovc5.js → 0g4scpy5b3a_n.js} +1 -1
- package/.next/static/chunks/{0uukquowg_doj.js → 0ho7y42kl8m7v.js} +1 -1
- package/.next/static/chunks/0iudqcn98ftki.js +1 -0
- package/.next/static/chunks/{0jod832.e8dvp.js → 0j~wmjbqds1dv.js} +1 -1
- package/.next/static/chunks/0mvu29h4.06~b.js +1 -0
- package/.next/static/chunks/{07ll8eylriw_..js → 0rej~f94o9a~6.js} +1 -1
- package/.next/static/chunks/{0_dgukndtuspa.js → 0xi0wi2z6otp9.js} +1 -1
- package/.next/static/chunks/{0465wja5wuj_t.js → 16qoc.u84jlcd.js} +1 -1
- package/.next/static/chunks/17tob96chk6i1.js +1 -0
- package/.next/static/chunks/17zywpt-0o8gl.js +1 -0
- package/.next/static/chunks/{0o0v~cegree8o.js → 185n7s7fwb2j_.js} +1 -1
- package/.next/trace +2 -2
- package/.next/trace-build +1 -1
- package/bin/tower.mjs +36 -8
- package/package.json +10 -4
- package/scripts/generate-prisma-client.js +43 -0
- package/scripts/link-prisma.js +144 -0
- package/scripts/post-tool-hook.js +188 -0
- package/scripts/session-start-hook.js +79 -0
- package/scripts/stop-hook.js +78 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0yuwh~5._.js +0 -3
- package/.next/server/chunks/ssr/tower_005_jvc._.js +0 -3
- package/.next/server/chunks/ssr/tower_0ih8lcc._.js +0 -3
- package/.next/server/chunks/ssr/tower_src_0lq.aoc._.js +0 -3
- package/.next/static/chunks/08kdkf9zhbx5h.js +0 -1
- package/.next/static/chunks/0focg9l2pd5qe.js +0 -1
- package/.next/static/chunks/0v593lcts~8.5.js +0 -1
- package/.next/static/chunks/0yz33_rbgu2sz.js +0 -1
- package/.next/static/chunks/0~2w0fbj7o3fv.js +0 -1
- package/.next/static/chunks/13juk.piouzom.js +0 -1
- /package/.next/static/{uSvLXzMcHlsrWUxtSBOMM → KX5Si-44bPnjdFNmiHDRY}/_buildManifest.js +0 -0
- /package/.next/static/{uSvLXzMcHlsrWUxtSBOMM → KX5Si-44bPnjdFNmiHDRY}/_clientMiddlewareManifest.js +0 -0
- /package/.next/static/{uSvLXzMcHlsrWUxtSBOMM → KX5Si-44bPnjdFNmiHDRY}/_ssgManifest.js +0 -0
package/.next/trace
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
[{"name":"generate-buildid","duration":125,"timestamp":1563988083588,"id":4,"parentId":1,"tags":{},"startTime":1777346500829,"traceId":"cb79c462853c3b82"},{"name":"load-custom-routes","duration":216,"timestamp":1563988083836,"id":5,"parentId":1,"tags":{},"startTime":1777346500829,"traceId":"cb79c462853c3b82"},{"name":"create-dist-dir","duration":249,"timestamp":1563988084068,"id":6,"parentId":1,"tags":{},"startTime":1777346500830,"traceId":"cb79c462853c3b82"},{"name":"clean","duration":143,"timestamp":1563988085249,"id":7,"parentId":1,"tags":{},"startTime":1777346500831,"traceId":"cb79c462853c3b82"},{"name":"discover-routes","duration":10912,"timestamp":1563988091462,"id":8,"parentId":1,"tags":{},"startTime":1777346500837,"traceId":"cb79c462853c3b82"},{"name":"create-root-mapping","duration":50,"timestamp":1563988102403,"id":9,"parentId":1,"tags":{},"startTime":1777346500848,"traceId":"cb79c462853c3b82"},{"name":"generate-route-types","duration":37410,"timestamp":1563988103555,"id":10,"parentId":1,"tags":{},"startTime":1777346500849,"traceId":"cb79c462853c3b82"},{"name":"public-dir-conflict-check","duration":74,"timestamp":1563988141114,"id":11,"parentId":1,"tags":{},"startTime":1777346500887,"traceId":"cb79c462853c3b82"},{"name":"generate-routes-manifest","duration":1959,"timestamp":1563988141233,"id":12,"parentId":1,"tags":{},"startTime":1777346500887,"traceId":"cb79c462853c3b82"},{"name":"run-turbopack","duration":11416611,"timestamp":1563988147272,"id":14,"parentId":1,"tags":{},"startTime":1777346500893,"traceId":"cb79c462853c3b82"},{"name":"turbopack-build-events","duration":44,"timestamp":1563988313372,"id":15,"parentId":1,"tags":{},"startTime":1777346501059,"traceId":"cb79c462853c3b82"},{"name":"run-typescript","duration":6616168,"timestamp":1563999619079,"id":16,"parentId":1,"tags":{},"startTime":1777346512365,"traceId":"cb79c462853c3b82"},{"name":"generate-required-server-files","duration":935,"timestamp":1564006235663,"id":18,"parentId":1,"tags":{},"startTime":1777346518981,"traceId":"cb79c462853c3b82"},{"name":"check-static-error-page","duration":22859,"timestamp":1564006250492,"id":20,"parentId":19,"tags":{},"startTime":1777346518996,"traceId":"cb79c462853c3b82"},{"name":"is-page-static","duration":212907,"timestamp":1564006275163,"id":61,"parentId":22,"tags":{},"startTime":1777346519021,"traceId":"cb79c462853c3b82"},{"name":"check-page","duration":234013,"timestamp":1564006254107,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1777346519000,"traceId":"cb79c462853c3b82"},{"name":"is-page-static","duration":292879,"timestamp":1564006275331,"id":65,"parentId":26,"tags":{},"startTime":1777346519021,"traceId":"cb79c462853c3b82"},{"name":"check-page","duration":310119,"timestamp":1564006258121,"id":26,"parentId":19,"tags":{"page":"/api/git"},"startTime":1777346519004,"traceId":"cb79c462853c3b82"},{"name":"is-page-static","duration":293037,"timestamp":1564006275241,"id":64,"parentId":25,"tags":{},"startTime":1777346519021,"traceId":"cb79c462853c3b82"},{"name":"check-page","duration":310314,"timestamp":1564006257975,"id":25,"parentId":19,"tags":{"page":"/api/files/assets/[projectId]/[filename]"},"startTime":1777346519003,"traceId":"cb79c462853c3b82"},{"name":"is-page-static","duration":293098,"timestamp":1564006275216,"id":63,"parentId":24,"tags":{},"startTime":1777346519021,"traceId":"cb79c462853c3b82"},{"name":"check-page","duration":313832,"timestamp":1564006254487,"id":24,"parentId":19,"tags":{"page":"/api/browse-fs"},"startTime":1777346519000,"traceId":"cb79c462853c3b82"},{"name":"is-page-static","duration":302931,"timestamp":1564006275445,"id":68,"parentId":44,"tags":{},"startTime":1777346519021,"traceId":"cb79c462853c3b82"},{"name":"check-page","duration":313543,"timestamp":1564006264865,"id":44,"parentId":19,"tags":{"page":"/apple-icon.png"},"startTime":1777346519010,"traceId":"cb79c462853c3b82"},{"name":"is-page-static","duration":313969,"timestamp":1564006275557,"id":71,"parentId":47,"tags":{},"startTime":1777346519021,"traceId":"cb79c462853c3b82"},{"name":"check-page","duration":319323,"timestamp":1564006270232,"id":47,"parentId":19,"tags":{"page":"/icon1.png"},"startTime":1777346519016,"traceId":"cb79c462853c3b82"},{"name":"is-page-static","duration":315466,"timestamp":1564006275432,"id":67,"parentId":43,"tags":{},"startTime":1777346519021,"traceId":"cb79c462853c3b82"},{"name":"check-page","duration":326093,"timestamp":1564006264824,"id":43,"parentId":19,"tags":{"page":"/api/tasks/[taskId]/merge"},"startTime":1777346519010,"traceId":"cb79c462853c3b82"},{"name":"is-page-static","duration":315498,"timestamp":1564006275537,"id":69,"parentId":45,"tags":{},"startTime":1777346519021,"traceId":"cb79c462853c3b82"},{"name":"check-page","duration":324970,"timestamp":1564006266072,"id":45,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1777346519011,"traceId":"cb79c462853c3b82"},{"name":"is-page-static","duration":315971,"timestamp":1564006275559,"id":72,"parentId":48,"tags":{},"startTime":1777346519021,"traceId":"cb79c462853c3b82"},{"name":"check-page","duration":319159,"timestamp":1564006272390,"id":48,"parentId":19,"tags":{"page":"/manifest.json"},"startTime":1777346519018,"traceId":"cb79c462853c3b82"},{"name":"is-page-static","duration":316861,"timestamp":1564006277298,"id":73,"parentId":28,"tags":{},"startTime":1777346519023,"traceId":"cb79c462853c3b82"},{"name":"check-page","duration":332699,"timestamp":1564006261488,"id":28,"parentId":19,"tags":{"page":"/api/internal/assets/reveal"},"startTime":1777346519007,"traceId":"cb79c462853c3b82"},{"name":"is-page-static","duration":318744,"timestamp":1564006277681,"id":75,"parentId":32,"tags":{},"startTime":1777346519023,"traceId":"cb79c462853c3b82"},{"name":"check-page","duration":334476,"timestamp":1564006262007,"id":32,"parentId":19,"tags":{"page":"/api/internal/assistant/sessions"},"startTime":1777346519007,"traceId":"cb79c462853c3b82"},{"name":"is-page-static","duration":322131,"timestamp":1564006277857,"id":76,"parentId":33,"tags":{},"startTime":1777346519023,"traceId":"cb79c462853c3b82"},{"name":"check-page","duration":337940,"timestamp":1564006262069,"id":33,"parentId":19,"tags":{"page":"/api/internal/cache/[...segments]"},"startTime":1777346519007,"traceId":"cb79c462853c3b82"},{"name":"is-page-static","duration":325924,"timestamp":1564006275193,"id":62,"parentId":23,"tags":{},"startTime":1777346519021,"traceId":"cb79c462853c3b82"},{"name":"check-page","duration":346709,"timestamp":1564006254431,"id":23,"parentId":19,"tags":{"page":"/api/adapters/test"},"startTime":1777346519000,"traceId":"cb79c462853c3b82"},{"name":"is-page-static","duration":323032,"timestamp":1564006278144,"id":77,"parentId":34,"tags":{},"startTime":1777346519024,"traceId":"cb79c462853c3b82"},{"name":"check-page","duration":339054,"timestamp":1564006262128,"id":34,"parentId":19,"tags":{"page":"/api/internal/hooks/install"},"startTime":1777346519008,"traceId":"cb79c462853c3b82"},{"name":"is-page-static","duration":325025,"timestamp":1564006278316,"id":78,"parentId":35,"tags":{},"startTime":1777346519024,"traceId":"cb79c462853c3b82"},{"name":"check-page","duration":340945,"timestamp":1564006262410,"id":35,"parentId":19,"tags":{"page":"/api/internal/hooks/session"},"startTime":1777346519008,"traceId":"cb79c462853c3b82"},{"name":"is-page-static","duration":330400,"timestamp":1564006275034,"id":60,"parentId":21,"tags":{},"startTime":1777346519020,"traceId":"cb79c462853c3b82"},{"name":"check-page","duration":352077,"timestamp":1564006253397,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1777346518999,"traceId":"cb79c462853c3b82"},{"name":"is-page-static","duration":330571,"timestamp":1564006275400,"id":66,"parentId":42,"tags":{},"startTime":1777346519021,"traceId":"cb79c462853c3b82"},{"name":"check-page","duration":341233,"timestamp":1564006264774,"id":42,"parentId":19,"tags":{"page":"/api/tasks/[taskId]/diff"},"startTime":1777346519010,"traceId":"cb79c462853c3b82"},{"name":"is-page-static","duration":322806,"timestamp":1564006283419,"id":81,"parentId":38,"tags":{},"startTime":1777346519029,"traceId":"cb79c462853c3b82"},{"name":"check-page","duration":341658,"timestamp":1564006264588,"id":38,"parentId":19,"tags":{"page":"/api/internal/notifications/pending"},"startTime":1777346519010,"traceId":"cb79c462853c3b82"},{"name":"is-page-static","duration":333689,"timestamp":1564006275552,"id":70,"parentId":46,"tags":{},"startTime":1777346519021,"traceId":"cb79c462853c3b82"},{"name":"check-page","duration":342932,"timestamp":1564006266332,"id":46,"parentId":19,"tags":{"page":"/icon0.svg"},"startTime":1777346519012,"traceId":"cb79c462853c3b82"},{"name":"is-page-static","duration":339240,"timestamp":1564006277550,"id":74,"parentId":31,"tags":{},"startTime":1777346519023,"traceId":"cb79c462853c3b82"},{"name":"check-page","duration":354904,"timestamp":1564006261945,"id":31,"parentId":19,"tags":{"page":"/api/internal/assistant"},"startTime":1777346519007,"traceId":"cb79c462853c3b82"},{"name":"is-page-static","duration":333698,"timestamp":1564006283304,"id":80,"parentId":37,"tags":{},"startTime":1777346519029,"traceId":"cb79c462853c3b82"},{"name":"check-page","duration":352494,"timestamp":1564006264524,"id":37,"parentId":19,"tags":{"page":"/api/internal/hooks/upload"},"startTime":1777346519010,"traceId":"cb79c462853c3b82"},{"name":"is-page-static","duration":333351,"timestamp":1564006283783,"id":83,"parentId":40,"tags":{},"startTime":1777346519029,"traceId":"cb79c462853c3b82"},{"name":"check-page","duration":352464,"timestamp":1564006264692,"id":40,"parentId":19,"tags":{"page":"/api/internal/terminal/[taskId]/input"},"startTime":1777346519010,"traceId":"cb79c462853c3b82"},{"name":"is-page-static","duration":333340,"timestamp":1564006283902,"id":84,"parentId":41,"tags":{},"startTime":1777346519029,"traceId":"cb79c462853c3b82"},{"name":"check-page","duration":352552,"timestamp":1564006264734,"id":41,"parentId":19,"tags":{"page":"/api/internal/terminal/[taskId]/start"},"startTime":1777346519010,"traceId":"cb79c462853c3b82"},{"name":"is-page-static","duration":335208,"timestamp":1564006284058,"id":85,"parentId":27,"tags":{},"startTime":1777346519029,"traceId":"cb79c462853c3b82"},{"name":"check-page","duration":360995,"timestamp":1564006258291,"id":27,"parentId":19,"tags":{"page":"/api/internal/assets/[projectId]/[filename]"},"startTime":1777346519004,"traceId":"cb79c462853c3b82"},{"name":"is-page-static","duration":336436,"timestamp":1564006286676,"id":86,"parentId":29,"tags":{},"startTime":1777346519032,"traceId":"cb79c462853c3b82"},{"name":"check-page","duration":361479,"timestamp":1564006261652,"id":29,"parentId":19,"tags":{"page":"/api/internal/assistant/chat"},"startTime":1777346519007,"traceId":"cb79c462853c3b82"},{"name":"is-page-static","duration":364533,"timestamp":1564006278477,"id":79,"parentId":36,"tags":{},"startTime":1777346519024,"traceId":"cb79c462853c3b82"},{"name":"check-page","duration":378614,"timestamp":1564006264420,"id":36,"parentId":19,"tags":{"page":"/api/internal/hooks/stop"},"startTime":1777346519010,"traceId":"cb79c462853c3b82"},{"name":"is-page-static","duration":363831,"timestamp":1564006286908,"id":87,"parentId":30,"tags":{},"startTime":1777346519032,"traceId":"cb79c462853c3b82"},{"name":"check-page","duration":388917,"timestamp":1564006261868,"id":30,"parentId":19,"tags":{"page":"/api/internal/assistant/images"},"startTime":1777346519007,"traceId":"cb79c462853c3b82"},{"name":"is-page-static","duration":367080,"timestamp":1564006287511,"id":88,"parentId":50,"tags":{},"startTime":1777346519033,"traceId":"cb79c462853c3b82"},{"name":"check-page","duration":381802,"timestamp":1564006272812,"id":50,"parentId":19,"tags":{"page":"/onboarding"},"startTime":1777346519018,"traceId":"cb79c462853c3b82"},{"name":"is-page-static","duration":367147,"timestamp":1564006287517,"id":89,"parentId":51,"tags":{},"startTime":1777346519033,"traceId":"cb79c462853c3b82"},{"name":"check-page","duration":381702,"timestamp":1564006272967,"id":51,"parentId":19,"tags":{"page":"/"},"startTime":1777346519018,"traceId":"cb79c462853c3b82"},{"name":"is-page-static","duration":378841,"timestamp":1564006283641,"id":82,"parentId":39,"tags":{},"startTime":1777346519029,"traceId":"cb79c462853c3b82"},{"name":"check-page","duration":397861,"timestamp":1564006264646,"id":39,"parentId":19,"tags":{"page":"/api/internal/terminal/[taskId]/buffer"},"startTime":1777346519010,"traceId":"cb79c462853c3b82"},{"name":"is-page-static","duration":377659,"timestamp":1564006287532,"id":95,"parentId":58,"tags":{},"startTime":1777346519033,"traceId":"cb79c462853c3b82"},{"name":"check-page","duration":391963,"timestamp":1564006273253,"id":58,"parentId":19,"tags":{"page":"/workspaces/[workspaceId]/tasks/[taskId]"},"startTime":1777346519019,"traceId":"cb79c462853c3b82"},{"name":"is-page-static","duration":381266,"timestamp":1564006287535,"id":96,"parentId":49,"tags":{},"startTime":1777346519033,"traceId":"cb79c462853c3b82"},{"name":"check-page","duration":396176,"timestamp":1564006272660,"id":49,"parentId":19,"tags":{"page":"/missions"},"startTime":1777346519018,"traceId":"cb79c462853c3b82"},{"name":"is-page-static","duration":382608,"timestamp":1564006287521,"id":90,"parentId":52,"tags":{},"startTime":1777346519033,"traceId":"cb79c462853c3b82"},{"name":"check-page","duration":397217,"timestamp":1564006273013,"id":52,"parentId":19,"tags":{"page":"/settings"},"startTime":1777346519018,"traceId":"cb79c462853c3b82"},{"name":"is-page-static","duration":385745,"timestamp":1564006287523,"id":91,"parentId":53,"tags":{},"startTime":1777346519033,"traceId":"cb79c462853c3b82"},{"name":"check-page","duration":400240,"timestamp":1564006273048,"id":53,"parentId":19,"tags":{"page":"/workspaces/[workspaceId]/archive"},"startTime":1777346519018,"traceId":"cb79c462853c3b82"},{"name":"is-page-static","duration":386881,"timestamp":1564006287530,"id":94,"parentId":56,"tags":{},"startTime":1777346519033,"traceId":"cb79c462853c3b82"},{"name":"check-page","duration":401274,"timestamp":1564006273154,"id":56,"parentId":19,"tags":{"page":"/workspaces/[workspaceId]"},"startTime":1777346519019,"traceId":"cb79c462853c3b82"},{"name":"is-page-static","duration":388269,"timestamp":1564006287937,"id":98,"parentId":57,"tags":{},"startTime":1777346519033,"traceId":"cb79c462853c3b82"},{"name":"check-page","duration":403058,"timestamp":1564006273191,"id":57,"parentId":19,"tags":{"page":"/workspaces/[workspaceId]/projects/[projectId]"},"startTime":1777346519019,"traceId":"cb79c462853c3b82"},{"name":"is-page-static","duration":396978,"timestamp":1564006287538,"id":97,"parentId":59,"tags":{},"startTime":1777346519033,"traceId":"cb79c462853c3b82"},{"name":"check-page","duration":411246,"timestamp":1564006273294,"id":59,"parentId":19,"tags":{"page":"/workspaces"},"startTime":1777346519019,"traceId":"cb79c462853c3b82"},{"name":"is-page-static","duration":416805,"timestamp":1564006287525,"id":92,"parentId":54,"tags":{},"startTime":1777346519033,"traceId":"cb79c462853c3b82"},{"name":"check-page","duration":431285,"timestamp":1564006273087,"id":54,"parentId":19,"tags":{"page":"/workspaces/[workspaceId]/assets"},"startTime":1777346519019,"traceId":"cb79c462853c3b82"},{"name":"is-page-static","duration":417746,"timestamp":1564006287528,"id":93,"parentId":55,"tags":{},"startTime":1777346519033,"traceId":"cb79c462853c3b82"},{"name":"check-page","duration":432163,"timestamp":1564006273118,"id":55,"parentId":19,"tags":{"page":"/workspaces/[workspaceId]/notes"},"startTime":1777346519019,"traceId":"cb79c462853c3b82"},{"name":"static-check","duration":455145,"timestamp":1564006250149,"id":19,"parentId":1,"tags":{},"startTime":1777346518996,"traceId":"cb79c462853c3b82"},{"name":"write-routes-manifest","duration":286,"timestamp":1564006705887,"id":100,"parentId":1,"tags":{},"startTime":1777346519451,"traceId":"cb79c462853c3b82"},{"name":"load-dotenv","duration":14,"timestamp":1564006713181,"id":103,"parentId":102,"tags":{},"startTime":1777346519459,"traceId":"cb79c462853c3b82"},{"name":"run-export-path-map","duration":283,"timestamp":1564006714800,"id":104,"parentId":102,"tags":{},"startTime":1777346519460,"traceId":"cb79c462853c3b82"},{"name":"next-export","duration":279080,"timestamp":1564006712635,"id":102,"parentId":1,"tags":{},"startTime":1777346519458,"traceId":"cb79c462853c3b82"},{"name":"move-exported-app-not-found-","duration":607,"timestamp":1564006992857,"id":105,"parentId":101,"tags":{},"startTime":1777346519738,"traceId":"cb79c462853c3b82"},{"name":"move-exported-app-global-error-","duration":396,"timestamp":1564006993499,"id":106,"parentId":101,"tags":{},"startTime":1777346519739,"traceId":"cb79c462853c3b82"},{"name":"static-generation","duration":286206,"timestamp":1564006708703,"id":101,"parentId":1,"tags":{},"startTime":1777346519454,"traceId":"cb79c462853c3b82"},{"name":"write-routes-manifest","duration":256,"timestamp":1564006995019,"id":107,"parentId":1,"tags":{},"startTime":1777346519740,"traceId":"cb79c462853c3b82"}]
|
|
2
|
-
[{"name":"print-tree-view","duration":
|
|
1
|
+
[{"name":"generate-buildid","duration":109,"timestamp":1573076130986,"id":4,"parentId":1,"tags":{},"startTime":1777355588959,"traceId":"798f05024d81318f"},{"name":"load-custom-routes","duration":207,"timestamp":1573076131211,"id":5,"parentId":1,"tags":{},"startTime":1777355588959,"traceId":"798f05024d81318f"},{"name":"create-dist-dir","duration":171,"timestamp":1573076131432,"id":6,"parentId":1,"tags":{},"startTime":1777355588959,"traceId":"798f05024d81318f"},{"name":"clean","duration":147,"timestamp":1573076132261,"id":7,"parentId":1,"tags":{},"startTime":1777355588960,"traceId":"798f05024d81318f"},{"name":"discover-routes","duration":12680,"timestamp":1573076138911,"id":8,"parentId":1,"tags":{},"startTime":1777355588967,"traceId":"798f05024d81318f"},{"name":"create-root-mapping","duration":52,"timestamp":1573076151622,"id":9,"parentId":1,"tags":{},"startTime":1777355588980,"traceId":"798f05024d81318f"},{"name":"generate-route-types","duration":35642,"timestamp":1573076152765,"id":10,"parentId":1,"tags":{},"startTime":1777355588981,"traceId":"798f05024d81318f"},{"name":"public-dir-conflict-check","duration":44,"timestamp":1573076188525,"id":11,"parentId":1,"tags":{},"startTime":1777355589017,"traceId":"798f05024d81318f"},{"name":"generate-routes-manifest","duration":1923,"timestamp":1573076188608,"id":12,"parentId":1,"tags":{},"startTime":1777355589017,"traceId":"798f05024d81318f"},{"name":"run-turbopack","duration":4711064,"timestamp":1573076194176,"id":14,"parentId":1,"tags":{},"startTime":1777355589022,"traceId":"798f05024d81318f"},{"name":"turbopack-build-events","duration":35,"timestamp":1573076355743,"id":15,"parentId":1,"tags":{},"startTime":1777355589184,"traceId":"798f05024d81318f"},{"name":"run-typescript","duration":6939568,"timestamp":1573080968113,"id":16,"parentId":1,"tags":{},"startTime":1777355593796,"traceId":"798f05024d81318f"},{"name":"generate-required-server-files","duration":7011,"timestamp":1573087910414,"id":18,"parentId":1,"tags":{},"startTime":1777355600739,"traceId":"798f05024d81318f"},{"name":"check-static-error-page","duration":28627,"timestamp":1573087936913,"id":20,"parentId":19,"tags":{},"startTime":1777355600765,"traceId":"798f05024d81318f"},{"name":"is-page-static","duration":196116,"timestamp":1573087966811,"id":61,"parentId":22,"tags":{},"startTime":1777355600795,"traceId":"798f05024d81318f"},{"name":"check-page","duration":217977,"timestamp":1573087945167,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1777355600773,"traceId":"798f05024d81318f"},{"name":"is-page-static","duration":246722,"timestamp":1573087966863,"id":63,"parentId":24,"tags":{},"startTime":1777355600795,"traceId":"798f05024d81318f"},{"name":"check-page","duration":268128,"timestamp":1573087945519,"id":24,"parentId":19,"tags":{"page":"/api/browse-fs"},"startTime":1777355600774,"traceId":"798f05024d81318f"},{"name":"is-page-static","duration":254791,"timestamp":1573087966979,"id":65,"parentId":26,"tags":{},"startTime":1777355600795,"traceId":"798f05024d81318f"},{"name":"check-page","duration":276186,"timestamp":1573087945613,"id":26,"parentId":19,"tags":{"page":"/api/git"},"startTime":1777355600774,"traceId":"798f05024d81318f"},{"name":"is-page-static","duration":265599,"timestamp":1573087966893,"id":64,"parentId":25,"tags":{},"startTime":1777355600795,"traceId":"798f05024d81318f"},{"name":"check-page","duration":286956,"timestamp":1573087945571,"id":25,"parentId":19,"tags":{"page":"/api/files/assets/[projectId]/[filename]"},"startTime":1777355600774,"traceId":"798f05024d81318f"},{"name":"is-page-static","duration":265556,"timestamp":1573087967098,"id":68,"parentId":44,"tags":{},"startTime":1777355600795,"traceId":"798f05024d81318f"},{"name":"check-page","duration":274593,"timestamp":1573087958084,"id":44,"parentId":19,"tags":{"page":"/apple-icon.png"},"startTime":1777355600786,"traceId":"798f05024d81318f"},{"name":"is-page-static","duration":265560,"timestamp":1573087967159,"id":69,"parentId":45,"tags":{},"startTime":1777355600795,"traceId":"798f05024d81318f"},{"name":"check-page","duration":272835,"timestamp":1573087959894,"id":45,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1777355600788,"traceId":"798f05024d81318f"},{"name":"is-page-static","duration":278228,"timestamp":1573087967180,"id":72,"parentId":48,"tags":{},"startTime":1777355600795,"traceId":"798f05024d81318f"},{"name":"check-page","duration":280815,"timestamp":1573087964616,"id":48,"parentId":19,"tags":{"page":"/manifest.json"},"startTime":1777355600793,"traceId":"798f05024d81318f"},{"name":"is-page-static","duration":290513,"timestamp":1573087967178,"id":71,"parentId":47,"tags":{},"startTime":1777355600795,"traceId":"798f05024d81318f"},{"name":"check-page","duration":293738,"timestamp":1573087963980,"id":47,"parentId":19,"tags":{"page":"/icon1.png"},"startTime":1777355600792,"traceId":"798f05024d81318f"},{"name":"is-page-static","duration":295649,"timestamp":1573087966841,"id":62,"parentId":23,"tags":{},"startTime":1777355600795,"traceId":"798f05024d81318f"},{"name":"check-page","duration":317190,"timestamp":1573087945445,"id":23,"parentId":19,"tags":{"page":"/api/adapters/test"},"startTime":1777355600774,"traceId":"798f05024d81318f"},{"name":"is-page-static","duration":295599,"timestamp":1573087967173,"id":70,"parentId":46,"tags":{},"startTime":1777355600795,"traceId":"798f05024d81318f"},{"name":"check-page","duration":302562,"timestamp":1573087960233,"id":46,"parentId":19,"tags":{"page":"/icon0.svg"},"startTime":1777355600788,"traceId":"798f05024d81318f"},{"name":"is-page-static","duration":298536,"timestamp":1573087966681,"id":60,"parentId":21,"tags":{},"startTime":1777355600795,"traceId":"798f05024d81318f"},{"name":"check-page","duration":320967,"timestamp":1573087944323,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1777355600772,"traceId":"798f05024d81318f"},{"name":"is-page-static","duration":299843,"timestamp":1573087968909,"id":76,"parentId":28,"tags":{},"startTime":1777355600797,"traceId":"798f05024d81318f"},{"name":"check-page","duration":321250,"timestamp":1573087947526,"id":28,"parentId":19,"tags":{"page":"/api/internal/assets/reveal"},"startTime":1777355600776,"traceId":"798f05024d81318f"},{"name":"is-page-static","duration":312781,"timestamp":1573087967053,"id":66,"parentId":42,"tags":{},"startTime":1777355600795,"traceId":"798f05024d81318f"},{"name":"check-page","duration":321932,"timestamp":1573087957931,"id":42,"parentId":19,"tags":{"page":"/api/tasks/[taskId]/diff"},"startTime":1777355600786,"traceId":"798f05024d81318f"},{"name":"is-page-static","duration":313261,"timestamp":1573087968532,"id":74,"parentId":31,"tags":{},"startTime":1777355600797,"traceId":"798f05024d81318f"},{"name":"check-page","duration":333862,"timestamp":1573087947946,"id":31,"parentId":19,"tags":{"page":"/api/internal/assistant"},"startTime":1777355600776,"traceId":"798f05024d81318f"},{"name":"is-page-static","duration":314017,"timestamp":1573087968698,"id":75,"parentId":32,"tags":{},"startTime":1777355600797,"traceId":"798f05024d81318f"},{"name":"check-page","duration":334718,"timestamp":1573087948008,"id":32,"parentId":19,"tags":{"page":"/api/internal/assistant/sessions"},"startTime":1777355600776,"traceId":"798f05024d81318f"},{"name":"is-page-static","duration":314650,"timestamp":1573087969383,"id":78,"parentId":35,"tags":{},"startTime":1777355600797,"traceId":"798f05024d81318f"},{"name":"check-page","duration":332931,"timestamp":1573087951119,"id":35,"parentId":19,"tags":{"page":"/api/internal/hooks/session"},"startTime":1777355600779,"traceId":"798f05024d81318f"},{"name":"is-page-static","duration":317386,"timestamp":1573087967086,"id":67,"parentId":43,"tags":{},"startTime":1777355600795,"traceId":"798f05024d81318f"},{"name":"check-page","duration":326506,"timestamp":1573087957982,"id":43,"parentId":19,"tags":{"page":"/api/tasks/[taskId]/merge"},"startTime":1777355600786,"traceId":"798f05024d81318f"},{"name":"is-page-static","duration":316185,"timestamp":1573087969552,"id":79,"parentId":27,"tags":{},"startTime":1777355600798,"traceId":"798f05024d81318f"},{"name":"check-page","duration":340095,"timestamp":1573087945683,"id":27,"parentId":19,"tags":{"page":"/api/internal/assets/[projectId]/[filename]"},"startTime":1777355600774,"traceId":"798f05024d81318f"},{"name":"is-page-static","duration":312344,"timestamp":1573087974752,"id":83,"parentId":38,"tags":{},"startTime":1777355600803,"traceId":"798f05024d81318f"},{"name":"check-page","duration":329377,"timestamp":1573087957734,"id":38,"parentId":19,"tags":{"page":"/api/internal/notifications/pending"},"startTime":1777355600786,"traceId":"798f05024d81318f"},{"name":"is-page-static","duration":312738,"timestamp":1573087974406,"id":81,"parentId":33,"tags":{},"startTime":1777355600803,"traceId":"798f05024d81318f"},{"name":"check-page","duration":339083,"timestamp":1573087948069,"id":33,"parentId":19,"tags":{"page":"/api/internal/cache/[...segments]"},"startTime":1777355600776,"traceId":"798f05024d81318f"},{"name":"is-page-static","duration":321941,"timestamp":1573087974892,"id":84,"parentId":39,"tags":{},"startTime":1777355600803,"traceId":"798f05024d81318f"},{"name":"check-page","duration":339091,"timestamp":1573087957794,"id":39,"parentId":19,"tags":{"page":"/api/internal/terminal/[taskId]/buffer"},"startTime":1777355600786,"traceId":"798f05024d81318f"},{"name":"is-page-static","duration":321939,"timestamp":1573087975031,"id":85,"parentId":40,"tags":{},"startTime":1777355600803,"traceId":"798f05024d81318f"},{"name":"check-page","duration":339149,"timestamp":1573087957845,"id":40,"parentId":19,"tags":{"page":"/api/internal/terminal/[taskId]/input"},"startTime":1777355600786,"traceId":"798f05024d81318f"},{"name":"is-page-static","duration":323367,"timestamp":1573087977870,"id":87,"parentId":37,"tags":{},"startTime":1777355600806,"traceId":"798f05024d81318f"},{"name":"check-page","duration":343671,"timestamp":1573087957589,"id":37,"parentId":19,"tags":{"page":"/api/internal/hooks/upload"},"startTime":1777355600786,"traceId":"798f05024d81318f"},{"name":"is-page-static","duration":329240,"timestamp":1573087972057,"id":80,"parentId":29,"tags":{},"startTime":1777355600800,"traceId":"798f05024d81318f"},{"name":"check-page","duration":353656,"timestamp":1573087947648,"id":29,"parentId":19,"tags":{"page":"/api/internal/assistant/chat"},"startTime":1777355600776,"traceId":"798f05024d81318f"},{"name":"is-page-static","duration":332812,"timestamp":1573087969204,"id":77,"parentId":34,"tags":{},"startTime":1777355600797,"traceId":"798f05024d81318f"},{"name":"check-page","duration":353906,"timestamp":1573087948122,"id":34,"parentId":19,"tags":{"page":"/api/internal/hooks/install"},"startTime":1777355600776,"traceId":"798f05024d81318f"},{"name":"is-page-static","duration":330256,"timestamp":1573087976652,"id":86,"parentId":41,"tags":{},"startTime":1777355600805,"traceId":"798f05024d81318f"},{"name":"check-page","duration":349046,"timestamp":1573087957891,"id":41,"parentId":19,"tags":{"page":"/api/internal/terminal/[taskId]/start"},"startTime":1777355600786,"traceId":"798f05024d81318f"},{"name":"is-page-static","duration":341641,"timestamp":1573087968318,"id":73,"parentId":30,"tags":{},"startTime":1777355600796,"traceId":"798f05024d81318f"},{"name":"check-page","duration":362142,"timestamp":1573087947857,"id":30,"parentId":19,"tags":{"page":"/api/internal/assistant/images"},"startTime":1777355600776,"traceId":"798f05024d81318f"},{"name":"is-page-static","duration":351771,"timestamp":1573087974672,"id":82,"parentId":36,"tags":{},"startTime":1777355600803,"traceId":"798f05024d81318f"},{"name":"check-page","duration":374848,"timestamp":1573087951639,"id":36,"parentId":19,"tags":{"page":"/api/internal/hooks/stop"},"startTime":1777355600780,"traceId":"798f05024d81318f"},{"name":"is-page-static","duration":347956,"timestamp":1573087979437,"id":91,"parentId":53,"tags":{},"startTime":1777355600808,"traceId":"798f05024d81318f"},{"name":"check-page","duration":362205,"timestamp":1573087965228,"id":53,"parentId":19,"tags":{"page":"/workspaces/[workspaceId]/archive"},"startTime":1777355600793,"traceId":"798f05024d81318f"},{"name":"is-page-static","duration":357786,"timestamp":1573087979420,"id":88,"parentId":50,"tags":{},"startTime":1777355600808,"traceId":"798f05024d81318f"},{"name":"check-page","duration":372241,"timestamp":1573087964990,"id":50,"parentId":19,"tags":{"page":"/onboarding"},"startTime":1777355600793,"traceId":"798f05024d81318f"},{"name":"is-page-static","duration":362238,"timestamp":1573087979432,"id":89,"parentId":51,"tags":{},"startTime":1777355600808,"traceId":"798f05024d81318f"},{"name":"check-page","duration":376568,"timestamp":1573087965148,"id":51,"parentId":19,"tags":{"page":"/"},"startTime":1777355600793,"traceId":"798f05024d81318f"},{"name":"is-page-static","duration":363195,"timestamp":1573087979435,"id":90,"parentId":52,"tags":{},"startTime":1777355600808,"traceId":"798f05024d81318f"},{"name":"check-page","duration":377468,"timestamp":1573087965195,"id":52,"parentId":19,"tags":{"page":"/settings"},"startTime":1777355600793,"traceId":"798f05024d81318f"},{"name":"is-page-static","duration":365299,"timestamp":1573087979453,"id":96,"parentId":49,"tags":{},"startTime":1777355600808,"traceId":"798f05024d81318f"},{"name":"check-page","duration":379963,"timestamp":1573087964834,"id":49,"parentId":19,"tags":{"page":"/missions"},"startTime":1777355600793,"traceId":"798f05024d81318f"},{"name":"is-page-static","duration":367228,"timestamp":1573087979445,"id":95,"parentId":58,"tags":{},"startTime":1777355600808,"traceId":"798f05024d81318f"},{"name":"check-page","duration":381249,"timestamp":1573087965439,"id":58,"parentId":19,"tags":{"page":"/workspaces/[workspaceId]/tasks/[taskId]"},"startTime":1777355600794,"traceId":"798f05024d81318f"},{"name":"is-page-static","duration":368191,"timestamp":1573087979459,"id":97,"parentId":57,"tags":{},"startTime":1777355600808,"traceId":"798f05024d81318f"},{"name":"check-page","duration":382275,"timestamp":1573087965381,"id":57,"parentId":19,"tags":{"page":"/workspaces/[workspaceId]/projects/[projectId]"},"startTime":1777355600793,"traceId":"798f05024d81318f"},{"name":"is-page-static","duration":379734,"timestamp":1573087979462,"id":98,"parentId":59,"tags":{},"startTime":1777355600808,"traceId":"798f05024d81318f"},{"name":"check-page","duration":393742,"timestamp":1573087965482,"id":59,"parentId":19,"tags":{"page":"/workspaces"},"startTime":1777355600794,"traceId":"798f05024d81318f"},{"name":"is-page-static","duration":383865,"timestamp":1573087979441,"id":93,"parentId":55,"tags":{},"startTime":1777355600808,"traceId":"798f05024d81318f"},{"name":"check-page","duration":398022,"timestamp":1573087965305,"id":55,"parentId":19,"tags":{"page":"/workspaces/[workspaceId]/notes"},"startTime":1777355600793,"traceId":"798f05024d81318f"},{"name":"is-page-static","duration":397660,"timestamp":1573087979443,"id":94,"parentId":56,"tags":{},"startTime":1777355600808,"traceId":"798f05024d81318f"},{"name":"check-page","duration":411794,"timestamp":1573087965342,"id":56,"parentId":19,"tags":{"page":"/workspaces/[workspaceId]"},"startTime":1777355600793,"traceId":"798f05024d81318f"},{"name":"is-page-static","duration":400183,"timestamp":1573087979439,"id":92,"parentId":54,"tags":{},"startTime":1777355600808,"traceId":"798f05024d81318f"},{"name":"check-page","duration":414370,"timestamp":1573087965263,"id":54,"parentId":19,"tags":{"page":"/workspaces/[workspaceId]/assets"},"startTime":1777355600793,"traceId":"798f05024d81318f"},{"name":"static-check","duration":443138,"timestamp":1573087936509,"id":19,"parentId":1,"tags":{},"startTime":1777355600765,"traceId":"798f05024d81318f"},{"name":"write-routes-manifest","duration":385,"timestamp":1573088380540,"id":100,"parentId":1,"tags":{},"startTime":1777355601209,"traceId":"798f05024d81318f"},{"name":"load-dotenv","duration":26,"timestamp":1573088387611,"id":103,"parentId":102,"tags":{},"startTime":1777355601216,"traceId":"798f05024d81318f"},{"name":"run-export-path-map","duration":325,"timestamp":1573088389215,"id":104,"parentId":102,"tags":{},"startTime":1777355601217,"traceId":"798f05024d81318f"},{"name":"next-export","duration":257392,"timestamp":1573088386978,"id":102,"parentId":1,"tags":{},"startTime":1777355601215,"traceId":"798f05024d81318f"},{"name":"move-exported-app-not-found-","duration":785,"timestamp":1573088645708,"id":105,"parentId":101,"tags":{},"startTime":1777355601474,"traceId":"798f05024d81318f"},{"name":"move-exported-app-global-error-","duration":301,"timestamp":1573088646529,"id":106,"parentId":101,"tags":{},"startTime":1777355601475,"traceId":"798f05024d81318f"},{"name":"static-generation","duration":264553,"timestamp":1573088383074,"id":101,"parentId":1,"tags":{},"startTime":1777355601211,"traceId":"798f05024d81318f"},{"name":"write-routes-manifest","duration":230,"timestamp":1573088647742,"id":107,"parentId":1,"tags":{},"startTime":1777355601476,"traceId":"798f05024d81318f"}]
|
|
2
|
+
[{"name":"print-tree-view","duration":1893,"timestamp":1573088654071,"id":108,"parentId":1,"tags":{},"startTime":1777355601482,"traceId":"798f05024d81318f"},{"name":"write-route-bundle-stats","duration":6831,"timestamp":1573088655979,"id":109,"parentId":1,"tags":{},"startTime":1777355601484,"traceId":"798f05024d81318f"},{"name":"telemetry-flush","duration":241473,"timestamp":1573088662823,"id":110,"parentId":1,"tags":{},"startTime":1777355601491,"traceId":"798f05024d81318f"},{"name":"next-build","duration":12950821,"timestamp":1573075953489,"id":1,"tags":{"buildMode":"default","version":"16.2.1","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1777355588782,"traceId":"798f05024d81318f"}]
|
package/.next/trace-build
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
[{"name":"run-turbopack","duration":
|
|
1
|
+
[{"name":"run-turbopack","duration":4711064,"timestamp":1573076194176,"id":14,"parentId":1,"tags":{},"startTime":1777355589022,"traceId":"798f05024d81318f"},{"name":"turbopack-build-events","duration":35,"timestamp":1573076355743,"id":15,"parentId":1,"tags":{},"startTime":1777355589184,"traceId":"798f05024d81318f"},{"name":"run-typescript","duration":6939568,"timestamp":1573080968113,"id":16,"parentId":1,"tags":{},"startTime":1777355593796,"traceId":"798f05024d81318f"},{"name":"static-check","duration":443138,"timestamp":1573087936509,"id":19,"parentId":1,"tags":{},"startTime":1777355600765,"traceId":"798f05024d81318f"},{"name":"static-generation","duration":264553,"timestamp":1573088383074,"id":101,"parentId":1,"tags":{},"startTime":1777355601211,"traceId":"798f05024d81318f"},{"name":"telemetry-flush","duration":241473,"timestamp":1573088662823,"id":110,"parentId":1,"tags":{},"startTime":1777355601491,"traceId":"798f05024d81318f"},{"name":"next-build","duration":12950821,"timestamp":1573075953489,"id":1,"tags":{"buildMode":"default","version":"16.2.1","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1777355588782,"traceId":"798f05024d81318f"}]
|
package/bin/tower.mjs
CHANGED
|
@@ -16,15 +16,17 @@
|
|
|
16
16
|
|
|
17
17
|
import { existsSync, readFileSync, mkdirSync } from "fs";
|
|
18
18
|
import { join, dirname, resolve } from "path";
|
|
19
|
-
import {
|
|
19
|
+
import { execFileSync } from "child_process";
|
|
20
20
|
import { createServer } from "http";
|
|
21
21
|
import { fileURLToPath } from "url";
|
|
22
22
|
import { parseArgs } from "node:util";
|
|
23
23
|
import { homedir } from "os";
|
|
24
|
+
import { createRequire } from "module";
|
|
24
25
|
|
|
25
26
|
const __filename = fileURLToPath(import.meta.url);
|
|
26
27
|
const __dirname = dirname(__filename);
|
|
27
28
|
const PROJECT_ROOT = resolve(__dirname, "..");
|
|
29
|
+
const require = createRequire(import.meta.url);
|
|
28
30
|
|
|
29
31
|
// ─── Data directory: ~/.tower ───
|
|
30
32
|
const TOWER_DIR = join(homedir(), ".tower");
|
|
@@ -85,15 +87,27 @@ function logError(msg) {
|
|
|
85
87
|
console.error(`\x1b[31m[tower]\x1b[0m ${msg}`);
|
|
86
88
|
}
|
|
87
89
|
|
|
88
|
-
function
|
|
90
|
+
function resolveBin(pkgName, binName) {
|
|
91
|
+
const pkgJsonPath = require.resolve(`${pkgName}/package.json`, { paths: [PROJECT_ROOT] });
|
|
92
|
+
const pkgJson = JSON.parse(readFileSync(pkgJsonPath, "utf-8"));
|
|
93
|
+
const binField = typeof pkgJson.bin === "string" ? pkgJson.bin : pkgJson.bin?.[binName];
|
|
94
|
+
|
|
95
|
+
if (!binField) {
|
|
96
|
+
throw new Error(`No bin entry found for ${pkgName}`);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
return resolve(dirname(pkgJsonPath), binField);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
function run(binPath, args) {
|
|
89
103
|
try {
|
|
90
|
-
|
|
104
|
+
execFileSync(process.execPath, [binPath, ...args], {
|
|
91
105
|
cwd: PROJECT_ROOT,
|
|
92
106
|
stdio: "inherit",
|
|
93
107
|
env: { ...process.env, DATABASE_URL: DB_URL },
|
|
94
108
|
});
|
|
95
109
|
} catch {
|
|
96
|
-
logError(`Command failed: ${
|
|
110
|
+
logError(`Command failed: ${binPath} ${args.join(" ")}`);
|
|
97
111
|
process.exit(1);
|
|
98
112
|
}
|
|
99
113
|
}
|
|
@@ -110,30 +124,44 @@ function ensureDirs() {
|
|
|
110
124
|
}
|
|
111
125
|
}
|
|
112
126
|
|
|
127
|
+
function ensurePrismaClientGenerated() {
|
|
128
|
+
const prismaBin = resolveBin("prisma", "prisma");
|
|
129
|
+
|
|
130
|
+
log("Generating Prisma client...");
|
|
131
|
+
run(prismaBin, ["generate", "--schema", "prisma/schema.prisma"]);
|
|
132
|
+
}
|
|
133
|
+
|
|
113
134
|
async function initDatabase() {
|
|
135
|
+
const prismaBin = resolveBin("prisma", "prisma");
|
|
136
|
+
const tsxBin = resolveBin("tsx", "tsx");
|
|
137
|
+
|
|
114
138
|
log("Initializing Tower...");
|
|
115
139
|
ensureDirs();
|
|
116
140
|
log(`Data directory: ${TOWER_DIR}`);
|
|
141
|
+
ensurePrismaClientGenerated();
|
|
117
142
|
|
|
118
143
|
log("Syncing database schema...");
|
|
119
|
-
run("
|
|
144
|
+
run(prismaBin, ["db", "push", "--skip-generate"]);
|
|
120
145
|
|
|
121
146
|
log("Seeding initial data...");
|
|
122
|
-
run("
|
|
147
|
+
run(tsxBin, ["scripts/init-db.ts"]);
|
|
123
148
|
|
|
124
149
|
log("Initializing full-text search...");
|
|
125
|
-
run("
|
|
150
|
+
run(tsxBin, ["prisma/init-fts.ts"]);
|
|
126
151
|
|
|
127
152
|
log("Initialization complete!");
|
|
128
153
|
}
|
|
129
154
|
|
|
130
155
|
// ─── Commands ───
|
|
131
156
|
async function cmdMigrate() {
|
|
157
|
+
const tsxBin = resolveBin("tsx", "tsx");
|
|
132
158
|
log("Running data migration...");
|
|
133
|
-
run("
|
|
159
|
+
run(tsxBin, ["scripts/migrate-data.ts", "--run"]);
|
|
134
160
|
}
|
|
135
161
|
|
|
136
162
|
async function cmdStart() {
|
|
163
|
+
ensurePrismaClientGenerated();
|
|
164
|
+
|
|
137
165
|
if (needsInit()) {
|
|
138
166
|
await initDatabase();
|
|
139
167
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tower-studio",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.10",
|
|
4
4
|
"description": "AI Task Orchestration Platform — Kanban + Terminal + Code Editor + MCP",
|
|
5
5
|
"bin": {
|
|
6
6
|
"tower": "bin/tower.mjs"
|
|
@@ -12,8 +12,13 @@
|
|
|
12
12
|
"prisma/schema.prisma",
|
|
13
13
|
"prisma/init-fts.ts",
|
|
14
14
|
"scripts/init-db.ts",
|
|
15
|
+
"scripts/generate-prisma-client.js",
|
|
16
|
+
"scripts/link-prisma.js",
|
|
15
17
|
"scripts/migrate-data.ts",
|
|
16
18
|
"scripts/copy-monaco.js",
|
|
19
|
+
"scripts/post-tool-hook.js",
|
|
20
|
+
"scripts/session-start-hook.js",
|
|
21
|
+
"scripts/stop-hook.js",
|
|
17
22
|
"src/mcp/",
|
|
18
23
|
"next.config.ts",
|
|
19
24
|
"tsconfig.json"
|
|
@@ -26,6 +31,7 @@
|
|
|
26
31
|
"build": "next build",
|
|
27
32
|
"build:clean": "rm -rf .next && next build && find .next -name '*.map' -delete",
|
|
28
33
|
"release": "pnpm build:clean && npm pack",
|
|
34
|
+
"release:smoke": "node scripts/release-smoke.js",
|
|
29
35
|
"release:publish": "pnpm build:clean && npm publish",
|
|
30
36
|
"start": "next start",
|
|
31
37
|
"lint": "eslint",
|
|
@@ -40,7 +46,7 @@
|
|
|
40
46
|
"test:e2e": "NO_PROXY=localhost,127.0.0.1 no_proxy=localhost,127.0.0.1 playwright test",
|
|
41
47
|
"changelog": "conventional-changelog -p angular -i CHANGELOG.md -s",
|
|
42
48
|
"mcp": "tsx src/mcp/index.ts",
|
|
43
|
-
"postinstall": "node scripts/copy-monaco.js && node scripts/link-prisma.js"
|
|
49
|
+
"postinstall": "node scripts/copy-monaco.js && node scripts/generate-prisma-client.js && node scripts/link-prisma.js"
|
|
44
50
|
},
|
|
45
51
|
"pnpm": {
|
|
46
52
|
"onlyBuiltDependencies": [
|
|
@@ -83,11 +89,13 @@
|
|
|
83
89
|
"react-resizable-panels": "^2.1.9",
|
|
84
90
|
"react-reverse-portal": "^2.3.0",
|
|
85
91
|
"remark-gfm": "^4.0.1",
|
|
92
|
+
"prisma": "^6.19.2",
|
|
86
93
|
"shadcn": "^4.1.0",
|
|
87
94
|
"simple-git": "^3.36.0",
|
|
88
95
|
"sonner": "^2.0.7",
|
|
89
96
|
"tailwind-merge": "^3.5.0",
|
|
90
97
|
"tw-animate-css": "^1.4.0",
|
|
98
|
+
"tsx": "^4.21.0",
|
|
91
99
|
"ws": "^8.20.0",
|
|
92
100
|
"zod": "^4.3.6",
|
|
93
101
|
"zustand": "^5.0.12"
|
|
@@ -110,9 +118,7 @@
|
|
|
110
118
|
"eslint": "^9",
|
|
111
119
|
"eslint-config-next": "16.2.1",
|
|
112
120
|
"jsdom": "^29.0.1",
|
|
113
|
-
"prisma": "^6.19.2",
|
|
114
121
|
"tailwindcss": "^4",
|
|
115
|
-
"tsx": "^4.21.0",
|
|
116
122
|
"typescript": "^5",
|
|
117
123
|
"vitest": "^4.1.1"
|
|
118
124
|
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
const { execFileSync } = require("child_process");
|
|
3
|
+
const fs = require("fs");
|
|
4
|
+
const path = require("path");
|
|
5
|
+
|
|
6
|
+
const packageRoot = path.join(__dirname, "..");
|
|
7
|
+
|
|
8
|
+
function resolvePrismaBin() {
|
|
9
|
+
const pkgJsonPath = require.resolve("prisma/package.json", { paths: [packageRoot] });
|
|
10
|
+
const pkgJson = JSON.parse(fs.readFileSync(pkgJsonPath, "utf-8"));
|
|
11
|
+
const binField = typeof pkgJson.bin === "string" ? pkgJson.bin : pkgJson.bin?.prisma;
|
|
12
|
+
|
|
13
|
+
if (!binField) {
|
|
14
|
+
throw new Error("No prisma bin entry found");
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
return path.resolve(path.dirname(pkgJsonPath), binField);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
function hasGeneratedClient() {
|
|
21
|
+
try {
|
|
22
|
+
require.resolve(".prisma/client/default", { paths: [packageRoot] });
|
|
23
|
+
return true;
|
|
24
|
+
} catch {
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
if (hasGeneratedClient()) {
|
|
30
|
+
console.log("[generate-prisma] Prisma client already generated");
|
|
31
|
+
process.exit(0);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
try {
|
|
35
|
+
execFileSync(process.execPath, [resolvePrismaBin(), "generate", "--schema", "prisma/schema.prisma"], {
|
|
36
|
+
cwd: packageRoot,
|
|
37
|
+
stdio: "inherit",
|
|
38
|
+
env: process.env,
|
|
39
|
+
});
|
|
40
|
+
} catch (error) {
|
|
41
|
+
console.warn(`[generate-prisma] Failed to generate Prisma client: ${error.message}`);
|
|
42
|
+
process.exit(0);
|
|
43
|
+
}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Turbopack may rewrite external package names with content hashes
|
|
4
|
+
* (for example `@prisma/client-<hash>` or `node-pty-<hash>`).
|
|
5
|
+
* This script scans the build output and creates symlinks so Node.js
|
|
6
|
+
* can resolve those hashed names at runtime after global install.
|
|
7
|
+
*/
|
|
8
|
+
const fs = require("fs");
|
|
9
|
+
const path = require("path");
|
|
10
|
+
|
|
11
|
+
const packageRoot = path.join(__dirname, "..");
|
|
12
|
+
const serverDir = path.join(packageRoot, ".next", "server");
|
|
13
|
+
const supportedPackages = [
|
|
14
|
+
"@prisma/client",
|
|
15
|
+
"node-pty",
|
|
16
|
+
"@vscode/ripgrep",
|
|
17
|
+
"ws",
|
|
18
|
+
];
|
|
19
|
+
|
|
20
|
+
if (!fs.existsSync(serverDir)) {
|
|
21
|
+
process.exit(0);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
function escapeRegExp(value) {
|
|
25
|
+
return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
function collectJsFiles(dir, result = []) {
|
|
29
|
+
if (!fs.existsSync(dir)) return result;
|
|
30
|
+
for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {
|
|
31
|
+
const full = path.join(dir, entry.name);
|
|
32
|
+
if (entry.isDirectory()) {
|
|
33
|
+
collectJsFiles(full, result);
|
|
34
|
+
} else if (entry.name.endsWith(".js")) {
|
|
35
|
+
result.push(full);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return result;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
function detectHashedReferences(files) {
|
|
42
|
+
const matches = new Map();
|
|
43
|
+
|
|
44
|
+
for (const pkg of supportedPackages) {
|
|
45
|
+
matches.set(pkg, new Set());
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
for (const file of files) {
|
|
49
|
+
const content = fs.readFileSync(file, "utf-8");
|
|
50
|
+
for (const pkg of supportedPackages) {
|
|
51
|
+
const pattern = new RegExp(`${escapeRegExp(pkg)}-([0-9a-f]+)`, "g");
|
|
52
|
+
let match;
|
|
53
|
+
while ((match = pattern.exec(content)) !== null) {
|
|
54
|
+
matches.get(pkg).add(match[1]);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
return matches;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
function getPackageParts(pkg) {
|
|
63
|
+
if (pkg.startsWith("@")) {
|
|
64
|
+
const [scope, name] = pkg.split("/");
|
|
65
|
+
return { scope, name };
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
return { scope: null, name: pkg };
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
function getVisiblePackageDir(pkg) {
|
|
72
|
+
const { scope, name } = getPackageParts(pkg);
|
|
73
|
+
return scope
|
|
74
|
+
? path.join(packageRoot, "node_modules", scope, name)
|
|
75
|
+
: path.join(packageRoot, "node_modules", name);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
function collectAliasTargets(pkg) {
|
|
79
|
+
const pkgJsonPath = require.resolve(`${pkg}/package.json`, { paths: [packageRoot] });
|
|
80
|
+
const realPackageDir = path.dirname(pkgJsonPath);
|
|
81
|
+
const visiblePackageDir = getVisiblePackageDir(pkg);
|
|
82
|
+
const candidates = new Map();
|
|
83
|
+
|
|
84
|
+
if (fs.existsSync(visiblePackageDir)) {
|
|
85
|
+
candidates.set(visiblePackageDir, path.dirname(visiblePackageDir));
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
candidates.set(realPackageDir, path.dirname(realPackageDir));
|
|
89
|
+
|
|
90
|
+
return {
|
|
91
|
+
targetDir: visiblePackageDir,
|
|
92
|
+
aliasBaseDirs: [...candidates.values()],
|
|
93
|
+
packageName: getPackageParts(pkg).name,
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
function linkHashedPackage(pkg, hash) {
|
|
98
|
+
let paths;
|
|
99
|
+
try {
|
|
100
|
+
paths = collectAliasTargets(pkg);
|
|
101
|
+
} catch (error) {
|
|
102
|
+
console.warn(`[link-prisma] Cannot resolve ${pkg}: ${error.message}`);
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
if (!fs.existsSync(paths.targetDir)) {
|
|
107
|
+
console.warn(`[link-prisma] Target package directory missing for ${pkg}, skipping`);
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
const linkName = `${paths.packageName}-${hash}`;
|
|
112
|
+
|
|
113
|
+
for (const aliasBaseDir of paths.aliasBaseDirs) {
|
|
114
|
+
const linkPath = path.join(aliasBaseDir, linkName);
|
|
115
|
+
if (fs.existsSync(linkPath)) {
|
|
116
|
+
console.log(`[link-prisma] ${pkg}-${hash} already exists in ${aliasBaseDir}`);
|
|
117
|
+
continue;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
try {
|
|
121
|
+
fs.symlinkSync(paths.targetDir, linkPath, "junction");
|
|
122
|
+
console.log(`[link-prisma] Linked ${pkg}-${hash} -> ${pkg} in ${aliasBaseDir}`);
|
|
123
|
+
} catch (error) {
|
|
124
|
+
console.warn(
|
|
125
|
+
`[link-prisma] Failed to create symlink for ${pkg}-${hash} in ${aliasBaseDir}: ${error.message}`
|
|
126
|
+
);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
const jsFiles = collectJsFiles(serverDir);
|
|
132
|
+
const references = detectHashedReferences(jsFiles);
|
|
133
|
+
let createdAny = false;
|
|
134
|
+
|
|
135
|
+
for (const [pkg, hashes] of references.entries()) {
|
|
136
|
+
for (const hash of hashes) {
|
|
137
|
+
createdAny = true;
|
|
138
|
+
linkHashedPackage(pkg, hash);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
if (!createdAny) {
|
|
143
|
+
console.log("[link-prisma] No hashed external package references found, skipping");
|
|
144
|
+
}
|