@jini-ai/agent-plugins 0.6.17 → 0.6.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (335) hide show
  1. package/CHANGELOG.md +29 -1
  2. package/NOTICE +14 -0
  3. package/README.md +35 -14
  4. package/charts-echarts/plugin.json +39 -0
  5. package/charts-echarts/skills/charts-echarts/SKILL.md +110 -0
  6. package/charts-recharts/plugin.json +32 -0
  7. package/charts-recharts/skills/charts-recharts/SKILL.md +108 -0
  8. package/cloudflare/NOTES.md +16 -0
  9. package/cloudflare/form-destinations/cloudflare-d1.mjs +9 -0
  10. package/cloudflare/lib/api.mjs +96 -0
  11. package/cloudflare/lib/assets.mjs +65 -0
  12. package/cloudflare/lib/dns.mjs +32 -0
  13. package/cloudflare/lib/domain-inventory.mjs +61 -0
  14. package/cloudflare/lib/domain-status.mjs +48 -0
  15. package/cloudflare/lib/domains.mjs +95 -0
  16. package/cloudflare/lib/forms.mjs +254 -0
  17. package/cloudflare/lib/pages-upload.mjs +51 -0
  18. package/cloudflare/lib/target.mjs +165 -0
  19. package/cloudflare/lib/workers-upload.mjs +48 -0
  20. package/cloudflare/lib/zones.mjs +25 -0
  21. package/cloudflare/mcp.json +4 -0
  22. package/cloudflare/plugin.json +96 -0
  23. package/cloudflare/skills/cloudflare/SKILL.md +57 -0
  24. package/cloudflare/skills/cloudflare/references/domains.md +31 -0
  25. package/cloudflare/skills/cloudflare/references/pages.md +18 -0
  26. package/cloudflare/skills/cloudflare/references/permissions.md +29 -0
  27. package/cloudflare/skills/cloudflare/references/troubleshooting.md +20 -0
  28. package/cloudflare/skills/cloudflare/references/workers.md +42 -0
  29. package/cloudflare/targets/cloudflare-pages.mjs +12 -0
  30. package/cloudflare/targets/cloudflare-workers.mjs +17 -0
  31. package/cloudflare/tovu-consent.json +6 -0
  32. package/cloudflare/tovu-deploy-targets.json +630 -0
  33. package/cloudflare/tovu-form-destinations.json +12 -0
  34. package/cloudflare/worker/forms-receiver.mjs +249 -0
  35. package/composio/mcp.json +10 -0
  36. package/composio/plugin.json +68 -0
  37. package/composio/skills/composio/SKILL.md +85 -0
  38. package/dist/core/identity-namespace.d.ts +12 -0
  39. package/dist/core/identity-namespace.js +20 -0
  40. package/dist/folder-zip-node.js +29 -7
  41. package/dist/lifecycle/bundled-digests.js +4 -3
  42. package/dist/lifecycle/install.d.ts +7 -0
  43. package/dist/lifecycle/install.js +45 -3
  44. package/dist/lifecycle/manifest.d.ts +2 -2
  45. package/dist/lifecycle/manifest.js +5 -3
  46. package/dist/lifecycle/node.js +2 -0
  47. package/dist/lifecycle/persistent-state.js +1 -1
  48. package/dist/lifecycle/ports.d.ts +8 -0
  49. package/dist/lifecycle/seed-bundled.js +4 -1
  50. package/dist/manifest.d.ts +1 -1
  51. package/dist/manifest.js +3 -2
  52. package/fly/deploy-configs/fly.mjs +115 -0
  53. package/fly/deploy-ops/fly.mjs +102 -0
  54. package/fly/mcp.json +4 -0
  55. package/fly/plugin.json +81 -0
  56. package/fly/scripts/render-deploy-workflow.mjs +150 -0
  57. package/fly/skills/fly/SKILL.md +43 -0
  58. package/fly/skills/fly/references/fly-deploy.template.yml +117 -0
  59. package/fly/skills/fly/references/fly.template.toml +81 -0
  60. package/fly/tovu-credential-schemes.json +11 -0
  61. package/fly/tovu-deploy-configs.json +21 -0
  62. package/fly/tovu-deploy-ops.json +14 -0
  63. package/github/deploy-ops/github-actions.mjs +164 -0
  64. package/github/deployments/github.mjs +415 -0
  65. package/github/mcp.json +4 -0
  66. package/github/plugin.json +105 -0
  67. package/github/skills/github/SKILL.md +249 -0
  68. package/github/skills/github/references/actions.md +224 -0
  69. package/github/skills/github/references/auth-and-tokens.md +140 -0
  70. package/github/skills/github/references/repo-files.md +135 -0
  71. package/github/skills/github/references/site-backup.md +159 -0
  72. package/github/skills/github/references/source-control.md +123 -0
  73. package/github/source-control/backup-push.mjs +242 -0
  74. package/github/source-control/commit-site.mjs +459 -0
  75. package/github/source-control/github.mjs +93 -0
  76. package/github/source-control/write-files.mjs +468 -0
  77. package/github/tovu-deploy-ops.json +13 -0
  78. package/github/tovu-source-control.json +117 -0
  79. package/github-pages/NOTES.md +19 -0
  80. package/github-pages/mcp.json +4 -0
  81. package/github-pages/plugin.json +48 -0
  82. package/github-pages/skills/github-pages/SKILL.md +44 -0
  83. package/github-pages/targets/github-pages.mjs +543 -0
  84. package/github-pages/tovu-deploy-targets.json +327 -0
  85. package/google-login/exports/google-g.svg +1 -0
  86. package/google-login/exports/sign-in-button.css +68 -0
  87. package/google-login/exports/sign-in-button.html +4 -0
  88. package/google-login/mcp.json +4 -0
  89. package/google-login/plugin.json +59 -0
  90. package/google-login/skills/google-login/SKILL.md +96 -0
  91. package/google-login/tovu-login-providers.json +21 -0
  92. package/google-workspace/README.md +132 -0
  93. package/google-workspace/form-destinations/README.md +87 -0
  94. package/google-workspace/form-destinations/dedupe.mjs +43 -0
  95. package/google-workspace/form-destinations/delivery-result.mjs +69 -0
  96. package/google-workspace/form-destinations/mapping.mjs +152 -0
  97. package/google-workspace/form-destinations/sheets.mjs +202 -0
  98. package/google-workspace/lib/auth.mjs +81 -0
  99. package/google-workspace/lib/drive-files.mjs +54 -0
  100. package/google-workspace/lib/form-destination-settings.mjs +72 -0
  101. package/google-workspace/lib/http.mjs +168 -0
  102. package/google-workspace/lib/picker-flow.mjs +171 -0
  103. package/google-workspace/lib/picker-selection.mjs +107 -0
  104. package/google-workspace/lib/product-state.mjs +93 -0
  105. package/google-workspace/lib/request-policy.mjs +163 -0
  106. package/google-workspace/lib/sheets-a1.mjs +79 -0
  107. package/google-workspace/lib/sheets-admin-csv.mjs +82 -0
  108. package/google-workspace/lib/sheets-admin-request-kinds.mjs +183 -0
  109. package/google-workspace/lib/sheets-client.mjs +286 -0
  110. package/google-workspace/lib/surface-actions.mjs +107 -0
  111. package/google-workspace/mcp.json +4 -0
  112. package/google-workspace/plugin.json +77 -0
  113. package/google-workspace/products.json +12 -0
  114. package/google-workspace/skills/google-workspace/SKILL.md +82 -0
  115. package/google-workspace/skills/google-workspace/references/connection.md +102 -0
  116. package/google-workspace/skills/google-workspace/references/form-delivery.md +50 -0
  117. package/google-workspace/skills/google-workspace/references/sheets.md +149 -0
  118. package/google-workspace/skills/google-workspace/references/troubleshooting.md +31 -0
  119. package/google-workspace/tools/account-info.mjs +18 -0
  120. package/google-workspace/tools/sheets/README.md +54 -0
  121. package/google-workspace/tools/sheets/copy-tab.mjs +23 -0
  122. package/google-workspace/tools/sheets/copy.mjs +23 -0
  123. package/google-workspace/tools/sheets/create.mjs +35 -0
  124. package/google-workspace/tools/sheets/find-replace.mjs +38 -0
  125. package/google-workspace/tools/sheets/find.mjs +52 -0
  126. package/google-workspace/tools/sheets/get-by-data-filter.mjs +23 -0
  127. package/google-workspace/tools/sheets/get.mjs +22 -0
  128. package/google-workspace/tools/sheets/values-append.mjs +27 -0
  129. package/google-workspace/tools/sheets/values-batch-clear.mjs +20 -0
  130. package/google-workspace/tools/sheets/values-batch-get.mjs +20 -0
  131. package/google-workspace/tools/sheets/values-batch-update.mjs +29 -0
  132. package/google-workspace/tools/sheets/values-by-data-filter.mjs +62 -0
  133. package/google-workspace/tools/sheets/values-clear.mjs +20 -0
  134. package/google-workspace/tools/sheets/values-get.mjs +21 -0
  135. package/google-workspace/tools/sheets/values-update.mjs +26 -0
  136. package/google-workspace/tools/sheets-admin/README.md +45 -0
  137. package/google-workspace/tools/sheets-admin/basic-filter.mjs +32 -0
  138. package/google-workspace/tools/sheets-admin/batch-update.mjs +25 -0
  139. package/google-workspace/tools/sheets-admin/developer-metadata.mjs +28 -0
  140. package/google-workspace/tools/sheets-admin/export-csv.mjs +67 -0
  141. package/google-workspace/tools/sheets-admin/filter-views.mjs +38 -0
  142. package/google-workspace/tools/sheets-admin/format.mjs +70 -0
  143. package/google-workspace/tools/sheets-admin/named-ranges.mjs +42 -0
  144. package/google-workspace/tools/sheets-admin/open-existing.mjs +34 -0
  145. package/google-workspace/tools/sheets-admin/protected-ranges-get.mjs +18 -0
  146. package/google-workspace/tools/sheets-admin/sort.mjs +18 -0
  147. package/google-workspace/tools/sheets-admin/tab-modify.mjs +36 -0
  148. package/google-workspace/tovu-admin-surfaces.json +63 -0
  149. package/google-workspace/tovu-agent-tools.json +1178 -0
  150. package/google-workspace/tovu-connections.json +35 -0
  151. package/google-workspace/tovu-form-destinations.json +10 -0
  152. package/google-workspace/ui/README.md +73 -0
  153. package/google-workspace/ui/connection-panel.handler.mjs +167 -0
  154. package/google-workspace/ui/connection-panel.html +17 -0
  155. package/google-workspace/ui/connection-panel.mjs +189 -0
  156. package/google-workspace/ui/connection-view.mjs +120 -0
  157. package/google-workspace/ui/destination-panel.handler.mjs +106 -0
  158. package/google-workspace/ui/destination-panel.html +17 -0
  159. package/google-workspace/ui/destination-panel.mjs +150 -0
  160. package/google-workspace/ui/dom.mjs +140 -0
  161. package/google-workspace/ui/panel.css +170 -0
  162. package/google-workspace/ui/picker-flow.mjs +87 -0
  163. package/google-workspace/ui/picker-view.mjs +44 -0
  164. package/google-workspace/ui/picker.handler.mjs +56 -0
  165. package/google-workspace/ui/picker.html +17 -0
  166. package/google-workspace/ui/picker.mjs +88 -0
  167. package/google-workspace/ui/surface-client.mjs +227 -0
  168. package/higgsfield-media/mcp.json +9 -0
  169. package/higgsfield-media/plugin.json +109 -0
  170. package/higgsfield-media/skills/higgsfield-media/SKILL.md +325 -0
  171. package/higgsfield-media/skills/higgsfield-media/references/failure-modes.md +116 -0
  172. package/higgsfield-media/skills/higgsfield-media/references/models-and-plan-gates.md +142 -0
  173. package/jev/mcp.json +4 -0
  174. package/jev/plugin.json +44 -0
  175. package/jev/skills/jev/SKILL.md +308 -0
  176. package/jev/skills/jev/references/cookbooks.md +197 -0
  177. package/jev/skills/jev/references/jaggedness.md +135 -0
  178. package/jev/skills/jev/references/javascript-sdk.md +146 -0
  179. package/jev/skills/jev/references/patterns.md +123 -0
  180. package/jev/skills/jev/references/primitives-reference.md +187 -0
  181. package/langfuse/plugin.json +22 -0
  182. package/meilisearch/mcp.json +4 -0
  183. package/meilisearch/plugin.json +54 -0
  184. package/meilisearch/providers/meilisearch.mjs +651 -0
  185. package/meilisearch/skills/meilisearch/SKILL.md +43 -0
  186. package/meilisearch/tovu-search-providers.json +10 -0
  187. package/netlify/NOTES.md +13 -0
  188. package/netlify/mcp.json +4 -0
  189. package/netlify/plugin.json +47 -0
  190. package/netlify/skills/netlify/SKILL.md +39 -0
  191. package/netlify/targets/netlify.mjs +384 -0
  192. package/netlify/tovu-consent.json +6 -0
  193. package/netlify/tovu-deploy-targets.json +163 -0
  194. package/opentelemetry/mcp.json +4 -0
  195. package/opentelemetry/plugin.json +52 -0
  196. package/opentelemetry/skills/opentelemetry/SKILL.md +39 -0
  197. package/package.json +161 -6
  198. package/posthog/mcp.json +4 -0
  199. package/posthog/plugin.json +46 -0
  200. package/posthog/skills/posthog/SKILL.md +36 -0
  201. package/railway/deploy-configs/railway.mjs +135 -0
  202. package/railway/deploy-ops/railway.mjs +167 -0
  203. package/railway/mcp.json +4 -0
  204. package/railway/plugin.json +45 -0
  205. package/railway/skills/railway/SKILL.md +66 -0
  206. package/railway/tovu-deploy-configs.json +16 -0
  207. package/railway/tovu-deploy-ops.json +11 -0
  208. package/render/deploy-configs/render.mjs +141 -0
  209. package/render/deploy-ops/render.mjs +152 -0
  210. package/render/mcp.json +4 -0
  211. package/render/plugin.json +47 -0
  212. package/render/skills/render/SKILL.md +63 -0
  213. package/render/tovu-deploy-configs.json +16 -0
  214. package/render/tovu-deploy-ops.json +11 -0
  215. package/resend/NOTES.md +52 -0
  216. package/resend/adapters/resend.mjs +161 -0
  217. package/resend/lib/domains.mjs +137 -0
  218. package/resend/lib/errors.mjs +25 -0
  219. package/resend/lib/feedback.mjs +118 -0
  220. package/resend/mcp.json +13 -0
  221. package/resend/plugin.json +192 -0
  222. package/resend/skills/resend/SKILL.md +107 -0
  223. package/resend/tovu-mail-adapters.json +22 -0
  224. package/s3-compatible/NOTES.md +11 -0
  225. package/s3-compatible/mcp.json +4 -0
  226. package/s3-compatible/object-stores/s3-compatible.mjs +287 -0
  227. package/s3-compatible/plugin.json +56 -0
  228. package/s3-compatible/skills/s3-compatible/SKILL.md +39 -0
  229. package/s3-compatible/targets/s3-compatible.mjs +1054 -0
  230. package/s3-compatible/tovu-deploy-targets.json +432 -0
  231. package/s3-compatible/tovu-object-stores.json +29 -0
  232. package/sentry/mcp.json +4 -0
  233. package/sentry/plugin.json +49 -0
  234. package/sentry/skills/sentry/SKILL.md +34 -0
  235. package/shopify/mcp.json +4 -0
  236. package/shopify/plugin.json +22 -0
  237. package/shopify/skills/shopify/SKILL.md +103 -0
  238. package/shopify/skills/shopify/references/catalog-sync.md +74 -0
  239. package/shopify/skills/shopify/references/domains.md +26 -0
  240. package/shopify/skills/shopify/references/live-storefront.md +34 -0
  241. package/shopify/skills/shopify/references/storefront-snippets.md +21 -0
  242. package/site-compliance/mcp.json +4 -0
  243. package/site-compliance/plugin.json +34 -0
  244. package/site-compliance/skills/site-compliance/SKILL.md +220 -0
  245. package/site-compliance/skills/site-compliance/references/ccpa-cpra.md +115 -0
  246. package/site-compliance/skills/site-compliance/references/gdpr-eu-uk.md +143 -0
  247. package/site-compliance/skills/site-compliance/references/wcag-2-2.md +129 -0
  248. package/site-import/mcp.json +4 -0
  249. package/site-import/plugin.json +41 -0
  250. package/site-import/skills/site-import/SKILL.md +232 -0
  251. package/site-import/skills/site-import/references/content-mapping.md +166 -0
  252. package/site-import/skills/site-import/references/discovery-and-classification.md +117 -0
  253. package/site-import/skills/site-import/references/theme-extraction.md +34 -0
  254. package/slide-design/com.anthropic.claude-code/hooks/hooks.json +4 -0
  255. package/slide-design/mcp.json +4 -0
  256. package/slide-design/plugin.json +26 -0
  257. package/slide-design/skills/slide-design/SKILL.md +103 -0
  258. package/slide-design/skills/slide-design/references/charts-and-exhibits.md +100 -0
  259. package/slide-design/skills/slide-design/references/html-deck.md +175 -0
  260. package/slide-design/skills/slide-design/references/layout-and-style.md +131 -0
  261. package/slide-design/skills/slide-design/references/review.md +93 -0
  262. package/slide-design/skills/slide-design/references/storyline.md +118 -0
  263. package/stripe/plugin.json +22 -0
  264. package/supabase/mcp.json +26 -0
  265. package/supabase/plugin.json +78 -0
  266. package/supabase/skills/supabase/SKILL.md +169 -0
  267. package/supabase/skills/supabase/references/failure-modes.md +101 -0
  268. package/ui-ux-design/CHANGELOG.md +28 -0
  269. package/ui-ux-design/LICENSE +201 -0
  270. package/ui-ux-design/NOTICE +14 -0
  271. package/ui-ux-design/README.md +62 -0
  272. package/ui-ux-design/com.anthropic.claude-code/hooks/hooks.json +4 -0
  273. package/ui-ux-design/mcp.json +4 -0
  274. package/ui-ux-design/plugin.json +26 -0
  275. package/ui-ux-design/skills/frontend-accessibility/SKILL.md +60 -0
  276. package/ui-ux-design/skills/gstack-design/SKILL.md +53 -0
  277. package/ui-ux-design/skills/gstack-design/references/consultation.md +30 -0
  278. package/ui-ux-design/skills/gstack-design/references/html.md +29 -0
  279. package/ui-ux-design/skills/gstack-design/references/review.md +28 -0
  280. package/ui-ux-design/skills/gstack-design/references/shotgun.md +33 -0
  281. package/ui-ux-design/skills/gstack-design/references/upstream-notes.md +23 -0
  282. package/ui-ux-design/skills/interface-design/ORIGINAL.md +16 -0
  283. package/ui-ux-design/skills/interface-design/SKILL.md +41 -0
  284. package/ui-ux-design/skills/interface-design/references/commands/audit.md +40 -0
  285. package/ui-ux-design/skills/interface-design/references/commands/critique.md +21 -0
  286. package/ui-ux-design/skills/interface-design/references/commands/extract.md +34 -0
  287. package/ui-ux-design/skills/interface-design/references/commands/init.md +31 -0
  288. package/ui-ux-design/skills/interface-design/references/commands/status.md +22 -0
  289. package/ui-ux-design/skills/interface-design/references/examples/system-precision.md +29 -0
  290. package/ui-ux-design/skills/interface-design/references/examples/system-warmth.md +29 -0
  291. package/ui-ux-design/skills/interface-design/references/system-template.md +57 -0
  292. package/ui-ux-design/skills/shadcn-ui/README.md +244 -0
  293. package/ui-ux-design/skills/shadcn-ui/SKILL.md +333 -0
  294. package/ui-ux-design/skills/shadcn-ui/examples/auth-layout.tsx +177 -0
  295. package/ui-ux-design/skills/shadcn-ui/examples/data-table.tsx +313 -0
  296. package/ui-ux-design/skills/shadcn-ui/examples/form-pattern.tsx +177 -0
  297. package/ui-ux-design/skills/shadcn-ui/resources/component-catalog.md +481 -0
  298. package/ui-ux-design/skills/shadcn-ui/resources/customization-guide.md +516 -0
  299. package/ui-ux-design/skills/shadcn-ui/resources/migration-guide.md +463 -0
  300. package/ui-ux-design/skills/shadcn-ui/resources/setup-guide.md +412 -0
  301. package/ui-ux-design/skills/shadcn-ui/scripts/verify-setup.sh +134 -0
  302. package/ui-ux-design/skills/ui-ux-design/SKILL.md +171 -0
  303. package/ui-ux-design/skills/ui-ux-design/references/brand-and-voice.md +78 -0
  304. package/ui-ux-design/skills/ui-ux-design/references/chrome-mobile-test-matrix.md +137 -0
  305. package/ui-ux-design/skills/ui-ux-design/references/components-and-states.md +112 -0
  306. package/ui-ux-design/skills/ui-ux-design/references/delight-and-motion.md +54 -0
  307. package/ui-ux-design/skills/ui-ux-design/references/foundations.md +145 -0
  308. package/ui-ux-design/skills/ui-ux-design/references/inclusive-ai-imagery.md +57 -0
  309. package/ui-ux-design/skills/ui-ux-design/references/kole-jain-uiux-concepts.md +104 -0
  310. package/ui-ux-design/skills/ui-ux-design/references/kuinetic-reference.md +184 -0
  311. package/ui-ux-design/skills/ui-ux-design/references/openai-frontend-skill.md +139 -0
  312. package/ui-ux-design/skills/ui-ux-design/references/premium-ui.md +55 -0
  313. package/ui-ux-design/skills/ui-ux-design/references/research-and-validation.md +88 -0
  314. package/ui-ux-design/skills/ui-ux-design/references/sam-crawford-premium-websites.md +103 -0
  315. package/ui-ux-design/skills/ui-ux-design/references/self-made-web-designer-core-skills.md +119 -0
  316. package/ui-ux-design/skills/ui-ux-design/references/ui-animation.md +173 -0
  317. package/ui-ux-design/skills/ui-ux-design/references/ui-loop.md +234 -0
  318. package/ui-ux-design/skills/ui-ux-design/references/visual-storytelling.md +54 -0
  319. package/ui-ux-design/skills/vercel-web-design-guidelines/SKILL.md +39 -0
  320. package/ui-ux-design/skills/web-compliance/SKILL.md +134 -0
  321. package/ui-ux-design/skills/web-compliance/references/audit-evidence.md +59 -0
  322. package/vercel/NOTES.md +23 -0
  323. package/vercel/mcp.json +4 -0
  324. package/vercel/object-stores/vercel-blob.mjs +147 -0
  325. package/vercel/plugin.json +47 -0
  326. package/vercel/skills/vercel/SKILL.md +48 -0
  327. package/vercel/targets/vercel.mjs +586 -0
  328. package/vercel/tovu-consent.json +6 -0
  329. package/vercel/tovu-deploy-targets.json +219 -0
  330. package/vercel/tovu-object-stores.json +10 -0
  331. package/wordpress/NOTES.md +33 -0
  332. package/wordpress/plugin.json +30 -0
  333. package/wordpress/skills/wordpress/SKILL.md +43 -0
  334. package/wordpress/skills/wordpress/references/free-site-redirect.md +46 -0
  335. package/wordpress/skills/wordpress/references/subdomain.md +66 -0
