@multiplayer-app/agent 0.1.9 → 0.1.11
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/README.md +106 -0
- package/dist/agent/definition.d.ts +22 -0
- package/dist/agent/definition.d.ts.map +1 -0
- package/dist/agent/definition.js +3 -0
- package/dist/agent/definition.js.map +1 -0
- package/dist/agent/definition.test.d.ts +2 -0
- package/dist/agent/definition.test.d.ts.map +1 -0
- package/dist/agent/definition.test.js +40 -0
- package/dist/agent/definition.test.js.map +1 -0
- package/dist/agent/model-failure.d.ts +10 -0
- package/dist/agent/model-failure.d.ts.map +1 -0
- package/dist/agent/model-failure.js +50 -0
- package/dist/agent/model-failure.js.map +1 -0
- package/dist/agent/profiles/coding.d.ts +4 -0
- package/dist/agent/profiles/coding.d.ts.map +1 -0
- package/dist/agent/profiles/coding.js +17 -0
- package/dist/agent/profiles/coding.js.map +1 -0
- package/dist/agent/profiles/index.d.ts +4 -0
- package/dist/agent/profiles/index.d.ts.map +1 -0
- package/dist/agent/profiles/index.js +9 -0
- package/dist/agent/profiles/index.js.map +1 -0
- package/dist/agent/profiles/research.d.ts +4 -0
- package/dist/agent/profiles/research.d.ts.map +1 -0
- package/dist/agent/profiles/research.js +53 -0
- package/dist/agent/profiles/research.js.map +1 -0
- package/dist/agent/progress-reminder.test.d.ts +2 -0
- package/dist/agent/progress-reminder.test.d.ts.map +1 -0
- package/dist/agent/progress-reminder.test.js +20 -0
- package/dist/agent/progress-reminder.test.js.map +1 -0
- package/dist/agent/turn-runner.d.ts +54 -0
- package/dist/agent/turn-runner.d.ts.map +1 -0
- package/dist/agent/turn-runner.js +147 -0
- package/dist/agent/turn-runner.js.map +1 -0
- package/dist/agent/turn-runner.test.d.ts +2 -0
- package/dist/agent/turn-runner.test.d.ts.map +1 -0
- package/dist/agent/turn-runner.test.js +181 -0
- package/dist/agent/turn-runner.test.js.map +1 -0
- package/dist/context-pruning.d.ts +13 -0
- package/dist/context-pruning.d.ts.map +1 -0
- package/dist/context-pruning.js +61 -0
- package/dist/context-pruning.js.map +1 -0
- package/dist/context-pruning.test.d.ts +2 -0
- package/dist/context-pruning.test.d.ts.map +1 -0
- package/dist/context-pruning.test.js +48 -0
- package/dist/context-pruning.test.js.map +1 -0
- package/dist/index.d.ts +11 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +18 -10
- package/dist/index.js.map +1 -1
- package/dist/models/attribution.d.ts.map +1 -0
- package/dist/models/attribution.js.map +1 -0
- package/dist/{model.d.ts → models/resolve-model.d.ts} +2 -2
- package/dist/models/resolve-model.d.ts.map +1 -0
- package/dist/{model.js → models/resolve-model.js} +4 -2
- package/dist/models/resolve-model.js.map +1 -0
- package/dist/models/usage.d.ts +11 -0
- package/dist/models/usage.d.ts.map +1 -0
- package/dist/models/usage.js +19 -0
- package/dist/models/usage.js.map +1 -0
- package/dist/{git-sync.d.ts → persistence/git-sync.d.ts} +1 -1
- package/dist/persistence/git-sync.d.ts.map +1 -0
- package/dist/persistence/git-sync.js.map +1 -0
- package/dist/persistence/git-sync.test.d.ts.map +1 -0
- package/dist/{git-sync.test.js → persistence/git-sync.test.js} +2 -2
- package/dist/persistence/git-sync.test.js.map +1 -0
- package/dist/{session-storage-sync.d.ts → persistence/snapshot-sync.d.ts} +2 -2
- package/dist/persistence/snapshot-sync.d.ts.map +1 -0
- package/dist/{session-storage-sync.js → persistence/snapshot-sync.js} +1 -1
- package/dist/persistence/snapshot-sync.js.map +1 -0
- package/dist/persistence/snapshot-sync.test.d.ts +2 -0
- package/dist/persistence/snapshot-sync.test.d.ts.map +1 -0
- package/dist/{session-storage-sync.test.js → persistence/snapshot-sync.test.js} +3 -3
- package/dist/persistence/snapshot-sync.test.js.map +1 -0
- package/dist/persistence/workspace.d.ts +17 -0
- package/dist/persistence/workspace.d.ts.map +1 -0
- package/dist/persistence/workspace.js +26 -0
- package/dist/persistence/workspace.js.map +1 -0
- package/dist/persistence/workspace.test.d.ts +2 -0
- package/dist/persistence/workspace.test.d.ts.map +1 -0
- package/dist/persistence/workspace.test.js +38 -0
- package/dist/persistence/workspace.test.js.map +1 -0
- package/dist/research/extract-texts.d.ts +41 -0
- package/dist/research/extract-texts.d.ts.map +1 -0
- package/dist/research/extract-texts.js +239 -0
- package/dist/research/extract-texts.js.map +1 -0
- package/dist/research/extract-texts.test.d.ts +2 -0
- package/dist/research/extract-texts.test.d.ts.map +1 -0
- package/dist/research/extract-texts.test.js +120 -0
- package/dist/research/extract-texts.test.js.map +1 -0
- package/dist/research/extraction-tool.d.ts +6 -0
- package/dist/research/extraction-tool.d.ts.map +1 -0
- package/dist/research/extraction-tool.js +41 -0
- package/dist/research/extraction-tool.js.map +1 -0
- package/dist/research/extraction-tool.test.d.ts +2 -0
- package/dist/research/extraction-tool.test.d.ts.map +1 -0
- package/dist/research/extraction-tool.test.js +102 -0
- package/dist/research/extraction-tool.test.js.map +1 -0
- package/dist/research/filingramp/attachment-tools.d.ts +4 -0
- package/dist/research/filingramp/attachment-tools.d.ts.map +1 -0
- package/dist/research/filingramp/attachment-tools.js +198 -0
- package/dist/research/filingramp/attachment-tools.js.map +1 -0
- package/dist/research/filingramp/document-search-tool.d.ts +4 -0
- package/dist/research/filingramp/document-search-tool.d.ts.map +1 -0
- package/dist/research/filingramp/document-search-tool.js +231 -0
- package/dist/research/filingramp/document-search-tool.js.map +1 -0
- package/dist/research/filingramp/filing-detail-tool.d.ts +8 -0
- package/dist/research/filingramp/filing-detail-tool.d.ts.map +1 -0
- package/dist/research/filingramp/filing-detail-tool.js +161 -0
- package/dist/research/filingramp/filing-detail-tool.js.map +1 -0
- package/dist/research/filingramp/filing-search-tools.d.ts +4 -0
- package/dist/research/filingramp/filing-search-tools.d.ts.map +1 -0
- package/dist/research/filingramp/filing-search-tools.js +207 -0
- package/dist/research/filingramp/filing-search-tools.js.map +1 -0
- package/dist/research/filingramp/shared.d.ts +64 -0
- package/dist/research/filingramp/shared.d.ts.map +1 -0
- package/dist/research/filingramp/shared.js +130 -0
- package/dist/research/filingramp/shared.js.map +1 -0
- package/dist/research/filingramp-client.d.ts +1 -1
- package/dist/research/filingramp-client.d.ts.map +1 -1
- package/dist/research/filingramp-contract.d.ts.map +1 -1
- package/dist/research/filingramp-contract.js +8 -2
- package/dist/research/filingramp-contract.js.map +1 -1
- package/dist/research/filingramp-tools.d.ts +4 -8
- package/dist/research/filingramp-tools.d.ts.map +1 -1
- package/dist/research/filingramp-tools.js +19 -597
- package/dist/research/filingramp-tools.js.map +1 -1
- package/dist/research/filingramp-tools.test.js +138 -2
- package/dist/research/filingramp-tools.test.js.map +1 -1
- package/dist/research/prompt.d.ts +1 -1
- package/dist/research/prompt.d.ts.map +1 -1
- package/dist/research/prompt.js +16 -7
- package/dist/research/prompt.js.map +1 -1
- package/dist/research/scope.d.ts +1 -1
- package/dist/research/scope.d.ts.map +1 -1
- package/dist/runtime/cli.d.ts.map +1 -0
- package/dist/{cli.js → runtime/cli.js} +3 -3
- package/dist/runtime/cli.js.map +1 -0
- package/dist/{config.d.ts → runtime/config.d.ts} +1 -1
- package/dist/runtime/config.d.ts.map +1 -0
- package/dist/{config.js → runtime/config.js} +1 -1
- package/dist/runtime/config.js.map +1 -0
- package/dist/{runtime.d.ts → runtime/index.d.ts} +2 -2
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/{runtime.js → runtime/index.js} +7 -7
- package/dist/runtime/index.js.map +1 -0
- package/dist/runtime/lambda-microvm.d.ts +3 -0
- package/dist/runtime/lambda-microvm.d.ts.map +1 -0
- package/dist/{lambda-microvm-entrypoint.js → runtime/lambda-microvm.js} +4 -4
- package/dist/runtime/lambda-microvm.js.map +1 -0
- package/dist/runtime/lifecycle.test.d.ts.map +1 -0
- package/dist/{lifecycle.test.js → runtime/lifecycle.test.js} +5 -5
- package/dist/runtime/lifecycle.test.js.map +1 -0
- package/dist/session/checkpoint-timer.test.d.ts.map +1 -0
- package/dist/{checkpoint-timer.test.js → session/checkpoint-timer.test.js} +8 -8
- package/dist/session/checkpoint-timer.test.js.map +1 -0
- package/dist/session/conversation.d.ts +15 -0
- package/dist/session/conversation.d.ts.map +1 -0
- package/dist/session/conversation.js +61 -0
- package/dist/session/conversation.js.map +1 -0
- package/dist/session/conversation.test.d.ts +2 -0
- package/dist/session/conversation.test.d.ts.map +1 -0
- package/dist/session/conversation.test.js +53 -0
- package/dist/session/conversation.test.js.map +1 -0
- package/dist/session/idle-checkpoint.test.d.ts.map +1 -0
- package/dist/{idle-checkpoint.test.js → session/idle-checkpoint.test.js} +8 -4
- package/dist/session/idle-checkpoint.test.js.map +1 -0
- package/dist/session/index.d.ts +7 -0
- package/dist/session/index.d.ts.map +1 -0
- package/dist/session/index.js +16 -0
- package/dist/session/index.js.map +1 -0
- package/dist/session/runtime.d.ts +58 -0
- package/dist/session/runtime.d.ts.map +1 -0
- package/dist/session/runtime.js +292 -0
- package/dist/session/runtime.js.map +1 -0
- package/dist/session/runtime.test.d.ts +2 -0
- package/dist/session/runtime.test.d.ts.map +1 -0
- package/dist/session/runtime.test.js +201 -0
- package/dist/session/runtime.test.js.map +1 -0
- package/dist/session/tool-context.d.ts +12 -0
- package/dist/session/tool-context.d.ts.map +1 -0
- package/dist/session/tool-context.js +3 -0
- package/dist/session/tool-context.js.map +1 -0
- package/dist/session/tools.d.ts +6 -0
- package/dist/session/tools.d.ts.map +1 -0
- package/dist/session/tools.js +97 -0
- package/dist/session/tools.js.map +1 -0
- package/dist/session/tools.test.d.ts +2 -0
- package/dist/session/tools.test.d.ts.map +1 -0
- package/dist/session/tools.test.js +55 -0
- package/dist/session/tools.test.js.map +1 -0
- package/dist/task/loop.d.ts +6 -0
- package/dist/task/loop.d.ts.map +1 -0
- package/dist/{loop.js → task/loop.js} +6 -6
- package/dist/task/loop.js.map +1 -0
- package/dist/tool-call-repair.d.ts +11 -0
- package/dist/tool-call-repair.d.ts.map +1 -0
- package/dist/tool-call-repair.js +91 -0
- package/dist/tool-call-repair.js.map +1 -0
- package/dist/tool-call-repair.test.d.ts +2 -0
- package/dist/tool-call-repair.test.d.ts.map +1 -0
- package/dist/tool-call-repair.test.js +50 -0
- package/dist/tool-call-repair.test.js.map +1 -0
- package/dist/tools/exec-tools.d.ts +1 -0
- package/dist/tools/exec-tools.d.ts.map +1 -1
- package/dist/tools/exec-tools.js +23 -3
- package/dist/tools/exec-tools.js.map +1 -1
- package/dist/transport/link.d.ts.map +1 -0
- package/dist/transport/link.js.map +1 -0
- package/dist/{protocol.d.ts → transport/protocol.d.ts} +4 -0
- package/dist/transport/protocol.d.ts.map +1 -0
- package/dist/transport/protocol.js.map +1 -0
- package/dist/transport/protocol.test.d.ts.map +1 -0
- package/dist/transport/protocol.test.js.map +1 -0
- package/dist/{report.d.ts → transport/reporter.d.ts} +1 -1
- package/dist/transport/reporter.d.ts.map +1 -0
- package/dist/{report.js → transport/reporter.js} +1 -1
- package/dist/transport/reporter.js.map +1 -0
- package/package.json +11 -11
- package/dist/attribution.d.ts.map +0 -1
- package/dist/attribution.js.map +0 -1
- package/dist/checkpoint-timer.test.d.ts.map +0 -1
- package/dist/checkpoint-timer.test.js.map +0 -1
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js.map +0 -1
- package/dist/config.d.ts.map +0 -1
- package/dist/config.js.map +0 -1
- package/dist/git-sync.d.ts.map +0 -1
- package/dist/git-sync.js.map +0 -1
- package/dist/git-sync.test.d.ts.map +0 -1
- package/dist/git-sync.test.js.map +0 -1
- package/dist/idle-checkpoint.test.d.ts.map +0 -1
- package/dist/idle-checkpoint.test.js.map +0 -1
- package/dist/lambda-microvm-entrypoint.d.ts +0 -3
- package/dist/lambda-microvm-entrypoint.d.ts.map +0 -1
- package/dist/lambda-microvm-entrypoint.js.map +0 -1
- package/dist/lifecycle.test.d.ts.map +0 -1
- package/dist/lifecycle.test.js.map +0 -1
- package/dist/link.d.ts.map +0 -1
- package/dist/link.js.map +0 -1
- package/dist/loop.d.ts +0 -6
- package/dist/loop.d.ts.map +0 -1
- package/dist/loop.js.map +0 -1
- package/dist/model.d.ts.map +0 -1
- package/dist/model.js.map +0 -1
- package/dist/protocol.d.ts.map +0 -1
- package/dist/protocol.js.map +0 -1
- package/dist/protocol.test.d.ts.map +0 -1
- package/dist/protocol.test.js.map +0 -1
- package/dist/report.d.ts.map +0 -1
- package/dist/report.js.map +0 -1
- package/dist/runtime.d.ts.map +0 -1
- package/dist/runtime.js.map +0 -1
- package/dist/session-storage-sync.d.ts.map +0 -1
- package/dist/session-storage-sync.js.map +0 -1
- package/dist/session-storage-sync.test.d.ts +0 -2
- package/dist/session-storage-sync.test.d.ts.map +0 -1
- package/dist/session-storage-sync.test.js.map +0 -1
- package/dist/session.d.ts +0 -46
- package/dist/session.d.ts.map +0 -1
- package/dist/session.js +0 -512
- package/dist/session.js.map +0 -1
- /package/dist/{attribution.d.ts → models/attribution.d.ts} +0 -0
- /package/dist/{attribution.js → models/attribution.js} +0 -0
- /package/dist/{git-sync.js → persistence/git-sync.js} +0 -0
- /package/dist/{git-sync.test.d.ts → persistence/git-sync.test.d.ts} +0 -0
- /package/dist/{cli.d.ts → runtime/cli.d.ts} +0 -0
- /package/dist/{lifecycle.test.d.ts → runtime/lifecycle.test.d.ts} +0 -0
- /package/dist/{checkpoint-timer.test.d.ts → session/checkpoint-timer.test.d.ts} +0 -0
- /package/dist/{idle-checkpoint.test.d.ts → session/idle-checkpoint.test.d.ts} +0 -0
- /package/dist/{link.d.ts → transport/link.d.ts} +0 -0
- /package/dist/{link.js → transport/link.js} +0 -0
- /package/dist/{protocol.js → transport/protocol.js} +0 -0
- /package/dist/{protocol.test.d.ts → transport/protocol.test.d.ts} +0 -0
- /package/dist/{protocol.test.js → transport/protocol.test.js} +0 -0
package/dist/session.js
DELETED
|
@@ -1,512 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.SessionAgent = exports.PERIODIC_CHECKPOINT_MS = void 0;
|
|
7
|
-
exports.limitConversation = limitConversation;
|
|
8
|
-
exports.runSessionAgent = runSessionAgent;
|
|
9
|
-
// Session mode: the process stays up for the life of the session VM and serves chat turns
|
|
10
|
-
// the platform forwards as commands. One turn = one streamText loop over the conversation so
|
|
11
|
-
// far; every delta, tool call, progress step and token count goes up the link as it happens,
|
|
12
|
-
// so the chat shows exactly what the guest does without the API running a model of its own.
|
|
13
|
-
//
|
|
14
|
-
// Durability: the conversation is checkpointed to .builder/conversation.json after every turn
|
|
15
|
-
// and the workspace is saved to S3 for standalone sessions or Git for project sessions
|
|
16
|
-
// on checkpoints, so a VM that Lambda terminates after a long suspend resumes where it stopped.
|
|
17
|
-
const fs_1 = require("fs");
|
|
18
|
-
const path_1 = __importDefault(require("path"));
|
|
19
|
-
const ai_1 = require("ai");
|
|
20
|
-
const zod_1 = require("zod");
|
|
21
|
-
const git_sync_1 = require("./git-sync");
|
|
22
|
-
const session_storage_sync_1 = require("./session-storage-sync");
|
|
23
|
-
const mcp_tools_1 = require("./mcp/mcp-tools");
|
|
24
|
-
const model_1 = require("./model");
|
|
25
|
-
const attribution_1 = require("./attribution");
|
|
26
|
-
const filingramp_client_1 = require("./research/filingramp-client");
|
|
27
|
-
const filingramp_tools_1 = require("./research/filingramp-tools");
|
|
28
|
-
const prompt_1 = require("./research/prompt");
|
|
29
|
-
/** The OpenRouter app a session's model calls are attributed to, one per profile. */
|
|
30
|
-
function openRouterApp(profile) {
|
|
31
|
-
return profile === 'research' ? attribution_1.OPENROUTER_APPS.DEEP_RESEARCH : attribution_1.OPENROUTER_APPS.SESSION_AGENT;
|
|
32
|
-
}
|
|
33
|
-
const exec_tools_1 = require("./tools/exec-tools");
|
|
34
|
-
const fs_tools_1 = require("./tools/fs-tools");
|
|
35
|
-
const CONVERSATION_FILE = '.builder/conversation.json';
|
|
36
|
-
const MAX_STEPS_PER_TURN = 80;
|
|
37
|
-
/** Rough context cap (chars ≈ tokens × 4): older turns are dropped, the first question is kept. */
|
|
38
|
-
const CONTEXT_CHAR_BUDGET = 480000;
|
|
39
|
-
exports.PERIODIC_CHECKPOINT_MS = 5 * 60000;
|
|
40
|
-
const MAX_PUBLISHED_FILE_BYTES = 512 * 1024;
|
|
41
|
-
const MAX_EXTRACTION_CHARS = 60000;
|
|
42
|
-
const CODING_SYSTEM_PROMPT = `You are a coding agent running inside an isolated session workspace VM with a persistent disk. You have direct tools to read/write files and run shell commands in the workspace, plus (if any MCP servers are configured) search_tools/get_tool_details/call_mcp_tool to use them. Work efficiently, verify with cheap commands (build, lint), report progress with report_progress, publish deliverables with publish_results, and finish each turn with a concise summary.`;
|
|
43
|
-
function approxChars(message) {
|
|
44
|
-
return JSON.stringify(message).length;
|
|
45
|
-
}
|
|
46
|
-
/** Drops the oldest turns (user message + everything up to the next user message) past the cap, keeping the first one. */
|
|
47
|
-
function limitConversation(messages, charBudget = CONTEXT_CHAR_BUDGET) {
|
|
48
|
-
var _a;
|
|
49
|
-
let total = messages.reduce((sum, message) => sum + approxChars(message), 0);
|
|
50
|
-
if (total <= charBudget)
|
|
51
|
-
return messages;
|
|
52
|
-
const result = [...messages];
|
|
53
|
-
while (total > charBudget) {
|
|
54
|
-
const userIndexes = result.map((m, i) => (m.role === 'user' ? i : -1)).filter((i) => i >= 0);
|
|
55
|
-
if (userIndexes.length < 2)
|
|
56
|
-
break;
|
|
57
|
-
const start = userIndexes[1];
|
|
58
|
-
const end = (_a = userIndexes[2]) !== null && _a !== void 0 ? _a : result.length;
|
|
59
|
-
const removed = result.splice(start, end - start);
|
|
60
|
-
total -= removed.reduce((sum, message) => sum + approxChars(message), 0);
|
|
61
|
-
}
|
|
62
|
-
return result;
|
|
63
|
-
}
|
|
64
|
-
function usageOf(part) {
|
|
65
|
-
var _a, _b, _c;
|
|
66
|
-
const usage = part.usage;
|
|
67
|
-
if (!usage)
|
|
68
|
-
return undefined;
|
|
69
|
-
const inputTokens = (_a = usage.inputTokens) !== null && _a !== void 0 ? _a : 0;
|
|
70
|
-
const outputTokens = (_b = usage.outputTokens) !== null && _b !== void 0 ? _b : 0;
|
|
71
|
-
return { inputTokens, outputTokens, totalTokens: (_c = usage.totalTokens) !== null && _c !== void 0 ? _c : inputTokens + outputTokens };
|
|
72
|
-
}
|
|
73
|
-
class SessionAgent {
|
|
74
|
-
constructor(config, link) {
|
|
75
|
-
this.config = config;
|
|
76
|
-
this.link = link;
|
|
77
|
-
this.messages = [];
|
|
78
|
-
this.usedTokens = 0;
|
|
79
|
-
this.budgetPaused = false;
|
|
80
|
-
this.queue = [];
|
|
81
|
-
this.tools = {};
|
|
82
|
-
this.systemPrompt = CODING_SYSTEM_PROMPT;
|
|
83
|
-
this.stopped = false;
|
|
84
|
-
this.checkpointTask = Promise.resolve();
|
|
85
|
-
this.lastCheckpointAt = 0;
|
|
86
|
-
this.lastActivityAt = Date.now();
|
|
87
|
-
this.budget = config.tokenBudget;
|
|
88
|
-
if (config.git)
|
|
89
|
-
this.workspaceSync = new git_sync_1.GitSync(config.git);
|
|
90
|
-
else if (config.sessionStorage)
|
|
91
|
-
this.workspaceSync = new session_storage_sync_1.SessionStorageSync(config.sessionStorage);
|
|
92
|
-
}
|
|
93
|
-
get workspaceDir() {
|
|
94
|
-
var _a, _b;
|
|
95
|
-
return (_b = (_a = this.workspaceSync) === null || _a === void 0 ? void 0 : _a.dir) !== null && _b !== void 0 ? _b : this.config.workspaceDir;
|
|
96
|
-
}
|
|
97
|
-
async start() {
|
|
98
|
-
var _a;
|
|
99
|
-
let restored = false;
|
|
100
|
-
if (this.workspaceSync) {
|
|
101
|
-
restored = await this.workspaceSync.restore();
|
|
102
|
-
}
|
|
103
|
-
await fs_1.promises.mkdir(this.workspaceDir, { recursive: true });
|
|
104
|
-
restored = (await this.loadConversation()) || restored;
|
|
105
|
-
if (this.config.profile === 'research') {
|
|
106
|
-
await Promise.all(prompt_1.RESEARCH_WORKSPACE_DIRS.map((dir) => fs_1.promises.mkdir(path_1.default.join(this.workspaceDir, dir), { recursive: true })));
|
|
107
|
-
}
|
|
108
|
-
this.tools = this.buildTools();
|
|
109
|
-
this.systemPrompt =
|
|
110
|
-
this.config.profile === 'research'
|
|
111
|
-
? (0, prompt_1.buildResearchSystemPrompt)({
|
|
112
|
-
scope: this.config.researchScope,
|
|
113
|
-
industryData: Boolean((_a = this.config.filingRamp) === null || _a === void 0 ? void 0 : _a.industryData),
|
|
114
|
-
tokenBudget: this.budget,
|
|
115
|
-
restored,
|
|
116
|
-
})
|
|
117
|
-
: CODING_SYSTEM_PROMPT;
|
|
118
|
-
this.link.onCommand((command) => this.handle(command));
|
|
119
|
-
await this.link.ready();
|
|
120
|
-
this.lastActivityAt = Date.now();
|
|
121
|
-
this.scheduleCheckpoint();
|
|
122
|
-
this.link.send({ type: 'ready', mode: 'session', profile: this.config.profile, restored });
|
|
123
|
-
console.log(`[session] ready session=${this.config.sessionId} profile=${this.config.profile} restored=${restored}`);
|
|
124
|
-
}
|
|
125
|
-
/** Lifecycle hooks (suspend / terminate) call this; it is safe to call repeatedly. */
|
|
126
|
-
checkpoint(reason, requestId) {
|
|
127
|
-
const work = async () => {
|
|
128
|
-
await this.saveConversation();
|
|
129
|
-
if (!this.workspaceSync) {
|
|
130
|
-
if (requestId)
|
|
131
|
-
throw new Error('Durable storage is not configured; workspace cannot be checkpointed');
|
|
132
|
-
return;
|
|
133
|
-
}
|
|
134
|
-
const checkpoint = await this.workspaceSync.commit(`checkpoint: ${reason}`);
|
|
135
|
-
const commit = this.workspaceSync instanceof git_sync_1.GitSync ? checkpoint : undefined;
|
|
136
|
-
this.lastCheckpointAt = Date.now();
|
|
137
|
-
this.link.send({ type: 'checkpointed', commit, requestId });
|
|
138
|
-
};
|
|
139
|
-
const next = this.checkpointTask.then(work, work);
|
|
140
|
-
this.checkpointTask = next.catch(() => undefined);
|
|
141
|
-
return next;
|
|
142
|
-
}
|
|
143
|
-
async stop() {
|
|
144
|
-
var _a;
|
|
145
|
-
this.stopped = true;
|
|
146
|
-
if (this.periodic)
|
|
147
|
-
clearTimeout(this.periodic);
|
|
148
|
-
this.periodic = undefined;
|
|
149
|
-
this.queue.length = 0;
|
|
150
|
-
(_a = this.current) === null || _a === void 0 ? void 0 : _a.abort.abort();
|
|
151
|
-
await this.turnTask;
|
|
152
|
-
await this.checkpoint('shutdown');
|
|
153
|
-
}
|
|
154
|
-
/** Idle policy never aborts a turn, and rechecks after a potentially slow storage push. */
|
|
155
|
-
async checkpointIfIdle(idleForMs, requestId) {
|
|
156
|
-
const idle = () => idleForMs > 0 && !this.stopped && !this.current && !this.queue.length
|
|
157
|
-
&& Date.now() - this.lastActivityAt >= idleForMs;
|
|
158
|
-
if (!this.workspaceSync || !idle()) {
|
|
159
|
-
this.link.send({ type: 'checkpointed', requestId, skipped: true });
|
|
160
|
-
return;
|
|
161
|
-
}
|
|
162
|
-
await this.checkpoint('idle');
|
|
163
|
-
const idleConfirmed = idle();
|
|
164
|
-
this.link.send({ type: 'checkpointed', requestId, skipped: !idleConfirmed, idleConfirmed });
|
|
165
|
-
}
|
|
166
|
-
scheduleCheckpoint(delayMs = exports.PERIODIC_CHECKPOINT_MS) {
|
|
167
|
-
if (this.stopped)
|
|
168
|
-
return;
|
|
169
|
-
// Schedule after completion so slow storage cannot build an unbounded checkpoint queue.
|
|
170
|
-
this.periodic = setTimeout(() => {
|
|
171
|
-
const remaining = exports.PERIODIC_CHECKPOINT_MS - (Date.now() - this.lastCheckpointAt);
|
|
172
|
-
if (remaining > 0) {
|
|
173
|
-
this.scheduleCheckpoint(remaining);
|
|
174
|
-
return;
|
|
175
|
-
}
|
|
176
|
-
void this.checkpoint('periodic').catch((error) => console.error('[session] periodic checkpoint failed:', error))
|
|
177
|
-
.finally(() => this.scheduleCheckpoint());
|
|
178
|
-
}, delayMs);
|
|
179
|
-
this.periodic.unref();
|
|
180
|
-
}
|
|
181
|
-
async handle(command) {
|
|
182
|
-
var _a;
|
|
183
|
-
switch (command.type) {
|
|
184
|
-
case 'message':
|
|
185
|
-
this.lastActivityAt = Date.now();
|
|
186
|
-
if (this.current) {
|
|
187
|
-
this.queue.push({ messageId: command.messageId, text: command.text });
|
|
188
|
-
return;
|
|
189
|
-
}
|
|
190
|
-
this.turnTask = this.runTurn(command.messageId, command.text);
|
|
191
|
-
return;
|
|
192
|
-
case 'abort':
|
|
193
|
-
this.queue.length = 0;
|
|
194
|
-
(_a = this.current) === null || _a === void 0 ? void 0 : _a.abort.abort();
|
|
195
|
-
return;
|
|
196
|
-
case 'checkpoint':
|
|
197
|
-
if (command.onlyIfIdleForMs !== undefined) {
|
|
198
|
-
await this.checkpointIfIdle(command.onlyIfIdleForMs, command.requestId);
|
|
199
|
-
return;
|
|
200
|
-
}
|
|
201
|
-
if (command.waitForTurn)
|
|
202
|
-
await this.turnTask;
|
|
203
|
-
await this.checkpoint('requested', command.requestId);
|
|
204
|
-
return;
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
buildTools() {
|
|
208
|
-
const tools = {
|
|
209
|
-
...(0, fs_tools_1.createFsTools)(this.workspaceDir),
|
|
210
|
-
...(0, exec_tools_1.createExecTools)(this.workspaceDir),
|
|
211
|
-
...(0, mcp_tools_1.createMcpTools)(this.config.mcpConnections),
|
|
212
|
-
report_progress: (0, ai_1.tool)({
|
|
213
|
-
description: 'Show the user a checklist of the phases of the current work and their status. Call it when a phase starts or finishes.',
|
|
214
|
-
inputSchema: zod_1.z.object({
|
|
215
|
-
steps: zod_1.z
|
|
216
|
-
.array(zod_1.z.object({
|
|
217
|
-
key: zod_1.z.string().min(1).max(60),
|
|
218
|
-
label: zod_1.z.string().min(1).max(120),
|
|
219
|
-
status: zod_1.z.enum(['pending', 'active', 'done', 'failed']),
|
|
220
|
-
detail: zod_1.z.string().max(200).optional(),
|
|
221
|
-
}))
|
|
222
|
-
.min(1)
|
|
223
|
-
.max(20),
|
|
224
|
-
}),
|
|
225
|
-
execute: async ({ steps }, { toolCallId }) => {
|
|
226
|
-
if (this.current)
|
|
227
|
-
this.link.send({ type: 'progress', messageId: this.current.messageId, toolCallId, steps: steps });
|
|
228
|
-
return { ok: true };
|
|
229
|
-
},
|
|
230
|
-
}),
|
|
231
|
-
// Same name and input contract as the platform's own clarification tool, so the chat renders
|
|
232
|
-
// the question with its standard answer form and routes the answer back through approvals.
|
|
233
|
-
request_clarification: (0, ai_1.tool)({
|
|
234
|
-
description: 'Pause and ask the user one question you cannot answer yourself: confirm a large population, correct the scope, choose between readings, approve a codebook or more spending. Give 2–6 explicit options; set allowFreeText when they may not cover the answer. The turn ends after this call; the answer arrives as the next user message.',
|
|
235
|
-
inputSchema: zod_1.z.object({
|
|
236
|
-
question: zod_1.z.string().min(5).max(8000).describe('Clear, concise question with the context the user needs to decide; markdown allowed'),
|
|
237
|
-
selectionMode: zod_1.z.enum(['single', 'multiple']).describe('Whether the user picks one option or several'),
|
|
238
|
-
options: zod_1.z
|
|
239
|
-
.array(zod_1.z.object({
|
|
240
|
-
id: zod_1.z.string().min(1).max(60).describe('Stable option identifier'),
|
|
241
|
-
label: zod_1.z.string().min(1).max(300).describe('User-visible option label'),
|
|
242
|
-
description: zod_1.z.string().max(500).optional().describe('Optional explanation'),
|
|
243
|
-
}))
|
|
244
|
-
.min(2)
|
|
245
|
-
.max(6),
|
|
246
|
-
allowFreeText: zod_1.z.boolean().default(false).describe('Whether the user may answer in their own words instead'),
|
|
247
|
-
}),
|
|
248
|
-
execute: async ({ question }, { toolCallId }) => {
|
|
249
|
-
if (this.current) {
|
|
250
|
-
this.current.askedUser = true;
|
|
251
|
-
this.link.send({ type: 'question', messageId: this.current.messageId, toolCallId, question });
|
|
252
|
-
}
|
|
253
|
-
return { asked: true };
|
|
254
|
-
},
|
|
255
|
-
}),
|
|
256
|
-
publish_results: (0, ai_1.tool)({
|
|
257
|
-
description: 'Store text files from the workspace as session artifacts the user sees in the session (findings.md, results.csv, evidence.json, notes). Call it whenever a deliverable changes. Max 512 KB per file.',
|
|
258
|
-
inputSchema: zod_1.z.object({ paths: zod_1.z.array(zod_1.z.string().min(1).max(500)).min(1).max(20) }),
|
|
259
|
-
execute: async ({ paths }) => {
|
|
260
|
-
var _a;
|
|
261
|
-
const files = [];
|
|
262
|
-
const skipped = [];
|
|
263
|
-
for (const relative of paths) {
|
|
264
|
-
const target = path_1.default.resolve(this.workspaceDir, relative);
|
|
265
|
-
if (!target.startsWith(path_1.default.resolve(this.workspaceDir) + path_1.default.sep)) {
|
|
266
|
-
skipped.push({ path: relative, reason: 'outside the workspace' });
|
|
267
|
-
continue;
|
|
268
|
-
}
|
|
269
|
-
try {
|
|
270
|
-
const buffer = await fs_1.promises.readFile(target);
|
|
271
|
-
if (buffer.byteLength > MAX_PUBLISHED_FILE_BYTES) {
|
|
272
|
-
skipped.push({ path: relative, reason: `larger than ${MAX_PUBLISHED_FILE_BYTES} bytes` });
|
|
273
|
-
continue;
|
|
274
|
-
}
|
|
275
|
-
if (buffer.includes(0)) {
|
|
276
|
-
skipped.push({ path: relative, reason: 'binary file' });
|
|
277
|
-
continue;
|
|
278
|
-
}
|
|
279
|
-
files.push({ path: relative.replace(/^\/+/, ''), content: buffer.toString('utf8') });
|
|
280
|
-
}
|
|
281
|
-
catch (error) {
|
|
282
|
-
skipped.push({ path: relative, reason: error.message });
|
|
283
|
-
}
|
|
284
|
-
}
|
|
285
|
-
if (files.length)
|
|
286
|
-
this.link.send({ type: 'files', messageId: (_a = this.current) === null || _a === void 0 ? void 0 : _a.messageId, files });
|
|
287
|
-
return { published: files.map((file) => file.path), skipped };
|
|
288
|
-
},
|
|
289
|
-
}),
|
|
290
|
-
};
|
|
291
|
-
if (this.config.profile === 'research') {
|
|
292
|
-
if (this.config.filingRamp) {
|
|
293
|
-
const client = new filingramp_client_1.FilingRampClient(this.config.filingRamp);
|
|
294
|
-
Object.assign(tools, (0, filingramp_tools_1.createFilingRampTools)({ client, workspaceDir: this.workspaceDir, scope: this.config.researchScope }));
|
|
295
|
-
}
|
|
296
|
-
else {
|
|
297
|
-
console.warn('[session] research profile without FilingRamp credentials — filing tools disabled');
|
|
298
|
-
}
|
|
299
|
-
tools.extract_from_texts = this.extractionTool();
|
|
300
|
-
}
|
|
301
|
-
return tools;
|
|
302
|
-
}
|
|
303
|
-
/** Bulk extraction on the cheaper model: one call per file, structured rows appended to a JSONL file. */
|
|
304
|
-
extractionTool() {
|
|
305
|
-
return (0, ai_1.tool)({
|
|
306
|
-
description: 'Extract the same facts from many extracted-text files with a cheaper model, one file at a time, appending one JSON row per file to outputPath (JSONL). Use after search_documents/download_attachment saved texts under data/text/. Each row has the requested fields plus `quote` (the supporting span) and `source`.',
|
|
307
|
-
inputSchema: zod_1.z.object({
|
|
308
|
-
paths: zod_1.z.array(zod_1.z.string().min(1).max(500)).min(1).max(50),
|
|
309
|
-
question: zod_1.z.string().min(1).max(2000).describe('What to look for, precisely'),
|
|
310
|
-
fields: zod_1.z.array(zod_1.z.string().min(1).max(60)).min(1).max(15).describe('Field names each row must contain'),
|
|
311
|
-
outputPath: zod_1.z.string().min(1).max(300).describe('e.g. data/extracted/water-valve.jsonl'),
|
|
312
|
-
}),
|
|
313
|
-
execute: async ({ paths, question, fields, outputPath }, { toolCallId }) => {
|
|
314
|
-
var _a, _b;
|
|
315
|
-
const model = (0, model_1.resolveLanguageModel)(this.config.provider, this.config.extractionModel, openRouterApp(this.config.profile));
|
|
316
|
-
const output = path_1.default.resolve(this.workspaceDir, outputPath);
|
|
317
|
-
await fs_1.promises.mkdir(path_1.default.dirname(output), { recursive: true });
|
|
318
|
-
let rows = 0;
|
|
319
|
-
const failures = [];
|
|
320
|
-
const report = (index) => {
|
|
321
|
-
if (!this.current)
|
|
322
|
-
return;
|
|
323
|
-
this.link.send({
|
|
324
|
-
type: 'progress',
|
|
325
|
-
messageId: this.current.messageId,
|
|
326
|
-
toolCallId,
|
|
327
|
-
steps: [
|
|
328
|
-
{ key: 'extract', label: `Extracting facts`, status: index < paths.length ? 'active' : 'done', detail: `${index}/${paths.length} documents` },
|
|
329
|
-
],
|
|
330
|
-
});
|
|
331
|
-
};
|
|
332
|
-
report(0);
|
|
333
|
-
for (const [index, relative] of paths.entries()) {
|
|
334
|
-
if ((_a = this.current) === null || _a === void 0 ? void 0 : _a.abort.signal.aborted)
|
|
335
|
-
break;
|
|
336
|
-
if (index > 0 && index % 3 === 0)
|
|
337
|
-
report(index);
|
|
338
|
-
try {
|
|
339
|
-
const text = (await fs_1.promises.readFile(path_1.default.resolve(this.workspaceDir, relative), 'utf8')).slice(0, MAX_EXTRACTION_CHARS);
|
|
340
|
-
const result = await (0, ai_1.generateText)({
|
|
341
|
-
model,
|
|
342
|
-
abortSignal: (_b = this.current) === null || _b === void 0 ? void 0 : _b.abort.signal,
|
|
343
|
-
system: 'You extract facts from one insurance filing document. Answer with a single JSON object only — no prose. Use null for a field the document does not state. Always include "quote": the exact supporting text (max 300 characters) or null, and "found": true|false.',
|
|
344
|
-
prompt: `Question: ${question}\nFields: ${fields.join(', ')}\n\nDocument (${relative}):\n${text}`,
|
|
345
|
-
});
|
|
346
|
-
const usage = usageOf(result);
|
|
347
|
-
if (usage)
|
|
348
|
-
this.recordUsage(usage, this.config.extractionModel);
|
|
349
|
-
const match = result.text.match(/\{[\s\S]*\}/);
|
|
350
|
-
const parsed = match ? JSON.parse(match[0]) : { found: false };
|
|
351
|
-
await fs_1.promises.appendFile(output, `${JSON.stringify({ source: relative, ...parsed })}\n`);
|
|
352
|
-
rows += 1;
|
|
353
|
-
}
|
|
354
|
-
catch (error) {
|
|
355
|
-
failures.push({ path: relative, reason: error.message });
|
|
356
|
-
}
|
|
357
|
-
}
|
|
358
|
-
report(paths.length);
|
|
359
|
-
return { outputPath, rows, failures, model: this.config.extractionModel };
|
|
360
|
-
},
|
|
361
|
-
});
|
|
362
|
-
}
|
|
363
|
-
recordUsage(usage, model) {
|
|
364
|
-
this.usedTokens += usage.totalTokens;
|
|
365
|
-
if (this.current)
|
|
366
|
-
this.link.send({ type: 'usage', messageId: this.current.messageId, usage: { ...usage, model } });
|
|
367
|
-
}
|
|
368
|
-
budgetExceeded() {
|
|
369
|
-
return this.budget !== undefined && this.usedTokens >= this.budget;
|
|
370
|
-
}
|
|
371
|
-
async runTurn(messageId, text) {
|
|
372
|
-
var _a, _b, _c;
|
|
373
|
-
const turn = { messageId, abort: new AbortController(), askedUser: false };
|
|
374
|
-
this.current = turn;
|
|
375
|
-
this.link.send({ type: 'turn_start', messageId });
|
|
376
|
-
// A paused-for-budget session resumes when the user says so: extend by the original budget.
|
|
377
|
-
if (this.budgetPaused && this.config.tokenBudget) {
|
|
378
|
-
if (/^(continue|yes|go on|proceed)/i.test(text.trim())) {
|
|
379
|
-
this.budget = this.usedTokens + this.config.tokenBudget;
|
|
380
|
-
this.budgetPaused = false;
|
|
381
|
-
}
|
|
382
|
-
else {
|
|
383
|
-
this.link.send({ type: 'done', messageId, summary: 'The token budget is used up. Reply "continue" to extend it, or stop the session.' });
|
|
384
|
-
this.current = undefined;
|
|
385
|
-
return;
|
|
386
|
-
}
|
|
387
|
-
}
|
|
388
|
-
this.messages.push({ role: 'user', content: text });
|
|
389
|
-
let partialText = '';
|
|
390
|
-
let completed = false;
|
|
391
|
-
try {
|
|
392
|
-
const model = (0, model_1.resolveLanguageModel)(this.config.provider, this.config.model, openRouterApp(this.config.profile));
|
|
393
|
-
const result = (0, ai_1.streamText)({
|
|
394
|
-
model,
|
|
395
|
-
system: this.systemPrompt,
|
|
396
|
-
messages: limitConversation(this.messages),
|
|
397
|
-
tools: this.tools,
|
|
398
|
-
abortSignal: turn.abort.signal,
|
|
399
|
-
stopWhen: [(0, ai_1.stepCountIs)(MAX_STEPS_PER_TURN), () => turn.askedUser || this.budgetExceeded()],
|
|
400
|
-
});
|
|
401
|
-
for await (const part of result.fullStream) {
|
|
402
|
-
switch (part.type) {
|
|
403
|
-
case 'text-delta':
|
|
404
|
-
partialText += part.text;
|
|
405
|
-
this.link.send({ type: 'text_delta', messageId, text: part.text });
|
|
406
|
-
break;
|
|
407
|
-
case 'reasoning-delta':
|
|
408
|
-
this.link.send({ type: 'reasoning_delta', messageId, text: part.text });
|
|
409
|
-
break;
|
|
410
|
-
case 'tool-call':
|
|
411
|
-
this.link.send({ type: 'tool_call_start', messageId, toolCallId: part.toolCallId, toolName: part.toolName, input: part.input });
|
|
412
|
-
break;
|
|
413
|
-
case 'tool-result':
|
|
414
|
-
this.link.send({ type: 'tool_call_result', messageId, toolCallId: part.toolCallId, output: part.output });
|
|
415
|
-
break;
|
|
416
|
-
case 'tool-error':
|
|
417
|
-
this.link.send({
|
|
418
|
-
type: 'tool_call_result',
|
|
419
|
-
messageId,
|
|
420
|
-
toolCallId: part.toolCallId,
|
|
421
|
-
error: part.error instanceof Error ? part.error.message : String(part.error),
|
|
422
|
-
});
|
|
423
|
-
break;
|
|
424
|
-
case 'finish-step': {
|
|
425
|
-
const usage = usageOf(part);
|
|
426
|
-
if (usage)
|
|
427
|
-
this.recordUsage(usage, (_b = (_a = part.response) === null || _a === void 0 ? void 0 : _a.modelId) !== null && _b !== void 0 ? _b : this.config.model);
|
|
428
|
-
break;
|
|
429
|
-
}
|
|
430
|
-
case 'error':
|
|
431
|
-
throw part.error instanceof Error ? part.error : new Error(String(part.error));
|
|
432
|
-
default:
|
|
433
|
-
break;
|
|
434
|
-
}
|
|
435
|
-
}
|
|
436
|
-
const response = await result.response;
|
|
437
|
-
this.messages.push(...response.messages);
|
|
438
|
-
completed = true;
|
|
439
|
-
if (this.budgetExceeded() && !turn.askedUser) {
|
|
440
|
-
this.budgetPaused = true;
|
|
441
|
-
const notice = `${partialText ? '\n\n' : ''}I have used ${this.usedTokens.toLocaleString()} tokens, which reaches this session's budget. Reply "continue" to extend it by ${(_c = this.config.tokenBudget) === null || _c === void 0 ? void 0 : _c.toLocaleString()} tokens, or tell me to wrap up with what I have.`;
|
|
442
|
-
partialText += notice;
|
|
443
|
-
this.link.send({ type: 'text_delta', messageId, text: notice });
|
|
444
|
-
}
|
|
445
|
-
const summary = (await result.text) || partialText;
|
|
446
|
-
await this.checkpoint('turn finished');
|
|
447
|
-
this.link.send({ type: 'done', messageId, summary });
|
|
448
|
-
}
|
|
449
|
-
catch (error) {
|
|
450
|
-
const aborted = turn.abort.signal.aborted;
|
|
451
|
-
if (!completed) {
|
|
452
|
-
// Keep the conversation consistent: a stopped turn leaves text, never a dangling tool call.
|
|
453
|
-
this.messages.push({ role: 'assistant', content: partialText || (aborted ? '(stopped by the user)' : '(turn failed)') });
|
|
454
|
-
}
|
|
455
|
-
if (aborted) {
|
|
456
|
-
this.link.send({ type: 'done', messageId, summary: partialText ? `${partialText}\n\n_Stopped._` : 'Stopped.' });
|
|
457
|
-
}
|
|
458
|
-
else {
|
|
459
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
460
|
-
console.error('[session] turn failed:', message);
|
|
461
|
-
this.link.send({ type: 'error', messageId, message });
|
|
462
|
-
}
|
|
463
|
-
}
|
|
464
|
-
finally {
|
|
465
|
-
if (!completed) {
|
|
466
|
-
await this.checkpoint('turn interrupted').catch((error) => console.error('[session] checkpoint failed:', error));
|
|
467
|
-
}
|
|
468
|
-
this.current = undefined;
|
|
469
|
-
this.lastActivityAt = Date.now();
|
|
470
|
-
const next = this.queue.shift();
|
|
471
|
-
if (next && !this.stopped)
|
|
472
|
-
this.turnTask = this.runTurn(next.messageId, next.text);
|
|
473
|
-
}
|
|
474
|
-
}
|
|
475
|
-
conversationPath() {
|
|
476
|
-
return path_1.default.join(this.workspaceDir, CONVERSATION_FILE);
|
|
477
|
-
}
|
|
478
|
-
async loadConversation() {
|
|
479
|
-
var _a, _b, _c;
|
|
480
|
-
try {
|
|
481
|
-
const raw = await fs_1.promises.readFile(this.conversationPath(), 'utf8');
|
|
482
|
-
const parsed = JSON.parse(raw);
|
|
483
|
-
if (parsed.version === 1 && Array.isArray(parsed.messages)) {
|
|
484
|
-
this.messages = parsed.messages;
|
|
485
|
-
this.usedTokens = (_a = parsed.usedTokens) !== null && _a !== void 0 ? _a : 0;
|
|
486
|
-
this.budget = (_b = parsed.budget) !== null && _b !== void 0 ? _b : this.budget;
|
|
487
|
-
this.budgetPaused = (_c = parsed.budgetPaused) !== null && _c !== void 0 ? _c : this.budgetExceeded();
|
|
488
|
-
return this.messages.length > 0;
|
|
489
|
-
}
|
|
490
|
-
throw new Error('Invalid saved session conversation');
|
|
491
|
-
}
|
|
492
|
-
catch (error) {
|
|
493
|
-
if (error.code !== 'ENOENT')
|
|
494
|
-
throw error;
|
|
495
|
-
}
|
|
496
|
-
return false;
|
|
497
|
-
}
|
|
498
|
-
async saveConversation() {
|
|
499
|
-
const target = this.conversationPath();
|
|
500
|
-
await fs_1.promises.mkdir(path_1.default.dirname(target), { recursive: true });
|
|
501
|
-
const payload = { version: 1, messages: this.messages, usedTokens: this.usedTokens, budget: this.budget, budgetPaused: this.budgetPaused };
|
|
502
|
-
await fs_1.promises.writeFile(`${target}.tmp`, JSON.stringify(payload));
|
|
503
|
-
await fs_1.promises.rename(`${target}.tmp`, target);
|
|
504
|
-
}
|
|
505
|
-
}
|
|
506
|
-
exports.SessionAgent = SessionAgent;
|
|
507
|
-
async function runSessionAgent(config, link) {
|
|
508
|
-
const agent = new SessionAgent(config, link);
|
|
509
|
-
await agent.start();
|
|
510
|
-
return agent;
|
|
511
|
-
}
|
|
512
|
-
//# sourceMappingURL=session.js.map
|
package/dist/session.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":";;;;;;AA4DA,8CAaC;AAkcD,0CAIC;AA/gBD,0FAA0F;AAC1F,6FAA6F;AAC7F,6FAA6F;AAC7F,4FAA4F;AAC5F,EAAE;AACF,8FAA8F;AAC9F,uFAAuF;AACvF,gGAAgG;AAChG,2BAAmC;AACnC,gDAAuB;AACvB,2BAA8F;AAC9F,6BAAuB;AAEvB,yCAAoC;AACpC,iEAA2D;AAE3D,+CAAgD;AAChD,mCAA8C;AAC9C,+CAAmE;AAEnE,oEAA+D;AAC/D,kEAAmE;AACnE,8CAAsF;AAEtF,qFAAqF;AACrF,SAAS,aAAa,CAAC,OAA2B;IAChD,OAAO,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,6BAAe,CAAC,aAAa,CAAC,CAAC,CAAC,6BAAe,CAAC,aAAa,CAAA;AAC/F,CAAC;AACD,mDAAoD;AACpD,+CAAgD;AAEhD,MAAM,iBAAiB,GAAG,4BAA4B,CAAA;AACtD,MAAM,kBAAkB,GAAG,EAAE,CAAA;AAC7B,mGAAmG;AACnG,MAAM,mBAAmB,GAAG,MAAO,CAAA;AACtB,QAAA,sBAAsB,GAAG,CAAC,GAAG,KAAM,CAAA;AAChD,MAAM,wBAAwB,GAAG,GAAG,GAAG,IAAI,CAAA;AAC3C,MAAM,oBAAoB,GAAG,KAAM,CAAA;AAEnC,MAAM,oBAAoB,GAAG,+cAA+c,CAAA;AAgB5e,SAAS,WAAW,CAAC,OAAqB;IACxC,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,MAAM,CAAA;AACvC,CAAC;AAED,0HAA0H;AAC1H,SAAgB,iBAAiB,CAAC,QAAwB,EAAE,UAAU,GAAG,mBAAmB;;IAC1F,IAAI,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,GAAG,GAAG,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAA;IAC5E,IAAI,KAAK,IAAI,UAAU;QAAE,OAAO,QAAQ,CAAA;IACxC,MAAM,MAAM,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAA;IAC5B,OAAO,KAAK,GAAG,UAAU,EAAE,CAAC;QAC1B,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;QAC5F,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC;YAAE,MAAK;QACjC,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,CAAA;QAC5B,MAAM,GAAG,GAAG,MAAA,WAAW,CAAC,CAAC,CAAC,mCAAI,MAAM,CAAC,MAAM,CAAA;QAC3C,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,CAAC,CAAA;QACjD,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,GAAG,GAAG,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAA;IAC1E,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED,SAAS,OAAO,CAAC,IAAa;;IAC5B,MAAM,KAAK,GAAI,IAA0F,CAAC,KAAK,CAAA;IAC/G,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAA;IAC5B,MAAM,WAAW,GAAG,MAAA,KAAK,CAAC,WAAW,mCAAI,CAAC,CAAA;IAC1C,MAAM,YAAY,GAAG,MAAA,KAAK,CAAC,YAAY,mCAAI,CAAC,CAAA;IAC5C,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,MAAA,KAAK,CAAC,WAAW,mCAAI,WAAW,GAAG,YAAY,EAAE,CAAA;AACpG,CAAC;AAED,MAAa,YAAY;IAiBvB,YACmB,MAA0B,EAC1B,IAAiB;QADjB,WAAM,GAAN,MAAM,CAAoB;QAC1B,SAAI,GAAJ,IAAI,CAAa;QAlB5B,aAAQ,GAAmB,EAAE,CAAA;QAC7B,eAAU,GAAG,CAAC,CAAA;QAEd,iBAAY,GAAG,KAAK,CAAA;QAEX,UAAK,GAA+C,EAAE,CAAA;QAE/D,UAAK,GAAyB,EAAE,CAAA;QAChC,iBAAY,GAAG,oBAAoB,CAAA;QAEnC,YAAO,GAAG,KAAK,CAAA;QAEf,mBAAc,GAAkB,OAAO,CAAC,OAAO,EAAE,CAAA;QACjD,qBAAgB,GAAG,CAAC,CAAA;QACpB,mBAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QAMjC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,WAAW,CAAA;QAChC,IAAI,MAAM,CAAC,GAAG;YAAE,IAAI,CAAC,aAAa,GAAG,IAAI,kBAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;aACvD,IAAI,MAAM,CAAC,cAAc;YAAE,IAAI,CAAC,aAAa,GAAG,IAAI,yCAAkB,CAAC,MAAM,CAAC,cAAc,CAAC,CAAA;IACpG,CAAC;IAED,IAAY,YAAY;;QACtB,OAAO,MAAA,MAAA,IAAI,CAAC,aAAa,0CAAE,GAAG,mCAAI,IAAI,CAAC,MAAM,CAAC,YAAY,CAAA;IAC5D,CAAC;IAED,KAAK,CAAC,KAAK;;QACT,IAAI,QAAQ,GAAG,KAAK,CAAA;QACpB,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAA;QAC/C,CAAC;QACD,MAAM,aAAE,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QACtD,QAAQ,GAAG,CAAC,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC,IAAI,QAAQ,CAAA;QACtD,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;YACvC,MAAM,OAAO,CAAC,GAAG,CAAC,gCAAuB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,aAAE,CAAC,KAAK,CAAC,cAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;QAC3H,CAAC;QACD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,CAAA;QAC9B,IAAI,CAAC,YAAY;YACf,IAAI,CAAC,MAAM,CAAC,OAAO,KAAK,UAAU;gBAChC,CAAC,CAAC,IAAA,kCAAyB,EAAC;oBACxB,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa;oBAChC,YAAY,EAAE,OAAO,CAAC,MAAA,IAAI,CAAC,MAAM,CAAC,UAAU,0CAAE,YAAY,CAAC;oBAC3D,WAAW,EAAE,IAAI,CAAC,MAAM;oBACxB,QAAQ;iBACT,CAAC;gBACJ,CAAC,CAAC,oBAAoB,CAAA;QAE1B,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAA;QACtD,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAA;QACvB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QAChC,IAAI,CAAC,kBAAkB,EAAE,CAAA;QACzB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAA;QAC1F,OAAO,CAAC,GAAG,CAAC,2BAA2B,IAAI,CAAC,MAAM,CAAC,SAAS,YAAY,IAAI,CAAC,MAAM,CAAC,OAAO,aAAa,QAAQ,EAAE,CAAC,CAAA;IACrH,CAAC;IAED,sFAAsF;IACtF,UAAU,CAAC,MAAc,EAAE,SAAkB;QAC3C,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE;YACtB,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAA;YAC7B,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;gBACxB,IAAI,SAAS;oBAAE,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAA;gBACrG,OAAM;YACR,CAAC;YACD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,eAAe,MAAM,EAAE,CAAC,CAAA;YAC3E,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,YAAY,kBAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAA;YAC7E,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;YAClC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAA;QAC7D,CAAC,CAAA;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QACjD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;QACjD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK,CAAC,IAAI;;QACR,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;QACnB,IAAI,IAAI,CAAC,QAAQ;YAAE,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC9C,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAA;QACzB,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAA;QACrB,MAAA,IAAI,CAAC,OAAO,0CAAE,KAAK,CAAC,KAAK,EAAE,CAAA;QAC3B,MAAM,IAAI,CAAC,QAAQ,CAAA;QACnB,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAA;IACnC,CAAC;IAED,2FAA2F;IAC3F,KAAK,CAAC,gBAAgB,CAAC,SAAiB,EAAE,SAAkB;QAC1D,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM;eACnF,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,cAAc,IAAI,SAAS,CAAA;QAClD,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YACnC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;YAClE,OAAM;QACR,CAAC;QACD,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;QAC7B,MAAM,aAAa,GAAG,IAAI,EAAE,CAAA;QAC5B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,aAAa,EAAE,aAAa,EAAE,CAAC,CAAA;IAC7F,CAAC;IAEO,kBAAkB,CAAC,OAAO,GAAG,8BAAsB;QACzD,IAAI,IAAI,CAAC,OAAO;YAAE,OAAM;QACxB,wFAAwF;QACxF,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,GAAG,EAAE;YAC9B,MAAM,SAAS,GAAG,8BAAsB,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAA;YAC/E,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;gBAClB,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAA;gBAClC,OAAM;YACR,CAAC;YACD,KAAK,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,uCAAuC,EAAE,KAAK,CAAC,CAAC;iBAC7G,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAA;QAC7C,CAAC,EAAE,OAAO,CAAC,CAAA;QACX,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAA;IACvB,CAAC;IAEO,KAAK,CAAC,MAAM,CAAC,OAA4B;;QAC/C,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;YACrB,KAAK,SAAS;gBACZ,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;gBAChC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;oBACjB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;oBACrE,OAAM;gBACR,CAAC;gBACD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;gBAC7D,OAAM;YACR,KAAK,OAAO;gBACV,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAA;gBACrB,MAAA,IAAI,CAAC,OAAO,0CAAE,KAAK,CAAC,KAAK,EAAE,CAAA;gBAC3B,OAAM;YACR,KAAK,YAAY;gBACf,IAAI,OAAO,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;oBAC1C,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,eAAe,EAAE,OAAO,CAAC,SAAS,CAAC,CAAA;oBACvE,OAAM;gBACR,CAAC;gBACD,IAAI,OAAO,CAAC,WAAW;oBAAE,MAAM,IAAI,CAAC,QAAQ,CAAA;gBAC5C,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,SAAS,CAAC,CAAA;gBACrD,OAAM;QACV,CAAC;IACH,CAAC;IAEO,UAAU;QAChB,MAAM,KAAK,GAAyB;YAClC,GAAG,IAAA,wBAAa,EAAC,IAAI,CAAC,YAAY,CAAC;YACnC,GAAG,IAAA,4BAAe,EAAC,IAAI,CAAC,YAAY,CAAC;YACrC,GAAG,IAAA,0BAAc,EAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC;YAC7C,eAAe,EAAE,IAAA,SAAI,EAAC;gBACpB,WAAW,EAAE,wHAAwH;gBACrI,WAAW,EAAE,OAAC,CAAC,MAAM,CAAC;oBACpB,KAAK,EAAE,OAAC;yBACL,KAAK,CACJ,OAAC,CAAC,MAAM,CAAC;wBACP,GAAG,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;wBAC9B,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;wBACjC,MAAM,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;wBACvD,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;qBACvC,CAAC,CACH;yBACA,GAAG,CAAC,CAAC,CAAC;yBACN,GAAG,CAAC,EAAE,CAAC;iBACX,CAAC;gBACF,OAAO,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE;oBAC3C,IAAI,IAAI,CAAC,OAAO;wBAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,KAA4B,EAAE,CAAC,CAAA;oBAC1I,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAA;gBACrB,CAAC;aACF,CAAC;YACF,6FAA6F;YAC7F,2FAA2F;YAC3F,qBAAqB,EAAE,IAAA,SAAI,EAAC;gBAC1B,WAAW,EACT,2UAA2U;gBAC7U,WAAW,EAAE,OAAC,CAAC,MAAM,CAAC;oBACpB,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,qFAAqF,CAAC;oBACrI,aAAa,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,8CAA8C,CAAC;oBACtG,OAAO,EAAE,OAAC;yBACP,KAAK,CACJ,OAAC,CAAC,MAAM,CAAC;wBACP,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,0BAA0B,CAAC;wBAClE,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,2BAA2B,CAAC;wBACvE,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;qBAC7E,CAAC,CACH;yBACA,GAAG,CAAC,CAAC,CAAC;yBACN,GAAG,CAAC,CAAC,CAAC;oBACT,aAAa,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,wDAAwD,CAAC;iBAC7G,CAAC;gBACF,OAAO,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE;oBAC9C,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;wBACjB,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAA;wBAC7B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAA;oBAC/F,CAAC;oBACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAA;gBACxB,CAAC;aACF,CAAC;YACF,eAAe,EAAE,IAAA,SAAI,EAAC;gBACpB,WAAW,EACT,sMAAsM;gBACxM,WAAW,EAAE,OAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;gBACpF,OAAO,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;;oBAC3B,MAAM,KAAK,GAAuB,EAAE,CAAA;oBACpC,MAAM,OAAO,GAA4C,EAAE,CAAA;oBAC3D,KAAK,MAAM,QAAQ,IAAI,KAAK,EAAE,CAAC;wBAC7B,MAAM,MAAM,GAAG,cAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAA;wBACxD,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,cAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,cAAI,CAAC,GAAG,CAAC,EAAE,CAAC;4BACnE,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,uBAAuB,EAAE,CAAC,CAAA;4BACjE,SAAQ;wBACV,CAAC;wBACD,IAAI,CAAC;4BACH,MAAM,MAAM,GAAG,MAAM,aAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;4BACxC,IAAI,MAAM,CAAC,UAAU,GAAG,wBAAwB,EAAE,CAAC;gCACjD,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,eAAe,wBAAwB,QAAQ,EAAE,CAAC,CAAA;gCACzF,SAAQ;4BACV,CAAC;4BACD,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;gCACvB,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAA;gCACvD,SAAQ;4BACV,CAAC;4BACD,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;wBACtF,CAAC;wBAAC,OAAO,KAAK,EAAE,CAAC;4BACf,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAG,KAAe,CAAC,OAAO,EAAE,CAAC,CAAA;wBACpE,CAAC;oBACH,CAAC;oBACD,IAAI,KAAK,CAAC,MAAM;wBAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,MAAA,IAAI,CAAC,OAAO,0CAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAA;oBAC9F,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAA;gBAC/D,CAAC;aACF,CAAC;SACH,CAAA;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;YACvC,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;gBAC3B,MAAM,MAAM,GAAG,IAAI,oCAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;gBAC3D,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,IAAA,wCAAqB,EAAC,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,CAAA;YAC5H,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,IAAI,CAAC,mFAAmF,CAAC,CAAA;YACnG,CAAC;YACD,KAAK,CAAC,kBAAkB,GAAG,IAAI,CAAC,cAAc,EAAE,CAAA;QAClD,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC;IAED,yGAAyG;IACjG,cAAc;QACpB,OAAO,IAAA,SAAI,EAAC;YACV,WAAW,EACT,wTAAwT;YAC1T,WAAW,EAAE,OAAC,CAAC,MAAM,CAAC;gBACpB,KAAK,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;gBACzD,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,6BAA6B,CAAC;gBAC7E,MAAM,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,mCAAmC,CAAC;gBACvG,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,uCAAuC,CAAC;aACzF,CAAC;YACF,OAAO,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE;;gBACzE,MAAM,KAAK,GAAG,IAAA,4BAAoB,EAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAA;gBACzH,MAAM,MAAM,GAAG,cAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,CAAA;gBAC1D,MAAM,aAAE,CAAC,KAAK,CAAC,cAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;gBACzD,IAAI,IAAI,GAAG,CAAC,CAAA;gBACZ,MAAM,QAAQ,GAA4C,EAAE,CAAA;gBAC5D,MAAM,MAAM,GAAG,CAAC,KAAa,EAAE,EAAE;oBAC/B,IAAI,CAAC,IAAI,CAAC,OAAO;wBAAE,OAAM;oBACzB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;wBACb,IAAI,EAAE,UAAU;wBAChB,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS;wBACjC,UAAU;wBACV,KAAK,EAAE;4BACL,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,kBAAkB,EAAE,MAAM,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,IAAI,KAAK,CAAC,MAAM,YAAY,EAAE;yBAC9I;qBACF,CAAC,CAAA;gBACJ,CAAC,CAAA;gBACD,MAAM,CAAC,CAAC,CAAC,CAAA;gBACT,KAAK,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;oBAChD,IAAI,MAAA,IAAI,CAAC,OAAO,0CAAE,KAAK,CAAC,MAAM,CAAC,OAAO;wBAAE,MAAK;oBAC7C,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,KAAK,CAAC;wBAAE,MAAM,CAAC,KAAK,CAAC,CAAA;oBAC/C,IAAI,CAAC;wBACH,MAAM,IAAI,GAAG,CAAC,MAAM,aAAE,CAAC,QAAQ,CAAC,cAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAA;wBAClH,MAAM,MAAM,GAAG,MAAM,IAAA,iBAAY,EAAC;4BAChC,KAAK;4BACL,WAAW,EAAE,MAAA,IAAI,CAAC,OAAO,0CAAE,KAAK,CAAC,MAAM;4BACvC,MAAM,EACJ,oQAAoQ;4BACtQ,MAAM,EAAE,aAAa,QAAQ,aAAa,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,QAAQ,OAAO,IAAI,EAAE;yBAClG,CAAC,CAAA;wBACF,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;wBAC7B,IAAI,KAAK;4BAAE,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAA;wBAC/D,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA;wBAC9C,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAA6B,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAA;wBAC3F,MAAM,aAAE,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,CAAA;wBACnF,IAAI,IAAI,CAAC,CAAA;oBACX,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAG,KAAe,CAAC,OAAO,EAAE,CAAC,CAAA;oBACrE,CAAC;gBACH,CAAC;gBACD,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;gBACpB,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAA;YAC3E,CAAC;SACF,CAAC,CAAA;IACJ,CAAC;IAEO,WAAW,CAAC,KAAyE,EAAE,KAAa;QAC1G,IAAI,CAAC,UAAU,IAAI,KAAK,CAAC,WAAW,CAAA;QACpC,IAAI,IAAI,CAAC,OAAO;YAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAA;IACpH,CAAC;IAEO,cAAc;QACpB,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,MAAM,CAAA;IACpE,CAAC;IAEO,KAAK,CAAC,OAAO,CAAC,SAAiB,EAAE,IAAY;;QACnD,MAAM,IAAI,GAAe,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,eAAe,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAA;QACtF,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;QACnB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC,CAAA;QAEjD,4FAA4F;QAC5F,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YACjD,IAAI,gCAAgC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;gBACvD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAA;gBACvD,IAAI,CAAC,YAAY,GAAG,KAAK,CAAA;YAC3B,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,kFAAkF,EAAE,CAAC,CAAA;gBACxI,IAAI,CAAC,OAAO,GAAG,SAAS,CAAA;gBACxB,OAAM;YACR,CAAC;QACH,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;QACnD,IAAI,WAAW,GAAG,EAAE,CAAA;QACpB,IAAI,SAAS,GAAG,KAAK,CAAA;QAErB,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,IAAA,4BAAoB,EAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAA;YAC/G,MAAM,MAAM,GAAG,IAAA,eAAU,EAAC;gBACxB,KAAK;gBACL,MAAM,EAAE,IAAI,CAAC,YAAY;gBACzB,QAAQ,EAAE,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC;gBAC1C,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;gBAC9B,QAAQ,EAAE,CAAC,IAAA,gBAAW,EAAC,kBAAkB,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;aAC3F,CAAC,CAAA;YAEF,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;gBAC3C,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;oBAClB,KAAK,YAAY;wBACf,WAAW,IAAI,IAAI,CAAC,IAAI,CAAA;wBACxB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;wBAClE,MAAK;oBACP,KAAK,iBAAiB;wBACpB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;wBACvE,MAAK;oBACP,KAAK,WAAW;wBACd,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA;wBAC/H,MAAK;oBACP,KAAK,aAAa;wBAChB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;wBACzG,MAAK;oBACP,KAAK,YAAY;wBACf,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;4BACb,IAAI,EAAE,kBAAkB;4BACxB,SAAS;4BACT,UAAU,EAAE,IAAI,CAAC,UAAU;4BAC3B,KAAK,EAAE,IAAI,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;yBAC7E,CAAC,CAAA;wBACF,MAAK;oBACP,KAAK,aAAa,CAAC,CAAC,CAAC;wBACnB,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;wBAC3B,IAAI,KAAK;4BAAE,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,MAAA,MAAC,IAA4C,CAAC,QAAQ,0CAAE,OAAO,mCAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;wBACxH,MAAK;oBACP,CAAC;oBACD,KAAK,OAAO;wBACV,MAAM,IAAI,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;oBAChF;wBACE,MAAK;gBACT,CAAC;YACH,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAA;YACtC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAA;YACxC,SAAS,GAAG,IAAI,CAAA;YAEhB,IAAI,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;gBAC7C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAA;gBACxB,MAAM,MAAM,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,eAAe,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,kFAAkF,MAAA,IAAI,CAAC,MAAM,CAAC,WAAW,0CAAE,cAAc,EAAE,kDAAkD,CAAA;gBACvQ,WAAW,IAAI,MAAM,CAAA;gBACrB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;YACjE,CAAC;YACD,MAAM,OAAO,GAAG,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,WAAW,CAAA;YAClD,MAAM,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,CAAA;YACtC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAA;QACtD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAA;YACzC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,4FAA4F;gBAC5F,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,eAAe,CAAC,EAAE,CAAC,CAAA;YAC1H,CAAC;YACD,IAAI,OAAO,EAAE,CAAC;gBACZ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,gBAAgB,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAA;YACjH,CAAC;iBAAM,CAAC;gBACN,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;gBACtE,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,OAAO,CAAC,CAAA;gBAChD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAA;YACvD,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,MAAM,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC,CAAA;YAClH,CAAC;YACD,IAAI,CAAC,OAAO,GAAG,SAAS,CAAA;YACxB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;YAChC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;YAC/B,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO;gBAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;QACpF,CAAC;IACH,CAAC;IAEO,gBAAgB;QACtB,OAAO,cAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,iBAAiB,CAAC,CAAA;IACxD,CAAC;IAEO,KAAK,CAAC,gBAAgB;;QAC5B,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,aAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,MAAM,CAAC,CAAA;YAC9D,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAA0B,CAAA;YACvD,IAAI,MAAM,CAAC,OAAO,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC3D,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAA;gBAC/B,IAAI,CAAC,UAAU,GAAG,MAAA,MAAM,CAAC,UAAU,mCAAI,CAAC,CAAA;gBACxC,IAAI,CAAC,MAAM,GAAG,MAAA,MAAM,CAAC,MAAM,mCAAI,IAAI,CAAC,MAAM,CAAA;gBAC1C,IAAI,CAAC,YAAY,GAAG,MAAA,MAAM,CAAC,YAAY,mCAAI,IAAI,CAAC,cAAc,EAAE,CAAA;gBAChE,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAA;YACjC,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAA;QACvD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;gBAAE,MAAM,KAAK,CAAA;QACrE,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC;IAEO,KAAK,CAAC,gBAAgB;QAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAA;QACtC,MAAM,aAAE,CAAC,KAAK,CAAC,cAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QACzD,MAAM,OAAO,GAA0B,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,CAAA;QACjK,MAAM,aAAE,CAAC,SAAS,CAAC,GAAG,MAAM,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;QAC5D,MAAM,aAAE,CAAC,MAAM,CAAC,GAAG,MAAM,MAAM,EAAE,MAAM,CAAC,CAAA;IAC1C,CAAC;CACF;AAtbD,oCAsbC;AAEM,KAAK,UAAU,eAAe,CAAC,MAA0B,EAAE,IAAiB;IACjF,MAAM,KAAK,GAAG,IAAI,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC5C,MAAM,KAAK,CAAC,KAAK,EAAE,CAAA;IACnB,OAAO,KAAK,CAAA;AACd,CAAC"}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|