crewly 1.4.40 → 1.4.42

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 (137) hide show
  1. package/config/orchestrator_tasks/prompts/orchestrator-prompt.md +11 -11
  2. package/config/roles/architect/prompt.md +1 -5
  3. package/config/roles/backend-developer/prompt.md +1 -5
  4. package/config/roles/content-strategist/prompt.md +1 -5
  5. package/config/roles/designer/prompt.md +1 -5
  6. package/config/roles/developer/prompt.md +1 -7
  7. package/config/roles/developer/soul.md +18 -0
  8. package/config/roles/frontend-developer/prompt.md +1 -5
  9. package/config/roles/fullstack-dev/prompt.md +1 -5
  10. package/config/roles/generalist/prompt.md +1 -7
  11. package/config/roles/ops/prompt.md +1 -7
  12. package/config/roles/orchestrator/fragments/communication.md +117 -0
  13. package/config/roles/orchestrator/fragments/lifecycle.md +112 -0
  14. package/config/roles/orchestrator/fragments/recovery.md +47 -0
  15. package/config/roles/orchestrator/prompt.md +44 -44
  16. package/config/roles/orchestrator/soul.md +18 -0
  17. package/config/roles/product-manager/prompt.md +1 -5
  18. package/config/roles/qa/prompt.md +1 -5
  19. package/config/roles/qa-engineer/prompt.md +1 -5
  20. package/config/roles/researcher/prompt.md +1 -5
  21. package/config/roles/researcher/soul.md +18 -0
  22. package/config/roles/sales/prompt.md +1 -5
  23. package/config/roles/support/prompt.md +1 -5
  24. package/config/roles/team-leader/prompt.md +2 -6
  25. package/config/roles/tpm/prompt.md +1 -5
  26. package/config/roles/ux-designer/prompt.md +1 -5
  27. package/config/souls/developer.md +30 -0
  28. package/config/souls/orchestrator.md +30 -0
  29. package/config/souls/researcher.md +30 -0
  30. package/config/templates/agent-claude-md.md +1 -1
  31. package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
  32. package/dist/backend/backend/src/services/agent/agent-registration.service.js +18 -7
  33. package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
  34. package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.d.ts.map +1 -1
  35. package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.js +16 -4
  36. package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.js.map +1 -1
  37. package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.d.ts.map +1 -1
  38. package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.js +11 -0
  39. package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.js.map +1 -1
  40. package/dist/backend/backend/src/services/ai/prompt-builder.service.d.ts.map +1 -1
  41. package/dist/backend/backend/src/services/ai/prompt-builder.service.js +5 -0
  42. package/dist/backend/backend/src/services/ai/prompt-builder.service.js.map +1 -1
  43. package/dist/backend/backend/src/services/ai/prompt-modules/communication.module.d.ts +46 -0
  44. package/dist/backend/backend/src/services/ai/prompt-modules/communication.module.d.ts.map +1 -0
  45. package/dist/backend/backend/src/services/ai/prompt-modules/communication.module.js +151 -0
  46. package/dist/backend/backend/src/services/ai/prompt-modules/communication.module.js.map +1 -0
  47. package/dist/backend/backend/src/services/ai/prompt-modules/context-assembly.service.d.ts +145 -0
  48. package/dist/backend/backend/src/services/ai/prompt-modules/context-assembly.service.d.ts.map +1 -0
  49. package/dist/backend/backend/src/services/ai/prompt-modules/context-assembly.service.js +232 -0
  50. package/dist/backend/backend/src/services/ai/prompt-modules/context-assembly.service.js.map +1 -0
  51. package/dist/backend/backend/src/services/ai/prompt-modules/identity.module.d.ts +28 -0
  52. package/dist/backend/backend/src/services/ai/prompt-modules/identity.module.d.ts.map +1 -0
  53. package/dist/backend/backend/src/services/ai/prompt-modules/identity.module.js +47 -0
  54. package/dist/backend/backend/src/services/ai/prompt-modules/identity.module.js.map +1 -0
  55. package/dist/backend/backend/src/services/ai/prompt-modules/index.d.ts +22 -0
  56. package/dist/backend/backend/src/services/ai/prompt-modules/index.d.ts.map +1 -0
  57. package/dist/backend/backend/src/services/ai/prompt-modules/index.js +26 -0
  58. package/dist/backend/backend/src/services/ai/prompt-modules/index.js.map +1 -0
  59. package/dist/backend/backend/src/services/ai/prompt-modules/learning-reference.module.d.ts +28 -0
  60. package/dist/backend/backend/src/services/ai/prompt-modules/learning-reference.module.d.ts.map +1 -0
  61. package/dist/backend/backend/src/services/ai/prompt-modules/learning-reference.module.js +55 -0
  62. package/dist/backend/backend/src/services/ai/prompt-modules/learning-reference.module.js.map +1 -0
  63. package/dist/backend/backend/src/services/ai/prompt-modules/lifecycle.module.d.ts +44 -0
  64. package/dist/backend/backend/src/services/ai/prompt-modules/lifecycle.module.d.ts.map +1 -0
  65. package/dist/backend/backend/src/services/ai/prompt-modules/lifecycle.module.js +120 -0
  66. package/dist/backend/backend/src/services/ai/prompt-modules/lifecycle.module.js.map +1 -0
  67. package/dist/backend/backend/src/services/ai/prompt-modules/memory-reference.module.d.ts +28 -0
  68. package/dist/backend/backend/src/services/ai/prompt-modules/memory-reference.module.d.ts.map +1 -0
  69. package/dist/backend/backend/src/services/ai/prompt-modules/memory-reference.module.js +46 -0
  70. package/dist/backend/backend/src/services/ai/prompt-modules/memory-reference.module.js.map +1 -0
  71. package/dist/backend/backend/src/services/ai/prompt-modules/project-reference.module.d.ts +29 -0
  72. package/dist/backend/backend/src/services/ai/prompt-modules/project-reference.module.d.ts.map +1 -0
  73. package/dist/backend/backend/src/services/ai/prompt-modules/project-reference.module.js +50 -0
  74. package/dist/backend/backend/src/services/ai/prompt-modules/project-reference.module.js.map +1 -0
  75. package/dist/backend/backend/src/services/ai/prompt-modules/prompt-assembly.service.d.ts +103 -0
  76. package/dist/backend/backend/src/services/ai/prompt-modules/prompt-assembly.service.d.ts.map +1 -0
  77. package/dist/backend/backend/src/services/ai/prompt-modules/prompt-assembly.service.js +305 -0
  78. package/dist/backend/backend/src/services/ai/prompt-modules/prompt-assembly.service.js.map +1 -0
  79. package/dist/backend/backend/src/services/ai/prompt-modules/prompt-module.interface.d.ts +135 -0
  80. package/dist/backend/backend/src/services/ai/prompt-modules/prompt-module.interface.d.ts.map +1 -0
  81. package/dist/backend/backend/src/services/ai/prompt-modules/prompt-module.interface.js +46 -0
  82. package/dist/backend/backend/src/services/ai/prompt-modules/prompt-module.interface.js.map +1 -0
  83. package/dist/backend/backend/src/services/ai/prompt-modules/recovery.module.d.ts +34 -0
  84. package/dist/backend/backend/src/services/ai/prompt-modules/recovery.module.d.ts.map +1 -0
  85. package/dist/backend/backend/src/services/ai/prompt-modules/recovery.module.js +69 -0
  86. package/dist/backend/backend/src/services/ai/prompt-modules/recovery.module.js.map +1 -0
  87. package/dist/backend/backend/src/services/ai/prompt-modules/scheduled-messages.loader.d.ts +55 -0
  88. package/dist/backend/backend/src/services/ai/prompt-modules/scheduled-messages.loader.d.ts.map +1 -0
  89. package/dist/backend/backend/src/services/ai/prompt-modules/scheduled-messages.loader.js +96 -0
  90. package/dist/backend/backend/src/services/ai/prompt-modules/scheduled-messages.loader.js.map +1 -0
  91. package/dist/backend/backend/src/services/ai/prompt-modules/skills-reference.module.d.ts +28 -0
  92. package/dist/backend/backend/src/services/ai/prompt-modules/skills-reference.module.d.ts.map +1 -0
  93. package/dist/backend/backend/src/services/ai/prompt-modules/skills-reference.module.js +65 -0
  94. package/dist/backend/backend/src/services/ai/prompt-modules/skills-reference.module.js.map +1 -0
  95. package/dist/backend/backend/src/services/ai/prompt-modules/soul.module.d.ts +70 -0
  96. package/dist/backend/backend/src/services/ai/prompt-modules/soul.module.d.ts.map +1 -0
  97. package/dist/backend/backend/src/services/ai/prompt-modules/soul.module.js +166 -0
  98. package/dist/backend/backend/src/services/ai/prompt-modules/soul.module.js.map +1 -0
  99. package/dist/backend/backend/src/services/ai/prompt-modules/team-reference.module.d.ts +54 -0
  100. package/dist/backend/backend/src/services/ai/prompt-modules/team-reference.module.d.ts.map +1 -0
  101. package/dist/backend/backend/src/services/ai/prompt-modules/team-reference.module.js +149 -0
  102. package/dist/backend/backend/src/services/ai/prompt-modules/team-reference.module.js.map +1 -0
  103. package/dist/backend/backend/src/services/ai/prompt-modules/user-profile-reference.module.d.ts +28 -0
  104. package/dist/backend/backend/src/services/ai/prompt-modules/user-profile-reference.module.d.ts.map +1 -0
  105. package/dist/backend/backend/src/services/ai/prompt-modules/user-profile-reference.module.js +53 -0
  106. package/dist/backend/backend/src/services/ai/prompt-modules/user-profile-reference.module.js.map +1 -0
  107. package/dist/backend/backend/src/services/ai/self-improvement/attention.service.d.ts +74 -0
  108. package/dist/backend/backend/src/services/ai/self-improvement/attention.service.d.ts.map +1 -0
  109. package/dist/backend/backend/src/services/ai/self-improvement/attention.service.js +132 -0
  110. package/dist/backend/backend/src/services/ai/self-improvement/attention.service.js.map +1 -0
  111. package/dist/backend/backend/src/services/ai/self-improvement/growth-areas.service.d.ts +81 -0
  112. package/dist/backend/backend/src/services/ai/self-improvement/growth-areas.service.d.ts.map +1 -0
  113. package/dist/backend/backend/src/services/ai/self-improvement/growth-areas.service.js +135 -0
  114. package/dist/backend/backend/src/services/ai/self-improvement/growth-areas.service.js.map +1 -0
  115. package/dist/backend/backend/src/services/ai/self-improvement/index.d.ts +13 -0
  116. package/dist/backend/backend/src/services/ai/self-improvement/index.d.ts.map +1 -0
  117. package/dist/backend/backend/src/services/ai/self-improvement/index.js +13 -0
  118. package/dist/backend/backend/src/services/ai/self-improvement/index.js.map +1 -0
  119. package/dist/backend/backend/src/services/ai/self-improvement/memory-consolidation.service.d.ts +107 -0
  120. package/dist/backend/backend/src/services/ai/self-improvement/memory-consolidation.service.d.ts.map +1 -0
  121. package/dist/backend/backend/src/services/ai/self-improvement/memory-consolidation.service.js +183 -0
  122. package/dist/backend/backend/src/services/ai/self-improvement/memory-consolidation.service.js.map +1 -0
  123. package/dist/backend/backend/src/services/ai/self-improvement/prediction-calibration.service.d.ts +97 -0
  124. package/dist/backend/backend/src/services/ai/self-improvement/prediction-calibration.service.d.ts.map +1 -0
  125. package/dist/backend/backend/src/services/ai/self-improvement/prediction-calibration.service.js +128 -0
  126. package/dist/backend/backend/src/services/ai/self-improvement/prediction-calibration.service.js.map +1 -0
  127. package/dist/backend/backend/src/services/ai/self-improvement/self-model.service.d.ts +95 -0
  128. package/dist/backend/backend/src/services/ai/self-improvement/self-model.service.d.ts.map +1 -0
  129. package/dist/backend/backend/src/services/ai/self-improvement/self-model.service.js +116 -0
  130. package/dist/backend/backend/src/services/ai/self-improvement/self-model.service.js.map +1 -0
  131. package/dist/backend/backend/src/services/prompt/prompt-generator.service.d.ts.map +1 -1
  132. package/dist/backend/backend/src/services/prompt/prompt-generator.service.js +9 -11
  133. package/dist/backend/backend/src/services/prompt/prompt-generator.service.js.map +1 -1
  134. package/dist/backend/backend/src/services/skill/skill-catalog.service.d.ts.map +1 -1
  135. package/dist/backend/backend/src/services/skill/skill-catalog.service.js +3 -1
  136. package/dist/backend/backend/src/services/skill/skill-catalog.service.js.map +1 -1
  137. package/package.json +1 -1
