@nekutima/provili-sdk 0.2.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 (183) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +57 -0
  3. package/dist/core/http-client.d.ts +84 -0
  4. package/dist/core/http-client.d.ts.map +1 -0
  5. package/dist/core/http-client.js +177 -0
  6. package/dist/core/http-client.js.map +1 -0
  7. package/dist/core/index.d.ts +3 -0
  8. package/dist/core/index.d.ts.map +1 -0
  9. package/dist/core/index.js +7 -0
  10. package/dist/core/index.js.map +1 -0
  11. package/dist/core/rate-limiter.d.ts +40 -0
  12. package/dist/core/rate-limiter.d.ts.map +1 -0
  13. package/dist/core/rate-limiter.js +65 -0
  14. package/dist/core/rate-limiter.js.map +1 -0
  15. package/dist/generated/api-types.d.ts +1742 -0
  16. package/dist/generated/api-types.d.ts.map +1 -0
  17. package/dist/generated/api-types.js +7 -0
  18. package/dist/generated/api-types.js.map +1 -0
  19. package/dist/index.d.ts +92 -0
  20. package/dist/index.d.ts.map +1 -0
  21. package/dist/index.js +129 -0
  22. package/dist/index.js.map +1 -0
  23. package/dist/llm-engines/adapters.d.ts +26 -0
  24. package/dist/llm-engines/adapters.d.ts.map +1 -0
  25. package/dist/llm-engines/adapters.js +121 -0
  26. package/dist/llm-engines/adapters.js.map +1 -0
  27. package/dist/llm-engines/client.d.ts +12 -0
  28. package/dist/llm-engines/client.d.ts.map +1 -0
  29. package/dist/llm-engines/client.js +138 -0
  30. package/dist/llm-engines/client.js.map +1 -0
  31. package/dist/llm-engines/descriptors.d.ts +24 -0
  32. package/dist/llm-engines/descriptors.d.ts.map +1 -0
  33. package/dist/llm-engines/descriptors.js +192 -0
  34. package/dist/llm-engines/descriptors.js.map +1 -0
  35. package/dist/llm-engines/endpoint.d.ts +5 -0
  36. package/dist/llm-engines/endpoint.d.ts.map +1 -0
  37. package/dist/llm-engines/endpoint.js +19 -0
  38. package/dist/llm-engines/endpoint.js.map +1 -0
  39. package/dist/llm-engines/errors.d.ts +16 -0
  40. package/dist/llm-engines/errors.d.ts.map +1 -0
  41. package/dist/llm-engines/errors.js +72 -0
  42. package/dist/llm-engines/errors.js.map +1 -0
  43. package/dist/llm-engines/index.d.ts +7 -0
  44. package/dist/llm-engines/index.d.ts.map +1 -0
  45. package/dist/llm-engines/index.js +10 -0
  46. package/dist/llm-engines/index.js.map +1 -0
  47. package/dist/llm-engines/types.d.ts +130 -0
  48. package/dist/llm-engines/types.d.ts.map +1 -0
  49. package/dist/llm-engines/types.js +32 -0
  50. package/dist/llm-engines/types.js.map +1 -0
  51. package/dist/mcp/host.d.ts +13 -0
  52. package/dist/mcp/host.d.ts.map +1 -0
  53. package/dist/mcp/host.js +72 -0
  54. package/dist/mcp/host.js.map +1 -0
  55. package/dist/mcp/index.d.ts +4 -0
  56. package/dist/mcp/index.d.ts.map +1 -0
  57. package/dist/mcp/index.js +7 -0
  58. package/dist/mcp/index.js.map +1 -0
  59. package/dist/mcp/mcp.service.d.ts +21 -0
  60. package/dist/mcp/mcp.service.d.ts.map +1 -0
  61. package/dist/mcp/mcp.service.js +35 -0
  62. package/dist/mcp/mcp.service.js.map +1 -0
  63. package/dist/mcp/types.d.ts +60 -0
  64. package/dist/mcp/types.d.ts.map +1 -0
  65. package/dist/mcp/types.js +7 -0
  66. package/dist/mcp/types.js.map +1 -0
  67. package/dist/models/agent.model.d.ts +62 -0
  68. package/dist/models/agent.model.d.ts.map +1 -0
  69. package/dist/models/agent.model.js +3 -0
  70. package/dist/models/agent.model.js.map +1 -0
  71. package/dist/models/ai-chat.model.d.ts +27 -0
  72. package/dist/models/ai-chat.model.d.ts.map +1 -0
  73. package/dist/models/ai-chat.model.js +3 -0
  74. package/dist/models/ai-chat.model.js.map +1 -0
  75. package/dist/models/api-error.model.d.ts +33 -0
  76. package/dist/models/api-error.model.d.ts.map +1 -0
  77. package/dist/models/api-error.model.js +59 -0
  78. package/dist/models/api-error.model.js.map +1 -0
  79. package/dist/models/api-response.model.d.ts +52 -0
  80. package/dist/models/api-response.model.d.ts.map +1 -0
  81. package/dist/models/api-response.model.js +78 -0
  82. package/dist/models/api-response.model.js.map +1 -0
  83. package/dist/models/auth.model.d.ts +25 -0
  84. package/dist/models/auth.model.d.ts.map +1 -0
  85. package/dist/models/auth.model.js +6 -0
  86. package/dist/models/auth.model.js.map +1 -0
  87. package/dist/models/backup.model.d.ts +34 -0
  88. package/dist/models/backup.model.d.ts.map +1 -0
  89. package/dist/models/backup.model.js +3 -0
  90. package/dist/models/backup.model.js.map +1 -0
  91. package/dist/models/chat.model.d.ts +87 -0
  92. package/dist/models/chat.model.d.ts.map +1 -0
  93. package/dist/models/chat.model.js +7 -0
  94. package/dist/models/chat.model.js.map +1 -0
  95. package/dist/models/file.model.d.ts +50 -0
  96. package/dist/models/file.model.d.ts.map +1 -0
  97. package/dist/models/file.model.js +7 -0
  98. package/dist/models/file.model.js.map +1 -0
  99. package/dist/models/index.d.ts +17 -0
  100. package/dist/models/index.d.ts.map +1 -0
  101. package/dist/models/index.js +20 -0
  102. package/dist/models/index.js.map +1 -0
  103. package/dist/models/knowledge.model.d.ts +63 -0
  104. package/dist/models/knowledge.model.d.ts.map +1 -0
  105. package/dist/models/knowledge.model.js +3 -0
  106. package/dist/models/knowledge.model.js.map +1 -0
  107. package/dist/models/llm-engine.model.d.ts +25 -0
  108. package/dist/models/llm-engine.model.d.ts.map +1 -0
  109. package/dist/models/llm-engine.model.js +3 -0
  110. package/dist/models/llm-engine.model.js.map +1 -0
  111. package/dist/models/prompt.model.d.ts +30 -0
  112. package/dist/models/prompt.model.d.ts.map +1 -0
  113. package/dist/models/prompt.model.js +3 -0
  114. package/dist/models/prompt.model.js.map +1 -0
  115. package/dist/models/role.model.d.ts +19 -0
  116. package/dist/models/role.model.d.ts.map +1 -0
  117. package/dist/models/role.model.js +3 -0
  118. package/dist/models/role.model.js.map +1 -0
  119. package/dist/models/streaming.model.d.ts +27 -0
  120. package/dist/models/streaming.model.d.ts.map +1 -0
  121. package/dist/models/streaming.model.js +3 -0
  122. package/dist/models/streaming.model.js.map +1 -0
  123. package/dist/models/update.model.d.ts +16 -0
  124. package/dist/models/update.model.d.ts.map +1 -0
  125. package/dist/models/update.model.js +3 -0
  126. package/dist/models/update.model.js.map +1 -0
  127. package/dist/models/usb-patch.model.d.ts +13 -0
  128. package/dist/models/usb-patch.model.d.ts.map +1 -0
  129. package/dist/models/usb-patch.model.js +3 -0
  130. package/dist/models/usb-patch.model.js.map +1 -0
  131. package/dist/models/user.model.d.ts +64 -0
  132. package/dist/models/user.model.d.ts.map +1 -0
  133. package/dist/models/user.model.js +3 -0
  134. package/dist/models/user.model.js.map +1 -0
  135. package/dist/services/agent.service.d.ts +45 -0
  136. package/dist/services/agent.service.d.ts.map +1 -0
  137. package/dist/services/agent.service.js +91 -0
  138. package/dist/services/agent.service.js.map +1 -0
  139. package/dist/services/ai-chat.service.d.ts +12 -0
  140. package/dist/services/ai-chat.service.d.ts.map +1 -0
  141. package/dist/services/ai-chat.service.js +116 -0
  142. package/dist/services/ai-chat.service.js.map +1 -0
  143. package/dist/services/auth.service.d.ts +25 -0
  144. package/dist/services/auth.service.d.ts.map +1 -0
  145. package/dist/services/auth.service.js +76 -0
  146. package/dist/services/auth.service.js.map +1 -0
  147. package/dist/services/chat.service.d.ts +90 -0
  148. package/dist/services/chat.service.d.ts.map +1 -0
  149. package/dist/services/chat.service.js +240 -0
  150. package/dist/services/chat.service.js.map +1 -0
  151. package/dist/services/index.d.ts +12 -0
  152. package/dist/services/index.d.ts.map +1 -0
  153. package/dist/services/index.js +16 -0
  154. package/dist/services/index.js.map +1 -0
  155. package/dist/services/knowledge.service.d.ts +18 -0
  156. package/dist/services/knowledge.service.d.ts.map +1 -0
  157. package/dist/services/knowledge.service.js +33 -0
  158. package/dist/services/knowledge.service.js.map +1 -0
  159. package/dist/services/llm-engines.service.d.ts +12 -0
  160. package/dist/services/llm-engines.service.d.ts.map +1 -0
  161. package/dist/services/llm-engines.service.js +26 -0
  162. package/dist/services/llm-engines.service.js.map +1 -0
  163. package/dist/services/prompts.service.d.ts +16 -0
  164. package/dist/services/prompts.service.d.ts.map +1 -0
  165. package/dist/services/prompts.service.js +31 -0
  166. package/dist/services/prompts.service.js.map +1 -0
  167. package/dist/services/role.service.d.ts +12 -0
  168. package/dist/services/role.service.d.ts.map +1 -0
  169. package/dist/services/role.service.js +29 -0
  170. package/dist/services/role.service.js.map +1 -0
  171. package/dist/services/streaming.service.d.ts +18 -0
  172. package/dist/services/streaming.service.d.ts.map +1 -0
  173. package/dist/services/streaming.service.js +103 -0
  174. package/dist/services/streaming.service.js.map +1 -0
  175. package/dist/services/usb-patches.service.d.ts +9 -0
  176. package/dist/services/usb-patches.service.d.ts.map +1 -0
  177. package/dist/services/usb-patches.service.js +16 -0
  178. package/dist/services/usb-patches.service.js.map +1 -0
  179. package/dist/services/user.service.d.ts +15 -0
  180. package/dist/services/user.service.d.ts.map +1 -0
  181. package/dist/services/user.service.js +40 -0
  182. package/dist/services/user.service.js.map +1 -0
  183. package/package.json +93 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"role.model.js","sourceRoot":"","sources":["../../src/models/role.model.ts"],"names":[],"mappings":""}
