crewly 1.5.10 → 1.5.12

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 (177) hide show
  1. package/config/constants.ts +3 -3
  2. package/config/orchestrator_tasks/prompts/orchestrator-prompt.md +73 -0
  3. package/config/roles/architect/prompt.md +9 -0
  4. package/config/roles/backend-developer/prompt.md +9 -0
  5. package/config/roles/content-strategist/prompt.md +10 -0
  6. package/config/roles/designer/prompt.md +9 -0
  7. package/config/roles/developer/prompt.md +9 -0
  8. package/config/roles/frontend-developer/prompt.md +9 -0
  9. package/config/roles/fullstack-dev/prompt.md +9 -0
  10. package/config/roles/generalist/prompt.md +9 -0
  11. package/config/roles/ops/prompt.md +9 -0
  12. package/config/roles/product-manager/prompt.md +9 -0
  13. package/config/roles/qa/prompt.md +9 -0
  14. package/config/roles/qa-engineer/prompt.md +9 -0
  15. package/config/roles/researcher/prompt.md +9 -0
  16. package/config/roles/sales/prompt.md +9 -0
  17. package/config/roles/support/prompt.md +9 -0
  18. package/config/roles/team-leader/prompt.md +11 -0
  19. package/config/roles/tpm/prompt.md +9 -0
  20. package/config/roles/ux-designer/prompt.md +9 -0
  21. package/config/skills/agent/core/block-task/execute.sh +3 -1
  22. package/config/skills/agent/core/pipe-to-sink/execute.sh +41 -0
  23. package/config/skills/agent/core/read-task/execute.sh +3 -1
  24. package/config/skills/agent/core/report-progress/execute.sh +3 -1
  25. package/config/skills/agent/screenshot-compare/SKILL.md +75 -0
  26. package/config/skills/agent/screenshot-compare/execute.sh +182 -0
  27. package/config/skills/agent/screenshot-compare/skill.json +10 -0
  28. package/config/skills/agent/xiaoyuzhoufm-transcript/SKILL.md +85 -0
  29. package/config/skills/agent/xiaoyuzhoufm-transcript/execute.sh +306 -0
  30. package/config/skills/agent/xiaoyuzhoufm-transcript/skill.json +10 -0
  31. package/config/skills/orchestrator/cancel-cron/SKILL.md +44 -0
  32. package/config/skills/orchestrator/create-cron/SKILL.md +58 -0
  33. package/config/skills/orchestrator/list-cron/SKILL.md +51 -0
  34. package/config/skills/orchestrator/update-cron/SKILL.md +52 -0
  35. package/config/skills/orchestrator/update-team-member/SKILL.md +36 -0
  36. package/config/skills/orchestrator/update-team-member/execute.sh +25 -0
  37. package/dist/backend/backend/src/constants.d.ts +7 -4
  38. package/dist/backend/backend/src/constants.d.ts.map +1 -1
  39. package/dist/backend/backend/src/constants.js +6 -3
  40. package/dist/backend/backend/src/constants.js.map +1 -1
  41. package/dist/backend/backend/src/controllers/browser/browser.controller.d.ts +21 -2
  42. package/dist/backend/backend/src/controllers/browser/browser.controller.d.ts.map +1 -1
  43. package/dist/backend/backend/src/controllers/browser/browser.controller.js +167 -29
  44. package/dist/backend/backend/src/controllers/browser/browser.controller.js.map +1 -1
  45. package/dist/backend/backend/src/controllers/browser/browser.routes.d.ts +1 -1
  46. package/dist/backend/backend/src/controllers/browser/browser.routes.d.ts.map +1 -1
  47. package/dist/backend/backend/src/controllers/browser/browser.routes.js +7 -3
  48. package/dist/backend/backend/src/controllers/browser/browser.routes.js.map +1 -1
  49. package/dist/backend/backend/src/controllers/data/data.controller.d.ts +47 -0
  50. package/dist/backend/backend/src/controllers/data/data.controller.d.ts.map +1 -0
  51. package/dist/backend/backend/src/controllers/data/data.controller.js +201 -0
  52. package/dist/backend/backend/src/controllers/data/data.controller.js.map +1 -0
  53. package/dist/backend/backend/src/controllers/data/data.routes.d.ts +18 -0
  54. package/dist/backend/backend/src/controllers/data/data.routes.d.ts.map +1 -0
  55. package/dist/backend/backend/src/controllers/data/data.routes.js +44 -0
  56. package/dist/backend/backend/src/controllers/data/data.routes.js.map +1 -0
  57. package/dist/backend/backend/src/controllers/monitoring/token-usage.controller.d.ts +3 -2
  58. package/dist/backend/backend/src/controllers/monitoring/token-usage.controller.d.ts.map +1 -1
  59. package/dist/backend/backend/src/controllers/monitoring/token-usage.controller.js +5 -3
  60. package/dist/backend/backend/src/controllers/monitoring/token-usage.controller.js.map +1 -1
  61. package/dist/backend/backend/src/controllers/system/cron-task.controller.d.ts +4 -0
  62. package/dist/backend/backend/src/controllers/system/cron-task.controller.d.ts.map +1 -1
  63. package/dist/backend/backend/src/controllers/system/cron-task.controller.js +20 -0
  64. package/dist/backend/backend/src/controllers/system/cron-task.controller.js.map +1 -1
  65. package/dist/backend/backend/src/controllers/task-management/task-management.controller.d.ts.map +1 -1
  66. package/dist/backend/backend/src/controllers/task-management/task-management.controller.js +18 -0
  67. package/dist/backend/backend/src/controllers/task-management/task-management.controller.js.map +1 -1
  68. package/dist/backend/backend/src/controllers/team/team-export.controller.d.ts +32 -0
  69. package/dist/backend/backend/src/controllers/team/team-export.controller.d.ts.map +1 -0
  70. package/dist/backend/backend/src/controllers/team/team-export.controller.js +61 -0
  71. package/dist/backend/backend/src/controllers/team/team-export.controller.js.map +1 -0
  72. package/dist/backend/backend/src/controllers/team/team.controller.d.ts.map +1 -1
  73. package/dist/backend/backend/src/controllers/team/team.controller.js +66 -46
  74. package/dist/backend/backend/src/controllers/team/team.controller.js.map +1 -1
  75. package/dist/backend/backend/src/controllers/team/team.routes.d.ts.map +1 -1
  76. package/dist/backend/backend/src/controllers/team/team.routes.js +7 -0
  77. package/dist/backend/backend/src/controllers/team/team.routes.js.map +1 -1
  78. package/dist/backend/backend/src/index.d.ts.map +1 -1
  79. package/dist/backend/backend/src/index.js +37 -7
  80. package/dist/backend/backend/src/index.js.map +1 -1
  81. package/dist/backend/backend/src/routes/api.routes.d.ts.map +1 -1
  82. package/dist/backend/backend/src/routes/api.routes.js +4 -1
  83. package/dist/backend/backend/src/routes/api.routes.js.map +1 -1
  84. package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
  85. package/dist/backend/backend/src/services/agent/agent-registration.service.js +6 -2
  86. package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
  87. package/dist/backend/backend/src/services/agent/idle-detection.service.d.ts.map +1 -1
  88. package/dist/backend/backend/src/services/agent/idle-detection.service.js +17 -2
  89. package/dist/backend/backend/src/services/agent/idle-detection.service.js.map +1 -1
  90. package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.d.ts +1 -1
  91. package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.js +2 -2
  92. package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.js.map +1 -1
  93. package/dist/backend/backend/src/services/agent/task-planning.service.d.ts +134 -0
  94. package/dist/backend/backend/src/services/agent/task-planning.service.d.ts.map +1 -0
  95. package/dist/backend/backend/src/services/agent/task-planning.service.js +291 -0
  96. package/dist/backend/backend/src/services/agent/task-planning.service.js.map +1 -0
  97. package/dist/backend/backend/src/services/ai/prompt-modules/communication.module.d.ts.map +1 -1
  98. package/dist/backend/backend/src/services/ai/prompt-modules/communication.module.js +8 -0
  99. package/dist/backend/backend/src/services/ai/prompt-modules/communication.module.js.map +1 -1
  100. package/dist/backend/backend/src/services/ai/prompt-modules/skills-reference.module.d.ts.map +1 -1
  101. package/dist/backend/backend/src/services/ai/prompt-modules/skills-reference.module.js +3 -3
  102. package/dist/backend/backend/src/services/ai/prompt-modules/skills-reference.module.js.map +1 -1
  103. package/dist/backend/backend/src/services/browser/browser-bridge.service.d.ts +13 -9
  104. package/dist/backend/backend/src/services/browser/browser-bridge.service.d.ts.map +1 -1
  105. package/dist/backend/backend/src/services/browser/browser-bridge.service.js +44 -12
  106. package/dist/backend/backend/src/services/browser/browser-bridge.service.js.map +1 -1
  107. package/dist/backend/backend/src/services/browser/browser-proxy.service.d.ts +176 -0
  108. package/dist/backend/backend/src/services/browser/browser-proxy.service.d.ts.map +1 -0
  109. package/dist/backend/backend/src/services/browser/browser-proxy.service.js +441 -0
  110. package/dist/backend/backend/src/services/browser/browser-proxy.service.js.map +1 -0
  111. package/dist/backend/backend/src/services/browser/browser-relay-adapter.service.d.ts +162 -0
  112. package/dist/backend/backend/src/services/browser/browser-relay-adapter.service.d.ts.map +1 -0
  113. package/dist/backend/backend/src/services/browser/browser-relay-adapter.service.js +350 -0
  114. package/dist/backend/backend/src/services/browser/browser-relay-adapter.service.js.map +1 -0
  115. package/dist/backend/backend/src/services/cloud/cloud-initializer.d.ts +8 -0
  116. package/dist/backend/backend/src/services/cloud/cloud-initializer.d.ts.map +1 -1
  117. package/dist/backend/backend/src/services/cloud/cloud-initializer.js +27 -0
  118. package/dist/backend/backend/src/services/cloud/cloud-initializer.js.map +1 -1
  119. package/dist/backend/backend/src/services/cloud/cloud-sync.types.d.ts +1 -1
  120. package/dist/backend/backend/src/services/cloud/cloud-sync.types.d.ts.map +1 -1
  121. package/dist/backend/backend/src/services/cloud/cloud-sync.types.js +2 -0
  122. package/dist/backend/backend/src/services/cloud/cloud-sync.types.js.map +1 -1
  123. package/dist/backend/backend/src/services/core/team-export.service.d.ts +103 -0
  124. package/dist/backend/backend/src/services/core/team-export.service.d.ts.map +1 -0
  125. package/dist/backend/backend/src/services/core/team-export.service.js +182 -0
  126. package/dist/backend/backend/src/services/core/team-export.service.js.map +1 -0
  127. package/dist/backend/backend/src/services/data/data-object-store.service.d.ts +160 -0
  128. package/dist/backend/backend/src/services/data/data-object-store.service.d.ts.map +1 -0
  129. package/dist/backend/backend/src/services/data/data-object-store.service.js +434 -0
  130. package/dist/backend/backend/src/services/data/data-object-store.service.js.map +1 -0
  131. package/dist/backend/backend/src/services/data/data-object.types.d.ts +190 -0
  132. package/dist/backend/backend/src/services/data/data-object.types.d.ts.map +1 -0
  133. package/dist/backend/backend/src/services/data/data-object.types.js +143 -0
  134. package/dist/backend/backend/src/services/data/data-object.types.js.map +1 -0
  135. package/dist/backend/backend/src/services/data/schema-registry.service.d.ts +108 -0
  136. package/dist/backend/backend/src/services/data/schema-registry.service.d.ts.map +1 -0
  137. package/dist/backend/backend/src/services/data/schema-registry.service.js +290 -0
  138. package/dist/backend/backend/src/services/data/schema-registry.service.js.map +1 -0
  139. package/dist/backend/backend/src/services/data/sink-registry.service.d.ts +87 -0
  140. package/dist/backend/backend/src/services/data/sink-registry.service.d.ts.map +1 -0
  141. package/dist/backend/backend/src/services/data/sink-registry.service.js +188 -0
  142. package/dist/backend/backend/src/services/data/sink-registry.service.js.map +1 -0
  143. package/dist/backend/backend/src/services/messaging/message-router.service.d.ts.map +1 -1
  144. package/dist/backend/backend/src/services/messaging/message-router.service.js +7 -0
  145. package/dist/backend/backend/src/services/messaging/message-router.service.js.map +1 -1
  146. package/dist/backend/backend/src/services/monitoring/token-usage.service.d.ts +55 -2
  147. package/dist/backend/backend/src/services/monitoring/token-usage.service.d.ts.map +1 -1
  148. package/dist/backend/backend/src/services/monitoring/token-usage.service.js +89 -5
  149. package/dist/backend/backend/src/services/monitoring/token-usage.service.js.map +1 -1
  150. package/dist/backend/backend/src/services/session/pty/pty-session-backend.js +1 -1
  151. package/dist/backend/backend/src/services/session/pty/pty-session-backend.js.map +1 -1
  152. package/dist/backend/backend/src/services/workflow/cron-task.service.d.ts +105 -14
  153. package/dist/backend/backend/src/services/workflow/cron-task.service.d.ts.map +1 -1
  154. package/dist/backend/backend/src/services/workflow/cron-task.service.js +400 -123
  155. package/dist/backend/backend/src/services/workflow/cron-task.service.js.map +1 -1
  156. package/dist/backend/backend/src/types/cron-task.types.d.ts +1 -1
  157. package/dist/backend/backend/src/types/data-object.types.d.ts +117 -0
  158. package/dist/backend/backend/src/types/data-object.types.d.ts.map +1 -0
  159. package/dist/backend/backend/src/types/data-object.types.js +23 -0
  160. package/dist/backend/backend/src/types/data-object.types.js.map +1 -0
  161. package/dist/backend/backend/src/types/settings.types.js +1 -1
  162. package/dist/backend/config/constants.d.ts +3 -3
  163. package/dist/backend/config/constants.js +3 -3
  164. package/dist/backend/config/constants.js.map +1 -1
  165. package/dist/cli/backend/src/constants.d.ts +7 -4
  166. package/dist/cli/backend/src/constants.d.ts.map +1 -1
  167. package/dist/cli/backend/src/constants.js +6 -3
  168. package/dist/cli/backend/src/constants.js.map +1 -1
  169. package/dist/cli/backend/src/types/settings.types.js +1 -1
  170. package/dist/cli/config/constants.d.ts +3 -3
  171. package/dist/cli/config/constants.js +3 -3
  172. package/dist/cli/config/constants.js.map +1 -1
  173. package/frontend/dist/assets/index-371b68d4.css +33 -0
  174. package/frontend/dist/assets/{index-76782e9e.js → index-506f70da.js} +321 -321
  175. package/frontend/dist/index.html +2 -2
  176. package/package.json +1 -1
  177. package/frontend/dist/assets/index-b19b2478.css +0 -33
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Team Export/Import Controller
3
+ *
4
+ * HTTP handlers for exporting and importing complete team bundles.
5
+ * Part of the team-scoped cron feature (Phase 3).
6
+ *
7
+ * @module controllers/team/team-export.controller
8
+ */
9
+ import { TeamExportService } from '../../services/core/team-export.service.js';
10
+ import { formatError } from '../../utils/format-error.js';
11
+ /**
12
+ * GET /api/teams/:teamId/export
13
+ *
14
+ * Exports a team and all associated data (config, prompts, norms, cron tasks)
15
+ * as a single JSON bundle for backup or migration.
16
+ *
17
+ * @param req - Express request with teamId parameter
18
+ * @param res - Express response with TeamExport JSON
19
+ */
20
+ export async function exportTeam(req, res) {
21
+ const { teamId } = req.params;
22
+ try {
23
+ const service = new TeamExportService(this.storageService);
24
+ const exportData = await service.exportTeam(teamId);
25
+ res.json({ success: true, data: exportData });
26
+ }
27
+ catch (error) {
28
+ const message = formatError(error);
29
+ const status = message.includes('not found') ? 404 : 500;
30
+ res.status(status).json({ success: false, message });
31
+ }
32
+ }
33
+ /**
34
+ * POST /api/teams/import
35
+ *
36
+ * Imports a team from a complete export bundle. Creates the team,
37
+ * writes prompts and norms, and creates cron tasks with new IDs
38
+ * to avoid conflicts.
39
+ *
40
+ * @param req - Express request with TeamExport body
41
+ * @param res - Express response with import result
42
+ */
43
+ export async function importTeam(req, res) {
44
+ const data = req.body;
45
+ if (!data.version || !data.team) {
46
+ res.status(400).json({
47
+ success: false,
48
+ message: 'Invalid team export format: missing version or team data',
49
+ });
50
+ return;
51
+ }
52
+ try {
53
+ const service = new TeamExportService(this.storageService);
54
+ const result = await service.importTeam(data);
55
+ res.json({ success: true, data: result });
56
+ }
57
+ catch (error) {
58
+ res.status(500).json({ success: false, message: formatError(error) });
59
+ }
60
+ }
61
+ //# sourceMappingURL=team-export.controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"team-export.controller.js","sourceRoot":"","sources":["../../../../../../backend/src/controllers/team/team-export.controller.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,EAAE,iBAAiB,EAAE,MAAM,4CAA4C,CAAC;AAE/E,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAE1D;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAmB,GAAY,EAAE,GAAa;IAC5E,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;IAE9B,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC3D,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACpD,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;IAChD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;QACnC,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QACzD,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;IACvD,CAAC;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAmB,GAAY,EAAE,GAAa;IAC5E,MAAM,IAAI,GAAG,GAAG,CAAC,IAA2B,CAAC;IAE7C,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAChC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;YACnB,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,0DAA0D;SACpE,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC3D,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,IAAkB,CAAC,CAAC;QAC5D,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IAC5C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACxE,CAAC;AACH,CAAC"}
@@ -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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"}
@@ -42,6 +42,21 @@ async function getDefaultRuntime() {
42
42
  return RUNTIME_TYPES.CLAUDE_CODE;
43
43
  }
