Rodribm10
f7d4c41d07
feat(captain-memory): add MemoriesController with index/update/destroy/bulk_destroy
2026-04-19 01:41:09 -03:00
Rodribm10
638e84752d
feat(captain-memory): add ContactMemoryPolicy (Pundit)
2026-04-19 01:37:13 -03:00
Rodribm10
9c035722de
test(captain-memory): end-to-end learning and recall integration test
2026-04-19 01:35:09 -03:00
Rodribm10
1cf9531741
fix(captain-memory): use Agent#clone instead of ivar mutation + unify test path with runtime
2026-04-19 01:32:56 -03:00
Rodribm10
85324f594d
feat(captain-memory): inject semantic memory into AgentRunnerService system prompt
2026-04-19 01:23:03 -03:00
Rodribm10
e89b96d09b
feat(captain-memory): enqueue extraction on conversation.resolved
2026-04-19 01:13:26 -03:00
Rodribm10
2261b09b25
feat(captain-memory): add HardDeleteExpiredJob with daily cron (LGPD)
2026-04-19 01:09:28 -03:00
Rodribm10
b3077b2b26
feat(captain-memory): add AgingJob with TTL + LRU cap, weekly cron
2026-04-19 01:05:02 -03:00
Rodribm10
fb6673664a
fix(captain-memory): isolate per-account failures in SilenceDetectorJob + fix typo
2026-04-19 01:01:28 -03:00
Rodribm10
833e76856e
feat(captain-memory): add SilenceDetectorJob with 10min cron
2026-04-19 00:55:15 -03:00
Rodribm10
1646f66a97
fix(captain-memory): wrap ExtractFromConversationJob persistence in transaction + hoist unit lookup
2026-04-19 00:50:08 -03:00
Rodribm10
9d5e4c959f
feat(captain-memory): add ExtractFromConversationJob with TTL + idempotency
2026-04-19 00:45:14 -03:00
Rodribm10
350a420ee0
feat(captain-memory): add ContradictionCheckerJob
2026-04-19 00:39:52 -03:00
Rodribm10
dc366433bb
feat(captain-memory): add UpdateEmbeddingJob
2026-04-19 00:35:06 -03:00
Rodribm10
6723473fdc
fix(captain-memory): ContradictionChecker exact-match parsing + rescue wrap + LLM failure test
2026-04-19 00:31:54 -03:00
Rodribm10
9bc6429b91
feat(captain-memory): add ContradictionCheckerService with LLM verification
2026-04-19 00:26:58 -03:00
Rodribm10
aec796ebfd
fix(captain-memory): cap ExtractionService input, validate scope, filter failed msgs
2026-04-19 00:24:09 -03:00
Rodribm10
9d593757df
feat(captain-memory): add ExtractionService with evidence+confidence guardrails
2026-04-19 00:18:32 -03:00
Rodribm10
0fee1b3c2f
fix(captain-memory): strengthen RecallService logging context and document timeout tradeoff
2026-04-19 00:14:06 -03:00
Rodribm10
502c3d1698
feat(captain-memory): add RecallService with timeout and graceful degradation
2026-04-19 00:09:31 -03:00
Rodribm10
5d15f55a29
feat(captain-memory): add PromptInjectionService formatting memories as XML
2026-04-19 00:05:11 -03:00
Rodribm10
e1273f142b
feat(captain-memory): add Captain::ContactMemory model with scopes and lifecycle methods
2026-04-18 23:53:33 -03:00
Rodribm10
8ea87027d1
fix: move captain_unit_factory_spec out of factories/ (was breaking rails runner boot)
2026-04-15 22:19:48 -03:00
Rodribm10
fa1dd8b6cb
feat(lifecycle): expose concierge config update on UnitsController
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-15 10:35:03 -03:00
Rodribm10
0b195781c5
feat(lifecycle): REST endpoint for lifecycle deliveries audit log
2026-04-15 10:29:24 -03:00
Rodribm10
8690a49971
feat(lifecycle): REST endpoint for lifecycle config singleton
2026-04-15 10:23:42 -03:00
Rodribm10
7c17a7cb96
feat(lifecycle): REST endpoint for lifecycle rules CRUD
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-15 10:17:59 -03:00
Rodribm10
7d21530bc7
feat(lifecycle): add Pundit policies for rule/config/delivery
2026-04-15 10:06:47 -03:00
Rodribm10
f302726d9b
test(lifecycle): add end-to-end integration spec for scheduler→dispatch→send flow
...
Also fixes double-scheduling bug in scheduler_spec and delivery_spec caused by
after_create_commit hook firing while rules already exist — reservation is now
created before rules in setup so the hook finds nothing to schedule.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-15 09:29:52 -03:00
Rodribm10
7b009cf47f
feat(lifecycle): inject concierge context into Captain orchestrator prompt
...
Adds concierge.* and reservation.* Liquid variables to agent_instructions
so Sofia's orchestrator_prompt receives unit persona/knowledge/variables
and reservation data resolved from conversation.custom_attributes.current_unit_id.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-15 09:25:16 -03:00
Rodribm10
d0d08ed662
feat(lifecycle): implement DispatcherJob
...
Replace no-op stub with full perform body: find delivery by id, skip if
blank, delegate to Captain::Lifecycle::Dispatcher#call. Add retry_on
with polynomially_longer backoff (3 attempts). Spec covers dispatcher
delegation and graceful skip for missing records.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-15 09:20:32 -03:00
Rodribm10
0d4583a21a
feat(lifecycle): add Dispatcher service with guards→render→send pipeline
...
Orchestrates guards → render (Liquid) → send pipeline for one delivery.
Handles skip, reschedule, sent, failed states and re-enqueues on reschedule.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-15 01:53:01 -03:00
Rodribm10
6d84a7586b
feat(lifecycle): add MinInterval and CustomerReplied guards
...
Implement guards following the same pass/reschedule/too_stale pattern as QuietHours.
Also fix belongs_to :conversation on Delivery to use class_name: '::Conversation' to avoid namespace resolution failure inside Captain::Lifecycle module.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-15 01:49:22 -03:00
Rodribm10
fcdc2054b5
feat(lifecycle): add QuietHours guard with 2h staleness limit
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-15 01:44:39 -03:00
Rodribm10
823008a1cd
feat(lifecycle): add Guards::Base e 3 guards simples (ReservationActive, OptOutLabel, MaxPerReservation)
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-15 01:42:10 -03:00
Rodribm10
f6aa39921a
feat(lifecycle): add ContextBuilder for Liquid render variables
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-15 01:39:35 -03:00
Rodribm10
8e0a06246b
feat(lifecycle): wire Captain::Reservation lifecycle hooks
...
Add after_commit callbacks to call Captain::Lifecycle::Scheduler on
create, status change (cancelled/no_show), and check_in_at change.
Each handler wraps in rescue StandardError to preserve existing behavior.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-15 01:37:23 -03:00
Rodribm10
bb4631f427
feat(lifecycle): add Scheduler service and DispatcherJob stub
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-15 01:35:31 -03:00
Rodribm10
4a88f7f517
feat(lifecycle): add EventResolver service
...
Pure function mapping reservation events to timestamps; used by Scheduler (T9) to compute fire_at.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-15 01:31:47 -03:00
Rodribm10
a4472b80b9
feat(lifecycle): add concierge_* accessors to Captain::Unit
2026-04-15 01:23:40 -03:00
Rodribm10
41bbf14d57
feat(lifecycle): add Captain::Lifecycle::Delivery model with state helpers
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-15 01:21:11 -03:00
Rodribm10
ffc5ac7fb8
feat(lifecycle): add Captain::Lifecycle::Rule model with filter matching
...
TDD: 16 examples passing. Adds EVENTS constant, active/for_event scopes,
and matches_reservation? with unit_ids/categorias/permanencias filters.
Also adds captain_reservation factory used by the spec.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-15 01:18:17 -03:00
Rodribm10
6ee3fcd4ef
feat(lifecycle): add Captain::Lifecycle::Config model
2026-04-15 01:14:19 -03:00
Rodribm10
e9a5e734ff
feat: rota + controller esqueleto PublicReservations com token auth
2026-04-13 23:49:11 -03:00
Rodribm10
17f1c8165e
test: spec para auth do PublicReservationsController (red)
2026-04-13 23:47:00 -03:00
Rodrigo Borba
f2fb40afaa
ajuste galeria de imagens
2026-02-26 15:27:25 -03:00
Rodrigo Borba
f12e1d6545
fix(captain): integracao do delay do inbox com resposta humanizada e remocao de race conditions
2026-02-26 12:47:41 -03:00
Rodrigo Borba
14dbc0f423
Adicionar aba faturamento em Reserv
2026-02-26 06:51:08 -03:00
Rodrigo Borba
0e7dc282c4
chore(style): fix rubocop offenses and update typing indicators
2026-02-25 15:06:58 -03:00
gabrieljablonski
9a4c5058f3
Merge branch 'main' into chore/merge-upstream-4.11.0
2026-02-17 23:05:26 -03:00