collavre 0.20.3 → 0.22.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.
Files changed (163) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/stylesheets/collavre/actiontext.css +92 -2
  3. data/app/assets/stylesheets/collavre/code_highlight.css +144 -26
  4. data/app/assets/stylesheets/collavre/comments_popup.css +133 -2
  5. data/app/assets/stylesheets/collavre/landing.css +507 -0
  6. data/app/assets/stylesheets/collavre/popup.css +148 -0
  7. data/app/channels/collavre/agent_channel.rb +205 -0
  8. data/app/channels/collavre/comments_presence_channel.rb +7 -0
  9. data/app/controllers/collavre/admin/integrations_controller.rb +93 -0
  10. data/app/controllers/collavre/admin/settings_controller.rb +22 -17
  11. data/app/controllers/collavre/api/v1/agents_controller.rb +777 -0
  12. data/app/controllers/collavre/api/v1/base_controller.rb +46 -0
  13. data/app/controllers/collavre/application_controller.rb +27 -0
  14. data/app/controllers/collavre/attachments_controller.rb +30 -2
  15. data/app/controllers/collavre/channels_controller.rb +23 -0
  16. data/app/controllers/collavre/comments_controller.rb +1 -1
  17. data/app/controllers/collavre/creatives/attachments_controller.rb +79 -0
  18. data/app/controllers/collavre/creatives_controller.rb +141 -7
  19. data/app/controllers/collavre/landing_controller.rb +8 -0
  20. data/app/controllers/collavre/public_assets_controller.rb +24 -0
  21. data/app/controllers/collavre/tasks_controller.rb +12 -4
  22. data/app/controllers/collavre/topics_controller.rb +36 -30
  23. data/app/controllers/concerns/collavre/comments/approval_actions.rb +57 -14
  24. data/app/helpers/collavre/comments_helper.rb +7 -0
  25. data/app/helpers/collavre/public_assets_helper.rb +14 -0
  26. data/app/javascript/components/InlineLexicalEditor.jsx +42 -59
  27. data/app/javascript/components/plugins/attachment_cleanup_plugin.jsx +3 -0
  28. data/app/javascript/components/plugins/image_upload_plugin.jsx +12 -0
  29. data/app/javascript/controllers/__tests__/link_creative_controller.test.js +447 -0
  30. data/app/javascript/controllers/comment_controller.js +15 -1
  31. data/app/javascript/controllers/comments/__tests__/presence_controller.test.js +108 -0
  32. data/app/javascript/controllers/comments/form_controller.js +4 -0
  33. data/app/javascript/controllers/comments/list_controller.js +27 -9
  34. data/app/javascript/controllers/comments/popup_controller.js +9 -0
  35. data/app/javascript/controllers/comments/presence_controller.js +137 -4
  36. data/app/javascript/controllers/comments/topics_controller.js +15 -0
  37. data/app/javascript/controllers/creatives/__tests__/sync_controller.test.js +89 -0
  38. data/app/javascript/controllers/creatives/__tests__/tree_controller.test.js +120 -0
  39. data/app/javascript/controllers/creatives/sync_controller.js +30 -9
  40. data/app/javascript/controllers/creatives/tree_controller.js +23 -0
  41. data/app/javascript/controllers/index.js +4 -1
  42. data/app/javascript/controllers/landing_video_controller.js +53 -0
  43. data/app/javascript/controllers/link_creative_controller.js +451 -29
  44. data/app/javascript/creatives/tree_renderer.js +6 -0
  45. data/app/javascript/lib/api/__tests__/queue_manager.test.js +27 -0
  46. data/app/javascript/lib/api/creatives.js +13 -0
  47. data/app/javascript/lib/api/queue_manager.js +17 -5
  48. data/app/javascript/lib/lexical/__tests__/color_import.test.js +318 -0
  49. data/app/javascript/lib/lexical/__tests__/minimize_html.test.js +259 -0
  50. data/app/javascript/lib/lexical/color_import.js +186 -0
  51. data/app/javascript/lib/lexical/minimize_html.js +182 -0
  52. data/app/javascript/lib/lexical/video_node.jsx +96 -0
  53. data/app/javascript/modules/__tests__/command_args_form.test.js +103 -0
  54. data/app/javascript/modules/__tests__/html_content_empty.test.js +41 -0
  55. data/app/javascript/modules/__tests__/markdown_source_reconcile.test.js +70 -0
  56. data/app/javascript/modules/command_args_form.js +22 -4
  57. data/app/javascript/modules/command_menu.js +27 -0
  58. data/app/javascript/modules/creative_row_editor.js +227 -17
  59. data/app/javascript/modules/html_content_empty.js +12 -0
  60. data/app/javascript/modules/markdown_source_reconcile.js +53 -0
  61. data/app/jobs/collavre/ai_agent_job.rb +89 -3
  62. data/app/jobs/collavre/cancel_offline_delegated_tasks_job.rb +134 -0
  63. data/app/jobs/collavre/claude_channel_presence_job.rb +91 -0
  64. data/app/jobs/collavre/drop_trigger_job.rb +37 -8
  65. data/app/mailers/collavre/application_mailer.rb +1 -1
  66. data/app/models/collavre/agent_subscription.rb +52 -0
  67. data/app/models/collavre/channel/injected_message.rb +5 -0
  68. data/app/models/collavre/channel.rb +87 -0
  69. data/app/models/collavre/comment/claude_channel_permission.rb +145 -0
  70. data/app/models/collavre/comment.rb +70 -5
  71. data/app/models/collavre/creative/describable.rb +202 -3
  72. data/app/models/collavre/creative.rb +2 -0
  73. data/app/models/collavre/creative_share.rb +1 -0
  74. data/app/models/collavre/integration_setting.rb +35 -0
  75. data/app/models/collavre/preview_channel.rb +93 -0
  76. data/app/models/collavre/system_setting.rb +13 -2
  77. data/app/models/collavre/task.rb +34 -5
  78. data/app/models/collavre/topic.rb +8 -25
  79. data/app/models/collavre/user.rb +4 -0
  80. data/app/models/concerns/collavre/ai_agent_resolvable.rb +12 -3
  81. data/app/services/collavre/agent_session_abort.rb +28 -0
  82. data/app/services/collavre/ai_agent/claude_channel_adapter.rb +79 -0
  83. data/app/services/collavre/ai_agent/response_finalizer.rb +4 -2
  84. data/app/services/collavre/ai_agent_service.rb +68 -49
  85. data/app/services/collavre/ai_client.rb +3 -3
  86. data/app/services/collavre/attachment_backfill.rb +26 -0
  87. data/app/services/collavre/channel_attacher.rb +58 -0
  88. data/app/services/collavre/comments/mcp_command.rb +31 -1
  89. data/app/services/collavre/creatives/breadcrumb_resolver.rb +91 -0
  90. data/app/services/collavre/creatives/filter_pipeline.rb +26 -42
  91. data/app/services/collavre/creatives/filters/search_filter.rb +12 -2
  92. data/app/services/collavre/creatives/index_query.rb +110 -8
  93. data/app/services/collavre/creatives/permission_filter.rb +50 -0
  94. data/app/services/collavre/creatives/reveal_path_resolver.rb +118 -0
  95. data/app/services/collavre/creatives/tree_builder.rb +7 -3
  96. data/app/services/collavre/crons/recurring_task_arguments.rb +28 -0
  97. data/app/services/collavre/google_calendar_service.rb +4 -2
  98. data/app/services/collavre/markdown_converter.rb +130 -15
  99. data/app/services/collavre/markdown_importer.rb +7 -2
  100. data/app/services/collavre/orchestration/policy_resolver.rb +11 -1
  101. data/app/services/collavre/orchestration/stuck_detector.rb +22 -2
  102. data/app/services/collavre/tools/creative_attach_files_service.rb +62 -0
  103. data/app/services/collavre/tools/creative_list_attachments_service.rb +42 -0
  104. data/app/services/collavre/tools/creative_remove_attachment_service.rb +37 -0
  105. data/app/services/collavre/tools/cron_list_service.rb +1 -14
  106. data/app/services/collavre/tools/permission_denied_error.rb +9 -0
  107. data/app/services/collavre/tools/preview_attach_service.rb +128 -0
  108. data/app/services/collavre/tools/preview_detach_service.rb +61 -0
  109. data/app/services/collavre/tools/topic_authorizer.rb +24 -0
  110. data/app/services/collavre/topic_branch_service.rb +34 -26
  111. data/app/services/collavre/topics/orphaned_cron_notifier.rb +68 -0
  112. data/app/views/admin/shared/_tabs.html.erb +1 -0
  113. data/app/views/collavre/admin/integrations/_category.html.erb +22 -0
  114. data/app/views/collavre/admin/integrations/_setting_row.html.erb +70 -0
  115. data/app/views/collavre/admin/integrations/index.html.erb +42 -0
  116. data/app/views/collavre/admin/settings/_system_tab.html.erb +8 -0
  117. data/app/views/collavre/comments/_channel_chips.html.erb +33 -0
  118. data/app/views/collavre/comments/_comment.html.erb +16 -2
  119. data/app/views/collavre/comments/_comments_popup.html.erb +4 -1
  120. data/app/views/collavre/creatives/_inline_edit_form.html.erb +19 -0
  121. data/app/views/collavre/creatives/index.html.erb +10 -2
  122. data/app/views/collavre/landing/show.html.erb +130 -0
  123. data/app/views/collavre/shared/_link_creative_modal.html.erb +6 -2
  124. data/app/views/layouts/collavre/landing.html.erb +33 -0
  125. data/config/locales/admin.en.yml +4 -2
  126. data/config/locales/admin.ko.yml +4 -2
  127. data/config/locales/channels.en.yml +13 -0
  128. data/config/locales/channels.ko.yml +13 -0
  129. data/config/locales/claude_channel.en.yml +16 -0
  130. data/config/locales/claude_channel.ko.yml +16 -0
  131. data/config/locales/comments.en.yml +5 -0
  132. data/config/locales/comments.ko.yml +5 -0
  133. data/config/locales/creatives.en.yml +11 -0
  134. data/config/locales/creatives.ko.yml +10 -0
  135. data/config/locales/integrations.en.yml +55 -0
  136. data/config/locales/integrations.ko.yml +55 -0
  137. data/config/locales/landing.en.yml +51 -0
  138. data/config/locales/landing.ko.yml +51 -0
  139. data/config/routes.rb +30 -0
  140. data/db/migrate/20260526000000_create_channels.rb +42 -0
  141. data/db/migrate/20260527000000_add_dismissed_at_to_channels.rb +6 -0
  142. data/db/migrate/20260527000100_backfill_dismissed_at_for_legacy_detached_channels.rb +28 -0
  143. data/db/migrate/20260528000000_add_preview_channel_unique_index.rb +31 -0
  144. data/db/migrate/20260529000000_add_primary_agent_id_to_topics.rb +40 -0
  145. data/db/migrate/20260529100000_create_integration_settings.rb +15 -0
  146. data/db/migrate/20260609000000_drop_action_text_rich_texts.rb +20 -0
  147. data/db/migrate/20260609005000_add_session_id_to_topics.rb +16 -0
  148. data/db/migrate/20260609010000_create_agent_subscriptions.rb +19 -0
  149. data/db/migrate/20260609020000_add_last_seen_at_to_agent_subscriptions.rb +23 -0
  150. data/db/migrate/20260609030000_add_session_id_to_agent_subscriptions.rb +17 -0
  151. data/db/migrate/20260609190659_backfill_creative_files_into_description.rb +24 -0
  152. data/db/seeds.rb +19 -0
  153. data/lib/collavre/aws_credentials.rb +75 -0
  154. data/lib/collavre/engine.rb +50 -0
  155. data/lib/collavre/integration_settings/key_definition.rb +35 -0
  156. data/lib/collavre/integration_settings/registry.rb +60 -0
  157. data/lib/collavre/integration_settings/resolver.rb +71 -0
  158. data/lib/collavre/integration_settings.rb +46 -0
  159. data/lib/collavre/ses_settings_interceptor.rb +72 -0
  160. data/lib/collavre/version.rb +1 -1
  161. data/lib/collavre.rb +3 -0
  162. metadata +82 -2
  163. data/app/services/collavre/openclaw_abort_service.rb +0 -45
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: collavre
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.20.3
4
+ version: 0.22.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Collavre
@@ -184,6 +184,7 @@ files:
184
184
  - app/assets/stylesheets/collavre/design_tokens.css
