@loopstack/llm-provider-module 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 (82) hide show
  1. package/dist/contracts/index.d.ts +3 -0
  2. package/dist/contracts/index.d.ts.map +1 -0
  3. package/dist/contracts/index.js +19 -0
  4. package/dist/contracts/index.js.map +1 -0
  5. package/dist/contracts/llm-context.d.ts +7 -0
  6. package/dist/contracts/llm-context.d.ts.map +1 -0
  7. package/dist/contracts/llm-context.js +3 -0
  8. package/dist/contracts/llm-context.js.map +1 -0
  9. package/dist/contracts/llm-provider.interface.d.ts +10 -0
  10. package/dist/contracts/llm-provider.interface.d.ts.map +1 -0
  11. package/dist/contracts/llm-provider.interface.js +3 -0
  12. package/dist/contracts/llm-provider.interface.js.map +1 -0
  13. package/dist/documents/index.d.ts +2 -0
  14. package/dist/documents/index.d.ts.map +1 -0
  15. package/dist/documents/index.js +18 -0
  16. package/dist/documents/index.js.map +1 -0
  17. package/dist/documents/llm-message.document.d.ts +50 -0
  18. package/dist/documents/llm-message.document.d.ts.map +1 -0
  19. package/dist/documents/llm-message.document.js +35 -0
  20. package/dist/documents/llm-message.document.js.map +1 -0
  21. package/dist/documents/llm-message.document.yaml +5 -0
  22. package/dist/index.d.ts +8 -0
  23. package/dist/index.d.ts.map +1 -0
  24. package/dist/index.js +24 -0
  25. package/dist/index.js.map +1 -0
  26. package/dist/llm-provider.module.d.ts +3 -0
  27. package/dist/llm-provider.module.d.ts.map +1 -0
  28. package/dist/llm-provider.module.js +46 -0
  29. package/dist/llm-provider.module.js.map +1 -0
  30. package/dist/services/index.d.ts +4 -0
  31. package/dist/services/index.d.ts.map +1 -0
  32. package/dist/services/index.js +20 -0
  33. package/dist/services/index.js.map +1 -0
  34. package/dist/services/llm-delegate.service.d.ts +12 -0
  35. package/dist/services/llm-delegate.service.d.ts.map +1 -0
  36. package/dist/services/llm-delegate.service.js +134 -0
  37. package/dist/services/llm-delegate.service.js.map +1 -0
  38. package/dist/services/llm-provider-registry.d.ts +9 -0
  39. package/dist/services/llm-provider-registry.d.ts.map +1 -0
  40. package/dist/services/llm-provider-registry.js +36 -0
  41. package/dist/services/llm-provider-registry.js.map +1 -0
  42. package/dist/services/llm-tools-helper.service.d.ts +6 -0
  43. package/dist/services/llm-tools-helper.service.d.ts.map +1 -0
  44. package/dist/services/llm-tools-helper.service.js +48 -0
  45. package/dist/services/llm-tools-helper.service.js.map +1 -0
  46. package/dist/tools/index.d.ts +5 -0
  47. package/dist/tools/index.d.ts.map +1 -0
  48. package/dist/tools/index.js +21 -0
  49. package/dist/tools/index.js.map +1 -0
  50. package/dist/tools/llm-delegate-tool-calls.tool.d.ts +55 -0
  51. package/dist/tools/llm-delegate-tool-calls.tool.d.ts.map +1 -0
  52. package/dist/tools/llm-delegate-tool-calls.tool.js +55 -0
  53. package/dist/tools/llm-delegate-tool-calls.tool.js.map +1 -0
  54. package/dist/tools/llm-generate-object.tool.d.ts +40 -0
  55. package/dist/tools/llm-generate-object.tool.d.ts.map +1 -0
  56. package/dist/tools/llm-generate-object.tool.js +81 -0
  57. package/dist/tools/llm-generate-object.tool.js.map +1 -0
  58. package/dist/tools/llm-generate-text.tool.d.ts +39 -0
  59. package/dist/tools/llm-generate-text.tool.d.ts.map +1 -0
  60. package/dist/tools/llm-generate-text.tool.js +81 -0
  61. package/dist/tools/llm-generate-text.tool.js.map +1 -0
  62. package/dist/tools/llm-update-tool-result.tool.d.ts +21 -0
  63. package/dist/tools/llm-update-tool-result.tool.d.ts.map +1 -0
  64. package/dist/tools/llm-update-tool-result.tool.js +48 -0
  65. package/dist/tools/llm-update-tool-result.tool.js.map +1 -0
  66. package/dist/types/index.d.ts +2 -0
  67. package/dist/types/index.d.ts.map +1 -0
  68. package/dist/types/index.js +18 -0
  69. package/dist/types/index.js.map +1 -0
  70. package/dist/types/llm.types.d.ts +155 -0
  71. package/dist/types/llm.types.d.ts.map +1 -0
  72. package/dist/types/llm.types.js +14 -0
  73. package/dist/types/llm.types.js.map +1 -0
  74. package/dist/utils/extract-text.util.d.ts +3 -0
  75. package/dist/utils/extract-text.util.d.ts.map +1 -0
  76. package/dist/utils/extract-text.util.js +13 -0
  77. package/dist/utils/extract-text.util.js.map +1 -0
  78. package/dist/utils/index.d.ts +2 -0
  79. package/dist/utils/index.d.ts.map +1 -0
  80. package/dist/utils/index.js +18 -0
  81. package/dist/utils/index.js.map +1 -0
  82. package/package.json +68 -0
