tower-studio 0.2.5 → 0.2.7
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 +45 -45
- 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 +1 -1
- 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/files/assets/[projectId]/[filename]/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/assets/[projectId]/[filename]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/internal/assets/reveal/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/cache/[...segments]/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/hooks/upload/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/api/tasks/[taskId]/diff/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[taskId]/merge/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 +1 -1
- 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 +45 -45
- 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 +45 -45
- 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 +58 -58
- package/.next/standalone/.next/server/app/settings/page.js +1 -1
- 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 +102 -102
- 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 +84 -84
- 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 +74 -74
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/page.js +1 -1
- 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 +45 -45
- 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 +84 -84
- 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 +88 -88
- package/.next/standalone/.next/server/app/workspaces/[workspaceId]/tasks/[taskId]/page.js +1 -1
- 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 +63 -63
- 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]__05eviiz._.js +2 -2
- 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]__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]__0wbndoc._.js +4 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__12c9noi._.js +3 -0
- package/.next/standalone/.next/server/chunks/{_0u-~jqd._.js → _0_eodxe._.js} +1 -1
- package/.next/standalone/.next/server/chunks/{src_0o_27yu._.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]__00wymqa._.js → [root-of-the-server]__04pq37d._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0cdz55-._.js → [root-of-the-server]__07_b6c.._.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]__0n8jy_r._.js → [root-of-the-server]__09kc.q_._.js} +2 -2
- 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]__0-xoiaj._.js → [root-of-the-server]__0jo1r7k._.js} +2 -2
- 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]__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]__0zjarb3._.js → [root-of-the-server]__0o8k4pc._.js} +2 -2
- 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]__0tc6uh2._.js +30 -0
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0ilem~v._.js → [root-of-the-server]__0u4gc4b._.js} +2 -2
- 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]__0zujp5l._.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/_02v3fjp._.js +7 -0
- 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/_07~0_w6._.js +7 -0
- package/.next/standalone/.next/server/chunks/ssr/_08w-r6e._.js +7 -0
- package/.next/standalone/.next/server/chunks/ssr/_0_l8.dg._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{_108e4..._.js → _0_q~7z7._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{_0lcigjh._.js → _0b0.-sj._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{_0ybhyal._.js → _0bw-tx8._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{_13l5s-p._.js → _0c-49y3._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{_0-t_os6._.js → _0c-jnbs._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/_0cj9a7y._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_0ds6nk2._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{_0wxd6t.._.js → _0f6u19w._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{_0l6vadw._.js → _0fob8fc._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/_0i4__mf._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_0ihq._v._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{_0cie3rm._.js → _0niubv5._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{_00pxhu2._.js → _0pd0.8f._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/_0r9w-k8._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{_0qu2yg4._.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/{_079ks~i._.js → _0y-7tle._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{_0_co86q._.js → _0ysygps._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{_13fpu~5._.js → _0ysyq9g._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{_0a-rizg._.js → _0zgu282._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{_07scffz._.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_095o8x6._.js +1 -1
- 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_0h36tj.._.js → src_lib_07rspg0._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{src_lib_0h3ouzu._.js → src_lib_0_8frs_._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{src_lib_0~jyveg._.js → src_lib_0fjk3hr._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{src_lib_0~rxy~0._.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 +318 -318
- package/.next/standalone/.next/static/chunks/{14se8w2gb9pe0.js → 00.52653v5c~c.js} +1 -1
- package/.next/standalone/.next/static/chunks/00j0mdc41wa44.js +1 -0
- package/.next/standalone/.next/static/chunks/{15qi~69blu~3u.js → 02edbrlq~2uyx.js} +1 -1
- package/.next/standalone/.next/static/chunks/05-ui_o~3irq_.js +5 -0
- package/.next/standalone/.next/static/chunks/05hls.3r4bz.0.js +1 -0
- package/.next/standalone/.next/static/chunks/{00grznzz_zqq~.js → 08~e63d2q~cam.js} +1 -1
- package/.next/standalone/.next/static/chunks/{0z0a_hlsye7mo.js → 0bw4ahlj4~l~g.js} +1 -1
- package/.next/standalone/.next/static/chunks/{0.p7x9h8h-..l.js → 0ft77ybyq903..js} +1 -1
- package/.next/standalone/.next/static/chunks/0fxm-wv..y_a_.js +5 -0
- package/.next/standalone/.next/static/chunks/0i55dediewjp5.js +1 -0
- package/.next/standalone/.next/static/chunks/{094hp8ak7su7z.js → 0l3mmc866npw4.js} +2 -2
- package/.next/standalone/.next/static/chunks/0nno5if2x1mvs.js +1 -0
- package/.next/standalone/.next/static/chunks/0q-u-hhre1uyw.js +1 -0
- package/.next/standalone/.next/static/chunks/0qazzw-pr_sv7.js +1 -0
- package/.next/standalone/.next/static/chunks/{0~p32xa2eu79e.js → 0r1mkt5qs~s6m.js} +1 -1
- package/.next/standalone/.next/static/chunks/{0mijmksouoprl.js → 0v~pz9e87t99b.js} +1 -1
- package/.next/standalone/.next/static/chunks/{018vr5fdl426p.js → 0w3jww1m3k77x.js} +1 -1
- package/.next/standalone/.next/static/chunks/0z01g02xstbqe.js +1 -0
- package/.next/standalone/.next/static/chunks/0~27mkhc9s5k2.js +5 -0
- package/.next/standalone/.next/static/chunks/117qu902jput3.js +1 -0
- package/.next/standalone/.next/static/chunks/142w-q8.7m3kl.js +1 -0
- package/.next/standalone/package.json +2 -1
- package/bin/tower.mjs +3 -0
- package/dist/mcp-server.cjs +235 -34
- package/package.json +2 -1
- package/skills/tower/SKILL.md +381 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0-eibah._.js +0 -4
- 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]__07h7qz8._.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]__0_q8qjf._.js +0 -20
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0c1g5im._.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]__0ntb7n~._.js +0 -11
- 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]__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]__0qz9-me._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0vasg9u._.js +0 -3
- 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]__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]__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]__0y.nw7l._.js +0 -30
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__102siqc._.js +0 -3
- 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/_0h0r8fk._.js +0 -7
- package/.next/standalone/.next/server/chunks/ssr/_0j_v~sp._.js +0 -7
- package/.next/standalone/.next/server/chunks/ssr/_0xh9m4.._.js +0 -7
- package/.next/standalone/.next/static/chunks/0-wn9b_4jrs.9.js +0 -1
- package/.next/standalone/.next/static/chunks/00jlfmav1nk82.js +0 -1
- package/.next/standalone/.next/static/chunks/0a5u1~0._dmx8.js +0 -1
- package/.next/standalone/.next/static/chunks/0fe_jnfm0lqm..js +0 -5
- package/.next/standalone/.next/static/chunks/0jk6ji4j.3jod.js +0 -5
- package/.next/standalone/.next/static/chunks/0lq1_ynox5frw.js +0 -1
- package/.next/standalone/.next/static/chunks/0qy~pj-p.oh92.js +0 -1
- package/.next/standalone/.next/static/chunks/0y_vg.f~zs~zl.js +0 -1
- package/.next/standalone/.next/static/chunks/0~2v6ague-7-t.js +0 -5
- package/.next/standalone/.next/static/chunks/10ih_a9~empst.js +0 -1
- package/.next/standalone/.next/static/chunks/16.w_z6.3sf2v.js +0 -1
- package/.next/standalone/.next/static/chunks/17wptayhzwy6g.js +0 -1
- /package/.next/standalone/.next/static/{eRr9P5hixKpzabeXJ-AvA → om3SyUw4eAwMA0KLhpSGh}/_buildManifest.js +0 -0
- /package/.next/standalone/.next/static/{eRr9P5hixKpzabeXJ-AvA → om3SyUw4eAwMA0KLhpSGh}/_clientMiddlewareManifest.js +0 -0
- /package/.next/standalone/.next/static/{eRr9P5hixKpzabeXJ-AvA → om3SyUw4eAwMA0KLhpSGh}/_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,19 +26581,40 @@ 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
|
+
];
|
|
26595
|
+
}
|
|
26596
|
+
});
|
|
26597
|
+
|
|
26598
|
+
// src/lib/tower-paths.ts
|
|
26599
|
+
function getPackageRoot() {
|
|
26600
|
+
return process.env.TOWER_PACKAGE_ROOT || process.cwd();
|
|
26601
|
+
}
|
|
26602
|
+
var init_tower_paths = __esm({
|
|
26603
|
+
"src/lib/tower-paths.ts"() {
|
|
26604
|
+
"use strict";
|
|
26406
26605
|
}
|
|
26407
26606
|
});
|
|
26408
26607
|
|
|
26409
26608
|
// src/lib/ai/adapters/cli/claude-cli-adapter.ts
|
|
26410
|
-
var
|
|
26609
|
+
var fs3, os2, path4, CLAUDE_MODELS, ClaudeCliAdapter;
|
|
26411
26610
|
var init_claude_cli_adapter = __esm({
|
|
26412
26611
|
"src/lib/ai/adapters/cli/claude-cli-adapter.ts"() {
|
|
26413
26612
|
"use strict";
|
|
26414
|
-
|
|
26613
|
+
fs3 = __toESM(require("node:fs"));
|
|
26415
26614
|
os2 = __toESM(require("node:os"));
|
|
26416
26615
|
path4 = __toESM(require("node:path"));
|
|
26417
26616
|
init_platform();
|
|
26617
|
+
init_tower_paths();
|
|
26418
26618
|
CLAUDE_MODELS = ["sonnet", "opus", "haiku", "claude-sonnet-4-6", "claude-opus-4-6", "claude-haiku-4-5-20251001"];
|
|
26419
26619
|
ClaudeCliAdapter = class {
|
|
26420
26620
|
buildSpawnArgs(opts) {
|
|
@@ -26467,7 +26667,7 @@ var init_claude_cli_adapter = __esm({
|
|
|
26467
26667
|
try {
|
|
26468
26668
|
const settings = this.readSettings();
|
|
26469
26669
|
const hooks = settings["hooks"] ?? {};
|
|
26470
|
-
const root =
|
|
26670
|
+
const root = getPackageRoot().replace(/\\/g, "/");
|
|
26471
26671
|
let changed = false;
|
|
26472
26672
|
const sessionStartEntries = this.getHookArray(hooks, "SessionStart");
|
|
26473
26673
|
if (!this.hasHook(sessionStartEntries, "session-start-hook.js")) {
|
|
@@ -26608,7 +26808,7 @@ var init_claude_cli_adapter = __esm({
|
|
|
26608
26808
|
async installSkill(skillName, sourceDir) {
|
|
26609
26809
|
const target = path4.join(this.getConfigDir(), "skills", skillName);
|
|
26610
26810
|
try {
|
|
26611
|
-
if (!
|
|
26811
|
+
if (!fs3.existsSync(sourceDir)) {
|
|
26612
26812
|
return {
|
|
26613
26813
|
ok: false,
|
|
26614
26814
|
method: "symlink",
|
|
@@ -26616,15 +26816,15 @@ var init_claude_cli_adapter = __esm({
|
|
|
26616
26816
|
error: `Source skill dir does not exist: ${sourceDir}`
|
|
26617
26817
|
};
|
|
26618
26818
|
}
|
|
26619
|
-
|
|
26620
|
-
const existing = await
|
|
26819
|
+
fs3.mkdirSync(path4.dirname(target), { recursive: true });
|
|
26820
|
+
const existing = await fs3.promises.lstat(target).catch(() => null);
|
|
26621
26821
|
if (existing) {
|
|
26622
26822
|
if (existing.isSymbolicLink()) {
|
|
26623
|
-
const current = await
|
|
26823
|
+
const current = await fs3.promises.readlink(target);
|
|
26624
26824
|
if (path4.resolve(current) === path4.resolve(sourceDir)) {
|
|
26625
26825
|
return { ok: true, method: "symlink", detail: `${target} \u2192 ${sourceDir} (already)` };
|
|
26626
26826
|
}
|
|
26627
|
-
await
|
|
26827
|
+
await fs3.promises.unlink(target);
|
|
26628
26828
|
} else {
|
|
26629
26829
|
return {
|
|
26630
26830
|
ok: false,
|
|
@@ -26634,7 +26834,7 @@ var init_claude_cli_adapter = __esm({
|
|
|
26634
26834
|
};
|
|
26635
26835
|
}
|
|
26636
26836
|
}
|
|
26637
|
-
await
|
|
26837
|
+
await fs3.promises.symlink(sourceDir, target, "dir");
|
|
26638
26838
|
return { ok: true, method: "symlink", detail: `${target} \u2192 ${sourceDir}` };
|
|
26639
26839
|
} catch (err) {
|
|
26640
26840
|
return {
|
|
@@ -26648,7 +26848,7 @@ var init_claude_cli_adapter = __esm({
|
|
|
26648
26848
|
async uninstallSkill(skillName) {
|
|
26649
26849
|
const target = path4.join(this.getConfigDir(), "skills", skillName);
|
|
26650
26850
|
try {
|
|
26651
|
-
const stat = await
|
|
26851
|
+
const stat = await fs3.promises.lstat(target).catch(() => null);
|
|
26652
26852
|
if (!stat) return { ok: true, method: "symlink", detail: `${target} (already absent)` };
|
|
26653
26853
|
if (!stat.isSymbolicLink()) {
|
|
26654
26854
|
return {
|
|
@@ -26658,7 +26858,7 @@ var init_claude_cli_adapter = __esm({
|
|
|
26658
26858
|
error: `Refusing to remove non-symlink at ${target}`
|
|
26659
26859
|
};
|
|
26660
26860
|
}
|
|
26661
|
-
await
|
|
26861
|
+
await fs3.promises.unlink(target);
|
|
26662
26862
|
return { ok: true, method: "symlink", detail: target };
|
|
26663
26863
|
} catch (err) {
|
|
26664
26864
|
return {
|
|
@@ -26672,10 +26872,10 @@ var init_claude_cli_adapter = __esm({
|
|
|
26672
26872
|
async isSkillInstalled(skillName, expectedSourceDir) {
|
|
26673
26873
|
const target = path4.join(this.getConfigDir(), "skills", skillName);
|
|
26674
26874
|
try {
|
|
26675
|
-
const stat = await
|
|
26875
|
+
const stat = await fs3.promises.lstat(target);
|
|
26676
26876
|
if (!stat.isSymbolicLink()) return false;
|
|
26677
26877
|
if (!expectedSourceDir) return true;
|
|
26678
|
-
const current = await
|
|
26878
|
+
const current = await fs3.promises.readlink(target);
|
|
26679
26879
|
const resolved = path4.isAbsolute(current) ? current : path4.resolve(path4.dirname(target), current);
|
|
26680
26880
|
return path4.resolve(resolved) === path4.resolve(expectedSourceDir);
|
|
26681
26881
|
} catch {
|
|
@@ -26701,9 +26901,10 @@ var init_claude_cli_adapter = __esm({
|
|
|
26701
26901
|
try {
|
|
26702
26902
|
const { execFile } = await import("child_process");
|
|
26703
26903
|
const { promisify } = await import("util");
|
|
26904
|
+
const { resolveSpawnTarget: resolveSpawnTarget2 } = await Promise.resolve().then(() => (init_platform(), platform_exports));
|
|
26704
26905
|
const execFileAsync = promisify(execFile);
|
|
26705
|
-
const
|
|
26706
|
-
const { stdout } = await execFileAsync(
|
|
26906
|
+
const target = await resolveSpawnTarget2(this.resolveCommand(), ["--version"]);
|
|
26907
|
+
const { stdout } = await execFileAsync(target.command, target.args, { timeout: 5e3 });
|
|
26707
26908
|
return stdout.trim() || null;
|
|
26708
26909
|
} catch {
|
|
26709
26910
|
return null;
|
|
@@ -26724,10 +26925,10 @@ var init_claude_cli_adapter = __esm({
|
|
|
26724
26925
|
getApiKeyInfo() {
|
|
26725
26926
|
return { envVar: "ANTHROPIC_API_KEY", required: false };
|
|
26726
26927
|
}
|
|
26727
|
-
buildHelloProbeArgs() {
|
|
26928
|
+
buildHelloProbeArgs(prompt) {
|
|
26728
26929
|
return {
|
|
26729
26930
|
command: this.resolveCommand(),
|
|
26730
|
-
args: ["--print",
|
|
26931
|
+
args: ["--print", prompt, "--output-format", "stream-json", "--verbose"]
|
|
26731
26932
|
};
|
|
26732
26933
|
}
|
|
26733
26934
|
/** Resolve claude binary — env var > platform-aware resolution.
|
|
@@ -26742,15 +26943,15 @@ var init_claude_cli_adapter = __esm({
|
|
|
26742
26943
|
}
|
|
26743
26944
|
readSettings() {
|
|
26744
26945
|
try {
|
|
26745
|
-
return JSON.parse(
|
|
26946
|
+
return JSON.parse(fs3.readFileSync(this.getSettingsPath(), "utf-8"));
|
|
26746
26947
|
} catch {
|
|
26747
26948
|
return {};
|
|
26748
26949
|
}
|
|
26749
26950
|
}
|
|
26750
26951
|
writeSettings(data) {
|
|
26751
26952
|
const dir = this.getConfigDir();
|
|
26752
|
-
if (!
|
|
26753
|
-
|
|
26953
|
+
if (!fs3.existsSync(dir)) fs3.mkdirSync(dir, { recursive: true });
|
|
26954
|
+
fs3.writeFileSync(this.getSettingsPath(), JSON.stringify(data, null, 2), "utf-8");
|
|
26754
26955
|
}
|
|
26755
26956
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
26756
26957
|
getHookArray(hooks, event) {
|
|
@@ -47682,7 +47883,7 @@ var require_windowsPtyAgent = __commonJS({
|
|
|
47682
47883
|
"use strict";
|
|
47683
47884
|
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
47684
47885
|
exports2.argsToCommandLine = exports2.WindowsPtyAgent = void 0;
|
|
47685
|
-
var
|
|
47886
|
+
var fs5 = require("fs");
|
|
47686
47887
|
var os4 = require("os");
|
|
47687
47888
|
var path6 = require("path");
|
|
47688
47889
|
var child_process_1 = require("child_process");
|
|
@@ -47741,7 +47942,7 @@ var require_windowsPtyAgent = __commonJS({
|
|
|
47741
47942
|
this._outSocket.on("connect", function() {
|
|
47742
47943
|
_this._outSocket.emit("ready_datapipe");
|
|
47743
47944
|
});
|
|
47744
|
-
var inSocketFD =
|
|
47945
|
+
var inSocketFD = fs5.openSync(term.conin, "w");
|
|
47745
47946
|
this._inSocket = new net_1.Socket({
|
|
47746
47947
|
fd: inSocketFD,
|
|
47747
47948
|
readable: false,
|
|
@@ -48175,7 +48376,7 @@ var require_unixTerminal = __commonJS({
|
|
|
48175
48376
|
})();
|
|
48176
48377
|
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
48177
48378
|
exports2.UnixTerminal = void 0;
|
|
48178
|
-
var
|
|
48379
|
+
var fs5 = require("fs");
|
|
48179
48380
|
var path6 = require("path");
|
|
48180
48381
|
var tty = require("tty");
|
|
48181
48382
|
var terminal_1 = require_terminal();
|
|
@@ -48438,7 +48639,7 @@ var require_unixTerminal = __commonJS({
|
|
|
48438
48639
|
return;
|
|
48439
48640
|
}
|
|
48440
48641
|
var task = this._writeQueue[0];
|
|
48441
|
-
|
|
48642
|
+
fs5.write(this._fd, task.buffer, task.offset, function(err, written) {
|
|
48442
48643
|
if (err) {
|
|
48443
48644
|
if ("code" in err && err.code === "EAGAIN") {
|
|
48444
48645
|
_this._writeImmediate = setImmediate(function() {
|
|
@@ -49792,7 +49993,7 @@ var knowledgeTools = {
|
|
|
49792
49993
|
|
|
49793
49994
|
// src/mcp/tools/note-asset-tools.ts
|
|
49794
49995
|
init_zod();
|
|
49795
|
-
var
|
|
49996
|
+
var fs4 = __toESM(require("node:fs"));
|
|
49796
49997
|
var path5 = __toESM(require("node:path"));
|
|
49797
49998
|
|
|
49798
49999
|
// src/lib/fts.ts
|
|
@@ -49949,17 +50150,17 @@ async function handleManageAssets(args) {
|
|
|
49949
50150
|
const filename = args.filename ?? path5.basename(args.sourcePath);
|
|
49950
50151
|
const destPath = path5.join(assetsDir, filename);
|
|
49951
50152
|
try {
|
|
49952
|
-
|
|
50153
|
+
fs4.renameSync(args.sourcePath, destPath);
|
|
49953
50154
|
} catch (err) {
|
|
49954
50155
|
const nodeErr = err;
|
|
49955
50156
|
if (nodeErr.code === "EXDEV") {
|
|
49956
|
-
|
|
49957
|
-
|
|
50157
|
+
fs4.copyFileSync(args.sourcePath, destPath);
|
|
50158
|
+
fs4.unlinkSync(args.sourcePath);
|
|
49958
50159
|
} else {
|
|
49959
50160
|
throw err;
|
|
49960
50161
|
}
|
|
49961
50162
|
}
|
|
49962
|
-
const stats =
|
|
50163
|
+
const stats = fs4.statSync(destPath);
|
|
49963
50164
|
const asset = await db.projectAsset.create({
|
|
49964
50165
|
data: {
|
|
49965
50166
|
filename,
|
|
@@ -49985,13 +50186,13 @@ async function handleManageAssets(args) {
|
|
|
49985
50186
|
filename = `upload-${Date.now()}${ext}`;
|
|
49986
50187
|
}
|
|
49987
50188
|
let destPath = path5.join(assetsDir, filename);
|
|
49988
|
-
if (
|
|
50189
|
+
if (fs4.existsSync(destPath)) {
|
|
49989
50190
|
const ext = path5.extname(filename);
|
|
49990
50191
|
const base = path5.basename(filename, ext);
|
|
49991
50192
|
filename = `${base}-${Date.now()}${ext}`;
|
|
49992
50193
|
destPath = path5.join(assetsDir, filename);
|
|
49993
50194
|
}
|
|
49994
|
-
|
|
50195
|
+
fs4.writeFileSync(destPath, buffer);
|
|
49995
50196
|
const asset = await db.projectAsset.create({
|
|
49996
50197
|
data: {
|
|
49997
50198
|
filename,
|
|
@@ -50023,8 +50224,8 @@ async function handleManageAssets(args) {
|
|
|
50023
50224
|
throw new Error("assetId required");
|
|
50024
50225
|
}
|
|
50025
50226
|
const asset = await db.projectAsset.findUnique({ where: { id: args.assetId } });
|
|
50026
|
-
if (asset?.path &&
|
|
50027
|
-
|
|
50227
|
+
if (asset?.path && fs4.existsSync(asset.path)) {
|
|
50228
|
+
fs4.unlinkSync(asset.path);
|
|
50028
50229
|
}
|
|
50029
50230
|
await db.projectAsset.delete({ where: { id: args.assetId } });
|
|
50030
50231
|
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.7",
|
|
4
4
|
"description": "AI Task Orchestration Platform — Kanban + Terminal + Code Editor + MCP",
|
|
5
5
|
"bin": {
|
|
6
6
|
"tower": "bin/tower.mjs"
|
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
"scripts/session-start-hook.js",
|
|
23
23
|
"scripts/stop-hook.js",
|
|
24
24
|
"dist/mcp-server.cjs",
|
|
25
|
+
"skills/",
|
|
25
26
|
"src/mcp/",
|
|
26
27
|
"next.config.ts",
|
|
27
28
|
"tsconfig.json"
|