185
185
  - app/assets/stylesheets/collavre/gnb.css
186
186
  - app/assets/stylesheets/collavre/image_lightbox.css
187
+ - app/assets/stylesheets/collavre/landing.css
187
188
  - app/assets/stylesheets/collavre/mention_menu.css
188
189
  - app/assets/stylesheets/collavre/modal_dialog.css
189
190
  - app/assets/stylesheets/collavre/org_chart.css
@@ -193,6 +194,7 @@ files:
193
194
  - app/assets/stylesheets/collavre/slide_view.css
194
195
  - app/assets/stylesheets/collavre/trigger_status.css
195
196
  - app/assets/stylesheets/collavre/user_menu.css
197
+ - app/channels/collavre/agent_channel.rb
196
198
  - app/channels/collavre/comments_presence_channel.rb
197
199
  - app/channels/collavre/creatives_channel.rb
198
200
  - app/channels/collavre/slide_view_channel.rb
@@ -209,11 +211,15 @@ files:
209
211
  - app/components/collavre/progress_filter_component.html.erb
210
212
  - app/components/collavre/progress_filter_component.rb
211
213
  - app/components/collavre/user_mention_menu_component.rb
214
+ - app/controllers/collavre/admin/integrations_controller.rb
212
215
  - app/controllers/collavre/admin/orchestration_controller.rb
213
216
  - app/controllers/collavre/admin/settings_controller.rb
217
+ - app/controllers/collavre/api/v1/agents_controller.rb
218
+ - app/controllers/collavre/api/v1/base_controller.rb
214
219
  - app/controllers/collavre/application_controller.rb
215
220
  - app/controllers/collavre/attachments_controller.rb
216
221
  - app/controllers/collavre/calendar_events_controller.rb
222
+ - app/controllers/collavre/channels_controller.rb
217
223
  - app/controllers/collavre/comment_read_pointers_controller.rb
218
224
  - app/controllers/collavre/comments/activity_logs_controller.rb
219
225
  - app/controllers/collavre/comments/reactions_controller.rb
@@ -228,6 +234,7 @@ files:
228
234
  - app/controllers/collavre/creative_imports_controller.rb
229
235
  - app/controllers/collavre/creative_invitations_controller.rb
230
236
  - app/controllers/collavre/creative_shares_controller.rb
237
+ - app/controllers/collavre/creatives/attachments_controller.rb
231
238
  - app/controllers/collavre/creatives_controller.rb
232
239
  - app/controllers/collavre/devices_controller.rb
233
240
  - app/controllers/collavre/email_verifications_controller.rb
@@ -235,7 +242,9 @@ files:
235
242
  - app/controllers/collavre/google_auth_controller.rb
