Repository navigation
v0.19.0
Extensions, a memory of the person, self-awareness, and everything a graphical host needs: the controller, packaging in Electron, the language switched on the fly. And from now on, Captain Whiskers as a Windows app with every release.
Try it: Captain Whiskers 0.1.0
The kit's example agent, a retired pirate cat who tells jokes and learns from your documents, built on agent-kit 0.19.0, as a Windows app: download Captain-Whiskers-Setup-0.1.0.exe below. Everything is inside, the Claude CLI included. It's unsigned, so SmartScreen warns about it; it asks for a Claude key on first start and keeps everything in ~/.captain-whiskers, shared with his terminal and browser faces.
New features
- Extensions (guide): what an agent runs with besides the core. The kit's own (
awareness,sources,knowledge,memory) and the agent's, enabled inAgentSpec.extensions, with capabilities theyprovidesandrequires; installed ones per agent or per project (extensionDirs,runExtensionCommand(),/extensionsin the chat), locked by hash and run through a launcher with a clean environment. Any Claude Code plugin is an installable extension as it is. An extension labels its own tools in the chat, a plugin's subagents are registered like the agent's own, and an extension can hand the host an API (buildSessionOptions().apis, the controller'sapi(name); the sources'addSource()). - Memory of the person (
memoryextension,memoryDir): who the person is and how they want things done, across all their projects, kept only from what they write; toolsrecall,remember,forget. - Awareness (
awarenessextension, needsidentity): the agent knows what it is right now.about_mereads the session live (mode after Shift+Tab, extensions and their tools, what's off and why, subagents, commands, context) and gives the agent'shelpGuide; thehelpskill explains the chat. Every extension can read the same facts throughExtensionContext.session()(SessionFacts). - A chat controller without an interface (
createChatController()): the chat's logic as plain state and actions, for a desktop app or a server; the terminal chats are its views. Commands with descriptions (commandDetails),newConversation(),setExtension(),setLanguage(language, { note }). - Packaged in Electron: an agent runs from
app.asarwith onlyasarUnpack(the kit points the CLI at the unpacked binary and its plugins). - The language switched on the fly:
switchLanguage(), and the controller'ssetLanguage()reopens the session keeping the conversation.
Breaking changes
- Extensions are enabled in the spec.
knowledgeDirandsourcesDirno longer turn the knowledge base and the sources on by themselves, andknowledgeBase: falseis gone: addextensions: ["sources", "knowledge"](with the folders still in the config). - agent-help is gone, replaced by the
awarenessextension.identityandhelpGuidereach the model only withextensions: [..., "awareness"]; the skill is nowawareness:help, andidentityPromptSection/agent-kit:agent-helpno longer exist. - The memory's tools are
recall,rememberandforget. - Moved modules: the knowledge base and the sources live under
extensions/; imports from the package root are unchanged.
Internal
- The terminal chats are views of the controller; the knowledge base and the sources became internal extensions.
- Captain Whiskers runs in a terminal, a browser and as a desktop app, all on
~/.captain-whiskers, and his installer is now part of each release.