ruby_llm-agents 1.3.4 → 2.1.0
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 +4 -4
- data/README.md +112 -336
- data/app/controllers/concerns/ruby_llm/agents/sortable.rb +0 -1
- data/app/controllers/ruby_llm/agents/agents_controller.rb +5 -56
- data/app/controllers/ruby_llm/agents/dashboard_controller.rb +22 -106
- data/app/controllers/ruby_llm/agents/executions_controller.rb +4 -114
- data/app/controllers/ruby_llm/agents/tenants_controller.rb +30 -2
- data/app/helpers/ruby_llm/agents/application_helper.rb +19 -53
- data/app/models/ruby_llm/agents/execution/analytics.rb +13 -54
- data/app/models/ruby_llm/agents/execution/scopes.rb +61 -14
- data/app/models/ruby_llm/agents/execution.rb +52 -12
- data/app/models/ruby_llm/agents/execution_detail.rb +18 -0
- data/app/models/ruby_llm/agents/tenant/budgetable.rb +132 -24
- data/app/models/ruby_llm/agents/tenant/incrementable.rb +117 -0
- data/app/models/ruby_llm/agents/tenant/resettable.rb +128 -0
- data/app/models/ruby_llm/agents/tenant/trackable.rb +46 -12
- data/app/models/ruby_llm/agents/tenant.rb +2 -3
- data/app/models/ruby_llm/agents/tenant_budget.rb +6 -3
- data/app/services/ruby_llm/agents/agent_registry.rb +6 -112
- data/app/views/layouts/ruby_llm/agents/application.html.erb +89 -252
- data/app/views/ruby_llm/agents/agents/_config_agent.html.erb +71 -218
- data/app/views/ruby_llm/agents/agents/_config_embedder.html.erb +20 -63
- data/app/views/ruby_llm/agents/agents/_config_image_generator.html.erb +44 -131
- data/app/views/ruby_llm/agents/agents/_config_moderator.html.erb +16 -57
- data/app/views/ruby_llm/agents/agents/_config_speaker.html.erb +39 -104
- data/app/views/ruby_llm/agents/agents/_config_transcriber.html.erb +29 -82
- data/app/views/ruby_llm/agents/agents/_empty_state.html.erb +4 -14
- data/app/views/ruby_llm/agents/agents/index.html.erb +105 -274
- data/app/views/ruby_llm/agents/agents/show.html.erb +248 -378
- data/app/views/ruby_llm/agents/dashboard/_action_center.html.erb +29 -52
- data/app/views/ruby_llm/agents/dashboard/_tenant_budget.html.erb +73 -99
- data/app/views/ruby_llm/agents/dashboard/index.html.erb +228 -433
- data/app/views/ruby_llm/agents/executions/_execution.html.erb +1 -1
- data/app/views/ruby_llm/agents/executions/_filters.html.erb +4 -25
- data/app/views/ruby_llm/agents/executions/_list.html.erb +111 -152
- data/app/views/ruby_llm/agents/executions/index.html.erb +5 -7
- data/app/views/ruby_llm/agents/executions/show.html.erb +526 -1037
- data/app/views/ruby_llm/agents/shared/_agent_type_badge.html.erb +5 -21
- data/app/views/ruby_llm/agents/shared/_executions_table.html.erb +70 -191
- data/app/views/ruby_llm/agents/shared/_filter_dropdown.html.erb +16 -44
- data/app/views/ruby_llm/agents/shared/_select_dropdown.html.erb +12 -41
- data/app/views/ruby_llm/agents/shared/_status_badge.html.erb +11 -65
- data/app/views/ruby_llm/agents/shared/_tenant_filter.html.erb +6 -5
- data/app/views/ruby_llm/agents/system_config/show.html.erb +240 -351
- data/app/views/ruby_llm/agents/tenants/_form.html.erb +67 -77
- data/app/views/ruby_llm/agents/tenants/edit.html.erb +7 -9
- data/app/views/ruby_llm/agents/tenants/index.html.erb +100 -122
- data/app/views/ruby_llm/agents/tenants/show.html.erb +146 -336
- data/config/routes.rb +0 -13
- data/lib/generators/ruby_llm_agents/install_generator.rb +13 -17
- data/lib/generators/ruby_llm_agents/migrate_structure_generator.rb +2 -12
- data/lib/generators/ruby_llm_agents/restructure_generator.rb +0 -2
- data/lib/generators/ruby_llm_agents/templates/add_usage_counters_to_tenants_migration.rb.tt +37 -0
- data/lib/generators/ruby_llm_agents/templates/agent.rb.tt +1 -2
- data/lib/generators/ruby_llm_agents/templates/application_agent.rb.tt +1 -1
- data/lib/generators/ruby_llm_agents/templates/application_image_pipeline.rb.tt +0 -1
- data/lib/generators/ruby_llm_agents/templates/create_execution_details_migration.rb.tt +27 -0
- data/lib/generators/ruby_llm_agents/templates/create_tenants_migration.rb.tt +25 -0
- data/lib/generators/ruby_llm_agents/templates/image_pipeline.rb.tt +0 -1
- data/lib/generators/ruby_llm_agents/templates/initializer.rb.tt +33 -12
- data/lib/generators/ruby_llm_agents/templates/migration.rb.tt +40 -71
- data/lib/generators/ruby_llm_agents/templates/remove_agent_version_migration.rb.tt +13 -0
- data/lib/generators/ruby_llm_agents/templates/remove_workflow_columns_migration.rb.tt +19 -0
- data/lib/generators/ruby_llm_agents/templates/skills/AGENTS.md.tt +2 -4
- data/lib/generators/ruby_llm_agents/templates/skills/IMAGE_PIPELINES.md.tt +0 -1
- data/lib/generators/ruby_llm_agents/templates/split_execution_details_migration.rb.tt +232 -0
- data/lib/generators/ruby_llm_agents/upgrade_generator.rb +77 -259
- data/lib/ruby_llm/agents/audio/speaker.rb +0 -1
- data/lib/ruby_llm/agents/audio/transcriber.rb +0 -1
- data/lib/ruby_llm/agents/base_agent.rb +54 -23
- data/lib/ruby_llm/agents/core/base/callbacks.rb +142 -0
- data/lib/ruby_llm/agents/core/base.rb +23 -55
- data/lib/ruby_llm/agents/core/configuration.rb +97 -117
- data/lib/ruby_llm/agents/core/errors.rb +0 -58
- data/lib/ruby_llm/agents/core/instrumentation.rb +157 -110
- data/lib/ruby_llm/agents/core/llm_tenant.rb +8 -7
- data/lib/ruby_llm/agents/core/version.rb +1 -1
- data/lib/ruby_llm/agents/dsl/base.rb +157 -17
- data/lib/ruby_llm/agents/dsl/caching.rb +33 -2
- data/lib/ruby_llm/agents/dsl/reliability.rb +148 -0
- data/lib/ruby_llm/agents/dsl.rb +1 -2
- data/lib/ruby_llm/agents/image/analyzer/execution.rb +1 -2
- data/lib/ruby_llm/agents/image/background_remover/execution.rb +1 -2
- data/lib/ruby_llm/agents/image/concerns/image_operation_dsl.rb +1 -13
- data/lib/ruby_llm/agents/image/concerns/image_operation_execution.rb +2 -2
- data/lib/ruby_llm/agents/image/editor/dsl.rb +0 -14
- data/lib/ruby_llm/agents/image/editor/execution.rb +1 -10
- data/lib/ruby_llm/agents/image/editor.rb +0 -1
- data/lib/ruby_llm/agents/image/generator.rb +0 -21
- data/lib/ruby_llm/agents/image/pipeline/dsl.rb +0 -13
- data/lib/ruby_llm/agents/image/pipeline/execution.rb +0 -1
- data/lib/ruby_llm/agents/image/transformer/dsl.rb +0 -13
- data/lib/ruby_llm/agents/image/transformer/execution.rb +1 -10
- data/lib/ruby_llm/agents/image/transformer.rb +0 -1
- data/lib/ruby_llm/agents/image/upscaler/execution.rb +1 -2
- data/lib/ruby_llm/agents/image/variator/execution.rb +1 -2
- data/lib/ruby_llm/agents/infrastructure/alert_manager.rb +78 -173
- data/lib/ruby_llm/agents/infrastructure/budget/budget_query.rb +66 -2
- data/lib/ruby_llm/agents/infrastructure/budget/spend_recorder.rb +0 -12
- data/lib/ruby_llm/agents/infrastructure/circuit_breaker.rb +10 -13
- data/lib/ruby_llm/agents/infrastructure/execution_logger_job.rb +8 -0
- data/lib/ruby_llm/agents/pipeline/context.rb +0 -1
- data/lib/ruby_llm/agents/pipeline/middleware/budget.rb +28 -4
- data/lib/ruby_llm/agents/pipeline/middleware/cache.rb +3 -10
- data/lib/ruby_llm/agents/pipeline/middleware/instrumentation.rb +88 -55
- data/lib/ruby_llm/agents/pipeline/middleware/tenant.rb +5 -41
- data/lib/ruby_llm/agents/rails/engine.rb +6 -6
- data/lib/ruby_llm/agents/results/base.rb +1 -49
- data/lib/ruby_llm/agents/text/embedder.rb +0 -1
- data/lib/ruby_llm/agents.rb +1 -9
- data/lib/tasks/ruby_llm_agents.rake +34 -0
- metadata +14 -83
- data/app/controllers/ruby_llm/agents/api_configurations_controller.rb +0 -214
- data/app/controllers/ruby_llm/agents/workflows_controller.rb +0 -544
- data/app/mailers/ruby_llm/agents/alert_mailer.rb +0 -84
- data/app/mailers/ruby_llm/agents/application_mailer.rb +0 -28
- data/app/models/ruby_llm/agents/api_configuration.rb +0 -386
- data/app/models/ruby_llm/agents/execution/workflow.rb +0 -170
- data/app/models/ruby_llm/agents/tenant/configurable.rb +0 -135
- data/app/views/ruby_llm/agents/agents/_agent.html.erb +0 -98
- data/app/views/ruby_llm/agents/agents/_version_comparison.html.erb +0 -186
- data/app/views/ruby_llm/agents/agents/_workflow.html.erb +0 -126
- data/app/views/ruby_llm/agents/alert_mailer/alert_notification.html.erb +0 -107
- data/app/views/ruby_llm/agents/alert_mailer/alert_notification.text.erb +0 -18
- data/app/views/ruby_llm/agents/api_configurations/_api_key_field.html.erb +0 -34
- data/app/views/ruby_llm/agents/api_configurations/_form.html.erb +0 -288
- data/app/views/ruby_llm/agents/api_configurations/edit.html.erb +0 -95
- data/app/views/ruby_llm/agents/api_configurations/edit_tenant.html.erb +0 -97
- data/app/views/ruby_llm/agents/api_configurations/show.html.erb +0 -214
- data/app/views/ruby_llm/agents/api_configurations/tenant.html.erb +0 -179
- data/app/views/ruby_llm/agents/dashboard/_agent_comparison.html.erb +0 -73
- data/app/views/ruby_llm/agents/dashboard/_alerts_feed.html.erb +0 -62
- data/app/views/ruby_llm/agents/dashboard/_breaker_strip.html.erb +0 -47
- data/app/views/ruby_llm/agents/dashboard/_budgets_bar.html.erb +0 -75
- data/app/views/ruby_llm/agents/dashboard/_model_comparison.html.erb +0 -56
- data/app/views/ruby_llm/agents/dashboard/_model_cost_breakdown.html.erb +0 -115
- data/app/views/ruby_llm/agents/dashboard/_now_strip.html.erb +0 -59
- data/app/views/ruby_llm/agents/dashboard/_top_errors.html.erb +0 -60
- data/app/views/ruby_llm/agents/executions/_workflow_summary.html.erb +0 -86
- data/app/views/ruby_llm/agents/executions/dry_run.html.erb +0 -149
- data/app/views/ruby_llm/agents/shared/_breadcrumbs.html.erb +0 -48
- data/app/views/ruby_llm/agents/shared/_nav_link.html.erb +0 -27
- data/app/views/ruby_llm/agents/shared/_stat_card.html.erb +0 -14
- data/app/views/ruby_llm/agents/shared/_workflow_type_badge.html.erb +0 -35
- data/app/views/ruby_llm/agents/workflows/_empty_state.html.erb +0 -22
- data/app/views/ruby_llm/agents/workflows/_step_performance.html.erb +0 -228
- data/app/views/ruby_llm/agents/workflows/_structure_dsl.html.erb +0 -539
- data/app/views/ruby_llm/agents/workflows/_structure_parallel.html.erb +0 -76
- data/app/views/ruby_llm/agents/workflows/_structure_pipeline.html.erb +0 -74
- data/app/views/ruby_llm/agents/workflows/_structure_router.html.erb +0 -108
- data/app/views/ruby_llm/agents/workflows/_workflow_diagram.html.erb +0 -920
- data/app/views/ruby_llm/agents/workflows/index.html.erb +0 -179
- data/app/views/ruby_llm/agents/workflows/show.html.erb +0 -467
- data/lib/generators/ruby_llm_agents/api_configuration_generator.rb +0 -100
- data/lib/generators/ruby_llm_agents/templates/add_workflow_migration.rb.tt +0 -38
- data/lib/generators/ruby_llm_agents/templates/application_workflow.rb.tt +0 -48
- data/lib/generators/ruby_llm_agents/templates/create_api_configurations_migration.rb.tt +0 -90
- data/lib/generators/ruby_llm_agents/templates/skills/WORKFLOWS.md.tt +0 -551
- data/lib/ruby_llm/agents/core/base/moderation_dsl.rb +0 -181
- data/lib/ruby_llm/agents/core/base/moderation_execution.rb +0 -274
- data/lib/ruby_llm/agents/core/resolved_config.rb +0 -348
- data/lib/ruby_llm/agents/image/generator/content_policy.rb +0 -95
- data/lib/ruby_llm/agents/infrastructure/redactor.rb +0 -130
- data/lib/ruby_llm/agents/results/moderation_result.rb +0 -158
- data/lib/ruby_llm/agents/text/moderator.rb +0 -237
- data/lib/ruby_llm/agents/workflow/approval.rb +0 -205
- data/lib/ruby_llm/agents/workflow/approval_store.rb +0 -179
- data/lib/ruby_llm/agents/workflow/async.rb +0 -220
- data/lib/ruby_llm/agents/workflow/async_executor.rb +0 -156
- data/lib/ruby_llm/agents/workflow/dsl/executor.rb +0 -467
- data/lib/ruby_llm/agents/workflow/dsl/input_schema.rb +0 -244
- data/lib/ruby_llm/agents/workflow/dsl/iteration_executor.rb +0 -289
- data/lib/ruby_llm/agents/workflow/dsl/parallel_group.rb +0 -107
- data/lib/ruby_llm/agents/workflow/dsl/route_builder.rb +0 -150
- data/lib/ruby_llm/agents/workflow/dsl/schedule_helpers.rb +0 -187
- data/lib/ruby_llm/agents/workflow/dsl/step_config.rb +0 -352
- data/lib/ruby_llm/agents/workflow/dsl/step_executor.rb +0 -415
- data/lib/ruby_llm/agents/workflow/dsl/wait_config.rb +0 -257
- data/lib/ruby_llm/agents/workflow/dsl/wait_executor.rb +0 -317
- data/lib/ruby_llm/agents/workflow/dsl.rb +0 -576
- data/lib/ruby_llm/agents/workflow/instrumentation.rb +0 -249
- data/lib/ruby_llm/agents/workflow/notifiers/base.rb +0 -117
- data/lib/ruby_llm/agents/workflow/notifiers/email.rb +0 -117
- data/lib/ruby_llm/agents/workflow/notifiers/slack.rb +0 -180
- data/lib/ruby_llm/agents/workflow/notifiers/webhook.rb +0 -121
- data/lib/ruby_llm/agents/workflow/notifiers.rb +0 -70
- data/lib/ruby_llm/agents/workflow/orchestrator.rb +0 -416
- data/lib/ruby_llm/agents/workflow/result.rb +0 -592
- data/lib/ruby_llm/agents/workflow/thread_pool.rb +0 -185
- data/lib/ruby_llm/agents/workflow/throttle_manager.rb +0 -206
- data/lib/ruby_llm/agents/workflow/wait_result.rb +0 -213
|
@@ -1,63 +1,22 @@
|
|
|
1
1
|
<%# Configuration partial for Moderator types %>
|
|
2
|
-
<div class="
|
|
3
|
-
<
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
<p class="text-xs text-gray-500 dark:text-gray-400 uppercase tracking-wider mb-3">
|
|
9
|
-
Moderation Settings
|
|
10
|
-
</p>
|
|
11
|
-
|
|
12
|
-
<div class="grid grid-cols-2 md:grid-cols-4 gap-4 mb-6">
|
|
13
|
-
<div>
|
|
14
|
-
<p class="text-sm text-gray-500 dark:text-gray-400">Model</p>
|
|
15
|
-
<p class="font-medium text-gray-900 dark:text-gray-100">
|
|
16
|
-
<%= config[:model] %>
|
|
17
|
-
</p>
|
|
2
|
+
<div class="font-mono text-xs">
|
|
3
|
+
<span class="text-[10px] text-gray-400 dark:text-gray-600 uppercase tracking-wider">moderation settings</span>
|
|
4
|
+
<div class="mt-1 space-y-px">
|
|
5
|
+
<div class="flex items-center gap-3 py-1 px-2 -mx-2">
|
|
6
|
+
<span class="w-24 text-gray-400 dark:text-gray-600">model</span>
|
|
7
|
+
<span class="text-gray-900 dark:text-gray-200"><%= config[:model] %></span>
|
|
18
8
|
</div>
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
<
|
|
22
|
-
<p class="font-medium text-gray-900 dark:text-gray-100">
|
|
23
|
-
<% if config[:threshold] %>
|
|
24
|
-
<%= config[:threshold] %>
|
|
25
|
-
<% else %>
|
|
26
|
-
<span class="text-gray-400 dark:text-gray-500">Default</span>
|
|
27
|
-
<% end %>
|
|
28
|
-
</p>
|
|
9
|
+
<div class="flex items-center gap-3 py-1 px-2 -mx-2">
|
|
10
|
+
<span class="w-24 text-gray-400 dark:text-gray-600">threshold</span>
|
|
11
|
+
<span class="text-gray-900 dark:text-gray-200"><%= config[:threshold] || 'default' %></span>
|
|
29
12
|
</div>
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
<%= category %>
|
|
38
|
-
</span>
|
|
39
|
-
<% end %>
|
|
40
|
-
<% else %>
|
|
41
|
-
<span class="text-gray-400 dark:text-gray-500">All categories</span>
|
|
42
|
-
<% end %>
|
|
43
|
-
</p>
|
|
44
|
-
</div>
|
|
45
|
-
</div>
|
|
46
|
-
|
|
47
|
-
<!-- Info Section -->
|
|
48
|
-
<div class="border-t border-gray-100 dark:border-gray-700 pt-4">
|
|
49
|
-
<div class="flex items-start gap-3 p-3 rounded-lg bg-orange-50 dark:bg-orange-900/20">
|
|
50
|
-
<div class="flex-shrink-0 mt-0.5">
|
|
51
|
-
<svg class="w-5 h-5 text-orange-500" fill="currentColor" viewBox="0 0 20 20">
|
|
52
|
-
<path fill-rule="evenodd" d="M10 1.944A11.954 11.954 0 012.166 5C2.056 5.649 2 6.319 2 7c0 5.225 3.34 9.67 8 11.317C14.66 16.67 18 12.225 18 7c0-.682-.057-1.35-.166-2.001A11.954 11.954 0 0110 1.944zM11 14a1 1 0 11-2 0 1 1 0 012 0zm0-7a1 1 0 10-2 0v3a1 1 0 102 0V7z" clip-rule="evenodd"/>
|
|
53
|
-
</svg>
|
|
54
|
-
</div>
|
|
55
|
-
<div>
|
|
56
|
-
<p class="text-sm font-medium text-gray-900 dark:text-gray-100">Moderator</p>
|
|
57
|
-
<p class="text-xs text-gray-600 dark:text-gray-400 mt-1">
|
|
58
|
-
Checks content for policy violations including hate speech, violence, and other harmful content categories.
|
|
59
|
-
</p>
|
|
60
|
-
</div>
|
|
13
|
+
<div class="flex items-center gap-3 py-1 px-2 -mx-2">
|
|
14
|
+
<span class="w-24 text-gray-400 dark:text-gray-600">categories</span>
|
|
15
|
+
<% if config[:categories].present? %>
|
|
16
|
+
<span class="text-gray-900 dark:text-gray-200"><%= config[:categories].join(", ") %></span>
|
|
17
|
+
<% else %>
|
|
18
|
+
<span class="text-gray-400 dark:text-gray-600">all categories</span>
|
|
19
|
+
<% end %>
|
|
61
20
|
</div>
|
|
62
21
|
</div>
|
|
63
22
|
</div>
|
|
@@ -1,108 +1,43 @@
|
|
|
1
1
|
<%# Configuration partial for Speaker types %>
|
|
2
|
-
<div class="
|
|
3
|
-
<
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
<div>
|
|
14
|
-
<
|
|
15
|
-
<
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
<
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
<div>
|
|
43
|
-
<p class="text-sm text-gray-500 dark:text-gray-400">Speed</p>
|
|
44
|
-
<p class="font-medium text-gray-900 dark:text-gray-100">
|
|
45
|
-
<%= config[:speed] || 1.0 %>x
|
|
46
|
-
</p>
|
|
47
|
-
</div>
|
|
48
|
-
</div>
|
|
49
|
-
|
|
50
|
-
<div class="grid grid-cols-2 md:grid-cols-4 gap-4 mb-6">
|
|
51
|
-
<div>
|
|
52
|
-
<p class="text-sm text-gray-500 dark:text-gray-400">Output Format</p>
|
|
53
|
-
<p class="font-medium text-gray-900 dark:text-gray-100">
|
|
54
|
-
<%= config[:output_format] || :mp3 %>
|
|
55
|
-
</p>
|
|
56
|
-
</div>
|
|
57
|
-
|
|
58
|
-
<div>
|
|
59
|
-
<p class="text-sm text-gray-500 dark:text-gray-400">Streaming</p>
|
|
60
|
-
<p class="font-medium text-gray-900 dark:text-gray-100">
|
|
61
|
-
<% if config[:streaming] %>
|
|
62
|
-
<span class="text-green-600 dark:text-green-400">Enabled</span>
|
|
63
|
-
<% else %>
|
|
64
|
-
<span class="text-gray-400 dark:text-gray-500">Disabled</span>
|
|
65
|
-
<% end %>
|
|
66
|
-
</p>
|
|
67
|
-
</div>
|
|
68
|
-
|
|
69
|
-
<div>
|
|
70
|
-
<p class="text-sm text-gray-500 dark:text-gray-400">SSML</p>
|
|
71
|
-
<p class="font-medium text-gray-900 dark:text-gray-100">
|
|
72
|
-
<% if config[:ssml_enabled] %>
|
|
73
|
-
<span class="text-green-600 dark:text-green-400">Enabled</span>
|
|
74
|
-
<% else %>
|
|
75
|
-
<span class="text-gray-400 dark:text-gray-500">Disabled</span>
|
|
76
|
-
<% end %>
|
|
77
|
-
</p>
|
|
78
|
-
</div>
|
|
79
|
-
|
|
80
|
-
<div>
|
|
81
|
-
<p class="text-sm text-gray-500 dark:text-gray-400">Cache</p>
|
|
82
|
-
<p class="font-medium text-gray-900 dark:text-gray-100">
|
|
83
|
-
<% if config[:cache_enabled] %>
|
|
84
|
-
Enabled (<%= config[:cache_ttl].inspect %>)
|
|
85
|
-
<% else %>
|
|
86
|
-
<span class="text-gray-400 dark:text-gray-500">Disabled</span>
|
|
87
|
-
<% end %>
|
|
88
|
-
</p>
|
|
89
|
-
</div>
|
|
90
|
-
</div>
|
|
91
|
-
|
|
92
|
-
<!-- Info Section -->
|
|
93
|
-
<div class="border-t border-gray-100 dark:border-gray-700 pt-4">
|
|
94
|
-
<div class="flex items-start gap-3 p-3 rounded-lg bg-purple-50 dark:bg-purple-900/20">
|
|
95
|
-
<div class="flex-shrink-0 mt-0.5">
|
|
96
|
-
<svg class="w-5 h-5 text-purple-500" fill="currentColor" viewBox="0 0 20 20">
|
|
97
|
-
<path fill-rule="evenodd" d="M9.383 3.076A1 1 0 0110 4v12a1 1 0 01-1.707.707L4.586 13H2a1 1 0 01-1-1V8a1 1 0 011-1h2.586l3.707-3.707a1 1 0 011.09-.217zM14.657 2.929a1 1 0 011.414 0A9.972 9.972 0 0119 10a9.972 9.972 0 01-2.929 7.071 1 1 0 01-1.414-1.414A7.971 7.971 0 0017 10c0-2.21-.894-4.208-2.343-5.657a1 1 0 010-1.414zm-2.829 2.828a1 1 0 011.415 0A5.983 5.983 0 0115 10a5.984 5.984 0 01-1.757 4.243 1 1 0 01-1.415-1.415A3.984 3.984 0 0013 10a3.983 3.983 0 00-1.172-2.828 1 1 0 010-1.415z" clip-rule="evenodd"/>
|
|
98
|
-
</svg>
|
|
99
|
-
</div>
|
|
100
|
-
<div>
|
|
101
|
-
<p class="text-sm font-medium text-gray-900 dark:text-gray-100">Speaker</p>
|
|
102
|
-
<p class="text-xs text-gray-600 dark:text-gray-400 mt-1">
|
|
103
|
-
Converts text to natural-sounding speech audio. Supports multiple voices, speeds, and output formats.
|
|
104
|
-
</p>
|
|
105
|
-
</div>
|
|
2
|
+
<div class="font-mono text-xs">
|
|
3
|
+
<span class="text-[10px] text-gray-400 dark:text-gray-600 uppercase tracking-wider">text-to-speech settings</span>
|
|
4
|
+
<div class="mt-1 space-y-px">
|
|
5
|
+
<div class="flex items-center gap-3 py-1 px-2 -mx-2">
|
|
6
|
+
<span class="w-24 text-gray-400 dark:text-gray-600">model</span>
|
|
7
|
+
<span class="text-gray-900 dark:text-gray-200"><%= config[:model] %></span>
|
|
8
|
+
</div>
|
|
9
|
+
<div class="flex items-center gap-3 py-1 px-2 -mx-2">
|
|
10
|
+
<span class="w-24 text-gray-400 dark:text-gray-600">provider</span>
|
|
11
|
+
<span class="text-gray-900 dark:text-gray-200"><%= config[:provider] ? config[:provider].to_s.titleize : 'default' %></span>
|
|
12
|
+
</div>
|
|
13
|
+
<div class="flex items-center gap-3 py-1 px-2 -mx-2">
|
|
14
|
+
<span class="w-24 text-gray-400 dark:text-gray-600">voice</span>
|
|
15
|
+
<span class="text-gray-900 dark:text-gray-200"><%= config[:voice] || 'default' %></span>
|
|
16
|
+
</div>
|
|
17
|
+
<div class="flex items-center gap-3 py-1 px-2 -mx-2">
|
|
18
|
+
<span class="w-24 text-gray-400 dark:text-gray-600">speed</span>
|
|
19
|
+
<span class="text-gray-900 dark:text-gray-200"><%= config[:speed] || 1.0 %>x</span>
|
|
20
|
+
</div>
|
|
21
|
+
<div class="flex items-center gap-3 py-1 px-2 -mx-2">
|
|
22
|
+
<span class="w-24 text-gray-400 dark:text-gray-600">format</span>
|
|
23
|
+
<span class="text-gray-900 dark:text-gray-200"><%= config[:output_format] || :mp3 %></span>
|
|
24
|
+
</div>
|
|
25
|
+
<div class="flex items-center gap-3 py-1 px-2 -mx-2">
|
|
26
|
+
<span class="w-24 text-gray-400 dark:text-gray-600">streaming</span>
|
|
27
|
+
<span class="<%= config[:streaming] ? 'text-green-500' : 'text-gray-400 dark:text-gray-600' %>"><%= config[:streaming] ? 'enabled' : 'disabled' %></span>
|
|
28
|
+
</div>
|
|
29
|
+
<div class="flex items-center gap-3 py-1 px-2 -mx-2">
|
|
30
|
+
<span class="w-24 text-gray-400 dark:text-gray-600">ssml</span>
|
|
31
|
+
<span class="<%= config[:ssml_enabled] ? 'text-green-500' : 'text-gray-400 dark:text-gray-600' %>"><%= config[:ssml_enabled] ? 'enabled' : 'disabled' %></span>
|
|
32
|
+
</div>
|
|
33
|
+
<div class="flex items-center gap-3 py-1 px-2 -mx-2">
|
|
34
|
+
<span class="w-24 text-gray-400 dark:text-gray-600">cache</span>
|
|
35
|
+
<% if config[:cache_enabled] %>
|
|
36
|
+
<span class="text-green-500">enabled</span>
|
|
37
|
+
<span class="text-gray-400 dark:text-gray-600">(<%= config[:cache_ttl].inspect %>)</span>
|
|
38
|
+
<% else %>
|
|
39
|
+
<span class="text-gray-400 dark:text-gray-600">disabled</span>
|
|
40
|
+
<% end %>
|
|
106
41
|
</div>
|
|
107
42
|
</div>
|
|
108
43
|
</div>
|
|
@@ -1,91 +1,38 @@
|
|
|
1
1
|
<%# Configuration partial for Transcriber types %>
|
|
2
|
-
<div class="
|
|
3
|
-
<
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
<p class="text-xs text-gray-500 dark:text-gray-400 uppercase tracking-wider mb-3">
|
|
9
|
-
Transcription Settings
|
|
10
|
-
</p>
|
|
11
|
-
|
|
12
|
-
<div class="grid grid-cols-2 md:grid-cols-4 gap-4 mb-6">
|
|
13
|
-
<div>
|
|
14
|
-
<p class="text-sm text-gray-500 dark:text-gray-400">Model</p>
|
|
15
|
-
<p class="font-medium text-gray-900 dark:text-gray-100">
|
|
16
|
-
<%= config[:model] %>
|
|
17
|
-
</p>
|
|
2
|
+
<div class="font-mono text-xs">
|
|
3
|
+
<span class="text-[10px] text-gray-400 dark:text-gray-600 uppercase tracking-wider">transcription settings</span>
|
|
4
|
+
<div class="mt-1 space-y-px">
|
|
5
|
+
<div class="flex items-center gap-3 py-1 px-2 -mx-2">
|
|
6
|
+
<span class="w-24 text-gray-400 dark:text-gray-600">model</span>
|
|
7
|
+
<span class="text-gray-900 dark:text-gray-200"><%= config[:model] %></span>
|
|
18
8
|
</div>
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
<
|
|
22
|
-
<p class="font-medium text-gray-900 dark:text-gray-100">
|
|
23
|
-
<% if config[:language] %>
|
|
24
|
-
<%= config[:language].upcase %>
|
|
25
|
-
<% else %>
|
|
26
|
-
<span class="text-gray-400 dark:text-gray-500">Auto-detect</span>
|
|
27
|
-
<% end %>
|
|
28
|
-
</p>
|
|
9
|
+
<div class="flex items-center gap-3 py-1 px-2 -mx-2">
|
|
10
|
+
<span class="w-24 text-gray-400 dark:text-gray-600">language</span>
|
|
11
|
+
<span class="text-gray-900 dark:text-gray-200"><%= config[:language] ? config[:language].upcase : 'auto-detect' %></span>
|
|
29
12
|
</div>
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
<
|
|
33
|
-
<p class="font-medium text-gray-900 dark:text-gray-100">
|
|
34
|
-
<%= config[:output_format] || :text %>
|
|
35
|
-
</p>
|
|
13
|
+
<div class="flex items-center gap-3 py-1 px-2 -mx-2">
|
|
14
|
+
<span class="w-24 text-gray-400 dark:text-gray-600">format</span>
|
|
15
|
+
<span class="text-gray-900 dark:text-gray-200"><%= config[:output_format] || :text %></span>
|
|
36
16
|
</div>
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
<
|
|
40
|
-
<p class="font-medium text-gray-900 dark:text-gray-100">
|
|
41
|
-
<% if config[:include_timestamps] && config[:include_timestamps] != :none %>
|
|
42
|
-
<%= config[:include_timestamps].to_s.titleize %>
|
|
43
|
-
<% else %>
|
|
44
|
-
<span class="text-gray-400 dark:text-gray-500">None</span>
|
|
45
|
-
<% end %>
|
|
46
|
-
</p>
|
|
17
|
+
<div class="flex items-center gap-3 py-1 px-2 -mx-2">
|
|
18
|
+
<span class="w-24 text-gray-400 dark:text-gray-600">timestamps</span>
|
|
19
|
+
<span class="text-gray-900 dark:text-gray-200"><%= (config[:include_timestamps] && config[:include_timestamps] != :none) ? config[:include_timestamps].to_s.titleize : 'none' %></span>
|
|
47
20
|
</div>
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
<% else %>
|
|
57
|
-
<span class="text-gray-400 dark:text-gray-500">Disabled</span>
|
|
58
|
-
<% end %>
|
|
59
|
-
</p>
|
|
60
|
-
</div>
|
|
61
|
-
|
|
62
|
-
<div class="col-span-3">
|
|
63
|
-
<p class="text-sm text-gray-500 dark:text-gray-400">Fallback Models</p>
|
|
64
|
-
<p class="font-medium text-gray-900 dark:text-gray-100">
|
|
65
|
-
<% fallback_models = Array(config[:fallback_models]).compact %>
|
|
66
|
-
<% if fallback_models.any? %>
|
|
67
|
-
<%= fallback_models.join(" → ") %>
|
|
68
|
-
<% else %>
|
|
69
|
-
<span class="text-gray-400 dark:text-gray-500">None configured</span>
|
|
70
|
-
<% end %>
|
|
71
|
-
</p>
|
|
21
|
+
<div class="flex items-center gap-3 py-1 px-2 -mx-2">
|
|
22
|
+
<span class="w-24 text-gray-400 dark:text-gray-600">cache</span>
|
|
23
|
+
<% if config[:cache_enabled] %>
|
|
24
|
+
<span class="text-green-500">enabled</span>
|
|
25
|
+
<span class="text-gray-400 dark:text-gray-600">(<%= config[:cache_ttl].inspect %>)</span>
|
|
26
|
+
<% else %>
|
|
27
|
+
<span class="text-gray-400 dark:text-gray-600">disabled</span>
|
|
28
|
+
<% end %>
|
|
72
29
|
</div>
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
<div class="flex-shrink-0 mt-0.5">
|
|
79
|
-
<svg class="w-5 h-5 text-teal-500" fill="currentColor" viewBox="0 0 20 20">
|
|
80
|
-
<path fill-rule="evenodd" d="M7 4a3 3 0 016 0v4a3 3 0 11-6 0V4zm4 10.93A7.001 7.001 0 0017 8a1 1 0 10-2 0A5 5 0 015 8a1 1 0 00-2 0 7.001 7.001 0 006 6.93V17H6a1 1 0 100 2h8a1 1 0 100-2h-3v-2.07z" clip-rule="evenodd"/>
|
|
81
|
-
</svg>
|
|
30
|
+
<% fallback_models = Array(config[:fallback_models]).compact %>
|
|
31
|
+
<% if fallback_models.any? %>
|
|
32
|
+
<div class="flex items-center gap-3 py-1 px-2 -mx-2">
|
|
33
|
+
<span class="w-24 text-gray-400 dark:text-gray-600">fallbacks</span>
|
|
34
|
+
<span class="text-gray-900 dark:text-gray-200"><%= fallback_models.join(" → ") %></span>
|
|
82
35
|
</div>
|
|
83
|
-
|
|
84
|
-
<p class="text-sm font-medium text-gray-900 dark:text-gray-100">Transcriber</p>
|
|
85
|
-
<p class="text-xs text-gray-600 dark:text-gray-400 mt-1">
|
|
86
|
-
Converts audio to text with support for multiple languages, timestamps, and output formats like SRT and VTT.
|
|
87
|
-
</p>
|
|
88
|
-
</div>
|
|
89
|
-
</div>
|
|
36
|
+
<% end %>
|
|
90
37
|
</div>
|
|
91
38
|
</div>
|
|
@@ -1,19 +1,9 @@
|
|
|
1
|
-
<div class="
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M9 3v2m6-2v2M9 19v2m6-2v2M5 9H3m2 6H3m18-6h-2m2 6h-2M7 19h10a2 2 0 002-2V7a2 2 0 00-2-2H7a2 2 0 00-2 2v10a2 2 0 002 2zM9 9h6v6H9V9z"/>
|
|
5
|
-
</svg>
|
|
6
|
-
|
|
7
|
-
<h3 class="mt-4 text-lg font-medium text-gray-900 dark:text-gray-100">
|
|
8
|
-
No agents yet
|
|
9
|
-
</h3>
|
|
10
|
-
|
|
11
|
-
<p class="mt-2 text-sm text-gray-500 dark:text-gray-400 max-w-md mx-auto">
|
|
12
|
-
Create an agent by inheriting from <code class="bg-blue-100 dark:bg-blue-900/50 text-blue-700 dark:text-blue-300 px-1.5 py-0.5 rounded font-mono text-xs">ApplicationAgent</code>
|
|
1
|
+
<div class="py-8">
|
|
2
|
+
<p class="font-mono text-xs text-gray-400 dark:text-gray-600 mb-4">
|
|
3
|
+
no agents yet — create one by inheriting from <code class="bg-blue-100 dark:bg-blue-500/20 text-blue-700 dark:text-blue-300 px-1.5 py-0.5 rounded font-mono text-xs">ApplicationAgent</code>
|
|
13
4
|
</p>
|
|
14
5
|
|
|
15
|
-
|
|
16
|
-
<div class="mt-6 max-w-sm mx-auto">
|
|
6
|
+
<div class="max-w-sm">
|
|
17
7
|
<pre class="bg-gray-900 dark:bg-gray-950 rounded-lg p-4 text-left text-sm overflow-x-auto"><code class="text-gray-300"><span class="text-pink-400">class</span> <span class="text-yellow-300">MyAgent</span> <span class="text-pink-400"><</span> <span class="text-yellow-300">ApplicationAgent</span>
|
|
18
8
|
<span class="text-purple-400">model</span> <span class="text-green-400">"gpt-4o-mini"</span>
|
|
19
9
|
<span class="text-purple-400">param</span> <span class="text-blue-400">:query</span>, <span class="text-blue-400">required:</span> <span class="text-orange-400">true</span>
|