{"_id":"@zyntax/extension-sdk","_rev":"33-12d44e289ac19883220a0193fe6ab801","name":"@zyntax/extension-sdk","dist-tags":{"latest":"1.0.32"},"versions":{"1.0.0":{"name":"@zyntax/extension-sdk","version":"1.0.0","keywords":["zyntax","extension","sdk"],"author":{"name":"amitkhare"},"license":"MIT","_id":"@zyntax/extension-sdk@1.0.0","maintainers":[{"name":"amitkhare","email":"amit@khare.co.in"}],"homepage":"https://github.com/amitkhare/zyntax-app/tree/main/packages/extension-sdk#readme","bugs":{"url":"https://github.com/amitkhare/zyntax-app/issues"},"dist":{"shasum":"52c34d3a65a7c799561c71d0d94f7bb5853fdacb","tarball":"https://registry.npmjs.org/@zyntax/extension-sdk/-/extension-sdk-1.0.0.tgz","fileCount":61,"integrity":"sha512-lSOUImef1ZQfkaE2iPS2l38nxMeYtovEhZERmfU5LUTGNnLK92lwd5uMNJquWifRTAcfXNmF7Y+YLyIxqMskPg==","signatures":[{"sig":"MEQCICji3WNjY/OxNakC3VCEOKdZ4v2XTFHTVi2H0ZujGR3vAiAst5RoxLD1Dwc0EYGIdVIIe6F0Tymve/RcUIXV0Zyjeg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":226484},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./capabilities":{"types":"./dist/capabilities.d.ts","import":"./dist/capabilities.js"},"./provider-methods":{"types":"./dist/providerMethods.d.ts","import":"./dist/providerMethods.js"},"./manifest-constants":{"types":"./dist/manifestConstants.d.ts","import":"./dist/manifestConstants.js"}},"gitHead":"d778d7c3b23bbfcf44d0381025e9db6d05deef9b","scripts":{"test":"vitest run --config ./vitest.config.ts","build":"node ./scripts/build.mjs","prepare":"npm run build","typecheck":"tsc --noEmit -p ./tsconfig.json"},"_npmUser":{"name":"amitkhare","email":"amit@khare.co.in"},"repository":{"url":"git+https://github.com/amitkhare/zyntax-app.git","type":"git","directory":"packages/extension-sdk"},"_npmVersion":"11.4.2","description":"Canonical public contracts and authoring helpers for Zyntax extensions.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"4.1.10","typescript":"5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/extension-sdk_1.0.0_1787716333099_0.020365363213379117","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@zyntax/extension-sdk","version":"1.0.1","keywords":["zyntax","extension","sdk"],"author":{"name":"amitkhare"},"license":"MIT","_id":"@zyntax/extension-sdk@1.0.1","maintainers":[{"name":"amitkhare","email":"amit@khare.co.in"}],"homepage":"https://github.com/amitkhare/zyntax-extension-sdk#readme","bugs":{"url":"https://github.com/amitkhare/zyntax-extension-sdk/issues"},"dist":{"shasum":"8727c6cb9e9a1cafabaa7d1a2306e5082324f0d5","tarball":"https://registry.npmjs.org/@zyntax/extension-sdk/-/extension-sdk-1.0.1.tgz","fileCount":61,"integrity":"sha512-gqQpjLHZ/Wab0I/A5QMDVFtc2lc1jnB6lPMbBBJxhbOyE/t0U077fpLaDBrtlDyN7/NBXlt23BHBjw5ycruQUA==","signatures":[{"sig":"MEQCIHIpa03xwtxNQ6rqsHR+EZDK3V13YR2/Vo4MNZS9szPiAiAepcc399Grqkt6qBYdrSIGUZa7UoTDMGVk3Z52Yac1lg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":226438},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./capabilities":{"types":"./dist/capabilities.d.ts","import":"./dist/capabilities.js"},"./provider-methods":{"types":"./dist/providerMethods.d.ts","import":"./dist/providerMethods.js"},"./manifest-constants":{"types":"./dist/manifestConstants.d.ts","import":"./dist/manifestConstants.js"}},"gitHead":"d778d7c3b23bbfcf44d0381025e9db6d05deef9b","scripts":{"test":"vitest run --config ./vitest.config.ts","build":"node ./scripts/build.mjs","prepare":"npm run build","typecheck":"tsc --noEmit -p ./tsconfig.json"},"_npmUser":{"name":"amitkhare","email":"amit@khare.co.in"},"repository":{"url":"git+https://github.com/amitkhare/zyntax-extension-sdk.git","type":"git"},"_npmVersion":"11.4.2","description":"Canonical public contracts and authoring helpers for Zyntax extensions.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"4.1.10","typescript":"5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/extension-sdk_1.0.1_1787717099711_0.13763561786967582","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@zyntax/extension-sdk","version":"1.0.2","keywords":["zyntax","extension","sdk"],"author":{"name":"amitkhare"},"license":"MIT","_id":"@zyntax/extension-sdk@1.0.2","maintainers":[{"name":"amitkhare","email":"amit@khare.co.in"}],"homepage":"https://github.com/amitkhare/zyntax-extension-sdk#readme","bugs":{"url":"https://github.com/amitkhare/zyntax-extension-sdk/issues"},"dist":{"shasum":"168953c52dfc53ada241041ac840948fc484f199","tarball":"https://registry.npmjs.org/@zyntax/extension-sdk/-/extension-sdk-1.0.2.tgz","fileCount":66,"integrity":"sha512-s3aUhZla/kaSWKTyP3Z3h50jO6EBRGaE3XRR0fG4ZmzwjQDOsYnjQ6102E+3Qxm0GVAo3E+wOAIKv9N6vFA0QQ==","signatures":[{"sig":"MEUCIC6tURfwvrul29CHPF1QsR6h0twnegl93GXx+b687TY9AiEAy6Gjm//zCxhFDSRwuainQOcIlcccelStO/bnN5/+cyU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":268324},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./capabilities":{"types":"./dist/agent/capabilities.d.ts","import":"./dist/agent/capabilities.js"},"./provider-methods":{"types":"./dist/providerMethods.d.ts","import":"./dist/providerMethods.js"},"./manifest-constants":{"types":"./dist/manifestConstants.d.ts","import":"./dist/manifestConstants.js"},"./manifest-conformance.json":"./fixtures/manifest-conformance.json"},"gitHead":"2651f613a974f2a552551f530c2978619790b38b","scripts":{"test":"vitest run --config ./vitest.config.ts","build":"node ./scripts/build.mjs","prepare":"npm run build","typecheck":"tsc --noEmit -p ./tsconfig.json"},"_npmUser":{"name":"amitkhare","email":"amit@khare.co.in"},"repository":{"url":"git+https://github.com/amitkhare/zyntax-extension-sdk.git","type":"git"},"_npmVersion":"11.4.2","description":"Canonical public contracts and authoring helpers for Zyntax extensions.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vite":"6.4.3","vitest":"4.1.10","typescript":"5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/extension-sdk_1.0.2_1788002803158_0.04078462688255646","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@zyntax/extension-sdk","version":"1.0.3","keywords":["zyntax","extension","sdk"],"author":{"name":"amitkhare"},"license":"MIT","_id":"@zyntax/extension-sdk@1.0.3","maintainers":[{"name":"amitkhare","email":"amit@khare.co.in"}],"homepage":"https://github.com/amitkhare/zyntax-extension-sdk#readme","bugs":{"url":"https://github.com/amitkhare/zyntax-extension-sdk/issues"},"dist":{"shasum":"4c893910d98343bfac091effffc96e200e575e2a","tarball":"https://registry.npmjs.org/@zyntax/extension-sdk/-/extension-sdk-1.0.3.tgz","fileCount":70,"integrity":"sha512-RWIDZoftUE4oIimHeCgAcd1gGP9e9/8HRv6TPLL1N1jv7OhrZ1VW+F1zUeEol4WQ7j5lxwN4AhkQ6DxAjcx2Og==","signatures":[{"sig":"MEQCIHxFqX6FS0VgtZgN8FreM6orLYl/lkPECM29tGgL2VU8AiAFhhxdSnMHatwD5pBxbz0kX/XWpliG1UFLrS4tYb4evg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":279081},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./capabilities":{"types":"./dist/agent/capabilities.d.ts","import":"./dist/agent/capabilities.js"},"./provider-methods":{"types":"./dist/providerMethods.d.ts","import":"./dist/providerMethods.js"},"./manifest-constants":{"types":"./dist/manifestConstants.d.ts","import":"./dist/manifestConstants.js"},"./manifest-conformance.json":"./fixtures/manifest-conformance.json"},"gitHead":"916a137ba2d5e5e8c0048cabc91e12bbe6258f1c","scripts":{"test":"vitest run --config ./vitest.config.ts","build":"node ./scripts/build.mjs","prepare":"npm run build","typecheck":"tsc --noEmit -p ./tsconfig.json"},"_npmUser":{"name":"amitkhare","email":"amit@khare.co.in"},"repository":{"url":"git+https://github.com/amitkhare/zyntax-extension-sdk.git","type":"git"},"_npmVersion":"11.4.2","description":"Canonical public contracts and authoring helpers for Zyntax extensions.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vite":"6.4.3","vitest":"4.1.10","typescript":"5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/extension-sdk_1.0.3_1788024574115_0.5066024715668829","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@zyntax/extension-sdk","version":"1.0.4","keywords":["zyntax","extension","sdk"],"author":{"name":"amitkhare"},"license":"MIT","_id":"@zyntax/extension-sdk@1.0.4","maintainers":[{"name":"amitkhare","email":"amit@khare.co.in"}],"homepage":"https://github.com/amitkhare/zyntax-extension-sdk#readme","bugs":{"url":"https://github.com/amitkhare/zyntax-extension-sdk/issues"},"dist":{"shasum":"9e818e5d6dc0ebc377850fec0d144441dfd42664","tarball":"https://registry.npmjs.org/@zyntax/extension-sdk/-/extension-sdk-1.0.4.tgz","fileCount":70,"integrity":"sha512-i6k00lAUrySToO99fCNo95UeUmKSsBJCjqmbY7BXxfnzBOzcLZV9o2TleADh0ONB1wizo99D6umpfG5ymE3RJQ==","signatures":[{"sig":"MEUCIFooRHj7qjs6qX6vF/CrhwUHKxy/PNR9BQs8Cb/Z0OcrAiEA5SVZ3ThiXAHVAH0zsRpYmuVLIST13zBGb3AmrdaQwRM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":279560},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./capabilities":{"types":"./dist/agent/capabilities.d.ts","import":"./dist/agent/capabilities.js"},"./provider-methods":{"types":"./dist/providerMethods.d.ts","import":"./dist/providerMethods.js"},"./manifest-constants":{"types":"./dist/manifestConstants.d.ts","import":"./dist/manifestConstants.js"},"./manifest-conformance.json":"./fixtures/manifest-conformance.json"},"gitHead":"863878b500750b9041d0593c3f46c95174cda327","scripts":{"test":"vitest run --config ./vitest.config.ts","build":"node ./scripts/build.mjs","prepare":"npm run build","typecheck":"tsc --noEmit -p ./tsconfig.json"},"_npmUser":{"name":"amitkhare","email":"amit@khare.co.in"},"repository":{"url":"git+https://github.com/amitkhare/zyntax-extension-sdk.git","type":"git"},"_npmVersion":"11.4.2","description":"Canonical public contracts and authoring helpers for Zyntax extensions.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vite":"6.4.3","vitest":"4.1.10","typescript":"5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/extension-sdk_1.0.4_1788031120346_0.8424913312438183","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@zyntax/extension-sdk","version":"1.0.5","keywords":["zyntax","extension","sdk"],"author":{"name":"amitkhare"},"license":"MIT","_id":"@zyntax/extension-sdk@1.0.5","maintainers":[{"name":"amitkhare","email":"amit@khare.co.in"}],"homepage":"https://github.com/amitkhare/zyntax-extension-sdk#readme","bugs":{"url":"https://github.com/amitkhare/zyntax-extension-sdk/issues"},"dist":{"shasum":"a29b83c86034eb6227d9649c3ffdc1076fe97d36","tarball":"https://registry.npmjs.org/@zyntax/extension-sdk/-/extension-sdk-1.0.5.tgz","fileCount":74,"integrity":"sha512-KvD/bnbeRNPWPcS8w5+bvPW2VXtfWw/8gq9NrL4SDNl4Sl/vAsbGEY2xaKjxBLsgXlNtVb847mLSUq7waNGjeg==","signatures":[{"sig":"MEQCIF+Og2VDV1vm1rcD6TUZjCs+fRezoE02BRCqtYrmqLGOAiBdnCyKZ+osKNm5dyxZMSFNBlUfK4//fEYzBqAfBWA1HA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":292508},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./capabilities":{"types":"./dist/agent/capabilities.d.ts","import":"./dist/agent/capabilities.js"},"./provider-methods":{"types":"./dist/providerMethods.d.ts","import":"./dist/providerMethods.js"},"./manifest-constants":{"types":"./dist/manifestConstants.d.ts","import":"./dist/manifestConstants.js"},"./manifest-conformance.json":"./fixtures/manifest-conformance.json"},"gitHead":"55c03ddbd5c4a1fd06ebe6e4201464b751499dcf","scripts":{"test":"vitest run --config ./vitest.config.ts","build":"node ./scripts/build.mjs","prepare":"npm run build","typecheck":"tsc --noEmit -p ./tsconfig.json"},"_npmUser":{"name":"amitkhare","email":"amit@khare.co.in"},"repository":{"url":"git+https://github.com/amitkhare/zyntax-extension-sdk.git","type":"git"},"_npmVersion":"11.4.2","description":"Canonical public contracts and authoring helpers for Zyntax extensions.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vite":"6.4.3","vitest":"4.1.10","typescript":"5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/extension-sdk_1.0.5_1788032657764_0.7197614786602347","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"@zyntax/extension-sdk","version":"1.0.6","keywords":["zyntax","extension","sdk"],"author":{"name":"amitkhare"},"license":"MIT","_id":"@zyntax/extension-sdk@1.0.6","maintainers":[{"name":"amitkhare","email":"amit@khare.co.in"}],"homepage":"https://github.com/amitkhare/zyntax-extension-sdk#readme","bugs":{"url":"https://github.com/amitkhare/zyntax-extension-sdk/issues"},"dist":{"shasum":"1bef55c9b76df29ff42caaa742de6206976eddd8","tarball":"https://registry.npmjs.org/@zyntax/extension-sdk/-/extension-sdk-1.0.6.tgz","fileCount":74,"integrity":"sha512-44wF55ULGa+k0rlythFq7Bg1O8oKNLQ2B8BR91pM+Ler1cDldrdQsOlbxuD2xoPqk56wPaNC4/Es3hv9LA/kIA==","signatures":[{"sig":"MEQCIH5D+Klb/gBhGXQXFzr9utIxrrorS1g0E3SyuPgS0a9cAiBiisAKYG3UCI8rCCm7r55NTgWxhJbyNW2hvMevFMRPWw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":296480},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./capabilities":{"types":"./dist/agent/capabilities.d.ts","import":"./dist/agent/capabilities.js"},"./provider-methods":{"types":"./dist/providerMethods.d.ts","import":"./dist/providerMethods.js"},"./manifest-constants":{"types":"./dist/manifestConstants.d.ts","import":"./dist/manifestConstants.js"},"./manifest-conformance.json":"./fixtures/manifest-conformance.json"},"gitHead":"29ac832d9fa4a35dea76a924f86841fd6643a03d","scripts":{"test":"vitest run --config ./vitest.config.ts","build":"node ./scripts/build.mjs","prepare":"npm run build","typecheck":"tsc --noEmit -p ./tsconfig.json"},"_npmUser":{"name":"amitkhare","email":"amit@khare.co.in"},"repository":{"url":"git+https://github.com/amitkhare/zyntax-extension-sdk.git","type":"git"},"_npmVersion":"11.4.2","description":"Canonical public contracts and authoring helpers for Zyntax extensions.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vite":"6.4.3","vitest":"4.1.10","typescript":"5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/extension-sdk_1.0.6_1788070270812_0.07088863562995762","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"@zyntax/extension-sdk","version":"1.0.7","keywords":["zyntax","extension","sdk"],"author":{"name":"amitkhare"},"license":"MIT","_id":"@zyntax/extension-sdk@1.0.7","maintainers":[{"name":"amitkhare","email":"amit@khare.co.in"}],"homepage":"https://github.com/amitkhare/zyntax-extension-sdk#readme","bugs":{"url":"https://github.com/amitkhare/zyntax-extension-sdk/issues"},"dist":{"shasum":"63f09748d787eff4cdc8a14fd3a868355c18fa93","tarball":"https://registry.npmjs.org/@zyntax/extension-sdk/-/extension-sdk-1.0.7.tgz","fileCount":74,"integrity":"sha512-Yg9sh9293uekApmg2oFCSg+PQTJ8TzP692zbn236Jo9AhHsXOIS1RAd9Ve4AQSEB19zIYTj+31m965Ntx26asg==","signatures":[{"sig":"MEQCIFa/2G8pmPPFfAwBK9WXAsa2UuCYEq2gd/voUM0dliIWAiALiURYGdd1ZvNlzEwb1XV5DtJq+2gvGnzXgo6S3BuFNg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":302878},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./capabilities":{"types":"./dist/agent/capabilities.d.ts","import":"./dist/agent/capabilities.js"},"./provider-methods":{"types":"./dist/providerMethods.d.ts","import":"./dist/providerMethods.js"},"./manifest-constants":{"types":"./dist/manifestConstants.d.ts","import":"./dist/manifestConstants.js"},"./manifest-conformance.json":"./fixtures/manifest-conformance.json"},"gitHead":"803f5c5cf5f0ff2029be700afb2b77f6ef9cd6a1","scripts":{"test":"vitest run --config ./vitest.config.ts","build":"node ./scripts/build.mjs","prepare":"npm run build","typecheck":"tsc --noEmit -p ./tsconfig.json"},"_npmUser":{"name":"amitkhare","email":"amit@khare.co.in"},"repository":{"url":"git+https://github.com/amitkhare/zyntax-extension-sdk.git","type":"git"},"_npmVersion":"11.4.2","description":"Canonical public contracts and authoring helpers for Zyntax extensions.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vite":"6.4.3","vitest":"4.1.10","typescript":"5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/extension-sdk_1.0.7_1788072731174_0.5433916203575384","host":"s3://npm-registry-packages-npm-production"}},"1.0.8":{"name":"@zyntax/extension-sdk","version":"1.0.8","keywords":["zyntax","extension","sdk"],"author":{"name":"amitkhare"},"license":"MIT","_id":"@zyntax/extension-sdk@1.0.8","maintainers":[{"name":"amitkhare","email":"amit@khare.co.in"}],"homepage":"https://github.com/amitkhare/zyntax-extension-sdk#readme","bugs":{"url":"https://github.com/amitkhare/zyntax-extension-sdk/issues"},"dist":{"shasum":"5225d5fa063a85d1baa5e367037dc6d16951107f","tarball":"https://registry.npmjs.org/@zyntax/extension-sdk/-/extension-sdk-1.0.8.tgz","fileCount":74,"integrity":"sha512-7XHI+PIjwiSfFAsBWXIV6Kq32047xjjK4SUOFgumGF758bpFnnSjFrRDuKwVltGQOPiMXw3Z6YOzfHJNAPKUaQ==","signatures":[{"sig":"MEYCIQDAL+UIqQ9cTqKl091dKrzf6Qj2tuWTOmu6nyxKGgRbhgIhAKkpwvLKhj66hH6UqihXIrTvgSJ1/xdD7BHqmFisTPP1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":295853},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./capabilities":{"types":"./dist/agent/capabilities.d.ts","import":"./dist/agent/capabilities.js"},"./provider-methods":{"types":"./dist/providerMethods.d.ts","import":"./dist/providerMethods.js"},"./manifest-constants":{"types":"./dist/manifestConstants.d.ts","import":"./dist/manifestConstants.js"},"./manifest-conformance.json":"./fixtures/manifest-conformance.json"},"gitHead":"803f5c5cf5f0ff2029be700afb2b77f6ef9cd6a1","scripts":{"test":"vitest run --config ./vitest.config.ts","build":"node ./scripts/build.mjs","prepare":"npm run build","typecheck":"tsc --noEmit -p ./tsconfig.json"},"_npmUser":{"name":"amitkhare","email":"amit@khare.co.in"},"repository":{"url":"git+https://github.com/amitkhare/zyntax-extension-sdk.git","type":"git"},"_npmVersion":"11.4.2","description":"Canonical public contracts and authoring helpers for Zyntax extensions.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vite":"6.4.3","vitest":"4.1.10","typescript":"5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/extension-sdk_1.0.8_1788080235086_0.3491367794530458","host":"s3://npm-registry-packages-npm-production"}},"1.0.9":{"name":"@zyntax/extension-sdk","version":"1.0.9","keywords":["zyntax","extension","sdk"],"author":{"name":"amitkhare"},"license":"MIT","_id":"@zyntax/extension-sdk@1.0.9","maintainers":[{"name":"amitkhare","email":"amit@khare.co.in"}],"homepage":"https://github.com/amitkhare/zyntax-extension-sdk#readme","bugs":{"url":"https://github.com/amitkhare/zyntax-extension-sdk/issues"},"dist":{"shasum":"3c993cb8acf84f13a5083483c74fb37eabbaf63b","tarball":"https://registry.npmjs.org/@zyntax/extension-sdk/-/extension-sdk-1.0.9.tgz","fileCount":74,"integrity":"sha512-q02J3CvfAUYZoQ31+gBrw7qpsZ3SILZiXL0cCkljfLi/kBXp9IUKlgUo0NwW+5JDjwX7RnRni3Ht6R6QepRKTg==","signatures":[{"sig":"MEUCICGZDRM4+4WyLEt1npxIn6NFymH1cebCC2uyKtkQozNFAiEAxVITnzz1AmYGgnphw96W/SKPhb5oW0QCtGkXp1emSz8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":306657},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./capabilities":{"types":"./dist/agent/capabilities.d.ts","import":"./dist/agent/capabilities.js"},"./provider-methods":{"types":"./dist/providerMethods.d.ts","import":"./dist/providerMethods.js"},"./manifest-constants":{"types":"./dist/manifestConstants.d.ts","import":"./dist/manifestConstants.js"},"./manifest-conformance.json":"./fixtures/manifest-conformance.json"},"gitHead":"15c30c2ca8b0c1fea872863170497c8bb3d8b7c4","scripts":{"test":"vitest run --config ./vitest.config.ts","build":"node ./scripts/build.mjs","prepare":"npm run build","typecheck":"tsc --noEmit -p ./tsconfig.json"},"_npmUser":{"name":"amitkhare","email":"amit@khare.co.in"},"repository":{"url":"git+https://github.com/amitkhare/zyntax-extension-sdk.git","type":"git"},"_npmVersion":"11.4.2","description":"Canonical public contracts and authoring helpers for Zyntax extensions.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vite":"6.4.3","vitest":"4.1.10","typescript":"5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/extension-sdk_1.0.9_1788085588978_0.4510146089240006","host":"s3://npm-registry-packages-npm-production"}},"1.0.10":{"name":"@zyntax/extension-sdk","version":"1.0.10","keywords":["zyntax","extension","sdk"],"author":{"name":"amitkhare"},"license":"MIT","_id":"@zyntax/extension-sdk@1.0.10","maintainers":[{"name":"amitkhare","email":"amit@khare.co.in"}],"homepage":"https://github.com/amitkhare/zyntax-extension-sdk#readme","bugs":{"url":"https://github.com/amitkhare/zyntax-extension-sdk/issues"},"dist":{"shasum":"c6c32ac0cc3f5496ae6a9a5dfa3d045dd0539581","tarball":"https://registry.npmjs.org/@zyntax/extension-sdk/-/extension-sdk-1.0.10.tgz","fileCount":74,"integrity":"sha512-Qe7ANCyrJDxgSQxCpY3paWlQ6nXzdPGsOH3HyTVyMdbc+gN2jgJVLwqTeXbEymVZTfyObPMohsRSSizdMQKvBg==","signatures":[{"sig":"MEYCIQCvYuZt1psCQkvsimvBUd4mSpy9+CpTpXn+XjcRMe+g9AIhAMYORNSGDj/pNPndxQc/ZISklB+hsxJ7N7lxS109NDmy","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":317879},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./capabilities":{"types":"./dist/agent/capabilities.d.ts","import":"./dist/agent/capabilities.js"},"./provider-methods":{"types":"./dist/providerMethods.d.ts","import":"./dist/providerMethods.js"},"./manifest-constants":{"types":"./dist/manifestConstants.d.ts","import":"./dist/manifestConstants.js"},"./manifest-conformance.json":"./fixtures/manifest-conformance.json"},"gitHead":"492039f9f44e35a043b13b6a1237faf843e4722d","scripts":{"test":"vitest run --config ./vitest.config.ts","build":"node ./scripts/build.mjs","prepare":"npm run build","typecheck":"tsc --noEmit -p ./tsconfig.json"},"_npmUser":{"name":"amitkhare","email":"amit@khare.co.in"},"repository":{"url":"git+https://github.com/amitkhare/zyntax-extension-sdk.git","type":"git"},"_npmVersion":"11.4.2","description":"Canonical public contracts and authoring helpers for Zyntax extensions.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vite":"6.4.3","vitest":"4.1.10","typescript":"5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/extension-sdk_1.0.10_1788092603113_0.6393621598881309","host":"s3://npm-registry-packages-npm-production"}},"1.0.11":{"name":"@zyntax/extension-sdk","version":"1.0.11","keywords":["zyntax","extension","sdk"],"author":{"name":"amitkhare"},"license":"MIT","_id":"@zyntax/extension-sdk@1.0.11","maintainers":[{"name":"amitkhare","email":"amit@khare.co.in"}],"homepage":"https://github.com/amitkhare/zyntax-extension-sdk#readme","bugs":{"url":"https://github.com/amitkhare/zyntax-extension-sdk/issues"},"dist":{"shasum":"3bddcbbb2cfb9b1b601ab2062d4a3a7097c13a78","tarball":"https://registry.npmjs.org/@zyntax/extension-sdk/-/extension-sdk-1.0.11.tgz","fileCount":74,"integrity":"sha512-YZ7hf1y0IxvHFY10/ZKmUl6LQv7Uy6S0XKrqQ7cMujS43mHv0VuGZ+kUH4UxVRhsYywgH2G6FFslc7cveAxxkQ==","signatures":[{"sig":"MEYCIQCZB9KdjO9cB5U3oV9eVpi/TtIcLn9ma4A9HwzQYLeONwIhAOl3uzl/0bwrKln4tjG06JCvS+At6YvYo0n8O/fCHX6B","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":318741},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./capabilities":{"types":"./dist/agent/capabilities.d.ts","import":"./dist/agent/capabilities.js"},"./provider-methods":{"types":"./dist/providerMethods.d.ts","import":"./dist/providerMethods.js"},"./manifest-constants":{"types":"./dist/manifestConstants.d.ts","import":"./dist/manifestConstants.js"},"./manifest-conformance.json":"./fixtures/manifest-conformance.json"},"gitHead":"67c5b290d828ec4355bbb8c979d6dc00734cf63f","scripts":{"test":"vitest run --config ./vitest.config.ts","build":"node ./scripts/build.mjs","prepare":"npm run build","typecheck":"tsc --noEmit -p ./tsconfig.json"},"_npmUser":{"name":"amitkhare","email":"amit@khare.co.in"},"repository":{"url":"git+https://github.com/amitkhare/zyntax-extension-sdk.git","type":"git"},"_npmVersion":"11.4.2","description":"Canonical public contracts and authoring helpers for Zyntax extensions.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vite":"6.4.3","vitest":"4.1.10","typescript":"5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/extension-sdk_1.0.11_1788119492683_0.6342190276451809","host":"s3://npm-registry-packages-npm-production"}},"1.0.12":{"name":"@zyntax/extension-sdk","version":"1.0.12","keywords":["zyntax","extension","sdk"],"author":{"name":"amitkhare"},"license":"MIT","_id":"@zyntax/extension-sdk@1.0.12","maintainers":[{"name":"amitkhare","email":"amit@khare.co.in"}],"homepage":"https://github.com/amitkhare/zyntax-extension-sdk#readme","bugs":{"url":"https://github.com/amitkhare/zyntax-extension-sdk/issues"},"dist":{"shasum":"912f022de2f8572dbd00e1a6848c0a4781cd27d2","tarball":"https://registry.npmjs.org/@zyntax/extension-sdk/-/extension-sdk-1.0.12.tgz","fileCount":74,"integrity":"sha512-ybQZDt2uqLFeoVdExHqIYQdIJGV415G654P0wZfGz97XRASOMQowJw3wQh7eV0+FEuveD2S1HOGdlw2kAViO+Q==","signatures":[{"sig":"MEQCIBROFbbAd0sZfttTwSkwN7ihyRi+oC2zApZGmMg0iu+MAiAEcSPHkbuPq4olq0fFWgyXEGA8tdjJy1+FiladsSd7Fg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":327901},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./capabilities":{"types":"./dist/agent/capabilities.d.ts","import":"./dist/agent/capabilities.js"},"./provider-methods":{"types":"./dist/providerMethods.d.ts","import":"./dist/providerMethods.js"},"./manifest-constants":{"types":"./dist/manifestConstants.d.ts","import":"./dist/manifestConstants.js"},"./manifest-conformance.json":"./fixtures/manifest-conformance.json"},"gitHead":"d6f507ac4f3267bafaefc124ce407748ef34d166","scripts":{"test":"vitest run --config ./vitest.config.ts","build":"node ./scripts/build.mjs","prepare":"npm run build","typecheck":"tsc --noEmit -p ./tsconfig.json"},"_npmUser":{"name":"amitkhare","email":"amit@khare.co.in"},"repository":{"url":"git+https://github.com/amitkhare/zyntax-extension-sdk.git","type":"git"},"_npmVersion":"11.4.2","description":"Canonical public contracts and authoring helpers for Zyntax extensions.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vite":"6.4.3","vitest":"4.1.10","typescript":"5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/extension-sdk_1.0.12_1788156045999_0.18385384916830327","host":"s3://npm-registry-packages-npm-production"}},"1.0.13":{"name":"@zyntax/extension-sdk","version":"1.0.13","keywords":["zyntax","extension","sdk"],"author":{"name":"amitkhare"},"license":"MIT","_id":"@zyntax/extension-sdk@1.0.13","maintainers":[{"name":"amitkhare","email":"amit@khare.co.in"}],"homepage":"https://github.com/amitkhare/zyntax-extension-sdk#readme","bugs":{"url":"https://github.com/amitkhare/zyntax-extension-sdk/issues"},"dist":{"shasum":"8946fbf444b115257c69cd76bdfd9622dd971305","tarball":"https://registry.npmjs.org/@zyntax/extension-sdk/-/extension-sdk-1.0.13.tgz","fileCount":74,"integrity":"sha512-Ku2Z8XpJDUFu+bMLQIoREQjZKZHouukQ9Hqiz5+QqxKXIC3gfbhLTSuKTxYL+wcydR2frG5NZoP9nKthCPNpdA==","signatures":[{"sig":"MEUCIHi695AW2EwMS03vtRqY7hwaOdmqoB3KoRzym109ayAoAiEAgv0xAndlzWUbZvPPafzUt0t/QiWIuLSfxxlF8ynZ7/Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":330308},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./capabilities":{"types":"./dist/agent/capabilities.d.ts","import":"./dist/agent/capabilities.js"},"./provider-methods":{"types":"./dist/providerMethods.d.ts","import":"./dist/providerMethods.js"},"./manifest-constants":{"types":"./dist/manifestConstants.d.ts","import":"./dist/manifestConstants.js"},"./manifest-conformance.json":"./fixtures/manifest-conformance.json"},"gitHead":"26e5238f463890e7b35bad5b3af6df3df48b3d85","scripts":{"test":"vitest run --config ./vitest.config.ts","build":"node ./scripts/build.mjs","prepare":"npm run build","typecheck":"tsc --noEmit -p ./tsconfig.json"},"_npmUser":{"name":"amitkhare","email":"amit@khare.co.in"},"repository":{"url":"git+https://github.com/amitkhare/zyntax-extension-sdk.git","type":"git"},"_npmVersion":"11.4.2","description":"Canonical public contracts and authoring helpers for Zyntax extensions.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vite":"6.4.3","vitest":"4.1.10","typescript":"5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/extension-sdk_1.0.13_1788161756238_0.3642118338583322","host":"s3://npm-registry-packages-npm-production"}},"1.0.14":{"name":"@zyntax/extension-sdk","version":"1.0.14","keywords":["zyntax","extension","sdk"],"author":{"name":"amitkhare"},"license":"MIT","_id":"@zyntax/extension-sdk@1.0.14","maintainers":[{"name":"amitkhare","email":"amit@khare.co.in"}],"homepage":"https://github.com/amitkhare/zyntax-extension-sdk#readme","bugs":{"url":"https://github.com/amitkhare/zyntax-extension-sdk/issues"},"dist":{"shasum":"d820b402b58f15df3930b69402a5216ddea9646e","tarball":"https://registry.npmjs.org/@zyntax/extension-sdk/-/extension-sdk-1.0.14.tgz","fileCount":74,"integrity":"sha512-dqk8CNagtO0JHbh808GYuNvAdJ+iyOMV8CL+EIFjwOHsT7HDmbJ0WzCsm9tqPs+5eBG9BuVnZYTYcR+wJaLJVw==","signatures":[{"sig":"MEQCIC6TeUNI1m1gCD9FNCLnS3poeqQuwYp2Wiia8h+JhwqeAiAhoru1a5r3MfATyZ1C6Wg7qkxid7buGn9fdDru2TLSwQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":331355},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./capabilities":{"types":"./dist/agent/capabilities.d.ts","import":"./dist/agent/capabilities.js"},"./provider-methods":{"types":"./dist/providerMethods.d.ts","import":"./dist/providerMethods.js"},"./manifest-constants":{"types":"./dist/manifestConstants.d.ts","import":"./dist/manifestConstants.js"},"./manifest-conformance.json":"./fixtures/manifest-conformance.json"},"gitHead":"8326148d72f60f91fe49c1a70832bcdcac7a01a6","scripts":{"test":"vitest run --config ./vitest.config.ts","build":"node ./scripts/build.mjs","prepare":"npm run build","typecheck":"tsc --noEmit -p ./tsconfig.json"},"_npmUser":{"name":"amitkhare","email":"amit@khare.co.in"},"repository":{"url":"git+https://github.com/amitkhare/zyntax-extension-sdk.git","type":"git"},"_npmVersion":"11.4.2","description":"Canonical public contracts and authoring helpers for Zyntax extensions.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vite":"6.4.3","vitest":"4.1.10","typescript":"5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/extension-sdk_1.0.14_1788171474521_0.09160100018761308","host":"s3://npm-registry-packages-npm-production"}},"1.0.15":{"name":"@zyntax/extension-sdk","version":"1.0.15","keywords":["zyntax","extension","sdk"],"author":{"name":"amitkhare"},"license":"MIT","_id":"@zyntax/extension-sdk@1.0.15","maintainers":[{"name":"amitkhare","email":"amit@khare.co.in"}],"homepage":"https://github.com/amitkhare/zyntax-extension-sdk#readme","bugs":{"url":"https://github.com/amitkhare/zyntax-extension-sdk/issues"},"dist":{"shasum":"2c8d9df01bf68e66a382973d3a0af176b6acb701","tarball":"https://registry.npmjs.org/@zyntax/extension-sdk/-/extension-sdk-1.0.15.tgz","fileCount":78,"integrity":"sha512-+OSqjDSyea9hg7m+RHqQhSq5qrjuKEZmhsrdn5x6Yx2T8sd5kh4ejWB+cOSYPVJ177Zq3ukZTu856g56pXKAcA==","signatures":[{"sig":"MEUCIB4ysDCkgMHs92BX59rrRmYpAtHntmf9KrKQsXsBJNm+AiEAg9btyqxt1fRJWWcVo279WT7h9b0zroZ7eXOkCsM3MHg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":334399},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./capabilities":{"types":"./dist/agent/capabilities.d.ts","import":"./dist/agent/capabilities.js"},"./provider-methods":{"types":"./dist/providerMethods.d.ts","import":"./dist/providerMethods.js"},"./manifest-constants":{"types":"./dist/manifestConstants.d.ts","import":"./dist/manifestConstants.js"},"./manifest-conformance.json":"./fixtures/manifest-conformance.json"},"gitHead":"931b4d6bde8959a70e31180aa30be63cfb864c12","scripts":{"test":"vitest run --config ./vitest.config.ts","build":"node ./scripts/build.mjs","prepare":"npm run build","typecheck":"tsc --noEmit -p ./tsconfig.json"},"_npmUser":{"name":"amitkhare","email":"amit@khare.co.in"},"repository":{"url":"git+https://github.com/amitkhare/zyntax-extension-sdk.git","type":"git"},"_npmVersion":"11.4.2","description":"Canonical public contracts and authoring helpers for Zyntax extensions.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vite":"6.4.3","vitest":"4.1.10","typescript":"5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/extension-sdk_1.0.15_1788186470053_0.17822944517694328","host":"s3://npm-registry-packages-npm-production"}},"1.0.16":{"name":"@zyntax/extension-sdk","version":"1.0.16","keywords":["zyntax","extension","sdk"],"author":{"name":"amitkhare"},"license":"MIT","_id":"@zyntax/extension-sdk@1.0.16","maintainers":[{"name":"amitkhare","email":"amit@khare.co.in"}],"homepage":"https://github.com/amitkhare/zyntax-extension-sdk#readme","bugs":{"url":"https://github.com/amitkhare/zyntax-extension-sdk/issues"},"dist":{"shasum":"feeb0509769d6db7e64b341857aa594202219e4f","tarball":"https://registry.npmjs.org/@zyntax/extension-sdk/-/extension-sdk-1.0.16.tgz","fileCount":78,"integrity":"sha512-ovye18MXbdBux0XAJw4dDappYCapny2ciBFeywNLT26t3q0+9on/fxe00kHf8JahvCVUenZ5iXtTLbic957qBg==","signatures":[{"sig":"MEUCIFVgpXpIort9xGnPhRheUDS9VrjCVgACj+a5sMGGoubSAiEA/iVViWpPqB6glO5zVbcSc1v4OVg3f9GFRRYykcLzyK4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":344210},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./capabilities":{"types":"./dist/agent/capabilities.d.ts","import":"./dist/agent/capabilities.js"},"./provider-methods":{"types":"./dist/providerMethods.d.ts","import":"./dist/providerMethods.js"},"./manifest-constants":{"types":"./dist/manifestConstants.d.ts","import":"./dist/manifestConstants.js"},"./manifest-conformance.json":"./fixtures/manifest-conformance.json"},"gitHead":"cce90db5c421a4b8693c9ab68e20dcf2e6e1459e","scripts":{"test":"vitest run --config ./vitest.config.ts","build":"node ./scripts/build.mjs","prepare":"npm run build","typecheck":"tsc --noEmit -p ./tsconfig.json"},"_npmUser":{"name":"amitkhare","email":"amit@khare.co.in"},"repository":{"url":"git+https://github.com/amitkhare/zyntax-extension-sdk.git","type":"git"},"_npmVersion":"11.4.2","description":"Canonical public contracts and authoring helpers for Zyntax extensions.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vite":"6.4.3","vitest":"4.1.10","typescript":"5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/extension-sdk_1.0.16_1788508465642_0.15256046041255367","host":"s3://npm-registry-packages-npm-production"}},"1.0.17":{"name":"@zyntax/extension-sdk","version":"1.0.17","keywords":["zyntax","extension","sdk"],"author":{"name":"amitkhare"},"license":"MIT","_id":"@zyntax/extension-sdk@1.0.17","maintainers":[{"name":"amitkhare","email":"amit@khare.co.in"}],"homepage":"https://github.com/amitkhare/zyntax-extension-sdk#readme","bugs":{"url":"https://github.com/amitkhare/zyntax-extension-sdk/issues"},"dist":{"shasum":"72049fdff0c315bb2ac76b20088b2a4f84e17691","tarball":"https://registry.npmjs.org/@zyntax/extension-sdk/-/extension-sdk-1.0.17.tgz","fileCount":78,"integrity":"sha512-imHuaQjDgk5QzeaGi8EASHkv4wIBzbhaJIcifcZaFZ6EWnvxcXbOI3Sacx54NsAuKKJKfEzQ5xOcHTxvXroyLg==","signatures":[{"sig":"MEQCICVuoCghNGUmz6tIiCMM89pyJHKWTuyiLIN0vrZ1aMlhAiAYiMlLdH5yQ4y9WeNPcA6eNaijpGF7EAVpIDAvR9/IoQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":345383},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./capabilities":{"types":"./dist/agent/capabilities.d.ts","import":"./dist/agent/capabilities.js"},"./provider-methods":{"types":"./dist/providerMethods.d.ts","import":"./dist/providerMethods.js"},"./manifest-constants":{"types":"./dist/manifestConstants.d.ts","import":"./dist/manifestConstants.js"},"./manifest-conformance.json":"./fixtures/manifest-conformance.json"},"gitHead":"6836c9a64e643002b10240710ba8fe76b7cab22e","scripts":{"test":"vitest run --config ./vitest.config.ts","build":"node ./scripts/build.mjs","prepare":"npm run build","typecheck":"tsc --noEmit -p ./tsconfig.json"},"_npmUser":{"name":"amitkhare","email":"amit@khare.co.in"},"repository":{"url":"git+https://github.com/amitkhare/zyntax-extension-sdk.git","type":"git"},"_npmVersion":"11.4.2","description":"Canonical public contracts and authoring helpers for Zyntax extensions.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vite":"6.4.3","vitest":"4.1.10","typescript":"5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/extension-sdk_1.0.17_1788509796772_0.11176097458446654","host":"s3://npm-registry-packages-npm-production"}},"1.0.18":{"name":"@zyntax/extension-sdk","version":"1.0.18","keywords":["zyntax","extension","sdk"],"author":{"name":"amitkhare"},"license":"MIT","_id":"@zyntax/extension-sdk@1.0.18","maintainers":[{"name":"amitkhare","email":"amit@khare.co.in"}],"homepage":"https://github.com/amitkhare/zyntax-extension-sdk#readme","bugs":{"url":"https://github.com/amitkhare/zyntax-extension-sdk/issues"},"dist":{"shasum":"42c061766294e0ecb5350b2462257ed5398debfa","tarball":"https://registry.npmjs.org/@zyntax/extension-sdk/-/extension-sdk-1.0.18.tgz","fileCount":78,"integrity":"sha512-CHEftNMu27ADATzIn90NpgHjHEhhuTGRix6Hj21BWbOSgoaM0DF0vOkszzNvjOVhzp1JBjuGZ5x9AlV5IN9jUw==","signatures":[{"sig":"MEUCIQCtonJyl57ZTjykPDReWmyTG+5YUuSeC4u6MrasNdgh4QIgCgbe6zKob3qpKw8Za64RLBDvYieW272JGr6unQsE+F8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":347007},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./capabilities":{"types":"./dist/agent/capabilities.d.ts","import":"./dist/agent/capabilities.js"},"./provider-methods":{"types":"./dist/providerMethods.d.ts","import":"./dist/providerMethods.js"},"./manifest-constants":{"types":"./dist/manifestConstants.d.ts","import":"./dist/manifestConstants.js"},"./manifest-conformance.json":"./fixtures/manifest-conformance.json"},"gitHead":"c0be6698c51d5274b614d4d4ad4845d10002665a","scripts":{"test":"vitest run --config ./vitest.config.ts","build":"node ./scripts/build.mjs","prepare":"npm run build","typecheck":"tsc --noEmit -p ./tsconfig.json"},"_npmUser":{"name":"amitkhare","email":"amit@khare.co.in"},"repository":{"url":"git+https://github.com/amitkhare/zyntax-extension-sdk.git","type":"git"},"_npmVersion":"11.4.2","description":"Canonical public contracts and authoring helpers for Zyntax extensions.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vite":"6.4.3","vitest":"4.1.10","typescript":"5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/extension-sdk_1.0.18_1788527157089_0.05803484507783896","host":"s3://npm-registry-packages-npm-production"}},"1.0.19":{"name":"@zyntax/extension-sdk","version":"1.0.19","keywords":["zyntax","extension","sdk"],"author":{"name":"amitkhare"},"license":"MIT","_id":"@zyntax/extension-sdk@1.0.19","maintainers":[{"name":"amitkhare","email":"amit@khare.co.in"}],"homepage":"https://github.com/amitkhare/zyntax-extension-sdk#readme","bugs":{"url":"https://github.com/amitkhare/zyntax-extension-sdk/issues"},"dist":{"shasum":"04924353b0b89581cd6a63c7f644bf1ff2e519ce","tarball":"https://registry.npmjs.org/@zyntax/extension-sdk/-/extension-sdk-1.0.19.tgz","fileCount":78,"integrity":"sha512-nAP1ltiB1T/I+CqxPuwWyBU0mzj8tUTLG2GDhihpCscmKqhstaugdUgsbAzQ6dQ0ympQINWoi8nPk8tsamGPpA==","signatures":[{"sig":"MEUCIQDkQUfKJUM+yCe9pLGdS/e38Ge+KiXdG5mgTwLtcaueWQIgf6hIrj19DGWljberpMsIbe7vk9SBxxWxt/UTeeRv1f4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":351291},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./capabilities":{"types":"./dist/agent/capabilities.d.ts","import":"./dist/agent/capabilities.js"},"./provider-methods":{"types":"./dist/providerMethods.d.ts","import":"./dist/providerMethods.js"},"./manifest-constants":{"types":"./dist/manifestConstants.d.ts","import":"./dist/manifestConstants.js"},"./manifest-conformance.json":"./fixtures/manifest-conformance.json"},"gitHead":"86d5ef974c01883b0b993b91e2609f300bc77978","scripts":{"test":"vitest run --config ./vitest.config.ts","build":"node ./scripts/build.mjs","prepare":"npm run build","typecheck":"tsc --noEmit -p ./tsconfig.json"},"_npmUser":{"name":"amitkhare","email":"amit@khare.co.in"},"repository":{"url":"git+https://github.com/amitkhare/zyntax-extension-sdk.git","type":"git"},"_npmVersion":"11.4.2","description":"Canonical public contracts and authoring helpers for Zyntax extensions.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vite":"6.4.3","vitest":"4.1.10","typescript":"5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/extension-sdk_1.0.19_1788552831054_0.8670358731701446","host":"s3://npm-registry-packages-npm-production"}},"1.0.20":{"name":"@zyntax/extension-sdk","version":"1.0.20","keywords":["zyntax","extension","sdk"],"author":{"name":"amitkhare"},"license":"MIT","_id":"@zyntax/extension-sdk@1.0.20","maintainers":[{"name":"amitkhare","email":"amit@khare.co.in"}],"homepage":"https://github.com/amitkhare/zyntax-extension-sdk#readme","bugs":{"url":"https://github.com/amitkhare/zyntax-extension-sdk/issues"},"dist":{"shasum":"2d5112e76536735daf3abd420bda8d338e346c98","tarball":"https://registry.npmjs.org/@zyntax/extension-sdk/-/extension-sdk-1.0.20.tgz","fileCount":78,"integrity":"sha512-I27DHpr/RSS9+0WK4vBtaHWN3NcfKLeiiP7pG3OMmoh9od5zAgyTPrrP62I/5bHHiH4BlokhJlfJXmu86sdNIA==","signatures":[{"sig":"MEUCIDAe7DcsSMiCk6uSMhw0oVBVrP+XECIjdr+mQRN4zg+IAiEAjKkIVsrDc1XR6RlEdiSzvWahOUu5MAg3gEY4MUCszSQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":355701},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./capabilities":{"types":"./dist/agent/capabilities.d.ts","import":"./dist/agent/capabilities.js"},"./provider-methods":{"types":"./dist/providerMethods.d.ts","import":"./dist/providerMethods.js"},"./manifest-constants":{"types":"./dist/manifestConstants.d.ts","import":"./dist/manifestConstants.js"},"./manifest-conformance.json":"./fixtures/manifest-conformance.json"},"gitHead":"36c1adf92a000b460221c3f89f0f64c27d2895bb","scripts":{"test":"vitest run --config ./vitest.config.ts","build":"node ./scripts/build.mjs","prepare":"npm run build","typecheck":"tsc --noEmit -p ./tsconfig.json"},"_npmUser":{"name":"amitkhare","email":"amit@khare.co.in"},"repository":{"url":"git+https://github.com/amitkhare/zyntax-extension-sdk.git","type":"git"},"_npmVersion":"11.4.2","description":"Canonical public contracts and authoring helpers for Zyntax extensions.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vite":"6.4.3","vitest":"4.1.10","typescript":"5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/extension-sdk_1.0.20_1788554452732_0.9777131659266998","host":"s3://npm-registry-packages-npm-production"}},"1.0.21":{"name":"@zyntax/extension-sdk","version":"1.0.21","keywords":["zyntax","extension","sdk"],"author":{"name":"amitkhare"},"license":"MIT","_id":"@zyntax/extension-sdk@1.0.21","maintainers":[{"name":"amitkhare","email":"amit@khare.co.in"}],"homepage":"https://github.com/amitkhare/zyntax-extension-sdk#readme","bugs":{"url":"https://github.com/amitkhare/zyntax-extension-sdk/issues"},"dist":{"shasum":"5b6fdc30aef01ea6fda7450199bfce670eec9734","tarball":"https://registry.npmjs.org/@zyntax/extension-sdk/-/extension-sdk-1.0.21.tgz","fileCount":90,"integrity":"sha512-EWa79SGSkGxRaO6Sa1iTfEzzFun7E4N2qaP2QhkPqgfqqnjMinh3/GMj4Ax3pJNSM9le7jqF5+TrNVZ2gh0VAA==","signatures":[{"sig":"MEUCIE/LDEMJ7g19CLBM8bD26SpG46itT1Q3Cf2u59WqCpAAAiEAvQ/HhxNPuZUbyjLYYD38qKL7IA7Zt7L9V8Wx67GGgRo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":383418},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./capabilities":{"types":"./dist/agent/capabilities.d.ts","import":"./dist/agent/capabilities.js"},"./provider-methods":{"types":"./dist/providerMethods.d.ts","import":"./dist/providerMethods.js"},"./manifest-constants":{"types":"./dist/manifestConstants.d.ts","import":"./dist/manifestConstants.js"},"./manifest-conformance.json":"./fixtures/manifest-conformance.json"},"gitHead":"dfaa1ad84736ecd143f3d890f47fa0bc8ca03abd","scripts":{"test":"vitest run --config ./vitest.config.ts","build":"node ./scripts/build.mjs","prepare":"npm run build","typecheck":"tsc --noEmit -p ./tsconfig.json"},"_npmUser":{"name":"amitkhare","email":"amit@khare.co.in"},"repository":{"url":"git+https://github.com/amitkhare/zyntax-extension-sdk.git","type":"git"},"_npmVersion":"11.4.2","description":"Canonical public contracts and authoring helpers for Zyntax extensions.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vite":"6.4.3","vitest":"4.1.10","typescript":"5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/extension-sdk_1.0.21_1788605272586_0.8627358347637468","host":"s3://npm-registry-packages-npm-production"}},"1.0.22":{"name":"@zyntax/extension-sdk","version":"1.0.22","keywords":["zyntax","extension","sdk"],"author":{"name":"amitkhare"},"license":"MIT","_id":"@zyntax/extension-sdk@1.0.22","maintainers":[{"name":"amitkhare","email":"amit@khare.co.in"}],"homepage":"https://github.com/amitkhare/zyntax-extension-sdk#readme","bugs":{"url":"https://github.com/amitkhare/zyntax-extension-sdk/issues"},"dist":{"shasum":"05e37527017befaa6010052488f1a1e297793d6b","tarball":"https://registry.npmjs.org/@zyntax/extension-sdk/-/extension-sdk-1.0.22.tgz","fileCount":97,"integrity":"sha512-w22+ezB8txYKVwo6hAYxWa3vwQDUlNOxIuv/6aEBDdEJhnc2zWNGSuB8SbQpLrkVvwrHNU9FVOpIYowlSzMhKw==","signatures":[{"sig":"MEYCIQCuOLJw8LCjyvDLd3NzpR+foC0p3S1f7nXaNKbgipR2mwIhALL/+ygw8E1av+av9fhsBcJnt5Fg6CPp+edMuMlPgr6Z","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":396989},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./capabilities":{"types":"./dist/agent/capabilities.d.ts","import":"./dist/agent/capabilities.js"},"./provider-methods":{"types":"./dist/providerMethods.d.ts","import":"./dist/providerMethods.js"},"./manifest-constants":{"types":"./dist/manifestConstants.d.ts","import":"./dist/manifestConstants.js"},"./runtime-contract.json":"./dist/runtime-contract.json","./manifest-conformance.json":"./fixtures/manifest-conformance.json"},"gitHead":"07204b6ed70aa9b0c907704aeb01a3d3ac96dbab","scripts":{"test":"vitest run --config ./vitest.config.ts","build":"node ./scripts/build.mjs","prepare":"npm run build","typecheck":"tsc --noEmit -p ./tsconfig.json"},"_npmUser":{"name":"amitkhare","email":"amit@khare.co.in"},"repository":{"url":"git+https://github.com/amitkhare/zyntax-extension-sdk.git","type":"git"},"_npmVersion":"11.4.2","description":"Canonical public contracts and authoring helpers for Zyntax extensions.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vite":"6.4.3","vitest":"4.1.10","typescript":"5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/extension-sdk_1.0.22_1788642078128_0.6175123789628743","host":"s3://npm-registry-packages-npm-production"}},"1.0.23":{"name":"@zyntax/extension-sdk","version":"1.0.23","keywords":["zyntax","extension","sdk"],"author":{"name":"amitkhare"},"license":"MIT","_id":"@zyntax/extension-sdk@1.0.23","maintainers":[{"name":"amitkhare","email":"amit@khare.co.in"}],"homepage":"https://github.com/amitkhare/zyntax-extension-sdk#readme","bugs":{"url":"https://github.com/amitkhare/zyntax-extension-sdk/issues"},"dist":{"shasum":"18d99935d14aebc450b83232f01bc2ba1b708a61","tarball":"https://registry.npmjs.org/@zyntax/extension-sdk/-/extension-sdk-1.0.23.tgz","fileCount":97,"integrity":"sha512-zHPTdYxKcjXAICu4EXO4GoxnU/zl9dYptM4NFLqvxrqmGysrwvUmU+JnWH/thpanognHRqLOAgsoMbITdCnwIA==","signatures":[{"sig":"MEYCIQChboCZotbq8lEY4eAU6M5r3wzW5u145QoYikbw+IKwZQIhALO8JMPdiNHvIuU1tw207AZAeNdHpOZRcmKVkR7TiOy8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":402012},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./capabilities":{"types":"./dist/agent/capabilities.d.ts","import":"./dist/agent/capabilities.js"},"./provider-methods":{"types":"./dist/providerMethods.d.ts","import":"./dist/providerMethods.js"},"./manifest-constants":{"types":"./dist/manifestConstants.d.ts","import":"./dist/manifestConstants.js"},"./runtime-contract.json":"./dist/runtime-contract.json","./manifest-conformance.json":"./fixtures/manifest-conformance.json"},"gitHead":"83a9660c20938d660ed757876052cfffa9f363f7","scripts":{"test":"vitest run --config ./vitest.config.ts","build":"node ./scripts/build.mjs","prepare":"npm run build","typecheck":"tsc --noEmit -p ./tsconfig.json"},"_npmUser":{"name":"amitkhare","email":"amit@khare.co.in"},"repository":{"url":"git+https://github.com/amitkhare/zyntax-extension-sdk.git","type":"git"},"_npmVersion":"11.4.2","description":"Canonical public contracts and authoring helpers for Zyntax extensions.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vite":"6.4.3","vitest":"4.1.10","typescript":"5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/extension-sdk_1.0.23_1788686285271_0.012381364968637953","host":"s3://npm-registry-packages-npm-production"}},"1.0.24":{"name":"@zyntax/extension-sdk","version":"1.0.24","keywords":["zyntax","extension","sdk"],"author":{"name":"amitkhare"},"license":"MIT","_id":"@zyntax/extension-sdk@1.0.24","maintainers":[{"name":"amitkhare","email":"amit@khare.co.in"}],"homepage":"https://github.com/amitkhare/zyntax-extension-sdk#readme","bugs":{"url":"https://github.com/amitkhare/zyntax-extension-sdk/issues"},"dist":{"shasum":"621059c87045d48f989cf5a16baa9975ab88f588","tarball":"https://registry.npmjs.org/@zyntax/extension-sdk/-/extension-sdk-1.0.24.tgz","fileCount":101,"integrity":"sha512-EGkXtBHXQ+nfhICQFAM7pN4jVK2ZSRNI8x7aGtrVkBf256n0cYJQg5orYiWlkxOm4tcH/KEsLuyH8Mrnzytqyw==","signatures":[{"sig":"MEYCIQDmjoCkW7YJOPK9+8OXWifXZ43Tnj7ObBKSVi3jOJzApwIhAMvRafwESUrKMDQ24hT/hlNekBUHrQyVUi9hrr3cfqlT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":414363},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./capabilities":{"types":"./dist/agent/capabilities.d.ts","import":"./dist/agent/capabilities.js"},"./provider-methods":{"types":"./dist/providerMethods.d.ts","import":"./dist/providerMethods.js"},"./manifest-constants":{"types":"./dist/manifestConstants.d.ts","import":"./dist/manifestConstants.js"},"./runtime-contract.json":"./dist/runtime-contract.json","./manifest-conformance.json":"./fixtures/manifest-conformance.json"},"gitHead":"4d5bdd4bba808c2fd2b113519c4fa286562d7546","scripts":{"test":"vitest run --config ./vitest.config.ts","build":"node ./scripts/build.mjs","prepare":"npm run build","typecheck":"tsc --noEmit -p ./tsconfig.json"},"_npmUser":{"name":"amitkhare","email":"amit@khare.co.in"},"repository":{"url":"git+https://github.com/amitkhare/zyntax-extension-sdk.git","type":"git"},"_npmVersion":"11.4.2","description":"Canonical public contracts and authoring helpers for Zyntax extensions.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vite":"6.4.3","vitest":"4.1.10","typescript":"5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/extension-sdk_1.0.24_1788884466440_0.557685202531063","host":"s3://npm-registry-packages-npm-production"}},"1.0.25":{"name":"@zyntax/extension-sdk","version":"1.0.25","keywords":["zyntax","extension","sdk"],"author":{"name":"amitkhare"},"license":"MIT","_id":"@zyntax/extension-sdk@1.0.25","maintainers":[{"name":"amitkhare","email":"amit@khare.co.in"}],"homepage":"https://github.com/amitkhare/zyntax-extension-sdk#readme","bugs":{"url":"https://github.com/amitkhare/zyntax-extension-sdk/issues"},"dist":{"shasum":"3cc2ca71176d84df3379566622265d27e897b6c7","tarball":"https://registry.npmjs.org/@zyntax/extension-sdk/-/extension-sdk-1.0.25.tgz","fileCount":101,"integrity":"sha512-ql2ujIIqZqf2YXAvVx2Oy+T/OSwA8pPTLW4qBOEqeJfnquTS8i0ZOPCadNjHQm47pffyrQhBEAlrEh2KXz+CCw==","signatures":[{"sig":"MEYCIQCrZ1uRMhFYO0QoN8fcCV50knKbzLhGjvHc0uNR97ID3wIhALQU1JqGubchPvqQifCLXVdhpAYAgwmnPC3sUuapmqDL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":416393},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./capabilities":{"types":"./dist/agent/capabilities.d.ts","import":"./dist/agent/capabilities.js"},"./provider-methods":{"types":"./dist/providerMethods.d.ts","import":"./dist/providerMethods.js"},"./manifest-constants":{"types":"./dist/manifestConstants.d.ts","import":"./dist/manifestConstants.js"},"./runtime-contract.json":"./dist/runtime-contract.json","./manifest-conformance.json":"./fixtures/manifest-conformance.json"},"gitHead":"f4b9ff50b0a6c8823e6db341eec95bae5fb86e88","scripts":{"test":"vitest run --config ./vitest.config.ts","build":"node ./scripts/build.mjs","prepare":"npm run build","typecheck":"tsc --noEmit -p ./tsconfig.json"},"_npmUser":{"name":"amitkhare","email":"amit@khare.co.in"},"repository":{"url":"git+https://github.com/amitkhare/zyntax-extension-sdk.git","type":"git"},"_npmVersion":"11.4.2","description":"Canonical public contracts and authoring helpers for Zyntax extensions.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vite":"6.4.3","vitest":"4.1.10","typescript":"5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/extension-sdk_1.0.25_1788979986393_0.0020457807416196516","host":"s3://npm-registry-packages-npm-production"}},"1.0.26":{"name":"@zyntax/extension-sdk","version":"1.0.26","keywords":["zyntax","extension","sdk"],"author":{"name":"amitkhare"},"license":"MIT","_id":"@zyntax/extension-sdk@1.0.26","maintainers":[{"name":"amitkhare","email":"amit@khare.co.in"}],"homepage":"https://github.com/amitkhare/zyntax-extension-sdk#readme","bugs":{"url":"https://github.com/amitkhare/zyntax-extension-sdk/issues"},"dist":{"shasum":"b9f195379887f86474394da5fa4207daf3b72c4b","tarball":"https://registry.npmjs.org/@zyntax/extension-sdk/-/extension-sdk-1.0.26.tgz","fileCount":101,"integrity":"sha512-9tp/GcR2Y8hs8lUrBHB3G61b4hu00bxxxe5giIwKCHn/vDwIK5AjlSYWB7yELvyizLlMIZ1DiJaz3CpJ5l0yNw==","signatures":[{"sig":"MEUCIQDlAzPplW3zxWTnUaD0x8GK1lVvbcDIrSYbE1zqJ4ElLwIgT5L35JMk+Vy69/6EK+tMTkZ65VeVV1olPvAORRW3InI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":418734},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./capabilities":{"types":"./dist/agent/capabilities.d.ts","import":"./dist/agent/capabilities.js"},"./provider-methods":{"types":"./dist/providerMethods.d.ts","import":"./dist/providerMethods.js"},"./manifest-constants":{"types":"./dist/manifestConstants.d.ts","import":"./dist/manifestConstants.js"},"./runtime-contract.json":"./dist/runtime-contract.json","./manifest-conformance.json":"./fixtures/manifest-conformance.json"},"gitHead":"e00d0fd58f9e6745199f4388aecc59dec0c41b26","scripts":{"test":"vitest run --config ./vitest.config.ts","build":"node ./scripts/build.mjs","prepare":"npm run build","typecheck":"tsc --noEmit -p ./tsconfig.json"},"_npmUser":{"name":"amitkhare","email":"amit@khare.co.in"},"repository":{"url":"git+https://github.com/amitkhare/zyntax-extension-sdk.git","type":"git"},"_npmVersion":"11.4.2","description":"Canonical public contracts and authoring helpers for Zyntax extensions.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vite":"6.4.3","vitest":"4.1.10","typescript":"5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/extension-sdk_1.0.26_1789235289291_0.40388654750227904","host":"s3://npm-registry-packages-npm-production"}},"1.0.27":{"name":"@zyntax/extension-sdk","version":"1.0.27","keywords":["zyntax","extension","sdk"],"author":{"name":"amitkhare"},"license":"MIT","_id":"@zyntax/extension-sdk@1.0.27","maintainers":[{"name":"amitkhare","email":"amit@khare.co.in"}],"homepage":"https://github.com/amitkhare/zyntax-extension-sdk#readme","bugs":{"url":"https://github.com/amitkhare/zyntax-extension-sdk/issues"},"dist":{"shasum":"1eb1756ced83a43d4d87bffb81e598bcddbe17b4","tarball":"https://registry.npmjs.org/@zyntax/extension-sdk/-/extension-sdk-1.0.27.tgz","fileCount":106,"integrity":"sha512-pxx00Bm7MVDNhGWuFANl884xBX1co9sCtz0jt6Iy3OM69F8A96lRHd54mxFSB7skEDSTB+HXei/9w7etR8gMHg==","signatures":[{"sig":"MEQCIG8BytmWH3epwqem3CG4EC2G+XyFGTjekr30Q+wAqgGKAiArhGSkMGceIC/zeJoFboR0g38T9X8C165GVQYJSi5DBQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":447624},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./capabilities":{"types":"./dist/agent/capabilities.d.ts","import":"./dist/agent/capabilities.js"},"./provider-methods":{"types":"./dist/providerMethods.d.ts","import":"./dist/providerMethods.js"},"./manifest-constants":{"types":"./dist/manifestConstants.d.ts","import":"./dist/manifestConstants.js"},"./runtime-contract.json":"./dist/runtime-contract.json","./manifest-conformance.json":"./fixtures/manifest-conformance.json","./textmate-selector-conformance.json":"./fixtures/textmate-selector-conformance.json"},"gitHead":"85fa36457417368c6bb55735d88a8aa1f95e23b7","scripts":{"test":"vitest run --config ./vitest.config.ts","build":"node ./scripts/build.mjs","prepare":"npm run build","typecheck":"tsc --noEmit -p ./tsconfig.json"},"_npmUser":{"name":"amitkhare","email":"amit@khare.co.in"},"repository":{"url":"git+https://github.com/amitkhare/zyntax-extension-sdk.git","type":"git"},"_npmVersion":"11.4.2","description":"Canonical public contracts and authoring helpers for Zyntax extensions.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vite":"6.4.3","vitest":"4.1.10","typescript":"5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/extension-sdk_1.0.27_1789239626060_0.20923770811561115","host":"s3://npm-registry-packages-npm-production"}},"1.0.28":{"name":"@zyntax/extension-sdk","version":"1.0.28","keywords":["zyntax","extension","sdk"],"author":{"name":"amitkhare"},"license":"MIT","_id":"@zyntax/extension-sdk@1.0.28","maintainers":[{"name":"amitkhare","email":"amit@khare.co.in"}],"homepage":"https://github.com/amitkhare/zyntax-extension-sdk#readme","bugs":{"url":"https://github.com/amitkhare/zyntax-extension-sdk/issues"},"dist":{"shasum":"35bf42716e1f442175d52e3e5aa151ec3e4762a2","tarball":"https://registry.npmjs.org/@zyntax/extension-sdk/-/extension-sdk-1.0.28.tgz","fileCount":106,"integrity":"sha512-oIE/y2TWJM46gUmJvzxmvQs6k5Fu/+/MmMyiDNdU9tTZ3CgSb45coZVSvZDqG3OdoFodfYnJhLYZxC7PROeh1g==","signatures":[{"sig":"MEUCIQD3IEYYl4i1Ot2YV/3ScIsv/xpAUIC1WhCKUFtnR7RYEgIgJK3eviDv2mganlHLBesTWbcNUDhqA05qGAPlsWNvHXs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":450023},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./capabilities":{"types":"./dist/agent/capabilities.d.ts","import":"./dist/agent/capabilities.js"},"./provider-methods":{"types":"./dist/providerMethods.d.ts","import":"./dist/providerMethods.js"},"./manifest-constants":{"types":"./dist/manifestConstants.d.ts","import":"./dist/manifestConstants.js"},"./runtime-contract.json":"./dist/runtime-contract.json","./manifest-conformance.json":"./fixtures/manifest-conformance.json","./textmate-selector-conformance.json":"./fixtures/textmate-selector-conformance.json"},"gitHead":"9fff14452baf8fdeafbea6e4f743e57df42664c6","scripts":{"test":"vitest run --config ./vitest.config.ts","build":"node ./scripts/build.mjs","prepare":"npm run build","typecheck":"tsc --noEmit -p ./tsconfig.json"},"_npmUser":{"name":"amitkhare","email":"amit@khare.co.in"},"repository":{"url":"git+https://github.com/amitkhare/zyntax-extension-sdk.git","type":"git"},"_npmVersion":"11.4.2","description":"Canonical public contracts and authoring helpers for Zyntax extensions.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vite":"6.4.3","vitest":"4.1.10","typescript":"5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/extension-sdk_1.0.28_1789246056326_0.00039757175752752616","host":"s3://npm-registry-packages-npm-production"}},"1.0.29":{"name":"@zyntax/extension-sdk","version":"1.0.29","keywords":["zyntax","extension","sdk"],"author":{"name":"amitkhare"},"license":"MIT","_id":"@zyntax/extension-sdk@1.0.29","maintainers":[{"name":"amitkhare","email":"amit@khare.co.in"}],"homepage":"https://github.com/amitkhare/zyntax-extension-sdk#readme","bugs":{"url":"https://github.com/amitkhare/zyntax-extension-sdk/issues"},"dist":{"shasum":"e2bda0dae35c6f8cd6e0ae43b98cdcb924a8105f","tarball":"https://registry.npmjs.org/@zyntax/extension-sdk/-/extension-sdk-1.0.29.tgz","fileCount":118,"integrity":"sha512-SMfyWGVwGSP68zEw9Zu+QvvnQioUdHOMmLxv5GJTruY+UF3u40ef+cwhrbkZaVwtzDK2Wr6jI4t2HmsOXu6n9Q==","signatures":[{"sig":"MEYCIQCC6ibku1P3ymfIwcJoaSf6kqhvClEqzBu6qGC+DuaDVQIhANiagujI9OwlE2jLRn7jr7TAUNLx5k799JpY9KcDhFCi","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":478110},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./capabilities":{"types":"./dist/agent/capabilities.d.ts","import":"./dist/agent/capabilities.js"},"./provider-methods":{"types":"./dist/providerMethods.d.ts","import":"./dist/providerMethods.js"},"./manifest-constants":{"types":"./dist/manifestConstants.d.ts","import":"./dist/manifestConstants.js"},"./runtime-contract.json":"./dist/runtime-contract.json","./manifest-conformance.json":"./fixtures/manifest-conformance.json","./textmate-selector-conformance.json":"./fixtures/textmate-selector-conformance.json"},"gitHead":"402ec0373440b22676bd2c6ed892abacb99b06d1","scripts":{"test":"vitest run --config ./vitest.config.ts","build":"node ./scripts/build.mjs","prepare":"npm run build","typecheck":"tsc --noEmit -p ./tsconfig.json"},"_npmUser":{"name":"amitkhare","email":"amit@khare.co.in"},"repository":{"url":"git+https://github.com/amitkhare/zyntax-extension-sdk.git","type":"git"},"_npmVersion":"11.4.2","description":"Canonical public contracts and authoring helpers for Zyntax extensions.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vite":"6.4.3","vitest":"4.1.10","typescript":"5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/extension-sdk_1.0.29_1789291928253_0.43116078014727455","host":"s3://npm-registry-packages-npm-production"}},"1.0.30":{"name":"@zyntax/extension-sdk","version":"1.0.30","keywords":["zyntax","extension","sdk"],"author":{"name":"amitkhare"},"license":"MIT","_id":"@zyntax/extension-sdk@1.0.30","maintainers":[{"name":"amitkhare","email":"amit@khare.co.in"}],"homepage":"https://github.com/amitkhare/zyntax-extension-sdk#readme","bugs":{"url":"https://github.com/amitkhare/zyntax-extension-sdk/issues"},"dist":{"shasum":"8fad4dbd551a24648cbd202821067acd2ee6b779","tarball":"https://registry.npmjs.org/@zyntax/extension-sdk/-/extension-sdk-1.0.30.tgz","fileCount":126,"integrity":"sha512-QgpFpPRxudPFvojVk1ls6cL8GR+jjiiSb+p5CC5AHpbeP/oZELJDA8eIezSOBmI1UAKjobNNh9SxYxwWI6PwOQ==","signatures":[{"sig":"MEQCIAkHSSA8mCbhlys8myljBlw9RNQH5AmdSbvtUr88+10cAiAqXbEMSrPodIaJHzwr5fagKIaedSizCtkhzdlqND/9ng==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":509322},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./capabilities":{"types":"./dist/agent/capabilities.d.ts","import":"./dist/agent/capabilities.js"},"./provider-methods":{"types":"./dist/providerMethods.d.ts","import":"./dist/providerMethods.js"},"./manifest-constants":{"types":"./dist/manifestConstants.d.ts","import":"./dist/manifestConstants.js"},"./runtime-contract.json":"./dist/runtime-contract.json","./manifest-conformance.json":"./fixtures/manifest-conformance.json","./textmate-selector-conformance.json":"./fixtures/textmate-selector-conformance.json"},"gitHead":"f7859babf2b515455ea278e0e45697ed92025ff7","scripts":{"test":"vitest run --config ./vitest.config.ts","build":"node ./scripts/build.mjs","prepare":"npm run build","typecheck":"tsc --noEmit -p ./tsconfig.json"},"_npmUser":{"name":"amitkhare","email":"amit@khare.co.in"},"repository":{"url":"git+https://github.com/amitkhare/zyntax-extension-sdk.git","type":"git"},"_npmVersion":"11.4.2","description":"Canonical public contracts and authoring helpers for Zyntax extensions.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vite":"6.4.3","vitest":"4.1.10","typescript":"5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/extension-sdk_1.0.30_1789312603178_0.5172532662956815","host":"s3://npm-registry-packages-npm-production"}},"1.0.31":{"name":"@zyntax/extension-sdk","version":"1.0.31","keywords":["zyntax","extension","sdk"],"author":{"name":"amitkhare"},"license":"MIT","_id":"@zyntax/extension-sdk@1.0.31","maintainers":[{"name":"amitkhare","email":"amit@khare.co.in"}],"homepage":"https://github.com/amitkhare/zyntax-extension-sdk#readme","bugs":{"url":"https://github.com/amitkhare/zyntax-extension-sdk/issues"},"dist":{"shasum":"5f9ea11bb0dea59d974fa19b81181aac116a6a92","tarball":"https://registry.npmjs.org/@zyntax/extension-sdk/-/extension-sdk-1.0.31.tgz","fileCount":126,"integrity":"sha512-LM7OZWdkdZupTz7AnnQMYmDOcJpBwYUSHoiyT4/arAY5HUwRoDl8POK0yTBnVTwmaS91hy5Ff+L5IJ5+JK0mkg==","signatures":[{"sig":"MEUCICyA2N8hk+7uVUkyWw8m7D9fLUuhUiNxDrmx9n2Khk2MAiEA8jR1+1lZiamuer1donV7wPqjPTUR0SIPF/qwqrz9Wxo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIF1efA9n2mldqhsbR6o439KjH1pvZ99cynEegCSsXOLdAiEA3NcUgizwp7jx5Zx/n0EPgJva/Uoli/4unMByXPrxKe8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":517218},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./capabilities":{"types":"./dist/agent/capabilities.d.ts","import":"./dist/agent/capabilities.js"},"./provider-methods":{"types":"./dist/providerMethods.d.ts","import":"./dist/providerMethods.js"},"./manifest-constants":{"types":"./dist/manifestConstants.d.ts","import":"./dist/manifestConstants.js"},"./runtime-contract.json":"./dist/runtime-contract.json","./manifest-conformance.json":"./fixtures/manifest-conformance.json","./textmate-selector-conformance.json":"./fixtures/textmate-selector-conformance.json"},"gitHead":"852260aed466b0a64d24fbdfe6264a592ed9ab76","scripts":{"test":"vitest run --config ./vitest.config.ts","build":"node ./scripts/build.mjs","prepare":"npm run build","typecheck":"tsc --noEmit -p ./tsconfig.json"},"_npmUser":{"name":"amitkhare","email":"amit@khare.co.in"},"repository":{"url":"git+https://github.com/amitkhare/zyntax-extension-sdk.git","type":"git"},"_npmVersion":"11.4.2","description":"Canonical public contracts and authoring helpers for Zyntax extensions.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vite":"6.4.3","vitest":"4.1.10","typescript":"5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/extension-sdk_1.0.31_1790176783331_0.15626367540007458","host":"s3://npm-registry-packages-npm-production"}},"1.0.32":{"_id":"@zyntax/extension-sdk@1.0.32","bugs":{"url":"https://github.com/amitkhare/zyntax-extension-sdk/issues"},"dist":{"shasum":"b9503c7167b15956ecf0bc4d7e9bb56843be1ad2","tarball":"https://registry.npmjs.org/@zyntax/extension-sdk/-/extension-sdk-1.0.32.tgz","fileCount":134,"integrity":"sha512-jd7r9MTTSxg5Vg6mKbnJqgeHKZJ9kh9ky6ocMWOt+pYJhKKHGmUTcR4uAbYxsWlwlDURgoL5gQ3bLuwmqiEChw==","signatures":[{"sig":"MEUCIQD/5NJNxr6UZW2a7HkgqNUlzE0EfmCZqCqL+sh2ida4rQIgYcHfPl57KO1ZRwyK20ojNnN9OAdfIXjare9SiUHcDo4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQC9smKbJmh5Br/UuXGHa4zLkRQIqrqUBKh3fLr2ehqr6QIhAM/BICRQkj8CkImoFf5Z8QGiQsCrVPsNfkgaBcUPHZxK"}],"unpackedSize":577726},"main":"./dist/index.js","name":"@zyntax/extension-sdk","type":"module","types":"./dist/index.d.ts","author":{"name":"amitkhare"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./capabilities":{"types":"./dist/agent/capabilities.d.ts","import":"./dist/agent/capabilities.js"},"./provider-methods":{"types":"./dist/providerMethods.d.ts","import":"./dist/providerMethods.js"},"./manifest-constants":{"types":"./dist/manifestConstants.d.ts","import":"./dist/manifestConstants.js"},"./runtime-contract.json":"./dist/runtime-contract.json","./manifest-conformance.json":"./fixtures/manifest-conformance.json","./textmate-selector-conformance.json":"./fixtures/textmate-selector-conformance.json"},"gitHead":"d7bad454c5bb9d338b70d6a8bb80177c81af8116","license":"MIT","scripts":{"test":"vitest run --config ./vitest.config.ts","build":"node ./scripts/build.mjs","prepare":"npm run build","typecheck":"tsc --noEmit -p ./tsconfig.json"},"version":"1.0.32","_npmUser":{"name":"amitkhare","email":"amit@khare.co.in"},"homepage":"https://github.com/amitkhare/zyntax-extension-sdk#readme","keywords":["zyntax","extension","sdk"],"repository":{"url":"git+https://github.com/amitkhare/zyntax-extension-sdk.git","type":"git"},"_npmVersion":"11.4.2","description":"Canonical public contracts and authoring helpers for Zyntax extensions.","directories":{},"maintainers":[{"name":"amitkhare","email":"amit@khare.co.in"}],"sideEffects":false,"_nodeVersion":"22.14.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vite":"6.4.3","vitest":"4.1.10","typescript":"5.9.3"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/extension-sdk_1.0.32_1790182337344_0.40243678716028164"}}},"time":{"created":"2026-08-26T03:52:12.904Z","modified":"2026-09-23T16:52:17.639Z","1.0.0":"2026-08-26T03:52:13.229Z","1.0.1":"2026-08-26T04:04:59.852Z","1.0.2":"2026-08-29T11:26:43.329Z","1.0.3":"2026-08-29T17:29:34.329Z","1.0.4":"2026-08-29T19:18:40.485Z","1.0.5":"2026-08-29T19:44:17.900Z","1.0.6":"2026-08-30T06:11:10.947Z","1.0.7":"2026-08-30T06:52:11.320Z","1.0.8":"2026-08-30T08:57:15.229Z","1.0.9":"2026-08-30T10:26:29.121Z","1.0.10":"2026-08-30T12:23:23.253Z","1.0.11":"2026-08-30T19:51:32.830Z","1.0.12":"2026-08-31T06:00:46.146Z","1.0.13":"2026-08-31T07:35:56.406Z","1.0.14":"2026-08-31T10:17:54.655Z","1.0.15":"2026-08-31T14:27:50.204Z","1.0.16":"2026-09-04T07:54:25.785Z","1.0.17":"2026-09-04T08:16:36.926Z","1.0.18":"2026-09-04T13:05:57.236Z","1.0.19":"2026-09-04T20:13:51.193Z","1.0.20":"2026-09-04T20:40:52.911Z","1.0.21":"2026-09-05T10:47:52.723Z","1.0.22":"2026-09-05T21:01:18.287Z","1.0.23":"2026-09-06T09:18:05.434Z","1.0.24":"2026-09-08T16:21:06.608Z","1.0.25":"2026-09-09T18:53:06.541Z","1.0.26":"2026-09-12T17:48:09.448Z","1.0.27":"2026-09-12T19:00:26.209Z","1.0.28":"2026-09-12T20:47:36.478Z","1.0.29":"2026-09-13T09:32:08.389Z","1.0.30":"2026-09-13T15:16:43.333Z","1.0.31":"2026-09-23T15:19:43.423Z","1.0.32":"2026-09-23T16:52:17.436Z"},"bugs":{"url":"https://github.com/amitkhare/zyntax-extension-sdk/issues"},"author":{"name":"amitkhare"},"license":"MIT","homepage":"https://github.com/amitkhare/zyntax-extension-sdk#readme","keywords":["zyntax","extension","sdk"],"repository":{"url":"git+https://github.com/amitkhare/zyntax-extension-sdk.git","type":"git"},"description":"Canonical public contracts and authoring helpers for Zyntax extensions.","maintainers":[{"name":"amitkhare","email":"amit@khare.co.in"}],"readme":"# Zyntax Extension SDK\n\n`@zyntax/extension-sdk` is the canonical public contract for executable Zyntax\nextension providers. It contains plain-data manifest and RPC types, canonical\ncapability names, and small authoring helpers. It has no editor, WebView,\nfilesystem, network, native-command, or app-private dependencies.\n\nExtension manifests distinguish required `dependencies` from `integrations`.\nRequired dependencies are installed with the extension and must activate.\nIntegrations authorize composition with compatible optional packages. They are\nnever installed implicitly and never block activation. `extensions.manage` can\nrequest a user-reviewed install of a declared integration. Both arrays are explicit.\n\nProvider code is bundled by the Zyntax extension tooling into a self-contained\n`providers/*.js` module. Import only this package for host DTOs and provider\nhelpers; do not import application source or tooling internals.\n\nTooling consumes the `provider-methods`, `manifest-constants`, and `capabilities`\nsubpaths so manifest validation and provider bundle validation share one public\nvocabulary.\n\n`EXTENSION_HOST_API_METHODS` and `EXTENSION_HOST_API_INTERACTIVE_METHODS` define\nthe host method vocabulary and which calls wait for user interaction or observed\nwork. The build exports `runtime-contract.json` from these constants and the\nprovider methods for non-JavaScript hosts. Host adapters consume this artifact\ninstead of maintaining separate method lists. Provider method types are generated\nfrom the same TypeScript source as their runtime values.\n\n```ts\nimport {\n  EXTENSION_API_VERSION,\n  defineCompletionProvider,\n  type ExtensionCompletionProvider,\n} from \"@zyntax/extension-sdk\";\n\nexport const extensionApiVersion = EXTENSION_API_VERSION;\n\nexport const createCompletionProvider = defineCompletionProvider(\n  (): ExtensionCompletionProvider => ({\n    async provideCompletions(request, cancellation) {\n      await cancellation.checkpoint();\n      return null;\n    },\n    dispose() {},\n  }),\n);\n```\n\nManifest validation remains host/tooling-owned. The SDK does not grant\npermissions or platform access.\n\n## App variants\n\nAn optional signed manifest field limits an extension to specific app editions:\n\n```json\n\"appVariants\": [\"full\", \"dev\"]\n```\n\nOmit `appVariants` to support all editions. When present, it must be a nonempty\nlist of unique `lite`, `full`, or `dev` values; order does not matter. Dev is an\nexplicit edition, not a bypass. The host checks compatibility when installing\nand activating packages, including required dependencies. The existing package\nsignature protects this plain JSON field; it is not an encrypted licensing system.\nTool/runtime requirements and `engines.zyntax` remain separate checks.\n\n## Theme scope selectors\n\n`parseTextMateSelector(value)` validates a nonempty, trimmed selector and returns\nan immutable `TextMateSelector` AST; invalid or unsupported syntax throws\n`TypeError`. It has no editor or matching dependency. This bounded subset of\n[TextMate scope selectors](https://macromates.com/textmate/manual/references#scope-selector)\nsupports descendant paths, direct-parent `>`, wildcard scope names, parentheses,\nunary exclusion `-`, intersection `&`, alternatives `|` and comma, and binary\nsubtraction. Hyphens inside scope names remain literal: `a-b` is one name,\nwhile `a -b` subtracts `b`.\n\nIn host matching, a whole dot-separated `*` atom matches one scope atom; normal\nprefix specialization can still match further atoms. For example, `source.*`\nmatches `source.js` and `source.js.embedded`, but not `source`. Asterisks embedded\ninside an atom remain literal, not a general glob expression. The parser retains\nthe existing scope-name vocabulary without rewriting it.\n\nPaths bind first. Inside a group or selector, `|`, `&`, and binary `-` bind\nequally and associate left to right, as in TextMate; comma is a lower-precedence\nalternative. Thus `a | b - c` means `(a | b) - c`. Adjacent scope names form a\npath; separate grouped expressions require an operator. Anchors (`^`, `$`),\nside/injection filters (`L:`, `R:`, `B:`), and unsupported characters are\nrejected rather than ignored. Only spaces and tabs are internal whitespace.\n\nThe AST uses `path` nodes with `scopes` and between-scope `relations`\n(`descendant` or `child`), `any`/`all` nodes with `terms`, and `not` nodes\nwith a `term`. Subtraction is `all(left, not(right))`; groups retain their\nmeaning without a wrapper node. Host matchers evaluate exclusions against the\nsame scope stack as positive paths, not against a fallback stack after a miss.\nOnly matching positive paths contribute specificity; negated conditions filter\nmatches. The SDK defines syntax, not a rendering engine or VS Code theme-rendering\nequivalence.\n\n`TEXTMATE_SELECTOR_RULES` limits input to 512 UTF-16 code units, 24 total scope\nnames plus child operators, 64 emitted AST nodes, and nesting depth 8. A group\nor unary minus increases nesting by one from zero; binary operators do not.\nPaths, binary combinations, and each unary or subtraction negation count as\nnodes; parentheses do not. Existing ASCII scope-name syntax is preserved in\n`scopePattern`. The build exports these rules as `textMateSelectors` in\n`runtime-contract.json`. JavaScript and native validators consume the same\n`textmate-selector-conformance.json` fixture, including boundary and AST cases.\nUnscoped theme defaults use the asset's empty scope list, not an empty selector.\n\n## Cooperative cancellation\n\nEvery provider cancellation token exposes `checkpoint()`. Awaiting it yields\nisolated provider execution to the host event queue so queued cancellation and\ncontrol work can run, then rejects with the same host cancellation error as\n`throwIfCancellationRequested()` when cancellation is requested. CPU-bound\nprovider work must await checkpoints at safe intervals; reading\n`isCancellationRequested` or calling `throwIfCancellationRequested()` alone\ndoes not yield execution to the host.\n\nProviders must not publish partial state from work interrupted by a rejected\ncheckpoint. The synchronous token members remain useful before and after\nalready-asynchronous boundaries, while `checkpoint()` is the cooperative\nboundary for long-running isolated work.\n\n## Language filename associations\n\nA contributed editor language always declares `extensions` and may also declare\nexact `filenames` or basename-only `filenamePrefixes`. Prefix matching is\ncase-insensitive. Each prefix must be non-empty and contain no `/` or `\\` path\nseparator; the host canonicalizes prefixes before matching.\n\nWhen several associations match, the host chooses an exact filename first, then\nthe longest matching filename prefix, then the longest matching compound\nextension. This lets a language claim a filename family such as `Dockerfile.*`\nwithout enumerating every basename.\n\n```json\n{\n  \"contributes\": {\n    \"languages\": [{\n      \"id\": \"dockerfile\",\n      \"extensions\": [],\n      \"filenames\": [\"Dockerfile\"],\n      \"filenamePrefixes\": [\"Dockerfile.\"]\n    }]\n  }\n}\n```\n\n## Notebook file associations\n\nEvery contributed notebook type explicitly declares both `extensions` and\n`filenames`. At least one of those arrays must be non-empty. Extensions are\ncanonical lowercase suffixes that include the leading dot, such as `.ipynb`;\nfilenames are exact basenames without path separators. Matching is\ncase-insensitive, including compound extensions.\n\nThese signed associations let the host offer a serializer only for files it\nclaims. The host also enforces the association when deserializing and\nserializing, so a notebook provider cannot be selected for an unrelated file.\nNotebook types do not create editor-language identities, and the host does not\ninfer associations from a type name or inspect file contents to choose one.\n\n```json\n{\n  \"contributes\": {\n    \"notebookTypes\": [{\n      \"id\": \"jupyter-notebook\",\n      \"type\": \"jupyter-notebook\",\n      \"label\": \"Jupyter Notebook\",\n      \"module\": \"providers/jupyter-notebook.js\",\n      \"export\": \"createJupyterNotebookSerializerProvider\",\n      \"extensions\": [\".ipynb\"],\n      \"filenames\": [],\n      \"priority\": 100\n    }]\n  }\n}\n```\n\n## Bundled package lifecycle\n\nAn extension `extension.json` or managed-tool `tool.json` may declare the\noptional top-level field `\"required\": true`. The field has authority only when\nthat exact package id is shipped in the APK's immutable package bundle. Such a\npackage remains visible and updateable through the normal package pipeline, but\nthe host does not allow its removal. Missing or `false` means removable. A Store\nor file-installed package cannot make itself non-removable by declaring the\nfield, and an update cannot change the APK-owned lifecycle policy.\n\nBundling itself is established by placing a signed `.zntx` or `.ztool` in the\nAPK bundle directory; it is not another manifest field or a separate package\nformat. Managed-tool schema and archive validation remain owned by the managed\ntooling, which applies the same optional boolean contract to `tool.json`.\n\nManaged-tool package paths use exact case-sensitive POSIX identity on Android.\n`isManagedToolPath` checks the shared path syntax: relative forward-slash paths,\nprintable ASCII, at most `MANAGED_TOOL_MAX_PATH_BYTES` (384) bytes overall and\n`MANAGED_TOOL_MAX_PATH_SEGMENT_BYTES` (96) bytes per segment. Empty, `.` and `..`\nsegments, surrounding spaces, trailing dots, and `<>:\"\\\\|?*` are rejected. Paths\nare never lowercased or rewritten. `payload/include/Name.h` and\n`payload/include/name.h` are distinct files, as are case-distinct directories.\nPayloads containing case-distinct names require a case-sensitive build filesystem,\nsuch as a Linux container, so staging preserves both names.\n\nBuilders and installers still reject exact duplicate paths, file/directory/link\nconflicts, unsafe paths, and links outside the declared package graph. Archive\nmetadata remains at the package root; tool files and resources remain under\n`payload/`. This does not change extension archive paths or manifest version 1.\n\n## Notebook kernels\n\nA notebook-kernel provider returns only a symbolic runtime descriptor. Its\n`executable` names one manifest runtime requirement and one provider-neutral\ncommand. Literal arguments and signed managed-tool resource references are\nallowed; native paths, environment values, and fallback commands are not. The\nhost resolves the currently selected compatible runtime and signed resources,\nthen owns the adapter process and its full-duplex framed JSON-RPC session. The\npublic protocol defines initialization, execution, strictly ordered\nstatus/output/comm events, kernel-to-host input requests, explicit interrupt and\nrestart generations, cancellation, and idempotent shutdown. Output events are\nauthoritative and are not duplicated in the final execution result. Event\nsequence numbers increase across the complete adapter session, including kernel\nrestarts. A restart response commits the new generation before the adapter emits\nany event for that generation.\n\nKernel adapters remain runtime-neutral. They must not expose native paths,\nprocess handles, transport sockets, or renderer objects, and the host never\ninfers a runtime from a notebook language or file name.\n\n```ts\nconst descriptor = {\n  kind: \"runtime\" as const,\n  executable: {\n    requirement: \"kernel-runtime\",\n    command: \"runtime\",\n  },\n  args: [{\n    $toolResource: {\n      tool: \"publisher.kernel-adapter\",\n      resource: \"adapter\",\n    },\n  }],\n  protocol: \"zyntax-notebook-jsonrpc\" as const,\n};\n```\n\n## Runtime Manager\n\nRuntime Manager owns development runtimes and their activation in each project.\nThe user selects a device default for each stable family such as `python`, `node`,\n`java`, or `rust`; a shared project selection can override it. Each extension\nruntime requirement explicitly supports the selected runtime, one exact\nextension-managed runtime, or both. The host never searches terminal `PATH`.\n\nA consumer declares `runtimeRequirements`. The `runtimes.execute` permission\nauthorizes runtime execution and the project-scoped `snapshot`, `select` and\n`observe` host methods. The three exact source forms are:\n\n- `{ \"selected\": true }` uses only a compatible project selection or inherited\n  device default.\n- `{ \"managed\": { \"tool\": \"publisher.runtime-tool\" } }` uses only that exact\n  owned managed-tool dependency.\n- `{ \"selected\": true, \"managed\": { \"tool\": \"publisher.runtime-tool\" } }`\n  uses an explicit project selection when present. Without a project override,\n  it uses a compatible device default first and the managed runtime when no usable\n  default is available.\n\nFor requirements allowing selected runtimes, an explicit project selection that\nbecomes missing, changed, incompatible or unverifiable blocks new execution until\nit is replaced or cleared; it never switches to a managed fallback. The declared\nfallback for an unusable device default does not change the shared selection, and\nthe default's failure remains diagnosable even when managed execution can continue.\n\nSDK `1.0.31` adds `host[\"runtimes.execute\"]`. Runtime selection requests name an explicit\n`project` and one manifest-local `requirement`; `project: null` means the current\nExplorer project, while a string names an owned selected project belonging to\nthe active Explorer context. Stale or unrelated project references are rejected.\nThe host keys shared selections by the active Explorer root's native identity and\nruntime family; selected subprojects share their parent Explorer project's choice.\nExtensions targeting that project observe the same choice even when their project\nreferences and requirement IDs differ.\n\n`snapshot({ project, requirement }, cancellation)` returns\n`{ project, requirement, revision, candidates, selection }`. Candidates contain\ncompatible, selectable terminal-package runtimes and native-admitted existing\ninstallations. Extension-managed\nfallbacks remain host-resolved and cannot be selected through this API. The\neffective `selection` reuses the existing ready/unavailable runtime type. With no\nExplorer project, `project: null` can read the device default resolution.\n\n`select({ project, requirement, expectedRevision, identity }, cancellation)`\nsets the shared project override to an exact identity from the snapshot.\n`identity: null` removes that override and resumes the declared default\nresolution. The requirement must declare `sources.selected: true`. Stale\nrevisions, changed installations and unauthorized sources are rejected; with no\nExplorer project, `project: null` fails with `projectRequired`. Extensions cannot\nchange the device default. Runtime resolution and command activation remain\nhost-owned; runtime selection requests supply no executable paths or environment maps.\n\n`observe({ project, requirement, afterRevision }, cancellation)` returns the\ncurrent snapshot for zero, then waits for a newer revision without timer polling.\nRevisions are safe nonnegative integers; negative, unsafe and future revisions\nare rejected. Changes may coalesce into one current snapshot. Cancelling an\nobservation leaves the selection and project work intact, and owner disposal\ncancels pending waits. `snapshot` and `observe` do not change the selection.\n\nSDK `1.0.32` adds\n`selectInstallation({ project, requirement, expectedRevision, installation }, cancellation)`.\nIt admits an existing app-private installation and selects it atomically through\nthe same project/family authority. The caller needs `terminal`, a requirement\nwith `sources.selected: true`, the referenced path permissions and a trusted\ncurrent project. It cannot write device defaults or register for another owner.\nNo download, installation, copying or startup-file edit is performed.\n\n```ts\nconst installation = {\n  id: \"chosen-runtime\",\n  label: \"Selected runtime installation\",\n  capabilities: [\"process.execute\"],\n  commands: [{\n    id: \"runtime\",\n    path: { kind: \"selectedPath\", file: selectedDirectory.id, path: [\"bin\", \"runtime\"] },\n  }],\n  versionProbe: { command: \"runtime\", args: [\"--version\"], stream: \"stdout\", prefix: \"runtime \" },\n  activation: {\n    environment: { TOOL_HOME: { kind: \"selectedPath\", file: selectedDirectory.id, path: [] } },\n    path: [{ kind: \"selectedPath\", file: selectedDirectory.id, path: [\"bin\"] }],\n  },\n} satisfies ExtensionRuntimeInstallation;\n```\n\nThe host verifies executable authority independently of picker grants, derives\nthe version with the existing bounded probe and fingerprints the admitted launch\ngraph. A grant to read a directory does not permit executing an external binary.\nThe resulting source is `{ kind: \"installed\", owner, installationId }` inside\nthe existing opaque runtime identity. Other compatible extensions and the app\ncan select it using ordinary `select`; there is no second custom-tool selection.\nDisabling/removing its owner or changing an admitted installation makes explicit\nselections unavailable. An owner-local installation ID must identify one intended\ninstallation; replacing its declaration never silently rebinds pinned identities.\n\nInstallation command IDs and capability arrays are sorted and unique; `bash`\nand `sh` remain reserved shell aliases. Existing provider limits apply: one to\n32 commands, one to 32 base capabilities and at most 32 per command (64 in their\nunion), at most 16 probe arguments of 512 control-free code units each, a nonempty\nprobe prefix up to 160 code units and a label up to 120 code units. The complete\ndeclaration is limited to 64 KiB UTF-8 JSON. Activation metadata accepts only\nexisting typed filesystem references, with the same environment/PATH bounds\ndescribed below; it cannot depend on another selected runtime or store secrets.\n\nTerminal-package descriptors additionally expose optional verified\n`package: { repository, name }` metadata. Match this provenance to declared\ndevelopment-stack requirements; never guess provider IDs or installation paths,\nor select a package solely because its version resembles the requested tool.\n\n```json\n{\n  \"permissions\": [\"runtimes.execute\"],\n  \"toolRequirements\": [{\n    \"id\": \"zyntax.python-runtime\",\n    \"version\": \">=3.14.6 <4\",\n    \"platforms\": [{ \"os\": \"android\", \"architecture\": \"arm64-v8a\" }],\n    \"capabilities\": [\"runtime.python\"]\n  }],\n  \"runtimeRequirements\": [{\n    \"id\": \"python\",\n    \"runtime\": \"python\",\n    \"minimumVersion\": \"3.12.0\",\n    \"capabilities\": [\"process.execute\"],\n    \"sources\": {\n      \"selected\": true,\n      \"managed\": { \"tool\": \"zyntax.python-runtime\" }\n    }\n  }]\n}\n```\n\nThe managed `tool` must name an entry in the same manifest's\n`toolRequirements`. Its signed release must be a runtime tool whose\n`projectRuntime` family, version, and capabilities satisfy the requirement.\nRuntime executions continue to declare only `{ requirement, command }`; for a\nmanaged runtime, the host resolves that command through the signed\n`projectRuntime.commands` mapping. Extensions never duplicate its entrypoint,\nruntime root, executable path, or environment.\n\nRuntime inventory, verification, selection, and execution are host-owned. A\ndeclarative `contributes.runtimeProviders` entry may describe how a signed\nterminal-package repository exposes an installed runtime; it does not inspect\npackages or execute code. The host verifies the exact owning package and\nprefix-relative command files, performs the bounded version probe, and then adds\nthe candidate to Runtime Manager. It never searches `PATH`.\n\n```json\n{\n  \"permissions\": [\"terminal.packages\"],\n  \"contributes\": {\n    \"runtimeProviders\": [{\n      \"id\": \"termux.node\",\n      \"runtime\": \"node\",\n      \"label\": \"Terminal Node.js\",\n      \"capabilities\": [\"process.execute\"],\n      \"package\": { \"repository\": \"termux-main\", \"name\": \"nodejs\" },\n      \"commands\": [\n        { \"id\": \"node\", \"path\": \"bin/node\" },\n        {\n          \"id\": \"npm\",\n          \"path\": \"lib/node_modules/npm/bin/npm-cli.js\",\n          \"package\": { \"repository\": \"termux-main\", \"name\": \"npm\" },\n          \"capabilities\": [\"package-manager.npm\"]\n        }\n      ],\n      \"versionProbe\": {\n        \"command\": \"node\",\n        \"args\": [\"--version\"],\n        \"stream\": \"stdout\",\n        \"prefix\": \"v\"\n      }\n    }]\n  }\n}\n```\n\nThe top-level `package` is the required primary owner. Commands use that owner\nunless they declare an optional companion `package`. Companion commands and\ntheir sorted, unique capabilities appear only while that package owns the\ndeclared file. An owned command may be an ELF or a bounded shebang script. A\nscript is exposed only when its interpreter resolves to another exact command\ndeclared by the same provider; the host materializes that interpreter and the\nscript path without consulting ambient `PATH`, and rejects missing or cyclic\ninterpreter chains. The version probe must use a primary-owned command, so a missing\ncompanion never removes the runtime itself. Managed `.ztool` runtimes instead\ndeclare the runtime they actually contain; they do not act as package-provider\nregistries. Selected and managed runtimes share the same provider-neutral\nsymbolic commands; no provider can declare an absolute native path, shell\nfragment, or inferred fallback command.\n\nSDK `1.0.32` adds optional provider `activation` metadata, selected atomically\nwith that provider's commands. `environment` maps nonreserved keys to\n`{ path, package? }`; `path` is an ordered list of the same references. Each path\nis terminal-prefix-relative and must remain owned by the primary package or\nthe explicit companion package. For example, a Java provider can declare\n`JAVA_HOME: { path: \"lib/jvm/java-21-openjdk\" }` and a PATH directory\n`{ path: \"lib/jvm/java-21-openjdk/bin\" }`. This keeps command and location\nselection under the same authority without tool-specific host logic.\n\n### Shared project activation\n\nSDK `1.0.32` also adds persistent project activation through the existing\n`runtimes.execute` permission and runtime manager revision. Declare\n`runtimeActivation: { environment: [\"TOOL_HOME\", \"BUILD_MODE\"], commands: [\"build\"] }`\nand both `runtimes.execute` and `terminal` permissions. Runtime requirements are\nnot needed for an activation-only extension. Empty declaration arrays permit a\nPATH-only contribution. Environment and command names must be unique; aliases\nmatch `[a-z0-9][a-z0-9._-]{0,63}`, excluding the reserved `bash` and `sh` routes.\n\n- `activationSnapshot({ project }, cancellation)` returns\n  `{ project, revision, activation }`, containing only the calling extension's\n  effective contribution, never another owner's selected-file references.\n- `activationUpdate({ project, expectedRevision, activation }, cancellation)`\n  atomically replaces that owner's entire project contribution. `activation: null`\n  removes its override and resumes inherited defaults; an empty definition is an\n  explicit empty contribution. Other owners' state is not replaced.\n- `activationObserve({ project, afterRevision }, cancellation)` uses the same\n  cancellable observation rules as `observe`; zero reads immediately.\n\nProject scope has the same Explorer identity and selected-project checks as\nruntime selection. Writes require a trusted current project, and extensions\ncannot write device defaults. Without an Explorer project, `project: null` may\nread inherited defaults but updates fail with `projectRequired`.\n\nAn activation definition has three required fields:\n\n```ts\nconst activation = {\n  environment: {\n    TOOL_HOME: { kind: \"selectedPath\", file: selectedDirectory.id, path: [] },\n    BUILD_MODE: \"release\",\n  },\n  path: [{ kind: \"selectedPath\", file: selectedDirectory.id, path: [\"bin\"] }],\n  commands: {\n    build: {\n      command: \"bash\",\n      args: [{ kind: \"extensionResource\", path: \"resources/build.bash\" }, \"build\"],\n    },\n  },\n} satisfies ExtensionRuntimeActivationDefinition;\n```\n\nEnvironment values and prefix argv reuse typed `selectedPath`, `packagePath`\nand `extensionResource` task bindings, or bounded literals. Persistent activation\nexcludes `projectPath` and secret bindings. `{ kind: \"installedPath\",\npath: absolutePath }`\nreferences an existing cached installation inside the shared terminal home or\nprefix. The host canonicalizes and revalidates it, rejecting controls, colons,\ntraversal, symlink escapes and extension-private locations. Explicit custom\nlocations outside those roots must use an approved `selectedPath`. These methods\ndo not install, download, copy or relocate tools; existing caches remain in use.\n\nTask environment/argv and activation environment/argv can also contain\n`{ kind: \"runtimeEnvironment\", requirement: \"java\", name: \"JAVA_HOME\" }`.\nThis read-only reference resolves a location declared in the selected provider's\n`activation.environment`. The requirement must belong to the caller and allow\nselected runtimes. Its project scope comes from the enclosing task or activation,\nand its value is captured with the same runtime graph as executable commands.\nIt never reads ambient environment variables or exports a raw native path to the\nextension. Missing metadata or an unavailable selection fails explicitly. This\nkeeps custom and packaged runtime commands and homes under one shared selection.\n`managedTool` tasks reject this binding just as they reject `packagePath`; it is\nalso excluded from PATH lists and installation declarations to prevent recursive\nruntime dependencies.\n\nThere are at most 32 environment bindings (24 KiB resolved total), 16 PATH\ndirectories, 32 command aliases and 32 prefix arguments per alias. Environment\nliterals retain the 512-code-unit, control-free task limit; command literals\nretain the 16 KiB UTF-8 per-literal and 64 KiB resolved-argv limits. Alias targets\nare bare terminal commands matching `[A-Za-z0-9][A-Za-z0-9._+-]{0,127}`, resolved\nnatively before activation aliases are applied; caller argv follows the prefix.\nAn extension can supply its signed launcher resource as an argument to native\nBash, keeping tool-specific flags and configuration in the extension. The host\ndoes not generate launcher scripts or redirect explicit paths such as `./gradlew`.\n\nPATH is an ordered list of admitted directories, not a writable environment key.\nThe task-input protected variables remain reserved: `PATH`, `SHELL`, `PREFIX`,\n`HOME`, `TMPDIR`, `BASH_ENV`, `ENV`, `TERMUX_*`, `ZYNTAX_*`, `LD_*` and Android\nsubstrate variables. Undeclared keys, conflicting owner contributions, stale\nrevisions and invalidated references are rejected. Native launch admission\nrevalidates enabled owners and resolves one immutable environment/PATH/command\nsnapshot for new shells and terminal-domain tasks; running processes keep their\ncaptured activation. Consumers should observe this shared state instead of\nreapplying stale local copies of tool selections.\n\nThe exported `isExtensionRuntimeActivationDeclaration`,\n`isExtensionRuntimeActivationDefinition`, `isExtensionRuntimeActivationPath` and\n`isExtensionRuntimeActivationEnvironmentKey` guards share strict wire validation\nwith host adapters. They do not grant filesystem authority or replace native\nownership, permission, existence and resolved-size checks.\n`isExtensionRuntimeInstallation` and `isExtensionRuntimeEnvironmentReference`\nprovide the corresponding structural guards for existing installations and\nsymbolic runtime metadata references.\n\nA runtime task references its manifest-local requirement and a provider-neutral\ncommand id. Its required console mode chooses an interactive PTY or captured\noutput without changing runtime resolution:\n\n```ts\nconst execution = {\n  kind: \"runtime\" as const,\n  requirement: \"python\",\n  command: \"python\",\n  args: [\"main.py\"],\n  workingDirectory: [],\n  console: \"terminal\" as const,\n};\n```\n\n`ExtensionRuntimeCommandReference` is the same two-field executable reference\nfor typed host process descriptors. Arbitrary provider configuration uses the\nreserved, explicit `ExtensionRuntimeCommandConfigurationReference` sentinel:\n\n```json\n{\n  \"executable\": {\n    \"$runtimeCommand\": {\n      \"requirement\": \"language-runtime\",\n      \"command\": \"runtime\"\n    }\n  }\n}\n```\n\nThe host interprets only the tagged value; an ordinary JSON object containing\n`requirement` and `command` remains provider-owned JSON. The two strict\nvalidators check the exact path-free shapes. The host additionally verifies\nthat `requirement` belongs to the installed manifest and that the selected\nprovider exposes `command`.\n\nPublic runtime identities contain only an opaque installed-source identity,\nstable candidate id, and exact observation fingerprint. Native locations never cross\nthe extension boundary. If an installation changes, its fingerprint changes\nand the affected selection becomes explicitly unavailable until a current\ncandidate is selected.\n\n## Incremental structural documents\n\nA structural-region provider owns incremental parser state for each source\ndocument that the host opens. `openDocument` receives an opaque, non-empty\n`documentId` and the only complete source-text snapshot transferred for that\ndocument generation. The provider retains the corresponding text and parser\nstate.\n\nThe host serializes lifecycle calls for each `documentId`.\n`applyDocumentChanges` advances the open document from `baseVersion` to exactly\n`baseVersion + 1` without changing its generation. Its changes are ordered,\nnon-overlapping UTF-16 ranges in the base revision, and every range in the batch\nuses that same coordinate space. Lifecycle mutations commit atomically. The host\ndoes not cancel them during ordinary editing; cancellation is reserved for\nteardown. A generation change closes the old document and opens a new identity\nwith a fresh source snapshot.\n\nEach successful open or change acknowledges the exact `documentId`, version,\nand generation that was committed. `provideRegion` asynchronously returns the\nvalidated root-to-owner path for one position and association.\n`provideRegionDocument` asynchronously returns the complete region document\nwhen a document-wide consumer needs it. Both target an exact version and\ngeneration, and both results echo the `documentId`, source URI, version,\ngeneration, and provider id so the host can reject stale or cross-document\noutput. The host cancels superseded queries and retains only the latest result;\nimplementations must yield cooperatively and observe the cancellation token\nwhile preparing structure by awaiting `cancellation.checkpoint()` at safe\nintervals.\n\n`closeDocument` is required and idempotent. It echoes the released\n`documentId`; disposing the provider releases every still-open document. The\ncontract has no stateless `provideRegions(snapshot)` method or compatibility\nalias.\n\nLanguage-server mappings declare only verified routes. Position routes are\n`completion`, `hover`, `signatureHelp`, `definition`, `implementation`,\n`typeDefinition`, `references`, `rename`, `codeActions`, `typeHierarchy`, and\n`documentHighlights`. Document/workspace routes are `diagnostics`,\n`semanticTokens`, `workspaceSymbols`, `documentSymbols`, `foldingRanges`, and\n`documentFormatting`. The host negotiates the matching standard LSP methods and\nroutes parser-owned source or virtual coordinates; it never infers a claim from\nthe server, language, filename, or installed package.\n\nA language-server contribution may declare `projectFiles`, a non-empty list of\nat most `EXTENSION_LSP_MAX_PROJECT_FILES` (32) distinct project-relative file paths.\nThe server is eligible when **any** listed path is an actual regular file in the\nopen project. Matching is exact and case-sensitive, uses the current filesystem\nrather than unsaved editor buffers, and is re-evaluated when the project or those\nfiles change. No directory scan or glob matching is performed. Omitting\n`projectFiles` makes the server unconditional.\n\nFor evaluated project settings, declare `configurationProvider: { module, export,\nwatchFiles }` on the language server instead of inline `initializationOptions` or\n`workspaceConfiguration`. Export a `defineLanguageServerConfigurationProvider`\nfactory from the usual isolated provider module. Its\n`provideLanguageServerConfiguration({ project, projectUri, serverId }, cancellation)`\nreturns the complete `{ initializationOptions?, workspaceConfiguration? }` JSON.\nThe host uses the server's granted project scope and existing cancellation/payload\nlimits. Results do not grant resource access or executable authority.\n\n`watchFiles` uses the same exact paths and non-empty 32-file limit as `projectFiles`.\nCreation, content changes and deletion invalidate only the affected server's\nconfiguration. The host cancels stale work and restarts that server with current\ndocument snapshots; it does not evaluate project code or poll on keystrokes.\nMalformed configuration fails explicitly; no old configuration is substituted.\nThe provider kind `languageServerConfiguration` belongs to its server and has no\nindependent activation event. Inline and provider configurations cannot be combined.\n\n`isExtensionProjectFilePath` validates the shared path syntax. Paths use forward\nslashes and contain at most `EXTENSION_LSP_MAX_PROJECT_FILE_LENGTH` (384) UTF-16\ncode units. Unicode and interior spaces are allowed; absolute paths, empty,\n`.` or `..` segments, surrounding segment whitespace, control characters,\nbackslashes, colons, and glob characters (`*?[]{}`) are rejected. Conditions\nnever authorize access outside the open project.\n\nEligible servers retain their declared language priority. At equal priority, a\nmatching project-conditioned exclusive server takes precedence over an\nunconditional exclusive server. Equal priority and equal project specificity\nremain an explicit conflict; additive servers remain additive. Catalog default\nlanguage recommendations consider only unconditional servers, since a catalog\nhas no project context.\n\nDeclarative TextMate contributions reference exact UTF-8 JSON\n(`syntaxes/*.tmLanguage.json`) or XML plist (`syntaxes/*.tmLanguage`) assets. The\nhost validates and loads the declared format directly; extensions do not convert\nor execute grammar assets. A primary grammar declares its sorted canonical\n`languages` bindings; one immutable asset may serve multiple identities when the\nupstream grammar is genuinely shared. Injection-only grammars omit `languages`.\n\nThe published package contains compiled ESM and declaration files in `dist/`.\nExtension builds never execute TypeScript source directly from `node_modules`.\n\nThe SDK also defines bounded plain-data contracts for inline completions,\nassisted edits, AI code actions, decorations, document colors, hover, tasks, terminal\nprofiles, SCM state, and project templates. A task provider returns one reviewed\nexecution plan. A `managedTool` plan selects a declared tool/entrypoint and requires\n`tools.execute`; a `runtime` plan selects a declared requirement/command and requires\n`runtimes.execute`; a `command` plan selects a bare command from the user's terminal\nenvironment and requires `terminal`. Every route explicitly selects `terminal` or\n`captured` console output, bounded arguments and contained working-directory segments.\nArguments may include `ExtensionTaskPath` bindings. Optional process inputs bind\nenvironment values without exposing host routing variables. Package paths belong\nto declared installed stack requirements; signed `resources/*` assets belong to\nthe exact extension generation. These references do not change execution domains:\nmanaged execution cannot acquire terminal-package paths or switch to terminal tools.\nThe host resolves and reviews inputs before launch and owns cancellation. Terminal-profile\nand project-template providers likewise return descriptors or host-reviewed plans\nwhile the host owns process launch, filesystem writes, approvals, and transactions.\nAssisted-edit providers expose both bounded unary proposals and one ordered push\nstream. A streaming invocation emits progress or proposal events through the\nhost-provided sink, observes the cancellation token, and completes once. The native\ntransport owns ordering, byte/count limits, cancellation, and terminal delivery;\nproviders never poll or open a second request.\n\nHover providers receive the exact parser-owned source region at the requested\nposition and return only bounded plain-text or Markdown content with a\nsnapshot-bound source range. The host sanitizes and renders that content in the\nsame tooltip surface as LSP hover, suppresses the surface while completion is\npending or active, and owns pointer and touch activation. Providers cannot\nreturn HTML, DOM, editor objects, or infer embedded languages from filenames or\nsource scans.\n\nManaged-tool adapters use the exported `EXTENSION_MANAGED_TOOL_INVOCATION_METHOD`\nand JSON-RPC request/response types over the host's Content-Length-framed stdio\ntransport. Extension code selects only a manifest-declared tool and entrypoint;\nit never supplies an executable path, environment, or terminal command.\n\nThe SDK exports the canonical managed-tool request, result, frame, and JSON\nstructure limits plus `extensionJsonUtf8ByteLength` for exact host-neutral\nchecks. Diagnostics providers have high per-provider item and encoded-byte\nceilings plus one document-wide aggregate budget; providers must bound their\nown results before crossing either RPC boundary.\n\nLong-running managed tools use the declarative `persistentServices` contribution and the\n`services.manage` permission. A service selects only a signed tool and entrypoint and declares\nbounded stop, health-probe, and log policy; it cannot declare argv, an environment, a path, or\nshell text. Providers operate only their own symbolic service ids. The host owns the canonical\nworkspace/trust decision, process group, health, bounded UTF-8 logs, and exact activation cleanup.\n\nTerminal development dependencies use `contributes.developmentStacks` and the independent\n`terminal.packages` permission. A stack contains one to 32 required package symbols from the fixed\nhost-known `zyntax` or `termux-main` repository identity. It cannot contain repository URLs, keys,\nversions, package-manager options, commands, paths, environment values, or scripts.\n`inspectStack` returns installed, candidate and available versions from current indexes.\n`refreshStack(stack, cancellation)` first refreshes host-configured signed indexes through\nthe existing package-operation queue, then returns the same inspection. Use it before\nselecting missing packages; it does not install or upgrade anything. Transactions require\n`{ stack, intent, packages: [{ id, version }] }`: exact declared requirement selections for\n`install`, `repair`, `update` or `remove` (the installed version for removal). The existing\nPackage Manager reviews the complete impact and owns the mutation queue; stale selections\nare rejected. This permission does not grant execution. Separate SDK/NDK components remain\nthe responsibility of their installers, not a second package manager in the SDK.\n`waitTransaction(transaction, cancellation)` waits for a terminal state without polling.\nCancelling that wait leaves the transaction running; `cancelTransaction` stops it.\nBoth refresh and completion waits are cancellable interactive host methods. SDK 1.0.25\nadds only these generic operations, with no project-specific policy or version allowlist.\n\n```json\n{\n  \"permissions\": [\"extension.execute\", \"terminal.packages\"],\n  \"contributes\": {\n    \"developmentStacks\": [{\n      \"id\": \"web-runtime\",\n      \"label\": \"Web runtime\",\n      \"packages\": [{ \"id\": \"node\", \"repository\": \"termux-main\", \"package\": \"nodejs-lts\" }]\n    }]\n  }\n}\n```\n\nManaged execution arguments may contain a signed resource reference instead of\na literal string. The native host resolves it immediately before launch and the\npath never enters extension-provider code. Node entrypoints may additionally\ndeclare a sorted `nodeModules` array which binds a valid npm package name to a\nsigned package-directory resource. The host projects the entrypoint and those\npackages into one immutable module tree and launches it with normal Node module\nresolution. Manifests never declare `NODE_PATH`, installation directories, or\npackage-specific host behavior; each resource package must carry a matching\n`package.json` name.\n\nA signed managed-tool `tool.json` entrypoint may also declare non-empty static\n`args`. Each value is either a bounded literal string or the same\n`$toolResource` reference, restricted to a direct managed-tool dependency. The\nhost resolves these static arguments immediately before launch and places them\nbefore invocation arguments. Omit `args` when there are no static arguments;\nan empty array is not a second canonical representation. This gives an adapter\nan exact signed dependency resource through ordinary process arguments without\ndeclaring an installation path, environment variable, shell fragment, or host\nfilesystem layout.\n\nA managed-tool capability probe may declare non-empty `stdin` containing at most\n`MANAGED_TOOL_PROBE_MAX_STDIN_BYTES` (65,536) UTF-8 bytes. The host writes those\nexact bytes and then closes stdin before it waits for the bounded probe result.\nWhen `stdin` is omitted, the host closes stdin immediately. This supports\nprotocol-aware checks without exposing paths, environments, shell commands, or\nprocess control to package metadata.\n\nManaged document formatters declare their exact stdio protocol. Use\n`framed-jsonrpc` for an adapter that implements the canonical formatting RPC, or\n`raw-stdio` for a direct CLI which accepts the exact document bytes on stdin and\nreturns one bounded UTF-8 document on stdout. Raw formatter arguments are fixed\nmanifest strings or signed resource references; the host does not substitute a\nlanguage, URI, option, or shell fragment at runtime. The explicit current-document\npath reference is available only to document formatters. Contribute separate formatter descriptors when a CLI\nrequires a different constant argument for each canonical language.\n\nProject-template providers return either an atomic UTF-8 file plan or a\nsymbolic managed-tool plan. Managed generators run only after host review, in a\nnew app-owned staging root, and must produce the declared regular-file markers\nbefore the host atomically publishes the project. The provider and managed tool\nreceive JSON and canonical URIs only; native paths never cross the provider\nboundary.\n\nDebugger configuration providers receive the active project and document as\ncanonical URIs. Use `debugDocumentPath(documentUri)` for configuration fields\nsuch as `program`; the host validates that URI against the active project and\nresolves the native path only when it sends the DAP launch or attach request.\nProviders and manifests never contain app-private filesystem paths.\n\nFor a launch field which the user must select, use\n`debugProjectPath(id, label, kind)`. The consumer extension can persist the selected\ncanonical document URI per project. The symbolic slot remains in provider\nrequests; only the generic managed transport resolves it to a native path when\nsending the protocol message.\n\nSDK `1.0.29` adds provider preparation (`debug.execute`), protocol-neutral framed\nprocesses (`processes.execute`) and owner-scoped editor integration (`editor`).\nAn optional debugger extension owns its UI, DAP request sequencing, protocol state,\nbreakpoints, watches, inspection and console. The core retains only provider/tool\nauthority, project trust, bounded transport, process cleanup and shared editor\nrendering; it does not implement a second debugger engine or mandatory panel.\n\n`context({ project: null }, cancellation)` reads the Explorer project, current\ndocument/language and available paired configuration/adapter providers. A\nselected scope is accepted only when it resolves to that same\nExplorer project; another root is rejected explicitly. Refresh context when\nopening the view or refreshing configurations. No project is represented by\n`projectUri: null`, not by silently picking a folder.\n\n`configurations` returns provider configurations with opaque launch IDs;\n`bindConfiguration` binds an extension-stored configuration to the current\nprovider. The host keeps provider identity private and rejects launch IDs after\nthat provider changes. `selectPath` reviews a declared `$projectPath` slot and\nreturns a project-confined canonical URI (or `null` when dismissed). `prepare`\naccepts previously persisted URI selections for that project's declared path slots;\nit revalidates each selection's declared kind and no-follow project confinement,\nrejecting undeclared slots. Valid saved selections need no new picker or per-launch\nconfirmation. It revalidates project trust and provider binding, then resolves the\nconfiguration and descriptor exactly once through that provider. It returns the\nconfiguration plus an opaque single-use process ticket sealed to the provider,\nconsumer and project. Tagged document paths remain symbolic. Callers cannot claim\nanother provider's executable or managed-tool authority.\n\nAn extension may prepare its own signed managed tool with\n`processes.execute.prepare({ project, tool, entrypoint, credentials? }, cancellation)`.\nThe tool must be in its manifest's `toolRequirements` with `process.framed-json`;\nboth `processes.execute` and `tools.execute` permissions are required. No executable\npath or dynamic arguments are accepted. Preparation does not start a process and\nreturns an opaque, one-use ticket bound to the exact calling principal, activation\nand current trusted Explorer project. `credentials: true` enables the native-only\ncredential channel described below and requires `secrets` permission. No environment\nbindings are accepted. Native start rechecks the manifest, entrypoint, project and\ncredential-channel permission.\nNative jobs, tasks and services with the owner's `storage` permission receive\n`ZYNTAX_EXTENSION_DATA`, an app-private directory owned by the stable extension ID,\nwithout exposing a path API to the view or accepting a caller-selected directory.\nWithout that permission no data directory is created or exposed. Store durable\nsessions there, not in generation-scoped managed `HOME`. It survives project\nclosure, disable, updates and extension reset; uninstall removes it only after\nprocess cleanup. This does not create an OS sandbox.\n\n`processes.execute.open(ticket)` consumes that authority to open a managed\nContent-Length framed JSON process. Inspect its returned `state` and `error`: a\nstartup failure after a managed handle exists can return a terminated snapshot,\nwhose ID remains usable for cleanup retries. Failures before a handle exists and\ncancelled opens reject. `send` writes one bounded JSON frame, resolving\nstructured `{$documentPath: canonicalUri}` references through the trusted project\nwith no-follow confinement. The host does not interpret DAP/LSP commands.\n`observe(process, cursor, cancellation)` waits for ordered frames and lifecycle\nchanges without timer polling. Zero starts observation; subsequent calls acknowledge\nthe last returned cursor. Unsafe, future or expired cursors fail explicitly.\nQueues are bounded and lossless: overflow stops the process with an explicit\n`error`, never silently drops protocol messages. Cancelling observation or hiding\na panel does not stop execution. Project closure, trust loss, provider removal\nor owner disposal does. `stop` retries failed cleanup (`cleanupPending`);\n`release` discards results only after termination and complete cleanup.\n\n`editor.context` supplies the active source and modified documents. `save` flushes\nthat project's editors. `replaceMarkers` publishes a named owner-scoped group of\nthemed circles/arrows and optional line highlights, using one-based source\ncoordinates from 1 through 2147483647. Each call accepts up to 512 markers with\nunique IDs (192 characters), a group name (96), labels (256) and canonical project\nURIs (4096). These strings must be nonempty and contain no control characters.\nShared marker-count, group-count and encoded-byte capacity limits fail explicitly;\nvalid per-call input does not reserve global capacity. Interactive groups receive\ngutter clicks; mapped marker changes\nfollow edits. `observe` batches context, click and marker events. Context and group\nsnapshots may coalesce, but click loss/queue overflow is explicit; cursor zero\nresynchronizes current context and marker groups. The extension stores its own\nannotation meaning and settings. `reveal` navigates to a project-confined source;\n`resolvePath` maps an adapter's path data to a validated canonical URI or `null`,\nnever filesystem authority outside the project. No breakpoint-specific storage or\ndebug session state is required in core. Generic `bug`, `pause`, `stop`,\n`step-over`, `step-into` and `step-out` workbench icons follow the active app theme.\n\nProviders with `workspace.read` can query the host-owned project index through\n`findFiles({ project, include, exclude?, maxResults }, cancellation)`. `project: null`\nexplicitly means the explorer workspace; a selected context ID means that project.\nGlobs are relative to that scope; a basename-only glob matches at any depth. Results contain\nonly canonical document URIs and project-relative paths, are deterministic and\nbounded, and remain subject to the same project-confined `readText` boundary.\n`readText`, `readTextIfExists` and `relativePath` take `{ project, uri }`.\n`relativePath` returns its project-relative identity, or `null` outside the selected\nproject. The isolated provider never receives a native path or direct filesystem\naccess. `workspace.write.applyEdits` likewise takes `{ project, edits }`.\n\n`workspace.read.snapshot({ project, uri }, cancellation)` reads the current Explorer\nproject's UTF-8 text, including unsaved editor changes, normalized to LF. It returns\n`{ uri, exists, text, revision, dirty }`; a file absent from both disk and editors\nhas empty text and `exists: false`. The opaque revision binds this owner, project\nactivation and exact disk/editor state. Text is limited to 512 KiB; binary files,\nnon-file targets and symlinks fail explicitly. `listDirectory({ project, uri },\ncancellation)` lists direct files and directories, including empty folders, as\n`{ uri, name, kind }`. It never follows or returns symlinks and fails above 1024\nentries or 512 KiB instead of silently truncating.\n\n`workspace.write.writeText({ project, uri, revision, text }, cancellation)` proposes\none replacement or new file in the current trusted Explorer project. The host\nshows a themed diff overlay; approval saves atomically and updates an open editor\nthrough its normal undo/persistence machinery. Unsaved changes are included in the\nreview and explicitly saved on approval. Parent directories must already exist.\nChanged revisions, revoked access and pre-commit cancellation fail before writing;\nthe caller must read again rather than blindly retry. Dismissal returns\n`{ applied: false }`. A committed write returns `{ applied: true, snapshot? }`;\nthe snapshot is omitted if cancellation or project closure prevents a fresh read\nafter the definitive commit. Existing newline conventions are preserved.\n\n## Project panels and owned tasks\n\n### Native runtime credential channel\n\nA managed process prepared with `credentials: true` and the extension's `secrets`\npermission can use `createRuntimeCredentialClient({ send })` inside its native\nworker. `send` writes its existing Content-Length framed stdout transport. Pass\nstdin JSON to `client.accept(message)` before ordinary protocol dispatch; consumed\nresponses must never enter UI events, logs or transcripts. Call `dispose()` when\nthe worker shuts down. No Node-specific import is required by the helper.\n\nThe reserved envelope is `{ \"$zyntax\": \"credentials\", id, method, ...fields }`.\nNative code consumes it before output retention or bridge events and replies on\nordered stdin as `{ \"$zyntax\": \"credentials\", id, ok: true, result }` or\n`{ \"$zyntax\": \"credentials\", id, ok: false, error }`, with `error` limited to\n`invalid`, `conflict` or `unavailable`. Public `processes.execute.send` cannot send\nreserved envelopes. Ownership and activation come from the admitted job, never\nfrom an envelope field. Access expires on process stop, owner revocation or project\nclosure. The encrypted runtime namespace is separate from UI secret references\nand existing account stores; uninstall removes it after process cleanup.\n\n`get(key)` returns `{ value: string | null, revision: string | null }`.\n`set(key, value, revision)` requires that exact revision (null for absent) and\nreturns `{ revision }`; `delete(key, revision)` has the same comparison.\n`list()` returns sorted keys only. Concurrent updates fail with an explicit\nconflict, not an implicit retry. Keys are 1–128 control-free characters, values\nare at most 32 KiB UTF-8, and the owner store is bounded to 128 keys/256 KiB encoded.\nControl frames are bounded to 256 KiB; the helper allows 32 pending calls with a\n30-second deadline. A timeout does not undo a committed write; read before retrying.\n\nFor private interactive input, request an ordinary host-owned `secrets.request`\nprompt through the extension controller and send only its opaque reference to the\nworker. `resolve(reference, { consume: true })` returns the value directly from\nnative code and atomically removes that one-use reference. The wire request carries\n`method: \"resolve\"`, `reference` and boolean `consume`; omitting helper options\nuses false for reusable references. No secret plaintext crosses provider/view RPC.\nThis boundary is not an OS sandbox against a malicious native program that prints\nor transmits credentials it was explicitly granted.\n\n`projects.select` opens the host's location picker without changing the explorer.\nRelative input is explorer-relative; `~/` uses terminal home. Selection keys are\nsaved locally per extension/workspace, while returned IDs never rebind to another\nlocation. `projects.bindIntegrations` explicitly shares a selected project with\ndeclared optional integrations after review; it shares no file/secret selections.\nProviders receive their scope in `context.workspace.project`, and task requests\ncarry both scope and canonical project URI. Reads and language services must use\nthat scope, not silently substitute the explorer project.\n\n`files.select` resolves relative input from its explicit project, supports user\nselection outside that root, and returns an owned file/directory reference for\nprocess bindings. Descendant paths must remain contained; a file reference allows\nno descendants. `files.export` copies a scoped artifact to a user-chosen destination.\n`secrets.request` uses host-owned private input and encrypted storage. Only references\ncross provider RPC and enter task environment bindings, never raw values or argv.\nPrograms receiving credentials can print them; this is not a sandbox against a\nmalicious build script. Host records and errors must not disclose credentials.\n\n`tasks.execute` operates the extension's declared task providers through one\n`list/start/sessions/observe/reveal/stop/release` lifecycle. `start` resolves scope\nand inputs once. Cancellation before a successful response also stops newly spawned\nwork; after that response, `stop` owns cancellation. Observation waits for changes\nafter a monotonic cursor and returns bounded output plus current lifecycle state;\nit does not poll or stop work when cancelled. Closing a panel does not stop builds.\nExit frees the PTY, results stay until released, and extension disposal stops owned\nwork. Root changes affect future launches, not already-running tasks.\n\nCommand/runtime task arguments accept ordinary script text, including tab, CR and\nLF: at most 32 caller arguments, 16 KiB UTF-8 per literal and 64 KiB total resolved\nargv, including native path bindings and runtime prefixes. NUL, other ISO control\ncharacters and malformed Unicode are rejected. Managed-tool arguments and all\nenvironment literals keep their existing 512-code-unit, control-free policy.\nThis does not change executable selection, project trust, permissions or routing.\n`isExtensionTaskArgumentLiteral` and the `EXTENSION_TASK_MAX_ARGUMENT_BYTES` /\n`EXTENSION_TASK_MAX_ARGUMENTS_BYTES` constants expose the command/runtime limits.\n\n`workbench` updates/reveals/closes manifest-declared panels, including `dialog`\nplacement. Reuse list/tree/form/detail descriptors and host controls, not a separate\nUI framework. Updates preserve stable-ID form drafts unless `resetForm` is requested.\nPer-control `disabled` state keeps actions such as Stop usable while a panel is busy.\nSemantic icons and file/folder icons resolve through app presentation; theme changes\napply live. Isolated custom views use `presentation()`, revision-bound `resolveIcons`\nand `presentation` events for the same colors, typography and icons. They receive\nno app component imports, stylesheet paths or native asset paths.\n\nSDK `1.0.28` adds the generic `projectLifecycle` event to the existing custom-view\nmessage bridge. When Explorer closes or replaces its project, `closedProjects`\ncontains only this extension's selected project IDs matching that root or a\ndescendant; unrelated selections are not included. `revision` increases for the\nhost lifetime, but a view may skip revisions. Queued notices before bridge readiness\ncan combine closed IDs and use the latest revision. Trust-only changes do not close\nprojects. The shared conformance fixture includes single-project and combined notices.\n\nListen before restoring selected project state, retaining notices until restoration\nfinishes, and stop/release work for matching IDs through the ordinary task and project\nAPIs. Hidden views receive the event too; it does not destroy the renderer or revoke\nreferences needed for cleanup. Hiding a panel is still presentation-only and emits\nno project closure event. This event grants no additional access and exposes no\nother extension's selections or private paths.\n\n### Optional system file actions\n\nSDK `1.0.24` adds `kind: \"fileOpener\"` in `contributes.workbench`, with\n`placement: \"explorer.file\"`, `id`, `label`, optional themed `icon`, and the usual\n`when`/`group`/`order` presentation fields. Declare `extensions`, `filenames`, an\nexact `mimeType`, and `requiredPermissions`. Both association arrays are required;\nat least one must be nonempty. Extensions are lowercase literal suffixes, including\ncompound suffixes; filenames are literal basenames. Matching is case-insensitive.\n`parseFileOpenerOptions` and `matchesFileOpener` provide the shared rules; native\nhosts consume the same bounds and patterns from `runtime-contract.json`.\n\nThe package declares `files` and `workbench` permissions. It needs no provider,\ntool, activation event or executable code. `requiredPermissions` lists platform\nmanifest requirements only (use `[]` when none); it cannot request or grant them.\nUnavailable actions are hidden. A user-declined platform setting is distinct from\nan absent manifest permission: the operating system owns its consent UI.\n\nThe host offers the action for explicit file clicks and the selected file's menu.\nExisting language/preview handlers retain click priority; multiple matching actions\nrequire user selection, never an arbitrary winner. Restore, code navigation and\nprogrammatic extension commands cannot launch these actions. Both project files\nand user-selected provider documents are supported without exposing native paths\nor file bytes to extension code. The host validates active owner identity, source\naccess, association and manifest requirements before preparing data and launching,\ngrants only read access to the selected file, and cancels pending work when its\nowner is disposed. Launching a handler does not mean installation or viewing has\ncompleted. This contract has no arbitrary intent, package-target or URL parameters.\n\nPreview providers may select registered editor languages or declare strict `paths`\nglobs. Project files expose their project-relative path; external and untitled\ndocuments expose their canonical display name. Path selectors route previews without\nclaiming syntax or language support. Every provider declares one `input` mode and\none required `placement`: `adjacent` toggles in the editor area on phones and sits\nbeside the editor on wider screens, while `replace-editor` owns the editor area for\nvisual resources that have no useful source view. The host derives layout only from\nthis declaration, never from a package id or filename. The required `encoding` is\n`utf8` for text documents or `base64` for binary source snapshots; `text` input\nalways requires `utf8`. The same selected provider metadata controls the bounded\nfile read and read-only editor policy.\n`text` receives the bounded canonical text snapshot and may return structured,\ntable, plain-text, or bounded HTML markup data. Markup declares `linked` or\n`independent` scrolling and is limited to inert semantic HTML: scripts, event handlers,\nactive controls, remote resources, classes, ids, and extension styling are not part of\nthe surface. The host sanitizes it and applies theme-aware semantic styling inside the\npreview pane. `document` receives metadata only and may select a declared HTML, SVG, or\nraster renderer for the exact source snapshot; it never receives bytes, resource URLs,\nmarkup, DOM, Vue, filesystem or native handles, or a WebView.\nHTML resources are always script-blocked and declare only whether canonical project\nsubresources are available. The host validates the bounded result,\nmints and disposes the canonical resource session, confines project resources,\nand owns the renderer.\nPreview request and result budgets are exported as\n`EXTENSION_PREVIEW_MAX_INPUT_BYTES`, `EXTENSION_PREVIEW_MAX_BINARY_INPUT_BYTES`,\nand `EXTENSION_PREVIEW_MAX_RESULT_BYTES`.\n\n```json\n{\n  \"contributes\": {\n    \"previewProviders\": [{\n      \"id\": \"preview\",\n      \"module\": \"providers/preview.js\",\n      \"export\": \"createPreview\",\n      \"input\": \"text\",\n      \"placement\": \"adjacent\",\n      \"encoding\": \"utf8\",\n      \"languages\": [{\n        \"id\": \"example\",\n        \"schemes\": [\"file\", \"untitled\"],\n        \"group\": \"example.preview\",\n        \"priority\": 100,\n        \"composition\": \"exclusive\"\n      }]\n    }]\n  }\n}\n```\n","readmeFilename":"README.md"}