v0.9.2
Patch Changes
-
Developer-onboarding overhaul so an LLM or a person gets a working integration on the first try.
ablo initscaffolds a project that builds and is current-API. The Next.js scaffold now shipsapp/providers.tsx+ anapp/api/ablo-sessionroute, usesuseAblo(the removedwithSyncis gone), object-param verbs, and never bundles yoursk_key into the browser. The webhook receiver moved off the[...all]catch-all.- Agent docs are accurate and ship.
AGENTS.md,llms.txt, andllms-full.txtare on the 0.9.x API (object-paramcreate/update/delete/retrieve, disposableawait using claim,AbloProvider clientprop), lead withablo init, andAGENTS.mdnow ships in the package. ablo pushis self-documenting. Writing to a model the server hasn’t seen now fails with an error that tells you to runablo push(theserver_execute_unknown_model/unknown_modelmessages), instead of a cryptic “unknown model.”intentsis deprecated in favor ofclaimeverywhere the docs and the MCP scaffold/prompts teach or generate coordination; the publicablo.intentsaccessor is marked@internal.- Docs say Node 24+, and the
drizzle-ormpeer floor is>=0.44.
-
a88747a: Remove the
turnprimitive and the agent-worktasksresource from the client surface — the SDK is now purelyablo.<model>+claim.Breaking
engine.beginTurn(), theTurnhandle interface, and theAblo.Turntype are removed.AbloApi.beginTurnand the HTTP client’sbeginTurnare gone too.CommitCreateOptions.causedByTaskIdis removed. (Lineage is no longer stamped from the client.)- The engine no longer exposes a
protocolaccessor or a publictaskswork-unit resource.ablo.tasksis, and always was, the schematasksmodel proxy. - The
agent().run()helper and the low-level agent/task type family are removed:AbloApi.agent(id, options)andAbloApi.tasks(theTaskResource), plus the exported typesAgent,AgentOptions,AgentRunOptions,AgentRunResult/Done/Failed/Cancelled,AgentRunStatus,AgentRunContext,AgentModelClient,AgentModelReadOptions,AgentModelMutationOptions,AgentIntentOptions,AgentIntentInput,Task,TaskResource,TaskCreateOptions,TaskCloseOptions,TaskCloseResult(and theAblo.*namespace aliases for all of them). TheAblo.Auth.Agentprincipal constructor and the schema-backedtasksmodel are unaffected.
Why
turn/agent_taskswas a second coordination-and-attribution mechanism living alongsideclaim. It is redundant on the client:claimalready serializes writers and carries the causal link — itsintentid rides on every guarded write.- The server stamps
actor/onBehalfOf/capabilityIdonto each delta from the auth context. - Per-run token/cost is recorded in Langfuse, not the
agent_taskstable.
So the only thing the client lost is the audit pane’s “show everything this exact prompt produced” filter, which keyed off
caused_by_task_id; new writes leave that column null.Migration
Agents stop opening/closing tasks — just issue
ablo.<model>writes (schema-backed) orablo.commits.create(...)(schema-less) under aclaim. ReplaceAblo({ apiKey }).agent(id, opts).run(prompt, handler)with: mint a scoped credential viasessions.create({ agent }), thenclaimthe row andupdate/commits.create.The server
agent_taskstable, thecaused_by_task_iddelta column, the/api/sync/commitwire field, and theagent_actions_logcompliance hash-chain remain in place but dormant (client writes leave the field null) — they are load-bearing for the tamper-evident audit chain and historical-row audit JOINs, so they are intentionally NOT dropped. The dead/v1/tasks+/api/agent/turnroute handlers ARE removed (zero live callers).