Commit Graph

71 Commits

Author SHA1 Message Date
William Valentin f27aabae3b Improve local service checks and web search tooling 2026-02-22 22:12:44 -08:00
William Valentin 3d59e5ea9d Add localhost->127.0.0.1 fallback for transcription fetch 2026-02-22 20:26:38 -08:00
William Valentin ba6abfb078 feat: add brave search container and toolset 2026-02-22 20:12:54 -08:00
William Valentin 487f26e36d Harden audio transcription fetch path with retries and timeout 2026-02-22 19:54:58 -08:00
William Valentin db4e52dd7e Harden audio transcription arg hydration and add rewrite audit event 2026-02-22 18:56:22 -08:00
William Valentin 44c7409a20 feat(councils): add preflight, schema-driven outputs, and artifact reporting 2026-02-22 15:56:30 -08:00
William Valentin 7c121b82c6 feat(councils-ui): add on-demand council conversations panel and model config controls 2026-02-21 11:26:04 -08:00
William Valentin bcb7e7b658 feat(councils): add deterministic councils engine and council.run tool 2026-02-21 10:49:14 -08:00
William Valentin d4f4be068c fix(minio): support mc_path and harden sync against transient objects 2026-02-19 13:18:20 -08:00
William Valentin 2c3a00f6dd Improve in-flight cancel latency via run abort signal propagation 2026-02-19 12:24:39 -08:00
William Valentin b0ae5f638b feat(system-info): improve human-readable snapshot formatting 2026-02-18 18:06:46 -08:00
William Valentin 9de52b7d93 feat(system-info): include disk usage in health output 2026-02-18 18:04:35 -08:00
William Valentin f34a974210 feat: add session-scoped workflow approval gate commands 2026-02-18 10:35:42 -08:00
William Valentin 540f6780e6 feat(safety): gate sensitive tools behind elevation and immutable denylist 2026-02-17 23:51:04 -08:00
William Valentin 9a2f1e2bb2 chore: checkpoint browser tooling and routing updates 2026-02-17 15:18:37 -08:00
William Valentin 8394086446 Wire agent.delegate into TUI tool registry 2026-02-17 11:03:55 -08:00
William Valentin 776b47f80f feat: wire agent.delegate tool with sub-agent configs
- Export createAgentDelegateTool through builtin/index.ts → tools/index.ts
- Register agent.delegate in routing.ts with lazy orchestrator pattern
- Add agent.delegate + agents.list to messaging and coding policy profiles
- Add group:agents tool group to policy.ts
- Add research/code/comms agent config examples to default.yaml
- Add research/code/comms agent configs to user config.yaml
- Add 11 tests for agent-delegate tool (all pass)
- Typecheck clean, no regressions
2026-02-17 10:28:29 -08:00
William Valentin 0548ab3833 feat(tools): add docx extraction for minio ingestion 2026-02-16 14:45:45 -08:00
William Valentin e8a785b61f feat(tools): add pdf extraction for minio ingestion 2026-02-16 14:45:45 -08:00
William Valentin 63df791b26 feat(tools): add kubernetes homelab awareness tools 2026-02-16 14:45:45 -08:00
William Valentin 22f225998f feat(tools): add minio prefix sync into memory 2026-02-16 14:45:45 -08:00
William Valentin 0be93c20b5 feat(tools): add minio ingestion into memory namespaces 2026-02-16 14:45:45 -08:00
William Valentin 93621bbe6e feat(analytics): add top tools and topics to session analytics 2026-02-16 14:45:45 -08:00
William Valentin 426145386f feat(tools): add minio.share upload and presigned link tool 2026-02-16 14:45:45 -08:00
William Valentin 56854f04bd feat(automation): add timezone-safe daily briefing dedupe 2026-02-16 14:45:45 -08:00
William Valentin 83b8e38b11 feat(runtime): add talk mode and capture tools 2026-02-16 10:17:24 -08:00
William Valentin ae70818ec1 fix: resolve strict typecheck fallout in setup, routing, and tests 2026-02-15 23:22:05 -08:00
William Valentin 948d4ac6d8 chore(lint): burn down remaining warnings to zero 2026-02-15 23:14:21 -08:00
William Valentin 92da407e22 audit follow-up: trim image-analyze test lint warnings 2026-02-15 22:54:36 -08:00
William Valentin 021435ac27 test(lint): reduce warning debt in selected test suites 2026-02-15 22:31:47 -08:00
William Valentin 46538e71a8 chore(lint): restore zero-error eslint baseline 2026-02-15 22:25:29 -08:00
William Valentin 2eccd3e8eb test(tools): verify timeout abort prevents post-timeout side effects 2026-02-15 22:17:49 -08:00
William Valentin b4006e91ff feat(tools): extend cancellation to browser, web, and process tools 2026-02-15 22:12:03 -08:00
William Valentin 2cdfb66071 feat(tools): propagate timeout abort signals to tool execution 2026-02-15 22:05:43 -08:00
William Valentin 4cdad8eee9 fix(tools): clear timeout timers and update audit state 2026-02-15 21:44:40 -08:00
William Valentin 81c97a9df1 feat(memory): add experimental qmd search backend 2026-02-15 19:33:43 -08:00
William Valentin ab89378fce feat(security): enforce elevated mode and sandbox execution 2026-02-15 17:02:05 -08:00
William Valentin 735f14d0b1 feat(security): add /elevate command and audit events 2026-02-15 16:56:49 -08:00
William Valentin 3451df41b9 feat(tools): enforce skill capabilities and secret scopes 2026-02-15 10:16:51 -08:00
William Valentin 955b9e28e0 feat: add OpenAI OAuth, strict model overrides, and Gmail pull mode 2026-02-13 14:55:40 -08:00
William Valentin 9f81c01603 feat(session): persist model tier overrides per session
Store per-session config in SQLite and route /model and /reset through command fast-paths so channel sessions keep independent model selection across reconnects and restarts.
2026-02-13 01:04:26 -08:00
William Valentin 90ce622080 feat(policy): enforce truthfulness and autonomy guardrails
Add runtime truthfulness modes and autonomy-level tool gating with audit metadata for overrides/denials.