@@ -0,0 +1,27 @@
1
+ export interface StreamingChunk {
2
+ content: string;
3
+ stop: boolean;
4
+ tokens?: number[];
5
+ tokensPredicted?: number;
6
+ tokensEvaluated?: number;
7
+ }
8
+ export interface CompletionRequest {
9
+ prompt: string;
10
+ n_predict?: number;
11
+ temperature?: number;
12
+ stream?: boolean;
13
+ top_p?: number;
14
+ repeat_penalty?: number;
15
+ }
16
+ export type ChatErrorType = 'ConnectionError' | 'TimeoutError' | 'RateLimitError' | 'InvalidRequestError' | 'StreamInterruptedError';
17
+ export interface ChatError {
18
+ type: ChatErrorType;
19
+ message: string;
20
+ statusCode?: number;
21
+ }
22
+ export interface StreamingCallbacks {
23
+ onChunk: (chunk: StreamingChunk) => void;
24
+ onComplete: (fullContent: string) => void;
25
+ onError: (error: ChatError) => void;
26
+ }
27
+ //# sourceMappingURL=streaming.model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streaming.model.d.ts","sourceRoot":"","sources":["../../src/models/streaming.model.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,MAAM,aAAa,GACrB,iBAAiB,GACjB,cAAc,GACd,gBAAgB,GAChB,qBAAqB,GACrB,wBAAwB,CAAC;AAE7B,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,aAAa,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;IACzC,UAAU,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,OAAO,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;CACrC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=streaming.model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streaming.model.js","sourceRoot":"","sources":["../../src/models/streaming.model.ts"],"names":[],"mappings":""}
@@ -0,0 +1,16 @@
1
+ export interface UpdateStatus {
2
+ schema_version: number;
3
+ state: 'idle' | 'checking' | 'checked' | 'staged' | 'applying' | 'applied' | 'failed' | 'rolled_back';
4
+ current_version: string;
5
+ available_version: string | null;
6
+ staged_at: string | null;
7
+ applying_started_at: string | null;
8
+ applied_at: string | null;
9
+ last_checked_at: string;
10
+ error: string | null;
11
+ }
12
+ export interface ApplyUpdateResponse {
13
+ state: string;
14
+ message: string;
15
+ }
16
+ //# sourceMappingURL=update.model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.model.d.ts","sourceRoot":"","sources":["../../src/models/update.model.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,aAAa,CAAC;IACtG,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=update.model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.model.js","sourceRoot":"","sources":["../../src/models/update.model.ts"],"names":[],"mappings":""}
@@ -0,0 +1,13 @@
1
+ export interface USBPatchStatus {
2
+ schema_version: number;
3
+ state: 'idle' | 'staged' | 'applying' | 'applied' | 'failed';
4
+ staged_version: string | null;
5
+ staged_at: string | null;
6
+ last_checked_at: string;
7
+ error: string | null;
8
+ }
9
+ export interface ApplyUSBPatchResponse {
10
+ state: string;
11
+ message: string;
12
+ }
13
+ //# sourceMappingURL=usb-patch.model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usb-patch.model.d.ts","sourceRoot":"","sources":["../../src/models/usb-patch.model.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,CAAC;IAC7D,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=usb-patch.model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usb-patch.model.js","sourceRoot":"","sources":["../../src/models/usb-patch.model.ts"],"names":[],"mappings":""}
@@ -0,0 +1,64 @@
1
+ import { Role } from './role.model';
2
+ export type UserStatus = 'pending_email' | 'pending_approval' | 'active' | 'blocked';
3
+ export interface User {
4
+ id: number;
5
+ username: string;
6
+ name: string;
7
+ email?: string;
8
+ is_admin: boolean;
9
+ avatar_url?: string;
10
+ status?: UserStatus;
11
+ email_confirmed_at?: string;
12
+ approved_at?: string;
13
+ roles: Role[];
14
+ created_at: string;
15
+ updated_at: string;
16
+ token?: string;
17
+ }
18
+ export interface LoginRequest {
19
+ username: string;
20
+ password: string;
21
+ }
22
+ export interface SignupRequest {
23
+ email: string;
24
+ password: string;
25
+ name: string;
26
+ username?: string;
27
+ }
28
+ export interface SignupResponse {
29
+ message: string;
30
+ email: string;
31
+ username: string;
32
+ }
33
+ export interface VerifyEmailRequest {
34
+ token: string;
35
+ }
36
+ export interface ResendConfirmationRequest {
37
+ email: string;
38
+ }
39
+ export interface MessageResponse {
40
+ message: string;
41
+ }
42
+ export type LoginResponse = User;
43
+ export interface CreateUserRequest {
44
+ username: string;
45
+ password: string;
46
+ name: string;
47
+ is_admin?: boolean;
48
+ role_ids?: number[];
49
+ agent_ids?: number[];
50
+ }
51
+ export interface UpdateUserRequest {
52
+ username?: string;
53
+ name?: string;
54
+ is_admin?: boolean;
55
+ password?: string;
56
+ role_ids?: number[];
57
+ agent_ids?: number[];
58
+ }
59
+ export interface UpdateMeRequest {
60
+ username?: string;
61
+ name?: string;
62
+ password?: string;
63
+ }
64
+ //# sourceMappingURL=user.model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user.model.d.ts","sourceRoot":"","sources":["../../src/models/user.model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEpC,MAAM,MAAM,UAAU,GAClB,eAAe,GACf,kBAAkB,GAClB,QAAQ,GACR,SAAS,CAAC;AAEd,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC;AAEjC,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=user.model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user.model.js","sourceRoot":"","sources":["../../src/models/user.model.ts"],"names":[],"mappings":""}
@@ -0,0 +1,45 @@
1
+ import { ProviliHttpClient } from '../core/http-client';
2
+ import { Agent, AgentMcpToolsConfig, AgentWakeResponse, CreateAgentRequest, UpdateAgentRequest } from '../models/agent.model';
3
+ import { BackupResult, BackupListing, RestoreResult, VaultFile } from '../models/backup.model';
4
+ export declare class ProviliAgentService {
5
+ private httpClient;
6
+ constructor(httpClient: ProviliHttpClient);
7
+ listAgents(): Promise<Agent[]>;
8
+ getAgent(id: number): Promise<Agent>;
9
+ createAgent(request: CreateAgentRequest): Promise<Agent>;
10
+ updateAgent(id: number, request: UpdateAgentRequest): Promise<Agent>;
11
+ deleteAgent(id: number): Promise<void>;
12
+ uploadAvatar(id: number, file: File | Blob): Promise<Agent>;
13
+ deleteAvatar(id: number): Promise<Agent>;
14
+ /** GET /agents/{id}/mcp-tools — admin; includes full tool catalog. */
15
+ getMcpTools(id: number): Promise<AgentMcpToolsConfig>;
16
+ /** PUT /agents/{id}/mcp-tools — admin; mode=all clears patterns. */
17
+ setMcpTools(id: number, config: Pick<AgentMcpToolsConfig, 'mode' | 'patterns'>): Promise<AgentMcpToolsConfig>;
18
+ /**
19
+ * Defrost + wake-up: inventory MCP tools for this agent (OLED DEFROST→WAKE on appliance).
20
+ * Idempotent unless force is true. Persists last active agent over reboot.
21
+ */
22
+ wake(id: number, opts?: {
23
+ force?: boolean;
24
+ }): Promise<AgentWakeResponse>;
25
+ /** Last activated agent on this device (survives reboot). */
26
+ getActiveAgent(): Promise<{
27
+ agent_id: number | null;
28
+ name: string;
29
+ }>;
30
+ /** Clear last active agent (OLED back to hostname). */
31
+ clearActiveAgent(): Promise<void>;
32
+ /** POST /agents/{id}/knowledge/files — upload knowledge file to vault. */
33
+ uploadVaultFile(id: number, file: File | Blob, filename?: string): Promise<VaultFile>;
34
+ /** GET /agents/{id}/knowledge/files — list vault files. */
35
+ listVaultFiles(id: number): Promise<VaultFile[]>;
36
+ /** DELETE /agents/{id}/knowledge/files/{filename} — delete vault file. */
37
+ deleteVaultFile(id: number, filename: string): Promise<void>;
38
+ /** POST /agents/{id}/backup — create encrypted backup of agent. */
39
+ backupAgent(id: number, password: string): Promise<BackupResult>;
40
+ /** GET /agents/backups — list available backups on device. */
41
+ listBackups(): Promise<BackupListing[]>;
42
+ /** POST /agents/restore — restore agent from encrypted backup. */
43
+ restoreAgent(filename: string, password: string, onConflict?: 'fail' | 'rename' | 'overwrite'): Promise<RestoreResult>;
44
+ }
45
+ //# sourceMappingURL=agent.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.service.d.ts","sourceRoot":"","sources":["../../src/services/agent.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EACL,KAAK,EACL,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAEL,YAAY,EACZ,aAAa,EAEb,aAAa,EACb,SAAS,EACV,MAAM,wBAAwB,CAAC;AAMhC,qBAAa,mBAAmB;IAClB,OAAO,CAAC,UAAU;gBAAV,UAAU,EAAE,iBAAiB;IAE3C,UAAU,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;IAK9B,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAKpC,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,KAAK,CAAC;IAKxD,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,KAAK,CAAC;IAKpE,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAItC,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC;IAM3D,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAI9C,sEAAsE;IAChE,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAI3D,oEAAoE;IAC9D,WAAW,CACf,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,IAAI,CAAC,mBAAmB,EAAE,MAAM,GAAG,UAAU,CAAC,GACrD,OAAO,CAAC,mBAAmB,CAAC;IAI/B;;;OAGG;IACG,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAK9E,6DAA6D;IACvD,cAAc,IAAI,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAI1E,uDAAuD;IACjD,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAMvC,0EAA0E;IACpE,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAM3F,2DAA2D;IACrD,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAItD,0EAA0E;IACpE,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMlE,mEAAmE;IAC7D,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAKtE,8DAA8D;IACxD,WAAW,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IAI7C,kEAAkE;IAC5D,YAAY,CAChB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,UAAU,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,WAAW,GAC3C,OAAO,CAAC,aAAa,CAAC;CAI1B"}
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ProviliAgentService = void 0;
4
+ class ProviliAgentService {
5
+ constructor(httpClient) {
6
+ this.httpClient = httpClient;
7
+ }
8
+ async listAgents() {
9
+ const response = await this.httpClient.get('/agents');
10
+ return response.agents;
11
+ }
12
+ async getAgent(id) {
13
+ const response = await this.httpClient.get(`/agents/${id}`);
14
+ return response;
15
+ }
16
+ async createAgent(request) {
17
+ const response = await this.httpClient.post('/agents', request);
18
+ return response;
19
+ }
20
+ async updateAgent(id, request) {
21
+ const response = await this.httpClient.put(`/agents/${id}`, request);
22
+ return response;
23
+ }
24
+ async deleteAgent(id) {
25
+ await this.httpClient.delete(`/agents/${id}`);
26
+ }
27
+ async uploadAvatar(id, file) {
28
+ const formData = new FormData();
29
+ formData.append('avatar', file);
30
+ return this.httpClient.put(`/agents/${id}/avatar`, formData);
31
+ }
32
+ async deleteAvatar(id) {
33
+ return this.httpClient.delete(`/agents/${id}/avatar`);
34
+ }
35
+ /** GET /agents/{id}/mcp-tools — admin; includes full tool catalog. */
36
+ async getMcpTools(id) {
37
+ return this.httpClient.get(`/agents/${id}/mcp-tools`);
38
+ }
39
+ /** PUT /agents/{id}/mcp-tools — admin; mode=all clears patterns. */
40
+ async setMcpTools(id, config) {
41
+ return this.httpClient.put(`/agents/${id}/mcp-tools`, config);
42
+ }
43
+ /**
44
+ * Defrost + wake-up: inventory MCP tools for this agent (OLED DEFROST→WAKE on appliance).
45
+ * Idempotent unless force is true. Persists last active agent over reboot.
46
+ */
47
+ async wake(id, opts) {
48
+ const q = opts?.force ? '?force=1' : '';
49
+ return this.httpClient.post(`/agents/${id}/wake${q}`, {});
50
+ }
51
+ /** Last activated agent on this device (survives reboot). */
52
+ async getActiveAgent() {
53
+ return this.httpClient.get('/agents/active');
54
+ }
55
+ /** Clear last active agent (OLED back to hostname). */
56
+ async clearActiveAgent() {
57
+ await this.httpClient.post('/agents/active/clear', {});
58
+ }
59
+ // Vault file storage (Phase 2)
60
+ /** POST /agents/{id}/knowledge/files — upload knowledge file to vault. */
61
+ async uploadVaultFile(id, file, filename) {
62
+ const formData = new FormData();
63
+ formData.append('file', file, filename || (file instanceof File ? file.name : 'file'));
64
+ return this.httpClient.post(`/agents/${id}/knowledge/files`, formData);
65
+ }
66
+ /** GET /agents/{id}/knowledge/files — list vault files. */
67
+ async listVaultFiles(id) {
68
+ return this.httpClient.get(`/agents/${id}/knowledge/files`);
69
+ }
70
+ /** DELETE /agents/{id}/knowledge/files/{filename} — delete vault file. */
71
+ async deleteVaultFile(id, filename) {
72
+ await this.httpClient.delete(`/agents/${id}/knowledge/files/${encodeURIComponent(filename)}`);
73
+ }
74
+ // Backup/Restore (Phases 3–4)
75
+ /** POST /agents/{id}/backup — create encrypted backup of agent. */
76
+ async backupAgent(id, password) {
77
+ const request = { password };
78
+ return this.httpClient.post(`/agents/${id}/backup`, request);
79
+ }
80
+ /** GET /agents/backups — list available backups on device. */
81
+ async listBackups() {
82
+ return this.httpClient.get('/agents/backups');
83
+ }
84
+ /** POST /agents/restore — restore agent from encrypted backup. */
85
+ async restoreAgent(filename, password, onConflict) {
86
+ const request = { filename, password, on_conflict: onConflict };
87
+ return this.httpClient.post('/agents/restore', request);
88
+ }
89
+ }
90
+ exports.ProviliAgentService = ProviliAgentService;
91
+ //# sourceMappingURL=agent.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.service.js","sourceRoot":"","sources":["../../src/services/agent.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { AiChatConfig, AiChatMessage, AiChatCallbacks } from '../models/ai-chat.model';
2
+ export declare class AiChatService {
3
+ private baseUrl;
4
+ private temperature;
5
+ private maxTokens;
6
+ constructor(config: AiChatConfig);
7
+ streamChat(messages: AiChatMessage[], callbacks: AiChatCallbacks): Promise<AbortController>;
8
+ chat(messages: AiChatMessage[]): Promise<string>;
9
+ private processStream;
10
+ private parseSSEChunks;
11
+ }
12
+ //# sourceMappingURL=ai-chat.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-chat.service.d.ts","sourceRoot":"","sources":["../../src/services/ai-chat.service.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,YAAY,EACZ,aAAa,EAEb,eAAe,EAClB,MAAM,yBAAyB,CAAC;AAYjC,qBAAa,aAAa;IACtB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,SAAS,CAAS;gBAEd,MAAM,EAAE,YAAY;IAM1B,UAAU,CACZ,QAAQ,EAAE,aAAa,EAAE,EACzB,SAAS,EAAE,eAAe,GAC3B,OAAO,CAAC,eAAe,CAAC;IAiCrB,IAAI,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;YAoBxC,aAAa;IAsC3B,OAAO,CAAC,cAAc;CAoBzB"}
@@ -0,0 +1,116 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AiChatService = void 0;
4
+ // ChatML prompt template used by LFM2.5 and compatible models
5
+ function buildChatMLPrompt(messages) {
6
+ const parts = [];
7
+ for (const msg of messages) {
8
+ parts.push(`<|im_start|>${msg.role}\n${msg.content}<|im_end|>`);
9
+ }
10
+ parts.push('<|im_start|>assistant');
11
+ return parts.join('\n');
12
+ }
13
+ class AiChatService {
14
+ constructor(config) {
15
+ this.baseUrl = config.baseUrl.replace(/\/$/, '');
16
+ this.temperature = config.temperature ?? 0.7;
17
+ this.maxTokens = config.maxTokens ?? 1024;
18
+ }
19
+ async streamChat(messages, callbacks) {
20
+ const abortCtrl = new AbortController();
21
+ try {
22
+ const response = await fetch(`${this.baseUrl}/completion`, {
23
+ method: 'POST',
24
+ headers: { 'Content-Type': 'application/json' },
25
+ body: JSON.stringify({
26
+ prompt: buildChatMLPrompt(messages),
27
+ n_predict: this.maxTokens,
28
+ temperature: this.temperature,
29
+ stream: true,
30
+ }),
31
+ signal: abortCtrl.signal,
32
+ });
33
+ if (!response.ok) {
34
+ callbacks.onError(new Error(`Astaroti returned ${response.status}: ${response.statusText}`));
35
+ return abortCtrl;
36
+ }
37
+ this.processStream(response.body, callbacks);
38
+ }
39
+ catch (error) {
40
+ if (error instanceof Error && error.name !== 'AbortError') {
41
+ callbacks.onError(error);
42
+ }
43
+ }
44
+ return abortCtrl;
45
+ }
46
+ async chat(messages) {
47
+ const response = await fetch(`${this.baseUrl}/completion`, {
48
+ method: 'POST',
49
+ headers: { 'Content-Type': 'application/json' },
50
+ body: JSON.stringify({
51
+ prompt: buildChatMLPrompt(messages),
52
+ n_predict: this.maxTokens,
53
+ temperature: this.temperature,
54
+ stream: false,
55
+ }),
56
+ });
57
+ if (!response.ok) {
58
+ throw new Error(`Astaroti returned ${response.status}: ${response.statusText}`);
59
+ }
60
+ const data = await response.json();
61
+ return data?.content ?? '';
62
+ }
63
+ async processStream(body, callbacks) {
64
+ const reader = body.getReader();
65
+ const decoder = new TextDecoder();
66
+ let fullContent = '';
67
+ try {
68
+ while (true) {
69
+ const { done, value } = await reader.read();
70
+ if (done)
71
+ break;
72
+ const text = decoder.decode(value, { stream: true });
73
+ const chunks = this.parseSSEChunks(text);
74
+ for (const chunk of chunks) {
75
+ if (chunk.done) {
76
+ callbacks.onComplete(fullContent);
77
+ return;
78
+ }
79
+ if (chunk.content) {
80
+ fullContent += chunk.content;
81
+ callbacks.onChunk(chunk);
82
+ }
83
+ }
84
+ }
85
+ callbacks.onComplete(fullContent);
86
+ }
87
+ catch (error) {
88
+ if (error instanceof Error && error.name !== 'AbortError') {
89
+ callbacks.onError(error);
90
+ }
91
+ }
92
+ }
93
+ // Parses native llama.cpp SSE format:
94
+ // data: {"content":" token","stop":false,...}
95
+ parseSSEChunks(text) {
96
+ const chunks = [];
97
+ const lines = text.split('\n');
98
+ for (const line of lines) {
99
+ if (!line.startsWith('data: '))
100
+ continue;
101
+ try {
102
+ const parsed = JSON.parse(line.slice(6));
103
+ chunks.push({
104
+ content: parsed.content ?? '',
105
+ done: parsed.stop ?? false,
106
+ });
107
+ }
108
+ catch {
109
+ // skip malformed lines
110
+ }
111
+ }
112
+ return chunks;
113
+ }
114
+ }
115
+ exports.AiChatService = AiChatService;
116
+ //# sourceMappingURL=ai-chat.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-chat.service.js","sourceRoot":"","sources":["../../src/services/ai-chat.service.ts"],"names":[],"mappings":";;;AAOA,8DAA8D;AAC9D,SAAS,iBAAiB,CAAC,QAAyB;IAChD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC,eAAe,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC;IACpE,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IACpC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5B,CAAC;AAED,MAAa,aAAa;IAKtB,YAAY,MAAoB;QAC5B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACjD,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,GAAG,CAAC;QAC7C,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,UAAU,CACZ,QAAyB,EACzB,SAA0B;QAE1B,MAAM,SAAS,GAAG,IAAI,eAAe,EAAE,CAAC;QAExC,IAAI,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,aAAa,EAAE;gBACvD,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;gBAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACjB,MAAM,EAAE,iBAAiB,CAAC,QAAQ,CAAC;oBACnC,SAAS,EAAE,IAAI,CAAC,SAAS;oBACzB,WAAW,EAAE,IAAI,CAAC,WAAW;oBAC7B,MAAM,EAAE,IAAI;iBACf,CAAC;gBACF,MAAM,EAAE,SAAS,CAAC,MAAM;aAC3B,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACf,SAAS,CAAC,OAAO,CACb,IAAI,KAAK,CAAC,qBAAqB,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,UAAU,EAAE,CAAC,CAC5E,CAAC;gBACF,OAAO,SAAS,CAAC;YACrB,CAAC;YAED,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAK,EAAE,SAAS,CAAC,CAAC;QAClD,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACtB,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBACxD,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC7B,CAAC;QACL,CAAC;QAED,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,QAAyB;QAChC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,aAAa,EAAE;YACvD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACjB,MAAM,EAAE,iBAAiB,CAAC,QAAQ,CAAC;gBACnC,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,MAAM,EAAE,KAAK;aAChB,CAAC;SACL,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,qBAAqB,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;QACpF,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAA0B,CAAC;QAC3D,OAAO,IAAI,EAAE,OAAO,IAAI,EAAE,CAAC;IAC/B,CAAC;IAEO,KAAK,CAAC,aAAa,CACvB,IAAgC,EAChC,SAA0B;QAE1B,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;QAClC,IAAI,WAAW,GAAG,EAAE,CAAC;QAErB,IAAI,CAAC;YACD,OAAO,IAAI,EAAE,CAAC;gBACV,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;gBAC5C,IAAI,IAAI;oBAAE,MAAM;gBAEhB,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;gBACrD,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;gBAEzC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;oBACzB,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;wBACb,SAAS,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;wBAClC,OAAO;oBACX,CAAC;oBACD,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;wBAChB,WAAW,IAAI,KAAK,CAAC,OAAO,CAAC;wBAC7B,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;oBAC7B,CAAC;gBACL,CAAC;YACL,CAAC;YAED,SAAS,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QACtC,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACtB,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBACxD,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC7B,CAAC;QACL,CAAC;IACL,CAAC;IAED,sCAAsC;IACtC,8CAA8C;IACtC,cAAc,CAAC,IAAY;QAC/B,MAAM,MAAM,GAAkB,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAE/B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;gBAAE,SAAS;YAEzC,IAAI,CAAC;gBACD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAyC,CAAC;gBACjF,MAAM,CAAC,IAAI,CAAC;oBACR,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,EAAE;oBAC7B,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,KAAK;iBAC7B,CAAC,CAAC;YACP,CAAC;YAAC,MAAM,CAAC;gBACL,uBAAuB;YAC3B,CAAC;QACL,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;CACJ;AA7HD,sCA6HC"}
@@ -0,0 +1,25 @@
1
+ import { ProviliHttpClient } from '../core/http-client';
2
+ import { LoginRequest, MessageResponse, ResendConfirmationRequest, SignupRequest, SignupResponse, UpdateMeRequest, User, VerifyEmailRequest } from '../models/user.model';
3
+ export interface SignupValidationError {
4
+ field: string;
5
+ message: string;
6
+ }
7
+ export interface SignupValidationResult {
8
+ valid: boolean;
9
+ errors: SignupValidationError[];
10
+ }
11
+ export declare function validateSignupData(data: SignupRequest): SignupValidationResult;
12
+ export declare class ProviliAuthService {
13
+ private httpClient;
14
+ constructor(httpClient: ProviliHttpClient);
15
+ login(request: LoginRequest): Promise<User>;
16
+ signup(request: SignupRequest): Promise<SignupResponse>;
17
+ verifyEmail(request: VerifyEmailRequest): Promise<MessageResponse>;
18
+ resendConfirmation(request: ResendConfirmationRequest): Promise<MessageResponse>;
19
+ getMe(): Promise<User>;
20
+ updateMe(request: UpdateMeRequest): Promise<User>;
21
+ uploadMeAvatar(file: File): Promise<User>;
22
+ deleteMeAvatar(): Promise<User>;
23
+ logout(): Promise<void>;
24
+ }
25
+ //# sourceMappingURL=auth.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.service.d.ts","sourceRoot":"","sources":["../../src/services/auth.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EACL,YAAY,EACZ,eAAe,EACf,yBAAyB,EACzB,aAAa,EACb,cAAc,EACd,eAAe,EACf,IAAI,EACJ,kBAAkB,EACnB,MAAM,sBAAsB,CAAC;AAE9B,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,qBAAqB,EAAE,CAAC;CACjC;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,aAAa,GAAG,sBAAsB,CA+B9E;AAED,qBAAa,kBAAkB;IACjB,OAAO,CAAC,UAAU;gBAAV,UAAU,EAAE,iBAAiB;IAE3C,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ3C,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC;IAIvD,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,eAAe,CAAC;IAIlE,kBAAkB,CAAC,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAAC,eAAe,CAAC;IAIhF,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAKtB,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAKjD,cAAc,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAMzC,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAI/B,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;CAG9B"}
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ProviliAuthService = void 0;
4
+ exports.validateSignupData = validateSignupData;
5
+ function validateSignupData(data) {
6
+ const errors = [];
7
+ if (!data.email?.trim()) {
8
+ errors.push({ field: 'email', message: 'Email is required' });
9
+ }
10
+ else if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(data.email.trim())) {
11
+ errors.push({ field: 'email', message: 'Please enter a valid email address' });
12
+ }
13
+ if (!data.password) {
14
+ errors.push({ field: 'password', message: 'Password is required' });
15
+ }
16
+ else {
17
+ if (data.password.length < 8) {
18
+ errors.push({ field: 'password', message: 'Password must be at least 8 characters' });
19
+ }
20
+ if (!/(?=.*[a-z])/.test(data.password)) {
21
+ errors.push({ field: 'password', message: 'Password must contain at least one lowercase letter' });
22
+ }
23
+ if (!/(?=.*[A-Z])/.test(data.password)) {
24
+ errors.push({ field: 'password', message: 'Password must contain at least one uppercase letter' });
25
+ }
26
+ if (!/(?=.*\d)/.test(data.password)) {
27
+ errors.push({ field: 'password', message: 'Password must contain at least one number' });
28
+ }
29
+ }
30
+ if (data.username && (data.username.length < 3 || data.username.length > 32)) {
31
+ errors.push({ field: 'username', message: 'Username must be between 3 and 32 characters' });
32
+ }
33
+ return { valid: errors.length === 0, errors };
34
+ }
35
+ class ProviliAuthService {
36
+ constructor(httpClient) {
37
+ this.httpClient = httpClient;
38
+ }
39
+ async login(request) {
40
+ const response = await this.httpClient.post('/login', request);
41
+ if (response.token) {
42
+ this.httpClient.setAuth({ method: 'jwt', token: response.token });
43
+ }
44
+ return response;
45
+ }
46
+ async signup(request) {
47
+ return this.httpClient.post('/signup', request);
48
+ }
49
+ async verifyEmail(request) {
50
+ return this.httpClient.post('/verify-email', request);
51
+ }
52
+ async resendConfirmation(request) {
53
+ return this.httpClient.post('/resend-confirmation', request);
54
+ }
55
+ async getMe() {
56
+ const response = await this.httpClient.get('/me');
57
+ return response;
58
+ }
59
+ async updateMe(request) {
60
+ const response = await this.httpClient.put('/me', request);
61
+ return response;
62
+ }
63
+ async uploadMeAvatar(file) {
64
+ const formData = new FormData();
65
+ formData.append('avatar', file);
66
+ return this.httpClient.put('/me/avatar', formData);
67
+ }
68
+ async deleteMeAvatar() {
69
+ return this.httpClient.delete('/me/avatar');
70
+ }
71
+ async logout() {
72
+ await this.httpClient.post('/logout');
73
+ }
74
+ }
75
+ exports.ProviliAuthService = ProviliAuthService;
76
+ //# sourceMappingURL=auth.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.service.js","sourceRoot":"","sources":["../../src/services/auth.service.ts"],"names":[],"mappings":"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"}