AIToolGenerator v0 Completed & AIUIDesigner added SDUI-Scrollable:

This commit is contained in:
Manas Hejmadi
2025-05-04 03:24:30 +05:30
parent 6382883b8c
commit 1057e07241
6 changed files with 175 additions and 41 deletions

View File

@@ -1,6 +1,8 @@
import 'package:apidash/apitoolgen/request_consolidator.dart';
import 'package:apidash/apitoolgen/tool_templates.dart';
import 'package:apidash/consts.dart';
import 'package:apidash/services/agentic_services/agent_caller.dart';
import 'package:apidash/services/agentic_services/agents/apitool_bodygen.dart';
import 'package:apidash/services/agentic_services/agents/apitool_funcgen.dart';
import 'package:apidash/widgets/ai_ui_desginer_widgets.dart';
import 'package:apidash/widgets/button_copy.dart';
@@ -27,16 +29,56 @@ class _GenerateToolDialogState extends ConsumerState<GenerateToolDialog> {
int index = 0;
TextEditingController controller = TextEditingController();
generateAPITool(String lang) async {
String selectedLanguage = 'PYTHON';
String selectedAgent = 'GEMINI';
String? generatedToolCode = '';
generateAPITool() async {
setState(() {
generatedToolCode = null;
});
final x = await APIDashAgentCaller.instance.call(
APIToolFunctionGenerator(),
ref: ref,
input: AgentInputs(variables: {
'REQDATA': widget.requestDesc.generateREQDATA,
'TARGET_LANGUAGE': lang,
'TARGET_LANGUAGE': selectedLanguage,
}),
);
print(x);
if (x == null) {
setState(() {
generatedToolCode = '';
});
print("ToolGeneration Failed"); //TODO: Make Alert
return;
}
String toolCode = x!['FUNC'];
print(toolCode);
//TODO: Integrate into tool
final toolres = await APIDashAgentCaller.instance.call(
ApiToolBodyGen(),
ref: ref,
input: AgentInputs(variables: {
'TEMPLATE': APIToolGenTemplateSelector.getTemplate(
selectedLanguage, selectedAgent)
.substitutePromptVariable('FUNC', toolCode),
}),
);
if (toolres == null) {
setState(() {
generatedToolCode = '';
});
print("ToolGeneration Failed"); //TODO: Make Alert
return;
}
String toolDefinition = toolres!['TOOL'];
setState(() {
generatedToolCode = toolDefinition;
});
}
@override
@@ -44,31 +86,20 @@ class _GenerateToolDialogState extends ConsumerState<GenerateToolDialog> {
return Container(
height: 600,
width: MediaQuery.of(context).size.width * 0.8,
child: IndexedStack(
index: index,
child: Row(
children: [
Row(
children: [
Expanded(child: ToolRequirementSelectorPage()),
GeneratedToolCodeCopyPage(
toolCode: r"""""",
language: 'javascript',
),
],
),
SizedBox(
child: Center(
child: Padding(
padding: const EdgeInsets.only(top: 40.0),
child: Container(
height: 500,
child: SendingWidget(
startSendingTime: DateTime.now(),
showTimeElapsed: false,
),
),
),
),
Expanded(child: ToolRequirementSelectorPage(
onGenerateCallback: (agent, lang) {
setState(() {
selectedLanguage = lang;
selectedAgent = agent;
});
generateAPITool();
},
)),
GeneratedToolCodeCopyPage(
toolCode: generatedToolCode,
language: 'javascript',
),
],
),
@@ -77,7 +108,9 @@ class _GenerateToolDialogState extends ConsumerState<GenerateToolDialog> {
}
class ToolRequirementSelectorPage extends StatefulWidget {
const ToolRequirementSelectorPage({super.key});
final Function(String agent, String lang) onGenerateCallback;
const ToolRequirementSelectorPage(
{super.key, required this.onGenerateCallback});
@override
State<ToolRequirementSelectorPage> createState() =>
@@ -150,7 +183,7 @@ class _ToolRequirementSelectorPageState
//AutoGen is Python-Only
if (agentFramework == 'MICROSOFT_AUTOGEN') {
targetLanguage = 'JAVASCRIPT';
targetLanguage = 'PYTHON';
}
});
},
@@ -179,7 +212,7 @@ class _ToolRequirementSelectorPageState
//AutoGen is Python-Only
if (agentFramework == 'MICROSOFT_AUTOGEN') {
targetLanguage = 'JAVASCRIPT';
targetLanguage = 'PYTHON';
}
});
},
@@ -191,7 +224,9 @@ class _ToolRequirementSelectorPageState
padding: kPh12,
minimumSize: const Size(44, 44),
),
onPressed: () {},
onPressed: () {
widget.onGenerateCallback(agentFramework, targetLanguage);
},
icon: Icon(
Icons.token_outlined,
),
@@ -208,7 +243,7 @@ class _ToolRequirementSelectorPageState
}
class GeneratedToolCodeCopyPage extends StatelessWidget {
final String toolCode;
final String? toolCode;
final String language;
const GeneratedToolCodeCopyPage(
{super.key, required this.toolCode, required this.language});
@@ -219,7 +254,14 @@ class GeneratedToolCodeCopyPage extends StatelessWidget {
? kLightCodeTheme
: kDarkCodeTheme;
if (toolCode.isEmpty) {
if (toolCode == null) {
return SendingWidget(
startSendingTime: DateTime.now(),
showTimeElapsed: false,
);
}
if (toolCode!.isEmpty) {
return Padding(
padding: const EdgeInsets.only(right: 40),
child: Center(
@@ -235,22 +277,24 @@ class GeneratedToolCodeCopyPage extends StatelessWidget {
return Container(
color: const Color.fromARGB(255, 28, 28, 28),
padding: EdgeInsets.all(20),
constraints: BoxConstraints(maxWidth: 700),
width: MediaQuery.of(context).size.width * 0.55,
width: MediaQuery.of(context).size.width * 0.50,
child: Column(
crossAxisAlignment: CrossAxisAlignment.end,
children: [
CopyButton(
toCopy: toolCode,
toCopy: toolCode!,
showLabel: true,
),
Expanded(
child: SingleChildScrollView(
child: CodePreviewer(
code: toolCode,
theme: codeTheme,
language: language.toLowerCase(),
textStyle: kCodeStyle,
child: Container(
width: double.infinity,
child: CodePreviewer(
code: toolCode!,
theme: codeTheme,
language: language.toLowerCase(),
textStyle: kCodeStyle,
),
),
),
),