django-agent-studio 0.3.3__py3-none-any.whl → 0.3.5__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.
- django_agent_studio/agents/dynamic.py +164 -4
- django_agent_studio/api/serializers.py +27 -8
- django_agent_studio/branding.py +103 -0
- django_agent_studio/static/agent-frontend/chat-widget.css +52 -0
- django_agent_studio/static/agent-frontend/chat-widget.js +222 -206
- django_agent_studio/static/django_agent_studio/js/builder.js +58 -58
- django_agent_studio/static/django_agent_studio/js/builder.js.map +1 -1
- django_agent_studio/static/django_agent_studio/js/style.css +1 -1
- django_agent_studio/templates/django_agent_studio/agent_list.html +31 -28
- django_agent_studio/templates/django_agent_studio/base.html +116 -28
- django_agent_studio/templates/django_agent_studio/builder.html +1 -1
- django_agent_studio/templates/django_agent_studio/collaborators.html +83 -95
- django_agent_studio/templates/django_agent_studio/home.html +66 -48
- django_agent_studio/templates/django_agent_studio/system_create.html +22 -24
- django_agent_studio/templates/django_agent_studio/system_list.html +38 -30
- django_agent_studio/templates/django_agent_studio/system_test.html +27 -21
- django_agent_studio/templates/django_agent_studio/test.html +22 -17
- {django_agent_studio-0.3.3.dist-info → django_agent_studio-0.3.5.dist-info}/METADATA +1 -1
- {django_agent_studio-0.3.3.dist-info → django_agent_studio-0.3.5.dist-info}/RECORD +22 -21
- {django_agent_studio-0.3.3.dist-info → django_agent_studio-0.3.5.dist-info}/WHEEL +0 -0
- {django_agent_studio-0.3.3.dist-info → django_agent_studio-0.3.5.dist-info}/licenses/LICENSE +0 -0
- {django_agent_studio-0.3.3.dist-info → django_agent_studio-0.3.5.dist-info}/top_level.txt +0 -0
|
@@ -1,64 +1,64 @@
|
|
|
1
1
|
{% extends "django_agent_studio/base.html" %}
|
|
2
2
|
|
|
3
|
-
{% block title %}Create System -
|
|
3
|
+
{% block title %}Create System - {{ studio_app_name }}{% endblock %}
|
|
4
4
|
|
|
5
5
|
{% block breadcrumbs %}
|
|
6
6
|
<nav class="flex items-center space-x-2 ml-4 text-sm">
|
|
7
|
-
<span class="text-
|
|
8
|
-
<a href="{% url 'agent_studio:system_list' %}" class="text-
|
|
9
|
-
<span class="text-
|
|
10
|
-
<span class="text-
|
|
7
|
+
<span class="text-white/40">/</span>
|
|
8
|
+
<a href="{% url 'agent_studio:system_list' %}" class="text-white/60 hover:text-white/90 transition-colors">My Systems</a>
|
|
9
|
+
<span class="text-white/40">/</span>
|
|
10
|
+
<span class="text-white/70">Create</span>
|
|
11
11
|
</nav>
|
|
12
12
|
{% endblock %}
|
|
13
13
|
|
|
14
14
|
{% block content %}
|
|
15
|
-
<div class="h-full p-6 overflow-auto">
|
|
15
|
+
<div class="h-full p-6 overflow-auto bg-gradient-to-br from-slate-50 to-slate-100">
|
|
16
16
|
<div class="max-w-2xl mx-auto">
|
|
17
17
|
<!-- Header -->
|
|
18
18
|
<div class="mb-6">
|
|
19
|
-
<h1 class="text-2xl font-bold text-
|
|
20
|
-
<p class="text-
|
|
19
|
+
<h1 class="text-2xl font-bold text-navy">🔗 Create New System</h1>
|
|
20
|
+
<p class="text-slate-500 mt-1">A system combines multiple agents that work together.</p>
|
|
21
21
|
</div>
|
|
22
22
|
|
|
23
23
|
<!-- Form -->
|
|
24
|
-
<div class="bg-white border border-
|
|
24
|
+
<div class="bg-white border border-slate-200 rounded-xl p-6 shadow-sm">
|
|
25
25
|
<form @submit.prevent="createSystem" class="space-y-6">
|
|
26
26
|
<!-- Name -->
|
|
27
27
|
<div>
|
|
28
|
-
<label for="name" class="block text-sm font-medium text-
|
|
28
|
+
<label for="name" class="block text-sm font-medium text-navy mb-1">Name *</label>
|
|
29
29
|
<input type="text" id="name" v-model="form.name" @input="generateSlug"
|
|
30
|
-
class="w-full px-
|
|
30
|
+
class="w-full px-4 py-2.5 border border-slate-200 rounded-lg focus:ring-2 focus:ring-cyan/30 focus:border-cyan transition-all"
|
|
31
31
|
placeholder="My Agent System" required>
|
|
32
32
|
</div>
|
|
33
33
|
|
|
34
34
|
<!-- Slug -->
|
|
35
35
|
<div>
|
|
36
|
-
<label for="slug" class="block text-sm font-medium text-
|
|
36
|
+
<label for="slug" class="block text-sm font-medium text-navy mb-1">Slug *</label>
|
|
37
37
|
<input type="text" id="slug" v-model="form.slug"
|
|
38
|
-
class="w-full px-
|
|
38
|
+
class="w-full px-4 py-2.5 border border-slate-200 rounded-lg focus:ring-2 focus:ring-cyan/30 focus:border-cyan font-mono text-sm transition-all"
|
|
39
39
|
placeholder="my-agent-system" required>
|
|
40
|
-
<p class="text-xs text-
|
|
40
|
+
<p class="text-xs text-slate-400 mt-1">URL-friendly identifier (auto-generated from name)</p>
|
|
41
41
|
</div>
|
|
42
42
|
|
|
43
43
|
<!-- Description -->
|
|
44
44
|
<div>
|
|
45
|
-
<label for="description" class="block text-sm font-medium text-
|
|
45
|
+
<label for="description" class="block text-sm font-medium text-navy mb-1">Description</label>
|
|
46
46
|
<textarea id="description" v-model="form.description" rows="3"
|
|
47
|
-
class="w-full px-
|
|
47
|
+
class="w-full px-4 py-2.5 border border-slate-200 rounded-lg focus:ring-2 focus:ring-cyan/30 focus:border-cyan transition-all"
|
|
48
48
|
placeholder="Describe what this system does..."></textarea>
|
|
49
49
|
</div>
|
|
50
50
|
|
|
51
51
|
<!-- Entry Agent -->
|
|
52
52
|
<div>
|
|
53
|
-
<label for="entry_agent" class="block text-sm font-medium text-
|
|
53
|
+
<label for="entry_agent" class="block text-sm font-medium text-navy mb-1">Entry Agent</label>
|
|
54
54
|
<select id="entry_agent" v-model="form.entry_agent_id"
|
|
55
|
-
class="w-full px-
|
|
55
|
+
class="w-full px-4 py-2.5 border border-slate-200 rounded-lg focus:ring-2 focus:ring-cyan/30 focus:border-cyan transition-all">
|
|
56
56
|
<option value="">-- Select an agent --</option>
|
|
57
57
|
{% for agent in agents %}
|
|
58
58
|
<option value="{{ agent.id }}">{{ agent.icon|default:"🤖" }} {{ agent.name }}</option>
|
|
59
59
|
{% endfor %}
|
|
60
60
|
</select>
|
|
61
|
-
<p class="text-xs text-
|
|
61
|
+
<p class="text-xs text-slate-400 mt-1">The agent that handles incoming conversations. Sub-agents will be auto-discovered.</p>
|
|
62
62
|
</div>
|
|
63
63
|
|
|
64
64
|
<!-- Error Message -->
|
|
@@ -67,11 +67,11 @@
|
|
|
67
67
|
</div>
|
|
68
68
|
|
|
69
69
|
<!-- Actions -->
|
|
70
|
-
<div class="flex items-center justify-end space-x-3 pt-4 border-t border-
|
|
70
|
+
<div class="flex items-center justify-end space-x-3 pt-4 border-t border-slate-100">
|
|
71
71
|
<a href="{% url 'agent_studio:system_list' %}"
|
|
72
|
-
class="px-4 py-2 text-
|
|
72
|
+
class="px-4 py-2 text-slate-600 hover:text-navy transition-colors">Cancel</a>
|
|
73
73
|
<button type="submit" :disabled="loading"
|
|
74
|
-
class="px-6 py-2 bg-
|
|
74
|
+
class="px-6 py-2.5 bg-navy hover:bg-navy-light text-white rounded-xl font-medium disabled:opacity-50 transition-all hover:shadow-lg">
|
|
75
75
|
<span v-if="loading">Creating...</span>
|
|
76
76
|
<span v-else>Create System</span>
|
|
77
77
|
</button>
|
|
@@ -102,7 +102,6 @@ createApp({
|
|
|
102
102
|
},
|
|
103
103
|
methods: {
|
|
104
104
|
generateSlug() {
|
|
105
|
-
// Auto-generate slug from name
|
|
106
105
|
this.form.slug = this.form.name
|
|
107
106
|
.toLowerCase()
|
|
108
107
|
.replace(/[^a-z0-9]+/g, '-')
|
|
@@ -145,4 +144,3 @@ createApp({
|
|
|
145
144
|
}).use(primevue.config.default).mount('#app');
|
|
146
145
|
</script>
|
|
147
146
|
{% endblock %}
|
|
148
|
-
|
|
@@ -1,23 +1,24 @@
|
|
|
1
1
|
{% extends "django_agent_studio/base.html" %}
|
|
2
2
|
|
|
3
|
-
{% block title %}My Systems -
|
|
3
|
+
{% block title %}My Systems - {{ studio_app_name }}{% endblock %}
|
|
4
4
|
|
|
5
5
|
{% block breadcrumbs %}
|
|
6
6
|
<nav class="flex items-center space-x-2 ml-4 text-sm">
|
|
7
|
-
<span class="text-
|
|
8
|
-
<span class="text-
|
|
7
|
+
<span class="text-white/40">/</span>
|
|
8
|
+
<span class="text-white/70">My Systems</span>
|
|
9
9
|
</nav>
|
|
10
10
|
{% endblock %}
|
|
11
11
|
|
|
12
12
|
{% block content %}
|
|
13
|
-
<div class="h-full p-6 overflow-auto">
|
|
13
|
+
<div class="h-full p-6 overflow-auto bg-gradient-to-br from-slate-50 to-slate-100">
|
|
14
14
|
<div class="max-w-6xl mx-auto">
|
|
15
15
|
<!-- Header -->
|
|
16
16
|
<div class="flex items-center justify-between mb-6">
|
|
17
|
-
<h1 class="text-2xl font-bold text-
|
|
17
|
+
<h1 class="text-2xl font-bold text-navy">My Systems</h1>
|
|
18
18
|
<a href="{% url 'agent_studio:system_create' %}"
|
|
19
|
-
class="px-4 py-2
|
|
20
|
-
|
|
19
|
+
class="bg-navy hover:bg-navy-light text-white px-4 py-2 rounded-xl flex items-center space-x-2 transition-all hover:shadow-lg hover:-translate-y-0.5 font-medium">
|
|
20
|
+
<i class="pi pi-plus"></i>
|
|
21
|
+
<span>New System</span>
|
|
21
22
|
</a>
|
|
22
23
|
</div>
|
|
23
24
|
|
|
@@ -25,49 +26,54 @@
|
|
|
25
26
|
<!-- System Grid -->
|
|
26
27
|
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4">
|
|
27
28
|
{% for system in systems %}
|
|
28
|
-
<div class="bg-white border border-
|
|
29
|
-
<div class="p-
|
|
29
|
+
<div class="bg-white border border-slate-200 rounded-xl overflow-hidden hover:border-cyan hover:shadow-md transition-all group">
|
|
30
|
+
<div class="p-5">
|
|
30
31
|
<div class="flex items-center justify-between mb-3">
|
|
31
32
|
<div class="flex items-center space-x-3">
|
|
32
|
-
<
|
|
33
|
+
<div class="w-10 h-10 bg-navy/10 rounded-lg flex items-center justify-center group-hover:bg-cyan/20 transition-colors">
|
|
34
|
+
<span class="text-xl">🔗</span>
|
|
35
|
+
</div>
|
|
33
36
|
<div>
|
|
34
|
-
<h3 class="font-semibold text-
|
|
35
|
-
<span class="text-xs text-
|
|
37
|
+
<h3 class="font-semibold text-navy">{{ system.name }}</h3>
|
|
38
|
+
<span class="text-xs text-slate-400 font-mono">{{ system.slug }}</span>
|
|
36
39
|
</div>
|
|
37
40
|
</div>
|
|
38
41
|
<div class="flex items-center space-x-1">
|
|
39
42
|
{% if system.is_active %}
|
|
40
|
-
<span class="w-2 h-2 bg-
|
|
43
|
+
<span class="w-2 h-2 bg-cyan rounded-full" title="Active"></span>
|
|
41
44
|
{% else %}
|
|
42
|
-
<span class="w-2 h-2 bg-
|
|
45
|
+
<span class="w-2 h-2 bg-slate-300 rounded-full" title="Inactive"></span>
|
|
43
46
|
{% endif %}
|
|
44
47
|
</div>
|
|
45
48
|
</div>
|
|
46
|
-
<p class="text-sm text-
|
|
49
|
+
<p class="text-sm text-slate-500 line-clamp-2 mb-3">{{ system.description|default:"No description" }}</p>
|
|
47
50
|
|
|
48
51
|
<!-- Entry Agent Info -->
|
|
49
|
-
<div class="bg-
|
|
52
|
+
<div class="bg-slate-50 rounded-lg p-3 mb-3 border border-slate-100">
|
|
50
53
|
<div class="flex items-center space-x-2 text-sm">
|
|
51
|
-
<span class="text-
|
|
54
|
+
<span class="text-slate-400 text-xs font-medium uppercase tracking-wide">Entry</span>
|
|
52
55
|
<span class="text-lg">{{ system.entry_agent.icon|default:"🤖" }}</span>
|
|
53
|
-
<span class="text-
|
|
56
|
+
<span class="text-navy font-medium">{{ system.entry_agent.name }}</span>
|
|
54
57
|
</div>
|
|
55
58
|
</div>
|
|
56
59
|
|
|
57
60
|
<!-- Member Count -->
|
|
58
|
-
<div class="flex items-center justify-between text-xs text-
|
|
59
|
-
<span
|
|
61
|
+
<div class="flex items-center justify-between text-xs text-slate-400">
|
|
62
|
+
<span class="flex items-center gap-1">
|
|
63
|
+
<i class="pi pi-users text-xs"></i>
|
|
64
|
+
{{ system.members.count }} agent{{ system.members.count|pluralize }}
|
|
65
|
+
</span>
|
|
60
66
|
<span>Updated {{ system.updated_at|timesince }} ago</span>
|
|
61
67
|
</div>
|
|
62
68
|
</div>
|
|
63
|
-
<div class="border-t border-
|
|
69
|
+
<div class="border-t border-slate-100 px-5 py-3 bg-slate-50/50 flex items-center justify-between">
|
|
64
70
|
<a href="{% url 'agent_studio:system_collaborators' system.id %}"
|
|
65
|
-
class="text-
|
|
71
|
+
class="text-slate-400 hover:text-navy text-sm transition-colors"
|
|
66
72
|
title="Manage collaborators">
|
|
67
73
|
<i class="pi pi-users"></i>
|
|
68
74
|
</a>
|
|
69
75
|
<a href="{% url 'agent_studio:system_test' system.id %}"
|
|
70
|
-
class="text-
|
|
76
|
+
class="text-cyan hover:text-cyan-dark text-sm font-medium transition-colors">
|
|
71
77
|
Test System →
|
|
72
78
|
</a>
|
|
73
79
|
</div>
|
|
@@ -76,13 +82,16 @@
|
|
|
76
82
|
</div>
|
|
77
83
|
{% else %}
|
|
78
84
|
<!-- Empty State -->
|
|
79
|
-
<div class="text-center py-
|
|
80
|
-
<div class="
|
|
81
|
-
|
|
82
|
-
|
|
85
|
+
<div class="text-center py-16 bg-white rounded-xl border border-slate-200 border-dashed">
|
|
86
|
+
<div class="w-16 h-16 bg-navy/10 rounded-2xl flex items-center justify-center mx-auto mb-4">
|
|
87
|
+
<span class="text-4xl">🔗</span>
|
|
88
|
+
</div>
|
|
89
|
+
<h3 class="text-xl font-semibold text-navy mb-2">No systems yet</h3>
|
|
90
|
+
<p class="text-slate-500 mb-6">Systems are multi-agent configurations that work together.</p>
|
|
83
91
|
<a href="{% url 'agent_studio:system_create' %}"
|
|
84
|
-
class="
|
|
85
|
-
|
|
92
|
+
class="bg-navy hover:bg-navy-light text-white px-6 py-3 rounded-xl inline-flex items-center space-x-2 transition-all hover:shadow-lg font-medium">
|
|
93
|
+
<i class="pi pi-plus"></i>
|
|
94
|
+
<span>Create Your First System</span>
|
|
86
95
|
</a>
|
|
87
96
|
</div>
|
|
88
97
|
{% endif %}
|
|
@@ -101,4 +110,3 @@ createApp({
|
|
|
101
110
|
}).use(primevue.config.default).mount('#app');
|
|
102
111
|
</script>
|
|
103
112
|
{% endblock %}
|
|
104
|
-
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
{% extends "django_agent_studio/base.html" %}
|
|
2
2
|
|
|
3
|
-
{% block title %}Test {{ system.name }} -
|
|
3
|
+
{% block title %}Test {{ system.name }} - {{ studio_app_name }}{% endblock %}
|
|
4
4
|
|
|
5
5
|
{% block breadcrumbs %}
|
|
6
6
|
<nav class="flex items-center space-x-2 ml-4 text-sm">
|
|
7
|
-
<span class="text-
|
|
8
|
-
<a href="{% url 'agent_studio:system_list' %}" class="text-
|
|
9
|
-
<span class="text-
|
|
10
|
-
<span class="text-
|
|
11
|
-
<span class="text-
|
|
12
|
-
<span class="text-
|
|
7
|
+
<span class="text-white/40">/</span>
|
|
8
|
+
<a href="{% url 'agent_studio:system_list' %}" class="text-white/60 hover:text-white/90 transition-colors">My Systems</a>
|
|
9
|
+
<span class="text-white/40">/</span>
|
|
10
|
+
<span class="text-white/70">{{ system.name }}</span>
|
|
11
|
+
<span class="text-white/40">/</span>
|
|
12
|
+
<span class="text-white/70">Test</span>
|
|
13
13
|
</nav>
|
|
14
14
|
{% endblock %}
|
|
15
15
|
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
height: 100% !important;
|
|
27
27
|
max-height: none !important;
|
|
28
28
|
border-radius: 0 !important;
|
|
29
|
-
box-shadow: 0
|
|
29
|
+
box-shadow: 0 4px 20px rgba(0, 20, 46, 0.1) !important;
|
|
30
30
|
}
|
|
31
31
|
|
|
32
32
|
#fullscreen-chat-container .cw-toggle-btn {
|
|
@@ -49,43 +49,51 @@
|
|
|
49
49
|
min-height: 0 !important;
|
|
50
50
|
overflow-y: auto !important;
|
|
51
51
|
}
|
|
52
|
+
|
|
53
|
+
#fullscreen-chat-container .cw-header {
|
|
54
|
+
background: {{ studio_colors.primary }} !important;
|
|
55
|
+
}
|
|
52
56
|
</style>
|
|
53
57
|
{% endblock %}
|
|
54
58
|
|
|
55
59
|
{% block content %}
|
|
56
60
|
<div class="h-full flex flex-col">
|
|
57
61
|
<!-- System Info Bar -->
|
|
58
|
-
<div class="px-
|
|
62
|
+
<div class="px-5 py-3 bg-white border-b border-slate-200 flex items-center justify-between">
|
|
59
63
|
<div class="flex items-center space-x-4">
|
|
60
|
-
<
|
|
64
|
+
<div class="w-10 h-10 bg-navy/10 rounded-lg flex items-center justify-center">
|
|
65
|
+
<span class="text-xl">🔗</span>
|
|
66
|
+
</div>
|
|
61
67
|
<div>
|
|
62
|
-
<h1 class="font-semibold text-
|
|
63
|
-
<p class="text-sm text-
|
|
64
|
-
|
|
65
|
-
|
|
68
|
+
<h1 class="font-semibold text-navy">{{ system.name }}</h1>
|
|
69
|
+
<p class="text-sm text-slate-500">
|
|
70
|
+
<span class="inline-flex items-center gap-1 bg-cyan/10 text-navy px-2 py-0.5 rounded-full text-xs font-medium">
|
|
71
|
+
{{ agent.icon|default:"🤖" }} {{ agent.name }}
|
|
72
|
+
</span>
|
|
73
|
+
<span class="text-slate-300 mx-2">•</span>
|
|
66
74
|
{{ system.description|default:"No description"|truncatechars:80 }}
|
|
67
75
|
</p>
|
|
68
76
|
</div>
|
|
69
77
|
</div>
|
|
70
78
|
<div class="flex items-center space-x-3">
|
|
71
79
|
<a href="{% url 'agent_studio:system_collaborators' system.id %}"
|
|
72
|
-
class="text-
|
|
80
|
+
class="text-slate-500 hover:text-navy px-3 py-1.5 border border-slate-200 rounded-lg text-sm transition-colors hover:border-cyan"
|
|
73
81
|
title="Manage collaborators">
|
|
74
82
|
<i class="pi pi-users"></i>
|
|
75
83
|
</a>
|
|
76
84
|
<a href="{% url 'agent_studio:system_list' %}"
|
|
77
|
-
class="text-
|
|
85
|
+
class="text-slate-500 hover:text-navy px-3 py-1.5 border border-slate-200 rounded-lg text-sm transition-colors hover:border-cyan">
|
|
78
86
|
← Back to Systems
|
|
79
87
|
</a>
|
|
80
88
|
<button @click="clearChat"
|
|
81
|
-
class="text-
|
|
89
|
+
class="text-white bg-navy hover:bg-navy-light px-4 py-1.5 rounded-lg text-sm font-medium transition-all hover:shadow-md">
|
|
82
90
|
Clear Chat
|
|
83
91
|
</button>
|
|
84
92
|
</div>
|
|
85
93
|
</div>
|
|
86
94
|
|
|
87
95
|
<!-- Full Screen Chat -->
|
|
88
|
-
<div class="flex-1 min-h-0 relative bg-
|
|
96
|
+
<div class="flex-1 min-h-0 relative bg-gradient-to-br from-slate-50 to-slate-100 flex justify-center">
|
|
89
97
|
<div id="fullscreen-chat-container" class="relative w-full max-w-[800px] h-full"></div>
|
|
90
98
|
</div>
|
|
91
99
|
</div>
|
|
@@ -95,7 +103,6 @@
|
|
|
95
103
|
<script>
|
|
96
104
|
const { createApp } = Vue;
|
|
97
105
|
|
|
98
|
-
// Use the entry agent's slug for the chat
|
|
99
106
|
const agentSlug = "{{ agent.slug|escapejs }}";
|
|
100
107
|
const backendUrl = window.location.origin;
|
|
101
108
|
|
|
@@ -109,7 +116,7 @@ function initChat() {
|
|
|
109
116
|
backendUrl: backendUrl,
|
|
110
117
|
agentKey: agentSlug,
|
|
111
118
|
title: '{{ system.name|escapejs }}',
|
|
112
|
-
primaryColor: '
|
|
119
|
+
primaryColor: '{{ studio_chat_primary_color }}',
|
|
113
120
|
showClearButton: true,
|
|
114
121
|
showDebugButton: true,
|
|
115
122
|
showExpandButton: false,
|
|
@@ -138,4 +145,3 @@ createApp({
|
|
|
138
145
|
}).use(primevue.config.default).mount('#app');
|
|
139
146
|
</script>
|
|
140
147
|
{% endblock %}
|
|
141
|
-
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
{% extends "django_agent_studio/base.html" %}
|
|
2
2
|
|
|
3
|
-
{% block title %}Test {{ agent.name }} -
|
|
3
|
+
{% block title %}Test {{ agent.name }} - {{ studio_app_name }}{% endblock %}
|
|
4
4
|
|
|
5
5
|
{% block breadcrumbs %}
|
|
6
6
|
<nav class="flex items-center space-x-2 ml-4 text-sm">
|
|
7
|
-
<span class="text-
|
|
8
|
-
<a href="{% url 'agent_studio:agent_list' %}" class="text-
|
|
9
|
-
<span class="text-
|
|
10
|
-
<a href="{% url 'agent_studio:agent_edit' agent.id %}" class="text-
|
|
11
|
-
<span class="text-
|
|
12
|
-
<span class="text-
|
|
7
|
+
<span class="text-white/40">/</span>
|
|
8
|
+
<a href="{% url 'agent_studio:agent_list' %}" class="text-white/60 hover:text-white/90 transition-colors">My Agents</a>
|
|
9
|
+
<span class="text-white/40">/</span>
|
|
10
|
+
<a href="{% url 'agent_studio:agent_edit' agent.id %}" class="text-white/60 hover:text-white/90 transition-colors">{{ agent.name }}</a>
|
|
11
|
+
<span class="text-white/40">/</span>
|
|
12
|
+
<span class="text-white/70">Test</span>
|
|
13
13
|
</nav>
|
|
14
14
|
{% endblock %}
|
|
15
15
|
|
|
@@ -52,39 +52,45 @@
|
|
|
52
52
|
min-height: 0 !important;
|
|
53
53
|
overflow-y: auto !important;
|
|
54
54
|
}
|
|
55
|
+
|
|
56
|
+
#fullscreen-chat-container .cw-header {
|
|
57
|
+
background: {{ studio_colors.primary }} !important;
|
|
58
|
+
}
|
|
55
59
|
</style>
|
|
56
60
|
{% endblock %}
|
|
57
61
|
|
|
58
62
|
{% block content %}
|
|
59
63
|
<div class="h-full flex flex-col">
|
|
60
64
|
<!-- Agent Info Bar -->
|
|
61
|
-
<div class="px-
|
|
65
|
+
<div class="px-5 py-3 bg-white border-b border-slate-200 flex items-center justify-between">
|
|
62
66
|
<div class="flex items-center space-x-4">
|
|
63
|
-
<
|
|
67
|
+
<div class="w-10 h-10 bg-cyan/10 rounded-lg flex items-center justify-center">
|
|
68
|
+
<span class="text-xl">{{ agent.icon|default:"🤖" }}</span>
|
|
69
|
+
</div>
|
|
64
70
|
<div>
|
|
65
|
-
<h1 class="font-semibold text-
|
|
66
|
-
<p class="text-sm text-
|
|
71
|
+
<h1 class="font-semibold text-navy">{{ agent.name }}</h1>
|
|
72
|
+
<p class="text-sm text-slate-500">{{ agent.description|default:"No description"|truncatechars:100 }}</p>
|
|
67
73
|
</div>
|
|
68
74
|
</div>
|
|
69
75
|
<div class="flex items-center space-x-3">
|
|
70
76
|
<a href="{% url 'agent_studio:agent_collaborators' agent.id %}"
|
|
71
|
-
class="text-
|
|
77
|
+
class="text-slate-500 hover:text-navy px-3 py-1.5 border border-slate-200 rounded-lg text-sm transition-colors hover:border-cyan"
|
|
72
78
|
title="Manage collaborators">
|
|
73
79
|
<i class="pi pi-users"></i>
|
|
74
80
|
</a>
|
|
75
81
|
<a href="{% url 'agent_studio:agent_edit' agent.id %}"
|
|
76
|
-
class="text-
|
|
82
|
+
class="text-slate-500 hover:text-navy px-3 py-1.5 border border-slate-200 rounded-lg text-sm transition-colors hover:border-cyan">
|
|
77
83
|
← Back to Editor
|
|
78
84
|
</a>
|
|
79
85
|
<button @click="clearChat"
|
|
80
|
-
class="text-
|
|
86
|
+
class="text-white bg-navy hover:bg-navy-light px-4 py-1.5 rounded-lg text-sm font-medium transition-all hover:shadow-md">
|
|
81
87
|
Clear Chat
|
|
82
88
|
</button>
|
|
83
89
|
</div>
|
|
84
90
|
</div>
|
|
85
91
|
|
|
86
92
|
<!-- Full Screen Chat -->
|
|
87
|
-
<div class="flex-1 min-h-0 relative bg-
|
|
93
|
+
<div class="flex-1 min-h-0 relative bg-gradient-to-br from-slate-50 to-slate-100">
|
|
88
94
|
<div id="fullscreen-chat-container" class="absolute inset-0"></div>
|
|
89
95
|
</div>
|
|
90
96
|
</div>
|
|
@@ -107,7 +113,7 @@ function initChat() {
|
|
|
107
113
|
backendUrl: backendUrl,
|
|
108
114
|
agentKey: agentSlug,
|
|
109
115
|
title: '{{ agent.name|escapejs }}',
|
|
110
|
-
primaryColor: '
|
|
116
|
+
primaryColor: '{{ studio_chat_primary_color }}',
|
|
111
117
|
showClearButton: true,
|
|
112
118
|
showDebugButton: true,
|
|
113
119
|
showExpandButton: false,
|
|
@@ -136,4 +142,3 @@ createApp({
|
|
|
136
142
|
}).use(primevue.config.default).mount('#app');
|
|
137
143
|
</script>
|
|
138
144
|
{% endblock %}
|
|
139
|
-
|
|
@@ -1,13 +1,14 @@
|
|
|
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/branding.py,sha256=vg_TydsBeAPji6zz3rIeqq3I_RXvbXVJ4XDFmhner1k,3125
|
|
3
4
|
django_agent_studio/urls.py,sha256=qoqmIaYx2qB4Ail9AhOzH3XKrMK9T8wxk8Kms2sHbkk,1333
|
|
4
5
|
django_agent_studio/views.py,sha256=iAO_0oY3vlJdjaVACVXJN2Z784-Tc82PILXQqA2vHDk,15844
|
|
5
6
|
django_agent_studio/agents/__init__.py,sha256=VYL_ato0DtggIo4BGRkyiz9cm1ARPXhhTQFzoG__NVM,800
|
|
6
7
|
django_agent_studio/agents/builder.py,sha256=dRPQk5-AhUsTBOFxv8H4Uk2X2PfK631jjVJZ1w13GtM,146777
|
|
7
|
-
django_agent_studio/agents/dynamic.py,sha256=
|
|
8
|
+
django_agent_studio/agents/dynamic.py,sha256=Fe3qvPm1zwI-1a6B6t4QAcBAy2xkXwquyoeNjWDutsA,31185
|
|
8
9
|
django_agent_studio/api/__init__.py,sha256=vtBwuvBENyFFhFqCWyFsI6cYu4N9ZGqSMmHIRhr9a_U,45
|
|
9
10
|
django_agent_studio/api/permissions.py,sha256=MutmA8TxZb4ZwGfeEoolK-QI04Gbcxs7DPNzkXe_Bss,5302
|
|
10
|
-
django_agent_studio/api/serializers.py,sha256=
|
|
11
|
+
django_agent_studio/api/serializers.py,sha256=TT3-o_ZcGMSLKeQrExg3hl-I1T127uW6rMcKfPIaQzA,24079
|
|
11
12
|
django_agent_studio/api/urls.py,sha256=xfL3AbTP0GKRYarDExvUoXuz0txhgNCumgjVehSfmTY,9893
|
|
12
13
|
django_agent_studio/api/views.py,sha256=fECFWpu08ibQpOR-sL7AVCoTh4Ox6cYUEm4lh5GAPsE,90869
|
|
13
14
|
django_agent_studio/management/__init__.py,sha256=6O9RHMN_xMDrEzKWytpai6QqgTXZVqwRg4h9mIQWtA8,52
|
|
@@ -19,22 +20,22 @@ django_agent_studio/models/permissions.py,sha256=NepltvQzeehv5EwcOTqULj8n3N5XGVT
|
|
|
19
20
|
django_agent_studio/services/__init__.py,sha256=06cc1eLnAbROTKFxBgvkeCpsYV5cQsyJVGXaE_rcp3M,244
|
|
20
21
|
django_agent_studio/services/permissions.py,sha256=-cwe0YZCFBFYh_ScXKncsPwEkCfEyIrtOzp8Wt9GSco,7785
|
|
21
22
|
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=
|
|
23
|
-
django_agent_studio/static/agent-frontend/chat-widget.js,sha256=
|
|
24
|
-
django_agent_studio/static/django_agent_studio/js/builder.js,sha256=
|
|
25
|
-
django_agent_studio/static/django_agent_studio/js/builder.js.map,sha256=
|
|
26
|
-
django_agent_studio/static/django_agent_studio/js/style.css,sha256=
|
|
27
|
-
django_agent_studio/templates/django_agent_studio/agent_list.html,sha256=
|
|
28
|
-
django_agent_studio/templates/django_agent_studio/base.html,sha256=
|
|
29
|
-
django_agent_studio/templates/django_agent_studio/builder.html,sha256=
|
|
30
|
-
django_agent_studio/templates/django_agent_studio/collaborators.html,sha256=
|
|
31
|
-
django_agent_studio/templates/django_agent_studio/home.html,sha256=
|
|
32
|
-
django_agent_studio/templates/django_agent_studio/system_create.html,sha256=
|
|
33
|
-
django_agent_studio/templates/django_agent_studio/system_list.html,sha256=
|
|
34
|
-
django_agent_studio/templates/django_agent_studio/system_test.html,sha256=
|
|
35
|
-
django_agent_studio/templates/django_agent_studio/test.html,sha256=
|
|
36
|
-
django_agent_studio-0.3.
|
|
37
|
-
django_agent_studio-0.3.
|
|
38
|
-
django_agent_studio-0.3.
|
|
39
|
-
django_agent_studio-0.3.
|
|
40
|
-
django_agent_studio-0.3.
|
|
23
|
+
django_agent_studio/static/agent-frontend/chat-widget.css,sha256=hXbF85O9r9NtfGPsfm_j0ydA6eSQunxrSop3wguRQy4,39272
|
|
24
|
+
django_agent_studio/static/agent-frontend/chat-widget.js,sha256=taWJEanfXJjO9HRT3e1eK0428q3g-59s0PN9XsPjYIA,62278
|
|
25
|
+
django_agent_studio/static/django_agent_studio/js/builder.js,sha256=9b5tfVtKLBubzYx1SgfQ_k3DXyGk_hgTsD9CSOXH82M,419987
|
|
26
|
+
django_agent_studio/static/django_agent_studio/js/builder.js.map,sha256=GnCYDH_KCn9sK5ZY_qO7xZrHlK75kDYDagJChrFduy0,1650733
|
|
27
|
+
django_agent_studio/static/django_agent_studio/js/style.css,sha256=UqHhQqLup8c34l76M5YPQczAZs3FM4Z45-x-KbqVoZ8,1630851
|
|
28
|
+
django_agent_studio/templates/django_agent_studio/agent_list.html,sha256=khHjecmMkoUngSQISiFq8uVB7qj0W0loSr4KquggSo0,5475
|
|
29
|
+
django_agent_studio/templates/django_agent_studio/base.html,sha256=c0OKhFtdkhrZkK4K6vsN_yey3a2eOXzLlndPnbfHUnY,10756
|
|
30
|
+
django_agent_studio/templates/django_agent_studio/builder.html,sha256=sc0V661vbe6iOULqsMOgX6fqgDNtyYRx1NobmqX79Us,1551
|
|
31
|
+
django_agent_studio/templates/django_agent_studio/collaborators.html,sha256=9r9uN9NdX_DijWdNUsDnIyGCvYdB25GUCyXkqxPDWI0,19641
|
|
32
|
+
django_agent_studio/templates/django_agent_studio/home.html,sha256=4TSpgQg5fS5qGZHSeuYLF6xs8JoJr0dnEd2DUjHxHE0,8720
|
|
33
|
+
django_agent_studio/templates/django_agent_studio/system_create.html,sha256=0D46_4fxcXYeGicoRVycKHgDWBbOnsrG8N2_wYaXaLA,6492
|
|
34
|
+
django_agent_studio/templates/django_agent_studio/system_list.html,sha256=93gQUcUbgWhPXdo8gyLTdqlceDmII5nOe9wjgW9v1WM,5555
|
|
35
|
+
django_agent_studio/templates/django_agent_studio/system_test.html,sha256=LJvJqqkdO4ua1GvWUV7M1G-NFhRjBy0eRsTKYY1rJkg,4990
|
|
36
|
+
django_agent_studio/templates/django_agent_studio/test.html,sha256=T0ETvqH5v7rUoOhuwbuxdZ2zrka89H4i-efNkwK_2Fc,4740
|
|
37
|
+
django_agent_studio-0.3.5.dist-info/licenses/LICENSE,sha256=WIh21lpD7d7xCUtLysKK-kbfW4SG7GNPf_k7_Xm_sZg,3851
|
|
38
|
+
django_agent_studio-0.3.5.dist-info/METADATA,sha256=yFkAq9cSUGRTvuAAp-Hg6nkDJgw3WcojDW5FMYCHY_8,17048
|
|
39
|
+
django_agent_studio-0.3.5.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
|
|
40
|
+
django_agent_studio-0.3.5.dist-info/top_level.txt,sha256=O1kqZzXPOsJlqnPSAcB2fH5WpJNY8ZNfHEJzX9_SZ0A,20
|
|
41
|
+
django_agent_studio-0.3.5.dist-info/RECORD,,
|
|
File without changes
|
{django_agent_studio-0.3.3.dist-info → django_agent_studio-0.3.5.dist-info}/licenses/LICENSE
RENAMED
|
File without changes
|
|
File without changes
|