tower-studio 0.2.6 → 0.2.8
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/standalone/.next/BUILD_ID +1 -1
- package/.next/standalone/.next/build-manifest.json +3 -3
- package/.next/standalone/.next/prerender-manifest.json +3 -3
- package/.next/standalone/.next/server/app/_global-error.html +1 -1
- package/.next/standalone/.next/server/app/_global-error.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found/page/react-loadable-manifest.json +1 -1
- package/.next/standalone/.next/server/app/_not-found/page/server-reference-manifest.json +43 -43
- package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_not-found.html +1 -1
- package/.next/standalone/.next/server/app/_not-found.rsc +14 -14
- package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +14 -14
- package/.next/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +9 -9
- package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/api/adapters/test/route.js +3 -2
- package/.next/standalone/.next/server/app/api/adapters/test/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/browse-fs/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/git/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/internal/assistant/attachments/route.js +1 -2
- package/.next/standalone/.next/server/app/api/internal/assistant/attachments/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/internal/assistant/chat/route.js +3 -2
- package/.next/standalone/.next/server/app/api/internal/assistant/chat/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/internal/assistant/route.js +1 -2
- package/.next/standalone/.next/server/app/api/internal/assistant/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/internal/assistant/sessions/route.js +3 -2
- package/.next/standalone/.next/server/app/api/internal/assistant/sessions/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/internal/backup/import/route.js +2 -3
- package/.next/standalone/.next/server/app/api/internal/backup/import/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/internal/hooks/install/route.js +3 -2
- package/.next/standalone/.next/server/app/api/internal/hooks/install/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/internal/hooks/stop/route.js +2 -3
- package/.next/standalone/.next/server/app/api/internal/hooks/stop/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/internal/terminal/[taskId]/buffer/route.js +2 -3
- package/.next/standalone/.next/server/app/api/internal/terminal/[taskId]/buffer/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/internal/terminal/[taskId]/input/route.js +2 -3
- package/.next/standalone/.next/server/app/api/internal/terminal/[taskId]/input/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/internal/terminal/[taskId]/start/route.js +3 -4
- package/.next/standalone/.next/server/app/api/internal/terminal/[taskId]/start/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/index.html +1 -1
- package/.next/standalone/.next/server/app/index.rsc +14 -14
- package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +14 -14
- package/.next/standalone/.next/server/app/index.segments/_head.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/index.segments/_index.segment.rsc +9 -9
- package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/missions/page/react-loadable-manifest.json +1 -1
- package/.next/standalone/.next/server/app/missions/page/server-reference-manifest.json +75 -75
- package/.next/standalone/.next/server/app/missions/page.js +5 -5
- package/.next/standalone/.next/server/app/missions/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/missions/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/onboarding/page/react-loadable-manifest.json +1 -1
- package/.next/standalone/.next/server/app/onboarding/page/server-reference-manifest.json +43 -43
- package/.next/standalone/.next/server/app/onboarding/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/onboarding/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/onboarding.html +1 -1
- package/.next/standalone/.next/server/app/onboarding.rsc +16 -16
- package/.next/standalone/.next/server/app/onboarding.segments/_full.segment.rsc +16 -16
- package/.next/standalone/.next/server/app/onboarding.segments/_head.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/onboarding.segments/_index.segment.rsc +9 -9
- package/.next/standalone/.next/server/app/onboarding.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/onboarding.segments/onboarding/__PAGE__.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/onboarding.segments/onboarding.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/page/react-loadable-manifest.json +1 -1
- package/.next/standalone/.next/server/app/page/server-reference-manifest.json +43 -43
- package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/settings/page/react-loadable-manifest.json +1 -1
- package/.next/standalone/.next/server/app/settings/page/server-reference-manifest.json +56 -56
- package/.next/standalone/.next/server/app/settings/page.js +3 -3
- package/.next/standalone/.next/server/app/settings/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/settings.html +1 -1
- package/.next/standalone/.next/server/app/settings.rsc +16 -16
- package/.next/standalone/.next/server/app/settings.segments/_full.segment.rsc +16 -16
- package/.next/standalone/.next/server/app/settings.segments/_head.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/settings.segments/_index.segment.rsc +9 -9
- package/.next/standalone/.next/server/app/settings.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/settings.segments/settings.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/archive/page/react-loadable-manifest.json +1 -1
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/archive/page/server-reference-manifest.json +100 -100
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/archive/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/archive/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/assets/page/react-loadable-manifest.json +1 -1
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/assets/page/server-reference-manifest.json +82 -82
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/assets/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/assets/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/notes/page/react-loadable-manifest.json +1 -1
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/notes/page/server-reference-manifest.json +77 -77
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/notes/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/notes/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/page/react-loadable-manifest.json +1 -1
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/page/server-reference-manifest.json +72 -72
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/page.js +3 -3
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/page/react-loadable-manifest.json +1 -1
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/page/server-reference-manifest.json +43 -43
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/versions/page/react-loadable-manifest.json +1 -1
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/versions/page/server-reference-manifest.json +82 -82
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/versions/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/versions/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/tasks/[taskId]/page/react-loadable-manifest.json +2 -2
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/tasks/[taskId]/page/server-reference-manifest.json +86 -86
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/tasks/[taskId]/page.js +5 -5
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/tasks/[taskId]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/tasks/[taskId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/workspaces/page/react-loadable-manifest.json +1 -1
- package/.next/standalone/.next/server/app/workspaces/page/server-reference-manifest.json +61 -61
- package/.next/standalone/.next/server/app/workspaces/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/workspaces/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/chunks/0se9_next_dist_esm_build_templates_app-route_0h5yr8p.js +1 -1
- package/.next/standalone/.next/server/chunks/0se9_next_dist_esm_build_templates_app-route_0hrprmi.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__00mjz~7._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__028ucbo._.js +4 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__03gi3ue._.js +4 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__07f7~6u._.js +4 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__09p152b._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0_90467._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0b-ib~7._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0c513um._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0d~z6xs._.js +4 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0e44k3f._.js +20 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0h.z9fm._.js +11 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0lioghc._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0mw.9lg._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0ogh_qu._.js +20 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0tys9pv._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__12c9noi._.js +3 -0
- package/.next/standalone/.next/server/chunks/{_0trog_r._.js → _0_eodxe._.js} +1 -1
- package/.next/standalone/.next/server/chunks/_0_w835g._.js +4 -0
- package/.next/standalone/.next/server/chunks/{src_01ztl3b._.js → src_0bkvm8c._.js} +2 -2
- package/.next/standalone/.next/server/chunks/src_0weytpz._.js +1 -1
- package/.next/standalone/.next/server/chunks/src_lib_0ba0ntr._.js +1 -1
- package/.next/standalone/.next/server/chunks/src_lib_ai_0q-~me1._.js +1 -1
- package/.next/standalone/.next/server/chunks/src_lib_ai_0xx6y51._.js +1 -1
- package/.next/standalone/.next/server/chunks/src_lib_ai_providers_index_ts_0.y.3vp._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/0iu._[workspaceId]_projects_[projectId]_versions_version-timeline-client_tsx_07o_kyi._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0.ukame._.js +30 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__006_qh0._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__01j8ix6._.js +30 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__02px.0y._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__03ebsif._.js +3 -3
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0-yld.d._.js → [root-of-the-server]__08901f9._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__08n5qbf._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0ca_ueb._.js +30 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0dsdplu._.js +30 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0l43.5g._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0nwue~m._.js → [root-of-the-server]__0miur_1._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0n.cuy2._.js +30 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0nbj.ml._.js +30 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0ojv-d0._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0pm2~fu._.js +30 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0ps55l6._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0ribsk4._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0rjue04._.js +30 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0souuv~._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0tc6uh2._.js +30 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0v2eslh._.js +30 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0wjg_.n._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0wlmzzq._.js +30 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0wvyks.._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0zbmoit._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0~03tpv._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0~a-emb._.js +30 -0
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0c4.z1s._.js → [root-of-the-server]__121lss.._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__13vdw4w._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/{_03xwww2._.js → _0.knmg-._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{_08t2xag._.js → _0.oe3b8._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/_04b71ua._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_05h.8a~._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_05unqgy._.js +7 -0
- package/.next/standalone/.next/server/chunks/ssr/_0_l8.dg._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{_0f8jvpw._.js → _0_q~7z7._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_0a2m~cj._.js +7 -0
- package/.next/standalone/.next/server/chunks/ssr/{_0i2usny._.js → _0c-49y3._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_0cj9a7y._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{_0vqyzrr._.js → _0d2cdox._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/_0ds6nk2._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{_0rfo51k._.js → _0fq4yrr._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/_0i4__mf._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{_054w82_._.js → _0icu6m~._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/_0ihq._v._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{_00d1y-k._.js → _0kx.c-s._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{_0ah80pn._.js → _0niubv5._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{_0fri5n~._.js → _0pu8x.f._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/_0r9w-k8._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{_0_gqtgq._.js → _0rbai5c._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_0rbctq7._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_0rt8hus._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_0vnfnib._.js +7 -0
- package/.next/standalone/.next/server/chunks/ssr/{_0_~ftjv._.js → _0xvsyc0._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{_0ep3sg_._.js → _0y-7tle._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{_049.box._.js → _0zgu282._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{_086yn8o._.js → _0zszi6-._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_0~80adm._.js +3 -3
- package/.next/standalone/.next/server/chunks/ssr/src_0eufeyj._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/src_13jha60._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_actions_agent-actions_ts_0~wc.sy._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_actions_file-actions_ts_0gcvqwm._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_app_missions_missions-client_tsx_11429lj._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_app_onboarding_page_tsx_0xf7hpz._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_app_settings_page_tsx_0h9v7dr._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_app_workspaces_[workspaceId]_assets_assets-page-client_tsx_0wyzpam._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_app_workspaces_[workspaceId]_board-page-client_tsx_0gips66._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_app_workspaces_[workspaceId]_tasks_[taskId]_task-page-client_tsx_02t7blt._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{src_lib_08n755q._.js → src_lib_07rspg0._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{src_lib_0tb2yya._.js → src_lib_0_8frs_._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{src_lib_123jf_a._.js → src_lib_0fjk3hr._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{src_lib_12ulcxj._.js → src_lib_0g-92s-._.js} +1 -1
- package/.next/standalone/.next/server/middleware-build-manifest.js +3 -3
- package/.next/standalone/.next/server/pages/404.html +1 -1
- package/.next/standalone/.next/server/pages/500.html +1 -1
- package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/server-reference-manifest.json +307 -307
- package/.next/standalone/.next/static/chunks/000k30wpair3e.js +5 -0
- package/.next/standalone/.next/static/chunks/005169or2nxlh.js +1 -0
- package/.next/standalone/.next/static/chunks/{0mfgulw-d49o9.js → 04uepvk5f~_a-.js} +1 -1
- package/.next/standalone/.next/static/chunks/{0nrbltth-7m~e.js → 07vas3ezrfrjg.js} +1 -1
- package/.next/standalone/.next/static/chunks/{0fovq74l0wh7c.js → 087l367c1psb6.js} +1 -1
- package/.next/standalone/.next/static/chunks/{0ee.~~ae-vl_q.js → 09m-rcwwlggjy.js} +1 -1
- package/.next/standalone/.next/static/chunks/{06shpikm5rcmu.js → 0h1-tehkx05kz.js} +1 -1
- package/.next/standalone/.next/static/chunks/0hueiuk3kjujl.js +5 -0
- package/.next/standalone/.next/static/chunks/0ikej72py2xo3.js +1 -0
- package/.next/standalone/.next/static/chunks/0lx08u-wp-gt6.js +2 -0
- package/.next/standalone/.next/static/chunks/0mu8uzvw4gvpf.js +1 -0
- package/.next/standalone/.next/static/chunks/{0r7jm27~cp-vs.js → 0ow7ynd7g7ptv.js} +1 -1
- package/.next/standalone/.next/static/chunks/{0v9ahxdsn0mse.js → 0szduy0e92e5g.js} +1 -1
- package/.next/standalone/.next/static/chunks/{0jscst0zjd2az.js → 0szie_5oyakv1.js} +1 -1
- package/.next/standalone/.next/static/chunks/{0m2lubto0vt0x.js → 0ur-499l_2jrc.js} +1 -1
- package/.next/standalone/.next/static/chunks/{0hxgzql5.szyz.js → 0xs0yzxjkoeas.js} +1 -1
- package/.next/standalone/.next/static/chunks/{07i~~ygu~oi26.js → 0ynbql~9oq0av.js} +1 -1
- package/.next/standalone/.next/static/chunks/{04-7c5m91nvj1.js → 0~88n47ys3due.js} +1 -1
- package/.next/standalone/.next/static/chunks/{186ahmq856rfj.js → 10nil20v3q7~..js} +1 -1
- package/.next/standalone/.next/static/chunks/12rh72_2o79jv.js +1 -0
- package/.next/standalone/.next/static/chunks/156si6w7d-_ct.js +5 -0
- package/.next/standalone/package.json +1 -2
- package/dist/mcp-server.cjs +257 -61
- package/package.json +1 -2
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0.9mj3v._.js +0 -4
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__05353yb._.js +0 -4
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__09h3i6m._.js +0 -4
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0_a8-jq._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0_mbhor._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0dsv3wl._.js +0 -4
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0jmqy_3._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0j~qauc._.js +0 -4
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0nwxhai._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0o4z8qp._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0p_ii~p._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0puw1af._.js +0 -20
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0py_jdb._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0qie1gs._.js +0 -11
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0qz9-me._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0w2w3x.._.js +0 -20
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0.5rcav._.js +0 -30
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__05kq890._.js +0 -30
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__079.nog._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0gaa~xc._.js +0 -30
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0gcf4k3._.js +0 -30
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0ghfuuv._.js +0 -30
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0k3isnk._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0q7ho54._.js +0 -30
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0qe~p-n._.js +0 -30
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0tf4zp_._.js +0 -30
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0vh-egg._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0y.nw7l._.js +0 -30
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__11bequ2._.js +0 -30
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__11ko84j._.js +0 -30
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__12pnl8n._.js +0 -30
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__13k4vkg._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_0-pqb_c._.js +0 -7
- package/.next/standalone/.next/server/chunks/ssr/_05-r00y._.js +0 -7
- package/.next/standalone/.next/server/chunks/ssr/_0h_~oum._.js +0 -7
- package/.next/standalone/.next/server/chunks/ssr/src_095o8x6._.js +0 -3
- package/.next/standalone/.next/static/chunks/0.zipr1bga3lu.js +0 -1
- package/.next/standalone/.next/static/chunks/037-verumdykv.js +0 -5
- package/.next/standalone/.next/static/chunks/082cedbq4pp.-.js +0 -1
- package/.next/standalone/.next/static/chunks/089ktlh~nim1x.js +0 -1
- package/.next/standalone/.next/static/chunks/0m~ltp.wfnbf7.js +0 -5
- package/.next/standalone/.next/static/chunks/0tk-ju9xhoh68.js +0 -5
- package/.next/standalone/.next/static/chunks/0w9x-ap4dcwy..js +0 -1
- package/.next/standalone/.next/static/chunks/17cayeebhpt~w.js +0 -2
- package/src/mcp/db.ts +0 -11
- package/src/mcp/index.ts +0 -15
- package/src/mcp/server.ts +0 -52
- package/src/mcp/tools/__tests__/label-tools.test.ts +0 -140
- package/src/mcp/tools/__tests__/project-tools.test.ts +0 -182
- package/src/mcp/tools/__tests__/report-tools.test.ts +0 -212
- package/src/mcp/tools/__tests__/task-tools.test.ts +0 -418
- package/src/mcp/tools/__tests__/terminal-tools.test.ts +0 -318
- package/src/mcp/tools/__tests__/workspace-tools.test.ts +0 -146
- package/src/mcp/tools/knowledge-tools.ts +0 -100
- package/src/mcp/tools/label-tools.ts +0 -70
- package/src/mcp/tools/note-asset-tools.ts +0 -271
- package/src/mcp/tools/project-tools.ts +0 -79
- package/src/mcp/tools/report-tools.ts +0 -220
- package/src/mcp/tools/search-tools.ts +0 -32
- package/src/mcp/tools/task-tools.ts +0 -272
- package/src/mcp/tools/terminal-tools.ts +0 -154
- package/src/mcp/tools/workspace-tools.ts +0 -73
- /package/.next/standalone/.next/static/{VGoiH5uRfCRm6SKXNPZoz → 7DBkEq_6oXffs_C5TFLBR}/_buildManifest.js +0 -0
- /package/.next/standalone/.next/static/{VGoiH5uRfCRm6SKXNPZoz → 7DBkEq_6oXffs_C5TFLBR}/_clientMiddlewareManifest.js +0 -0
- /package/.next/standalone/.next/static/{VGoiH5uRfCRm6SKXNPZoz → 7DBkEq_6oXffs_C5TFLBR}/_ssgManifest.js +0 -0
package/dist/mcp-server.cjs
CHANGED
|
@@ -26318,9 +26318,35 @@ var init_worktree = __esm({
|
|
|
26318
26318
|
});
|
|
26319
26319
|
|
|
26320
26320
|
// src/lib/platform.ts
|
|
26321
|
+
var platform_exports = {};
|
|
26322
|
+
__export2(platform_exports, {
|
|
26323
|
+
detectShells: () => detectShells,
|
|
26324
|
+
detectTerminalApps: () => detectTerminalApps,
|
|
26325
|
+
ensurePathInEnv: () => ensurePathInEnv,
|
|
26326
|
+
isWindows: () => isWindows,
|
|
26327
|
+
normalizePath: () => normalizePath,
|
|
26328
|
+
quoteForCmd: () => quoteForCmd,
|
|
26329
|
+
redactEnvForLogs: () => redactEnvForLogs,
|
|
26330
|
+
resolveCommandPath: () => resolveCommandPath,
|
|
26331
|
+
resolveCommandPathSync: () => resolveCommandPathSync,
|
|
26332
|
+
resolveSpawnTarget: () => resolveSpawnTarget,
|
|
26333
|
+
resolveSpawnTargetSync: () => resolveSpawnTargetSync,
|
|
26334
|
+
stripClaudeNestingEnv: () => stripClaudeNestingEnv,
|
|
26335
|
+
toForwardSlash: () => toForwardSlash
|
|
26336
|
+
});
|
|
26321
26337
|
function isWindows(platform = process.platform) {
|
|
26322
26338
|
return platform === "win32";
|
|
26323
26339
|
}
|
|
26340
|
+
function normalizePath(p2, platform = process.platform) {
|
|
26341
|
+
const normalized = import_node_path2.default.normalize(p2);
|
|
26342
|
+
if (isWindows(platform)) {
|
|
26343
|
+
return normalized.replace(/\//g, "\\");
|
|
26344
|
+
}
|
|
26345
|
+
return normalized.replace(/\\/g, "/");
|
|
26346
|
+
}
|
|
26347
|
+
function toForwardSlash(p2) {
|
|
26348
|
+
return p2.replace(/\\/g, "/");
|
|
26349
|
+
}
|
|
26324
26350
|
function quoteForCmd(arg) {
|
|
26325
26351
|
const flat = arg.replace(/\r\n|\r|\n/g, " ");
|
|
26326
26352
|
if (!flat.length) return '""';
|
|
@@ -26346,6 +26372,39 @@ function stripClaudeNestingEnv(env) {
|
|
|
26346
26372
|
}
|
|
26347
26373
|
return cleaned;
|
|
26348
26374
|
}
|
|
26375
|
+
function redactEnvForLogs(env) {
|
|
26376
|
+
const result = {};
|
|
26377
|
+
for (const [k2, v2] of Object.entries(env)) {
|
|
26378
|
+
if (v2 === void 0) continue;
|
|
26379
|
+
result[k2] = SENSITIVE_KEY_RE.test(k2) ? "***REDACTED***" : v2;
|
|
26380
|
+
}
|
|
26381
|
+
return result;
|
|
26382
|
+
}
|
|
26383
|
+
function windowsPathExts(env) {
|
|
26384
|
+
return (env.PATHEXT ?? ".EXE;.CMD;.BAT;.COM").split(";").filter(Boolean);
|
|
26385
|
+
}
|
|
26386
|
+
async function resolveCommandPath(command, opts = {}) {
|
|
26387
|
+
const cwd = opts.cwd ?? process.cwd();
|
|
26388
|
+
const env = opts.env ?? process.env;
|
|
26389
|
+
const platform = opts.platform ?? process.platform;
|
|
26390
|
+
const hasPathSeparator = command.includes("/") || command.includes("\\");
|
|
26391
|
+
if (hasPathSeparator) {
|
|
26392
|
+
const absolute = import_node_path2.default.isAbsolute(command) ? command : import_node_path2.default.resolve(cwd, command);
|
|
26393
|
+
return await pathExists(absolute, platform) ? absolute : null;
|
|
26394
|
+
}
|
|
26395
|
+
const pathValue = env.PATH ?? env.Path ?? "";
|
|
26396
|
+
const delimiter = isWindows(platform) ? ";" : ":";
|
|
26397
|
+
const dirs = pathValue.split(delimiter).filter(Boolean);
|
|
26398
|
+
const exts = isWindows(platform) ? windowsPathExts(env) : [""];
|
|
26399
|
+
const hasExtension = isWindows(platform) && import_node_path2.default.extname(command).length > 0;
|
|
26400
|
+
for (const dir of dirs) {
|
|
26401
|
+
const candidates = isWindows(platform) ? hasExtension ? [import_node_path2.default.join(dir, command)] : exts.map((ext) => import_node_path2.default.join(dir, `${command}${ext}`)) : [import_node_path2.default.join(dir, command)];
|
|
26402
|
+
for (const candidate of candidates) {
|
|
26403
|
+
if (await pathExists(candidate, platform)) return candidate;
|
|
26404
|
+
}
|
|
26405
|
+
}
|
|
26406
|
+
return null;
|
|
26407
|
+
}
|
|
26349
26408
|
function resolveCommandPathSync(command, platform = process.platform, exec = defaultExecSync) {
|
|
26350
26409
|
if (import_node_path2.default.extname(command) || command.includes("/") || command.includes("\\")) {
|
|
26351
26410
|
return command;
|
|
@@ -26371,6 +26430,13 @@ function resolveCommandPathSync(command, platform = process.platform, exec = def
|
|
|
26371
26430
|
}
|
|
26372
26431
|
return command;
|
|
26373
26432
|
}
|
|
26433
|
+
async function resolveSpawnTarget(command, args, opts = {}) {
|
|
26434
|
+
const env = opts.env ?? process.env;
|
|
26435
|
+
const platform = opts.platform ?? process.platform;
|
|
26436
|
+
const resolved = await resolveCommandPath(command, opts);
|
|
26437
|
+
const executable = resolved ?? command;
|
|
26438
|
+
return wrapForPlatform(executable, args, env, platform);
|
|
26439
|
+
}
|
|
26374
26440
|
function resolveSpawnTargetSync(command, args, platform = process.platform, exec) {
|
|
26375
26441
|
const resolved = resolveCommandPathSync(command, platform, exec);
|
|
26376
26442
|
return wrapForPlatform(resolved, args, process.env, platform);
|
|
@@ -26390,10 +26456,123 @@ function wrapForPlatform(executable, args, env, platform) {
|
|
|
26390
26456
|
}
|
|
26391
26457
|
return { command: executable, args };
|
|
26392
26458
|
}
|
|
26393
|
-
|
|
26459
|
+
async function pathExists(candidate, platform = process.platform) {
|
|
26460
|
+
try {
|
|
26461
|
+
await import_node_fs2.promises.access(candidate, isWindows(platform) ? import_node_fs2.constants.F_OK : import_node_fs2.constants.X_OK);
|
|
26462
|
+
return true;
|
|
26463
|
+
} catch {
|
|
26464
|
+
return false;
|
|
26465
|
+
}
|
|
26466
|
+
}
|
|
26467
|
+
async function detectShells(platform = process.platform) {
|
|
26468
|
+
if (!isWindows(platform)) {
|
|
26469
|
+
return detectUnixShells();
|
|
26470
|
+
}
|
|
26471
|
+
return detectWindowsShells();
|
|
26472
|
+
}
|
|
26473
|
+
async function detectUnixShells() {
|
|
26474
|
+
try {
|
|
26475
|
+
const content = await import_node_fs2.promises.readFile("/etc/shells", "utf-8");
|
|
26476
|
+
const shells = [];
|
|
26477
|
+
const seen = /* @__PURE__ */ new Map();
|
|
26478
|
+
for (const raw of content.split("\n")) {
|
|
26479
|
+
const line = raw.replace(/#.*/, "").trim();
|
|
26480
|
+
if (!line || !line.startsWith("/")) continue;
|
|
26481
|
+
if (!await pathExists(line)) continue;
|
|
26482
|
+
let name = import_node_path2.default.basename(line);
|
|
26483
|
+
const count = seen.get(name) ?? 0;
|
|
26484
|
+
seen.set(name, count + 1);
|
|
26485
|
+
if (count > 0) name = `${name} (${count + 1})`;
|
|
26486
|
+
shells.push({ name, path: line });
|
|
26487
|
+
}
|
|
26488
|
+
return shells;
|
|
26489
|
+
} catch {
|
|
26490
|
+
const defaults = ["/bin/zsh", "/bin/bash", "/bin/sh"];
|
|
26491
|
+
const shells = [];
|
|
26492
|
+
for (const p2 of defaults) {
|
|
26493
|
+
if (await pathExists(p2)) shells.push({ name: import_node_path2.default.basename(p2), path: p2 });
|
|
26494
|
+
}
|
|
26495
|
+
return shells;
|
|
26496
|
+
}
|
|
26497
|
+
}
|
|
26498
|
+
async function detectWindowsShells() {
|
|
26499
|
+
const shells = [];
|
|
26500
|
+
const gitBashCandidates = [];
|
|
26501
|
+
const gitPath = await resolveCommandPath("git", { platform: "win32" });
|
|
26502
|
+
if (gitPath) {
|
|
26503
|
+
const gitRoot = import_node_path2.default.resolve(import_node_path2.default.dirname(gitPath), "..", "..");
|
|
26504
|
+
gitBashCandidates.push(
|
|
26505
|
+
import_node_path2.default.join(gitRoot, "bin", "bash.exe"),
|
|
26506
|
+
import_node_path2.default.join(gitRoot, "usr", "bin", "bash.exe")
|
|
26507
|
+
);
|
|
26508
|
+
}
|
|
26509
|
+
const programDirs = [
|
|
26510
|
+
process.env.ProgramW6432,
|
|
26511
|
+
process.env.ProgramFiles,
|
|
26512
|
+
process.env["ProgramFiles(x86)"],
|
|
26513
|
+
process.env.LocalAppData ? import_node_path2.default.join(process.env.LocalAppData, "Programs") : null
|
|
26514
|
+
].filter(Boolean);
|
|
26515
|
+
for (const dir of programDirs) {
|
|
26516
|
+
gitBashCandidates.push(
|
|
26517
|
+
import_node_path2.default.join(dir, "Git", "bin", "bash.exe"),
|
|
26518
|
+
import_node_path2.default.join(dir, "Git", "usr", "bin", "bash.exe")
|
|
26519
|
+
);
|
|
26520
|
+
}
|
|
26521
|
+
const home = process.env.USERPROFILE ?? "";
|
|
26522
|
+
if (home) {
|
|
26523
|
+
gitBashCandidates.push(
|
|
26524
|
+
import_node_path2.default.join(home, "scoop", "apps", "git", "current", "bin", "bash.exe")
|
|
26525
|
+
);
|
|
26526
|
+
}
|
|
26527
|
+
if (process.env.CLAUDE_CODE_GIT_BASH_PATH) {
|
|
26528
|
+
gitBashCandidates.unshift(process.env.CLAUDE_CODE_GIT_BASH_PATH);
|
|
26529
|
+
}
|
|
26530
|
+
for (const candidate of gitBashCandidates) {
|
|
26531
|
+
if (await pathExists(candidate, "win32")) {
|
|
26532
|
+
shells.push({ name: "Git Bash", path: candidate });
|
|
26533
|
+
break;
|
|
26534
|
+
}
|
|
26535
|
+
}
|
|
26536
|
+
const pwshPath = await resolveCommandPath("pwsh", { platform: "win32" });
|
|
26537
|
+
if (pwshPath) {
|
|
26538
|
+
shells.push({ name: "PowerShell", path: pwshPath });
|
|
26539
|
+
}
|
|
26540
|
+
const winDir = process.env.windir ?? "C:\\WINDOWS";
|
|
26541
|
+
const legacyPs = import_node_path2.default.join(winDir, "System32", "WindowsPowerShell", "v1.0", "powershell.exe");
|
|
26542
|
+
if (await pathExists(legacyPs, "win32")) {
|
|
26543
|
+
shells.push({ name: "Windows PowerShell", path: legacyPs });
|
|
26544
|
+
}
|
|
26545
|
+
const cmd = process.env.ComSpec ?? import_node_path2.default.join(winDir, "System32", "cmd.exe");
|
|
26546
|
+
if (await pathExists(cmd, "win32")) {
|
|
26547
|
+
shells.push({ name: "Command Prompt", path: cmd });
|
|
26548
|
+
}
|
|
26549
|
+
return shells;
|
|
26550
|
+
}
|
|
26551
|
+
async function detectTerminalApps(platform = process.platform) {
|
|
26552
|
+
if (platform === "darwin") {
|
|
26553
|
+
const results = [];
|
|
26554
|
+
for (const t of MAC_TERMINAL_APPS) {
|
|
26555
|
+
if (await pathExists(`/Applications/${t.bundleName}.app`, platform)) {
|
|
26556
|
+
results.push({ name: t.name, value: t.bundleName });
|
|
26557
|
+
}
|
|
26558
|
+
}
|
|
26559
|
+
return results;
|
|
26560
|
+
}
|
|
26561
|
+
if (isWindows(platform)) {
|
|
26562
|
+
const results = [];
|
|
26563
|
+
const wtPath = await resolveCommandPath("wt", { platform });
|
|
26564
|
+
if (wtPath) {
|
|
26565
|
+
results.push({ name: "Windows Terminal", value: wtPath });
|
|
26566
|
+
}
|
|
26567
|
+
return results;
|
|
26568
|
+
}
|
|
26569
|
+
return [];
|
|
26570
|
+
}
|
|
26571
|
+
var import_node_fs2, import_node_child_process, import_node_path2, CLAUDE_NESTING_VARS, SENSITIVE_KEY_RE, defaultExecSync, MAC_TERMINAL_APPS;
|
|
26394
26572
|
var init_platform = __esm({
|
|
26395
26573
|
"src/lib/platform.ts"() {
|
|
26396
26574
|
"use strict";
|
|
26575
|
+
import_node_fs2 = require("node:fs");
|
|
26397
26576
|
import_node_child_process = require("node:child_process");
|
|
26398
26577
|
import_node_path2 = __toESM(require("node:path"));
|
|
26399
26578
|
CLAUDE_NESTING_VARS = [
|
|
@@ -26402,7 +26581,17 @@ var init_platform = __esm({
|
|
|
26402
26581
|
"CLAUDE_CODE_SESSION",
|
|
26403
26582
|
"CLAUDE_CODE_PARENT_SESSION"
|
|
26404
26583
|
];
|
|
26584
|
+
SENSITIVE_KEY_RE = /key|token|secret|password|passwd|authorization|cookie/i;
|
|
26405
26585
|
defaultExecSync = (cmd) => (0, import_node_child_process.execSync)(cmd, { encoding: "utf-8", timeout: 5e3 });
|
|
26586
|
+
MAC_TERMINAL_APPS = [
|
|
26587
|
+
{ name: "Terminal", bundleName: "Terminal" },
|
|
26588
|
+
{ name: "iTerm2", bundleName: "iTerm" },
|
|
26589
|
+
{ name: "Warp", bundleName: "Warp" },
|
|
26590
|
+
{ name: "Alacritty", bundleName: "Alacritty" },
|
|
26591
|
+
{ name: "WezTerm", bundleName: "WezTerm" },
|
|
26592
|
+
{ name: "kitty", bundleName: "kitty" },
|
|
26593
|
+
{ name: "Hyper", bundleName: "Hyper" }
|
|
26594
|
+
];
|
|
26406
26595
|
}
|
|
26407
26596
|
});
|
|
26408
26597
|
|
|
@@ -26417,11 +26606,11 @@ var init_tower_paths = __esm({
|
|
|
26417
26606
|
});
|
|
26418
26607
|
|
|
26419
26608
|
// src/lib/ai/adapters/cli/claude-cli-adapter.ts
|
|
26420
|
-
var
|
|
26609
|
+
var fs3, os2, path4, CLAUDE_MODELS, ClaudeCliAdapter;
|
|
26421
26610
|
var init_claude_cli_adapter = __esm({
|
|
26422
26611
|
"src/lib/ai/adapters/cli/claude-cli-adapter.ts"() {
|
|
26423
26612
|
"use strict";
|
|
26424
|
-
|
|
26613
|
+
fs3 = __toESM(require("node:fs"));
|
|
26425
26614
|
os2 = __toESM(require("node:os"));
|
|
26426
26615
|
path4 = __toESM(require("node:path"));
|
|
26427
26616
|
init_platform();
|
|
@@ -26479,35 +26668,20 @@ var init_claude_cli_adapter = __esm({
|
|
|
26479
26668
|
const settings = this.readSettings();
|
|
26480
26669
|
const hooks = settings["hooks"] ?? {};
|
|
26481
26670
|
const root = getPackageRoot().replace(/\\/g, "/");
|
|
26671
|
+
const sessionStart = path4.join(root, "scripts", "session-start-hook.js").replace(/\\/g, "/");
|
|
26672
|
+
const postTool = path4.join(root, "scripts", "post-tool-hook.js").replace(/\\/g, "/");
|
|
26673
|
+
const stop = path4.join(root, "scripts", "stop-hook.js").replace(/\\/g, "/");
|
|
26482
26674
|
let changed = false;
|
|
26483
|
-
|
|
26484
|
-
|
|
26485
|
-
|
|
26486
|
-
|
|
26487
|
-
|
|
26488
|
-
|
|
26489
|
-
|
|
26490
|
-
|
|
26491
|
-
|
|
26492
|
-
|
|
26493
|
-
if (!this.hasHook(postToolEntries, "post-tool-hook.js")) {
|
|
26494
|
-
const hookPath = path4.join(root, "scripts", "post-tool-hook.js").replace(/\\/g, "/");
|
|
26495
|
-
postToolEntries.push({
|
|
26496
|
-
hooks: [{ command: `node "${hookPath}"`, timeout: 10, type: "command" }],
|
|
26497
|
-
matcher: "Write|Edit|MultiEdit"
|
|
26498
|
-
});
|
|
26499
|
-
hooks["PostToolUse"] = postToolEntries;
|
|
26500
|
-
changed = true;
|
|
26501
|
-
}
|
|
26502
|
-
const stopEntries = this.getHookArray(hooks, "Stop");
|
|
26503
|
-
if (!this.hasHook(stopEntries, "stop-hook.js")) {
|
|
26504
|
-
const hookPath = path4.join(root, "scripts", "stop-hook.js").replace(/\\/g, "/");
|
|
26505
|
-
stopEntries.push({
|
|
26506
|
-
hooks: [{ command: `node "${hookPath}"`, timeout: 5, type: "command" }]
|
|
26507
|
-
});
|
|
26508
|
-
hooks["Stop"] = stopEntries;
|
|
26509
|
-
changed = true;
|
|
26510
|
-
}
|
|
26675
|
+
changed = this.upsertHook(hooks, "SessionStart", "session-start-hook.js", {
|
|
26676
|
+
hooks: [{ command: `node "${sessionStart}"`, timeout: 5, type: "command" }]
|
|
26677
|
+
}) || changed;
|
|
26678
|
+
changed = this.upsertHook(hooks, "PostToolUse", "post-tool-hook.js", {
|
|
26679
|
+
hooks: [{ command: `node "${postTool}"`, timeout: 10, type: "command" }],
|
|
26680
|
+
matcher: "Write|Edit|MultiEdit"
|
|
26681
|
+
}) || changed;
|
|
26682
|
+
changed = this.upsertHook(hooks, "Stop", "stop-hook.js", {
|
|
26683
|
+
hooks: [{ command: `node "${stop}"`, timeout: 5, type: "command" }]
|
|
26684
|
+
}) || changed;
|
|
26511
26685
|
if (changed) {
|
|
26512
26686
|
settings["hooks"] = hooks;
|
|
26513
26687
|
this.writeSettings(settings);
|
|
@@ -26522,6 +26696,27 @@ var init_claude_cli_adapter = __esm({
|
|
|
26522
26696
|
};
|
|
26523
26697
|
}
|
|
26524
26698
|
}
|
|
26699
|
+
/**
|
|
26700
|
+
* Install-or-refresh a hook entry. Removes any existing entries that
|
|
26701
|
+
* reference our `filename` (caters for stale paths from older Tower versions
|
|
26702
|
+
* that wrote `process.cwd()/scripts/...` from inside `.next/standalone/`)
|
|
26703
|
+
* and pushes the freshly-built entry. Returns true when settings changed.
|
|
26704
|
+
*/
|
|
26705
|
+
upsertHook(hooks, event, filename, entry) {
|
|
26706
|
+
const entries = this.getHookArray(hooks, event);
|
|
26707
|
+
const wanted = entry?.hooks?.[0]?.command;
|
|
26708
|
+
const existingIndex = entries.findIndex(
|
|
26709
|
+
(e2) => e2?.hooks?.some?.((h10) => h10.command?.includes(filename))
|
|
26710
|
+
);
|
|
26711
|
+
if (existingIndex >= 0) {
|
|
26712
|
+
const current = entries[existingIndex]?.hooks?.[0]?.command;
|
|
26713
|
+
if (current === wanted) return false;
|
|
26714
|
+
entries.splice(existingIndex, 1);
|
|
26715
|
+
}
|
|
26716
|
+
entries.push(entry);
|
|
26717
|
+
hooks[event] = entries;
|
|
26718
|
+
return true;
|
|
26719
|
+
}
|
|
26525
26720
|
async uninstallHooks() {
|
|
26526
26721
|
try {
|
|
26527
26722
|
const settings = this.readSettings();
|
|
@@ -26619,7 +26814,7 @@ var init_claude_cli_adapter = __esm({
|
|
|
26619
26814
|
async installSkill(skillName, sourceDir) {
|
|
26620
26815
|
const target = path4.join(this.getConfigDir(), "skills", skillName);
|
|
26621
26816
|
try {
|
|
26622
|
-
if (!
|
|
26817
|
+
if (!fs3.existsSync(sourceDir)) {
|
|
26623
26818
|
return {
|
|
26624
26819
|
ok: false,
|
|
26625
26820
|
method: "symlink",
|
|
@@ -26627,15 +26822,15 @@ var init_claude_cli_adapter = __esm({
|
|
|
26627
26822
|
error: `Source skill dir does not exist: ${sourceDir}`
|
|
26628
26823
|
};
|
|
26629
26824
|
}
|
|
26630
|
-
|
|
26631
|
-
const existing = await
|
|
26825
|
+
fs3.mkdirSync(path4.dirname(target), { recursive: true });
|
|
26826
|
+
const existing = await fs3.promises.lstat(target).catch(() => null);
|
|
26632
26827
|
if (existing) {
|
|
26633
26828
|
if (existing.isSymbolicLink()) {
|
|
26634
|
-
const current = await
|
|
26829
|
+
const current = await fs3.promises.readlink(target);
|
|
26635
26830
|
if (path4.resolve(current) === path4.resolve(sourceDir)) {
|
|
26636
26831
|
return { ok: true, method: "symlink", detail: `${target} \u2192 ${sourceDir} (already)` };
|
|
26637
26832
|
}
|
|
26638
|
-
await
|
|
26833
|
+
await fs3.promises.unlink(target);
|
|
26639
26834
|
} else {
|
|
26640
26835
|
return {
|
|
26641
26836
|
ok: false,
|
|
@@ -26645,7 +26840,7 @@ var init_claude_cli_adapter = __esm({
|
|
|
26645
26840
|
};
|
|
26646
26841
|
}
|
|
26647
26842
|
}
|
|
26648
|
-
await
|
|
26843
|
+
await fs3.promises.symlink(sourceDir, target, "dir");
|
|
26649
26844
|
return { ok: true, method: "symlink", detail: `${target} \u2192 ${sourceDir}` };
|
|
26650
26845
|
} catch (err) {
|
|
26651
26846
|
return {
|
|
@@ -26659,7 +26854,7 @@ var init_claude_cli_adapter = __esm({
|
|
|
26659
26854
|
async uninstallSkill(skillName) {
|
|
26660
26855
|
const target = path4.join(this.getConfigDir(), "skills", skillName);
|
|
26661
26856
|
try {
|
|
26662
|
-
const stat = await
|
|
26857
|
+
const stat = await fs3.promises.lstat(target).catch(() => null);
|
|
26663
26858
|
if (!stat) return { ok: true, method: "symlink", detail: `${target} (already absent)` };
|
|
26664
26859
|
if (!stat.isSymbolicLink()) {
|
|
26665
26860
|
return {
|
|
@@ -26669,7 +26864,7 @@ var init_claude_cli_adapter = __esm({
|
|
|
26669
26864
|
error: `Refusing to remove non-symlink at ${target}`
|
|
26670
26865
|
};
|
|
26671
26866
|
}
|
|
26672
|
-
await
|
|
26867
|
+
await fs3.promises.unlink(target);
|
|
26673
26868
|
return { ok: true, method: "symlink", detail: target };
|
|
26674
26869
|
} catch (err) {
|
|
26675
26870
|
return {
|
|
@@ -26683,10 +26878,10 @@ var init_claude_cli_adapter = __esm({
|
|
|
26683
26878
|
async isSkillInstalled(skillName, expectedSourceDir) {
|
|
26684
26879
|
const target = path4.join(this.getConfigDir(), "skills", skillName);
|
|
26685
26880
|
try {
|
|
26686
|
-
const stat = await
|
|
26881
|
+
const stat = await fs3.promises.lstat(target);
|
|
26687
26882
|
if (!stat.isSymbolicLink()) return false;
|
|
26688
26883
|
if (!expectedSourceDir) return true;
|
|
26689
|
-
const current = await
|
|
26884
|
+
const current = await fs3.promises.readlink(target);
|
|
26690
26885
|
const resolved = path4.isAbsolute(current) ? current : path4.resolve(path4.dirname(target), current);
|
|
26691
26886
|
return path4.resolve(resolved) === path4.resolve(expectedSourceDir);
|
|
26692
26887
|
} catch {
|
|
@@ -26712,9 +26907,10 @@ var init_claude_cli_adapter = __esm({
|
|
|
26712
26907
|
try {
|
|
26713
26908
|
const { execFile } = await import("child_process");
|
|
26714
26909
|
const { promisify } = await import("util");
|
|
26910
|
+
const { resolveSpawnTarget: resolveSpawnTarget2 } = await Promise.resolve().then(() => (init_platform(), platform_exports));
|
|
26715
26911
|
const execFileAsync = promisify(execFile);
|
|
26716
|
-
const
|
|
26717
|
-
const { stdout } = await execFileAsync(
|
|
26912
|
+
const target = await resolveSpawnTarget2(this.resolveCommand(), ["--version"]);
|
|
26913
|
+
const { stdout } = await execFileAsync(target.command, target.args, { timeout: 5e3 });
|
|
26718
26914
|
return stdout.trim() || null;
|
|
26719
26915
|
} catch {
|
|
26720
26916
|
return null;
|
|
@@ -26735,10 +26931,10 @@ var init_claude_cli_adapter = __esm({
|
|
|
26735
26931
|
getApiKeyInfo() {
|
|
26736
26932
|
return { envVar: "ANTHROPIC_API_KEY", required: false };
|
|
26737
26933
|
}
|
|
26738
|
-
buildHelloProbeArgs() {
|
|
26934
|
+
buildHelloProbeArgs(prompt) {
|
|
26739
26935
|
return {
|
|
26740
26936
|
command: this.resolveCommand(),
|
|
26741
|
-
args: ["--print",
|
|
26937
|
+
args: ["--print", prompt, "--output-format", "stream-json", "--verbose"]
|
|
26742
26938
|
};
|
|
26743
26939
|
}
|
|
26744
26940
|
/** Resolve claude binary — env var > platform-aware resolution.
|
|
@@ -26753,15 +26949,15 @@ var init_claude_cli_adapter = __esm({
|
|
|
26753
26949
|
}
|
|
26754
26950
|
readSettings() {
|
|
26755
26951
|
try {
|
|
26756
|
-
return JSON.parse(
|
|
26952
|
+
return JSON.parse(fs3.readFileSync(this.getSettingsPath(), "utf-8"));
|
|
26757
26953
|
} catch {
|
|
26758
26954
|
return {};
|
|
26759
26955
|
}
|
|
26760
26956
|
}
|
|
26761
26957
|
writeSettings(data) {
|
|
26762
26958
|
const dir = this.getConfigDir();
|
|
26763
|
-
if (!
|
|
26764
|
-
|
|
26959
|
+
if (!fs3.existsSync(dir)) fs3.mkdirSync(dir, { recursive: true });
|
|
26960
|
+
fs3.writeFileSync(this.getSettingsPath(), JSON.stringify(data, null, 2), "utf-8");
|
|
26765
26961
|
}
|
|
26766
26962
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
26767
26963
|
getHookArray(hooks, event) {
|
|
@@ -47693,7 +47889,7 @@ var require_windowsPtyAgent = __commonJS({
|
|
|
47693
47889
|
"use strict";
|
|
47694
47890
|
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
47695
47891
|
exports2.argsToCommandLine = exports2.WindowsPtyAgent = void 0;
|
|
47696
|
-
var
|
|
47892
|
+
var fs5 = require("fs");
|
|
47697
47893
|
var os4 = require("os");
|
|
47698
47894
|
var path6 = require("path");
|
|
47699
47895
|
var child_process_1 = require("child_process");
|
|
@@ -47752,7 +47948,7 @@ var require_windowsPtyAgent = __commonJS({
|
|
|
47752
47948
|
this._outSocket.on("connect", function() {
|
|
47753
47949
|
_this._outSocket.emit("ready_datapipe");
|
|
47754
47950
|
});
|
|
47755
|
-
var inSocketFD =
|
|
47951
|
+
var inSocketFD = fs5.openSync(term.conin, "w");
|
|
47756
47952
|
this._inSocket = new net_1.Socket({
|
|
47757
47953
|
fd: inSocketFD,
|
|
47758
47954
|
readable: false,
|
|
@@ -48186,7 +48382,7 @@ var require_unixTerminal = __commonJS({
|
|
|
48186
48382
|
})();
|
|
48187
48383
|
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
48188
48384
|
exports2.UnixTerminal = void 0;
|
|
48189
|
-
var
|
|
48385
|
+
var fs5 = require("fs");
|
|
48190
48386
|
var path6 = require("path");
|
|
48191
48387
|
var tty = require("tty");
|
|
48192
48388
|
var terminal_1 = require_terminal();
|
|
@@ -48449,7 +48645,7 @@ var require_unixTerminal = __commonJS({
|
|
|
48449
48645
|
return;
|
|
48450
48646
|
}
|
|
48451
48647
|
var task = this._writeQueue[0];
|
|
48452
|
-
|
|
48648
|
+
fs5.write(this._fd, task.buffer, task.offset, function(err, written) {
|
|
48453
48649
|
if (err) {
|
|
48454
48650
|
if ("code" in err && err.code === "EAGAIN") {
|
|
48455
48651
|
_this._writeImmediate = setImmediate(function() {
|
|
@@ -49803,7 +49999,7 @@ var knowledgeTools = {
|
|
|
49803
49999
|
|
|
49804
50000
|
// src/mcp/tools/note-asset-tools.ts
|
|
49805
50001
|
init_zod();
|
|
49806
|
-
var
|
|
50002
|
+
var fs4 = __toESM(require("node:fs"));
|
|
49807
50003
|
var path5 = __toESM(require("node:path"));
|
|
49808
50004
|
|
|
49809
50005
|
// src/lib/fts.ts
|
|
@@ -49960,17 +50156,17 @@ async function handleManageAssets(args) {
|
|
|
49960
50156
|
const filename = args.filename ?? path5.basename(args.sourcePath);
|
|
49961
50157
|
const destPath = path5.join(assetsDir, filename);
|
|
49962
50158
|
try {
|
|
49963
|
-
|
|
50159
|
+
fs4.renameSync(args.sourcePath, destPath);
|
|
49964
50160
|
} catch (err) {
|
|
49965
50161
|
const nodeErr = err;
|
|
49966
50162
|
if (nodeErr.code === "EXDEV") {
|
|
49967
|
-
|
|
49968
|
-
|
|
50163
|
+
fs4.copyFileSync(args.sourcePath, destPath);
|
|
50164
|
+
fs4.unlinkSync(args.sourcePath);
|
|
49969
50165
|
} else {
|
|
49970
50166
|
throw err;
|
|
49971
50167
|
}
|
|
49972
50168
|
}
|
|
49973
|
-
const stats =
|
|
50169
|
+
const stats = fs4.statSync(destPath);
|
|
49974
50170
|
const asset = await db.projectAsset.create({
|
|
49975
50171
|
data: {
|
|
49976
50172
|
filename,
|
|
@@ -49996,13 +50192,13 @@ async function handleManageAssets(args) {
|
|
|
49996
50192
|
filename = `upload-${Date.now()}${ext}`;
|
|
49997
50193
|
}
|
|
49998
50194
|
let destPath = path5.join(assetsDir, filename);
|
|
49999
|
-
if (
|
|
50195
|
+
if (fs4.existsSync(destPath)) {
|
|
50000
50196
|
const ext = path5.extname(filename);
|
|
50001
50197
|
const base = path5.basename(filename, ext);
|
|
50002
50198
|
filename = `${base}-${Date.now()}${ext}`;
|
|
50003
50199
|
destPath = path5.join(assetsDir, filename);
|
|
50004
50200
|
}
|
|
50005
|
-
|
|
50201
|
+
fs4.writeFileSync(destPath, buffer);
|
|
50006
50202
|
const asset = await db.projectAsset.create({
|
|
50007
50203
|
data: {
|
|
50008
50204
|
filename,
|
|
@@ -50034,8 +50230,8 @@ async function handleManageAssets(args) {
|
|
|
50034
50230
|
throw new Error("assetId required");
|
|
50035
50231
|
}
|
|
50036
50232
|
const asset = await db.projectAsset.findUnique({ where: { id: args.assetId } });
|
|
50037
|
-
if (asset?.path &&
|
|
50038
|
-
|
|
50233
|
+
if (asset?.path && fs4.existsSync(asset.path)) {
|
|
50234
|
+
fs4.unlinkSync(asset.path);
|
|
50039
50235
|
}
|
|
50040
50236
|
await db.projectAsset.delete({ where: { id: args.assetId } });
|
|
50041
50237
|
return { deleted: true, assetId: args.assetId };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tower-studio",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.8",
|
|
4
4
|
"description": "AI Task Orchestration Platform — Kanban + Terminal + Code Editor + MCP",
|
|
5
5
|
"bin": {
|
|
6
6
|
"tower": "bin/tower.mjs"
|
|
@@ -23,7 +23,6 @@
|
|
|
23
23
|
"scripts/stop-hook.js",
|
|
24
24
|
"dist/mcp-server.cjs",
|
|
25
25
|
"skills/",
|
|
26
|
-
"src/mcp/",
|
|
27
26
|
"next.config.ts",
|
|
28
27
|
"tsconfig.json"
|
|
29
28
|
],
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
module.exports=[324725,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},750227,(e,t,r)=>{t.exports=e.x("node:path",()=>require("node:path"))},902157,(e,t,r)=>{t.exports=e.x("node:fs",()=>require("node:fs"))},874533,(e,t,r)=>{t.exports=e.x("node:child_process",()=>require("node:child_process"))},980738,(e,t,r)=>{t.exports=e.x("node-pty-c710df912a232c01",()=>require("node-pty-c710df912a232c01"))},433541,e=>e.a(async(t,r)=>{try{let t=await e.y("ws-4df7fc762dfa9a52");e.n(t),r()}catch(e){r(e)}},!0),504446,(e,t,r)=>{t.exports=e.x("net",()=>require("net"))},933919,(e,t,r)=>{t.exports=e.x("@prisma/client-9249dd53ac5b6a44",()=>require("@prisma/client-9249dd53ac5b6a44"))},522734,(e,t,r)=>{t.exports=e.x("fs",()=>require("fs"))},814747,(e,t,r)=>{t.exports=e.x("path",()=>require("path"))},918622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},556704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},832319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},270406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},446786,(e,t,r)=>{t.exports=e.x("os",()=>require("os"))},912714,(e,t,r)=>{t.exports=e.x("node:fs/promises",()=>require("node:fs/promises"))},660526,(e,t,r)=>{t.exports=e.x("node:os",()=>require("node:os"))},192520,e=>{"use strict";let t;var r=e.i(750227),a=e.i(660526),n=e.i(902157);function s(){return t||(t=process.env.TOWER_DATA_DIR||(0,r.join)((0,a.homedir)(),".tower"),(0,n.existsSync)(t)||(0,n.mkdirSync)(t,{recursive:!0})),t}e.s(["getAssistantDir",0,function(){let e=(0,r.join)(s(),"assistant");return(0,n.existsSync)(e)||(0,n.mkdirSync)(e,{recursive:!0}),e},"getBackupsDir",0,function(){let e=(0,r.join)(s(),"backups");return(0,n.existsSync)(e)||(0,n.mkdirSync)(e,{recursive:!0}),e},"getStorageDir",0,function(){let e=(0,r.join)(s(),"storage");return(0,n.existsSync)(e)||(0,n.mkdirSync)(e,{recursive:!0}),e},"getTowerDbPath",0,function(){let e;return(0,r.join)((e=(0,r.join)(s(),"database"),(0,n.existsSync)(e)||(0,n.mkdirSync)(e,{recursive:!0}),e),"tower.db")},"getTowerDir",0,s])},666680,(e,t,r)=>{t.exports=e.x("node:crypto",()=>require("node:crypto"))},482819,(e,t,r)=>{"use strict";t.exports=e.r(583981).vendored["react-rsc"].ReactServerDOMTurbopackServer},921675,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"registerServerReference",{enumerable:!0,get:function(){return a.registerServerReference}});let a=e.r(482819)},86708,(e,t,r)=>{"use strict";function a(e){for(let t=0;t<e.length;t++){let r=e[t];if("function"!=typeof r)throw Object.defineProperty(Error(`A "use server" file can only export async functions, found ${typeof r}.
|
|
2
|
-
Read more: https://nextjs.org/docs/messages/invalid-use-server-value`),"__NEXT_ERROR_CODE",{value:"E352",enumerable:!1,configurable:!0})}}Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"ensureServerEntryExports",{enumerable:!0,get:function(){return a}})},843793,e=>{"use strict";var t=e.i(933919);let r=globalThis.prisma??new t.PrismaClient({log:[]});process.on("SIGTERM",()=>{r.$disconnect().catch(()=>{})}),process.on("SIGINT",()=>{r.$disconnect().catch(()=>{})}),e.s(["db",0,r])},572173,e=>{"use strict";var t=e.i(843793);async function r(e,r){let a=await t.db.systemConfig.findUnique({where:{key:e}});if(!a)return r;try{return JSON.parse(a.value)}catch{return r}}e.s(["readConfigValue",0,r])},658053,e=>{"use strict";e.s(["ASSISTANT_SESSION_KEY",0,"__assistant__"])},427699,(e,t,r)=>{t.exports=e.x("events",()=>require("events"))},687769,(e,t,r)=>{t.exports=e.x("node:events",()=>require("node:events"))},81111,(e,t,r)=>{t.exports=e.x("node:stream",()=>require("node:stream"))},899871,(e,t,r)=>{t.exports=e.x("node:string_decoder",()=>require("node:string_decoder"))},449719,(e,t,r)=>{t.exports=e.x("assert",()=>require("assert"))},500874,(e,t,r)=>{t.exports=e.x("buffer",()=>require("buffer"))},406461,(e,t,r)=>{t.exports=e.x("zlib",()=>require("zlib"))},57328,(e,t,r)=>{t.exports=e.x("node:assert",()=>require("node:assert"))},276534,e=>{"use strict";e.s(["CONFIG_DEFAULTS",0,{"git.pathMappingRules":{defaultValue:[],type:"object",label:"Git Path Mapping Rules"},"system.maxUploadBytes":{defaultValue:0x3200000,type:"number",label:"Max Upload Size (bytes)"},"system.maxConcurrentExecutions":{defaultValue:20,type:"number",label:"Max Concurrent Executions"},"system.maxReadableFileBytes":{defaultValue:5242880,type:"number",label:"Max Readable File Size (bytes)"},"system.backupDir":{defaultValue:"",type:"string",label:"Backup Directory"},"git.timeoutSec":{defaultValue:30,type:"number",label:"Git Operation Timeout (seconds)"},"search.resultLimit":{defaultValue:20,type:"number",label:"Search Result Limit"},"search.allModeCap":{defaultValue:5,type:"number",label:"All-Mode Per-Type Cap"},"search.debounceMs":{defaultValue:250,type:"number",label:"Search Debounce (ms)"},"search.snippetLength":{defaultValue:80,type:"number",label:"Snippet Length (characters)"},"search.codeTimeoutSec":{defaultValue:30,type:"number",label:"Code Search Timeout (seconds)"},"missions.grid.minCols":{defaultValue:1,type:"number",label:"Grid Min Columns"},"missions.grid.maxCols":{defaultValue:5,type:"number",label:"Grid Max Columns"},"missions.grid.minRows":{defaultValue:1,type:"number",label:"Grid Min Rows"},"missions.grid.maxRows":{defaultValue:5,type:"number",label:"Grid Max Rows"},"terminal.app":{defaultValue:"Terminal",type:"string",label:"Default Terminal App"},"terminal.wsPort":{defaultValue:3001,type:"number",label:"WebSocket Port"},"terminal.idleTimeoutSec":{defaultValue:180,type:"number",label:"Idle Timeout (seconds)"},"assistant.systemPrompt":{defaultValue:'You are Tower Assistant — the built-in AI operator for the Tower task management platform.\n\n## Identity\n- You are a task management operator, NOT a coding assistant.\n- You can ONLY use Tower MCP tools. You CANNOT read files, edit code, run shell commands, or search the web.\n- Always respond in the same language the user uses.\n\n## Capabilities\nWhen users ask what you can do, respond with EXACTLY these 6 groups. Translate to the user\'s language.\n\n1. **Workspace & Project** — View, create, update, delete workspaces and projects. Search projects and repositories.\n2. **Task Management** — Create tasks (priority, labels, worktree branch isolation, sub-path, auto-start). Move task status (TODO → IN_PROGRESS → IN_REVIEW → DONE / CANCELLED). Update task info and labels.\n3. **Execution Monitor** — Start task execution, check execution status, get terminal output, send commands to running terminals.\n4. **Daily Report & Todo** — Generate daily work summary (completed + in-progress). View pending task list sorted by priority.\n5. **Labels & Notes & Assets** — Manage workspace labels, project notes, and file attachments.\n6. **Global Search** — Search tasks, projects, repositories, notes, and assets by keyword.\n\nDo NOT list any capabilities beyond the above. Do NOT mention code editing, debugging, testing, git operations, or any development capabilities.\n\n## Scope Boundary\nIf the user asks you to write code, explain code, debug, search the web, read/write files, or anything outside Tower task management, reply:\n"抱歉,我只能帮你管理工作区、项目和任务。编码、调试等操作请在任务终端中完成。"',type:"string",label:"Assistant System Prompt"},"assistant.displayMode":{defaultValue:"sidebar",type:"string",label:"Assistant Display Mode"},"assistant.communicationMode":{defaultValue:"chat",type:"string",label:"Assistant Communication Mode"}}])},61920,e=>{"use strict";var t=e.i(446786),r=e.i(814747);function a(e){return e.startsWith("~/")?r.default.join(t.default.homedir(),e.slice(2)):e}function n(e){let t,r=e.match(/^git@([^:]+):(.+)$/);if(r)return{host:r[1],pathSegments:s(r[2]).split("/").filter(Boolean)};try{t=new URL(e)}catch{return null}return{host:t.hostname,pathSegments:s(decodeURIComponent(t.pathname)).split("/").filter(Boolean)}}function s(e){return e.replace(/\.git\/?$/,"")}e.s(["gitUrlToLocalPath",0,function(e){let t=e.trim();if(!t)return"";try{let e=n(t);if(!e)return"";let{host:s,pathSegments:i}=e;if("code.iflytek.com"===s){let e,t;return a((e=[...i],"osc"===e[0]&&"_source"===e[1]&&(e=e.slice(2)),((t=e.indexOf("-"))>0&&(e=e.slice(0,t)),0===e.length)?"":`~/company/${e.join("/")}`))}if("github.com"===s){var r;let e,t;return a((e=(r=i)[0],t=r[1],e&&t?`${"jp-liu"===e?"~/project/i":"~/project/f"}/${t}`:""))}let o=i[i.length-1];return o?a(`~/project/f/${o}`):""}catch{return""}},"matchGitPathRule",0,function(e,t){if(!t.length)return"";let r=e.trim();if(!r)return"";let s=n(r);if(!s)return"";let{host:i,pathSegments:o}=s,l=o[0]??"",u=o[o.length-1]??"",c=[...t].sort((e,t)=>{let r=+("*"===e.ownerMatch),a=+("*"===t.ownerMatch);return r!==a?r-a:e.priority-t.priority}),p=o.join("/");for(let e of c){if(e.host!==i||"*"!==e.ownerMatch&&e.ownerMatch!==l)continue;let t=e.localPathTemplate;if(t.includes("{path}"))return a(t.replace("{path}",p).replace("{owner}",l).replace("{repo}",u).replace(/\/+$/,""));let r=t.replace("{owner}",l).replace("{repo}","").replace(/\/+$/,"");return a(`${r}/${u}`)}return""}])},22569,e=>e.a(async(t,r)=>{try{var a=e.i(921675),n=e.i(843793),s=e.i(276534),i=e.i(61920),o=e.i(769310),l=e.i(721390),u=e.i(86708),c=t([l]);async function p(e,t){let r=await n.db.systemConfig.findUnique({where:{key:e}});if(!r)return t;try{return JSON.parse(r.value)}catch{return t}}async function d(e,t){await n.db.systemConfig.upsert({where:{key:e},create:{key:e,value:JSON.stringify(t)},update:{value:JSON.stringify(t)}})}async function f(e){let t=e.trim();if(!t)return"";try{let e=await p("git.pathMappingRules",[]),r=(0,i.matchGitPathRule)(t,e);if(r)return r;return(0,i.gitUrlToLocalPath)(t)}catch{return(0,i.gitUrlToLocalPath)(t)}}async function m(e){let t=await n.db.systemConfig.findMany({where:{key:{in:e}}}),r=Object.fromEntries(t.map(e=>{try{return[e.key,JSON.parse(e.value)]}catch{return[e.key,null]}})),a={};for(let t of e)a[t]=t in r?r[t]:s.CONFIG_DEFAULTS[t]?.defaultValue??null;return a}async function y(){return(0,o.detectShells)()}async function b(){return(0,o.detectTerminalApps)()}async function g(){return{platform:process.platform}}async function x(){let e=(0,l.getActiveWsPort)();if(null!==e)return e;let t=parseInt(process.env.PORT||"3000",10);return p("terminal.wsPort",t+1)}[l]=c.then?(await c)():c,(0,u.ensureServerEntryExports)([p,d,f,m,y,b,g,x]),(0,a.registerServerReference)(p,"601406ecac79b3ad03802ebdad7fee412b1cd242a3",null),(0,a.registerServerReference)(d,"602a9baca17d1dfb46d6920ffa0a228eef5457ab33",null),(0,a.registerServerReference)(f,"40b05fa1832e38faf3093f26ffc25130691bc7b075",null),(0,a.registerServerReference)(m,"408a94f097a9a92d17f4ef2a81b170cb16586e0cba",null),(0,a.registerServerReference)(y,"006ca763a21e0c7b1c866f46617803dde0a13da9ea",null),(0,a.registerServerReference)(b,"0017c96cfbba10eb5558b07c346d467fafc74ba32f",null),(0,a.registerServerReference)(g,"00dbf32469ff11201d8f24aef9098bcb9fa141bcd4",null),(0,a.registerServerReference)(x,"001e1fa1609fa6f321934af3c930363baeed8b3d15",null),e.s(["getConfigValue",0,p]),r()}catch(e){r(e)}},!1)];
|
|
3
|
-
|
|
4
|
-
//# sourceMappingURL=%5Broot-of-the-server%5D__0.9mj3v._.js.map
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
module.exports=[324725,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},814747,(e,t,r)=>{t.exports=e.x("path",()=>require("path"))},918622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},556704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},832319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},270406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},446786,(e,t,r)=>{t.exports=e.x("os",()=>require("os"))},933919,(e,t,r)=>{t.exports=e.x("@prisma/client-9249dd53ac5b6a44",()=>require("@prisma/client-9249dd53ac5b6a44"))},750227,(e,t,r)=>{t.exports=e.x("node:path",()=>require("node:path"))},902157,(e,t,r)=>{t.exports=e.x("node:fs",()=>require("node:fs"))},874533,(e,t,r)=>{t.exports=e.x("node:child_process",()=>require("node:child_process"))},980738,(e,t,r)=>{t.exports=e.x("node-pty-c710df912a232c01",()=>require("node-pty-c710df912a232c01"))},433541,e=>e.a(async(t,r)=>{try{let t=await e.y("ws-4df7fc762dfa9a52");e.n(t),r()}catch(e){r(e)}},!0),504446,(e,t,r)=>{t.exports=e.x("net",()=>require("net"))},660526,(e,t,r)=>{t.exports=e.x("node:os",()=>require("node:os"))},192520,e=>{"use strict";let t;var r=e.i(750227),a=e.i(660526),n=e.i(902157);function s(){return t||(t=process.env.TOWER_DATA_DIR||(0,r.join)((0,a.homedir)(),".tower"),(0,n.existsSync)(t)||(0,n.mkdirSync)(t,{recursive:!0})),t}e.s(["getAssistantDir",0,function(){let e=(0,r.join)(s(),"assistant");return(0,n.existsSync)(e)||(0,n.mkdirSync)(e,{recursive:!0}),e},"getBackupsDir",0,function(){let e=(0,r.join)(s(),"backups");return(0,n.existsSync)(e)||(0,n.mkdirSync)(e,{recursive:!0}),e},"getStorageDir",0,function(){let e=(0,r.join)(s(),"storage");return(0,n.existsSync)(e)||(0,n.mkdirSync)(e,{recursive:!0}),e},"getTowerDbPath",0,function(){let e;return(0,r.join)((e=(0,r.join)(s(),"database"),(0,n.existsSync)(e)||(0,n.mkdirSync)(e,{recursive:!0}),e),"tower.db")},"getTowerDir",0,s])},482819,(e,t,r)=>{"use strict";t.exports=e.r(583981).vendored["react-rsc"].ReactServerDOMTurbopackServer},921675,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"registerServerReference",{enumerable:!0,get:function(){return a.registerServerReference}});let a=e.r(482819)},86708,(e,t,r)=>{"use strict";function a(e){for(let t=0;t<e.length;t++){let r=e[t];if("function"!=typeof r)throw Object.defineProperty(Error(`A "use server" file can only export async functions, found ${typeof r}.
|
|
2
|
-
Read more: https://nextjs.org/docs/messages/invalid-use-server-value`),"__NEXT_ERROR_CODE",{value:"E352",enumerable:!1,configurable:!0})}}Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"ensureServerEntryExports",{enumerable:!0,get:function(){return a}})},843793,e=>{"use strict";var t=e.i(933919);let r=globalThis.prisma??new t.PrismaClient({log:[]});process.on("SIGTERM",()=>{r.$disconnect().catch(()=>{})}),process.on("SIGINT",()=>{r.$disconnect().catch(()=>{})}),e.s(["db",0,r])},572173,e=>{"use strict";var t=e.i(843793);async function r(e,r){let a=await t.db.systemConfig.findUnique({where:{key:e}});if(!a)return r;try{return JSON.parse(a.value)}catch{return r}}e.s(["readConfigValue",0,r])},658053,e=>{"use strict";e.s(["ASSISTANT_SESSION_KEY",0,"__assistant__"])},666680,(e,t,r)=>{t.exports=e.x("node:crypto",()=>require("node:crypto"))},341291,e=>{"use strict";var t=e.i(666680),r=e.i(902157),a=e.i(750227);let n=(0,e.i(192520).getStorageDir)();function s(e){if(!e.startsWith(n+a.sep))throw Error("Path traversal detected")}let i=new Set(["image","screenshot","img","photo","picture","clipboard","paste","untitled"]);e.s(["buildCacheFilename",0,function(e,r){let n=a.basename(e,a.extname(e)),s=t.randomUUID().replace(/-/g,"").slice(0,8),o=n.toLowerCase();if(!n||i.has(o)||/^screenshot[\s_\-]/i.test(n))return`tower_image-${s}${r}`;let l=n.replace(/[^\p{L}\p{N}]/gu,"_").replace(/_+/g,"_").replace(/^_+|_+$/g,"");return`${l||"file"}-${s}${r}`},"ensureAssetsDir",0,function(e){let t,i=(s(t=a.join(n,"assets",e)),t);return r.mkdirSync(i,{recursive:!0}),i},"getAssistantCacheDir",0,function(e="images"){let t=new Date,i=`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,"0")}`,o=a.join(n,"cache","assistant",i,e);return s(o),r.mkdirSync(o,{recursive:!0}),o},"getAssistantCacheRoot",0,function(){let e=a.join(n,"cache","assistant");return s(e),e}])},634712,e=>{"use strict";let t=["jpg","jpeg","png","gif","webp"],r=["md","txt","json","csv"],a=[...t,...r].join("|"),n=RegExp(`^\\d{4}-\\d{2}/(images|files)/[^/]+\\.(${a})$`,"i");function s(e){let a=e.replace(/^\./,"").toLowerCase();return t.includes(a)?"image":r.includes(a)?"text":null}[...t.map(e=>`.${e}`),...r.map(e=>`.${e}`),"image/*"].join(","),e.s(["ALLOWED_TEXT_EXTS",0,r,"ATTACHMENT_SUBPATH_RE",0,n,"MAX_ATTACHMENTS",0,10,"classifyAttachmentExt",0,s,"classifyAttachmentSubPath",0,function(e){if(!n.test(e))return null;let t=e.lastIndexOf(".");return t<0?null:s(e.slice(t+1))}])},276534,e=>{"use strict";e.s(["CONFIG_DEFAULTS",0,{"git.pathMappingRules":{defaultValue:[],type:"object",label:"Git Path Mapping Rules"},"system.maxUploadBytes":{defaultValue:0x3200000,type:"number",label:"Max Upload Size (bytes)"},"system.maxConcurrentExecutions":{defaultValue:20,type:"number",label:"Max Concurrent Executions"},"system.maxReadableFileBytes":{defaultValue:5242880,type:"number",label:"Max Readable File Size (bytes)"},"system.backupDir":{defaultValue:"",type:"string",label:"Backup Directory"},"git.timeoutSec":{defaultValue:30,type:"number",label:"Git Operation Timeout (seconds)"},"search.resultLimit":{defaultValue:20,type:"number",label:"Search Result Limit"},"search.allModeCap":{defaultValue:5,type:"number",label:"All-Mode Per-Type Cap"},"search.debounceMs":{defaultValue:250,type:"number",label:"Search Debounce (ms)"},"search.snippetLength":{defaultValue:80,type:"number",label:"Snippet Length (characters)"},"search.codeTimeoutSec":{defaultValue:30,type:"number",label:"Code Search Timeout (seconds)"},"missions.grid.minCols":{defaultValue:1,type:"number",label:"Grid Min Columns"},"missions.grid.maxCols":{defaultValue:5,type:"number",label:"Grid Max Columns"},"missions.grid.minRows":{defaultValue:1,type:"number",label:"Grid Min Rows"},"missions.grid.maxRows":{defaultValue:5,type:"number",label:"Grid Max Rows"},"terminal.app":{defaultValue:"Terminal",type:"string",label:"Default Terminal App"},"terminal.wsPort":{defaultValue:3001,type:"number",label:"WebSocket Port"},"terminal.idleTimeoutSec":{defaultValue:180,type:"number",label:"Idle Timeout (seconds)"},"assistant.systemPrompt":{defaultValue:'You are Tower Assistant — the built-in AI operator for the Tower task management platform.\n\n## Identity\n- You are a task management operator, NOT a coding assistant.\n- You can ONLY use Tower MCP tools. You CANNOT read files, edit code, run shell commands, or search the web.\n- Always respond in the same language the user uses.\n\n## Capabilities\nWhen users ask what you can do, respond with EXACTLY these 6 groups. Translate to the user\'s language.\n\n1. **Workspace & Project** — View, create, update, delete workspaces and projects. Search projects and repositories.\n2. **Task Management** — Create tasks (priority, labels, worktree branch isolation, sub-path, auto-start). Move task status (TODO → IN_PROGRESS → IN_REVIEW → DONE / CANCELLED). Update task info and labels.\n3. **Execution Monitor** — Start task execution, check execution status, get terminal output, send commands to running terminals.\n4. **Daily Report & Todo** — Generate daily work summary (completed + in-progress). View pending task list sorted by priority.\n5. **Labels & Notes & Assets** — Manage workspace labels, project notes, and file attachments.\n6. **Global Search** — Search tasks, projects, repositories, notes, and assets by keyword.\n\nDo NOT list any capabilities beyond the above. Do NOT mention code editing, debugging, testing, git operations, or any development capabilities.\n\n## Scope Boundary\nIf the user asks you to write code, explain code, debug, search the web, read/write files, or anything outside Tower task management, reply:\n"抱歉,我只能帮你管理工作区、项目和任务。编码、调试等操作请在任务终端中完成。"',type:"string",label:"Assistant System Prompt"},"assistant.displayMode":{defaultValue:"sidebar",type:"string",label:"Assistant Display Mode"},"assistant.communicationMode":{defaultValue:"chat",type:"string",label:"Assistant Communication Mode"}}])},61920,e=>{"use strict";var t=e.i(446786),r=e.i(814747);function a(e){return e.startsWith("~/")?r.default.join(t.default.homedir(),e.slice(2)):e}function n(e){let t,r=e.match(/^git@([^:]+):(.+)$/);if(r)return{host:r[1],pathSegments:s(r[2]).split("/").filter(Boolean)};try{t=new URL(e)}catch{return null}return{host:t.hostname,pathSegments:s(decodeURIComponent(t.pathname)).split("/").filter(Boolean)}}function s(e){return e.replace(/\.git\/?$/,"")}e.s(["gitUrlToLocalPath",0,function(e){let t=e.trim();if(!t)return"";try{let e=n(t);if(!e)return"";let{host:s,pathSegments:i}=e;if("code.iflytek.com"===s){let e,t;return a((e=[...i],"osc"===e[0]&&"_source"===e[1]&&(e=e.slice(2)),((t=e.indexOf("-"))>0&&(e=e.slice(0,t)),0===e.length)?"":`~/company/${e.join("/")}`))}if("github.com"===s){var r;let e,t;return a((e=(r=i)[0],t=r[1],e&&t?`${"jp-liu"===e?"~/project/i":"~/project/f"}/${t}`:""))}let o=i[i.length-1];return o?a(`~/project/f/${o}`):""}catch{return""}},"matchGitPathRule",0,function(e,t){if(!t.length)return"";let r=e.trim();if(!r)return"";let s=n(r);if(!s)return"";let{host:i,pathSegments:o}=s,l=o[0]??"",u=o[o.length-1]??"",c=[...t].sort((e,t)=>{let r=+("*"===e.ownerMatch),a=+("*"===t.ownerMatch);return r!==a?r-a:e.priority-t.priority}),p=o.join("/");for(let e of c){if(e.host!==i||"*"!==e.ownerMatch&&e.ownerMatch!==l)continue;let t=e.localPathTemplate;if(t.includes("{path}"))return a(t.replace("{path}",p).replace("{owner}",l).replace("{repo}",u).replace(/\/+$/,""));let r=t.replace("{owner}",l).replace("{repo}","").replace(/\/+$/,"");return a(`${r}/${u}`)}return""}])},22569,e=>e.a(async(t,r)=>{try{var a=e.i(921675),n=e.i(843793),s=e.i(276534),i=e.i(61920),o=e.i(769310),l=e.i(721390),u=e.i(86708),c=t([l]);async function p(e,t){let r=await n.db.systemConfig.findUnique({where:{key:e}});if(!r)return t;try{return JSON.parse(r.value)}catch{return t}}async function d(e,t){await n.db.systemConfig.upsert({where:{key:e},create:{key:e,value:JSON.stringify(t)},update:{value:JSON.stringify(t)}})}async function f(e){let t=e.trim();if(!t)return"";try{let e=await p("git.pathMappingRules",[]),r=(0,i.matchGitPathRule)(t,e);if(r)return r;return(0,i.gitUrlToLocalPath)(t)}catch{return(0,i.gitUrlToLocalPath)(t)}}async function m(e){let t=await n.db.systemConfig.findMany({where:{key:{in:e}}}),r=Object.fromEntries(t.map(e=>{try{return[e.key,JSON.parse(e.value)]}catch{return[e.key,null]}})),a={};for(let t of e)a[t]=t in r?r[t]:s.CONFIG_DEFAULTS[t]?.defaultValue??null;return a}async function h(){return(0,o.detectShells)()}async function g(){return(0,o.detectTerminalApps)()}async function y(){return{platform:process.platform}}async function b(){let e=(0,l.getActiveWsPort)();if(null!==e)return e;let t=parseInt(process.env.PORT||"3000",10);return p("terminal.wsPort",t+1)}[l]=c.then?(await c)():c,(0,u.ensureServerEntryExports)([p,d,f,m,h,g,y,b]),(0,a.registerServerReference)(p,"601406ecac79b3ad03802ebdad7fee412b1cd242a3",null),(0,a.registerServerReference)(d,"602a9baca17d1dfb46d6920ffa0a228eef5457ab33",null),(0,a.registerServerReference)(f,"40b05fa1832e38faf3093f26ffc25130691bc7b075",null),(0,a.registerServerReference)(m,"408a94f097a9a92d17f4ef2a81b170cb16586e0cba",null),(0,a.registerServerReference)(h,"006ca763a21e0c7b1c866f46617803dde0a13da9ea",null),(0,a.registerServerReference)(g,"0017c96cfbba10eb5558b07c346d467fafc74ba32f",null),(0,a.registerServerReference)(y,"00dbf32469ff11201d8f24aef9098bcb9fa141bcd4",null),(0,a.registerServerReference)(b,"001e1fa1609fa6f321934af3c930363baeed8b3d15",null),e.s(["getConfigValue",0,p]),r()}catch(e){r(e)}},!1),437513,e=>{"use strict";let t=[{mime:"image/jpeg",check:e=>255===e[0]&&216===e[1]&&255===e[2]},{mime:"image/png",check:e=>137===e[0]&&80===e[1]&&78===e[2]&&71===e[3]},{mime:"image/gif",check:e=>71===e[0]&&73===e[1]&&70===e[2]},{mime:"image/webp",check:e=>82===e[0]&&73===e[1]&&70===e[2]&&70===e[3]&&87===e[8]&&69===e[9]&&66===e[10]&&80===e[11]}];e.s(["MIME_TO_EXT",0,{"image/jpeg":".jpg","image/png":".png","image/gif":".gif","image/webp":".webp"},"TEXT_EXT_TO_MIME",0,{".md":"text/markdown",".txt":"text/plain",".json":"application/json",".csv":"text/csv"},"detectImageMime",0,function(e){if(e.length<12)return null;for(let r of t)if(r.check(e))return r.mime;return null},"isLikelyTextFile",0,function(e){if(0===e.length)return!0;let t=Math.min(e.length,8192);for(let r=0;r<t;r++)if(0===e[r])return!1;return!0}])},648834,e=>e.a(async(t,r)=>{try{var a=e.i(750227),n=e.i(902157),s=e.i(855104),i=e.i(198840),o=e.i(437513),l=e.i(341291),u=e.i(22569),c=e.i(634712),p=t([u]);async function d(e){let t,r,p,d=(0,i.requireLocalhost)(e);if(d)return d;let f=(await e.formData()).get("file");if(!f)return s.NextResponse.json({error:"Missing file field"},{status:400});let m=await (0,u.getConfigValue)("system.maxUploadBytes",0x3200000);if(f.size>m)return s.NextResponse.json({error:"File too large"},{status:400});let h=Buffer.from(await f.arrayBuffer()),g=a.extname(f.name),y=(0,c.classifyAttachmentExt)(g);if(!y)return s.NextResponse.json({error:"Unsupported file type"},{status:400});if("image"===y){let e=(0,o.detectImageMime)(h);if(!e)return s.NextResponse.json({error:"Invalid image content"},{status:400});r=e,t=o.MIME_TO_EXT[e],p=(0,l.getAssistantCacheDir)("images")}else{if(!(0,o.isLikelyTextFile)(h))return s.NextResponse.json({error:"File appears to be binary, not text"},{status:400});let e=g.toLowerCase();if(!c.ALLOWED_TEXT_EXTS.includes(e.replace(/^\./,"")))return s.NextResponse.json({error:"Unsupported text type"},{status:400});t=e,r=o.TEXT_EXT_TO_MIME[e]??"text/plain",p=(0,l.getAssistantCacheDir)("files")}let b=(0,l.buildCacheFilename)(f.name,t),x=a.join(p,b);if(!x.startsWith(p+a.sep)&&x!==p)return s.NextResponse.json({error:"Invalid path"},{status:400});await n.promises.writeFile(x,h);let v=a.relative((0,l.getAssistantCacheRoot)(),x);return s.NextResponse.json({filename:v,mimeType:r,kind:y})}[u]=p.then?(await p)():p,e.s(["POST",0,d,"dynamic",0,"force-dynamic","runtime",0,"nodejs"]),r()}catch(e){r(e)}},!1),122166,e=>e.a(async(t,r)=>{try{var a=e.i(765876),n=e.i(675896),s=e.i(959160),i=e.i(97944),o=e.i(86757),l=e.i(204144),u=e.i(273436),c=e.i(743641),p=e.i(813766),d=e.i(840884),f=e.i(498814),m=e.i(780006),h=e.i(544432),g=e.i(772005),y=e.i(450223),b=e.i(193695);e.i(628400);var x=e.i(800071),v=e.i(648834),w=t([v]);[v]=w.then?(await w)():w;let S=new a.AppRouteRouteModule({definition:{kind:n.RouteKind.APP_ROUTE,page:"/api/internal/assistant/attachments/route",pathname:"/api/internal/assistant/attachments",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/internal/assistant/attachments/route.ts",nextConfigOutput:"standalone",userland:v}),{workAsyncStorage:T,workUnitAsyncStorage:E,serverHooks:C}=S;async function R(e,t,r){r.requestMeta&&(0,i.setRequestMeta)(e,r.requestMeta),S.isDev&&(0,i.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let a="/api/internal/assistant/attachments/route";a=a.replace(/\/index$/,"")||"/";let s=await S.prepare(e,t,{srcPage:a,multiZoneDraftMode:!1});if(!s)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:v,params:w,nextConfig:R,parsedUrl:T,isDraftMode:E,prerenderManifest:C,routerServerContext:A,isOnDemandRevalidate:_,revalidateOnlyGenerated:j,resolvedPathname:k,clientReferenceManifest:M,serverActionsManifest:O}=s,N=(0,u.normalizeAppPath)(a),P=!!(C.dynamicRoutes[N]||C.routes[k]),D=async()=>((null==A?void 0:A.render404)?await A.render404(e,t,T,!1):t.end("This page could not be found"),null);if(P&&!E){let e=!!C.routes[k],t=C.dynamicRoutes[N];if(t&&!1===t.fallback&&!e){if(R.adapterPath)return await D();throw new b.NoFallbackError}}let I=null;!P||S.isDev||E||(I=k,I="/index"===I?"/":I);let q=!0===S.isDev||!P,U=P&&!q;O&&M&&(0,l.setManifestsSingleton)({page:a,clientReferenceManifest:M,serverActionsManifest:O});let $=e.method||"GET",L=(0,o.getTracer)(),V=L.getActiveScopeSpan(),F=!!(null==A?void 0:A.isWrappedByNextServer),H=!!(0,i.getRequestMeta)(e,"minimalMode"),G=(0,i.getRequestMeta)(e,"incrementalCache")||await S.getIncrementalCache(e,R,C,H);null==G||G.resetRequestCache(),globalThis.__incrementalCache=G;let B={params:w,previewProps:C.preview,renderOpts:{experimental:{authInterrupts:!!R.experimental.authInterrupts},cacheComponents:!!R.cacheComponents,supportsDynamicResponse:q,incrementalCache:G,cacheLifeProfiles:R.cacheLife,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,n)=>S.onRequestError(e,t,a,n,A)},sharedContext:{buildId:v}},X=new c.NodeNextRequest(e),W=new c.NodeNextResponse(t),K=p.NextRequestAdapter.fromNodeNextRequest(X,(0,p.signalFromNodeResponse)(t));try{let s,i=async e=>S.handle(K,B).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=L.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==d.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=r.get("next.route");if(n){let t=`${$} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t),s&&s!==e&&(s.setAttribute("http.route",n),s.updateName(t))}else e.updateName(`${$} ${a}`)}),l=async s=>{var o,l;let u=async({previousCacheEntry:n})=>{try{if(!H&&_&&j&&!n)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let a=await i(s);e.fetchMetrics=B.renderOpts.fetchMetrics;let o=B.renderOpts.pendingWaitUntil;o&&r.waitUntil&&(r.waitUntil(o),o=void 0);let l=B.renderOpts.collectedTags;if(!P)return await (0,m.sendResponse)(X,W,a,B.renderOpts.pendingWaitUntil),null;{let e=await a.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(a.headers);l&&(t[y.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==B.renderOpts.collectedRevalidate&&!(B.renderOpts.collectedRevalidate>=y.INFINITE_CACHE)&&B.renderOpts.collectedRevalidate,n=void 0===B.renderOpts.collectedExpire||B.renderOpts.collectedExpire>=y.INFINITE_CACHE?void 0:B.renderOpts.collectedExpire;return{value:{kind:x.CachedRouteKind.APP_ROUTE,status:a.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:n}}}}catch(t){throw(null==n?void 0:n.isStale)&&await S.onRequestError(e,t,{routerKind:"App Router",routePath:a,routeType:"route",revalidateReason:(0,f.getRevalidateReason)({isStaticGeneration:U,isOnDemandRevalidate:_})},!1,A),t}},c=await S.handleResponse({req:e,nextConfig:R,cacheKey:I,routeKind:n.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:C,isRoutePPREnabled:!1,isOnDemandRevalidate:_,revalidateOnlyGenerated:j,responseGenerator:u,waitUntil:r.waitUntil,isMinimalMode:H});if(!P)return null;if((null==c||null==(o=c.value)?void 0:o.kind)!==x.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==c||null==(l=c.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});H||t.setHeader("x-nextjs-cache",_?"REVALIDATED":c.isMiss?"MISS":c.isStale?"STALE":"HIT"),E&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let p=(0,h.fromNodeOutgoingHttpHeaders)(c.value.headers);return H&&P||p.delete(y.NEXT_CACHE_TAGS_HEADER),!c.cacheControl||t.getHeader("Cache-Control")||p.get("Cache-Control")||p.set("Cache-Control",(0,g.getCacheControlHeader)(c.cacheControl)),await (0,m.sendResponse)(X,W,new Response(c.value.body,{headers:p,status:c.value.status||200})),null};F&&V?await l(V):(s=L.getActiveScopeSpan(),await L.withPropagatedContext(e.headers,()=>L.trace(d.BaseServerSpan.handleRequest,{spanName:`${$} ${a}`,kind:o.SpanKind.SERVER,attributes:{"http.method":$,"http.target":e.url}},l),void 0,!F))}catch(t){if(t instanceof b.NoFallbackError||await S.onRequestError(e,t,{routerKind:"App Router",routePath:N,routeType:"route",revalidateReason:(0,f.getRevalidateReason)({isStaticGeneration:U,isOnDemandRevalidate:_})},!1,A),P)throw t;return await (0,m.sendResponse)(X,W,new Response(null,{status:500})),null}}e.s(["handler",0,R,"patchFetch",0,function(){return(0,s.patchFetch)({workAsyncStorage:T,workUnitAsyncStorage:E})},"routeModule",0,S,"serverHooks",0,C,"workAsyncStorage",0,T,"workUnitAsyncStorage",0,E]),r()}catch(e){r(e)}},!1)];
|
|
3
|
-
|
|
4
|
-
//# sourceMappingURL=%5Broot-of-the-server%5D__05353yb._.js.map
|