Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1719 commits
Select commit Hold shift + click to select a range
2d47977
feat(core): add pdf-generator with pdfmake and invoice helper
medomar Mar 12, 2026
069dcf1
feat(core): add invoice PDF template with logo, QR code, and terms
medomar Mar 12, 2026
83bfaa3
feat(core): add quote PDF template with validity period and signature…
medomar Mar 12, 2026
7f1dfc8
feat(core): add receipt PDF template with compact format
medomar Mar 12, 2026
4ff5823
feat(core): add report PDF template with TOC, tables, charts, and pag…
medomar Mar 12, 2026
71d8876
feat(core): add QR code generation to invoice PDFs
medomar Mar 12, 2026
8575192
feat(core): add branding config loader and saver
medomar Mar 12, 2026
77bc183
feat(core): add email templates for invoices, receipts, reminders, an…
medomar Mar 12, 2026
edb4026
test(core): add PDF generation unit tests
medomar Mar 12, 2026
f91c272
feat(core): wire pdfmake templates into generate_pdf hook
medomar Mar 12, 2026
ed99283
feat(core): add detectInputFormat and parseInputToOpenAPI to openapi-…
medomar Mar 12, 2026
803229d
feat(core): add Postman Collection v2.1 to OpenAPI 3.0 parser
medomar Mar 12, 2026
9492ccc
feat(core): add cURL to OpenAPI 3.0 parser
medomar Mar 12, 2026
ae4e63d
feat(core): add AI-powered documentation-to-OpenAPI parser
medomar Mar 12, 2026
3ae95b4
feat(core): add role-based capability tagging to OpenAPIAdapter
medomar Mar 12, 2026
04eb58f
feat(core): add generic real-time event bridge
medomar Mar 12, 2026
ccd5e4f
feat(core): add AI skill pack generator from OpenAPI specs
medomar Mar 12, 2026
c36f955
feat(core): enhance /connect api for multi-format input support
medomar Mar 12, 2026
4925d4e
feat(core): add /connect api file upload and cURL accumulation support
medomar Mar 13, 2026
8c372a1
feat(core): add pre-built workflow templates for connected APIs
medomar Mar 13, 2026
5e682a8
feat(core): add API connection health monitoring (OB-1455)
medomar Mar 13, 2026
04523bc
feat(core): verify postman-parser unit tests (OB-1456)
medomar Mar 13, 2026
15ce902
feat(core): verify curl-parser unit tests (OB-1457)
medomar Mar 13, 2026
0ee5418
feat(core): add universal API connection flow integration test (OB-1458)
medomar Mar 13, 2026
fcea4f5
feat(core): add industry template loader (OB-1459)
medomar Mar 13, 2026
8766d78
feat(master): add industry detector for business type classification …
medomar Mar 13, 2026
daf0efd
feat(core): add restaurant industry template (OB-1461)
medomar Mar 13, 2026
3003c1b
feat(core): add car rental industry template (OB-1462)
medomar Mar 13, 2026
c473d8d
feat(core): add retail industry template (OB-1463)
medomar Mar 13, 2026
b2eee68
feat(core): add services industry template (OB-1464)
medomar Mar 13, 2026
37c8437
chore: update current task pointer to OB-1465
medomar Mar 13, 2026
19c57fb
feat(core): add marketplace seller industry template (OB-1465)
medomar Mar 13, 2026
9d0ceef
feat(master): add template selection UX to Master system prompt
medomar Mar 13, 2026
7d4943e
chore: update current task pointer to OB-1467
medomar Mar 13, 2026
f15dec3
test(core): add unit tests for template loader (OB-1467)
medomar Mar 13, 2026
817c17d
test(core): add unit tests for industry detector (OB-1468)
medomar Mar 13, 2026
e43c229
feat(core): add skill creator for learned task patterns (OB-1469)
medomar Mar 13, 2026
f35e5e3
feat(core): add skill versioning and effectiveness tracking (OB-1470)
medomar Mar 13, 2026
83d0f6d
feat(master): wire learned skills into Master AI prompt and classific…
medomar Mar 13, 2026
c550413
feat(core): add proactive daily analysis workflow (OB-1472)
medomar Mar 13, 2026
bd46407
feat(core): implement TTL-based query cache (OB-1473)
medomar Mar 13, 2026
8e05b37
feat(master): implement user preference modeling (OB-1474)
medomar Mar 13, 2026
78ffca6
feat(core): implement client activity pattern detection (OB-1475)
medomar Mar 13, 2026
2dd75ff
feat(core): add unit tests for skill-creator module
medomar Mar 13, 2026
06c1bff
feat(master): add cloud-storage skill pack
medomar Mar 13, 2026
36c6035
feat(core): add google-drive and dropbox entries to MCP catalog
medomar Mar 13, 2026
f167b06
feat(core): add SHARE:gdrive and SHARE:dropbox output marker channels
medomar Mar 13, 2026
04ac21d
docs: mark OB-1480 as done, update task counters
medomar Mar 13, 2026
de996d5
feat(master): add web-deploy skill pack for Vercel, Netlify, Cloudfla…
medomar Mar 13, 2026
d1b4fda
docs: mark OB-1482 as done, update task counters
medomar Mar 13, 2026
84dae4f
feat(master): add spreadsheet-handler skill pack for read/write/trans…
medomar Mar 13, 2026
da9ab0e
feat(master): register spreadsheet handler skill pack in skill-pack-l…
medomar Mar 13, 2026
de92981
docs: update current task pointer to OB-1485
medomar Mar 13, 2026
35dcc08
feat(master): add file-converter skill pack for document format conve…
medomar Mar 13, 2026
bfe7722
feat(master): register file-converter skill pack - all built-in skill…
medomar Mar 13, 2026
4399b56
test(master): add cloud storage skill pack unit tests
medomar Mar 13, 2026
bbe4373
test(master): add web deploy skill pack unit tests
medomar Mar 13, 2026
289070e
test(master): add spreadsheet handler skill pack unit tests
medomar Mar 13, 2026
217df58
test(master): add file-converter skill pack unit tests
medomar Mar 13, 2026
9cf05f8
feat(core): add file-management tool profile
medomar Mar 13, 2026
6500276
feat(core): wire file-management profile into agent-runner resolveTools
medomar Mar 13, 2026
565f57a
feat(master): wire file-management profile into system prompt
medomar Mar 13, 2026
9d7ab2c
feat(core): add workspace-scoped safety check for file-management pro…
medomar Mar 13, 2026
ce254b2
feat(deps): install @anthropic-ai/claude-agent-sdk package
medomar Mar 13, 2026
ff6b65f
chore: update current task pointer to OB-1496
medomar Mar 13, 2026
00f1580
feat(core): add Claude Agent SDK adapter with canUseTool permission c…
medomar Mar 13, 2026
ca1ee33
feat(core): register claude-sdk adapter in AdapterRegistry with trust…
medomar Mar 13, 2026
fec79e2
feat(core): add permission relay protocol for interactive tool approval
medomar Mar 13, 2026
a302262
feat(core): add permission prompt detection in router for interactive…
medomar Mar 13, 2026
cf02b6c
feat(connector): add WebChat permission prompt UI component
medomar Mar 13, 2026
272fb8f
feat(core): wire /trust command levels to adapter selection
medomar Mar 13, 2026
56443f5
test(core): add unit tests for file-management tool profile
medomar Mar 13, 2026
097ea73
test(core): add unit tests for Claude SDK adapter
medomar Mar 13, 2026
10fc611
test(core): add unit tests for permission relay
medomar Mar 13, 2026
c94fd0d
test(core): add integration test for full permission flow
medomar Mar 13, 2026
ec6dc02
docs(docs): update task pointer after OB-1505 completion
medomar Mar 13, 2026
92e8fd8
feat(core): v0.1.0 — WebChat file uploads, restaurant intelligence, d…
medomar Mar 14, 2026
f9a3382
chore(core): remove test artifacts, demos, and temp files from repo
medomar Mar 14, 2026
31a73b4
feat(core): add data-query tool profile and enhance data-analysis ski…
medomar Mar 15, 2026
7238bf5
fix(master): silence readWorkspaceMap ENOENT spam with existence check
medomar Mar 15, 2026
34392ec
fix(master): ensure workspace-map.json is written after assembly phase
medomar Mar 15, 2026
661e431
feat(master): add post-exploration workspace-map assertion (OB-1508)
medomar Mar 15, 2026
09836a1
fix(master): silence first-run ENOENT spam in readBatchState/readProm…
medomar Mar 15, 2026
fc0eb33
test(master): add workspace-map persistence unit tests (OB-1510)
medomar Mar 15, 2026
346fde6
feat(master): implement budget-aware prompt assembly (OB-1511)
medomar Mar 15, 2026
406201f
feat(core): add graduated prompt truncation with caller context (OB-1…
medomar Mar 15, 2026
2f77e12
feat(master): add prompt-size-based compaction trigger (OB-1513)
medomar Mar 15, 2026
ad5c95b
feat(master): add per-phase prompt budget constraints to exploration …
medomar Mar 15, 2026
dfc447f
feat(core): add prompt-size metrics to MetricsCollector (OB-1515)
medomar Mar 15, 2026
fd7e913
test(master): add prompt budget unit tests (OB-1516)
medomar Mar 15, 2026
5a99081
fix(master): add safety-net activity update in worker finally block (…
medomar Mar 15, 2026
9279ae5
fix(core): add startup sweep to abandon stale running agents (OB-1518)
medomar Mar 15, 2026
96e5768
feat(core): add sweepStaleRunning to activity-store (OB-1519)
medomar Mar 15, 2026
7d8174a
test(master): add worker activity tracking unit tests (OB-1520)
medomar Mar 15, 2026
dfd50f6
feat(core): add maxCostUsd per-worker cost cap to SpawnOptions (OB-1521)
medomar Mar 15, 2026
bbf09ff
feat(core): add per-worker maxCostUsd enforcement in streaming paths …
medomar Mar 15, 2026
560549c
feat(core): add checkCostCap helper and cost-capped metrics tracking …
medomar Mar 15, 2026
de53738
feat(master): include cost-capped advisory in worker result summary (…
medomar Mar 15, 2026
4542945
test(core): add per-worker cost-cap unit tests for streaming path
medomar Mar 15, 2026
d984640
feat(master): add conversational intent keyword group to classificati…
medomar Mar 15, 2026
4c47b49
feat(master): tighten batch-mode keyword matcher with compound patter…
medomar Mar 15, 2026
bfa0ef4
feat(master): prefer AI classifier over keyword fallback when confide…
medomar Mar 15, 2026
cb1283c
feat(master): change default keyword fallback to quick-answer (OB-1529)
medomar Mar 15, 2026
617fab7
test(master): add classification engine improvement tests (OB-1530)
medomar Mar 15, 2026
edd396a
docs: deep analysis of 9 open findings with verified code references
medomar Mar 15, 2026
c16f97a
feat(core): model-aware prompt budget for Claude 4.6 (OB-1531)
shtayner Mar 15, 2026
b085851
feat(core): extract shared Claude prompt budget helper (OB-1532)
shtayner Mar 15, 2026
4338de7
feat(core): add contextTokens and maxOutputTokens to ModelEntry inter…
shtayner Mar 15, 2026
f2b7c14
feat(master): model-aware promptSizeLimit in SessionCompactor (OB-1534)
shtayner Mar 15, 2026
97691e2
feat(core): model-aware prompt length in AgentRunner (OB-1535)
shtayner Mar 15, 2026
3159daa
feat(core): update estimateCostUsd with current Anthropic pricing (OB…
shtayner Mar 15, 2026
5b96dc1
test(core): add ClaudeSDKAdapter suite + model-specific budget tests …
shtayner Mar 15, 2026
feb7dd9
fix(core): raise prompt size cap to 55K and throw on rejection (OB-1538)
shtayner Mar 15, 2026
4139a88
fix(master): add pre-flight size check and fallback in seedSystemProm…
shtayner Mar 15, 2026
7b7655a
feat(master): add trimPromptToFit() for progressive prompt size reduc…
shtayner Mar 15, 2026
acd493d
test(master): add OB-F200 unit tests for prompt size cap and trimProm…
shtayner Mar 15, 2026
9aba274
feat(core): add getSessionHistoryForSender for WebChat session isolat…
shtayner Mar 15, 2026
3b58619
feat(core): add userId filter to searchConversations for WebChat isol…
shtayner Mar 15, 2026
43d01a8
feat(core): thread sender through buildConversationContext for WebCha…
shtayner Mar 15, 2026
51a1fcd
chore(connector): verify sender data flow integrity for WebChat isola…
shtayner Mar 15, 2026
c9131b6
test(master): add unit tests for WebChat session isolation (OB-1546)
shtayner Mar 15, 2026
efd7453
feat(core): add file management tools to code-edit profile (OB-1547)
shtayner Mar 15, 2026
0df13be
feat(master): add file-op keyword auto-escalation to file-management …
shtayner Mar 15, 2026
3f67a0f
test(master): add unit tests for file-management profile escalation (…
shtayner Mar 15, 2026
69998f0
feat(core): update Codex prompt budget to 400K and powerful tier to g…
shtayner Mar 15, 2026
0e16006
feat(core): update Aider adapter model budgets and registry tiers (OB…
shtayner Mar 15, 2026
cb033af
test(core): add unit tests for Codex/Aider model budgets and registry…
shtayner Mar 15, 2026
53eebe0
fix(master): add fs.access() guard to readSystemPrompt() to prevent E…
shtayner Mar 15, 2026
3ea81f6
fix(master): remove redundant warning flags from dotfolder-manager
shtayner Mar 15, 2026
a3d079c
test(master): add smoke test for startup log noise cleanup (OB-1556)
shtayner Mar 15, 2026
a75d0f1
test(core): add model-aware prompt pipeline integration tests (OB-1557)
shtayner Mar 15, 2026
523ad52
test(core): add prompt size cap + WebChat isolation integration tests…
shtayner Mar 15, 2026
17cb933
test(core): add profile escalation + startup log noise integration te…
shtayner Mar 15, 2026
cd3ce12
docs(docs): add trust level findings (OB-F211–F216) and task list (Ph…
medomar Mar 16, 2026
56b6976
fix(master): default Claude workers to Sonnet model tier when unspeci…
shtayner Mar 16, 2026
b39aa7a
fix(core): default Claude budget to Sonnet tier for undefined/unknown…
shtayner Mar 16, 2026
510d7e5
feat(master): add pre-spawn prompt size validation in worker-orchestr…
shtayner Mar 16, 2026
97ae61a
docs(master): add worker prompt size guidance to system prompt
shtayner Mar 16, 2026
2475f61
test(master): add worker prompt budget unit tests (OB-1564)
shtayner Mar 16, 2026
a50d835
fix(core): increase AI worker timeout for image/entity analysis
shtayner Mar 16, 2026
c3ed630
fix(core): derive effective timeout for non-Docker execOnce calls (OB…
shtayner Mar 16, 2026
d780582
test(core): add unit tests for worker timeout derivation (OB-1567)
shtayner Mar 16, 2026
dc7322c
feat(master): add ragQuery field to ClassificationResult for RAG retr…
shtayner Mar 16, 2026
2236d80
feat(master): add RAG retry with classifier description for Arabizi q…
shtayner Mar 16, 2026
ebb4f37
feat(master): add workspace-map fallback when RAG and targeted reader…
shtayner Mar 16, 2026
ab12572
test(master): add unit tests for Arabizi RAG fallback (OB-1571)
shtayner Mar 16, 2026
49d232a
feat(master): record task efficiency metrics for escalation suppressi…
shtayner Mar 16, 2026
acb6000
feat(master): add efficiency-based escalation suppression (OB-1573)
shtayner Mar 16, 2026
52defa0
test(master): add unit tests for task efficiency and escalation suppr…
shtayner Mar 16, 2026
da2f898
feat(core): add natural language trust intent detector (OB-1575)
shtayner Mar 16, 2026
9b8444a
test(core): add unit tests for natural language trust command (OB-1576)
shtayner Mar 16, 2026
56bd576
feat(master): add self-improvement no-op tracking and suppression (OB…
shtayner Mar 16, 2026
269e56a
docs: mark OB-1577 as done and update task counters
shtayner Mar 16, 2026
63cbe3c
test(master): add unit tests for self-improvement cycle suppression (…
shtayner Mar 16, 2026
a3a7858
feat(config): add WorkspaceTrustLevel and trustLevel to SecurityConfi…
shtayner Mar 16, 2026
80f5830
docs(config): add trustLevel field to security block in example config
shtayner Mar 16, 2026
e2d58b7
feat(core): add trustLevel parameter to resolveProfile and resolveToo…
shtayner Mar 16, 2026
fbd14ad
feat(master): make MASTER_TOOLS dynamic based on trust level (OB-1583)
shtayner Mar 16, 2026
8499c84
feat(master): thread trustLevel through worker spawn path (OB-1584)
shtayner Mar 16, 2026
1713f9e
feat(master): make system prompt trust-level-aware (OB-1585)
shtayner Mar 16, 2026
75406be
test(master): add unit tests for trust level config and profile resol…
shtayner Mar 16, 2026
f0df36d
feat(core): extend workspace boundary command detection with severity…
shtayner Mar 16, 2026
78aadef
feat(master): inject workspace boundary instruction for trusted mode …
shtayner Mar 16, 2026
104ddc8
feat(core): add runtime sandbox mode auto-detection for trusted mode …
shtayner Mar 16, 2026
7405b91
feat(core): add workspace boundary enforcement in claude-adapter (OB-…
shtayner Mar 16, 2026
f5b5df8
test(core): add unit tests for workspace boundary enforcement (OB-1591)
shtayner Mar 16, 2026
2b01fe0
feat(core): add trust-level-aware cost cap scaling to getProfileCostC…
shtayner Mar 16, 2026
0c8f1c7
feat(core): thread trustLevel to getProfileCostCap call sites (OB-1593)
shtayner Mar 16, 2026
e835839
test(core): add unit tests for getProfileCostCap with trustLevel (OB-…
shtayner Mar 16, 2026
1bc9b25
feat(config): add trust level question to init wizard (OB-1595)
shtayner Mar 16, 2026
b85be1a
feat(config): add trustLevel to config.example.json (OB-1596)
shtayner Mar 16, 2026
9700c64
feat(core): add trust level startup logging (OB-1597)
shtayner Mar 16, 2026
11861a9
test(core): add unit tests for trust level wizard prompt and startup …
shtayner Mar 16, 2026
49a14de
feat(core): add trust level check to requestSpawnConfirmation (OB-1599)
shtayner Mar 16, 2026
f5d55e1
feat(master): force full-access profile for workers in trusted mode (…
shtayner Mar 16, 2026
66ca93d
feat(core): respect trust level in /allow and /allow all commands (OB…
shtayner Mar 16, 2026
420b1e5
feat(core): respect trust level in permission relay (OB-1602)
shtayner Mar 16, 2026
c9da98d
feat(core): add defense-in-depth sandbox guard to respawnWorkerAfterG…
shtayner Mar 16, 2026
6e8220a
test(core): add trust level unit tests for confirmation gates (OB-1604)
shtayner Mar 16, 2026
7ee7c2a
test(core): add trusted-mode integration tests for trust level (OB-1605)
shtayner Mar 16, 2026
6f78192
test(core): add sandbox-mode integration tests for trust level (OB-1606)
shtayner Mar 16, 2026
b06b7da
test(core): add backward-compatibility integration tests for trust le…
shtayner Mar 16, 2026
2ef1ddf
docs: add 9 findings (OB-F214–F222) and 32 tasks for v0.1.3
medomar Mar 17, 2026
0241f7f
fix(master): prevent escalation loop in respawnWorkerAfterGrant (OB-F…
shtayner Mar 17, 2026
cf38fbd
fix(master): pass base profile at respawnWorkerAfterGrant call sites …
shtayner Mar 17, 2026
359bf70
test(master): add unit tests for escalation dedup (OB-1609)
shtayner Mar 17, 2026
10ff8a9
fix(core): only log Docker health WARN on state transitions (OB-1610)
shtayner Mar 17, 2026
3ccb709
test(core): add unit tests for Docker health monitor state transition…
shtayner Mar 17, 2026
16114de
fix(master): increase system prompt budget from 8K to 120K (OB-F216)
shtayner Mar 17, 2026
3c2d583
feat(master): make system prompt budget model-aware (OB-1613)
shtayner Mar 17, 2026
f545cdd
feat(core): add DEBUG log for assembled prompt size in PromptAssemble…
shtayner Mar 17, 2026
6515777
test(core): add unit tests for system prompt budget assembly (OB-1615)
shtayner Mar 17, 2026
e5321d1
feat(master): reduce quick-answer turn budget and CLI startup overhea…
shtayner Mar 17, 2026
7f14552
feat(master): clamp worker timeout to message timeout boundary (OB-1617)
shtayner Mar 17, 2026
de22fc7
test(master): add unit tests for quick-answer timeout alignment (OB-1…
shtayner Mar 17, 2026
6438955
feat(core): skip retries on timeout exits at all 4 agent-runner retry…
shtayner Mar 17, 2026
476bb80
feat(core): verify timeout-skip applied at all 4 retry sites (OB-1620)
shtayner Mar 17, 2026
70dc065
test(core): add unit tests for streaming timeout retry skip (OB-1621)
shtayner Mar 17, 2026
328ca6f
feat(core): add Codex/OpenAI pricing to cost estimation (OB-1622)
shtayner Mar 17, 2026
9d32346
feat(master): scale Codex worker cost cap 2.5x for accurate enforceme…
shtayner Mar 17, 2026
a7e9ea4
test(core): add unit tests for Codex cost estimation (OB-1624)
shtayner Mar 17, 2026
51a0d92
feat(master): inject channel+role context header into Master prompt (…
shtayner Mar 17, 2026
6543f1a
feat(master): add channel-aware output delivery guidance to system pr…
shtayner Mar 17, 2026
12b16be
feat(master): inject channel context header into streamMessage path (…
shtayner Mar 17, 2026
f1c505a
test(master): add unit tests for channel + role context header inject…
shtayner Mar 17, 2026
8d4f99e
feat(core): thread source channel param through output marker pipelin…
shtayner Mar 17, 2026
ff4c96b
feat(core): add APP:start→SHARE fallback for remote channels (OB-1630)
shtayner Mar 17, 2026
85e2f51
feat(master): update system prompt to guide file delivery for remote …
shtayner Mar 17, 2026
bd2cf03
feat(core): add ensureTunnel() method to Bridge for on-demand auto-tu…
shtayner Mar 17, 2026
0b487dc
feat(core): integrate auto-tunnel with APP:start for remote channels …
shtayner Mar 17, 2026
a03d1fc
docs(master): add APP:start guidance for remote channel users (OB-1634)
shtayner Mar 17, 2026
043147b
test(core): add remote delivery integration tests (OB-1635)
shtayner Mar 17, 2026
e737394
test(core): verify APP:start→SHARE fallback for remote channels (OB-1…
shtayner Mar 17, 2026
5fbaa4c
test(core): verify APP:start auto-tunnel URL for remote channels (OB-…
shtayner Mar 17, 2026
8fa145b
test(core): add prompt assembly pipeline integration tests (OB-1638)
shtayner Mar 17, 2026
9f7d0cf
docs(core): add 7 findings and 30 tasks from real-world testing (Phas…
medomar Mar 17, 2026
902516e
feat(core): add onDeadLetter callback to MessageQueue (OB-1639)
shtayner Mar 17, 2026
d4a836f
feat(core): wire onDeadLetter callback in bridge to send user error r…
shtayner Mar 17, 2026
e0ca89b
fix(core): increase classifier maxTurns from 1 to 2 to prevent exhaus…
shtayner Mar 17, 2026
1952945
test(core): add onDeadLetter callback unit tests (OB-1642)
shtayner Mar 17, 2026
76df3d4
test(master): add classifier maxTurns=2 and keyword fallback tests (O…
shtayner Mar 17, 2026
7232fb1
fix(core): skip exploration/ cleanup when exploration is in progress …
shtayner Mar 17, 2026
ce9fedf
fix(master): read classification from SQLite with JSON fallback in wr…
shtayner Mar 17, 2026
41103c0
fix(master): add concise-output instruction and trimPayload to Phase …
shtayner Mar 17, 2026
62d2375
fix(master): downgrade first-run ENOENT warnings to DEBUG level in do…
shtayner Mar 17, 2026
f812fbb
test(core): add unit tests for cleanLegacyDotFolderArtifacts explorat…
shtayner Mar 17, 2026
8d995a9
feat(master): always inject .openbridge/ protection into worker promp…
shtayner Mar 17, 2026
640ae9c
feat(master): add .openbridge/ protection guidance to Master system p…
shtayner Mar 17, 2026
7e0279f
feat(master): backup and restore memory.md via SQLite (OB-1651)
shtayner Mar 17, 2026
64687bb
test(master): add unit tests for .openbridge/ protection injection (O…
shtayner Mar 17, 2026
5cbd870
docs(master): add Headless Environment subsection to system prompt (O…
shtayner Mar 17, 2026
f47a1c5
feat(master): add auth-required failure category to Worker Failure Re…
shtayner Mar 17, 2026
34a9d80
feat(core): add early OAuth detection in worker output (OB-1655)
shtayner Mar 17, 2026
6eb0cc5
feat(master): queue messages during processing state (OB-1656)
shtayner Mar 17, 2026
68ee745
feat(master): add drain mechanism for processing pending queue (OB-1657)
shtayner Mar 17, 2026
9c0d533
feat(master): merge rapid-fire image+text messages during drain (OB-1…
shtayner Mar 17, 2026
bd4d219
test(master): add processing queue tests (OB-1659)
shtayner Mar 17, 2026
7ea66fb
test(master): add rapid-fire image+text merge test (OB-1660)
shtayner Mar 17, 2026
6290b41
docs(master): document timeout chain above safeTimeout clamp (OB-1661)
shtayner Mar 17, 2026
e73a1ac
feat(master): raise DEFAULT_MESSAGE_TIMEOUT to 300s and remove 10s he…
shtayner Mar 17, 2026
82c8003
feat(master): send user-friendly message on Master session timeout (O…
shtayner Mar 17, 2026
86a9a2d
test(master): add timeout partial-response test (OB-1664)
shtayner Mar 17, 2026
2302ff3
test(master): verify OB-1665 completion (ENOENT downgrade in dotfolde…
shtayner Mar 17, 2026
0d58563
fix(core): eliminate Docker unavailability WARN logs on every check (…
shtayner Mar 17, 2026
94cf620
test(core): add DLQ error response lifecycle tests (OB-1667)
shtayner Mar 17, 2026
61f66c8
test(core): add processing queue flow integration test (OB-1668)
shtayner Mar 17, 2026
a784c4c
fix(master): cap escalation depth in master-manager + classification …
medomar Mar 18, 2026
7777eea
docs: archive v0.1.3 — 66 tasks (Phases 152–169), 17 findings (OB-F21…
medomar Mar 18, 2026
f5299c0
fix(master): prevent escalation loop OOM in respawnWorkerAfterGrant (…
medomar Mar 18, 2026
5b7c8f5
fix(deps): upgrade zod v3→v4 with v3 compat imports for claude-agent-…
medomar Mar 18, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
67 changes: 67 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
# Dependencies — installed fresh inside the image
node_modules/

# Git history
.git/
.github/

# TypeScript build output — rebuilt inside the image
dist/
build/
*.tsbuildinfo

# Test artifacts
coverage/
tests/
benchmarks/

# Logs and runtime data
logs/
*.log

# SQLite databases — created at runtime via volume mounts
*.db
*.db-wal
*.db-shm

# WhatsApp session data — mounted as a volume
.wwebjs_auth/
.wwebjs_cache/

# OpenBridge runtime state
.openbridge/

# Config with secrets — passed via ENV vars in Docker
config.json
config.local.json
config.production.json

# Environment files
.env
.env.local
.env.*.local

# Development files
.vscode/
.idea/
*.swp
*.swo

# OS files
.DS_Store
Thumbs.db

# npm pack artifacts
*.tgz

# Smoke test directory
ob-smoke-test/

# Test workspace directories
test-workspace-*/

# Docs (not needed at runtime)
docs/

# Scripts (not needed at runtime)
scripts/
7 changes: 7 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,10 @@ CONFIG_PATH=./config.json

# Claude Code provider options
# CLAUDE_CODE_WORKSPACE=~/projects/my-project

# OpenAI API key — optional, shared with Codex
# Used for two features:
# 1. Voice message transcription via OpenAI Whisper API ($0.006/min, zero local setup)
# 2. Codex AI provider (if you use Codex as your AI tool instead of Claude Code)
# If unset, voice transcription falls back to local whisper CLI, then a placeholder message.
# OPENAI_API_KEY=sk-...
33 changes: 33 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
version: 2
updates:
- package-ecosystem: 'npm'
directory: '/'
target-branch: 'develop'
schedule:
interval: 'monthly'
open-pull-requests-limit: 5
reviewers:
- 'medomar'
groups:
minor-and-patch:
update-types:
- 'minor'
- 'patch'
major:
update-types:
- 'major'
ignore:
# @types/node major must match our engines.node (>=22) — don't auto-bump
- dependency-name: '@types/node'
update-types: ['version-update:semver-major']
# @vitest/coverage-v8 must stay in sync with vitest — upgrade together manually
- dependency-name: '@vitest/coverage-v8'
update-types: ['version-update:semver-major']
- dependency-name: 'vitest'
update-types: ['version-update:semver-major']
# Zod 4 requires dedicated migration — don't auto-bump
- dependency-name: 'zod'
update-types: ['version-update:semver-major']
# ESLint 10 needs typescript-eslint compatibility — don't auto-bump
- dependency-name: 'eslint'
update-types: ['version-update:semver-major']
174 changes: 174 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,174 @@
name: Release

on:
push:
tags:
- 'v*'

permissions:
contents: write
id-token: write

jobs:
lint:
name: Lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- uses: actions/setup-node@v4
with:
node-version-file: '.nvmrc'
cache: 'npm'

- run: npm ci

- name: Run ESLint
run: npm run lint

- name: Check formatting
run: npm run format:check

typecheck:
name: Type Check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- uses: actions/setup-node@v4
with:
node-version-file: '.nvmrc'
cache: 'npm'

- run: npm ci

- name: TypeScript type check
run: npm run typecheck

test:
name: Test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- uses: actions/setup-node@v4
with:
node-version-file: '.nvmrc'
cache: 'npm'

- run: npm ci

- name: Run tests
run: npm run test

build:
name: Build
runs-on: ubuntu-latest
needs: [lint, typecheck, test]
steps:
- uses: actions/checkout@v4

- uses: actions/setup-node@v4
with:
node-version-file: '.nvmrc'
cache: 'npm'

- run: npm ci

- name: Build
run: npm run build

- name: Verify dist output
run: ls -la dist/

- name: Upload dist artifact
uses: actions/upload-artifact@v4
with:
name: dist
path: dist/
retention-days: 1

publish:
name: Publish to npm + GitHub Release
runs-on: ubuntu-latest
needs: [build]
steps:
- uses: actions/checkout@v4

- uses: actions/setup-node@v4
with:
node-version-file: '.nvmrc'
cache: 'npm'
registry-url: 'https://registry.npmjs.org'

- run: npm ci

- name: Download dist artifact
uses: actions/download-artifact@v4
with:
name: dist
path: dist/

- name: Publish to npm
run: npm publish --provenance --access public
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}

- name: Extract version from tag
id: version
run: echo "version=${GITHUB_REF_NAME#v}" >> "$GITHUB_OUTPUT"

- name: Generate release notes
id: changelog
run: |
version="${{ steps.version.outputs.version }}"
tag="${{ github.ref_name }}"

# Try CHANGELOG.md first (hand-curated notes take priority)
notes=$(awk "/^## \[$version\]/{found=1; next} found && /^## \[/{exit} found{print}" CHANGELOG.md)

if [ -z "$notes" ] || echo "$notes" | grep -q "No unreleased changes"; then
# Fall back to auto-generated notes from conventional commits
echo "No CHANGELOG.md entry found for $version — generating from commits" >&2
# Find the previous tag
prev_tag=$(git tag --sort=-v:refname | grep -v "^${tag}$" | head -1 || echo "")
if [ -n "$prev_tag" ]; then
range="${prev_tag}..${tag}"
else
range="${tag}"
fi

notes="## What's Changed"$'\n\n'

# Group by conventional commit type
feats=$(git log "$range" --pretty=format:"%s" --no-merges | grep "^feat" | sed 's/^feat(\([^)]*\)): /- **\1**: /' | sed 's/^feat: /- /' || true)
fixes=$(git log "$range" --pretty=format:"%s" --no-merges | grep "^fix" | sed 's/^fix(\([^)]*\)): /- **\1**: /' | sed 's/^fix: /- /' || true)
others=$(git log "$range" --pretty=format:"%s" --no-merges | grep -v "^feat\|^fix\|^Merge" | sed 's/^[a-z]*(\([^)]*\)): /- **\1**: /' | sed 's/^[a-z]*: /- /' || true)

[ -n "$feats" ] && notes+="### Added"$'\n'"${feats}"$'\n\n'
[ -n "$fixes" ] && notes+="### Fixed"$'\n'"${fixes}"$'\n\n'
[ -n "$others" ] && notes+="### Changed"$'\n'"${others}"$'\n\n'

notes+=$'\n'"**Full Changelog**: https://github.com/${{ github.repository }}/compare/${prev_tag}...${tag}"
fi

# Write to file to handle multiline safely
echo "$notes" > release-notes.txt

- name: Create GitHub Release
uses: actions/github-script@v7
with:
script: |
const fs = require('fs');
const notes = fs.readFileSync('release-notes.txt', 'utf8').trim();
const tag = context.ref.replace('refs/tags/', '');
await github.rest.repos.createRelease({
owner: context.repo.owner,
repo: context.repo.repo,
tag_name: tag,
name: tag,
body: notes || `Release ${tag}`,
draft: false,
prerelease: tag.includes('-'),
generate_release_notes: notes === '',
});
24 changes: 24 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,9 @@ npm-debug.log*
.wwebjs_auth/
.wwebjs_cache/

# npm pack artifacts
*.tgz

# Runtime data
pids/
*.pid
Expand All @@ -57,5 +60,26 @@ config.json
config.local.json
config.production.json

# OpenBridge runtime state (generated when running against itself)
.openbridge/

# Script runtime state
docs/audit/.current_task

# Test workspaces (created by integration tests)
test-workspace-*/

# Smoke test directory (created by OB-621 fresh install verification)
ob-smoke-test/

# SQLite database files
*.db
*.db-wal
*.db-shm

# Temporary/scratch files
tmp_*
*.traineddata

# Demo/experiment folders (not part of open-source distribution)
demos/
Loading
Loading