Skip to main content

limescape-plugin-sdk

The only contract between the Limescape AI Platform and node-type plugins in limescape-ai-plugins. Plugins import this package (plus their own declared dependencies) and never the platform itself.

A node type

src/node-types/<code>/
├── node-type.yaml     # manifest: the single source of metadata
├── node.py            # async def execute(ctx, inp)
├── i18n/nl.json       # translations (nl and en are required)
├── i18n/en.json
├── icon.svg           # optional; otherwise a Lucide name in the manifest
├── README.md
└── tests/
    ├── test_node.py
    └── golden/*.yaml  # required when the plugin takes over a builtin type
from limescape_plugin_sdk import NodeContext, NodeInput


async def execute(ctx: NodeContext, inp: NodeInput):
    response = await ctx.http.request("GET", inp.require_param("endpoint_url"))
    response.raise_for_status()
    yield {inp.output_key: response.json()}
  • inp.params is flattened and {{ variables }} are resolved; keys are the field names from the manifest. A field with resolve_variables: false keeps its original value after variable validation, for plugins applying their own template renderer.
  • Yield a dict or a list of dicts; everything must be JSON-serialisable.
  • Raising an exception produces [{"error": "<message>"}], exactly like the builtin node types.
  • Only capabilities declared under capabilities: are granted (log and trace always are).

Tooling

limescape-plugin validate [--check-imports]   # manifests, code, i18n, icons
limescape-plugin compat [--against <previous meta archive>]
limescape-plugin requirements                 # merged requirements for the lock
limescape-plugin build --version 1.4.2 --lock bundle.lock --wheels wheels/
limescape-plugin golden                       # replay golden cases
limescape-plugin schema                       # JSON Schema of node-type.yaml

limescape_plugin_sdk.testing provides FakeContext, run_node and the golden-case runner for unit tests.

Versioning

Independent semver, not tied to the platform version. While the SDK is 0.x a platform only runs bundles locked to the same minor version and not newer than its own SDK (versioning.is_bundle_sdk_supported).

SDK 0.2 additions

Declare capabilities: [websearch] to call await ctx.websearch.search(query, parameters={"num": 5}). The platform returns the Google Custom Search JSON response and supplies its configured credentials; plugins never receive the platform search key. FakeContext(websearch_responses=[...]) and golden cassettes support the same contract.

io.input_keys_validation defaults to platform. Set it to plugin only when the node must choose between alternative legacy inputs; the plugin then checks its selected keys. Required io.input_data keys are always platform-validated. Switching this field back to platform is a breaking manifest change.

ctx.trace.event(name, data) creates a child event in the current node trace. input_keys is available in inp.params; output routing remains in inp.output_key.

SDK 0.1 bundles do not run on an SDK 0.2 platform. Upgrade the platform and build all node types against 0.2 together before the first publication.

Licence

Copyright (c) 2026 TrueLime.

Licensed under the European Union Public Licence v. 1.2 (EUPL-1.2).

SDK 0.2.2 credential selection and categories

await ctx.credentials.resolve(reference, mode="team", expected_type="...", oauth2=False) adds exact type-checked selection. Modes: team for a saved team code, personal for a saved personal code shared with every caller of the configured flow, and personal_type for the executing person's active credential of the selected type. The platform binds execution team and identity (user_id, user_email, email); plugins cannot override that scope. Missing, conflicting or ambiguous selections fail without falling back to another credential. The returned Credential includes its resolved instance reference, type name and values.

oauth2=True currently supports googleTagManagerOAuth2Api only. The platform refreshes and persists Google tokens; the plugin receives only accessToken and optional accountId/containerId/workspaceId. Other providers need their own platform implementation. get() retains its legacy team-only behavior.

For tests, use FakeContext(credential_resolver=handler), where handler accepts reference, mode, expected_type, oauth2 and returns a Credential or its dictionary representation. Legacy fake credential dictionaries do not implement personal resolution. Real authorization and token lifecycle require platform tests.

Category marketing_analytics adds the Marketing & Analytics palette group. The matching platform category and frontend translation must be deployed too.

This is an additive 0.2.x update: older 0.2.x bundles remain compatible. Publish this SDK and deploy its platform implementation before activating a bundle that uses resolve(). A newer SDK wheel alone does not implement the platform handler.

Release files for limescape-plugin-sdk 0.2.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for limescape-plugin-sdk 0.2.2
File Size Uploaded
limescape_plugin_sdk-0.2.2.tar.gz 42.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for limescape-plugin-sdk 0.2.2
File Interpreter ABI Platform
limescape_plugin_sdk-0.2.2-py3-none-any.whl Python 3 none any Details

Total release size: 86.2 kB

Release files / limescape_plugin_sdk-0.2.2.tar.gz

Download URL limescape_plugin_sdk-0.2.2.tar.gz
Size 42.6 kB
Tags Source
SHA-256 checksum
How to use checksums
812490841a588c23f996f8470532e0679f643ab276b292c9736f673d3bbc5412
BLAKE2b-256 checksum
How to use checksums
60105d62343085ea3a6b9a46dd6862392cf2aafdb2ba4fae88caa7c5e5ce7176
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.5

Release files / limescape_plugin_sdk-0.2.2-py3-none-any.whl

Download URL limescape_plugin_sdk-0.2.2-py3-none-any.whl
Size 43.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c2c990333e848f1028e9f99a8813989e004819e02dc5f70633ecf83919474a86
BLAKE2b-256 checksum
How to use checksums
dddfe6d1105675586c1321ba8335386835d9f5f86016fdb76296df2bb46fe0c0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.5

Release history Release notifications | RSS feed

This release

0.2.2 This release

2 release files

0.2.1

2 release files

0.2.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page