@@ -0,0 +1,146 @@
1
+ # JavaScript SDK reference
2
+
3
+ Sources: `docs.typesafe.ai/sdk/javascript.md` (quickstart), `docs.typesafe.ai/sdk/javascript/api.md`
4
+ (API index) and these reference sub-pages under `docs.typesafe.ai/sdk/javascript/api/`:
5
+ `classes/TypeSafeClient`, `interfaces/TypeSafeClientConfig`, `interfaces/RequestOptions`,
6
+ `interfaces/RetryPolicy`, `interfaces/SystemOneRequest`, `variables/ENV`, `functions/choice`,
7
+ `functions/score`, `functions/noul`, `type-aliases/ScoreCriteria`, the error classes, and
8
+ `sdk/javascript/changelog`. All checked on 2026-09-21 against SDK `v0.6.0`. Append `.md` to any of
9
+ those paths to read the raw page. If the installed package's version differs, trust its `.d.ts`
10
+ files over this page.
11
+
12
+ ## Install
13
+
14
+ Requires Node.js 20+. The package ships ESM, CommonJS, and TypeScript declarations.
15
+
16
+ ```sh
17
+ npm install @typesafe-ai/sdk
18
+ ```
19
+
20
+ ## Client
21
+
22
+ ```ts
23
+ import { choice, score, noul, TypeSafeClient } from "@typesafe-ai/sdk";
24
+
25
+ const client = new TypeSafeClient(); // key from TYPESAFE_API_KEY
26
+ const pinned = new TypeSafeClient({ apiKey }); // explicit key wins over the env var
27
+ ```
28
+
29
+ `new TypeSafeClient(config?)` throws if the API key is missing, the config is invalid, or the runtime
30
+ is unsupported. Explicit options win over environment variables, which win over SDK defaults. Empty
31
+ or whitespace-only env values are ignored.
32
+
33
+ `TypeSafeClientConfig` (all optional):
34
+
35
+ | Option | Env fallback | Default |
36
+ |---|---|---|
37
+ | `apiKey` | `TYPESAFE_API_KEY` | none. Required from one source or the other. |
38
+ | `baseURL` | `TYPESAFE_BASE_URL` | `https://api.typesafe.ai` |
39
+ | `defaultModel` | `TYPESAFE_DEFAULT_MODEL` | `jev-latest` |
40
+ | `logLevel` | `TYPESAFE_LOG_LEVEL` | `warn`. `info` logs request summaries. `debug` adds headers and bodies. Credential headers are redacted, bodies are not. |
41
+ | `timeout` | none | `10000` ms per attempt. There is no total retry budget. |
42
+ | `retry` | none | `Partial<RetryPolicy>`, see below |
43
+ | `defaultHeaders` | none | extra headers on every request |
44
+ | `fetch` | none | global `fetch` |
45
+ | `logger` | none | a prefixed `console` |
46
+ | `dangerouslyAllowBrowser` | none | `false` |
47
+
48
+ **Don't set `dangerouslyAllowBrowser` in code that ships to a browser.** The docs say it exposes the API key to page
49
+ users. Call Jev from server-side code, never from an admin or site bundle that ships to a browser.
50
+
51
+ ## Calling `systemOne`
52
+
53
+ ```ts
54
+ const response = await client.systemOne(
55
+ {
56
+ state: { document: "I was charged twice. Please fix this ASAP." },
57
+ questions: {
58
+ category: choice("What is this ticket about?", { billing: null, technical: null, other: null }),
59
+ frustration: score("How frustrated the customer appears", [
60
+ "Calm, just stating facts",
61
+ "Frustrated but civil",
62
+ "Very angry, strong language",
63
+ ]),
64
+ billing: noul("Is this about billing?"),
65
+ },
66
+ // model: "jev-1.13.0", // optional; omitted uses the client's defaultModel
67
+ },
68
+ { timeout: 5000 }, // optional RequestOptions
69
+ );
70
+
71
+ response.answers.category.choice; // "billing" | "technical" | "other"
72
+ response.answers.frustration.score; // number, 0..2
73
+ response.answers.billing.noul; // number, 0..1
74
+ response.model; // resolved versioned id, e.g. "jev-1.13.0"
75
+ response.usage; // input and output token counts
76
+ ```
77
+
78
+ - `systemOne(request, options?)` returns an `APIPromise<SystemOneResult<Q>>`. `request` is
79
+ `{ state, questions, model? }`, and `questions` must be non-empty.
80
+ - Answer types are inferred from the helper that built each question. For example, `.choice` is
81
+ narrowed to the criteria's keys.
82
+ - Question helpers:
83
+ - `choice(instructions, criteria)`: `criteria` maps each label to a description, or to `null` for
84
+ an undescribed label.
85
+ - `score(instructions, criteria)`: `criteria` is an ordered array of at least two level
86
+ descriptions, indexed from 0. Since `v0.6.0` it is an array. Earlier versions took an object
87
+ keyed by integers, so check the installed version if you see that shape.
88
+ - `noul(instructions?, criteria?)`: `criteria` is optional `{ true?, false? }`.
89
+ - `instructions` and every description accept `EntryType`: text, a JSON object or array, or `null`.
90
+ This is the same structured shape the HTTP API documents (see `primitives-reference.md`).
91
+ - `systemOne()` also throws if the questions are empty or a Score has fewer than two levels.
92
+
93
+ `RequestOptions` (per call): `timeout`, `retry` (a `Partial<RetryPolicy>`), `headers` (merged over
94
+ `defaultHeaders`), and `signal` (an `AbortSignal` that cancels the request and any pending retries).
95
+
96
+ ## Retries
97
+
98
+ Retries are on by default, so don't wrap `systemOne` in your own retry loop. `RetryPolicy` defaults:
99
+
100
+ | Field | Default |
101
+ |---|---|
102
+ | `maxRetries` | `2` (after the first attempt; `0` disables) |
103
+ | `httpStatuses` | `408`, `429`, and `500`–`599` (this covers `529 Overloaded`) |
104
+ | `apiConnectionError` / `apiTimeoutError` | `true` / `true` |
105
+ | `backoffInitialMs` / `backoffMaxMs` | `500` / `5000` (doubles each retry) |
106
+ | `backoffJitter` | `0.25` |
107
+ | `respectRetryAfter` / `maxRetryAfterMs` | `true` / `60000` |
108
+
109
+ ## Errors
110
+
111
+ Every SDK error extends `TypeSafeError`:
112
+
113
+ - `APIError`: a non-2xx response after retries. It has `status`, `body`, `headers`, and `requestId`
114
+ (from `x-typesafe-request-id`). Subclasses by status:
115
+ - `BadRequestError` (400), `AuthenticationError` (401), `PermissionDeniedError` (403),
116
+ `NotFoundError` (404), `UnprocessableEntityError` (422), `RateLimitError` (429, also has
117
+ `retryAfterMs`), `InternalServerError` (5xx, which includes `529`).
118
+ - `APIConnectionError`: DNS, TLS, or connection failure. Its subclass `APITimeoutError` fires when
119
+ the full response didn't arrive within `timeout`.
120
+ - `APIUserAbortError`: the caller aborted through `signal`.
121
+
122
+ ```ts
123
+ import { APIError, RateLimitError, UnprocessableEntityError } from "@typesafe-ai/sdk";
124
+
125
+ try {
126
+ await client.systemOne({ state, questions });
127
+ } catch (err) {
128
+ if (err instanceof UnprocessableEntityError) {
129
+ // Malformed question. err.body names the offending field. Fix it; don't retry.
130
+ } else if (err instanceof RateLimitError) {
131
+ // Retries are already exhausted here.
132
+ } else if (err instanceof APIError) {
133
+ // Log err.status and err.requestId.
134
+ }
135
+ throw err;
136
+ }
137
+ ```
138
+
139
+ ## Not covered here
140
+
141
+ `client.models.list()` returns the models available to the account as `ModelCard[]`. The API index
142
+ also lists `APIPromise`/`WithResponse` (probably access to the raw HTTP response), `Logger`,
143
+ `ModelCard`'s fields, and `VERSION`. Their pages weren't checked for this skill. Read the page or the
144
+ installed `.d.ts` before relying on them.
145
+ TypeSafe's own agent-skill FAQ names "the agent invents request or response fields" as a known
146
+ failure mode.
@@ -0,0 +1,123 @@
1
+ # Patterns
2
+
3
+ TypeSafe documents four named architectural patterns for using Jev in a larger system
4
+ (`docs.typesafe.ai/patterns.md` and its four sub-pages, crawled 2026-09-21). Each assumes you
5
+ already understand the primitives and confidence — read the main `SKILL.md` first if you haven't.
6
+
7
+ ## Speculative fan-out
8
+
9
+ **What:** Put every question a system might need — including ones that only matter for some inputs
10
+ — into a single request, and let code decide afterward what's relevant. Every question evaluates in
11
+ parallel against the same `state`, so adding more of them usually has little effect on response time.
12
+
13
+ **Worked example (support-ticket triage, one request, 5 questions):**
14
+
15
+ - `category` (Choice: `bug_report` / `billing` / `feature_request` / `account`)
16
+ - `bug_severity` (Score, 3 levels) — only meaningful if `category == bug_report`
17
+ - `has_reproducible_steps` (Noul) — only meaningful if `category == bug_report`
18
+ - `refund_requested` (Noul) — only meaningful if `category == billing`
19
+ - `frustration` (Score, 3 levels) — relevant regardless of category
20
+
21
+ All five are asked upfront; the ones that don't apply to a given ticket are simply ignored in code.
22
+ Routing logic then reads whichever answers matter:
23
+
24
+ ```python
25
+ if category.choice == "bug_report":
26
+ if bug_severity.score > 1.5 and bug_repro.noul > 0.6:
27
+ escalate_to_engineering(ticket) # high severity + reproducible
28
+ elif category.choice == "billing":
29
+ if refund.noul > 0.7:
30
+ flag_likely_refund(ticket)
31
+ # ...other categories...
32
+ if frustration.score > 1.5:
33
+ flag_for_priority_response(ticket) # regardless of category
34
+ ```
35
+
36
+ The category answer decides which speculative answers get read. A bug-report ticket's `refund`
37
+ answer is never consulted.
38
+
39
+ **Why:** cost and speed. A separate request per question would resend the state each time and add
40
+ round trips. In one request, the extra questions cost only their own tokens and barely change
41
+ latency.
42
+
43
+ ## Confidence-gated routing
44
+
45
+ **What:** Use `confidence` as a second decision axis alongside the answer itself — the answer says
46
+ *what*, confidence says *whether to act on it*. Give different actions different confidence floors
47
+ based on the cost of being wrong.
48
+
49
+ **Worked example (voice banking commands, one Choice question, `intent`: `check_balance` /
50
+ `approve_transfer` / `other`):**
51
+
52
+ ```python
53
+ if intent.confidence < 0.6:
54
+ route_to_human_agent(request) # floor: catches anything genuinely uncertain
55
+ elif intent.choice == "check_balance":
56
+ # Low stakes — 0.6 is already sufficient.
57
+ show_balance(request)
58
+ elif intent.choice == "approve_transfer":
59
+ if intent.confidence > 0.85:
60
+ approve_automatically(request) # high stakes, but high confidence
61
+ else:
62
+ ask_user_to_confirm(request) # high stakes, moderate confidence
63
+ ```
64
+
65
+ **Why:** the same 0.6 floor filters out genuine model uncertainty regardless of intent; above that,
66
+ each action gets its own threshold scaled to how expensive a wrong automatic action would be.
67
+ Thresholds like these are domain-specific and not portable between question types — don't carry a
68
+ threshold tuned on one Choice over to a different Choice or a Score without re-validating it.
69
+
70
+ ## Composite scoring
71
+
72
+ **What:** Break one complex judgment into several independent Score dimensions, normalize each to
73
+ 0–1, and combine them with weights owned in code — rather than asking the model to produce one
74
+ holistic number directly.
75
+
76
+ **Worked example (resume screening, 4 independent 5-level Score questions in one request:
77
+ `python_depth`, `team_leadership`, `system_design`, `generalist`), combined with different weights
78
+ for two different roles from the same raw scores:**
79
+
80
+ ```python
81
+ py, lead, arch, general = (response.answers[k].score / 4 for k in
82
+ ["python_depth", "team_leadership", "system_design", "generalist"])
83
+
84
+ # Senior IC
85
+ ic_score = (0.40 * py) + (0.10 * lead) + (0.40 * arch) + (0.10 * general)
86
+
87
+ # Engineering Manager
88
+ em_score = (0.15 * py) + (0.40 * lead) + (0.20 * arch) + (0.25 * general)
89
+ ```
90
+
91
+ **Why:** ranking candidates this way gives visibility into exactly how the final number was built
92
+ (each component is inspectable), and the same raw per-dimension scores can be re-weighted for a
93
+ different downstream decision without another model call.
94
+
95
+ ## Intent routing
96
+
97
+ **What:** Use Jev as a cheap, fast classifier in front of the real handlers, so only the requests
98
+ that actually need an expensive model or a human get one.
99
+
100
+ **Worked example (customer-service routing, 2 questions in one request — `intent`: Choice of
101
+ `order_status` / `product_question` / `return_exchange` / `complaint`; `complexity`: Score, 3
102
+ levels):**
103
+
104
+ ```python
105
+ if intent.confidence < 0.5:
106
+ route_to_human(request) # floor, applies to every intent
107
+ elif intent.choice == "order_status":
108
+ handle_deterministically(request) # no LLM at all
109
+ elif intent.choice == "product_question":
110
+ route_to_llm("product_specialist", request)
111
+ elif intent.choice == "return_exchange":
112
+ route_to_llm("returns_specialist", request)
113
+ elif intent.choice == "complaint":
114
+ if complexity.score > 1 or complexity.confidence < 0.5:
115
+ route_to_human(request)
116
+ else:
117
+ route_to_llm("complaint_resolution", request)
118
+ ```
119
+
120
+ **Why:** one intent needs no LLM at all, two route to different specialist LLMs, and one uses a
121
+ *second* answer's confidence (`complexity`, a Score) to decide between an LLM and a human —
122
+ reinforcing that a confidence threshold's meaning depends on which question and which stakes it's
123
+ gating, not a single number reused everywhere.
@@ -0,0 +1,187 @@
1
+ # Primitives, HTTP API, and Models reference
2
+
3
+ Everything below is quoted or directly restated from `docs.typesafe.ai`'s `introduction.md`,
4
+ `primitives.md`, `primitives/choice.md`, `primitives/score.md`, `primitives/noul.md`,
5
+ `primitives/advanced.md`, `api.md`, and `models.md` (crawled 2026-09-21). Read the live docs if
6
+ anything here looks out of date. TypeSafe ships new model versions on its own schedule.
7
+
8
+ ## Endpoint
9
+
10
+ ```http
11
+ POST https://api.typesafe.ai/v1/systemone
12
+ Authorization: Bearer <API_KEY>
13
+ Content-Type: application/json
14
+ ```
15
+
16
+ ### Request body (top level, all required)
17
+
18
+ | Field | Type | Notes |
19
+ |---|---|---|
20
+ | `state` | `string \| object \| array` | The content every question in this request is evaluated against. See "State format" below. |
21
+ | `model` | `string` | e.g. `"jev-latest"`. See "Models, aliases, and versions." |
22
+ | `questions` | `map<string, Question>` | Key is your own id — chosen by your code, **never sent to the model, never used in inference**. Write the complete question in `instructions` even if the id looks self-explanatory. |
23
+
24
+ ### Response body (top level, all required)
25
+
26
+ | Field | Type | Notes |
27
+ |---|---|---|
28
+ | `model` | `string` | The concrete, versioned model that actually answered (e.g. `"jev-1.13.0"`), even if the request's `model` field was an alias. |
29
+ | `answers` | `map<string, Answer>` | Keyed by the same ids you sent in `questions`. |
30
+ | `usage` | `{ input_tokens: integer, output_tokens: integer }` | Token accounting for the whole request (all questions combined), used for billing. |
31
+
32
+ ### Errors
33
+
34
+ | Status | Meaning | What to do |
35
+ |---|---|---|
36
+ | `401 Unauthorized` | Missing or invalid API key. | Check the `Authorization` header. |
37
+ | `422 Unprocessable Entity` | Request body failed validation (missing required field, malformed question). The body details the offending field. | Fix the request; don't retry unchanged. |
38
+ | `429 Too Many Requests` | Rate limit exceeded. | Retry with exponential backoff; honor `retry-after` if present. SDKs do this by default. |
39
+ | `529 Overloaded` | TypeSafe is temporarily overloaded. | Retry after a short delay, with backoff. |
40
+
41
+ ## State format
42
+
43
+ | Format | Useful for | Example |
44
+ |---|---|---|
45
+ | String | A message, article, or passage | `"My card was charged twice."` |
46
+ | Object | Named fields, related records, or application state | `{"message": "...", "order_id": "A-104"}` |
47
+ | Array | A sequence of messages or records | `["Hi", "My customer number is TS1337.", "My card was charged twice."]` |
48
+
49
+ - Text only — string, JSON object, or array of text values. No image, audio, or video input.
50
+ - English is the primary training language and currently the most accurate. Other languages,
51
+ including CJK scripts, are accepted but less accurate — test on real content before relying on
52
+ Jev for a non-English workload.
53
+ - Prefer an object over a bare string for most requests, so parts of the state have descriptive
54
+ names a question can reference (see "Referencing nested state" below).
55
+ - Use an object, not a giant string, when you can — it composes with per-question structure and lets
56
+ you filter irrelevant fields out in code (see jaggedness #5, large/irrelevant state hurts accuracy).
57
+
58
+ ## Question types — full field reference
59
+
60
+ Every question shares this shape: an id (your key, not sent to the model), `type`, `instructions`
61
+ (required on all three), and `criteria` (required for Choice and Score, optional for Noul).
62
+
63
+ ### Choice
64
+
65
+ ```json
66
+ { "type": "choice", "instructions": <EntryType>, "criteria": { "<option>": <EntryType|null>, ... } }
67
+ ```
68
+
69
+ - `criteria` is a **required** map: option name → description. A description of `null` is valid when
70
+ the option name is self-explanatory (e.g. `{"calm": null, "frustrated": null, "angry": null}`).
71
+ - **Maximum 255 options.** Each option adds only a few tokens, so give the full list of teams,
72
+ categories, or products rather than a shortlist. Add an `other` / `none of the above` option when
73
+ the list might not cover every input.
74
+ - Answer: `{ "type": "choice", "choice": "<winning option>", "confidence": <0-1>, "probabilities": { "<option>": <0-1>, ... } }` — `probabilities` sums to 1 across every option; `choice` is the
75
+ highest-probability option; `confidence` is derived from how peaked/flat that distribution is.
76
+
77
+ ### Score
78
+
79
+ ```json
80
+ { "type": "score", "instructions": <EntryType>, "criteria": [<EntryType>, <EntryType>, ...] }
81
+ ```
82
+
83
+ - `criteria` is a **required, ordered array** of level descriptions, low end of the scale first.
84
+ **At least 2 levels, at most 10.** Levels are 0-indexed by array position. The model is given only
85
+ the description text for each level and judges each independently — it does not see the level
86
+ number or its neighbors.
87
+ - Use as many levels as you can describe distinctly; three is fine. Don't add levels you can't
88
+ describe distinctly — plain numeric levels (`["0", "1", "2"]`) measurably perform worse than
89
+ described ones for the same input (docs show a same-input comparison: descriptive levels →
90
+ score 0.0 at confidence 1.0; numeric-only levels → score 0.55 at confidence 0.33).
91
+ - Answer: `{ "type": "score", "score": <number>, "confidence": <0-1>, "legend": { "<index>": "<description>", ... }, "probabilities": { "<index>": <0-1>, ... } }`.
92
+ **`score` formula:** the probability-weighted mean of level indices — `Σ(level_index ×
93
+ probability[level_index])`. It can therefore land between two levels (e.g. `1.43` between levels 1
94
+ and 2); do not treat `score` as an exact measurement interpolated within a level (jaggedness #2).
95
+ - To split a complex judgment into several Score questions and recombine: normalize each score to
96
+ 0–1 by dividing by `len(criteria) - 1` (the top level index), then combine with weights you own in
97
+ code (composite scoring — see `patterns.md`).
98
+ - Structured level descriptions (an object per level, e.g. `{what: ..., examples: [...]}`) can
99
+ materially change `score`/`confidence` when the example matches the real input — the docs show the
100
+ same input scoring `1.43`/`0.35` with a plain-string level vs. `1.03`/`0.96` once a matching
101
+ example was added to that level's description.
102
+
103
+ ### Noul
104
+
105
+ ```json
106
+ { "type": "noul", "instructions": <EntryType>, "criteria": { "true": <EntryType>, "false": <EntryType> } }
107
+ ```
108
+
109
+ - `criteria` is **optional** — an object clarifying what "yes" and "no" mean for ambiguous
110
+ boundaries. Omit it when the question is unambiguous.
111
+ - Answer: `{ "type": "noul", "noul": <0-1> }` — the probability the answer is yes. **No `confidence`
112
+ field** (a two-outcome distribution is already fully described by one number).
113
+ - `noul` is a probability of "yes," not a scale of the thing you asked about — it is not directly
114
+ comparable to a Score's `score` value for the same underlying question (docs show a 4-row example
115
+ where Noul values 0.03/0.14/0.81/0.92 line up with Score values 0.0/1.0/2.05/2.89 for parallel
116
+ questions on the same 4 inputs — not linearly related).
117
+ - Threshold guidance: use 0.5 when acting on a false yes and missing a true yes cost about the same;
118
+ raise the threshold when a false yes is expensive, lower it when missing a true yes is expensive.
119
+ A "don't know" band (e.g. `0.2 < noul < 0.8`) can route ambiguous cases to human review while still
120
+ surfacing the raw probability.
121
+ - Phrase the question so a "yes" answer is unambiguous — `criteria.true`/`criteria.false` exist
122
+ specifically for the cases where that's not obvious from the instructions alone.
123
+
124
+ ### Structured `instructions`/`criteria` (`EntryType`)
125
+
126
+ `instructions`, Choice's per-option `criteria` values, Score's per-level `criteria` entries, and
127
+ Noul's `criteria.true`/`criteria.false` all accept the same shape — `EntryType` = `string | object |
128
+ array | null` — not just plain text.
129
+
130
+ - Use structure when it adds clarity (a multi-part question) or when the question needs supporting
131
+ data that's already JSON (a schema, a taxonomy node, a database row) — pass that JSON directly, or
132
+ the relevant subfields, rather than string-templating it into prose.
133
+ - Field names inside a structured value are **not part of the API and none are reserved** — you
134
+ choose them (docs use examples like `question`, `focus`, `what`, `not_for`, `examples`), and the
135
+ model sees the field names along with the values.
136
+ - Reference a specific part of `state` from inside `instructions` with a backtick dot/index path,
137
+ e.g. `` `ticket.messages[0].text` ``.
138
+ - **Walking a taxonomy:** for a deep classification tree, ask one Choice per level, with the current
139
+ node's children as `criteria` keys and their **subtrees** as the option values (not just a
140
+ description) — this lets the model see what's under each branch before committing. If a branch is
141
+ too large, trim its value to direct children plus a sample of leaves.
142
+
143
+ ## Batching questions in one request
144
+
145
+ - All three types can be mixed freely in one `questions` map.
146
+ - Every question in a request is evaluated **in parallel and in isolation** against the same
147
+ `state`. Adding questions barely changes response time and costs only the extra tokens for the
148
+ added question text.
149
+ - Only split into two sequential requests when code genuinely cannot construct the second request
150
+ until it has read the first response (e.g. rank-then-verify over a large candidate set — see
151
+ `cookbooks.md`'s "Skill suggestion" and "Structure recovery" entries, and "Hierarchical
152
+ classification" for beam search over sequential per-level requests).
153
+
154
+ ## Models, aliases, and versions
155
+
156
+ | Field | Value |
157
+ |---|---|
158
+ | Current model | `jev-1.13.0` (the only model family as of this writing) |
159
+ | Price | $42 per billion input tokens ($0.042 / million). **Output tokens are free.** |
160
+ | Rate limits | 250,000 tokens/second, 1,200 requests/minute — **stated as adjusting dynamically and subject to change without notice** as TypeSafe scales capacity. Higher limits available on custom/enterprise plans (`sales@typesafe.ai`). |
161
+ | Context length | 64k tokens per request (`state` + every question combined); 32k tokens for `state` plus the single longest question. |
162
+ | Input | Text only (string / JSON object / array of text). No image, audio, or video. |
163
+
164
+ **Aliases:**
165
+
166
+ | Alias | Points to (currently) | Meaning |
167
+ |---|---|---|
168
+ | `jev-latest` | `jev-1.13.0` | Most recent **stable, official** release. SDK default; what these docs' examples use. |
169
+ | `jev-preview` | `jev-1.13.0` | Most recent release, official or not — moves ahead of `jev-latest` when a preview build exists. Currently identical to `jev-latest`; no preview build is live right now. |
170
+
171
+ An alias moves when TypeSafe ships a new release, so answers behind it can change without any change
172
+ on your side. The response's `model` field always reports the concrete versioned id that answered.
173
+ **If you've tuned confidence thresholds against a specific version, pin that version's id instead of
174
+ an alias.**
175
+
176
+ `GET /v1/models` lists available `model` names (the aliases) with a description and release date —
177
+ `{"models": [{"name": string, "description": string, "release_date": string}, ...]}`. Versioned ids
178
+ like `jev-1.13.0` are always accepted by the `model` field whether or not they're listed there.
179
+
180
+ **Customization:** Jev is not fine-tuned or LoRA-adapted per customer — the same weights serve every
181
+ account. It's trained with RLCD (reinforcement learning for calibrated decisions — see TypeSafe's
182
+ "AI primer" for how this differs from optimizing for generated text). Customization happens entirely
183
+ through how you shape the request: `state` content, `instructions`/`criteria` wording, and how you
184
+ decompose and recombine questions in code — not through any per-account training.
185
+
186
+ **Data handling:** Jev is not trained on customer requests or responses. Zero data retention (ZDR)
187
+ is available for enterprise customers — see TypeSafe's `/legal` for the DPA and privacy policy.
@@ -0,0 +1,22 @@
1
+ {
2
+ "$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
3
+ "name": "langfuse",
4
+ "version": "0.1.0",
5
+ "description": "Connects the site to Langfuse through the ai-trace-langfuse provider in @jini-ai/provider-plugins. Installation alone does not enable or configure the provider.",
6
+ "author": "Jini",
7
+ "license": "Apache-2.0",
8
+ "extensions": {
9
+ "tovu": {
10
+ "id": "jini/langfuse",
11
+ "displayName": "Langfuse",
12
+ "providerPlugin": "ai-trace-langfuse",
13
+ "provides": [
14
+ "ai-tracing"
15
+ ]
16
+ }
17
+ },
18
+ "keywords": [
19
+ "langfuse",
20
+ "ai-trace-langfuse"
21
+ ]
22
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "$schema": "https://agent-plugins.org/schemas/1.0.0/mcp.schema.json",
3
+ "mcpServers": {}
4
+ }
@@ -0,0 +1,54 @@
1
+ {
2
+ "$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
3
+ "name": "meilisearch",
4
+ "version": "0.1.0",
5
+ "description": "Runs the site's visitor search on a Meilisearch server (self-hosted or Meilisearch Cloud) instead of the host's built-in search. Ships the search provider itself (a host loads it only when the host shipped it) and the know-how to connect it. Meilisearch receives PUBLIC content only: published, publicly visible titles, text and URLs. Members-only or otherwise restricted content is never sent to it and stays in the host's built-in search.",
6
+ "author": "Tovu",
7
+ "license": "Apache-2.0",
8
+ "extensions": {
9
+ "tovu": {
10
+ "maturity": "soon",
11
+ "summary": "Powers your site's search with Meilisearch. Only public content is sent to it.",
12
+ "id": "tovu/meilisearch",
13
+ "provides": [
14
+ "site-search"
15
+ ],
16
+ "credentialCards": [
17
+ {
18
+ "target": "meilisearch",
19
+ "title": "Connect Meilisearch",
20
+ "label": "Tovu Search — Meilisearch",
21
+ "ownedApiLabel": "Tovu Search — Meilisearch",
22
+ "category": "general",
23
+ "intro": "Connect your Meilisearch server to index and search this site’s public content only.",
24
+ "usedFor": [
25
+ "Keeps a search index of your site's public content",
26
+ "Finds matching public content for your site's visitors"
27
+ ],
28
+ "keyHint": "Scope the key to the site index: indexes.create, indexes.delete, documents.add, documents.get, search, settings.update and tasks.get. Use a scoped key rather than the master key.",
29
+ "saveKind": "api",
30
+ "fields": [
31
+ {
32
+ "name": "baseUrl",
33
+ "label": "Meilisearch server URL",
34
+ "hint": "The HTTPS URL of your own Cloud or self-hosted Meilisearch server.",
35
+ "required": true
36
+ }
37
+ ]
38
+ }
39
+ ],
40
+ "toolKeywords": {
41
+ "search_status": "meilisearch",
42
+ "search_set_provider": "meilisearch"
43
+ }
44
+ }
45
+ },
46
+ "keywords": [
47
+ "meilisearch",
48
+ "search",
49
+ "site-search",
50
+ "full-text-search",
51
+ "typo-tolerance",
52
+ "search-engine"
53
+ ]
54
+ }