pull/715/head
Travis Fischer 2025-06-24 21:00:10 -05:00
rodzic 9379b17bf6
commit a389300e6a
3 zmienionych plików z 40 dodań i 16 usunięć

Wyświetl plik

@ -1,6 +1,7 @@
import Link from 'next/link' import Link from 'next/link'
import { DemandSideCTA } from '@/components/demand-side-cta' import { DemandSideCTA } from '@/components/demand-side-cta'
import { DotsSection } from '@/components/dots-section'
import { ExampleUsage } from '@/components/example-usage' import { ExampleUsage } from '@/components/example-usage'
import { GitHubStarCounter } from '@/components/github-star-counter' import { GitHubStarCounter } from '@/components/github-star-counter'
import { githubUrl, twitterUrl } from '@/lib/config' import { githubUrl, twitterUrl } from '@/lib/config'
@ -9,11 +10,7 @@ export default function TheBestDamnLandingPageEver() {
return ( return (
<> <>
{/* Hero section */} {/* Hero section */}
<section className='mb-16 relative'> <DotsSection className='mb-16'>
<div className='absolute top-0 bottom-0 left-0 right-0 bg-[url(/dots.svg)] bg-repeat bg-center bg-size-[32px_auto] opacity-30 dark:opacity-100' />
<div className='absolute top-0 bottom-0 left-0 right-0 bg-[radial-gradient(39%_50%_at_50%_50%,rgba(255,255,255,.3)_0%,rgb(255,255,255)_100%)] dark:bg-[radial-gradient(39%_50%_at_50%_50%,rgba(10,10,10,0)_0%,rgb(10,10,10)_100%)]' />
<div className='flex flex-col gap-8 relative z-10'> <div className='flex flex-col gap-8 relative z-10'>
<h1 className='text-center text-balance leading-snug md:leading-none text-4xl font-semibold'> <h1 className='text-center text-balance leading-snug md:leading-none text-4xl font-semibold'>
The App Store for LLM Tools The App Store for LLM Tools
@ -26,9 +23,7 @@ export default function TheBestDamnLandingPageEver() {
<DemandSideCTA /> <DemandSideCTA />
</div> </div>
</section> </DotsSection>
<section></section>
{/* How it works section */} {/* How it works section */}
<section className='flex flex-col gap-8 mb-16'> <section className='flex flex-col gap-8 mb-16'>
@ -94,13 +89,16 @@ export default function TheBestDamnLandingPageEver() {
</section> </section>
{/* CTA section */} {/* CTA section */}
<section className='flex flex-col gap-12 mb-16'>
<h2 className='text-center text-balance leading-snug md:leading-none text-3xl font-heading'>
Level up your AI Agents with the best tools
</h2>
<DemandSideCTA /> <DotsSection className='mb-16'>
</section> <div className='flex flex-col gap-12 relative z-10'>
<h2 className='text-center text-balance leading-snug md:leading-none text-3xl font-heading'>
Level up your AI Agents with the best tools
</h2>
<DemandSideCTA />
</div>
</DotsSection>
</> </>
) )
} }

Wyświetl plik

@ -0,0 +1,19 @@
import { cn } from '@/lib/utils'
export function DotsSection({
children,
className
}: {
children: React.ReactNode
className?: string
}) {
return (
<section className={cn('relative', className)}>
<div className='absolute top-0 bottom-0 left-0 right-0 bg-[url(/dots.svg)] bg-repeat bg-center bg-size-[32px_auto] opacity-30 dark:opacity-100' />
<div className='absolute top-0 bottom-0 left-0 right-0 bg-[radial-gradient(39%_50%_at_50%_50%,rgba(255,255,255,.3)_0%,rgb(255,255,255)_100%)] dark:bg-[radial-gradient(39%_50%_at_50%_50%,rgba(10,10,10,0)_0%,rgb(10,10,10)_100%)]' />
{children}
</section>
)
}

Wyświetl plik

@ -11,8 +11,12 @@ import { parseDeploymentIdentifier } from '@agentic/platform-validators'
import defaultKy, { type KyInstance } from 'ky' import defaultKy, { type KyInstance } from 'ky'
/** /**
* Agentic tool client which makes it easy to use an Agentic tools product with * Agentic tool client which makes it easy to use an Agentic tool products with
* all of the major TypeScript LLM SDKs. * all of the major TypeScript LLM SDKs, without having to go through any MCP
* middleware.
*
* The resulting tool client will make simple HTTP calls to the Agentic Gateway
* to execute tools.
* *
* @example * @example
* ```ts * ```ts
@ -73,6 +77,9 @@ export class AgenticToolClient extends AIFunctionsProvider {
return this._functions return this._functions
} }
/**
* Helper method to call a tool with either raw or stringified JSON arguments.
*/
async callTool(toolName: string, args: string | Record<string, any>) { async callTool(toolName: string, args: string | Record<string, any>) {
const tool = this.functions.get(toolName) const tool = this.functions.get(toolName)
assert(tool, `Tool "${toolName}" not found`) assert(tool, `Tool "${toolName}" not found`)