feat(zcode-plugin-langfuse): add Langfuse observability plugin - #11
Open
erlinerd wants to merge 8 commits into
Open
feat(zcode-plugin-langfuse): add Langfuse observability plugin#11erlinerd wants to merge 8 commits into
erlinerd wants to merge 8 commits into
Conversation
Align with the source repository rename (erlinerd/zcode-plugin-langfuse): - plugins/langfuse-observability -> plugins/zcode-plugin-langfuse - plugin name, marketplace entry, and in-code identifiers - version 0.1.1 -> 0.2.0 (plugin id change is breaking for installed copies)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds
zcode-plugin-langfuse, a community ZCode Hook plugin that sends onefail-open Langfuse trace named
ZCode Turnper completed turn.Stopand reads only fields delivered by ZCodeHook stdin.
do not block ZCode.
size-bounded.
Update: unified rename (this push)
All identifiers are now unified as
zcode-plugin-langfuseto match the renamedsource repository:
plugins/zcode-plugin-langfusezcode-plugin-langfuse0.2.0(the plugin id change was breaking forpreviously installed copies). Current version:
0.2.1.python3 scripts/validate.pyreportsOK: 20 plugin(s) validated; the 95-test suite passes with 8 expectedskips;
git diff --checkis clean.Marketplace registration
plugins/zcode-plugin-langfuse0.2.1developer-tools.zcode-plugin/plugin.jsonnames, descriptions,localized descriptions, and versions are aligned.
dist/hooks/entry.mjs,generated and verified by the plugin repository's unified distribution build
(
npm run package:plugin); the bundle carries a plain-textGenerated by npm run buildprovenance marker.Review fixes
options are selected only for the exact
ZCODE_PLUGIN_ID.max_capture_chars.reads, local state writes, HTTPS network access, command-execution boundaries,
and transcript/privacy boundaries.
THIRD_PARTY_NOTICES.mdidentifieslangfuse3.38.20,langfuse-core3.38.20, andmustache4.2.0, all MIT-licensed, withprovenance links.
Provenance and side effects
langfuseJavaScript SDK, so the catalogcopy needs no runtime npm install; it talks to the same Langfuse HTTPS
ingestion API through Node's built-in
fetch.telemetry publishing.
ZCODE_PLUGIN_DATAwhenavailable, or the ZCode plugin data fallback; state is cleaned up after a
completed
Stop.nodewith the current user's permissions. Theplugin does not spawn a shell or execute user commands.
are included.
Verification
From the repository root:
python3 scripts/validate.py python3 scripts/build_dist.py git diff --check python3 -m unittest discover -s tests -p 'test_*.py'Results after the review-fix commit:
zcode-plugin-langfuse@0.2.1.node --check.{}and left zero state filesafter
Stop, including a fail-open network-error smoke test.Langfuse API returned HTTP 200, the resulting
ZCode Turncontained oneassistant generation and 18 tool spans, and the local state was cleaned up.
The test did not expose credentials, prompts, tool payloads, or transcripts.
(Runtime smoke evidence was gathered on the pre-rename code; the rename
changes identifiers only and was re-validated as described above.)
Update: catalog-ready bundle layout (2026-09-13)
This PR now ships the complete plugin directory exactly as generated by the
source repository's unified distribution build (
npm run package:plugin):plugins/zcode-plugin-langfuse/mirrorsartifacts/plugin-layout/plugins/zcode-plugin-langfuse/byte-for-byte(verified with
diff -r), replacing the earlier hand-copied readable-JSsnapshot. The entry point is the self-contained
dist/hooks/entry.mjsbundle declared by
hooks/hooks.json.catalog already ships a sealed build artifact for mimosa 1.0.3
(
payload/, ~6.2 MB) and the officialscripts/validate.pyaccepts it.The bundle marker traces it back to the tagged source release v0.2.1 in
https://github.com/erlinerd/zcode-plugin-langfuse. The earlier
"generated bundles ... are not committed" statement above is withdrawn; it
described the previous source-snapshot layout.
scripts/sync-catalog.mjsin the source repository,which validates the layout, mirrors the plugin directory, and updates the
marketplace entry; repeated runs are verified no-ops.
python3 scripts/validate.pyreportsOK: 20 plugin(s) validated;git diff --checkis clean; the layout andthe fork directory compare byte-identical. No credentials, prompts,
transcripts, or Hook payloads are included.