Skip to content

Commit 9548c98

Browse files
authored
feat(marketplace): append-only registry w/ per-plugin versions (#42)
- Rename workflow input to snapshot_version (update release caller) - Enforce immutable manifests for existing plugin versions (diff on mismatch) - Preserve streamkit.pub in generated registry output - Add append-only regression test and pass --public-key for isolation
1 parent e71bcf0 commit 9548c98

File tree

18 files changed

+678
-111
lines changed

18 files changed

+678
-111
lines changed

.github/workflows/marketplace-build.yml

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ name: Marketplace Build (Reusable)
77
on:
88
workflow_call:
99
inputs:
10-
version:
11-
description: "Marketplace version (e.g., 1.2.3)"
10+
snapshot_version:
11+
description: "Marketplace snapshot version (not plugin version; used for release naming)"
1212
required: true
1313
type: string
1414
release_tag:
@@ -36,7 +36,7 @@ env:
3636
RUST_BACKTRACE: 1
3737
SHERPA_ONNX_VERSION: "1.12.17"
3838
MINISIGN_DEB_URL: "http://launchpadlibrarian.net/780165111/minisign_0.12-1_amd64.deb"
39-
MARKETPLACE_VERSION: ${{ inputs.version }}
39+
SNAPSHOT_VERSION: ${{ inputs.snapshot_version }}
4040
RELEASE_TAG: ${{ inputs.release_tag }}
4141
REGISTRY_BASE_URL: ${{ inputs.registry_base_url || 'https://streamkit.dev/registry' }}
4242

@@ -52,7 +52,7 @@ jobs:
5252
- name: Install system dependencies
5353
run: |
5454
sudo apt-get update
55-
sudo apt-get install -y cmake pkg-config libclang-dev wget libopenblas-dev zstd patchelf python3-yaml
55+
sudo apt-get install -y cmake pkg-config libclang-dev wget libopenblas-dev zstd patchelf python3-yaml python3-tomli
5656
5757
- name: Install minisign
5858
run: |
@@ -146,10 +146,9 @@ jobs:
146146
147147
- name: Build registry artifacts
148148
run: |
149-
VERSION="${MARKETPLACE_VERSION#v}"
150149
python3 scripts/marketplace/build_registry.py \
151150
--plugins marketplace/official-plugins.json \
152-
--version "${VERSION}" \
151+
--existing-registry docs/public/registry \
153152
--bundle-base-url "https://github.com/${{ github.repository }}/releases/download/${RELEASE_TAG}" \
154153
--registry-base-url "${REGISTRY_BASE_URL}" \
155154
--bundles-out dist/bundles \

.github/workflows/marketplace-release.yml

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@ name: Marketplace Release
77
on:
88
workflow_dispatch:
99
inputs:
10-
version:
11-
description: "Marketplace version (e.g., 1.2.3)"
10+
snapshot_version:
11+
description: "Marketplace snapshot version (e.g., 1.2.3, 0.2.0-dev)"
1212
required: true
1313
release_tag:
14-
description: "Release tag (defaults to marketplace-v<version>)"
14+
description: "Release tag (defaults to marketplace-v<snapshot_version>)"
1515
required: false
1616
prerelease:
1717
description: "Mark release as prerelease"
@@ -20,7 +20,7 @@ on:
2020
default: false
2121

2222
env:
23-
RELEASE_TAG: ${{ inputs.release_tag || format('marketplace-v{0}', inputs.version) }}
23+
RELEASE_TAG: ${{ inputs.release_tag || format('marketplace-v{0}', inputs.snapshot_version) }}
2424

2525
jobs:
2626
marketplace:
@@ -30,8 +30,8 @@ jobs:
3030
pull-requests: write
3131
secrets: inherit
3232
with:
33-
version: ${{ inputs.version }}
34-
release_tag: ${{ inputs.release_tag || format('marketplace-v{0}', inputs.version) }}
33+
snapshot_version: ${{ inputs.snapshot_version }}
34+
release_tag: ${{ inputs.release_tag || format('marketplace-v{0}', inputs.snapshot_version) }}
3535

3636
create-release:
3737
name: Create Marketplace Release
@@ -52,11 +52,11 @@ jobs:
5252
with:
5353
tag_name: ${{ env.RELEASE_TAG }}
5454
target_commitish: ${{ github.sha }}
55-
name: "Marketplace ${{ inputs.version }}"
55+
name: "Marketplace ${{ inputs.snapshot_version }}"
5656
files: |
5757
artifacts/**/marketplace-bundles/*.tar.zst
5858
body: |
59-
Marketplace bundles for version `${{ inputs.version }}`.
59+
Marketplace bundles for snapshot `${{ inputs.snapshot_version }}`.
6060
draft: false
6161
prerelease: ${{ inputs.prerelease }}
6262
env:

.github/workflows/release.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ jobs:
8787
pull-requests: write
8888
secrets: inherit
8989
with:
90-
version: ${{ github.ref_name }}
90+
snapshot_version: ${{ github.ref_name }}
9191
release_tag: ${{ github.ref_name }}
9292

9393
create-release:

AGENTS.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ When making a plugin official and downloadable from the registry, update all of
3939
the following:
4040

4141
- Plugin source under `plugins/native/<id>/` (crate metadata + README).
42-
- Plugin metadata in `plugins/native/<id>/marketplace.yml` (id, entrypoint,
42+
- Plugin metadata in `plugins/native/<id>/plugin.yml` (id, version, entrypoint,
4343
artifact path, models, licenses, homepage/repo).
4444
- Generate `marketplace/official-plugins.json` with
4545
`scripts/marketplace/generate_official_plugins.py` and commit the result.

marketplace/PORTABILITY_REVIEW.md

Lines changed: 0 additions & 29 deletions
This file was deleted.

marketplace/official-plugins.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
{
44
"id": "helsinki",
55
"name": "Helsinki",
6+
"version": "0.1.0",
67
"node_kind": "helsinki",
78
"kind": "native",
89
"entrypoint": "libhelsinki.so",
@@ -41,6 +42,7 @@
4142
{
4243
"id": "kokoro",
4344
"name": "Kokoro",
45+
"version": "0.1.0",
4446
"node_kind": "kokoro",
4547
"kind": "native",
4648
"entrypoint": "libkokoro.so",
@@ -67,6 +69,7 @@
6769
{
6870
"id": "matcha",
6971
"name": "Matcha",
72+
"version": "0.1.0",
7073
"node_kind": "matcha",
7174
"kind": "native",
7275
"entrypoint": "libmatcha.so",
@@ -93,6 +96,7 @@
9396
{
9497
"id": "nllb",
9598
"name": "NLLB",
99+
"version": "0.1.0",
96100
"node_kind": "nllb",
97101
"kind": "native",
98102
"entrypoint": "libnllb.so",
@@ -118,6 +122,7 @@
118122
{
119123
"id": "piper",
120124
"name": "Piper",
125+
"version": "0.1.0",
121126
"node_kind": "piper",
122127
"kind": "native",
123128
"entrypoint": "libpiper.so",
@@ -158,6 +163,7 @@
158163
{
159164
"id": "sensevoice",
160165
"name": "SenseVoice",
166+
"version": "0.1.0",
161167
"node_kind": "sensevoice",
162168
"kind": "native",
163169
"entrypoint": "libsensevoice.so",
@@ -198,6 +204,7 @@
198204
{
199205
"id": "vad",
200206
"name": "VAD",
207+
"version": "0.1.0",
201208
"node_kind": "vad",
202209
"kind": "native",
203210
"entrypoint": "libvad.so",
@@ -224,6 +231,7 @@
224231
{
225232
"id": "whisper",
226233
"name": "Whisper",
234+
"version": "0.1.1",
227235
"node_kind": "whisper",
228236
"kind": "native",
229237
"entrypoint": "libwhisper.so",
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
id: helsinki
22
name: Helsinki
3+
version: 0.1.0
34
node_kind: helsinki
45
kind: native
56
entrypoint: libhelsinki.so
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
id: kokoro
22
name: Kokoro
3+
version: 0.1.0
34
node_kind: kokoro
45
kind: native
56
entrypoint: libkokoro.so
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
id: matcha
22
name: Matcha
3+
version: 0.1.0
34
node_kind: matcha
45
kind: native
56
entrypoint: libmatcha.so
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
id: nllb
22
name: NLLB
3+
version: 0.1.0
34
node_kind: nllb
45
kind: native
56
entrypoint: libnllb.so

0 commit comments

Comments
 (0)