aimeat 1.9.2 → 1.9.3

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 +70 -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 +97 -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 +36 -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 +20 -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 +8 -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 +8 -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 +30 -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 +24 -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 +25 -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 +30 -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 +22 -0
  138. package/dist/src/cli/connect/tasks.js.map +1 -0
  139. package/dist/src/index.js +86 -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":"AAOA,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,70 @@
1
+ /**
2
+ * @file api-client.ts
3
+ * @description HTTP client for AIMEAT node API with automatic auth header injection.
4
+ */
5
+ import { getToken } from './keychain.js';
6
+ import { loadConfig } from './config.js';
7
+ export class AimeatClient {
8
+ baseUrl;
9
+ token = null;
10
+ constructor(baseUrl, token) {
11
+ this.baseUrl = baseUrl.replace(/\/$/, '');
12
+ this.token = token ?? null;
13
+ }
14
+ static async fromConfig() {
15
+ const config = loadConfig();
16
+ if (!config)
17
+ throw new Error('Not configured. Run: npx @aimeat/connect');
18
+ const token = await getToken(config.agent, config.owner);
19
+ if (!token)
20
+ throw new Error('No stored token. Run: npx @aimeat/connect');
21
+ return new AimeatClient(config.node_url, token);
22
+ }
23
+ headers() {
24
+ const h = { 'Content-Type': 'application/json' };
25
+ if (this.token)
26
+ h['Authorization'] = `Bearer ${this.token}`;
27
+ return h;
28
+ }
29
+ async get(path) {
30
+ const url = path.startsWith('http') ? path : `${this.baseUrl}${path}`;
31
+ const res = await fetch(url, { headers: this.headers() });
32
+ return res.json();
33
+ }
34
+ async post(path, body) {
35
+ const url = path.startsWith('http') ? path : `${this.baseUrl}${path}`;
36
+ const res = await fetch(url, {
37
+ method: 'POST',
38
+ headers: this.headers(),
39
+ body: body ? JSON.stringify(body) : undefined,
40
+ });
41
+ return res.json();
42
+ }
43
+ async put(path, body) {
44
+ const url = path.startsWith('http') ? path : `${this.baseUrl}${path}`;
45
+ const res = await fetch(url, {
46
+ method: 'PUT',
47
+ headers: this.headers(),
48
+ body: body ? JSON.stringify(body) : undefined,
49
+ });
50
+ return res.json();
51
+ }
52
+ async patch(path, body) {
53
+ const url = path.startsWith('http') ? path : `${this.baseUrl}${path}`;
54
+ const res = await fetch(url, {
55
+ method: 'PATCH',
56
+ headers: this.headers(),
57
+ body: body ? JSON.stringify(body) : undefined,
58
+ });
59
+ return res.json();
60
+ }
61
+ async delete(path) {
62
+ const url = path.startsWith('http') ? path : `${this.baseUrl}${path}`;
63
+ const res = await fetch(url, { method: 'DELETE', headers: this.headers() });
64
+ return res.json();
65
+ }
66
+ getBaseUrl() { return this.baseUrl; }
67
+ getTokenValue() { return this.token; }
68
+ setToken(t) { this.token = t; }
69
+ }
70
+ //# 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":"AAUA,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,CAmG3D"}
@@ -0,0 +1,97 @@
1
+ /**
2
+ * @file auth.ts
3
+ * @description Device authorization flow for agent registration.
4
+ */
5
+ import * as p from '@clack/prompts';
6
+ import { AimeatClient } from './api-client.js';
7
+ import { storeToken, getToken } from './keychain.js';
8
+ import { saveConfig, getConfigDir } from './config.js';
9
+ import { downloadSkillBundle } from './skill-bundle.js';
10
+ export async function runAuth(args) {
11
+ p.intro('AIMEAT Agent Connector');
12
+ const nodeUrl = args.url ?? await p.text({ message: 'AIMEAT node URL:', placeholder: 'https://aimeat.io' });
13
+ if (p.isCancel(nodeUrl)) {
14
+ p.cancel('Cancelled.');
15
+ process.exit(0);
16
+ }
17
+ const owner = args.owner ?? await p.text({ message: 'Your owner handle:' });
18
+ if (p.isCancel(owner)) {
19
+ p.cancel('Cancelled.');
20
+ process.exit(0);
21
+ }
22
+ const agentName = args.agent ?? await p.text({ message: 'Agent name:', placeholder: 'claude' });
23
+ if (p.isCancel(agentName)) {
24
+ p.cancel('Cancelled.');
25
+ process.exit(0);
26
+ }
27
+ const client = new AimeatClient(nodeUrl);
28
+ const existingToken = await getToken(agentName, owner);
29
+ if (existingToken) {
30
+ client.setToken(existingToken);
31
+ const check = await client.get('/v1/agents/me/inbox');
32
+ if (check.ok) {
33
+ p.log.success('Already connected! Token is valid.');
34
+ p.outro('Done.');
35
+ return;
36
+ }
37
+ p.log.warn('Stored token is expired or invalid. Starting fresh auth.');
38
+ }
39
+ const s = p.spinner();
40
+ s.start('Requesting device authorization...');
41
+ const authResp = await client.post('/v1/agents/device-authorize', {
42
+ agent_name: agentName,
43
+ owner,
44
+ });
45
+ if (!authResp.ok) {
46
+ s.stop('Authorization request failed.');
47
+ p.log.error(authResp.error?.message ?? 'Unknown error');
48
+ process.exit(1);
49
+ }
50
+ const authData = authResp.data;
51
+ s.stop(`Verification code: ${authData.user_code}`);
52
+ p.log.info(`Open ${authData.verification_uri} to approve.`);
53
+ s.start('Polling for approval (every 5s)...');
54
+ const interval = (authData.interval ?? 5) * 1000;
55
+ let tokenData = null;
56
+ for (let i = 0; i < 360; i++) {
57
+ await new Promise(r => setTimeout(r, interval));
58
+ const pollResp = await client.post('/v1/agents/device-token', {
59
+ device_code: authData.device_code,
60
+ grant_type: 'urn:ietf:params:oauth:grant-type:device_code',
61
+ });
62
+ if (pollResp.ok) {
63
+ tokenData = pollResp.data;
64
+ break;
65
+ }
66
+ const errCode = pollResp.error;
67
+ if (errCode === 'access_denied') {
68
+ s.stop('Authorization denied.');
69
+ p.log.error('The owner denied the authorization request.');
70
+ process.exit(1);
71
+ }
72
+ if (errCode !== 'authorization_pending' && errCode !== 'slow_down') {
73
+ s.stop('Unexpected error.');
74
+ p.log.error(JSON.stringify(pollResp));
75
+ process.exit(1);
76
+ }
77
+ }
78
+ if (!tokenData) {
79
+ s.stop('Timed out waiting for approval.');
80
+ process.exit(1);
81
+ }
82
+ const token = tokenData;
83
+ s.stop('Approved!');
84
+ await storeToken(agentName, owner, token.access_token);
85
+ p.log.success(`Token stored (aimeat:${agentName}@${owner})`);
86
+ saveConfig({ node_url: nodeUrl, agent: agentName, owner });
87
+ client.setToken(token.access_token);
88
+ try {
89
+ await downloadSkillBundle(client, agentName);
90
+ p.log.success(`Skill bundle downloaded to ${getConfigDir()}/${agentName}/SKILL.md`);
91
+ }
92
+ catch {
93
+ p.log.warn('Could not download skill bundle. Run: npx @aimeat/connect refresh');
94
+ }
95
+ p.outro('Done. Your agent is connected.');
96
+ }
97
+ //# 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":"AASA,wBAAsB,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAoB5D"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * @file docs.ts
3
+ * @description CLI subcommand: view documentation
4
+ */
5
+ import { AimeatClient } from './api-client.js';
6
+ import { readFileSync, existsSync } from 'node:fs';
7
+ import { join } from 'node:path';
8
+ import { getConfigDir, loadConfig } from './config.js';
9
+ export async function runDocs(module) {
10
+ if (!module) {
11
+ const config = loadConfig();
12
+ const skillPath = config ? join(getConfigDir(), config.agent, 'SKILL.md') : null;
13
+ if (skillPath && existsSync(skillPath)) {
14
+ console.log(readFileSync(skillPath, 'utf-8'));
15
+ }
16
+ else {
17
+ console.log('No local docs found. Run: npx @aimeat/connect refresh');
18
+ console.log('Or specify a module: npx @aimeat/connect docs tasks');
19
+ }
20
+ return;
21
+ }
22
+ try {
23
+ const client = await AimeatClient.fromConfig();
24
+ const resp = await client.get(`/v1/agents/me/handbook/${encodeURIComponent(module)}`);
25
+ if (!resp.ok) {
26
+ console.error(`Module "${module}" not found.`);
27
+ return;
28
+ }
29
+ const data = resp.data;
30
+ console.log(data.system_prompt ?? JSON.stringify(data, null, 2));
31
+ }
32
+ catch (e) {
33
+ console.error(e.message);
34
+ }
35
+ }
36
+ //# sourceMappingURL=docs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docs.js","sourceRoot":"","sources":["../../../../src/cli/connect/docs.ts"],"names":[],"mappings":"AAAA;;;GAGG;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,uDAAuD,CAAC,CAAC;YACrE,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;QACrE,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;QAAC,CAAC;QACzE,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;QAAC,OAAO,CAAC,KAAK,CAAE,CAAW,CAAC,OAAO,CAAC,CAAC;IAAC,CAAC;AACtD,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":"AAMA,wBAAsB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAO9C"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * @file inbox.ts
3
+ * @description CLI subcommand: check message inbox
4
+ */
5
+ import { AimeatClient } from './api-client.js';
6
+ export async function runInbox() {
7
+ const client = await AimeatClient.fromConfig();
8
+ const resp = await client.get('/v1/agents/me/messages/inbox');
9
+ if (!resp.ok) {
10
+ console.error('Failed to fetch inbox:', resp.error);
11
+ return;
12
+ }
13
+ const messages = resp.data?.messages ?? [];
14
+ if (messages.length === 0) {
15
+ console.log('Inbox empty.');
16
+ return;
17
+ }
18
+ console.log(JSON.stringify(messages, null, 2));
19
+ }
20
+ //# sourceMappingURL=inbox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inbox.js","sourceRoot":"","sources":["../../../../src/cli/connect/inbox.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,MAAM,CAAC,KAAK,UAAU,QAAQ;IAC5B,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,UAAU,EAAE,CAAC;IAC/C,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;IAC9D,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;QAAC,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAAC,OAAO;IAAC,CAAC;IAC9E,MAAM,QAAQ,GAAI,IAAI,CAAC,IAAiC,EAAE,QAAQ,IAAI,EAAE,CAAC;IACzE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAAC,OAAO;IAAC,CAAC;IACnE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACjD,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,8 @@
1
+ /**
2
+ * @file poller.ts
3
+ * @description Background poller for new tasks and messages. Triggers agent wake-up.
4
+ */
5
+ import type { AimeatClient } from '../api-client.js';
6
+ import type { AimeatConnectConfig } from '../config.js';
7
+ export declare function startPoller(client: AimeatClient, config: AimeatConnectConfig): void;
8
+ //# 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;;;GAGG;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/me/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":"AAMA,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,8BAA8B,CAAC,CAAC;YACjE,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,8 @@
1
+ /**
2
+ * @file resources.ts
3
+ * @description MCP resource providers for handbook, skill bundle, and reference docs.
4
+ */
5
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
6
+ import type { AimeatClient } from '../api-client.js';
7
+ export declare function registerResources(mcp: McpServer, client: AimeatClient): void;
8
+ //# sourceMappingURL=resources.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../../../../../src/cli/connect/mcp/resources.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAOrD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI,CAmC5E"}
@@ -0,0 +1,25 @@
1
+ import { readFileSync, existsSync } from 'node:fs';
2
+ import { join } from 'node:path';
3
+ import { getConfigDir, loadConfig } from '../config.js';
4
+ const MODULES = ['tasks', 'messages', 'work', 'services', 'memory', 'activity', 'social', 'collaboration', 'appdev', 'mcp'];
5
+ export function registerResources(mcp, client) {
6
+ mcp.resource('handbook', 'aimeat://handbook', { mimeType: 'application/json', description: 'Agent operating handbook' }, async (uri) => {
7
+ const resp = await client.get('/v1/agents/me/handbook');
8
+ return { contents: [{ uri: uri.toString(), text: JSON.stringify(resp.data, null, 2), mimeType: 'application/json' }] };
9
+ });
10
+ for (const mod of MODULES) {
11
+ mcp.resource(`handbook-${mod}`, `aimeat://handbook/${mod}`, { mimeType: 'application/json', description: `Handbook module: ${mod}` }, async (uri) => {
12
+ const resp = await client.get(`/v1/agents/me/handbook/${mod}`);
13
+ return { contents: [{ uri: uri.toString(), text: JSON.stringify(resp.data, null, 2), mimeType: 'application/json' }] };
14
+ });
15
+ }
16
+ mcp.resource('skill-bundle', 'aimeat://skill-bundle', { mimeType: 'text/markdown', description: 'Cached SKILL.md from last download' }, async (uri) => {
17
+ const config = loadConfig();
18
+ if (!config)
19
+ return { contents: [{ uri: uri.toString(), text: 'Not configured.' }] };
20
+ const path = join(getConfigDir(), config.agent, 'SKILL.md');
21
+ const text = existsSync(path) ? readFileSync(path, 'utf-8') : 'No skill bundle cached. Run: npx @aimeat/connect refresh';
22
+ return { contents: [{ uri: uri.toString(), text, mimeType: 'text/markdown' }] };
23
+ });
24
+ }
25
+ //# sourceMappingURL=resources.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resources.js","sourceRoot":"","sources":["../../../../../src/cli/connect/mcp/resources.ts"],"names":[],"mappings":"AAMA,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,cAAc,CAAC;AAExD,MAAM,OAAO,GAAG,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,eAAe,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;AAE5H,MAAM,UAAU,iBAAiB,CAAC,GAAc,EAAE,MAAoB;IACpE,GAAG,CAAC,QAAQ,CACV,UAAU,EACV,mBAAmB,EACnB,EAAE,QAAQ,EAAE,kBAAkB,EAAE,WAAW,EAAE,0BAA0B,EAAE,EACzE,KAAK,EAAE,GAAG,EAAE,EAAE;QACZ,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;QACxD,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC,EAAE,CAAC;IACzH,CAAC,CACF,CAAC;IAEF,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,GAAG,CAAC,QAAQ,CACV,YAAY,GAAG,EAAE,EACjB,qBAAqB,GAAG,EAAE,EAC1B,EAAE,QAAQ,EAAE,kBAAkB,EAAE,WAAW,EAAE,oBAAoB,GAAG,EAAE,EAAE,EACxE,KAAK,EAAE,GAAG,EAAE,EAAE;YACZ,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,0BAA0B,GAAG,EAAE,CAAC,CAAC;YAC/D,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC,EAAE,CAAC;QACzH,CAAC,CACF,CAAC;IACJ,CAAC;IAED,GAAG,CAAC,QAAQ,CACV,cAAc,EACd,uBAAuB,EACvB,EAAE,QAAQ,EAAE,eAAe,EAAE,WAAW,EAAE,oCAAoC,EAAE,EAChF,KAAK,EAAE,GAAG,EAAE,EAAE;QACZ,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAC5B,IAAI,CAAC,MAAM;YAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC;QACrF,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE,EAAE,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QAC5D,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,0DAA0D,CAAC;QACzH,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,eAAe,EAAE,CAAC,EAAE,CAAC;IAClF,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function runServe(_flags: Record<string, string>): Promise<void>;
2
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../../../src/cli/connect/mcp/server.ts"],"names":[],"mappings":"AAYA,wBAAsB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAsB5E"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * @file server.ts
3
+ * @description MCP server entry point. Registers all tools and resources, starts transport.
4
+ */
5
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
6
+ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
7
+ import { AimeatClient } from '../api-client.js';
8
+ import { loadConfig } from '../config.js';
9
+ import { registerAllTools } from './tools/index.js';
10
+ import { registerResources } from './resources.js';
11
+ import { startPoller } from './poller.js';
12
+ export async function runServe(_flags) {
13
+ const config = loadConfig();
14
+ if (!config) {
15
+ console.error('Not configured. Run: npx @aimeat/connect');
16
+ process.exit(1);
17
+ }
18
+ const client = await AimeatClient.fromConfig();
19
+ const mcp = new McpServer({
20
+ name: 'aimeat-connect',
21
+ version: '0.1.0',
22
+ });
23
+ registerAllTools(mcp, client, config.agent);
24
+ registerResources(mcp, client);
25
+ startPoller(client, config);
26
+ const transport = new StdioServerTransport();
27
+ await mcp.connect(transport);
28
+ console.error(`AIMEAT MCP server running (agent: ${config.agent}, node: ${config.node_url})`);
29
+ }
30
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../../../src/cli/connect/mcp/server.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,MAA8B;IAC3D,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC1D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,UAAU,EAAE,CAAC;IAE/C,MAAM,GAAG,GAAG,IAAI,SAAS,CAAC;QACxB,IAAI,EAAE,gBAAgB;QACtB,OAAO,EAAE,OAAO;KACjB,CAAC,CAAC;IAEH,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5C,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAE/B,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE5B,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAC7B,OAAO,CAAC,KAAK,CAAC,qCAAqC,MAAM,CAAC,KAAK,WAAW,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC;AAChG,CAAC"}