@@ -0,0 +1,145 @@
1
+ /**
2
+ * Configuration for a context loader.
3
+ */
4
+ export interface ContextLoaderConfig {
5
+ /** Agent ID (session name) */
6
+ agentId: string;
7
+ /** Agent's role */
8
+ role: string;
9
+ /** Project path */
10
+ projectPath?: string;
11
+ /** Team ID */
12
+ teamId?: string;
13
+ }
14
+ /**
15
+ * Result of loading a context module.
16
+ */
17
+ export interface ContextLoadResult {
18
+ /** Context module name */
19
+ name: string;
20
+ /** Loaded content */
21
+ content: string;
22
+ /** Estimated token count */
23
+ estimatedTokens: number;
24
+ /** When this context was loaded */
25
+ loadedAt: Date;
26
+ }
27
+ /**
28
+ * A context loader function that retrieves dynamic data for a context module.
29
+ */
30
+ export type ContextLoader = (config: ContextLoaderConfig) => Promise<string>;
31
+ /**
32
+ * Service that manages runtime context assembly for agents.
33
+ *
34
+ * Unlike prompt modules (static, assembled once at startup), context modules
35
+ * contain dynamic data that can be refreshed mid-session. Context is compactable
36
+ * by F13 ContextWindowMonitor.
37
+ *
38
+ * Responsibilities:
39
+ * - Registers context loaders for different data sources
40
+ * - Loads and assembles context on demand
41
+ * - Supports mid-session refresh without full rebuild
42
+ * - Enforces context token budgets
43
+ * - Tracks loaded context for cache/refresh management
44
+ *
45
+ * @example
46
+ * ```typescript
47
+ * const contextService = new ContextAssemblyService();
48
+ *
49
+ * contextService.registerLoader('memory', async (config) => {
50
+ * const memoryService = MemoryService.getInstance();
51
+ * return memoryService.getFullContext(config.agentId, config.projectPath);
52
+ * });
53
+ *
54
+ * const context = await contextService.loadAll({
55
+ * agentId: 'crewly-dev-001',
56
+ * role: 'developer',
57
+ * projectPath: '/path/to/project',
58
+ * });
59
+ * ```
60
+ */
61
+ export declare class ContextAssemblyService {
62
+ private logger;
63
+ private loaders;
64
+ private cache;
65
+ private totalTokenBudget;
66
+ constructor(tokenBudget?: number);
67
+ /**
68
+ * Register a context loader for a named context module.
69
+ *
70
+ * @param name - Context module name (e.g., 'memory', 'team_context')
71
+ * @param loader - Async function that loads context data
72
+ */
73
+ registerLoader(name: string, loader: ContextLoader): void;
74
+ /**
75
+ * Remove a registered context loader.
76
+ *
77
+ * @param name - Context module name to remove
78
+ */
79
+ removeLoader(name: string): void;
80
+ /**
81
+ * Get names of all registered loaders.
82
+ *
83
+ * @returns Array of registered loader names
84
+ */
85
+ getLoaderNames(): string[];
86
+ /**
87
+ * Load a single context module by name.
88
+ *
89
+ * @param name - Context module name
90
+ * @param config - Loader configuration
91
+ * @param useCache - Whether to return cached result if available (default: false)
92
+ * @returns Context load result or null if loader not found
93
+ */
94
+ load(name: string, config: ContextLoaderConfig, useCache?: boolean): Promise<ContextLoadResult | null>;
95
+ /**
96
+ * Load all registered context modules and assemble into a single string.
97
+ *
98
+ * @param config - Loader configuration
99
+ * @returns Assembled context string
100
+ */
101
+ loadAll(config: ContextLoaderConfig): Promise<string>;
102
+ /**
103
+ * Refresh a specific context module (reload from source).
104
+ *
105
+ * @param name - Context module name to refresh
106
+ * @param config - Loader configuration
107
+ * @returns Refreshed context or null
108
+ */
109
+ refresh(name: string, config: ContextLoaderConfig): Promise<ContextLoadResult | null>;
110
+ /**
111
+ * Clear all cached context data.
112
+ */
113
+ clearCache(): void;
114
+ /**
115
+ * Get cached context by name (without reloading).
116
+ *
117
+ * @param name - Context module name
118
+ * @returns Cached result or null
119
+ */
120
+ getCached(name: string): ContextLoadResult | null;
121
+ /**
122
+ * Get or set the total token budget.
123
+ *
124
+ * @param budget - Optional new budget to set
125
+ * @returns Current token budget
126
+ */
127
+ tokenBudget(budget?: number): number;
128
+ /**
129
+ * Refresh context with a reduced budget — triggered by ContextWindowMonitorService
130
+ * (Feature F13) when context window usage exceeds the compaction threshold (80%).
131
+ *
132
+ * Only reloads the highest-priority loaders that fit within the reduced budget.
133
+ * Loaders are loaded in registration order; once budget is exhausted, remaining
134
+ * loaders are skipped.
135
+ *
136
+ * Integration: ContextWindowMonitorService calls this via
137
+ * `contextAssembly.compactRefresh(config, reducedBudget)` when usage > 80%.
138
+ *
139
+ * @param config - Loader configuration
140
+ * @param reducedBudget - Reduced token budget for compacted context
141
+ * @returns Assembled context string within reduced budget
142
+ */
143
+ compactRefresh(config: ContextLoaderConfig, reducedBudget: number): Promise<string>;
144
+ }
145
+ //# sourceMappingURL=context-assembly.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-assembly.service.d.ts","sourceRoot":"","sources":["../../../../../../../backend/src/services/ai/prompt-modules/context-assembly.service.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,WAAW,mBAAmB;IACnC,8BAA8B;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,mBAAmB;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IACjC,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,qBAAqB;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,4BAA4B;IAC5B,eAAe,EAAE,MAAM,CAAC;IACxB,mCAAmC;IACnC,QAAQ,EAAE,IAAI,CAAC;CACf;AAED;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,MAAM,EAAE,mBAAmB,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAO7E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,qBAAa,sBAAsB;IAClC,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,OAAO,CAAyC;IACxD,OAAO,CAAC,KAAK,CAA6C;IAC1D,OAAO,CAAC,gBAAgB,CAAS;gBAErB,WAAW,GAAE,MAA+B;IAKxD;;;;;OAKG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI;IAIzD;;;;OAIG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAKhC;;;;OAIG;IACH,cAAc,IAAI,MAAM,EAAE;IAI1B;;;;;;;OAOG;IACG,IAAI,CACT,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,mBAAmB,EAC3B,QAAQ,GAAE,OAAe,GACvB,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAoCpC;;;;;OAKG;IACG,OAAO,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC;IAkD3D;;;;;;OAMG;IACG,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAK3F;;OAEG;IACH,UAAU,IAAI,IAAI;IAIlB;;;;;OAKG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI;IAIjD;;;;;OAKG;IACH,WAAW,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM;IAOpC;;;;;;;;;;;;;;OAcG;IACG,cAAc,CACnB,MAAM,EAAE,mBAAmB,EAC3B,aAAa,EAAE,MAAM,GACnB,OAAO,CAAC,MAAM,CAAC;CAoBlB"}
@@ -0,0 +1,232 @@
1
+ import { LoggerService } from '../../core/logger.service.js';
2
+ import { estimateTokens } from './prompt-module.interface.js';
3
+ /**
4
+ * Default total token budget for all context modules combined.
5
+ */
6
+ const DEFAULT_CONTEXT_BUDGET = 15000;
7
+ /**
8
+ * Service that manages runtime context assembly for agents.
9
+ *
10
+ * Unlike prompt modules (static, assembled once at startup), context modules
11
+ * contain dynamic data that can be refreshed mid-session. Context is compactable
12
+ * by F13 ContextWindowMonitor.
13
+ *
14
+ * Responsibilities:
15
+ * - Registers context loaders for different data sources
16
+ * - Loads and assembles context on demand
17
+ * - Supports mid-session refresh without full rebuild
18
+ * - Enforces context token budgets
19
+ * - Tracks loaded context for cache/refresh management
20
+ *
21
+ * @example
22
+ * ```typescript
23
+ * const contextService = new ContextAssemblyService();
24
+ *
25
+ * contextService.registerLoader('memory', async (config) => {
26
+ * const memoryService = MemoryService.getInstance();
27
+ * return memoryService.getFullContext(config.agentId, config.projectPath);
28
+ * });
29
+ *
30
+ * const context = await contextService.loadAll({
31
+ * agentId: 'crewly-dev-001',
32
+ * role: 'developer',
33
+ * projectPath: '/path/to/project',
34
+ * });
35
+ * ```
36
+ */
37
+ export class ContextAssemblyService {
38
+ logger;
39
+ loaders = new Map();
40
+ cache = new Map();
41
+ totalTokenBudget;
42
+ constructor(tokenBudget = DEFAULT_CONTEXT_BUDGET) {
43
+ this.logger = LoggerService.getInstance().createComponentLogger('ContextAssemblyService');
44
+ this.totalTokenBudget = tokenBudget;
45
+ }
46
+ /**
47
+ * Register a context loader for a named context module.
48
+ *
49
+ * @param name - Context module name (e.g., 'memory', 'team_context')
50
+ * @param loader - Async function that loads context data
51
+ */
52
+ registerLoader(name, loader) {
53
+ this.loaders.set(name, loader);
54
+ }
55
+ /**
56
+ * Remove a registered context loader.
57
+ *
58
+ * @param name - Context module name to remove
59
+ */
60
+ removeLoader(name) {
61
+ this.loaders.delete(name);
62
+ this.cache.delete(name);
63
+ }
64
+ /**
65
+ * Get names of all registered loaders.
66
+ *
67
+ * @returns Array of registered loader names
68
+ */
69
+ getLoaderNames() {
70
+ return Array.from(this.loaders.keys());
71
+ }
72
+ /**
73
+ * Load a single context module by name.
74
+ *
75
+ * @param name - Context module name
76
+ * @param config - Loader configuration
77
+ * @param useCache - Whether to return cached result if available (default: false)
78
+ * @returns Context load result or null if loader not found
79
+ */
80
+ async load(name, config, useCache = false) {
81
+ if (useCache && this.cache.has(name)) {
82
+ return this.cache.get(name) || null;
83
+ }
84
+ const loader = this.loaders.get(name);
85
+ if (!loader) {
86
+ this.logger.warn(`No context loader registered for '${name}'`);
87
+ return null;
88
+ }
89
+ try {
90
+ const content = await loader(config);
91
+ const result = {
92
+ name,
93
+ content: content || '',
94
+ estimatedTokens: estimateTokens(content || ''),
95
+ loadedAt: new Date(),
96
+ };
97
+ this.cache.set(name, result);
98
+ this.logger.debug(`Context '${name}' loaded`, {
99
+ agentId: config.agentId,
100
+ tokens: result.estimatedTokens,
101
+ });
102
+ return result;
103
+ }
104
+ catch (error) {
105
+ this.logger.error(`Context loader '${name}' failed`, {
106
+ agentId: config.agentId,
107
+ error: error instanceof Error ? error.message : String(error),
108
+ });
109
+ return null;
110
+ }
111
+ }
112
+ /**
113
+ * Load all registered context modules and assemble into a single string.
114
+ *
115
+ * @param config - Loader configuration
116
+ * @returns Assembled context string
117
+ */
118
+ async loadAll(config) {
119
+ const results = [];
120
+ let totalTokens = 0;
121
+ for (const [name, loader] of this.loaders.entries()) {
122
+ try {
123
+ const content = await loader(config);
124
+ if (content && content.trim()) {
125
+ const tokens = estimateTokens(content);
126
+ // Skip if adding this context would exceed budget
127
+ if (totalTokens + tokens > this.totalTokenBudget) {
128
+ this.logger.info(`Context '${name}' skipped (budget exceeded)`, {
129
+ agentId: config.agentId,
130
+ currentTokens: totalTokens,
131
+ contextTokens: tokens,
132
+ budget: this.totalTokenBudget,
133
+ });
134
+ continue;
135
+ }
136
+ const result = {
137
+ name,
138
+ content: content.trim(),
139
+ estimatedTokens: tokens,
140
+ loadedAt: new Date(),
141
+ };
142
+ results.push(result);
143
+ this.cache.set(name, result);
144
+ totalTokens += tokens;
145
+ }
146
+ }
147
+ catch (error) {
148
+ this.logger.error(`Context loader '${name}' failed`, {
149
+ agentId: config.agentId,
150
+ error: error instanceof Error ? error.message : String(error),
151
+ });
152
+ }
153
+ }
154
+ this.logger.info('Context assembly complete', {
155
+ agentId: config.agentId,
156
+ loaderCount: results.length,
157
+ totalTokens,
158
+ budget: this.totalTokenBudget,
159
+ modules: results.map((r) => r.name),
160
+ });
161
+ return results.map((r) => r.content).join('\n\n---\n\n');
162
+ }
163
+ /**
164
+ * Refresh a specific context module (reload from source).
165
+ *
166
+ * @param name - Context module name to refresh
167
+ * @param config - Loader configuration
168
+ * @returns Refreshed context or null
169
+ */
170
+ async refresh(name, config) {
171
+ this.cache.delete(name);
172
+ return this.load(name, config, false);
173
+ }
174
+ /**
175
+ * Clear all cached context data.
176
+ */
177
+ clearCache() {
178
+ this.cache.clear();
179
+ }
180
+ /**
181
+ * Get cached context by name (without reloading).
182
+ *
183
+ * @param name - Context module name
184
+ * @returns Cached result or null
185
+ */
186
+ getCached(name) {
187
+ return this.cache.get(name) || null;
188
+ }
189
+ /**
190
+ * Get or set the total token budget.
191
+ *
192
+ * @param budget - Optional new budget to set
193
+ * @returns Current token budget
194
+ */
195
+ tokenBudget(budget) {
196
+ if (budget !== undefined) {
197
+ this.totalTokenBudget = budget;
198
+ }
199
+ return this.totalTokenBudget;
200
+ }
201
+ /**
202
+ * Refresh context with a reduced budget — triggered by ContextWindowMonitorService
203
+ * (Feature F13) when context window usage exceeds the compaction threshold (80%).
204
+ *
205
+ * Only reloads the highest-priority loaders that fit within the reduced budget.
206
+ * Loaders are loaded in registration order; once budget is exhausted, remaining
207
+ * loaders are skipped.
208
+ *
209
+ * Integration: ContextWindowMonitorService calls this via
210
+ * `contextAssembly.compactRefresh(config, reducedBudget)` when usage > 80%.
211
+ *
212
+ * @param config - Loader configuration
213
+ * @param reducedBudget - Reduced token budget for compacted context
214
+ * @returns Assembled context string within reduced budget
215
+ */
216
+ async compactRefresh(config, reducedBudget) {
217
+ const originalBudget = this.totalTokenBudget;
218
+ this.totalTokenBudget = reducedBudget;
219
+ this.logger.info('Compact refresh triggered', {
220
+ agentId: config.agentId,
221
+ originalBudget,
222
+ reducedBudget,
223
+ });
224
+ // Clear cache to force fresh loads
225
+ this.clearCache();
226
+ const result = await this.loadAll(config);
227
+ // Restore original budget
228
+ this.totalTokenBudget = originalBudget;
229
+ return result;
230
+ }
231
+ }
232
+ //# sourceMappingURL=context-assembly.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-assembly.service.js","sourceRoot":"","sources":["../../../../../../../backend/src/services/ai/prompt-modules/context-assembly.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import { PromptModule, ModuleConfig } from './prompt-module.interface.js';
2
+ /**
3
+ * Identity module — provides the agent's core identification.
4
+ *
5
+ * Assembles session name, member ID, role, team, and project path
6
+ * into a structured identity section. This is the highest-priority
7
+ * module and is never truncated.
8
+ *
9
+ * Sources: Path A Step 2+10, Path B Section 6, Path C header.
10
+ */
11
+ export declare class IdentityModule implements PromptModule {
12
+ name: string;
13
+ priority: number;
14
+ maxTokens: number;
15
+ compactable: boolean;
16
+ /**
17
+ * Always included — every agent needs an identity.
18
+ */
19
+ shouldInclude(_config: ModuleConfig): boolean;
20
+ /**
21
+ * Build the identity section with all available fields.
22
+ *
23
+ * @param config - Module configuration with agent details
24
+ * @returns Formatted markdown identity section
25
+ */
26
+ build(config: ModuleConfig): Promise<string>;
27
+ }
28
+ //# sourceMappingURL=identity.module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity.module.d.ts","sourceRoot":"","sources":["../../../../../../../backend/src/services/ai/prompt-modules/identity.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAE1E;;;;;;;;GAQG;AACH,qBAAa,cAAe,YAAW,YAAY;IAClD,IAAI,SAAc;IAClB,QAAQ,SAAK;IACb,SAAS,SAAO;IAChB,WAAW,UAAS;IAEpB;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO;IAI7C;;;;;OAKG;IACG,KAAK,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;CAqBlD"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Identity module — provides the agent's core identification.
3
+ *
4
+ * Assembles session name, member ID, role, team, and project path
5
+ * into a structured identity section. This is the highest-priority
6
+ * module and is never truncated.
7
+ *
8
+ * Sources: Path A Step 2+10, Path B Section 6, Path C header.
9
+ */
10
+ export class IdentityModule {
11
+ name = 'identity';
12
+ priority = 1;
13
+ maxTokens = 150;
14
+ compactable = false;
15
+ /**
16
+ * Always included — every agent needs an identity.
17
+ */
18
+ shouldInclude(_config) {
19
+ return true;
20
+ }
21
+ /**
22
+ * Build the identity section with all available fields.
23
+ *
24
+ * @param config - Module configuration with agent details
25
+ * @returns Formatted markdown identity section
26
+ */
27
+ async build(config) {
28
+ const lines = ['## Your Identity'];
29
+ if (config.sessionName) {
30
+ lines.push(`- **Session Name:** ${config.sessionName}`);
31
+ }
32
+ if (config.memberId) {
33
+ lines.push(`- **Member ID:** ${config.memberId}`);
34
+ }
35
+ if (config.role) {
36
+ lines.push(`- **Role:** ${config.role}`);
37
+ }
38
+ if (config.teamId) {
39
+ lines.push(`- **Team:** ${config.teamId}`);
40
+ }
41
+ if (config.projectPath) {
42
+ lines.push(`- **Project Path:** ${config.projectPath}`);
43
+ }
44
+ return lines.join('\n');
45
+ }
46
+ }
47
+ //# sourceMappingURL=identity.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity.module.js","sourceRoot":"","sources":["../../../../../../../backend/src/services/ai/prompt-modules/identity.module.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,MAAM,OAAO,cAAc;IAC1B,IAAI,GAAG,UAAU,CAAC;IAClB,QAAQ,GAAG,CAAC,CAAC;IACb,SAAS,GAAG,GAAG,CAAC;IAChB,WAAW,GAAG,KAAK,CAAC;IAEpB;;OAEG;IACH,aAAa,CAAC,OAAqB;QAClC,OAAO,IAAI,CAAC;IACb,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,KAAK,CAAC,MAAoB;QAC/B,MAAM,KAAK,GAAa,CAAC,kBAAkB,CAAC,CAAC;QAE7C,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YACxB,KAAK,CAAC,IAAI,CAAC,uBAAuB,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;QACzD,CAAC;QACD,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACrB,KAAK,CAAC,IAAI,CAAC,oBAAoB,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QACnD,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YACjB,KAAK,CAAC,IAAI,CAAC,eAAe,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAC1C,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YACnB,KAAK,CAAC,IAAI,CAAC,eAAe,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5C,CAAC;QACD,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YACxB,KAAK,CAAC,IAAI,CAAC,uBAAuB,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;QACzD,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;CACD"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Prompt Modules — Modular prompt assembly system.
3
+ *
4
+ * Re-exports all prompt module interfaces, implementations,
5
+ * and assembly services from a single entry point.
6
+ */
7
+ export { PromptModule, ModuleConfig, SubordinateInfoCompat, ModuleBuildResult, AssemblyReport, TruncatedModuleInfo, estimateTokens, loadRoleFragment, } from './prompt-module.interface.js';
8
+ export { IdentityModule } from './identity.module.js';
9
+ export { SoulModule } from './soul.module.js';
10
+ export { SkillsReferenceModule } from './skills-reference.module.js';
11
+ export { MemoryReferenceModule } from './memory-reference.module.js';
12
+ export { TeamReferenceModule } from './team-reference.module.js';
13
+ export { ProjectReferenceModule } from './project-reference.module.js';
14
+ export { UserProfileReferenceModule } from './user-profile-reference.module.js';
15
+ export { LearningReferenceModule } from './learning-reference.module.js';
16
+ export { CommunicationModule } from './communication.module.js';
17
+ export { RecoveryModule } from './recovery.module.js';
18
+ export { LifecycleModule } from './lifecycle.module.js';
19
+ export { createScheduledMessagesLoader, ScheduledCheckInfo, ScheduledChecksProvider, } from './scheduled-messages.loader.js';
20
+ export { PromptAssemblyService } from './prompt-assembly.service.js';
21
+ export { ContextAssemblyService } from './context-assembly.service.js';
22
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../backend/src/services/ai/prompt-modules/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EACN,YAAY,EACZ,YAAY,EACZ,qBAAqB,EACrB,iBAAiB,EACjB,cAAc,EACd,mBAAmB,EACnB,cAAc,EACd,gBAAgB,GAChB,MAAM,8BAA8B,CAAC;AAGtC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAChF,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAGxD,OAAO,EACN,6BAA6B,EAC7B,kBAAkB,EAClB,uBAAuB,GACvB,MAAM,gCAAgC,CAAC;AAGxC,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Prompt Modules — Modular prompt assembly system.
3
+ *
4
+ * Re-exports all prompt module interfaces, implementations,
5
+ * and assembly services from a single entry point.
6
+ */
7
+ // Interface and utilities
8
+ export { estimateTokens, loadRoleFragment, } from './prompt-module.interface.js';
9
+ // Prompt modules
10
+ export { IdentityModule } from './identity.module.js';
11
+ export { SoulModule } from './soul.module.js';
12
+ export { SkillsReferenceModule } from './skills-reference.module.js';
13
+ export { MemoryReferenceModule } from './memory-reference.module.js';
14
+ export { TeamReferenceModule } from './team-reference.module.js';
15
+ export { ProjectReferenceModule } from './project-reference.module.js';
16
+ export { UserProfileReferenceModule } from './user-profile-reference.module.js';
17
+ export { LearningReferenceModule } from './learning-reference.module.js';
18
+ export { CommunicationModule } from './communication.module.js';
19
+ export { RecoveryModule } from './recovery.module.js';
20
+ export { LifecycleModule } from './lifecycle.module.js';
21
+ // Context loaders
22
+ export { createScheduledMessagesLoader, } from './scheduled-messages.loader.js';
23
+ // Assembly services
24
+ export { PromptAssemblyService } from './prompt-assembly.service.js';
25
+ export { ContextAssemblyService } from './context-assembly.service.js';
26
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../backend/src/services/ai/prompt-modules/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,0BAA0B;AAC1B,OAAO,EAON,cAAc,EACd,gBAAgB,GAChB,MAAM,8BAA8B,CAAC;AAEtC,iBAAiB;AACjB,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAChF,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,kBAAkB;AAClB,OAAO,EACN,6BAA6B,GAG7B,MAAM,gCAAgC,CAAC;AAExC,oBAAoB;AACpB,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC"}
@@ -0,0 +1,28 @@
1
+ import { PromptModule, ModuleConfig } from './prompt-module.interface.js';
2
+ /**
3
+ * Learning reference module — tells the agent how to access and leverage past learnings.
4
+ *
5
+ * Provides instructions for using record-learning, recalling past experiences,
6
+ * and applying lessons learned from previous sessions.
7
+ *
8
+ * Sources: LearningAccumulationService, record-learning skill.
9
+ */
10
+ export declare class LearningReferenceModule implements PromptModule {
11
+ name: string;
12
+ priority: number;
13
+ maxTokens: number;
14
+ compactable: boolean;
15
+ /**
16
+ * Always included — agents should know how to learn from experience.
17
+ */
18
+ shouldInclude(_config: ModuleConfig): boolean;
19
+ /**
20
+ * Build the learning reference section with instructions
21
+ * on how to record and recall past learnings.
22
+ *
23
+ * @param config - Module configuration with agent skill paths
24
+ * @returns Formatted markdown learning reference section
25
+ */
26
+ build(config: ModuleConfig): Promise<string>;
27
+ }
28
+ //# sourceMappingURL=learning-reference.module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"learning-reference.module.d.ts","sourceRoot":"","sources":["../../../../../../../backend/src/services/ai/prompt-modules/learning-reference.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAE1E;;;;;;;GAOG;AACH,qBAAa,uBAAwB,YAAW,YAAY;IAC3D,IAAI,SAAyB;IAC7B,QAAQ,SAAM;IACd,SAAS,SAAO;IAChB,WAAW,UAAQ;IAEnB;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO;IAI7C;;;;;;OAMG;IACG,KAAK,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;CA2BlD"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Learning reference module — tells the agent how to access and leverage past learnings.
3
+ *
4
+ * Provides instructions for using record-learning, recalling past experiences,
5
+ * and applying lessons learned from previous sessions.
6
+ *
7
+ * Sources: LearningAccumulationService, record-learning skill.
8
+ */
9
+ export class LearningReferenceModule {
10
+ name = 'learning_references';
11
+ priority = 10;
12
+ maxTokens = 250;
13
+ compactable = true;
14
+ /**
15
+ * Always included — agents should know how to learn from experience.
16
+ */
17
+ shouldInclude(_config) {
18
+ return true;
19
+ }
20
+ /**
21
+ * Build the learning reference section with instructions
22
+ * on how to record and recall past learnings.
23
+ *
24
+ * @param config - Module configuration with agent skill paths
25
+ * @returns Formatted markdown learning reference section
26
+ */
27
+ async build(config) {
28
+ return `## Learning from Experience
29
+
30
+ ### Recording Learnings
31
+ When you discover something worth remembering for future sessions, record it immediately:
32
+ \`\`\`bash
33
+ bash ${config.agentSkillsPath}/core/record-learning/execute.sh '{"agentId":"${config.sessionName}","agentRole":"${config.role}","projectPath":"${config.projectPath || ''}","learning":"<what you learned>"}'
34
+ \`\`\`
35
+
36
+ **When to record:**
37
+ - After resolving a bug — capture the root cause and fix
38
+ - After discovering a code pattern or convention
39
+ - After a failed approach — capture what didn't work and why
40
+ - After completing a task — capture key findings and gotchas
41
+ - When you find something that contradicts your assumptions
42
+
43
+ ### Recalling Learnings
44
+ Before starting a task, check what you or other agents have learned:
45
+ \`\`\`bash
46
+ bash ${config.agentSkillsPath}/core/recall/execute.sh '{"agentId":"${config.sessionName}","context":"learnings about <topic>","projectPath":"${config.projectPath || ''}"}'
47
+ \`\`\`
48
+
49
+ ### Applying Learnings
50
+ - Check for relevant learnings before repeating an approach that may have failed before
51
+ - Cross-reference learnings from other agents working on the same project
52
+ - Update or correct stale learnings when you discover they no longer apply`;
53
+ }
54
+ }
55
+ //# sourceMappingURL=learning-reference.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"learning-reference.module.js","sourceRoot":"","sources":["../../../../../../../backend/src/services/ai/prompt-modules/learning-reference.module.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,MAAM,OAAO,uBAAuB;IACnC,IAAI,GAAG,qBAAqB,CAAC;IAC7B,QAAQ,GAAG,EAAE,CAAC;IACd,SAAS,GAAG,GAAG,CAAC;IAChB,WAAW,GAAG,IAAI,CAAC;IAEnB;;OAEG;IACH,aAAa,CAAC,OAAqB;QAClC,OAAO,IAAI,CAAC;IACb,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,KAAK,CAAC,MAAoB;QAC/B,OAAO;;;;;OAKF,MAAM,CAAC,eAAe,iDAAiD,MAAM,CAAC,WAAW,kBAAkB,MAAM,CAAC,IAAI,oBAAoB,MAAM,CAAC,WAAW,IAAI,EAAE;;;;;;;;;;;;;OAalK,MAAM,CAAC,eAAe,wCAAwC,MAAM,CAAC,WAAW,wDAAwD,MAAM,CAAC,WAAW,IAAI,EAAE;;;;;;2EAM5F,CAAC;IAC3E,CAAC;CACD"}