@elsium-ai/core 0.2.3 → 0.3.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.
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export type { Role, TextContent, ImageContent, ContentPart, ToolCall, ToolResult, Message, TokenUsage, CostBreakdown, StopReason, LLMResponse, StreamEvent, XRayData, StreamCheckpoint, ProviderConfig, CompletionRequest, ToolDefinition, MiddlewareContext, MiddlewareNext, Middleware, } from './types';
1
+ export type { Role, TextContent, ImageContent, AudioContent, DocumentContent, ContentPart, ToolCall, ToolResult, Message, TokenUsage, CostBreakdown, StopReason, LLMResponse, StreamEvent, XRayData, StreamCheckpoint, ProviderConfig, CompletionRequest, ToolDefinition, TenantContext, MiddlewareContext, MiddlewareNext, Middleware, } from './types';
2
2
  export { ElsiumError } from './errors';
3
3
  export type { ErrorCode, ErrorDetails } from './errors';
4
4
  export { ok, err, isOk, isErr, unwrap, unwrapOr, tryCatch, tryCatchSync } from './result';
@@ -8,6 +8,11 @@ export type { StreamTransformer, ResilientStreamOptions } from './stream';
8
8
  export { createLogger } from './logger';
9
9
  export type { Logger, LogLevel, LogEntry, LoggerOptions } from './logger';
10
10
  export { env, envNumber, envBool } from './config';
11
+ export { zodToJsonSchema } from './schema';
12
+ export { createRegistry } from './registry';
13
+ export type { Registry } from './registry';
14
+ export { countTokens, createContextManager } from './tokens';
15
+ export type { ContextStrategy, ContextManagerConfig, ContextManager } from './tokens';
11
16
  export { generateId, generateTraceId, extractText, sleep, retry } from './utils';
12
17
  export { createCircuitBreaker } from './circuit-breaker';
13
18
  export type { CircuitBreakerConfig, CircuitBreaker, CircuitState } from './circuit-breaker';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,YAAY,EACX,IAAI,EACJ,WAAW,EACX,YAAY,EACZ,WAAW,EACX,QAAQ,EACR,UAAU,EACV,OAAO,EACP,UAAU,EACV,aAAa,EACb,UAAU,EACV,WAAW,EACX,WAAW,EACX,QAAQ,EACR,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,UAAU,GACV,MAAM,SAAS,CAAA;AAGhB,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AACtC,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAGvD,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AACzF,YAAY,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAG/C,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AACrD,YAAY,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAA;AAGzE,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AACvC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAGzE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAGlD,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAGhF,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AACxD,YAAY,EAAE,oBAAoB,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAG3F,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AACtD,YAAY,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAGjD,OAAO,EACN,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,aAAa,GACb,MAAM,UAAU,CAAA;AACjB,YAAY,EACX,cAAc,EACd,YAAY,EACZ,aAAa,EACb,UAAU,EACV,YAAY,EACZ,SAAS,GACT,MAAM,UAAU,CAAA;AAGjB,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAClD,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,YAAY,EACX,IAAI,EACJ,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,WAAW,EACX,QAAQ,EACR,UAAU,EACV,OAAO,EACP,UAAU,EACV,aAAa,EACb,UAAU,EACV,WAAW,EACX,WAAW,EACX,QAAQ,EACR,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,aAAa,EACb,iBAAiB,EACjB,cAAc,EACd,UAAU,GACV,MAAM,SAAS,CAAA;AAGhB,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AACtC,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAGvD,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AACzF,YAAY,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAG/C,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AACrD,YAAY,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAA;AAGzE,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AACvC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAGzE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAGlD,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAG1C,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAC3C,YAAY,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAG1C,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;AAC5D,YAAY,EAAE,eAAe,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAGrF,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAGhF,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AACxD,YAAY,EAAE,oBAAoB,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAG3F,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AACtD,YAAY,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAGjD,OAAO,EACN,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,aAAa,GACb,MAAM,UAAU,CAAA;AACjB,YAAY,EACX,cAAc,EACd,YAAY,EACZ,aAAa,EACb,UAAU,EACV,YAAY,EACZ,SAAS,GACT,MAAM,UAAU,CAAA;AAGjB,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAClD,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA"}
package/dist/index.js CHANGED
@@ -496,6 +496,243 @@ function envBool(name, fallback) {
496
496
  metadata: { variable: name }
497
497
  });
498
498
  }
