atom-lite 0.4.1 → 0.6.2
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/CHANGELOG.md +35 -1
- package/README.md +41 -108
- package/dist/agent/loop.d.ts +15 -0
- package/dist/agent/loop.js +277 -57
- package/dist/agent/loop.js.map +1 -1
- package/dist/agent/model-turn.d.ts +37 -0
- package/dist/agent/model-turn.js +53 -0
- package/dist/agent/model-turn.js.map +1 -0
- package/dist/agent/system-prompt.d.ts +1 -0
- package/dist/agent/system-prompt.js +23 -0
- package/dist/agent/system-prompt.js.map +1 -0
- package/dist/agent/turn-recorder.d.ts +33 -0
- package/dist/agent/turn-recorder.js +74 -0
- package/dist/agent/turn-recorder.js.map +1 -0
- package/dist/agent/types.d.ts +15 -0
- package/dist/cli/app.js +570 -68
- package/dist/cli/app.js.map +1 -1
- package/dist/cli/commands.d.ts +3 -0
- package/dist/cli/commands.js +20 -5
- package/dist/cli/commands.js.map +1 -1
- package/dist/cli/diff-view.d.ts +18 -0
- package/dist/cli/diff-view.js +66 -0
- package/dist/cli/diff-view.js.map +1 -0
- package/dist/cli/main.js +2 -2
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/mouse.js +4 -1
- package/dist/cli/mouse.js.map +1 -1
- package/dist/cli/panel.js +8 -8
- package/dist/cli/panel.js.map +1 -1
- package/dist/cli/status-line.d.ts +2 -0
- package/dist/cli/status-line.js +9 -1
- package/dist/cli/status-line.js.map +1 -1
- package/dist/cli/stream-text.js +1 -0
- package/dist/cli/stream-text.js.map +1 -1
- package/dist/cli/theme.d.ts +1 -1
- package/dist/cli/theme.js +2 -0
- package/dist/cli/theme.js.map +1 -1
- package/dist/cli/tool-box.d.ts +1 -1
- package/dist/cli/tool-box.js +44 -39
- package/dist/cli/tool-box.js.map +1 -1
- package/dist/cli/transcript.d.ts +15 -1
- package/dist/cli/transcript.js +40 -1
- package/dist/cli/transcript.js.map +1 -1
- package/dist/cli/trust-prompt.d.ts +24 -0
- package/dist/cli/trust-prompt.js +89 -0
- package/dist/cli/trust-prompt.js.map +1 -0
- package/dist/config/defaults.d.ts +6 -5
- package/dist/config/defaults.js +8 -3
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/load.js +33 -3
- package/dist/config/load.js.map +1 -1
- package/dist/config/paths.d.ts +2 -0
- package/dist/config/paths.js +12 -1
- package/dist/config/paths.js.map +1 -1
- package/dist/config/schema.d.ts +14 -14
- package/dist/config/schema.js +6 -5
- package/dist/config/schema.js.map +1 -1
- package/dist/context/manager.d.ts +17 -3
- package/dist/context/manager.js +129 -41
- package/dist/context/manager.js.map +1 -1
- package/dist/extensions/api.d.ts +51 -1
- package/dist/extensions/api.js +124 -6
- package/dist/extensions/api.js.map +1 -1
- package/dist/extensions/discovery.d.ts +16 -0
- package/dist/extensions/discovery.js +191 -108
- package/dist/extensions/discovery.js.map +1 -1
- package/dist/extensions/loader.d.ts +42 -1
- package/dist/extensions/loader.js +272 -32
- package/dist/extensions/loader.js.map +1 -1
- package/dist/extensions/session-manager.d.ts +44 -0
- package/dist/extensions/session-manager.js +137 -0
- package/dist/extensions/session-manager.js.map +1 -0
- package/dist/extensions/tool-adapter.d.ts +12 -0
- package/dist/extensions/tool-adapter.js +157 -0
- package/dist/extensions/tool-adapter.js.map +1 -0
- package/dist/extensions/trust.d.ts +2 -0
- package/dist/extensions/trust.js +32 -17
- package/dist/extensions/trust.js.map +1 -1
- package/dist/extensions/types.d.ts +45 -3
- package/dist/extensions/ui.d.ts +21 -0
- package/dist/extensions/ui.js +75 -0
- package/dist/extensions/ui.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/mcp/stdio-transport.js +3 -20
- package/dist/mcp/stdio-transport.js.map +1 -1
- package/dist/runtime/modes.d.ts +3 -0
- package/dist/runtime/modes.js +8 -0
- package/dist/runtime/modes.js.map +1 -0
- package/dist/runtime/scheduler.d.ts +4 -3
- package/dist/runtime/scheduler.js +7 -105
- package/dist/runtime/scheduler.js.map +1 -1
- package/dist/runtime/tool-executor.d.ts +18 -0
- package/dist/runtime/tool-executor.js +136 -0
- package/dist/runtime/tool-executor.js.map +1 -0
- package/dist/security/process.d.ts +10 -0
- package/dist/security/process.js +36 -0
- package/dist/security/process.js.map +1 -1
- package/dist/sessions/store.js +2 -3
- package/dist/sessions/store.js.map +1 -1
- package/dist/skills/registry.js +8 -1
- package/dist/skills/registry.js.map +1 -1
- package/dist/tools/bash.js +7 -4
- package/dist/tools/bash.js.map +1 -1
- package/dist/tools/glob.d.ts +2 -0
- package/dist/tools/glob.js +97 -0
- package/dist/tools/glob.js.map +1 -0
- package/dist/tools/grep.d.ts +2 -0
- package/dist/tools/grep.js +290 -0
- package/dist/tools/grep.js.map +1 -0
- package/dist/tools/index.d.ts +2 -0
- package/dist/tools/index.js +2 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/types.d.ts +8 -0
- package/dist/types.d.ts +0 -3
- package/dist/types.js +1 -4
- package/dist/types.js.map +1 -1
- package/package.json +5 -2
- package/skills/atom-lite-extensions/SKILL.md +240 -0
- package/skills/caveman/SKILL.md +89 -0
- package/skills/code-review/SKILL.md +46 -0
- package/skills/optimization/SKILL.md +51 -0
package/dist/config/load.js
CHANGED
|
@@ -39,11 +39,25 @@ function envOverrides() {
|
|
|
39
39
|
if (process.env.ATOM_LITE_MODEL) {
|
|
40
40
|
// model override applies to all providers is not precise; store as override hint only
|
|
41
41
|
}
|
|
42
|
-
if (process.env.
|
|
43
|
-
out.runtime = {
|
|
42
|
+
if (process.env.ATOM_LITE_MODE) {
|
|
43
|
+
out.runtime = { mode: process.env.ATOM_LITE_MODE };
|
|
44
44
|
}
|
|
45
45
|
return out;
|
|
46
46
|
}
|
|
47
|
+
function normalizeRuntime(raw) {
|
|
48
|
+
const out = { ...raw };
|
|
49
|
+
if ("approvalMode" in out && !("mode" in out)) {
|
|
50
|
+
const legacy = out.approvalMode;
|
|
51
|
+
out.mode =
|
|
52
|
+
legacy === "trusted" ? "yolo" : legacy === "deny" ? "plan" : "plan";
|
|
53
|
+
}
|
|
54
|
+
delete out.approvalMode;
|
|
55
|
+
// Removed caps: drop so strict schema does not reject older configs.
|
|
56
|
+
delete out.maxIterations;
|
|
57
|
+
delete out.maxToolCalls;
|
|
58
|
+
delete out.maxExecutionMs;
|
|
59
|
+
return out;
|
|
60
|
+
}
|
|
47
61
|
export function loadConfig(options = {}) {
|
|
48
62
|
const userPath = options.userConfigPath ?? defaultUserConfigPath();
|
|
49
63
|
const projectPath = options.projectRoot
|
|
@@ -55,6 +69,14 @@ export function loadConfig(options = {}) {
|
|
|
55
69
|
}
|
|
56
70
|
const userRaw = (readJsonFile(userPath) ?? {});
|
|
57
71
|
const projectRaw = (readJsonFile(projectPath) ?? {});
|
|
72
|
+
// Normalize legacy runtime keys (approvalMode, removed caps) so older
|
|
73
|
+
// configs keep loading.
|
|
74
|
+
if (userRaw.runtime && typeof userRaw.runtime === "object") {
|
|
75
|
+
userRaw.runtime = normalizeRuntime(userRaw.runtime);
|
|
76
|
+
}
|
|
77
|
+
if (projectRaw.runtime && typeof projectRaw.runtime === "object") {
|
|
78
|
+
projectRaw.runtime = normalizeRuntime(projectRaw.runtime);
|
|
79
|
+
}
|
|
58
80
|
const warn = options.onWarning ?? defaultWarning;
|
|
59
81
|
if (projectRaw.mcpServers &&
|
|
60
82
|
typeof projectRaw.mcpServers === "object" &&
|
|
@@ -103,6 +125,10 @@ export function loadConfig(options = {}) {
|
|
|
103
125
|
...(userRaw.extensions?.trustedProjects ??
|
|
104
126
|
[]),
|
|
105
127
|
],
|
|
128
|
+
deniedProjects: [
|
|
129
|
+
...(userRaw.extensions?.deniedProjects ??
|
|
130
|
+
[]),
|
|
131
|
+
],
|
|
106
132
|
},
|
|
107
133
|
// MCP servers are user-owned: opening a repository must never launch a
|
|
108
134
|
// process. Project entries are dropped above with a warning.
|
|
@@ -113,7 +139,11 @@ export function loadConfig(options = {}) {
|
|
|
113
139
|
// Protect security-critical user settings from project override.
|
|
114
140
|
const userRuntime = userRaw.runtime ?? {};
|
|
115
141
|
const mergedRuntime = merged.runtime ?? {};
|
|
116
|
-
mergedRuntime.
|
|
142
|
+
mergedRuntime.mode = userRuntime.mode ?? "plan";
|
|
143
|
+
mergedRuntime.maxTokensPerSession =
|
|
144
|
+
userRuntime.maxTokensPerSession ?? null;
|
|
145
|
+
mergedRuntime.maxTokensPerTurn = userRuntime.maxTokensPerTurn ?? null;
|
|
146
|
+
delete mergedRuntime.approvalMode;
|
|
117
147
|
merged.runtime = mergedRuntime;
|
|
118
148
|
// no fallback; trust explicit configuration
|
|
119
149
|
const env = envOverrides();
|
package/dist/config/load.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"load.js","sourceRoot":"","sources":["../../src/config/load.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,YAAY,EAAe,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAUnD,SAAS,cAAc,CAAC,OAAe;IACrC,IAAI,CAAC;QACH,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,OAAO,IAAI,CAAC,CAAC;IAClD,CAAC;IAAC,MAAM,CAAC;QACP,wCAAwC;IAC1C,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,IAAY;IAChC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,SAAS,CAAC;IACxC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IAChD,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,gCAAgC,IAAI,EAAE,CAAC,CAAC;IAC1D,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAY;IACpC,IAAI,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO;IAC7B,IAAI,CAAC;QACH,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACjD,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC;IAC9E,CAAC;IAAC,MAAM,CAAC;QACP,6DAA6D;IAC/D,CAAC;AACH,CAAC;AAED,SAAS,YAAY;IACnB,MAAM,GAAG,GAA4B,EAAE,CAAC;IACxC,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB;QAChC,GAAG,CAAC,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;IACvD,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC;QAChC,sFAAsF;IACxF,CAAC;IACD,IAAI,OAAO,CAAC,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"load.js","sourceRoot":"","sources":["../../src/config/load.ts"],"names":[],"mappings":"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"}
|
package/dist/config/paths.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
/** Base directory for all user-level Atom-lite state. */
|
|
2
2
|
export declare function userConfigDir(): string;
|
|
3
3
|
export declare function defaultUserConfigPath(): string;
|
|
4
|
+
/** Pi's agent directory, which owns Pi's global settings and extensions. */
|
|
5
|
+
export declare function defaultAgentDir(): string;
|
|
4
6
|
export declare function defaultCredentialsPath(): string;
|
package/dist/config/paths.js
CHANGED
|
@@ -1,13 +1,24 @@
|
|
|
1
1
|
import { join } from "node:path";
|
|
2
|
-
import { homedir } from "node:os";
|
|
2
|
+
import { homedir, platform } from "node:os";
|
|
3
3
|
/** Base directory for all user-level Atom-lite state. */
|
|
4
4
|
export function userConfigDir() {
|
|
5
|
+
if (platform() === "win32") {
|
|
6
|
+
const base = process.env.APPDATA ?? join(homedir(), "AppData", "Roaming");
|
|
7
|
+
return join(base, "atom-lite");
|
|
8
|
+
}
|
|
9
|
+
if (platform() === "darwin") {
|
|
10
|
+
return join(homedir(), "Library", "Application Support", "atom-lite");
|
|
11
|
+
}
|
|
5
12
|
const base = process.env.XDG_CONFIG_HOME ?? join(homedir(), ".config");
|
|
6
13
|
return join(base, "atom-lite");
|
|
7
14
|
}
|
|
8
15
|
export function defaultUserConfigPath() {
|
|
9
16
|
return join(userConfigDir(), "config.json");
|
|
10
17
|
}
|
|
18
|
+
/** Pi's agent directory, which owns Pi's global settings and extensions. */
|
|
19
|
+
export function defaultAgentDir() {
|
|
20
|
+
return (process.env.PI_CODING_AGENT_DIR ?? join(homedir(), ".pi", "agent"));
|
|
21
|
+
}
|
|
11
22
|
export function defaultCredentialsPath() {
|
|
12
23
|
return join(userConfigDir(), "credentials.json");
|
|
13
24
|
}
|
package/dist/config/paths.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/config/paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/config/paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE5C,yDAAyD;AACzD,MAAM,UAAU,aAAa;IAC3B,IAAI,QAAQ,EAAE,KAAK,OAAO,EAAE,CAAC;QAC3B,MAAM,IAAI,GACR,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;QAC/D,OAAO,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IACjC,CAAC;IACD,IAAI,QAAQ,EAAE,KAAK,QAAQ,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,qBAAqB,EAAE,WAAW,CAAC,CAAC;IACxE,CAAC;IACD,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;IACvE,OAAO,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO,IAAI,CAAC,aAAa,EAAE,EAAE,aAAa,CAAC,CAAC;AAC9C,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,eAAe;IAC7B,OAAO,CACL,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,CACnE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,OAAO,IAAI,CAAC,aAAa,EAAE,EAAE,kBAAkB,CAAC,CAAC;AACnD,CAAC"}
|
package/dist/config/schema.d.ts
CHANGED
|
@@ -12,9 +12,6 @@ export declare const ProviderConfigSchema: z.ZodObject<{
|
|
|
12
12
|
contextWindow: z.ZodOptional<z.ZodNumber>;
|
|
13
13
|
}, z.core.$strict>;
|
|
14
14
|
export declare const RuntimeConfigSchema: z.ZodObject<{
|
|
15
|
-
maxIterations: z.ZodDefault<z.ZodNumber>;
|
|
16
|
-
maxToolCalls: z.ZodDefault<z.ZodNumber>;
|
|
17
|
-
maxExecutionMs: z.ZodDefault<z.ZodNumber>;
|
|
18
15
|
maxParallelToolCalls: z.ZodDefault<z.ZodNumber>;
|
|
19
16
|
maxToolOutputBytes: z.ZodDefault<z.ZodNumber>;
|
|
20
17
|
maxBashTimeMs: z.ZodDefault<z.ZodNumber>;
|
|
@@ -22,17 +19,19 @@ export declare const RuntimeConfigSchema: z.ZodObject<{
|
|
|
22
19
|
serial: "serial";
|
|
23
20
|
parallel: "parallel";
|
|
24
21
|
}>>;
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
deny: "deny";
|
|
22
|
+
mode: z.ZodDefault<z.ZodEnum<{
|
|
23
|
+
plan: "plan";
|
|
24
|
+
yolo: "yolo";
|
|
29
25
|
}>>;
|
|
26
|
+
maxTokensPerSession: z.ZodDefault<z.ZodNullable<z.ZodNumber>>;
|
|
27
|
+
maxTokensPerTurn: z.ZodDefault<z.ZodNullable<z.ZodNumber>>;
|
|
30
28
|
}, z.core.$strict>;
|
|
31
29
|
export declare const ContextConfigSchema: z.ZodObject<{
|
|
32
30
|
maxInputTokens: z.ZodDefault<z.ZodNullable<z.ZodNumber>>;
|
|
33
31
|
reserveOutputTokens: z.ZodDefault<z.ZodNumber>;
|
|
34
32
|
compactAtPercent: z.ZodDefault<z.ZodNumber>;
|
|
35
33
|
maxProjectInstructionBytes: z.ZodDefault<z.ZodNumber>;
|
|
34
|
+
compactEveryNTurns: z.ZodDefault<z.ZodNumber>;
|
|
36
35
|
}, z.core.$strict>;
|
|
37
36
|
export declare const SessionsConfigSchema: z.ZodObject<{
|
|
38
37
|
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
@@ -66,6 +65,7 @@ export declare const McpServersConfigSchema: z.ZodDefault<z.ZodRecord<z.ZodStrin
|
|
|
66
65
|
}, z.core.$strict>>>;
|
|
67
66
|
export declare const ExtensionsConfigSchema: z.ZodObject<{
|
|
68
67
|
trustedProjects: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
68
|
+
deniedProjects: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
69
69
|
}, z.core.$strict>;
|
|
70
70
|
export declare const ConfigSchema: z.ZodObject<{
|
|
71
71
|
defaultProvider: z.ZodDefault<z.ZodString>;
|
|
@@ -82,9 +82,6 @@ export declare const ConfigSchema: z.ZodObject<{
|
|
|
82
82
|
contextWindow: z.ZodOptional<z.ZodNumber>;
|
|
83
83
|
}, z.core.$strict>>>;
|
|
84
84
|
runtime: z.ZodPrefault<z.ZodObject<{
|
|
85
|
-
maxIterations: z.ZodDefault<z.ZodNumber>;
|
|
86
|
-
maxToolCalls: z.ZodDefault<z.ZodNumber>;
|
|
87
|
-
maxExecutionMs: z.ZodDefault<z.ZodNumber>;
|
|
88
85
|
maxParallelToolCalls: z.ZodDefault<z.ZodNumber>;
|
|
89
86
|
maxToolOutputBytes: z.ZodDefault<z.ZodNumber>;
|
|
90
87
|
maxBashTimeMs: z.ZodDefault<z.ZodNumber>;
|
|
@@ -92,17 +89,19 @@ export declare const ConfigSchema: z.ZodObject<{
|
|
|
92
89
|
serial: "serial";
|
|
93
90
|
parallel: "parallel";
|
|
94
91
|
}>>;
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
deny: "deny";
|
|
92
|
+
mode: z.ZodDefault<z.ZodEnum<{
|
|
93
|
+
plan: "plan";
|
|
94
|
+
yolo: "yolo";
|
|
99
95
|
}>>;
|
|
96
|
+
maxTokensPerSession: z.ZodDefault<z.ZodNullable<z.ZodNumber>>;
|
|
97
|
+
maxTokensPerTurn: z.ZodDefault<z.ZodNullable<z.ZodNumber>>;
|
|
100
98
|
}, z.core.$strict>>;
|
|
101
99
|
context: z.ZodPrefault<z.ZodObject<{
|
|
102
100
|
maxInputTokens: z.ZodDefault<z.ZodNullable<z.ZodNumber>>;
|
|
103
101
|
reserveOutputTokens: z.ZodDefault<z.ZodNumber>;
|
|
104
102
|
compactAtPercent: z.ZodDefault<z.ZodNumber>;
|
|
105
103
|
maxProjectInstructionBytes: z.ZodDefault<z.ZodNumber>;
|
|
104
|
+
compactEveryNTurns: z.ZodDefault<z.ZodNumber>;
|
|
106
105
|
}, z.core.$strict>>;
|
|
107
106
|
sessions: z.ZodPrefault<z.ZodObject<{
|
|
108
107
|
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
@@ -126,6 +125,7 @@ export declare const ConfigSchema: z.ZodObject<{
|
|
|
126
125
|
}, z.core.$strict>>>;
|
|
127
126
|
extensions: z.ZodPrefault<z.ZodObject<{
|
|
128
127
|
trustedProjects: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
128
|
+
deniedProjects: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
129
129
|
}, z.core.$strict>>;
|
|
130
130
|
}, z.core.$strict>;
|
|
131
131
|
export type Config = z.infer<typeof ConfigSchema>;
|
package/dist/config/schema.js
CHANGED
|
@@ -16,14 +16,13 @@ export const ProviderConfigSchema = z
|
|
|
16
16
|
.strict();
|
|
17
17
|
export const RuntimeConfigSchema = z
|
|
18
18
|
.object({
|
|
19
|
-
|
|
20
|
-
maxToolCalls: z.number().int().positive().default(100),
|
|
21
|
-
maxExecutionMs: z.number().int().positive().default(1_800_000),
|
|
22
|
-
maxParallelToolCalls: z.number().int().positive().default(4),
|
|
19
|
+
maxParallelToolCalls: z.number().int().positive().default(10),
|
|
23
20
|
maxToolOutputBytes: z.number().int().positive().default(30_000),
|
|
24
21
|
maxBashTimeMs: z.number().int().positive().default(120_000),
|
|
25
22
|
bashConcurrency: z.enum(["serial", "parallel"]).default("serial"),
|
|
26
|
-
|
|
23
|
+
mode: z.enum(["plan", "yolo"]).default("plan"),
|
|
24
|
+
maxTokensPerSession: z.number().int().positive().nullable().default(null),
|
|
25
|
+
maxTokensPerTurn: z.number().int().positive().nullable().default(null),
|
|
27
26
|
})
|
|
28
27
|
.strict();
|
|
29
28
|
export const ContextConfigSchema = z
|
|
@@ -32,6 +31,7 @@ export const ContextConfigSchema = z
|
|
|
32
31
|
reserveOutputTokens: z.number().int().positive().default(4096),
|
|
33
32
|
compactAtPercent: z.number().int().min(1).max(100).default(85),
|
|
34
33
|
maxProjectInstructionBytes: z.number().int().positive().default(30000),
|
|
34
|
+
compactEveryNTurns: z.number().int().min(0).default(0),
|
|
35
35
|
})
|
|
36
36
|
.strict();
|
|
37
37
|
export const SessionsConfigSchema = z
|
|
@@ -66,6 +66,7 @@ export const McpServersConfigSchema = z
|
|
|
66
66
|
export const ExtensionsConfigSchema = z
|
|
67
67
|
.object({
|
|
68
68
|
trustedProjects: z.array(z.string()).default([]),
|
|
69
|
+
deniedProjects: z.array(z.string()).default([]),
|
|
69
70
|
})
|
|
70
71
|
.strict();
|
|
71
72
|
export const ConfigSchema = z
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC;KAClC,MAAM,CAAC;IACN,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IACpC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC3C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IACxC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE;IACpD,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACpD,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;IACrD,wEAAwE;IACxE,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;CACtD,CAAC;KACD,MAAM,EAAE,CAAC;AAEZ,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC;KACjC,MAAM,CAAC;IACN,
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,7 @@ export interface ContextManagerOptions {
|
|
|
9
9
|
provider: ProviderAdapter;
|
|
10
10
|
model: string;
|
|
11
11
|
userInstructionsPath?: string;
|
|
12
|
+
compactEveryNTurns?: number;
|
|
12
13
|
}
|
|
13
14
|
export declare class ContextManager {
|
|
14
15
|
private opts;
|
|
@@ -16,14 +17,27 @@ export declare class ContextManager {
|
|
|
16
17
|
private skillCache?;
|
|
17
18
|
private modelContextWindow;
|
|
18
19
|
private compactedThisBuild;
|
|
20
|
+
private forceCompact;
|
|
21
|
+
private buildCount;
|
|
22
|
+
private sessionMemory;
|
|
23
|
+
private sessionMemoryCount;
|
|
24
|
+
private lastCompactionSummary;
|
|
25
|
+
private lastCompactionCoveredCount;
|
|
26
|
+
private compactEveryNTurns;
|
|
19
27
|
constructor(opts: ContextManagerOptions);
|
|
20
|
-
/** Update the provider/model used for compaction after a switch. */
|
|
21
28
|
setProvider(provider: ProviderAdapter, model?: string): void;
|
|
22
|
-
/** Use the selected model's real window unless the user pinned a budget. */
|
|
23
29
|
setModelContextWindow(window: number | undefined): void;
|
|
24
|
-
/** True once if the most recent build compacted history. */
|
|
25
30
|
consumeCompaction(): boolean;
|
|
31
|
+
consumeCompactionSummary(): string | null;
|
|
32
|
+
consumeCompactionCoveredCount(): number;
|
|
33
|
+
getLastCompactionCoveredCount(): number;
|
|
34
|
+
setSessionMemory(summary: string | null, coveredCount?: number): void;
|
|
35
|
+
getSessionMemory(): string | null;
|
|
36
|
+
setForceCompact(force: boolean): void;
|
|
37
|
+
getCompactEveryNTurns(): number;
|
|
38
|
+
compactHistory(_workspace: string, history: Message[], focus?: string): Promise<string | null>;
|
|
26
39
|
private budget;
|
|
27
40
|
private threshold;
|
|
41
|
+
private summarize;
|
|
28
42
|
build(workspace: string, history: Message[]): Promise<Message[]>;
|
|
29
43
|
}
|
package/dist/context/manager.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { join } from "node:path";
|
|
2
|
-
import { homedir } from "node:os";
|
|
3
2
|
import { loadProjectInstructions, statSignature } from "./instructions.js";
|
|
4
3
|
import { DefaultSkillRegistry, skillCacheSignature } from "../skills/registry.js";
|
|
5
4
|
import { estimateMessageTokens } from "./budget.js";
|
|
5
|
+
import { userConfigDir } from "../config/paths.js";
|
|
6
6
|
const DEFAULT_MAX_INPUT = 128000;
|
|
7
7
|
export class ContextManager {
|
|
8
8
|
opts;
|
|
@@ -10,25 +10,74 @@ export class ContextManager {
|
|
|
10
10
|
skillCache;
|
|
11
11
|
modelContextWindow;
|
|
12
12
|
compactedThisBuild = false;
|
|
13
|
+
forceCompact = false;
|
|
14
|
+
buildCount = 0;
|
|
15
|
+
sessionMemory = null;
|
|
16
|
+
sessionMemoryCount = 0;
|
|
17
|
+
lastCompactionSummary = null;
|
|
18
|
+
lastCompactionCoveredCount = 0;
|
|
19
|
+
compactEveryNTurns = 0;
|
|
13
20
|
constructor(opts) {
|
|
14
21
|
this.opts = opts;
|
|
22
|
+
this.compactEveryNTurns = opts.compactEveryNTurns ?? 0;
|
|
15
23
|
}
|
|
16
|
-
/** Update the provider/model used for compaction after a switch. */
|
|
17
24
|
setProvider(provider, model) {
|
|
18
25
|
this.opts.provider = provider;
|
|
19
26
|
if (model)
|
|
20
27
|
this.opts.model = model;
|
|
21
28
|
}
|
|
22
|
-
/** Use the selected model's real window unless the user pinned a budget. */
|
|
23
29
|
setModelContextWindow(window) {
|
|
24
30
|
this.modelContextWindow = window;
|
|
25
31
|
}
|
|
26
|
-
/** True once if the most recent build compacted history. */
|
|
27
32
|
consumeCompaction() {
|
|
28
33
|
const compacted = this.compactedThisBuild;
|
|
29
34
|
this.compactedThisBuild = false;
|
|
30
35
|
return compacted;
|
|
31
36
|
}
|
|
37
|
+
consumeCompactionSummary() {
|
|
38
|
+
const summary = this.lastCompactionSummary;
|
|
39
|
+
this.lastCompactionSummary = null;
|
|
40
|
+
return summary;
|
|
41
|
+
}
|
|
42
|
+
consumeCompactionCoveredCount() {
|
|
43
|
+
const count = this.lastCompactionCoveredCount;
|
|
44
|
+
this.lastCompactionCoveredCount = 0;
|
|
45
|
+
return count;
|
|
46
|
+
}
|
|
47
|
+
getLastCompactionCoveredCount() {
|
|
48
|
+
return this.lastCompactionCoveredCount;
|
|
49
|
+
}
|
|
50
|
+
setSessionMemory(summary, coveredCount) {
|
|
51
|
+
this.sessionMemory = summary;
|
|
52
|
+
if (summary === null) {
|
|
53
|
+
this.sessionMemoryCount = 0;
|
|
54
|
+
}
|
|
55
|
+
else if (typeof coveredCount === "number" && coveredCount >= 0) {
|
|
56
|
+
this.sessionMemoryCount = coveredCount;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
getSessionMemory() {
|
|
60
|
+
return this.sessionMemory;
|
|
61
|
+
}
|
|
62
|
+
setForceCompact(force) {
|
|
63
|
+
this.forceCompact = force;
|
|
64
|
+
}
|
|
65
|
+
getCompactEveryNTurns() {
|
|
66
|
+
return this.compactEveryNTurns;
|
|
67
|
+
}
|
|
68
|
+
async compactHistory(_workspace, history, focus) {
|
|
69
|
+
const keep = Math.min(6, history.length);
|
|
70
|
+
const older = history.slice(0, history.length - keep);
|
|
71
|
+
if (older.length === 0)
|
|
72
|
+
return null;
|
|
73
|
+
const summary = await this.summarize(older, focus);
|
|
74
|
+
const coveredCount = history.length - keep;
|
|
75
|
+
this.sessionMemory = summary;
|
|
76
|
+
this.sessionMemoryCount = coveredCount;
|
|
77
|
+
this.lastCompactionSummary = summary;
|
|
78
|
+
this.lastCompactionCoveredCount = coveredCount;
|
|
79
|
+
return summary;
|
|
80
|
+
}
|
|
32
81
|
budget() {
|
|
33
82
|
const max = this.opts.maxInputTokens ?? this.modelContextWindow ?? DEFAULT_MAX_INPUT;
|
|
34
83
|
return Math.max(1000, max - this.opts.reserveOutputTokens);
|
|
@@ -36,9 +85,45 @@ export class ContextManager {
|
|
|
36
85
|
threshold() {
|
|
37
86
|
return Math.floor(this.budget() * (this.opts.compactAtPercent / 100));
|
|
38
87
|
}
|
|
88
|
+
async summarize(older, focus) {
|
|
89
|
+
let summaryText = "";
|
|
90
|
+
try {
|
|
91
|
+
const focusLine = focus
|
|
92
|
+
? `\nFocus the summary on: ${focus}`
|
|
93
|
+
: "";
|
|
94
|
+
const summaryReq = {
|
|
95
|
+
model: this.opts.model,
|
|
96
|
+
messages: [
|
|
97
|
+
{
|
|
98
|
+
role: "system",
|
|
99
|
+
content: "Summarize the following conversation history compactly. Retain: (1) the current task/goal; (2) files touched and their last known state (paths with a brief change summary); (3) decisions and constraints. Drop: full tool outputs and intermediate reasoning. Output only the summary." +
|
|
100
|
+
focusLine,
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
role: "user",
|
|
104
|
+
content: [{ type: "text", text: JSON.stringify(older) }],
|
|
105
|
+
},
|
|
106
|
+
],
|
|
107
|
+
tools: [],
|
|
108
|
+
};
|
|
109
|
+
const resp = await this.opts.provider.generate(summaryReq);
|
|
110
|
+
summaryText =
|
|
111
|
+
resp.message.content
|
|
112
|
+
?.map((p) => (p.type === "text" ? p.text : ""))
|
|
113
|
+
.join("") ?? "";
|
|
114
|
+
}
|
|
115
|
+
catch {
|
|
116
|
+
summaryText = "";
|
|
117
|
+
}
|
|
118
|
+
if (!summaryText) {
|
|
119
|
+
summaryText = "[Earlier conversation truncated to fit context budget.]";
|
|
120
|
+
}
|
|
121
|
+
return summaryText;
|
|
122
|
+
}
|
|
39
123
|
async build(workspace, history) {
|
|
40
124
|
this.compactedThisBuild = false;
|
|
41
|
-
|
|
125
|
+
this.lastCompactionSummary = null;
|
|
126
|
+
const userPath = this.opts.userInstructionsPath ?? join(userConfigDir(), "AGENTS.md");
|
|
42
127
|
const instructionSignature = `${this.opts.maxProjectInstructionBytes}|` +
|
|
43
128
|
statSignature([userPath, join(workspace, "AGENTS.md")]);
|
|
44
129
|
let instructions;
|
|
@@ -63,56 +148,59 @@ export class ContextManager {
|
|
|
63
148
|
const systemPrompt = skillIndex
|
|
64
149
|
? `${this.opts.systemPrompt}\n\n${skillIndex}`
|
|
65
150
|
: this.opts.systemPrompt;
|
|
151
|
+
this.buildCount++;
|
|
152
|
+
const periodic = this.compactEveryNTurns > 0 &&
|
|
153
|
+
this.buildCount % this.compactEveryNTurns === 0;
|
|
154
|
+
// Restore persisted session memory by injecting it and trimming the
|
|
155
|
+
// replayed tail, so resumed long sessions stay compact.
|
|
156
|
+
let workingHistory = history;
|
|
157
|
+
if (this.sessionMemory) {
|
|
158
|
+
const start = Math.min(this.sessionMemoryCount, history.length);
|
|
159
|
+
workingHistory = history.slice(start);
|
|
160
|
+
if (workingHistory.length === 0) {
|
|
161
|
+
workingHistory = history.slice(-Math.min(6, history.length));
|
|
162
|
+
}
|
|
163
|
+
}
|
|
66
164
|
const messages = [{ role: "system", content: systemPrompt }];
|
|
67
165
|
for (const instr of instructions) {
|
|
68
166
|
messages.push({ role: "system", content: instr });
|
|
69
167
|
}
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
// Compact: keep last 6 messages verbatim, summarize the rest.
|
|
75
|
-
const keep = Math.min(6, history.length);
|
|
76
|
-
const recent = history.slice(-keep);
|
|
77
|
-
const older = history.slice(0, history.length - keep);
|
|
78
|
-
if (older.length === 0)
|
|
79
|
-
return messages;
|
|
80
|
-
let summaryText = "";
|
|
81
|
-
try {
|
|
82
|
-
const summaryReq = {
|
|
83
|
-
model: this.opts.model,
|
|
84
|
-
messages: [
|
|
168
|
+
if (this.sessionMemory) {
|
|
169
|
+
messages.push({
|
|
170
|
+
role: "assistant",
|
|
171
|
+
content: [
|
|
85
172
|
{
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
},
|
|
89
|
-
{
|
|
90
|
-
role: "user",
|
|
91
|
-
content: [{ type: "text", text: JSON.stringify(older) }],
|
|
173
|
+
type: "text",
|
|
174
|
+
text: `Context summary from previous compaction:\n${this.sessionMemory}`,
|
|
92
175
|
},
|
|
93
176
|
],
|
|
94
|
-
|
|
95
|
-
};
|
|
96
|
-
const resp = await this.opts.provider.generate(summaryReq);
|
|
97
|
-
summaryText =
|
|
98
|
-
resp.message.content
|
|
99
|
-
?.map((p) => (p.type === "text" ? p.text : ""))
|
|
100
|
-
.join("") ?? "";
|
|
177
|
+
});
|
|
101
178
|
}
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
if (!
|
|
106
|
-
|
|
107
|
-
summaryText = "[Earlier conversation truncated to fit context budget.]";
|
|
179
|
+
messages.push(...workingHistory);
|
|
180
|
+
const total = messages.reduce((s, m) => s + estimateMessageTokens(m), 0);
|
|
181
|
+
const overThreshold = total > this.threshold() && workingHistory.length > 6;
|
|
182
|
+
if (!this.forceCompact && !periodic && !overThreshold) {
|
|
183
|
+
return messages;
|
|
108
184
|
}
|
|
185
|
+
this.forceCompact = false;
|
|
186
|
+
const keep = Math.min(6, workingHistory.length);
|
|
187
|
+
const recent = workingHistory.slice(-keep);
|
|
188
|
+
const older = workingHistory.slice(0, workingHistory.length - keep);
|
|
189
|
+
if (older.length === 0)
|
|
190
|
+
return messages;
|
|
191
|
+
const summary = await this.summarize(older);
|
|
192
|
+
const coveredCount = this.sessionMemoryCount + older.length;
|
|
193
|
+
this.lastCompactionSummary = summary;
|
|
194
|
+
this.sessionMemory = summary;
|
|
195
|
+
this.sessionMemoryCount = coveredCount;
|
|
196
|
+
this.lastCompactionCoveredCount = coveredCount;
|
|
109
197
|
this.compactedThisBuild = true;
|
|
110
198
|
const compacted = [
|
|
111
|
-
{ role: "system", content:
|
|
199
|
+
{ role: "system", content: systemPrompt },
|
|
112
200
|
...instructions.map((i) => ({ role: "system", content: i })),
|
|
113
201
|
{
|
|
114
202
|
role: "assistant",
|
|
115
|
-
content: [{ type: "text", text: `Context summary: ${
|
|
203
|
+
content: [{ type: "text", text: `Context summary: ${summary}` }],
|
|
116
204
|
},
|
|
117
205
|
...recent,
|
|
118
206
|
];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/context/manager.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/context/manager.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,uBAAuB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC3E,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAClF,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAcnD,MAAM,iBAAiB,GAAG,MAAM,CAAC;AAEjC,MAAM,OAAO,cAAc;IACjB,IAAI,CAAwB;IAC5B,gBAAgB,CAAyC;IACzD,UAAU,CAA2D;IACrE,kBAAkB,CAAqB;IACvC,kBAAkB,GAAG,KAAK,CAAC;IAC3B,YAAY,GAAG,KAAK,CAAC;IACrB,UAAU,GAAG,CAAC,CAAC;IACf,aAAa,GAAkB,IAAI,CAAC;IACpC,kBAAkB,GAAG,CAAC,CAAC;IACvB,qBAAqB,GAAkB,IAAI,CAAC;IAC5C,0BAA0B,GAAG,CAAC,CAAC;IAC/B,kBAAkB,GAAG,CAAC,CAAC;IAE/B,YAAY,IAA2B;QACrC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,IAAI,CAAC,CAAC;IACzD,CAAC;IAED,WAAW,CAAC,QAAyB,EAAE,KAAc;QACnD,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC9B,IAAI,KAAK;YAAE,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrC,CAAC;IAED,qBAAqB,CAAC,MAA0B;QAC9C,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC;IACnC,CAAC;IAED,iBAAiB;QACf,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC;QAC1C,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;QAChC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,wBAAwB;QACtB,MAAM,OAAO,GAAG,IAAI,CAAC,qBAAqB,CAAC;QAC3C,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;QAClC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,6BAA6B;QAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,0BAA0B,CAAC;QAC9C,IAAI,CAAC,0BAA0B,GAAG,CAAC,CAAC;QACpC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,6BAA6B;QAC3B,OAAO,IAAI,CAAC,0BAA0B,CAAC;IACzC,CAAC;IAED,gBAAgB,CAAC,OAAsB,EAAE,YAAqB;QAC5D,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC;QAC7B,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACrB,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;QAC9B,CAAC;aAAM,IAAI,OAAO,YAAY,KAAK,QAAQ,IAAI,YAAY,IAAI,CAAC,EAAE,CAAC;YACjE,IAAI,CAAC,kBAAkB,GAAG,YAAY,CAAC;QACzC,CAAC;IACH,CAAC;IAED,gBAAgB;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED,eAAe,CAAC,KAAc;QAC5B,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;IAC5B,CAAC;IAED,qBAAqB;QACnB,OAAO,IAAI,CAAC,kBAAkB,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,cAAc,CAClB,UAAkB,EAClB,OAAkB,EAClB,KAAc;QAEd,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QACzC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;QACtD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QACpC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACnD,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;QAC3C,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC;QAC7B,IAAI,CAAC,kBAAkB,GAAG,YAAY,CAAC;QACvC,IAAI,CAAC,qBAAqB,GAAG,OAAO,CAAC;QACrC,IAAI,CAAC,0BAA0B,GAAG,YAAY,CAAC;QAC/C,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,MAAM;QACZ,MAAM,GAAG,GACP,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,kBAAkB,IAAI,iBAAiB,CAAC;QAC3E,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAC7D,CAAC;IAEO,SAAS;QACf,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,GAAG,GAAG,CAAC,CAAC,CAAC;IACxE,CAAC;IAEO,KAAK,CAAC,SAAS,CACrB,KAAgB,EAChB,KAAc;QAEd,IAAI,WAAW,GAAG,EAAE,CAAC;QACrB,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,KAAK;gBACrB,CAAC,CAAC,2BAA2B,KAAK,EAAE;gBACpC,CAAC,CAAC,EAAE,CAAC;YACP,MAAM,UAAU,GAAG;gBACjB,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK;gBACtB,QAAQ,EAAE;oBACR;wBACE,IAAI,EAAE,QAAiB;wBACvB,OAAO,EACL,0RAA0R;4BAC1R,SAAS;qBACZ;oBACD;wBACE,IAAI,EAAE,MAAe;wBACrB,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;qBAClE;iBACF;gBACD,KAAK,EAAE,EAAE;aACV,CAAC;YACF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAiB,CAAC,CAAC;YAClE,WAAW;gBACT,IAAI,CAAC,OAAO,CAAC,OAAO;oBAClB,EAAE,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;qBACnD,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;QACtB,CAAC;QAAC,MAAM,CAAC;YACP,WAAW,GAAG,EAAE,CAAC;QACnB,CAAC;QACD,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,WAAW,GAAG,yDAAyD,CAAC;QAC1E,CAAC;QACD,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,SAAiB,EAAE,OAAkB;QAC/C,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;QAChC,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;QAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE,WAAW,CAAC,CAAC;QACtF,MAAM,oBAAoB,GACxB,GAAG,IAAI,CAAC,IAAI,CAAC,0BAA0B,GAAG;YAC1C,aAAa,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;QAC1D,IAAI,YAAsB,CAAC;QAC3B,IAAI,IAAI,CAAC,gBAAgB,EAAE,SAAS,KAAK,oBAAoB,EAAE,CAAC;YAC9D,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;QAC5C,CAAC;aAAM,CAAC;YACN,YAAY,GAAG,uBAAuB,CACpC,SAAS,EACT,IAAI,CAAC,IAAI,CAAC,0BAA0B,EACpC,QAAQ,CACT,CAAC;YACF,IAAI,CAAC,gBAAgB,GAAG,EAAE,SAAS,EAAE,oBAAoB,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;QAClF,CAAC;QAED,MAAM,cAAc,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAC;QACtD,IAAI,UAAkB,CAAC;QACvB,IACE,IAAI,CAAC,UAAU,EAAE,SAAS,KAAK,SAAS;YACxC,IAAI,CAAC,UAAU,CAAC,SAAS,KAAK,cAAc,EAC5C,CAAC;YACD,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;QACrC,CAAC;aAAM,CAAC;YACN,MAAM,QAAQ,GAAG,IAAI,oBAAoB,CAAC,SAAS,CAAC,CAAC;YACrD,UAAU,GAAG,QAAQ,CAAC,SAAS,EAAE,CAAC;YAClC,IAAI,CAAC,UAAU,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;QAChF,CAAC;QACD,MAAM,YAAY,GAAG,UAAU;YAC7B,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,OAAO,UAAU,EAAE;YAC9C,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;QAE3B,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,MAAM,QAAQ,GACZ,IAAI,CAAC,kBAAkB,GAAG,CAAC;YAC3B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,kBAAkB,KAAK,CAAC,CAAC;QAElD,oEAAoE;QACpE,wDAAwD;QACxD,IAAI,cAAc,GAAG,OAAO,CAAC;QAC7B,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;YAChE,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACtC,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAChC,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;YAC/D,CAAC;QACH,CAAC;QAED,MAAM,QAAQ,GAAc,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC;QACxE,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;YACjC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QACpD,CAAC;QACD,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,8CAA8C,IAAI,CAAC,aAAa,EAAE;qBACzE;iBACF;aACF,CAAC,CAAC;QACL,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,CAAC;QAEjC,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACzE,MAAM,aAAa,GACjB,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC;QAExD,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;YACtD,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAE1B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;QAC3C,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;QACpE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,QAAQ,CAAC;QAExC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC5C,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC,MAAM,CAAC;QAC5D,IAAI,CAAC,qBAAqB,GAAG,OAAO,CAAC;QACrC,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC;QAC7B,IAAI,CAAC,kBAAkB,GAAG,YAAY,CAAC;QACvC,IAAI,CAAC,0BAA0B,GAAG,YAAY,CAAC;QAC/C,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;QAE/B,MAAM,SAAS,GAAc;YAC3B,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE;YACzC,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,QAAiB,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;YACrE;gBACE,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,oBAAoB,OAAO,EAAE,EAAE,CAAC;aACjE;YACD,GAAG,MAAM;SACV,CAAC;QACF,OAAO,SAAS,CAAC;IACnB,CAAC;CACF"}
|