@jellyos/agent 0.1.2 → 0.1.4

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 (66) hide show
  1. package/README.md +9 -9
  2. package/dist/api/Registry.js +3 -1
  3. package/dist/api/Registry.js.map +1 -1
  4. package/dist/cli.js +11 -24
  5. package/dist/cli.js.map +1 -1
  6. package/dist/index.d.ts +10 -0
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +7 -0
  9. package/dist/index.js.map +1 -1
  10. package/dist/loader.d.ts.map +1 -1
  11. package/dist/loader.js +1 -25
  12. package/dist/loader.js.map +1 -1
  13. package/dist/models/CostTracker.d.ts +66 -0
  14. package/dist/models/CostTracker.d.ts.map +1 -0
  15. package/dist/models/CostTracker.js +148 -0
  16. package/dist/models/CostTracker.js.map +1 -0
  17. package/dist/models/ModelRegistry.d.ts +146 -0
  18. package/dist/models/ModelRegistry.d.ts.map +1 -0
  19. package/dist/models/ModelRegistry.js +400 -0
  20. package/dist/models/ModelRegistry.js.map +1 -0
  21. package/dist/models/index.d.ts +5 -0
  22. package/dist/models/index.d.ts.map +1 -0
  23. package/dist/models/index.js +3 -0
  24. package/dist/models/index.js.map +1 -0
  25. package/dist/runner/AgentRunner.d.ts +5 -1
  26. package/dist/runner/AgentRunner.d.ts.map +1 -1
  27. package/dist/runner/AgentRunner.js +18 -8
  28. package/dist/runner/AgentRunner.js.map +1 -1
  29. package/dist/runner/ModelClient.d.ts +16 -5
  30. package/dist/runner/ModelClient.d.ts.map +1 -1
  31. package/dist/runner/ModelClient.js +69 -23
  32. package/dist/runner/ModelClient.js.map +1 -1
  33. package/dist/runner/SwarmRouter.d.ts +4 -1
  34. package/dist/runner/SwarmRouter.d.ts.map +1 -1
  35. package/dist/runner/SwarmRouter.js +15 -7
  36. package/dist/runner/SwarmRouter.js.map +1 -1
  37. package/dist/session/SessionManager.d.ts +2 -2
  38. package/dist/session/SessionManager.js +3 -3
  39. package/dist/session/SessionManager.js.map +1 -1
  40. package/dist/tools/NewsSentiment.d.ts +67 -0
  41. package/dist/tools/NewsSentiment.d.ts.map +1 -0
  42. package/dist/tools/NewsSentiment.js +199 -0
  43. package/dist/tools/NewsSentiment.js.map +1 -0
  44. package/dist/tools/PriceFeed.d.ts +103 -0
  45. package/dist/tools/PriceFeed.d.ts.map +1 -0
  46. package/dist/tools/PriceFeed.js +230 -0
  47. package/dist/tools/PriceFeed.js.map +1 -0
  48. package/dist/tools/TechnicalAnalysis.d.ts +73 -0
  49. package/dist/tools/TechnicalAnalysis.d.ts.map +1 -0
  50. package/dist/tools/TechnicalAnalysis.js +272 -0
  51. package/dist/tools/TechnicalAnalysis.js.map +1 -0
  52. package/dist/tools/index.d.ts +7 -0
  53. package/dist/tools/index.d.ts.map +1 -0
  54. package/dist/tools/index.js +4 -0
  55. package/dist/tools/index.js.map +1 -0
  56. package/dist/tui/App.d.ts +7 -5
  57. package/dist/tui/App.d.ts.map +1 -1
  58. package/dist/tui/App.js +178 -61
  59. package/dist/tui/App.js.map +1 -1
  60. package/dist/tui/StatusBar.js +1 -1
  61. package/dist/tui/StatusBar.js.map +1 -1
  62. package/package.json +2 -2
  63. package/dist/util/safeLog.d.ts +0 -39
  64. package/dist/util/safeLog.d.ts.map +0 -1
  65. package/dist/util/safeLog.js +0 -59
  66. package/dist/util/safeLog.js.map +0 -1
package/dist/tui/App.js CHANGED
@@ -1,8 +1,8 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  /**
3
3
  * App — root Ink component.
4
- * Wires StatusBar + REPL + AgentRunner. Passes live setStatus/notify callbacks
5
- * to the extension API so Pi compat calls (ui.setStatus, ui.notify) update the TUI.
4
+ * Wires StatusBar + REPL + AgentRunner, registers built-in tools,
5
+ * starts background feeds, and renders a multi-pane trading terminal.
6
6
  */
7
7
  import { useState, useCallback, useEffect, useRef } from "react";
8
8
  import { Box, useApp, useInput } from "ink";
@@ -12,9 +12,14 @@ import { makeTheme, T } from "./theme.js";
12
12
  import { AgentRunner } from "../runner/AgentRunner.js";
13
13
  import { SessionManager } from "../session/SessionManager.js";
14
14
  import { resolveModelConfig } from "../runner/ModelClient.js";
15
+ import { priceFeed, getPricesTool, topMoversTool, marketOverviewTool, getPricesParams, topMoversParams, marketOverviewParams } from "../tools/PriceFeed.js";
16
+ import { getNewsTool, getNewsParams } from "../tools/NewsSentiment.js";
17
+ import { analyzeTAParams } from "../tools/TechnicalAnalysis.js";
18
+ import { fullAnalysis } from "../tools/TechnicalAnalysis.js";
19
+ import { newsFeed } from "../tools/NewsSentiment.js";
15
20
  let _msgIdCounter = 0;
16
21
  function nextId() { return String(++_msgIdCounter); }
