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.
- package/config/constants.ts +5 -11
- package/config/orchestrator_tasks/prompts/orchestrator-prompt.md +11 -12
- package/config/roles/architect/prompt.md +1 -5
- package/config/roles/backend-developer/prompt.md +1 -5
- package/config/roles/content-strategist/prompt.md +1 -5
- package/config/roles/designer/prompt.md +1 -5
- package/config/roles/developer/prompt.md +1 -7
- package/config/roles/developer/soul.md +18 -0
- package/config/roles/frontend-developer/prompt.md +1 -5
- package/config/roles/fullstack-dev/prompt.md +1 -5
- package/config/roles/generalist/prompt.md +1 -7
- package/config/roles/ops/prompt.md +1 -7
- package/config/roles/orchestrator/prompt.md +44 -44
- package/config/roles/orchestrator/soul.md +18 -0
- package/config/roles/product-manager/prompt.md +1 -5
- package/config/roles/qa/prompt.md +1 -5
- package/config/roles/qa-engineer/prompt.md +1 -5
- package/config/roles/researcher/prompt.md +1 -5
- package/config/roles/researcher/soul.md +18 -0
- package/config/roles/sales/prompt.md +1 -5
- package/config/roles/support/prompt.md +1 -5
- package/config/roles/team-leader/prompt.md +2 -6
- package/config/roles/tpm/prompt.md +1 -5
- package/config/roles/ux-designer/prompt.md +1 -5
- package/config/skills/_common/lib.sh +2 -8
- package/config/skills/agent/chrome-attach/SKILL.md +84 -0
- package/config/skills/agent/core/complete-task/execute.sh +1 -1
- package/config/skills/agent/vnc-browser/SKILL.md +140 -0
- package/config/souls/developer.md +30 -0
- package/config/souls/orchestrator.md +30 -0
- package/config/souls/researcher.md +30 -0
- package/config/templates/agent-agents-md.md +18 -7
- package/config/templates/agent-claude-md.md +1 -1
- package/config/templates/agent-gemini-md.md +18 -7
- package/config/templates/content-generation-team/team-config.json +1 -2
- package/dist/backend/backend/src/constants.d.ts +5 -5
- package/dist/backend/backend/src/constants.d.ts.map +1 -1
- package/dist/backend/backend/src/constants.js +3 -3
- package/dist/backend/backend/src/constants.js.map +1 -1
- package/dist/backend/backend/src/controllers/approvals/approvals.controller.d.ts +0 -44
- package/dist/backend/backend/src/controllers/approvals/approvals.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/approvals/approvals.controller.js +0 -74
- package/dist/backend/backend/src/controllers/approvals/approvals.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/approvals/approvals.routes.d.ts +1 -1
- package/dist/backend/backend/src/controllers/approvals/approvals.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/approvals/approvals.routes.js +2 -4
- package/dist/backend/backend/src/controllers/approvals/approvals.routes.js.map +1 -1
- package/dist/backend/backend/src/controllers/quality-gate/quality-gate.controller.js +3 -3
- package/dist/backend/backend/src/controllers/quality-gate/quality-gate.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/slack/slack.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/slack/slack.controller.js +0 -12
- package/dist/backend/backend/src/controllers/slack/slack.controller.js.map +1 -1
- package/dist/backend/backend/src/routes/api.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/routes/api.routes.js +0 -13
- package/dist/backend/backend/src/routes/api.routes.js.map +1 -1
- package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/agent-registration.service.js +16 -16
- package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/auditor-scheduler.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/auditor-scheduler.service.js +3 -18
- package/dist/backend/backend/src/services/agent/auditor-scheduler.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/rate-limiter.d.ts +1 -20
- package/dist/backend/backend/src/services/agent/crewly-agent/rate-limiter.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/rate-limiter.js +8 -64
- package/dist/backend/backend/src/services/agent/crewly-agent/rate-limiter.js.map +1 -1
- package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.js +16 -4
- package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.js +11 -0
- package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.js.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/communication.module.d.ts +46 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/communication.module.d.ts.map +1 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/communication.module.js +145 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/communication.module.js.map +1 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/context-assembly.service.d.ts +129 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/context-assembly.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/context-assembly.service.js +202 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/context-assembly.service.js.map +1 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/identity.module.d.ts +28 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/identity.module.d.ts.map +1 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/identity.module.js +47 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/identity.module.js.map +1 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/index.d.ts +22 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/index.d.ts.map +1 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/index.js +26 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/index.js.map +1 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/learning-reference.module.d.ts +28 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/learning-reference.module.d.ts.map +1 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/learning-reference.module.js +55 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/learning-reference.module.js.map +1 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/lifecycle.module.d.ts +44 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/lifecycle.module.d.ts.map +1 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/lifecycle.module.js +112 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/lifecycle.module.js.map +1 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/memory-reference.module.d.ts +28 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/memory-reference.module.d.ts.map +1 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/memory-reference.module.js +46 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/memory-reference.module.js.map +1 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/project-reference.module.d.ts +29 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/project-reference.module.d.ts.map +1 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/project-reference.module.js +50 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/project-reference.module.js.map +1 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/prompt-assembly.service.d.ts +86 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/prompt-assembly.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/prompt-assembly.service.js +212 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/prompt-assembly.service.js.map +1 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/prompt-module.interface.d.ts +100 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/prompt-module.interface.d.ts.map +1 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/prompt-module.interface.js +23 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/prompt-module.interface.js.map +1 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/recovery.module.d.ts +34 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/recovery.module.d.ts.map +1 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/recovery.module.js +61 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/recovery.module.js.map +1 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/scheduled-messages.loader.d.ts +55 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/scheduled-messages.loader.d.ts.map +1 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/scheduled-messages.loader.js +96 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/scheduled-messages.loader.js.map +1 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/skills-reference.module.d.ts +28 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/skills-reference.module.d.ts.map +1 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/skills-reference.module.js +65 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/skills-reference.module.js.map +1 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/soul.module.d.ts +60 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/soul.module.d.ts.map +1 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/soul.module.js +112 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/soul.module.js.map +1 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/team-reference.module.d.ts +54 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/team-reference.module.d.ts.map +1 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/team-reference.module.js +149 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/team-reference.module.js.map +1 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/user-profile-reference.module.d.ts +28 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/user-profile-reference.module.d.ts.map +1 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/user-profile-reference.module.js +53 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/user-profile-reference.module.js.map +1 -0
- package/dist/backend/backend/src/services/cloud/cloud-auth.middleware.d.ts +12 -0
- package/dist/backend/backend/src/services/cloud/cloud-auth.middleware.d.ts.map +1 -1
- package/dist/backend/backend/src/services/cloud/cloud-auth.middleware.js +41 -6
- package/dist/backend/backend/src/services/cloud/cloud-auth.middleware.js.map +1 -1
- package/dist/backend/backend/src/services/core/storage.service.d.ts +7 -0
- package/dist/backend/backend/src/services/core/storage.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/core/storage.service.js +9 -0
- package/dist/backend/backend/src/services/core/storage.service.js.map +1 -1
- package/dist/backend/backend/src/services/messaging/queue-processor.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/messaging/queue-processor.service.js +3 -24
- package/dist/backend/backend/src/services/messaging/queue-processor.service.js.map +1 -1
- package/dist/backend/backend/src/services/prompt/prompt-generator.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/prompt/prompt-generator.service.js +9 -11
- package/dist/backend/backend/src/services/prompt/prompt-generator.service.js.map +1 -1
- package/dist/backend/backend/src/services/skill/skill-catalog.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/skill/skill-catalog.service.js +3 -1
- package/dist/backend/backend/src/services/skill/skill-catalog.service.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts +0 -12
- package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js +0 -28
- package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
- package/dist/backend/backend/src/services/workflow/scheduler.service.d.ts +18 -0
- package/dist/backend/backend/src/services/workflow/scheduler.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/workflow/scheduler.service.js +98 -10
- package/dist/backend/backend/src/services/workflow/scheduler.service.js.map +1 -1
- package/dist/backend/config/constants.d.ts +5 -11
- package/dist/backend/config/constants.d.ts.map +1 -1
- package/dist/backend/config/constants.js +5 -11
- package/dist/backend/config/constants.js.map +1 -1
- package/dist/cli/backend/src/constants.d.ts +5 -5
- package/dist/cli/backend/src/constants.d.ts.map +1 -1
- package/dist/cli/backend/src/constants.js +3 -3
- package/dist/cli/backend/src/constants.js.map +1 -1
- package/dist/cli/backend/src/services/core/storage.service.d.ts +7 -0
- package/dist/cli/backend/src/services/core/storage.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/core/storage.service.js +9 -0
- package/dist/cli/backend/src/services/core/storage.service.js.map +1 -1
- package/dist/cli/cli/src/index.js +0 -8
- package/dist/cli/cli/src/index.js.map +1 -1
- package/dist/cli/config/constants.d.ts +5 -11
- package/dist/cli/config/constants.d.ts.map +1 -1
- package/dist/cli/config/constants.js +5 -11
- package/dist/cli/config/constants.js.map +1 -1
- package/frontend/dist/assets/{index-e8b8498d.js → index-7357dbef.js} +101 -101
- package/frontend/dist/assets/{index-8772d402.css → index-a393888e.css} +1 -1
- package/frontend/dist/index.html +2 -2
- package/package.json +1 -1
- package/config/templates/content-generation-team/norms/brand-guidelines.md +0 -75
- package/config/templates/content-generation-team/norms/content-review.md +0 -74
- package/config/templates/dev-fullstack/norms/code-commit-sop.md +0 -114
- package/config/templates/dev-fullstack/norms/quality-gates.md +0 -62
- package/config/templates/research-analysis/norms/research-methodology.md +0 -77
- package/config/templates/research-analysis/norms/source-citation.md +0 -85
- package/config/templates/social-media-ops/norms/engagement-rules.md +0 -35
- 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
|