@oddessentials/agent-guild 0.13.0 → 0.14.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.
- package/README.md +1 -1
- package/config/providers.default.json +4 -0
- package/package.json +1 -1
- package/src/manager/providers.mjs +2 -0
- package/web/app.js +17 -14
- package/web/index.html +1 -0
- package/web/styles.css +6 -1
package/README.md
CHANGED
|
@@ -47,7 +47,7 @@ Grok Build and a plain shell each get a card. A tool that is missing shows
|
|
|
47
47
|
vendor's install command for a tool not published on npm. An installed
|
|
48
48
|
tool shows its version and offers **Update** when a newer one is out, using
|
|
49
49
|
the same installer that put it there: npm, Homebrew, WinGet or the vendor's
|
|
50
|
-
own.
|
|
50
|
+
own. The cloud icon on each card opens the vendor's web app.
|
|
51
51
|
|
|
52
52
|
**Real terminals that outlive the page.** Every session is a full interactive
|
|
53
53
|
terminal: type instructions, answer prompts, watch output. Run as many as you
|
|
@@ -29,6 +29,7 @@
|
|
|
29
29
|
"docs": "https://code.claude.com/docs/en/setup",
|
|
30
30
|
"usageUrl": "https://claude.ai/settings/usage",
|
|
31
31
|
"billingUrl": "https://claude.ai/settings/billing",
|
|
32
|
+
"cloudUrl": "https://claude.ai/code",
|
|
32
33
|
"win32": {
|
|
33
34
|
"install": "irm https://claude.ai/install.ps1 | iex",
|
|
34
35
|
"channels": {
|
|
@@ -65,6 +66,7 @@
|
|
|
65
66
|
"docs": "https://github.com/openai/codex",
|
|
66
67
|
"usageUrl": "https://chatgpt.com/codex/settings/usage",
|
|
67
68
|
"billingUrl": "https://chatgpt.com/#settings/Billing",
|
|
69
|
+
"cloudUrl": "https://chatgpt.com/codex",
|
|
68
70
|
"win32": {
|
|
69
71
|
"install": "powershell -ExecutionPolicy ByPass -c \"irm https://chatgpt.com/codex/install.ps1 | iex\"",
|
|
70
72
|
"channels": {
|
|
@@ -92,6 +94,7 @@
|
|
|
92
94
|
},
|
|
93
95
|
"docs": "https://antigravity.google/docs/cli/install",
|
|
94
96
|
"billingUrl": "https://one.google.com/settings",
|
|
97
|
+
"cloudUrl": "https://gemini.google.com/",
|
|
95
98
|
"win32": {
|
|
96
99
|
"install": "irm https://antigravity.google/cli/install.ps1 | iex",
|
|
97
100
|
"channels": {
|
|
@@ -123,6 +126,7 @@
|
|
|
123
126
|
"docs": "https://docs.x.ai/build/overview",
|
|
124
127
|
"usageUrl": "https://grok.com/?_s=usage",
|
|
125
128
|
"billingUrl": "https://grok.com/?_s=billing",
|
|
129
|
+
"cloudUrl": "https://grok.com/",
|
|
126
130
|
"win32": {
|
|
127
131
|
"install": "irm https://x.ai/cli/install.ps1 | iex"
|
|
128
132
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@oddessentials/agent-guild",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.14.0",
|
|
4
4
|
"description": "Launch and watch AI coding-assistant terminal sessions from one local web page. A bundled session manager owns the terminals so the page can close and reconnect.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -182,6 +182,7 @@ function normalize(raw, platform, warnings) {
|
|
|
182
182
|
docs: String(merged.docs || ''),
|
|
183
183
|
usageUrl: httpsUrl(merged.usageUrl, 'usageUrl', merged.id, warnings),
|
|
184
184
|
billingUrl: httpsUrl(merged.billingUrl, 'billingUrl', merged.id, warnings),
|
|
185
|
+
cloudUrl: httpsUrl(merged.cloudUrl, 'cloudUrl', merged.id, warnings),
|
|
185
186
|
enabled: merged.enabled !== false,
|
|
186
187
|
};
|
|
187
188
|
}
|
|
@@ -637,6 +638,7 @@ export class ProviderRegistry extends EventEmitter {
|
|
|
637
638
|
docs: provider.docs,
|
|
638
639
|
usageUrl: provider.usageUrl,
|
|
639
640
|
billingUrl: provider.billingUrl,
|
|
641
|
+
cloudUrl: provider.cloudUrl,
|
|
640
642
|
available: Boolean(resolvedPath),
|
|
641
643
|
resolvedPath,
|
|
642
644
|
};
|
package/web/app.js
CHANGED
|
@@ -557,7 +557,7 @@ function renderProviders() {
|
|
|
557
557
|
update.addEventListener('click', () => installProvider(provider, node));
|
|
558
558
|
renderHint(hint, provider);
|
|
559
559
|
renderCopies(node.querySelector('.copies'), provider);
|
|
560
|
-
|
|
560
|
+
renderVendorLinks(node, provider);
|
|
561
561
|
renderAccounts(node, provider);
|
|
562
562
|
renderUsage(node, provider);
|
|
563
563
|
renderReportingSetup(node, provider);
|
|
@@ -627,19 +627,22 @@ function renderHint(hint, provider) {
|
|
|
627
627
|
hint.append(' ', link);
|
|
628
628
|
}
|
|
629
629
|
|
|
630
|
-
function
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
}
|
|
642
|
-
|
|
630
|
+
function renderVendorLinks(card, provider) {
|
|
631
|
+
const usage = setVendorLink(card.querySelector('.usage-link'), provider.usageUrl, `${provider.vendor} usage console`);
|
|
632
|
+
const billing = setVendorLink(card.querySelector('.billing-link'), provider.billingUrl, `${provider.vendor} billing console`);
|
|
633
|
+
card.querySelector('.provider-links').hidden = !usage && !billing;
|
|
634
|
+
setVendorLink(card.querySelector('.cloud-link'), provider.cloudUrl, `${provider.vendor} web app`);
|
|
635
|
+
}
|
|
636
|
+
|
|
637
|
+
/** Point a link at an https URL, or hide it. Returns whether it is shown. */
|
|
638
|
+
function setVendorLink(link, url, label) {
|
|
639
|
+
const href = httpsHref(url);
|
|
640
|
+
link.hidden = !href;
|
|
641
|
+
if (!href) { link.removeAttribute('href'); return false; }
|
|
642
|
+
link.href = href;
|
|
643
|
+
link.title = `${label}: ${href}`;
|
|
644
|
+
link.setAttribute('aria-label', `${label} (opens in a new tab)`);
|
|
645
|
+
return true;
|
|
643
646
|
}
|
|
644
647
|
|
|
645
648
|
function renderTier(card, provider, usage) {
|
package/web/index.html
CHANGED
|
@@ -259,6 +259,7 @@
|
|
|
259
259
|
<span class="tool"></span>
|
|
260
260
|
<span class="state"></span>
|
|
261
261
|
</span>
|
|
262
|
+
<a class="cloud-link" target="_blank" rel="noopener noreferrer" hidden></a>
|
|
262
263
|
</div>
|
|
263
264
|
<div class="accounts" role="tablist" aria-label="Accounts" hidden></div>
|
|
264
265
|
<div class="usage"></div>
|
package/web/styles.css
CHANGED
|
@@ -23,7 +23,8 @@
|
|
|
23
23
|
--icon-sun: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='12' cy='12' r='4.2'/%3E%3Cpath d='M12 2.5v2.2M12 19.3v2.2M2.5 12h2.2M19.3 12h2.2M5.3 5.3l1.6 1.6M17.1 17.1l1.6 1.6M5.3 18.7l1.6-1.6M17.1 6.9l1.6-1.6'/%3E%3C/svg%3E");
|
|
24
24
|
--icon-moon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linejoin='round'%3E%3Cpath d='M19.5 14.6A8 8 0 0 1 9.4 4.5a8 8 0 1 0 10.1 10.1z'/%3E%3C/svg%3E");
|
|
25
25
|
--icon-external: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7 17L17 7M9 7h8v8'/%3E%3C/svg%3E");
|
|
26
|
-
--icon-
|
|
26
|
+
--icon-cloud: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linejoin='round'%3E%3Cpath d='M7 18.5h10.5a4 4 0 0 0 .6-7.96A6 6 0 0 0 6.5 9.6 4.5 4.5 0 0 0 7 18.5z'/%3E%3C/svg%3E");
|
|
27
|
+
--icon-chevron:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 5.5l6.5 6.5L9 18.5'/%3E%3C/svg%3E");
|
|
27
28
|
--icon-github: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M8 0c4.42 0 8 3.58 8 8a8.013 8.013 0 0 1-5.45 7.59c-.4.08-.55-.17-.55-.38 0-.27.01-1.13.01-2.2 0-.75-.25-1.23-.54-1.48 1.78-.2 3.65-.88 3.65-3.95 0-.88-.31-1.59-.82-2.15.08-.2.36-1.02-.08-2.12 0 0-.67-.22-2.2.82-.64-.18-1.32-.27-2-.27-.68 0-1.36.09-2 .27-1.53-1.03-2.2-.82-2.2-.82-.44 1.1-.16 1.92-.08 2.12-.51.56-.82 1.28-.82 2.15 0 3.06 1.86 3.75 3.64 3.95-.23.2-.44.55-.51 1.07-.46.21-1.61.55-2.33-.66-.15-.24-.6-.83-1.23-.82-.67.01-.27.38.01.53.34.19.73.9.82 1.13.16.45.68 1.31 2.69.94 0 .67.01 1.3.01 1.49 0 .21-.15.45-.55.38A7.995 7.995 0 0 1 0 8c0-4.42 3.58-8 8-8Z'/%3E%3C/svg%3E");
|
|
28
29
|
--icon-info: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M12 10.8v6.2' stroke-width='2.4'/%3E%3Ccircle cx='12' cy='7.3' r='1.2' fill='black' stroke='none'/%3E%3C/svg%3E");
|
|
29
30
|
font-family: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
|
|
@@ -201,6 +202,10 @@ main { max-width: 1200px; margin: 0 auto; padding: 26px 16px 56px; display: grid
|
|
|
201
202
|
.console-link { color: var(--accent); text-decoration: none; }
|
|
202
203
|
.console-link:hover { text-decoration: underline; }
|
|
203
204
|
.console-link:focus-visible { outline: 2px solid var(--focus); outline-offset: 2px; border-radius: 3px; }
|
|
205
|
+
.cloud-link { display: block; flex: none; align-self: flex-start; width: 32px; height: 32px; margin: -4px -6px 0 0; border-radius: 8px; color: var(--muted); }
|
|
206
|
+
.cloud-link::before { content: ""; display: block; width: 100%; height: 100%; background: currentColor; mask: var(--icon-cloud) center / 20px no-repeat; }
|
|
207
|
+
.cloud-link:hover { color: var(--accent); }
|
|
208
|
+
.cloud-link:focus-visible { color: var(--accent); outline: 2px solid var(--focus); outline-offset: 0; }
|
|
204
209
|
.provider-actions { margin-top: auto; display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
|
|
205
210
|
.provider .hint { font-size: 0.78rem; color: var(--muted); overflow-wrap: anywhere; }
|
|
206
211
|
.provider .copies { font-size: 0.78rem; color: var(--muted); overflow-wrap: anywhere; }
|