@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.
Files changed (227) hide show
  1. package/dist/admin/admin.model.d.ts +70 -0
  2. package/dist/admin/admin.model.d.ts.map +1 -1
  3. package/dist/admin/admin.schema.json +339 -0
  4. package/dist/admin/admin.service.d.ts +9 -1
  5. package/dist/admin/admin.service.d.ts.map +1 -1
  6. package/dist/admin/admin.service.js +79 -4
  7. package/dist/admin/admin.service.js.map +1 -1
  8. package/dist/agents/agent-identity.d.ts +19 -0
  9. package/dist/agents/agent-identity.d.ts.map +1 -0
  10. package/dist/agents/agent-identity.js +36 -0
  11. package/dist/agents/agent-identity.js.map +1 -0
  12. package/dist/agents/agent-resource.d.ts +0 -1
  13. package/dist/agents/agent-resource.d.ts.map +1 -1
  14. package/dist/agents/agent.model.d.ts +13 -40
  15. package/dist/agents/agent.model.d.ts.map +1 -1
  16. package/dist/agents/agent.service.d.ts +9 -3
  17. package/dist/agents/agent.service.d.ts.map +1 -1
  18. package/dist/agents/agent.service.js +37 -8
  19. package/dist/agents/agent.service.js.map +1 -1
  20. package/dist/ai/yuri.service.d.ts +39 -5
  21. package/dist/ai/yuri.service.d.ts.map +1 -1
  22. package/dist/ai/yuri.service.js +64 -34
  23. package/dist/ai/yuri.service.js.map +1 -1
  24. package/dist/alexandria/nugget.model.d.ts +77 -0
  25. package/dist/alexandria/nugget.model.d.ts.map +1 -0
  26. package/dist/alexandria/nugget.model.js +7 -0
  27. package/dist/alexandria/nugget.model.js.map +1 -0
  28. package/dist/alexandria/nugget.service.d.ts +21 -0
  29. package/dist/alexandria/nugget.service.d.ts.map +1 -0
  30. package/dist/alexandria/nugget.service.js +127 -0
  31. package/dist/alexandria/nugget.service.js.map +1 -0
  32. package/dist/alexandria/problem.model.d.ts +48 -0
  33. package/dist/alexandria/problem.model.d.ts.map +1 -0
  34. package/dist/alexandria/problem.model.js +7 -0
  35. package/dist/alexandria/problem.model.js.map +1 -0
  36. package/dist/alexandria/problem.service.d.ts +17 -0
  37. package/dist/alexandria/problem.service.d.ts.map +1 -0
  38. package/dist/alexandria/problem.service.js +98 -0
  39. package/dist/alexandria/problem.service.js.map +1 -0
  40. package/dist/alexandria/progress.model.d.ts +19 -0
  41. package/dist/alexandria/progress.model.d.ts.map +1 -0
  42. package/dist/alexandria/progress.model.js +3 -0
  43. package/dist/alexandria/progress.model.js.map +1 -0
  44. package/dist/alexandria/progress.service.d.ts +10 -0
  45. package/dist/alexandria/progress.service.d.ts.map +1 -0
  46. package/dist/alexandria/progress.service.js +38 -0
  47. package/dist/alexandria/progress.service.js.map +1 -0
  48. package/dist/api-keys/api-key.model.d.ts +30 -0
  49. package/dist/api-keys/api-key.model.d.ts.map +1 -0
  50. package/dist/api-keys/api-key.model.js +3 -0
  51. package/dist/api-keys/api-key.model.js.map +1 -0
  52. package/dist/api-keys/api-key.service.d.ts +16 -0
  53. package/dist/api-keys/api-key.service.d.ts.map +1 -0
  54. package/dist/api-keys/api-key.service.js +34 -0
  55. package/dist/api-keys/api-key.service.js.map +1 -0
  56. package/dist/auth/auth.schema.json +106 -0
  57. package/dist/auth/auth.service.d.ts +8 -1
  58. package/dist/auth/auth.service.d.ts.map +1 -1
  59. package/dist/auth/auth.service.js +23 -10
  60. package/dist/auth/auth.service.js.map +1 -1
  61. package/dist/chat/chat.service.d.ts.map +1 -1
  62. package/dist/chat/chat.service.js +60 -68
  63. package/dist/chat/chat.service.js.map +1 -1
  64. package/dist/circles/circle.model.d.ts +25 -0
  65. package/dist/circles/circle.model.d.ts.map +1 -0
  66. package/dist/circles/circle.model.js +3 -0
  67. package/dist/circles/circle.model.js.map +1 -0
  68. package/dist/circles/circle.schema.json +332 -0
  69. package/dist/circles/circle.service.d.ts +14 -0
  70. package/dist/circles/circle.service.d.ts.map +1 -0
  71. package/dist/circles/circle.service.js +50 -0
  72. package/dist/circles/circle.service.js.map +1 -0
  73. package/dist/communities/community.model.d.ts +72 -0
  74. package/dist/communities/community.model.d.ts.map +1 -0
  75. package/dist/communities/community.model.js +3 -0
  76. package/dist/communities/community.model.js.map +1 -0
  77. package/dist/communities/community.service.d.ts +26 -0
  78. package/dist/communities/community.service.d.ts.map +1 -0
  79. package/dist/communities/community.service.js +140 -0
  80. package/dist/communities/community.service.js.map +1 -0
  81. package/dist/contacts/contact.model.d.ts +97 -0
  82. package/dist/contacts/contact.model.d.ts.map +1 -0
  83. package/dist/contacts/contact.model.js +3 -0
  84. package/dist/contacts/contact.model.js.map +1 -0
  85. package/dist/contacts/contact.schema.json +312 -0
  86. package/dist/contacts/contact.service.d.ts +28 -0
  87. package/dist/contacts/contact.service.d.ts.map +1 -0
  88. package/dist/contacts/contact.service.js +109 -0
  89. package/dist/contacts/contact.service.js.map +1 -0
  90. package/dist/core/api-diagnostics.d.ts +91 -0
  91. package/dist/core/api-diagnostics.d.ts.map +1 -0
  92. package/dist/core/api-diagnostics.js +211 -0
  93. package/dist/core/api-diagnostics.js.map +1 -0
  94. package/dist/core/configuration.d.ts +12 -0
  95. package/dist/core/configuration.d.ts.map +1 -1
  96. package/dist/core/error-handler.d.ts +5 -1
  97. package/dist/core/error-handler.d.ts.map +1 -1
  98. package/dist/core/error-handler.js +45 -21
  99. package/dist/core/error-handler.js.map +1 -1
  100. package/dist/core/http-client.d.ts +33 -6
  101. package/dist/core/http-client.d.ts.map +1 -1
  102. package/dist/core/http-client.js +193 -31
  103. package/dist/core/http-client.js.map +1 -1
  104. package/dist/core/node-cookie-jar.d.ts +14 -0
  105. package/dist/core/node-cookie-jar.d.ts.map +1 -0
  106. package/dist/core/node-cookie-jar.js +58 -0
  107. package/dist/core/node-cookie-jar.js.map +1 -0
  108. package/dist/core/request-scheduler.d.ts +56 -0
  109. package/dist/core/request-scheduler.d.ts.map +1 -0
  110. package/dist/core/request-scheduler.js +176 -0
  111. package/dist/core/request-scheduler.js.map +1 -0
  112. package/dist/core/resilience.d.ts +10 -0
  113. package/dist/core/resilience.d.ts.map +1 -1
  114. package/dist/core/resilience.js +27 -0
  115. package/dist/core/resilience.js.map +1 -1
  116. package/dist/ecosystem/organization.model.d.ts +4 -4
  117. package/dist/ecosystem/organization.model.d.ts.map +1 -1
  118. package/dist/errors/error-codes.d.ts +3 -1
  119. package/dist/errors/error-codes.d.ts.map +1 -1
  120. package/dist/errors/error-codes.js +2 -0
  121. package/dist/errors/error-codes.js.map +1 -1
  122. package/dist/events/event-edition.model.d.ts +5 -0
  123. package/dist/events/event-edition.model.d.ts.map +1 -1
  124. package/dist/events/event.model.d.ts +5 -0
  125. package/dist/events/event.model.d.ts.map +1 -1
  126. package/dist/follows/follow.model.d.ts +1 -1
  127. package/dist/follows/follow.model.d.ts.map +1 -1
  128. package/dist/follows/follow.service.d.ts.map +1 -1
  129. package/dist/follows/follow.service.js +1 -0
  130. package/dist/follows/follow.service.js.map +1 -1
  131. package/dist/guilds/guild.model.d.ts +36 -0
  132. package/dist/guilds/guild.model.d.ts.map +1 -1
  133. package/dist/guilds/guild.service.d.ts +7 -1
  134. package/dist/guilds/guild.service.d.ts.map +1 -1
  135. package/dist/guilds/guild.service.js +52 -0
  136. package/dist/guilds/guild.service.js.map +1 -1
  137. package/dist/index.d.ts +54 -6
  138. package/dist/index.d.ts.map +1 -1
  139. package/dist/index.js +74 -4
  140. package/dist/index.js.map +1 -1
  141. package/dist/memberships/membership.model.d.ts +34 -0
  142. package/dist/memberships/membership.model.d.ts.map +1 -0
  143. package/dist/memberships/membership.model.js +3 -0
  144. package/dist/memberships/membership.model.js.map +1 -0
  145. package/dist/memberships/membership.service.d.ts +22 -0
  146. package/dist/memberships/membership.service.d.ts.map +1 -0
  147. package/dist/memberships/membership.service.js +111 -0
  148. package/dist/memberships/membership.service.js.map +1 -0
  149. package/dist/missions/mission.model.d.ts +4 -4
  150. package/dist/missions/mission.model.d.ts.map +1 -1
  151. package/dist/missions/mission.schema.json +204 -0
  152. package/dist/missions/mission.service.d.ts +2 -2
  153. package/dist/missions/mission.service.d.ts.map +1 -1
  154. package/dist/missions/mission.service.js.map +1 -1
  155. package/dist/models/chat.model.d.ts +11 -1
  156. package/dist/models/chat.model.d.ts.map +1 -1
  157. package/dist/models/chat.model.js +4 -0
  158. package/dist/models/chat.model.js.map +1 -1
  159. package/dist/notifications/notification.service.d.ts.map +1 -1
  160. package/dist/notifications/notification.service.js +10 -2
  161. package/dist/notifications/notification.service.js.map +1 -1
  162. package/dist/profiles/person.model.d.ts +26 -26
  163. package/dist/profiles/person.model.d.ts.map +1 -1
  164. package/dist/profiles/profile.schema.json +269 -0
  165. package/dist/project/schemas.js +2 -1
  166. package/dist/project/schemas.js.map +1 -1
  167. package/dist/projects/project.service.d.ts +1 -1
  168. package/dist/projects/project.service.d.ts.map +1 -1
  169. package/dist/projects/project.service.js +2 -2
  170. package/dist/projects/project.service.js.map +1 -1
  171. package/dist/rewards/reward.model.d.ts +2 -2
  172. package/dist/rewards/reward.model.d.ts.map +1 -1
  173. package/dist/rewards/reward.service.d.ts +9 -0
  174. package/dist/rewards/reward.service.d.ts.map +1 -1
  175. package/dist/rewards/reward.service.js +32 -0
  176. package/dist/rewards/reward.service.js.map +1 -1
  177. package/dist/river/river.model.d.ts +25 -0
  178. package/dist/river/river.model.d.ts.map +1 -0
  179. package/dist/river/river.model.js +4 -0
  180. package/dist/river/river.model.js.map +1 -0
  181. package/dist/river/river.service.d.ts +13 -0
  182. package/dist/river/river.service.d.ts.map +1 -0
  183. package/dist/river/river.service.js +25 -0
  184. package/dist/river/river.service.js.map +1 -0
  185. package/dist/support/support.model.d.ts +6 -0
  186. package/dist/support/support.model.d.ts.map +1 -0
  187. package/dist/support/support.model.js +3 -0
  188. package/dist/support/support.model.js.map +1 -0
  189. package/dist/support/support.schema.json +25 -0
  190. package/dist/support/support.service.d.ts +11 -0
  191. package/dist/support/support.service.d.ts.map +1 -0
  192. package/dist/support/support.service.js +22 -0
  193. package/dist/support/support.service.js.map +1 -0
  194. package/dist/tasks/schemas.js +4 -3
  195. package/dist/tasks/schemas.js.map +1 -1
  196. package/dist/tasks/task.model.d.ts +40 -15
  197. package/dist/tasks/task.model.d.ts.map +1 -1
  198. package/dist/tasks/task.model.js +1 -1
  199. package/dist/tasks/task.model.js.map +1 -1
  200. package/dist/tasks/task.schema.json +780 -0
  201. package/dist/tasks/task.service.d.ts +108 -9
  202. package/dist/tasks/task.service.d.ts.map +1 -1
  203. package/dist/tasks/task.service.js +184 -47
  204. package/dist/tasks/task.service.js.map +1 -1
  205. package/dist/timezone/time.helper.d.ts +9 -0
  206. package/dist/timezone/time.helper.d.ts.map +1 -1
  207. package/dist/timezone/time.helper.js +31 -2
  208. package/dist/timezone/time.helper.js.map +1 -1
  209. package/dist/users/user.model.d.ts +2 -1
  210. package/dist/users/user.model.d.ts.map +1 -1
  211. package/dist/users/user.model.js.map +1 -1
  212. package/dist/users/user.schema.json +429 -0
  213. package/dist/users/user.service.d.ts +2 -2
  214. package/dist/users/user.service.d.ts.map +1 -1
  215. package/dist/users/user.service.js +29 -35
  216. package/dist/users/user.service.js.map +1 -1
  217. package/dist/utils/validation.utils.d.ts +0 -4
  218. package/dist/utils/validation.utils.d.ts.map +1 -1
  219. package/dist/utils/validation.utils.js +1 -11
  220. package/dist/utils/validation.utils.js.map +1 -1
  221. package/dist/wallet/wallet.model.d.ts +5 -0
  222. package/dist/wallet/wallet.model.d.ts.map +1 -1
  223. package/dist/wallet/wallet.service.d.ts +2 -1
  224. package/dist/wallet/wallet.service.d.ts.map +1 -1
  225. package/dist/wallet/wallet.service.js +9 -0
  226. package/dist/wallet/wallet.service.js.map +1 -1
  227. package/package.json +19 -6
