auto-coder 0.1.302__py3-none-any.whl → 0.1.304__py3-none-any.whl

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.

Potentially problematic release.


This version of auto-coder might be problematic. Click here for more details.

@@ -30,17 +30,22 @@ from autocoder.utils.llms import get_llm_names
30
30
  from autocoder.privacy.model_filter import ModelPathFilter
31
31
  from autocoder.common import SourceCodeList
32
32
  from autocoder.common.global_cancel import global_cancel
33
+ from autocoder.events.event_manager_singleton import get_event_manager
34
+ from autocoder.events import event_content as EventContentCreator
35
+ from autocoder.events.event_types import EventMetadata
33
36
 
34
37
 
35
- class BaseAction:
38
+ class BaseAction:
36
39
  def _get_content_length(self, content: str) -> int:
37
40
  try:
38
41
  tokenizer = BuildinTokenizer()
39
42
  return tokenizer.count_tokens(content)
40
43
  except Exception as e:
41
- logger.warning(f"Failed to use tokenizer to count tokens, fallback to len(): {e}")
44
+ logger.warning(
45
+ f"Failed to use tokenizer to count tokens, fallback to len(): {e}")
42
46
  return len(content)
43
47
 
48
+
44
49
  class ActionTSProject(BaseAction):
45
50
  def __init__(
46
51
  self, args: AutoCoderArgs, llm: Optional[byzerllm.ByzerLLM] = None
@@ -66,7 +71,7 @@ class ActionTSProject(BaseAction):
66
71
  args.query = (args.context or "") + "\n\n" + args.query
67
72
  source_code_list = build_index_and_filter_files(
68
73
  llm=self.llm, args=args, sources=pp.sources
69
- )
74
+ )
70
75
  if args.in_code_apply:
71
76
  args.query = old_query
72
77
 
@@ -86,13 +91,13 @@ class ActionTSProject(BaseAction):
86
91
  max_iter=self.args.image_max_iter,
87
92
  )
88
93
  html_code = ""
89
- with open(html_path, "r",encoding="utf-8") as f:
94
+ with open(html_path, "r", encoding="utf-8") as f:
90
95
  html_code = f.read()
91
-
92
- source_code_list.sources.append(SourceCode(
96
+
97
+ source_code_list.sources.append(SourceCode(
93
98
  module_name=html_path,
94
99
  source_code=html_code,
95
- tag="IMAGE"))
100
+ tag="IMAGE"))
96
101
 
97
102
  self.process_content(source_code_list)
98
103
  return True
@@ -105,13 +110,14 @@ class ActionTSProject(BaseAction):
105
110
  if content_length > self.args.model_max_input_length:
106
111
  logger.warning(
107
112
  f"Content(send to model) is {content_length} tokens, which is larger than the maximum input length {self.args.model_max_input_length}"
108
- )
113
+ )
109
114
 
110
115
  if global_cancel.requested:
111
- printer = Printer()
112
- raise Exception(printer.get_message_from_key("generation_cancelled"))
113
-
114
- if args.execute:
116
+ printer = Printer()
117
+ raise Exception(printer.get_message_from_key(
118
+ "generation_cancelled"))
119
+
120
+ if args.execute:
115
121
  self.printer.print_in_terminal("code_generation_start")
116
122
  start_time = time.time()
117
123
  if args.auto_merge == "diff":
@@ -127,8 +133,9 @@ class ActionTSProject(BaseAction):
127
133
  llm=self.llm, args=self.args, action=self
128
134
  )
129
135
  else:
130
- generate = CodeAutoGenerate(llm=self.llm, args=self.args, action=self)
131
-
136
+ generate = CodeAutoGenerate(
137
+ llm=self.llm, args=self.args, action=self)
138
+
132
139
  if self.args.enable_multi_round_generate:
133
140
  generate_result = generate.multi_round_run(
134
141
  query=args.query, source_code_list=source_code_list
@@ -138,41 +145,69 @@ class ActionTSProject(BaseAction):
138
145
  query=args.query, source_code_list=source_code_list
139
146
  )
140
147
  elapsed_time = time.time() - start_time
141
- speed = generate_result.metadata.get('generated_tokens_count', 0) / elapsed_time if elapsed_time > 0 else 0
142
- input_tokens_cost = generate_result.metadata.get('input_tokens_cost', 0)
143
- generated_tokens_cost = generate_result.metadata.get('generated_tokens_cost', 0)
148
+ speed = generate_result.metadata.get(
149
+ 'generated_tokens_count', 0) / elapsed_time if elapsed_time > 0 else 0
150
+ input_tokens_cost = generate_result.metadata.get(
151
+ 'input_tokens_cost', 0)
152
+ generated_tokens_cost = generate_result.metadata.get(
153
+ 'generated_tokens_cost', 0)
144
154
  model_names = ",".join(get_llm_names(generate.llms))
145
155
  self.printer.print_in_terminal(
146
156
  "code_generation_complete",
147
157
  duration=elapsed_time,
148
- input_tokens=generate_result.metadata.get('input_tokens_count', 0),
149
- output_tokens=generate_result.metadata.get('generated_tokens_count', 0),
158
+ input_tokens=generate_result.metadata.get(
159
+ 'input_tokens_count', 0),
160
+ output_tokens=generate_result.metadata.get(
161
+ 'generated_tokens_count', 0),
150
162
  input_cost=input_tokens_cost,
151
163
  output_cost=generated_tokens_cost,
152
164
  speed=round(speed, 2),
153
165
  model_names=model_names,
154
166
  sampling_count=len(generate_result.contents)
155
167
  )
156
-
168
+
169
+ get_event_manager(self.args.event_file).write_result(
170
+ EventContentCreator.create_result(content=EventContentCreator.ResultTokenStatContent(
171
+ model_name=model_names,
172
+ elapsed_time=elapsed_time,
173
+ input_tokens=generate_result.metadata.get(
174
+ 'input_tokens_count', 0),
175
+ output_tokens=generate_result.metadata.get(
176
+ 'generated_tokens_count', 0),
177
+ input_cost=input_tokens_cost,
178
+ output_cost=generated_tokens_cost,
179
+ speed=round(speed, 2)
180
+ )).to_dict(),metadata=EventMetadata(
181
+ action_file=self.args.file
182
+ ).to_dict())
183
+
157
184
  if global_cancel.requested:
158
- printer = Printer()
159
- raise Exception(printer.get_message_from_key("generation_cancelled"))
160
-
185
+ printer = Printer()
186
+ raise Exception(printer.get_message_from_key(
187
+ "generation_cancelled"))
188
+
161
189
  merge_result = None
162
190
  if args.execute and args.auto_merge:
163
191
  self.printer.print_in_terminal("code_merge_start")
164
192
  if args.auto_merge == "diff":
165
- code_merge = CodeAutoMergeDiff(llm=self.llm, args=self.args)
166
- merge_result = code_merge.merge_code(generate_result=generate_result)
193
+ code_merge = CodeAutoMergeDiff(
194
+ llm=self.llm, args=self.args)
195
+ merge_result = code_merge.merge_code(
196
+ generate_result=generate_result)
167
197
  elif args.auto_merge == "strict_diff":
168
- code_merge = CodeAutoMergeStrictDiff(llm=self.llm, args=self.args)
169
- merge_result = code_merge.merge_code(generate_result=generate_result)
198
+ code_merge = CodeAutoMergeStrictDiff(
199
+ llm=self.llm, args=self.args)
200
+ merge_result = code_merge.merge_code(
201
+ generate_result=generate_result)
170
202
  elif args.auto_merge == "editblock":
