@slycode/slycode 0.2.21 → 0.2.23
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/dist/bridge/api.d.ts +2 -1
- package/dist/bridge/api.js +114 -1
- package/dist/bridge/api.js.map +1 -1
- package/dist/bridge/git-utils.d.ts +9 -0
- package/dist/bridge/git-utils.js +49 -0
- package/dist/bridge/git-utils.js.map +1 -0
- package/dist/bridge/index.js +8 -2
- package/dist/bridge/index.js.map +1 -1
- package/dist/bridge/provider-utils.d.ts +10 -0
- package/dist/bridge/provider-utils.js +5 -1
- package/dist/bridge/provider-utils.js.map +1 -1
- package/dist/bridge/response-store.d.ts +46 -0
- package/dist/bridge/response-store.js +95 -0
- package/dist/bridge/response-store.js.map +1 -0
- package/dist/bridge/session-manager.d.ts +33 -1
- package/dist/bridge/session-manager.js +191 -2
- package/dist/bridge/session-manager.js.map +1 -1
- package/dist/bridge/types.d.ts +41 -0
- package/dist/data/scaffold-templates/tutorial-project/documentation/kanban.json +1 -1
- package/dist/messaging/bridge-client.d.ts +7 -3
- package/dist/messaging/bridge-client.js +26 -5
- package/dist/messaging/bridge-client.js.map +1 -1
- package/dist/messaging/index.js +149 -30
- package/dist/messaging/index.js.map +1 -1
- package/dist/messaging/state.d.ts +3 -0
- package/dist/messaging/state.js +13 -0
- package/dist/messaging/state.js.map +1 -1
- package/dist/messaging/types.d.ts +3 -0
- package/dist/scripts/kanban.js +448 -2
- package/dist/store/actions/checkpoint.md +1 -1
- package/dist/store/actions/context.md +1 -1
- package/dist/store/actions/create-card.md +1 -1
- package/dist/store/actions/deep-design.md +13 -3
- package/dist/store/actions/design-requirements.md +11 -1
- package/dist/store/actions/explore.md +1 -1
- package/dist/store/actions/onboard.md +2 -4
- package/dist/store/actions/summarize.md +1 -1
- package/dist/store/skills/kanban/SKILL.md +77 -3
- package/dist/web/.next/BUILD_ID +1 -1
- package/dist/web/.next/app-path-routes-manifest.json +1 -0
- package/dist/web/.next/build-manifest.json +2 -2
- package/dist/web/.next/prerender-manifest.json +3 -3
- package/dist/web/.next/routes-manifest.json +6 -0
- package/dist/web/.next/server/app/_global-error.html +2 -2
- package/dist/web/.next/server/app/_global-error.rsc +1 -1
- package/dist/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/dist/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/dist/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/dist/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/dist/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/dist/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/dist/web/.next/server/app/_not-found.html +1 -1
- package/dist/web/.next/server/app/_not-found.rsc +10 -10
- package/dist/web/.next/server/app/_not-found.segments/_full.segment.rsc +10 -10
- package/dist/web/.next/server/app/_not-found.segments/_head.segment.rsc +4 -4
- package/dist/web/.next/server/app/_not-found.segments/_index.segment.rsc +5 -5
- package/dist/web/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
- package/dist/web/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
- package/dist/web/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/dist/web/.next/server/app/api/areas/route.js +1 -1
- package/dist/web/.next/server/app/api/areas/route.js.nft.json +1 -1
- package/dist/web/.next/server/app/api/bridge/[...path]/route.js +1 -1
- package/dist/web/.next/server/app/api/bridge/[...path]/route.js.nft.json +1 -1
- package/dist/web/.next/server/app/api/changelog/route/app-paths-manifest.json +3 -0
- package/dist/web/.next/server/app/api/changelog/route/build-manifest.json +11 -0
- package/dist/web/.next/server/app/api/changelog/route/server-reference-manifest.json +4 -0
- package/dist/web/.next/server/app/api/changelog/route.js +7 -0
- package/dist/web/.next/server/app/api/changelog/route.js.map +5 -0
- package/dist/web/.next/server/app/api/changelog/route.js.nft.json +1 -0
- package/dist/web/.next/server/app/api/changelog/route_client-reference-manifest.js +2 -0
- package/dist/web/.next/server/app/api/cli-assets/assistant/route.js +1 -1
- package/dist/web/.next/server/app/api/cli-assets/assistant/route.js.nft.json +1 -1
- package/dist/web/.next/server/app/api/cli-assets/fix/route.js +1 -1
- package/dist/web/.next/server/app/api/cli-assets/fix/route.js.nft.json +1 -1
- package/dist/web/.next/server/app/api/cli-assets/import/route.js +1 -1
- package/dist/web/.next/server/app/api/cli-assets/import/route.js.nft.json +1 -1
- package/dist/web/.next/server/app/api/cli-assets/route.js +2 -2
- package/dist/web/.next/server/app/api/cli-assets/route.js.nft.json +1 -1
- package/dist/web/.next/server/app/api/cli-assets/store/preview/route.js +1 -1
- package/dist/web/.next/server/app/api/cli-assets/store/preview/route.js.nft.json +1 -1
- package/dist/web/.next/server/app/api/cli-assets/store/route.js +2 -2
- package/dist/web/.next/server/app/api/cli-assets/store/route.js.nft.json +1 -1
- package/dist/web/.next/server/app/api/cli-assets/sync/route.js +1 -1
- package/dist/web/.next/server/app/api/cli-assets/sync/route.js.nft.json +1 -1
- package/dist/web/.next/server/app/api/cli-assets/updates/route.js +2 -2
- package/dist/web/.next/server/app/api/cli-assets/updates/route.js.nft.json +1 -1
- package/dist/web/.next/server/app/api/dashboard/route.js +2 -2
- package/dist/web/.next/server/app/api/dashboard/route.js.nft.json +1 -1
- package/dist/web/.next/server/app/api/events/route.js +1 -1
- package/dist/web/.next/server/app/api/events/route.js.nft.json +1 -1
- package/dist/web/.next/server/app/api/file/route.js +1 -1
- package/dist/web/.next/server/app/api/file/route.js.nft.json +1 -1
- package/dist/web/.next/server/app/api/git-status/route.js +1 -1
- package/dist/web/.next/server/app/api/git-status/route.js.nft.json +1 -1
- package/dist/web/.next/server/app/api/kanban/route.js +1 -1
- package/dist/web/.next/server/app/api/kanban/route.js.nft.json +1 -1
- package/dist/web/.next/server/app/api/kanban/stream/route.js +1 -1
- package/dist/web/.next/server/app/api/kanban/stream/route.js.nft.json +1 -1
- package/dist/web/.next/server/app/api/projects/[id]/route.js +2 -2
- package/dist/web/.next/server/app/api/projects/[id]/route.js.nft.json +1 -1
- package/dist/web/.next/server/app/api/projects/analyze/route.js +1 -1
- package/dist/web/.next/server/app/api/projects/analyze/route.js.nft.json +1 -1
- package/dist/web/.next/server/app/api/projects/reorder/route.js +2 -2
- package/dist/web/.next/server/app/api/projects/reorder/route.js.nft.json +1 -1
- package/dist/web/.next/server/app/api/projects/route.js +2 -2
- package/dist/web/.next/server/app/api/projects/route.js.nft.json +1 -1
- package/dist/web/.next/server/app/api/providers/route.js +1 -1
- package/dist/web/.next/server/app/api/providers/route.js.nft.json +1 -1
- package/dist/web/.next/server/app/api/scheduler/route.js +1 -1
- package/dist/web/.next/server/app/api/scheduler/route.js.nft.json +1 -1
- package/dist/web/.next/server/app/api/search/route.js +1 -1
- package/dist/web/.next/server/app/api/search/route.js.nft.json +1 -1
- package/dist/web/.next/server/app/api/settings/route.js +1 -1
- package/dist/web/.next/server/app/api/settings/route.js.nft.json +1 -1
- package/dist/web/.next/server/app/api/sly-actions/invalidate/route.js +1 -1
- package/dist/web/.next/server/app/api/sly-actions/invalidate/route.js.nft.json +1 -1
- package/dist/web/.next/server/app/api/sly-actions/route.js +1 -1
- package/dist/web/.next/server/app/api/sly-actions/route.js.nft.json +1 -1
- package/dist/web/.next/server/app/api/sly-actions/stream/route.js +1 -1
- package/dist/web/.next/server/app/api/sly-actions/stream/route.js.nft.json +1 -1
- package/dist/web/.next/server/app/api/system-stats/route.js +1 -1
- package/dist/web/.next/server/app/api/system-stats/route.js.nft.json +1 -1
- package/dist/web/.next/server/app/api/terminal-classes/route.js +1 -1
- package/dist/web/.next/server/app/api/terminal-classes/route.js.nft.json +1 -1
- package/dist/web/.next/server/app/api/transcribe/route.js +5 -5
- package/dist/web/.next/server/app/api/transcribe/route.js.nft.json +1 -1
- package/dist/web/.next/server/app/api/version-check/route.js +1 -1
- package/dist/web/.next/server/app/api/version-check/route.js.nft.json +1 -1
- package/dist/web/.next/server/app/page.js +1 -1
- package/dist/web/.next/server/app/page.js.nft.json +1 -1
- package/dist/web/.next/server/app/page_client-reference-manifest.js +1 -1
- package/dist/web/.next/server/app/project/[id]/page.js +2 -2
- package/dist/web/.next/server/app/project/[id]/page.js.nft.json +1 -1
- package/dist/web/.next/server/app/project/[id]/page_client-reference-manifest.js +1 -1
- package/dist/web/.next/server/app-paths-manifest.json +1 -0
- package/dist/web/.next/server/chunks/{[externals]__c6831f39._.js → [externals]__78e522ea._.js} +2 -2
- package/dist/web/.next/server/chunks/{[root-of-the-server]__1ec21ccc._.js → [root-of-the-server]__029203cd._.js} +3 -3
- package/dist/web/.next/server/chunks/{[root-of-the-server]__4297cb97._.js → [root-of-the-server]__0d6d4443._.js} +1 -1
- package/dist/web/.next/server/chunks/[root-of-the-server]__172ad0b1._.js +18 -0
- package/dist/web/.next/server/chunks/[root-of-the-server]__1c5f4ef9._.js +3 -0
- package/dist/web/.next/server/chunks/[root-of-the-server]__1cab11f0._.js +3 -0
- package/dist/web/.next/server/chunks/{[root-of-the-server]__0f69c28a._.js → [root-of-the-server]__1eb3f172._.js} +2 -2
- package/dist/web/.next/server/chunks/[root-of-the-server]__22cba275._.js +3 -0
- package/dist/web/.next/server/chunks/[root-of-the-server]__2543e413._.js +3 -0
- package/dist/web/.next/server/chunks/[root-of-the-server]__2c42a835._.js +3 -0
- package/dist/web/.next/server/chunks/[root-of-the-server]__2ed0ff47._.js +3 -0
- package/dist/web/.next/server/chunks/[root-of-the-server]__35454eea._.js +27 -0
- package/dist/web/.next/server/chunks/[root-of-the-server]__35768b56._.js +3 -0
- package/dist/web/.next/server/chunks/[root-of-the-server]__3880228a._.js +3 -0
- package/dist/web/.next/server/chunks/[root-of-the-server]__42322d88._.js +3 -0
- package/dist/web/.next/server/chunks/{[root-of-the-server]__d0f4efec._.js → [root-of-the-server]__5152eeff._.js} +3 -3
- package/dist/web/.next/server/chunks/[root-of-the-server]__527c7f57._.js +3 -0
- package/dist/web/.next/server/chunks/[root-of-the-server]__5c5dac4b._.js +3 -0
- package/dist/web/.next/server/chunks/[root-of-the-server]__5cb130f2._.js +3 -0
- package/dist/web/.next/server/chunks/[root-of-the-server]__68927e75._.js +3 -0
- package/dist/web/.next/server/chunks/[root-of-the-server]__719517c7._.js +3 -0
- package/dist/web/.next/server/chunks/[root-of-the-server]__73cf49c2._.js +3 -0
- package/dist/web/.next/server/chunks/{[root-of-the-server]__f5dae2ad._.js → [root-of-the-server]__7af4ab09._.js} +1 -1
- package/dist/web/.next/server/chunks/{[root-of-the-server]__4244617a._.js → [root-of-the-server]__7e6860e0._.js} +3 -3
- package/dist/web/.next/server/chunks/[root-of-the-server]__88bf5e22._.js +3 -0
- package/dist/web/.next/server/chunks/{[root-of-the-server]__f97e93fa._.js → [root-of-the-server]__8b4259cb._.js} +3 -3
- package/dist/web/.next/server/chunks/[root-of-the-server]__92f81907._.js +3 -0
- package/dist/web/.next/server/chunks/[root-of-the-server]__967603e9._.js +3 -0
- package/dist/web/.next/server/chunks/[root-of-the-server]__9e4bd28f._.js +3 -0
- package/dist/web/.next/server/chunks/[root-of-the-server]__a259539f._.js +3 -0
- package/dist/web/.next/server/chunks/[root-of-the-server]__ba1d2e56._.js +3 -0
- package/dist/web/.next/server/chunks/[root-of-the-server]__c942d872._.js +3 -0
- package/dist/web/.next/server/chunks/[root-of-the-server]__d7893622._.js +3 -0
- package/dist/web/.next/server/chunks/{[root-of-the-server]__3b9d3e43._.js → [root-of-the-server]__d843611b._.js} +6 -6
- package/dist/web/.next/server/chunks/[root-of-the-server]__f4d2627f._.js +3 -0
- package/dist/web/.next/server/chunks/[root-of-the-server]__f597835d._.js +3 -0
- package/dist/web/.next/server/chunks/{[root-of-the-server]__cf14e306._.js → [root-of-the-server]__fe8b9abd._.js} +1 -1
- package/dist/web/.next/server/chunks/_next-internal_server_app_api_changelog_route_actions_d6e239bf.js +3 -0
- package/dist/web/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_18324462.js +1 -1
- package/dist/web/.next/server/chunks/src_677020aa._.js +1 -1
- package/dist/web/.next/server/chunks/src_lib_scheduler_ts_03988e3e._.js +1 -1
- package/dist/web/.next/server/chunks/src_lib_scheduler_ts_7120457c._.js +1 -1
- package/dist/web/.next/server/chunks/ssr/[root-of-the-server]__1f5fc489._.js +4 -3
- package/dist/web/.next/server/chunks/ssr/[root-of-the-server]__43d93717._.js +3 -0
- package/dist/web/.next/server/chunks/ssr/{[root-of-the-server]__077f472c._.js → [root-of-the-server]__6183d28c._.js} +1 -1
- package/dist/web/.next/server/chunks/ssr/[root-of-the-server]__90f82e6d._.js +3 -0
- package/dist/web/.next/server/chunks/ssr/[root-of-the-server]__bcbe4bf2._.js +4 -3
- package/dist/web/.next/server/chunks/ssr/src_components_Dashboard_tsx_efc4dc27._.js +1 -1
- package/dist/web/.next/server/chunks/ssr/src_components_c4135402._.js +1 -1
- package/dist/web/.next/server/chunks/ssr/src_contexts_VoiceContext_tsx_cfba7292._.js +1 -1
- package/dist/web/.next/server/chunks/ssr/src_lib_registry_ts_2fc87c9c._.js +1 -1
- package/dist/web/.next/server/pages/404.html +1 -1
- package/dist/web/.next/server/pages/500.html +2 -2
- package/dist/web/.next/server/server-reference-manifest.js +1 -1
- package/dist/web/.next/server/server-reference-manifest.json +1 -1
- package/dist/web/.next/static/chunks/293449b828207656.css +1 -0
- package/dist/web/.next/static/chunks/{f55f3c8c1a52f80c.js → 3859477038c381ad.js} +1 -1
- package/dist/web/.next/static/chunks/3a5721af09d1c753.js +5 -0
- package/dist/web/.next/static/chunks/{8fb2a99c64580de7.js → 98311243e9a5a0ec.js} +1 -1
- package/dist/web/.next/static/chunks/{b8e0c1aeea4a14bc.js → a47f36b030917d1f.js} +1 -1
- package/dist/web/.next/static/chunks/d60c422421920130.js +5 -0
- package/dist/web/.next/static/chunks/{4049cceee6a49323.js → fa78afe3ceed998b.js} +1 -1
- package/dist/web/src/app/api/changelog/route.ts +45 -0
- package/dist/web/src/app/api/kanban/route.ts +52 -12
- package/dist/web/src/app/api/projects/analyze/route.ts +12 -2
- package/dist/web/src/app/api/projects/route.ts +1 -11
- package/dist/web/src/app/api/providers/route.ts +4 -0
- package/dist/web/src/components/ActivityFeed.tsx +3 -0
- package/dist/web/src/components/BranchTab.tsx +115 -0
- package/dist/web/src/components/ChangelogModal.tsx +234 -0
- package/dist/web/src/components/ClaudeTerminalPanel.tsx +124 -70
- package/dist/web/src/components/Dashboard.tsx +11 -0
- package/dist/web/src/components/GlobalClaudePanel.tsx +6 -0
- package/dist/web/src/components/ProjectKanban.tsx +38 -8
- package/dist/web/src/components/VersionUpdateToast.tsx +6 -4
- package/dist/web/src/components/VoiceControlBar.tsx +1 -1
- package/dist/web/src/lib/paths.ts +14 -0
- package/dist/web/src/lib/scheduler.ts +2 -1
- package/dist/web/src/lib/types.ts +24 -0
- package/dist/web/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/templates/changelog.json +242 -0
- package/templates/kanban-seed.json +1 -1
- package/templates/store/actions/checkpoint.md +1 -1
- package/templates/store/actions/context.md +1 -1
- package/templates/store/actions/create-card.md +1 -1
- package/templates/store/actions/deep-design.md +13 -3
- package/templates/store/actions/design-requirements.md +11 -1
- package/templates/store/actions/explore.md +1 -1
- package/templates/store/actions/onboard.md +2 -4
- package/templates/store/actions/summarize.md +1 -1
- package/templates/store/skills/kanban/SKILL.md +77 -3
- package/templates/tutorial-project/documentation/kanban.json +1 -1
- package/templates/updates/actions/checkpoint.md +1 -1
- package/templates/updates/actions/context.md +1 -1
- package/templates/updates/actions/create-card.md +1 -1
- package/templates/updates/actions/deep-design.md +13 -3
- package/templates/updates/actions/design-requirements.md +11 -1
- package/templates/updates/actions/explore.md +1 -1
- package/templates/updates/actions/onboard.md +2 -4
- package/templates/updates/actions/summarize.md +1 -1
- package/templates/updates/skills/kanban/SKILL.md +77 -3
- package/dist/web/.next/server/chunks/[root-of-the-server]__09aec55a._.js +0 -3
- package/dist/web/.next/server/chunks/[root-of-the-server]__12f6cd6f._.js +0 -3
- package/dist/web/.next/server/chunks/[root-of-the-server]__15fc9266._.js +0 -18
- package/dist/web/.next/server/chunks/[root-of-the-server]__198f01e0._.js +0 -3
- package/dist/web/.next/server/chunks/[root-of-the-server]__279e9bf3._.js +0 -3
- package/dist/web/.next/server/chunks/[root-of-the-server]__2b639eab._.js +0 -3
- package/dist/web/.next/server/chunks/[root-of-the-server]__2d1f0ed9._.js +0 -3
- package/dist/web/.next/server/chunks/[root-of-the-server]__3f239285._.js +0 -3
- package/dist/web/.next/server/chunks/[root-of-the-server]__47dd878e._.js +0 -3
- package/dist/web/.next/server/chunks/[root-of-the-server]__5b8c9374._.js +0 -3
- package/dist/web/.next/server/chunks/[root-of-the-server]__5e08b942._.js +0 -3
- package/dist/web/.next/server/chunks/[root-of-the-server]__6ffce934._.js +0 -3
- package/dist/web/.next/server/chunks/[root-of-the-server]__71bb3374._.js +0 -3
- package/dist/web/.next/server/chunks/[root-of-the-server]__7603305e._.js +0 -3
- package/dist/web/.next/server/chunks/[root-of-the-server]__7c476ad6._.js +0 -3
- package/dist/web/.next/server/chunks/[root-of-the-server]__846ca56f._.js +0 -3
- package/dist/web/.next/server/chunks/[root-of-the-server]__98d88050._.js +0 -3
- package/dist/web/.next/server/chunks/[root-of-the-server]__b273cc05._.js +0 -3
- package/dist/web/.next/server/chunks/[root-of-the-server]__b90bbd70._.js +0 -3
- package/dist/web/.next/server/chunks/[root-of-the-server]__d5272169._.js +0 -3
- package/dist/web/.next/server/chunks/[root-of-the-server]__d56e68cb._.js +0 -3
- package/dist/web/.next/server/chunks/[root-of-the-server]__d6362272._.js +0 -3
- package/dist/web/.next/server/chunks/[root-of-the-server]__de1277ee._.js +0 -27
- package/dist/web/.next/server/chunks/[root-of-the-server]__e88a19d2._.js +0 -3
- package/dist/web/.next/server/chunks/[root-of-the-server]__f3e501b6._.js +0 -3
- package/dist/web/.next/server/chunks/[root-of-the-server]__f59af2bc._.js +0 -3
- package/dist/web/.next/server/chunks/ssr/[root-of-the-server]__9ac6ea25._.js +0 -3
- package/dist/web/.next/server/chunks/ssr/[root-of-the-server]__dfe2728c._.js +0 -3
- package/dist/web/.next/static/chunks/3d5195b57fc05540.js +0 -4
- package/dist/web/.next/static/chunks/59fb302a5bfd2dc0.js +0 -4
- package/dist/web/.next/static/chunks/747f5e5f9dcf2621.css +0 -1
- /package/dist/web/.next/static/{0sPAbk-Qw-InZ0rdHjHnC → aN-jqftQVvSm0qVskLybH}/_buildManifest.js +0 -0
- /package/dist/web/.next/static/{0sPAbk-Qw-InZ0rdHjHnC → aN-jqftQVvSm0qVskLybH}/_clientMiddlewareManifest.json +0 -0
- /package/dist/web/.next/static/{0sPAbk-Qw-InZ0rdHjHnC → aN-jqftQVvSm0qVskLybH}/_ssgManifest.js +0 -0
|
@@ -190,6 +190,17 @@ export class BridgeClient {
|
|
|
190
190
|
throw err;
|
|
191
191
|
}
|
|
192
192
|
}
|
|
193
|
+
async getGitStatus(cwd) {
|
|
194
|
+
try {
|
|
195
|
+
const res = await fetch(`${this.baseUrl}/git-status?cwd=${encodeURIComponent(cwd)}`);
|
|
196
|
+
if (!res.ok)
|
|
197
|
+
return null;
|
|
198
|
+
return await res.json();
|
|
199
|
+
}
|
|
200
|
+
catch {
|
|
201
|
+
return null;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
193
204
|
async checkInstructionFile(provider, cwd) {
|
|
194
205
|
try {
|
|
195
206
|
const res = await fetch(`${this.baseUrl}/check-instruction-file?provider=${provider}&cwd=${encodeURIComponent(cwd)}`);
|
|
@@ -201,7 +212,7 @@ export class BridgeClient {
|
|
|
201
212
|
return { needed: false };
|
|
202
213
|
}
|
|
203
214
|
}
|
|
204
|
-
async ensureSession(sessionName, cwd, provider = 'claude', prompt, createInstructionFile) {
|
|
215
|
+
async ensureSession(sessionName, cwd, provider = 'claude', prompt, createInstructionFile, model) {
|
|
205
216
|
// Check if session exists and is alive (running or detached)
|
|
206
217
|
const existing = await this.getSession(sessionName);
|
|
207
218
|
if (existing && (existing.status === 'running' || existing.status === 'detached')) {
|
|
@@ -217,18 +228,19 @@ export class BridgeClient {
|
|
|
217
228
|
provider,
|
|
218
229
|
skipPermissions: true,
|
|
219
230
|
createInstructionFile,
|
|
231
|
+
model: model || undefined,
|
|
220
232
|
});
|
|
221
233
|
debugLog(`[ensureSession] Session created: resumed=${session.resumed}, hasPrompt=${!!prompt}`);
|
|
222
234
|
return { session };
|
|
223
235
|
}
|
|
224
|
-
async sendMessage(sessionName, cwd, message, provider = 'claude', createInstructionFile) {
|
|
236
|
+
async sendMessage(sessionName, cwd, message, provider = 'claude', createInstructionFile, model) {
|
|
225
237
|
// Check if session is already active
|
|
226
238
|
const existing = await this.getSession(sessionName);
|
|
227
239
|
const isActive = existing && (existing.status === 'running' || existing.status === 'detached');
|
|
228
240
|
if (!isActive) {
|
|
229
241
|
// New or stopped session — pass message as initial prompt
|
|
230
242
|
debugLog(`[sendMessage] Session ${sessionName} not active (status: ${existing?.status ?? 'not found'}), creating/resuming`);
|
|
231
|
-
const result = await this.ensureSession(sessionName, cwd, provider, message, createInstructionFile);
|
|
243
|
+
const result = await this.ensureSession(sessionName, cwd, provider, message, createInstructionFile, model);
|
|
232
244
|
return { permissionMismatch: result.permissionMismatch };
|
|
233
245
|
}
|
|
234
246
|
// Permission mismatch detection for existing sessions
|
|
@@ -242,15 +254,23 @@ export class BridgeClient {
|
|
|
242
254
|
throw new Error(`Failed to send input to session ${sessionName}`);
|
|
243
255
|
}
|
|
244
256
|
// Wait briefly, then send carriage return to submit
|
|
245
|
-
|
|
257
|
+
const submitDelay = parseInt(process.env.PROMPT_SUBMIT_DELAY_MS || '600', 10);
|
|
258
|
+
await new Promise(resolve => setTimeout(resolve, submitDelay));
|
|
246
259
|
const crSent = await this.sendInput(sessionName, '\r');
|
|
247
260
|
if (!crSent) {
|
|
248
261
|
debugLog(`[sendMessage] FAILED to send CR to ${sessionName} — message typed but not submitted`);
|
|
249
262
|
}
|
|
263
|
+
// Double-submit: send a second Enter to catch swallowed keystrokes
|
|
264
|
+
if (process.env.PROMPT_DOUBLE_SUBMIT === 'true') {
|
|
265
|
+
const doubleDelay = parseInt(process.env.PROMPT_DOUBLE_SUBMIT_DELAY_MS || '300', 10);
|
|
266
|
+
await new Promise(resolve => setTimeout(resolve, doubleDelay));
|
|
267
|
+
const cr2Sent = await this.sendInput(sessionName, '\r');
|
|
268
|
+
debugLog(`[sendMessage] Double-submit: cr2=${cr2Sent}`);
|
|
269
|
+
}
|
|
250
270
|
debugLog(`[sendMessage] Done: text=${textSent}, cr=${crSent}`);
|
|
251
271
|
return {};
|
|
252
272
|
}
|
|
253
|
-
async restartSession(sessionName, cwd, provider, prompt) {
|
|
273
|
+
async restartSession(sessionName, cwd, provider, prompt, model) {
|
|
254
274
|
// Kill existing session (DELETE with ?action=stop actually terminates the PTY)
|
|
255
275
|
try {
|
|
256
276
|
const res = await fetch(`${this.baseUrl}/sessions/${encodeURIComponent(sessionName)}?action=stop`, {
|
|
@@ -272,6 +292,7 @@ export class BridgeClient {
|
|
|
272
292
|
prompt,
|
|
273
293
|
provider,
|
|
274
294
|
skipPermissions: true,
|
|
295
|
+
model: model || undefined,
|
|
275
296
|
});
|
|
276
297
|
}
|
|
277
298
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridge-client.js","sourceRoot":"","sources":["../src/bridge-client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bridge-client.js","sourceRoot":"","sources":["../src/bridge-client.ts"],"names":[],"mappings":"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"}
|
package/dist/messaging/index.js
CHANGED
|
@@ -25,12 +25,25 @@ function getProviderDefault(stage) {
|
|
|
25
25
|
const data = JSON.parse(fs.readFileSync(path.join(root, 'data', 'providers.json'), 'utf-8'));
|
|
26
26
|
const defaults = data.defaults;
|
|
27
27
|
if (stage && defaults.stages[stage]?.provider) {
|
|
28
|
-
return defaults.stages[stage].provider;
|
|
28
|
+
return { provider: defaults.stages[stage].provider, model: defaults.stages[stage].model };
|
|
29
29
|
}
|
|
30
|
-
return defaults.global?.provider || 'claude';
|
|
30
|
+
return { provider: defaults.global?.provider || 'claude', model: defaults.global?.model };
|
|
31
31
|
}
|
|
32
32
|
catch {
|
|
33
|
-
return 'claude';
|
|
33
|
+
return { provider: 'claude' };
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
function getProvidersPath() {
|
|
37
|
+
const root = process.env.SLYCODE_HOME || path.resolve(__dirname, '..', '..');
|
|
38
|
+
return path.join(root, 'data', 'providers.json');
|
|
39
|
+
}
|
|
40
|
+
async function getProviderModels(providerId) {
|
|
41
|
+
try {
|
|
42
|
+
const data = JSON.parse(fs.readFileSync(getProvidersPath(), 'utf-8'));
|
|
43
|
+
return data.providers[providerId]?.model?.available || [];
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
return [];
|
|
34
47
|
}
|
|
35
48
|
}
|
|
36
49
|
function updateGlobalProviderDefault(provider) {
|
|
@@ -192,13 +205,16 @@ async function logConfigStatus(channel, voiceConfig, bridgeUrl) {
|
|
|
192
205
|
console.log(` Bridge URL: ${bridgeUrl}`);
|
|
193
206
|
}
|
|
194
207
|
// --- Breadcrumb Helpers ---
|
|
195
|
-
function getBreadcrumb(target, state, kanban) {
|
|
208
|
+
async function getBreadcrumb(target, state, kanban, bridge) {
|
|
209
|
+
let crumb;
|
|
196
210
|
switch (target.type) {
|
|
197
211
|
case 'global':
|
|
198
|
-
|
|
212
|
+
crumb = '📍 Global Terminal';
|
|
213
|
+
break;
|
|
199
214
|
case 'project': {
|
|
200
215
|
const project = state.getSelectedProject();
|
|
201
|
-
|
|
216
|
+
crumb = `📍 ${project?.name || target.projectId} · Project Terminal`;
|
|
217
|
+
break;
|
|
202
218
|
}
|
|
203
219
|
case 'card': {
|
|
204
220
|
const project = state.getSelectedProject();
|
|
@@ -208,9 +224,23 @@ function getBreadcrumb(target, state, kanban) {
|
|
|
208
224
|
const stage = cardInfo?.stage || target.stage || '?';
|
|
209
225
|
const title = cardInfo?.card.title || target.cardId || '?';
|
|
210
226
|
const truncTitle = title.length > 55 ? title.slice(0, 52) + '...' : title;
|
|
211
|
-
|
|
227
|
+
crumb = `📍 ${project?.name || target.projectId} · ${stage} · ${truncTitle}`;
|
|
228
|
+
break;
|
|
212
229
|
}
|
|
213
230
|
}
|
|
231
|
+
// Append git branch info if available
|
|
232
|
+
try {
|
|
233
|
+
const cwd = state.getSessionCwd();
|
|
234
|
+
const git = await bridge.getGitStatus(cwd);
|
|
235
|
+
if (git?.branch) {
|
|
236
|
+
const uncommittedSuffix = git.uncommitted > 0 ? ` (${git.uncommitted} uncommitted)` : '';
|
|
237
|
+
crumb += `\nBranch: ${git.branch}${uncommittedSuffix}`;
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
catch {
|
|
241
|
+
// Silent — branch info is best-effort
|
|
242
|
+
}
|
|
243
|
+
return crumb;
|
|
214
244
|
}
|
|
215
245
|
function truncate(text, max) {
|
|
216
246
|
return text.length > max ? text.slice(0, max - 3) + '...' : text;
|
|
@@ -226,7 +256,7 @@ function latestDate(...dates) {
|
|
|
226
256
|
// --- /switch Rendering ---
|
|
227
257
|
async function renderSwitchView(channel, state, bridge, kanban) {
|
|
228
258
|
const target = state.getTarget();
|
|
229
|
-
const breadcrumb = getBreadcrumb(target, state, kanban);
|
|
259
|
+
const breadcrumb = await getBreadcrumb(target, state, kanban, bridge);
|
|
230
260
|
if (target.type === 'global') {
|
|
231
261
|
// Global level: show projects list
|
|
232
262
|
const projects = state.getProjects();
|
|
@@ -296,12 +326,16 @@ async function renderLaneDrilldown(channel, state, bridge, kanban, stage, offset
|
|
|
296
326
|
async function handleSessionLifecycle(channel, state, bridge, kanban, actionFilter) {
|
|
297
327
|
const target = ensureStage(state.getTarget(), kanban, state);
|
|
298
328
|
const sessionName = state.getSessionName();
|
|
299
|
-
const breadcrumb = getBreadcrumb(target, state, kanban);
|
|
300
|
-
// Build provider line
|
|
329
|
+
const breadcrumb = await getBreadcrumb(target, state, kanban, bridge);
|
|
330
|
+
// Build provider line with model
|
|
301
331
|
const currentProvider = state.getSelectedProvider();
|
|
302
332
|
const providerLabel = PROVIDER_LABELS[currentProvider] || currentProvider;
|
|
303
333
|
const explicit = await hasExplicitSession(bridge, state);
|
|
304
|
-
const
|
|
334
|
+
const currentModel = state.getSelectedModel();
|
|
335
|
+
const modelLabel = currentModel
|
|
336
|
+
? (await getProviderModels(currentProvider)).find(m => m.id === currentModel)?.label || currentModel
|
|
337
|
+
: null;
|
|
338
|
+
const providerLine = `Provider: ${providerLabel}${modelLabel ? ` · ${modelLabel}` : ''}${explicit ? '' : ' (default)'}`;
|
|
305
339
|
let session;
|
|
306
340
|
try {
|
|
307
341
|
session = await bridge.getSession(sessionName);
|
|
@@ -402,7 +436,7 @@ async function executeQuickCommand(commandKey, channel, state, bridge, kanban, a
|
|
|
402
436
|
if (!proceed)
|
|
403
437
|
return;
|
|
404
438
|
// New or stopped session — pass prompt to session creation
|
|
405
|
-
await bridge.ensureSession(sessionName, cwd, provider, formatted);
|
|
439
|
+
await bridge.ensureSession(sessionName, cwd, provider, formatted, undefined, state.getSelectedModel() || undefined);
|
|
406
440
|
}
|
|
407
441
|
await channel.sendText(`Sent: ${cmd.label}`);
|
|
408
442
|
bridge.watchActivity(sessionName, channel).catch(() => { });
|
|
@@ -449,6 +483,7 @@ async function checkInstructionFilePreFlight(channel, state, bridge, sessionName
|
|
|
449
483
|
targetFile: check.targetFile,
|
|
450
484
|
copySource: check.copySource,
|
|
451
485
|
originalMessage,
|
|
486
|
+
model: state.getSelectedModel() || undefined,
|
|
452
487
|
});
|
|
453
488
|
await channel.sendInlineKeyboard(`⚠️ ${check.targetFile} is missing in this project.\n\nCreate from ${check.copySource}?`, [[
|
|
454
489
|
{ label: '✅ Yes, create it', callbackData: 'ifc_yes' },
|
|
@@ -467,6 +502,7 @@ function setupChannel(channel, bridge, state, kanban, actionFilter, voiceConfig)
|
|
|
467
502
|
'/switch - Navigate terminals (global, project, card)\n' +
|
|
468
503
|
'/search - Search cards (or quick access to active/recent)\n' +
|
|
469
504
|
'/provider - Select AI provider (Claude/Gemini/Codex)\n' +
|
|
505
|
+
'/model - Select model for current provider\n' +
|
|
470
506
|
'/sly - Sly Actions for active session\n' +
|
|
471
507
|
'/global - Switch to global terminal\n' +
|
|
472
508
|
'/project - Switch to project terminal (from card)\n' +
|
|
@@ -591,7 +627,7 @@ function setupChannel(channel, bridge, state, kanban, actionFilter, voiceConfig)
|
|
|
591
627
|
const target = ensureStage(state.getTarget(), kanban, state);
|
|
592
628
|
const terminalClass = actionFilter.getTerminalClass(target);
|
|
593
629
|
const cardType = getCardType(target, kanban);
|
|
594
|
-
const breadcrumb = getBreadcrumb(target, state, kanban);
|
|
630
|
+
const breadcrumb = await getBreadcrumb(target, state, kanban, bridge);
|
|
595
631
|
const commands = actionFilter.filterActions(terminalClass, undefined, cardType);
|
|
596
632
|
console.log(`[SLY] target: ${JSON.stringify(target)}, class: ${terminalClass}, cardType: ${cardType}, actions: ${Object.keys(commands).join(', ')}`);
|
|
597
633
|
const buttons = actionsToButtons(commands);
|
|
@@ -604,7 +640,7 @@ function setupChannel(channel, bridge, state, kanban, actionFilter, voiceConfig)
|
|
|
604
640
|
// --- /global ---
|
|
605
641
|
channel.onCommand('global', async () => {
|
|
606
642
|
state.selectGlobal();
|
|
607
|
-
state.setSelectedProvider(getProviderDefault());
|
|
643
|
+
state.setSelectedProvider(getProviderDefault().provider);
|
|
608
644
|
updateKeyboard(channel, state);
|
|
609
645
|
await handleSessionLifecycle(channel, state, bridge, kanban, actionFilter);
|
|
610
646
|
});
|
|
@@ -614,7 +650,7 @@ function setupChannel(channel, bridge, state, kanban, actionFilter, voiceConfig)
|
|
|
614
650
|
if (target.projectId) {
|
|
615
651
|
state.selectProject(target.projectId);
|
|
616
652
|
const projProvider = await resolveProjectProviderFromBridge(bridge, target.projectId);
|
|
617
|
-
state.setSelectedProvider(projProvider || getProviderDefault());
|
|
653
|
+
state.setSelectedProvider(projProvider || getProviderDefault().provider);
|
|
618
654
|
updateKeyboard(channel, state);
|
|
619
655
|
await handleSessionLifecycle(channel, state, bridge, kanban, actionFilter);
|
|
620
656
|
}
|
|
@@ -622,17 +658,37 @@ function setupChannel(channel, bridge, state, kanban, actionFilter, voiceConfig)
|
|
|
622
658
|
await channel.sendText('No project selected. Use /switch first.');
|
|
623
659
|
}
|
|
624
660
|
});
|
|
625
|
-
// --- /
|
|
661
|
+
// --- /provider ---
|
|
626
662
|
channel.onCommand('provider', async () => {
|
|
627
663
|
const current = state.getSelectedProvider();
|
|
628
664
|
const currentLabel = PROVIDER_LABELS[current] || current;
|
|
629
|
-
const
|
|
630
|
-
|
|
631
|
-
label: PROVIDER_LABELS[p],
|
|
665
|
+
const buttons = ALL_PROVIDERS.map(p => [{
|
|
666
|
+
label: (p === current ? '● ' : '') + PROVIDER_LABELS[p],
|
|
632
667
|
callbackData: `cfg_${p}`,
|
|
633
668
|
}]);
|
|
634
669
|
await channel.sendInlineKeyboard(`Provider: *${currentLabel}*`, buttons);
|
|
635
670
|
});
|
|
671
|
+
// --- /model ---
|
|
672
|
+
channel.onCommand('model', async () => {
|
|
673
|
+
const provider = state.getSelectedProvider();
|
|
674
|
+
const currentModel = state.getSelectedModel();
|
|
675
|
+
const models = await getProviderModels(provider);
|
|
676
|
+
if (!models.length) {
|
|
677
|
+
await channel.sendText(`No models configured for ${PROVIDER_LABELS[provider] || provider}`);
|
|
678
|
+
return;
|
|
679
|
+
}
|
|
680
|
+
const currentLabel = currentModel
|
|
681
|
+
? models.find(m => m.id === currentModel)?.label || currentModel
|
|
682
|
+
: 'Default';
|
|
683
|
+
const buttons = [
|
|
684
|
+
[{ label: '🔄 Default', callbackData: 'mdl_' }],
|
|
685
|
+
...models.filter(m => m.id !== currentModel).map(m => [{
|
|
686
|
+
label: m.label,
|
|
687
|
+
callbackData: `mdl_${m.id}`,
|
|
688
|
+
}]),
|
|
689
|
+
];
|
|
690
|
+
await channel.sendInlineKeyboard(`Model: *${currentLabel}* (${PROVIDER_LABELS[provider] || provider})`, buttons);
|
|
691
|
+
});
|
|
636
692
|
// --- /status ---
|
|
637
693
|
channel.onCommand('status', async () => {
|
|
638
694
|
const target = state.getTarget();
|
|
@@ -686,7 +742,23 @@ function setupChannel(channel, bridge, state, kanban, actionFilter, voiceConfig)
|
|
|
686
742
|
catch { }
|
|
687
743
|
}
|
|
688
744
|
}
|
|
689
|
-
|
|
745
|
+
// Git branch info
|
|
746
|
+
try {
|
|
747
|
+
const cwd = state.getSessionCwd();
|
|
748
|
+
const git = await bridge.getGitStatus(cwd);
|
|
749
|
+
if (git?.branch) {
|
|
750
|
+
const uncommittedSuffix = git.uncommitted > 0 ? ` (${git.uncommitted} uncommitted)` : '';
|
|
751
|
+
status += `Branch: ${git.branch}${uncommittedSuffix}\n`;
|
|
752
|
+
}
|
|
753
|
+
}
|
|
754
|
+
catch {
|
|
755
|
+
// Silent — branch info is best-effort
|
|
756
|
+
}
|
|
757
|
+
const currentModel = state.getSelectedModel();
|
|
758
|
+
const modelLabel = currentModel
|
|
759
|
+
? (await getProviderModels(provider)).find(m => m.id === currentModel)?.label || currentModel
|
|
760
|
+
: null;
|
|
761
|
+
status += `\nProvider: ${PROVIDER_LABELS[provider] || provider}${modelLabel ? ` · ${modelLabel}` : ''}${providerSuffix}`;
|
|
690
762
|
status += `\nMode: ${mode}`;
|
|
691
763
|
if (tone)
|
|
692
764
|
status += `\nTone: ${tone}`;
|
|
@@ -829,11 +901,41 @@ function setupChannel(channel, bridge, state, kanban, actionFilter, voiceConfig)
|
|
|
829
901
|
// If the current target was using an inherited default (no bridge session),
|
|
830
902
|
// also update the global default in providers.json
|
|
831
903
|
const explicit = await hasExplicitSession(bridge, state);
|
|
832
|
-
state.setSelectedProvider(provider);
|
|
904
|
+
state.setSelectedProvider(provider); // Also resets model to ''
|
|
833
905
|
if (!explicit) {
|
|
834
906
|
updateGlobalProviderDefault(provider);
|
|
835
907
|
}
|
|
836
|
-
|
|
908
|
+
// Pre-fill model from stage default if applicable
|
|
909
|
+
const target = state.getTarget();
|
|
910
|
+
const stageDefault = getProviderDefault(target.stage);
|
|
911
|
+
if (stageDefault.model && stageDefault.provider === provider) {
|
|
912
|
+
state.setSelectedModel(stageDefault.model);
|
|
913
|
+
}
|
|
914
|
+
// Show model options if available
|
|
915
|
+
const models = await getProviderModels(provider);
|
|
916
|
+
if (models.length > 0) {
|
|
917
|
+
const buttons = [
|
|
918
|
+
[{ label: '🔄 Default', callbackData: 'mdl_' }],
|
|
919
|
+
...models.map(m => [{ label: m.label, callbackData: `mdl_${m.id}` }]),
|
|
920
|
+
];
|
|
921
|
+
await channel.sendInlineKeyboard(`Provider set to: *${PROVIDER_LABELS[provider]}*\nSelect model:`, buttons);
|
|
922
|
+
}
|
|
923
|
+
else {
|
|
924
|
+
await channel.sendText(`Provider set to: ${PROVIDER_LABELS[provider]}`);
|
|
925
|
+
}
|
|
926
|
+
});
|
|
927
|
+
// --- Model Selection Callbacks (mdl_ prefix) ---
|
|
928
|
+
channel.onCallback('mdl_', async (data) => {
|
|
929
|
+
const modelId = data.replace('mdl_', ''); // '' for Default
|
|
930
|
+
state.setSelectedModel(modelId);
|
|
931
|
+
if (modelId) {
|
|
932
|
+
const models = await getProviderModels(state.getSelectedProvider());
|
|
933
|
+
const label = models.find(m => m.id === modelId)?.label || modelId;
|
|
934
|
+
await channel.sendText(`Model set to: ${label}`);
|
|
935
|
+
}
|
|
936
|
+
else {
|
|
937
|
+
await channel.sendText('Model set to: Default');
|
|
938
|
+
}
|
|
837
939
|
});
|
|
838
940
|
// --- Instruction File Confirm Callbacks (ifc_ prefix) ---
|
|
839
941
|
channel.onCallback('ifc_', async (data) => {
|
|
@@ -847,7 +949,7 @@ function setupChannel(channel, bridge, state, kanban, actionFilter, voiceConfig)
|
|
|
847
949
|
}
|
|
848
950
|
try {
|
|
849
951
|
await channel.sendTyping();
|
|
850
|
-
const result = await bridge.sendMessage(pending.sessionName, pending.cwd, pending.originalMessage, pending.provider, approved);
|
|
952
|
+
const result = await bridge.sendMessage(pending.sessionName, pending.cwd, pending.originalMessage, pending.provider, approved, pending.model || undefined);
|
|
851
953
|
if (result.permissionMismatch) {
|
|
852
954
|
await channel.sendInlineKeyboard('⚠️ This session was started without skip-permissions, which is required for messaging.\n\nRestart the session with permissions skipped?', [[
|
|
853
955
|
{ label: 'Restart session', callbackData: 'perm_restart' },
|
|
@@ -874,7 +976,7 @@ function setupChannel(channel, bridge, state, kanban, actionFilter, voiceConfig)
|
|
|
874
976
|
await channel.sendText('⚠️ Terminal is open in the web UI. Disconnecting and restarting...');
|
|
875
977
|
}
|
|
876
978
|
await channel.sendTyping();
|
|
877
|
-
await bridge.restartSession(sessionName, cwd, provider);
|
|
979
|
+
await bridge.restartSession(sessionName, cwd, provider, undefined, state.getSelectedModel() || undefined);
|
|
878
980
|
await channel.sendText('Session restarted with skip-permissions. Send your message again.');
|
|
879
981
|
}
|
|
880
982
|
catch (err) {
|
|
@@ -889,7 +991,7 @@ function setupChannel(channel, bridge, state, kanban, actionFilter, voiceConfig)
|
|
|
889
991
|
channel.onCallback('sw_', async (data) => {
|
|
890
992
|
if (data === 'sw_global') {
|
|
891
993
|
state.selectGlobal();
|
|
892
|
-
state.setSelectedProvider(getProviderDefault());
|
|
994
|
+
state.setSelectedProvider(getProviderDefault().provider);
|
|
893
995
|
currentDrilldownStage = null;
|
|
894
996
|
updateKeyboard(channel, state);
|
|
895
997
|
await handleSessionLifecycle(channel, state, bridge, kanban, actionFilter);
|
|
@@ -911,7 +1013,7 @@ function setupChannel(channel, bridge, state, kanban, actionFilter, voiceConfig)
|
|
|
911
1013
|
state.selectProject(projectId);
|
|
912
1014
|
// Resolve provider: bridge session > global default
|
|
913
1015
|
const projBridgeProvider = await resolveProjectProviderFromBridge(bridge, projectId);
|
|
914
|
-
state.setSelectedProvider(projBridgeProvider || getProviderDefault());
|
|
1016
|
+
state.setSelectedProvider(projBridgeProvider || getProviderDefault().provider);
|
|
915
1017
|
currentDrilldownStage = null;
|
|
916
1018
|
kanban.updateProjects(state.getProjects());
|
|
917
1019
|
updateKeyboard(channel, state);
|
|
@@ -946,7 +1048,24 @@ function setupChannel(channel, bridge, state, kanban, actionFilter, voiceConfig)
|
|
|
946
1048
|
state.selectCard(projectId, cardId, cardStage);
|
|
947
1049
|
// Resolve provider: bridge session > stage default > global default
|
|
948
1050
|
const bridgeProvider = await resolveProviderFromBridge(bridge, projectId, cardId);
|
|
949
|
-
|
|
1051
|
+
const stageDefault = getProviderDefault(cardStage);
|
|
1052
|
+
state.setSelectedProvider(bridgeProvider || stageDefault.provider);
|
|
1053
|
+
// Resolve model: bridge session > stage default > Default
|
|
1054
|
+
const sessionName = state.getSessionName();
|
|
1055
|
+
try {
|
|
1056
|
+
const session = await bridge.getSession(sessionName);
|
|
1057
|
+
if (session?.model) {
|
|
1058
|
+
state.setSelectedModel(session.model);
|
|
1059
|
+
}
|
|
1060
|
+
else if (stageDefault.model && (stageDefault.provider === state.getSelectedProvider())) {
|
|
1061
|
+
state.setSelectedModel(stageDefault.model);
|
|
1062
|
+
}
|
|
1063
|
+
}
|
|
1064
|
+
catch {
|
|
1065
|
+
if (stageDefault.model && (stageDefault.provider === state.getSelectedProvider())) {
|
|
1066
|
+
state.setSelectedModel(stageDefault.model);
|
|
1067
|
+
}
|
|
1068
|
+
}
|
|
950
1069
|
currentDrilldownStage = null;
|
|
951
1070
|
updateKeyboard(channel, state);
|
|
952
1071
|
await handleSessionLifecycle(channel, state, bridge, kanban, actionFilter);
|
|
@@ -1004,7 +1123,7 @@ function setupChannel(channel, bridge, state, kanban, actionFilter, voiceConfig)
|
|
|
1004
1123
|
if (!proceed)
|
|
1005
1124
|
return;
|
|
1006
1125
|
await channel.sendTyping();
|
|
1007
|
-
const result = await bridge.sendMessage(sessionName, cwd, formatted, provider);
|
|
1126
|
+
const result = await bridge.sendMessage(sessionName, cwd, formatted, provider, undefined, state.getSelectedModel() || undefined);
|
|
1008
1127
|
if (result.permissionMismatch) {
|
|
1009
1128
|
await channel.sendInlineKeyboard('⚠️ This session was started without skip-permissions, which is required for messaging.\n\nRestart the session with permissions skipped?', [[
|
|
1010
1129
|
{ label: 'Restart session', callbackData: 'perm_restart' },
|
|
@@ -1046,7 +1165,7 @@ function setupChannel(channel, bridge, state, kanban, actionFilter, voiceConfig)
|
|
|
1046
1165
|
if (!proceed)
|
|
1047
1166
|
return;
|
|
1048
1167
|
await channel.sendTyping();
|
|
1049
|
-
const result = await bridge.sendMessage(sessionName, cwd, formatted, provider);
|
|
1168
|
+
const result = await bridge.sendMessage(sessionName, cwd, formatted, provider, undefined, state.getSelectedModel() || undefined);
|
|
1050
1169
|
if (result.permissionMismatch) {
|
|
1051
1170
|
await channel.sendInlineKeyboard('⚠️ This session was started without skip-permissions, which is required for messaging.\n\nRestart the session with permissions skipped?', [[
|
|
1052
1171
|
{ label: 'Restart session', callbackData: 'perm_restart' },
|
|
@@ -1088,7 +1207,7 @@ function setupChannel(channel, bridge, state, kanban, actionFilter, voiceConfig)
|
|
|
1088
1207
|
const proceed = await checkInstructionFilePreFlight(channel, state, bridge, sessionName, cwd, provider, message);
|
|
1089
1208
|
if (!proceed)
|
|
1090
1209
|
return;
|
|
1091
|
-
const result = await bridge.sendMessage(sessionName, cwd, message, provider);
|
|
1210
|
+
const result = await bridge.sendMessage(sessionName, cwd, message, provider, undefined, state.getSelectedModel() || undefined);
|
|
1092
1211
|
if (result.permissionMismatch) {
|
|
1093
1212
|
await channel.sendInlineKeyboard('⚠️ This session was started without skip-permissions, which is required for messaging.\n\nRestart the session with permissions skipped?', [[
|
|
1094
1213
|
{ label: 'Restart session', callbackData: 'perm_restart' },
|