crewly 1.2.7 → 1.2.9

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 (97) hide show
  1. package/config/skills/agent/core/reply-chat/execute.sh +59 -0
  2. package/config/skills/agent/core/reply-chat/instructions.md +27 -0
  3. package/config/skills/agent/core/reply-chat/skill.json +20 -0
  4. package/config/skills/orchestrator/reply-chat/execute.sh +136 -0
  5. package/config/skills/orchestrator/reply-chat/instructions.md +53 -0
  6. package/config/skills/orchestrator/reply-chat/skill.json +20 -0
  7. package/dist/backend/backend/src/constants.d.ts +9 -0
  8. package/dist/backend/backend/src/constants.d.ts.map +1 -1
  9. package/dist/backend/backend/src/constants.js +9 -0
  10. package/dist/backend/backend/src/constants.js.map +1 -1
  11. package/dist/backend/backend/src/controllers/messaging/messenger.routes.d.ts.map +1 -1
  12. package/dist/backend/backend/src/controllers/messaging/messenger.routes.js +6 -3
  13. package/dist/backend/backend/src/controllers/messaging/messenger.routes.js.map +1 -1
  14. package/dist/backend/backend/src/controllers/settings/settings.controller.d.ts.map +1 -1
  15. package/dist/backend/backend/src/controllers/settings/settings.controller.js +97 -2
  16. package/dist/backend/backend/src/controllers/settings/settings.controller.js.map +1 -1
  17. package/dist/backend/backend/src/controllers/team/team.controller.d.ts.map +1 -1
  18. package/dist/backend/backend/src/controllers/team/team.controller.js +149 -1
  19. package/dist/backend/backend/src/controllers/team/team.controller.js.map +1 -1
  20. package/dist/backend/backend/src/index.d.ts +5 -0
  21. package/dist/backend/backend/src/index.d.ts.map +1 -1
  22. package/dist/backend/backend/src/index.js +30 -0
  23. package/dist/backend/backend/src/index.js.map +1 -1
  24. package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
  25. package/dist/backend/backend/src/services/agent/agent-registration.service.js +126 -86
  26. package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
  27. package/dist/backend/backend/src/services/agent/auditor-scheduler.service.d.ts.map +1 -1
  28. package/dist/backend/backend/src/services/agent/auditor-scheduler.service.js +14 -3
  29. package/dist/backend/backend/src/services/agent/auditor-scheduler.service.js.map +1 -1
  30. package/dist/backend/backend/src/services/agent/crewly-agent/model-manager.d.ts +16 -2
  31. package/dist/backend/backend/src/services/agent/crewly-agent/model-manager.d.ts.map +1 -1
  32. package/dist/backend/backend/src/services/agent/crewly-agent/model-manager.js +52 -5
  33. package/dist/backend/backend/src/services/agent/crewly-agent/model-manager.js.map +1 -1
  34. package/dist/backend/backend/src/services/agent/gemini-runtime.service.d.ts.map +1 -1
  35. package/dist/backend/backend/src/services/agent/gemini-runtime.service.js +22 -9
  36. package/dist/backend/backend/src/services/agent/gemini-runtime.service.js.map +1 -1
  37. package/dist/backend/backend/src/services/event-bus/event-bus.service.d.ts.map +1 -1
  38. package/dist/backend/backend/src/services/event-bus/event-bus.service.js +4 -3
  39. package/dist/backend/backend/src/services/event-bus/event-bus.service.js.map +1 -1
  40. package/dist/backend/backend/src/services/messaging/adapters/google-chat-messenger.adapter.d.ts +58 -2
  41. package/dist/backend/backend/src/services/messaging/adapters/google-chat-messenger.adapter.d.ts.map +1 -1
  42. package/dist/backend/backend/src/services/messaging/adapters/google-chat-messenger.adapter.js +158 -7
  43. package/dist/backend/backend/src/services/messaging/adapters/google-chat-messenger.adapter.js.map +1 -1
  44. package/dist/backend/backend/src/services/messaging/google-chat-initializer.d.ts +43 -0
  45. package/dist/backend/backend/src/services/messaging/google-chat-initializer.d.ts.map +1 -0
  46. package/dist/backend/backend/src/services/messaging/google-chat-initializer.js +138 -0
  47. package/dist/backend/backend/src/services/messaging/google-chat-initializer.js.map +1 -0
  48. package/dist/backend/backend/src/services/messaging/response-router.service.d.ts +12 -0
  49. package/dist/backend/backend/src/services/messaging/response-router.service.d.ts.map +1 -1
  50. package/dist/backend/backend/src/services/messaging/response-router.service.js +27 -42
  51. package/dist/backend/backend/src/services/messaging/response-router.service.js.map +1 -1
  52. package/dist/backend/backend/src/services/orchestrator/orchestrator-restart.service.d.ts.map +1 -1
  53. package/dist/backend/backend/src/services/orchestrator/orchestrator-restart.service.js +12 -3
  54. package/dist/backend/backend/src/services/orchestrator/orchestrator-restart.service.js.map +1 -1
  55. package/dist/backend/backend/src/services/settings/settings.service.d.ts +9 -1
  56. package/dist/backend/backend/src/services/settings/settings.service.d.ts.map +1 -1
  57. package/dist/backend/backend/src/services/settings/settings.service.js +12 -1
  58. package/dist/backend/backend/src/services/settings/settings.service.js.map +1 -1
  59. package/dist/backend/backend/src/services/slack/notify-reconciliation.service.d.ts.map +1 -1
  60. package/dist/backend/backend/src/services/slack/notify-reconciliation.service.js +13 -0
  61. package/dist/backend/backend/src/services/slack/notify-reconciliation.service.js.map +1 -1
  62. package/dist/backend/backend/src/types/chat.types.d.ts +1 -1
  63. package/dist/backend/backend/src/types/chat.types.d.ts.map +1 -1
  64. package/dist/backend/backend/src/types/chat.types.js +1 -1
  65. package/dist/backend/backend/src/types/chat.types.js.map +1 -1
  66. package/dist/backend/backend/src/types/settings.types.d.ts +93 -0
  67. package/dist/backend/backend/src/types/settings.types.d.ts.map +1 -1
  68. package/dist/backend/backend/src/types/settings.types.js +131 -0
  69. package/dist/backend/backend/src/types/settings.types.js.map +1 -1
  70. package/dist/backend/backend/src/types/skill.types.js +2 -2
  71. package/dist/backend/backend/src/types/skill.types.js.map +1 -1
  72. package/dist/backend/backend/src/utils/format-error.d.ts +8 -0
  73. package/dist/backend/backend/src/utils/format-error.d.ts.map +1 -0
  74. package/dist/backend/backend/src/utils/format-error.js +10 -0
  75. package/dist/backend/backend/src/utils/format-error.js.map +1 -0
  76. package/dist/backend/backend/src/websocket/terminal.gateway.d.ts.map +1 -1
  77. package/dist/backend/backend/src/websocket/terminal.gateway.js +15 -10
  78. package/dist/backend/backend/src/websocket/terminal.gateway.js.map +1 -1
  79. package/dist/cli/backend/src/constants.d.ts +9 -0
  80. package/dist/cli/backend/src/constants.d.ts.map +1 -1
  81. package/dist/cli/backend/src/constants.js +9 -0
  82. package/dist/cli/backend/src/constants.js.map +1 -1
  83. package/dist/cli/backend/src/types/chat.types.d.ts +1 -1
  84. package/dist/cli/backend/src/types/chat.types.d.ts.map +1 -1
  85. package/dist/cli/backend/src/types/chat.types.js +1 -1
  86. package/dist/cli/backend/src/types/chat.types.js.map +1 -1
  87. package/dist/cli/backend/src/types/settings.types.d.ts +93 -0
  88. package/dist/cli/backend/src/types/settings.types.d.ts.map +1 -1
  89. package/dist/cli/backend/src/types/settings.types.js +131 -0
  90. package/dist/cli/backend/src/types/settings.types.js.map +1 -1
  91. package/dist/cli/backend/src/types/skill.types.js +2 -2
  92. package/dist/cli/backend/src/types/skill.types.js.map +1 -1
  93. package/frontend/dist/assets/index-58509b6a.js +4919 -0
  94. package/frontend/dist/assets/{index-dee3a3a9.css → index-ddb38eb0.css} +1 -1
  95. package/frontend/dist/index.html +2 -2
  96. package/package.json +1 -1
  97. package/frontend/dist/assets/index-5cf8820f.js +0 -4919
@@ -7,11 +7,12 @@
7
7
  */
8
8
  import { Router } from 'express';
9
9
  import { getSettingsService, SettingsValidationError, } from '../../services/settings/settings.service.js';
10
+ import { maskApiKeysSettings, isValidApiKeyProvider, } from '../../types/settings.types.js';
10
11
  const router = Router();
11
12
  /**
12
13
  * Valid section names for reset endpoints
13
14
  */
14
- const VALID_SECTIONS = ['general', 'chat', 'skills'];
15
+ const VALID_SECTIONS = ['general', 'chat', 'skills', 'apiKeys'];
15
16
  /**
16
17
  * GET /api/settings
17
18
  * Get current application settings
@@ -20,9 +21,14 @@ router.get('/', async (req, res, next) => {
20
21
  try {
21
22
  const settingsService = getSettingsService();
22
23
  const settings = await settingsService.getSettings();
24
+ // Mask API keys before returning to prevent leaking secrets
25
+ const safeSettings = { ...settings };
26
+ if (safeSettings.apiKeys) {
27
+ safeSettings.apiKeys = maskApiKeysSettings(safeSettings.apiKeys);
28
+ }
23
29
  res.json({
24
30
  success: true,
25
- data: settings,
31
+ data: safeSettings,
26
32
  });
27
33
  }
28
34
  catch (error) {
@@ -172,5 +178,94 @@ router.post('/import', async (req, res, next) => {
172
178
  next(error);
173
179
  }
174
180
  });
181
+ /**
182
+ * POST /api/settings/test-api-key
183
+ * Test if an API key is valid by making a minimal API call
184
+ */
185
+ router.post('/test-api-key', async (req, res, next) => {
186
+ try {
187
+ const { provider, key } = req.body;
188
+ if (!provider || !isValidApiKeyProvider(provider)) {
189
+ return res.status(400).json({
190
+ success: false,
191
+ error: `Invalid provider. Must be one of: gemini, anthropic, openai`,
192
+ });
193
+ }
194
+ if (!key || typeof key !== 'string' || key.trim().length === 0) {
195
+ return res.status(400).json({
196
+ success: false,
197
+ error: 'API key is required',
198
+ });
199
+ }
200
+ const result = await testApiKey(provider, key.trim());
201
+ res.json({
202
+ success: true,
203
+ data: result,
204
+ });
205
+ }
206
+ catch (error) {
207
+ next(error);
208
+ }
209
+ });
210
+ /**
211
+ * Test an API key by making a minimal request to the provider
212
+ *
213
+ * @param provider - The API key provider
214
+ * @param key - The API key to test
215
+ * @returns Test result with valid flag and optional error
216
+ */
217
+ async function testApiKey(provider, key) {
218
+ try {
219
+ switch (provider) {
220
+ case 'gemini': {
221
+ const response = await fetch(`https://generativelanguage.googleapis.com/v1beta/models?key=${encodeURIComponent(key)}`, { method: 'GET', signal: AbortSignal.timeout(10000) });
222
+ if (response.ok)
223
+ return { valid: true };
224
+ const body = await response.json().catch(() => ({}));
225
+ return { valid: false, error: body?.error?.toString() || `HTTP ${response.status}` };
226
+ }
227
+ case 'anthropic': {
228
+ const response = await fetch('https://api.anthropic.com/v1/messages', {
229
+ method: 'POST',
230
+ headers: {
231
+ 'x-api-key': key,
232
+ 'anthropic-version': '2023-06-01',
233
+ 'content-type': 'application/json',
234
+ },
235
+ body: JSON.stringify({
236
+ model: 'claude-haiku-4-5-20251001',
237
+ max_tokens: 1,
238
+ messages: [{ role: 'user', content: 'hi' }],
239
+ }),
240
+ signal: AbortSignal.timeout(10000),
241
+ });
242
+ // 200 or 429 (rate limited) both mean the key is valid
243
+ if (response.ok || response.status === 429)
244
+ return { valid: true };
245
+ if (response.status === 401)
246
+ return { valid: false, error: 'Invalid API key' };
247
+ return { valid: false, error: `HTTP ${response.status}` };
248
+ }
249
+ case 'openai': {
250
+ const response = await fetch('https://api.openai.com/v1/models', {
251
+ method: 'GET',
252
+ headers: { 'Authorization': `Bearer ${key}` },
253
+ signal: AbortSignal.timeout(10000),
254
+ });
255
+ if (response.ok)
256
+ return { valid: true };
257
+ if (response.status === 401)
258
+ return { valid: false, error: 'Invalid API key' };
259
+ return { valid: false, error: `HTTP ${response.status}` };
260
+ }
261
+ default:
262
+ return { valid: false, error: `Unknown provider: ${provider}` };
263
+ }
264
+ }
265
+ catch (err) {
266
+ const message = err instanceof Error ? err.message : 'Unknown error';
267
+ return { valid: false, error: message };
268
+ }
269
+ }
175
270
  export default router;