171
- code_merge = CodeAutoMergeEditBlock(llm=self.llm, args=self.args)
172
- merge_result = code_merge.merge_code(generate_result=generate_result)
203
+ code_merge = CodeAutoMergeEditBlock(
204
+ llm=self.llm, args=self.args)
205
+ merge_result = code_merge.merge_code(
206
+ generate_result=generate_result)
173
207
  else:
174
208
  code_merge = CodeAutoMerge(llm=self.llm, args=self.args)
175
- merge_result = code_merge.merge_code(generate_result=generate_result)
209
+ merge_result = code_merge.merge_code(
210
+ generate_result=generate_result)
176
211
 
177
212
  if merge_result is not None:
178
213
  content = merge_result.contents[0]
@@ -190,7 +225,6 @@ class ActionTSProject(BaseAction):
190
225
  conversations=generate_result.conversations[0],
191
226
  model=self.llm.default_model_name,
192
227
  )
193
-
194
228
 
195
229
 
196
230
  class ActionPyScriptProject(BaseAction):
@@ -216,9 +250,10 @@ class ActionPyScriptProject(BaseAction):
216
250
  def process_content(self, source_code_list: SourceCodeList):
217
251
  args = self.args
218
252
  if global_cancel.requested:
219
- printer = Printer()
220
- raise Exception(printer.get_message_from_key("generation_cancelled"))
221
-
253
+ printer = Printer()
254
+ raise Exception(printer.get_message_from_key(
255
+ "generation_cancelled"))
256
+
222
257
  if args.execute:
223
258
  self.printer.print_in_terminal("code_generation_start")
224
259
  start_time = time.time()
@@ -235,7 +270,8 @@ class ActionPyScriptProject(BaseAction):
235
270
  llm=self.llm, args=self.args, action=self
236
271
  )
237
272
  else:
238
- generate = CodeAutoGenerate(llm=self.llm, args=self.args, action=self)
273
+ generate = CodeAutoGenerate(
274
+ llm=self.llm, args=self.args, action=self)
239
275
  if self.args.enable_multi_round_generate:
240
276
  generate_result = generate.multi_round_run(
241
277
  query=args.query, source_code_list=source_code_list
@@ -246,15 +282,20 @@ class ActionPyScriptProject(BaseAction):
246
282
  )
247
283
 
248
284
  elapsed_time = time.time() - start_time
249
- speed = generate_result.metadata.get('generated_tokens_count', 0) / elapsed_time if elapsed_time > 0 else 0
285
+ speed = generate_result.metadata.get(
286
+ 'generated_tokens_count', 0) / elapsed_time if elapsed_time > 0 else 0
250
287
  model_names = ",".join(get_llm_names(generate.llms))
251
- input_tokens_cost = generate_result.metadata.get('input_tokens_cost', 0)
252
- generated_tokens_cost = generate_result.metadata.get('generated_tokens_cost', 0)
288
+ input_tokens_cost = generate_result.metadata.get(
289
+ 'input_tokens_cost', 0)
290
+ generated_tokens_cost = generate_result.metadata.get(
291
+ 'generated_tokens_cost', 0)
253
292
  self.printer.print_in_terminal(
254
293
  "code_generation_complete",
255
294
  duration=elapsed_time,
256
- input_tokens=generate_result.metadata.get('input_tokens_count', 0),
257
- output_tokens=generate_result.metadata.get('generated_tokens_count', 0),
295
+ input_tokens=generate_result.metadata.get(
296
+ 'input_tokens_count', 0),
297
+ output_tokens=generate_result.metadata.get(
298
+ 'generated_tokens_count', 0),
258
299
  input_cost=input_tokens_cost,
259
300
  output_cost=generated_tokens_cost,
260
301
  speed=round(speed, 2),
@@ -262,25 +303,48 @@ class ActionPyScriptProject(BaseAction):
262
303
  sampling_count=len(generate_result.contents)
263
304
  )
264
305
 
