crow-central-agency 0.26.1 → 0.26.4

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 (140) hide show
  1. package/dist/_shared/index.js +1 -1
  2. package/dist/_shared/schemas/agent.schema.js +58 -4
  3. package/dist/bootstrap.js +4 -1
  4. package/dist/config/constants.js +6 -0
  5. package/dist/config/env.js +1 -6
  6. package/dist/mcp/agents/agents-mcp-server.js +3 -1
  7. package/dist/mcp/agents/invoke-agent.js +4 -1
  8. package/dist/mcp/agents/search-workspace.js +104 -0
  9. package/dist/public/assets/arc-D7DDV_QI.js +1 -0
  10. package/dist/public/assets/architecture-7EHR7CIX-DG_7xbiq.js +1 -0
  11. package/dist/public/assets/architectureDiagram-3BPJPVTR-Bz06JFon.js +36 -0
  12. package/dist/public/assets/array-BifhSqXX.js +1 -0
  13. package/dist/public/assets/blockDiagram-GPEHLZMM-B-ui54uY.js +132 -0
  14. package/dist/public/assets/{c4Diagram-AAUBKEIU-DgNu6oJg.js → c4Diagram-AAUBKEIU-C7xPAjI3.js} +6 -6
  15. package/dist/public/assets/channel-Bqyn77ps.js +1 -0
  16. package/dist/public/assets/chunk-2J33WTMH-DLyyWUKS.js +1 -0
  17. package/dist/public/assets/chunk-3OPIFGDE-BAV3S28P.js +62 -0
  18. package/dist/public/assets/chunk-4BX2VUAB-BMsk68L-.js +1 -0
  19. package/dist/public/assets/chunk-55IACEB6--DpBVdAI.js +1 -0
  20. package/dist/public/assets/chunk-5ZQYHXKU-k4j14TFR.js +2 -0
  21. package/dist/public/assets/{chunk-727SXJPM-B8PRCIMl.js → chunk-727SXJPM-5GKwh6fT.js} +6 -6
  22. package/dist/public/assets/chunk-AQP2D5EJ-wMWKOYIc.js +231 -0
  23. package/dist/public/assets/chunk-BSJP7CBP-9dKWaw0S.js +1 -0
  24. package/dist/public/assets/chunk-CSCIHK7Q-XbmkaXEE.js +124 -0
  25. package/dist/public/assets/{chunk-FMBD7UC4-BAyYRcn7.js → chunk-FMBD7UC4-Cp4hTfZl.js} +1 -1
  26. package/dist/public/assets/chunk-L5ZTLDWV-Dv4f3XV4.js +1 -0
  27. package/dist/public/assets/chunk-ND2GUHAM-BgcUO3cE.js +1 -0
  28. package/dist/public/assets/chunk-NNHCCRGN-DlpIbxXb.js +159 -0
  29. package/dist/public/assets/chunk-NZK2D7GU-DEdNhH61.js +1 -0
  30. package/dist/public/assets/chunk-O5CBEL6O-BkWxYhMO.js +70 -0
  31. package/dist/public/assets/chunk-QZHKN3VN-D2IHPYC7.js +1 -0
  32. package/dist/public/assets/classDiagram-4FO5ZUOK-DeakRfbI.js +1 -0
  33. package/dist/public/assets/classDiagram-v2-Q7XG4LA2-DeakRfbI.js +1 -0
  34. package/dist/public/assets/cose-bilkent-S5V4N54A-DFygL_8B.js +1 -0
  35. package/dist/public/assets/dagre-BM42HDAG-BaqEK3sM.js +4 -0
  36. package/dist/public/assets/diagram-2AECGRRQ-BFC7UJOh.js +43 -0
  37. package/dist/public/assets/diagram-5GNKFQAL-C0jqgvuM.js +10 -0
  38. package/dist/public/assets/diagram-KO2AKTUF-DbnrTKPq.js +3 -0
  39. package/dist/public/assets/diagram-LMA3HP47-KRJXH1WK.js +24 -0
  40. package/dist/public/assets/diagram-OG6HWLK6-CbGXtbWC.js +24 -0
  41. package/dist/public/assets/dist-DFtMN8Vu.js +1 -0
  42. package/dist/public/assets/erDiagram-TEJ5UH35-dMSRMTue.js +85 -0
  43. package/dist/public/assets/eventmodeling-FCH6USID-BX2CvCmJ.js +1 -0
  44. package/dist/public/assets/flowDiagram-I6XJVG4X-CKHf79Nb.js +162 -0
  45. package/dist/public/assets/ganttDiagram-6RSMTGT7-TRVQ1Fd3.js +292 -0
  46. package/dist/public/assets/gitGraph-WXDBUCRP-DK18B2O2.js +1 -0
  47. package/dist/public/assets/gitGraphDiagram-PVQCEYII-CawvqXpb.js +106 -0
  48. package/dist/public/assets/index-C9uHckFR.css +1 -0
  49. package/dist/public/assets/index-R4E59YNF.js +479 -0
  50. package/dist/public/assets/info-J43DQDTF-CpTMz9Tv.js +1 -0
  51. package/dist/public/assets/infoDiagram-5YYISTIA-BvsQpC6d.js +2 -0
  52. package/dist/public/assets/{ishikawaDiagram-YF4QCWOH-Cv3wIcZA.js → ishikawaDiagram-YF4QCWOH-z1LNiCtm.js} +6 -6
  53. package/dist/public/assets/{journeyDiagram-JHISSGLW-PfUWHugP.js → journeyDiagram-JHISSGLW-BadSfDOq.js} +6 -6
  54. package/dist/public/assets/kanban-definition-UN3LZRKU-m2MPOiiM.js +89 -0
  55. package/dist/public/assets/line-BxRqDWw8.js +1 -0
  56. package/dist/public/assets/linear-DUggFzN6.js +1 -0
  57. package/dist/public/assets/mermaid-parser.core-BdOZ0AFQ.js +4 -0
  58. package/dist/public/assets/{mindmap-definition-RKZ34NQL-qbrrivB7.js → mindmap-definition-RKZ34NQL-zOLQH8v9.js} +30 -30
  59. package/dist/public/assets/packet-YPE3B663-DtrEp0HG.js +1 -0
  60. package/dist/public/assets/path-BWPyau1x.js +1 -0
  61. package/dist/public/assets/pie-LRSECV5Y-Biojo2af.js +1 -0
  62. package/dist/public/assets/pieDiagram-4H26LBE5-CsM1jwJk.js +30 -0
  63. package/dist/public/assets/{quadrantDiagram-W4KKPZXB-CHrUks1Q.js → quadrantDiagram-W4KKPZXB-DyqnhvLb.js} +6 -6
  64. package/dist/public/assets/radar-GUYGQ44K-Dl-OE3Q4.js +1 -0
  65. package/dist/public/assets/requirementDiagram-4Y6WPE33-aMN3gWn2.js +84 -0
  66. package/dist/public/assets/rough.esm-CSKSodPl.js +1 -0
  67. package/dist/public/assets/sankeyDiagram-5OEKKPKP-chSC0J1Z.js +40 -0
  68. package/dist/public/assets/sequenceDiagram-3UESZ5HK-DwgLNsZa.js +162 -0
  69. package/dist/public/assets/src-uUomEtsP.js +1 -0
  70. package/dist/public/assets/stateDiagram-AJRCARHV-BWU7pHby.js +1 -0
  71. package/dist/public/assets/stateDiagram-v2-BHNVJYJU-BZV-KXVr.js +1 -0
  72. package/dist/public/assets/timeline-definition-PNZ67QCA-Cqw5PUrr.js +120 -0
  73. package/dist/public/assets/treeView-BLDUP644-CI9praQE.js +1 -0
  74. package/dist/public/assets/treemap-LRROVOQU-CFg0aDpp.js +1 -0
  75. package/dist/public/assets/vennDiagram-CIIHVFJN-6ZJ8KTO8.js +34 -0
  76. package/dist/public/assets/wardley-L42UT6IY-J8igKzxr.js +1 -0
  77. package/dist/public/assets/wardleyDiagram-YWT4CUSO-DML2A9_-.js +78 -0
  78. package/dist/public/assets/{xychartDiagram-2RQKCTM6-C8Zipv7z.js → xychartDiagram-2RQKCTM6-DMJqgVoY.js} +7 -7
  79. package/dist/public/index.html +15 -2
  80. package/dist/routes/artifact.routes.js +21 -0
  81. package/dist/runner/agent-runner.js +5 -0
  82. package/dist/runner/claude-code-agent-runner.js +1 -0
  83. package/dist/runner/github-copilot-agent-runner.js +29 -18
  84. package/dist/runner/tool-activity-parser-utils.js +16 -0
  85. package/dist/runner/tool-activity-parser.js +1 -4
  86. package/dist/services/artifact/artifact-manager.js +6 -1
  87. package/dist/services/artifact/artifact-tags.js +2 -2
  88. package/dist/services/copilot/copilot-client-manager.js +22 -3
  89. package/dist/services/search/document-search-service.js +169 -0
  90. package/dist/services/search/document-search-service.types.js +12 -0
  91. package/dist/utils/fs-utils.js +8 -0
  92. package/package.json +9 -8
  93. package/dist/public/assets/arc-LKCA62S1.js +0 -1
  94. package/dist/public/assets/architecture-7EHR7CIX-zH1TbhTt.js +0 -1
  95. package/dist/public/assets/architectureDiagram-3BPJPVTR-CK5BMF1A.js +0 -36
  96. package/dist/public/assets/blockDiagram-GPEHLZMM-CNTMGL7i.js +0 -132
  97. package/dist/public/assets/channel-B8gxUeqY.js +0 -1
  98. package/dist/public/assets/chunk-2J33WTMH-D8RFUR7M.js +0 -1
  99. package/dist/public/assets/chunk-4BX2VUAB-l28MUHiw.js +0 -1
  100. package/dist/public/assets/chunk-55IACEB6-qE2fLYWo.js +0 -1
  101. package/dist/public/assets/chunk-AQP2D5EJ-CDkzHEGb.js +0 -231
  102. package/dist/public/assets/chunk-ND2GUHAM-DoPlQyZt.js +0 -1
  103. package/dist/public/assets/chunk-QZHKN3VN-C32y4CkX.js +0 -1
  104. package/dist/public/assets/classDiagram-4FO5ZUOK-DH4gfYvh.js +0 -1
  105. package/dist/public/assets/classDiagram-v2-Q7XG4LA2-DH4gfYvh.js +0 -1
  106. package/dist/public/assets/cose-bilkent-S5V4N54A-DR9FRq6C.js +0 -1
  107. package/dist/public/assets/dagre-BM42HDAG-Ce0KEoX3.js +0 -4
  108. package/dist/public/assets/diagram-2AECGRRQ-wgIS8rW7.js +0 -43
  109. package/dist/public/assets/diagram-5GNKFQAL-pHAvTjDc.js +0 -10
  110. package/dist/public/assets/diagram-KO2AKTUF-nLJ2bAVV.js +0 -3
  111. package/dist/public/assets/diagram-LMA3HP47-CIrdymsD.js +0 -24
  112. package/dist/public/assets/diagram-OG6HWLK6-DKwaiowJ.js +0 -24
  113. package/dist/public/assets/erDiagram-TEJ5UH35-Z3nVlY_z.js +0 -85
  114. package/dist/public/assets/eventmodeling-FCH6USID-BptPyCTT.js +0 -1
  115. package/dist/public/assets/flowDiagram-I6XJVG4X-C26I_a5o.js +0 -162
  116. package/dist/public/assets/ganttDiagram-6RSMTGT7-0UGQgnfu.js +0 -292
  117. package/dist/public/assets/gitGraph-WXDBUCRP-D_VL05ra.js +0 -1
  118. package/dist/public/assets/gitGraphDiagram-PVQCEYII-_--Gzz1h.js +0 -106
  119. package/dist/public/assets/index-B36l7vHE.js +0 -732
  120. package/dist/public/assets/index-DdDKmqq6.css +0 -1
  121. package/dist/public/assets/info-J43DQDTF-Cm1wY6Nx.js +0 -1
  122. package/dist/public/assets/infoDiagram-5YYISTIA-CJpFz_PZ.js +0 -2
  123. package/dist/public/assets/kanban-definition-UN3LZRKU-BmLyUwuA.js +0 -89
  124. package/dist/public/assets/linear-Da3F7V4b.js +0 -1
  125. package/dist/public/assets/mermaid-parser.core-7Ey7SEGP.js +0 -161
  126. package/dist/public/assets/packet-YPE3B663-GOR4bfOj.js +0 -1
  127. package/dist/public/assets/pie-LRSECV5Y-D4D0Pa0z.js +0 -1
  128. package/dist/public/assets/pieDiagram-4H26LBE5-BH62GO3E.js +0 -30
  129. package/dist/public/assets/radar-GUYGQ44K-BRGEU-xO.js +0 -1
  130. package/dist/public/assets/requirementDiagram-4Y6WPE33-OqjULFTW.js +0 -84
  131. package/dist/public/assets/sankeyDiagram-5OEKKPKP--kcBt1SK.js +0 -40
  132. package/dist/public/assets/sequenceDiagram-3UESZ5HK-ChkuxTQ9.js +0 -162
  133. package/dist/public/assets/stateDiagram-AJRCARHV-DphBd-H5.js +0 -1
  134. package/dist/public/assets/stateDiagram-v2-BHNVJYJU-_O2Xui-T.js +0 -1
  135. package/dist/public/assets/timeline-definition-PNZ67QCA-B-rBCMtQ.js +0 -120
  136. package/dist/public/assets/treeView-BLDUP644-y-i1DlhL.js +0 -1
  137. package/dist/public/assets/treemap-LRROVOQU-EMtKLq4-.js +0 -1
  138. package/dist/public/assets/vennDiagram-CIIHVFJN-Dg_9pO6d.js +0 -34
  139. package/dist/public/assets/wardley-L42UT6IY--JXBaJ-Y.js +0 -1
  140. package/dist/public/assets/wardleyDiagram-YWT4CUSO-8rZjOpIv.js +0 -78
@@ -1,4 +1,4 @@
1
- export { CLAUDE_MODELS, GITHUB_COPILOT_MODELS, CLAUDE_CODE_MODEL_OPTIONS, ModelOptionSchema, CLAUDE_DEFAULT_MODEL, COPILOT_DEFAULT_MODEL, AgentIdSchema, AgentConfigSchema, AgentConfigTemplateSchema, CreateAgentInputSchema, UpdateAgentInputSchema, ToolConfigSchema, PermissionModeSchema, SettingSourceSchema, DiscoveredSkillSchema, LoopConfigSchema, ConfiguredFeedSchema, MAX_LOOP_TIMES, PERMISSION_MODE, SETTING_SOURCE, DEFAULT_SETTING_SOURCES, TOOL_MODE, DEFAULT_CLAUDE_CODE_AVAILABLE_TOOLS, DEFAULT_GITHUB_COPILOT_AVAILABLE_TOOLS, DEFAULT_AVAILABLE_TOOLS_BY_TYPE, SUBAGENT_TOOL_NAME, AGENT_TYPE, } from "./schemas/agent.schema.js";
1
+ export { CLAUDE_MODELS, GITHUB_COPILOT_MODELS, CLAUDE_CODE_MODEL_OPTIONS, ModelOptionSchema, REASONING_EFFORT, ReasoningEffortSchema, CLAUDE_DEFAULT_MODEL, COPILOT_DEFAULT_MODEL, AgentIdSchema, AgentConfigSchema, AgentConfigTemplateSchema, CreateAgentInputSchema, UpdateAgentInputSchema, ToolConfigSchema, PermissionModeSchema, SettingSourceSchema, DiscoveredSkillSchema, LoopConfigSchema, ConfiguredFeedSchema, MAX_LOOP_TIMES, PERMISSION_MODE, SETTING_SOURCE, DEFAULT_SETTING_SOURCES, TOOL_MODE, DEFAULT_CLAUDE_CODE_AVAILABLE_TOOLS, DEFAULT_GITHUB_COPILOT_AVAILABLE_TOOLS, DEFAULT_AVAILABLE_TOOLS_BY_TYPE, SUBAGENT_TOOL_NAME, AGENT_TYPE, } from "./schemas/agent.schema.js";
2
2
  export { SchedulerTimeSchema, DAY_OF_WEEK, DayOfWeekSchema, TimeModeSchema, TIME_MODE, } from "./schemas/scheduler.schema.js";
3
3
  export { createApiSuccessSchema, ApiErrorSchema, } from "./schemas/api-response.schema.js";
4
4
  export { SessionUsageSchema, PendingPermissionInfoSchema, PendingInstructionReminderSchema, AgentRuntimeStateSchema, AgentActivitySchema, AGENT_ACTIVITY_TYPE, AGENT_STATUS, } from "./schemas/agent-runtime-state.schema.js";
@@ -22,17 +22,67 @@ export const GITHUB_COPILOT_MODELS = {
22
22
  GPT_5_4_MINI: "gpt-5.4-mini",
23
23
  GPT_5_MINI: "gpt-5-mini",
24
24
  };
25
+ export const REASONING_EFFORT = {
26
+ LOW: "low",
27
+ MEDIUM: "medium",
28
+ HIGH: "high",
29
+ XHIGH: "xhigh",
30
+ MAX: "max",
31
+ };
32
+ export const ReasoningEffortSchema = z.enum([
33
+ REASONING_EFFORT.LOW,
34
+ REASONING_EFFORT.MEDIUM,
35
+ REASONING_EFFORT.HIGH,
36
+ REASONING_EFFORT.XHIGH,
37
+ REASONING_EFFORT.MAX,
38
+ ]);
25
39
  /** A selectable agent model, surfaced to the editor's model picker. */
26
40
  export const ModelOptionSchema = z.object({
27
41
  value: z.string(),
28
42
  label: z.string(),
43
+ /** Reasoning effort levels the model supports; omitted when the model has no effort control. */
44
+ supportedEfforts: z.array(ReasoningEffortSchema).optional(),
29
45
  });
30
46
  export const CLAUDE_CODE_MODEL_OPTIONS = [
31
- { value: CLAUDE_MODELS.SONNET, label: "Claude Sonnet 4.6" },
32
- { value: CLAUDE_MODELS.OPUS, label: "Claude Opus 4.8" },
33
- { value: CLAUDE_MODELS.OPUS_4_7, label: "Claude Opus 4.7" },
47
+ {
48
+ value: CLAUDE_MODELS.SONNET,
49
+ label: "Claude Sonnet 4.6",
50
+ supportedEfforts: [REASONING_EFFORT.LOW, REASONING_EFFORT.MEDIUM, REASONING_EFFORT.HIGH, REASONING_EFFORT.MAX],
51
+ },
52
+ {
53
+ value: CLAUDE_MODELS.OPUS,
54
+ label: "Claude Opus 4.8",
55
+ supportedEfforts: [
56
+ REASONING_EFFORT.LOW,
57
+ REASONING_EFFORT.MEDIUM,
58
+ REASONING_EFFORT.HIGH,
59
+ REASONING_EFFORT.XHIGH,
60
+ REASONING_EFFORT.MAX,
61
+ ],
62
+ },
63
+ {
64
+ value: CLAUDE_MODELS.OPUS_4_7,
65
+ label: "Claude Opus 4.7",
66
+ supportedEfforts: [
67
+ REASONING_EFFORT.LOW,
68
+ REASONING_EFFORT.MEDIUM,
69
+ REASONING_EFFORT.HIGH,
70
+ REASONING_EFFORT.XHIGH,
71
+ REASONING_EFFORT.MAX,
72
+ ],
73
+ },
34
74
  { value: CLAUDE_MODELS.HAIKU, label: "Claude Haiku 4.5" },
35
- { value: CLAUDE_MODELS.FABLE, label: "Claude Fable 5" },
75
+ {
76
+ value: CLAUDE_MODELS.FABLE,
77
+ label: "Claude Fable 5",
78
+ supportedEfforts: [
79
+ REASONING_EFFORT.LOW,
80
+ REASONING_EFFORT.MEDIUM,
81
+ REASONING_EFFORT.HIGH,
82
+ REASONING_EFFORT.XHIGH,
83
+ REASONING_EFFORT.MAX,
84
+ ],
85
+ },
36
86
  ];
37
87
  /** Default model for new agents */
38
88
  export const CLAUDE_DEFAULT_MODEL = CLAUDE_MODELS.SONNET;
@@ -205,6 +255,7 @@ export const AgentConfigSchema = z.object({
205
255
  workspace: z.string().min(1).optional(),
206
256
  persona: z.string().optional(),
207
257
  model: z.string().default(CLAUDE_DEFAULT_MODEL),
258
+ effort: ReasoningEffortSchema.optional(),
208
259
  permissionMode: PermissionModeSchema.default(PERMISSION_MODE.DEFAULT),
209
260
  settingSources: z.array(SettingSourceSchema).default([...DEFAULT_SETTING_SOURCES]),
210
261
  settingSourceConfig: SettingSourceConfigSchema.optional(),
@@ -238,6 +289,7 @@ export const CreateAgentInputSchema = z.object({
238
289
  workspace: z.string().min(1).optional(),
239
290
  persona: z.string().optional(),
240
291
  model: z.string().optional(),
292
+ effort: ReasoningEffortSchema.optional(),
241
293
  permissionMode: PermissionModeSchema.optional(),
242
294
  settingSources: z.array(SettingSourceSchema).optional(),
243
295
  settingSourceConfig: SettingSourceConfigInputSchema.optional(),
@@ -261,6 +313,7 @@ export const UpdateAgentInputSchema = z.object({
261
313
  workspace: z.string().optional(),
262
314
  persona: z.string().optional(),
263
315
  model: z.string().optional(),
316
+ effort: ReasoningEffortSchema.optional(),
264
317
  permissionMode: PermissionModeSchema.optional(),
265
318
  settingSources: z.array(SettingSourceSchema).optional(),
266
319
  settingSourceConfig: SettingSourceConfigInputSchema.optional(),
@@ -282,6 +335,7 @@ export const AgentConfigTemplateSchema = AgentConfigSchema.pick({
282
335
  workspace: true,
283
336
  persona: true,
284
337
  model: true,
338
+ effort: true,
285
339
  permissionMode: true,
286
340
  settingSources: true,
287
341
  availableTools: true,
package/dist/bootstrap.js CHANGED
@@ -11,6 +11,7 @@ import { SessionManager } from "./services/session/session-manager.js";
11
11
  import { CopilotClientManager } from "./services/copilot/copilot-client-manager.js";
12
12
  import { WsBroadcaster } from "./services/ws-broadcaster.js";
13
13
  import { ArtifactManager } from "./services/artifact/artifact-manager.js";
14
+ import { DocumentSearchService } from "./services/search/document-search-service.js";
14
15
  import { PlacesManager } from "./services/places/places-manager.js";
15
16
  import { setupWebSocket } from "./server/setup-websocket.js";
16
17
  import { registerArtifactRoutes } from "./routes/artifact.routes.js";
@@ -88,6 +89,8 @@ export async function bootstrap(options) {
88
89
  const feedManager = new SimplyFeedManager(storeProvider, folderFileProvider, crowScheduler);
89
90
  const artifactManager = new ArtifactManager(storeProvider, registry, circleManager);
90
91
  await artifactManager.initialize();
92
+ const documentSearchService = new DocumentSearchService(artifactManager, taskManager, registry, circleManager);
93
+ await documentSearchService.initialize();
91
94
  const placesManager = new PlacesManager();
92
95
  const connectorManager = new ConnectorManager(storeProvider, registry, crowScheduler);
93
96
  connectorManager.registerConnector(new GoogleConnector());
@@ -124,7 +127,7 @@ export async function bootstrap(options) {
124
127
  routineManager.addRoutine(discordRoutine);
125
128
  // Register built-in MCP servers
126
129
  mcpManager.registerMcpServer(getArtifactsMcpServerDefinition(artifactManager, registry, circleManager, sensorManager));
127
- mcpManager.registerMcpServer(getAgentsMcpServerDefinition(registry, runtimeManager, taskManager));
130
+ mcpManager.registerMcpServer(getAgentsMcpServerDefinition(registry, runtimeManager, taskManager, documentSearchService, circleManager));
128
131
  mcpManager.registerMcpServer(getTasksMcpServerDefinition(taskManager, circleManager, sensorManager));
129
132
  mcpManager.registerMcpServer(getFeedMcpServerDefinition(registry, feedManager, sensorManager, systemSettingsManager));
130
133
  mcpManager.registerMcpServer(getAudioMcpServerDefinition(registry, artifactManager));
@@ -40,4 +40,10 @@ export const REMINDERS_STORE_TABLE = "reminders";
40
40
  export const CLIENT_STORE_TABLE = "client";
41
41
  export const CLIENT_STORE_TIMEZONE_KEY = "timezone";
42
42
  export const CLIENT_STORE_LOCATION_KEY = "location";
43
+ /** Environment variable the Copilot runtime reads for its home directory. */
44
+ export const COPILOT_HOME_ENV = "COPILOT_HOME";
45
+ /** Default Copilot home directory name under the user's home when COPILOT_HOME is unset. */
46
+ export const COPILOT_DEFAULT_HOME_DIR_NAME = ".copilot";
47
+ /** Subdirectory under the Copilot home holding user-level skills. */
48
+ export const COPILOT_SKILLS_DIR_NAME = "skills";
43
49
  //# sourceMappingURL=constants.js.map
@@ -1,6 +1,7 @@
1
1
  import os from "node:os";
2
2
  import path from "node:path";
3
3
  import { fileURLToPath } from "node:url";
4
+ import { expandPath } from "../utils/fs-utils.js";
4
5
  const CONFIG_DIR = path.dirname(fileURLToPath(import.meta.url));
5
6
  const DIST_DIR = path.resolve(CONFIG_DIR, "..");
6
7
  const DEFAULT_STATIC_DIR = path.join(DIST_DIR, "public");
@@ -14,12 +15,6 @@ function getBoolean(key) {
14
15
  const value = process.env[key]?.trim().toLowerCase();
15
16
  return value === "true" || value === "1";
16
17
  }
17
- function expandPath(filePath) {
18
- if (filePath.startsWith("~")) {
19
- return path.join(os.homedir(), filePath.slice(1));
20
- }
21
- return path.resolve(filePath);
22
- }
23
18
  function readRequired(key) {
24
19
  const value = process.env[key]?.trim();
25
20
  if (!value) {
@@ -1,13 +1,15 @@
1
1
  import { defineMcpTool } from "../crow-mcp-manager-utils.js";
2
2
  import { getListAgentsToolConfig } from "./list-agents.js";
3
3
  import { getInvokeAgentToolConfig } from "./invoke-agent.js";
4
+ import { getSearchWorkspaceToolConfig } from "./search-workspace.js";
4
5
  export const CROW_AGENTS_MCP_SERVER_NAME = "crow-agents";
5
- export function getAgentsMcpServerDefinition(registry, runtimeManager, taskManager) {
6
+ export function getAgentsMcpServerDefinition(registry, runtimeManager, taskManager, documentSearchService, circleManager) {
6
7
  return {
7
8
  name: CROW_AGENTS_MCP_SERVER_NAME,
8
9
  getTools: (agentId) => [
9
10
  defineMcpTool(getListAgentsToolConfig(agentId, registry)),
10
11
  defineMcpTool(getInvokeAgentToolConfig(agentId, registry, runtimeManager, taskManager)),
12
+ defineMcpTool(getSearchWorkspaceToolConfig(agentId, documentSearchService, taskManager, circleManager)),
11
13
  ],
12
14
  };
13
15
  }
@@ -56,6 +56,9 @@ async function createTask(taskManager, sourceAgentConfig, targetAgentConfig, tas
56
56
  const ownerSource = { sourceType: AGENT_TASK_SOURCE_TYPE.AGENT, agentId: targetAgentConfig.id };
57
57
  // agent visibility enforcement in task manager
58
58
  await taskManager.addTask(task, originateSource, ownerSource, parentTaskId);
59
- return `Task sent to agent "${targetAgentConfig.name}" (${targetAgentConfig.id}). The agent is working on it and you will be notified when the result is ready.`;
59
+ return [
60
+ `Task sent to agent "${targetAgentConfig.name}" (${targetAgentConfig.id}). The agent is working on it and you will be notified when the result is ready.`,
61
+ "If you need this result to answer, wait for it before responding - do not answer from your own knowledge in the meantime, and do not reply in fragments as each delegated result arrives. Once all outstanding results are in, consolidate them into a single final response.",
62
+ ].join(" ");
60
63
  }
61
64
  //# sourceMappingURL=invoke-agent.js.map
@@ -0,0 +1,104 @@
1
+ import { z } from "zod";
2
+ import { ENTITY_TYPE } from "../../_shared/index.js";
3
+ import { DATA_SOURCE_TYPE, } from "../../services/search/document-search-service.types.js";
4
+ import { applyPagination, formatPaginationHeader, getErrorToolResult, textToolResult } from "../tool-utils.js";
5
+ const DEFAULT_SEARCH_LIMIT = 25;
6
+ const MAX_SEARCH_LIMIT = 200;
7
+ export const SEARCH_WORKSPACE_TOOL_NAME = "search_workspace";
8
+ const SEARCH_SOURCE_VALUES = [DATA_SOURCE_TYPE.ARTIFACT, DATA_SOURCE_TYPE.CIRCLE_ARTIFACT, DATA_SOURCE_TYPE.TASK];
9
+ export function getSearchWorkspaceToolConfig(agentId, documentSearchService, taskManager, circleManager) {
10
+ const inputSchema = {
11
+ query: z
12
+ .string()
13
+ .min(1)
14
+ .describe("Full-text query matched against artifact filenames and contents, task titles and results, and tags. Supports fuzzy and prefix matching."),
15
+ sources: z
16
+ .array(z.enum(SEARCH_SOURCE_VALUES))
17
+ .min(1)
18
+ .optional()
19
+ .describe(`Restrict to specific sources. Values: ${SEARCH_SOURCE_VALUES.join(", ")}. Omit to search all.`),
20
+ limit: z
21
+ .number()
22
+ .optional()
23
+ .describe(`Maximum number of hits to return per page. Default ${DEFAULT_SEARCH_LIMIT}.`),
24
+ skip: z.number().optional().describe("Number of hits to skip for pagination."),
25
+ };
26
+ const handler = async ({ query, sources, limit, skip }) => {
27
+ try {
28
+ const filter = buildAccessFilter(agentId, taskManager, circleManager, sources);
29
+ const hits = documentSearchService.search(query, { filter, limit: MAX_SEARCH_LIMIT });
30
+ if (hits.length === 0) {
31
+ return textToolResult([`No matches found for query "${query}".`]);
32
+ }
33
+ const pagination = applyPagination(hits, limit || DEFAULT_SEARCH_LIMIT, skip);
34
+ const header = formatPaginationHeader(`Workspace search for query "${query}"`, pagination);
35
+ return textToolResult(header.concat("", renderHits(pagination.items)));
36
+ }
37
+ catch (error) {
38
+ return getErrorToolResult(error, "Failed to search workspace.");
39
+ }
40
+ };
41
+ const config = {
42
+ name: SEARCH_WORKSPACE_TOOL_NAME,
43
+ description: "Full-text search across your own artifacts, artifacts in circles you directly belong to, and the results of tasks you own. Supports fuzzy and prefix matching, ranked by relevance. Results are grouped by source; open a hit with the read tool named in its section.",
44
+ inputSchema,
45
+ handler,
46
+ };
47
+ return config;
48
+ }
49
+ /**
50
+ * Build the predicate that limits results to what the agent may see: its own artifacts, artifacts
51
+ * in circles it directly belongs to, and tasks it owns. An optional `sources` list narrows further.
52
+ */
53
+ function buildAccessFilter(agentId, taskManager, circleManager, sources) {
54
+ const memberCircleIds = new Set(circleManager.getCirclesForEntity(agentId, ENTITY_TYPE.AGENT).map((circle) => circle.id));
55
+ const ownedTaskIds = new Set(taskManager.getTasksByOwner(agentId).map((task) => task.id));
56
+ const allowedSources = sources ? new Set(sources) : undefined;
57
+ return (ref) => {
58
+ if (allowedSources && !allowedSources.has(ref.dataSourceType)) {
59
+ return false;
60
+ }
61
+ switch (ref.dataSourceType) {
62
+ case DATA_SOURCE_TYPE.ARTIFACT:
63
+ return ref.provenanceId === agentId;
64
+ case DATA_SOURCE_TYPE.CIRCLE_ARTIFACT:
65
+ return memberCircleIds.has(ref.provenanceId);
66
+ case DATA_SOURCE_TYPE.TASK:
67
+ return ownedTaskIds.has(ref.documentId);
68
+ default:
69
+ return false;
70
+ }
71
+ };
72
+ }
73
+ function renderHits(hits) {
74
+ const artifactHits = hits.filter((hit) => hit.dataSourceType !== DATA_SOURCE_TYPE.TASK);
75
+ const taskHits = hits.filter((hit) => hit.dataSourceType === DATA_SOURCE_TYPE.TASK);
76
+ const sections = [];
77
+ if (artifactHits.length > 0) {
78
+ sections.push([
79
+ "Artifacts:",
80
+ "[Read with read_artifact, or read_circle_artifact for hits showing a circleId]",
81
+ ...artifactHits.map(renderArtifactHit),
82
+ ]);
83
+ }
84
+ if (taskHits.length > 0) {
85
+ sections.push(["Tasks:", "[Read with get_task_result]", ...taskHits.map(renderTaskHit)]);
86
+ }
87
+ const lines = [];
88
+ for (const section of sections) {
89
+ if (lines.length > 0) {
90
+ lines.push("");
91
+ }
92
+ lines.push(...section);
93
+ }
94
+ return lines;
95
+ }
96
+ function renderArtifactHit(hit) {
97
+ const circle = hit.dataSourceType === DATA_SOURCE_TYPE.CIRCLE_ARTIFACT ? ` circleId: ${hit.provenanceId}` : "";
98
+ const tags = hit.tags?.length ? ` tags: [${hit.tags.join(", ")}]` : "";
99
+ return `- Filename: ${hit.title}${circle}${tags}`;
100
+ }
101
+ function renderTaskHit(hit) {
102
+ return `- Id: ${hit.documentId} Title: ${hit.title}`;
103
+ }
104
+ //# sourceMappingURL=search-workspace.js.map
@@ -0,0 +1 @@
1
+ import{n as e,t}from"./path-BWPyau1x.js";import{a as n,c as r,d as i,f as a,i as o,l as s,m as c,n as l,o as u,p as d,r as f,u as p}from"./dist-DFtMN8Vu.js";function m(e){return e.innerRadius}function h(e){return e.outerRadius}function g(e){return e.startAngle}function _(e){return e.endAngle}function v(e){return e&&e.padAngle}function y(e,t,n,r,i,a,o,s){var c=n-e,l=r-t,u=o-i,d=s-a,f=d*c-u*l;if(!(f*f<1e-12))return f=(u*(t-a)-d*(e-i))/f,[e+f*c,t+f*l]}function b(e,t,n,r,i,a,o){var c=e-n,l=t-r,u=(o?a:-a)/d(c*c+l*l),f=u*l,p=-u*c,m=e+f,h=t+p,g=n+f,_=r+p,v=(m+g)/2,y=(h+_)/2,b=g-m,x=_-h,S=b*b+x*x,C=i-a,w=m*_-g*h,T=(x<0?-1:1)*d(s(0,C*C*S-w*w)),E=(w*x-b*T)/S,D=(-w*b-x*T)/S,O=(w*x+b*T)/S,k=(-w*b+x*T)/S,A=E-v,j=D-y,M=O-v,N=k-y;return A*A+j*j>M*M+N*N&&(E=O,D=k),{cx:E,cy:D,x01:-f,y01:-p,x11:E*(i/C-1),y11:D*(i/C-1)}}function x(){var s=m,x=h,S=e(0),C=null,w=g,T=_,E=v,D=null,O=t(k);function k(){var e,t,m=+s.apply(this,arguments),h=+x.apply(this,arguments),g=w.apply(this,arguments)-r,_=T.apply(this,arguments)-r,v=l(_-g),k=_>g;if(D||=e=O(),h<m&&(t=h,h=m,m=t),!(h>1e-12))D.moveTo(0,0);else if(v>c-1e-12)D.moveTo(h*u(g),h*a(g)),D.arc(0,0,h,g,_,!k),m>1e-12&&(D.moveTo(m*u(_),m*a(_)),D.arc(0,0,m,_,g,k));else{var A=g,j=_,M=g,N=_,P=v,F=v,I=E.apply(this,arguments)/2,L=I>1e-12&&(C?+C.apply(this,arguments):d(m*m+h*h)),R=p(l(h-m)/2,+S.apply(this,arguments)),z=R,B=R,V,H;if(L>1e-12){var U=o(L/m*a(I)),W=o(L/h*a(I));(P-=U*2)>1e-12?(U*=k?1:-1,M+=U,N-=U):(P=0,M=N=(g+_)/2),(F-=W*2)>1e-12?(W*=k?1:-1,A+=W,j-=W):(F=0,A=j=(g+_)/2)}var G=h*u(A),K=h*a(A),q=m*u(N),J=m*a(N);if(R>1e-12){var Y=h*u(j),X=h*a(j),Z=m*u(M),Q=m*a(M),$;if(v<i)if($=y(G,K,Z,Q,Y,X,q,J)){var ee=G-$[0],te=K-$[1],ne=Y-$[0],re=X-$[1],ie=1/a(f((ee*ne+te*re)/(d(ee*ee+te*te)*d(ne*ne+re*re)))/2),ae=d($[0]*$[0]+$[1]*$[1]);z=p(R,(m-ae)/(ie-1)),B=p(R,(h-ae)/(ie+1))}else z=B=0}F>1e-12?B>1e-12?(V=b(Z,Q,G,K,h,B,k),H=b(Y,X,q,J,h,B,k),D.moveTo(V.cx+V.x01,V.cy+V.y01),B<R?D.arc(V.cx,V.cy,B,n(V.y01,V.x01),n(H.y01,H.x01),!k):(D.arc(V.cx,V.cy,B,n(V.y01,V.x01),n(V.y11,V.x11),!k),D.arc(0,0,h,n(V.cy+V.y11,V.cx+V.x11),n(H.cy+H.y11,H.cx+H.x11),!k),D.arc(H.cx,H.cy,B,n(H.y11,H.x11),n(H.y01,H.x01),!k))):(D.moveTo(G,K),D.arc(0,0,h,A,j,!k)):D.moveTo(G,K),!(m>1e-12)||!(P>1e-12)?D.lineTo(q,J):z>1e-12?(V=b(q,J,Y,X,m,-z,k),H=b(G,K,Z,Q,m,-z,k),D.lineTo(V.cx+V.x01,V.cy+V.y01),z<R?D.arc(V.cx,V.cy,z,n(V.y01,V.x01),n(H.y01,H.x01),!k):(D.arc(V.cx,V.cy,z,n(V.y01,V.x01),n(V.y11,V.x11),!k),D.arc(0,0,m,n(V.cy+V.y11,V.cx+V.x11),n(H.cy+H.y11,H.cx+H.x11),k),D.arc(H.cx,H.cy,z,n(H.y11,H.x11),n(H.y01,H.x01),!k))):D.arc(0,0,m,N,M,k)}if(D.closePath(),e)return D=null,e+``||null}return k.centroid=function(){var e=(+s.apply(this,arguments)+ +x.apply(this,arguments))/2,t=(+w.apply(this,arguments)+ +T.apply(this,arguments))/2-i/2;return[u(t)*e,a(t)*e]},k.innerRadius=function(t){return arguments.length?(s=typeof t==`function`?t:e(+t),k):s},k.outerRadius=function(t){return arguments.length?(x=typeof t==`function`?t:e(+t),k):x},k.cornerRadius=function(t){return arguments.length?(S=typeof t==`function`?t:e(+t),k):S},k.padRadius=function(t){return arguments.length?(C=t==null?null:typeof t==`function`?t:e(+t),k):C},k.startAngle=function(t){return arguments.length?(w=typeof t==`function`?t:e(+t),k):w},k.endAngle=function(t){return arguments.length?(T=typeof t==`function`?t:e(+t),k):T},k.padAngle=function(t){return arguments.length?(E=typeof t==`function`?t:e(+t),k):E},k.context=function(e){return arguments.length?(D=e??null,k):D},k}export{x as t};
@@ -0,0 +1 @@
1
+ import"./chunk-NNHCCRGN-DlpIbxXb.js";import{x as e}from"./mermaid-parser.core-BdOZ0AFQ.js";export{e as createArchitectureServices};