crewly 1.4.41 → 1.4.43

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 (126) hide show
  1. package/config/roles/orchestrator/fragments/communication.md +117 -0
  2. package/config/roles/orchestrator/fragments/lifecycle.md +112 -0
  3. package/config/roles/orchestrator/fragments/recovery.md +47 -0
  4. package/config/skills/agent/core/schedule-check/execute.sh +33 -0
  5. package/config/skills/agent/core/send-message/execute.sh +3 -2
  6. package/config/templates/agent-agents-md.md +8 -18
  7. package/config/templates/agent-claude-md.md +2 -2
  8. package/config/templates/agent-gemini-md.md +8 -17
  9. package/dist/backend/backend/src/constants.d.ts +4 -0
  10. package/dist/backend/backend/src/constants.d.ts.map +1 -1
  11. package/dist/backend/backend/src/constants.js +4 -0
  12. package/dist/backend/backend/src/constants.js.map +1 -1
  13. package/dist/backend/backend/src/controllers/team/team.controller.d.ts.map +1 -1
  14. package/dist/backend/backend/src/controllers/team/team.controller.js +2 -0
  15. package/dist/backend/backend/src/controllers/team/team.controller.js.map +1 -1
  16. package/dist/backend/backend/src/controllers/team/team.routes.d.ts.map +1 -1
  17. package/dist/backend/backend/src/controllers/team/team.routes.js +1 -0
  18. package/dist/backend/backend/src/controllers/team/team.routes.js.map +1 -1
  19. package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
  20. package/dist/backend/backend/src/services/agent/agent-registration.service.js +32 -4
  21. package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
  22. package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.d.ts.map +1 -1
  23. package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.js +23 -1
  24. package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.js.map +1 -1
  25. package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.d.ts +7 -0
  26. package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.d.ts.map +1 -1
  27. package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.js +43 -3
  28. package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.js.map +1 -1
  29. package/dist/backend/backend/src/services/ai/prompt-builder.service.d.ts.map +1 -1
  30. package/dist/backend/backend/src/services/ai/prompt-builder.service.js +5 -0
  31. package/dist/backend/backend/src/services/ai/prompt-builder.service.js.map +1 -1
  32. package/dist/backend/backend/src/services/ai/prompt-modules/communication.module.d.ts.map +1 -1
  33. package/dist/backend/backend/src/services/ai/prompt-modules/communication.module.js +6 -0
  34. package/dist/backend/backend/src/services/ai/prompt-modules/communication.module.js.map +1 -1
  35. package/dist/backend/backend/src/services/ai/prompt-modules/context-assembly.service.d.ts +16 -0
  36. package/dist/backend/backend/src/services/ai/prompt-modules/context-assembly.service.d.ts.map +1 -1
  37. package/dist/backend/backend/src/services/ai/prompt-modules/context-assembly.service.js +30 -0
  38. package/dist/backend/backend/src/services/ai/prompt-modules/context-assembly.service.js.map +1 -1
  39. package/dist/backend/backend/src/services/ai/prompt-modules/index.d.ts +1 -1
  40. package/dist/backend/backend/src/services/ai/prompt-modules/index.d.ts.map +1 -1
  41. package/dist/backend/backend/src/services/ai/prompt-modules/index.js +1 -1
  42. package/dist/backend/backend/src/services/ai/prompt-modules/index.js.map +1 -1
  43. package/dist/backend/backend/src/services/ai/prompt-modules/lifecycle.module.d.ts.map +1 -1
  44. package/dist/backend/backend/src/services/ai/prompt-modules/lifecycle.module.js +8 -0
  45. package/dist/backend/backend/src/services/ai/prompt-modules/lifecycle.module.js.map +1 -1
  46. package/dist/backend/backend/src/services/ai/prompt-modules/prompt-assembly.service.d.ts +29 -12
  47. package/dist/backend/backend/src/services/ai/prompt-modules/prompt-assembly.service.d.ts.map +1 -1
  48. package/dist/backend/backend/src/services/ai/prompt-modules/prompt-assembly.service.js +159 -66
  49. package/dist/backend/backend/src/services/ai/prompt-modules/prompt-assembly.service.js.map +1 -1
  50. package/dist/backend/backend/src/services/ai/prompt-modules/prompt-module.interface.d.ts +35 -0
  51. package/dist/backend/backend/src/services/ai/prompt-modules/prompt-module.interface.d.ts.map +1 -1
  52. package/dist/backend/backend/src/services/ai/prompt-modules/prompt-module.interface.js +23 -0
  53. package/dist/backend/backend/src/services/ai/prompt-modules/prompt-module.interface.js.map +1 -1
  54. package/dist/backend/backend/src/services/ai/prompt-modules/recovery.module.d.ts.map +1 -1
  55. package/dist/backend/backend/src/services/ai/prompt-modules/recovery.module.js +8 -0
  56. package/dist/backend/backend/src/services/ai/prompt-modules/recovery.module.js.map +1 -1
  57. package/dist/backend/backend/src/services/ai/prompt-modules/skills-reference.module.d.ts +18 -4
  58. package/dist/backend/backend/src/services/ai/prompt-modules/skills-reference.module.d.ts.map +1 -1
  59. package/dist/backend/backend/src/services/ai/prompt-modules/skills-reference.module.js +58 -24
  60. package/dist/backend/backend/src/services/ai/prompt-modules/skills-reference.module.js.map +1 -1
  61. package/dist/backend/backend/src/services/ai/prompt-modules/soul.module.d.ts +10 -0
  62. package/dist/backend/backend/src/services/ai/prompt-modules/soul.module.d.ts.map +1 -1
  63. package/dist/backend/backend/src/services/ai/prompt-modules/soul.module.js +55 -1
  64. package/dist/backend/backend/src/services/ai/prompt-modules/soul.module.js.map +1 -1
  65. package/dist/backend/backend/src/services/ai/self-improvement/attention.service.d.ts +74 -0
  66. package/dist/backend/backend/src/services/ai/self-improvement/attention.service.d.ts.map +1 -0
  67. package/dist/backend/backend/src/services/ai/self-improvement/attention.service.js +132 -0
  68. package/dist/backend/backend/src/services/ai/self-improvement/attention.service.js.map +1 -0
  69. package/dist/backend/backend/src/services/ai/self-improvement/growth-areas.service.d.ts +81 -0
  70. package/dist/backend/backend/src/services/ai/self-improvement/growth-areas.service.d.ts.map +1 -0
  71. package/dist/backend/backend/src/services/ai/self-improvement/growth-areas.service.js +135 -0
  72. package/dist/backend/backend/src/services/ai/self-improvement/growth-areas.service.js.map +1 -0
  73. package/dist/backend/backend/src/services/ai/self-improvement/index.d.ts +13 -0
  74. package/dist/backend/backend/src/services/ai/self-improvement/index.d.ts.map +1 -0
  75. package/dist/backend/backend/src/services/ai/self-improvement/index.js +13 -0
  76. package/dist/backend/backend/src/services/ai/self-improvement/index.js.map +1 -0
  77. package/dist/backend/backend/src/services/ai/self-improvement/memory-consolidation.service.d.ts +107 -0
  78. package/dist/backend/backend/src/services/ai/self-improvement/memory-consolidation.service.d.ts.map +1 -0
  79. package/dist/backend/backend/src/services/ai/self-improvement/memory-consolidation.service.js +183 -0
  80. package/dist/backend/backend/src/services/ai/self-improvement/memory-consolidation.service.js.map +1 -0
  81. package/dist/backend/backend/src/services/ai/self-improvement/prediction-calibration.service.d.ts +97 -0
  82. package/dist/backend/backend/src/services/ai/self-improvement/prediction-calibration.service.d.ts.map +1 -0
  83. package/dist/backend/backend/src/services/ai/self-improvement/prediction-calibration.service.js +128 -0
  84. package/dist/backend/backend/src/services/ai/self-improvement/prediction-calibration.service.js.map +1 -0
  85. package/dist/backend/backend/src/services/ai/self-improvement/self-model.service.d.ts +95 -0
  86. package/dist/backend/backend/src/services/ai/self-improvement/self-model.service.d.ts.map +1 -0
  87. package/dist/backend/backend/src/services/ai/self-improvement/self-model.service.js +116 -0
  88. package/dist/backend/backend/src/services/ai/self-improvement/self-model.service.js.map +1 -0
  89. package/dist/backend/backend/src/services/core/storage.service.d.ts +1 -1
  90. package/dist/backend/backend/src/services/core/storage.service.d.ts.map +1 -1
  91. package/dist/backend/backend/src/services/core/storage.service.js +4 -1
  92. package/dist/backend/backend/src/services/core/storage.service.js.map +1 -1
  93. package/dist/backend/backend/src/services/knowledge/embedding-provider.d.ts.map +1 -1
  94. package/dist/backend/backend/src/services/knowledge/embedding-provider.js +17 -2
  95. package/dist/backend/backend/src/services/knowledge/embedding-provider.js.map +1 -1
  96. package/dist/backend/backend/src/services/knowledge/knowledge-search.service.d.ts.map +1 -1
  97. package/dist/backend/backend/src/services/knowledge/knowledge-search.service.js +9 -1
  98. package/dist/backend/backend/src/services/knowledge/knowledge-search.service.js.map +1 -1
  99. package/dist/backend/backend/src/services/skill/skill-catalog.service.d.ts +6 -0
  100. package/dist/backend/backend/src/services/skill/skill-catalog.service.d.ts.map +1 -1
  101. package/dist/backend/backend/src/services/skill/skill-catalog.service.js +19 -1
  102. package/dist/backend/backend/src/services/skill/skill-catalog.service.js.map +1 -1
  103. package/dist/backend/backend/src/services/workflow/scheduler.service.d.ts.map +1 -1
  104. package/dist/backend/backend/src/services/workflow/scheduler.service.js +2 -1
  105. package/dist/backend/backend/src/services/workflow/scheduler.service.js.map +1 -1
  106. package/dist/backend/backend/src/types/index.d.ts +2 -0
  107. package/dist/backend/backend/src/types/index.d.ts.map +1 -1
  108. package/dist/backend/backend/src/types/index.js.map +1 -1
  109. package/dist/cli/backend/src/constants.d.ts +4 -0
  110. package/dist/cli/backend/src/constants.d.ts.map +1 -1
  111. package/dist/cli/backend/src/constants.js +4 -0
  112. package/dist/cli/backend/src/constants.js.map +1 -1
  113. package/dist/cli/backend/src/services/core/storage.service.d.ts +1 -1
  114. package/dist/cli/backend/src/services/core/storage.service.d.ts.map +1 -1
  115. package/dist/cli/backend/src/services/core/storage.service.js +4 -1
  116. package/dist/cli/backend/src/services/core/storage.service.js.map +1 -1
  117. package/dist/cli/backend/src/services/knowledge/embedding-provider.d.ts.map +1 -1
  118. package/dist/cli/backend/src/services/knowledge/embedding-provider.js +17 -2
  119. package/dist/cli/backend/src/services/knowledge/embedding-provider.js.map +1 -1
  120. package/dist/cli/backend/src/services/knowledge/knowledge-search.service.d.ts.map +1 -1
  121. package/dist/cli/backend/src/services/knowledge/knowledge-search.service.js +9 -1
  122. package/dist/cli/backend/src/services/knowledge/knowledge-search.service.js.map +1 -1
  123. package/dist/cli/backend/src/types/index.d.ts +2 -0
  124. package/dist/cli/backend/src/types/index.d.ts.map +1 -1
  125. package/dist/cli/backend/src/types/index.js.map +1 -1
  126. package/package.json +1 -1
