@hyperdreamer/pi-webui 1.9.0 → 1.10.0

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.
@@ -53,7 +53,7 @@
53
53
  html, body { margin: 0; height: 100%; overflow: hidden; background: var(--pi-bg); color: var(--pi-text); }
54
54
  body { min-height: 100dvh; }
55
55
  </style>
56
- <script type="module" crossorigin src="./assets/index-DCPkewJK.js"></script>
56
+ <script type="module" crossorigin src="./assets/index-DtFX3SXN.js"></script>
57
57
  <link rel="modulepreload" crossorigin href="./assets/vendor-editor-core-vUi74DnD.js">
58
58
  <link rel="modulepreload" crossorigin href="./assets/vendor-editor-languages-DoaXUodB.js">
59
59
  <link rel="modulepreload" crossorigin href="./assets/vendor-terminal-D8k4UKM2.js">
@@ -0,0 +1,55 @@
1
+ // Generated from pi-webui-plugins/workspace-memory/memoryClient.ts. Do not edit directly.
2
+ function isRecord(value) {
3
+ return value !== null && typeof value === "object";
4
+ }
5
+ function parseMemoryEntry(value) {
6
+ if (!isRecord(value))
7
+ return undefined;
8
+ const id = value["id"];
9
+ const content = value["content"];
10
+ if (typeof id !== "string" || typeof content !== "string")
11
+ return undefined;
12
+ const entry = { id, content };
13
+ const category = value["category"];
14
+ if (typeof category === "string")
15
+ entry.category = category;
16
+ const created = value["created"];
17
+ if (typeof created === "string")
18
+ entry.created = created;
19
+ const last = value["last"];
20
+ if (typeof last === "string")
21
+ entry.last = last;
22
+ const failureReason = value["failureReason"];
23
+ if (typeof failureReason === "string")
24
+ entry.failureReason = failureReason;
25
+ return entry;
26
+ }
27
+ function parseEntries(data) {
28
+ if (!isRecord(data))
29
+ throw new Error("Invalid memory API response");
30
+ const entries = data["entries"];
31
+ if (!Array.isArray(entries))
32
+ throw new Error("Invalid memory API response");
33
+ const result = [];
34
+ for (const raw of entries) {
35
+ const parsed = parseMemoryEntry(raw);
36
+ if (parsed !== undefined)
37
+ result.push(parsed);
38
+ }
39
+ return result;
40
+ }
41
+ export async function fetchGlobalMemories() {
42
+ const response = await fetch("api/agent-memory/global");
43
+ if (!response.ok) {
44
+ throw new Error("Failed to load global memories: " + String(response.status));
45
+ }
46
+ return parseEntries(await response.json());
47
+ }
48
+ export async function fetchProjectMemories(projectPath) {
49
+ const params = new URLSearchParams({ projectPath });
50
+ const response = await fetch("api/agent-memory/project?" + String(params));
51
+ if (!response.ok) {
52
+ throw new Error("Failed to load project memories: " + String(response.status));
53
+ }
54
+ return parseEntries(await response.json());
55
+ }
@@ -0,0 +1,2 @@
1
+ // Generated from pi-webui-plugins/workspace-memory/memoryData.ts. Do not edit directly.
2
+ export {};
@@ -0,0 +1,54 @@
1
+ // Generated from pi-webui-plugins/workspace-memory/memoryLoadController.ts. Do not edit directly.
2
+ const PROJECT_UNAVAILABLE_MESSAGE = "Project-specific memory could not be loaded.";
3
+ /** Coordinates independently fetched memory scopes and suppresses superseded loads. */
4
+ export class MemoryLoadController {
5
+ fetchers;
6
+ generation = 0;
7
+ constructor(fetchers) {
8
+ this.fetchers = fetchers;
9
+ }
10
+ async load(projectPath) {
11
+ const loadGeneration = ++this.generation;
12
+ const globalLoad = invokeFetcher(() => this.fetchers.fetchGlobalMemories());
13
+ const projectLoad = invokeFetcher(() => this.fetchers.fetchProjectMemories(projectPath))
14
+ .then((entries) => ({ kind: "available", entries }))
15
+ .catch(() => ({ kind: "unavailable" }));
16
+ let globalEntries;
17
+ try {
18
+ globalEntries = await globalLoad;
19
+ }
20
+ catch (error) {
21
+ if (!this.isCurrent(loadGeneration))
22
+ return undefined;
23
+ return {
24
+ kind: "global-error",
25
+ message: error instanceof Error ? error.message : "Failed to load memories.",
26
+ };
27
+ }
28
+ const projectOutcome = await projectLoad;
29
+ if (!this.isCurrent(loadGeneration))
30
+ return undefined;
31
+ if (projectOutcome.kind === "unavailable") {
32
+ return {
33
+ kind: "loaded",
34
+ globalEntries,
35
+ projectEntries: [],
36
+ projectUnavailableMessage: PROJECT_UNAVAILABLE_MESSAGE,
37
+ };
38
+ }
39
+ return {
40
+ kind: "loaded",
41
+ globalEntries,
42
+ projectEntries: projectOutcome.entries,
43
+ };
44
+ }
45
+ invalidate() {
46
+ this.generation += 1;
47
+ }
48
+ isCurrent(loadGeneration) {
49
+ return this.generation === loadGeneration;
50
+ }
51
+ }
52
+ async function invokeFetcher(fetcher) {
53
+ return fetcher();
54
+ }
@@ -0,0 +1,255 @@
1
+ // Generated from pi-webui-plugins/workspace-memory/memoryPanelElement.ts. Do not edit directly.
2
+ import { fetchGlobalMemories, fetchProjectMemories } from "./memoryClient.js";
3
+ import { MemoryLoadController } from "./memoryLoadController.js";
4
+ export const memoryPanelTagName = "pi-webui-memory-panel";
5
+ const CATEGORY_CLASS = {
6
+ "tool-quirk": "cat-amber",
7
+ insight: "cat-blue",
8
+ correction: "cat-green",
9
+ failure: "cat-red",
10
+ preference: "cat-purple",
11
+ convention: "cat-teal",
12
+ };
13
+ const TRUNCATE_LENGTH = 120;
14
+ export function categoryBadgeLabel(category) {
15
+ return category ?? "uncategorized";
16
+ }
17
+ export function categoryBadgeClass(category) {
18
+ const key = categoryBadgeLabel(category);
19
+ return CATEGORY_CLASS[key] ?? "cat-gray";
20
+ }
21
+ export function truncateContent(content) {
22
+ if (content.length <= TRUNCATE_LENGTH)
23
+ return content;
24
+ return content.slice(0, TRUNCATE_LENGTH) + "\u2026";
25
+ }
26
+ function renderCategoryBadge(category) {
27
+ const label = categoryBadgeLabel(category);
28
+ const cls = categoryBadgeClass(category);
29
+ return `<span class="cat-badge ${cls}">${escapeHtml(label)}</span>`;
30
+ }
31
+ function renderDates(entry) {
32
+ const parts = [];
33
+ if (entry.created !== undefined) {
34
+ parts.push(`<span class="date-label">Created:</span> ${escapeHtml(entry.created)}`);
35
+ }
36
+ if (entry.last !== undefined) {
37
+ parts.push(`<span class="date-label">Last modified:</span> ${escapeHtml(entry.last)}`);
38
+ }
39
+ if (parts.length === 0)
40
+ return "";
41
+ return `<div class="entry-dates">${parts.join(" &middot; ")}</div>`;
42
+ }
43
+ export function renderEntryHtml(entry) {
44
+ const badge = renderCategoryBadge(entry.category);
45
+ const summaryText = truncateContent(entry.content);
46
+ const dates = renderDates(entry);
47
+ return `
48
+ <details class="memory-entry">
49
+ <summary>${badge}<span class="entry-summary">${escapeHtml(summaryText)}</span></summary>
50
+ <div class="entry-body">
51
+ <pre>${escapeHtml(entry.content)}</pre>
52
+ ${dates}
53
+ </div>
54
+ </details>
55
+ `;
56
+ }
57
+ export function defineMemoryPanelElement() {
58
+ if (typeof customElements !== "undefined" && !customElements.get(memoryPanelTagName)) {
59
+ customElements.define(memoryPanelTagName, PiWebUiMemoryPanel);
60
+ }
61
+ }
62
+ // Non-browser test environment fallback — keep the assertion off the ternary line.
63
+ // eslint-disable-next-line @typescript-eslint/no-extraneous-class
64
+ class _NoopBase {
65
+ }
66
+ function _noopElementConstructor() {
67
+ // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
68
+ return _NoopBase;
69
+ }
70
+ const _BaseElement = typeof HTMLElement !== "undefined"
71
+ ? HTMLElement
72
+ : _noopElementConstructor();
73
+ class PiWebUiMemoryPanel extends _BaseElement {
74
+ contextValue;
75
+ state = { kind: "no-workspace" };
76
+ root;
77
+ loadController = new MemoryLoadController({ fetchGlobalMemories, fetchProjectMemories });
78
+ constructor() {
79
+ super();
80
+ this.root = this.attachShadow({ mode: "open" });
81
+ }
82
+ /** Public setter for the workspace panel context. */
83
+ set context(value) {
84
+ const previousContext = this.contextValue;
85
+ this.contextValue = value;
86
+ if (isSameWorkspaceContext(previousContext, value))
87
+ return;
88
+ this.loadController.invalidate();
89
+ if (value === undefined) {
90
+ this.state = { kind: "no-workspace" };
91
+ this.render();
92
+ return;
93
+ }
94
+ if (this.isConnected)
95
+ void this.loadMemories();
96
+ }
97
+ /** Exposed for tests to inject state directly without network calls. */
98
+ setState(next) {
99
+ this.state = next;
100
+ this.render();
101
+ }
102
+ connectedCallback() {
103
+ this.render();
104
+ if (this.contextValue !== undefined) {
105
+ void this.loadMemories();
106
+ }
107
+ }
108
+ disconnectedCallback() {
109
+ this.loadController.invalidate();
110
+ }
111
+ async loadMemories() {
112
+ const context = this.contextValue;
113
+ if (context === undefined) {
114
+ this.state = { kind: "no-workspace" };
115
+ this.render();
116
+ return;
117
+ }
118
+ const workspacePath = context.workspace.path;
119
+ this.state = { kind: "loading" };
120
+ this.render();
121
+ const result = await this.loadController.load(workspacePath);
122
+ if (result === undefined || !this.isCurrentContext(context, workspacePath))
123
+ return;
124
+ this.state = result.kind === "global-error"
125
+ ? { kind: "error", message: result.message }
126
+ : {
127
+ kind: "data",
128
+ globalEntries: result.globalEntries,
129
+ projectEntries: result.projectEntries,
130
+ ...(result.projectUnavailableMessage === undefined
131
+ ? {}
132
+ : { projectUnavailableMessage: result.projectUnavailableMessage }),
133
+ };
134
+ this.render();
135
+ context.host.requestRender();
136
+ }
137
+ isCurrentContext(context, workspacePath) {
138
+ const currentContext = this.contextValue;
139
+ return currentContext !== undefined
140
+ && hasSameWorkspaceIdentity(currentContext, context)
141
+ && currentContext.workspace.path === workspacePath;
142
+ }
143
+ render() {
144
+ this.root.innerHTML = `${panelStyles()}${renderPanelState(this.state)}`;
145
+ this.attachEventListeners();
146
+ }
147
+ attachEventListeners() {
148
+ this.root.querySelector("button[data-retry]")?.addEventListener("click", () => {
149
+ void this.loadMemories();
150
+ });
151
+ }
152
+ }
153
+ function isSameWorkspaceContext(left, right) {
154
+ if (left === undefined || right === undefined)
155
+ return left === right;
156
+ return hasSameWorkspaceIdentity(left, right) && left.workspace.path === right.workspace.path;
157
+ }
158
+ function hasSameWorkspaceIdentity(left, right) {
159
+ return left.machine.id === right.machine.id
160
+ && left.workspace.projectId === right.workspace.projectId
161
+ && left.workspace.id === right.workspace.id;
162
+ }
163
+ export function renderPanelState(state) {
164
+ switch (state.kind) {
165
+ case "no-workspace":
166
+ return `<section class="empty">Select a workspace.</section>`;
167
+ case "loading":
168
+ return `<section class="viewer"><div class="spinner">Loading memories\u2026</div></section>`;
169
+ case "error":
170
+ return `<section class="viewer">
171
+ <div class="status error">${escapeHtml(state.message)}</div>
172
+ <button class="secondary" data-retry style="margin-top:10px">Retry</button>
173
+ </section>`;
174
+ case "data":
175
+ return `<section class="viewer">
176
+ ${renderMemoryGroupHtml({
177
+ title: "Global memory",
178
+ entries: state.globalEntries,
179
+ emptyMessage: "No global memories found.",
180
+ })}
181
+ ${renderMemoryGroupHtml({
182
+ title: "Project-specific memory",
183
+ entries: state.projectEntries,
184
+ emptyMessage: "No project-specific memories found.",
185
+ ...(state.projectUnavailableMessage === undefined
186
+ ? {}
187
+ : { unavailableMessage: state.projectUnavailableMessage }),
188
+ })}
189
+ </section>`;
190
+ }
191
+ }
192
+ function renderMemoryGroupHtml(options) {
193
+ const unavailable = options.unavailableMessage !== undefined;
194
+ const count = `${String(options.entries.length)} ${options.entries.length === 1 ? "entry" : "entries"}`;
195
+ const body = unavailable
196
+ ? `<p class="memory-group-message unavailable">${escapeHtml(options.unavailableMessage)}</p>`
197
+ : options.entries.length === 0
198
+ ? `<p class="memory-group-message">${escapeHtml(options.emptyMessage)}</p>`
199
+ : options.entries.map((entry) => renderEntryHtml(entry)).join("");
200
+ return `
201
+ <details class="memory-group" open>
202
+ <summary>
203
+ <span class="memory-group-title">${escapeHtml(options.title)}</span>
204
+ <span class="${unavailable ? "memory-group-status unavailable" : "memory-group-count"}">${unavailable ? "Unavailable" : count}</span>
205
+ </summary>
206
+ <div class="memory-group-body">${body}</div>
207
+ </details>
208
+ `;
209
+ }
210
+ function panelStyles() {
211
+ return `
212
+ <style>
213
+ :host { display: contents; }
214
+ .viewer { box-sizing: border-box; min-height: 0; overflow: auto; padding: 12px; }
215
+ .empty { padding: 16px; color: var(--pi-muted); }
216
+ .memory-group { border: 1px solid var(--pi-border); border-radius: 8px; margin-bottom: 10px; }
217
+ .memory-group:last-child { margin-bottom: 0; }
218
+ .memory-group[open] { background: var(--pi-surface); }
219
+ .memory-group summary { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 10px 12px; cursor: pointer; }
220
+ .memory-group-title { font-weight: 600; }
221
+ .memory-group-count, .memory-group-status { color: var(--pi-muted); font-size: 12px; white-space: nowrap; }
222
+ .memory-group-status.unavailable { color: var(--pi-danger); }
223
+ .memory-group-body { padding: 0 12px 12px; }
224
+ .memory-group-message { margin: 0; color: var(--pi-muted); }
225
+ .memory-group-message.unavailable { color: var(--pi-danger); }
226
+ .muted { color: var(--pi-muted); }
227
+ .spinner { display: flex; align-items: center; gap: 8px; color: var(--pi-muted); }
228
+ .spinner::before { content: ""; display: inline-block; width: 16px; height: 16px; border: 2px solid var(--pi-border); border-top-color: var(--pi-accent); border-radius: 50%; animation: spin 0.8s linear infinite; }
229
+ @keyframes spin { to { transform: rotate(360deg); } }
230
+ .status { border: 1px solid var(--pi-border); border-radius: 8px; padding: 10px; }
231
+ .status.error { border-color: var(--pi-danger); color: var(--pi-danger); }
232
+ button { border: 1px solid var(--pi-accent-border); border-radius: 7px; background: var(--pi-accent); color: var(--pi-bg); cursor: pointer; padding: 6px 10px; font: inherit; }
233
+ button.secondary { border-color: var(--pi-border); background: var(--pi-surface); color: var(--pi-text); }
234
+ .memory-entry { border: 1px solid var(--pi-border); border-radius: 8px; margin-bottom: 8px; }
235
+ .memory-entry[open] { background: var(--pi-surface); }
236
+ .memory-entry summary { display: flex; align-items: flex-start; gap: 8px; padding: 10px 12px; cursor: pointer; }
237
+ .cat-badge { display: inline-block; font-size: 11px; font-weight: 600; text-transform: uppercase; border-radius: 4px; padding: 2px 6px; white-space: nowrap; flex-shrink: 0; }
238
+ .cat-amber { background: #f59e0b20; color: #b45309; }
239
+ .cat-blue { background: #3b82f620; color: #1d4ed8; }
240
+ .cat-green { background: #10b98120; color: #047857; }
241
+ .cat-red { background: #ef444420; color: #b91c1c; }
242
+ .cat-purple { background: #8b5cf620; color: #6d28d9; }
243
+ .cat-teal { background: #14b8a620; color: #0f766e; }
244
+ .cat-gray { background: #6b728020; color: #4b5563; }
245
+ .entry-summary { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; flex: 1; min-width: 0; }
246
+ .entry-body { padding: 0 12px 12px; }
247
+ .entry-body pre { margin: 0 0 8px; padding: 8px; border: 1px solid var(--pi-border-muted); border-radius: 6px; background: var(--pi-bg); color: var(--pi-text-secondary); font: 12px ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; white-space: pre-wrap; word-break: break-word; }
248
+ .entry-dates { font-size: 12px; color: var(--pi-muted); }
249
+ .date-label { font-weight: 600; }
250
+ </style>
251
+ `;
252
+ }
253
+ function escapeHtml(value) {
254
+ return String(value).replaceAll("&", "&amp;").replaceAll("<", "&lt;").replaceAll(">", "&gt;");
255
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "name": "@pi-webui/workspace-memory-plugin",
3
+ "private": true,
4
+ "piWebUi": {
5
+ "plugins": [
6
+ { "id": "workspace-memory", "module": "pi-webui-plugin.js" }
7
+ ]
8
+ }
9
+ }
@@ -0,0 +1,32 @@
1
+ // Generated from pi-webui-plugins/workspace-memory/pi-webui-plugin.ts. Do not edit directly.
2
+ import { defineMemoryPanelElement } from "./memoryPanelElement.js";
3
+ const plugin = {
4
+ apiVersion: 1,
5
+ name: "Workspace Memory",
6
+ activate: ({ html, svg }) => {
7
+ defineMemoryPanelElement();
8
+ return {
9
+ contributions: {
10
+ workspacePanels: [
11
+ {
12
+ id: "workspace.memory",
13
+ title: "Memory",
14
+ icon: svg `
15
+ <svg data-icon="brain" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
16
+ <path d="M12 18V5"></path>
17
+ <path d="M15 13a4.17 4.17 0 0 1-3-4 4.17 4.17 0 0 1-3 4"></path>
18
+ <path d="M17.6 6.5A3 3 0 1 0 12 5a3 3 0 1 0-5.6 1.5"></path>
19
+ <path d="M17.6 17.5A3 3 0 1 1 12 19a3 3 0 1 1-5.6-1.5"></path>
20
+ <path d="M17.6 6.5a3 3 0 0 1 1.4 5.5 3 3 0 0 1-1.4 5.5"></path>
21
+ <path d="M6.4 17.5A3 3 0 0 1 5 12a3 3 0 0 1 1.4-5.5"></path>
22
+ </svg>
23
+ `,
24
+ order: 50,
25
+ render: (context) => html `<pi-webui-memory-panel .context=${context}></pi-webui-memory-panel>`,
26
+ },
27
+ ],
28
+ },
29
+ };
30
+ },
31
+ };
32
+ export default plugin;
@@ -30,6 +30,7 @@ import { createPiWebUiStatusCache } from "./piWebUiStatusCache.js";
30
30
  import { getPiWebUiRuntime, getPiWebUiStatus, getPiWebUiVersionStatus } from "./piWebUiStatus.js";
31
31
  import { ActiveAgentProfileAccessError, requireActiveAgentProfile, SessionDaemonActiveAgentProfileProvider, } from "./activeAgentProfileProvider.js";
32
32
  import { MachineService } from "./machines/machineService.js";
33
+ import { registerMemoryRoutes } from "./memory/memoryRoutes.js";
33
34
  import { registerMachineRoutes } from "./machines/machineRoutes.js";
34
35
  import { registerMachineProxyRoutes } from "./machines/machineProxyRoutes.js";
35
36
  import { proxyMachinePluginAsset, registerMachinePluginProxyRoutes } from "./machines/machinePluginProxyRoutes.js";
@@ -184,6 +185,8 @@ export async function buildApp(deps = {}) {
184
185
  const invalidatingConfigService = invalidatePiWebUiStatusOnWrite(configService, piWebUiStatusCache);
185
186
  registerConfigRoutes(app, invalidatingConfigService);
186
187
  registerLocalMachineConfigRoutes(app, invalidatingConfigService);
188
+ registerMemoryRoutes(app, agentProfileProvider, "/api");
189
+ registerMemoryRoutes(app, agentProfileProvider, "/api/machines/local");
187
190
  registerMachineRoutes(app, machines);
188
191
  registerMachinePluginProxyRoutes(app, machines);
189
192
  registerLocalProjectRoutes(app, projects, workspaces, "/api", { config: configService });
@@ -1 +1 @@
1
- {"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/server/app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,OAA+E,MAAM,SAAS,CAAC;AACtG,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,gCAAgC,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAC7H,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AACvE,OAAO,EAAE,iCAAiC,EAAE,MAAM,sCAAsC,CAAC;AACzF,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,oCAAoC,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,0BAA0B,EAA2B,MAAM,kCAAkC,CAAC;AACvG,OAAO,EAAE,+BAA+B,EAAE,MAAM,8BAA8B,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AACvE,OAAO,EAAE,+BAA+B,EAAE,MAAM,yCAAyC,CAAC;AAC1F,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,8BAA8B,EAAE,oBAAoB,EAAE,gCAAgC,EAA6B,MAAM,mBAAmB,CAAC;AACtJ,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,mCAAmC,EAAyB,MAAM,uBAAuB,CAAC;AACnG,OAAO,EAAE,gDAAgD,EAAsC,MAAM,oCAAoC,CAAC;AAC1I,OAAO,EAAE,oCAAoC,EAAE,MAAM,mCAAmC,CAAC;AACzF,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,wBAAwB,EAA2B,MAAM,yBAAyB,CAAC;AAC5F,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAClG,OAAO,EACL,6BAA6B,EAC7B,yBAAyB,EACzB,uCAAuC,GAExC,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,0BAA0B,EAAE,MAAM,kCAAkC,CAAC;AAC9E,OAAO,EAAE,uBAAuB,EAAE,gCAAgC,EAAE,MAAM,wCAAwC,CAAC;AAwBnH,SAAS,0BAA0B,CAAC,GAAoB,EAAE,QAAwB,EAAE,UAA4B,EAAE,MAAc,EAAE,UAAoC,EAAE;IACtK,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,WAAW,EAAE,KAAK,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IAE3D,GAAG,CAAC,IAAI,CAA8D,GAAG,MAAM,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QACnH,IAAI,CAAC;YACH,OAAO,MAAM,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC1C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACjG,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,MAAM,CAAoC,GAAG,MAAM,sBAAsB,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QACtG,IAAI,CAAC;YACH,MAAM,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAC/C,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;QAC1B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACjG,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,GAAG,CAAkC,GAAG,MAAM,sBAAsB,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QACjG,IAAI,CAAC;YACH,OAAO,MAAM,wBAAwB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC/D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACjG,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,GAAG,CAAoC,GAAG,MAAM,iCAAiC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QAC9G,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACxE,OAAO,MAAM,iCAAiC,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QACtF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACjG,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,iCAAiC,CAAC,OAAgB,EAAE,UAA4B,EAAE,MAA2C;IAC1I,MAAM,CAAC,aAAa,EAAE,eAAe,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACzD,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;QACxB,wBAAwB,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;KAC/C,CAAC,CAAC;IACH,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,SAAS,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC;AAC/E,CAAC;AAED,KAAK,UAAU,wBAAwB,CAAC,WAAmB,EAAE,MAA2C;IACtG,MAAM,YAAY,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,eAAe,CAAC;IACvF,OAAO,EAAE,OAAO,EAAE,MAAM,iCAAiC,CAAC,WAAW,EAAE,YAAY,CAAC,EAAE,CAAC;AACzF,CAAC;AAMD,SAAS,iCAAiC,CAAC,GAAoB,EAAE,QAAwB,EAAE,UAA4B,EAAE,MAAc,EAAE,UAA2C,EAAE;IACpL,GAAG,CAAC,GAAG,CAA6I,GAAG,MAAM,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QAC9L,IAAI,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,SAAS,IAAI,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,EAAE;YAAE,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,iCAAiC,EAAE,CAAC,CAAC;QAC3I,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,mBAAmB,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACnD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;YACpC,MAAM,UAAU,GAAG,gCAAgC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,gBAAgB,CAAC,GAAG,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC3I,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM;gBAAE,OAAO,MAAM,mBAAmB,CAAC,GAAG,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;YAC5F,OAAO,MAAM,mBAAmB,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;QACrH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACjG,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,mBAAmB,CAAC,MAA0C;IAC3E,OAAO,CAAC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,eAAe,CAAC;AAC/C,CAAC;AAED,SAAS,8BAA8B,CAAC,MAA4B,EAAE,WAAmD;IACvH,OAAO;QACL,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE;QACzB,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE;YAC1B,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YAChD,WAAW,CAAC,UAAU,EAAE,CAAC;YACzB,OAAO,QAAQ,CAAC;QAClB,CAAC;KACF,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,qBAAqB,CAAI,KAAmB,EAAE,SAA2B;IACtF,IAAI,CAAC;QACH,OAAO,MAAM,SAAS,EAAE,CAAC;IAC3B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,CAAC,KAAK,YAAY,6BAA6B,CAAC;YAAE,MAAM,KAAK,CAAC;QACnE,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IACxD,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,UAAkB;IACnC,OAAO,UAAU,KAAK,MAAM,IAAI,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AACnG,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,OAAwB,EAAE;IACvD,MAAM,GAAG,GAAG,OAAO,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC;IAC7H,kFAAkF;IAClF,wEAAwE;IACxE,MAAM,GAAG,CAAC,QAAQ,CAAC,eAAe,EAAE;QAClC,iBAAiB,EAAE,IAAI;QACvB,mBAAmB,EAAE,KAAK;QAC1B,SAAS,EAAE,IAAI;KAChB,CAAC,CAAC;IACH,MAAM,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IAErC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,cAAc,CAAC,IAAI,YAAY,EAAE,CAAC,CAAC;IACzE,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,gBAAgB,EAAE,CAAC;IAC7D,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,IAAI,8BAA8B,EAAE,CAAC;IACtE,MAAM,UAAU,GAAG,GAAG,EAAE,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC;IAC5D,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,IAAI,IAAI,mBAAmB,EAAE,CAAC;IACtE,MAAM,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,IAAI,IAAI,uCAAuC,CAAC,aAAa,CAAC,CAAC;IACrH,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,IAAI,IAAI,oBAAoB,CAAC;QACrE,cAAc,EAAE,UAAU;QAC1B,gBAAgB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,yBAAyB,CAAC,oBAAoB,CAAC,CAAC,CAAC,GAAG;KAC1F,CAAC,CAAC;IACH,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,mCAAmC,CAAC,oBAAoB,CAAC,CAAC;IAChG,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,IAAI,gDAAgD,CAAC,oBAAoB,CAAC,CAAC;IACzH,MAAM,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,IAAI,wBAAwB,CAC5E,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;QAClB,MAAM,kBAAkB,GAAG,MAAM,oBAAoB,CAAC,qBAAqB,EAAE,CAAC;QAC9E,OAAO,gBAAgB,CAAC,aAAa,EAAE;YACrC,iBAAiB,EAAE,KAAK;YACxB,GAAG,CAAC,kBAAkB,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,kBAAkB,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACzG,CAAC,CAAC;IACL,CAAC,EACD,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,yCAAyC,CAAC,CAAC,CAAC,CAAC,EAAE,CACrG,CAAC;IACF,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,cAAc,CAAC,SAAS,EAAE;QAC9D,YAAY,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,aAAa,CAAC;KACrD,CAAC,CAAC;IAEH,GAAG,CAAC,GAAG,CAAC,iCAAiC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC,qBAAqB,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IAErI,GAAG,CAAC,GAAG,CAAgD,+BAA+B,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QAC/G,IAAI,MAAM,uBAAuB,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC;YAAE,OAAO;QAEtH,OAAO,qBAAqB,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE;YAC7C,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAC3F,IAAI,KAAK,KAAK,SAAS;gBAAE,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,wBAAwB,EAAE,CAAC,CAAC;YAC1F,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,GAAG,CAAwC,sBAAsB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,KAAK,GAAG;QACrH,CAAC,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QAC7C,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,CAAC;IAC9B,GAAG,CAAC,GAAG,CAAC,uBAAuB,EAAE,KAAK,IAAI,EAAE;QAC1C,MAAM,kBAAkB,GAAG,MAAM,oBAAoB,CAAC,qBAAqB,EAAE,CAAC;QAC9E,OAAO,uBAAuB,CAAC,aAAa,EAAE,kBAAkB,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,kBAAkB,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACrJ,CAAC,CAAC,CAAC;IACH,GAAG,CAAC,GAAG,CAAC,uBAAuB,EAAE,KAAK,IAAI,EAAE,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC,CAAC;IAC/E,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC,qBAAqB,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACjH,GAAG,CAAC,GAAG,CAAC,6BAA6B,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC,qBAAqB,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAChI,uBAAuB,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IACzC,uBAAuB,CAAC,GAAG,EAAE,UAAU,EAAE,qBAAqB,CAAC,CAAC;IAChE,oCAAoC,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;IAC5D,oCAAoC,CAAC,GAAG,EAAE,gBAAgB,EAAE,qBAAqB,CAAC,CAAC;IACnF,MAAM,yBAAyB,GAAG,8BAA8B,CAAC,aAAa,EAAE,kBAAkB,CAAC,CAAC;IACpG,oBAAoB,CAAC,GAAG,EAAE,yBAAyB,CAAC,CAAC;IACrD,gCAAgC,CAAC,GAAG,EAAE,yBAAyB,CAAC,CAAC;IAEjE,qBAAqB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACrC,gCAAgC,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IAEhD,0BAA0B,CAAC,GAAG,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;IACzF,0BAA0B,CAAC,GAAG,EAAE,QAAQ,EAAE,UAAU,EAAE,qBAAqB,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;IAExG,0BAA0B,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;IAC/C,0BAA0B,CAAC,GAAG,EAAE,aAAa,EAAE,qBAAqB,CAAC,CAAC;IACtE,+BAA+B,CAAC,GAAG,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;IAC9F,+BAA+B,CAAC,GAAG,EAAE,QAAQ,EAAE,UAAU,EAAE,qBAAqB,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;IAC7G,iBAAiB,CAAC,GAAG,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;IAC7C,iBAAiB,CAAC,GAAG,EAAE,QAAQ,EAAE,UAAU,EAAE,qBAAqB,CAAC,CAAC;IACpE,2BAA2B,CAAC,GAAG,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;IACtE,2BAA2B,CAAC,GAAG,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAE,qBAAqB,CAAC,CAAC;IAC7F,+BAA+B,CAAC,GAAG,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;IAC1E,+BAA+B,CAAC,GAAG,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAE,qBAAqB,CAAC,CAAC;IAEjG,wBAAwB,CAAC,GAAG,EAAE,eAAe,EAAE,EAAE,cAAc,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;IAC3G,wBAAwB,CAAC,GAAG,EAAE,8BAA8B,EAAE,EAAE,cAAc,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;IAE1H,iCAAiC,CAAC,GAAG,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;IAChG,iCAAiC,CAAC,GAAG,EAAE,QAAQ,EAAE,UAAU,EAAE,qBAAqB,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;IAE/G,0BAA0B,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IAE1C,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IACzF,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IACpI,IAAI,UAAU,KAAK,KAAK,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QACnD,MAAM,GAAG,CAAC,QAAQ,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;QACxD,GAAG,CAAC,kBAAkB,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;YACxC,IAAI,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC;gBAAE,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAC,CAAC;YAC1F,OAAO,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC"}
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/server/app.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import { createHash } from "node:crypto";
2
+ /**
3
+ * Parse a pi-hermes-memory file into structured entries.
4
+ * Entries are delimited by § on its own line.
5
+ * Empty entries are skipped.
6
+ */
7
+ export function parseMemoryFile(content) {
8
+ // Split on § as a line delimiter — handle both \n§\n and leading/trailing §
9
+ const rawEntries = content.split(/\n?^\u00A7\n?/gm);
10
+ return rawEntries
11
+ .map((entry) => entry.trim())
12
+ .filter((entry) => entry !== "")
13
+ .map(parseEntry);
14
+ }
15
+ function parseEntry(raw) {
16
+ const id = createHash("sha256").update(raw).digest("hex").slice(0, 8);
17
+ // Extract category prefix: [category]
18
+ const categoryExec = /^\[([^\]]+)\]\s*/.exec(raw);
19
+ const category = categoryExec?.[1];
20
+ // Extract metadata comment: <!-- created=YYYY-MM-DD, last=YYYY-MM-DD -->
21
+ const metadataExec = /<!--\s*created=(\S+),\s*last=(\S+)\s*-->/.exec(raw);
22
+ const created = metadataExec?.[1];
23
+ const last = metadataExec?.[2];
24
+ // Extract failure reason suffix: — Failed: <reason>
25
+ // Stop before an optional trailing metadata comment.
26
+ const failureExec = /\u2014\s*Failed:\s*(.+?)\s*(?:<!--.*)?$/m.exec(raw);
27
+ const failureRaw = failureExec?.[1]?.trim();
28
+ const failureReason = failureRaw !== undefined && failureRaw !== "" ? failureRaw : undefined;
29
+ return {
30
+ id,
31
+ content: raw,
32
+ ...(category !== undefined ? { category } : {}),
33
+ ...(created !== undefined ? { created } : {}),
34
+ ...(last !== undefined ? { last } : {}),
35
+ ...(failureReason !== undefined ? { failureReason } : {}),
36
+ };
37
+ }
38
+ //# sourceMappingURL=memoryFileParser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memoryFileParser.js","sourceRoot":"","sources":["../../../src/server/memory/memoryFileParser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAWzC;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,OAAe;IAC7C,4EAA4E;IAC5E,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACpD,OAAO,UAAU;SACd,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;SAC5B,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,EAAE,CAAC;SAC/B,GAAG,CAAC,UAAU,CAAC,CAAC;AACrB,CAAC;AAED,SAAS,UAAU,CAAC,GAAW;IAC7B,MAAM,EAAE,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAEtE,sCAAsC;IACtC,MAAM,YAAY,GAAG,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAClD,MAAM,QAAQ,GAAuB,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC;IAEvD,yEAAyE;IACzE,MAAM,YAAY,GAAG,0CAA0C,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1E,MAAM,OAAO,GAAuB,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC;IACtD,MAAM,IAAI,GAAuB,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC;IAEnD,oDAAoD;IACpD,qDAAqD;IACrD,MAAM,WAAW,GAAG,0CAA0C,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACzE,MAAM,UAAU,GAAG,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;IAC5C,MAAM,aAAa,GAAuB,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;IAEjH,OAAO;QACL,EAAE;QACF,OAAO,EAAE,GAAG;QACZ,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/C,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7C,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvC,GAAG,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC1D,CAAC;AACJ,CAAC"}
@@ -0,0 +1,39 @@
1
+ import { ActiveAgentProfileAccessError, requireActiveAgentProfile } from "../activeAgentProfileProvider.js";
2
+ import { MemoryService } from "./memoryService.js";
3
+ export function registerMemoryRoutes(app, agentProfileProvider, prefix) {
4
+ app.get(`${prefix}/agent-memory/global`, async (request, reply) => {
5
+ try {
6
+ const profile = await requireActiveAgentProfile(agentProfileProvider);
7
+ const service = new MemoryService(profile.dir);
8
+ const entries = await service.globalEntries();
9
+ const response = { entries };
10
+ return response;
11
+ }
12
+ catch (error) {
13
+ if (error instanceof ActiveAgentProfileAccessError) {
14
+ return reply.code(503).send({ error: error.message });
15
+ }
16
+ throw error;
17
+ }
18
+ });
19
+ app.get(`${prefix}/agent-memory/project`, async (request, reply) => {
20
+ const projectPath = request.query.projectPath;
21
+ if (projectPath === undefined || projectPath === "") {
22
+ return reply.code(400).send({ error: "projectPath query parameter is required" });
23
+ }
24
+ try {
25
+ const profile = await requireActiveAgentProfile(agentProfileProvider);
26
+ const service = new MemoryService(profile.dir);
27
+ const entries = await service.projectEntries(projectPath);
28
+ const response = { entries };
29
+ return response;
30
+ }
31
+ catch (error) {
32
+ if (error instanceof ActiveAgentProfileAccessError) {
33
+ return reply.code(503).send({ error: error.message });
34
+ }
35
+ throw error;
36
+ }
37
+ });
38
+ }
39
+ //# sourceMappingURL=memoryRoutes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memoryRoutes.js","sourceRoot":"","sources":["../../../src/server/memory/memoryRoutes.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,6BAA6B,EAAE,yBAAyB,EAAmC,MAAM,kCAAkC,CAAC;AAC7I,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGnD,MAAM,UAAU,oBAAoB,CAClC,GAAoB,EACpB,oBAAgD,EAChD,MAAc;IAEd,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,sBAAsB,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QAChE,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,yBAAyB,CAAC,oBAAoB,CAAC,CAAC;YACtE,MAAM,OAAO,GAAG,IAAI,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC/C,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,aAAa,EAAE,CAAC;YAC9C,MAAM,QAAQ,GAA0B,EAAE,OAAO,EAAE,CAAC;YACpD,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,6BAA6B,EAAE,CAAC;gBACnD,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YACxD,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,GAAG,CACL,GAAG,MAAM,uBAAuB,EAChC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QACvB,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC;QAE9C,IAAI,WAAW,KAAK,SAAS,IAAI,WAAW,KAAK,EAAE,EAAE,CAAC;YACpD,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,yCAAyC,EAAE,CAAC,CAAC;QACpF,CAAC;QAED,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,yBAAyB,CAAC,oBAAoB,CAAC,CAAC;YACtE,MAAM,OAAO,GAAG,IAAI,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC/C,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;YAC1D,MAAM,QAAQ,GAA0B,EAAE,OAAO,EAAE,CAAC;YACpD,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,6BAA6B,EAAE,CAAC;gBACnD,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YACxD,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,44 @@
1
+ import { readFile } from "node:fs/promises";
2
+ import { basename, join } from "node:path";
3
+ import { parseMemoryFile } from "./memoryFileParser.js";
4
+ export class MemoryService {
5
+ constructor(agentDir) {
6
+ this.agentDir = agentDir;
7
+ }
8
+ async globalEntries() {
9
+ const results = [];
10
+ const memPath = join(this.agentDir, "pi-hermes-memory", "MEMORY.md");
11
+ try {
12
+ const content = await readFile(memPath, "utf-8");
13
+ results.push(...parseMemoryFile(content));
14
+ }
15
+ catch {
16
+ // File missing — skip
17
+ }
18
+ const failuresPath = join(this.agentDir, "pi-hermes-memory", "failures.md");
19
+ try {
20
+ const content = await readFile(failuresPath, "utf-8");
21
+ results.push(...parseMemoryFile(content));
22
+ }
23
+ catch {
24
+ // File missing — skip
25
+ }
26
+ return results;
27
+ }
28
+ async projectEntries(projectPath) {
29
+ const projectName = basename(projectPath);
30
+ // Path safety: reject names that could escape the projects-memory directory
31
+ if (projectName.includes("/") || projectName.includes("\\") || projectName === ".." || projectName === ".") {
32
+ return [];
33
+ }
34
+ const filePath = join(this.agentDir, "projects-memory", projectName, "MEMORY.md");
35
+ try {
36
+ const content = await readFile(filePath, "utf-8");
37
+ return parseMemoryFile(content);
38
+ }
39
+ catch {
40
+ return [];
41
+ }
42
+ }
43
+ }
44
+ //# sourceMappingURL=memoryService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memoryService.js","sourceRoot":"","sources":["../../../src/server/memory/memoryService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,eAAe,EAA0B,MAAM,uBAAuB,CAAC;AAEhF,MAAM,OAAO,aAAa;IACxB,YAA6B,QAAgB;QAAhB,aAAQ,GAAR,QAAQ,CAAQ;IAAG,CAAC;IAEjD,KAAK,CAAC,aAAa;QACjB,MAAM,OAAO,GAAwB,EAAE,CAAC;QAExC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,kBAAkB,EAAE,WAAW,CAAC,CAAC;QACrE,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACjD,OAAO,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;QAC5C,CAAC;QAAC,MAAM,CAAC;YACP,sBAAsB;QACxB,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,kBAAkB,EAAE,aAAa,CAAC,CAAC;QAC5E,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;YACtD,OAAO,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;QAC5C,CAAC;QAAC,MAAM,CAAC;YACP,sBAAsB;QACxB,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,WAAmB;QACtC,MAAM,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC;QAE1C,4EAA4E;QAC5E,IAAI,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,WAAW,KAAK,IAAI,IAAI,WAAW,KAAK,GAAG,EAAE,CAAC;YAC3G,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,iBAAiB,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;QAClF,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAClD,OAAO,eAAe,CAAC,OAAO,CAAC,CAAC;QAClC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;CACF"}
@@ -162,7 +162,8 @@ async function createConnectionRuntimeForProfile(options) {
162
162
  function modelDiscoveryEndpoint(baseUrl, api, apiKey) {
163
163
  if (baseUrl === undefined)
164
164
  throw new Error("baseUrl is required");
165
- const endpoint = new URL("models", baseUrl.endsWith("/") ? baseUrl : `${baseUrl}/`);
165
+ const endpointPath = api === "anthropic-messages" ? "v1/models" : "models";
166
+ const endpoint = new URL(endpointPath, baseUrl.endsWith("/") ? baseUrl : `${baseUrl}/`);
166
167
  if (endpoint.protocol !== "http:" && endpoint.protocol !== "https:")
167
168
  throw new Error("Provider base URL must use HTTP or HTTPS");
168
169
  if (api === "google-generative-ai") {