crewly 1.4.40 → 1.4.42

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (137) hide show
  1. package/config/orchestrator_tasks/prompts/orchestrator-prompt.md +11 -11
  2. package/config/roles/architect/prompt.md +1 -5
  3. package/config/roles/backend-developer/prompt.md +1 -5
  4. package/config/roles/content-strategist/prompt.md +1 -5
  5. package/config/roles/designer/prompt.md +1 -5
  6. package/config/roles/developer/prompt.md +1 -7
  7. package/config/roles/developer/soul.md +18 -0
  8. package/config/roles/frontend-developer/prompt.md +1 -5
  9. package/config/roles/fullstack-dev/prompt.md +1 -5
  10. package/config/roles/generalist/prompt.md +1 -7
  11. package/config/roles/ops/prompt.md +1 -7
  12. package/config/roles/orchestrator/fragments/communication.md +117 -0
  13. package/config/roles/orchestrator/fragments/lifecycle.md +112 -0
  14. package/config/roles/orchestrator/fragments/recovery.md +47 -0
  15. package/config/roles/orchestrator/prompt.md +44 -44
  16. package/config/roles/orchestrator/soul.md +18 -0
  17. package/config/roles/product-manager/prompt.md +1 -5
  18. package/config/roles/qa/prompt.md +1 -5
  19. package/config/roles/qa-engineer/prompt.md +1 -5
  20. package/config/roles/researcher/prompt.md +1 -5
  21. package/config/roles/researcher/soul.md +18 -0
  22. package/config/roles/sales/prompt.md +1 -5
  23. package/config/roles/support/prompt.md +1 -5
  24. package/config/roles/team-leader/prompt.md +2 -6
  25. package/config/roles/tpm/prompt.md +1 -5
  26. package/config/roles/ux-designer/prompt.md +1 -5
  27. package/config/souls/developer.md +30 -0
  28. package/config/souls/orchestrator.md +30 -0
  29. package/config/souls/researcher.md +30 -0
  30. package/config/templates/agent-claude-md.md +1 -1
  31. package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
  32. package/dist/backend/backend/src/services/agent/agent-registration.service.js +18 -7
  33. package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
  34. package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.d.ts.map +1 -1
  35. package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.js +16 -4
  36. package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.js.map +1 -1
  37. package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.d.ts.map +1 -1
  38. package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.js +11 -0
  39. package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.js.map +1 -1
  40. package/dist/backend/backend/src/services/ai/prompt-builder.service.d.ts.map +1 -1
  41. package/dist/backend/backend/src/services/ai/prompt-builder.service.js +5 -0
  42. package/dist/backend/backend/src/services/ai/prompt-builder.service.js.map +1 -1
  43. package/dist/backend/backend/src/services/ai/prompt-modules/communication.module.d.ts +46 -0
  44. package/dist/backend/backend/src/services/ai/prompt-modules/communication.module.d.ts.map +1 -0
  45. package/dist/backend/backend/src/services/ai/prompt-modules/communication.module.js +151 -0
  46. package/dist/backend/backend/src/services/ai/prompt-modules/communication.module.js.map +1 -0
  47. package/dist/backend/backend/src/services/ai/prompt-modules/context-assembly.service.d.ts +145 -0
  48. package/dist/backend/backend/src/services/ai/prompt-modules/context-assembly.service.d.ts.map +1 -0
  49. package/dist/backend/backend/src/services/ai/prompt-modules/context-assembly.service.js +232 -0
  50. package/dist/backend/backend/src/services/ai/prompt-modules/context-assembly.service.js.map +1 -0
  51. package/dist/backend/backend/src/services/ai/prompt-modules/identity.module.d.ts +28 -0
  52. package/dist/backend/backend/src/services/ai/prompt-modules/identity.module.d.ts.map +1 -0
  53. package/dist/backend/backend/src/services/ai/prompt-modules/identity.module.js +47 -0
  54. package/dist/backend/backend/src/services/ai/prompt-modules/identity.module.js.map +1 -0
  55. package/dist/backend/backend/src/services/ai/prompt-modules/index.d.ts +22 -0
  56. package/dist/backend/backend/src/services/ai/prompt-modules/index.d.ts.map +1 -0
  57. package/dist/backend/backend/src/services/ai/prompt-modules/index.js +26 -0
  58. package/dist/backend/backend/src/services/ai/prompt-modules/index.js.map +1 -0
  59. package/dist/backend/backend/src/services/ai/prompt-modules/learning-reference.module.d.ts +28 -0
  60. package/dist/backend/backend/src/services/ai/prompt-modules/learning-reference.module.d.ts.map +1 -0
  61. package/dist/backend/backend/src/services/ai/prompt-modules/learning-reference.module.js +55 -0
  62. package/dist/backend/backend/src/services/ai/prompt-modules/learning-reference.module.js.map +1 -0
  63. package/dist/backend/backend/src/services/ai/prompt-modules/lifecycle.module.d.ts +44 -0
  64. package/dist/backend/backend/src/services/ai/prompt-modules/lifecycle.module.d.ts.map +1 -0
  65. package/dist/backend/backend/src/services/ai/prompt-modules/lifecycle.module.js +120 -0
  66. package/dist/backend/backend/src/services/ai/prompt-modules/lifecycle.module.js.map +1 -0
  67. package/dist/backend/backend/src/services/ai/prompt-modules/memory-reference.module.d.ts +28 -0
  68. package/dist/backend/backend/src/services/ai/prompt-modules/memory-reference.module.d.ts.map +1 -0
  69. package/dist/backend/backend/src/services/ai/prompt-modules/memory-reference.module.js +46 -0
  70. package/dist/backend/backend/src/services/ai/prompt-modules/memory-reference.module.js.map +1 -0
  71. package/dist/backend/backend/src/services/ai/prompt-modules/project-reference.module.d.ts +29 -0
  72. package/dist/backend/backend/src/services/ai/prompt-modules/project-reference.module.d.ts.map +1 -0
  73. package/dist/backend/backend/src/services/ai/prompt-modules/project-reference.module.js +50 -0
  74. package/dist/backend/backend/src/services/ai/prompt-modules/project-reference.module.js.map +1 -0
  75. package/dist/backend/backend/src/services/ai/prompt-modules/prompt-assembly.service.d.ts +103 -0
  76. package/dist/backend/backend/src/services/ai/prompt-modules/prompt-assembly.service.d.ts.map +1 -0
  77. package/dist/backend/backend/src/services/ai/prompt-modules/prompt-assembly.service.js +305 -0
  78. package/dist/backend/backend/src/services/ai/prompt-modules/prompt-assembly.service.js.map +1 -0
  79. package/dist/backend/backend/src/services/ai/prompt-modules/prompt-module.interface.d.ts +135 -0
  80. package/dist/backend/backend/src/services/ai/prompt-modules/prompt-module.interface.d.ts.map +1 -0
  81. package/dist/backend/backend/src/services/ai/prompt-modules/prompt-module.interface.js +46 -0
  82. package/dist/backend/backend/src/services/ai/prompt-modules/prompt-module.interface.js.map +1 -0
  83. package/dist/backend/backend/src/services/ai/prompt-modules/recovery.module.d.ts +34 -0
  84. package/dist/backend/backend/src/services/ai/prompt-modules/recovery.module.d.ts.map +1 -0
  85. package/dist/backend/backend/src/services/ai/prompt-modules/recovery.module.js +69 -0
  86. package/dist/backend/backend/src/services/ai/prompt-modules/recovery.module.js.map +1 -0
  87. package/dist/backend/backend/src/services/ai/prompt-modules/scheduled-messages.loader.d.ts +55 -0
  88. package/dist/backend/backend/src/services/ai/prompt-modules/scheduled-messages.loader.d.ts.map +1 -0
  89. package/dist/backend/backend/src/services/ai/prompt-modules/scheduled-messages.loader.js +96 -0
  90. package/dist/backend/backend/src/services/ai/prompt-modules/scheduled-messages.loader.js.map +1 -0
  91. package/dist/backend/backend/src/services/ai/prompt-modules/skills-reference.module.d.ts +28 -0
  92. package/dist/backend/backend/src/services/ai/prompt-modules/skills-reference.module.d.ts.map +1 -0
  93. package/dist/backend/backend/src/services/ai/prompt-modules/skills-reference.module.js +65 -0
  94. package/dist/backend/backend/src/services/ai/prompt-modules/skills-reference.module.js.map +1 -0
  95. package/dist/backend/backend/src/services/ai/prompt-modules/soul.module.d.ts +70 -0
  96. package/dist/backend/backend/src/services/ai/prompt-modules/soul.module.d.ts.map +1 -0
  97. package/dist/backend/backend/src/services/ai/prompt-modules/soul.module.js +166 -0
  98. package/dist/backend/backend/src/services/ai/prompt-modules/soul.module.js.map +1 -0
  99. package/dist/backend/backend/src/services/ai/prompt-modules/team-reference.module.d.ts +54 -0
  100. package/dist/backend/backend/src/services/ai/prompt-modules/team-reference.module.d.ts.map +1 -0
  101. package/dist/backend/backend/src/services/ai/prompt-modules/team-reference.module.js +149 -0
  102. package/dist/backend/backend/src/services/ai/prompt-modules/team-reference.module.js.map +1 -0
  103. package/dist/backend/backend/src/services/ai/prompt-modules/user-profile-reference.module.d.ts +28 -0
  104. package/dist/backend/backend/src/services/ai/prompt-modules/user-profile-reference.module.d.ts.map +1 -0
  105. package/dist/backend/backend/src/services/ai/prompt-modules/user-profile-reference.module.js +53 -0
  106. package/dist/backend/backend/src/services/ai/prompt-modules/user-profile-reference.module.js.map +1 -0
  107. package/dist/backend/backend/src/services/ai/self-improvement/attention.service.d.ts +74 -0
  108. package/dist/backend/backend/src/services/ai/self-improvement/attention.service.d.ts.map +1 -0
  109. package/dist/backend/backend/src/services/ai/self-improvement/attention.service.js +132 -0
  110. package/dist/backend/backend/src/services/ai/self-improvement/attention.service.js.map +1 -0
  111. package/dist/backend/backend/src/services/ai/self-improvement/growth-areas.service.d.ts +81 -0
  112. package/dist/backend/backend/src/services/ai/self-improvement/growth-areas.service.d.ts.map +1 -0
  113. package/dist/backend/backend/src/services/ai/self-improvement/growth-areas.service.js +135 -0
  114. package/dist/backend/backend/src/services/ai/self-improvement/growth-areas.service.js.map +1 -0
  115. package/dist/backend/backend/src/services/ai/self-improvement/index.d.ts +13 -0
  116. package/dist/backend/backend/src/services/ai/self-improvement/index.d.ts.map +1 -0
  117. package/dist/backend/backend/src/services/ai/self-improvement/index.js +13 -0
  118. package/dist/backend/backend/src/services/ai/self-improvement/index.js.map +1 -0
  119. package/dist/backend/backend/src/services/ai/self-improvement/memory-consolidation.service.d.ts +107 -0
  120. package/dist/backend/backend/src/services/ai/self-improvement/memory-consolidation.service.d.ts.map +1 -0
  121. package/dist/backend/backend/src/services/ai/self-improvement/memory-consolidation.service.js +183 -0
  122. package/dist/backend/backend/src/services/ai/self-improvement/memory-consolidation.service.js.map +1 -0
  123. package/dist/backend/backend/src/services/ai/self-improvement/prediction-calibration.service.d.ts +97 -0
  124. package/dist/backend/backend/src/services/ai/self-improvement/prediction-calibration.service.d.ts.map +1 -0
  125. package/dist/backend/backend/src/services/ai/self-improvement/prediction-calibration.service.js +128 -0
  126. package/dist/backend/backend/src/services/ai/self-improvement/prediction-calibration.service.js.map +1 -0
  127. package/dist/backend/backend/src/services/ai/self-improvement/self-model.service.d.ts +95 -0
  128. package/dist/backend/backend/src/services/ai/self-improvement/self-model.service.d.ts.map +1 -0
  129. package/dist/backend/backend/src/services/ai/self-improvement/self-model.service.js +116 -0
  130. package/dist/backend/backend/src/services/ai/self-improvement/self-model.service.js.map +1 -0
  131. package/dist/backend/backend/src/services/prompt/prompt-generator.service.d.ts.map +1 -1
  132. package/dist/backend/backend/src/services/prompt/prompt-generator.service.js +9 -11
  133. package/dist/backend/backend/src/services/prompt/prompt-generator.service.js.map +1 -1
  134. package/dist/backend/backend/src/services/skill/skill-catalog.service.d.ts.map +1 -1
  135. package/dist/backend/backend/src/services/skill/skill-catalog.service.js +3 -1
  136. package/dist/backend/backend/src/services/skill/skill-catalog.service.js.map +1 -1
  137. package/package.json +1 -1
