2023-03-15 17:02:20 -03:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
|
|
|
DiscourseAi::Engine.routes.draw do
|
|
|
|
scope module: :ai_helper, path: "/ai-helper", defaults: { format: :json } do
|
|
|
|
post "suggest" => "assistant#suggest"
|
2023-09-01 21:10:58 -03:00
|
|
|
post "suggest_title" => "assistant#suggest_title"
|
|
|
|
post "suggest_category" => "assistant#suggest_category"
|
|
|
|
post "suggest_tags" => "assistant#suggest_tags"
|
2024-08-08 11:32:39 -07:00
|
|
|
post "stream_suggestion" => "assistant#stream_suggestion"
|
2024-02-19 09:56:28 -08:00
|
|
|
post "caption_image" => "assistant#caption_image"
|
2023-03-15 17:02:20 -03:00
|
|
|
end
|
2023-03-31 15:29:56 -03:00
|
|
|
|
|
|
|
scope module: :embeddings, path: "/embeddings", defaults: { format: :json } do
|
|
|
|
get "semantic-search" => "embeddings#search"
|
2024-03-08 08:02:50 -08:00
|
|
|
get "quick-search" => "embeddings#quick_search"
|
2023-03-31 15:29:56 -03:00
|
|
|
end
|
2023-04-04 11:24:09 -03:00
|
|
|
|
2024-10-16 12:41:18 -03:00
|
|
|
scope module: :discord, path: "/discord", defaults: { format: :json } do
|
|
|
|
post "interactions" => "bot#interactions"
|
|
|
|
end
|
|
|
|
|
2023-05-05 15:28:31 -03:00
|
|
|
scope module: :ai_bot, path: "/ai-bot", defaults: { format: :json } do
|
2023-05-16 14:38:21 -03:00
|
|
|
get "bot-username" => "bot#show_bot_username"
|
2024-04-15 23:22:06 +10:00
|
|
|
get "post/:post_id/show-debug-info" => "bot#show_debug_info"
|
2024-11-12 08:14:30 +11:00
|
|
|
get "show-debug-info/:id" => "bot#show_debug_info_by_id"
|
2024-04-15 23:22:06 +10:00
|
|
|
post "post/:post_id/stop-streaming" => "bot#stop_streaming_response"
|
2025-02-20 14:37:58 -03:00
|
|
|
|
|
|
|
get "discover" => "bot#discover"
|
2025-04-01 10:22:39 -07:00
|
|
|
post "discover/continue-convo" => "bot#discover_continue_convo"
|
2023-05-05 15:28:31 -03:00
|
|
|
end
|
2024-03-12 16:51:41 +11:00
|
|
|
|
|
|
|
scope module: :ai_bot, path: "/ai-bot/shared-ai-conversations" do
|
|
|
|
post "/" => "shared_ai_conversations#create"
|
|
|
|
delete "/:share_key" => "shared_ai_conversations#destroy"
|
|
|
|
get "/:share_key" => "shared_ai_conversations#show"
|
2024-11-22 11:23:15 +11:00
|
|
|
get "/asset/:version/:name" => "shared_ai_conversations#asset"
|
2024-03-12 16:51:41 +11:00
|
|
|
get "/preview/:topic_id" => "shared_ai_conversations#preview"
|
|
|
|
end
|
2024-07-02 08:51:59 -07:00
|
|
|
|
2025-04-22 10:22:03 -05:00
|
|
|
scope module: :ai_bot, path: "/ai-bot/conversations" do
|
|
|
|
get "/" => "conversations#index"
|
|
|
|
end
|
|
|
|
|
2024-11-19 09:22:39 +11:00
|
|
|
scope module: :ai_bot, path: "/ai-bot/artifacts" do
|
|
|
|
get "/:id" => "artifacts#show"
|
2024-12-03 07:23:31 +11:00
|
|
|
get "/:id/:version" => "artifacts#show"
|
2024-11-19 09:22:39 +11:00
|
|
|
end
|
|
|
|
|
2024-07-02 08:51:59 -07:00
|
|
|
scope module: :summarization, path: "/summarization", defaults: { format: :json } do
|
|
|
|
get "/t/:topic_id" => "summary#show", :constraints => { topic_id: /\d+/ }
|
|
|
|
get "/channels/:channel_id" => "chat_summary#show"
|
|
|
|
end
|
2025-02-20 09:14:10 -08:00
|
|
|
|
|
|
|
scope module: :sentiment, path: "/sentiment", defaults: { format: :json } do
|
|
|
|
get "/posts" => "sentiment#posts", :constraints => StaffConstraint.new
|
|
|
|
end
|
2023-03-15 17:02:20 -03:00
|
|
|
end
|
|
|
|
|
2023-11-08 10:50:37 -03:00
|
|
|
Discourse::Application.routes.draw do
|
|
|
|
mount ::DiscourseAi::Engine, at: "discourse-ai"
|
|
|
|
|
|
|
|
get "admin/dashboard/sentiment" => "discourse_ai/admin/dashboard#sentiment",
|
|
|
|
:constraints => StaffConstraint.new
|
FEATURE: UI to update ai personas on admin page (#290)
Introduces a UI to manage customizable personas (admin only feature)
Part of the change was some extensive internal refactoring:
- AIBot now has a persona set in the constructor, once set it never changes
- Command now takes in bot as a constructor param, so it has the correct persona and is not generating AIBot objects on the fly
- Added a .prettierignore file, due to the way ALE is configured in nvim it is a pre-req for prettier to work
- Adds a bunch of validations on the AIPersona model, system personas (artist/creative etc...) are all seeded. We now ensure
- name uniqueness, and only allow certain properties to be touched for system personas.
- (JS note) the client side design takes advantage of nested routes, the parent route for personas gets all the personas via this.store.findAll("ai-persona") then child routes simply reach into this model to find a particular persona.
- (JS note) data is sideloaded into the ai-persona model the meta property supplied from the controller, resultSetMeta
- This removes ai_bot_enabled_personas and ai_bot_enabled_chat_commands, both should be controlled from the UI on a per persona basis
- Fixes a long standing bug in token accounting ... we were doing to_json.length instead of to_json.to_s.length
- Amended it so {commands} are always inserted at the end unconditionally, no need to add it to the template of the system message as it just confuses things
- Adds a concept of required_commands to stock personas, these are commands that must be configured for this stock persona to show up.
- Refactored tests so we stop requiring inference_stubs, it was very confusing to need it, added to plugin.rb for now which at least is clearer
- Migrates the persona selector to gjs
---------
Co-authored-by: Joffrey JAFFEUX <j.jaffeux@gmail.com>
Co-authored-by: Martin Brennan <martin@discourse.org>
2023-11-21 16:56:43 +11:00
|
|
|
|
|
|
|
scope "/admin/plugins/discourse-ai", constraints: AdminConstraint.new do
|
2025-05-29 15:17:34 +10:00
|
|
|
resources :ai_agents,
|
2024-12-12 10:48:58 +11:00
|
|
|
only: %i[index new create edit update destroy],
|
2025-05-29 15:17:34 +10:00
|
|
|
path: "ai-agents",
|
|
|
|
controller: "discourse_ai/admin/ai_agents"
|
2024-02-15 16:37:59 +11:00
|
|
|
|
2025-05-29 15:17:34 +10:00
|
|
|
post "/ai-agents/stream-reply" => "discourse_ai/admin/ai_agents#stream_reply"
|
2024-10-30 10:28:20 +11:00
|
|
|
|
2024-06-27 17:27:40 +10:00
|
|
|
resources(
|
|
|
|
:ai_tools,
|
2024-12-12 10:48:58 +11:00
|
|
|
only: %i[index new create edit update destroy],
|
2024-06-27 17:27:40 +10:00
|
|
|
path: "ai-tools",
|
|
|
|
controller: "discourse_ai/admin/ai_tools",
|
2024-10-25 16:01:25 +11:00
|
|
|
)
|
|
|
|
|
|
|
|
post "/ai-tools/:id/test", to: "discourse_ai/admin/ai_tools#test"
|
2024-06-27 17:27:40 +10:00
|
|
|
|
2025-05-29 15:17:34 +10:00
|
|
|
post "/ai-agents/:id/create-user", to: "discourse_ai/admin/ai_agents#create_user"
|
2024-09-30 16:27:50 +09:00
|
|
|
|
2025-05-29 15:17:34 +10:00
|
|
|
put "/ai-agents/:id/files/remove", to: "discourse_ai/admin/ai_agents#remove_file"
|
|
|
|
get "/ai-agents/:id/files/status", to: "discourse_ai/admin/ai_agents#indexing_status_check"
|
2024-05-13 12:46:42 -03:00
|
|
|
|
2024-09-30 16:27:50 +09:00
|
|
|
post "/rag-document-fragments/files/upload",
|
|
|
|
to: "discourse_ai/admin/rag_document_fragments#upload_file"
|
|
|
|
get "/rag-document-fragments/files/status",
|
|
|
|
to: "discourse_ai/admin/rag_document_fragments#indexing_status_check"
|
|
|
|
|
2024-11-29 06:26:48 +11:00
|
|
|
get "/ai-usage", to: "discourse_ai/admin/ai_usage#show"
|
2024-12-12 07:55:24 +10:00
|
|
|
get "/ai-usage-report", to: "discourse_ai/admin/ai_usage#report"
|
2024-12-12 09:17:25 +11:00
|
|
|
get "/ai-spam", to: "discourse_ai/admin/ai_spam#show"
|
|
|
|
put "/ai-spam", to: "discourse_ai/admin/ai_spam#update"
|
|
|
|
post "/ai-spam/test", to: "discourse_ai/admin/ai_spam#test"
|
2025-01-10 02:17:06 +09:00
|
|
|
post "/ai-spam/fix-errors", to: "discourse_ai/admin/ai_spam#fix_errors"
|
2024-11-29 06:26:48 +11:00
|
|
|
|
2024-05-13 12:46:42 -03:00
|
|
|
resources :ai_llms,
|
2024-12-12 10:48:58 +11:00
|
|
|
only: %i[index new create edit update destroy],
|
2024-05-13 12:46:42 -03:00
|
|
|
path: "ai-llms",
|
2024-05-21 13:35:50 -03:00
|
|
|
controller: "discourse_ai/admin/ai_llms" do
|
|
|
|
collection { get :test }
|
|
|
|
end
|
2025-01-14 15:54:09 +11:00
|
|
|
|
|
|
|
resources :ai_llm_quotas,
|
|
|
|
controller: "discourse_ai/admin/ai_llm_quotas",
|
|
|
|
path: "quotas",
|
|
|
|
only: %i[index create update destroy]
|
2025-01-21 12:23:19 -03:00
|
|
|
|
|
|
|
resources :ai_embeddings,
|
|
|
|
only: %i[index new create edit update destroy],
|
|
|
|
path: "ai-embeddings",
|
|
|
|
controller: "discourse_ai/admin/ai_embeddings" do
|
|
|
|
collection { get :test }
|
|
|
|
end
|
2025-04-10 08:16:31 -07:00
|
|
|
|
|
|
|
resources :ai_features,
|
|
|
|
only: %i[index edit],
|
|
|
|
path: "ai-features",
|
|
|
|
controller: "discourse_ai/admin/ai_features"
|
FEATURE: UI to update ai personas on admin page (#290)
Introduces a UI to manage customizable personas (admin only feature)
Part of the change was some extensive internal refactoring:
- AIBot now has a persona set in the constructor, once set it never changes
- Command now takes in bot as a constructor param, so it has the correct persona and is not generating AIBot objects on the fly
- Added a .prettierignore file, due to the way ALE is configured in nvim it is a pre-req for prettier to work
- Adds a bunch of validations on the AIPersona model, system personas (artist/creative etc...) are all seeded. We now ensure
- name uniqueness, and only allow certain properties to be touched for system personas.
- (JS note) the client side design takes advantage of nested routes, the parent route for personas gets all the personas via this.store.findAll("ai-persona") then child routes simply reach into this model to find a particular persona.
- (JS note) data is sideloaded into the ai-persona model the meta property supplied from the controller, resultSetMeta
- This removes ai_bot_enabled_personas and ai_bot_enabled_chat_commands, both should be controlled from the UI on a per persona basis
- Fixes a long standing bug in token accounting ... we were doing to_json.length instead of to_json.to_s.length
- Amended it so {commands} are always inserted at the end unconditionally, no need to add it to the template of the system message as it just confuses things
- Adds a concept of required_commands to stock personas, these are commands that must be configured for this stock persona to show up.
- Refactored tests so we stop requiring inference_stubs, it was very confusing to need it, added to plugin.rb for now which at least is clearer
- Migrates the persona selector to gjs
---------
Co-authored-by: Joffrey JAFFEUX <j.jaffeux@gmail.com>
Co-authored-by: Martin Brennan <martin@discourse.org>
2023-11-21 16:56:43 +11:00
|
|
|
end
|
2023-11-08 10:50:37 -03:00
|
|
|
end
|
2024-05-27 10:49:24 -07:00
|
|
|
|
|
|
|
Discourse::Application.routes.append do
|
|
|
|
get "u/:username/preferences/ai" => "users#preferences",
|
|
|
|
:constraints => {
|
|
|
|
username: RouteFormat.username,
|
|
|
|
}
|
|
|
|
end
|