@sudobility/shapeshyft_engine 1.0.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 (83) hide show
  1. package/CLAUDE.md +27 -0
  2. package/README.md +11 -0
  3. package/dist/config/providers.d.ts +111 -0
  4. package/dist/config/providers.d.ts.map +1 -0
  5. package/dist/config/providers.js +1535 -0
  6. package/dist/config/providers.js.map +1 -0
  7. package/dist/index.d.ts +27 -0
  8. package/dist/index.d.ts.map +1 -0
  9. package/dist/index.js +27 -0
  10. package/dist/index.js.map +1 -0
  11. package/dist/lib/api-helper.d.ts +35 -0
  12. package/dist/lib/api-helper.d.ts.map +1 -0
  13. package/dist/lib/api-helper.js +123 -0
  14. package/dist/lib/api-helper.js.map +1 -0
  15. package/dist/lib/capability-validator.d.ts +36 -0
  16. package/dist/lib/capability-validator.d.ts.map +1 -0
  17. package/dist/lib/capability-validator.js +140 -0
  18. package/dist/lib/capability-validator.js.map +1 -0
  19. package/dist/lib/media-constants.d.ts +55 -0
  20. package/dist/lib/media-constants.d.ts.map +1 -0
  21. package/dist/lib/media-constants.js +166 -0
  22. package/dist/lib/media-constants.js.map +1 -0
  23. package/dist/lib/media-conversion.d.ts +36 -0
  24. package/dist/lib/media-conversion.d.ts.map +1 -0
  25. package/dist/lib/media-conversion.js +87 -0
  26. package/dist/lib/media-conversion.js.map +1 -0
  27. package/dist/lib/media-utils.d.ts +35 -0
  28. package/dist/lib/media-utils.d.ts.map +1 -0
  29. package/dist/lib/media-utils.js +173 -0
  30. package/dist/lib/media-utils.js.map +1 -0
  31. package/dist/lib/output-limit.d.ts +38 -0
  32. package/dist/lib/output-limit.d.ts.map +1 -0
  33. package/dist/lib/output-limit.js +54 -0
  34. package/dist/lib/output-limit.js.map +1 -0
  35. package/dist/lib/prompt-builder.d.ts +94 -0
  36. package/dist/lib/prompt-builder.d.ts.map +1 -0
  37. package/dist/lib/prompt-builder.js +408 -0
  38. package/dist/lib/prompt-builder.js.map +1 -0
  39. package/dist/lib/reserved-fields.d.ts +41 -0
  40. package/dist/lib/reserved-fields.d.ts.map +1 -0
  41. package/dist/lib/reserved-fields.js +47 -0
  42. package/dist/lib/reserved-fields.js.map +1 -0
  43. package/dist/services/llm/anthropic.d.ts +16 -0
  44. package/dist/services/llm/anthropic.d.ts.map +1 -0
  45. package/dist/services/llm/anthropic.js +154 -0
  46. package/dist/services/llm/anthropic.js.map +1 -0
  47. package/dist/services/llm/custom.d.ts +51 -0
  48. package/dist/services/llm/custom.d.ts.map +1 -0
  49. package/dist/services/llm/custom.js +419 -0
  50. package/dist/services/llm/custom.js.map +1 -0
  51. package/dist/services/llm/extract-json.d.ts +17 -0
  52. package/dist/services/llm/extract-json.d.ts.map +1 -0
  53. package/dist/services/llm/extract-json.js +60 -0
  54. package/dist/services/llm/extract-json.js.map +1 -0
  55. package/dist/services/llm/finish-reason.d.ts +21 -0
  56. package/dist/services/llm/finish-reason.d.ts.map +1 -0
  57. package/dist/services/llm/finish-reason.js +55 -0
  58. package/dist/services/llm/finish-reason.js.map +1 -0
  59. package/dist/services/llm/gemini.d.ts +26 -0
  60. package/dist/services/llm/gemini.d.ts.map +1 -0
  61. package/dist/services/llm/gemini.js +178 -0
  62. package/dist/services/llm/gemini.js.map +1 -0
  63. package/dist/services/llm/groq.d.ts +28 -0
  64. package/dist/services/llm/groq.d.ts.map +1 -0
  65. package/dist/services/llm/groq.js +237 -0
  66. package/dist/services/llm/groq.js.map +1 -0
  67. package/dist/services/llm/index.d.ts +19 -0
  68. package/dist/services/llm/index.d.ts.map +1 -0
  69. package/dist/services/llm/index.js +88 -0
  70. package/dist/services/llm/index.js.map +1 -0
  71. package/dist/services/llm/openai.d.ts +101 -0
  72. package/dist/services/llm/openai.d.ts.map +1 -0
  73. package/dist/services/llm/openai.js +561 -0
  74. package/dist/services/llm/openai.js.map +1 -0
  75. package/dist/services/llm/types.d.ts +110 -0
  76. package/dist/services/llm/types.d.ts.map +1 -0
  77. package/dist/services/llm/types.js +16 -0
  78. package/dist/services/llm/types.js.map +1 -0
  79. package/dist/types/index.d.ts +812 -0
  80. package/dist/types/index.d.ts.map +1 -0
  81. package/dist/types/index.js +366 -0
  82. package/dist/types/index.js.map +1 -0
  83. package/package.json +93 -0
