@kaiban/sdk 0.1.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 (86) hide show
  1. package/README.md +225 -0
  2. package/dist/index.d.ts +15 -0
  3. package/dist/index.js +15 -0
  4. package/dist/lib/client.d.ts +65 -0
  5. package/dist/lib/client.js +51 -0
  6. package/dist/lib/http/HttpClient.d.ts +16 -0
  7. package/dist/lib/http/HttpClient.js +237 -0
  8. package/dist/lib/http/errors.d.ts +50 -0
  9. package/dist/lib/http/errors.js +126 -0
  10. package/dist/lib/http/types.d.ts +40 -0
  11. package/dist/lib/http/types.js +1 -0
  12. package/dist/lib/resources/ActivitiesClient.d.ts +89 -0
  13. package/dist/lib/resources/ActivitiesClient.js +99 -0
  14. package/dist/lib/resources/AgentsClient.d.ts +121 -0
  15. package/dist/lib/resources/AgentsClient.js +134 -0
  16. package/dist/lib/resources/BenchmarkExecutionsClient.d.ts +250 -0
  17. package/dist/lib/resources/BenchmarkExecutionsClient.js +261 -0
  18. package/dist/lib/resources/BenchmarksClient.d.ts +159 -0
  19. package/dist/lib/resources/BenchmarksClient.js +158 -0
  20. package/dist/lib/resources/BoardsClient.d.ts +65 -0
  21. package/dist/lib/resources/BoardsClient.js +74 -0
  22. package/dist/lib/resources/CardsClient.d.ts +161 -0
  23. package/dist/lib/resources/CardsClient.js +202 -0
  24. package/dist/lib/resources/ExternalChannelsClient.d.ts +65 -0
  25. package/dist/lib/resources/ExternalChannelsClient.js +74 -0
  26. package/dist/lib/resources/ResourcesClient.d.ts +92 -0
  27. package/dist/lib/resources/ResourcesClient.js +98 -0
  28. package/dist/lib/resources/SupervisorFeedbackClient.d.ts +75 -0
  29. package/dist/lib/resources/SupervisorFeedbackClient.js +67 -0
  30. package/dist/lib/resources/TeamMembersClient.d.ts +66 -0
  31. package/dist/lib/resources/TeamMembersClient.js +75 -0
  32. package/dist/lib/resources/TeamsClient.d.ts +83 -0
  33. package/dist/lib/resources/TeamsClient.js +92 -0
  34. package/dist/lib/resources/__tests__/ActivitiesClient.test.d.ts +1 -0
  35. package/dist/lib/resources/__tests__/ActivitiesClient.test.js +33 -0
  36. package/dist/lib/resources/__tests__/AgentsClient.test.d.ts +1 -0
  37. package/dist/lib/resources/__tests__/AgentsClient.test.js +37 -0
  38. package/dist/lib/resources/__tests__/BenchmarkExecutionsClient.test.d.ts +1 -0
  39. package/dist/lib/resources/__tests__/BenchmarkExecutionsClient.test.js +59 -0
  40. package/dist/lib/resources/__tests__/BenchmarksClient.test.d.ts +1 -0
  41. package/dist/lib/resources/__tests__/BenchmarksClient.test.js +42 -0
  42. package/dist/lib/resources/__tests__/BoardsClient.test.d.ts +1 -0
  43. package/dist/lib/resources/__tests__/BoardsClient.test.js +26 -0
  44. package/dist/lib/resources/__tests__/CardsClient.test.d.ts +1 -0
  45. package/dist/lib/resources/__tests__/CardsClient.test.js +62 -0
  46. package/dist/lib/resources/__tests__/ExternalChannelsClient.test.d.ts +1 -0
  47. package/dist/lib/resources/__tests__/ExternalChannelsClient.test.js +26 -0
  48. package/dist/lib/resources/__tests__/ResourcesClient.test.d.ts +1 -0
  49. package/dist/lib/resources/__tests__/ResourcesClient.test.js +28 -0
  50. package/dist/lib/resources/__tests__/SupervisorFeedbackClient.test.d.ts +1 -0
  51. package/dist/lib/resources/__tests__/SupervisorFeedbackClient.test.js +24 -0
  52. package/dist/lib/resources/__tests__/TeamMembersClient.test.d.ts +1 -0
  53. package/dist/lib/resources/__tests__/TeamMembersClient.test.js +26 -0
  54. package/dist/lib/resources/__tests__/TeamsClient.test.d.ts +1 -0
  55. package/dist/lib/resources/__tests__/TeamsClient.test.js +26 -0
  56. package/dist/test/helpers/mockFetch.d.ts +8 -0
  57. package/dist/test/helpers/mockFetch.js +22 -0
  58. package/dist/types/a2a-data-parts.d.ts +64 -0
  59. package/dist/types/a2a-data-parts.js +13 -0
  60. package/dist/types/entities/activities.d.ts +32 -0
  61. package/dist/types/entities/activities.js +1 -0
  62. package/dist/types/entities/agent.d.ts +16 -0
  63. package/dist/types/entities/agent.js +1 -0
  64. package/dist/types/entities/benchmark.d.ts +82 -0
  65. package/dist/types/entities/benchmark.js +1 -0
  66. package/dist/types/entities/board.d.ts +20 -0
  67. package/dist/types/entities/board.js +1 -0
  68. package/dist/types/entities/card.d.ts +50 -0
  69. package/dist/types/entities/card.js +1 -0
  70. package/dist/types/entities/external-channel.d.ts +12 -0
  71. package/dist/types/entities/external-channel.js +1 -0
  72. package/dist/types/entities/index.d.ts +9 -0
  73. package/dist/types/entities/index.js +9 -0
  74. package/dist/types/entities/resource.d.ts +16 -0
  75. package/dist/types/entities/resource.js +1 -0
  76. package/dist/types/entities/shared.d.ts +1 -0
  77. package/dist/types/entities/shared.js +2 -0
  78. package/dist/types/entities/team.d.ts +14 -0
  79. package/dist/types/entities/team.js +1 -0
  80. package/dist/types/entities.d.ts +1 -0
  81. package/dist/types/entities.js +1 -0
  82. package/dist/types/requests.d.ts +22 -0
  83. package/dist/types/requests.js +1 -0
  84. package/dist/types/responses.d.ts +77 -0
  85. package/dist/types/responses.js +1 -0
  86. package/package.json +54 -0
