aimeat 1.9.5 → 1.10.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 +47 -10
- package/dist/locales/en.json +14 -2
- package/dist/locales/fi.json +14 -2
- package/dist/public/views/profile/agents/agent-card.js +5 -2
- package/dist/public/views/profile/agents/tab-activity.js +17 -3
- package/dist/public/views/profile/agents/tab-integration.js +48 -5
- package/dist/public/views/profile/agents-capabilities-subtab.js +14 -7
- package/dist/src/cli/connect/auth.d.ts.map +1 -1
- package/dist/src/cli/connect/auth.js +20 -28
- package/dist/src/cli/connect/auth.js.map +1 -1
- package/dist/src/cli/connect/config.d.ts.map +1 -1
- package/dist/src/cli/connect/config.js.map +1 -1
- package/dist/src/cli/connect/mcp/poller.d.ts +8 -2
- package/dist/src/cli/connect/mcp/poller.d.ts.map +1 -1
- package/dist/src/cli/connect/mcp/poller.js +77 -12
- package/dist/src/cli/connect/mcp/poller.js.map +1 -1
- package/dist/src/cli/connect/mcp/tools/agent-caps.js +4 -4
- package/dist/src/cli/connect/mcp/tools/agent-caps.js.map +1 -1
- package/dist/src/cli/connect/mcp/wakeup.d.ts.map +1 -1
- package/dist/src/cli/connect/mcp/wakeup.js +12 -0
- package/dist/src/cli/connect/mcp/wakeup.js.map +1 -1
- package/dist/src/cli/connect/onboarding-prompt.d.ts +19 -0
- package/dist/src/cli/connect/onboarding-prompt.d.ts.map +1 -0
- package/dist/src/cli/connect/onboarding-prompt.js +58 -0
- package/dist/src/cli/connect/onboarding-prompt.js.map +1 -0
- package/dist/src/cli/connect/skill-bundle.d.ts.map +1 -1
- package/dist/src/cli/connect/skill-bundle.js +30 -19
- package/dist/src/cli/connect/skill-bundle.js.map +1 -1
- package/dist/src/cli/connect/tool-call.js +2 -2
- package/dist/src/cli/connect/tool-call.js.map +1 -1
- package/dist/src/middleware/agent-me-alias.d.ts +26 -0
- package/dist/src/middleware/agent-me-alias.d.ts.map +1 -0
- package/dist/src/middleware/agent-me-alias.js +29 -0
- package/dist/src/middleware/agent-me-alias.js.map +1 -0
- package/dist/src/models/agent-onboarding-schemas.d.ts +7 -2
- package/dist/src/models/agent-onboarding-schemas.d.ts.map +1 -1
- package/dist/src/models/agent-onboarding-schemas.js +13 -2
- package/dist/src/models/agent-onboarding-schemas.js.map +1 -1
- package/dist/src/routes/agent-capabilities.d.ts +2 -0
- package/dist/src/routes/agent-capabilities.d.ts.map +1 -1
- package/dist/src/routes/agent-capabilities.js +6 -6
- package/dist/src/routes/agent-capabilities.js.map +1 -1
- package/dist/src/routes/agent-onboarding.d.ts +5 -0
- package/dist/src/routes/agent-onboarding.d.ts.map +1 -1
- package/dist/src/routes/agent-onboarding.js +69 -2
- package/dist/src/routes/agent-onboarding.js.map +1 -1
- package/dist/src/routes/agent-telemetry.d.ts +3 -0
- package/dist/src/routes/agent-telemetry.d.ts.map +1 -1
- package/dist/src/routes/agent-telemetry.js +5 -0
- package/dist/src/routes/agent-telemetry.js.map +1 -1
- package/dist/src/routes/agents.d.ts.map +1 -1
- package/dist/src/routes/agents.js +1 -0
- package/dist/src/routes/agents.js.map +1 -1
- package/dist/src/routes/apps.d.ts.map +1 -1
- package/dist/src/routes/apps.js +5 -0
- package/dist/src/routes/apps.js.map +1 -1
- package/dist/src/routes/libs.d.ts +1 -0
- package/dist/src/routes/libs.d.ts.map +1 -1
- package/dist/src/routes/libs.js +4 -3
- package/dist/src/routes/libs.js.map +1 -1
- package/dist/src/routes/prompts.d.ts.map +1 -1
- package/dist/src/routes/prompts.js +0 -1
- package/dist/src/routes/prompts.js.map +1 -1
- package/dist/src/server.d.ts.map +1 -1
- package/dist/src/server.js +9 -1
- package/dist/src/server.js.map +1 -1
- package/dist/src/services/activity-recorder.d.ts +18 -1
- package/dist/src/services/activity-recorder.d.ts.map +1 -1
- package/dist/src/services/activity-recorder.js +42 -0
- package/dist/src/services/activity-recorder.js.map +1 -1
- package/dist/src/services/onboarding-validator.d.ts +3 -0
- package/dist/src/services/onboarding-validator.d.ts.map +1 -1
- package/dist/src/services/onboarding-validator.js +75 -0
- package/dist/src/services/onboarding-validator.js.map +1 -1
- package/dist/src/services/skill-bundle/generator.js +27 -4
- package/dist/src/services/skill-bundle/generator.js.map +1 -1
- package/dist/src/storage/interface.d.ts +2 -0
- package/dist/src/storage/interface.d.ts.map +1 -1
- package/dist/src/storage/providers/mongodb/index.d.ts +4 -0
- package/dist/src/storage/providers/mongodb/index.d.ts.map +1 -1
- package/dist/src/storage/providers/mongodb/index.js +22 -3
- package/dist/src/storage/providers/mongodb/index.js.map +1 -1
- package/dist/src/storage/providers/sqlite/index.d.ts.map +1 -1
- package/dist/src/storage/providers/sqlite/index.js +4 -2
- package/dist/src/storage/providers/sqlite/index.js.map +1 -1
- package/dist/src/storage/providers/sqlite/schema.d.ts.map +1 -1
- package/dist/src/storage/providers/sqlite/schema.js +1 -0
- package/dist/src/storage/providers/sqlite/schema.js.map +1 -1
- package/package.json +1 -1
- package/prisma/schema.prisma +1 -0
package/README.md
CHANGED
|
@@ -26,12 +26,12 @@ An AI agent connects to an AIMEAT node and reaches full operational readiness au
|
|
|
26
26
|
|
|
27
27
|
[](https://youtu.be/ncBX9BaoAWM)
|
|
28
28
|
|
|
29
|
-
`0:45` Device auth with automatic polling (RFC 8628) | `2:10` Skill bundle download + boot sequence | `3:40`
|
|
29
|
+
`0:45` Device auth with automatic polling (RFC 8628) | `2:10` Skill bundle download + boot sequence | `3:40` Hello Integration | `4:30` Test task proposed, executed, completed | `5:20` Commands + config registered, agent operational
|
|
30
30
|
|
|
31
31
|
<p align="center">
|
|
32
|
-
<img src="assets/screenshots/agent_hello_integration_finished.png" alt="Agent Hello Integration completed --
|
|
32
|
+
<img src="assets/screenshots/agent_hello_integration_finished.png" alt="Agent Hello Integration completed -- all required steps passed, capabilities reported, commands registered" width="70%" />
|
|
33
33
|
</p>
|
|
34
|
-
<p align="center"><em>After Hello Integration: agent detail view showing connection status, platform, skill bundle version, readiness (all
|
|
34
|
+
<p align="center"><em>After Hello Integration: agent detail view showing connection status, platform, skill bundle version, readiness (all required steps passed), identity, and delivery log. Since 1.10.0 the system also verifies that the agent has published its slash command catalogue and runtime config before declaring it complete.</em></p>
|
|
35
35
|
|
|
36
36
|
---
|
|
37
37
|
|
|
@@ -132,7 +132,22 @@ On top of the protocol sits the application layer. Apps are self-contained HTML
|
|
|
132
132
|
|
|
133
133
|
<img src="assets/screenshots/profile-agents.png" alt="Agent connection prompt" width="600" />
|
|
134
134
|
|
|
135
|
-
|
|
135
|
+
There are two ways to connect:
|
|
136
|
+
|
|
137
|
+
**1. `aimeat connect` CLI** (recommended, added in 1.10.0). Any runtime that can run a shell command can attach to a node in seconds:
|
|
138
|
+
|
|
139
|
+
```bash
|
|
140
|
+
npx aimeat connect --url https://your-node --owner your-handle [--agent name]
|
|
141
|
+
# you approve from your profile -> Agents tab
|
|
142
|
+
# the CLI stores the token, downloads the runtime-specific skill bundle,
|
|
143
|
+
# and prints a paste-ready Hello Integration instruction for your agent
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
For MCP-capable runtimes (Claude Desktop, MCP-aware IDEs), run `aimeat connect serve` afterwards to attach the AIMEAT toolset over stdio. For CLI-only runtimes that cannot do stdio, every MCP tool is also reachable via `aimeat connect call <tool-name> --json '<input>'`.
|
|
147
|
+
|
|
148
|
+
**2. Copy the prompt from your profile.** If you do not want to install a CLI, your profile -> Agents tab still produces a paste-ready prompt with the device-auth flow baked in -- give it to any AI agent, the agent calls one endpoint, you approve, and it is connected with its own identity and scoped permissions.
|
|
149
|
+
|
|
150
|
+
Claude Pro, ChatGPT Plus, and other MCP-capable AIs connect directly as MCP clients. OpenClaw, Hermes, Claude Code, and Cursor all work. Three scope presets (readonly, standard, full) control what each agent can access.
|
|
136
151
|
|
|
137
152
|
### Build apps with AI
|
|
138
153
|
|
|
@@ -231,6 +246,19 @@ On the left: Telegram chat with the agent. The user asks it to build things ("bu
|
|
|
231
246
|
|
|
232
247
|
The app prompts the agent with the current world state so it can make informed decisions about what to build and where. You edit the world manually (drag objects, place shapes from the toolbar) while the agent builds alongside you. Everything syncs through AIMEAT memory.
|
|
233
248
|
|
|
249
|
+
### Example: Comicland, an AI comic community (full app, built from VS Code)
|
|
250
|
+
|
|
251
|
+
Comicland is a community for AI-generated comics built end-to-end from VS Code with Claude Code talking directly to a live AIMEAT node. No CI, no separate deploy step -- each iteration is `aimeat_app_publish` over MCP and the new version is live on the node within seconds. The whole 5-layer AIMEAT stack (extension, cortex, app) was scaffolded by AI, then evolved through dozens of feature passes in the same workflow.
|
|
252
|
+
|
|
253
|
+
<p align="center">
|
|
254
|
+
<img src="assets/screenshots/comic-land-series-view.png" alt="Comicland series detail with episodes, follow, tip, and owner-only publish/unpublish controls" width="48%" />
|
|
255
|
+
<img src="assets/screenshots/comic-land-creation-pipeline.png" alt="Comicland creation pipeline: AI interview -> script JSON -> per-page image prompts -> overlay editor -> publish" width="48%" />
|
|
256
|
+
</p>
|
|
257
|
+
|
|
258
|
+
What's in there: a prompt-driven creation pipeline (AI interview produces a script, the app generates per-page Nano-Banana-style image prompts with character/environment references, the user pastes the resulting images back); a 3-step episode wizard with page or panel images; a drag-and-drop speech-bubble overlay editor with language-keyed translations; multi-tenant reading where any logged-in user can read another author's published series from their own GHII namespace; characters and environments with multiple reference images and a chosen showcase; follow/tip/comment social actions; per-series public/private toggle and per-episode draft/published toggle so authors can prepare quietly and roll out when ready; full FI/EN i18n. All of it stored in AIMEAT memory + storage with proper public/private visibility, no Comicland-specific backend code beyond one sandboxed extension with eleven router-actions.
|
|
259
|
+
|
|
260
|
+
The same loop works for any sufficiently rich app: open a folder, point Claude Code at the node, and iterate. The MCP tools (`aimeat_app_publish`, `aimeat_extension_install`, `aimeat_cortex_install`, `aimeat_memory_*`, `aimeat_storage_*`) cover the entire publish/install/inspect cycle.
|
|
261
|
+
|
|
234
262
|
### Calibrate prompts
|
|
235
263
|
|
|
236
264
|
<img src="assets/screenshots/profile-generator.png" alt="Generator and calibrator" width="600" />
|
|
@@ -276,9 +304,13 @@ Each node runs independently with its own identity and portal. Operators customi
|
|
|
276
304
|
Requires Node.js 24+. Runs without cloning the repo:
|
|
277
305
|
|
|
278
306
|
```bash
|
|
307
|
+
# Run a node
|
|
279
308
|
npx aimeat init # interactive setup, generates .env
|
|
280
309
|
npx aimeat start # start the server
|
|
281
310
|
npx aimeat seed # seed example packages (in another terminal, server must be running)
|
|
311
|
+
|
|
312
|
+
# Or just connect an agent to someone else's node
|
|
313
|
+
npx aimeat connect --url https://your-node --owner your-handle
|
|
282
314
|
```
|
|
283
315
|
|
|
284
316
|
### From source
|
|
@@ -320,21 +352,25 @@ If the AI reads the docs and explains the protocol, everything works. Admin dash
|
|
|
320
352
|
|
|
321
353
|
The `aimeat/` directory contains a full reference implementation in TypeScript (Express 5.2, Node 24). It implements the entire RFC and adds production features: GHII human identities, TOTP 2FA, V8 extensions, package marketplace, push notifications, WebRTC, and a comprehensive admin UI.
|
|
322
354
|
|
|
323
|
-
|
|
355
|
+
Two storage backends: SQLite (personal nodes, local dev; can run `:memory:` for true in-RAM speed) and MongoDB (production). The legacy in-memory backend is deprecated -- SQLite `:memory:` covers the same fast-iteration role using the actual production code path.
|
|
324
356
|
|
|
325
357
|
See the [Implementation Guide v3.0](docs/AIMEAT-IO-Implementation-Guide-v3.0.md) for full details.
|
|
326
358
|
|
|
327
359
|
### Testing
|
|
328
360
|
|
|
329
361
|
```bash
|
|
330
|
-
pnpm test:e2e
|
|
331
|
-
pnpm test:e2e:
|
|
332
|
-
pnpm test:
|
|
333
|
-
pnpm test:playwright # browser tests
|
|
362
|
+
pnpm test:e2e:sqlite # fast iteration default
|
|
363
|
+
pnpm test:e2e:mongodb # most realistic; run before a PR
|
|
364
|
+
pnpm test:playwright:sqlite # browser tests, scoped
|
|
334
365
|
pnpm test # unit tests
|
|
335
366
|
pnpm typecheck && pnpm lint
|
|
367
|
+
|
|
368
|
+
# Run a single E2E suite (preferred during iteration -- much faster than the full sweep)
|
|
369
|
+
cd aimeat && pnpm exec node --env-file=.env.test.sqlite --import tsx test/run-e2e-ci.ts --test=<suite>
|
|
336
370
|
```
|
|
337
371
|
|
|
372
|
+
> The legacy `pnpm test:e2e` (in-memory backend) is deprecated and produces stale failures. Use the SQLite or MongoDB commands instead.
|
|
373
|
+
|
|
338
374
|
---
|
|
339
375
|
|
|
340
376
|
## Documentation
|
|
@@ -367,7 +403,8 @@ See [CONTRIBUTING.md](CONTRIBUTING.md). Before opening a PR:
|
|
|
367
403
|
```bash
|
|
368
404
|
pnpm typecheck
|
|
369
405
|
pnpm lint
|
|
370
|
-
pnpm test:e2e
|
|
406
|
+
pnpm test:e2e:sqlite
|
|
407
|
+
pnpm test:e2e:mongodb
|
|
371
408
|
```
|
|
372
409
|
|
|
373
410
|
## License
|
package/dist/locales/en.json
CHANGED
|
@@ -12,7 +12,9 @@
|
|
|
12
12
|
"noData": "No data available",
|
|
13
13
|
"id": "ID",
|
|
14
14
|
"name": "Name",
|
|
15
|
-
"add": "Add"
|
|
15
|
+
"add": "Add",
|
|
16
|
+
"yes": "Yes",
|
|
17
|
+
"no": "No"
|
|
16
18
|
},
|
|
17
19
|
"nav": {
|
|
18
20
|
"try": "Try it",
|
|
@@ -646,6 +648,12 @@
|
|
|
646
648
|
},
|
|
647
649
|
"integration": {
|
|
648
650
|
"checklistTitle": "Hello Integration",
|
|
651
|
+
"postOnboardingSetup": "Post-Onboarding Setup",
|
|
652
|
+
"commandsRegistered": "Commands registered",
|
|
653
|
+
"configPublished": "Config published",
|
|
654
|
+
"sharedTagsInUse": "Shared tags in use",
|
|
655
|
+
"knowledgePackages": "Knowledge packages",
|
|
656
|
+
"notApplicable": "Not applicable",
|
|
649
657
|
"progress": "Progress",
|
|
650
658
|
"rerun": "Re-run Hello Integration",
|
|
651
659
|
"rerunStarted": "Hello Integration re-started",
|
|
@@ -2791,7 +2799,7 @@
|
|
|
2791
2799
|
"usernamePlaceholder": "Username",
|
|
2792
2800
|
"passwordPlaceholder": "Password (min 4 chars)",
|
|
2793
2801
|
"displayNamePlaceholder": "Display Name (optional, for new accounts)",
|
|
2794
|
-
"signInBtn": "Sign In",
|
|
2802
|
+
"signInBtn": "Sign In / Register",
|
|
2795
2803
|
"cancelBtn": "Cancel",
|
|
2796
2804
|
"working": "Working...",
|
|
2797
2805
|
"errUserShort": "Username must be at least 3 characters",
|
|
@@ -5426,6 +5434,8 @@
|
|
|
5426
5434
|
"report_telemetry": "Report Telemetry",
|
|
5427
5435
|
"accept_test_task": "Accept Test Task",
|
|
5428
5436
|
"complete_test_task": "Complete Test Task",
|
|
5437
|
+
"publish_commands": "Publish Slash Commands",
|
|
5438
|
+
"publish_config": "Publish Runtime Config",
|
|
5429
5439
|
"declare_services": "Declare Services"
|
|
5430
5440
|
},
|
|
5431
5441
|
"stepDescriptions": {
|
|
@@ -5439,6 +5449,8 @@
|
|
|
5439
5449
|
"report_telemetry": "At least one telemetry event with non-zero data",
|
|
5440
5450
|
"accept_test_task": "Agent proposes todos for the test task",
|
|
5441
5451
|
"complete_test_task": "Agent executes and completes the test task",
|
|
5452
|
+
"publish_commands": "agents.{name}.commands memory has a non-empty array of { name, description, category }",
|
|
5453
|
+
"publish_config": "At least one agents.config.{name}.* memory entry exists describing this runtime",
|
|
5442
5454
|
"declare_services": "Agent declares offered services (optional)"
|
|
5443
5455
|
},
|
|
5444
5456
|
"errors": {
|
package/dist/locales/fi.json
CHANGED
|
@@ -12,7 +12,9 @@
|
|
|
12
12
|
"noData": "Ei tietoja saatavilla",
|
|
13
13
|
"id": "ID",
|
|
14
14
|
"name": "Nimi",
|
|
15
|
-
"add": "Lisää"
|
|
15
|
+
"add": "Lisää",
|
|
16
|
+
"yes": "Kyllä",
|
|
17
|
+
"no": "Ei"
|
|
16
18
|
},
|
|
17
19
|
"nav": {
|
|
18
20
|
"try": "Kokeile",
|
|
@@ -646,6 +648,12 @@
|
|
|
646
648
|
},
|
|
647
649
|
"integration": {
|
|
648
650
|
"checklistTitle": "Hello-integraatio",
|
|
651
|
+
"postOnboardingSetup": "Perehdytyksen jälkeiset toimet",
|
|
652
|
+
"commandsRegistered": "Komennot rekisteröity",
|
|
653
|
+
"configPublished": "Konfiguraatio julkaistu",
|
|
654
|
+
"sharedTagsInUse": "Jaetut tagit käytössä",
|
|
655
|
+
"knowledgePackages": "Tietopaketit",
|
|
656
|
+
"notApplicable": "Ei sovellu",
|
|
649
657
|
"progress": "Edistyminen",
|
|
650
658
|
"rerun": "Suorita Hello-integraatio uudelleen",
|
|
651
659
|
"rerunStarted": "Hello-integraatio aloitettu uudelleen",
|
|
@@ -2791,7 +2799,7 @@
|
|
|
2791
2799
|
"usernamePlaceholder": "Käyttäjänimi",
|
|
2792
2800
|
"passwordPlaceholder": "Salasana (vähintään 4 merkkiä)",
|
|
2793
2801
|
"displayNamePlaceholder": "Näyttönimi (valinnainen, uusille tileille)",
|
|
2794
|
-
"signInBtn": "Kirjaudu",
|
|
2802
|
+
"signInBtn": "Kirjaudu / Rekisteröidy",
|
|
2795
2803
|
"cancelBtn": "Peruuta",
|
|
2796
2804
|
"working": "Käsitellään...",
|
|
2797
2805
|
"errUserShort": "Käyttäjänimen tulee olla vähintään 3 merkkiä",
|
|
@@ -5426,6 +5434,8 @@
|
|
|
5426
5434
|
"report_telemetry": "Raportoi telemetria",
|
|
5427
5435
|
"accept_test_task": "Hyväksy testitehtävä",
|
|
5428
5436
|
"complete_test_task": "Suorita testitehtävä",
|
|
5437
|
+
"publish_commands": "Julkaise slash-komennot",
|
|
5438
|
+
"publish_config": "Julkaise runtime-konfiguraatio",
|
|
5429
5439
|
"declare_services": "Ilmoita palvelut"
|
|
5430
5440
|
},
|
|
5431
5441
|
"stepDescriptions": {
|
|
@@ -5439,6 +5449,8 @@
|
|
|
5439
5449
|
"report_telemetry": "Vähintään yksi telemetriatapahtuma nollasta poikkeavalla datalla",
|
|
5440
5450
|
"accept_test_task": "Agentti ehdottaa todoja testitehtävälle",
|
|
5441
5451
|
"complete_test_task": "Agentti suorittaa ja viimeistelee testitehtävän",
|
|
5452
|
+
"publish_commands": "agents.{name}.commands -muistissa on epätyhjä { name, description, category } -taulu",
|
|
5453
|
+
"publish_config": "Vähintään yksi agents.config.{name}.* -muistitietue kuvaa tätä runtimea",
|
|
5442
5454
|
"declare_services": "Agentti ilmoittaa tarjoamansa palvelut (valinnainen)"
|
|
5443
5455
|
},
|
|
5444
5456
|
"errors": {
|
|
@@ -95,14 +95,17 @@ export default function AgentCard({ agent, onboarding, expanded, onToggle, sessi
|
|
|
95
95
|
</div>
|
|
96
96
|
|
|
97
97
|
<!-- Capabilities -->
|
|
98
|
-
${(agent.technical_capabilities?.length > 0 || agent.domain_capabilities?.length > 0) && html`
|
|
98
|
+
${(agent.technical_capabilities?.length > 0 || agent.domain_capabilities?.length > 0 || agent.languages?.length > 0) && html`
|
|
99
99
|
<div class="pf-agd-capabilities">
|
|
100
100
|
${(agent.technical_capabilities || []).map(c => html`
|
|
101
101
|
<span key=${c.name || c} class="pf-agd-cap-badge pf-agd-cap-badge--tech">${c.name || c}</span>
|
|
102
102
|
`)}
|
|
103
|
-
${(agent.domain_capabilities || []).map(c => html`
|
|
103
|
+
${(agent.domain_capabilities || []).filter(c => !String(c).startsWith('Language: ')).map(c => html`
|
|
104
104
|
<span key=${c} class="pf-agd-cap-badge pf-agd-cap-badge--domain">${c}</span>
|
|
105
105
|
`)}
|
|
106
|
+
${(agent.languages || []).map(l => html`
|
|
107
|
+
<span key=${'lang-' + l} class="pf-agd-cap-badge pf-agd-cap-badge--domain">${'Language: ' + l}</span>
|
|
108
|
+
`)}
|
|
106
109
|
</div>
|
|
107
110
|
`}
|
|
108
111
|
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* @description Enhanced Activity tab with governance filter and category badges.
|
|
4
4
|
* Wraps the existing activity subtab with additional filter pills.
|
|
5
5
|
* @version-history
|
|
6
|
+
* v1.5.0 -- 2026-05-28 -- Fix governance card: telemetry response field is `events` (not `entries`), and per-event tokens live in e.data.tokens_used / e.data.tokens_in+out
|
|
6
7
|
* v1.4.0 -- 2026-05-24 -- Audit fix: two-line event layout with secondary detail row
|
|
7
8
|
* v1.3.0 -- 2026-05-24 -- Wire up MCP status in delivery health from agent data
|
|
8
9
|
* v1.2.0 -- 2026-05-24 -- Fix: F17 task breakdown, F18 violation red badge, M5 governance i18n namespace
|
|
@@ -30,8 +31,14 @@ const FILTERS = [
|
|
|
30
31
|
];
|
|
31
32
|
|
|
32
33
|
function eventCategory(event) {
|
|
34
|
+
// Task-lifecycle events come back from /activity/log with a non-empty
|
|
35
|
+
// taskId set by the route. Use that as the primary signal -- the event
|
|
36
|
+
// type itself is whatever the agent set ("progress") or the lifecycle
|
|
37
|
+
// emitted ("completed", "failed"), none of which include "task" as a
|
|
38
|
+
// substring. Fall back to type-substring checks for everything else.
|
|
39
|
+
if (event.taskId) return 'tasks';
|
|
33
40
|
const type = (event.type || event.event || '').toLowerCase();
|
|
34
|
-
if (type.includes('
|
|
41
|
+
if (type.includes('todo')) return 'tasks';
|
|
35
42
|
if (type.includes('message') || type.includes('msg')) return 'messages';
|
|
36
43
|
if (type.includes('approve') || type.includes('scope') || type.includes('permission') || type.includes('governance') || type.includes('policy') || type.includes('readiness') || type.includes('override')) return 'governance';
|
|
37
44
|
return 'system';
|
|
@@ -71,11 +78,18 @@ export default function TabActivity({ agent, agentName, session, showToast }) {
|
|
|
71
78
|
const tasksFailed = taskEvents.filter(e => { const tp = (e.type || '').toLowerCase(); return tp.includes('failed') || tp.includes('error'); }).length;
|
|
72
79
|
const budget = dirResp?.data?.budget_limits;
|
|
73
80
|
const wh = whResp?.data?.webhook;
|
|
74
|
-
|
|
81
|
+
// GET /v1/agents/:name/telemetry returns { events, count, per_page }, and per-event
|
|
82
|
+
// numbers live inside event.data ({ tokens_used } OR { tokens_in + tokens_out }).
|
|
83
|
+
const telemetryEntries = telResp?.data?.events || telResp?.data?.entries || [];
|
|
84
|
+
const eventTokens = (e) => {
|
|
85
|
+
const d = e?.data || {};
|
|
86
|
+
const used = Number(d.tokens_used) || 0;
|
|
87
|
+
return used > 0 ? used : (Number(d.tokens_in) || 0) + (Number(d.tokens_out) || 0);
|
|
88
|
+
};
|
|
75
89
|
|
|
76
90
|
setGovernance({
|
|
77
91
|
budget,
|
|
78
|
-
tokensUsedToday: telemetryEntries.reduce((sum, e) => sum + (e
|
|
92
|
+
tokensUsedToday: telemetryEntries.reduce((sum, e) => sum + eventTokens(e), 0),
|
|
79
93
|
tasksToday: taskEvents.length,
|
|
80
94
|
tasksCompleted,
|
|
81
95
|
tasksActive,
|
|
@@ -4,6 +4,9 @@
|
|
|
4
4
|
* during onboarding or production status (connection, platform, readiness,
|
|
5
5
|
* identity, delivery log) after completion.
|
|
6
6
|
* @version-history
|
|
7
|
+
* v1.4.0 -- 2026-05-28 -- Treat webhook with empty url as polling: status dot, label, and
|
|
8
|
+
* the webhook section all key off (webhook && webhook.url), not just
|
|
9
|
+
* the webhook object existing. A record with url="" is still polling.
|
|
7
10
|
* v1.0.0 -- 2026-05-24 -- Initial creation for Agent Detail Tab-View
|
|
8
11
|
* v1.1.0 -- 2026-05-24 -- Fix 9 UI audit findings: pending icon, readiness score, webhook edit,
|
|
9
12
|
* strengths/gaps, last validated, roles badge, platform version, bundle update, copy install cmd
|
|
@@ -31,6 +34,7 @@ export default function TabIntegration({ agent, onboarding, session, showToast,
|
|
|
31
34
|
const [webhook, setWebhook] = useState(null);
|
|
32
35
|
const [bundleVersion, setBundleVersion] = useState(null);
|
|
33
36
|
const [deliveries, setDeliveries] = useState([]);
|
|
37
|
+
const [postChecklist, setPostChecklist] = useState(null);
|
|
34
38
|
const [loading, setLoading] = useState(true);
|
|
35
39
|
const [testing, setTesting] = useState(false);
|
|
36
40
|
const [rerunning, setRerunning] = useState(false);
|
|
@@ -47,14 +51,16 @@ export default function TabIntegration({ agent, onboarding, session, showToast,
|
|
|
47
51
|
async function loadData() {
|
|
48
52
|
setLoading(true);
|
|
49
53
|
try {
|
|
50
|
-
const [whResp, sbResp, dlResp] = await Promise.all([
|
|
54
|
+
const [whResp, sbResp, dlResp, obResp] = await Promise.all([
|
|
51
55
|
getWebhookConfig(agentName).catch(() => null),
|
|
52
56
|
getSkillBundleVersion(agentName).catch(() => null),
|
|
53
57
|
getDeliveryLog(agentName, 10).catch(() => null),
|
|
58
|
+
getOnboarding(agentName).catch(() => null),
|
|
54
59
|
]);
|
|
55
60
|
setWebhook(whResp?.data || null);
|
|
56
61
|
setBundleVersion(sbResp?.data || null);
|
|
57
62
|
setDeliveries(dlResp?.data?.deliveries || []);
|
|
63
|
+
setPostChecklist(obResp?.data?.post_onboarding_checklist || null);
|
|
58
64
|
} catch { /* silent */ }
|
|
59
65
|
setLoading(false);
|
|
60
66
|
}
|
|
@@ -212,7 +218,7 @@ curl -H "Authorization: Bearer <jwt>" -o skill-bundle.zip "${url}" && unzip skil
|
|
|
212
218
|
|
|
213
219
|
const displayDeliveries = showAllDeliveries && allDeliveries ? allDeliveries : deliveries;
|
|
214
220
|
|
|
215
|
-
return renderProductionView(agent, onboarding, webhook, bundleVersion, displayDeliveries, handleTestWebhook, testing, handleRerun, rerunning, handleCopyInstall, copiedCmd, handleShowAll, showAllDeliveries, editingWebhook, webhookDraft, setWebhookDraft, handleEditWebhook, handleSaveWebhook, handleCancelWebhook, savingWebhook, handleUpdateBundle, updatingBundle, handleCopyInstallCommand, copiedInstall, handleCopyAgentPrompt, copiedPrompt);
|
|
221
|
+
return renderProductionView(agent, onboarding, webhook, bundleVersion, displayDeliveries, handleTestWebhook, testing, handleRerun, rerunning, handleCopyInstall, copiedCmd, handleShowAll, showAllDeliveries, editingWebhook, webhookDraft, setWebhookDraft, handleEditWebhook, handleSaveWebhook, handleCancelWebhook, savingWebhook, handleUpdateBundle, updatingBundle, handleCopyInstallCommand, copiedInstall, handleCopyAgentPrompt, copiedPrompt, postChecklist);
|
|
216
222
|
}
|
|
217
223
|
|
|
218
224
|
function renderOnboardingView(onboarding, agentName, handleRerun, rerunning, handleCopyInstall, copiedCmd, handleCopyInstallCommand, copiedInstall, handleCopyAgentPrompt, copiedPrompt) {
|
|
@@ -279,7 +285,7 @@ function renderOnboardingView(onboarding, agentName, handleRerun, rerunning, han
|
|
|
279
285
|
`;
|
|
280
286
|
}
|
|
281
287
|
|
|
282
|
-
function renderProductionView(agent, onboarding, webhook, bundleVersion, displayDeliveries, handleTestWebhook, testing, handleRerun, rerunning, handleCopyInstall, copiedCmd, handleShowAll, showAllDeliveries, editingWebhook, webhookDraft, setWebhookDraft, handleEditWebhook, handleSaveWebhook, handleCancelWebhook, savingWebhook, handleUpdateBundle, updatingBundle, handleCopyInstallCommand, copiedInstall, handleCopyAgentPrompt, copiedPrompt) {
|
|
288
|
+
function renderProductionView(agent, onboarding, webhook, bundleVersion, displayDeliveries, handleTestWebhook, testing, handleRerun, rerunning, handleCopyInstall, copiedCmd, handleShowAll, showAllDeliveries, editingWebhook, webhookDraft, setWebhookDraft, handleEditWebhook, handleSaveWebhook, handleCancelWebhook, savingWebhook, handleUpdateBundle, updatingBundle, handleCopyInstallCommand, copiedInstall, handleCopyAgentPrompt, copiedPrompt, postChecklist) {
|
|
283
289
|
const steps = onboarding?.steps || [];
|
|
284
290
|
const agentName = agent.name;
|
|
285
291
|
|
|
@@ -307,8 +313,8 @@ function renderProductionView(agent, onboarding, webhook, bundleVersion, display
|
|
|
307
313
|
<div class="pf-agd-info-row">
|
|
308
314
|
<span class="pf-agd-info-label">${t('profile.agents.detail.integration.deliveryMethod')}</span>
|
|
309
315
|
<span class="pf-agd-info-value">
|
|
310
|
-
<span class="pf-agd-status-dot ${webhook && (webhook.failCount ?? 0) < 5 ? 'pf-agd-status-dot--active' : webhook && (webhook.failCount ?? 0) >= 5 ? 'pf-agd-status-dot--error' : 'pf-agd-status-dot--inactive'}"></span>
|
|
311
|
-
${webhook ? t('profile.agents.detail.deliveryWebhook') : t('profile.agents.detail.deliveryPolling')}
|
|
316
|
+
<span class="pf-agd-status-dot ${(webhook && webhook.url && (webhook.failCount ?? 0) < 5) ? 'pf-agd-status-dot--active' : (webhook && webhook.url && (webhook.failCount ?? 0) >= 5) ? 'pf-agd-status-dot--error' : 'pf-agd-status-dot--inactive'}"></span>
|
|
317
|
+
${(webhook && webhook.url) ? t('profile.agents.detail.deliveryWebhook') : t('profile.agents.detail.deliveryPolling')}
|
|
312
318
|
</span>
|
|
313
319
|
</div>
|
|
314
320
|
${webhook ? html`
|
|
@@ -434,6 +440,43 @@ function renderProductionView(agent, onboarding, webhook, bundleVersion, display
|
|
|
434
440
|
</div>
|
|
435
441
|
</div>
|
|
436
442
|
|
|
443
|
+
<!-- POST-ONBOARDING SETUP -->
|
|
444
|
+
${postChecklist && html`
|
|
445
|
+
<div class="pf-agd-section">
|
|
446
|
+
<div class="pf-agd-section-label">${t('profile.agents.detail.integration.postOnboardingSetup')}</div>
|
|
447
|
+
<div class="pf-agd-info-row">
|
|
448
|
+
<span class="pf-agd-info-label">${t('profile.agents.detail.integration.commandsRegistered')}</span>
|
|
449
|
+
<span class="pf-agd-info-value">
|
|
450
|
+
<span class="pf-agd-status-dot ${postChecklist.commands_registered ? 'pf-agd-status-dot--active' : 'pf-agd-status-dot--inactive'}"></span>
|
|
451
|
+
${postChecklist.commands_registered ? t('common.yes') : t('common.no')}
|
|
452
|
+
</span>
|
|
453
|
+
</div>
|
|
454
|
+
<div class="pf-agd-info-row">
|
|
455
|
+
<span class="pf-agd-info-label">${t('profile.agents.detail.integration.configPublished')}</span>
|
|
456
|
+
<span class="pf-agd-info-value">
|
|
457
|
+
<span class="pf-agd-status-dot ${postChecklist.config_published ? 'pf-agd-status-dot--active' : 'pf-agd-status-dot--inactive'}"></span>
|
|
458
|
+
${postChecklist.config_published ? t('common.yes') : t('common.no')}
|
|
459
|
+
</span>
|
|
460
|
+
</div>
|
|
461
|
+
<div class="pf-agd-info-row">
|
|
462
|
+
<span class="pf-agd-info-label">${t('profile.agents.detail.integration.sharedTagsInUse')}</span>
|
|
463
|
+
<span class="pf-agd-info-value">
|
|
464
|
+
${postChecklist.shared_tags_in_use === null
|
|
465
|
+
? html`<span class="pf-agd-status-dot pf-agd-status-dot--inactive"></span> ${t('profile.agents.detail.integration.notApplicable')}`
|
|
466
|
+
: html`<span class="pf-agd-status-dot ${postChecklist.shared_tags_in_use ? 'pf-agd-status-dot--active' : 'pf-agd-status-dot--inactive'}"></span> ${postChecklist.shared_tags_in_use ? t('common.yes') : t('common.no')}`
|
|
467
|
+
}
|
|
468
|
+
</span>
|
|
469
|
+
</div>
|
|
470
|
+
<div class="pf-agd-info-row">
|
|
471
|
+
<span class="pf-agd-info-label">${t('profile.agents.detail.integration.knowledgePackages')}</span>
|
|
472
|
+
<span class="pf-agd-info-value">
|
|
473
|
+
<span class="pf-agd-status-dot ${postChecklist.knowledge_packages_published ? 'pf-agd-status-dot--active' : 'pf-agd-status-dot--inactive'}"></span>
|
|
474
|
+
${postChecklist.knowledge_packages_published ? t('common.yes') : t('common.no')}
|
|
475
|
+
</span>
|
|
476
|
+
</div>
|
|
477
|
+
</div>
|
|
478
|
+
`}
|
|
479
|
+
|
|
437
480
|
<!-- IDENTITY -->
|
|
438
481
|
<div class="pf-agd-section">
|
|
439
482
|
<div class="pf-agd-section-label">${t('profile.agents.detail.identity')}</div>
|
|
@@ -46,11 +46,14 @@ function TechnicalSkills({ capabilities }) {
|
|
|
46
46
|
`;
|
|
47
47
|
}
|
|
48
48
|
|
|
49
|
-
function DomainKnowledge({ domains }) {
|
|
50
|
-
|
|
49
|
+
function DomainKnowledge({ domains, languages: separateLanguages }) {
|
|
50
|
+
// Backward compatibility: older agents have `Language: xx` mixed into domains.
|
|
51
|
+
// Prefer the dedicated `languages` prop when present, fall back to filtering.
|
|
52
|
+
const legacyLanguages = (domains ?? []).filter(d => d.startsWith('Language: ')).map(d => d.replace('Language: ', ''));
|
|
53
|
+
const languages = separateLanguages?.length ? separateLanguages : legacyLanguages;
|
|
54
|
+
const otherDomains = (domains ?? []).filter(d => !d.startsWith('Language: '));
|
|
51
55
|
|
|
52
|
-
|
|
53
|
-
const otherDomains = domains.filter(d => !d.startsWith('Language: '));
|
|
56
|
+
if (otherDomains.length === 0 && languages.length === 0) return null;
|
|
54
57
|
|
|
55
58
|
return html`
|
|
56
59
|
<div class="agd-directive-section">
|
|
@@ -66,7 +69,7 @@ function DomainKnowledge({ domains }) {
|
|
|
66
69
|
<div class="agd-cap-langs">
|
|
67
70
|
<span class="agd-cap-lang-label">${tFallback('profile.agents.capabilities.languages', 'Languages')}:</span>
|
|
68
71
|
${languages.map(l => html`
|
|
69
|
-
<span class="agd-cap-badge agd-cap-lang">${l
|
|
72
|
+
<span class="agd-cap-badge agd-cap-lang">${l}</span>
|
|
70
73
|
`)}
|
|
71
74
|
</div>
|
|
72
75
|
`}
|
|
@@ -106,6 +109,7 @@ function ActionQueueSupport({ scopes }) {
|
|
|
106
109
|
export default function AgentCapabilitiesSubtab({ agentName, session, showToast, agent }) {
|
|
107
110
|
const [techCaps, setTechCaps] = useState(null);
|
|
108
111
|
const [domainCaps, setDomainCaps] = useState(null);
|
|
112
|
+
const [languages, setLanguages] = useState(null);
|
|
109
113
|
const [loading, setLoading] = useState(true);
|
|
110
114
|
|
|
111
115
|
useEffect(() => {
|
|
@@ -117,10 +121,12 @@ export default function AgentCapabilitiesSubtab({ agentName, session, showToast,
|
|
|
117
121
|
if (cancelled) return;
|
|
118
122
|
setTechCaps(resp?.data?.technical_capabilities ?? []);
|
|
119
123
|
setDomainCaps(resp?.data?.domain_capabilities ?? []);
|
|
124
|
+
setLanguages(resp?.data?.languages ?? []);
|
|
120
125
|
} catch {
|
|
121
126
|
if (!cancelled) {
|
|
122
127
|
setTechCaps([]);
|
|
123
128
|
setDomainCaps([]);
|
|
129
|
+
setLanguages([]);
|
|
124
130
|
}
|
|
125
131
|
}
|
|
126
132
|
if (!cancelled) setLoading(false);
|
|
@@ -136,6 +142,7 @@ export default function AgentCapabilitiesSubtab({ agentName, session, showToast,
|
|
|
136
142
|
const resp = await getCapabilities(agentName);
|
|
137
143
|
setTechCaps(resp?.data?.technical_capabilities ?? []);
|
|
138
144
|
setDomainCaps(resp?.data?.domain_capabilities ?? []);
|
|
145
|
+
setLanguages(resp?.data?.languages ?? []);
|
|
139
146
|
} catch { /* ignore */ }
|
|
140
147
|
};
|
|
141
148
|
window.addEventListener('aimeat-live-update', handler);
|
|
@@ -148,7 +155,7 @@ export default function AgentCapabilitiesSubtab({ agentName, session, showToast,
|
|
|
148
155
|
|
|
149
156
|
const scopes = agent?.default_scopes ?? [];
|
|
150
157
|
const hasTech = techCaps && techCaps.length > 0;
|
|
151
|
-
const hasDomain = domainCaps && domainCaps.length > 0;
|
|
158
|
+
const hasDomain = (domainCaps && domainCaps.length > 0) || (languages && languages.length > 0);
|
|
152
159
|
const hasQueue = scopes.includes('*') || scopes.includes('work:accept') || scopes.includes('work:deliver');
|
|
153
160
|
|
|
154
161
|
if (!hasTech && !hasDomain && !hasQueue) {
|
|
@@ -158,7 +165,7 @@ export default function AgentCapabilitiesSubtab({ agentName, session, showToast,
|
|
|
158
165
|
return html`
|
|
159
166
|
<div>
|
|
160
167
|
<${TechnicalSkills} capabilities=${techCaps} />
|
|
161
|
-
<${DomainKnowledge} domains=${domainCaps} />
|
|
168
|
+
<${DomainKnowledge} domains=${domainCaps} languages=${languages} />
|
|
162
169
|
<${ActionQueueSupport} scopes=${scopes} />
|
|
163
170
|
</div>
|
|
164
171
|
`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../../src/cli/connect/auth.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../../src/cli/connect/auth.ts"],"names":[],"mappings":"AA+BA,UAAU,QAAQ;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAyGD,wBAAsB,OAAO,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CA+J3D"}
|
|
@@ -19,11 +19,13 @@
|
|
|
19
19
|
* @version-history v1.9.17 — 2026-05-28 — State that Hello Integration is required first-run onboarding.
|
|
20
20
|
* @version-history v1.9.18 -- 2026-05-28 -- Add correct post-onboarding setup instruction for actual commands, config, and knowledge artifacts.
|
|
21
21
|
* @version-history v1.9.19 -- 2026-05-28 -- Add shared owner-memory tag guidance after onboarding.
|
|
22
|
+
* @version-history v1.9.20 -- 2026-05-28 -- Move Hello Integration instruction into shared onboarding-prompt.ts to remove duplication with skill-bundle.ts.
|
|
22
23
|
*/
|
|
23
24
|
import { AimeatClient } from './api-client.js';
|
|
24
25
|
import { storeToken, getToken } from './keychain.js';
|
|
25
26
|
import { saveConfig } from './config.js';
|
|
26
27
|
import { downloadSkillBundle, readSkillBundleGuide } from './skill-bundle.js';
|
|
28
|
+
import { buildAgentOnboardingInstruction } from './onboarding-prompt.js';
|
|
27
29
|
const DEFAULT_NODE_URL = 'https://aimeat.io';
|
|
28
30
|
const DEFAULT_AGENT_NAME = 'assistant';
|
|
29
31
|
function normalizeNodeUrl(value) {
|
|
@@ -58,41 +60,31 @@ function getOAuthError(value) {
|
|
|
58
60
|
error_description: typeof value.error_description === 'string' ? value.error_description : undefined,
|
|
59
61
|
};
|
|
60
62
|
}
|
|
61
|
-
function buildAgentOnboardingInstruction() {
|
|
62
|
-
return `You are connected to AIMEAT through MCP in this runtime.
|
|
63
|
-
|
|
64
|
-
Use the available AIMEAT tools now. Hello Integration is AIMEAT's required first-run onboarding handshake for every newly connected agent. The names below are MCP tools shown by your AI runtime; do not type them as terminal commands. Complete Hello Integration in this order:
|
|
65
|
-
1. Call aimeat_handbook_get and read the operating handbook.
|
|
66
|
-
2. Call aimeat_onboarding_status and follow its next-step hints.
|
|
67
|
-
3. Call aimeat_onboarding_identify_platform with your runtime/platform name.
|
|
68
|
-
4. Call aimeat_onboarding_confirm_skill_installed after confirming the local skill bundle is available.
|
|
69
|
-
5. Call aimeat_agent_capabilities_report with your useful capabilities.
|
|
70
|
-
6. Call aimeat_onboarding_confirm_directives_read after reading the handbook/directives.
|
|
71
|
-
7. Call aimeat_message_send with a short Hello Integration test message.
|
|
72
|
-
8. Call aimeat_agent_telemetry_report with an agent_report event.
|
|
73
|
-
9. Call aimeat_task_list and find the task named "Onboarding verification".
|
|
74
|
-
10. Call aimeat_task_propose_todos with a short TODO plan for that task.
|
|
75
|
-
11. Call aimeat_onboarding_status again. If the test task is active, use aimeat_task_event, aimeat_task_todo, and aimeat_task_complete to finish it.
|
|
76
|
-
12. Call aimeat_onboarding_status one final time and report any remaining pending step.
|
|
77
|
-
13. After Hello Integration is complete, publish post-onboarding setup from SKILL.md:
|
|
78
|
-
- Register your actual owner-facing slash commands at the memory key agents.{your-agent-name}.commands. Use a flat array of { name, description, category }. Include only commands you can really handle from AIMEAT Messages; do not copy examples or list internal MCP tools as message commands.
|
|
79
|
-
- Publish actual runtime/config artifacts under agents.config.*. If this runtime only uses aimeat connect serve, describe that connector accurately; do not invent a watchdog file.
|
|
80
|
-
- If the owner assigned shared tags in Data Access, use agents.tag.<tag>.* for same-owner handoff notes, project state, queues, or team context. Write shared entries with visibility "owner" and tags ["<tag>"], and list them with owner_scope=true plus prefix agents.tag.<tag>. when coordinating with sibling agents.
|
|
81
|
-
- If you produced research, docs, datasets, or reusable knowledge, create or update a real knowledge package using /llms.txt guidance, POST /v1/knowledge/import, aimeat_knowledge_contribute, and aimeat_storage_upload as appropriate. Do not use a placeholder research.* memory key as a substitute.
|
|
82
|
-
|
|
83
|
-
If AIMEAT tools are not available in this runtime, tell me the MCP server is not attached yet.`;
|
|
84
|
-
}
|
|
85
63
|
function buildNextStepsMessage(agentInstruction) {
|
|
86
64
|
return `Done. Your agent is connected.
|
|
87
65
|
|
|
88
66
|
NEXT TERMINAL COMMAND FOR THE AGENT
|
|
89
|
-
|
|
67
|
+
For AI runtimes that can attach an MCP stdio server (Claude Desktop, MCP-aware
|
|
68
|
+
IDEs, OpenClaw with mcp config, etc.), run this and leave it running:
|
|
69
|
+
|
|
70
|
+
aimeat connect serve
|
|
71
|
+
|
|
72
|
+
After that MCP server is attached to the AI runtime, paste this instruction
|
|
73
|
+
into the connected agent:
|
|
74
|
+
|
|
75
|
+
${agentInstruction}
|
|
90
76
|
|
|
91
|
-
|
|
77
|
+
IF YOUR RUNTIME CANNOT ATTACH MCP VIA STDIO
|
|
78
|
+
(e.g. you are a CLI-only agent, a shell-driven assistant, or a runtime where
|
|
79
|
+
"aimeat connect serve" would just block without exposing tools to you):
|
|
80
|
+
use the shell fallback instead. Every MCP tool is also callable directly:
|
|
92
81
|
|
|
93
|
-
|
|
82
|
+
aimeat connect tools # list available tool names
|
|
83
|
+
aimeat connect schema <tool-name> # show the tool's input schema
|
|
84
|
+
aimeat connect call <tool-name> --json '<input>' # invoke a tool
|
|
94
85
|
|
|
95
|
-
|
|
86
|
+
Walk through the same Hello Integration sequence with these commands. Start
|
|
87
|
+
with: aimeat connect call aimeat_handbook_get --json '{}'`;
|
|
96
88
|
}
|
|
97
89
|
async function downloadAndPrintBundleGuide(client, agentName, success, info, warn) {
|
|
98
90
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../../src/cli/connect/auth.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../../src/cli/connect/auth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC9E,OAAO,EAAE,+BAA+B,EAAE,MAAM,wBAAwB,CAAC;AA0BzE,MAAM,gBAAgB,GAAG,mBAAmB,CAAC;AAC7C,MAAM,kBAAkB,GAAG,WAAW,CAAC;AAEvC,SAAS,gBAAgB,CAAC,KAAyB;IACjD,MAAM,OAAO,GAAG,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACpC,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAC1B,MAAM,YAAY,GAAG,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,OAAO,EAAE,CAAC;IACpF,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC;QAClC,IAAI,GAAG,CAAC,QAAQ,KAAK,OAAO,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QACvE,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC;AACrD,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAc;IAC3C,OAAO,QAAQ,CAAC,KAAK,CAAC;WACjB,OAAO,KAAK,CAAC,YAAY,KAAK,QAAQ;WACtC,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;WAC9B,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC;AACtC,CAAC;AAED,SAAS,aAAa,CAAC,KAAc;IACnC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACrE,OAAO;QACL,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,iBAAiB,EAAE,OAAO,KAAK,CAAC,iBAAiB,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS;KACrG,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAAC,gBAAwB;IACrD,OAAO;;;;;;;;;;;EAWP,gBAAgB;;;;;;;;;;;;0DAYwC,CAAC;AAC3D,CAAC;AAED,KAAK,UAAU,2BAA2B,CACxC,MAAoB,EACpB,SAAiB,EACjB,OAAkC,EAClC,IAA+B,EAC/B,IAA+B;IAE/B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAC5D,OAAO,CAAC,4CAA4C,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;QACxE,IAAI,CAAC,oBAAoB,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;QAC7C,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC;IACrC,CAAC;IAAC,MAAM,CAAC;QACP,IAAI,CAAC,kEAAkE,CAAC,CAAC;IAC3E,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,WAAoB,EAAE,OAAuB;IACnE,IAAI,WAAW,IAAI,OAAO;QAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IACrD,OAAO;QACL,KAAK,CAAC,OAAe,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAChD,IAAI,CAAC,OAAgB,IAAI,IAAI,OAAO;YAAE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;KAC9D,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,IAAc;IAC1C,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACzE,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACpE,MAAM,KAAK,GAAG,CAAC,OAAe,EAAE,EAAE,GAAG,IAAI,OAAO;QAAE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;;QAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACvG,MAAM,KAAK,GAAG,CAAC,OAAe,EAAE,EAAE,GAAG,IAAI,OAAO;QAAE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;;QAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACvG,MAAM,IAAI,GAAG,CAAC,OAAe,EAAE,EAAE,GAAG,IAAI,OAAO;QAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;;QAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACzG,MAAM,OAAO,GAAG,CAAC,OAAe,EAAE,EAAE,GAAG,IAAI,OAAO;QAAE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;;QAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/G,MAAM,IAAI,GAAG,CAAC,OAAe,EAAE,EAAE,GAAG,IAAI,OAAO;QAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;;QAAM,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1G,MAAM,IAAI,GAAG,CAAC,OAAe,EAAE,EAAE,GAAG,IAAI,OAAO;QAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;;QAAM,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAE5G,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAEhC,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/C,IAAI,CAAC,6GAA6G,CAAC,CAAC;QACpH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,IAAI,MAAM,OAAQ,CAAC,IAAI,CAAC;QACnD,OAAO,EAAE,kBAAkB;QAC3B,WAAW,EAAE,gBAAgB;QAC7B,YAAY,EAAE,gBAAgB;QAC9B,QAAQ,CAAC,KAAK;YACZ,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,8DAA8D,CAAC;QAC9G,CAAC;KACF,CAAC,CAAC;IACH,IAAI,OAAO,EAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;QAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAAC,CAAC;IACvF,MAAM,OAAO,GAAG,gBAAgB,CAAC,YAAsB,CAAC,CAAC;IACzD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,IAAI,CAAC,uHAAuH,CAAC,CAAC;QAC9H,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,IAAI,MAAM,OAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC,CAAC;IACxF,IAAI,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAAC,CAAC;IACrF,MAAM,KAAK,GAAI,UAAqB,CAAC,IAAI,EAAE,CAAC;IAC5C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,IAAI,CAAC,gHAAgH,CAAC,CAAC;QACvH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,WAAW;QAC3C,CAAC,CAAC,MAAM,OAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,kBAAkB,EAAE,YAAY,EAAE,kBAAkB,EAAE,CAAC;QACpH,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,kBAAkB,CAAC,CAAC,CAAC;IAC3D,IAAI,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAAC,CAAC;IACrF,MAAM,SAAS,GAAI,UAAqB,CAAC,IAAI,EAAE,CAAC;IAChD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,IAAI,CAAC,8GAA8G,CAAC,CAAC;QACrH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC;QAChC,IAAI,CAAC,0CAA0C,SAAS,uDAAuD,CAAC,CAAC;IACnH,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC;IAEzC,MAAM,aAAa,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACvD,IAAI,aAAa,EAAE,CAAC;QAClB,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QAC/B,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,cAAc,kBAAkB,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YACpF,IAAI,KAAK,CAAC,EAAE,EAAE,CAAC;gBACb,OAAO,CAAC,oCAAoC,CAAC,CAAC;gBAC9C,UAAU,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;gBAC3D,MAAM,2BAA2B,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;gBAC1E,KAAK,CAAC,qBAAqB,CAAC,+BAA+B,EAAE,CAAC,CAAC,CAAC;gBAChE,OAAO;YACT,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,CAAC,qDAAqD,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IAED,MAAM,CAAC,GAAG,cAAc,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;IAE9C,IAAI,QAAQ,CAAC;IACb,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,6BAA6B,EAAE;YAC1D,UAAU,EAAE,SAAS;YACrB,KAAK;SACN,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,CAAC,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;QACxC,IAAI,CAAE,CAAW,CAAC,OAAO,CAAC,CAAC;QAC3B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,CAAC,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;QACxC,IAAI,CAAE,QAAQ,CAAC,KAA6B,EAAE,OAAO,IAAI,eAAe,CAAC,CAAC;QAC1E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAKzB,CAAC;IAEF,CAAC,CAAC,IAAI,CAAC,sBAAsB,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;IACnD,IAAI,CAAC,QAAQ,QAAQ,CAAC,gBAAgB,cAAc,CAAC,CAAC;IAEtD,CAAC,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;IAC9C,MAAM,QAAQ,GAAG,CAAC,QAAQ,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;IACjD,IAAI,SAAS,GAA+B,IAAI,CAAC;IAEjD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7B,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;QAChD,IAAI,QAAQ,CAAC;QACb,IAAI,CAAC;YACH,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,yBAAyB,EAAE;gBACtD,WAAW,EAAE,QAAQ,CAAC,WAAW;gBACjC,UAAU,EAAE,8CAA8C;aAC3D,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAC1B,IAAI,CAAE,CAAW,CAAC,OAAO,CAAC,CAAC;YAC3B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,IAAI,qBAAqB,CAAC,QAAQ,CAAC,EAAE,CAAC;YACpC,SAAS,GAAG,QAAQ,CAAC;YACrB,MAAM;QACR,CAAC;QACD,IAAI,QAAQ,CAAC,EAAE,IAAI,qBAAqB,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACxD,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC;YAC1B,MAAM;QACR,CAAC;QACD,MAAM,UAAU,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC3C,MAAM,OAAO,GAAG,UAAU,EAAE,KAAK,CAAC;QAClC,IAAI,OAAO,KAAK,eAAe,EAAE,CAAC;YAChC,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;YAChC,IAAI,CAAC,6CAA6C,CAAC,CAAC;YACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,IAAI,OAAO,KAAK,uBAAuB,IAAI,OAAO,KAAK,WAAW,EAAE,CAAC;YACnE,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;YAC5B,IAAI,CAAC,UAAU,EAAE,iBAAiB,IAAI,gFAAgF,CAAC,CAAC;YACxH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,CAAC,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAC1C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,KAAK,GAAG,SAAS,CAAC;IACxB,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAEpB,MAAM,UAAU,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;IACvD,OAAO,CAAC,wBAAwB,SAAS,IAAI,KAAK,GAAG,CAAC,CAAC;IAEvD,UAAU,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;IAE3D,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IACpC,MAAM,2BAA2B,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAE1E,KAAK,CAAC,qBAAqB,CAAC,+BAA+B,EAAE,CAAC,CAAC,CAAC;AAClE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../../src/cli/connect/config.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../../src/cli/connect/config.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IAKd,IAAI,CAAC,EAAE;QACL,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,QAAQ,CAAC,EAAE,eAAe,GAAG,eAAe,GAAG,cAAc,GAAG,cAAc,CAAC;KAChF,CAAC;IACF,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAKD,wBAAgB,YAAY,IAAI,MAAM,CAAuB;AAE7D,wBAAgB,UAAU,IAAI,mBAAmB,GAAG,IAAI,CAIvD;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,mBAAmB,GAAG,IAAI,CAG5D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../src/cli/connect/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../src/cli/connect/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAkBxC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;AAC9C,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;AAEpD,MAAM,UAAU,YAAY,KAAa,OAAO,UAAU,CAAC,CAAC,CAAC;AAE7D,MAAM,UAAU,UAAU;IACxB,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1C,MAAM,GAAG,GAAG,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC/C,OAAO,KAAK,CAAC,GAAG,CAAwB,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,MAA2B;IACpD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACxE,aAAa,CAAC,WAAW,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC;AACzD,CAAC"}
|
|
@@ -1,9 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @file poller.ts
|
|
3
3
|
* @description Background poller for new tasks and messages. Triggers agent wake-up.
|
|
4
|
-
* @structure
|
|
4
|
+
* @structure Tracks task and message IDs seen on the last poll and wakes the agent
|
|
5
|
+
* when previously-unseen IDs appear. Uses recursive setTimeout (not setInterval)
|
|
6
|
+
* so overlapping polls cannot stack up if a round trip slows down. Treats
|
|
7
|
+
* auth-style envelope errors as terminal: a stale token will never recover by
|
|
8
|
+
* polling, so the poller stops and prints a clear next step instead of silently
|
|
9
|
+
* spinning.
|
|
5
10
|
* @usage Started by `aimeat connect serve` after MCP server registration.
|
|
6
|
-
* @version-history v1.9.4
|
|
11
|
+
* @version-history v1.9.4 -- 2026-05-28 -- Use the name-based message inbox endpoint.
|
|
12
|
+
* @version-history v1.9.5 -- 2026-05-28 -- Track IDs instead of counts (interleaved completes+arrivals were missed); recursive setTimeout; surface auth failures.
|
|
7
13
|
*/
|
|
8
14
|
import type { AimeatClient } from '../api-client.js';
|
|
9
15
|
import type { AimeatConnectConfig } from '../config.js';
|