Minimal SDKs for connecting chat applications to the SimpleFlow control plane.
# JavaScript / TypeScript
npm install simpleflow-sdk
# Python
pip install simpleflow-sdkexport SIMPLEFLOW_BASE_URL="http://localhost:8080"
export SIMPLEFLOW_USER_EMAIL="user@example.com"
export SIMPLEFLOW_USER_PASSWORD="secret"The SDK supports control-plane auth sessions (/v1/auth/sessions) and bearer-token chat calls.
const { SimpleFlowClient } = require('simpleflow-sdk');
const client = new SimpleFlowClient({
baseUrl: process.env.SIMPLEFLOW_BASE_URL,
});
// Chat app user flow
async function chatFlow(agentId) {
const session = await client.createAuthSession({
email: process.env.SIMPLEFLOW_USER_EMAIL,
password: process.env.SIMPLEFLOW_USER_PASSWORD,
});
const userToken = session.access_token;
const principal = await client.validateAccessToken({ authToken: userToken });
const userId = principal.user_id;
// 1. List user's chat sessions
const sessions = await client.listChatSessions({
agentId,
userId,
authToken: userToken,
});
const sessionId = sessions[0]?.chat_id || 'new-session';
// 2. Write a chat message
await client.writeChatMessage({
agent_id: agentId,
user_id: userId,
chat_id: sessionId,
message_id: 'm_001',
role: 'user',
content: { text: 'Hello!' },
telemetry_data: { source: 'chat.app' },
}, { authToken: userToken });
// 3. Update session status/title if needed
await client.updateChatSession({
chatId: sessionId,
agentId,
userId,
status: 'active',
authToken: userToken,
});
// 4. Refresh when needed
await client.refreshAuthSession();
}import asyncio
from simpleflow_sdk import SimpleFlowClient
client = SimpleFlowClient(base_url="http://localhost:8080")
async def chat_flow(agent_id: str):
session = await client.create_auth_session(
email="user@example.com",
password="secret",
)
user_token = session["access_token"]
principal = await client.validate_access_token(auth_token=user_token)
user_id = principal["user_id"]
# 1. List user's chat sessions
sessions = await client.list_chat_sessions(
agent_id=agent_id,
user_id=user_id,
auth_token=user_token,
)
session_id = sessions[0]["chat_id"] if sessions else "new-session"
# 2. Write a chat message
await client.write_chat_message({
"agent_id": agent_id,
"user_id": user_id,
"chat_id": session_id,
"message_id": "m_001",
"role": "user",
"content": {"text": "Hello!"},
"telemetry_data": {"source": "chat.app"},
}, auth_token=user_token)
# 3. Update session status/title if needed
await client.update_chat_session(
chat_id=session_id,
agent_id=agent_id,
user_id=user_id,
status="active",
auth_token=user_token,
)
await client.refresh_auth_session()listChatSessions()/list_chat_sessions()- List chat sessions for a userlistChatMessages()/list_chat_messages()- List messages in a chat sessionwriteChatMessage()/write_chat_message()- Store a chat messagewriteChatMessageFromSimpleAgentsResult()/write_chat_message_from_simple_agents_result()- Store assistant message + strictoutput_datafrom SimpleAgents resultgetChatMessageOutput()/get_chat_message_output()- Get persisted assistant output for a messageupsertChatMessageOutput()/upsert_chat_message_output()- Upsert message output explicitlyupdateChatSession()/update_chat_session()- Update session title or status
createAuthSession()/create_auth_session()- Log in with email/password and store access tokenvalidateAccessToken()/validate_access_token()- Validate bearer token via/v1/merefreshAuthSession()/refresh_auth_session()- Refresh access token via cookie + CSRF session
node/simpleflow_sdk- Node.js SDK packagepython/simpleflow_sdk- Python SDK packagedocs/- Documentation
# Run tests
make test-node
make test-python
# Lint and format
make lint-go
make fmt-go
# Publish (maintainers only)
make publish-node
make publish-pythonGET /v1/chat/sessions- List chat sessionsGET /v1/chat/sessions?chat_id=...- List chat messagesPOST /v1/chat/sessions- Write chat messagePATCH /v1/chat/sessions/{chat_id}- Update chat sessionPOST /v1/auth/sessions- Create auth sessionPOST /v1/auth/sessions/refresh- Refresh auth session
See LICENSE file.