176
271
  //# sourceMappingURL=settings.controller.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"settings.controller.js","sourceRoot":"","sources":["../../../../../../backend/src/controllers/settings/settings.controller.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"settings.controller.js","sourceRoot":"","sources":["../../../../../../backend/src/controllers/settings/settings.controller.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"team.controller.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/controllers/team/team.controller.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"team.controller.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/controllers/team/team.controller.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { v4 as uuidv4 } from 'uuid';
2
- import { ORCHESTRATOR_SESSION_NAME, ORCHESTRATOR_ROLE, RUNTIME_TYPES, NON_RECOVERABLE_ERROR_PATTERNS } from '../../constants.js';
2
+ import { ORCHESTRATOR_SESSION_NAME, ORCHESTRATOR_ROLE, RUNTIME_TYPES, NON_RECOVERABLE_ERROR_PATTERNS, } from '../../constants.js';
3
3
  import { CREWLY_CONSTANTS } from '../../constants.js';
4
4
  import { updateAgentHeartbeat } from '../../services/agent/agent-heartbeat.service.js';
5
5
  import { getSessionBackendSync, getSessionStatePersistence } from '../../services/session/index.js';
@@ -69,6 +69,30 @@ function buildOrchestratorTeam(actualAgentStatus, orchestratorStatus, overrides)
69
69
  runtimeType: (orchestratorStatus?.runtimeType || 'claude-code'),
70
70
  createdAt: orchestratorStatus?.createdAt || now,
71
71
  updatedAt: orchestratorStatus?.updatedAt || now
72
+ },
73
+ {
74
+ id: 'a1b2c3d4-5678-9abc-def0-assistant001',
75
+ name: 'Assistant',
76
+ sessionName: 'crewly-team-assistant-a1b2c3d4',
77
+ role: 'orchestrator',
78
+ systemPrompt: 'Shadow orchestrator running in-process via Crewly Agent runtime (AI SDK)',
79
+ agentStatus: CREWLY_CONSTANTS.AGENT_STATUSES.INACTIVE,
80
+ workingStatus: CREWLY_CONSTANTS.WORKING_STATUSES.IDLE,
81
+ runtimeType: 'crewly-agent',
82
+ createdAt: '2026-03-11T02:00:00.000Z',
83
+ updatedAt: now
84
+ },
85
+ {
86
+ id: 'e5f6a7b8-9012-3cde-f456-auditor00001',
87
+ name: 'Auditor',
88
+ sessionName: 'crewly-auditor',
89
+ role: 'auditor',
90
+ systemPrompt: 'Autonomous quality observer — monitors all agents, detects problems, writes audit reports',
91
+ agentStatus: CREWLY_CONSTANTS.AGENT_STATUSES.INACTIVE,
92
+ workingStatus: CREWLY_CONSTANTS.WORKING_STATUSES.IDLE,
93
+ runtimeType: 'claude-code',
94
+ createdAt: '2026-03-11T02:10:00.000Z',
95
+ updatedAt: now
72
96
  }
