zelari-code 0.4.3 → 0.7.5
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 +42 -0
- package/bin/zelari-code.js +1 -1
- package/dist/agents/councilApi.js +7 -7
- package/dist/agents/councilApi.js.map +1 -1
- package/dist/agents/councilDirectives.js +3 -3
- package/dist/agents/promoteMember.js +2 -2
- package/dist/agents/roles.js +50 -32
- package/dist/agents/roles.js.map +1 -1
- package/dist/agents/skills/builtin/debugging.js +4 -4
- package/dist/agents/skills/builtin/debugging.js.map +1 -1
- package/dist/agents/skills/builtin/docs.js +23 -13
- package/dist/agents/skills/builtin/docs.js.map +1 -1
- package/dist/agents/skills/builtin/git-ops.js +3 -3
- package/dist/agents/skills/builtin/git-ops.js.map +1 -1
- package/dist/agents/skills/builtin/planning.js +4 -4
- package/dist/agents/skills/builtin/planning.js.map +1 -1
- package/dist/agents/skills/builtin/refactoring.js +3 -3
- package/dist/agents/skills/builtin/refactoring.js.map +1 -1
- package/dist/agents/skills/builtin/review.js +9 -9
- package/dist/agents/skills/builtin/review.js.map +1 -1
- package/dist/agents/skills/builtin/testing.js +3 -3
- package/dist/agents/skills/builtin/testing.js.map +1 -1
- package/dist/agents/tools.js +2 -9
- package/dist/agents/tools.js.map +1 -1
- package/dist/cli/app.js +72 -33
- package/dist/cli/app.js.map +1 -1
- package/dist/cli/compaction.js.map +1 -1
- package/dist/cli/components/ChatStream.js +43 -82
- package/dist/cli/components/ChatStream.js.map +1 -1
- package/dist/cli/components/CollapsibleToolOutput.js +8 -21
- package/dist/cli/components/CollapsibleToolOutput.js.map +1 -1
- package/dist/cli/components/Header.js +6 -18
- package/dist/cli/components/Header.js.map +1 -1
- package/dist/cli/components/LiveRegion.js +54 -0
- package/dist/cli/components/LiveRegion.js.map +1 -0
- package/dist/cli/components/Sidebar.js +33 -31
- package/dist/cli/components/Sidebar.js.map +1 -1
- package/dist/cli/components/StatusBar.js +42 -0
- package/dist/cli/components/StatusBar.js.map +1 -0
- package/dist/cli/components/ToolOutput.js +68 -0
- package/dist/cli/components/ToolOutput.js.map +1 -0
- package/dist/cli/components/toolFormat.js +195 -0
- package/dist/cli/components/toolFormat.js.map +1 -0
- package/dist/cli/councilDispatcher.js +1 -1
- package/dist/cli/councilDispatcher.js.map +1 -1
- package/dist/cli/grokOAuth.js +93 -75
- package/dist/cli/grokOAuth.js.map +1 -1
- package/dist/cli/headless.js +137 -0
- package/dist/cli/headless.js.map +1 -0
- package/dist/cli/hooks/chatState.js +139 -0
- package/dist/cli/hooks/chatState.js.map +1 -0
- package/dist/cli/hooks/eventsToMessages.js +42 -11
- package/dist/cli/hooks/eventsToMessages.js.map +1 -1
- package/dist/cli/hooks/messageHelpers.js +72 -15
- package/dist/cli/hooks/messageHelpers.js.map +1 -1
- package/dist/cli/hooks/useBatchedMessages.js +71 -0
- package/dist/cli/hooks/useBatchedMessages.js.map +1 -0
- package/dist/cli/hooks/useChatTurn.js +453 -84
- package/dist/cli/hooks/useChatTurn.js.map +1 -1
- package/dist/cli/hooks/useSession.js +24 -3
- package/dist/cli/hooks/useSession.js.map +1 -1
- package/dist/cli/hooks/useSlashDispatch.js +13 -2
- package/dist/cli/hooks/useSlashDispatch.js.map +1 -1
- package/dist/cli/main.bundled.js +10607 -7889
- package/dist/cli/main.bundled.js.map +4 -4
- package/dist/cli/main.js +120 -2
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/mcp/mcpClient.js +152 -0
- package/dist/cli/mcp/mcpClient.js.map +1 -0
- package/dist/cli/mcp/mcpManager.js +139 -0
- package/dist/cli/mcp/mcpManager.js.map +1 -0
- package/dist/cli/provider/openai-compatible.js +9 -2
- package/dist/cli/provider/openai-compatible.js.map +1 -1
- package/dist/cli/refreshRegistry.js +9 -6
- package/dist/cli/refreshRegistry.js.map +1 -1
- package/dist/cli/runHeadless.js +160 -0
- package/dist/cli/runHeadless.js.map +1 -0
- package/dist/cli/sessionManager.js +1 -1
- package/dist/cli/sessionManager.js.map +1 -1
- package/dist/cli/skillSuggest.js +1 -1
- package/dist/cli/skillsMd.js +155 -0
- package/dist/cli/skillsMd.js.map +1 -0
- package/dist/cli/slashHandlers/branch.js +11 -2
- package/dist/cli/slashHandlers/branch.js.map +1 -1
- package/dist/cli/slashHandlers/git.js +0 -75
- package/dist/cli/slashHandlers/git.js.map +1 -1
- package/dist/cli/slashHandlers/promoteMember.js +25 -0
- package/dist/cli/slashHandlers/promoteMember.js.map +1 -0
- package/dist/cli/slashHandlers/skills.js +16 -0
- package/dist/cli/slashHandlers/skills.js.map +1 -1
- package/dist/cli/slashHandlers/transcript.js +13 -0
- package/dist/cli/slashHandlers/transcript.js.map +1 -0
- package/dist/cli/slashHandlers/updater.js +40 -0
- package/dist/cli/slashHandlers/updater.js.map +1 -0
- package/dist/cli/toolRegistry.js +37 -6
- package/dist/cli/toolRegistry.js.map +1 -1
- package/dist/cli/wizard/firstRun.js +63 -0
- package/dist/cli/wizard/firstRun.js.map +1 -0
- package/dist/cli/wizard/index.js +150 -0
- package/dist/cli/wizard/index.js.map +1 -0
- package/dist/cli/wizard/runWizard.js +137 -0
- package/dist/cli/wizard/runWizard.js.map +1 -0
- package/dist/cli/wizard/useWizardState.js +151 -0
- package/dist/cli/wizard/useWizardState.js.map +1 -0
- package/dist/cli/workspace/paths.js +20 -13
- package/dist/cli/workspace/paths.js.map +1 -1
- package/dist/cli/workspace/storage.js +7 -3
- package/dist/cli/workspace/storage.js.map +1 -1
- package/dist/cli/workspace/stubs.js +122 -44
- package/dist/cli/workspace/stubs.js.map +1 -1
- package/dist/cli/workspace/toolRegistry.js +2 -2
- package/dist/cli/workspace/toolRegistry.js.map +1 -1
- package/dist/cli/workspace/workspaceSummary.js +255 -0
- package/dist/cli/workspace/workspaceSummary.js.map +1 -0
- package/dist/main/core/AgentHarness.js +36 -7
- package/dist/main/core/AgentHarness.js.map +1 -1
- package/dist/main/core/tools/builtin/listFiles.js +43 -5
- package/dist/main/core/tools/builtin/listFiles.js.map +1 -1
- package/dist/main/core/tools/builtin/search.js +28 -120
- package/dist/main/core/tools/builtin/search.js.map +1 -1
- package/package.json +6 -1
- package/dist/cli/oauthCallbackServer.js +0 -207
- package/dist/cli/oauthCallbackServer.js.map +0 -1
- package/dist/main/core/tools/builtin/_walk.js +0 -129
- package/dist/main/core/tools/builtin/_walk.js.map +0 -1
- package/dist/main/core/tools/builtin/diff.js +0 -477
- package/dist/main/core/tools/builtin/diff.js.map +0 -1
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import { setActiveProviderId, setModelForProvider, } from '../providerConfig.js';
|
|
2
|
+
import { setApiKey as setKeyStoreApiKey } from '../keyStore.js';
|
|
3
|
+
const ORDER = ['welcome', 'provider', 'model', 'apikey', 'confirm'];
|
|
4
|
+
function next(s) {
|
|
5
|
+
const idx = ORDER.indexOf(s);
|
|
6
|
+
if (idx === -1 || idx === ORDER.length - 1)
|
|
7
|
+
return null;
|
|
8
|
+
return ORDER[idx + 1];
|
|
9
|
+
}
|
|
10
|
+
function prev(s) {
|
|
11
|
+
const idx = ORDER.indexOf(s);
|
|
12
|
+
if (idx <= 0)
|
|
13
|
+
return null;
|
|
14
|
+
return ORDER[idx - 1];
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Pure-function factory for the wizard state machine. Returned API is
|
|
18
|
+
* stateless from the caller's perspective — pass the same instance to
|
|
19
|
+
* React via `useMemo`.
|
|
20
|
+
*
|
|
21
|
+
* @public
|
|
22
|
+
*/
|
|
23
|
+
export function createWizardState(opts) {
|
|
24
|
+
const persistActive = opts.persistActiveProvider ?? ((id) => setActiveProviderId(id));
|
|
25
|
+
const persistModel = opts.persistModel ?? ((id, m) => setModelForProvider(id, m));
|
|
26
|
+
const persistKey = opts.persistApiKey ?? ((id, k) => setKeyStoreApiKey(id, k));
|
|
27
|
+
let s = {
|
|
28
|
+
step: 'welcome',
|
|
29
|
+
providerCursor: 0,
|
|
30
|
+
apiKeyCursor: 0,
|
|
31
|
+
committed: false,
|
|
32
|
+
};
|
|
33
|
+
const listeners = new Set();
|
|
34
|
+
function notify() {
|
|
35
|
+
for (const l of listeners)
|
|
36
|
+
l();
|
|
37
|
+
}
|
|
38
|
+
const api = {
|
|
39
|
+
get state() {
|
|
40
|
+
return s;
|
|
41
|
+
},
|
|
42
|
+
moveProvider(up) {
|
|
43
|
+
const n = opts.providers.length;
|
|
44
|
+
const c = s.providerCursor;
|
|
45
|
+
s = {
|
|
46
|
+
...s,
|
|
47
|
+
providerCursor: up ? (c - 1 + n) % n : (c + 1) % n,
|
|
48
|
+
};
|
|
49
|
+
notify();
|
|
50
|
+
},
|
|
51
|
+
selectProvider() {
|
|
52
|
+
const provider = opts.providers[s.providerCursor];
|
|
53
|
+
if (!provider)
|
|
54
|
+
return; // shouldn't happen
|
|
55
|
+
s = {
|
|
56
|
+
...s,
|
|
57
|
+
step: 'model',
|
|
58
|
+
providerId: provider.id,
|
|
59
|
+
model: opts.defaultModelFor(provider.id),
|
|
60
|
+
};
|
|
61
|
+
notify();
|
|
62
|
+
},
|
|
63
|
+
setModel(name) {
|
|
64
|
+
const trimmed = name.trim();
|
|
65
|
+
if (!trimmed || !s.providerId)
|
|
66
|
+
return;
|
|
67
|
+
s = { ...s, model: trimmed };
|
|
68
|
+
notify();
|
|
69
|
+
},
|
|
70
|
+
moveApiKey(up) {
|
|
71
|
+
const c = s.apiKeyCursor;
|
|
72
|
+
// 3 options: 0=env, 1=keystore, 2=skip
|
|
73
|
+
s = { ...s, apiKeyCursor: up ? (c - 1 + 3) % 3 : (c + 1) % 3 };
|
|
74
|
+
notify();
|
|
75
|
+
},
|
|
76
|
+
selectApiKey(choice, value) {
|
|
77
|
+
// 'keystore' stores the (trimmed) value; 'env' and 'skip' clear it.
|
|
78
|
+
// Distinguish `value === undefined` (no value provided) from
|
|
79
|
+
// `value === ''` or whitespace-only (empty after trim) — both
|
|
80
|
+
// are guarded at commit time, but the type signature is clearer
|
|
81
|
+
// if we keep `undefined` for "not provided".
|
|
82
|
+
let apiKeyValue;
|
|
83
|
+
if (choice === 'keystore') {
|
|
84
|
+
apiKeyValue = value === undefined ? undefined : value.trim();
|
|
85
|
+
}
|
|
86
|
+
s = {
|
|
87
|
+
...s,
|
|
88
|
+
apiKeyChoice: choice,
|
|
89
|
+
apiKeyValue,
|
|
90
|
+
step: 'confirm',
|
|
91
|
+
};
|
|
92
|
+
notify();
|
|
93
|
+
},
|
|
94
|
+
back() {
|
|
95
|
+
const p = prev(s.step);
|
|
96
|
+
if (!p)
|
|
97
|
+
return;
|
|
98
|
+
s = { ...s, step: p };
|
|
99
|
+
notify();
|
|
100
|
+
},
|
|
101
|
+
commit() {
|
|
102
|
+
if (s.committed || !s.providerId || !s.model)
|
|
103
|
+
return;
|
|
104
|
+
persistActive(s.providerId);
|
|
105
|
+
persistModel(s.providerId, s.model);
|
|
106
|
+
// Persist API key only if user chose 'keystore' AND provided a
|
|
107
|
+
// non-empty value. 'env' means "use env var, don't save" and
|
|
108
|
+
// 'skip' means "no key yet, user will set it later via /login".
|
|
109
|
+
if (s.apiKeyChoice === 'keystore' && s.apiKeyValue && s.apiKeyValue.length > 0) {
|
|
110
|
+
try {
|
|
111
|
+
persistKey(s.providerId, s.apiKeyValue);
|
|
112
|
+
}
|
|
113
|
+
catch (err) {
|
|
114
|
+
// Key persistence failure shouldn't block config commit —
|
|
115
|
+
// the user can re-add the key later via /login. Log to
|
|
116
|
+
// stderr for debuggability, then proceed.
|
|
117
|
+
// eslint-disable-next-line no-console
|
|
118
|
+
console.error(`[zelari-code wizard] failed to persist API key for ${s.providerId}: ` +
|
|
119
|
+
(err instanceof Error ? err.message : String(err)));
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
s = { ...s, committed: true };
|
|
123
|
+
notify();
|
|
124
|
+
},
|
|
125
|
+
};
|
|
126
|
+
// Internal: allow React UI to re-render. We expose `subscribe` so the
|
|
127
|
+
// Ink component can useSyncExternalStore (or call manually in tests).
|
|
128
|
+
api.subscribe = (l) => {
|
|
129
|
+
listeners.add(l);
|
|
130
|
+
return () => listeners.delete(l);
|
|
131
|
+
};
|
|
132
|
+
// Advance to first non-welcome step programmatically — used by tests
|
|
133
|
+
// and by the "skip intro" flag (future).
|
|
134
|
+
api.jumpToProvider = () => {
|
|
135
|
+
s = { ...s, step: 'provider' };
|
|
136
|
+
notify();
|
|
137
|
+
};
|
|
138
|
+
// Advance from model to apikey step (used by runWizard when user
|
|
139
|
+
// confirms the model on step 3).
|
|
140
|
+
api.advanceToApikey = () => {
|
|
141
|
+
if (s.step === 'model') {
|
|
142
|
+
s = { ...s, step: 'apikey' };
|
|
143
|
+
notify();
|
|
144
|
+
}
|
|
145
|
+
};
|
|
146
|
+
return api;
|
|
147
|
+
}
|
|
148
|
+
/** Convenience constants for tests + UI. */
|
|
149
|
+
export const API_KEY_OPTIONS = ['env', 'keystore', 'skip'];
|
|
150
|
+
export const WIZARD_STEPS = ORDER;
|
|
151
|
+
//# sourceMappingURL=useWizardState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useWizardState.js","sourceRoot":"","sources":["../../../src/cli/wizard/useWizardState.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,10 +7,10 @@
|
|
|
7
7
|
* The fallback ensures the workspace always works — even in read-only
|
|
8
8
|
* directories (Docker containers, system dirs, etc.).
|
|
9
9
|
*/
|
|
10
|
-
import { mkdirSync, writeFileSync, existsSync, accessSync, constants, realpathSync } from
|
|
11
|
-
import { join, basename } from
|
|
12
|
-
import { homedir } from
|
|
13
|
-
import { createHash } from
|
|
10
|
+
import { mkdirSync, writeFileSync, existsSync, accessSync, constants, realpathSync, } from "node:fs";
|
|
11
|
+
import { join, basename } from "node:path";
|
|
12
|
+
import { homedir } from "node:os";
|
|
13
|
+
import { createHash } from "node:crypto";
|
|
14
14
|
/**
|
|
15
15
|
* Resolve the workspace root. Returns the first writable option:
|
|
16
16
|
* 1. `<cwd>/.zelari/` if cwd is writable
|
|
@@ -20,8 +20,8 @@ import { createHash } from 'node:crypto';
|
|
|
20
20
|
*/
|
|
21
21
|
export function resolveWorkspaceRoot(projectRoot = process.cwd()) {
|
|
22
22
|
const candidates = [
|
|
23
|
-
join(projectRoot,
|
|
24
|
-
join(homedir(),
|
|
23
|
+
join(projectRoot, ".zelari"),
|
|
24
|
+
join(homedir(), ".zelari-code", "workspace", hashProject(projectRoot)),
|
|
25
25
|
];
|
|
26
26
|
for (const candidate of candidates) {
|
|
27
27
|
if (isWritableDir(projectRoot) || candidate !== candidates[0]) {
|
|
@@ -35,7 +35,10 @@ export function resolveWorkspaceRoot(projectRoot = process.cwd()) {
|
|
|
35
35
|
}
|
|
36
36
|
/** Hash a project path to a stable short id (used in global fallback path). */
|
|
37
37
|
function hashProject(projectPath) {
|
|
38
|
-
return createHash(
|
|
38
|
+
return createHash("sha1")
|
|
39
|
+
.update(realpathSync(projectPath))
|
|
40
|
+
.digest("hex")
|
|
41
|
+
.slice(0, 12);
|
|
39
42
|
}
|
|
40
43
|
/** Check if a directory is writable (creates if missing). */
|
|
41
44
|
function isWritableDir(dir) {
|
|
@@ -53,10 +56,11 @@ function isWritableDir(dir) {
|
|
|
53
56
|
function ensureWorkspaceDir(workspaceDir) {
|
|
54
57
|
mkdirSync(workspaceDir, { recursive: true });
|
|
55
58
|
// Auto-gitignore ONLY if workspace is project-local AND inside a git repo
|
|
56
|
-
if (workspaceDir.endsWith(
|
|
57
|
-
|
|
59
|
+
if (workspaceDir.endsWith("/.zelari") &&
|
|
60
|
+
existsSync(join(workspaceDir, "..", ".git"))) {
|
|
61
|
+
const gitignorePath = join(workspaceDir, ".gitignore");
|
|
58
62
|
if (!existsSync(gitignorePath)) {
|
|
59
|
-
writeFileSync(gitignorePath,
|
|
63
|
+
writeFileSync(gitignorePath, "*\n!.gitignore\n");
|
|
60
64
|
}
|
|
61
65
|
}
|
|
62
66
|
}
|
|
@@ -72,9 +76,12 @@ export const WORKSPACE_SUBDIRS = [
|
|
|
72
76
|
/** Get the absolute path to a standard workspace file. */
|
|
73
77
|
export function workspaceFile(rootDir, kind) {
|
|
74
78
|
switch (kind) {
|
|
75
|
-
case
|
|
76
|
-
|
|
77
|
-
case
|
|
79
|
+
case "plan":
|
|
80
|
+
return join(rootDir, "plan.md");
|
|
81
|
+
case "risks":
|
|
82
|
+
return join(rootDir, "risks.md");
|
|
83
|
+
case "index":
|
|
84
|
+
return join(rootDir, "workspace.json");
|
|
78
85
|
}
|
|
79
86
|
}
|
|
80
87
|
/** Get the absolute path to a numbered artifact in a subdir. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../../src/cli/workspace/paths.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../../src/cli/workspace/paths.ts"],"names":[],"mappings":"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"}
|
|
@@ -374,15 +374,19 @@ class KeyedMutex {
|
|
|
374
374
|
const prev = this.chains.get(key) ?? Promise.resolve();
|
|
375
375
|
let release = () => { };
|
|
376
376
|
const next = new Promise((resolve) => { release = resolve; });
|
|
377
|
-
|
|
377
|
+
// v0.7.3: keep the chained promise in a variable — the old cleanup
|
|
378
|
+
// compared against a FRESH `prev.then(...)` promise, so it never matched
|
|
379
|
+
// and entries leaked forever.
|
|
380
|
+
const chained = prev.then(() => next);
|
|
381
|
+
this.chains.set(key, chained);
|
|
378
382
|
await prev;
|
|
379
383
|
try {
|
|
380
384
|
return await fn();
|
|
381
385
|
}
|
|
382
386
|
finally {
|
|
383
387
|
release();
|
|
384
|
-
// Cleanup if this was the last in chain
|
|
385
|
-
if (this.chains.get(key) ===
|
|
388
|
+
// Cleanup if this was the last in chain.
|
|
389
|
+
if (this.chains.get(key) === chained) {
|
|
386
390
|
this.chains.delete(key);
|
|
387
391
|
}
|
|
388
392
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.js","sourceRoot":"","sources":["../../../src/cli/workspace/storage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EACL,YAAY,EACZ,aAAa,EACb,UAAU,EACV,SAAS,EACT,WAAW,EACX,UAAU,GACX,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE1C,0EAA0E;AAE1E,MAAM,cAAc,GAAG,6CAA6C,CAAC;AAQrE,gDAAgD;AAChD,MAAM,UAAU,gBAAgB,CAC9B,EAAU;IAEV,MAAM,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClC,IAAI,CAAC,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,EAAW,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;IAC/C,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAU,CAAC;IACtC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAClB,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACxB,CAAC;AAED,uDAAuD;AACvD,MAAM,UAAU,oBAAoB,CAClC,IAAW,EACX,IAAY;IAEZ,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IACpC,6DAA6D;IAC7D,OAAO,QAAQ,OAAO,UAAU,IAAI,EAAE,CAAC;AACzC,CAAC;AAED,0EAA0E;AAC1E,+EAA+E;AAE/E,MAAM,aAAa,GAAG,wBAAwB,CAAC;AAE/C,kDAAkD;AAClD,MAAM,UAAU,SAAS,CAAC,KAAa;IACrC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACnC,MAAM,GAAG,GAAa,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IACtC,OAAO,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAC3B,CAAC;AAOD,SAAS,SAAS,CAAC,GAAa,EAAE,MAAc;IAC9C,gCAAgC;IAChC,OAAO,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QAChC,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC9B,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAAC,SAAS;QAAC,CAAC;QAC7E,MAAM;IACR,CAAC;IACD,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAE3C,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC9B,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IAErC,gCAAgC;IAChC,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1B,OAAO,kBAAkB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACzC,CAAC;IAED,wCAAwC;IACxC,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC/D,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAED,6CAA6C;IAC7C,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC/D,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED,wDAAwD;IACxD,OAAO,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,aAAa,CAAC,GAAa,EAAE,MAAc;IAClD,MAAM,GAAG,GAA4B,EAAE,CAAC;IACxC,OAAO,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QAChC,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC9B,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAAC,SAAS;QAAC,CAAC;QAC7E,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,UAAU,GAAG,MAAM;YAAE,MAAM;QAC/B,IAAI,UAAU,GAAG,MAAM,EAAE,CAAC;YACxB,0CAA0C;YAC1C,GAAG,CAAC,CAAC,EAAE,CAAC;YACR,SAAS;QACX,CAAC;QACD,aAAa;QACb,MAAM,CAAC,GAAG,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,CAAC,CAAC,EAAE,CAAC;YAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAAC,SAAS;QAAC,CAAC;QAC9B,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACxB,MAAM,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAE9B,IAAI,SAAS,KAAK,EAAE,IAAI,SAAS,KAAK,GAAG,IAAI,SAAS,KAAK,GAAG,EAAE,CAAC;YAC/D,sCAAsC;YACtC,GAAG,CAAC,CAAC,EAAE,CAAC;YACR,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC;YAC1C,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;QACpB,CAAC;aAAM,CAAC;YACN,sDAAsD;YACtD,IAAI,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC9B,GAAG,CAAC,GAAG,CAAC,GAAG,iBAAiB,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;YAC/D,CAAC;iBAAM,IAAI,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACrC,+DAA+D;gBAC/D,GAAG,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;YAC1D,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;YACpC,CAAC;YACD,GAAG,CAAC,CAAC,EAAE,CAAC;QACV,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,kBAAkB,CAAC,GAAa,EAAE,MAAc;IACvD,MAAM,GAAG,GAAc,EAAE,CAAC;IAC1B,OAAO,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QAChC,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC9B,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAAC,SAAS;QAAC,CAAC;QAC9C,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,UAAU,GAAG,MAAM;YAAE,MAAM;QAC/B,IAAI,UAAU,GAAG,MAAM;YAAE,MAAM,CAAC,mBAAmB;QACnD,MAAM,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,CAAC;YAAE,MAAM;QACd,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAClB,IAAI,IAAI,KAAK,EAAE,EAAE,CAAC;YAChB,uCAAuC;YACvC,GAAG,CAAC,CAAC,EAAE,CAAC;YACR,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;QACvC,CAAC;aAAM,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACxD,2CAA2C;YAC3C,+BAA+B;YAC/B,IAAI,MAAM,GAAG,IAAI,CAAC;YAClB,4EAA4E;YAC5E,IAAI,OAAO,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;YACtF,IAAI,OAAO,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;YACtF,OAAO,CAAC,OAAO,GAAG,CAAC,IAAI,OAAO,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;gBACpE,GAAG,CAAC,CAAC,EAAE,CAAC;gBACR,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBACrC,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC;gBACrB,OAAO,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;gBAClF,OAAO,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;YACpF,CAAC;YACD,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC3B,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;YAClE,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;YAC7D,CAAC;YACD,GAAG,CAAC,CAAC,EAAE,CAAC;QACV,CAAC;aAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9B,mDAAmD;YACnD,yEAAyE;YACzE,GAAG,CAAC,CAAC,EAAE,CAAC;YACR,MAAM,MAAM,GAAa,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;YACrG,MAAM,GAAG,GAAG,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC;YAC9C,uEAAuE;YACvE,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC;YACtB,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChB,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;YAC5B,GAAG,CAAC,CAAC,EAAE,CAAC;QACV,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAa;IACtC,yDAAyD;IACzD,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IAC/B,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACrB,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QACzB,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5B,uDAAuD;YACvD,OAAO,YAAY,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;QACpD,CAAC;QACD,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;AACL,CAAC;AAED,mEAAmE;AACnE,SAAS,SAAS,CAAC,CAAS,EAAE,IAAY,EAAE,KAAa;IACvD,IAAI,GAAG,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACnB,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC7C,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAChD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,YAAY,CAAC,KAAa;IACjC,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IAC/B,MAAM,GAAG,GAA4B,EAAE,CAAC;IACxC,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,QAAQ,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,QAAQ,GAAG,CAAC;YAAE,SAAS;QAC3B,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QACxC,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC3C,GAAG,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,SAAS,CAAC,KAAa;IAC9B,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC;IAC1C,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACnB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YAC3B,OAAO,GAAG,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5C,MAAM,IAAI,CAAC,CAAC;QACd,CAAC;aAAM,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC,KAAK,GAAG;gBAAE,OAAO,EAAE,CAAC;iBACpB,IAAI,CAAC,KAAK,GAAG;gBAAE,OAAO,EAAE,CAAC;iBACzB,IAAI,CAAC,KAAK,GAAG;gBAAE,OAAO,EAAE,CAAC;iBACzB,IAAI,CAAC,KAAK,GAAG;gBAAE,OAAO,EAAE,CAAC;iBACzB,IAAI,CAAC,KAAK,GAAG,IAAI,OAAO,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;gBACrD,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACjB,MAAM,GAAG,EAAE,CAAC;gBACZ,SAAS;YACX,CAAC;YACD,MAAM,IAAI,CAAC,CAAC;QACd,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,CAAC,CAAC;QACd,CAAC;IACH,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,EAAE;QAAE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACpC,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,WAAW,CAAC,CAAS;IAC5B,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,GAAG;QAAE,OAAO,IAAI,CAAC;IACvD,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC;IAC7D,SAAS;IACT,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;IAChD,gBAAgB;IAChB,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QACrF,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACxB,CAAC;IACD,yBAAyB;IACzB,OAAO,CAAC,CAAC;AACX,CAAC;AAED,yEAAyE;AAEzE,oDAAoD;AACpD,MAAM,UAAU,aAAa,CAAC,KAAc,EAAE,MAAM,GAAG,CAAC;IACtD,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACrD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,kCAAkC;QAClC,IAAI,2BAA2B,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5C,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IAClF,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,2EAA2E;QAC3E,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QACpC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,CAAC,EAAE,CAAC;YAC5D,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;QAC5D,CAAC;QACD,+DAA+D;QAC/D,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,qBAAqB,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;IAClF,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;QACpG,OAAO,OAAO;aACX,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE;YACd,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS;gBAAE,OAAO,GAAG,CAAC,GAAG,CAAC;YAClD,mDAAmD;YACnD,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,SAAS,EAAE,CAAC;gBAC7E,OAAO,GAAG,CAAC,KAAK,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7C,CAAC;YACD,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;gBACrB,iDAAiD;gBACjD,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;oBAAE,OAAO,GAAG,CAAC,MAAM,CAAC;gBACtC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,CAAC,EAAE,CAAC;oBACxD,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;gBAC9D,CAAC;gBACD,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,qBAAqB,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;YACpF,CAAC;YACD,4DAA4D;YAC5D,OAAO,GAAG,CAAC,MAAM,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;QAClD,CAAC,CAAC;aACD,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC;aAC7C,IAAI,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED,SAAS,qBAAqB,CAAC,CAAU;IACvC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,2BAA2B,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAC3F,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;AACnB,CAAC;AAED,oFAAoF;AACpF,SAAS,qBAAqB,CAAC,CAAU;IACvC,IAAI,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5D,OAAO,qBAAqB,CAAC,CAAC,CAAC,CAAC;IAClC,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAA4B,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC;IACpG,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7E,CAAC;AAED,SAAS,WAAW,CAAC,IAAY;IAC/B,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG;QAAE,CAAC,EAAE,CAAC;IAC/C,OAAO,CAAC,CAAC;AACX,CAAC;AAED,yEAAyE;AAEzE,MAAM,OAAO,OAAO;IAClB,kEAAkE;IAClE,IAAI,CAAkC,IAAY;QAChD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC;QAC7C,CAAC;QACD,MAAM,EAAE,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACtC,OAAO,gBAAgB,CAAQ,EAAE,CAAC,CAAC;IACrC,CAAC;IAED,uDAAuD;IACvD,YAAY,CAAkC,IAAY;QACxD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QACnC,OAAO,IAAI,CAAC,IAAI,CAAQ,IAAI,CAAC,CAAC;IAChC,CAAC;IAED;;;OAGG;IACH,KAAK,CAAQ,IAAY,EAAE,IAAW,EAAE,IAAY;QAClD,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9C,MAAM,GAAG,GAAG,IAAI,GAAG,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC;QACzC,MAAM,EAAE,GAAG,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC5C,aAAa,CAAC,GAAG,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;QAC/B,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,kBAAkB;IAC3C,CAAC;IAED,yDAAyD;IACzD,YAAY,CAAC,GAAW;QACtB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO,EAAE,CAAC;QAChC,OAAO,WAAW,CAAC,GAAG,CAAC;aACpB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;aACtD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9B,CAAC;CACF;AAED,gEAAgE;AAChE,MAAM,UAAU;IACN,MAAM,GAAG,IAAI,GAAG,EAAyB,CAAC;IAClD,KAAK,CAAC,GAAG,CAAI,GAAW,EAAE,EAAwB;QAChD,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACvD,IAAI,OAAO,GAAe,GAAG,EAAE,GAAE,CAAC,CAAC;QACnC,MAAM,IAAI,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,GAAG,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QACpE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5C,MAAM,IAAI,CAAC;QACX,IAAI,CAAC;YACH,OAAO,MAAM,EAAE,EAAE,CAAC;QACpB,CAAC;gBAAS,CAAC;YACT,OAAO,EAAE,CAAC;YACV,wCAAwC;YACxC,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;IACH,CAAC;CACF;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,UAAU,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"storage.js","sourceRoot":"","sources":["../../../src/cli/workspace/storage.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,8 +11,8 @@
|
|
|
11
11
|
*
|
|
12
12
|
* @see docs/plans/2026-07-01-council-workspace-cli-stubs.md
|
|
13
13
|
*/
|
|
14
|
-
import { existsSync, readdirSync, readFileSync } from 'node:fs';
|
|
15
|
-
import { join } from 'node:path';
|
|
14
|
+
import { existsSync, readdirSync, writeFileSync, readFileSync, mkdirSync, renameSync } from 'node:fs';
|
|
15
|
+
import { join, basename, dirname, relative } from 'node:path';
|
|
16
16
|
import { workspaceMutex } from './storage.js';
|
|
17
17
|
import { resolveWorkspaceRoot, workspaceFile, workspaceArtifact, projectName as deriveProjectName, } from './paths.js';
|
|
18
18
|
import { Storage } from './storage.js';
|
|
@@ -29,49 +29,64 @@ export function createWorkspaceContext(projectRoot = process.cwd()) {
|
|
|
29
29
|
storage: new Storage(),
|
|
30
30
|
};
|
|
31
31
|
}
|
|
32
|
+
/** Path of the machine-readable plan store (source of truth since v0.7.3). */
|
|
33
|
+
function planJsonPath(ctx) {
|
|
34
|
+
return join(ctx.rootDir, 'plan.json');
|
|
35
|
+
}
|
|
32
36
|
function readPlan(ctx) {
|
|
37
|
+
// v0.7.3: the plan's source of truth is plan.json. The previous
|
|
38
|
+
// implementation round-tripped the whole summary through the handwritten
|
|
39
|
+
// YAML-subset frontmatter of plan.md; free-text names/descriptions with
|
|
40
|
+
// colons, commas, and apostrophes corrupted the flow-map parse, so a phase
|
|
41
|
+
// written by createPhase could be unreadable one call later ("Phase not
|
|
42
|
+
// found" right after "Phase created", live test 2026-07-02). plan.md is
|
|
43
|
+
// now only the human-readable rendering.
|
|
44
|
+
const jsonPath = planJsonPath(ctx);
|
|
45
|
+
if (existsSync(jsonPath)) {
|
|
46
|
+
try {
|
|
47
|
+
const parsed = JSON.parse(readFileSync(jsonPath, 'utf8'));
|
|
48
|
+
return {
|
|
49
|
+
phases: Array.isArray(parsed.phases) ? parsed.phases : [],
|
|
50
|
+
tasks: Array.isArray(parsed.tasks) ? parsed.tasks : [],
|
|
51
|
+
milestones: Array.isArray(parsed.milestones) ? parsed.milestones : [],
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
// Corrupt plan.json — fall through to the legacy migration read.
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
// Legacy migration: one best-effort parse of the old plan.md frontmatter
|
|
59
|
+
// (pre-v0.7.3 files). The next writePlan persists it as plan.json.
|
|
33
60
|
const path = workspaceFile(ctx.rootDir, 'plan');
|
|
34
61
|
const doc = ctx.storage.readIfExists(path);
|
|
35
62
|
if (!doc)
|
|
36
63
|
return { phases: [], tasks: [], milestones: [] };
|
|
37
|
-
// The plan.md body is markdown; the frontmatter is a single "summary" object.
|
|
38
|
-
// We treat the file as a single doc with `kind: plan` and a body listing items.
|
|
39
|
-
// For our needs we just persist individual items to disk separately.
|
|
40
|
-
// But for v1 we serialize the entire plan as one doc with a list of phases/tasks/milestones in the body.
|
|
41
|
-
// Simpler: we store ONE phase/task/milestone per file under `.zelari/plan/<id>.md`.
|
|
42
|
-
// TODO: refactor for v2 if plan gets large.
|
|
43
|
-
const items = [];
|
|
44
|
-
// For now, parse the doc.meta as the entire plan state (kind=plan, has children fields).
|
|
45
64
|
const meta = doc.meta;
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
65
|
+
return {
|
|
66
|
+
phases: Array.isArray(meta.phases) ? meta.phases : [],
|
|
67
|
+
tasks: Array.isArray(meta.tasks) ? meta.tasks : [],
|
|
68
|
+
milestones: Array.isArray(meta.milestones) ? meta.milestones : [],
|
|
69
|
+
};
|
|
49
70
|
}
|
|
50
71
|
/**
|
|
51
|
-
* Write the entire plan (phases + tasks + milestones)
|
|
52
|
-
*
|
|
72
|
+
* Write the entire plan (phases + tasks + milestones):
|
|
73
|
+
* - plan.json — lossless machine-readable source of truth (atomic write).
|
|
74
|
+
* - plan.md — human-readable rendering only (no machine-parsed arrays in
|
|
75
|
+
* the frontmatter, so the fragile YAML round-trip is gone).
|
|
53
76
|
*/
|
|
54
77
|
function writePlan(ctx, summary) {
|
|
55
|
-
const
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
};
|
|
62
|
-
// We pack phases/tasks/milestones in a synthetic frontmatter using flow-style.
|
|
63
|
-
// Easier: just store each item's key fields inline as comments? No — keep them
|
|
64
|
-
// parseable. We use a special frontmatter shape with arrays.
|
|
78
|
+
const jsonPath = planJsonPath(ctx);
|
|
79
|
+
mkdirSync(dirname(jsonPath), { recursive: true });
|
|
80
|
+
const tmp = jsonPath + '.tmp-' + process.pid;
|
|
81
|
+
writeFileSync(tmp, JSON.stringify(summary, null, 2), 'utf8');
|
|
82
|
+
renameSync(tmp, jsonPath);
|
|
83
|
+
const mdPath = workspaceFile(ctx.rootDir, 'plan');
|
|
65
84
|
const summaryMeta = {
|
|
66
85
|
kind: 'plan-summary',
|
|
67
86
|
id: '_plan',
|
|
68
87
|
updatedAt: new Date().toISOString(),
|
|
69
|
-
phases: summary.phases,
|
|
70
|
-
tasks: summary.tasks,
|
|
71
|
-
milestones: summary.milestones,
|
|
72
88
|
};
|
|
73
|
-
|
|
74
|
-
ctx.storage.write(path, summaryMeta, body);
|
|
89
|
+
ctx.storage.write(mdPath, summaryMeta, renderPlanBody(summary));
|
|
75
90
|
}
|
|
76
91
|
/** Render the plan.md body in human-readable Markdown. */
|
|
77
92
|
function renderPlanBody(summary) {
|
|
@@ -227,6 +242,9 @@ function createTaskStub(ctx) {
|
|
|
227
242
|
summary.tasks.push({
|
|
228
243
|
kind: 'task',
|
|
229
244
|
id,
|
|
245
|
+
// v0.7.3: keep the human-readable title in plan.json so
|
|
246
|
+
// buildPlanSummary can render it in the system prompt.
|
|
247
|
+
name: title,
|
|
230
248
|
phaseId,
|
|
231
249
|
status: 'pending',
|
|
232
250
|
priority: priority,
|
|
@@ -273,12 +291,21 @@ function updateTaskStub(ctx) {
|
|
|
273
291
|
execute: async (args) => {
|
|
274
292
|
return workspaceMutex.run(`${ctx.rootDir}:plan`, () => {
|
|
275
293
|
const taskId = args['taskId'];
|
|
276
|
-
const
|
|
277
|
-
if (!taskId || !
|
|
294
|
+
const rawStatus = args['status'];
|
|
295
|
+
if (!taskId || !rawStatus)
|
|
278
296
|
return 'updateTask requires taskId and status.';
|
|
279
297
|
const valid = ['pending', 'in_progress', 'done', 'blocked'];
|
|
280
|
-
|
|
281
|
-
|
|
298
|
+
// v0.7.3: models routinely use kanban vocabulary ("todo", "completed")
|
|
299
|
+
// — map the common synonyms instead of erroring on each attempt.
|
|
300
|
+
const aliases = {
|
|
301
|
+
'todo': 'pending', 'to-do': 'pending', 'open': 'pending', 'backlog': 'pending',
|
|
302
|
+
'in-progress': 'in_progress', 'in progress': 'in_progress', 'doing': 'in_progress', 'started': 'in_progress', 'active': 'in_progress',
|
|
303
|
+
'complete': 'done', 'completed': 'done', 'finished': 'done', 'closed': 'done', 'resolved': 'done',
|
|
304
|
+
'stuck': 'blocked', 'waiting': 'blocked', 'on-hold': 'blocked', 'on hold': 'blocked',
|
|
305
|
+
};
|
|
306
|
+
const status = valid.includes(rawStatus) ? rawStatus : aliases[rawStatus.toLowerCase()];
|
|
307
|
+
if (!status)
|
|
308
|
+
return `Invalid status: ${rawStatus}. Must be one of: ${valid.join(', ')}.`;
|
|
282
309
|
const summary = readPlan(ctx);
|
|
283
310
|
const task = summary.tasks.find((t) => t.id === taskId);
|
|
284
311
|
if (!task)
|
|
@@ -411,21 +438,52 @@ function createDocumentStub(ctx) {
|
|
|
411
438
|
},
|
|
412
439
|
};
|
|
413
440
|
}
|
|
441
|
+
/**
|
|
442
|
+
* After this many searchDocuments calls in one council run, every further
|
|
443
|
+
* result carries a nudge to stop searching and act. Live test 2026-07-02:
|
|
444
|
+
* one member burned ~25 near-identical searches (each phrased slightly
|
|
445
|
+
* differently, so the duplicate-call cache never tripped) before doing any
|
|
446
|
+
* actual work.
|
|
447
|
+
*/
|
|
448
|
+
const SEARCH_NUDGE_THRESHOLD = 5;
|
|
414
449
|
function searchDocumentsStub(ctx) {
|
|
450
|
+
let callCount = 0;
|
|
415
451
|
return {
|
|
416
452
|
name: 'searchDocuments',
|
|
417
|
-
description: 'Search all workspace documents (`.zelari/**`) for a keyword. Returns matching files with snippets.'
|
|
453
|
+
description: 'Search all workspace documents (`.zelari/**`) for a keyword. Returns matching files with snippets. ' +
|
|
454
|
+
'Search AT MOST 2-3 times, then act on the results: read the matched files with read_file instead of rephrasing the same search.',
|
|
418
455
|
category: 'analysis',
|
|
419
456
|
parameters: [],
|
|
420
457
|
execute: async (args) => {
|
|
421
|
-
|
|
458
|
+
callCount++;
|
|
459
|
+
const nudge = callCount > SEARCH_NUDGE_THRESHOLD
|
|
460
|
+
? `[note] This is searchDocuments call #${callCount} in this run — STOP searching. Read the files you already found with read_file and act on them.\n\n`
|
|
461
|
+
: '';
|
|
462
|
+
const rawQuery = (args['query'] ?? '').trim();
|
|
422
463
|
const limit = args['limit'] ?? 5;
|
|
423
|
-
if (!
|
|
464
|
+
if (!rawQuery)
|
|
424
465
|
return 'searchDocuments requires a query.';
|
|
466
|
+
// v0.7.3: models routinely write boolean-ish queries ("plan OR phase OR
|
|
467
|
+
// milestone"). The previous implementation substring-matched the WHOLE
|
|
468
|
+
// query string, so every OR query — and any multi-word query that didn't
|
|
469
|
+
// appear verbatim — returned "No matches" even for documents created
|
|
470
|
+
// seconds earlier. Match any OR-phrase first, then fall back to
|
|
471
|
+
// any-word matching per file.
|
|
472
|
+
const phrases = rawQuery
|
|
473
|
+
.toLowerCase()
|
|
474
|
+
.split(/\s+or\s+/i)
|
|
475
|
+
.map((p) => p.trim())
|
|
476
|
+
.filter((p) => p.length > 0);
|
|
477
|
+
const words = rawQuery
|
|
478
|
+
.toLowerCase()
|
|
479
|
+
.split(/[^a-z0-9_-]+/)
|
|
480
|
+
.filter((w) => w.length >= 3 && w !== 'or' && w !== 'and' && w !== 'the');
|
|
425
481
|
const files = [
|
|
426
482
|
...ctx.storage.listMarkdown(join(ctx.rootDir, 'decisions')),
|
|
427
483
|
...ctx.storage.listMarkdown(join(ctx.rootDir, 'docs')),
|
|
428
484
|
...ctx.storage.listMarkdown(join(ctx.rootDir, 'reviews')),
|
|
485
|
+
...ctx.storage.listMarkdown(join(ctx.rootDir, 'plan-tasks')),
|
|
486
|
+
...ctx.storage.listMarkdown(join(ctx.rootDir, 'milestones')),
|
|
429
487
|
workspaceFile(ctx.rootDir, 'plan'),
|
|
430
488
|
workspaceFile(ctx.rootDir, 'risks'),
|
|
431
489
|
];
|
|
@@ -433,20 +491,40 @@ function searchDocumentsStub(ctx) {
|
|
|
433
491
|
for (const file of files) {
|
|
434
492
|
if (!existsSync(file))
|
|
435
493
|
continue;
|
|
436
|
-
const
|
|
437
|
-
const
|
|
494
|
+
const raw = readFileSync(file, 'utf8');
|
|
495
|
+
const content = raw.toLowerCase();
|
|
496
|
+
let idx = -1;
|
|
497
|
+
let matchLen = 0;
|
|
498
|
+
for (const p of phrases) {
|
|
499
|
+
const i = content.indexOf(p);
|
|
500
|
+
if (i >= 0) {
|
|
501
|
+
idx = i;
|
|
502
|
+
matchLen = p.length;
|
|
503
|
+
break;
|
|
504
|
+
}
|
|
505
|
+
}
|
|
506
|
+
if (idx < 0) {
|
|
507
|
+
for (const w of words) {
|
|
508
|
+
const i = content.indexOf(w);
|
|
509
|
+
if (i >= 0) {
|
|
510
|
+
idx = i;
|
|
511
|
+
matchLen = w.length;
|
|
512
|
+
break;
|
|
513
|
+
}
|
|
514
|
+
}
|
|
515
|
+
}
|
|
438
516
|
if (idx < 0)
|
|
439
517
|
continue;
|
|
440
518
|
const start = Math.max(0, idx - 40);
|
|
441
|
-
const end = Math.min(
|
|
442
|
-
const snippet = '…' +
|
|
443
|
-
results.push({ path: file, snippet });
|
|
519
|
+
const end = Math.min(raw.length, idx + matchLen + 40);
|
|
520
|
+
const snippet = '…' + raw.slice(start, end).replace(/\n/g, ' ').trim() + '…';
|
|
521
|
+
results.push({ path: relative(ctx.rootDir, file) || basename(file), snippet });
|
|
444
522
|
if (results.length >= limit)
|
|
445
523
|
break;
|
|
446
524
|
}
|
|
447
525
|
if (results.length === 0)
|
|
448
|
-
return
|
|
449
|
-
return results.map((r) => `[${r.path}]\n${r.snippet}`).join('\n\n');
|
|
526
|
+
return `${nudge}No matches for "${rawQuery}" in workspace.`;
|
|
527
|
+
return nudge + results.map((r) => `[${r.path}]\n${r.snippet}`).join('\n\n');
|
|
450
528
|
},
|
|
451
529
|
};
|
|
452
530
|
}
|