44
44
  }
45
+ /**
46
+ * Check if the auditor is enabled in settings.
47
+ * Used to conditionally include the auditor member in the orchestrator team.
48
+ *
49
+ * @returns True if the auditor is enabled
50
+ */
51
+ async function isAuditorEnabled() {
52
+ try {
53
+ const settings = await getSettingsService().getSettings();
54
+ return settings.general.enableAuditor ?? false;
55
+ }
56
+ catch {
57
+ return false;
58
+ }
59
+ }
45
60
  /**
46
61
  * Computes the lastActivity timestamp for a team.
47
62
  *
@@ -84,60 +99,63 @@ function withLastActivity(team) {
84
99
  * @param overrides - Optional field overrides (e.g. projectIds for updates)
85
100
  * @returns A Team object representing the orchestrator
86
101
  */
87
- function buildOrchestratorTeam(actualAgentStatus, orchestratorStatus, overrides, inProcessRuntimeStatus) {
102
+ function buildOrchestratorTeam(actualAgentStatus, orchestratorStatus, overrides, inProcessRuntimeStatus, options) {
88
103
  const now = new Date().toISOString();
89
104
  // Resolve Assistant status: check in-process runtime active state
90
105
  const assistantInProcessActive = inProcessRuntimeStatus?.['crewly-orc-assistant'] ?? false;
91
106
  const assistantStatus = assistantInProcessActive
92
107
  ? CREWLY_CONSTANTS.AGENT_STATUSES.ACTIVE
93
108
  : CREWLY_CONSTANTS.AGENT_STATUSES.INACTIVE;
94
- // Resolve Auditor status: check in-process runtime active state
95
- const auditorInProcessActive = inProcessRuntimeStatus?.['crewly-auditor'] ?? false;
96
- const auditorStatus = auditorInProcessActive
97
- ? CREWLY_CONSTANTS.AGENT_STATUSES.ACTIVE
98
- : CREWLY_CONSTANTS.AGENT_STATUSES.INACTIVE;
109
+ const members = [
110
+ {
111
+ id: 'orchestrator-member',
112
+ name: 'Agentmux Orchestrator',
113
+ sessionName: CREWLY_CONSTANTS.SESSIONS.ORCHESTRATOR_NAME,
114
+ role: 'orchestrator',
115
+ systemPrompt: 'You are the Crewly Orchestrator responsible for coordinating teams and managing project workflows.',
116
+ agentStatus: actualAgentStatus,
117
+ workingStatus: (orchestratorStatus?.workingStatus || CREWLY_CONSTANTS.WORKING_STATUSES.IDLE),
118
+ runtimeType: (orchestratorStatus?.runtimeType || 'claude-code'),
119
+ createdAt: orchestratorStatus?.createdAt || now,
120
+ updatedAt: orchestratorStatus?.updatedAt || now
121
+ },
122
+ {
123
+ id: 'crewly-orc-assistant-member-001',
124
+ name: 'Assistant',
125
+ sessionName: 'crewly-orc-assistant',
126
+ role: 'orchestrator',
127
+ systemPrompt: 'Shadow orchestrator running in-process via Crewly Agent runtime (AI SDK)',
128
+ agentStatus: assistantStatus,
129
+ workingStatus: CREWLY_CONSTANTS.WORKING_STATUSES.IDLE,
130
+ runtimeType: 'crewly-agent',
131
+ createdAt: '2026-03-11T02:00:00.000Z',
132
+ updatedAt: now
133
+ },
134
+ ];
135
+ // Only include auditor member when auditor is enabled (default: include for backward compat)
136
+ if (options?.auditorEnabled !== false) {
137
+ const auditorInProcessActive = inProcessRuntimeStatus?.['crewly-auditor'] ?? false;
138
+ const auditorStatus = auditorInProcessActive
139
+ ? CREWLY_CONSTANTS.AGENT_STATUSES.ACTIVE
140
+ : CREWLY_CONSTANTS.AGENT_STATUSES.INACTIVE;
141
+ members.push({
142
+ id: 'e5f6a7b8-9012-3cde-f456-auditor00001',
143
+ name: 'Auditor',
144
+ sessionName: 'crewly-auditor',
145
+ role: 'auditor',
146
+ systemPrompt: 'Autonomous quality observer — monitors all agents, detects problems, writes audit reports',
147
+ agentStatus: auditorStatus,
148
+ workingStatus: CREWLY_CONSTANTS.WORKING_STATUSES.IDLE,
149
+ runtimeType: 'claude-code',
150
+ createdAt: '2026-03-11T02:10:00.000Z',
151
+ updatedAt: now
152
+ });
153
+ }
99
154
  return {
100
155
  id: 'orchestrator',
101
156
  name: 'Orchestrator Team',
102
157
  description: 'System orchestrator for project management',
103
- members: [
104
- {
105
- id: 'orchestrator-member',
106
- name: 'Agentmux Orchestrator',
107
- sessionName: CREWLY_CONSTANTS.SESSIONS.ORCHESTRATOR_NAME,
108
- role: 'orchestrator',
109
- systemPrompt: 'You are the Crewly Orchestrator responsible for coordinating teams and managing project workflows.',
110
- agentStatus: actualAgentStatus,
111
- workingStatus: (orchestratorStatus?.workingStatus || CREWLY_CONSTANTS.WORKING_STATUSES.IDLE),
112
- runtimeType: (orchestratorStatus?.runtimeType || 'claude-code'),
113
- createdAt: orchestratorStatus?.createdAt || now,
114
- updatedAt: orchestratorStatus?.updatedAt || now
115
- },
116
- {
117
- id: 'crewly-orc-assistant-member-001',
118
- name: 'Assistant',
119
- sessionName: 'crewly-orc-assistant',
120
- role: 'orchestrator',
121
- systemPrompt: 'Shadow orchestrator running in-process via Crewly Agent runtime (AI SDK)',
122
- agentStatus: assistantStatus,
123
- workingStatus: CREWLY_CONSTANTS.WORKING_STATUSES.IDLE,
124
- runtimeType: 'crewly-agent',
125
- createdAt: '2026-03-11T02:00:00.000Z',
126
- updatedAt: now
127
- },
128
- {
129
- id: 'e5f6a7b8-9012-3cde-f456-auditor00001',
130
- name: 'Auditor',
131
- sessionName: 'crewly-auditor',
132
- role: 'auditor',
133
- systemPrompt: 'Autonomous quality observer — monitors all agents, detects problems, writes audit reports',
134
- agentStatus: auditorStatus,
135
- workingStatus: CREWLY_CONSTANTS.WORKING_STATUSES.IDLE,
136
- runtimeType: 'claude-code',
137
- createdAt: '2026-03-11T02:10:00.000Z',
138
- updatedAt: now
139
- }
140
- ],
158
+ members,
141
159
  projectIds: [],
142
160
  createdAt: orchestratorStatus?.createdAt || now,
143
161
  updatedAt: orchestratorStatus?.updatedAt || now,
@@ -678,7 +696,8 @@ export async function getTeams(req, res) {
678
696
  const actualOrchestratorStatus = resolveAgentStatus(orchestratorStatus?.agentStatus, orchestratorSessionExists);
679
697
  // Check in-process runtime status for virtual team members (Assistant, Auditor)
680
698
  const inProcessRuntimeStatus = getInProcessRuntimeStatusMap(this.agentRegistrationService);
681
- const orchestratorTeam = buildOrchestratorTeam(actualOrchestratorStatus, orchestratorStatus, undefined, inProcessRuntimeStatus);
699
+ const auditorEnabled = await isAuditorEnabled();
700
+ const orchestratorTeam = buildOrchestratorTeam(actualOrchestratorStatus, orchestratorStatus, undefined, inProcessRuntimeStatus, { auditorEnabled });
682
701
  // Load working status data from ActivityMonitorService
683
702
  let workingStatusData;
684
703
  try {
@@ -732,7 +751,8 @@ export async function getTeam(req, res) {
732
751
  const orchestratorSessionExists = backend?.sessionExists(CREWLY_CONSTANTS.SESSIONS.ORCHESTRATOR_NAME) || false;
733
752
  const actualOrchestratorStatus = resolveAgentStatus(orchestratorStatus?.agentStatus, orchestratorSessionExists);
734
753
  const inProcessStatus = getInProcessRuntimeStatusMap(this.agentRegistrationService);
735
- const orchestratorTeam = buildOrchestratorTeam(actualOrchestratorStatus, orchestratorStatus, undefined, inProcessStatus);
754
+ const auditorEnabled = await isAuditorEnabled();
755
+ const orchestratorTeam = buildOrchestratorTeam(actualOrchestratorStatus, orchestratorStatus, undefined, inProcessStatus, { auditorEnabled });
736
756
  res.json({ success: true, data: withLastActivity(orchestratorTeam) });
737
757
  return;
738
758
  }