@@ -0,0 +1,32 @@
1
+ import { ISODate } from './shared';
2
+ export interface CardActivity {
3
+ id: string;
4
+ card_id: string;
5
+ type: string;
6
+ content?: string;
7
+ created_at?: ISODate;
8
+ }
9
+ export interface CreateCardActivityInput {
10
+ type: string;
11
+ content?: string;
12
+ }
13
+ export interface ActivityActor {
14
+ id: string;
15
+ type: 'user' | 'agent' | 'system';
16
+ name: string;
17
+ }
18
+ export interface ActivityChange {
19
+ field: string;
20
+ old_value: unknown;
21
+ new_value: unknown;
22
+ }
23
+ export interface ActivityCreate {
24
+ board_id: string;
25
+ card_id: string;
26
+ team_id: string;
27
+ type: 'card_created' | 'card_column_changed' | string;
28
+ description: string;
29
+ actor: ActivityActor;
30
+ changes?: ActivityChange[];
31
+ metadata?: Record<string, unknown>;
32
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,16 @@
1
+ import { ISODate } from './shared';
2
+ export interface Agent {
3
+ id: string;
4
+ name: string;
5
+ description: string;
6
+ team_id: string;
7
+ status: 'active' | 'draft' | 'inactive';
8
+ type: 'kaibanjs' | 'crewai' | 'external' | 'a2a';
9
+ created_at?: ISODate;
10
+ updated_at?: ISODate;
11
+ }
12
+ export interface AgentFeedback {
13
+ rating?: number;
14
+ comment?: string;
15
+ metadata?: Record<string, unknown>;
16
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,82 @@
1
+ import { ISODate } from './shared';
2
+ export interface Benchmark {
3
+ id: string;
4
+ name: string;
5
+ description?: string;
6
+ created_at?: ISODate;
7
+ updated_at?: ISODate;
8
+ }
9
+ export interface CreateBenchmarkInput {
10
+ name: string;
11
+ description?: string;
12
+ }
13
+ export type UpdateBenchmarkInput = Partial<CreateBenchmarkInput>;
14
+ export interface BenchmarkExecution {
15
+ id: string;
16
+ benchmark_id: string;
17
+ agent_name?: string;
18
+ agent_id: string;
19
+ status: 'pending' | 'running' | 'completed' | 'failed';
20
+ total_tests: number;
21
+ completed_tests: number;
22
+ passed_tests: number;
23
+ failed_tests: number;
24
+ total_execution_time: number;
25
+ total_cost: number;
26
+ total_tokens: number;
27
+ total_input_tokens?: number;
28
+ total_output_tokens?: number;
29
+ thresholds?: Record<string, number>;
30
+ max_tests?: number;
31
+ parallel?: boolean;
32
+ batch_size?: number;
33
+ multi_turn?: boolean;
34
+ created_at?: ISODate;
35
+ updated_at?: ISODate;
36
+ started_at?: ISODate;
37
+ completed_at?: ISODate;
38
+ error?: string;
39
+ attempt?: number;
40
+ }
41
+ export interface CreateBenchmarkExecutionInput {
42
+ benchmark_id: string;
43
+ agent_id: string;
44
+ status?: 'pending' | 'running' | 'completed' | 'failed';
45
+ thresholds?: Record<string, number>;
46
+ max_tests?: number;
47
+ parallel?: boolean;
48
+ batch_size?: number;
49
+ multi_turn?: boolean;
50
+ }
51
+ export type UpdateBenchmarkExecutionInput = Partial<CreateBenchmarkExecutionInput>;
52
+ export interface TestCaseResult {
53
+ id: string;
54
+ execution_id: string;
55
+ test_index: number;
56
+ input: string;
57
+ agent_output: string;
58
+ execution_time: number;
59
+ token_usage?: {
60
+ input_tokens?: number;
61
+ output_tokens?: number;
62
+ total_tokens?: number;
63
+ cost?: number;
64
+ model?: string;
65
+ };
66
+ scores?: Array<{
67
+ scorer: string;
68
+ attribute?: string;
69
+ expected_value?: string;
70
+ score?: number;
71
+ passed?: boolean;
72
+ details?: Record<string, unknown>;
73
+ info?: Record<string, unknown>;
74
+ reason?: string;
75
+ }>;
76
+ passed?: boolean;
77
+ average_score?: number;
78
+ tags?: string[];
79
+ created_at?: ISODate;
80
+ }
81
+ export type CreateTestCaseResultInput = Omit<TestCaseResult, 'id' | 'execution_id' | 'created_at'>;
82
+ export type UpdateTestCaseResultInput = Partial<CreateTestCaseResultInput>;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,20 @@
1
+ import { ISODate } from './shared';
2
+ export interface Column {
3
+ column_key: string;
4
+ name: string;
5
+ process_stage: string;
6
+ order: number;
7
+ created_at: ISODate;
8
+ updated_at: ISODate;
9
+ }
10
+ export interface Board {
11
+ id: string;
12
+ name: string;
13
+ description: string;
14
+ team_id: string;
15
+ owner_id: string;
16
+ agent_ids: string[];
17
+ member_ids: string[];
18
+ allowed_roles: string[];
19
+ columns: Column[];
20
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,50 @@
1
+ import { ISODate } from './shared';
2
+ export interface Card {
3
+ id: string;
4
+ team_id: string;
5
+ board_id: string;
6
+ owner_id: string;
7
+ agent_id: string;
8
+ title: string;
9
+ description?: string;
10
+ status: 'backlog' | 'todo' | 'doing' | 'blocked' | 'done';
11
+ column_key: string;
12
+ created_at?: ISODate;
13
+ updated_at?: ISODate;
14
+ priority: string;
15
+ result?: string;
16
+ member_ids: string[];
17
+ metadata?: Record<string, unknown>;
18
+ enabled?: boolean;
19
+ parts?: Part[];
20
+ }
21
+ export type Part = {
22
+ type: 'text';
23
+ text: {
24
+ content: string;
25
+ };
26
+ } | {
27
+ type: 'file';
28
+ file: {
29
+ name: string;
30
+ mimeType: string;
31
+ uri: string;
32
+ };
33
+ };
34
+ export interface CreateCardInput {
35
+ team_id: string;
36
+ board_id: string;
37
+ owner_id: string;
38
+ agent_id: string;
39
+ title: string;
40
+ description?: string;
41
+ status: Card['status'];
42
+ column_key: string;
43
+ priority: string;
44
+ member_ids: string[];
45
+ parts?: Part[];
46
+ metadata?: Record<string, unknown>;
47
+ }
48
+ export type UpdateCardInput = Partial<Omit<CreateCardInput, 'team_id' | 'board_id' | 'owner_id'>> & {
49
+ status?: Card['status'];
50
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,12 @@
1
+ import { ISODate } from './shared';
2
+ export interface ExternalChannel {
3
+ id: string;
4
+ name: string;
5
+ type: string;
6
+ team_id: string;
7
+ board_id: string;
8
+ agent_id: string;
9
+ initial_column_key?: string;
10
+ created_at?: ISODate;
11
+ updated_at?: ISODate;
12
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,9 @@
1
+ export * from './shared';
2
+ export * from './card';
3
+ export * from './activities';
4
+ export * from './agent';
5
+ export * from './team';
6
+ export * from './board';
7
+ export * from './resource';
8
+ export * from './benchmark';
9
+ export * from './external-channel';
@@ -0,0 +1,9 @@
1
+ export * from './shared';
2
+ export * from './card';
3
+ export * from './activities';
4
+ export * from './agent';
5
+ export * from './team';
6
+ export * from './board';
7
+ export * from './resource';
8
+ export * from './benchmark';
9
+ export * from './external-channel';
@@ -0,0 +1,16 @@
1
+ import { ISODate } from './shared';
2
+ export interface Resource {
3
+ id: string;
4
+ name: string;
5
+ description?: string;
6
+ version?: number;
7
+ content?: string;
8
+ status?: string;
9
+ team_id?: string;
10
+ created_by?: string;
11
+ last_edited_by?: string;
12
+ published_at?: ISODate | null;
13
+ last_edited_at?: ISODate;
14
+ created_at?: ISODate;
15
+ updated_at?: ISODate;
16
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export type ISODate = string;
@@ -0,0 +1,2 @@
1
+ // Shared primitives for entity wire types
2
+ export {};
@@ -0,0 +1,14 @@
1
+ import { ISODate } from './shared';
2
+ export interface Team {
3
+ id: string;
4
+ name: string;
5
+ created_at: ISODate;
6
+ }
7
+ export interface TeamMember {
8
+ id: string;
9
+ team_id: string;
10
+ role: string;
11
+ is_agent: boolean;
12
+ joined_at: ISODate;
13
+ created_at: ISODate;
14
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export * from './entities/index';
@@ -0,0 +1 @@
1
+ export * from './entities/index';
@@ -0,0 +1,22 @@
1
+ export type Empty = Record<string, never>;
2
+ export interface ActivitiesBatchRequestItem {
3
+ board_id: string;
4
+ card_id: string;
5
+ team_id: string;
6
+ type: string;
7
+ description: string;
8
+ actor: {
9
+ id: string;
10
+ type: 'user' | 'agent' | 'system';
11
+ name: string;
12
+ };
13
+ changes?: Array<{
14
+ field: string;
15
+ old_value: unknown;
16
+ new_value: unknown;
17
+ }>;
18
+ metadata?: Record<string, unknown>;
19
+ }
20
+ export interface ActivitiesBatchRequest {
21
+ items: ActivitiesBatchRequestItem[];
22
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,77 @@
1
+ /**
2
+ * Pagination metadata returned by list endpoints
3
+ */
4
+ export interface PaginationMeta {
5
+ /** Number of items per page */
6
+ limit: number;
7
+ /** Whether there are more results available */
8
+ has_more: boolean;
9
+ /** Cursor for the next page */
10
+ next_cursor?: string;
11
+ /** Cursor for the previous page */
12
+ previous_cursor?: string;
13
+ }
14
+ /**
15
+ * API meta information returned with each response
16
+ */
17
+ export interface ResponseMeta {
18
+ /** Server timestamp (ISO8601) */
19
+ timestamp: string;
20
+ /** Request ID included only when server generated it (client did not provide) */
21
+ request_id?: string;
22
+ }
23
+ /**
24
+ * Standard error object
25
+ */
26
+ export interface ApiErrorObject {
27
+ code: 'invalid_argument' | 'unauthenticated' | 'permission_denied' | 'not_found' | 'conflict' | 'internal' | 'validation_error' | 'rate_limit_exceeded' | 'bad_gateway' | 'service_unavailable' | 'gateway_timeout' | string;
28
+ message: string;
29
+ details?: unknown;
30
+ }
31
+ /**
32
+ * Generic success envelope
33
+ */
34
+ export interface SuccessEnvelope<T> {
35
+ data: T;
36
+ meta: ResponseMeta;
37
+ }
38
+ /**
39
+ * Generic error envelope
40
+ */
41
+ export interface ErrorEnvelope {
42
+ error: ApiErrorObject;
43
+ meta: ResponseMeta;
44
+ }
45
+ /**
46
+ * Generic paginated response format (Option A)
47
+ */
48
+ export interface Paginated<T> {
49
+ /** Array of items in the current page */
50
+ data: T[];
51
+ /** Pagination metadata */
52
+ meta: PaginationMeta;
53
+ }
54
+ /**
55
+ * Parameters for list operations
56
+ */
57
+ export interface ListParams {
58
+ /** Cursor for pagination (from previous/next response) */
59
+ cursor?: string;
60
+ /** Number of items per page (default: 50, max: 100) */
61
+ limit?: number;
62
+ /**
63
+ * Fields to sort by. Use - prefix for descending order.
64
+ * Example: ['-created_at', 'name'] sorts by created_at desc, then name asc
65
+ */
66
+ order_by?: string;
67
+ /**
68
+ * Filter parameters. Each client defines available fields.
69
+ * Example: { status: 'active', team_id: '123' }
70
+ */
71
+ filters?: Record<string, unknown>;
72
+ /**
73
+ * Metadata filters for cards. Each key becomes metadata.{key} in the query.
74
+ * Example: { thread_id: '123' } becomes ?metadata.thread_id=123
75
+ */
76
+ metadata?: Record<string, unknown>;
77
+ }
@@ -0,0 +1 @@
1
+ export {};
package/package.json ADDED
@@ -0,0 +1,54 @@
1
+ {
2
+ "name": "@kaiban/sdk",
3
+ "version": "0.1.1",
4
+ "description": "Official TypeScript SDK for the Kaiban API",
5
+ "license": "MIT",
6
+ "type": "module",
7
+ "main": "dist/index.js",
8
+ "types": "dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "import": "./dist/index.js",
12
+ "types": "./dist/index.d.ts"
13
+ }
14
+ },
15
+ "files": [
16
+ "dist",
17
+ "README.md"
18
+ ],
19
+ "engines": {
20
+ "node": ">=18"
21
+ },
22
+ "publishConfig": {
23
+ "access": "public"
24
+ },
25
+ "scripts": {
26
+ "build": "npm run lint && npm run format && tsc -p tsconfig.json",
27
+ "clean": "rimraf dist",
28
+ "prepare": "npm run build",
29
+ "dev": "npm run lint && npm run format && tsc -w -p tsconfig.json",
30
+ "lint": "node_modules/.bin/eslint .",
31
+ "lint:fix": "node_modules/.bin/eslint . --fix",
32
+ "format": "node_modules/.bin/prettier --write .",
33
+ "format:check": "node_modules/.bin/prettier --check .",
34
+ "refresh": "rm -rf node_modules package-lock.json && npm install",
35
+ "test": "vitest run",
36
+ "test:watch": "vitest",
37
+ "docs:generate": "typedoc",
38
+ "docs:clean": "rimraf docs",
39
+ "docs:build": "npm run docs:clean && npm run docs:generate",
40
+ "docs:serve": "npm run docs:generate && npx serve docs"
41
+ },
42
+ "devDependencies": {
43
+ "@eslint/js": "^9.12.0",
44
+ "@vitest/coverage-v8": "^2.1.1",
45
+ "eslint": "^9.12.0",
46
+ "eslint-config-prettier": "^9.1.0",
47
+ "prettier": "^3.3.3",
48
+ "rimraf": "^6.0.1",
49
+ "typedoc": "^0.28.14",
50
+ "typescript": "^5.4.0",
51
+ "typescript-eslint": "^8.8.0",
52
+ "vitest": "^2.1.1"
53
+ }
54
+ }