236
243
  - app/controllers/collavre/inbox_items_controller.rb
237
244
  - app/controllers/collavre/invites_controller.rb
245
+ - app/controllers/collavre/landing_controller.rb
238
246
  - app/controllers/collavre/passwords_controller.rb
247
+ - app/controllers/collavre/public_assets_controller.rb
239
248
  - app/controllers/collavre/sessions_controller.rb
240
249
  - app/controllers/collavre/tasks_controller.rb
241
250
  - app/controllers/collavre/topics_controller.rb
@@ -260,6 +269,7 @@ files:
260
269
  - app/helpers/collavre/comments_helper.rb
261
270
  - app/helpers/collavre/creatives_helper.rb
262
271
  - app/helpers/collavre/navigation_helper.rb
272
+ - app/helpers/collavre/public_assets_helper.rb
263
273
  - app/javascript/collavre.js
264
274
  - app/javascript/components/ImageResizer.jsx
265
275
  - app/javascript/components/InlineLexicalEditor.jsx
@@ -268,6 +278,7 @@ files:
268
278
  - app/javascript/components/plugins/attachment_cleanup_plugin.jsx
269
279
  - app/javascript/components/plugins/image_upload_plugin.jsx
270
280
  - app/javascript/components/plugins/markdown_shortcuts_plugin.jsx
281
+ - app/javascript/controllers/__tests__/link_creative_controller.test.js
271
282
  - app/javascript/controllers/__tests__/popup_menu_controller.test.js
272
283
  - app/javascript/controllers/agent_trigger_controller.js
273
284
  - app/javascript/controllers/click_target_controller.js
@@ -290,6 +301,8 @@ files:
290
301
  - app/javascript/controllers/comments/review_quotes_store.js
291
302
  - app/javascript/controllers/comments/topics_controller.js
292
303
  - app/javascript/controllers/common_popup_controller.js
