rails_ai_admin 0.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 +7 -0
- data/CHANGELOG.md +458 -0
- data/LICENSE +21 -0
- data/README.md +292 -0
- data/SECURITY.md +14 -0
- data/THIRD_PARTY_NOTICES.md +19 -0
- data/app/assets/builds/rails_ai_admin.LICENSE.txt +55 -0
- data/app/assets/builds/rails_ai_admin.css +345 -0
- data/app/assets/builds/rails_ai_admin.js +33 -0
- data/app/controllers/rails_ai_admin/application_controller.rb +255 -0
- data/app/controllers/rails_ai_admin/assistant_controller.rb +164 -0
- data/app/controllers/rails_ai_admin/audit_controller.rb +16 -0
- data/app/controllers/rails_ai_admin/collection_jobs_controller.rb +33 -0
- data/app/controllers/rails_ai_admin/collection_operations_controller.rb +79 -0
- data/app/controllers/rails_ai_admin/custom_controller.rb +26 -0
- data/app/controllers/rails_ai_admin/dashboard_controller.rb +17 -0
- data/app/controllers/rails_ai_admin/exports_controller.rb +31 -0
- data/app/controllers/rails_ai_admin/files_controller.rb +37 -0
- data/app/controllers/rails_ai_admin/imports_controller.rb +41 -0
- data/app/controllers/rails_ai_admin/mcp_controller.rb +81 -0
- data/app/controllers/rails_ai_admin/mcp_tokens_controller.rb +45 -0
- data/app/controllers/rails_ai_admin/operations_controller.rb +105 -0
- data/app/controllers/rails_ai_admin/references_controller.rb +16 -0
- data/app/controllers/rails_ai_admin/resources_controller.rb +290 -0
- data/app/controllers/rails_ai_admin/search_controller.rb +39 -0
- data/app/controllers/rails_ai_admin/selections_controller.rb +95 -0
- data/app/controllers/rails_ai_admin/surfaces_controller.rb +122 -0
- data/app/helpers/rails_ai_admin/dashboard_helper.rb +28 -0
- data/app/helpers/rails_ai_admin/fields_helper.rb +242 -0
- data/app/helpers/rails_ai_admin/filters_helper.rb +40 -0
- data/app/helpers/rails_ai_admin/history_helper.rb +36 -0
- data/app/helpers/rails_ai_admin/navigation_helper.rb +54 -0
- data/app/helpers/rails_ai_admin/tool_views_helper.rb +48 -0
- data/app/jobs/rails_ai_admin/assistant_turn_job.rb +15 -0
- data/app/jobs/rails_ai_admin/collections/execution_job.rb +12 -0
- data/app/jobs/rails_ai_admin/outbox/delivery_job.rb +13 -0
- data/app/models/rails_ai_admin/application_record.rb +8 -0
- data/app/models/rails_ai_admin/audit_event.rb +12 -0
- data/app/models/rails_ai_admin/batch_item.rb +8 -0
- data/app/models/rails_ai_admin/operation_run.rb +20 -0
- data/app/models/rails_ai_admin/selection.rb +9 -0
- data/app/models/rails_ai_admin/selection_item.rb +9 -0
- data/app/models/rails_ai_admin/work_item.rb +18 -0
- data/app/views/layouts/rails_ai_admin/application.html.erb +49 -0
- data/app/views/layouts/rails_ai_admin/frame.html.erb +5 -0
- data/app/views/layouts/rails_ai_admin/status.html.erb +13 -0
- data/app/views/rails_ai_admin/assistant/_ask.html.erb +16 -0
- data/app/views/rails_ai_admin/assistant/_transcript.html.erb +45 -0
- data/app/views/rails_ai_admin/assistant/frame.html.erb +1 -0
- data/app/views/rails_ai_admin/assistant/index.html.erb +14 -0
- data/app/views/rails_ai_admin/assistant/show.html.erb +44 -0
- data/app/views/rails_ai_admin/audit/index.html.erb +40 -0
- data/app/views/rails_ai_admin/collection_jobs/index.html.erb +5 -0
- data/app/views/rails_ai_admin/collection_jobs/show.html.erb +24 -0
- data/app/views/rails_ai_admin/collection_operations/confirmation.html.erb +25 -0
- data/app/views/rails_ai_admin/collection_operations/failure.html.erb +10 -0
- data/app/views/rails_ai_admin/collection_operations/new.html.erb +11 -0
- data/app/views/rails_ai_admin/dashboard/index.html.erb +33 -0
- data/app/views/rails_ai_admin/fields/_index.html.erb +1 -0
- data/app/views/rails_ai_admin/fields/_input.html.erb +21 -0
- data/app/views/rails_ai_admin/fields/_reference.html.erb +1 -0
- data/app/views/rails_ai_admin/fields/_reference_picker.html.erb +14 -0
- data/app/views/rails_ai_admin/fields/_row.html.erb +27 -0
- data/app/views/rails_ai_admin/fields/_show.html.erb +1 -0
- data/app/views/rails_ai_admin/imports/new.html.erb +34 -0
- data/app/views/rails_ai_admin/mcp_tokens/index.html.erb +33 -0
- data/app/views/rails_ai_admin/operations/confirmation.html.erb +32 -0
- data/app/views/rails_ai_admin/operations/failure.html.erb +5 -0
- data/app/views/rails_ai_admin/operations/form.html.erb +13 -0
- data/app/views/rails_ai_admin/resources/_associations.html.erb +12 -0
- data/app/views/rails_ai_admin/resources/_errors.html.erb +14 -0
- data/app/views/rails_ai_admin/resources/_recovery.html.erb +5 -0
- data/app/views/rails_ai_admin/resources/confirm_destroy.html.erb +11 -0
- data/app/views/rails_ai_admin/resources/edit.html.erb +1 -0
- data/app/views/rails_ai_admin/resources/form.html.erb +16 -0
- data/app/views/rails_ai_admin/resources/history.html.erb +27 -0
- data/app/views/rails_ai_admin/resources/index.html.erb +88 -0
- data/app/views/rails_ai_admin/resources/new.html.erb +1 -0
- data/app/views/rails_ai_admin/resources/show.html.erb +12 -0
- data/app/views/rails_ai_admin/search/index.html.erb +20 -0
- data/app/views/rails_ai_admin/selections/confirm_destroy.html.erb +13 -0
- data/app/views/rails_ai_admin/selections/destroyed.html.erb +15 -0
- data/app/views/rails_ai_admin/selections/show.html.erb +19 -0
- data/app/views/rails_ai_admin/shared/_input_fields.html.erb +23 -0
- data/app/views/rails_ai_admin/shared/_navigation.html.erb +8 -0
- data/app/views/rails_ai_admin/shared/_session.html.erb +5 -0
- data/app/views/rails_ai_admin/statuses/show.html.erb +4 -0
- data/app/views/rails_ai_admin/surfaces/_operation_review.html.erb +43 -0
- data/app/views/rails_ai_admin/surfaces/show.html.erb +4 -0
- data/config/locales/en.yml +549 -0
- data/config/routes.rb +64 -0
- data/db/assistant_migrate/20261103000001_create_rails_ai_admin_assistant.rb +138 -0
- data/db/assistant_migrate/20261112000001_upgrade_rails_ai_admin_assistant_to_ruby_llm_2_2.rb +102 -0
- data/db/assistant_migrate/20261114000001_add_streaming_and_access_tokens_to_rails_ai_admin_assistant.rb +29 -0
- data/db/migrate/20261029000001_create_rails_ai_admin_execution_tables.rb +35 -0
- data/db/migrate/20261029000002_add_callback_warning_to_rails_ai_admin_runs.rb +7 -0
- data/db/migrate/20261030000003_create_rails_ai_admin_work_items.rb +26 -0
- data/db/migrate/20261030000004_create_rails_ai_admin_selections.rb +28 -0
- data/db/migrate/20261030000005_create_rails_ai_admin_collection_runs.rb +41 -0
- data/db/migrate/20261113000001_add_record_index_to_rails_ai_admin_audit_events.rb +8 -0
- data/lib/generators/rails_ai_admin/assistant/assistant_generator.rb +25 -0
- data/lib/generators/rails_ai_admin/assistant/templates/admin_assistant.rb +18 -0
- data/lib/generators/rails_ai_admin/engine_migrations.rb +42 -0
- data/lib/generators/rails_ai_admin/install/engine_mounts.rb +19 -0
- data/lib/generators/rails_ai_admin/install/install_generator.rb +53 -0
- data/lib/generators/rails_ai_admin/install/templates/access_test.rb +17 -0
- data/lib/generators/rails_ai_admin/install/templates/admin_context.rb +25 -0
- data/lib/generators/rails_ai_admin/install/templates/admin_policy_adapter.rb +28 -0
- data/lib/generators/rails_ai_admin/install/templates/example_admin.rb +10 -0
- data/lib/generators/rails_ai_admin/install/templates/initializer.rb +7 -0
- data/lib/generators/rails_ai_admin/override/override_generator.rb +46 -0
- data/lib/generators/rails_ai_admin/resource/resource_generator.rb +88 -0
- data/lib/rails_ai_admin/assistant/continuation.rb +33 -0
- data/lib/rails_ai_admin/assistant/coordinator.rb +306 -0
- data/lib/rails_ai_admin/assistant/records.rb +71 -0
- data/lib/rails_ai_admin/assistant/runtime.rb +49 -0
- data/lib/rails_ai_admin/assistant/tools.rb +477 -0
- data/lib/rails_ai_admin/assistant/transcript.rb +140 -0
- data/lib/rails_ai_admin/assistant.rb +50 -0
- data/lib/rails_ai_admin/authorization/access.rb +296 -0
- data/lib/rails_ai_admin/authorization/adapter.rb +92 -0
- data/lib/rails_ai_admin/authorization/pundit_adapter.rb +195 -0
- data/lib/rails_ai_admin/collections/claim.rb +91 -0
- data/lib/rails_ai_admin/collections/contract.rb +113 -0
- data/lib/rails_ai_admin/collections/dispatcher.rb +126 -0
- data/lib/rails_ai_admin/collections/queries.rb +79 -0
- data/lib/rails_ai_admin/collections/result.rb +15 -0
- data/lib/rails_ai_admin/collections/runner.rb +208 -0
- data/lib/rails_ai_admin/configuration.rb +178 -0
- data/lib/rails_ai_admin/context.rb +29 -0
- data/lib/rails_ai_admin/doctor.rb +301 -0
- data/lib/rails_ai_admin/engine.rb +24 -0
- data/lib/rails_ai_admin/error.rb +16 -0
- data/lib/rails_ai_admin/field.rb +625 -0
- data/lib/rails_ai_admin/fields/association.rb +188 -0
- data/lib/rails_ai_admin/fields/computation.rb +43 -0
- data/lib/rails_ai_admin/fields/dependency_graph.rb +45 -0
- data/lib/rails_ai_admin/fields/file_value.rb +23 -0
- data/lib/rails_ai_admin/fields/hook_signatures.rb +18 -0
- data/lib/rails_ai_admin/fields/projection.rb +78 -0
- data/lib/rails_ai_admin/fields/registry.rb +48 -0
- data/lib/rails_ai_admin/fields/scalar_schema.rb +49 -0
- data/lib/rails_ai_admin/fields/type.rb +50 -0
- data/lib/rails_ai_admin/forms/plan.rb +90 -0
- data/lib/rails_ai_admin/input_schema.rb +76 -0
- data/lib/rails_ai_admin/integrations/propose_operation.rb +150 -0
- data/lib/rails_ai_admin/integrations/tool_views.rb +367 -0
- data/lib/rails_ai_admin/mcp.rb +130 -0
- data/lib/rails_ai_admin/navigation/list_state.rb +194 -0
- data/lib/rails_ai_admin/navigation/menu.rb +31 -0
- data/lib/rails_ai_admin/navigation/settings.rb +28 -0
- data/lib/rails_ai_admin/operation.rb +120 -0
- data/lib/rails_ai_admin/operations/default_handlers.rb +17 -0
- data/lib/rails_ai_admin/operations/execution_context.rb +38 -0
- data/lib/rails_ai_admin/operations/form_intent.rb +69 -0
- data/lib/rails_ai_admin/operations/registry.rb +80 -0
- data/lib/rails_ai_admin/operations/result.rb +21 -0
- data/lib/rails_ai_admin/operations/runner.rb +633 -0
- data/lib/rails_ai_admin/operations/runner_fingerprint.rb +12 -0
- data/lib/rails_ai_admin/outbox/delivery_context.rb +51 -0
- data/lib/rails_ai_admin/outbox/dispatcher.rb +189 -0
- data/lib/rails_ai_admin/outbox/registry.rb +36 -0
- data/lib/rails_ai_admin/outbox/request_digest.rb +42 -0
- data/lib/rails_ai_admin/outbox/writer.rb +43 -0
- data/lib/rails_ai_admin/presentation/association_panel.rb +90 -0
- data/lib/rails_ai_admin/presentation/audit_log.rb +63 -0
- data/lib/rails_ai_admin/presentation/csv_export.rb +85 -0
- data/lib/rails_ai_admin/presentation/csv_import.rb +142 -0
- data/lib/rails_ai_admin/presentation/dashboard.rb +122 -0
- data/lib/rails_ai_admin/presentation/history.rb +46 -0
- data/lib/rails_ai_admin/presentation/index_settings.rb +77 -0
- data/lib/rails_ai_admin/presentation/outcomes.rb +44 -0
- data/lib/rails_ai_admin/presentation/status.rb +40 -0
- data/lib/rails_ai_admin/prune.rb +61 -0
- data/lib/rails_ai_admin/queries/list.rb +162 -0
- data/lib/rails_ai_admin/queries/named_scope.rb +65 -0
- data/lib/rails_ai_admin/record_version.rb +40 -0
- data/lib/rails_ai_admin/registry.rb +45 -0
- data/lib/rails_ai_admin/request_log_filter.rb +24 -0
- data/lib/rails_ai_admin/resource.rb +249 -0
- data/lib/rails_ai_admin/resource_identity.rb +15 -0
- data/lib/rails_ai_admin/schema_suggestions.rb +105 -0
- data/lib/rails_ai_admin/selections/builder.rb +162 -0
- data/lib/rails_ai_admin/templates/catalog.rb +84 -0
- data/lib/rails_ai_admin/templates/inspector.rb +94 -0
- data/lib/rails_ai_admin/templates/metadata.rb +48 -0
- data/lib/rails_ai_admin/templates/safe_paths.rb +30 -0
- data/lib/rails_ai_admin/test_kit.rb +103 -0
- data/lib/rails_ai_admin/version.rb +5 -0
- data/lib/rails_ai_admin/work.rb +48 -0
- data/lib/rails_ai_admin.rb +112 -0
- data/lib/tasks/rails_ai_admin.rake +58 -0
- metadata +328 -0
|
@@ -0,0 +1,549 @@
|
|
|
1
|
+
# English source strings for every framework page, helper and controller message.
|
|
2
|
+
# Add a locale by copying this file; missing keys fall back as Rails I18n configures.
|
|
3
|
+
en:
|
|
4
|
+
rails_ai_admin:
|
|
5
|
+
outcomes:
|
|
6
|
+
ok: Done.
|
|
7
|
+
validation_failed: Some values need attention.
|
|
8
|
+
conflict: The record changed after this page was opened.
|
|
9
|
+
restricted: The record is still in use and cannot be deleted.
|
|
10
|
+
not_found: The record is not available.
|
|
11
|
+
unauthenticated: Sign in to continue.
|
|
12
|
+
invalid_query: The list settings are not available.
|
|
13
|
+
approval_required: This change needs your explicit confirmation.
|
|
14
|
+
approval_expired: This form expired before it was submitted.
|
|
15
|
+
approval_invalidated: Your access or the operation changed after this form was opened.
|
|
16
|
+
idempotency_conflict: This form was already submitted with different values.
|
|
17
|
+
authorization_revoked: Your access changed before the work ran.
|
|
18
|
+
selection_invalidated: The selection no longer matches the records.
|
|
19
|
+
selection_expired: The selection expired.
|
|
20
|
+
timeout: The operation took too long and was stopped.
|
|
21
|
+
operation_failed: The operation failed.
|
|
22
|
+
post_commit_callback_failed: The change was saved, but a follow-up step failed.
|
|
23
|
+
outcome_unknown: The result could not be confirmed.
|
|
24
|
+
attempts_exhausted: The work failed after several attempts.
|
|
25
|
+
cancelled: The work was cancelled.
|
|
26
|
+
execution_expired: The work expired before it could run.
|
|
27
|
+
work_expired: The work expired before it could run.
|
|
28
|
+
handler_changed: The operation changed after the work was queued.
|
|
29
|
+
unavailable: This is not available right now.
|
|
30
|
+
fields:
|
|
31
|
+
errors:
|
|
32
|
+
blank: cannot be blank
|
|
33
|
+
control_characters: contains control characters
|
|
34
|
+
decimal_places:
|
|
35
|
+
one: must have at most %{count} decimal place
|
|
36
|
+
other: must have at most %{count} decimal places
|
|
37
|
+
invalid_datetime: is not a valid date and time
|
|
38
|
+
unavailable_choice: is not an available choice
|
|
39
|
+
not_text: must be text
|
|
40
|
+
too_long: is too long
|
|
41
|
+
invalid: is invalid
|
|
42
|
+
not_allowed: is not an allowed value
|
|
43
|
+
not_integer: must be an integer
|
|
44
|
+
out_of_range: is out of range
|
|
45
|
+
not_decimal: must be a decimal
|
|
46
|
+
not_finite: must be finite
|
|
47
|
+
not_boolean: must be a boolean
|
|
48
|
+
not_date: must be an ISO date
|
|
49
|
+
not_timestamp: must be an ISO timestamp
|
|
50
|
+
operation_rejected: operation was rejected
|
|
51
|
+
not_object: must be an object
|
|
52
|
+
undeclared_fields: contains undeclared fields
|
|
53
|
+
required: is required
|
|
54
|
+
not_email: must be an email address
|
|
55
|
+
not_url: must be an http or https address
|
|
56
|
+
not_time: must be a time of day (HH:MM)
|
|
57
|
+
not_json: must be valid JSON
|
|
58
|
+
file_unavailable: is not an available upload
|
|
59
|
+
file_too_large: is larger than %{size}
|
|
60
|
+
file_type: is not an accepted file type
|
|
61
|
+
not_list: must be a list of records
|
|
62
|
+
too_many: can name at most %{count} records
|
|
63
|
+
too_many_files: can hold at most %{count} files
|
|
64
|
+
'yes': 'Yes'
|
|
65
|
+
'no': 'No'
|
|
66
|
+
not_set: Not set
|
|
67
|
+
choose_value: Choose a value
|
|
68
|
+
none: None
|
|
69
|
+
choose_record: Choose a record
|
|
70
|
+
unavailable_value: Unavailable value — select a current option
|
|
71
|
+
keep_password: Leave blank to keep the current password.
|
|
72
|
+
files:
|
|
73
|
+
zero: No files
|
|
74
|
+
one: 1 file
|
|
75
|
+
other: "%{count} files"
|
|
76
|
+
resources:
|
|
77
|
+
index:
|
|
78
|
+
omitted_rows: Some records on this page are not available to you.
|
|
79
|
+
no_list_tab: Showing every record you can access, without a list tab.
|
|
80
|
+
filters: Filters
|
|
81
|
+
active_filters:
|
|
82
|
+
one: "%{count} active"
|
|
83
|
+
other: "%{count} active"
|
|
84
|
+
selection_help: Tick records below, then capture their current versions (up to 100). This does
|
|
85
|
+
not change anything.
|
|
86
|
+
search_label: Search %{label}
|
|
87
|
+
search: Search
|
|
88
|
+
scopes: "%{label} scopes"
|
|
89
|
+
apply_filters: Apply filters
|
|
90
|
+
clear_filters: Clear filters
|
|
91
|
+
reset: Reset list
|
|
92
|
+
count:
|
|
93
|
+
one: "%{number} matching record"
|
|
94
|
+
other: "%{number} matching records"
|
|
95
|
+
count_capped: More than %{number} matching records
|
|
96
|
+
capture_selection: Capture selection
|
|
97
|
+
records_region: Resource records
|
|
98
|
+
caption: "%{label}, page %{page}"
|
|
99
|
+
select: Select
|
|
100
|
+
select_all: Select all records on this page
|
|
101
|
+
actions: Actions
|
|
102
|
+
select_row: Select %{label}
|
|
103
|
+
view_row: View %{label}
|
|
104
|
+
empty: No records match this query.
|
|
105
|
+
pagination: Pagination
|
|
106
|
+
previous: Previous
|
|
107
|
+
next: Next
|
|
108
|
+
page_limit: Narrow your search to view more records within the page limit.
|
|
109
|
+
settings_restored: Some list settings are no longer available. The current list settings have
|
|
110
|
+
been restored.
|
|
111
|
+
page_empty: That list page is now empty. Showing an available page.
|
|
112
|
+
form:
|
|
113
|
+
required_note_html: Fields marked %{marker} are required.
|
|
114
|
+
asterisk: with an asterisk
|
|
115
|
+
sections: Form sections
|
|
116
|
+
inputs_unavailable: Some inputs are no longer available
|
|
117
|
+
edit: Edit
|
|
118
|
+
delete: Delete
|
|
119
|
+
new: New %{label}
|
|
120
|
+
edit_title: Edit %{label}
|
|
121
|
+
destroy:
|
|
122
|
+
title: Delete %{label}
|
|
123
|
+
question_html: Delete %{label}? This runs the model's destroy callbacks and cannot be undone here.
|
|
124
|
+
confirm: Confirm deletion
|
|
125
|
+
saved: Changes saved.
|
|
126
|
+
saved_with_warning: Changes saved, but a host callback failed. Review operation %{operation} before
|
|
127
|
+
continuing.
|
|
128
|
+
imports:
|
|
129
|
+
button: Import CSV
|
|
130
|
+
title: Import %{label}
|
|
131
|
+
intro: Each row becomes a new record through the ordinary create form rules. Check the file first; nothing is saved until you import.
|
|
132
|
+
columns: "Columns: %{fields}."
|
|
133
|
+
template: Download a template
|
|
134
|
+
file: CSV file
|
|
135
|
+
file_help: UTF-8 CSV with a header row, at most %{limit} rows and 2 MB.
|
|
136
|
+
check: Check file
|
|
137
|
+
import: Import
|
|
138
|
+
choose_file: Choose a CSV file.
|
|
139
|
+
too_large: The file is larger than 2 MB.
|
|
140
|
+
too_many: The file has more than %{limit} rows. Split it into smaller files.
|
|
141
|
+
empty: The file needs a header row and at least one data row.
|
|
142
|
+
no_columns: No column matches a field you can fill. Use the template's header row.
|
|
143
|
+
not_utf8: The file is not UTF-8 text.
|
|
144
|
+
unclosed_quote: A quoted cell is never closed.
|
|
145
|
+
check_title: Check results
|
|
146
|
+
result_title: Import results
|
|
147
|
+
ready:
|
|
148
|
+
one: "%{count} of %{total} rows can be imported."
|
|
149
|
+
other: "%{count} of %{total} rows can be imported."
|
|
150
|
+
created:
|
|
151
|
+
one: "Created %{count} of %{total} records."
|
|
152
|
+
other: "Created %{count} of %{total} records."
|
|
153
|
+
matched: "Matched columns: %{fields}."
|
|
154
|
+
ignored: "Ignored columns: %{columns}."
|
|
155
|
+
row: Row
|
|
156
|
+
exports:
|
|
157
|
+
button: Export CSV
|
|
158
|
+
too_many: This list has more than %{limit} records. Narrow it with search or filters, then export again.
|
|
159
|
+
files:
|
|
160
|
+
current: "Current file: %{file}"
|
|
161
|
+
limit: "Up to %{size}."
|
|
162
|
+
remove: Remove the current file
|
|
163
|
+
remove_named: Remove %{file}
|
|
164
|
+
list_limit: "Choose one or more files, up to %{size} each; at most %{count} in all."
|
|
165
|
+
audit:
|
|
166
|
+
title: Audit log
|
|
167
|
+
intro: Changes and exports made through the admin, newest first, for the resources you may audit.
|
|
168
|
+
resource: Resource
|
|
169
|
+
change: Change
|
|
170
|
+
outcome: Outcome
|
|
171
|
+
any: Any
|
|
172
|
+
saved: Saved
|
|
173
|
+
record: Record
|
|
174
|
+
empty: No events match.
|
|
175
|
+
only_actor: "Showing only changes by %{actor}."
|
|
176
|
+
mcp:
|
|
177
|
+
nav: MCP access
|
|
178
|
+
title: MCP access
|
|
179
|
+
intro: Connect an AI agent such as Claude Code or Cursor to this admin with a personal access token. The agent reads only what you may read on resources open to the assistant, and every change it proposes waits for you to confirm it here.
|
|
180
|
+
endpoint: "Server URL:"
|
|
181
|
+
name: Name
|
|
182
|
+
name_placeholder: For example, “Claude Code on my laptop”
|
|
183
|
+
lifetime: Expires after
|
|
184
|
+
days:
|
|
185
|
+
one: 1 day
|
|
186
|
+
other: "%{count} days"
|
|
187
|
+
create: Create token
|
|
188
|
+
created: Token “%{name}” created
|
|
189
|
+
copy_now: Copy it now. It is shown only once and cannot be recovered.
|
|
190
|
+
example: "For example, with Claude Code:"
|
|
191
|
+
caption: Your tokens
|
|
192
|
+
expires: Expires
|
|
193
|
+
last_used: Last used
|
|
194
|
+
status: Status
|
|
195
|
+
active: Active
|
|
196
|
+
revoke: Revoke
|
|
197
|
+
revoked: Token revoked.
|
|
198
|
+
revoked_mark: Revoked
|
|
199
|
+
expired: Expired
|
|
200
|
+
invalid: Give the token a name, choose an expiry, and keep at most 10 active tokens.
|
|
201
|
+
history:
|
|
202
|
+
link: History
|
|
203
|
+
title: History of %{record}
|
|
204
|
+
back: Back to %{record}
|
|
205
|
+
caption: Changes made through the admin, newest first.
|
|
206
|
+
empty: No changes have been recorded for this record yet.
|
|
207
|
+
when: When
|
|
208
|
+
change: Change
|
|
209
|
+
fields: Fields
|
|
210
|
+
by: By
|
|
211
|
+
you: (you)
|
|
212
|
+
older: Show older changes
|
|
213
|
+
not_saved: Not saved
|
|
214
|
+
other_fields:
|
|
215
|
+
one: 1 other field
|
|
216
|
+
other: "%{count} other fields"
|
|
217
|
+
operations:
|
|
218
|
+
create: Created
|
|
219
|
+
update: Updated
|
|
220
|
+
destroy: Deleted
|
|
221
|
+
export: Exported CSV
|
|
222
|
+
origins:
|
|
223
|
+
surface: From a review in Chat
|
|
224
|
+
assistant: Proposed in Chat
|
|
225
|
+
selections:
|
|
226
|
+
empty: Select at least one record.
|
|
227
|
+
title: Selected records
|
|
228
|
+
targets_note:
|
|
229
|
+
one: "%{count} fixed target. This selection does not approve or execute an operation."
|
|
230
|
+
other: "%{count} fixed targets. This selection does not approve or execute an operation."
|
|
231
|
+
expires_html: Expires %{time}.
|
|
232
|
+
caption: "%{label} — fixed selection"
|
|
233
|
+
id: ID
|
|
234
|
+
fixed_note: >-
|
|
235
|
+
Changes to a selected record require a fresh selection. Unselected and newly matching records
|
|
236
|
+
are never added automatically.
|
|
237
|
+
destroy:
|
|
238
|
+
link:
|
|
239
|
+
one: Delete the selected record
|
|
240
|
+
other: Delete the %{count} selected records
|
|
241
|
+
title: Delete selected records
|
|
242
|
+
question:
|
|
243
|
+
one: Delete this record? This cannot be undone.
|
|
244
|
+
other: Delete these %{count} records? This cannot be undone.
|
|
245
|
+
skipped:
|
|
246
|
+
one: 1 selected record cannot be deleted by you and will be kept.
|
|
247
|
+
other: "%{count} selected records cannot be deleted by you and will be kept."
|
|
248
|
+
each_note: Each record is deleted on its own and recorded in the audit; a record that cannot be deleted does not stop the others.
|
|
249
|
+
submit:
|
|
250
|
+
one: Delete 1 record
|
|
251
|
+
other: Delete %{count} records
|
|
252
|
+
deleting: Deleting…
|
|
253
|
+
done:
|
|
254
|
+
one: Deleted 1 record.
|
|
255
|
+
other: Deleted %{count} records.
|
|
256
|
+
result_title: Delete results
|
|
257
|
+
deleted:
|
|
258
|
+
one: Deleted 1 record.
|
|
259
|
+
other: Deleted %{count} records.
|
|
260
|
+
not_deleted: These records were not deleted
|
|
261
|
+
reason: Reason
|
|
262
|
+
collection_jobs:
|
|
263
|
+
waiting: Waiting for a worker. The oldest item has been queued for %{age}.
|
|
264
|
+
waiting_hint_html: >-
|
|
265
|
+
If this does not change, ask the host maintainer to check that a job worker processes the %{queue}
|
|
266
|
+
queue or that the collection scan is scheduled.
|
|
267
|
+
intro: Your latest accessible runs in the current tenant.
|
|
268
|
+
empty: No accessible collection runs.
|
|
269
|
+
status_html: 'Status: %{status}'
|
|
270
|
+
refresh: Refresh status
|
|
271
|
+
warning: The committed run has a host callback warning. Ask the host maintainer to review it.
|
|
272
|
+
cancel: Cancel remaining items
|
|
273
|
+
committed_note: >-
|
|
274
|
+
Each succeeded item is committed. Follow-up delivery is tracked separately and can remain pending
|
|
275
|
+
after business success.
|
|
276
|
+
items: Current visible item results
|
|
277
|
+
record: Record
|
|
278
|
+
business_status: Business status
|
|
279
|
+
reason: Reason
|
|
280
|
+
follow_up: Follow-up work
|
|
281
|
+
callback_warning: "(callback warning)"
|
|
282
|
+
hidden: Some items are not currently visible under your permissions.
|
|
283
|
+
busy: The run is busy. Reload and try again.
|
|
284
|
+
cancel_unknown: >-
|
|
285
|
+
Cancellation outcome is unknown. Refresh this existing run after recovery before taking further
|
|
286
|
+
action.
|
|
287
|
+
cancelled: Cancellation processed. Already committed records and their follow-up work are retained.
|
|
288
|
+
surfaces:
|
|
289
|
+
native:
|
|
290
|
+
create: Create %{label}
|
|
291
|
+
update: Update %{label}
|
|
292
|
+
destroy: Delete %{label}
|
|
293
|
+
destroy_note: Confirming deletes this record. This cannot be undone.
|
|
294
|
+
hidden_value: (set; not shown to you)
|
|
295
|
+
proposed_changes: Proposed visible changes
|
|
296
|
+
dismiss: Dismiss
|
|
297
|
+
dismissed: Dismissed. Nothing was changed.
|
|
298
|
+
title: Interactive review
|
|
299
|
+
saved_note: This review is saved. You can reload or return to it until it is confirmed or expires.
|
|
300
|
+
completed_html: Completed. Recorded as operation %{run}.
|
|
301
|
+
assistant_note: >-
|
|
302
|
+
An assistant proposed this. Nothing has been saved yet; only your confirmation applies this exact
|
|
303
|
+
target and input, once.
|
|
304
|
+
native_note: >-
|
|
305
|
+
Nothing has been saved yet. Confirming applies this exact target and input once, whether you confirm
|
|
306
|
+
here or on the original page.
|
|
307
|
+
expired: This review can no longer be confirmed. Start a new review from the record.
|
|
308
|
+
unavailable: This review is unavailable.
|
|
309
|
+
no_longer_available: This review is no longer available.
|
|
310
|
+
references:
|
|
311
|
+
more:
|
|
312
|
+
one: and 1 more
|
|
313
|
+
other: and %{count} more
|
|
314
|
+
key_placeholder: "%{target} ID"
|
|
315
|
+
current: 'Currently: %{label}'
|
|
316
|
+
find: Search %{target}
|
|
317
|
+
searching: Searching…
|
|
318
|
+
none: No matching records.
|
|
319
|
+
failed: Search is not available. Type the ID instead.
|
|
320
|
+
results:
|
|
321
|
+
one: "%{count} match. Choose one below."
|
|
322
|
+
other: "%{count} matches. Choose one below."
|
|
323
|
+
chosen: 'Chosen: %{label}'
|
|
324
|
+
not_available: "%{label} (not available)"
|
|
325
|
+
actions:
|
|
326
|
+
cancel: Cancel
|
|
327
|
+
save: Save
|
|
328
|
+
saving: Saving…
|
|
329
|
+
layout:
|
|
330
|
+
skip: Skip to content
|
|
331
|
+
overview: Overview
|
|
332
|
+
assistant: Assistant
|
|
333
|
+
collection_jobs: Collection jobs
|
|
334
|
+
audit_log: Audit log
|
|
335
|
+
resources_nav: Admin resources
|
|
336
|
+
return_state_discarded: Some list settings are no longer available. Return links use the current
|
|
337
|
+
permitted list.
|
|
338
|
+
administration: Administration
|
|
339
|
+
settings_unavailable: Some list settings are no longer available.
|
|
340
|
+
dashboard:
|
|
341
|
+
count:
|
|
342
|
+
one: 1 record
|
|
343
|
+
other: "%{number} records"
|
|
344
|
+
count_capped:
|
|
345
|
+
one: More than %{number} records
|
|
346
|
+
other: More than %{number} records
|
|
347
|
+
title: Overview
|
|
348
|
+
more_than: More than %{number}
|
|
349
|
+
trend_total:
|
|
350
|
+
one: "%{number} in the last %{days} days."
|
|
351
|
+
other: "%{number} in the last %{days} days."
|
|
352
|
+
trend_capped: Only the most recent 50,000 were counted.
|
|
353
|
+
show_data: Show the numbers
|
|
354
|
+
day: Day
|
|
355
|
+
records: Records
|
|
356
|
+
intro: Select a resource to manage. Available resources follow your current permissions.
|
|
357
|
+
empty: No resources are available for this session.
|
|
358
|
+
associations:
|
|
359
|
+
empty: No records.
|
|
360
|
+
view_all: View all in %{label}
|
|
361
|
+
first: Showing the first %{count}.
|
|
362
|
+
add: Add %{label}
|
|
363
|
+
errors:
|
|
364
|
+
title: Changes were not saved
|
|
365
|
+
needs_reload: This form cannot be submitted again. Open a fresh form to review the latest record
|
|
366
|
+
and permissions.
|
|
367
|
+
recovery:
|
|
368
|
+
notice: Your session needs attention. This tab is keeping your unsaved input in memory.
|
|
369
|
+
sign_in: Sign in in another tab
|
|
370
|
+
sign_in_elsewhere: Sign in through the host application in another tab, then return here.
|
|
371
|
+
resume: Resume after signing in
|
|
372
|
+
statuses:
|
|
373
|
+
sign_in: Sign in
|
|
374
|
+
authentication_required:
|
|
375
|
+
title: Authentication required
|
|
376
|
+
message: Sign in through the host application to continue.
|
|
377
|
+
forbidden:
|
|
378
|
+
title: Access unavailable
|
|
379
|
+
message: Your current permissions do not allow this page.
|
|
380
|
+
not_found:
|
|
381
|
+
title: Not found
|
|
382
|
+
message: This page or record is not available under your current access.
|
|
383
|
+
conflict:
|
|
384
|
+
title: The request has changed
|
|
385
|
+
message: Review the current records and permissions before preparing a fresh request.
|
|
386
|
+
invalid_query:
|
|
387
|
+
title: Invalid query
|
|
388
|
+
message: Open a fresh list and use the available search, sort and page settings.
|
|
389
|
+
invalid_request:
|
|
390
|
+
title: Invalid request
|
|
391
|
+
message: Your session or request could not be verified. Sign in and review a fresh form before
|
|
392
|
+
submitting.
|
|
393
|
+
unavailable:
|
|
394
|
+
title: Administration unavailable
|
|
395
|
+
message: Administration is not configured safely. Contact the host maintainer.
|
|
396
|
+
error:
|
|
397
|
+
title: The request needs review
|
|
398
|
+
message: >-
|
|
399
|
+
Check current records or existing operation results before retrying. A prior write may have
|
|
400
|
+
completed.
|
|
401
|
+
search:
|
|
402
|
+
title: Search
|
|
403
|
+
label: Search all records
|
|
404
|
+
placeholder: Search everything
|
|
405
|
+
none: Nothing matches “%{query}” in the records you can search.
|
|
406
|
+
view_all: View all matches in %{label}
|
|
407
|
+
open_list: Open in %{label}
|
|
408
|
+
prefix: Starts with…
|
|
409
|
+
contains: Contains…
|
|
410
|
+
exact: Exact match…
|
|
411
|
+
any: Search…
|
|
412
|
+
filters:
|
|
413
|
+
from: "%{label} from"
|
|
414
|
+
to: "%{label} to"
|
|
415
|
+
equals: "%{label} equals"
|
|
416
|
+
any: Any
|
|
417
|
+
states:
|
|
418
|
+
count: "%{state}: %{count}"
|
|
419
|
+
queued: Queued
|
|
420
|
+
running: Running
|
|
421
|
+
pending: Pending
|
|
422
|
+
succeeded: Succeeded
|
|
423
|
+
failed: Failed
|
|
424
|
+
cancelled: Cancelled
|
|
425
|
+
proposed: Proposed
|
|
426
|
+
admitted: Admitted
|
|
427
|
+
unknown: Unknown
|
|
428
|
+
reconciliation_required: Reconciliation required
|
|
429
|
+
operations:
|
|
430
|
+
confirm_title: Confirm %{description}
|
|
431
|
+
review_note: Review this exact target and input. Nothing has been saved yet. Changed input requires
|
|
432
|
+
a new review.
|
|
433
|
+
target: 'Target: %{label}'
|
|
434
|
+
target_html: 'Target: %{label}'
|
|
435
|
+
confirm: Confirm and execute
|
|
436
|
+
executing: Executing…
|
|
437
|
+
edit_input: Edit input
|
|
438
|
+
surface_offer: Prefer to finish later? Save this exact review as an interactive view you can reload
|
|
439
|
+
and confirm.
|
|
440
|
+
surface_continue: Continue in an interactive review
|
|
441
|
+
failure_title: Operation needs a new review
|
|
442
|
+
failure_note: Nothing was changed. Check the current record and your permissions, then start a new
|
|
443
|
+
review.
|
|
444
|
+
review_record: Review current record
|
|
445
|
+
review: Review operation
|
|
446
|
+
preparing: Preparing review…
|
|
447
|
+
completed: Operation completed.
|
|
448
|
+
completed_with_work: Operation completed. Follow-up work is pending or separately tracked.
|
|
449
|
+
collection_operations:
|
|
450
|
+
review_title: Review collection changes
|
|
451
|
+
targets_note:
|
|
452
|
+
one: "%{count} fixed target. Each target commits independently. Cancellation preserves committed
|
|
453
|
+
changes."
|
|
454
|
+
other: "%{count} fixed targets. Each target commits independently. Cancellation preserves committed
|
|
455
|
+
changes."
|
|
456
|
+
confirmed_input: Confirmed input
|
|
457
|
+
previews: Target previews
|
|
458
|
+
target_id: 'ID: %{id}'
|
|
459
|
+
no_differences: No readable field differences were supplied. Domain checks still run during execution.
|
|
460
|
+
confirm: Confirm and queue
|
|
461
|
+
edit_input: Edit inputs
|
|
462
|
+
failure_title: Collection operation needs review
|
|
463
|
+
uncertain: The admission outcome is unknown. Check the existing run and retry the same intent after
|
|
464
|
+
recovery.
|
|
465
|
+
check_run: Check existing run
|
|
466
|
+
failure_note: Nothing was queued. Check the current selection and your permissions, then start a
|
|
467
|
+
new review.
|
|
468
|
+
return: Return to resource
|
|
469
|
+
form_note:
|
|
470
|
+
one: "%{count} fixed target. Review before queueing changes."
|
|
471
|
+
other: "%{count} fixed targets. Review before queueing changes."
|
|
472
|
+
review: Review changes
|
|
473
|
+
admitted: Run admitted. Each record is executed separately; queued work is not a completed change.
|
|
474
|
+
assistant:
|
|
475
|
+
ask: Ask
|
|
476
|
+
ask_record: Ask the assistant about this record
|
|
477
|
+
ask_list: Ask the assistant about this list
|
|
478
|
+
ask_record_placeholder: For example, “Who changed this last?” or “Set the status to closed.”
|
|
479
|
+
ask_list_placeholder: For example, “How many of these were created this week?”
|
|
480
|
+
intro: >-
|
|
481
|
+
Ask about the records you can already see. The assistant reads through your current permissions
|
|
482
|
+
and cannot change data; any change it suggests opens a review that you confirm yourself.
|
|
483
|
+
new: New conversation
|
|
484
|
+
none: No conversations yet.
|
|
485
|
+
from: Conversation from %{time}
|
|
486
|
+
archived_mark: archived
|
|
487
|
+
closed_mark: closed
|
|
488
|
+
all: All conversations
|
|
489
|
+
conversation: Conversation
|
|
490
|
+
title: Assistant conversation
|
|
491
|
+
archived_note: This conversation is archived.
|
|
492
|
+
closed_note: This conversation is closed because your access changed. Start a new conversation.
|
|
493
|
+
message: Message
|
|
494
|
+
send: Send
|
|
495
|
+
sending: Sending…
|
|
496
|
+
compose_placeholder: Message the assistant…
|
|
497
|
+
shortcut: Enter to send · Shift+Enter for a new line
|
|
498
|
+
transcript: Conversation messages
|
|
499
|
+
latest: Jump to latest
|
|
500
|
+
archive: Archive conversation
|
|
501
|
+
archived: Conversation archived.
|
|
502
|
+
empty_title: How can I help?
|
|
503
|
+
empty: Ask about your records, or propose a change to review.
|
|
504
|
+
roles:
|
|
505
|
+
user: You
|
|
506
|
+
review: Review
|
|
507
|
+
assistant: Assistant
|
|
508
|
+
records: Records
|
|
509
|
+
working: The assistant is working…
|
|
510
|
+
waiting: Waiting for the assistant…
|
|
511
|
+
refresh: Refresh
|
|
512
|
+
stop: Stop
|
|
513
|
+
try_again: Try again
|
|
514
|
+
retrying: Retrying (%{attempt} of %{attempts})…
|
|
515
|
+
invalid_message: Write a message of up to %{count} characters.
|
|
516
|
+
rate_limited:
|
|
517
|
+
one: >-
|
|
518
|
+
You have sent %{count} message to the assistant in the last 24 hours, which is this administration's
|
|
519
|
+
limit. Your message was not sent; try again later.
|
|
520
|
+
other: >-
|
|
521
|
+
You have sent %{count} messages to the assistant in the last 24 hours, which is this administration's
|
|
522
|
+
limit. Your message was not sent; try again later.
|
|
523
|
+
failures:
|
|
524
|
+
ai_unavailable: The assistant is not available right now. The rest of the administration works
|
|
525
|
+
as usual.
|
|
526
|
+
ai_rejected: The AI provider rejected this request. Try a shorter or different message.
|
|
527
|
+
provider_unavailable: The AI provider did not respond. Your message is saved; try again.
|
|
528
|
+
assistant_failed: The assistant could not finish. Your message is saved; try again.
|
|
529
|
+
attempts_exhausted: The assistant stopped after several attempts. Your message is saved; try again.
|
|
530
|
+
step_limit: The assistant stopped before finishing this request. Try a narrower question.
|
|
531
|
+
authorization_revoked: Your access changed, so this request was not answered.
|
|
532
|
+
not_allowed: No resources are available to the assistant for your account.
|
|
533
|
+
cancelled: Stopped.
|
|
534
|
+
script:
|
|
535
|
+
leave_form: Leave this form? Unsaved changes will be lost.
|
|
536
|
+
session_attention: >-
|
|
537
|
+
Your session needs attention. Sign in in another tab, then resume here. Unsaved input stays only
|
|
538
|
+
in this open tab.
|
|
539
|
+
restored_partial: >-
|
|
540
|
+
Session restored. Some fields are no longer editable; their input was not restored. Review the
|
|
541
|
+
form, then save explicitly.
|
|
542
|
+
restored: >-
|
|
543
|
+
Session restored. Your input is ready for review. Nothing has been saved; submit explicitly when
|
|
544
|
+
ready.
|
|
545
|
+
return_changed: Some list settings changed; return links use the current permitted list.
|
|
546
|
+
recovery_failed: >-
|
|
547
|
+
Recovery was not completed. Sign in as the original user and tenant, then try again. Changed records,
|
|
548
|
+
permissions, schema, time zone, expired recovery windows or completed requests require a fresh
|
|
549
|
+
form. This tab still holds your input; nothing was submitted again.
|
data/config/routes.rb
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
RailsAiAdmin::Engine.routes.draw do
|
|
4
|
+
# HTML only: "/orders/1.5" is not record 1 in format "5" (RAA-022).
|
|
5
|
+
scope format: false do
|
|
6
|
+
root to: "dashboard#index"
|
|
7
|
+
# Drawn only for hosts that opt in and load rails_tool_views themselves.
|
|
8
|
+
if RailsAiAdmin.configuration.surfaces
|
|
9
|
+
get "assistant/surfaces/:surface_id", to: "surfaces#show", as: :admin_surface
|
|
10
|
+
post "assistant/surfaces/:surface_id/actions", to: "surfaces#act", as: :admin_surface_actions
|
|
11
|
+
post ":resource/:id/operations/:operation/surface", to: "surfaces#create", as: :operation_surface
|
|
12
|
+
end
|
|
13
|
+
# Drawn only for hosts that opt in and load ruby_llm themselves.
|
|
14
|
+
if RailsAiAdmin.configuration.assistant
|
|
15
|
+
get "assistant", to: "assistant#index", as: :assistant
|
|
16
|
+
post "assistant/conversations", to: "assistant#create", as: :assistant_conversations
|
|
17
|
+
get "assistant/conversations/:chat_ref", to: "assistant#show", as: :assistant_conversation
|
|
18
|
+
post "assistant/conversations/:chat_ref/messages", to: "assistant#message", as: :assistant_messages
|
|
19
|
+
post "assistant/conversations/:chat_ref/cancel", to: "assistant#cancel", as: :cancel_assistant_conversation
|
|
20
|
+
post "assistant/conversations/:chat_ref/retry", to: "assistant#retry_turn", as: :retry_assistant_conversation
|
|
21
|
+
post "assistant/conversations/:chat_ref/archive", to: "assistant#archive", as: :archive_assistant_conversation
|
|
22
|
+
end
|
|
23
|
+
# Drawn only for hosts that opt in; MCP builds on the assistant setup.
|
|
24
|
+
if RailsAiAdmin.configuration.mcp
|
|
25
|
+
post "mcp", to: "mcp#handle", as: :mcp
|
|
26
|
+
get "mcp", to: "mcp#unsupported"
|
|
27
|
+
delete "mcp", to: "mcp#unsupported"
|
|
28
|
+
get "mcp/tokens", to: "mcp_tokens#index", as: :mcp_tokens
|
|
29
|
+
post "mcp/tokens", to: "mcp_tokens#create"
|
|
30
|
+
post "mcp/tokens/:id/revoke", to: "mcp_tokens#revoke", as: :revoke_mcp_token
|
|
31
|
+
end
|
|
32
|
+
get "search", to: "search#index", as: :global_search
|
|
33
|
+
get "audit", to: "audit#index", as: :audit_log
|
|
34
|
+
get "jobs", to: "collection_jobs#index", as: :collection_jobs
|
|
35
|
+
get "jobs/:job_ref", to: "collection_jobs#show", as: :collection_job
|
|
36
|
+
post "jobs/:job_ref/cancel", to: "collection_jobs#cancel", as: :cancel_collection_job
|
|
37
|
+
get ":resource/operations/:operation", to: "collection_operations#new", as: :collection_operation_form
|
|
38
|
+
post ":resource/operations/:operation/preflight", to: "collection_operations#preflight", as: :collection_operation_preflight
|
|
39
|
+
post ":resource/operations/:operation/execute", to: "collection_operations#execute", as: :collection_operation_execute
|
|
40
|
+
post ":resource/selections", to: "selections#create", as: :capture_selection
|
|
41
|
+
post ":resource/exports", to: "exports#create", as: :resource_export
|
|
42
|
+
get ":resource/imports/new", to: "imports#new", as: :new_resource_import
|
|
43
|
+
get ":resource/imports/template", to: "imports#template", as: :resource_import_template
|
|
44
|
+
post ":resource/imports", to: "imports#create", as: :resource_imports
|
|
45
|
+
get "selections/:selection_ref", to: "selections#show", as: :selection
|
|
46
|
+
get "selections/:selection_ref/destroy", to: "selections#confirm_destroy", as: :confirm_destroy_selection
|
|
47
|
+
post "selections/:selection_ref/destroy", to: "selections#destroy", as: :destroy_selection
|
|
48
|
+
get ":resource/:id/operations/:operation", to: "operations#new", as: :operation_form
|
|
49
|
+
post ":resource/:id/operations/:operation/preflight", to: "operations#preflight", as: :operation_preflight
|
|
50
|
+
post ":resource/:id/operations/:operation/execute", to: "operations#execute", as: :operation_execute
|
|
51
|
+
get ":resource/forms/recover", to: "resources#recover_form", as: :recover_resource_form
|
|
52
|
+
get ":resource/references/search", to: "references#search", as: :reference_search
|
|
53
|
+
get ":resource/new", to: "resources#new", as: :new_resource
|
|
54
|
+
get ":resource/:id/edit", to: "resources#edit", as: :edit_resource
|
|
55
|
+
get ":resource/:id/confirm_destroy", to: "resources#confirm_destroy", as: :confirm_destroy_resource
|
|
56
|
+
get ":resource/:id/history", to: "resources#history", as: :resource_history
|
|
57
|
+
get ":resource/:id/files/:field", to: "files#show", as: :resource_file
|
|
58
|
+
get ":resource", to: "resources#index", as: :resources
|
|
59
|
+
post ":resource", to: "resources#create"
|
|
60
|
+
get ":resource/:id", to: "resources#show", as: :resource
|
|
61
|
+
patch ":resource/:id", to: "resources#update"
|
|
62
|
+
delete ":resource/:id", to: "resources#destroy"
|
|
63
|
+
end
|
|
64
|
+
end
|