@yancyyu/openhermit 1.5.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +611 -0
- package/README.md +220 -0
- package/bin/hermit.mjs +364 -0
- package/bin/kill-dev.js +20 -0
- package/dist-renderer/assets/01-BApSFlV4.png +0 -0
- package/dist-renderer/assets/02-CRQGs29u.png +0 -0
- package/dist-renderer/assets/03-BFCM2jnD.png +0 -0
- package/dist-renderer/assets/04-B2FThbKO.png +0 -0
- package/dist-renderer/assets/05-D9p0Znkd.png +0 -0
- package/dist-renderer/assets/06-DZAfbDlP.png +0 -0
- package/dist-renderer/assets/07-B_PXWGCc.png +0 -0
- package/dist-renderer/assets/08-DGRMZ6sl.png +0 -0
- package/dist-renderer/assets/09-SGCQvc7U.png +0 -0
- package/dist-renderer/assets/10-Cve81Q3W.png +0 -0
- package/dist-renderer/assets/11-DGglolDW.png +0 -0
- package/dist-renderer/assets/12-C3lnu79c.png +0 -0
- package/dist-renderer/assets/13-M59meqdw.png +0 -0
- package/dist-renderer/assets/ProjectEditorOverlay-BNoDw9T1.js +57 -0
- package/dist-renderer/assets/TeamGraphOverlay-CfGRKQIu.js +1 -0
- package/dist-renderer/assets/_basePickBy-Ct8Hm5_h.js +1 -0
- package/dist-renderer/assets/_baseUniq-BofrAFBx.js +1 -0
- package/dist-renderer/assets/apl-B4CMkyY2.js +1 -0
- package/dist-renderer/assets/arc-AbJgatzR.js +1 -0
- package/dist-renderer/assets/architectureDiagram-VXUJARFQ-gpniCJVk.js +36 -0
- package/dist-renderer/assets/asciiarmor-Df11BRmG.js +1 -0
- package/dist-renderer/assets/asn1-EdZsLKOL.js +1 -0
- package/dist-renderer/assets/asterisk-B-8jnY81.js +1 -0
- package/dist-renderer/assets/blockDiagram-VD42YOAC-aBbbmONC.js +122 -0
- package/dist-renderer/assets/brainfuck-C4LP7Hcl.js +1 -0
- package/dist-renderer/assets/c4Diagram-YG6GDRKO-DJio1IsU.js +10 -0
- package/dist-renderer/assets/channel-CZ8sd5Xf.js +1 -0
- package/dist-renderer/assets/chunk-4BX2VUAB-D1_HKao2.js +1 -0
- package/dist-renderer/assets/chunk-55IACEB6-NAmVxF4k.js +1 -0
- package/dist-renderer/assets/chunk-B4BG7PRW-Ce829laz.js +165 -0
- package/dist-renderer/assets/chunk-DI55MBZ5-Ct2Le12y.js +220 -0
- package/dist-renderer/assets/chunk-FMBD7UC4-Cie3DzKk.js +15 -0
- package/dist-renderer/assets/chunk-QN33PNHL-4f5Yb50e.js +1 -0
- package/dist-renderer/assets/chunk-QZHKN3VN-D9ranl9c.js +1 -0
- package/dist-renderer/assets/chunk-TZMSLE5B-bdGZWlEy.js +1 -0
- package/dist-renderer/assets/classDiagram-2ON5EDUG-CMcfSKj5.js +1 -0
- package/dist-renderer/assets/classDiagram-v2-WZHVMYZB-CMcfSKj5.js +1 -0
- package/dist-renderer/assets/clike-B9uivgTg.js +1 -0
- package/dist-renderer/assets/clojure-BMjYHr_A.js +1 -0
- package/dist-renderer/assets/clone-CMuwA8RV.js +1 -0
- package/dist-renderer/assets/cmake-BQqOBYOt.js +1 -0
- package/dist-renderer/assets/cobol-CWcv1MsR.js +1 -0
- package/dist-renderer/assets/coffeescript-S37ZYGWr.js +1 -0
- package/dist-renderer/assets/commonlisp-DBKNyK5s.js +1 -0
- package/dist-renderer/assets/cose-bilkent-S5V4N54A-C6tvfcVi.js +1 -0
- package/dist-renderer/assets/crystal-SjHAIU92.js +1 -0
- package/dist-renderer/assets/css-BnMrqG3P.js +1 -0
- package/dist-renderer/assets/cypher-C_CwsFkJ.js +1 -0
- package/dist-renderer/assets/cytoscape.esm-DsxaTqgk.js +331 -0
- package/dist-renderer/assets/d-pRatUO7H.js +1 -0
- package/dist-renderer/assets/dagre-6UL2VRFP-B-4qcZam.js +4 -0
- package/dist-renderer/assets/defaultLocale-DX6XiGOO.js +1 -0
- package/dist-renderer/assets/diagram-PSM6KHXK-CwT3TLjx.js +24 -0
- package/dist-renderer/assets/diagram-QEK2KX5R-BWH6-ZFd.js +43 -0
- package/dist-renderer/assets/diagram-S2PKOQOG-DfpPnfi1.js +24 -0
- package/dist-renderer/assets/diff-DbItnlRl.js +1 -0
- package/dist-renderer/assets/dockerfile-BKs6k2Af.js +1 -0
- package/dist-renderer/assets/dtd-DF_7sFjM.js +1 -0
- package/dist-renderer/assets/dylan-DwRh75JA.js +1 -0
- package/dist-renderer/assets/ebnf-CDyGwa7X.js +1 -0
- package/dist-renderer/assets/ecl-Cabwm37j.js +1 -0
- package/dist-renderer/assets/eiffel-CnydiIhH.js +1 -0
- package/dist-renderer/assets/elm-vLlmbW-K.js +1 -0
- package/dist-renderer/assets/erDiagram-Q2GNP2WA-BFbEFR4x.js +60 -0
- package/dist-renderer/assets/erlang-BNw1qcRV.js +1 -0
- package/dist-renderer/assets/factor-kuTfRLto.js +1 -0
- package/dist-renderer/assets/favicon-B8xY-GVk.png +0 -0
- package/dist-renderer/assets/fcl-Kvtd6kyn.js +1 -0
- package/dist-renderer/assets/flowDiagram-NV44I4VS-Dg3cf5hW.js +162 -0
- package/dist-renderer/assets/forth-Ffai-XNe.js +1 -0
- package/dist-renderer/assets/fortran-DYz_wnZ1.js +1 -0
- package/dist-renderer/assets/ganttDiagram-JELNMOA3-B21y55W5.js +267 -0
- package/dist-renderer/assets/gas-Bneqetm1.js +1 -0
- package/dist-renderer/assets/gherkin-heZmZLOM.js +1 -0
- package/dist-renderer/assets/gitGraphDiagram-V2S2FVAM-BDV3BJzn.js +65 -0
- package/dist-renderer/assets/graph-BfaZ4hZt.js +1 -0
- package/dist-renderer/assets/groovy-D9Dt4D0W.js +1 -0
- package/dist-renderer/assets/haskell-BWDZoCOh.js +1 -0
- package/dist-renderer/assets/haxe-H-WmDvRZ.js +1 -0
- package/dist-renderer/assets/http-DBlCnlav.js +1 -0
- package/dist-renderer/assets/idl-BEugSyMb.js +1 -0
- package/dist-renderer/assets/index-BMXHMpkG.js +1 -0
- package/dist-renderer/assets/index-CCqtDawH.js +1 -0
- package/dist-renderer/assets/index-CVMSpK8C.js +1 -0
- package/dist-renderer/assets/index-CZltVMDP.js +1844 -0
- package/dist-renderer/assets/index-CaG9mf8s.css +1 -0
- package/dist-renderer/assets/index-Ct0-y9TF.js +1 -0
- package/dist-renderer/assets/index-pMg_LlsS.js +1 -0
- package/dist-renderer/assets/infoDiagram-HS3SLOUP-DvMlS0CL.js +2 -0
- package/dist-renderer/assets/init-Gi6I4Gst.js +1 -0
- package/dist-renderer/assets/javascript-qCveANmP.js +1 -0
- package/dist-renderer/assets/journeyDiagram-XKPGCS4Q-DIyMluRv.js +139 -0
- package/dist-renderer/assets/julia-DuME0IfC.js +1 -0
- package/dist-renderer/assets/kanban-definition-3W4ZIXB7-CVOx8f-7.js +89 -0
- package/dist-renderer/assets/katex-DGN8GczM.js +261 -0
- package/dist-renderer/assets/layout-BPKIXUf4.js +1 -0
- package/dist-renderer/assets/linear-CScZGLr2.js +1 -0
- package/dist-renderer/assets/livescript-BwQOo05w.js +1 -0
- package/dist-renderer/assets/lua-BgMRiT3U.js +1 -0
- package/dist-renderer/assets/mathematica-DTrFuWx2.js +1 -0
- package/dist-renderer/assets/mbox-CNhZ1qSd.js +1 -0
- package/dist-renderer/assets/mindmap-definition-VGOIOE7T-CmDQ7Wo6.js +68 -0
- package/dist-renderer/assets/mirc-CjQqDB4T.js +1 -0
- package/dist-renderer/assets/mllike-CXdrOF99.js +1 -0
- package/dist-renderer/assets/modelica-Dc1JOy9r.js +1 -0
- package/dist-renderer/assets/mscgen-BA5vi2Kp.js +1 -0
- package/dist-renderer/assets/mumps-BT43cFF4.js +1 -0
- package/dist-renderer/assets/nginx-DdIZxoE0.js +1 -0
- package/dist-renderer/assets/nsis-LdVXkNf5.js +1 -0
- package/dist-renderer/assets/ntriples-BfvgReVJ.js +1 -0
- package/dist-renderer/assets/octave-Ck1zUtKM.js +1 -0
- package/dist-renderer/assets/ordinal-Cboi1Yqb.js +1 -0
- package/dist-renderer/assets/oz-BzwKVEFT.js +1 -0
- package/dist-renderer/assets/pascal--L3eBynH.js +1 -0
- package/dist-renderer/assets/perl-CdXCOZ3F.js +1 -0
- package/dist-renderer/assets/pieDiagram-ADFJNKIX-DbVClin-.js +30 -0
- package/dist-renderer/assets/pig-CevX1Tat.js +1 -0
- package/dist-renderer/assets/powershell-CFHJl5sT.js +1 -0
- package/dist-renderer/assets/properties-C78fOPTZ.js +1 -0
- package/dist-renderer/assets/protobuf-ChK-085T.js +1 -0
- package/dist-renderer/assets/pug-DukmZTjD.js +1 -0
- package/dist-renderer/assets/puppet-DMA9R1ak.js +1 -0
- package/dist-renderer/assets/python-BuPzkPfP.js +1 -0
- package/dist-renderer/assets/q-pXgVlZs6.js +1 -0
- package/dist-renderer/assets/quadrantDiagram-AYHSOK5B-CAB0MYcW.js +7 -0
- package/dist-renderer/assets/r-DUYO_cvP.js +1 -0
- package/dist-renderer/assets/requirementDiagram-UZGBJVZJ-w2Lfpg3T.js +64 -0
- package/dist-renderer/assets/rpm-CTu-6PCP.js +1 -0
- package/dist-renderer/assets/ruby-B2Rjki9n.js +1 -0
- package/dist-renderer/assets/sankeyDiagram-TZEHDZUN-kvG1QoKY.js +10 -0
- package/dist-renderer/assets/sas-B4kiWyti.js +1 -0
- package/dist-renderer/assets/scheme-C41bIUwD.js +1 -0
- package/dist-renderer/assets/sequenceDiagram-WL72ISMW-DCVBQ23J.js +145 -0
- package/dist-renderer/assets/shell-CjFT_Tl9.js +1 -0
- package/dist-renderer/assets/sieve-C3Gn_uJK.js +1 -0
- package/dist-renderer/assets/simple-mode-GW_nhZxv.js +1 -0
- package/dist-renderer/assets/smalltalk-CnHTOXQT.js +1 -0
- package/dist-renderer/assets/solr-DehyRSwq.js +1 -0
- package/dist-renderer/assets/sparql-DkYu6x3z.js +1 -0
- package/dist-renderer/assets/splashScene-C8lWNnm4.js +1 -0
- package/dist-renderer/assets/spreadsheet-BCZA_wO0.js +1 -0
- package/dist-renderer/assets/sql-D0XecflT.js +1 -0
- package/dist-renderer/assets/stateDiagram-FKZM4ZOC-ItZ0JBvq.js +1 -0
- package/dist-renderer/assets/stateDiagram-v2-4FDKWEC3-Hpmw4dMm.js +1 -0
- package/dist-renderer/assets/stex-C3f8Ysf7.js +1 -0
- package/dist-renderer/assets/stylus-B533Al4x.js +1 -0
- package/dist-renderer/assets/swift-BzpIVaGY.js +1 -0
- package/dist-renderer/assets/tcl-DVfN8rqt.js +1 -0
- package/dist-renderer/assets/textile-CnDTJFAw.js +1 -0
- package/dist-renderer/assets/tiddlywiki-DO-Gjzrf.js +1 -0
- package/dist-renderer/assets/tiki-DGYXhP31.js +1 -0
- package/dist-renderer/assets/timeline-definition-IT6M3QCI-BzSFaAjV.js +61 -0
- package/dist-renderer/assets/toml-Bm5Em-hy.js +1 -0
- package/dist-renderer/assets/treemap-GDKQZRPO-fSz4hQn0.js +162 -0
- package/dist-renderer/assets/troff-wAsdV37c.js +1 -0
- package/dist-renderer/assets/ttcn-CfJYG6tj.js +1 -0
- package/dist-renderer/assets/ttcn-cfg-B9xdYoR4.js +1 -0
- package/dist-renderer/assets/turtle-B1tBg_DP.js +1 -0
- package/dist-renderer/assets/vb-CmGdzxic.js +1 -0
- package/dist-renderer/assets/vbscript-BuJXcnF6.js +1 -0
- package/dist-renderer/assets/velocity-D8B20fx6.js +1 -0
- package/dist-renderer/assets/verilog-C6RDOZhf.js +1 -0
- package/dist-renderer/assets/vhdl-lSbBsy5d.js +1 -0
- package/dist-renderer/assets/webidl-ZXfAyPTL.js +1 -0
- package/dist-renderer/assets/xquery-CQfU5ijd.js +1 -0
- package/dist-renderer/assets/xychartDiagram-PRI3JC2R-CT1kaGlv.js +7 -0
- package/dist-renderer/assets/yacas-BJ4BC0dw.js +1 -0
- package/dist-renderer/assets/z80-Hz9HOZM7.js +1 -0
- package/dist-renderer/index.html +1274 -0
- package/package.json +181 -0
- package/src/features/README.md +24 -0
- package/src/features/agent-graph/README.md +21 -0
- package/src/features/agent-graph/STABLE_SLOT_LAYOUT_PLAN.md +2846 -0
- package/src/features/agent-graph/core/domain/buildInlineActivityEntries.ts +416 -0
- package/src/features/agent-graph/core/domain/collapseOverflowStacks.ts +126 -0
- package/src/features/agent-graph/core/domain/graphOwnerIdentity.ts +55 -0
- package/src/features/agent-graph/core/domain/taskGraphSemantics.ts +48 -0
- package/src/features/agent-graph/renderer/adapters/TeamGraphAdapter.ts +1400 -0
- package/src/features/agent-graph/renderer/hooks/useGraphActivityContext.ts +34 -0
- package/src/features/agent-graph/renderer/hooks/useGraphCreateTaskDialog.tsx +126 -0
- package/src/features/agent-graph/renderer/hooks/useGraphMemberPopoverContext.ts +34 -0
- package/src/features/agent-graph/renderer/hooks/useGraphSidebarVisibility.ts +52 -0
- package/src/features/agent-graph/renderer/hooks/useTeamGraphAdapter.ts +173 -0
- package/src/features/agent-graph/renderer/hooks/useTeamGraphSurfaceActions.ts +98 -0
- package/src/features/agent-graph/renderer/index.ts +14 -0
- package/src/features/agent-graph/renderer/ui/GraphActivityCard.tsx +96 -0
- package/src/features/agent-graph/renderer/ui/GraphActivityHud.tsx +498 -0
- package/src/features/agent-graph/renderer/ui/GraphBlockingEdgePopover.tsx +207 -0
- package/src/features/agent-graph/renderer/ui/GraphNodePopover.tsx +573 -0
- package/src/features/agent-graph/renderer/ui/GraphProvisioningHud.tsx +113 -0
- package/src/features/agent-graph/renderer/ui/GraphTaskCard.tsx +149 -0
- package/src/features/agent-graph/renderer/ui/GraphTransientHandoffHud.tsx +176 -0
- package/src/features/agent-graph/renderer/ui/TeamGraphOverlay.tsx +224 -0
- package/src/features/agent-graph/renderer/ui/TeamGraphTab.tsx +257 -0
- package/src/features/agent-graph/renderer/ui/buildTransientHandoffMessage.ts +70 -0
- package/src/features/recent-projects/contracts/api.ts +5 -0
- package/src/features/recent-projects/contracts/channels.ts +2 -0
- package/src/features/recent-projects/contracts/dto.ts +24 -0
- package/src/features/recent-projects/contracts/index.ts +4 -0
- package/src/features/recent-projects/contracts/normalize.ts +32 -0
- package/src/features/recent-projects/core/application/models/ListDashboardRecentProjectsResponse.ts +6 -0
- package/src/features/recent-projects/core/application/ports/ClockPort.ts +3 -0
- package/src/features/recent-projects/core/application/ports/ListDashboardRecentProjectsOutputPort.ts +5 -0
- package/src/features/recent-projects/core/application/ports/LoggerPort.ts +5 -0
- package/src/features/recent-projects/core/application/ports/RecentProjectsCachePort.ts +5 -0
- package/src/features/recent-projects/core/application/ports/RecentProjectsSourcePort.ts +14 -0
- package/src/features/recent-projects/core/application/use-cases/ListDashboardRecentProjectsUseCase.ts +191 -0
- package/src/features/recent-projects/core/domain/models/ProviderId.ts +1 -0
- package/src/features/recent-projects/core/domain/models/RecentProjectAggregate.ts +14 -0
- package/src/features/recent-projects/core/domain/models/RecentProjectCandidate.ts +14 -0
- package/src/features/recent-projects/core/domain/models/RecentProjectOpenTarget.ts +3 -0
- package/src/features/recent-projects/core/domain/policies/mergeRecentProjectCandidates.ts +88 -0
- package/src/features/recent-projects/main/adapters/input/http/registerRecentProjectsHttp.ts +30 -0
- package/src/features/recent-projects/main/adapters/output/presenters/DashboardRecentProjectsPresenter.ts +27 -0
- package/src/features/recent-projects/main/adapters/output/sources/ClaudeRecentProjectsSourceAdapter.ts +91 -0
- package/src/features/recent-projects/main/adapters/output/sources/CodexRecentProjectsSourceAdapter.ts +326 -0
- package/src/features/recent-projects/main/composition/createRecentProjectsFeature.ts +43 -0
- package/src/features/recent-projects/main/index.ts +3 -0
- package/src/features/recent-projects/main/infrastructure/cache/InMemoryRecentProjectsCache.ts +34 -0
- package/src/features/recent-projects/main/infrastructure/codex/CodexAppServerClient.ts +116 -0
- package/src/features/recent-projects/main/infrastructure/identity/RecentProjectIdentityResolver.ts +20 -0
- package/src/features/recent-projects/main/infrastructure/identity/normalizeIdentityPath.ts +10 -0
- package/src/features/recent-projects/renderer/adapters/RecentProjectsSectionAdapter.ts +132 -0
- package/src/features/recent-projects/renderer/hooks/useOpenRecentProject.ts +143 -0
- package/src/features/recent-projects/renderer/hooks/useRecentProjectsSection.ts +289 -0
- package/src/features/recent-projects/renderer/index.ts +2 -0
- package/src/features/recent-projects/renderer/ui/RecentProjectCard.tsx +221 -0
- package/src/features/recent-projects/renderer/ui/RecentProjectsSection.tsx +167 -0
- package/src/features/recent-projects/renderer/utils/activeProjectTeams.ts +48 -0
- package/src/features/recent-projects/renderer/utils/navigation.ts +65 -0
- package/src/features/recent-projects/renderer/utils/projectDecorations.ts +11 -0
- package/src/features/recent-projects/renderer/utils/recentProjectOpenHistory.ts +268 -0
- package/src/features/recent-projects/renderer/utils/recentProjectsClientCache.ts +78 -0
- package/src/main/constants/messageTags.ts +46 -0
- package/src/main/constants/worktreePatterns.ts +47 -0
- package/src/main/server.ts +3705 -0
- package/src/main/services/UpdateService.ts +166 -0
- package/src/main/services/ccConnect/CcConnectBridge.ts +313 -0
- package/src/main/services/ccConnect/CcConnectClient.ts +397 -0
- package/src/main/services/ccConnect/MessageBridge.ts +162 -0
- package/src/main/services/ccConnect/ProjectMappingStore.ts +148 -0
- package/src/main/services/ccConnect/index.ts +8 -0
- package/src/main/services/teams-mvp/TeamProvisioningService.ts +275 -0
- package/src/main/services/teams-mvp/TeamWorkspaceService.ts +404 -0
- package/src/main/services/teams-mvp/index.ts +26 -0
- package/src/main/types/chunks.ts +506 -0
- package/src/main/types/domain.ts +342 -0
- package/src/main/types/index.ts +24 -0
- package/src/main/types/jsonl.ts +355 -0
- package/src/main/types/messages.ts +395 -0
- package/src/renderer/App.tsx +287 -0
- package/src/renderer/api/httpClient.ts +2207 -0
- package/src/renderer/api/index.ts +19 -0
- package/src/renderer/api/providers.ts +77 -0
- package/src/renderer/assets/participant-avatars/01.png +0 -0
- package/src/renderer/assets/participant-avatars/02.png +0 -0
- package/src/renderer/assets/participant-avatars/03.png +0 -0
- package/src/renderer/assets/participant-avatars/04.png +0 -0
- package/src/renderer/assets/participant-avatars/05.png +0 -0
- package/src/renderer/assets/participant-avatars/06.png +0 -0
- package/src/renderer/assets/participant-avatars/07.png +0 -0
- package/src/renderer/assets/participant-avatars/08.png +0 -0
- package/src/renderer/assets/participant-avatars/09.png +0 -0
- package/src/renderer/assets/participant-avatars/10.png +0 -0
- package/src/renderer/assets/participant-avatars/11.png +0 -0
- package/src/renderer/assets/participant-avatars/12.png +0 -0
- package/src/renderer/assets/participant-avatars/13.png +0 -0
- package/src/renderer/components/chat/AIChatGroup.tsx +519 -0
- package/src/renderer/components/chat/ChatHistory.tsx +1115 -0
- package/src/renderer/components/chat/ChatHistoryEmptyState.tsx +15 -0
- package/src/renderer/components/chat/ChatHistoryItem.tsx +144 -0
- package/src/renderer/components/chat/ChatHistoryLoadingState.tsx +45 -0
- package/src/renderer/components/chat/CompactBoundary.tsx +169 -0
- package/src/renderer/components/chat/ContextBadge.tsx +582 -0
- package/src/renderer/components/chat/DisplayItemList.tsx +431 -0
- package/src/renderer/components/chat/LastOutputDisplay.tsx +259 -0
- package/src/renderer/components/chat/SessionContextPanel/DirectoryTree/DirectoryTreeNode.tsx +125 -0
- package/src/renderer/components/chat/SessionContextPanel/DirectoryTree/buildDirectoryTree.ts +47 -0
- package/src/renderer/components/chat/SessionContextPanel/DirectoryTree/types.ts +12 -0
- package/src/renderer/components/chat/SessionContextPanel/components/ClaudeMdFilesSection.tsx +90 -0
- package/src/renderer/components/chat/SessionContextPanel/components/ClaudeMdSection.tsx +86 -0
- package/src/renderer/components/chat/SessionContextPanel/components/CollapsibleSection.tsx +77 -0
- package/src/renderer/components/chat/SessionContextPanel/components/FlatInjectionList.tsx +248 -0
- package/src/renderer/components/chat/SessionContextPanel/components/MentionedFilesSection.tsx +50 -0
- package/src/renderer/components/chat/SessionContextPanel/components/RankedInjectionList.tsx +284 -0
- package/src/renderer/components/chat/SessionContextPanel/components/SessionContextHeader.tsx +290 -0
- package/src/renderer/components/chat/SessionContextPanel/components/SessionContextHelpTooltip.tsx +165 -0
- package/src/renderer/components/chat/SessionContextPanel/components/TaskCoordinationSection.tsx +47 -0
- package/src/renderer/components/chat/SessionContextPanel/components/ThinkingTextSection.tsx +47 -0
- package/src/renderer/components/chat/SessionContextPanel/components/ToolOutputsSection.tsx +47 -0
- package/src/renderer/components/chat/SessionContextPanel/components/UserMessagesSection.tsx +47 -0
- package/src/renderer/components/chat/SessionContextPanel/index.tsx +314 -0
- package/src/renderer/components/chat/SessionContextPanel/items/ClaudeMdItem.tsx +76 -0
- package/src/renderer/components/chat/SessionContextPanel/items/MentionedFileItem.tsx +91 -0
- package/src/renderer/components/chat/SessionContextPanel/items/TaskCoordinationItem.tsx +116 -0
- package/src/renderer/components/chat/SessionContextPanel/items/ThinkingTextItem.tsx +96 -0
- package/src/renderer/components/chat/SessionContextPanel/items/ToolBreakdownItem.tsx +38 -0
- package/src/renderer/components/chat/SessionContextPanel/items/ToolOutputItem.tsx +113 -0
- package/src/renderer/components/chat/SessionContextPanel/items/UserMessageItem.tsx +69 -0
- package/src/renderer/components/chat/SessionContextPanel/types.ts +96 -0
- package/src/renderer/components/chat/SessionContextPanel/utils/formatting.ts +6 -0
- package/src/renderer/components/chat/SessionContextPanel/utils/pathParsing.ts +23 -0
- package/src/renderer/components/chat/SystemChatGroup.tsx +60 -0
- package/src/renderer/components/chat/UserChatGroup.tsx +668 -0
- package/src/renderer/components/chat/items/BaseItem.tsx +213 -0
- package/src/renderer/components/chat/items/ExecutionTrace.tsx +279 -0
- package/src/renderer/components/chat/items/LinkedToolItem.tsx +235 -0
- package/src/renderer/components/chat/items/MetricsPill.tsx +215 -0
- package/src/renderer/components/chat/items/SlashItem.tsx +81 -0
- package/src/renderer/components/chat/items/SubagentItem.tsx +592 -0
- package/src/renderer/components/chat/items/TeammateMessageItem.tsx +261 -0
- package/src/renderer/components/chat/items/TextItem.tsx +82 -0
- package/src/renderer/components/chat/items/ThinkingItem.tsx +82 -0
- package/src/renderer/components/chat/items/baseItemHelpers.ts +42 -0
- package/src/renderer/components/chat/items/linkedTool/CollapsibleOutputSection.tsx +57 -0
- package/src/renderer/components/chat/items/linkedTool/DefaultToolViewer.tsx +56 -0
- package/src/renderer/components/chat/items/linkedTool/EditToolViewer.tsx +74 -0
- package/src/renderer/components/chat/items/linkedTool/ReadToolViewer.tsx +102 -0
- package/src/renderer/components/chat/items/linkedTool/SkillToolViewer.tsx +67 -0
- package/src/renderer/components/chat/items/linkedTool/ToolErrorDisplay.tsx +43 -0
- package/src/renderer/components/chat/items/linkedTool/WriteToolViewer.tsx +66 -0
- package/src/renderer/components/chat/items/linkedTool/index.ts +13 -0
- package/src/renderer/components/chat/items/linkedTool/renderHelpers.tsx +259 -0
- package/src/renderer/components/chat/markdownComponents.tsx +257 -0
- package/src/renderer/components/chat/markdownCopyUtils.ts +18 -0
- package/src/renderer/components/chat/searchHighlightUtils.ts +166 -0
- package/src/renderer/components/chat/viewers/CodeBlockViewer.tsx +244 -0
- package/src/renderer/components/chat/viewers/DiffViewer.tsx +459 -0
- package/src/renderer/components/chat/viewers/FileLink.tsx +182 -0
- package/src/renderer/components/chat/viewers/MarkdownViewer.tsx +1093 -0
- package/src/renderer/components/chat/viewers/MermaidDiagram.tsx +116 -0
- package/src/renderer/components/chat/viewers/index.ts +3 -0
- package/src/renderer/components/chat/viewers/syntaxHighlighter.ts +583 -0
- package/src/renderer/components/common/AppLogo.tsx +61 -0
- package/src/renderer/components/common/CliInstallWarningBanner.tsx +57 -0
- package/src/renderer/components/common/ConfirmDialog.tsx +176 -0
- package/src/renderer/components/common/ConnectionStatusBadge.tsx +56 -0
- package/src/renderer/components/common/ContextSwitchOverlay.tsx +38 -0
- package/src/renderer/components/common/CopyButton.tsx +85 -0
- package/src/renderer/components/common/CopyablePath.tsx +68 -0
- package/src/renderer/components/common/ErrorBoundary.tsx +211 -0
- package/src/renderer/components/common/ExportDropdown.tsx +142 -0
- package/src/renderer/components/common/FileTree.tsx +182 -0
- package/src/renderer/components/common/GlobalProviderStatusHeader.tsx +316 -0
- package/src/renderer/components/common/OngoingIndicator.tsx +67 -0
- package/src/renderer/components/common/ProviderBrandLogo.tsx +206 -0
- package/src/renderer/components/common/RepositoryDropdown.tsx +230 -0
- package/src/renderer/components/common/TokenUsageDisplay.tsx +581 -0
- package/src/renderer/components/common/WarningBanner.tsx +25 -0
- package/src/renderer/components/common/WorkspaceIndicator.tsx +183 -0
- package/src/renderer/components/common/WorktreeBadge.tsx +123 -0
- package/src/renderer/components/dashboard/CliStatusBanner.tsx +1845 -0
- package/src/renderer/components/dashboard/DashboardView.tsx +274 -0
- package/src/renderer/components/extensions/ExtensionStoreView.tsx +591 -0
- package/src/renderer/components/extensions/ExtensionsSubTabTrigger.tsx +52 -0
- package/src/renderer/components/extensions/apikeys/ApiKeyCard.tsx +143 -0
- package/src/renderer/components/extensions/apikeys/ApiKeyFormDialog.tsx +282 -0
- package/src/renderer/components/extensions/apikeys/ApiKeysPanel.tsx +280 -0
- package/src/renderer/components/extensions/common/InstallButton.tsx +186 -0
- package/src/renderer/components/extensions/common/InstallCountBadge.tsx +21 -0
- package/src/renderer/components/extensions/common/SearchInput.tsx +70 -0
- package/src/renderer/components/extensions/common/SourceBadge.tsx +31 -0
- package/src/renderer/components/extensions/mcp/CustomMcpServerDialog.tsx +560 -0
- package/src/renderer/components/extensions/mcp/McpServerCard.tsx +314 -0
- package/src/renderer/components/extensions/mcp/McpServerDetailDialog.tsx +669 -0
- package/src/renderer/components/extensions/mcp/McpServersPanel.tsx +543 -0
- package/src/renderer/components/extensions/plugins/CapabilityChips.tsx +70 -0
- package/src/renderer/components/extensions/plugins/CategoryChips.tsx +67 -0
- package/src/renderer/components/extensions/plugins/PluginCard.tsx +146 -0
- package/src/renderer/components/extensions/plugins/PluginDetailDialog.tsx +270 -0
- package/src/renderer/components/extensions/plugins/PluginsPanel.tsx +436 -0
- package/src/renderer/components/extensions/skills/SkillCodeEditor.tsx +117 -0
- package/src/renderer/components/extensions/skills/SkillDetailDialog.tsx +372 -0
- package/src/renderer/components/extensions/skills/SkillEditorDialog.tsx +856 -0
- package/src/renderer/components/extensions/skills/SkillImportDialog.tsx +343 -0
- package/src/renderer/components/extensions/skills/SkillReviewDialog.tsx +166 -0
- package/src/renderer/components/extensions/skills/SkillsPanel.tsx +784 -0
- package/src/renderer/components/extensions/skills/skillDraftUtils.ts +234 -0
- package/src/renderer/components/extensions/skills/skillFolderNameUtils.ts +19 -0
- package/src/renderer/components/extensions/skills/skillProjectUtils.ts +13 -0
- package/src/renderer/components/extensions/skills/skillValidationUtils.ts +31 -0
- package/src/renderer/components/layout/MiddlePanel.tsx +18 -0
- package/src/renderer/components/layout/MoreMenu.tsx +243 -0
- package/src/renderer/components/layout/PaneContainer.tsx +27 -0
- package/src/renderer/components/layout/PaneContent.tsx +84 -0
- package/src/renderer/components/layout/PaneResizeHandle.tsx +85 -0
- package/src/renderer/components/layout/PaneSplitDropZone.tsx +54 -0
- package/src/renderer/components/layout/PaneView.tsx +75 -0
- package/src/renderer/components/layout/SessionTabContent.tsx +102 -0
- package/src/renderer/components/layout/Sidebar.tsx +205 -0
- package/src/renderer/components/layout/SortableTab.tsx +261 -0
- package/src/renderer/components/layout/TabBar.tsx +354 -0
- package/src/renderer/components/layout/TabBarActions.tsx +176 -0
- package/src/renderer/components/layout/TabBarRow.tsx +99 -0
- package/src/renderer/components/layout/TabContextMenu.tsx +171 -0
- package/src/renderer/components/layout/TabbedLayout.tsx +186 -0
- package/src/renderer/components/layout/TeamTabSectionNav.tsx +146 -0
- package/src/renderer/components/notifications/NotificationRow.tsx +228 -0
- package/src/renderer/components/notifications/NotificationsView.tsx +371 -0
- package/src/renderer/components/report/AssessmentBadge.tsx +78 -0
- package/src/renderer/components/report/ReportSection.tsx +58 -0
- package/src/renderer/components/report/SessionReportTab.tsx +102 -0
- package/src/renderer/components/report/sections/CostSection.tsx +259 -0
- package/src/renderer/components/report/sections/ErrorSection.tsx +100 -0
- package/src/renderer/components/report/sections/FrictionSection.tsx +91 -0
- package/src/renderer/components/report/sections/GitSection.tsx +72 -0
- package/src/renderer/components/report/sections/InsightsSection.tsx +207 -0
- package/src/renderer/components/report/sections/KeyTakeawaysSection.tsx +55 -0
- package/src/renderer/components/report/sections/OverviewSection.tsx +64 -0
- package/src/renderer/components/report/sections/QualitySection.tsx +151 -0
- package/src/renderer/components/report/sections/SubagentSection.tsx +88 -0
- package/src/renderer/components/report/sections/TimelineSection.tsx +111 -0
- package/src/renderer/components/report/sections/TokenSection.tsx +116 -0
- package/src/renderer/components/report/sections/ToolSection.tsx +77 -0
- package/src/renderer/components/runtime/ProviderModelBadges.tsx +142 -0
- package/src/renderer/components/runtime/ProviderRuntimeBackendSelector.tsx +327 -0
- package/src/renderer/components/runtime/ProviderRuntimeSettingsDialog.tsx +288 -0
- package/src/renderer/components/runtime/providerConnectionUi.ts +408 -0
- package/src/renderer/components/schedules/SchedulesView.tsx +529 -0
- package/src/renderer/components/search/CommandPalette.tsx +610 -0
- package/src/renderer/components/search/SearchBar.tsx +171 -0
- package/src/renderer/components/settings/NotificationTriggerSettings/components/AddTriggerForm.tsx +233 -0
- package/src/renderer/components/settings/NotificationTriggerSettings/components/ColorPaletteSelector.tsx +144 -0
- package/src/renderer/components/settings/NotificationTriggerSettings/components/DynamicConfigSection.tsx +189 -0
- package/src/renderer/components/settings/NotificationTriggerSettings/components/GeneralInfoSection.tsx +68 -0
- package/src/renderer/components/settings/NotificationTriggerSettings/components/IgnorePatternsSection.tsx +73 -0
- package/src/renderer/components/settings/NotificationTriggerSettings/components/ModeSelector.tsx +45 -0
- package/src/renderer/components/settings/NotificationTriggerSettings/components/RepositoryScopeSection.tsx +63 -0
- package/src/renderer/components/settings/NotificationTriggerSettings/components/SectionHeader.tsx +15 -0
- package/src/renderer/components/settings/NotificationTriggerSettings/components/TriggerCard.tsx +150 -0
- package/src/renderer/components/settings/NotificationTriggerSettings/components/TriggerCardHeader.tsx +125 -0
- package/src/renderer/components/settings/NotificationTriggerSettings/components/TriggerConfiguration.tsx +342 -0
- package/src/renderer/components/settings/NotificationTriggerSettings/components/TriggerPreview.tsx +108 -0
- package/src/renderer/components/settings/NotificationTriggerSettings/hooks/useAddTriggerFormHandlers.ts +218 -0
- package/src/renderer/components/settings/NotificationTriggerSettings/hooks/useAddTriggerFormState.ts +135 -0
- package/src/renderer/components/settings/NotificationTriggerSettings/hooks/useRepositoryLookup.ts +47 -0
- package/src/renderer/components/settings/NotificationTriggerSettings/hooks/useTriggerCardState.ts +281 -0
- package/src/renderer/components/settings/NotificationTriggerSettings/hooks/useTriggerForm.ts +185 -0
- package/src/renderer/components/settings/NotificationTriggerSettings/index.tsx +87 -0
- package/src/renderer/components/settings/NotificationTriggerSettings/types.ts +39 -0
- package/src/renderer/components/settings/NotificationTriggerSettings/utils/constants.ts +50 -0
- package/src/renderer/components/settings/NotificationTriggerSettings/utils/trigger.ts +113 -0
- package/src/renderer/components/settings/SettingsTabs.tsx +110 -0
- package/src/renderer/components/settings/SettingsView.tsx +153 -0
- package/src/renderer/components/settings/components/SettingRow.tsx +44 -0
- package/src/renderer/components/settings/components/SettingsSectionHeader.tsx +24 -0
- package/src/renderer/components/settings/components/SettingsSelect.tsx +100 -0
- package/src/renderer/components/settings/components/SettingsToggle.tsx +45 -0
- package/src/renderer/components/settings/components/index.ts +8 -0
- package/src/renderer/components/settings/hooks/index.ts +6 -0
- package/src/renderer/components/settings/hooks/useSettingsConfig.ts +270 -0
- package/src/renderer/components/settings/hooks/useSettingsHandlers.ts +468 -0
- package/src/renderer/components/settings/sections/AdvancedSection.tsx +234 -0
- package/src/renderer/components/settings/sections/CliStatusSection.tsx +930 -0
- package/src/renderer/components/settings/sections/ConfigEditorDialog.tsx +391 -0
- package/src/renderer/components/settings/sections/GeneralSection.tsx +665 -0
- package/src/renderer/components/settings/sections/HarnessSection.tsx +133 -0
- package/src/renderer/components/settings/sections/PlatformsSection.tsx +517 -0
- package/src/renderer/components/settings/sections/index.ts +8 -0
- package/src/renderer/components/sidebar/DateGroupedSessions.tsx +1115 -0
- package/src/renderer/components/sidebar/GlobalTaskList.tsx +853 -0
- package/src/renderer/components/sidebar/SessionContextMenu.tsx +182 -0
- package/src/renderer/components/sidebar/SessionFiltersPopover.tsx +115 -0
- package/src/renderer/components/sidebar/SessionItem.tsx +393 -0
- package/src/renderer/components/sidebar/SidebarSessions.tsx +542 -0
- package/src/renderer/components/sidebar/SidebarTaskItem.tsx +286 -0
- package/src/renderer/components/sidebar/TaskContextMenu.tsx +86 -0
- package/src/renderer/components/sidebar/TaskFiltersPopover.tsx +203 -0
- package/src/renderer/components/sidebar/WorkspaceBrowser.tsx +370 -0
- package/src/renderer/components/sidebar/dateGroupedSessionsSelection.ts +33 -0
- package/src/renderer/components/sidebar/projectGroupPagination.ts +89 -0
- package/src/renderer/components/sidebar/taskFiltersState.ts +82 -0
- package/src/renderer/components/splash/splashScene.ts +979 -0
- package/src/renderer/components/team/CcSessionsSection.tsx +202 -0
- package/src/renderer/components/team/ClaudeLogsDialog.tsx +71 -0
- package/src/renderer/components/team/ClaudeLogsFilterPopover.tsx +213 -0
- package/src/renderer/components/team/ClaudeLogsPanel.tsx +170 -0
- package/src/renderer/components/team/ClaudeLogsSection.tsx +154 -0
- package/src/renderer/components/team/CliLogsRichView.tsx +640 -0
- package/src/renderer/components/team/CollapsibleTeamSection.tsx +177 -0
- package/src/renderer/components/team/HarnessCards.ts +38 -0
- package/src/renderer/components/team/MemberBadge.tsx +117 -0
- package/src/renderer/components/team/ProcessesSection.tsx +193 -0
- package/src/renderer/components/team/ProvisioningProgressBlock.tsx +389 -0
- package/src/renderer/components/team/RoleSelect.tsx +171 -0
- package/src/renderer/components/team/StepProgressBar.tsx +165 -0
- package/src/renderer/components/team/TaskTooltip.tsx +197 -0
- package/src/renderer/components/team/TeamDetailView.tsx +3002 -0
- package/src/renderer/components/team/TeamEmptyState.tsx +102 -0
- package/src/renderer/components/team/TeamListFilterPopover.tsx +183 -0
- package/src/renderer/components/team/TeamListView.tsx +1336 -0
- package/src/renderer/components/team/TeamProvisioningBanner.tsx +16 -0
- package/src/renderer/components/team/TeamProvisioningPanel.tsx +115 -0
- package/src/renderer/components/team/TeamSessionsSection.tsx +267 -0
- package/src/renderer/components/team/ToolApprovalDiffPreview.tsx +206 -0
- package/src/renderer/components/team/ToolApprovalSheet.tsx +675 -0
- package/src/renderer/components/team/UnreadCommentsBadge.tsx +37 -0
- package/src/renderer/components/team/activity/ActiveTasksBlock.tsx +191 -0
- package/src/renderer/components/team/activity/ActivityItem.tsx +1649 -0
- package/src/renderer/components/team/activity/ActivityTimeline.tsx +959 -0
- package/src/renderer/components/team/activity/AnimatedHeightReveal.tsx +117 -0
- package/src/renderer/components/team/activity/LeadThoughtsGroup.tsx +1152 -0
- package/src/renderer/components/team/activity/MessageExpandDialog.tsx +213 -0
- package/src/renderer/components/team/activity/PendingRepliesBlock.tsx +275 -0
- package/src/renderer/components/team/activity/ReplyQuoteBlock.tsx +79 -0
- package/src/renderer/components/team/activity/ThoughtBodyContent.tsx +150 -0
- package/src/renderer/components/team/activity/activityMarkdown.ts +36 -0
- package/src/renderer/components/team/activity/activityMessageContext.ts +68 -0
- package/src/renderer/components/team/activity/collapseState.ts +66 -0
- package/src/renderer/components/team/activity/useNewItemKeys.ts +70 -0
- package/src/renderer/components/team/attachments/AttachmentDisplay.tsx +132 -0
- package/src/renderer/components/team/attachments/AttachmentPreviewItem.tsx +62 -0
- package/src/renderer/components/team/attachments/AttachmentPreviewList.tsx +193 -0
- package/src/renderer/components/team/attachments/AttachmentThumbnail.tsx +42 -0
- package/src/renderer/components/team/attachments/DropZoneOverlay.tsx +54 -0
- package/src/renderer/components/team/attachments/ImageLightbox.tsx +132 -0
- package/src/renderer/components/team/attachments/SourceMessageAttachments.tsx +70 -0
- package/src/renderer/components/team/dialogs/AddMemberDialog.tsx +222 -0
- package/src/renderer/components/team/dialogs/AdvancedCliSection.tsx +347 -0
- package/src/renderer/components/team/dialogs/AnthropicFastModeSelector.tsx +120 -0
- package/src/renderer/components/team/dialogs/CreateTaskDialog.tsx +489 -0
- package/src/renderer/components/team/dialogs/CreateTeamDialog.tsx +484 -0
- package/src/renderer/components/team/dialogs/EditTeamDialog.tsx +448 -0
- package/src/renderer/components/team/dialogs/EffortLevelSelector.tsx +69 -0
- package/src/renderer/components/team/dialogs/GlobalTaskDetailDialog.tsx +165 -0
- package/src/renderer/components/team/dialogs/LaunchTeamDialog.tsx +2859 -0
- package/src/renderer/components/team/dialogs/LimitContextCheckbox.tsx +57 -0
- package/src/renderer/components/team/dialogs/MembersJsonEditor.tsx +123 -0
- package/src/renderer/components/team/dialogs/OptionalSettingsSection.tsx +124 -0
- package/src/renderer/components/team/dialogs/PlatformManualForm.tsx +145 -0
- package/src/renderer/components/team/dialogs/PlatformSetupQR.tsx +289 -0
- package/src/renderer/components/team/dialogs/ProjectPathSelector.tsx +330 -0
- package/src/renderer/components/team/dialogs/ProvisioningProviderStatusList.tsx +744 -0
- package/src/renderer/components/team/dialogs/ReviewDialog.tsx +130 -0
- package/src/renderer/components/team/dialogs/SendMessageDialog.tsx +530 -0
- package/src/renderer/components/team/dialogs/SkipPermissionsCheckbox.tsx +62 -0
- package/src/renderer/components/team/dialogs/StatusHistoryTimeline.tsx +229 -0
- package/src/renderer/components/team/dialogs/TaskAttachments.tsx +394 -0
- package/src/renderer/components/team/dialogs/TaskCommentAwaitingReply.tsx +57 -0
- package/src/renderer/components/team/dialogs/TaskCommentInput.tsx +420 -0
- package/src/renderer/components/team/dialogs/TaskCommentsSection.tsx +620 -0
- package/src/renderer/components/team/dialogs/TaskDetailDialog.tsx +1480 -0
- package/src/renderer/components/team/dialogs/TeamModelSelector.tsx +560 -0
- package/src/renderer/components/team/dialogs/TeammateRuntimeCompatibilityNotice.tsx +60 -0
- package/src/renderer/components/team/dialogs/ToolApprovalSettingsPanel.tsx +173 -0
- package/src/renderer/components/team/dialogs/editTeamRuntimeChanges.ts +179 -0
- package/src/renderer/components/team/dialogs/globalTaskDetailDialogLoading.ts +34 -0
- package/src/renderer/components/team/dialogs/launchDialogPrefill.ts +125 -0
- package/src/renderer/components/team/dialogs/memberModelScope.ts +77 -0
- package/src/renderer/components/team/dialogs/platformMeta.ts +118 -0
- package/src/renderer/components/team/dialogs/projectPathOptions.ts +50 -0
- package/src/renderer/components/team/dialogs/providerPrepareDiagnostics.ts +222 -0
- package/src/renderer/components/team/dialogs/providerPrepareRequestSignature.ts +122 -0
- package/src/renderer/components/team/dialogs/provisioningMemberScope.ts +10 -0
- package/src/renderer/components/team/dialogs/provisioningModelIssues.ts +124 -0
- package/src/renderer/components/team/dialogs/teamNameSets.ts +67 -0
- package/src/renderer/components/team/dialogs/teamRelaunchFlow.ts +30 -0
- package/src/renderer/components/team/dialogs/teammateLaunchMode.ts +49 -0
- package/src/renderer/components/team/dialogs/teammateRuntimeCompatibility.tsx +101 -0
- package/src/renderer/components/team/editor/CodeMirrorEditor.tsx +506 -0
- package/src/renderer/components/team/editor/EditorBinaryPlaceholder.tsx +43 -0
- package/src/renderer/components/team/editor/EditorBinaryState.tsx +29 -0
- package/src/renderer/components/team/editor/EditorBreadcrumb.tsx +84 -0
- package/src/renderer/components/team/editor/EditorContextMenu.tsx +213 -0
- package/src/renderer/components/team/editor/EditorEmptyState.tsx +35 -0
- package/src/renderer/components/team/editor/EditorErrorBoundary.tsx +63 -0
- package/src/renderer/components/team/editor/EditorErrorState.tsx +41 -0
- package/src/renderer/components/team/editor/EditorFileTree.tsx +903 -0
- package/src/renderer/components/team/editor/EditorImagePreview.tsx +138 -0
- package/src/renderer/components/team/editor/EditorSearchPanel.tsx +508 -0
- package/src/renderer/components/team/editor/EditorSelectionMenu.tsx +112 -0
- package/src/renderer/components/team/editor/EditorShortcutsHelp.tsx +125 -0
- package/src/renderer/components/team/editor/EditorStatusBar.tsx +72 -0
- package/src/renderer/components/team/editor/EditorTabBar.tsx +265 -0
- package/src/renderer/components/team/editor/EditorTabContextMenu.tsx +88 -0
- package/src/renderer/components/team/editor/EditorToolbar.tsx +163 -0
- package/src/renderer/components/team/editor/FileIcon.tsx +66 -0
- package/src/renderer/components/team/editor/GitStatusBadge.tsx +47 -0
- package/src/renderer/components/team/editor/GoToLineDialog.tsx +186 -0
- package/src/renderer/components/team/editor/MarkdownPreviewPane.tsx +57 -0
- package/src/renderer/components/team/editor/MarkdownSplitView.tsx +127 -0
- package/src/renderer/components/team/editor/NewFileDialog.tsx +131 -0
- package/src/renderer/components/team/editor/ProjectEditorOverlay.tsx +924 -0
- package/src/renderer/components/team/editor/QuickOpenDialog.tsx +163 -0
- package/src/renderer/components/team/editor/SearchInFilesPanel.tsx +358 -0
- package/src/renderer/components/team/editor/fileIcons.ts +222 -0
- package/src/renderer/components/team/kanban/KanbanBoard.tsx +664 -0
- package/src/renderer/components/team/kanban/KanbanColumn.tsx +61 -0
- package/src/renderer/components/team/kanban/KanbanFilterPopover.tsx +210 -0
- package/src/renderer/components/team/kanban/KanbanGridLayout.tsx +460 -0
- package/src/renderer/components/team/kanban/KanbanSearchInput.tsx +284 -0
- package/src/renderer/components/team/kanban/KanbanSortPopover.tsx +140 -0
- package/src/renderer/components/team/kanban/KanbanTaskCard.test.tsx +199 -0
- package/src/renderer/components/team/kanban/KanbanTaskCard.tsx +446 -0
- package/src/renderer/components/team/kanban/TrashDialog.tsx +112 -0
- package/src/renderer/components/team/members/CurrentTaskIndicator.tsx +56 -0
- package/src/renderer/components/team/members/LeadModelRow.test.tsx +133 -0
- package/src/renderer/components/team/members/LeadModelRow.tsx +183 -0
- package/src/renderer/components/team/members/MemberCard.tsx +665 -0
- package/src/renderer/components/team/members/MemberDetailDialog.tsx +309 -0
- package/src/renderer/components/team/members/MemberDetailHeader.tsx +183 -0
- package/src/renderer/components/team/members/MemberDetailStats.tsx +80 -0
- package/src/renderer/components/team/members/MemberDraftRow.test.tsx +184 -0
- package/src/renderer/components/team/members/MemberDraftRow.tsx +515 -0
- package/src/renderer/components/team/members/MemberExecutionLog.tsx +224 -0
- package/src/renderer/components/team/members/MemberHoverCard.tsx +292 -0
- package/src/renderer/components/team/members/MemberLaunchDiagnosticsButton.tsx +60 -0
- package/src/renderer/components/team/members/MemberList.tsx +405 -0
- package/src/renderer/components/team/members/MemberLogsTab.tsx +958 -0
- package/src/renderer/components/team/members/MemberMessagesTab.tsx +251 -0
- package/src/renderer/components/team/members/MemberPresenceDot.tsx +28 -0
- package/src/renderer/components/team/members/MemberRoleEditor.tsx +84 -0
- package/src/renderer/components/team/members/MemberStatsTab.tsx +299 -0
- package/src/renderer/components/team/members/MemberTasksTab.tsx +87 -0
- package/src/renderer/components/team/members/MemberWorkspaceTab.tsx +141 -0
- package/src/renderer/components/team/members/MembersEditorSection.tsx +495 -0
- package/src/renderer/components/team/members/SubagentRecentMessagesPreview.tsx +125 -0
- package/src/renderer/components/team/members/TeamRosterEditorSection.tsx +153 -0
- package/src/renderer/components/team/members/memberActivityEntries.ts +42 -0
- package/src/renderer/components/team/members/memberDetailTypes.ts +3 -0
- package/src/renderer/components/team/members/memberNameSets.ts +65 -0
- package/src/renderer/components/team/members/membersEditorTypes.ts +21 -0
- package/src/renderer/components/team/members/membersEditorUtils.ts +267 -0
- package/src/renderer/components/team/messages/MessageComposer.tsx +939 -0
- package/src/renderer/components/team/messages/MessagesFilterPopover.tsx +228 -0
- package/src/renderer/components/team/messages/MessagesPanel.tsx +1508 -0
- package/src/renderer/components/team/messages/OpenCodeDeliveryWarning.tsx +151 -0
- package/src/renderer/components/team/messages/StatusBlock.tsx +126 -0
- package/src/renderer/components/team/provisioningSteps.ts +363 -0
- package/src/renderer/components/team/review/ChangeReviewDialog.tsx +133 -0
- package/src/renderer/components/team/schedule/CcCronScheduleDialog.tsx +218 -0
- package/src/renderer/components/team/schedule/CronScheduleInput.tsx +254 -0
- package/src/renderer/components/team/schedule/ScheduleEmptyState.tsx +15 -0
- package/src/renderer/components/team/schedule/ScheduleRunLogDialog.tsx +277 -0
- package/src/renderer/components/team/schedule/ScheduleRunRow.tsx +106 -0
- package/src/renderer/components/team/schedule/ScheduleSection.tsx +281 -0
- package/src/renderer/components/team/schedule/ScheduleStatusBadge.tsx +55 -0
- package/src/renderer/components/team/sidebar/TeamSidebarHost.tsx +76 -0
- package/src/renderer/components/team/sidebar/TeamSidebarPortalManager.ts +173 -0
- package/src/renderer/components/team/sidebar/TeamSidebarPortalSource.tsx +66 -0
- package/src/renderer/components/team/sidebar/TeamSidebarRail.tsx +68 -0
- package/src/renderer/components/team/sidebar/teamSidebarUiState.ts +136 -0
- package/src/renderer/components/team/taskLogs/ExactTaskLogCard.tsx +132 -0
- package/src/renderer/components/team/taskLogs/ExactTaskLogsSection.tsx +258 -0
- package/src/renderer/components/team/taskLogs/ExecutionSessionsSection.tsx +48 -0
- package/src/renderer/components/team/taskLogs/TaskActivityLinkedToolCard.tsx +31 -0
- package/src/renderer/components/team/taskLogs/TaskActivitySection.tsx +462 -0
- package/src/renderer/components/team/taskLogs/TaskLogStreamSection.tsx +375 -0
- package/src/renderer/components/team/taskLogs/TaskLogsPanel.tsx +294 -0
- package/src/renderer/components/team/taskLogs/featureGates.ts +22 -0
- package/src/renderer/components/team/tasks/TaskList.tsx +111 -0
- package/src/renderer/components/team/tasks/TaskRow.tsx +65 -0
- package/src/renderer/components/team/teamProjectSelection.ts +156 -0
- package/src/renderer/components/team/teamSessionFetchGuards.ts +26 -0
- package/src/renderer/components/team/useClaudeLogsController.ts +668 -0
- package/src/renderer/components/team/useTeamProvisioningPresentation.ts +54 -0
- package/src/renderer/components/terminal/TerminalLogPanel.tsx +37 -0
- package/src/renderer/components/ui/ChipInteractionLayer.tsx +255 -0
- package/src/renderer/components/ui/CodeChipBadge.tsx +37 -0
- package/src/renderer/components/ui/ExpandableContent.tsx +110 -0
- package/src/renderer/components/ui/MemberSelect.tsx +209 -0
- package/src/renderer/components/ui/MentionInteractionLayer.tsx +121 -0
- package/src/renderer/components/ui/MentionSuggestionList.tsx +274 -0
- package/src/renderer/components/ui/MentionableTextarea.tsx +1426 -0
- package/src/renderer/components/ui/SlashCommandInteractionLayer.tsx +88 -0
- package/src/renderer/components/ui/TaskReferenceInteractionLayer.tsx +101 -0
- package/src/renderer/components/ui/UrlInteractionLayer.tsx +102 -0
- package/src/renderer/components/ui/alert-dialog.tsx +127 -0
- package/src/renderer/components/ui/auto-resize-textarea.tsx +93 -0
- package/src/renderer/components/ui/badge.tsx +37 -0
- package/src/renderer/components/ui/button.tsx +54 -0
- package/src/renderer/components/ui/checkbox.tsx +29 -0
- package/src/renderer/components/ui/combobox.tsx +168 -0
- package/src/renderer/components/ui/context-menu.tsx +124 -0
- package/src/renderer/components/ui/dialog.tsx +114 -0
- package/src/renderer/components/ui/hover-card.tsx +30 -0
- package/src/renderer/components/ui/input.tsx +22 -0
- package/src/renderer/components/ui/label.tsx +21 -0
- package/src/renderer/components/ui/popover.tsx +31 -0
- package/src/renderer/components/ui/select.tsx +150 -0
- package/src/renderer/components/ui/tabs.tsx +52 -0
- package/src/renderer/components/ui/textarea.tsx +21 -0
- package/src/renderer/components/ui/tiptap/TiptapBubbleMenu.tsx +75 -0
- package/src/renderer/components/ui/tiptap/TiptapEditor.tsx +73 -0
- package/src/renderer/components/ui/tiptap/TiptapToolbar.tsx +269 -0
- package/src/renderer/components/ui/tiptap/index.ts +3 -0
- package/src/renderer/components/ui/tiptap/presets.ts +46 -0
- package/src/renderer/components/ui/tiptap/tiptapStyles.css +235 -0
- package/src/renderer/components/ui/tiptap/types.ts +32 -0
- package/src/renderer/components/ui/tiptap/useTiptapEditor.ts +94 -0
- package/src/renderer/components/ui/tooltip.tsx +32 -0
- package/src/renderer/constants/cssVariables.ts +226 -0
- package/src/renderer/constants/layout.ts +6 -0
- package/src/renderer/constants/teamColors.ts +397 -0
- package/src/renderer/constants/teamRoles.ts +41 -0
- package/src/renderer/contexts/TabUIContext.tsx +51 -0
- package/src/renderer/contexts/useTabUIContext.ts +18 -0
- package/src/renderer/favicon.png +0 -0
- package/src/renderer/features/CLAUDE.md +19 -0
- package/src/renderer/hooks/navigation/utils.ts +263 -0
- package/src/renderer/hooks/useAttachments.ts +312 -0
- package/src/renderer/hooks/useAutoScrollBottom.ts +285 -0
- package/src/renderer/hooks/useBranchSync.ts +105 -0
- package/src/renderer/hooks/useChipDraftPersistence.ts +172 -0
- package/src/renderer/hooks/useCliInstaller.ts +106 -0
- package/src/renderer/hooks/useCollapsedGroups.ts +71 -0
- package/src/renderer/hooks/useComposerDraft.ts +504 -0
- package/src/renderer/hooks/useContinuousScrollNav.ts +50 -0
- package/src/renderer/hooks/useCreateTeamDraft.ts +280 -0
- package/src/renderer/hooks/useDraftPersistence.ts +140 -0
- package/src/renderer/hooks/useEditorKeyboardShortcuts.ts +257 -0
- package/src/renderer/hooks/useEffectiveCliProviderStatus.ts +66 -0
- package/src/renderer/hooks/useExtensionsTabState.ts +206 -0
- package/src/renderer/hooks/useFileListCacheWarmer.ts +38 -0
- package/src/renderer/hooks/useFileSuggestions.ts +255 -0
- package/src/renderer/hooks/useKeyboardShortcuts.ts +363 -0
- package/src/renderer/hooks/useLazyFileContent.ts +150 -0
- package/src/renderer/hooks/useMarkCommentsRead.ts +27 -0
- package/src/renderer/hooks/useMarkdownScrollSync.ts +158 -0
- package/src/renderer/hooks/useMemberStats.ts +45 -0
- package/src/renderer/hooks/useMentionDetection.ts +375 -0
- package/src/renderer/hooks/usePersistedGridLayout.ts +109 -0
- package/src/renderer/hooks/useResizableColumns.ts +140 -0
- package/src/renderer/hooks/useResizablePanel.ts +144 -0
- package/src/renderer/hooks/useStableTeamMentionMeta.ts +68 -0
- package/src/renderer/hooks/useSyncedAnimationStyle.ts +29 -0
- package/src/renderer/hooks/useTabNavigationController.ts +524 -0
- package/src/renderer/hooks/useTabUI.ts +252 -0
- package/src/renderer/hooks/useTaskLocalState.ts +163 -0
- package/src/renderer/hooks/useTaskSuggestions.ts +131 -0
- package/src/renderer/hooks/useTeamMessagesExpanded.ts +34 -0
- package/src/renderer/hooks/useTeamMessagesRead.ts +52 -0
- package/src/renderer/hooks/useTeamSuggestions.ts +78 -0
- package/src/renderer/hooks/useTheme.ts +138 -0
- package/src/renderer/hooks/useToolApprovalDiff.ts +212 -0
- package/src/renderer/hooks/useUnreadCommentCount.ts +14 -0
- package/src/renderer/hooks/useViewedFiles.ts +74 -0
- package/src/renderer/hooks/useViewportCommentRead.ts +147 -0
- package/src/renderer/hooks/useViewportObserver.ts +138 -0
- package/src/renderer/hooks/useVisibleAIGroup.ts +122 -0
- package/src/renderer/hooks/useVisibleFileSection.ts +114 -0
- package/src/renderer/hooks/useZoomFactor.ts +36 -0
- package/src/renderer/index.css +1560 -0
- package/src/renderer/index.html +1293 -0
- package/src/renderer/lib/utils.ts +6 -0
- package/src/renderer/main.tsx +30 -0
- package/src/renderer/sentry.ts +104 -0
- package/src/renderer/services/__tests__/createTeamPreferences.test.ts +67 -0
- package/src/renderer/services/commentReadStorage.ts +349 -0
- package/src/renderer/services/composerDraftStorage.ts +271 -0
- package/src/renderer/services/contextStorage.ts +201 -0
- package/src/renderer/services/createTeamDraftStorage.ts +151 -0
- package/src/renderer/services/createTeamPreferences.ts +361 -0
- package/src/renderer/services/dashboardCliStatusBannerPreference.ts +20 -0
- package/src/renderer/services/draftStorage.ts +128 -0
- package/src/renderer/services/layout-system/BrowserGridLayoutRepository.ts +111 -0
- package/src/renderer/services/layout-system/GridLayoutRepository.ts +8 -0
- package/src/renderer/services/layout-system/gridLayoutSchema.ts +137 -0
- package/src/renderer/services/layout-system/gridLayoutTypes.ts +17 -0
- package/src/renderer/store/index.ts +1556 -0
- package/src/renderer/store/slices/changeReviewSlice.ts +1694 -0
- package/src/renderer/store/slices/cliInstallerSlice.ts +689 -0
- package/src/renderer/store/slices/configSlice.ts +111 -0
- package/src/renderer/store/slices/connectionSlice.ts +221 -0
- package/src/renderer/store/slices/contextSlice.ts +394 -0
- package/src/renderer/store/slices/conversationSlice.ts +510 -0
- package/src/renderer/store/slices/editorSlice.ts +1455 -0
- package/src/renderer/store/slices/extensionsSlice.ts +1415 -0
- package/src/renderer/store/slices/notificationSlice.ts +277 -0
- package/src/renderer/store/slices/paneSlice.ts +357 -0
- package/src/renderer/store/slices/projectSlice.ts +70 -0
- package/src/renderer/store/slices/repositorySlice.ts +165 -0
- package/src/renderer/store/slices/scheduleSlice.ts +246 -0
- package/src/renderer/store/slices/sessionDetailSlice.ts +755 -0
- package/src/renderer/store/slices/sessionSlice.ts +539 -0
- package/src/renderer/store/slices/subagentSlice.ts +145 -0
- package/src/renderer/store/slices/tabSlice.ts +842 -0
- package/src/renderer/store/slices/tabUISlice.ts +319 -0
- package/src/renderer/store/slices/teamSlice.ts +5080 -0
- package/src/renderer/store/slices/uiSlice.ts +45 -0
- package/src/renderer/store/types.ts +103 -0
- package/src/renderer/store/utils/paneHelpers.ts +134 -0
- package/src/renderer/store/utils/pathResolution.ts +121 -0
- package/src/renderer/store/utils/stateResetHelpers.ts +72 -0
- package/src/renderer/types/api.ts +8 -0
- package/src/renderer/types/claudeMd.ts +74 -0
- package/src/renderer/types/contextInjection.ts +309 -0
- package/src/renderer/types/data.ts +144 -0
- package/src/renderer/types/groups.ts +406 -0
- package/src/renderer/types/inlineChip.ts +110 -0
- package/src/renderer/types/mention.ts +38 -0
- package/src/renderer/types/notifications.ts +18 -0
- package/src/renderer/types/panes.ts +35 -0
- package/src/renderer/types/sessionReport.ts +386 -0
- package/src/renderer/types/tabs.ts +249 -0
- package/src/renderer/types/teamMessagesPanelMode.ts +1 -0
- package/src/renderer/utils/__tests__/teamEffortOptions.test.ts +217 -0
- package/src/renderer/utils/__tests__/teamModelAvailability.codexCatalog.test.ts +383 -0
- package/src/renderer/utils/agentMessageFormatting.ts +139 -0
- package/src/renderer/utils/aiGroupEnhancer.ts +78 -0
- package/src/renderer/utils/aiGroupHelpers.ts +208 -0
- package/src/renderer/utils/attachmentUtils.ts +60 -0
- package/src/renderer/utils/bootstrapPromptSanitizer.ts +225 -0
- package/src/renderer/utils/bugReportUtils.ts +157 -0
- package/src/renderer/utils/buildSelectionAction.ts +116 -0
- package/src/renderer/utils/chipUtils.ts +372 -0
- package/src/renderer/utils/claudeCodeOnlyProviders.ts +126 -0
- package/src/renderer/utils/claudeMdTracker.ts +644 -0
- package/src/renderer/utils/codemirrorLanguages.ts +141 -0
- package/src/renderer/utils/codemirrorSelectionInfo.ts +41 -0
- package/src/renderer/utils/codemirrorTheme.ts +138 -0
- package/src/renderer/utils/contextMath.ts +55 -0
- package/src/renderer/utils/contextTracker.ts +1100 -0
- package/src/renderer/utils/crossTeamPendingReplies.ts +92 -0
- package/src/renderer/utils/dateGrouping.ts +91 -0
- package/src/renderer/utils/diffViewedStorage.ts +120 -0
- package/src/renderer/utils/displayItemBuilder.ts +587 -0
- package/src/renderer/utils/displaySummary.ts +74 -0
- package/src/renderer/utils/editorBridge.ts +90 -0
- package/src/renderer/utils/fileTreeBuilder.ts +110 -0
- package/src/renderer/utils/formatAgentRole.ts +24 -0
- package/src/renderer/utils/formatters.ts +61 -0
- package/src/renderer/utils/groupTransformer.ts +744 -0
- package/src/renderer/utils/idleNotificationSemantics.ts +76 -0
- package/src/renderer/utils/keyboardUtils.ts +92 -0
- package/src/renderer/utils/lastOutputDetector.ts +150 -0
- package/src/renderer/utils/markdownPlugins.ts +60 -0
- package/src/renderer/utils/memberAvatarCatalog.ts +38 -0
- package/src/renderer/utils/memberHelpers.ts +858 -0
- package/src/renderer/utils/memberLaunchDiagnostics.ts +216 -0
- package/src/renderer/utils/memberRuntimeSummary.ts +122 -0
- package/src/renderer/utils/memberSpawnStatusPolling.ts +29 -0
- package/src/renderer/utils/mentionLinkify.ts +90 -0
- package/src/renderer/utils/mentionSuggestions.ts +34 -0
- package/src/renderer/utils/mergeTeamMessages.ts +27 -0
- package/src/renderer/utils/messageRenderEquality.ts +158 -0
- package/src/renderer/utils/modelExtractor.ts +90 -0
- package/src/renderer/utils/multimodelProviderVisibility.ts +32 -0
- package/src/renderer/utils/openCodeModelRecommendations.ts +1326 -0
- package/src/renderer/utils/openCodeRuntimeDeliveryDiagnostics.ts +79 -0
- package/src/renderer/utils/pathDisplay.ts +149 -0
- package/src/renderer/utils/pathNormalize.ts +61 -0
- package/src/renderer/utils/pathUtils.ts +47 -0
- package/src/renderer/utils/platformKeys.ts +24 -0
- package/src/renderer/utils/previewRegistry.ts +45 -0
- package/src/renderer/utils/projectColor.ts +54 -0
- package/src/renderer/utils/projectLookup.ts +64 -0
- package/src/renderer/utils/providerBackendIdentity.ts +43 -0
- package/src/renderer/utils/providerSlashCommands.ts +122 -0
- package/src/renderer/utils/quickOpenCache.ts +40 -0
- package/src/renderer/utils/refreshCliStatus.ts +17 -0
- package/src/renderer/utils/reportAssessments.ts +555 -0
- package/src/renderer/utils/reviewDecisionScope.ts +81 -0
- package/src/renderer/utils/reviewKey.ts +132 -0
- package/src/renderer/utils/runtimeDisplayName.ts +26 -0
- package/src/renderer/utils/scheduleFormatters.ts +45 -0
- package/src/renderer/utils/sessionAnalyzer.ts +1346 -0
- package/src/renderer/utils/sessionExporter.ts +427 -0
- package/src/renderer/utils/sessionTitleParser.ts +69 -0
- package/src/renderer/utils/skillCommandSuggestions.ts +77 -0
- package/src/renderer/utils/slashCommandExtractor.ts +154 -0
- package/src/renderer/utils/streamJsonParser.ts +393 -0
- package/src/renderer/utils/stringUtils.ts +50 -0
- package/src/renderer/utils/syntaxHighlighter.ts +158 -0
- package/src/renderer/utils/tabLabelDisambiguation.ts +99 -0
- package/src/renderer/utils/taskChangePresence.ts +19 -0
- package/src/renderer/utils/taskChangeRequest.ts +122 -0
- package/src/renderer/utils/taskCommentPendingReply.ts +74 -0
- package/src/renderer/utils/taskGrouping.ts +151 -0
- package/src/renderer/utils/taskReferenceUtils.ts +331 -0
- package/src/renderer/utils/teamEffortOptions.ts +150 -0
- package/src/renderer/utils/teamLaunchSummaryCopy.ts +17 -0
- package/src/renderer/utils/teamMessageExpandStorage.ts +39 -0
- package/src/renderer/utils/teamMessageFiltering.ts +95 -0
- package/src/renderer/utils/teamMessageKey.ts +14 -0
- package/src/renderer/utils/teamMessageReadStorage.ts +49 -0
- package/src/renderer/utils/teamModelAvailability.ts +465 -0
- package/src/renderer/utils/teamModelCatalog.ts +502 -0
- package/src/renderer/utils/teamModelContext.ts +34 -0
- package/src/renderer/utils/teamProvisioningPresentation.ts +772 -0
- package/src/renderer/utils/teamRuntimeSummary.ts +53 -0
- package/src/renderer/utils/toolLinkingEngine.ts +117 -0
- package/src/renderer/utils/toolRendering/index.ts +14 -0
- package/src/renderer/utils/toolRendering/toolContentChecks.ts +58 -0
- package/src/renderer/utils/toolRendering/toolSummaryHelpers.ts +276 -0
- package/src/renderer/utils/toolRendering/toolTokens.ts +57 -0
- package/src/renderer/utils/unwrapIpc.ts +31 -0
- package/src/renderer/utils/urlMatchUtils.ts +45 -0
- package/src/renderer/vite-env.d.ts +21 -0
- package/src/shared/constants/agentBlocks.ts +129 -0
- package/src/shared/constants/attachments.ts +175 -0
- package/src/shared/constants/cache.ts +12 -0
- package/src/shared/constants/cli.ts +15 -0
- package/src/shared/constants/crossTeam.ts +126 -0
- package/src/shared/constants/index.ts +15 -0
- package/src/shared/constants/kanban.ts +9 -0
- package/src/shared/constants/memberColors.ts +140 -0
- package/src/shared/constants/opencodeTaskLogAttribution.ts +1 -0
- package/src/shared/constants/teamLimits.ts +2 -0
- package/src/shared/constants/trafficLights.ts +60 -0
- package/src/shared/constants/triggerColors.ts +126 -0
- package/src/shared/constants/window.ts +12 -0
- package/src/shared/types/api.ts +1062 -0
- package/src/shared/types/ccConnect.ts +399 -0
- package/src/shared/types/cliInstaller.ts +335 -0
- package/src/shared/types/editor.ts +279 -0
- package/src/shared/types/extensions/api.ts +90 -0
- package/src/shared/types/extensions/apikey.ts +40 -0
- package/src/shared/types/extensions/common.ts +16 -0
- package/src/shared/types/extensions/index.ts +67 -0
- package/src/shared/types/extensions/mcp.ts +132 -0
- package/src/shared/types/extensions/plugin.ts +85 -0
- package/src/shared/types/extensions/skill.ts +173 -0
- package/src/shared/types/index.ts +48 -0
- package/src/shared/types/ipc.ts +5 -0
- package/src/shared/types/notifications.ts +407 -0
- package/src/shared/types/providers.ts +116 -0
- package/src/shared/types/review.ts +319 -0
- package/src/shared/types/schedule.ts +124 -0
- package/src/shared/types/team.ts +1726 -0
- package/src/shared/types/terminal.ts +49 -0
- package/src/shared/types/visualization.ts +60 -0
- package/src/shared/utils/__tests__/contextMetrics.test.ts +260 -0
- package/src/shared/utils/__tests__/ephemeralProjectPath.test.ts +42 -0
- package/src/shared/utils/__tests__/teamProvider.test.ts +29 -0
- package/src/shared/utils/agentLanguage.ts +122 -0
- package/src/shared/utils/anthropicLaunchModel.ts +96 -0
- package/src/shared/utils/anthropicModelDefaults.ts +3 -0
- package/src/shared/utils/apiErrorDetector.ts +13 -0
- package/src/shared/utils/boardTaskActivityLabels.ts +128 -0
- package/src/shared/utils/boardTaskActivityPresentation.ts +75 -0
- package/src/shared/utils/cliArgsParser.ts +129 -0
- package/src/shared/utils/contentSanitizer.ts +207 -0
- package/src/shared/utils/contextMetrics.ts +236 -0
- package/src/shared/utils/costFormatting.ts +45 -0
- package/src/shared/utils/diffContextHash.ts +22 -0
- package/src/shared/utils/effortLevels.ts +73 -0
- package/src/shared/utils/ephemeralProjectPath.ts +41 -0
- package/src/shared/utils/errorHandling.ts +26 -0
- package/src/shared/utils/extensionNormalizers.ts +336 -0
- package/src/shared/utils/idleNotificationSemantics.ts +86 -0
- package/src/shared/utils/inboxNoise.ts +158 -0
- package/src/shared/utils/leadDetection.ts +63 -0
- package/src/shared/utils/logger.ts +69 -0
- package/src/shared/utils/markdownTextSearch.ts +210 -0
- package/src/shared/utils/mcpScopes.ts +36 -0
- package/src/shared/utils/modelParser.ts +158 -0
- package/src/shared/utils/opencodeModelRef.ts +78 -0
- package/src/shared/utils/platformPath.ts +103 -0
- package/src/shared/utils/pricing.ts +129 -0
- package/src/shared/utils/providerBackend.ts +90 -0
- package/src/shared/utils/providerExtensionCapabilities.ts +92 -0
- package/src/shared/utils/providerModelSelection.ts +5 -0
- package/src/shared/utils/providerModelVisibility.ts +47 -0
- package/src/shared/utils/rateLimitDetector.ts +334 -0
- package/src/shared/utils/reviewState.ts +74 -0
- package/src/shared/utils/sentryConfig.ts +26 -0
- package/src/shared/utils/skillRoots.ts +93 -0
- package/src/shared/utils/slashCommands.ts +128 -0
- package/src/shared/utils/taskChangePresence.ts +35 -0
- package/src/shared/utils/taskChangeSince.ts +51 -0
- package/src/shared/utils/taskChangeState.ts +49 -0
- package/src/shared/utils/taskHistory.ts +82 -0
- package/src/shared/utils/taskIdentity.ts +32 -0
- package/src/shared/utils/teamGraphDefaultLayout.ts +97 -0
- package/src/shared/utils/teamMemberColors.ts +107 -0
- package/src/shared/utils/teamMemberName.ts +77 -0
- package/src/shared/utils/teamProvider.ts +73 -0
- package/src/shared/utils/teamStableOwnerId.ts +12 -0
- package/src/shared/utils/teammateMessageParser.ts +52 -0
- package/src/shared/utils/tokenFormatting.ts +91 -0
- package/src/shared/utils/toolSummary.ts +279 -0
- package/src/shared/utils/version.ts +29 -0
- package/src/types/agent-teams-controller.d.ts +163 -0
- package/src/types/node-pty.d.ts +22 -0
- package/src/types/pidusage.d.ts +23 -0
|
@@ -0,0 +1,1726 @@
|
|
|
1
|
+
import type { ExecutionTarget } from './api';
|
|
2
|
+
import type { EnhancedChunk } from '@main/types';
|
|
3
|
+
|
|
4
|
+
export interface TeamMember {
|
|
5
|
+
name: string;
|
|
6
|
+
agentId?: string;
|
|
7
|
+
agentType?: string;
|
|
8
|
+
role?: string;
|
|
9
|
+
/** Per-agent workflow/instructions injected into spawn prompt. */
|
|
10
|
+
workflow?: string;
|
|
11
|
+
/** Opt-in runtime isolation for persistent teammates. Omitted means shared workspace. */
|
|
12
|
+
isolation?: 'worktree';
|
|
13
|
+
providerId?: TeamProviderId;
|
|
14
|
+
providerBackendId?: TeamProviderBackendId;
|
|
15
|
+
model?: string;
|
|
16
|
+
effort?: EffortLevel;
|
|
17
|
+
fastMode?: TeamFastMode;
|
|
18
|
+
color?: string;
|
|
19
|
+
joinedAt?: number;
|
|
20
|
+
cwd?: string;
|
|
21
|
+
/** Optional machine/cwd override for distributed execution. */
|
|
22
|
+
executionTarget?: ExecutionTarget;
|
|
23
|
+
removedAt?: number;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export interface TeamConfig {
|
|
27
|
+
name: string;
|
|
28
|
+
description?: string;
|
|
29
|
+
color?: string;
|
|
30
|
+
language?: string;
|
|
31
|
+
agentType?: string;
|
|
32
|
+
permissionMode?: string;
|
|
33
|
+
showContextIndicator?: boolean;
|
|
34
|
+
replyFooter?: boolean;
|
|
35
|
+
injectSender?: boolean;
|
|
36
|
+
managedSources?: string;
|
|
37
|
+
disabledCommands?: string[];
|
|
38
|
+
platformAllowFrom?: Record<string, string>;
|
|
39
|
+
members?: TeamMember[];
|
|
40
|
+
projectPath?: string;
|
|
41
|
+
projectPathHistory?: string[];
|
|
42
|
+
/** Default machine/cwd used when launching this team. */
|
|
43
|
+
executionTarget?: ExecutionTarget;
|
|
44
|
+
leadSessionId?: string;
|
|
45
|
+
sessionHistory?: string[];
|
|
46
|
+
/** ISO timestamp — soft delete marker. If set, the team is considered deleted. */
|
|
47
|
+
deletedAt?: string;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export interface TeamUpdateConfigRequest {
|
|
51
|
+
name?: string;
|
|
52
|
+
description?: string;
|
|
53
|
+
color?: string;
|
|
54
|
+
language?: string;
|
|
55
|
+
agentType?: string;
|
|
56
|
+
workDir?: string;
|
|
57
|
+
permissionMode?: string;
|
|
58
|
+
showContextIndicator?: boolean;
|
|
59
|
+
replyFooter?: boolean;
|
|
60
|
+
injectSender?: boolean;
|
|
61
|
+
managedSources?: string;
|
|
62
|
+
disabledCommands?: string[];
|
|
63
|
+
platformAllowFrom?: Record<string, string>;
|
|
64
|
+
executionTarget?: ExecutionTarget;
|
|
65
|
+
leadProviderId?: TeamProviderId;
|
|
66
|
+
leadModel?: string;
|
|
67
|
+
leadEffort?: EffortLevel;
|
|
68
|
+
leadWorkflow?: string;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
export interface TeamSummaryMember {
|
|
72
|
+
name: string;
|
|
73
|
+
agentId?: string;
|
|
74
|
+
role?: string;
|
|
75
|
+
color?: string;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
export interface TeamSummary {
|
|
79
|
+
teamName: string;
|
|
80
|
+
displayName: string;
|
|
81
|
+
description: string;
|
|
82
|
+
color?: string;
|
|
83
|
+
memberCount: number;
|
|
84
|
+
members?: TeamSummaryMember[];
|
|
85
|
+
taskCount: number;
|
|
86
|
+
lastActivity: string | null;
|
|
87
|
+
projectPath?: string;
|
|
88
|
+
workDir?: string;
|
|
89
|
+
projectPathHistory?: string[];
|
|
90
|
+
leadSessionId?: string;
|
|
91
|
+
sessionHistory?: string[];
|
|
92
|
+
/** Propagated from config.deletedAt — set when the team has been soft-deleted. */
|
|
93
|
+
deletedAt?: string;
|
|
94
|
+
/** True when team.meta.json exists but config.json doesn't — provisioning failed before TeamCreate. */
|
|
95
|
+
pendingCreate?: boolean;
|
|
96
|
+
/** cc-connect config has removed the project, but service restart is still required. */
|
|
97
|
+
pendingDelete?: boolean;
|
|
98
|
+
restartRequired?: boolean;
|
|
99
|
+
/** True when the last launch partially succeeded (e.g. lead started, but not all teammates joined). */
|
|
100
|
+
partialLaunchFailure?: boolean;
|
|
101
|
+
/** Planned teammate count for the last persisted partial launch marker. */
|
|
102
|
+
expectedMemberCount?: number;
|
|
103
|
+
/** Confirmed teammate count from runtime artifacts/config for the last partial launch marker. */
|
|
104
|
+
confirmedMemberCount?: number;
|
|
105
|
+
/** Missing teammate names from the last partial launch marker. */
|
|
106
|
+
missingMembers?: string[];
|
|
107
|
+
/** Teammates intentionally skipped for the last launch. */
|
|
108
|
+
skippedMembers?: string[];
|
|
109
|
+
/** Durable aggregate launch state derived from persisted launch-state evidence. */
|
|
110
|
+
teamLaunchState?: TeamLaunchAggregateState;
|
|
111
|
+
/** ISO timestamp of the last durable launch-state evaluation. */
|
|
112
|
+
launchUpdatedAt?: string;
|
|
113
|
+
/** Durable aggregate teammate counts from launch-state evidence. */
|
|
114
|
+
confirmedCount?: number;
|
|
115
|
+
pendingCount?: number;
|
|
116
|
+
failedCount?: number;
|
|
117
|
+
skippedCount?: number;
|
|
118
|
+
runtimeAlivePendingCount?: number;
|
|
119
|
+
shellOnlyPendingCount?: number;
|
|
120
|
+
runtimeProcessPendingCount?: number;
|
|
121
|
+
runtimeCandidatePendingCount?: number;
|
|
122
|
+
noRuntimePendingCount?: number;
|
|
123
|
+
permissionPendingCount?: number;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
export type TeamTaskStatus = 'pending' | 'in_progress' | 'completed' | 'deleted';
|
|
127
|
+
export type TeamReviewState = 'none' | 'review' | 'needsFix' | 'approved';
|
|
128
|
+
|
|
129
|
+
export interface TaskWorkInterval {
|
|
130
|
+
/** ISO timestamp when task entered in_progress */
|
|
131
|
+
startedAt: string;
|
|
132
|
+
/** ISO timestamp when task left in_progress (optional for active interval) */
|
|
133
|
+
completedAt?: string;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
// ---------------------------------------------------------------------------
|
|
137
|
+
// Task History Events — unified workflow event log
|
|
138
|
+
// ---------------------------------------------------------------------------
|
|
139
|
+
|
|
140
|
+
interface TaskHistoryEventBase {
|
|
141
|
+
id: string;
|
|
142
|
+
timestamp: string;
|
|
143
|
+
actor?: string;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
export interface TaskCreatedEvent extends TaskHistoryEventBase {
|
|
147
|
+
type: 'task_created';
|
|
148
|
+
status: TeamTaskStatus;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
export interface TaskStatusChangedEvent extends TaskHistoryEventBase {
|
|
152
|
+
type: 'status_changed';
|
|
153
|
+
from: TeamTaskStatus;
|
|
154
|
+
to: TeamTaskStatus;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
export interface TaskReviewRequestedEvent extends TaskHistoryEventBase {
|
|
158
|
+
type: 'review_requested';
|
|
159
|
+
from: TeamReviewState;
|
|
160
|
+
to: 'review';
|
|
161
|
+
reviewer?: string;
|
|
162
|
+
note?: string;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
export interface TaskReviewChangesRequestedEvent extends TaskHistoryEventBase {
|
|
166
|
+
type: 'review_changes_requested';
|
|
167
|
+
from: TeamReviewState;
|
|
168
|
+
to: 'needsFix';
|
|
169
|
+
note?: string;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
export interface TaskReviewApprovedEvent extends TaskHistoryEventBase {
|
|
173
|
+
type: 'review_approved';
|
|
174
|
+
from: TeamReviewState;
|
|
175
|
+
to: 'approved';
|
|
176
|
+
note?: string;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
export interface TaskReviewStartedEvent extends TaskHistoryEventBase {
|
|
180
|
+
type: 'review_started';
|
|
181
|
+
from: TeamReviewState;
|
|
182
|
+
to: 'review';
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
export type TaskHistoryEvent =
|
|
186
|
+
| TaskCreatedEvent
|
|
187
|
+
| TaskStatusChangedEvent
|
|
188
|
+
| TaskReviewRequestedEvent
|
|
189
|
+
| TaskReviewChangesRequestedEvent
|
|
190
|
+
| TaskReviewApprovedEvent
|
|
191
|
+
| TaskReviewStartedEvent;
|
|
192
|
+
|
|
193
|
+
export type TaskCommentType = 'regular' | 'review_request' | 'review_approved';
|
|
194
|
+
|
|
195
|
+
export interface TaskRef {
|
|
196
|
+
taskId: string;
|
|
197
|
+
displayId: string;
|
|
198
|
+
teamName: string;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
export type BoardTaskRefKind = 'canonical' | 'display' | 'unknown';
|
|
202
|
+
export type BoardTaskResolution = 'resolved' | 'deleted' | 'unresolved' | 'ambiguous';
|
|
203
|
+
export type BoardTaskActivityLinkKind = 'execution' | 'lifecycle' | 'board_action';
|
|
204
|
+
export type BoardTaskActivityTargetRole = 'subject' | 'related';
|
|
205
|
+
export type BoardTaskActivityPhase = 'work' | 'review';
|
|
206
|
+
export type BoardTaskActorRelation = 'same_task' | 'other_active_task' | 'idle' | 'ambiguous';
|
|
207
|
+
export type BoardTaskActivityStatus = 'pending' | 'in_progress' | 'completed' | 'deleted';
|
|
208
|
+
export type BoardTaskActivityRelationship = 'blocked-by' | 'blocks' | 'related';
|
|
209
|
+
export type BoardTaskActivityCategory =
|
|
210
|
+
| 'status'
|
|
211
|
+
| 'review'
|
|
212
|
+
| 'comment'
|
|
213
|
+
| 'assignment'
|
|
214
|
+
| 'read'
|
|
215
|
+
| 'attachment'
|
|
216
|
+
| 'relationship'
|
|
217
|
+
| 'clarification'
|
|
218
|
+
| 'other';
|
|
219
|
+
export type BoardTaskRelationshipPerspective = 'outgoing' | 'incoming' | 'symmetric';
|
|
220
|
+
|
|
221
|
+
export interface BoardTaskLocator {
|
|
222
|
+
ref: string;
|
|
223
|
+
refKind: BoardTaskRefKind;
|
|
224
|
+
canonicalId?: string;
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
export interface BoardTaskActivityTaskRef {
|
|
228
|
+
locator: BoardTaskLocator;
|
|
229
|
+
resolution: BoardTaskResolution;
|
|
230
|
+
taskRef?: TaskRef;
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
export interface BoardTaskActivityActor {
|
|
234
|
+
memberName?: string;
|
|
235
|
+
role: 'member' | 'lead' | 'unknown';
|
|
236
|
+
sessionId: string;
|
|
237
|
+
agentId?: string;
|
|
238
|
+
isSidechain: boolean;
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
export interface BoardTaskActivityAction {
|
|
242
|
+
canonicalToolName?: string;
|
|
243
|
+
toolUseId?: string;
|
|
244
|
+
category: BoardTaskActivityCategory;
|
|
245
|
+
peerTask?: BoardTaskActivityTaskRef;
|
|
246
|
+
relationshipPerspective?: BoardTaskRelationshipPerspective;
|
|
247
|
+
details?: {
|
|
248
|
+
status?: BoardTaskActivityStatus;
|
|
249
|
+
owner?: string | null;
|
|
250
|
+
clarification?: 'lead' | 'user' | null;
|
|
251
|
+
reviewer?: string;
|
|
252
|
+
relationship?: BoardTaskActivityRelationship;
|
|
253
|
+
commentId?: string;
|
|
254
|
+
attachmentId?: string;
|
|
255
|
+
filename?: string;
|
|
256
|
+
};
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
export interface BoardTaskActivityActorContext {
|
|
260
|
+
relation: BoardTaskActorRelation;
|
|
261
|
+
activeTask?: BoardTaskActivityTaskRef;
|
|
262
|
+
activePhase?: BoardTaskActivityPhase;
|
|
263
|
+
activeExecutionSeq?: number;
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
export interface BoardTaskActivityEntry {
|
|
267
|
+
id: string;
|
|
268
|
+
timestamp: string;
|
|
269
|
+
task: BoardTaskActivityTaskRef;
|
|
270
|
+
linkKind: BoardTaskActivityLinkKind;
|
|
271
|
+
targetRole: BoardTaskActivityTargetRole;
|
|
272
|
+
actor: BoardTaskActivityActor;
|
|
273
|
+
actorContext: BoardTaskActivityActorContext;
|
|
274
|
+
action?: BoardTaskActivityAction;
|
|
275
|
+
source: {
|
|
276
|
+
messageUuid: string;
|
|
277
|
+
filePath: string;
|
|
278
|
+
toolUseId?: string;
|
|
279
|
+
sourceOrder: number;
|
|
280
|
+
};
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
export interface BoardTaskActivityDetailMetadataRow {
|
|
284
|
+
label: string;
|
|
285
|
+
value: string;
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
export interface BoardTaskActivityDetail {
|
|
289
|
+
entryId: string;
|
|
290
|
+
summaryLabel: string;
|
|
291
|
+
actorLabel: string;
|
|
292
|
+
timestamp: string;
|
|
293
|
+
contextLines: string[];
|
|
294
|
+
metadataRows: BoardTaskActivityDetailMetadataRow[];
|
|
295
|
+
logDetail?: BoardTaskExactLogDetail;
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
export type BoardTaskActivityDetailResult =
|
|
299
|
+
| {
|
|
300
|
+
status: 'ok';
|
|
301
|
+
detail: BoardTaskActivityDetail;
|
|
302
|
+
}
|
|
303
|
+
| {
|
|
304
|
+
status: 'missing';
|
|
305
|
+
};
|
|
306
|
+
|
|
307
|
+
export interface BoardTaskExactLogActor {
|
|
308
|
+
memberName?: string;
|
|
309
|
+
role: 'member' | 'lead' | 'unknown';
|
|
310
|
+
sessionId: string;
|
|
311
|
+
agentId?: string;
|
|
312
|
+
isSidechain: boolean;
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
export interface BoardTaskExactLogSource {
|
|
316
|
+
filePath: string;
|
|
317
|
+
messageUuid: string;
|
|
318
|
+
toolUseId?: string;
|
|
319
|
+
sourceOrder: number;
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
interface BoardTaskExactLogSummaryBase {
|
|
323
|
+
id: string;
|
|
324
|
+
timestamp: string;
|
|
325
|
+
actor: BoardTaskExactLogActor;
|
|
326
|
+
source: BoardTaskExactLogSource;
|
|
327
|
+
anchorKind: 'tool' | 'message';
|
|
328
|
+
actionLabel: string;
|
|
329
|
+
actionCategory?: BoardTaskActivityCategory;
|
|
330
|
+
canonicalToolName?: string;
|
|
331
|
+
linkKinds: BoardTaskActivityLinkKind[];
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
export type BoardTaskExactLogSummary =
|
|
335
|
+
| (BoardTaskExactLogSummaryBase & {
|
|
336
|
+
canLoadDetail: true;
|
|
337
|
+
sourceGeneration: string;
|
|
338
|
+
})
|
|
339
|
+
| (BoardTaskExactLogSummaryBase & {
|
|
340
|
+
canLoadDetail: false;
|
|
341
|
+
});
|
|
342
|
+
|
|
343
|
+
export interface BoardTaskExactLogDetail {
|
|
344
|
+
id: string;
|
|
345
|
+
chunks: EnhancedChunk[];
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
export interface BoardTaskExactLogSummariesResponse {
|
|
349
|
+
items: BoardTaskExactLogSummary[];
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
export type BoardTaskExactLogDetailResult =
|
|
353
|
+
| { status: 'ok'; detail: BoardTaskExactLogDetail }
|
|
354
|
+
| { status: 'stale' }
|
|
355
|
+
| { status: 'missing' };
|
|
356
|
+
|
|
357
|
+
export interface BoardTaskLogActor {
|
|
358
|
+
memberName?: string;
|
|
359
|
+
role: 'member' | 'lead' | 'unknown';
|
|
360
|
+
sessionId: string;
|
|
361
|
+
agentId?: string;
|
|
362
|
+
isSidechain: boolean;
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
export interface BoardTaskLogParticipant {
|
|
366
|
+
key: string;
|
|
367
|
+
label: string;
|
|
368
|
+
role: 'member' | 'lead' | 'unknown';
|
|
369
|
+
isLead: boolean;
|
|
370
|
+
isSidechain: boolean;
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
export interface BoardTaskLogSegment {
|
|
374
|
+
id: string;
|
|
375
|
+
participantKey: string;
|
|
376
|
+
actor: BoardTaskLogActor;
|
|
377
|
+
startTimestamp: string;
|
|
378
|
+
endTimestamp: string;
|
|
379
|
+
chunks: EnhancedChunk[];
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
export interface BoardTaskLogStreamRuntimeProjection {
|
|
383
|
+
provider: 'opencode';
|
|
384
|
+
mode: 'attribution' | 'heuristic';
|
|
385
|
+
attributionRecordCount: number;
|
|
386
|
+
projectedMessageCount: number;
|
|
387
|
+
fallbackReason?:
|
|
388
|
+
| 'no_attribution_records'
|
|
389
|
+
| 'attribution_no_projected_messages'
|
|
390
|
+
| 'task_tool_markers';
|
|
391
|
+
markerMatchCount?: number;
|
|
392
|
+
markerSpanCount?: number;
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
export interface BoardTaskLogStreamResponse {
|
|
396
|
+
participants: BoardTaskLogParticipant[];
|
|
397
|
+
defaultFilter: 'all' | string;
|
|
398
|
+
segments: BoardTaskLogSegment[];
|
|
399
|
+
source?: 'transcript' | 'opencode_runtime_fallback' | 'opencode_runtime_attribution';
|
|
400
|
+
runtimeProjection?: BoardTaskLogStreamRuntimeProjection;
|
|
401
|
+
}
|
|
402
|
+
|
|
403
|
+
export interface BoardTaskLogStreamSummary {
|
|
404
|
+
segmentCount: number;
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
export interface TaskComment {
|
|
408
|
+
id: string;
|
|
409
|
+
author: string;
|
|
410
|
+
text: string;
|
|
411
|
+
createdAt: string;
|
|
412
|
+
type: TaskCommentType;
|
|
413
|
+
taskRefs?: TaskRef[];
|
|
414
|
+
/** Attachments on this comment. Metadata only — files stored on disk. */
|
|
415
|
+
attachments?: TaskAttachmentMeta[];
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
/**
|
|
419
|
+
* Snapshot of a user message captured at task-creation time.
|
|
420
|
+
* Stored as provenance — the original message identity is `sourceMessageId`.
|
|
421
|
+
*/
|
|
422
|
+
export interface SourceMessageSnapshot {
|
|
423
|
+
/** Sanitized message text (agent-only blocks stripped). */
|
|
424
|
+
text: string;
|
|
425
|
+
/** Who sent the message. */
|
|
426
|
+
from: string;
|
|
427
|
+
/** ISO timestamp of the original message. */
|
|
428
|
+
timestamp: string;
|
|
429
|
+
/** Message source type (e.g. "user_sent", "inbox"). */
|
|
430
|
+
source?: string;
|
|
431
|
+
/** Attachment metadata references (IDs only, no blobs). filePath present when file is stored on disk. */
|
|
432
|
+
attachments?: {
|
|
433
|
+
id: string;
|
|
434
|
+
filename: string;
|
|
435
|
+
mimeType: string;
|
|
436
|
+
size: number;
|
|
437
|
+
filePath?: string;
|
|
438
|
+
}[];
|
|
439
|
+
}
|
|
440
|
+
|
|
441
|
+
export type InboxMessageKind =
|
|
442
|
+
| 'default'
|
|
443
|
+
| 'slash_command'
|
|
444
|
+
| 'slash_command_result'
|
|
445
|
+
| 'task_comment_notification';
|
|
446
|
+
|
|
447
|
+
export interface SlashCommandMeta {
|
|
448
|
+
name: string;
|
|
449
|
+
command: `/${string}`;
|
|
450
|
+
args?: string;
|
|
451
|
+
knownDescription?: string;
|
|
452
|
+
}
|
|
453
|
+
|
|
454
|
+
export interface CommandOutputMeta {
|
|
455
|
+
stream: 'stdout' | 'stderr';
|
|
456
|
+
commandLabel: string;
|
|
457
|
+
}
|
|
458
|
+
|
|
459
|
+
// Fields are validated in TeamTaskReader.getTasks() using `satisfies Record<keyof TeamTask, unknown>`.
|
|
460
|
+
// Adding a field here without mapping it there will cause a compile error.
|
|
461
|
+
export interface TeamTask {
|
|
462
|
+
id: string;
|
|
463
|
+
/** Human-friendly short task label shown in UI. Canonical identity remains `id`. */
|
|
464
|
+
displayId?: string;
|
|
465
|
+
subject: string;
|
|
466
|
+
description?: string;
|
|
467
|
+
descriptionTaskRefs?: TaskRef[];
|
|
468
|
+
activeForm?: string;
|
|
469
|
+
prompt?: string;
|
|
470
|
+
promptTaskRefs?: TaskRef[];
|
|
471
|
+
owner?: string;
|
|
472
|
+
createdBy?: string;
|
|
473
|
+
status: TeamTaskStatus;
|
|
474
|
+
/**
|
|
475
|
+
* One task can be worked on in multiple disjoint periods (e.g. review sends it back to in_progress).
|
|
476
|
+
* We persist intervals for reliable log attribution without relying on heuristics.
|
|
477
|
+
*/
|
|
478
|
+
workIntervals?: TaskWorkInterval[];
|
|
479
|
+
/**
|
|
480
|
+
* Unified workflow event log.
|
|
481
|
+
* Append-only — records task creation, status changes, and review transitions.
|
|
482
|
+
*/
|
|
483
|
+
historyEvents?: TaskHistoryEvent[];
|
|
484
|
+
blocks?: string[];
|
|
485
|
+
blockedBy?: string[];
|
|
486
|
+
/**
|
|
487
|
+
* Explicit task links (non-blocking). Used for navigation between related tasks,
|
|
488
|
+
* e.g. "frontend task" ↔ "backend task" or a rare meta reminder ↔ the main work task.
|
|
489
|
+
*/
|
|
490
|
+
related?: string[];
|
|
491
|
+
createdAt?: string;
|
|
492
|
+
/** File modification time (mtime). Used for sorting by last activity. */
|
|
493
|
+
updatedAt?: string;
|
|
494
|
+
projectPath?: string;
|
|
495
|
+
comments?: TaskComment[];
|
|
496
|
+
/** Signals that the agent is blocked and needs clarification. "lead" = ask team lead, "user" = escalated to human. */
|
|
497
|
+
needsClarification?: 'lead' | 'user';
|
|
498
|
+
/** ISO timestamp — when the task was soft-deleted. Only set for status === 'deleted'. */
|
|
499
|
+
deletedAt?: string;
|
|
500
|
+
/** Attachments associated with this task. Metadata only — actual files stored on disk. */
|
|
501
|
+
attachments?: TaskAttachmentMeta[];
|
|
502
|
+
/** Derived review state — computed from historyEvents, not persisted as authority. */
|
|
503
|
+
reviewState?: TeamReviewState;
|
|
504
|
+
/** Exact messageId of the user message this task was created from. */
|
|
505
|
+
sourceMessageId?: string;
|
|
506
|
+
/** Snapshot of the source message at creation time (sanitized, no blobs). */
|
|
507
|
+
sourceMessage?: SourceMessageSnapshot;
|
|
508
|
+
}
|
|
509
|
+
|
|
510
|
+
/** Task enriched for UI/DTO use (overlay from kanban-state.json). */
|
|
511
|
+
export type TaskChangePresenceState = 'has_changes' | 'needs_attention' | 'no_changes' | 'unknown';
|
|
512
|
+
|
|
513
|
+
export interface TeamTaskWithKanban extends TeamTask {
|
|
514
|
+
/** Set when task is in team kanban (review or approved column). */
|
|
515
|
+
kanbanColumn?: 'review' | 'approved';
|
|
516
|
+
/** Reviewer assigned in kanban state, when applicable. */
|
|
517
|
+
reviewer?: string | null;
|
|
518
|
+
/** Cheap persisted change-presence state for kanban rendering. */
|
|
519
|
+
changePresence?: TaskChangePresenceState;
|
|
520
|
+
}
|
|
521
|
+
|
|
522
|
+
/** Metadata for an attachment associated with a task or comment. */
|
|
523
|
+
export interface TaskAttachmentMeta {
|
|
524
|
+
/** Unique attachment ID (uuid). */
|
|
525
|
+
id: string;
|
|
526
|
+
/** Original filename (e.g. "screenshot.png"). */
|
|
527
|
+
filename: string;
|
|
528
|
+
/** MIME type. */
|
|
529
|
+
mimeType: AttachmentMediaType;
|
|
530
|
+
/** File size in bytes. */
|
|
531
|
+
size: number;
|
|
532
|
+
/** ISO timestamp when the attachment was added. */
|
|
533
|
+
addedAt: string;
|
|
534
|
+
/** Absolute path to the file on disk. Null/absent for metadata-only references. */
|
|
535
|
+
filePath?: string | null;
|
|
536
|
+
}
|
|
537
|
+
|
|
538
|
+
/** Payload for uploading an attachment with base64 data (renderer → main). */
|
|
539
|
+
export interface CommentAttachmentPayload {
|
|
540
|
+
id: string;
|
|
541
|
+
filename: string;
|
|
542
|
+
mimeType: AttachmentMediaType;
|
|
543
|
+
base64Data: string;
|
|
544
|
+
}
|
|
545
|
+
|
|
546
|
+
/**
|
|
547
|
+
* Broad MIME type string (e.g. "image/png", "application/pdf").
|
|
548
|
+
*
|
|
549
|
+
* Note: the UI may still choose to preview only certain types (e.g. images),
|
|
550
|
+
* but tasks/comments can store arbitrary attachments for agent workflows.
|
|
551
|
+
*/
|
|
552
|
+
// eslint-disable-next-line sonarjs/redundant-type-aliases -- semantic alias for documentation/readability
|
|
553
|
+
export type AttachmentMediaType = string;
|
|
554
|
+
|
|
555
|
+
/** Supported image MIME types (used for preview/validation in UI). */
|
|
556
|
+
export type ImageMimeType = 'image/png' | 'image/jpeg' | 'image/gif' | 'image/webp';
|
|
557
|
+
|
|
558
|
+
export interface AttachmentMeta {
|
|
559
|
+
id: string;
|
|
560
|
+
filename: string;
|
|
561
|
+
mimeType: AttachmentMediaType;
|
|
562
|
+
size: number;
|
|
563
|
+
/** Absolute path to the file on disk. Absent for metadata-only references. */
|
|
564
|
+
filePath?: string;
|
|
565
|
+
}
|
|
566
|
+
|
|
567
|
+
export interface AttachmentPayload extends AttachmentMeta {
|
|
568
|
+
data: string;
|
|
569
|
+
}
|
|
570
|
+
|
|
571
|
+
export interface AttachmentFileData {
|
|
572
|
+
id: string;
|
|
573
|
+
data: string;
|
|
574
|
+
mimeType: AttachmentMediaType;
|
|
575
|
+
}
|
|
576
|
+
|
|
577
|
+
/** Lightweight metadata for a single tool call (for UI display in tooltips). */
|
|
578
|
+
export interface ToolCallMeta {
|
|
579
|
+
/** Tool name, e.g. "Read", "Bash", "Grep" */
|
|
580
|
+
name: string;
|
|
581
|
+
/** Human-readable preview extracted from input args, e.g. "index.ts", "grep -r foo" */
|
|
582
|
+
preview?: string;
|
|
583
|
+
/** Optional runtime tool_use identifier when available. */
|
|
584
|
+
toolUseId?: string;
|
|
585
|
+
}
|
|
586
|
+
|
|
587
|
+
export type ToolActivitySource = 'runtime' | 'member_log' | 'inbox';
|
|
588
|
+
export type ToolActivityState = 'running' | 'complete' | 'error';
|
|
589
|
+
|
|
590
|
+
/** Live or recently finished tool activity for one team member. */
|
|
591
|
+
export interface ActiveToolCall {
|
|
592
|
+
memberName: string;
|
|
593
|
+
toolUseId: string;
|
|
594
|
+
toolName: string;
|
|
595
|
+
preview?: string;
|
|
596
|
+
startedAt: string;
|
|
597
|
+
state: ToolActivityState;
|
|
598
|
+
source: ToolActivitySource;
|
|
599
|
+
finishedAt?: string;
|
|
600
|
+
resultPreview?: string;
|
|
601
|
+
}
|
|
602
|
+
|
|
603
|
+
/** Renderer-facing event payload for tool lifecycle updates. */
|
|
604
|
+
export interface ToolActivityEventPayload {
|
|
605
|
+
action: 'start' | 'finish' | 'reset';
|
|
606
|
+
activity?: {
|
|
607
|
+
memberName: string;
|
|
608
|
+
toolUseId: string;
|
|
609
|
+
toolName: string;
|
|
610
|
+
preview?: string;
|
|
611
|
+
startedAt: string;
|
|
612
|
+
source: ToolActivitySource;
|
|
613
|
+
};
|
|
614
|
+
memberName?: string;
|
|
615
|
+
toolUseId?: string;
|
|
616
|
+
toolUseIds?: string[];
|
|
617
|
+
finishedAt?: string;
|
|
618
|
+
resultPreview?: string;
|
|
619
|
+
isError?: boolean;
|
|
620
|
+
}
|
|
621
|
+
|
|
622
|
+
export interface InboxMessage {
|
|
623
|
+
from: string;
|
|
624
|
+
to?: string;
|
|
625
|
+
text: string;
|
|
626
|
+
timestamp: string;
|
|
627
|
+
read: boolean;
|
|
628
|
+
taskRefs?: TaskRef[];
|
|
629
|
+
/** Durable delivery intent used by OpenCode inbox retry. */
|
|
630
|
+
actionMode?: AgentActionMode;
|
|
631
|
+
/** Authoritative task comment id attached by runtime-authored task notifications. */
|
|
632
|
+
commentId?: string;
|
|
633
|
+
summary?: string;
|
|
634
|
+
color?: string;
|
|
635
|
+
messageId?: string;
|
|
636
|
+
/** Original inbox messageId when this row is only a relay/delivery bridge copy. */
|
|
637
|
+
relayOfMessageId?: string;
|
|
638
|
+
source?:
|
|
639
|
+
| 'inbox'
|
|
640
|
+
| 'lead_session'
|
|
641
|
+
| 'lead_process'
|
|
642
|
+
| 'runtime_delivery'
|
|
643
|
+
| 'user_sent'
|
|
644
|
+
| 'system_notification'
|
|
645
|
+
| 'cross_team'
|
|
646
|
+
| 'cross_team_sent';
|
|
647
|
+
attachments?: AttachmentMeta[];
|
|
648
|
+
/** Lead session ID that produced this message (for session boundary detection). */
|
|
649
|
+
leadSessionId?: string;
|
|
650
|
+
/** Stable cross-team thread ID shared across request/reply turns. */
|
|
651
|
+
conversationId?: string;
|
|
652
|
+
/** Explicit parent conversation/message reference for replies. */
|
|
653
|
+
replyToConversationId?: string;
|
|
654
|
+
/** Tool usage summary from assistant message, e.g. "3 tools (2 Read, Bash)" */
|
|
655
|
+
toolSummary?: string;
|
|
656
|
+
/** Structured tool call details for tooltip display. */
|
|
657
|
+
toolCalls?: ToolCallMeta[];
|
|
658
|
+
/** Renderer-friendly semantic kind. Defaults to "default" when absent. */
|
|
659
|
+
messageKind?: InboxMessageKind;
|
|
660
|
+
/** Structured slash-command metadata for sent command rows. */
|
|
661
|
+
slashCommand?: SlashCommandMeta;
|
|
662
|
+
/** Structured command-output metadata for session-derived result rows. */
|
|
663
|
+
commandOutput?: CommandOutputMeta;
|
|
664
|
+
/** cc-connect session metadata used to distinguish multiple chats under one team. */
|
|
665
|
+
session?: {
|
|
666
|
+
id?: string;
|
|
667
|
+
key?: string;
|
|
668
|
+
platform?: string;
|
|
669
|
+
title?: string;
|
|
670
|
+
chatName?: string;
|
|
671
|
+
userName?: string;
|
|
672
|
+
};
|
|
673
|
+
}
|
|
674
|
+
|
|
675
|
+
/** Cursor-based paginated messages response. */
|
|
676
|
+
export interface MessagesPage {
|
|
677
|
+
messages: InboxMessage[];
|
|
678
|
+
/** Opaque cursor string for fetching older messages. Null when no more pages. */
|
|
679
|
+
nextCursor: string | null;
|
|
680
|
+
hasMore: boolean;
|
|
681
|
+
/**
|
|
682
|
+
* Content-stable revision of the full normalized feed that produced this page.
|
|
683
|
+
* Changes only when the semantic message feed changes.
|
|
684
|
+
*/
|
|
685
|
+
feedRevision: string;
|
|
686
|
+
}
|
|
687
|
+
|
|
688
|
+
export type AgentActionMode = 'do' | 'ask' | 'delegate';
|
|
689
|
+
|
|
690
|
+
export interface SendMessageRequest {
|
|
691
|
+
member: string;
|
|
692
|
+
text: string;
|
|
693
|
+
taskRefs?: TaskRef[];
|
|
694
|
+
commentId?: string;
|
|
695
|
+
actionMode?: AgentActionMode;
|
|
696
|
+
summary?: string;
|
|
697
|
+
from?: string;
|
|
698
|
+
timestamp?: string;
|
|
699
|
+
messageId?: string;
|
|
700
|
+
relayOfMessageId?: string;
|
|
701
|
+
/** Override the `to` field in the stored message (defaults to `member`). */
|
|
702
|
+
to?: string;
|
|
703
|
+
color?: string;
|
|
704
|
+
attachments?: AttachmentPayload[];
|
|
705
|
+
source?: InboxMessage['source'];
|
|
706
|
+
/** Lead session ID for session boundary detection. */
|
|
707
|
+
leadSessionId?: string;
|
|
708
|
+
conversationId?: string;
|
|
709
|
+
replyToConversationId?: string;
|
|
710
|
+
toolSummary?: string;
|
|
711
|
+
toolCalls?: ToolCallMeta[];
|
|
712
|
+
messageKind?: InboxMessageKind;
|
|
713
|
+
slashCommand?: SlashCommandMeta;
|
|
714
|
+
commandOutput?: CommandOutputMeta;
|
|
715
|
+
/** cc-connect session key for routing messages to a specific conversation. */
|
|
716
|
+
sessionKey?: string;
|
|
717
|
+
}
|
|
718
|
+
|
|
719
|
+
export interface SendMessageResult {
|
|
720
|
+
deliveredToInbox: boolean;
|
|
721
|
+
deliveredViaStdin?: boolean;
|
|
722
|
+
messageId: string;
|
|
723
|
+
deduplicated?: boolean;
|
|
724
|
+
runtimeDelivery?: {
|
|
725
|
+
providerId: 'opencode';
|
|
726
|
+
attempted: boolean;
|
|
727
|
+
delivered: boolean;
|
|
728
|
+
responsePending?: boolean;
|
|
729
|
+
responseState?:
|
|
730
|
+
| 'not_observed'
|
|
731
|
+
| 'pending'
|
|
732
|
+
| 'prompt_not_indexed'
|
|
733
|
+
| 'responded_tool_call'
|
|
734
|
+
| 'responded_visible_message'
|
|
735
|
+
| 'responded_non_visible_tool'
|
|
736
|
+
| 'responded_plain_text'
|
|
737
|
+
| 'permission_blocked'
|
|
738
|
+
| 'tool_error'
|
|
739
|
+
| 'empty_assistant_turn'
|
|
740
|
+
| 'session_stale'
|
|
741
|
+
| 'session_error'
|
|
742
|
+
| 'reconcile_failed';
|
|
743
|
+
ledgerStatus?:
|
|
744
|
+
| 'pending'
|
|
745
|
+
| 'accepted'
|
|
746
|
+
| 'responded'
|
|
747
|
+
| 'unanswered'
|
|
748
|
+
| 'retry_scheduled'
|
|
749
|
+
| 'retried'
|
|
750
|
+
| 'failed_retryable'
|
|
751
|
+
| 'failed_terminal';
|
|
752
|
+
visibleReplyMessageId?: string;
|
|
753
|
+
visibleReplyCorrelation?:
|
|
754
|
+
| 'relayOfMessageId'
|
|
755
|
+
| 'direct_child_message_send'
|
|
756
|
+
| 'plain_assistant_text';
|
|
757
|
+
acceptanceUnknown?: boolean;
|
|
758
|
+
queuedBehindMessageId?: string;
|
|
759
|
+
reason?: string;
|
|
760
|
+
diagnostics?: string[];
|
|
761
|
+
};
|
|
762
|
+
}
|
|
763
|
+
|
|
764
|
+
export interface AddTaskCommentRequest {
|
|
765
|
+
text: string;
|
|
766
|
+
attachments?: CommentAttachmentPayload[];
|
|
767
|
+
taskRefs?: TaskRef[];
|
|
768
|
+
}
|
|
769
|
+
|
|
770
|
+
export type MemberStatus = 'active' | 'idle' | 'terminated' | 'unknown';
|
|
771
|
+
|
|
772
|
+
export type MemberSpawnStatus = 'offline' | 'waiting' | 'spawning' | 'online' | 'error' | 'skipped';
|
|
773
|
+
export type MemberLaunchState =
|
|
774
|
+
| 'starting'
|
|
775
|
+
| 'runtime_pending_bootstrap'
|
|
776
|
+
| 'runtime_pending_permission'
|
|
777
|
+
| 'confirmed_alive'
|
|
778
|
+
| 'failed_to_start'
|
|
779
|
+
| 'skipped_for_launch';
|
|
780
|
+
export type TeamLaunchAggregateState =
|
|
781
|
+
| 'clean_success'
|
|
782
|
+
| 'partial_pending'
|
|
783
|
+
| 'partial_failure'
|
|
784
|
+
| 'partial_skipped';
|
|
785
|
+
export type PersistedTeamLaunchPhase = 'active' | 'finished' | 'reconciled';
|
|
786
|
+
|
|
787
|
+
export type KanbanColumnId = 'todo' | 'in_progress' | 'done' | 'review' | 'approved';
|
|
788
|
+
|
|
789
|
+
export interface KanbanTaskState {
|
|
790
|
+
column: Extract<KanbanColumnId, 'review' | 'approved'>;
|
|
791
|
+
reviewer?: string | null;
|
|
792
|
+
errorDescription?: string;
|
|
793
|
+
movedAt: string;
|
|
794
|
+
}
|
|
795
|
+
|
|
796
|
+
export interface KanbanState {
|
|
797
|
+
teamName: string;
|
|
798
|
+
reviewers: string[];
|
|
799
|
+
tasks: Record<string, KanbanTaskState>;
|
|
800
|
+
/** Порядок id задач по колонкам для отображения на канбан-доске (drag-and-drop). */
|
|
801
|
+
columnOrder?: Partial<Record<KanbanColumnId, string[]>>;
|
|
802
|
+
}
|
|
803
|
+
|
|
804
|
+
export type UpdateKanbanPatch =
|
|
805
|
+
| { op: 'set_column'; column: Extract<KanbanColumnId, 'review' | 'approved'> }
|
|
806
|
+
| { op: 'remove' }
|
|
807
|
+
| { op: 'request_changes'; comment?: string; taskRefs?: TaskRef[] };
|
|
808
|
+
|
|
809
|
+
export interface ResolvedTeamMember {
|
|
810
|
+
name: string;
|
|
811
|
+
agentId?: string;
|
|
812
|
+
status: MemberStatus;
|
|
813
|
+
currentTaskId: string | null;
|
|
814
|
+
taskCount: number;
|
|
815
|
+
lastActiveAt: string | null;
|
|
816
|
+
messageCount: number;
|
|
817
|
+
color?: string;
|
|
818
|
+
agentType?: string;
|
|
819
|
+
role?: string;
|
|
820
|
+
workflow?: string;
|
|
821
|
+
isolation?: 'worktree';
|
|
822
|
+
providerId?: TeamProviderId;
|
|
823
|
+
model?: string;
|
|
824
|
+
effort?: EffortLevel;
|
|
825
|
+
cwd?: string;
|
|
826
|
+
/** Set only when member's git branch differs from the lead's branch. */
|
|
827
|
+
gitBranch?: string;
|
|
828
|
+
runtimeAdvisory?: MemberRuntimeAdvisory;
|
|
829
|
+
removedAt?: number;
|
|
830
|
+
skippedForLaunch?: boolean;
|
|
831
|
+
launchState?: string;
|
|
832
|
+
}
|
|
833
|
+
|
|
834
|
+
export interface MemberRuntimeAdvisory {
|
|
835
|
+
kind: 'sdk_retrying' | 'api_error';
|
|
836
|
+
observedAt: string;
|
|
837
|
+
retryUntil?: string;
|
|
838
|
+
retryDelayMs?: number;
|
|
839
|
+
reasonCode?:
|
|
840
|
+
| 'quota_exhausted'
|
|
841
|
+
| 'rate_limited'
|
|
842
|
+
| 'auth_error'
|
|
843
|
+
| 'codex_native_timeout'
|
|
844
|
+
| 'network_error'
|
|
845
|
+
| 'provider_overloaded'
|
|
846
|
+
| 'backend_error'
|
|
847
|
+
| 'unknown';
|
|
848
|
+
message?: string;
|
|
849
|
+
statusCode?: number;
|
|
850
|
+
}
|
|
851
|
+
|
|
852
|
+
export interface TeamProcess {
|
|
853
|
+
id: string;
|
|
854
|
+
port?: number;
|
|
855
|
+
url?: string;
|
|
856
|
+
label: string;
|
|
857
|
+
pid: number;
|
|
858
|
+
claudeProcessId?: string;
|
|
859
|
+
registeredBy?: string;
|
|
860
|
+
command?: string;
|
|
861
|
+
registeredAt: string;
|
|
862
|
+
stoppedAt?: string;
|
|
863
|
+
}
|
|
864
|
+
|
|
865
|
+
export interface TeamMemberSnapshot {
|
|
866
|
+
name: string;
|
|
867
|
+
agentId?: string;
|
|
868
|
+
currentTaskId: string | null;
|
|
869
|
+
taskCount: number;
|
|
870
|
+
color?: string;
|
|
871
|
+
agentType?: string;
|
|
872
|
+
role?: string;
|
|
873
|
+
workflow?: string;
|
|
874
|
+
isolation?: 'worktree';
|
|
875
|
+
providerId?: TeamProviderId;
|
|
876
|
+
providerBackendId?: TeamProviderBackendId;
|
|
877
|
+
model?: string;
|
|
878
|
+
effort?: EffortLevel;
|
|
879
|
+
selectedFastMode?: TeamFastMode;
|
|
880
|
+
resolvedFastMode?: boolean;
|
|
881
|
+
laneId?: string;
|
|
882
|
+
laneKind?: 'primary' | 'secondary';
|
|
883
|
+
laneOwnerProviderId?: TeamProviderId;
|
|
884
|
+
cwd?: string;
|
|
885
|
+
/** Set only when member's git branch differs from the lead's branch. */
|
|
886
|
+
gitBranch?: string;
|
|
887
|
+
runtimeAdvisory?: MemberRuntimeAdvisory;
|
|
888
|
+
removedAt?: number;
|
|
889
|
+
}
|
|
890
|
+
|
|
891
|
+
export interface MemberActivityMetaEntry {
|
|
892
|
+
memberName: string;
|
|
893
|
+
lastAuthoredMessageAt: string | null;
|
|
894
|
+
messageCountExact: number;
|
|
895
|
+
latestAuthoredMessageSignalsTermination: boolean;
|
|
896
|
+
}
|
|
897
|
+
|
|
898
|
+
export interface TeamMemberActivityMeta {
|
|
899
|
+
teamName: string;
|
|
900
|
+
computedAt: string;
|
|
901
|
+
members: Record<string, MemberActivityMetaEntry>;
|
|
902
|
+
feedRevision: string;
|
|
903
|
+
}
|
|
904
|
+
|
|
905
|
+
export interface TeamViewSnapshot {
|
|
906
|
+
teamName: string;
|
|
907
|
+
config: TeamConfig;
|
|
908
|
+
tasks: TeamTaskWithKanban[];
|
|
909
|
+
members: TeamMemberSnapshot[];
|
|
910
|
+
kanbanState: KanbanState;
|
|
911
|
+
processes: TeamProcess[];
|
|
912
|
+
warnings?: string[];
|
|
913
|
+
isAlive?: boolean;
|
|
914
|
+
/** cc-connect project name this team is bound to */
|
|
915
|
+
bindProject?: string;
|
|
916
|
+
/** 团队协作开关:false = 独立作战,true = 可跨团队调度 */
|
|
917
|
+
collaboration?: boolean;
|
|
918
|
+
harness?: string;
|
|
919
|
+
workDir?: string;
|
|
920
|
+
permissionMode?: string;
|
|
921
|
+
settings?: Record<string, unknown>;
|
|
922
|
+
}
|
|
923
|
+
|
|
924
|
+
export type EffortLevel = 'none' | 'minimal' | 'low' | 'medium' | 'high' | 'xhigh' | 'max';
|
|
925
|
+
export type TeamProviderId = 'anthropic' | 'codex' | 'gemini' | 'opencode';
|
|
926
|
+
export type TeamProviderBackendId = 'auto' | 'adapter' | 'api' | 'cli-sdk' | 'codex-native';
|
|
927
|
+
export type TeamFastMode = 'inherit' | 'on' | 'off';
|
|
928
|
+
|
|
929
|
+
export interface ProviderModelLaunchIdentity {
|
|
930
|
+
providerId: TeamProviderId;
|
|
931
|
+
providerBackendId: TeamProviderBackendId | null;
|
|
932
|
+
selectedModel: string | null;
|
|
933
|
+
selectedModelKind: 'default' | 'explicit';
|
|
934
|
+
resolvedLaunchModel: string | null;
|
|
935
|
+
catalogId: string | null;
|
|
936
|
+
catalogSource:
|
|
937
|
+
| 'anthropic-models-api'
|
|
938
|
+
| 'app-server'
|
|
939
|
+
| 'static-fallback'
|
|
940
|
+
| 'runtime'
|
|
941
|
+
| 'unavailable';
|
|
942
|
+
catalogFetchedAt: string | null;
|
|
943
|
+
selectedEffort: EffortLevel | null;
|
|
944
|
+
resolvedEffort: EffortLevel | null;
|
|
945
|
+
selectedFastMode?: TeamFastMode | null;
|
|
946
|
+
resolvedFastMode?: boolean | null;
|
|
947
|
+
fastResolutionReason?: string | null;
|
|
948
|
+
}
|
|
949
|
+
|
|
950
|
+
export interface TeamLaunchRequest {
|
|
951
|
+
teamName: string;
|
|
952
|
+
cwd: string;
|
|
953
|
+
executionTarget?: ExecutionTarget;
|
|
954
|
+
prompt?: string;
|
|
955
|
+
providerId?: TeamProviderId;
|
|
956
|
+
providerBackendId?: TeamProviderBackendId;
|
|
957
|
+
model?: string;
|
|
958
|
+
effort?: EffortLevel;
|
|
959
|
+
fastMode?: TeamFastMode;
|
|
960
|
+
/** When true, context window is limited to 200K tokens instead of the default. */
|
|
961
|
+
limitContext?: boolean;
|
|
962
|
+
/** When true, skip --resume and start a fresh session (clears context memory). */
|
|
963
|
+
clearContext?: boolean;
|
|
964
|
+
/** When false, run WITHOUT --dangerously-skip-permissions (manual tool approval). Default: true. */
|
|
965
|
+
skipPermissions?: boolean;
|
|
966
|
+
/** Worktree name — CLI: --worktree <name>. */
|
|
967
|
+
worktree?: string;
|
|
968
|
+
/** Raw custom CLI args string, shell-split and appended to CLI command. */
|
|
969
|
+
extraCliArgs?: string;
|
|
970
|
+
}
|
|
971
|
+
|
|
972
|
+
export interface TeamLaunchResponse {
|
|
973
|
+
runId: string;
|
|
974
|
+
}
|
|
975
|
+
|
|
976
|
+
export interface CreateTaskRequest {
|
|
977
|
+
subject: string;
|
|
978
|
+
description?: string;
|
|
979
|
+
descriptionTaskRefs?: TaskRef[];
|
|
980
|
+
owner?: string;
|
|
981
|
+
blockedBy?: string[];
|
|
982
|
+
related?: string[];
|
|
983
|
+
prompt?: string;
|
|
984
|
+
promptTaskRefs?: TaskRef[];
|
|
985
|
+
startImmediately?: boolean;
|
|
986
|
+
}
|
|
987
|
+
|
|
988
|
+
export type LeadActivityState = 'active' | 'idle' | 'offline';
|
|
989
|
+
|
|
990
|
+
export interface LeadActivitySnapshot {
|
|
991
|
+
state: LeadActivityState;
|
|
992
|
+
runId: string | null;
|
|
993
|
+
}
|
|
994
|
+
|
|
995
|
+
export interface LeadContextUsage {
|
|
996
|
+
/** Prompt-side tokens currently occupying the context window. */
|
|
997
|
+
promptInputTokens: number | null;
|
|
998
|
+
/** Tokens generated in the latest response. */
|
|
999
|
+
outputTokens: number | null;
|
|
1000
|
+
/** Total occupied context window tokens (prompt input + output). */
|
|
1001
|
+
contextUsedTokens: number | null;
|
|
1002
|
+
/** Model's context window size */
|
|
1003
|
+
contextWindowTokens: number | null;
|
|
1004
|
+
/** Context usage percentage (0-100) */
|
|
1005
|
+
contextUsedPercent: number | null;
|
|
1006
|
+
/** Which usage contract produced the prompt-side numbers. */
|
|
1007
|
+
promptInputSource:
|
|
1008
|
+
| 'anthropic_usage'
|
|
1009
|
+
| 'openai_responses_usage'
|
|
1010
|
+
| 'openai_chat_usage'
|
|
1011
|
+
| 'unavailable';
|
|
1012
|
+
/** ISO timestamp of last update */
|
|
1013
|
+
updatedAt: string;
|
|
1014
|
+
}
|
|
1015
|
+
|
|
1016
|
+
export interface LeadContextUsageSnapshot {
|
|
1017
|
+
usage: LeadContextUsage | null;
|
|
1018
|
+
runId: string | null;
|
|
1019
|
+
}
|
|
1020
|
+
|
|
1021
|
+
export interface PersistedTeamLaunchMemberSources {
|
|
1022
|
+
inboxHeartbeat?: boolean;
|
|
1023
|
+
nativeHeartbeat?: boolean;
|
|
1024
|
+
processAlive?: boolean;
|
|
1025
|
+
configRegistered?: boolean;
|
|
1026
|
+
configDrift?: boolean;
|
|
1027
|
+
hardFailureSignal?: boolean;
|
|
1028
|
+
duplicateRespawnBlocked?: boolean;
|
|
1029
|
+
}
|
|
1030
|
+
|
|
1031
|
+
export interface PersistedTeamLaunchMemberState {
|
|
1032
|
+
name: string;
|
|
1033
|
+
providerId?: TeamProviderId;
|
|
1034
|
+
providerBackendId?: TeamProviderBackendId;
|
|
1035
|
+
model?: string;
|
|
1036
|
+
effort?: EffortLevel;
|
|
1037
|
+
cwd?: string;
|
|
1038
|
+
selectedFastMode?: TeamFastMode;
|
|
1039
|
+
resolvedFastMode?: boolean;
|
|
1040
|
+
laneId?: string;
|
|
1041
|
+
laneKind?: 'primary' | 'secondary';
|
|
1042
|
+
laneOwnerProviderId?: TeamProviderId;
|
|
1043
|
+
launchIdentity?: ProviderModelLaunchIdentity;
|
|
1044
|
+
launchState: MemberLaunchState;
|
|
1045
|
+
skippedForLaunch?: boolean;
|
|
1046
|
+
skipReason?: string;
|
|
1047
|
+
skippedAt?: string;
|
|
1048
|
+
agentToolAccepted: boolean;
|
|
1049
|
+
runtimeAlive: boolean;
|
|
1050
|
+
bootstrapConfirmed: boolean;
|
|
1051
|
+
hardFailure: boolean;
|
|
1052
|
+
hardFailureReason?: string;
|
|
1053
|
+
pendingPermissionRequestIds?: string[];
|
|
1054
|
+
runtimePid?: number;
|
|
1055
|
+
runtimeSessionId?: string;
|
|
1056
|
+
livenessKind?: TeamAgentRuntimeLivenessKind;
|
|
1057
|
+
pidSource?: TeamAgentRuntimePidSource;
|
|
1058
|
+
runtimeDiagnostic?: string;
|
|
1059
|
+
runtimeDiagnosticSeverity?: TeamAgentRuntimeDiagnosticSeverity;
|
|
1060
|
+
runtimeLastSeenAt?: string;
|
|
1061
|
+
firstSpawnAcceptedAt?: string;
|
|
1062
|
+
lastHeartbeatAt?: string;
|
|
1063
|
+
lastRuntimeAliveAt?: string;
|
|
1064
|
+
lastEvaluatedAt: string;
|
|
1065
|
+
sources?: PersistedTeamLaunchMemberSources;
|
|
1066
|
+
diagnostics?: string[];
|
|
1067
|
+
}
|
|
1068
|
+
|
|
1069
|
+
export interface PersistedTeamLaunchSummary {
|
|
1070
|
+
confirmedCount: number;
|
|
1071
|
+
pendingCount: number;
|
|
1072
|
+
failedCount: number;
|
|
1073
|
+
skippedCount?: number;
|
|
1074
|
+
runtimeAlivePendingCount: number;
|
|
1075
|
+
shellOnlyPendingCount?: number;
|
|
1076
|
+
runtimeProcessPendingCount?: number;
|
|
1077
|
+
runtimeCandidatePendingCount?: number;
|
|
1078
|
+
noRuntimePendingCount?: number;
|
|
1079
|
+
permissionPendingCount?: number;
|
|
1080
|
+
}
|
|
1081
|
+
|
|
1082
|
+
export interface PersistedTeamLaunchSnapshot {
|
|
1083
|
+
version: 2;
|
|
1084
|
+
teamName: string;
|
|
1085
|
+
updatedAt: string;
|
|
1086
|
+
leadSessionId?: string;
|
|
1087
|
+
launchPhase: PersistedTeamLaunchPhase;
|
|
1088
|
+
expectedMembers: string[];
|
|
1089
|
+
bootstrapExpectedMembers?: string[];
|
|
1090
|
+
members: Record<string, PersistedTeamLaunchMemberState>;
|
|
1091
|
+
summary: PersistedTeamLaunchSummary;
|
|
1092
|
+
teamLaunchState: TeamLaunchAggregateState;
|
|
1093
|
+
}
|
|
1094
|
+
|
|
1095
|
+
export interface MemberSpawnStatusesSnapshot {
|
|
1096
|
+
statuses: Record<string, MemberSpawnStatusEntry>;
|
|
1097
|
+
runId: string | null;
|
|
1098
|
+
teamLaunchState?: TeamLaunchAggregateState;
|
|
1099
|
+
launchPhase?: PersistedTeamLaunchPhase;
|
|
1100
|
+
expectedMembers?: string[];
|
|
1101
|
+
updatedAt?: string;
|
|
1102
|
+
summary?: PersistedTeamLaunchSummary;
|
|
1103
|
+
source?: 'live' | 'persisted' | 'merged';
|
|
1104
|
+
}
|
|
1105
|
+
|
|
1106
|
+
export type MemberSpawnLivenessSource = 'heartbeat' | 'process';
|
|
1107
|
+
|
|
1108
|
+
export type TeamAgentRuntimeBackendType = 'lead' | 'iterm2' | 'in-process' | 'process';
|
|
1109
|
+
|
|
1110
|
+
export type TeamAgentRuntimeLivenessKind =
|
|
1111
|
+
| 'confirmed_bootstrap'
|
|
1112
|
+
| 'runtime_process'
|
|
1113
|
+
| 'runtime_process_candidate'
|
|
1114
|
+
| 'permission_blocked'
|
|
1115
|
+
| 'shell_only'
|
|
1116
|
+
| 'registered_only'
|
|
1117
|
+
| 'stale_metadata'
|
|
1118
|
+
| 'not_found';
|
|
1119
|
+
|
|
1120
|
+
export type TeamAgentRuntimePidSource =
|
|
1121
|
+
| 'lead_process'
|
|
1122
|
+
| 'agent_process_table'
|
|
1123
|
+
| 'opencode_bridge'
|
|
1124
|
+
| 'runtime_bootstrap'
|
|
1125
|
+
| 'persisted_metadata';
|
|
1126
|
+
|
|
1127
|
+
export type TeamAgentRuntimeDiagnosticSeverity = 'info' | 'warning' | 'error';
|
|
1128
|
+
|
|
1129
|
+
export interface TeamAgentRuntimeEntry {
|
|
1130
|
+
memberName: string;
|
|
1131
|
+
alive: boolean;
|
|
1132
|
+
restartable: boolean;
|
|
1133
|
+
backendType?: TeamAgentRuntimeBackendType;
|
|
1134
|
+
providerId?: TeamProviderId;
|
|
1135
|
+
providerBackendId?: TeamProviderBackendId;
|
|
1136
|
+
laneId?: string;
|
|
1137
|
+
laneKind?: 'primary' | 'secondary';
|
|
1138
|
+
pid?: number;
|
|
1139
|
+
runtimeModel?: string;
|
|
1140
|
+
/** Runtime working directory, when known. */
|
|
1141
|
+
cwd?: string;
|
|
1142
|
+
rssBytes?: number;
|
|
1143
|
+
livenessKind?: TeamAgentRuntimeLivenessKind;
|
|
1144
|
+
pidSource?: TeamAgentRuntimePidSource;
|
|
1145
|
+
processCommand?: string;
|
|
1146
|
+
paneId?: string;
|
|
1147
|
+
panePid?: number;
|
|
1148
|
+
paneCurrentCommand?: string;
|
|
1149
|
+
runtimePid?: number;
|
|
1150
|
+
runtimeSessionId?: string;
|
|
1151
|
+
runtimeLeaseExpiresAt?: string;
|
|
1152
|
+
runtimeLastSeenAt?: string;
|
|
1153
|
+
/** True when a previous/persisted launch confirmed bootstrap, separate from current live liveness. */
|
|
1154
|
+
historicalBootstrapConfirmed?: boolean;
|
|
1155
|
+
runtimeDiagnostic?: string;
|
|
1156
|
+
runtimeDiagnosticSeverity?: TeamAgentRuntimeDiagnosticSeverity;
|
|
1157
|
+
diagnostics?: string[];
|
|
1158
|
+
updatedAt: string;
|
|
1159
|
+
}
|
|
1160
|
+
|
|
1161
|
+
export interface TeamAgentRuntimeSnapshot {
|
|
1162
|
+
teamName: string;
|
|
1163
|
+
updatedAt: string;
|
|
1164
|
+
runId: string | null;
|
|
1165
|
+
providerBackendId?: TeamProviderBackendId;
|
|
1166
|
+
fastMode?: TeamFastMode;
|
|
1167
|
+
members: Record<string, TeamAgentRuntimeEntry>;
|
|
1168
|
+
}
|
|
1169
|
+
|
|
1170
|
+
export interface TeamChangeEvent {
|
|
1171
|
+
type:
|
|
1172
|
+
| 'config'
|
|
1173
|
+
| 'inbox'
|
|
1174
|
+
| 'log-source-change'
|
|
1175
|
+
| 'task-log-change'
|
|
1176
|
+
| 'task'
|
|
1177
|
+
| 'lead-activity'
|
|
1178
|
+
| 'lead-context'
|
|
1179
|
+
| 'lead-message'
|
|
1180
|
+
| 'tool-activity'
|
|
1181
|
+
| 'process'
|
|
1182
|
+
| 'member-spawn';
|
|
1183
|
+
teamName: string;
|
|
1184
|
+
runId?: string;
|
|
1185
|
+
detail?: string;
|
|
1186
|
+
taskId?: string;
|
|
1187
|
+
}
|
|
1188
|
+
|
|
1189
|
+
export interface ProjectBranchChangeEvent {
|
|
1190
|
+
projectPath: string;
|
|
1191
|
+
branch: string | null;
|
|
1192
|
+
}
|
|
1193
|
+
|
|
1194
|
+
/** Per-member spawn status entry, exposed to renderer via IPC. */
|
|
1195
|
+
export interface MemberSpawnStatusEntry {
|
|
1196
|
+
status: MemberSpawnStatus;
|
|
1197
|
+
launchState: MemberLaunchState;
|
|
1198
|
+
/** Error message when status === 'error'. */
|
|
1199
|
+
error?: string;
|
|
1200
|
+
/** Hard failure reason for failed_to_start. */
|
|
1201
|
+
hardFailureReason?: string;
|
|
1202
|
+
/** True when the user intentionally skipped this teammate for the current launch only. */
|
|
1203
|
+
skippedForLaunch?: boolean;
|
|
1204
|
+
skipReason?: string;
|
|
1205
|
+
skippedAt?: string;
|
|
1206
|
+
/**
|
|
1207
|
+
* Optional provenance for `online`.
|
|
1208
|
+
* - heartbeat: teammate sent a real inbox/native message after bootstrap
|
|
1209
|
+
* - process: runtime process is alive, but bootstrap/first reply is not yet confirmed
|
|
1210
|
+
*/
|
|
1211
|
+
livenessSource?: MemberSpawnLivenessSource;
|
|
1212
|
+
/** Agent tool_result confirmed the spawn request was accepted by the runtime. */
|
|
1213
|
+
agentToolAccepted?: boolean;
|
|
1214
|
+
/** Runtime process or registered teammate runtime is currently alive. */
|
|
1215
|
+
runtimeAlive?: boolean;
|
|
1216
|
+
/** A real teammate heartbeat/bootstrap confirmation was observed. */
|
|
1217
|
+
bootstrapConfirmed?: boolean;
|
|
1218
|
+
/** Hard failure observed from spawn/bootstrap/runtime evidence. */
|
|
1219
|
+
hardFailure?: boolean;
|
|
1220
|
+
/** Pending runtime permission request ids currently blocking bootstrap. */
|
|
1221
|
+
pendingPermissionRequestIds?: string[];
|
|
1222
|
+
/** ISO timestamp of the first accepted teammate spawn for this member. */
|
|
1223
|
+
firstSpawnAcceptedAt?: string;
|
|
1224
|
+
/** ISO timestamp of the latest confirmed heartbeat/bootstrap message. */
|
|
1225
|
+
lastHeartbeatAt?: string;
|
|
1226
|
+
/** Live runtime model observed from the teammate process, when available. */
|
|
1227
|
+
runtimeModel?: string;
|
|
1228
|
+
/** Compact runtime liveness classification for launch UI. */
|
|
1229
|
+
livenessKind?: TeamAgentRuntimeLivenessKind;
|
|
1230
|
+
/** Short user-facing liveness diagnostic. */
|
|
1231
|
+
runtimeDiagnostic?: string;
|
|
1232
|
+
/** Visual severity for runtimeDiagnostic. */
|
|
1233
|
+
runtimeDiagnosticSeverity?: TeamAgentRuntimeDiagnosticSeverity;
|
|
1234
|
+
/** ISO timestamp of the last liveness evaluation. */
|
|
1235
|
+
livenessLastCheckedAt?: string;
|
|
1236
|
+
/** ISO timestamp of the last status change. */
|
|
1237
|
+
updatedAt: string;
|
|
1238
|
+
}
|
|
1239
|
+
|
|
1240
|
+
export interface TeamClaudeLogsQuery {
|
|
1241
|
+
/** Offset in lines from the newest log line (0 = newest). */
|
|
1242
|
+
offset?: number;
|
|
1243
|
+
/** Max number of lines to return. */
|
|
1244
|
+
limit?: number;
|
|
1245
|
+
}
|
|
1246
|
+
|
|
1247
|
+
export interface TeamClaudeLogsResponse {
|
|
1248
|
+
/** Log lines ordered newest-first. */
|
|
1249
|
+
lines: string[];
|
|
1250
|
+
/** Total number of buffered lines available in memory. */
|
|
1251
|
+
total: number;
|
|
1252
|
+
/** True when there are older lines beyond the current window. */
|
|
1253
|
+
hasMore: boolean;
|
|
1254
|
+
/** ISO timestamp of the last observed CLI output for this team. */
|
|
1255
|
+
updatedAt?: string;
|
|
1256
|
+
}
|
|
1257
|
+
|
|
1258
|
+
export type TeamProvisioningState =
|
|
1259
|
+
| 'idle'
|
|
1260
|
+
| 'validating'
|
|
1261
|
+
| 'spawning'
|
|
1262
|
+
| 'configuring'
|
|
1263
|
+
| 'assembling'
|
|
1264
|
+
| 'finalizing'
|
|
1265
|
+
| 'verifying'
|
|
1266
|
+
| 'ready'
|
|
1267
|
+
| 'disconnected'
|
|
1268
|
+
| 'failed'
|
|
1269
|
+
| 'cancelled';
|
|
1270
|
+
|
|
1271
|
+
export interface TeamProvisioningMemberInput {
|
|
1272
|
+
name: string;
|
|
1273
|
+
role?: string;
|
|
1274
|
+
/** Per-agent workflow/instructions injected into spawn prompt. */
|
|
1275
|
+
workflow?: string;
|
|
1276
|
+
/** Opt-in: run this teammate in its own git worktree. */
|
|
1277
|
+
isolation?: 'worktree';
|
|
1278
|
+
/** Resolved runtime working directory. Usually app-managed for isolated teammates. */
|
|
1279
|
+
cwd?: string;
|
|
1280
|
+
/** Optional machine/cwd override for distributed execution. */
|
|
1281
|
+
executionTarget?: ExecutionTarget;
|
|
1282
|
+
providerId?: TeamProviderId;
|
|
1283
|
+
providerBackendId?: TeamProviderBackendId;
|
|
1284
|
+
model?: string;
|
|
1285
|
+
effort?: EffortLevel;
|
|
1286
|
+
fastMode?: TeamFastMode;
|
|
1287
|
+
}
|
|
1288
|
+
|
|
1289
|
+
export interface TeamCreateRequest {
|
|
1290
|
+
teamName: string;
|
|
1291
|
+
displayName?: string;
|
|
1292
|
+
description?: string;
|
|
1293
|
+
color?: string;
|
|
1294
|
+
members: TeamProvisioningMemberInput[];
|
|
1295
|
+
cwd: string;
|
|
1296
|
+
executionTarget?: ExecutionTarget;
|
|
1297
|
+
prompt?: string;
|
|
1298
|
+
providerId?: TeamProviderId;
|
|
1299
|
+
providerBackendId?: TeamProviderBackendId;
|
|
1300
|
+
model?: string;
|
|
1301
|
+
effort?: EffortLevel;
|
|
1302
|
+
fastMode?: TeamFastMode;
|
|
1303
|
+
/** When true, context window is limited to 200K tokens instead of the default. */
|
|
1304
|
+
limitContext?: boolean;
|
|
1305
|
+
/** When false, run WITHOUT --dangerously-skip-permissions (manual tool approval). Default: true. */
|
|
1306
|
+
skipPermissions?: boolean;
|
|
1307
|
+
/** Worktree name — CLI: --worktree <name>. */
|
|
1308
|
+
worktree?: string;
|
|
1309
|
+
/** Raw custom CLI args string, shell-split and appended to CLI command. */
|
|
1310
|
+
extraCliArgs?: string;
|
|
1311
|
+
/** Template source for copying skill/memory files (set when using a template). */
|
|
1312
|
+
templateSourceId?: string;
|
|
1313
|
+
templateDirectoryId?: string;
|
|
1314
|
+
/** Workflow content for the team lead (from template). */
|
|
1315
|
+
workflow?: string;
|
|
1316
|
+
/** Path to workflow file for the team lead (from template). */
|
|
1317
|
+
workflowFile?: string;
|
|
1318
|
+
/** Harness/agent type (cc-connect agent_type). */
|
|
1319
|
+
harness?: string;
|
|
1320
|
+
/** Platform/channel type for cc-connect (default: bridge). */
|
|
1321
|
+
platform?: string;
|
|
1322
|
+
/** Platform-specific options (app_id, app_secret, allow_from, share_session, etc.) */
|
|
1323
|
+
platformOptions?: Record<string, string | boolean>;
|
|
1324
|
+
}
|
|
1325
|
+
|
|
1326
|
+
export interface TeamCreateConfigRequest {
|
|
1327
|
+
teamName: string;
|
|
1328
|
+
displayName?: string;
|
|
1329
|
+
description?: string;
|
|
1330
|
+
color?: string;
|
|
1331
|
+
members: TeamProvisioningMemberInput[];
|
|
1332
|
+
cwd?: string;
|
|
1333
|
+
executionTarget?: ExecutionTarget;
|
|
1334
|
+
providerId?: TeamProviderId;
|
|
1335
|
+
providerBackendId?: TeamProviderBackendId;
|
|
1336
|
+
model?: string;
|
|
1337
|
+
effort?: EffortLevel;
|
|
1338
|
+
fastMode?: TeamFastMode;
|
|
1339
|
+
/** Template source for copying skill/memory files (set when using a template). */
|
|
1340
|
+
templateSourceId?: string;
|
|
1341
|
+
templateDirectoryId?: string;
|
|
1342
|
+
}
|
|
1343
|
+
|
|
1344
|
+
export interface TeamTemplateSource {
|
|
1345
|
+
id: string;
|
|
1346
|
+
name: string;
|
|
1347
|
+
url: string;
|
|
1348
|
+
enabled: boolean;
|
|
1349
|
+
branch?: string;
|
|
1350
|
+
isDefault?: boolean;
|
|
1351
|
+
lastSyncedAt?: string;
|
|
1352
|
+
lastError?: string;
|
|
1353
|
+
}
|
|
1354
|
+
|
|
1355
|
+
export interface TeamTemplateMember {
|
|
1356
|
+
name: string;
|
|
1357
|
+
role?: string;
|
|
1358
|
+
workflow?: string;
|
|
1359
|
+
workflowFile?: string;
|
|
1360
|
+
isolation?: 'worktree';
|
|
1361
|
+
providerId?: TeamProviderId;
|
|
1362
|
+
model?: string;
|
|
1363
|
+
effort?: EffortLevel;
|
|
1364
|
+
}
|
|
1365
|
+
|
|
1366
|
+
export interface TeamTemplateSummary {
|
|
1367
|
+
sourceId: string;
|
|
1368
|
+
sourceName: string;
|
|
1369
|
+
templateId: string;
|
|
1370
|
+
/** On-disk directory name (may differ from templateId when manifest declares a custom id). */
|
|
1371
|
+
templateDirectoryId: string;
|
|
1372
|
+
displayName: string;
|
|
1373
|
+
description?: string;
|
|
1374
|
+
tags?: string[];
|
|
1375
|
+
members: TeamTemplateMember[];
|
|
1376
|
+
providerId?: TeamProviderId;
|
|
1377
|
+
model?: string;
|
|
1378
|
+
effort?: EffortLevel;
|
|
1379
|
+
fastMode?: TeamFastMode;
|
|
1380
|
+
limitContext?: boolean;
|
|
1381
|
+
skipPermissions?: boolean;
|
|
1382
|
+
color?: string;
|
|
1383
|
+
/** Workflow content for the team lead. */
|
|
1384
|
+
workflow?: string;
|
|
1385
|
+
/** Path to workflow file for the team lead. */
|
|
1386
|
+
workflowFile?: string;
|
|
1387
|
+
}
|
|
1388
|
+
|
|
1389
|
+
export interface TeamTemplateSourcesSnapshot {
|
|
1390
|
+
sources: TeamTemplateSource[];
|
|
1391
|
+
templates: TeamTemplateSummary[];
|
|
1392
|
+
}
|
|
1393
|
+
|
|
1394
|
+
export interface TeamCreateResponse {
|
|
1395
|
+
runId: string;
|
|
1396
|
+
}
|
|
1397
|
+
|
|
1398
|
+
export type TeamProvisioningModelVerificationMode = 'compatibility' | 'deep';
|
|
1399
|
+
|
|
1400
|
+
export interface TeamProvisioningPrepareResult {
|
|
1401
|
+
ready: boolean;
|
|
1402
|
+
message: string;
|
|
1403
|
+
details?: string[];
|
|
1404
|
+
warnings?: string[];
|
|
1405
|
+
}
|
|
1406
|
+
|
|
1407
|
+
export interface TeamProvisioningProgress {
|
|
1408
|
+
runId: string;
|
|
1409
|
+
teamName: string;
|
|
1410
|
+
state: Exclude<TeamProvisioningState, 'idle'>;
|
|
1411
|
+
message: string;
|
|
1412
|
+
/** Visual severity for the message subtitle: 'error' (red), 'warning' (amber), or default (muted). */
|
|
1413
|
+
messageSeverity?: 'error' | 'warning';
|
|
1414
|
+
startedAt: string;
|
|
1415
|
+
updatedAt: string;
|
|
1416
|
+
pid?: number;
|
|
1417
|
+
error?: string;
|
|
1418
|
+
warnings?: string[];
|
|
1419
|
+
/** Provisioning CLI logs shown in the launch progress UI. */
|
|
1420
|
+
cliLogsTail?: string;
|
|
1421
|
+
/** Accumulated assistant text output during provisioning (for live preview). */
|
|
1422
|
+
assistantOutput?: string;
|
|
1423
|
+
/** True once provisioning has written a readable config.json for this team. */
|
|
1424
|
+
configReady?: boolean;
|
|
1425
|
+
/** Bounded structured launch diagnostics for the progress UI. */
|
|
1426
|
+
launchDiagnostics?: TeamLaunchDiagnosticItem[];
|
|
1427
|
+
/** Optional authoritative member launch snapshot emitted with runtime-adapter progress. */
|
|
1428
|
+
memberSpawnSnapshot?: MemberSpawnStatusesSnapshot;
|
|
1429
|
+
}
|
|
1430
|
+
|
|
1431
|
+
export interface TeamLaunchDiagnosticItem {
|
|
1432
|
+
id: string;
|
|
1433
|
+
memberName?: string;
|
|
1434
|
+
severity: TeamAgentRuntimeDiagnosticSeverity;
|
|
1435
|
+
code:
|
|
1436
|
+
| 'spawn_accepted'
|
|
1437
|
+
| 'runtime_process_detected'
|
|
1438
|
+
| 'runtime_process_candidate'
|
|
1439
|
+
| 'shell_only'
|
|
1440
|
+
| 'runtime_not_found'
|
|
1441
|
+
| 'permission_pending'
|
|
1442
|
+
| 'bootstrap_confirmed'
|
|
1443
|
+
| 'bootstrap_stalled'
|
|
1444
|
+
| 'stale_runtime_event_rejected'
|
|
1445
|
+
| 'process_table_unavailable';
|
|
1446
|
+
label: string;
|
|
1447
|
+
detail?: string;
|
|
1448
|
+
observedAt: string;
|
|
1449
|
+
}
|
|
1450
|
+
|
|
1451
|
+
export interface TeamRuntimeState {
|
|
1452
|
+
teamName: string;
|
|
1453
|
+
isAlive: boolean;
|
|
1454
|
+
runId: string | null;
|
|
1455
|
+
progress: TeamProvisioningProgress | null;
|
|
1456
|
+
}
|
|
1457
|
+
|
|
1458
|
+
export interface GlobalTask extends TeamTaskWithKanban {
|
|
1459
|
+
teamName: string;
|
|
1460
|
+
teamDisplayName: string;
|
|
1461
|
+
projectPath?: string;
|
|
1462
|
+
/** True when the parent team has been soft-deleted. */
|
|
1463
|
+
teamDeleted?: boolean;
|
|
1464
|
+
}
|
|
1465
|
+
|
|
1466
|
+
export interface MemberSubagentSummary {
|
|
1467
|
+
subagentId: string;
|
|
1468
|
+
sessionId: string;
|
|
1469
|
+
projectId: string;
|
|
1470
|
+
description: string;
|
|
1471
|
+
memberName: string | null;
|
|
1472
|
+
startTime: string;
|
|
1473
|
+
durationMs: number;
|
|
1474
|
+
messageCount: number;
|
|
1475
|
+
isOngoing: boolean;
|
|
1476
|
+
}
|
|
1477
|
+
|
|
1478
|
+
export type MemberLogKind = 'subagent' | 'lead_session' | 'member_session';
|
|
1479
|
+
|
|
1480
|
+
export interface MemberLogSummaryBase {
|
|
1481
|
+
kind: MemberLogKind;
|
|
1482
|
+
sessionId: string;
|
|
1483
|
+
projectId: string;
|
|
1484
|
+
description: string;
|
|
1485
|
+
memberName: string | null;
|
|
1486
|
+
startTime: string;
|
|
1487
|
+
durationMs: number;
|
|
1488
|
+
messageCount: number;
|
|
1489
|
+
isOngoing: boolean;
|
|
1490
|
+
/** Absolute path to JSONL file when known (avoids redundant findMemberLogPaths scan). */
|
|
1491
|
+
filePath?: string;
|
|
1492
|
+
/** Short preview of the last assistant output (truncated). */
|
|
1493
|
+
lastOutputPreview?: string;
|
|
1494
|
+
/** Short preview of the last thinking block (truncated). */
|
|
1495
|
+
lastThinkingPreview?: string;
|
|
1496
|
+
/** Recent thinking/output previews with timestamps for task-scoped filtering. */
|
|
1497
|
+
recentPreviews?: { text: string; timestamp: string; kind: 'thinking' | 'output' }[];
|
|
1498
|
+
}
|
|
1499
|
+
|
|
1500
|
+
export interface MemberSubagentLogSummary extends MemberLogSummaryBase {
|
|
1501
|
+
kind: 'subagent';
|
|
1502
|
+
subagentId: string;
|
|
1503
|
+
}
|
|
1504
|
+
|
|
1505
|
+
export interface MemberLeadSessionLogSummary extends MemberLogSummaryBase {
|
|
1506
|
+
kind: 'lead_session';
|
|
1507
|
+
}
|
|
1508
|
+
|
|
1509
|
+
export interface MemberSessionLogSummary extends MemberLogSummaryBase {
|
|
1510
|
+
kind: 'member_session';
|
|
1511
|
+
}
|
|
1512
|
+
|
|
1513
|
+
export type MemberLogSummary =
|
|
1514
|
+
| MemberSubagentLogSummary
|
|
1515
|
+
| MemberLeadSessionLogSummary
|
|
1516
|
+
| MemberSessionLogSummary;
|
|
1517
|
+
|
|
1518
|
+
export interface FileLineStats {
|
|
1519
|
+
added: number;
|
|
1520
|
+
removed: number;
|
|
1521
|
+
}
|
|
1522
|
+
|
|
1523
|
+
export interface MemberFullStats {
|
|
1524
|
+
linesAdded: number;
|
|
1525
|
+
linesRemoved: number;
|
|
1526
|
+
filesTouched: string[];
|
|
1527
|
+
fileStats: Record<string, FileLineStats>;
|
|
1528
|
+
toolUsage: Record<string, number>;
|
|
1529
|
+
inputTokens: number;
|
|
1530
|
+
outputTokens: number;
|
|
1531
|
+
cacheReadTokens: number;
|
|
1532
|
+
costUsd: number;
|
|
1533
|
+
tasksCompleted: number;
|
|
1534
|
+
messageCount: number;
|
|
1535
|
+
totalDurationMs: number;
|
|
1536
|
+
sessionCount: number;
|
|
1537
|
+
computedAt: string;
|
|
1538
|
+
}
|
|
1539
|
+
|
|
1540
|
+
export interface AddMemberRequest {
|
|
1541
|
+
name: string;
|
|
1542
|
+
role?: string;
|
|
1543
|
+
workflow?: string;
|
|
1544
|
+
isolation?: 'worktree';
|
|
1545
|
+
providerId?: TeamProviderId;
|
|
1546
|
+
model?: string;
|
|
1547
|
+
effort?: EffortLevel;
|
|
1548
|
+
}
|
|
1549
|
+
|
|
1550
|
+
export interface RemoveMemberRequest {
|
|
1551
|
+
name: string;
|
|
1552
|
+
}
|
|
1553
|
+
|
|
1554
|
+
export interface UpdateMemberRoleRequest {
|
|
1555
|
+
name: string;
|
|
1556
|
+
role: string | undefined;
|
|
1557
|
+
}
|
|
1558
|
+
|
|
1559
|
+
export interface ReplaceMembersRequest {
|
|
1560
|
+
members: TeamProvisioningMemberInput[];
|
|
1561
|
+
}
|
|
1562
|
+
|
|
1563
|
+
/** Data sent from renderer to main for native OS team message notification. */
|
|
1564
|
+
export interface TeamMessageNotificationData {
|
|
1565
|
+
teamDisplayName: string;
|
|
1566
|
+
/** Team directory name (for notification storage and deep-linking). */
|
|
1567
|
+
teamName?: string;
|
|
1568
|
+
/** Who sent the message. */
|
|
1569
|
+
from: string;
|
|
1570
|
+
/** Who received the message (member name or "user"). */
|
|
1571
|
+
to?: string;
|
|
1572
|
+
/** Short summary shown in subtitle. */
|
|
1573
|
+
summary?: string;
|
|
1574
|
+
/** Full message body — displayed as notification body (truncated to 300 chars). */
|
|
1575
|
+
body: string;
|
|
1576
|
+
/** Optional sender color for visual context. */
|
|
1577
|
+
color?: string;
|
|
1578
|
+
/** Team event sub-type for notification categorization. */
|
|
1579
|
+
teamEventType?:
|
|
1580
|
+
| 'task_clarification'
|
|
1581
|
+
| 'task_status_change'
|
|
1582
|
+
| 'task_comment'
|
|
1583
|
+
| 'task_created'
|
|
1584
|
+
| 'all_tasks_completed';
|
|
1585
|
+
/** Stable key for storage deduplication. Required — no fallback to Date.now(). */
|
|
1586
|
+
dedupeKey?: string;
|
|
1587
|
+
/**
|
|
1588
|
+
* When true, the notification is stored in-app but no native OS toast is shown.
|
|
1589
|
+
* Used when per-type toggle is off — storage is unconditional,
|
|
1590
|
+
* but the user opted out of OS interruptions for this event type.
|
|
1591
|
+
*/
|
|
1592
|
+
suppressToast?: boolean;
|
|
1593
|
+
}
|
|
1594
|
+
|
|
1595
|
+
// =============================================================================
|
|
1596
|
+
// Cross-Team Communication
|
|
1597
|
+
// =============================================================================
|
|
1598
|
+
|
|
1599
|
+
export interface CrossTeamMessage {
|
|
1600
|
+
messageId: string;
|
|
1601
|
+
fromTeam: string;
|
|
1602
|
+
fromMember: string;
|
|
1603
|
+
toTeam: string;
|
|
1604
|
+
conversationId?: string;
|
|
1605
|
+
replyToConversationId?: string;
|
|
1606
|
+
text: string;
|
|
1607
|
+
taskRefs?: TaskRef[];
|
|
1608
|
+
summary?: string;
|
|
1609
|
+
chainDepth: number;
|
|
1610
|
+
timestamp: string;
|
|
1611
|
+
}
|
|
1612
|
+
|
|
1613
|
+
export interface CrossTeamSendRequest {
|
|
1614
|
+
fromTeam: string;
|
|
1615
|
+
fromMember: string;
|
|
1616
|
+
toTeam: string;
|
|
1617
|
+
timestamp?: string;
|
|
1618
|
+
messageId?: string;
|
|
1619
|
+
conversationId?: string;
|
|
1620
|
+
replyToConversationId?: string;
|
|
1621
|
+
text: string;
|
|
1622
|
+
taskRefs?: TaskRef[];
|
|
1623
|
+
actionMode?: AgentActionMode;
|
|
1624
|
+
summary?: string;
|
|
1625
|
+
chainDepth?: number;
|
|
1626
|
+
}
|
|
1627
|
+
|
|
1628
|
+
export interface CrossTeamSendResult {
|
|
1629
|
+
messageId: string;
|
|
1630
|
+
deliveredToInbox: boolean;
|
|
1631
|
+
deduplicated?: boolean;
|
|
1632
|
+
}
|
|
1633
|
+
|
|
1634
|
+
// =============================================================================
|
|
1635
|
+
// Tool Approval (control_request / control_response protocol)
|
|
1636
|
+
// =============================================================================
|
|
1637
|
+
|
|
1638
|
+
/** A pending tool approval request from the CLI control_request protocol. */
|
|
1639
|
+
export interface ToolApprovalRequest {
|
|
1640
|
+
requestId: string;
|
|
1641
|
+
/** Run ID — prevents stale approvals after stop→launch race. */
|
|
1642
|
+
runId: string;
|
|
1643
|
+
teamName: string;
|
|
1644
|
+
/** Which process sent this (e.g. 'lead'). */
|
|
1645
|
+
source: string;
|
|
1646
|
+
/** Tool name: 'Bash', 'Edit', 'Write', 'Read', etc. */
|
|
1647
|
+
toolName: string;
|
|
1648
|
+
/** Tool input parameters (e.g. { command: "ls" } for Bash). */
|
|
1649
|
+
toolInput: Record<string, unknown>;
|
|
1650
|
+
/** ISO timestamp when the request was received. */
|
|
1651
|
+
receivedAt: string;
|
|
1652
|
+
/** Team color name (from config or create request) for badge rendering. */
|
|
1653
|
+
teamColor?: string;
|
|
1654
|
+
/** Team display name (from config or create request). */
|
|
1655
|
+
teamDisplayName?: string;
|
|
1656
|
+
/** Permission suggestions from teammate runtime (only for teammate permission_request).
|
|
1657
|
+
* FACT: Populated by Claude Code runtime, contains instructions to add permission rules.
|
|
1658
|
+
*/
|
|
1659
|
+
permissionSuggestions?: {
|
|
1660
|
+
type: string;
|
|
1661
|
+
rules?: { toolName: string }[];
|
|
1662
|
+
behavior?: string;
|
|
1663
|
+
destination?: string;
|
|
1664
|
+
}[];
|
|
1665
|
+
}
|
|
1666
|
+
|
|
1667
|
+
/** Dismissal event — process died, all pending approvals for this team+run should be removed. */
|
|
1668
|
+
export interface ToolApprovalDismiss {
|
|
1669
|
+
dismissed: true;
|
|
1670
|
+
teamName: string;
|
|
1671
|
+
/** Only dismiss approvals from this specific run. */
|
|
1672
|
+
runId: string;
|
|
1673
|
+
}
|
|
1674
|
+
|
|
1675
|
+
// ---------------------------------------------------------------------------
|
|
1676
|
+
// Tool Approval Settings
|
|
1677
|
+
// ---------------------------------------------------------------------------
|
|
1678
|
+
|
|
1679
|
+
/** Timeout behavior for unanswered tool approval requests. */
|
|
1680
|
+
export type ToolApprovalTimeoutAction = 'allow' | 'deny' | 'wait';
|
|
1681
|
+
|
|
1682
|
+
/** User-configurable auto-allow settings for tool approval. */
|
|
1683
|
+
export interface ToolApprovalSettings {
|
|
1684
|
+
/** Auto-allow ALL tools (overrides individual settings below). */
|
|
1685
|
+
autoAllowAll: boolean;
|
|
1686
|
+
/** Auto-allow file edit tools (Edit, Write, NotebookEdit). */
|
|
1687
|
+
autoAllowFileEdits: boolean;
|
|
1688
|
+
/** Auto-allow safe bash commands (git, pnpm, npm, ls, cat, echo, etc.). */
|
|
1689
|
+
autoAllowSafeBash: boolean;
|
|
1690
|
+
/** Timeout behavior when user doesn't respond. */
|
|
1691
|
+
timeoutAction: ToolApprovalTimeoutAction;
|
|
1692
|
+
/** Timeout seconds (used when timeoutAction !== 'wait'). */
|
|
1693
|
+
timeoutSeconds: number;
|
|
1694
|
+
}
|
|
1695
|
+
|
|
1696
|
+
export const DEFAULT_TOOL_APPROVAL_SETTINGS: ToolApprovalSettings = {
|
|
1697
|
+
autoAllowAll: false,
|
|
1698
|
+
autoAllowFileEdits: false,
|
|
1699
|
+
autoAllowSafeBash: false,
|
|
1700
|
+
timeoutAction: 'wait',
|
|
1701
|
+
timeoutSeconds: 30,
|
|
1702
|
+
};
|
|
1703
|
+
|
|
1704
|
+
/** Event pushed when a pending approval was auto-resolved (timeout or auto-allow). */
|
|
1705
|
+
export interface ToolApprovalAutoResolved {
|
|
1706
|
+
autoResolved: true;
|
|
1707
|
+
requestId: string;
|
|
1708
|
+
runId: string;
|
|
1709
|
+
teamName: string;
|
|
1710
|
+
reason: 'auto_allow_category' | 'timeout_allow' | 'timeout_deny';
|
|
1711
|
+
}
|
|
1712
|
+
|
|
1713
|
+
/** Union of approval events pushed from main to renderer. */
|
|
1714
|
+
export type ToolApprovalEvent =
|
|
1715
|
+
| ToolApprovalRequest
|
|
1716
|
+
| ToolApprovalDismiss
|
|
1717
|
+
| ToolApprovalAutoResolved;
|
|
1718
|
+
|
|
1719
|
+
/** Result of reading a file for tool approval diff preview. */
|
|
1720
|
+
export interface ToolApprovalFileContent {
|
|
1721
|
+
content: string;
|
|
1722
|
+
exists: boolean;
|
|
1723
|
+
truncated: boolean;
|
|
1724
|
+
isBinary: boolean;
|
|
1725
|
+
error?: string;
|
|
1726
|
+
}
|