Skip to main content
Glama
AgentChatLaunchPolicyTests.swift2.92 kB
import Testing @testable import PeekabooCLI @Suite("Agent Chat Launch Policy", .tags(.safe)) struct AgentChatLaunchPolicyTests { private let policy = AgentChatLaunchPolicy() private func makeCaps( interactive: Bool = true, piped: Bool = false, ci: Bool = false ) -> TerminalCapabilities { TerminalCapabilities( isInteractive: interactive, supportsColors: true, supportsTrueColor: false, width: 80, height: 24, termType: "xterm-256color", isCI: ci, isPiped: piped ) } @Test("Chat flag forces interactive with initial prompt") func chatFlagOverrides() { let strategy = self.policy.strategy( for: AgentChatLaunchContext( chatFlag: true, hasTaskInput: false, listSessions: false, normalizedTaskInput: "hello", capabilities: self.makeCaps() ) ) if case let .interactive(initialPrompt) = strategy { #expect(initialPrompt == "hello") } else { Issue.record("Expected interactive strategy") } } @Test("Task input skips auto chat") func taskInputDisablesChat() { let strategy = self.policy.strategy( for: AgentChatLaunchContext( chatFlag: false, hasTaskInput: true, listSessions: false, normalizedTaskInput: "task", capabilities: self.makeCaps() ) ) #expect(strategy == .none) } @Test("Interactive terminal defaults to chat") func interactiveDefaultsToChat() { let strategy = self.policy.strategy( for: AgentChatLaunchContext( chatFlag: false, hasTaskInput: false, listSessions: false, normalizedTaskInput: nil, capabilities: self.makeCaps() ) ) #expect(strategy == .interactive(initialPrompt: nil)) } @Test("CI or piped output shows help only") func nonInteractiveShowsHelp() { let piped = self.policy.strategy( for: AgentChatLaunchContext( chatFlag: false, hasTaskInput: false, listSessions: false, normalizedTaskInput: nil, capabilities: self.makeCaps(interactive: false, piped: true) ) ) #expect(piped == .helpOnly) let ci = self.policy.strategy( for: AgentChatLaunchContext( chatFlag: false, hasTaskInput: false, listSessions: false, normalizedTaskInput: nil, capabilities: self.makeCaps(ci: true) ) ) #expect(ci == .helpOnly) } }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/steipete/Peekaboo'

If you have feedback or need assistance with the MCP directory API, please join our Discord server