- e48cb81: Remove
fileVerdictfrom run review correction types; file correction intent is encoded viacorrectedArtifactPath.
-
c35d5d4: Clean up the public runs and evaluation API surface: move workflow eval operations onto automations, expose run scores/artifacts through the unified runs API, and update CLI/SDK helpers to use the canonical routes.
Breaking:
runs.evalResultsandGET /api/v1/runs/{id}/eval-resultsare replaced byruns.scoresandGET /api/v1/runs/{id}/scores. -
1a7b2ab: Expose canonical automation dataset example file routes in the generated SDK.
-
d620a00: Expose the clean public automation API around automations, runs, files/artifacts, datasets, evaluators, experiments, evaluation results, and run promotion. This intentionally breaks the pre-v1 SDK/CLI surface that exposed workflow- and agent-specific top-level resources outside the explicit legacy compatibility routes.
[!WARNING] Breaking change (pre-v1). The workflow- and agent-specific top-level resources have been removed in favor of a single automation-centric surface. These packages are still 0.x, so this breaking redesign ships as a
minorbump. Update your integration before upgrading.- Top-level workflow resources, e.g.
client.workflows.*, includingclient.workflows.executions.runAndWait(...)and the rest of theclient.workflows.executions.*tree. - Top-level agent resources, e.g.
client.agents.*(runs, reviews, traces, files, expected artifacts). - Top-level source/git resources, e.g.
client.sources.*.
- Start a run: use
client.run('workflows.<slug>', input, options)(andclient.run('agents.<slug>', ...)). In the TypeScript SDK,run-and-waitisclient.run(target, input, { waitForCompletion }); in the Python SDK useclient.run_and_wait(target, input=...). - Browse automations (workflows + agents):
client.automations.list(),client.automations.get(id),client.automations.versions(id),client.automations.triggers(id), plusclient.automations.dataset|examples|evaluators|experiments.*. - Inspect & control runs:
client.runs.list(),client.runs.get(id),client.runs.cancel(id),client.runs.rerun(id),client.runs.promote(id),client.runs.usage(id),client.runs.steps(id),client.runs.events(id), andclient.runs.artifacts|eval_results|reviews|trace.*. - Manage reusable files:
client.files.upload(...),client.files.get(id),client.files.download(id),client.files.delete(id).
client.workflows.executions.runAndWait('<slug>', input)→client.run('workflows.<slug>', input, { waitForCompletion })(TS) /client.run_and_wait('workflows.<slug>', input=...)(Python).client.workflows.executions.create('<slug>', input)→client.run('workflows.<slug>', input).client.agents.runs.create('<slug>', input)→client.run('agents.<slug>', input).client.workflows.get('<slug>')/client.agents.get('<slug>')→client.automations.get('workflows.<slug>')/client.automations.get('agents.<slug>').- Listing/inspecting executions previously under
client.workflows.executions.*/client.agents.runs.*→client.runs.*(e.g.client.runs.list(),client.runs.get(id)). eigenpal runs promotenow accepts only--name(optional). Useeigenpal runs reviews updateto set corrected JSON before promoting. Review and corrected-file commands work for both workflow and agent runs.
client.runs.*read methods are now typed against the generated OpenAPI models; useisRunFinished()to narrowrun()/rerun()responses before accessingoutput.eigenpal agents dataset push --fileaccepts a.ziparchive (matchingpulloutput) as well as a directory.
- Top-level workflow resources, e.g.
- c5a709c: Public workflow list/detail responses include
apiEnabledandtriggers; run definition docs note workflow-only scope.
- 9db3f01: Expose
apiEnabledandtriggersonAgentSummaryfor runtime trigger projection.
- 963fd6c: Unify run detail on
GET /api/v1/runs/{id}: return the canonical Run object directly (no{ run: ... }envelope) and merge expanded fields in-place via documentedexpandtokens. Remove the session-onlyexpand=internaldashboard escape hatch; SDKs and CLI now use explicit expand lists.
- 12c00d8: Docs: clearer wording in the file-input and TypeScript-runtime sections. No API or behavior changes.
- 716c3cf: Update the hosted default API base URL and API-key guidance from
app.eigenpal.comtostudio.eigenpal.com.
-
ca87265: Unify workflow and agent run starts behind the canonical
/api/v1/run/{target}endpoint, rooteigenpal run/eigenpal reruncommands, and root SDKclient.run()/client.rerun()methods.The old nested CLI commands and SDK resource methods for starting workflow or agent runs have been removed.
- 99ca1b4: Unify agent and workflow run commands and SDK helpers on the shared
/api/v1/runsAPI, including the publicclient.runsfacade and regenerated SDK reference docs.
- 5e7c051: Add
observability(phase timeline + structured failure) to workflow execution and agent run status API responses.
- c3486a5: Fix agent git cutover QA findings: dashboard runs now navigate to the created run, inbound email aliases preserve mixed-case organization qualifiers, sandbox source materializes under
/workspace/agent, run artifact downloads use direct paths like/files/eigenpal.lock, wait-for-completion responses include source provenance, and CLI wait/watch commands exit nonzero for failed or cancelled runs.
- 2aeeaf2: Complete the agent Git cutover with pluralized agent CLI commands, source-ref run support, lockfile metadata, and regenerated SDK/docs surfaces.
- 2aeeaf2: Expose Git-backed agent source refs and public source automation APIs consistently across CLI docs and SDK facades.
- c15ce88: Rename agent API calls to
/v1/agentsand scope execution helpers under their owning workflow or agent.
- d1d3260:
client.workflows.run(and agent runs) now accept a Node readable stream (fs.createReadStream('contract.pdf')) as a file input, inferring the upload filename from the stream's path. Adds atoFile(content, filename, mimeType?)helper for attaching a filename to raw bytes (Buffer,ArrayBuffer, orBlob). Streams are drained to bytes before the request is sent, so a retried request can replay the body.
-
5909b21: Add execution-scoped agent feedback filters and expected artifact management to the API, CLI, and SDKs.
-
9905f7f: Fix the published SDKs so the README's default
baseUrlworks. 0.4.10 shipped paths under/v1/...while the actual Next.js routes live at/api/v1/..., so every call from a freshly installed SDK either hit the marketing-site HTML (200 OK silently parsed as a workflow object) or 307'd to a redirect Python wouldn't follow. Now the OpenAPI spec emits/api/v1/...and the regenerated TS + Python clients call the real URLs without abaseUrl: '.../api'workaround.Also trims the v1 public surface so SDK consumers no longer see internal columns. The legacy app handlers spread the raw DB row, which dragged
tenantId,isBlock,currentHistoryId,evalConfigYaml,createdBy, the fullcurrentVersionobject,traceId,spanId,versionId,leaseId,workerId,definitionSnapshot,blockSnapshots,stepResults,evalScore,priority, retry-chain pointers, etc. into typed SDK output. The v1 endpoints now wrap the legacy response withpickPublicWorkflow/pickPublicWorkflowVersion/pickPublicExecutionhelpers (forwarded viaforwardItem/forwardList), so the wire shape matches the schema.WorkflowSummaryis now{ id, version, createdAt, updatedAt }—versionis the release tag string callers actually want, replacing the internalcurrentHistoryId.Heads-up: workflow
nameis no longer surfaced as a top-level field (it was previously leaked viacurrentVersion.definition.name). It is authoritative inside the YAML, so fetch it viaclient.workflows.versions(id)[0].yamlContentand parse, or treat the workflowidas the canonical identifier.Tightens response handling on both sides: the client throws
EigenpalErrorwhenever a response carries a non-JSON Content-Type (2xx or 4xx), so the next misconfiguredbaseUrlfails loudly with a "point baseUrl at your EigenPal instance root" message instead of silently returning string-as-object or surfacing a downstreamJSONDecodeError.Renames the constructor:
Eigenpal→EigenpalClientin both SDKs. The old name was ambiguous when imported alongsideEigenpalErroretc. and read awkwardly asnew Eigenpal(...)next to the brand ("Eigenpal");EigenpalClientmatches the convention of every neighbouring class. No backwards-compat alias since 0.4.10 is fresh.Adds
bun sdk:smoke:local [ts|py|both]— packs the local SDK as the exact tarball / wheel that ships, installs into a clean tmp workspace, and runs an end-to-end smoke againstEIGENPAL_BASE_URL. Verifies the v1 paths resolve, the trimmed public shape is enforced on the wire, and the HTML-host guard fires.defineRouterejects paths that do not start with/api/so the mismatch cannot reappear by accident.
- Initial release.
- Coverage: workflow trigger (sync + async), execution polling, cancel, workflow & version listing.
Eigenpalfacade with API key auth, automatic retries on 5xx / 429 / network errors withRetry-Afterhonoring, typedEigenpalErrorsubclasses, andworkflows.executions.runAndWait()for client-side polling.