@boostecom/provider 0.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.
Files changed (70) hide show
  1. package/README.md +90 -0
  2. package/dist/index.cjs +2522 -0
  3. package/dist/index.cjs.map +1 -0
  4. package/dist/index.d.cts +848 -0
  5. package/dist/index.d.ts +848 -0
  6. package/dist/index.js +2484 -0
  7. package/dist/index.js.map +1 -0
  8. package/docs/content/README.md +337 -0
  9. package/docs/content/agent-teams.mdx +324 -0
  10. package/docs/content/api.mdx +757 -0
  11. package/docs/content/best-practices.mdx +624 -0
  12. package/docs/content/examples.mdx +675 -0
  13. package/docs/content/guide.mdx +516 -0
  14. package/docs/content/index.mdx +99 -0
  15. package/docs/content/installation.mdx +246 -0
  16. package/docs/content/skills.mdx +548 -0
  17. package/docs/content/troubleshooting.mdx +588 -0
  18. package/docs/examples/README.md +499 -0
  19. package/docs/examples/abort-signal.ts +125 -0
  20. package/docs/examples/agent-teams.ts +122 -0
  21. package/docs/examples/basic-usage.ts +73 -0
  22. package/docs/examples/check-cli.ts +51 -0
  23. package/docs/examples/conversation-history.ts +69 -0
  24. package/docs/examples/custom-config.ts +90 -0
  25. package/docs/examples/generate-object-constraints.ts +209 -0
  26. package/docs/examples/generate-object.ts +211 -0
  27. package/docs/examples/hooks-callbacks.ts +63 -0
  28. package/docs/examples/images.ts +76 -0
  29. package/docs/examples/integration-test.ts +241 -0
  30. package/docs/examples/limitations.ts +150 -0
  31. package/docs/examples/logging-custom-logger.ts +99 -0
  32. package/docs/examples/logging-default.ts +55 -0
  33. package/docs/examples/logging-disabled.ts +74 -0
  34. package/docs/examples/logging-verbose.ts +64 -0
  35. package/docs/examples/long-running-tasks.ts +179 -0
  36. package/docs/examples/message-injection.ts +210 -0
  37. package/docs/examples/mid-stream-injection.ts +126 -0
  38. package/docs/examples/run-all-examples.sh +48 -0
  39. package/docs/examples/sdk-tools-callbacks.ts +49 -0
  40. package/docs/examples/skills-discovery.ts +144 -0
  41. package/docs/examples/skills-management.ts +140 -0
  42. package/docs/examples/stream-object.ts +80 -0
  43. package/docs/examples/streaming.ts +52 -0
  44. package/docs/examples/structured-output-repro.ts +227 -0
  45. package/docs/examples/tool-management.ts +215 -0
  46. package/docs/examples/tool-streaming.ts +132 -0
  47. package/docs/examples/zod4-compatibility-test.ts +290 -0
  48. package/docs/src/claude-code-language-model.test.ts +3883 -0
  49. package/docs/src/claude-code-language-model.ts +2586 -0
  50. package/docs/src/claude-code-provider.test.ts +97 -0
  51. package/docs/src/claude-code-provider.ts +179 -0
  52. package/docs/src/convert-to-claude-code-messages.images.test.ts +104 -0
  53. package/docs/src/convert-to-claude-code-messages.test.ts +193 -0
  54. package/docs/src/convert-to-claude-code-messages.ts +419 -0
  55. package/docs/src/errors.test.ts +213 -0
  56. package/docs/src/errors.ts +216 -0
  57. package/docs/src/index.test.ts +49 -0
  58. package/docs/src/index.ts +98 -0
  59. package/docs/src/logger.integration.test.ts +164 -0
  60. package/docs/src/logger.test.ts +184 -0
  61. package/docs/src/logger.ts +65 -0
  62. package/docs/src/map-claude-code-finish-reason.test.ts +120 -0
  63. package/docs/src/map-claude-code-finish-reason.ts +60 -0
  64. package/docs/src/mcp-helpers.test.ts +71 -0
  65. package/docs/src/mcp-helpers.ts +123 -0
  66. package/docs/src/message-injection.test.ts +460 -0
  67. package/docs/src/types.ts +447 -0
  68. package/docs/src/validation.test.ts +558 -0
  69. package/docs/src/validation.ts +360 -0
  70. package/package.json +124 -0
@@ -0,0 +1,757 @@
1
+ ---
2
+ title: API Reference
3
+ description: Documentation complète de l'API du provider Claude Code
4
+ ---
5
+
6
+ # API Reference
7
+
8
+ Cette page documente toutes les options de configuration disponibles pour le provider Claude Code.
9
+
10
+ ## `claudeCode(model, settings?)`
11
+
12
+ Fonction principale pour créer une instance du modèle Claude Code.
13
+
14
+ ### Paramètres
15
+
16
+ #### `model` (required)
17
+
18
+ Type: `string`
19
+
20
+ Le modèle Claude à utiliser. Peut être un alias court ou un identifiant complet.
21
+
22
+ **Aliases courts:**
23
+ - `'opus'` - Claude Opus (le plus capable)
24
+ - `'sonnet'` - Claude Sonnet (équilibré)
25
+ - `'haiku'` - Claude Haiku (rapide et économique)
26
+
27
+ **Identifiants complets:**
28
+ - `'claude-opus-4-5'`
29
+ - `'claude-sonnet-4-5-20250514'`
30
+ - `'claude-haiku-4-5-20250514'`
31
+
32
+ ```typescript
33
+ const model = claudeCode('sonnet');
34
+ // ou
35
+ const model = claudeCode('claude-sonnet-4-5-20250514');
36
+ ```
37
+
38
+ #### `settings` (optional)
39
+
40
+ Type: `ClaudeCodeSettings`
41
+
42
+ Configuration avancée du comportement du provider.
43
+
44
+ ## ClaudeCodeSettings
45
+
46
+ Interface complète de configuration.
47
+
48
+ ### Options de base
49
+
50
+ #### `systemPrompt`
51
+
52
+ Type: `string | { type: 'preset', preset: 'claude_code', append?: string }`
53
+
54
+ Prompt système personnalisé ou preset Claude Code.
55
+
56
+ ```typescript
57
+ // Prompt personnalisé
58
+ const model = claudeCode('sonnet', {
59
+ systemPrompt: 'Tu es un expert en TypeScript.',
60
+ });
61
+
62
+ // Preset avec ajout
63
+ const model = claudeCode('sonnet', {
64
+ systemPrompt: {
65
+ type: 'preset',
66
+ preset: 'claude_code',
67
+ append: 'Réponds toujours en français.',
68
+ },
69
+ });
70
+ ```
71
+
72
+ #### `maxTurns`
73
+
74
+ Type: `number`
75
+ Default: Non défini
76
+
77
+ Nombre maximum de tours de conversation.
78
+
79
+ ```typescript
80
+ const model = claudeCode('sonnet', {
81
+ maxTurns: 10, // Maximum 10 échanges
82
+ });
83
+ ```
84
+
85
+ #### `maxThinkingTokens`
86
+
87
+ Type: `number`
88
+ Default: Non défini
89
+
90
+ Tokens maximum pour la phase de réflexion du modèle.
91
+
92
+ ```typescript
93
+ const model = claudeCode('opus', {
94
+ maxThinkingTokens: 2000,
95
+ });
96
+ ```
97
+
98
+ #### `cwd`
99
+
100
+ Type: `string`
101
+ Default: `process.cwd()`
102
+
103
+ Répertoire de travail pour les opérations du CLI.
104
+
105
+ ```typescript
106
+ const model = claudeCode('sonnet', {
107
+ cwd: '/chemin/vers/projet',
108
+ });
109
+ ```
110
+
111
+ ### Gestion des outils
112
+
113
+ #### `allowedTools`
114
+
115
+ Type: `string[]`
116
+ Default: Tous les outils autorisés
117
+
118
+ Liste des outils que Claude peut utiliser.
119
+
120
+ **Outils intégrés:**
121
+ - `'Read'` - Lire des fichiers
122
+ - `'Write'` - Créer/écrire des fichiers
123
+ - `'Edit'` - Modifier des fichiers
124
+ - `'LS'` - Lister les fichiers
125
+ - `'Bash'` - Exécuter des commandes shell
126
+ - `'Task'` - Créer des sous-tâches
127
+ - `'Skill'` - Utiliser des compétences personnalisées
128
+
129
+ **Patterns avec wildcards:**
130
+ - `'Bash(git:*)'` - Seulement commandes git
131
+ - `'Bash(git log:*)'` - Seulement git log
132
+
133
+ ```typescript
134
+ const model = claudeCode('sonnet', {
135
+ allowedTools: ['Read', 'LS', 'Bash(git:*)'],
136
+ });
137
+ ```
138
+
139
+ #### `disallowedTools`
140
+
141
+ Type: `string[]`
142
+ Default: Aucun
143
+
144
+ Outils explicitement interdits.
145
+
146
+ ```typescript
147
+ const model = claudeCode('sonnet', {
148
+ disallowedTools: [
149
+ 'Write',
150
+ 'Bash(rm:*)', // Interdire rm
151
+ 'Bash(sudo:*)', // Interdire sudo
152
+ ],
153
+ });
154
+ ```
155
+
156
+ #### `canUseTool`
157
+
158
+ Type: `(tool: ToolInfo) => Promise<boolean | { allowed: boolean, input?: any }>`
159
+ Default: Non défini
160
+
161
+ Callback invoqué avant chaque utilisation d'outil. Permet un contrôle dynamique.
162
+
163
+ ```typescript
164
+ const model = claudeCode('sonnet', {
165
+ streamingInput: 'always', // Requis pour canUseTool
166
+ canUseTool: async (tool) => {
167
+ console.log(`🔧 Demande d'utilisation: ${tool.name}`);
168
+
169
+ // Bloquer certains outils
170
+ if (tool.name === 'Bash' && tool.input.command.includes('rm')) {
171
+ console.log('❌ Commande rm refusée');
172
+ return false;
173
+ }
174
+
175
+ // Autoriser
176
+ return true;
177
+
178
+ // Ou modifier l'input
179
+ // return {
180
+ // allowed: true,
181
+ // input: { ...tool.input, modified: true }
182
+ // };
183
+ },
184
+ });
185
+ ```
186
+
187
+ ### Hooks et callbacks
188
+
189
+ #### `hooks`
190
+
191
+ Type: `Record<string, Array<{ matcher?: string, hooks: Array<(...args: unknown[]) => Promise<unknown>> }>>`
192
+ Default: Non défini
193
+
194
+ Hooks de lifecycle pour intercepter les événements.
195
+
196
+ ```typescript
197
+ const model = claudeCode('sonnet', {
198
+ hooks: {
199
+ PreToolUse: [{
200
+ matcher: 'Bash',
201
+ hooks: [
202
+ async (toolName, input) => {
203
+ console.log(`⚡ Avant exécution de ${toolName}`);
204
+ console.log('Input:', input);
205
+ },
206
+ ],
207
+ }],
208
+ PostToolUse: [{
209
+ hooks: [
210
+ async (toolName, input, result) => {
211
+ console.log(`✅ Après exécution de ${toolName}`);
212
+ console.log('Résultat:', result);
213
+ },
214
+ ],
215
+ }],
216
+ },
217
+ });
218
+ ```
219
+
220
+ #### `onStreamStart`
221
+
222
+ Type: `(injector: MessageInjector) => void`
223
+ Default: Non défini
224
+
225
+ Callback invoqué au démarrage du streaming. Reçoit un `MessageInjector` pour l'injection de messages mid-session.
226
+
227
+ ```typescript
228
+ let injector: MessageInjector | null = null;
229
+
230
+ const model = claudeCode('sonnet', {
231
+ streamingInput: 'always',
232
+ onStreamStart: (inj) => {
233
+ injector = inj;
234
+ console.log('📡 Streaming démarré');
235
+ },
236
+ });
237
+
238
+ // Plus tard, injecter un message
239
+ injector?.inject('STOP! Change de direction.');
240
+ ```
241
+
242
+ #### `onQueryCreated`
243
+
244
+ Type: `(query: Query) => void`
245
+ Default: Non défini
246
+
247
+ Callback invoqué à la création de la Query. Utile pour stocker la référence.
248
+
249
+ ```typescript
250
+ const queries = new Map();
251
+
252
+ const model = claudeCode('sonnet', {
253
+ onQueryCreated: (query) => {
254
+ queries.set('session-123', query);
255
+ },
256
+ });
257
+ ```
258
+
259
+ ### Permissions et sécurité
260
+
261
+ #### `permissionMode`
262
+
263
+ Type: `'default' | 'acceptEdits' | 'bypassPermissions' | 'plan' | 'delegate' | 'dontAsk'`
264
+ Default: `'default'`
265
+
266
+ Mode de permission pour l'exécution des outils.
267
+
268
+ - `'default'` - Demande permission pour actions sensibles
269
+ - `'acceptEdits'` - Accepte automatiquement les modifications
270
+ - `'bypassPermissions'` - Contourne toutes les permissions (dangereux)
271
+ - `'plan'` - Mode planification sans exécution
272
+ - `'delegate'` - Délègue les décisions
273
+ - `'dontAsk'` - N'affiche pas de prompts
274
+
275
+ ```typescript
276
+ const model = claudeCode('sonnet', {
277
+ permissionMode: 'acceptEdits',
278
+ });
279
+ ```
280
+
281
+ #### `allowDangerouslySkipPermissions`
282
+
283
+ Type: `boolean`
284
+ Default: `false`
285
+
286
+ Autoriser le contournement des permissions (utilisé avec `permissionMode: 'bypassPermissions'`).
287
+
288
+ <Note type="danger">
289
+ **Danger** : N'utilisez ceci que dans des environnements contrôlés et isolés.
290
+ </Note>
291
+
292
+ ```typescript
293
+ const model = claudeCode('sonnet', {
294
+ permissionMode: 'bypassPermissions',
295
+ allowDangerouslySkipPermissions: true, // Requis
296
+ });
297
+ ```
298
+
299
+ ### Sessions et état
300
+
301
+ #### `sessionId`
302
+
303
+ Type: `string`
304
+ Default: Généré automatiquement
305
+
306
+ Identifiant de session personnalisé pour tracking et corrélation.
307
+
308
+ ```typescript
309
+ const model = claudeCode('sonnet', {
310
+ sessionId: 'user-123-conversation-456',
311
+ });
312
+ ```
313
+
314
+ #### `resume`
315
+
316
+ Type: `string`
317
+ Default: Non défini
318
+
319
+ Reprendre une session existante par son ID.
320
+
321
+ ```typescript
322
+ const model = claudeCode('sonnet', {
323
+ resume: 'session-abc-123',
324
+ });
325
+ ```
326
+
327
+ #### `resumeSessionAt`
328
+
329
+ Type: `string` (UUID)
330
+ Default: Non défini
331
+
332
+ Reprendre à un message spécifique dans une session.
333
+
334
+ ```typescript
335
+ const model = claudeCode('sonnet', {
336
+ resume: 'session-abc-123',
337
+ resumeSessionAt: 'msg-uuid-456',
338
+ });
339
+ ```
340
+
341
+ #### `persistSession`
342
+
343
+ Type: `boolean`
344
+ Default: `true`
345
+
346
+ Persister la session sur disque dans `~/.claude/projects/`.
347
+
348
+ ```typescript
349
+ const model = claudeCode('sonnet', {
350
+ persistSession: false, // Session éphémère
351
+ });
352
+ ```
353
+
354
+ #### `forkSession`
355
+
356
+ Type: `boolean`
357
+ Default: `false`
358
+
359
+ Lors d'une reprise, créer une nouvelle session au lieu de continuer l'originale.
360
+
361
+ ```typescript
362
+ const model = claudeCode('sonnet', {
363
+ resume: 'session-abc',
364
+ forkSession: true, // Créer une branche
365
+ });
366
+ ```
367
+
368
+ ### Skills et settings
369
+
370
+ #### `settingSources`
371
+
372
+ Type: `Array<'user' | 'project' | 'local'>`
373
+ Default: Non défini
374
+
375
+ Sources de settings à charger (CLAUDE.md, settings.json, etc.).
376
+
377
+ **Requis pour Skills.**
378
+
379
+ ```typescript
380
+ const model = claudeCode('sonnet', {
381
+ settingSources: ['user', 'project'],
382
+ allowedTools: ['Skill', 'Read', 'Write'], // 'Skill' requis
383
+ });
384
+ ```
385
+
386
+ **Sources:**
387
+ - `'user'` - `~/.claude/` (settings globaux)
388
+ - `'project'` - `./.claude/` (settings du projet)
389
+ - `'local'` - Settings locaux
390
+
391
+ ### Streaming et input
392
+
393
+ #### `streamingInput`
394
+
395
+ Type: `'auto' | 'always' | 'off'`
396
+ Default: `'auto'`
397
+
398
+ Contrôle du mode streaming input.
399
+
400
+ - `'auto'` - Active si `canUseTool` est défini
401
+ - `'always'` - Toujours activer (requis pour images et injection)
402
+ - `'off'` - Désactiver
403
+
404
+ ```typescript
405
+ const model = claudeCode('sonnet', {
406
+ streamingInput: 'always',
407
+ });
408
+ ```
409
+
410
+ ### Logging et debugging
411
+
412
+ #### `verbose`
413
+
414
+ Type: `boolean`
415
+ Default: `false`
416
+
417
+ Activer les logs détaillés (debug et info).
418
+
419
+ ```typescript
420
+ const model = claudeCode('sonnet', {
421
+ verbose: true,
422
+ });
423
+ ```
424
+
425
+ #### `logger`
426
+
427
+ Type: `Logger | false`
428
+ Default: `console`
429
+
430
+ Logger personnalisé ou désactivation complète des logs.
431
+
432
+ ```typescript
433
+ import type { Logger } from '@boostecom/provider';
434
+
435
+ // Logger personnalisé
436
+ const customLogger: Logger = {
437
+ debug: (msg) => myLogger.debug(msg),
438
+ info: (msg) => myLogger.info(msg),
439
+ warn: (msg) => myLogger.warn(msg),
440
+ error: (msg) => myLogger.error(msg),
441
+ };
442
+
443
+ const model = claudeCode('sonnet', {
444
+ verbose: true,
445
+ logger: customLogger,
446
+ });
447
+
448
+ // Désactiver les logs
449
+ const silentModel = claudeCode('sonnet', {
450
+ logger: false,
451
+ });
452
+ ```
453
+
454
+ #### `debug`
455
+
456
+ Type: `boolean`
457
+ Default: `false`
458
+
459
+ Activer les logs de debug programmatiques du SDK.
460
+
461
+ ```typescript
462
+ const model = claudeCode('sonnet', {
463
+ debug: true,
464
+ });
465
+ ```
466
+
467
+ #### `debugFile`
468
+
469
+ Type: `string`
470
+ Default: Non défini
471
+
472
+ Fichier pour les logs de debug du SDK.
473
+
474
+ ```typescript
475
+ const model = claudeCode('sonnet', {
476
+ debug: true,
477
+ debugFile: '/tmp/claude-debug.log',
478
+ });
479
+ ```
480
+
481
+ ### Fonctionnalités avancées
482
+
483
+ #### `betas`
484
+
485
+ Type: `SdkBeta[]`
486
+ Default: Non défini
487
+
488
+ Activer des fonctionnalités beta du SDK.
489
+
490
+ ```typescript
491
+ const model = claudeCode('opus', {
492
+ betas: ['context-1m-2025-08-07'],
493
+ });
494
+ ```
495
+
496
+ #### `sandbox`
497
+
498
+ Type: `SandboxSettings`
499
+ Default: Non défini
500
+
501
+ Configuration du sandbox.
502
+
503
+ ```typescript
504
+ const model = claudeCode('sonnet', {
505
+ sandbox: { enabled: true },
506
+ });
507
+ ```
508
+
509
+ #### `plugins`
510
+
511
+ Type: `SdkPluginConfig[]`
512
+ Default: Non défini
513
+
514
+ Charger des plugins personnalisés depuis des chemins locaux.
515
+
516
+ ```typescript
517
+ const model = claudeCode('sonnet', {
518
+ plugins: [
519
+ { path: '/chemin/vers/plugin' },
520
+ ],
521
+ });
522
+ ```
523
+
524
+ #### `maxBudgetUsd`
525
+
526
+ Type: `number`
527
+ Default: Non défini
528
+
529
+ Budget maximum en USD pour la requête.
530
+
531
+ ```typescript
532
+ const model = claudeCode('opus', {
533
+ maxBudgetUsd: 1.0, // Max 1 USD
534
+ });
535
+ ```
536
+
537
+ #### `mcpServers`
538
+
539
+ Type: `Record<string, McpServerConfig>`
540
+ Default: Non défini
541
+
542
+ Configuration des serveurs MCP (Model Context Protocol).
543
+
544
+ ```typescript
545
+ const model = claudeCode('sonnet', {
546
+ mcpServers: {
547
+ 'mon-serveur': {
548
+ command: 'node',
549
+ args: ['/chemin/vers/serveur.js'],
550
+ },
551
+ },
552
+ });
553
+ ```
554
+
555
+ #### `agents`
556
+
557
+ Type: `Record<string, AgentDefinition>`
558
+ Default: Non défini
559
+
560
+ Définition de sous-agents programmatiques.
561
+
562
+ ```typescript
563
+ const model = claudeCode('sonnet', {
564
+ agents: {
565
+ 'code-reviewer': {
566
+ description: 'Revoit le code et suggère des améliorations',
567
+ prompt: 'Tu es un expert en revue de code. Sois constructif.',
568
+ model: 'opus',
569
+ tools: ['Read', 'LS'],
570
+ },
571
+ },
572
+ });
573
+ ```
574
+
575
+ #### `spawnClaudeCodeProcess`
576
+
577
+ Type: `(options: SpawnOptions) => SpawnedProcess`
578
+ Default: Utilise `child_process.spawn`
579
+
580
+ Fonction personnalisée pour spawner le processus Claude Code. Utile pour VMs, conteneurs, etc.
581
+
582
+ ```typescript
583
+ const model = claudeCode('sonnet', {
584
+ spawnClaudeCodeProcess: (options) => {
585
+ // Implémentation personnalisée
586
+ return customSpawn(options);
587
+ },
588
+ });
589
+ ```
590
+
591
+ #### `maxToolResultSize`
592
+
593
+ Type: `number`
594
+ Default: `10000`
595
+
596
+ Taille maximale (en caractères) des résultats d'outils dans le stream client. Les résultats trop longs sont tronqués.
597
+
598
+ ```typescript
599
+ const model = claudeCode('sonnet', {
600
+ maxToolResultSize: 50000, // 50k caractères max
601
+ });
602
+ ```
603
+
604
+ #### `sdkOptions`
605
+
606
+ Type: `Partial<Options>`
607
+ Default: Non défini
608
+
609
+ Escape hatch pour les options non exposées de l'Agent SDK. Surcharge les settings explicites.
610
+
611
+ <Note type="warning">
612
+ Les champs gérés par le provider (`model`, `abortController`, `prompt`, `outputFormat`) sont ignorés.
613
+ </Note>
614
+
615
+ ```typescript
616
+ const model = claudeCode('sonnet', {
617
+ sdkOptions: {
618
+ maxBudgetUsd: 2,
619
+ // Autres options SDK non exposées
620
+ },
621
+ });
622
+ ```
623
+
624
+ ### Options système
625
+
626
+ #### `pathToClaudeCodeExecutable`
627
+
628
+ Type: `string`
629
+ Default: `'claude'` (cherche dans PATH)
630
+
631
+ Chemin personnalisé vers l'exécutable Claude Code.
632
+
633
+ ```typescript
634
+ const model = claudeCode('sonnet', {
635
+ pathToClaudeCodeExecutable: '/custom/path/to/claude',
636
+ });
637
+ ```
638
+
639
+ #### `executable`
640
+
641
+ Type: `'node' | 'bun' | 'deno'`
642
+ Default: `'node'` (ou `'bun'` si Bun détecté)
643
+
644
+ Runtime JavaScript à utiliser.
645
+
646
+ ```typescript
647
+ const model = claudeCode('sonnet', {
648
+ executable: 'bun',
649
+ });
650
+ ```
651
+
652
+ #### `executableArgs`
653
+
654
+ Type: `string[]`
655
+ Default: Non défini
656
+
657
+ Arguments supplémentaires pour le runtime.
658
+
659
+ ```typescript
660
+ const model = claudeCode('sonnet', {
661
+ executable: 'node',
662
+ executableArgs: ['--max-old-space-size=4096'],
663
+ });
664
+ ```
665
+
666
+ #### `env`
667
+
668
+ Type: `Record<string, string | undefined>`
669
+ Default: Non défini
670
+
671
+ Variables d'environnement personnalisées.
672
+
673
+ ```typescript
674
+ const model = claudeCode('sonnet', {
675
+ env: {
676
+ NODE_ENV: 'production',
677
+ CUSTOM_VAR: 'valeur',
678
+ },
679
+ });
680
+ ```
681
+
682
+ ## Types exportés
683
+
684
+ ### `Logger`
685
+
686
+ Interface pour les loggers personnalisés.
687
+
688
+ ```typescript
689
+ interface Logger {
690
+ debug: (message: string) => void;
691
+ info: (message: string) => void;
692
+ warn: (message: string) => void;
693
+ error: (message: string) => void;
694
+ }
695
+ ```
696
+
697
+ ### `MessageInjector`
698
+
699
+ Interface pour l'injection de messages mid-session.
700
+
701
+ ```typescript
702
+ interface MessageInjector {
703
+ inject(content: string, onResult?: (delivered: boolean) => void): void;
704
+ close(): void;
705
+ }
706
+ ```
707
+
708
+ ### `StreamingInputMode`
709
+
710
+ Type pour le mode streaming input.
711
+
712
+ ```typescript
713
+ type StreamingInputMode = 'auto' | 'always' | 'off';
714
+ ```
715
+
716
+ ## Valeurs de retour
717
+
718
+ ### Métadonnées provider
719
+
720
+ Toutes les fonctions AI SDK retournent des métadonnées dans `providerMetadata['claude-code']` :
721
+
722
+ ```typescript
723
+ const result = await generateText({
724
+ model: claudeCode('sonnet'),
725
+ prompt: 'Test',
726
+ });
727
+
728
+ console.log(result.providerMetadata['claude-code']);
729
+ // {
730
+ // cost: 0.0015, // Coût estimé en USD
731
+ // duration: 2300, // Durée en ms
732
+ // sessionId: 'abc-123', // ID de session
733
+ // rawUsage: {...}, // Usage brut du SDK
734
+ // }
735
+ ```
736
+
737
+ ### Usage tokens
738
+
739
+ ```typescript
740
+ const result = await generateText({
741
+ model: claudeCode('sonnet'),
742
+ prompt: 'Test',
743
+ });
744
+
745
+ console.log(result.usage);
746
+ // {
747
+ // promptTokens: 10,
748
+ // completionTokens: 20,
749
+ // totalTokens: 30
750
+ // }
751
+ ```
752
+
753
+ ## Prochaines étapes
754
+
755
+ - [Guide d'utilisation](/docs/guide) - Patterns et exemples pratiques
756
+ - [Exemples](/docs/examples) - Cas d'usage réels
757
+ - [Skills](/docs/skills) - Créer des compétences personnalisées