306
+ get_event_manager(self.args.event_file).write_result(
307
+ EventContentCreator.create_result(content=EventContentCreator.ResultTokenStatContent(
308
+ model_name=model_names,
309
+ elapsed_time=elapsed_time,
310
+ input_tokens=generate_result.metadata.get(
311
+ 'input_tokens_count', 0),
312
+ output_tokens=generate_result.metadata.get(
313
+ 'generated_tokens_count', 0),
314
+ input_cost=input_tokens_cost,
315
+ output_cost=generated_tokens_cost,
316
+ speed=round(speed, 2)
317
+ )).to_dict(),metadata=EventMetadata(
318
+ action_file=self.args.file
319
+ ).to_dict())
320
+
265
321
  if global_cancel.requested:
266
- printer = Printer()
267
- raise Exception(printer.get_message_from_key("generation_cancelled"))
268
-
322
+ printer = Printer()
323
+ raise Exception(printer.get_message_from_key(
324
+ "generation_cancelled"))
325
+
269
326
  merge_result = None
270
327
  if args.execute and args.auto_merge:
271
328
  self.printer.print_in_terminal("code_merge_start")
272
329
  if args.auto_merge == "diff":
273
- code_merge = CodeAutoMergeDiff(llm=self.llm, args=self.args)
274
- merge_result = code_merge.merge_code(generate_result=generate_result)
330
+ code_merge = CodeAutoMergeDiff(
331
+ llm=self.llm, args=self.args)
332
+ merge_result = code_merge.merge_code(
333
+ generate_result=generate_result)
275
334
  elif args.auto_merge == "strict_diff":
276
- code_merge = CodeAutoMergeStrictDiff(llm=self.llm, args=self.args)
277
- merge_result = code_merge.merge_code(generate_result=generate_result)
335
+ code_merge = CodeAutoMergeStrictDiff(
336
+ llm=self.llm, args=self.args)
337
+ merge_result = code_merge.merge_code(
338
+ generate_result=generate_result)
278
339
  elif args.auto_merge == "editblock":
279
- code_merge = CodeAutoMergeEditBlock(llm=self.llm, args=self.args)
280
- merge_result = code_merge.merge_code(generate_result=generate_result)
340
+ code_merge = CodeAutoMergeEditBlock(
341
+ llm=self.llm, args=self.args)
342
+ merge_result = code_merge.merge_code(
343
+ generate_result=generate_result)
281
344
  else:
282
345
  code_merge = CodeAutoMerge(llm=self.llm, args=self.args)
283
- merge_result = code_merge.merge_code(generate_result=generate_result)
346
+ merge_result = code_merge.merge_code(
347
+ generate_result=generate_result)
284
348
 
285
349
  content = merge_result.contents[0]
286
350
 
@@ -298,7 +362,7 @@ class ActionPyScriptProject(BaseAction):
298
362
  instruction=self.args.query,
299
363
  conversations=generate_result.conversations[0],
300
364
  model=self.llm.default_model_name,
301
- )
365
+ )
302
366
 
303
367
 
304
368
  class ActionPyProject(BaseAction):
@@ -316,8 +380,9 @@ class ActionPyProject(BaseAction):
316
380
  return False
317
381
  pp = PyProject(args=self.args, llm=self.llm)
318
382
  self.pp = pp
319
- pp.run(packages=args.py_packages.split(",") if args.py_packages else [])
320
- source_code_list = SourceCodeList(pp.sources)
383
+ pp.run(packages=args.py_packages.split(
384
+ ",") if args.py_packages else [])
385
+ source_code_list = SourceCodeList(pp.sources)
321
386
 
322
387
  if self.llm:
323
388
  old_query = args.query
@@ -339,15 +404,16 @@ class ActionPyProject(BaseAction):
339
404
  content_length = self._get_content_length(content)
340
405
  if content_length > self.args.model_max_input_length:
341
406
  self.printer.print_in_terminal(
342
- "code_execution_warning",
343
- style="yellow",
344
- content_length=content_length,
345
- max_length=self.args.model_max_input_length
346
- )
347
-
407
+ "code_execution_warning",
408
+ style="yellow",
409
+ content_length=content_length,
410
+ max_length=self.args.model_max_input_length
411
+ )
412
+
348
413
  if global_cancel.requested:
349
- printer = Printer()
350
- raise Exception(printer.get_message_from_key("generation_cancelled"))
414
+ printer = Printer()
415
+ raise Exception(printer.get_message_from_key(
416
+ "generation_cancelled"))
351
417
 
352
418
  if args.execute:
353
419
  self.printer.print_in_terminal("code_generation_start")
@@ -365,8 +431,8 @@ class ActionPyProject(BaseAction):
365
431
  llm=self.llm, args=self.args, action=self
366
432
  )
367
433
  else:
368
- generate = CodeAutoGenerate(llm=self.llm, args=self.args, action=self)
369
-
434
+ generate = CodeAutoGenerate(
435
+ llm=self.llm, args=self.args, action=self)
370
436
 
371
437
  if self.args.enable_multi_round_generate:
372
438
  generate_result = generate.multi_round_run(
@@ -377,15 +443,20 @@ class ActionPyProject(BaseAction):
377
443
  query=args.query, source_code_list=source_code_list
378
444
  )
379
445
  elapsed_time = time.time() - start_time
380
- speed = generate_result.metadata.get('generated_tokens_count', 0) / elapsed_time if elapsed_time > 0 else 0
446
+ speed = generate_result.metadata.get(
447
+ 'generated_tokens_count', 0) / elapsed_time if elapsed_time > 0 else 0
381
448
  model_names = ",".join(get_llm_names(generate.llms))
382
- input_tokens_cost = generate_result.metadata.get('input_tokens_cost', 0)
383
- generated_tokens_cost = generate_result.metadata.get('generated_tokens_cost', 0)
449
+ input_tokens_cost = generate_result.metadata.get(
450
+ 'input_tokens_cost', 0)
451
+ generated_tokens_cost = generate_result.metadata.get(
452
+ 'generated_tokens_cost', 0)
384
453
  self.printer.print_in_terminal(
385
454
  "code_generation_complete",
386
455
  duration=elapsed_time,
387
- input_tokens=generate_result.metadata.get('input_tokens_count', 0),
388
- output_tokens=generate_result.metadata.get('generated_tokens_count', 0),
456
+ input_tokens=generate_result.metadata.get(
457
+ 'input_tokens_count', 0),
458
+ output_tokens=generate_result.metadata.get(
459
+ 'generated_tokens_count', 0),
389
460
  input_cost=input_tokens_cost,
390
461
  output_cost=generated_tokens_cost,
391
462
  speed=round(speed, 2),
@@ -393,25 +464,48 @@ class ActionPyProject(BaseAction):
393
464
  sampling_count=len(generate_result.contents)
394
465
  )
395
466
 
467
+ get_event_manager(self.args.event_file).write_result(
468
+ EventContentCreator.create_result(content=EventContentCreator.ResultTokenStatContent(
469
+ model_name=model_names,
470
+ elapsed_time=elapsed_time,
471
+ input_tokens=generate_result.metadata.get(
472
+ 'input_tokens_count', 0),
473
+ output_tokens=generate_result.metadata.get(
474
+ 'generated_tokens_count', 0),
475
+ input_cost=input_tokens_cost,
476
+ output_cost=generated_tokens_cost,
477
+ speed=round(speed, 2)
478
+ )).to_dict(), metadata=EventMetadata(
479
+ action_file=self.args.file
480
+ ).to_dict())
481
+
396
482
  if global_cancel.requested:
397
- printer = Printer()
398
- raise Exception(printer.get_message_from_key("generation_cancelled"))
399
-
483
+ printer = Printer()
484
+ raise Exception(printer.get_message_from_key(
485
+ "generation_cancelled"))
486
+
400
487
  merge_result = None
