agent-tower 0.7.2 → 0.7.4-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/executors/__tests__/providers.test.js +53 -0
- package/dist/executors/__tests__/providers.test.js.map +1 -1
- package/dist/executors/providers.d.ts +2 -0
- package/dist/executors/providers.d.ts.map +1 -1
- package/dist/executors/providers.js +3 -2
- package/dist/executors/providers.js.map +1 -1
- package/dist/git/base-branch.d.ts +3 -0
- package/dist/git/base-branch.d.ts.map +1 -0
- package/dist/git/base-branch.js +17 -0
- package/dist/git/base-branch.js.map +1 -0
- package/dist/git/worktree.manager.d.ts +2 -0
- package/dist/git/worktree.manager.d.ts.map +1 -1
- package/dist/git/worktree.manager.js +29 -8
- package/dist/git/worktree.manager.js.map +1 -1
- package/dist/git/worktree.manager.test.js +38 -0
- package/dist/git/worktree.manager.test.js.map +1 -1
- package/dist/mcp/http-client.d.ts +4 -6
- package/dist/mcp/http-client.d.ts.map +1 -1
- package/dist/mcp/http-client.js +6 -0
- package/dist/mcp/http-client.js.map +1 -1
- package/dist/mcp/tools/__tests__/providers.test.d.ts +2 -0
- package/dist/mcp/tools/__tests__/providers.test.d.ts.map +1 -0
- package/dist/mcp/tools/__tests__/providers.test.js +22 -0
- package/dist/mcp/tools/__tests__/providers.test.js.map +1 -0
- package/dist/mcp/tools/__tests__/tasks.test.d.ts +2 -0
- package/dist/mcp/tools/__tests__/tasks.test.d.ts.map +1 -0
- package/dist/mcp/tools/__tests__/tasks.test.js +49 -0
- package/dist/mcp/tools/__tests__/tasks.test.js.map +1 -0
- package/dist/mcp/tools/providers.d.ts.map +1 -1
- package/dist/mcp/tools/providers.js +3 -2
- package/dist/mcp/tools/providers.js.map +1 -1
- package/dist/mcp/tools/tasks.d.ts.map +1 -1
- package/dist/mcp/tools/tasks.js +31 -2
- package/dist/mcp/tools/tasks.js.map +1 -1
- package/dist/mcp/types.d.ts +27 -0
- package/dist/mcp/types.d.ts.map +1 -1
- package/dist/mcp/types.js +13 -0
- package/dist/mcp/types.js.map +1 -1
- package/dist/output/__tests__/text-block-lifecycle.test.js +37 -0
- package/dist/output/__tests__/text-block-lifecycle.test.js.map +1 -1
- package/dist/output/text-block-tracker.d.ts.map +1 -1
- package/dist/output/text-block-tracker.js +24 -1
- package/dist/output/text-block-tracker.js.map +1 -1
- package/dist/prompts/task-handoff.d.ts +6 -0
- package/dist/prompts/task-handoff.d.ts.map +1 -0
- package/dist/prompts/task-handoff.js +17 -0
- package/dist/prompts/task-handoff.js.map +1 -0
- package/dist/prompts/task-handoff.test.d.ts +2 -0
- package/dist/prompts/task-handoff.test.d.ts.map +1 -0
- package/dist/prompts/task-handoff.test.js +27 -0
- package/dist/prompts/task-handoff.test.js.map +1 -0
- package/dist/prompts/workspace-background-service-policy.d.ts +6 -0
- package/dist/prompts/workspace-background-service-policy.d.ts.map +1 -1
- package/dist/prompts/workspace-background-service-policy.js +2 -1
- package/dist/prompts/workspace-background-service-policy.js.map +1 -1
- package/dist/routes/__tests__/providers.test.js +67 -0
- package/dist/routes/__tests__/providers.test.js.map +1 -1
- package/dist/routes/__tests__/task-handoff.test.d.ts +2 -0
- package/dist/routes/__tests__/task-handoff.test.d.ts.map +1 -0
- package/dist/routes/__tests__/task-handoff.test.js +185 -0
- package/dist/routes/__tests__/task-handoff.test.js.map +1 -0
- package/dist/routes/__tests__/tasks.test.js +46 -0
- package/dist/routes/__tests__/tasks.test.js.map +1 -1
- package/dist/routes/providers.d.ts.map +1 -1
- package/dist/routes/providers.js +8 -0
- package/dist/routes/providers.js.map +1 -1
- package/dist/routes/tasks.d.ts.map +1 -1
- package/dist/routes/tasks.js +60 -2
- package/dist/routes/tasks.js.map +1 -1
- package/dist/runtime/acp/history-reconciler.js +1 -1
- package/dist/runtime/acp/history-reconciler.js.map +1 -1
- package/dist/services/__tests__/session-manager.lifecycle.test.js +171 -1
- package/dist/services/__tests__/session-manager.lifecycle.test.js.map +1 -1
- package/dist/services/__tests__/task.service.test.js +142 -76
- package/dist/services/__tests__/task.service.test.js.map +1 -1
- package/dist/services/__tests__/translation-protection.test.js +48 -18
- package/dist/services/__tests__/translation-protection.test.js.map +1 -1
- package/dist/services/__tests__/translation-session-blocks.test.js +66 -2
- package/dist/services/__tests__/translation-session-blocks.test.js.map +1 -1
- package/dist/services/__tests__/workspace-background-service.service.test.js +74 -26
- package/dist/services/__tests__/workspace-background-service.service.test.js.map +1 -1
- package/dist/services/__tests__/workspace.service.test.js +70 -0
- package/dist/services/__tests__/workspace.service.test.js.map +1 -1
- package/dist/services/message-delivery.service.d.ts +4 -1
- package/dist/services/message-delivery.service.d.ts.map +1 -1
- package/dist/services/project.service.d.ts +3 -0
- package/dist/services/project.service.d.ts.map +1 -1
- package/dist/services/provider-config.service.d.ts.map +1 -1
- package/dist/services/provider-config.service.js +1 -0
- package/dist/services/provider-config.service.js.map +1 -1
- package/dist/services/session-manager.d.ts +15 -5
- package/dist/services/session-manager.d.ts.map +1 -1
- package/dist/services/session-manager.js +19 -3
- package/dist/services/session-manager.js.map +1 -1
- package/dist/services/task-cleanup.service.d.ts +2 -0
- package/dist/services/task-cleanup.service.d.ts.map +1 -1
- package/dist/services/task-cleanup.service.js +2 -2
- package/dist/services/task-cleanup.service.js.map +1 -1
- package/dist/services/task-handoff.service.d.ts +18 -0
- package/dist/services/task-handoff.service.d.ts.map +1 -0
- package/dist/services/task-handoff.service.js +87 -0
- package/dist/services/task-handoff.service.js.map +1 -0
- package/dist/services/task.service.d.ts +45 -18
- package/dist/services/task.service.d.ts.map +1 -1
- package/dist/services/task.service.js +215 -160
- package/dist/services/task.service.js.map +1 -1
- package/dist/services/team-run.service.d.ts +3 -0
- package/dist/services/team-run.service.d.ts.map +1 -1
- package/dist/services/team-task-input.service.d.ts +3 -0
- package/dist/services/team-task-input.service.d.ts.map +1 -1
- package/dist/services/translation-protection.d.ts +3 -1
- package/dist/services/translation-protection.d.ts.map +1 -1
- package/dist/services/translation-protection.js +21 -67
- package/dist/services/translation-protection.js.map +1 -1
- package/dist/services/translation-settings.service.d.ts +4 -4
- package/dist/services/translation.service.d.ts.map +1 -1
- package/dist/services/translation.service.js +44 -20
- package/dist/services/translation.service.js.map +1 -1
- package/dist/services/workspace-background-service.service.d.ts +1 -3
- package/dist/services/workspace-background-service.service.d.ts.map +1 -1
- package/dist/services/workspace-background-service.service.js +17 -65
- package/dist/services/workspace-background-service.service.js.map +1 -1
- package/dist/services/workspace.service.d.ts +21 -6
- package/dist/services/workspace.service.d.ts.map +1 -1
- package/dist/services/workspace.service.js +56 -11
- package/dist/services/workspace.service.js.map +1 -1
- package/dist/web/assets/AgentDemoPage-JXetlNBf.js +1 -0
- package/dist/web/assets/{AgentEnvironmentSettingsPage-GHjKIWpb.js → AgentEnvironmentSettingsPage-CdYyUCwJ.js} +1 -1
- package/dist/web/assets/AttachmentPreview-DMS-PM-1.js +2 -0
- package/dist/web/assets/BranchSelect-BAq4L2ZS.js +1 -0
- package/dist/web/assets/BrandLogo--kWXXJtZ.js +1 -0
- package/dist/web/assets/ConversationPage-CvC4RyB5.js +1 -0
- package/dist/web/assets/CreateTaskInput-DjVxCAfc.js +1 -0
- package/dist/web/assets/{DemoPage-DK-ikg1_.js → DemoPage-cDVTGOp8.js} +3 -3
- package/dist/web/assets/DesignSystemPage-BI54IkKi.js +12 -0
- package/dist/web/assets/{ExecutionPermissionSelector-B8befbxJ.js → ExecutionPermissionSelector-f1UYIm1z.js} +1 -1
- package/dist/web/assets/GeneralSettingsPage-C0yto6C_.js +1 -0
- package/dist/web/assets/{LoadingPreviewPage-BDlf89rJ.js → LoadingPreviewPage-BiJSaHUi.js} +1 -1
- package/dist/web/assets/McpSettingsPage-BbHwZtyj.js +1 -0
- package/dist/web/assets/{MemberAvatar-YVr_erAr.js → MemberAvatar-BLezO3vS.js} +1 -1
- package/dist/web/assets/MobileTaskDetail-M_Kke9rL.js +3 -0
- package/dist/web/assets/NotificationSettingsPage-CiKoL2Kv.js +1 -0
- package/dist/web/assets/{ProfileSettingsPage-CHe4LlRp.js → ProfileSettingsPage-DCB48cPS.js} +2 -2
- package/dist/web/assets/ProjectKanbanPage-soDqevjQ.js +12 -0
- package/dist/web/assets/ProjectSettingsPage-COvIVq1h.js +2 -0
- package/dist/web/assets/ProviderSettingsPage-CPuJcZDg.js +67 -0
- package/dist/web/assets/{SettingsMasterDetail-DjWR9Sqk.js → SettingsMasterDetail-Cv7YaRJB.js} +1 -1
- package/dist/web/assets/TaskDetail-CqhPxvg3.js +1 -0
- package/dist/web/assets/TaskHandoffPanel-CxH3Mgyd.js +70 -0
- package/dist/web/assets/TeamSettingsPage-D-XDefNd.js +1 -0
- package/dist/web/assets/{TranslationSettingsPage-Cod9c4Ug.js → TranslationSettingsPage-BPHI-SZW.js} +1 -1
- package/dist/web/assets/{arc-DEy33vTc.js → arc-CC81aLuf.js} +1 -1
- package/dist/web/assets/{architectureDiagram-3BPJPVTR-Ky1D1LBk.js → architectureDiagram-3BPJPVTR-DL08XGaN.js} +1 -1
- package/dist/web/assets/{at-sign-C48_y345.js → at-sign-DYPIlD6D.js} +1 -1
- package/dist/web/assets/{blockDiagram-GPEHLZMM-BNgB7kNT.js → blockDiagram-GPEHLZMM-B4IW5WxI.js} +1 -1
- package/dist/web/assets/{c4Diagram-AAUBKEIU-4GMrPMgQ.js → c4Diagram-AAUBKEIU-Cj4d_FqK.js} +1 -1
- package/dist/web/assets/channel-CUa8oyzC.js +1 -0
- package/dist/web/assets/check-DaZqOL8l.js +1 -0
- package/dist/web/assets/{chevron-down-3y5Aiolp.js → chevron-down-DNhYsNAt.js} +1 -1
- package/dist/web/assets/{chevron-up-DqaYcjpq.js → chevron-up-CjrLieBR.js} +1 -1
- package/dist/web/assets/chip-Cf92J-pQ.js +1 -0
- package/dist/web/assets/{chunk-2J33WTMH-C439hRe_.js → chunk-2J33WTMH-DeCj8QSD.js} +1 -1
- package/dist/web/assets/{chunk-4BX2VUAB-D8GK3M3t.js → chunk-4BX2VUAB-k-6rzQmQ.js} +1 -1
- package/dist/web/assets/{chunk-55IACEB6-Dl4UhJ8X.js → chunk-55IACEB6-qMTCQ5bX.js} +1 -1
- package/dist/web/assets/{chunk-727SXJPM-BSEeayBq.js → chunk-727SXJPM-CMnu18d1.js} +1 -1
- package/dist/web/assets/{chunk-AQP2D5EJ-B6chbZfT.js → chunk-AQP2D5EJ-C0mFbUMn.js} +1 -1
- package/dist/web/assets/{chunk-FMBD7UC4-DaLkiLdQ.js → chunk-FMBD7UC4-u6-_M137.js} +1 -1
- package/dist/web/assets/{chunk-ND2GUHAM-DeQwZAAT.js → chunk-ND2GUHAM-DHrIE_8H.js} +1 -1
- package/dist/web/assets/{chunk-QZHKN3VN-CLRr4YRM.js → chunk-QZHKN3VN-aTyC0wZq.js} +1 -1
- package/dist/web/assets/classDiagram-4FO5ZUOK-BAx111NO.js +1 -0
- package/dist/web/assets/classDiagram-v2-Q7XG4LA2-BAx111NO.js +1 -0
- package/dist/web/assets/{code-block-OCS4YCEC-CnoxUpOx.js → code-block-OCS4YCEC-CBIOQOMH.js} +1 -1
- package/dist/web/assets/confirm-dialog-DWeBZLJW.js +1 -0
- package/dist/web/assets/content-JM9E1MeD.js +2 -0
- package/dist/web/assets/{copy-HRMhTkIG.js → copy-D0gl9kF8.js} +1 -1
- package/dist/web/assets/{cose-bilkent-S5V4N54A-C1UiYzfk.js → cose-bilkent-S5V4N54A-xLyliSgU.js} +1 -1
- package/dist/web/assets/cssMode-DO5UnQ64.js +1 -0
- package/dist/web/assets/{dagre-BM42HDAG-CTJpBgye.js → dagre-BM42HDAG-CbNpoO2d.js} +1 -1
- package/dist/web/assets/{diagram-2AECGRRQ-Dj1_TEYp.js → diagram-2AECGRRQ-CG3hKxAX.js} +1 -1
- package/dist/web/assets/{diagram-5GNKFQAL-V-KUpwqh.js → diagram-5GNKFQAL-mQu9M28s.js} +1 -1
- package/dist/web/assets/{diagram-KO2AKTUF-CXG1ZIeX.js → diagram-KO2AKTUF-BSeEp_Uw.js} +1 -1
- package/dist/web/assets/{diagram-LMA3HP47-BZSJUwk9.js → diagram-LMA3HP47-D6yRdao-.js} +1 -1
- package/dist/web/assets/{diagram-OG6HWLK6-CCr4gq4u.js → diagram-OG6HWLK6-BUBUW9wD.js} +1 -1
- package/dist/web/assets/dialog-D1lkhqVL.js +5 -0
- package/dist/web/assets/{erDiagram-TEJ5UH35-Djtyzh6z.js → erDiagram-TEJ5UH35-BQSZgRqq.js} +1 -1
- package/dist/web/assets/file-BijjwxRR.js +1 -0
- package/dist/web/assets/{flowDiagram-I6XJVG4X-BmSVSiXJ.js → flowDiagram-I6XJVG4X-D-eqyr5Y.js} +1 -1
- package/dist/web/assets/folder-picker-Czxm0_S9.js +1 -0
- package/dist/web/assets/{freemarker2-DdptX5f1.js → freemarker2-B4RvEa_U.js} +2 -2
- package/dist/web/assets/{ganttDiagram-6RSMTGT7-r5vQX-b5.js → ganttDiagram-6RSMTGT7-BWGkCt_x.js} +1 -1
- package/dist/web/assets/{gitGraphDiagram-PVQCEYII-Zj9aloh9.js → gitGraphDiagram-PVQCEYII-DGVc49pR.js} +1 -1
- package/dist/web/assets/{globe-B9I-jHBB.js → globe-Ce01-45x.js} +1 -1
- package/dist/web/assets/handlebars-oyT7drqS.js +1 -0
- package/dist/web/assets/html-CxxWf2Qk.js +1 -0
- package/dist/web/assets/htmlMode-RfAHh5Jj.js +1 -0
- package/dist/web/assets/index-BMZFF1UJ.js +1 -0
- package/dist/web/assets/index-BN53vGxp.css +1 -0
- package/dist/web/assets/index-Cc3qXMhU.js +122 -0
- package/dist/web/assets/{index-Bhvt-E6d.js → index-DWrSDMX2.js} +2 -2
- package/dist/web/assets/{index-DkRy6eNX.js → index-Dh-tgeaL.js} +4 -4
- package/dist/web/assets/{index-B1oVmCie.js → index-Disv1kQS.js} +1 -1
- package/dist/web/assets/{index-DcOU2m2F.js → index-DyJfPc4O.js} +1 -1
- package/dist/web/assets/{index-Dk3bRQAK.js → index-Pt4TsHjm.js} +1 -1
- package/dist/web/assets/{index-CThFsQNP.js → index-T38iVLEb.js} +1 -1
- package/dist/web/assets/{index-BtUQYU5l.js → index-hpHE1jXY.js} +1 -1
- package/dist/web/assets/{infoDiagram-5YYISTIA-BHtVaxZx.js → infoDiagram-5YYISTIA-DLPs3dV_.js} +1 -1
- package/dist/web/assets/{ishikawaDiagram-YF4QCWOH-BYmwjkbC.js → ishikawaDiagram-YF4QCWOH-d_OrnwDY.js} +1 -1
- package/dist/web/assets/javascript-BNXtViSL.js +1 -0
- package/dist/web/assets/{journeyDiagram-JHISSGLW-c8BBqqRS.js → journeyDiagram-JHISSGLW-EtU1st_0.js} +1 -1
- package/dist/web/assets/jsonMode-Bqh5vIxx.js +7 -0
- package/dist/web/assets/{kanban-definition-UN3LZRKU-D4Vr-oFT.js → kanban-definition-UN3LZRKU-ZWzUnsFK.js} +1 -1
- package/dist/web/assets/{kbd-C88ut3t9.js → kbd-IjDGsZ2B.js} +1 -1
- package/dist/web/assets/{key-round-Cjbj2qNa.js → key-round-CbnAuUxp.js} +1 -1
- package/dist/web/assets/{layers-eaHAVcc3.js → layers-Pdy9vZ6K.js} +1 -1
- package/dist/web/assets/{linear-opi90s0L.js → linear-D7n23wcA.js} +1 -1
- package/dist/web/assets/{link-BSGb85gq.js → link-Bl1ZbjFh.js} +1 -1
- package/dist/web/assets/liquid-Ds47iVLN.js +1 -0
- package/dist/web/assets/{lspLanguageFeatures-DWu2Ubf0.js → lspLanguageFeatures-Dcch3bsp.js} +1 -1
- package/dist/web/assets/mdx-CM7ky-2B.js +1 -0
- package/dist/web/assets/{menu--sjyisSg.js → menu-DubntFHq.js} +1 -1
- package/dist/web/assets/{mermaid-NOHMQCX5-BSNbBj78.js → mermaid-NOHMQCX5-nBsnjgeU.js} +54 -54
- package/dist/web/assets/{message-square-BLEJN6p7.js → message-square-BE-pW0m_.js} +1 -1
- package/dist/web/assets/{mindmap-definition-RKZ34NQL-BN3ZjBh-.js → mindmap-definition-RKZ34NQL-ClHORNTt.js} +1 -1
- package/dist/web/assets/modal-CHLtZWvx.js +1 -0
- package/dist/web/assets/{monaco-BkuNyOkP.js → monaco-BbAmalE2.js} +3 -3
- package/dist/web/assets/nav-row-DH7rNq1V.js +1 -0
- package/dist/web/assets/{paperclip-CTNoXpUW.js → paperclip-YP3Bk1lI.js} +1 -1
- package/dist/web/assets/{pencil-Cp70ZwtG.js → pencil-BFDuhbtW.js} +1 -1
- package/dist/web/assets/{people-DT78SebR.js → people-DEeNaaLt.js} +1 -1
- package/dist/web/assets/{pieDiagram-4H26LBE5-CfmFHpPI.js → pieDiagram-4H26LBE5-BUOaKIyP.js} +1 -1
- package/dist/web/assets/popover-CUmBEXxL.js +1 -0
- package/dist/web/assets/provider-selection-DSu7SCI7.js +1 -0
- package/dist/web/assets/python-BODTtU6m.js +1 -0
- package/dist/web/assets/{quadrantDiagram-W4KKPZXB-CeaumJAa.js → quadrantDiagram-W4KKPZXB-Caezg-U2.js} +1 -1
- package/dist/web/assets/razor-CHm8DY1p.js +1 -0
- package/dist/web/assets/{requirementDiagram-4Y6WPE33-BWWCDXCE.js → requirementDiagram-4Y6WPE33-BtdP3Ka6.js} +1 -1
- package/dist/web/assets/{sankeyDiagram-5OEKKPKP-DAJut743.js → sankeyDiagram-5OEKKPKP-Bv74oA-n.js} +1 -1
- package/dist/web/assets/{search-DniD_AGC.js → search-ClmOQd4H.js} +1 -1
- package/dist/web/assets/{select-BPdJrr5M.js → select-BB7QG08o.js} +1 -1
- package/dist/web/assets/{select-B5RYunTs.js → select-CYtYPr-c.js} +1 -1
- package/dist/web/assets/{sequenceDiagram-3UESZ5HK-CynjRGW4.js → sequenceDiagram-3UESZ5HK-DuNPl-dg.js} +1 -1
- package/dist/web/assets/{server-xswxWpKD.js → server-bEB_DY55.js} +1 -1
- package/dist/web/assets/{stateDiagram-AJRCARHV-amAtpx9w.js → stateDiagram-AJRCARHV-B72HAgBJ.js} +1 -1
- package/dist/web/assets/stateDiagram-v2-BHNVJYJU-Bu3l_CgB.js +1 -0
- package/dist/web/assets/{textarea-BVyPl9rM.js → textarea-BqYPvoO-.js} +1 -1
- package/dist/web/assets/{timeline-definition-PNZ67QCA-DZ9W7WlP.js → timeline-definition-PNZ67QCA-DTmHUgmQ.js} +1 -1
- package/dist/web/assets/{toggles-QcIz43DP.js → toggles-a5fkwT_D.js} +1 -1
- package/dist/web/assets/tooltip-DuyJMci9.js +1 -0
- package/dist/web/assets/{track-Ckye0-tt.js → track-DCjyrv3n.js} +1 -1
- package/dist/web/assets/{trash-2-CvUJsbtT.js → trash-2-CIyBqaVy.js} +1 -1
- package/dist/web/assets/tsMode-C1UXAkMh.js +11 -0
- package/dist/web/assets/typescript-Biht2wHb.js +1 -0
- package/dist/web/assets/{upload-CsXAmAun.js → upload-D05XS5-G.js} +1 -1
- package/dist/web/assets/use-profiles-CrWTyz1G.js +1 -0
- package/dist/web/assets/{use-providers-Td1-gyrN.js → use-providers-Dv1Nk6s7.js} +1 -1
- package/dist/web/assets/{use-translation-settings-NYM0lmBx.js → use-translation-settings-CcUnipVO.js} +1 -1
- package/dist/web/assets/useNormalizedLogs-D9W1cT4R.js +1 -0
- package/dist/web/assets/useTokenUsage-CZ5mDshD.js +1 -0
- package/dist/web/assets/{vennDiagram-CIIHVFJN-CB2Ubvy9.js → vennDiagram-CIIHVFJN-ByoNydXe.js} +1 -1
- package/dist/web/assets/{wardley-L42UT6IY-BXOkk77I.js → wardley-L42UT6IY-BqdMkOLl.js} +1 -1
- package/dist/web/assets/{wardleyDiagram-YWT4CUSO-VA6ywdQQ.js → wardleyDiagram-YWT4CUSO-AO22HrEF.js} +1 -1
- package/dist/web/assets/xml-NLGqNFDv.js +1 -0
- package/dist/web/assets/{xychartDiagram-2RQKCTM6-FNcvDj5G.js → xychartDiagram-2RQKCTM6-vzPgjgqW.js} +1 -1
- package/dist/web/assets/yaml-AWlGS_Ig.js +1 -0
- package/dist/web/index.html +2 -2
- package/node_modules/@agent-tower/shared/dist/index.d.ts +1 -0
- package/node_modules/@agent-tower/shared/dist/index.d.ts.map +1 -1
- package/node_modules/@agent-tower/shared/dist/index.js +1 -0
- package/node_modules/@agent-tower/shared/dist/index.js.map +1 -1
- package/node_modules/@agent-tower/shared/dist/task-handoff.d.ts +12 -0
- package/node_modules/@agent-tower/shared/dist/task-handoff.d.ts.map +1 -0
- package/node_modules/@agent-tower/shared/dist/task-handoff.js +2 -0
- package/node_modules/@agent-tower/shared/dist/task-handoff.js.map +1 -0
- package/node_modules/@agent-tower/shared/dist/translation.d.ts +12 -0
- package/node_modules/@agent-tower/shared/dist/translation.d.ts.map +1 -1
- package/node_modules/@agent-tower/shared/dist/translation.js +19 -0
- package/node_modules/@agent-tower/shared/dist/translation.js.map +1 -1
- package/node_modules/@agent-tower/shared/dist/types.d.ts +28 -1
- package/node_modules/@agent-tower/shared/dist/types.d.ts.map +1 -1
- package/node_modules/@agent-tower/shared/dist/types.js.map +1 -1
- package/package.json +1 -1
- package/prisma/migrations/20261023000000_add_task_base_branch/migration.sql +2 -0
- package/prisma/migrations/20261023010000_add_subtasks/migration.sql +2 -0
- package/prisma/migrations/20261026000000_add_task_handoff/migration.sql +1 -0
- package/prisma/schema.prisma +6 -0
- package/dist/web/assets/AgentDemoPage-BfXkNCdN.js +0 -1
- package/dist/web/assets/AttachmentPreview-CLN1lnLe.js +0 -2
- package/dist/web/assets/BranchSelect-Cofp8vYf.js +0 -1
- package/dist/web/assets/BrandLogo-BUimEX-9.js +0 -1
- package/dist/web/assets/ConversationPage-R7vNaOQv.js +0 -1
- package/dist/web/assets/CreateTaskInput-CasITF8y.js +0 -1
- package/dist/web/assets/DesignSystemPage-BhjNs2vP.js +0 -12
- package/dist/web/assets/EditableTaskTitle-BJ9Rxggf.js +0 -70
- package/dist/web/assets/GeneralSettingsPage-RMN2al8I.js +0 -1
- package/dist/web/assets/McpSettingsPage-CPNxFF67.js +0 -1
- package/dist/web/assets/MobileTaskDetail-QNUHMq7u.js +0 -3
- package/dist/web/assets/NotificationSettingsPage-BEyuyu3Z.js +0 -1
- package/dist/web/assets/ProjectKanbanPage-Bt_01giW.js +0 -12
- package/dist/web/assets/ProjectSettingsPage-cus6Ns97.js +0 -2
- package/dist/web/assets/ProviderSettingsPage-DqA_B1Ey.js +0 -67
- package/dist/web/assets/TaskDetail-rEXNe2h3.js +0 -1
- package/dist/web/assets/TeamSettingsPage-DwWROtW6.js +0 -1
- package/dist/web/assets/channel-DTP-syjA.js +0 -1
- package/dist/web/assets/check-BmiJ7qMY.js +0 -1
- package/dist/web/assets/classDiagram-4FO5ZUOK-CUKgurLa.js +0 -1
- package/dist/web/assets/classDiagram-v2-Q7XG4LA2-CUKgurLa.js +0 -1
- package/dist/web/assets/confirm-dialog-ltNBFYCs.js +0 -1
- package/dist/web/assets/content-DPQMfMae.js +0 -2
- package/dist/web/assets/cssMode-DkuSsGeg.js +0 -1
- package/dist/web/assets/dialog-CuFEdqLg.js +0 -5
- package/dist/web/assets/handlebars-B34f-LAf.js +0 -1
- package/dist/web/assets/hooks-BLxb16IA.js +0 -1
- package/dist/web/assets/html-CnvOQ63o.js +0 -1
- package/dist/web/assets/htmlMode-RdxZ8Svp.js +0 -1
- package/dist/web/assets/icon-button-CYiKa-7C.js +0 -1
- package/dist/web/assets/index-0XPZayUU.css +0 -1
- package/dist/web/assets/index-BJObbxud.js +0 -122
- package/dist/web/assets/index-DZLnTISJ.js +0 -1
- package/dist/web/assets/javascript-BhombDEO.js +0 -1
- package/dist/web/assets/jsonMode-BJGOUeaV.js +0 -7
- package/dist/web/assets/liquid-Czy1WpPz.js +0 -1
- package/dist/web/assets/mdx-DhXfoSnM.js +0 -1
- package/dist/web/assets/modal-CSGOqphK.js +0 -1
- package/dist/web/assets/popover-BiVxGGgp.js +0 -1
- package/dist/web/assets/python-DIcQDjcf.js +0 -1
- package/dist/web/assets/razor-DYK6Rxer.js +0 -1
- package/dist/web/assets/search-field-CQLDXLeA.js +0 -1
- package/dist/web/assets/stateDiagram-v2-BHNVJYJU-V-lSceg1.js +0 -1
- package/dist/web/assets/tooltip-CPqGK_WZ.js +0 -1
- package/dist/web/assets/tsMode-c5x0d47n.js +0 -11
- package/dist/web/assets/typescript-i7eYblLt.js +0 -1
- package/dist/web/assets/use-profiles-DuXaBRju.js +0 -1
- package/dist/web/assets/use-projects-Ddz0knyr.js +0 -1
- package/dist/web/assets/use-workspaces-CdJZLmGh.js +0 -1
- package/dist/web/assets/useNormalizedLogs--RbVywYa.js +0 -1
- package/dist/web/assets/useTokenUsage-DDXf7E4p.js +0 -1
- package/dist/web/assets/xml-D2EGActB.js +0 -1
- package/dist/web/assets/yaml-jeiIZSL4.js +0 -1
- /package/dist/web/assets/{EditableTaskTitle-DcpNTP1B.css → TaskHandoffPanel-DcpNTP1B.css} +0 -0
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { TASK_HANDOFF_MAX_LENGTH } from '@agent-tower/shared';
|
|
2
|
+
import { NotFoundError, ServiceError } from '../errors.js';
|
|
3
|
+
import { prisma } from '../utils/index.js';
|
|
4
|
+
import { ensureProjectIsMutable } from './project-guards.js';
|
|
5
|
+
export class TaskHandoffService {
|
|
6
|
+
eventBus;
|
|
7
|
+
constructor(eventBus) {
|
|
8
|
+
this.eventBus = eventBus;
|
|
9
|
+
}
|
|
10
|
+
async authorize(taskId, caller) {
|
|
11
|
+
if (caller.kind !== 'agent')
|
|
12
|
+
return;
|
|
13
|
+
const session = await prisma.session.findUnique({
|
|
14
|
+
where: { id: caller.sessionId },
|
|
15
|
+
select: { context: true, purpose: true, workspace: { select: { id: true, taskId: true } } },
|
|
16
|
+
});
|
|
17
|
+
if (session?.context !== 'WORKSPACE' || session.purpose !== 'CHAT' || session.workspace?.taskId !== taskId) {
|
|
18
|
+
throw new ServiceError('This Agent cannot access the task handoff.', 'HANDOFF_ACCESS_DENIED', 403);
|
|
19
|
+
}
|
|
20
|
+
const invocation = await prisma.agentInvocation.findFirst({
|
|
21
|
+
where: { sessionId: caller.sessionId },
|
|
22
|
+
});
|
|
23
|
+
if (!invocation && !caller.invocationId)
|
|
24
|
+
return;
|
|
25
|
+
if (!invocation || invocation.id !== caller.invocationId || invocation.workspaceId !== session.workspace.id || invocation.dispatchRevokedAt) {
|
|
26
|
+
throw new ServiceError('The Agent invocation is no longer authorized.', 'HANDOFF_ACCESS_DENIED', 403);
|
|
27
|
+
}
|
|
28
|
+
const [member, teamRun] = await Promise.all([
|
|
29
|
+
prisma.teamMember.findUnique({ where: { id: invocation.memberId } }),
|
|
30
|
+
prisma.teamRun.findUnique({ where: { id: invocation.teamRunId }, select: { taskId: true } }),
|
|
31
|
+
]);
|
|
32
|
+
if (!member || member.membershipStatus === 'REMOVED' || member.teamRunId !== invocation.teamRunId || teamRun?.taskId !== taskId) {
|
|
33
|
+
throw new ServiceError('The Agent is not an active member of this task.', 'HANDOFF_ACCESS_DENIED', 403);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
async requireTask(taskId, caller) {
|
|
37
|
+
await this.authorize(taskId, caller);
|
|
38
|
+
const task = await prisma.task.findFirst({
|
|
39
|
+
where: { id: taskId, deletedAt: null },
|
|
40
|
+
select: { id: true, handoff: true, projectId: true, status: true, project: { select: { name: true, archivedAt: true, repoDeletedAt: true } } },
|
|
41
|
+
});
|
|
42
|
+
if (!task)
|
|
43
|
+
throw new NotFoundError('Task', taskId);
|
|
44
|
+
return task;
|
|
45
|
+
}
|
|
46
|
+
async get(taskId, caller) {
|
|
47
|
+
const task = await this.requireTask(taskId, caller);
|
|
48
|
+
return { taskId, content: task.handoff ?? '' };
|
|
49
|
+
}
|
|
50
|
+
async update(taskId, input, caller) {
|
|
51
|
+
const task = await this.requireTask(taskId, caller);
|
|
52
|
+
ensureProjectIsMutable(task.project, 'edit the task handoff');
|
|
53
|
+
const current = task.handoff ?? '';
|
|
54
|
+
const { oldString, newString } = input;
|
|
55
|
+
let content;
|
|
56
|
+
if (oldString === '') {
|
|
57
|
+
if (current !== '') {
|
|
58
|
+
throw new ServiceError('The handoff is not empty. Read it and provide the exact text to replace.', 'HANDOFF_NOT_EMPTY', 409);
|
|
59
|
+
}
|
|
60
|
+
content = newString;
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
const index = current.indexOf(oldString);
|
|
64
|
+
if (index < 0) {
|
|
65
|
+
throw new ServiceError('The text to replace was not found. Read the latest handoff and try again.', 'HANDOFF_TEXT_NOT_FOUND', 409);
|
|
66
|
+
}
|
|
67
|
+
if (current.indexOf(oldString, index + 1) >= 0) {
|
|
68
|
+
throw new ServiceError('The text matches more than once. Include more surrounding context.', 'HANDOFF_TEXT_AMBIGUOUS', 409);
|
|
69
|
+
}
|
|
70
|
+
// Slice instead of String.replace so $&, $1, and other replacement patterns stay literal.
|
|
71
|
+
content = current.slice(0, index) + newString + current.slice(index + oldString.length);
|
|
72
|
+
}
|
|
73
|
+
if (content.length > TASK_HANDOFF_MAX_LENGTH) {
|
|
74
|
+
throw new ServiceError(`Keep the handoff within ${TASK_HANDOFF_MAX_LENGTH} characters.`, 'HANDOFF_TOO_LARGE', 400);
|
|
75
|
+
}
|
|
76
|
+
const updated = await prisma.task.updateMany({
|
|
77
|
+
where: { id: taskId, deletedAt: null, handoff: task.handoff, project: { archivedAt: null } },
|
|
78
|
+
data: { handoff: content },
|
|
79
|
+
});
|
|
80
|
+
if (updated.count !== 1) {
|
|
81
|
+
throw new ServiceError('The task or handoff changed while saving. Read it again before editing.', 'HANDOFF_CHANGED', 409);
|
|
82
|
+
}
|
|
83
|
+
this.eventBus.emit('task:updated', { taskId, projectId: task.projectId, status: task.status });
|
|
84
|
+
return { taskId, content };
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=task-handoff.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-handoff.service.js","sourceRoot":"","sources":["../../src/services/task-handoff.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,12 +4,7 @@ import type { EventBus } from '../core/event-bus.js';
|
|
|
4
4
|
import type { SessionManager } from './session-manager.js';
|
|
5
5
|
import type { TaskCleanupService } from './task-cleanup.service.js';
|
|
6
6
|
import type { WorkspaceBackgroundService } from './workspace-background-service.service.js';
|
|
7
|
-
import type { TaskBoardResponse } from '@agent-tower/shared';
|
|
8
|
-
interface CreateTaskInput {
|
|
9
|
-
title: string;
|
|
10
|
-
description?: string;
|
|
11
|
-
priority?: number;
|
|
12
|
-
}
|
|
7
|
+
import type { CreateTaskInput, TaskBoardResponse } from '@agent-tower/shared';
|
|
13
8
|
interface UpdateTaskInput {
|
|
14
9
|
title?: string;
|
|
15
10
|
description?: string;
|
|
@@ -17,6 +12,7 @@ interface UpdateTaskInput {
|
|
|
17
12
|
}
|
|
18
13
|
interface FindTasksParams {
|
|
19
14
|
projectId?: string;
|
|
15
|
+
parentTaskId?: string;
|
|
20
16
|
status?: TaskStatus;
|
|
21
17
|
page?: number;
|
|
22
18
|
limit?: number;
|
|
@@ -39,7 +35,7 @@ export declare class TaskService {
|
|
|
39
35
|
* 获取项目的任务列表(支持按状态过滤和分页)
|
|
40
36
|
*/
|
|
41
37
|
findByProjectId(projectId: string, params?: FindTasksParams): Promise<{
|
|
42
|
-
data: (Omit<{
|
|
38
|
+
data: (Omit<Omit<{
|
|
43
39
|
id: string;
|
|
44
40
|
createdAt: Date;
|
|
45
41
|
status: string;
|
|
@@ -65,8 +61,10 @@ export declare class TaskService {
|
|
|
65
61
|
updatedAt: Date;
|
|
66
62
|
};
|
|
67
63
|
title: string;
|
|
64
|
+
baseBranch: string | null;
|
|
68
65
|
position: number;
|
|
69
66
|
projectId: string;
|
|
67
|
+
parentTaskId: string | null;
|
|
70
68
|
workspaces: ({
|
|
71
69
|
sessions: {
|
|
72
70
|
agentType: string;
|
|
@@ -87,19 +85,19 @@ export declare class TaskService {
|
|
|
87
85
|
status: string;
|
|
88
86
|
updatedAt: Date;
|
|
89
87
|
taskId: string;
|
|
88
|
+
baseBranch: string | null;
|
|
90
89
|
branchName: string;
|
|
91
90
|
creationSubmissionId: string | null;
|
|
92
91
|
creationFingerprint: string | null;
|
|
93
92
|
parentWorkspaceId: string | null;
|
|
94
93
|
ownerMemberId: string | null;
|
|
95
|
-
baseBranch: string | null;
|
|
96
94
|
worktreePath: string;
|
|
97
95
|
workspaceKind: string;
|
|
98
96
|
commitMessage: string | null;
|
|
99
97
|
previewTarget: string | null;
|
|
100
98
|
hibernatedAt: Date | null;
|
|
101
99
|
})[];
|
|
102
|
-
}, "project"> & {
|
|
100
|
+
}, "project" | "handoff"> & {
|
|
103
101
|
project: {
|
|
104
102
|
name: string;
|
|
105
103
|
id: string;
|
|
@@ -119,7 +117,7 @@ export declare class TaskService {
|
|
|
119
117
|
quickCommands: string | null;
|
|
120
118
|
updatedAt: Date;
|
|
121
119
|
} & import("@agent-tower/shared").ProjectGitCapability;
|
|
122
|
-
} & {
|
|
120
|
+
}, "handoff"> & {
|
|
123
121
|
title: string;
|
|
124
122
|
titlePreview: string;
|
|
125
123
|
contentPreview: string | undefined;
|
|
@@ -133,7 +131,8 @@ export declare class TaskService {
|
|
|
133
131
|
/**
|
|
134
132
|
* 获取任务详情
|
|
135
133
|
*/
|
|
136
|
-
findById(id: string): Promise<Omit<{
|
|
134
|
+
findById(id: string): Promise<Omit<Omit<{
|
|
135
|
+
subtaskCount: number;
|
|
137
136
|
id: string;
|
|
138
137
|
createdAt: Date;
|
|
139
138
|
status: string;
|
|
@@ -159,8 +158,10 @@ export declare class TaskService {
|
|
|
159
158
|
updatedAt: Date;
|
|
160
159
|
};
|
|
161
160
|
title: string;
|
|
161
|
+
baseBranch: string | null;
|
|
162
162
|
position: number;
|
|
163
163
|
projectId: string;
|
|
164
|
+
parentTaskId: string | null;
|
|
164
165
|
workspaces: ({
|
|
165
166
|
sessions: {
|
|
166
167
|
agentType: string;
|
|
@@ -181,19 +182,19 @@ export declare class TaskService {
|
|
|
181
182
|
status: string;
|
|
182
183
|
updatedAt: Date;
|
|
183
184
|
taskId: string;
|
|
185
|
+
baseBranch: string | null;
|
|
184
186
|
branchName: string;
|
|
185
187
|
creationSubmissionId: string | null;
|
|
186
188
|
creationFingerprint: string | null;
|
|
187
189
|
parentWorkspaceId: string | null;
|
|
188
190
|
ownerMemberId: string | null;
|
|
189
|
-
baseBranch: string | null;
|
|
190
191
|
worktreePath: string;
|
|
191
192
|
workspaceKind: string;
|
|
192
193
|
commitMessage: string | null;
|
|
193
194
|
previewTarget: string | null;
|
|
194
195
|
hibernatedAt: Date | null;
|
|
195
196
|
})[];
|
|
196
|
-
}, "project"> & {
|
|
197
|
+
}, "project" | "handoff"> & {
|
|
197
198
|
project: {
|
|
198
199
|
name: string;
|
|
199
200
|
id: string;
|
|
@@ -213,12 +214,13 @@ export declare class TaskService {
|
|
|
213
214
|
quickCommands: string | null;
|
|
214
215
|
updatedAt: Date;
|
|
215
216
|
} & import("@agent-tower/shared").ProjectGitCapability;
|
|
216
|
-
} & {
|
|
217
|
+
}, "handoff"> & {
|
|
217
218
|
title: string;
|
|
218
219
|
titlePreview: string;
|
|
219
220
|
contentPreview: string | undefined;
|
|
220
221
|
isTruncated: boolean;
|
|
221
222
|
}>;
|
|
223
|
+
findSubtasks(id: string, params?: FindTasksParams): Promise<TaskBoardResponse>;
|
|
222
224
|
findBodyById(id: string): Promise<{
|
|
223
225
|
taskId: string;
|
|
224
226
|
title: string;
|
|
@@ -262,8 +264,11 @@ export declare class TaskService {
|
|
|
262
264
|
updatedAt: Date;
|
|
263
265
|
title: string;
|
|
264
266
|
deletedAt: Date | null;
|
|
267
|
+
handoff: string | null;
|
|
268
|
+
baseBranch: string | null;
|
|
265
269
|
position: number;
|
|
266
270
|
projectId: string;
|
|
271
|
+
parentTaskId: string | null;
|
|
267
272
|
}>;
|
|
268
273
|
/**
|
|
269
274
|
* 更新任务基本信息
|
|
@@ -297,8 +302,10 @@ export declare class TaskService {
|
|
|
297
302
|
updatedAt: Date;
|
|
298
303
|
title: string;
|
|
299
304
|
deletedAt: Date | null;
|
|
305
|
+
baseBranch: string | null;
|
|
300
306
|
position: number;
|
|
301
307
|
projectId: string;
|
|
308
|
+
parentTaskId: string | null;
|
|
302
309
|
}>;
|
|
303
310
|
/**
|
|
304
311
|
* 更新任务状态(含状态流转校验)
|
|
@@ -333,9 +340,12 @@ export declare class TaskService {
|
|
|
333
340
|
updatedAt: Date;
|
|
334
341
|
title: string;
|
|
335
342
|
deletedAt: Date | null;
|
|
343
|
+
handoff: string | null;
|
|
344
|
+
baseBranch: string | null;
|
|
336
345
|
position: number;
|
|
337
346
|
projectId: string;
|
|
338
|
-
|
|
347
|
+
parentTaskId: string | null;
|
|
348
|
+
}, "project" | "handoff"> & {
|
|
339
349
|
project: {
|
|
340
350
|
name: string;
|
|
341
351
|
id: string;
|
|
@@ -389,18 +399,32 @@ export declare class TaskService {
|
|
|
389
399
|
updatedAt: Date;
|
|
390
400
|
title: string;
|
|
391
401
|
deletedAt: Date | null;
|
|
402
|
+
baseBranch: string | null;
|
|
392
403
|
position: number;
|
|
393
404
|
projectId: string;
|
|
405
|
+
parentTaskId: string | null;
|
|
394
406
|
}>;
|
|
395
407
|
/**
|
|
396
408
|
* 快速删除任务
|
|
397
409
|
*
|
|
398
|
-
* 1.
|
|
399
|
-
* 2.
|
|
410
|
+
* 1. 在同一事务中标记父子 Task 为 deletedAt,并保存清理快照
|
|
411
|
+
* 2. 普通读取立即隐藏已删除的任务
|
|
400
412
|
* 3. 通过 EventBus 通知前端实时删除
|
|
401
413
|
* 4. 后台 worker 再停止 Session、删除 worktree/branch,并最终硬删除 Task
|
|
402
414
|
*/
|
|
403
|
-
delete(id: string): Promise<boolean>;
|
|
415
|
+
delete(id: string, expectedSubtaskCount?: number): Promise<boolean>;
|
|
416
|
+
getCleanupStatus(taskId: string): Promise<{
|
|
417
|
+
status: string;
|
|
418
|
+
lastError: string | null;
|
|
419
|
+
nextRetryAt: Date | null;
|
|
420
|
+
taskId: string;
|
|
421
|
+
}>;
|
|
422
|
+
retryCleanup(taskId: string): Promise<{
|
|
423
|
+
status: string;
|
|
424
|
+
lastError: string | null;
|
|
425
|
+
nextRetryAt: Date | null;
|
|
426
|
+
taskId: string;
|
|
427
|
+
}>;
|
|
404
428
|
/**
|
|
405
429
|
* 获取项目的任务统计
|
|
406
430
|
*/
|
|
@@ -452,8 +476,11 @@ export declare class TaskService {
|
|
|
452
476
|
updatedAt: Date;
|
|
453
477
|
title: string;
|
|
454
478
|
deletedAt: Date | null;
|
|
479
|
+
handoff: string | null;
|
|
480
|
+
baseBranch: string | null;
|
|
455
481
|
position: number;
|
|
456
482
|
projectId: string;
|
|
483
|
+
parentTaskId: string | null;
|
|
457
484
|
}>;
|
|
458
485
|
/**
|
|
459
486
|
* 发射 task:updated 事件,通知 SocketGateway 转发到前端
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task.service.d.ts","sourceRoot":"","sources":["../../src/services/task.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAE5D,OAAO,EAAE,UAAU,EAAiE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"task.service.d.ts","sourceRoot":"","sources":["../../src/services/task.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAE5D,OAAO,EAAE,UAAU,EAAiE,MAAM,mBAAmB,CAAC;AAQ9G,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,kBAAkB,EAAuB,MAAM,2BAA2B,CAAC;AACzF,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,2CAA2C,CAAC;AAK5F,OAAO,KAAK,EAAE,eAAe,EAAiB,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAc7F,UAAU,eAAe;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,eAAe;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAeD,eAAO,MAAM,qBAAqB,MAAM,CAAC;AACzC,eAAO,MAAM,8BAA8B,MAAM,CAAC;AAClD,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAC3C,eAAO,MAAM,oCAAoC,MAAiC,CAAC;AA0UnF,qBAAa,WAAW;IAEpB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC;gBAHlB,QAAQ,EAAE,QAAQ,EAClB,cAAc,EAAE,cAAc,EAC9B,cAAc,GAAE,IAAI,CAAC,kBAAkB,EAAE,SAAS,CAAC,GAAG,SAAqB,EAC3E,iBAAiB,CAAC,EAAE,IAAI,CAAC,0BAA0B,EAAE,qBAAqB,CAAC,YAAA;IAG9F;;OAEG;IACG,SAAS,CAAC,MAAM,GAAE,eAAoB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAuKzE;;OAEG;IACG,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,GAAE,eAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA4ErE;;OAEG;IACG,QAAQ,CAAC,EAAE,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA4BnB,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,GAAE,eAAoB;IAMrD,YAAY,CAAC,EAAE,EAAE,MAAM;;;;;;;;;IAyC7B;;;;OAIG;IACG,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAmFtD;;OAEG;IACG,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA6B/C;;;OAGG;IACG,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAiDjD;;;OAGG;IACG,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAsCtE;;;;;;;OAOG;IACG,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,oBAAoB,CAAC,EAAE,MAAM;IAmFhD,gBAAgB,CAAC,MAAM,EAAE,MAAM;;;;;;IAS/B,YAAY,CAAC,MAAM,EAAE,MAAM;;;;;;IAcjC;;OAEG;IACG,mBAAmB,CAAC,SAAS,EAAE,MAAM;;;;;;;;IAgD3C;;;;;;;OAOG;IACG,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,GAAE;QAAE,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAAC,iBAAiB,CAAC,EAAE,MAAM,CAAA;KAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAqDlG;;OAEG;IACH,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;CAQ5F"}
|