aimeat 1.9.4 → 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.
Files changed (190) hide show
  1. package/README.md +47 -10
  2. package/dist/locales/en.json +29 -8
  3. package/dist/locales/fi.json +39 -18
  4. package/dist/public/llms-template.txt +13 -2
  5. package/dist/public/views/profile/agents/agent-card.js +5 -2
  6. package/dist/public/views/profile/agents/tab-activity.js +17 -3
  7. package/dist/public/views/profile/agents/tab-integration.js +48 -5
  8. package/dist/public/views/profile/agents-capabilities-subtab.js +14 -7
  9. package/dist/public/views/profile/agents-tab.js +73 -19
  10. package/dist/scripts/audit-mcp-tools.d.ts +18 -0
  11. package/dist/scripts/audit-mcp-tools.d.ts.map +1 -0
  12. package/dist/scripts/audit-mcp-tools.js +164 -0
  13. package/dist/scripts/audit-mcp-tools.js.map +1 -0
  14. package/dist/src/cli/connect/auth.d.ts.map +1 -1
  15. package/dist/src/cli/connect/auth.js +134 -21
  16. package/dist/src/cli/connect/auth.js.map +1 -1
  17. package/dist/src/cli/connect/config.d.ts.map +1 -1
  18. package/dist/src/cli/connect/config.js.map +1 -1
  19. package/dist/src/cli/connect/mcp/poller.d.ts +8 -2
  20. package/dist/src/cli/connect/mcp/poller.d.ts.map +1 -1
  21. package/dist/src/cli/connect/mcp/poller.js +77 -12
  22. package/dist/src/cli/connect/mcp/poller.js.map +1 -1
  23. package/dist/src/cli/connect/mcp/tools/agent-caps.js +4 -4
  24. package/dist/src/cli/connect/mcp/tools/agent-caps.js.map +1 -1
  25. package/dist/src/cli/connect/mcp/tools/agent-messages.d.ts +1 -0
  26. package/dist/src/cli/connect/mcp/tools/agent-messages.d.ts.map +1 -1
  27. package/dist/src/cli/connect/mcp/tools/agent-messages.js +12 -5
  28. package/dist/src/cli/connect/mcp/tools/agent-messages.js.map +1 -1
  29. package/dist/src/cli/connect/mcp/tools/agent-tasks.d.ts +3 -0
  30. package/dist/src/cli/connect/mcp/tools/agent-tasks.d.ts.map +1 -1
  31. package/dist/src/cli/connect/mcp/tools/agent-tasks.js +31 -10
  32. package/dist/src/cli/connect/mcp/tools/agent-tasks.js.map +1 -1
  33. package/dist/src/cli/connect/mcp/tools/agent-telemetry.d.ts +11 -0
  34. package/dist/src/cli/connect/mcp/tools/agent-telemetry.d.ts.map +1 -0
  35. package/dist/src/cli/connect/mcp/tools/agent-telemetry.js +24 -0
  36. package/dist/src/cli/connect/mcp/tools/agent-telemetry.js.map +1 -0
  37. package/dist/src/cli/connect/mcp/tools/core.d.ts +5 -0
  38. package/dist/src/cli/connect/mcp/tools/core.d.ts.map +1 -1
  39. package/dist/src/cli/connect/mcp/tools/core.js +15 -3
  40. package/dist/src/cli/connect/mcp/tools/core.js.map +1 -1
  41. package/dist/src/cli/connect/mcp/tools/index.d.ts +2 -0
  42. package/dist/src/cli/connect/mcp/tools/index.d.ts.map +1 -1
  43. package/dist/src/cli/connect/mcp/tools/index.js +4 -0
  44. package/dist/src/cli/connect/mcp/tools/index.js.map +1 -1
  45. package/dist/src/cli/connect/mcp/tools/onboarding.d.ts +14 -0
  46. package/dist/src/cli/connect/mcp/tools/onboarding.d.ts.map +1 -0
  47. package/dist/src/cli/connect/mcp/tools/onboarding.js +44 -0
  48. package/dist/src/cli/connect/mcp/tools/onboarding.js.map +1 -0
  49. package/dist/src/cli/connect/mcp/wakeup.d.ts.map +1 -1
  50. package/dist/src/cli/connect/mcp/wakeup.js +12 -0
  51. package/dist/src/cli/connect/mcp/wakeup.js.map +1 -1
  52. package/dist/src/cli/connect/onboarding-prompt.d.ts +19 -0
  53. package/dist/src/cli/connect/onboarding-prompt.d.ts.map +1 -0
  54. package/dist/src/cli/connect/onboarding-prompt.js +58 -0
  55. package/dist/src/cli/connect/onboarding-prompt.js.map +1 -0
  56. package/dist/src/cli/connect/send.d.ts.map +1 -1
  57. package/dist/src/cli/connect/send.js +6 -5
  58. package/dist/src/cli/connect/send.js.map +1 -1
  59. package/dist/src/cli/connect/skill-bundle.d.ts +9 -1
  60. package/dist/src/cli/connect/skill-bundle.d.ts.map +1 -1
  61. package/dist/src/cli/connect/skill-bundle.js +219 -4
  62. package/dist/src/cli/connect/skill-bundle.js.map +1 -1
  63. package/dist/src/cli/connect/tool-call.d.ts +43 -0
  64. package/dist/src/cli/connect/tool-call.d.ts.map +1 -0
  65. package/dist/src/cli/connect/tool-call.js +878 -0
  66. package/dist/src/cli/connect/tool-call.js.map +1 -0
  67. package/dist/src/index.js +125 -30
  68. package/dist/src/index.js.map +1 -1
  69. package/dist/src/mcp/agent-onboarding.d.ts +20 -0
  70. package/dist/src/mcp/agent-onboarding.d.ts.map +1 -0
  71. package/dist/src/mcp/agent-onboarding.js +199 -0
  72. package/dist/src/mcp/agent-onboarding.js.map +1 -0
  73. package/dist/src/mcp/agent-tasks.d.ts +4 -2
  74. package/dist/src/mcp/agent-tasks.d.ts.map +1 -1
  75. package/dist/src/mcp/agent-tasks.js +42 -24
  76. package/dist/src/mcp/agent-tasks.js.map +1 -1
  77. package/dist/src/mcp/agent-telemetry.d.ts +18 -0
  78. package/dist/src/mcp/agent-telemetry.d.ts.map +1 -0
  79. package/dist/src/mcp/agent-telemetry.js +45 -0
  80. package/dist/src/mcp/agent-telemetry.js.map +1 -0
  81. package/dist/src/mcp/catalog/definitions.d.ts +42 -0
  82. package/dist/src/mcp/catalog/definitions.d.ts.map +1 -0
  83. package/dist/src/mcp/catalog/definitions.js +825 -0
  84. package/dist/src/mcp/catalog/definitions.js.map +1 -0
  85. package/dist/src/mcp/core.d.ts +1 -0
  86. package/dist/src/mcp/core.d.ts.map +1 -1
  87. package/dist/src/mcp/core.js +31 -2
  88. package/dist/src/mcp/core.js.map +1 -1
  89. package/dist/src/mcp/index.d.ts +1 -0
  90. package/dist/src/mcp/index.d.ts.map +1 -1
  91. package/dist/src/mcp/index.js +5 -0
  92. package/dist/src/mcp/index.js.map +1 -1
  93. package/dist/src/middleware/agent-me-alias.d.ts +26 -0
  94. package/dist/src/middleware/agent-me-alias.d.ts.map +1 -0
  95. package/dist/src/middleware/agent-me-alias.js +29 -0
  96. package/dist/src/middleware/agent-me-alias.js.map +1 -0
  97. package/dist/src/models/agent-onboarding-schemas.d.ts +7 -2
  98. package/dist/src/models/agent-onboarding-schemas.d.ts.map +1 -1
  99. package/dist/src/models/agent-onboarding-schemas.js +13 -2
  100. package/dist/src/models/agent-onboarding-schemas.js.map +1 -1
  101. package/dist/src/routes/agent-capabilities.d.ts +2 -0
  102. package/dist/src/routes/agent-capabilities.d.ts.map +1 -1
  103. package/dist/src/routes/agent-capabilities.js +6 -6
  104. package/dist/src/routes/agent-capabilities.js.map +1 -1
  105. package/dist/src/routes/agent-directives.d.ts +1 -0
  106. package/dist/src/routes/agent-directives.d.ts.map +1 -1
  107. package/dist/src/routes/agent-directives.js +3 -0
  108. package/dist/src/routes/agent-directives.js.map +1 -1
  109. package/dist/src/routes/agent-integration.js +1 -1
  110. package/dist/src/routes/agent-integration.js.map +1 -1
  111. package/dist/src/routes/agent-onboarding.d.ts +5 -0
  112. package/dist/src/routes/agent-onboarding.d.ts.map +1 -1
  113. package/dist/src/routes/agent-onboarding.js +69 -2
  114. package/dist/src/routes/agent-onboarding.js.map +1 -1
  115. package/dist/src/routes/agent-telemetry.d.ts +3 -0
  116. package/dist/src/routes/agent-telemetry.d.ts.map +1 -1
  117. package/dist/src/routes/agent-telemetry.js +5 -0
  118. package/dist/src/routes/agent-telemetry.js.map +1 -1
  119. package/dist/src/routes/agents.d.ts +14 -0
  120. package/dist/src/routes/agents.d.ts.map +1 -1
  121. package/dist/src/routes/agents.js +69 -0
  122. package/dist/src/routes/agents.js.map +1 -1
  123. package/dist/src/routes/apps.d.ts.map +1 -1
  124. package/dist/src/routes/apps.js +5 -0
  125. package/dist/src/routes/apps.js.map +1 -1
  126. package/dist/src/routes/auth.d.ts +14 -0
  127. package/dist/src/routes/auth.d.ts.map +1 -1
  128. package/dist/src/routes/auth.js +23 -1
  129. package/dist/src/routes/auth.js.map +1 -1
  130. package/dist/src/routes/bootstrap.d.ts +1 -0
  131. package/dist/src/routes/bootstrap.d.ts.map +1 -1
  132. package/dist/src/routes/bootstrap.js +3 -1
  133. package/dist/src/routes/bootstrap.js.map +1 -1
  134. package/dist/src/routes/libs.d.ts +10 -0
  135. package/dist/src/routes/libs.d.ts.map +1 -1
  136. package/dist/src/routes/libs.js +58 -27
  137. package/dist/src/routes/libs.js.map +1 -1
  138. package/dist/src/routes/memory.d.ts +1 -0
  139. package/dist/src/routes/memory.d.ts.map +1 -1
  140. package/dist/src/routes/memory.js +3 -1
  141. package/dist/src/routes/memory.js.map +1 -1
  142. package/dist/src/routes/prompts.d.ts +1 -0
  143. package/dist/src/routes/prompts.d.ts.map +1 -1
  144. package/dist/src/routes/prompts.js +2 -1
  145. package/dist/src/routes/prompts.js.map +1 -1
  146. package/dist/src/server.d.ts.map +1 -1
  147. package/dist/src/server.js +9 -1
  148. package/dist/src/server.js.map +1 -1
  149. package/dist/src/services/activity-recorder.d.ts +18 -1
  150. package/dist/src/services/activity-recorder.d.ts.map +1 -1
  151. package/dist/src/services/activity-recorder.js +42 -0
  152. package/dist/src/services/activity-recorder.js.map +1 -1
  153. package/dist/src/services/agent-post-onboarding.d.ts +31 -0
  154. package/dist/src/services/agent-post-onboarding.d.ts.map +1 -0
  155. package/dist/src/services/agent-post-onboarding.js +101 -0
  156. package/dist/src/services/agent-post-onboarding.js.map +1 -0
  157. package/dist/src/services/onboarding-validator.d.ts +3 -0
  158. package/dist/src/services/onboarding-validator.d.ts.map +1 -1
  159. package/dist/src/services/onboarding-validator.js +75 -0
  160. package/dist/src/services/onboarding-validator.js.map +1 -1
  161. package/dist/src/services/prompt-defaults.d.ts +23 -19
  162. package/dist/src/services/prompt-defaults.d.ts.map +1 -1
  163. package/dist/src/services/prompt-defaults.js +43 -37
  164. package/dist/src/services/prompt-defaults.js.map +1 -1
  165. package/dist/src/services/skill-bundle/generator.d.ts +8 -0
  166. package/dist/src/services/skill-bundle/generator.d.ts.map +1 -1
  167. package/dist/src/services/skill-bundle/generator.js +168 -48
  168. package/dist/src/services/skill-bundle/generator.js.map +1 -1
  169. package/dist/src/services/skill-bundle/generic-adapter.d.ts +5 -0
  170. package/dist/src/services/skill-bundle/generic-adapter.d.ts.map +1 -1
  171. package/dist/src/services/skill-bundle/generic-adapter.js +35 -15
  172. package/dist/src/services/skill-bundle/generic-adapter.js.map +1 -1
  173. package/dist/src/services/skill-bundle/hermes-adapter.d.ts +5 -0
  174. package/dist/src/services/skill-bundle/hermes-adapter.d.ts.map +1 -1
  175. package/dist/src/services/skill-bundle/hermes-adapter.js +26 -10
  176. package/dist/src/services/skill-bundle/hermes-adapter.js.map +1 -1
  177. package/dist/src/storage/interface.d.ts +2 -0
  178. package/dist/src/storage/interface.d.ts.map +1 -1
  179. package/dist/src/storage/providers/mongodb/index.d.ts +4 -0
  180. package/dist/src/storage/providers/mongodb/index.d.ts.map +1 -1
  181. package/dist/src/storage/providers/mongodb/index.js +22 -3
  182. package/dist/src/storage/providers/mongodb/index.js.map +1 -1
  183. package/dist/src/storage/providers/sqlite/index.d.ts.map +1 -1
  184. package/dist/src/storage/providers/sqlite/index.js +4 -2
  185. package/dist/src/storage/providers/sqlite/index.js.map +1 -1
  186. package/dist/src/storage/providers/sqlite/schema.d.ts.map +1 -1
  187. package/dist/src/storage/providers/sqlite/schema.js +1 -0
  188. package/dist/src/storage/providers/sqlite/schema.js.map +1 -1
  189. package/package.json +3 -2
  190. package/prisma/schema.prisma +1 -0
