saravanakumardb1
88cc18549c
feat(cowork-service): H.9 notification + webhook proxy routes
...
Add notification and webhook management routes to cowork-service:
- GET /api/notifications/prefs — get user notification preferences
- PUT /api/notifications/prefs — update user notification preferences
- GET /api/webhooks — list webhook subscriptions
- POST /api/webhooks — create webhook subscription
- DELETE /api/webhooks/:id — delete webhook subscription
- modules/notifications/routes.ts — proxy routes with error handling
- server.ts — register notificationRoutes (6 route modules total)
- server.test.ts — add notification routes mock, update register count to 6
57 tests passing, 9 test files, typecheck clean
2026-04-03 00:00:14 -07:00
saravanakumardb1
cd5483c95b
feat(cowork-service): H.6 usage/budget proxy routes
...
Add usage query routes to cowork-service that proxy to platform-service:
- GET /api/usage/summary — user's aggregated usage with days filter
- POST /api/usage/check-limits — check if user is within plan limits
- modules/usage/types.ts — UsageSummaryQuerySchema, CheckLimitsSchema (Zod)
- modules/usage/routes.ts — proxy routes with error handling
- server.ts — register usageRoutes (5 route modules total)
- server.test.ts — add usage routes mock, update register count to 5
57 tests passing, 9 test files, typecheck clean
2026-04-02 23:58:14 -07:00
saravanakumardb1
dc27ee9f21
feat(cowork-service): H.5 audit proxy routes — dual-source audit queries
...
Add audit query routes to cowork-service that proxy to platform-service:
- GET /api/audit — query audit logs with action/category/days/limit/offset filters
- GET /api/audit/stats — aggregated audit stats
- modules/audit/types.ts — AuditQuerySchema (Zod)
- modules/audit/routes.ts — proxy routes with error handling
- server.ts — register auditRoutes
- server.test.ts — add audit routes mock, update register count to 4
57 tests passing, 9 test files, typecheck clean
2026-04-02 23:54:42 -07:00
saravanakumardb1
ca7c3e571e
fix(cowork-service): audit H.7 — fix LLM timeout, harden test mocks, add Ollama config
...
Bug fixes from systematic review of H.7 LLM router wiring:
- lib/llm-router.ts: remove RUST_RUNTIME_TIMEOUT_MS (300s IPC timeout) override
— let LlmRouter use its built-in 30s default, appropriate for cloud API calls
- server.test.ts: add debug/error to appMock.log — prevents fragile failures
if any startup path hits those log levels
- server.test.ts: add OLLAMA_URL + OLLAMA_MODELS to config mock
New feature:
- config.ts: add OLLAMA_URL + OLLAMA_MODELS env vars for local Ollama support
- server.ts: wire Ollama env vars into initLlmRouter() — set
OLLAMA_MODELS=model1,model2 to auto-add local Ollama as a provider
57 tests passing, 9 test files, typecheck clean
2026-04-02 23:37:50 -07:00
saravanakumardb1
f542160784
feat(cowork-service): H.7 — wire @bytelyst/llm-router for multi-model routing
...
Added LLM routing module to cowork-service:
- lib/llm-router.ts — singleton LlmRouter with cloud + local Ollama support
- modules/llm/types.ts — Zod request schemas
- modules/llm/routes.ts — POST /api/llm/chat, GET /api/llm/providers, GET /api/llm/health
- All endpoints gated by llm_multi_model_enabled feature flag
- Best-effort init: service works without API keys (router stays uninitialized)
- 8 new tests (routes), server test updated for 3 route modules
- 57 total tests passing, typecheck clean
2026-04-02 23:10:07 -07:00
saravanakumardb1
53c3565874
fix(cowork-service): audit flush field name mismatch + server test mock gap
...
BUG: flush-scheduler.ts flushAudit() read 'events' from IPC response but
Rust handle_flush_audit() returns { count, entries }. Audit events were
silently lost (always empty array). Fixed to read 'entries'.
Also fixed:
- server.test.ts: added missing flush-scheduler.js mock (new import in server.ts)
- feature-flags.ts: doc comment '12 flags' → '13 flags'
- flush-scheduler.test.ts: mock data aligned to Rust response shape
49 tests passing, 8 test files, typecheck clean.
2026-04-02 23:02:38 -07:00
saravanakumardb1
9fc5af5b2b
test(cowork-service): platform-client + flush-scheduler tests (17 new tests)
...
New test files:
- lib/platform-client.test.ts (8 tests): audit posting, telemetry batch,
usage records, flag polling, error handling, query params
- lib/flush-scheduler.test.ts (9 tests): lifecycle start/stop, flushAll with
IPC drain → platform-service posting, IPC error handling, empty responses,
pollAndSyncFlags with local registry + IPC update, failure graceful handling
49 tests passing (was 32), 8 test files, typecheck clean.
2026-04-02 22:53:04 -07:00
saravanakumardb1
f8f3cdc242
feat(cowork-service): platform-client + flush scheduler (H.4-H.8 TS wiring)
...
New files:
- lib/platform-client.ts — REST client for platform-service endpoints:
POST /audit, POST /telemetry/events, POST /usage, GET /flags/poll
- lib/flush-scheduler.ts — periodic drain of IPC buffers → platform-service:
- flushAll(): drains audit, telemetry, budget from Rust IPC → REST
- pollAndSyncFlags(): GET /flags/poll → update TS registry + push to IPC
- Singleton pattern with start/stop/finalFlush lifecycle
- All operations best-effort (logged, never crash service)
Updated server.ts:
- Starts flush scheduler after IPC bridge connects
- finalFlush() before shutdown (drain remaining events)
32 tests passing, typecheck clean.
2026-04-02 22:50:00 -07:00
saravanakumardb1
ff433e172d
test(cowork-service): add product-config, feature-flags, health routes tests
...
New test files (3):
- lib/product-config.test.ts — 3 tests: PRODUCT_ID, productConfig fields, consistency
- lib/feature-flags.test.ts — 3 tests: 13 flag names match seed.ts, defaults correct, setFlag override
- modules/health/routes.test.ts — 2 tests: degraded when IPC disconnected, connected status reporting
32 tests passing (was 24), 6 test files, typecheck clean.
2026-04-02 22:22:59 -07:00
saravanakumardb1
2191427605
fix(cowork-service): 3 bugs — flag names, IPC call guard, health status
...
BUG 1: feature-flags.ts had 3 wrong flag names + missing 3 from seed.ts
- Removed: browser_extension_enabled, institutional_knowledge_enabled
- Renamed: connectors_enabled → mcp_connectors_enabled
- Added: llm_multi_model_enabled, telemetry_enabled, platform_auth_required
- Fixed defaults to match seed.ts (marketplace_enabled=true, dispatch_api_enabled=true)
- Now 13 flags exactly matching platform-service/src/modules/flags/seed.ts
BUG 2: ipc-bridge.ts call() had 'initialize' exemption that allowed null deref
- If call('initialize') was invoked externally without start(), the guard
passed but this.child!.stdin!.write() would crash with null dereference
- During normal start(), child.stdin.writable is true so no exemption needed
- Removed the method !== 'initialize' exemption
BUG 3: health routes didn't factor IPC bridge into overall health status
- allOk only checked platform-service reachability
- Now allOk = depsOk && ipcConnected — service reports 503 when bridge is down
- IPC bridge disconnection makes health 'degraded' (correct — fallback mode works)
24 tests passing, typecheck clean.
2026-04-02 22:20:52 -07:00
saravanakumardb1
19674c7ef7
feat(cowork-service): ecosystem alignment + IPC bridge to Rust runtime
...
ECOSYSTEM GAPS CLOSED — cowork-service now matches the pattern used by
all other product backends (FlowMonk, ActionTrail, NoteLett, etc.):
New lib files (6):
- lib/product-config.ts — canonical product identity (PRODUCT_ID, productConfig)
- lib/auth.ts — @bytelyst/fastify-auth createAuthMiddleware
- lib/request-context.ts — getUserId(), getRequestProductId()
- lib/telemetry.ts — @bytelyst/backend-telemetry buffer
- lib/feature-flags.ts — @bytelyst/backend-flags with 12 cowork flags
- lib/ipc-bridge.ts — IpcBridge class: spawn Rust child, JSON-RPC, 13 methods
Updated files:
- lib/config.ts — extends @bytelyst/backend-config baseBackendConfigSchema
- server.ts — JWT context, bootstrap endpoint, IPC startup, graceful shutdown
- modules/tasks/routes.ts — IPC bridge forwarding with in-memory fallback
- modules/health/routes.ts — productId from product-config, IPC status
- package.json — 7 new @bytelyst/* workspace deps
IPC bridge features:
- Spawns cowork-orchestrator --ipc-bridge as child process
- JSON-RPC 2.0 over stdin/stdout (line-delimited)
- 13 convenience methods matching Rust IpcHandler
- Timeout + pending request tracking
- Graceful shutdown with SIGTERM
- Singleton pattern with setIpcBridge() for testing
24 tests passing (was 8), typecheck clean.
2026-04-02 22:14:24 -07:00
saravanakumardb1
a87c533fd3
feat(cowork-service): scaffold Fastify bridge + seed clawcowork feature flags (H.1 + H.2)
...
H.1: Product registration
- Added 12 clawcowork feature flags to platform-service flags/seed.ts
(sandbox, plugins, mcp, scheduling, computer_use, parallel_agents,
marketplace, wasm, llm_multi_model, audit, platform_auth, dispatch_api)
H.2: cowork-service scaffold (services/cowork-service/)
- @lysnrai/cowork-service on port 4009, productId clawcowork
- createServiceApp + startService from @bytelyst/fastify-core
- Modules: health (dependency check), tasks (submit/list/get/cancel)
- Zod-validated config, Swagger, readiness endpoint
- 8 tests passing (1 bootstrap + 7 task routes), typecheck clean
2026-04-02 20:39:22 -07:00
saravanakumardb1
af605a6e7d
fix(mcp): align ChronoMind type enums with actual backend schema
...
Fix 3 type mismatches in MCP chronomind-client.ts + chronomind-tools.ts:
1. TimerDoc.type: Remove non-existent 'event', keep 'countdown'|'alarm'|'pomodoro'
2. TimerDoc.state: Remove non-existent 'idle', add missing 'snoozed'|'dismissed'
3. RoutineDoc.status: Replace wrong 'idle'|'running' with actual
'template'|'ready'|'active'|'cancelled'
Fix cascading usages:
- chronomind.timers.create tool: default state 'idle' → 'active'
- chronomind.timers.list tool: update type/state enum in Zod schema + description
- calendar-import-pipeline.ts: 'idle' → 'active' for imported timers
MCP server typecheck passes. No runtime behavior change for existing tools.
2026-03-31 23:57:24 -07:00
saravanakumardb1
efde14ba6e
feat(mcp): Phase A.3 — 5 new ChronoMind MCP tools + client functions
...
Extend centralized MCP server with 5 new ChronoMind tools:
- chronomind.timers.reschedule — shift timer by delta or set new target time
- chronomind.timers.availability — find free time slots in a window
- chronomind.routines.start — start a routine from ready/template status
- chronomind.agentActions.list — list agent action audit trail
- chronomind.agentActions.approve — approve a proposed agent action
Client functions added to chronomind-client.ts:
- chronomindTimerReschedule, chronomindTimerAvailability, chronomindRoutineStart
- chronomindAgentActionCreate, chronomindAgentActionsList, chronomindAgentActionApprove
Write tools (reschedule, routines.start) record agent actions for audit trail.
Audit recording is fail-open — failures don't block the actual operation.
MCP server typecheck passes. No breaking changes to existing tools.
2026-03-31 23:41:43 -07:00
saravanakumardb1
0bae1d6d5a
ci: update CI/CD configuration
2026-03-31 23:03:14 -07:00
root
7f28c5b047
chore(script): fix registry verification
2026-03-31 11:43:35 +00:00
root
0c28231c3b
chore(script): add run-registry-tests
2026-03-31 11:37:03 +00:00
root
8b37189829
chore(registry): point packages to gitea.bytelyst.com
2026-03-31 10:53:13 +00:00
root
f89341d7d8
chore(registry): point all repos at gitea.bytelyst.com
2026-03-31 10:43:23 +00:00
root
66ddcaaaa6
docs(devops): record live ollama DNS and HTTPS status
2026-03-31 10:17:39 +00:00
root
b1db0d583d
feat(dns): add ollama hostname support
2026-03-31 10:07:38 +00:00
root
d9773b460d
docs(gateway): record live bytelyst HTTPS cutover
2026-03-31 09:42:26 +00:00
e573e98cc1
docs(devops): add llmlab dns handoff
2026-03-31 02:32:01 -07:00
356c96e1d9
docs(devops): capture godaddy dns cutover and vm handoff
2026-03-31 02:25:58 -07:00
root
6bb17e1d9c
docs(devops): move localmemgpt web to vercel
2026-03-31 09:19:49 +00:00
root
eba9a3abb1
chore(admin): remove localmemgpt from VM ops inventory
2026-03-31 09:19:42 +00:00
root
68c8fc0d8d
docs(devops): clarify LLM UI hosting roles
2026-03-31 09:12:59 +00:00
root
0e0da504a2
chore(admin): refine LLM web app classifications
2026-03-31 09:12:50 +00:00
root
a597646034
docs(devops): add GoDaddy DNS runbook for bytelyst
2026-03-31 09:00:11 +00:00
root
abfbb70583
docs(devops): document VM-hosted web surfaces
2026-03-31 08:55:52 +00:00
root
509ea89280
feat(admin): track VM-hosted web surfaces in ops
2026-03-31 08:55:40 +00:00
root
3d0183b8c6
docs(devops): note restart and valkey write controls
2026-03-31 08:44:44 +00:00
root
4b9ae37ead
feat(admin): add restart controls and valkey delete actions
2026-03-31 08:44:44 +00:00
saravanakumardb1
de13a08a98
chore: update chat history archive + design-tokens tarball
2026-03-31 01:42:48 -07:00
root
23d5ef44f3
docs(devops): note admin ops inventory and valkey panel
2026-03-31 08:32:50 +00:00
root
bd7ebeb248
feat(admin): add VM inventory and Valkey inspector
2026-03-31 08:32:30 +00:00
root
2cf557a2c8
docs(devops): document valkey-backed extraction throttling
2026-03-31 08:09:24 +00:00
root
81951b173a
feat(extraction): back product rate limits with valkey
2026-03-31 08:08:53 +00:00
root
89f2f1288b
feat(admin): add ops quick links
2026-03-31 07:34:52 +00:00
root
534395bb5e
fix(dashboards): restore runtime and expose internal ops health
2026-03-31 07:26:43 +00:00
root
b8661392c6
feat(observability): add phase 2 monitoring and valkey services
2026-03-31 06:57:12 +00:00
root
d4d8c48a4c
docs(architecture): extend internal-only policy to shared infra
2026-03-31 06:52:59 +00:00
root
4aba0a83cc
docs(devops): add phased VM stack recommendations
2026-03-31 06:52:01 +00:00
root
b7b3869014
docs(architecture): keep monitoring stacks internal on VM
2026-03-31 06:47:39 +00:00
root
5cec039905
docs(architecture): keep internal dashboards on VM Docker
2026-03-31 06:39:19 +00:00
e174335a9e
fix(rn-platform-sdk): align providers with platform-service APIs
...
- Feature flags: GET /flags/poll legacy { flags } + optional userId
- Kill switch: GET /settings/kill-switch, map message to reason
- Broadcasts: GET /broadcasts, POST dismiss; map server message shape
- Surveys: GET /surveys/active; submit via start/response/complete
- Auth: register(); login/register bodies include productId
- Telemetry: map queued events to TelemetryEventSchema; RN Platform import
- prepare script runs tsc on install
Made-with: Cursor
2026-03-30 01:12:18 -07:00
e13d0cba6b
fix(subscription-client): add missing X-Product-Id header to API requests
...
Aligns with referral-client, org-client, and marketplace-client which
all send this header. The billing API likely requires it for product
scoping.
Made-with: Cursor
2026-03-30 00:26:48 -07:00
1ee97327ee
feat(packages): create 9 NomGap-required platform packages
...
Create source implementations for packages imported by NomGap:
- @bytelyst/accessibility — ARIA helper functions (alertLabel, progressLabel, etc.)
- @bytelyst/celebrations — celebration engine for milestones
- @bytelyst/gentle-notifications — guilt-free notification filtering
- @bytelyst/time-references — human-friendly fasting time references
- @bytelyst/subscription-client — billing/subscription HTTP client
- @bytelyst/quick-actions — progressive disclosure UI helpers
- @bytelyst/referral-client — referral program client
- @bytelyst/marketplace-client — influencer marketplace client
- @bytelyst/org-client — B2B org management client
Made-with: Cursor
2026-03-29 22:24:02 -07:00
58c47a751a
fix(mcp-server): pass workspaceId to notelett note get/update/delete/summarize tools
...
Backend requires workspaceId query param on single-note endpoints.
Updated client functions and tool schemas accordingly.
Made-with: Cursor
2026-03-29 22:10:03 -07:00
6997dff8d9
feat(mcp-server): register NoteLett tools (notes, workspaces, tasks, artifacts, summarize)
...
Adds notelett-client.ts HTTP wrapper, notelett-tools.ts with 10 MCP tool registrations,
and NOTELETT_BACKEND_URL config entry.
Made-with: Cursor
2026-03-29 20:57:16 -07:00