73
97
  ],
74
98
  projectIds: [],
@@ -240,6 +264,7 @@ async function _startTeamMemberCore(context, team, member, projectPath) {
240
264
  projectPath: projectPath,
241
265
  memberId: currentMember.id,
242
266
  teamId: team.id,
267
+ runtimeType: currentMember.runtimeType || undefined,
243
268
  });
244
269
  if (createResult.success) {
245
270
  break;
@@ -1056,9 +1081,127 @@ export async function deleteTeamMember(req, res) {
1056
1081
  res.status(500).json({ success: false, error: 'Failed to delete team member' });
1057
1082
  }
1058
1083
  }
1084
+ /**
1085
+ * Start a virtual orchestrator team member (Assistant or Auditor).
1086
+ * These members are not persisted in teams.json — their team is built dynamically
1087
+ * by buildOrchestratorTeam(). The main orchestrator member is managed via /orchestrator/setup.
1088
+ *
1089
+ * @param context - API context with services
1090
+ * @param memberId - The member ID from the virtual orchestrator team
1091
+ * @param res - Express response object
1092
+ */
1093
+ async function _startOrchestratorMember(context, memberId, res) {
1094
+ const orchestratorTeam = buildOrchestratorTeam(CREWLY_CONSTANTS.AGENT_STATUSES.ACTIVE, null);
1095
+ const member = orchestratorTeam.members.find(m => m.id === memberId);
1096
+ if (!member) {
1097
+ res.status(404).json({ success: false, error: 'Orchestrator team member not found' });
1098
+ return;
1099
+ }
1100
+ // Main orchestrator member is managed at system level
1101
+ if (memberId === 'orchestrator-member') {
1102
+ res.status(400).json({
1103
+ success: false,
1104
+ error: 'Orchestrator is managed at system level. Use /api/orchestrator/setup endpoint instead.'
1105
+ });
1106
+ return;
1107
+ }
1108
+ // Use project root (cwd) as the project path for orchestrator virtual members
1109
+ const projectPath = process.cwd();
1110
+ // Create the agent session via agentRegistrationService (handles both crewly-agent and claude-code runtimes)
1111
+ try {
1112
+ const createResult = await context.agentRegistrationService.createAgentSession({
1113
+ sessionName: member.sessionName,
1114
+ role: member.role,
1115
+ projectPath,
1116
+ memberId: member.id,
1117
+ teamId: 'orchestrator',
1118
+ runtimeType: member.runtimeType || undefined,
1119
+ });
1120
+ if (createResult.success) {
1121
+ res.json({
1122
+ success: true,
1123
+ data: {
1124
+ memberId: member.id,
1125
+ sessionName: createResult.sessionName || member.sessionName,
1126
+ status: CREWLY_CONSTANTS.AGENT_STATUSES.STARTING
1127
+ },
1128
+ message: `Orchestrator member ${member.name} started successfully`
1129
+ });
1130
+ }
1131
+ else {
1132
+ res.status(500).json({
1133
+ success: false,
1134
+ error: createResult.error || `Failed to start orchestrator member ${member.name}`
1135
+ });
1136
+ }
1137
+ }
1138
+ catch (error) {
1139
+ logger.error('Error starting orchestrator member', { memberId, error: error instanceof Error ? error.message : String(error) });
1140
+ res.status(500).json({
1141
+ success: false,
1142
+ error: error instanceof Error ? error.message : 'Failed to start orchestrator member'
1143
+ });
1144
+ }
1145
+ }
1146
+ /**
1147
+ * Stop a virtual orchestrator team member (Assistant or Auditor).
1148
+ * These members are not persisted in teams.json — uses agentRegistrationService
1149
+ * to terminate the session without storage updates.
1150
+ *
1151
+ * @param context - API context with services
1152
+ * @param memberId - The member ID from the virtual orchestrator team
1153
+ * @param res - Express response object
1154
+ */
1155
+ async function _stopOrchestratorMember(context, memberId, res) {
1156
+ const orchestratorTeam = buildOrchestratorTeam(CREWLY_CONSTANTS.AGENT_STATUSES.ACTIVE, null);
1157
+ const member = orchestratorTeam.members.find(m => m.id === memberId);
1158
+ if (!member) {
1159
+ res.status(404).json({ success: false, error: 'Orchestrator team member not found' });
1160
+ return;
1161
+ }
1162
+ // Main orchestrator member is managed at system level
1163
+ if (memberId === 'orchestrator-member') {
1164
+ res.status(400).json({
1165
+ success: false,
1166
+ error: 'Orchestrator is managed at system level. Use /api/orchestrator/setup endpoint instead.'
1167
+ });
1168
+ return;
1169
+ }
1170
+ try {
1171
+ const stopResult = await context.agentRegistrationService.terminateAgentSession(member.sessionName, member.role);
1172
+ if (stopResult.success) {
1173
+ res.json({
1174
+ success: true,
1175
+ data: {
1176
+ memberId: member.id,
1177
+ status: CREWLY_CONSTANTS.AGENT_STATUSES.INACTIVE
1178
+ },
1179
+ message: `Orchestrator member ${member.name} stopped successfully`
1180
+ });
1181
+ }
1182
+ else {
1183
+ res.status(500).json({
1184
+ success: false,
1185
+ error: stopResult.error || `Failed to stop orchestrator member ${member.name}`
1186
+ });
1187
+ }
1188
+ }
1189
+ catch (error) {
1190
+ logger.error('Error stopping orchestrator member', { memberId, error: error instanceof Error ? error.message : String(error) });
1191
+ res.status(500).json({
1192
+ success: false,
1193
+ error: error instanceof Error ? error.message : 'Failed to stop orchestrator member'
1194
+ });
1195
+ }
1196
+ }
1059
1197
  export async function startTeamMember(req, res) {
1060
1198
  try {
1061
1199
  const { teamId, memberId } = req.params;
1200
+ // Handle virtual orchestrator team members (not stored in teams.json)
1201
+ if (teamId === 'orchestrator') {
1202
+ await _startOrchestratorMember(this, memberId, res);
1203
+ return;
1204
+ }
1062
1205
  const teams = await this.storageService.getTeams();
1063
1206
  const team = teams.find(t => t.id === teamId);
1064
1207
  if (!team) {
@@ -1162,6 +1305,11 @@ export async function startTeamMember(req, res) {
1162
1305
  export async function stopTeamMember(req, res) {
1163
1306
  try {
1164
1307
  const { teamId, memberId } = req.params;
1308
+ // Handle virtual orchestrator team members (not stored in teams.json)
1309
+ if (teamId === 'orchestrator') {
1310
+ await _stopOrchestratorMember(this, memberId, res);
1311
+ return;
1312
+ }
1165
1313
  const teams = await this.storageService.getTeams();
1166
1314
  const team = teams.find(t => t.id === teamId);
1167
1315
  if (!team) {