401
488
  if args.execute and args.auto_merge:
402
489
  self.printer.print_in_terminal("code_merge_start")
403
490
  if args.auto_merge == "diff":
404
- code_merge = CodeAutoMergeDiff(llm=self.llm, args=self.args)
405
- merge_result = code_merge.merge_code(generate_result=generate_result)
491
+ code_merge = CodeAutoMergeDiff(
492
+ llm=self.llm, args=self.args)
493
+ merge_result = code_merge.merge_code(
494
+ generate_result=generate_result)
406
495
  elif args.auto_merge == "strict_diff":
407
- code_merge = CodeAutoMergeStrictDiff(llm=self.llm, args=self.args)
408
- merge_result = code_merge.merge_code(generate_result=generate_result)
496
+ code_merge = CodeAutoMergeStrictDiff(
497
+ llm=self.llm, args=self.args)
498
+ merge_result = code_merge.merge_code(
499
+ generate_result=generate_result)
409
500
  elif args.auto_merge == "editblock":
410
- code_merge = CodeAutoMergeEditBlock(llm=self.llm, args=self.args)
411
- merge_result = code_merge.merge_code(generate_result=generate_result)
501
+ code_merge = CodeAutoMergeEditBlock(
502
+ llm=self.llm, args=self.args)
503
+ merge_result = code_merge.merge_code(
504
+ generate_result=generate_result)
412
505
  else:
413
506
  code_merge = CodeAutoMerge(llm=self.llm, args=self.args)
414
- merge_result = code_merge.merge_code(generate_result=generate_result)
507
+ merge_result = code_merge.merge_code(
508
+ generate_result=generate_result)
415
509
 
416
510
  content = merge_result.contents[0]
417
511
 
@@ -429,7 +523,7 @@ class ActionPyProject(BaseAction):
429
523
  instruction=self.args.query,
430
524
  conversations=generate_result.conversations[0],
431
525
  model=self.llm.default_model_name,
432
- )
526
+ )
433
527
 
434
528
 
435
529
  class ActionSuffixProject(BaseAction):
@@ -467,11 +561,12 @@ class ActionSuffixProject(BaseAction):
467
561
  if content_length > self.args.model_max_input_length:
468
562
  logger.warning(
469
563
  f"Content(send to model) is {content_length} tokens, which is larger than the maximum input length {self.args.model_max_input_length}"
470
- )
564
+ )
471
565
 
472
566
  if global_cancel.requested:
473
- printer = Printer()
474
- raise Exception(printer.get_message_from_key("generation_cancelled"))
567
+ printer = Printer()
568
+ raise Exception(printer.get_message_from_key(
569
+ "generation_cancelled"))
475
570
 
476
571
  if args.execute:
477
572
  self.printer.print_in_terminal("code_generation_start")
@@ -489,7 +584,8 @@ class ActionSuffixProject(BaseAction):
489
584
  llm=self.llm, args=self.args, action=self
490
585
  )
491
586
  else:
492
- generate = CodeAutoGenerate(llm=self.llm, args=self.args, action=self)
587
+ generate = CodeAutoGenerate(
588
+ llm=self.llm, args=self.args, action=self)
493
589
  if self.args.enable_multi_round_generate:
494
590
  generate_result = generate.multi_round_run(
495
591
  query=args.query, source_code_list=source_code_list
@@ -498,43 +594,69 @@ class ActionSuffixProject(BaseAction):
498
594
  generate_result = generate.single_round_run(
499
595
  query=args.query, source_code_list=source_code_list
500
596
  )
501
-
597
+
502
598
  elapsed_time = time.time() - start_time
503
- speed = generate_result.metadata.get('generated_tokens_count', 0) / elapsed_time if elapsed_time > 0 else 0
599
+ speed = generate_result.metadata.get(
600
+ 'generated_tokens_count', 0) / elapsed_time if elapsed_time > 0 else 0
504
601
  model_names = ",".join(get_llm_names(generate.llms))
505
- input_tokens_cost = generate_result.metadata.get('input_tokens_cost', 0)
506
- generated_tokens_cost = generate_result.metadata.get('generated_tokens_cost', 0)
602
+ input_tokens_cost = generate_result.metadata.get(
603
+ 'input_tokens_cost', 0)
604
+ generated_tokens_cost = generate_result.metadata.get(
605
+ 'generated_tokens_cost', 0)
507
606
  self.printer.print_in_terminal(
508
607
  "code_generation_complete",
509
608
  duration=elapsed_time,
510
609
  input_tokens=generate_result.metadata.get('input_tokens_count', 0),
511
- output_tokens=generate_result.metadata.get('generated_tokens_count', 0),
610
+ output_tokens=generate_result.metadata.get(
611
+ 'generated_tokens_count', 0),
512
612
  input_cost=input_tokens_cost,
513
613
  output_cost=generated_tokens_cost,
514
614
  speed=round(speed, 2),
515
615
  model_names=model_names,
516
616
  sampling_count=len(generate_result.contents)
517
617
  )
518
-
618
+
619
+ get_event_manager(self.args.event_file).write_result(
620
+ EventContentCreator.create_result(content=EventContentCreator.ResultTokenStatContent(
621
+ model_name=model_names,
622
+ elapsed_time=elapsed_time,
623
+ input_tokens=generate_result.metadata.get(
624
+ 'input_tokens_count', 0),
625
+ output_tokens=generate_result.metadata.get(
626
+ 'generated_tokens_count', 0),
627
+ input_cost=input_tokens_cost,
628
+ output_cost=generated_tokens_cost,
629
+ speed=round(speed, 2)
630
+ )).to_dict(), metadata=EventMetadata(
631
+ action_file=self.args.file
632
+ ).to_dict())
633
+
519
634
  if global_cancel.requested:
520
- printer = Printer()
521
- raise Exception(printer.get_message_from_key("generation_cancelled") )
522
-
635
+ printer = Printer()
636
+ raise Exception(printer.get_message_from_key(
637
+ "generation_cancelled"))
638
+
523
639
  merge_result = None
524
640
  if args.execute and args.auto_merge:
525
641
  self.printer.print_in_terminal("code_merge_start")
526
642
  if args.auto_merge == "diff":
527
643
  code_merge = CodeAutoMergeDiff(llm=self.llm, args=self.args)
528
- merge_result = code_merge.merge_code(generate_result=generate_result)
644
+ merge_result = code_merge.merge_code(
645
+ generate_result=generate_result)
529
646
  elif args.auto_merge == "strict_diff":
530
- code_merge = CodeAutoMergeStrictDiff(llm=self.llm, args=self.args)
531
- merge_result = code_merge.merge_code(generate_result=generate_result)
647
+ code_merge = CodeAutoMergeStrictDiff(
648
+ llm=self.llm, args=self.args)
649
+ merge_result = code_merge.merge_code(
650
+ generate_result=generate_result)
532
651
  elif args.auto_merge == "editblock":
533
- code_merge = CodeAutoMergeEditBlock(llm=self.llm, args=self.args)
534
- merge_result = code_merge.merge_code(generate_result=generate_result)
652
+ code_merge = CodeAutoMergeEditBlock(
653
+ llm=self.llm, args=self.args)
654
+ merge_result = code_merge.merge_code(
655
+ generate_result=generate_result)
535
656
  else:
536
657
  code_merge = CodeAutoMerge(llm=self.llm, args=self.args)
537
- merge_result = code_merge.merge_code(generate_result=generate_result)
658
+ merge_result = code_merge.merge_code(
659
+ generate_result=generate_result)
538
660
 
539
661
  if merge_result is not None:
540
662
  content = merge_result.contents[0]
@@ -543,7 +665,7 @@ class ActionSuffixProject(BaseAction):
543
665
  instruction=self.args.query,
544
666
  conversations=merge_result.conversations[0],
545
667
  model=self.llm.default_model_name,
546
- )
668
+ )
547
669
  else:
548
670
  content = generate_result.contents[0]
549
671
 
@@ -553,5 +675,3 @@ class ActionSuffixProject(BaseAction):
553
675
  conversations=generate_result.conversations[0],
554
676
  model=self.llm.default_model_name,
555
677
  )
556
-
557
-
@@ -17,6 +17,9 @@ import time
17
17
  from autocoder.utils.llms import get_llm_names
18
18
  from autocoder.common import SourceCodeList
19
19
  from autocoder.common.global_cancel import global_cancel
20
+ from autocoder.events.event_manager_singleton import get_event_manager
21
+ from autocoder.events import event_content as EventContentCreator
22
+ from autocoder.events.event_types import EventMetadata
20
23
  from loguru import logger
21
24
  class ActionRegexProject:
22
25
  def __init__(
@@ -110,6 +113,21 @@ class ActionRegexProject:
110
113
  sampling_count=len(generate_result.contents)
111
114
  )
112
115
 
116
+ get_event_manager(self.args.event_file).write_result(
117
+ EventContentCreator.create_result(content=EventContentCreator.ResultTokenStatContent(
118
+ model_name=model_names,
119
+ elapsed_time=elapsed_time,
120
+ input_tokens=generate_result.metadata.get(
121
+ 'input_tokens_count', 0),
122
+ output_tokens=generate_result.metadata.get(
123
+ 'generated_tokens_count', 0),
124
+ input_cost=input_tokens_cost,
125
+ output_cost=generated_tokens_cost,
126
+ speed=round(speed, 2),
127
+ )).to_dict(),metadata=EventMetadata(
128
+ action_file=self.args.file
129
+ ).to_dict())
130
+
113
131
  if global_cancel.requested:
114
132
  printer = Printer()
115
133
  raise Exception(printer.get_message_from_key("generation_cancelled"))
@@ -0,0 +1,57 @@
1
+ """
2
+ Event handling system for autocoder.
3
+ This module provides a way for two systems to communicate through events.
4
+ """
5
+
6
+ from .event_store import EventStore, JsonlEventStore
7
+ from .event_types import Event, EventType, ResponseEvent
8
+ from .event_manager import EventManager
9
+ from .event_manager_singleton import EventManagerSingleton, get_event_manager
10
+ from .event_content import (
11
+ BaseEventContent, StreamContent, ResultContent,
12
+ AskUserContent, UserResponseContent, CodeContent,
13
+ MarkdownContent, ErrorContent, CompletionContent, ContentType, StreamState,
14
+ create_stream_thinking, create_stream_content,
15
+ create_result, create_ask_user, create_user_response,
16
+ create_completion, create_error
17
+ )
18
+
19
+ __all__ = [
20
+ # Event store
21
+ "EventStore",
22
+ "JsonlEventStore",
23
+
24
+ # Event types
25
+ "Event",
26
+ "EventType",
27
+ "ResponseEvent",
28
+ "EventManager",
29
+
30
+ # Singleton
31
+ "EventManagerSingleton",
32
+ "get_event_manager",
33
+
34
+ # Content models
35
+ "BaseEventContent",
36
+ "StreamContent",
37
+ "ResultContent",
38
+ "AskUserContent",
39
+ "UserResponseContent",
40
+ "CodeContent",
41
+ "MarkdownContent",
42
+ "ErrorContent",
43
+ "CompletionContent",
44
+
45
+ # Enums
46
+ "ContentType",
47
+ "StreamState",
48
+
49
+ # Factory functions
50
+ "create_stream_thinking",
51
+ "create_stream_content",
52
+ "create_result",
53
+ "create_ask_user",
54
+ "create_user_response",
55
+ "create_completion",
56
+ "create_error"
57
+ ]