@cr8rcho/alkahest 0.1.18 → 0.1.20
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.ko.md +24 -3
- package/README.md +19 -3
- package/dist/assets/dashboard.html +13 -6
- package/dist/cli.js +60 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/issues.d.ts +32 -0
- package/dist/commands/issues.js +93 -0
- package/dist/commands/issues.js.map +1 -0
- package/dist/core/issues.d.ts +138 -0
- package/dist/core/issues.js +123 -0
- package/dist/core/issues.js.map +1 -0
- package/dist/mcp/server.js +125 -0
- package/dist/mcp/server.js.map +1 -1
- package/package.json +1 -1
package/README.ko.md
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
UI 코드베이스를 **정적 분석**해 **제품 지도(Product Map)** 를 만드는 CLI입니다.
|
|
8
8
|
화면을 노드로, 화면 간 이동과 화면이 부르는 API/데이터 호출을 엣지로 뽑아내, 인터랙티브 대시보드로 보여주고 PRD·요구사항 작성을 돕습니다.
|
|
9
9
|
|
|
10
|
-
플랫폼은 **어댑터로 확장**합니다 —
|
|
10
|
+
플랫폼은 **어댑터로 확장**합니다 — **현재 21개**: React(Next.js·React Router·Remix), Vue(Nuxt·Vue Router), Angular, Svelte, Astro, React Native, SwiftUI/UIKit, Jetpack Compose, Flutter, 서버사이드 Django/Flask/Rails(+ 순수 HTML). 데이터 모델이 플랫폼 무관이라 새 프레임워크는 어댑터 하나만 추가하면 됩니다.
|
|
11
11
|
|
|
12
12
|
레퍼런스들(graphify·codegraph·Understand-Anything)이 *코드 심볼* 그래프라면, Alkahest는 한 단계 위 **화면(screen) 레벨의 제품 이해**를 목표로 합니다 — 대상 사용자는 **PM/기획자**.
|
|
13
13
|
|
|
@@ -93,6 +93,11 @@ alkahest hook install # 커밋·머지 시 scan 자동 실행 (diff 자동 갱
|
|
|
93
93
|
alkahest mcp # MCP 서버 실행 (에이전트가 제품 지도를 질의, 키 불필요)
|
|
94
94
|
alkahest login # publish 토큰 저장 (alkahest.app → Account → Create token)
|
|
95
95
|
alkahest publish # 지도를 hosted 뷰어에 업로드 → 공유 링크
|
|
96
|
+
alkahest comments pull # 발행된 지도에 달린 댓글 가져오기 → .alkahest/comments.json
|
|
97
|
+
alkahest comments issue <ids…> # 선택한 댓글들을 GitHub 이슈 하나로 파일링(gh) + 역링크
|
|
98
|
+
alkahest issues pull # 프로젝트의 Issue Map(그래프형 이슈 트래커) 가져오기 → .alkahest/issues.json
|
|
99
|
+
alkahest issues add <제목> # 이슈 생성 (--parent 에픽, --target s:…/r:…//route, --type/--status)
|
|
100
|
+
alkahest issues done <id> # 이슈 완료 처리 (그 외: status / link / rm)
|
|
96
101
|
alkahest update # 최신 GitHub 릴리스로 업데이트 (--check: 확인만)
|
|
97
102
|
```
|
|
98
103
|
|
|
@@ -136,6 +141,14 @@ claude mcp add alkahest -s project -- alkahest mcp
|
|
|
136
141
|
| `set_summary` | 화면에 한 줄 요약 저장 → 대시보드 패널에 표시 |
|
|
137
142
|
| `set_prd` | 화면에 PRD/요구사항 마크다운 저장 → 패널에 렌더 |
|
|
138
143
|
| `publish` | 지도를 hosted 뷰어에 올려 공유 링크 생성 (토큰 필요, 아래 참고) |
|
|
144
|
+
| `comments` | 발행된 지도에 달린 댓글 목록 — 각 댓글에 코드 위치를 조인: 화면 댓글 → 소스 파일/라우트 + 화면 요소(라인 번호), 리소스 댓글 → 그 엔드포인트를 부르는 화면들(파일+라인). 피드백을 에디터 안에서 처리 가능 (토큰 필요) |
|
|
145
|
+
| `resolve_comment` | 처리한 댓글을 resolve(또는 reopen) (토큰 필요) |
|
|
146
|
+
| `add_comment` / `reply_comment` | 지도 노드에 새 댓글 작성 / 기존 댓글에 답글 (토큰 필요) |
|
|
147
|
+
| `comment_to_issue` | 댓글 여러 개를 GitHub 이슈 하나로 묶어 파일링(로컬 `gh` 사용)하고 역링크 — hosted 뷰어에 "tracked" 배지 표시 (토큰 필요) |
|
|
148
|
+
| `issues` | 프로젝트의 **Issue Map** 읽기 — 의존성이 1급인 그래프형 이슈 트래커. 각 이슈에 파생 상태 `done`·`actionable`(막는 미완료 이슈 없음)이 붙어 다음 할 일을 고를 수 있음 (토큰 필요) |
|
|
149
|
+
| `add_issue` | 사용자와 기획하며 이슈 생성 — `parent_id`로 에픽 아래 묶고, `target`으로 코드 맵에 연결(기존 노드 키, 또는 아직 없는 `/route` — 화면이 실제로 생기면 자동 수렴) (토큰 필요) |
|
|
150
|
+
| `update_issue` | 상태 이동(작업 완료 시 done — 진행 상황이 맵에 칠해짐)·필드 수정·삭제 (토큰 필요) |
|
|
151
|
+
| `link_issues` | 이슈 간 엣지 추가/제거: `blocks`(의존성)·`contains`(에픽→태스크)·`relates` (토큰 필요) |
|
|
139
152
|
| `check_version` | 설치 버전 vs 최신 GitHub 릴리스 보고 (에이전트가 `alkahest update` 안내 가능) |
|
|
140
153
|
|
|
141
154
|
에이전트는 `get_screen` / `who_calls` 로 읽고 `set_summary` / `set_prd` 로 써넣습니다. 둘 다 `map.json`에 기록하고 `index.html`을 재생성하므로 대시보드가 항상 최신입니다.
|
|
@@ -182,7 +195,15 @@ claude mcp add alkahest -s project \
|
|
|
182
195
|
|
|
183
196
|
## 지원 범위 / 한계
|
|
184
197
|
|
|
185
|
-
|
|
198
|
+
어댑터(21개, `src/core/adapters/`), 프레임워크별:
|
|
199
|
+
|
|
200
|
+
- **React** — Next.js(app·pages router), React Router(Vite/CRA), Remix, 순수 JSX
|
|
201
|
+
- **Vue** — Nuxt, Vue Router, Vue SFC · **Angular** · **Svelte**(SvelteKit) · **Astro**
|
|
202
|
+
- **React Native** — Expo Router, React Navigation
|
|
203
|
+
- **iOS** — SwiftUI, UIKit · **Android** — Jetpack Compose · **Flutter**
|
|
204
|
+
- 서버사이드 — **Django**, **Flask**, **Rails** · 순수 멀티페이지 **HTML**
|
|
205
|
+
|
|
206
|
+
소스 → 그래프 매핑 예시 두 가지:
|
|
186
207
|
|
|
187
208
|
| 어댑터 | 화면 | 이동 | 호출 |
|
|
188
209
|
|---|---|---|---|
|
|
@@ -190,7 +211,7 @@ claude mcp add alkahest -s project \
|
|
|
190
211
|
| **SwiftUI** | `struct X: View` | `NavigationLink`·`.sheet`·`.fullScreenCover`·`navigationDestination` | `URL(string:)`·`URLRequest` |
|
|
191
212
|
|
|
192
213
|
- **한계**: 파일/뷰 단위로 파싱 — 임포트한 자식 컴포넌트 내부의 기능/호출은 아직 미추적. 동적 대상(`router.push(변수)`, `useQuery` 훅의 URL 등)은 "미해결"로 표시.
|
|
193
|
-
-
|
|
214
|
+
- 데이터 모델이 플랫폼 무관 — 새 플랫폼은 `src/core/adapters/`에 어댑터 하나 추가하면 됩니다.
|
|
194
215
|
|
|
195
216
|
## 개발
|
|
196
217
|
|
package/README.md
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
Alkahest is a CLI that **statically analyzes** a UI codebase and builds a **Product Map**.
|
|
8
8
|
It extracts screens as nodes, and the navigation between screens plus the API/data calls each screen makes as edges — then shows it in an interactive dashboard and helps you write PRDs and requirements.
|
|
9
9
|
|
|
10
|
-
Platforms are **pluggable via adapters** —
|
|
10
|
+
Platforms are **pluggable via adapters** — **21 today** across React (Next.js, React Router, Remix), Vue (Nuxt, Vue Router), Angular, Svelte, Astro, React Native, SwiftUI/UIKit, Jetpack Compose, Flutter, and server-rendered Django/Flask/Rails (+ plain HTML). The data model is platform-agnostic, so a new framework is just a new adapter.
|
|
11
11
|
|
|
12
12
|
Where the references (graphify, codegraph, Understand-Anything) build *code-symbol* graphs, Alkahest aims one level up — **screen-level product understanding** — for a target audience of **PMs / product folks**.
|
|
13
13
|
|
|
@@ -95,6 +95,9 @@ alkahest login # save your publish token (Account → Create token on al
|
|
|
95
95
|
alkahest publish # upload the map to the hosted viewer → shareable link
|
|
96
96
|
alkahest comments pull # pull comments left on the published map → .alkahest/comments.json
|
|
97
97
|
alkahest comments issue <ids…> # file the given comments as ONE GitHub issue (gh) + link it back
|
|
98
|
+
alkahest issues pull # pull the project's Issue Map (graph-shaped issue tracker) → .alkahest/issues.json
|
|
99
|
+
alkahest issues add <title> # create an issue (--parent epic, --target s:…/r:…//route, --type/--status)
|
|
100
|
+
alkahest issues done <id> # mark an issue finished (other ops: status / link / rm)
|
|
98
101
|
alkahest update # update to the latest GitHub release (--check to only check)
|
|
99
102
|
```
|
|
100
103
|
|
|
@@ -140,7 +143,12 @@ Or add it to any MCP-capable agent's config directly:
|
|
|
140
143
|
| `publish` | upload the map to the hosted viewer → shareable link (needs a token, see below) |
|
|
141
144
|
| `comments` | list comments left on the published map, each joined to where to act: a screen comment → its source file/route + on-screen elements with line numbers; a resource comment → the screens that call that endpoint (file + line). Lets the agent address feedback in-editor (needs a token) |
|
|
142
145
|
| `resolve_comment` | mark a map comment resolved (or reopen) after addressing it (needs a token) |
|
|
146
|
+
| `add_comment` / `reply_comment` | leave a new comment on a map node / reply under an existing one (needs a token) |
|
|
143
147
|
| `comment_to_issue` | group one or more map comments into a single GitHub issue (via local `gh`) and link it back onto each, so the hosted viewer shows a "tracked" badge (needs a token) |
|
|
148
|
+
| `issues` | read the project's **Issue Map** — a dependency-first issue tracker drawn as a graph. Each issue comes with derived state: `done` and `actionable` (nothing unfinished blocks it), so the agent can pick what to work on next (needs a token) |
|
|
149
|
+
| `add_issue` | create an issue while planning with the user — `parent_id` groups under an epic, `target` ties it to the code map (existing node key, or a planned `/route` that converges when the screen ships) (needs a token) |
|
|
150
|
+
| `update_issue` | move status (e.g. to done when the work ships — progress gets painted onto the map), edit fields, or delete (needs a token) |
|
|
151
|
+
| `link_issues` | add/remove an edge between issues: `blocks` (dependency), `contains` (epic→task), `relates` (needs a token) |
|
|
144
152
|
| `check_version` | report installed vs latest GitHub release (so the agent can suggest `alkahest update`) |
|
|
145
153
|
|
|
146
154
|
The agent reads with `get_screen` / `who_calls` and writes back with `set_summary` / `set_prd`; both write into `map.json` and re-render `index.html`, so the dashboard always reflects the latest.
|
|
@@ -187,7 +195,15 @@ The token is all you need — the CLI defaults to the hosted service (alkahest.a
|
|
|
187
195
|
|
|
188
196
|
## Scope & limitations
|
|
189
197
|
|
|
190
|
-
|
|
198
|
+
Adapters (21, under `src/core/adapters/`), grouped by framework:
|
|
199
|
+
|
|
200
|
+
- **React** — Next.js (app & pages router), React Router (Vite/CRA), Remix, plain JSX
|
|
201
|
+
- **Vue** — Nuxt, Vue Router, Vue SFC · **Angular** · **Svelte** (SvelteKit) · **Astro**
|
|
202
|
+
- **React Native** — Expo Router, React Navigation
|
|
203
|
+
- **iOS** — SwiftUI, UIKit · **Android** — Jetpack Compose · **Flutter**
|
|
204
|
+
- Server-rendered — **Django**, **Flask**, **Rails** · plain multi-page **HTML**
|
|
205
|
+
|
|
206
|
+
How a couple map source → graph:
|
|
191
207
|
|
|
192
208
|
| Adapter | Screen | Navigate | Call |
|
|
193
209
|
|---|---|---|---|
|
|
@@ -195,7 +211,7 @@ Current adapters:
|
|
|
195
211
|
| **SwiftUI** | `struct X: View` | `NavigationLink` · `.sheet` · `.fullScreenCover` · `navigationDestination` | `URL(string:)` · `URLRequest` |
|
|
196
212
|
|
|
197
213
|
- **Limitations**: parsing is per file/view — features/calls inside imported child components aren't traced yet. Dynamic targets (`router.push(variable)`, a `useQuery` hook's URL, etc.) are marked "unresolved".
|
|
198
|
-
-
|
|
214
|
+
- The data model is platform-agnostic — a new platform is just one adapter under `src/core/adapters/`.
|
|
199
215
|
|
|
200
216
|
## Development
|
|
201
217
|
|
|
@@ -68,8 +68,9 @@
|
|
|
68
68
|
[data-theme="light"] #theme-toggle .i-sun { display: none; } [data-theme="light"] #theme-toggle .i-moon { display: block; }
|
|
69
69
|
/* Action cluster pinned to the right: Display · Fit · theme */
|
|
70
70
|
.toolbar-actions { margin-left: auto; display: inline-flex; align-items: center; gap: 8px; }
|
|
71
|
-
|
|
72
|
-
.brand
|
|
71
|
+
/* Brand matches the web service header (account/landing): 16px / 650 / -0.01em */
|
|
72
|
+
.brand { font-size: 16px; font-weight: 650; letter-spacing: -0.01em; white-space: nowrap; }
|
|
73
|
+
.brand .sub { color: var(--muted); font-weight: 400; font-size: 13px; letter-spacing: 0; margin-left: 6px; }
|
|
73
74
|
.counts { color: var(--muted); white-space: nowrap; }
|
|
74
75
|
/* compact counts (mobile only): node-shape icons + number — ○ screen / ▢ resource, matching the legend */
|
|
75
76
|
.counts-min { display: none; }
|
|
@@ -160,10 +161,14 @@
|
|
|
160
161
|
border-radius: 16px 16px 0 0; border-left: none; border-right: none; border-bottom: none;
|
|
161
162
|
box-shadow: 0 -8px 24px rgba(0, 0, 0, 0.45);
|
|
162
163
|
padding: 26px 18px 22px; z-index: 41;
|
|
163
|
-
transform: translateY(101%); transition: transform 0.24s ease;
|
|
164
164
|
display: block; /* always present; slid off-screen until open */
|
|
165
|
+
transform: translateY(101%);
|
|
166
|
+
/* visibility:hidden when closed so the upward box-shadow doesn't bleed a band
|
|
167
|
+
at the bottom of the screen; delayed off so the slide-out still animates. */
|
|
168
|
+
visibility: hidden;
|
|
169
|
+
transition: transform 0.24s ease, visibility 0s linear 0.24s;
|
|
165
170
|
}
|
|
166
|
-
.display-menu.open .display-pop { transform: translateY(0); }
|
|
171
|
+
.display-menu.open .display-pop { transform: translateY(0); visibility: visible; transition: transform 0.24s ease; }
|
|
167
172
|
.display-pop::before { content: ""; position: absolute; top: 9px; left: 50%; width: 40px; height: 4px; margin-left: -20px; background: var(--line); border-radius: 2px; }
|
|
168
173
|
.disp-row { padding: 9px 0; font-size: 14px; }
|
|
169
174
|
.disp-legend { font-size: 13px; gap: 8px; }
|
|
@@ -178,10 +183,12 @@
|
|
|
178
183
|
border-radius: 14px 14px 0 0;
|
|
179
184
|
box-shadow: 0 -8px 24px rgba(0, 0, 0, 0.45);
|
|
180
185
|
transform: translateY(101%);
|
|
181
|
-
|
|
186
|
+
/* hidden when closed so the upward shadow doesn't peek at the screen bottom */
|
|
187
|
+
visibility: hidden;
|
|
188
|
+
transition: transform 0.22s ease, visibility 0s linear 0.22s;
|
|
182
189
|
padding-top: 30px;
|
|
183
190
|
}
|
|
184
|
-
body.panel-open #panel { transform: translateY(0); }
|
|
191
|
+
body.panel-open #panel { transform: translateY(0); visibility: visible; transition: transform 0.22s ease; }
|
|
185
192
|
.panel-close {
|
|
186
193
|
display: block;
|
|
187
194
|
position: absolute;
|
package/dist/cli.js
CHANGED
|
@@ -8,6 +8,7 @@ import { hook } from "./commands/hook.js";
|
|
|
8
8
|
import { publish } from "./commands/publish.js";
|
|
9
9
|
import { login } from "./commands/login.js";
|
|
10
10
|
import { commentsPull, commentsAdd, commentsReply, commentsIssue } from "./commands/comments.js";
|
|
11
|
+
import { issuesPull, issuesAdd, issuesStatus, issuesDone, issuesLink, issuesRm } from "./commands/issues.js";
|
|
11
12
|
import { update } from "./commands/update.js";
|
|
12
13
|
import { maybeNotifyUpdate } from "./core/version.js";
|
|
13
14
|
const require = createRequire(import.meta.url);
|
|
@@ -91,6 +92,65 @@ comments
|
|
|
91
92
|
.option("--path <dir>", "project path", ".")
|
|
92
93
|
.option("--api <url>", "API base URL (or env ALKAHEST_API_URL)")
|
|
93
94
|
.action((id, opts) => commentsReply(id, opts));
|
|
95
|
+
const issues = program
|
|
96
|
+
.command("issues")
|
|
97
|
+
.description("work with this project's Issue Map — a map-shaped issue tracker on the hosted viewer");
|
|
98
|
+
issues
|
|
99
|
+
.command("pull")
|
|
100
|
+
.description("pull the issue graph into .alkahest/issues.json and print it (▶ = actionable now)")
|
|
101
|
+
.argument("[path]", "project path", ".")
|
|
102
|
+
.option("--slug <slug>", "project slug (defaults to the saved slug for this path)")
|
|
103
|
+
.option("--api <url>", "API base URL (or env ALKAHEST_API_URL)")
|
|
104
|
+
.action(async (path, opts) => {
|
|
105
|
+
await issuesPull(path, opts);
|
|
106
|
+
await maybeNotifyUpdate();
|
|
107
|
+
});
|
|
108
|
+
issues
|
|
109
|
+
.command("add")
|
|
110
|
+
.description("create an issue (a node of the issue graph)")
|
|
111
|
+
.argument("<title>", "issue title")
|
|
112
|
+
.option("--type <type>", "node type from the project's issue config (default: task)")
|
|
113
|
+
.option("--status <status>", "status from the project's issue config (default: todo)")
|
|
114
|
+
.option("--body <markdown>", "issue body")
|
|
115
|
+
.option("--parent <id>", "parent issue — creates a contains edge (epic → task)")
|
|
116
|
+
.option("--target <key>", "code-map target: s:/r: node key, /route (planned screen), or a resource label")
|
|
117
|
+
.option("--path <dir>", "project path", ".")
|
|
118
|
+
.option("--slug <slug>", "project slug (defaults to the saved slug for this path)")
|
|
119
|
+
.option("--api <url>", "API base URL (or env ALKAHEST_API_URL)")
|
|
120
|
+
.action((title, opts) => issuesAdd(title, opts));
|
|
121
|
+
issues
|
|
122
|
+
.command("status")
|
|
123
|
+
.description("move an issue to a status from the project's issue config")
|
|
124
|
+
.argument("<id>", "issue id (from 'issues pull')")
|
|
125
|
+
.argument("<status>", "new status id")
|
|
126
|
+
.option("--path <dir>", "project path", ".")
|
|
127
|
+
.option("--api <url>", "API base URL (or env ALKAHEST_API_URL)")
|
|
128
|
+
.action((id, status, opts) => issuesStatus(id, status, opts));
|
|
129
|
+
issues
|
|
130
|
+
.command("done")
|
|
131
|
+
.description("mark an issue finished (moves it to the project's terminal status)")
|
|
132
|
+
.argument("<id>", "issue id (from 'issues pull')")
|
|
133
|
+
.option("--path <dir>", "project path", ".")
|
|
134
|
+
.option("--slug <slug>", "project slug (defaults to the saved slug for this path)")
|
|
135
|
+
.option("--api <url>", "API base URL (or env ALKAHEST_API_URL)")
|
|
136
|
+
.action((id, opts) => issuesDone(id, opts));
|
|
137
|
+
issues
|
|
138
|
+
.command("link")
|
|
139
|
+
.description("connect two issues: <from> —kind→ <to> (blocks = from must finish first)")
|
|
140
|
+
.argument("<from>", "issue id")
|
|
141
|
+
.argument("<to>", "issue id")
|
|
142
|
+
.option("--kind <kind>", "blocks | contains | relates", "blocks")
|
|
143
|
+
.option("--remove", "remove the edge instead of adding it", false)
|
|
144
|
+
.option("--path <dir>", "project path", ".")
|
|
145
|
+
.option("--api <url>", "API base URL (or env ALKAHEST_API_URL)")
|
|
146
|
+
.action((from, to, opts) => issuesLink(from, to, opts));
|
|
147
|
+
issues
|
|
148
|
+
.command("rm")
|
|
149
|
+
.description("delete an issue (author or project owner only; its edges go with it)")
|
|
150
|
+
.argument("<id>", "issue id")
|
|
151
|
+
.option("--path <dir>", "project path", ".")
|
|
152
|
+
.option("--api <url>", "API base URL (or env ALKAHEST_API_URL)")
|
|
153
|
+
.action((id, opts) => issuesRm(id, opts));
|
|
94
154
|
program
|
|
95
155
|
.command("mcp")
|
|
96
156
|
.description("run the MCP server over stdio (agents query the product map; no key)")
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { type IssueGraph } from "../core/issues.js";
|
|
2
|
+
export interface IssuesPullOptions {
|
|
3
|
+
api?: string;
|
|
4
|
+
slug?: string;
|
|
5
|
+
}
|
|
6
|
+
export declare function issuesPull(path: string, options: IssuesPullOptions): Promise<void>;
|
|
7
|
+
export interface IssuesAddOptions {
|
|
8
|
+
api?: string;
|
|
9
|
+
slug?: string;
|
|
10
|
+
path?: string;
|
|
11
|
+
type?: string;
|
|
12
|
+
status?: string;
|
|
13
|
+
body?: string;
|
|
14
|
+
parent?: string;
|
|
15
|
+
target?: string;
|
|
16
|
+
}
|
|
17
|
+
export declare function issuesAdd(title: string, options: IssuesAddOptions): Promise<void>;
|
|
18
|
+
export interface IssuesWriteOptions {
|
|
19
|
+
api?: string;
|
|
20
|
+
slug?: string;
|
|
21
|
+
path?: string;
|
|
22
|
+
}
|
|
23
|
+
export declare function issuesStatus(id: string, status: string, options: IssuesWriteOptions): Promise<void>;
|
|
24
|
+
/** Move an issue to the project's (first) terminal status — "I finished this". */
|
|
25
|
+
export declare function issuesDone(id: string, options: IssuesWriteOptions): Promise<void>;
|
|
26
|
+
export interface IssuesLinkOptions extends IssuesWriteOptions {
|
|
27
|
+
kind?: string;
|
|
28
|
+
remove?: boolean;
|
|
29
|
+
}
|
|
30
|
+
export declare function issuesLink(from: string, to: string, options: IssuesLinkOptions): Promise<void>;
|
|
31
|
+
export declare function issuesRm(id: string, options: IssuesWriteOptions): Promise<void>;
|
|
32
|
+
export { type IssueGraph };
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { mkdirSync, writeFileSync } from "node:fs";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { OUTPUT_DIR } from "../core/emit.js";
|
|
4
|
+
import { pullIssues, createIssue, updateIssue, deriveIssueStates, terminalStatuses, } from "../core/issues.js";
|
|
5
|
+
/**
|
|
6
|
+
* CLI surface of the hosted Issue Map (cloud ADR-004). All subcommands talk to the
|
|
7
|
+
* issues-* edge functions through src/core/issues.ts; nothing is stored locally
|
|
8
|
+
* except the `pull` snapshot (.alkahest/issues.json), which travels with the checkout
|
|
9
|
+
* like comments.json does.
|
|
10
|
+
*/
|
|
11
|
+
const die = (msg) => {
|
|
12
|
+
console.error(`[alkahest] ${msg}`);
|
|
13
|
+
process.exitCode = 1;
|
|
14
|
+
};
|
|
15
|
+
const failMessage = (code, message, action) => {
|
|
16
|
+
const known = {
|
|
17
|
+
invalid_token: "✗ Token invalid or revoked. Run 'alkahest login' again.",
|
|
18
|
+
forbidden: "✗ Only the project owner or a collaborator can do this.",
|
|
19
|
+
not_found: `✗ ${message ?? "Not found."}`,
|
|
20
|
+
no_slug: message ?? "No published map for this project yet.",
|
|
21
|
+
};
|
|
22
|
+
return known[code ?? ""] ?? `${action} failed: ${message}`;
|
|
23
|
+
};
|
|
24
|
+
export async function issuesPull(path, options) {
|
|
25
|
+
const res = await pullIssues(path, options);
|
|
26
|
+
if (!res.ok || !res.graph)
|
|
27
|
+
return die(failMessage(res.code, res.message, "issues pull"));
|
|
28
|
+
const graph = res.graph;
|
|
29
|
+
const states = deriveIssueStates(graph);
|
|
30
|
+
const open = graph.issues.filter((i) => !states.get(i.id)?.done);
|
|
31
|
+
const actionable = open.filter((i) => states.get(i.id)?.actionable);
|
|
32
|
+
const dir = join(res.root ?? path, OUTPUT_DIR);
|
|
33
|
+
mkdirSync(dir, { recursive: true });
|
|
34
|
+
writeFileSync(join(dir, "issues.json"), JSON.stringify({ ...graph, pulledAt: new Date().toISOString() }, null, 2) + "\n");
|
|
35
|
+
console.log(`[alkahest] pulled ${graph.issues.length} issue${graph.issues.length === 1 ? "" : "s"} on ${graph.slug}` +
|
|
36
|
+
` (${open.length} open, ${actionable.length} actionable) → ${OUTPUT_DIR}/issues.json`);
|
|
37
|
+
for (const i of graph.issues) {
|
|
38
|
+
const st = states.get(i.id);
|
|
39
|
+
const mark = st.done ? "✓" : st.actionable ? "▶" : "⏳";
|
|
40
|
+
const blocked = st.blockedBy.length ? ` (blocked by ${st.blockedBy.length})` : "";
|
|
41
|
+
console.log(` ${mark} [${i.type}/${i.status}] ${i.title} ${i.id}${blocked}`);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/** `--target` infers the kind: s:/r: prefix = existing node, leading '/' = planned route, else resource label. */
|
|
45
|
+
const inferTarget = (target) => ({
|
|
46
|
+
target_kind: target.startsWith("s:") || target.startsWith("r:") ? "node" : target.startsWith("/") ? "route" : "resource",
|
|
47
|
+
target_key: target,
|
|
48
|
+
});
|
|
49
|
+
export async function issuesAdd(title, options) {
|
|
50
|
+
const res = await createIssue(options.path || ".", {
|
|
51
|
+
api: options.api, slug: options.slug,
|
|
52
|
+
title, type: options.type, status: options.status, body: options.body,
|
|
53
|
+
parent_id: options.parent,
|
|
54
|
+
...(options.target ? inferTarget(options.target) : {}),
|
|
55
|
+
});
|
|
56
|
+
if (!res.ok || !res.issue)
|
|
57
|
+
return die(failMessage(res.code, res.message, "issues add"));
|
|
58
|
+
console.log(`[alkahest] created [${res.issue.type}/${res.issue.status}] ${res.issue.title} — id ${res.issue.id}`);
|
|
59
|
+
}
|
|
60
|
+
export async function issuesStatus(id, status, options) {
|
|
61
|
+
const res = await updateIssue(options.path || ".", { api: options.api, id, set: { status } });
|
|
62
|
+
if (!res.ok || !res.issue)
|
|
63
|
+
return die(failMessage(res.code, res.message, "issues status"));
|
|
64
|
+
console.log(`[alkahest] ${res.issue.title} → ${res.issue.status}`);
|
|
65
|
+
}
|
|
66
|
+
/** Move an issue to the project's (first) terminal status — "I finished this". */
|
|
67
|
+
export async function issuesDone(id, options) {
|
|
68
|
+
const pulled = await pullIssues(options.path || ".", { api: options.api, slug: options.slug });
|
|
69
|
+
if (!pulled.ok || !pulled.graph)
|
|
70
|
+
return die(failMessage(pulled.code, pulled.message, "issues done"));
|
|
71
|
+
const terminal = [...terminalStatuses(pulled.graph.issue_config)];
|
|
72
|
+
if (!terminal.length)
|
|
73
|
+
return die("✗ No terminal status in this project's issue config — use 'issues status' instead.");
|
|
74
|
+
await issuesStatus(id, terminal[0], options);
|
|
75
|
+
}
|
|
76
|
+
export async function issuesLink(from, to, options) {
|
|
77
|
+
const kind = (options.kind ?? "blocks");
|
|
78
|
+
const edge = [{ to, kind }];
|
|
79
|
+
const res = await updateIssue(options.path || ".", {
|
|
80
|
+
api: options.api, id: from,
|
|
81
|
+
...(options.remove ? { remove_edges: edge } : { add_edges: edge }),
|
|
82
|
+
});
|
|
83
|
+
if (!res.ok)
|
|
84
|
+
return die(failMessage(res.code, res.message, "issues link"));
|
|
85
|
+
console.log(`[alkahest] ${options.remove ? "removed" : "linked"}: ${from} —${kind}→ ${to}`);
|
|
86
|
+
}
|
|
87
|
+
export async function issuesRm(id, options) {
|
|
88
|
+
const res = await updateIssue(options.path || ".", { api: options.api, id, delete: true });
|
|
89
|
+
if (!res.ok)
|
|
90
|
+
return die(failMessage(res.code, res.message, "issues rm"));
|
|
91
|
+
console.log(`[alkahest] deleted issue ${id}`);
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=issues.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"issues.js","sourceRoot":"","sources":["../../src/commands/issues.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Client for the hosted Issue Map (alkahest-cloud ADR-004): a human/agent-authored
|
|
3
|
+
* graph of work items per published project — issues as nodes, blocks/contains/relates
|
|
4
|
+
* edges, optional links into the code map. Issues live only in the cloud (the web
|
|
5
|
+
* viewer edits them via RLS); the CLI/MCP read and write through the issues-pull /
|
|
6
|
+
* issues-post / issues-update edge functions with an alk_ token.
|
|
7
|
+
*
|
|
8
|
+
* Like publish.ts/comments.ts, everything returns a structured result and never
|
|
9
|
+
* writes to stdout/stderr.
|
|
10
|
+
*/
|
|
11
|
+
export interface IssueConfig {
|
|
12
|
+
nodeTypes: {
|
|
13
|
+
id: string;
|
|
14
|
+
label?: string;
|
|
15
|
+
shape?: string;
|
|
16
|
+
}[];
|
|
17
|
+
statuses: {
|
|
18
|
+
id: string;
|
|
19
|
+
label?: string;
|
|
20
|
+
terminal?: boolean;
|
|
21
|
+
}[];
|
|
22
|
+
}
|
|
23
|
+
export interface Issue {
|
|
24
|
+
id: string;
|
|
25
|
+
type: string;
|
|
26
|
+
status: string;
|
|
27
|
+
title: string;
|
|
28
|
+
body: string | null;
|
|
29
|
+
/** 'node' (existing map node) | 'route'/'resource' (prospective — awaits convergence). */
|
|
30
|
+
target_kind: "node" | "route" | "resource" | null;
|
|
31
|
+
target_key: string | null;
|
|
32
|
+
shipped_map_version_id: string | null;
|
|
33
|
+
created_by: string | null;
|
|
34
|
+
created_at: string;
|
|
35
|
+
updated_at: string;
|
|
36
|
+
}
|
|
37
|
+
export interface IssueEdge {
|
|
38
|
+
from_issue: string;
|
|
39
|
+
to_issue: string;
|
|
40
|
+
kind: "blocks" | "contains" | "relates";
|
|
41
|
+
}
|
|
42
|
+
export interface IssueMapLink {
|
|
43
|
+
issue_id: string;
|
|
44
|
+
node_key: string;
|
|
45
|
+
kind: "navigate" | "call";
|
|
46
|
+
}
|
|
47
|
+
export interface IssueGraph {
|
|
48
|
+
slug: string;
|
|
49
|
+
name: string | null;
|
|
50
|
+
issue_config: IssueConfig;
|
|
51
|
+
issues: Issue[];
|
|
52
|
+
edges: IssueEdge[];
|
|
53
|
+
links: IssueMapLink[];
|
|
54
|
+
}
|
|
55
|
+
export interface IssuesResult {
|
|
56
|
+
ok: boolean;
|
|
57
|
+
graph?: IssueGraph;
|
|
58
|
+
/** Resolved project root (nearest ancestor with .alkahest/). */
|
|
59
|
+
root?: string;
|
|
60
|
+
/** no_api | no_token | no_slug | not_found | invalid_token | network | <server error>. */
|
|
61
|
+
code?: string;
|
|
62
|
+
message?: string;
|
|
63
|
+
}
|
|
64
|
+
export interface PullIssuesParams {
|
|
65
|
+
api?: string;
|
|
66
|
+
token?: string;
|
|
67
|
+
slug?: string;
|
|
68
|
+
}
|
|
69
|
+
/** Fetch the project's issue graph (issues + edges + map links + effective config). */
|
|
70
|
+
export declare function pullIssues(path: string, params?: PullIssuesParams): Promise<IssuesResult>;
|
|
71
|
+
export interface CreateIssueParams {
|
|
72
|
+
api?: string;
|
|
73
|
+
token?: string;
|
|
74
|
+
slug?: string;
|
|
75
|
+
title: string;
|
|
76
|
+
type?: string;
|
|
77
|
+
status?: string;
|
|
78
|
+
body?: string;
|
|
79
|
+
target_kind?: "node" | "route" | "resource";
|
|
80
|
+
target_key?: string;
|
|
81
|
+
/** Existing issue id — creates a contains edge parent→new (epic→task). */
|
|
82
|
+
parent_id?: string;
|
|
83
|
+
links?: {
|
|
84
|
+
node_key: string;
|
|
85
|
+
kind: "navigate" | "call";
|
|
86
|
+
}[];
|
|
87
|
+
}
|
|
88
|
+
export interface IssueWriteResult {
|
|
89
|
+
ok: boolean;
|
|
90
|
+
issue?: Issue;
|
|
91
|
+
deleted?: boolean;
|
|
92
|
+
code?: string;
|
|
93
|
+
message?: string;
|
|
94
|
+
}
|
|
95
|
+
export declare function createIssue(path: string, params: CreateIssueParams): Promise<IssueWriteResult>;
|
|
96
|
+
export interface UpdateIssueParams {
|
|
97
|
+
api?: string;
|
|
98
|
+
token?: string;
|
|
99
|
+
id: string;
|
|
100
|
+
set?: {
|
|
101
|
+
title?: string;
|
|
102
|
+
body?: string | null;
|
|
103
|
+
type?: string;
|
|
104
|
+
status?: string;
|
|
105
|
+
target_kind?: "node" | "route" | "resource" | null;
|
|
106
|
+
target_key?: string | null;
|
|
107
|
+
};
|
|
108
|
+
/** Edge specs name the OTHER endpoint; the issue `id` fills the omitted side. */
|
|
109
|
+
add_edges?: {
|
|
110
|
+
from?: string;
|
|
111
|
+
to?: string;
|
|
112
|
+
kind: IssueEdge["kind"];
|
|
113
|
+
}[];
|
|
114
|
+
remove_edges?: {
|
|
115
|
+
from?: string;
|
|
116
|
+
to?: string;
|
|
117
|
+
kind: IssueEdge["kind"];
|
|
118
|
+
}[];
|
|
119
|
+
add_links?: {
|
|
120
|
+
node_key: string;
|
|
121
|
+
kind: IssueMapLink["kind"];
|
|
122
|
+
}[];
|
|
123
|
+
remove_links?: string[];
|
|
124
|
+
delete?: boolean;
|
|
125
|
+
}
|
|
126
|
+
export declare function updateIssue(path: string, params: UpdateIssueParams): Promise<IssueWriteResult>;
|
|
127
|
+
/** Status ids marked terminal in the config (= "this work is finished"). */
|
|
128
|
+
export declare function terminalStatuses(config: IssueConfig): Set<string>;
|
|
129
|
+
/**
|
|
130
|
+
* Derive what the graph itself can't store: which issues are DONE (terminal status)
|
|
131
|
+
* and which are ACTIONABLE — not done, and every incoming `blocks` edge comes from a
|
|
132
|
+
* done issue. "What can I start right now" is the map-shaped tracker's headline view.
|
|
133
|
+
*/
|
|
134
|
+
export declare function deriveIssueStates(graph: IssueGraph): Map<string, {
|
|
135
|
+
done: boolean;
|
|
136
|
+
actionable: boolean;
|
|
137
|
+
blockedBy: string[];
|
|
138
|
+
}>;
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { loadCredentials, resolveApiUrl, resolveToken } from "./credentials.js";
|
|
2
|
+
import { resolveProject } from "./project.js";
|
|
3
|
+
/** Resolve api/token/slug once; shared by every call below. */
|
|
4
|
+
function authContext(path, params, needSlug) {
|
|
5
|
+
const creds = loadCredentials();
|
|
6
|
+
const { root, slug } = resolveProject(path, params.slug);
|
|
7
|
+
const apiUrl = resolveApiUrl(params.api, creds);
|
|
8
|
+
if (!apiUrl) {
|
|
9
|
+
return { root, code: "no_api", message: "Missing API URL. Set ALKAHEST_API_URL (or run 'alkahest login --api <url>')." };
|
|
10
|
+
}
|
|
11
|
+
const token = resolveToken(params.token, creds);
|
|
12
|
+
if (!token) {
|
|
13
|
+
return { root, code: "no_token", message: "Not authenticated. Set ALKAHEST_TOKEN (or run 'alkahest login --token alk_…')." };
|
|
14
|
+
}
|
|
15
|
+
if (needSlug && !slug) {
|
|
16
|
+
return { root, code: "no_slug", message: "No published map for this project yet — run 'alkahest publish', or pass --slug <slug>." };
|
|
17
|
+
}
|
|
18
|
+
return { apiUrl, token, root, slug };
|
|
19
|
+
}
|
|
20
|
+
async function request(url, token, body) {
|
|
21
|
+
let res;
|
|
22
|
+
try {
|
|
23
|
+
res = await fetch(url, body === undefined
|
|
24
|
+
? { headers: { authorization: `Bearer ${token}` } }
|
|
25
|
+
: { method: "POST", headers: { "content-type": "application/json", authorization: `Bearer ${token}` }, body: JSON.stringify(body) });
|
|
26
|
+
}
|
|
27
|
+
catch (err) {
|
|
28
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
29
|
+
return { ok: false, status: "network", body: { error: `could not reach ${url} (${msg})` } };
|
|
30
|
+
}
|
|
31
|
+
let parsed = null;
|
|
32
|
+
try {
|
|
33
|
+
parsed = await res.json();
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
/* non-JSON error body */
|
|
37
|
+
}
|
|
38
|
+
return { ok: res.ok, status: String(res.status), body: parsed };
|
|
39
|
+
}
|
|
40
|
+
const fail = (res, what) => ({
|
|
41
|
+
ok: false,
|
|
42
|
+
code: res.body?.error ?? "http",
|
|
43
|
+
message: res.body?.message ?? res.body?.error ?? `${what} failed (${res.status})`,
|
|
44
|
+
});
|
|
45
|
+
/** Fetch the project's issue graph (issues + edges + map links + effective config). */
|
|
46
|
+
export async function pullIssues(path, params = {}) {
|
|
47
|
+
const ctx = authContext(path, params, true);
|
|
48
|
+
if ("code" in ctx)
|
|
49
|
+
return { ok: false, ...ctx };
|
|
50
|
+
const res = await request(`${ctx.apiUrl}/issues-pull?slug=${encodeURIComponent(ctx.slug)}`, ctx.token);
|
|
51
|
+
if (!res.ok)
|
|
52
|
+
return fail(res, "pull");
|
|
53
|
+
const proj = (res.body?.projects ?? []).find((p) => p.slug === ctx.slug) ?? res.body?.projects?.[0];
|
|
54
|
+
return {
|
|
55
|
+
ok: true,
|
|
56
|
+
root: ctx.root,
|
|
57
|
+
graph: {
|
|
58
|
+
slug: ctx.slug,
|
|
59
|
+
name: proj?.name ?? null,
|
|
60
|
+
issue_config: proj?.issue_config ?? { nodeTypes: [], statuses: [] },
|
|
61
|
+
issues: proj?.issues ?? [],
|
|
62
|
+
edges: proj?.edges ?? [],
|
|
63
|
+
links: proj?.links ?? [],
|
|
64
|
+
},
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
export async function createIssue(path, params) {
|
|
68
|
+
const ctx = authContext(path, params, true);
|
|
69
|
+
if ("code" in ctx)
|
|
70
|
+
return { ok: false, code: ctx.code, message: ctx.message };
|
|
71
|
+
if (!params.title?.trim())
|
|
72
|
+
return { ok: false, code: "no_title", message: "Issue title is required." };
|
|
73
|
+
const res = await request(`${ctx.apiUrl}/issues-post`, ctx.token, {
|
|
74
|
+
slug: ctx.slug,
|
|
75
|
+
title: params.title.trim(),
|
|
76
|
+
type: params.type,
|
|
77
|
+
status: params.status,
|
|
78
|
+
body: params.body,
|
|
79
|
+
target_kind: params.target_kind ?? null,
|
|
80
|
+
target_key: params.target_key ?? null,
|
|
81
|
+
parent_id: params.parent_id,
|
|
82
|
+
links: params.links,
|
|
83
|
+
});
|
|
84
|
+
if (!res.ok)
|
|
85
|
+
return fail(res, "create");
|
|
86
|
+
return { ok: true, issue: res.body?.issue };
|
|
87
|
+
}
|
|
88
|
+
export async function updateIssue(path, params) {
|
|
89
|
+
const ctx = authContext(path, params, false);
|
|
90
|
+
if ("code" in ctx)
|
|
91
|
+
return { ok: false, code: ctx.code, message: ctx.message };
|
|
92
|
+
if (!params.id)
|
|
93
|
+
return { ok: false, code: "no_id", message: "Issue id is required." };
|
|
94
|
+
const { api: _a, token: _t, ...body } = params;
|
|
95
|
+
const res = await request(`${ctx.apiUrl}/issues-update`, ctx.token, body);
|
|
96
|
+
if (!res.ok)
|
|
97
|
+
return fail(res, "update");
|
|
98
|
+
return res.body?.deleted ? { ok: true, deleted: true } : { ok: true, issue: res.body?.issue };
|
|
99
|
+
}
|
|
100
|
+
/** Status ids marked terminal in the config (= "this work is finished"). */
|
|
101
|
+
export function terminalStatuses(config) {
|
|
102
|
+
return new Set((config.statuses ?? []).filter((s) => s.terminal).map((s) => s.id));
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Derive what the graph itself can't store: which issues are DONE (terminal status)
|
|
106
|
+
* and which are ACTIONABLE — not done, and every incoming `blocks` edge comes from a
|
|
107
|
+
* done issue. "What can I start right now" is the map-shaped tracker's headline view.
|
|
108
|
+
*/
|
|
109
|
+
export function deriveIssueStates(graph) {
|
|
110
|
+
const terminal = terminalStatuses(graph.issue_config);
|
|
111
|
+
const byId = new Map(graph.issues.map((i) => [i.id, i]));
|
|
112
|
+
const out = new Map();
|
|
113
|
+
for (const issue of graph.issues) {
|
|
114
|
+
const done = terminal.has(issue.status);
|
|
115
|
+
const blockedBy = graph.edges
|
|
116
|
+
.filter((e) => e.kind === "blocks" && e.to_issue === issue.id)
|
|
117
|
+
.map((e) => e.from_issue)
|
|
118
|
+
.filter((from) => !terminal.has(byId.get(from)?.status ?? ""));
|
|
119
|
+
out.set(issue.id, { done, actionable: !done && blockedBy.length === 0, blockedBy });
|
|
120
|
+
}
|
|
121
|
+
return out;
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=issues.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"issues.js","sourceRoot":"","sources":["../../src/core/issues.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp/server.js
CHANGED
|
@@ -6,6 +6,7 @@ import { runScan, loadOrScan, loadMap } from "../core/pipeline.js";
|
|
|
6
6
|
import { emitMap, emitDashboard } from "../core/emit.js";
|
|
7
7
|
import { publishMap } from "../core/publish.js";
|
|
8
8
|
import { pullComments, resolveComment, enrichComments, postComment, resolveNode, fileCommentsIssue } from "../core/comments.js";
|
|
9
|
+
import { pullIssues, createIssue, updateIssue, deriveIssueStates } from "../core/issues.js";
|
|
9
10
|
import { findProjectRoot } from "../core/project.js";
|
|
10
11
|
import { checkForUpdate, cachedUpdateStatus } from "../core/version.js";
|
|
11
12
|
const require = createRequire(import.meta.url);
|
|
@@ -306,6 +307,130 @@ export function buildServer() {
|
|
|
306
307
|
}
|
|
307
308
|
return json({ ok: true, issue_url: res.issue_url, ids: res.ids, title: res.title });
|
|
308
309
|
});
|
|
310
|
+
// ---- issues: the Issue Map — a map-shaped issue tracker on the hosted viewer ----
|
|
311
|
+
const issueHints = {
|
|
312
|
+
no_token: "Set ALKAHEST_TOKEN in this MCP server's config (token from alkahest.app → Account).",
|
|
313
|
+
no_api: "Set ALKAHEST_API_URL in this MCP server's config.",
|
|
314
|
+
no_slug: "This project hasn't been published yet — run the publish tool first.",
|
|
315
|
+
invalid_token: "The publish token is invalid or revoked — create a new one at alkahest.app → Account.",
|
|
316
|
+
forbidden: "Only the project owner or a collaborator can write issues.",
|
|
317
|
+
not_found: "Not found — list ids with the issues tool.",
|
|
318
|
+
};
|
|
319
|
+
const issueFail = (what, code, message) => text(`${what} failed (${code}): ${message}.${issueHints[code ?? ""] ? " " + issueHints[code ?? ""] : ""}`);
|
|
320
|
+
server.registerTool("issues", {
|
|
321
|
+
title: "Issue Map graph",
|
|
322
|
+
description: "Read this project's Issue Map: a dependency-first issue tracker drawn as a graph on the hosted viewer. " +
|
|
323
|
+
"Returns issues (work items with per-project type/status), edges (blocks = dependency, contains = grouping, " +
|
|
324
|
+
"relates), code-map links, and the project's issue_config (valid types/statuses). Each issue carries derived " +
|
|
325
|
+
"state: done (terminal status) and actionable (not done, nothing unfinished blocks it) — use actionable issues " +
|
|
326
|
+
"to decide what to work on next. Needs a publish token and a published project.",
|
|
327
|
+
inputSchema: {
|
|
328
|
+
path: z.string().optional().describe("Project root (default: cwd)"),
|
|
329
|
+
open: z.boolean().optional().describe("Only issues that are not done (default: false = all)"),
|
|
330
|
+
},
|
|
331
|
+
}, async ({ path, open }) => {
|
|
332
|
+
const res = await pullIssues(rootOf(path), {});
|
|
333
|
+
if (!res.ok || !res.graph)
|
|
334
|
+
return issueFail("Read issues", res.code, res.message);
|
|
335
|
+
const states = deriveIssueStates(res.graph);
|
|
336
|
+
const issues = res.graph.issues
|
|
337
|
+
.map((i) => ({ ...i, ...states.get(i.id) }))
|
|
338
|
+
.filter((i) => !open || !i.done);
|
|
339
|
+
return json({
|
|
340
|
+
ok: true,
|
|
341
|
+
slug: res.graph.slug,
|
|
342
|
+
issue_config: res.graph.issue_config,
|
|
343
|
+
count: issues.length,
|
|
344
|
+
issues,
|
|
345
|
+
edges: res.graph.edges,
|
|
346
|
+
links: res.graph.links,
|
|
347
|
+
});
|
|
348
|
+
});
|
|
349
|
+
server.registerTool("add_issue", {
|
|
350
|
+
title: "Add an issue",
|
|
351
|
+
description: "Create a node on this project's Issue Map. Use it while planning with the user: each work item becomes an " +
|
|
352
|
+
"issue, parent_id groups it under an epic (contains edge), and target ties it to the code map — pass an " +
|
|
353
|
+
"existing node key ('s:…'/'r:…'), or a planned route ('/orders/refund') for a screen that doesn't exist yet " +
|
|
354
|
+
"(it shows as a ghost node and auto-converges when a scan finds the real screen). type/status must come from " +
|
|
355
|
+
"the project's issue_config (see the issues tool). Needs a publish token; owner or collaborator only.",
|
|
356
|
+
inputSchema: {
|
|
357
|
+
title: z.string().describe("Issue title"),
|
|
358
|
+
type: z.string().optional().describe("Node type from issue_config (default: task)"),
|
|
359
|
+
status: z.string().optional().describe("Status from issue_config (default: todo)"),
|
|
360
|
+
body: z.string().optional().describe("Issue body as markdown (requirements, context)"),
|
|
361
|
+
parent_id: z.string().optional().describe("Parent issue id — creates a contains edge (epic → task)"),
|
|
362
|
+
target: z.string().optional().describe("Code-map target: 's:…'/'r:…' node key, '/route' (planned screen), or a resource label"),
|
|
363
|
+
path: z.string().optional().describe("Project root (default: cwd)"),
|
|
364
|
+
},
|
|
365
|
+
}, async ({ title, type, status, body, parent_id, target, path }) => {
|
|
366
|
+
const targetFields = target
|
|
367
|
+
? {
|
|
368
|
+
target_kind: (target.startsWith("s:") || target.startsWith("r:") ? "node" : target.startsWith("/") ? "route" : "resource"),
|
|
369
|
+
target_key: target,
|
|
370
|
+
}
|
|
371
|
+
: {};
|
|
372
|
+
const res = await createIssue(rootOf(path), { title, type, status, body, parent_id, ...targetFields });
|
|
373
|
+
if (!res.ok || !res.issue)
|
|
374
|
+
return issueFail("Add issue", res.code, res.message);
|
|
375
|
+
return json({ ok: true, issue: res.issue });
|
|
376
|
+
});
|
|
377
|
+
server.registerTool("update_issue", {
|
|
378
|
+
title: "Update an issue",
|
|
379
|
+
description: "Mutate an Issue Map node: move its status (e.g. to 'done' when you finish the work — this is how progress " +
|
|
380
|
+
"gets painted onto the map), edit title/body/type, set or clear its code-map target, or delete it " +
|
|
381
|
+
"(delete: author/owner only). Statuses/types must come from the project's issue_config. Needs a publish token.",
|
|
382
|
+
inputSchema: {
|
|
383
|
+
id: z.string().describe("Issue id (from the issues tool)"),
|
|
384
|
+
status: z.string().optional().describe("New status from issue_config"),
|
|
385
|
+
title: z.string().optional(),
|
|
386
|
+
body: z.string().optional().describe("New body markdown"),
|
|
387
|
+
type: z.string().optional().describe("New node type from issue_config"),
|
|
388
|
+
target: z.string().optional().describe("New code-map target ('s:…'/'r:…'/'/route'/resource label); pass '' to clear"),
|
|
389
|
+
delete: z.boolean().optional().describe("Delete the issue instead of updating it"),
|
|
390
|
+
path: z.string().optional().describe("Project root (default: cwd)"),
|
|
391
|
+
},
|
|
392
|
+
}, async ({ id, status, title, body, type, target, delete: del, path }) => {
|
|
393
|
+
const set = {};
|
|
394
|
+
if (status !== undefined)
|
|
395
|
+
set.status = status;
|
|
396
|
+
if (title !== undefined)
|
|
397
|
+
set.title = title;
|
|
398
|
+
if (body !== undefined)
|
|
399
|
+
set.body = body;
|
|
400
|
+
if (type !== undefined)
|
|
401
|
+
set.type = type;
|
|
402
|
+
if (target !== undefined) {
|
|
403
|
+
if (target === "")
|
|
404
|
+
Object.assign(set, { target_kind: null, target_key: null });
|
|
405
|
+
else {
|
|
406
|
+
set.target_kind = target.startsWith("s:") || target.startsWith("r:") ? "node" : target.startsWith("/") ? "route" : "resource";
|
|
407
|
+
set.target_key = target;
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
const res = await updateIssue(rootOf(path), { id, ...(del ? { delete: true } : { set }) });
|
|
411
|
+
if (!res.ok)
|
|
412
|
+
return issueFail("Update issue", res.code, res.message);
|
|
413
|
+
return json(res.deleted ? { ok: true, deleted: true, id } : { ok: true, issue: res.issue });
|
|
414
|
+
});
|
|
415
|
+
server.registerTool("link_issues", {
|
|
416
|
+
title: "Link two issues",
|
|
417
|
+
description: "Add or remove an edge between two issues on the Issue Map: from —kind→ to. kind 'blocks' means `from` must " +
|
|
418
|
+
"finish before `to` can start (the dependency arrows that make the map readable), 'contains' groups (epic → " +
|
|
419
|
+
"task), 'relates' is a loose association. Needs a publish token; owner or collaborator only.",
|
|
420
|
+
inputSchema: {
|
|
421
|
+
from: z.string().describe("Issue id the edge starts at"),
|
|
422
|
+
to: z.string().describe("Issue id the edge points to"),
|
|
423
|
+
kind: z.enum(["blocks", "contains", "relates"]).optional().describe("Edge kind (default: blocks)"),
|
|
424
|
+
remove: z.boolean().optional().describe("Remove the edge instead of adding it"),
|
|
425
|
+
path: z.string().optional().describe("Project root (default: cwd)"),
|
|
426
|
+
},
|
|
427
|
+
}, async ({ from, to, kind, remove, path }) => {
|
|
428
|
+
const edge = [{ to, kind: kind ?? "blocks" }];
|
|
429
|
+
const res = await updateIssue(rootOf(path), { id: from, ...(remove ? { remove_edges: edge } : { add_edges: edge }) });
|
|
430
|
+
if (!res.ok)
|
|
431
|
+
return issueFail("Link issues", res.code, res.message);
|
|
432
|
+
return json({ ok: true, from, to, kind: kind ?? "blocks", removed: Boolean(remove) });
|
|
433
|
+
});
|
|
309
434
|
return server;
|
|
310
435
|
}
|
|
311
436
|
// ---------- helpers ----------
|
package/dist/mcp/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAChI,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC5F,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAGxE,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,GAAG,GAAG,OAAO,CAAC,oBAAoB,CAAwB,CAAC;AAEjE;;;;GAIG;AACH,MAAM,UAAU,WAAW;IACzB,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IACzE,MAAM,MAAM,GAAG,CAAC,IAAa,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAEjE,MAAM,CAAC,YAAY,CACjB,MAAM,EACN;QACE,KAAK,EAAE,cAAc;QACrB,WAAW,EACT,2GAA2G;YAC3G,6HAA6H;QAC/H,WAAW,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC,EAAE;KACrF,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;QACjB,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QACrC,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC,sFAAsF,CAAC,CAAC;QACjH,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC;QACrB,OAAO,IAAI,CAAC;YACV,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS;YAC3B,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM;YACrB,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM;YACzB,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM;YAC7B,WAAW,EAAE,CAAC,CAAC,WAAW,CAAC,MAAM;YACjC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM;YACrB,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,CAAC,CAAC;IACL,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,UAAU,EACV;QACE,KAAK,EAAE,sBAAsB;QAC7B,WAAW,EACT,kIAAkI;YAClI,gGAAgG;QAClG,WAAW,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE;KAC7C,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;QACjB,MAAM,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QACrC,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC,qCAAqC,CAAC,CAAC;QAC7D,OAAO,IAAI,CAAC;YACV,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC,SAAS;YAC7B,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM;YACvB,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC/B,EAAE,EAAE,CAAC,CAAC,EAAE;gBACR,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,MAAM;gBAC3B,WAAW,EAAE,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM;gBAClE,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM;aACvD,CAAC,CAAC;YACH,SAAS,EAAE,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACnC,EAAE,EAAE,CAAC,CAAC,EAAE;gBACR,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,eAAe,EAAE,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI;aACzF,CAAC,CAAC;SACJ,CAAC,CAAC;IACL,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,YAAY,EACZ;QACE,KAAK,EAAE,eAAe;QACtB,WAAW,EACT,0IAA0I;YAC1I,qGAAqG;QACvG,WAAW,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE;KACvG,EACD,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE;QACzB,MAAM,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QACrC,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC,qCAAqC,CAAC,CAAC;QAC7D,MAAM,CAAC,GAAG,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACnC,IAAI,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC,qBAAqB,MAAM,EAAE,CAAC,CAAC;QACnD,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;IACpC,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,WAAW,EACX;QACE,KAAK,EAAE,2BAA2B;QAClC,WAAW,EACT,gIAAgI;YAChI,oFAAoF;QACtF,WAAW,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE;KACnE,EACD,KAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE;QAC3B,MAAM,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QACrC,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC,qCAAqC,CAAC,CAAC;QAC7D,MAAM,CAAC,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,GAAG,CAAC,SAAS,CAAC,MAAM,CAClC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CACjH,CAAC;QACF,OAAO,IAAI,CACT,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAClB,QAAQ,EAAE,CAAC,CAAC,KAAK;YACjB,OAAO,EAAE,GAAG,CAAC,KAAK;iBACf,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;iBAC5B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;SAChE,CAAC,CAAC,CACJ,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,gGAAgG;IAEhG,MAAM,CAAC,YAAY,CACjB,aAAa,EACb;QACE,KAAK,EAAE,oBAAoB;QAC3B,WAAW,EACT,8FAA8F;YAC9F,kHAAkH;QACpH,WAAW,EAAE;YACX,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;YACxD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+CAA+C,CAAC;YAC7E,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SAC5B;KACF,EACD,KAAK,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CACvG,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,SAAS,EACT;QACE,KAAK,EAAE,gBAAgB;QACvB,WAAW,EACT,uGAAuG;YACvG,4FAA4F;QAC9F,WAAW,EAAE;YACX,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;YACxD,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;YACxD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SAC5B;KACF,EACD,KAAK,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAC3F,CAAC;IAEF,8EAA8E;IAE9E,MAAM,CAAC,YAAY,CACjB,SAAS,EACT;QACE,KAAK,EAAE,0BAA0B;QACjC,WAAW,EACT,0GAA0G;YAC1G,8GAA8G;YAC9G,gHAAgH;YAChH,2EAA2E;QAC7E,WAAW,EAAE;YACX,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;YACnE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yEAAyE,CAAC;YAC/G,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4EAA4E,CAAC;SACnH;KACF,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE;QAC7B,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QAC1E,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,KAAK,GAA2B;gBACpC,MAAM,EAAE,sDAAsD;gBAC9D,QAAQ,EAAE,yFAAyF;gBACnG,MAAM,EAAE,mDAAmD;gBAC3D,UAAU,EAAE,4DAA4D;gBACxE,aAAa,EAAE,uFAAuF;gBACtG,cAAc,EAAE,8DAA8D;aAC/E,CAAC;YACF,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACtE,OAAO,IAAI,CAAC,mBAAmB,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,OAAO,IAAI,IAAI,EAAE,CAAC,CAAC;QACtE,CAAC;QACD,MAAM,CAAC,GAAG,MAAM,kBAAkB,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QACvD,OAAO,IAAI,CAAC;YACV,EAAE,EAAE,IAAI;YACR,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,GAAG,EAAE,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,MAAM;YAChC,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,GAAG,CAAC,CAAC,EAAE,MAAM;gBACX,CAAC,CAAC,EAAE,eAAe,EAAE,GAAG,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,UAAU,EAAE,uCAAuC,EAAE;gBACxG,CAAC,CAAC,EAAE,CAAC;SACR,CAAC,CAAC;IACL,CAAC,CACF,CAAC;IAEF,yEAAyE;IAEzE,MAAM,CAAC,YAAY,CACjB,eAAe,EACf;QACE,KAAK,EAAE,4BAA4B;QACnC,WAAW,EACT,6GAA6G;YAC7G,6GAA6G;YAC7G,+GAA+G;QACjH,WAAW,EAAE,EAAE;KAChB,EACD,KAAK,IAAI,EAAE;QACT,MAAM,CAAC,GAAG,MAAM,cAAc,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC;YACV,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,MAAM,EAAE,CAAC,CAAC,MAAM;gBACd,CAAC,CAAC,qFAAqF;gBACvF,CAAC,CAAC,CAAC,CAAC,MAAM;oBACR,CAAC,CAAC,aAAa;oBACf,CAAC,CAAC,qDAAqD;SAC5D,CAAC,CAAC;IACL,CAAC,CACF,CAAC;IAEF,kEAAkE;IAElE,MAAM,CAAC,YAAY,CACjB,UAAU,EACV;QACE,KAAK,EAAE,cAAc;QACrB,WAAW,EACT,+GAA+G;YAC/G,iHAAiH;YACjH,4GAA4G;YAC5G,+GAA+G;YAC/G,2CAA2C;QAC7C,WAAW,EAAE;YACX,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;YACnE,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iDAAiD,CAAC;SACzF;KACF,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE;QACvB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QAC1B,MAAM,GAAG,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/C,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,KAAK,GAA2B;gBACpC,QAAQ,EAAE,qFAAqF;gBAC/F,MAAM,EAAE,mDAAmD;gBAC3D,OAAO,EAAE,sEAAsE;gBAC/E,aAAa,EAAE,uFAAuF;gBACtG,SAAS,EAAE,sCAAsC;aAClD,CAAC;YACF,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACtE,OAAO,IAAI,CAAC,2BAA2B,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,OAAO,IAAI,IAAI,EAAE,CAAC,CAAC;QAC9E,CAAC;QACD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;QACtC,MAAM,QAAQ,GAAG,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;QACtF,OAAO,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC9E,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,iBAAiB,EACjB;QACE,KAAK,EAAE,uBAAuB;QAC9B,WAAW,EACT,gHAAgH;YAChH,4GAA4G;QAC9G,WAAW,EAAE;YACX,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;YAC9D,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;YACvF,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;SACpE;KACF,EACD,KAAK,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE;QAC/B,MAAM,GAAG,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC7F,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,KAAK,GAA2B;gBACpC,QAAQ,EAAE,iDAAiD;gBAC3D,SAAS,EAAE,0DAA0D;gBACrE,SAAS,EAAE,0BAA0B;aACtC,CAAC;YACF,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACtE,OAAO,IAAI,CAAC,mBAAmB,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,OAAO,IAAI,IAAI,EAAE,CAAC,CAAC;QACtE,CAAC;QACD,OAAO,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;IAChE,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,aAAa,EACb;QACE,KAAK,EAAE,mBAAmB;QAC1B,WAAW,EACT,+GAA+G;YAC/G,+GAA+G;YAC/G,wFAAwF;QAC1F,WAAW,EAAE;YACX,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yDAAyD,CAAC;YACpF,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;YAC7C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;SACpE;KACF,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE;QAC7B,MAAM,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3C,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC,6DAA6D,CAAC,CAAC;QACrF,MAAM,CAAC,GAAG,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC,oBAAoB,IAAI,qDAAqD,CAAC,CAAC;QACnG,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,YAAY,EAAE,CAAC,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9H,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,KAAK,GAA2B;gBACpC,QAAQ,EAAE,iDAAiD;gBAC3D,OAAO,EAAE,4CAA4C;gBACrD,SAAS,EAAE,uDAAuD;aACnE,CAAC;YACF,OAAO,IAAI,CAAC,uBAAuB,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC9H,CAAC;QACD,OAAO,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,YAAY,EAAE,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC;IACrG,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,eAAe,EACf;QACE,KAAK,EAAE,wBAAwB;QAC/B,WAAW,EACT,gHAAgH;YAChH,+GAA+G;QACjH,WAAW,EAAE;YACX,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;YACrE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YAC3C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;SACpE;KACF,EACD,KAAK,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE;QAC3B,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QACrE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,KAAK,GAA2B;gBACpC,QAAQ,EAAE,iDAAiD;gBAC3D,SAAS,EAAE,mCAAmC;gBAC9C,SAAS,EAAE,uDAAuD;aACnE,CAAC;YACF,OAAO,IAAI,CAAC,iBAAiB,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACxH,CAAC;QACD,OAAO,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;IAChE,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,kBAAkB,EAClB;QACE,KAAK,EAAE,qCAAqC;QAC5C,WAAW,EACT,qHAAqH;YACrH,sHAAsH;YACtH,qHAAqH;YACrH,qHAAqH;YACrH,iDAAiD;QACnD,WAAW,EAAE;YACX,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,8DAA8D,CAAC;YACxG,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;YACnE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8CAA8C,CAAC;YACrF,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gEAAgE,CAAC;YACtG,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yDAAyD,CAAC;SAClG;KACF,EACD,KAAK,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;QAC1C,MAAM,GAAG,GAAG,MAAM,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAC/E,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,KAAK,GAA2B;gBACpC,QAAQ,EAAE,iDAAiD;gBAC3D,OAAO,EAAE,4CAA4C;gBACrD,eAAe,EAAE,0EAA0E;gBAC3F,SAAS,EAAE,0EAA0E;gBACrF,SAAS,EAAE,2DAA2D;gBACtE,SAAS,EAAE,iEAAiE;aAC7E,CAAC;YACF,OAAO,IAAI,CAAC,sBAAsB,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC7H,CAAC;QACD,OAAO,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;IACtF,CAAC,CACF,CAAC;IAEF,oFAAoF;IAEpF,MAAM,UAAU,GAA2B;QACzC,QAAQ,EAAE,qFAAqF;QAC/F,MAAM,EAAE,mDAAmD;QAC3D,OAAO,EAAE,sEAAsE;QAC/E,aAAa,EAAE,uFAAuF;QACtG,SAAS,EAAE,4DAA4D;QACvE,SAAS,EAAE,4CAA4C;KACxD,CAAC;IACF,MAAM,SAAS,GAAG,CAAC,IAAY,EAAE,IAAa,EAAE,OAAgB,EAAE,EAAE,CAClE,IAAI,CAAC,GAAG,IAAI,YAAY,IAAI,MAAM,OAAO,IAAI,UAAU,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,UAAU,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAE7G,MAAM,CAAC,YAAY,CACjB,QAAQ,EACR;QACE,KAAK,EAAE,iBAAiB;QACxB,WAAW,EACT,yGAAyG;YACzG,6GAA6G;YAC7G,8GAA8G;YAC9G,gHAAgH;YAChH,gFAAgF;QAClF,WAAW,EAAE;YACX,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;YACnE,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sDAAsD,CAAC;SAC9F;KACF,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE;QACvB,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QAC/C,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK;YAAE,OAAO,SAAS,CAAC,aAAa,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;QAClF,MAAM,MAAM,GAAG,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM;aAC5B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAE,EAAE,CAAC,CAAC;aAC5C,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACnC,OAAO,IAAI,CAAC;YACV,EAAE,EAAE,IAAI;YACR,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI;YACpB,YAAY,EAAE,GAAG,CAAC,KAAK,CAAC,YAAY;YACpC,KAAK,EAAE,MAAM,CAAC,MAAM;YACpB,MAAM;YACN,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK;YACtB,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK;SACvB,CAAC,CAAC;IACL,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,WAAW,EACX;QACE,KAAK,EAAE,cAAc;QACrB,WAAW,EACT,4GAA4G;YAC5G,yGAAyG;YACzG,6GAA6G;YAC7G,8GAA8G;YAC9G,sGAAsG;QACxG,WAAW,EAAE;YACX,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;YACzC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC;YACnF,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;YAClF,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gDAAgD,CAAC;YACtF,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yDAAyD,CAAC;YACpG,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uFAAuF,CAAC;YAC/H,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;SACpE;KACF,EACD,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE;QAC/D,MAAM,YAAY,GAAG,MAAM;YACzB,CAAC,CAAC;gBACE,WAAW,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAC1F;gBAC/B,UAAU,EAAE,MAAM;aACnB;YACH,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,YAAY,EAAE,CAAC,CAAC;QACvG,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK;YAAE,OAAO,SAAS,CAAC,WAAW,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;QAChF,OAAO,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;IAC9C,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,cAAc,EACd;QACE,KAAK,EAAE,iBAAiB;QACxB,WAAW,EACT,4GAA4G;YAC5G,mGAAmG;YACnG,+GAA+G;QACjH,WAAW,EAAE;YACX,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;YAC1D,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;YACtE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAC5B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;YACzD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;YACvE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6EAA6E,CAAC;YACrH,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;YAClF,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;SACpE;KACF,EACD,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE;QACrE,MAAM,GAAG,GAA4B,EAAE,CAAC;QACxC,IAAI,MAAM,KAAK,SAAS;YAAE,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC;QAC9C,IAAI,KAAK,KAAK,SAAS;YAAE,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC;QAC3C,IAAI,IAAI,KAAK,SAAS;YAAE,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;QACxC,IAAI,IAAI,KAAK,SAAS;YAAE,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;QACxC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,IAAI,MAAM,KAAK,EAAE;gBAAE,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;iBAC1E,CAAC;gBACJ,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC;gBAC9H,GAAG,CAAC,UAAU,GAAG,MAAM,CAAC;YAC1B,CAAC;QACH,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QAC3F,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,OAAO,SAAS,CAAC,cAAc,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;QACrE,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;IAC9F,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,aAAa,EACb;QACE,KAAK,EAAE,iBAAiB;QACxB,WAAW,EACT,6GAA6G;YAC7G,6GAA6G;YAC7G,6FAA6F;QAC/F,WAAW,EAAE;YACX,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;YACxD,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;YACtD,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;YAClG,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;YAC/E,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;SACpE;KACF,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE;QACzC,MAAM,IAAI,GAAG,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,IAAK,QAAkB,EAAE,CAAC,CAAC;QACzD,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QACtH,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,OAAO,SAAS,CAAC,aAAa,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;QACpE,OAAO,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,IAAI,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACxF,CAAC,CACF,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,gCAAgC;AAEhC,SAAS,IAAI,CAAC,CAAS;IACrB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAC3D,CAAC;AACD,SAAS,IAAI,CAAC,GAAY;IACxB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;AACtF,CAAC;AAED,mFAAmF;AACnF,SAAS,UAAU,CAAC,IAAY,EAAE,SAAiB,EAAE,MAA2B;IAC9E,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC,qCAAqC,CAAC,CAAC;IAC7D,MAAM,CAAC,GAAG,WAAW,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IACtC,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC,qBAAqB,SAAS,EAAE,CAAC,CAAC;IACtD,MAAM,CAAC,CAAC,CAAC,CAAC;IACV,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACnB,aAAa,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACzB,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,sBAAsB,CAAC,CAAC;AACtD,CAAC;AAED,SAAS,WAAW,CAAC,GAAe,EAAE,GAAW;IAC/C,MAAM,IAAI,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;IACtE,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;IACpB,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AACjG,CAAC;AAED,SAAS,YAAY,CAAC,GAAe,EAAE,CAAS;IAC9C,MAAM,aAAa,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC;IAC1F,OAAO;QACL,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,UAAU,EAAE,CAAC,CAAC,UAAU;QACxB,OAAO,EAAE,CAAC,CAAC,OAAO,IAAI,IAAI;QAC1B,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,IAAI;QAClB,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,UAAU,EAAE,CAAC,CAAC,UAAU;QACxB,WAAW,EAAE,GAAG,CAAC,WAAW;aACzB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC;aAC9B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,SAAS,IAAI,cAAc,EAAE,GAAG,EAAE,CAAC,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QAC1F,aAAa,EAAE,GAAG,CAAC,WAAW;aAC3B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;aAC5B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QAC7D,KAAK,EAAE,GAAG,CAAC,KAAK;aACb,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC;aAC9B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,cAAc,EAAE,GAAG,EAAE,CAAC,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;KACtH,CAAC;AACJ,CAAC"}
|