304
+ - app/javascript/controllers/creatives/__tests__/sync_controller.test.js
305
+ - app/javascript/controllers/creatives/__tests__/tree_controller.test.js
293
306
  - app/javascript/controllers/creatives/drag_drop_controller.js
294
307
  - app/javascript/controllers/creatives/expansion_controller.js
295
308
  - app/javascript/controllers/creatives/import_controller.js
@@ -299,6 +312,7 @@ files:
299
312
  - app/javascript/controllers/creatives/tree_controller.js
300
313
  - app/javascript/controllers/image_lightbox_controller.js
301
314
  - app/javascript/controllers/index.js
315
+ - app/javascript/controllers/landing_video_controller.js
302
316
  - app/javascript/controllers/link_creative_controller.js
303
317
  - app/javascript/controllers/org_chart_controller.js
304
318
  - app/javascript/controllers/popup_menu_controller.js
@@ -330,16 +344,24 @@ files:
330
344
  - app/javascript/lib/gnb_popup_manager.js
331
345
  - app/javascript/lib/html_code_block_wrapper.js
332
346
  - app/javascript/lib/lexical/__tests__/attachment_payload.test.js
347
+ - app/javascript/lib/lexical/__tests__/color_import.test.js
348
+ - app/javascript/lib/lexical/__tests__/minimize_html.test.js
333
349
  - app/javascript/lib/lexical/attachment_node.jsx
334
350
  - app/javascript/lib/lexical/attachment_payload.js
351
+ - app/javascript/lib/lexical/color_import.js
335
352
  - app/javascript/lib/lexical/image_node.jsx
353
+ - app/javascript/lib/lexical/minimize_html.js
336
354
  - app/javascript/lib/lexical/style_attributes.js
355
+ - app/javascript/lib/lexical/video_node.jsx
337
356
  - app/javascript/lib/responsive_images.js
338
357
  - app/javascript/lib/touch_drag.js
339
358
  - app/javascript/lib/turbo_stream_actions.js
340
359
  - app/javascript/lib/utils/markdown.js
341
360
  - app/javascript/lib/utils/table_download.js
361
+ - app/javascript/modules/__tests__/command_args_form.test.js
342
362
  - app/javascript/modules/__tests__/creative_progress.test.js
363
+ - app/javascript/modules/__tests__/html_content_empty.test.js
364
+ - app/javascript/modules/__tests__/markdown_source_reconcile.test.js
343
365
  - app/javascript/modules/command_args_form.js
344
366
  - app/javascript/modules/command_menu.js
345
367
  - app/javascript/modules/creative_guide.js
@@ -348,9 +370,11 @@ files:
348
370
  - app/javascript/modules/creative_row_swipe.js
349
371
  - app/javascript/modules/creatives.js
350
372
  - app/javascript/modules/export_to_markdown.js
373
+ - app/javascript/modules/html_content_empty.js
351
374
  - app/javascript/modules/inbox_panel.js
352
375
  - app/javascript/modules/integration_wizard.js
353
376
  - app/javascript/modules/lexical_inline_editor.jsx
377
+ - app/javascript/modules/markdown_source_reconcile.js
354
378
  - app/javascript/modules/mention_menu.js
355
379
  - app/javascript/modules/modal_dialog.js
356
380
  - app/javascript/modules/slide_view.js
@@ -362,6 +386,8 @@ files:
362
386
  - app/javascript/utils/drag_bundle_image.js
363
387
  - app/javascript/utils/emoji_parser.js
364
388
  - app/jobs/collavre/ai_agent_job.rb
389
+ - app/jobs/collavre/cancel_offline_delegated_tasks_job.rb
390
+ - app/jobs/collavre/claude_channel_presence_job.rb
365
391
  - app/jobs/collavre/compress_job.rb
366
392
  - app/jobs/collavre/creative_broadcast_job.rb
367
393
  - app/jobs/collavre/cron_action_job.rb
@@ -383,11 +409,15 @@ files:
383
409
  - app/mailers/collavre/invitation_mailer.rb
384
410
  - app/mailers/collavre/passwords_mailer.rb
385
411
  - app/models/collavre/activity_log.rb
412
+ - app/models/collavre/agent_subscription.rb
386
413
  - app/models/collavre/application_record.rb
387
414
  - app/models/collavre/calendar_event.rb
