aios-core 3.6.0 → 3.8.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 (62) hide show
  1. package/.aios-core/core/session/context-detector.js +3 -0
  2. package/.aios-core/core/session/context-loader.js +154 -0
  3. package/.aios-core/data/learned-patterns.yaml +3 -0
  4. package/.aios-core/data/workflow-patterns.yaml +347 -3
  5. package/.aios-core/development/agents/dev.md +13 -0
  6. package/.aios-core/development/agents/squad-creator.md +30 -0
  7. package/.aios-core/development/scripts/squad/squad-analyzer.js +638 -0
  8. package/.aios-core/development/scripts/squad/squad-extender.js +871 -0
  9. package/.aios-core/development/scripts/squad/squad-generator.js +107 -19
  10. package/.aios-core/development/scripts/squad/squad-migrator.js +3 -5
  11. package/.aios-core/development/scripts/squad/squad-validator.js +98 -0
  12. package/.aios-core/development/tasks/create-service.md +391 -0
  13. package/.aios-core/development/tasks/next.md +294 -0
  14. package/.aios-core/development/tasks/patterns.md +334 -0
  15. package/.aios-core/development/tasks/squad-creator-analyze.md +315 -0
  16. package/.aios-core/development/tasks/squad-creator-create.md +26 -3
  17. package/.aios-core/development/tasks/squad-creator-extend.md +411 -0
  18. package/.aios-core/development/tasks/squad-creator-validate.md +9 -1
  19. package/.aios-core/development/tasks/waves.md +205 -0
  20. package/.aios-core/development/templates/service-template/README.md.hbs +158 -0
  21. package/.aios-core/development/templates/service-template/__tests__/index.test.ts.hbs +237 -0
  22. package/.aios-core/development/templates/service-template/client.ts.hbs +403 -0
  23. package/.aios-core/development/templates/service-template/errors.ts.hbs +182 -0
  24. package/.aios-core/development/templates/service-template/index.ts.hbs +120 -0
  25. package/.aios-core/development/templates/service-template/jest.config.js +89 -0
  26. package/.aios-core/development/templates/service-template/package.json.hbs +87 -0
  27. package/.aios-core/development/templates/service-template/tsconfig.json +45 -0
  28. package/.aios-core/development/templates/service-template/types.ts.hbs +145 -0
  29. package/.aios-core/development/templates/squad/agent-template.md +69 -0
  30. package/.aios-core/development/templates/squad/checklist-template.md +82 -0
  31. package/.aios-core/development/templates/squad/data-template.yaml +105 -0
  32. package/.aios-core/development/templates/squad/script-template.js +179 -0
  33. package/.aios-core/development/templates/squad/task-template.md +125 -0
  34. package/.aios-core/development/templates/squad/template-template.md +97 -0
  35. package/.aios-core/development/templates/squad/tool-template.js +103 -0
  36. package/.aios-core/development/templates/squad/workflow-template.yaml +108 -0
  37. package/.aios-core/infrastructure/scripts/ide-sync/agent-parser.js +45 -1
  38. package/.aios-core/infrastructure/scripts/ide-sync/transformers/antigravity.js +6 -6
  39. package/.aios-core/infrastructure/scripts/ide-sync/transformers/cursor.js +5 -4
  40. package/.aios-core/infrastructure/scripts/ide-sync/transformers/trae.js +3 -3
  41. package/.aios-core/infrastructure/scripts/ide-sync/transformers/windsurf.js +3 -3
  42. package/.aios-core/install-manifest.yaml +139 -35
  43. package/.aios-core/quality/metrics-collector.js +27 -0
  44. package/.aios-core/scripts/session-context-loader.js +13 -254
  45. package/.aios-core/utils/aios-validator.js +25 -0
  46. package/.aios-core/workflow-intelligence/__tests__/confidence-scorer.test.js +334 -0
  47. package/.aios-core/workflow-intelligence/__tests__/integration.test.js +337 -0
  48. package/.aios-core/workflow-intelligence/__tests__/suggestion-engine.test.js +431 -0
  49. package/.aios-core/workflow-intelligence/__tests__/wave-analyzer.test.js +458 -0
  50. package/.aios-core/workflow-intelligence/__tests__/workflow-registry.test.js +302 -0
  51. package/.aios-core/workflow-intelligence/engine/confidence-scorer.js +305 -0
  52. package/.aios-core/workflow-intelligence/engine/output-formatter.js +285 -0
  53. package/.aios-core/workflow-intelligence/engine/suggestion-engine.js +603 -0
  54. package/.aios-core/workflow-intelligence/engine/wave-analyzer.js +676 -0
  55. package/.aios-core/workflow-intelligence/index.js +327 -0
  56. package/.aios-core/workflow-intelligence/learning/capture-hook.js +147 -0
  57. package/.aios-core/workflow-intelligence/learning/index.js +230 -0
  58. package/.aios-core/workflow-intelligence/learning/pattern-capture.js +340 -0
  59. package/.aios-core/workflow-intelligence/learning/pattern-store.js +498 -0
  60. package/.aios-core/workflow-intelligence/learning/pattern-validator.js +309 -0
  61. package/.aios-core/workflow-intelligence/registry/workflow-registry.js +358 -0
  62. package/package.json +1 -1
@@ -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.6.0
11
- generated_at: "2025-12-23T23:55:52.310Z"
10
+ version: 3.8.0
11
+ generated_at: "2025-12-26T21:45:10.223Z"
12
12
  generator: scripts/generate-install-manifest.js
13
- file_count: 569
13
+ file_count: 595
14
14
  files:
15
15
  - path: cli/commands/generate/index.js
16
16
  hash: sha256:36f8e38ab767fa5478d8dabac548c66dc2c0fc521c216e954ac33fcea0ba597b
@@ -329,13 +329,13 @@ files:
329
329
  type: core
330
330
  size: 9178
331
331
  - path: core/session/context-detector.js
332
- hash: sha256:cd77730a0608269bea82d1d794466de538706cbf45e26beef716061b4edeb2bb
332
+ hash: sha256:e76b2a1ae649b2780bfe94259d1f35e9bdd4a3dbde3a4e6f5c610cb1cb553ecb
333
333
  type: core
334
- size: 7069
334
+ size: 7217
335
335
  - path: core/session/context-loader.js
336
- hash: sha256:280345c1a2e1925b75830534eff172a6e28e8850c9831fc1b2fdc1406ff43e68
336
+ hash: sha256:368214ee83593867cef7a220289ec1ec0e4c06ff1998432322e2f7d852345b51
337
337
  type: core
338
- size: 8216
338
+ size: 13747
339
339
  - path: core/utils/output-formatter.js
340
340
  hash: sha256:9c386d8b0232f92887dc6f8d32671444a5857b6c848c84b561eedef27a178470
341
341
  type: core
@@ -356,14 +356,18 @@ files:
356
356
  hash: sha256:21138a86582b713c2106973907bbf4a5ce4e3192dadd832122ac9c6294d0efb1
357
357
  type: data
358
358
  size: 34868
359
+ - path: data/learned-patterns.yaml
360
+ hash: sha256:24ac0b160615583a0ff783d3da8af80b7f94191575d6db2054ec8e10a3f945dc
361
+ type: data
362
+ size: 68
359
363
  - path: data/technical-preferences.md
360
364
  hash: sha256:6d1111823aefaca138dfaa3661139ae57db0ec9841046617e5024a24e532f570
361
365
  type: data
362
366
  size: 64
363
367
  - path: data/workflow-patterns.yaml
364
- hash: sha256:a84b99984dcf1930705d82cbf771716bc0a6b909b3c854251ba178385b209f49
368
+ hash: sha256:e43d4622473a9a7ffa119c17f154d37ae5b1c4a07335826514d6694e200f2d11
365
369
  type: data
366
- size: 8239
370
+ size: 19713
367
371
  - path: development/agent-teams/team-all.yaml
368
372
  hash: sha256:368efa25930f89d33ee4178c7b77871ad2ca1437ca56376233b0c375a2cb311c
369
373
  type: development
@@ -401,9 +405,9 @@ files:
401
405
  type: agent
402
406
  size: 20268
403
407
  - path: development/agents/dev.md
404
- hash: sha256:d4101a3a2c966329942f49a94305164c0ed4393dd3be71a4ce0549666337ba46
408
+ hash: sha256:b2fc2c28bb871f710546b8e7c6d29cb38966e518be15970fb5073fe39c13f3d5
405
409
  type: agent
406
- size: 17639
410
+ size: 18222
407
411
  - path: development/agents/devops.md
408
412
  hash: sha256:0c7ea6fb80b5758d978003f17aa6c5ba8ca1a5433ac0c53b1dd131e7ecae18a5
409
413
  type: agent
@@ -425,9 +429,9 @@ files:
425
429
  type: agent
426
430
  size: 9866
427
431
  - path: development/agents/squad-creator.md
428
- hash: sha256:b2d40ad818043acd04cb00eb2e5ff778498c65dc91bf81eb6675467fcd60c514
432
+ hash: sha256:51f829162b81693bf34e010718a81f3aa484336f6488e2c7655d2cf5798e79fc
429
433
  type: agent
430
- size: 10367
434
+ size: 11770
431
435
  - path: development/agents/ux-design-expert.md
432
436
  hash: sha256:ce2f28bbd7350f1ca7d1b01ae26924928e496314afb551cafb55604233117954
433
437
  type: agent
@@ -512,6 +516,10 @@ files:
512
516
  hash: sha256:55e0226c3baffe16fd24f3d19179326c43e8dc525697c0b5c972cf15825f7c14
513
517
  type: script
514
518
  size: 3244
519
+ - path: development/scripts/squad/squad-analyzer.js
520
+ hash: sha256:30100571f7d46705b60432fc9e56a19852786d1b3b5a77354e247519b8ca8682
521
+ type: script
522
+ size: 18148
515
523
  - path: development/scripts/squad/squad-designer.js
516
524
  hash: sha256:101cbb7d6ded0d6f991b29ac63dfee2c7bb86cbc8c4fefef728b7d12c3352829
517
525
  type: script
@@ -520,26 +528,30 @@ files:
520
528
  hash: sha256:a62dd5d40ef24426ffdabdcbe0a0a3a7e7e2b1757eba9749a41d3fd4c0e690f8
521
529
  type: script
522
530
  size: 15335
531
+ - path: development/scripts/squad/squad-extender.js
532
+ hash: sha256:ceab4df7d9708449aff28eb2b5cbf57f11b2c93196280c814bf02787e7db22f3
533
+ type: script
534
+ size: 20638
523
535
  - path: development/scripts/squad/squad-generator.js
524
- hash: sha256:6d47ee7e0c662ffd7a8c5975ceca3e71addb54f59fb771d55402d0d57ce3d7d8
536
+ hash: sha256:fa83979eeeac361713e8f99bfec6ac9f9dc9d8d4107ecf809cd3b7370a4de79c
525
537
  type: script
526
- size: 40312
538
+ size: 44048
527
539
  - path: development/scripts/squad/squad-loader.js
528
540
  hash: sha256:7093b9457c93da6845722bf7eac660164963d5007c459afae2149340a7979f1f
529
541
  type: script
530
542
  size: 10549
531
543
  - path: development/scripts/squad/squad-migrator.js
532
- hash: sha256:883899cb84117b66074004fb683ba5f9cefebc57eeb9758f79784e0a92afcd90
544
+ hash: sha256:7aa7c77f252853faa3230898f37f987713c02a21937da69bf0f0da4074884b4a
533
545
  type: script
534
- size: 19520
546
+ size: 19517
535
547
  - path: development/scripts/squad/squad-publisher.js
536
548
  hash: sha256:329c00fb9d1085675a319e8314a5be9e1ee92c617691c47041f58d994982e029
537
549
  type: script
538
550
  size: 18724
539
551
  - path: development/scripts/squad/squad-validator.js
540
- hash: sha256:a19af336adf8caaa79f98e52ab78aee57a9a0a0041f3c4b6c9663a321c0a7f64
552
+ hash: sha256:90f7b1d6f9b072718a7029afe5c238b66c6b880ee18d6c416244dca5d9a6bfa1
541
553
  type: script
542
- size: 19470
554
+ size: 23034
543
555
  - path: development/scripts/story-index-generator.js
544
556
  hash: sha256:5c9bf1339857e25b20875193c6dd42ac6c829491c0f46ba26bf07652aff6ed8b
545
557
  type: script
@@ -680,6 +692,10 @@ files:
680
692
  hash: sha256:f650cbb2056c31cf4b85fb83b4e030ccf613cd5270d1453b80bbc00dc6344a60
681
693
  type: task
682
694
  size: 29544
695
+ - path: development/tasks/create-service.md
696
+ hash: sha256:6ce3eeeab6ed8ff6c5804b4fc4c3006c298009ab60c35b51afedac57082eeb34
697
+ type: task
698
+ size: 8947
683
699
  - path: development/tasks/create-suite.md
684
700
  hash: sha256:8e57cba8aaed7f86a327e11185aca208af241ab41abc95188a2243375085ca15
685
701
  type: task
@@ -904,6 +920,14 @@ files:
904
920
  hash: sha256:091a4236aaf2ef93f6f394b99dc43cbedccbd9a864d55f4992a50dd4684bc97f
905
921
  type: task
906
922
  size: 11422
923
+ - path: development/tasks/next.md
924
+ hash: sha256:53f4311ff6797342701c870b9552884815537dde8cb4936a0b3b5bf53b820f32
925
+ type: task
926
+ size: 6550
927
+ - path: development/tasks/patterns.md
928
+ hash: sha256:447ea50e9c7483d4dd9f88750aee95d459a20385c1c6baea41d93ac3090aa1f8
929
+ type: task
930
+ size: 7372
907
931
  - path: development/tasks/po-backlog-add.md
908
932
  hash: sha256:6d13427b0f323cd27a612ac1504807f66e9aad88ec2ff417ba09ecb0b5b6b850
909
933
  type: task
@@ -1028,10 +1052,14 @@ files:
1028
1052
  hash: sha256:f2a2f314a11af481d48991112c871d65e1def7bb3c9a283b661b67a1f939ac9b
1029
1053
  type: task
1030
1054
  size: 18062
1055
+ - path: development/tasks/squad-creator-analyze.md
1056
+ hash: sha256:5e1c24c1474e77a517b266c862a915d4b5c632340bb7ea426b5ac50ee53273e0
1057
+ type: task
1058
+ size: 7040
1031
1059
  - path: development/tasks/squad-creator-create.md
1032
- hash: sha256:b4c87391c3348ac875d0da966cf28098b5a8d61c67e64360deb7d4c6807db2f9
1060
+ hash: sha256:65f50ac890b671b9321ff18156de02d45b4b5075d3037fa847a5bfe304e7e662
1033
1061
  type: task
1034
- size: 7503
1062
+ size: 8447
1035
1063
  - path: development/tasks/squad-creator-design.md
1036
1064
  hash: sha256:47bcc27f3d3bfa81e567d009b50ac278db386fda48e5a60a3cce7643ef2362bc
1037
1065
  type: task
@@ -1040,6 +1068,10 @@ files:
1040
1068
  hash: sha256:909088d7b585fbb8b465e0b0238ab49546c51876a6752a30f7bf7bf1bf22ef24
1041
1069
  type: task
1042
1070
  size: 3856
1071
+ - path: development/tasks/squad-creator-extend.md
1072
+ hash: sha256:ba5fbc0d4c1512f22790e80efc0660f2af2673a243d3c6d6568bbc76c54d1eef
1073
+ type: task
1074
+ size: 10219
1043
1075
  - path: development/tasks/squad-creator-list.md
1044
1076
  hash: sha256:c0b52c5a8a79b3ed757789e633f42a5458bac18bbcf1aa544fc1f5295151b446
1045
1077
  type: task
@@ -1057,9 +1089,9 @@ files:
1057
1089
  type: task
1058
1090
  size: 8633
1059
1091
  - path: development/tasks/squad-creator-validate.md
1060
- hash: sha256:c07c44217e882cae387d849658e091046e32735a62f6d28e496b4eb042121b98
1092
+ hash: sha256:e4dc8af3ac29ca91998f1db3c70a8ae5a2380f4131dcd635a34eb7ffa24d3b0a
1061
1093
  type: task
1062
- size: 4607
1094
+ size: 5065
1063
1095
  - path: development/tasks/sync-documentation.md
1064
1096
  hash: sha256:caa2077e7a5bbbba9269b04e878b7772a71422ed6fd138447fe5cfb7345f96fb
1065
1097
  type: task
@@ -1100,6 +1132,78 @@ files:
1100
1132
  hash: sha256:7ff03b62614edeb2a9c2bab9681a56ce97cffc59af3bd51054b9dafb1c99701f
1101
1133
  type: task
1102
1134
  size: 14320
1135
+ - path: development/tasks/waves.md
1136
+ hash: sha256:364b955b3315f1621a27ea26ff1459467a19c87781ac714e387fb616aeb336e6
1137
+ type: task
1138
+ size: 4686
1139
+ - path: development/templates/service-template/__tests__/index.test.ts.hbs
1140
+ hash: sha256:04090b95bc0b606448c161d8e698fcf4d5c7da2517a5ac65663554a54c5acf91
1141
+ type: template
1142
+ size: 9573
1143
+ - path: development/templates/service-template/client.ts.hbs
1144
+ hash: sha256:3adbfb5a17d7f734a498bd2520fd44a1eadf05aad9f31b980f886ad6386394a6
1145
+ type: template
1146
+ size: 11810
1147
+ - path: development/templates/service-template/errors.ts.hbs
1148
+ hash: sha256:cc7139c0a2654dbd938ba79730fc97b6d30a79b8d1556fe43c61e0fca6553351
1149
+ type: template
1150
+ size: 5213
1151
+ - path: development/templates/service-template/index.ts.hbs
1152
+ hash: sha256:29d66364af401592a3ea0d5c4c4ebfb09e67373e62f21caac82b47b1bf78b3b8
1153
+ type: template
1154
+ size: 3086
1155
+ - path: development/templates/service-template/jest.config.js
1156
+ hash: sha256:1681bfd7fbc0d330d3487d3427515847c4d57ef300833f573af59e0ad69ed159
1157
+ type: template
1158
+ size: 1750
1159
+ - path: development/templates/service-template/package.json.hbs
1160
+ hash: sha256:7a25b377c72a98e44758afbe5a5b6d95971e47cca8e248b664ec63d7d1b7a590
1161
+ type: template
1162
+ size: 2227
1163
+ - path: development/templates/service-template/README.md.hbs
1164
+ hash: sha256:be6e4531587c37cc2ce1542dbd0c5487752d57f58c84e5dd23978d4173746c2e
1165
+ type: template
1166
+ size: 3426
1167
+ - path: development/templates/service-template/tsconfig.json
1168
+ hash: sha256:8b465fcbdd45c4d6821ba99aea62f2bd7998b1bca8de80486a1525e77d43c9a1
1169
+ type: template
1170
+ size: 1135
1171
+ - path: development/templates/service-template/types.ts.hbs
1172
+ hash: sha256:2338ab2e1ade619bf33a2c8f22b149402b513c05a6d1d8a805c5273c7233d151
1173
+ type: template
1174
+ size: 2516
1175
+ - path: development/templates/squad/agent-template.md
1176
+ hash: sha256:b8ba4621f0bf03bf3612a683cebaa52e246cba19fb81197493ec4d682a1db14b
1177
+ type: template
1178
+ size: 1432
1179
+ - path: development/templates/squad/checklist-template.md
1180
+ hash: sha256:5c962f20d7d56ef8800f60dc32f8105b2669311664cfd330301f812dc67934af
1181
+ type: template
1182
+ size: 1317
1183
+ - path: development/templates/squad/data-template.yaml
1184
+ hash: sha256:d228821b39c7135e19f49405c10cae7ac43f5ffcd946d6363f053420a3a3019f
1185
+ type: template
1186
+ size: 2121
1187
+ - path: development/templates/squad/script-template.js
1188
+ hash: sha256:2d568171ef0c7ed2822d2b1d81a5f0d02c16bd2a2fb11665c8608dd7da7fc323
1189
+ type: template
1190
+ size: 3375
1191
+ - path: development/templates/squad/task-template.md
1192
+ hash: sha256:3f337082a14cd33dd4876d5dc487d0ec069dad5f54aeaac9853b2a13051a70db
1193
+ type: template
1194
+ size: 1882
1195
+ - path: development/templates/squad/template-template.md
1196
+ hash: sha256:b3f13da1cd377d18d3202bd8998fd9f26ad56b5da4b63e316cd01578998b7f55
1197
+ type: template
1198
+ size: 1497
1199
+ - path: development/templates/squad/tool-template.js
1200
+ hash: sha256:31e026003459be51451d0ca6905847bab2d9e397d92dc9b521b563516d27b5cf
1201
+ type: template
1202
+ size: 1796
1203
+ - path: development/templates/squad/workflow-template.yaml
1204
+ hash: sha256:837991039c9dcb77ad4ded82035da96eac70ac2c4fd208833ace470a3ec32c0e
1205
+ type: template
1206
+ size: 2199
1103
1207
  - path: development/workflows/brownfield-fullstack.yaml
1104
1208
  hash: sha256:e54b5ecf6fffd1351bad125c91be89b262773361785d1f0ee19a7dc2fcdf8822
1105
1209
  type: workflow
@@ -1389,9 +1493,9 @@ files:
1389
1493
  type: script
1390
1494
  size: 9735
1391
1495
  - path: infrastructure/scripts/ide-sync/agent-parser.js
1392
- hash: sha256:f18531d68ffec3f661b81c528bff0929bac6fa26213f28affbfebb2faca091db
1496
+ hash: sha256:b4dceac261653d85d791b6cd8b010ebfaa75cab179477b193a2448482b4aa4d4
1393
1497
  type: script
1394
- size: 7428
1498
+ size: 8846
1395
1499
  - path: infrastructure/scripts/ide-sync/index.js
1396
1500
  hash: sha256:9e792b680a1ed19893d10fe27aa14f2ccf2235004d62f83bd052d2dde75c1aeb
1397
1501
  type: script
@@ -1401,25 +1505,25 @@ files:
1401
1505
  type: script
1402
1506
  size: 4518
1403
1507
  - path: infrastructure/scripts/ide-sync/transformers/antigravity.js
1404
- hash: sha256:f78399acdc7557f496abcffcd252e722e91f06afe16859b5066882954d9cd23e
1508
+ hash: sha256:d8fe023ce70651e0d83151f9f90000d8ffb51ab260f246704c1616739a001622
1405
1509
  type: script
1406
- size: 2687
1510
+ size: 2784
1407
1511
  - path: infrastructure/scripts/ide-sync/transformers/claude-code.js
1408
1512
  hash: sha256:f028bdef022e54a5f70c92fa6d6b0dc0877c2fc87a9f8d2f477b29d09248dab7
1409
1513
  type: script
1410
1514
  size: 2225
1411
1515
  - path: infrastructure/scripts/ide-sync/transformers/cursor.js
1412
- hash: sha256:957eb51c7c516f2a73ade0be38d25f97b5508f9816067bfe94ed23e7f17be265
1516
+ hash: sha256:fe38ba6960cc7e1dd2f1de963cdfc5a4be83eb5240c696e9eea607421a23cf22
1413
1517
  type: script
1414
- size: 2321
1518
+ size: 2427
1415
1519
  - path: infrastructure/scripts/ide-sync/transformers/trae.js
1416
- hash: sha256:c3609987ed07d1c4959ef803548cbd224797db117affb8655c30c04ed524967a
1520
+ hash: sha256:784660e839d1516ba7d4f12adbde43e412adb25d6557eccf234e041866790f5b
1417
1521
  type: script
1418
- size: 2895
1522
+ size: 2967
1419
1523
  - path: infrastructure/scripts/ide-sync/transformers/windsurf.js
1420
- hash: sha256:f0c6ad1cbab8618ea41572a4c667e13d471b49794f5508bc4f9184106f260342
1524
+ hash: sha256:6eec13241f1216d64acb5b69af92fb36e22f22697dd166a1afe9e4e9048884db
1421
1525
  type: script
1422
- size: 2636
1526
+ size: 2708
1423
1527
  - path: infrastructure/scripts/ide-sync/validator.js
1424
1528
  hash: sha256:356c78125db7f88d14f4e521808e96593d729291c3d7a1c36cb02f78b4aef8fc
1425
1529
  type: script
@@ -2265,9 +2369,9 @@ files:
2265
2369
  type: script
2266
2370
  size: 4527
2267
2371
  - path: scripts/session-context-loader.js
2268
- hash: sha256:f24c6b273bd19a7b25aa60e68f93df3a100bc291291eeb95cab60a2c001415e6
2372
+ hash: sha256:2581477ca682c6788fc57759b7fc697ffbcaab0a2c1c0cd6eb4f9ad228bb1020
2269
2373
  type: script
2270
- size: 8145
2374
+ size: 1583
2271
2375
  - path: scripts/test-template-system.js
2272
2376
  hash: sha256:4e365df5372a8e09abb43f1f92e99d3e654a51b333dde232bad956e534a481db
2273
2377
  type: script
@@ -279,6 +279,10 @@ class MetricsCollector {
279
279
 
280
280
  const metrics = await this.load();
281
281
 
282
+ // Enforce retention policy before adding new entries (Story SQS-10 nitpick)
283
+ // This prevents unbounded growth of history array
284
+ await this._enforceRetentionPolicy(metrics);
285
+
282
286
  const runRecord = {
283
287
  timestamp: new Date().toISOString(),
284
288
  layer,
@@ -519,6 +523,29 @@ class MetricsCollector {
519
523
  return removedCount;
520
524
  }
521
525
 
526
+ /**
527
+ * Enforce retention policy inline (called before adding new entries)
528
+ * This prevents unbounded growth of the history array.
529
+ * @private
530
+ * @param {Object} metrics - Metrics object to clean
531
+ * @returns {Promise<void>}
532
+ * @see CodeRabbit nitpick: Enforce retention policy to prevent unbounded growth
533
+ */
534
+ async _enforceRetentionPolicy(metrics) {
535
+ const retentionMs = (metrics.retentionDays || this.retentionDays) * 24 * 60 * 60 * 1000;
536
+ const cutoffTimestamp = Date.now() - retentionMs;
537
+
538
+ const originalCount = metrics.history.length;
539
+ metrics.history = metrics.history.filter(
540
+ (entry) => new Date(entry.timestamp).getTime() > cutoffTimestamp,
541
+ );
542
+
543
+ const removedCount = originalCount - metrics.history.length;
544
+ if (removedCount > 0) {
545
+ console.log(`[metrics] Retention policy: removed ${removedCount} old entries (> ${metrics.retentionDays || this.retentionDays} days)`);
546
+ }
547
+ }
548
+
522
549
  /**
523
550
  * Get history for a specific layer
524
551
  * @param {number} layer - Layer number