Commit Graph

6 Commits

Author SHA1 Message Date
Jack Chen 4fefaa8a78
feat: expose custom MemoryStore via TeamConfig.sharedMemoryStore (#157)
* feat: expose custom MemoryStore via TeamConfig.sharedMemoryStore (#156)

The MemoryStore interface was already public, and SharedMemory / TeamInfo
already used the interface internally. This adds the final user-config wire
so integrators can attach custom backends (Redis, Postgres, Engram, etc.)
without hacking SharedMemory private fields.

Priority: sharedMemoryStore > sharedMemory: true > no memory.
Fully backward-compatible: existing sharedMemory: true users see no change.
SDK-only: the CLI cannot pass runtime objects through JSON config.

Closes #156.

* fix: validate sharedMemoryStore shape and reject from CLI JSON

Addresses Codex P2 review on #157. Plain objects from untrusted JSON could
previously reach `new SharedMemory(plainObject)` and crash later on the first
`.set`/`.list` call with a cryptic TypeError.

Defense-in-depth:
- SharedMemory constructor performs a runtime shape check and throws a clear
  TypeError if the provided store does not implement get/set/list/delete/clear.
- CLI `asTeamConfig` explicitly rejects `sharedMemoryStore` in JSON with a
  message pointing to the SDK path, since this field is documented SDK-only.

Adds 4 tests covering malformed stores (plain object, partial interface,
null, Team constructor path).

* fix: route falsy-but-present sharedMemoryStore through shape check

Addresses Codex finding 2 on #157. The truthy gate silently skipped falsy
values (null, 0, ''), letting config bugs downgrade to the default in-memory
store or no memory instead of failing fast.

Switched to `!== undefined` so any present value reaches SharedMemory's
runtime shape check and throws a clear TypeError. Adds 2 tests: null as a
bogus store throws; omitting the field still honors `sharedMemory: true`.
2026-04-23 18:45:48 +08:00
Jack Chen 075ea3dbc9
docs(cli): clarify --dashboard gating and add to flag table (#141) 2026-04-21 02:26:06 +08:00
Ibrahim Kazimov 647aeff8f4
feat(cli): runTeam DAG dashboard (--dashboard)
Adds `oma run --dashboard` to write a static post-execution DAG HTML to `oma-dashboards/runTeam-<timestamp>.html`.

- Pure `renderTeamRunDashboard(result: TeamRunResult)` in `src/dashboard/`, no FS/network I/O in the library
- `TeamRunResult` gains `goal` + `tasks: TaskExecutionRecord[]` (with `TaskExecutionMetrics`)
- `layoutTasks()` extracted as pure function with cycle detection
- XSS mitigations: `application/json` payload, `</script>` escape, `textContent`-only node rendering
- CLI awaits write before exit (no race with `process.exit`)

Closes #4

Co-authored-by: Ibrahim Kazimov <74775400+ibrahimkzmv@users.noreply.github.com>
2026-04-21 02:22:03 +08:00
hkalex fa4533e8d0 Support DeepSeek 2026-04-16 11:36:03 +10:00
hkalex 5305cb2321 Support MiniMax 2026-04-16 11:06:37 +10:00
Ibrahim Kazimov cdec60e7ad docs: add docs for cli 2026-04-12 20:17:13 +03:00