From 5252cc92ea0ea2a4abba3626885e656504c86e17 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 6 Apr 2026 21:24:20 +0000 Subject: [PATCH] docs: Update documentation for controller PR #2459 Updates documentation to reflect changes made in: feat: add preset support to node SessionProvider Related controller PR: cartridge-gg/controller#2459 --- src/pages/controller/examples/node.md | 57 +++++++++++++++++++++++++-- 1 file changed, 54 insertions(+), 3 deletions(-) diff --git a/src/pages/controller/examples/node.md b/src/pages/controller/examples/node.md index cbb133c..0e56433 100644 --- a/src/pages/controller/examples/node.md +++ b/src/pages/controller/examples/node.md @@ -32,6 +32,59 @@ bun add @cartridge/controller starknet ## Basic Setup +### Using Presets + +```typescript +import SessionProvider, { + ControllerError, +} from "@cartridge/controller/session/node"; +import { constants } from "starknet"; +import path from "path"; + +async function main() { + const storagePath = + process.env.CARTRIDGE_STORAGE_PATH || + path.join(process.cwd(), ".cartridge"); + + // Create a session provider using a verified preset + const provider = new SessionProvider({ + rpc: "https://api.cartridge.gg/x/starknet/sepolia", + chainId: constants.StarknetChainId.SN_SEPOLIA, + preset: "my-game", // Load verified policies from preset + basePath: storagePath, + }); + + console.log("Registering a session..."); + console.log("Open the URL printed below to authorize the session."); + + try { + const account = await provider.connect(); + if (!account) { + console.log("Session not ready yet. Complete the browser flow and rerun."); + return; + } + + console.log("Session ready!"); + console.log("Account address:", account.address); + } catch (error: unknown) { + const controllerError = error as ControllerError; + if (controllerError?.code) { + console.error("Error:", { + code: controllerError.code, + message: controllerError.message, + data: controllerError.data, + }); + } else { + console.error("Error:", error); + } + } +} + +main().catch(console.error); +``` + +### Using Manual Policies + ```typescript import SessionProvider, { ControllerError, @@ -43,12 +96,11 @@ export const STRK_CONTRACT_ADDRESS = "0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7"; async function main() { - // Path to store session const storagePath = process.env.CARTRIDGE_STORAGE_PATH || path.join(process.cwd(), ".cartridge"); - // Create a session provider + // Create a session provider with manual policies const provider = new SessionProvider({ rpc: "https://api.cartridge.gg/x/starknet/sepolia", chainId: constants.StarknetChainId.SN_SEPOLIA, @@ -72,7 +124,6 @@ async function main() { console.log("Open the URL printed below to authorize the session."); try { - // Connect and create session const account = await provider.connect(); if (!account) { console.log("Session not ready yet. Complete the browser flow and rerun.");