Wire policy through prompt assembly, tool execution context, and daemon/gateway agent paths; update tests and planning state for Phase 3 PR #2 completion.
2026-02-12 16:06:45 -08:00
William Valentin 0b44adbaea fix(audio): add SSRF protection, MIME type fix, and tests for audio-transcribe tool
- Add URL validation blocking localhost, private IPs, and non-http protocols
- Use response Content-Type header instead of hardcoded audio/wav for URL downloads
- Add 25 tests covering validation, SSRF, config errors, transcription paths, and error handling

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 21:57:45 -08:00
William Valentin a875bcc4ae feat(audio): add audio.transcribe tool with Whisper-compatible API support
- Add createAudioTranscribeTool with OpenAI/Groq/Ollama/llama.cpp provider support
- Refactor audio config schema to nested audio.enabled + audio.provider structure
- Move audio tool registration to initTools() for conditional enablement
- Fix duplication bug in audio-transcribe.ts URL download handler
- Support base64 data and URL-based audio input with format detection
2026-02-11 18:13:19 -08:00
William Valentin d62e836b5d feat(audit): Add core audit logging infrastructure
- Add AuditLogger class with rotation support
- Add audit configuration to config schema
- Instrument tool execution with full audit logging
- Instrument session lifecycle (create, message, delete, transfer, compact)
- Add audit logger initialization in daemon
- Add cron scheduler audit logging

Audit events captured:
- tool.start/success/error/denied
- session.create/message/delete/transfer/compact
- cron.trigger/add/remove

All logs go to ~/.local/share/flynn/audit.log (JSON lines)
with rotation (10MB files, 30-day retention)
2026-02-11 15:58:07 -08:00
William Valentin 6090508bad style: auto-fix ESLint issues (curly braces and formatting)
- Add curly braces to all if/else/for/while statements
- Fix indentation and trailing spaces
- Auto-fixed 372 linting errors using eslint --fix
- Remaining issues are warnings only (non-null assertions, explicit any types)
2026-02-11 10:30:24 -08:00
William Valentin 5270234bbb feat: improve tool usage guidance in SOUL.md and add cron.create/cron.delete tools
- SOUL.md: list all available tools (web.search, memory.*, cron.*, etc.)
  and add Tool Usage Rules section enforcing 'act, don't narrate'
- cron.ts: add getJob(), addJob(), removeJob() to CronScheduler for
  runtime (ephemeral) cron job management
- cron tools: add cron.create and cron.delete tools, enhance cron.list
  to show schedule/output/message details
- policy.ts: add cron tools to messaging and coding profiles, add
  group:cron to tool groups

Fixes issue where models would narrate tool intent ('let me search...')
then stop without actually calling tools.
2026-02-11 09:32:36 -08:00
William Valentin eea7ca62a8 chore: increase GmailWatcher default poll interval from 60s to 300s 2026-02-11 08:43:48 -08:00
William Valentin 4ce8e81c01 fix(gmail): sanitize HTML entities and tags in tool output
Gmail API returns snippets with HTML entities (&amp;, &#39;, <br>, etc.)
that leaked into LLM responses as raw HTML. Added shared sanitizeHtml()
utility in src/utils/html.ts and applied it to gmail tool snippets,
HTML body fallback, and gmail watcher snippets.
2026-02-10 16:30:14 -08:00
William Valentin f204ff1dd7 feat(tools): add Google Docs, Drive, and Tasks read-only tools
Add three new Google service integrations following the established
Gmail/GCal pattern:

- Google Docs (docs.list, docs.search, docs.read): list, search, and
  read document content as plain text via Docs + Drive APIs
- Google Drive (drive.list, drive.search, drive.read): list, search,
  and read files with export support for Workspace files (Docs→text,
  Sheets→CSV, Slides→text)
- Google Tasks (tasks.lists, tasks.list): list task lists and tasks
  with status, due dates, and notes

Each service has its own config section, OAuth auth command, tool
policy group, and test suite (53 new tests). The setup wizard now
offers to configure all Google services together and run OAuth auth
flows automatically after saving config.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 12:59:15 -08:00