@@ -0,0 +1,110 @@
1
+ /**
2
+ * @fileoverview LLM provider type definitions
3
+ * @description Core types for the LLM provider system including request/response
4
+ * types, the provider interface, and cost estimation re-exports.
5
+ */
6
+ import type { FinishReason, JsonSchema, LlmProvider, MediaContent, GeneratedMedia } from "../../types/index.js";
7
+ export type { MediaContent, GeneratedMedia, LlmProvider };
8
+ export { estimateCost, formatCost, formatCostPerMillion, } from "../../types/index.js";
9
+ export type { ModelPricing } from "../../types/index.js";
10
+ export { getModelPricing } from "../../config/providers.js";
11
+ /**
12
+ * Base request fields shared by all variants
13
+ */
14
+ interface LLMRequestBase {
15
+ prompt: string;
16
+ systemPrompt?: string;
17
+ outputSchema: JsonSchema;
18
+ model?: string;
19
+ temperature?: number;
20
+ maxTokens?: number;
21
+ /** Input media (images, audio, video) */
22
+ media?: MediaContent[];
23
+ /** What media types this endpoint generates */
24
+ expectsMediaOutput?: {
25
+ image?: boolean;
26
+ audio?: boolean;
27
+ video?: boolean;
28
+ };
29
+ /** Enable web search (OpenAI Responses API) */
30
+ webSearch?: boolean;
31
+ /** For Whisper: model to use for structured extraction from transcription */
32
+ extractionModel?: string;
33
+ /** For Whisper: API key for the extraction model's provider */
34
+ extractionApiKey?: string;
35
+ }
36
+ /**
37
+ * Request variant when outputMediaFormat is "url" - entityId is REQUIRED
38
+ */
39
+ interface LLMRequestWithUrlOutput extends LLMRequestBase {
40
+ outputMediaFormat: "url";
41
+ entityId: string;
42
+ }
43
+ /**
44
+ * Request variant when outputMediaFormat is "base64" or undefined - entityId is optional
45
+ */
46
+ interface LLMRequestWithBase64Output extends LLMRequestBase {
47
+ outputMediaFormat?: "base64";
48
+ entityId?: string;
49
+ }
50
+ /**
51
+ * Discriminated union ensures entityId is required when outputMediaFormat === "url"
52
+ */
53
+ export type LLMRequest = LLMRequestWithUrlOutput | LLMRequestWithBase64Output;
54
+ /**
55
+ * Type guard for URL output requests
56
+ */
57
+ export declare function requiresEntityId(request: LLMRequest): request is LLMRequestWithUrlOutput;
58
+ /**
59
+ * Response from an LLM provider
60
+ */
61
+ export interface LLMResponse {
62
+ content: unknown;
63
+ rawResponse: string;
64
+ usage: {
65
+ promptTokens: number;
66
+ completionTokens: number;
67
+ totalTokens: number;
68
+ };
69
+ model: string;
70
+ provider: LlmProvider;
71
+ latencyMs: number;
72
+ /**
73
+ * Why the model stopped, normalized across providers. `"length"` means the
74
+ * output ceiling was hit and `content` is truncated. Undefined when the
75
+ * provider reported nothing usable.
76
+ */
77
+ finishReason?: FinishReason;
78
+ /** Generated media (images, audio, video) from generative models */
79
+ generatedMedia?: GeneratedMedia[];
80
+ }
81
+ /**
82
+ * Provider configuration
83
+ */
84
+ export interface ProviderConfig {
85
+ apiKey?: string;
86
+ endpointUrl?: string;
87
+ model?: string;
88
+ /**
89
+ * Wall-clock ceiling for one provider call, in milliseconds. Only the custom
90
+ * (LM Studio) provider honours it today; its default is ten minutes. The
91
+ * caller supplies it -- in the API shells, from LM_STUDIO_TIMEOUT_MS.
92
+ */
93
+ timeoutMs?: number;
94
+ }
95
+ /**
96
+ * LLM Provider interface
97
+ */
98
+ export interface ILLMProvider {
99
+ readonly providerName: LlmProvider;
100
+ /**
101
+ * Generate a structured response from the LLM
102
+ */
103
+ generate(request: LLMRequest): Promise<LLMResponse>;
104
+ /**
105
+ * Build the API payload without calling the LLM
106
+ * Used for Type 3 and Type 4 endpoints
107
+ */
108
+ buildApiPayload(request: LLMRequest): Record<string, unknown>;
109
+ }
110
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/llm/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,UAAU,EACV,WAAW,EACX,YAAY,EACZ,cAAc,EACf,MAAM,sBAAsB,CAAC;AAG9B,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC;AAG1D,OAAO,EACL,YAAY,EACZ,UAAU,EACV,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGzD,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAM5D;;GAEG;AACH,UAAU,cAAc;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,UAAU,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yCAAyC;IACzC,KAAK,CAAC,EAAE,YAAY,EAAE,CAAC;IACvB,+CAA+C;IAC/C,kBAAkB,CAAC,EAAE;QACnB,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,KAAK,CAAC,EAAE,OAAO,CAAC;KACjB,CAAC;IACF,+CAA+C;IAC/C,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,6EAA6E;IAC7E,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,+DAA+D;IAC/D,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,UAAU,uBAAwB,SAAQ,cAAc;IACtD,iBAAiB,EAAE,KAAK,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,UAAU,0BAA2B,SAAQ,cAAc;IACzD,iBAAiB,CAAC,EAAE,QAAQ,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,uBAAuB,GAAG,0BAA0B,CAAC;AAE9E;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,UAAU,GAClB,OAAO,IAAI,uBAAuB,CAEpC;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE;QACL,YAAY,EAAE,MAAM,CAAC;QACrB,gBAAgB,EAAE,MAAM,CAAC;QACzB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,WAAW,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,oEAAoE;IACpE,cAAc,CAAC,EAAE,cAAc,EAAE,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,YAAY,EAAE,WAAW,CAAC;IAEnC;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAEpD;;;OAGG;IACH,eAAe,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/D"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * @fileoverview LLM provider type definitions
3
+ * @description Core types for the LLM provider system including request/response
4
+ * types, the provider interface, and cost estimation re-exports.
5
+ */
6
+ // Re-export cost estimation functions from types package
7
+ export { estimateCost, formatCost, formatCostPerMillion, } from "../../types/index.js";
8
+ // Re-export getModelPricing from local providers config (data is now server-side)
9
+ export { getModelPricing } from "../../config/providers.js";
10
+ /**
11
+ * Type guard for URL output requests
12
+ */
13
+ export function requiresEntityId(request) {
14
+ return request.outputMediaFormat === "url";
15
+ }
16
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/services/llm/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAaH,yDAAyD;AACzD,OAAO,EACL,YAAY,EACZ,UAAU,EACV,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAG9B,kFAAkF;AAClF,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAqD5D;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAC9B,OAAmB;IAEnB,OAAO,OAAO,CAAC,iBAAiB,KAAK,KAAK,CAAC;AAC7C,CAAC"}