Skip to content

feat(react): add useCompletion hook and createDirectTransport#100

Merged
indrazm merged 1 commit into
anvia-hq:mainfrom
indrazm:feat/react-completion-transport
Jun 16, 2026
Merged

feat(react): add useCompletion hook and createDirectTransport#100
indrazm merged 1 commit into
anvia-hq:mainfrom
indrazm:feat/react-completion-transport

Conversation

@indrazm

@indrazm indrazm commented Jun 16, 2026

Copy link
Copy Markdown
Contributor

Summary

Add completion streaming support to @packages/react:

  • useCompletion hook for single-prompt text completion streaming (simpler alternative to useChat)
  • createDirectTransport for in-process transport (no HTTP round-trip, SSR, testing)
  • Default event mappers for CompletionStreamEvent from @anvia/core

New public API

// useCompletion with HTTP endpoint
const { completion, input, complete, stop, status } = useCompletion({
  endpoint: '/api/completion',
});

// useCompletion with in-process transport (no HTTP)
const { completion, complete } = useCompletion({
  transport: createDirectTransport((req) =>
    createCompletionStream(model, { input: req.prompt }),
  ),
});

// createDirectTransport also works with useChat
useChat({
  transport: createDirectTransport((req) => agent.prompt(req.message).stream()),
});

Server handler (already works, no changes needed)

import { createEventStream } from '@anvia/server';
import { createCompletionStream } from '@anvia/core';

export async function POST(req: Request) {
  const { prompt } = await req.json();
  return createEventStream(createCompletionStream(model, { input: prompt }));
}

Changes

File Action
src/use-completion.ts New hook
src/completion-defaults.ts Default event mappers
src/direct.ts In-process transport
src/index.ts Updated exports
test/use-completion.test.ts 9 tests
test/direct.test.ts 6 tests

All existing APIs untouched. 36 tests pass, 0 failures. Typecheck clean across react, server, core, and docs packages.

Add completion streaming support to @packages/react:

- useCompletion hook for single-prompt text completion streaming
- createDirectTransport for in-process transport (no HTTP, SSR, testing)
- Default event mappers for CompletionStreamEvent from @anvia/core

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
@indrazm indrazm force-pushed the feat/react-completion-transport branch from 84b92e6 to 2cc8a4e Compare June 16, 2026 08:17
@indrazm indrazm merged commit da736e9 into anvia-hq:main Jun 16, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant