aios-core 3.5.0 → 3.7.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.
@@ -209,6 +209,46 @@ function parseAllAgents(agentsDir) {
209
209
  return agents;
210
210
  }
211
211
 
212
+ /**
213
+ * Normalize commands to consistent format
214
+ * Handles both { name, description } and { "cmd-name": "description" } formats
215
+ * @param {object[]} commands - Array of command objects (may be in various formats)
216
+ * @returns {object[]} - Normalized command objects with name, description, visibility
217
+ */
218
+ function normalizeCommands(commands) {
219
+ if (!Array.isArray(commands)) return [];
220
+
221
+ return commands.map(cmd => {
222
+ // Already in proper format with name property
223
+ if (cmd.name && typeof cmd.name === 'string') {
224
+ return {
225
+ name: cmd.name,
226
+ description: cmd.description || 'No description',
227
+ visibility: cmd.visibility || ['full', 'quick'],
228
+ };
229
+ }
230
+
231
+ // Shorthand format: { "cmd-name": "description text" }
232
+ const keys = Object.keys(cmd);
233
+ if (keys.length === 1) {
234
+ const name = keys[0];
235
+ const description = cmd[name];
236
+ return {
237
+ name: name,
238
+ description: typeof description === 'string' ? description : 'No description',
239
+ visibility: ['full', 'quick'],
240
+ };
241
+ }
242
+
243
+ // Unknown format - try to extract what we can
244
+ return {
245
+ name: cmd.name || 'unknown',
246
+ description: cmd.description || 'No description',
247
+ visibility: cmd.visibility || ['full', 'quick'],
248
+ };
249
+ });
250
+ }
251
+
212
252
  /**
213
253
  * Get visibility-filtered commands
214
254
  * @param {object[]} commands - Array of command objects
@@ -218,7 +258,10 @@ function parseAllAgents(agentsDir) {
218
258
  function getVisibleCommands(commands, visibility) {
219
259
  if (!Array.isArray(commands)) return [];
220
260
 
221
- return commands.filter(cmd => {
261
+ // First normalize the commands to ensure consistent format
262
+ const normalized = normalizeCommands(commands);
263
+
264
+ return normalized.filter(cmd => {
222
265
  if (!cmd.visibility) return true; // Include if no visibility defined
223
266
  return cmd.visibility.includes(visibility);
224
267
  });
@@ -246,6 +289,7 @@ module.exports = {
246
289
  extractSection,
247
290
  parseAgentFile,
248
291
  parseAllAgents,
292
+ normalizeCommands,
249
293
  getVisibleCommands,
250
294
  formatCommandsList,
251
295
  };
@@ -6,7 +6,7 @@
6
6
  * Target: .antigravity/rules/agents/*.md
7
7
  */
8
8
 
9
- const { getVisibleCommands } = require('../agent-parser');
9
+ const { getVisibleCommands, normalizeCommands } = require('../agent-parser');
10
10
 
11
11
  /**
12
12
  * Transform agent data to Antigravity format
@@ -23,9 +23,10 @@ function transform(agentData) {
23
23
  const whenToUse = agent.whenToUse || 'Use this agent for specific tasks';
24
24
  const archetype = persona.archetype || '';
25
25
 
26
- // Get quick visibility commands
27
- const quickCommands = getVisibleCommands(agentData.commands, 'quick');
28
- const keyCommands = getVisibleCommands(agentData.commands, 'key');
26
+ // Get quick visibility commands (normalized to consistent format)
27
+ const allCommands = normalizeCommands(agentData.commands || []);
28
+ const quickCommands = getVisibleCommands(allCommands, 'quick');
29
+ const keyCommands = getVisibleCommands(allCommands, 'key');
29
30
 
30
31
  // Build content (similar to Cursor)
31
32
  let content = `# ${name} (@${agentData.id})
@@ -61,8 +62,7 @@ ${icon} **${title}**${archetype ? ` | ${archetype}` : ''}
61
62
  content += '\n';
62
63
  }
63
64
 
64
- // Add all commands for reference
65
- const allCommands = agentData.commands || [];
65
+ // Add all commands for reference (allCommands already normalized above)
66
66
  if (allCommands.length > quickCommands.length + keyOnlyCommands.length) {
67
67
  content += `## All Commands
68
68
 
@@ -6,7 +6,7 @@
6
6
  * Target: .cursor/rules/agents/*.md
7
7
  */
