kamilkrzywda
c5a2815c01
Add OpenAI-compatible LLM client service (v0.19.0)
...
CI / build + unit (pull_request) Successful in 1m14s
LlmService wraps the local OpenAI-compatible server (default
http://192.168.1.70:1111/v1 , no auth) with native fetch only — no new
dependencies. listModels() -> data[].id; chat(messages, opts?) ->
choices[0].message.content (non-2xx throws with status + body snippet);
summarize(text) = chat() with a concise-summary system prompt.
Env: LLM_API_BASE / LLM_MODEL (qwen3.8-27b) / LLM_TIMEOUT_MS (60000,
AbortSignal.timeout). Plain feature module wired into app.module.ts;
docs synced (AGENTS.md, README env list).
2026-09-25 18:07:21 +00:00
kamilkrzywda
931b42bb1e
Add channel-2 #command auto-responder (v0.18.0)
...
CI / build + unit (pull_request) Successful in 41s
Event-driven CommandService dispatches exact case-sensitive #command
matches on COMMAND_CHANNEL (default 2) through a single-registration-point
registry; first command #ping -> #pong!. Replies ride COMMAND_CHANNEL:
directed DM back to the sender when present, else broadcast. Failing
handler/send only logs a warn.
DI: CommandModule's factory injects MeshService and attaches itself via
MeshService.attachCommands() — a constructor-level cycle leaves one side
null in NestJS 12's injector (verified), so no forwardRef is used.
Tests 106 -> 121; docs synced (AGENTS.md, MESHTASTIC.md, README).
2026-09-25 17:11:52 +00:00
kamilkrzywda
4ae932befe
mesh: MESH_NOTIFY_CHANNEL as comma-separated list + ch0 DM-only notify gate; v0.17.0
CI / build + unit (pull_request) Successful in 1m8s
2026-09-25 16:18:07 +00:00
kamilkrzywda
b7b2044d84
mesh: GET /api/forwarded — last 100 messages forwarded to opencode; v0.16.0 docs
CI / build + unit (pull_request) Successful in 41s
2026-09-25 15:51:43 +00:00
kamilkrzywda
bd18bdfd8a
docs: v0.15.0 changelog, README/AGENTS respond + notifier wrapper updates, version bump
2026-09-25 15:39:52 +00:00
kamilkrzywda
5eb1a79e70
mesh: replace notify webhook with in-process opencode notifier; drop forwarder service
2026-09-25 14:14:37 +00:00
kamilkrzywda
15d93ec2a4
Optional replyId on send (API + MCP) — protocol-level threaded replies ( #31 )
CI / build + unit (push) Successful in 33s
2026-09-25 13:53:47 +02:00
kamilkrzywda
5999159e17
Forwarder: resolve opencode workspace/session dynamically per request ( #28 )
CI / build + unit (push) Successful in 32s
2026-09-25 12:24:39 +02:00
kamilkrzywda
36021ec2e8
Retry notify webhook POST with backoff (2 s / 10 s / 30 s) before dropping ( #27 )
CI / build + unit (push) Successful in 1m2s
2026-09-25 11:48:39 +02:00
kamilkrzywda
dca0dfa894
Run notify forwarder as a compose service (host networking, restart policy) ( #26 )
CI / build + unit (push) Successful in 19s
2026-09-25 10:49:51 +02:00
kamilkrzywda
261f7ed18c
Hourly cron weather report for Lublin (Open-Meteo) broadcast on mesh ( #24 )
CI / build + unit (push) Successful in 1m5s
2026-09-25 09:48:03 +02:00
kamilkrzywda
d3d1913b83
Self-echo filter for notify webhook (skip own-node messages) ( #22 )
CI / build + unit (push) Successful in 43s
2026-09-25 08:51:03 +02:00
kamilkrzywda
3d0e369230
Notify webhook also fires for injected messages (channel match) + compose env passthroughs ( #21 )
CI / build + unit (push) Successful in 35s
2026-09-25 03:56:53 +02:00
kamilkrzywda
024dabda97
Outbound notification webhook (MESH_NOTIFY_URL) on RX text — issue #17 ( #20 )
CI / build + unit (push) Successful in 36s
2026-09-25 03:35:50 +02:00
kamilkrzywda
74f3080626
Persist message history to SQLite with 1s poller ( #15 ) ( #19 )
CI / build + unit (push) Successful in 1m4s
2026-09-25 02:46:17 +02:00
kamilkrzywda
756086d107
Inbox injection endpoint: POST /api/messages + MCP inject_message ( #12 ) ( #18 )
CI / build + unit (push) Successful in 1m14s
2026-09-25 01:51:50 +02:00
kamilkrzywda
0571c7095e
Telemetry stream: GET /api/telemetry + MCP get_telemetry ( #16 )
CI / build + unit (push) Successful in 21s
2026-09-24 23:56:11 +02:00
kamilkrzywda
4beaa377c4
Device info endpoint + richer node summaries (GET /api/device, MCP device_info) ( #13 )
CI / build + unit (push) Successful in 36s
2026-09-24 22:46:40 +02:00
kamilkrzywda
b31fb35464
MCP server at POST /mcp (official SDK, stateless Streamable HTTP) ( #11 )
CI / build + unit (push) Successful in 1m6s
2026-09-24 20:39:45 +02:00
kamilkrzywda
108aa400d3
Publish on 'test' channel (index 3) by default ( #10 )
CI / build + unit (push) Successful in 34s
2026-09-24 19:44:11 +02:00
kamilkrzywda
f640f6658c
Send to by node name or broadcast sentinel (GET-free resolution via node DB) ( #9 )
CI / build + unit (push) Successful in 33s
2026-09-24 16:47:51 +02:00
kamilkrzywda
57ad27d66f
Message history with delivery tracking (GET /api/messages) ( #8 )
CI / build + unit (push) Successful in 32s
2026-09-24 16:19:32 +02:00
kamilkrzywda
5292303786
Node database: collect nodes during sync, expose GET /api/nodes ( #7 )
CI / build + unit (push) Successful in 39s
2026-09-24 15:37:03 +02:00
kamilkrzywda
adfbc9800b
Send want_config_id on connect to trigger initial sync ( #6 )
...
CI / build + unit (push) Successful in 39s
Send want_config_id on connect to trigger initial sync (#6 )
Firmware only streams myInfo/channels/configComplete after receiving a
ToRadio with want_config_id — the service previously wrote nothing on
connect, so /api/channels stayed [] and myNodeNum null. v0.1.4.
2026-09-23 22:42:03 +02:00
kamilkrzywda
3062f40899
feat: pin sends to testowy channel (index 2), never primary (v0.1.3) ( #5 )
...
CI / build + unit (push) Successful in 36s
feat: pin sends to testowy channel (index 2), never primary (v0.1.3)
2026-09-23 22:06:01 +02:00
kamilkrzywda
22a209e654
fix: bridge port is 4403, not 4003 (v0.1.1) ( #3 )
...
fix: bridge port is 4403, not 4003 (v0.1.1)
2026-09-23 21:40:36 +02:00
kamilkrzywda
75a10c195f
feat: /api/channels endpoint, /api namespace, Scalar at root (v0.1.0) ( #2 )
...
feat: /api/channels endpoint, /api namespace, Scalar at root (v0.1.0) — closes #1
2026-09-23 21:05:22 +02:00
kamilkrzywda
83e46b8f07
Initial commit: NestJS meshtastic bridge bot
2026-09-23 17:36:11 +00:00