@@ -0,0 +1,55 @@
1
+ import { ContextLoaderConfig } from './context-assembly.service.js';
2
+ /**
3
+ * Scheduled messages context loader — loads agent's scheduled checks/messages state.
4
+ *
5
+ * This is a context module (dynamic data), registered with ContextAssemblyService
6
+ * rather than PromptAssemblyService. It loads the current scheduled checks and
7
+ * messages for the agent so they have awareness of pending/recurring tasks.
8
+ *
9
+ * Token budget: 0-500
10
+ *
11
+ * Sources: SchedulerService recurring/one-time checks.
12
+ */
13
+ /**
14
+ * Scheduled check data shape for the loader (minimal subset of ScheduledCheck).
15
+ */
16
+ export interface ScheduledCheckInfo {
17
+ /** Unique check ID */
18
+ id: string;
19
+ /** Target session name */
20
+ targetSession: string;
21
+ /** Message content */
22
+ message: string;
23
+ /** Next scheduled execution time (ISO string) */
24
+ scheduledFor: string;
25
+ /** Interval in minutes for recurring checks */
26
+ intervalMinutes?: number;
27
+ /** Whether this check repeats */
28
+ isRecurring: boolean;
29
+ /** Human-readable label */
30
+ label?: string;
31
+ }
32
+ /**
33
+ * Provider function type that retrieves scheduled checks for an agent.
34
+ * This allows the loader to be decoupled from the SchedulerService directly.
35
+ */
36
+ export type ScheduledChecksProvider = (agentId: string) => ScheduledCheckInfo[];
37
+ /**
38
+ * Create a scheduled messages context loader function.
39
+ *
40
+ * The loader is created with a provider function that retrieves the current
41
+ * scheduled checks. This allows dependency injection and easy testing.
42
+ *
43
+ * @param getChecks - Provider function that returns scheduled checks for an agent
44
+ * @returns Context loader function compatible with ContextAssemblyService
45
+ *
46
+ * @example
47
+ * ```typescript
48
+ * const loader = createScheduledMessagesLoader((agentId) => {
49
+ * return schedulerService.getChecksForAgent(agentId);
50
+ * });
51
+ * contextAssembly.registerLoader('scheduled_messages', loader);
52
+ * ```
53
+ */
54
+ export declare function createScheduledMessagesLoader(getChecks: ScheduledChecksProvider): (config: ContextLoaderConfig) => Promise<string>;
55
+ //# sourceMappingURL=scheduled-messages.loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scheduled-messages.loader.d.ts","sourceRoot":"","sources":["../../../../../../../backend/src/services/ai/prompt-modules/scheduled-messages.loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAEpE;;;;;;;;;;GAUG;AAEH;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAClC,sBAAsB;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,0BAA0B;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,sBAAsB;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,iDAAiD;IACjD,YAAY,EAAE,MAAM,CAAC;IACrB,+CAA+C;IAC/C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iCAAiC;IACjC,WAAW,EAAE,OAAO,CAAC;IACrB,2BAA2B;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,MAAM,MAAM,uBAAuB,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,kBAAkB,EAAE,CAAC;AAEhF;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,6BAA6B,CAC5C,SAAS,EAAE,uBAAuB,GAChC,CAAC,MAAM,EAAE,mBAAmB,KAAK,OAAO,CAAC,MAAM,CAAC,CA6ClD"}
@@ -0,0 +1,96 @@
1
+ /**
2
+ * Create a scheduled messages context loader function.
3
+ *
4
+ * The loader is created with a provider function that retrieves the current
5
+ * scheduled checks. This allows dependency injection and easy testing.
6
+ *
7
+ * @param getChecks - Provider function that returns scheduled checks for an agent
8
+ * @returns Context loader function compatible with ContextAssemblyService
9
+ *
10
+ * @example
11
+ * ```typescript
12
+ * const loader = createScheduledMessagesLoader((agentId) => {
13
+ * return schedulerService.getChecksForAgent(agentId);
14
+ * });
15
+ * contextAssembly.registerLoader('scheduled_messages', loader);
16
+ * ```
17
+ */
18
+ export function createScheduledMessagesLoader(getChecks) {
19
+ return async (config) => {
20
+ const checks = getChecks(config.agentId);
21
+ if (!checks || checks.length === 0) {
22
+ return '';
23
+ }
24
+ const recurring = checks.filter((c) => c.isRecurring);
25
+ const oneTime = checks.filter((c) => !c.isRecurring);
26
+ const lines = ['## Scheduled Messages'];
27
+ if (recurring.length > 0) {
28
+ lines.push('');
29
+ lines.push('### Recurring Checks');
30
+ lines.push('| Label | Interval | Next Run | Message |');
31
+ lines.push('|-------|----------|----------|---------|');
32
+ for (const check of recurring) {
33
+ const label = check.label || check.id;
34
+ const interval = check.intervalMinutes ? `${check.intervalMinutes}m` : 'N/A';
35
+ const nextRun = formatTime(check.scheduledFor);
36
+ const message = truncateMessage(check.message);
37
+ lines.push(`| ${label} | ${interval} | ${nextRun} | ${message} |`);
38
+ }
39
+ }
40
+ if (oneTime.length > 0) {
41
+ lines.push('');
42
+ lines.push('### One-Time Checks');
43
+ lines.push('| Label | Scheduled For | Message |');
44
+ lines.push('|-------|---------------|---------|');
45
+ for (const check of oneTime) {
46
+ const label = check.label || check.id;
47
+ const scheduledFor = formatTime(check.scheduledFor);
48
+ const message = truncateMessage(check.message);
49
+ lines.push(`| ${label} | ${scheduledFor} | ${message} |`);
50
+ }
51
+ }
52
+ lines.push('');
53
+ lines.push(`_Total: ${checks.length} scheduled (${recurring.length} recurring, ${oneTime.length} one-time)_`);
54
+ return lines.join('\n');
55
+ };
56
+ }
57
+ /**
58
+ * Format an ISO timestamp to a short human-readable time.
59
+ *
60
+ * @param isoString - ISO 8601 timestamp
61
+ * @returns Formatted time string (e.g., "14:30" or "Mar 19 14:30")
62
+ */
63
+ function formatTime(isoString) {
64
+ try {
65
+ const date = new Date(isoString);
66
+ const now = new Date();
67
+ const isToday = date.getFullYear() === now.getFullYear() &&
68
+ date.getMonth() === now.getMonth() &&
69
+ date.getDate() === now.getDate();
70
+ if (isToday) {
71
+ return date.toLocaleTimeString('en-US', { hour: '2-digit', minute: '2-digit', hour12: false });
72
+ }
73
+ return date.toLocaleDateString('en-US', { month: 'short', day: 'numeric' }) +
74
+ ' ' +
75
+ date.toLocaleTimeString('en-US', { hour: '2-digit', minute: '2-digit', hour12: false });
76
+ }
77
+ catch {
78
+ return isoString;
79
+ }
80
+ }
81
+ /**
82
+ * Truncate a message for table display.
83
+ *
84
+ * @param message - Full message string
85
+ * @param maxLength - Maximum length before truncation
86
+ * @returns Truncated message
87
+ */
88
+ function truncateMessage(message, maxLength = 60) {
89
+ if (!message)
90
+ return '';
91
+ const singleLine = message.replace(/\n/g, ' ').trim();
92
+ if (singleLine.length <= maxLength)
93
+ return singleLine;
94
+ return singleLine.substring(0, maxLength - 3) + '...';
95
+ }
96
+ //# sourceMappingURL=scheduled-messages.loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scheduled-messages.loader.js","sourceRoot":"","sources":["../../../../../../../backend/src/services/ai/prompt-modules/scheduled-messages.loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import { PromptModule, ModuleConfig } from './prompt-module.interface.js';
2
+ /**
3
+ * Skills reference module — tells the agent how to discover and use skills.
4
+ *
5
+ * Consolidates skill authorization, communication skill references,
6
+ * and catalog location into a single module.
7
+ *
8
+ * Sources: Path A Step 1+6, Path B Section 8, Path C skill instructions.
9
+ */
10
+ export declare class SkillsReferenceModule implements PromptModule {
11
+ name: string;
12
+ priority: number;
13
+ maxTokens: number;
14
+ compactable: boolean;
15
+ /**
16
+ * Always included — agents need to know how to use skills.
17
+ */
18
+ shouldInclude(_config: ModuleConfig): boolean;
19
+ /**
20
+ * Build the skills reference section with catalog location,
21
+ * commonly-used skills, and memory tool instructions.
22
+ *
23
+ * @param config - Module configuration with skill paths
24
+ * @returns Formatted markdown skills reference section
25
+ */
26
+ build(config: ModuleConfig): Promise<string>;
27
+ }
28
+ //# sourceMappingURL=skills-reference.module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills-reference.module.d.ts","sourceRoot":"","sources":["../../../../../../../backend/src/services/ai/prompt-modules/skills-reference.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAE1E;;;;;;;GAOG;AACH,qBAAa,qBAAsB,YAAW,YAAY;IACzD,IAAI,SAAuB;IAC3B,QAAQ,SAAK;IACb,SAAS,SAAO;IAChB,WAAW,UAAQ;IAEnB;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO;IAI7C;;;;;;OAMG;IACG,KAAK,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;CAqClD"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Skills reference module — tells the agent how to discover and use skills.
3
+ *
4
+ * Consolidates skill authorization, communication skill references,
5
+ * and catalog location into a single module.
6
+ *
7
+ * Sources: Path A Step 1+6, Path B Section 8, Path C skill instructions.
8
+ */
9
+ export class SkillsReferenceModule {
10
+ name = 'skills_references';
11
+ priority = 5;
12
+ maxTokens = 500;
13
+ compactable = true;
14
+ /**
15
+ * Always included — agents need to know how to use skills.
16
+ */
17
+ shouldInclude(_config) {
18
+ return true;
19
+ }
20
+ /**
21
+ * Build the skills reference section with catalog location,
22
+ * commonly-used skills, and memory tool instructions.
23
+ *
24
+ * @param config - Module configuration with skill paths
25
+ * @returns Formatted markdown skills reference section
26
+ */
27
+ async build(config) {
28
+ return `## Available Skills
29
+
30
+ Bash skills at \`${config.agentSkillsPath}/\`:
31
+ - \`core/recall\` — retrieve relevant knowledge from memory
32
+ - \`core/remember\` — store knowledge for future reference
33
+ - \`core/record-learning\` — record learnings while working
34
+ - \`core/report-status\` — report status to orchestrator
35
+ - \`core/send-message\` — communicate with other agents
36
+ - \`core/get-sops\` — request relevant SOPs for current situation
37
+
38
+ Skills catalog: \`~/.crewly/skills/AGENT_SKILLS_CATALOG.md\`
39
+
40
+ ## Authorized Operations
41
+
42
+ The following operations are pre-approved for this session:
43
+ - Execute bash scripts in \`${config.agentSkillsPath}/\` and \`${config.tlSkillsPath}/\`
44
+ - Read and write files within the project directory
45
+ - Use browser automation skills when available (e.g., remote-browser)
46
+
47
+ ## Communication
48
+
49
+ Use bash skills at \`${config.agentSkillsPath}/\` for all team communication. Read \`~/.crewly/skills/AGENT_SKILLS_CATALOG.md\` for a full reference.
50
+ - \`send-message\` to communicate with other agents
51
+ - \`report-progress\` to update on task status
52
+ - \`remember\` to store important learnings (always pass your \`agentId\` and \`projectPath\`)
53
+ - \`recall\` to retrieve relevant knowledge (always pass your \`agentId\` and \`projectPath\`)
54
+ - \`record-learning\` to record learnings (always pass your \`agentId\` and \`projectPath\`)
55
+ - \`get-sops\` to request relevant SOPs for your current situation
56
+
57
+ **IMPORTANT for memory tools:** When calling \`remember\`, \`recall\`, or \`record-learning\`, you MUST pass:
58
+ - \`agentId\`: Your **Session Name** from the Identity section above
59
+ - \`projectPath\`: Your **Project Path** from the Identity section above
60
+ This ensures your knowledge is stored under your identity and in the correct project.
61
+
62
+ **IMPORTANT for recall:** Before answering questions about the project, deployment, architecture, or past decisions, ALWAYS call \`recall\` first to check your stored knowledge.`;
63
+ }
64
+ }
65
+ //# sourceMappingURL=skills-reference.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills-reference.module.js","sourceRoot":"","sources":["../../../../../../../backend/src/services/ai/prompt-modules/skills-reference.module.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,MAAM,OAAO,qBAAqB;IACjC,IAAI,GAAG,mBAAmB,CAAC;IAC3B,QAAQ,GAAG,CAAC,CAAC;IACb,SAAS,GAAG,GAAG,CAAC;IAChB,WAAW,GAAG,IAAI,CAAC;IAEnB;;OAEG;IACH,aAAa,CAAC,OAAqB;QAClC,OAAO,IAAI,CAAC;IACb,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,KAAK,CAAC,MAAoB;QAC/B,OAAO;;mBAEU,MAAM,CAAC,eAAe;;;;;;;;;;;;;8BAaX,MAAM,CAAC,eAAe,aAAa,MAAM,CAAC,YAAY;;;;;;uBAM7D,MAAM,CAAC,eAAe;;;;;;;;;;;;;kLAaqI,CAAC;IAClL,CAAC;CACD"}
@@ -0,0 +1,70 @@
1
+ import { PromptModule, ModuleConfig } from './prompt-module.interface.js';
2
+ /**
3
+ * Soul module — provides the agent's personality, tone, and working style.
4
+ *
5
+ * Loads the agent's "soul" from the resolution chain:
6
+ * 1. Per-member soul (~/.crewly/teams/{teamId}/members/{memberId}/soul.md)
7
+ * 2. Role default soul (config/roles/{role}/soul.md)
8
+ * 3. Reusable archetype (config/souls/{archetype}.md)
9
+ * 4. Hardcoded minimal fallback
10
+ *
11
+ * Sources: Path A Step 5, Path B Section 9, Soul System Design (Section 6).
12
+ */
13
+ export declare class SoulModule implements PromptModule {
14
+ name: string;
15
+ priority: number;
16
+ maxTokens: number;
17
+ compactable: boolean;
18
+ /**
19
+ * Always included — every agent benefits from personality definition.
20
+ */
21
+ shouldInclude(_config: ModuleConfig): boolean;
22
+ /**
23
+ * Build the soul section by resolving the soul file from the resolution chain.
24
+ * If self-improvement data exists, appends a Self-Awareness section.
25
+ *
26
+ * @param config - Module configuration with role and project details
27
+ * @returns Formatted markdown soul section
28
+ */
29
+ build(config: ModuleConfig): Promise<string>;
30
+ /**
31
+ * Resolve the soul content by checking each level of the resolution chain.
32
+ *
33
+ * @param config - Module configuration
34
+ * @returns Soul content string
35
+ */
36
+ private resolveSoul;
37
+ /**
38
+ * Get the path to a member's personal soul file.
39
+ *
40
+ * @param teamId - Team ID
41
+ * @param memberId - Member ID
42
+ * @returns Absolute path to the member soul file
43
+ */
44
+ private getMemberSoulPath;
45
+ /**
46
+ * Read a file if it exists, returning its content or null.
47
+ *
48
+ * @param filePath - Path to the file
49
+ * @returns File content string or null if not found
50
+ */
51
+ private readFileIfExists;
52
+ /**
53
+ * Format the soul content with a source annotation.
54
+ *
55
+ * @param content - Raw soul file content
56
+ * @param source - Where the soul was resolved from
57
+ * @returns Formatted soul section
58
+ */
59
+ private formatSoul;
60
+ /**
61
+ * Build the Self-Awareness section from self-improvement data.
62
+ * Reads growth areas, self-model (blind spots), and prediction calibration.
63
+ * Kept under ~200 tokens.
64
+ *
65
+ * @param sessionName - Agent session name
66
+ * @returns Self-awareness markdown section, or null if no data exists
67
+ */
68
+ private buildSelfAwareness;
69
+ }
70
+ //# sourceMappingURL=soul.module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"soul.module.d.ts","sourceRoot":"","sources":["../../../../../../../backend/src/services/ai/prompt-modules/soul.module.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAS1E;;;;;;;;;;GAUG;AACH,qBAAa,UAAW,YAAW,YAAY;IAC9C,IAAI,SAAU;IACd,QAAQ,SAAK;IACb,SAAS,SAAO;IAChB,WAAW,UAAS;IAEpB;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO;IAI7C;;;;;;OAMG;IACG,KAAK,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IAMlD;;;;;OAKG;YACW,WAAW;IAgCzB;;;;;;OAMG;IACH,OAAO,CAAC,iBAAiB;IAKzB;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB;IAQxB;;;;;;OAMG;IACH,OAAO,CAAC,UAAU;IAKlB;;;;;;;OAOG;IACH,OAAO,CAAC,kBAAkB;CA+C1B"}
@@ -0,0 +1,166 @@
1
+ import * as fs from 'fs';
2
+ import * as path from 'path';
3
+ /**
4
+ * Default minimal soul fallback when no soul file is found.
5
+ */
6
+ const DEFAULT_SOUL = `## Your Soul
7
+
8
+ You are a professional, reliable team member. Communicate clearly, ask when uncertain, and report blockers promptly.`;
9
+ /**
10
+ * Soul module — provides the agent's personality, tone, and working style.
11
+ *
12
+ * Loads the agent's "soul" from the resolution chain:
13
+ * 1. Per-member soul (~/.crewly/teams/{teamId}/members/{memberId}/soul.md)
14
+ * 2. Role default soul (config/roles/{role}/soul.md)
15
+ * 3. Reusable archetype (config/souls/{archetype}.md)
16
+ * 4. Hardcoded minimal fallback
17
+ *
18
+ * Sources: Path A Step 5, Path B Section 9, Soul System Design (Section 6).
19
+ */
20
+ export class SoulModule {
21
+ name = 'soul';
22
+ priority = 2;
23
+ maxTokens = 830;
24
+ compactable = false;
25
+ /**
26
+ * Always included — every agent benefits from personality definition.
27
+ */
28
+ shouldInclude(_config) {
29
+ return true;
30
+ }
31
+ /**
32
+ * Build the soul section by resolving the soul file from the resolution chain.
33
+ * If self-improvement data exists, appends a Self-Awareness section.
34
+ *
35
+ * @param config - Module configuration with role and project details
36
+ * @returns Formatted markdown soul section
37
+ */
38
+ async build(config) {
39
+ const soul = await this.resolveSoul(config);
40
+ const selfAwareness = this.buildSelfAwareness(config.sessionName);
41
+ return selfAwareness ? `${soul}\n\n${selfAwareness}` : soul;
42
+ }
43
+ /**
44
+ * Resolve the soul content by checking each level of the resolution chain.
45
+ *
46
+ * @param config - Module configuration
47
+ * @returns Soul content string
48
+ */
49
+ async resolveSoul(config) {
50
+ // 1. Per-member soul
51
+ if (config.teamId && config.memberId) {
52
+ const memberSoulPath = this.getMemberSoulPath(config.teamId, config.memberId);
53
+ const content = this.readFileIfExists(memberSoulPath);
54
+ if (content) {
55
+ return this.formatSoul(content, 'member');
56
+ }
57
+ }
58
+ // 2. Role default soul (config/roles/{role}/soul.md)
59
+ if (config.role) {
60
+ const roleSoulPath = path.join(config.projectRoot, 'config', 'roles', config.role, 'soul.md');
61
+ const content = this.readFileIfExists(roleSoulPath);
62
+ if (content) {
63
+ return this.formatSoul(content, 'role');
64
+ }
65
+ }
66
+ // 3. Reusable archetype (config/souls/{role}.md as fallback archetype)
67
+ if (config.role) {
68
+ const archetypePath = path.join(config.projectRoot, 'config', 'souls', `${config.role}.md`);
69
+ const content = this.readFileIfExists(archetypePath);
70
+ if (content) {
71
+ return this.formatSoul(content, 'archetype');
72
+ }
73
+ }
74
+ // 4. Hardcoded minimal fallback
75
+ return DEFAULT_SOUL;
76
+ }
77
+ /**
78
+ * Get the path to a member's personal soul file.
79
+ *
80
+ * @param teamId - Team ID
81
+ * @param memberId - Member ID
82
+ * @returns Absolute path to the member soul file
83
+ */
84
+ getMemberSoulPath(teamId, memberId) {
85
+ const homeDir = process.env.HOME || process.env.USERPROFILE || '/tmp';
86
+ return path.join(homeDir, '.crewly', 'teams', teamId, 'members', memberId, 'soul.md');
87
+ }
88
+ /**
89
+ * Read a file if it exists, returning its content or null.
90
+ *
91
+ * @param filePath - Path to the file
92
+ * @returns File content string or null if not found
93
+ */
94
+ readFileIfExists(filePath) {
95
+ try {
96
+ return fs.readFileSync(filePath, 'utf-8').trim();
97
+ }
98
+ catch {
99
+ return null;
100
+ }
101
+ }
102
+ /**
103
+ * Format the soul content with a source annotation.
104
+ *
105
+ * @param content - Raw soul file content
106
+ * @param source - Where the soul was resolved from
107
+ * @returns Formatted soul section
108
+ */
109
+ formatSoul(content, source) {
110
+ const sourceLabel = source === 'member' ? 'personal' : source === 'role' ? 'role default' : 'archetype';
111
+ return `## Your Soul\n_Source: ${sourceLabel}_\n\n${content}`;
112
+ }
113
+ /**
114
+ * Build the Self-Awareness section from self-improvement data.
115
+ * Reads growth areas, self-model (blind spots), and prediction calibration.
116
+ * Kept under ~200 tokens.
117
+ *
118
+ * @param sessionName - Agent session name
119
+ * @returns Self-awareness markdown section, or null if no data exists
120
+ */
121
+ buildSelfAwareness(sessionName) {
122
+ const homeDir = process.env.HOME || process.env.USERPROFILE || '/tmp';
123
+ const agentDir = path.join(homeDir, '.crewly', 'agents', sessionName);
124
+ const lines = [];
125
+ // Growth areas — top 3
126
+ try {
127
+ const raw = fs.readFileSync(path.join(agentDir, 'growth-areas.json'), 'utf-8');
128
+ const data = JSON.parse(raw);
129
+ if (data.areas && data.areas.length > 0) {
130
+ const top3 = data.areas.slice(0, 3);
131
+ lines.push('**Growth Areas:**');
132
+ for (const area of top3) {
133
+ lines.push(`- ${area.area} (${area.progress})`);
134
+ }
135
+ }
136
+ }
137
+ catch { /* no growth areas data */ }
138
+ // Blind spots — top 2
139
+ try {
140
+ const raw = fs.readFileSync(path.join(agentDir, 'self-model.json'), 'utf-8');
141
+ const data = JSON.parse(raw);
142
+ if (data.blindSpots && data.blindSpots.length > 0) {
143
+ const top2 = data.blindSpots.slice(0, 2);
144
+ lines.push('**Blind Spots:**');
145
+ for (const spot of top2) {
146
+ lines.push(`- ${spot.description}`);
147
+ }
148
+ }
149
+ }
150
+ catch { /* no self-model data */ }
151
+ // Prediction calibration score
152
+ try {
153
+ const raw = fs.readFileSync(path.join(agentDir, 'predictions.json'), 'utf-8');
154
+ const data = JSON.parse(raw);
155
+ if (data.calibrationScore > 0) {
156
+ lines.push(`**Prediction Calibration:** ${Math.round(data.calibrationScore * 100)}%`);
157
+ }
158
+ }
159
+ catch { /* no predictions data */ }
160
+ if (lines.length === 0) {
161
+ return null;
162
+ }
163
+ return `## Self-Awareness\n${lines.join('\n')}`;
164
+ }
165
+ }
166
+ //# sourceMappingURL=soul.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"soul.module.js","sourceRoot":"","sources":["../../../../../../../backend/src/services/ai/prompt-modules/soul.module.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ import { PromptModule, ModuleConfig } from './prompt-module.interface.js';
2
+ /**
3
+ * Team reference module — provides team hierarchy, TL duties, and norms references.
4
+ *
5
+ * Wraps the existing `buildTeamLeadSection` and `buildTeamNormsSection` logic
6
+ * from PromptBuilderService. The TL addon is conditionally loaded only when
7
+ * the agent has `canDelegate=true` and subordinates.
8
+ *
9
+ * Sources: Path A Step 7, Path B Sections 4+5.
10
+ */
11
+ export declare class TeamReferenceModule implements PromptModule {
12
+ name: string;
13
+ priority: number;
14
+ maxTokens: number;
15
+ compactable: boolean;
16
+ /**
17
+ * Include when agent has a team (teamId set) or has subordinates.
18
+ */
19
+ shouldInclude(config: ModuleConfig): boolean;
20
+ /**
21
+ * Build team reference section. Includes TL addon if agent can delegate,
22
+ * and team norms if available.
23
+ *
24
+ * @param config - Module configuration with team and subordinate details
25
+ * @returns Formatted markdown team reference section
26
+ */
27
+ build(config: ModuleConfig): Promise<string>;
28
+ /**
29
+ * Build Team Lead section by loading tl-addon.md and resolving variables.
30
+ * Falls back to inline section if addon file not found.
31
+ *
32
+ * @param config - Module configuration with subordinate details
33
+ * @returns Formatted TL section or empty string
34
+ */
35
+ private buildTeamLeadSection;
36
+ /**
37
+ * Build minimal inline TL section as fallback when tl-addon.md is not found.
38
+ *
39
+ * @param workerList - Pre-formatted worker list
40
+ * @param subordinateCount - Number of subordinates
41
+ * @returns Formatted inline TL section
42
+ */
43
+ private buildInlineTeamLeadSection;
44
+ /**
45
+ * Build team norms section by loading norms files from team directory.
46
+ * Only includes norms whose role list matches the agent's role or '*'.
47
+ *
48
+ * @param teamId - Team ID to load norms for
49
+ * @param role - Agent's role for filtering
50
+ * @returns Formatted norms markdown or empty string
51
+ */
52
+ private buildTeamNormsSection;
53
+ }
54
+ //# sourceMappingURL=team-reference.module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"team-reference.module.d.ts","sourceRoot":"","sources":["../../../../../../../backend/src/services/ai/prompt-modules/team-reference.module.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAE1E;;;;;;;;GAQG;AACH,qBAAa,mBAAoB,YAAW,YAAY;IACvD,IAAI,SAAqB;IACzB,QAAQ,SAAK;IACb,SAAS,SAAQ;IACjB,WAAW,UAAS;IAEpB;;OAEG;IACH,aAAa,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO;IAI5C;;;;;;OAMG;IACG,KAAK,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IAsBlD;;;;;;OAMG;YACW,oBAAoB;IAoClC;;;;;;OAMG;IACH,OAAO,CAAC,0BAA0B;IAgBlC;;;;;;;OAOG;YACW,qBAAqB;CAmCnC"}