@@ -1,13 +1,220 @@
1
1
  /**
2
2
  * @file skill-bundle.ts
3
3
  * @description Download and cache the agent's skill bundle ZIP.
4
- * @structure Fetches the authenticated skill bundle archive and stores the ZIP plus a local SKILL.md pointer.
4
+ * @structure Fetches the authenticated skill bundle archive, stores the ZIP, and extracts its files locally.
5
5
  * @usage Called after `aimeat connect` auth and by `aimeat connect refresh`.
6
6
  * @version-history v1.9.4 — 2026-05-28 — Close one-shot CLI HTTP connections after bundle downloads.
7
+ * @version-history v1.9.5 — 2026-05-28 — Extract the real SKILL.md and bundle files from the downloaded ZIP.
8
+ * @version-history v1.9.6 — 2026-05-28 — Print a bundle-provided BUNDLE.md guide after downloads.
9
+ * @version-history v1.9.7 — 2026-05-28 — Clarify serve-next and Hello Integration MCP sequence.
10
+ * @version-history v1.9.8 — 2026-05-28 — Include task TODO completion in Hello Integration guidance.
11
+ * @version-history v1.9.9 — 2026-05-28 — Clarify MCP tool names are not terminal commands.
12
+ * @version-history v1.9.10 — 2026-05-28 — Include required telemetry reporting in Hello Integration guidance.
13
+ * @version-history v1.9.11 — 2026-05-28 — State that Hello Integration is required first-run onboarding.
14
+ * @version-history v1.9.12 -- 2026-05-28 -- Add correct post-onboarding setup guidance for actual commands, config, and knowledge artifacts.
15
+ * @version-history v1.9.13 -- 2026-05-28 -- Add shared owner-memory tag guidance.
16
+ * @version-history v1.9.14 -- 2026-05-28 -- Pull MCP tool sequence from shared onboarding-prompt.ts (removes hardcoded duplicate).
7
17
  */
