Skip to content

Repository files navigation

HALDiSh Plugins

Ready-made example plugins for the HALDiSh Kotlin Multiplatform HAL client. Each is an independent module, published to Maven Central.

Module Pattern Artifact
api-key KMP (commonMain) com.helpchoice.nahal-plugins:haldish-plugin-api-key
bearer-token Per-platform com.helpchoice.nahal-plugins:haldish-plugin-bearer-token
base-url-rewriter Per-platform com.helpchoice.nahal-plugins:haldish-plugin-base-url-rewriter
chain KMP (combinator) com.helpchoice.nahal-plugins:haldish-plugin-chain
curie KMP (preLink) com.helpchoice.nahal-plugins:haldish-plugin-curie
logger KMP + expect/actual file I/O com.helpchoice.nahal-plugins:haldish-plugin-logger

Each module's own README.md documents its configuration and hooks.

Targets

JVM, JS (IR), WasmJS, Linux (x64/arm64), macOS (x64/arm64), iOS (x64/arm64/simulator-arm64), Windows (mingwX64) — the same target set as the library.

How a plugin is loaded

Two independent mechanisms, and every module here ships for both:

  1. HALDiSh platform discovery — JVM ServiceLoader (META-INF/services/com.helpchoice.nahal.haldish.plugin.HaldishPlugin) or HALDISH_PLUGIN_PATH pointing at a jar; on native, dlopen of libhaldish_plugin.* resolving the haldish_plugin_* C symbols.
  2. NaHAL declarative configHALDISH_CONFIG (JSON/YAML) or window.__nahalConfig, keyed by the plugin's fully-qualified class name. This bypasses mechanism 1 entirely.

See ../nahal/PLUGIN_CONTRACT.md for the authoritative contract.

Building

./gradlew build                    # all modules, all host-buildable targets
./gradlew :curie:jvmTest           # one module's JVM tests
./gradlew stagePluginArtifacts     # JVM jars + native shared libs into build/release (no upload)

Publishing: ./gradlew publishToMavenCentral (signing required).

Dependencies on sibling repositories

haldish comes from HALDiSh_KMP; nahal-ui / nahal-core come from NaHAL and are used only by the demo runners (jvmRun, and chain's macOS app binary) — never by the published plugin klibs. Until those projects publish 2.0.0 to Central, settings.gradle.kts resolves them from mavenLocal(); see CLAUDE.md for the cold-start order.

License

Apache-2.0 — see LICENSE.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages