@nekutima/biome-sdk 0.19.3 → 0.30.0
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/dist/admin/admin.model.d.ts +70 -0
- package/dist/admin/admin.model.d.ts.map +1 -1
- package/dist/admin/admin.schema.json +339 -0
- package/dist/admin/admin.service.d.ts +9 -1
- package/dist/admin/admin.service.d.ts.map +1 -1
- package/dist/admin/admin.service.js +79 -4
- package/dist/admin/admin.service.js.map +1 -1
- package/dist/agents/agent-identity.d.ts +19 -0
- package/dist/agents/agent-identity.d.ts.map +1 -0
- package/dist/agents/agent-identity.js +36 -0
- package/dist/agents/agent-identity.js.map +1 -0
- package/dist/agents/agent-resource.d.ts +0 -1
- package/dist/agents/agent-resource.d.ts.map +1 -1
- package/dist/agents/agent.model.d.ts +13 -40
- package/dist/agents/agent.model.d.ts.map +1 -1
- package/dist/agents/agent.service.d.ts +9 -3
- package/dist/agents/agent.service.d.ts.map +1 -1
- package/dist/agents/agent.service.js +37 -8
- package/dist/agents/agent.service.js.map +1 -1
- package/dist/ai/yuri.service.d.ts +39 -5
- package/dist/ai/yuri.service.d.ts.map +1 -1
- package/dist/ai/yuri.service.js +64 -34
- package/dist/ai/yuri.service.js.map +1 -1
- package/dist/alexandria/nugget.model.d.ts +77 -0
- package/dist/alexandria/nugget.model.d.ts.map +1 -0
- package/dist/alexandria/nugget.model.js +7 -0
- package/dist/alexandria/nugget.model.js.map +1 -0
- package/dist/alexandria/nugget.service.d.ts +21 -0
- package/dist/alexandria/nugget.service.d.ts.map +1 -0
- package/dist/alexandria/nugget.service.js +127 -0
- package/dist/alexandria/nugget.service.js.map +1 -0
- package/dist/alexandria/problem.model.d.ts +48 -0
- package/dist/alexandria/problem.model.d.ts.map +1 -0
- package/dist/alexandria/problem.model.js +7 -0
- package/dist/alexandria/problem.model.js.map +1 -0
- package/dist/alexandria/problem.service.d.ts +17 -0
- package/dist/alexandria/problem.service.d.ts.map +1 -0
- package/dist/alexandria/problem.service.js +98 -0
- package/dist/alexandria/problem.service.js.map +1 -0
- package/dist/alexandria/progress.model.d.ts +19 -0
- package/dist/alexandria/progress.model.d.ts.map +1 -0
- package/dist/alexandria/progress.model.js +3 -0
- package/dist/alexandria/progress.model.js.map +1 -0
- package/dist/alexandria/progress.service.d.ts +10 -0
- package/dist/alexandria/progress.service.d.ts.map +1 -0
- package/dist/alexandria/progress.service.js +38 -0
- package/dist/alexandria/progress.service.js.map +1 -0
- package/dist/api-keys/api-key.model.d.ts +30 -0
- package/dist/api-keys/api-key.model.d.ts.map +1 -0
- package/dist/api-keys/api-key.model.js +3 -0
- package/dist/api-keys/api-key.model.js.map +1 -0
- package/dist/api-keys/api-key.service.d.ts +16 -0
- package/dist/api-keys/api-key.service.d.ts.map +1 -0
- package/dist/api-keys/api-key.service.js +34 -0
- package/dist/api-keys/api-key.service.js.map +1 -0
- package/dist/auth/auth.schema.json +106 -0
- package/dist/auth/auth.service.d.ts +8 -1
- package/dist/auth/auth.service.d.ts.map +1 -1
- package/dist/auth/auth.service.js +23 -10
- package/dist/auth/auth.service.js.map +1 -1
- package/dist/chat/chat.service.d.ts.map +1 -1
- package/dist/chat/chat.service.js +60 -68
- package/dist/chat/chat.service.js.map +1 -1
- package/dist/circles/circle.model.d.ts +25 -0
- package/dist/circles/circle.model.d.ts.map +1 -0
- package/dist/circles/circle.model.js +3 -0
- package/dist/circles/circle.model.js.map +1 -0
- package/dist/circles/circle.schema.json +332 -0
- package/dist/circles/circle.service.d.ts +14 -0
- package/dist/circles/circle.service.d.ts.map +1 -0
- package/dist/circles/circle.service.js +50 -0
- package/dist/circles/circle.service.js.map +1 -0
- package/dist/communities/community.model.d.ts +72 -0
- package/dist/communities/community.model.d.ts.map +1 -0
- package/dist/communities/community.model.js +3 -0
- package/dist/communities/community.model.js.map +1 -0
- package/dist/communities/community.service.d.ts +26 -0
- package/dist/communities/community.service.d.ts.map +1 -0
- package/dist/communities/community.service.js +140 -0
- package/dist/communities/community.service.js.map +1 -0
- package/dist/contacts/contact.model.d.ts +97 -0
- package/dist/contacts/contact.model.d.ts.map +1 -0
- package/dist/contacts/contact.model.js +3 -0
- package/dist/contacts/contact.model.js.map +1 -0
- package/dist/contacts/contact.schema.json +312 -0
- package/dist/contacts/contact.service.d.ts +28 -0
- package/dist/contacts/contact.service.d.ts.map +1 -0
- package/dist/contacts/contact.service.js +109 -0
- package/dist/contacts/contact.service.js.map +1 -0
- package/dist/core/api-diagnostics.d.ts +91 -0
- package/dist/core/api-diagnostics.d.ts.map +1 -0
- package/dist/core/api-diagnostics.js +211 -0
- package/dist/core/api-diagnostics.js.map +1 -0
- package/dist/core/configuration.d.ts +12 -0
- package/dist/core/configuration.d.ts.map +1 -1
- package/dist/core/error-handler.d.ts +5 -1
- package/dist/core/error-handler.d.ts.map +1 -1
- package/dist/core/error-handler.js +45 -21
- package/dist/core/error-handler.js.map +1 -1
- package/dist/core/http-client.d.ts +33 -6
- package/dist/core/http-client.d.ts.map +1 -1
- package/dist/core/http-client.js +193 -31
- package/dist/core/http-client.js.map +1 -1
- package/dist/core/node-cookie-jar.d.ts +14 -0
- package/dist/core/node-cookie-jar.d.ts.map +1 -0
- package/dist/core/node-cookie-jar.js +58 -0
- package/dist/core/node-cookie-jar.js.map +1 -0
- package/dist/core/request-scheduler.d.ts +56 -0
- package/dist/core/request-scheduler.d.ts.map +1 -0
- package/dist/core/request-scheduler.js +176 -0
- package/dist/core/request-scheduler.js.map +1 -0
- package/dist/core/resilience.d.ts +10 -0
- package/dist/core/resilience.d.ts.map +1 -1
- package/dist/core/resilience.js +27 -0
- package/dist/core/resilience.js.map +1 -1
- package/dist/ecosystem/organization.model.d.ts +4 -4
- package/dist/ecosystem/organization.model.d.ts.map +1 -1
- package/dist/errors/error-codes.d.ts +3 -1
- package/dist/errors/error-codes.d.ts.map +1 -1
- package/dist/errors/error-codes.js +2 -0
- package/dist/errors/error-codes.js.map +1 -1
- package/dist/events/event-edition.model.d.ts +5 -0
- package/dist/events/event-edition.model.d.ts.map +1 -1
- package/dist/events/event.model.d.ts +5 -0
- package/dist/events/event.model.d.ts.map +1 -1
- package/dist/follows/follow.model.d.ts +1 -1
- package/dist/follows/follow.model.d.ts.map +1 -1
- package/dist/follows/follow.service.d.ts.map +1 -1
- package/dist/follows/follow.service.js +1 -0
- package/dist/follows/follow.service.js.map +1 -1
- package/dist/guilds/guild.model.d.ts +36 -0
- package/dist/guilds/guild.model.d.ts.map +1 -1
- package/dist/guilds/guild.service.d.ts +7 -1
- package/dist/guilds/guild.service.d.ts.map +1 -1
- package/dist/guilds/guild.service.js +52 -0
- package/dist/guilds/guild.service.js.map +1 -1
- package/dist/index.d.ts +54 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +74 -4
- package/dist/index.js.map +1 -1
- package/dist/memberships/membership.model.d.ts +34 -0
- package/dist/memberships/membership.model.d.ts.map +1 -0
- package/dist/memberships/membership.model.js +3 -0
- package/dist/memberships/membership.model.js.map +1 -0
- package/dist/memberships/membership.service.d.ts +22 -0
- package/dist/memberships/membership.service.d.ts.map +1 -0
- package/dist/memberships/membership.service.js +111 -0
- package/dist/memberships/membership.service.js.map +1 -0
- package/dist/missions/mission.model.d.ts +4 -4
- package/dist/missions/mission.model.d.ts.map +1 -1
- package/dist/missions/mission.schema.json +204 -0
- package/dist/missions/mission.service.d.ts +2 -2
- package/dist/missions/mission.service.d.ts.map +1 -1
- package/dist/missions/mission.service.js.map +1 -1
- package/dist/models/chat.model.d.ts +11 -1
- package/dist/models/chat.model.d.ts.map +1 -1
- package/dist/models/chat.model.js +4 -0
- package/dist/models/chat.model.js.map +1 -1
- package/dist/notifications/notification.service.d.ts.map +1 -1
- package/dist/notifications/notification.service.js +10 -2
- package/dist/notifications/notification.service.js.map +1 -1
- package/dist/profiles/person.model.d.ts +26 -26
- package/dist/profiles/person.model.d.ts.map +1 -1
- package/dist/profiles/profile.schema.json +269 -0
- package/dist/project/schemas.js +2 -1
- package/dist/project/schemas.js.map +1 -1
- package/dist/projects/project.service.d.ts +1 -1
- package/dist/projects/project.service.d.ts.map +1 -1
- package/dist/projects/project.service.js +2 -2
- package/dist/projects/project.service.js.map +1 -1
- package/dist/rewards/reward.model.d.ts +2 -2
- package/dist/rewards/reward.model.d.ts.map +1 -1
- package/dist/rewards/reward.service.d.ts +9 -0
- package/dist/rewards/reward.service.d.ts.map +1 -1
- package/dist/rewards/reward.service.js +32 -0
- package/dist/rewards/reward.service.js.map +1 -1
- package/dist/river/river.model.d.ts +25 -0
- package/dist/river/river.model.d.ts.map +1 -0
- package/dist/river/river.model.js +4 -0
- package/dist/river/river.model.js.map +1 -0
- package/dist/river/river.service.d.ts +13 -0
- package/dist/river/river.service.d.ts.map +1 -0
- package/dist/river/river.service.js +25 -0
- package/dist/river/river.service.js.map +1 -0
- package/dist/support/support.model.d.ts +6 -0
- package/dist/support/support.model.d.ts.map +1 -0
- package/dist/support/support.model.js +3 -0
- package/dist/support/support.model.js.map +1 -0
- package/dist/support/support.schema.json +25 -0
- package/dist/support/support.service.d.ts +11 -0
- package/dist/support/support.service.d.ts.map +1 -0
- package/dist/support/support.service.js +22 -0
- package/dist/support/support.service.js.map +1 -0
- package/dist/tasks/schemas.js +4 -3
- package/dist/tasks/schemas.js.map +1 -1
- package/dist/tasks/task.model.d.ts +40 -15
- package/dist/tasks/task.model.d.ts.map +1 -1
- package/dist/tasks/task.model.js +1 -1
- package/dist/tasks/task.model.js.map +1 -1
- package/dist/tasks/task.schema.json +780 -0
- package/dist/tasks/task.service.d.ts +108 -9
- package/dist/tasks/task.service.d.ts.map +1 -1
- package/dist/tasks/task.service.js +184 -47
- package/dist/tasks/task.service.js.map +1 -1
- package/dist/timezone/time.helper.d.ts +9 -0
- package/dist/timezone/time.helper.d.ts.map +1 -1
- package/dist/timezone/time.helper.js +31 -2
- package/dist/timezone/time.helper.js.map +1 -1
- package/dist/users/user.model.d.ts +2 -1
- package/dist/users/user.model.d.ts.map +1 -1
- package/dist/users/user.model.js.map +1 -1
- package/dist/users/user.schema.json +429 -0
- package/dist/users/user.service.d.ts +2 -2
- package/dist/users/user.service.d.ts.map +1 -1
- package/dist/users/user.service.js +29 -35
- package/dist/users/user.service.js.map +1 -1
- package/dist/utils/validation.utils.d.ts +0 -4
- package/dist/utils/validation.utils.d.ts.map +1 -1
- package/dist/utils/validation.utils.js +1 -11
- package/dist/utils/validation.utils.js.map +1 -1
- package/dist/wallet/wallet.model.d.ts +5 -0
- package/dist/wallet/wallet.model.d.ts.map +1 -1
- package/dist/wallet/wallet.service.d.ts +2 -1
- package/dist/wallet/wallet.service.d.ts.map +1 -1
- package/dist/wallet/wallet.service.js +9 -0
- package/dist/wallet/wallet.service.js.map +1 -1
- package/package.json +19 -6
|
@@ -1,75 +1,48 @@
|
|
|
1
|
-
import { AgentAccess, AgentResource
|
|
2
|
-
export type BrainType = 'yuri' | 'ollama';
|
|
3
|
-
/** @deprecated Use BrainType */
|
|
4
|
-
export type AgentType = BrainType;
|
|
1
|
+
import { AgentAccess, AgentResource } from './agent-resource';
|
|
5
2
|
export interface AgentPermission {
|
|
6
3
|
resource: AgentResource;
|
|
7
4
|
access: AgentAccess;
|
|
8
5
|
}
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
6
|
+
/**
|
|
7
|
+
* An AI agent is a first-class citizen that interacts with Biome over MCP. It
|
|
8
|
+
* has no "brain" of its own — that is an LLM Engine concern — and every agent
|
|
9
|
+
* has a provisioned principal user, so an API key can be issued for it.
|
|
10
|
+
*/
|
|
13
11
|
export interface Agent {
|
|
14
12
|
id?: number;
|
|
13
|
+
/** The partner (registrant) responsible for this agent. */
|
|
15
14
|
userId: number;
|
|
16
15
|
name: string;
|
|
17
16
|
description?: string | null;
|
|
18
|
-
brainType?: BrainType | null;
|
|
19
|
-
baseUrl?: string | null;
|
|
20
|
-
model?: string | null;
|
|
21
17
|
isActive: boolean;
|
|
22
|
-
|
|
23
|
-
canLogin: boolean;
|
|
24
|
-
canUseCli: boolean;
|
|
25
|
-
canUseMcp: boolean;
|
|
18
|
+
/** The principal `users` row this agent acts as (provisioned on create). */
|
|
26
19
|
agentUserId?: number | null;
|
|
27
|
-
|
|
20
|
+
avatarFileId?: number | null;
|
|
21
|
+
avatarUrl?: string | null;
|
|
28
22
|
createdAt?: Date | string;
|
|
29
23
|
updatedAt?: Date | string;
|
|
30
24
|
permissions?: AgentPermission[];
|
|
31
|
-
contactTargets?: AgentContactTarget[];
|
|
32
25
|
}
|
|
33
26
|
export interface CreateAgentRequest {
|
|
34
27
|
name: string;
|
|
35
28
|
description?: string;
|
|
36
|
-
brainType?: BrainType | null;
|
|
37
|
-
baseUrl?: string;
|
|
38
|
-
model?: string;
|
|
39
|
-
canLogin?: boolean;
|
|
40
|
-
canUseCli?: boolean;
|
|
41
|
-
canUseMcp?: boolean;
|
|
42
|
-
contactScope?: ContactScope;
|
|
43
|
-
agentEmail?: string;
|
|
44
29
|
}
|
|
45
30
|
export interface CreateAgentResponse {
|
|
46
31
|
id: number;
|
|
47
|
-
|
|
48
|
-
|
|
32
|
+
}
|
|
33
|
+
export interface ConnectionTokenResponse {
|
|
34
|
+
connectionToken: string;
|
|
49
35
|
}
|
|
50
36
|
export interface UpdateAgentRequest {
|
|
51
37
|
name?: string;
|
|
52
38
|
description?: string | null;
|
|
53
|
-
brainType?: BrainType | null;
|
|
54
|
-
baseUrl?: string | null;
|
|
55
|
-
model?: string | null;
|
|
56
39
|
isActive?: boolean;
|
|
57
|
-
canLogin?: boolean;
|
|
58
|
-
canUseCli?: boolean;
|
|
59
|
-
canUseMcp?: boolean;
|
|
60
|
-
contactScope?: ContactScope;
|
|
61
40
|
}
|
|
62
41
|
export interface AgentListResponse {
|
|
63
42
|
data: Agent[];
|
|
64
43
|
total: number;
|
|
65
44
|
}
|
|
66
|
-
export interface ResetAgentPasswordResponse {
|
|
67
|
-
agentPassword: string;
|
|
68
|
-
}
|
|
69
45
|
export interface SetPermissionsRequest {
|
|
70
46
|
permissions: AgentPermission[];
|
|
71
47
|
}
|
|
72
|
-
export interface SetContactTargetsRequest {
|
|
73
|
-
targetUserIds: number[];
|
|
74
|
-
}
|
|
75
48
|
//# sourceMappingURL=agent.model.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.model.d.ts","sourceRoot":"","sources":["../../src/agents/agent.model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"agent.model.d.ts","sourceRoot":"","sources":["../../src/agents/agent.model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAE9D,MAAM,WAAW,eAAe;IAC5B,QAAQ,EAAE,aAAa,CAAC;IACxB,MAAM,EAAE,WAAW,CAAC;CACvB;AAED;;;;GAIG;AACH,MAAM,WAAW,KAAK;IAClB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,2DAA2D;IAC3D,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,QAAQ,EAAE,OAAO,CAAC;IAClB,4EAA4E;IAC5E,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;IAE1B,WAAW,CAAC,EAAE,eAAe,EAAE,CAAC;CACnC;AAED,MAAM,WAAW,kBAAkB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,mBAAmB;IAChC,EAAE,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,uBAAuB;IACpC,eAAe,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,kBAAkB;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAC9B,IAAI,EAAE,KAAK,EAAE,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,qBAAqB;IAClC,WAAW,EAAE,eAAe,EAAE,CAAC;CAClC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { BiomeHttpClient } from '../core/http-client';
|
|
2
|
-
import { Agent, AgentListResponse, AgentPermission, CreateAgentRequest, CreateAgentResponse,
|
|
2
|
+
import { Agent, AgentListResponse, AgentPermission, CreateAgentRequest, CreateAgentResponse, UpdateAgentRequest } from './agent.model';
|
|
3
3
|
export declare class BiomeAgents {
|
|
4
4
|
private http;
|
|
5
5
|
constructor(http: BiomeHttpClient);
|
|
@@ -8,8 +8,14 @@ export declare class BiomeAgents {
|
|
|
8
8
|
create(data: CreateAgentRequest): Promise<CreateAgentResponse>;
|
|
9
9
|
update(id: number, data: UpdateAgentRequest): Promise<Agent>;
|
|
10
10
|
delete(id: number): Promise<void>;
|
|
11
|
-
resetPassword(id: number): Promise<ResetAgentPasswordResponse>;
|
|
12
11
|
setPermissions(id: number, permissions: AgentPermission[]): Promise<void>;
|
|
13
|
-
|
|
12
|
+
/** Upload (or replace) an agent's avatar. Only the agent's owner may call this. */
|
|
13
|
+
uploadAvatar(id: number, file: File): Promise<Agent>;
|
|
14
|
+
/** Remove an agent's avatar, reverting it to the default. */
|
|
15
|
+
removeAvatar(id: number): Promise<Agent>;
|
|
16
|
+
/** Generate a fresh MCP connection token; returns it (shown once). Invalidates any older token. */
|
|
17
|
+
generateConnectionToken(id: number): Promise<string>;
|
|
18
|
+
/** Revoke the agent's MCP connection token. */
|
|
19
|
+
revokeConnectionToken(id: number): Promise<void>;
|
|
14
20
|
}
|
|
15
21
|
//# sourceMappingURL=agent.service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.service.d.ts","sourceRoot":"","sources":["../../src/agents/agent.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAGtD,OAAO,EACH,KAAK,EACL,iBAAiB,EACjB,eAAe,
|
|
1
|
+
{"version":3,"file":"agent.service.d.ts","sourceRoot":"","sources":["../../src/agents/agent.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAGtD,OAAO,EACH,KAAK,EACL,iBAAiB,EACjB,eAAe,EAEf,kBAAkB,EAClB,mBAAmB,EAEnB,kBAAkB,EACrB,MAAM,eAAe,CAAC;AAEvB,qBAAa,WAAW;IACR,OAAO,CAAC,IAAI;gBAAJ,IAAI,EAAE,eAAe;IAEnC,IAAI,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAMlC,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAM/B,MAAM,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAM9D,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,KAAK,CAAC;IAM5D,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKjC,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAM/E,mFAAmF;IAC7E,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC;IAsB1D,6DAA6D;IACvD,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAM9C,mGAAmG;IAC7F,uBAAuB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAM1D,+CAA+C;IACzC,qBAAqB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAIzD"}
|
|
@@ -35,21 +35,50 @@ class BiomeAgents {
|
|
|
35
35
|
if (!response.isSuccess)
|
|
36
36
|
throw (0, error_handler_1.createSdkError)(response);
|
|
37
37
|
}
|
|
38
|
-
async
|
|
39
|
-
const
|
|
38
|
+
async setPermissions(id, permissions) {
|
|
39
|
+
const body = { permissions };
|
|
40
|
+
const response = await this.http.put(`/agent/${id}/permissions`, body);
|
|
41
|
+
if (!response.isSuccess)
|
|
42
|
+
throw (0, error_handler_1.createSdkError)(response);
|
|
43
|
+
}
|
|
44
|
+
/** Upload (or replace) an agent's avatar. Only the agent's owner may call this. */
|
|
45
|
+
async uploadAvatar(id, file) {
|
|
46
|
+
const validTypes = ['image/jpeg', 'image/jpg', 'image/png', 'image/webp'];
|
|
47
|
+
if (!validTypes.includes(file.type)) {
|
|
48
|
+
throw (0, error_handler_1.createSdkError)(new Error('Please upload a JPG, PNG, or WebP image.'), 'File validation failed');
|
|
49
|
+
}
|
|
50
|
+
if (file.size > 5 * 1024 * 1024) {
|
|
51
|
+
throw (0, error_handler_1.createSdkError)(new Error('File size too large. Please upload an image smaller than 5MB.'), 'File validation failed');
|
|
52
|
+
}
|
|
53
|
+
try {
|
|
54
|
+
const formData = new FormData();
|
|
55
|
+
formData.append('avatar', file);
|
|
56
|
+
const response = await this.http.post(`/agent/${id}/avatar`, formData);
|
|
57
|
+
if (!response.isSuccess)
|
|
58
|
+
throw (0, error_handler_1.createSdkError)(response);
|
|
59
|
+
return response.payload;
|
|
60
|
+
}
|
|
61
|
+
catch (error) {
|
|
62
|
+
throw (0, error_handler_1.createSdkError)(error, 'Failed to upload agent avatar');
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
/** Remove an agent's avatar, reverting it to the default. */
|
|
66
|
+
async removeAvatar(id) {
|
|
67
|
+
const response = await this.http.delete(`/agent/${id}/avatar`);
|
|
40
68
|
if (!response.isSuccess)
|
|
41
69
|
throw (0, error_handler_1.createSdkError)(response);
|
|
42
70
|
return response.payload;
|
|
43
71
|
}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
const response = await this.http.
|
|
72
|
+
/** Generate a fresh MCP connection token; returns it (shown once). Invalidates any older token. */
|
|
73
|
+
async generateConnectionToken(id) {
|
|
74
|
+
const response = await this.http.post(`/agent/${id}/connection-token`, {});
|
|
47
75
|
if (!response.isSuccess)
|
|
48
76
|
throw (0, error_handler_1.createSdkError)(response);
|
|
77
|
+
return response.payload.connectionToken;
|
|
49
78
|
}
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
const response = await this.http.
|
|
79
|
+
/** Revoke the agent's MCP connection token. */
|
|
80
|
+
async revokeConnectionToken(id) {
|
|
81
|
+
const response = await this.http.delete(`/agent/${id}/connection-token`);
|
|
53
82
|
if (!response.isSuccess)
|
|
54
83
|
throw (0, error_handler_1.createSdkError)(response);
|
|
55
84
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.service.js","sourceRoot":"","sources":["../../src/agents/agent.service.ts"],"names":[],"mappings":";;;AACA,yDAAuD;
|
|
1
|
+
{"version":3,"file":"agent.service.js","sourceRoot":"","sources":["../../src/agents/agent.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { BiomeHttpClient } from "../core/http-client";
|
|
2
|
+
import { AgentPermission } from "../agents/agent.model";
|
|
2
3
|
export interface AiDialogPhrase {
|
|
3
4
|
message: string;
|
|
4
5
|
history?: Array<{
|
|
@@ -7,17 +8,50 @@ export interface AiDialogPhrase {
|
|
|
7
8
|
}>;
|
|
8
9
|
context?: Record<string, unknown>;
|
|
9
10
|
}
|
|
11
|
+
export interface YuriSettings {
|
|
12
|
+
isEnabled: boolean;
|
|
13
|
+
permissions: AgentPermission[];
|
|
14
|
+
}
|
|
10
15
|
export declare class BiomeYuri {
|
|
11
16
|
private readonly http;
|
|
12
17
|
constructor(http: BiomeHttpClient);
|
|
13
18
|
/**
|
|
14
|
-
*
|
|
15
|
-
|
|
19
|
+
* Get the current user's Yuri settings (enabled state + granted tool permissions).
|
|
20
|
+
*/
|
|
21
|
+
getSettings(): Promise<YuriSettings>;
|
|
22
|
+
/**
|
|
23
|
+
* Enable or disable Yuri for the current user.
|
|
24
|
+
*
|
|
25
|
+
* The backend responds 204 No Content on success (no JSON body to check
|
|
26
|
+
* `isSuccess` on) — axios resolving at all means the request succeeded;
|
|
27
|
+
* a non-2xx status rejects the promise instead.
|
|
16
28
|
*/
|
|
17
|
-
|
|
29
|
+
setEnabled(isEnabled: boolean): Promise<void>;
|
|
18
30
|
/**
|
|
19
|
-
*
|
|
31
|
+
* Replace the current user's granted tool permissions for Yuri.
|
|
32
|
+
* See setEnabled() for why this doesn't check an `isSuccess` field.
|
|
20
33
|
*/
|
|
21
|
-
|
|
34
|
+
setPermissions(permissions: AgentPermission[]): Promise<void>;
|
|
35
|
+
/**
|
|
36
|
+
* Send a message to Yuri AI and get streaming response via SSE.
|
|
37
|
+
*
|
|
38
|
+
* This uses a raw `fetch()` (needed for streaming), which never goes
|
|
39
|
+
* through `BiomeHttpClient`'s axios interceptors -- so it's invisible to
|
|
40
|
+
* the shared `RequestScheduler` unless we acquire/release a slot for it
|
|
41
|
+
* manually here. Without this, a long-lived Yuri stream (up to 90s on the
|
|
42
|
+
* FE's idle timeout) silently occupies a real browser connection while
|
|
43
|
+
* the scheduler believes it still has 4 free slots to hand out, which can
|
|
44
|
+
* exceed the browser's ~6-connections-per-origin ceiling alongside a chat
|
|
45
|
+
* SSE connection. See sst/guidelines/http-concurrency.md.
|
|
46
|
+
*
|
|
47
|
+
* The caller MUST call `release()` once the stream is fully consumed
|
|
48
|
+
* (complete, errored, or aborted) -- releasing right after `fetch()`
|
|
49
|
+
* resolves headers would defeat the purpose, since the connection stays
|
|
50
|
+
* open for the whole streaming duration.
|
|
51
|
+
*/
|
|
52
|
+
talk(userAffirmation: AiDialogPhrase): Promise<{
|
|
53
|
+
response: Response;
|
|
54
|
+
release: () => void;
|
|
55
|
+
}>;
|
|
22
56
|
}
|
|
23
57
|
//# sourceMappingURL=yuri.service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"yuri.service.d.ts","sourceRoot":"","sources":["../../src/ai/yuri.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAGtD,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,KAAK,CAAC;QACd,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;QAC3B,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC,CAAC;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAkB;gBAE3B,IAAI,EAAE,eAAe;IAIjC;;;OAGG;IACG,IAAI,CAAC,eAAe,EAAE,cAAc,GAAG,OAAO,CAAC,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"yuri.service.d.ts","sourceRoot":"","sources":["../../src/ai/yuri.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAGtD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAGxD,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,KAAK,CAAC;QACd,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;QAC3B,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC,CAAC;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,eAAe,EAAE,CAAC;CAChC;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAkB;gBAE3B,IAAI,EAAE,eAAe;IAIjC;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,YAAY,CAAC;IAQ1C;;;;;;OAMG;IACG,UAAU,CAAC,SAAS,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAInD;;;OAGG;IACG,cAAc,CAAC,WAAW,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAInE;;;;;;;;;;;;;;;;OAgBG;IACG,IAAI,CAAC,eAAe,EAAE,cAAc,GAAG,OAAO,CAAC;QAAE,QAAQ,EAAE,QAAQ,CAAC;QAAC,OAAO,EAAE,MAAM,IAAI,CAAA;KAAE,CAAC;CA6ClG"}
|
package/dist/ai/yuri.service.js
CHANGED
|
@@ -2,20 +2,72 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.BiomeYuri = void 0;
|
|
4
4
|
const error_handler_1 = require("../core/error-handler");
|
|
5
|
+
const request_scheduler_1 = require("../core/request-scheduler");
|
|
5
6
|
class BiomeYuri {
|
|
6
7
|
constructor(http) {
|
|
7
8
|
this.http = http;
|
|
8
9
|
}
|
|
9
10
|
/**
|
|
10
|
-
*
|
|
11
|
-
|
|
11
|
+
* Get the current user's Yuri settings (enabled state + granted tool permissions).
|
|
12
|
+
*/
|
|
13
|
+
async getSettings() {
|
|
14
|
+
const response = await this.http.get('/yuri/settings');
|
|
15
|
+
if (!response.isSuccess) {
|
|
16
|
+
throw (0, error_handler_1.createSdkError)(new Error(response.message || 'Failed to get Yuri settings'), 'Failed to get Yuri settings');
|
|
17
|
+
}
|
|
18
|
+
return response.payload;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Enable or disable Yuri for the current user.
|
|
22
|
+
*
|
|
23
|
+
* The backend responds 204 No Content on success (no JSON body to check
|
|
24
|
+
* `isSuccess` on) — axios resolving at all means the request succeeded;
|
|
25
|
+
* a non-2xx status rejects the promise instead.
|
|
26
|
+
*/
|
|
27
|
+
async setEnabled(isEnabled) {
|
|
28
|
+
await this.http.patch('/yuri/settings', { isEnabled });
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Replace the current user's granted tool permissions for Yuri.
|
|
32
|
+
* See setEnabled() for why this doesn't check an `isSuccess` field.
|
|
33
|
+
*/
|
|
34
|
+
async setPermissions(permissions) {
|
|
35
|
+
await this.http.put('/yuri/settings/permissions', { permissions });
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Send a message to Yuri AI and get streaming response via SSE.
|
|
39
|
+
*
|
|
40
|
+
* This uses a raw `fetch()` (needed for streaming), which never goes
|
|
41
|
+
* through `BiomeHttpClient`'s axios interceptors -- so it's invisible to
|
|
42
|
+
* the shared `RequestScheduler` unless we acquire/release a slot for it
|
|
43
|
+
* manually here. Without this, a long-lived Yuri stream (up to 90s on the
|
|
44
|
+
* FE's idle timeout) silently occupies a real browser connection while
|
|
45
|
+
* the scheduler believes it still has 4 free slots to hand out, which can
|
|
46
|
+
* exceed the browser's ~6-connections-per-origin ceiling alongside a chat
|
|
47
|
+
* SSE connection. See sst/guidelines/http-concurrency.md.
|
|
48
|
+
*
|
|
49
|
+
* The caller MUST call `release()` once the stream is fully consumed
|
|
50
|
+
* (complete, errored, or aborted) -- releasing right after `fetch()`
|
|
51
|
+
* resolves headers would defeat the purpose, since the connection stays
|
|
52
|
+
* open for the whole streaming duration.
|
|
12
53
|
*/
|
|
13
54
|
async talk(userAffirmation) {
|
|
55
|
+
const scheduler = (0, request_scheduler_1.getSharedRequestScheduler)();
|
|
56
|
+
await scheduler.acquire("high", 45000);
|
|
57
|
+
let released = false;
|
|
58
|
+
const release = () => {
|
|
59
|
+
if (released)
|
|
60
|
+
return;
|
|
61
|
+
released = true;
|
|
62
|
+
scheduler.release();
|
|
63
|
+
};
|
|
14
64
|
try {
|
|
15
65
|
const baseUrl = this.http.baseURL;
|
|
16
|
-
const url = `${baseUrl}/
|
|
17
|
-
//
|
|
18
|
-
|
|
66
|
+
const url = `${baseUrl}/yuri/talk`;
|
|
67
|
+
// Shared client-aware lookup: works from a stored/interceptor-derived token
|
|
68
|
+
// or the browser cookie jar, and (unlike reading document.cookie directly)
|
|
69
|
+
// also resolves correctly for Node callers such as biome-mcp.
|
|
70
|
+
const xsrfToken = this.http.getCsrfToken();
|
|
19
71
|
const headers = {
|
|
20
72
|
"Content-Type": "application/json",
|
|
21
73
|
Accept: "text/event-stream",
|
|
@@ -29,40 +81,18 @@ class BiomeYuri {
|
|
|
29
81
|
headers,
|
|
30
82
|
body: JSON.stringify(userAffirmation),
|
|
31
83
|
});
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
84
|
+
// Do not throw on a non-ok response here: this would discard the
|
|
85
|
+
// response body before it's ever read, losing the backend's specific
|
|
86
|
+
// categorized error message (timeout vs unavailable vs internal). The
|
|
87
|
+
// caller already has correct logic to read and parse that body on
|
|
88
|
+
// `!response.ok` -- just hand it the response.
|
|
89
|
+
return { response, release };
|
|
36
90
|
}
|
|
37
91
|
catch (error) {
|
|
92
|
+
release();
|
|
38
93
|
throw (0, error_handler_1.createSdkError)(error, "Failed to talk to Yuri");
|
|
39
94
|
}
|
|
40
95
|
}
|
|
41
|
-
/**
|
|
42
|
-
* Read CSRF token from cookie
|
|
43
|
-
*/
|
|
44
|
-
getCookie(name) {
|
|
45
|
-
if (typeof document === "undefined") {
|
|
46
|
-
return null;
|
|
47
|
-
}
|
|
48
|
-
const nameEQ = name + "=";
|
|
49
|
-
const ca = document.cookie.split(";");
|
|
50
|
-
for (const element of ca) {
|
|
51
|
-
let c = element;
|
|
52
|
-
while (c.charAt(0) === " ")
|
|
53
|
-
c = c.substring(1, c.length);
|
|
54
|
-
if (c.indexOf(nameEQ) === 0) {
|
|
55
|
-
const rawValue = c.substring(nameEQ.length, c.length);
|
|
56
|
-
try {
|
|
57
|
-
return decodeURIComponent(rawValue);
|
|
58
|
-
}
|
|
59
|
-
catch {
|
|
60
|
-
return rawValue;
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
return null;
|
|
65
|
-
}
|
|
66
96
|
}
|
|
67
97
|
exports.BiomeYuri = BiomeYuri;
|
|
68
98
|
//# sourceMappingURL=yuri.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"yuri.service.js","sourceRoot":"","sources":["../../src/ai/yuri.service.ts"],"names":[],"mappings":";;;AACA,yDAAuD;
|
|
1
|
+
{"version":3,"file":"yuri.service.js","sourceRoot":"","sources":["../../src/ai/yuri.service.ts"],"names":[],"mappings":";;;AACA,yDAAuD;AAGvD,iEAAsE;AAgBtE,MAAa,SAAS;IAGpB,YAAY,IAAqB;QAC/B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW;QACf,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAA4B,gBAAgB,CAAC,CAAC;QAClF,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;YACxB,MAAM,IAAA,8BAAc,EAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,IAAI,6BAA6B,CAAC,EAAE,6BAA6B,CAAC,CAAC;QACpH,CAAC;QACD,OAAO,QAAQ,CAAC,OAAO,CAAC;IAC1B,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,UAAU,CAAC,SAAkB;QACjC,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAO,gBAAgB,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;IAC/D,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,cAAc,CAAC,WAA8B;QACjD,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAO,4BAA4B,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;IAC3E,CAAC;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,KAAK,CAAC,IAAI,CAAC,eAA+B;QACxC,MAAM,SAAS,GAAG,IAAA,6CAAyB,GAAE,CAAC;QAC9C,MAAM,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,KAAM,CAAC,CAAC;QACxC,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,IAAI,QAAQ;gBAAE,OAAO;YACrB,QAAQ,GAAG,IAAI,CAAC;YAChB,SAAS,CAAC,OAAO,EAAE,CAAC;QACtB,CAAC,CAAC;QAEF,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;YAClC,MAAM,GAAG,GAAG,GAAG,OAAO,YAAY,CAAC;YAEnC,4EAA4E;YAC5E,2EAA2E;YAC3E,8DAA8D;YAC9D,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YAC3C,MAAM,OAAO,GAA2B;gBACtC,cAAc,EAAE,kBAAkB;gBAClC,MAAM,EAAE,mBAAmB;aAC5B,CAAC;YAEF,IAAI,SAAS,EAAE,CAAC;gBACd,OAAO,CAAC,cAAc,CAAC,GAAG,SAAS,CAAC;YACtC,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;gBAChC,MAAM,EAAE,MAAM;gBACd,WAAW,EAAE,SAAS;gBACtB,OAAO;gBACP,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC;aACtC,CAAC,CAAC;YAEH,iEAAiE;YACjE,qEAAqE;YACrE,sEAAsE;YACtE,kEAAkE;YAClE,+CAA+C;YAC/C,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;QAC/B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,EAAE,CAAC;YACV,MAAM,IAAA,8BAAc,EAAC,KAAK,EAAE,wBAAwB,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;CACF;AAnGD,8BAmGC"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { Problem } from './problem.model';
|
|
2
|
+
export interface Nugget {
|
|
3
|
+
id?: number;
|
|
4
|
+
title: string;
|
|
5
|
+
description: string;
|
|
6
|
+
applicability?: string | null;
|
|
7
|
+
source?: string | null;
|
|
8
|
+
reference?: string | null;
|
|
9
|
+
status: 'draft' | 'published';
|
|
10
|
+
authorType: 'human' | 'ai';
|
|
11
|
+
tags: string[];
|
|
12
|
+
authorUsername?: string;
|
|
13
|
+
createdBy: number;
|
|
14
|
+
createdAt: Date;
|
|
15
|
+
updatedAt: Date;
|
|
16
|
+
}
|
|
17
|
+
export interface NuggetListParams {
|
|
18
|
+
page?: number;
|
|
19
|
+
limit?: number;
|
|
20
|
+
status?: 'draft' | 'published';
|
|
21
|
+
tag?: string;
|
|
22
|
+
}
|
|
23
|
+
export interface NuggetListResponse {
|
|
24
|
+
nuggets: Nugget[];
|
|
25
|
+
total: number;
|
|
26
|
+
page: number;
|
|
27
|
+
limit: number;
|
|
28
|
+
}
|
|
29
|
+
export interface CreateNuggetRequest {
|
|
30
|
+
title: string;
|
|
31
|
+
description: string;
|
|
32
|
+
applicability?: string;
|
|
33
|
+
source?: string;
|
|
34
|
+
reference?: string;
|
|
35
|
+
status?: 'draft' | 'published';
|
|
36
|
+
authorType?: 'human' | 'ai';
|
|
37
|
+
tags?: string[];
|
|
38
|
+
}
|
|
39
|
+
export interface UpdateNuggetRequest {
|
|
40
|
+
title?: string;
|
|
41
|
+
description?: string;
|
|
42
|
+
applicability?: string | null;
|
|
43
|
+
source?: string | null;
|
|
44
|
+
reference?: string | null;
|
|
45
|
+
status?: 'draft' | 'published';
|
|
46
|
+
tags?: string[];
|
|
47
|
+
}
|
|
48
|
+
export declare const NUGGET_RELATION_TYPES: readonly ["prerequisite_of", "builds_on", "related_to", "contradicts", "example_of"];
|
|
49
|
+
export type NuggetRelationType = (typeof NUGGET_RELATION_TYPES)[number];
|
|
50
|
+
export interface NuggetRelation {
|
|
51
|
+
id: number;
|
|
52
|
+
fromNuggetId: number;
|
|
53
|
+
toNuggetId: number;
|
|
54
|
+
relationType: NuggetRelationType;
|
|
55
|
+
createdAt: Date;
|
|
56
|
+
}
|
|
57
|
+
export interface CreateNuggetRelationRequest {
|
|
58
|
+
toNuggetId: number;
|
|
59
|
+
relationType: NuggetRelationType;
|
|
60
|
+
}
|
|
61
|
+
export interface NuggetProblemLink {
|
|
62
|
+
id: number;
|
|
63
|
+
nuggetId: number;
|
|
64
|
+
problemId: number;
|
|
65
|
+
relevance?: number | null;
|
|
66
|
+
createdAt: Date;
|
|
67
|
+
}
|
|
68
|
+
export interface CreateNuggetProblemLinkRequest {
|
|
69
|
+
problemId: number;
|
|
70
|
+
relevance?: number;
|
|
71
|
+
}
|
|
72
|
+
/** "Teach Me Something" response -- a random published nugget plus the problems it solves. */
|
|
73
|
+
export interface TeachMeSomethingResponse {
|
|
74
|
+
nugget: Nugget;
|
|
75
|
+
problems: Problem[];
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=nugget.model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nugget.model.d.ts","sourceRoot":"","sources":["../../src/alexandria/nugget.model.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NUGGET_RELATION_TYPES = void 0;
|
|
4
|
+
// Seed vocabulary -- kept in sync with biome-be's nugget.model.ts by hand
|
|
5
|
+
// (relationType is a plain string column on the BE, not a shared enum type).
|
|
6
|
+
exports.NUGGET_RELATION_TYPES = ['prerequisite_of', 'builds_on', 'related_to', 'contradicts', 'example_of'];
|
|
7
|
+
//# sourceMappingURL=nugget.model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nugget.model.js","sourceRoot":"","sources":["../../src/alexandria/nugget.model.ts"],"names":[],"mappings":";;;AAqDA,0EAA0E;AAC1E,6EAA6E;AAChE,QAAA,qBAAqB,GAAG,CAAC,iBAAiB,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,CAAU,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { BiomeHttpClient } from '../core/http-client';
|
|
2
|
+
import { Nugget, NuggetListParams, NuggetListResponse, CreateNuggetRequest, UpdateNuggetRequest, NuggetRelation, CreateNuggetRelationRequest, NuggetProblemLink, CreateNuggetProblemLinkRequest, TeachMeSomethingResponse } from './nugget.model';
|
|
3
|
+
import { Problem } from './problem.model';
|
|
4
|
+
export declare class KnowledgeNugget {
|
|
5
|
+
private http;
|
|
6
|
+
constructor(http: BiomeHttpClient);
|
|
7
|
+
list(params?: NuggetListParams): Promise<NuggetListResponse>;
|
|
8
|
+
/** "Teach Me Something" -- a random published nugget plus the problems it solves. */
|
|
9
|
+
random(): Promise<TeachMeSomethingResponse>;
|
|
10
|
+
get(id: number): Promise<Nugget>;
|
|
11
|
+
create(data: CreateNuggetRequest): Promise<Nugget>;
|
|
12
|
+
update(id: number, data: UpdateNuggetRequest): Promise<Nugget>;
|
|
13
|
+
delete(id: number): Promise<void>;
|
|
14
|
+
listRelations(nuggetId: number): Promise<NuggetRelation[]>;
|
|
15
|
+
addRelation(nuggetId: number, data: CreateNuggetRelationRequest): Promise<NuggetRelation>;
|
|
16
|
+
deleteRelation(relationId: number): Promise<void>;
|
|
17
|
+
listLinkedProblems(nuggetId: number): Promise<Problem[]>;
|
|
18
|
+
linkProblem(nuggetId: number, data: CreateNuggetProblemLinkRequest): Promise<NuggetProblemLink>;
|
|
19
|
+
unlinkProblem(linkId: number): Promise<void>;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=nugget.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nugget.service.d.ts","sourceRoot":"","sources":["../../src/alexandria/nugget.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAGtD,OAAO,EACH,MAAM,EACN,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,cAAc,EACd,2BAA2B,EAC3B,iBAAiB,EACjB,8BAA8B,EAC9B,wBAAwB,EAC3B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C,qBAAa,eAAe;IACZ,OAAO,CAAC,IAAI;gBAAJ,IAAI,EAAE,eAAe;IAEnC,IAAI,CAAC,MAAM,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAgBlE,qFAAqF;IAC/E,MAAM,IAAI,OAAO,CAAC,wBAAwB,CAAC;IAS3C,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAShC,MAAM,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC;IASlD,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC;IAS9D,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQjC,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAS1D,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,2BAA2B,GAAG,OAAO,CAAC,cAAc,CAAC;IASzF,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQjD,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IASxD,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,8BAA8B,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAS/F,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAOrD"}
|