sona-code 0.1.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/rules.js ADDED
@@ -0,0 +1,201 @@
1
+ "use strict";
2
+ /**
3
+ * Token-Safe Compression Rules
4
+ *
5
+ * These rules have been VALIDATED to reduce token count.
6
+ * Every pattern removes verbose phrases that add no semantic value.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.ABBREVIATION_RULES = exports.FILLER_RULES = void 0;
10
+ exports.getAllRules = getAllRules;
11
+ exports.getRuleCount = getRuleCount;
12
+ /**
13
+ * Filler phrases that can be safely removed or simplified.
14
+ * Each rule has been tested against tiktoken to confirm token savings.
15
+ */
16
+ exports.FILLER_RULES = [
17
+ // Massive savings (4-6 tokens)
18
+ { pattern: /\bit is important to note that\b/gi, replacement: '', name: 'important_to_note', tokensSaved: 6 },
19
+ { pattern: /\bit should be noted that\b/gi, replacement: '', name: 'should_be_noted', tokensSaved: 5 },
20
+ { pattern: /\bit is worth mentioning that\b/gi, replacement: '', name: 'worth_mentioning', tokensSaved: 5 },
21
+ { pattern: /\bit goes without saying that\b/gi, replacement: '', name: 'goes_without_saying', tokensSaved: 5 },
22
+ { pattern: /\bneedless to say,?\s*/gi, replacement: '', name: 'needless_to_say', tokensSaved: 4 },
23
+ { pattern: /\bin light of the fact that\b/gi, replacement: 'since', name: 'in_light_of', tokensSaved: 5 },
24
+ { pattern: /\bdue to the fact that\b/gi, replacement: 'because', name: 'due_to_fact', tokensSaved: 4 },
25
+ { pattern: /\bowing to the fact that\b/gi, replacement: 'because', name: 'owing_to_fact', tokensSaved: 4 },
26
+ { pattern: /\bon account of the fact that\b/gi, replacement: 'because', name: 'on_account_of', tokensSaved: 5 },
27
+ { pattern: /\bby virtue of the fact that\b/gi, replacement: 'because', name: 'by_virtue_of', tokensSaved: 5 },
28
+ { pattern: /\bgiven the fact that\b/gi, replacement: 'since', name: 'given_the_fact', tokensSaved: 3 },
29
+ { pattern: /\bdespite the fact that\b/gi, replacement: 'although', name: 'despite_fact', tokensSaved: 3 },
30
+ { pattern: /\bin spite of the fact that\b/gi, replacement: 'although', name: 'in_spite_of', tokensSaved: 5 },
31
+ { pattern: /\bregardless of the fact that\b/gi, replacement: 'although', name: 'regardless_of', tokensSaved: 4 },
32
+ { pattern: /\bnotwithstanding the fact that\b/gi, replacement: 'although', name: 'notwithstanding', tokensSaved: 4 },
33
+ // Good savings (2-4 tokens)
34
+ { pattern: /\bin order to\b/gi, replacement: 'to', name: 'in_order_to', tokensSaved: 2 },
35
+ { pattern: /\bfor the purpose of\b/gi, replacement: 'for', name: 'for_purpose_of', tokensSaved: 3 },
36
+ { pattern: /\bwith the intention of\b/gi, replacement: 'to', name: 'with_intention', tokensSaved: 3 },
37
+ { pattern: /\bso as to\b/gi, replacement: 'to', name: 'so_as_to', tokensSaved: 2 },
38
+ { pattern: /\bin an effort to\b/gi, replacement: 'to', name: 'in_effort_to', tokensSaved: 3 },
39
+ { pattern: /\bat this point in time\b/gi, replacement: 'now', name: 'at_this_point', tokensSaved: 4 },
40
+ { pattern: /\bat the present time\b/gi, replacement: 'currently', name: 'at_present_time', tokensSaved: 3 },
41
+ { pattern: /\bat the current moment\b/gi, replacement: 'now', name: 'current_moment', tokensSaved: 3 },
42
+ { pattern: /\bin this day and age\b/gi, replacement: 'today', name: 'day_and_age', tokensSaved: 4 },
43
+ { pattern: /\bup until this point\b/gi, replacement: 'until now', name: 'up_until', tokensSaved: 2 },
44
+ { pattern: /\bin the event that\b/gi, replacement: 'if', name: 'in_event_that', tokensSaved: 3 },
45
+ { pattern: /\bin the case that\b/gi, replacement: 'if', name: 'in_case_that', tokensSaved: 3 },
46
+ { pattern: /\bon the condition that\b/gi, replacement: 'if', name: 'on_condition', tokensSaved: 3 },
47
+ { pattern: /\bprovided that\b/gi, replacement: 'if', name: 'provided_that', tokensSaved: 1 },
48
+ { pattern: /\bassuming that\b/gi, replacement: 'if', name: 'assuming_that', tokensSaved: 1 },
49
+ { pattern: /\bin close proximity to\b/gi, replacement: 'near', name: 'close_proximity', tokensSaved: 3 },
50
+ { pattern: /\bin the vicinity of\b/gi, replacement: 'near', name: 'vicinity_of', tokensSaved: 3 },
51
+ { pattern: /\bin the neighborhood of\b/gi, replacement: 'about', name: 'neighborhood_of', tokensSaved: 3 },
52
+ { pattern: /\ba large number of\b/gi, replacement: 'many', name: 'large_number', tokensSaved: 3 },
53
+ { pattern: /\ba great number of\b/gi, replacement: 'many', name: 'great_number', tokensSaved: 3 },
54
+ { pattern: /\ba significant number of\b/gi, replacement: 'many', name: 'significant_number', tokensSaved: 3 },
55
+ { pattern: /\bthe vast majority of\b/gi, replacement: 'most', name: 'vast_majority', tokensSaved: 3 },
56
+ { pattern: /\bthe greater part of\b/gi, replacement: 'most', name: 'greater_part', tokensSaved: 3 },
57
+ { pattern: /\ba small number of\b/gi, replacement: 'few', name: 'small_number', tokensSaved: 3 },
58
+ { pattern: /\ba limited number of\b/gi, replacement: 'few', name: 'limited_number', tokensSaved: 3 },
59
+ // Moderate savings (1-2 tokens)
60
+ { pattern: /\bwith regard to\b/gi, replacement: 'regarding', name: 'with_regard_to', tokensSaved: 1 },
61
+ { pattern: /\bwith respect to\b/gi, replacement: 'regarding', name: 'with_respect_to', tokensSaved: 1 },
62
+ { pattern: /\bin regard to\b/gi, replacement: 'regarding', name: 'in_regard_to', tokensSaved: 1 },
63
+ { pattern: /\bin relation to\b/gi, replacement: 'about', name: 'in_relation_to', tokensSaved: 2 },
64
+ { pattern: /\bpertaining to\b/gi, replacement: 'about', name: 'pertaining_to', tokensSaved: 1 },
65
+ { pattern: /\bin reference to\b/gi, replacement: 'about', name: 'in_reference_to', tokensSaved: 2 },
66
+ { pattern: /\bon the subject of\b/gi, replacement: 'about', name: 'on_subject_of', tokensSaved: 3 },
67
+ { pattern: /\bprior to\b/gi, replacement: 'before', name: 'prior_to', tokensSaved: 1 },
68
+ { pattern: /\bsubsequent to\b/gi, replacement: 'after', name: 'subsequent_to', tokensSaved: 1 },
69
+ { pattern: /\bfollowing the conclusion of\b/gi, replacement: 'after', name: 'following_conclusion', tokensSaved: 3 },
70
+ { pattern: /\bin advance of\b/gi, replacement: 'before', name: 'in_advance_of', tokensSaved: 2 },
71
+ { pattern: /\bon a daily basis\b/gi, replacement: 'daily', name: 'daily_basis', tokensSaved: 3 },
72
+ { pattern: /\bon a regular basis\b/gi, replacement: 'regularly', name: 'regular_basis', tokensSaved: 3 },
73
+ { pattern: /\bon a frequent basis\b/gi, replacement: 'frequently', name: 'frequent_basis', tokensSaved: 3 },
74
+ { pattern: /\bon an occasional basis\b/gi, replacement: 'occasionally', name: 'occasional_basis', tokensSaved: 3 },
75
+ { pattern: /\bis able to\b/gi, replacement: 'can', name: 'is_able_to', tokensSaved: 2 },
76
+ { pattern: /\bhas the ability to\b/gi, replacement: 'can', name: 'has_ability', tokensSaved: 3 },
77
+ { pattern: /\bhas the capacity to\b/gi, replacement: 'can', name: 'has_capacity', tokensSaved: 3 },
78
+ { pattern: /\bis capable of\b/gi, replacement: 'can', name: 'is_capable', tokensSaved: 2 },
79
+ { pattern: /\bis in a position to\b/gi, replacement: 'can', name: 'in_position_to', tokensSaved: 4 },
80
+ { pattern: /\bthere is a possibility that\b/gi, replacement: 'possibly', name: 'possibility_that', tokensSaved: 4 },
81
+ { pattern: /\bthere is a chance that\b/gi, replacement: 'maybe', name: 'chance_that', tokensSaved: 4 },
82
+ { pattern: /\bit is possible that\b/gi, replacement: 'possibly', name: 'is_possible', tokensSaved: 3 },
83
+ { pattern: /\bit is likely that\b/gi, replacement: 'likely', name: 'is_likely', tokensSaved: 3 },
84
+ // Opinion softeners (remove)
85
+ { pattern: /\bin my opinion,?\s*/gi, replacement: '', name: 'in_my_opinion', tokensSaved: 3 },
86
+ { pattern: /\bi believe that\b/gi, replacement: '', name: 'i_believe', tokensSaved: 3 },
87
+ { pattern: /\bi think that\b/gi, replacement: '', name: 'i_think', tokensSaved: 3 },
88
+ { pattern: /\bit seems to me that\b/gi, replacement: '', name: 'seems_to_me', tokensSaved: 4 },
89
+ { pattern: /\bto be honest,?\s*/gi, replacement: '', name: 'to_be_honest', tokensSaved: 3 },
90
+ { pattern: /\bfrankly speaking,?\s*/gi, replacement: '', name: 'frankly_speaking', tokensSaved: 3 },
91
+ { pattern: /\bto tell you the truth,?\s*/gi, replacement: '', name: 'tell_truth', tokensSaved: 5 },
92
+ // Redundant intensifiers
93
+ { pattern: /\babsolutely essential\b/gi, replacement: 'essential', name: 'absolutely_essential', tokensSaved: 1 },
94
+ { pattern: /\bcompletely eliminate\b/gi, replacement: 'eliminate', name: 'completely_eliminate', tokensSaved: 1 },
95
+ { pattern: /\btotally unique\b/gi, replacement: 'unique', name: 'totally_unique', tokensSaved: 1 },
96
+ { pattern: /\bvery unique\b/gi, replacement: 'unique', name: 'very_unique', tokensSaved: 1 },
97
+ { pattern: /\bextremely important\b/gi, replacement: 'critical', name: 'extremely_important', tokensSaved: 1 },
98
+ { pattern: /\bhighly significant\b/gi, replacement: 'significant', name: 'highly_significant', tokensSaved: 1 },
99
+ { pattern: /\bbasically,?\s*/gi, replacement: '', name: 'basically', tokensSaved: 2 },
100
+ { pattern: /\bactually,?\s*/gi, replacement: '', name: 'actually', tokensSaved: 2 },
101
+ { pattern: /\binterestingly,?\s*/gi, replacement: '', name: 'interestingly', tokensSaved: 2 },
102
+ { pattern: /\bobviously,?\s*/gi, replacement: '', name: 'obviously', tokensSaved: 2 },
103
+ { pattern: /\bclearly,?\s*/gi, replacement: '', name: 'clearly', tokensSaved: 2 },
104
+ { pattern: /\bsimply put,?\s*/gi, replacement: '', name: 'simply_put', tokensSaved: 3 },
105
+ { pattern: /\bto put it simply,?\s*/gi, replacement: '', name: 'put_it_simply', tokensSaved: 4 },
106
+ { pattern: /\bas a matter of fact,?\s*/gi, replacement: '', name: 'matter_of_fact', tokensSaved: 5 },
107
+ { pattern: /\bthe fact of the matter is,?\s*/gi, replacement: '', name: 'fact_of_matter', tokensSaved: 6 },
108
+ // Wordy constructions
109
+ { pattern: /\bhas the potential to\b/gi, replacement: 'may', name: 'has_potential', tokensSaved: 3 },
110
+ { pattern: /\bhas the opportunity to\b/gi, replacement: 'can', name: 'has_opportunity', tokensSaved: 3 },
111
+ { pattern: /\bfor all intents and purposes\b/gi, replacement: 'essentially', name: 'intents_purposes', tokensSaved: 4 },
112
+ { pattern: /\bat the end of the day\b/gi, replacement: 'ultimately', name: 'end_of_day', tokensSaved: 4 },
113
+ { pattern: /\bwhen all is said and done\b/gi, replacement: 'ultimately', name: 'all_said_done', tokensSaved: 5 },
114
+ { pattern: /\bin the final analysis\b/gi, replacement: 'ultimately', name: 'final_analysis', tokensSaved: 3 },
115
+ { pattern: /\bin the long run\b/gi, replacement: 'eventually', name: 'long_run', tokensSaved: 3 },
116
+ { pattern: /\bin the short term\b/gi, replacement: 'soon', name: 'short_term', tokensSaved: 3 },
117
+ { pattern: /\bin the near future\b/gi, replacement: 'soon', name: 'near_future', tokensSaved: 3 },
118
+ { pattern: /\bat some point in the future\b/gi, replacement: 'eventually', name: 'some_point_future', tokensSaved: 4 },
119
+ { pattern: /\bas a result of\b/gi, replacement: 'from', name: 'as_result_of', tokensSaved: 3 },
120
+ { pattern: /\bas a consequence of\b/gi, replacement: 'from', name: 'consequence_of', tokensSaved: 3 },
121
+ { pattern: /\bthe reason why is that\b/gi, replacement: 'because', name: 'reason_why', tokensSaved: 4 },
122
+ { pattern: /\bthe reason for this is that\b/gi, replacement: 'because', name: 'reason_for_this', tokensSaved: 5 },
123
+ { pattern: /\bthis is due to the fact that\b/gi, replacement: 'because', name: 'this_due_to', tokensSaved: 6 },
124
+ { pattern: /\bone of the reasons is that\b/gi, replacement: 'because', name: 'one_reasons', tokensSaved: 5 },
125
+ { pattern: /\bit can be seen that\b/gi, replacement: '', name: 'can_be_seen', tokensSaved: 5 },
126
+ { pattern: /\bit is clear that\b/gi, replacement: '', name: 'is_clear', tokensSaved: 4 },
127
+ { pattern: /\bit is evident that\b/gi, replacement: '', name: 'is_evident', tokensSaved: 4 },
128
+ { pattern: /\bit is apparent that\b/gi, replacement: '', name: 'is_apparent', tokensSaved: 4 },
129
+ { pattern: /\bit is obvious that\b/gi, replacement: '', name: 'is_obvious', tokensSaved: 4 },
130
+ { pattern: /\bit is well known that\b/gi, replacement: '', name: 'well_known', tokensSaved: 5 },
131
+ { pattern: /\bit is widely accepted that\b/gi, replacement: '', name: 'widely_accepted', tokensSaved: 5 },
132
+ { pattern: /\bit has been shown that\b/gi, replacement: '', name: 'has_been_shown', tokensSaved: 5 },
133
+ { pattern: /\bit has been demonstrated that\b/gi, replacement: '', name: 'been_demonstrated', tokensSaved: 5 },
134
+ { pattern: /\bit has been proven that\b/gi, replacement: '', name: 'been_proven', tokensSaved: 5 },
135
+ { pattern: /\bresearch has shown that\b/gi, replacement: '', name: 'research_shown', tokensSaved: 4 },
136
+ { pattern: /\bstudies have shown that\b/gi, replacement: '', name: 'studies_shown', tokensSaved: 4 },
137
+ { pattern: /\bevidence suggests that\b/gi, replacement: '', name: 'evidence_suggests', tokensSaved: 3 },
138
+ { pattern: /\bthe evidence indicates that\b/gi, replacement: '', name: 'evidence_indicates', tokensSaved: 4 },
139
+ // Action phrases
140
+ { pattern: /\bby means of\b/gi, replacement: 'via', name: 'by_means_of', tokensSaved: 2 },
141
+ { pattern: /\bby way of\b/gi, replacement: 'via', name: 'by_way_of', tokensSaved: 2 },
142
+ { pattern: /\bwith the help of\b/gi, replacement: 'using', name: 'with_help_of', tokensSaved: 3 },
143
+ { pattern: /\bwith the assistance of\b/gi, replacement: 'using', name: 'with_assistance', tokensSaved: 3 },
144
+ { pattern: /\bwith the aid of\b/gi, replacement: 'using', name: 'with_aid_of', tokensSaved: 3 },
145
+ { pattern: /\bmake use of\b/gi, replacement: 'use', name: 'make_use_of', tokensSaved: 2 },
146
+ { pattern: /\btake into consideration\b/gi, replacement: 'consider', name: 'take_consideration', tokensSaved: 2 },
147
+ { pattern: /\btake into account\b/gi, replacement: 'consider', name: 'take_account', tokensSaved: 2 },
148
+ { pattern: /\bgive consideration to\b/gi, replacement: 'consider', name: 'give_consideration', tokensSaved: 2 },
149
+ { pattern: /\bcome to a conclusion\b/gi, replacement: 'conclude', name: 'come_conclusion', tokensSaved: 3 },
150
+ { pattern: /\bcome to an agreement\b/gi, replacement: 'agree', name: 'come_agreement', tokensSaved: 3 },
151
+ { pattern: /\bcome to a decision\b/gi, replacement: 'decide', name: 'come_decision', tokensSaved: 3 },
152
+ { pattern: /\bmake a decision\b/gi, replacement: 'decide', name: 'make_decision', tokensSaved: 2 },
153
+ { pattern: /\bcarry out an investigation\b/gi, replacement: 'investigate', name: 'carry_investigation', tokensSaved: 3 },
154
+ { pattern: /\bconduct an investigation\b/gi, replacement: 'investigate', name: 'conduct_investigation', tokensSaved: 2 },
155
+ { pattern: /\bperform an analysis\b/gi, replacement: 'analyze', name: 'perform_analysis', tokensSaved: 2 },
156
+ { pattern: /\bconduct an analysis\b/gi, replacement: 'analyze', name: 'conduct_analysis', tokensSaved: 2 },
157
+ { pattern: /\bhave a discussion\b/gi, replacement: 'discuss', name: 'have_discussion', tokensSaved: 2 },
158
+ { pattern: /\bengage in a discussion\b/gi, replacement: 'discuss', name: 'engage_discussion', tokensSaved: 3 },
159
+ { pattern: /\bhave a meeting\b/gi, replacement: 'meet', name: 'have_meeting', tokensSaved: 2 },
160
+ { pattern: /\bhold a meeting\b/gi, replacement: 'meet', name: 'hold_meeting', tokensSaved: 2 },
161
+ { pattern: /\bmake an attempt\b/gi, replacement: 'try', name: 'make_attempt', tokensSaved: 2 },
162
+ { pattern: /\bmake an effort\b/gi, replacement: 'try', name: 'make_effort', tokensSaved: 2 },
163
+ { pattern: /\bput forth an effort\b/gi, replacement: 'try', name: 'put_forth_effort', tokensSaved: 3 },
164
+ { pattern: /\bgive an indication\b/gi, replacement: 'indicate', name: 'give_indication', tokensSaved: 2 },
165
+ { pattern: /\bprovide an explanation\b/gi, replacement: 'explain', name: 'provide_explanation', tokensSaved: 2 },
166
+ { pattern: /\boffer an explanation\b/gi, replacement: 'explain', name: 'offer_explanation', tokensSaved: 2 },
167
+ { pattern: /\bgive a description\b/gi, replacement: 'describe', name: 'give_description', tokensSaved: 2 },
168
+ { pattern: /\bprovide a description\b/gi, replacement: 'describe', name: 'provide_description', tokensSaved: 2 },
169
+ { pattern: /\bmake a recommendation\b/gi, replacement: 'recommend', name: 'make_recommendation', tokensSaved: 2 },
170
+ { pattern: /\bprovide a recommendation\b/gi, replacement: 'recommend', name: 'provide_recommendation', tokensSaved: 2 },
171
+ { pattern: /\bin a manner that\b/gi, replacement: 'so', name: 'in_manner_that', tokensSaved: 3 },
172
+ { pattern: /\bin such a way that\b/gi, replacement: 'so', name: 'in_such_way', tokensSaved: 4 },
173
+ { pattern: /\bto the extent that\b/gi, replacement: 'so', name: 'to_extent_that', tokensSaved: 3 },
174
+ { pattern: /\bto such an extent that\b/gi, replacement: 'so', name: 'to_such_extent', tokensSaved: 4 },
175
+ ];
176
+ /**
177
+ * Standard abbreviations that exist in tokenizer vocabulary
178
+ */
179
+ exports.ABBREVIATION_RULES = [
180
+ { pattern: /\bfor example\b/gi, replacement: 'e.g.', name: 'for_example', tokensSaved: 1 },
181
+ { pattern: /\bfor instance\b/gi, replacement: 'e.g.', name: 'for_instance', tokensSaved: 1 },
182
+ { pattern: /\bthat is\b/gi, replacement: 'i.e.', name: 'that_is', tokensSaved: 1 },
183
+ { pattern: /\bthat is to say\b/gi, replacement: 'i.e.', name: 'that_is_to_say', tokensSaved: 3 },
184
+ { pattern: /\band so on\b/gi, replacement: 'etc.', name: 'and_so_on', tokensSaved: 2 },
185
+ { pattern: /\band so forth\b/gi, replacement: 'etc.', name: 'and_so_forth', tokensSaved: 2 },
186
+ { pattern: /\bet cetera\b/gi, replacement: 'etc.', name: 'et_cetera', tokensSaved: 2 },
187
+ { pattern: /\bversus\b/gi, replacement: 'vs.', name: 'versus', tokensSaved: 0 },
188
+ ];
189
+ /**
190
+ * Get all compression rules
191
+ */
192
+ function getAllRules() {
193
+ return [...exports.FILLER_RULES, ...exports.ABBREVIATION_RULES];
194
+ }
195
+ /**
196
+ * Get total rule count
197
+ */
198
+ function getRuleCount() {
199
+ return exports.FILLER_RULES.length + exports.ABBREVIATION_RULES.length;
200
+ }
201
+ //# sourceMappingURL=rules.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rules.js","sourceRoot":"","sources":["../src/rules.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,156 @@
1
+ /**
2
+ * SONA Session Manager
3
+ *
4
+ * Handles continuous streaming compression across document processing sessions.
5
+ * Primary use case: Document processing and summary generation where multiple
6
+ * interactions happen with the LLM, each benefiting from compression.
7
+ *
8
+ * Key features:
9
+ * - Session-based tracking of cumulative savings
10
+ * - Streaming compression for real-time processing
11
+ * - Context preservation across conversation turns
12
+ * - RAG-optimized chunk compression
13
+ */
14
+ import { CompressionResult } from './compressor.js';
15
+ import { EventEmitter } from 'events';
16
+ export interface SessionConfig {
17
+ /** Session identifier */
18
+ sessionId?: string;
19
+ /** Price per million input tokens for cost tracking */
20
+ pricePerMillionInput?: number;
21
+ /** Price per million output tokens */
22
+ pricePerMillionOutput?: number;
23
+ /** Terms that should never be compressed */
24
+ protectedTerms?: string[];
25
+ /** Enable verbose logging */
26
+ verbose?: boolean;
27
+ }
28
+ export interface SessionStats {
29
+ sessionId: string;
30
+ startedAt: Date;
31
+ lastActivityAt: Date;
32
+ totalRequests: number;
33
+ documentChunksProcessed: number;
34
+ conversationTurns: number;
35
+ totalOriginalInputTokens: number;
36
+ totalCompressedInputTokens: number;
37
+ totalInputTokensSaved: number;
38
+ inputSavingsPercent: number;
39
+ estimatedInputCostSaved: number;
40
+ pricePerMillionInput: number;
41
+ documents: DocumentStats[];
42
+ }
43
+ export interface DocumentStats {
44
+ documentId: string;
45
+ name?: string;
46
+ startedAt: Date;
47
+ chunksProcessed: number;
48
+ originalTokens: number;
49
+ compressedTokens: number;
50
+ tokensSaved: number;
51
+ savingsPercent: number;
52
+ }
53
+ export interface StreamChunk {
54
+ type: 'text' | 'compressed' | 'stats' | 'error';
55
+ content: string;
56
+ stats?: {
57
+ originalTokens: number;
58
+ compressedTokens: number;
59
+ tokensSaved: number;
60
+ };
61
+ }
62
+ /**
63
+ * Document Processing Session
64
+ *
65
+ * Use this for continuous document processing workflows where
66
+ * you're feeding documents to an LLM for summarization, analysis,
67
+ * or other tasks.
68
+ */
69
+ export declare class SonaSession extends EventEmitter {
70
+ private compressor;
71
+ private config;
72
+ private stats;
73
+ private activeDocument;
74
+ constructor(config?: SessionConfig);
75
+ private generateSessionId;
76
+ private initStats;
77
+ /**
78
+ * Start processing a new document
79
+ */
80
+ startDocument(documentId: string, name?: string): void;
81
+ /**
82
+ * End current document processing
83
+ */
84
+ endDocument(): DocumentStats | null;
85
+ /**
86
+ * Compress a document chunk for RAG or batch processing
87
+ *
88
+ * Use this when processing documents in chunks before sending to LLM
89
+ */
90
+ compressChunk(chunk: string): CompressionResult;
91
+ /**
92
+ * Compress multiple chunks (for RAG context)
93
+ */
94
+ compressChunks(chunks: string[]): {
95
+ compressed: string[];
96
+ stats: {
97
+ totalOriginal: number;
98
+ totalCompressed: number;
99
+ totalSaved: number;
100
+ };
101
+ };
102
+ /**
103
+ * Compress a conversation turn (user message to LLM)
104
+ */
105
+ compressTurn(content: string): CompressionResult;
106
+ /**
107
+ * Compress messages array (OpenAI/Anthropic format)
108
+ * Typically compress user and system, preserve assistant responses
109
+ */
110
+ compressMessages(messages: Array<{
111
+ role: string;
112
+ content: string | unknown;
113
+ }>, options?: {
114
+ compressSystem?: boolean;
115
+ compressUser?: boolean;
116
+ compressAssistant?: boolean;
117
+ }): Array<{
118
+ role: string;
119
+ content: string | unknown;
120
+ }>;
121
+ /**
122
+ * Stream compress for real-time processing
123
+ * Yields compressed chunks as they're processed
124
+ */
125
+ streamCompress(textStream: AsyncIterable<string>): AsyncGenerator<StreamChunk>;
126
+ /**
127
+ * Record compression result in session stats
128
+ */
129
+ private recordCompression;
130
+ /**
131
+ * Get current session statistics
132
+ */
133
+ getStats(): SessionStats;
134
+ /**
135
+ * Get formatted summary report
136
+ */
137
+ getSummaryReport(): string;
138
+ private formatDuration;
139
+ /**
140
+ * Add a protected term that won't be compressed
141
+ */
142
+ addProtectedTerm(term: string): void;
143
+ /**
144
+ * Get session ID
145
+ */
146
+ getSessionId(): string;
147
+ /**
148
+ * Reset session statistics (keeps configuration)
149
+ */
150
+ reset(): void;
151
+ }
152
+ /**
153
+ * Create a new document processing session
154
+ */
155
+ export declare function createSession(config?: SessionConfig): SonaSession;
156
+ //# sourceMappingURL=session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}