agent-host-protocol-ui 0.1.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/LICENSE +201 -0
- package/README.md +134 -0
- package/bin/cli.js +142 -0
- package/dist/assets/index-B3CN86Cx.js +90 -0
- package/dist/assets/index-BS3hjOwP.css +1 -0
- package/dist/index.html +31 -0
- package/dist-path.d.ts +5 -0
- package/dist-path.js +11 -0
- package/package.json +64 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg-canvas:#1e1e1e;--bg-sidebar:#252526;--bg-surface:#252526;--bg-surface-elevated:#2d2d2d;--bg-surface-hover:#37373d;--border-subtle:#2d2d2d;--border-default:#3e3e42;--border-focused:#007fd4;--text-primary:#ccc;--text-secondary:#9da5b4;--text-muted:#858585;--text-accent:#4fc1ff;--tool-name-color:#4fc1ff;--color-primary:#0e639c;--color-primary-hover:#17b;--color-primary-light:#4fc1ff26;--color-success:#89d185;--color-success-light:#89d18526;--color-warning:#cca700;--color-warning-light:#cca70026;--color-danger:#f14c4c;--color-danger-light:#f14c4c26;--color-purple:#c586c0;--color-purple-light:#c586c026;--thinking-bg:#c586c01f;--thinking-border:#c586c059;--thinking-text-summary:#c586c0;--thinking-text-content:#d4d4d4;--code-pre-bg:#141414;--code-pre-border:#333;--code-inline-bg:#ffffff14;--error-banner-text:#f48771;--pending-pill-bg:#f14c4c33;--pending-pill-color:#f48771;--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--font-mono:ui-monospace, SFMono-Regular, "SF Mono", Menlo, Monaco, Consolas, monospace;--radius-sm:4px;--radius-md:8px;--radius-lg:12px;--radius-full:9999px;--shadow-sm:0 1px 2px 0 #00000059;--shadow-md:0 4px 6px -1px #00000073;--shadow-lg:0 10px 15px -3px #0000008c}@media (prefers-color-scheme:light){:root:not([data-theme=dark]){--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg-canvas:#fff;--bg-sidebar:#f3f3f3;--bg-surface:#fff;--bg-surface-elevated:#f8f8f8;--bg-surface-hover:#e8e8e8;--border-subtle:#e5e5e5;--border-default:#cecece;--border-focused:#007acc;--text-primary:#1e1e1e;--text-secondary:#616161;--text-muted:#767676;--text-accent:#0066b8;--tool-name-color:#0066b8;--color-primary:#007acc;--color-primary-hover:#0062a3;--color-primary-light:#007acc1a;--color-success:#388a34;--color-success-light:#388a341f;--color-warning:#bf8803;--color-warning-light:#bf88031f;--color-danger:#e51400;--color-danger-light:#e514001a;--color-purple:#af00db;--color-purple-light:#af00db14;--thinking-bg:#af00db0f;--thinking-border:#af00db40;--thinking-text-summary:#af00db;--thinking-text-content:#24292f;--code-pre-bg:#f8f8f8;--code-pre-border:#e1e4e8;--code-inline-bg:#1b1f230f;--error-banner-text:#d73a49;--pending-pill-bg:#e514001a;--pending-pill-color:#d73a49;--shadow-sm:0 1px 2px 0 #0000000f;--shadow-md:0 4px 6px -1px #00000014;--shadow-lg:0 10px 15px -3px #0000001f}}:root[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg-canvas:#fff;--bg-sidebar:#f3f3f3;--bg-surface:#fff;--bg-surface-elevated:#f8f8f8;--bg-surface-hover:#e8e8e8;--border-subtle:#e5e5e5;--border-default:#cecece;--border-focused:#007acc;--text-primary:#1e1e1e;--text-secondary:#616161;--text-muted:#767676;--text-accent:#0066b8;--tool-name-color:#0066b8;--color-primary:#007acc;--color-primary-hover:#0062a3;--color-primary-light:#007acc1a;--color-success:#388a34;--color-success-light:#388a341f;--color-warning:#bf8803;--color-warning-light:#bf88031f;--color-danger:#e51400;--color-danger-light:#e514001a;--color-purple:#af00db;--color-purple-light:#af00db14;--thinking-bg:#af00db0f;--thinking-border:#af00db40;--thinking-text-summary:#af00db;--thinking-text-content:#24292f;--code-pre-bg:#f8f8f8;--code-pre-border:#e1e4e8;--code-inline-bg:#1b1f230f;--error-banner-text:#d73a49;--pending-pill-bg:#e514001a;--pending-pill-color:#d73a49;--shadow-sm:0 1px 2px 0 #0000000f;--shadow-md:0 4px 6px -1px #00000014;--shadow-lg:0 10px 15px -3px #0000001f}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg-canvas:#1e1e1e;--bg-sidebar:#252526;--bg-surface:#252526;--bg-surface-elevated:#2d2d2d;--bg-surface-hover:#37373d;--border-subtle:#2d2d2d;--border-default:#3e3e42;--border-focused:#007fd4;--text-primary:#ccc;--text-secondary:#9da5b4;--text-muted:#858585;--text-accent:#4fc1ff;--tool-name-color:#4fc1ff;--color-primary:#0e639c;--color-primary-hover:#17b;--color-primary-light:#4fc1ff26;--color-success:#89d185;--color-success-light:#89d18526;--color-warning:#cca700;--color-warning-light:#cca70026;--color-danger:#f14c4c;--color-danger-light:#f14c4c26;--color-purple:#c586c0;--color-purple-light:#c586c026;--thinking-bg:#c586c01f;--thinking-border:#c586c059;--thinking-text-summary:#c586c0;--thinking-text-content:#d4d4d4;--code-pre-bg:#141414;--code-pre-border:#333;--code-inline-bg:#ffffff14;--error-banner-text:#f48771;--pending-pill-bg:#f14c4c33;--pending-pill-color:#f48771;--shadow-sm:0 1px 2px 0 #00000059;--shadow-md:0 4px 6px -1px #00000073;--shadow-lg:0 10px 15px -3px #0000008c}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-sans);background-color:var(--bg-canvas);color:var(--text-primary);height:100vh;font-size:14px;line-height:1.5;overflow:hidden}#root{flex-direction:column;height:100vh;display:flex}.header{background-color:var(--bg-sidebar);border-bottom:1px solid var(--border-subtle);z-index:10;justify-content:space-between;align-items:center;gap:16px;height:52px;padding:0 16px;display:flex}.header-left,.header-right{align-items:center;gap:12px;display:flex}.brand-badge{letter-spacing:-.3px;color:var(--text-primary);align-items:center;gap:8px;font-size:15px;font-weight:600;display:flex}.brand-icon{border-radius:var(--radius-sm);background:linear-gradient(135deg, var(--color-primary), var(--color-purple));color:#fff;justify-content:center;align-items:center;width:24px;height:24px;display:flex}.host-pill{background-color:var(--bg-surface);border:1px solid var(--border-default);border-radius:var(--radius-full);cursor:pointer;align-items:center;gap:8px;padding:4px 12px;font-size:12px;transition:all .2s;display:flex}.host-pill:hover{background-color:var(--bg-surface-elevated);border-color:var(--border-focused)}.status-dot{border-radius:50%;width:8px;height:8px}.status-dot.connected{background-color:var(--color-success);box-shadow:0 0 8px var(--color-success)}.status-dot.connecting{background-color:var(--color-warning);animation:1.5s infinite pulse}.status-dot.error,.status-dot.disconnected{background-color:var(--color-danger)}.privacy-badge{color:var(--color-success);border-radius:var(--radius-full);background-color:#22c55e1a;border:1px solid #22c55e40;align-items:center;gap:6px;padding:3px 10px;font-size:11px;font-weight:500;display:flex}.theme-toggle-group{background-color:var(--bg-surface);border:1px solid var(--border-default);border-radius:var(--radius-full);align-items:center;gap:2px;padding:2px;display:inline-flex}.theme-toggle-btn{border-radius:var(--radius-full);color:var(--text-secondary);cursor:pointer;background:0 0;border:none;align-items:center;gap:4px;padding:3px 8px;font-size:11px;font-weight:500;line-height:1;transition:all .15s;display:inline-flex}.theme-toggle-btn:hover{color:var(--text-primary);background-color:var(--bg-surface-hover)}.theme-toggle-btn.active{background-color:var(--color-primary-light);color:var(--color-primary);font-weight:600}.btn{border-radius:var(--radius-md);cursor:pointer;border:1px solid #0000;justify-content:center;align-items:center;gap:6px;padding:6px 14px;font-size:13px;font-weight:500;transition:all .15s;display:inline-flex}.btn-primary{background-color:var(--color-primary);color:#fff}.btn-primary:hover{background-color:var(--color-primary-hover)}.btn-secondary{background-color:var(--bg-surface-elevated);color:var(--text-primary);border:1px solid var(--border-default)}.btn-secondary:hover{background-color:var(--bg-surface-hover)}.btn-danger{background-color:var(--color-danger-light);color:var(--color-danger);border-color:#ef44444d}.btn-danger:hover{background-color:var(--color-danger);color:#fff}.workspace-layout{flex:1;display:flex;overflow:hidden}.sidebar{background-color:var(--bg-sidebar);border-right:1px solid var(--border-subtle);-webkit-user-select:none;user-select:none;flex-direction:column;width:280px;display:flex}.sidebar-search{border-bottom:1px solid var(--border-subtle);padding:12px}.search-input{background-color:var(--bg-canvas);border:1px solid var(--border-default);width:100%;color:var(--text-primary);border-radius:var(--radius-sm);outline:none;padding:6px 10px;font-size:12px}.search-input:focus{border-color:var(--border-focused);box-shadow:0 0 0 1px var(--border-focused)}.sessions-container{flex:1;padding:8px 0;overflow-y:auto}.section-label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;justify-content:space-between;align-items:center;padding:8px 16px 4px;font-size:11px;font-weight:600;display:flex}.session-item{cursor:pointer;border-left:2px solid #0000;flex-direction:column;gap:4px;padding:10px 16px;transition:background .15s;display:flex}.session-item:hover{background-color:var(--bg-surface)}.session-item.active{background-color:var(--bg-surface-elevated);border-left-color:var(--color-primary)}.session-header{justify-content:space-between;align-items:center;gap:6px;display:flex}.session-title{color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:13px;font-weight:500;overflow:hidden}.session-meta{color:var(--text-muted);align-items:center;gap:8px;font-size:11px;display:flex}.live-badge{color:var(--color-success);border-radius:var(--radius-full);background-color:#22c55e26;align-items:center;gap:4px;padding:1px 6px;font-size:10px;font-weight:600;display:inline-flex}.live-badge:before{content:"";background-color:var(--color-success);border-radius:50%;width:5px;height:5px;animation:1.5s infinite pulse}.chat-view{background-color:var(--bg-canvas);flex-direction:column;flex:1;display:flex;overflow:hidden}.chat-header{background-color:var(--bg-canvas);border-bottom:1px solid var(--border-subtle);justify-content:space-between;align-items:center;gap:16px;padding:12px 24px;display:flex}.chat-header-info{flex-direction:column;gap:2px;display:flex;overflow:hidden}.chat-title{color:var(--text-primary);font-size:16px;font-weight:600}.chat-meta{color:var(--text-muted);align-items:center;gap:12px;font-size:12px;display:flex}.chat-meta-item{align-items:center;gap:4px;display:flex}.chat-timeline{flex-direction:column;flex:1;gap:24px;padding:24px;display:flex;overflow-y:auto}.turn-group{flex-direction:column;gap:16px;display:flex}.user-message{background-color:var(--bg-surface-elevated);border:1px solid var(--border-default);border-radius:var(--radius-lg) var(--radius-lg) 2px var(--radius-lg);max-width:80%;color:var(--text-primary);align-self:flex-end;padding:12px 16px;font-size:14px}.assistant-message{flex-direction:column;align-self:flex-start;gap:12px;width:100%;display:flex}.thinking-accordion{background-color:var(--thinking-bg);border:1px solid var(--thinking-border);border-radius:var(--radius-md);font-size:12px;overflow:hidden}.thinking-summary{cursor:pointer;color:var(--thinking-text-summary);-webkit-user-select:none;user-select:none;justify-content:space-between;align-items:center;padding:8px 12px;font-weight:500;display:flex}.thinking-content{border-top:1px solid var(--thinking-border);color:var(--thinking-text-content);font-family:var(--font-mono);white-space:pre-wrap;max-height:250px;padding:10px 12px;font-size:11.5px;line-height:1.6;overflow-y:auto}.tool-call-card{background-color:var(--bg-surface);border:1px solid var(--border-default);border-radius:var(--radius-md);font-size:12px;overflow:hidden}.tool-call-header{background-color:var(--bg-surface-elevated);justify-content:space-between;align-items:center;padding:8px 12px;font-weight:500;display:flex}.tool-name-badge{font-family:var(--font-mono);color:var(--tool-name-color,var(--text-accent));align-items:center;gap:6px;font-weight:600;display:flex}.tool-status-pill{border-radius:var(--radius-full);text-transform:capitalize;padding:2px 8px;font-size:11px}.tool-status-pill.completed{background-color:var(--color-success-light);color:var(--color-success)}.tool-status-pill.running{background-color:var(--color-warning-light);color:var(--color-warning)}.tool-status-pill.pending-confirmation{background-color:var(--pending-pill-bg);color:var(--pending-pill-color)}.tool-call-body{font-family:var(--font-mono);color:var(--text-secondary);border-top:1px solid var(--border-subtle);background-color:var(--bg-surface);white-space:pre-wrap;max-height:200px;padding:10px 12px;font-size:12px;overflow-y:auto}.tool-confirm-bar{background-color:#ef44441a;border-top:1px solid #ef44444d;justify-content:space-between;align-items:center;padding:8px 12px;display:flex}.error-banner{background-color:var(--color-danger-light);border-radius:var(--radius-md);border:1px solid #ef444466;justify-content:space-between;align-items:center;gap:16px;padding:12px 16px;display:flex}.error-banner-text{color:var(--error-banner-text);font-size:13px}.markdown-body{color:var(--text-primary);font-size:14px;line-height:1.6}.markdown-body p{margin-bottom:12px}.markdown-body pre{background-color:var(--code-pre-bg);border:1px solid var(--code-pre-border);border-radius:var(--radius-md);font-family:var(--font-mono);margin-bottom:12px;padding:12px 16px;font-size:12.5px;overflow-x:auto}.markdown-body code{font-family:var(--font-mono);background-color:var(--code-inline-bg);border-radius:var(--radius-sm);padding:2px 6px;font-size:12.5px}.markdown-body pre code{background-color:#0000;padding:0}.composer{background-color:var(--bg-canvas);border-top:1px solid var(--border-subtle);padding:16px 24px}.composer-box{background-color:var(--bg-surface);border:1px solid var(--border-default);border-radius:var(--radius-lg);flex-direction:column;gap:8px;padding:12px;transition:border-color .2s;display:flex;position:relative}.composer-box:focus-within{border-color:var(--border-focused);box-shadow:0 0 0 1px var(--border-focused)}.composer-textarea{width:100%;color:var(--text-primary);font-family:var(--font-sans);resize:none;background:0 0;border:none;outline:none;min-height:56px;max-height:200px;font-size:14px;line-height:1.5}.composer-footer{border-top:1px solid var(--border-subtle);justify-content:space-between;align-items:center;padding-top:8px;display:flex}.composer-tools{align-items:center;gap:12px;display:flex}.composer-action-btn{border-radius:var(--radius-md);cursor:pointer;align-items:center;gap:6px;padding:6px 14px;font-size:13px;font-weight:500;display:flex}.completions-menu{background-color:var(--bg-surface-elevated);border:1px solid var(--border-focused);border-radius:var(--radius-md);width:100%;box-shadow:var(--shadow-lg);z-index:50;max-height:220px;margin-bottom:8px;position:absolute;bottom:100%;left:0;overflow-y:auto}.completion-item{cursor:pointer;justify-content:space-between;align-items:center;padding:8px 12px;transition:background .15s;display:flex}.completion-item:hover,.completion-item.selected{background-color:var(--color-primary-light)}.completion-name{font-family:var(--font-mono);color:var(--text-accent);font-weight:600}.completion-desc{color:var(--text-muted);font-size:12px}.modal-backdrop{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:100;background-color:#000000b3;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal-card{background-color:var(--bg-surface);border:1px solid var(--border-default);border-radius:var(--radius-lg);width:480px;max-width:90vw;box-shadow:var(--shadow-lg);flex-direction:column;display:flex;overflow:hidden}.modal-header{border-bottom:1px solid var(--border-subtle);justify-content:space-between;align-items:center;padding:16px 20px;display:flex}.modal-title{font-size:16px;font-weight:600}.modal-body{flex-direction:column;gap:16px;padding:20px;display:flex}.modal-footer{background-color:var(--bg-surface-elevated);border-top:1px solid var(--border-subtle);justify-content:flex-end;gap:10px;padding:12px 20px;display:flex}.form-group{flex-direction:column;gap:6px;display:flex}.form-label{color:var(--text-secondary);font-size:12px;font-weight:500}.form-input{background-color:var(--bg-canvas);border:1px solid var(--border-default);color:var(--text-primary);border-radius:var(--radius-md);outline:none;padding:8px 12px;font-size:13px}.form-input:focus{border-color:var(--border-focused)}.inspector-panel{background-color:var(--bg-sidebar);border-left:1px solid var(--border-subtle);flex-direction:column;width:300px;display:flex}.inspector-tabs{border-bottom:1px solid var(--border-subtle);display:flex}.inspector-tab{text-align:center;color:var(--text-muted);cursor:pointer;border-bottom:2px solid #0000;flex:1;padding:10px;font-size:12px;font-weight:500}.inspector-tab.active{color:var(--text-primary);border-bottom-color:var(--color-primary);background-color:var(--bg-surface)}.inspector-content{flex-direction:column;flex:1;gap:12px;padding:16px;display:flex;overflow-y:auto}.skill-card{background-color:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius-md);padding:10px 12px}.skill-header{justify-content:space-between;align-items:center;margin-bottom:4px;display:flex}.skill-name{font-family:var(--font-mono);color:var(--text-accent);font-size:13px;font-weight:600}.skill-desc{color:var(--text-muted);font-size:12px}@keyframes pulse{0%{opacity:1}50%{opacity:.4}to{opacity:1}}
|
package/dist/index.html
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
|
+
<title>Agent Host Protocol UI</title>
|
|
7
|
+
<meta name="description" content="Client-side UI for services running the Agent Host Protocol (AHP), inspired by VS Code Agents view." />
|
|
8
|
+
<link rel="icon" type="image/svg+xml" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%236366f1'><path d='M12 2a2 2 0 0 1 2 2c0 .74-.4 1.38-1 1.72V7h2a7 7 0 0 1 7 7v1a1 1 0 0 1-1 1h-1v1a3 3 0 0 1-3 3H7a3 3 0 0 1-3-3v-1H3a1 1 0 0 1-1-1v-1a7 7 0 0 1 7-7h2V5.72A2 2 0 0 1 10 4a2 2 0 0 1 2-2m-3 9a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3m6 0a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3'/></svg>" />
|
|
9
|
+
<script>
|
|
10
|
+
(function() {
|
|
11
|
+
try {
|
|
12
|
+
const pref = localStorage.getItem('ahp_ui_theme_preference');
|
|
13
|
+
if (pref === 'light' || pref === 'dark') {
|
|
14
|
+
document.documentElement.setAttribute('data-theme', pref);
|
|
15
|
+
} else if (window.matchMedia && window.matchMedia('(prefers-color-scheme: light)').matches) {
|
|
16
|
+
document.documentElement.setAttribute('data-theme', 'light');
|
|
17
|
+
} else {
|
|
18
|
+
document.documentElement.setAttribute('data-theme', 'dark');
|
|
19
|
+
}
|
|
20
|
+
} catch (e) {
|
|
21
|
+
document.documentElement.setAttribute('data-theme', 'dark');
|
|
22
|
+
}
|
|
23
|
+
})();
|
|
24
|
+
</script>
|
|
25
|
+
<script type="module" crossorigin src="/assets/index-B3CN86Cx.js"></script>
|
|
26
|
+
<link rel="stylesheet" crossorigin href="/assets/index-BS3hjOwP.css">
|
|
27
|
+
</head>
|
|
28
|
+
<body>
|
|
29
|
+
<div id="root"></div>
|
|
30
|
+
</body>
|
|
31
|
+
</html>
|
package/dist-path.d.ts
ADDED
package/dist-path.js
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { fileURLToPath } from "node:url";
|
|
3
|
+
|
|
4
|
+
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Absolute directory path to the built static assets of agent-host-protocol-ui
|
|
8
|
+
*/
|
|
9
|
+
export const distDir = path.resolve(__dirname, "dist");
|
|
10
|
+
|
|
11
|
+
export default distDir;
|
package/package.json
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "agent-host-protocol-ui",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Client-side web UI for the Agent Host Protocol (AHP) inspired by VS Code Agents view",
|
|
5
|
+
"author": "Yusuke Tsutsumi <yusuke@tsutsumi.io>",
|
|
6
|
+
"license": "Apache-2.0",
|
|
7
|
+
"type": "module",
|
|
8
|
+
"main": "./dist-path.js",
|
|
9
|
+
"types": "./dist-path.d.ts",
|
|
10
|
+
"bin": {
|
|
11
|
+
"agent-host-protocol-ui": "bin/cli.js"
|
|
12
|
+
},
|
|
13
|
+
"files": [
|
|
14
|
+
"dist",
|
|
15
|
+
"bin",
|
|
16
|
+
"dist-path.js",
|
|
17
|
+
"dist-path.d.ts"
|
|
18
|
+
],
|
|
19
|
+
"repository": {
|
|
20
|
+
"type": "git",
|
|
21
|
+
"url": "git+https://github.com/toumorokoshi/agent-host-protocol-ui.git"
|
|
22
|
+
},
|
|
23
|
+
"bugs": {
|
|
24
|
+
"url": "https://github.com/toumorokoshi/agent-host-protocol-ui/issues"
|
|
25
|
+
},
|
|
26
|
+
"homepage": "https://github.com/toumorokoshi/agent-host-protocol-ui#readme",
|
|
27
|
+
"keywords": [
|
|
28
|
+
"agent-host-protocol",
|
|
29
|
+
"ahp",
|
|
30
|
+
"ai-agents",
|
|
31
|
+
"vs-code",
|
|
32
|
+
"ui",
|
|
33
|
+
"web-ui",
|
|
34
|
+
"agent-ui",
|
|
35
|
+
"client"
|
|
36
|
+
],
|
|
37
|
+
"scripts": {
|
|
38
|
+
"dev": "vite",
|
|
39
|
+
"build": "tsc && vite build",
|
|
40
|
+
"preview": "vite preview",
|
|
41
|
+
"typecheck": "tsc --noEmit",
|
|
42
|
+
"lint": "biome check .",
|
|
43
|
+
"format": "biome check --write .",
|
|
44
|
+
"test": "node --test",
|
|
45
|
+
"prepublishOnly": "npm run build && npm run test"
|
|
46
|
+
},
|
|
47
|
+
"devDependencies": {
|
|
48
|
+
"@biomejs/biome": "^2.5.15",
|
|
49
|
+
"@types/dompurify": "^3.0.5",
|
|
50
|
+
"@types/node": "^26.6.4",
|
|
51
|
+
"@types/react": "^19.3.0",
|
|
52
|
+
"@types/react-dom": "^19.3.0",
|
|
53
|
+
"@vitejs/plugin-react": "^6.1.1",
|
|
54
|
+
"typescript": "^7.0.2",
|
|
55
|
+
"vite": "^8.3.2"
|
|
56
|
+
},
|
|
57
|
+
"dependencies": {
|
|
58
|
+
"@microsoft/agent-host-protocol": "^1.0.0",
|
|
59
|
+
"dompurify": "^3.4.16",
|
|
60
|
+
"marked": "^18.0.14",
|
|
61
|
+
"react": "^19.3.0",
|
|
62
|
+
"react-dom": "^19.3.0"
|
|
63
|
+
}
|
|
64
|
+
}
|