@simulacra-ai/core 0.0.1

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 (134) hide show
  1. package/README.md +232 -0
  2. package/dist/checkpoints/default-summarization-strategy.d.ts +13 -0
  3. package/dist/checkpoints/default-summarization-strategy.d.ts.map +1 -0
  4. package/dist/checkpoints/default-summarization-strategy.js +63 -0
  5. package/dist/checkpoints/default-summarization-strategy.js.map +1 -0
  6. package/dist/checkpoints/index.d.ts +3 -0
  7. package/dist/checkpoints/index.d.ts.map +1 -0
  8. package/dist/checkpoints/index.js +3 -0
  9. package/dist/checkpoints/index.js.map +1 -0
  10. package/dist/checkpoints/types.d.ts +32 -0
  11. package/dist/checkpoints/types.d.ts.map +1 -0
  12. package/dist/checkpoints/types.js +2 -0
  13. package/dist/checkpoints/types.js.map +1 -0
  14. package/dist/context-transformers/checkpoint-context-transformer.d.ts +13 -0
  15. package/dist/context-transformers/checkpoint-context-transformer.d.ts.map +1 -0
  16. package/dist/context-transformers/checkpoint-context-transformer.js +32 -0
  17. package/dist/context-transformers/checkpoint-context-transformer.js.map +1 -0
  18. package/dist/context-transformers/composite-context-transformer.d.ts +31 -0
  19. package/dist/context-transformers/composite-context-transformer.d.ts.map +1 -0
  20. package/dist/context-transformers/composite-context-transformer.js +41 -0
  21. package/dist/context-transformers/composite-context-transformer.js.map +1 -0
  22. package/dist/context-transformers/index.d.ts +6 -0
  23. package/dist/context-transformers/index.d.ts.map +1 -0
  24. package/dist/context-transformers/index.js +6 -0
  25. package/dist/context-transformers/index.js.map +1 -0
  26. package/dist/context-transformers/noop-context-transformer.d.ts +24 -0
  27. package/dist/context-transformers/noop-context-transformer.d.ts.map +1 -0
  28. package/dist/context-transformers/noop-context-transformer.js +26 -0
  29. package/dist/context-transformers/noop-context-transformer.js.map +1 -0
  30. package/dist/context-transformers/tool-context-transformer.d.ts +26 -0
  31. package/dist/context-transformers/tool-context-transformer.d.ts.map +1 -0
  32. package/dist/context-transformers/tool-context-transformer.js +52 -0
  33. package/dist/context-transformers/tool-context-transformer.js.map +1 -0
  34. package/dist/context-transformers/types.d.ts +65 -0
  35. package/dist/context-transformers/types.d.ts.map +1 -0
  36. package/dist/context-transformers/types.js +2 -0
  37. package/dist/context-transformers/types.js.map +1 -0
  38. package/dist/conversations/conversation.d.ts +146 -0
  39. package/dist/conversations/conversation.d.ts.map +1 -0
  40. package/dist/conversations/conversation.js +642 -0
  41. package/dist/conversations/conversation.js.map +1 -0
  42. package/dist/conversations/index.d.ts +5 -0
  43. package/dist/conversations/index.d.ts.map +1 -0
  44. package/dist/conversations/index.js +5 -0
  45. package/dist/conversations/index.js.map +1 -0
  46. package/dist/conversations/stream-listener.d.ts +37 -0
  47. package/dist/conversations/stream-listener.d.ts.map +1 -0
  48. package/dist/conversations/stream-listener.js +68 -0
  49. package/dist/conversations/stream-listener.js.map +1 -0
  50. package/dist/conversations/token-tracker.d.ts +59 -0
  51. package/dist/conversations/token-tracker.d.ts.map +1 -0
  52. package/dist/conversations/token-tracker.js +98 -0
  53. package/dist/conversations/token-tracker.js.map +1 -0
  54. package/dist/conversations/types.d.ts +346 -0
  55. package/dist/conversations/types.d.ts.map +1 -0
  56. package/dist/conversations/types.js +2 -0
  57. package/dist/conversations/types.js.map +1 -0
  58. package/dist/index.d.ts +10 -0
  59. package/dist/index.d.ts.map +1 -0
  60. package/dist/index.js +9 -0
  61. package/dist/index.js.map +1 -0
  62. package/dist/policies/composite-policy.d.ts +29 -0
  63. package/dist/policies/composite-policy.d.ts.map +1 -0
  64. package/dist/policies/composite-policy.js +77 -0
  65. package/dist/policies/composite-policy.js.map +1 -0
  66. package/dist/policies/default-policy.d.ts +7 -0
  67. package/dist/policies/default-policy.d.ts.map +1 -0
  68. package/dist/policies/default-policy.js +14 -0
  69. package/dist/policies/default-policy.js.map +1 -0
  70. package/dist/policies/index.d.ts +8 -0
  71. package/dist/policies/index.d.ts.map +1 -0
  72. package/dist/policies/index.js +8 -0
  73. package/dist/policies/index.js.map +1 -0
  74. package/dist/policies/noop-policy.d.ts +21 -0
  75. package/dist/policies/noop-policy.d.ts.map +1 -0
  76. package/dist/policies/noop-policy.js +36 -0
  77. package/dist/policies/noop-policy.js.map +1 -0
  78. package/dist/policies/rate-limit-policy.d.ts +44 -0
  79. package/dist/policies/rate-limit-policy.d.ts.map +1 -0
  80. package/dist/policies/rate-limit-policy.js +98 -0
  81. package/dist/policies/rate-limit-policy.js.map +1 -0
  82. package/dist/policies/retry-policy.d.ts +42 -0
  83. package/dist/policies/retry-policy.d.ts.map +1 -0
  84. package/dist/policies/retry-policy.js +114 -0
  85. package/dist/policies/retry-policy.js.map +1 -0
  86. package/dist/policies/token-limit-policy.d.ts +76 -0
  87. package/dist/policies/token-limit-policy.d.ts.map +1 -0
  88. package/dist/policies/token-limit-policy.js +134 -0
  89. package/dist/policies/token-limit-policy.js.map +1 -0
  90. package/dist/policies/types.d.ts +49 -0
  91. package/dist/policies/types.d.ts.map +1 -0
  92. package/dist/policies/types.js +9 -0
  93. package/dist/policies/types.js.map +1 -0
  94. package/dist/tools/index.d.ts +2 -0
  95. package/dist/tools/index.d.ts.map +1 -0
  96. package/dist/tools/index.js +2 -0
  97. package/dist/tools/index.js.map +1 -0
  98. package/dist/tools/types.d.ts +180 -0
  99. package/dist/tools/types.d.ts.map +1 -0
  100. package/dist/tools/types.js +2 -0
  101. package/dist/tools/types.js.map +1 -0
  102. package/dist/utils/async.d.ts +125 -0
  103. package/dist/utils/async.d.ts.map +1 -0
  104. package/dist/utils/async.js +217 -0
  105. package/dist/utils/async.js.map +1 -0
  106. package/dist/utils/index.d.ts +4 -0
  107. package/dist/utils/index.d.ts.map +1 -0
  108. package/dist/utils/index.js +4 -0
  109. package/dist/utils/index.js.map +1 -0
  110. package/dist/utils/object.d.ts +80 -0
  111. package/dist/utils/object.d.ts.map +1 -0
  112. package/dist/utils/object.js +189 -0
  113. package/dist/utils/object.js.map +1 -0
  114. package/dist/utils/types.d.ts +17 -0
  115. package/dist/utils/types.d.ts.map +1 -0
  116. package/dist/utils/types.js +2 -0
  117. package/dist/utils/types.js.map +1 -0
  118. package/dist/workflows/index.d.ts +4 -0
  119. package/dist/workflows/index.d.ts.map +1 -0
  120. package/dist/workflows/index.js +4 -0
  121. package/dist/workflows/index.js.map +1 -0
  122. package/dist/workflows/types.d.ts +70 -0
  123. package/dist/workflows/types.d.ts.map +1 -0
  124. package/dist/workflows/types.js +2 -0
  125. package/dist/workflows/types.js.map +1 -0
  126. package/dist/workflows/workflow-manager.d.ts +74 -0
  127. package/dist/workflows/workflow-manager.d.ts.map +1 -0
  128. package/dist/workflows/workflow-manager.js +165 -0
  129. package/dist/workflows/workflow-manager.js.map +1 -0
  130. package/dist/workflows/workflow.d.ts +116 -0
  131. package/dist/workflows/workflow.d.ts.map +1 -0
  132. package/dist/workflows/workflow.js +351 -0
  133. package/dist/workflows/workflow.js.map +1 -0
  134. package/package.json +20 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/conversations/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC"}
