SYMBOL INDEX (2713 symbols across 588 files) FILE: 2025-03-31-large-scale-classification/hello.py class Category (line 13) | class Category(BaseModel): function load_categories (line 19) | def load_categories() -> list[Category]: function embed (line 39) | def embed(text: str) -> list[float]: function _narrow_down_categories (line 47) | def _narrow_down_categories(text: str, categories: list[Category]) -> li... function _narrow_down_categories_llm (line 60) | def _narrow_down_categories_llm(text: str, categories: list[Category]) -... function _pick_best_category (line 70) | def _pick_best_category(text: str, categories: list[Category]) -> Category: function pick_category (line 85) | def pick_category(text: str) -> str: FILE: 2025-04-07-reasoning-models-vs-prompts/src/actions/chat.ts type ChatMessage (line 7) | interface ChatMessage { function streamChatResponse (line 16) | async function streamChatResponse( FILE: 2025-04-07-reasoning-models-vs-prompts/src/app/layout.tsx function RootLayout (line 20) | function RootLayout({ FILE: 2025-04-07-reasoning-models-vs-prompts/src/app/page.tsx function Home (line 3) | function Home() { FILE: 2025-04-07-reasoning-models-vs-prompts/src/components/App.tsx function App (line 6) | function App() { FILE: 2025-04-07-reasoning-models-vs-prompts/src/lib/fakeResponse.ts type ReplyResponse (line 3) | type ReplyResponse = { type QueryGraphResponse (line 8) | type QueryGraphResponse = { FILE: 2025-04-07-reasoning-models-vs-prompts/src/lib/neo4j.ts function getNeo4jDriver (line 5) | function getNeo4jDriver() { class Neo4jSession (line 15) | class Neo4jSession { method constructor (line 18) | constructor() { method run (line 22) | async run(query: string) { method close (line 27) | async close() { method finalize (line 31) | finalize() { FILE: 2025-04-15-code-generation-small-models/agent/hello.py function find_imports (line 3) | def find_imports(code: str) -> list[str]: function main (line 13) | def main(): FILE: 2025-04-15-code-generation-small-models/agent/test_utils.py function test_load_files (line 3) | def test_load_files(): function test_walk_directory (line 10) | def test_walk_directory(): FILE: 2025-04-15-code-generation-small-models/agent/utils.py function load_files (line 19) | def load_files(file_paths: List[str]) -> Dict[str, str]: function walk_directory (line 38) | def walk_directory( FILE: 2025-04-15-code-generation-small-models/project/calculator.py class Calculator (line 5) | class Calculator: method __init__ (line 6) | def __init__(self): method calculate (line 15) | def calculate(self, a: float, operator: str, b: float) -> float: method store_in_memory (line 22) | def store_in_memory(self, value: float) -> None: method recall_memory (line 26) | def recall_memory(self) -> float: method clear_memory (line 30) | def clear_memory(self) -> None: FILE: 2025-04-15-code-generation-small-models/project/hello.py function main (line 1) | def main(): FILE: 2025-04-15-code-generation-small-models/project/interface.py class CalculatorInterface (line 5) | class CalculatorInterface: method __init__ (line 6) | def __init__(self): method get_number (line 10) | def get_number(self, prompt: str) -> float: method get_operator (line 18) | def get_operator(self) -> str: method display_menu (line 27) | def display_menu(self): method run (line 36) | def run(self): FILE: 2025-04-15-code-generation-small-models/project/main.py function main (line 5) | def main(): FILE: 2025-04-15-code-generation-small-models/project/operations.py function add (line 3) | def add(a: float, b: float) -> float: function subtract (line 7) | def subtract(a: float, b: float) -> float: function multiply (line 11) | def multiply(a: float, b: float) -> float: function divide (line 15) | def divide(a: float, b: float) -> float: FILE: 2025-04-22-twelve-factor-agents/final/src/agent.ts type Event (line 3) | interface Event { class Thread (line 8) | class Thread { method constructor (line 11) | constructor(events: Event[]) { method serializeForLLM (line 15) | serializeForLLM() { method trimLeadingWhitespace (line 19) | trimLeadingWhitespace(s: string) { method serializeOneEvent (line 23) | serializeOneEvent(e: Event) { type CalculatorTool (line 34) | type CalculatorTool = AddTool | SubtractTool | MultiplyTool | DivideTool; function handleNextStep (line 36) | async function handleNextStep(nextStep: CalculatorTool, thread: Thread):... function agentLoop (line 74) | async function agentLoop(thread: Thread): Promise { FILE: 2025-04-22-twelve-factor-agents/final/src/cli.ts function cli (line 7) | async function cli() { function askHuman (line 39) | async function askHuman(message: string) { FILE: 2025-04-22-twelve-factor-agents/final/src/index.ts function hello (line 3) | async function hello(): Promise { function main (line 7) | async function main() { FILE: 2025-04-22-twelve-factor-agents/final/src/state.ts class ThreadStore (line 7) | class ThreadStore { method create (line 10) | create(thread: Thread): string { method get (line 16) | get(id: string): Thread | undefined { method update (line 20) | update(id: string, thread: Thread): void { FILE: 2025-04-22-twelve-factor-agents/step-by-step/hack/restore-walkthrough.ts function extractFileOperations (line 6) | function extractFileOperations(markdown: string, upToChapter: number): {... function deleteDirRecursive (line 45) | function deleteDirRecursive(dirPath: string): void { function copyFile (line 53) | function copyFile(source: string, dest: string): void { function main (line 73) | async function main() { FILE: 2025-04-22-twelve-factor-agents/step-by-step/hack/run-walkthrough.ts constant DOUBLE_CTRL_C_TIMEOUT (line 15) | const DOUBLE_CTRL_C_TIMEOUT = 1000; function askToContinue (line 29) | function askToContinue(message: string): Promise { function showDiff (line 37) | function showDiff(command: string) { function runCommand (line 84) | async function runCommand(command: string, interactive: boolean, showDif... function extractCommands (line 217) | function extractCommands(markdown: string): { chapter: string; commands:... function main (line 280) | async function main() { FILE: 2025-04-22-twelve-factor-agents/step-by-step/walkthrough/00-index.ts function hello (line 1) | async function hello(): Promise { function main (line 5) | async function main() { FILE: 2025-04-22-twelve-factor-agents/step-by-step/walkthrough/01-agent.ts type AgentResponse (line 4) | type AgentResponse = Awaited>; type Event (line 6) | interface Event { class Thread (line 11) | class Thread { method constructor (line 14) | constructor(events: Event[]) { method serializeForLLM (line 18) | serializeForLLM() { function agentLoop (line 27) | async function agentLoop(thread: Thread): Promise { FILE: 2025-04-22-twelve-factor-agents/step-by-step/walkthrough/01-cli.ts function cli (line 5) | async function cli() { FILE: 2025-04-22-twelve-factor-agents/step-by-step/walkthrough/01-index.ts function hello (line 3) | async function hello(): Promise { function main (line 7) | async function main() { FILE: 2025-04-22-twelve-factor-agents/step-by-step/walkthrough/03-agent.ts type AgentResponse (line 4) | type AgentResponse = Awaited>; type Event (line 6) | interface Event { class Thread (line 11) | class Thread { method constructor (line 14) | constructor(events: Event[]) { method serializeForLLM (line 18) | serializeForLLM() { function agentLoop (line 27) | async function agentLoop(thread: Thread): Promise { FILE: 2025-04-22-twelve-factor-agents/step-by-step/walkthrough/03b-agent.ts type Event (line 3) | interface Event { class Thread (line 8) | class Thread { method constructor (line 11) | constructor(events: Event[]) { method serializeForLLM (line 15) | serializeForLLM() { type CalculatorTool (line 22) | type CalculatorTool = AddTool | SubtractTool | MultiplyTool | DivideTool; function handleNextStep (line 24) | async function handleNextStep(nextStep: CalculatorTool, thread: Thread):... function agentLoop (line 62) | async function agentLoop(thread: Thread): Promise { FILE: 2025-04-22-twelve-factor-agents/step-by-step/walkthrough/05-agent.ts type Event (line 3) | interface Event { class Thread (line 8) | class Thread { method constructor (line 11) | constructor(events: Event[]) { method serializeForLLM (line 15) | serializeForLLM() { type CalculatorTool (line 22) | type CalculatorTool = AddTool | SubtractTool | MultiplyTool | DivideTool; function handleNextStep (line 24) | async function handleNextStep(nextStep: CalculatorTool, thread: Thread):... function agentLoop (line 62) | async function agentLoop(thread: Thread): Promise { FILE: 2025-04-22-twelve-factor-agents/step-by-step/walkthrough/05-cli.ts function cli (line 7) | async function cli() { function askHuman (line 39) | async function askHuman(message: string) { FILE: 2025-04-22-twelve-factor-agents/step-by-step/walkthrough/07-agent.ts type Event (line 3) | interface Event { class Thread (line 8) | class Thread { method constructor (line 11) | constructor(events: Event[]) { method serializeForLLM (line 15) | serializeForLLM() { type CalculatorTool (line 22) | type CalculatorTool = AddTool | SubtractTool | MultiplyTool | DivideTool; function handleNextStep (line 24) | async function handleNextStep(nextStep: CalculatorTool, thread: Thread):... function agentLoop (line 62) | async function agentLoop(thread: Thread): Promise { FILE: 2025-04-22-twelve-factor-agents/step-by-step/walkthrough/07b-agent.ts type Event (line 3) | interface Event { class Thread (line 8) | class Thread { method constructor (line 11) | constructor(events: Event[]) { method serializeForLLM (line 15) | serializeForLLM() { method trimLeadingWhitespace (line 19) | trimLeadingWhitespace(s: string) { method serializeOneEvent (line 23) | serializeOneEvent(e: Event) { type CalculatorTool (line 34) | type CalculatorTool = AddTool | SubtractTool | MultiplyTool | DivideTool; function handleNextStep (line 36) | async function handleNextStep(nextStep: CalculatorTool, thread: Thread):... function agentLoop (line 74) | async function agentLoop(thread: Thread): Promise { FILE: 2025-04-22-twelve-factor-agents/step-by-step/walkthrough/09-state.ts class ThreadStore (line 7) | class ThreadStore { method create (line 10) | create(thread: Thread): string { method get (line 16) | get(id: string): Thread | undefined { method update (line 20) | update(id: string, thread: Thread): void { FILE: 2025-04-22-twelve-factor-agents/step-by-step/walkthrough/10-agent.ts type Event (line 3) | interface Event { class Thread (line 8) | class Thread { method constructor (line 11) | constructor(events: Event[]) { method serializeForLLM (line 15) | serializeForLLM() { method trimLeadingWhitespace (line 19) | trimLeadingWhitespace(s: string) { method serializeOneEvent (line 23) | serializeOneEvent(e: Event) { type CalculatorTool (line 34) | type CalculatorTool = AddTool | SubtractTool | MultiplyTool | DivideTool; function handleNextStep (line 36) | async function handleNextStep(nextStep: CalculatorTool, thread: Thread):... function agentLoop (line 69) | async function agentLoop(thread: Thread): Promise { FILE: 2025-04-22-twelve-factor-agents/step-by-step/walkthrough/10-server.ts type ApprovalPayload (line 43) | type ApprovalPayload = { type ResponsePayload (line 49) | type ResponsePayload = { type Payload (line 54) | type Payload = ApprovalPayload | ResponsePayload; FILE: 2025-05-10-workshop-nyc-twelve-factor-agents/pre-requisites/00-hello-world/walkthrough/00-index.ts function hello (line 1) | async function hello(): Promise { function main (line 5) | async function main() { FILE: 2025-05-10-workshop-nyc-twelve-factor-agents/pre-requisites/01-cli-and-agent/src/index.ts function hello (line 1) | async function hello(): Promise { function main (line 5) | async function main() { FILE: 2025-05-10-workshop-nyc-twelve-factor-agents/pre-requisites/01-cli-and-agent/walkthrough/01-agent.ts type AgentResponse (line 4) | type AgentResponse = Awaited>; type Event (line 6) | interface Event { class Thread (line 11) | class Thread { method constructor (line 14) | constructor(events: Event[]) { method serializeForLLM (line 18) | serializeForLLM() { function agentLoop (line 27) | async function agentLoop(thread: Thread): Promise { FILE: 2025-05-10-workshop-nyc-twelve-factor-agents/pre-requisites/01-cli-and-agent/walkthrough/01-cli.ts function cli (line 5) | async function cli() { FILE: 2025-05-10-workshop-nyc-twelve-factor-agents/pre-requisites/01-cli-and-agent/walkthrough/01-index.ts function hello (line 3) | async function hello(): Promise { function main (line 7) | async function main() { FILE: 2025-05-10-workshop-nyc-twelve-factor-agents/pre-requisites/final/src/agent.ts type AgentResponse (line 4) | type AgentResponse = Awaited>; type Event (line 6) | interface Event { class Thread (line 11) | class Thread { method constructor (line 14) | constructor(events: Event[]) { method serializeForLLM (line 18) | serializeForLLM() { function agentLoop (line 27) | async function agentLoop(thread: Thread): Promise { FILE: 2025-05-10-workshop-nyc-twelve-factor-agents/pre-requisites/final/src/cli.ts function cli (line 5) | async function cli() { FILE: 2025-05-10-workshop-nyc-twelve-factor-agents/pre-requisites/final/src/index.ts function hello (line 3) | async function hello(): Promise { function main (line 7) | async function main() { FILE: 2025-05-10-workshop-nyc-twelve-factor-agents/workshop-agents/02-calculator-tools/src/agent.ts type AgentResponse (line 4) | type AgentResponse = Awaited>; type Event (line 6) | interface Event { class Thread (line 11) | class Thread { method constructor (line 14) | constructor(events: Event[]) { method serializeForLLM (line 18) | serializeForLLM() { function agentLoop (line 27) | async function agentLoop(thread: Thread): Promise { FILE: 2025-05-10-workshop-nyc-twelve-factor-agents/workshop-agents/02-calculator-tools/src/cli.ts function cli (line 5) | async function cli() { FILE: 2025-05-10-workshop-nyc-twelve-factor-agents/workshop-agents/02-calculator-tools/src/index.ts function hello (line 3) | async function hello(): Promise { function main (line 7) | async function main() { FILE: 2025-05-10-workshop-nyc-twelve-factor-agents/workshop-agents/03-tool-loop/src/agent.ts type AgentResponse (line 4) | type AgentResponse = Awaited>; type Event (line 6) | interface Event { class Thread (line 11) | class Thread { method constructor (line 14) | constructor(events: Event[]) { method serializeForLLM (line 18) | serializeForLLM() { function agentLoop (line 27) | async function agentLoop(thread: Thread): Promise { FILE: 2025-05-10-workshop-nyc-twelve-factor-agents/workshop-agents/03-tool-loop/src/cli.ts function cli (line 5) | async function cli() { FILE: 2025-05-10-workshop-nyc-twelve-factor-agents/workshop-agents/03-tool-loop/src/index.ts function hello (line 3) | async function hello(): Promise { function main (line 7) | async function main() { FILE: 2025-05-10-workshop-nyc-twelve-factor-agents/workshop-agents/03-tool-loop/walkthrough/03-agent.ts type AgentResponse (line 4) | type AgentResponse = Awaited>; type Event (line 6) | interface Event { class Thread (line 11) | class Thread { method constructor (line 14) | constructor(events: Event[]) { method serializeForLLM (line 18) | serializeForLLM() { function agentLoop (line 27) | async function agentLoop(thread: Thread): Promise { FILE: 2025-05-10-workshop-nyc-twelve-factor-agents/workshop-agents/03-tool-loop/walkthrough/03b-agent.ts type Event (line 3) | interface Event { class Thread (line 8) | class Thread { method constructor (line 11) | constructor(events: Event[]) { method serializeForLLM (line 15) | serializeForLLM() { type CalculatorTool (line 22) | type CalculatorTool = AddTool | SubtractTool | MultiplyTool | DivideTool; function handleNextStep (line 24) | async function handleNextStep(nextStep: CalculatorTool, thread: Thread):... function agentLoop (line 62) | async function agentLoop(thread: Thread): Promise { FILE: 2025-05-10-workshop-nyc-twelve-factor-agents/workshop-agents/04-baml-tests/src/agent.ts type Event (line 3) | interface Event { class Thread (line 8) | class Thread { method constructor (line 11) | constructor(events: Event[]) { method serializeForLLM (line 15) | serializeForLLM() { type CalculatorTool (line 22) | type CalculatorTool = AddTool | SubtractTool | MultiplyTool | DivideTool; function handleNextStep (line 24) | async function handleNextStep(nextStep: CalculatorTool, thread: Thread):... function agentLoop (line 62) | async function agentLoop(thread: Thread): Promise { FILE: 2025-05-10-workshop-nyc-twelve-factor-agents/workshop-agents/04-baml-tests/src/cli.ts function cli (line 5) | async function cli() { FILE: 2025-05-10-workshop-nyc-twelve-factor-agents/workshop-agents/04-baml-tests/src/index.ts function hello (line 3) | async function hello(): Promise { function main (line 7) | async function main() { FILE: 2025-05-10-workshop-nyc-twelve-factor-agents/workshop-agents/05-human-tools/src/agent.ts type Event (line 3) | interface Event { class Thread (line 8) | class Thread { method constructor (line 11) | constructor(events: Event[]) { method serializeForLLM (line 15) | serializeForLLM() { type CalculatorTool (line 22) | type CalculatorTool = AddTool | SubtractTool | MultiplyTool | DivideTool; function handleNextStep (line 24) | async function handleNextStep(nextStep: CalculatorTool, thread: Thread):... function agentLoop (line 62) | async function agentLoop(thread: Thread): Promise { FILE: 2025-05-10-workshop-nyc-twelve-factor-agents/workshop-agents/05-human-tools/src/cli.ts function cli (line 5) | async function cli() { FILE: 2025-05-10-workshop-nyc-twelve-factor-agents/workshop-agents/05-human-tools/src/index.ts function hello (line 3) | async function hello(): Promise { function main (line 7) | async function main() { FILE: 2025-05-10-workshop-nyc-twelve-factor-agents/workshop-agents/05-human-tools/walkthrough/05-agent.ts type Event (line 3) | interface Event { class Thread (line 8) | class Thread { method constructor (line 11) | constructor(events: Event[]) { method serializeForLLM (line 15) | serializeForLLM() { type CalculatorTool (line 22) | type CalculatorTool = AddTool | SubtractTool | MultiplyTool | DivideTool; function handleNextStep (line 24) | async function handleNextStep(nextStep: CalculatorTool, thread: Thread):... function agentLoop (line 62) | async function agentLoop(thread: Thread): Promise { FILE: 2025-05-10-workshop-nyc-twelve-factor-agents/workshop-agents/05-human-tools/walkthrough/05-cli.ts function cli (line 7) | async function cli() { function askHuman (line 39) | async function askHuman(message: string) { FILE: 2025-05-10-workshop-nyc-twelve-factor-agents/workshop-agents/06-customize-prompt/src/agent.ts type Event (line 3) | interface Event { class Thread (line 8) | class Thread { method constructor (line 11) | constructor(events: Event[]) { method serializeForLLM (line 15) | serializeForLLM() { type CalculatorTool (line 22) | type CalculatorTool = AddTool | SubtractTool | MultiplyTool | DivideTool; function handleNextStep (line 24) | async function handleNextStep(nextStep: CalculatorTool, thread: Thread):... function agentLoop (line 62) | async function agentLoop(thread: Thread): Promise { FILE: 2025-05-10-workshop-nyc-twelve-factor-agents/workshop-agents/06-customize-prompt/src/cli.ts function cli (line 7) | async function cli() { function askHuman (line 39) | async function askHuman(message: string) { FILE: 2025-05-10-workshop-nyc-twelve-factor-agents/workshop-agents/06-customize-prompt/src/index.ts function hello (line 3) | async function hello(): Promise { function main (line 7) | async function main() { FILE: 2025-05-10-workshop-nyc-twelve-factor-agents/workshop-agents/07-context-window/src/agent.ts type Event (line 3) | interface Event { class Thread (line 8) | class Thread { method constructor (line 11) | constructor(events: Event[]) { method serializeForLLM (line 15) | serializeForLLM() { type CalculatorTool (line 22) | type CalculatorTool = AddTool | SubtractTool | MultiplyTool | DivideTool; function handleNextStep (line 24) | async function handleNextStep(nextStep: CalculatorTool, thread: Thread):... function agentLoop (line 62) | async function agentLoop(thread: Thread): Promise { FILE: 2025-05-10-workshop-nyc-twelve-factor-agents/workshop-agents/07-context-window/src/cli.ts function cli (line 7) | async function cli() { function askHuman (line 39) | async function askHuman(message: string) { FILE: 2025-05-10-workshop-nyc-twelve-factor-agents/workshop-agents/07-context-window/src/index.ts function hello (line 3) | async function hello(): Promise { function main (line 7) | async function main() { FILE: 2025-05-10-workshop-nyc-twelve-factor-agents/workshop-agents/07-context-window/walkthrough/07-agent.ts type Event (line 3) | interface Event { class Thread (line 8) | class Thread { method constructor (line 11) | constructor(events: Event[]) { method serializeForLLM (line 15) | serializeForLLM() { type CalculatorTool (line 22) | type CalculatorTool = AddTool | SubtractTool | MultiplyTool | DivideTool; function handleNextStep (line 24) | async function handleNextStep(nextStep: CalculatorTool, thread: Thread):... function agentLoop (line 62) | async function agentLoop(thread: Thread): Promise { FILE: 2025-05-10-workshop-nyc-twelve-factor-agents/workshop-agents/07-context-window/walkthrough/07b-agent.ts type Event (line 3) | interface Event { class Thread (line 8) | class Thread { method constructor (line 11) | constructor(events: Event[]) { method serializeForLLM (line 15) | serializeForLLM() { method trimLeadingWhitespace (line 19) | trimLeadingWhitespace(s: string) { method serializeOneEvent (line 23) | serializeOneEvent(e: Event) { type CalculatorTool (line 34) | type CalculatorTool = AddTool | SubtractTool | MultiplyTool | DivideTool; function handleNextStep (line 36) | async function handleNextStep(nextStep: CalculatorTool, thread: Thread):... function agentLoop (line 74) | async function agentLoop(thread: Thread): Promise { FILE: 2025-05-10-workshop-nyc-twelve-factor-agents/workshop-agents/08-api-endpoints/src/agent.ts type Event (line 3) | interface Event { class Thread (line 8) | class Thread { method constructor (line 11) | constructor(events: Event[]) { method serializeForLLM (line 15) | serializeForLLM() { method trimLeadingWhitespace (line 19) | trimLeadingWhitespace(s: string) { method serializeOneEvent (line 23) | serializeOneEvent(e: Event) { type CalculatorTool (line 34) | type CalculatorTool = AddTool | SubtractTool | MultiplyTool | DivideTool; function handleNextStep (line 36) | async function handleNextStep(nextStep: CalculatorTool, thread: Thread):... function agentLoop (line 74) | async function agentLoop(thread: Thread): Promise { FILE: 2025-05-10-workshop-nyc-twelve-factor-agents/workshop-agents/08-api-endpoints/src/cli.ts function cli (line 7) | async function cli() { function askHuman (line 39) | async function askHuman(message: string) { FILE: 2025-05-10-workshop-nyc-twelve-factor-agents/workshop-agents/08-api-endpoints/src/index.ts function hello (line 3) | async function hello(): Promise { function main (line 7) | async function main() { FILE: 2025-05-10-workshop-nyc-twelve-factor-agents/workshop-agents/09-state-management/src/agent.ts type Event (line 3) | interface Event { class Thread (line 8) | class Thread { method constructor (line 11) | constructor(events: Event[]) { method serializeForLLM (line 15) | serializeForLLM() { method trimLeadingWhitespace (line 19) | trimLeadingWhitespace(s: string) { method serializeOneEvent (line 23) | serializeOneEvent(e: Event) { type CalculatorTool (line 34) | type CalculatorTool = AddTool | SubtractTool | MultiplyTool | DivideTool; function handleNextStep (line 36) | async function handleNextStep(nextStep: CalculatorTool, thread: Thread):... function agentLoop (line 74) | async function agentLoop(thread: Thread): Promise { FILE: 2025-05-10-workshop-nyc-twelve-factor-agents/workshop-agents/09-state-management/src/cli.ts function cli (line 7) | async function cli() { function askHuman (line 39) | async function askHuman(message: string) { FILE: 2025-05-10-workshop-nyc-twelve-factor-agents/workshop-agents/09-state-management/src/index.ts function hello (line 3) | async function hello(): Promise { function main (line 7) | async function main() { FILE: 2025-05-10-workshop-nyc-twelve-factor-agents/workshop-agents/09-state-management/walkthrough/09-state.ts class ThreadStore (line 7) | class ThreadStore { method create (line 10) | create(thread: Thread): string { method get (line 16) | get(id: string): Thread | undefined { method update (line 20) | update(id: string, thread: Thread): void { FILE: 2025-05-10-workshop-nyc-twelve-factor-agents/workshop-agents/10-human-approval/src/agent.ts type Event (line 3) | interface Event { class Thread (line 8) | class Thread { method constructor (line 11) | constructor(events: Event[]) { method serializeForLLM (line 15) | serializeForLLM() { method trimLeadingWhitespace (line 19) | trimLeadingWhitespace(s: string) { method serializeOneEvent (line 23) | serializeOneEvent(e: Event) { type CalculatorTool (line 34) | type CalculatorTool = AddTool | SubtractTool | MultiplyTool | DivideTool; function handleNextStep (line 36) | async function handleNextStep(nextStep: CalculatorTool, thread: Thread):... function agentLoop (line 74) | async function agentLoop(thread: Thread): Promise { FILE: 2025-05-10-workshop-nyc-twelve-factor-agents/workshop-agents/10-human-approval/src/cli.ts function cli (line 7) | async function cli() { function askHuman (line 39) | async function askHuman(message: string) { FILE: 2025-05-10-workshop-nyc-twelve-factor-agents/workshop-agents/10-human-approval/src/index.ts function hello (line 3) | async function hello(): Promise { function main (line 7) | async function main() { FILE: 2025-05-10-workshop-nyc-twelve-factor-agents/workshop-agents/10-human-approval/src/state.ts class ThreadStore (line 7) | class ThreadStore { method create (line 10) | create(thread: Thread): string { method get (line 16) | get(id: string): Thread | undefined { method update (line 20) | update(id: string, thread: Thread): void { FILE: 2025-05-10-workshop-nyc-twelve-factor-agents/workshop-agents/10-human-approval/walkthrough/10-agent.ts type Event (line 3) | interface Event { class Thread (line 8) | class Thread { method constructor (line 11) | constructor(events: Event[]) { method serializeForLLM (line 15) | serializeForLLM() { method trimLeadingWhitespace (line 19) | trimLeadingWhitespace(s: string) { method serializeOneEvent (line 23) | serializeOneEvent(e: Event) { method awaitingHumanResponse (line 33) | awaitingHumanResponse(): boolean { method awaitingHumanApproval (line 38) | awaitingHumanApproval(): boolean { type CalculatorTool (line 44) | type CalculatorTool = AddTool | SubtractTool | MultiplyTool | DivideTool; function handleNextStep (line 46) | async function handleNextStep(nextStep: CalculatorTool, thread: Thread):... function agentLoop (line 84) | async function agentLoop(thread: Thread): Promise { FILE: 2025-05-10-workshop-nyc-twelve-factor-agents/workshop-agents/10-human-approval/walkthrough/10-server.ts type ApprovalPayload (line 46) | type ApprovalPayload = { type ResponsePayload (line 52) | type ResponsePayload = { type Payload (line 57) | type Payload = ApprovalPayload | ResponsePayload; FILE: 2025-05-10-workshop-nyc-twelve-factor-agents/workshop-bonus/hello.py function main (line 5) | async def main(resume_str: str): function look_up_company_in_database (line 26) | def look_up_company_in_database(company_name: str) -> str | None: FILE: 2025-05-10-workshop-nyc-twelve-factor-agents/workshop-bonus/parse_json_schema.py class SchemaAdder (line 6) | class SchemaAdder: method __init__ (line 7) | def __init__(self, tb: TypeBuilder, schema: Dict[str, Any]): method _parse_object (line 12) | def _parse_object(self, json_schema: Dict[str, Any]) -> FieldType: method _parse_string (line 53) | def _parse_string(self, json_schema: Dict[str, Any]) -> FieldType: method _load_ref (line 68) | def _load_ref(self, ref: str) -> FieldType: method parse (line 80) | def parse(self, json_schema: Dict[str, Any]) -> FieldType: function parse_json_schema (line 117) | def parse_json_schema(json_schema: Dict[str, Any], tb: TypeBuilder) -> F... function parse_tools (line 121) | def parse_tools(scheme_file_path: str, tb: TypeBuilder) -> Dict[str, Fie... FILE: 2025-05-13-designing-evals/hello.py function lesson_plan_test_harness (line 12) | def lesson_plan_test_harness(test_idx: int, topic: str): function test_1 (line 25) | def test_1(): function test_2 (line 28) | def test_2(): FILE: 2025-05-17-workshop-sf-twelve-factor-agents/agents-workshop/00-hello-world/walkthrough/00-index.ts function hello (line 1) | async function hello(): Promise { function main (line 5) | async function main() { FILE: 2025-05-17-workshop-sf-twelve-factor-agents/agents-workshop/01-cli-and-agent/src/index.ts function hello (line 1) | async function hello(): Promise { function main (line 5) | async function main() { FILE: 2025-05-17-workshop-sf-twelve-factor-agents/agents-workshop/01-cli-and-agent/walkthrough/01-agent.ts type AgentResponse (line 4) | type AgentResponse = Awaited>; type Event (line 6) | interface Event { class Thread (line 11) | class Thread { method constructor (line 14) | constructor(events: Event[]) { method serializeForLLM (line 18) | serializeForLLM() { function agentLoop (line 27) | async function agentLoop(thread: Thread): Promise { FILE: 2025-05-17-workshop-sf-twelve-factor-agents/agents-workshop/01-cli-and-agent/walkthrough/01-cli.ts function cli (line 5) | async function cli() { FILE: 2025-05-17-workshop-sf-twelve-factor-agents/agents-workshop/01-cli-and-agent/walkthrough/01-index.ts function hello (line 3) | async function hello(): Promise { function main (line 7) | async function main() { FILE: 2025-05-17-workshop-sf-twelve-factor-agents/agents-workshop/02-calculator-tools/src/agent.ts type AgentResponse (line 4) | type AgentResponse = Awaited>; type Event (line 6) | interface Event { class Thread (line 11) | class Thread { method constructor (line 14) | constructor(events: Event[]) { method serializeForLLM (line 18) | serializeForLLM() { function agentLoop (line 27) | async function agentLoop(thread: Thread): Promise { FILE: 2025-05-17-workshop-sf-twelve-factor-agents/agents-workshop/02-calculator-tools/src/cli.ts function cli (line 5) | async function cli() { FILE: 2025-05-17-workshop-sf-twelve-factor-agents/agents-workshop/02-calculator-tools/src/index.ts function hello (line 3) | async function hello(): Promise { function main (line 7) | async function main() { FILE: 2025-05-17-workshop-sf-twelve-factor-agents/agents-workshop/03-tool-loop/src/agent.ts type AgentResponse (line 4) | type AgentResponse = Awaited>; type Event (line 6) | interface Event { class Thread (line 11) | class Thread { method constructor (line 14) | constructor(events: Event[]) { method serializeForLLM (line 18) | serializeForLLM() { function agentLoop (line 27) | async function agentLoop(thread: Thread): Promise { FILE: 2025-05-17-workshop-sf-twelve-factor-agents/agents-workshop/03-tool-loop/src/cli.ts function cli (line 5) | async function cli() { FILE: 2025-05-17-workshop-sf-twelve-factor-agents/agents-workshop/03-tool-loop/src/index.ts function hello (line 3) | async function hello(): Promise { function main (line 7) | async function main() { FILE: 2025-05-17-workshop-sf-twelve-factor-agents/agents-workshop/03-tool-loop/walkthrough/03-agent.ts type AgentResponse (line 4) | type AgentResponse = Awaited>; type Event (line 6) | interface Event { class Thread (line 11) | class Thread { method constructor (line 14) | constructor(events: Event[]) { method serializeForLLM (line 18) | serializeForLLM() { function agentLoop (line 27) | async function agentLoop(thread: Thread): Promise { FILE: 2025-05-17-workshop-sf-twelve-factor-agents/agents-workshop/03-tool-loop/walkthrough/03b-agent.ts type Event (line 3) | interface Event { class Thread (line 8) | class Thread { method constructor (line 11) | constructor(events: Event[]) { method serializeForLLM (line 15) | serializeForLLM() { type CalculatorTool (line 22) | type CalculatorTool = AddTool | SubtractTool | MultiplyTool | DivideTool; function handleNextStep (line 24) | async function handleNextStep(nextStep: CalculatorTool, thread: Thread):... function agentLoop (line 62) | async function agentLoop(thread: Thread): Promise { FILE: 2025-05-17-workshop-sf-twelve-factor-agents/agents-workshop/04-baml-tests/src/agent.ts type Event (line 3) | interface Event { class Thread (line 8) | class Thread { method constructor (line 11) | constructor(events: Event[]) { method serializeForLLM (line 15) | serializeForLLM() { type CalculatorTool (line 22) | type CalculatorTool = AddTool | SubtractTool | MultiplyTool | DivideTool; function handleNextStep (line 24) | async function handleNextStep(nextStep: CalculatorTool, thread: Thread):... function agentLoop (line 62) | async function agentLoop(thread: Thread): Promise { FILE: 2025-05-17-workshop-sf-twelve-factor-agents/agents-workshop/04-baml-tests/src/cli.ts function cli (line 5) | async function cli() { FILE: 2025-05-17-workshop-sf-twelve-factor-agents/agents-workshop/04-baml-tests/src/index.ts function hello (line 3) | async function hello(): Promise { function main (line 7) | async function main() { FILE: 2025-05-17-workshop-sf-twelve-factor-agents/agents-workshop/05-human-tools/src/agent.ts type Event (line 3) | interface Event { class Thread (line 8) | class Thread { method constructor (line 11) | constructor(events: Event[]) { method serializeForLLM (line 15) | serializeForLLM() { type CalculatorTool (line 22) | type CalculatorTool = AddTool | SubtractTool | MultiplyTool | DivideTool; function handleNextStep (line 24) | async function handleNextStep(nextStep: CalculatorTool, thread: Thread):... function agentLoop (line 62) | async function agentLoop(thread: Thread): Promise { FILE: 2025-05-17-workshop-sf-twelve-factor-agents/agents-workshop/05-human-tools/src/cli.ts function cli (line 5) | async function cli() { FILE: 2025-05-17-workshop-sf-twelve-factor-agents/agents-workshop/05-human-tools/src/index.ts function hello (line 3) | async function hello(): Promise { function main (line 7) | async function main() { FILE: 2025-05-17-workshop-sf-twelve-factor-agents/agents-workshop/05-human-tools/walkthrough/05-agent.ts type Event (line 3) | interface Event { class Thread (line 8) | class Thread { method constructor (line 11) | constructor(events: Event[]) { method serializeForLLM (line 15) | serializeForLLM() { type CalculatorTool (line 22) | type CalculatorTool = AddTool | SubtractTool | MultiplyTool | DivideTool; function handleNextStep (line 24) | async function handleNextStep(nextStep: CalculatorTool, thread: Thread):... function agentLoop (line 62) | async function agentLoop(thread: Thread): Promise { FILE: 2025-05-17-workshop-sf-twelve-factor-agents/agents-workshop/05-human-tools/walkthrough/05-cli.ts function cli (line 7) | async function cli() { function askHuman (line 39) | async function askHuman(message: string) { FILE: 2025-05-17-workshop-sf-twelve-factor-agents/agents-workshop/06-customize-prompt/src/agent.ts type Event (line 3) | interface Event { class Thread (line 8) | class Thread { method constructor (line 11) | constructor(events: Event[]) { method serializeForLLM (line 15) | serializeForLLM() { type CalculatorTool (line 22) | type CalculatorTool = AddTool | SubtractTool | MultiplyTool | DivideTool; function handleNextStep (line 24) | async function handleNextStep(nextStep: CalculatorTool, thread: Thread):... function agentLoop (line 62) | async function agentLoop(thread: Thread): Promise { FILE: 2025-05-17-workshop-sf-twelve-factor-agents/agents-workshop/06-customize-prompt/src/cli.ts function cli (line 7) | async function cli() { function askHuman (line 39) | async function askHuman(message: string) { FILE: 2025-05-17-workshop-sf-twelve-factor-agents/agents-workshop/06-customize-prompt/src/index.ts function hello (line 3) | async function hello(): Promise { function main (line 7) | async function main() { FILE: 2025-05-17-workshop-sf-twelve-factor-agents/agents-workshop/07-context-window/src/agent.ts type Event (line 3) | interface Event { class Thread (line 8) | class Thread { method constructor (line 11) | constructor(events: Event[]) { method serializeForLLM (line 15) | serializeForLLM() { type CalculatorTool (line 22) | type CalculatorTool = AddTool | SubtractTool | MultiplyTool | DivideTool; function handleNextStep (line 24) | async function handleNextStep(nextStep: CalculatorTool, thread: Thread):... function agentLoop (line 62) | async function agentLoop(thread: Thread): Promise { FILE: 2025-05-17-workshop-sf-twelve-factor-agents/agents-workshop/07-context-window/src/cli.ts function cli (line 7) | async function cli() { function askHuman (line 39) | async function askHuman(message: string) { FILE: 2025-05-17-workshop-sf-twelve-factor-agents/agents-workshop/07-context-window/src/index.ts function hello (line 3) | async function hello(): Promise { function main (line 7) | async function main() { FILE: 2025-05-17-workshop-sf-twelve-factor-agents/agents-workshop/07-context-window/walkthrough/07-agent.ts type Event (line 3) | interface Event { class Thread (line 8) | class Thread { method constructor (line 11) | constructor(events: Event[]) { method serializeForLLM (line 15) | serializeForLLM() { type CalculatorTool (line 22) | type CalculatorTool = AddTool | SubtractTool | MultiplyTool | DivideTool; function handleNextStep (line 24) | async function handleNextStep(nextStep: CalculatorTool, thread: Thread):... function agentLoop (line 62) | async function agentLoop(thread: Thread): Promise { FILE: 2025-05-17-workshop-sf-twelve-factor-agents/agents-workshop/07-context-window/walkthrough/07b-agent.ts type Event (line 3) | interface Event { class Thread (line 8) | class Thread { method constructor (line 11) | constructor(events: Event[]) { method serializeForLLM (line 15) | serializeForLLM() { method trimLeadingWhitespace (line 19) | trimLeadingWhitespace(s: string) { method serializeOneEvent (line 23) | serializeOneEvent(e: Event) { type CalculatorTool (line 34) | type CalculatorTool = AddTool | SubtractTool | MultiplyTool | DivideTool; function handleNextStep (line 36) | async function handleNextStep(nextStep: CalculatorTool, thread: Thread):... function agentLoop (line 74) | async function agentLoop(thread: Thread): Promise { FILE: 2025-05-17-workshop-sf-twelve-factor-agents/agents-workshop/08-api-endpoints/src/agent.ts type Event (line 3) | interface Event { class Thread (line 8) | class Thread { method constructor (line 11) | constructor(events: Event[]) { method serializeForLLM (line 15) | serializeForLLM() { method trimLeadingWhitespace (line 19) | trimLeadingWhitespace(s: string) { method serializeOneEvent (line 23) | serializeOneEvent(e: Event) { type CalculatorTool (line 34) | type CalculatorTool = AddTool | SubtractTool | MultiplyTool | DivideTool; function handleNextStep (line 36) | async function handleNextStep(nextStep: CalculatorTool, thread: Thread):... function agentLoop (line 74) | async function agentLoop(thread: Thread): Promise { FILE: 2025-05-17-workshop-sf-twelve-factor-agents/agents-workshop/08-api-endpoints/src/cli.ts function cli (line 7) | async function cli() { function askHuman (line 39) | async function askHuman(message: string) { FILE: 2025-05-17-workshop-sf-twelve-factor-agents/agents-workshop/08-api-endpoints/src/index.ts function hello (line 3) | async function hello(): Promise { function main (line 7) | async function main() { FILE: 2025-05-17-workshop-sf-twelve-factor-agents/agents-workshop/09-state-management/src/agent.ts type Event (line 3) | interface Event { class Thread (line 8) | class Thread { method constructor (line 11) | constructor(events: Event[]) { method serializeForLLM (line 15) | serializeForLLM() { method trimLeadingWhitespace (line 19) | trimLeadingWhitespace(s: string) { method serializeOneEvent (line 23) | serializeOneEvent(e: Event) { type CalculatorTool (line 34) | type CalculatorTool = AddTool | SubtractTool | MultiplyTool | DivideTool; function handleNextStep (line 36) | async function handleNextStep(nextStep: CalculatorTool, thread: Thread):... function agentLoop (line 74) | async function agentLoop(thread: Thread): Promise { FILE: 2025-05-17-workshop-sf-twelve-factor-agents/agents-workshop/09-state-management/src/cli.ts function cli (line 7) | async function cli() { function askHuman (line 39) | async function askHuman(message: string) { FILE: 2025-05-17-workshop-sf-twelve-factor-agents/agents-workshop/09-state-management/src/index.ts function hello (line 3) | async function hello(): Promise { function main (line 7) | async function main() { FILE: 2025-05-17-workshop-sf-twelve-factor-agents/agents-workshop/09-state-management/walkthrough/09-state.ts class ThreadStore (line 7) | class ThreadStore { method create (line 10) | create(thread: Thread): string { method get (line 16) | get(id: string): Thread | undefined { method update (line 20) | update(id: string, thread: Thread): void { FILE: 2025-05-17-workshop-sf-twelve-factor-agents/agents-workshop/10-human-approval/src/agent.ts type Event (line 3) | interface Event { class Thread (line 8) | class Thread { method constructor (line 11) | constructor(events: Event[]) { method serializeForLLM (line 15) | serializeForLLM() { method trimLeadingWhitespace (line 19) | trimLeadingWhitespace(s: string) { method serializeOneEvent (line 23) | serializeOneEvent(e: Event) { type CalculatorTool (line 34) | type CalculatorTool = AddTool | SubtractTool | MultiplyTool | DivideTool; function handleNextStep (line 36) | async function handleNextStep(nextStep: CalculatorTool, thread: Thread):... function agentLoop (line 74) | async function agentLoop(thread: Thread): Promise { FILE: 2025-05-17-workshop-sf-twelve-factor-agents/agents-workshop/10-human-approval/src/cli.ts function cli (line 7) | async function cli() { function askHuman (line 39) | async function askHuman(message: string) { FILE: 2025-05-17-workshop-sf-twelve-factor-agents/agents-workshop/10-human-approval/src/index.ts function hello (line 3) | async function hello(): Promise { function main (line 7) | async function main() { FILE: 2025-05-17-workshop-sf-twelve-factor-agents/agents-workshop/10-human-approval/src/state.ts class ThreadStore (line 7) | class ThreadStore { method create (line 10) | create(thread: Thread): string { method get (line 16) | get(id: string): Thread | undefined { method update (line 20) | update(id: string, thread: Thread): void { FILE: 2025-05-17-workshop-sf-twelve-factor-agents/agents-workshop/10-human-approval/walkthrough/10-agent.ts type Event (line 3) | interface Event { class Thread (line 8) | class Thread { method constructor (line 11) | constructor(events: Event[]) { method serializeForLLM (line 15) | serializeForLLM() { method trimLeadingWhitespace (line 19) | trimLeadingWhitespace(s: string) { method serializeOneEvent (line 23) | serializeOneEvent(e: Event) { method awaitingHumanResponse (line 33) | awaitingHumanResponse(): boolean { method awaitingHumanApproval (line 38) | awaitingHumanApproval(): boolean { type CalculatorTool (line 44) | type CalculatorTool = AddTool | SubtractTool | MultiplyTool | DivideTool; function handleNextStep (line 46) | async function handleNextStep(nextStep: CalculatorTool, thread: Thread):... function agentLoop (line 84) | async function agentLoop(thread: Thread): Promise { FILE: 2025-05-17-workshop-sf-twelve-factor-agents/agents-workshop/10-human-approval/walkthrough/10-server.ts type ApprovalPayload (line 46) | type ApprovalPayload = { type ResponsePayload (line 52) | type ResponsePayload = { type Payload (line 57) | type Payload = ApprovalPayload | ResponsePayload; FILE: 2025-05-17-workshop-sf-twelve-factor-agents/agents-workshop/11-humanlayer-approval/src/agent.ts type Event (line 3) | interface Event { class Thread (line 8) | class Thread { method constructor (line 11) | constructor(events: Event[]) { method serializeForLLM (line 15) | serializeForLLM() { method trimLeadingWhitespace (line 19) | trimLeadingWhitespace(s: string) { method serializeOneEvent (line 23) | serializeOneEvent(e: Event) { method awaitingHumanResponse (line 33) | awaitingHumanResponse(): boolean { method awaitingHumanApproval (line 38) | awaitingHumanApproval(): boolean { type CalculatorTool (line 44) | type CalculatorTool = AddTool | SubtractTool | MultiplyTool | DivideTool; function handleNextStep (line 46) | async function handleNextStep(nextStep: CalculatorTool, thread: Thread):... function agentLoop (line 84) | async function agentLoop(thread: Thread): Promise { FILE: 2025-05-17-workshop-sf-twelve-factor-agents/agents-workshop/11-humanlayer-approval/src/cli.ts function cli (line 7) | async function cli() { function askHuman (line 39) | async function askHuman(message: string) { FILE: 2025-05-17-workshop-sf-twelve-factor-agents/agents-workshop/11-humanlayer-approval/src/index.ts function hello (line 3) | async function hello(): Promise { function main (line 7) | async function main() { FILE: 2025-05-17-workshop-sf-twelve-factor-agents/agents-workshop/11-humanlayer-approval/src/server.ts type ApprovalPayload (line 46) | type ApprovalPayload = { type ResponsePayload (line 52) | type ResponsePayload = { type Payload (line 57) | type Payload = ApprovalPayload | ResponsePayload; FILE: 2025-05-17-workshop-sf-twelve-factor-agents/agents-workshop/11-humanlayer-approval/src/state.ts class ThreadStore (line 7) | class ThreadStore { method create (line 10) | create(thread: Thread): string { method get (line 16) | get(id: string): Thread | undefined { method update (line 20) | update(id: string, thread: Thread): void { FILE: 2025-05-17-workshop-sf-twelve-factor-agents/agents-workshop/11-humanlayer-approval/walkthrough/11-cli.ts function cli (line 6) | async function cli() { function askHuman (line 38) | async function askHuman(lastEvent: Event): Promise { function askHumanCLI (line 46) | async function askHumanCLI(message: string): Promise { function askHumanEmail (line 59) | async function askHumanEmail(lastEvent: Event): Promise { FILE: 2025-05-17-workshop-sf-twelve-factor-agents/agents-workshop/11-humanlayer-approval/walkthrough/11b-cli.ts function cli (line 6) | async function cli() { function askHuman (line 38) | async function askHuman(lastEvent: Event): Promise { function askHumanCLI (line 46) | async function askHumanCLI(message: string): Promise { function askHumanEmail (line 59) | async function askHumanEmail(lastEvent: Event): Promise { FILE: 2025-05-17-workshop-sf-twelve-factor-agents/agents-workshop/11-humanlayer-approval/walkthrough/11c-cli.ts function cli (line 6) | async function cli() { function askHuman (line 38) | async function askHuman(lastEvent: Event): Promise { function askHumanCLI (line 46) | async function askHumanCLI(message: string): Promise { function askHumanEmail (line 59) | async function askHumanEmail(lastEvent: Event): Promise { FILE: 2025-05-17-workshop-sf-twelve-factor-agents/morning/hello.py function main (line 1) | def main(): FILE: 2025-05-17-workshop-sf-twelve-factor-agents/pre-requisites/00-hello-world/walkthrough/00-index.ts function hello (line 1) | async function hello(): Promise { function main (line 5) | async function main() { FILE: 2025-05-17-workshop-sf-twelve-factor-agents/pre-requisites/00a-python-setup/final/hello.py function main (line 1) | def main(): FILE: 2025-05-17-workshop-sf-twelve-factor-agents/pre-requisites/01-cli-and-agent/src/agent.ts type AgentResponse (line 4) | type AgentResponse = Awaited>; type Event (line 6) | interface Event { class Thread (line 11) | class Thread { method constructor (line 14) | constructor(events: Event[]) { method serializeForLLM (line 18) | serializeForLLM() { function agentLoop (line 27) | async function agentLoop(thread: Thread): Promise { FILE: 2025-05-17-workshop-sf-twelve-factor-agents/pre-requisites/01-cli-and-agent/src/cli.ts function cli (line 5) | async function cli() { FILE: 2025-05-17-workshop-sf-twelve-factor-agents/pre-requisites/01-cli-and-agent/src/index.ts function hello (line 1) | async function hello(): Promise { function main (line 5) | async function main() { FILE: 2025-05-17-workshop-sf-twelve-factor-agents/pre-requisites/01-cli-and-agent/walkthrough/01-agent.ts type AgentResponse (line 4) | type AgentResponse = Awaited>; type Event (line 6) | interface Event { class Thread (line 11) | class Thread { method constructor (line 14) | constructor(events: Event[]) { method serializeForLLM (line 18) | serializeForLLM() { function agentLoop (line 27) | async function agentLoop(thread: Thread): Promise { FILE: 2025-05-17-workshop-sf-twelve-factor-agents/pre-requisites/01-cli-and-agent/walkthrough/01-cli.ts function cli (line 5) | async function cli() { FILE: 2025-05-17-workshop-sf-twelve-factor-agents/pre-requisites/01-cli-and-agent/walkthrough/01-index.ts function hello (line 3) | async function hello(): Promise { function main (line 7) | async function main() { FILE: 2025-05-17-workshop-sf-twelve-factor-agents/pre-requisites/01a-cli-and-agent-localmodels/src/agent.ts type AgentResponse (line 4) | type AgentResponse = Awaited>; type Event (line 6) | interface Event { class Thread (line 11) | class Thread { method constructor (line 14) | constructor(events: Event[]) { method serializeForLLM (line 18) | serializeForLLM() { function agentLoop (line 27) | async function agentLoop(thread: Thread): Promise { FILE: 2025-05-17-workshop-sf-twelve-factor-agents/pre-requisites/01a-cli-and-agent-localmodels/src/cli.ts function cli (line 5) | async function cli() { FILE: 2025-05-17-workshop-sf-twelve-factor-agents/pre-requisites/01a-cli-and-agent-localmodels/src/index.ts function hello (line 3) | async function hello(): Promise { function main (line 7) | async function main() { FILE: 2025-05-17-workshop-sf-twelve-factor-agents/pre-requisites/02-calculator-tools/src/agent.ts type AgentResponse (line 4) | type AgentResponse = Awaited>; type Event (line 6) | interface Event { class Thread (line 11) | class Thread { method constructor (line 14) | constructor(events: Event[]) { method serializeForLLM (line 18) | serializeForLLM() { function agentLoop (line 27) | async function agentLoop(thread: Thread): Promise { FILE: 2025-05-17-workshop-sf-twelve-factor-agents/pre-requisites/02-calculator-tools/src/cli.ts function cli (line 5) | async function cli() { FILE: 2025-05-17-workshop-sf-twelve-factor-agents/pre-requisites/02-calculator-tools/src/index.ts function hello (line 3) | async function hello(): Promise { function main (line 7) | async function main() { FILE: 2025-05-17-workshop-sf-twelve-factor-agents/pre-requisites/03-tool-loop/src/agent.ts type AgentResponse (line 4) | type AgentResponse = Awaited>; type Event (line 6) | interface Event { class Thread (line 11) | class Thread { method constructor (line 14) | constructor(events: Event[]) { method serializeForLLM (line 18) | serializeForLLM() { function agentLoop (line 27) | async function agentLoop(thread: Thread): Promise { FILE: 2025-05-17-workshop-sf-twelve-factor-agents/pre-requisites/03-tool-loop/src/cli.ts function cli (line 5) | async function cli() { FILE: 2025-05-17-workshop-sf-twelve-factor-agents/pre-requisites/03-tool-loop/src/index.ts function hello (line 3) | async function hello(): Promise { function main (line 7) | async function main() { FILE: 2025-05-17-workshop-sf-twelve-factor-agents/pre-requisites/03-tool-loop/walkthrough/03-agent.ts type AgentResponse (line 4) | type AgentResponse = Awaited>; type Event (line 6) | interface Event { class Thread (line 11) | class Thread { method constructor (line 14) | constructor(events: Event[]) { method serializeForLLM (line 18) | serializeForLLM() { function agentLoop (line 27) | async function agentLoop(thread: Thread): Promise { FILE: 2025-05-17-workshop-sf-twelve-factor-agents/pre-requisites/03-tool-loop/walkthrough/03b-agent.ts type Event (line 3) | interface Event { class Thread (line 8) | class Thread { method constructor (line 11) | constructor(events: Event[]) { method serializeForLLM (line 15) | serializeForLLM() { type CalculatorTool (line 22) | type CalculatorTool = AddTool | SubtractTool | MultiplyTool | DivideTool; function handleNextStep (line 24) | async function handleNextStep(nextStep: CalculatorTool, thread: Thread):... function agentLoop (line 62) | async function agentLoop(thread: Thread): Promise { FILE: 2025-05-20-policies-to-prompts/datasets.py function download_file (line 11) | def download_file(url: str, output_path: Path) -> bool: function extract_tar (line 30) | def extract_tar(tar_path: Path, extract_path: Path) -> bool: function convert_pdf_to_text (line 45) | def convert_pdf_to_text(pdf_path: Path, text_path: Path) -> bool: function main (line 74) | def main(): FILE: 2025-05-20-policies-to-prompts/pipeline.py function mentions_gift (line 15) | def mentions_gift(email: str) -> bool: function read_one_email (line 18) | def read_one_email(path: Path) -> str: function check_gift_email (line 23) | async def check_gift_email(email: str) -> GiftEmailAnalysis | Literal[Fa... function load_emails_from_dir (line 38) | def load_emails_from_dir(path: Path) -> list[str]: function check_emails (line 48) | async def check_emails(emails: list[str]): FILE: 2025-05-20-policies-to-prompts/questions.py function chunk_document (line 10) | def chunk_document(text: str, num_chunks: int = 5) -> list[str]: function process_chunk (line 20) | async def process_chunk(chunk: str, chunk_index: int) -> list[Question]: function extract_questions (line 40) | async def extract_questions(document: Path) -> None: FILE: 2025-05-20-policies-to-prompts/test_pipeline.py function test_pipeline (line 14) | async def test_pipeline(test_case): FILE: 2025-05-27-mcp-with-10000-tools/parse_json_schema.py class SchemaAdder (line 9) | class SchemaAdder: method __init__ (line 10) | def __init__(self, tb: TypeBuilder, schema: Dict[str, Any]): method _parse_object (line 15) | def _parse_object(self, json_schema: Dict[str, Any]) -> FieldType: method _parse_string (line 61) | def _parse_string(self, json_schema: Dict[str, Any]) -> FieldType: method _load_ref (line 76) | def _load_ref(self, ref: str) -> FieldType: method parse (line 88) | def parse(self, json_schema: Dict[str, Any]) -> FieldType: function parse_json_schema (line 125) | def parse_json_schema(json_schema: Dict[str, Any], tb: TypeBuilder) -> F... function parse_tools (line 129) | def parse_tools(scheme_file_path: str, tb: TypeBuilder) -> Dict[str, tup... FILE: 2025-05-27-mcp-with-10000-tools/tools.py function load_tools (line 14) | async def load_tools(query: str, tool_file_path: str) -> TypeBuilder: function embed (line 24) | async def embed(text: str) -> list[float]: function _narrow_down_categories (line 31) | async def _narrow_down_categories(text: str, tools: list[tuple[FieldType... function narrow_tools (line 46) | def narrow_tools(query: str, tools: list[FieldType]) -> list[FieldType]: function sort_actions (line 49) | def sort_actions(actions: list[Actions | HumanMessage]) -> list[Actions ... function dosomething (line 52) | async def dosomething(): FILE: 2025-06-03-humans-as-tools-async/src/agent.ts type Event (line 3) | interface Event { class Thread (line 8) | class Thread { method constructor (line 16) | constructor(events: Event[]) { method serializeForLLM (line 20) | serializeForLLM() { method trimLeadingWhitespace (line 24) | trimLeadingWhitespace(s: string) { method serializeOneEvent (line 28) | serializeOneEvent(e: Event) { method awaitingHumanResponse (line 38) | awaitingHumanResponse(): boolean { method awaitingHumanApproval (line 43) | awaitingHumanApproval(): boolean { method lastEvent (line 48) | lastEvent(): Event { type CalculatorTool (line 53) | type CalculatorTool = AddTool | SubtractTool | MultiplyTool | DivideTool; function handleNextStep (line 55) | async function handleNextStep(nextStep: CalculatorTool | ProcessRefund, ... function agentLoop (line 99) | async function agentLoop(thread: Thread): Promise { FILE: 2025-06-03-humans-as-tools-async/src/cli.ts function cliOuterLoop (line 10) | async function cliOuterLoop(message: string) { function cli (line 42) | async function cli() { function askManager (line 51) | async function askManager(lastEvent: Event): Promise { function askHumanCLI (line 92) | async function askHumanCLI(lastEvent: Event): Promise { type Approval (line 131) | type Approval = { function messageCLI (line 137) | async function messageCLI(message: string): Promise { function approveCLI (line 151) | async function approveCLI(message: string): Promise { FILE: 2025-06-03-humans-as-tools-async/src/index.ts function main (line 3) | async function main() { FILE: 2025-06-03-humans-as-tools-async/src/server.ts type V1Beta3ConversationCreated (line 13) | type V1Beta3ConversationCreated = { type CompletedHumanContact (line 23) | type CompletedHumanContact = HumanContact & { type V1Veta3HumanContactCompleted (line 29) | type V1Veta3HumanContactCompleted = { type Approved (line 37) | type Approved = {status: {approved: true}} type Rejected (line 38) | type Rejected = {status: {approved: false; comment: string}} type CompletedFunctionCall (line 40) | type CompletedFunctionCall = FunctionCall & (Approved | Rejected) type V1Beta3FunctionCallCompleted (line 42) | type V1Beta3FunctionCallCompleted = { type V1Beta3Event (line 50) | type V1Beta3Event = V1Beta3ConversationCreated | V1Veta3HumanContactComp... FILE: 2025-06-03-humans-as-tools-async/src/state.ts type ThreadStore (line 7) | interface ThreadStore { class FileSystemThreadStore (line 15) | class FileSystemThreadStore implements ThreadStore { method constructor (line 18) | constructor() { method create (line 22) | async create(thread: Thread): Promise { method get (line 34) | async get(id: string): Promise { method update (line 41) | async update(id: string, thread: Thread): Promise { FILE: 2025-06-10-cracking-the-prompting-interview/hello.py function main (line 4) | def main(): FILE: 2025-06-17-entity-extraction/hello.py function load_companies (line 6) | def load_companies(): function pick_potential_company (line 16) | def pick_potential_company(content: str) -> str | None: function valid_company (line 23) | def valid_company(company: Company) -> Company | None: function main (line 45) | def main(content: str): FILE: 2025-06-24-ai-content-pipeline/backend/ai_generator.py class AIGenerationError (line 9) | class AIGenerationError(Exception): class AIGenerator (line 13) | class AIGenerator: method __init__ (line 14) | def __init__(self): method summarize_video (line 17) | async def summarize_video(self, transcript: str, title: Optional[str] ... method generate_email_draft (line 38) | async def generate_email_draft(self, summary: VideoSummary, transcript... method generate_twitter_thread (line 60) | async def generate_twitter_thread(self, summary: VideoSummary, video_t... method generate_linkedin_post (line 81) | async def generate_linkedin_post(self, summary: VideoSummary, video_ti... method generate_all_content (line 102) | async def generate_all_content(self, transcript: str, video_title: Opt... function summarize_video (line 157) | async def summarize_video(transcript: str, title: Optional[str] = None) ... function generate_email_draft (line 161) | async def generate_email_draft(summary: VideoSummary, transcript: Option... function generate_twitter_thread (line 165) | async def generate_twitter_thread(summary: VideoSummary, video_title: Op... function generate_linkedin_post (line 169) | async def generate_linkedin_post(summary: VideoSummary, video_title: Opt... function generate_all_content (line 173) | async def generate_all_content(transcript: str, video_title: Optional[st... FILE: 2025-06-24-ai-content-pipeline/backend/auth.py class OAuthManager (line 13) | class OAuthManager: method __init__ (line 16) | def __init__(self): method validate_env_variables (line 28) | def validate_env_variables(self) -> Dict[str, bool]: method get_google_auth_url (line 38) | def get_google_auth_url(self, redirect_uri: str) -> str: method exchange_google_code (line 52) | def exchange_google_code(self, code: str, redirect_uri: str) -> Creden... method save_google_credentials (line 66) | def save_google_credentials(self, credentials: Credentials) -> bool: method load_google_credentials (line 79) | def load_google_credentials(self) -> Optional[Credentials]: method get_youtube_service (line 100) | def get_youtube_service(self): method validate_zoom_credentials (line 109) | def validate_zoom_credentials(self) -> bool: method get_zoom_auth_headers (line 113) | def get_zoom_auth_headers(self) -> Dict[str, str]: method get_oauth_status (line 125) | def get_oauth_status(self) -> Dict[str, Any]: FILE: 2025-06-24-ai-content-pipeline/backend/baml_wrapper.py function get_baml_client (line 3) | def get_baml_client(): FILE: 2025-06-24-ai-content-pipeline/backend/database.py class SupabaseDatabase (line 9) | class SupabaseDatabase: method __init__ (line 10) | def __init__(self): method create_video (line 32) | async def create_video(self, video: Video) -> None: method get_video (line 56) | async def get_video(self, video_id: str) -> Optional[Video]: method update_video (line 81) | async def update_video(self, video_id: str, updates: Dict[str, Any]) -... method get_drafts_by_video (line 103) | async def get_drafts_by_video(self, video_id: str) -> List[Draft]: method create_draft (line 138) | async def create_draft(self, draft: Draft) -> None: method get_draft (line 158) | async def get_draft(self, draft_id: str) -> Optional[Draft]: method delete_draft (line 193) | async def delete_draft(self, draft_id: str) -> None: method delete_drafts_by_video (line 204) | async def delete_drafts_by_video(self, video_id: str) -> None: method update_draft_field (line 218) | async def update_draft_field(self, draft_id: str, field_name: str, con... method create_feedback (line 235) | async def create_feedback(self, feedback: Feedback) -> None: FILE: 2025-06-24-ai-content-pipeline/backend/hello.py function main (line 1) | def main(): FILE: 2025-06-24-ai-content-pipeline/backend/job_processor.py class JobStatus (line 12) | class JobStatus(Enum): class Job (line 19) | class Job: class JobProcessor (line 31) | class JobProcessor: method __init__ (line 32) | def __init__(self): method register_task (line 39) | def register_task(self, task_name: str, task_func: Callable): method create_job (line 44) | def create_job(self, task_name: str, params: Dict[str, Any]) -> str: method get_job (line 71) | def get_job(self, job_id: str) -> Optional[Job]: method get_all_jobs (line 75) | def get_all_jobs(self) -> List[Job]: method get_jobs_by_status (line 79) | def get_jobs_by_status(self, status: JobStatus) -> List[Job]: method _process_queue (line 83) | async def _process_queue(self): method _process_job (line 111) | async def _process_job(self, job: Job): method get_job_status (line 147) | def get_job_status(self, job_id: str) -> Dict[str, Any]: method get_queue_status (line 165) | def get_queue_status(self) -> Dict[str, Any]: method process_pending_jobs (line 177) | async def process_pending_jobs(self): function process_video_task (line 186) | async def process_video_task(meeting_id: str) -> Dict[str, Any]: function create_video_processing_job (line 219) | def create_video_processing_job(meeting_id: str) -> str: function get_job_status (line 223) | def get_job_status(job_id: str) -> Dict[str, Any]: function get_queue_status (line 227) | def get_queue_status() -> Dict[str, Any]: FILE: 2025-06-24-ai-content-pipeline/backend/main.py function root (line 44) | async def root(): function import_video (line 48) | async def import_video(request: VideoImportRequest, background_tasks: Ba... function complete_video_processing_pipeline (line 74) | async def complete_video_processing_pipeline(video_id: str, zoom_meeting... function get_video (line 108) | async def get_video(video_id: str): function trigger_summarize (line 124) | async def trigger_summarize(video_id: str, background_tasks: BackgroundT... function process_video_summary (line 150) | async def process_video_summary(video_id: str, transcript: str, title: O... function get_summary (line 320) | async def get_summary(video_id: str): function get_transcript (line 335) | async def get_transcript(video_id: str): function list_drafts (line 353) | async def list_drafts(video_id: str): function save_drafts (line 369) | async def save_drafts(video_id: str, request: DraftUpdateRequest): function add_feedback (line 406) | async def add_feedback(draft_id: str, request: FeedbackRequest): function refine_content (line 431) | async def refine_content(video_id: str, request: ContentRefinementReques... function refine_content_background_task (line 509) | async def refine_content_background_task( function generate_video_title (line 618) | async def generate_video_title(video_id: str, background_tasks: Backgrou... function update_video_title (line 641) | async def update_video_title(video_id: str, request: TitleUpdateRequest): function generate_title_background_task (line 663) | async def generate_title_background_task(video_id: str): function test_supabase (line 715) | async def test_supabase(): function test_zoom (line 735) | async def test_zoom(): function get_zoom_recordings (line 758) | async def get_zoom_recordings( FILE: 2025-06-24-ai-content-pipeline/backend/migrations/add_processing_stage.sql type idx_videos_processing_stage (line 16) | CREATE INDEX IF NOT EXISTS idx_videos_processing_stage ON videos(process... FILE: 2025-06-24-ai-content-pipeline/backend/migrations/add_structured_content.sql type idx_drafts_email_draft (line 12) | CREATE INDEX IF NOT EXISTS idx_drafts_email_draft ON drafts USING GIN (e... type idx_drafts_x_draft (line 13) | CREATE INDEX IF NOT EXISTS idx_drafts_x_draft ON drafts USING GIN (x_draft) type idx_drafts_linkedin_draft (line 14) | CREATE INDEX IF NOT EXISTS idx_drafts_linkedin_draft ON drafts USING GIN... FILE: 2025-06-24-ai-content-pipeline/backend/migrations/add_summary_json.sql type idx_videos_summary (line 5) | CREATE INDEX IF NOT EXISTS idx_videos_summary ON videos USING GIN (summary) FILE: 2025-06-24-ai-content-pipeline/backend/models.py class VideoImportRequest (line 7) | class VideoImportRequest(BaseModel): class EmailDraftContent (line 12) | class EmailDraftContent(BaseModel): class XDraftContent (line 17) | class XDraftContent(BaseModel): class LinkedInDraftContent (line 21) | class LinkedInDraftContent(BaseModel): class DraftUpdateRequest (line 25) | class DraftUpdateRequest(BaseModel): class FeedbackRequest (line 31) | class FeedbackRequest(BaseModel): class ContentRefinementRequest (line 34) | class ContentRefinementRequest(BaseModel): class TitleUpdateRequest (line 39) | class TitleUpdateRequest(BaseModel): class Video (line 44) | class Video(BaseModel): class Draft (line 58) | class Draft(BaseModel): class Feedback (line 68) | class Feedback(BaseModel): class ZoomRecording (line 76) | class ZoomRecording(BaseModel): class VideoImportResponse (line 91) | class VideoImportResponse(BaseModel): class VideoResponse (line 96) | class VideoResponse(BaseModel): class SummaryResponse (line 101) | class SummaryResponse(BaseModel): class DraftsListResponse (line 105) | class DraftsListResponse(BaseModel): class DraftSaveResponse (line 109) | class DraftSaveResponse(BaseModel): class FeedbackResponse (line 114) | class FeedbackResponse(BaseModel): class StatusResponse (line 119) | class StatusResponse(BaseModel): class TranscriptResponse (line 123) | class TranscriptResponse(BaseModel): class ZoomRecordingsResponse (line 127) | class ZoomRecordingsResponse(BaseModel): class ZoomMeetingRecordings (line 133) | class ZoomMeetingRecordings(BaseModel): class ZoomMeetingsResponse (line 141) | class ZoomMeetingsResponse(BaseModel): FILE: 2025-06-24-ai-content-pipeline/backend/oauth_setup.py function check_environment (line 32) | def check_environment(): function get_authenticated_youtube_service (line 53) | def get_authenticated_youtube_service(): function test_youtube_connection (line 107) | def test_youtube_connection(youtube): function setup_zoom_oauth (line 131) | def setup_zoom_oauth(): function test_zoom_connection (line 173) | def test_zoom_connection(): function test_google_auth (line 208) | def test_google_auth(): function test_zoom_auth (line 223) | def test_zoom_auth(): function create_sample_upload_request (line 227) | def create_sample_upload_request(youtube): function main (line 252) | def main(): FILE: 2025-06-24-ai-content-pipeline/backend/oauth_setup_claude.py function check_environment (line 17) | def check_environment(): function check_credential_files (line 38) | def check_credential_files(): function setup_google_oauth (line 68) | def setup_google_oauth(): function setup_zoom_oauth (line 145) | def setup_zoom_oauth(): function test_google_auth (line 195) | def test_google_auth(): function test_zoom_auth (line 234) | def test_zoom_auth(): function cleanup_invalid_tokens (line 262) | def cleanup_invalid_tokens(): function main (line 297) | def main(): FILE: 2025-06-24-ai-content-pipeline/backend/run_migration.py function run_migration (line 13) | def run_migration(): FILE: 2025-06-24-ai-content-pipeline/backend/schema.sql type videos (line 8) | CREATE TABLE IF NOT EXISTS videos ( type drafts (line 22) | CREATE TABLE IF NOT EXISTS drafts ( type feedback (line 33) | CREATE TABLE IF NOT EXISTS feedback ( type idx_videos_zoom_meeting_id (line 41) | CREATE INDEX IF NOT EXISTS idx_videos_zoom_meeting_id ON videos(zoom_mee... type idx_videos_status (line 42) | CREATE INDEX IF NOT EXISTS idx_videos_status ON videos(status) type idx_videos_processing_stage (line 43) | CREATE INDEX IF NOT EXISTS idx_videos_processing_stage ON videos(process... type idx_drafts_video_id (line 44) | CREATE INDEX IF NOT EXISTS idx_drafts_video_id ON drafts(video_id) type idx_drafts_created_at (line 45) | CREATE INDEX IF NOT EXISTS idx_drafts_created_at ON drafts(created_at DESC) type idx_feedback_draft_id (line 46) | CREATE INDEX IF NOT EXISTS idx_feedback_draft_id ON feedback(draft_id) FILE: 2025-06-24-ai-content-pipeline/backend/setup_supabase.py function main (line 12) | def main(): FILE: 2025-06-24-ai-content-pipeline/backend/test_baml_integration.py function test_baml_summarize (line 9) | def test_baml_summarize(): FILE: 2025-06-24-ai-content-pipeline/backend/test_zoom_recordings.py function get_zoom_access_token (line 7) | def get_zoom_access_token(): function get_recordings (line 16) | def get_recordings(meeting_id, access_token): function main (line 26) | def main(): FILE: 2025-06-24-ai-content-pipeline/backend/video_processor.py class VideoProcessor (line 19) | class VideoProcessor: method __init__ (line 20) | def __init__(self): method _setup_cache_directory (line 24) | def _setup_cache_directory(self) -> str: method _get_cache_filename (line 32) | def _get_cache_filename(self, zoom_meeting_id: str, recording_id: str)... method _load_youtube_credentials (line 39) | def _load_youtube_credentials(self) -> Optional[Credentials]: method process_video (line 77) | async def process_video(self, video_id: str, zoom_meeting_id: str): method _download_zoom_recording (line 124) | async def _download_zoom_recording(self, zoom_meeting_id: str) -> str: method _get_transcript (line 228) | async def _get_transcript(self, zoom_meeting_id: str) -> Optional[str]: method _upload_to_youtube (line 242) | async def _upload_to_youtube(self, video_file_path: str, zoom_meeting_... FILE: 2025-06-24-ai-content-pipeline/backend/zoom_client.py class ZoomClient (line 12) | class ZoomClient: method __init__ (line 13) | def __init__(self): method _get_access_token (line 17) | def _get_access_token(self) -> str: method _get_new_token (line 32) | def _get_new_token(self) -> str: method _make_request (line 59) | def _make_request(self, method: str, endpoint: str, params: Optional[D... method get_recordings (line 92) | def get_recordings(self, user_id: str = "me", from_date: Optional[str]... method get_recording_details (line 137) | def get_recording_details(self, meeting_id: str, recording_id: str) ->... method get_transcript (line 159) | def get_transcript(self, meeting_id: str) -> Optional[str]: method _get_chat_transcript (line 200) | def _get_chat_transcript(self, meeting_id: str, recording_id: str) -> ... FILE: 2025-06-24-ai-content-pipeline/frontend/src/app/layout.tsx function RootLayout (line 18) | function RootLayout({ FILE: 2025-06-24-ai-content-pipeline/frontend/src/app/page.tsx type FilterType (line 7) | type FilterType = "all" | "processing" | "ready" | "failed" function HomePage (line 9) | function HomePage() { FILE: 2025-06-24-ai-content-pipeline/frontend/src/app/videos/[id]/page.tsx function VideoDetailPage (line 21) | function VideoDetailPage() { FILE: 2025-06-24-ai-content-pipeline/frontend/src/components/TranscriptViewer.tsx type TranscriptViewerProps (line 8) | interface TranscriptViewerProps { function TranscriptViewer (line 12) | function TranscriptViewer({ videoId }: TranscriptViewerProps) { FILE: 2025-06-24-ai-content-pipeline/frontend/src/components/VideoImportForm.tsx function VideoImportForm (line 9) | function VideoImportForm() { FILE: 2025-06-24-ai-content-pipeline/frontend/src/components/VideoList.tsx function VideoList (line 8) | function VideoList() { FILE: 2025-06-24-ai-content-pipeline/frontend/src/components/ZoomRecordingsList.tsx function getLast3MonthsRange (line 8) | function getLast3MonthsRange() { function ZoomRecordingsList (line 18) | function ZoomRecordingsList() { FILE: 2025-06-24-ai-content-pipeline/frontend/src/components/home/video-list.tsx type FilterType (line 18) | type FilterType = "all" | "processing" | "ready" | "failed" type VideoListProps (line 20) | interface VideoListProps { function VideoList (line 24) | function VideoList({ filter = "all" }: VideoListProps) { FILE: 2025-06-24-ai-content-pipeline/frontend/src/components/home/zoom-recordings-list.tsx type ZoomRecording (line 17) | interface ZoomRecording { type ZoomMeetingRecording (line 31) | interface ZoomMeetingRecording { function getLastNMonthsRange (line 39) | function getLastNMonthsRange(months: number) { function ZoomRecordingsList (line 49) | function ZoomRecordingsList() { FILE: 2025-06-24-ai-content-pipeline/frontend/src/components/shared/empty-state.tsx type EmptyStateProps (line 5) | interface EmptyStateProps { function EmptyState (line 13) | function EmptyState({ Icon = Inbox, title, description, action, classNam... FILE: 2025-06-24-ai-content-pipeline/frontend/src/components/shared/error-message.tsx type ErrorMessageProps (line 8) | interface ErrorMessageProps { function ErrorMessage (line 15) | function ErrorMessage({ title = "An Error Occurred", message, onRetry, c... FILE: 2025-06-24-ai-content-pipeline/frontend/src/components/shared/loading-indicator.tsx type LoadingIndicatorProps (line 4) | interface LoadingIndicatorProps { function LoadingIndicator (line 11) | function LoadingIndicator({ FILE: 2025-06-24-ai-content-pipeline/frontend/src/components/shared/youtube-embed.tsx type YouTubeEmbedProps (line 5) | interface YouTubeEmbedProps { function extractVideoId (line 12) | function extractVideoId(url: string): string | null { function YouTubeEmbed (line 28) | function YouTubeEmbed({ url, className, title = "YouTube Video", size = ... FILE: 2025-06-24-ai-content-pipeline/frontend/src/components/theme-provider.tsx function ThemeProvider (line 6) | function ThemeProvider({ FILE: 2025-06-24-ai-content-pipeline/frontend/src/components/ui/alert.tsx function Alert (line 22) | function Alert({ function AlertTitle (line 37) | function AlertTitle({ className, ...props }: React.ComponentProps<"div">) { function AlertDescription (line 50) | function AlertDescription({ FILE: 2025-06-24-ai-content-pipeline/frontend/src/components/ui/badge.tsx function Badge (line 28) | function Badge({ FILE: 2025-06-24-ai-content-pipeline/frontend/src/components/ui/button.tsx function Button (line 38) | function Button({ FILE: 2025-06-24-ai-content-pipeline/frontend/src/components/ui/card.tsx function Card (line 5) | function Card({ className, ...props }: React.ComponentProps<"div">) { function CardHeader (line 18) | function CardHeader({ className, ...props }: React.ComponentProps<"div">) { function CardTitle (line 31) | function CardTitle({ className, ...props }: React.ComponentProps<"div">) { function CardDescription (line 41) | function CardDescription({ className, ...props }: React.ComponentProps<"... function CardAction (line 51) | function CardAction({ className, ...props }: React.ComponentProps<"div">) { function CardContent (line 64) | function CardContent({ className, ...props }: React.ComponentProps<"div"... function CardFooter (line 74) | function CardFooter({ className, ...props }: React.ComponentProps<"div">) { FILE: 2025-06-24-ai-content-pipeline/frontend/src/components/ui/dialog.tsx function Dialog (line 9) | function Dialog({ function DialogTrigger (line 15) | function DialogTrigger({ function DialogPortal (line 21) | function DialogPortal({ function DialogClose (line 27) | function DialogClose({ function DialogOverlay (line 33) | function DialogOverlay({ function DialogContent (line 49) | function DialogContent({ function DialogHeader (line 83) | function DialogHeader({ className, ...props }: React.ComponentProps<"div... function DialogFooter (line 93) | function DialogFooter({ className, ...props }: React.ComponentProps<"div... function DialogTitle (line 106) | function DialogTitle({ function DialogDescription (line 119) | function DialogDescription({ FILE: 2025-06-24-ai-content-pipeline/frontend/src/components/ui/input.tsx type InputProps (line 5) | interface InputProps FILE: 2025-06-24-ai-content-pipeline/frontend/src/components/ui/scroll-area.tsx function ScrollArea (line 8) | function ScrollArea({ function ScrollBar (line 31) | function ScrollBar({ FILE: 2025-06-24-ai-content-pipeline/frontend/src/components/ui/separator.tsx function Separator (line 8) | function Separator({ FILE: 2025-06-24-ai-content-pipeline/frontend/src/components/ui/tabs.tsx function Tabs (line 8) | function Tabs({ function TabsList (line 21) | function TabsList({ function TabsTrigger (line 37) | function TabsTrigger({ function TabsContent (line 53) | function TabsContent({ FILE: 2025-06-24-ai-content-pipeline/frontend/src/components/ui/textarea.tsx function Textarea (line 5) | function Textarea({ className, ...props }: React.ComponentProps<"textare... FILE: 2025-06-24-ai-content-pipeline/frontend/src/components/video/draft-editor.tsx type DraftEditorProps (line 29) | interface DraftEditorProps { type CurrentDraftState (line 35) | interface CurrentDraftState { function DraftEditor (line 41) | function DraftEditor({ videoId }: DraftEditorProps) { FILE: 2025-06-24-ai-content-pipeline/frontend/src/components/video/email-preview.tsx type EmailPreviewProps (line 10) | interface EmailPreviewProps { function EmailPreview (line 18) | function EmailPreview({ draft, onChange, onRefine, className, readOnly =... FILE: 2025-06-24-ai-content-pipeline/frontend/src/components/video/linkedin-preview.tsx type LinkedInDraft (line 10) | type LinkedInDraft = LinkedInPost type LinkedInPreviewProps (line 12) | interface LinkedInPreviewProps { function LinkedInPreview (line 19) | function LinkedInPreview({ draft, onChange, className, readOnly = false ... FILE: 2025-06-24-ai-content-pipeline/frontend/src/components/video/transcript-viewer.tsx type TranscriptViewerProps (line 13) | interface TranscriptViewerProps { function TranscriptViewer (line 18) | function TranscriptViewer({ videoId, initialTranscript }: TranscriptView... FILE: 2025-06-24-ai-content-pipeline/frontend/src/components/video/x-preview.tsx type XDraft (line 10) | type XDraft = TwitterThread type XPreviewProps (line 12) | interface XPreviewProps { function XPreview (line 19) | function XPreview({ draft, onChange, className, readOnly = false }: XPre... FILE: 2025-06-24-ai-content-pipeline/frontend/src/components/zoom/zoom-recordings-list.tsx type ZoomRecordingFile (line 17) | interface ZoomRecordingFile { type ZoomMeetingRecording (line 24) | interface ZoomMeetingRecording { function getLastNMonthsRange (line 35) | function getLastNMonthsRange(months: number) { function ZoomRecordingsList (line 45) | function ZoomRecordingsList() { FILE: 2025-06-24-ai-content-pipeline/frontend/src/lib/api.ts constant API_BASE_URL (line 1) | const API_BASE_URL = process.env.NEXT_PUBLIC_API_URL || 'http://localhos... type VideoImportRequest (line 3) | interface VideoImportRequest { type DraftUpdateRequest (line 7) | interface DraftUpdateRequest { type FeedbackRequest (line 13) | interface FeedbackRequest { type ZoomRecording (line 17) | interface ZoomRecording { type ZoomMeetingRecordings (line 31) | interface ZoomMeetingRecordings { type ZoomMeetingsResponse (line 39) | interface ZoomMeetingsResponse { method importVideo (line 46) | async importVideo(request: VideoImportRequest) { method getZoomRecordings (line 56) | async getZoomRecordings(params?: { method summarizeVideo (line 72) | async summarizeVideo(videoId: string): Promise { method saveDraft (line 83) | async saveDraft(videoId: string, draft: DraftUpdateRequest) { method addFeedback (line 93) | async addFeedback(draftId: string, feedback: FeedbackRequest) { method getTranscript (line 102) | async getTranscript(videoId: string): Promise { FILE: 2025-06-24-ai-content-pipeline/frontend/src/lib/apiClient.ts constant API_BASE_URL (line 3) | const API_BASE_URL = process.env.NEXT_PUBLIC_API_URL || "http://localhos... type XDraft (line 6) | type XDraft = TwitterThread type LinkedInDraft (line 7) | type LinkedInDraft = LinkedInPost type DraftContent (line 9) | interface DraftContent { function handleResponse (line 15) | async function handleResponse(response: Response): Promise { FILE: 2025-06-24-ai-content-pipeline/frontend/src/lib/supabase.ts type Video (line 27) | interface Video { type XDraft (line 41) | type XDraft = TwitterThread type LinkedInDraft (line 42) | type LinkedInDraft = LinkedInPost type Draft (line 44) | interface Draft { FILE: 2025-06-24-ai-content-pipeline/frontend/src/lib/utils.ts function cn (line 4) | function cn(...inputs: ClassValue[]) { FILE: 2025-07-01-ai-content-pipeline-2/backend/auth.py class OAuthManager (line 17) | class OAuthManager: method __init__ (line 20) | def __init__(self): method validate_env_variables (line 32) | def validate_env_variables(self) -> Dict[str, bool]: method get_google_auth_url (line 42) | def get_google_auth_url(self, redirect_uri: str) -> str: method exchange_google_code (line 55) | def exchange_google_code(self, code: str, redirect_uri: str) -> Creden... method save_google_credentials (line 68) | def save_google_credentials(self, credentials: Credentials) -> bool: method load_google_credentials (line 81) | def load_google_credentials(self) -> Optional[Credentials]: method get_youtube_service (line 104) | def get_youtube_service(self): method validate_zoom_credentials (line 113) | def validate_zoom_credentials(self) -> bool: method get_zoom_auth_headers (line 117) | def get_zoom_auth_headers(self) -> Dict[str, str]: method get_oauth_status (line 129) | def get_oauth_status(self) -> Dict[str, Any]: FILE: 2025-07-01-ai-content-pipeline-2/backend/baml_wrapper.py function get_baml_client (line 4) | def get_baml_client(): FILE: 2025-07-01-ai-content-pipeline-2/backend/database.py class SupabaseDatabase (line 12) | class SupabaseDatabase: method __init__ (line 13) | def __init__(self): method create_video (line 39) | async def create_video(self, video: Video) -> None: method get_video (line 63) | async def get_video(self, video_id: str) -> Optional[Video]: method update_video (line 88) | async def update_video(self, video_id: str, updates: Dict[str, Any]) -... method get_drafts_by_video (line 112) | async def get_drafts_by_video(self, video_id: str) -> List[Draft]: method create_draft (line 155) | async def create_draft(self, draft: Draft) -> None: method get_draft (line 179) | async def get_draft(self, draft_id: str) -> Optional[Draft]: method delete_draft (line 214) | async def delete_draft(self, draft_id: str) -> None: method delete_drafts_by_video (line 225) | async def delete_drafts_by_video(self, video_id: str) -> None: method update_draft_field (line 242) | async def update_draft_field( method create_feedback (line 265) | async def create_feedback(self, feedback: Feedback) -> None: FILE: 2025-07-01-ai-content-pipeline-2/backend/github_pr_service.py function get_episode_repo_path (line 14) | async def get_episode_repo_path( class GitHubPRService (line 90) | class GitHubPRService: method __init__ (line 91) | def __init__(self): method create_content_pr (line 100) | async def create_content_pr( method _generate_episode_readme (line 213) | async def _generate_episode_readme( method _generate_root_readme (line 265) | async def _generate_root_readme( FILE: 2025-07-01-ai-content-pipeline-2/backend/hello.py function main (line 1) | def main(): FILE: 2025-07-01-ai-content-pipeline-2/backend/luma_client.py class LumaClient (line 11) | class LumaClient: method __init__ (line 12) | def __init__(self): method get_event_for_zoom_meeting (line 19) | def get_event_for_zoom_meeting(self, zoom_meeting_id: str) -> Optional... method _get_recent_past_events (line 92) | def _get_recent_past_events(self, limit: int = 10) -> List[LumaEvent]: method _get_event_by_zoom_date_and_url (line 187) | def _get_event_by_zoom_date_and_url( method fetch_next_upcoming_event (line 316) | async def fetch_next_upcoming_event(self) -> Optional[LumaEvent]: FILE: 2025-07-01-ai-content-pipeline-2/backend/main.py class NextEventCache (line 65) | class NextEventCache: method __init__ (line 66) | def __init__(self, ttl_hours: int = 6): method get (line 75) | async def get(self) -> Optional[Dict]: method set (line 97) | async def set(self, data: Dict): method clear (line 107) | async def clear(self): function root (line 124) | async def root(): function get_recent_luma_events (line 129) | async def get_recent_luma_events(): function clear_luma_cache (line 143) | async def clear_luma_cache(): function get_next_ai_that_works_event (line 154) | async def get_next_ai_that_works_event(): function update_video_title (line 195) | async def update_video_title(video_id: str, request: dict): function get_luma_match_for_zoom_recording (line 222) | async def get_luma_match_for_zoom_recording(meeting_id: str): function import_video (line 254) | async def import_video(request: VideoImportRequest, background_tasks: Ba... function complete_video_processing_pipeline (line 286) | async def complete_video_processing_pipeline(video_id: str, zoom_meeting... function get_video (line 323) | async def get_video(video_id: str): function trigger_summarize (line 348) | async def trigger_summarize(video_id: str, background_tasks: BackgroundT... function process_video_summary (line 382) | async def process_video_summary( function get_summary (line 555) | async def get_summary(video_id: str): function get_transcript (line 575) | async def get_transcript(video_id: str): function list_drafts (line 600) | async def list_drafts(video_id: str): function save_drafts (line 621) | async def save_drafts(video_id: str, request: DraftUpdateRequest): function add_feedback (line 663) | async def add_feedback(draft_id: str, request: FeedbackRequest): function refine_content (line 693) | async def refine_content( function refine_content_background_task (line 785) | async def refine_content_background_task( function create_github_pr (line 897) | async def create_github_pr( function test_supabase (line 997) | async def test_supabase(): function test_zoom (line 1019) | async def test_zoom(): function get_zoom_recordings (line 1047) | async def get_zoom_recordings( FILE: 2025-07-01-ai-content-pipeline-2/backend/migrations/add_processing_stage.sql type idx_videos_processing_stage (line 16) | CREATE INDEX IF NOT EXISTS idx_videos_processing_stage ON videos(process... FILE: 2025-07-01-ai-content-pipeline-2/backend/migrations/add_structured_content.sql type idx_drafts_email_draft (line 12) | CREATE INDEX IF NOT EXISTS idx_drafts_email_draft ON drafts USING GIN (e... type idx_drafts_x_draft (line 13) | CREATE INDEX IF NOT EXISTS idx_drafts_x_draft ON drafts USING GIN (x_draft) type idx_drafts_linkedin_draft (line 14) | CREATE INDEX IF NOT EXISTS idx_drafts_linkedin_draft ON drafts USING GIN... FILE: 2025-07-01-ai-content-pipeline-2/backend/migrations/add_summary_json.sql type idx_videos_summary (line 5) | CREATE INDEX IF NOT EXISTS idx_videos_summary ON videos USING GIN (summary) FILE: 2025-07-01-ai-content-pipeline-2/backend/models.py class VideoImportRequest (line 7) | class VideoImportRequest(BaseModel): class EmailDraftContent (line 14) | class EmailDraftContent(BaseModel): class XDraftContent (line 20) | class XDraftContent(BaseModel): class LinkedInDraftContent (line 25) | class LinkedInDraftContent(BaseModel): class DraftUpdateRequest (line 30) | class DraftUpdateRequest(BaseModel): class FeedbackRequest (line 36) | class FeedbackRequest(BaseModel): class ContentRefinementRequest (line 40) | class ContentRefinementRequest(BaseModel): class CreateGitHubPRRequest (line 46) | class CreateGitHubPRRequest(BaseModel): class Video (line 52) | class Video(BaseModel): class Draft (line 71) | class Draft(BaseModel): class Feedback (line 81) | class Feedback(BaseModel): class ZoomRecording (line 89) | class ZoomRecording(BaseModel): class VideoImportResponse (line 104) | class VideoImportResponse(BaseModel): class VideoResponse (line 109) | class VideoResponse(BaseModel): class SummaryResponse (line 114) | class SummaryResponse(BaseModel): class DraftsListResponse (line 118) | class DraftsListResponse(BaseModel): class DraftSaveResponse (line 122) | class DraftSaveResponse(BaseModel): class FeedbackResponse (line 127) | class FeedbackResponse(BaseModel): class StatusResponse (line 132) | class StatusResponse(BaseModel): class TranscriptResponse (line 136) | class TranscriptResponse(BaseModel): class ZoomRecordingsResponse (line 140) | class ZoomRecordingsResponse(BaseModel): class ZoomMeetingRecordings (line 146) | class ZoomMeetingRecordings(BaseModel): class ZoomMeetingsResponse (line 154) | class ZoomMeetingsResponse(BaseModel): class LumaEvent (line 160) | class LumaEvent(BaseModel): class LumaEventsResponse (line 170) | class LumaEventsResponse(BaseModel): FILE: 2025-07-01-ai-content-pipeline-2/backend/oauth_setup.py function check_environment (line 29) | def check_environment(): function get_authenticated_youtube_service (line 47) | def get_authenticated_youtube_service(): function test_youtube_connection (line 108) | def test_youtube_connection(youtube): function setup_zoom_oauth (line 133) | def setup_zoom_oauth(): function test_zoom_connection (line 176) | def test_zoom_connection(): function test_google_auth (line 214) | def test_google_auth(): function test_zoom_auth (line 230) | def test_zoom_auth(): function create_sample_upload_request (line 235) | def create_sample_upload_request(youtube): function main (line 259) | def main(): FILE: 2025-07-01-ai-content-pipeline-2/backend/oauth_setup_claude.py function check_environment (line 16) | def check_environment(): function check_credential_files (line 34) | def check_credential_files(): function setup_google_oauth (line 67) | def setup_google_oauth(): function setup_zoom_oauth (line 155) | def setup_zoom_oauth(): function test_google_auth (line 208) | def test_google_auth(): function test_zoom_auth (line 248) | def test_zoom_auth(): function cleanup_invalid_tokens (line 277) | def cleanup_invalid_tokens(): function main (line 314) | def main(): FILE: 2025-07-01-ai-content-pipeline-2/backend/run_migration.py function run_migration (line 15) | def run_migration(): FILE: 2025-07-01-ai-content-pipeline-2/backend/schema.sql type videos (line 8) | CREATE TABLE IF NOT EXISTS videos ( type drafts (line 22) | CREATE TABLE IF NOT EXISTS drafts ( type feedback (line 33) | CREATE TABLE IF NOT EXISTS feedback ( type idx_videos_zoom_meeting_id (line 41) | CREATE INDEX IF NOT EXISTS idx_videos_zoom_meeting_id ON videos(zoom_mee... type idx_videos_status (line 42) | CREATE INDEX IF NOT EXISTS idx_videos_status ON videos(status) type idx_videos_processing_stage (line 43) | CREATE INDEX IF NOT EXISTS idx_videos_processing_stage ON videos(process... type idx_drafts_video_id (line 44) | CREATE INDEX IF NOT EXISTS idx_drafts_video_id ON drafts(video_id) type idx_drafts_created_at (line 45) | CREATE INDEX IF NOT EXISTS idx_drafts_created_at ON drafts(created_at DESC) type idx_feedback_draft_id (line 46) | CREATE INDEX IF NOT EXISTS idx_feedback_draft_id ON feedback(draft_id) FILE: 2025-07-01-ai-content-pipeline-2/backend/setup_supabase.py function main (line 13) | def main(): FILE: 2025-07-01-ai-content-pipeline-2/backend/test_zoom_recordings.py function get_zoom_access_token (line 8) | def get_zoom_access_token(): function get_recordings (line 20) | def get_recordings(meeting_id, access_token): function main (line 31) | def main(): FILE: 2025-07-01-ai-content-pipeline-2/backend/video_processor.py class VideoProcessor (line 15) | class VideoProcessor: method __init__ (line 16) | def __init__(self): method _setup_cache_directory (line 20) | def _setup_cache_directory(self) -> str: method _get_cache_filename (line 28) | def _get_cache_filename(self, zoom_meeting_id: str, recording_id: str)... method _load_youtube_credentials (line 35) | def _load_youtube_credentials(self) -> Optional[Credentials]: method process_video (line 77) | async def process_video(self, video_id: str, zoom_meeting_id: str): method _download_zoom_recording (line 126) | async def _download_zoom_recording(self, zoom_meeting_id: str) -> str: method _get_transcript (line 244) | async def _get_transcript(self, zoom_meeting_id: str) -> Optional[str]: method _upload_to_youtube (line 260) | async def _upload_to_youtube( FILE: 2025-07-01-ai-content-pipeline-2/backend/zoom_client.py class ZoomClient (line 13) | class ZoomClient: method __init__ (line 14) | def __init__(self): method _get_access_token (line 18) | def _get_access_token(self) -> str: method _get_new_token (line 33) | def _get_new_token(self) -> str: method _make_request (line 60) | def _make_request( method get_recordings (line 95) | def get_recordings( method get_recording_details (line 149) | def get_recording_details( method get_transcript (line 173) | def get_transcript(self, meeting_id: str) -> Optional[str]: method _get_chat_transcript (line 226) | def _get_chat_transcript(self, meeting_id: str, recording_id: str) -> ... FILE: 2025-07-01-ai-content-pipeline-2/frontend/src/app/layout.tsx function RootLayout (line 18) | function RootLayout({ FILE: 2025-07-01-ai-content-pipeline-2/frontend/src/app/page.tsx type FilterType (line 7) | type FilterType = "all" | "processing" | "ready" | "failed"; function HomePage (line 9) | function HomePage() { FILE: 2025-07-01-ai-content-pipeline-2/frontend/src/app/videos/[id]/page.tsx function VideoDetailPage (line 37) | function VideoDetailPage() { FILE: 2025-07-01-ai-content-pipeline-2/frontend/src/components/TranscriptViewer.tsx type TranscriptViewerProps (line 8) | interface TranscriptViewerProps { function TranscriptViewer (line 12) | function TranscriptViewer({ videoId }: TranscriptViewerProps) { FILE: 2025-07-01-ai-content-pipeline-2/frontend/src/components/VideoImportForm.tsx function VideoImportForm (line 9) | function VideoImportForm() { FILE: 2025-07-01-ai-content-pipeline-2/frontend/src/components/VideoList.tsx function VideoList (line 8) | function VideoList() { FILE: 2025-07-01-ai-content-pipeline-2/frontend/src/components/ZoomRecordingsList.tsx function getLast3MonthsRange (line 8) | function getLast3MonthsRange() { function ZoomRecordingsList (line 18) | function ZoomRecordingsList() { FILE: 2025-07-01-ai-content-pipeline-2/frontend/src/components/github/CreateGitHubPRButton.tsx type CreateGitHubPRButtonProps (line 26) | interface CreateGitHubPRButtonProps { function CreateGitHubPRButton (line 38) | function CreateGitHubPRButton({ FILE: 2025-07-01-ai-content-pipeline-2/frontend/src/components/home/video-list.tsx type FilterType (line 24) | type FilterType = "all" | "processing" | "ready" | "failed"; type VideoListProps (line 26) | interface VideoListProps { function VideoList (line 30) | function VideoList({ filter = "all" }: VideoListProps) { FILE: 2025-07-01-ai-content-pipeline-2/frontend/src/components/home/zoom-recordings-list.tsx type ZoomRecording (line 24) | interface ZoomRecording { type ZoomMeetingRecording (line 38) | interface ZoomMeetingRecording { function getLastNMonthsRange (line 53) | function getLastNMonthsRange(months: number) { function ZoomRecordingsList (line 63) | function ZoomRecordingsList() { FILE: 2025-07-01-ai-content-pipeline-2/frontend/src/components/shared/empty-state.tsx type EmptyStateProps (line 5) | interface EmptyStateProps { function EmptyState (line 13) | function EmptyState({ FILE: 2025-07-01-ai-content-pipeline-2/frontend/src/components/shared/error-message.tsx type ErrorMessageProps (line 8) | interface ErrorMessageProps { function ErrorMessage (line 15) | function ErrorMessage({ FILE: 2025-07-01-ai-content-pipeline-2/frontend/src/components/shared/loading-indicator.tsx type LoadingIndicatorProps (line 4) | interface LoadingIndicatorProps { function LoadingIndicator (line 11) | function LoadingIndicator({ FILE: 2025-07-01-ai-content-pipeline-2/frontend/src/components/shared/youtube-embed.tsx type YouTubeEmbedProps (line 5) | interface YouTubeEmbedProps { function extractVideoId (line 12) | function extractVideoId(url: string): string | null { function YouTubeEmbed (line 28) | function YouTubeEmbed({ FILE: 2025-07-01-ai-content-pipeline-2/frontend/src/components/theme-provider.tsx function ThemeProvider (line 6) | function ThemeProvider({ FILE: 2025-07-01-ai-content-pipeline-2/frontend/src/components/ui/alert.tsx function Alert (line 22) | function Alert({ function AlertTitle (line 37) | function AlertTitle({ className, ...props }: React.ComponentProps<"div">) { function AlertDescription (line 50) | function AlertDescription({ FILE: 2025-07-01-ai-content-pipeline-2/frontend/src/components/ui/badge.tsx function Badge (line 28) | function Badge({ FILE: 2025-07-01-ai-content-pipeline-2/frontend/src/components/ui/button.tsx function Button (line 38) | function Button({ FILE: 2025-07-01-ai-content-pipeline-2/frontend/src/components/ui/card.tsx function Card (line 5) | function Card({ className, ...props }: React.ComponentProps<"div">) { function CardHeader (line 18) | function CardHeader({ className, ...props }: React.ComponentProps<"div">) { function CardTitle (line 28) | function CardTitle({ className, ...props }: React.ComponentProps<"div">) { function CardDescription (line 41) | function CardDescription({ className, ...props }: React.ComponentProps<"... function CardAction (line 51) | function CardAction({ className, ...props }: React.ComponentProps<"div">) { function CardContent (line 61) | function CardContent({ className, ...props }: React.ComponentProps<"div"... function CardFooter (line 71) | function CardFooter({ className, ...props }: React.ComponentProps<"div">) { FILE: 2025-07-01-ai-content-pipeline-2/frontend/src/components/ui/dialog.tsx function Dialog (line 9) | function Dialog({ function DialogTrigger (line 15) | function DialogTrigger({ function DialogPortal (line 21) | function DialogPortal({ function DialogClose (line 27) | function DialogClose({ function DialogOverlay (line 33) | function DialogOverlay({ function DialogContent (line 49) | function DialogContent({ function DialogHeader (line 83) | function DialogHeader({ className, ...props }: React.ComponentProps<"div... function DialogFooter (line 93) | function DialogFooter({ className, ...props }: React.ComponentProps<"div... function DialogTitle (line 106) | function DialogTitle({ function DialogDescription (line 119) | function DialogDescription({ FILE: 2025-07-01-ai-content-pipeline-2/frontend/src/components/ui/input.tsx type InputProps (line 5) | type InputProps = React.InputHTMLAttributes; FILE: 2025-07-01-ai-content-pipeline-2/frontend/src/components/ui/scroll-area.tsx function ScrollArea (line 8) | function ScrollArea({ function ScrollBar (line 31) | function ScrollBar({ FILE: 2025-07-01-ai-content-pipeline-2/frontend/src/components/ui/separator.tsx function Separator (line 8) | function Separator({ FILE: 2025-07-01-ai-content-pipeline-2/frontend/src/components/ui/tabs.tsx function Tabs (line 8) | function Tabs({ function TabsList (line 21) | function TabsList({ function TabsTrigger (line 37) | function TabsTrigger({ function TabsContent (line 53) | function TabsContent({ FILE: 2025-07-01-ai-content-pipeline-2/frontend/src/components/ui/textarea.tsx function Textarea (line 5) | function Textarea({ className, ...props }: React.ComponentProps<"textare... FILE: 2025-07-01-ai-content-pipeline-2/frontend/src/components/video/draft-editor.tsx type DraftEditorProps (line 46) | interface DraftEditorProps { type CurrentDraftState (line 52) | interface CurrentDraftState { function DraftEditor (line 58) | function DraftEditor({ videoId }: DraftEditorProps) { FILE: 2025-07-01-ai-content-pipeline-2/frontend/src/components/video/email-preview.tsx type EmailPreviewProps (line 10) | interface EmailPreviewProps { function EmailPreview (line 18) | function EmailPreview({ FILE: 2025-07-01-ai-content-pipeline-2/frontend/src/components/video/linkedin-preview.tsx type LinkedInDraft (line 17) | type LinkedInDraft = LinkedInPost; type LinkedInPreviewProps (line 19) | interface LinkedInPreviewProps { function LinkedInPreview (line 26) | function LinkedInPreview({ FILE: 2025-07-01-ai-content-pipeline-2/frontend/src/components/video/transcript-viewer.tsx type TranscriptViewerProps (line 13) | interface TranscriptViewerProps { function TranscriptViewer (line 18) | function TranscriptViewer({ FILE: 2025-07-01-ai-content-pipeline-2/frontend/src/components/video/x-preview.tsx type XDraft (line 17) | type XDraft = TwitterThread; type XPreviewProps (line 19) | interface XPreviewProps { function XPreview (line 26) | function XPreview({ FILE: 2025-07-01-ai-content-pipeline-2/frontend/src/components/zoom/zoom-recordings-list.tsx type ZoomRecordingFile (line 28) | interface ZoomRecordingFile { type ZoomMeetingRecording (line 35) | interface ZoomMeetingRecording { function getLastNMonthsRange (line 46) | function getLastNMonthsRange(months: number) { function ZoomRecordingsList (line 56) | function ZoomRecordingsList() { FILE: 2025-07-01-ai-content-pipeline-2/frontend/src/lib/api.ts constant API_BASE_URL (line 1) | const API_BASE_URL = process.env.NEXT_PUBLIC_API_URL || "http://localhos... type VideoImportRequest (line 3) | interface VideoImportRequest { type DraftUpdateRequest (line 7) | interface DraftUpdateRequest { type FeedbackRequest (line 13) | interface FeedbackRequest { type ZoomRecording (line 17) | interface ZoomRecording { type ZoomMeetingRecordings (line 31) | interface ZoomMeetingRecordings { type ZoomMeetingsResponse (line 39) | interface ZoomMeetingsResponse { method importVideo (line 46) | async importVideo(request: VideoImportRequest) { method getZoomRecordings (line 56) | async getZoomRecordings(params?: { method summarizeVideo (line 72) | async summarizeVideo(videoId: string): Promise { method saveDraft (line 88) | async saveDraft(videoId: string, draft: DraftUpdateRequest) { method addFeedback (line 98) | async addFeedback(draftId: string, feedback: FeedbackRequest) { method getTranscript (line 107) | async getTranscript(videoId: string): Promise { FILE: 2025-07-01-ai-content-pipeline-2/frontend/src/lib/apiClient.ts constant API_BASE_URL (line 7) | const API_BASE_URL = process.env.NEXT_PUBLIC_API_URL || "http://localhos... type XDraft (line 10) | type XDraft = TwitterThread; type LinkedInDraft (line 11) | type LinkedInDraft = LinkedInPost; type DraftContent (line 13) | interface DraftContent { function handleResponse (line 19) | async function handleResponse(response: Response): Promise { FILE: 2025-07-01-ai-content-pipeline-2/frontend/src/lib/supabase.ts type Video (line 32) | interface Video { type XDraft (line 46) | type XDraft = TwitterThread; type LinkedInDraft (line 47) | type LinkedInDraft = LinkedInPost; type Draft (line 49) | interface Draft { FILE: 2025-07-01-ai-content-pipeline-2/frontend/src/lib/utils.ts function cn (line 4) | function cn(...inputs: ClassValue[]) { FILE: 2025-07-08-context-engineering/main.py function main (line 5) | def main(resume: str): FILE: 2025-07-15-decaying-resolution-memory/examine_threads.py function connect_to_redis (line 17) | def connect_to_redis(): function examine_thread_keys (line 28) | def examine_thread_keys(r: redis.Redis): function export_threads_to_files (line 120) | def export_threads_to_files(r: redis.Redis, output_dir: str = "raw"): function main (line 188) | def main(): FILE: 2025-07-15-decaying-resolution-memory/explore_redis.py function connect_to_redis (line 16) | def connect_to_redis(): function explore_keys (line 28) | def explore_keys(r: redis.Redis, pattern: str = "*", limit: int = 100): function examine_key (line 62) | def examine_key(r: redis.Redis, key: str): function find_trace_keys (line 127) | def find_trace_keys(r: redis.Redis, pattern: str = "*trace*"): function main (line 160) | def main(): FILE: 2025-07-15-decaying-resolution-memory/main.py function main (line 1) | def main(): FILE: 2025-07-15-decaying-resolution-memory/redact_pii.py function redact_pii_in_text (line 11) | async def redact_pii_in_text(text: str) -> str: function chunk_text (line 21) | def chunk_text(text: str, chunk_size: int = CHUNK_SIZE): function process_file (line 26) | async def process_file(input_path: Path, output_path: Path, file_pbar: t... function main (line 60) | def main(): FILE: 2025-07-22-multimodality/data/psuedocode.py function analyze_pages_with_transactions (line 3) | def analyze_pages_with_transactions(pages: BamlImage[]): FILE: 2025-07-22-multimodality/main.py function ensure_dir (line 12) | def ensure_dir(path: str) -> None: function pil_to_cv (line 16) | def pil_to_cv(image: PILImage) -> np.ndarray: function classify_and_draw_layout_regions (line 20) | def classify_and_draw_layout_regions( function find_horizontal_bands (line 70) | def find_horizontal_bands(mask: PILImage, min_height: int = 15, min_rati... function draw_horizontal_bands (line 91) | def draw_horizontal_bands(img: PILImage, bands: List[Tuple[int, int]]) -... function compare_pages (line 103) | def compare_pages( function main (line 138) | def main() -> None: function take_page (line 157) | def take_page(img: BamlImage): FILE: 2025-07-29-eval-many-models-same-prompt/main.py function run_unit_test (line 13) | async def run_unit_test(test_name: str, model: str): function main (line 28) | async def main(): FILE: 2025-07-29-eval-many-models-same-prompt/streamlit_app.py function detect_llm_patterns (line 9) | def detect_llm_patterns(text): function highlight_text_with_patterns (line 110) | def highlight_text_with_patterns(text, patterns, highlight_enabled=True): function display_text_with_llm_detection (line 136) | def display_text_with_llm_detection(text, highlight_enabled=True, label=... function load_results (line 160) | def load_results(): function main (line 194) | def main(): FILE: 2025-07-29-eval-many-models-same-prompt/test_loader.py function load_test (line 5) | def load_test(name: str) -> Tuple[VideoSummary, EmailStructure]: FILE: 2025-08-19-interruptible-agents/agents/planner_agent.py function plan_searches (line 5) | async def plan_searches(query: str) -> WebSearchPlan: FILE: 2025-08-19-interruptible-agents/agents/search_agent.py function summarize_search_term (line 4) | async def summarize_search_term(term: str, reason: str) -> str: FILE: 2025-08-19-interruptible-agents/agents/writer_agent.py function write_research_report (line 5) | async def write_research_report(query: str, summaries: list[str]) -> Rep... FILE: 2025-08-19-interruptible-agents/hello.py function main (line 11) | async def main() -> None: FILE: 2025-08-19-interruptible-agents/manager.py class ResearchManager (line 10) | class ResearchManager: method __init__ (line 11) | def __init__(self): method run (line 14) | async def run(self, query: str) -> None: method _plan_searches (line 36) | async def _plan_searches(self, query: str) -> WebSearchPlan: method _perform_searches (line 39) | async def _perform_searches(self, search_plan: WebSearchPlan) -> list[... method _search (line 55) | async def _search(self, item: WebSearchItem) -> tuple[WebSearchItem, s... method _write_report (line 62) | async def _write_report(self, query: str, search_results: list[str]) -... method _print_section (line 66) | def _print_section(self, title: str) -> None: method _print_info (line 70) | def _print_info(self, message: str) -> None: method _print_success (line 73) | def _print_success(self, message: str) -> None: method _print_error (line 77) | def _print_error(self, message: str) -> None: method _print_progress (line 81) | def _print_progress(self, completed: int, total: int) -> None: method _print_planned_searches (line 84) | def _print_planned_searches(self, plan: WebSearchPlan) -> None: FILE: 2025-08-19-interruptible-agents/runtime.py class ProgressEvent (line 15) | class ProgressEvent: class Message (line 22) | class Message: class ConversationRuntime (line 27) | class ConversationRuntime: method __init__ (line 28) | def __init__(self, convo_id: str, max_events: int = 500) -> None: method emit (line 39) | def emit(self, event_type: str, message: str) -> None: method queue_message (line 44) | def queue_message(self, msg: Message) -> None: class RuntimeAwareResearchManager (line 52) | class RuntimeAwareResearchManager(ResearchManager): method __init__ (line 53) | def __init__(self, runtime: ConversationRuntime) -> None: method _print_section (line 58) | def _print_section(self, title: str) -> None: # type: ignore[override] method _print_info (line 61) | def _print_info(self, message: str) -> None: # type: ignore[override] method _print_success (line 64) | def _print_success(self, message: str) -> None: # type: ignore[override] method _print_error (line 67) | def _print_error(self, message: str) -> None: # type: ignore[override] method _print_progress (line 70) | def _print_progress(self, completed: int, total: int) -> None: # type... class AgentThread (line 74) | class AgentThread(threading.Thread): method __init__ (line 75) | def __init__(self, runtime: ConversationRuntime, initial_query: str) -... method stop (line 82) | def stop(self) -> None: method run (line 85) | def run(self) -> None: # noqa: C901 - keep simple even if a bit long method _boundary_check (line 140) | def _boundary_check(self) -> bool: method _finish (line 185) | def _finish(self, status: str) -> None: class InMemoryAgentSystem (line 191) | class InMemoryAgentSystem: method __init__ (line 192) | def __init__(self) -> None: method start (line 197) | def start(self, convo_id: str, query: str) -> ConversationRuntime: method queue (line 208) | def queue(self, convo_id: str, msg: Message) -> None: method cancel (line 212) | def cancel(self, convo_id: str) -> None: method get_runtime (line 216) | def get_runtime(self, convo_id: str) -> ConversationRuntime: method is_done (line 219) | def is_done(self, convo_id: str) -> bool: method _require_runtime (line 223) | def _require_runtime(self, convo_id: str) -> ConversationRuntime: FILE: 2025-08-26-claude-for-non-code-workflows/tools/pull-metrics.ts type Metric (line 6) | interface Metric { function fetchMetrics (line 12) | async function fetchMetrics(): Promise { function randomFloat (line 50) | function randomFloat(min: number, max: number): number { function formatChange (line 54) | function formatChange(change: number): string { function displayMetric (line 59) | async function displayMetric(metric: Metric, index: number): Promise str: function record_audio_with_silence_detection (line 66) | def record_audio_with_silence_detection(max_duration: int = 10, silence_... function record_audio (line 115) | async def record_audio(duration: int = 5) -> bytes: function transcribe_audio (line 120) | async def transcribe_audio(audio_bytes: bytes) -> str: function get_user_input (line 158) | async def get_user_input() -> str: function speak_text_async (line 173) | async def speak_text_async(text: str) -> None: function stop_tts (line 248) | def stop_tts(): function run_compliance_check (line 262) | async def run_compliance_check(convo_snapshot: List[Dict[str, str]]) -> ... function stream_assistant_response (line 274) | async def stream_assistant_response(convo_text: str): function handle_supervisor_result (line 283) | async def handle_supervisor_result(supervisor_task: asyncio.Task, convo_... function handle_turn (line 303) | async def handle_turn(user_text: str) -> None: function main_conversation (line 394) | async def main_conversation(): function main (line 439) | async def main(): FILE: 2025-09-09-generative-uis/my-app/src/app/layout.tsx function RootLayout (line 20) | function RootLayout({ FILE: 2025-09-09-generative-uis/my-app/src/app/page.tsx function Home (line 8) | function Home() { FILE: 2025-09-16-coding-agent-tools-bash-vs-mcp/linear-cli/linear-cli.ts function getGitBranch (line 29) | function getGitBranch(): string { function extractIssueId (line 37) | function extractIssueId(branchName: string): string | null { function getIssueIdInteractively (line 43) | async function getIssueIdInteractively(defaultId: string | null = null):... function resolveIssueId (line 57) | async function resolveIssueId(providedId?: string): Promise { function listIssues (line 77) | async function listIssues() { function getIssue (line 127) | async function getIssue(issueId?: string, options?: { comments?: boolean... function addComment (line 192) | async function addComment(message: string, options: { issueId?: string }) { FILE: 2025-09-16-coding-agent-tools-bash-vs-mcp/src/index.ts constant PORT (line 10) | const PORT = process.env.PORT || 3050; constant ANTHROPIC_API_URL (line 11) | const ANTHROPIC_API_URL = 'https://api.anthropic.com'; function getLogFileName (line 16) | function getLogFileName(): string { function logRequestResponse (line 28) | async function logRequestResponse( FILE: 2025-09-16-coding-agent-tools-bash-vs-mcp/src/inspect-logs.ts type LogEntry (line 8) | interface LogEntry { function processLine (line 23) | async function processLine(line: string, lineNumber: number, seenMessage... function streamFromStdin (line 94) | async function streamFromStdin() { function processLines (line 121) | async function processLines(lines: string[]) { function inspectFile (line 142) | async function inspectFile(filePath: string) { function main (line 149) | async function main() { FILE: 2025-09-23-evals-for-classification/scripts/build_vector_store.py class VectorStoreBuilder (line 29) | class VectorStoreBuilder: method __init__ (line 32) | def __init__(self, force_rebuild: bool = False): method build_vector_store (line 45) | def build_vector_store(self) -> None: method _generate_embeddings (line 117) | def _generate_embeddings(self, texts: list[str]) -> list[list[float]]: function main (line 127) | def main(): FILE: 2025-09-23-evals-for-classification/src/classification/embeddings.py class EmbeddingService (line 12) | class EmbeddingService: method __init__ (line 15) | def __init__(self, use_vector_store: bool = True) -> None: method embed_text (line 33) | def embed_text(self, text: str) -> list[float]: method embed_category (line 52) | def embed_category(self, category: Category) -> list[float]: method compute_similarity (line 82) | def compute_similarity(self, embedding1: list[float], embedding2: list... FILE: 2025-09-23-evals-for-classification/src/classification/expander.py function expand_user_query (line 6) | def expand_user_query(text: str) -> str: FILE: 2025-09-23-evals-for-classification/src/classification/narrowing.py class NarrowingStrategyBase (line 17) | class NarrowingStrategyBase(ABC): method __init__ (line 20) | def __init__( method narrow (line 47) | def narrow(self, text: str, categories: list[Category]) -> list[Catego... method _narrow_with_embedding_similarity (line 59) | def _narrow_with_embedding_similarity( method _narrow_with_vector_store (line 78) | def _narrow_with_vector_store(self, text: str, max_results: int) -> li... method _narrow_in_memory (line 98) | def _narrow_in_memory(self, text: str, categories: list[Category], max... method _narrow_with_llm (line 124) | def _narrow_with_llm(self, text: str, categories: list[Category], max_... class LLMBasedNarrowing (line 164) | class LLMBasedNarrowing(NarrowingStrategyBase): method __init__ (line 167) | def __init__(self) -> None: method narrow (line 171) | def narrow(self, text: str, categories: list[Category]) -> list[Catego... class HybridNarrowing (line 189) | class HybridNarrowing(NarrowingStrategyBase): method __init__ (line 192) | def __init__(self, embedding_service: EmbeddingService, use_vector_sto... method _validate_hybrid_settings (line 202) | def _validate_hybrid_settings(self) -> bool: method narrow (line 217) | def narrow(self, text: str, categories: list[Category]) -> list[Catego... method narrow_with_stages (line 235) | def narrow_with_stages(self, text: str, categories: list[Category]) ->... method _narrow_with_embedding_only (line 269) | def _narrow_with_embedding_only(self, text: str, categories: list[Cate... method _narrow_with_embedding (line 281) | def _narrow_with_embedding(self, text: str, categories: list[Category]... method _narrow_with_llm_stage (line 293) | def _narrow_with_llm_stage(self, text: str, categories: list[Category]... class CategoryNarrower (line 310) | class CategoryNarrower: method __init__ (line 313) | def __init__(self, embedding_service: EmbeddingService, use_vector_sto... method narrow_categories (line 325) | def narrow_categories(self, text: str, categories: list[Category]) -> ... method narrow_categories_with_stages (line 339) | def narrow_categories_with_stages(self, text: str, categories: list[Ca... FILE: 2025-09-23-evals-for-classification/src/classification/pipeline.py class ClassificationPipeline (line 17) | class ClassificationPipeline: method __init__ (line 20) | def __init__(self, use_vector_store: bool = True) -> None: method _get_categories (line 49) | def _get_categories(self) -> list[Category]: method classify (line 59) | def classify(self, text: str, max_candidates: int | None = None) -> Cl... FILE: 2025-09-23-evals-for-classification/src/classification/selection.py class CategorySelector (line 8) | class CategorySelector: method select_best_category (line 11) | def select_best_category(self, text: str, candidates: list[Category]) ... method _build_dynamic_enum (line 33) | def _build_dynamic_enum(self, categories: list[Category]) -> TypeBuilder: FILE: 2025-09-23-evals-for-classification/src/classification/vector_store.py class CategoryVectorStore (line 20) | class CategoryVectorStore: method __init__ (line 23) | def __init__(self, auto_create: bool = False) -> None: method is_available (line 37) | def is_available() -> bool: method _load_vector_store (line 45) | def _load_vector_store(self, auto_create: bool = False) -> None: method _validate_embedding_model (line 76) | def _validate_embedding_model(self) -> None: method _create_collection (line 90) | def _create_collection(self) -> None: method _build_category_cache (line 104) | def _build_category_cache(self) -> None: method find_similar_categories (line 113) | def find_similar_categories( method get_cached_embedding (line 144) | def get_cached_embedding(self, category_path: str) -> list[float] | None: method add_category (line 161) | def add_category(self, category: Category, embedding: list[float]) -> ... method has_category (line 191) | def has_category(self, category_path: str) -> bool: method get_collection_info (line 202) | def get_collection_info(self) -> dict[str, Any]: FILE: 2025-09-23-evals-for-classification/src/config/settings.py class Settings (line 13) | class Settings(BaseSettings): class Config (line 31) | class Config: FILE: 2025-09-23-evals-for-classification/src/data/category_loader.py class CategoryLoader (line 10) | class CategoryLoader: method __init__ (line 13) | def __init__(self) -> None: method load_categories (line 19) | def load_categories(self) -> list[Category]: method _parse_category_file (line 32) | def _parse_category_file(self, file_path: Path) -> list[Category]: method _parse_category_line (line 54) | def _parse_category_line(self, line: str) -> Category: FILE: 2025-09-23-evals-for-classification/src/data/models.py class Category (line 8) | class Category(BaseModel): method level (line 20) | def level(self) -> int: method parent_path (line 25) | def parent_path(self) -> str: class ClassificationRequest (line 30) | class ClassificationRequest(BaseModel): class ClassificationResult (line 37) | class ClassificationResult(BaseModel): FILE: 2025-09-23-evals-for-classification/src/shared/correctness.py class CorrectnessDefinition (line 13) | class CorrectnessDefinition(str, Enum): class CategoryHierarchyHelper (line 21) | class CategoryHierarchyHelper: method __init__ (line 24) | def __init__(self, all_categories: List[Category]): method _build_hierarchy_maps (line 33) | def _build_hierarchy_maps(self): method get_parent_path (line 50) | def get_parent_path(self, path: str) -> str | None: method get_child_paths (line 61) | def get_child_paths(self, path: str) -> List[str]: method get_sibling_paths (line 72) | def get_sibling_paths(self, path: str) -> List[str]: method is_parent_of (line 88) | def is_parent_of(self, potential_parent: str, child: str) -> bool: method is_child_of (line 100) | def is_child_of(self, potential_child: str, parent: str) -> bool: method is_sibling_of (line 112) | def is_sibling_of(self, path1: str, path2: str) -> bool: class CorrectnessEvaluator (line 127) | class CorrectnessEvaluator: method __init__ (line 130) | def __init__(self, all_categories: List[Category]): method is_correct (line 138) | def is_correct(self, predicted_path: str, ground_truth_path: str, defi... method get_correctness_explanation (line 167) | def get_correctness_explanation( FILE: 2025-09-23-evals-for-classification/src/shared/enums.py class NarrowingStrategy (line 6) | class NarrowingStrategy(str, Enum): FILE: 2025-09-23-evals-for-classification/src/shared/logger.py class ClassificationLogger (line 8) | class ClassificationLogger: method __init__ (line 11) | def __init__(self, name: str = "classification", level: str = "INFO"): method _setup_handler (line 25) | def _setup_handler(self): method info (line 35) | def info(self, message: str, **kwargs): method warning (line 39) | def warning(self, message: str, **kwargs): method error (line 43) | def error(self, message: str, **kwargs): method debug (line 47) | def debug(self, message: str, **kwargs): method success (line 51) | def success(self, message: str, **kwargs): method processing (line 56) | def processing(self, message: str, **kwargs): class ColoredFormatter (line 61) | class ColoredFormatter(logging.Formatter): method format (line 84) | def format(self, record): function get_logger (line 96) | def get_logger(name: str, level: str = "INFO") -> ClassificationLogger: function setup_logging (line 117) | def setup_logging(level: str = "INFO", log_file: Path | None = None): FILE: 2025-09-23-evals-for-classification/tests/data/test_cases.py class TestCase (line 11) | class TestCase(TypedDict): FILE: 2025-09-23-evals-for-classification/tests/integration/test_narrowing_accuracy.py class NarrowingResult (line 33) | class NarrowingResult: class StrategyResults (line 49) | class StrategyResults: class NarrowingAccuracyTester (line 61) | class NarrowingAccuracyTester: method __init__ (line 64) | def __init__(self): method test_strategy (line 77) | def test_strategy(self, strategy_name: str, narrower) -> StrategyResults: method analyze_failures (line 171) | def analyze_failures(self, strategy_results: StrategyResults) -> None: method compare_strategies (line 206) | def compare_strategies(self, results_list: list[StrategyResults]) -> N... method run_all_tests (line 234) | def run_all_tests(self) -> dict[str, StrategyResults]: method save_results_to_json (line 262) | def save_results_to_json(self, results: dict[str, StrategyResults]) ->... function main (line 334) | def main(): FILE: 2025-09-23-evals-for-classification/tests/integration/test_pipeline_accuracy.py class PipelineResult (line 39) | class PipelineResult: class PipelineResults (line 54) | class PipelineResults: class PipelineAccuracyTester (line 67) | class PipelineAccuracyTester: method __init__ (line 70) | def __init__(self, use_vector_store: bool = True): method test_pipeline (line 83) | def test_pipeline(self) -> PipelineResults: method analyze_failures (line 170) | def analyze_failures(self, pipeline_results: PipelineResults) -> None: method print_summary (line 236) | def print_summary(self, pipeline_results: PipelineResults) -> None: method run_test (line 276) | def run_test(self) -> PipelineResults: method save_results_to_json (line 287) | def save_results_to_json(self, results: PipelineResults) -> Path: function main (line 369) | def main(): FILE: 2025-09-23-evals-for-classification/tests/integration/test_selection_accuracy.py class SelectionResult (line 28) | class SelectionResult: class SelectionResults (line 40) | class SelectionResults: class SelectionAccuracyTester (line 51) | class SelectionAccuracyTester: method __init__ (line 54) | def __init__(self): method test_selection (line 71) | def test_selection(self) -> SelectionResults: method analyze_failures (line 150) | def analyze_failures(self, selection_results: SelectionResults) -> None: method print_summary (line 180) | def print_summary(self, selection_results: SelectionResults) -> None: method run_test (line 206) | def run_test(self) -> SelectionResults: method save_results_to_json (line 217) | def save_results_to_json(self, results: SelectionResults) -> Path: function main (line 279) | def main(): FILE: 2025-09-23-evals-for-classification/tests/run_tests.py function run_narrowing_accuracy_test (line 33) | def run_narrowing_accuracy_test(): function run_selection_accuracy_test (line 41) | def run_selection_accuracy_test(): function run_pipeline_accuracy_test (line 49) | def run_pipeline_accuracy_test(): function run_unit_tests (line 57) | def run_unit_tests(): function run_all_tests (line 129) | def run_all_tests(): function main (line 160) | def main(): FILE: 2025-09-23-evals-for-classification/tests/unit/classification/embeddings_test.py function mock_category (line 13) | def mock_category(): function mock_openai_response (line 25) | def mock_openai_response(): function mock_settings (line 34) | def mock_settings(): function embedding_service_no_vector_store (line 43) | def embedding_service_no_vector_store(): function embedding_service_with_vector_store (line 55) | def embedding_service_with_vector_store(): function test_init_with_vector_store_success (line 72) | def test_init_with_vector_store_success( function test_init_with_vector_store_failure (line 111) | def test_init_with_vector_store_failure( function test_init_without_vector_store (line 148) | def test_init_without_vector_store(mock_openai: mock.MagicMock, mock_set... function test_embed_text_cache_hit (line 171) | def test_embed_text_cache_hit(embedding_service_no_vector_store: Embeddi... function test_embed_text_cache_miss (line 194) | def test_embed_text_cache_miss( function test_embed_category_vector_store_cache_hit (line 224) | def test_embed_category_vector_store_cache_hit( function test_embed_category_memory_cache_hit (line 248) | def test_embed_category_memory_cache_hit( function test_embed_category_generate_new_embedding (line 283) | def test_embed_category_generate_new_embedding( function test_embed_category_vector_store_add_failure (line 315) | def test_embed_category_vector_store_add_failure( function test_embed_category_no_vector_store (line 345) | def test_embed_category_no_vector_store(embedding_service_no_vector_stor... function test_embed_category_no_vector_store_generate_new (line 365) | def test_embed_category_no_vector_store_generate_new( function test_embed_category_vector_store_has_category_already (line 389) | def test_embed_category_vector_store_has_category_already( function test_compute_similarity (line 420) | def test_compute_similarity( function test_compute_similarity_identical_embeddings (line 449) | def test_compute_similarity_identical_embeddings( function test_compute_similarity_orthogonal_embeddings (line 470) | def test_compute_similarity_orthogonal_embeddings( function test_compute_similarity_opposite_embeddings (line 492) | def test_compute_similarity_opposite_embeddings( function test_compute_similarity_real_embeddings (line 514) | def test_compute_similarity_real_embeddings( function test_compute_similarity_zero_norm_handling (line 539) | def test_compute_similarity_zero_norm_handling( function test_cache_persistence_across_calls (line 572) | def test_cache_persistence_across_calls( FILE: 2025-09-23-evals-for-classification/tests/unit/classification/narrowing_test.py function mock_categories (line 28) | def mock_categories(): function mock_large_categories (line 70) | def mock_large_categories(): function mock_embedding_service (line 87) | def mock_embedding_service(): class TestLLMBasedNarrowing (line 96) | class TestLLMBasedNarrowing: method test_narrow_empty_categories (line 99) | def test_narrow_empty_categories(self): method test_narrow_success_with_category_names (line 117) | def test_narrow_success_with_category_names(self, mock_categories: lis... method test_narrow_fallback_on_llm_failure (line 144) | def test_narrow_fallback_on_llm_failure(self, mock_categories: list[Ca... class TestHybridNarrowing (line 169) | class TestHybridNarrowing: method test_init (line 172) | def test_init(self, mock_embedding_service: EmbeddingService): method test_narrow_empty_categories (line 189) | def test_narrow_empty_categories(self, mock_embedding_service: Embeddi... method test_narrow_with_embedding_then_llm (line 207) | def test_narrow_with_embedding_then_llm( method test_narrow_with_embedding_in_memory (line 237) | def test_narrow_with_embedding_in_memory( method test_narrow_with_llm_already_few_categories (line 263) | def test_narrow_with_llm_already_few_categories( method test_narrow_uses_hybrid_flow_when_valid (line 289) | def test_narrow_uses_hybrid_flow_when_valid( method test_narrow_falls_back_when_invalid_settings (line 319) | def test_narrow_falls_back_when_invalid_settings( method test_narrow_with_embedding_only_uses_vector_store (line 345) | def test_narrow_with_embedding_only_uses_vector_store( method test_narrow_with_embedding_only_falls_back_to_in_memory (line 376) | def test_narrow_with_embedding_only_falls_back_to_in_memory( class TestCategoryNarrower (line 416) | class TestCategoryNarrower: method test_init (line 419) | def test_init(self, mock_embedding_service: EmbeddingService): method test_narrow_categories_with_hybrid_strategy (line 436) | def test_narrow_categories_with_hybrid_strategy( class TestNarrowingStrategyBase (line 463) | class TestNarrowingStrategyBase: method test_abstract_base_cannot_be_instantiated (line 466) | def test_abstract_base_cannot_be_instantiated(self): method test_abstract_method_must_be_implemented (line 478) | def test_abstract_method_must_be_implemented(self): FILE: 2025-09-23-evals-for-classification/tests/unit/classification/pipeline_test.py function mock_categories (line 22) | def mock_categories(): class TestClassificationPipeline (line 49) | class TestClassificationPipeline: method test_get_categories_caching_behavior (line 52) | def test_get_categories_caching_behavior(self, mock_categories: list[C... method test_get_categories_returns_cached_when_available (line 80) | def test_get_categories_returns_cached_when_available(self, mock_categ... method test_classify_method_basic_structure (line 101) | def test_classify_method_basic_structure(self, mock_categories: list[C... method test_classify_with_max_candidates_parameter (line 160) | def test_classify_with_max_candidates_parameter(self, mock_categories:... method test_pipeline_component_access (line 193) | def test_pipeline_component_access(self, mock_categories: list[Categor... method test_pipeline_categories_cache_behavior (line 223) | def test_pipeline_categories_cache_behavior(self, mock_categories: lis... method test_pipeline_embedding_service_integration (line 253) | def test_pipeline_embedding_service_integration(self): method test_pipeline_narrower_integration (line 274) | def test_pipeline_narrower_integration(self, mock_categories: list[Cat... method test_pipeline_selector_integration (line 299) | def test_pipeline_selector_integration(self, mock_categories: list[Cat... method test_classification_result_structure (line 322) | def test_classification_result_structure(self, mock_categories: list[C... class TestClassificationPipelineEdgeCases (line 359) | class TestClassificationPipelineEdgeCases: method test_empty_categories_cache (line 362) | def test_empty_categories_cache(self): method test_pipeline_with_none_vector_store (line 384) | def test_pipeline_with_none_vector_store(self): method test_pipeline_component_mocking (line 399) | def test_pipeline_component_mocking(self, mock_categories: list[Catego... class TestClassificationPipelineIntegration (line 437) | class TestClassificationPipelineIntegration: method test_pipeline_classification_result_creation (line 440) | def test_pipeline_classification_result_creation(self, mock_categories... method test_pipeline_component_interaction_pattern (line 479) | def test_pipeline_component_interaction_pattern(self, mock_categories:... method test_pipeline_metadata_structure (line 519) | def test_pipeline_metadata_structure(self): FILE: 2025-09-23-evals-for-classification/tests/unit/classification/selection_test.py function mock_categories (line 23) | def mock_categories(): class TestCategorySelector (line 50) | class TestCategorySelector: method test_init (line 53) | def test_init(self): method test_select_best_category_single_candidate_logic (line 69) | def test_select_best_category_single_candidate_logic(self, mock_catego... method test_select_best_category_empty_candidates_logic (line 93) | def test_select_best_category_empty_candidates_logic(self): method test_select_best_category_name_matching_logic (line 108) | def test_select_best_category_name_matching_logic(self, mock_categorie... method test_select_best_category_invalid_name_logic (line 132) | def test_select_best_category_invalid_name_logic(self, mock_categories... method test_build_dynamic_enum_structure_logic (line 160) | def test_build_dynamic_enum_structure_logic(self, mock_categories: lis... method test_build_dynamic_enum_multiple_categories_logic (line 189) | def test_build_dynamic_enum_multiple_categories_logic(self, mock_categ... method test_build_dynamic_enum_preserves_order_logic (line 223) | def test_build_dynamic_enum_preserves_order_logic(self, mock_categorie... method test_build_dynamic_enum_empty_categories_logic (line 247) | def test_build_dynamic_enum_empty_categories_logic(self): method test_category_name_matching_comprehensive (line 266) | def test_category_name_matching_comprehensive(self, mock_categories: l... method test_case_sensitive_category_matching_logic (line 291) | def test_case_sensitive_category_matching_logic(self, mock_categories:... method test_duplicate_category_names_first_match_logic (line 317) | def test_duplicate_category_names_first_match_logic(self): method test_special_characters_in_category_names_logic (line 356) | def test_special_characters_in_category_names_logic(self): method test_selector_method_single_candidate_logic_validation (line 399) | def test_selector_method_single_candidate_logic_validation(self, mock_... method test_selector_method_empty_candidates_logic_validation (line 421) | def test_selector_method_empty_candidates_logic_validation(self): class TestCategorySelectorEdgeCases (line 437) | class TestCategorySelectorEdgeCases: method test_selector_initialization_no_dependencies (line 440) | def test_selector_initialization_no_dependencies(self): method test_category_matching_edge_cases_logic (line 453) | def test_category_matching_edge_cases_logic(self): method test_selector_component_isolation_logic_validation (line 494) | def test_selector_component_isolation_logic_validation(self, mock_cate... method test_whitespace_and_special_character_handling (line 516) | def test_whitespace_and_special_character_handling(self): class TestCategorySelectorIntegration (line 559) | class TestCategorySelectorIntegration: method test_realistic_category_selection_scenario_logic (line 562) | def test_realistic_category_selection_scenario_logic(self): method test_full_selection_workflow_simulation_logic (line 614) | def test_full_selection_workflow_simulation_logic(self, mock_categorie... method test_selector_error_handling_patterns_logic (line 667) | def test_selector_error_handling_patterns_logic(self, mock_categories:... method test_selector_with_various_category_types_logic (line 693) | def test_selector_with_various_category_types_logic(self, mock_categor... method test_comprehensive_name_matching_scenarios (line 713) | def test_comprehensive_name_matching_scenarios(self, mock_categories: ... FILE: 2025-09-23-evals-for-classification/tests/unit/classification/vector_store_test.py function mock_category (line 12) | def mock_category(): function mock_categories (line 23) | def mock_categories(): function mock_embedding (line 48) | def mock_embedding(): function mock_embeddings (line 54) | def mock_embeddings(): class TestCategoryVectorStore (line 63) | class TestCategoryVectorStore: method test_init_auto_create_false_no_directory (line 66) | def test_init_auto_create_false_no_directory(self): method test_init_auto_create_true_creates_directory (line 83) | def test_init_auto_create_true_creates_directory(self): method test_init_collection_not_found_auto_create_false (line 119) | def test_init_collection_not_found_auto_create_false(self): method test_init_collection_not_found_auto_create_true (line 146) | def test_init_collection_not_found_auto_create_true(self): method test_validate_embedding_model_mismatch (line 185) | def test_validate_embedding_model_mismatch(self): method test_validate_embedding_model_match (line 227) | def test_validate_embedding_model_match(self): method test_build_category_cache (line 266) | def test_build_category_cache(self): method test_find_similar_categories_basic (line 318) | def test_find_similar_categories_basic(self, mock_embedding, mock_cate... method test_find_similar_categories_with_min_similarity (line 383) | def test_find_similar_categories_with_min_similarity(self, mock_embedd... method test_find_similar_categories_no_collection (line 445) | def test_find_similar_categories_no_collection(self, mock_embedding): method test_get_cached_embedding_exists (line 482) | def test_get_cached_embedding_exists(self): method test_get_cached_embedding_not_exists (line 534) | def test_get_cached_embedding_not_exists(self): method test_get_cached_embedding_no_collection (line 576) | def test_get_cached_embedding_no_collection(self): method test_add_category_success (line 616) | def test_add_category_success(self, mock_category, mock_embedding): method test_add_category_no_collection (line 673) | def test_add_category_no_collection(self, mock_category, mock_embedding): method test_has_category_exists (line 709) | def test_has_category_exists(self): method test_has_category_not_exists (line 754) | def test_has_category_not_exists(self): method test_get_collection_info_success (line 796) | def test_get_collection_info_success(self): method test_get_collection_info_no_collection (line 846) | def test_get_collection_info_no_collection(self): method test_is_available_true (line 882) | def test_is_available_true(self): method test_is_available_false_file_not_found (line 920) | def test_is_available_false_file_not_found(self): method test_is_available_false_collection_not_found (line 940) | def test_is_available_false_collection_not_found(self): class TestCategoryVectorStoreEdgeCases (line 972) | class TestCategoryVectorStoreEdgeCases: method test_find_similar_categories_no_distances (line 975) | def test_find_similar_categories_no_distances(self, mock_embedding): method test_get_cached_embedding_empty_embeddings (line 1031) | def test_get_cached_embedding_empty_embeddings(self): method test_get_cached_embedding_none_embeddings (line 1079) | def test_get_cached_embedding_none_embeddings(self): method test_build_category_cache_missing_path_metadata (line 1127) | def test_build_category_cache_missing_path_metadata(self): method test_validate_embedding_model_no_stored_model (line 1177) | def test_validate_embedding_model_no_stored_model(self): method test_add_category_with_special_characters (line 1216) | def test_add_category_with_special_characters(self, mock_embedding): class TestCategoryVectorStoreIntegration (line 1274) | class TestCategoryVectorStoreIntegration: method test_complete_workflow_simulation (line 1277) | def test_complete_workflow_simulation(self, mock_category, mock_embedd... method test_error_recovery_patterns (line 1350) | def test_error_recovery_patterns(self): method test_caching_consistency (line 1371) | def test_caching_consistency(self): FILE: 2025-09-23-evals-for-classification/ui/analysis.py function analyze_pipeline_errors (line 27) | def analyze_pipeline_errors( function create_waffle_chart (line 117) | def create_waffle_chart(values, labels, colors, title): FILE: 2025-09-23-evals-for-classification/ui/app.py function render_sidebar (line 78) | def render_sidebar(): function render_main_content (line 149) | def render_main_content(current_data): function main (line 250) | def main(): FILE: 2025-09-23-evals-for-classification/ui/components.py function render_error_overview (line 26) | def render_error_overview(analysis): function render_failure_breakdown (line 76) | def render_failure_breakdown(analysis): function render_failed_cases_table (line 147) | def render_failed_cases_table(analysis): function render_error_analysis (line 188) | def render_error_analysis(ui_data, correctness_definition: CorrectnessDe... function _evaluate_flexible_correctness (line 241) | def _evaluate_flexible_correctness(final_path: str, ground_truth: str, c... function _render_test_case_header (line 262) | def _render_test_case_header(case_data: dict[str, Any], correctness_defi... function _collect_pipeline_categories (line 300) | def _collect_pipeline_categories(case_data: dict[str, Any]) -> set: function _create_pipeline_table_data (line 322) | def _create_pipeline_table_data(case_data: dict[str, Any], categories_to... function _render_pipeline_table (line 361) | def _render_pipeline_table(table_data: list[dict[str, Any]]): function render_test_case_analysis (line 395) | def render_test_case_analysis( function render_custom_testing (line 420) | def render_custom_testing(): FILE: 2025-09-23-evals-for-classification/ui/data_operations.py function get_available_saved_runs (line 15) | def get_available_saved_runs() -> List[Dict[str, Any]]: function load_saved_run (line 43) | def load_saved_run(run_name: str) -> Optional[Dict[str, Any]]: function save_current_results_as_run (line 85) | def save_current_results_as_run(run_name: str, description: str, pipelin... function transform_pipeline_results_for_ui (line 141) | def transform_pipeline_results_for_ui(pipeline_data: Dict[str, Any]) -> ... FILE: 2025-09-30-dyanmic-schemas/backend/server.py function execute_baml_call (line 32) | async def execute_baml_call( function execute_baml_stream (line 43) | async def execute_baml_stream( function generate_baml_call (line 54) | async def generate_baml_call( function generate_baml_stream (line 63) | async def generate_baml_stream( function generate_baml (line 71) | async def generate_baml( function execute_baml (line 86) | async def execute_baml( function handle_stream (line 119) | def handle_stream(stream: BamlStream[StreamTypeVar, FinalTypeVar], to_da... function convert_to_base64 (line 133) | def convert_to_base64(img: PILImage): function read_input_content (line 138) | async def read_input_content( FILE: 2025-09-30-dyanmic-schemas/frontend/app/layout.tsx function RootLayout (line 20) | function RootLayout({ FILE: 2025-09-30-dyanmic-schemas/frontend/app/page.tsx function Home (line 12) | function Home() { FILE: 2025-09-30-dyanmic-schemas/frontend/components/ansii-string.tsx type AnsiStyles (line 4) | interface AnsiStyles { type Segment (line 10) | interface Segment { type AnsiColorTextProps (line 15) | interface AnsiColorTextProps { FILE: 2025-09-30-dyanmic-schemas/frontend/components/error-message.tsx type ErrorMessageProps (line 3) | interface ErrorMessageProps { function ErrorMessage (line 7) | function ErrorMessage({ error }: ErrorMessageProps) { FILE: 2025-09-30-dyanmic-schemas/frontend/components/execution-result-section.tsx type AnyObject (line 12) | type AnyObject = Record | unknown[] | string | number |... type ExecutionResultSectionProps (line 14) | interface ExecutionResultSectionProps { function ExecutionResultSection (line 18) | function ExecutionResultSection({ executionResult }: ExecutionResultSect... function JsonSyntaxHighlight (line 67) | function JsonSyntaxHighlight({ json }: { json: AnyObject }) { function formatAsYaml (line 83) | function formatAsYaml(data: AnyObject): string { function PrettyPrint (line 134) | function PrettyPrint({ data, level = 0 }: { data: AnyObject; level?: num... function TableView (line 236) | function TableView({ data }: { data: AnyObject }) { function formatCellValue (line 398) | function formatCellValue(value: AnyObject, key?: string): React.ReactNode { FILE: 2025-09-30-dyanmic-schemas/frontend/components/generated-baml-section.tsx type BAML (line 14) | interface BAML { type GeneratedBAMLSectionProps (line 19) | interface GeneratedBAMLSectionProps { function GeneratedBAMLSection (line 36) | function GeneratedBAMLSection({ FILE: 2025-09-30-dyanmic-schemas/frontend/components/input-section.tsx type InputSectionProps (line 13) | interface InputSectionProps { function InputSection (line 18) | function InputSection({ onGenerate, isGenerating }: InputSectionProps) { FILE: 2025-09-30-dyanmic-schemas/frontend/components/markdown/MarkdownRenderer.tsx function ErrorFallback (line 26) | function ErrorFallback({ error }: { error: Error }) { function MarkdownRenderer (line 36) | function MarkdownRenderer({ source }: { source: string }) { function MarkdownContent (line 44) | function MarkdownContent({ source }: { source: string }) { FILE: 2025-09-30-dyanmic-schemas/frontend/components/markdown/shiki-grammars.ts function convertTextmateToShiki (line 14) | function convertTextmateToShiki( FILE: 2025-09-30-dyanmic-schemas/frontend/components/ui/badge.tsx function Badge (line 28) | function Badge({ FILE: 2025-09-30-dyanmic-schemas/frontend/components/ui/button.tsx function Button (line 37) | function Button({ FILE: 2025-09-30-dyanmic-schemas/frontend/components/ui/card.tsx function Card (line 5) | function Card({ className, ...props }: React.ComponentProps<"div">) { function CardHeader (line 18) | function CardHeader({ className, ...props }: React.ComponentProps<"div">) { function CardTitle (line 28) | function CardTitle({ className, ...props }: React.ComponentProps<"div">) { function CardDescription (line 38) | function CardDescription({ className, ...props }: React.ComponentProps<"... function CardContent (line 48) | function CardContent({ className, ...props }: React.ComponentProps<"div"... function CardFooter (line 58) | function CardFooter({ className, ...props }: React.ComponentProps<"div">) { FILE: 2025-09-30-dyanmic-schemas/frontend/components/ui/input.tsx function Input (line 5) | function Input({ className, type, ...props }: React.ComponentProps<"inpu... FILE: 2025-09-30-dyanmic-schemas/frontend/components/ui/separator.tsx function Separator (line 8) | function Separator({ FILE: 2025-09-30-dyanmic-schemas/frontend/components/ui/table.tsx function Table (line 7) | function Table({ className, ...props }: React.ComponentProps<"table">) { function TableHeader (line 22) | function TableHeader({ className, ...props }: React.ComponentProps<"thea... function TableBody (line 32) | function TableBody({ className, ...props }: React.ComponentProps<"tbody"... function TableFooter (line 42) | function TableFooter({ className, ...props }: React.ComponentProps<"tfoo... function TableRow (line 55) | function TableRow({ className, ...props }: React.ComponentProps<"tr">) { function TableHead (line 68) | function TableHead({ className, ...props }: React.ComponentProps<"th">) { function TableCell (line 81) | function TableCell({ className, ...props }: React.ComponentProps<"td">) { function TableCaption (line 94) | function TableCaption({ FILE: 2025-09-30-dyanmic-schemas/frontend/components/ui/tabs.tsx function Tabs (line 8) | function Tabs({ function TabsList (line 21) | function TabsList({ function TabsTrigger (line 37) | function TabsTrigger({ function TabsContent (line 53) | function TabsContent({ FILE: 2025-09-30-dyanmic-schemas/frontend/components/ui/textarea.tsx function Textarea (line 5) | function Textarea({ className, ...props }: React.ComponentProps<"textare... FILE: 2025-09-30-dyanmic-schemas/frontend/lib/utils.ts function cn (line 4) | function cn(...inputs: ClassValue[]) { function fetchSSE (line 17) | async function fetchSSE(url: string, formData: F... FILE: 2025-10-12-unconference-sf/dex-ralph-demo/prisma/migrations/20251012214243_init/migration.sql type "User" (line 2) | CREATE TABLE "User" ( type "Session" (line 13) | CREATE TABLE "Session" ( type "Account" (line 26) | CREATE TABLE "Account" ( type "Verification" (line 41) | CREATE TABLE "Verification" ( type "User" (line 51) | CREATE UNIQUE INDEX "User_email_key" ON "User"("email") type "Session" (line 54) | CREATE UNIQUE INDEX "Session_token_key" ON "Session"("token") type "Session" (line 57) | CREATE INDEX "Session_userId_idx" ON "Session"("userId") type "Account" (line 60) | CREATE INDEX "Account_userId_idx" ON "Account"("userId") type "Account" (line 63) | CREATE UNIQUE INDEX "Account_providerId_accountId_key" ON "Account"("pro... type "Verification" (line 66) | CREATE UNIQUE INDEX "Verification_identifier_value_key" ON "Verification... FILE: 2025-10-12-unconference-sf/dex-ralph-demo/src/app/api/auth/[...all]/route.ts constant GET (line 3) | const GET = auth.handler; constant POST (line 4) | const POST = auth.handler; FILE: 2025-10-12-unconference-sf/dex-ralph-demo/src/app/dashboard/page.tsx function DashboardPage (line 7) | async function DashboardPage() { FILE: 2025-10-12-unconference-sf/dex-ralph-demo/src/app/dashboard/sign-out-button.tsx function SignOutButton (line 7) | function SignOutButton() { FILE: 2025-10-12-unconference-sf/dex-ralph-demo/src/app/layout.tsx function RootLayout (line 20) | function RootLayout({ FILE: 2025-10-12-unconference-sf/dex-ralph-demo/src/app/login/page.tsx function LoginPage (line 7) | function LoginPage() { FILE: 2025-10-12-unconference-sf/dex-ralph-demo/src/app/page.tsx function Home (line 3) | function Home() { FILE: 2025-10-12-unconference-sf/dex-ralph-demo/src/lib/auth.ts type Session (line 41) | type Session = typeof auth.$Infer.Session; FILE: 2025-10-21-agentic-rag-context-engineering/agent_runtime.py class AgentState (line 17) | class AgentState: class AgentCallbacks (line 28) | class AgentCallbacks: class AgentRuntime (line 39) | class AgentRuntime: method __init__ (line 42) | def __init__(self, state: AgentState, callbacks: Optional[AgentCallbac... method execute_tool (line 47) | async def execute_tool(self, tool: types.AgentTools, depth: int = 0) -... method execute_sub_agent (line 55) | async def execute_sub_agent(self, tool: types.AgentTool, parent_depth:... method run_iteration (line 146) | async def run_iteration(self, depth: int = 0) -> tuple[bool, Optional[... method run_loop (line 256) | async def run_loop(self, user_message: str, max_iterations: int = 999,... FILE: 2025-10-21-agentic-rag-context-engineering/main.py function execute_bash (line 17) | def execute_bash(tool: types.BashTool, working_dir: str = ".") -> str: function execute_glob (line 42) | def execute_glob(tool: types.GlobTool, working_dir: str = ".") -> str: function execute_grep (line 78) | def execute_grep(tool: types.GrepTool, working_dir: str = ".") -> str: function execute_ls (line 128) | def execute_ls(tool: types.LSTool, working_dir: str = ".") -> str: function execute_read (line 160) | def execute_read(tool: types.ReadTool, working_dir: str = ".") -> str: function execute_edit (line 203) | def execute_edit(tool: types.EditTool, working_dir: str = ".") -> str: function execute_multi_edit (line 238) | def execute_multi_edit(tool: types.MultiEditTool, working_dir: str = "."... function execute_write (line 272) | def execute_write(tool: types.WriteTool, working_dir: str = ".") -> str: function execute_notebook_read (line 292) | def execute_notebook_read(tool: types.NotebookReadTool, working_dir: str... function execute_notebook_edit (line 319) | def execute_notebook_edit(tool: types.NotebookEditTool, working_dir: str... function execute_web_fetch (line 367) | def execute_web_fetch(tool: types.WebFetchTool, working_dir: str = ".") ... function execute_todo_read (line 398) | def execute_todo_read(tool: types.TodoReadTool, working_dir: str = ".") ... function execute_todo_write (line 413) | def execute_todo_write(tool: types.TodoWriteTool, working_dir: str = "."... function execute_web_search (line 428) | def execute_web_search(tool: types.WebSearchTool, working_dir: str = "."... function execute_exit_plan_mode (line 477) | def execute_exit_plan_mode(tool: types.ExitPlanModeTool, working_dir: st... function execute_agent (line 482) | async def execute_agent(tool: types.AgentTool) -> str: function execute_tool (line 496) | async def execute_tool(tool: types.AgentTools, working_dir: str = ".") -... function agent_loop (line 535) | async def agent_loop(user_message: str, max_iterations: int = 999, worki... function print_iteration (line 560) | async def print_iteration(iteration: int, depth: int) -> None: function print_tool_start (line 568) | async def print_tool_start(tool_name: str, params: dict, tool_idx: int, ... function print_tool_result (line 582) | async def print_tool_result(result: str, depth: int) -> None: function main (line 591) | def main(): FILE: 2025-10-21-agentic-rag-context-engineering/tui.py class StatusBar (line 22) | class StatusBar(Static): method __init__ (line 25) | def __init__(self): method update_status (line 31) | def update_status(self, status: str, iteration: Optional[int] = None): method render (line 37) | def render(self) -> Text: class TodoPanel (line 50) | class TodoPanel(Static): method render (line 53) | def render(self) -> Panel: class AgentLog (line 81) | class AgentLog(RichLog): method __init__ (line 84) | def __init__(self): method log_user (line 88) | def log_user(self, query: str): method log_iteration (line 95) | def log_iteration(self, iteration: int): method log_tool (line 99) | def log_tool(self, tool_name: str, params: dict): method log_result (line 122) | def log_result(self, result: str): method log_agent_reply (line 137) | def log_agent_reply(self, message: str): method log_error (line 144) | def log_error(self, error: str): class CommandInput (line 152) | class CommandInput(Input): method __init__ (line 155) | def __init__(self): class BAMMYApp (line 162) | class BAMMYApp(App): method __init__ (line 216) | def __init__(self, working_dir: Optional[str] = None, initial_query: O... method compose (line 241) | def compose(self) -> ComposeResult: method on_mount (line 265) | def on_mount(self) -> None: method on_input_submitted (line 288) | async def on_input_submitted(self, event: Input.Submitted) -> None: method action_reset_conversation (line 303) | def action_reset_conversation(self) -> None: method action_interrupt_agent (line 321) | def action_interrupt_agent(self) -> None: method on_iteration (line 337) | async def on_iteration(self, iteration: int, depth: int) -> None: method on_tool_start (line 346) | async def on_tool_start(self, tool_name: str, params: dict, tool_idx: ... method on_tool_result (line 355) | async def on_tool_result(self, result: str, depth: int) -> None: method on_agent_reply (line 373) | async def on_agent_reply(self, message: str) -> None: method on_status_update (line 378) | async def on_status_update(self, status: str, iteration: int) -> None: method on_sub_agent_start (line 385) | async def on_sub_agent_start(self, description: str, prompt: str, dept... method on_sub_agent_complete (line 399) | async def on_sub_agent_complete(self, result: str, depth: int) -> None: method process_command (line 409) | async def process_command(self, query: str) -> None: function run_tui (line 460) | def run_tui(working_dir: Optional[str] = None, initial_query: Optional[s... FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/prisma/migrations/20251028172009_init/migration.sql type "User" (line 2) | CREATE TABLE "User" ( type "Todo" (line 11) | CREATE TABLE "Todo" ( type "List" (line 25) | CREATE TABLE "List" ( type "ListShare" (line 35) | CREATE TABLE "ListShare" ( type "Comment" (line 45) | CREATE TABLE "Comment" ( type "Reaction" (line 56) | CREATE TABLE "Reaction" ( type "User" (line 67) | CREATE UNIQUE INDEX "User_email_key" ON "User"("email") type "Todo" (line 70) | CREATE INDEX "Todo_userId_idx" ON "Todo"("userId") type "Todo" (line 73) | CREATE INDEX "Todo_listId_idx" ON "Todo"("listId") type "List" (line 76) | CREATE INDEX "List_userId_idx" ON "List"("userId") type "ListShare" (line 79) | CREATE INDEX "ListShare_listId_idx" ON "ListShare"("listId") type "ListShare" (line 82) | CREATE INDEX "ListShare_userId_idx" ON "ListShare"("userId") type "ListShare" (line 85) | CREATE UNIQUE INDEX "ListShare_listId_userId_key" ON "ListShare"("listId... type "Comment" (line 88) | CREATE INDEX "Comment_todoId_idx" ON "Comment"("todoId") type "Comment" (line 91) | CREATE INDEX "Comment_userId_idx" ON "Comment"("userId") type "Reaction" (line 94) | CREATE INDEX "Reaction_todoId_idx" ON "Reaction"("todoId") type "Reaction" (line 97) | CREATE INDEX "Reaction_userId_idx" ON "Reaction"("userId") type "Reaction" (line 100) | CREATE UNIQUE INDEX "Reaction_todoId_userId_emoji_key" ON "Reaction"("to... FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/prisma/migrations/20251028183716_add_priority_to_todos/migration.sql type "new_Todo" (line 4) | CREATE TABLE "new_Todo" ( type "Todo" (line 21) | CREATE INDEX "Todo_userId_idx" ON "Todo"("userId") type "Todo" (line 22) | CREATE INDEX "Todo_listId_idx" ON "Todo"("listId") FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/prisma/migrations/20251028190218_add_notifications/migration.sql type "Notification" (line 2) | CREATE TABLE "Notification" ( type "Notification" (line 19) | CREATE INDEX "Notification_userId_idx" ON "Notification"("userId") type "Notification" (line 22) | CREATE INDEX "Notification_todoId_idx" ON "Notification"("todoId") type "Notification" (line 25) | CREATE INDEX "Notification_listId_idx" ON "Notification"("listId") type "Notification" (line 28) | CREATE INDEX "Notification_actorId_idx" ON "Notification"("actorId") FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/prisma/migrations/20251028191557_add_recurring_todos/migration.sql type "new_Todo" (line 4) | CREATE TABLE "new_Todo" ( type "Todo" (line 25) | CREATE INDEX "Todo_userId_idx" ON "Todo"("userId") type "Todo" (line 26) | CREATE INDEX "Todo_listId_idx" ON "Todo"("listId") type "Todo" (line 27) | CREATE INDEX "Todo_parentRecurringTodoId_idx" ON "Todo"("parentRecurring... FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/prisma/migrations/20251028192204_add_attachments/migration.sql type "Attachment" (line 2) | CREATE TABLE "Attachment" ( type "Attachment" (line 16) | CREATE INDEX "Attachment_todoId_idx" ON "Attachment"("todoId") type "Attachment" (line 19) | CREATE INDEX "Attachment_userId_idx" ON "Attachment"("userId") FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/prisma/migrations/20251028193702_add_templates/migration.sql type "Template" (line 2) | CREATE TABLE "Template" ( type "Template" (line 16) | CREATE INDEX "Template_userId_idx" ON "Template"("userId") FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/prisma/migrations/20251028194458_add_email_notification_preferences/migration.sql type "new_User" (line 4) | CREATE TABLE "new_User" ( type "User" (line 15) | CREATE UNIQUE INDEX "User_email_key" ON "User"("email") FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/prisma/migrations/20251028195051_add_email_digests/migration.sql type "new_Notification" (line 7) | CREATE TABLE "new_Notification" ( type "Notification" (line 26) | CREATE INDEX "Notification_userId_idx" ON "Notification"("userId") type "Notification" (line 27) | CREATE INDEX "Notification_todoId_idx" ON "Notification"("todoId") type "Notification" (line 28) | CREATE INDEX "Notification_listId_idx" ON "Notification"("listId") type "Notification" (line 29) | CREATE INDEX "Notification_actorId_idx" ON "Notification"("actorId") FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/prisma/migrations/20251028200059_add_digest_customization/migration.sql type "new_User" (line 4) | CREATE TABLE "new_User" ( type "User" (line 22) | CREATE UNIQUE INDEX "User_email_key" ON "User"("email") FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/prisma/migrations/20251028201814_add_activity_log/migration.sql type "ActivityLog" (line 2) | CREATE TABLE "ActivityLog" ( type "ActivityLog" (line 17) | CREATE INDEX "ActivityLog_userId_idx" ON "ActivityLog"("userId") type "ActivityLog" (line 20) | CREATE INDEX "ActivityLog_todoId_idx" ON "ActivityLog"("todoId") type "ActivityLog" (line 23) | CREATE INDEX "ActivityLog_listId_idx" ON "ActivityLog"("listId") type "ActivityLog" (line 26) | CREATE INDEX "ActivityLog_createdAt_idx" ON "ActivityLog"("createdAt") FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/prisma/migrations/20251028203200_add_custom_recurrence_patterns/migration.sql type "new_Template" (line 4) | CREATE TABLE "new_Template" ( type "Template" (line 25) | CREATE INDEX "Template_userId_idx" ON "Template"("userId") type "new_Todo" (line 26) | CREATE TABLE "new_Todo" ( type "Todo" (line 53) | CREATE INDEX "Todo_userId_idx" ON "Todo"("userId") type "Todo" (line 54) | CREATE INDEX "Todo_listId_idx" ON "Todo"("listId") type "Todo" (line 55) | CREATE INDEX "Todo_parentRecurringTodoId_idx" ON "Todo"("parentRecurring... FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/prisma/migrations/20251029150838_add_todo_dependencies/migration.sql type "TodoDependency" (line 2) | CREATE TABLE "TodoDependency" ( type "TodoDependency" (line 12) | CREATE INDEX "TodoDependency_todoId_idx" ON "TodoDependency"("todoId") type "TodoDependency" (line 15) | CREATE INDEX "TodoDependency_dependsOnTodoId_idx" ON "TodoDependency"("d... type "TodoDependency" (line 18) | CREATE UNIQUE INDEX "TodoDependency_todoId_dependsOnTodoId_key" ON "Todo... FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/src/app/actions/comments.ts type CommentWithUser (line 10) | interface CommentWithUser extends Comment { type ReactionWithUser (line 18) | interface ReactionWithUser extends Reaction { function requireAuth (line 26) | async function requireAuth() { function getTodoNotificationRecipients (line 34) | async function getTodoNotificationRecipients( function createComment (line 86) | async function createComment( function getCommentsByTodo (line 144) | async function getCommentsByTodo( function deleteComment (line 179) | async function deleteComment( function toggleReaction (line 232) | async function toggleReaction( function getReactionsByTodo (line 315) | async function getReactionsByTodo(todoId: string): Promise<{ FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/src/app/actions/lists.ts type ListWithUser (line 10) | interface ListWithUser extends List { type CreateListInput (line 18) | interface CreateListInput { type UpdateListInput (line 22) | interface UpdateListInput { function requireAuth (line 26) | async function requireAuth() { function createList (line 34) | async function createList( function getLists (line 69) | async function getLists(): Promise<{ function getList (line 108) | async function getList( function updateList (line 147) | async function updateList( function deleteList (line 202) | async function deleteList( function shareList (line 242) | async function shareList( function unshareList (line 326) | async function unshareList( function getListShares (line 374) | async function getListShares(listId: string): Promise<{ function getCurrentUserId (line 423) | async function getCurrentUserId(): Promise<{ FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/src/app/actions/templates.ts type CreateTemplateInput (line 13) | interface CreateTemplateInput { type UpdateTemplateInput (line 27) | interface UpdateTemplateInput { function requireAuth (line 41) | async function requireAuth() { function createTemplate (line 49) | async function createTemplate( function getTemplates (line 92) | async function getTemplates(): Promise<{ function getTemplate (line 120) | async function getTemplate( function updateTemplate (line 148) | async function updateTemplate( function deleteTemplate (line 224) | async function deleteTemplate( FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/src/app/actions/todos.ts type TodoWithUser (line 19) | interface TodoWithUser extends Todo { type CreateTodoInput (line 27) | interface CreateTodoInput { type UpdateTodoInput (line 44) | interface UpdateTodoInput { type BatchUpdateResult (line 61) | interface BatchUpdateResult { type BatchDeleteResult (line 68) | interface BatchDeleteResult { function requireAuth (line 75) | async function requireAuth() { function createNextRecurringInstance (line 83) | async function createNextRecurringInstance( function getNotificationRecipients (line 159) | async function getNotificationRecipients( function createTodo (line 186) | async function createTodo( function getTodos (line 250) | async function getTodos(filters?: { function getTodo (line 335) | async function getTodo( function updateTodo (line 374) | async function updateTodo( function deleteTodo (line 588) | async function deleteTodo( function batchUpdateTodos (line 654) | async function batchUpdateTodos( function batchDeleteTodos (line 798) | async function batchDeleteTodos( function updateTodoStatus (line 889) | async function updateTodoStatus( type TodoDependency (line 896) | interface TodoDependency { type TodoWithDependencies (line 919) | interface TodoWithDependencies { function detectCircularDependency (line 924) | async function detectCircularDependency( function addTodoDependency (line 957) | async function addTodoDependency( function removeTodoDependency (line 1111) | async function removeTodoDependency( function getTodoDependencies (line 1224) | async function getTodoDependencies(todoId: string): Promise<{ type TodoNodeData (line 1305) | interface TodoNodeData extends Record { type DependencyGraphData (line 1318) | interface DependencyGraphData { function getDependencyGraph (line 1326) | async function getDependencyGraph(filters?: { FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/src/app/api/activity-logs/route.ts function GET (line 10) | async function GET(request: Request) { FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/src/app/api/attachments/[id]/route.ts function GET (line 7) | async function GET( function DELETE (line 59) | async function DELETE( FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/src/app/api/attachments/route.ts function POST (line 6) | async function POST(request: NextRequest) { function GET (line 75) | async function GET(request: NextRequest) { FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/src/app/api/auth/login/route.ts function POST (line 4) | async function POST(request: NextRequest) { FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/src/app/api/auth/logout/route.ts function POST (line 4) | async function POST() { FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/src/app/api/auth/session/route.ts function GET (line 4) | async function GET() { FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/src/app/api/auth/verify/route.ts function GET (line 8) | async function GET(request: NextRequest) { FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/src/app/api/cron/send-digests/route.ts function POST (line 11) | async function POST() { FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/src/app/api/lists/[id]/route.ts type RouteContext (line 6) | interface RouteContext { function GET (line 10) | async function GET(_request: NextRequest, context: RouteContext) { function PUT (line 39) | async function PUT(request: NextRequest, context: RouteContext) { function DELETE (line 83) | async function DELETE(_request: NextRequest, context: RouteContext) { FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/src/app/api/lists/route.ts function POST (line 6) | async function POST(request: NextRequest) { function GET (line 42) | async function GET() { FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/src/app/api/notifications/[id]/route.ts type RouteContext (line 5) | interface RouteContext { function PATCH (line 9) | async function PATCH(_request: NextRequest, context: RouteContext) { FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/src/app/api/notifications/route.ts function GET (line 5) | async function GET() { function PATCH (line 35) | async function PATCH() { FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/src/app/api/notifications/unread-count/route.ts function GET (line 5) | async function GET() { FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/src/app/api/settings/notification-preferences/route.ts function GET (line 8) | async function GET() { constant VALID_FREQUENCIES (line 41) | const VALID_FREQUENCIES = ["IMMEDIATE", "DAILY", "WEEKLY", "NEVER"] as c... type NotificationFrequency (line 42) | type NotificationFrequency = (typeof VALID_FREQUENCIES)[number]; function PATCH (line 44) | async function PATCH(request: NextRequest) { FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/src/app/api/todos/[id]/route.ts type RouteContext (line 6) | interface RouteContext { function GET (line 10) | async function GET(_request: NextRequest, context: RouteContext) { function PUT (line 39) | async function PUT(request: NextRequest, context: RouteContext) { function DELETE (line 110) | async function DELETE(_request: NextRequest, context: RouteContext) { FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/src/app/api/todos/route.ts function POST (line 6) | async function POST(request: NextRequest) { function GET (line 69) | async function GET() { FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/src/app/layout.tsx function RootLayout (line 20) | function RootLayout({ FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/src/app/login/page.tsx function LoginPage (line 8) | function LoginPage() { FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/src/app/page.tsx type ViewMode (line 17) | type ViewMode = "list" | "kanban" | "graph"; function Home (line 19) | function Home() { FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/src/app/verify/page.tsx function VerifyPage (line 7) | function VerifyPage() { FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/src/components/activity-logs/ActivityLogList.tsx type ActivityLog (line 6) | interface ActivityLog { type ActivityLogListProps (line 27) | interface ActivityLogListProps { function formatTimeAgo (line 33) | function formatTimeAgo(dateString: string): string { function getActivityIcon (line 53) | function getActivityIcon(activityType: ActivityType): string { function ActivityLogList (line 100) | function ActivityLogList({ FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/src/components/attachments/AttachmentList.tsx type AttachmentListProps (line 6) | interface AttachmentListProps { function AttachmentList (line 11) | function AttachmentList({ FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/src/components/attachments/FileUpload.tsx type FileUploadProps (line 5) | interface FileUploadProps { function FileUpload (line 10) | function FileUpload({ FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/src/components/auth/LoginForm.tsx type LoginFormProps (line 5) | interface LoginFormProps { function LoginForm (line 9) | function LoginForm({ onSuccess }: LoginFormProps) { FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/src/components/auth/LogoutButton.tsx type LogoutButtonProps (line 6) | interface LogoutButtonProps { function LogoutButton (line 10) | function LogoutButton({ className = "" }: LogoutButtonProps) { FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/src/components/common/KeyboardShortcutsHelp.tsx type KeyboardShortcutsHelpProps (line 5) | interface KeyboardShortcutsHelpProps { type Shortcut (line 10) | interface Shortcut { type ShortcutCategory (line 15) | interface ShortcutCategory { constant SHORTCUTS (line 20) | const SHORTCUTS: ShortcutCategory[] = [ function KeyboardShortcutsHelp (line 45) | function KeyboardShortcutsHelp({ FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/src/components/dependencies/DependencyList.tsx type DependencyListProps (line 7) | interface DependencyListProps { function DependencyList (line 13) | function DependencyList({ FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/src/components/dependencies/DependencySelector.tsx type DependencySelectorProps (line 7) | interface DependencySelectorProps { function DependencySelector (line 12) | function DependencySelector({ FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/src/components/graph/GraphView.tsx type GraphViewProps (line 30) | interface GraphViewProps { function GraphView (line 72) | function GraphView({ lists }: GraphViewProps) { FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/src/components/graph/GraphViewWrapper.tsx type GraphViewWrapperProps (line 7) | interface GraphViewWrapperProps { function GraphViewWrapper (line 11) | function GraphViewWrapper({ lists }: GraphViewWrapperProps) { FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/src/components/graph/TodoNode.tsx type TodoNodeData (line 8) | interface TodoNodeData extends Record { constant STATUS_COLORS (line 19) | const STATUS_COLORS: Record = { constant PRIORITY_COLORS (line 26) | const PRIORITY_COLORS: Record = { constant PRIORITY_LABELS (line 34) | const PRIORITY_LABELS: Record = { function TodoNode (line 42) | function TodoNode({ data }: { data: TodoNodeData }) { FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/src/components/lists/ListForm.tsx type ListFormProps (line 7) | interface ListFormProps { function ListForm (line 13) | function ListForm({ list, onSuccess, onCancel }: ListFormProps) { FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/src/components/lists/ListItem.tsx type ListItemProps (line 10) | interface ListItemProps { function ListItem (line 16) | function ListItem({ FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/src/components/lists/ListManagement.tsx function ListManagement (line 9) | function ListManagement() { FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/src/components/lists/ListSelector.tsx type ListSelectorProps (line 7) | interface ListSelectorProps { function ListSelector (line 13) | function ListSelector({ FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/src/components/lists/ShareListForm.tsx type ShareListFormProps (line 6) | interface ShareListFormProps { function ShareListForm (line 12) | function ShareListForm({ FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/src/components/lists/SharedUsersList.tsx type Share (line 6) | interface Share { type SharedUsersListProps (line 15) | interface SharedUsersListProps { function SharedUsersList (line 20) | function SharedUsersList({ FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/src/components/notifications/NotificationBell.tsx type NotificationBellProps (line 5) | interface NotificationBellProps { function NotificationBell (line 9) | function NotificationBell({ FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/src/components/notifications/NotificationList.tsx type Notification (line 5) | interface Notification { type NotificationListProps (line 13) | interface NotificationListProps { function formatTimeAgo (line 17) | function formatTimeAgo(dateString: string): string { function NotificationList (line 37) | function NotificationList({ onClose }: NotificationListProps) { FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/src/components/settings/NotificationPreferences.tsx type NotificationPreference (line 5) | type NotificationPreference = "IMMEDIATE" | "DAILY" | "WEEKLY" | "NEVER"; type DigestCustomization (line 7) | interface DigestCustomization { type NotificationPreferencesResponse (line 16) | interface NotificationPreferencesResponse { constant PREFERENCE_OPTIONS (line 21) | const PREFERENCE_OPTIONS: NotificationPreference[] = [ constant PREFERENCE_DESCRIPTIONS (line 28) | const PREFERENCE_DESCRIPTIONS: Record = { constant DIGEST_OPTION_LABELS (line 35) | const DIGEST_OPTION_LABELS: Record = { function NotificationPreferences (line 44) | function NotificationPreferences() { FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/src/components/templates/TemplateForm.tsx type TemplateFormProps (line 13) | interface TemplateFormProps { constant PRIORITY_OPTIONS (line 19) | const PRIORITY_OPTIONS: TodoPriority[] = [ constant RECURRENCE_OPTIONS (line 27) | const RECURRENCE_OPTIONS: RecurrencePattern[] = [ function TemplateForm (line 35) | function TemplateForm({ FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/src/components/templates/TemplateItem.tsx type TemplateItemProps (line 9) | interface TemplateItemProps { function TemplateItem (line 14) | function TemplateItem({ FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/src/components/templates/TemplateManagement.tsx function TemplateManagement (line 9) | function TemplateManagement() { FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/src/components/templates/TemplateSelector.tsx type TemplateSelectorProps (line 7) | interface TemplateSelectorProps { function TemplateSelector (line 14) | function TemplateSelector({ FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/src/components/todos/BatchActionBar.tsx type BatchActionBarProps (line 7) | interface BatchActionBarProps { constant STATUS_OPTIONS (line 18) | const STATUS_OPTIONS: TodoStatus[] = ["TODO", "DOING", "DONE", "CANCELLE... constant PRIORITY_OPTIONS (line 19) | const PRIORITY_OPTIONS: TodoPriority[] = [ function BatchActionBar (line 27) | function BatchActionBar({ FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/src/components/todos/CommentThread.tsx type CommentThreadProps (line 12) | interface CommentThreadProps { function CommentThread (line 17) | function CommentThread({ FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/src/components/todos/KanbanBoard.tsx constant KANBAN_COLUMNS (line 19) | const KANBAN_COLUMNS: { status: TodoStatus; label: string; color: string... constant PRIORITY_FILTER_OPTIONS (line 34) | const PRIORITY_FILTER_OPTIONS = [ constant DUE_DATE_FILTER_OPTIONS (line 43) | const DUE_DATE_FILTER_OPTIONS = [ function KanbanBoard (line 51) | function KanbanBoard() { FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/src/components/todos/KanbanCard.tsx constant PRIORITY_COLORS (line 16) | const PRIORITY_COLORS: Record = { constant PRIORITY_LABELS (line 24) | const PRIORITY_LABELS: Record = { type KanbanCardProps (line 32) | interface KanbanCardProps { function KanbanCard (line 41) | function KanbanCard({ FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/src/components/todos/ReactionBar.tsx type ReactionBarProps (line 7) | interface ReactionBarProps { type GroupedReaction (line 13) | interface GroupedReaction { constant COMMON_EMOJIS (line 20) | const COMMON_EMOJIS = ["👍", "❤️", "😄", "😮", "😢", "🎉", "🚀", "👏"]; function ReactionBar (line 22) | function ReactionBar({ FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/src/components/todos/RecurrenceSelector.tsx type RecurrenceSelectorProps (line 14) | interface RecurrenceSelectorProps { constant BASIC_PATTERNS (line 20) | const BASIC_PATTERNS: RecurrencePattern[] = [ function RecurrenceSelector (line 28) | function RecurrenceSelector({ FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/src/components/todos/TodoForm.tsx type TodoFormProps (line 16) | interface TodoFormProps { constant PRIORITY_OPTIONS (line 22) | const PRIORITY_OPTIONS: TodoPriority[] = [ constant RECURRENCE_OPTIONS (line 30) | const RECURRENCE_OPTIONS: RecurrencePattern[] = [ function TodoForm (line 38) | function TodoForm({ todo, onSuccess, onCancel }: TodoFormProps) { FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/src/components/todos/TodoItem.tsx type TodoItemProps (line 17) | interface TodoItemProps { constant STATUS_COLORS (line 25) | const STATUS_COLORS: Record = { constant PRIORITY_COLORS (line 33) | const PRIORITY_COLORS: Record = { constant PRIORITY_LABELS (line 41) | const PRIORITY_LABELS: Record = { constant STATUS_OPTIONS (line 49) | const STATUS_OPTIONS: TodoStatus[] = ["TODO", "DOING", "DONE", "CANCELLE... function TodoItem (line 51) | function TodoItem({ FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/src/components/todos/TodoList.tsx constant STATUS_FILTER_OPTIONS (line 20) | const STATUS_FILTER_OPTIONS = [ constant PRIORITY_FILTER_OPTIONS (line 28) | const PRIORITY_FILTER_OPTIONS = [ constant DUE_DATE_FILTER_OPTIONS (line 37) | const DUE_DATE_FILTER_OPTIONS = [ function TodoList (line 45) | function TodoList() { FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/src/lib/activity-log-server.ts type CreateActivityLogInput (line 6) | interface CreateActivityLogInput { type ActivityLogWithRelations (line 15) | interface ActivityLogWithRelations { function createActivityLog (line 39) | async function createActivityLog( function getActivityLogsForTodo (line 58) | async function getActivityLogsForTodo( function getActivityLogsForList (line 92) | async function getActivityLogsForList( function getActivityLogsForUser (line 126) | async function getActivityLogsForUser( function getRecentActivityLogs (line 160) | async function getRecentActivityLogs( FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/src/lib/attachments-server.ts constant UPLOAD_DIR (line 7) | const UPLOAD_DIR = join(process.cwd(), "uploads"); function ensureUploadDir (line 9) | async function ensureUploadDir() { function createAttachment (line 15) | async function createAttachment(params: { function getAttachments (line 67) | async function getAttachments(todoId: string): Promise<{ function getAttachment (line 100) | async function getAttachment(id: string): Promise<{ function deleteAttachment (line 134) | async function deleteAttachment(id: string): Promise<{ FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/src/lib/auth-server.ts type Session (line 10) | interface Session { type MagicLinkTokenPayload (line 16) | interface MagicLinkTokenPayload { constant SESSION_COOKIE (line 21) | const SESSION_COOKIE = "session_token"; constant SESSION_DURATION (line 22) | const SESSION_DURATION = 7 * 24 * 60 * 60 * 1000; constant TOKEN_DURATION (line 23) | const TOKEN_DURATION = 15 * 60; function createMagicToken (line 25) | function createMagicToken(email: string): string { function verifyMagicToken (line 33) | function verifyMagicToken(token: string): string | null { function findOrCreateUser (line 45) | async function findOrCreateUser(email: string): Promise { function createSession (line 57) | async function createSession( function getSession (line 79) | async function getSession(): Promise { function deleteSession (line 94) | async function deleteSession(): Promise { function sendMagicLink (line 99) | async function sendMagicLink( FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/src/lib/auth.ts constant USER_KEY (line 5) | const USER_KEY = "auth_user"; function getUser (line 7) | function getUser(): User | null { function setUser (line 13) | function setUser(user: User): void { function clearUser (line 18) | function clearUser(): void { function isAuthenticated (line 23) | function isAuthenticated(): boolean { FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/src/lib/comments-server.ts function createComment (line 10) | async function createComment( function getCommentsByTodo (line 51) | async function getCommentsByTodo( function deleteComment (line 78) | async function deleteComment( function toggleReaction (line 117) | async function toggleReaction( function getReactionsByTodo (line 163) | async function getReactionsByTodo( FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/src/lib/config.ts type Config (line 1) | interface Config { function getEnvVar (line 18) | function getEnvVar(key: string): string { function getEnvVarWithDefault (line 26) | function getEnvVarWithDefault(key: string, defaultValue: string): string { function loadConfig (line 30) | function loadConfig(): Config { FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/src/lib/digest-notifications-server.ts type UnsentNotificationsResult (line 4) | interface UnsentNotificationsResult { type MarkDigestedResult (line 10) | interface MarkDigestedResult { type UpdateDigestResult (line 16) | interface UpdateDigestResult { type GroupedNotifications (line 21) | interface GroupedNotifications { function getUnsentDigestNotifications (line 25) | async function getUnsentDigestNotifications( function markNotificationsAsDigested (line 60) | async function markNotificationsAsDigested( function shouldSendDailyDigest (line 85) | function shouldSendDailyDigest(lastDigestSentAt: Date | null): boolean { function shouldSendWeeklyDigest (line 97) | function shouldSendWeeklyDigest(lastDigestSentAt: Date | null): boolean { function updateLastDigestSentAt (line 109) | async function updateLastDigestSentAt( function groupNotificationsByType (line 130) | function groupNotificationsByType( FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/src/lib/email-digests.ts function getResend (line 7) | function getResend(): Resend { type GroupedNotifications (line 14) | interface GroupedNotifications { function groupNotificationsByType (line 23) | function groupNotificationsByType( function getNotificationTypeLabel (line 42) | function getNotificationTypeLabel(type: NotificationType): string { function getNotificationTypeColor (line 54) | function getNotificationTypeColor(type: NotificationType): string { function getSummaryStats (line 66) | function getSummaryStats(grouped: GroupedNotifications): string[] { function buildNotificationSectionHtml (line 103) | function buildNotificationSectionHtml( function getDigestEmailHtml (line 135) | function getDigestEmailHtml( function buildNotificationSectionText (line 188) | function buildNotificationSectionText( function getDigestEmailText (line 207) | function getDigestEmailText( function sendDigestEmail (line 245) | async function sendDigestEmail( FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/src/lib/email-notifications.ts function getResend (line 8) | function getResend(): Resend { function getTodoCreatedHtml (line 16) | function getTodoCreatedHtml( function getTodoCreatedText (line 54) | function getTodoCreatedText( function getTodoUpdatedHtml (line 73) | function getTodoUpdatedHtml( function getTodoUpdatedText (line 111) | function getTodoUpdatedText( function getTodoDeletedHtml (line 130) | function getTodoDeletedHtml( function getTodoDeletedText (line 168) | function getTodoDeletedText( function getTodoCommentedHtml (line 187) | function getTodoCommentedHtml( function getTodoCommentedText (line 225) | function getTodoCommentedText( function getTodoReactedHtml (line 244) | function getTodoReactedHtml( function getTodoReactedText (line 282) | function getTodoReactedText( function getListSharedHtml (line 301) | function getListSharedHtml( function getListSharedText (line 339) | function getListSharedText( function sendTodoCreatedNotification (line 358) | async function sendTodoCreatedNotification( function sendTodoUpdatedNotification (line 385) | async function sendTodoUpdatedNotification( function sendTodoDeletedNotification (line 412) | async function sendTodoDeletedNotification( function sendTodoCommentedNotification (line 439) | async function sendTodoCommentedNotification( function sendTodoReactedNotification (line 466) | async function sendTodoReactedNotification( function sendListSharedNotification (line 493) | async function sendListSharedNotification( function sendNotification (line 521) | async function sendNotification( function shouldSendDailyDigest (line 559) | function shouldSendDailyDigest(lastDigestSentAt: Date | null): boolean { function shouldSendWeeklyDigest (line 569) | function shouldSendWeeklyDigest(lastDigestSentAt: Date | null): boolean { function getUnsentDigestNotifications (line 579) | async function getUnsentDigestNotifications(userId: string) { function getDigestEmailHtml (line 589) | function getDigestEmailHtml( function getDigestEmailText (line 636) | function getDigestEmailText( function sendDigestEmail (line 661) | async function sendDigestEmail( function markNotificationsAsDigested (line 695) | async function markNotificationsAsDigested( FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/src/lib/email.ts function getResend (line 8) | function getResend(): Resend { function getMagicLinkEmailTemplate (line 15) | function getMagicLinkEmailTemplate(magicLink: string): string { function getMagicLinkEmailText (line 52) | function getMagicLinkEmailText(magicLink: string): string { function getNotificationEmailTemplate (line 64) | function getNotificationEmailTemplate( function getNotificationEmailText (line 97) | function getNotificationEmailText(message: string, actionUrl: string): s... function getNotificationEmailSubject (line 107) | function getNotificationEmailSubject( function sendMagicLinkEmail (line 121) | async function sendMagicLinkEmail( function sendNotificationEmail (line 157) | async function sendNotificationEmail( FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/src/lib/hooks/useKeyboardShortcuts.ts type KeyboardShortcutHandler (line 3) | type KeyboardShortcutHandler = (event: KeyboardEvent) => void; type KeyboardShortcutConfig (line 5) | interface KeyboardShortcutConfig { type UseKeyboardShortcutsOptions (line 9) | interface UseKeyboardShortcutsOptions { function useKeyboardShortcuts (line 65) | function useKeyboardShortcuts( FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/src/lib/lists-server.ts function createList (line 12) | async function createList( function getList (line 33) | async function getList( function getLists (line 58) | async function getLists(userId: string): Promise { function updateList (line 76) | async function updateList( function deleteList (line 109) | async function deleteList( function shareList (line 138) | async function shareList( function unshareList (line 204) | async function unshareList( function getListShares (line 239) | async function getListShares( FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/src/lib/notification-preferences-server.ts type DigestCustomization (line 4) | interface DigestCustomization { type NotificationPreferencesResult (line 13) | interface NotificationPreferencesResult { type UpdateNotificationPreferencesResult (line 20) | interface UpdateNotificationPreferencesResult { function getNotificationPreferences (line 27) | async function getNotificationPreferences( function updateNotificationPreferences (line 72) | async function updateNotificationPreferences( FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/src/lib/notifications-server.ts type CreateNotificationInput (line 11) | interface CreateNotificationInput { function buildActionUrl (line 20) | function buildActionUrl(todoId?: string, listId?: string): string { function createNotification (line 30) | async function createNotification( function getNotifications (line 78) | async function getNotifications( function getUnreadCount (line 110) | async function getUnreadCount( function markAsRead (line 131) | async function markAsRead( function markAllAsRead (line 177) | async function markAllAsRead( FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/src/lib/recurrence-custom.ts type DayOfWeek (line 3) | type DayOfWeek = 0 | 1 | 2 | 3 | 4 | 5 | 6; type MonthlyPatternType (line 5) | type MonthlyPatternType = type CustomRecurrencePattern (line 22) | interface CustomRecurrencePattern { constant DAY_NAMES (line 30) | const DAY_NAMES = [ constant MONTHLY_PATTERNS (line 40) | const MONTHLY_PATTERNS: Array<{ function formatCustomRecurrencePattern (line 61) | function formatCustomRecurrencePattern( FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/src/lib/recurrence.ts type RecurrenceFields (line 3) | interface RecurrenceFields { constant WEEKDAY_NAMES (line 13) | const WEEKDAY_NAMES: Record = { constant WEEK_ORDINALS (line 23) | const WEEK_ORDINALS = ["First", "Second", "Third", "Fourth", "Last"]; function getDaySuffix (line 25) | function getDaySuffix(day: number): string { function formatCustomRecurrence (line 39) | function formatCustomRecurrence(fields: RecurrenceFields): string { function calculateNextDueDate (line 120) | function calculateNextDueDate( function shouldCreateNextInstance (line 282) | function shouldCreateNextInstance( function formatRecurrencePattern (line 295) | function formatRecurrencePattern(pattern: RecurrencePattern): string { FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/src/lib/todos-server.ts function createTodo (line 9) | async function createTodo( function getTodo (line 33) | async function getTodo( function getTodos (line 58) | async function getTodos(userId: string): Promise { function getTodosByList (line 74) | async function getTodosByList( function updateTodo (line 97) | async function updateTodo( function deleteTodo (line 135) | async function deleteTodo( FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/src/lib/todos.ts constant TODOS_KEY (line 11) | const TODOS_KEY = "todos_cache"; constant CACHE_DURATION (line 12) | const CACHE_DURATION = 5 * 60 * 1000; type CachedTodos (line 14) | interface CachedTodos { function getCachedTodos (line 19) | function getCachedTodos(): Todo[] | null { function setCachedTodos (line 33) | function setCachedTodos(todos: Todo[]): void { function clearCachedTodos (line 42) | function clearCachedTodos(): void { function fetchTodos (line 47) | async function fetchTodos(): Promise { function fetchTodosByList (line 72) | async function fetchTodosByList(listId: string): Promise { function fetchTodo (line 97) | async function fetchTodo(todoId: string): Promise { function createTodo (line 119) | async function createTodo(input: CreateTodoInput): Promise { function updateTodo (line 146) | async function updateTodo( function deleteTodo (line 176) | async function deleteTodo(todoId: string): Promise { FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/src/lib/types/attachments.ts type AttachmentWithUser (line 3) | interface AttachmentWithUser extends Attachment { FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/src/lib/types/auth.ts type User (line 1) | interface User { type Session (line 7) | interface Session { type MagicLinkToken (line 13) | interface MagicLinkToken { type AuthResult (line 18) | interface AuthResult { FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/src/lib/types/comments.ts type CommentWithUser (line 5) | interface CommentWithUser extends Comment { type ReactionWithUser (line 13) | interface ReactionWithUser extends Reaction { type CreateCommentInput (line 21) | interface CreateCommentInput { type CreateReactionInput (line 25) | interface CreateReactionInput { type CommentResult (line 29) | interface CommentResult { type CommentsResult (line 35) | interface CommentsResult { type ReactionResult (line 41) | interface ReactionResult { type ReactionsResult (line 47) | interface ReactionsResult { FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/src/lib/types/lists.ts type CreateListInput (line 5) | interface CreateListInput { type UpdateListInput (line 9) | interface UpdateListInput { type ListResult (line 13) | interface ListResult { type ListsResult (line 19) | interface ListsResult { type ShareListInput (line 25) | interface ShareListInput { type ListShareResult (line 29) | interface ListShareResult { type ListSharesResult (line 35) | interface ListSharesResult { FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/src/lib/types/notifications.ts type NotificationResult (line 5) | interface NotificationResult { type NotificationsResult (line 11) | interface NotificationsResult { type UnreadCountResult (line 17) | interface UnreadCountResult { FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/src/lib/types/todos.ts type CreateTodoInput (line 5) | interface CreateTodoInput { type UpdateTodoInput (line 12) | interface UpdateTodoInput { type TodoResult (line 19) | interface TodoResult { type TodosResult (line 25) | interface TodosResult { FILE: 2025-10-28-ralph-wiggum-coding-agent-power-tools/webapp/src/middleware.ts constant SESSION_COOKIE (line 3) | const SESSION_COOKIE = "session_token"; function middleware (line 8) | function middleware(request: NextRequest) { FILE: 2025-11-05-event-driven-agents/demo/src/__tests__/command-flow.test.ts function createTestLayer (line 14) | function createTestLayer() { FILE: 2025-11-05-event-driven-agents/demo/src/__tests__/interrupt-and-queue.test.ts function createFullTestLayer (line 27) | function createFullTestLayer(mockLLMConfig: { responses: string[]; chunk... FILE: 2025-11-05-event-driven-agents/demo/src/__tests__/mocks/llm.ts type MockLLMConfig (line 10) | interface MockLLMConfig { function createMockLLMService (line 19) | function createMockLLMService(config: { FILE: 2025-11-05-event-driven-agents/demo/src/__tests__/mocks/responses.ts method eval (line 10) | eval(code: string, description?: string): string { method textWithEval (line 26) | textWithEval(textBefore: string, code: string, description?: string, tex... method text (line 33) | text(content: string): string { FILE: 2025-11-05-event-driven-agents/demo/src/__tests__/test-helpers.ts function waitForCondition (line 11) | function waitForCondition( function waitForStreamingStart (line 52) | function waitForStreamingStart( function waitForStreamingStop (line 61) | function waitForStreamingStop( function waitForQueueSize (line 70) | function waitForQueueSize( function waitForQueueEmpty (line 83) | function waitForQueueEmpty( function waitForMessageCount (line 95) | function waitForMessageCount( function waitForInterruptPending (line 108) | function waitForInterruptPending( function waitForInterruptComplete (line 117) | function waitForInterruptComplete( FILE: 2025-11-05-event-driven-agents/demo/src/__tests__/test-utils.ts type ServiceClass (line 32) | type ServiceClass = function testLayer (line 44) | function testLayer(...services: Service... FILE: 2025-11-05-event-driven-agents/demo/src/antml/AntmlParser.ts type ParserService (line 24) | interface ParserService { type ParsedItem (line 33) | interface ParsedItem { type AntmlParsedType (line 49) | type AntmlParsedType = 'text' | 'thinking' | 'function_call' | 'validati... type AntmlParsed (line 54) | type AntmlParsed = TTools[numbe... type ExtractToolSchema (line 29) | type ExtractToolSchema< FILE: 2025-11-05-event-driven-agents/demo/src/events.ts type BamlUsage (line 5) | type BamlUsage = { type LLMMessage (line 9) | type LLMMessage = { type Event (line 14) | type Event = type Message (line 34) | type Message = type Command (line 57) | type Command = { function generateId (line 68) | function generateId(): string { FILE: 2025-11-05-event-driven-agents/demo/src/reducers/command-reducer.ts type CommandStateType (line 8) | type CommandStateType = { FILE: 2025-11-05-event-driven-agents/demo/src/reducers/interrupt-reducer.ts type InterruptStateType (line 7) | type InterruptStateType = { FILE: 2025-11-05-event-driven-agents/demo/src/reducers/messages-reducer.ts type MessagesStateType (line 9) | type MessagesStateType = { function estimateTokens (line 19) | function estimateTokens(text: string): number { function estimateMessageTokens (line 24) | function estimateMessageTokens(msg: Message): number { function withTokenEstimate (line 42) | function withTokenEstimate(state: MessagesStateType): MessagesStateType { function addMessage (line 50) | function addMessage(state: MessagesStateType, message: Message): Message... FILE: 2025-11-05-event-driven-agents/demo/src/reducers/types.ts type ReducerFn (line 13) | type ReducerFn = ( type Reducer (line 24) | type Reducer = { FILE: 2025-11-05-event-driven-agents/demo/src/server.ts type WebSocketData (line 21) | type WebSocketData = { type: 'main' | 'visualizer' } method fetch (line 54) | fetch(req, server) { method open (line 74) | open(ws) { method message (line 84) | async message(ws, message) { method close (line 133) | close(ws) { FILE: 2025-11-05-event-driven-agents/demo/src/services/command-executor.ts class CommandExecutor (line 10) | class CommandExecutor extends Effect.Service()('Command... function evalCode (line 83) | function evalCode(code: string): Effect.Effect { FILE: 2025-11-05-event-driven-agents/demo/src/services/command-parser.ts class CommandParser (line 12) | class CommandParser extends Effect.Service()('CommandPars... FILE: 2025-11-05-event-driven-agents/demo/src/services/command-state.ts class CommandState (line 9) | class CommandState extends Effect.Service()('CommandState', { FILE: 2025-11-05-event-driven-agents/demo/src/services/event-bus.ts type EventOfType (line 9) | type EventOfType = Extract class EventBus (line 11) | class EventBus extends Effect.Service()('EventBus', { FILE: 2025-11-05-event-driven-agents/demo/src/services/interrupt-state.ts class InterruptState (line 9) | class InterruptState extends Effect.Service()('Interrupt... FILE: 2025-11-05-event-driven-agents/demo/src/services/llm-memory-state.ts class LLMMemoryState (line 10) | class LLMMemoryState extends Effect.Service()('LLMMemory... FILE: 2025-11-05-event-driven-agents/demo/src/services/llm-service.ts class LLMService (line 13) | class LLMService extends Effect.Service()('LLMService', { FILE: 2025-11-05-event-driven-agents/demo/src/services/messages-state.ts class MessagesState (line 10) | class MessagesState extends Effect.Service()('MessagesSta... FILE: 2025-11-05-event-driven-agents/demo/src/services/ui-display-state.ts class UIDisplayState (line 19) | class UIDisplayState extends Effect.Service()('UIDisplay... FILE: 2025-11-05-event-driven-agents/demo/src/services/visualizer-sink.ts type VisualizerMessage (line 12) | type VisualizerMessage = class VisualizerSink (line 23) | class VisualizerSink extends Effect.Service()('Visualize... FILE: 2025-11-05-event-driven-agents/demo/src/services/websocket-sink.ts class WebSocketSink (line 9) | class WebSocketSink extends Effect.Service()('WebSocketSi... FILE: 2025-11-05-event-driven-agents/demo/src/shared-types.ts type UIMessage (line 8) | type UIMessage = type UIApprovalPrompt (line 47) | type UIApprovalPrompt = { type UIStatus (line 56) | type UIStatus = { type UIActions (line 64) | type UIActions = { type UIDisplayState (line 74) | type UIDisplayState = { type ClientMessage (line 84) | type ClientMessage = type ServerMessage (line 93) | type ServerMessage = { FILE: 2025-11-05-event-driven-agents/demo/src/utils/interruptible.ts function createInterruptSignal (line 33) | function createInterruptSignal( type InterruptibleResult (line 84) | type InterruptibleResult = function makeInterruptible (line 89) | function makeInterruptible( FILE: 2025-11-05-event-driven-agents/demo/src/visualizer/effect-wrapper.ts function setStateUpdateEmitter (line 17) | function setStateUpdateEmitter(emitter: (event: any) => void) { function tagRef (line 22) | function tagRef(ref: OriginalSubscriptionRef.SubscriptionRef, serv... FILE: 2025-11-05-event-driven-agents/demo/src/visualizer/registry.ts type ServiceMetadata (line 7) | type ServiceMetadata = { type StateSubscription (line 13) | type StateSubscription = { type GraphStructure (line 19) | type GraphStructure = { function registerService (line 38) | function registerService(metadata: ServiceMetadata): void { function registerStateSubscription (line 42) | function registerStateSubscription(sub: StateSubscription): void { function deriveGraph (line 46) | function deriveGraph(): GraphStructure { function getServiceRegistry (line 75) | function getServiceRegistry(): Map { FILE: 2025-11-11-dates-and-times/main.py function main (line 6) | def main(): function next_day (line 15) | def next_day(date: RecurringDate, default_timezone: str) -> datetime.dat... FILE: 2025-12-02-multimodal-evals/load_cord_dataset.py class CordDatasetLoader (line 23) | class CordDatasetLoader: method __init__ (line 28) | def __init__(self, base_dir: str | None = None): method load_dataset (line 50) | def load_dataset(self, force_reload: bool = False) -> DatasetDict: method get_dataset_info (line 83) | def get_dataset_info(self, dataset: DatasetDict) -> dict[str, Any]: method save_dataset_locally (line 111) | def save_dataset_locally(self, dataset: DatasetDict, format: str = "pa... method save_images_and_metadata (line 139) | def save_images_and_metadata(self, dataset: DatasetDict, max_samples: ... method get_sample_data (line 179) | def get_sample_data(self, dataset: DatasetDict, split: str = "train", ... function load_cord_dataset (line 201) | def load_cord_dataset(base_dir: str | None = None, force_reload: bool = ... function main (line 216) | def main(): FILE: 2025-12-02-multimodal-evals/main.py function main (line 1) | def main(): FILE: 2025-12-02-multimodal-evals/src/receipt_evaluator.py class EvaluationResult (line 27) | class EvaluationResult: class ReceiptEvaluationResult (line 37) | class ReceiptEvaluationResult: method overall_passed (line 50) | def overall_passed(self) -> bool: method pass_rate (line 55) | def pass_rate(self) -> float: class ReceiptEvaluator (line 62) | class ReceiptEvaluator: method __init__ (line 65) | def __init__(self, data_dir: str, results_dir: Optional[str] = None): method get_receipt_files (line 78) | def get_receipt_files(self) -> List[Tuple[str, str]]: method convert_to_grayscale_and_enhance (line 93) | def convert_to_grayscale_and_enhance( method extract_receipt_data (line 125) | async def extract_receipt_data(self, image_path: str) -> Tuple[bool, O... method evaluate_sum_validation (line 150) | def evaluate_sum_validation(self, data: ReceiptData) -> EvaluationResult: method evaluate_positive_values (line 204) | def evaluate_positive_values(self, data: ReceiptData) -> EvaluationRes... method evaluate_subtotal_consistency (line 245) | def evaluate_subtotal_consistency(self, data: ReceiptData) -> Evaluati... method evaluate_unit_price_accuracy (line 280) | def evaluate_unit_price_accuracy(self, data: ReceiptData) -> Evaluatio... method evaluate_grand_total_calculation (line 325) | def evaluate_grand_total_calculation(self, data: ReceiptData) -> Evalu... method evaluate_data_completeness (line 381) | def evaluate_data_completeness(self, data: ReceiptData) -> EvaluationR... method evaluate_receipt (line 419) | async def evaluate_receipt(self, image_path: str, metadata_path: Optio... method evaluate_all_receipts (line 491) | def evaluate_all_receipts(self) -> List[ReceiptEvaluationResult]: method evaluate_all_receipts_async (line 495) | async def evaluate_all_receipts_async(self, max_concurrent: int = 10) ... method get_summary_statistics (line 542) | def get_summary_statistics(self, results: List[ReceiptEvaluationResult... method save_results (line 572) | def save_results(self, results: List[ReceiptEvaluationResult], run_id:... method load_results (line 686) | def load_results(self, run_id: str) -> Tuple[List[ReceiptEvaluationRes... method list_available_runs (line 819) | def list_available_runs(self) -> List[Dict[str, Any]]: function run_evaluation_cli (line 850) | def run_evaluation_cli(data_dir: str, results_dir: Optional[str] = None,... function main (line 901) | def main(): FILE: 2025-12-02-multimodal-evals/src/run_streamlit.py function main (line 10) | def main(): FILE: 2025-12-02-multimodal-evals/src/streamlit_app.py function initialize_session_state (line 27) | def initialize_session_state(): function load_evaluation_results (line 43) | def load_evaluation_results(run_id: str): function display_run_selector (line 59) | def display_run_selector(): function display_summary_statistics (line 128) | def display_summary_statistics(): function generate_evaluation_statistics_from_results (line 176) | def generate_evaluation_statistics_from_results(): function display_evaluation_breakdown (line 216) | def display_evaluation_breakdown(): function load_multiple_runs (line 273) | def load_multiple_runs(run_ids): function get_comparison_data (line 290) | def get_comparison_data(loaded_runs, selected_metrics): function create_metric_comparison_chart (line 342) | def create_metric_comparison_chart(metric_data, metric_name): function display_run_comparison (line 384) | def display_run_comparison(): function display_detailed_results (line 538) | def display_detailed_results(): function display_receipt_result (line 587) | def display_receipt_result(result: ReceiptEvaluationResult): function main (line 757) | def main(): FILE: 2025-12-02-multimodal-evals/src/test_evaluator.py function test_basic_functionality (line 22) | def test_basic_functionality(): function test_save_load_functionality (line 74) | def test_save_load_functionality(): function test_summary_stats (line 141) | def test_summary_stats(): function main (line 184) | def main(): FILE: 2026-01-06-latency/main.py function execute_bash (line 16) | def execute_bash(tool: types.BashTool, working_dir: str) -> str: function execute_glob (line 40) | def execute_glob(tool: types.GlobTool, working_dir: str) -> str: function execute_grep (line 55) | def execute_grep(tool: types.GrepTool, working_dir: str) -> str: function execute_read (line 76) | def execute_read(tool: types.ReadTool, working_dir: str) -> str: function execute_ls (line 101) | def execute_ls(tool: types.LSTool, working_dir: str) -> str: function execute_edit (line 118) | def execute_edit(tool: types.EditTool, working_dir: str) -> str: function execute_write (line 137) | def execute_write(tool: types.WriteTool, working_dir: str) -> str: function execute_tool (line 148) | def execute_tool(tool: types.AgentTools, working_dir: str) -> str: function agent_loop (line 169) | def agent_loop(user_message: str, working_dir: str, max_iterations: int ... function main (line 216) | def main(): FILE: 2026-01-13-applying-12-factor-principles-to-coding-agent-sdks/src/assignment-workflow.ts type AssignmentLog (line 12) | interface AssignmentLog { constant LOGS_DIR (line 27) | const LOGS_DIR = "logs"; constant SESSION_TS (line 28) | const SESSION_TS = new Date().toISOString().replace(/[:.]/g, "-").slice(... constant WORKFLOW_LOG_PATH (line 29) | const WORKFLOW_LOG_PATH = `${LOGS_DIR}/assignment-workflow-${SESSION_TS}... constant EVENTS_LOG_PATH (line 30) | const EVENTS_LOG_PATH = `${LOGS_DIR}/assignment-events-${SESSION_TS}.jso... function saveWorkflowLog (line 34) | function saveWorkflowLog(workflowLog: AssignmentLog) { function logEvent (line 39) | function logEvent(event: SDKMessage) { type WorkflowOutput (line 62) | type WorkflowOutput = z.infer; function executeAssignments (line 68) | function executeAssignments(assignments: WorkflowOutput): AssignmentLog { function runAssignmentWorkflow (line 152) | async function runAssignmentWorkflow(): Promise { function main (line 243) | async function main() { FILE: 2026-01-13-applying-12-factor-principles-to-coding-agent-sdks/src/baml-parsing.ts function main (line 14) | async function main() { FILE: 2026-01-13-applying-12-factor-principles-to-coding-agent-sdks/src/chat.ts function main (line 6) | async function main() { FILE: 2026-01-13-applying-12-factor-principles-to-coding-agent-sdks/src/dashboard-agent.ts type DashboardSnapshot (line 12) | interface DashboardSnapshot { constant LOGS_DIR (line 33) | const LOGS_DIR = "logs"; constant SESSION_TS (line 34) | const SESSION_TS = new Date().toISOString().replace(/[:.]/g, "-").slice(... constant DASHBOARD_LOG_PATH (line 35) | const DASHBOARD_LOG_PATH = `${LOGS_DIR}/dashboard-snapshot-${SESSION_TS}... constant EVENTS_LOG_PATH (line 36) | const EVENTS_LOG_PATH = `${LOGS_DIR}/dashboard-events-${SESSION_TS}.jsonl`; function saveDashboardSnapshot (line 40) | function saveDashboardSnapshot(snapshot: DashboardSnapshot) { function logEvent (line 45) | function logEvent(event: SDKMessage) { type DashboardOutput (line 74) | type DashboardOutput = z.infer; function collectDashboardData (line 80) | function collectDashboardData(): DashboardSnapshot { function generateDashboard (line 133) | async function generateDashboard( function displayDashboard (line 206) | function displayDashboard(output: DashboardOutput, snapshot: DashboardSn... function main (line 258) | async function main() { FILE: 2026-01-13-applying-12-factor-principles-to-coding-agent-sdks/src/delivery-tracking-agent.ts type NotificationLog (line 13) | interface NotificationLog { type TrackingLog (line 21) | interface TrackingLog { constant LOGS_DIR (line 32) | const LOGS_DIR = "logs"; constant SESSION_TS (line 33) | const SESSION_TS = new Date().toISOString().replace(/[:.]/g, "-").slice(... constant TRACKING_LOG_PATH (line 34) | const TRACKING_LOG_PATH = `${LOGS_DIR}/delivery-tracking-${SESSION_TS}.j... constant EVENTS_LOG_PATH (line 35) | const EVENTS_LOG_PATH = `${LOGS_DIR}/tracking-events-${SESSION_TS}.jsonl`; constant NOTIFICATIONS_LOG_PATH (line 36) | const NOTIFICATIONS_LOG_PATH = `${LOGS_DIR}/notifications-${SESSION_TS}.... function saveTrackingLog (line 40) | function saveTrackingLog(trackingLog: TrackingLog) { function logEvent (line 45) | function logEvent(event: SDKMessage) { function logNotification (line 49) | function logNotification(notification: NotificationLog) { type TrackingOutput (line 111) | type TrackingOutput = z.infer; function executeProgressions (line 117) | function executeProgressions(output: TrackingOutput): TrackingLog { function runTrackingWorkflow (line 213) | async function runTrackingWorkflow(): Promise { function main (line 307) | async function main() { FILE: 2026-01-13-applying-12-factor-principles-to-coding-agent-sdks/src/demo.ts constant RED (line 30) | const RED = "\x1b[31m"; constant BOLD (line 31) | const BOLD = "\x1b[1m"; constant DEMO_CONFIG (line 37) | const DEMO_CONFIG = { function section (line 47) | function section(title: string) { function subsection (line 53) | function subsection(title: string) { function success (line 57) | function success(message: string) { function info (line 61) | function info(message: string) { function warning (line 65) | function warning(message: string) { function sleep (line 69) | function sleep(ms: number): Promise { constant MENU_ITEMS (line 77) | const MENU_ITEMS = [ constant DRIVER_NAMES (line 88) | const DRIVER_NAMES = [ constant SAMPLE_CUSTOMERS (line 99) | const SAMPLE_CUSTOMERS = [ function seedMenuItems (line 116) | function seedMenuItems(): MenuItem[] { function seedDrivers (line 129) | function seedDrivers() { function seedOrders (line 146) | function seedOrders(menuItems: MenuItem[]) { function stageSystemOverview (line 200) | async function stageSystemOverview() { function stageDataSeeding (line 221) | async function stageDataSeeding() { function stageCurrentState (line 251) | async function stageCurrentState() { function stageNextSteps (line 292) | async function stageNextSteps() { function main (line 325) | async function main() { FILE: 2026-01-13-applying-12-factor-principles-to-coding-agent-sdks/src/index.ts function main (line 4) | async function main() { FILE: 2026-01-13-applying-12-factor-principles-to-coding-agent-sdks/src/models/types.ts type MenuItem (line 60) | type MenuItem = z.infer; type Customer (line 61) | type Customer = z.infer; type DeliveryDriver (line 62) | type DeliveryDriver = z.infer; type OrderStatus (line 63) | type OrderStatus = z.infer; type OrderItem (line 64) | type OrderItem = z.infer; type Order (line 65) | type Order = z.infer; function validateMenuItem (line 71) | function validateMenuItem(data: unknown): MenuItem { function validateCustomer (line 75) | function validateCustomer(data: unknown): Customer { function validateDeliveryDriver (line 79) | function validateDeliveryDriver(data: unknown): DeliveryDriver { function validateOrder (line 83) | function validateOrder(data: unknown): Order { function createMenuItem (line 91) | function createMenuItem( function createCustomer (line 100) | function createCustomer( function createDeliveryDriver (line 109) | function createDeliveryDriver( function createOrder (line 117) | function createOrder( FILE: 2026-01-13-applying-12-factor-principles-to-coding-agent-sdks/src/order-agent.ts constant LOGS_DIR (line 23) | const LOGS_DIR = "logs"; constant SESSION_TS (line 24) | const SESSION_TS = new Date().toISOString().replace(/[:.]/g, "-").slice(... constant EVENTS_LOG_PATH (line 25) | const EVENTS_LOG_PATH = `${LOGS_DIR}/order-agent-${SESSION_TS}.jsonl`; function logEvent (line 29) | function logEvent(event: SDKMessage) { type AgentAction (line 76) | type AgentAction = z.infer; function executeAction (line 82) | function executeAction(action: AgentAction): string { function main (line 203) | async function main() { FILE: 2026-01-13-applying-12-factor-principles-to-coding-agent-sdks/src/ralph.ts constant LOOP_DELAY_MS (line 20) | const LOOP_DELAY_MS = 10000; constant SINGLE_RUN (line 21) | const SINGLE_RUN = process.argv.includes("--once"); function readStdin (line 23) | async function readStdin(): Promise { function getPrompt (line 33) | async function getPrompt(): Promise { function runOnce (line 62) | async function runOnce(prompt: string, iteration: number) { function main (line 79) | async function main() { FILE: 2026-01-13-applying-12-factor-principles-to-coding-agent-sdks/src/store/driver-store.test.ts constant TEST_FILE (line 5) | const TEST_FILE = "data/drivers-test.json"; FILE: 2026-01-13-applying-12-factor-principles-to-coding-agent-sdks/src/store/driver-store.ts constant DATA_DIR (line 13) | const DATA_DIR = "data"; constant DEFAULT_DRIVERS_FILE (line 14) | const DEFAULT_DRIVERS_FILE = `${DATA_DIR}/drivers.json`; class DriverStore (line 26) | class DriverStore { method constructor (line 30) | constructor(filePath: string = DEFAULT_DRIVERS_FILE) { method create (line 43) | create( method read (line 58) | read(id: string): DeliveryDriver | undefined { method update (line 69) | update( method delete (line 98) | delete(id: string): boolean { method list (line 111) | list(filter?: { status?: "available" | "busy" | "offline" }): Delivery... method count (line 126) | count(): number { method clear (line 134) | clear(): number { method exists (line 146) | exists(id: string): boolean { method getFirstAvailable (line 154) | getFirstAvailable(): DeliveryDriver | undefined { method save (line 164) | save(): boolean { method load (line 185) | load(): number { FILE: 2026-01-13-applying-12-factor-principles-to-coding-agent-sdks/src/store/order-store.test.ts constant TEST_FILE (line 9) | const TEST_FILE = "data/orders-test.json"; function assert (line 11) | function assert(condition: boolean, message: string) { function testOrderStore (line 17) | async function testOrderStore() { FILE: 2026-01-13-applying-12-factor-principles-to-coding-agent-sdks/src/store/order-store.ts constant DATA_DIR (line 16) | const DATA_DIR = "data"; constant DEFAULT_ORDERS_FILE (line 17) | const DEFAULT_ORDERS_FILE = `${DATA_DIR}/orders.json`; class OrderStore (line 29) | class OrderStore { method constructor (line 33) | constructor(filePath: string = DEFAULT_ORDERS_FILE) { method create (line 47) | create( method read (line 63) | read(id: string): Order | undefined { method update (line 74) | update( method delete (line 105) | delete(id: string): boolean { method list (line 118) | list(filter?: { method count (line 150) | count(): number { method clear (line 158) | clear(): number { method exists (line 170) | exists(id: string): boolean { method save (line 178) | save(): boolean { method load (line 199) | load(): number { FILE: 2026-01-13-applying-12-factor-principles-to-coding-agent-sdks/src/structured-planning-with-json.ts type WorkflowLog (line 20) | interface WorkflowLog { constant LOGS_DIR (line 32) | const LOGS_DIR = "logs"; constant SESSION_TS (line 33) | const SESSION_TS = new Date().toISOString().replace(/[:.]/g, "-").slice(... constant WORKFLOW_LOG_PATH (line 34) | const WORKFLOW_LOG_PATH = `${LOGS_DIR}/workflow-${SESSION_TS}.json`; constant EVENTS_LOG_PATH (line 35) | const EVENTS_LOG_PATH = `${LOGS_DIR}/events-${SESSION_TS}.jsonl`; function saveWorkflowLog (line 39) | function saveWorkflowLog(workflowLog: WorkflowLog) { function logEvent (line 44) | function logEvent(event: SDKMessage) { type Step1Output (line 59) | type Step1Output = z.infer; function step1DesignDiscussion (line 61) | async function step1DesignDiscussion( type Step2Output (line 161) | type Step2Output = z.infer; function step2StructureOutline (line 163) | async function step2StructureOutline( type Step3Output (line 265) | type Step3Output = z.infer; function step3WritePlan (line 267) | async function step3WritePlan(task: string, outline: Step2Output): Promi... function main (line 305) | async function main() { FILE: 2026-01-13-applying-12-factor-principles-to-coding-agent-sdks/src/structured-planning.ts type Step1Output (line 26) | type Step1Output = z.infer; function step1DesignDiscussion (line 28) | async function step1DesignDiscussion( type Step2Output (line 120) | type Step2Output = z.infer; function step2StructureOutline (line 122) | async function step2StructureOutline( type Step3Output (line 216) | type Step3Output = z.infer; function step3WritePlan (line 218) | async function step3WritePlan( function main (line 258) | async function main() { FILE: 2026-01-13-applying-12-factor-principles-to-coding-agent-sdks/src/utils.ts constant RESET (line 8) | const RESET = "\x1b[0m"; constant YELLOW (line 9) | const YELLOW = "\x1b[33m"; constant BLUE (line 10) | const BLUE = "\x1b[34m"; constant GREEN (line 11) | const GREEN = "\x1b[32m"; constant CYAN (line 12) | const CYAN = "\x1b[36m"; constant PURPLE (line 13) | const PURPLE = "\x1b[35m"; constant LIGHT_PURPLE (line 14) | const LIGHT_PURPLE = "\x1b[95m"; function printEvent (line 29) | function printEvent(msg: SDKMessage) { function createInputQueue (line 83) | function createInputQueue() { FILE: 2026-02-03-prompting-is-becoming-a-product-surface/main.py function print_result (line 11) | def print_result(result: Note, schema: dict): function main (line 33) | def main(): FILE: 2026-02-10-agentic-backpressure-deep-dive/02c-plan-mode.test.ts function getAvailableTools (line 39) | async function getAvailableTools(options: Record): Promise<... FILE: 2026-02-10-agentic-backpressure-deep-dive/03-child-process-exec.test.ts function execAsync (line 26) | function execAsync( FILE: 2026-02-17-automating-aitw/src/clip_extractor/cli.py function extract_clips (line 19) | async def extract_clips( function parse_args (line 64) | def parse_args() -> argparse.Namespace: function main (line 101) | async def main(): FILE: 2026-02-17-automating-aitw/src/deslop/core.py function deslop_document (line 6) | async def deslop_document(document: str) -> str: FILE: 2026-02-17-automating-aitw/src/email_generator/core.py function generate_email (line 7) | async def generate_email( FILE: 2026-02-17-automating-aitw/src/email_generator/generate_email.py function parse_args (line 18) | def parse_args() -> argparse.Namespace: function main (line 55) | async def main(): FILE: 2026-02-17-automating-aitw/src/luma/cli.py function parse_date (line 14) | def parse_date(date_str: str) -> date: function main (line 24) | def main(): FILE: 2026-02-17-automating-aitw/src/luma/luma_client.py class Guest (line 27) | class Guest: method from_api_response (line 45) | def from_api_response(cls, entry: dict) -> "Guest": class Event (line 80) | class Event: method clean_description (line 96) | def clean_description(self) -> str: method from_api_response (line 110) | def from_api_response(cls, entry: dict) -> "Event": class LumaClient (line 136) | class LumaClient: method __init__ (line 139) | def __init__(self, api_key: Optional[str] = None): method _get_lookback_date (line 154) | def _get_lookback_date(self, months: int = LOOKBACK_MONTHS) -> datetime: method list_events (line 169) | def list_events(self, after: Optional[datetime] = None) -> List[Event]: method get_next_ai_that_works_event (line 197) | def get_next_ai_that_works_event(self) -> Optional[Event]: method get_most_recent_ai_that_works_event (line 222) | def get_most_recent_ai_that_works_event(self) -> Optional[Event]: method get_guests (line 246) | def get_guests(self, event_id: str) -> List[Guest]: method get_most_recent_ai_that_works_event_guests (line 267) | def get_most_recent_ai_that_works_event_guests(self) -> List[Guest]: method upload_cover_image (line 279) | def upload_cover_image(self, image_path: str) -> str: method _format_slug (line 318) | def _format_slug(self, luma_url_suffix: str) -> str: method _check_slug_available (line 330) | def _check_slug_available(self, slug: str) -> bool: method _verify_tuesday (line 350) | def _verify_tuesday(self, event_date: date) -> None: method _create_event_times (line 367) | def _create_event_times(self, event_date: date) -> Tuple[datetime, dat... method create_event (line 395) | def create_event( method create_ai_that_works_event (line 467) | def create_ai_that_works_event( FILE: 2026-02-17-automating-aitw/src/luma/luma_event.py function main (line 6) | def main(): FILE: 2026-02-17-automating-aitw/src/riverside/cli.py function parse_date (line 20) | def parse_date(date_str: str) -> date: function parse_guests (line 30) | def parse_guests(guests_str: str) -> List[str]: function main (line 37) | def main(): FILE: 2026-02-17-automating-aitw/src/riverside/riverside_agent.py class SessionDetails (line 13) | class SessionDetails: class RiversideAgent (line 23) | class RiversideAgent: method __init__ (line 26) | def __init__( method __enter__ (line 58) | def __enter__(self): method __exit__ (line 65) | def __exit__(self, exc_type, exc_val, exc_tb): method page (line 73) | def page(self) -> Page: method screenshot (line 79) | def screenshot(self, name: str = "screenshot") -> str: method login (line 88) | def login(self) -> None: method _open_new_session_form (line 223) | def _open_new_session_form(self) -> None: method _click_session_option (line 267) | def _click_session_option(self) -> None: method _fill_session_name (line 311) | def _fill_session_name(self, name: str) -> None: method _fill_description (line 353) | def _fill_description(self, description: str) -> None: method _set_timezone_pst (line 401) | def _set_timezone_pst(self) -> None: method _add_session_guests (line 482) | def _add_session_guests(self, guests: List[str]) -> None: method _set_session_date (line 543) | def _set_session_date(self, target_date: datetime) -> None: method _navigate_calendar_to_month (line 577) | def _navigate_calendar_to_month(self, target_date: datetime) -> None: method _set_session_time (line 617) | def _set_session_time(self, start_datetime: datetime, duration_minutes... method _select_time_from_dropdown (line 636) | def _select_time_from_dropdown(self, x_position: int, target_time: str... method _submit_session (line 667) | def _submit_session(self) -> str: method schedule_session (line 695) | def schedule_session(self, session: SessionDetails) -> str: method invite_guests (line 732) | def invite_guests(self, guest_emails: List[str]) -> None: method run (line 900) | def run(self, session: SessionDetails) -> str: function schedule_riverside_session (line 914) | def schedule_riverside_session( FILE: 2026-02-17-automating-aitw/src/riverside/schedule_session.py function main (line 20) | def main(): FILE: 2026-02-17-automating-aitw/src/thumbnail_creation/cli.py function generate_subtitle (line 29) | async def generate_subtitle(title: str, description: str, feedback: str ... function classify_feedback (line 42) | async def classify_feedback( function create_thumbnail_with_subtitle (line 67) | def create_thumbnail_with_subtitle( function main (line 88) | async def main(): FILE: 2026-02-17-automating-aitw/src/thumbnail_creation/config.py class ThumbnailConfig (line 7) | class ThumbnailConfig: method __init__ (line 10) | def __init__(self, base_dir: Path | None = None): method get_google_api_key (line 22) | def get_google_api_key(self) -> str: method get_output_path (line 37) | def get_output_path(self, episode_number: str) -> Path: FILE: 2026-02-17-automating-aitw/src/thumbnail_creation/create_thumbnail.py function generate_icon_image (line 24) | def generate_icon_image( FILE: 2026-02-17-automating-aitw/src/thumbnail_creation/file_manager.py class FileManager (line 7) | class FileManager: method save_image (line 10) | def save_image(self, image: Image.Image, output_path: Path) -> Path: FILE: 2026-02-17-automating-aitw/src/thumbnail_creation/gemini_client.py class GeminiImageGenerator (line 7) | class GeminiImageGenerator: method __init__ (line 10) | def __init__(self, api_key: str): method generate_image (line 20) | def generate_image(self, prompt: str, base_image_base64: str) -> bytes: FILE: 2026-02-17-automating-aitw/src/thumbnail_creation/image_loader.py class ImageLoader (line 7) | class ImageLoader: method load_as_base64 (line 10) | def load_as_base64(self, image_path: Path) -> str: FILE: 2026-02-17-automating-aitw/src/thumbnail_creation/image_processor.py class ImageProcessor (line 7) | class ImageProcessor: method bytes_to_image (line 10) | def bytes_to_image(self, image_bytes: bytes) -> Image.Image: method convert_to_rgb (line 22) | def convert_to_rgb(self, image: Image.Image) -> Image.Image: method process_image_bytes (line 42) | def process_image_bytes(self, image_bytes: bytes) -> Image.Image: FILE: 2026-02-17-automating-aitw/src/thumbnail_creation/prompt_formatter.py class PromptFormatter (line 6) | class PromptFormatter: method __init__ (line 9) | def __init__(self, template_path: Path): method _load_template (line 19) | def _load_template(self) -> str: method format (line 38) | def format( FILE: 2026-02-17-automating-aitw/src/thumbnail_creation/thumbnail_service.py class ThumbnailService (line 24) | class ThumbnailService: method __init__ (line 32) | def __init__(self, config: ThumbnailConfig | None = None): method generate_thumbnail (line 49) | def generate_thumbnail( FILE: 2026-02-17-automating-aitw/src/title_suggester/core.py function extract_takeaways (line 7) | async def extract_takeaways(transcript: str) -> EpisodeTakeaways: function suggest_titles (line 19) | async def suggest_titles( FILE: 2026-02-17-automating-aitw/src/title_suggester/suggest_titles.py function parse_args (line 18) | def parse_args() -> argparse.Namespace: function main (line 49) | async def main(): FILE: 2026-02-17-automating-aitw/src/youtube/get_videos.py function main (line 9) | def main()->dict[str, str]: FILE: 2026-02-17-automating-aitw/src/youtube/youtube_client.py class Video (line 13) | class Video: method url (line 23) | def url(self) -> str: class YouTubeClient (line 28) | class YouTubeClient: method __init__ (line 31) | def __init__(self, api_key: Optional[str] = None): method _make_request (line 44) | def _make_request(self, endpoint: str, params: dict) -> dict: method get_channel_id_from_handle (line 62) | def get_channel_id_from_handle(self, handle: str) -> str: method get_recent_videos (line 88) | def get_recent_videos(self, channel_id: str, max_results: int = 3) -> ... method get_recent_videos_from_handle (line 139) | def get_recent_videos_from_handle(self, handle: str, max_results: int ... FILE: 2026-02-17-automating-aitw/tools/deslop/main.py function parse_args (line 22) | def parse_args() -> argparse.Namespace: function read_input (line 52) | def read_input(input_path: str) -> str: function write_output (line 59) | def write_output(output: str, output_file: Path | None) -> None: function main (line 71) | async def main() -> None: FILE: 2026-03-03-pii-redaction-and-sensitive-data-scrubbing/main.py function main (line 1) | def main(): FILE: 2026-03-17-prompt-injections-guardrails/main.py class CalendarEvent (line 6) | class CalendarEvent(BaseModel): FILE: 2026-04-07-sse-streaming/main.py class LinkExtractor (line 20) | class LinkExtractor(HTMLParser): method __init__ (line 23) | def __init__(self, base_url: str): method handle_starttag (line 30) | def handle_starttag(self, tag: str, attrs: list[tuple[str, str | None]]): function _fetch_url (line 38) | def _fetch_url(url: str) -> str: function generate_site_map (line 42) | async def generate_site_map(url: str) -> list[str]: function fetch_page_text (line 50) | async def fetch_page_text(url: str) -> str: function _stream_one (line 69) | async def _stream_one(url: str, queue: asyncio.Queue): function stream_summaries (line 84) | async def stream_summaries(url: str) -> AsyncGenerator[str, None]: function index (line 107) | async def index(): function summaries (line 112) | async def summaries(url: str = "https://boundaryml.com/podcast"): function main (line 120) | async def main(): FILE: 2026-04-11-unconf-sf/src/clip_finder/find.py function _find_anchor_pos (line 28) | def _find_anchor_pos(text: str, anchor: str) -> int | None: function _seconds_to_hms (line 41) | def _seconds_to_hms(seconds: float) -> str: function _compute_clip_times (line 49) | def _compute_clip_times( function parse_args (line 100) | def parse_args() -> argparse.Namespace: function main (line 119) | def main() -> None: FILE: 2026-04-11-unconf-sf/src/description_generator/generate.py function _excerpt (line 40) | def _excerpt(text: str, max_words: int = _TRANSCRIPT_WORD_LIMIT) -> str: function _deslop (line 47) | def _deslop(text: str) -> str: function _generate_batch (line 73) | def _generate_batch(b, talks_batch: list[dict]) -> dict[int, str]: function parse_args (line 92) | def parse_args() -> argparse.Namespace: function main (line 116) | def main() -> None: FILE: 2026-04-11-unconf-sf/src/generate_xposts.py function _load_segment (line 46) | def _load_segment(video_id: str, talk_number: int) -> dict: function _load_transcript (line 55) | def _load_transcript(video_id: str, filename: str) -> str: function _write_xpost (line 62) | def _write_xpost(slug: str, speaker: str, company: str, title: str, date... function parse_args (line 78) | def parse_args() -> argparse.Namespace: function main (line 93) | def main() -> None: FILE: 2026-04-11-unconf-sf/src/talk_segmenter/__init__.py function segment_transcript (line 16) | def segment_transcript( FILE: 2026-04-11-unconf-sf/src/talk_segmenter/baml_segmenter.py class BAMLSegmentationService (line 17) | class BAMLSegmentationService: method segment (line 20) | def segment(self, transcript: str) -> list[TalkSegmentData]: FILE: 2026-04-11-unconf-sf/src/talk_segmenter/enrich.py function parse_args (line 23) | def parse_args() -> argparse.Namespace: function main (line 36) | def main() -> None: FILE: 2026-04-11-unconf-sf/src/talk_segmenter/protocols.py class TalkSegmentData (line 8) | class TalkSegmentData: class SegmentationProvider (line 18) | class SegmentationProvider(Protocol): method segment (line 21) | def segment(self, transcript: str) -> list[TalkSegmentData]: FILE: 2026-04-11-unconf-sf/src/talk_segmenter/segment.py function parse_args (line 20) | def parse_args() -> argparse.Namespace: function main (line 39) | def main() -> None: FILE: 2026-04-11-unconf-sf/src/talk_segmenter/segment_writer.py function _safe_filename (line 10) | def _safe_filename(title: str) -> str: class SegmentWriter (line 18) | class SegmentWriter: method write (line 21) | def write( FILE: 2026-04-11-unconf-sf/src/talk_segmenter/speaker_extractor.py class SpeakerInfoData (line 17) | class SpeakerInfoData: class SpeakerInfoProvider (line 23) | class SpeakerInfoProvider(Protocol): method extract (line 24) | def extract(self, talk_transcript: str) -> SpeakerInfoData: ... class BAMLSpeakerExtractor (line 27) | class BAMLSpeakerExtractor: method extract (line 30) | def extract(self, talk_transcript: str) -> SpeakerInfoData: FILE: 2026-04-11-unconf-sf/src/talk_segmenter/timestamp.py function _seconds_to_hms (line 31) | def _seconds_to_hms(seconds: float) -> str: function _get_duration (line 39) | def _get_duration(audio_path: Path) -> float: function parse_args (line 55) | def parse_args() -> argparse.Namespace: function main (line 74) | def main() -> None: FILE: 2026-04-11-unconf-sf/src/talk_segmenter/timestamp_mapper.py class TimestampMapper (line 4) | class TimestampMapper: method __init__ (line 11) | def __init__(self, timed_segments: list[dict]) -> None: method find_time (line 18) | def find_time(self, anchor: str) -> float | None: method _find_pos (line 41) | def _find_pos(self, anchor: str) -> int | None: FILE: 2026-04-11-unconf-sf/src/talk_segmenter/transcript_splitter.py class AnchorNotFoundError (line 6) | class AnchorNotFoundError(ValueError): class TranscriptSplitter (line 10) | class TranscriptSplitter: method split (line 13) | def split( method _find_anchor (line 44) | def _find_anchor(self, transcript: str, anchor: str) -> int: FILE: 2026-04-11-unconf-sf/src/transcriber/__init__.py function transcribe_video (line 17) | def transcribe_video( FILE: 2026-04-11-unconf-sf/src/transcriber/audio_chunker.py class AudioChunker (line 10) | class AudioChunker: method __init__ (line 13) | def __init__( method chunk (line 21) | def chunk(self, audio_path: Path, output_dir: Path) -> list[Path]: FILE: 2026-04-11-unconf-sf/src/transcriber/audio_extractor.py class AudioExtractor (line 7) | class AudioExtractor: method extract (line 10) | def extract(self, video_path: Path, output_dir: Path) -> Path: FILE: 2026-04-11-unconf-sf/src/transcriber/protocols.py class TranscriptionProvider (line 8) | class TranscriptionProvider(Protocol): method transcribe (line 11) | def transcribe(self, audio_path: Path) -> str: FILE: 2026-04-11-unconf-sf/src/transcriber/transcribe.py function parse_args (line 22) | def parse_args() -> argparse.Namespace: function main (line 41) | def main() -> None: FILE: 2026-04-11-unconf-sf/src/transcriber/transcript_writer.py class TranscriptWriter (line 8) | class TranscriptWriter: method write (line 11) | def write( FILE: 2026-04-11-unconf-sf/src/transcriber/whisper_service.py class WhisperTranscriptionService (line 10) | class WhisperTranscriptionService: method __init__ (line 16) | def __init__(self, client: openai.OpenAI, model: str = "whisper-1") ->... method transcribe (line 20) | def transcribe(self, audio_path: Path) -> str: FILE: 2026-04-11-unconf-sf/src/xpost_generator/core.py function _excerpt (line 7) | def _excerpt(text: str, max_words: int = _TRANSCRIPT_WORD_LIMIT) -> str: function _strip_baml_logs (line 14) | def _strip_baml_logs(stdout: str) -> str: function _deslop (line 36) | def _deslop(text: str) -> str: function review_xposts (line 59) | def review_xposts(posts: list[dict]) -> dict[str, str]: function generate_xpost (line 73) | def generate_xpost(transcript: str, speaker: str, company: str, title: s... FILE: 2026-04-14-agentic-coding-for-frontend-apps/02-storybook-riptide/src/components/badge.tsx function Badge (line 26) | function Badge({ FILE: 2026-04-14-agentic-coding-for-frontend-apps/02-storybook-riptide/src/components/button.tsx function Button (line 40) | function Button({ FILE: 2026-04-14-agentic-coding-for-frontend-apps/02-storybook-riptide/src/components/card.tsx function CardHeader (line 21) | function CardHeader({ className, ...props }: React.ComponentProps<'div'>) { function CardTitle (line 34) | function CardTitle({ className, ...props }: React.ComponentProps<'div'>) { function CardDescription (line 47) | function CardDescription({ className, ...props }: React.ComponentProps<'... function CardAction (line 57) | function CardAction({ className, ...props }: React.ComponentProps<'div'>) { function CardContent (line 67) | function CardContent({ className, ...props }: React.ComponentProps<'div'... function CardFooter (line 71) | function CardFooter({ className, ...props }: React.ComponentProps<'div'>) { FILE: 2026-04-14-agentic-coding-for-frontend-apps/02-storybook-riptide/src/components/input.tsx function Input (line 5) | function Input({ className, type, ...props }: React.ComponentProps<'inpu... FILE: 2026-04-14-agentic-coding-for-frontend-apps/02-storybook-riptide/src/components/keyboard-shortcut.tsx type KeyboardShortcutProps (line 4) | interface KeyboardShortcutProps extends React.HTMLAttributes FILE: 2026-04-14-agentic-coding-for-frontend-apps/02-storybook-riptide/stories/Button.stories.tsx type Story (line 13) | type Story = StoryObj FILE: 2026-04-14-agentic-coding-for-frontend-apps/02-storybook-riptide/stories/Card.stories.tsx type Story (line 15) | type Story = StoryObj FILE: 2026-04-14-agentic-coding-for-frontend-apps/02-storybook-riptide/stories/Input.stories.tsx type Story (line 12) | type Story = StoryObj FILE: 2026-04-14-agentic-coding-for-frontend-apps/02-storybook-riptide/stories/KeyboardShortcut.stories.tsx type Story (line 13) | type Story = StoryObj FILE: 2026-04-14-agentic-coding-for-frontend-apps/03-wired-vs-pure/server.ts function seededRng (line 6) | function seededRng(seed: number) { constant FIRST_NAMES (line 15) | const FIRST_NAMES = [ constant LAST_NAMES (line 22) | const LAST_NAMES = [ constant TODO_TITLES (line 29) | const TODO_TITLES = [ constant SERVICES (line 52) | const SERVICES = [ constant ROLES (line 57) | const ROLES = ['admin', 'editor', 'viewer'] as const constant STATUSES (line 58) | const STATUSES = ['active', 'inactive', 'suspended'] as const constant TODO_STATUSES (line 59) | const TODO_STATUSES = ['pending', 'in-progress', 'completed', 'cancelled... constant PRIORITIES (line 60) | const PRIORITIES = ['low', 'medium', 'high', 'critical'] as const function generateUsers (line 62) | function generateUsers() { function generateTodos (line 91) | function generateTodos(userId: string, userIndex: number) { constant ALL_USERS (line 129) | const ALL_USERS = generateUsers() constant ALL_TODOS (line 130) | const ALL_TODOS = ALL_USERS.flatMap((u, idx) => generateTodos(u.id, idx)) constant PORT (line 185) | const PORT = 3035 FILE: 2026-04-14-agentic-coding-for-frontend-apps/03-wired-vs-pure/src/App.tsx type Tab (line 7) | type Tab = 'search' | 'table' | 'todos' function App (line 9) | function App() { FILE: 2026-04-14-agentic-coding-for-frontend-apps/03-wired-vs-pure/src/components/badge.tsx function Badge (line 26) | function Badge({ FILE: 2026-04-14-agentic-coding-for-frontend-apps/03-wired-vs-pure/src/components/button.tsx function Button (line 40) | function Button({ FILE: 2026-04-14-agentic-coding-for-frontend-apps/03-wired-vs-pure/src/components/card.tsx function CardHeader (line 23) | function CardHeader({ className, ...props }: React.ComponentProps<'div'>) { function CardTitle (line 36) | function CardTitle({ className, ...props }: React.ComponentProps<'div'>) { function CardDescription (line 49) | function CardDescription({ className, ...props }: React.ComponentProps<'... function CardAction (line 59) | function CardAction({ className, ...props }: React.ComponentProps<'div'>) { function CardContent (line 69) | function CardContent({ className, ...props }: React.ComponentProps<'div'... function CardFooter (line 73) | function CardFooter({ className, ...props }: React.ComponentProps<'div'>) { FILE: 2026-04-14-agentic-coding-for-frontend-apps/03-wired-vs-pure/src/components/input.tsx function Input (line 5) | function Input({ className, type, ...props }: React.ComponentProps<'inpu... FILE: 2026-04-14-agentic-coding-for-frontend-apps/03-wired-vs-pure/src/components/keyboard-shortcut.tsx type KeyboardShortcutProps (line 4) | interface KeyboardShortcutProps extends React.HTMLAttributes> { function DataTable (line 16) | function DataTable>({ FILE: 2026-04-14-agentic-coding-for-frontend-apps/03-wired-vs-pure/src/components/pure/TodoCard.tsx type TodoCardProps (line 7) | interface TodoCardProps { function isOverdue (line 63) | function isOverdue(todo: Todo): boolean { function TodoCard (line 69) | function TodoCard({ todo, onToggleStatus, onDelete, isDeleting, isToggli... FILE: 2026-04-14-agentic-coding-for-frontend-apps/03-wired-vs-pure/src/components/pure/UserSearchForm.tsx type UserSearchFormProps (line 10) | interface UserSearchFormProps { function UserSearchForm (line 46) | function UserSearchForm({ FILE: 2026-04-14-agentic-coding-for-frontend-apps/03-wired-vs-pure/src/components/wired/DataTableWired.tsx function DataTableWired (line 54) | function DataTableWired() { FILE: 2026-04-14-agentic-coding-for-frontend-apps/03-wired-vs-pure/src/components/wired/TodoCardWired.tsx function TodoCardWired (line 8) | function TodoCardWired({ userId }: { userId?: string }) { FILE: 2026-04-14-agentic-coding-for-frontend-apps/03-wired-vs-pure/src/components/wired/UserSearchFormWired.tsx function UserSearchFormWired (line 5) | function UserSearchFormWired() { FILE: 2026-04-14-agentic-coding-for-frontend-apps/03-wired-vs-pure/src/lib/utils.ts function cn (line 4) | function cn(...inputs: ClassValue[]) { FILE: 2026-04-14-agentic-coding-for-frontend-apps/03-wired-vs-pure/src/types.ts type User (line 1) | interface User { type Todo (line 10) | interface Todo { type Column (line 19) | interface Column { FILE: 2026-04-14-agentic-coding-for-frontend-apps/03-wired-vs-pure/stories/DataTable.stories.tsx type Story (line 67) | type Story = StoryObj FILE: 2026-04-14-agentic-coding-for-frontend-apps/03-wired-vs-pure/stories/DataTableInteractive.stories.tsx function SortableDataTable (line 55) | function SortableDataTable() { function LoadThenDisplay (line 93) | function LoadThenDisplay() { function FilterableDataTable (line 115) | function FilterableDataTable() { FILE: 2026-04-14-agentic-coding-for-frontend-apps/03-wired-vs-pure/stories/TodoCard.stories.tsx type Story (line 42) | type Story = StoryObj FILE: 2026-04-14-agentic-coding-for-frontend-apps/03-wired-vs-pure/stories/UserSearchForm.stories.tsx type Story (line 56) | type Story = StoryObj FILE: tools/luma.ts function loadEnv (line 2) | async function loadEnv() { type LumaEvent (line 19) | interface LumaEvent { class LumaClient (line 36) | class LumaClient { method constructor (line 41) | constructor() { method extractImageFromDescription (line 46) | private extractImageFromDescription(event: LumaEvent): string | undefi... method extractEventImage (line 73) | private async extractEventImage(eventUrl: string): Promise; type ValidationResult (line 34) | interface ValidationResult { type LintOptions (line 44) | interface LintOptions { function extractFrontmatter (line 50) | function extractFrontmatter(content: string): { metadata: any; hasMetada... function generateGuid (line 66) | function generateGuid(folderName: string, allFolders: string[]): string { function inferMetadata (line 93) | function inferMetadata(folderName: string, existingMetadata: any, repoRo... function createFrontmatter (line 133) | function createFrontmatter(metadata: any): string { function validateEpisodeFolder (line 140) | function validateEpisodeFolder(folderPath: string, options?: LintOptions... function findEpisodeFolders (line 247) | function findEpisodeFolders(rootPath: string): string[] { function parseArgs (line 263) | function parseArgs(): { mode: 'check' | 'fix'; repoRoot: string; help: b... function writeReadmeFile (line 295) | function writeReadmeFile(episodes: ValidationResult[], rootPath: string)... function showHelp (line 530) | function showHelp() { function main (line 560) | function main() { function escapeXml (line 674) | function escapeXml(unsafe: string): string { function generateRSSFeed (line 684) | function generateRSSFeed(episodes: ValidationResult[], rootPath: string)... function generateDataJson (line 766) | function generateDataJson(episodes: ValidationResult[], rootPath: string... FILE: tools/zoom.ts function loadEnv (line 2) | async function loadEnv() { type ZoomToken (line 19) | interface ZoomToken { type ZoomRecordingFile (line 28) | interface ZoomRecordingFile { type ZoomMeeting (line 40) | interface ZoomMeeting { type ZoomRecordingsResponse (line 48) | interface ZoomRecordingsResponse { class ZoomClient (line 53) | class ZoomClient { method constructor (line 60) | constructor() { method getAccessToken (line 66) | async getAccessToken(): Promise { method fetchRecordings (line 98) | async fetchRecordings(fromDate?: Date, toDate?: Date): Promise