499
+ // src/schema.ts
500
+ var log = createLogger();
501
+ function zodDefKind(def) {
502
+ return typeof def.type === "string" ? def.type : def.typeName;
503
+ }
504
+ function zodObjectToJsonSchema(schema, convert) {
505
+ const shape = typeof schema.shape === "function" ? schema.shape() : schema.shape;
506
+ const properties = {};
507
+ const required = [];
508
+ for (const [key, value] of Object.entries(shape)) {
509
+ const fieldSchema = value;
510
+ properties[key] = convert(fieldSchema);
511
+ const fieldDef = fieldSchema._def;
512
+ const fieldKind = zodDefKind(fieldDef);
513
+ if (fieldKind !== "optional" && fieldKind !== "ZodOptional" && fieldKind !== "default" && fieldKind !== "ZodDefault") {
514
+ required.push(key);
515
+ }
516
+ if (fieldDef.description) {
517
+ properties[key].description = fieldDef.description;
518
+ }
519
+ }
520
+ return { type: "object", properties, required };
521
+ }
522
+ function zodToJsonSchema(schema) {
523
+ if (!("_def" in schema))
524
+ return { type: "object" };
525
+ const def = schema._def;
526
+ const kind = zodDefKind(def);
527
+ switch (kind) {
528
+ case "object":
529
+ case "ZodObject":
530
+ return zodObjectToJsonSchema(def, zodToJsonSchema);
531
+ case "string":
532
+ case "ZodString":
533
+ return { type: "string" };
534
+ case "number":
535
+ case "ZodNumber":
536
+ return { type: "number" };
537
+ case "boolean":
538
+ case "ZodBoolean":
539
+ return { type: "boolean" };
540
+ case "array":
541
+ case "ZodArray":
542
+ return {
543
+ type: "array",
544
+ items: zodToJsonSchema(def.element ?? def.type)
545
+ };
546
+ case "enum":
547
+ case "ZodEnum": {
548
+ const values = def.values ?? (def.entries ? Object.values(def.entries) : []);
549
+ return { type: "string", enum: values };
550
+ }
551
+ case "optional":
552
+ case "ZodOptional":
553
+ return zodToJsonSchema(def.innerType);
554
+ case "default":
555
+ case "ZodDefault":
556
+ return zodToJsonSchema(def.innerType);
557
+ case "nullable":
558
+ case "ZodNullable": {
559
+ const inner = zodToJsonSchema(def.innerType);
560
+ return { ...inner, nullable: true };
561
+ }
562
+ case "ZodLiteral":
563
+ return { type: typeof def.value, const: def.value };
564
+ case "ZodUnion": {
565
+ const options = def.options.map(zodToJsonSchema);
566
+ return { anyOf: options };
567
+ }
568
+ case "ZodRecord":
569
+ return {
570
+ type: "object",
571
+ additionalProperties: def.valueType ? zodToJsonSchema(def.valueType) : { type: "string" }
572
+ };
573
+ case "ZodTuple": {
574
+ const items = (def.items ?? []).map(zodToJsonSchema);
575
+ return { type: "array", prefixItems: items, minItems: items.length, maxItems: items.length };
576
+ }
577
+ case "ZodDate":
578
+ return { type: "string", format: "date-time" };
579
+ default:
580
+ log.warn(`zodToJsonSchema: unsupported type ${kind}, defaulting to string`);
581
+ return { type: "string" };
582
+ }
583
+ }
584
+ // src/registry.ts
585
+ var log2 = createLogger();
586
+ var BLOCKED_KEYS = new Set(["__proto__", "constructor", "prototype"]);
587
+ function createRegistry(label) {
588
+ const entries = new Map;
589
+ return {
590
+ register(name, factory) {
591
+ if (BLOCKED_KEYS.has(name)) {
592
+ log2.warn(`Registry(${label}): rejected blocked key "${name}"`);
593
+ return;
594
+ }
595
+ entries.set(name, factory);
596
+ log2.debug(`Registry(${label}): registered "${name}"`);
597
+ },
598
+ get(name) {
599
+ if (BLOCKED_KEYS.has(name))
600
+ return;
601
+ return entries.get(name);
602
+ },
603
+ list() {
604
+ return Array.from(entries.keys());
605
+ },
606
+ has(name) {
607
+ if (BLOCKED_KEYS.has(name))
608
+ return false;
609
+ return entries.has(name);
610
+ },
611
+ unregister(name) {
612
+ if (BLOCKED_KEYS.has(name))
613
+ return false;
614
+ const deleted = entries.delete(name);
615
+ if (deleted) {
616
+ log2.debug(`Registry(${label}): unregistered "${name}"`);
617
+ }
618
+ return deleted;
619
+ }
620
+ };
621
+ }
622
+ // src/tokens.ts
623
+ var MODEL_RATIOS = {
624
+ cl100k_base: 4,
625
+ "gpt-4o": 4,
626
+ "gpt-4o-mini": 4,
627
+ o1: 4,
628
+ "o1-mini": 4,
629
+ "o3-mini": 4,
630
+ "claude-opus-4-6": 3.5,
631
+ "claude-sonnet-4-6": 3.5,
632
+ "claude-haiku-4-5-20251001": 3.5,
633
+ "gemini-2.0-flash": 4,
634
+ "gemini-2.0-flash-lite": 4,
635
+ "gemini-2.5-pro-preview-05-06": 4,
636
+ "gemini-2.5-flash-preview-04-17": 4
637
+ };
638
+ function getRatio(model) {
639
+ if (!model)
640
+ return 4;
641
+ if (MODEL_RATIOS[model])
642
+ return MODEL_RATIOS[model];
643
+ if (model.startsWith("claude"))
644
+ return 3.5;
645
+ if (model.startsWith("gemini"))
646
+ return 4;
647
+ if (model.startsWith("gpt") || model.startsWith("o1") || model.startsWith("o3"))
648
+ return 4;
649
+ return 4;
650
+ }
651
+ function extractMessageText(msg) {
652
+ if (typeof msg.content === "string")
653
+ return msg.content;
654
+ return msg.content.filter((p) => p.type === "text" && ("text" in p)).map((p) => p.text).join("");
655
+ }
656
+ function countTokens(text, model) {
657
+ const ratio = getRatio(model);
658
+ return Math.ceil(text.length / ratio) + 4;
659
+ }
660
+ function createContextManager(config) {
661
+ const { maxTokens, strategy, reserveTokens = 0 } = config;
662
+ const budget = maxTokens - reserveTokens;
663
+ function estimateMessageTokens(msg) {
664
+ return countTokens(extractMessageText(msg)) + 4;
665
+ }
666
+ function estimateTokens(messages) {
667
+ return messages.reduce((sum, msg) => sum + estimateMessageTokens(msg), 0);
668
+ }
669
+ async function fitTruncate(messages, system) {
670
+ let available = budget;
671
+ if (system)
672
+ available -= countTokens(system);
673
+ const result = [];
674
+ for (let i = messages.length - 1;i >= 0; i--) {
675
+ const tokens = estimateMessageTokens(messages[i]);
676
+ if (available - tokens < 0 && result.length > 0)
677
+ break;
678
+ available -= tokens;
679
+ result.unshift(messages[i]);
680
+ }
681
+ return result;
682
+ }
683
+ async function fitSummarize(messages, system) {
684
+ if (!config.summarizer)
685
+ return fitTruncate(messages, system);
686
+ let available = budget;
687
+ if (system)
688
+ available -= countTokens(system);
689
+ const total = estimateTokens(messages);
690
+ if (total <= available)
691
+ return messages;
692
+ const keepCount = Math.max(1, Math.floor(messages.length / 3));
693
+ const toSummarize = messages.slice(0, messages.length - keepCount);
694
+ const toKeep = messages.slice(messages.length - keepCount);
695
+ const summary = await config.summarizer(toSummarize);
696
+ const summaryMsg = {
697
+ role: "system",
698
+ content: `Previous conversation summary: ${summary}`
699
+ };
700
+ return [summaryMsg, ...toKeep];
701
+ }
702
+ async function fitSlidingWindow(messages, system) {
703
+ let available = budget;
704
+ if (system)
705
+ available -= countTokens(system);
706
+ const result = [];
707
+ for (let i = messages.length - 1;i >= 0; i--) {
708
+ const tokens = estimateMessageTokens(messages[i]);
709
+ if (available - tokens < 0 && result.length > 0)
710
+ break;
711
+ available -= tokens;
712
+ result.unshift(messages[i]);
713
+ }
714
+ return result;
715
+ }
716
+ return {
717
+ estimateTokens,
718
+ async fit(messages, system) {
719
+ const total = estimateTokens(messages);
720
+ let available = budget;
721
+ if (system)
722
+ available -= countTokens(system);
723
+ if (total <= available)
724
+ return messages;
725
+ switch (strategy) {
726
+ case "truncate":
727
+ return fitTruncate(messages, system);
728
+ case "summarize":
729
+ return fitSummarize(messages, system);
730
+ case "sliding-window":
731
+ return fitSlidingWindow(messages, system);
732
+ }
733
+ }
734
+ };
735
+ }
499
736
  // src/circuit-breaker.ts
