agentgui 1.0.898 → 1.0.900

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.
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,5 @@
1
+ export default {
2
+ outDir: 'dist',
3
+ contentDir: 'site/content',
4
+ theme: './site/theme.mjs',
5
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agentgui",
3
- "version": "1.0.898",
3
+ "version": "1.0.900",
4
4
  "description": "Multi-agent ACP client with real-time communication",
5
5
  "type": "module",
6
6
  "main": "electron/main.js",
Binary file
@@ -0,0 +1,5 @@
1
+ links:
2
+ - label: 247420
3
+ href: https://247420.xyz
4
+ - label: GitHub
5
+ href: https://github.com/AnEntrypoint
@@ -0,0 +1,17 @@
1
+ title: "agentgui"
2
+ tagline: "multi-agent GUI for AI coding assistants"
3
+ description: "Claude Code, Gemini CLI, OpenCode and more — all in one window. one npx, every coding agent. if you run more than one, this is what you've been missing."
4
+ repo: "https://github.com/AnEntrypoint/agentgui"
5
+ url: "https://anentrypoint.github.io/agentgui"
6
+ year: 2026
7
+ keywords:
8
+ - "gui"
9
+ - "agents"
10
+ - "desktop"
11
+ - "247420"
12
+ - "anentrypoint"
13
+ accent_from: "#bc8cff"
14
+ accent_to: "#d2a8ff"
15
+ glyph: "▣"
16
+ code: "017"
17
+ category: "gm-tools"
@@ -0,0 +1,29 @@
1
+ id: home
2
+ title: Home
3
+ hero:
4
+ heading: "agentgui"
5
+ subheading: "multi-agent GUI for AI coding assistants"
6
+ body: "Claude Code, Gemini CLI, OpenCode and more — all in one window. one npx, every coding agent. if you run more than one, this is what you've been missing."
7
+ badges:
8
+ - { label: "gui" }
9
+ - { label: "agents" }
10
+ - { label: "desktop" }
11
+ - { label: "gm-tools" }
12
+ ctas:
13
+ - { label: "GitHub", href: "https://github.com/AnEntrypoint/agentgui", primary: true }
14
+ - { label: "Install", href: "https://github.com/AnEntrypoint/agentgui#installation" }
15
+ - { label: "247420", href: "https://247420.xyz" }
16
+ features:
17
+ heading: "Why agentgui"
18
+ items:
19
+ - { name: "gui", desc: "flagship trait of agentgui." }
20
+ - { name: "agents", desc: "core capability of agentgui." }
21
+ - { name: "desktop", desc: "core capability of agentgui." }
22
+ quickstart:
23
+ heading: Quick start
24
+ lines:
25
+ - { kind: "cmt", text: "# install" }
26
+ - { kind: "cmd", text: "npx agentgui" }
27
+ - { kind: "cmt", text: "" }
28
+ - { kind: "cmt", text: "# source" }
29
+ - { kind: "cmd", text: "git clone https://github.com/AnEntrypoint/agentgui.git" }
package/site/theme.mjs ADDED
@@ -0,0 +1,147 @@
1
+ // AnEntrypoint design-system theme for flatspace.
2
+ // Renders site chrome via anentrypoint-design SDK on the client (importmap → unpkg),
3
+ // theme.mjs only emits the static HTML shell + bootstrap script that consumes the YAML
4
+ // content that flatspace baked into <script type="application/json" id="__site__">.
5
+
6
+ const escapeHtml = (s) => String(s ?? '')
7
+ .replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;')
8
+ .replace(/"/g, '&quot;').replace(/'/g, '&#39;');
9
+
10
+ const escapeJson = (obj) => JSON.stringify(obj)
11
+ .replace(/</g, '\\u003c').replace(/>/g, '\\u003e').replace(/&/g, '\\u0026')
12
+ .replace(/\u2028/g, '\\u2028').replace(/\u2029/g, '\\u2029');
13
+
14
+ const SDK_URL = 'https://unpkg.com/anentrypoint-design/dist/247420.js';
15
+
16
+ const clientScript = `
17
+ import { h, applyDiff, installStyles } from 'anentrypoint-design';
18
+ installStyles();
19
+
20
+ const data = JSON.parse(document.getElementById('__site__').textContent);
21
+ const { site, nav, home } = data;
22
+ const accent = \`linear-gradient(135deg, \${site.accent_from || '#58a6ff'}, \${site.accent_to || '#bc8cff'})\`;
23
+
24
+ function Hero() {
25
+ return h('div', { class: 'hero' },
26
+ h('h1', { class: 'hero-h1' }, home.hero.heading),
27
+ home.hero.subheading ? h('p', { class: 'hero-sub' }, home.hero.subheading) : null,
28
+ home.hero.body ? h('p', { class: 'hero-body' }, home.hero.body) : null,
29
+ h('div', { class: 'badge-row' },
30
+ ...(home.hero.badges || []).map((b, i) => h('span', { class: 'badge', key: i }, b.label))
31
+ ),
32
+ h('div', { class: 'cta-row' },
33
+ ...(home.hero.ctas || []).map((c, i) => h('a', {
34
+ href: c.href, key: i,
35
+ class: 'btn btn-sm ' + (c.primary ? 'btn-primary' : 'btn-ghost'),
36
+ style: 'text-decoration:none'
37
+ }, c.label))
38
+ )
39
+ );
40
+ }
41
+
42
+ function Features() {
43
+ if (!home.features || !home.features.items) return null;
44
+ return h('section', { class: 'section' },
45
+ h('h2', {}, home.features.heading || 'Features'),
46
+ h('div', { class: 'grid-cards' },
47
+ ...home.features.items.map((it, i) =>
48
+ h('div', { class: 'card', key: i },
49
+ h('h3', {}, it.name),
50
+ h('p', {}, it.desc || '')
51
+ )
52
+ )
53
+ )
54
+ );
55
+ }
56
+
57
+ function Quickstart() {
58
+ if (!home.quickstart || !home.quickstart.lines) return null;
59
+ const cls = { cmt: 'cmt', cmd: '', str: 'str', kw: 'kw', fn: 'fn' };
60
+ return h('section', { class: 'section' },
61
+ h('h2', {}, home.quickstart.heading || 'Quick start'),
62
+ h('div', { class: 'code-block' },
63
+ h('pre', {},
64
+ ...home.quickstart.lines.map((l, i) => {
65
+ const c = cls[l.kind] || '';
66
+ return h('span', { key: i, class: c }, l.text + '\n');
67
+ })
68
+ )
69
+ )
70
+ );
71
+ }
72
+
73
+ function Footer() {
74
+ return h('footer', { class: 'app-footer' },
75
+ h('span', {}, 'styled with '),
76
+ h('a', { href: 'https://github.com/AnEntrypoint/design' }, 'anentrypoint-design'),
77
+ h('span', {}, ' · part of '),
78
+ h('a', { href: 'https://247420.xyz' }, '247420.xyz'),
79
+ h('span', {}, ' · '),
80
+ h('a', { href: site.repo }, 'source')
81
+ );
82
+ }
83
+
84
+ function App() {
85
+ return h('div', {}, Hero(), Features(), Quickstart(), Footer());
86
+ }
87
+
88
+ applyDiff(document.getElementById('app'), [App()]);
89
+ `;
90
+
91
+ const html = ({ site, nav, home }) => `<!DOCTYPE html>
92
+ <html lang="en" class="ds-247420">
93
+ <head>
94
+ <meta charset="UTF-8" />
95
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
96
+ <title>${escapeHtml(site.title)}${site.tagline ? ' — ' + escapeHtml(site.tagline) : ''}</title>
97
+ <meta name="description" content="${escapeHtml(site.description || site.tagline || site.title)}" />
98
+ <meta property="og:title" content="${escapeHtml(site.title)}" />
99
+ <meta property="og:description" content="${escapeHtml(site.description || site.tagline || '')}" />
100
+ <meta property="og:url" content="${escapeHtml(site.url || '')}" />
101
+ <link rel="canonical" href="${escapeHtml(site.url || '')}" />
102
+ <link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctext y='26' font-size='26'%3E${encodeURIComponent(site.glyph || '◆')}%3C/text%3E%3C/svg%3E" />
103
+ <script type="importmap">{"imports":{"anentrypoint-design":"${SDK_URL}"}}</script>
104
+ <style>
105
+ body { margin: 0; }
106
+ .hero { padding: 5rem 2rem 3rem; text-align: center; background: linear-gradient(135deg, var(--panel-bg, #0d1117) 0%, var(--panel-bg-2, #161b22) 100%); border-bottom: 1px solid var(--panel-border, #30363d); }
107
+ .hero-h1 { font-size: 4rem; font-weight: 800; margin: 0 0 1rem; letter-spacing: -2px; background: ${'linear-gradient(135deg, ' + (site.accent_from || '#58a6ff') + ', ' + (site.accent_to || '#bc8cff') + ')'}; -webkit-background-clip: text; -webkit-text-fill-color: transparent; }
108
+ .hero-sub { font-size: 1.25rem; color: var(--panel-muted, #8b949e); max-width: 640px; margin: 0 auto 0.75rem; line-height: 1.6; }
109
+ .hero-body { font-size: 1rem; color: var(--panel-muted, #8b949e); max-width: 640px; margin: 0 auto 2rem; line-height: 1.6; }
110
+ .badge-row { display: flex; gap: 0.5rem; justify-content: center; flex-wrap: wrap; margin-bottom: 2rem; }
111
+ .badge { background: var(--panel-bg-2, #21262d); border: 1px solid var(--panel-border, #30363d); border-radius: 9999px; padding: 0.25rem 0.75rem; font-size: 0.75rem; color: var(--panel-muted, #8b949e); }
112
+ .cta-row { display: flex; gap: 1rem; justify-content: center; flex-wrap: wrap; }
113
+ .section { max-width: 1100px; margin: 0 auto; padding: 3rem 2rem; }
114
+ .section h2 { font-size: 1.75rem; font-weight: 700; color: var(--panel-text, #e6edf3); margin-bottom: 1.5rem; border-bottom: 1px solid var(--panel-border, #21262d); padding-bottom: 0.75rem; }
115
+ .grid-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 1rem; }
116
+ .card { background: var(--panel-bg-2, #161b22); border: 1px solid var(--panel-border, #30363d); border-radius: 12px; padding: 1.25rem; }
117
+ .card h3 { margin: 0 0 0.5rem; font-size: 1rem; color: ${site.accent_to || '#bc8cff'}; font-family: var(--ff-mono, ui-monospace, monospace); }
118
+ .card p { margin: 0; color: var(--panel-muted, #8b949e); font-size: 0.85rem; line-height: 1.5; }
119
+ .code-block { background: var(--panel-bg-2, #161b22); border: 1px solid var(--panel-border, #30363d); border-radius: 12px; padding: 1.5rem; overflow-x: auto; }
120
+ .code-block pre { margin: 0; font-family: var(--ff-mono, ui-monospace, monospace); font-size: 0.85rem; color: var(--panel-text, #e6edf3); line-height: 1.6; }
121
+ .cmt { color: var(--panel-muted, #8b949e); }
122
+ .str { color: #a5d6ff; } .kw { color: #ff7b72; } .fn { color: #d2a8ff; }
123
+ .app-footer { border-top: 1px solid var(--panel-border, #21262d); padding: 2rem; text-align: center; color: var(--panel-muted, #8b949e); font-size: 0.85rem; }
124
+ .app-footer a { color: #58a6ff; text-decoration: none; }
125
+ </style>
126
+ </head>
127
+ <body>
128
+ <div id="app"></div>
129
+ <script type="application/json" id="__site__">${escapeJson({ site, nav, home })}</script>
130
+ <script type="module">${clientScript}</script>
131
+ </body>
132
+ </html>
133
+ `;
134
+
135
+ export default {
136
+ render: async (ctx) => {
137
+ const site = ctx.readGlobal('site') || {};
138
+ const nav = ctx.readGlobal('navigation') || { links: [] };
139
+ const homeDoc = ctx.read('pages').docs.find(p => p.id === 'home');
140
+ if (!homeDoc) throw new Error('config/pages/home.yaml missing or has no id: home');
141
+
142
+ return [{
143
+ path: 'index.html',
144
+ html: html({ site, nav, home: homeDoc })
145
+ }];
146
+ }
147
+ };