diff --git a/README.md b/README.md index e9eb3ce..7ff66af 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# @fleet/ai-forms +# ai-forms Headless AI form filling and conversational refinement. One implementation, shared by every app in the fleet. @@ -45,7 +45,7 @@ The same mistake has a sibling: a single minimum input length. A fill descriptio ```ts // src/config/ai-forms.ts -import { defineFields, type FormTarget } from '@fleet/ai-forms'; +import { defineFields, type FormTarget } from 'ai-forms'; export const GOAL_FORM: FormTarget = { key: 'goal', @@ -68,7 +68,7 @@ export const AI_FORMS = [GOAL_FORM /* , ... */]; ```ts // src/app/api/ai/form-assist/route.ts -import { createFormAssistHandler } from '@fleet/ai-forms/server'; +import { createFormAssistHandler } from 'ai-forms/server'; import { AI_FORMS } from '@/config/ai-forms'; import { callGroqText } from '@/lib/groq'; import { getCurrentUserId } from '@/lib/session'; @@ -110,7 +110,7 @@ Rendering is yours. The package ships no markup and no classes — each app has ## API -### `@fleet/ai-forms` +### `ai-forms` | Export | Purpose | | --- | --- | @@ -121,11 +121,11 @@ Rendering is yours. The package ships no markup and no classes — each app has | `parseAssistResponse(text)` | Extract JSON from fenced or prose-wrapped completions | | `MIN_INSTRUCTION_LENGTH` | Per-intent input floors | -### `@fleet/ai-forms/server` +### `ai-forms/server` `createFormAssistHandler(config)` → `(Request) => Promise`. Web-standard, so it drops straight into a Next.js App Router route. `authorize` runs before any model call. -### `@fleet/ai-forms/react` +### `ai-forms/react` `useAiForm(options)` → values, `setValue`, `ask` / `fill` / `refine`, `busy`, `error`, `transcript`, `changed`, `isAiTouched`, `undo`, `canUndo`, `reset`. diff --git a/package-lock.json b/package-lock.json index 3b31882..7c7fdd1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,18 +1,21 @@ { - "name": "@fleet/ai-forms", - "version": "0.1.0", + "name": "ai-forms", + "version": "0.2.0", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "@fleet/ai-forms", - "version": "0.1.0", + "name": "ai-forms", + "version": "0.2.0", "license": "MIT", "devDependencies": { "@types/node": "^22.10.2", "@types/react": "^19.0.2", "typescript": "^5.8.2" }, + "engines": { + "node": ">=18" + }, "peerDependencies": { "react": ">=18" }, diff --git a/package.json b/package.json index a266e0e..824c835 100644 --- a/package.json +++ b/package.json @@ -1,13 +1,35 @@ { - "name": "@fleet/ai-forms", - "version": "0.1.0", + "name": "ai-forms", + "version": "0.2.0", "description": "Headless AI form filling and conversational refinement. Provider-agnostic core, React hook, and a server route factory.", + "keywords": [ + "ai", + "forms", + "form-fill", + "llm", + "react", + "structured-output", + "natural-language", + "zod", + "headless", + "openai", + "anthropic", + "form-builder" + ], "license": "MIT", + "homepage": "https://github.com/maonakamoto/ai-forms#readme", "repository": { "type": "git", "url": "git+https://github.com/maonakamoto/ai-forms.git" }, + "bugs": { + "url": "https://github.com/maonakamoto/ai-forms/issues" + }, "type": "module", + "sideEffects": false, + "engines": { + "node": ">=18" + }, "files": [ "dist" ],