@@ -0,0 +1,5 @@
1
+ export * from "./conversation.js";
2
+ export * from "./types.js";
3
+ export * from "./stream-listener.js";
4
+ export * from "./token-tracker.js";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/conversations/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC"}
@@ -0,0 +1,37 @@
1
+ import { StreamReceiver } from "./types.ts";
2
+ /**
3
+ * Discriminated union of all possible stream events and their payloads.
4
+ */
5
+ export type StreamListenerPayload = {
6
+ [E in keyof StreamReceiver]: {
7
+ event: E;
8
+ payload: Parameters<StreamReceiver[E]>;
9
+ };
10
+ }[keyof StreamReceiver];
11
+ /**
12
+ * Internal utility for converting StreamReceiver callbacks into a single event handler.
13
+ *
14
+ * This class is used internally by Conversation to manage streaming events.
15
+ */
16
+ export declare class StreamListener {
17
+ #private;
18
+ /**
19
+ * Creates a new stream listener.
20
+ *
21
+ * @param listener - The callback to invoke with stream events.
22
+ */
23
+ constructor(listener: (payload: StreamListenerPayload) => void | Promise<void>);
24
+ /**
25
+ * Disposes the stream listener.
26
+ *
27
+ * This method is called automatically when using the `using` keyword.
28
+ */
29
+ [Symbol.dispose](): void;
30
+ /**
31
+ * Creates a StreamReceiver that forwards all events to the listener.
32
+ *
33
+ * @returns A new stream receiver instance.
34
+ */
35
+ create_receiver(): StreamReceiver;
36
+ }
37
+ //# sourceMappingURL=stream-listener.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream-listener.d.ts","sourceRoot":"","sources":["../../src/conversations/stream-listener.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG;KACjC,CAAC,IAAI,MAAM,cAAc,GAAG;QAC3B,KAAK,EAAE,CAAC,CAAC;QACT,OAAO,EAAE,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;KACxC;CACF,CAAC,MAAM,cAAc,CAAC,CAAC;AAExB;;;;GAIG;AACH,qBAAa,cAAc;;IAKzB;;;;OAIG;gBACS,QAAQ,EAAE,CAAC,OAAO,EAAE,qBAAqB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9E;;;;OAIG;IACH,CAAC,MAAM,CAAC,OAAO,CAAC;IAIhB;;;;OAIG;IACH,eAAe;CAqChB"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Internal utility for converting StreamReceiver callbacks into a single event handler.
3
+ *
4
+ * This class is used internally by Conversation to manage streaming events.
5
+ */
6
+ export class StreamListener {
7
+ #listener;
8
+ #is_disposed = false;
9
+ /**
10
+ * Creates a new stream listener.
11
+ *
12
+ * @param listener - The callback to invoke with stream events.
13
+ */
14
+ constructor(listener) {
15
+ this.#listener = listener;
16
+ }
17
+ /**
18
+ * Disposes the stream listener.
19
+ *
20
+ * This method is called automatically when using the `using` keyword.
21
+ */
22
+ [Symbol.dispose]() {
23
+ this.#is_disposed = true;
24
+ }
25
+ /**
26
+ * Creates a StreamReceiver that forwards all events to the listener.
27
+ *
28
+ * @returns A new stream receiver instance.
29
+ */
30
+ create_receiver() {
31
+ const receiver = {
32
+ start_message: (...args) => this.#receive({ event: "start_message", payload: args }),
33
+ update_message: (...args) => this.#receive({ event: "update_message", payload: args }),
34
+ complete_message: (...args) => this.#receive({ event: "complete_message", payload: args }),
35
+ start_content: (...args) => this.#receive({ event: "start_content", payload: args }),
36
+ update_content: (...args) => this.#receive({ event: "update_content", payload: args }),
37
+ complete_content: (...args) => this.#receive({ event: "complete_content", payload: args }),
38
+ error: (...args) => this.#receive({ event: "error", payload: args }),
39
+ before_request: (...args) => this.#receive({ event: "before_request", payload: args }),
40
+ request_raw: (...args) => this.#receive({ event: "request_raw", payload: args }),
41
+ response_raw: (...args) => this.#receive({ event: "response_raw", payload: args }),
42
+ stream_raw: (...args) => this.#receive({ event: "stream_raw", payload: args }),
43
+ cancel: (...args) => this.#receive({ event: "cancel", payload: args }),
44
+ };
45
+ return receiver;
46
+ }
47
+ #receive = (payload) => {
48
+ if (this.#is_disposed) {
49
+ return;
50
+ }
51
+ try {
52
+ const result = this.#listener(payload);
53
+ if (result && typeof result === "object" && "catch" in result) {
54
+ result.catch((error) => {
55
+ if (!this.#is_disposed && payload.event !== "error") {
56
+ this.#listener({ event: "error", payload: [error] });
57
+ }
58
+ });
59
+ }
60
+ }
61
+ catch (error) {
62
+ if (!this.#is_disposed && payload.event !== "error") {
63
+ this.#listener({ event: "error", payload: [error] });
64
+ }
65
+ }
66
+ };
67
+ }
68
+ //# sourceMappingURL=stream-listener.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream-listener.js","sourceRoot":"","sources":["../../src/conversations/stream-listener.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ import { Conversation } from "./conversation.ts";
2
+ /**
3
+ * Statistics about token usage.
4
+ */
5
+ export interface TokenStats {
6
+ /** Token usage from the most recent request. */
7
+ last_request: {
8
+ /** Input tokens in the last request. */
9
+ input: number;
10
+ /** Output tokens in the last request. */
11
+ output: number;
12
+ };
13
+ /** Cumulative token usage across all requests. */
14
+ total: {
15
+ /** Total input tokens consumed. */
16
+ input: number;
17
+ /** Total output tokens generated. */
18
+ output: number;
19
+ };
20
+ }
21
+ /**
22
+ * Tracks token usage for a conversation and its children.
23
+ *
24
+ * Automatically monitors conversation events to accumulate token statistics.
25
+ */
26
+ export declare class TokenTracker {
27
+ #private;
28
+ /**
29
+ * Creates a new token tracker.
30
+ *
31
+ * @param conversation - The conversation to track.
32
+ */
33
+ constructor(conversation: Conversation);
34
+ /**
35
+ * Disposes the token tracker and removes event listeners.
36
+ *
37
+ * This method is called automatically when using the `using` keyword.
38
+ */
39
+ [Symbol.dispose](): void;
40
+ /**
41
+ * The current token statistics.
42
+ */
43
+ get stats(): Readonly<TokenStats>;
44
+ /**
45
+ * Registers an event listener for statistics updates.
46
+ *
47
+ * @param event - The event name (always "stats_update").
48
+ * @param listener - The callback to invoke when statistics update.
49
+ */
50
+ on(event: "stats_update", listener: (stats: TokenStats) => void): void;
51
+ /**
52
+ * Removes an event listener for statistics updates.
53
+ *
54
+ * @param event - The event name (always "stats_update").
55
+ * @param listener - The callback to remove.
56
+ */
57
+ off(event: "stats_update", listener: (stats: TokenStats) => void): void;
58
+ }
59
+ //# sourceMappingURL=token-tracker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-tracker.d.ts","sourceRoot":"","sources":["../../src/conversations/token-tracker.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,gDAAgD;IAChD,YAAY,EAAE;QACZ,wCAAwC;QACxC,KAAK,EAAE,MAAM,CAAC;QACd,yCAAyC;QACzC,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,kDAAkD;IAClD,KAAK,EAAE;QACL,mCAAmC;QACnC,KAAK,EAAE,MAAM,CAAC;QACd,qCAAqC;QACrC,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAUD;;;;GAIG;AACH,qBAAa,YAAY;;IAevB;;;;OAIG;gBACS,YAAY,EAAE,YAAY;IAOtC;;;;OAIG;IACH,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI;IAMxB;;OAEG;IACH,IAAW,KAAK,IAAI,QAAQ,CAAC,UAAU,CAAC,CAEvC;IAED;;;;;OAKG;IACI,EAAE,CAAC,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,GAAG,IAAI;IAI7E;;;;;OAKG;IACI,GAAG,CAAC,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,GAAG,IAAI;CA2C/E"}
@@ -0,0 +1,98 @@
1
+ import { EventEmitter } from "node:events";
2
+ /**
3
+ * Tracks token usage for a conversation and its children.
4
+ *
5
+ * Automatically monitors conversation events to accumulate token statistics.
6
+ */
7
+ export class TokenTracker {
8
+ #event_emitter = new EventEmitter();
9
+ #conversation;
10
+ #stats = {
11
+ last_request: {
12
+ input: 0,
13
+ output: 0,
14
+ },
15
+ total: {
16
+ input: 0,
17
+ output: 0,
18
+ },
19
+ };
20
+ /**
21
+ * Creates a new token tracker.
22
+ *
23
+ * @param conversation - The conversation to track.
24
+ */
25
+ constructor(conversation) {
26
+ this.#conversation = conversation;
27
+ conversation.on("message_complete", this.#handle_event_with_usage);
28
+ conversation.on("child_event", this.#handle_child_event);
29
+ }
30
+ /**
31
+ * Disposes the token tracker and removes event listeners.
32
+ *
33
+ * This method is called automatically when using the `using` keyword.
34
+ */
35
+ [Symbol.dispose]() {
36
+ this.#conversation.off("message_complete", this.#handle_event_with_usage);
37
+ this.#conversation.off("child_event", this.#handle_child_event);
38
+ this.#event_emitter.removeAllListeners();
39
+ }
40
+ /**
41
+ * The current token statistics.
42
+ */
43
+ get stats() {
44
+ return Object.freeze({ ...this.#stats });
45
+ }
46
+ /**
47
+ * Registers an event listener for statistics updates.
48
+ *
49
+ * @param event - The event name (always "stats_update").
50
+ * @param listener - The callback to invoke when statistics update.
51
+ */
52
+ on(event, listener) {
53
+ this.#event_emitter.on(event, listener);
54
+ }
55
+ /**
56
+ * Removes an event listener for statistics updates.
57
+ *
58
+ * @param event - The event name (always "stats_update").
59
+ * @param listener - The callback to remove.
60
+ */
61
+ off(event, listener) {
62
+ this.#event_emitter.off(event, listener);
63
+ }
64
+ #handle_event_with_usage = ({ usage }) => {
65
+ this.#process_usage(usage);
66
+ };
67
+ #handle_child_event = (event_data) => {
68
+ const { event_name, event_args } = event_data;
69
+ if (event_name === "message_complete") {
70
+ const [event_data] = event_args;
71
+ if (event_data && "usage" in event_data) {
72
+ this.#process_usage(event_data.usage);
73
+ }
74
+ }
75
+ if (event_name === "child_event") {
76
+ const [child_event_data] = event_args;
77
+ this.#handle_child_event(child_event_data);
78
+ }
79
+ };
80
+ #process_usage = (usage) => {
81
+ if (usage) {
82
+ const input_tokens = usage.input_tokens || 0;
83
+ const output_tokens = usage.output_tokens || 0;
84
+ this.#stats = {
85
+ last_request: {
86
+ input: input_tokens,
87
+ output: output_tokens,
88
+ },
89
+ total: {
90
+ input: this.stats.total.input + input_tokens,
91
+ output: this.stats.total.output + output_tokens,
92
+ },
93
+ };
94
+ this.#event_emitter.emit("stats_update", this.stats);
95
+ }
96
+ };
97
+ }
98
+ //# sourceMappingURL=token-tracker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-tracker.js","sourceRoot":"","sources":["../../src/conversations/token-tracker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,346 @@
1
+ import type { CheckpointState, ProviderContextTransformer } from "../context-transformers/types.ts";
2
+ import type { Tool, ToolDefinition } from "../tools/types.ts";
3
+ import type { CancellationToken } from "../utils/async.ts";
4
+ import type { Conversation } from "./conversation.ts";
5
+ /**
6
+ * Base interface for all content types.
7
+ */
8
+ interface BaseContent {
9
+ /** Optional unique identifier for this content block. */
10
+ id?: string;
11
+ /** Optional timestamp when this content was created. */
12
+ timestamp?: number;
13
+ }
14
+ /**
15
+ * Raw content that contains provider-specific data.
16
+ */
17
+ export interface RawContent extends BaseContent {
18
+ type: "raw";
19
+ /** The kind of model provider this raw data belongs to. */
20
+ model_kind: string;
21
+ /** The raw serialized data from the provider. */
22
+ data: string;
23
+ }
24
+ /**
25
+ * Base interface for content that can be extended with custom properties.
26
+ */
27
+ export interface ExtendableContent extends BaseContent {
28
+ /** Optional custom properties that can be attached to this content. */
29
+ extended?: Record<string, unknown>;
30
+ }
31
+ /**
32
+ * Text content block.
33
+ */
34
+ export interface TextContent extends ExtendableContent {
35
+ type: "text";
36
+ /** The text content. */
37
+ text: string;
38
+ }
39
+ /**
40
+ * Tool execution result content.
41
+ *
42
+ * @template TTool - The type of tool that produced this result.
43
+ */
44
+ export interface ToolResultContent<TTool extends Tool = Tool> extends ExtendableContent {
45
+ type: "tool_result";
46
+ /** The name of the tool that was executed. */
47
+ tool: string;
48
+ /** The unique identifier matching the tool request. */
49
+ tool_request_id: string;
50
+ /** The result returned by the tool execution. */
51
+ result: Awaited<ReturnType<TTool["execute"]>>;
52
+ }
53
+ /**
54
+ * Content types that can appear in user messages.
55
+ */
56
+ export type UserContent = RawContent | TextContent | ToolResultContent;
57
+ /**
58
+ * Thinking/reasoning content from the assistant.
59
+ */
60
+ export interface ThinkingMessageContent extends ExtendableContent {
61
+ type: "thinking";
62
+ /** The assistant's internal reasoning. */
63
+ thought: string;
64
+ }
65
+ /**
66
+ * Tool invocation request from the assistant.
67
+ *
68
+ * @template TTool - The type of tool being invoked.
69
+ */
70
+ export interface ToolContent<TTool extends Tool = Tool> extends ExtendableContent {
71
+ type: "tool";
72
+ /** Unique identifier for this tool request. */
73
+ tool_request_id: string;
74
+ /** The name of the tool to invoke. */
75
+ tool: string;
76
+ /** The parameters to pass to the tool. */
77
+ params: Parameters<TTool["execute"]>[0];
78
+ }
79
+ /**
80
+ * Content types that can appear in assistant messages.
81
+ */
82
+ export type AssistantContent = RawContent | TextContent | ThinkingMessageContent | ToolContent;
83
+ /**
84
+ * Union of all content types.
85
+ */
86
+ export type Content = UserContent | AssistantContent;
87
+ /**
88
+ * A message from the user.
89
+ */
90
+ export interface UserMessage {
91
+ /** Optional unique identifier for this message. */
92
+ id?: string;
93
+ /** Optional timestamp when this message was created. */
94
+ timestamp?: number;
95
+ /** The role of the message sender. */
96
+ role: "user";
97
+ /** The content blocks in this message. */
98
+ content: UserContent[];
99
+ }
100
+ /**
101
+ * A message from the assistant.
102
+ */
103
+ export interface AssistantMessage {
104
+ /** Optional unique identifier for this message. */
105
+ id?: string;
106
+ /** Optional timestamp when this message was created. */
107
+ timestamp?: number;
108
+ /** The role of the message sender. */
109
+ role: "assistant";
110
+ /** The content blocks in this message. */
111
+ content: AssistantContent[];
112
+ }
113
+ /**
114
+ * Union of all message types.
115
+ */
116
+ export type Message = UserMessage | AssistantMessage;
117
+ /**
118
+ * Token usage information for a model request/response.
119
+ */
120
+ export interface Usage {
121
+ /** Number of tokens used to create cache. */
122
+ cache_creation_input_tokens?: number | null;
123
+ /** Number of cached input tokens read. */
124
+ cache_read_input_tokens?: number | null;
125
+ /** Number of input tokens consumed. */
126
+ input_tokens?: number | null;
127
+ /** Number of output tokens generated. */
128
+ output_tokens?: number | null;
129
+ }
130
+ /**
131
+ * Base data for any request.
132
+ */
133
+ export type RequestData = {
134
+ request_id?: string;
135
+ };
136
+ /**
137
+ * Data for a prompt request that includes the user message.
138
+ */
139
+ export type PromptRequestData = RequestData & {
140
+ message: UserMessage;
141
+ };
142
+ /**
143
+ * Streaming response data that includes usage information.
144
+ */
145
+ export type CompletionStreamingResponseData = RequestData & {
146
+ usage: Usage;
147
+ };
148
+ /**
149
+ * Complete response data that includes stop reason and details.
150
+ */
151
+ export type CompletionResponseData = CompletionStreamingResponseData & {
152
+ /** The reason why the model stopped generating. */
153
+ stop_reason: "end_turn" | "max_tokens" | "stop_sequence" | "tool_use" | "error" | "other";
154
+ /** Optional additional details about why the model stopped. */
155
+ stop_details?: string;
156
+ };
157
+ /**
158
+ * Represents a state change event.
159
+ *
160
+ * @template T - The type of state being changed.
161
+ */
162
+ export type ChangeEvent<T> = {
163
+ current: T;
164
+ previous: T;
165
+ };
166
+ /**
167
+ * Event containing raw data from the provider.
168
+ */
169
+ export type RawEvent = {
170
+ data: unknown;
171
+ };
172
+ /**
173
+ * Raw event with an associated request ID.
174
+ */
175
+ export type RawRequestEvent = RawEvent & RequestData;
176
+ /**
177
+ * Event containing error information for a failed request.
178
+ */
179
+ export type ErrorRequestEvent = PromptRequestData & {
180
+ error: unknown;
181
+ };
182
+ /**
183
+ * Event emitted when an infrastructure or lifecycle operation fails.
184
+ *
185
+ * Unlike {@link ErrorRequestEvent} (which is specific to model provider request failures),
186
+ * this event covers operational failures such as session save errors, fork failures,
187
+ * or cleanup failures.
188
+ */
189
+ export interface LifecycleErrorEvent {
190
+ /** The error that occurred. */
191
+ error: unknown;
192
+ /** A short identifier for the operation that failed (e.g., "save", "fork", "disconnect"). */
193
+ operation: string;
194
+ /** Optional additional context about the failure. */
195
+ context?: Record<string, unknown>;
196
+ }
197
+ /**
198
+ * Partial message completion event during streaming.
199
+ */
200
+ export type PartialMessageCompletionEvent = CompletionStreamingResponseData & {
201
+ message: Partial<AssistantMessage>;
202
+ };
203
+ /**
204
+ * Complete message event when streaming finishes.
205
+ */
206
+ export type FullMessageCompletionEvent = CompletionResponseData & {
207
+ message: AssistantMessage;
208
+ };
209
+ /**
210
+ * Partial content completion event during streaming.
211
+ */
212
+ export type PartialContentCompletionEvent = PartialMessageCompletionEvent & {
213
+ content: Partial<AssistantContent>;
214
+ };
215
+ /**
216
+ * Complete content event when a content block finishes streaming.
217
+ */
218
+ export type FullContentCompletionEvent = PartialMessageCompletionEvent & {
219
+ content: AssistantContent;
220
+ };
221
+ /**
222
+ * Events emitted by a Conversation instance.
223
+ */
224
+ export interface ConversationEvents {
225
+ /** Emitted when the conversation state changes. */
226
+ state_change: [ChangeEvent<ConversationState>, Conversation];
227
+ /** Emitted when a prompt is sent to the model. */
228
+ prompt_send: [PromptRequestData, Conversation];
229
+ /** Emitted when the assistant starts generating a message. */
230
+ message_start: [PartialMessageCompletionEvent, Conversation];
231
+ /** Emitted during message generation with partial updates. */
232
+ message_update: [PartialMessageCompletionEvent, Conversation];
233
+ /** Emitted when message generation completes. */
234
+ message_complete: [FullMessageCompletionEvent, Conversation];
235
+ /** Emitted when a content block starts streaming. */
236
+ content_start: [PartialContentCompletionEvent, Conversation];
237
+ /** Emitted during content block streaming with updates. */
238
+ content_update: [PartialContentCompletionEvent, Conversation];
239
+ /** Emitted when a content block completes. */
240
+ content_complete: [FullContentCompletionEvent, Conversation];
241
+ /** Emitted when a request succeeds. */
242
+ request_success: [PromptRequestData, object, Conversation];
243
+ /** Emitted when a request fails. */
244
+ request_error: [ErrorRequestEvent, object, Conversation];
245
+ /** Emitted before a request is sent to the provider. */
246
+ before_request: [RawEvent, Conversation];
247
+ /** Emitted with raw request data. */
248
+ raw_request: [RawRequestEvent, Conversation];
249
+ /** Emitted with raw response data. */
250
+ raw_response: [RawRequestEvent, Conversation];
251
+ /** Emitted with raw streaming data. */
252
+ raw_stream: [RawRequestEvent, Conversation];
253
+ /** Emitted when a checkpoint operation begins. The payload is the child conversation used for summarization. */
254
+ checkpoint_begin: [Conversation, Conversation];
255
+ /** Emitted when a checkpoint operation completes. The payload is the new checkpoint state. */
256
+ checkpoint_complete: [CheckpointState, Conversation];
257
+ /** Emitted when a child conversation is created. */
258
+ create_child: [Conversation, Conversation];
259
+ /** Emitted when a child conversation emits an event. */
260
+ child_event: [
261
+ {
262
+ [E in keyof ConversationEvents]: {
263
+ event_name: E;
264
+ event_args: ConversationEvents[E];
265
+ };
266
+ }[keyof ConversationEvents],
267
+ Conversation
268
+ ];
269
+ /** Emitted when an infrastructure or lifecycle operation fails. */
270
+ lifecycle_error: [LifecycleErrorEvent, Conversation];
271
+ /** Emitted when the conversation is disposed. */
272
+ dispose: [Conversation];
273
+ }
274
+ /**
275
+ * Interface for receiving streaming events from model providers.
276
+ */
277
+ export interface StreamReceiver {
278
+ /** Called when a message starts streaming. */
279
+ start_message: (event: Omit<PartialMessageCompletionEvent, "request_id">) => void;
280
+ /** Called with message updates during streaming. */
281
+ update_message: (event: Omit<PartialMessageCompletionEvent, "request_id">) => void;
282
+ /** Called when a message completes. */
283
+ complete_message: (event: Omit<FullMessageCompletionEvent, "request_id">) => void;
284
+ /** Called when a content block starts. */
285
+ start_content: (event: Omit<PartialContentCompletionEvent, "request_id">) => void;
286
+ /** Called with content block updates. */
287
+ update_content: (event: Omit<PartialContentCompletionEvent, "request_id">) => void;
288
+ /** Called when a content block completes. */
289
+ complete_content: (event: Omit<FullContentCompletionEvent, "request_id">) => void;
290
+ /** Called when an error occurs. */
291
+ error: (error: unknown) => void;
292
+ /** Called before a request is sent. */
293
+ before_request: (data: unknown) => void;
294
+ /** Called with raw request data. */
295
+ request_raw: (data: unknown) => void;
296
+ /** Called with raw response data. */
297
+ response_raw: (data: unknown) => void;
298
+ /** Called with raw stream chunks. */
299
+ stream_raw: (data: unknown) => void;
300
+ /** Called when the stream is cancelled. */
301
+ cancel: () => void;
302
+ }
303
+ /**
304
+ * Possible states of a conversation.
305
+ */
306
+ export type ConversationState = "idle" | "awaiting_response" | "streaming_response" | "stopping" | "disposed";
307
+ /**
308
+ * Request data sent to a model provider.
309
+ */
310
+ export interface ModelRequest {
311
+ /** The conversation messages. */
312
+ messages: Message[];
313
+ /** Available tool definitions. */
314
+ tools: ToolDefinition[];
315
+ /** Optional system prompt. */
316
+ system?: string;
317
+ }
318
+ /**
319
+ * Interface that model providers must implement.
320
+ */
321
+ export interface ModelProvider {
322
+ /**
323
+ * Provider-level context transformers that normalize provider-specific quirks.
324
+ *
325
+ * These run before conversation-level transformers and are read fresh on
326
+ * every request, allowing model routing providers to swap them at runtime.
327
+ */
328
+ context_transformers?: ProviderContextTransformer[];
329
+ /**
330
+ * Executes a request against the model.
331
+ *
332
+ * @param request - The model request containing messages and tools.
333
+ * @param receiver - The stream receiver for handling response events.
334
+ * @param cancellation - Token for cancelling the request.
335
+ * @returns A promise that resolves when the request completes.
336
+ */
337
+ execute_request(request: ModelRequest, receiver: StreamReceiver, cancellation: CancellationToken): Promise<void>;
338
+ /**
339
+ * Creates a clone of this provider.
340
+ *
341
+ * @returns A new instance of the provider with the same configuration.
342
+ */
343
+ clone(): ModelProvider;
344
+ }
345
+ export {};
346
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/conversations/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,0BAA0B,EAAE,MAAM,kCAAkC,CAAC;AACpG,OAAO,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD;;GAEG;AACH,UAAU,WAAW;IACnB,yDAAyD;IACzD,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,wDAAwD;IACxD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,UAAW,SAAQ,WAAW;IAC7C,IAAI,EAAE,KAAK,CAAC;IACZ,2DAA2D;IAC3D,UAAU,EAAE,MAAM,CAAC;IACnB,iDAAiD;IACjD,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,iBAAkB,SAAQ,WAAW;IACpD,uEAAuE;IACvE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,WAAY,SAAQ,iBAAiB;IACpD,IAAI,EAAE,MAAM,CAAC;IACb,wBAAwB;IACxB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB,CAAC,KAAK,SAAS,IAAI,GAAG,IAAI,CAAE,SAAQ,iBAAiB;IACrF,IAAI,EAAE,aAAa,CAAC;IACpB,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,uDAAuD;IACvD,eAAe,EAAE,MAAM,CAAC;IACxB,iDAAiD;IACjD,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;CAC/C;AAED;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,WAAW,GAAG,iBAAiB,CAAC;AAEvE;;GAEG;AACH,MAAM,WAAW,sBAAuB,SAAQ,iBAAiB;IAC/D,IAAI,EAAE,UAAU,CAAC;IACjB,0CAA0C;IAC1C,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;GAIG;AACH,MAAM,WAAW,WAAW,CAAC,KAAK,SAAS,IAAI,GAAG,IAAI,CAAE,SAAQ,iBAAiB;IAC/E,IAAI,EAAE,MAAM,CAAC;IACb,+CAA+C;IAC/C,eAAe,EAAE,MAAM,CAAC;IACxB,sCAAsC;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,0CAA0C;IAC1C,MAAM,EAAE,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACzC;AAED;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,UAAU,GAAG,WAAW,GAAG,sBAAsB,GAAG,WAAW,CAAC;AAE/F;;GAEG;AACH,MAAM,MAAM,OAAO,GAAG,WAAW,GAAG,gBAAgB,CAAC;AAErD;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,mDAAmD;IACnD,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,wDAAwD;IACxD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sCAAsC;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,0CAA0C;IAC1C,OAAO,EAAE,WAAW,EAAE,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,mDAAmD;IACnD,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,wDAAwD;IACxD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sCAAsC;IACtC,IAAI,EAAE,WAAW,CAAC;IAClB,0CAA0C;IAC1C,OAAO,EAAE,gBAAgB,EAAE,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,MAAM,OAAO,GAAG,WAAW,GAAG,gBAAgB,CAAC;AAErD;;GAEG;AACH,MAAM,WAAW,KAAK;IACpB,6CAA6C;IAC7C,2BAA2B,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5C,0CAA0C;IAC1C,uBAAuB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,uCAAuC;IACvC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,yCAAyC;IACzC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG;IAAE,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAElD;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,WAAW,GAAG;IAAE,OAAO,EAAE,WAAW,CAAA;CAAE,CAAC;AAEvE;;GAEG;AACH,MAAM,MAAM,+BAA+B,GAAG,WAAW,GAAG;IAC1D,KAAK,EAAE,KAAK,CAAC;CACd,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG,+BAA+B,GAAG;IACrE,mDAAmD;IACnD,WAAW,EAAE,UAAU,GAAG,YAAY,GAAG,eAAe,GAAG,UAAU,GAAG,OAAO,GAAG,OAAO,CAAC;IAC1F,+DAA+D;IAC/D,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI;IAAE,OAAO,EAAE,CAAC,CAAC;IAAC,QAAQ,EAAE,CAAC,CAAA;CAAE,CAAC;AAEzD;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC;AAEzC;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,WAAW,CAAC;AAErD;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,iBAAiB,GAAG;IAAE,KAAK,EAAE,OAAO,CAAA;CAAE,CAAC;AAEvE;;;;;;GAMG;AACH,MAAM,WAAW,mBAAmB;IAClC,+BAA+B;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,6FAA6F;IAC7F,SAAS,EAAE,MAAM,CAAC;IAClB,qDAAqD;IACrD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,MAAM,6BAA6B,GAAG,+BAA+B,GAAG;IAC5E,OAAO,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;CACpC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,0BAA0B,GAAG,sBAAsB,GAAG;IAChE,OAAO,EAAE,gBAAgB,CAAC;CAC3B,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,6BAA6B,GAAG,6BAA6B,GAAG;IAC1E,OAAO,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;CACpC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,0BAA0B,GAAG,6BAA6B,GAAG;IACvE,OAAO,EAAE,gBAAgB,CAAC;CAC3B,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,mDAAmD;IACnD,YAAY,EAAE,CAAC,WAAW,CAAC,iBAAiB,CAAC,EAAE,YAAY,CAAC,CAAC;IAC7D,kDAAkD;IAClD,WAAW,EAAE,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAAC;IAC/C,8DAA8D;IAC9D,aAAa,EAAE,CAAC,6BAA6B,EAAE,YAAY,CAAC,CAAC;IAC7D,8DAA8D;IAC9D,cAAc,EAAE,CAAC,6BAA6B,EAAE,YAAY,CAAC,CAAC;IAC9D,iDAAiD;IACjD,gBAAgB,EAAE,CAAC,0BAA0B,EAAE,YAAY,CAAC,CAAC;IAC7D,qDAAqD;IACrD,aAAa,EAAE,CAAC,6BAA6B,EAAE,YAAY,CAAC,CAAC;IAC7D,2DAA2D;IAC3D,cAAc,EAAE,CAAC,6BAA6B,EAAE,YAAY,CAAC,CAAC;IAC9D,8CAA8C;IAC9C,gBAAgB,EAAE,CAAC,0BAA0B,EAAE,YAAY,CAAC,CAAC;IAC7D,uCAAuC;IACvC,eAAe,EAAE,CAAC,iBAAiB,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;IAC3D,oCAAoC;IACpC,aAAa,EAAE,CAAC,iBAAiB,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;IACzD,wDAAwD;IACxD,cAAc,EAAE,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IACzC,qCAAqC;IACrC,WAAW,EAAE,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;IAC7C,sCAAsC;IACtC,YAAY,EAAE,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;IAC9C,uCAAuC;IACvC,UAAU,EAAE,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;IAC5C,gHAAgH;IAChH,gBAAgB,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;IAC/C,8FAA8F;IAC9F,mBAAmB,EAAE,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;IACrD,oDAAoD;IACpD,YAAY,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;IAC3C,wDAAwD;IACxD,WAAW,EAAE;QACX;aACG,CAAC,IAAI,MAAM,kBAAkB,GAAG;gBAC/B,UAAU,EAAE,CAAC,CAAC;gBACd,UAAU,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC;aACnC;SACF,CAAC,MAAM,kBAAkB,CAAC;QAC3B,YAAY;KACb,CAAC;IACF,mEAAmE;IACnE,eAAe,EAAE,CAAC,mBAAmB,EAAE,YAAY,CAAC,CAAC;IACrD,iDAAiD;IACjD,OAAO,EAAE,CAAC,YAAY,CAAC,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,8CAA8C;IAC9C,aAAa,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,6BAA6B,EAAE,YAAY,CAAC,KAAK,IAAI,CAAC;IAClF,oDAAoD;IACpD,cAAc,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,6BAA6B,EAAE,YAAY,CAAC,KAAK,IAAI,CAAC;IACnF,uCAAuC;IACvC,gBAAgB,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,0BAA0B,EAAE,YAAY,CAAC,KAAK,IAAI,CAAC;IAClF,0CAA0C;IAC1C,aAAa,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,6BAA6B,EAAE,YAAY,CAAC,KAAK,IAAI,CAAC;IAClF,yCAAyC;IACzC,cAAc,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,6BAA6B,EAAE,YAAY,CAAC,KAAK,IAAI,CAAC;IACnF,6CAA6C;IAC7C,gBAAgB,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,0BAA0B,EAAE,YAAY,CAAC,KAAK,IAAI,CAAC;IAClF,mCAAmC;IACnC,KAAK,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAChC,uCAAuC;IACvC,cAAc,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACxC,oCAAoC;IACpC,WAAW,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACrC,qCAAqC;IACrC,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC,qCAAqC;IACrC,UAAU,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACpC,2CAA2C;IAC3C,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,MAAM,iBAAiB,GACzB,MAAM,GACN,mBAAmB,GACnB,oBAAoB,GACpB,UAAU,GACV,UAAU,CAAC;AAEf;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,iCAAiC;IACjC,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,kCAAkC;IAClC,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,8BAA8B;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;;;;OAKG;IACH,oBAAoB,CAAC,EAAE,0BAA0B,EAAE,CAAC;IAEpD;;;;;;;OAOG;IACH,eAAe,CACb,OAAO,EAAE,YAAY,EACrB,QAAQ,EAAE,cAAc,EACxB,YAAY,EAAE,iBAAiB,GAC9B,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjB;;;;OAIG;IACH,KAAK,IAAI,aAAa,CAAC;CACxB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/conversations/types.ts"],"names":[],"mappings":""}