8
- import { writeFileSync, mkdirSync, existsSync } from 'node:fs';
9
- import { join } from 'node:path';
18
+ import { writeFileSync, mkdirSync, existsSync, readFileSync, rmSync } from 'node:fs';
19
+ import { dirname, join } from 'node:path';
20
+ import yauzl from 'yauzl';
10
21
  import { getConfigDir } from './config.js';
22
+ import { HELLO_INTEGRATION_TOOL_SEQUENCE } from './onboarding-prompt.js';
23
+ const MAX_EXTRACTED_FILES = 100;
24
+ const MAX_EXTRACTED_BYTES = 20 * 1024 * 1024;
25
+ const MAX_SINGLE_FILE_BYTES = 5 * 1024 * 1024;
26
+ const MANAGED_EXTRACTED_PATHS = ['SKILL.md', 'BUNDLE.md', 'references', 'scripts', 'config'];
27
+ function clearExtractedBundle(bundleDir) {
28
+ for (const relativePath of MANAGED_EXTRACTED_PATHS) {
29
+ rmSync(join(bundleDir, relativePath), { recursive: true, force: true });
30
+ }
31
+ }
32
+ function normalizeBundleEntry(fileName) {
33
+ const normalized = fileName.replace(/\\/g, '/');
34
+ if (!normalized || normalized.endsWith('/'))
35
+ return null;
36
+ if (normalized.startsWith('/') || normalized.includes('../') || /^[a-zA-Z]:/.test(normalized)) {
37
+ throw new Error(`Unsafe bundle path: ${fileName}`);
38
+ }
39
+ const parts = normalized.split('/').filter(Boolean);
40
+ if (parts.length === 0 || parts.includes('..'))
41
+ throw new Error(`Unsafe bundle path: ${fileName}`);
42
+ if (parts.length > 1 && /^aimeat-[a-z0-9-]+$/i.test(parts[0]))
43
+ parts.shift();
44
+ return parts.join('/');
45
+ }
46
+ async function extractSkillBundle(buffer, bundleDir) {
47
+ return new Promise((resolve, reject) => {
48
+ yauzl.fromBuffer(buffer, { lazyEntries: true }, (openError, zipfile) => {
49
+ if (openError) {
50
+ reject(openError);
51
+ return;
52
+ }
53
+ if (!zipfile) {
54
+ reject(new Error('Could not open skill bundle ZIP'));
55
+ return;
56
+ }
57
+ let fileCount = 0;
58
+ let extractedBytes = 0;
59
+ let skillPath = null;
60
+ let guidePath = null;
61
+ const extractedFiles = [];
62
+ zipfile.on('error', reject);
63
+ zipfile.on('entry', (entry) => {
64
+ let relativePath;
65
+ try {
66
+ relativePath = normalizeBundleEntry(entry.fileName);
67
+ }
68
+ catch (pathError) {
69
+ zipfile.close();
70
+ reject(pathError);
71
+ return;
72
+ }
73
+ if (!relativePath) {
74
+ zipfile.readEntry();
75
+ return;
76
+ }
77
+ fileCount += 1;
78
+ if (fileCount > MAX_EXTRACTED_FILES) {
79
+ zipfile.close();
80
+ reject(new Error(`Skill bundle contains more than ${MAX_EXTRACTED_FILES} files`));
81
+ return;
82
+ }
83
+ if (entry.uncompressedSize > MAX_SINGLE_FILE_BYTES) {
84
+ zipfile.close();
85
+ reject(new Error(`Skill bundle file is too large: ${entry.fileName}`));
86
+ return;
87
+ }
88
+ zipfile.openReadStream(entry, (streamError, stream) => {
89
+ if (streamError) {
90
+ zipfile.close();
91
+ reject(streamError);
92
+ return;
93
+ }
94
+ if (!stream) {
95
+ zipfile.close();
96
+ reject(new Error(`Could not read bundle file: ${entry.fileName}`));
97
+ return;
98
+ }
99
+ const chunks = [];
100
+ stream.on('data', (chunk) => {
101
+ extractedBytes += chunk.length;
102
+ if (extractedBytes > MAX_EXTRACTED_BYTES) {
103
+ zipfile.close();
104
+ reject(new Error('Skill bundle extracted size limit exceeded'));
105
+ return;
106
+ }
107
+ chunks.push(chunk);
108
+ });
109
+ stream.on('end', () => {
110
+ const outputPath = join(bundleDir, relativePath);
111
+ mkdirSync(dirname(outputPath), { recursive: true });
112
+ writeFileSync(outputPath, Buffer.concat(chunks));
113
+ extractedFiles.push(relativePath);
114
+ if (relativePath === 'SKILL.md')
115
+ skillPath = outputPath;
116
+ if (relativePath === 'BUNDLE.md')
117
+ guidePath = outputPath;
118
+ zipfile.readEntry();
119
+ });
120
+ stream.on('error', (streamReadError) => { zipfile.close(); reject(streamReadError); });
121
+ });
122
+ });
123
+ zipfile.on('end', () => {
124
+ if (!skillPath) {
125
+ reject(new Error('Skill bundle ZIP did not contain SKILL.md'));
126
+ return;
127
+ }
128
+ resolve({ skillPath, guidePath, extractedFiles });
129
+ });
130
+ zipfile.readEntry();
131
+ });
132
+ });
133
+ }
134
+ function renderCompatibilityBundleGuide(client, agentName, extractedFiles) {
135
+ const hasReferences = extractedFiles.some(file => file.startsWith('references/'));
136
+ const hasScripts = extractedFiles.some(file => file.startsWith('scripts/'));
137
+ const hasConfig = extractedFiles.some(file => file.startsWith('config/'));
138
+ const sections = [
139
+ '- `BUNDLE.md` - this guide. Newer nodes include it in the ZIP; this connector generated it for an older bundle.',
140
+ '- `SKILL.md` - the main instruction file for the connected agent/runtime. Read this first.',
141
+ ];
142
+ if (hasReferences)
143
+ sections.push('- `references/` - deeper protocol notes: API overview, task lifecycle, messages, telemetry, capabilities, and errors.');
144
+ if (hasScripts)
145
+ sections.push('- `scripts/` - runtime helper scripts for platforms that support them.');
146
+ if (hasConfig)
147
+ sections.push('- `config/` - runtime configuration snippets, hooks, or routes for platforms that support local config files.');
148
+ return `# AIMEAT Skill Bundle
149
+
150
+ ## What This Is
151
+
152
+ This folder contains the local AIMEAT skill bundle for agent \`${agentName}\` from ${client.getBaseUrl()}. If you are the connected AI agent using this runtime, \`${agentName}\` is your assigned AIMEAT agent name.
153
+
154
+ When downloaded with the connector, the original ZIP is kept as \`skill-bundle.zip\` and the useful files are extracted into the same directory.
155
+
156
+ ## Files
157
+
158
+ ${sections.join('\n')}
159
+
160
+ ## What To Do Next
161
+
162
+ There are two ways to drive Hello Integration:
163
+
164
+ ### Option A -- MCP stdio (recommended when supported)
165
+
166
+ 1. Start the connector MCP server and leave it running:
167
+
168
+ \`\`\`bash
169
+ aimeat connect serve
170
+ \`\`\`
171
+
172
+ 2. Once the MCP server is attached to the connected AI agent/runtime (Claude
173
+ Desktop, MCP-aware IDEs, OpenClaw with mcp config, etc.), paste this into
174
+ the agent:
175
+
176
+ \`\`\`text
177
+ Use your AIMEAT tools. Hello Integration is required AIMEAT first-run onboarding. Read the AIMEAT handbook, check onboarding status, propose TODOs for the onboarding verification task, complete Hello Integration, then publish your actual supported commands, runtime configuration, and any produced knowledge package artifacts before normal autonomous work.
178
+ \`\`\`
179
+
180
+ ### Option B -- Shell fallback (when MCP stdio cannot attach)
181
+
182
+ For CLI-only agents or runtimes where \`aimeat connect serve\` would just block
183
+ without exposing tools, every MCP tool is callable directly as a one-shot
184
+ command. Walk through the same sequence with:
185
+
186
+ \`\`\`bash
187
+ aimeat connect tools # list available tool names
188
+ aimeat connect schema <tool-name> # inspect a tool's input
189
+ aimeat connect call <tool-name> --json '<input>' # invoke a tool
190
+ \`\`\`
191
+
192
+ Start with: \`aimeat connect call aimeat_handbook_get --json '{}'\`
193
+
194
+ ### The Hello Integration sequence
195
+
196
+ The agent must complete these tools in order. Names are MCP tool names (also
197
+ accepted by \`aimeat connect call <name>\`):
198
+
199
+ \`\`\`text
200
+ ${HELLO_INTEGRATION_TOOL_SEQUENCE.map(tool => ` ${tool}`).join('\n')}
201
+ \`\`\`
202
+
203
+ Use \`generic\` as the installed skill platform unless your runtime has a more specific platform name. For the bundle version field, use \`local\` when no version is shown by the runtime.
204
+
205
+ 4. After Hello Integration completes, publish real post-onboarding setup:
206
+
207
+ - Commands: write \`agents.${agentName}.commands\` with the full owner-facing slash command catalogue this agent can actually handle. Use a flat array of \`{ name, description, category }\`. Do not copy examples or list internal MCP tools as message commands.
208
+ - Config: write actual runtime/config artifacts under \`agents.config.*\`. If this setup only uses \`aimeat connect serve\`, describe that connector accurately; do not invent a watchdog file.
209
+ - Shared memory: if the owner assigned shared tags in Data Access/directives, use \`agents.tag.<tag>.*\` with visibility \`owner\` and tags \`["<tag>"]\` for same-owner handoff notes, project state, queues, and team context. List shared areas with \`owner_scope=true\` plus prefix \`agents.tag.<tag>.\`.
210
+ - Knowledge: when you produce research, docs, datasets, or reusable knowledge, create or update a real knowledge package with \`POST /v1/knowledge/import\` from \`/llms.txt\`, \`aimeat_knowledge_contribute\`, and \`aimeat_storage_upload\` as appropriate. Do not use a placeholder \`research.*\` memory key as a substitute.
211
+
212
+ 5. Run \`npx aimeat connect refresh\` later to download updated bundle content.
213
+ `;
214
+ }
215
+ export function readSkillBundleGuide(bundle) {
216
+ return readFileSync(bundle.guidePath, 'utf-8').trim();
217
+ }
11
218
  export async function downloadSkillBundle(client, agentName) {
12
219
  const bundleDir = join(getConfigDir(), agentName);
13
220
  if (!existsSync(bundleDir))
@@ -23,6 +230,14 @@ export async function downloadSkillBundle(client, agentName) {
23
230
  const buffer = Buffer.from(await res.arrayBuffer());
24
231
  const zipPath = join(bundleDir, 'skill-bundle.zip');
25
232
  writeFileSync(zipPath, buffer);
26
- writeFileSync(join(bundleDir, 'SKILL.md'), `# Skill Bundle\n\nDownloaded from ${client.getBaseUrl()}\nExtract skill-bundle.zip for full reference.\n`);
233
+ clearExtractedBundle(bundleDir);
234
+ const extracted = await extractSkillBundle(buffer, bundleDir);
235
+ let guidePath = extracted.guidePath;
236
+ if (!guidePath) {
237
+ guidePath = join(bundleDir, 'BUNDLE.md');
238
+ writeFileSync(guidePath, renderCompatibilityBundleGuide(client, agentName, extracted.extractedFiles), 'utf-8');
239
+ extracted.extractedFiles.unshift('BUNDLE.md');
240
+ }
241
+ return { bundleDir, zipPath, skillPath: extracted.skillPath, guidePath, extractedFiles: extracted.extractedFiles };
27
242
  }
28
243
  //# sourceMappingURL=skill-bundle.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"skill-bundle.js","sourceRoot":"","sources":["../../../../src/cli/connect/skill-bundle.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,MAAoB,EAAE,SAAiB;IAC/E,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,EAAE,SAAS,CAAC,CAAC;IAClD,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEtE,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC,UAAU,EAAE,cAAc,kBAAkB,CAAC,SAAS,CAAC,eAAe,CAAC;IAC7F,MAAM,KAAK,GAAG,MAAM,CAAC,aAAa,EAAE,CAAC;IACrC,MAAM,OAAO,GAA2B,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;IAChE,IAAI,KAAK;QAAE,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,KAAK,EAAE,CAAC;IAExD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IAC1C,IAAI,CAAC,GAAG,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IAE5E,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;IACpD,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;IACpD,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC/B,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,EACvC,qCAAqC,MAAM,CAAC,UAAU,EAAE,kDAAkD,CAAC,CAAC;AAChH,CAAC"}
1
+ {"version":3,"file":"skill-bundle.js","sourceRoot":"","sources":["../../../../src/cli/connect/skill-bundle.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * @file tool-call.ts
3
+ * @description Shell fallback for connector tools. Provides `aimeat connect tools`,
4
+ * `aimeat connect schema`, and `aimeat connect call` for runtimes that can run
5
+ * commands but cannot use MCP directly.
6
+ * @structure
7
+ * - CONNECT_CLI_TOOLS -- initial REST-backed tool catalog for Hello Integration
8
+ * - runToolList() -- prints CLI-callable tool names
9
+ * - runToolSchema() -- prints plain JSON input schema metadata
10
+ * - runToolCall() -- loads JSON input and invokes the matching REST-backed handler
11
+ * @usage
12
+ * aimeat connect tools
13
+ * aimeat connect schema aimeat_onboarding_status
14
+ * aimeat connect call aimeat_message_send --json input.json
15
+ * @version-history
16
+ * v1.0.0 -- 2026-05-28 -- Add initial shell fallback for agent lifecycle tools
17
+ * v1.1.0 -- 2026-05-28 -- Read public tool metadata from the shared MCP catalog
18
+ * v1.2.0 -- 2026-05-28 -- Add app, extension, and cortex CLI fallback handlers
19
+ * v1.3.0 -- 2026-05-28 -- Add core memory, work, wallet, board, storage, and admin handlers
20
+ * v1.4.0 -- 2026-05-28 -- Add remaining connector MCP handlers to CLI fallback
21
+ * v1.5.0 -- 2026-05-28 -- Add memory tags and owner-scope listing support
22
+ */
23
+ import { type ToolInputField } from '../../mcp/catalog/definitions.js';
24
+ import type { AimeatClient, ApiResponse } from './api-client.js';
25
+ import { type AimeatConnectConfig } from './config.js';
26
+ type JsonObject = Record<string, unknown>;
27
+ interface ConnectCliToolDefinition {
28
+ name: string;
29
+ description?: string;
30
+ input?: Record<string, ToolInputField>;
31
+ handler: (ctx: ToolCallContext, input: JsonObject) => Promise<ApiResponse>;
32
+ }
33
+ interface ToolCallContext {
34
+ client: AimeatClient;
35
+ config: AimeatConnectConfig;
36
+ agentPath: string;
37
+ }
38
+ export declare const CONNECT_CLI_TOOLS: ConnectCliToolDefinition[];
39
+ export declare function runToolList(flags: Record<string, string>): void;
40
+ export declare function runToolSchema(toolName: string | undefined): void;
41
+ export declare function runToolCall(toolName: string | undefined, flags: Record<string, string>): Promise<void>;
42
+ export {};
43
+ //# sourceMappingURL=tool-call.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-call.d.ts","sourceRoot":"","sources":["../../../../src/cli/connect/tool-call.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAGH,OAAO,EAA0D,KAAK,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAC/H,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEjE,OAAO,EAAc,KAAK,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEnE,KAAK,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE1C,UAAU,wBAAwB;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACvC,OAAO,EAAE,CAAC,GAAG,EAAE,eAAe,EAAE,KAAK,EAAE,UAAU,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;CAC9E;AAED,UAAU,eAAe;IACrB,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,mBAAmB,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;CACrB;AA+FD,eAAO,MAAM,iBAAiB,EAAE,wBAAwB,EA+oBvD,CAAC;AAyDF,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAS/D;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAahE;AAED,wBAAsB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CA8B5G"}