homaruscc 0.2.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/README.md +30 -9
  2. package/dashboard/dist/assets/index-CIzoeO8A.js +52 -0
  3. package/dashboard/dist/favicon.ico +0 -0
  4. package/dashboard/dist/favicon.png +0 -0
  5. package/dashboard/dist/index.html +15 -0
  6. package/dist/agent-registry.d.ts +9 -12
  7. package/dist/agent-registry.d.ts.map +1 -1
  8. package/dist/agent-registry.js +44 -113
  9. package/dist/agent-registry.js.map +1 -1
  10. package/dist/claude-code-registrar.d.ts +10 -0
  11. package/dist/claude-code-registrar.d.ts.map +1 -0
  12. package/dist/claude-code-registrar.js +71 -0
  13. package/dist/claude-code-registrar.js.map +1 -0
  14. package/dist/cli.d.ts +3 -0
  15. package/dist/cli.d.ts.map +1 -0
  16. package/dist/cli.js +28 -0
  17. package/dist/cli.js.map +1 -0
  18. package/dist/compaction-manager.d.ts +24 -0
  19. package/dist/compaction-manager.d.ts.map +1 -1
  20. package/dist/compaction-manager.js +88 -7
  21. package/dist/compaction-manager.js.map +1 -1
  22. package/dist/dashboard-server.d.ts.map +1 -1
  23. package/dist/dashboard-server.js +348 -4
  24. package/dist/dashboard-server.js.map +1 -1
  25. package/dist/homaruscc.d.ts.map +1 -1
  26. package/dist/homaruscc.js +1 -2
  27. package/dist/homaruscc.js.map +1 -1
  28. package/dist/mcp-tools.d.ts.map +1 -1
  29. package/dist/mcp-tools.js +28 -0
  30. package/dist/mcp-tools.js.map +1 -1
  31. package/dist/memory-index.js +1 -1
  32. package/dist/memory-index.js.map +1 -1
  33. package/dist/scaffolder.d.ts +16 -0
  34. package/dist/scaffolder.d.ts.map +1 -0
  35. package/dist/scaffolder.js +154 -0
  36. package/dist/scaffolder.js.map +1 -0
  37. package/dist/session-checkpoint.d.ts +3 -0
  38. package/dist/session-checkpoint.d.ts.map +1 -1
  39. package/dist/session-checkpoint.js +24 -0
  40. package/dist/session-checkpoint.js.map +1 -1
  41. package/dist/telegram-adapter.d.ts +6 -0
  42. package/dist/telegram-adapter.d.ts.map +1 -1
  43. package/dist/telegram-adapter.js +151 -3
  44. package/dist/telegram-adapter.js.map +1 -1
  45. package/dist/transcript-logger.d.ts +10 -0
  46. package/dist/transcript-logger.d.ts.map +1 -1
  47. package/dist/transcript-logger.js +4 -0
  48. package/dist/transcript-logger.js.map +1 -1
  49. package/dist/wizard.d.ts +24 -0
  50. package/dist/wizard.d.ts.map +1 -0
  51. package/dist/wizard.js +146 -0
  52. package/dist/wizard.js.map +1 -0
  53. package/package.json +5 -1
package/README.md CHANGED
@@ -154,6 +154,8 @@ Restart Claude Code. HomarUScc's tools will appear automatically. The proxy auto
154
154
  |------|-------------|
155
155
  | `telegram_send` | Send a message to a Telegram chat |
156
156
  | `telegram_read` | Read recent incoming messages |
157
+ | `telegram_typing` | Send a typing indicator |
158
+ | `telegram_react` | React to a message with an emoji |
157
159
  | `memory_search` | Hybrid vector + full-text search over stored content |
158
160
  | `memory_store` | Store and index content for later retrieval |
159
161
  | `timer_schedule` | Schedule cron, interval, or one-shot timers |
@@ -189,6 +191,21 @@ When enabled, the dashboard runs on `http://localhost:3120` with:
189
191
  - Real-time event log via WebSocket
190
192
  - System status panel
191
193
  - Memory search browser
194
+ - CRM (People) — markdown-based contact manager with search, tags, connections, and linked document viewer
195
+ - Kanban — task board synced with the agent's task system
196
+
197
+ The dashboard is responsive — on mobile devices the sidebar collapses into a hamburger menu. Accessible remotely over Tailscale at `http://<your-tailscale-ip>:3120`.
198
+
199
+ ### Apps Platform (planned)
200
+
201
+ The dashboard supports a pluggable apps system. The agent can build mini web apps on request (budget trackers, reading lists, dashboards) that live inside the dashboard UI:
202
+
203
+ - Apps live at `~/.homaruscc/apps/{slug}/` with a manifest, React component, and JSON data store
204
+ - Each app declares hooks (`read`, `write`, `describe`) exposed via a single `app_invoke` MCP tool
205
+ - The agent can query and update app state through hooks — "what's on my reading list?" triggers `app_invoke(slug=reading-list, hook=describe)`
206
+ - Apps are created by the agent via filesystem tools and auto-discovered on manifest scan
207
+
208
+ See `specs/apps-platform.md` and `design/crc-App*.md` for the full design.
192
209
 
193
210
  ### Dashboard Development
194
211
 
@@ -200,14 +217,18 @@ npm run dev # Dev server on :3121, proxies API to :3120
200
217
 
201
218
  ## Runtime Directories
202
219
 
203
- HomarUScc creates runtime data that's gitignored and stays local:
220
+ HomarUScc creates runtime data that's gitignored and stays local. All user data lives under `local/` (one gitignore line):
204
221
 
205
222
  | Directory | Purpose |
206
223
  |-----------|---------|
207
- | `user/context/` | Facts the assistant learns about you |
208
- | `user/corrections/` | Corrections you've made (so it doesn't repeat mistakes) |
209
- | `user/preferences/` | Your stated preferences |
210
- | `system/` | System-level learned knowledge |
224
+ | `local/user/context/` | Facts the assistant learns about you |
225
+ | `local/user/corrections/` | Corrections you've made (so it doesn't repeat mistakes) |
226
+ | `local/user/preferences/` | Your stated preferences |
227
+ | `local/system/` | System-level learned knowledge |
228
+ | `local/crm/` | CRM contact files (markdown + YAML frontmatter, see `crm.example/`) |
229
+ | `local/dreams/` | Dream cycle output (nightly, stored at 0.5x weight) |
230
+ | `local/research/` | Research notes stored by memory system |
231
+ | `local/docs/` | Private documents (outreach drafts, session notes, etc.) |
211
232
  | `~/.homaruscc/memory/` | Vector + FTS search index (SQLite) |
212
233
  | `~/.homaruscc/identity/` | Agent identity files (soul, user, state, preferences, disagreements) |
213
234
  | `~/.homaruscc/journal/` | Daily reflection journal entries (indexed by memory system) |
@@ -234,7 +255,7 @@ The `PreCompact` hook sets a flag on the backend. The next `/api/wait` response
234
255
 
235
256
  Claude Code compresses conversation history when the context window fills up. Without mitigation, the post-compaction agent loses track of what it was doing. HomarUScc handles this with two mechanisms:
236
257
 
237
- **Session checkpoint** — Before compaction, the agent saves its current task context (topic, recent decisions, in-progress work, modified files) to `~/.homaruscc/checkpoint.json` via `POST /api/checkpoint`. After compaction, the post-compact context injection includes this checkpoint so the new instance knows exactly where things left off. The checkpoint is cleared at session end.
258
+ **Session checkpoint** — Before compaction, the agent saves its current task context (topic, recent decisions, in-progress work, modified files, session texture, highlight snippets) to `~/.homaruscc/checkpoint.json` via `POST /api/checkpoint`. After compaction, the post-compact context injection includes this checkpoint so the new instance knows exactly where things left off. The checkpoint is cleared at session end. The `texture` field captures the session's conversational dynamic (e.g., "rapid shipping, playful, terse messages") and `highlights` preserves 2-3 raw exchange snippets that exemplify the vibe — restoring not just _what_ was happening but _how_ it felt.
238
259
 
239
260
  **Delivery watermark** — The server tracks the timestamp of the last event delivered to Claude Code. After compaction, the event loop resumes from the watermark instead of replaying old events. This prevents the "bad loop" problem where a post-compaction agent re-handles messages it already responded to.
240
261
 
@@ -269,7 +290,7 @@ For tasks that would consume significant context (research, multi-file processin
269
290
 
270
291
  Max concurrent agents is configurable via `agents.maxConcurrent` in config (default 3). The agent registry tracks running/completed/failed agents and includes them in post-compaction context so background work isn't lost across compaction boundaries.
271
292
 
272
- **Completion detection:** The backend polls output files of registered agents every 5 seconds. When it detects a completion marker (stable file mtime for 10+ seconds, or `"stop_reason":"end_turn"` in the output), it emits an `agent_completed` event that wakes the main event loop. No manual checking needed — results arrive as events.
293
+ **Completion detection:** Agents signal completion by calling `POST /api/agents/:id/complete` with a result summary. This emits an `agent_completed` event that wakes the main event loop. A 30-minute timeout fallback catches agents that fail to call back. No polling needed — results arrive as events.
273
294
 
274
295
  ## Architecture
275
296
 
@@ -286,13 +307,13 @@ Key source files:
286
307
  | `src/mcp-tools.ts` | MCP tool definitions |
287
308
  | `src/mcp-resources.ts` | MCP resource definitions |
288
309
  | `src/config.ts` | Config loader with env var resolution and hot-reload |
289
- | `src/telegram-adapter.ts` | Telegram long-polling adapter |
310
+ | `src/telegram-adapter.ts` | Telegram long-polling adapter (text, photos, documents, reactions, edits) |
290
311
  | `src/dashboard-server.ts` | Express + WebSocket dashboard server |
291
312
  | `src/dashboard-adapter.ts` | Dashboard channel adapter |
292
313
  | `src/memory-index.ts` | SQLite + sqlite-vec hybrid search with dream-aware scoring |
293
314
  | `src/compaction-manager.ts` | Auto-flush memory before context compaction |
294
315
  | `src/session-checkpoint.ts` | Save/restore task context across compaction |
295
- | `src/agent-registry.ts` | Track background agents with capacity limits |
316
+ | `src/agent-registry.ts` | Track background agents with callback completion and timeout fallback |
296
317
  | `src/transcript-logger.ts` | Session transcript capture and indexing |
297
318
  | `src/identity-manager.ts` | Identity loader (soul.md, user.md, state.md) |
298
319
  | `src/timer-service.ts` | Cron, interval, and one-shot timers |