8
8
 
9
- const { getVisibleCommands } = require('../agent-parser');
9
+ const { getVisibleCommands, normalizeCommands } = require('../agent-parser');
10
10
 
11
11
  /**
12
12
  * Transform agent data to Cursor format
@@ -23,9 +23,10 @@ function transform(agentData) {
23
23
  const whenToUse = agent.whenToUse || 'Use this agent for specific tasks';
24
24
  const archetype = persona.archetype || '';
25
25
 
26
- // Get quick visibility commands
27
- const quickCommands = getVisibleCommands(agentData.commands, 'quick');
28
- const keyCommands = getVisibleCommands(agentData.commands, 'key');
26
+ // Get quick visibility commands (normalized to consistent format)
27
+ const allCommands = normalizeCommands(agentData.commands || []);
28
+ const quickCommands = getVisibleCommands(allCommands, 'quick');
29
+ const keyCommands = getVisibleCommands(allCommands, 'key');
29
30
 
30
31
  // Build content
31
32
  let content = `# ${name} (@${agentData.id})
@@ -6,7 +6,7 @@
6
6
  * Target: .trae/rules/agents/*.md
7
7
  */
8
8
 
9
- const { getVisibleCommands } = require('../agent-parser');
9
+ const { getVisibleCommands, normalizeCommands } = require('../agent-parser');
10
10
 
11
11
  /**
12
12
  * Transform agent data to Trae format
@@ -23,8 +23,8 @@ function transform(agentData) {
23
23
  const whenToUse = agent.whenToUse || 'Use this agent for specific tasks';
24
24
  const archetype = persona.archetype || '';
25
25
 
26
- // Get commands by visibility
27
- const allCommands = agentData.commands || [];
26
+ // Get commands by visibility (normalized to consistent format)
27
+ const allCommands = normalizeCommands(agentData.commands || []);
28
28
  const keyCommands = getVisibleCommands(allCommands, 'key');
29
29
  const quickCommands = getVisibleCommands(allCommands, 'quick');
30
30
 
@@ -6,7 +6,7 @@
6
6
  * Target: .windsurf/rules/agents/*.md
7
7
  */
8
8
 
9
- const { getVisibleCommands } = require('../agent-parser');
9
+ const { getVisibleCommands, normalizeCommands } = require('../agent-parser');
10
10
 
11
11
  /**
12
12
  * Transform agent data to Windsurf format
@@ -23,8 +23,8 @@ function transform(agentData) {
23
23
  const whenToUse = agent.whenToUse || 'Use this agent for specific tasks';
24
24
  const archetype = persona.archetype || '';
25
25
 
26
- // Get all commands
27
- const allCommands = agentData.commands || [];
26
+ // Get all commands (normalized to consistent format)
27
+ const allCommands = normalizeCommands(agentData.commands || []);
28
28
  const quickCommands = getVisibleCommands(allCommands, 'quick');
29
29
 
30
30
  // Build content with XML tags
@@ -7,10 +7,10 @@
7
7
  # - SHA256 hashes for change detection
8
8
  # - File types for categorization
9
9
  #
10
- version: 3.5.0
11
- generated_at: "2025-12-23T20:58:00.734Z"
10
+ version: 3.7.0
11
+ generated_at: "2025-12-24T14:42:11.316Z"
12
12
  generator: scripts/generate-install-manifest.js
13
- file_count: 568
13
+ file_count: 579
14
14
  files:
15
15
  - path: cli/commands/generate/index.js
16
16
  hash: sha256:36f8e38ab767fa5478d8dabac548c66dc2c0fc521c216e954ac33fcea0ba597b
@@ -393,17 +393,17 @@ files:
393
393
  type: agent
394
394
  size: 8767
395
395
  - path: development/agents/architect.md
396
- hash: sha256:16453d2a8816f59e25a285dde1adfc8b79b9524f8912f4129aceca66cff3156f
396
+ hash: sha256:c259c9f7e5293f8ffe72b7a265f30e49b4900e7b7e2196dbe2eafa20c9559d1d
397
397
  type: agent
398
- size: 16519
398
+ size: 16776
399
399
  - path: development/agents/data-engineer.md
400
400
  hash: sha256:233f83bd856e84e58064aa20a6bfde8ea5bc74a88a6d9dafb10e6c9637b7c517
401
401
  type: agent
402
402
  size: 20268
403
403
  - path: development/agents/dev.md
404
- hash: sha256:d4101a3a2c966329942f49a94305164c0ed4393dd3be71a4ce0549666337ba46
404
+ hash: sha256:69a342848917c90bcd91517d226c0b0e55e06abf0871ecf2e7a1eb6f7ea67026
405
405
  type: agent
406
- size: 17639
406
+ size: 17964
407
407
  - path: development/agents/devops.md
408
408
  hash: sha256:0c7ea6fb80b5758d978003f17aa6c5ba8ca1a5433ac0c53b1dd131e7ecae18a5
409
409
  type: agent
@@ -592,6 +592,10 @@ files:
592
592
  hash: sha256:f6a7ac43c7834795e334062b70063ec4e6b4577090e0f3762dad0b4e3155c37f
593
593
  type: task
594
594
  size: 15464
595
+ - path: development/tasks/analyze-project-structure.md
596
+ hash: sha256:3336ea3c394e4746d65f999f3901c470bf21d17e0ae8faabd8b332482c04127b
597
+ type: task
598
+ size: 14542
595
599
  - path: development/tasks/apply-qa-fixes.md
596
600
  hash: sha256:9a7a3d6ab17732f22bae79257a8519d4e9175dd0f862b863185e03620d2753ce
597
601
  type: task
@@ -676,6 +680,10 @@ files:
676
680
  hash: sha256:f650cbb2056c31cf4b85fb83b4e030ccf613cd5270d1453b80bbc00dc6344a60
677
681
  type: task
678
682
  size: 29544
683
+ - path: development/tasks/create-service.md
684
+ hash: sha256:6ce3eeeab6ed8ff6c5804b4fc4c3006c298009ab60c35b51afedac57082eeb34
685
+ type: task
686
+ size: 8947
679
687
  - path: development/tasks/create-suite.md
680
688
  hash: sha256:8e57cba8aaed7f86a327e11185aca208af241ab41abc95188a2243375085ca15
681
689
  type: task
@@ -1096,6 +1104,42 @@ files:
1096
1104
  hash: sha256:7ff03b62614edeb2a9c2bab9681a56ce97cffc59af3bd51054b9dafb1c99701f
1097
1105
  type: task
1098
1106
  size: 14320
1107
+ - path: development/templates/service-template/__tests__/index.test.ts.hbs
1108
+ hash: sha256:04090b95bc0b606448c161d8e698fcf4d5c7da2517a5ac65663554a54c5acf91
1109
+ type: template
1110
+ size: 9573
1111
+ - path: development/templates/service-template/client.ts.hbs
1112
+ hash: sha256:3adbfb5a17d7f734a498bd2520fd44a1eadf05aad9f31b980f886ad6386394a6
1113
+ type: template
1114
+ size: 11810
1115
+ - path: development/templates/service-template/errors.ts.hbs
1116
+ hash: sha256:cc7139c0a2654dbd938ba79730fc97b6d30a79b8d1556fe43c61e0fca6553351
1117
+ type: template
1118
+ size: 5213
1119
+ - path: development/templates/service-template/index.ts.hbs
1120
+ hash: sha256:29d66364af401592a3ea0d5c4c4ebfb09e67373e62f21caac82b47b1bf78b3b8
1121
+ type: template
1122
+ size: 3086
1123
+ - path: development/templates/service-template/jest.config.js
1124
+ hash: sha256:1681bfd7fbc0d330d3487d3427515847c4d57ef300833f573af59e0ad69ed159
1125
+ type: template
1126
+ size: 1750
1127
+ - path: development/templates/service-template/package.json.hbs
1128
+ hash: sha256:7a25b377c72a98e44758afbe5a5b6d95971e47cca8e248b664ec63d7d1b7a590
1129
+ type: template
1130
+ size: 2227
1131
+ - path: development/templates/service-template/README.md.hbs
1132
+ hash: sha256:be6e4531587c37cc2ce1542dbd0c5487752d57f58c84e5dd23978d4173746c2e
1133
+ type: template
1134
+ size: 3426
1135
+ - path: development/templates/service-template/tsconfig.json
1136
+ hash: sha256:8b465fcbdd45c4d6821ba99aea62f2bd7998b1bca8de80486a1525e77d43c9a1
1137
+ type: template
1138
+ size: 1135
1139
+ - path: development/templates/service-template/types.ts.hbs
1140
+ hash: sha256:2338ab2e1ade619bf33a2c8f22b149402b513c05a6d1d8a805c5273c7233d151
1141
+ type: template
1142
+ size: 2516
1099
1143
  - path: development/workflows/brownfield-fullstack.yaml
1100
1144
  hash: sha256:e54b5ecf6fffd1351bad125c91be89b262773361785d1f0ee19a7dc2fcdf8822
1101
1145
  type: workflow
@@ -1385,9 +1429,9 @@ files:
1385
1429
  type: script
1386
1430
  size: 9735
1387
1431
  - path: infrastructure/scripts/ide-sync/agent-parser.js
1388
- hash: sha256:f18531d68ffec3f661b81c528bff0929bac6fa26213f28affbfebb2faca091db
1432
+ hash: sha256:b4dceac261653d85d791b6cd8b010ebfaa75cab179477b193a2448482b4aa4d4
1389
1433
  type: script
1390
- size: 7428
1434
+ size: 8846
1391
1435
  - path: infrastructure/scripts/ide-sync/index.js
1392
1436
  hash: sha256:9e792b680a1ed19893d10fe27aa14f2ccf2235004d62f83bd052d2dde75c1aeb
1393
1437
  type: script
@@ -1397,25 +1441,25 @@ files:
1397
1441
  type: script
1398
1442
  size: 4518
1399
1443
  - path: infrastructure/scripts/ide-sync/transformers/antigravity.js
1400
- hash: sha256:f78399acdc7557f496abcffcd252e722e91f06afe16859b5066882954d9cd23e
1444
+ hash: sha256:d8fe023ce70651e0d83151f9f90000d8ffb51ab260f246704c1616739a001622
1401
1445
  type: script
1402
- size: 2687
1446
+ size: 2784
1403
1447
  - path: infrastructure/scripts/ide-sync/transformers/claude-code.js
1404
1448
  hash: sha256:f028bdef022e54a5f70c92fa6d6b0dc0877c2fc87a9f8d2f477b29d09248dab7
1405
1449
  type: script
1406
1450
  size: 2225
1407
1451
  - path: infrastructure/scripts/ide-sync/transformers/cursor.js
1408
- hash: sha256:957eb51c7c516f2a73ade0be38d25f97b5508f9816067bfe94ed23e7f17be265
1452
+ hash: sha256:fe38ba6960cc7e1dd2f1de963cdfc5a4be83eb5240c696e9eea607421a23cf22
1409
1453
  type: script
1410
- size: 2321
1454
+ size: 2427
1411
1455
  - path: infrastructure/scripts/ide-sync/transformers/trae.js
1412
- hash: sha256:c3609987ed07d1c4959ef803548cbd224797db117affb8655c30c04ed524967a
1456
+ hash: sha256:784660e839d1516ba7d4f12adbde43e412adb25d6557eccf234e041866790f5b
1413
1457
  type: script
1414
- size: 2895
1458
+ size: 2967
1415
1459
  - path: infrastructure/scripts/ide-sync/transformers/windsurf.js
1416
- hash: sha256:f0c6ad1cbab8618ea41572a4c667e13d471b49794f5508bc4f9184106f260342
1460
+ hash: sha256:6eec13241f1216d64acb5b69af92fb36e22f22697dd166a1afe9e4e9048884db
1417
1461
  type: script
1418
- size: 2636
1462
+ size: 2708
1419
1463
  - path: infrastructure/scripts/ide-sync/validator.js
1420
1464
  hash: sha256:356c78125db7f88d14f4e521808e96593d729291c3d7a1c36cb02f78b4aef8fc
1421
1465
  type: script
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "aios-core",
3
- "version": "3.5.0",
3
+ "version": "3.7.0",
4
4
  "description": "Synkra AIOS: AI-Orchestrated System for Full Stack Development - Core Framework",
5
5
  "main": "index.js",
6
6
  "module": "index.esm.js",