Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: moeru-ai/xsai
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v0.0.24
Choose a base ref
...
head repository: moeru-ai/xsai
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: main
Choose a head ref

Commits on Jan 8, 2025

  1. Copy the full SHA
    8658a12 View commit details
  2. Copy the full SHA
    c7b21e9 View commit details
  3. feat: new package stream-object (#18)

    * feat: new package `stream-object`
    
    * chore(xsai): update exports
    
    * chore(stream-object): fix test name
    
    * refactor(generate-object): de-duplication
    kwaa authored Jan 8, 2025
    Copy the full SHA
    880dc06 View commit details
  4. Copy the full SHA
    33653f1 View commit details
  5. docs: update comments

    kwaa committed Jan 8, 2025
    Copy the full SHA
    59e2d5a View commit details

Commits on Jan 9, 2025

  1. refactor(providers)!: improve structure (#19)

    * refactor(providers): remove openai-compatible
    
    * refactor(providers/speech): move model to top-level, remove voice
    kwaa authored Jan 9, 2025
    Copy the full SHA
    831e080 View commit details
  2. Copy the full SHA
    c9914c7 View commit details
  3. Copy the full SHA
    cef0f2e View commit details
  4. feat(xsai): export all types

    kwaa committed Jan 9, 2025
    Copy the full SHA
    ec8e77e View commit details
  5. chore: release v0.0.25

    kwaa committed Jan 9, 2025
    Copy the full SHA
    986f6f2 View commit details
  6. fix(model): fix test

    kwaa committed Jan 9, 2025
    Copy the full SHA
    604301a View commit details
  7. Copy the full SHA
    f50865f View commit details
  8. chore: release v0.0.26

    kwaa committed Jan 9, 2025
    Copy the full SHA
    8df5a86 View commit details

Commits on Jan 10, 2025

  1. Copy the full SHA
    fa030f8 View commit details

Commits on Jan 12, 2025

  1. ci(check): run lint (#24)

    iseki0 authored Jan 12, 2025
    Copy the full SHA
    49b99be View commit details
  2. feat(generate-text): add toolCalls, toolResults (#22)

    * feat(generate-text): add toolCalls and toolResults
    
    * Update packages/generate-object/src/index.ts
    
    Co-authored-by: 藍+85CD <50108258+kwaa@users.noreply.github.com>
    iseki0 and kwaa authored Jan 12, 2025
    Copy the full SHA
    9b9c73a View commit details
  3. refactor(generate-text): trampoline function (#25)

    * refactor(generate-text)!: trampoline function
    
    * fix(generate-text): clean steps
    
    * refactor(generate-text): simplify naming
    
    * refactor(generate-text): simplify naming
    
    * chore(tool): update test
    
    * chore(generate-text): update test
    kwaa authored Jan 12, 2025
    Copy the full SHA
    d143e32 View commit details
  4. chore(pnpm): bump to v10

    kwaa committed Jan 12, 2025
    Copy the full SHA
    f6adcb2 View commit details
  5. chore: release v0.0.27

    kwaa committed Jan 12, 2025
    Copy the full SHA
    c59ab2c View commit details

Commits on Jan 15, 2025

  1. feat(generate-text): add onStepFinish() (#26)

    * feat(generate-text): add onStepFinish()
    
    * chore(generate-text): update test
    kwaa authored Jan 15, 2025
    Copy the full SHA
    2bc1733 View commit details
  2. feat(stream-text): add onChunk() (#27)

    * feat(stream-text): add onChunk()
    
    * chore(stream-text): update test
    
    * chore(stream-text): update test snapshot
    kwaa authored Jan 15, 2025
    Copy the full SHA
    4d5a1e4 View commit details
  3. refactor!: rename & move (#28)

    * refactor: move usage to shared-chat
    
    * refactor(stream-text)!: rename StreamTextResponse to ChunkResult
    
    * fix(xsai): update export
    kwaa authored Jan 15, 2025
    Copy the full SHA
    0570a77 View commit details
  4. chore: release v0.0.28

    kwaa committed Jan 15, 2025
    Copy the full SHA
    8535548 View commit details

Commits on Jan 16, 2025

  1. chore(deps): bump version (#29)

    * chore(deps): bump dependencies
    
    * chore: update eslint
    
    * fix: lint
    nekomeowww authored Jan 16, 2025
    Copy the full SHA
    90d0db0 View commit details

Commits on Jan 18, 2025

  1. fix(stream-text): incorrectly handled errors (#31)

    Co-authored-by: iseki <admin@iseki.space>
    nekomeowww and iseki0 authored Jan 18, 2025
    Copy the full SHA
    34970df View commit details
  2. Copy the full SHA
    e0ea738 View commit details
  3. Copy the full SHA
    5c73eb3 View commit details

Commits on Jan 19, 2025

  1. fix(stream-text): ensure SSE handling conforms to the spec (#33)

    * fix(stream-text): ensure SSE handling conforms to the spec
    
    * fix(stream-text): currently, we don't supports line break other '\n'
    
    * Update packages/stream-text/src/index.ts
    
    Co-authored-by: 藍+85CD <50108258+kwaa@users.noreply.github.com>
    
    * Update packages/stream-text/src/index.ts
    
    Co-authored-by: 藍+85CD <50108258+kwaa@users.noreply.github.com>
    
    * fix(stream-text): keep comments
    
    ---------
    
    Co-authored-by: 藍+85CD <50108258+kwaa@users.noreply.github.com>
    iseki0 and kwaa authored Jan 19, 2025
    Copy the full SHA
    2843900 View commit details
  2. chore: release v0.0.29

    kwaa committed Jan 19, 2025
    Copy the full SHA
    a0d8502 View commit details

Commits on Jan 22, 2025

  1. chore: clean config

    kwaa committed Jan 22, 2025
    Copy the full SHA
    e677f8e View commit details
  2. chore(eslint): bump config

    kwaa committed Jan 22, 2025
    Copy the full SHA
    22e146b View commit details
  3. chore(eslint): enable cache

    kwaa committed Jan 22, 2025
    Copy the full SHA
    8c3f590 View commit details
  4. fix: lint code

    kwaa committed Jan 22, 2025
    Copy the full SHA
    4d60993 View commit details
  5. fix: lint errors

    kwaa committed Jan 22, 2025
    Copy the full SHA
    ebc5227 View commit details
  6. fix: lint errors

    kwaa committed Jan 22, 2025
    Copy the full SHA
    796154b View commit details
  7. feat(tool): add execute options (#35)

    * fix(tool/generate-text): add reference
    
    * feat(tool): add execute options
    kwaa authored Jan 22, 2025
    Copy the full SHA
    210f2c4 View commit details
  8. docs: update generate section

    kwaa committed Jan 22, 2025
    Copy the full SHA
    ef31ccf View commit details

Commits on Jan 23, 2025

  1. feat!: new utils-{chat,stream} package (#36)

    * refactor!: new `utils-{chat,stream}` package
    
    * fix: lint code
    
    * feat(utils-stream): add smoothStream
    
    * refactor(utils-stream/smooth-stream): handle zero delay
    
    * feat(utils-stream): add simulateReadableStream
    
    * chore!: relicense to apache-2.0
    
    * chore(utils): remove private field
    
    * fix(license): update copyright
    
    * Revert "fix(license): update copyright"
    
    This reverts commit 7a85cd6.
    
    * Revert "chore!: relicense to apache-2.0"
    
    This reverts commit 826b420.
    
    * chore(utils-stream): add license header
    
    * chore(utils-stream): update license header
    kwaa authored Jan 23, 2025
    Copy the full SHA
    ac14b49 View commit details

Commits on Jan 30, 2025

  1. feat(generate-text): return messages (#37)

    * feat(generate-text): return messages
    
    * fix(generate-object): return messages
    kwaa authored Jan 30, 2025
    Copy the full SHA
    65e2d72 View commit details
  2. Copy the full SHA
    4447303 View commit details
  3. Copy the full SHA
    a4f01f0 View commit details
  4. Copy the full SHA
    4896299 View commit details
  5. Copy the full SHA
    5f3e65e View commit details
  6. feat(generate-text): step type, step finish reason (#38)

    * feat(generate-text): step type, step finish reason
    
    * refactor(generate-object): return tool calls, tool results
    
    * fix: lint code
    kwaa authored Jan 30, 2025
    Copy the full SHA
    0334e44 View commit details
  7. chore: release v0.0.30

    kwaa committed Jan 30, 2025
    Copy the full SHA
    9672d84 View commit details

Commits on Feb 3, 2025

  1. fix(utils-chat): array tool calls incorrectly constructed (#39)

    Co-authored-by: LemonNeko <chheese048@gmail.com>
    nekomeowww and LemonNekoGH authored Feb 3, 2025
    Copy the full SHA
    a373637 View commit details
  2. chore: release v0.0.31

    nekomeowww committed Feb 3, 2025
    Copy the full SHA
    13180a2 View commit details

Commits on Feb 5, 2025

  1. feat!: new package xsschema (#40)

    * feat: new package `xsschema`
    
    * chore: clean cspell config
    
    * fix(tsconfig): add reference
    
    * fix(xsschema): add json-schema types to dev deps
    
    * chore(xsschema): export schema type
    
    * fix(xsschema): export schema type
    
    * refactor!: use xsschema instead of typeschema
    
    * fix(generate-object): direct return
    
    * fix(tool): drop tool result generic type
    
    * fix(xsschema): mark return type, handle unknown vendor
    
    * feat(xsschema): export json schema type
    
    * chore(generate-text): update test snapshot
    
    * fix(generate-text): check content length
    
    * chore(tool): update test snapshot
    kwaa authored Feb 5, 2025
    Copy the full SHA
    29e4d21 View commit details
  2. chore(xsschema): mark as public

    kwaa committed Feb 5, 2025
    Copy the full SHA
    da789f3 View commit details
  3. feat: new package xsfetch

    kwaa committed Feb 5, 2025
    Copy the full SHA
    2383d06 View commit details
Showing with 15,430 additions and 9,016 deletions.
  1. +1 −0 .github/workflows/check.yml
  2. +0 −1 .github/workflows/gh-pages.yml
  3. +1 −4 .gitignore
  4. +1 −6 .vscode/settings.json
  5. +9 −18 README.md
  6. +35 −5 cspell.config.yaml
  7. +13 −20 docs/app/(home)/page.tsx
  8. +18 −18 docs/app/docs/[[...slug]]/page.tsx
  9. +105 −4 docs/app/global.css
  10. +2 −2 docs/app/layout.config.tsx
  11. +8 −7 docs/components.json
  12. +84 −0 docs/components/pkg-size-chart.tsx
  13. +0 −55 docs/components/shadcn/button.tsx
  14. +0 −147 docs/components/ui/background-lines.tsx
  15. +68 −0 docs/components/ui/card.tsx
  16. +353 −0 docs/components/ui/chart.tsx
  17. +0 −99 docs/components/ui/hover-border-gradient.tsx
  18. +0 −57 docs/components/ui/spotlight.tsx
  19. +7 −9 docs/content/docs/get-started/embed.mdx
  20. +12 −1 docs/content/docs/get-started/generate/object.mdx
  21. +1 −1 docs/content/docs/get-started/generate/speech.mdx
  22. +8 −10 docs/content/docs/get-started/generate/text.mdx
  23. +16 −0 docs/content/docs/get-started/generate/transcription.mdx
  24. +7 −9 docs/content/docs/get-started/model.mdx
  25. +1 −1 docs/content/docs/get-started/overview.mdx
  26. +0 −155 docs/content/docs/get-started/providers.mdx
  27. +1 −1 docs/content/docs/get-started/stream-text.mdx
  28. +4 −17 docs/content/docs/get-started/tool.mdx
  29. +22 −0 docs/content/docs/index.mdx
  30. +0 −8 docs/content/docs/references/embed.model.mdx
  31. +0 −8 docs/content/docs/references/generate-object.model.mdx
  32. +0 −8 docs/content/docs/references/generate-speech.model.mdx
  33. +0 −8 docs/content/docs/references/generate-text.model.mdx
  34. +25 −0 docs/content/docs/references/meta.json
  35. +0 −8 docs/content/docs/references/providers.model.mdx
  36. +0 −8 docs/content/docs/references/stream-text.model.mdx
  37. +0 −8 docs/content/docs/references/tool.model.mdx
  38. +0 −8 docs/content/docs/references/xsai.model.mdx
  39. +0 −12 docs/generate-files.ts
  40. +0 −1 docs/lib/references/embed.ts
  41. +0 −1 docs/lib/references/generate-object.ts
  42. +0 −1 docs/lib/references/generate-speech.ts
  43. +0 −1 docs/lib/references/generate-text.ts
  44. +0 −1 docs/lib/references/providers.ts
  45. +0 −1 docs/lib/references/stream-text.ts
  46. +0 −1 docs/lib/references/tool.ts
  47. +0 −1 docs/lib/references/xsai.ts
  48. +5 −5 docs/lib/utils.ts
  49. +25 −24 docs/package.json
  50. +1 −1 docs/postcss.config.js
  51. +31 −0 docs/scripts/update-references.ts
  52. +6 −0 docs/source.config.ts
  53. +0 −72 docs/tailwind.config.ts
  54. +34 −5 eslint.config.ts
  55. +18 −19 package.json
  56. +39 −0 packages-ext/providers-cloud/package.json
  57. +3 −0 packages-ext/providers-cloud/src/index.ts
  58. +15 −0 packages-ext/providers-cloud/src/providers/cerebras.ts
  59. +36 −0 packages-ext/providers-cloud/src/providers/deepinfra.ts
  60. +8 −0 packages-ext/providers-cloud/src/providers/deepseek.ts
  61. +23 −0 packages-ext/providers-cloud/src/providers/fireworks.ts
  62. +23 −0 packages-ext/providers-cloud/src/providers/google-generative-ai.ts
  63. +20 −0 packages-ext/providers-cloud/src/providers/groq.ts
  64. +21 −0 packages-ext/providers-cloud/src/providers/index.ts
  65. +8 −0 packages-ext/providers-cloud/src/providers/minimax.ts
  66. +24 −0 packages-ext/providers-cloud/src/providers/mistral.ts
  67. +17 −0 packages-ext/providers-cloud/src/providers/moonshot.ts
  68. +12 −0 packages-ext/providers-cloud/src/providers/novita.ts
  69. +18 −0 packages-ext/providers-cloud/src/providers/openai.ts
  70. +132 −0 packages-ext/providers-cloud/src/providers/openrouter.ts
  71. +8 −0 packages-ext/providers-cloud/src/providers/perplexity.ts
  72. +26 −0 packages-ext/providers-cloud/src/providers/qwen.ts
  73. +42 −0 packages-ext/providers-cloud/src/providers/silicon-flow.ts
  74. +33 −0 packages-ext/providers-cloud/src/providers/stepfun.ts
  75. +16 −0 packages-ext/providers-cloud/src/providers/tencent-hunyuan.ts
  76. +32 −0 packages-ext/providers-cloud/src/providers/together-ai.ts
  77. +12 −0 packages-ext/providers-cloud/src/providers/workers-ai.ts
  78. +9 −0 packages-ext/providers-cloud/src/providers/xai.ts
  79. +21 −0 packages-ext/providers-cloud/src/providers/zhipu.ts
  80. +39 −0 packages-ext/providers-local/package.json
  81. +3 −0 packages-ext/providers-local/src/index.ts
  82. +9 −0 packages-ext/providers-local/src/providers/claude2openai.ts
  83. +4 −0 packages-ext/providers-local/src/providers/index.ts
  84. +25 −0 packages-ext/providers-local/src/providers/ollama.ts
  85. +37 −45 {packages/providers → packages-ext/providers-local}/src/providers/unspeech/elevenlabs.ts
  86. +17 −0 packages-ext/providers-local/src/providers/unspeech/index.ts
  87. +41 −0 packages-ext/shared-providers/package.json
  88. +5 −0 packages-ext/shared-providers/src/index.ts
  89. +3 −0 packages-ext/shared-providers/src/types/create-provider-options.ts
  90. +3 −0 packages-ext/shared-providers/src/types/metadata.ts
  91. +55 −0 packages-ext/shared-providers/src/types/providers.ts
  92. +47 −0 packages-ext/shared-providers/src/utils/create.ts
  93. +4 −0 packages-ext/shared-providers/src/utils/merge.ts
  94. +20 −16 packages/embed/package.json
  95. +1 −1 packages/embed/src/index.ts
  96. +4 −2 packages/embed/src/utils/embed-many.ts
  97. +6 −3 packages/embed/src/utils/embed.ts
  98. +1,536 −1,536 packages/embed/test/__snapshots__/embed-many.test.ts.snap
  99. +768 −768 packages/embed/test/__snapshots__/embed.test.ts.snap
  100. +2 −2 packages/embed/test/embed-many.test.ts
  101. +2 −2 packages/embed/test/embed.test.ts
  102. +0 −4 packages/embed/tsconfig.json
  103. +22 −17 packages/generate-object/package.json
  104. +54 −36 packages/generate-object/src/index.ts
  105. +12 −0 packages/generate-object/src/wrap.ts
  106. +0 −45 packages/generate-object/test/__snapshots__/index.test.ts.snap
  107. +75 −9 packages/generate-object/test/index.test.ts
  108. +0 −4 packages/generate-object/tsconfig.json
  109. +20 −16 packages/generate-speech/package.json
  110. +5 −5 packages/generate-speech/src/index.ts
  111. +0 −4 packages/generate-speech/tsconfig.json
  112. +22 −14 packages/generate-text/package.json
  113. +141 −90 packages/generate-text/src/index.ts
  114. +20 −0 packages/generate-text/test/__snapshots__/index.test.ts.snap
  115. +64 −4 packages/generate-text/test/index.test.ts
  116. +0 −4 packages/generate-text/tsconfig.json
  117. +20 −21 packages/generate-transcription/package.json
  118. +4 −4 packages/generate-transcription/src/index.ts
  119. +0 −4 packages/generate-transcription/tsconfig.json
  120. +20 −16 packages/model/package.json
  121. +4 −2 packages/model/src/utils/list-models.ts
  122. +4 −2 packages/model/src/utils/retrieve-model.ts
  123. +2 −3 packages/model/test/index.test.ts
  124. +0 −4 packages/model/tsconfig.json
  125. +0 −3 packages/providers/src/index.ts
  126. +0 −22 packages/providers/src/providers/google-generative-ai.ts
  127. +0 −5 packages/providers/src/providers/index.ts
  128. +0 −24 packages/providers/src/providers/ollama.ts
  129. +0 −21 packages/providers/src/providers/openai-compatible.ts
  130. +0 −32 packages/providers/src/providers/openai.ts
  131. +0 −22 packages/providers/src/providers/unspeech/index.ts
  132. +0 −1 packages/providers/src/types/index.ts
  133. +0 −35 packages/providers/src/types/provider.ts
  134. +0 −10 packages/providers/src/utils/generate-cro.ts
  135. +0 −1 packages/providers/src/utils/index.ts
  136. +0 −4 packages/providers/tsconfig.json
  137. +20 −13 packages/shared-chat/package.json
  138. +0 −10 packages/shared-chat/src/types/chat-options.ts
  139. +2 −1 packages/shared-chat/src/types/finish-reason.ts
  140. +1 −1 packages/shared-chat/src/types/index.ts
  141. +16 −16 packages/shared-chat/src/types/message-part.ts
  142. +19 −19 packages/shared-chat/src/types/message.ts
  143. +23 −1 packages/shared-chat/src/types/tool.ts
  144. +5 −0 packages/shared-chat/src/types/usage.ts
  145. +31 −2 packages/shared-chat/src/utils/chat.ts
  146. +1 −2 packages/shared-chat/src/utils/index.ts
  147. +0 −23 packages/shared-chat/src/utils/message.ts
  148. +0 −4 packages/shared-chat/tsconfig.json
  149. +16 −13 packages/shared/package.json
  150. +22 −1 packages/shared/src/utils/clean.ts
  151. +1 −1 packages/shared/src/utils/request-headers.ts
  152. +1 −1 packages/shared/src/utils/response-json.ts
  153. +0 −4 packages/shared/tsconfig.json
  154. +51 −0 packages/stream-object/package.json
  155. +144 −0 packages/stream-object/src/index.ts
  156. +13 −0 packages/stream-object/test/__snapshots__/index.test.ts.snap
  157. +204 −0 packages/stream-object/test/index.test.ts
  158. +23 −15 packages/stream-text/package.json
  159. +30 −0 packages/stream-text/src/helper.ts
  160. +371 −80 packages/stream-text/src/index.ts
  161. +190 −0 packages/stream-text/test/__snapshots__/index.test.ts.snap
  162. +80 −7 packages/stream-text/test/index.test.ts
  163. +354 −0 packages/stream-text/test/tool.test.ts
  164. +0 −4 packages/stream-text/tsconfig.json
  165. +23 −29 packages/tool/package.json
  166. +0 −10 packages/tool/src/generate-text.ts
  167. +8 −23 packages/tool/src/index.ts
  168. +0 −3 packages/tool/test/__snapshots__/index.test.ts.snap
  169. +16 −46 packages/tool/test/index.test.ts
  170. +0 −4 packages/tool/tsconfig.json
  171. +42 −0 packages/utils-chat/package.json
  172. +1 −0 packages/utils-chat/src/index.ts
  173. +41 −0 packages/utils-chat/src/message.ts
  174. +18 −18 packages/{providers → utils-stream}/package.json
  175. +4 −0 packages/utils-stream/src/_sleep.ts
  176. +3 −0 packages/utils-stream/src/index.ts
  177. +24 −0 packages/utils-stream/src/simulate-readable-stream.ts
  178. +47 −0 packages/utils-stream/src/smooth-stream.ts
  179. +18 −0 packages/utils-stream/src/to-async-iterator.ts
  180. +26 −17 packages/xsai/package.json
  181. +11 −14 packages/xsai/src/index.ts
  182. +0 −1 packages/xsai/src/providers.ts
  183. +0 −4 packages/xsai/tsconfig.json
  184. +38 −0 packages/xsfetch/package.json
  185. +46 −0 packages/xsfetch/src/index.ts
  186. +66 −0 packages/xsschema/package.json
  187. +3 −0 packages/xsschema/src/index.ts
  188. +6 −0 packages/xsschema/src/to-json-schema/arktype.ts
  189. +15 −0 packages/xsschema/src/to-json-schema/index.ts
  190. +12 −0 packages/xsschema/src/to-json-schema/valibot.ts
  191. +12 −0 packages/xsschema/src/to-json-schema/zod.ts
  192. +7 −0 packages/xsschema/src/types.ts
  193. +13 −0 packages/xsschema/src/validate.ts
  194. +78 −0 packages/xsschema/test/__snapshots__/to-json-schema.test.ts.snap
  195. +41 −0 packages/xsschema/test/to-json-schema.test.ts
  196. +10 −0 packages/xsschema/tsup.config.ts
  197. +8,504 −4,892 pnpm-lock.yaml
  198. +4 −4 pnpm-workspace.yaml
  199. +2 −12 tsconfig.json
  200. +10 −0 tsconfig.lib.json
  201. +1 −1 tsconfig.node.json
  202. +13 −0 tsup.config.ts
  203. +9 −0 vitest.config.ts
1 change: 1 addition & 0 deletions .github/workflows/check.yml
Original file line number Diff line number Diff line change
@@ -21,3 +21,4 @@ jobs:
registry-url: https://registry.npmjs.org
- run: pnpm install --frozen-lockfile
- run: pnpm -r build
- run: pnpm lint
1 change: 0 additions & 1 deletion .github/workflows/gh-pages.yml
Original file line number Diff line number Diff line change
@@ -15,6 +15,5 @@ jobs:
deploy:
uses: importantimport/.github/.github/workflows/pnpm-gh-pages-artifact.yml@main
with:
node-version: 22 # https://github.com/fuma-nama/fumadocs/issues/1021
build: pnpm -r build
path: docs/dist
5 changes: 1 addition & 4 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -6,6 +6,7 @@ pnpm-debug.log*
node_modules
dist
*.local
.eslintcache

# Editor directories and files
.idea
@@ -32,7 +33,3 @@ build
.env*.local
.vercel
next-env.d.ts

# docs:references
docs/content/docs/references/*.mdx
!docs/content/docs/references/*.model.mdx
7 changes: 1 addition & 6 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -46,10 +46,5 @@
"scss",
"pcss",
"postcss"
],

// Enable unstable_ts_config
"eslint.options": {
"flags": ["unstable_ts_config"]
}
]
}
27 changes: 9 additions & 18 deletions README.md
Original file line number Diff line number Diff line change
@@ -15,15 +15,11 @@ xsAI is a series of utils to help you use OpenAI or OpenAI-compatible API.

```ts
import { generateText } from '@xsai/generate-text'
import { createOpenAI } from '@xsai/providers'
import { env } from 'node:process'

const openai = createOpenAI({
apiKey: env.OPENAI_API_KEY
})

const { text } = await generateText({
...openai.chat('gpt-4o'),
apiKey: env.OPENAI_API_KEY!,
baseURL: 'https://openai.com/v1/',
messages: [
{
content: 'You are a helpful assistant.',
@@ -34,6 +30,7 @@ const { text } = await generateText({
role: 'user',
},
],
model: 'gpt-4o',
})

// "YES"
@@ -98,16 +95,12 @@ Read the [documentation](https://xsai.js.org/docs) to get started.
###### Streaming Text

```ts
import { createOpenAI } from '@xsai/providers'
import { streamText } from '@xsai/stream-text'
import { env } from 'node:process'

const openai = createOpenAI({
apiKey: env.OPENAI_API_KEY,
})

const { textStream } = await streamText({
...openai.chat('gpt-4o'),
apiKey: env.OPENAI_API_KEY!,
baseURL: 'https://openai.com/v1/',
messages: [
{
content: 'You are a helpful assistant.',
@@ -118,6 +111,7 @@ const { textStream } = await streamText({
role: 'user',
},
],
model: 'gpt-4o',
})

const text: string[] = []
@@ -134,15 +128,10 @@ console.log(text)

```ts
import { generateText } from '@xsai/generate-text'
import { createOpenAI } from '@xsai/providers'
import { tool } from '@xsai/tool'
import { env } from 'node:process'
import { description, object, pipe, string } from 'valibot'

const openai = createOpenAI({
apiKey: env.OPENAI_API_KEY,
})

const weather = await tool({
description: 'Get the weather in a location',
execute: ({ location }) => JSON.stringify({
@@ -159,7 +148,8 @@ const weather = await tool({
})

const { text } = await generateText({
...openai.chat('gpt-4o'),
apiKey: env.OPENAI_API_KEY!,
baseURL: 'https://openai.com/v1/',
maxSteps: 2,
messages: [
{
@@ -171,6 +161,7 @@ const { text } = await generateText({
role: 'user',
},
],
model: 'gpt-4o',
toolChoice: 'required',
tools: [weather],
})
40 changes: 35 additions & 5 deletions cspell.config.yaml
Original file line number Diff line number Diff line change
@@ -4,28 +4,58 @@ dictionaryDefinitions: []
dictionaries: []
words:
- all-minilm
- arktype
- automd
- BAAI
- bumpp
- Cerebras
- changelogithub
- codestral
- cognitivecomputations
- deepinfra
- deepseek
- elevenlabs
- eslintcache
- fishaudio
- fumadocs
- gcornut
- Groq
- Hunyuan
- importantimport
- koemotion
- Moeru
- llms
- masknet
- ministral
- mistralai
- mixtral
- moeru
- moeru-ai
- mxbai-embed-large
- nemo
- nemotron
- netease
- nomic
- nomic-embed-text
- Ollama
- pkgroll
- Novita
- ollama
- openrouter
- Plateforme
- qwen
- reranker
- siliconflow
- sonarjs
- SoVITS
- specdec
- Stepfun
- twoslash
- typeschema
- unspeech
- valibot
- Vitest
- vitest
- wizardlm
- xsai
- xsfetch
- xsschema
- youdao
- Zhipu
ignoreWords: []
import: []
33 changes: 13 additions & 20 deletions docs/app/(home)/page.tsx
Original file line number Diff line number Diff line change
@@ -1,30 +1,23 @@
import { BackgroundLines } from '@/components/ui/background-lines'
import { HoverBorderGradient } from '@/components/ui/hover-border-gradient'
import { Spotlight } from '@/components/ui/spotlight'
import Link from 'fumadocs-core/link'
import {
DocsBody,
DocsDescription,
DocsTitle,
} from 'fumadocs-ui/page'
import React from 'react'

export default () => (
<BackgroundLines className="-mt-14 h-screen w-full rounded-md flex items-center justify-center relative overflow-hidden">
<Spotlight fill="white" />
<div className="flex flex-col items-center gap-8 p-4 max-w-7xl mx-auto relative z-10 w-full pt-20 md:pt-0">
<h1 className="text-4xl md:text-7xl font-bold text-center bg-clip-text text-transparent bg-gradient-to-b from-fd-foreground to-fd-muted-foreground bg-opacity-50">
<div className="flex w-full h-[80vh] justify-center">
<div className="flex flex-col my-auto p-8">
<DocsTitle>
<small>extra-small</small>
{' '}
<span>AI SDK</span>
<br />
<small>for Browser, Node.js, Deno, Bun or Edge Runtime.</small>
</h1>
{/* <p className="mt-4 font-normal text-base text-muted-foreground max-w-lg text-center mx-auto">
lorem ipsum
</p> */}
<HoverBorderGradient
as="button"
className="dark:bg-black bg-white text-black dark:text-white flex items-center space-x-2"
containerClassName="rounded-full"
>
</DocsTitle>
<DocsDescription className="mb-2">for Browser, Node.js, Deno, Bun or Edge Runtime.</DocsDescription>
<DocsBody>
<Link href="/docs">Get Started</Link>
</HoverBorderGradient>
</DocsBody>
</div>
</BackgroundLines>
</div>
)
36 changes: 18 additions & 18 deletions docs/app/docs/[[...slug]]/page.tsx
Original file line number Diff line number Diff line change
@@ -12,6 +12,24 @@ import {
} from 'fumadocs-ui/page'
import { notFound } from 'next/navigation'

export const generateStaticParams = async () =>
source.generateParams()

export const generateMetadata = async (props: {
params: Promise<{ slug?: string[] }>
}) => {
const params = await props.params
const page = source.getPage(params.slug)
if (!page)
notFound()

return metadataImage.withImage(page.slugs, {
description: page.data.description,
metadataBase: new URL('https://xsai.js.org'),
title: page.data.title,
})
}

export default async (props: {
params: Promise<{ slug?: string[] }>
}) => {
@@ -54,21 +72,3 @@ export default async (props: {
</DocsPage>
)
}

export const generateStaticParams = async () =>
source.generateParams()

export const generateMetadata = async (props: {
params: Promise<{ slug?: string[] }>
}) => {
const params = await props.params
const page = source.getPage(params.slug)
if (!page)
notFound()

return metadataImage.withImage(page.slugs, {
description: page.data.description,
metadataBase: new URL('https://xsai.js.org'),
title: page.data.title,
})
}
109 changes: 105 additions & 4 deletions docs/app/global.css
Original file line number Diff line number Diff line change
@@ -1,4 +1,105 @@
@tailwind base;
@tailwind components;
@tailwind utilities;

@import "tailwindcss";

@plugin "tailwindcss-animate";

@custom-variant dark (&:is(.dark *));
@import 'fumadocs-ui/css/black.css';
@import 'fumadocs-ui/css/preset.css';

/* relative to the CSS file, make sure it's correct for your app */
@source '../node_modules/fumadocs-ui/dist/**/*.js';

:root {
--background: hsl(0 0% 100%);
--foreground: hsl(0 0% 3.9%);
--card: hsl(0 0% 100%);
--card-foreground: hsl(0 0% 3.9%);
--popover: hsl(0 0% 100%);
--popover-foreground: hsl(0 0% 3.9%);
--primary: hsl(0 0% 9%);
--primary-foreground: hsl(0 0% 98%);
--secondary: hsl(0 0% 96.1%);
--secondary-foreground: hsl(0 0% 9%);
--muted: hsl(0 0% 96.1%);
--muted-foreground: hsl(0 0% 45.1%);
--accent: hsl(0 0% 96.1%);
--accent-foreground: hsl(0 0% 9%);
--destructive: hsl(0 84.2% 60.2%);
--destructive-foreground: hsl(0 0% 98%);
--border: hsl(0 0% 89.8%);
--input: hsl(0 0% 89.8%);
--ring: hsl(0 0% 3.9%);
--chart-1: hsl(12 76% 61%);
--chart-2: hsl(173 58% 39%);
--chart-3: hsl(197 37% 24%);
--chart-4: hsl(43 74% 66%);
--chart-5: hsl(27 87% 67%);
--radius: 0.6rem;
}

.dark {
--background: hsl(0 0% 3.9%);
--foreground: hsl(0 0% 98%);
--card: hsl(0 0% 3.9%);
--card-foreground: hsl(0 0% 98%);
--popover: hsl(0 0% 3.9%);
--popover-foreground: hsl(0 0% 98%);
--primary: hsl(0 0% 98%);
--primary-foreground: hsl(0 0% 9%);
--secondary: hsl(0 0% 14.9%);
--secondary-foreground: hsl(0 0% 98%);
--muted: hsl(0 0% 14.9%);
--muted-foreground: hsl(0 0% 63.9%);
--accent: hsl(0 0% 14.9%);
--accent-foreground: hsl(0 0% 98%);
--destructive: hsl(0 62.8% 30.6%);
--destructive-foreground: hsl(0 0% 98%);
--border: hsl(0 0% 14.9%);
--input: hsl(0 0% 14.9%);
--ring: hsl(0 0% 83.1%);
--chart-1: hsl(220 70% 50%);
--chart-2: hsl(160 60% 45%);
--chart-3: hsl(30 80% 55%);
--chart-4: hsl(280 65% 60%);
--chart-5: hsl(340 75% 55%);
}

@theme inline {
--color-background: var(--background);
--color-foreground: var(--foreground);
--color-card: var(--card);
--color-card-foreground: var(--card-foreground);
--color-popover: var(--popover);
--color-popover-foreground: var(--popover-foreground);
--color-primary: var(--primary);
--color-primary-foreground: var(--primary-foreground);
--color-secondary: var(--secondary);
--color-secondary-foreground: var(--secondary-foreground);
--color-muted: var(--muted);
--color-muted-foreground: var(--muted-foreground);
--color-accent: var(--accent);
--color-accent-foreground: var(--accent-foreground);
--color-destructive: var(--destructive);
--color-destructive-foreground: var(--destructive-foreground);
--color-border: var(--border);
--color-input: var(--input);
--color-ring: var(--ring);
--color-chart-1: var(--chart-1);
--color-chart-2: var(--chart-2);
--color-chart-3: var(--chart-3);
--color-chart-4: var(--chart-4);
--color-chart-5: var(--chart-5);
--radius-sm: calc(var(--radius) - 4px);
--radius-md: calc(var(--radius) - 2px);
--radius-lg: var(--radius);
--radius-xl: calc(var(--radius) + 4px);
}

@layer base {
* {
@apply border-border outline-ring/50;
}
body {
@apply bg-background text-foreground;
}
}
Loading