@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,130 @@
1
+ /**
2
+ * Vendor-neutral LLM Engine access layer.
3
+ *
4
+ * This module is the SDK's translation layer between a product and an LLM
5
+ * vendor (Ollama, DeepSeek, OpenAI, Anthropic, Gemini, xAI, OpenRouter, or any
6
+ * OpenAI-compatible "custom" endpoint). Callers configure an engine once and
7
+ * then use the same `chat` / `embed` / `health` surface regardless of vendor.
8
+ *
9
+ * It is deliberately dependency-free and isomorphic (browser + Node): the only
10
+ * requirement is a `fetch` implementation, which is injected (defaults to the
11
+ * global `fetch`).
12
+ */
13
+ /** The closed set of vendor types an engine can be. */
14
+ export declare const ENGINE_TYPES: readonly ["ollama", "deepseek", "openai", "anthropic", "gemini", "xai", "openrouter", "custom"];
15
+ export type EngineType = (typeof ENGINE_TYPES)[number];
16
+ /** Runtime guard for the closed vendor set. */
17
+ export declare function isEngineType(value: string | null | undefined): value is EngineType;
18
+ /** How the vendor expects the credential to be attached to a request. */
19
+ export interface EngineAuthSpec {
20
+ kind: 'bearer' | 'x-api-key' | 'none';
21
+ /** Header carrying the key when `kind === 'x-api-key'`. */
22
+ headerName?: string;
23
+ /** Extra static headers the vendor requires (e.g. Anthropic version, OpenRouter attribution). */
24
+ extraHeaders?: Record<string, string>;
25
+ /** Where the key goes in the URL query for query-auth vendors (reserved). */
26
+ queryParam?: string;
27
+ }
28
+ /** Everything that differs between vendors, in one place. */
29
+ export interface EngineTypeDescriptor {
30
+ type: EngineType;
31
+ label: string;
32
+ defaultEndpoint: string;
33
+ endpointRequired: boolean;
34
+ apiKeyRequired: boolean;
35
+ supportsChat: boolean;
36
+ supportsEmbed: boolean;
37
+ defaultModel: string;
38
+ modelRequired: boolean;
39
+ auth: EngineAuthSpec;
40
+ /** Path appended to the endpoint for a chat completion. */
41
+ chatPath: string;
42
+ /** Path appended to the endpoint for embeddings (absent when unsupported). */
43
+ embedPath?: string;
44
+ /** Primary health/models probe path. */
45
+ healthPath: string;
46
+ /** Optional fallback probe path (e.g. Ollama native tags vs OpenAI models). */
47
+ healthFallbackPath?: string;
48
+ /** How to read chat responses and stream chunks from this vendor. */
49
+ responseStyle: 'openai' | 'anthropic';
50
+ }
51
+ /** Normalized engine configuration used by the access layer. */
52
+ export interface EngineConfig {
53
+ type: EngineType;
54
+ /** Overrides the descriptor default when provided. */
55
+ endpoint?: string;
56
+ apiKey?: string;
57
+ model?: string;
58
+ }
59
+ export interface EngineConfigFieldError {
60
+ field: 'type' | 'endpoint' | 'apiKey' | 'model';
61
+ message: string;
62
+ }
63
+ export interface EngineMessage {
64
+ role: 'system' | 'user' | 'assistant';
65
+ content: string;
66
+ }
67
+ export interface ChatOptions {
68
+ /** Ask the vendor to stream (used by `chatStream`). */
69
+ stream?: boolean;
70
+ signal?: AbortSignal;
71
+ temperature?: number;
72
+ }
73
+ export interface ChatResult {
74
+ content: string;
75
+ finishReason?: string;
76
+ }
77
+ export interface EmbedResult {
78
+ embeddings: number[][];
79
+ }
80
+ /** Stable error taxonomy across vendors and transport failures. */
81
+ export type EngineErrorCategory = 'unreachable' | 'auth' | 'rate_limited' | 'bad_request' | 'server' | 'timeout' | 'unknown';
82
+ export interface EngineHealth {
83
+ ok: boolean;
84
+ latencyMs: number;
85
+ status?: number;
86
+ error?: string;
87
+ category?: EngineErrorCategory;
88
+ }
89
+ /** Minimal isomorphic `Response` shape (avoids depending on DOM/Node lib types). */
90
+ export interface EngineFetchResponse {
91
+ ok: boolean;
92
+ status: number;
93
+ text(): Promise<string>;
94
+ json(): Promise<unknown>;
95
+ body?: ReadableStreamLike | null;
96
+ }
97
+ export interface ReadableStreamLike {
98
+ getReader(): ReadableStreamReaderLike;
99
+ }
100
+ export interface ReadableStreamReaderLike {
101
+ read(): Promise<{
102
+ done: boolean;
103
+ value?: Uint8Array;
104
+ }>;
105
+ releaseLock?(): void;
106
+ cancel?(): Promise<void> | void;
107
+ }
108
+ export type EngineFetch = (url: string, init?: {
109
+ method?: string;
110
+ headers?: Record<string, string>;
111
+ body?: string;
112
+ signal?: AbortSignal;
113
+ }) => Promise<EngineFetchResponse>;
114
+ export interface EngineClientDeps {
115
+ fetch?: EngineFetch;
116
+ }
117
+ /**
118
+ * The uniform facade every product uses. No method requires knowing the vendor.
119
+ */
120
+ export interface EngineClient {
121
+ /** Resolved configuration (with descriptor defaults applied). */
122
+ readonly config: Required<Pick<EngineConfig, 'type' | 'endpoint' | 'model'>> & {
123
+ apiKey?: string;
124
+ };
125
+ chat(messages: EngineMessage[], options?: ChatOptions): Promise<ChatResult>;
126
+ chatStream(messages: EngineMessage[], options?: ChatOptions): AsyncIterable<string>;
127
+ embed(input: string[]): Promise<EmbedResult>;
128
+ health(): Promise<EngineHealth>;
129
+ }
130
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/llm-engines/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ /**
3
+ * Vendor-neutral LLM Engine access layer.
4
+ *
5
+ * This module is the SDK's translation layer between a product and an LLM
6
+ * vendor (Ollama, DeepSeek, OpenAI, Anthropic, Gemini, xAI, OpenRouter, or any
7
+ * OpenAI-compatible "custom" endpoint). Callers configure an engine once and
8
+ * then use the same `chat` / `embed` / `health` surface regardless of vendor.
9
+ *
10
+ * It is deliberately dependency-free and isomorphic (browser + Node): the only
11
+ * requirement is a `fetch` implementation, which is injected (defaults to the
12
+ * global `fetch`).
13
+ */
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.ENGINE_TYPES = void 0;
16
+ exports.isEngineType = isEngineType;
17
+ /** The closed set of vendor types an engine can be. */
18
+ exports.ENGINE_TYPES = [
19
+ 'ollama',
20
+ 'deepseek',
21
+ 'openai',
22
+ 'anthropic',
23
+ 'gemini',
24
+ 'xai',
25
+ 'openrouter',
26
+ 'custom',
27
+ ];
28
+ /** Runtime guard for the closed vendor set. */
29
+ function isEngineType(value) {
30
+ return typeof value === 'string' && exports.ENGINE_TYPES.includes(value);
31
+ }
32
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/llm-engines/types.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;;;AAiBH,oCAEC;AAjBD,uDAAuD;AAC1C,QAAA,YAAY,GAAG;IACxB,QAAQ;IACR,UAAU;IACV,QAAQ;IACR,WAAW;IACX,QAAQ;IACR,KAAK;IACL,YAAY;IACZ,QAAQ;CACF,CAAC;AAIX,+CAA+C;AAC/C,SAAgB,YAAY,CAAC,KAAgC;IACzD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAK,oBAAkC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC5F,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { McpCallRequest, McpCallResult, McpHost, McpTool, McpToolHandler } from './types';
2
+ /**
3
+ * In-memory MCP host for frontend tool packs and tests.
4
+ * Backend packs are executed by provili-be; FE registers research (and future) packs here.
5
+ */
6
+ export declare class InMemoryMcpHost implements McpHost {
7
+ private readonly tools;
8
+ register(handler: McpToolHandler): void;
9
+ registerAll(handlers: McpToolHandler[]): void;
10
+ listTools(): McpTool[];
11
+ callTool(req: McpCallRequest): Promise<McpCallResult>;
12
+ }
13
+ //# sourceMappingURL=host.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../../src/mcp/host.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,aAAa,EACb,OAAO,EACP,OAAO,EACP,cAAc,EACf,MAAM,SAAS,CAAC;AAEjB;;;GAGG;AACH,qBAAa,eAAgB,YAAW,OAAO;IAC7C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqC;IAE3D,QAAQ,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAWvC,WAAW,CAAC,QAAQ,EAAE,cAAc,EAAE,GAAG,IAAI;IAM7C,SAAS,IAAI,OAAO,EAAE;IAIhB,QAAQ,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;CAwC5D"}
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InMemoryMcpHost = void 0;
4
+ /**
5
+ * In-memory MCP host for frontend tool packs and tests.
6
+ * Backend packs are executed by provili-be; FE registers research (and future) packs here.
7
+ */
8
+ class InMemoryMcpHost {
9
+ constructor() {
10
+ this.tools = new Map();
11
+ }
12
+ register(handler) {
13
+ const name = handler.definition.name;
14
+ if (!name) {
15
+ throw new Error('MCP tool definition requires a name');
16
+ }
17
+ if (this.tools.has(name)) {
18
+ throw new Error(`MCP tool already registered: ${name}`);
19
+ }
20
+ this.tools.set(name, handler);
21
+ }
22
+ registerAll(handlers) {
23
+ for (const h of handlers) {
24
+ this.register(h);
25
+ }
26
+ }
27
+ listTools() {
28
+ return [...this.tools.values()].map((h) => h.definition);
29
+ }
30
+ async callTool(req) {
31
+ const started = Date.now();
32
+ const handler = this.tools.get(req.name);
33
+ if (!handler) {
34
+ return {
35
+ ok: false,
36
+ isError: true,
37
+ error: `unknown tool: ${req.name}`,
38
+ content: [{ type: 'text', text: `unknown tool: ${req.name}` }],
39
+ meta: { duration_ms: Date.now() - started, call_id: req.call_id },
40
+ };
41
+ }
42
+ try {
43
+ const args = req.arguments ?? {};
44
+ const result = await handler.call(args);
45
+ return {
46
+ ...result,
47
+ meta: {
48
+ pack: handler.definition.pack,
49
+ call_id: req.call_id,
50
+ duration_ms: Date.now() - started,
51
+ ...result.meta,
52
+ },
53
+ };
54
+ }
55
+ catch (err) {
56
+ const message = err instanceof Error ? err.message : String(err);
57
+ return {
58
+ ok: false,
59
+ isError: true,
60
+ error: message,
61
+ content: [{ type: 'text', text: message }],
62
+ meta: {
63
+ pack: handler.definition.pack,
64
+ call_id: req.call_id,
65
+ duration_ms: Date.now() - started,
66
+ },
67
+ };
68
+ }
69
+ }
70
+ }
71
+ exports.InMemoryMcpHost = InMemoryMcpHost;
72
+ //# sourceMappingURL=host.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"host.js","sourceRoot":"","sources":["../../src/mcp/host.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export * from './types';
2
+ export * from './host';
3
+ export * from './mcp.service';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,CAAC"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./types"), exports);
5
+ tslib_1.__exportStar(require("./host"), exports);
6
+ tslib_1.__exportStar(require("./mcp.service"), exports);
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":";;;AAAA,kDAAwB;AACxB,iDAAuB;AACvB,wDAA8B"}
@@ -0,0 +1,21 @@
1
+ import { ProviliHttpClient } from '../core/http-client';
2
+ import type { McpCallRequest, McpCallResult, McpTool } from './types';
3
+ /**
4
+ * HTTP client for backend MCP host (list + call + research proxy).
5
+ */
6
+ export declare class ProviliMcpService {
7
+ private httpClient;
8
+ constructor(httpClient: ProviliHttpClient);
9
+ listTools(): Promise<McpTool[]>;
10
+ callTool(req: McpCallRequest): Promise<McpCallResult>;
11
+ /**
12
+ * Convenience for research pack: same as callTool({ name: 'research.fetch', ... }).
13
+ * Available once the research pack is registered on the backend.
14
+ */
15
+ researchFetch(args: {
16
+ url: string;
17
+ method?: string;
18
+ max_bytes?: number;
19
+ }): Promise<McpCallResult>;
20
+ }
21
+ //# sourceMappingURL=mcp.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.service.d.ts","sourceRoot":"","sources":["../../src/mcp/mcp.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAEV,cAAc,EACd,aAAa,EACb,OAAO,EACR,MAAM,SAAS,CAAC;AAEjB;;GAEG;AACH,qBAAa,iBAAiB;IAChB,OAAO,CAAC,UAAU;gBAAV,UAAU,EAAE,iBAAiB;IAE3C,SAAS,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAK/B,QAAQ,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;IAS3D;;;OAGG;IACG,aAAa,CAAC,IAAI,EAAE;QACxB,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,GAAG,OAAO,CAAC,aAAa,CAAC;CAM3B"}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ProviliMcpService = void 0;
4
+ /**
5
+ * HTTP client for backend MCP host (list + call + research proxy).
6
+ */
7
+ class ProviliMcpService {
8
+ constructor(httpClient) {
9
+ this.httpClient = httpClient;
10
+ }
11
+ async listTools() {
12
+ const response = await this.httpClient.get('/mcp/tools');
13
+ return response.tools ?? [];
14
+ }
15
+ async callTool(req) {
16
+ return this.httpClient.post('/mcp/call', {
17
+ name: req.name,
18
+ arguments: req.arguments ?? {},
19
+ call_id: req.call_id,
20
+ timeout_ms: req.timeout_ms,
21
+ });
22
+ }
23
+ /**
24
+ * Convenience for research pack: same as callTool({ name: 'research.fetch', ... }).
25
+ * Available once the research pack is registered on the backend.
26
+ */
27
+ async researchFetch(args) {
28
+ return this.callTool({
29
+ name: 'research.fetch',
30
+ arguments: args,
31
+ });
32
+ }
33
+ }
34
+ exports.ProviliMcpService = ProviliMcpService;
35
+ //# sourceMappingURL=mcp.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.service.js","sourceRoot":"","sources":["../../src/mcp/mcp.service.ts"],"names":[],"mappings":";;;AAQA;;GAEG;AACH,MAAa,iBAAiB;IAC5B,YAAoB,UAA6B;QAA7B,eAAU,GAAV,UAAU,CAAmB;IAAG,CAAC;IAErD,KAAK,CAAC,SAAS;QACb,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAuB,YAAY,CAAC,CAAC;QAC/E,OAAO,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,GAAmB;QAChC,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAgB,WAAW,EAAE;YACtD,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,SAAS,EAAE,GAAG,CAAC,SAAS,IAAI,EAAE;YAC9B,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,UAAU,EAAE,GAAG,CAAC,UAAU;SAC3B,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,aAAa,CAAC,IAInB;QACC,OAAO,IAAI,CAAC,QAAQ,CAAC;YACnB,IAAI,EAAE,gBAAgB;YACtB,SAAS,EAAE,IAA+B;SAC3C,CAAC,CAAC;IACL,CAAC;CACF;AA/BD,8CA+BC"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Product MCP shapes (ADR-0017).
3
+ * Compatible enough with Model Context Protocol tool descriptors for later export.
4
+ */
5
+ /** Minimal JSON Schema object for tool inputs. */
6
+ export type JsonSchemaObject = {
7
+ type?: string | string[];
8
+ properties?: Record<string, unknown>;
9
+ required?: string[];
10
+ additionalProperties?: boolean | Record<string, unknown>;
11
+ description?: string;
12
+ items?: unknown;
13
+ enum?: unknown[];
14
+ [key: string]: unknown;
15
+ };
16
+ export type McpSide = 'backend' | 'frontend';
17
+ export interface McpTool {
18
+ /** Dotted name, e.g. time.now, math.eval */
19
+ name: string;
20
+ description: string;
21
+ inputSchema: JsonSchemaObject;
22
+ pack: string;
23
+ side: McpSide;
24
+ }
25
+ export interface McpCallRequest {
26
+ name: string;
27
+ arguments?: Record<string, unknown>;
28
+ call_id?: string;
29
+ timeout_ms?: number;
30
+ }
31
+ export type McpContentPart = {
32
+ type: 'text';
33
+ text: string;
34
+ } | {
35
+ type: 'json';
36
+ json: unknown;
37
+ };
38
+ export interface McpCallResult {
39
+ ok: boolean;
40
+ content: McpContentPart[];
41
+ isError?: boolean;
42
+ meta?: {
43
+ duration_ms?: number;
44
+ pack?: string;
45
+ call_id?: string;
46
+ };
47
+ error?: string;
48
+ }
49
+ export interface McpToolHandler {
50
+ definition: McpTool;
51
+ call(args: Record<string, unknown>): Promise<McpCallResult> | McpCallResult;
52
+ }
53
+ export interface McpHost {
54
+ listTools(): Promise<McpTool[]> | McpTool[];
55
+ callTool(req: McpCallRequest): Promise<McpCallResult>;
56
+ }
57
+ export interface ListMcpToolsResponse {
58
+ tools: McpTool[];
59
+ }
60
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/mcp/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,kDAAkD;AAClD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,oBAAoB,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC;IACjB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,OAAO,GAAG,SAAS,GAAG,UAAU,CAAC;AAE7C,MAAM,WAAW,OAAO;IACtB,4CAA4C;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,gBAAgB,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,cAAc,GACtB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC;AAEpC,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE;QACL,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,GAAG,aAAa,CAAC;CAC7E;AAED,MAAM,WAAW,OAAO;IACtB,SAAS,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC;IAC5C,QAAQ,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;CACvD;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,OAAO,EAAE,CAAC;CAClB"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ /**
3
+ * Product MCP shapes (ADR-0017).
4
+ * Compatible enough with Model Context Protocol tool descriptors for later export.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/mcp/types.ts"],"names":[],"mappings":";AAAA;;;GAGG"}
@@ -0,0 +1,62 @@
1
+ export type ImaginationLevel = 'none' | 'grounded' | 'balanced' | 'creative' | 'wild' | 'borderline';
2
+ export interface Agent {
3
+ id: number;
4
+ name: string;
5
+ personality: string;
6
+ background: string;
7
+ allow_nsfw: boolean;
8
+ avatar_url: string;
9
+ color: string;
10
+ temperature: number;
11
+ imagination_level: ImaginationLevel;
12
+ about_me: string;
13
+ created_at: string;
14
+ updated_at: string;
15
+ }
16
+ export interface CreateAgentRequest {
17
+ name: string;
18
+ personality?: string;
19
+ background?: string;
20
+ allow_nsfw?: boolean;
21
+ avatar_url?: string;
22
+ color?: string;
23
+ imagination_level?: ImaginationLevel;
24
+ }
25
+ export interface UpdateAgentRequest {
26
+ name?: string;
27
+ personality?: string;
28
+ background?: string;
29
+ allow_nsfw?: boolean;
30
+ avatar_url?: string;
31
+ color?: string;
32
+ imagination_level?: ImaginationLevel;
33
+ }
34
+ /** Per-agent product MCP allowlist (ADR-0017). mode all = no restriction. */
35
+ export interface AgentMcpToolsConfig {
36
+ mode: 'all' | 'allowlist';
37
+ patterns: string[];
38
+ catalog?: Array<{
39
+ name: string;
40
+ description: string;
41
+ pack: string;
42
+ side: string;
43
+ inputSchema?: Record<string, unknown>;
44
+ }>;
45
+ }
46
+ /** POST /agents/{id}/wake — defrost + tool discovery. */
47
+ export interface AgentWakeResponse {
48
+ agent_id: number;
49
+ status: string;
50
+ defrosted_at: string;
51
+ awake_at: string;
52
+ tools: Array<{
53
+ name: string;
54
+ description: string;
55
+ pack: string;
56
+ side: string;
57
+ inputSchema?: Record<string, unknown>;
58
+ }>;
59
+ tool_count: number;
60
+ cached?: boolean;
61
+ }
62
+ //# sourceMappingURL=agent.model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.model.d.ts","sourceRoot":"","sources":["../../src/models/agent.model.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,UAAU,GAAG,UAAU,GAAG,UAAU,GAAG,MAAM,GAAG,YAAY,CAAC;AAErG,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,gBAAgB,CAAC;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iBAAiB,CAAC,EAAE,gBAAgB,CAAC;CACtC;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iBAAiB,CAAC,EAAE,gBAAgB,CAAC;CACtC;AAED,6EAA6E;AAC7E,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,KAAK,GAAG,WAAW,CAAC;IAC1B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,KAAK,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACvC,CAAC,CAAC;CACJ;AAED,yDAAyD;AACzD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,KAAK,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACvC,CAAC,CAAC;IACH,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=agent.model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.model.js","sourceRoot":"","sources":["../../src/models/agent.model.ts"],"names":[],"mappings":""}
@@ -0,0 +1,27 @@
1
+ export interface AiChatMessage {
2
+ role: 'system' | 'user' | 'assistant';
3
+ content: string;
4
+ }
5
+ export interface AiChatRequest {
6
+ model: string;
7
+ messages: AiChatMessage[];
8
+ temperature?: number;
9
+ max_tokens?: number;
10
+ stream?: boolean;
11
+ }
12
+ export interface AiChatChunk {
13
+ content: string;
14
+ done: boolean;
15
+ }
16
+ export interface AiChatCallbacks {
17
+ onChunk: (chunk: AiChatChunk) => void;
18
+ onComplete: (fullContent: string) => void;
19
+ onError: (error: Error) => void;
20
+ }
21
+ export interface AiChatConfig {
22
+ baseUrl: string;
23
+ model: string;
24
+ temperature?: number;
25
+ maxTokens?: number;
26
+ }
27
+ //# sourceMappingURL=ai-chat.model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-chat.model.d.ts","sourceRoot":"","sources":["../../src/models/ai-chat.model.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;IACtC,UAAU,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CACjC;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=ai-chat.model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-chat.model.js","sourceRoot":"","sources":["../../src/models/ai-chat.model.ts"],"names":[],"mappings":""}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Unified API Error model for Pro.vi.li platform
3
+ * This model is shared between frontend and backend
4
+ */
5
+ export declare enum API_ERROR_TYPE {
6
+ BAD_REQUEST = "BAD_REQUEST",
7
+ UNAUTHORIZED = "UNAUTHORIZED",
8
+ FORBIDDEN = "FORBIDDEN",
9
+ NOT_FOUND = "NOT_FOUND",
10
+ INTERNAL_SERVER_ERROR = "INTERNAL_SERVER_ERROR",
11
+ VALIDATION_ERROR = "VALIDATION_ERROR",
12
+ CONFLICT = "CONFLICT",
13
+ RATE_LIMIT_EXCEEDED = "RATE_LIMIT_EXCEEDED",
14
+ NETWORK_ERROR = "NETWORK_ERROR",
15
+ TIMEOUT_ERROR = "TIMEOUT_ERROR"
16
+ }
17
+ export interface ApiError {
18
+ type: API_ERROR_TYPE;
19
+ message: string;
20
+ details?: Record<string, unknown>;
21
+ statusCode: number;
22
+ }
23
+ /**
24
+ * API Error helper class for client-side usage
25
+ */
26
+ export declare class ApiStandardError extends Error {
27
+ type: API_ERROR_TYPE;
28
+ statusCode: number;
29
+ details?: Record<string, unknown>;
30
+ constructor(type: API_ERROR_TYPE, message: string, details?: Record<string, unknown>);
31
+ private getStatusCode;
32
+ }
33
+ //# sourceMappingURL=api-error.model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-error.model.d.ts","sourceRoot":"","sources":["../../src/models/api-error.model.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,oBAAY,cAAc;IACtB,WAAW,gBAAgB;IAC3B,YAAY,iBAAiB;IAC7B,SAAS,cAAc;IACvB,SAAS,cAAc;IACvB,qBAAqB,0BAA0B;IAC/C,gBAAgB,qBAAqB;IACrC,QAAQ,aAAa;IACrB,mBAAmB,wBAAwB;IAC3C,aAAa,kBAAkB;IAC/B,aAAa,kBAAkB;CAClC;AAED,MAAM,WAAW,QAAQ;IACrB,IAAI,EAAE,cAAc,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,UAAU,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,KAAK;IAChC,IAAI,EAAE,cAAc,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBAE7B,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAQpF,OAAO,CAAC,aAAa;CAyBxB"}
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ /**
3
+ * Unified API Error model for Pro.vi.li platform
4
+ * This model is shared between frontend and backend
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.ApiStandardError = exports.API_ERROR_TYPE = void 0;
8
+ var API_ERROR_TYPE;
9
+ (function (API_ERROR_TYPE) {
10
+ API_ERROR_TYPE["BAD_REQUEST"] = "BAD_REQUEST";
11
+ API_ERROR_TYPE["UNAUTHORIZED"] = "UNAUTHORIZED";
12
+ API_ERROR_TYPE["FORBIDDEN"] = "FORBIDDEN";
13
+ API_ERROR_TYPE["NOT_FOUND"] = "NOT_FOUND";
14
+ API_ERROR_TYPE["INTERNAL_SERVER_ERROR"] = "INTERNAL_SERVER_ERROR";
15
+ API_ERROR_TYPE["VALIDATION_ERROR"] = "VALIDATION_ERROR";
16
+ API_ERROR_TYPE["CONFLICT"] = "CONFLICT";
17
+ API_ERROR_TYPE["RATE_LIMIT_EXCEEDED"] = "RATE_LIMIT_EXCEEDED";
18
+ API_ERROR_TYPE["NETWORK_ERROR"] = "NETWORK_ERROR";
19
+ API_ERROR_TYPE["TIMEOUT_ERROR"] = "TIMEOUT_ERROR";
20
+ })(API_ERROR_TYPE || (exports.API_ERROR_TYPE = API_ERROR_TYPE = {}));
21
+ /**
22
+ * API Error helper class for client-side usage
23
+ */
24
+ class ApiStandardError extends Error {
25
+ constructor(type, message, details) {
26
+ super(message);
27
+ this.type = type;
28
+ this.message = message;
29
+ this.details = details;
30
+ this.statusCode = this.getStatusCode(type);
31
+ }
32
+ getStatusCode(type) {
33
+ switch (type) {
34
+ case API_ERROR_TYPE.BAD_REQUEST:
35
+ return 400;
36
+ case API_ERROR_TYPE.UNAUTHORIZED:
37
+ return 401;
38
+ case API_ERROR_TYPE.FORBIDDEN:
39
+ return 403;
40
+ case API_ERROR_TYPE.NOT_FOUND:
41
+ return 404;
42
+ case API_ERROR_TYPE.CONFLICT:
43
+ return 409;
44
+ case API_ERROR_TYPE.RATE_LIMIT_EXCEEDED:
45
+ return 429;
46
+ case API_ERROR_TYPE.VALIDATION_ERROR:
47
+ return 422;
48
+ case API_ERROR_TYPE.NETWORK_ERROR:
49
+ return 0; // Network errors don't have HTTP status codes
50
+ case API_ERROR_TYPE.TIMEOUT_ERROR:
51
+ return 408;
52
+ case API_ERROR_TYPE.INTERNAL_SERVER_ERROR:
53
+ default:
54
+ return 500;
55
+ }
56
+ }
57
+ }
58
+ exports.ApiStandardError = ApiStandardError;
59
+ //# sourceMappingURL=api-error.model.js.map