django-agent-studio 0.2.8__py3-none-any.whl → 0.3.0__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.
@@ -12,8 +12,17 @@
12
12
  </div>
13
13
 
14
14
  <!-- Quick Actions -->
15
- <div class="grid grid-cols-1 md:grid-cols-3 gap-6 mb-8">
16
- <a href="{% url 'agent_studio:agent_create' %}"
15
+ <div class="grid grid-cols-1 md:grid-cols-4 gap-6 mb-8">
16
+ <a href="{% url 'agent_studio:system_list' %}"
17
+ class="bg-indigo-600 hover:bg-indigo-700 text-white rounded-lg p-6 transition-colors">
18
+ <div class="flex items-center space-x-3 mb-2">
19
+ <span class="text-2xl">🔗</span>
20
+ <span class="text-lg font-semibold">My Systems</span>
21
+ </div>
22
+ <p class="text-indigo-100 text-sm">Multi-agent systems that work together</p>
23
+ </a>
24
+
25
+ <a href="{% url 'agent_studio:agent_create' %}"
17
26
  class="bg-primary-600 hover:bg-primary-700 text-white rounded-lg p-6 transition-colors">
18
27
  <div class="flex items-center space-x-3 mb-2">
19
28
  <span class="text-2xl">✨</span>
@@ -21,8 +30,8 @@
21
30
  </div>
22
31
  <p class="text-primary-100 text-sm">Start building a custom AI agent from scratch</p>
23
32
  </a>
24
-
25
- <a href="{% url 'agent_studio:agent_list' %}"
33
+
34
+ <a href="{% url 'agent_studio:agent_list' %}"
26
35
  class="bg-white hover:bg-gray-50 border border-gray-200 rounded-lg p-6 transition-colors">
27
36
  <div class="flex items-center space-x-3 mb-2">
28
37
  <span class="text-2xl">📋</span>
@@ -30,7 +39,7 @@
30
39
  </div>
31
40
  <p class="text-gray-600 text-sm">View and manage your existing agents</p>
32
41
  </a>
33
-
42
+
34
43
  <div class="bg-white hover:bg-gray-50 border border-gray-200 rounded-lg p-6 transition-colors cursor-pointer">
35
44
  <div class="flex items-center space-x-3 mb-2">
36
45
  <span class="text-2xl">📚</span>
@@ -40,13 +49,42 @@
40
49
  </div>
41
50
  </div>
42
51
 
52
+ <!-- Recent Systems -->
53
+ <div class="mb-8">
54
+ <h2 class="text-xl font-semibold text-gray-800 mb-4">Recent Systems</h2>
55
+ {% if recent_systems %}
56
+ <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4">
57
+ {% for system in recent_systems %}
58
+ <a href="{% url 'agent_studio:system_test' system.id %}"
59
+ class="bg-white border border-gray-200 rounded-lg p-4 hover:border-indigo-300 hover:shadow-sm transition-all">
60
+ <div class="flex items-center space-x-3 mb-2">
61
+ <span class="text-xl">🔗</span>
62
+ <span class="font-medium text-gray-800">{{ system.name }}</span>
63
+ </div>
64
+ <p class="text-sm text-gray-500 line-clamp-2">{{ system.description|default:"No description" }}</p>
65
+ <div class="mt-2 flex items-center space-x-2 text-xs text-gray-400">
66
+ <span>Entry: {{ system.entry_agent.icon|default:"🤖" }} {{ system.entry_agent.name }}</span>
67
+ </div>
68
+ <div class="mt-2 text-xs text-gray-400">
69
+ Updated {{ system.updated_at|timesince }} ago
70
+ </div>
71
+ </a>
72
+ {% endfor %}
73
+ </div>
74
+ {% else %}
75
+ <div class="bg-gray-50 border border-gray-200 rounded-lg p-6 text-center">
76
+ <p class="text-gray-500 text-sm">No systems yet. Systems combine multiple agents to work together.</p>
77
+ </div>
78
+ {% endif %}
79
+ </div>
80
+
43
81
  <!-- Recent Agents -->
