MADEMath · AI · Design · Engineering
Microsoft Office of the CTO
Amplifier Smart Tools

Amplifier Smart Tools / Specification

Packaging

How a smart tool is published, installed, and launched.

Installation

Every smart tool installs from a git repository. That is the one method a tool must support, and it is what lets a tool be used before it is published anywhere.

Publishing to an ecosystem registry is optional. An install script is permitted where setup is more than placing a package: provisioning a runtime, compiling a native component, installing system prerequisites. Such a script installs the tool and nothing else.

Ecosystem and runner

Two facts describe how a published tool is obtained and started:

ecosystem   where the package comes from      pypi, npm, cargo, oci, go, ...
runner      how it is started once obtained   uvx, npx, docker

Both are open vocabularies and the values above are examples. runner is absent where the ecosystem installs a binary onto the path.

The descriptor

smart-tool.json, at the distribution root. A directory holding one is a distribution root.

Where the manifest sits and how the tool is started both follow from the ecosystem, so neither can be derived by inspecting the distribution. The descriptor states them:

{
  "manifest": "src/my_smart_tool/SMART_TOOL.md",
  "cli_argv": ["my-smart-tool"],
  "deterministic_smoke": ["manifest"]
}
manifest              required. Path to SMART_TOOL.md, relative to this file.
cli_argv              required. The argv prefix that starts the tool's CLI.
deterministic_smoke   a capability that runs with no provider configured.

Nothing about the tool itself appears here. Its name, version, and prerequisites live in the manifest, so the two cannot disagree. cli_argv resolves to a build of the distribution it sits in.

A descriptor bounds a distribution. Everything under the root belongs to that tool except what falls under a nested descriptor, so a repository may vendor another tool's tree without either becoming ambiguous.