meta_workflows 0.9.0 → 0.9.1

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3d50e1943ccd15113eba9afb7c8cbdc01d438c6d3d49a88ceeff0c99585f6a35
4
- data.tar.gz: 903ed9aabed86d16a846caf25a96497ebd31ea3c6f1872a4c1ce4a55dbdfaeb8
3
+ metadata.gz: 50ae604291373e74675fbac7838bb9cbbdcef8beb635a07ac40f06c89f784a75
4
+ data.tar.gz: cefff5fe7d2a949941dee57e2a642e7eb54d2eaec220a489e252799fb8888f1c
5
5
  SHA512:
6
- metadata.gz: 5641f236a0e35b67e90a4a557015d6135f2c03c8061ea5bfd2c4adc5c5ce20b9e90e3a357e5764479f71f3db3aaf81acba5093c6aae4102a7d49881584b0bce7
7
- data.tar.gz: f591fffcd47a4f0ae49746a3d0aaa2d4c495eb39c6a171bedc049906617deba5493bf2e984ce1b1b4c50c6ad73d4811a774eb51a8b1894295e5a0c6278271ff7
6
+ metadata.gz: ec4974b30bfe8c3c17fbd779228e2bdf469ba86fd808fcfdfa792b4bad5419591e919d23570a42c70aedc06c68021321174a33d91faaf1b935eced1aa5504072
7
+ data.tar.gz: 940604b1494c067ead7d9dbf6da6be88b10538e59bba4551e90a575ac070ff6fe882134a170e0f1d4f2045d2a9cffb75a3116fc010d3591361bbd74666e4efb5
data/README.md CHANGED
@@ -518,13 +518,44 @@ For development contributions:
518
518
 
519
519
  For detailed information about the MetaWorkflows system:
520
520
  - [Setup Guide](https://strongmind.atlassian.net/wiki/spaces/MW/pages/3929833507) - Configuration and workflow setup
521
- - [File Structure Guide](https://strongmind.atlassian.net/wiki/spaces/MW/pages/3930521627) - Complete file organization reference
522
- - [Dummy App Guide](https://strongmind.atlassian.net/wiki/spaces/MW/pages/3941072927) - Test application documentation
523
521
 
524
522
  ## License
525
523
 
526
524
  The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
527
525
 
526
+ ## Styling Setup
527
+
528
+ To apply or customize the styles for the `meta_workflows` engine, follow these steps:
529
+
530
+ ### 1. Where to Add Your Styles
531
+
532
+ - All styles should be placed in this file:
533
+ `app/assets/stylesheets/meta_workflows/application.css`
534
+
535
+ ### 2. How to Copy the Stylesheet
536
+
537
+ - To bring the stylesheet into your app (host app or dummy app), run this command from your terminal:
538
+
539
+ ```bash
540
+ rails meta_workflows:install:assets
541
+ ```
542
+
543
+ ### 3. Location in Dummy App
544
+
545
+ - If you're using the dummy app (located at `spec/dummy`), the stylesheet will be copied to:
546
+ `spec/dummy/app/assets/stylesheets/meta_workflows/application.css`.
547
+
548
+ ### 4. ⚠️ Important Note
549
+
550
+ - Do not edit the copied stylesheet in the dummy app (spec/dummy/...) directly.
551
+ - Changes made there will not carry over to the host app and will be overwritten if you re-run the install:assets task.
552
+
553
+ ### 5. Avoid Using Tailwind's Custom Properties
554
+
555
+ - **Do not use Tailwind’s custom properties (CSS variables)** in your styles.
556
+ - These properties **won’t be compiled** because the layout files are accessed directly from the engine.
557
+ - As a result, the host app doesn’t recognize that it needs to compile them, and the styles will not work as expected.
558
+
528
559
  ## Tray System (Sidebar, Bottom, and Main Content Trays)
529
560
 
530
561
  MetaWorkflows provides a flexible tray system for building modern, multi-pane layouts. The tray system supports left (Beta), right (Gamma), and bottom (Delta) trays, as well as a main content area (Alpha). Each tray can be shown, hidden, or made collapsible on a per-controller or per-page basis.
@@ -1,165 +1,200 @@
1
- /* AI Generated Content */
1
+ /* Meta Workflows Styles Installed in Main App */
2
2
  .meta-workflows.chat {
3
- display: flex;
4
- flex-direction: column;
5
- gap: 1.5rem;
3
+ display: flex;
4
+ flex-direction: column;
5
+ gap: 1.5rem;
6
+ color: var(--slate-800);
7
+ font-size: 1.125rem;
8
+ line-height: 1.75;
9
+
10
+ h1 {
11
+ color: var(--slate-800);
12
+ font-weight: 600;
13
+ margin-bottom: 0.5rem;
14
+ font-size: 1.875rem;
15
+ line-height: 1.25;
16
+ }
17
+
18
+ h2 {
6
19
  color: var(--slate-800);
20
+ font-weight: 600;
21
+ margin-bottom: 0.5rem;
22
+ font-size: 1.5rem;
23
+ line-height: 1.25;
24
+ }
25
+
26
+ h3 {
27
+ color: var(--slate-800);
28
+ font-weight: 600;
29
+ margin-bottom: 0.5rem;
30
+ font-size: 1.25rem;
31
+ line-height: 1.25;
32
+ }
33
+
34
+ h4 {
35
+ color: var(--slate-800);
36
+ font-weight: 600;
37
+ margin-bottom: 0.5rem;
7
38
  font-size: 1.125rem;
8
- line-height: 1.75;
9
-
10
- h1 {
11
- color: var(--slate-800);
12
- font-weight: 600;
13
- margin-bottom: 0.5rem;
14
- font-size: 1.875rem;
15
- line-height: 1.25;
16
- }
17
-
18
- h2 {
19
- color: var(--slate-800);
20
- font-weight: 600;
21
- margin-bottom: 0.5rem;
22
- font-size: 1.5rem;
23
- line-height: 1.25;
24
- }
25
-
26
- h3 {
27
- color: var(--slate-800);
28
- font-weight: 600;
29
- margin-bottom: 0.5rem;
39
+ line-height: 1.25;
40
+ }
41
+
42
+ h5 {
43
+ color: var(--slate-800);
44
+ font-weight: 600;
45
+ margin-bottom: 0.5rem;
46
+ font-size: 1rem;
47
+ line-height: 1.25;
48
+ }
49
+
50
+ h6 {
51
+ color: var(--slate-800);
52
+ font-weight: 600;
53
+ margin-bottom: 0.5rem;
54
+ font-size: 0.875rem;
55
+ line-height: 1.25;
56
+ }
57
+
58
+ /* combined list styles */
59
+ ul,
60
+ ol {
61
+ display: flex;
62
+ flex-direction: column;
63
+ gap: .5rem;
64
+ padding-left: 0;
65
+ list-style-type: none;
66
+
67
+ li {
68
+ display: flex;
69
+ padding: 1rem 1.375rem;
70
+ border: 1px solid var(--slate-300);
71
+ border-radius: 0.875rem;
72
+ background-color: white;
30
73
  font-size: 1.25rem;
31
- line-height: 1.25;
32
- }
33
-
34
- h4 {
35
- color: var(--slate-800);
36
- font-weight: 600;
37
- margin-bottom: 0.5rem;
38
- font-size: 1.125rem;
39
- line-height: 1.25;
40
- }
41
-
42
- h5 {
43
- color: var(--slate-800);
44
- font-weight: 600;
45
- margin-bottom: 0.5rem;
46
- font-size: 1rem;
47
- line-height: 1.25;
48
- }
49
-
50
- h6 {
51
- color: var(--slate-800);
52
74
  font-weight: 600;
53
- margin-bottom: 0.5rem;
54
- font-size: 0.875rem;
55
- line-height: 1.25;
56
- }
57
-
58
- /* Combined list styles */
59
- ul,
60
- ol {
61
- display: flex;
62
- flex-direction: column;
63
- gap: .5rem;
64
- padding-left: 0;
65
- list-style-type: none;
66
-
67
- li {
68
- display: flex;
69
- padding: 1rem 1.375rem;
70
- border: 1px solid var(--slate-300);
71
- border-radius: 0.875rem;
72
- background-color: white;
73
- font-size: 1.25rem;
74
- font-weight: 600;
75
- line-height: 1.375;
76
-
77
- &::before {
78
- display: none;
79
- }
80
- }
81
- }
82
-
83
- /* Ordered list specific styles */
84
- ol {
85
- counter-reset: list-counter;
86
-
87
- li::before {
88
- content: counter(list-counter) ".";
89
- counter-increment: list-counter;
90
- display: inline-block;
91
- width: 1.5em;
92
- margin-right: 0.5em;
93
- color: var(--slate-400);
94
- }
95
- }
96
-
97
- a {
98
- color: #2563eb;
99
- text-decoration: underline;
100
-
101
- &:hover {
102
- color: #1d4ed8;
75
+ line-height: 1.375;
76
+
77
+ &::before {
78
+ display: none;
103
79
  }
104
80
  }
105
-
106
- pre {
107
- background-color: #f9fafb;
108
- padding: 1rem;
109
- border-radius: 0.5rem;
110
- overflow-x: auto;
111
- margin: 1rem 0;
112
- }
113
-
114
- code {
115
- background-color: #f9fafb;
116
- padding: 0.125rem 0.375rem;
117
- border-radius: 0.25rem;
118
- font-size: 0.875rem;
119
- font-family: ui-monospace, monospace;
120
- }
121
-
122
- blockquote {
123
- border-left: 4px solid #e5e7eb;
124
- padding-left: 1rem;
125
- font-style: italic;
126
- color: #374151;
127
- margin: 1rem 0;
128
- }
129
-
130
- table {
131
- width: 100%;
132
- border-collapse: collapse;
133
- margin: 1rem 0;
134
- }
135
-
136
- th,
137
- td {
138
- border: 1px solid #e5e7eb;
139
- padding: 0.5rem;
140
- text-align: left;
141
- }
142
-
143
- th {
144
- background-color: #f9fafb;
145
- font-weight: 600;
146
- }
147
-
148
- img {
149
- border-radius: 0.5rem;
150
- margin: 1rem 0;
151
- }
152
-
153
- strong {
154
- font-weight: 600;
155
- color: var(--slate-800);
81
+ }
82
+
83
+ /* ordered list specific styles */
84
+ ol {
85
+ counter-reset: list-counter;
86
+
87
+ li::before {
88
+ content: counter(list-counter) ".";
89
+ counter-increment: list-counter;
90
+ display: inline-block;
91
+ width: 1.5em;
92
+ margin-right: 0.5em;
93
+ color: var(--slate-400);
156
94
  }
157
-
158
- em {
159
- font-style: italic;
95
+ }
96
+
97
+ a {
98
+ color: #2563eb;
99
+ text-decoration: underline;
100
+
101
+ &:hover {
102
+ color: #1d4ed8;
160
103
  }
161
104
  }
162
105
 
106
+ pre {
107
+ background-color: #f9fafb;
108
+ padding: 1rem;
109
+ border-radius: 0.5rem;
110
+ overflow-x: auto;
111
+ margin: 1rem 0;
112
+ }
113
+
114
+ code {
115
+ background-color: #f9fafb;
116
+ padding: 0.125rem 0.375rem;
117
+ border-radius: 0.25rem;
118
+ font-size: 0.875rem;
119
+ font-family: ui-monospace, monospace;
120
+ }
121
+
122
+ blockquote {
123
+ border-left: 4px solid #e5e7eb;
124
+ padding-left: 1rem;
125
+ font-style: italic;
126
+ color: #374151;
127
+ margin: 1rem 0;
128
+ }
129
+
130
+ table {
131
+ width: 100%;
132
+ border-collapse: collapse;
133
+ margin: 1rem 0;
134
+ }
135
+
136
+ th,
137
+ td {
138
+ border: 1px solid #e5e7eb;
139
+ padding: 0.5rem;
140
+ text-align: left;
141
+ }
142
+
143
+ th {
144
+ background-color: #f9fafb;
145
+ font-weight: 600;
146
+ }
147
+
148
+ img {
149
+ border-radius: 0.5rem;
150
+ margin: 1rem 0;
151
+ }
152
+
153
+ strong {
154
+ font-weight: 600;
155
+ color: var(--slate-800);
156
+ }
157
+
158
+ em {
159
+ font-style: italic;
160
+ }
161
+ }
162
+
163
+
164
+ /* Lexi Chat Component Heights */
165
+ .lexi-chat-container {
166
+ height: 95vh;
167
+ }
168
+
169
+ .lexi-chat-container-full {
170
+ height: 100vh;
171
+ }
172
+
173
+ .lexi-avatar-large {
174
+ height: 375px;
175
+ }
176
+
177
+ .lexi-avatar-medium {
178
+ height: 300px;
179
+ }
180
+
181
+ .lexi-input-container {
182
+ height: 335px;
183
+ }
184
+
185
+ /* Lexi Chat Component Constraints */
186
+ .lexi-input-max-height {
187
+ max-height: 200px;
188
+ }
189
+
190
+ .lexi-textarea-min-height {
191
+ min-height: 35px;
192
+ }
193
+
194
+ .lexi-message-max-width {
195
+ max-width: 80%;
196
+ }
197
+
163
198
  /* Tray Animations */
164
199
  .tray-container {
165
200
  transition: all 500ms ease-in-out;
@@ -212,7 +247,58 @@
212
247
 
213
248
  /* Common content transitions */
214
249
  .tray-content {
215
- transition: opacity 500ms ease-in-out, transform 500ms ease-in-out;
250
+ transition: opacity 300ms ease-in-out, transform 500ms ease-in-out;
216
251
  opacity: 1;
217
252
  transform: translate(0);
218
- }
253
+ }
254
+
255
+ /* Lexi Tray Overrides */
256
+ .gamma-tray.lexi-tray.collapsed {
257
+ width: 0px; /* Completely hide the tray */
258
+ border: none; /* Remove border when collapsed */
259
+ overflow: visible; /* Allow avatar to show outside tray bounds */
260
+ }
261
+
262
+ .gamma-tray.lexi-tray.collapsed .tray-content {
263
+ opacity: 0;
264
+ transform: translateX(-1rem);
265
+ pointer-events: none;
266
+ }
267
+
268
+ /* Fast fade out when collapsing */
269
+ .gamma-tray.lexi-tray.collapsed .tray-content {
270
+ transition: opacity 200ms ease-in-out, transform 500ms ease-in-out;
271
+ }
272
+
273
+ /* Delayed fade in when expanding - wait for width animation to mostly complete */
274
+ .gamma-tray.lexi-tray:not(.collapsed) .tray-content {
275
+ transition: opacity 200ms ease-in-out 300ms, transform 500ms ease-in-out;
276
+ }
277
+
278
+ /* Hide standard collapse button when Lexi tray is collapsed */
279
+ .gamma-tray.lexi-tray.collapsed > button[data-action="click->tray#toggle"]:not(.lexi-floating-avatar) {
280
+ display: none;
281
+ }
282
+
283
+ /* Show floating Lexi avatar button when collapsed - with delay to avoid overlap */
284
+ .gamma-tray.lexi-tray.collapsed .lexi-floating-avatar {
285
+ display: block !important;
286
+ opacity: 0;
287
+ animation: lexi-avatar-appear 200ms ease-in-out 400ms forwards;
288
+ }
289
+
290
+ @keyframes lexi-avatar-appear {
291
+ from {
292
+ opacity: 0;
293
+ transform: scale(0.8);
294
+ }
295
+ to {
296
+ opacity: 1;
297
+ transform: scale(1);
298
+ }
299
+ }
300
+
301
+ /* Hide floating avatar when tray is expanded */
302
+ .gamma-tray.lexi-tray:not(.collapsed) .lexi-floating-avatar {
303
+ display: none !important;
304
+ }
@@ -4,7 +4,7 @@ module MetaWorkflows
4
4
  class BaseDebugController < MetaWorkflows::ApplicationController
5
5
  include MetaWorkflows::DebugHelper
6
6
 
7
- layout 'meta_workflows/debug'
7
+ layout 'meta_workflows/application'
8
8
 
9
9
  # Apply authentication only in production environment
10
10
  before_action :authenticate_with_basic_auth, if: :production_environment?
@@ -1,16 +1,70 @@
1
1
  <!DOCTYPE html>
2
2
  <html>
3
3
  <head>
4
- <title>Meta Workflows</title>
4
+ <title>MetaWorkflows Debug Tool</title>
5
5
  <%= csrf_meta_tags %>
6
6
  <%= csp_meta_tag %>
7
7
 
8
- <%= stylesheet_link_tag "meta_workflows/application", media: "all" %>
9
- <%= javascript_include_tag "meta_workflows/application" %>
8
+ <%= yield :head %>
9
+
10
+ <!-- Tailwind CSS -->
11
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
12
+ <script src="https://cdn.tailwindcss.com"></script>
13
+
14
+ <!-- JSON Viewer Web Component -->
15
+ <script src="https://unpkg.com/@alenaksu/json-viewer@2.1.0/dist/json-viewer.bundle.js"></script>
10
16
  </head>
11
17
 
12
- <body>
13
- <%= render 'layouts/meta_workflows/flash' %>
14
- <%= yield %>
18
+ <body class="bg-gray-50 min-h-screen">
19
+ <!-- Flash Messages -->
20
+ <% flash.each do |type, message| %>
21
+ <% icon, color_classes = case type.to_sym
22
+ when :notice
23
+ ["fa-circle-check", "bg-green-50 border-green-200 text-green-800"]
24
+ when :alert
25
+ ["fa-triangle-exclamation", "bg-red-50 border-red-200 text-red-800"]
26
+ else
27
+ ["fa-info-circle", "bg-blue-50 border-blue-200 text-blue-800"]
28
+ end %>
29
+ <div class="flex items-center gap-3 border-l-4 p-4 mb-4 shadow-sm rounded-md <%= color_classes %>" role="alert">
30
+ <i class="fa-solid <%= icon %> text-xl"></i>
31
+ <div class="flex-1">
32
+ <%= message %>
33
+ </div>
34
+ <button type="button" class="ml-4 text-gray-400 hover:text-gray-600 focus:outline-none" onclick="this.parentElement.style.display='none'" aria-label="Dismiss">
35
+ <i class="fa-solid fa-xmark"></i>
36
+ </button>
37
+ </div>
38
+ <% end %>
39
+
40
+ <!-- Header Navigation -->
41
+ <nav class="bg-white shadow-sm border-b border-gray-200">
42
+ <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
43
+ <div class="flex justify-between items-center h-16">
44
+ <!-- Logo/Title -->
45
+ <div class="flex items-center">
46
+ <h1 class="text-xl font-semibold text-gray-900">
47
+ MetaWorkflows Debug Tool
48
+ </h1>
49
+ </div>
50
+
51
+ <!-- Navigation Links -->
52
+ <div class="flex space-x-8">
53
+ <%= link_to "Workflows", workflows_path,
54
+ class: "#{current_page?(workflows_path) || params[:action] == 'workflows' || params[:action] == 'show_workflow' ? 'text-blue-600 border-b-2 border-blue-600' : 'text-gray-500 hover:text-gray-700'} px-3 py-2 text-sm font-medium" %>
55
+ <%= link_to "Executions", executions_path,
56
+ class: "#{current_page?(executions_path) || params[:action] == 'executions' || params[:action] == 'show_execution' ? 'text-blue-600 border-b-2 border-blue-600' : 'text-gray-500 hover:text-gray-700'} px-3 py-2 text-sm font-medium" %>
57
+ </div>
58
+ </div>
59
+ </div>
60
+ </nav>
61
+
62
+ <!-- Main Content -->
63
+ <main class="max-w-7xl mx-auto py-6 px-4 sm:px-6 lg:px-8">
64
+ <%= yield %>
65
+ </main>
66
+
67
+ <!-- Optional JavaScript -->
68
+ <%= yield :javascripts %>
15
69
  </body>
16
70
  </html>
@@ -1,5 +1,5 @@
1
1
  <%# Lexi Chat Alpha Tray (Center Display) %>
2
- <div class="relative flex flex-col h-[95vh] bg-white px-4">
2
+ <div class="relative flex flex-col lexi-chat-container bg-white px-4">
3
3
  <%# Header with Lexi logo and action icons - spans full width %>
4
4
  <div class="flex-shrink-0 flex items-center justify-between pb-2 border-b border-gray-200">
5
5
  <div class="flex items-center space-x-2">
@@ -19,7 +19,7 @@
19
19
  <div class="flex-1 flex min-h-0">
20
20
  <!-- Lexi auto-width side column -->
21
21
  <div class="flex-shrink-0 flex flex-col justify-end pb-4">
22
- <%= image_tag("lexi-expanded.png", alt: "Lexi Avatar", class: "h-[375px] w-auto") %>
22
+ <%= image_tag("lexi-expanded.png", alt: "Lexi Avatar", class: "lexi-avatar-large w-auto") %>
23
23
  </div>
24
24
 
25
25
  <!-- Main content area (chat + input) -->
@@ -1,5 +1,5 @@
1
1
  <%# Lexi Chat Tray %>
2
- <div class="relative flex flex-col h-[100vh] bg-white px-4">
2
+ <div class="relative flex flex-col lexi-chat-container-full bg-white px-4">
3
3
  <%# Header with Lexi logo and action icons %>
4
4
  <div class="flex-shrink-0 flex items-center justify-between pb-2 border-b border-gray-200">
5
5
  <div class="flex items-center space-x-2">
@@ -21,7 +21,7 @@
21
21
  </div>
22
22
 
23
23
  <%# Lexi avatar and input area pinned to bottom %>
24
- <div class="relative bg-white h-[335px]">
24
+ <div class="relative bg-white lexi-input-container">
25
25
  <!-- Bottom section with recording notice and input area -->
26
26
  <div class="absolute bottom-15 left-0 right-0 flex flex-col space-y-2 z-10">
27
27
  <!-- Recording notice -->
@@ -35,6 +35,6 @@
35
35
  </div>
36
36
 
37
37
  <!-- Lexi image positioned absolutely to the left -->
38
- <%= image_tag("lexi-expanded.png", alt: "Lexi Avatar", class: "absolute bottom-10 left-0 h-[300px] w-auto pointer-events-none") %>
38
+ <%= image_tag("lexi-expanded.png", alt: "Lexi Avatar", class: "absolute bottom-10 left-0 lexi-avatar-medium w-auto pointer-events-none") %>
39
39
  </div>
40
40
  </div>
@@ -5,10 +5,10 @@
5
5
  <fieldset>
6
6
  <div class="flex flex-col gap-1">
7
7
  <!-- Input Container -->
8
- <div class="flex flex-col max-h-[200px] border border-gray-300 rounded-lg bg-white/80 p-2">
8
+ <div class="flex flex-col lexi-input-max-height border border-gray-300 rounded-lg bg-white/80 p-2">
9
9
  <!-- Input area with icons -->
10
10
  <div class="flex-1 relative">
11
- <%= form.text_area :message, rows: 1, placeholder: random_chat_placeholder, disabled: local_assigns[:responding] || !local_assigns[:response_enabled], class: "w-full min-h-[35px] border-0 resize-none focus:outline-none focus:ring-0 bg-transparent text-base overflow-y-auto" %>
11
+ <%= form.text_area :message, rows: 1, placeholder: random_chat_placeholder, disabled: local_assigns[:responding] || !local_assigns[:response_enabled], class: "w-full lexi-textarea-min-height border-0 resize-none focus:outline-none focus:ring-0 bg-transparent text-base overflow-y-auto" %>
12
12
  </div>
13
13
 
14
14
  <div class="flex justify-between">
@@ -11,7 +11,7 @@
11
11
  <% if message.role == 'user' %>
12
12
  <!-- User message bubble (right-aligned, amber background) -->
13
13
  <div class="flex justify-end">
14
- <div class="max-w-[80%] bg-amber-100 rounded-xl px-6 py-3">
14
+ <div class="lexi-message-max-width bg-amber-100 rounded-xl px-6 py-3">
15
15
  <div class="text-sm">
16
16
  <%= simple_format(message.content) %>
17
17
  </div>
@@ -22,7 +22,7 @@
22
22
  <!-- Lexi message bubble (left-aligned) -->
23
23
  <div class="flex justify-start">
24
24
  <!-- Message Bubble -->
25
- <div class="max-w-[80%] bg-slate-100 rounded-xl px-6 py-3">
25
+ <div class="lexi-message-max-width bg-slate-100 rounded-xl px-6 py-3">
26
26
  <div class="prose prose-sm max-w-none">
27
27
  <%= markdown(message.content) %>
28
28
  </div>
@@ -35,7 +35,7 @@
35
35
  <% if is_streaming %>
36
36
  <div class="flex justify-start">
37
37
  <!-- Streaming Message Bubble -->
38
- <div class="max-w-[80%] bg-slate-100 rounded-xl px-6 py-3">
38
+ <div class="lexi-message-max-width bg-slate-100 rounded-xl px-6 py-3">
39
39
  <div class="prose prose-sm max-w-none">
40
40
  <%= markdown(full_response) %>
41
41
  </div>
@@ -3,7 +3,7 @@
3
3
  module MetaWorkflows
4
4
  MAJOR = 0
5
5
  MINOR = 9
6
- PATCH = 0 # this is automatically incremented by the build process
6
+ PATCH = 1 # this is automatically incremented by the build process
7
7
 
8
8
  VERSION = "#{MetaWorkflows::MAJOR}.#{MetaWorkflows::MINOR}.#{MetaWorkflows::PATCH}".freeze
9
9
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: meta_workflows
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0
4
+ version: 0.9.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Leonid Medovyy
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2025-06-30 00:00:00.000000000 Z
12
+ date: 2025-07-01 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
@@ -157,7 +157,6 @@ files:
157
157
  - app/services/meta_workflows/workflow_import_service.rb
158
158
  - app/sidekiq/meta_workflows/tools/meta_workflow_tool.rb
159
159
  - app/views/layouts/meta_workflows/application.html.erb
160
- - app/views/layouts/meta_workflows/debug.html.erb
161
160
  - app/views/meta_workflows/_lexi_chat_alpha_tray.html.erb
162
161
  - app/views/meta_workflows/_lexi_chat_right_tray.html.erb
163
162
  - app/views/meta_workflows/_loader.html.erb
@@ -1,50 +0,0 @@
1
- <!DOCTYPE html>
2
- <html>
3
- <head>
4
- <title>MetaWorkflows Debug Tool</title>
5
- <%= csrf_meta_tags %>
6
- <%= csp_meta_tag %>
7
-
8
- <%= yield :head %>
9
-
10
- <%= stylesheet_link_tag "meta_workflows/application", media: "all" %>
11
-
12
- <!-- Tailwind CSS -->
13
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
14
- <script src="https://cdn.tailwindcss.com"></script>
15
-
16
- <!-- JSON Viewer Web Component -->
17
- <script src="https://unpkg.com/@alenaksu/json-viewer@2.1.0/dist/json-viewer.bundle.js"></script>
18
- </head>
19
- <body class="bg-gray-50 min-h-screen">
20
- <!-- Header Navigation -->
21
- <nav class="bg-white shadow-sm border-b border-gray-200">
22
- <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
23
- <div class="flex justify-between items-center h-16">
24
- <!-- Logo/Title -->
25
- <div class="flex items-center">
26
- <h1 class="text-xl font-semibold text-gray-900">
27
- MetaWorkflows Debug Tool
28
- </h1>
29
- </div>
30
-
31
- <!-- Navigation Links -->
32
- <div class="flex space-x-8">
33
- <%= link_to "Workflows", workflows_path,
34
- class: "#{current_page?(workflows_path) || params[:action] == 'workflows' || params[:action] == 'show_workflow' ? 'text-blue-600 border-b-2 border-blue-600' : 'text-gray-500 hover:text-gray-700'} px-3 py-2 text-sm font-medium" %>
35
- <%= link_to "Executions", executions_path,
36
- class: "#{current_page?(executions_path) || params[:action] == 'executions' || params[:action] == 'show_execution' ? 'text-blue-600 border-b-2 border-blue-600' : 'text-gray-500 hover:text-gray-700'} px-3 py-2 text-sm font-medium" %>
37
- </div>
38
- </div>
39
- </div>
40
- </nav>
41
-
42
- <!-- Main Content -->
43
- <main class="max-w-7xl mx-auto py-6 px-4 sm:px-6 lg:px-8">
44
- <%= yield %>
45
- </main>
46
-
47
- <!-- Optional JavaScript -->
48
- <%= yield :javascripts %>
49
- </body>
50
- </html>