415
+ - app/models/collavre/channel.rb
416
+ - app/models/collavre/channel/injected_message.rb
388
417
  - app/models/collavre/comment.rb
389
418
  - app/models/collavre/comment/approvable.rb
390
419
  - app/models/collavre/comment/broadcastable.rb
420
+ - app/models/collavre/comment/claude_channel_permission.rb
391
421
  - app/models/collavre/comment/notifiable.rb
392
422
  - app/models/collavre/comment_presence_store.rb
393
423
  - app/models/collavre/comment_reaction.rb
@@ -407,10 +437,12 @@ files:
407
437
  - app/models/collavre/device.rb
408
438
  - app/models/collavre/email.rb
409
439
  - app/models/collavre/inbox_item.rb
440
+ - app/models/collavre/integration_setting.rb
410
441
  - app/models/collavre/invitation.rb
411
442
  - app/models/collavre/label.rb
412
443
  - app/models/collavre/mcp_tool.rb
413
444
  - app/models/collavre/orchestrator_policy.rb
445
+ - app/models/collavre/preview_channel.rb
414
446
  - app/models/collavre/session.rb
415
447
  - app/models/collavre/system_setting.rb
416
448
  - app/models/collavre/tag.rb
@@ -423,9 +455,11 @@ files:
423
455
  - app/models/collavre/webauthn_credential.rb
424
456
  - app/models/concerns/collavre/ai_agent_resolvable.rb
425
457
  - app/models/concerns/collavre/has_inbox_creative.rb
458
+ - app/services/collavre/agent_session_abort.rb
426
459
  - app/services/collavre/ai_agent/a2a_dispatcher.rb
427
460
  - app/services/collavre/ai_agent/agent_lifecycle_manager.rb
428
461
  - app/services/collavre/ai_agent/approval_handler.rb
462
+ - app/services/collavre/ai_agent/claude_channel_adapter.rb
429
463
  - app/services/collavre/ai_agent/message_builder.rb
430
464
  - app/services/collavre/ai_agent/response_finalizer.rb
431
465
  - app/services/collavre/ai_agent/response_streamer.rb
@@ -434,7 +468,9 @@ files:
434
468
  - app/services/collavre/ai_agent_service.rb
435
469
  - app/services/collavre/ai_client.rb
436
470
  - app/services/collavre/ai_system_prompt_renderer.rb
471
+ - app/services/collavre/attachment_backfill.rb
437
472
  - app/services/collavre/auto_theme_generator.rb
473
+ - app/services/collavre/channel_attacher.rb
438
474
  - app/services/collavre/command_menu_service.rb
439
475
  - app/services/collavre/comment_link_formatter.rb
440
476
  - app/services/collavre/comment_move_service.rb
@@ -450,6 +486,7 @@ files:
450
486
  - app/services/collavre/comments/topic_command.rb
451
487
  - app/services/collavre/comments/work_command.rb
452
488
  - app/services/collavre/comments/workflow_executor.rb
489
+ - app/services/collavre/creatives/breadcrumb_resolver.rb
453
490
  - app/services/collavre/creatives/create_service.rb
454
491
  - app/services/collavre/creatives/destroy_service.rb
455
492
  - app/services/collavre/creatives/filter_pipeline.rb
@@ -464,10 +501,13 @@ files:
464
501
  - app/services/collavre/creatives/index_query.rb
465
502
  - app/services/collavre/creatives/permission_cache_builder.rb
466
503
  - app/services/collavre/creatives/permission_checker.rb
504
+ - app/services/collavre/creatives/permission_filter.rb
467
505
  - app/services/collavre/creatives/progress_service.rb
468
506
  - app/services/collavre/creatives/reorderer.rb
507
+ - app/services/collavre/creatives/reveal_path_resolver.rb
469
508
  - app/services/collavre/creatives/tree_builder.rb
470
509
  - app/services/collavre/creatives/tree_formatter.rb
510
+ - app/services/collavre/crons/recurring_task_arguments.rb
471
511
  - app/services/collavre/gemini_parent_recommender.rb
472
512
  - app/services/collavre/google_calendar_service.rb
473
513
  - app/services/collavre/inbox_reply_service.rb
@@ -476,7 +516,6 @@ files:
476
516
  - app/services/collavre/markdown_importer.rb