@@ -0,0 +1,135 @@
1
+ import * as fs from 'fs';
2
+ import * as path from 'path';
3
+ /**
4
+ * Keywords that indicate potential growth areas when found in learnings/failures.
5
+ */
6
+ const GROWTH_KEYWORDS = {
7
+ 'error handling': 'error handling patterns',
8
+ 'async': 'async/await best practices',
9
+ 'test': 'test coverage and quality',
10
+ 'type': 'TypeScript type system',
11
+ 'performance': 'performance optimization',
12
+ 'security': 'security awareness',
13
+ 'edge case': 'edge case handling',
14
+ 'timeout': 'timeout and retry patterns',
15
+ 'memory leak': 'memory management',
16
+ 'race condition': 'concurrency handling',
17
+ };
18
+ /**
19
+ * Service for tracking agent growth areas over time.
20
+ *
21
+ * Each agent maintains a growth-areas.json file that records areas
22
+ * where the agent is actively improving. Growth areas can be manually
23
+ * added or auto-extracted from learnings and failures.
24
+ *
25
+ * Storage: ~/.crewly/agents/{sessionName}/growth-areas.json
26
+ */
27
+ export class GrowthAreasService {
28
+ /**
29
+ * Get the file path for an agent's growth areas.
30
+ *
31
+ * @param sessionName - Agent session name
32
+ * @returns Absolute path to growth-areas.json
33
+ */
34
+ getFilePath(sessionName) {
35
+ const homeDir = process.env.HOME || process.env.USERPROFILE || '/tmp';
36
+ return path.join(homeDir, '.crewly', 'agents', sessionName, 'growth-areas.json');
37
+ }
38
+ /**
39
+ * Read growth areas data from disk.
40
+ *
41
+ * @param sessionName - Agent session name
42
+ * @returns Growth areas data, or empty default if file doesn't exist
43
+ */
44
+ async getGrowthAreas(sessionName) {
45
+ try {
46
+ const filePath = this.getFilePath(sessionName);
47
+ const raw = fs.readFileSync(filePath, 'utf-8');
48
+ return JSON.parse(raw);
49
+ }
50
+ catch {
51
+ return { areas: [], lastReviewedAt: '' };
52
+ }
53
+ }
54
+ /**
55
+ * Add a new growth area for an agent.
56
+ *
57
+ * @param sessionName - Agent session name
58
+ * @param area - Description of the growth area
59
+ * @returns The created growth area
60
+ */
61
+ async addGrowthArea(sessionName, area) {
62
+ const data = await this.getGrowthAreas(sessionName);
63
+ // Don't add duplicates
64
+ const existing = data.areas.find((a) => a.area.toLowerCase() === area.toLowerCase());
65
+ if (existing) {
66
+ return existing;
67
+ }
68
+ const newArea = {
69
+ area,
70
+ identifiedAt: new Date().toISOString().split('T')[0],
71
+ progress: 'identified',
72
+ evidence: [],
73
+ };
74
+ data.areas.push(newArea);
75
+ data.lastReviewedAt = new Date().toISOString().split('T')[0];
76
+ await this.save(sessionName, data);
77
+ return newArea;
78
+ }
79
+ /**
80
+ * Update the progress of an existing growth area.
81
+ *
82
+ * @param sessionName - Agent session name
83
+ * @param area - Growth area description to update
84
+ * @param progress - New progress status
85
+ * @param evidence - Evidence supporting the progress update
86
+ * @returns Updated growth area or null if not found
87
+ */
88
+ async updateProgress(sessionName, area, progress, evidence) {
89
+ const data = await this.getGrowthAreas(sessionName);
90
+ const found = data.areas.find((a) => a.area.toLowerCase() === area.toLowerCase());
91
+ if (!found) {
92
+ return null;
93
+ }
94
+ found.progress = progress;
95
+ found.evidence.push(evidence);
96
+ data.lastReviewedAt = new Date().toISOString().split('T')[0];
97
+ await this.save(sessionName, data);
98
+ return found;
99
+ }
100
+ /**
101
+ * Auto-extract potential growth areas from a learning or failure text.
102
+ *
103
+ * @param sessionName - Agent session name
104
+ * @param text - Learning or failure text to analyze
105
+ * @returns Array of newly added growth areas (empty if no new areas found)
106
+ */
107
+ async extractFromText(sessionName, text) {
108
+ const lowerText = text.toLowerCase();
109
+ const added = [];
110
+ for (const [keyword, areaName] of Object.entries(GROWTH_KEYWORDS)) {
111
+ if (lowerText.includes(keyword)) {
112
+ const data = await this.getGrowthAreas(sessionName);
113
+ const exists = data.areas.some((a) => a.area.toLowerCase() === areaName.toLowerCase());
114
+ if (!exists) {
115
+ const newArea = await this.addGrowthArea(sessionName, areaName);
116
+ added.push(newArea);
117
+ }
118
+ }
119
+ }
120
+ return added;
121
+ }
122
+ /**
123
+ * Persist growth areas data to disk.
124
+ *
125
+ * @param sessionName - Agent session name
126
+ * @param data - Growth areas data to save
127
+ */
128
+ async save(sessionName, data) {
129
+ const filePath = this.getFilePath(sessionName);
130
+ const dir = path.dirname(filePath);
131
+ fs.mkdirSync(dir, { recursive: true });
132
+ fs.writeFileSync(filePath, JSON.stringify(data, null, 2), 'utf-8');
133
+ }
134
+ }
135
+ //# sourceMappingURL=growth-areas.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"growth-areas.service.js","sourceRoot":"","sources":["../../../../../../../backend/src/services/ai/self-improvement/growth-areas.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AA0B7B;;GAEG;AACH,MAAM,eAAe,GAA2B;IAC/C,gBAAgB,EAAE,yBAAyB;IAC3C,OAAO,EAAE,4BAA4B;IACrC,MAAM,EAAE,2BAA2B;IACnC,MAAM,EAAE,wBAAwB;IAChC,aAAa,EAAE,0BAA0B;IACzC,UAAU,EAAE,oBAAoB;IAChC,WAAW,EAAE,oBAAoB;IACjC,SAAS,EAAE,4BAA4B;IACvC,aAAa,EAAE,mBAAmB;IAClC,gBAAgB,EAAE,sBAAsB;CACxC,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,OAAO,kBAAkB;IAC9B;;;;;OAKG;IACK,WAAW,CAAC,WAAmB;QACtC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,MAAM,CAAC;QACtE,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,mBAAmB,CAAC,CAAC;IAClF,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,cAAc,CAAC,WAAmB;QACvC,IAAI,CAAC;YACJ,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;YAC/C,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAC/C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAoB,CAAC;QAC3C,CAAC;QAAC,MAAM,CAAC;YACR,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC;QAC1C,CAAC;IACF,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,aAAa,CAAC,WAAmB,EAAE,IAAY;QACpD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QAEpD,uBAAuB;QACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAC/B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,WAAW,EAAE,CAClD,CAAC;QACF,IAAI,QAAQ,EAAE,CAAC;YACd,OAAO,QAAQ,CAAC;QACjB,CAAC;QAED,MAAM,OAAO,GAAe;YAC3B,IAAI;YACJ,YAAY,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACpD,QAAQ,EAAE,YAAY;YACtB,QAAQ,EAAE,EAAE;SACZ,CAAC;QAEF,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACzB,IAAI,CAAC,cAAc,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7D,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QAEnC,OAAO,OAAO,CAAC;IAChB,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,cAAc,CACnB,WAAmB,EACnB,IAAY,EACZ,QAAmD,EACnD,QAAgB;QAEhB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QACpD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAC5B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,WAAW,EAAE,CAClD,CAAC;QAEF,IAAI,CAAC,KAAK,EAAE,CAAC;YACZ,OAAO,IAAI,CAAC;QACb,CAAC;QAED,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC1B,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9B,IAAI,CAAC,cAAc,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7D,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QAEnC,OAAO,KAAK,CAAC;IACd,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,eAAe,CAAC,WAAmB,EAAE,IAAY;QACtD,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACrC,MAAM,KAAK,GAAiB,EAAE,CAAC;QAE/B,KAAK,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC;YACnE,IAAI,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBACjC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;gBACpD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAC7B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC,WAAW,EAAE,CACtD,CAAC;gBACF,IAAI,CAAC,MAAM,EAAE,CAAC;oBACb,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;oBAChE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACrB,CAAC;YACF,CAAC;QACF,CAAC;QAED,OAAO,KAAK,CAAC;IACd,CAAC;IAED;;;;;OAKG;IACK,KAAK,CAAC,IAAI,CAAC,WAAmB,EAAE,IAAqB;QAC5D,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QAC/C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACnC,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACvC,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IACpE,CAAC;CACD"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Self-Improvement System — Agent metacognitive capabilities.
3
+ *
4
+ * Provides services for agents to track their own growth,
5
+ * recognize patterns in their behavior, calibrate predictions,
6
+ * manage attention, and consolidate memories.
7
+ */
8
+ export { GrowthAreasService, GrowthArea, GrowthAreasData } from './growth-areas.service.js';
9
+ export { SelfModelService, DecisionPattern, CognitiveBias, BlindSpot, SelfModelData } from './self-model.service.js';
10
+ export { PredictionCalibrationService, Prediction, PredictionsData, } from './prediction-calibration.service.js';
11
+ export { AttentionService, AttentionData } from './attention.service.js';
12
+ export { MemoryConsolidationService, ConsolidatedPattern, ConsolidatedInsight, ConsolidationReport, MemoryProvider, } from './memory-consolidation.service.js';
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../backend/src/services/ai/self-improvement/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5F,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,aAAa,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACrH,OAAO,EACN,4BAA4B,EAC5B,UAAU,EACV,eAAe,GACf,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EACN,0BAA0B,EAC1B,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,cAAc,GACd,MAAM,mCAAmC,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Self-Improvement System — Agent metacognitive capabilities.
3
+ *
4
+ * Provides services for agents to track their own growth,
5
+ * recognize patterns in their behavior, calibrate predictions,
6
+ * manage attention, and consolidate memories.
7
+ */
8
+ export { GrowthAreasService } from './growth-areas.service.js';
9
+ export { SelfModelService } from './self-model.service.js';
10
+ export { PredictionCalibrationService, } from './prediction-calibration.service.js';
11
+ export { AttentionService } from './attention.service.js';
12
+ export { MemoryConsolidationService, } from './memory-consolidation.service.js';
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../backend/src/services/ai/self-improvement/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,kBAAkB,EAA+B,MAAM,2BAA2B,CAAC;AAC5F,OAAO,EAAE,gBAAgB,EAA4D,MAAM,yBAAyB,CAAC;AACrH,OAAO,EACN,4BAA4B,GAG5B,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAiB,MAAM,wBAAwB,CAAC;AACzE,OAAO,EACN,0BAA0B,GAK1B,MAAM,mCAAmC,CAAC"}
@@ -0,0 +1,107 @@
1
+ /**
2
+ * A pattern identified across multiple memories.
3
+ */
4
+ export interface ConsolidatedPattern {
5
+ /** Description of the pattern */
6
+ pattern: string;
7
+ /** How many memories support this pattern */
8
+ occurrences: number;
9
+ /** Source categories (e.g., 'learning', 'failure', 'success') */
10
+ sources: string[];
11
+ /** When this pattern was identified (ISO date string) */
12
+ identifiedAt: string;
13
+ }
14
+ /**
15
+ * An insight derived from cross-memory analysis.
16
+ */
17
+ export interface ConsolidatedInsight {
18
+ /** The insight text */
19
+ insight: string;
20
+ /** Confidence level */
21
+ confidence: 'low' | 'medium' | 'high';
22
+ /** Related memory snippets that support this insight */
23
+ relatedMemories: string[];
24
+ }
25
+ /**
26
+ * Persisted consolidation report structure.
27
+ */
28
+ export interface ConsolidationReport {
29
+ /** Patterns identified across memories */
30
+ patterns: ConsolidatedPattern[];
31
+ /** Insights derived from analysis */
32
+ insights: ConsolidatedInsight[];
33
+ /** When this consolidation was run (ISO string) */
34
+ consolidatedAt: string;
35
+ /** Number of memories analyzed */
36
+ memoriesAnalyzed: number;
37
+ }
38
+ /**
39
+ * Provider function type for retrieving agent memories.
40
+ * Allows dependency injection for testing.
41
+ */
42
+ export type MemoryProvider = (sessionName: string) => Promise<string[]>;
43
+ /**
44
+ * Service for cross-layer memory consolidation.
45
+ *
46
+ * Reads all agent memories (learnings, failures, successes), identifies
47
+ * recurring patterns, and generates a consolidation report. Can be run
48
+ * periodically (e.g., weekly) to keep insights fresh.
49
+ *
50
+ * Storage: ~/.crewly/agents/{sessionName}/consolidation.json
51
+ */
52
+ export declare class MemoryConsolidationService {
53
+ private memoryProvider;
54
+ /**
55
+ * Create a new MemoryConsolidationService.
56
+ *
57
+ * @param memoryProvider - Function that retrieves agent memories
58
+ */
59
+ constructor(memoryProvider: MemoryProvider);
60
+ /**
61
+ * Get the file path for an agent's consolidation report.
62
+ *
63
+ * @param sessionName - Agent session name
64
+ * @returns Absolute path to consolidation.json
65
+ */
66
+ private getFilePath;
67
+ /**
68
+ * Read the most recent consolidation report from disk.
69
+ *
70
+ * @param sessionName - Agent session name
71
+ * @returns Consolidation report, or empty default if none exists
72
+ */
73
+ getReport(sessionName: string): Promise<ConsolidationReport>;
74
+ /**
75
+ * Run consolidation analysis on all agent memories.
76
+ *
77
+ * Identifies recurring patterns by counting word/phrase frequency
78
+ * across memories and extracting common themes.
79
+ *
80
+ * @param sessionName - Agent session name
81
+ * @returns The generated consolidation report
82
+ */
83
+ consolidate(sessionName: string): Promise<ConsolidationReport>;
84
+ /**
85
+ * Extract recurring patterns from memories by analyzing keyword frequency.
86
+ *
87
+ * @param memories - Array of memory text strings
88
+ * @returns Identified patterns sorted by occurrence count
89
+ */
90
+ private extractPatterns;
91
+ /**
92
+ * Derive insights from memories and patterns.
93
+ *
94
+ * @param memories - Array of memory text strings
95
+ * @param patterns - Previously extracted patterns
96
+ * @returns Array of derived insights
97
+ */
98
+ private deriveInsights;
99
+ /**
100
+ * Persist consolidation report to disk.
101
+ *
102
+ * @param sessionName - Agent session name
103
+ * @param report - Consolidation report to save
104
+ */
105
+ private save;
106
+ }
107
+ //# sourceMappingURL=memory-consolidation.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-consolidation.service.d.ts","sourceRoot":"","sources":["../../../../../../../backend/src/services/ai/self-improvement/memory-consolidation.service.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,WAAW,mBAAmB;IACnC,iCAAiC;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,6CAA6C;IAC7C,WAAW,EAAE,MAAM,CAAC;IACpB,iEAAiE;IACjE,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,yDAAyD;IACzD,YAAY,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IACnC,uBAAuB;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,uBAAuB;IACvB,UAAU,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IACtC,wDAAwD;IACxD,eAAe,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IACnC,0CAA0C;IAC1C,QAAQ,EAAE,mBAAmB,EAAE,CAAC;IAChC,qCAAqC;IACrC,QAAQ,EAAE,mBAAmB,EAAE,CAAC;IAChC,mDAAmD;IACnD,cAAc,EAAE,MAAM,CAAC;IACvB,kCAAkC;IAClC,gBAAgB,EAAE,MAAM,CAAC;CACzB;AAED;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;AAExE;;;;;;;;GAQG;AACH,qBAAa,0BAA0B;IACtC,OAAO,CAAC,cAAc,CAAiB;IAEvC;;;;OAIG;gBACS,cAAc,EAAE,cAAc;IAI1C;;;;;OAKG;IACH,OAAO,CAAC,WAAW;IAKnB;;;;;OAKG;IACG,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAelE;;;;;;;;OAQG;IACG,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IA4BpE;;;;;OAKG;IACH,OAAO,CAAC,eAAe;IAgDvB;;;;;;OAMG;IACH,OAAO,CAAC,cAAc;IAiCtB;;;;;OAKG;YACW,IAAI;CAMlB"}
@@ -0,0 +1,183 @@
1
+ import * as fs from 'fs';
2
+ import * as path from 'path';
3
+ /**
4
+ * Service for cross-layer memory consolidation.
5
+ *
6
+ * Reads all agent memories (learnings, failures, successes), identifies
7
+ * recurring patterns, and generates a consolidation report. Can be run
8
+ * periodically (e.g., weekly) to keep insights fresh.
9
+ *
10
+ * Storage: ~/.crewly/agents/{sessionName}/consolidation.json
11
+ */
12
+ export class MemoryConsolidationService {
13
+ memoryProvider;
14
+ /**
15
+ * Create a new MemoryConsolidationService.
16
+ *
17
+ * @param memoryProvider - Function that retrieves agent memories
18
+ */
19
+ constructor(memoryProvider) {
20
+ this.memoryProvider = memoryProvider;
21
+ }
22
+ /**
23
+ * Get the file path for an agent's consolidation report.
24
+ *
25
+ * @param sessionName - Agent session name
26
+ * @returns Absolute path to consolidation.json
27
+ */
28
+ getFilePath(sessionName) {
29
+ const homeDir = process.env.HOME || process.env.USERPROFILE || '/tmp';
30
+ return path.join(homeDir, '.crewly', 'agents', sessionName, 'consolidation.json');
31
+ }
32
+ /**
33
+ * Read the most recent consolidation report from disk.
34
+ *
35
+ * @param sessionName - Agent session name
36
+ * @returns Consolidation report, or empty default if none exists
37
+ */
38
+ async getReport(sessionName) {
39
+ try {
40
+ const filePath = this.getFilePath(sessionName);
41
+ const raw = fs.readFileSync(filePath, 'utf-8');
42
+ return JSON.parse(raw);
43
+ }
44
+ catch {
45
+ return {
46
+ patterns: [],
47
+ insights: [],
48
+ consolidatedAt: '',
49
+ memoriesAnalyzed: 0,
50
+ };
51
+ }
52
+ }
53
+ /**
54
+ * Run consolidation analysis on all agent memories.
55
+ *
56
+ * Identifies recurring patterns by counting word/phrase frequency
57
+ * across memories and extracting common themes.
58
+ *
59
+ * @param sessionName - Agent session name
60
+ * @returns The generated consolidation report
61
+ */
62
+ async consolidate(sessionName) {
63
+ const memories = await this.memoryProvider(sessionName);
64
+ if (memories.length === 0) {
65
+ const emptyReport = {
66
+ patterns: [],
67
+ insights: [],
68
+ consolidatedAt: new Date().toISOString(),
69
+ memoriesAnalyzed: 0,
70
+ };
71
+ await this.save(sessionName, emptyReport);
72
+ return emptyReport;
73
+ }
74
+ const patterns = this.extractPatterns(memories);
75
+ const insights = this.deriveInsights(memories, patterns);
76
+ const report = {
77
+ patterns,
78
+ insights,
79
+ consolidatedAt: new Date().toISOString(),
80
+ memoriesAnalyzed: memories.length,
81
+ };
82
+ await this.save(sessionName, report);
83
+ return report;
84
+ }
85
+ /**
86
+ * Extract recurring patterns from memories by analyzing keyword frequency.
87
+ *
88
+ * @param memories - Array of memory text strings
89
+ * @returns Identified patterns sorted by occurrence count
90
+ */
91
+ extractPatterns(memories) {
92
+ const keyPhrases = {};
93
+ const now = new Date().toISOString().split('T')[0];
94
+ // Track keyword groups
95
+ const topicKeywords = {
96
+ 'error handling': ['error', 'exception', 'catch', 'throw', 'failure'],
97
+ 'testing': ['test', 'coverage', 'jest', 'assert', 'mock'],
98
+ 'performance': ['performance', 'slow', 'optimize', 'cache', 'latency'],
99
+ 'async patterns': ['async', 'await', 'promise', 'concurrent', 'race'],
100
+ 'type safety': ['type', 'typescript', 'interface', 'generic', 'cast'],
101
+ 'code quality': ['refactor', 'clean', 'duplicate', 'pattern', 'convention'],
102
+ 'deployment': ['deploy', 'docker', 'build', 'release', 'production'],
103
+ 'security': ['security', 'auth', 'token', 'credential', 'vulnerability'],
104
+ };
105
+ for (const memory of memories) {
106
+ const lower = memory.toLowerCase();
107
+ for (const [topic, keywords] of Object.entries(topicKeywords)) {
108
+ const hits = keywords.filter((kw) => lower.includes(kw));
109
+ if (hits.length >= 2) {
110
+ if (!keyPhrases[topic]) {
111
+ keyPhrases[topic] = { count: 0, sources: new Set() };
112
+ }
113
+ keyPhrases[topic].count++;
114
+ // Categorize source by content hints
115
+ if (lower.includes('fail') || lower.includes('error') || lower.includes('bug')) {
116
+ keyPhrases[topic].sources.add('failure');
117
+ }
118
+ else if (lower.includes('complet') || lower.includes('success') || lower.includes('fixed')) {
119
+ keyPhrases[topic].sources.add('success');
120
+ }
121
+ else {
122
+ keyPhrases[topic].sources.add('learning');
123
+ }
124
+ }
125
+ }
126
+ }
127
+ return Object.entries(keyPhrases)
128
+ .filter(([, v]) => v.count >= 2)
129
+ .sort((a, b) => b[1].count - a[1].count)
130
+ .map(([topic, v]) => ({
131
+ pattern: topic,
132
+ occurrences: v.count,
133
+ sources: Array.from(v.sources),
134
+ identifiedAt: now,
135
+ }));
136
+ }
137
+ /**
138
+ * Derive insights from memories and patterns.
139
+ *
140
+ * @param memories - Array of memory text strings
141
+ * @param patterns - Previously extracted patterns
142
+ * @returns Array of derived insights
143
+ */
144
+ deriveInsights(memories, patterns) {
145
+ const insights = [];
146
+ // Insight: if a pattern appears in both failures and successes, it's a learning area
147
+ for (const pattern of patterns) {
148
+ if (pattern.sources.includes('failure') && pattern.sources.includes('success')) {
149
+ insights.push({
150
+ insight: `${pattern.pattern}: appears in both failures and successes — active learning area`,
151
+ confidence: pattern.occurrences >= 4 ? 'high' : 'medium',
152
+ relatedMemories: memories
153
+ .filter((m) => m.toLowerCase().includes(pattern.pattern.split(' ')[0]))
154
+ .slice(0, 3),
155
+ });
156
+ }
157
+ }
158
+ // Insight: high-frequency pattern suggests systematic behavior
159
+ for (const pattern of patterns) {
160
+ if (pattern.occurrences >= 4) {
161
+ insights.push({
162
+ insight: `${pattern.pattern}: recurring theme across ${pattern.occurrences} memories — may indicate systematic tendency`,
163
+ confidence: 'high',
164
+ relatedMemories: [],
165
+ });
166
+ }
167
+ }
168
+ return insights;
169
+ }
170
+ /**
171
+ * Persist consolidation report to disk.
172
+ *
173
+ * @param sessionName - Agent session name
174
+ * @param report - Consolidation report to save
175
+ */
176
+ async save(sessionName, report) {
177
+ const filePath = this.getFilePath(sessionName);
178
+ const dir = path.dirname(filePath);
179
+ fs.mkdirSync(dir, { recursive: true });
180
+ fs.writeFileSync(filePath, JSON.stringify(report, null, 2), 'utf-8');
181
+ }
182
+ }
183
+ //# sourceMappingURL=memory-consolidation.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-consolidation.service.js","sourceRoot":"","sources":["../../../../../../../backend/src/services/ai/self-improvement/memory-consolidation.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,97 @@
1
+ /**
2
+ * A single prediction made by an agent.
3
+ */
4
+ export interface Prediction {
5
+ /** Unique prediction ID */
6
+ id: string;
7
+ /** What the agent predicted */
8
+ prediction: string;
9
+ /** Confidence level (0-1) */
10
+ confidence: number;
11
+ /** When the prediction was made (ISO date string) */
12
+ madeAt: string;
13
+ /** Actual outcome (set when resolved) */
14
+ outcome?: string;
15
+ /** Whether the prediction was accurate (set when resolved) */
16
+ accurate?: boolean;
17
+ /** When the prediction was resolved (ISO date string) */
18
+ resolvedAt?: string;
19
+ }
20
+ /**
21
+ * Persisted predictions data structure.
22
+ */
23
+ export interface PredictionsData {
24
+ /** All predictions (resolved and unresolved) */
25
+ predictions: Prediction[];
26
+ /** Overall calibration score (0-1, higher = better calibrated) */
27
+ calibrationScore: number;
28
+ }
29
+ /**
30
+ * Service for tracking agent prediction accuracy and calibration.
31
+ *
32
+ * Agents make predictions with confidence levels, then resolve them
33
+ * with actual outcomes. The calibration score measures how well
34
+ * an agent's confidence maps to actual accuracy.
35
+ *
36
+ * Storage: ~/.crewly/agents/{sessionName}/predictions.json
37
+ */
38
+ export declare class PredictionCalibrationService {
39
+ /**
40
+ * Get the file path for an agent's predictions.
41
+ *
42
+ * @param sessionName - Agent session name
43
+ * @returns Absolute path to predictions.json
44
+ */
45
+ private getFilePath;
46
+ /**
47
+ * Read predictions data from disk.
48
+ *
49
+ * @param sessionName - Agent session name
50
+ * @returns Predictions data, or empty default if file doesn't exist
51
+ */
52
+ getPredictions(sessionName: string): Promise<PredictionsData>;
53
+ /**
54
+ * Record a new prediction.
55
+ *
56
+ * @param sessionName - Agent session name
57
+ * @param prediction - What is being predicted
58
+ * @param confidence - Confidence level (0-1)
59
+ * @returns The created prediction
60
+ */
61
+ makePrediction(sessionName: string, prediction: string, confidence: number): Promise<Prediction>;
62
+ /**
63
+ * Resolve a prediction with its actual outcome.
64
+ *
65
+ * @param sessionName - Agent session name
66
+ * @param id - Prediction ID to resolve
67
+ * @param outcome - What actually happened
68
+ * @param accurate - Whether the prediction was accurate
69
+ * @returns The resolved prediction, or null if not found
70
+ */
71
+ resolvePrediction(sessionName: string, id: string, outcome: string, accurate: boolean): Promise<Prediction | null>;
72
+ /**
73
+ * Get the agent's current calibration score.
74
+ *
75
+ * @param sessionName - Agent session name
76
+ * @returns Calibration score (0-1), or 0 if no resolved predictions
77
+ */
78
+ getCalibrationScore(sessionName: string): Promise<number>;
79
+ /**
80
+ * Calculate calibration score from resolved predictions.
81
+ *
82
+ * Uses a simplified Brier-like score: for each resolved prediction,
83
+ * compares confidence to actual accuracy. Perfect calibration = 1.0.
84
+ *
85
+ * @param predictions - All predictions
86
+ * @returns Calibration score (0-1)
87
+ */
88
+ private calculateCalibrationScore;
89
+ /**
90
+ * Persist predictions data to disk.
91
+ *
92
+ * @param sessionName - Agent session name
93
+ * @param data - Predictions data to save
94
+ */
95
+ private save;
96
+ }
97
+ //# sourceMappingURL=prediction-calibration.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prediction-calibration.service.d.ts","sourceRoot":"","sources":["../../../../../../../backend/src/services/ai/self-improvement/prediction-calibration.service.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,WAAW,UAAU;IAC1B,2BAA2B;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,+BAA+B;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,6BAA6B;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,qDAAqD;IACrD,MAAM,EAAE,MAAM,CAAC;IACf,yCAAyC;IACzC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,yDAAyD;IACzD,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC/B,gDAAgD;IAChD,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,kEAAkE;IAClE,gBAAgB,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;;GAQG;AACH,qBAAa,4BAA4B;IACxC;;;;;OAKG;IACH,OAAO,CAAC,WAAW;IAKnB;;;;;OAKG;IACG,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAUnE;;;;;;;OAOG;IACG,cAAc,CACnB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GAChB,OAAO,CAAC,UAAU,CAAC;IAgBtB;;;;;;;;OAQG;IACG,iBAAiB,CACtB,WAAW,EAAE,MAAM,EACnB,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,OAAO,GACf,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAmB7B;;;;;OAKG;IACG,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAK/D;;;;;;;;OAQG;IACH,OAAO,CAAC,yBAAyB;IAejC;;;;;OAKG;YACW,IAAI;CAMlB"}