Skip to content

Instantly share code, notes, and snippets.

View jclyne's full-sized avatar

Jeff Clyne jclyne

  • Block Inc.
  • St Louis, MO
  • 23:12 (UTC -06:00)
View GitHub Profile
@jclyne
jclyne / design-passcode-tokenization.md
Last active February 6, 2026 21:38
Design: Passcode Tokenization and Reuse in Moneybot-Core

Design: Passcode Tokenization and Reuse in Moneybot-Core

Problem Statement

When a customer interacts with Moneybot (the AI-powered Cash App assistant), certain operations — such as enabling or disabling a Cash Card — require passcode verification via Plasma blockers. The plaintext passcode must never be visible to the LLM, pass through the MCP tool layer, or flow through any intermediary service (such as kgoose). The passcode must travel exclusively from the client to moneybot-core. Additionally, a customer may be asked for their passcode multiple times within a single Moneybot session if multiple operations require verification.

Goals

  1. Remove passcode from the LLM context — The plaintext passcode must never pass through the MCP tool layer, be visible to the LLM, or flow through any upstream service (e.g., kgoose). It is handled exclusively by the client and moneybot-core.
  2. Tokenize once, reuse within a session — Collect the customer's passcode once per Moneybot session via a dedic
@jclyne
jclyne / adoption.md
Created January 28, 2026 19:04
misk-mcp Adoption Report for cash-server

misk-mcp Adoption Report

Last updated: 2026-01-28

Summary

  • Modules with misk-mcp dependency: 17 (excluding moneybot-lib itself)
  • Modules using moneybot-lib: 5
  • MCP servers configured: 22
  • Total tools: 68
@jclyne
jclyne / MEMORY_SYSTEM.md
Last active January 27, 2026 19:53
Memory System for Cash App Agentic Loop

Memory System for Cash App Agentic Loop

Overview

The memory system enables the Cash App advisor to remember information about users across conversations. When memory extraction is triggered, the system processes conversation history, extracts meaningful memory items using an LLM, and stores them for retrieval in future conversations.

┌─────────────────────────────────────────────────────────────────────────────┐
│                           MEMORY LIFECYCLE                                   │
├─────────────────────────────────────────────────────────────────────────────┤
import com.google.inject.AbstractModule
import com.google.inject.Guice
import com.google.inject.multibindings.OptionalBinder
import jakarta.inject.Inject
import java.util.Optional
import kotlin.jvm.optionals.getOrNull
class Greeter(val name: String) {
fun greet() = println("Hello $name")
@jclyne
jclyne / coroutines.md
Last active December 15, 2025 20:53
Server-Side Coroutines Guide

Server-Side Coroutines Guide

Google Doc

Goals

This document aims to describe how coroutine usage on the server is implemented within frameworks, outlining best practices and providing educational guidance for developers.

This is not an exhaustive explanation of coroutines and all their features. For comprehensive coroutine documentation, refer to the official Kotlin coroutines documentation. This guide focuses specifically on server-side usage within our frameworks (Misk, event-client, etc.), addressing the unique considerations and patterns that apply to server environments.