@blockrun/clawrouter 0.12.101 → 0.12.103
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/cli.d.ts +0 -15
- package/dist/cli.js +80069 -273
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts +1406 -34
- package/dist/index.js +81085 -1075
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/auth.d.ts +0 -82
- package/dist/auth.d.ts.map +0 -1
- package/dist/auth.js +0 -388
- package/dist/auth.js.map +0 -1
- package/dist/balance.d.ts +0 -97
- package/dist/balance.d.ts.map +0 -1
- package/dist/balance.js +0 -157
- package/dist/balance.js.map +0 -1
- package/dist/cli.d.ts.map +0 -1
- package/dist/compression/codebook.d.ts +0 -24
- package/dist/compression/codebook.d.ts.map +0 -1
- package/dist/compression/codebook.js +0 -119
- package/dist/compression/codebook.js.map +0 -1
- package/dist/compression/index.d.ts +0 -33
- package/dist/compression/index.d.ts.map +0 -1
- package/dist/compression/index.js +0 -246
- package/dist/compression/index.js.map +0 -1
- package/dist/compression/layers/deduplication.d.ts +0 -28
- package/dist/compression/layers/deduplication.d.ts.map +0 -1
- package/dist/compression/layers/deduplication.js +0 -101
- package/dist/compression/layers/deduplication.js.map +0 -1
- package/dist/compression/layers/dictionary.d.ts +0 -21
- package/dist/compression/layers/dictionary.d.ts.map +0 -1
- package/dist/compression/layers/dictionary.js +0 -73
- package/dist/compression/layers/dictionary.js.map +0 -1
- package/dist/compression/layers/dynamic-codebook.d.ts +0 -26
- package/dist/compression/layers/dynamic-codebook.d.ts.map +0 -1
- package/dist/compression/layers/dynamic-codebook.js +0 -149
- package/dist/compression/layers/dynamic-codebook.js.map +0 -1
- package/dist/compression/layers/json-compact.d.ts +0 -23
- package/dist/compression/layers/json-compact.d.ts.map +0 -1
- package/dist/compression/layers/json-compact.js +0 -79
- package/dist/compression/layers/json-compact.js.map +0 -1
- package/dist/compression/layers/observation.d.ts +0 -21
- package/dist/compression/layers/observation.d.ts.map +0 -1
- package/dist/compression/layers/observation.js +0 -130
- package/dist/compression/layers/observation.js.map +0 -1
- package/dist/compression/layers/paths.d.ts +0 -24
- package/dist/compression/layers/paths.d.ts.map +0 -1
- package/dist/compression/layers/paths.js +0 -110
- package/dist/compression/layers/paths.js.map +0 -1
- package/dist/compression/layers/whitespace.d.ts +0 -27
- package/dist/compression/layers/whitespace.d.ts.map +0 -1
- package/dist/compression/layers/whitespace.js +0 -60
- package/dist/compression/layers/whitespace.js.map +0 -1
- package/dist/compression/types.d.ts +0 -84
- package/dist/compression/types.d.ts.map +0 -1
- package/dist/compression/types.js +0 -27
- package/dist/compression/types.js.map +0 -1
- package/dist/config.d.ts +0 -12
- package/dist/config.d.ts.map +0 -1
- package/dist/config.js +0 -22
- package/dist/config.js.map +0 -1
- package/dist/dedup.d.ts +0 -34
- package/dist/dedup.d.ts.map +0 -1
- package/dist/dedup.js +0 -150
- package/dist/dedup.js.map +0 -1
- package/dist/doctor.d.ts +0 -8
- package/dist/doctor.d.ts.map +0 -1
- package/dist/doctor.js +0 -375
- package/dist/doctor.js.map +0 -1
- package/dist/error-classification.test.d.ts +0 -2
- package/dist/error-classification.test.d.ts.map +0 -1
- package/dist/error-classification.test.js +0 -59
- package/dist/error-classification.test.js.map +0 -1
- package/dist/errors.d.ts +0 -54
- package/dist/errors.d.ts.map +0 -1
- package/dist/errors.js +0 -85
- package/dist/errors.js.map +0 -1
- package/dist/exclude-models.d.ts +0 -28
- package/dist/exclude-models.d.ts.map +0 -1
- package/dist/exclude-models.integration.test.d.ts +0 -2
- package/dist/exclude-models.integration.test.d.ts.map +0 -1
- package/dist/exclude-models.integration.test.js +0 -46
- package/dist/exclude-models.integration.test.js.map +0 -1
- package/dist/exclude-models.js +0 -70
- package/dist/exclude-models.js.map +0 -1
- package/dist/exclude-models.test.d.ts +0 -5
- package/dist/exclude-models.test.d.ts.map +0 -1
- package/dist/exclude-models.test.js +0 -95
- package/dist/exclude-models.test.js.map +0 -1
- package/dist/fs-read.d.ts +0 -11
- package/dist/fs-read.d.ts.map +0 -1
- package/dist/fs-read.js +0 -47
- package/dist/fs-read.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/journal.d.ts +0 -67
- package/dist/journal.d.ts.map +0 -1
- package/dist/journal.js +0 -184
- package/dist/journal.js.map +0 -1
- package/dist/journal.test.d.ts +0 -2
- package/dist/journal.test.d.ts.map +0 -1
- package/dist/journal.test.js +0 -201
- package/dist/journal.test.js.map +0 -1
- package/dist/logger.d.ts +0 -33
- package/dist/logger.d.ts.map +0 -1
- package/dist/logger.js +0 -35
- package/dist/logger.js.map +0 -1
- package/dist/models.d.ts +0 -107
- package/dist/models.d.ts.map +0 -1
- package/dist/models.js +0 -941
- package/dist/models.js.map +0 -1
- package/dist/models.test.d.ts +0 -2
- package/dist/models.test.d.ts.map +0 -1
- package/dist/models.test.js +0 -38
- package/dist/models.test.js.map +0 -1
- package/dist/partners/index.d.ts +0 -8
- package/dist/partners/index.d.ts.map +0 -1
- package/dist/partners/index.js +0 -6
- package/dist/partners/index.js.map +0 -1
- package/dist/partners/registry.d.ts +0 -51
- package/dist/partners/registry.d.ts.map +0 -1
- package/dist/partners/registry.js +0 -256
- package/dist/partners/registry.js.map +0 -1
- package/dist/partners/tools.d.ts +0 -24
- package/dist/partners/tools.d.ts.map +0 -1
- package/dist/partners/tools.js +0 -97
- package/dist/partners/tools.js.map +0 -1
- package/dist/payment-preauth.d.ts +0 -17
- package/dist/payment-preauth.d.ts.map +0 -1
- package/dist/payment-preauth.js +0 -102
- package/dist/payment-preauth.js.map +0 -1
- package/dist/provider.d.ts +0 -19
- package/dist/provider.d.ts.map +0 -1
- package/dist/provider.js +0 -45
- package/dist/provider.js.map +0 -1
- package/dist/proxy.d.ts +0 -210
- package/dist/proxy.d.ts.map +0 -1
- package/dist/proxy.debrand.test.d.ts +0 -2
- package/dist/proxy.debrand.test.d.ts.map +0 -1
- package/dist/proxy.debrand.test.js +0 -101
- package/dist/proxy.debrand.test.js.map +0 -1
- package/dist/proxy.degraded-response.test.d.ts +0 -2
- package/dist/proxy.degraded-response.test.d.ts.map +0 -1
- package/dist/proxy.degraded-response.test.js +0 -105
- package/dist/proxy.degraded-response.test.js.map +0 -1
- package/dist/proxy.image-download.test.d.ts +0 -2
- package/dist/proxy.image-download.test.d.ts.map +0 -1
- package/dist/proxy.image-download.test.js +0 -92
- package/dist/proxy.image-download.test.js.map +0 -1
- package/dist/proxy.js +0 -3810
- package/dist/proxy.js.map +0 -1
- package/dist/proxy.models-endpoint.test.d.ts +0 -2
- package/dist/proxy.models-endpoint.test.d.ts.map +0 -1
- package/dist/proxy.models-endpoint.test.js +0 -19
- package/dist/proxy.models-endpoint.test.js.map +0 -1
- package/dist/proxy.multiturn-thinking.test.d.ts +0 -2
- package/dist/proxy.multiturn-thinking.test.d.ts.map +0 -1
- package/dist/proxy.multiturn-thinking.test.js +0 -82
- package/dist/proxy.multiturn-thinking.test.js.map +0 -1
- package/dist/proxy.payment-chain-reuse.test.d.ts +0 -2
- package/dist/proxy.payment-chain-reuse.test.d.ts.map +0 -1
- package/dist/proxy.payment-chain-reuse.test.js +0 -30
- package/dist/proxy.payment-chain-reuse.test.js.map +0 -1
- package/dist/proxy.solana-resilience.test.d.ts +0 -12
- package/dist/proxy.solana-resilience.test.d.ts.map +0 -1
- package/dist/proxy.solana-resilience.test.js +0 -39
- package/dist/proxy.solana-resilience.test.js.map +0 -1
- package/dist/report.d.ts +0 -6
- package/dist/report.d.ts.map +0 -1
- package/dist/report.js +0 -44
- package/dist/report.js.map +0 -1
- package/dist/response-cache.advanced.test.d.ts +0 -2
- package/dist/response-cache.advanced.test.d.ts.map +0 -1
- package/dist/response-cache.advanced.test.js +0 -566
- package/dist/response-cache.advanced.test.js.map +0 -1
- package/dist/response-cache.d.ts +0 -85
- package/dist/response-cache.d.ts.map +0 -1
- package/dist/response-cache.edge-cases.test.d.ts +0 -2
- package/dist/response-cache.edge-cases.test.d.ts.map +0 -1
- package/dist/response-cache.edge-cases.test.js +0 -488
- package/dist/response-cache.edge-cases.test.js.map +0 -1
- package/dist/response-cache.extreme.test.d.ts +0 -2
- package/dist/response-cache.extreme.test.d.ts.map +0 -1
- package/dist/response-cache.extreme.test.js +0 -561
- package/dist/response-cache.extreme.test.js.map +0 -1
- package/dist/response-cache.js +0 -240
- package/dist/response-cache.js.map +0 -1
- package/dist/response-cache.test.d.ts +0 -2
- package/dist/response-cache.test.d.ts.map +0 -1
- package/dist/response-cache.test.js +0 -242
- package/dist/response-cache.test.js.map +0 -1
- package/dist/retry.d.ts +0 -42
- package/dist/retry.d.ts.map +0 -1
- package/dist/retry.js +0 -99
- package/dist/retry.js.map +0 -1
- package/dist/router/config.d.ts +0 -11
- package/dist/router/config.d.ts.map +0 -1
- package/dist/router/config.js +0 -1215
- package/dist/router/config.js.map +0 -1
- package/dist/router/index.d.ts +0 -18
- package/dist/router/index.d.ts.map +0 -1
- package/dist/router/index.js +0 -19
- package/dist/router/index.js.map +0 -1
- package/dist/router/llm-classifier.d.ts +0 -29
- package/dist/router/llm-classifier.d.ts.map +0 -1
- package/dist/router/llm-classifier.js +0 -99
- package/dist/router/llm-classifier.js.map +0 -1
- package/dist/router/rules.d.ts +0 -12
- package/dist/router/rules.d.ts.map +0 -1
- package/dist/router/rules.js +0 -202
- package/dist/router/rules.js.map +0 -1
- package/dist/router/selector.d.ts +0 -58
- package/dist/router/selector.d.ts.map +0 -1
- package/dist/router/selector.js +0 -165
- package/dist/router/selector.js.map +0 -1
- package/dist/router/selector.test.d.ts +0 -2
- package/dist/router/selector.test.d.ts.map +0 -1
- package/dist/router/selector.test.js +0 -67
- package/dist/router/selector.test.js.map +0 -1
- package/dist/router/strategy.d.ts +0 -19
- package/dist/router/strategy.d.ts.map +0 -1
- package/dist/router/strategy.js +0 -138
- package/dist/router/strategy.js.map +0 -1
- package/dist/router/strategy.test.d.ts +0 -2
- package/dist/router/strategy.test.d.ts.map +0 -1
- package/dist/router/strategy.test.js +0 -131
- package/dist/router/strategy.test.js.map +0 -1
- package/dist/router/types.d.ts +0 -127
- package/dist/router/types.d.ts.map +0 -1
- package/dist/router/types.js +0 -11
- package/dist/router/types.js.map +0 -1
- package/dist/session.d.ts +0 -124
- package/dist/session.d.ts.map +0 -1
- package/dist/session.js +0 -256
- package/dist/session.js.map +0 -1
- package/dist/session.test.d.ts +0 -2
- package/dist/session.test.d.ts.map +0 -1
- package/dist/session.test.js +0 -163
- package/dist/session.test.js.map +0 -1
- package/dist/solana-balance.d.ts +0 -48
- package/dist/solana-balance.d.ts.map +0 -1
- package/dist/solana-balance.js +0 -142
- package/dist/solana-balance.js.map +0 -1
- package/dist/spend-control.d.ts +0 -112
- package/dist/spend-control.d.ts.map +0 -1
- package/dist/spend-control.js +0 -278
- package/dist/spend-control.js.map +0 -1
- package/dist/spend-control.test.d.ts +0 -5
- package/dist/spend-control.test.d.ts.map +0 -1
- package/dist/spend-control.test.js +0 -210
- package/dist/spend-control.test.js.map +0 -1
- package/dist/stats.d.ts +0 -64
- package/dist/stats.d.ts.map +0 -1
- package/dist/stats.js +0 -295
- package/dist/stats.js.map +0 -1
- package/dist/types.d.ts +0 -150
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -9
- package/dist/types.js.map +0 -1
- package/dist/update-hint.test.d.ts +0 -9
- package/dist/update-hint.test.d.ts.map +0 -1
- package/dist/update-hint.test.js +0 -156
- package/dist/update-hint.test.js.map +0 -1
- package/dist/updater.d.ts +0 -10
- package/dist/updater.d.ts.map +0 -1
- package/dist/updater.js +0 -55
- package/dist/updater.js.map +0 -1
- package/dist/version.d.ts +0 -3
- package/dist/version.d.ts.map +0 -1
- package/dist/version.js +0 -16
- package/dist/version.js.map +0 -1
- package/dist/wallet.d.ts +0 -52
- package/dist/wallet.d.ts.map +0 -1
- package/dist/wallet.js +0 -94
- package/dist/wallet.js.map +0 -1
- package/dist/wallet.test.d.ts +0 -6
- package/dist/wallet.test.d.ts.map +0 -1
- package/dist/wallet.test.js +0 -117
- package/dist/wallet.test.js.map +0 -1
- package/dist/x402-sdk.test.d.ts +0 -6
- package/dist/x402-sdk.test.d.ts.map +0 -1
- package/dist/x402-sdk.test.js +0 -161
- package/dist/x402-sdk.test.js.map +0 -1
package/dist/journal.js
DELETED
|
@@ -1,184 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Session Journal - Memory layer for ClawRouter
|
|
3
|
-
*
|
|
4
|
-
* Maintains a compact record of key actions per session, enabling agents
|
|
5
|
-
* to recall earlier work even when OpenClaw's sessions_history is truncated.
|
|
6
|
-
*
|
|
7
|
-
* How it works:
|
|
8
|
-
* 1. As LLM responses flow through, extracts key actions ("I created X", "I fixed Y")
|
|
9
|
-
* 2. Stores them in a compact journal per session
|
|
10
|
-
* 3. When a request mentions past work ("what did you do today?"), injects the journal
|
|
11
|
-
*/
|
|
12
|
-
const DEFAULT_CONFIG = {
|
|
13
|
-
maxEntries: 100,
|
|
14
|
-
maxAgeMs: 24 * 60 * 60 * 1000, // 24 hours
|
|
15
|
-
maxEventsPerResponse: 5,
|
|
16
|
-
};
|
|
17
|
-
export class SessionJournal {
|
|
18
|
-
journals = new Map();
|
|
19
|
-
config;
|
|
20
|
-
constructor(config) {
|
|
21
|
-
this.config = { ...DEFAULT_CONFIG, ...config };
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Extract key events from assistant response content.
|
|
25
|
-
* Looks for patterns like "I created...", "I fixed...", "Successfully..."
|
|
26
|
-
*/
|
|
27
|
-
extractEvents(content) {
|
|
28
|
-
if (!content || typeof content !== "string") {
|
|
29
|
-
return [];
|
|
30
|
-
}
|
|
31
|
-
const events = [];
|
|
32
|
-
const seen = new Set();
|
|
33
|
-
// Patterns for identifying key actions
|
|
34
|
-
// Note: Patterns allow optional words like "also", "then", "have" between "I" and verb
|
|
35
|
-
const patterns = [
|
|
36
|
-
// Creation patterns
|
|
37
|
-
/I (?:also |then |have |)?(?:created|implemented|added|wrote|built|generated|set up|initialized) ([^.!?\n]{10,150})/gi,
|
|
38
|
-
// Fix patterns
|
|
39
|
-
/I (?:also |then |have |)?(?:fixed|resolved|solved|patched|corrected|addressed|debugged) ([^.!?\n]{10,150})/gi,
|
|
40
|
-
// Completion patterns
|
|
41
|
-
/I (?:also |then |have |)?(?:completed|finished|done with|wrapped up) ([^.!?\n]{10,150})/gi,
|
|
42
|
-
// Update patterns
|
|
43
|
-
/I (?:also |then |have |)?(?:updated|modified|changed|refactored|improved|enhanced|optimized) ([^.!?\n]{10,150})/gi,
|
|
44
|
-
// Success patterns
|
|
45
|
-
/Successfully ([^.!?\n]{10,150})/gi,
|
|
46
|
-
// Tool usage patterns (when agent uses tools)
|
|
47
|
-
/I (?:also |then |have |)?(?:ran|executed|called|invoked) ([^.!?\n]{10,100})/gi,
|
|
48
|
-
];
|
|
49
|
-
for (const pattern of patterns) {
|
|
50
|
-
// Reset pattern lastIndex for each iteration
|
|
51
|
-
pattern.lastIndex = 0;
|
|
52
|
-
let match;
|
|
53
|
-
while ((match = pattern.exec(content)) !== null) {
|
|
54
|
-
const action = match[0].trim();
|
|
55
|
-
// Skip if already seen (dedup)
|
|
56
|
-
const normalized = action.toLowerCase();
|
|
57
|
-
if (seen.has(normalized)) {
|
|
58
|
-
continue;
|
|
59
|
-
}
|
|
60
|
-
// Validate length (not too short or too long)
|
|
61
|
-
if (action.length >= 15 && action.length <= 200) {
|
|
62
|
-
events.push(action);
|
|
63
|
-
seen.add(normalized);
|
|
64
|
-
}
|
|
65
|
-
// Stop if we have enough events
|
|
66
|
-
if (events.length >= this.config.maxEventsPerResponse) {
|
|
67
|
-
break;
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
if (events.length >= this.config.maxEventsPerResponse) {
|
|
71
|
-
break;
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
return events;
|
|
75
|
-
}
|
|
76
|
-
/**
|
|
77
|
-
* Record events to the session journal.
|
|
78
|
-
*/
|
|
79
|
-
record(sessionId, events, model) {
|
|
80
|
-
if (!sessionId || !events.length) {
|
|
81
|
-
return;
|
|
82
|
-
}
|
|
83
|
-
const journal = this.journals.get(sessionId) || [];
|
|
84
|
-
const now = Date.now();
|
|
85
|
-
for (const action of events) {
|
|
86
|
-
journal.push({
|
|
87
|
-
timestamp: now,
|
|
88
|
-
action,
|
|
89
|
-
model,
|
|
90
|
-
});
|
|
91
|
-
}
|
|
92
|
-
// Trim old entries and enforce max count
|
|
93
|
-
const cutoff = now - this.config.maxAgeMs;
|
|
94
|
-
const trimmed = journal.filter((e) => e.timestamp > cutoff).slice(-this.config.maxEntries);
|
|
95
|
-
this.journals.set(sessionId, trimmed);
|
|
96
|
-
}
|
|
97
|
-
/**
|
|
98
|
-
* Check if the user message indicates a need for historical context.
|
|
99
|
-
*/
|
|
100
|
-
needsContext(lastUserMessage) {
|
|
101
|
-
if (!lastUserMessage || typeof lastUserMessage !== "string") {
|
|
102
|
-
return false;
|
|
103
|
-
}
|
|
104
|
-
const lower = lastUserMessage.toLowerCase();
|
|
105
|
-
// Trigger phrases that indicate user wants to recall past work
|
|
106
|
-
const triggers = [
|
|
107
|
-
// Direct questions about past work
|
|
108
|
-
"what did you do",
|
|
109
|
-
"what have you done",
|
|
110
|
-
"what did we do",
|
|
111
|
-
"what have we done",
|
|
112
|
-
// Temporal references
|
|
113
|
-
"earlier",
|
|
114
|
-
"before",
|
|
115
|
-
"previously",
|
|
116
|
-
"this session",
|
|
117
|
-
"today",
|
|
118
|
-
"so far",
|
|
119
|
-
// Summary requests
|
|
120
|
-
"remind me",
|
|
121
|
-
"summarize",
|
|
122
|
-
"summary of",
|
|
123
|
-
"recap",
|
|
124
|
-
// Progress inquiries
|
|
125
|
-
"your work",
|
|
126
|
-
"your progress",
|
|
127
|
-
"accomplished",
|
|
128
|
-
"achievements",
|
|
129
|
-
"completed tasks",
|
|
130
|
-
];
|
|
131
|
-
return triggers.some((t) => lower.includes(t));
|
|
132
|
-
}
|
|
133
|
-
/**
|
|
134
|
-
* Format the journal for injection into system message.
|
|
135
|
-
* Returns null if journal is empty.
|
|
136
|
-
*/
|
|
137
|
-
format(sessionId) {
|
|
138
|
-
const journal = this.journals.get(sessionId);
|
|
139
|
-
if (!journal?.length) {
|
|
140
|
-
return null;
|
|
141
|
-
}
|
|
142
|
-
const lines = journal.map((e) => {
|
|
143
|
-
const time = new Date(e.timestamp).toLocaleTimeString("en-US", {
|
|
144
|
-
hour: "2-digit",
|
|
145
|
-
minute: "2-digit",
|
|
146
|
-
hour12: true,
|
|
147
|
-
});
|
|
148
|
-
return `- ${time}: ${e.action}`;
|
|
149
|
-
});
|
|
150
|
-
return `[Session Memory - Key Actions]\n${lines.join("\n")}`;
|
|
151
|
-
}
|
|
152
|
-
/**
|
|
153
|
-
* Get the raw journal entries for a session (for debugging/testing).
|
|
154
|
-
*/
|
|
155
|
-
getEntries(sessionId) {
|
|
156
|
-
return this.journals.get(sessionId) || [];
|
|
157
|
-
}
|
|
158
|
-
/**
|
|
159
|
-
* Clear journal for a specific session.
|
|
160
|
-
*/
|
|
161
|
-
clear(sessionId) {
|
|
162
|
-
this.journals.delete(sessionId);
|
|
163
|
-
}
|
|
164
|
-
/**
|
|
165
|
-
* Clear all journals.
|
|
166
|
-
*/
|
|
167
|
-
clearAll() {
|
|
168
|
-
this.journals.clear();
|
|
169
|
-
}
|
|
170
|
-
/**
|
|
171
|
-
* Get stats about the journal.
|
|
172
|
-
*/
|
|
173
|
-
getStats() {
|
|
174
|
-
let totalEntries = 0;
|
|
175
|
-
for (const entries of this.journals.values()) {
|
|
176
|
-
totalEntries += entries.length;
|
|
177
|
-
}
|
|
178
|
-
return {
|
|
179
|
-
sessions: this.journals.size,
|
|
180
|
-
totalEntries,
|
|
181
|
-
};
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
//# sourceMappingURL=journal.js.map
|
package/dist/journal.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"journal.js","sourceRoot":"","sources":["../src/journal.ts"],"names":[],"mappings":"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"}
|
package/dist/journal.test.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"journal.test.d.ts","sourceRoot":"","sources":["../src/journal.test.ts"],"names":[],"mappings":""}
|
package/dist/journal.test.js
DELETED
|
@@ -1,201 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect, beforeEach } from "vitest";
|
|
2
|
-
import { SessionJournal } from "./journal.js";
|
|
3
|
-
describe("SessionJournal", () => {
|
|
4
|
-
let journal;
|
|
5
|
-
beforeEach(() => {
|
|
6
|
-
journal = new SessionJournal();
|
|
7
|
-
});
|
|
8
|
-
describe("extractEvents", () => {
|
|
9
|
-
it("should extract creation events", () => {
|
|
10
|
-
const content = `I created a new login component for the authentication system.`;
|
|
11
|
-
const events = journal.extractEvents(content);
|
|
12
|
-
expect(events).toHaveLength(1);
|
|
13
|
-
expect(events[0]).toContain("created");
|
|
14
|
-
expect(events[0]).toContain("login component");
|
|
15
|
-
});
|
|
16
|
-
it("should extract fix events", () => {
|
|
17
|
-
const content = `I fixed the authentication bug that was causing users to be logged out.`;
|
|
18
|
-
const events = journal.extractEvents(content);
|
|
19
|
-
expect(events).toHaveLength(1);
|
|
20
|
-
expect(events[0]).toContain("fixed");
|
|
21
|
-
});
|
|
22
|
-
it("should extract multiple events from one response", () => {
|
|
23
|
-
const content = `I created a new login component. Then I fixed the authentication bug that was causing issues. I also updated the user profile page.`;
|
|
24
|
-
const events = journal.extractEvents(content);
|
|
25
|
-
expect(events).toHaveLength(3);
|
|
26
|
-
expect(events.some((e) => e.includes("created"))).toBe(true);
|
|
27
|
-
expect(events.some((e) => e.includes("fixed"))).toBe(true);
|
|
28
|
-
expect(events.some((e) => e.includes("updated"))).toBe(true);
|
|
29
|
-
});
|
|
30
|
-
it("should extract success events", () => {
|
|
31
|
-
const content = `Successfully deployed the application to production.`;
|
|
32
|
-
const events = journal.extractEvents(content);
|
|
33
|
-
expect(events).toHaveLength(1);
|
|
34
|
-
expect(events[0]).toContain("Successfully deployed");
|
|
35
|
-
});
|
|
36
|
-
it("should limit to max 5 events per response by default", () => {
|
|
37
|
-
const content = `
|
|
38
|
-
I created component A.
|
|
39
|
-
I fixed bug B.
|
|
40
|
-
I implemented feature C.
|
|
41
|
-
I resolved issue D.
|
|
42
|
-
I added function E.
|
|
43
|
-
I wrote test F.
|
|
44
|
-
I built module G.
|
|
45
|
-
`;
|
|
46
|
-
const events = journal.extractEvents(content);
|
|
47
|
-
expect(events.length).toBeLessThanOrEqual(5);
|
|
48
|
-
});
|
|
49
|
-
it("should skip events that are too short", () => {
|
|
50
|
-
const content = `I fixed it.`; // Too short to be meaningful
|
|
51
|
-
const events = journal.extractEvents(content);
|
|
52
|
-
expect(events).toHaveLength(0);
|
|
53
|
-
});
|
|
54
|
-
it("should handle empty content", () => {
|
|
55
|
-
const events = journal.extractEvents("");
|
|
56
|
-
expect(events).toHaveLength(0);
|
|
57
|
-
});
|
|
58
|
-
it("should handle null/undefined content", () => {
|
|
59
|
-
const events = journal.extractEvents(null);
|
|
60
|
-
expect(events).toHaveLength(0);
|
|
61
|
-
});
|
|
62
|
-
it("should deduplicate similar events", () => {
|
|
63
|
-
const content = `I created a new login component. I also created a new login component for testing.`;
|
|
64
|
-
const events = journal.extractEvents(content);
|
|
65
|
-
// Should deduplicate based on normalized content
|
|
66
|
-
expect(events.length).toBeLessThanOrEqual(2);
|
|
67
|
-
});
|
|
68
|
-
});
|
|
69
|
-
describe("record", () => {
|
|
70
|
-
it("should record events to a session", () => {
|
|
71
|
-
journal.record("session1", ["Created login component", "Fixed auth bug"]);
|
|
72
|
-
const entries = journal.getEntries("session1");
|
|
73
|
-
expect(entries).toHaveLength(2);
|
|
74
|
-
});
|
|
75
|
-
it("should not record empty events", () => {
|
|
76
|
-
journal.record("session1", []);
|
|
77
|
-
const entries = journal.getEntries("session1");
|
|
78
|
-
expect(entries).toHaveLength(0);
|
|
79
|
-
});
|
|
80
|
-
it("should not record if sessionId is empty", () => {
|
|
81
|
-
journal.record("", ["Some event"]);
|
|
82
|
-
const entries = journal.getEntries("");
|
|
83
|
-
expect(entries).toHaveLength(0);
|
|
84
|
-
});
|
|
85
|
-
it("should store model with events", () => {
|
|
86
|
-
journal.record("session1", ["Created component"], "gpt-4");
|
|
87
|
-
const entries = journal.getEntries("session1");
|
|
88
|
-
expect(entries[0].model).toBe("gpt-4");
|
|
89
|
-
});
|
|
90
|
-
it("should append to existing session", () => {
|
|
91
|
-
journal.record("session1", ["Event 1"]);
|
|
92
|
-
journal.record("session1", ["Event 2"]);
|
|
93
|
-
const entries = journal.getEntries("session1");
|
|
94
|
-
expect(entries).toHaveLength(2);
|
|
95
|
-
});
|
|
96
|
-
it("should trim entries when exceeding maxEntries", () => {
|
|
97
|
-
const customJournal = new SessionJournal({ maxEntries: 3 });
|
|
98
|
-
customJournal.record("session1", ["Event 1"]);
|
|
99
|
-
customJournal.record("session1", ["Event 2"]);
|
|
100
|
-
customJournal.record("session1", ["Event 3"]);
|
|
101
|
-
customJournal.record("session1", ["Event 4"]);
|
|
102
|
-
const entries = customJournal.getEntries("session1");
|
|
103
|
-
expect(entries).toHaveLength(3);
|
|
104
|
-
// Should keep the most recent
|
|
105
|
-
expect(entries[2].action).toBe("Event 4");
|
|
106
|
-
});
|
|
107
|
-
});
|
|
108
|
-
describe("needsContext", () => {
|
|
109
|
-
it("should detect 'what did you do' questions", () => {
|
|
110
|
-
expect(journal.needsContext("what did you do today?")).toBe(true);
|
|
111
|
-
expect(journal.needsContext("What did you do earlier?")).toBe(true);
|
|
112
|
-
});
|
|
113
|
-
it("should detect 'what have you done' questions", () => {
|
|
114
|
-
expect(journal.needsContext("what have you done so far?")).toBe(true);
|
|
115
|
-
});
|
|
116
|
-
it("should detect temporal references", () => {
|
|
117
|
-
expect(journal.needsContext("show me what we did earlier")).toBe(true);
|
|
118
|
-
expect(journal.needsContext("what happened before this?")).toBe(true);
|
|
119
|
-
expect(journal.needsContext("what did we do previously?")).toBe(true);
|
|
120
|
-
});
|
|
121
|
-
it("should detect summary requests", () => {
|
|
122
|
-
expect(journal.needsContext("can you summarize your work?")).toBe(true);
|
|
123
|
-
expect(journal.needsContext("remind me what we accomplished")).toBe(true);
|
|
124
|
-
expect(journal.needsContext("give me a recap")).toBe(true);
|
|
125
|
-
});
|
|
126
|
-
it("should detect progress inquiries", () => {
|
|
127
|
-
expect(journal.needsContext("what's your progress?")).toBe(true);
|
|
128
|
-
expect(journal.needsContext("what have you accomplished?")).toBe(true);
|
|
129
|
-
});
|
|
130
|
-
it("should return false for normal requests", () => {
|
|
131
|
-
expect(journal.needsContext("please fix this bug")).toBe(false);
|
|
132
|
-
expect(journal.needsContext("create a new component")).toBe(false);
|
|
133
|
-
expect(journal.needsContext("what is JavaScript?")).toBe(false);
|
|
134
|
-
});
|
|
135
|
-
it("should handle empty input", () => {
|
|
136
|
-
expect(journal.needsContext("")).toBe(false);
|
|
137
|
-
expect(journal.needsContext(null)).toBe(false);
|
|
138
|
-
});
|
|
139
|
-
});
|
|
140
|
-
describe("format", () => {
|
|
141
|
-
it("should return null for empty journal", () => {
|
|
142
|
-
expect(journal.format("nonexistent")).toBeNull();
|
|
143
|
-
});
|
|
144
|
-
it("should format journal entries with timestamps", () => {
|
|
145
|
-
journal.record("session1", ["Created login component", "Fixed auth bug"]);
|
|
146
|
-
const formatted = journal.format("session1");
|
|
147
|
-
expect(formatted).not.toBeNull();
|
|
148
|
-
expect(formatted).toContain("[Session Memory");
|
|
149
|
-
expect(formatted).toContain("Created login component");
|
|
150
|
-
expect(formatted).toContain("Fixed auth bug");
|
|
151
|
-
// Should contain time format like "10:30 AM"
|
|
152
|
-
expect(formatted).toMatch(/\d{2}:\d{2}\s*(AM|PM)/i);
|
|
153
|
-
});
|
|
154
|
-
it("should format as bullet list", () => {
|
|
155
|
-
journal.record("session1", ["Event 1"]);
|
|
156
|
-
const formatted = journal.format("session1");
|
|
157
|
-
expect(formatted).toContain("- ");
|
|
158
|
-
});
|
|
159
|
-
});
|
|
160
|
-
describe("clear", () => {
|
|
161
|
-
it("should clear specific session", () => {
|
|
162
|
-
journal.record("session1", ["Event 1"]);
|
|
163
|
-
journal.record("session2", ["Event 2"]);
|
|
164
|
-
journal.clear("session1");
|
|
165
|
-
expect(journal.getEntries("session1")).toHaveLength(0);
|
|
166
|
-
expect(journal.getEntries("session2")).toHaveLength(1);
|
|
167
|
-
});
|
|
168
|
-
});
|
|
169
|
-
describe("clearAll", () => {
|
|
170
|
-
it("should clear all sessions", () => {
|
|
171
|
-
journal.record("session1", ["Event 1"]);
|
|
172
|
-
journal.record("session2", ["Event 2"]);
|
|
173
|
-
journal.clearAll();
|
|
174
|
-
expect(journal.getEntries("session1")).toHaveLength(0);
|
|
175
|
-
expect(journal.getEntries("session2")).toHaveLength(0);
|
|
176
|
-
});
|
|
177
|
-
});
|
|
178
|
-
describe("getStats", () => {
|
|
179
|
-
it("should return correct stats", () => {
|
|
180
|
-
journal.record("session1", ["Event 1", "Event 2"]);
|
|
181
|
-
journal.record("session2", ["Event 3"]);
|
|
182
|
-
const stats = journal.getStats();
|
|
183
|
-
expect(stats.sessions).toBe(2);
|
|
184
|
-
expect(stats.totalEntries).toBe(3);
|
|
185
|
-
});
|
|
186
|
-
it("should return zero stats for empty journal", () => {
|
|
187
|
-
const stats = journal.getStats();
|
|
188
|
-
expect(stats.sessions).toBe(0);
|
|
189
|
-
expect(stats.totalEntries).toBe(0);
|
|
190
|
-
});
|
|
191
|
-
});
|
|
192
|
-
describe("config options", () => {
|
|
193
|
-
it("should respect custom maxEventsPerResponse", () => {
|
|
194
|
-
const customJournal = new SessionJournal({ maxEventsPerResponse: 2 });
|
|
195
|
-
const content = `I created A. I fixed B. I implemented C. I built D.`;
|
|
196
|
-
const events = customJournal.extractEvents(content);
|
|
197
|
-
expect(events.length).toBeLessThanOrEqual(2);
|
|
198
|
-
});
|
|
199
|
-
});
|
|
200
|
-
});
|
|
201
|
-
//# sourceMappingURL=journal.test.js.map
|
package/dist/journal.test.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"journal.test.js","sourceRoot":"","sources":["../src/journal.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,IAAI,OAAuB,CAAC;IAE5B,UAAU,CAAC,GAAG,EAAE;QACd,OAAO,GAAG,IAAI,cAAc,EAAE,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC7B,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;YACxC,MAAM,OAAO,GAAG,gEAAgE,CAAC;YACjF,MAAM,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YAC9C,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YACvC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;YACnC,MAAM,OAAO,GAAG,yEAAyE,CAAC;YAC1F,MAAM,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YAC9C,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;YAC1D,MAAM,OAAO,GAAG,qIAAqI,CAAC;YACtJ,MAAM,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YAC9C,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7D,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC3D,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;YACvC,MAAM,OAAO,GAAG,sDAAsD,CAAC;YACvE,MAAM,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YAC9C,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;YAC9D,MAAM,OAAO,GAAG;;;;;;;;OAQf,CAAC;YACF,MAAM,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YAC9C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;YAC/C,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,6BAA6B;YAC5D,MAAM,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YAC9C,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;YACrC,MAAM,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;YACzC,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;YAC9C,MAAM,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,IAAyB,CAAC,CAAC;YAChE,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;YAC3C,MAAM,OAAO,GAAG,oFAAoF,CAAC;YACrG,MAAM,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YAC9C,iDAAiD;YACjD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;QACtB,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;YAC3C,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,yBAAyB,EAAE,gBAAgB,CAAC,CAAC,CAAC;YAC1E,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YAC/C,MAAM,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;YACxC,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;YAC/B,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YAC/C,MAAM,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;YACjD,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;YACnC,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YACvC,MAAM,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;YACxC,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAC,CAAC;YAC3D,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YAC/C,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;YAC3C,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;YACxC,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;YACxC,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YAC/C,MAAM,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;YACvD,MAAM,aAAa,GAAG,IAAI,cAAc,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC;YAC5D,aAAa,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;YAC9C,aAAa,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;YAC9C,aAAa,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;YAC9C,aAAa,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;YAC9C,MAAM,OAAO,GAAG,aAAa,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YACrD,MAAM,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAChC,8BAA8B;YAC9B,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;QAC5B,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;YACnD,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,wBAAwB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClE,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,0BAA0B,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;YACtD,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,4BAA4B,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;YAC3C,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,6BAA6B,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvE,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,4BAA4B,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtE,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,4BAA4B,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;YACxC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,8BAA8B,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxE,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,gCAAgC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1E,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;YAC1C,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,uBAAuB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjE,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,6BAA6B,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;YACjD,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,qBAAqB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAChE,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,wBAAwB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnE,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,qBAAqB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;YACnC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC7C,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,IAAyB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;QACtB,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;YAC9C,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QACnD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;YACvD,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,yBAAyB,EAAE,gBAAgB,CAAC,CAAC,CAAC;YAC1E,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAE7C,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YACjC,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;YAC/C,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC;YACvD,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;YAC9C,6CAA6C;YAC7C,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;YACtC,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;YACxC,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAC7C,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;QACrB,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;YACvC,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;YACxC,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;YACxC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YAE1B,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACvD,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACzD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;QACxB,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;YACnC,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;YACxC,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;YACxC,OAAO,CAAC,QAAQ,EAAE,CAAC;YAEnB,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACvD,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACzD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;QACxB,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;YACrC,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;YACnD,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;YAExC,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;YACjC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;YACpD,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;YACjC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC9B,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;YACpD,MAAM,aAAa,GAAG,IAAI,cAAc,CAAC,EAAE,oBAAoB,EAAE,CAAC,EAAE,CAAC,CAAC;YACtE,MAAM,OAAO,GAAG,qDAAqD,CAAC;YACtE,MAAM,MAAM,GAAG,aAAa,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YACpD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/dist/logger.d.ts
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Usage Logger
|
|
3
|
-
*
|
|
4
|
-
* Logs every LLM request as a JSON line to a daily log file.
|
|
5
|
-
* Files: ~/.openclaw/blockrun/logs/usage-YYYY-MM-DD.jsonl
|
|
6
|
-
*
|
|
7
|
-
* MVP: append-only JSON lines. No rotation, no cleanup.
|
|
8
|
-
* Logging never breaks the request flow — all errors are swallowed.
|
|
9
|
-
*/
|
|
10
|
-
export type UsageEntry = {
|
|
11
|
-
timestamp: string;
|
|
12
|
-
model: string;
|
|
13
|
-
tier: string;
|
|
14
|
-
cost: number;
|
|
15
|
-
baselineCost: number;
|
|
16
|
-
savings: number;
|
|
17
|
-
latencyMs: number;
|
|
18
|
-
/** Whether the request completed successfully or ended in an error */
|
|
19
|
-
status?: "success" | "error";
|
|
20
|
-
/** Input (prompt) tokens reported by the provider */
|
|
21
|
-
inputTokens?: number;
|
|
22
|
-
/** Output (completion) tokens reported by the provider */
|
|
23
|
-
outputTokens?: number;
|
|
24
|
-
/** Partner service ID (e.g., "x_users_lookup") — only set for partner API calls */
|
|
25
|
-
partnerId?: string;
|
|
26
|
-
/** Partner service name (e.g., "AttentionVC") — only set for partner API calls */
|
|
27
|
-
service?: string;
|
|
28
|
-
};
|
|
29
|
-
/**
|
|
30
|
-
* Log a usage entry as a JSON line.
|
|
31
|
-
*/
|
|
32
|
-
export declare function logUsage(entry: UsageEntry): Promise<void>;
|
|
33
|
-
//# sourceMappingURL=logger.d.ts.map
|
package/dist/logger.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,MAAM,MAAM,UAAU,GAAG;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,sEAAsE;IACtE,MAAM,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC;IAC7B,qDAAqD;IACrD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0DAA0D;IAC1D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mFAAmF;IACnF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kFAAkF;IAClF,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAWF;;GAEG;AACH,wBAAsB,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAS/D"}
|
package/dist/logger.js
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Usage Logger
|
|
3
|
-
*
|
|
4
|
-
* Logs every LLM request as a JSON line to a daily log file.
|
|
5
|
-
* Files: ~/.openclaw/blockrun/logs/usage-YYYY-MM-DD.jsonl
|
|
6
|
-
*
|
|
7
|
-
* MVP: append-only JSON lines. No rotation, no cleanup.
|
|
8
|
-
* Logging never breaks the request flow — all errors are swallowed.
|
|
9
|
-
*/
|
|
10
|
-
import { appendFile, mkdir } from "node:fs/promises";
|
|
11
|
-
import { join } from "node:path";
|
|
12
|
-
import { homedir } from "node:os";
|
|
13
|
-
const LOG_DIR = join(homedir(), ".openclaw", "blockrun", "logs");
|
|
14
|
-
let dirReady = false;
|
|
15
|
-
async function ensureDir() {
|
|
16
|
-
if (dirReady)
|
|
17
|
-
return;
|
|
18
|
-
await mkdir(LOG_DIR, { recursive: true });
|
|
19
|
-
dirReady = true;
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Log a usage entry as a JSON line.
|
|
23
|
-
*/
|
|
24
|
-
export async function logUsage(entry) {
|
|
25
|
-
try {
|
|
26
|
-
await ensureDir();
|
|
27
|
-
const date = entry.timestamp.slice(0, 10); // YYYY-MM-DD
|
|
28
|
-
const file = join(LOG_DIR, `usage-${date}.jsonl`);
|
|
29
|
-
await appendFile(file, JSON.stringify(entry) + "\n");
|
|
30
|
-
}
|
|
31
|
-
catch {
|
|
32
|
-
// Never break the request flow
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
//# sourceMappingURL=logger.js.map
|
package/dist/logger.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAsBlC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;AACjE,IAAI,QAAQ,GAAG,KAAK,CAAC;AAErB,KAAK,UAAU,SAAS;IACtB,IAAI,QAAQ;QAAE,OAAO;IACrB,MAAM,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1C,QAAQ,GAAG,IAAI,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,KAAiB;IAC9C,IAAI,CAAC;QACH,MAAM,SAAS,EAAE,CAAC;QAClB,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa;QACxD,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,SAAS,IAAI,QAAQ,CAAC,CAAC;QAClD,MAAM,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;IACvD,CAAC;IAAC,MAAM,CAAC;QACP,+BAA+B;IACjC,CAAC;AACH,CAAC"}
|
package/dist/models.d.ts
DELETED
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* BlockRun Model Definitions for OpenClaw
|
|
3
|
-
*
|
|
4
|
-
* Maps BlockRun's 55+ AI models to OpenClaw's ModelDefinitionConfig format.
|
|
5
|
-
* All models use the "openai-completions" API since BlockRun is OpenAI-compatible.
|
|
6
|
-
*
|
|
7
|
-
* Pricing is in USD per 1M tokens. Operators pay these rates via x402;
|
|
8
|
-
* they set their own markup when reselling to end users (Phase 2).
|
|
9
|
-
*/
|
|
10
|
-
import type { ModelDefinitionConfig, ModelProviderConfig } from "./types.js";
|
|
11
|
-
/**
|
|
12
|
-
* Model aliases for convenient shorthand access.
|
|
13
|
-
* Users can type `/model claude` instead of `/model blockrun/anthropic/claude-sonnet-4-6`.
|
|
14
|
-
*/
|
|
15
|
-
export declare const MODEL_ALIASES: Record<string, string>;
|
|
16
|
-
/**
|
|
17
|
-
* Resolve a model alias to its full model ID.
|
|
18
|
-
* Also strips "blockrun/" prefix for direct model paths.
|
|
19
|
-
* Examples:
|
|
20
|
-
* - "claude" -> "anthropic/claude-sonnet-4-6" (alias)
|
|
21
|
-
* - "blockrun/claude" -> "anthropic/claude-sonnet-4-6" (alias with prefix)
|
|
22
|
-
* - "blockrun/anthropic/claude-sonnet-4-6" -> "anthropic/claude-sonnet-4-6" (prefix stripped)
|
|
23
|
-
* - "openai/gpt-4o" -> "openai/gpt-4o" (unchanged)
|
|
24
|
-
*/
|
|
25
|
-
export declare function resolveModelAlias(model: string): string;
|
|
26
|
-
type BlockRunModel = {
|
|
27
|
-
id: string;
|
|
28
|
-
name: string;
|
|
29
|
-
/** Model version (e.g., "4.6", "3.1", "5.2") for tracking updates */
|
|
30
|
-
version?: string;
|
|
31
|
-
inputPrice: number;
|
|
32
|
-
outputPrice: number;
|
|
33
|
-
contextWindow: number;
|
|
34
|
-
maxOutput: number;
|
|
35
|
-
reasoning?: boolean;
|
|
36
|
-
vision?: boolean;
|
|
37
|
-
/** Models optimized for agentic workflows (multi-step autonomous tasks) */
|
|
38
|
-
agentic?: boolean;
|
|
39
|
-
/**
|
|
40
|
-
* Model supports OpenAI-compatible structured function/tool calling.
|
|
41
|
-
* Models without this flag output tool invocations as plain text JSON,
|
|
42
|
-
* which leaks raw {"command":"..."} into visible chat messages.
|
|
43
|
-
* Default: false (must opt-in to prevent silent regressions on new models).
|
|
44
|
-
*/
|
|
45
|
-
toolCalling?: boolean;
|
|
46
|
-
/** Model is deprecated — will be routed to fallbackModel if set */
|
|
47
|
-
deprecated?: boolean;
|
|
48
|
-
/** Model ID to route to when this model is deprecated */
|
|
49
|
-
fallbackModel?: string;
|
|
50
|
-
/** Time-limited promotional pricing — auto-expires after endDate */
|
|
51
|
-
promo?: {
|
|
52
|
-
/** Flat price per request in USD (replaces token-based pricing) */
|
|
53
|
-
flatPrice: number;
|
|
54
|
-
/** ISO date, promo starts (inclusive). e.g. "2026-04-01" */
|
|
55
|
-
startDate: string;
|
|
56
|
-
/** ISO date, promo ends (exclusive). e.g. "2026-04-15" */
|
|
57
|
-
endDate: string;
|
|
58
|
-
};
|
|
59
|
-
};
|
|
60
|
-
export declare const BLOCKRUN_MODELS: BlockRunModel[];
|
|
61
|
-
/**
|
|
62
|
-
* Get the active flat promo price for a model, or undefined if no promo / expired.
|
|
63
|
-
*/
|
|
64
|
-
export declare function getActivePromoPrice(model: BlockRunModel, now?: Date): number | undefined;
|
|
65
|
-
/**
|
|
66
|
-
* All BlockRun models in OpenClaw format (including aliases).
|
|
67
|
-
*/
|
|
68
|
-
export declare const OPENCLAW_MODELS: ModelDefinitionConfig[];
|
|
69
|
-
/**
|
|
70
|
-
* Build a ModelProviderConfig for BlockRun.
|
|
71
|
-
*
|
|
72
|
-
* @param baseUrl - The proxy's local base URL (e.g., "http://127.0.0.1:12345")
|
|
73
|
-
*/
|
|
74
|
-
export declare function buildProviderModels(baseUrl: string): ModelProviderConfig;
|
|
75
|
-
/**
|
|
76
|
-
* Check if a model is optimized for agentic workflows.
|
|
77
|
-
* Agentic models continue autonomously with multi-step tasks
|
|
78
|
-
* instead of stopping and waiting for user input.
|
|
79
|
-
*/
|
|
80
|
-
export declare function isAgenticModel(modelId: string): boolean;
|
|
81
|
-
/**
|
|
82
|
-
* Get all agentic-capable models.
|
|
83
|
-
*/
|
|
84
|
-
export declare function getAgenticModels(): string[];
|
|
85
|
-
/**
|
|
86
|
-
* Check if a model supports OpenAI-compatible structured tool/function calling.
|
|
87
|
-
* Models without this flag (e.g. grok-code-fast-1) output tool invocations as
|
|
88
|
-
* plain text JSON, which leaks {"command":"..."} into visible chat messages.
|
|
89
|
-
*/
|
|
90
|
-
export declare function supportsToolCalling(modelId: string): boolean;
|
|
91
|
-
/**
|
|
92
|
-
* Check if a model supports vision (image inputs).
|
|
93
|
-
* Models without this flag cannot process image_url content parts.
|
|
94
|
-
*/
|
|
95
|
-
export declare function supportsVision(modelId: string): boolean;
|
|
96
|
-
/**
|
|
97
|
-
* Get context window size for a model.
|
|
98
|
-
* Returns undefined if model not found.
|
|
99
|
-
*/
|
|
100
|
-
export declare function getModelContextWindow(modelId: string): number | undefined;
|
|
101
|
-
/**
|
|
102
|
-
* Check if a model has reasoning/thinking capabilities.
|
|
103
|
-
* Reasoning models may require reasoning_content in assistant tool_call messages.
|
|
104
|
-
*/
|
|
105
|
-
export declare function isReasoningModel(modelId: string): boolean;
|
|
106
|
-
export {};
|
|
107
|
-
//# sourceMappingURL=models.d.ts.map
|
package/dist/models.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAE7E;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAmHhD,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CA8BvD;AAED,KAAK,aAAa,GAAG;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,qEAAqE;IACrE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,2EAA2E;IAC3E,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,mEAAmE;IACnE,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,yDAAyD;IACzD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oEAAoE;IACpE,KAAK,CAAC,EAAE;QACN,mEAAmE;QACnE,SAAS,EAAE,MAAM,CAAC;QAClB,4DAA4D;QAC5D,SAAS,EAAE,MAAM,CAAC;QAClB,0DAA0D;QAC1D,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,aAAa,EAyqB1C,CAAC;AAEF;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,aAAa,EACpB,GAAG,GAAE,IAAiB,GACrB,MAAM,GAAG,SAAS,CAMpB;AAmCD;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,qBAAqB,EAGlD,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,mBAAmB,CAMxE;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAKvD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,EAAE,CAE3C;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAI5D;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAIvD;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAIzE;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAIzD"}
|