Commit Graph
100 Commits
Author SHA1 Message Date
Chris Beck 4584ae23bd make concurrent map able to give default values which depend on key
this allows to uphold more complex invariants
2025-12-15 10:26:49 -07:00
Chris Beck 6932407872 simplify code and improve code comments 2025-12-15 10:10:40 -07:00
Chris Beck 4061a9f4bf fixup code comments 2025-12-15 09:12:14 -07:00
Chris Beck 77ec9344a2 improve error hanlding in assistant worker 2025-12-14 22:00:08 -07:00
Chris Beck 7587d11ff4 claude - move api types to their own module, simplify message buffer computations 2025-12-14 21:09:22 -07:00
Chris Beck c66228f398 refactor claude message buffer 2025-12-14 12:20:29 -07:00
Chris Beck 4a1b1ecafb make admin compact requests cancellable as well 2025-12-14 12:11:43 -07:00
Chris Beck e9daba0d7c improve assistant behavior when the service is shutting down 2025-12-14 12:04:36 -07:00
Chris Beck d025b8f587 use cancellation token in claude API as well 2025-12-14 11:48:46 -07:00
Chris Beck 14a56cecfe fixup cancellation in assistant worker 2025-12-14 11:41:39 -07:00
Chris Beck ceb988dc07 abstract the claude module out of the signal-gateway and put interface and ipml in their own crates 2025-12-14 11:22:28 -07:00
Chris Beck 2682ee8ee6 split out log-ingest modules to their own crate 2025-12-13 21:40:30 -07:00
Chris Beck 2ecc614bb5 fix code comment 2025-12-13 21:06:35 -07:00
Chris Beck 51657dbd38 cargo fmt, allow rate-limiting requests to claude 2025-12-13 21:02:17 -07:00
Chris Beck fc7062d976 add readme 2025-12-13 17:14:53 -07:00
Chris Beck f3729ddea9 update code comment 2025-12-12 17:02:16 -07:00
Chris Beck b0496fbc9a integrat the app-code plugin to the signal-gateway-bin 2025-12-09 11:43:25 -07:00
Chris Beck 6c01a5f59f make sha callback async, change caching discipline for tarball 2025-12-09 11:28:13 -07:00
Chris Beck f4cf5b50bf add signal-gateway app-code crate 2025-12-09 11:01:42 -07:00
Chris Beck 775c66b287 use builder pattern with gateway 2025-12-09 09:38:23 -07:00
Chris Beck 6ac6beb9be log the summary when using claude-debug 2025-12-09 09:10:40 -07:00
Chris Beck 4a143bd6d2 make prompt caching optional, run clippy 2025-12-09 09:02:08 -07:00
Chris Beck 19b8561b9b fixup previous 2025-12-09 08:33:51 -07:00
Chris Beck 9d785d21b4 add mvp compaction implementation 2025-12-08 23:40:05 -07:00
Chris Beck 9482b37d6a fix bugs in our usage of claude api 2025-12-08 23:21:26 -07:00
Chris Beck d20fda07b8 add support for multiple system prompt files 2025-12-08 22:54:27 -07:00
Chris Beck 6c6323c6ae add request_debug command 2025-12-08 20:19:04 -07:00
Chris Beck 9aefc03b73 rename claude-stop and claude-compact commands 2025-12-08 20:06:53 -07:00
Chris Beck 99fceda25e rename claudeapi to claudeagent 2025-12-08 20:04:48 -07:00
Chris Beck e280b4118e add a plot tool to claude 2025-12-08 20:03:31 -07:00
Chris Beck 429c4beef9 make claude return AdminMessageResponse instead of string, so it can return files potentially 2025-12-08 19:10:07 -07:00
Chris Beck 4cf90fe61e cargo clippy --fix 2025-12-08 19:07:12 -07:00
Chris Beck f49916811b cargo fmt 2025-12-08 19:06:51 -07:00
Chris Beck c78c2f388e add SourcedAdminMessageResponse to cleanup how AdminMessageResponse is used 2025-12-08 19:06:16 -07:00
Chris Beck 9c7275ed79 simplify configuration, no more subcommands 2025-12-08 18:59:22 -07:00
Chris Beck 996ed1ed0f add and use command-router to simplify the way signal-gateway processes admin commands 2025-12-08 18:39:11 -07:00
Chris Beck 84e2d57688 expose signal chat history to claude as message history
with role attributions, and a new compaction command which just
discards the message buffer.
2025-12-08 00:43:50 -07:00
Chris Beck 9826bbf8c2 move messages schema types to worker 2025-12-07 21:54:44 -07:00
Chris Beck facc288d6a workaround parser limitations for /c command 2025-12-07 21:21:08 -07:00
Chris Beck 0862e3ce38 add support for requesting claude to stop what it's doing if it's taking too long 2025-12-07 20:57:35 -07:00
Chris Beck 63e3eb213c split claude api into an api and a background worker 2025-12-07 20:31:44 -07:00
Chris Beck b8f9030d94 cargo fmt 2025-12-07 19:53:42 -07:00
Chris Beck 70d09ffc98 make claude hold a weak reference back to gateway 2025-12-07 16:28:00 -07:00
Chris Beck 739075f2e2 make Gateway::new return Arc::Self 2025-12-07 16:06:52 -07:00
Chris Beck 6633768df6 add claude module 2025-12-07 15:59:46 -07:00
Chris Beck 0b244b8e38 add regex support 2025-12-07 00:24:39 -07:00
Chris Beck ba69f5d592 add debug supressions feature 2025-12-07 00:17:35 -07:00
Chris Beck 36511d2fd1 re-order fields of log handler config to improve debugging output 2025-12-07 00:07:53 -07:00
Chris Beck 13b6490525 improve debug formatting of config 2025-12-07 00:02:45 -07:00
Chris Beck 35f8ff766d stronger parsing for signal trust set 2025-12-06 23:16:23 -07:00
Chris Beck c2ad134393 add support for toml file parsing, tweak some configuration names 2025-12-06 22:53:08 -07:00
Chris Beck df1616daeb fix code position 2025-12-06 21:11:07 -07:00
Chris Beck 0bc1329fcf fixups after deployment 2025-12-06 21:03:48 -07:00
Chris Beck 0cca1f8da3 remove admin-netcat thing 2025-12-06 20:43:49 -07:00
Chris Beck c62bac4a1d refactor suppression reason overall 2025-12-06 19:47:58 -07:00
Chris Beck 12f0c99ef9 factor out common loop that tests a sequence of limiters 2025-12-06 19:45:33 -07:00
Chris Beck 225b308a26 factor out unnecessary inputs to log handler (ts_sec) 2025-12-06 19:36:52 -07:00
Chris Beck 63ab1a62d3 rejigger collected_at timestamp 2025-12-06 19:32:55 -07:00
Chris Beck 77a0767db5 add CollectedAt to message, get rid of backfilling timestamps with Utc::now() 2025-12-06 19:30:01 -07:00
Chris Beck 7791af162c cargo fmt, fix limiter set evaluate semantics 2025-12-06 19:24:39 -07:00
Chris Beck 20604b1d08 fixups to signal trust set update set 2025-12-06 10:46:46 -07:00
Chris Beck b0d1c1bd92 refactor signal trust set API 2025-12-06 10:21:11 -07:00
Chris Beck f8e214cc8d refactor to move functions onto signal-trust-set 2025-12-06 10:18:01 -07:00
Chris Beck 133a367a36 rename struct to signal trust set 2025-12-06 10:12:33 -07:00
Chris Beck 6ed38cb1fd refactor admin_signal_uuids container 2025-12-06 10:09:54 -07:00
Chris Beck 5779edb610 rename admin safety numbers to admin_signal_uuids 2025-12-06 09:57:40 -07:00
Chris Beck ac6beaf8e4 add conf-test on top-level config 2025-12-06 09:52:55 -07:00
Chris Beck 393d68e5ef remove unnecessary dependencies, put prefix on log handler when flattening 2025-12-06 09:50:33 -07:00
Chris Beck 64bc606201 enable conf serde and test the toml format with our current schema 2025-12-06 03:26:30 -07:00
Chris Beck 0de84bcd60 factor out last async mutex 2025-12-06 02:53:10 -07:00
Chris Beck ae3761bffe make rate limiters thread-safe with fine-grained locks, remove hard locks at higher levels 2025-12-06 02:34:36 -07:00
Chris Beck 9b47963f16 improve the multi rate limiter for correctness (tracking evicted elements) 2025-12-06 02:11:41 -07:00
Chris Beck fed5f7e468 make RateThreshold always >= or < than, and make multiratelimiter respect this
require comparators to be explicit
2025-12-06 00:13:42 -07:00
Chris Beck 9d650c3df2 source locaiton rate limiter is a set of multirate limiters 2025-12-05 23:59:39 -07:00
Chris Beck 4e9704def2 flatten logfilter into route 2025-12-05 23:51:05 -07:00
Chris Beck 928a1aba78 simplify an import 2025-12-05 23:47:31 -07:00
Chris Beck 4f84cacc7b rejigger concurrent map api into lazy map 2025-12-05 23:39:45 -07:00
Chris Beck d2d9754df0 commit a rustfmt toml and merge imports 2025-12-05 23:22:16 -07:00
Chris Beck 5a12cd1bde move rate_limiter_set to its own module 2025-12-05 23:16:33 -07:00
Chris Beck 761877e35e move rate limiter module to top-level 2025-12-05 23:12:24 -07:00
Chris Beck def80bfe64 rearrange code in route.rs for readability 2025-12-05 22:46:15 -07:00
Chris Beck 107bd2a2de improve prefix used with log alerts (summary is only the offending log message) 2025-12-05 22:24:17 -07:00
Chris Beck 04ad4035f9 alternative summary specification 2025-12-05 22:16:31 -07:00
Chris Beck 7a163f3962 rename verified signal message to admin message, reformat 2025-12-05 22:07:22 -07:00
Chris Beck 010a5a9336 rename AdminMessage to SignalAlert message which is less confusing 2025-12-05 22:05:58 -07:00
Chris Beck f3b66541ed simplify log_format code 2025-12-05 21:56:47 -07:00
Chris Beck 3b5e191d75 avoid allocations when formatting log messages, factor out humantime crate 2025-12-05 21:43:26 -07:00
Chris Beck aaeb5b3b28 pre-allocate strings when formatting logs 2025-12-05 20:51:04 -07:00
Chris Beck f969c20e71 move log-message formatting code to its own module 2025-12-05 20:42:22 -07:00
Chris Beck 166aaaf167 respect destination override for outbound messages 2025-12-05 20:35:16 -07:00
Chris Beck 74baa63f50 simplify code that locks log buffer for reading 2025-12-05 20:27:55 -07:00
Chris Beck 3c88ba80a5 rename read_all -> with_read_lock 2025-12-05 20:07:43 -07:00
Chris Beck 2085064d89 rename module jsonrpc to signal_jsonrpc 2025-12-05 19:46:22 -07:00
Chris Beck 1b0a2717e8 move circular_buffer module to root level 2025-12-05 19:43:46 -07:00
Chris Beck 35b274bbd3 clippy 2025-12-05 19:42:30 -07:00
Chris Beck f899d391b9 introduce log_buffer type to cleanup concurrency & correctness
also cargo fmt
2025-12-05 19:40:33 -07:00
Chris Beck a214b8e474 introduce and use new route framework
in this change:

* new "concurrent map" API using RwLock<HashMap> optimized for
  frequent reads.
* we no longer have a concurrent map of log handlers, we instead
  have a log handler containing a concurrent map from origins to
  circular buffers
* we have a general concept of a "Limit" now which replaces AlertRule
* A route consists of a filter, plus any number of limits, which
  can be per-origin limits or global limits
* The set of routes is disjunctive, while the filters and limits are conjunctive
* Limits can also apply per source location
* Different types of rate limiters are unified under the "Limiter"
  abstraction
* The log handler also has a set of overall limiters that can be applied
  at the end
* This means we can relatively easily express disjunctions of conjunctions

I think the route structure will also be relatively easy to express in toml
2025-12-05 19:10:37 -07:00
Chris Beck ffa1246e51 listen on udp and tcp for json logs as well 2025-12-05 15:12:20 -07:00
Chris Beck a42aad48f4 also allow json logs to be sent over a TCP stream, with multiple messages using json_lines ofrmat for framing 2025-12-05 14:49:21 -07:00
Chris Beck 0a5023ce6b fixup to syslog parsing around EOF handling, add tests 2025-12-05 14:31:02 -07:00