Skip to content

v2.1.1

Choose a tag to compare

@github-actions github-actions released this 10 Jun 14:58
  • release: macos-13 → macos-15-intel for the Intel mac legs
  • cli leg: pass GITHUB_TOKEN to the build for postgresql_embedded
  • viewer install.sh: build @objectiveai/function-tree before tauri build
  • fix v2.1.1 release legs: unix flock fds, mcp features, viewer dep, leg cp paths
  • Merge pull request #222 from ObjectiveAI/release-2.1.1
  • release: bump all packages to 2.1.1
  • cli tools run: resolve relative exec paths against the version dir; regen snapshot
  • sdk-rs: bound request_message_ids arbitrary generation to JS-safe i64s
  • root build: add function-tree to build graph, fix viewer vote adapter; regenerate all SDK outputs
  • sdk json_schema: register PR #220's 17 new cli types; title tasks.run.ResponseItem variants
  • Merge pull request #220 from ObjectiveAI/cli-tasks-rework
  • mcp: refresh plugin/tool run input-schema descriptions
  • sdk-rs: arbitrary Decimal divides its f32 sample by 10^13 (true hard bound)
  • sdk-rs: scale arbitrary Decimal's f32 sample down by 1_000
  • cli: agents queue deliver — wake queue-pending descendants
  • cli: tasks run --stream-all — full streaming vs per-task success summaries
  • cli: tasks runs+logs — versioned rows, race-free claim, run log writer
  • cli: tasks run — fixed caller-subtree scope, dispatch via crate::run, plugin-aware ctx, 4-field envelope
  • cli: tasks list on Target pattern; per-target concurrent streaming; unlimited default
  • json-schema-builder: objectify bare true schemas in all schema positions
  • cli: tasks schedule — per-AIH uniqueness, plugin triple, overwrite + version
  • cli: run plugin-originated commands in-process, forbid plugins/tools
  • sdk json_schema: register tools::get::Exec; regenerate after cli-tasks-rework merge
  • Merge remote-tracking branch 'origin/cli-tasks-rework'
  • sdk+schemas: title agents.message Response/ResponseItem variants; regenerate
  • cli: rework plugin/tool storage, run/get surface, and plugin-path context
  • sdk json_schema: module-aligned feature blocks, dedup, complete cli coverage
  • no feature gate agent arguments
  • cli: add agents instances get, remove me, list -> direct children
  • Merge remote-tracking branch 'origin/main' into cli-tasks-rework
  • cli: implement agents instances list
  • test scripts: uniform hardened api-server spawn/reap + standardize viewer snapshot env var
  • objectiveai-api tests: set request_message_ids on response chunk inits
  • cli: add 'me' target to logs/queue readers
  • sdk: add missing request_message_ids to AssistantResponseChunk test fixtures
  • cli test.sh: reap spawned api server, fix summary miscount
  • cli tests: green suite + harness fixes (seed→dangerous_advanced, function_name, snapshot bridge)
  • Merge pull request #208 from ObjectiveAI/maya/web
  • cli: authorize agents queue delete by sender hierarchy
  • cli+sdk: postgres tcp bootstrap, seed → dangerous_advanced, tool function_name in logs
  • db query: arbitrary single-statement read-only SQL with token budget (#219)
  • json-schema-builder: forbid single-variant anyOf with a titled lone variant
  • agents/logs: collapse single-variant Request/ResponseItem to read aliases
  • agents logs read all: surface message_queue.key on ClientNotification
  • mcp-proxy: in-process queue delegate with token-based delivery confirmation (#218)
  • ReadMessageQueueResult: per-row shape
  • cli+sdk: hoist tasks to a root-level command
  • queue read pending: surface message_queue.id as delete_id
  • agents logs read subscribe: first-ping-or-go-inactive wait loop
  • unify queue read pending with logs read all + thread sender AIH
  • logs: wire agents logs read all + read pending to LogItem blocks
  • queue: soft-delete via active flag + LogWriter logs MessageQueueContent rows
  • move queue-row signal from ClearMessageQueue RPC to request_message_ids on chunk
  • logs: drop is_input column from the two video content tables
  • agents logs read id: media variants become tuple variants, drop is_input
  • agents logs read id: typed 10-variant Response, no serde_json::Value
  • logs::lookup_session: read continuation from agent_continuations, not the response blob
  • db: agent_continuations registry — per-chunk upsert in the yielder loops
  • spawn + functions runner: gate Id emission on LogWriter.written_once
  • logs: LogWriter written_once / wait_written_once
  • logs: LogWriter owns the coalescing listener task; write is sync
  • logs: drop dead agent_instance_hierarchy column from agent_completion_responses
  • agents message: --enqueue / --enqueue-with-key
  • cli+sdk: hoist spawn/message out of instances, add agents/logs/read, rename message_queue → queue
  • tags: tag_groups table + spawn-by-tag + conduit-driven upgrade
  • spawn + message: message field is required (drop Option wrapper)
  • agents instances message: rename SpawnId/SpawnChunk to match spawn's variants
  • agents instances message: stream-aware delivery with file-lock + DB race
  • sdk+cli: agents instances message message field is now optional (no-op when None)
  • sdk+cli: spawn prompt: Option<Vec<Message>> -> message: Option<RichContent>
  • cli: drop spawn-time message_queue drain (API pulls via conduit)
  • cli: collapse agents-spawn multi-hierarchy bookkeeping to single capture
  • cli: inline functions execute; delete instance/ + subprocess plumbing
  • cli: consolidate shared modules under websockets/
  • cli: drop RunItem; run() returns ResponseItem stream directly
  • cli: agents spawn stream=false now self-respawns via BinaryExecutor
  • sdk: add BinaryExecutor::detach(bool) for orphan-survival spawns
  • sdk+cli: make agents instances spawn prompt optional
  • cli: move shared modules out of instance/
  • cli: agents spawn now runs in-process with message-queue restart
  • cli: rename prompts db tier to message_queue
  • cli: propagate AgentInstanceRegistry::new failures instead of swallowing
  • cli: keep claim file persistent on unix; flock state is source of truth
  • cli: fix TOCTOU race in unix claim-file reclaim path
  • cli: per-agent process-owned lock files in instance subprocess
  • cli: rename functions executions create -> functions execute
  • cli: drop vestigial caller_agent_instance_hierarchy from LogWriter
  • cli: drop redundant bucket_list Vec in writer.write
  • cli: per-agent sequential dispatch; request blob loses agent hierarchy
  • cli: drop explicit "index" + nextval() from writer CTEs
  • cli: collapse logs.messages_index_seq into BIGSERIAL on the column
  • cli: reorder assistant-row emission — refusal last, reasoning first
  • cli: bring back messages + messages_queue, downgrade-on-update semantics
  • cli: fan out streaming-content row writes concurrently
  • cli: remove messages / queue / pending / schema surface; rewire logs writer
  • cli: drop unused mime_guess and ratatui deps; tighten writer.write_notification doc
  • cli: drop unused blob_fingerprint call at end of writer.write
  • cli: implement db::logs::writer body — iterator-driven streaming UPSERTs
  • cli: move all log types + walkers into objectiveai-cli; drop SDK logs module
  • sdk+cli: log_rows iterator API; delete legacy *Log struct types
  • cli: replace logs schema with hybrid blob + streaming-content design
  • cli: postgres logs schema + log_reader role
  • sdk+cli: postgres-backed log shapes; drop filesystem logs tree
  • sdk: drop function-invention log types (#217)
  • cli: remove function invention; tracked by #217
  • cli: remove instance unix sockets entirely
  • cli: drop pg_hba.conf rewrite; auth with the fixed initdb password
  • cli: scrub stale filesystem::db::* doc-link references (post-stage 11)
  • cli: inline schema into db::init, drop migrations dir + fix initdb password
  • cli: db::tasks sqlx impls — schedules table (stage 9)
  • cli: db::prompts sqlx impls — the big one (stage 8)
  • cli: db::messages Queue sqlx impls (stage 7)
  • cli: db::tags sqlx impls (stage 6)
  • cli: db::schema sqlx impls — messages/files primitives (stage 5)
  • cli: db::init pool/migration runner + 0001_initial_schema.sql (stage 2)
  • cli: scaffold db/ + drop filesystem/db/ + sqlite→sqlx callsite fan-out (stage 1, big-bang)
  • cli: switch postgresql_embedded to bundled + drop default features
  • cli: cross-platform embedded postgres bootstrap (unix socket + windows tcp loopback)
  • cli: stage 1 embedded postgres bootstrap
  • sdk+cli+api: remove AgentCompletionNotify path; agents instances message becomes pure enqueue
  • api+sdk+cli: queue drain now flows through the WS reverse-attach
  • Merge branch 'main' of https://github.com/ObjectiveAI/objectiveai
  • cleanup
  • api snapshots: regenerate vector_completions + functions_executions client_tests
  • sdk+cli: add read_message_queue / clear_message_queue server requests
  • cli: drop apply-tag-as-side-effect from agents instances message
  • cli: agents tags apply --agent-tag <src> aliases an existing tag
  • cli: rename agents tags add -> agents tags apply; three-way Target enum
  • treewide: recover utf-8 punctuation in source files
  • cli: move agents {spawn,message,read,me,list/active} under agents/instances/; flatten agents/list
  • cli tests: ride the agents → agents instances command refactor
  • sdk-js: rebuild dist/ + wasm loader
  • agents tasks run: ship the typed-ResponseItem execute path
  • sdk-js: prune mcp + client_objectiveai_mcp generated trees
  • vote: regenerate JSON schema + sdk-js zod export
  • vector_completion: replace Vote.agent (hierarchy) with agent_full_id + agent_id
  • json-schema: drop mcp / client_objectiveai_mcp from published set + ban bare null properties
  • Revert "sdk-go: roundtrip preserves type:null fields via nullType tag"
  • api: share one test api server across all integration binaries
  • api: tune nextest retries to 3× exp 2s/10s; sdk-js: rebuild wasm
  • sdk-go: roundtrip preserves type:null fields via nullType tag
  • Revert "sdk-rs: bound arbitrary Decimal to ±1000 to dodge AddAssign overflow"
  • sdk-rs: bound arbitrary Decimal to ±1000 to dodge AddAssign overflow
  • sdk-go: roundtrip emits anyOf for sum-type variants; api: test.sh --no-fail-fast
  • vector_completion: strip per-process suffix from Vote.agent in normalize
  • api: bump nextest retries to exponential 1s/10s × 5
  • sdk-py: escape stdlib top-level package names; api: limit nextest parallelism
  • mcp-proxy: return 404 from handle_delete uncached path when payload is empty
  • json-schema: unregister logs::*::ResponseItem tier aggregates
  • sdk-py: escape py keywords + relocate file/dir path collisions + docstring fix
  • sdk-go: fix type X X self-alias bug + regen
  • json-schema: unregister tier-aggregate ResponseItems
  • sdk-go: regenerate from updated JSON schemas
  • viewer: update cli_command_config_viewer_get snapshot to untagged ResponseItem
  • test-fixtures: add serde_json preserve_order to both mcp-plugin Cargo.tomls
  • sdk-rs json_schema_coverage: register LookupState, shorten message_log_reference renames
  • json_schema.rs: register all transitively-referenced cli command types
  • viewer/test.sh: share the rustpython-only cli binary with the cli suite
  • agents_duplicate_server_names_e2e: proxy disambiguates colliding serverInfo.name
  • cli: agents tasks run + required schedule --name; wire id = "{name}-{db_id}"
  • agents_duplicate_tool_names_e2e: bump SEED to 13 for ≥2 unique tool calls
  • cli: humantime-format interval on agents tasks list ResponseItem
  • cli: agents tasks list + required description on schedule
  • Merge remote-tracking branch 'origin/main' into maya/web
  • cli: rename schedules.last_invoked_atlast_ran_at
  • cli: add last_invoked_at column to schedules
  • test_twenty_agents_json_schema_10x_tools_seed_42: install the 10 fixture tools
  • items reset timeout
  • cli: add --oneshot to agents tasks schedule; make interval optional
  • cli: agents tasks schedule — register a command + interval in tasks.sqlite
  • instance/streaming: react to log_ready_id_rx via select! in main chunk loop
  • cli: agents message-queue deliver — parallel fan-out drain
  • IndexedLogReference: optional path + optional error for empty-id wrappers
  • plugin executor: derive Clone (counter goes behind Arc)
  • sdk: adjacently tag agents read id Response with type/value
  • log_file_kind tests: update id_with_internal_underscore to assistant-prefixed path
  • Merge pull request #215 from ObjectiveAI/drop-message-queue-key-migration
  • cli: drop prompts.key ALTER migration
  • Merge pull request #214 from ObjectiveAI/add-message-queue-key
  • cli: --key upsert for agents message-queue add (closes #213)
  • recursive invention snapshot tests: align cli body with SDK shape
  • Merge pull request #212 from ObjectiveAI/add-message-enqueue
  • Merge remote-tracking branch 'origin/main' into add-message-enqueue
  • cli: move message-queue listmessage-queue read pending (#211)
  • viewer: fix plugins list Request field for path -> path_type rename
  • mcp-proxy: fix session_manager test for slimmed SessionPayload
  • logs: role-split messages command tree + role-tagged master-chunk refs
  • cli: rename queuemessage-queue + add delete leaf (#211)
  • cli: Error::DrainLost preserves both errors on re-enqueue failure (#211)
  • cli logs: complete role-subdir classification, drop dead bare classifiers
  • cli: drop rollback_drain eprintln helper
  • cli: re-enqueue drained queue items on spawn/message failure (#211)
  • cli: drain queue into spawn and message pre-instance (#211)
  • instance/streaming: emit LogStreamReady first by buffering chunks
  • cli: simplify queue payload to one RichContent per row (#211)
  • cli prepare.sh: also seed the shared _mcp_session/tools/ registry
  • cli: inline-SQLite queue content + agents queue read id leaf (#211)
  • tests: migrate agents-read-all callers to targets/Target
  • tests: migrate agents-message + agents-spawn callers to MessageTarget/agent_tag
  • Revert "cli command/agents/message.rs: accept Chunk-first from instance subprocess"
  • instance/streaming: emit LogStreamReady from the chunk loop, ahead of any Chunk
  • cli: fix Windows handle-inheritance leak, plugin orphans, message Chunk ordering, and stale snapshots
  • cli: merge prompt-queue into tags.sqlite, add agents queue list, hoist Absent to top-level Response variant (#211)
  • cli: add agents queue add (write-only enqueue) with Direct-existence + Tag pass-through (#211)
  • Merge pull request #210 from ObjectiveAI/add-agent-tags
  • Merge branch 'main' into add-agent-tags
  • cli: agents message target → MessageTarget enum (Direct | Tag) with tag-resolution mode
  • cli: surface bound tags on agents me
  • cli tests: add HangPreventingBinaryCommandExecutor with 60s CONFIG_BASE_DIR watchdog
  • cli snapshot tests: match the 3-SDK canonical comparison pattern
  • cli: tag-based targets in agents read + multi-tag lookup with explicit pending state
  • agents/message: add dangerous_advanced.stream, mirroring agents/spawn
  • cli: agents read all/pending — repeated --target flag with docker-style instance=L[,parent=P] syntax
  • cli: agents read subscribe — mirror agents message arg shape
  • cli: rename agents tags getagents tags lookup
  • cli: agent tags — agents tags get/add + --agent-tag on spawn/message + first-chunk auto-upgrade (#209)
  • cli tests: rewire integration tests to consume pre-staged .objectiveai-tests/
  • asdf
  • ignore runtime test data
  • cli test.sh: stop killing child processes in cleanup trap
  • cli test.sh: stage runtime tree from objectiveai-tests/ + run prepare.sh
  • cli: expand agents me response with agent_id / agent_full_id / agent_remote
  • cli: add objectiveai-tests/prepare.sh + fix tool-slot directory shape
  • cli: move snapshot from assets/vector/completions/ to assets/function/executions/
  • cli: stage every integration test's static on-disk data under objectiveai-tests/
  • test: switch Rust test.sh harness to cargo-nextest
  • api: remove laboratory-execution integration tests + snapshots
  • viewer: migrate to renamed SDK types after main merge
  • Merge remote-tracking branch 'origin/main' into maya/web
  • api: double MCP_CALL_TIMEOUT_MS in test_clients (30s → 60s)
  • api: regenerate snapshot fixtures (UPDATE_SNAPSHOTS=1)
  • mcp: parse + act on X-OBJECTIVEAI-MCP-{ROOT,TOOLS,PLUGINS} headers per session
  • api: stamp X-OBJECTIVEAI-MCP-{ROOT,TOOLS,PLUGINS} on the /objectiveai per-URL entry
  • sdk: add ClientObjectiveaiMcp::mcp_headers + ClientObjectiveaiMcpHeaders
  • cli main: thread fatal through write_error_line
  • sdk mcp: gate Connection on server-declared capabilities
  • sdk: remove dead MCP "mock" URL feature wholesale
  • cli streaming: strip MCP-trace instrumentation from run_subprocess
  • functions executions create: restore full source-form convention on function/profile/input
  • agents_duplicate_tool_names_e2e: add 500ms settle delays between turns
  • fix vector_completion_snapshots: migrate fixture to current Alpha vector schema
  • fix function_shared_session_id_e2e: replace function execution with agents spawn
  • fix agents_continuation_tool_session_e2e: 4 layered fixes
  • cli streaming: add Error variant to InstanceEmission
  • fix plugin_mcp_function_swarm_e2e: snake_case Special variant
  • fix function_shared_session_id_e2e: lowercase Special variant + direct InlineFunction deser
  • fix function_invention_recursive_snapshots: aggregate chunks into unary
  • fix: scope 'state' group to nested StateArgs in functions inventions recursive create remote
  • update mock_7/mock_20 function-execution snapshots to current values
  • fix function_execution_snapshots: drill output.output on actual side
  • fix function_execution_snapshots: stream for split_tweet_scorer
  • sdk: scope the "input" clap group to a nested InputArgs sub-struct
  • cli tests: drop externally-tagged wrapper from plugin_dispatch_e2e pointer
  • cli tests: accept tool_dispatch_e2e error baseline w/ cli exit-status line
  • cli tests: drop externally-tagged wrapper from tool_dispatch_e2e pointers
  • cli tests: drop externally-tagged wrapper from viewer_send_e2e pointers
  • cli tests: fix agents_duplicate_tool_names_e2e legacy expectations
  • cli tests: fix agents_continuation_tool_session_e2e legacy expectations
  • cli tests: enable streaming on plugin_mcp_function_swarm_e2e
  • cli tests: fix function_shared_session_id_e2e legacy expectations (A, E)
  • cli tests: enable streaming on function_invention_recursive_snapshots
  • cli tests: enable streaming on function_execution_snapshots
  • cli tests: accept plugin_mcp_dispatch_round_trip baseline snapshot
  • json-schema: regen for ws_session_id → mcp_session_id reverse-attach refactor
  • json-schema: regen openrouter Agent + AgentBase with context_compression field
  • cli tests: project plugin_mcp_dispatch_e2e snapshot from per-message log files
  • openrouter: add context_compression agent field, plumb to plugins on chat completion
  • cli: clear stdio inheritance flag in instance subprocess (Windows)
  • api+cli: make X-OBJECTIVEAI-AGENT-REMOTE genuinely optional, not empty-string
  • cli conduit: accept empty X-OBJECTIVEAI-AGENT-REMOTE in require_transient
  • api: stop stripping X-OBJECTIVEAI-* headers from reverse-channel forwards
  • api: register reverse-channel by response_id; drop dead ws_session_id
  • cli tests: fix plugin_mcp_dispatch_e2e legacy expectations
  • api+cli: wire twenty-agents-json-schema-10x-tools fixtures for vector completion snapshot test
  • cli tests: fix agents_message_continuation_e2e to current conventions
  • release: Go SDK versions independently via objectiveai-sdk-go/version.txt
  • release: objectiveai-sdk + objectiveai-sdk-macros 2.1.0
  • api: update test call sites to current SDK method signatures
  • sdk: mark every cli/command aggregator Response/ResponseItem as #[serde(untagged)]
  • sdk: drop strip_agent_instance_hierarchy_lines from AgentCompletion::normalize_for_tests
  • ci: release-triggered Rust-SDK-only publish workflow
  • tests: drop standalone objectiveai-mcp, seed only the on-disk fixtures
  • sdk+cli+mcp: thread mcp_session_id through AgentArguments
  • api/build: fix botched std::path_type::Pathstd::path::Path
  • cli: mark the handshake-pipe read end inheritable on Windows
  • cli/python_tests: fix botched std::path_type::Pathstd::path::Path
  • proxy: stamp session-global transient headers on the initial upstream connect
  • cli/command: wrap schemars::schema_for!(…) in ResponseSchema(…)
  • sdk: drop notification_value_test_coverage test
  • sdk-js: regen for the tier-alias conversion — full suite green
  • sdk + cli: single-subcommand tiers become type aliases
  • sdk-js: raise dts worker heap in build.sh
  • sdk: #[json_schema_ignore] every tier aggregate; always-inline Value
  • sdk: #[json_schema_ignore] the root ResponseItem aggregates; inline Value everywhere
  • sdk: add #[schemars(extend("omitempty" = true))] to cli::Error optional fields
  • sdk: ResponseSchema wrapper + omitempty fixes + all schema tests pass
  • sdk: restore manual WithExpression + Schema registrations
  • sdk: register split-folder cli/command types + add variant titles
  • cli/command: split each leaf into its own folder + per-submod folder
  • cli/command: rename discriminator field pathpath_type
  • sdk: schemars renames + json_schemas registrations for cli/command tree
  • sdk: missing serde/scope fixes surfaced by cargo test -p objectiveai-sdk
  • cli tests: switch MessageRequest to parent/instance shape
  • agents message Response: agent_id → agent_instance_hierarchy (full lineage)
  • agents message cli: rename fallback's bare_id → agent_instance
  • agents message: split target id into parent_agent_instance_hierarchy + agent_instance
  • sdk: add path: Path discriminator field to every leaf Request
  • sdk-js + viewer: generated viewer execute fns over typed-request transport
  • bindings: accept (RemoteAgentBaseWithFallbacks, RemotePath) tuples
  • objectiveai-mcp: per-session AgentArguments + accept-any-session reconnect
  • sdk-js: delete viewer mode from the API client
  • sdk: thread AgentArguments through every CommandExecutor call
  • viewer + sdk: cli_run spawns the cli binary via BinaryExecutor
  • executor: respect AgentArguments on CliCommandExecutor
  • spawn: env_remove the five transient identity keys on None
  • in-process objectiveai-mcp for the instance subprocess
  • tests: unify all CLI integration tests under .objectiveai-tests/
  • json schemas: regen + register missing client_objectiveai_mcp types
  • viewer: post to plugin iframes with targetOrigin "*" (#203)
  • conduit: dial plugin MCP via shared plugins::run::execute
  • test: replace fn-exec continuation token with agents list active + per-agent message
  • cli: shared child stdout+stderr reader, used by plugins run + tools run
  • test: extend shared-session test with continuation + resumption
  • plugins protocol: flatten Output, move MCP into ResponseItem
  • conduit: drop loser-eviction sweep; respect upstream DELETE on SessionTerminate
  • cli: require all 6 transient headers; propagate to plugin subprocess env
  • proxy: agent-identity headers join the transient bag
  • test: drop stale X-FOO mention from assertion comment
  • proxy: transient-per-session header overrides on every outbound request
  • cli: strip argv[0] before parse_request
  • mcp args: move from URL query to X-OBJECTIVEAI-ARGUMENTS header
  • per-MCP routing: proxy treats every CLI-hosted MCP as its own upstream
  • test: plugin-MCP function-execution swarm e2e + fixture
  • Merge remote-tracking branch 'origin/main' into maya/web
  • mock: deterministic calls override on AgentBase
  • mcp: orphan DELETE for fresh-mint connections dropped without use
  • objectiveai-api: serve /objectiveai-mcp on a loopback-only listener
  • client_objectiveai_mcp: type server_request / server_response end-to-end
  • mcp: fan DELETE out to upstreams across proxy + SDK
  • objectiveai-mcp: SDK-only refactor; add parse_request to SDK
  • objectiveai-cli + objectiveai-mcp: drop the unused mcp bool config
  • objectiveai-cli + objectiveai-mcp: use default SDK features
  • sdk-rs: complete CommandResponse rollout — tier delegations + executors
  • sdk-rs: hand-roll CommandResponse for inline-defined leaf types
  • sdk-rs+cli+mcp: CommandResponse for plugins/tools run; supporting refactors
  • sdk-rs: impl CommandResponse for agents::read::id::Response
  • sdk-rs: swap .expect("CommandResponse serializes") for .unwrap()
  • sdk-rs: hand-roll CommandResponse JSONL impls for 19 alias targets
  • sdk-rs: inventory all leaf Response / ResponseItem types
  • sdk-rs: impl CommandResponse for the four bare media types
  • sdk-rs: delegate From<RichContentPart> arms; unify video carriers
  • sdk-rs: add per-type From<…> for ContentBlock impls
  • sdk-rs: add CommandResponse trait + McpResponseItem carrier
  • sdk-rs: drop CommandRequest::from_command + CommandRequestError
  • objectiveai-mcp: migrate off legacy cli::output to typed RunItem stream
  • cli tests: fix imports and re-anchor wire-shape assertions
  • make all features default
  • cli: revert run.rs delegation through CliCommandExecutor
  • cli: add CliCommandExecutor, delegate run.rs through it
  • json-schema: regenerate; drop orphaned viewer schema, add missing cli leaves
  • sdk+cli: typed Manifest conversions, drop plugins/tools round-trips
  • cli: drop local ActiveAgent struct, use SDK ResponseItem natively
  • sdk+cli: collapse QueueItem/QueueMessage/Content duplicates
  • sdk+cli: functions/get + profiles/get expose resolved RemotePath
  • cli + sdk: make objectiveai-cli compile
  • cli: run.rs returns a typed stream; instance returns a stream too
  • cli: rework instance dispatch to JSON-blob over inherited-pipe handshake
  • Fix borrow + convert-signature errors from agent-identity refactor
  • cli: implement plugins/run as bidirectional bare-naked port
  • Forward agent_full_id and agent_remote through MCP proxy session resume
  • cli: revert standard.rs + Context Clone from 8db7574
  • Finish agent-identity exposure on completion responses
  • cli: streaming endpoints actually stream
  • cli: rework tools/run to yield items inline as they arrive
  • cli: implement tools/run as channel-backed stream
  • agent identity refactor: agent_id, agent_full_id, agent_remote
  • Remove unused schemas module and its builder
  • Replace CLI MessageKind with SDK RequestMessageKind
  • cli: implement plugins/install/github
  • cli: implement agents/read/subscribe channel-backed stream
  • cli: implement agents/read/{all,pending} read-multi leaves
  • cli: implement 3 simple stream-iter list leaves
  • cli: implement 3 publish leaves (agents, functions, profiles)
  • cli: implement plugins/install/filesystem + tools/install instructions
  • cli: implement plugins/get + tools/get unary filesystem reads
  • cli: implement 4 unary HTTP read leaves
  • cli: implement command/agents/me execute
  • cli: implement command/agents/message execute
  • sdk+cli: drop detach field, rename to stream throughout
  • cli: implement functions/executions/create/{standard,swiss_system} + functions/inventions/recursive/create/{alpha_scalar,alpha_vector,remote} execute bodies
  • cli: implement command/agents/spawn execute
  • api: skip merged_messages on continuation to stop personality spam
  • cli+sdk: relocate produce_message_rows for vector tier
  • cli+sdk: relocate produce_message_rows for functions/inventions/recursive tier
  • cli+sdk: relocate produce_message_rows for functions/inventions tier
  • cli+sdk: relocate produce_message_rows for functions/executions tier
  • cli+sdk: relocate produce_message_rows for agents tier
  • sdk+cli: move LogReference types into objectiveai_sdk::logs module, drop re-exports
  • Fix per-agent identity construction in agent completions
  • sdk: hoist LogReference/IndexedLogReference into crate root + ungate *_log modules
  • cli+sdk: relocate vector tier filesystem helpers (vector, not vectors)
  • cli+sdk: relocate functions/inventions/recursive tier filesystem helpers
  • cli+sdk: relocate functions/inventions tier filesystem helpers
  • cli+sdk: relocate functions/executions tier filesystem helpers
  • cli+sdk: relocate agents tier filesystem helpers to logs/agents/
  • cli: scaffold logs/ mirror module + relocate ProducesRequestFiles
  • sdk: strip dead crate::filesystem refs from cli-gated json_schema block
  • cli: relocate RichContent/SimpleContent extract_media as free functions
  • cli: config/functions/profiles/pairs/* execute bodies (4)
  • sdk: pair-favorites leaves carry twin function+profile paths
  • cli: port legacy --source all dedup + concurrency to list leaves
  • cli: config/functions/* execute bodies (18)
  • cli: config/{swarms,mcp,viewer}/* execute bodies (19)
  • cli: config/agents/* execute bodies (5)
  • cli: port legacy build_http_client precedence chain into Context::new
  • reasoning/refusal logs are raw text — write .txt not .json
  • cli: surface filesystem clear count in every logs/.../clear Response
  • cli: vector tier cli leaf bodies (6) + top-level logs/clear
  • cli: typed reads for functions/inventions + vector tiers; refactor read_file_by_id + agents/read/id
  • cli: typed reads + 9 cli leaf bodies for logs/functions/executions/
  • cli: typed read_*/subscribe_*/list_* for response tier; fill 40 cli leaf execute bodies
  • cli: typed read_* for logs/agents/completions/request/; fill 12 cli leaf execute bodies
  • cli: add read_json_typed helper + Error::TypedDeserialize for upcoming typed log reads
  • cli: port update execute body — channel-backed streaming
  • sdk-rs+cli: convert update to a streaming leaf
  • sdk-rs: typed docker-style paths on cli leaves — RemotePathCommitOptional[OrFavorite]
  • cli: Context now carries an SDK HttpClient; enable sdk's env feature
  • cli: implement mcp + viewer execute bodies (kill, spawn, send, generate-secret-signature-pair)
  • cli: scaffold remaining 2 tiers (functions + logs) — full SDK tree mirror
  • cli: scaffold command tree mirror — Context + 8/10 tier stubs
  • sdk-rs: delete filesystem module + feature flag + unused deps
  • sdk-rs: delete cli::output module + strip its schema_for! registrations
  • cli: rewire 48 consumer files to local filesystem module
  • cli: transplant filesystem module from SDK (verbatim copy + intra-crate-path rewrite)
  • sdk-rs: cli-local AgentSpec/FunctionSpec/ProfileSpec wrappers carry the Favorite variant
  • Revert "sdk-rs: add Favorite(String) variant to every inline-or-remote enum"
  • sdk-rs: pub async fn execute + execute_jq on every tier mod.rs + root command.rs
  • sdk-rs: port StreamOnce + tier-level execute/execute_jq on agents/list (proof of pattern)
  • sdk-rs: root-level Command/Request/ResponseItem at cli::command
  • sdk-rs: tier-level Request/Response[Item] aggregators + schema TryFrom impls
  • sdk-rs: split execute into execute_streaming + execute for the 6 chunk-or-id leaves
  • sdk-rs: per-leaf pub async fn execute (+ execute_jq) on every leaf and schema submodule
  • sdk-rs: rename executor → command_executor; add CommandExecutor::execute_one
  • sdk-rs: TryFrom for Request on logs/agents/ subtree
  • sdk-rs: TryFrom for Request on logs/{clear, vector, functions}
  • sdk-rs: TryFrom for Request on config/{mcp, swarms, viewer} (19 leaves)
  • sdk-rs: TryFrom for Request on config/functions/ tree
  • sdk-rs: TryFrom for Request on config/agents/{get, favorites/*}
  • sdk-rs: TryFrom for Request on agents/{spawn, message, publish}
  • sdk-rs: TryFrom for Request on agents/list/* + agents/read/*
  • sdk-rs: TryFrom for Request on trivial agents/ leaves
  • sdk-rs: TryFrom for Request on functions/inventions/recursive/create/{alpha_scalar, alpha_vector, remote}
  • sdk-rs: TryFrom for Request on functions/executions/create/swiss_system
  • sdk-rs: TryFrom for Request on functions/executions/create/{standard, swiss_system}
  • sdk-rs: TryFrom for Request on functions/publish + functions/profiles/publish
  • sdk-rs: TryFrom for Request on remaining trivial functions/ leaves
  • sdk-rs: TryFrom for Request on trivial functions/ leaves
  • sdk-rs: TryFrom for Request on swarms/publish
  • sdk-rs: switch trivial TryFrom Error from Infallible to FromArgsError
  • sdk-rs: TryFrom for Request on viewer/ leaves
  • sdk-rs: TryFrom for Request on tools/{get, install, list}
  • sdk-rs: TryFrom for Request on tools/ leaves
  • sdk-rs: TryFrom for Request on plugins/{list, install/filesystem, install/github}
  • sdk-rs: TryFrom for Request on plugins/ leaves
  • sdk-rs: TryFrom for Request on mcp/kill (missed in prior commit)
  • sdk-rs: TryFrom for Request on mcp/ leaves
  • sdk-rs: add FromArgsError for TryFrom for Request impls
  • sdk-rs: add Favorite(String) variant to every inline-or-remote enum
  • sdk-rs: harden PluginExecutor against listener death
  • sdk-rs: implement PluginExecutor
  • sdk-rs: make cli::plugins::TypedOutput::Command.id required
  • sdk-rs: rename cli::plugins PluginOutput→Output, TypedPluginOutput→TypedOutput; add Mcp.headers
  • sdk-rs: drop PluginCommandResponse + CommandResponseValue from cli::plugins
  • sdk-rs: decouple cli::plugins from cli::output
  • sdk-rs: implement BinaryExecutor
  • sdk-rs: emit --jq before positional name + trailing args on plugins/tools run
  • sdk-rs: scaffold cli-executor binary + plugin submodules
  • sdk-rs: add CommandExecutor trait behind cli-executor feature
  • sdk-rs: functions/mcp/plugins/swarms/tools/viewer/update — clap Args/Command/Schema on every leaf, Command enum at every tier
  • sdk-rs: logs — clap Args/Command/Schema on every leaf, Command enum at every tier
  • sdk-rs: config — clap Args/Command/Schema on every leaf, Command enum at every tier
  • sdk-rs: agents — schemas wired into the clap tree as leaf subcommands
  • sdk-rs: agents — pub enum Command at every routing tier
  • sdk-rs: strip redundant feature = "cli" cfgs from inside cli::command
  • sdk-rs: cli::command::agents — add clap-derived Args to every leaf + schema submodule
  • sdk-rs: add jq to every nested request_schema / response_schema Request
  • sdk-rs: list leaves — --source flag, not a sub-command path segment
  • sdk-rs: add clap as a cli-feature-gated optional dep
  • sdk-rs: add pub jq: Option<String> to every non-Ok-returning Request
  • sdk-rs: hoist config out of every endpoint subtree into a single top-level tree
  • sdk-rs: cli::command — add Command stub
  • sdk-rs: CommandRequest — add from_command + CommandRequestError
  • sdk-rs: cli::command list Responses match the cli's actual emit shape
  • sdk-rs: same untagged-collapse on the remaining three list Responses
  • sdk-rs: cli::command — Response/ResponseItem enums untagged + collapsed where degenerate
  • sdk-rs: agents/read/id Response — variant names mirror full leaf path
  • sdk-rs: agents/read/id Response — untagged tuple variants, alias to leaf Response
  • sdk-rs: agents/read/id Response — typed 18-variant log-content enum
  • sdk-rs: cli::command — CommandRequest impl on nested schema Requests
  • sdk-rs: rename IntoCommand trait → CommandRequest
  • sdk-rs: cli::command — inline request_schema / response_schema modules on every leaf
  • sdk-rs: cli::command::logs — inline ResponseItem on the 5 list leaves
  • sdk-rs: cli::command::logs — typed Response on vector / function-invention request envelopes
  • sdk-rs: cli::command::logs — request/response split + 24 missing leaves
  • sdk-rs: cli::command::logs — media leaves use the read methods' actual return types
  • sdk-rs: cli::command::logs — messages logprobs Response = Logprobs
  • sdk-rs: response-side continuation + retry_token logs are .txt, not .json
  • sdk-rs: cli::command::logs — typed *Log Response on the 12 leaves that have one
  • sdk-rs: cli::command::logs — unified Request tree mirroring logs …
  • sdk-rs: cli::command — pub type for Response aliases, not pub use
  • sdk-rs: swarms/get Response is GetSwarmResponse, not RemoteSwarmBase
  • sdk-rs: also derive Debug + Clone + PartialEq across cli::command
  • sdk-rs: derive Serialize/Deserialize/JsonSchema across cli::command
  • cli: remove the entire api module
  • sdk-rs: gate --stream behind --dangerous-advanced JSON on Request
  • sdk-rs: --stream on the 3 streaming-endpoint families
  • sdk-rs: tools/run Stderr carries cli::Error; drop the separate Error
  • sdk-rs: tools/run split Line into Stdout/Stderr variants
  • sdk-rs: tools/run ResponseItem::Line carries just a String
  • sdk-rs: the remaining list leaves become streams
  • sdk-rs: favorites/config/get leaves become streams
  • sdk-rs: type the functions/inventions Value placeholders
  • sdk-rs: type the plugins module — drop serde_json::Value where typed
  • sdk-rs: type the tools module — drop serde_json::Value
  • sdk-rs: drop Default on ErrorType + redundant rename on Error.type
  • sdk-rs: Error level/fatal optional; tools/run mirrors plugins/run shape
  • sdk-rs: add Response/ResponseItem to every remaining cli leaf
  • sdk-rs: ResponseItem for tools/run + plugins/run
  • sdk-rs: add Request to tools/run + plugins/run with run subcommand
  • sdk-rs: drop cli::command::instance entirely
  • sdk-rs: agents/me Response = struct { agent_instance_hierarchy }
  • sdk-rs: agents/publish Response = struct { sha }
  • sdk-rs: agents/spawn Response = struct { agent_instance }
  • sdk-rs: add cli::command::Ok and use it for unit-success responses
  • sdk-rs: inline filesystem types into agent leaves, prefix support types
  • sdk-rs: rewrite agents leaf Response/ResponseItem with domain types
  • sdk-rs: add Response / ResponseItem to every agents leaf
  • sdk-rs: replace serde_json::Value with typed SDK bodies
  • sdk-rs: Request + IntoCommand for every remaining cli leaf
  • sdk-rs: resolve agents/spawn IntoCommand TODO — always emit --agent-inline
  • sdk-rs: add Request + IntoCommand to every agents leaf
  • sdk-rs: add IntoCommand trait at cli::command root
  • sdk-rs: hoist cli::output::Error up to cli::Error
  • sdk-rs: drop logs from cli::command, add instance
  • sdk-rs: scaffold cli::command leaf-stub tree
  • Fold objectiveai-cli-stream into objectiveai-cli as instance subcommand
  • cli: quadruple two_agents continuation teardown timeout to 720s
  • sdk-go: fix Notification roundtrip — preserve type:object on $ref variants
  • sdk-py: fix pydantic-roundtrip for Notification + TypedPluginOutput
  • Fix tests after agent_id rename
  • Regenerate JSON schemas + SDKs after agent_id rename
  • Rename: agent_id (hierarchy) → agent_instance_hierarchy; agent_id_base (leaf) → agent_id
  • sdk: register CommandComplete + PluginCommandResponse for codegen; regen SDK artifacts
  • sdk + cli: plugin↔CLI channel switches to {id, value: Output} envelope
  • cli + sdk: bidirectional plugin↔CLI commands with request_id correlation
  • cli: emit bare-leaf agent_id in MessageDelivered / MessageQueued
  • cli: drop SLOT_TAKEN_MAX_RETRIES cap, retry forever
  • cli + cli-stream: single-flight admission via atomic socket bind
  • sdk: add Effort::Xhigh to claude_agent_sdk + plug schema-coverage gaps
  • api: refresh stale agent_id resolution comment
  • claude-agent-sdk-runner: bump claude-agent-sdk 0.1.58 → 0.2.87
  • api: per-slot id flows through AgentAttempt; viewer-begin defers to first chunk
  • api+cli-stream: per-agent response_id + sibling-group sweep
  • cli-stream: key conduit state on agent_id_base, not lineage
  • cli-stream: drop losing-agent connections on first selected chunk
  • sdk+api+cli-stream: arguments values become Option; bare flags supported
  • drop SDK HttpClient.agent_id_base + API Context.agent_id_base — unused
  • api: stamp X-OBJECTIVEAI-AGENT-ID-BASE with the new agent's leaf, not the caller's
  • cli config propagation; X-OBJECTIVEAI-AGENT-ID-BASE sibling header everywhere
  • cli: add agent_id_base config field from OBJECTIVEAI_AGENT_ID_BASE
  • cli-stream: pass plugin arguments as --k v instead of --k=v
  • sdk+api+cli-stream: arguments for plugin MCP servers, per-agent isolation
  • mcp/format: adversarial mangle-and-length round-trip tests
  • sdk+cli+mcp: flatten NotificationValue; drop value-wrapper; untag Output and PluginOutput
  • sdk+mcp: RichContentPart pipeline; round-trip-solid From for ContentBlock
  • sdk+cli: NotificationValue::PluginNotification — nest plugin payloads under value
  • mcp: unify the formatter into one mode (drop OutputMode)
  • sdk: hoist parse_data_url to crate::data_url; tighten validation
  • mcp: format_outputs returns Vec; drop the blocks.rs side-renderer
  • sdk/mcp: resolve ResourceLink → EmbeddedResource inside call_tool
  • sdk: type LogContent at the filesystem layer; route media to native MCP blocks
  • sdk/mcp: detect data-URLs in MCP text blocks → route through media dispatch
  • sdk/mcp: hoist resource→RichContentPart into a From impl, add audio/video mime dispatch
  • cli: consolidate agents list + agents list-active under nested agents list
  • agents read subscribe: event-driven, out-of-sync-proof subscription
  • tests/agents_continuation_tool_session: drop cross-agent symmetry assertion
  • api/agent/completions: resume proxy session from wire continuation
  • filesystem/logs: LogFileKind enum + read_file_by_id dispatches to typed readers
  • fix test.sh suite + drop queue::Id newtype + strip agent_id default
  • Merge remote-tracking branch 'origin/main' into maya/web
  • add CLI plugin-MCP snapshot test (RMCP, 10 tools)
  • drop PLUGIN_MCP_CONNECT; dial all upstreams during CLI initialize
  • conditional primary + aggregate session id + API-canonical InitializeResult
  • cli: assert McpConfig header presence on tools/list, resources/list, tools/call, resources/read
  • cli: synthesized JSON-RPC error envelopes echo the request's id
  • cli proxy: resources/list aggregation + tools/call + resources/read routing
  • cli proxy: McpConfig header drives tools/list aggregation + list_changed forwarding
  • cli: persist plugin MCP connections instead of discarding them
  • plugin MCP connect: API fans out PLUGIN_MCP_CONNECT; CLI acks + background dial-discard
  • sdk: add PluginOutput::Mcp variant; CLI dispatches on it directly
  • plugin MCP begin RPC: SDK wire shape + CLI dispatch + executable/name plumbing
  • sdk: plugin manifests declare mcp_servers; add mcp plugin notification
  • api: wire McpListChanged dispatch — proxy SSE now sees tool/resource list_changed
  • sdk: delete mcp::conduit; migrate server half into api objectiveai_mcp
  • tools/list filtering moves from API → CLI via X-OBJECTIVEAI-TOOLS-ALLOWED header
  • cli-stream: install list-changed pump in ConduitMcpHandler; drop SDK client-side conduit
  • api: mirror proxy's Accept-header gate on /objectiveai-mcp POST
  • api: implement /objectiveai-mcp routes for real; route on X-OBJECTIVEAI-RESPONSE-ID header
  • api: scaffold full /objectiveai-mcp/{session_id} MCP server — routes wired, delegates todo!()
  • sdk: mcp::conduit::server module + list-changed forwarding plumbing (Commit A)
  • sdk: introduce mcp::conduit feature; add canonical mcp::conduit::client::Conduit
  • sdk/mcp: clear Connection caches on SSE stream drop; lazy-fetch on next list_tools/list_resources
  • sdk+cli+mcp: agents me + non-optional agent_id + MCP unconditional agent_id strip
  • mcp: replace newline-joined JSONL with per-mode response formatter
  • sdk+cli+cli-stream+api+mcp+mcp-proxy: rip out OBJECTIVEAI_DIAGNOSTIC_LOG instrumentation
  • sdk+cli+mcp: OBJECTIVEAI_MCP marker env, set by mcp at startup, re-emitted by cli onto plugin/tool subprocesses
  • sdk+cli-stream: enforce nested-sub-folder rule; explicit response_id throughout (drops agent_id-parsing anti-pattern)
  • tests: add objectiveai-tests crate enforcing serde_json preserve_order
  • sdk: LogWriter::with_request uses ProducesRequestFiles, defers file production to first chunk
  • sdk+cli+cli-stream+api+mcp+mcp-proxy: fix detached cli-stream death + add OBJECTIVEAI_DIAGNOSTIC_LOG infra
  • sdk+cli+mcp: plumb Mcp-Session-Id end-to-end + count-tool fixture + e2e scaffold
  • sdk+cli-stream: writer stamps caller lineage on messages.agent_id (revert 722477d's reverse fix)
  • cli: snapshot e2e proves agents message reuses the prior turn's response continuation
  • sdk: read_latest_continuation reads response-side .json, not request-side .txt
  • sdk+cli: read_latest_continuation walks back past missing files
  • cli: add agents message — deliver-or-continue notification
  • sdk: cover every NotificationValue variant with a round-trip test + AST meta-test
  • sdk+cli: collapse Output/Notification, add NotificationValue enum
  • cli: add agents read id <id> — read file content by SQL row id
  • sdk: LogWriter defers chunk processing by one; flushes last on finalize
  • sdk+cli: remove Output::Begin / Output::End JSONL framing markers
  • cli: add agents read all — drain every queue item, advance watermark
  • cli: agents read pending — one AgentItems notification per spawned id
  • cli: promote read-pending to read pending (new agents/read/ subtree)
  • cli: drop the prompt_ prefix from agents spawn's PromptSource fields
  • cli: rename messages to prompt on agents spawn
  • cli: remove instructions subcommand tree and --instructions-id arg
  • cli: agents spawn — minimal fire-and-forget surface; emit agent_id only
  • cli: drop the standard subcommand under agents spawn
  • cli: flatten agents/spawn/mod.rs into agents/spawn.rs
  • cli: relocate agents completions create to agents spawn
  • cli: drop caller-prefix from list-active output and read-pending input
  • cli: agents list-active — direct-child agents + last assistant_response timestamp
  • cli: add agents read-pending — drain typed queue items per spawned agent id
  • sdk: Id as SQL row id (lazy-populated files table)
  • sdk: queue renames — drop Message suffix on QueueMessage variants; UserRequest → AgentCompletionRequest
  • sdk: Client::read_new_from_queue — typed queue reader
  • sdk: AssistantMessageLog extracts refusal / reasoning / tool_calls to refs
  • sdk: notifications belong under request/, not response/
  • sdk: flip log layout from -{request,response} suffix to request/ + response/ subdir
  • sdk: add request-side Log types + ProducesRequestFiles trait (additive)
  • cli/instructions: fix stale filesystem::config::db path + drop lab scope
  • remove laboratory-execution surface from cli / cli-stream / logs
  • sdk: RichContentLog is all references — extract text + non-decodable parts too
  • sdk: extract reasoning/refusal/tool_calls to references in AssistantResponseChunkLog
  • sdk/db: messages_queue table + Queue::read_new_messages watermark API
  • sdk: filesystem/db/ — single shared db.sqlite; messages.agent_id column; bare-id path
  • sdk: filesystem/logs/queue module — shared per-agent-id db API; all ops funnel through it
  • sdk+cli-stream: notification queue local to cli-stream; LogWriter accepts pending notifications as an argument
  • api: prepend drained-notifications user message (push → insert(0, ...))
  • sdk+proxy: ToolResponseMetadata on tool responses; proxy populates notifications counter
  • sdk: async messages-db writes; per-agent request rows; iterator chunk-rows
  • sdk: per-agent SQLite db alongside socket; LogWriter inserts into messages table
  • sdk: log requests alongside responses; suffix root files -request/-response
  • api: response IDs become base62 {prefix}-{rand}{created}; drop agtcpl- prefix
  • sdk: split LogReference into per-site types (shared name, distinct module paths)
  • sdk/json-schema: add JsonSchema + omitempty attrs to *Log structs
  • sdk: replace inline serde_json! in log paths with typed *Log structs
  • cli: default agent_id to "cli" when env unset
  • cli: delegate streaming subcommands to cli-stream subprocess
  • cli-stream: add the remaining streaming endpoints from cli
  • cli-stream: rename --body-inline → --body
  • restore 12 files from main lost during merge
  • Merge remote-tracking branch 'origin/main' into maya/web
  • viewer: add mock entries for browser-mode demo
  • cli-stream: drop --body-file, --body-inline is now required
  • cli-stream: rearrange to match objectiveai-cli's conventions
  • cli-stream: write logs to disk + emit LogStreamReady
  • agent_id: stable lineage across continuation re-use + MCP-boundary
  • cli-stream/pipes: same FS path layout on every platform
  • cli-stream: function-executions endpoint + per-agent named-pipe notify bridge
  • add objectiveai-cli-stream crate (hello-world skeleton)
  • api: re-regen scalar_d2_unrouted_2 snapshot — earlier capture flaked
  • api/agent: use response_id as the agent identifier instead of a racy counter
  • viewer: migrate all classNames to cn() one-class-per-arg convention
  • Merge remote-tracking branch 'origin/main' into maya/web
  • Merge remote-tracking branch 'origin/main' into maya/web
  • viewer: design audit phase 3 — tokens, tooltips, final cleanup
  • viewer: design audit phase 2 — transitions, UX, polish
  • viewer: design audit phase 1 — contrast, tokens, a11y, perf
  • viewer: detail panel, micro-interactions, polish
  • viewer: styling refactor — three-pane layout, transitions, entry density
  • viewer: accessibility, performance, and polish
  • viewer: P0/P1 bug fixes + visual polish pass
  • Merge remote-tracking branch 'origin/main' into maya/web
  • chore: gitignore audit files, test harness, and experiment dirs
  • viewer: comprehensive UX audit — 32 of 44 items shipped
  • viewer: single-channel events, network panel, inner errors, command palette
  • viewer: session persistence, auto-collapse, tree view, and entry summaries
  • Merge remote-tracking branch 'origin/main' into maya/web
  • viewer: fix multi-turn streaming, chunk validation, and design system cleanup
  • viewer: polish pass — code cleanup, branding, scoring viz, UX improvements
  • viewer: fix chunk classification and StatusBar active detection
  • viewer: redesign with Tailwind v4, Radix UI, and ObjectiveAI design system
  • web: remove parallel viewer implementation — viewer lives in objectiveai-viewer
  • web: add viewer page, agent chat, and viewer event hooks
  • Merge remote-tracking branch 'origin/main' into maya/web
  • Merge remote-tracking branch 'origin/main' into maya/web
  • revert all non-frontend edits — restore objectiveai-js, objectiveai-viewer, .gitignore to main
  • Merge remote-tracking branch 'origin/main' into maya/web
  • web: shelve JudgmentStack rethink, ConvergenceTimeline WIP, demo data
  • viewer: design system, mock harness, VoteMatrix, entry type badges
  • web: ensemble → swarm terminology, focus-visible styles, design token cleanup, mock fallbacks
  • Merge remote-tracking branch 'origin/main' into maya/web
  • Merge branch 'main' of https://github.com/ObjectiveAI/objectiveai into maya/web
  • Merge remote-tracking branch 'origin/main' into maya/web
  • Explore: cap toolbar width at 1400px, tighten tab bar spacing
  • Merge remote-tracking branch 'origin/main' into maya/web
  • Shell: add logo mark + wordmark SVGs, polish explore layout and filter groups
  • Web: extract useSDKStream, consolidate CSS modules, delete dead code, add profile/explore pages
  • ProfileCard: remove hover transition effects
  • Explore: add sticky tab bar navigation with scroll-tracking, swap to mock data for density testing
  • Add favicon, SEO metadata, robots.txt, sitemap, and web manifest
  • Merge remote-tracking branch 'origin/main' into maya/web
  • Add Dockerfile and cloudbuild.yaml for web deployment
  • Replace all Lorem ipsum with real copy grounded in Ronald's language
  • Web cleanup: JudgmentStack split, error boundaries, testing infra, dead code removal
  • Merge remote-tracking branch 'origin/main' into maya/web
  • Full site iteration: unified explore, landing skeleton, route cleanup
  • Restore ComingSoon as homepage — Landing is future work
  • Page structure: /explore route, viewer preview, minimal nav
  • Streaming transitions, component width constraints, streaming demo
  • Polish JudgmentStack: contribution bars, agent bars, header truncation
  • Landing page: hero + execution comparison + content placeholders
  • Scaffold InventionStream, VectorPlayground, and streaming hooks
  • Execute panel, SchemaForm, demo cleanup — archive old prototypes
  • JudgmentStack structural view + SDK migration to flat API