autonomous-app 0.3.49__tar.gz → 0.3.50__tar.gz

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.
Files changed (69) hide show
  1. {autonomous_app-0.3.49 → autonomous_app-0.3.50}/PKG-INFO +1 -1
  2. {autonomous_app-0.3.49 → autonomous_app-0.3.50}/src/autonomous/__init__.py +1 -1
  3. {autonomous_app-0.3.49 → autonomous_app-0.3.50}/src/autonomous/ai/audioagent.py +1 -1
  4. {autonomous_app-0.3.49 → autonomous_app-0.3.50}/src/autonomous/ai/models/local_model.py +38 -2
  5. {autonomous_app-0.3.49 → autonomous_app-0.3.50}/src/autonomous/taskrunner/autotasks.py +44 -8
  6. {autonomous_app-0.3.49 → autonomous_app-0.3.50}/src/autonomous_app.egg-info/PKG-INFO +1 -1
  7. {autonomous_app-0.3.49 → autonomous_app-0.3.50}/README.md +0 -0
  8. {autonomous_app-0.3.49 → autonomous_app-0.3.50}/pyproject.toml +0 -0
  9. {autonomous_app-0.3.49 → autonomous_app-0.3.50}/requirements.txt +0 -0
  10. {autonomous_app-0.3.49 → autonomous_app-0.3.50}/setup.cfg +0 -0
  11. {autonomous_app-0.3.49 → autonomous_app-0.3.50}/setup.py +0 -0
  12. {autonomous_app-0.3.49 → autonomous_app-0.3.50}/src/autonomous/ai/__init__.py +0 -0
  13. {autonomous_app-0.3.49 → autonomous_app-0.3.50}/src/autonomous/ai/baseagent.py +0 -0
  14. {autonomous_app-0.3.49 → autonomous_app-0.3.50}/src/autonomous/ai/imageagent.py +0 -0
  15. {autonomous_app-0.3.49 → autonomous_app-0.3.50}/src/autonomous/ai/jsonagent.py +0 -0
  16. {autonomous_app-0.3.49 → autonomous_app-0.3.50}/src/autonomous/ai/models/__init__.py +0 -0
  17. {autonomous_app-0.3.49 → autonomous_app-0.3.50}/src/autonomous/ai/models/gemini.py +0 -0
  18. {autonomous_app-0.3.49 → autonomous_app-0.3.50}/src/autonomous/ai/models/mock_model.py +0 -0
  19. {autonomous_app-0.3.49 → autonomous_app-0.3.50}/src/autonomous/ai/textagent.py +0 -0
  20. {autonomous_app-0.3.49 → autonomous_app-0.3.50}/src/autonomous/apis/version_control/GHCallbacks.py +0 -0
  21. {autonomous_app-0.3.49 → autonomous_app-0.3.50}/src/autonomous/apis/version_control/GHOrganization.py +0 -0
  22. {autonomous_app-0.3.49 → autonomous_app-0.3.50}/src/autonomous/apis/version_control/GHRepo.py +0 -0
  23. {autonomous_app-0.3.49 → autonomous_app-0.3.50}/src/autonomous/apis/version_control/GHVersionControl.py +0 -0
  24. {autonomous_app-0.3.49 → autonomous_app-0.3.50}/src/autonomous/apis/version_control/__init__.py +0 -0
  25. {autonomous_app-0.3.49 → autonomous_app-0.3.50}/src/autonomous/auth/__init__.py +0 -0
  26. {autonomous_app-0.3.49 → autonomous_app-0.3.50}/src/autonomous/auth/autoauth.py +0 -0
  27. {autonomous_app-0.3.49 → autonomous_app-0.3.50}/src/autonomous/auth/github.py +0 -0
  28. {autonomous_app-0.3.49 → autonomous_app-0.3.50}/src/autonomous/auth/google.py +0 -0
  29. {autonomous_app-0.3.49 → autonomous_app-0.3.50}/src/autonomous/auth/user.py +0 -0
  30. {autonomous_app-0.3.49 → autonomous_app-0.3.50}/src/autonomous/cli.py +0 -0
  31. {autonomous_app-0.3.49 → autonomous_app-0.3.50}/src/autonomous/db/__init__.py +0 -0
  32. {autonomous_app-0.3.49 → autonomous_app-0.3.50}/src/autonomous/db/base/__init__.py +0 -0
  33. {autonomous_app-0.3.49 → autonomous_app-0.3.50}/src/autonomous/db/base/common.py +0 -0
  34. {autonomous_app-0.3.49 → autonomous_app-0.3.50}/src/autonomous/db/base/datastructures.py +0 -0
  35. {autonomous_app-0.3.49 → autonomous_app-0.3.50}/src/autonomous/db/base/document.py +0 -0
  36. {autonomous_app-0.3.49 → autonomous_app-0.3.50}/src/autonomous/db/base/fields.py +0 -0
  37. {autonomous_app-0.3.49 → autonomous_app-0.3.50}/src/autonomous/db/base/metaclasses.py +0 -0
  38. {autonomous_app-0.3.49 → autonomous_app-0.3.50}/src/autonomous/db/base/utils.py +0 -0
  39. {autonomous_app-0.3.49 → autonomous_app-0.3.50}/src/autonomous/db/common.py +0 -0
  40. {autonomous_app-0.3.49 → autonomous_app-0.3.50}/src/autonomous/db/connection.py +0 -0
  41. {autonomous_app-0.3.49 → autonomous_app-0.3.50}/src/autonomous/db/context_managers.py +0 -0
  42. {autonomous_app-0.3.49 → autonomous_app-0.3.50}/src/autonomous/db/db_sync.py +0 -0
  43. {autonomous_app-0.3.49 → autonomous_app-0.3.50}/src/autonomous/db/dereference.py +0 -0
  44. {autonomous_app-0.3.49 → autonomous_app-0.3.50}/src/autonomous/db/document.py +0 -0
  45. {autonomous_app-0.3.49 → autonomous_app-0.3.50}/src/autonomous/db/errors.py +0 -0
  46. {autonomous_app-0.3.49 → autonomous_app-0.3.50}/src/autonomous/db/fields.py +0 -0
  47. {autonomous_app-0.3.49 → autonomous_app-0.3.50}/src/autonomous/db/mongodb_support.py +0 -0
  48. {autonomous_app-0.3.49 → autonomous_app-0.3.50}/src/autonomous/db/pymongo_support.py +0 -0
  49. {autonomous_app-0.3.49 → autonomous_app-0.3.50}/src/autonomous/db/queryset/__init__.py +0 -0
  50. {autonomous_app-0.3.49 → autonomous_app-0.3.50}/src/autonomous/db/queryset/base.py +0 -0
  51. {autonomous_app-0.3.49 → autonomous_app-0.3.50}/src/autonomous/db/queryset/field_list.py +0 -0
  52. {autonomous_app-0.3.49 → autonomous_app-0.3.50}/src/autonomous/db/queryset/manager.py +0 -0
  53. {autonomous_app-0.3.49 → autonomous_app-0.3.50}/src/autonomous/db/queryset/queryset.py +0 -0
  54. {autonomous_app-0.3.49 → autonomous_app-0.3.50}/src/autonomous/db/queryset/transform.py +0 -0
  55. {autonomous_app-0.3.49 → autonomous_app-0.3.50}/src/autonomous/db/queryset/visitor.py +0 -0
  56. {autonomous_app-0.3.49 → autonomous_app-0.3.50}/src/autonomous/db/signals.py +0 -0
  57. {autonomous_app-0.3.49 → autonomous_app-0.3.50}/src/autonomous/logger.py +0 -0
  58. {autonomous_app-0.3.49 → autonomous_app-0.3.50}/src/autonomous/model/autoattr.py +0 -0
  59. {autonomous_app-0.3.49 → autonomous_app-0.3.50}/src/autonomous/model/automodel.py +0 -0
  60. {autonomous_app-0.3.49 → autonomous_app-0.3.50}/src/autonomous/storage/__init__.py +0 -0
  61. {autonomous_app-0.3.49 → autonomous_app-0.3.50}/src/autonomous/storage/imagestorage.py +0 -0
  62. {autonomous_app-0.3.49 → autonomous_app-0.3.50}/src/autonomous/storage/localstorage.py +0 -0
  63. {autonomous_app-0.3.49 → autonomous_app-0.3.50}/src/autonomous/taskrunner/__init__.py +0 -0
  64. {autonomous_app-0.3.49 → autonomous_app-0.3.50}/src/autonomous/taskrunner/task_router.py +0 -0
  65. {autonomous_app-0.3.49 → autonomous_app-0.3.50}/src/autonomous/utils/markdown.py +0 -0
  66. {autonomous_app-0.3.49 → autonomous_app-0.3.50}/src/autonomous_app.egg-info/SOURCES.txt +0 -0
  67. {autonomous_app-0.3.49 → autonomous_app-0.3.50}/src/autonomous_app.egg-info/dependency_links.txt +0 -0
  68. {autonomous_app-0.3.49 → autonomous_app-0.3.50}/src/autonomous_app.egg-info/requires.txt +0 -0
  69. {autonomous_app-0.3.49 → autonomous_app-0.3.50}/src/autonomous_app.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: autonomous-app
3
- Version: 0.3.49
3
+ Version: 0.3.50
4
4
  Summary: Containerized application framework built on Flask with additional libraries and tools for rapid development of web applications.
5
5
  Author-email: Steven A Moore <samoore@binghamton.edu>
6
6
  Project-URL: homepage, https://github.com/Sallenmoore/autonomous
@@ -1,4 +1,4 @@
1
- __version__ = "0.3.49"
1
+ __version__ = "0.3.50"
2
2
 
3
3
  from dotenv import load_dotenv
4
4
 
@@ -8,7 +8,7 @@ from autonomous.model.autoattr import StringAttr
8
8
  class AudioAgent(BaseAgent):
9
9
  name = StringAttr(default="audioagent")
10
10
 
11
- provider = StringAttr(default="gemini")
11
+ provider = StringAttr(default="local")
12
12
 
13
13
  instructions = StringAttr(
14
14
  default="You are highly skilled AI trained to assist with generating audio files."
@@ -24,10 +24,36 @@ class LocalAIModel(AutoModel):
24
24
  _text_model = "llama3"
25
25
  _json_model = "llama3"
26
26
 
27
- # ... VOICES dictionary ... (Keep existing voices)
28
27
  VOICES = {
29
28
  "Zephyr": ["female"],
30
- # ... (keep all your voices) ...
29
+ "Puck": ["male"],
30
+ "Charon": ["male"],
31
+ "Kore": ["female"],
32
+ "Fenrir": ["non-binary"],
33
+ "Leda": ["female"],
34
+ "Orus": ["male"],
35
+ "Aoede": ["female"],
36
+ "Callirhoe": ["female"],
37
+ "Autonoe": ["female"],
38
+ "Enceladus": ["male"],
39
+ "Iapetus": ["male"],
40
+ "Umbriel": ["male"],
41
+ "Algieba": ["male"],
42
+ "Despina": ["female"],
43
+ "Erinome": ["female"],
44
+ "Algenib": ["male"],
45
+ "Rasalgethi": ["non-binary"],
46
+ "Laomedeia": ["female"],
47
+ "Achernar": ["female"],
48
+ "Alnilam": ["male"],
49
+ "Schedar": ["male"],
50
+ "Gacrux": ["female"],
51
+ "Pulcherrima": ["non-binary"],
52
+ "Achird": ["male"],
53
+ "Zubenelgenubi": ["male"],
54
+ "Vindemiatrix": ["female"],
55
+ "Sadachbia": ["male"],
56
+ "Sadaltager": ["male"],
31
57
  "Sulafar": ["female"],
32
58
  }
33
59
 
@@ -219,11 +245,21 @@ class LocalAIModel(AutoModel):
219
245
  files = {"file": ("audio.mp3", f_obj, "audio/mpeg")}
220
246
  response = requests.post(f"{self._media_url}/transcribe", files=files)
221
247
  response.raise_for_status()
248
+ log(f"Transcription response: {response.json()}", _print=True)
222
249
  return response.json().get("text", "")
223
250
  except Exception as e:
224
251
  log(f"STT Error: {e}", _print=True)
225
252
  return ""
226
253
 
254
+ def list_voices(self, filters=[]):
255
+ if not filters:
256
+ return list(self.VOICES.keys())
257
+ voices = []
258
+ for voice, attribs in self.VOICES.items():
259
+ if any(f.lower() in attribs for f in filters):
260
+ voices.append(voice)
261
+ return voices
262
+
227
263
  def generate_audio(
228
264
  self,
229
265
  prompt,
@@ -1,15 +1,18 @@
1
1
  import os
2
2
  from enum import Enum
3
+
3
4
  from redis import Redis
4
5
  from rq import Queue
5
6
  from rq.job import Job
6
7
 
8
+
7
9
  # 1. Define Priorities clearly
8
10
  class TaskPriority(Enum):
9
11
  HIGH = "high"
10
12
  DEFAULT = "default"
11
13
  LOW = "low"
12
14
 
15
+
13
16
  class AutoTask:
14
17
  def __init__(self, job):
15
18
  self.job = job
@@ -28,9 +31,10 @@ class AutoTask:
28
31
  "id": self.id,
29
32
  "return_value": self.job.result,
30
33
  "status": self.status,
31
- "error": self.job.exc_info
34
+ "error": self.job.exc_info,
32
35
  }
33
36
 
37
+
34
38
  class AutoTasks:
35
39
  _connection = None
36
40
  # We remove the single 'queue' class attribute because we now have multiple
@@ -76,12 +80,7 @@ class AutoTasks:
76
80
  q = self._get_queue(queue_name)
77
81
 
78
82
  # 4. Enqueue
79
- job = q.enqueue(
80
- func,
81
- args=args,
82
- kwargs=kwargs,
83
- job_timeout=job_timeout
84
- )
83
+ job = q.enqueue(func, args=args, kwargs=kwargs, job_timeout=job_timeout)
85
84
 
86
85
  return AutoTask(job)
87
86
 
@@ -90,4 +89,41 @@ class AutoTasks:
90
89
  job = Job.fetch(job_id, connection=AutoTasks._connection)
91
90
  return AutoTask(job)
92
91
  except Exception:
93
- return None
92
+ return None
93
+
94
+ def get_tasks(self):
95
+
96
+ high_queue = Queue("high", connection=self._connection)
97
+ default_queue = Queue("default", connection=self._connection)
98
+ low_queue = Queue("low", connection=self._connection)
99
+
100
+ registries = {
101
+ "started": [
102
+ high_queue.started_job_registry,
103
+ default_queue.started_job_registry,
104
+ low_queue.started_job_registry,
105
+ ],
106
+ "finished": [
107
+ high_queue.finished_job_registry,
108
+ default_queue.finished_job_registry,
109
+ low_queue.finished_job_registry,
110
+ ],
111
+ "failed": [
112
+ high_queue.failed_job_registry,
113
+ default_queue.failed_job_registry,
114
+ low_queue.failed_job_registry,
115
+ ],
116
+ "queued": [high_queue, default_queue, low_queue],
117
+ }
118
+
119
+ tasks = {}
120
+ for status, regs in registries.items():
121
+ all_job_ids = []
122
+ for reg in regs:
123
+ all_job_ids.extend(reg.get_job_ids())
124
+ # Use a set to remove duplicate job_ids if a job is in multiple registries
125
+ unique_job_ids = sorted(list(set(all_job_ids)), reverse=True)
126
+ jobs = Job.fetch_many(unique_job_ids, connection=self._connection)
127
+ # Filter out None values in case a job expired between fetch and get
128
+ tasks[status] = [job for job in jobs if job]
129
+ return tasks
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: autonomous-app
3
- Version: 0.3.49
3
+ Version: 0.3.50
4
4
  Summary: Containerized application framework built on Flask with additional libraries and tools for rapid development of web applications.
5
5
  Author-email: Steven A Moore <samoore@binghamton.edu>
6
6
  Project-URL: homepage, https://github.com/Sallenmoore/autonomous