@codeguide/core 0.0.29 → 0.0.35
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.
- package/__tests__/services/codespace/codespace-v2.test.ts +53 -0
- package/__tests__/services/usage/usage-service.test.ts +138 -119
- package/codeguide.ts +3 -0
- package/dist/codeguide.d.ts +2 -1
- package/dist/codeguide.js +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/services/chat/chat-service.d.ts +44 -0
- package/dist/services/chat/chat-service.js +85 -0
- package/dist/services/chat/chat-types.d.ts +88 -0
- package/dist/services/chat/chat-types.js +5 -0
- package/dist/services/chat/index.d.ts +2 -0
- package/dist/services/chat/index.js +20 -0
- package/dist/services/codespace/codespace-service.d.ts +11 -2
- package/dist/services/codespace/codespace-service.js +18 -3
- package/dist/services/codespace/codespace-types.d.ts +21 -0
- package/dist/services/codespace/index.d.ts +1 -1
- package/dist/services/generation/generation-service.d.ts +7 -1
- package/dist/services/generation/generation-service.js +18 -0
- package/dist/services/generation/generation-types.d.ts +95 -0
- package/dist/services/index.d.ts +4 -0
- package/dist/services/index.js +7 -1
- package/dist/services/projects/project-service.d.ts +3 -1
- package/dist/services/projects/project-service.js +13 -1
- package/dist/services/projects/project-types.d.ts +24 -1
- package/dist/services/streaming/index.d.ts +2 -0
- package/dist/services/streaming/index.js +20 -0
- package/dist/services/streaming/streaming-service.d.ts +30 -0
- package/dist/services/streaming/streaming-service.js +107 -0
- package/dist/services/streaming/streaming-types.d.ts +14 -0
- package/dist/services/streaming/streaming-types.js +2 -0
- package/dist/services/subscriptions/subscription-service.d.ts +11 -1
- package/dist/services/subscriptions/subscription-service.js +14 -0
- package/dist/services/tasks/task-service.d.ts +3 -1
- package/dist/services/tasks/task-service.js +8 -0
- package/dist/services/tasks/task-types.d.ts +15 -0
- package/dist/services/usage/usage-service.d.ts +35 -1
- package/dist/services/usage/usage-service.js +68 -0
- package/dist/services/usage/usage-types.d.ts +119 -45
- package/dist/types.d.ts +18 -2
- package/index.ts +3 -0
- package/package.json +2 -1
- package/services/chat/chat-service.ts +110 -0
- package/services/chat/chat-types.ts +145 -0
- package/services/chat/index.ts +2 -0
- package/services/codespace/codespace-service.ts +25 -3
- package/services/codespace/codespace-types.ts +33 -0
- package/services/codespace/index.ts +6 -1
- package/services/generation/generation-service.ts +40 -0
- package/services/generation/generation-types.ts +110 -0
- package/services/index.ts +4 -0
- package/services/projects/README.md +54 -0
- package/services/projects/project-service.ts +20 -1
- package/services/projects/project-types.ts +27 -1
- package/services/streaming/index.ts +2 -0
- package/services/streaming/streaming-service.ts +123 -0
- package/services/streaming/streaming-types.ts +15 -0
- package/services/subscriptions/subscription-service.ts +23 -5
- package/services/tasks/task-service.ts +30 -2
- package/services/tasks/task-types.ts +19 -1
- package/services/usage/usage-service.ts +81 -0
- package/services/usage/usage-types.ts +128 -49
- package/types.ts +22 -2
|
@@ -3,6 +3,8 @@ import {
|
|
|
3
3
|
CreateCodespaceTaskRequestV2,
|
|
4
4
|
CreateBackgroundCodespaceTaskRequest,
|
|
5
5
|
ModelApiKey,
|
|
6
|
+
GetCodespaceProjectSummaryRequest,
|
|
7
|
+
GetCodespaceProjectSummaryResponse,
|
|
6
8
|
} from '../../../services/codespace/codespace-types'
|
|
7
9
|
import { APIServiceConfig } from '../../../types'
|
|
8
10
|
import axios from 'axios'
|
|
@@ -268,4 +270,55 @@ describe('CodespaceService - V2 Task Endpoints', () => {
|
|
|
268
270
|
expect(result).toEqual(mockResponse)
|
|
269
271
|
})
|
|
270
272
|
})
|
|
273
|
+
|
|
274
|
+
describe('getCodespaceProjectSummary', () => {
|
|
275
|
+
it('should get project codespace summary successfully', async () => {
|
|
276
|
+
const request: GetCodespaceProjectSummaryRequest = {
|
|
277
|
+
project_id: 'project-123',
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
const mockResponse: GetCodespaceProjectSummaryResponse = {
|
|
281
|
+
status: 'success',
|
|
282
|
+
data: {
|
|
283
|
+
project_id: 'project-123',
|
|
284
|
+
total_codespace_tasks: 25,
|
|
285
|
+
status_summary: {
|
|
286
|
+
pending: 5,
|
|
287
|
+
in_progress: 8,
|
|
288
|
+
completed: 10,
|
|
289
|
+
failed: 2,
|
|
290
|
+
blocked: 0,
|
|
291
|
+
},
|
|
292
|
+
latest_task_created_at: '2025-11-16T10:30:00Z',
|
|
293
|
+
},
|
|
294
|
+
message: 'Retrieved summary for 25 codespace tasks in project project-123',
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
mockAxios.onGet('/codespace/project/project-123/summary').reply(200, mockResponse)
|
|
298
|
+
|
|
299
|
+
const result = await codespaceService.getCodespaceProjectSummary(request)
|
|
300
|
+
|
|
301
|
+
expect(result).toEqual(mockResponse)
|
|
302
|
+
})
|
|
303
|
+
|
|
304
|
+
it('should throw error when project_id is missing', async () => {
|
|
305
|
+
const invalidRequest = {} as GetCodespaceProjectSummaryRequest
|
|
306
|
+
|
|
307
|
+
await expect(
|
|
308
|
+
codespaceService.getCodespaceProjectSummary(invalidRequest)
|
|
309
|
+
).rejects.toThrow('project_id is required')
|
|
310
|
+
})
|
|
311
|
+
|
|
312
|
+
it('should handle API errors properly', async () => {
|
|
313
|
+
const request: GetCodespaceProjectSummaryRequest = {
|
|
314
|
+
project_id: 'project-123',
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
mockAxios.onGet('/codespace/project/project-123/summary').reply(404, {
|
|
318
|
+
detail: 'Project not found',
|
|
319
|
+
})
|
|
320
|
+
|
|
321
|
+
await expect(codespaceService.getCodespaceProjectSummary(request)).rejects.toThrow()
|
|
322
|
+
})
|
|
323
|
+
})
|
|
271
324
|
})
|
|
@@ -146,9 +146,7 @@ describe('UsageService', () => {
|
|
|
146
146
|
model_key: 'gpt-4',
|
|
147
147
|
}
|
|
148
148
|
|
|
149
|
-
mockAxios
|
|
150
|
-
.onGet('/usage/credit-check?model_key=gpt-4&input_tokens=100')
|
|
151
|
-
.reply(200, response)
|
|
149
|
+
mockAxios.onGet('/usage/credit-check?model_key=gpt-4&input_tokens=100').reply(200, response)
|
|
152
150
|
|
|
153
151
|
const result = await usageService.checkCredits(params)
|
|
154
152
|
|
|
@@ -156,7 +154,6 @@ describe('UsageService', () => {
|
|
|
156
154
|
})
|
|
157
155
|
})
|
|
158
156
|
|
|
159
|
-
|
|
160
157
|
describe('getAuthorization', () => {
|
|
161
158
|
it('should get authorization info successfully', async () => {
|
|
162
159
|
const response: AuthorizationResponse = {
|
|
@@ -329,7 +326,7 @@ describe('UsageService', () => {
|
|
|
329
326
|
expect(result.data.subscription).not.toBeNull()
|
|
330
327
|
expect(result.data.subscription?.plan_name).toBe('Monthly Plan')
|
|
331
328
|
expect(result.data.codespace_task_limit).toBeNull()
|
|
332
|
-
expect(result.data.plan_limits
|
|
329
|
+
expect(result.data.plan_limits?.limits.codespace_tasks.is_unlimited).toBe(true)
|
|
333
330
|
})
|
|
334
331
|
})
|
|
335
332
|
|
|
@@ -417,26 +414,12 @@ describe('UsageService', () => {
|
|
|
417
414
|
describe('getCodespaceTaskUsage', () => {
|
|
418
415
|
it('should get codespace task usage successfully', async () => {
|
|
419
416
|
const response: CodespaceTaskUsageResponse = {
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
total_cost: 0.1,
|
|
417
|
+
status: 'success',
|
|
418
|
+
data: {
|
|
419
|
+
total_records: 2,
|
|
420
|
+
total_credits_consumed: 49.428799,
|
|
421
|
+
latest_usage: '2025-11-24T07:50:58.150274+00:00',
|
|
426
422
|
},
|
|
427
|
-
usage_records: [
|
|
428
|
-
{
|
|
429
|
-
id: 'usage123',
|
|
430
|
-
codespace_task_id: 'task123',
|
|
431
|
-
user_id: 'user123',
|
|
432
|
-
model_key: 'gpt-4',
|
|
433
|
-
input_tokens: 100,
|
|
434
|
-
output_tokens: 50,
|
|
435
|
-
call_seconds: 2,
|
|
436
|
-
cost_amount: 0.05,
|
|
437
|
-
created_at: '2024-01-01T00:00:00Z',
|
|
438
|
-
},
|
|
439
|
-
],
|
|
440
423
|
}
|
|
441
424
|
|
|
442
425
|
mockAxios.onGet('/usage/codespace/task/task123').reply(200, response)
|
|
@@ -485,7 +468,7 @@ describe('UsageService', () => {
|
|
|
485
468
|
describe('getDashboardAnalytics', () => {
|
|
486
469
|
it('should get dashboard analytics with period parameter', async () => {
|
|
487
470
|
const params: DashboardAnalyticsRequest = {
|
|
488
|
-
period: '7d'
|
|
471
|
+
period: '7d',
|
|
489
472
|
}
|
|
490
473
|
|
|
491
474
|
const response: DashboardAnalyticsResponse = {
|
|
@@ -494,7 +477,7 @@ describe('UsageService', () => {
|
|
|
494
477
|
period: {
|
|
495
478
|
start: '2024-01-25',
|
|
496
479
|
end: '2024-01-31',
|
|
497
|
-
label: '7d'
|
|
480
|
+
label: '7d',
|
|
498
481
|
},
|
|
499
482
|
daily_usage: [
|
|
500
483
|
{
|
|
@@ -502,30 +485,30 @@ describe('UsageService', () => {
|
|
|
502
485
|
credits_consumed: 1250,
|
|
503
486
|
cost_usd: 3.75,
|
|
504
487
|
requests_count: 15,
|
|
505
|
-
average_credits_per_request: 83.33
|
|
506
|
-
}
|
|
488
|
+
average_credits_per_request: 83.33,
|
|
489
|
+
},
|
|
507
490
|
],
|
|
508
491
|
totals: {
|
|
509
492
|
credits_consumed: 13870,
|
|
510
493
|
cost_usd: 41.61,
|
|
511
|
-
requests_count: 142
|
|
494
|
+
requests_count: 142,
|
|
512
495
|
},
|
|
513
496
|
averages: {
|
|
514
497
|
daily_credits: 1981.43,
|
|
515
|
-
daily_requests: 20.29
|
|
498
|
+
daily_requests: 20.29,
|
|
516
499
|
},
|
|
517
500
|
trends: {
|
|
518
501
|
credits_consumed: 15.7,
|
|
519
|
-
requests_count: 8.3
|
|
502
|
+
requests_count: 8.3,
|
|
520
503
|
},
|
|
521
504
|
top_services: [
|
|
522
505
|
{
|
|
523
506
|
service_type: 'docs',
|
|
524
507
|
credits_consumed: 5230,
|
|
525
|
-
requests_count: 58
|
|
526
|
-
}
|
|
527
|
-
]
|
|
528
|
-
}
|
|
508
|
+
requests_count: 58,
|
|
509
|
+
},
|
|
510
|
+
],
|
|
511
|
+
},
|
|
529
512
|
}
|
|
530
513
|
|
|
531
514
|
mockAxios.onGet('/usage/dashboard/analytics?period=7d').reply(200, response)
|
|
@@ -539,7 +522,7 @@ describe('UsageService', () => {
|
|
|
539
522
|
const params: DashboardAnalyticsRequest = {
|
|
540
523
|
start_date: '2024-01-01',
|
|
541
524
|
end_date: '2024-01-31',
|
|
542
|
-
service_type: 'docs'
|
|
525
|
+
service_type: 'docs',
|
|
543
526
|
}
|
|
544
527
|
|
|
545
528
|
const response: DashboardAnalyticsResponse = {
|
|
@@ -548,33 +531,37 @@ describe('UsageService', () => {
|
|
|
548
531
|
period: {
|
|
549
532
|
start: '2024-01-01',
|
|
550
533
|
end: '2024-01-31',
|
|
551
|
-
label: 'custom'
|
|
534
|
+
label: 'custom',
|
|
552
535
|
},
|
|
553
536
|
daily_usage: [],
|
|
554
537
|
totals: {
|
|
555
538
|
credits_consumed: 5000,
|
|
556
539
|
cost_usd: 15.0,
|
|
557
|
-
requests_count: 45
|
|
540
|
+
requests_count: 45,
|
|
558
541
|
},
|
|
559
542
|
averages: {
|
|
560
543
|
daily_credits: 161.29,
|
|
561
|
-
daily_requests: 1.45
|
|
544
|
+
daily_requests: 1.45,
|
|
562
545
|
},
|
|
563
546
|
trends: {
|
|
564
547
|
credits_consumed: 12.5,
|
|
565
|
-
requests_count: 5.2
|
|
548
|
+
requests_count: 5.2,
|
|
566
549
|
},
|
|
567
550
|
top_services: [
|
|
568
551
|
{
|
|
569
552
|
service_type: 'docs',
|
|
570
553
|
credits_consumed: 5000,
|
|
571
|
-
requests_count: 45
|
|
572
|
-
}
|
|
573
|
-
]
|
|
574
|
-
}
|
|
554
|
+
requests_count: 45,
|
|
555
|
+
},
|
|
556
|
+
],
|
|
557
|
+
},
|
|
575
558
|
}
|
|
576
559
|
|
|
577
|
-
mockAxios
|
|
560
|
+
mockAxios
|
|
561
|
+
.onGet(
|
|
562
|
+
'/usage/dashboard/analytics?start_date=2024-01-01&end_date=2024-01-31&service_type=docs'
|
|
563
|
+
)
|
|
564
|
+
.reply(200, response)
|
|
578
565
|
|
|
579
566
|
const result = await usageService.getDashboardAnalytics(params)
|
|
580
567
|
|
|
@@ -588,24 +575,24 @@ describe('UsageService', () => {
|
|
|
588
575
|
period: {
|
|
589
576
|
start: '2024-01-01',
|
|
590
577
|
end: '2024-01-07',
|
|
591
|
-
label: '7d'
|
|
578
|
+
label: '7d',
|
|
592
579
|
},
|
|
593
580
|
daily_usage: [],
|
|
594
581
|
totals: {
|
|
595
582
|
credits_consumed: 1000,
|
|
596
583
|
cost_usd: 3.0,
|
|
597
|
-
requests_count: 10
|
|
584
|
+
requests_count: 10,
|
|
598
585
|
},
|
|
599
586
|
averages: {
|
|
600
587
|
daily_credits: 142.86,
|
|
601
|
-
daily_requests: 1.43
|
|
588
|
+
daily_requests: 1.43,
|
|
602
589
|
},
|
|
603
590
|
trends: {
|
|
604
591
|
credits_consumed: 5.0,
|
|
605
|
-
requests_count: 2.0
|
|
592
|
+
requests_count: 2.0,
|
|
606
593
|
},
|
|
607
|
-
top_services: []
|
|
608
|
-
}
|
|
594
|
+
top_services: [],
|
|
595
|
+
},
|
|
609
596
|
}
|
|
610
597
|
|
|
611
598
|
mockAxios.onGet('/usage/dashboard/analytics').reply(200, response)
|
|
@@ -622,7 +609,7 @@ describe('UsageService', () => {
|
|
|
622
609
|
page: 1,
|
|
623
610
|
page_size: 25,
|
|
624
611
|
sort_by: 'credits_consumed',
|
|
625
|
-
sort_order: 'desc'
|
|
612
|
+
sort_order: 'desc',
|
|
626
613
|
}
|
|
627
614
|
|
|
628
615
|
const response: UsageDetailsResponse = {
|
|
@@ -636,8 +623,8 @@ describe('UsageService', () => {
|
|
|
636
623
|
usage_type: 'output_tokens',
|
|
637
624
|
units_consumed: 1250,
|
|
638
625
|
credits_consumed: 156,
|
|
639
|
-
cost_amount: 0.468
|
|
640
|
-
}
|
|
626
|
+
cost_amount: 0.468,
|
|
627
|
+
},
|
|
641
628
|
],
|
|
642
629
|
pagination: {
|
|
643
630
|
page: 1,
|
|
@@ -645,17 +632,21 @@ describe('UsageService', () => {
|
|
|
645
632
|
total_count: 142,
|
|
646
633
|
total_pages: 6,
|
|
647
634
|
has_next: true,
|
|
648
|
-
has_prev: false
|
|
635
|
+
has_prev: false,
|
|
649
636
|
},
|
|
650
637
|
filters: {
|
|
651
638
|
period: null,
|
|
652
639
|
start_date: null,
|
|
653
640
|
end_date: null,
|
|
654
|
-
service_type: null
|
|
655
|
-
}
|
|
641
|
+
service_type: null,
|
|
642
|
+
},
|
|
656
643
|
}
|
|
657
644
|
|
|
658
|
-
mockAxios
|
|
645
|
+
mockAxios
|
|
646
|
+
.onGet(
|
|
647
|
+
'/usage/dashboard/details?page=1&page_size=25&sort_by=credits_consumed&sort_order=desc'
|
|
648
|
+
)
|
|
649
|
+
.reply(200, response)
|
|
659
650
|
|
|
660
651
|
const result = await usageService.getUsageDetails(params)
|
|
661
652
|
|
|
@@ -665,7 +656,7 @@ describe('UsageService', () => {
|
|
|
665
656
|
it('should get usage details with filtering parameters', async () => {
|
|
666
657
|
const params: UsageDetailsRequest = {
|
|
667
658
|
period: '1m',
|
|
668
|
-
service_type: 'chat'
|
|
659
|
+
service_type: 'chat',
|
|
669
660
|
}
|
|
670
661
|
|
|
671
662
|
const response: UsageDetailsResponse = {
|
|
@@ -679,8 +670,8 @@ describe('UsageService', () => {
|
|
|
679
670
|
usage_type: 'input_tokens',
|
|
680
671
|
units_consumed: 890,
|
|
681
672
|
credits_consumed: 89,
|
|
682
|
-
cost_amount: null
|
|
683
|
-
}
|
|
673
|
+
cost_amount: null,
|
|
674
|
+
},
|
|
684
675
|
],
|
|
685
676
|
pagination: {
|
|
686
677
|
page: 1,
|
|
@@ -688,14 +679,14 @@ describe('UsageService', () => {
|
|
|
688
679
|
total_count: 25,
|
|
689
680
|
total_pages: 1,
|
|
690
681
|
has_next: false,
|
|
691
|
-
has_prev: false
|
|
682
|
+
has_prev: false,
|
|
692
683
|
},
|
|
693
684
|
filters: {
|
|
694
685
|
period: '1m',
|
|
695
686
|
start_date: null,
|
|
696
687
|
end_date: null,
|
|
697
|
-
service_type: 'chat'
|
|
698
|
-
}
|
|
688
|
+
service_type: 'chat',
|
|
689
|
+
},
|
|
699
690
|
}
|
|
700
691
|
|
|
701
692
|
mockAxios.onGet('/usage/dashboard/details?period=1m&service_type=chat').reply(200, response)
|
|
@@ -709,32 +700,44 @@ describe('UsageService', () => {
|
|
|
709
700
|
describe('getUsageSummary', () => {
|
|
710
701
|
it('should get usage summary dashboard with period parameter', async () => {
|
|
711
702
|
const params = {
|
|
712
|
-
period: '7d' as const
|
|
703
|
+
period: '7d' as const,
|
|
713
704
|
}
|
|
714
705
|
|
|
715
706
|
const response: UsageSummaryResponse = {
|
|
716
707
|
status: 'success',
|
|
717
708
|
data: {
|
|
718
|
-
|
|
709
|
+
period: {
|
|
710
|
+
start: '2024-01-25',
|
|
711
|
+
end: '2024-01-31',
|
|
712
|
+
},
|
|
713
|
+
usage: {
|
|
719
714
|
credits_consumed: 13870,
|
|
720
715
|
cost_usd: 41.61,
|
|
721
|
-
requests_count: 142
|
|
716
|
+
requests_count: 142,
|
|
722
717
|
},
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
718
|
+
breakdown: {
|
|
719
|
+
docs: 5230,
|
|
720
|
+
chat: 4120,
|
|
721
|
+
codespace_task: 4520,
|
|
727
722
|
},
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
723
|
+
service_breakdown: [
|
|
724
|
+
{
|
|
725
|
+
service_type: 'docs',
|
|
726
|
+
credits_consumed: 5230,
|
|
727
|
+
requests_count: 58,
|
|
728
|
+
},
|
|
729
|
+
{
|
|
730
|
+
service_type: 'chat',
|
|
731
|
+
credits_consumed: 4120,
|
|
732
|
+
requests_count: 47,
|
|
733
|
+
},
|
|
734
|
+
{
|
|
735
|
+
service_type: 'codespace_task',
|
|
736
|
+
credits_consumed: 4520,
|
|
737
|
+
requests_count: 37,
|
|
738
|
+
},
|
|
739
|
+
],
|
|
740
|
+
},
|
|
738
741
|
}
|
|
739
742
|
|
|
740
743
|
mockAxios.onGet('/usage/dashboard/summary?period=7d').reply(200, response)
|
|
@@ -747,35 +750,49 @@ describe('UsageService', () => {
|
|
|
747
750
|
it('should get usage summary dashboard with custom date range', async () => {
|
|
748
751
|
const params = {
|
|
749
752
|
start_date: '2024-01-01',
|
|
750
|
-
end_date: '2024-01-31'
|
|
753
|
+
end_date: '2024-01-31',
|
|
751
754
|
}
|
|
752
755
|
|
|
753
756
|
const response: UsageSummaryResponse = {
|
|
754
757
|
status: 'success',
|
|
755
758
|
data: {
|
|
756
|
-
|
|
759
|
+
period: {
|
|
760
|
+
start: '2024-01-01',
|
|
761
|
+
end: '2024-01-31',
|
|
762
|
+
},
|
|
763
|
+
usage: {
|
|
757
764
|
credits_consumed: 25000,
|
|
758
765
|
cost_usd: 75.0,
|
|
759
|
-
requests_count: 300
|
|
766
|
+
requests_count: 300,
|
|
760
767
|
},
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
768
|
+
breakdown: {
|
|
769
|
+
docs: 10000,
|
|
770
|
+
chat: 8000,
|
|
771
|
+
codespace_task: 7000,
|
|
765
772
|
},
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
773
|
+
service_breakdown: [
|
|
774
|
+
{
|
|
775
|
+
service_type: 'docs',
|
|
776
|
+
credits_consumed: 10000,
|
|
777
|
+
requests_count: 120,
|
|
778
|
+
},
|
|
779
|
+
{
|
|
780
|
+
service_type: 'chat',
|
|
781
|
+
credits_consumed: 8000,
|
|
782
|
+
requests_count: 95,
|
|
783
|
+
},
|
|
784
|
+
{
|
|
785
|
+
service_type: 'codespace_task',
|
|
786
|
+
credits_consumed: 7000,
|
|
787
|
+
requests_count: 85,
|
|
788
|
+
},
|
|
789
|
+
],
|
|
790
|
+
},
|
|
776
791
|
}
|
|
777
792
|
|
|
778
|
-
mockAxios
|
|
793
|
+
mockAxios
|
|
794
|
+
.onGet('/usage/dashboard/summary?start_date=2024-01-01&end_date=2024-01-31')
|
|
795
|
+
.reply(200, response)
|
|
779
796
|
|
|
780
797
|
const result = await usageService.getUsageSummary(params)
|
|
781
798
|
|
|
@@ -786,7 +803,7 @@ describe('UsageService', () => {
|
|
|
786
803
|
describe('getServiceBreakdown', () => {
|
|
787
804
|
it('should get service breakdown with period parameter', async () => {
|
|
788
805
|
const params: ServiceBreakdownRequest = {
|
|
789
|
-
period: '7d'
|
|
806
|
+
period: '7d',
|
|
790
807
|
}
|
|
791
808
|
|
|
792
809
|
const response: ServiceBreakdownResponse = {
|
|
@@ -795,7 +812,7 @@ describe('UsageService', () => {
|
|
|
795
812
|
period: {
|
|
796
813
|
start: '2024-01-25',
|
|
797
814
|
end: '2024-01-31',
|
|
798
|
-
label: '7d'
|
|
815
|
+
label: '7d',
|
|
799
816
|
},
|
|
800
817
|
services: [
|
|
801
818
|
{
|
|
@@ -804,7 +821,7 @@ describe('UsageService', () => {
|
|
|
804
821
|
percentage: 37.71,
|
|
805
822
|
cost_usd: 15.69,
|
|
806
823
|
requests_count: 58,
|
|
807
|
-
trend: 12.5
|
|
824
|
+
trend: 12.5,
|
|
808
825
|
},
|
|
809
826
|
{
|
|
810
827
|
service_type: 'chat',
|
|
@@ -812,12 +829,12 @@ describe('UsageService', () => {
|
|
|
812
829
|
percentage: 29.71,
|
|
813
830
|
cost_usd: 12.36,
|
|
814
831
|
requests_count: 47,
|
|
815
|
-
trend: -5.2
|
|
816
|
-
}
|
|
832
|
+
trend: -5.2,
|
|
833
|
+
},
|
|
817
834
|
],
|
|
818
835
|
total_credits: 13870,
|
|
819
|
-
total_cost: 41.61
|
|
820
|
-
}
|
|
836
|
+
total_cost: 41.61,
|
|
837
|
+
},
|
|
821
838
|
}
|
|
822
839
|
|
|
823
840
|
mockAxios.onGet('/usage/dashboard/services?period=7d').reply(200, response)
|
|
@@ -830,7 +847,7 @@ describe('UsageService', () => {
|
|
|
830
847
|
it('should get service breakdown with custom date range', async () => {
|
|
831
848
|
const params: ServiceBreakdownRequest = {
|
|
832
849
|
start_date: '2024-01-01',
|
|
833
|
-
end_date: '2024-01-31'
|
|
850
|
+
end_date: '2024-01-31',
|
|
834
851
|
}
|
|
835
852
|
|
|
836
853
|
const response: ServiceBreakdownResponse = {
|
|
@@ -839,7 +856,7 @@ describe('UsageService', () => {
|
|
|
839
856
|
period: {
|
|
840
857
|
start: '2024-01-01',
|
|
841
858
|
end: '2024-01-31',
|
|
842
|
-
label: 'custom'
|
|
859
|
+
label: 'custom',
|
|
843
860
|
},
|
|
844
861
|
services: [
|
|
845
862
|
{
|
|
@@ -848,15 +865,17 @@ describe('UsageService', () => {
|
|
|
848
865
|
percentage: 60.0,
|
|
849
866
|
cost_usd: 45.0,
|
|
850
867
|
requests_count: 25,
|
|
851
|
-
trend: 28.4
|
|
852
|
-
}
|
|
868
|
+
trend: 28.4,
|
|
869
|
+
},
|
|
853
870
|
],
|
|
854
871
|
total_credits: 25000,
|
|
855
|
-
total_cost: 75.0
|
|
856
|
-
}
|
|
872
|
+
total_cost: 75.0,
|
|
873
|
+
},
|
|
857
874
|
}
|
|
858
875
|
|
|
859
|
-
mockAxios
|
|
876
|
+
mockAxios
|
|
877
|
+
.onGet('/usage/dashboard/services?start_date=2024-01-01&end_date=2024-01-31')
|
|
878
|
+
.reply(200, response)
|
|
860
879
|
|
|
861
880
|
const result = await usageService.getServiceBreakdown(params)
|
|
862
881
|
|
|
@@ -870,21 +889,21 @@ describe('UsageService', () => {
|
|
|
870
889
|
period: {
|
|
871
890
|
start: '2024-01-01',
|
|
872
891
|
end: '2024-01-07',
|
|
873
|
-
label: '7d'
|
|
892
|
+
label: '7d',
|
|
874
893
|
},
|
|
875
894
|
services: [
|
|
876
895
|
{
|
|
877
896
|
service_type: 'api',
|
|
878
897
|
credits_consumed: 700,
|
|
879
898
|
percentage: 100.0,
|
|
880
|
-
cost_usd: 2.
|
|
899
|
+
cost_usd: 2.1,
|
|
881
900
|
requests_count: 5,
|
|
882
|
-
trend: 0.0
|
|
883
|
-
}
|
|
901
|
+
trend: 0.0,
|
|
902
|
+
},
|
|
884
903
|
],
|
|
885
904
|
total_credits: 700,
|
|
886
|
-
total_cost: 2.
|
|
887
|
-
}
|
|
905
|
+
total_cost: 2.1,
|
|
906
|
+
},
|
|
888
907
|
}
|
|
889
908
|
|
|
890
909
|
mockAxios.onGet('/usage/dashboard/services').reply(200, response)
|
package/codeguide.ts
CHANGED
|
@@ -20,6 +20,7 @@ import {
|
|
|
20
20
|
SecurityKeysService,
|
|
21
21
|
UserService,
|
|
22
22
|
StarterKitsService,
|
|
23
|
+
ChatService,
|
|
23
24
|
} from './services'
|
|
24
25
|
import { APIServiceConfig, CodeGuideOptions } from './types'
|
|
25
26
|
|
|
@@ -37,6 +38,7 @@ export class CodeGuide {
|
|
|
37
38
|
public securityKeys: SecurityKeysService
|
|
38
39
|
public users: UserService
|
|
39
40
|
public starterKits: StarterKitsService
|
|
41
|
+
public chat: ChatService
|
|
40
42
|
private options: CodeGuideOptions
|
|
41
43
|
|
|
42
44
|
constructor(config: APIServiceConfig, options: CodeGuideOptions = {}) {
|
|
@@ -56,6 +58,7 @@ export class CodeGuide {
|
|
|
56
58
|
this.securityKeys = new SecurityKeysService(config)
|
|
57
59
|
this.users = new UserService(config)
|
|
58
60
|
this.starterKits = new StarterKitsService(config)
|
|
61
|
+
this.chat = new ChatService(config)
|
|
59
62
|
}
|
|
60
63
|
|
|
61
64
|
// Convenience method for backward compatibility
|
package/dist/codeguide.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { GenerationService, ProjectService, UsageService, RepositoryAnalysisService, TaskService, ApiKeyEnhancedService, SubscriptionService, CancellationFunnelService, CodespaceService, ExternalTokenService, SecurityKeysService, UserService, StarterKitsService } from './services';
|
|
1
|
+
import { GenerationService, ProjectService, UsageService, RepositoryAnalysisService, TaskService, ApiKeyEnhancedService, SubscriptionService, CancellationFunnelService, CodespaceService, ExternalTokenService, SecurityKeysService, UserService, StarterKitsService, ChatService } from './services';
|
|
2
2
|
import { APIServiceConfig, CodeGuideOptions } from './types';
|
|
3
3
|
export declare class CodeGuide {
|
|
4
4
|
generation: GenerationService;
|
|
@@ -14,6 +14,7 @@ export declare class CodeGuide {
|
|
|
14
14
|
securityKeys: SecurityKeysService;
|
|
15
15
|
users: UserService;
|
|
16
16
|
starterKits: StarterKitsService;
|
|
17
|
+
chat: ChatService;
|
|
17
18
|
private options;
|
|
18
19
|
constructor(config: APIServiceConfig, options?: CodeGuideOptions);
|
|
19
20
|
getGuidance(prompt: string): Promise<any>;
|
package/dist/codeguide.js
CHANGED
|
@@ -29,6 +29,7 @@ class CodeGuide {
|
|
|
29
29
|
this.securityKeys = new services_1.SecurityKeysService(config);
|
|
30
30
|
this.users = new services_1.UserService(config);
|
|
31
31
|
this.starterKits = new services_1.StarterKitsService(config);
|
|
32
|
+
this.chat = new services_1.ChatService(config);
|
|
32
33
|
}
|
|
33
34
|
// Convenience method for backward compatibility
|
|
34
35
|
async getGuidance(prompt) {
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { CodeGuide } from './codeguide';
|
|
2
2
|
export * from './services';
|
|
3
3
|
export * from './types';
|
|
4
|
-
export type { ConnectRepositoryRequest, ConnectRepositoryResponse, ProjectRepository, GetProjectsRequest, PaginatedProjectsRequest, PaginatedProjectsResponse, } from './services/projects/project-types';
|
|
4
|
+
export type { ConnectRepositoryRequest, ConnectRepositoryResponse, ProjectRepository, GetProjectsRequest, PaginatedProjectsRequest, PaginatedProjectsResponse, AITool, GetAiToolsRequest, GetAiToolsResponse, } from './services/projects/project-types';
|
|
5
5
|
export type { CreateCodespaceTaskRequestV2 as CreateCodespaceTaskRequest, CreateCodespaceTaskResponseV2 as CreateCodespaceTaskResponse, CreateBackgroundCodespaceTaskRequest, CreateBackgroundCodespaceTaskResponse, ModelApiKey, Attachment, GetCodespaceTaskResponse, CodespaceTaskData, TechnicalDocument, GetProjectTasksByCodespaceResponse, } from './services/codespace/codespace-types';
|
|
6
6
|
export type { StoreExternalTokenRequest, StoreExternalTokenResponse, ListTokensQuery, ListTokensResponse, ValidateTokenRequest, ValidateTokenResponse, FindBestMatchRequest, FindBestMatchResponse, Platform, TokenType, } from './services/external-tokens/external-tokens-types';
|
|
7
7
|
export type { StarterKit, StarterKitMetadata, GetStarterKitsRequest, GetStarterKitsResponse, } from './services/starter-kits/starter-kits-types';
|