477
517
  - app/services/collavre/mcp_service.rb
478
518
  - app/services/collavre/mention_parser.rb
479
- - app/services/collavre/openclaw_abort_service.rb
480
519
  - app/services/collavre/orchestration/agent_context_builder.rb
481
520
  - app/services/collavre/orchestration/agent_orchestrator.rb
482
521
  - app/services/collavre/orchestration/arbiter.rb
@@ -490,9 +529,12 @@ files:
490
529
  - app/services/collavre/ruby_llm_interaction_logger.rb
491
530
  - app/services/collavre/system_events/context_builder.rb
492
531
  - app/services/collavre/system_events/dispatcher.rb
532
+ - app/services/collavre/tools/creative_attach_files_service.rb
493
533
  - app/services/collavre/tools/creative_batch_service.rb
494
534
  - app/services/collavre/tools/creative_create_service.rb
495
535
  - app/services/collavre/tools/creative_import_service.rb
536
+ - app/services/collavre/tools/creative_list_attachments_service.rb
537
+ - app/services/collavre/tools/creative_remove_attachment_service.rb
496
538
  - app/services/collavre/tools/creative_retrieval_service.rb
497
539
  - app/services/collavre/tools/creative_update_service.rb
498
540
  - app/services/collavre/tools/cron_cancel_service.rb
@@ -500,14 +542,23 @@ files:
500
542
  - app/services/collavre/tools/cron_list_service.rb
501
543
  - app/services/collavre/tools/cron_update_service.rb
502
544
  - app/services/collavre/tools/description_normalizable.rb
545
+ - app/services/collavre/tools/permission_denied_error.rb
546
+ - app/services/collavre/tools/preview_attach_service.rb
547
+ - app/services/collavre/tools/preview_detach_service.rb
548
+ - app/services/collavre/tools/topic_authorizer.rb
503
549
  - app/services/collavre/topic_branch_service.rb
550
+ - app/services/collavre/topics/orphaned_cron_notifier.rb
504
551
  - app/views/admin/shared/_tabs.html.erb
552
+ - app/views/collavre/admin/integrations/_category.html.erb
553
+ - app/views/collavre/admin/integrations/_setting_row.html.erb
554
+ - app/views/collavre/admin/integrations/index.html.erb
505
555
  - app/views/collavre/admin/orchestration/show.html.erb
506
556
  - app/views/collavre/admin/settings/_system_tab.html.erb
507
557
  - app/views/collavre/admin/settings/_uiux_tab.html.erb
508
558
  - app/views/collavre/admin/settings/index.html.erb
509
559
  - app/views/collavre/admin/settings/uiux.html.erb
510
560
  - app/views/collavre/comments/_activity_log_details.html.erb
561
+ - app/views/collavre/comments/_channel_chips.html.erb
511
562
  - app/views/collavre/comments/_comment.html.erb
512
563
  - app/views/collavre/comments/_comments_popup.html.erb
513
564
  - app/views/collavre/comments/_list.html.erb
@@ -538,6 +589,7 @@ files:
538
589
  - app/views/collavre/invitation_mailer/invite.html.erb
539
590
  - app/views/collavre/invitation_mailer/invite.text.erb
540
591
  - app/views/collavre/invites/show.html.erb
592
+ - app/views/collavre/landing/show.html.erb
541
593
  - app/views/collavre/passwords/edit.html.erb
542
594
  - app/views/collavre/passwords/new.html.erb
543
595
  - app/views/collavre/passwords_mailer/reset.html.erb
@@ -568,11 +620,16 @@ files:
568
620
  - app/views/collavre/users/passkeys.html.erb
569
621
  - app/views/collavre/users/show.html.erb
570
622
  - app/views/inbox/badge_component/_count.html.erb
623
+ - app/views/layouts/collavre/landing.html.erb
571
624
  - app/views/layouts/collavre/slide.html.erb
572
625
  - config/locales/admin.en.yml
573
626
  - config/locales/admin.ko.yml
574
627
  - config/locales/ai_agent.en.yml
575
628
  - config/locales/ai_agent.ko.yml
629
+ - config/locales/channels.en.yml
630
+ - config/locales/channels.ko.yml
631
+ - config/locales/claude_channel.en.yml
632
+ - config/locales/claude_channel.ko.yml
576
633
  - config/locales/comments.en.yml
