@adonis-agora/agent 0.20.0 → 0.21.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/CHANGELOG.md +10 -0
- package/README.md +39 -1
- package/dist/assets/spa/assets/index-BYLm0nq8.css +1 -0
- package/dist/assets/spa/assets/index-CkOAJYbh.js +9 -0
- package/dist/assets/spa/index.html +13 -0
- package/dist/configure.d.ts +11 -6
- package/dist/configure.d.ts.map +1 -1
- package/dist/configure.js +12 -6
- package/dist/configure.js.map +1 -1
- package/dist/providers/dashboard_provider.d.ts +55 -0
- package/dist/providers/dashboard_provider.d.ts.map +1 -0
- package/dist/providers/dashboard_provider.js +152 -0
- package/dist/providers/dashboard_provider.js.map +1 -0
- package/dist/src/dashboard/define_config.d.ts +75 -0
- package/dist/src/dashboard/define_config.d.ts.map +1 -0
- package/dist/src/dashboard/define_config.js +56 -0
- package/dist/src/dashboard/define_config.js.map +1 -0
- package/dist/src/dashboard/gate.d.ts +33 -0
- package/dist/src/dashboard/gate.d.ts.map +1 -0
- package/dist/src/dashboard/gate.js +52 -0
- package/dist/src/dashboard/gate.js.map +1 -0
- package/dist/src/dashboard/index.d.ts +20 -0
- package/dist/src/dashboard/index.d.ts.map +1 -0
- package/dist/src/dashboard/index.js +20 -0
- package/dist/src/dashboard/index.js.map +1 -0
- package/dist/src/dashboard/paths.d.ts +40 -0
- package/dist/src/dashboard/paths.d.ts.map +1 -0
- package/dist/src/dashboard/paths.js +99 -0
- package/dist/src/dashboard/paths.js.map +1 -0
- package/dist/src/index.d.ts +1 -1
- package/dist/src/index.js +1 -1
- package/dist/stubs/config/agent.stub +7 -0
- package/package.json +28 -18
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
# @adonis-agora/agent
|
|
2
2
|
|
|
3
|
+
## 0.21.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [`58783fb`](https://github.com/DavideCarvalho/adonis-agora-agent/commit/58783fb433fd3c641dc9a42b80eaba09f2c9a62b) Thanks [@DavideCarvalho](https://github.com/DavideCarvalho)! - `@adonis-agora/agent` now ships its own governance dashboard — `node ace configure @adonis-agora/agent` registers an embedded `dashboard_provider` that serves the `@adonis-agora/agent-dashboard` SPA straight out of `@adonis-agora/agent`'s own build (`../dashboard/dist/spa` is copied into `dist/assets/spa` at build time), so a new app needs no separate install or provider registration to get the console. Configure it via the same optional `config('agent').dashboard` block as before.
|
|
8
|
+
|
|
9
|
+
This is purely additive: the standalone `@adonis-agora/agent-dashboard` package and its own `agent_dashboard_provider` keep working exactly as before for apps that already install and register it directly — both providers now share one implementation (`@adonis-agora/agent/dashboard`, a new subpath export) so their behavior is byte-for-byte identical. Register only one of the two in a given app; mounting both at the same path throws AdonisJS's "duplicate route" error at boot.
|
|
10
|
+
|
|
11
|
+
`@adonis-agora/agent-dashboard`'s peer dependency floor on `@adonis-agora/agent` moves to `>=0.21.0` (the version that introduces the shared `@adonis-agora/agent/dashboard` export its provider now imports from); already-published `agent-dashboard` versions are unaffected.
|
|
12
|
+
|
|
3
13
|
## 0.20.0
|
|
4
14
|
|
|
5
15
|
### Minor Changes
|
package/README.md
CHANGED
|
@@ -187,6 +187,44 @@ const { text } = await runAgentLoop(
|
|
|
187
187
|
)
|
|
188
188
|
```
|
|
189
189
|
|
|
190
|
+
## Dashboard
|
|
191
|
+
|
|
192
|
+
`node ace configure @adonis-agora/agent` also registers an embedded governance console — the
|
|
193
|
+
`@adonis-agora/agent-dashboard` React SPA, bundled straight into `@adonis-agora/agent`'s own `dist/`
|
|
194
|
+
at build time. **No separate install, no separate provider registration.** It mounts at
|
|
195
|
+
`<path>/dashboard` (default `/agent/dashboard`) once `governanceAuthorize` is configured — every panel
|
|
196
|
+
but Quota reads the cross-actor `/agent/governance/*` routes, and those don't exist without that gate
|
|
197
|
+
either, so the console refuses to mount (with a boot warning explaining why) rather than load and 404
|
|
198
|
+
on every panel:
|
|
199
|
+
|
|
200
|
+
```ts
|
|
201
|
+
// config/agent.ts
|
|
202
|
+
export default defineConfig({
|
|
203
|
+
// ...
|
|
204
|
+
governanceAuthorize: (actor) => actor.roles?.includes('ADMIN') ?? false,
|
|
205
|
+
// dashboard: { enabled: true, path: '/agent/dashboard', authorize: (actor) => actor.roles?.includes('ADMIN') ?? false },
|
|
206
|
+
})
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
See [Governance dashboard](./docs/governance/dashboard.mdx) for the full config shape.
|
|
210
|
+
|
|
211
|
+
<details>
|
|
212
|
+
<summary>Standalone install (still supported)</summary>
|
|
213
|
+
|
|
214
|
+
`@adonis-agora/agent-dashboard` also ships as its own installable package with its own provider, for
|
|
215
|
+
apps that want its independent release cadence or that configured it before the embedded provider
|
|
216
|
+
existed:
|
|
217
|
+
|
|
218
|
+
```sh
|
|
219
|
+
pnpm add @adonis-agora/agent-dashboard
|
|
220
|
+
node ace add @adonis-agora/agent-dashboard
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
It reads the SAME `config('agent').dashboard` block. Register only ONE of the two providers — mounting
|
|
224
|
+
both at the same path throws AdonisJS's "duplicate route" error at boot.
|
|
225
|
+
|
|
226
|
+
</details>
|
|
227
|
+
|
|
190
228
|
## Diagnostics
|
|
191
229
|
|
|
192
230
|
Runtime events flow through `@adonis-agora/agent/telescope`'s watcher when
|
|
@@ -203,7 +241,7 @@ or a real model provider.
|
|
|
203
241
|
|
|
204
242
|
- Repo: https://github.com/DavideCarvalho/adonis-agent
|
|
205
243
|
- Changelog: https://github.com/DavideCarvalho/adonis-agent/blob/master/packages/adonis/CHANGELOG.md
|
|
206
|
-
- Companion package: [`@adonis-agora/agent-dashboard`](https://github.com/DavideCarvalho/adonis-agent/tree/master/packages/dashboard)
|
|
244
|
+
- Companion package (also embedded automatically, see [Dashboard](#dashboard) above): [`@adonis-agora/agent-dashboard`](https://github.com/DavideCarvalho/adonis-agent/tree/master/packages/dashboard)
|
|
207
245
|
|
|
208
246
|
## License
|
|
209
247
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
:root{--agora-primary: #5a45ff;--agora-primary-soft: hsl(250 74% 51% / .14);--agora-accent: #06b6d4;--bg: hsl(240 10% 6.5%);--panel: hsl(240 9% 9%);--panel-2: hsl(240 9% 11%);--line: hsl(40 30% 82% / .1);--line-soft: hsl(40 30% 82% / .05);--text: hsl(40 28% 92%);--muted: hsl(40 12% 66%);--primary: var(--agora-primary);--primary-fg: hsl(40 40% 96%);--good: #34d399;--warn: #fbbf24;--bad: #f87171;--info: var(--agora-accent)}:root[data-theme=light],:root:not([data-theme=dark]){color-scheme:light}:root[data-theme=dark]{color-scheme:dark}@media(prefers-color-scheme:light){:root:not([data-theme=dark]){--bg: hsl(40 30% 96%);--panel: hsl(40 28% 98%);--panel-2: hsl(40 24% 95%);--line: hsl(240 10% 14% / .12);--line-soft: hsl(240 10% 14% / .06);--text: hsl(240 14% 12%);--muted: hsl(240 6% 42%);--primary-fg: hsl(40 40% 97%)}}:root[data-theme=light]{--bg: hsl(40 30% 96%);--panel: hsl(40 28% 98%);--panel-2: hsl(40 24% 95%);--line: hsl(240 10% 14% / .12);--line-soft: hsl(240 10% 14% / .06);--text: hsl(240 14% 12%);--muted: hsl(240 6% 42%);--primary-fg: hsl(40 40% 97%)}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,sans-serif;-webkit-font-smoothing:antialiased}.mono{font-family:ui-monospace,JetBrains Mono,SF Mono,Menlo,monospace}.tnum{font-variant-numeric:tabular-nums}.app-bg{position:fixed;inset:0;z-index:0;pointer-events:none;background-image:radial-gradient(900px 420px at 82% -10%,hsl(250 74% 51% / .12),transparent 70%),radial-gradient(700px 360px at 8% -12%,hsl(190 90% 50% / .06),transparent 70%);opacity:.9}.shell{position:relative;z-index:1;max-width:1180px;margin:0 auto;padding:28px 24px 64px}.masthead{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:22px}.brand{display:flex;align-items:center;gap:12px}.brand-mark{width:34px;height:34px;border-radius:9px;display:grid;place-items:center;color:var(--primary-fg);background:linear-gradient(140deg,var(--agora-primary),#8b78ff);box-shadow:0 6px 20px #4426df59;font-weight:700}.brand h1{font-size:17px;margin:0;letter-spacing:-.01em}.brand p{margin:1px 0 0;font-size:12px;color:var(--muted)}.tabs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:20px}.tab{appearance:none;border:1px solid var(--line);background:var(--panel);color:var(--muted);border-radius:999px;padding:7px 14px;font-size:13px;cursor:pointer;display:inline-flex;align-items:center;gap:7px;transition:color .15s,border-color .15s,background .15s}.tab:hover{color:var(--text)}.tab[aria-selected=true]{color:var(--primary-fg);background:var(--primary);border-color:var(--primary)}.controls{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.range-input{background:var(--panel);border:1px solid var(--line);color:var(--text);border-radius:8px;padding:6px 9px;font-size:12px;font-family:inherit}.icon-btn{appearance:none;border:1px solid var(--line);background:var(--panel);color:var(--muted);border-radius:8px;width:34px;height:32px;cursor:pointer;display:grid;place-items:center}.icon-btn:hover{color:var(--text)}.panel{background:linear-gradient(180deg,var(--panel-2),var(--panel));border:1px solid var(--line);border-radius:14px;padding:18px}.grid{display:grid;gap:16px}.grid.cols-3{grid-template-columns:repeat(3,1fr)}.grid.cols-2{grid-template-columns:repeat(2,1fr)}.grid.stat-4{grid-template-columns:repeat(4,1fr)}@media(max-width:900px){.grid.cols-3,.grid.cols-2,.grid.stat-4{grid-template-columns:repeat(2,1fr)}}@media(max-width:560px){.grid.cols-3,.grid.cols-2,.grid.stat-4{grid-template-columns:1fr}}.stat .label{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin-bottom:8px}.stat .value{font-size:24px;font-weight:600;letter-spacing:-.02em}.stat .sub{font-size:12px;color:var(--muted);margin-top:4px}.section-title{display:flex;align-items:center;justify-content:space-between;margin:0 0 14px;gap:12px}.section-title h2{font-size:14px;margin:0;letter-spacing:.01em}.section-title .hint{font-size:12px;color:var(--muted)}.table{width:100%;border-collapse:collapse;font-size:13px}.table th{text-align:left;font-weight:500;font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);padding:0 10px 10px;border-bottom:1px solid var(--line)}.table td{padding:10px;border-bottom:1px solid var(--line-soft);vertical-align:middle}.table tr:last-child td{border-bottom:none}.table .num{text-align:right}.table-wrap{overflow-x:auto}.bar{height:6px;border-radius:999px;background:var(--line);overflow:hidden;min-width:60px}.bar>span{display:block;height:100%;border-radius:999px;background:var(--primary)}.legend{display:flex;flex-direction:column;gap:8px;font-size:12px}.legend .row{display:flex;align-items:center;gap:8px}.swatch{width:10px;height:10px;border-radius:3px;flex:none}.legend .name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pill{display:inline-flex;align-items:center;gap:6px;padding:2px 9px;border-radius:999px;font-size:11px;border:1px solid var(--line);color:var(--muted)}.dot{width:7px;height:7px;border-radius:999px;background:currentColor;display:inline-block}.s-completed,.s-ok,.s-success,.s-approved{color:var(--good)}.s-running,.s-pending,.s-pending_approval,.s-awaiting_approval{color:var(--info)}.s-failed,.s-error,.s-rejected,.s-forbidden{color:var(--bad)}.s-cancelled,.s-canceled{color:var(--warn)}.btn{appearance:none;border:1px solid var(--line);background:var(--panel);color:var(--text);border-radius:8px;padding:6px 12px;font-size:12px;font-family:inherit;cursor:pointer;transition:color .15s,border-color .15s,background .15s}.btn:hover:not(:disabled){border-color:var(--muted)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.approve{color:var(--good);border-color:color-mix(in srgb,var(--good) 40%,var(--line))}.btn.reject{color:var(--bad);border-color:color-mix(in srgb,var(--bad) 40%,var(--line))}.rowbtns{display:inline-flex;gap:6px;justify-content:flex-end}.table tr.clickable{cursor:pointer}.table tr.clickable:hover td{background:var(--panel-2)}.th-sort{appearance:none;background:none;border:none;padding:0;margin:0;font:inherit;color:inherit;text-transform:inherit;letter-spacing:inherit;cursor:pointer}.th-sort:hover{color:var(--text)}.warnnum{color:var(--warn)}.msg{border:1px solid var(--line);border-radius:10px;padding:10px 12px;background:var(--panel-2)}.msg-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:6px}.msg-body{font-size:13px;white-space:pre-wrap;word-break:break-word}.empty{color:var(--muted);font-size:13px;text-align:center;padding:26px 10px}.err{color:var(--bad);font-size:13px;padding:20px 10px;text-align:center}.skeleton{border-radius:8px;background:linear-gradient(90deg,var(--line-soft),var(--line),var(--line-soft));background-size:200% 100%;animation:shimmer 1.3s ease-in-out infinite;height:14px}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.stack{display:flex;flex-direction:column;gap:16px}.muted{color:var(--muted)}.right{text-align:right}.chart-svg{width:100%;height:auto;display:block}.foot{margin-top:26px;font-size:11px;color:var(--muted);text-align:center}
|