@oneuptime/common 11.5.8 → 11.5.9
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/Models/DatabaseModels/AIAgentTaskPullRequest.ts +15 -6
- package/Models/DatabaseModels/AIRun.ts +37 -0
- package/Models/DatabaseModels/AIRunEvent.ts +34 -1
- package/Models/DatabaseModels/NetworkDeviceDiscoveryScan.ts +215 -0
- package/Models/DatabaseModels/Project.ts +25 -0
- package/Models/DatabaseModels/StatusPage.ts +42 -0
- package/Server/API/AIAgentTaskAPI.ts +38 -12
- package/Server/API/AIAgentTaskLogAPI.ts +49 -0
- package/Server/API/AIChatAPI.ts +16 -0
- package/Server/API/AIReadinessAPI.ts +84 -0
- package/Server/API/CodeFixRunAPI.ts +182 -0
- package/Server/API/TelemetryExceptionAPI.ts +6 -1
- package/Server/Infrastructure/Postgres/SchemaMigrations/1784124919694-AddAITaskNumberAndRunTranscript.ts +95 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1784135099754-AllowNullAiAgentOnPullRequest.ts +52 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1784137457184-AddEnableMcpServerToStatusPage.ts +30 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1784200000000-AddSnmpV3ColumnsToNetworkDeviceDiscoveryScan.ts +49 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +8 -0
- package/Server/Services/AIRunEventService.ts +15 -1
- package/Server/Services/AIRunService.ts +38 -1
- package/Server/Services/LlmProviderService.ts +2 -0
- package/Server/Services/ProjectService.ts +42 -0
- package/Server/Services/StatusPageService.ts +87 -0
- package/Server/Services/TelemetryExceptionService.ts +19 -90
- package/Server/Types/Markdown.ts +9 -9
- package/Server/Types/MarkdownSlugify.ts +47 -0
- package/Server/Utils/AI/AIRunTranscript.ts +240 -0
- package/Server/Utils/AI/Chat/ChatAgentRunner.ts +9 -0
- package/Server/Utils/AI/Chat/ObservabilityChatPrompt.ts +119 -5
- package/Server/Utils/AI/CodeFix/CodeFixAgentCompletion.ts +75 -0
- package/Server/Utils/AI/CodeFix/CodeFixReadiness.ts +235 -0
- package/Server/Utils/AI/SRE/Insights/FixRouting.ts +2 -3
- package/Server/Utils/AI/Toolbox/CodeTools.ts +883 -0
- package/Server/Utils/AI/Toolbox/CodeWriteTools.ts +519 -0
- package/Server/Utils/AI/Toolbox/Index.ts +27 -0
- package/Server/Utils/AI/Toolbox/ScheduledMaintenanceTools.ts +279 -0
- package/Server/Utils/AnalyticsDatabase/ClickhouseCapacity.ts +19 -1
- package/Server/Utils/CodeRepository/GitHub/GitHub.ts +600 -0
- package/Server/Utils/CodeRepository/StackTraceRepoResolver.ts +7 -2
- package/Server/Utils/LLM/LLMService.ts +397 -18
- package/Server/Utils/Monitor/NetworkDeviceHydrationUtil.ts +4 -11
- package/Tests/Models/StatusPageEnableMcpServer.test.ts +125 -0
- package/Tests/Server/Services/StatusPageServiceMcp.test.ts +223 -0
- package/Tests/Server/Services/TelemetryExceptionAIFixReadiness.test.ts +26 -3
- package/Tests/Server/Services/TelemetryExceptionCodeFixRun.test.ts +12 -0
- package/Tests/Server/Types/Markdown.test.ts +106 -0
- package/Tests/Server/Utils/AI/AIRunTranscript.test.ts +182 -0
- package/Tests/Server/Utils/AI/CodeFixReadiness.test.ts +411 -0
- package/Tests/Server/Utils/AI/CodeTools.test.ts +596 -0
- package/Tests/Server/Utils/AI/CodeWriteTools.test.ts +475 -0
- package/Tests/Server/Utils/AI/LLMServiceModelCompatibility.test.ts +548 -0
- package/Tests/Server/Utils/AI/ObservabilityChatPrompt.test.ts +142 -0
- package/Tests/Server/Utils/AI/ScheduledMaintenanceTools.test.ts +176 -0
- package/Tests/Server/Utils/AnalyticsDatabase/ClickhouseCapacity.test.ts +63 -0
- package/Tests/Server/Utils/GitHubGetFileContent.test.ts +197 -0
- package/Tests/Server/Utils/Monitor/NetworkDeviceHydrationUtil.test.ts +502 -0
- package/Tests/Types/AI/AIAgentTaskStatus.test.ts +7 -6
- package/Tests/Types/AI/AIChatPageContext.test.ts +0 -0
- package/Tests/Types/AI/AIRunStatus.test.ts +42 -0
- package/Tests/Types/Log/LogSeverity.test.ts +78 -0
- package/Tests/UI/Components/BasicFormDropdownNormalization.test.tsx +167 -0
- package/Tests/UI/Components/Charts/AxisTickColor.test.tsx +66 -0
- package/Tests/UI/Utils/AIChatExport/ChatWidgetData.test.ts +319 -0
- package/Tests/UI/Utils/AIChatExport/ChatWidgetMarkdown.test.ts +188 -0
- package/Types/AI/AIAgentTaskStatus.ts +13 -0
- package/Types/AI/AIChatPageContext.ts +137 -0
- package/Types/AI/AIChatTypes.ts +44 -0
- package/Types/AI/AIFixReadiness.ts +46 -0
- package/Types/AI/AIRunStatus.ts +11 -0
- package/Types/Log/LogSeverity.ts +61 -0
- package/Types/Monitor/SnmpMonitor/SnmpVersion.ts +40 -0
- package/UI/Components/Charts/ChartLibrary/AreaChart/AreaChart.tsx +8 -2
- package/UI/Components/Charts/ChartLibrary/BarChart/BarChart.tsx +3 -1
- package/UI/Components/Charts/ChartLibrary/LineChart/LineChart.tsx +8 -2
- package/UI/Components/Forms/BasicForm.tsx +26 -8
- package/UI/Styles/Theme.css +1314 -0
- package/UI/Utils/AIChatExport/ChatWidgetData.ts +316 -0
- package/UI/Utils/AIChatExport/ChatWidgetMarkdown.ts +349 -0
- package/UI/Utils/AIChatExport/ConversationMarkdown.ts +177 -0
- package/UI/Utils/AIChatExport/MarkdownBlocks.ts +327 -0
- package/UI/Utils/AIChatExport/MarkdownSafety.ts +215 -0
- package/UI/Utils/DownloadFile.ts +54 -0
- package/build/dist/Models/DatabaseModels/AIAgentTaskPullRequest.js +15 -7
- package/build/dist/Models/DatabaseModels/AIAgentTaskPullRequest.js.map +1 -1
- package/build/dist/Models/DatabaseModels/AIRun.js +38 -0
- package/build/dist/Models/DatabaseModels/AIRun.js.map +1 -1
- package/build/dist/Models/DatabaseModels/AIRunEvent.js +31 -0
- package/build/dist/Models/DatabaseModels/AIRunEvent.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkDeviceDiscoveryScan.js +225 -0
- package/build/dist/Models/DatabaseModels/NetworkDeviceDiscoveryScan.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Project.js +27 -0
- package/build/dist/Models/DatabaseModels/Project.js.map +1 -1
- package/build/dist/Models/DatabaseModels/StatusPage.js +43 -0
- package/build/dist/Models/DatabaseModels/StatusPage.js.map +1 -1
- package/build/dist/Server/API/AIAgentTaskAPI.js +37 -11
- package/build/dist/Server/API/AIAgentTaskAPI.js.map +1 -1
- package/build/dist/Server/API/AIAgentTaskLogAPI.js +32 -7
- package/build/dist/Server/API/AIAgentTaskLogAPI.js.map +1 -1
- package/build/dist/Server/API/AIChatAPI.js +9 -0
- package/build/dist/Server/API/AIChatAPI.js.map +1 -1
- package/build/dist/Server/API/AIReadinessAPI.js +57 -0
- package/build/dist/Server/API/AIReadinessAPI.js.map +1 -0
- package/build/dist/Server/API/CodeFixRunAPI.js +142 -0
- package/build/dist/Server/API/CodeFixRunAPI.js.map +1 -1
- package/build/dist/Server/API/TelemetryExceptionAPI.js +4 -0
- package/build/dist/Server/API/TelemetryExceptionAPI.js.map +1 -1
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784124919694-AddAITaskNumberAndRunTranscript.js +80 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784124919694-AddAITaskNumberAndRunTranscript.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784135099754-AllowNullAiAgentOnPullRequest.js +37 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784135099754-AllowNullAiAgentOnPullRequest.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784137457184-AddEnableMcpServerToStatusPage.js +23 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784137457184-AddEnableMcpServerToStatusPage.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784200000000-AddSnmpV3ColumnsToNetworkDeviceDiscoveryScan.js +22 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784200000000-AddSnmpV3ColumnsToNetworkDeviceDiscoveryScan.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +8 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
- package/build/dist/Server/Services/AIRunEventService.js +8 -0
- package/build/dist/Server/Services/AIRunEventService.js.map +1 -1
- package/build/dist/Server/Services/AIRunService.js +29 -0
- package/build/dist/Server/Services/AIRunService.js.map +1 -1
- package/build/dist/Server/Services/LlmProviderService.js +2 -0
- package/build/dist/Server/Services/LlmProviderService.js.map +1 -1
- package/build/dist/Server/Services/ProjectService.js +39 -0
- package/build/dist/Server/Services/ProjectService.js.map +1 -1
- package/build/dist/Server/Services/StatusPageService.js +81 -0
- package/build/dist/Server/Services/StatusPageService.js.map +1 -1
- package/build/dist/Server/Services/TelemetryExceptionService.js +14 -61
- package/build/dist/Server/Services/TelemetryExceptionService.js.map +1 -1
- package/build/dist/Server/Types/Markdown.js +8 -8
- package/build/dist/Server/Types/Markdown.js.map +1 -1
- package/build/dist/Server/Types/MarkdownSlugify.js +47 -0
- package/build/dist/Server/Types/MarkdownSlugify.js.map +1 -0
- package/build/dist/Server/Utils/AI/AIRunTranscript.js +180 -0
- package/build/dist/Server/Utils/AI/AIRunTranscript.js.map +1 -0
- package/build/dist/Server/Utils/AI/Chat/ChatAgentRunner.js +1 -0
- package/build/dist/Server/Utils/AI/Chat/ChatAgentRunner.js.map +1 -1
- package/build/dist/Server/Utils/AI/Chat/ObservabilityChatPrompt.js +103 -5
- package/build/dist/Server/Utils/AI/Chat/ObservabilityChatPrompt.js.map +1 -1
- package/build/dist/Server/Utils/AI/CodeFix/CodeFixAgentCompletion.js +55 -0
- package/build/dist/Server/Utils/AI/CodeFix/CodeFixAgentCompletion.js.map +1 -1
- package/build/dist/Server/Utils/AI/CodeFix/CodeFixReadiness.js +211 -0
- package/build/dist/Server/Utils/AI/CodeFix/CodeFixReadiness.js.map +1 -0
- package/build/dist/Server/Utils/AI/SRE/Insights/FixRouting.js.map +1 -1
- package/build/dist/Server/Utils/AI/Toolbox/CodeTools.js +654 -0
- package/build/dist/Server/Utils/AI/Toolbox/CodeTools.js.map +1 -0
- package/build/dist/Server/Utils/AI/Toolbox/CodeWriteTools.js +389 -0
- package/build/dist/Server/Utils/AI/Toolbox/CodeWriteTools.js.map +1 -0
- package/build/dist/Server/Utils/AI/Toolbox/Index.js +19 -0
- package/build/dist/Server/Utils/AI/Toolbox/Index.js.map +1 -1
- package/build/dist/Server/Utils/AI/Toolbox/ScheduledMaintenanceTools.js +239 -0
- package/build/dist/Server/Utils/AI/Toolbox/ScheduledMaintenanceTools.js.map +1 -0
- package/build/dist/Server/Utils/AnalyticsDatabase/ClickhouseCapacity.js +19 -1
- package/build/dist/Server/Utils/AnalyticsDatabase/ClickhouseCapacity.js.map +1 -1
- package/build/dist/Server/Utils/CodeRepository/GitHub/GitHub.js +439 -0
- package/build/dist/Server/Utils/CodeRepository/GitHub/GitHub.js.map +1 -1
- package/build/dist/Server/Utils/CodeRepository/StackTraceRepoResolver.js +1 -1
- package/build/dist/Server/Utils/CodeRepository/StackTraceRepoResolver.js.map +1 -1
- package/build/dist/Server/Utils/LLM/LLMService.js +275 -19
- package/build/dist/Server/Utils/LLM/LLMService.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/NetworkDeviceHydrationUtil.js +2 -11
- package/build/dist/Server/Utils/Monitor/NetworkDeviceHydrationUtil.js.map +1 -1
- package/build/dist/Types/AI/AIAgentTaskStatus.js +12 -0
- package/build/dist/Types/AI/AIAgentTaskStatus.js.map +1 -1
- package/build/dist/Types/AI/AIChatPageContext.js +101 -0
- package/build/dist/Types/AI/AIChatPageContext.js.map +1 -0
- package/build/dist/Types/AI/AIChatTypes.js +2 -0
- package/build/dist/Types/AI/AIChatTypes.js.map +1 -1
- package/build/dist/Types/AI/AIFixReadiness.js +9 -0
- package/build/dist/Types/AI/AIFixReadiness.js.map +1 -0
- package/build/dist/Types/AI/AIRunStatus.js +11 -0
- package/build/dist/Types/AI/AIRunStatus.js.map +1 -1
- package/build/dist/Types/Log/LogSeverity.js +56 -0
- package/build/dist/Types/Log/LogSeverity.js.map +1 -1
- package/build/dist/Types/Monitor/SnmpMonitor/SnmpVersion.js +38 -0
- package/build/dist/Types/Monitor/SnmpMonitor/SnmpVersion.js.map +1 -1
- package/build/dist/UI/Components/Charts/ChartLibrary/AreaChart/AreaChart.js +9 -2
- package/build/dist/UI/Components/Charts/ChartLibrary/AreaChart/AreaChart.js.map +1 -1
- package/build/dist/UI/Components/Charts/ChartLibrary/BarChart/BarChart.js +3 -1
- package/build/dist/UI/Components/Charts/ChartLibrary/BarChart/BarChart.js.map +1 -1
- package/build/dist/UI/Components/Charts/ChartLibrary/LineChart/LineChart.js +9 -2
- package/build/dist/UI/Components/Charts/ChartLibrary/LineChart/LineChart.js.map +1 -1
- package/build/dist/UI/Components/Forms/BasicForm.js +24 -6
- package/build/dist/UI/Components/Forms/BasicForm.js.map +1 -1
- package/build/dist/UI/Utils/AIChatExport/ChatWidgetData.js +217 -0
- package/build/dist/UI/Utils/AIChatExport/ChatWidgetData.js.map +1 -0
- package/build/dist/UI/Utils/AIChatExport/ChatWidgetMarkdown.js +234 -0
- package/build/dist/UI/Utils/AIChatExport/ChatWidgetMarkdown.js.map +1 -0
- package/build/dist/UI/Utils/AIChatExport/ConversationMarkdown.js +111 -0
- package/build/dist/UI/Utils/AIChatExport/ConversationMarkdown.js.map +1 -0
- package/build/dist/UI/Utils/AIChatExport/MarkdownBlocks.js +233 -0
- package/build/dist/UI/Utils/AIChatExport/MarkdownBlocks.js.map +1 -0
- package/build/dist/UI/Utils/AIChatExport/MarkdownSafety.js +134 -0
- package/build/dist/UI/Utils/AIChatExport/MarkdownSafety.js.map +1 -0
- package/build/dist/UI/Utils/DownloadFile.js +41 -0
- package/build/dist/UI/Utils/DownloadFile.js.map +1 -0
- package/package.json +5 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CodeTools.js","sourceRoot":"","sources":["../../../../../../Server/Utils/AI/Toolbox/CodeTools.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,kDAAkD,CAAC;AAC9E,OAAO,kBAAkB,MAAM,sDAAsD,CAAC;AACtF,OAAO,kBAAkB,MAAM,qDAAqD,CAAC;AACrF,OAAO,gBAAgB,MAAM,8CAA8C,CAAC;AAE5E,OAAO,QAAQ,MAAM,4BAA4B,CAAC;AAElD,OAAO,SAAS,MAAM,qCAAqC,CAAC;AAC5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,qBAAqB,MAAM,yCAAyC,CAAC;AAC5E,OAAO,yBAAyB,MAAM,6CAA6C,CAAC;AACpF,OAAO,UAEN,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACL,sBAAsB,GAEvB,MAAM,6CAA6C,CAAC;AACrD,OAAO,MAAM,MAAM,cAAc,CAAC;AAClC,OAAO,gBAGN,MAAM,kCAAkC,CAAC;AAC1C,OAAO,oBAA0C,MAAM,cAAc,CAAC;AACtE,OAAO,EAEL,QAAQ,GAGT,MAAM,aAAa,CAAC;AAErB;;;;;;;;;GASG;AAEH;;;;;;;GAOG;AACH,IAAI,+BAA+B,GAA6B,IAAI,CAAC;AACrE,MAAM,gCAAgC,GACpC,GAAsB,EAAE;IACtB,IAAI,CAAC,+BAA+B,EAAE,CAAC;QACrC,+BAA+B;YAC7B,IAAI,cAAc,EAAE,CAAC,kBAAkB,EAAE,CAAC;IAC9C,CAAC;IACD,OAAO,+BAA+B,CAAC;AACzC,CAAC,CAAC;AAEJ;;;;;;;;GAQG;AACH,IAAI,8BAA8B,GAA6B,IAAI,CAAC;AACpE,MAAM,+BAA+B,GACnC,GAAsB,EAAE;IACtB,IAAI,CAAC,8BAA8B,EAAE,CAAC;QACpC,8BAA8B;YAC5B,IAAI,kBAAkB,EAAE,CAAC,kBAAkB,EAAE,CAAC;IAClD,CAAC;IACD,OAAO,8BAA8B,CAAC;AACxC,CAAC,CAAC;AAEJ;;;;;;;GAOG;AACH,MAAM,kBAAkB,GAAW,GAAG,CAAC;AACvC,MAAM,qBAAqB,GAAW,EAAE,CAAC;AACzC,MAAM,kBAAkB,GAAW,EAAE,CAAC;AAEtC;;;;;;GAMG;AACH,MAAM,sBAAsB,GAAW,EAAE,GAAG,IAAI,CAAC;AAEjD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,GAAgB,EAChB,gBAAuC;IAEvC,MAAM,KAAK,GAAe;QACxB,SAAS,EAAE,GAAG,CAAC,SAAS;KACzB,CAAC;IAEF,IAAI,gBAAgB,EAAE,CAAC;QACrB,KAAK,CAAC,KAAK,CAAC,GAAG,gBAAgB,CAAC,QAAQ,EAAE,CAAC;IAC7C,CAAC;IAED,MAAM,YAAY,GAChB,MAAM,qBAAqB,CAAC,MAAM,CAAC;QACjC,KAAK,EAAE,KAAc;QACrB,MAAM,EAAE;YACN,GAAG,EAAE,IAAI;YACT,IAAI,EAAE,IAAI;YACV,gBAAgB,EAAE,IAAI;YACtB,cAAc,EAAE,IAAI;YACpB,cAAc,EAAE,IAAI;YACpB,uBAAuB,EAAE,IAAI;YAC7B,kBAAkB,EAAE,IAAI;YACxB,WAAW,EAAE,IAAI;SAClB;QACD,KAAK,EAAE,SAAS;QAChB,IAAI,EAAE,CAAC;QACP,KAAK,EAAE,GAAG,CAAC,KAAK;KACjB,CAAC,CAAC;IAEL,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC,UAA0B,EAAE,EAAE;QACxD,OAAO,CACL,UAAU,CAAC,kBAAkB,KAAK,kBAAkB,CAAC,MAAM;YAC3D,OAAO,CAAC,UAAU,CAAC,uBAAuB,CAAC,CAC5C,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,GAAgB,EAChB,IAAgB;IAEhB,MAAM,WAAW,GAAyB,QAAQ,CAAC,WAAW,CAC5D,IAAI,EACJ,cAAc,CACf,CAAC;IAEF,MAAM,YAAY,GAA0B,MAAM,wBAAwB,CACxE,GAAG,EACH,WAAW,CACZ,CAAC;IAEF,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,IAAI,gBAAgB,CACxB,kCAAkC,WAAW,CAAC,QAAQ,EAAE,wFAAwF,CACjJ,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,gBAAgB,CACxB,qJAAqJ,CACtJ,CAAC;IACJ,CAAC;IAED,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAW,YAAY;aAC/B,GAAG,CAAC,CAAC,UAA0B,EAAE,EAAE;;YAClC,OAAO,GAAG,UAAU,CAAC,IAAI,kBAAkB,MAAA,UAAU,CAAC,EAAE,0CAAE,QAAQ,EAAE,GAAG,CAAC;QAC1E,CAAC,CAAC;aACD,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,MAAM,IAAI,gBAAgB,CACxB,sFAAsF,KAAK,GAAG,CAC/F,CAAC;IACJ,CAAC;IAED,OAAO,YAAY,CAAC,CAAC,CAAE,CAAC;AAC1B,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,wBAAwB,CAAC,SAA6B;IAI7D,MAAM,UAAU,GAAqB,oBAAoB,CAAC,aAAa,CAAC;QACtE;YACE,aAAa,EAAE,SAAS,CAAC,aAAa,IAAI,OAAO;YACjD,OAAO,EAAE,SAAS,CAAC,OAAO;YAC1B,WAAW,EAAE,SAAS,CAAC,cAAc;SACtC;KACF,CAAC,CAAC;IAEH,OAAO;QACL,IAAI,EAAE,cAAc,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE;QACxD,cAAc,EAAE,UAAU,CAAC,cAAc;KAC1C,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,yBAAyB,CACtC,GAAgB,EAChB,UAA0B;IAE1B,MAAM,YAAY,GAA0B,MAAM,wBAAwB,CACxE,GAAG,EACH,IAAI,QAAQ,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAC1C,CAAC;IAEF,MAAM,UAAU,GAA+B,YAAY,CAAC,CAAC,CAAC,CAAC;IAE/D,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,CAAC;QACH,OAAO,MAAM,UAAU,CAAC,sBAAsB,CAAC;YAC7C,cAAc,EAAE,UAAU,CAAC,uBAAwB;YACnD,gBAAgB,EAAE,UAAU,CAAC,gBAAiB;YAC9C,cAAc,EAAE,UAAU,CAAC,cAAe;YAC1C,UAAU,EAAE,UAAU,CAAC,cAAc,IAAI,MAAM;SAChD,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb;;;WAGG;QACH,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAClB,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAS,0BAA0B,CACjC,YAAoB,EACpB,SAAwB;IAExB,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,+EAA+E;IAC/E,MAAM,UAAU,GAAkB,sBAAsB,CAAC,YAAY,CAAC,CAAC;IAEvE,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,oCAAoC;IACpC,IAAI,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACnC,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;;;OAIG;IACH,MAAM,aAAa,GAAkB,SAAS,CAAC,MAAM,CAAC,CAAC,QAAgB,EAAE,EAAE;QACzE,OAAO,QAAQ,CAAC,QAAQ,CAAC,IAAI,UAAU,EAAE,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,aAAa,CAAC,CAAC,CAAE,CAAC;IAC3B,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,SAAS,cAAc,CAAC,OAAe;IACrC,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC;QACnB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,KAAK,GAAkB,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAEjD,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;QACnC,KAAK,CAAC,GAAG,EAAE,CAAC;IACd,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,SAAS,yBAAyB,CAChC,KAAoB,EACpB,SAAiB;IAEjB,MAAM,IAAI,GAAkB,EAAE,CAAC;IAC/B,yDAAyD;IACzD,MAAM,WAAW,GAAW,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IAC5E,IAAI,KAAK,GAAW,CAAC,CAAC;IAEtB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,SAAS,GAAW,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,WAAW,GAAG,CAAC,CAAC;QAE5E,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,GAAG,SAAS,GAAG,sBAAsB,EAAE,CAAC;YAClE,MAAM;QACR,CAAC;QAED,KAAK,IAAI,SAAS,CAAC;QACnB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,+EAA+E;AAC/E,SAAS,qBAAqB,CAAC,IAG9B;IACC,MAAM,KAAK,GAAW,MAAM,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;IAE5E,OAAO,IAAI,CAAC,KAAK;SACd,GAAG,CAAC,CAAC,IAAY,EAAE,KAAa,EAAE,EAAE;QACnC,MAAM,UAAU,GAAW,MAAM,CAAC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC,QAAQ,CAChE,KAAK,EACL,GAAG,CACJ,CAAC;QACF,OAAO,GAAG,UAAU,KAAK,IAAI,EAAE,CAAC;IAClC,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,MAAM,wBAAwB,GAAsB;IACzD,IAAI,EAAE,wBAAwB;IAC9B,WAAW,EACT,qOAAqO;IACvO,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE,EAAE;KACf;IACD,IAAI,mBAAmB;QACrB,OAAO,gCAAgC,EAAE,CAAC;IAC5C,CAAC;IACD,OAAO,EAAE,KAAK,EACZ,KAAiB,EACjB,GAAgB,EACc,EAAE;QAChC,MAAM,YAAY,GAChB,MAAM,wBAAwB,CAAC,GAAG,CAAC,CAAC;QAEtC,MAAM,IAAI,GAAsB,YAAY,CAAC,GAAG,CAC9C,CAAC,UAA0B,EAAE,EAAE;;YAC7B,OAAO;gBACL,YAAY,EAAE,MAAA,UAAU,CAAC,EAAE,0CAAE,QAAQ,EAAE;gBACvC,IAAI,EAAE,UAAU,CAAC,IAAI;gBACrB,UAAU,EAAE,GAAG,UAAU,CAAC,gBAAgB,IAAI,UAAU,CAAC,cAAc,EAAE;gBACzE,MAAM,EAAE,UAAU,CAAC,cAAc;gBACjC,WAAW,EAAE,UAAU,CAAC,WAAW;aACpC,CAAC;QACJ,CAAC,CACF,CAAC;QAEF,MAAM,UAAU,GACd,oBAAoB,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAE3C,OAAO;YACL,UAAU,EACR,IAAI,CAAC,MAAM,KAAK,CAAC;gBACf,CAAC,CAAC,sFAAsF;gBACxF,CAAC,CAAC,UAAU,CAAC,IAAI;YACrB,QAAQ,EAAE,UAAU,CAAC,QAAQ;YAC7B,aAAa,EAAE,gCAAgC,UAAU,CAAC,QAAQ,GAAG;YACrE,cAAc,EAAE,UAAU,CAAC,cAAc;YACzC,WAAW,EAAE,UAAU,CAAC,WAAW;SACpC,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAsB;IACzD,IAAI,EAAE,yBAAyB;IAC/B,WAAW,EACT,2TAA2T;IAC7T,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,WAAW,EACT,+DAA+D;aAClE;SACF;QACD,QAAQ,EAAE,CAAC,aAAa,CAAC;KAC1B;IACD,IAAI,mBAAmB;QACrB,OAAO;YACL,GAAG,+BAA+B,EAAE;YACpC,GAAG,gCAAgC,EAAE;SACtC,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,KAAK,EACZ,IAAgB,EAChB,GAAgB,EACc,EAAE;QAChC,MAAM,WAAW,GAAyB,QAAQ,CAAC,WAAW,CAC5D,IAAI,EACJ,aAAa,CACd,CAAC;QAEF,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,gBAAgB,CACxB,uDAAuD,CACxD,CAAC;QACJ,CAAC;QAED,wEAAwE;QACxE,MAAM,SAAS,GACb,MAAM,yBAAyB,CAAC,WAAW,CAAC;YAC1C,EAAE,EAAE,WAAW;YACf,MAAM,EAAE;gBACN,GAAG,EAAE,IAAI;gBACT,OAAO,EAAE,IAAI;gBACb,aAAa,EAAE,IAAI;gBACnB,UAAU,EAAE,IAAI;gBAChB,WAAW,EAAE,IAAI;gBACjB,cAAc,EAAE,IAAI;gBACpB,WAAW,EAAE,IAAI;gBACjB,UAAU,EAAE,IAAI;aACjB;YACD,KAAK,EAAE,GAAG,CAAC,KAAK;SACjB,CAAC,CAAC;QAEL,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,gBAAgB,CACxB,8BAA8B,WAAW,CAAC,QAAQ,EAAE,mBAAmB,CACxE,CAAC;QACJ,CAAC;QAED,MAAM,UAAU,GAAW,SAAS,CAAC,UAAU,IAAI,EAAE,CAAC;QAEtD;;;;;WAKG;QACH,MAAM,SAAS,GACb,wBAAwB,CAAC,SAAS,CAAC,CAAC;QACtC,MAAM,kBAAkB,GAAW,SAAS,CAAC,IAAI,CAAC;QAElD,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC;YACvB,OAAO;gBACL,UAAU,EAAE,GAAG,kBAAkB,8JAA8J;gBAC/L,QAAQ,EAAE,CAAC;gBACX,aAAa,EAAE,8CAA8C;gBAC7D,cAAc,EAAE,SAAS,CAAC,cAAc;gBACxC,WAAW,EAAE,KAAK;aACnB,CAAC;QACJ,CAAC;QAED,MAAM,UAAU,GACd,MAAM,qBAAqB,CAAC,6BAA6B,CAAC;YACxD,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,UAAU,EAAE,UAAU;YACtB,WAAW,EAAE,IAAI;SAClB,CAAC,CAAC;QAEL;;;;;WAKG;QACH,IAAI,kBAAkB,GAA0B,IAAI,CAAC;QAErD,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,QAAQ,GAA0B,MAAM,wBAAwB,CACpE,GAAG,EACH,IAAI,QAAQ,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAC1C,CAAC;YAEF,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxB,kBAAkB,GAAG,UAAU,CAAC;YAClC,CAAC;QACH,CAAC;QAED,MAAM,MAAM,GAAqB,gBAAgB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAEpE;;;;WAIG;QACH,MAAM,SAAS,GAAsB,MAAM,CAAC,MAAM,CAAC,MAAM,CACvD,CAAC,KAAiB,EAAE,EAAE;YACpB,OAAO,KAAK,CAAC,KAAK,CAAC;QACrB,CAAC,CACF,CAAC;QAEF,MAAM,cAAc,GAAsB,CACxC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CACjD,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAEf;;;;;;;WAOG;QACH,MAAM,SAAS,GAAkB,kBAAkB;YACjD,CAAC,CAAC,MAAM,yBAAyB,CAAC,GAAG,EAAE,kBAAkB,CAAC;YAC1D,CAAC,CAAC,EAAE,CAAC;QAEP,MAAM,SAAS,GAAsB,cAAc,CAAC,GAAG,CACrD,CAAC,KAAiB,EAAE,EAAE;YACpB,MAAM,QAAQ,GAAkB,0BAA0B,CACxD,KAAK,CAAC,QAAQ,EACd,SAAS,CACV,CAAC;YAEF,OAAO;gBACL,IAAI,EAAE,QAAQ,IAAI,KAAK,CAAC,QAAQ;gBAChC,IAAI,EAAE,KAAK,CAAC,UAAU;gBACtB,QAAQ,EAAE,KAAK,CAAC,YAAY;gBAC5B,iBAAiB,EAAE,KAAK,CAAC,KAAK;gBAC9B,yDAAyD;gBACzD,wBAAwB,EAAE,OAAO,CAAC,QAAQ,CAAC;aAC5C,CAAC;QACJ,CAAC,CACF,CAAC;QAEF,MAAM,UAAU,GACd,oBAAoB,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QAEhD,MAAM,MAAM,GAAkB,CAAC,kBAAkB,CAAC,CAAC;QAEnD,IAAI,kBAAkB,EAAE,CAAC;YACvB,MAAM,QAAQ,GAAW,SAAS,CAAC,MAAM,CAAC,CAAC,GAAe,EAAE,EAAE;gBAC5D,OAAO,GAAG,CAAC,0BAA0B,CAAC,KAAK,IAAI,CAAC;YAClD,CAAC,CAAC,CAAC,MAAM,CAAC;YAEV,MAAM,CAAC,IAAI,CACT,uBAAuB,kBAAkB,CAAC,gBAAgB,IAAI,kBAAkB,CAAC,cAAc,EAAE,EACjG,iBAAiB,kBAAkB,CAAC,gBAAgB,EAAE,EACtD,gBAAgB,kBAAkB,CAAC,MAAM,KAAK,kBAAkB,CAAC,QAAQ,GAAG,CAC7E,CAAC;YAEF,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;gBACjB,MAAM,CAAC,IAAI,CACT,wCAAwC,kBAAkB,CAAC,gBAAgB,uGAAuG,CACnL,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,CACT,oMAAoM,CACrM,CAAC;YACJ,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CACT,6JAA6J,CAC9J,CAAC;QACJ,CAAC;QAED,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvD,MAAM,CAAC,IAAI,CACT,yFAAyF,CAC1F,CAAC;QACJ,CAAC;QAED,MAAM,UAAU,GACd,SAAS,CAAC,MAAM,GAAG,CAAC;YAClB,CAAC,CAAC,0CAA0C,UAAU,CAAC,IAAI,EAAE;YAC7D,CAAC,CAAC,0EAA0E,oBAAoB,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAEzI,OAAO;YACL,UAAU,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,UAAU,EAAE;YAC/C,QAAQ,EAAE,SAAS,CAAC,MAAM;YAC1B,aAAa,EAAE,kBAAkB;gBAC/B,CAAC,CAAC,kBAAkB,kBAAkB,CAAC,gBAAgB,IAAI,kBAAkB,CAAC,cAAc,KAAK,SAAS,CAAC,MAAM,UAAU;gBAC3H,CAAC,CAAC,qDAAqD;YACzD,cAAc,EAAE;gBACd,IAAI,EAAE,wBAAwB,CAAC,UAAU;aAC1C;YACD,yDAAyD;YACzD,cAAc,EAAE,SAAS,CAAC,cAAc,GAAG,UAAU,CAAC,cAAc;YACpE,WAAW,EAAE,UAAU,CAAC,WAAW;SACpC,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAsB;IAC/C,IAAI,EAAE,aAAa;IACnB,WAAW,EACT,qQAAqQ;IACvQ,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,WAAW,EACT,uGAAuG;aAC1G;YACD,YAAY,EAAE;gBACZ,IAAI,EAAE,QAAQ;gBACd,WAAW,EACT,0HAA0H;aAC7H;YACD,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,4CAA4C,kBAAkB,IAAI;aAChF;SACF;QACD,QAAQ,EAAE,CAAC,OAAO,CAAC;KACpB;IACD,IAAI,mBAAmB;QACrB,OAAO,gCAAgC,EAAE,CAAC;IAC5C,CAAC;IACD,OAAO,EAAE,KAAK,EACZ,IAAgB,EAChB,GAAgB,EACc,EAAE;QAChC,MAAM,KAAK,GAAuB,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAEpE,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,gBAAgB,CACxB,qEAAqE,CACtE,CAAC;QACJ,CAAC;QAED,MAAM,KAAK,GAAW,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE;YACtD,YAAY,EAAE,EAAE;YAChB,GAAG,EAAE,CAAC;YACN,GAAG,EAAE,kBAAkB;SACxB,CAAC,CAAC;QAEH,MAAM,UAAU,GAAmB,MAAM,uBAAuB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAE5E,MAAM,KAAK,GAAkB,MAAM,UAAU,CAAC,sBAAsB,CAAC;YACnE,cAAc,EAAE,UAAU,CAAC,uBAAwB;YACnD,gBAAgB,EAAE,UAAU,CAAC,gBAAiB;YAC9C,cAAc,EAAE,UAAU,CAAC,cAAe;YAC1C,UAAU,EAAE,UAAU,CAAC,cAAc,IAAI,MAAM;SAChD,CAAC,CAAC;QAEH,MAAM,MAAM,GAAW,KAAK,CAAC,WAAW,EAAE,CAAC;QAE3C,MAAM,OAAO,GAAkB,KAAK,CAAC,MAAM,CAAC,CAAC,IAAY,EAAE,EAAE;YAC3D,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QAEH;;;;WAIG;QACH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE;YACpC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,MAAM,OAAO,GAAkB,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAEvD,MAAM,IAAI,GACR,OAAO,CAAC,MAAM,KAAK,CAAC;YAClB,CAAC,CAAC,qBAAqB,UAAU,CAAC,gBAAgB,IAAI,UAAU,CAAC,cAAc,WAAW,KAAK,IAAI;YACnG,CAAC,CAAC,OAAO;iBACJ,GAAG,CAAC,CAAC,IAAY,EAAE,EAAE;gBACpB,OAAO,KAAK,IAAI,EAAE,CAAC;YACrB,CAAC,CAAC;iBACD,IAAI,CAAC,IAAI,CAAC,CAAC;QAEpB,MAAM,WAAW,GAAY,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAE7D,OAAO;YACL,UAAU,EAAE,WAAW;gBACrB,CAAC,CAAC,GAAG,IAAI,gBAAgB,OAAO,CAAC,MAAM,OAAO,OAAO,CAAC,MAAM,6CAA6C;gBACzG,CAAC,CAAC,IAAI;YACR,QAAQ,EAAE,OAAO,CAAC,MAAM;YACxB,aAAa,EAAE,gBAAgB,KAAK,QAAQ,UAAU,CAAC,gBAAgB,IAAI,UAAU,CAAC,cAAc,KAAK,OAAO,CAAC,MAAM,OAAO,OAAO,CAAC,MAAM,GAAG;YAC/I,cAAc,EAAE,CAAC;YACjB,WAAW,EAAE,WAAW;SACzB,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAsB;IACjD,IAAI,EAAE,gBAAgB;IACtB,WAAW,EACT,kOAAkO;IACpO,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,QAAQ,EAAE;gBACR,IAAI,EAAE,QAAQ;gBACd,WAAW,EACT,yHAAyH;aAC5H;YACD,YAAY,EAAE;gBACZ,IAAI,EAAE,QAAQ;gBACd,WAAW,EACT,wJAAwJ;aAC3J;YACD,SAAS,EAAE;gBACT,IAAI,EAAE,QAAQ;gBACd,WAAW,EACT,sEAAsE;aACzE;YACD,OAAO,EAAE;gBACP,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,mDAAmD,kBAAkB,+BAA+B;aAClH;YACD,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,mGAAmG,qBAAqB,sDAAsD;aAC5L;SACF;QACD,QAAQ,EAAE,CAAC,UAAU,CAAC;KACvB;IACD,IAAI,mBAAmB;QACrB,OAAO,gCAAgC,EAAE,CAAC;IAC5C,CAAC;IACD,OAAO,EAAE,KAAK,EACZ,IAAgB,EAChB,GAAgB,EACc,EAAE;QAChC,MAAM,QAAQ,GAAuB,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAE1E,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,gBAAgB,CAAC,uBAAuB,CAAC,CAAC;QACtD,CAAC;QAED,MAAM,UAAU,GAAmB,MAAM,uBAAuB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC5E,MAAM,UAAU,GAAW,UAAU,CAAC,cAAc,IAAI,MAAM,CAAC;QAE/D,MAAM,IAAI,GAA6B,MAAM,UAAU,CAAC,cAAc,CAAC;YACrE,cAAc,EAAE,UAAU,CAAC,uBAAwB;YACnD,gBAAgB,EAAE,UAAU,CAAC,gBAAiB;YAC9C,cAAc,EAAE,UAAU,CAAC,cAAe;YAC1C,UAAU,EAAE,UAAU;YACtB,QAAQ,EAAE,QAAQ;SACnB,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,gBAAgB,CACxB,wBAAwB,QAAQ,eAAe,UAAU,OAAO,UAAU,CAAC,gBAAgB,IAAI,UAAU,CAAC,cAAc,qGAAqG,CAC9N,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GAAkB,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAE7D,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO;gBACL,UAAU,EAAE,SAAS,QAAQ,iBAAiB,UAAU,CAAC,gBAAgB,IAAI,UAAU,CAAC,cAAc,IAAI,UAAU,oCAAoC;gBACxJ,QAAQ,EAAE,CAAC;gBACX,aAAa,EAAE,GAAG,QAAQ,UAAU;gBACpC,cAAc,EAAE,CAAC;gBACjB,WAAW,EAAE,KAAK;aACnB,CAAC;QACJ,CAAC;QAED;;;;WAIG;QACH,IAAI,SAAS,GAAW,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,WAAW,EAAE;YAC5D,YAAY,EAAE,CAAC;YACf,GAAG,EAAE,CAAC;YACN,GAAG,EAAE,QAAQ,CAAC,MAAM;SACrB,CAAC,CAAC;QAEH,IAAI,OAAO,GAAW,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,EAAE;YACxD,YAAY,EAAE,CAAC;YACf,GAAG,EAAE,CAAC;YACN,GAAG,EAAE,QAAQ,CAAC,MAAM;SACrB,CAAC,CAAC;QAEH,MAAM,UAAU,GAAW,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,YAAY,EAAE;YAChE,YAAY,EAAE,CAAC;YACf,GAAG,EAAE,CAAC;YACN,GAAG,EAAE,QAAQ,CAAC,MAAM;SACrB,CAAC,CAAC;QAEH,IAAI,CAAC,SAAS,IAAI,UAAU,EAAE,CAAC;YAC7B,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,GAAG,qBAAqB,CAAC,CAAC;YAE5D,mEAAmE;YACnE,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,GAAG,qBAAqB,CAAC,CAAC;YAC1E,CAAC;QACH,CAAC;QAED,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,SAAS,GAAG,CAAC,CAAC;QAChB,CAAC;QAED,IAAI,CAAC,OAAO,IAAI,OAAO,GAAG,SAAS,EAAE,CAAC;YACpC,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC;QAC5B,CAAC;QAED,uEAAuE;QACvE,MAAM,gBAAgB,GAAW,OAAO,CAAC;QAEzC,IAAI,OAAO,GAAG,SAAS,GAAG,CAAC,GAAG,kBAAkB,EAAE,CAAC;YACjD,OAAO,GAAG,SAAS,GAAG,kBAAkB,GAAG,CAAC,CAAC;QAC/C,CAAC;QAED;;;;;;WAMG;QACH,MAAM,QAAQ,GAAkB,yBAAyB,CACvD,QAAQ,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,EAAE,OAAO,CAAC,EACtC,SAAS,CACV,CAAC;QAEF,MAAM,aAAa,GAAW,SAAS,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;QAC9D,MAAM,WAAW,GAAY,aAAa,GAAG,gBAAgB,CAAC;QAE9D,MAAM,QAAQ,GAAW,qBAAqB,CAAC;YAC7C,KAAK,EAAE,QAAQ;YACf,SAAS,EAAE,SAAS;SACrB,CAAC,CAAC;QAEH;;;;WAIG;QACH,MAAM,UAAU,GAAqB,oBAAoB,CAAC,aAAa,CACrE,QAAQ,EACR,QAAQ,CAAC,MAAM,CAChB,CAAC;QAEF,MAAM,MAAM,GAAW;YACrB,SAAS,QAAQ,EAAE;YACnB,eAAe,UAAU,CAAC,gBAAgB,IAAI,UAAU,CAAC,cAAc,IAAI,UAAU,EAAE;YACvF,iBAAiB,SAAS,IAAI,aAAa,OAAO,IAAI,CAAC,UAAU,EAAE;SACpE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEb,MAAM,MAAM,GAAW,WAAW;YAChC,CAAC,CAAC,wBAAwB,aAAa,+BAA+B,aAAa,GAAG,CAAC,cAAc;YACrG,CAAC,CAAC,EAAE,CAAC;QAEP,OAAO;YACL,UAAU,EAAE,GAAG,MAAM,OAAO,UAAU,CAAC,IAAI,GAAG,MAAM,EAAE;YACtD,QAAQ,EAAE,QAAQ,CAAC,MAAM;YACzB,aAAa,EAAE,GAAG,QAAQ,IAAI,SAAS,IAAI,aAAa,KAAK,UAAU,CAAC,gBAAgB,IAAI,UAAU,CAAC,cAAc,GAAG;YACxH,cAAc,EAAE,UAAU,CAAC,cAAc;YACzC,WAAW,EAAE,WAAW,IAAI,UAAU,CAAC,WAAW;SACnD,CAAC;IACJ,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,389 @@
|
|
|
1
|
+
import CodeRepository from "../../../../Models/DatabaseModels/CodeRepository";
|
|
2
|
+
import AIAgentTaskPullRequest from "../../../../Models/DatabaseModels/AIAgentTaskPullRequest";
|
|
3
|
+
import BadDataException from "../../../../Types/Exception/BadDataException";
|
|
4
|
+
import ObjectID from "../../../../Types/ObjectID";
|
|
5
|
+
import URL from "../../../../Types/API/URL";
|
|
6
|
+
import AIAgentTaskPullRequestService from "../../../Services/AIAgentTaskPullRequestService";
|
|
7
|
+
import GitHubUtil from "../../CodeRepository/GitHub/GitHub";
|
|
8
|
+
import OpenPullRequestCap from "../CodeFix/OpenPullRequestCap";
|
|
9
|
+
import { ToolArgs, } from "./ToolTypes";
|
|
10
|
+
import { resolveTargetRepository } from "./CodeTools";
|
|
11
|
+
/*
|
|
12
|
+
* Tools that let the chat agent WRITE code: commit to a branch, and open a
|
|
13
|
+
* pull request.
|
|
14
|
+
*
|
|
15
|
+
* The trust boundary here is the sharpest in the toolbox. This agent reads
|
|
16
|
+
* telemetry — log lines and exception messages authored by whatever the
|
|
17
|
+
* monitored application threw, which an attacker can influence — and it can
|
|
18
|
+
* now turn that input into code. AISentinelVision.md's answer to exactly this
|
|
19
|
+
* threat ("a prompt-injected log line must never become a merged backdoor") is
|
|
20
|
+
* structural, not behavioural: a human reviews before anything merges.
|
|
21
|
+
*
|
|
22
|
+
* So the invariant these tools enforce, and which nothing here may relax:
|
|
23
|
+
* THE DEFAULT BRANCH IS NEVER WRITTEN. Protected branches are never written.
|
|
24
|
+
* Every chat-authored commit lands somewhere a human must still merge from.
|
|
25
|
+
* The default branch is read from GitHub rather than from our stored
|
|
26
|
+
* mainBranchName, because that column is a copy made at import time and drifts.
|
|
27
|
+
*/
|
|
28
|
+
let cachedUpdatePermissions = null;
|
|
29
|
+
/*
|
|
30
|
+
* Writing code is gated on CodeRepository UPDATE, not read: whoever may point
|
|
31
|
+
* OneUptime at a repository is the same person trusted to let it write there.
|
|
32
|
+
* There is no finer-grained "may write code" permission, and G1's policy
|
|
33
|
+
* gateway (risk tiers, capability-scoped tokens) does not exist yet — so this
|
|
34
|
+
* deliberately errs narrow.
|
|
35
|
+
*
|
|
36
|
+
* Resolved lazily rather than at module load, for the same circular-dependency
|
|
37
|
+
* reason as the read tools.
|
|
38
|
+
*/
|
|
39
|
+
const resolveUpdatePermissions = () => {
|
|
40
|
+
if (!cachedUpdatePermissions) {
|
|
41
|
+
cachedUpdatePermissions = new CodeRepository().getUpdatePermissions();
|
|
42
|
+
}
|
|
43
|
+
return cachedUpdatePermissions;
|
|
44
|
+
};
|
|
45
|
+
/*
|
|
46
|
+
* One commit's worth of edits. Chat has 16 tool calls; a sprawling refactor is
|
|
47
|
+
* not what this is for, and each blob costs a round trip inside one 45s call.
|
|
48
|
+
*/
|
|
49
|
+
const MAX_FILES_PER_COMMIT = 10;
|
|
50
|
+
const MAX_FILE_BYTES = 256 * 1024;
|
|
51
|
+
const AI_BRANCH_PREFIX = "oneuptime-ai";
|
|
52
|
+
const FileChangesSchema = {
|
|
53
|
+
type: "array",
|
|
54
|
+
description: "The files to write. Each entry replaces that file's ENTIRE contents, so send the complete new file, not a diff or a fragment. Read the file with read_code_file first so you do not destroy code you never saw.",
|
|
55
|
+
items: {
|
|
56
|
+
type: "object",
|
|
57
|
+
properties: {
|
|
58
|
+
filePath: {
|
|
59
|
+
type: "string",
|
|
60
|
+
description: "Repository-relative path, e.g. 'src/billing/charge.ts'. A path that does not exist yet creates a new file.",
|
|
61
|
+
},
|
|
62
|
+
content: {
|
|
63
|
+
type: "string",
|
|
64
|
+
description: "The complete new contents of the file.",
|
|
65
|
+
},
|
|
66
|
+
},
|
|
67
|
+
required: ["filePath", "content"],
|
|
68
|
+
},
|
|
69
|
+
};
|
|
70
|
+
/*
|
|
71
|
+
* Parse and validate the model's file changes. Everything here is untrusted
|
|
72
|
+
* LLM output, so each entry is type-checked and bounded rather than trusted.
|
|
73
|
+
*/
|
|
74
|
+
function parseFileChanges(args) {
|
|
75
|
+
const raw = args["changes"];
|
|
76
|
+
if (!Array.isArray(raw) || raw.length === 0) {
|
|
77
|
+
throw new BadDataException("changes is required: a non-empty array of { filePath, content } objects.");
|
|
78
|
+
}
|
|
79
|
+
if (raw.length > MAX_FILES_PER_COMMIT) {
|
|
80
|
+
throw new BadDataException(`A single commit may change at most ${MAX_FILES_PER_COMMIT} files (got ${raw.length}). Make a smaller, focused change.`);
|
|
81
|
+
}
|
|
82
|
+
const changes = [];
|
|
83
|
+
const seen = new Set();
|
|
84
|
+
for (const entry of raw) {
|
|
85
|
+
const item = entry;
|
|
86
|
+
const filePath = ToolArgs.getString(item, "filePath");
|
|
87
|
+
const content = item["content"];
|
|
88
|
+
if (!filePath) {
|
|
89
|
+
throw new BadDataException("Every entry in changes needs a non-empty filePath.");
|
|
90
|
+
}
|
|
91
|
+
/*
|
|
92
|
+
* content is read directly rather than via ToolArgs.getString: an empty
|
|
93
|
+
* string is a legitimate new-file body, and getString would reject it.
|
|
94
|
+
*/
|
|
95
|
+
if (typeof content !== "string") {
|
|
96
|
+
throw new BadDataException(`The change for "${filePath}" needs a content string holding the file's complete new contents.`);
|
|
97
|
+
}
|
|
98
|
+
if (Buffer.byteLength(content, "utf8") > MAX_FILE_BYTES) {
|
|
99
|
+
throw new BadDataException(`"${filePath}" is larger than the ${MAX_FILE_BYTES / 1024}KB per-file limit for chat-authored commits.`);
|
|
100
|
+
}
|
|
101
|
+
// A leading slash or traversal is a path the model invented, not a repo path.
|
|
102
|
+
const normalized = filePath.replace(/^\/+/, "");
|
|
103
|
+
if (normalized.includes("..") || normalized.trim() === "") {
|
|
104
|
+
throw new BadDataException(`"${filePath}" is not a valid repository-relative path.`);
|
|
105
|
+
}
|
|
106
|
+
if (seen.has(normalized)) {
|
|
107
|
+
throw new BadDataException(`"${normalized}" appears twice in changes; each file may be written once per commit.`);
|
|
108
|
+
}
|
|
109
|
+
seen.add(normalized);
|
|
110
|
+
changes.push({ filePath: normalized, content: content });
|
|
111
|
+
}
|
|
112
|
+
return changes;
|
|
113
|
+
}
|
|
114
|
+
/*
|
|
115
|
+
* THE safety gate. Resolves a branch and refuses it if it is the repository's
|
|
116
|
+
* real default branch or is protected — so a chat-authored commit can only
|
|
117
|
+
* ever land somewhere a human still has to merge from.
|
|
118
|
+
*/
|
|
119
|
+
async function assertBranchIsWritable(data) {
|
|
120
|
+
const installationId = data.repository.gitHubAppInstallationId;
|
|
121
|
+
const organizationName = data.repository.organizationName;
|
|
122
|
+
const repositoryName = data.repository.repositoryName;
|
|
123
|
+
const defaultBranchName = await GitHubUtil.getDefaultBranchName({
|
|
124
|
+
installationId,
|
|
125
|
+
organizationName,
|
|
126
|
+
repositoryName,
|
|
127
|
+
});
|
|
128
|
+
if (defaultBranchName &&
|
|
129
|
+
data.branchName.toLowerCase() === defaultBranchName.toLowerCase()) {
|
|
130
|
+
throw new BadDataException(`"${data.branchName}" is the default branch of ${organizationName}/${repositoryName}, and chat may never commit to it. Use open_code_pull_request instead so a human reviews the change before it lands.`);
|
|
131
|
+
}
|
|
132
|
+
const branch = await GitHubUtil.getBranch({
|
|
133
|
+
installationId,
|
|
134
|
+
organizationName,
|
|
135
|
+
repositoryName,
|
|
136
|
+
branchName: data.branchName,
|
|
137
|
+
});
|
|
138
|
+
if (!branch) {
|
|
139
|
+
throw new BadDataException(`Branch "${data.branchName}" does not exist in ${organizationName}/${repositoryName}. Use open_code_pull_request to create a new branch, or name an existing one.`);
|
|
140
|
+
}
|
|
141
|
+
if (branch.isProtected) {
|
|
142
|
+
throw new BadDataException(`Branch "${data.branchName}" is protected in ${organizationName}/${repositoryName}, so chat may not commit to it. Use open_code_pull_request instead.`);
|
|
143
|
+
}
|
|
144
|
+
return branch;
|
|
145
|
+
}
|
|
146
|
+
// A branch name that is obviously machine-authored, and legal in git.
|
|
147
|
+
function buildAiBranchName(title) {
|
|
148
|
+
const slug = title
|
|
149
|
+
.toLowerCase()
|
|
150
|
+
.replace(/[^a-z0-9]+/g, "-")
|
|
151
|
+
.replace(/^-+|-+$/g, "")
|
|
152
|
+
.slice(0, 40) || "change";
|
|
153
|
+
/*
|
|
154
|
+
* A short random suffix rather than a timestamp: Date.now() would collide
|
|
155
|
+
* for two changes proposed in the same millisecond, and the suffix only has
|
|
156
|
+
* to disambiguate, not order.
|
|
157
|
+
*/
|
|
158
|
+
const suffix = ObjectID.generate().toString().slice(-8);
|
|
159
|
+
return `${AI_BRANCH_PREFIX}/${slug}-${suffix}`;
|
|
160
|
+
}
|
|
161
|
+
function describeChanges(changes) {
|
|
162
|
+
return changes
|
|
163
|
+
.map((change) => {
|
|
164
|
+
return `- ${change.filePath}`;
|
|
165
|
+
})
|
|
166
|
+
.join("\n");
|
|
167
|
+
}
|
|
168
|
+
export const CommitCodeToBranchTool = {
|
|
169
|
+
name: "commit_code_to_branch",
|
|
170
|
+
description: "Commit file changes to an EXISTING branch of a connected repository. Never commits to the default or a protected branch — those are refused. Use this only when the user names a branch to commit onto; otherwise prefer open_code_pull_request. Read each file with read_code_file first: content replaces the whole file.",
|
|
171
|
+
isMutation: true,
|
|
172
|
+
inputSchema: {
|
|
173
|
+
type: "object",
|
|
174
|
+
properties: {
|
|
175
|
+
branchName: {
|
|
176
|
+
type: "string",
|
|
177
|
+
description: "The existing branch to commit onto. Must not be the default branch or a protected branch.",
|
|
178
|
+
},
|
|
179
|
+
commitMessage: {
|
|
180
|
+
type: "string",
|
|
181
|
+
description: "A concise, conventional commit message.",
|
|
182
|
+
},
|
|
183
|
+
changes: FileChangesSchema,
|
|
184
|
+
repositoryId: {
|
|
185
|
+
type: "string",
|
|
186
|
+
description: "Which repository, from list_code_repositories. Optional when the project has exactly one connected repository.",
|
|
187
|
+
},
|
|
188
|
+
},
|
|
189
|
+
required: ["branchName", "commitMessage", "changes"],
|
|
190
|
+
},
|
|
191
|
+
get requiredPermissions() {
|
|
192
|
+
return resolveUpdatePermissions();
|
|
193
|
+
},
|
|
194
|
+
buildActionTitle: (args) => {
|
|
195
|
+
const branch = ToolArgs.getString(args, "branchName") || "a branch";
|
|
196
|
+
const count = Array.isArray(args["changes"])
|
|
197
|
+
? args["changes"].length
|
|
198
|
+
: 0;
|
|
199
|
+
return `Commit ${count} file${count === 1 ? "" : "s"} to ${branch}`;
|
|
200
|
+
},
|
|
201
|
+
execute: async (args, ctx) => {
|
|
202
|
+
const branchName = ToolArgs.getString(args, "branchName");
|
|
203
|
+
const commitMessage = ToolArgs.getString(args, "commitMessage");
|
|
204
|
+
if (!branchName) {
|
|
205
|
+
throw new BadDataException("branchName is required.");
|
|
206
|
+
}
|
|
207
|
+
if (!commitMessage) {
|
|
208
|
+
throw new BadDataException("commitMessage is required.");
|
|
209
|
+
}
|
|
210
|
+
const changes = parseFileChanges(args);
|
|
211
|
+
const repository = await resolveTargetRepository(ctx, args);
|
|
212
|
+
await assertBranchIsWritable({ repository, branchName });
|
|
213
|
+
const commit = await GitHubUtil.commitFilesToBranch({
|
|
214
|
+
installationId: repository.gitHubAppInstallationId,
|
|
215
|
+
organizationName: repository.organizationName,
|
|
216
|
+
repositoryName: repository.repositoryName,
|
|
217
|
+
branchName: branchName,
|
|
218
|
+
changes: changes,
|
|
219
|
+
commitMessage: commitMessage,
|
|
220
|
+
});
|
|
221
|
+
return {
|
|
222
|
+
dataForLlm: [
|
|
223
|
+
`Committed ${changes.length} file(s) to branch ${branchName} of ${repository.organizationName}/${repository.repositoryName}.`,
|
|
224
|
+
`commitSha: ${commit.commitSha}`,
|
|
225
|
+
`commitUrl: ${commit.htmlUrl}`,
|
|
226
|
+
`files:\n${describeChanges(changes)}`,
|
|
227
|
+
`This commit is NOT merged and NOT on the default branch. Tell the user it is on ${branchName} and still needs review.`,
|
|
228
|
+
].join("\n"),
|
|
229
|
+
rowCount: changes.length,
|
|
230
|
+
citationLabel: `Commit ${commit.commitSha.slice(0, 7)} on ${branchName} (${changes.length} file${changes.length === 1 ? "" : "s"})`,
|
|
231
|
+
redactionCount: 0,
|
|
232
|
+
isTruncated: false,
|
|
233
|
+
};
|
|
234
|
+
},
|
|
235
|
+
};
|
|
236
|
+
export const OpenCodePullRequestTool = {
|
|
237
|
+
name: "open_code_pull_request",
|
|
238
|
+
description: "Propose a code change: creates a new branch off the default branch, commits the changes, and opens a DRAFT pull request for a human to review. This is the safe, preferred way to change code from chat — it never writes to the default branch. Read each file with read_code_file first: content replaces the whole file.",
|
|
239
|
+
isMutation: true,
|
|
240
|
+
inputSchema: {
|
|
241
|
+
type: "object",
|
|
242
|
+
properties: {
|
|
243
|
+
title: {
|
|
244
|
+
type: "string",
|
|
245
|
+
description: "The pull request title — a short summary of the fix.",
|
|
246
|
+
},
|
|
247
|
+
description: {
|
|
248
|
+
type: "string",
|
|
249
|
+
description: "The pull request body. Explain what broke, the evidence (cite the exception/logs you used), and why this change fixes it.",
|
|
250
|
+
},
|
|
251
|
+
changes: FileChangesSchema,
|
|
252
|
+
commitMessage: {
|
|
253
|
+
type: "string",
|
|
254
|
+
description: "Commit message. Defaults to the title when omitted.",
|
|
255
|
+
},
|
|
256
|
+
repositoryId: {
|
|
257
|
+
type: "string",
|
|
258
|
+
description: "Which repository, from list_code_repositories or find_code_for_exception. Optional when the project has exactly one connected repository.",
|
|
259
|
+
},
|
|
260
|
+
},
|
|
261
|
+
required: ["title", "description", "changes"],
|
|
262
|
+
},
|
|
263
|
+
get requiredPermissions() {
|
|
264
|
+
return resolveUpdatePermissions();
|
|
265
|
+
},
|
|
266
|
+
buildActionTitle: (args) => {
|
|
267
|
+
return `Open draft pull request: ${ToolArgs.getString(args, "title") || "Untitled"}`;
|
|
268
|
+
},
|
|
269
|
+
execute: async (args, ctx) => {
|
|
270
|
+
const title = ToolArgs.getString(args, "title");
|
|
271
|
+
const description = ToolArgs.getString(args, "description");
|
|
272
|
+
if (!title) {
|
|
273
|
+
throw new BadDataException("title is required.");
|
|
274
|
+
}
|
|
275
|
+
if (!description) {
|
|
276
|
+
throw new BadDataException("description is required — explain the change and cite the evidence for it.");
|
|
277
|
+
}
|
|
278
|
+
const changes = parseFileChanges(args);
|
|
279
|
+
const repository = await resolveTargetRepository(ctx, args);
|
|
280
|
+
/*
|
|
281
|
+
* The same per-repository open-PR cap the autonomous fix agent obeys. Chat
|
|
282
|
+
* PRs are recorded as AIAgentTaskPullRequest rows below, so they count
|
|
283
|
+
* against it too — otherwise chat would be an uncapped way to flood a
|
|
284
|
+
* review queue the cap exists to protect.
|
|
285
|
+
*/
|
|
286
|
+
const capDecision = await OpenPullRequestCap.checkForRepository({
|
|
287
|
+
codeRepositoryId: repository.id,
|
|
288
|
+
configuredLimit: repository.maxOpenFixPullRequests,
|
|
289
|
+
});
|
|
290
|
+
if (!capDecision.allowed) {
|
|
291
|
+
throw new BadDataException(OpenPullRequestCap.describeRejection({
|
|
292
|
+
decision: capDecision,
|
|
293
|
+
repositoryName: `${repository.organizationName}/${repository.repositoryName}`,
|
|
294
|
+
}));
|
|
295
|
+
}
|
|
296
|
+
const installationId = repository.gitHubAppInstallationId;
|
|
297
|
+
const organizationName = repository.organizationName;
|
|
298
|
+
const repositoryName = repository.repositoryName;
|
|
299
|
+
const baseBranchName = await GitHubUtil.getDefaultBranchName({
|
|
300
|
+
installationId,
|
|
301
|
+
organizationName,
|
|
302
|
+
repositoryName,
|
|
303
|
+
});
|
|
304
|
+
if (!baseBranchName) {
|
|
305
|
+
throw new BadDataException(`Could not determine the default branch of ${organizationName}/${repositoryName}.`);
|
|
306
|
+
}
|
|
307
|
+
const headBranchName = buildAiBranchName(title);
|
|
308
|
+
const created = await GitHubUtil.createBranch({
|
|
309
|
+
installationId,
|
|
310
|
+
organizationName,
|
|
311
|
+
repositoryName,
|
|
312
|
+
newBranchName: headBranchName,
|
|
313
|
+
fromBranchName: baseBranchName,
|
|
314
|
+
});
|
|
315
|
+
if (!created) {
|
|
316
|
+
throw new BadDataException(`Branch ${headBranchName} already exists in ${organizationName}/${repositoryName}. Try again — a fresh branch name will be generated.`);
|
|
317
|
+
}
|
|
318
|
+
await GitHubUtil.commitFilesToBranch({
|
|
319
|
+
installationId,
|
|
320
|
+
organizationName,
|
|
321
|
+
repositoryName,
|
|
322
|
+
branchName: headBranchName,
|
|
323
|
+
changes: changes,
|
|
324
|
+
commitMessage: ToolArgs.getString(args, "commitMessage") || title,
|
|
325
|
+
});
|
|
326
|
+
const pullRequest = await GitHubUtil.createPullRequestWithToken({
|
|
327
|
+
installationId,
|
|
328
|
+
organizationName,
|
|
329
|
+
repositoryName,
|
|
330
|
+
baseBranchName: baseBranchName,
|
|
331
|
+
headBranchName: headBranchName,
|
|
332
|
+
title: title,
|
|
333
|
+
body: `${description}\n\n---\n_Proposed by OneUptime AI from a chat conversation. Review carefully before merging: this change was written by an agent that reads production telemetry._`,
|
|
334
|
+
isDraft: true,
|
|
335
|
+
});
|
|
336
|
+
/*
|
|
337
|
+
* Record the PR so the open-PR cap can see it and the
|
|
338
|
+
* AIAgent:SyncPullRequestStates worker keeps its state current. An
|
|
339
|
+
* unrecorded PR is an UNCAPPED PR, so this is load-bearing, not bookkeeping.
|
|
340
|
+
*
|
|
341
|
+
* aiRunId / aiAgentId stay unset — this PR came from a chat turn, not an
|
|
342
|
+
* agent run. Both columns are nullable for exactly this case (aiAgentId was
|
|
343
|
+
* made nullable by AllowNullAiAgentOnPullRequest1784135099754; it was
|
|
344
|
+
* NOT NULL before, which made this create() throw *after* the PR was
|
|
345
|
+
* already open on GitHub). The sync worker guards on aiRunId before
|
|
346
|
+
* emitting run events, so a null agent is safe there.
|
|
347
|
+
*
|
|
348
|
+
* isRoot because AIAgentTaskPullRequest has no create ACL for a normal
|
|
349
|
+
* user; the authorization already happened at the tool's permission gate
|
|
350
|
+
* and at resolveTargetRepository, both under ctx.props.
|
|
351
|
+
*/
|
|
352
|
+
const record = new AIAgentTaskPullRequest();
|
|
353
|
+
record.projectId = ctx.projectId;
|
|
354
|
+
record.codeRepositoryId = repository.id;
|
|
355
|
+
record.title = title;
|
|
356
|
+
record.description = description;
|
|
357
|
+
record.pullRequestId = pullRequest.pullRequestId;
|
|
358
|
+
record.pullRequestNumber = pullRequest.pullRequestNumber;
|
|
359
|
+
record.pullRequestState = pullRequest.state;
|
|
360
|
+
record.headRefName = headBranchName;
|
|
361
|
+
record.baseRefName = baseBranchName;
|
|
362
|
+
record.repoOrganizationName = organizationName;
|
|
363
|
+
record.repoName = repositoryName;
|
|
364
|
+
record.pullRequestUrl = URL.fromString(`https://github.com/${organizationName}/${repositoryName}/pull/${pullRequest.pullRequestNumber}`);
|
|
365
|
+
if (ctx.props.userId) {
|
|
366
|
+
record.createdByUserId = ctx.props.userId;
|
|
367
|
+
}
|
|
368
|
+
await AIAgentTaskPullRequestService.create({
|
|
369
|
+
data: record,
|
|
370
|
+
props: { isRoot: true },
|
|
371
|
+
});
|
|
372
|
+
const pullRequestUrl = record.pullRequestUrl.toString();
|
|
373
|
+
return {
|
|
374
|
+
dataForLlm: [
|
|
375
|
+
`Opened DRAFT pull request #${pullRequest.pullRequestNumber} on ${organizationName}/${repositoryName}.`,
|
|
376
|
+
`url: ${pullRequestUrl}`,
|
|
377
|
+
`branch: ${headBranchName} → ${baseBranchName}`,
|
|
378
|
+
`files:\n${describeChanges(changes)}`,
|
|
379
|
+
`It is a DRAFT and is NOT merged. Give the user the link and say it needs their review.`,
|
|
380
|
+
].join("\n"),
|
|
381
|
+
rowCount: changes.length,
|
|
382
|
+
citationLabel: `Draft PR #${pullRequest.pullRequestNumber}: ${title}`,
|
|
383
|
+
redactionCount: 0,
|
|
384
|
+
isTruncated: false,
|
|
385
|
+
};
|
|
386
|
+
},
|
|
387
|
+
};
|
|
388
|
+
export { MAX_FILES_PER_COMMIT, AI_BRANCH_PREFIX };
|
|
389
|
+
//# sourceMappingURL=CodeWriteTools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CodeWriteTools.js","sourceRoot":"","sources":["../../../../../../Server/Utils/AI/Toolbox/CodeWriteTools.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,12 +4,15 @@ import logger from "../../Logger";
|
|
|
4
4
|
import { QueryIncidentsTool, SearchIncidentsTool } from "./IncidentTools";
|
|
5
5
|
import { QueryAlertsTool } from "./AlertTools";
|
|
6
6
|
import { QueryMonitorsTool } from "./MonitorTools";
|
|
7
|
+
import { QueryScheduledMaintenanceTool } from "./ScheduledMaintenanceTools";
|
|
7
8
|
import { TopExceptionsTool } from "./ExceptionTools";
|
|
8
9
|
import { LogHistogramTool, SearchLogsTool } from "./LogTools";
|
|
9
10
|
import { RecentChangesTool } from "./RecentChangesTools";
|
|
10
11
|
import { BaselineAnomalyTool, QueryMetricsTool } from "./MetricTools";
|
|
11
12
|
import { GetTraceTool, QueryTracesTool } from "./TraceTools";
|
|
12
13
|
import { LookupContextTool } from "./ContextTools";
|
|
14
|
+
import { FindCodeForExceptionTool, ListCodeRepositoriesTool, ReadCodeFileTool, SearchCodeTool, } from "./CodeTools";
|
|
15
|
+
import { CommitCodeToBranchTool, OpenCodePullRequestTool, } from "./CodeWriteTools";
|
|
13
16
|
import { AcknowledgeIncidentTool, CreateIncidentTool, ResolveIncidentTool, } from "./IncidentWriteTools";
|
|
14
17
|
import { AcknowledgeAlertTool, ResolveAlertTool } from "./AlertWriteTools";
|
|
15
18
|
import { PageOnCallPolicyTool, RunRunbookTool, PostIncidentStatusUpdateTool, ChangeIncidentSeverityTool, } from "./AIActionTools";
|
|
@@ -134,6 +137,7 @@ AIToolbox.tools = [
|
|
|
134
137
|
SearchIncidentsTool,
|
|
135
138
|
QueryAlertsTool,
|
|
136
139
|
QueryMonitorsTool,
|
|
140
|
+
QueryScheduledMaintenanceTool,
|
|
137
141
|
TopExceptionsTool,
|
|
138
142
|
SearchLogsTool,
|
|
139
143
|
LogHistogramTool,
|
|
@@ -142,6 +146,14 @@ AIToolbox.tools = [
|
|
|
142
146
|
QueryTracesTool,
|
|
143
147
|
GetTraceTool,
|
|
144
148
|
RecentChangesTool,
|
|
149
|
+
/*
|
|
150
|
+
* Source code (read-only). Closes the loop from a telemetry signal to the
|
|
151
|
+
* code that produced it — see CodeTools for the narrower trust posture.
|
|
152
|
+
*/
|
|
153
|
+
ListCodeRepositoriesTool,
|
|
154
|
+
FindCodeForExceptionTool,
|
|
155
|
+
SearchCodeTool,
|
|
156
|
+
ReadCodeFileTool,
|
|
145
157
|
// Write tools (mutations). Gated by conversation permission mode.
|
|
146
158
|
CreateIncidentTool,
|
|
147
159
|
AcknowledgeIncidentTool,
|
|
@@ -153,6 +165,13 @@ AIToolbox.tools = [
|
|
|
153
165
|
RunRunbookTool,
|
|
154
166
|
PostIncidentStatusUpdateTool,
|
|
155
167
|
ChangeIncidentSeverityTool,
|
|
168
|
+
/*
|
|
169
|
+
* Code writes (mutations). These never touch the default or a protected
|
|
170
|
+
* branch — every chat-authored commit lands somewhere a human must still
|
|
171
|
+
* merge from. See CodeWriteTools for why that invariant is load-bearing.
|
|
172
|
+
*/
|
|
173
|
+
OpenCodePullRequestTool,
|
|
174
|
+
CommitCodeToBranchTool,
|
|
156
175
|
];
|
|
157
176
|
// LLM tool definitions cached per permission mode (ReadOnly hides mutations).
|
|
158
177
|
AIToolbox.llmToolDefinitionsByMode = new Map();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Index.js","sourceRoot":"","sources":["../../../../../../Server/Utils/AI/Toolbox/Index.ts"],"names":[],"mappings":"AACA,OAAmB,EACjB,gBAAgB,GAEjB,MAAM,8BAA8B,CAAC;AACtC,OAAO,kCAAkC,EAAE,EACzC,cAAc,GACf,MAAM,mEAAmE,CAAC;AAE3E,OAAO,MAAM,MAAM,cAAc,CAAC;AAMlC,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EACL,uBAAuB,EACvB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC3E,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,4BAA4B,EAC5B,0BAA0B,GAC3B,MAAM,iBAAiB,CAAC;AACzB,OAAO,oBAAoB,MAAM,2CAA2C,CAAC;AAa7E,MAAM,yBAAyB,GAAW,EAAE,GAAG,IAAI,CAAC;AAEpD;;;;;;GAMG;AACH,MAAqB,SAAS;
|
|
1
|
+
{"version":3,"file":"Index.js","sourceRoot":"","sources":["../../../../../../Server/Utils/AI/Toolbox/Index.ts"],"names":[],"mappings":"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"}
|