44
82
  {% if recent_agents %}
45
83
  <div class="mb-8">
46
84
  <h2 class="text-xl font-semibold text-gray-800 mb-4">Recent Agents</h2>
47
85
  <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4">
48
86
  {% for agent in recent_agents %}
49
- <a href="{% url 'agent_studio:agent_edit' agent.id %}"
87
+ <a href="{% url 'agent_studio:agent_edit' agent.id %}"
50
88
  class="bg-white border border-gray-200 rounded-lg p-4 hover:border-primary-300 hover:shadow-sm transition-all">
51
89
  <div class="flex items-center space-x-3 mb-2">
52
90
  <span class="text-xl">{{ agent.icon|default:"🤖" }}</span>
@@ -0,0 +1,92 @@
1
+ {% extends "django_agent_studio/base.html" %}
2
+
3
+ {% block title %}My Systems - Agent Studio{% endblock %}
4
+
5
+ {% block breadcrumbs %}
6
+ <nav class="flex items-center space-x-2 ml-4 text-sm">
7
+ <span class="text-gray-400">/</span>
8
+ <span class="text-gray-600">My Systems</span>
9
+ </nav>
10
+ {% endblock %}
11
+
12
+ {% block content %}
13
+ <div class="h-full p-6 overflow-auto">
14
+ <div class="max-w-6xl mx-auto">
15
+ <!-- Header -->
16
+ <div class="flex items-center justify-between mb-6">
17
+ <h1 class="text-2xl font-bold text-gray-900">My Systems</h1>
18
+ </div>
19
+
20
+ {% if systems %}
21
+ <!-- System Grid -->
22
+ <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4">
23
+ {% for system in systems %}
24
+ <div class="bg-white border border-gray-200 rounded-lg overflow-hidden hover:border-primary-300 hover:shadow-md transition-all">
25
+ <div class="p-4">
26
+ <div class="flex items-center justify-between mb-3">
27
+ <div class="flex items-center space-x-3">
28
+ <span class="text-2xl">🔗</span>
29
+ <div>
30
+ <h3 class="font-semibold text-gray-800">{{ system.name }}</h3>
31
+ <span class="text-xs text-gray-400">{{ system.slug }}</span>
32
+ </div>
33
+ </div>
34
+ <div class="flex items-center space-x-1">
35
+ {% if system.is_active %}
36
+ <span class="w-2 h-2 bg-green-500 rounded-full" title="Active"></span>
37
+ {% else %}
38
+ <span class="w-2 h-2 bg-gray-300 rounded-full" title="Inactive"></span>
39
+ {% endif %}
40
+ </div>
41
+ </div>
42
+ <p class="text-sm text-gray-500 line-clamp-2 mb-3">{{ system.description|default:"No description" }}</p>
43
+
44
+ <!-- Entry Agent Info -->
45
+ <div class="bg-gray-50 rounded-lg p-2 mb-3">
46
+ <div class="flex items-center space-x-2 text-sm">
47
+ <span class="text-gray-400">Entry:</span>
48
+ <span class="text-lg">{{ system.entry_agent.icon|default:"🤖" }}</span>
49
+ <span class="text-gray-700 font-medium">{{ system.entry_agent.name }}</span>
50
+ </div>
51
+ </div>
52
+
53
+ <!-- Member Count -->
54
+ <div class="flex items-center justify-between text-xs text-gray-400">
55
+ <span>{{ system.members.count }} agent{{ system.members.count|pluralize }}</span>
56
+ <span>Updated {{ system.updated_at|timesince }} ago</span>
57
+ </div>
58
+ </div>
59
+ <div class="border-t border-gray-100 px-4 py-3 bg-gray-50 flex items-center justify-end">
60
+ <a href="{% url 'agent_studio:system_test' system.id %}"
61
+ class="text-primary-600 hover:text-primary-700 text-sm font-medium">
62
+ Test System →
63
+ </a>
64
+ </div>
65
+ </div>
66
+ {% endfor %}
67
+ </div>
68
+ {% else %}
69
+ <!-- Empty State -->
70
+ <div class="text-center py-12">
71
+ <div class="text-6xl mb-4">🔗</div>
72
+ <h3 class="text-xl font-semibold text-gray-800 mb-2">No systems yet</h3>
73
+ <p class="text-gray-500 mb-6">Systems are multi-agent configurations that work together.</p>
74
+ <p class="text-gray-400 text-sm">Create agents first, then combine them into a system.</p>
75
+ </div>
76
+ {% endif %}
77
+ </div>
78
+ </div>
79
+ {% endblock %}
80
+
81
+ {% block extra_js %}
82
+ <script>
83
+ const { createApp } = Vue;
84
+
85
+ createApp({
86
+ data() {
87
+ return {}
88
+ }
89
+ }).use(primevue.config.default).mount('#app');
90
+ </script>
91
+ {% endblock %}
92
+
@@ -0,0 +1,131 @@
1
+ {% extends "django_agent_studio/base.html" %}
2
+
3
+ {% block title %}Test {{ system.name }} - Agent Studio{% endblock %}
4
+
5
+ {% block breadcrumbs %}
6
+ <nav class="flex items-center space-x-2 ml-4 text-sm">
7
+ <span class="text-gray-400">/</span>
8
+ <a href="{% url 'agent_studio:system_list' %}" class="text-gray-500 hover:text-gray-700">My Systems</a>
9
+ <span class="text-gray-400">/</span>
10
+ <span class="text-gray-600">{{ system.name }}</span>
11
+ <span class="text-gray-400">/</span>
12
+ <span class="text-gray-600">Test</span>
13
+ </nav>
14
+ {% endblock %}
15
+
16
+ {% block extra_head %}
17
+ <style>
18
+ #fullscreen-chat-container .cw-container {
19
+ position: absolute !important;
20
+ top: 0;
21
+ left: 0;
22
+ right: 0;
23
+ bottom: 0;
24
+ width: 100% !important;
25
+ height: 100% !important;
26
+ max-height: none !important;
27
+ border-radius: 0 !important;
28
+ box-shadow: none !important;
29
+ }
30
+
31
+ #fullscreen-chat-container .cw-toggle-btn {
32
+ display: none !important;
33
+ }
34
+
35
+ #fullscreen-chat-container .cw-widget {
36
+ position: absolute !important;
37
+ top: 0;
38
+ left: 0;
39
+ right: 0;
40
+ bottom: 0;
41
+ width: 100% !important;
42
+ height: 100% !important;
43
+ max-height: none !important;
44
+ border-radius: 0 !important;
45
+ display: flex !important;
46
+ }
47
+ </style>
48
+ {% endblock %}
49
+
50
+ {% block content %}
51
+ <div class="h-full flex flex-col">
52
+ <!-- System Info Bar -->
53
+ <div class="px-4 py-3 bg-white border-b border-gray-200 flex items-center justify-between">
54
+ <div class="flex items-center space-x-4">
55
+ <span class="text-2xl">🔗</span>
56
+ <div>
57
+ <h1 class="font-semibold text-gray-800">{{ system.name }}</h1>
58
+ <p class="text-sm text-gray-500">
59
+ Entry: {{ agent.icon|default:"🤖" }} {{ agent.name }}
60
+ <span class="text-gray-400 mx-2">•</span>
61
+ {{ system.description|default:"No description"|truncatechars:80 }}
62
+ </p>
63
+ </div>
64
+ </div>
65
+ <div class="flex items-center space-x-3">
66
+ <a href="{% url 'agent_studio:system_list' %}"
67
+ class="text-gray-600 hover:text-gray-800 px-3 py-1.5 border border-gray-300 rounded-lg text-sm">
68
+ ← Back to Systems
69
+ </a>
70
+ <button @click="clearChat"
71
+ class="text-gray-600 hover:text-gray-800 px-3 py-1.5 border border-gray-300 rounded-lg text-sm">
72
+ Clear Chat
73
+ </button>
74
+ </div>
75
+ </div>
76
+
77
+ <!-- Full Screen Chat -->
78
+ <div class="flex-1 relative bg-gray-100">
79
+ <div id="fullscreen-chat-container" class="absolute inset-0"></div>
80
+ </div>
81
+ </div>
82
+ {% endblock %}
83
+
84
+ {% block extra_js %}
85
+ <script>
86
+ const { createApp } = Vue;
87
+
88
+ // Use the entry agent's slug for the chat
89
+ const agentSlug = "{{ agent.slug }}";
90
+ const backendUrl = window.location.origin;
91
+
92
+ function initChat() {
93
+ if (window.testChatWidget) {
94
+ window.testChatWidget.destroy();
95
+ }
96
+
97
+ window.testChatWidget = ChatWidget.createInstance({
98
+ containerId: 'fullscreen-chat-container',
99
+ backendUrl: backendUrl,
100
+ agentKey: agentSlug,
101
+ title: '{{ system.name }}',
102
+ primaryColor: '#3b82f6',
103
+ showClearButton: true,
104
+ showDebugButton: true,
105
+ showExpandButton: false,
106
+ embedded: true,
107
+ apiPaths: {
108
+ runs: '/api/agent-runtime/runs/',
109
+ runEvents: '/api/agent-runtime/runs/{runId}/events/',
110
+ },
111
+ });
112
+ }
113
+
114
+ createApp({
115
+ data() {
116
+ return {}
117
+ },
118
+ methods: {
119
+ clearChat() {
120
+ if (window.testChatWidget) {
121
+ window.testChatWidget.clearMessages();
122
+ }
123
+ }
124
+ },
125
+ mounted() {
126
+ initChat();
127
+ }
128
+ }).use(primevue.config.default).mount('#app');
129
+ </script>
130
+ {% endblock %}
131
+
@@ -12,13 +12,17 @@ app_name = "agent_studio"
12
12
  urlpatterns = [
13
13
  # Main studio interface
14
14
  path("", views.StudioHomeView.as_view(), name="home"),
15
-
15
+
16
+ # Systems (multi-agent systems)
17
+ path("systems/", views.SystemListView.as_view(), name="system_list"),
18
+ path("systems/<uuid:system_id>/test/", views.SystemTestView.as_view(), name="system_test"),
19
+
16
20
  # Agent builder/editor
17
21
  path("agents/", views.AgentListView.as_view(), name="agent_list"),
18
22
  path("agents/new/", views.AgentBuilderView.as_view(), name="agent_create"),
19
23
  path("agents/<uuid:agent_id>/", views.AgentBuilderView.as_view(), name="agent_edit"),
20
24
  path("agents/<uuid:agent_id>/test/", views.AgentTestView.as_view(), name="agent_test"),
21
-
25
+
22
26
  # API endpoints
23
27
  path("api/", include(api_urls)),
24
28
  ]