500
737
  function defaultShouldCount(error) {
501
738
  if (error && typeof error === "object" && "retryable" in error) {
@@ -962,6 +1199,7 @@ function createShutdownManager(config) {
962
1199
  return manager;
963
1200
  }
964
1201
  export {
1202
+ zodToJsonSchema,
965
1203
  unwrapOr,
966
1204
  unwrap,
967
1205
  tryCatchSync,
@@ -984,10 +1222,13 @@ export {
984
1222
  dedupMiddleware,
985
1223
  createStream,
986
1224
  createShutdownManager,
1225
+ createRegistry,
987
1226
  createPolicySet,
988
1227
  createLogger,
989
1228
  createDedup,
1229
+ createContextManager,
990
1230
  createCircuitBreaker,
1231
+ countTokens,
991
1232
  costLimitPolicy,
992
1233
  contentPolicy,
993
1234
  ElsiumStream,
@@ -0,0 +1,9 @@
1
+ export interface Registry<T> {
2
+ register(name: string, factory: T): void;
3
+ get(name: string): T | undefined;
4
+ list(): string[];
5
+ has(name: string): boolean;
6
+ unregister(name: string): boolean;
7
+ }
8
+ export declare function createRegistry<T>(label: string): Registry<T>;
9
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,QAAQ,CAAC,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,CAAA;IACxC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAAA;IAChC,IAAI,IAAI,MAAM,EAAE,CAAA;IAChB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAA;IAC1B,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAA;CACjC;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,CAoC5D"}
@@ -0,0 +1,8 @@
1
+ import type { z } from 'zod';
2
+ /**
3
+ * Converts a Zod schema to JSON Schema.
4
+ * Uses Zod's internal `_def` property — the standard community pattern
5
+ * since Zod does not expose a public schema introspection API.
6
+ */
7
+ export declare function zodToJsonSchema(schema: z.ZodType): Record<string, unknown>;
8
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAyC5B;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAkE1E"}
@@ -0,0 +1,15 @@
1
+ import type { Message } from './types';
2
+ export declare function countTokens(text: string, model?: string): number;
3
+ export type ContextStrategy = 'truncate' | 'summarize' | 'sliding-window';
4
+ export interface ContextManagerConfig {
5
+ maxTokens: number;
6
+ strategy: ContextStrategy;
7
+ reserveTokens?: number;
8
+ summarizer?: (messages: Message[]) => Promise<string>;
9
+ }
10
+ export interface ContextManager {
11
+ fit(messages: Message[], system?: string): Promise<Message[]>;
12
+ estimateTokens(messages: Message[]): number;
13
+ }
14
+ export declare function createContextManager(config: ContextManagerConfig): ContextManager;
15
+ //# sourceMappingURL=tokens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../src/tokens.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAoCtC,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAGhE;AAED,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,WAAW,GAAG,gBAAgB,CAAA;AAEzE,MAAM,WAAW,oBAAoB;IACpC,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,eAAe,CAAA;IACzB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;CACrD;AAED,MAAM,WAAW,cAAc;IAC9B,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAA;IAC7D,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,CAAA;CAC3C;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,oBAAoB,GAAG,cAAc,CAkFjF"}
package/dist/types.d.ts CHANGED
@@ -15,7 +15,29 @@ export interface ImageContent {
15
15
  url: string;
16
16
  };
17
17
  }
18
- export type ContentPart = TextContent | ImageContent;
18
+ export interface AudioContent {
19
+ type: 'audio';
20
+ source: {
21
+ type: 'base64';
22
+ mediaType: string;
23
+ data: string;
24
+ } | {
25
+ type: 'url';
26
+ url: string;
27
+ };
28
+ }
29
+ export interface DocumentContent {
30
+ type: 'document';
31
+ source: {
32
+ type: 'base64';
33
+ mediaType: string;
34
+ data: string;
35
+ } | {
36
+ type: 'url';
37
+ url: string;
38
+ };
39
+ }
40
+ export type ContentPart = TextContent | ImageContent | AudioContent | DocumentContent;
19
41
  export interface ToolCall {
20
42
  id: string;
21
43
  name: string;
@@ -147,6 +169,17 @@ export interface StreamCheckpoint {
147
169
  tokensSoFar: number;
148
170
  eventIndex: number;
149
171
  }
172
+ export interface TenantContext {
173
+ tenantId: string;
174
+ tier?: string;
175
+ limits?: {
176
+ maxRequestsPerMinute?: number;
177
+ maxTokensPerDay?: number;
178
+ maxCostPerMonth?: number;
179
+ allowedModels?: string[];
180
+ };
181
+ metadata?: Record<string, unknown>;
182
+ }
150
183
  export interface MiddlewareContext {
151
184
  request: CompletionRequest;
152
185
  provider: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAI5B,MAAM,MAAM,IAAI,GAAG,QAAQ,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,CAAA;AAE3D,MAAM,WAAW,WAAW;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;CACZ;AAED,MAAM,WAAW,YAAY;IAC5B,IAAI,EAAE,OAAO,CAAA;IACb,MAAM,EAAE;QAAE,IAAI,EAAE,QAAQ,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,IAAI,EAAE,KAAK,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAA;CAC1F;AAED,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,YAAY,CAAA;AAIpD,MAAM,WAAW,QAAQ;IACxB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAClC;AAED,MAAM,WAAW,UAAU;IAC1B,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,OAAO,CAAA;CACjB;AAID,MAAM,WAAW,OAAO;IACvB,IAAI,EAAE,IAAI,CAAA;IACV,OAAO,EAAE,MAAM,GAAG,WAAW,EAAE,CAAA;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAA;IACtB,WAAW,CAAC,EAAE,UAAU,EAAE,CAAA;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAClC;AAID,MAAM,WAAW,UAAU;IAC1B,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;IACnB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAA;CACzB;AAED,MAAM,WAAW,aAAa;IAC7B,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,KAAK,CAAA;CACf;AAID,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,YAAY,GAAG,eAAe,GAAG,UAAU,CAAA;AAEjF,MAAM,WAAW,WAAW;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,UAAU,CAAA;IACjB,IAAI,EAAE,aAAa,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,UAAU,CAAA;IACtB,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;CACf;AAID,MAAM,MAAM,WAAW,GACpB;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,QAAQ,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GACnE;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAClE;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAC7C;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACpD;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,UAAU,CAAC;IAAC,UAAU,EAAE,UAAU,CAAA;CAAE,GAClE;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,GAC/B;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,UAAU,EAAE,gBAAgB,CAAA;CAAE,GACpD;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,CAAA;AAI1D,MAAM,WAAW,cAAc;IAC9B,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,iBAAiB;IACjC,QAAQ,EAAE,OAAO,EAAE,CAAA;IACnB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;IACxB,KAAK,CAAC,EAAE,cAAc,EAAE,CAAA;IACxB,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,CAAA;IAClB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAClC,MAAM,CAAC,EAAE,WAAW,CAAA;CACpB;AAED,MAAM,WAAW,cAAc;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACpC;AAID,MAAM,WAAW,QAAQ;IACxB,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE;QACR,GAAG,EAAE,MAAM,CAAA;QACX,MAAM,EAAE,MAAM,CAAA;QACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QAC/B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAC7B,CAAA;IACD,QAAQ,EAAE;QACT,MAAM,EAAE,MAAM,CAAA;QACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QAC/B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAC7B,CAAA;IACD,KAAK,EAAE,UAAU,CAAA;IACjB,IAAI,EAAE,aAAa,CAAA;CACnB;AAID,MAAM,WAAW,gBAAgB;IAChC,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,MAAM,CAAA;CAClB;AAID,MAAM,WAAW,iBAAiB;IACjC,OAAO,EAAE,iBAAiB,CAAA;IAC1B,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACjC;AAED,MAAM,MAAM,cAAc,GAAG,CAAC,GAAG,EAAE,iBAAiB,KAAK,OAAO,CAAC,WAAW,CAAC,CAAA;AAE7E,MAAM,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,KAAK,OAAO,CAAC,WAAW,CAAC,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elsium-ai/core",
3
- "version": "0.2.3",
3
+ "version": "0.3.0",
4
4
  "description": "Core types, schemas, errors, and utilities for ElsiumAI",
5
5
  "license": "MIT",
6
6
  "author": "Eric Utrera <ebutrera9103@gmail.com>",