@@ -0,0 +1,155 @@
1
+ import { z } from 'zod';
2
+ import type { UIContentBlock } from '@loopstack/contracts/types';
3
+ export declare const LlmConfigSchema: z.ZodObject<{
4
+ model: z.ZodOptional<z.ZodString>;
5
+ }, z.core.$strip>;
6
+ export type LlmConfig = z.infer<typeof LlmConfigSchema>;
7
+ export declare const LlmContentBlockSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
8
+ type: z.ZodLiteral<"text">;
9
+ text: z.ZodString;
10
+ }, z.core.$strip>, z.ZodObject<{
11
+ type: z.ZodLiteral<"thinking">;
12
+ text: z.ZodString;
13
+ }, z.core.$strip>, z.ZodObject<{
14
+ type: z.ZodLiteral<"tool_call">;
15
+ id: z.ZodString;
16
+ name: z.ZodString;
17
+ args: z.ZodRecord<z.ZodString, z.ZodUnknown>;
18
+ }, z.core.$strip>, z.ZodObject<{
19
+ type: z.ZodLiteral<"server_tool_use">;
20
+ id: z.ZodString;
21
+ name: z.ZodString;
22
+ input: z.ZodRecord<z.ZodString, z.ZodUnknown>;
23
+ }, z.core.$strip>, z.ZodObject<{
24
+ type: z.ZodLiteral<"server_tool_result">;
25
+ toolUseId: z.ZodString;
26
+ content: z.ZodUnknown;
27
+ }, z.core.$strip>, z.ZodObject<{
28
+ type: z.ZodLiteral<"tool_result">;
29
+ toolCallId: z.ZodString;
30
+ content: z.ZodString;
31
+ isError: z.ZodBoolean;
32
+ }, z.core.$strip>], "type">;
33
+ export type LlmContentBlock = UIContentBlock;
34
+ export declare const LlmNormalizedMessageSchema: z.ZodObject<{
35
+ role: z.ZodEnum<{
36
+ user: "user";
37
+ assistant: "assistant";
38
+ }>;
39
+ content: z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
40
+ type: z.ZodLiteral<"text">;
41
+ text: z.ZodString;
42
+ }, z.core.$strip>, z.ZodObject<{
43
+ type: z.ZodLiteral<"thinking">;
44
+ text: z.ZodString;
45
+ }, z.core.$strip>, z.ZodObject<{
46
+ type: z.ZodLiteral<"tool_call">;
47
+ id: z.ZodString;
48
+ name: z.ZodString;
49
+ args: z.ZodRecord<z.ZodString, z.ZodUnknown>;
50
+ }, z.core.$strip>, z.ZodObject<{
51
+ type: z.ZodLiteral<"server_tool_use">;
52
+ id: z.ZodString;
53
+ name: z.ZodString;
54
+ input: z.ZodRecord<z.ZodString, z.ZodUnknown>;
55
+ }, z.core.$strip>, z.ZodObject<{
56
+ type: z.ZodLiteral<"server_tool_result">;
57
+ toolUseId: z.ZodString;
58
+ content: z.ZodUnknown;
59
+ }, z.core.$strip>, z.ZodObject<{
60
+ type: z.ZodLiteral<"tool_result">;
61
+ toolCallId: z.ZodString;
62
+ content: z.ZodString;
63
+ isError: z.ZodBoolean;
64
+ }, z.core.$strip>], "type">>]>;
65
+ id: z.ZodOptional<z.ZodString>;
66
+ stopReason: z.ZodOptional<z.ZodEnum<{
67
+ end_turn: "end_turn";
68
+ tool_use: "tool_use";
69
+ max_tokens: "max_tokens";
70
+ stop_sequence: "stop_sequence";
71
+ }>>;
72
+ }, z.core.$strip>;
73
+ export type LlmNormalizedMessage = z.infer<typeof LlmNormalizedMessageSchema>;
74
+ export type LlmStopReason = NonNullable<LlmNormalizedMessage['stopReason']>;
75
+ export interface LlmToolCall {
76
+ id: string;
77
+ name: string;
78
+ args: Record<string, unknown>;
79
+ }
80
+ export interface LlmMessage {
81
+ role: 'user' | 'assistant';
82
+ content: string | unknown[];
83
+ }
84
+ export interface LlmGenerateTextArgs<TProviderConfig = Record<string, unknown>> {
85
+ system?: string;
86
+ messages?: LlmMessage[];
87
+ prompt?: string;
88
+ messagesSearchTag?: string;
89
+ tools?: string[];
90
+ model?: string;
91
+ providerConfig?: TProviderConfig;
92
+ }
93
+ export interface LlmUsage {
94
+ inputTokens: number;
95
+ outputTokens: number;
96
+ cacheCreationInputTokens?: number;
97
+ cacheReadInputTokens?: number;
98
+ reasoningTokens?: number;
99
+ }
100
+ export type LlmResultMeta = {
101
+ provider: string;
102
+ model: string;
103
+ usage?: LlmUsage;
104
+ };
105
+ export interface LlmGenerateTextResult {
106
+ message: LlmNormalizedMessage;
107
+ response: unknown;
108
+ }
109
+ export interface LlmGenerateObjectArgs<TProviderConfig = Record<string, unknown>> {
110
+ system?: string;
111
+ messages?: LlmMessage[];
112
+ prompt?: string;
113
+ messagesSearchTag?: string;
114
+ model?: string;
115
+ providerConfig?: TProviderConfig;
116
+ outputSchema: Record<string, unknown>;
117
+ }
118
+ export interface LlmGenerateObjectResult {
119
+ data: unknown;
120
+ response: unknown;
121
+ }
122
+ export interface LlmToolResultEntry {
123
+ type: 'tool_result';
124
+ toolCallId: string;
125
+ content?: string;
126
+ isError?: boolean;
127
+ }
128
+ export interface LlmToolErrorEntry {
129
+ toolName: string;
130
+ toolCallId: string;
131
+ message: string;
132
+ }
133
+ export interface LlmDelegateResult {
134
+ allCompleted: boolean;
135
+ toolResults: LlmToolResultEntry[];
136
+ pendingCount: number;
137
+ errorCount: number;
138
+ hasErrors: boolean;
139
+ errors: LlmToolErrorEntry[];
140
+ }
141
+ export interface LlmToolDefinition {
142
+ name: string;
143
+ description: string;
144
+ inputSchema: Record<string, unknown>;
145
+ }
146
+ export interface LlmServerToolDefinition {
147
+ name: string;
148
+ config: unknown;
149
+ }
150
+ export type LlmResolvedTool = ({
151
+ type: 'tool';
152
+ } & LlmToolDefinition) | ({
153
+ type: 'server_tool';
154
+ } & LlmServerToolDefinition);
155
+ //# sourceMappingURL=llm.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llm.types.d.ts","sourceRoot":"","sources":["../../src/types/llm.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAMjE,eAAO,MAAM,eAAe;;iBAE1B,CAAC;AAEH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAMxD,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;2BAAuB,CAAC;AAC1D,MAAM,MAAM,eAAe,GAAG,cAAc,CAAC;AAE7C,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAGrC,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAE9E,MAAM,MAAM,aAAa,GAAG,WAAW,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC,CAAC;AAM5E,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B;AAMD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,OAAO,EAAE,MAAM,GAAG,OAAO,EAAE,CAAC;CAC7B;AAMD,MAAM,WAAW,mBAAmB,CAAC,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC5E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,UAAU,EAAE,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,cAAc,CAAC,EAAE,eAAe,CAAC;CAClC;AAED,MAAM,WAAW,QAAQ;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAGD,MAAM,MAAM,aAAa,GAAG;IAE1B,QAAQ,EAAE,MAAM,CAAC;IAEjB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,QAAQ,CAAC;CAClB,CAAC;AAEF,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,oBAAoB,CAAC;IAE9B,QAAQ,EAAE,OAAO,CAAC;CACnB;AAMD,MAAM,WAAW,qBAAqB,CAAC,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC9E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,UAAU,EAAE,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,eAAe,CAAC;IAEjC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACvC;AAED,MAAM,WAAW,uBAAuB;IAEtC,IAAI,EAAE,OAAO,CAAC;IAEd,QAAQ,EAAE,OAAO,CAAC;CACnB;AAMD,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,aAAa,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,kBAAkB,EAAE,CAAC;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,iBAAiB,EAAE,CAAC;CAC7B;AAMD,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,MAAM,eAAe,GACvB,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,iBAAiB,CAAC,GACtC,CAAC;IAAE,IAAI,EAAE,aAAa,CAAA;CAAE,GAAG,uBAAuB,CAAC,CAAC"}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LlmNormalizedMessageSchema = exports.LlmContentBlockSchema = exports.LlmConfigSchema = void 0;
4
+ const zod_1 = require("zod");
5
+ const types_1 = require("@loopstack/contracts/types");
6
+ exports.LlmConfigSchema = zod_1.z.object({
7
+ model: zod_1.z.string().optional(),
8
+ });
9
+ exports.LlmContentBlockSchema = types_1.UIContentBlockSchema;
10
+ exports.LlmNormalizedMessageSchema = types_1.UIMessageSchema.extend({
11
+ id: zod_1.z.string().optional(),
12
+ stopReason: zod_1.z.enum(['end_turn', 'tool_use', 'max_tokens', 'stop_sequence']).optional(),
13
+ });
14
+ //# sourceMappingURL=llm.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llm.types.js","sourceRoot":"","sources":["../../src/types/llm.types.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AACxB,sDAAmF;AAOtE,QAAA,eAAe,GAAG,OAAC,CAAC,MAAM,CAAC;IACtC,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC7B,CAAC,CAAC;AAQU,QAAA,qBAAqB,GAAG,4BAAoB,CAAC;AAG7C,QAAA,0BAA0B,GAAG,uBAAe,CAAC,MAAM,CAAC;IAC/D,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACzB,UAAU,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,eAAe,CAAC,CAAC,CAAC,QAAQ,EAAE;CACvF,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { LlmGenerateTextResult } from '../types';
2
+ export declare function extractText(result: LlmGenerateTextResult): string;
3
+ //# sourceMappingURL=extract-text.util.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extract-text.util.d.ts","sourceRoot":"","sources":["../../src/utils/extract-text.util.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAmB,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAEvE,wBAAgB,WAAW,CAAC,MAAM,EAAE,qBAAqB,GAAG,MAAM,CAOjE"}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.extractText = extractText;
4
+ function extractText(result) {
5
+ const content = result.message.content;
6
+ if (!content || typeof content === 'string')
7
+ return content ?? '';
8
+ return content
9
+ .filter((block) => block.type === 'text')
10
+ .map((block) => block.text)
11
+ .join('\n');
12
+ }
13
+ //# sourceMappingURL=extract-text.util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extract-text.util.js","sourceRoot":"","sources":["../../src/utils/extract-text.util.ts"],"names":[],"mappings":";;AAEA,kCAOC;AAPD,SAAgB,WAAW,CAAC,MAA6B;IACvD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;IACvC,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAQ,OAAkB,IAAI,EAAE,CAAC;IAC9E,OAAQ,OAA6B;SAClC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC;SACxC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAE,KAAwC,CAAC,IAAI,CAAC;SAC9D,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './extract-text.util';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./extract-text.util"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sDAAoC"}
package/package.json ADDED
@@ -0,0 +1,68 @@
1
+ {
2
+ "name": "@loopstack/llm-provider-module",
3
+ "displayName": "Loopstack LLM Provider Module",
4
+ "description": "Shared LLM provider contracts, registry, and helper services for the Loopstack automation framework. Provider modules (Claude, OpenAI, etc.) implement the LlmProviderInterface and register themselves at module init.",
5
+ "keywords": [
6
+ "llm",
7
+ "loopstack",
8
+ "module",
9
+ "provider"
10
+ ],
11
+ "version": "0.2.0",
12
+ "license": "MIT",
13
+ "author": {
14
+ "name": "Jakob Klippel",
15
+ "url": "https://www.linkedin.com/in/jakob-klippel/"
16
+ },
17
+ "main": "dist/index.js",
18
+ "types": "dist/index.d.ts",
19
+ "exports": {
20
+ ".": "./dist/index.js"
21
+ },
22
+ "scripts": {
23
+ "build": "nest build",
24
+ "compile": "tsc --noEmit",
25
+ "format": "prettier --write .",
26
+ "lint": "eslint .",
27
+ "test": "jest --passWithNoTests",
28
+ "watch": "nest build --watch"
29
+ },
30
+ "dependencies": {
31
+ "@loopstack/contracts": "^0.29.0",
32
+ "@loopstack/common": "^0.29.0",
33
+ "@loopstack/core": "^0.29.0",
34
+ "zod": "^4.3.6"
35
+ },
36
+ "files": [
37
+ "dist"
38
+ ],
39
+ "jest": {
40
+ "moduleFileExtensions": [
41
+ "js",
42
+ "json",
43
+ "ts"
44
+ ],
45
+ "rootDir": "src",
46
+ "testRegex": ".*\\.spec\\.ts$",
47
+ "transform": {
48
+ "^.+\\.ts$": "ts-jest"
49
+ },
50
+ "collectCoverageFrom": [
51
+ "**/*.(t|j)s"
52
+ ],
53
+ "coverageDirectory": "../coverage",
54
+ "testEnvironment": "node",
55
+ "maxWorkers": 1
56
+ },
57
+ "loopstack": {
58
+ "modules": [
59
+ {
60
+ "path": "src/llm-provider.module.ts",
61
+ "className": "LlmProviderModule"
62
+ }
63
+ ],
64
+ "installModes": [
65
+ "install"
66
+ ]
67
+ }
68
+ }