@@ -6,7 +6,7 @@ from django.db.models import Q
6
6
  from django.views.generic import TemplateView, ListView
7
7
  from django.contrib.auth.mixins import LoginRequiredMixin
8
8
 
9
- from django_agent_runtime.models import AgentDefinition
9
+ from django_agent_runtime.models import AgentDefinition, AgentSystem
10
10
 
11
11
 
12
12
  class AgentAccessMixin:
@@ -35,13 +35,46 @@ class AgentAccessMixin:
35
35
  return AgentDefinition.objects.get(id=agent_id, owner=self.request.user)
36
36
 
37
37
 
38
- class StudioHomeView(LoginRequiredMixin, AgentAccessMixin, TemplateView):
38
+ class SystemAccessMixin:
39
+ """
40
+ Mixin that provides consistent system access logic.
41
+
42
+ - Superusers can access all systems
43
+ - Regular users can access their own systems
44
+ """
45
+
46
+ def get_user_systems_queryset(self):
47
+ """Get queryset of systems accessible to the current user."""
48
+ if self.request.user.is_superuser:
49
+ return AgentSystem.objects.all()
50
+ return AgentSystem.objects.filter(owner=self.request.user)
51
+
52
+ def get_system_for_user(self, system_id):
53
+ """
54
+ Get a specific system if the user has access.
55
+
56
+ - Superusers can access any system
57
+ - Regular users can access their own systems
58
+ """
59
+ if self.request.user.is_superuser:
60
+ return AgentSystem.objects.select_related('entry_agent').get(id=system_id)
61
+ return AgentSystem.objects.select_related('entry_agent').get(
62
+ id=system_id, owner=self.request.user
63
+ )
64
+
65
+
66
+ class StudioHomeView(LoginRequiredMixin, AgentAccessMixin, SystemAccessMixin, TemplateView):
39
67
  """Home page for the agent studio."""
