Skip to content

v0.19.0

Choose a tag to compare

@fvarrui fvarrui released this 08 Oct 15:45
· 66 commits to main since this release

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 in AgentSpec.extensions, with capabilities they provides and requires; installed ones per agent or per project (extensionDirs, runExtensionCommand(), /extensions in 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's api(name); the sources' addSource()).
  • Memory of the person (memory extension, memoryDir): who the person is and how they want things done, across all their projects, kept only from what they write; tools recall, remember, forget.
  • Awareness (awareness extension, needs identity): the agent knows what it is right now. about_me reads the session live (mode after Shift+Tab, extensions and their tools, what's off and why, subagents, commands, context) and gives the agent's helpGuide; the help skill explains the chat. Every extension can read the same facts through ExtensionContext.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.asar with only asarUnpack (the kit points the CLI at the unpacked binary and its plugins).
  • The language switched on the fly: switchLanguage(), and the controller's setLanguage() reopens the session keeping the conversation.

Breaking changes

  • Extensions are enabled in the spec. knowledgeDir and sourcesDir no longer turn the knowledge base and the sources on by themselves, and knowledgeBase: false is gone: add extensions: ["sources", "knowledge"] (with the folders still in the config).
  • agent-help is gone, replaced by the awareness extension. identity and helpGuide reach the model only with extensions: [..., "awareness"]; the skill is now awareness:help, and identityPromptSection/agent-kit:agent-help no longer exist.
  • The memory's tools are recall, remember and forget.
  • 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.