Skip to content

v0.23.0

Choose a tag to compare

@fvarrui fvarrui released this 17 Oct 10:52
· 17 commits to main since this release

Extensions now say what they let an agent do, and what they need on the computer. See Extensions and Programs it needs.

New features

  • Capabilities described for the person (#62). metadata["agent-kit"].capabilities lists what the agent can do with an extension: each one's skills and tools together, with a label and description per language. /extensions, about_me, extension info and the catalog show them (the chat controller's entries, Captain Whiskers' drawer, a marketplace's catalog.json), and the catalog's search matches them. A capability's id counts as provided, so requires gates on it as before; give it a neutral id (lms-grading) so skills depend on what can be done, not on which extension does it. Installing refuses a capability naming a skill the extension lacks; /extensions says when a capability's tool isn't offered by its running server.
  • The programs an extension needs (#63). metadata["agent-kit"].requirements declares programs the person installs (Docker, ffmpeg…): how to check the version, how to install it per system, and the capabilities that need it. The kit checks them when a session opens (a bare name on the PATH, run only with option arguments, no shell, a timeout) and never installs them. One the whole extension needs keeps it off with the install command for this system; one only some capabilities need keeps just those off (not provided, their skills left out), and the agent says what to install. extension add, /extensions install and the chat controller say what's missing; the catalog shows "Needs Docker".
  • New exports: describeCapability(), checkRequirements(), and the types ExtensionCapability, CapabilityText, DescribedCapability, AboutExtension, UnavailableCapability, ExtensionRequirement, RequirementCheck.
  • @falkenslab/agent-kit-catalog 0.2.0 writes and checks capabilities and requirements in catalog.json; both schemas in schemas/ describe them.

Breaking changes

  • needs is gone. Declare requirements instead: "needs": ["docker"] becomes "requirements": [{ "name": "Docker", "program": "docker", "install": { "url": "https://docs.docker.com/get-docker/" } }].
  • addExtension(), installFromMarketplace() and installExtension() also return missing: what the extension needs and this computer lacks, as sentences to show the person.
  • ResolvedExtensions.active entries carry unavailable, and ExtensionsStatus.about entries are AboutExtension (with capabilities, unavailable and servers); SessionFacts' active extensions carry capabilities and unavailable.

Internal

  • Two tests that failed at random under the whole suite's load now wait for what they check instead of a fixed time.

Captain Whiskers

Captain Whiskers 0.4.0, the example agent built on agent-kit 0.23.0, as a Windows app: download the installer. It's unsigned, so SmartScreen warns about it; it asks for a Claude key on first start and keeps everything in ~/.captain-whiskers. New: his jokebook (1.3.0) declares its capabilities, "Pirate jokes" and "Ranking jokes", which /extensions and the drawer show in his language; the drawer's details also say what an extension needs on the computer. An installed jokebook shows an update to 1.3.0.