Bug
keystone_render registers via the legacy pi extension shape async run(input) (extensions/render.ts). Current pi SDK and omp (pi-mono fork) both contract on execute(toolCallId, params, signal, onUpdate, ctx) (pi SDK core/extensions/types.d.ts:372). pi runtime tolerates the legacy field; omp dispatch calls definition.execute and crashes:
this.registeredTool.definition.execute is not a function
Repro
- omp 18.1.x,
omp plugin install @getpipher/keystone (v1.0.0)
- Ask the model to call
keystone_render → TypeError before args validation; skill itself discovers fine
Root cause
Registration written against an outdated pi ExtensionAPI. No omp-side shim translates legacy run for plugin-loaded tools.
Fix
Swap registration to the modern signature (execute receives params as arg 2). Live-verified under omp via omp -e extensions/render.ts: render produced screenshots + computed.json (main: oklch(97.07% 0.0026 286.28) on oklch(15.15% 0.0085 285.33), 1280×229).
Follow-up (upstream, optional)
omp's legacy-pi compat layer could map legacy run → execute for pi-era packages; would help the whole pi ecosystem load under omp.
Bug
keystone_renderregisters via the legacy pi extension shapeasync run(input)(extensions/render.ts). Current pi SDK and omp (pi-mono fork) both contract onexecute(toolCallId, params, signal, onUpdate, ctx)(pi SDK core/extensions/types.d.ts:372). pi runtime tolerates the legacy field; omp dispatch callsdefinition.executeand crashes:Repro
omp plugin install @getpipher/keystone(v1.0.0)keystone_render→ TypeError before args validation; skill itself discovers fineRoot cause
Registration written against an outdated pi ExtensionAPI. No omp-side shim translates legacy
runfor plugin-loaded tools.Fix
Swap registration to the modern signature (execute receives params as arg 2). Live-verified under omp via
omp -e extensions/render.ts: render produced screenshots + computed.json (main: oklch(97.07% 0.0026 286.28) on oklch(15.15% 0.0085 285.33), 1280×229).Follow-up (upstream, optional)
omp's legacy-pi compat layer could map legacy
run→executefor pi-era packages; would help the whole pi ecosystem load under omp.