40
68
 
41
69
  template_name = "django_agent_studio/home.html"
42
70
 
43
71
  def get_context_data(self, **kwargs):
44
72
  context = super().get_context_data(**kwargs)
73
+ # Systems (shown above agents)
74
+ context["recent_systems"] = self.get_user_systems_queryset().select_related(
75
+ 'entry_agent'
76
+ ).order_by("-updated_at")[:5]
77
+ # Agents
45
78
  context["recent_agents"] = self.get_user_agents_queryset().order_by("-updated_at")[:5]
46
79
  context["template_agents"] = AgentDefinition.objects.filter(
47
80
  is_template=True,
@@ -98,3 +131,33 @@ class AgentTestView(LoginRequiredMixin, AgentAccessMixin, TemplateView):
98
131
  context["agent"] = self.get_agent_for_user(agent_id)
99
132
  return context
100
133
 
134
+
135
+ class SystemListView(LoginRequiredMixin, SystemAccessMixin, ListView):
136
+ """List all systems for the current user."""
137
+
138
+ template_name = "django_agent_studio/system_list.html"
139
+ context_object_name = "systems"
140
+
141
+ def get_queryset(self):
142
+ return self.get_user_systems_queryset().select_related(
143
+ 'entry_agent'
144
+ ).prefetch_related('members__agent').order_by("-updated_at")
145
+
146
+
147
+ class SystemTestView(LoginRequiredMixin, SystemAccessMixin, TemplateView):
148
+ """
149
+ Full-screen system testing interface.
150
+
151
+ Uses the system's entry_agent as the starting point for conversations.
152
+ """
153
+
154
+ template_name = "django_agent_studio/system_test.html"
155
+
156
+ def get_context_data(self, **kwargs):
157
+ context = super().get_context_data(**kwargs)
158
+ system_id = kwargs.get("system_id")
159
+ system = self.get_system_for_user(system_id)
160
+ context["system"] = system
161
+ context["agent"] = system.entry_agent # The entry point agent
162
+ return context
163
+
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: django-agent-studio
3
- Version: 0.2.8
3
+ Version: 0.3.0
4
4
  Summary: Visual agent builder and management studio for Django - build custom GPTs with a two-pane interface
5
5
  Author: Chris Barry
6
6
  License: Business Source License 1.1
@@ -126,6 +126,7 @@ A visual agent builder and management interface for Django applications. Create,
126
126
 
127
127
  | Version | Date | Changes |
128
128
  |---------|------|---------|
129
+ | **0.3.0** | 2026-01-29 | **System Listing & Navigation** - Browse and test multi-agent systems from homepage, fixed URL routing for My Systems/My Agents links, system creation now supports optional entry agent |
129
130
  | **0.2.0** | 2026-01-28 | **Multi-Agent Systems** - System management UI, shared memory configuration, memory privacy controls, builder tools for managing agent systems |
130
131
  | **0.1.9** | 2026-01-27 | Spec documents migration, improved builder agent |
131
132
  | **0.1.0** | 2026-01-25 | Initial release with builder interface, dynamic tools, knowledge management |
@@ -1,15 +1,15 @@
1
1
  django_agent_studio/__init__.py,sha256=E2vGoil7ZmwTebaB5ap9Lt0ptAzqYB5xJpyi4bFbqL8,378
2
2
  django_agent_studio/apps.py,sha256=L89QWn4XOvPBs2z6qHAhaE4uZQpasJntYD75aSd2p_k,607
3
- django_agent_studio/urls.py,sha256=O_rrobaxpmg8gR0JmeUzQ0TI3E8mGdcz27p4OJlcI8s,743
4
- django_agent_studio/views.py,sha256=bQxSIeL9-D4MzKwWkeHEFXrzo1CD911qicrt_A8t_6M,3153
3
+ django_agent_studio/urls.py,sha256=4Lge5RtvBNZlpt4UWvKvJgQdgX2_6jRyCrfy8GzIjnY,942
4
+ django_agent_studio/views.py,sha256=K1fBnGgplJneNBZxQm5zfVz0NLC_OkaJ4jqWT3NqSPI,5327
5
5
  django_agent_studio/agents/__init__.py,sha256=VYL_ato0DtggIo4BGRkyiz9cm1ARPXhhTQFzoG__NVM,800
6
6
  django_agent_studio/agents/builder.py,sha256=dRPQk5-AhUsTBOFxv8H4Uk2X2PfK631jjVJZ1w13GtM,146777
7
7
  django_agent_studio/agents/dynamic.py,sha256=HiTwH_vy_HQBXag7oaMhEHHfXpA00Bq9XSvO0GQxE_A,25394
8
8
  django_agent_studio/api/__init__.py,sha256=vtBwuvBENyFFhFqCWyFsI6cYu4N9ZGqSMmHIRhr9a_U,45
9
9
  django_agent_studio/api/permissions.py,sha256=MutmA8TxZb4ZwGfeEoolK-QI04Gbcxs7DPNzkXe_Bss,5302
10
- django_agent_studio/api/serializers.py,sha256=rkn9xtACbJZlCBr6TLD5r-HsE1AWlaX39WYegtwEIig,18268
11
- django_agent_studio/api/urls.py,sha256=SLIKy3NK9Hkbn9gFPNDtPOiOVVZAFBwdlZvpDkIH9QQ,8760
12
- django_agent_studio/api/views.py,sha256=kSh7z3YWEsKwnqaVBOGSD8WaqJGpnGZfWxVtJAsn7VM,74582
10
+ django_agent_studio/api/serializers.py,sha256=0JJ7J-Rx_iDiZRZF8ja_kiUyRDcpDhRp-O-i1ifw9Zk,18870
11
+ django_agent_studio/api/urls.py,sha256=KYdkpyYCvxRN0nfUs1188apGYMpJT5FcG8kxwYhRAIE,8800
12
+ django_agent_studio/api/views.py,sha256=BqqxgPjnZUwYU6IVcagohg1mN4npinxPy4aBUkSsL0E,75071
13
13
  django_agent_studio/management/__init__.py,sha256=6O9RHMN_xMDrEzKWytpai6QqgTXZVqwRg4h9mIQWtA8,52
14
14
  django_agent_studio/management/commands/__init__.py,sha256=6O9RHMN_xMDrEzKWytpai6QqgTXZVqwRg4h9mIQWtA8,52
15
15
  django_agent_studio/migrations/0001_initial.py,sha256=ThIhf1X6ZaACQd-5GjJG-MDjIm6ETl0Nc2hcYK0L2Wg,4292
@@ -19,18 +19,20 @@ django_agent_studio/models/permissions.py,sha256=NepltvQzeehv5EwcOTqULj8n3N5XGVT
19
19
  django_agent_studio/services/__init__.py,sha256=06cc1eLnAbROTKFxBgvkeCpsYV5cQsyJVGXaE_rcp3M,244
20
20
  django_agent_studio/services/permissions.py,sha256=-cwe0YZCFBFYh_ScXKncsPwEkCfEyIrtOzp8Wt9GSco,7785
21
21
  django_agent_studio/static/agent-frontend/chat-widget-markdown.js,sha256=_TQCux4HPRynCiLKydITO-docIRoi454jLpX0fegAFM,3722
22
- django_agent_studio/static/agent-frontend/chat-widget.css,sha256=roes6o5uC29nhkbBDsWW-XDBRowVTNDt5TNw80M_AxA,33193
23
- django_agent_studio/static/agent-frontend/chat-widget.js,sha256=4E7k8Dd4Uv8NMTZDIU6Y89cfYlw5fuOUTJKojZnKL9E,54086
22
+ django_agent_studio/static/agent-frontend/chat-widget.css,sha256=raGonlpfKT0lao-hDviZimmMXjHJwtrIz1Ud-9uDIEY,38268
23
+ django_agent_studio/static/agent-frontend/chat-widget.js,sha256=Yla8YlsmMtdXZRjN45Fup-4-NTCoM3NgR3yPsA5_Ot4,60548
24
24
  django_agent_studio/static/django_agent_studio/js/builder.js,sha256=eEUw2z-pNdoU3xv3NhLQ-uDZV7tsf8Bawseg7B7dpCo,413948
25
25
  django_agent_studio/static/django_agent_studio/js/builder.js.map,sha256=sVkeGyZsBWEr4MKhqAfd3B4JL5n7D6eKc_4ZYUsbKO8,1633363
26
26
  django_agent_studio/static/django_agent_studio/js/style.css,sha256=rigQJy_oHIhgb1_7DwAQ_8G002gQnT0AXUtwxImWj1o,1626515
27
27
  django_agent_studio/templates/django_agent_studio/agent_list.html,sha256=Qw2Jz39qrde69mI4EjhfWyc5elyKcpFYhicrLqOJZzU,4521
28
28
  django_agent_studio/templates/django_agent_studio/base.html,sha256=wSgwaqK1DAIIyYeZWsVvPlpAZyZHBEx3_NGtdRo0J3A,6019
29
29
  django_agent_studio/templates/django_agent_studio/builder.html,sha256=05thhHGdHaytyD1c15s5SMMWeNVKE8ERLEUp8qdv7Mc,1524
30
- django_agent_studio/templates/django_agent_studio/home.html,sha256=pgwKPjiQe9UxYYLGSsKT-6erEPDUdW9MZ5D-MOjIxK4,4385
30
+ django_agent_studio/templates/django_agent_studio/home.html,sha256=2YQXJww0JzSRakVt2uMKeSOcAXsF7QT3ef0U14pa-50,6470
31
+ django_agent_studio/templates/django_agent_studio/system_list.html,sha256=IRWVQHsqtolfSDDPpOSKQNd6a1u9U9iQvTzFJWbm8DE,4026
32
+ django_agent_studio/templates/django_agent_studio/system_test.html,sha256=5JZB31SkGjjAfyy77FyrDqf6FRQ495TtgNPFYuGAL-g,3907
31
33
  django_agent_studio/templates/django_agent_studio/test.html,sha256=h9aTtTD1eYcgG-n410qMSryHdpXyKny0hjiKYAoGsic,3779
32
- django_agent_studio-0.2.8.dist-info/licenses/LICENSE,sha256=WIh21lpD7d7xCUtLysKK-kbfW4SG7GNPf_k7_Xm_sZg,3851
33
- django_agent_studio-0.2.8.dist-info/METADATA,sha256=Z-g70gVhkBj_KfA-pJ-wJ35z8nqt_UvHV9mtIPXQqzs,16272
34
- django_agent_studio-0.2.8.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
35
- django_agent_studio-0.2.8.dist-info/top_level.txt,sha256=O1kqZzXPOsJlqnPSAcB2fH5WpJNY8ZNfHEJzX9_SZ0A,20
36
- django_agent_studio-0.2.8.dist-info/RECORD,,
34
+ django_agent_studio-0.3.0.dist-info/licenses/LICENSE,sha256=WIh21lpD7d7xCUtLysKK-kbfW4SG7GNPf_k7_Xm_sZg,3851
35
+ django_agent_studio-0.3.0.dist-info/METADATA,sha256=wE3ibERGn_82zFZjoqdFJIXvSyhh13Mxl_IQeLsopnA,16486
36
+ django_agent_studio-0.3.0.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
37
+ django_agent_studio-0.3.0.dist-info/top_level.txt,sha256=O1kqZzXPOsJlqnPSAcB2fH5WpJNY8ZNfHEJzX9_SZ0A,20
38
+ django_agent_studio-0.3.0.dist-info/RECORD,,