Skip to content

Releases: ObjectiveAI/objectiveai

v2.0.11

24 May 01:36

Choose a tag to compare

  • v2.0.11
  • cleanup + test-suite fixes
  • build: regenerated SDK artefacts after MCP + WS-handler fixes
  • mcp: TEST_MODE env var strips agent_id from tool result bodies
  • sdk: strip agent_id from tool-message contents in normalize_for_tests
  • mcp: expose CLI tools alongside plugins; fixtures use a real exec
  • fix: WS-handler deadlock + conduit hop-by-hop framing bug
  • agent: skip list_tools round-trip when no client_objectiveai_mcp declaration
  • agent: validate client_objectiveai_mcp.tools against live proxy list_tools
  • test-spawn-mcp-server: switch to objectiveai-mcp, isolate CONFIG_BASE_DIR
  • api+cli+sdk: wire client_objectiveai_mcp into per-agent MCP proxy connections
  • api+cli: switch 20-agent snapshot to JsonSchema mode
  • cli: snapshot test aggregates chunks via push, moves snapshot to cli/assets
  • cli: snapshot test — 20-agent mock swarm w/ 10x client-mcp tools
  • sdk-rs+cli+go+py: codegen sanitization + feature ungating
  • sdk-rs+go: stamp X-Transport: sse, refactor client_response::Response
  • sdk+api+cli: precise capturing, indexmap dep, AgentBase field updates
  • sdk-go: derive variant title from type enum when not in schema
  • cli: conduit dials a REMOTE MCP from config, no subprocess
  • cli: conduit holds a process-lifetime sdk::mcp::Connection
  • cli+api: handle rmcp SSE responses, stamp Mcp-Session-Id correctly
  • sdk+api+cli: HTTP-shaped server_request/response + CLI MCP conduit
  • sdk-js, sdk-py: opt into SSE transport on streaming requests
  • sdk-rs: WS streaming + Notifier + McpHandler scaffold
  • api: spawn notify dispatch in recv_loop
  • api+sdk+proxy: scaffold reverse-attach MCP + per-upstream tool filter
  • sdk: validate install identifiers + tool-name materializer
  • mcp: rename serverInfo.name oaicli -> oai
  • sdk: tools + plugins manifests get owner; tools also gets version
  • api: per-stream WS notifications with id-correlated request/response
  • sdk-rs: split client_objectiveai_mcp::Request into client_request + server_request
  • sdk-rs: add client_objectiveai_mcp::Request; remove notify endpoint
  • sdk-rs: add client_objectiveai_mcp field to agents
  • api: route streaming endpoints by X-Transport header, not by method
  • cli: e2e snapshot tests for tools dispatch
  • cli: tools <args...> dispatch with stdout/stderr forwarding
  • cli: add tools list / get / install
  • json-schema: regenerate for filesystem.tools
  • filesystem: add local-tools module
  • mcp: flatten cli_config into Config; expose 3 filesystem env vars
  • rename crate objectiveai-mcp-cli to objectiveai-mcp
  • mcp-cli: one MCP tool per installed plugin
  • development-launcher/install.sh: drop trailing footer
  • development-launcher: drop the .real backups, one-or-the-other
  • install: --dev flag; rename faux-launcher -> development-launcher
  • dev-tool: objectiveai-faux-launcher
  • viewer/chat: tool calls + tool responses + reasoning collapsibles + queue viz
  • viewer/chat: flat entries: PanelTabEntry[] per panel tab
  • viewer: streaming chat per panel tab with notify mid-flight + drain
  • sdk-js: regenerate zod + merge helper for messages_queued
  • json-schema: regenerate for messages_queued on agent completion chunk
  • api+cli: POST /agent/completions/notify endpoint
  • sdk: From impls between RichContent and Vec, dedupe call sites
  • mcp-proxy/sdk/api: messages_queued on agent completions final chunk
  • cli/api: rename per-leaf field agent_id_arg -> agent_id, AST-test it
  • cli/api: --agent-id as a per-endpoint flag, off of Config
  • cli/api: --agent-id flag overrides X-OBJECTIVEAI-AGENT-ID when env unset
  • viewer: right overlay panel with favorites picker + chat-pane scaffold
  • viewer: useFavoriteAgents hook listing favorites + subscribing to changes
  • sdk-js: regenerate zod for agent.favorites.* + viewer Request variant
  • json-schema: regenerate for agent.favorites.* + http.viewer.Request
  • agent_favorites: add ChangedNotification + viewer SDK plumbing
  • py+viewer: fix remaining root-test.sh failures
  • cli+py: fix stragglers caught by root test.sh
  • sdk+codegen: title each variant of the http.viewer untagged enums
  • sdk: regenerate schemas + add http.viewer types to json_schemas()
  • cli+sdk: stamp agent_id on every emitted notification and error
  • mcp-proxy: stamp X-OBJECTIVEAI-AGENT-ID on every upstream request
  • api+runners: forward composite agent_id as OBJECTIVEAI_AGENT_ID env
  • api+proxy: thread X-OBJECTIVEAI-AGENT-ID through agent completions
  • sdks: add agent_id (X-OBJECTIVEAI-AGENT-ID) to every http client
  • mcp-cli: per-request X-OBJECTIVEAI-AGENT-ID override of cli_config.agent_id
  • cli: add agent_id to Config (env OBJECTIVEAI_AGENT_ID)
  • cli/tests: route snapshot tests at a locally-spawned api
  • cli: hint at api spawn on connection-failure errors
  • cli/viewer: resolve send.rs broken-runner carve-out
  • cli/api: collapse the runner to always-remote
  • cli/mcp: align with api+viewer — add Config (jq) subcommand, reuse client
  • cli: add {viewer,api,mcp} spawn|kill + McpConfig
  • cli: unbundle viewer + api from the binary
  • viewer + viewer-sdk: dispatch via cli, drop ApiCall* and SDK http feature
  • sdk/cli: flatten ApiConfig (drop ApiHeadersConfig); strip x_ prefix
  • cli: re-implement the SDK env-var fallback at the api/ layer
  • cli: drop the SDK's mcp and viewer features
  • cli: disable the SDK's env feature
  • cli: mirror every objectiveai-api endpoint under objectiveai api ...
  • sdk/cli: add address and port to ViewerConfig
  • sdk/cli: flatten ApiConfig and ViewerConfig, drop the local/remote mode
  • sdk: drop the stale cooldown reference from the Skipped notification doc
  • sdk/cli: move the updater into objectiveai-cli, drop the SDK feature
  • release: reorder asset names by platform, drop no-viewer cli variant
  • clear-cache.sh: use shell glob, not find, to wipe target contents

v2.0.10

19 May 02:45

Choose a tag to compare

  • release: bump everything to 2.0.10
  • viewer send: spawn-send-kill in local viewer mode

v2.0.9

19 May 01:39

Choose a tag to compare

  • release: bump everything to 2.0.9
  • cli/viewer: e2e test for viewer send against a wiremock viewer
  • cli/viewer: add viewer send <path> <body> to POST synchronously
  • sdk: move viewer client to objectiveai-sdk::http::viewer; api keeps a thin ctx-aware wrapper
  • viewer: tailwind + cn() refactor, fix invisible tab bar
  • cli/help: emit --help as a notification, not a fatal error

v2.0.8

17 May 23:15

Choose a tag to compare

  • release: bump everything to 2.0.8
  • mcp: drain proxy /notify queue at agent turn start
  • viewer/test: skip bin target from cargo test (--lib --tests)
  • api/test: bump FUNCTIONS_INVENTIONS_SUBSCRIBE_TOOLS_TIMEOUT 60s -> 5min
  • README: reframe execution modes as actions; drop vector completions as user surface
  • README: remove all logprob references
  • README: reposition as 'The Swarm Judgment Harness'
  • build artifacts: regenerated SDKs from clean build
  • README: full refactor — packages grid, binaries table, comprehensive sections
  • build: drop objectiveai-dotnet from the root build pipeline
  • updater + skipreason: add #[schemars(title = "...")] on each variant
  • plugins install: split into github and filesystem subcommands
  • viewer-plugins: remote URL as iframe source (alongside zip bundles)
  • plugins/resolve: multi-extension fallback for plugin binaries
  • updater: shared sdk module, JSONL emission, opt-in feature for all 4 binaries
  • clear-cache.sh: empty contents in place, preserve junctions/dirs
  • objectiveai-mcp-cli: update CLI invocation to new run() signature
  • release: add objectiveai-mcp binary releases (objectiveai-mcp-cli crate)
  • install.sh + README: install all three binaries (cli + api + viewer)