17
- export function App({ registry, systemPrompt, effectLevel: initialEffect = "normal", chain: initialChain = "ethereum", onNotifyReady, onStatusReady, }) {
22
+ export function App({ registry, systemPrompt, effectLevel: initialEffect = "normal", chain: initialChain = "ethereum", modelReg, costTracker, onNotifyReady, onStatusReady, }) {
18
23
  const { exit } = useApp();
19
24
  const [messages, setMessages] = useState([]);
20
25
  const [streaming, setStreaming] = useState("");
@@ -24,13 +29,16 @@ export function App({ registry, systemPrompt, effectLevel: initialEffect = "norm
24
29
  const [effectLevel, setEffectLevel] = useState(initialEffect);
25
30
  const [chain, setChain] = useState(initialChain);
26
31
  const [statusBadges, setStatusBadges] = useState({});
32
+ const [ticker, setTicker] = useState("");
33
+ const [costBadge, setCostBadge] = useState("");
34
+ const [newsBadge, setNewsBadge] = useState("");
27
35
  const runnerRef = useRef(null);
28
36
  const sessionRef = useRef(null);
29
37
  const sessionCtxRef = useRef(null);
30
38
  const theme = makeTheme();
31
39
  let modelName = "no-model";
32
40
  try {
33
- modelName = resolveModelConfig().model;
41
+ modelName = resolveModelConfig(modelReg).model;
34
42
  }
35
43
  catch { /* shown via banner */ }
36
44
  // ── Push helpers ─────────────────────────────────────────────────────────
@@ -42,77 +50,145 @@ export function App({ registry, systemPrompt, effectLevel: initialEffect = "norm
42
50
  }, [push]);
43
51
  const setStatus = useCallback((key, value) => {
44
52
  setStatusBadges(prev => ({ ...prev, [key]: value }));
45
- // Mirror vault lock state when extension calls setStatus("vault", ...)
46
- if (key === "vault") {
53
+ if (key === "vault")
47
54
  setVaultLocked(!value.includes("🔓") && !value.includes("unlocked"));
48
- }
49
55
  if (key === "chain" || key === "active_chain")
50
56
  setChain(value);
51
57
  if (key === "effect_level")
52
58
  setEffectLevel(value);
53
59
  }, []);
54
- // ── Build UIContext that extension commands can call ──────────────────────
55
- const uiCtx = {
56
- notify,
57
- setStatus,
58
- setTheme(_name) { },
59
- setHeader(_factory) { },
60
- theme,
61
- };
62
- // ── Wire live callbacks BEFORE session_start fires ────────────────────────
63
- // IMPORTANT: All output during the Ink lifecycle MUST go through `push`
64
- // or `notify` never through raw console.log / process.stdout.write.
65
- // Raw stdout writes bypass Ink's rendering buffer and corrupt its internal
66
- // cursor-up count, causing stacked ┌──────────────────────────────────┐
67
- // borders. cli.ts patches console after render() to enforce this.
68
- useEffect(() => {
69
- onNotifyReady?.(notify);
70
- onStatusReady?.(setStatus);
71
- }, [notify, setStatus, onNotifyReady, onStatusReady]);
72
- // ── Boot: fire session_start ──────────────────────────────────────────────
60
+ const uiCtx = { notify, setStatus, setTheme(_name) { }, setHeader(_factory) { }, theme };
61
+ // ── Register built-in tools ──────────────────────────────────────────────
62
+ function registerBuiltinTools() {
63
+ if (!modelReg)
64
+ return;
65
+ // Model tools
66
+ registry.addTool({
67
+ name: "list_models", label: "List Models",
68
+ description: "Search and filter available AI models by name, provider, or tier. Use this to find the best model for a task.",
69
+ parameters: modelReg.listModelsParams,
70
+ execute: (id, p) => modelReg.listModelsTool(id, p),
71
+ });
72
+ registry.addTool({
73
+ name: "pick_model", label: "Pick Model",
74
+ description: "Find the cheapest available model meeting requirements (tier, context length, max cost).",
75
+ parameters: modelReg.pickModelParams,
76
+ execute: (id, p) => modelReg.pickModelTool(id, p),
77
+ });
78
+ registry.addTool({
79
+ name: "model_summary", label: "Model Summary",
80
+ description: "Get a summary of available model tiers and counts.",
81
+ parameters: modelReg.summaryParams,
82
+ execute: (_id) => modelReg.summaryTool(),
83
+ });
84
+ // Cost tools
85
+ if (costTracker) {
86
+ registry.addTool({
87
+ name: "cost_report", label: "Cost Report",
88
+ description: "Show current session and lifetime token usage and estimated cost.",
89
+ parameters: costTracker.costReportParams,
90
+ execute: (_id) => costTracker.costReportTool(),
91
+ });
92
+ }
93
+ // Price tools
94
+ registry.addTool({
95
+ name: "get_prices", label: "Get Prices",
96
+ description: "Get current prices and 24h change for symbols (btc, eth, sol, etc).",
97
+ parameters: getPricesParams,
98
+ execute: (id, p) => getPricesTool(id, p),
99
+ });
100
+ registry.addTool({
101
+ name: "get_top_movers", label: "Top Movers",
102
+ description: "Get assets with the largest 24h price movement.",
103
+ parameters: topMoversParams,
104
+ execute: (id, p) => topMoversTool(id, p),
105
+ });
106
+ registry.addTool({
107
+ name: "get_market_overview", label: "Market Overview",
108
+ description: "Get aggregated market data: total cap, average change, gainers/losers.",
109
+ parameters: marketOverviewParams,
110
+ execute: (_id) => marketOverviewTool(),
111
+ });
112
+ // News tools
113
+ registry.addTool({
114
+ name: "get_news", label: "Get News",
115
+ description: "Get latest crypto news headlines with sentiment scoring. Use to gauge market sentiment.",
116
+ parameters: getNewsParams,
117
+ execute: (id, p) => getNewsTool(id, p),
118
+ });
119
+ // Technical Analysis tools
120
+ registry.addTool({
121
+ name: "analyze_ta", label: "Technical Analysis",
122
+ description: "Run full technical analysis on price data: RSI, MACD, Bollinger Bands, EMA crossover, ATR, volume profile. Returns a summary with buy/sell signals.",
123
+ parameters: analyzeTAParams,
124
+ execute: async (_id, p) => {
125
+ const closes = p.prices;
126
+ const highs = p.highs ?? [];
127
+ const lows = p.lows ?? [];
128
+ const volumes = p.volumes ?? [];
129
+ const candles = closes.map((c, i) => ({
130
+ timestamp: 0, open: c, high: highs[i] ?? c, low: lows[i] ?? c, close: c, volume: volumes[i] ?? 0,
131
+ }));
132
+ const results = fullAnalysis(candles);
133
+ const text = results.map(r => {
134
+ const s = r.signal === "bullish" ? "🟢" : r.signal === "bearish" ? "🔴" : "⚪";
135
+ const v = Array.isArray(r.value) ? `[${r.value.length} values]` : typeof r.value === "number" ? r.value : "-";
136
+ return `${s} ${r.indicator}: ${v}`;
137
+ }).join("\n");
138
+ const summary = results.find(r => r.indicator === "SUMMARY");
139
+ return {
140
+ content: [{ type: "text", text: `Technical Analysis Results:\n${text}` }],
141
+ details: { results, overall_signal: summary?.signal, overall_score: summary?.value },
142
+ };
143
+ },
144
+ });
145
+ }
146
+ useEffect(() => { onNotifyReady?.(notify); onStatusReady?.(setStatus); }, []);
147
+ // ── Boot: start feeds, register tools, fire session_start ────────────────
73
148
  useEffect(() => {
149
+ registerBuiltinTools();
150
+ // Start background feeds
151
+ priceFeed.track("btc", "eth", "sol", "bnb", "matic", "arb", "op", "avax", "link", "uni", "doge", "xrp", "ada", "dot", "atom", "near", "sui", "apt", "pepe", "aave");
152
+ priceFeed.start();
153
+ newsFeed.start();
154
+ // Ticker update every 5 seconds from cached prices
155
+ const tickerInterval = setInterval(() => {
156
+ setTicker(priceFeed.tickerLine(5));
157
+ if (costTracker)
158
+ setCostBadge(costTracker.statusLine());
159
+ setNewsBadge(newsFeed.statusBadge());
160
+ }, 5_000);
161
+ // Save cost on exit
162
+ const saveInterval = setInterval(() => {
163
+ costTracker?.saveLifetime();
164
+ }, 60_000);
165
+ // Agent session
74
166
  const session = new SessionManager();
75
167
  session.setSystemPrompt(registry.getSystemPrompt() || systemPrompt ||
76
168
  "You are JellyOS, an autonomous AI trading agent.");
77
169
  sessionRef.current = session;
78
170
  const sessionCtx = {
79
- ui: uiCtx,
80
- hasUI: true,
81
- config: {
82
- OPENROUTER_API_KEY: process.env.OPENROUTER_API_KEY,
83
- ANTHROPIC_API_KEY: process.env.ANTHROPIC_API_KEY,
84
- ALCHEMY_KEY: process.env.ALCHEMY_KEY,
85
- DEFAULT_MODEL: process.env.DEFAULT_MODEL,
86
- },
171
+ ui: uiCtx, hasUI: true,
172
+ config: { OPENROUTER_API_KEY: process.env.OPENROUTER_API_KEY, ANTHROPIC_API_KEY: process.env.ANTHROPIC_API_KEY, ALCHEMY_KEY: process.env.ALCHEMY_KEY, DEFAULT_MODEL: process.env.DEFAULT_MODEL },
87
173
  };
88
174
  sessionCtxRef.current = sessionCtx;
89
175
  registry.fireHook("session_start", sessionCtx).then(() => {
90
176
  push({ role: "system", content: T.muted("Session started. Type a message or /help.") });
91
177
  });
92
178
  const runner = new AgentRunner(registry, session, (event) => {
93
- if (event.type === "text_delta") {
179
+ if (event.type === "text_delta")
94
180
  setStreaming(prev => prev + event.text);
95
- }
96
- else if (event.type === "tool_start") {
181
+ else if (event.type === "tool_start")
97
182
  setToolRunning(event.name);
98
- }
99
183
  else if (event.type === "tool_done") {
100
184
  setToolRunning(null);
101
- push({
102
- role: "tool",
103
- content: event.result,
104
- toolName: event.name,
105
- isError: event.isError,
106
- });
185
+ push({ role: "tool", content: event.result, toolName: event.name, isError: event.isError });
107
186
  }
108
187
  else if (event.type === "turn_done") {
109
188
  setDisabled(false);
110
189
  setToolRunning(null);
111
- setStreaming(prev => {
112
- if (prev.trim())
113
- push({ role: "assistant", content: prev });
114
- return "";
115
- });
190
+ setStreaming(prev => { if (prev.trim())
191
+ push({ role: "assistant", content: prev }); return ""; });
116
192
  }
117
193
  else if (event.type === "error") {
118
194
  setDisabled(false);
@@ -120,23 +196,29 @@ export function App({ registry, systemPrompt, effectLevel: initialEffect = "norm
120
196
  setStreaming("");
121
197
  notify(T.error(`Error: ${event.message}`));
122
198
  }
123
- }, sessionCtx);
199
+ }, sessionCtx, effectLevel, modelReg, costTracker);
124
200
  runnerRef.current = runner;
201
+ // Initial ticker
202
+ setTicker(priceFeed.tickerLine(5));
203
+ if (costTracker)
204
+ setCostBadge(costTracker.statusLine());
205
+ setNewsBadge(newsFeed.statusBadge());
125
206
  return () => {
126
- if (sessionCtxRef.current) {
207
+ if (sessionCtxRef.current)
127
208
  registry.fireHook("session_end", sessionCtxRef.current).catch(() => { });
128
- }
209
+ priceFeed.stop();
210
+ newsFeed.stop();
211
+ clearInterval(tickerInterval);
212
+ clearInterval(saveInterval);
213
+ costTracker?.saveLifetime();
129
214
  };
130
- // eslint-disable-next-line react-hooks/exhaustive-deps
131
215
  }, []);
132
- // ── Live /effect runner reconfiguration ────────────────────────────────
133
- useEffect(() => {
134
- runnerRef.current?.setEffectLevel(effectLevel);
135
- }, [effectLevel]);
216
+ useEffect(() => { runnerRef.current?.setEffectLevel(effectLevel); }, [effectLevel]);
136
217
  // ── Ctrl-C ────────────────────────────────────────────────────────────────
137
218
  useInput((_input, key) => {
138
219
  if (key.ctrl && _input === "c") {
139
220
  push({ role: "system", content: T.muted("Goodbye 🪼") });
221
+ costTracker?.saveLifetime();
140
222
  setTimeout(exit, 200);
141
223
  }
142
224
  });
@@ -145,17 +227,52 @@ export function App({ registry, systemPrompt, effectLevel: initialEffect = "norm
145
227
  const input = raw.trim();
146
228
  if (!input)
147
229
  return;
230
+ // ── Slash commands ────────────────────────────────────────────────────
148
231
  if (input.startsWith("/")) {
149
232
  const [cmd, ...rest] = input.slice(1).split(" ");
150
233
  const args = rest.join(" ");
151
234
  if (cmd === "exit" || cmd === "quit") {
152
235
  push({ role: "system", content: T.muted("Goodbye 🪼") });
236
+ costTracker?.saveLifetime();
153
237
  setTimeout(exit, 200);
154
238
  return;
155
239
  }
156
240
  if (cmd === "help") {
157
241
  const lines = registry.listCommands().map(([n, d]) => T.accent(`/${n}`.padEnd(16)) + " " + d.description);
158
- notify("Available commands:\n\n" + lines.join("\n"));
242
+ notify("Available commands:\n\n" + lines.join("\n") + "\n\nBuilt-in tools: list_models, get_prices, get_news, analyze_ta, cost_report, get_market_overview, get_top_movers, model_summary");
243
+ return;
244
+ }
245
+ // Built-in /models command
246
+ if (cmd === "models") {
247
+ if (!modelReg) {
248
+ notify(T.error("Model registry not available"));
249
+ return;
250
+ }
251
+ const query = rest.join(" ") || undefined;
252
+ const result = await modelReg.listModelsTool("", { query: query, limit: 20, available_only: true });
253
+ notify(result.content[0].text);
254
+ return;
255
+ }
256
+ // Built-in /cost command
257
+ if (cmd === "cost") {
258
+ if (!costTracker) {
259
+ notify(T.error("Cost tracker not available"));
260
+ return;
261
+ }
262
+ const result = await costTracker.costReportTool();
263
+ notify(result.content[0].text);
264
+ return;
265
+ }
266
+ // Built-in /news command
267
+ if (cmd === "news") {
268
+ const result = await getNewsTool("", { limit: 15 });
269
+ notify(result.content[0].text);
270
+ return;
271
+ }
272
+ // Built-in /prices command
273
+ if (cmd === "prices") {
274
+ const result = await getPricesTool("", { symbols: args ? args.split(/\s+/) : ["btc", "eth", "sol"] });
275
+ notify(result.content[0].text);
159
276
  return;
160
277
  }
161
278
  const def = registry.getCommand(cmd);
@@ -185,9 +302,9 @@ export function App({ registry, systemPrompt, effectLevel: initialEffect = "norm
185
302
  setDisabled(false);
186
303
  notify(T.error(`Runner error: ${e.message}`));
187
304
  }
188
- }, [registry, exit, push, notify, uiCtx]);
189
- // Build status line from all active badges
190
- const statusLine = Object.values(statusBadges).join(" ") || null;
305
+ }, [registry, exit, push, notify, uiCtx, modelReg, costTracker]);
306
+ // Build status line: ticker + cost + badges
307
+ const statusLine = [ticker, costBadge, newsBadge, ...Object.values(statusBadges)].filter(Boolean).join(" ") || null;
191
308
  return (_jsxs(Box, { flexDirection: "column", height: "100%", children: [_jsx(StatusBar, { model: modelName, chain: chain, vaultLocked: vaultLocked, effectLevel: effectLevel, toolRunning: toolRunning, connected: true, statusLine: statusLine }), _jsx(REPL, { messages: messages, streamingText: streaming, toolRunning: toolRunning, onSubmit: handleSubmit, disabled: disabled })] }));
192
309
  }
193
310
  //# sourceMappingURL=App.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"App.js","sourceRoot":"","sources":["../../src/tui/App.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"App.js","sourceRoot":"","sources":["../../src/tui/App.tsx"],"names":[],"mappings":";AAAA;;;;GAIG;AAEH,OAAc,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AACxE,OAAO,EAAE,GAAG,EAAQ,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAS,gBAAgB,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAc,WAAW,CAAC;AAEzC,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,YAAY,CAAC;AAE1C,OAAO,EAAE,WAAW,EAAE,MAAO,0BAA0B,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAG9D,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa,EAAE,kBAAkB,EAAE,eAAe,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC5J,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAcrD,IAAI,aAAa,GAAG,CAAC,CAAC;AACtB,SAAS,MAAM,KAAK,OAAO,MAAM,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;AAErD,MAAM,UAAU,GAAG,CAAC,EAClB,QAAQ,EACR,YAAY,EACZ,WAAW,EAAE,aAAa,GAAG,QAAQ,EACrC,KAAK,EAAQ,YAAY,GAAI,UAAU,EACvC,QAAQ,EACR,WAAW,EACX,aAAa,EACb,aAAa,GACJ;IACT,MAAM,EAAE,IAAI,EAAE,GAAwB,MAAM,EAAE,CAAC;IAC/C,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAS,QAAQ,CAAgB,EAAE,CAAC,CAAC;IAClE,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAO,QAAQ,CAAC,EAAE,CAAC,CAAC;IACnD,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IACpE,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAS,QAAQ,CAAC,KAAK,CAAC,CAAC;IACtD,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IACrD,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAC;IAC9D,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAe,QAAQ,CAAC,YAAY,CAAC,CAAC;IAC7D,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAyB,EAAE,CAAC,CAAC;IAC7E,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAa,QAAQ,CAAC,EAAE,CAAC,CAAC;IACnD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAO,QAAQ,CAAC,EAAE,CAAC,CAAC;IACnD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAO,QAAQ,CAAC,EAAE,CAAC,CAAC;IACnD,MAAM,SAAS,GAAuB,MAAM,CAAqB,IAAI,CAAC,CAAC;IACvE,MAAM,UAAU,GAAsB,MAAM,CAAwB,IAAI,CAAC,CAAC;IAC1E,MAAM,aAAa,GAAmB,MAAM,CAAwB,IAAI,CAAC,CAAC;IAC1E,MAAM,KAAK,GAA2B,SAAS,EAAE,CAAC;IAElD,IAAI,SAAS,GAAG,UAAU,CAAC;IAC3B,IAAI,CAAC;QAAC,SAAS,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAC,sBAAsB,CAAC,CAAC;IAExF,4EAA4E;IAC5E,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,GAAmC,EAAE,EAAE;QAC/D,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;IAC3E,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,OAAe,EAAE,EAAE;QAC7C,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;IACpC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAEX,MAAM,SAAS,GAAG,WAAW,CAAC,CAAC,GAAW,EAAE,KAAa,EAAE,EAAE;QAC3D,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QACrD,IAAI,GAAG,KAAK,OAAO;YAAE,cAAc,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;QAC1F,IAAI,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,cAAc;YAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC/D,IAAI,GAAG,KAAK,cAAc;YAAE,cAAc,CAAC,KAAK,CAAC,CAAC;IACpD,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,KAAK,GAAc,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAC,KAAK,IAAG,CAAC,EAAE,SAAS,CAAC,QAAQ,IAAG,CAAC,EAAE,KAAK,EAAE,CAAC;IAElG,4EAA4E;IAE5E,SAAS,oBAAoB;QAC3B,IAAI,CAAC,QAAQ;YAAE,OAAO;QAEtB,cAAc;QACd,QAAQ,CAAC,OAAO,CAAC;YACf,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa;YACzC,WAAW,EAAE,+GAA+G;YAC5H,UAAU,EAAE,QAAQ,CAAC,gBAAuB;YAC5C,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,EAAE,CAAQ,CAAC;SAC1D,CAAC,CAAC;QACH,QAAQ,CAAC,OAAO,CAAC;YACf,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY;YACvC,WAAW,EAAE,0FAA0F;YACvG,UAAU,EAAE,QAAQ,CAAC,eAAsB;YAC3C,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,EAAE,CAAQ,CAAC;SACzD,CAAC,CAAC;QACH,QAAQ,CAAC,OAAO,CAAC;YACf,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,eAAe;YAC7C,WAAW,EAAE,oDAAoD;YACjE,UAAU,EAAE,QAAQ,CAAC,aAAoB;YACzC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,WAAW,EAAE;SACzC,CAAC,CAAC;QAEH,aAAa;QACb,IAAI,WAAW,EAAE,CAAC;YAChB,QAAQ,CAAC,OAAO,CAAC;gBACf,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa;gBACzC,WAAW,EAAE,mEAAmE;gBAChF,UAAU,EAAE,WAAW,CAAC,gBAAuB;gBAC/C,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,WAAW,CAAC,cAAc,EAAE;aAC/C,CAAC,CAAC;QACL,CAAC;QAED,cAAc;QACd,QAAQ,CAAC,OAAO,CAAC;YACf,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY;YACvC,WAAW,EAAE,qEAAqE;YAClF,UAAU,EAAE,eAAsB;YAClC,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,EAAE,EAAE,CAAQ,CAAC;SAChD,CAAC,CAAC;QACH,QAAQ,CAAC,OAAO,CAAC;YACf,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,YAAY;YAC3C,WAAW,EAAE,iDAAiD;YAC9D,UAAU,EAAE,eAAsB;YAClC,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,EAAE,EAAE,CAAQ,CAAC;SAChD,CAAC,CAAC;QACH,QAAQ,CAAC,OAAO,CAAC;YACf,IAAI,EAAE,qBAAqB,EAAE,KAAK,EAAE,iBAAiB;YACrD,WAAW,EAAE,wEAAwE;YACrF,UAAU,EAAE,oBAA2B;YACvC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,kBAAkB,EAAE;SACvC,CAAC,CAAC;QAEH,aAAa;QACb,QAAQ,CAAC,OAAO,CAAC;YACf,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU;YACnC,WAAW,EAAE,yFAAyF;YACtG,UAAU,EAAE,aAAoB;YAChC,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,CAAQ,CAAC;SAC9C,CAAC,CAAC;QAEH,2BAA2B;QAC3B,QAAQ,CAAC,OAAO,CAAC;YACf,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,oBAAoB;YAC/C,WAAW,EAAE,qJAAqJ;YAClK,UAAU,EAAE,eAAsB;YAClC,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE;gBACxB,MAAM,MAAM,GAAI,CAAC,CAAC,MAAkB,CAAC;gBACrC,MAAM,KAAK,GAAM,CAAC,CAAC,KAA8B,IAAI,EAAE,CAAC;gBACxD,MAAM,IAAI,GAAO,CAAC,CAAC,IAA6B,IAAI,EAAE,CAAC;gBACvD,MAAM,OAAO,GAAI,CAAC,CAAC,OAAgC,IAAI,EAAE,CAAC;gBAC1D,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;oBACpC,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;iBACjG,CAAC,CAAC,CAAC;gBACJ,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;gBACtC,MAAM,IAAI,GAAM,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;oBAC9B,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;oBAC9E,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAK,CAAC,CAAC,KAAkB,CAAC,MAAM,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC;oBAC5H,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,CAAC,EAAE,CAAC;gBACrC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACd,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC;gBAC7D,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,gCAAgC,IAAI,EAAE,EAAE,CAAC;oBAClF,OAAO,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,KAAK,EAAE;iBACrF,CAAC;YACJ,CAAC;SACF,CAAC,CAAC;IACL,CAAC;IAED,SAAS,CAAC,GAAG,EAAE,GAAG,aAAa,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAE9E,4EAA4E;IAE5E,SAAS,CAAC,GAAG,EAAE;QACb,oBAAoB,EAAE,CAAC;QAEvB,yBAAyB;QACzB,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QACpK,SAAS,CAAC,KAAK,EAAE,CAAC;QAClB,QAAQ,CAAC,KAAK,EAAE,CAAC;QAEjB,mDAAmD;QACnD,MAAM,cAAc,GAAG,WAAW,CAAC,GAAG,EAAE;YACtC,SAAS,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;YACnC,IAAI,WAAW;gBAAE,YAAY,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC,CAAC;YACxD,YAAY,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;QACvC,CAAC,EAAE,KAAK,CAAC,CAAC;QAEV,oBAAoB;QACpB,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,EAAE;YACpC,WAAW,EAAE,YAAY,EAAE,CAAC;QAC9B,CAAC,EAAE,MAAM,CAAC,CAAC;QAEX,gBAAgB;QAChB,MAAM,OAAO,GAAG,IAAI,cAAc,EAAE,CAAC;QACrC,OAAO,CAAC,eAAe,CACrB,QAAQ,CAAC,eAAe,EAAE,IAAI,YAAY;YAC1C,kDAAkD,CACnD,CAAC;QACF,UAAU,CAAC,OAAO,GAAG,OAAO,CAAC;QAE7B,MAAM,UAAU,GAAmB;YACjC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI;YACtB,MAAM,EAAE,EAAE,kBAAkB,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,iBAAiB,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE;SACjM,CAAC;QACF,aAAa,CAAC,OAAO,GAAG,UAAU,CAAC;QAEnC,QAAQ,CAAC,QAAQ,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;YACvD,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,2CAA2C,CAAC,EAAE,CAAC,CAAC;QAC1F,CAAC,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YAC1D,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY;gBAAE,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;iBACpE,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY;gBAAE,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;iBAC5D,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;gBACpC,cAAc,CAAC,IAAI,CAAC,CAAC;gBACrB,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAC9F,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;gBACtC,WAAW,CAAC,KAAK,CAAC,CAAC;gBAAC,cAAc,CAAC,IAAI,CAAC,CAAC;gBACzC,YAAY,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE;oBAAE,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACpG,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBAClC,WAAW,CAAC,KAAK,CAAC,CAAC;gBAAC,cAAc,CAAC,IAAI,CAAC,CAAC;gBAAC,YAAY,CAAC,EAAE,CAAC,CAAC;gBAC3D,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;QACnD,SAAS,CAAC,OAAO,GAAG,MAAM,CAAC;QAE3B,iBAAiB;QACjB,SAAS,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QACnC,IAAI,WAAW;YAAE,YAAY,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC,CAAC;QACxD,YAAY,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;QAErC,OAAO,GAAG,EAAE;YACV,IAAI,aAAa,CAAC,OAAO;gBAAE,QAAQ,CAAC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YACnG,SAAS,CAAC,IAAI,EAAE,CAAC;YACjB,QAAQ,CAAC,IAAI,EAAE,CAAC;YAChB,aAAa,CAAC,cAAc,CAAC,CAAC;YAC9B,aAAa,CAAC,YAAY,CAAC,CAAC;YAC5B,WAAW,EAAE,YAAY,EAAE,CAAC;QAC9B,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,SAAS,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IAEpF,6EAA6E;IAE7E,QAAQ,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;QACvB,IAAI,GAAG,CAAC,IAAI,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;YAC/B,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;YACzD,WAAW,EAAE,YAAY,EAAE,CAAC;YAC5B,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACxB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,6EAA6E;IAE7E,MAAM,YAAY,GAAG,WAAW,CAAC,KAAK,EAAE,GAAW,EAAE,EAAE;QACrD,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;QACzB,IAAI,CAAC,KAAK;YAAE,OAAO;QAEnB,yEAAyE;QACzE,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,MAAM,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACjD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAE5B,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;gBACrC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;gBACzD,WAAW,EAAE,YAAY,EAAE,CAAC;gBAC5B,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;gBACtB,OAAO;YACT,CAAC;YAED,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;gBACnB,MAAM,KAAK,GAAG,QAAQ,CAAC,YAAY,EAAE,CAAC,GAAG,CACvC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,WAAW,CAC/D,CAAC;gBACF,MAAM,CAAC,yBAAyB,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,oIAAoI,CAAC,CAAC;gBAC5L,OAAO;YACT,CAAC;YAED,2BAA2B;YAC3B,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;gBACrB,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC,CAAC;oBAAC,OAAO;gBAAC,CAAC;gBAC3E,MAAM,KAAK,GAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC;gBAC3C,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAY,EAAE,KAAK,EAAE,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC3G,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,IAAI,CAAC,CAAC;gBAChC,OAAO;YACT,CAAC;YAED,yBAAyB;YACzB,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;gBACnB,IAAI,CAAC,WAAW,EAAE,CAAC;oBAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC,CAAC;oBAAC,OAAO;gBAAC,CAAC;gBAC5E,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,cAAc,EAAE,CAAC;gBAClD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,IAAI,CAAC,CAAC;gBAChC,OAAO;YACT,CAAC;YAED,yBAAyB;YACzB,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;gBACnB,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;gBACpD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,IAAI,CAAC,CAAC;gBAChC,OAAO;YACT,CAAC;YAED,2BAA2B;YAC3B,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;gBACrB,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;gBACtG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,IAAI,CAAC,CAAC;gBAChC,OAAO;YACT,CAAC;YAED,MAAM,GAAG,GAAG,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YACrC,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,qBAAqB,GAAG,oCAAoC,CAAC,CAAC,CAAC;gBAC9E,OAAO;YACT,CAAC;YACD,IAAI,CAAC;gBAAC,MAAM,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;YAAC,CAAC;YAAC,OAAO,CAAM,EAAE,CAAC;gBAC9D,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YACjD,CAAC;YACD,OAAO;QACT,CAAC;QAED,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;YAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC;YAAC,OAAO;QAAC,CAAC;QACvE,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QACvC,WAAW,CAAC,IAAI,CAAC,CAAC;QAClB,YAAY,CAAC,EAAE,CAAC,CAAC;QACjB,IAAI,CAAC;YAAC,MAAM,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAAC,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAC1D,WAAW,CAAC,KAAK,CAAC,CAAC;YACnB,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAChD,CAAC;IACH,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC;IAEjE,4CAA4C;IAC5C,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;IAErH,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,MAAM,EAAC,MAAM,aACvC,KAAC,SAAS,IACR,KAAK,EAAE,SAAS,EAChB,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,WAAW,EACxB,WAAW,EAAE,WAAW,EACxB,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,IAAI,EACf,UAAU,EAAE,UAAU,GACtB,EACF,KAAC,IAAI,IACH,QAAQ,EAAE,QAAQ,EAClB,aAAa,EAAE,SAAS,EACxB,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,QAAQ,GAClB,IACE,CACP,CAAC;AACJ,CAAC"}
@@ -9,7 +9,7 @@ export function StatusBar({ model, chain, vaultLocked, effectLevel, toolRunning,
9
9
  return (_jsxs(Box, { borderStyle: "single", borderColor: JELLY_COLORS.dim, paddingX: 1, flexDirection: "row", justifyContent: "space-between", children: [_jsxs(Box, { gap: 2, children: [_jsx(Text, { color: JELLY_COLORS.accent, bold: true, children: "\uD83E\uDEBC JellyOS" }), _jsx(Text, { color: JELLY_COLORS.muted, children: modelShort })] }), _jsx(Box, { children: toolRunning
10
10
  ? _jsxs(Text, { color: JELLY_COLORS.warn, children: ["\u2699 ", toolRunning] })
11
11
  : statusLine
12
- ? _jsx(Text, { color: JELLY_COLORS.success, children: statusLine })
12
+ ? _jsx(Text, { color: JELLY_COLORS.muted, children: statusLine.slice(0, 80) })
13
13
  : _jsx(Text, { color: JELLY_COLORS.muted, children: connected ? "ready" : "connecting…" }) }), _jsxs(Box, { gap: 2, children: [_jsx(Text, { color: JELLY_COLORS.muted, children: chainShort }), _jsx(Text, { children: vaultIcon }), _jsxs(Text, { color: JELLY_COLORS.header, children: [effectIcon, " ", effectLevel] })] })] }));
14
14
  }
15
15
  //# sourceMappingURL=StatusBar.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"StatusBar.js","sourceRoot":"","sources":["../../src/tui/StatusBar.tsx"],"names":[],"mappings":";AAMA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAa1C,MAAM,UAAU,SAAS,CAAC,EACxB,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,GAC3D;IACf,MAAM,SAAS,GAAI,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7C,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACrC,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC9E,MAAM,UAAU,GAAI,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAA6B,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC;IAEtH,OAAO,CACL,MAAC,GAAG,IACF,WAAW,EAAC,QAAQ,EACpB,WAAW,EAAE,YAAY,CAAC,GAAG,EAC7B,QAAQ,EAAE,CAAC,EACX,aAAa,EAAC,KAAK,EACnB,cAAc,EAAC,eAAe,aAG9B,MAAC,GAAG,IAAC,GAAG,EAAE,CAAC,aACT,KAAC,IAAI,IAAC,KAAK,EAAE,YAAY,CAAC,MAAM,EAAE,IAAI,2CAAkB,EACxD,KAAC,IAAI,IAAC,KAAK,EAAE,YAAY,CAAC,KAAK,YAAG,UAAU,GAAQ,IAChD,EAGN,KAAC,GAAG,cACD,WAAW;oBACV,CAAC,CAAC,MAAC,IAAI,IAAC,KAAK,EAAE,YAAY,CAAC,IAAI,wBAAK,WAAW,IAAQ;oBACxD,CAAC,CAAC,UAAU;wBACV,CAAC,CAAC,KAAC,IAAI,IAAC,KAAK,EAAE,YAAY,CAAC,OAAO,YAAG,UAAU,GAAQ;wBACxD,CAAC,CAAC,KAAC,IAAI,IAAC,KAAK,EAAE,YAAY,CAAC,KAAK,YAAG,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,GAAQ,GAE/E,EAGN,MAAC,GAAG,IAAC,GAAG,EAAE,CAAC,aACT,KAAC,IAAI,IAAC,KAAK,EAAE,YAAY,CAAC,KAAK,YAAG,UAAU,GAAQ,EACpD,KAAC,IAAI,cAAE,SAAS,GAAQ,EACxB,MAAC,IAAI,IAAC,KAAK,EAAE,YAAY,CAAC,MAAM,aAAG,UAAU,OAAG,WAAW,IAAQ,IAC/D,IACF,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"StatusBar.js","sourceRoot":"","sources":["../../src/tui/StatusBar.tsx"],"names":[],"mappings":";AAMA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAa1C,MAAM,UAAU,SAAS,CAAC,EACxB,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,GAC3D;IACf,MAAM,SAAS,GAAI,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7C,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACrC,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC9E,MAAM,UAAU,GAAI,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAA6B,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC;IAEtH,OAAO,CACL,MAAC,GAAG,IACF,WAAW,EAAC,QAAQ,EACpB,WAAW,EAAE,YAAY,CAAC,GAAG,EAC7B,QAAQ,EAAE,CAAC,EACX,aAAa,EAAC,KAAK,EACnB,cAAc,EAAC,eAAe,aAG9B,MAAC,GAAG,IAAC,GAAG,EAAE,CAAC,aACT,KAAC,IAAI,IAAC,KAAK,EAAE,YAAY,CAAC,MAAM,EAAE,IAAI,2CAAkB,EACxD,KAAC,IAAI,IAAC,KAAK,EAAE,YAAY,CAAC,KAAK,YAAG,UAAU,GAAQ,IAChD,EAGN,KAAC,GAAG,cACD,WAAW;oBACV,CAAC,CAAC,MAAC,IAAI,IAAC,KAAK,EAAE,YAAY,CAAC,IAAI,wBAAK,WAAW,IAAQ;oBACxD,CAAC,CAAC,UAAU;wBACV,CAAC,CAAC,KAAC,IAAI,IAAC,KAAK,EAAE,YAAY,CAAC,KAAK,YAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAQ;wBACnE,CAAC,CAAC,KAAC,IAAI,IAAC,KAAK,EAAE,YAAY,CAAC,KAAK,YAAG,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,GAAQ,GAE/E,EAGN,MAAC,GAAG,IAAC,GAAG,EAAE,CAAC,aACT,KAAC,IAAI,IAAC,KAAK,EAAE,YAAY,CAAC,KAAK,YAAG,UAAU,GAAQ,EACpD,KAAC,IAAI,cAAE,SAAS,GAAQ,EACxB,MAAC,IAAI,IAAC,KAAK,EAAE,YAAY,CAAC,MAAM,aAAG,UAAU,OAAG,WAAW,IAAQ,IAC/D,IACF,CACP,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jellyos/agent",
3
- "version": "0.1.2",
3
+ "version": "0.1.4",
4
4
  "description": "JellyOS — standalone AI trading agent. Runs locally, no server required.",
5
5
  "author": "JellyChain",
6
6
  "license": "MIT",
@@ -37,7 +37,7 @@
37
37
  "devDependencies": {
38
38
  "@types/node": "^20.19.41",
39
39
  "@types/react": "^18.3.29",
40
- "typescript": "^5.9.3"
40
+ "typescript": "^5.4.0"
41
41
  },
42
42
  "engines": {
43
43
  "node": ">=20.0.0"
@@ -1,39 +0,0 @@
1
- /**
2
- * safeLog — Ink-aware logging utility.
3
- *
4
- * When Ink is active, routes through the TUI notify channel (ui.notify)
5
- * so messages appear cleanly inside the REPL message area.
6
- * When Ink is not yet active, appends to ~/.jelly/debug.log instead of
7
- * writing directly to stdout — a raw stdout write before render() is safe,
8
- * but one after render() would corrupt Ink's cursor-up count and produce
9
- * stacked ┌──────────────────────────────────────────────────────────────┐
10
- * borders. Writing to a file avoids that risk entirely.
11
- *
12
- * Usage anywhere in the codebase:
13
- * import { safeLog } from "../util/safeLog.js";
14
- * safeLog("something happened");
15
- *
16
- * Wire-up (done once in cli.ts inside onNotifyReady):
17
- * import { wireNotify } from "../util/safeLog.js";
18
- * wireNotify(notifyFn);
19
- *
20
- * POLICY — stdout during Ink lifecycle:
21
- * All log output MUST go through safeLog (or ui.notify / push) once
22
- * Ink has mounted. Direct calls to process.stdout.write are intentionally
23
- * NOT patched globally because Ink itself uses process.stdout.write for
24
- * rendering; intercepting it blindly would break Ink output entirely.
25
- * Instead, the contract is enforced here (safeLog) and via the console
26
- * patch in cli.ts that redirects console.log/error/warn post-render.
27
- */
28
- /**
29
- * Wire the TUI notify channel.
30
- * Called once in cli.ts after App mounts and onNotifyReady fires.
31
- * After this point, safeLog routes through notify instead of the log file.
32
- */
33
- export declare function wireNotify(fn: (msg: string) => void): void;
34
- /**
35
- * Log a message safely regardless of whether Ink is active.
36
- * Accepts any mix of strings and values (stringified via String()).
37
- */
38
- export declare function safeLog(...args: unknown[]): void;
39
- //# sourceMappingURL=safeLog.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"safeLog.d.ts","sourceRoot":"","sources":["../../src/util/safeLog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAWH;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAE1D;AAED;;;GAGG;AACH,wBAAgB,OAAO,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAUhD"}
@@ -1,59 +0,0 @@
1
- /**
2
- * safeLog — Ink-aware logging utility.
3
- *
4
- * When Ink is active, routes through the TUI notify channel (ui.notify)
5
- * so messages appear cleanly inside the REPL message area.
6
- * When Ink is not yet active, appends to ~/.jelly/debug.log instead of
7
- * writing directly to stdout — a raw stdout write before render() is safe,
8
- * but one after render() would corrupt Ink's cursor-up count and produce
9
- * stacked ┌──────────────────────────────────────────────────────────────┐
10
- * borders. Writing to a file avoids that risk entirely.
11
- *
12
- * Usage anywhere in the codebase:
13
- * import { safeLog } from "../util/safeLog.js";
14
- * safeLog("something happened");
15
- *
16
- * Wire-up (done once in cli.ts inside onNotifyReady):
17
- * import { wireNotify } from "../util/safeLog.js";
18
- * wireNotify(notifyFn);
19
- *
20
- * POLICY — stdout during Ink lifecycle:
21
- * All log output MUST go through safeLog (or ui.notify / push) once
22
- * Ink has mounted. Direct calls to process.stdout.write are intentionally
23
- * NOT patched globally because Ink itself uses process.stdout.write for
24
- * rendering; intercepting it blindly would break Ink output entirely.
25
- * Instead, the contract is enforced here (safeLog) and via the console
26
- * patch in cli.ts that redirects console.log/error/warn post-render.
27
- */
28
- import { appendFileSync, mkdirSync } from "node:fs";
29
- import { join } from "node:path";
30
- import { homedir } from "node:os";
31
- const JELLY_HOME = process.env.JELLYOS_HOME ?? join(homedir(), ".jelly");
32
- const DEBUG_LOG = join(JELLY_HOME, "debug.log");
33
- let _notifyFn = null;
34
- /**
35
- * Wire the TUI notify channel.
36
- * Called once in cli.ts after App mounts and onNotifyReady fires.
37
- * After this point, safeLog routes through notify instead of the log file.
38
- */
39
- export function wireNotify(fn) {
40
- _notifyFn = fn;
41
- }
42
- /**
43
- * Log a message safely regardless of whether Ink is active.
44
- * Accepts any mix of strings and values (stringified via String()).
45
- */
46
- export function safeLog(...args) {
47
- const msg = args.map(a => (typeof a === "string" ? a : String(a))).join(" ");
48
- if (_notifyFn) {
49
- _notifyFn(msg);
50
- }
51
- else {
52
- try {
53
- mkdirSync(JELLY_HOME, { recursive: true });
54
- appendFileSync(DEBUG_LOG, `[${new Date().toISOString()}] ${msg}\n`);
55
- }
56
- catch { /* best-effort — never throw from a log call */ }
57
- }
58
- }
59
- //# sourceMappingURL=safeLog.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"safeLog.js","sourceRoot":"","sources":["../../src/util/safeLog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAA2B,WAAW,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAwB,SAAS,CAAC;AAEpD,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAC;AACzE,MAAM,SAAS,GAAI,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;AAEjD,IAAI,SAAS,GAAmC,IAAI,CAAC;AAErD;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,EAAyB;IAClD,SAAS,GAAG,EAAE,CAAC;AACjB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,OAAO,CAAC,GAAG,IAAe;IACxC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC7E,IAAI,SAAS,EAAE,CAAC;QACd,SAAS,CAAC,GAAG,CAAC,CAAC;IACjB,CAAC;SAAM,CAAC;QACN,IAAI,CAAC;YACH,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC3C,cAAc,CAAC,SAAS,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,GAAG,IAAI,CAAC,CAAC;QACtE,CAAC;QAAC,MAAM,CAAC,CAAC,+CAA+C,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC"}