@lastbrain/module-ai 0.1.19 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  import { NextRequest, NextResponse } from "next/server";
2
- export declare function GET(request: NextRequest): Promise<NextResponse<{
2
+ export declare function GET(_request: NextRequest): Promise<NextResponse<{
3
3
  users: {
4
4
  userId: string;
5
5
  email: string;
@@ -1 +1 @@
1
- {"version":3,"file":"user-token.d.ts","sourceRoot":"","sources":["../../../src/api/admin/user-token.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAKxD,wBAAsB,GAAG,CAAC,OAAO,EAAE,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;IA2H7C;AAGD,wBAAsB,IAAI,CAAC,OAAO,EAAE,WAAW;;;;;;IAiD9C"}
1
+ {"version":3,"file":"user-token.d.ts","sourceRoot":"","sources":["../../../src/api/admin/user-token.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAKxD,wBAAsB,GAAG,CAAC,QAAQ,EAAE,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;IA2H9C;AAGD,wBAAsB,IAAI,CAAC,OAAO,EAAE,WAAW;;;;;;IA+C9C"}
@@ -2,7 +2,7 @@ import { NextResponse } from "next/server";
2
2
  import { getSupabaseServiceClient } from "@lastbrain/core/server";
3
3
  import { addTokens } from "../../server";
4
4
  // GET /api/ai/admin/user-token - Liste tous les utilisateurs avec leur balance et transactions
5
- export async function GET(request) {
5
+ export async function GET(_request) {
6
6
  try {
7
7
  const supabase = getSupabaseServiceClient();
8
8
  // L'authentification et les droits superadmin sont déjà vérifiés par le middleware
@@ -101,7 +101,6 @@ export async function GET(request) {
101
101
  // POST /api/ai/admin/user-token - Ajouter/retirer des tokens à un utilisateur
102
102
  export async function POST(request) {
103
103
  try {
104
- const supabase = getSupabaseServiceClient();
105
104
  // L'authentification et les droits superadmin sont déjà vérifiés par le middleware
106
105
  const body = await request.json();
107
106
  const { userId, amount, type, reason } = body;
@@ -1 +1 @@
1
- {"version":3,"file":"generate-image.d.ts","sourceRoot":"","sources":["../../../src/api/auth/generate-image.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AA0CxD,wBAAsB,IAAI,CAAC,OAAO,EAAE,WAAW;;;;;;;;IAyL9C"}
1
+ {"version":3,"file":"generate-image.d.ts","sourceRoot":"","sources":["../../../src/api/auth/generate-image.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAiDxD,wBAAsB,IAAI,CAAC,OAAO,EAAE,WAAW;;;;;;;;IA0L9C"}
@@ -2,9 +2,15 @@ import { NextResponse } from "next/server";
2
2
  import { getSupabaseServerClient } from "@lastbrain/core/server";
3
3
  import { deductTokens, getTokenBalance } from "../../server";
4
4
  import OpenAI from "openai";
5
- const openai = new OpenAI({
6
- apiKey: process.env.OPENAI_API_KEY,
7
- });
5
+ let openai = null;
6
+ function getOpenAIClient() {
7
+ if (!openai) {
8
+ openai = new OpenAI({
9
+ apiKey: process.env.OPENAI_API_KEY,
10
+ });
11
+ }
12
+ return openai;
13
+ }
8
14
  // Coûts des images selon le modèle et la taille
9
15
  const IMAGE_COSTS = {
10
16
  "dall-e-2-256x256": 0.016,
@@ -80,7 +86,8 @@ export async function POST(request) {
80
86
  };
81
87
  }
82
88
  // Appeler OpenAI
83
- const response = await openai.images.generate(imageParams);
89
+ const openaiClient = getOpenAIClient();
90
+ const response = await openaiClient.images.generate(imageParams);
84
91
  const imageUrl = response.data?.[0]?.url;
85
92
  let supabaseImageUrl = null;
86
93
  if (imageUrl && uploadPath) {
@@ -1 +1 @@
1
- {"version":3,"file":"generate-text.d.ts","sourceRoot":"","sources":["../../../src/api/auth/generate-text.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAiBxD,wBAAsB,IAAI,CAAC,OAAO,EAAE,WAAW;;;;;;;;IAoI9C"}
1
+ {"version":3,"file":"generate-text.d.ts","sourceRoot":"","sources":["../../../src/api/auth/generate-text.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAwBxD,wBAAsB,IAAI,CAAC,OAAO,EAAE,WAAW;;;;;;;;IAqI9C"}
@@ -2,9 +2,15 @@ import { NextResponse } from "next/server";
2
2
  import { getSupabaseServerClient } from "@lastbrain/core/server";
3
3
  import { deductTokens, getTokenBalance } from "../../server";
4
4
  import OpenAI from "openai";
5
- const openai = new OpenAI({
6
- apiKey: process.env.OPENAI_API_KEY,
7
- });
5
+ let openai = null;
6
+ function getOpenAIClient() {
7
+ if (!openai) {
8
+ openai = new OpenAI({
9
+ apiKey: process.env.OPENAI_API_KEY,
10
+ });
11
+ }
12
+ return openai;
13
+ }
8
14
  export async function POST(request) {
9
15
  try {
10
16
  const supabase = await getSupabaseServerClient();
@@ -42,7 +48,8 @@ export async function POST(request) {
42
48
  content: prompt,
43
49
  });
44
50
  // Appeler OpenAI
45
- const completion = await openai.chat.completions.create({
51
+ const openaiClient = getOpenAIClient();
52
+ const completion = await openaiClient.chat.completions.create({
46
53
  model,
47
54
  messages,
48
55
  temperature,
package/dist/index.d.ts CHANGED
@@ -1,12 +1,12 @@
1
- export { TextareaGenerative } from "./web/components/TextareaGenerative.js";
2
- export { ImageGenerative } from "./web/components/ImageGenerative.js";
3
- export { TokenPage } from "./web/auth/TokenPage.js";
4
- export { UserTokenPage } from "./web/admin/UserTokenPage.js";
5
- export { AdminTokenPacksPage } from "./web/admin/AdminTokenPacksPage.js";
6
- export { UserTokenTab } from "./components/admin/UserTokenTab.js";
7
- export { Doc } from "./components/Doc.js";
8
- export { Doc as AiModuleDoc } from "./components/Doc.js";
9
- export type { GenerativeResponse, TextareaGenerativeProps, } from "./web/components/TextareaGenerative.js";
10
- export type { GenerativeImageResponse, ImageGenerativeProps, } from "./web/components/ImageGenerative.js";
11
- export { default as buildConfig } from "./ai.build.config.js";
1
+ export { TextareaGenerative } from "./web/components/TextareaGenerative";
2
+ export { ImageGenerative } from "./web/components/ImageGenerative";
3
+ export { TokenPage } from "./web/auth/TokenPage";
4
+ export { UserTokenPage } from "./web/admin/UserTokenPage";
5
+ export { AdminTokenPacksPage } from "./web/admin/AdminTokenPacksPage";
6
+ export { UserTokenTab } from "./components/admin/UserTokenTab";
7
+ export { Doc } from "./components/Doc";
8
+ export { Doc as AiModuleDoc } from "./components/Doc";
9
+ export type { GenerativeResponse, TextareaGenerativeProps, } from "./web/components/TextareaGenerative";
10
+ export type { GenerativeImageResponse, ImageGenerativeProps, } from "./web/components/ImageGenerative";
11
+ export { default as buildConfig } from "./ai.build.config";
12
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAGtE,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAGpD,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAGzE,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAGlE,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAC1C,OAAO,EAAE,GAAG,IAAI,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGzD,YAAY,EACV,kBAAkB,EAClB,uBAAuB,GACxB,MAAM,wCAAwC,CAAC;AAEhD,YAAY,EACV,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,qCAAqC,CAAC;AAG7C,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAGnE,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAGjD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAGtE,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAG/D,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAE,GAAG,IAAI,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAGtD,YAAY,EACV,kBAAkB,EAClB,uBAAuB,GACxB,MAAM,qCAAqC,CAAC;AAE7C,YAAY,EACV,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,kCAAkC,CAAC;AAG1C,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
package/dist/index.js CHANGED
@@ -1,15 +1,15 @@
1
1
  // Client Components - Composants réutilisables
2
- export { TextareaGenerative } from "./web/components/TextareaGenerative.js";
3
- export { ImageGenerative } from "./web/components/ImageGenerative.js";
2
+ export { TextareaGenerative } from "./web/components/TextareaGenerative";
3
+ export { ImageGenerative } from "./web/components/ImageGenerative";
4
4
  // Pages Auth
5
- export { TokenPage } from "./web/auth/TokenPage.js";
5
+ export { TokenPage } from "./web/auth/TokenPage";
6
6
  // Pages Admin
7
- export { UserTokenPage } from "./web/admin/UserTokenPage.js";
8
- export { AdminTokenPacksPage } from "./web/admin/AdminTokenPacksPage.js";
7
+ export { UserTokenPage } from "./web/admin/UserTokenPage";
8
+ export { AdminTokenPacksPage } from "./web/admin/AdminTokenPacksPage";
9
9
  // Admin Components - User Tabs
10
- export { UserTokenTab } from "./components/admin/UserTokenTab.js";
10
+ export { UserTokenTab } from "./components/admin/UserTokenTab";
11
11
  // Documentation
12
- export { Doc } from "./components/Doc.js";
13
- export { Doc as AiModuleDoc } from "./components/Doc.js";
12
+ export { Doc } from "./components/Doc";
13
+ export { Doc as AiModuleDoc } from "./components/Doc";
14
14
  // Configuration de build
15
- export { default as buildConfig } from "./ai.build.config.js";
15
+ export { default as buildConfig } from "./ai.build.config";
@@ -1 +1 @@
1
- {"version":3,"file":"AdminTokenPacksPage.d.ts","sourceRoot":"","sources":["../../../src/web/admin/AdminTokenPacksPage.tsx"],"names":[],"mappings":"AA0CA,wBAAgB,mBAAmB,4CAyTlC"}
1
+ {"version":3,"file":"AdminTokenPacksPage.d.ts","sourceRoot":"","sources":["../../../src/web/admin/AdminTokenPacksPage.tsx"],"names":[],"mappings":"AAyCA,wBAAgB,mBAAmB,4CAyTlC"}
@@ -1 +1 @@
1
- {"version":3,"file":"TextareaGenerative.d.ts","sourceRoot":"","sources":["../../../src/web/components/TextareaGenerative.tsx"],"names":[],"mappings":"AAqBA,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,uBAAuB;IACtC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAClE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC;AAED,wBAAgB,kBAAkB,CAAC,EACjC,aAAkB,EAClB,KAAqB,EACrB,WAA6D,EAC7D,YAAiB,EACjB,QAAQ,EACR,OAAO,EACP,SAAS,EACT,QAAgB,EAChB,OAAW,EACX,OAAY,EACZ,WAAqC,EACrC,gBAAuB,EACvB,KAAK,EACL,WAAW,EACX,gBAAwB,EACxB,sBAA8B,GAC/B,EAAE,uBAAuB,2CAqRzB"}
1
+ {"version":3,"file":"TextareaGenerative.d.ts","sourceRoot":"","sources":["../../../src/web/components/TextareaGenerative.tsx"],"names":[],"mappings":"AAoBA,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,uBAAuB;IACtC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAClE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC;AAED,wBAAgB,kBAAkB,CAAC,EACjC,aAAkB,EAClB,KAAqB,EACrB,WAA6D,EAC7D,YAAiB,EACjB,QAAQ,EACR,OAAO,EACP,SAAS,EACT,QAAgB,EAChB,OAAW,EACX,OAAY,EACZ,WAAqC,EACrC,gBAAuB,EACvB,KAAK,EACL,WAAW,EACX,gBAAwB,EACxB,sBAA8B,GAC/B,EAAE,uBAAuB,2CAqRzB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lastbrain/module-ai",
3
- "version": "0.1.19",
3
+ "version": "1.0.1",
4
4
  "description": "Module de génération IA (texte et images) avec gestion de tokens pour LastBrain",
5
5
  "private": false,
6
6
  "release": {
@@ -39,10 +39,10 @@
39
39
  "@lastbrain/core": "^0.1.0",
40
40
  "@lastbrain/ui": "^0.1.0",
41
41
  "lucide-react": "^0.554.0",
42
- "next": "^16.0.4",
42
+ "next": "^16.0.7",
43
43
  "openai": "^6.9.1",
44
- "react": "^19.0.0",
45
- "react-dom": "^19.0.0",
44
+ "react": "^19.2.1",
45
+ "react-dom": "^19.2.1",
46
46
  "zod": "^3.23.8"
47
47
  },
48
48
  "peerDependencies": {