Skip to content

Kody is live

Watch the launch video — what Kody is, and why it exists.

← Public packages

@kentcdodds/jev

Call TypeSafe Jev evaluations via Cloudflare AI Gateway (same token/gateway as @kentcdodds/ai).

src/index.ts

65 lines · 2.0 KB · TypeScript
/**
 * Overview and setup checklist for TypeSafe Jev via Cloudflare AI Gateway.
 * Use when an agent needs setup URLs or readiness before calling `./evaluate`.
 *
 * @returns Safe setup checklist (no secrets). Prefer `./evaluate` for real calls.
 *
 * @example
 * import overview from 'kody:@kentcdodds/jev'
 * const status = await overview()
 */

import { missingSetup, secretsNewUrl } from './resolve.ts'
import jevSettings from './settings.ts'

/**
 * Overview and setup checklist for TypeSafe Jev via Cloudflare AI Gateway.
 * Use when an agent needs setup URLs or readiness before calling `./evaluate`.
 *
 * @returns Safe setup checklist (no secrets). Prefer `./evaluate` for real calls.
 *
 * @example
 * import overview from 'kody:@kentcdodds/jev'
 * const status = await overview()
 */
export default async function overview() {
	const settings = await jevSettings()
	const ready = Boolean(settings.accountId)
	return {
		package: '@kentcdodds/jev',
		intent:
			'Call TypeSafe Jev (typesafe/jev) structured evaluations through Cloudflare AI Gateway, reusing the same cloudflareApiToken and account/gateway as @kentcdodds/ai when possible.',
		exports: [
			'.',
			'./evaluate',
			'./request',
			'./settings',
			'./types',
			'./smoke-test',
		],
		model: settings.model,
		ready,
		settings: {
			accountIdSet: ready,
			gatewayId: settings.gatewayId,
			model: settings.model,
			sources: settings.sources,
		},
		secret: 'cloudflareApiToken',
		secretsNewUrl,
		docs: {
			cloudflare: 'https://developers.cloudflare.com/ai/models/typesafe/jev/',
			typesafe: 'https://typesafe.ai/',
			package: 'https://kody.codes/@kentcdodds/jev',
		},
		setup: ready ? undefined : missingSetup(''),
		next: ready
			? 'import evaluate from "kody:@kentcdodds/jev/evaluate"'
			: 'Save cloudflareApiToken, then set accountId via ./settings (or reuse @kentcdodds/ai/settings).',
	}
}

export { default as evaluate } from './evaluate.ts'
export { default as jevRequest } from './request.ts'
export { default as jevSettings } from './settings.ts'
export { default as smokeTest } from './smoke-test.ts'