@@ -1,75 +1,48 @@
1
- import { AgentAccess, AgentResource, ContactScope } from './agent-resource';
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
- export interface AgentContactTarget {
10
- targetUserId: number;
11
- targetUsername?: string;
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
- isBuiltin: boolean;
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
- contactScope: ContactScope;
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
- agentEmail?: string;
48
- agentPassword?: string;
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":"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"}
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, ResetAgentPasswordResponse, UpdateAgentRequest } from './agent.model';
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
- setContactTargets(id: number, targetUserIds: number[]): Promise<void>;
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,EACf,kBAAkB,EAClB,mBAAmB,EACnB,0BAA0B,EAG1B,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,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,0BAA0B,CAAC;IAM9D,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAMzE,iBAAiB,CAAC,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAK9E"}
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 resetPassword(id) {
39
- const response = await this.http.post(`/agent/${id}/reset-password`, {});
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
- async setPermissions(id, permissions) {
45
- const body = { permissions };
46
- const response = await this.http.put(`/agent/${id}/permissions`, body);
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
- async setContactTargets(id, targetUserIds) {
51
- const body = { targetUserIds };
52
- const response = await this.http.put(`/agent/${id}/contact-targets`, body);
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;AAcvD,MAAa,WAAW;IACpB,YAAoB,IAAqB;QAArB,SAAI,GAAJ,IAAI,CAAiB;IAAG,CAAC;IAE7C,KAAK,CAAC,IAAI;QACN,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAiC,SAAS,CAAC,CAAC;QAChF,IAAI,CAAC,QAAQ,CAAC,SAAS;YAAE,MAAM,IAAA,8BAAc,EAAC,QAAQ,CAAC,CAAC;QACxD,OAAO,QAAQ,CAAC,OAAO,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,EAAU;QAChB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAqB,UAAU,EAAE,EAAE,CAAC,CAAC;QACzE,IAAI,CAAC,QAAQ,CAAC,SAAS;YAAE,MAAM,IAAA,8BAAc,EAAC,QAAQ,CAAC,CAAC;QACxD,OAAO,QAAQ,CAAC,OAAO,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAwB;QACjC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAmC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACxF,IAAI,CAAC,QAAQ,CAAC,SAAS;YAAE,MAAM,IAAA,8BAAc,EAAC,QAAQ,CAAC,CAAC;QACxD,OAAO,QAAQ,CAAC,OAAO,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAU,EAAE,IAAwB;QAC7C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAqB,UAAU,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;QACjF,IAAI,CAAC,QAAQ,CAAC,SAAS;YAAE,MAAM,IAAA,8BAAc,EAAC,QAAQ,CAAC,CAAC;QACxD,OAAO,QAAQ,CAAC,OAAO,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAU;QACnB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAoB,UAAU,EAAE,EAAE,CAAC,CAAC;QAC3E,IAAI,CAAC,QAAQ,CAAC,SAAS;YAAE,MAAM,IAAA,8BAAc,EAAC,QAAQ,CAAC,CAAC;IAC5D,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,EAAU;QAC1B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAA0C,UAAU,EAAE,iBAAiB,EAAE,EAAE,CAAC,CAAC;QAClH,IAAI,CAAC,QAAQ,CAAC,SAAS;YAAE,MAAM,IAAA,8BAAc,EAAC,QAAQ,CAAC,CAAC;QACxD,OAAO,QAAQ,CAAC,OAAO,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,EAAU,EAAE,WAA8B;QAC3D,MAAM,IAAI,GAA0B,EAAE,WAAW,EAAE,CAAC;QACpD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAoB,UAAU,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC;QAC1F,IAAI,CAAC,QAAQ,CAAC,SAAS;YAAE,MAAM,IAAA,8BAAc,EAAC,QAAQ,CAAC,CAAC;IAC5D,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,EAAU,EAAE,aAAuB;QACvD,MAAM,IAAI,GAA6B,EAAE,aAAa,EAAE,CAAC;QACzD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAoB,UAAU,EAAE,kBAAkB,EAAE,IAAI,CAAC,CAAC;QAC9F,IAAI,CAAC,QAAQ,CAAC,SAAS;YAAE,MAAM,IAAA,8BAAc,EAAC,QAAQ,CAAC,CAAC;IAC5D,CAAC;CACJ;AAjDD,kCAiDC"}
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
- * Send a message to Yuri AI and get streaming response via SSE
15
- * Returns raw Response object for frontend to handle streaming
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
- talk(userAffirmation: AiDialogPhrase): Promise<Response>;
29
+ setEnabled(isEnabled: boolean): Promise<void>;
18
30
  /**
19
- * Read CSRF token from cookie
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
- private getCookie;
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;IAiC9D;;OAEG;IACH,OAAO,CAAC,SAAS;CAoBlB"}
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"}
@@ -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
- * Send a message to Yuri AI and get streaming response via SSE
11
- * Returns raw Response object for frontend to handle streaming
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}/adam/talk`;
17
- // Get CSRF token from cookie if available
18
- const xsrfToken = this.getCookie("XSRF-TOKEN");
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
- if (!response.ok) {
33
- throw new Error(`Server error: ${response.status}`);
34
- }
35
- return response;
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;AAWvD,MAAa,SAAS;IAGpB,YAAY,IAAqB;QAC/B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,IAAI,CAAC,eAA+B;QACxC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;YAClC,MAAM,GAAG,GAAG,GAAG,OAAO,YAAY,CAAC;YAEnC,0CAA0C;YAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;YAC/C,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,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,iBAAiB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;YACtD,CAAC;YAED,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAA,8BAAc,EAAC,KAAK,EAAE,wBAAwB,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAED;;OAEG;IACK,SAAS,CAAC,IAAY;QAC5B,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,CAAC;YACpC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,GAAG,GAAG,CAAC;QAC1B,MAAM,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACtC,KAAK,MAAM,OAAO,IAAI,EAAE,EAAE,CAAC;YACzB,IAAI,CAAC,GAAG,OAAO,CAAC;YAChB,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG;gBAAE,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;YACzD,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC5B,MAAM,QAAQ,GAAG,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;gBACtD,IAAI,CAAC;oBACH,OAAO,kBAAkB,CAAC,QAAQ,CAAC,CAAC;gBACtC,CAAC;gBAAC,MAAM,CAAC;oBACP,OAAO,QAAQ,CAAC;gBAClB,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAnED,8BAmEC"}
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"}