pantheon-opencode 1.1.1-beta.10 → 1.1.1-beta.12
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/opencode.json +49 -2
- package/package.json +1 -1
- package/pantheon.schema.json +1 -1
- package/src/agents/mnemosyne.md +9 -1
- package/src/agents/nyx.md +7 -1
- package/src/agents/themis.md +8 -2
- package/src/agents/zeus.md +10 -0
- package/src/plugins/tui/dist/tui.d.ts.map +1 -1
- package/src/plugins/tui/dist/tui.js +187 -141
- package/src/plugins/tui/dist/tui.tsx +120 -45
- package/src/plugins/tui/src/index.tsx +120 -45
- package/src/routing.yml +11 -30
- package/commands/pantheon-audit.md +0 -25
- package/commands/pantheon-deepwork.md +0 -79
- package/commands/pantheon-focus.md +0 -9
- package/commands/pantheon-forget.md +0 -58
- package/commands/pantheon-optimize.md +0 -79
- package/commands/pantheon-remember.md +0 -44
- package/commands/pantheon-search.md +0 -48
- package/commands/pantheon-status.md +0 -71
- package/commands/pantheon.md +0 -49
- package/scripts/check-version-consistency.sh +0 -23
- package/scripts/generate-routing-docs.mjs +0 -104
- package/scripts/manifest.mjs +0 -597
- package/scripts/memory_cache.py +0 -78
- package/scripts/paths.py +0 -64
- package/scripts/prune_context.py +0 -72
- package/scripts/release-bundle.mjs +0 -109
- package/scripts/todo_enforcer.py +0 -242
- package/scripts/validate_agent_frontmatter.py +0 -226
package/opencode.json
CHANGED
|
@@ -2,9 +2,12 @@
|
|
|
2
2
|
"$schema": "https://opencode.ai/config.json",
|
|
3
3
|
"default_agent": "zeus",
|
|
4
4
|
"subagent_depth": 2,
|
|
5
|
-
"
|
|
5
|
+
"model": "opencode-go/deepseek-v4-flash",
|
|
6
|
+
"small_model": "opencode-go/deepseek-v4-flash-free",
|
|
6
7
|
"permission": {
|
|
7
|
-
"skill": {
|
|
8
|
+
"skill": {
|
|
9
|
+
"*": "allow"
|
|
10
|
+
},
|
|
8
11
|
"websearch": "deny",
|
|
9
12
|
"bash": {
|
|
10
13
|
"git *": "allow",
|
|
@@ -29,5 +32,49 @@
|
|
|
29
32
|
"x-bf-vk": "sk-bf-a5a9b5b0-45fc-414d-8e4d-f9beb8c49a6d"
|
|
30
33
|
}
|
|
31
34
|
}
|
|
35
|
+
},
|
|
36
|
+
"agent": {
|
|
37
|
+
"athena": {
|
|
38
|
+
"model": "opencode-go/kimi-k3"
|
|
39
|
+
},
|
|
40
|
+
"themis": {
|
|
41
|
+
"model": "opencode-go/deepseek-v4-pro"
|
|
42
|
+
},
|
|
43
|
+
"zeus": {
|
|
44
|
+
"model": "opencode-go/deepseek-v4-pro"
|
|
45
|
+
},
|
|
46
|
+
"hephaestus": {
|
|
47
|
+
"model": "opencode-go/deepseek-v4-pro"
|
|
48
|
+
},
|
|
49
|
+
"hermes": {
|
|
50
|
+
"model": "opencode-go/deepseek-v4-flash"
|
|
51
|
+
},
|
|
52
|
+
"aphrodite": {
|
|
53
|
+
"model": "opencode-go/deepseek-v4-flash"
|
|
54
|
+
},
|
|
55
|
+
"demeter": {
|
|
56
|
+
"model": "opencode-go/deepseek-v4-flash"
|
|
57
|
+
},
|
|
58
|
+
"prometheus": {
|
|
59
|
+
"model": "opencode-go/deepseek-v4-flash"
|
|
60
|
+
},
|
|
61
|
+
"apollo": {
|
|
62
|
+
"model": "opencode-go/deepseek-v4-flash-free"
|
|
63
|
+
},
|
|
64
|
+
"nyx": {
|
|
65
|
+
"model": "opencode-go/deepseek-v4-flash-free"
|
|
66
|
+
},
|
|
67
|
+
"gaia": {
|
|
68
|
+
"model": "opencode-go/deepseek-v4-flash-free"
|
|
69
|
+
},
|
|
70
|
+
"iris": {
|
|
71
|
+
"model": "opencode-go/deepseek-v4-flash-free"
|
|
72
|
+
},
|
|
73
|
+
"mnemosyne": {
|
|
74
|
+
"model": "opencode-go/deepseek-v4-flash-free"
|
|
75
|
+
},
|
|
76
|
+
"talos": {
|
|
77
|
+
"model": "opencode-go/deepseek-v4-flash-free"
|
|
78
|
+
}
|
|
32
79
|
}
|
|
33
80
|
}
|
package/package.json
CHANGED
package/pantheon.schema.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
3
|
"$id": "https://pantheon.orchestrator/schema.json",
|
|
4
4
|
"title": "Pantheon Configuration Schema",
|
|
5
|
-
"description": "Configuration schema
|
|
5
|
+
"description": "Pantheon Orchestration Configuration Schema — NOT the OpenCode config schema. This schema defines Pantheon-specific configuration (routing, presets, fallback chains). For OpenCode config, see https://opencode.ai/config.json",
|
|
6
6
|
"type": "object",
|
|
7
7
|
"properties": {
|
|
8
8
|
"version": {
|
package/src/agents/mnemosyne.md
CHANGED
|
@@ -34,9 +34,17 @@ permission:
|
|
|
34
34
|
bash: deny
|
|
35
35
|
read: allow
|
|
36
36
|
grep: allow
|
|
37
|
-
edit:
|
|
37
|
+
edit: deny
|
|
38
38
|
---
|
|
39
39
|
|
|
40
|
+
## ⚠️ SCOPE BOUNDARY
|
|
41
|
+
|
|
42
|
+
**Memory Bank ONLY — NEVER write files outside `.pantheon/memory-bank/` or `.pantheon/deepwork/`.**
|
|
43
|
+
Your role is documentation, ADRs, artifacts, and memory management.
|
|
44
|
+
|
|
45
|
+
NEVER modify source code files under `src/`, `backend/`, `frontend/`, `scripts/`, or any other implementation directory.
|
|
46
|
+
If asked to edit code, refuse and redirect to the appropriate implementation agent (@hermes, @aphrodite, @demeter, etc.).
|
|
47
|
+
|
|
40
48
|
## Core Capabilities
|
|
41
49
|
|
|
42
50
|
### 1. Memory Bank Management
|
package/src/agents/nyx.md
CHANGED
|
@@ -8,7 +8,7 @@ permission:
|
|
|
8
8
|
grep: allow
|
|
9
9
|
bash: allow
|
|
10
10
|
webfetch: allow
|
|
11
|
-
edit:
|
|
11
|
+
edit: deny
|
|
12
12
|
temperature: 0.1
|
|
13
13
|
steps: 25
|
|
14
14
|
skills:
|
|
@@ -20,6 +20,12 @@ mcp_tools:
|
|
|
20
20
|
pantheon-code-mode: [execute_code_script]
|
|
21
21
|
---
|
|
22
22
|
|
|
23
|
+
## ⚠️ ABSOLUTE CONSTRAINT
|
|
24
|
+
|
|
25
|
+
**ANALYSIS ONLY — NEVER implement, never edit files, never write code.**
|
|
26
|
+
Your role is to observe, trace, and report. If you identify a configuration change needed, report the finding — do not implement it yourself.
|
|
27
|
+
Delegate all implementation to @hermes, @prometheus, or @demeter.
|
|
28
|
+
|
|
23
29
|
## Core Capabilities
|
|
24
30
|
|
|
25
31
|
### 1. OpenTelemetry Integration
|
package/src/agents/themis.md
CHANGED
|
@@ -7,7 +7,7 @@ permission:
|
|
|
7
7
|
read: allow
|
|
8
8
|
grep: allow
|
|
9
9
|
bash: allow
|
|
10
|
-
edit:
|
|
10
|
+
edit: deny
|
|
11
11
|
temperature: 0.1
|
|
12
12
|
steps: 30
|
|
13
13
|
skills:
|
|
@@ -20,8 +20,14 @@ mcp_tools:
|
|
|
20
20
|
pantheon-memory: [memory_search]
|
|
21
21
|
pantheon-code-mode: [execute_code_script]
|
|
22
22
|
---
|
|
23
|
-
## Purpose
|
|
24
23
|
|
|
24
|
+
## ⚠️ ABSOLUTE CONSTRAINT
|
|
25
|
+
|
|
26
|
+
**REVIEWER ONLY — NEVER implement, never edit files, never write code.**
|
|
27
|
+
Your role is to audit, review, and block. If you find an issue, report it — do not fix it yourself.
|
|
28
|
+
Delegate all implementation to @hermes, @aphrodite, @demeter, or @prometheus.
|
|
29
|
+
|
|
30
|
+
## Purpose
|
|
25
31
|
Quality & security gate for all Pantheon agents. Three-layer review with IntentGate to ensure code matches requirements before deep review.
|
|
26
32
|
|
|
27
33
|
## IntentGate
|
package/src/agents/zeus.md
CHANGED
|
@@ -50,6 +50,16 @@ skills:
|
|
|
50
50
|
|
|
51
51
|
**Auto-continue** só com pedido explícito do usuário.
|
|
52
52
|
|
|
53
|
+
## ⚠️ Bash Scoping
|
|
54
|
+
|
|
55
|
+
**`bash: allow` é para leitura e diagnóstico APENAS.**
|
|
56
|
+
NUNCA use bash para:
|
|
57
|
+
- Editar arquivos (use sed/echo/redirect → delegue para @hermes)
|
|
58
|
+
- Instalar dependências (delegue para @prometheus)
|
|
59
|
+
- Executar comandos que modificam o sistema
|
|
60
|
+
|
|
61
|
+
Comandos permitidos: `ls`, `git status`, `git log`, `ps`, `python3 -c`, `cat` (leitura), `npm test` (para verificar).
|
|
62
|
+
|
|
53
63
|
---
|
|
54
64
|
|
|
55
65
|
## Delegation Cache (Otimizacao de Tokens)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tui.d.ts","names":[],"sources":["../src/index.tsx"],"mappings":";;
|
|
1
|
+
{"version":3,"file":"tui.d.ts","names":[],"sources":["../src/index.tsx"],"mappings":";;cAsbM,QAAQ;EAAoB"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createComponent, createElement, createTextNode, effect, insert, insertNode, memo, setProp } from "@opentui/solid";
|
|
2
|
-
import { For, Show, createMemo, createResource, createSignal } from "solid-js";
|
|
2
|
+
import { For, Show, createMemo, createResource, createSignal, onCleanup, onMount } from "solid-js";
|
|
3
3
|
//#region src/index.tsx
|
|
4
4
|
/** @jsxImportSource @opentui/solid */
|
|
5
5
|
const BAR_WIDTH = 20;
|
|
@@ -172,6 +172,18 @@ async function detectVersion(api) {
|
|
|
172
172
|
if (tag && tag !== "5.0.0") return tag;
|
|
173
173
|
}
|
|
174
174
|
} catch {}
|
|
175
|
+
try {
|
|
176
|
+
const proc = api.client?.process;
|
|
177
|
+
if (typeof proc?.exec === "function") {
|
|
178
|
+
const r = await proc.exec({
|
|
179
|
+
command: "opencode",
|
|
180
|
+
args: ["--version"],
|
|
181
|
+
timeoutMs: 3e3
|
|
182
|
+
});
|
|
183
|
+
const ver = (r.stdout ?? r.output ?? "").trim().replace(/^v/, "");
|
|
184
|
+
if (ver) return ver;
|
|
185
|
+
}
|
|
186
|
+
} catch {}
|
|
175
187
|
return null;
|
|
176
188
|
}
|
|
177
189
|
function ContextBar(props) {
|
|
@@ -244,29 +256,28 @@ function ContextBar(props) {
|
|
|
244
256
|
}
|
|
245
257
|
});
|
|
246
258
|
}
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
"session",
|
|
255
|
-
"list",
|
|
256
|
-
"--format",
|
|
257
|
-
"json",
|
|
258
|
-
"--max-count",
|
|
259
|
-
"20"
|
|
260
|
-
],
|
|
261
|
-
timeoutMs: 5e3
|
|
262
|
-
});
|
|
263
|
-
const stdout = result.stdout ?? result.output ?? "";
|
|
264
|
-
const sessions = JSON.parse(stdout);
|
|
265
|
-
if (!Array.isArray(sessions)) return null;
|
|
266
|
-
return sessions.filter((s) => s.id !== sessionID).sort((a, b) => (b.updated ?? 0) - (a.updated ?? 0)).slice(0, 8);
|
|
267
|
-
} catch {
|
|
259
|
+
function SessionRow(props) {
|
|
260
|
+
const theme = () => props.api.theme.current;
|
|
261
|
+
const status = createMemo(() => {
|
|
262
|
+
try {
|
|
263
|
+
const s = props.api.state.session?.status?.(props.session.id);
|
|
264
|
+
if (s?.type) return s.type;
|
|
265
|
+
} catch {}
|
|
268
266
|
return null;
|
|
269
|
-
}
|
|
267
|
+
});
|
|
268
|
+
const statusIcon = createMemo(() => {
|
|
269
|
+
switch (status()) {
|
|
270
|
+
case "busy": return "● ";
|
|
271
|
+
case "retry": return "⚠ ";
|
|
272
|
+
default: return "";
|
|
273
|
+
}
|
|
274
|
+
});
|
|
275
|
+
return (() => {
|
|
276
|
+
var _el$8 = createElement("text");
|
|
277
|
+
insert(_el$8, () => `${statusIcon()}${props.session?.id?.slice(0, 8) ?? "????"}... ${props.session?.title?.slice(0, 26) ?? "(untitled)"}`);
|
|
278
|
+
effect((_$p) => setProp(_el$8, "fg", theme().textMuted, _$p));
|
|
279
|
+
return _el$8;
|
|
280
|
+
})();
|
|
270
281
|
}
|
|
271
282
|
function View(props) {
|
|
272
283
|
const [showCommands, setShowCommands] = createSignal(false);
|
|
@@ -275,16 +286,47 @@ function View(props) {
|
|
|
275
286
|
const [showSessions, setShowSessions] = createSignal(false);
|
|
276
287
|
const theme = () => props.api.theme.current;
|
|
277
288
|
const branch = createMemo(() => props.api.state.vcs?.branch ? `\u2387 ${props.api.state.vcs.branch}` : null);
|
|
278
|
-
const
|
|
289
|
+
const [sessionList, { refetch: refetchSessions }] = createResource(async () => {
|
|
279
290
|
try {
|
|
280
|
-
return props.api.
|
|
291
|
+
return await props.api.client?.session?.list?.({ limit: 100 }) ?? { data: [] };
|
|
281
292
|
} catch {
|
|
282
|
-
return
|
|
293
|
+
return { data: [] };
|
|
283
294
|
}
|
|
284
295
|
});
|
|
285
|
-
const
|
|
286
|
-
const
|
|
287
|
-
|
|
296
|
+
const totalSessions = createMemo(() => {
|
|
297
|
+
const result = sessionList();
|
|
298
|
+
if (!result) return 0;
|
|
299
|
+
const data = result.data ?? result;
|
|
300
|
+
if (!Array.isArray(data)) return 0;
|
|
301
|
+
return data.filter((s) => !s.parentID).length;
|
|
302
|
+
});
|
|
303
|
+
const recentSessions = createMemo(() => {
|
|
304
|
+
const result = sessionList();
|
|
305
|
+
if (!result) return [];
|
|
306
|
+
const data = result.data ?? result;
|
|
307
|
+
if (!Array.isArray(data)) return [];
|
|
308
|
+
return data.filter((s) => !s.parentID && s.id !== props.sessionID).sort((a, b) => {
|
|
309
|
+
const ta = a.time?.updated ?? a.updated ?? 0;
|
|
310
|
+
return (b.time?.updated ?? b.updated ?? 0) - ta;
|
|
311
|
+
}).slice(0, 8);
|
|
312
|
+
});
|
|
313
|
+
const [memoryCount, setMemoryCount] = createSignal(null);
|
|
314
|
+
onMount(() => {
|
|
315
|
+
const cleanup = [];
|
|
316
|
+
try {
|
|
317
|
+
cleanup.push(props.api.event.on("session.status", refetchSessions));
|
|
318
|
+
cleanup.push(props.api.event.on("session.created", refetchSessions));
|
|
319
|
+
cleanup.push(props.api.event.on("session.updated", refetchSessions));
|
|
320
|
+
cleanup.push(props.api.event.on("session.deleted", refetchSessions));
|
|
321
|
+
} catch {}
|
|
322
|
+
try {
|
|
323
|
+
const ev = props.api.event;
|
|
324
|
+
if (typeof ev?.on === "function") {
|
|
325
|
+
cleanup.push(ev.on("memory.created", () => setMemoryCount((c) => c !== null ? c + 1 : 1)));
|
|
326
|
+
cleanup.push(ev.on("memory.deleted", () => setMemoryCount((c) => c !== null ? Math.max(0, c - 1) : 0)));
|
|
327
|
+
}
|
|
328
|
+
} catch {}
|
|
329
|
+
onCleanup(() => cleanup.forEach((fn) => fn()));
|
|
288
330
|
});
|
|
289
331
|
const configSummary = createMemo(() => {
|
|
290
332
|
const cfg = props.api.state.config;
|
|
@@ -295,104 +337,105 @@ function View(props) {
|
|
|
295
337
|
autoCompaction: cfg.compaction?.auto === true
|
|
296
338
|
};
|
|
297
339
|
});
|
|
298
|
-
const [sessions] = createResource(() => showSessions(), () => fetchRecentSessions(props.api, props.sessionID));
|
|
299
340
|
const HR = () => (() => {
|
|
300
|
-
var _el$
|
|
301
|
-
insertNode(_el$
|
|
302
|
-
effect((_$p) => setProp(_el$
|
|
303
|
-
return _el$
|
|
341
|
+
var _el$9 = createElement("text");
|
|
342
|
+
insertNode(_el$9, createTextNode(`────────────────────────────`));
|
|
343
|
+
effect((_$p) => setProp(_el$9, "fg", theme().textMuted, _$p));
|
|
344
|
+
return _el$9;
|
|
304
345
|
})();
|
|
305
346
|
return (() => {
|
|
306
|
-
var _el$
|
|
307
|
-
insertNode(_el$
|
|
308
|
-
insertNode(_el$
|
|
309
|
-
insertNode(_el$
|
|
310
|
-
insertNode(_el$
|
|
311
|
-
insertNode(_el$
|
|
312
|
-
insertNode(_el$
|
|
313
|
-
setProp(_el$
|
|
314
|
-
setProp(_el$
|
|
315
|
-
setProp(_el$
|
|
316
|
-
insert(_el$
|
|
317
|
-
insert(_el$
|
|
347
|
+
var _el$1 = createElement("box"), _el$10 = createElement("text"), _el$11 = createElement("box"), _el$12 = createElement("text"), _el$13 = createElement("text"), _el$15 = createElement("box"), _el$16 = createElement("text"), _el$17 = createElement("text"), _el$19 = createElement("box"), _el$20 = createElement("text"), _el$21 = createElement("text"), _el$23 = createElement("box"), _el$24 = createElement("text"), _el$25 = createElement("box"), _el$26 = createElement("text");
|
|
348
|
+
insertNode(_el$1, _el$10);
|
|
349
|
+
insertNode(_el$1, _el$11);
|
|
350
|
+
insertNode(_el$1, _el$15);
|
|
351
|
+
insertNode(_el$1, _el$19);
|
|
352
|
+
insertNode(_el$1, _el$23);
|
|
353
|
+
insertNode(_el$1, _el$25);
|
|
354
|
+
setProp(_el$1, "flexDirection", "column");
|
|
355
|
+
setProp(_el$1, "width", "100%");
|
|
356
|
+
setProp(_el$10, "attributes", { bold: true });
|
|
357
|
+
insert(_el$10, () => `Pantheon${props.version ? ` v${props.version}` : ""}`);
|
|
358
|
+
insert(_el$1, createComponent(Show, {
|
|
318
359
|
get when() {
|
|
319
360
|
return branch();
|
|
320
361
|
},
|
|
321
362
|
children: (b) => (() => {
|
|
322
|
-
var _el$
|
|
323
|
-
insert(_el$
|
|
324
|
-
effect((_$p) => setProp(_el$
|
|
325
|
-
return _el$
|
|
363
|
+
var _el$27 = createElement("text");
|
|
364
|
+
insert(_el$27, b);
|
|
365
|
+
effect((_$p) => setProp(_el$27, "fg", theme().textMuted, _$p));
|
|
366
|
+
return _el$27;
|
|
326
367
|
})()
|
|
327
|
-
}), _el$
|
|
328
|
-
insert(_el$
|
|
329
|
-
insert(_el$
|
|
368
|
+
}), _el$11);
|
|
369
|
+
insert(_el$1, createComponent(HR, {}), _el$11);
|
|
370
|
+
insert(_el$1, createComponent(ContextBar, {
|
|
330
371
|
get api() {
|
|
331
372
|
return props.api;
|
|
332
373
|
},
|
|
333
374
|
get sessionID() {
|
|
334
375
|
return props.sessionID;
|
|
335
376
|
}
|
|
336
|
-
}), _el$
|
|
337
|
-
insert(_el$
|
|
338
|
-
insertNode(_el$
|
|
339
|
-
insertNode(_el$
|
|
340
|
-
setProp(_el$
|
|
341
|
-
setProp(_el$
|
|
342
|
-
insert(_el$
|
|
343
|
-
insert(_el$
|
|
344
|
-
insert(_el$
|
|
377
|
+
}), _el$11);
|
|
378
|
+
insert(_el$1, createComponent(HR, {}), _el$11);
|
|
379
|
+
insertNode(_el$11, _el$12);
|
|
380
|
+
insertNode(_el$11, _el$13);
|
|
381
|
+
setProp(_el$11, "onMouseDown", () => setShowSessions((x) => !x));
|
|
382
|
+
setProp(_el$12, "attributes", { bold: true });
|
|
383
|
+
insert(_el$12, () => `${showSessions() ? "▼" : "▶"} Sessions`);
|
|
384
|
+
insert(_el$13, () => ` (${String(totalSessions())})`);
|
|
385
|
+
insert(_el$1, createComponent(Show, {
|
|
345
386
|
get when() {
|
|
346
|
-
return
|
|
387
|
+
return showSessions();
|
|
347
388
|
},
|
|
348
|
-
children
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
insert(_el$
|
|
389
|
+
get children() {
|
|
390
|
+
return createComponent(Show, {
|
|
391
|
+
get when() {
|
|
392
|
+
return recentSessions().length > 0;
|
|
393
|
+
},
|
|
394
|
+
get fallback() {
|
|
395
|
+
return (() => {
|
|
396
|
+
var _el$28 = createElement("box"), _el$29 = createElement("text");
|
|
397
|
+
insertNode(_el$28, _el$29);
|
|
398
|
+
setProp(_el$28, "marginLeft", 1);
|
|
399
|
+
insertNode(_el$29, createTextNode(`No recent sessions`));
|
|
400
|
+
effect((_$p) => setProp(_el$29, "fg", theme().textMuted, _$p));
|
|
401
|
+
return _el$28;
|
|
402
|
+
})();
|
|
403
|
+
},
|
|
404
|
+
get children() {
|
|
405
|
+
var _el$14 = createElement("box");
|
|
406
|
+
setProp(_el$14, "marginLeft", 1);
|
|
407
|
+
setProp(_el$14, "flexDirection", "column");
|
|
408
|
+
insert(_el$14, createComponent(For, {
|
|
409
|
+
get each() {
|
|
410
|
+
return recentSessions();
|
|
411
|
+
},
|
|
412
|
+
children: (ses) => createComponent(SessionRow, {
|
|
413
|
+
get api() {
|
|
414
|
+
return props.api;
|
|
415
|
+
},
|
|
416
|
+
session: ses
|
|
417
|
+
})
|
|
418
|
+
}));
|
|
419
|
+
return _el$14;
|
|
420
|
+
}
|
|
421
|
+
});
|
|
422
|
+
}
|
|
423
|
+
}), _el$15);
|
|
424
|
+
insertNode(_el$15, _el$16);
|
|
425
|
+
insertNode(_el$15, _el$17);
|
|
426
|
+
setProp(_el$15, "onMouseDown", () => setShowCommands((x) => !x));
|
|
427
|
+
setProp(_el$16, "attributes", { bold: true });
|
|
428
|
+
insert(_el$16, () => `${showCommands() ? "▼" : "▶"} Commands`);
|
|
429
|
+
insert(_el$17, () => ` (${String(COMMANDS.length)})`);
|
|
430
|
+
insert(_el$1, createComponent(Show, {
|
|
388
431
|
get when() {
|
|
389
432
|
return showCommands();
|
|
390
433
|
},
|
|
391
434
|
get children() {
|
|
392
|
-
var _el$
|
|
393
|
-
setProp(_el$
|
|
394
|
-
setProp(_el$
|
|
395
|
-
insert(_el$
|
|
435
|
+
var _el$18 = createElement("box");
|
|
436
|
+
setProp(_el$18, "marginLeft", 1);
|
|
437
|
+
setProp(_el$18, "flexDirection", "column");
|
|
438
|
+
insert(_el$18, createComponent(For, {
|
|
396
439
|
each: COMMANDS,
|
|
397
440
|
children: (cmd) => (() => {
|
|
398
441
|
var _el$31 = createElement("box"), _el$32 = createElement("text"), _el$33 = createElement("text");
|
|
@@ -424,24 +467,24 @@ function View(props) {
|
|
|
424
467
|
return _el$31;
|
|
425
468
|
})()
|
|
426
469
|
}));
|
|
427
|
-
return _el$
|
|
470
|
+
return _el$18;
|
|
428
471
|
}
|
|
429
|
-
}), _el$
|
|
430
|
-
insertNode(_el$
|
|
431
|
-
insertNode(_el$
|
|
432
|
-
setProp(_el$
|
|
433
|
-
setProp(_el$
|
|
434
|
-
insert(_el$
|
|
435
|
-
insert(_el$
|
|
436
|
-
insert(_el$
|
|
472
|
+
}), _el$19);
|
|
473
|
+
insertNode(_el$19, _el$20);
|
|
474
|
+
insertNode(_el$19, _el$21);
|
|
475
|
+
setProp(_el$19, "onMouseDown", () => setShowAgents((x) => !x));
|
|
476
|
+
setProp(_el$20, "attributes", { bold: true });
|
|
477
|
+
insert(_el$20, () => `${showAgents() ? "▼" : "▶"} Agents`);
|
|
478
|
+
insert(_el$21, () => ` (${String(AGENTS.length)})`);
|
|
479
|
+
insert(_el$1, createComponent(Show, {
|
|
437
480
|
get when() {
|
|
438
481
|
return showAgents();
|
|
439
482
|
},
|
|
440
483
|
get children() {
|
|
441
|
-
var _el$
|
|
442
|
-
setProp(_el$
|
|
443
|
-
setProp(_el$
|
|
444
|
-
insert(_el$
|
|
484
|
+
var _el$22 = createElement("box");
|
|
485
|
+
setProp(_el$22, "marginLeft", 1);
|
|
486
|
+
setProp(_el$22, "flexDirection", "column");
|
|
487
|
+
insert(_el$22, createComponent(For, {
|
|
445
488
|
each: AGENTS,
|
|
446
489
|
children: (agent) => (() => {
|
|
447
490
|
var _el$34 = createElement("box"), _el$35 = createElement("text"), _el$36 = createElement("text");
|
|
@@ -461,14 +504,14 @@ function View(props) {
|
|
|
461
504
|
return _el$34;
|
|
462
505
|
})()
|
|
463
506
|
}));
|
|
464
|
-
return _el$
|
|
507
|
+
return _el$22;
|
|
465
508
|
}
|
|
466
|
-
}), _el$
|
|
467
|
-
insertNode(_el$
|
|
468
|
-
setProp(_el$
|
|
469
|
-
setProp(_el$
|
|
470
|
-
insert(_el$
|
|
471
|
-
insert(_el$
|
|
509
|
+
}), _el$23);
|
|
510
|
+
insertNode(_el$23, _el$24);
|
|
511
|
+
setProp(_el$23, "onMouseDown", () => setShowConfig((x) => !x));
|
|
512
|
+
setProp(_el$24, "attributes", { bold: true });
|
|
513
|
+
insert(_el$24, () => `${showConfig() ? "▼" : "▶"} Config`);
|
|
514
|
+
insert(_el$1, createComponent(Show, {
|
|
472
515
|
get when() {
|
|
473
516
|
return showConfig();
|
|
474
517
|
},
|
|
@@ -508,21 +551,24 @@ function View(props) {
|
|
|
508
551
|
})()
|
|
509
552
|
});
|
|
510
553
|
}
|
|
511
|
-
}), _el$
|
|
512
|
-
insertNode(_el$
|
|
513
|
-
setProp(_el$
|
|
514
|
-
insert(_el$
|
|
554
|
+
}), _el$25);
|
|
555
|
+
insertNode(_el$25, _el$26);
|
|
556
|
+
setProp(_el$25, "marginTop", 1);
|
|
557
|
+
insert(_el$26, (() => {
|
|
558
|
+
var _c$ = memo(() => memoryCount() !== null);
|
|
559
|
+
return () => _c$() ? `Memory: ${fmtInt(memoryCount())} entries` : "Memory: N/A";
|
|
560
|
+
})());
|
|
515
561
|
effect((_p$) => {
|
|
516
562
|
var _v$3 = theme().accent, _v$4 = theme().text, _v$5 = theme().textMuted, _v$6 = theme().text, _v$7 = theme().textMuted, _v$8 = theme().text, _v$9 = theme().textMuted, _v$0 = theme().text, _v$1 = theme().textMuted;
|
|
517
|
-
_v$3 !== _p$.e && (_p$.e = setProp(_el$
|
|
518
|
-
_v$4 !== _p$.t && (_p$.t = setProp(_el$
|
|
519
|
-
_v$5 !== _p$.a && (_p$.a = setProp(_el$
|
|
520
|
-
_v$6 !== _p$.o && (_p$.o = setProp(_el$
|
|
521
|
-
_v$7 !== _p$.i && (_p$.i = setProp(_el$
|
|
522
|
-
_v$8 !== _p$.n && (_p$.n = setProp(_el$
|
|
523
|
-
_v$9 !== _p$.s && (_p$.s = setProp(_el$
|
|
524
|
-
_v$0 !== _p$.h && (_p$.h = setProp(_el$
|
|
525
|
-
_v$1 !== _p$.r && (_p$.r = setProp(_el$
|
|
563
|
+
_v$3 !== _p$.e && (_p$.e = setProp(_el$10, "fg", _v$3, _p$.e));
|
|
564
|
+
_v$4 !== _p$.t && (_p$.t = setProp(_el$12, "fg", _v$4, _p$.t));
|
|
565
|
+
_v$5 !== _p$.a && (_p$.a = setProp(_el$13, "fg", _v$5, _p$.a));
|
|
566
|
+
_v$6 !== _p$.o && (_p$.o = setProp(_el$16, "fg", _v$6, _p$.o));
|
|
567
|
+
_v$7 !== _p$.i && (_p$.i = setProp(_el$17, "fg", _v$7, _p$.i));
|
|
568
|
+
_v$8 !== _p$.n && (_p$.n = setProp(_el$20, "fg", _v$8, _p$.n));
|
|
569
|
+
_v$9 !== _p$.s && (_p$.s = setProp(_el$21, "fg", _v$9, _p$.s));
|
|
570
|
+
_v$0 !== _p$.h && (_p$.h = setProp(_el$24, "fg", _v$0, _p$.h));
|
|
571
|
+
_v$1 !== _p$.r && (_p$.r = setProp(_el$26, "fg", _v$1, _p$.r));
|
|
526
572
|
return _p$;
|
|
527
573
|
}, {
|
|
528
574
|
e: void 0,
|
|
@@ -535,7 +581,7 @@ function View(props) {
|
|
|
535
581
|
h: void 0,
|
|
536
582
|
r: void 0
|
|
537
583
|
});
|
|
538
|
-
return _el$
|
|
584
|
+
return _el$1;
|
|
539
585
|
})();
|
|
540
586
|
}
|
|
541
587
|
const tui = async (api, _options, _meta) => {
|