Skip to content

Export and sync the conversation by default (messages profile) - #23

Merged
nullarch merged 4 commits into
mainfrom
feat/natural-language-sync-20260909
Sep 9, 2026
Merged

Export and sync the conversation by default (messages profile)#23
nullarch merged 4 commits into
mainfrom
feat/natural-language-sync-20260909

Conversation

@nullarch

@nullarch nullarch commented Sep 9, 2026

Copy link
Copy Markdown
Owner

Summary

  • attempt hook install sets OTEL_LOG_USER_PROMPTS=1 / OTEL_LOG_ASSISTANT_RESPONSES=1 (Claude Code) and log_user_prompt = true (Codex); tool details and content stay off.
  • The OTel adapter stores the prompt of user_prompt and the reply of assistant_response as content under the capture mode, sizes as x_otel_prompt_chars / x_otel_response_chars.
  • New sync profile messages (send_messages): uploads only the prompt/message text of prompt, turn-stop, agent-message and OTel prompt/reply events, secret-redacted. Commands, tool input/output, errors and raw never leave. attempt sync profile <name> switches a configured peer.
  • VibeMon installers default to --profile messages and local_semantic; --metadata-only opts out. deploy/fly.toml ceiling local_semantic.
  • Version 0.2.12, CHANGELOG, RFC 0006 §10.8, README, docs/otel.md, PROGRESS.md.

Test plan

  • cargo test -p attemptdb-capture --test sync — new round-trip test: messages profile against a local_semantic server keeps the conversation and strips a canary in command/tool_output/raw; a metadata_only ceiling strips everything.
  • adapter test exported_prompt_and_reply_become_content_under_the_capture_mode_never_metadata
  • installer tests updated for the new env values; clippy clean on touched crates
  • Owner's machine on 0.2.12: hooks reinstalled, peer switched to messages, sync uploaded
  • CI matrix

🤖 Generated with Claude Code

nullarch and others added 4 commits September 9, 2026 13:05
…sages` profile

The VibeMon product needs the natural language of a session — what the
person asked and what the agent said it was doing — on the server, without
sending commands or tool output. Three pieces:

- The installer configures Claude Code with OTEL_LOG_USER_PROMPTS=1 and
  OTEL_LOG_ASSISTANT_RESPONSES=1 and Codex with log_user_prompt = true.
  Tool arguments and tool content stay off. The adapter stores the prompt of
  a user_prompt record and the reply of an assistant_response record as
  content under the capture mode (never in metadata) and promotes only their
  sizes (x_otel_prompt_chars / x_otel_response_chars).
- A new sync profile, `messages`: semantic plus the conversation. The
  uploader keeps content.prompt / content.message of prompt_submitted,
  turn_stopped, agent_message and the OTel prompt/reply records, redacts
  secrets, and strips every other event to metadata. `attempt sync profile
  <name>` switches a configured peer without re-pairing; sync.json gains
  send_messages.
- The migration installers default to --profile messages, create new
  databases as local_semantic, and raise an existing metadata_only database
  to local_semantic (--metadata-only opts out). The Fly deployment's
  ceiling becomes local_semantic so the text is persisted for tenants that
  send it.

Version 0.2.12. Tests: capture 116, adapters 8 (a new prompt/reply content
test), CLI suites; clippy clean.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…rips tools

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@nullarch
nullarch merged commit 438c5ee into main Sep 9, 2026
17 of 18 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant