aimeat 1.9.2 → 1.9.4

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.
Files changed (141) hide show
  1. package/dist/bin/aimeat.js +0 -0
  2. package/dist/public/views/profile/agents-tab.js +10 -10
  3. package/dist/src/cli/connect/api-client.d.ts +24 -0
  4. package/dist/src/cli/connect/api-client.d.ts.map +1 -0
  5. package/dist/src/cli/connect/api-client.js +73 -0
  6. package/dist/src/cli/connect/api-client.js.map +1 -0
  7. package/dist/src/cli/connect/auth.d.ts +8 -0
  8. package/dist/src/cli/connect/auth.d.ts.map +1 -0
  9. package/dist/src/cli/connect/auth.js +161 -0
  10. package/dist/src/cli/connect/auth.js.map +1 -0
  11. package/dist/src/cli/connect/config.d.ts +15 -0
  12. package/dist/src/cli/connect/config.d.ts.map +1 -0
  13. package/dist/src/cli/connect/config.js +23 -0
  14. package/dist/src/cli/connect/config.js.map +1 -0
  15. package/dist/src/cli/connect/docs.d.ts +2 -0
  16. package/dist/src/cli/connect/docs.d.ts.map +1 -0
  17. package/dist/src/cli/connect/docs.js +41 -0
  18. package/dist/src/cli/connect/docs.js.map +1 -0
  19. package/dist/src/cli/connect/inbox.d.ts +2 -0
  20. package/dist/src/cli/connect/inbox.d.ts.map +1 -0
  21. package/dist/src/cli/connect/inbox.js +32 -0
  22. package/dist/src/cli/connect/inbox.js.map +1 -0
  23. package/dist/src/cli/connect/keychain.d.ts +4 -0
  24. package/dist/src/cli/connect/keychain.d.ts.map +1 -0
  25. package/dist/src/cli/connect/keychain.js +31 -0
  26. package/dist/src/cli/connect/keychain.js.map +1 -0
  27. package/dist/src/cli/connect/mcp/poller.d.ts +11 -0
  28. package/dist/src/cli/connect/mcp/poller.d.ts.map +1 -0
  29. package/dist/src/cli/connect/mcp/poller.js +34 -0
  30. package/dist/src/cli/connect/mcp/poller.js.map +1 -0
  31. package/dist/src/cli/connect/mcp/resources.d.ts +11 -0
  32. package/dist/src/cli/connect/mcp/resources.d.ts.map +1 -0
  33. package/dist/src/cli/connect/mcp/resources.js +25 -0
  34. package/dist/src/cli/connect/mcp/resources.js.map +1 -0
  35. package/dist/src/cli/connect/mcp/server.d.ts +2 -0
  36. package/dist/src/cli/connect/mcp/server.d.ts.map +1 -0
  37. package/dist/src/cli/connect/mcp/server.js +40 -0
  38. package/dist/src/cli/connect/mcp/server.js.map +1 -0
  39. package/dist/src/cli/connect/mcp/tools/agent-caps.d.ts +9 -0
  40. package/dist/src/cli/connect/mcp/tools/agent-caps.d.ts.map +1 -0
  41. package/dist/src/cli/connect/mcp/tools/agent-caps.js +27 -0
  42. package/dist/src/cli/connect/mcp/tools/agent-caps.js.map +1 -0
  43. package/dist/src/cli/connect/mcp/tools/agent-messages.d.ts +9 -0
  44. package/dist/src/cli/connect/mcp/tools/agent-messages.d.ts.map +1 -0
  45. package/dist/src/cli/connect/mcp/tools/agent-messages.js +20 -0
  46. package/dist/src/cli/connect/mcp/tools/agent-messages.js.map +1 -0
  47. package/dist/src/cli/connect/mcp/tools/agent-tasks.d.ts +9 -0
  48. package/dist/src/cli/connect/mcp/tools/agent-tasks.d.ts.map +1 -0
  49. package/dist/src/cli/connect/mcp/tools/agent-tasks.js +57 -0
  50. package/dist/src/cli/connect/mcp/tools/agent-tasks.js.map +1 -0
  51. package/dist/src/cli/connect/mcp/tools/apps.d.ts +9 -0
  52. package/dist/src/cli/connect/mcp/tools/apps.d.ts.map +1 -0
  53. package/dist/src/cli/connect/mcp/tools/apps.js +38 -0
  54. package/dist/src/cli/connect/mcp/tools/apps.js.map +1 -0
  55. package/dist/src/cli/connect/mcp/tools/boards.d.ts +9 -0
  56. package/dist/src/cli/connect/mcp/tools/boards.d.ts.map +1 -0
  57. package/dist/src/cli/connect/mcp/tools/boards.js +56 -0
  58. package/dist/src/cli/connect/mcp/tools/boards.js.map +1 -0
  59. package/dist/src/cli/connect/mcp/tools/capabilities.d.ts +8 -0
  60. package/dist/src/cli/connect/mcp/tools/capabilities.d.ts.map +1 -0
  61. package/dist/src/cli/connect/mcp/tools/capabilities.js +57 -0
  62. package/dist/src/cli/connect/mcp/tools/capabilities.js.map +1 -0
  63. package/dist/src/cli/connect/mcp/tools/catalogue.d.ts +9 -0
  64. package/dist/src/cli/connect/mcp/tools/catalogue.d.ts.map +1 -0
  65. package/dist/src/cli/connect/mcp/tools/catalogue.js +22 -0
  66. package/dist/src/cli/connect/mcp/tools/catalogue.js.map +1 -0
  67. package/dist/src/cli/connect/mcp/tools/consent.d.ts +9 -0
  68. package/dist/src/cli/connect/mcp/tools/consent.d.ts.map +1 -0
  69. package/dist/src/cli/connect/mcp/tools/consent.js +25 -0
  70. package/dist/src/cli/connect/mcp/tools/consent.js.map +1 -0
  71. package/dist/src/cli/connect/mcp/tools/core.d.ts +10 -0
  72. package/dist/src/cli/connect/mcp/tools/core.d.ts.map +1 -0
  73. package/dist/src/cli/connect/mcp/tools/core.js +138 -0
  74. package/dist/src/cli/connect/mcp/tools/core.js.map +1 -0
  75. package/dist/src/cli/connect/mcp/tools/cortex.d.ts +9 -0
  76. package/dist/src/cli/connect/mcp/tools/cortex.d.ts.map +1 -0
  77. package/dist/src/cli/connect/mcp/tools/cortex.js +33 -0
  78. package/dist/src/cli/connect/mcp/tools/cortex.js.map +1 -0
  79. package/dist/src/cli/connect/mcp/tools/extensions.d.ts +9 -0
  80. package/dist/src/cli/connect/mcp/tools/extensions.d.ts.map +1 -0
  81. package/dist/src/cli/connect/mcp/tools/extensions.js +47 -0
  82. package/dist/src/cli/connect/mcp/tools/extensions.js.map +1 -0
  83. package/dist/src/cli/connect/mcp/tools/flags.d.ts +8 -0
  84. package/dist/src/cli/connect/mcp/tools/flags.d.ts.map +1 -0
  85. package/dist/src/cli/connect/mcp/tools/flags.js +12 -0
  86. package/dist/src/cli/connect/mcp/tools/flags.js.map +1 -0
  87. package/dist/src/cli/connect/mcp/tools/groups.d.ts +9 -0
  88. package/dist/src/cli/connect/mcp/tools/groups.d.ts.map +1 -0
  89. package/dist/src/cli/connect/mcp/tools/groups.js +42 -0
  90. package/dist/src/cli/connect/mcp/tools/groups.js.map +1 -0
  91. package/dist/src/cli/connect/mcp/tools/handbook.d.ts +9 -0
  92. package/dist/src/cli/connect/mcp/tools/handbook.d.ts.map +1 -0
  93. package/dist/src/cli/connect/mcp/tools/handbook.js +13 -0
  94. package/dist/src/cli/connect/mcp/tools/handbook.js.map +1 -0
  95. package/dist/src/cli/connect/mcp/tools/index.d.ts +10 -0
  96. package/dist/src/cli/connect/mcp/tools/index.d.ts.map +1 -0
  97. package/dist/src/cli/connect/mcp/tools/index.js +41 -0
  98. package/dist/src/cli/connect/mcp/tools/index.js.map +1 -0
  99. package/dist/src/cli/connect/mcp/tools/instances.d.ts +9 -0
  100. package/dist/src/cli/connect/mcp/tools/instances.d.ts.map +1 -0
  101. package/dist/src/cli/connect/mcp/tools/instances.js +24 -0
  102. package/dist/src/cli/connect/mcp/tools/instances.js.map +1 -0
  103. package/dist/src/cli/connect/mcp/tools/knowledge.d.ts +9 -0
  104. package/dist/src/cli/connect/mcp/tools/knowledge.d.ts.map +1 -0
  105. package/dist/src/cli/connect/mcp/tools/knowledge.js +28 -0
  106. package/dist/src/cli/connect/mcp/tools/knowledge.js.map +1 -0
  107. package/dist/src/cli/connect/mcp/tools/memory-ext.d.ts +9 -0
  108. package/dist/src/cli/connect/mcp/tools/memory-ext.d.ts.map +1 -0
  109. package/dist/src/cli/connect/mcp/tools/memory-ext.js +11 -0
  110. package/dist/src/cli/connect/mcp/tools/memory-ext.js.map +1 -0
  111. package/dist/src/cli/connect/mcp/tools/organisms.d.ts +9 -0
  112. package/dist/src/cli/connect/mcp/tools/organisms.d.ts.map +1 -0
  113. package/dist/src/cli/connect/mcp/tools/organisms.js +32 -0
  114. package/dist/src/cli/connect/mcp/tools/organisms.js.map +1 -0
  115. package/dist/src/cli/connect/mcp/tools/wallet-ext.d.ts +8 -0
  116. package/dist/src/cli/connect/mcp/tools/wallet-ext.d.ts.map +1 -0
  117. package/dist/src/cli/connect/mcp/tools/wallet-ext.js +11 -0
  118. package/dist/src/cli/connect/mcp/tools/wallet-ext.js.map +1 -0
  119. package/dist/src/cli/connect/mcp/wakeup.d.ts +3 -0
  120. package/dist/src/cli/connect/mcp/wakeup.d.ts.map +1 -0
  121. package/dist/src/cli/connect/mcp/wakeup.js +59 -0
  122. package/dist/src/cli/connect/mcp/wakeup.js.map +1 -0
  123. package/dist/src/cli/connect/send.d.ts +2 -0
  124. package/dist/src/cli/connect/send.d.ts.map +1 -0
  125. package/dist/src/cli/connect/send.js +35 -0
  126. package/dist/src/cli/connect/send.js.map +1 -0
  127. package/dist/src/cli/connect/skill-bundle.d.ts +3 -0
  128. package/dist/src/cli/connect/skill-bundle.d.ts.map +1 -0
  129. package/dist/src/cli/connect/skill-bundle.js +28 -0
  130. package/dist/src/cli/connect/skill-bundle.js.map +1 -0
  131. package/dist/src/cli/connect/status.d.ts +2 -0
  132. package/dist/src/cli/connect/status.d.ts.map +1 -0
  133. package/dist/src/cli/connect/status.js +33 -0
  134. package/dist/src/cli/connect/status.js.map +1 -0
  135. package/dist/src/cli/connect/tasks.d.ts +2 -0
  136. package/dist/src/cli/connect/tasks.d.ts.map +1 -0
  137. package/dist/src/cli/connect/tasks.js +32 -0
  138. package/dist/src/cli/connect/tasks.js.map +1 -0
  139. package/dist/src/index.js +112 -0
  140. package/dist/src/index.js.map +1 -1
  141. package/package.json +77 -97
File without changes
@@ -111,17 +111,17 @@ const PLATFORMS = {
111
111
  <p>Windows requires WSL2. Open PowerShell as Admin:</p>
112
112
  <ol><li>Install WSL2: <code>wsl --install</code> (restart if prompted)</li>
113
113
  <li>In WSL2: <code>curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash - && sudo apt-get install -y nodejs</code></li>
114
- <li>Run: <code>npx @aimeat/connect</code> and follow the prompts</li></ol>
114
+ <li>Run: <code>npx aimeat connect</code> and follow the prompts</li></ol>
115
115
  <h4>Compatible Agent Runtimes</h4>
116
116
  <p><a href="https://openclaw.ai" target="_blank">OpenClaw</a>, Claude Code, Hermes, or any MCP-capable tool.</p>`,
117
117
  mac: `<h4>Install Node.js</h4>
118
118
  <ol><li><code>brew install node</code></li>
119
- <li>Run: <code>npx @aimeat/connect</code> and follow the prompts</li></ol>
119
+ <li>Run: <code>npx aimeat connect</code> and follow the prompts</li></ol>
120
120
  <h4>Compatible Agent Runtimes</h4>
121
121
  <p><a href="https://openclaw.ai" target="_blank">OpenClaw</a>, Claude Code, Hermes, or any MCP-capable tool.</p>`,
122
122
  linux: `<h4>Install Node.js</h4>
123
123
  <ol><li><code>curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash - && sudo apt-get install -y nodejs</code></li>
124
- <li>Run: <code>npx @aimeat/connect</code> and follow the prompts</li></ol>
124
+ <li>Run: <code>npx aimeat connect</code> and follow the prompts</li></ol>
125
125
  <h4>Compatible Agent Runtimes</h4>
126
126
  <p><a href="https://openclaw.ai" target="_blank">OpenClaw</a>, Claude Code, Hermes, or any MCP-capable tool.</p>`,
127
127
  wsl2: `<h4>Setup WSL2 (if not already)</h4>
@@ -129,16 +129,16 @@ const PLATFORMS = {
129
129
  <li>Restart and set up your Linux username/password</li></ol>
130
130
  <h4>Install Node.js</h4>
131
131
  <ol><li><code>curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash - && sudo apt-get install -y nodejs</code></li>
132
- <li>Run: <code>npx @aimeat/connect</code> and follow the prompts</li></ol>`,
132
+ <li>Run: <code>npx aimeat connect</code> and follow the prompts</li></ol>`,
133
133
  android: `<h4>Termux</h4>
134
134
  <ol><li>Install <a href="https://f-droid.org/packages/com.termux/" target="_blank">Termux from F-Droid</a></li>
135
135
  <li><code>pkg update && pkg install nodejs</code></li>
136
- <li>Run: <code>npx @aimeat/connect</code> and follow the prompts</li></ol>`,
136
+ <li>Run: <code>npx aimeat connect</code> and follow the prompts</li></ol>`,
137
137
  aws: `<h4>EC2 Setup</h4>
138
138
  <ol><li>Launch an EC2 instance (t3.micro is fine)</li>
139
139
  <li>SSH in and install Node.js 22+</li>
140
- <li>Run: <code>npx @aimeat/connect</code></li>
141
- <li>Then: <code>npx @aimeat/connect serve</code> for persistent MCP server</li></ol>`,
140
+ <li>Run: <code>npx aimeat connect</code></li>
141
+ <li>Then: <code>npx aimeat connect serve</code> for persistent MCP server</li></ol>`,
142
142
  };
143
143
  const PLATFORM_KEYS = ['windows','mac','linux','wsl2','android','aws'];
144
144
  const PLATFORM_LABELS = { windows:'profile.platforms.windows', mac:'profile.platforms.mac', linux:'profile.platforms.linux', wsl2:'profile.platforms.wsl2', android:'profile.platforms.android', aws:'profile.platforms.aws' };
@@ -362,16 +362,16 @@ export default function AgentsTab({ session, showToast, onStats }) {
362
362
  ${connectExpanded && html`
363
363
  <div class="pf-agd-connect-content">
364
364
  <p class="mb-half text-bold">${t('profile.agents.cliInstall')}</p>
365
- <div class="agent-prompt-box"><code>npx @aimeat/connect \\${'\n'} --url ${getNodeUrl()} \\${'\n'} --owner ${session.owner}</code></div>
365
+ <div class="agent-prompt-box"><code>npx aimeat connect \\${'\n'} --url ${getNodeUrl()} \\${'\n'} --owner ${session.owner}</code></div>
366
366
  <button class="copy-prompt-btn" onClick=${() => {
367
- copyToClipboard(`npx @aimeat/connect --url ${getNodeUrl()} --owner ${session.owner}`).then(() => {
367
+ copyToClipboard(`npx aimeat connect --url ${getNodeUrl()} --owner ${session.owner}`).then(() => {
368
368
  setPromptCopied(true);
369
369
  setTimeout(() => setPromptCopied(false), 2000);
370
370
  });
371
371
  }}>${promptCopied ? '\u2705 ' + t('profile.agents.copied') : t('profile.agents.copyPrompt')}</button>
372
372
 
373
373
  <p class="mt-1 mb-half text-bold">${t('profile.agents.cliServe')}</p>
374
- <div class="agent-prompt-box"><code>npx @aimeat/connect serve</code></div>
374
+ <div class="agent-prompt-box"><code>npx aimeat connect serve</code></div>
375
375
 
376
376
  <p class="mt-1 text-caption">${t('profile.agents.cliDesc')}</p>
377
377
 
@@ -0,0 +1,24 @@
1
+ export interface ApiResponse {
2
+ ok: boolean;
3
+ data?: unknown;
4
+ error?: {
5
+ code: string;
6
+ message: string;
7
+ };
8
+ }
9
+ export declare class AimeatClient {
10
+ private baseUrl;
11
+ private token;
12
+ constructor(baseUrl: string, token?: string);
13
+ static fromConfig(): Promise<AimeatClient>;
14
+ private headers;
15
+ get(path: string): Promise<ApiResponse>;
16
+ post(path: string, body?: unknown): Promise<ApiResponse>;
17
+ put(path: string, body?: unknown): Promise<ApiResponse>;
18
+ patch(path: string, body?: unknown): Promise<ApiResponse>;
19
+ delete(path: string): Promise<ApiResponse>;
20
+ getBaseUrl(): string;
21
+ getTokenValue(): string | null;
22
+ setToken(t: string): void;
23
+ }
24
+ //# sourceMappingURL=api-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../../../../src/cli/connect/api-client.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,OAAO,CAAC;IACZ,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3C;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,KAAK,CAAuB;gBAExB,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;WAK9B,UAAU,IAAI,OAAO,CAAC,YAAY,CAAC;IAQhD,OAAO,CAAC,OAAO;IAMT,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAMvC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC;IAUxD,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC;IAUvD,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC;IAUzD,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAMhD,UAAU,IAAI,MAAM;IACpB,aAAa,IAAI,MAAM,GAAG,IAAI;IAC9B,QAAQ,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;CAC1B"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * @file api-client.ts
3
+ * @description HTTP client for AIMEAT node API with automatic auth header injection.
4
+ * @structure Wraps fetch, response-envelope handling, and stored-token based client construction.
5
+ * @usage Imported by `aimeat connect` subcommands and MCP tools.
6
+ * @version-history v1.9.4 — 2026-05-28 — Update connector guidance and close one-shot CLI HTTP connections.
7
+ */
8
+ import { getToken } from './keychain.js';
9
+ import { loadConfig } from './config.js';
10
+ export class AimeatClient {
11
+ baseUrl;
12
+ token = null;
13
+ constructor(baseUrl, token) {
14
+ this.baseUrl = baseUrl.replace(/\/$/, '');
15
+ this.token = token ?? null;
16
+ }
17
+ static async fromConfig() {
18
+ const config = loadConfig();
19
+ if (!config)
20
+ throw new Error('Not configured. Run: npx aimeat connect');
21
+ const token = await getToken(config.agent, config.owner);
22
+ if (!token)
23
+ throw new Error('No stored token. Run: npx aimeat connect');
24
+ return new AimeatClient(config.node_url, token);
25
+ }
26
+ headers() {
27
+ const h = { 'Content-Type': 'application/json', Connection: 'close' };
28
+ if (this.token)
29
+ h['Authorization'] = `Bearer ${this.token}`;
30
+ return h;
31
+ }
32
+ async get(path) {
33
+ const url = path.startsWith('http') ? path : `${this.baseUrl}${path}`;
34
+ const res = await fetch(url, { headers: this.headers() });
35
+ return res.json();
36
+ }
37
+ async post(path, body) {
38
+ const url = path.startsWith('http') ? path : `${this.baseUrl}${path}`;
39
+ const res = await fetch(url, {
40
+ method: 'POST',
41
+ headers: this.headers(),
42
+ body: body ? JSON.stringify(body) : undefined,
43
+ });
44
+ return res.json();
45
+ }
46
+ async put(path, body) {
47
+ const url = path.startsWith('http') ? path : `${this.baseUrl}${path}`;
48
+ const res = await fetch(url, {
49
+ method: 'PUT',
50
+ headers: this.headers(),
51
+ body: body ? JSON.stringify(body) : undefined,
52
+ });
53
+ return res.json();
54
+ }
55
+ async patch(path, body) {
56
+ const url = path.startsWith('http') ? path : `${this.baseUrl}${path}`;
57
+ const res = await fetch(url, {
58
+ method: 'PATCH',
59
+ headers: this.headers(),
60
+ body: body ? JSON.stringify(body) : undefined,
61
+ });
62
+ return res.json();
63
+ }
64
+ async delete(path) {
65
+ const url = path.startsWith('http') ? path : `${this.baseUrl}${path}`;
66
+ const res = await fetch(url, { method: 'DELETE', headers: this.headers() });
67
+ return res.json();
68
+ }
69
+ getBaseUrl() { return this.baseUrl; }
70
+ getTokenValue() { return this.token; }
71
+ setToken(t) { this.token = t; }
72
+ }
73
+ //# sourceMappingURL=api-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../../../src/cli/connect/api-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ interface AuthArgs {
2
+ url?: string;
3
+ owner?: string;
4
+ agent?: string;
5
+ }
6
+ export declare function runAuth(args: AuthArgs): Promise<void>;
7
+ export {};
8
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../../src/cli/connect/auth.ts"],"names":[],"mappings":"AAcA,UAAU,QAAQ;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAeD,wBAAsB,OAAO,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAqI3D"}
@@ -0,0 +1,161 @@
1
+ /**
2
+ * @file auth.ts
3
+ * @description Device authorization flow for agent registration.
4
+ * @structure Prompts for connection details, starts RFC 8628 device auth, stores the issued token, and downloads the skill bundle.
5
+ * @usage Called by `aimeat connect`.
6
+ * @version-history v1.9.4 — 2026-05-28 — Update connector guidance, name-based inbox checks, network errors, and lazy interactive prompts.
7
+ */
8
+ import { AimeatClient } from './api-client.js';
9
+ import { storeToken, getToken } from './keychain.js';
10
+ import { saveConfig, getConfigDir } from './config.js';
11
+ import { downloadSkillBundle } from './skill-bundle.js';
12
+ function createProgress(interactive, prompts) {
13
+ if (interactive && prompts)
14
+ return prompts.spinner();
15
+ return {
16
+ start(message) { console.log(message); },
17
+ stop(message) { if (message)
18
+ console.log(message); },
19
+ };
20
+ }
21
+ export async function runAuth(args) {
22
+ const interactive = Boolean(process.stdin.isTTY && process.stdout.isTTY);
23
+ const prompts = interactive ? await import('@clack/prompts') : null;
24
+ const intro = (message) => { if (prompts)
25
+ prompts.intro(message);
26
+ else
27
+ console.log(message); };
28
+ const outro = (message) => { if (prompts)
29
+ prompts.outro(message);
30
+ else
31
+ console.log(message); };
32
+ const info = (message) => { if (prompts)
33
+ prompts.log.info(message);
34
+ else
35
+ console.log(message); };
36
+ const success = (message) => { if (prompts)
37
+ prompts.log.success(message);
38
+ else
39
+ console.log(message); };
40
+ const warn = (message) => { if (prompts)
41
+ prompts.log.warn(message);
42
+ else
43
+ console.warn(message); };
44
+ const fail = (message) => { if (prompts)
45
+ prompts.log.error(message);
46
+ else
47
+ console.error(message); };
48
+ intro('AIMEAT Agent Connector');
49
+ if (!interactive && (!args.url || !args.owner || !args.agent)) {
50
+ fail('Missing required options. Usage: npx aimeat connect --url <node-url> --owner <owner> --agent <agent-name>');
51
+ process.exit(1);
52
+ }
53
+ const nodeUrlInput = args.url ?? await prompts.text({ message: 'AIMEAT node URL:', placeholder: 'https://aimeat.io' });
54
+ if (prompts?.isCancel(nodeUrlInput)) {
55
+ prompts.cancel('Cancelled.');
56
+ process.exit(0);
57
+ }
58
+ const nodeUrl = nodeUrlInput;
59
+ const ownerInput = args.owner ?? await prompts.text({ message: 'Your owner handle:' });
60
+ if (prompts?.isCancel(ownerInput)) {
61
+ prompts.cancel('Cancelled.');
62
+ process.exit(0);
63
+ }
64
+ const owner = ownerInput;
65
+ const agentInput = args.agent ?? await prompts.text({ message: 'Agent name:', placeholder: 'claude' });
66
+ if (prompts?.isCancel(agentInput)) {
67
+ prompts.cancel('Cancelled.');
68
+ process.exit(0);
69
+ }
70
+ const agentName = agentInput;
71
+ const client = new AimeatClient(nodeUrl);
72
+ const existingToken = await getToken(agentName, owner);
73
+ if (existingToken) {
74
+ client.setToken(existingToken);
75
+ try {
76
+ const check = await client.get(`/v1/agents/${encodeURIComponent(agentName)}/inbox`);
77
+ if (check.ok) {
78
+ success('Already connected! Token is valid.');
79
+ outro('Done.');
80
+ return;
81
+ }
82
+ }
83
+ catch {
84
+ warn('Could not verify stored token. Starting fresh auth.');
85
+ }
86
+ }
87
+ const s = createProgress(interactive, prompts);
88
+ s.start('Requesting device authorization...');
89
+ let authResp;
90
+ try {
91
+ authResp = await client.post('/v1/agents/device-authorize', {
92
+ agent_name: agentName,
93
+ owner,
94
+ });
95
+ }
96
+ catch (e) {
97
+ s.stop('Authorization request failed.');
98
+ fail(e.message);
99
+ process.exit(1);
100
+ }
101
+ if (!authResp.ok) {
102
+ s.stop('Authorization request failed.');
103
+ fail(authResp.error?.message ?? 'Unknown error');
104
+ process.exit(1);
105
+ }
106
+ const authData = authResp.data;
107
+ s.stop(`Verification code: ${authData.user_code}`);
108
+ info(`Open ${authData.verification_uri} to approve.`);
109
+ s.start('Polling for approval (every 5s)...');
110
+ const interval = (authData.interval ?? 5) * 1000;
111
+ let tokenData = null;
112
+ for (let i = 0; i < 360; i++) {
113
+ await new Promise(r => setTimeout(r, interval));
114
+ let pollResp;
115
+ try {
116
+ pollResp = await client.post('/v1/agents/device-token', {
117
+ device_code: authData.device_code,
118
+ grant_type: 'urn:ietf:params:oauth:grant-type:device_code',
119
+ });
120
+ }
121
+ catch (e) {
122
+ s.stop('Polling failed.');
123
+ fail(e.message);
124
+ process.exit(1);
125
+ }
126
+ if (pollResp.ok) {
127
+ tokenData = pollResp.data;
128
+ break;
129
+ }
130
+ const errCode = pollResp.error;
131
+ if (errCode === 'access_denied') {
132
+ s.stop('Authorization denied.');
133
+ fail('The owner denied the authorization request.');
134
+ process.exit(1);
135
+ }
136
+ if (errCode !== 'authorization_pending' && errCode !== 'slow_down') {
137
+ s.stop('Unexpected error.');
138
+ fail(JSON.stringify(pollResp));
139
+ process.exit(1);
140
+ }
141
+ }
142
+ if (!tokenData) {
143
+ s.stop('Timed out waiting for approval.');
144
+ process.exit(1);
145
+ }
146
+ const token = tokenData;
147
+ s.stop('Approved!');
148
+ await storeToken(agentName, owner, token.access_token);
149
+ success(`Token stored (aimeat:${agentName}@${owner})`);
150
+ saveConfig({ node_url: nodeUrl, agent: agentName, owner });
151
+ client.setToken(token.access_token);
152
+ try {
153
+ await downloadSkillBundle(client, agentName);
154
+ success(`Skill bundle downloaded to ${getConfigDir()}/${agentName}/SKILL.md`);
155
+ }
156
+ catch {
157
+ warn('Could not download skill bundle. Run: npx aimeat connect refresh');
158
+ }
159
+ outro('Done. Your agent is connected.');
160
+ }
161
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../../src/cli/connect/auth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ export interface AimeatConnectConfig {
2
+ node_url: string;
3
+ agent: string;
4
+ owner: string;
5
+ wake?: {
6
+ command?: string;
7
+ webhook?: string;
8
+ strategy?: 'command_first' | 'webhook_first' | 'command_only' | 'webhook_only';
9
+ };
10
+ poll_interval?: number;
11
+ }
12
+ export declare function getConfigDir(): string;
13
+ export declare function loadConfig(): AimeatConnectConfig | null;
14
+ export declare function saveConfig(config: AimeatConnectConfig): void;
15
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +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;IACd,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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * @file config.ts
3
+ * @description Configuration loader for ~/.aimeat/config.yaml
4
+ */
5
+ import { readFileSync, writeFileSync, existsSync, mkdirSync } from 'node:fs';
6
+ import { join } from 'node:path';
7
+ import { homedir } from 'node:os';
8
+ import { parse, stringify } from 'yaml';
9
+ const CONFIG_DIR = join(homedir(), '.aimeat');
10
+ const CONFIG_FILE = join(CONFIG_DIR, 'config.yaml');
11
+ export function getConfigDir() { return CONFIG_DIR; }
12
+ export function loadConfig() {
13
+ if (!existsSync(CONFIG_FILE))
14
+ return null;
15
+ const raw = readFileSync(CONFIG_FILE, 'utf-8');
16
+ return parse(raw);
17
+ }
18
+ export function saveConfig(config) {
19
+ if (!existsSync(CONFIG_DIR))
20
+ mkdirSync(CONFIG_DIR, { recursive: true });
21
+ writeFileSync(CONFIG_FILE, stringify(config), 'utf-8');
22
+ }
23
+ //# sourceMappingURL=config.js.map
@@ -0,0 +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;AAcxC,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"}
@@ -0,0 +1,2 @@
1
+ export declare function runDocs(module?: string): Promise<void>;
2
+ //# sourceMappingURL=docs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docs.d.ts","sourceRoot":"","sources":["../../../../src/cli/connect/docs.ts"],"names":[],"mappings":"AAYA,wBAAsB,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAuB5D"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * @file docs.ts
3
+ * @description CLI subcommand: view documentation
4
+ * @structure Reads cached handbook markdown from the connector config directory and prints overview or module docs.
5
+ * @usage Called by `aimeat connect docs [module]`.
6
+ * @version-history v1.9.4 — 2026-05-28 — Update connector guidance and fail missing remote modules with a nonzero exit.
7
+ */
8
+ import { AimeatClient } from './api-client.js';
9
+ import { readFileSync, existsSync } from 'node:fs';
10
+ import { join } from 'node:path';
11
+ import { getConfigDir, loadConfig } from './config.js';
12
+ export async function runDocs(module) {
13
+ if (!module) {
14
+ const config = loadConfig();
15
+ const skillPath = config ? join(getConfigDir(), config.agent, 'SKILL.md') : null;
16
+ if (skillPath && existsSync(skillPath)) {
17
+ console.log(readFileSync(skillPath, 'utf-8'));
18
+ }
19
+ else {
20
+ console.log('No local docs found. Run: npx aimeat connect refresh');
21
+ console.log('Or specify a module: npx aimeat connect docs tasks');
22
+ }
23
+ return;
24
+ }
25
+ try {
26
+ const client = await AimeatClient.fromConfig();
27
+ const resp = await client.get(`/v1/agents/me/handbook/${encodeURIComponent(module)}`);
28
+ if (!resp.ok) {
29
+ console.error(`Module "${module}" not found.`);
30
+ process.exitCode = 1;
31
+ return;
32
+ }
33
+ const data = resp.data;
34
+ console.log(data.system_prompt ?? JSON.stringify(data, null, 2));
35
+ }
36
+ catch (e) {
37
+ console.error(e.message);
38
+ process.exitCode = 1;
39
+ }
40
+ }
41
+ //# sourceMappingURL=docs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docs.js","sourceRoot":"","sources":["../../../../src/cli/connect/docs.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEvD,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,MAAe;IAC3C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAC5B,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACjF,IAAI,SAAS,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YACvC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;QAChD,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAC;YACpE,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;QACpE,CAAC;QACD,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,UAAU,EAAE,CAAC;QAC/C,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,0BAA0B,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACtF,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YAAC,OAAO,CAAC,KAAK,CAAC,WAAW,MAAM,cAAc,CAAC,CAAC;YAAC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YAAC,OAAO;QAAC,CAAC;QAC/F,MAAM,IAAI,GAAG,IAAI,CAAC,IAAkC,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACnE,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAE,CAAW,CAAC,OAAO,CAAC,CAAC;QACpC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function runInbox(): Promise<void>;
2
+ //# sourceMappingURL=inbox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inbox.d.ts","sourceRoot":"","sources":["../../../../src/cli/connect/inbox.ts"],"names":[],"mappings":"AAUA,wBAAsB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAiB9C"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * @file inbox.ts
3
+ * @description CLI subcommand: check message inbox
4
+ * @structure Loads connector credentials, fetches pending inbound messages, and prints them as JSON.
5
+ * @usage Called by `aimeat connect inbox`.
6
+ * @version-history v1.9.4 — 2026-05-28 — Handle missing config and request failures without stack traces.
7
+ */
8
+ import { AimeatClient } from './api-client.js';
9
+ import { loadConfig } from './config.js';
10
+ export async function runInbox() {
11
+ try {
12
+ const client = await AimeatClient.fromConfig();
13
+ const config = loadConfig();
14
+ const resp = await client.get(`/v1/agents/${encodeURIComponent(config.agent)}/messages/inbox`);
15
+ if (!resp.ok) {
16
+ console.error('Failed to fetch inbox:', resp.error);
17
+ process.exitCode = 1;
18
+ return;
19
+ }
20
+ const messages = resp.data?.messages ?? [];
21
+ if (messages.length === 0) {
22
+ console.log('Inbox empty.');
23
+ return;
24
+ }
25
+ console.log(JSON.stringify(messages, null, 2));
26
+ }
27
+ catch (e) {
28
+ console.error(e.message);
29
+ process.exitCode = 1;
30
+ }
31
+ }
32
+ //# sourceMappingURL=inbox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inbox.js","sourceRoot":"","sources":["../../../../src/cli/connect/inbox.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,CAAC,KAAK,UAAU,QAAQ;IAC5B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,UAAU,EAAE,CAAC;QAC/C,MAAM,MAAM,GAAG,UAAU,EAAG,CAAC;QAC7B,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,cAAc,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAC/F,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YACpD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QACD,MAAM,QAAQ,GAAI,IAAI,CAAC,IAAiC,EAAE,QAAQ,IAAI,EAAE,CAAC;QACzE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YAAC,OAAO;QAAC,CAAC;QACnE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACjD,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAE,CAAW,CAAC,OAAO,CAAC,CAAC;QACpC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC;AACH,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare function storeToken(agent: string, owner: string, token: string): Promise<void>;
2
+ export declare function getToken(agent: string, owner: string): Promise<string | null>;
3
+ export declare function deleteToken(agent: string, owner: string): Promise<boolean>;
4
+ //# sourceMappingURL=keychain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keychain.d.ts","sourceRoot":"","sources":["../../../../src/cli/connect/keychain.ts"],"names":[],"mappings":"AAeA,wBAAsB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE3F;AAED,wBAAsB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAInF;AAED,wBAAsB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAKhF"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * @file keychain.ts
3
+ * @description Token storage abstraction. Uses a file-based fallback since keytar
4
+ * requires native compilation and may not be available in all environments.
5
+ */
6
+ import { readFileSync, writeFileSync, existsSync, unlinkSync, mkdirSync } from 'node:fs';
7
+ import { join } from 'node:path';
8
+ import { getConfigDir } from './config.js';
9
+ function tokenPath(agent, owner) {
10
+ const dir = join(getConfigDir(), 'tokens');
11
+ if (!existsSync(dir))
12
+ mkdirSync(dir, { recursive: true });
13
+ return join(dir, `${agent}@${owner}.token`);
14
+ }
15
+ export async function storeToken(agent, owner, token) {
16
+ writeFileSync(tokenPath(agent, owner), token, { mode: 0o600 });
17
+ }
18
+ export async function getToken(agent, owner) {
19
+ const p = tokenPath(agent, owner);
20
+ if (!existsSync(p))
21
+ return null;
22
+ return readFileSync(p, 'utf-8').trim();
23
+ }
24
+ export async function deleteToken(agent, owner) {
25
+ const p = tokenPath(agent, owner);
26
+ if (!existsSync(p))
27
+ return false;
28
+ unlinkSync(p);
29
+ return true;
30
+ }
31
+ //# sourceMappingURL=keychain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keychain.js","sourceRoot":"","sources":["../../../../src/cli/connect/keychain.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACzF,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,SAAS,SAAS,CAAC,KAAa,EAAE,KAAa;IAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,EAAE,EAAE,QAAQ,CAAC,CAAC;IAC3C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1D,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,KAAK,QAAQ,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,KAAa,EAAE,KAAa,EAAE,KAAa;IAC1E,aAAa,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AACjE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,KAAa,EAAE,KAAa;IACzD,MAAM,CAAC,GAAG,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAClC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAChC,OAAO,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;AACzC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,KAAa,EAAE,KAAa;IAC5D,MAAM,CAAC,GAAG,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAClC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACjC,UAAU,CAAC,CAAC,CAAC,CAAC;IACd,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * @file poller.ts
3
+ * @description Background poller for new tasks and messages. Triggers agent wake-up.
4
+ * @structure Polls queued tasks and pending messages, compares counts, and calls the wake-up adapter on new work.
5
+ * @usage Started by `aimeat connect serve` after MCP server registration.
6
+ * @version-history v1.9.4 — 2026-05-28 — Use the name-based message inbox endpoint.
7
+ */
8
+ import type { AimeatClient } from '../api-client.js';
9
+ import type { AimeatConnectConfig } from '../config.js';
10
+ export declare function startPoller(client: AimeatClient, config: AimeatConnectConfig): void;
11
+ //# sourceMappingURL=poller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"poller.d.ts","sourceRoot":"","sources":["../../../../../src/cli/connect/mcp/poller.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAMxD,wBAAgB,WAAW,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,mBAAmB,GAAG,IAAI,CA+BnF"}
@@ -0,0 +1,34 @@
1
+ import { wakeAgent } from './wakeup.js';
2
+ let lastTaskCount = -1;
3
+ let lastMessageCount = -1;
4
+ export function startPoller(client, config) {
5
+ const interval = (config.poll_interval ?? 30) * 1000;
6
+ const enc = encodeURIComponent(config.agent);
7
+ async function poll() {
8
+ try {
9
+ const tasksResp = await client.get(`/v1/agents/${enc}/tasks?status=queued`);
10
+ if (tasksResp.ok) {
11
+ const tasks = tasksResp.data?.tasks ?? [];
12
+ if (lastTaskCount >= 0 && tasks.length > lastTaskCount) {
13
+ await wakeAgent(config, 'task_new', `${tasks.length - lastTaskCount} new task(s) queued`);
14
+ }
15
+ lastTaskCount = tasks.length;
16
+ }
17
+ const msgResp = await client.get(`/v1/agents/${enc}/messages/inbox`);
18
+ if (msgResp.ok) {
19
+ const messages = msgResp.data?.messages ?? [];
20
+ if (lastMessageCount >= 0 && messages.length > lastMessageCount) {
21
+ await wakeAgent(config, 'message_new', `${messages.length - lastMessageCount} new message(s)`);
22
+ }
23
+ lastMessageCount = messages.length;
24
+ }
25
+ }
26
+ catch (err) {
27
+ console.error(`[poller] Error: ${err.message}`);
28
+ }
29
+ }
30
+ poll();
31
+ setInterval(poll, interval);
32
+ console.error(`[poller] Polling every ${config.poll_interval ?? 30}s for tasks and messages`);
33
+ }
34
+ //# sourceMappingURL=poller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"poller.js","sourceRoot":"","sources":["../../../../../src/cli/connect/mcp/poller.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,IAAI,aAAa,GAAG,CAAC,CAAC,CAAC;AACvB,IAAI,gBAAgB,GAAG,CAAC,CAAC,CAAC;AAE1B,MAAM,UAAU,WAAW,CAAC,MAAoB,EAAE,MAA2B;IAC3E,MAAM,QAAQ,GAAG,CAAC,MAAM,CAAC,aAAa,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;IACrD,MAAM,GAAG,GAAG,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAE7C,KAAK,UAAU,IAAI;QACjB,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,cAAc,GAAG,sBAAsB,CAAC,CAAC;YAC5E,IAAI,SAAS,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,KAAK,GAAI,SAAS,CAAC,IAA8B,EAAE,KAAK,IAAI,EAAE,CAAC;gBACrE,IAAI,aAAa,IAAI,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,aAAa,EAAE,CAAC;oBACvD,MAAM,SAAS,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC,MAAM,GAAG,aAAa,qBAAqB,CAAC,CAAC;gBAC5F,CAAC;gBACD,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC;YAC/B,CAAC;YAED,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,cAAc,GAAG,iBAAiB,CAAC,CAAC;YACrE,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;gBACf,MAAM,QAAQ,GAAI,OAAO,CAAC,IAAiC,EAAE,QAAQ,IAAI,EAAE,CAAC;gBAC5E,IAAI,gBAAgB,IAAI,CAAC,IAAI,QAAQ,CAAC,MAAM,GAAG,gBAAgB,EAAE,CAAC;oBAChE,MAAM,SAAS,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,QAAQ,CAAC,MAAM,GAAG,gBAAgB,iBAAiB,CAAC,CAAC;gBACjG,CAAC;gBACD,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CAAC;YACrC,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,mBAAoB,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAED,IAAI,EAAE,CAAC;IACP,WAAW,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC5B,OAAO,CAAC,KAAK,CAAC,0BAA0B,MAAM,CAAC,aAAa,IAAI,EAAE,0BAA0B,CAAC,CAAC;AAChG,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * @file resources.ts
3
+ * @description MCP resource providers for handbook, skill bundle, and reference docs.
4
+ * @structure Registers connector-local handbook and skill bundle resources for MCP clients.
5
+ * @usage Called by the `aimeat connect serve` MCP server.
6
+ * @version-history v1.9.4 — 2026-05-28 — Update connector guidance to the integrated AIMEAT CLI command.
7
+ */
8
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
9
+ import type { AimeatClient } from '../api-client.js';
10
+ export declare function registerResources(mcp: McpServer, client: AimeatClient): void;
11
+ //# sourceMappingURL=resources.d.ts.map