crewly 1.4.39 → 1.4.41

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (190) hide show
  1. package/config/constants.ts +5 -11
  2. package/config/orchestrator_tasks/prompts/orchestrator-prompt.md +11 -12
  3. package/config/roles/architect/prompt.md +1 -5
  4. package/config/roles/backend-developer/prompt.md +1 -5
  5. package/config/roles/content-strategist/prompt.md +1 -5
  6. package/config/roles/designer/prompt.md +1 -5
  7. package/config/roles/developer/prompt.md +1 -7
  8. package/config/roles/developer/soul.md +18 -0
  9. package/config/roles/frontend-developer/prompt.md +1 -5
  10. package/config/roles/fullstack-dev/prompt.md +1 -5
  11. package/config/roles/generalist/prompt.md +1 -7
  12. package/config/roles/ops/prompt.md +1 -7
  13. package/config/roles/orchestrator/prompt.md +44 -44
  14. package/config/roles/orchestrator/soul.md +18 -0
  15. package/config/roles/product-manager/prompt.md +1 -5
  16. package/config/roles/qa/prompt.md +1 -5
  17. package/config/roles/qa-engineer/prompt.md +1 -5
  18. package/config/roles/researcher/prompt.md +1 -5
  19. package/config/roles/researcher/soul.md +18 -0
  20. package/config/roles/sales/prompt.md +1 -5
  21. package/config/roles/support/prompt.md +1 -5
  22. package/config/roles/team-leader/prompt.md +2 -6
  23. package/config/roles/tpm/prompt.md +1 -5
  24. package/config/roles/ux-designer/prompt.md +1 -5
  25. package/config/skills/_common/lib.sh +2 -8
  26. package/config/skills/agent/chrome-attach/SKILL.md +84 -0
  27. package/config/skills/agent/core/complete-task/execute.sh +1 -1
  28. package/config/skills/agent/vnc-browser/SKILL.md +140 -0
  29. package/config/souls/developer.md +30 -0
  30. package/config/souls/orchestrator.md +30 -0
  31. package/config/souls/researcher.md +30 -0
  32. package/config/templates/agent-agents-md.md +18 -7
  33. package/config/templates/agent-claude-md.md +1 -1
  34. package/config/templates/agent-gemini-md.md +18 -7
  35. package/config/templates/content-generation-team/team-config.json +1 -2
  36. package/dist/backend/backend/src/constants.d.ts +5 -5
  37. package/dist/backend/backend/src/constants.d.ts.map +1 -1
  38. package/dist/backend/backend/src/constants.js +3 -3
  39. package/dist/backend/backend/src/constants.js.map +1 -1
  40. package/dist/backend/backend/src/controllers/approvals/approvals.controller.d.ts +0 -44
  41. package/dist/backend/backend/src/controllers/approvals/approvals.controller.d.ts.map +1 -1
  42. package/dist/backend/backend/src/controllers/approvals/approvals.controller.js +0 -74
  43. package/dist/backend/backend/src/controllers/approvals/approvals.controller.js.map +1 -1
  44. package/dist/backend/backend/src/controllers/approvals/approvals.routes.d.ts +1 -1
  45. package/dist/backend/backend/src/controllers/approvals/approvals.routes.d.ts.map +1 -1
  46. package/dist/backend/backend/src/controllers/approvals/approvals.routes.js +2 -4
  47. package/dist/backend/backend/src/controllers/approvals/approvals.routes.js.map +1 -1
  48. package/dist/backend/backend/src/controllers/quality-gate/quality-gate.controller.js +3 -3
  49. package/dist/backend/backend/src/controllers/quality-gate/quality-gate.controller.js.map +1 -1
  50. package/dist/backend/backend/src/controllers/slack/slack.controller.d.ts.map +1 -1
  51. package/dist/backend/backend/src/controllers/slack/slack.controller.js +0 -12
  52. package/dist/backend/backend/src/controllers/slack/slack.controller.js.map +1 -1
  53. package/dist/backend/backend/src/routes/api.routes.d.ts.map +1 -1
  54. package/dist/backend/backend/src/routes/api.routes.js +0 -13
  55. package/dist/backend/backend/src/routes/api.routes.js.map +1 -1
  56. package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
  57. package/dist/backend/backend/src/services/agent/agent-registration.service.js +16 -16
  58. package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
  59. package/dist/backend/backend/src/services/agent/auditor-scheduler.service.d.ts.map +1 -1
  60. package/dist/backend/backend/src/services/agent/auditor-scheduler.service.js +3 -18
  61. package/dist/backend/backend/src/services/agent/auditor-scheduler.service.js.map +1 -1
  62. package/dist/backend/backend/src/services/agent/crewly-agent/rate-limiter.d.ts +1 -20
  63. package/dist/backend/backend/src/services/agent/crewly-agent/rate-limiter.d.ts.map +1 -1
  64. package/dist/backend/backend/src/services/agent/crewly-agent/rate-limiter.js +8 -64
  65. package/dist/backend/backend/src/services/agent/crewly-agent/rate-limiter.js.map +1 -1
  66. package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.d.ts.map +1 -1
  67. package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.js +16 -4
  68. package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.js.map +1 -1
  69. package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.d.ts.map +1 -1
  70. package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.js +11 -0
  71. package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.js.map +1 -1
  72. package/dist/backend/backend/src/services/ai/prompt-modules/communication.module.d.ts +46 -0
  73. package/dist/backend/backend/src/services/ai/prompt-modules/communication.module.d.ts.map +1 -0
  74. package/dist/backend/backend/src/services/ai/prompt-modules/communication.module.js +145 -0
  75. package/dist/backend/backend/src/services/ai/prompt-modules/communication.module.js.map +1 -0
  76. package/dist/backend/backend/src/services/ai/prompt-modules/context-assembly.service.d.ts +129 -0
  77. package/dist/backend/backend/src/services/ai/prompt-modules/context-assembly.service.d.ts.map +1 -0
  78. package/dist/backend/backend/src/services/ai/prompt-modules/context-assembly.service.js +202 -0
  79. package/dist/backend/backend/src/services/ai/prompt-modules/context-assembly.service.js.map +1 -0
  80. package/dist/backend/backend/src/services/ai/prompt-modules/identity.module.d.ts +28 -0
  81. package/dist/backend/backend/src/services/ai/prompt-modules/identity.module.d.ts.map +1 -0
  82. package/dist/backend/backend/src/services/ai/prompt-modules/identity.module.js +47 -0
  83. package/dist/backend/backend/src/services/ai/prompt-modules/identity.module.js.map +1 -0
  84. package/dist/backend/backend/src/services/ai/prompt-modules/index.d.ts +22 -0
  85. package/dist/backend/backend/src/services/ai/prompt-modules/index.d.ts.map +1 -0
  86. package/dist/backend/backend/src/services/ai/prompt-modules/index.js +26 -0
  87. package/dist/backend/backend/src/services/ai/prompt-modules/index.js.map +1 -0
  88. package/dist/backend/backend/src/services/ai/prompt-modules/learning-reference.module.d.ts +28 -0
  89. package/dist/backend/backend/src/services/ai/prompt-modules/learning-reference.module.d.ts.map +1 -0
  90. package/dist/backend/backend/src/services/ai/prompt-modules/learning-reference.module.js +55 -0
  91. package/dist/backend/backend/src/services/ai/prompt-modules/learning-reference.module.js.map +1 -0
  92. package/dist/backend/backend/src/services/ai/prompt-modules/lifecycle.module.d.ts +44 -0
  93. package/dist/backend/backend/src/services/ai/prompt-modules/lifecycle.module.d.ts.map +1 -0
  94. package/dist/backend/backend/src/services/ai/prompt-modules/lifecycle.module.js +112 -0
  95. package/dist/backend/backend/src/services/ai/prompt-modules/lifecycle.module.js.map +1 -0
  96. package/dist/backend/backend/src/services/ai/prompt-modules/memory-reference.module.d.ts +28 -0
  97. package/dist/backend/backend/src/services/ai/prompt-modules/memory-reference.module.d.ts.map +1 -0
  98. package/dist/backend/backend/src/services/ai/prompt-modules/memory-reference.module.js +46 -0
  99. package/dist/backend/backend/src/services/ai/prompt-modules/memory-reference.module.js.map +1 -0
  100. package/dist/backend/backend/src/services/ai/prompt-modules/project-reference.module.d.ts +29 -0
  101. package/dist/backend/backend/src/services/ai/prompt-modules/project-reference.module.d.ts.map +1 -0
  102. package/dist/backend/backend/src/services/ai/prompt-modules/project-reference.module.js +50 -0
  103. package/dist/backend/backend/src/services/ai/prompt-modules/project-reference.module.js.map +1 -0
  104. package/dist/backend/backend/src/services/ai/prompt-modules/prompt-assembly.service.d.ts +86 -0
  105. package/dist/backend/backend/src/services/ai/prompt-modules/prompt-assembly.service.d.ts.map +1 -0
  106. package/dist/backend/backend/src/services/ai/prompt-modules/prompt-assembly.service.js +212 -0
  107. package/dist/backend/backend/src/services/ai/prompt-modules/prompt-assembly.service.js.map +1 -0
  108. package/dist/backend/backend/src/services/ai/prompt-modules/prompt-module.interface.d.ts +100 -0
  109. package/dist/backend/backend/src/services/ai/prompt-modules/prompt-module.interface.d.ts.map +1 -0
  110. package/dist/backend/backend/src/services/ai/prompt-modules/prompt-module.interface.js +23 -0
  111. package/dist/backend/backend/src/services/ai/prompt-modules/prompt-module.interface.js.map +1 -0
  112. package/dist/backend/backend/src/services/ai/prompt-modules/recovery.module.d.ts +34 -0
  113. package/dist/backend/backend/src/services/ai/prompt-modules/recovery.module.d.ts.map +1 -0
  114. package/dist/backend/backend/src/services/ai/prompt-modules/recovery.module.js +61 -0
  115. package/dist/backend/backend/src/services/ai/prompt-modules/recovery.module.js.map +1 -0
  116. package/dist/backend/backend/src/services/ai/prompt-modules/scheduled-messages.loader.d.ts +55 -0
  117. package/dist/backend/backend/src/services/ai/prompt-modules/scheduled-messages.loader.d.ts.map +1 -0
  118. package/dist/backend/backend/src/services/ai/prompt-modules/scheduled-messages.loader.js +96 -0
  119. package/dist/backend/backend/src/services/ai/prompt-modules/scheduled-messages.loader.js.map +1 -0
  120. package/dist/backend/backend/src/services/ai/prompt-modules/skills-reference.module.d.ts +28 -0
  121. package/dist/backend/backend/src/services/ai/prompt-modules/skills-reference.module.d.ts.map +1 -0
  122. package/dist/backend/backend/src/services/ai/prompt-modules/skills-reference.module.js +65 -0
  123. package/dist/backend/backend/src/services/ai/prompt-modules/skills-reference.module.js.map +1 -0
  124. package/dist/backend/backend/src/services/ai/prompt-modules/soul.module.d.ts +60 -0
  125. package/dist/backend/backend/src/services/ai/prompt-modules/soul.module.d.ts.map +1 -0
  126. package/dist/backend/backend/src/services/ai/prompt-modules/soul.module.js +112 -0
  127. package/dist/backend/backend/src/services/ai/prompt-modules/soul.module.js.map +1 -0
  128. package/dist/backend/backend/src/services/ai/prompt-modules/team-reference.module.d.ts +54 -0
  129. package/dist/backend/backend/src/services/ai/prompt-modules/team-reference.module.d.ts.map +1 -0
  130. package/dist/backend/backend/src/services/ai/prompt-modules/team-reference.module.js +149 -0
  131. package/dist/backend/backend/src/services/ai/prompt-modules/team-reference.module.js.map +1 -0
  132. package/dist/backend/backend/src/services/ai/prompt-modules/user-profile-reference.module.d.ts +28 -0
  133. package/dist/backend/backend/src/services/ai/prompt-modules/user-profile-reference.module.d.ts.map +1 -0
  134. package/dist/backend/backend/src/services/ai/prompt-modules/user-profile-reference.module.js +53 -0
  135. package/dist/backend/backend/src/services/ai/prompt-modules/user-profile-reference.module.js.map +1 -0
  136. package/dist/backend/backend/src/services/cloud/cloud-auth.middleware.d.ts +12 -0
  137. package/dist/backend/backend/src/services/cloud/cloud-auth.middleware.d.ts.map +1 -1
  138. package/dist/backend/backend/src/services/cloud/cloud-auth.middleware.js +41 -6
  139. package/dist/backend/backend/src/services/cloud/cloud-auth.middleware.js.map +1 -1
  140. package/dist/backend/backend/src/services/core/storage.service.d.ts +7 -0
  141. package/dist/backend/backend/src/services/core/storage.service.d.ts.map +1 -1
  142. package/dist/backend/backend/src/services/core/storage.service.js +9 -0
  143. package/dist/backend/backend/src/services/core/storage.service.js.map +1 -1
  144. package/dist/backend/backend/src/services/messaging/queue-processor.service.d.ts.map +1 -1
  145. package/dist/backend/backend/src/services/messaging/queue-processor.service.js +3 -24
  146. package/dist/backend/backend/src/services/messaging/queue-processor.service.js.map +1 -1
  147. package/dist/backend/backend/src/services/prompt/prompt-generator.service.d.ts.map +1 -1
  148. package/dist/backend/backend/src/services/prompt/prompt-generator.service.js +9 -11
  149. package/dist/backend/backend/src/services/prompt/prompt-generator.service.js.map +1 -1
  150. package/dist/backend/backend/src/services/skill/skill-catalog.service.d.ts.map +1 -1
  151. package/dist/backend/backend/src/services/skill/skill-catalog.service.js +3 -1
  152. package/dist/backend/backend/src/services/skill/skill-catalog.service.js.map +1 -1
  153. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts +0 -12
  154. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -1
  155. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js +0 -28
  156. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
  157. package/dist/backend/backend/src/services/workflow/scheduler.service.d.ts +18 -0
  158. package/dist/backend/backend/src/services/workflow/scheduler.service.d.ts.map +1 -1
  159. package/dist/backend/backend/src/services/workflow/scheduler.service.js +98 -10
  160. package/dist/backend/backend/src/services/workflow/scheduler.service.js.map +1 -1
  161. package/dist/backend/config/constants.d.ts +5 -11
  162. package/dist/backend/config/constants.d.ts.map +1 -1
  163. package/dist/backend/config/constants.js +5 -11
  164. package/dist/backend/config/constants.js.map +1 -1
  165. package/dist/cli/backend/src/constants.d.ts +5 -5
  166. package/dist/cli/backend/src/constants.d.ts.map +1 -1
  167. package/dist/cli/backend/src/constants.js +3 -3
  168. package/dist/cli/backend/src/constants.js.map +1 -1
  169. package/dist/cli/backend/src/services/core/storage.service.d.ts +7 -0
  170. package/dist/cli/backend/src/services/core/storage.service.d.ts.map +1 -1
  171. package/dist/cli/backend/src/services/core/storage.service.js +9 -0
  172. package/dist/cli/backend/src/services/core/storage.service.js.map +1 -1
  173. package/dist/cli/cli/src/index.js +0 -8
  174. package/dist/cli/cli/src/index.js.map +1 -1
  175. package/dist/cli/config/constants.d.ts +5 -11
  176. package/dist/cli/config/constants.d.ts.map +1 -1
  177. package/dist/cli/config/constants.js +5 -11
  178. package/dist/cli/config/constants.js.map +1 -1
  179. package/frontend/dist/assets/{index-e8b8498d.js → index-7357dbef.js} +101 -101
  180. package/frontend/dist/assets/{index-8772d402.css → index-a393888e.css} +1 -1
  181. package/frontend/dist/index.html +2 -2
  182. package/package.json +1 -1
  183. package/config/templates/content-generation-team/norms/brand-guidelines.md +0 -75
  184. package/config/templates/content-generation-team/norms/content-review.md +0 -74
  185. package/config/templates/dev-fullstack/norms/code-commit-sop.md +0 -114
  186. package/config/templates/dev-fullstack/norms/quality-gates.md +0 -62
  187. package/config/templates/research-analysis/norms/research-methodology.md +0 -77
  188. package/config/templates/research-analysis/norms/source-citation.md +0 -85
  189. package/config/templates/social-media-ops/norms/engagement-rules.md +0 -35
  190. package/config/templates/social-media-ops/norms/posting-schedule.md +0 -43
@@ -0,0 +1,145 @@
1
+ /**
2
+ * Communication module — defines how agents communicate across channels.
3
+ *
4
+ * Consolidates message routing (Slack, Chat UI, NOTIFY markers),
5
+ * reply formatting, notification protocol, and thread-aware messaging
6
+ * into a single module. Orchestrators get the full communication spec;
7
+ * workers get a compact report-status-only version.
8
+ *
9
+ * Sources: orchestrator prompt.md §Chat & Slack Communication,
10
+ * §Notification Protocol, §Markdown Content, §Communication Channels,
11
+ * tool-registry reply_slack.
12
+ */
13
+ export class CommunicationModule {
14
+ name = 'communication';
15
+ priority = 8;
16
+ maxTokens = 2000;
17
+ compactable = true;
18
+ /**
19
+ * Always included — every agent communicates.
20
+ */
21
+ shouldInclude(_config) {
22
+ return true;
23
+ }
24
+ /**
25
+ * Build the communication section.
26
+ * Orchestrators and TLs get full Slack/Chat/NOTIFY instructions.
27
+ * Workers get a compact version focused on report-status and send-message.
28
+ *
29
+ * @param config - Module configuration with agent details
30
+ * @returns Formatted markdown communication section
31
+ */
32
+ async build(config) {
33
+ const isOrchestrator = config.role === 'orchestrator';
34
+ const isTL = config.canDelegate === true;
35
+ if (isOrchestrator) {
36
+ return this.buildOrchestratorComms(config);
37
+ }
38
+ if (isTL) {
39
+ return this.buildTLComms(config);
40
+ }
41
+ return this.buildWorkerComms(config);
42
+ }
43
+ /**
44
+ * Full orchestrator communication spec — Slack, Chat UI, NOTIFY markers,
45
+ * thread management, message formatting, and notification protocol.
46
+ */
47
+ buildOrchestratorComms(config) {
48
+ return `## Communication Protocol
49
+
50
+ ### Message Channels
51
+ You have access to multiple communication channels:
52
+ - **Slack** — Primary external channel for user communication
53
+ - **Chat UI** — Web-based chat interface
54
+ - **Google Chat** — Alternative messaging platform
55
+ - **NOTIFY markers** — Internal agent-to-orchestrator signaling
56
+
57
+ ### Message Routing Rules
58
+ 1. **User messages** → Reply on the same channel they used (Slack → Slack, Chat → Chat)
59
+ 2. **Agent status updates** → Process internally, do not forward to user unless requested
60
+ 3. **Error notifications** → Notify user on their active channel
61
+ 4. **Task completions** → Summarize and notify user on their active channel
62
+
63
+ ### Slack Communication
64
+ - Use \`reply-slack\` skill to send messages to Slack threads
65
+ - Always reply in the **same thread** the user messaged from
66
+ - Format messages using Slack mrkdwn (not standard Markdown):
67
+ - Bold: \`*text*\` (not \`**text**\`)
68
+ - Italic: \`_text_\` (not \`*text*\`)
69
+ - Code: \`\\\`code\\\`\` (same as Markdown)
70
+ - Links: \`<url|text>\` (not \`[text](url)\`)
71
+ - Keep messages concise — avoid walls of text in Slack
72
+
73
+ ### Chat UI Communication
74
+ - Use \`reply-chat\` skill for Chat UI responses
75
+ - Standard Markdown formatting is supported
76
+ - Include structured data (tables, code blocks) when helpful
77
+
78
+ ### Notification Protocol
79
+ - **[NOTIFY]** markers signal events that need orchestrator attention
80
+ - Process NOTIFY events by evaluating priority and routing appropriately
81
+ - Never forward raw NOTIFY markers to end users
82
+
83
+ ### Thread Context
84
+ - Maintain thread continuity — always reference the active thread
85
+ - When switching channels, summarize context for the new channel
86
+ - Track channelId and threadTs for Slack thread replies
87
+
88
+ ### Communication Skills
89
+ \`\`\`bash
90
+ bash ${config.agentSkillsPath}/core/report-status/execute.sh '{"sessionName":"${config.sessionName}","status":"<status>","summary":"<summary>","projectPath":"${config.projectPath || config.projectRoot}"}'
91
+ \`\`\`
92
+ \`\`\`bash
93
+ bash ${config.agentSkillsPath}/core/send-message/execute.sh '{"to":"<session>","message":"<msg>"}'
94
+ \`\`\``;
95
+ }
96
+ /**
97
+ * TL communication — delegation-focused messaging plus basic user comms.
98
+ */
99
+ buildTLComms(config) {
100
+ return `## Communication Protocol
101
+
102
+ ### Reporting to Orchestrator
103
+ Use \`report-status\` to keep the orchestrator informed of progress:
104
+ \`\`\`bash
105
+ bash ${config.agentSkillsPath}/core/report-status/execute.sh '{"sessionName":"${config.sessionName}","status":"<status>","summary":"<summary>","projectPath":"${config.projectPath || config.projectRoot}"}'
106
+ \`\`\`
107
+
108
+ ### Messaging Workers
109
+ Use \`send-message\` to communicate with your subordinates:
110
+ \`\`\`bash
111
+ bash ${config.agentSkillsPath}/core/send-message/execute.sh '{"to":"<worker-session>","message":"<task or feedback>"}'
112
+ \`\`\`
113
+
114
+ ### Communication Rules
115
+ 1. **Report up** — Keep orchestrator informed of progress and blockers
116
+ 2. **Direct workers** — Send clear, actionable messages to subordinates
117
+ 3. **Include context** — Always include task ID and acceptance criteria in delegations
118
+ 4. **Use [TL_REPORT]** — Tag all reports to orchestrator with \`[TL_REPORT]\`
119
+ 5. **Thread continuity** — Reference previous messages when following up`;
120
+ }
121
+ /**
122
+ * Worker communication — compact report-status and send-message only.
123
+ */
124
+ buildWorkerComms(config) {
125
+ return `## Communication
126
+
127
+ ### Reporting Progress
128
+ Use \`report-status\` to update your team leader on task progress:
129
+ \`\`\`bash
130
+ bash ${config.agentSkillsPath}/core/report-status/execute.sh '{"sessionName":"${config.sessionName}","status":"<status>","summary":"<summary>","projectPath":"${config.projectPath || config.projectRoot}"}'
131
+ \`\`\`
132
+
133
+ ### Messaging
134
+ Use \`send-message\` to communicate with other agents:
135
+ \`\`\`bash
136
+ bash ${config.agentSkillsPath}/core/send-message/execute.sh '{"to":"<session>","message":"<msg>"}'
137
+ \`\`\`
138
+
139
+ ### Rules
140
+ - Report progress periodically so your team leader stays informed
141
+ - Report blockers immediately — don't wait
142
+ - Keep messages concise and actionable`;
143
+ }
144
+ }
145
+ //# sourceMappingURL=communication.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"communication.module.js","sourceRoot":"","sources":["../../../../../../../backend/src/services/ai/prompt-modules/communication.module.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,mBAAmB;IAC/B,IAAI,GAAG,eAAe,CAAC;IACvB,QAAQ,GAAG,CAAC,CAAC;IACb,SAAS,GAAG,IAAI,CAAC;IACjB,WAAW,GAAG,IAAI,CAAC;IAEnB;;OAEG;IACH,aAAa,CAAC,OAAqB;QAClC,OAAO,IAAI,CAAC;IACb,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,KAAK,CAAC,MAAoB;QAC/B,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,KAAK,cAAc,CAAC;QACtD,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,KAAK,IAAI,CAAC;QAEzC,IAAI,cAAc,EAAE,CAAC;YACpB,OAAO,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;QAC5C,CAAC;QACD,IAAI,IAAI,EAAE,CAAC;YACV,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAClC,CAAC;QACD,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;IAED;;;OAGG;IACK,sBAAsB,CAAC,MAAoB;QAClD,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA0CF,MAAM,CAAC,eAAe,mDAAmD,MAAM,CAAC,WAAW,8DAA8D,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,WAAW;;;OAGjM,MAAM,CAAC,eAAe;OACtB,CAAC;IACP,CAAC;IAED;;OAEG;IACK,YAAY,CAAC,MAAoB;QACxC,OAAO;;;;;OAKF,MAAM,CAAC,eAAe,mDAAmD,MAAM,CAAC,WAAW,8DAA8D,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,WAAW;;;;;;OAMjM,MAAM,CAAC,eAAe;;;;;;;;yEAQ4C,CAAC;IACzE,CAAC;IAED;;OAEG;IACK,gBAAgB,CAAC,MAAoB;QAC5C,OAAO;;;;;OAKF,MAAM,CAAC,eAAe,mDAAmD,MAAM,CAAC,WAAW,8DAA8D,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,WAAW;;;;;;OAMjM,MAAM,CAAC,eAAe;;;;;;uCAMU,CAAC;IACvC,CAAC;CACD"}
@@ -0,0 +1,129 @@
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
+ //# 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;CAMpC"}
@@ -0,0 +1,202 @@
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
+ //# 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, estimateTokens, } 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,GACd,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, } 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,EAKN,cAAc,GACd,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