
Security News
RubyGems Adds Cooldown Feature to Bundler for Newly Published Gems
RubyGems and Bundler 4.0.13 introduced an opt-in cooldown feature that delays newly published gems during dependency resolution.
@codespar/types
Advanced tools
Zero-dependency TypeScript package defining the shared session interface hierarchy for CodeSpar runtimes.
Any runtime that implements SessionBase — the managed CodeSpar backend, Anthropic Managed Agents, a self-hosted server, or a test double — is a first-class citizen in the SDK ecosystem. The contract is the only coupling between runtimes and the tools that run on top of them.
npm install @codespar/types
SessionBaseThe minimal interface any runtime must implement.
import type { SessionBase } from "@codespar/types";
interface SessionBase {
readonly id: string;
readonly status: "active" | "closed" | "error";
execute(toolName: string, params: Record<string, unknown>): Promise<ToolResult>;
send(message: string): Promise<SendResult>;
sendStream(message: string): AsyncIterable<StreamEvent>;
connections(): Promise<BaseConnection[]>;
close(): Promise<void>;
}
SessionThe codespar-specific extension of SessionBase, used when a session was created through the managed CodeSpar API.
import type { Session } from "@codespar/types";
interface Session extends SessionBase {
proxyExecute(request: ProxyRequest): Promise<ProxyResult>;
authorize(serverId: string, config: AuthConfig): Promise<AuthResult>;
// Tool discovery + connection wizard (codespar_discover / codespar_manage_connections)
discover(useCase: string, options?: DiscoverOptions): Promise<DiscoverResult>;
connectionWizard(options: ConnectionWizardOptions): Promise<ConnectionWizardResult>;
// Meta-tool wrappers — typed payloads, same wire as session.execute(...)
charge(args: ChargeArgs): Promise<ChargeResult>;
ship(args: ShipArgs): Promise<ShipResult>;
// Async settlement (codespar_charge / codespar_pay)
paymentStatus(toolCallId: string): Promise<PaymentStatusResult>;
paymentStatusStream(
toolCallId: string,
options: PaymentStatusStreamOptions,
): Promise<PaymentStatusResult>;
// Async verification (codespar_kyc)
verificationStatus(toolCallId: string): Promise<VerificationStatusResult>;
verificationStatusStream(
toolCallId: string,
options: VerificationStatusStreamOptions,
): Promise<VerificationStatusResult>;
mcp?: {
url: string;
headers: Record<string, string>;
};
}
isCodesparSessionType guard to narrow a SessionBase to Session when you need codespar-specific methods.
import { isCodesparSession } from "@codespar/types";
function useSession(session: SessionBase) {
if (isCodesparSession(session)) {
// session is Session here — proxyExecute, authorize, mcp available
const config = session.mcp;
}
}
| Type | Description |
|---|---|
ToolResult | Return value of execute() — success, data, error, duration, server, tool |
SendResult | Return value of send() — message, tool_calls, iterations |
StreamEvent | Union of events yielded by sendStream() — user_message, assistant_text, tool_use, tool_result, done, error |
BaseConnection | Entry from connections() — id, connected |
ServerConnection | Extended connection with name and provider metadata |
ProxyRequest | Input to proxyExecute() — server, endpoint, method, body, headers |
ProxyResult | Return value of proxyExecute() — status, data, headers, duration, proxy_call_id |
AuthConfig | Input to authorize() — redirectUri, scopes? |
AuthResult | Return value of authorize() — linkToken, authorizeUrl, expiresAt |
DiscoverOptions / DiscoverResult / DiscoverToolMatch / DiscoverPlanStep | Wire shapes for session.discover(...) (codespar_discover) |
ConnectionWizardOptions / ConnectionWizardResult / ConnectionStatusRow | Wire shapes for session.connectionWizard(...) (codespar_manage_connections) |
ChargeArgs / ChargeBuyer / ChargeResult | Wire shapes for session.charge(...) (codespar_charge, inbound) |
ShipArgs / ShipAddress / ShipItem / ShipResult | Wire shapes for session.ship(...) (codespar_ship) |
PaymentStatus / PaymentStatusResult / PaymentStatusEvent | Wire shapes for session.paymentStatus(toolCallId) — async webhook correlation |
PaymentStatusStreamOptions | Options for session.paymentStatusStream(...) — onUpdate?, signal? |
VerificationStatus / VerificationStatusResult / VerificationStatusEvent | Wire shapes for session.verificationStatus(toolCallId) — async KYC poll |
VerificationStatusStreamOptions | Options for session.verificationStatusStream(...) — onUpdate?, signal? |
@codespar/types ships a runContractSuite helper under a /testing subpath export. It registers a Vitest test suite that exercises the five SessionBase methods against a live HTTP endpoint.
// my-runtime.test.ts
import { runContractSuite } from "@codespar/types/testing";
// Skip unless the env vars are present
const apiKey = process.env["MY_RUNTIME_API_KEY"];
const baseUrl = process.env["MY_RUNTIME_BASE_URL"] ?? "http://localhost:3000";
if (apiKey) {
runContractSuite(baseUrl, apiKey);
}
The suite opens a session via POST /v1/sessions with Authorization: Bearer <apiKey> and body { servers: [], user_id: "contract-suite" }, then validates:
execute() calls a registered tool and returns a ToolResultsend() returns a SendResult with a message fieldsendStream() yields well-typed StreamEvents including a done eventconnections() returns entries with id and connected fieldsclose() transitions session.status to "closed"See docs/custom-session-runtime.md for a full implementation guide.
Need governance, budget limits, and audit trails for agent payments? CodeSpar Enterprise adds policy engine, payment routing, and compliance templates on top of these MCP servers.
MIT — codespar.dev
FAQs
Shared session interface contract for codespar runtimes
We found that @codespar/types demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
RubyGems and Bundler 4.0.13 introduced an opt-in cooldown feature that delays newly published gems during dependency resolution.

Security News
pnpm 11.5 now recognizes npm staged publish approvals in release metadata, preventing those releases from being mistaken for lower-trust package publishes.

Security News
Federal audit finds NIST lacked a plan to clear the NVD backlog, wasted funds on duplicate work, and delayed use of CISA data.