@spfunctions/sdk@1.0.1 and @spfunctions/agent@1.0.2.
The packages are now published. This page remains as release evidence and rollback guidance.
Current package status
| Package | Current status | Version | Publish status |
|---|---|---|---|
@spfunctions/sdk | typed data, contract client, and dual-venue execution client | 1.0.1 | published |
@spfunctions/agent | governed direct runner plus v1 model loop | 1.0.2 | published |
@spfunctions/cli | public operator and automation surface | 3.0.47 | ready to publish |
sf agent --tool is the command-line wrapper around direct canonical tool semantics.
Release boundary
The 1.0 release means publishing the stable TypeScript package surfaces after approval. Live execution remains policy-gated and opt-in.@spfunctions/sdk release scope:
- typed client over stable SimpleFunctions object and contract surfaces
- API-key-first identity
- strict manifest access through
GET /api/contracts/tools - read, research, authenticated read, explicit thesis-write surfaces, and governed Kalshi/Polymarket execution
- typed errors and contract preflight
@spfunctions/agent release scope:
- governed direct tool runner
describe(),call(), andstream()- strict canonical tool names only
- policy gates for permissions,
sideEffect, andcostEffect - trace record/replay
- policy-gated live execution through an API-keyed
SimpleFunctionsclient - v1 model loop with provider adapter, sessions, hooks, watch primitives, and Cursor-style compatibility
- MCP runtime
- browser runtime with long-lived keys
- hosted sessions, hosted traces, or human approval services
events.*market.relatedauth.statusinvestigations.createintents.proposewebhooks.create- unguarded live trading
Required gates
| Gate | SDK | Agent | Evidence required |
|---|---|---|---|
| Package privacy intentionally removed in release PR | Required | Required | package.json has no private:true |
| Version policy approved | Required | Required | release issue or PR approval |
| Package surface snapshot | Required | Required | exported symbols test |
| Typecheck | Required | Required | package typecheck passes |
| Unit tests | Required | Required | package test suite passes |
| Build | Required | Required | package build passes |
| Tarball contents | Required | Required | npm pack --dry-run --json guard |
| Source-map leakage | Required | Required | package-surface tests reject .map, .tsbuildinfo, and JS sourceMappingURL |
| Fresh install smoke | Required | Required | tarball install in temp consumer |
| No-key behavior | Required | Required | manifest-only SDK bootstrap; Agent live no-key throws |
| API-key live smoke | Required for reads | Required for world.read | production world.read smoke with SF_API_KEY |
| Strict manifest smoke | Required | Required | schema 0.3.0-draft, canonical names only |
| Docs validation | Required | Required | mint validate passes |
| Mintlify sync gate | Required | Required | public docs/API/SDK/Agent changes reference a merged simplefunctions-docs PR |
| Browser key warning | Required | Required | no long-lived browser API key examples |
| Public install docs after publish | Required | Required | docs/package README show stable install |
Verification commands
Run these commands as package verification. They do not publish by themselves. Full local readiness gate:- SDK and Agent build must clean stale
dist/before compiling. - SDK and Agent packages must not publish
src/, examples, scripts, tests,.env, source maps, declaration maps, orsourceMappingURL. - SDK and Agent should not use CLI-style single-file bundling unless the package API, declarations, subpath exports, and consumer tree-shaking are revalidated.
Manual publish procedure
The following commands are the manual stable publish shape used by the release operator. Preconditions:- approval explicitly says which package to publish
private:truehas been intentionally removed in a reviewed release PR- version has been chosen and committed in git
- tarball smoke has passed from a clean worktree
- production smoke has passed
- npm account is logged in and 2FA OTP is available
Rollback and deprecate plan
If a bad stable package is published:- Publish a fixed patch version from latest
origin/main. - Fresh-install smoke the fixed version.
- Deprecate the bad version with an npm 2FA OTP.
- Update docs and release notes to point at the fixed version.
API key policy
SDK and Agent packages are API-key-first.- SDK constructor may accept
apiKey?: string - SDK no-key access is limited to strict manifest inspection and explicitly allowlisted free public reads
- current no-key SDK live data calls such as
sf.world.get()must throwMissingApiKeyError - Agent live execution requires an API-keyed
SimpleFunctionsclient - Agent
inspectOnlyandreplayOnlymay run without a key - replay miss must never fall through to live execution
- browser examples must not expose long-lived API keys
v0 and v1 Agent boundary
@spfunctions/agent v0 is the governed direct tool runner. It is not a model-backed runtime.
v0 includes:
- strict tool registry loading
- direct canonical calls
- stream events
- policy gates
- trace and replay
- typed errors
@spfunctions/agent/v1.
v1 includes:
query()andstartup()APIs- model provider interfaces
- OpenRouter provider
- local sessions and resume/fork behavior
- hooks
- subagents
- watch primitives
Decision checklist
Before approving stable publish, answer these questions:| Question | Required answer |
|---|---|
| Were both packages private before the release PR? | Yes |
Did a reviewed release PR remove private:true intentionally? | Yes |
| Are package versions explicit and committed? | Yes |
| Did SDK and Agent package tests pass? | Yes |
| Did SDK and Agent builds pass? | Yes |
| Did pack/fresh-install smoke pass? | Yes |
Did live smoke pass with SF_API_KEY? | Yes |
| Did no-key smoke skip or fail safely? | Yes |
Does /api/contracts/tools remain strict truth? | Yes |
Are /api/tools and MCP still compatibility surfaces only? | Yes |
| Are browser long-lived key examples absent? | Yes |
| Are unguarded live trading and default write Agent tools absent? | Yes |