v2.0.7

17 May 00:33

Choose a tag to compare

  • release: bump everything to 2.0.7
  • release: add single-binary release legs for api and viewer
  • auto-publish-libraries: probe crates.io sparse index, not api endpoint
  • api: select SqlitePersistentCacheClient when sqlite-persistent-cache feature is enabled
  • api: add PERSISTENT_CACHE_TRANSIENT_TTL_MS and prune stale transient rows on every sqlite query
  • auto-publish-libraries: grant id-token: write for npm OIDC
  • publish-sdk-js: switch to npm Trusted Publishing (OIDC)

v2.0.6

16 May 21:41

Choose a tag to compare

  • release: bump everything to 2.0.6
  • viewer: add snapshot integration tests for cli + api_call flows
  • fix stale objectiveai-* path/import refs left over from the sdk-rename
  • sdk-js viewer/apiCallBridge: use auto-generated zod types
  • regenerate cross-language bindings for Event::ApiCall
  • sdk + viewer + sdk-js: route Event::ApiCall through Tauri (viewer: true)
  • regenerate cross-language bindings for cli + viewer additions
  • json-schema: generate viewer.Event.json
  • sdk + viewer: move Event types into objectiveai-sdk::viewer (new feature)
  • json-schema: generate schemas for new cli.* and InnerError types
  • sdk + cli: fold objectiveai-cli-sdk into objectiveai-sdk::cli (delete the crate)
  • api + cli: make claude-agent-sdk and codex-sdk built-in (drop features)
  • viewer + viewer-sdk: invokeCli() drives the cli from plugin iframes
  • viewer: refactor Event struct -> tagged enum (Inbound + CliCommand)
  • cli-sdk: add Handle::Stream sink for in-process embedders
  • sdk-js: rename npm package to @objectiveai/sdk
  • sdk-js: absorb objectiveai-viewer-sdk as ./viewer subpath export
  • sdk-js: drop Windows-pinned build-tool packages from dependencies
  • objectiveai-web/Dockerfile: fix objectiveai-rs-wasm-js path after sdk-rename
  • objectiveai-web/Dockerfile: fix workspace paths
  • Merge pull request #180 from ObjectiveAI/maya/web-fixes
  • web: fix waitlist signup and replace favicon with ObjectiveAI logo
  • auto-publish: send User-Agent on crates.io probes
  • auto-publish: orchestrate library publishes on version bump
  • viewer-sdk: rename to unscoped objectiveai-viewer-sdk
  • pnpm-lock: regen after adding shx to viewer-sdk devDeps
  • publish: add @objectiveai/viewer-sdk to the npm wave
  • publish Wave 6: mcp-cli --no-verify + cocoindex README staging
  • api: include filter to exclude 72M assets/ from the published tarball
  • publish-objectiveai-api.yml: pass --no-verify to cargo publish
  • publish-objectiveai-sdk-py.yml: drop macos-x86_64 from the wheel matrix
  • publish: fix sdk-py maturin output path + hold sdk-js out of waves
  • mcp-proxy: make test-upstream dev-dep path-only
  • publish: add objectiveai-cli + objectiveai-cli-sdk to crates.io flow
  • publish-objectiveai-sdk-rs.yml: pass --allow-dirty to cargo publish
  • sdk-rs publish: bundle JSON schemas into the crate tarball
  • crates.io metadata: add description / license / repository / homepage
  • publish: fix sdk-go stale path + quiet curl 404s
  • publish.sh: orchestrate with dependency-ordered waves + registry liveness
  • publish.sh: refresh package names after the objectiveai-sdk rename

v2.0.5

14 May 01:48

Choose a tag to compare

  • release: bump everything to 2.0.5
  • cli: stream chunk inner_errors live + propagate root errors
  • functions::executions::streaming: make inner_errors fully lazy
  • functions::executions::streaming: add FunctionExecutionChunk::inner_errors
  • functions::inventions::recursive::streaming: add inner_errors
  • streaming InnerError: rename index to descriptive <thing>_index
  • functions::inventions::streaming: add FunctionInventionChunk::inner_errors
  • laboratories::executions::streaming: add LaboratoryExecutionChunk::inner_errors
  • vector::completions::streaming: make InnerError Serialize/Deserialize
  • vector::completions::streaming: add VectorCompletionChunk::inner_errors
  • cli-sdk/Error: message: String -> serde_json::Value
  • add clear-cache.sh
  • sdk-regen: pick up Binaries top-level schema
  • codegen: drop inline closed-object hacks
  • plugins/Manifest: binaries: IndexMap<Platform, String> → typed Binaries struct
  • sdk-rename: revert nested-module over-renames
  • sdk-rename: regen SDK codegen output + fix build/test orchestrators
  • sdk-rename: fix lingering old-dir refs in scripts, codegen, docs
  • sdk-rename: objectiveai-go → objectiveai-sdk-go
  • sdk-rename: objectiveai-py → objectiveai-sdk-py
  • sdk-rename: objectiveai-js → objectiveai-sdk-js
  • sdk-rename: objectiveai-rs and derived crates → objectiveai-sdk-*
  • mcp-proxy/tests: rebuild test-upstream instead of reusing stale binary

v2.0.4

13 May 16:50