577
634
  - config/locales/comments.ko.yml
578
635
  - config/locales/contacts.en.yml
@@ -583,8 +640,12 @@ files:
583
640
  - config/locales/creatives.ko.yml
584
641
  - config/locales/drop_trigger.en.yml
585
642
  - config/locales/drop_trigger.ko.yml
643
+ - config/locales/integrations.en.yml
644
+ - config/locales/integrations.ko.yml
586
645
  - config/locales/invites.en.yml
587
646
  - config/locales/invites.ko.yml
647
+ - config/locales/landing.en.yml
648
+ - config/locales/landing.ko.yml
588
649
  - config/locales/notifications.en.yml
589
650
  - config/locales/notifications.ko.yml
590
651
  - config/locales/orchestration.en.yml
@@ -709,10 +770,29 @@ files:
709
770
  - db/migrate/20260409000000_add_source_topic_id_to_topics.rb
710
771
  - db/migrate/20260415000000_create_main_topics_for_existing_creatives.rb
711
772
  - db/migrate/20260415094811_add_task_id_to_comments.rb
773
+ - db/migrate/20260526000000_create_channels.rb
774
+ - db/migrate/20260527000000_add_dismissed_at_to_channels.rb
775
+ - db/migrate/20260527000100_backfill_dismissed_at_for_legacy_detached_channels.rb
776
+ - db/migrate/20260528000000_add_preview_channel_unique_index.rb
777
+ - db/migrate/20260529000000_add_primary_agent_id_to_topics.rb
778
+ - db/migrate/20260529100000_create_integration_settings.rb
779
+ - db/migrate/20260609000000_drop_action_text_rich_texts.rb
780
+ - db/migrate/20260609005000_add_session_id_to_topics.rb
781
+ - db/migrate/20260609010000_create_agent_subscriptions.rb
782
+ - db/migrate/20260609020000_add_last_seen_at_to_agent_subscriptions.rb
783
+ - db/migrate/20260609030000_add_session_id_to_agent_subscriptions.rb
784
+ - db/migrate/20260609190659_backfill_creative_files_into_description.rb
785
+ - db/seeds.rb
712
786
  - lib/collavre.rb
787
+ - lib/collavre/aws_credentials.rb
713
788
  - lib/collavre/configuration.rb
714
789
  - lib/collavre/engine.rb
715
790
  - lib/collavre/integration_registry.rb
791
+ - lib/collavre/integration_settings.rb
792
+ - lib/collavre/integration_settings/key_definition.rb
793
+ - lib/collavre/integration_settings/registry.rb
794
+ - lib/collavre/integration_settings/resolver.rb
795
+ - lib/collavre/ses_settings_interceptor.rb
716
796
  - lib/collavre/user_extensions.rb
717
797
  - lib/collavre/version.rb
718
798
  - lib/collavre/view_extensions.rb
@@ -1,45 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Collavre
4
- class OpenclawAbortService
5
- def self.call(agent:, task:, creative: nil, comment: nil)
6
- new(agent: agent, task: task, creative: creative, comment: comment).call
7
- end
8
-
9
- def initialize(agent:, task:, creative: nil, comment: nil)
10
- @agent = agent
11
- @task = task
12
- @creative = creative
13
- @comment = comment
14
- end
15
-
16
- def call
17
- return unless @agent.llm_vendor&.downcase == "openclaw"
18
- return unless defined?(CollavreOpenclaw::ConnectionManager)
19
-
20
- creative = @creative || @task.creative || Creative.find_by(id: payload.dig("creative", "id"))
21
- comment = @comment || Comment.find_by(id: payload.dig("comment", "id"))
22
-
23
- adapter = CollavreOpenclaw::OpenclawAdapter.new(
24
- user: @agent,
25
- system_prompt: "",
26
- context: {
27
- creative: creative,
28
- user: @agent,
29
- task: @task,
30
- comment: comment
31
- }
32
- )
33
- conn = CollavreOpenclaw::ConnectionManager.instance.connection_for(@agent)
34
- conn.chat_abort(session_key: adapter.session_key)
35
- rescue StandardError => e
36
- Rails.logger.warn("[OpenclawAbortService] abort failed: #{e.message}")
37
- end
38
-
39
- private
40
-
41
- def payload
42
- @task.trigger_event_payload || {}
43
- end
44
- end
45
- end