Releases: ObjectiveAI/objectiveai
Releases · ObjectiveAI/objectiveai
v2.0.11
- 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
typeenum 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 spawnon 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
envfeature - 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
- release: bump everything to 2.0.10
- viewer send: spawn-send-kill in local viewer mode
v2.0.9
- release: bump everything to 2.0.9
- cli/viewer: e2e test for
viewer sendagainst 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
- 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
githubandfilesystemsubcommands - 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
- 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
- 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
./viewersubpath 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
- 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
indexto 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
- 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
objectiveaias 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
getfor single-manifest lookup - plugins: paginate
listwith --offset / --limit - plugins: support
plugins <name> <args>as explicit dispatch form - plugins: add Client::list_plugins +
plugins listcli 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
- 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
+ Sendto trait-objectified Future casts in clear-logs join_all - inventions: yield error on retry exhaustion instead of silently advancing
v2.0.2
- release: bump everything to 2.0.2
- api: keep runner Child alive — drop(child) + kill_on_drop=true was killing it on spawn