Choose a tag to compare

  • release: bump everything to 2.0.4
  • Revert "cli/tests: reuse the build.sh-built cli binary when present"
  • cli/tests: reuse the build.sh-built cli binary when present
  • api: regen scalar_leaf_s314_2 snapshot
  • plugins/platform_tests: align with snake-pair wire format
  • go-sdk: regen Manifest + ManifestWithNameAndSource bindings
  • go-codegen: emit nested struct for inline closed objects
  • api: regenerate client_tests snapshots
  • sdks: regen bindings for filesystem.plugins.* types
  • plugins/Platform: switch wire format from hyphen to underscore
  • py-codegen: emit a nested Pydantic model for inline closed objects
  • go-codegen: split toPascal on hyphens too
  • cli/tests: parse CLI JSONL output instead of treating stdout as raw
  • mcp-proxy/tests: drain initialize body as text, not JSON
  • plugins/manifest: annotate Option fields with schemars omitempty
  • plugins: align install + dispatch paths via Client::plugin_binary_path
  • version.sh: add hello-plugin to CARGO_TOMLS; sync codex runner to 2.0.3
  • viewer-sdk: rename @objectiveai/viewer-plugin-lib → @objectiveai/viewer-sdk
  • cli-sdk: rename objectiveai-cli-lib → objectiveai-cli-sdk
  • viewer-plugin-lib: rename @objectiveai/plugin-sdk → @objectiveai/viewer-plugin-lib
  • plugins: purge unused invoke() from SDK + bridge + docs
  • docs: PLUGINS.md at root + per-component depth in cli and viewer
  • viewer: parse built-ins as Value; collapse Event enum + EmittedEvent into one struct
  • plugins: reserve objectiveai as a repo name; drop tauri_event_name() in favour of destination
  • viewer: collapse PluginEvent + PluginRequest into a flat Event::Plugin variant
  • add dep
  • viewer: unify event emission to {destination, type, value} envelope
  • viewer: use mime_guess for serve_plugin_asset Content-Type sniffing
  • viewer: list_plugins_with_viewer returns plain Vec; drop PluginTab
  • viewer: drop plugin_invoke; relocate plugin tests to plugins_tests.rs
  • viewer: split run.rs into events / plugins / signature siblings
  • plugins: install --upgrade gates re-installs; network-first + concurrent writes
  • viewer: tab shell + iframe plugin panes + postMessage bridge + plugin:// protocol
  • plugin-sdk: TypeScript SDK for plugin iframe ↔ host viewer bridge
  • viewer: dynamic plugin routes from manifests + PluginRequest event bus
  • plugins: manifest gets viewer_zip / viewer_routes / mobile_ready; install extracts UI bundle
  • plugins: persist manifest on install + surface installed plugins in list/get
  • plugins: install whitelist with --allow-untrusted bypass + warning
  • plugins: e2e dispatch test with a hello-world fixture crate
  • plugins: install — fetch manifest + binary from GitHub, with mocked tests
  • plugins: add per-platform release-binary map to Manifest
  • plugins: add get for single-manifest lookup
  • plugins: paginate list with --offset / --limit
  • plugins: support plugins <name> <args> as explicit dispatch form
  • plugins: add Client::list_plugins + plugins list cli subcommand
  • filesystem: convert logs/config client free fns to Client methods
  • objectiveai-rs: add ManifestWithNameAndSource
  • objectiveai-rs: rename plugins.rs -> client.rs; extract manifest_tests.rs
  • objectiveai-rs: add plugin Manifest; reorganize filesystem/plugins
  • cli-lib: rename plugin_output to plugins; split mod.rs
  • cli: rename Commands::Plugin to Commands::Plugins for consistency
  • cli: rename plugin module to plugins
  • cli: dispatch plugin commands via ~/.objectiveai/plugins/
  • cli-lib: add plugin_output module
  • cli-lib: wrap Notification payload in Notification { value: T }
  • cli-lib: Begin/End become top-level Output variants
  • cli-lib: add Begin/End notifications; run() emits them as bookends
  • cli: run() returns i32 exit code; handles errors internally
  • cli-lib: Handle becomes an enum with Stdout/Stdin/Collect
  • cli/detach: panic instead of fallback for non-JSONL orphan stdout
  • cli/detach: parse orphan stdout, re-emit through Output::emit
  • cli-lib: optional subprocess emission target
  • cli-lib: relocate every emit-site struct from cli to lib
  • cli: emit every output line as objectiveai-cli-lib JSONL
  • cli-lib: drop Error::emit
  • cli-lib: drop redundant flush in emit methods
  • cli-lib: add Error::emit and Output::emit
  • cli-lib: move output tests into tests.rs
  • cli-lib: simplify output to Output generic
  • cli-lib: split output into per-category files
  • cli-lib: add output module for JSON Lines CLI output
  • cli-lib: scaffold empty objectiveai-cli-lib crate
  • codex-sdk-runner: add unit tests for config.toml emitter
  • codex-sdk-runner: wire mcp_servers via per-request CODEX_HOME (2.0.4)
  • api/codex-sdk: rename McpServerConfig.headers to http_headers

v2.0.3

09 May 19:09

Choose a tag to compare

  • release: bump everything to 2.0.3
  • claude_agent_sdk: drop client-side list_tools, route mcp_servers via tools_enabled
  • agent loop: push State onto continuation BEFORE early-exit branches
  • cli: bump main-thread stack to 16 MB via link arg, matching api
  • mcp-filesystem, mcp-cli: replace nest_service("/") with fallback_service for axum 0.8
  • bump sse-stream
  • mcp-proxy: switch initialize to SSE response shape matching rmcp
  • mcp: shorten advertised server names to keep tool names under Anthropic 64-char limit
  • cli: add + Send to trait-objectified Future casts in clear-logs join_all
  • inventions: yield error on retry exhaustion instead of silently advancing

v2.0.2

09 May 04:14

Choose a tag to compare

  • release: bump everything to 2.0.2
  • api: keep runner Child alive — drop(child) + kill_on_drop=true was killing it on spawn