crow-central-agency 0.26.3 → 0.26.5

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 (42) hide show
  1. package/dist/_shared/index.js +2 -2
  2. package/dist/_shared/schemas/agent.schema.js +58 -4
  3. package/dist/_shared/schemas/artifact.schema.js +8 -0
  4. package/dist/mcp/artifacts/artifacts-mcp-server.js +2 -0
  5. package/dist/mcp/artifacts/move-artifact.js +77 -0
  6. package/dist/public/assets/{architectureDiagram-3BPJPVTR-D9eaZGLN.js → architectureDiagram-3BPJPVTR-D4gq8Wb9.js} +1 -1
  7. package/dist/public/assets/{chunk-727SXJPM-BypqFsHB.js → chunk-727SXJPM-CmnVWGyO.js} +1 -1
  8. package/dist/public/assets/{chunk-AQP2D5EJ-DrynAvvL.js → chunk-AQP2D5EJ-BBWkGV1t.js} +1 -1
  9. package/dist/public/assets/{classDiagram-v2-Q7XG4LA2-BLdtoNh2.js → classDiagram-4FO5ZUOK-DfXxvMeX.js} +1 -1
  10. package/dist/public/assets/{classDiagram-4FO5ZUOK-BLdtoNh2.js → classDiagram-v2-Q7XG4LA2-DfXxvMeX.js} +1 -1
  11. package/dist/public/assets/{dagre-BM42HDAG-BFYx57Wz.js → dagre-BM42HDAG-DpSouqdY.js} +1 -1
  12. package/dist/public/assets/{diagram-2AECGRRQ-IYSHkW-2.js → diagram-2AECGRRQ-CJ4mwAFH.js} +1 -1
  13. package/dist/public/assets/{diagram-5GNKFQAL-UpYSKKej.js → diagram-5GNKFQAL-CwX7Xrh6.js} +1 -1
  14. package/dist/public/assets/{diagram-LMA3HP47-DTqAJENa.js → diagram-LMA3HP47-B-wCEVXf.js} +1 -1
  15. package/dist/public/assets/{diagram-OG6HWLK6-BWcvJIuP.js → diagram-OG6HWLK6-hdADVjh2.js} +1 -1
  16. package/dist/public/assets/{erDiagram-TEJ5UH35-BVEd8xBX.js → erDiagram-TEJ5UH35-H0BpYtyr.js} +1 -1
  17. package/dist/public/assets/{flowDiagram-I6XJVG4X-D9GrCXY9.js → flowDiagram-I6XJVG4X-CjWJXyC4.js} +1 -1
  18. package/dist/public/assets/index-B4mAdsYc.js +479 -0
  19. package/dist/public/assets/index-C9uHckFR.css +1 -0
  20. package/dist/public/assets/{infoDiagram-5YYISTIA-BkyHKMEu.js → infoDiagram-5YYISTIA-CqB6BNnQ.js} +1 -1
  21. package/dist/public/assets/{ishikawaDiagram-YF4QCWOH-BlYTG6NZ.js → ishikawaDiagram-YF4QCWOH-YaxwBlxO.js} +1 -1
  22. package/dist/public/assets/{kanban-definition-UN3LZRKU-DSzr_MHX.js → kanban-definition-UN3LZRKU-BzR9eb3K.js} +1 -1
  23. package/dist/public/assets/{mindmap-definition-RKZ34NQL-CDanssiL.js → mindmap-definition-RKZ34NQL-CndqgpJa.js} +1 -1
  24. package/dist/public/assets/{pieDiagram-4H26LBE5-DvTobos2.js → pieDiagram-4H26LBE5-CuGkjlbL.js} +1 -1
  25. package/dist/public/assets/{requirementDiagram-4Y6WPE33-C2TLOjB5.js → requirementDiagram-4Y6WPE33-CefmH72B.js} +1 -1
  26. package/dist/public/assets/{sequenceDiagram-3UESZ5HK-gfcTwLo3.js → sequenceDiagram-3UESZ5HK-B98RLt0W.js} +1 -1
  27. package/dist/public/assets/{stateDiagram-AJRCARHV-BG4zEDn1.js → stateDiagram-AJRCARHV-CIzC_iBb.js} +1 -1
  28. package/dist/public/assets/{stateDiagram-v2-BHNVJYJU-Dd6Qk2n9.js → stateDiagram-v2-BHNVJYJU-Bx4RQKL8.js} +1 -1
  29. package/dist/public/assets/{timeline-definition-PNZ67QCA-Ci2qPX8l.js → timeline-definition-PNZ67QCA-CdHJHFsN.js} +1 -1
  30. package/dist/public/assets/{vennDiagram-CIIHVFJN-9CSWWKTm.js → vennDiagram-CIIHVFJN-BQW-KKWz.js} +1 -1
  31. package/dist/public/assets/{wardleyDiagram-YWT4CUSO-CEXKT4ed.js → wardleyDiagram-YWT4CUSO-3McUDNO_.js} +1 -1
  32. package/dist/public/assets/{xychartDiagram-2RQKCTM6-xqxLFQu_.js → xychartDiagram-2RQKCTM6-D1-Y-k5g.js} +1 -1
  33. package/dist/public/index.html +2 -2
  34. package/dist/routes/artifact.routes.js +30 -1
  35. package/dist/routines/inter-agent-task-routine.js +2 -1
  36. package/dist/runner/claude-code-agent-runner.js +11 -4
  37. package/dist/runner/github-copilot-agent-runner.js +40 -2
  38. package/dist/services/artifact/artifact-manager.js +28 -1
  39. package/dist/services/copilot/copilot-client-manager.js +22 -3
  40. package/package.json +1 -1
  41. package/dist/public/assets/index-BD39KHS1.js +0 -479
  42. package/dist/public/assets/index-Cw0PF_eX.css +0 -1
@@ -1,11 +1,11 @@
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";
5
5
  export { ClientMessageSchema, ServerMessageSchema, SendMessageSchema, InjectMessageSchema, PermissionResponseWsSchema, AgentTextWsMessageSchema, AgentActivityWsMessageSchema, AgentResultWsMessageSchema, AgentStatusWsMessageSchema, AgentCreatedWsMessageSchema, AgentUpdatedWsMessageSchema, AgentDeletedWsMessageSchema, AgentUsageWsMessageSchema, PermissionRequestWsMessageSchema, PermissionCancelledWsMessageSchema, ErrorWsMessageSchema, AgentMessageWsMessageSchema, AgentToolProgressWsMessageSchema, TaskAddedWsMessageSchema, TaskUpdatedWsMessageSchema, TaskAssignedWsMessageSchema, TaskStateChangedWsMessageSchema, TaskDeletedWsMessageSchema, CircleCreatedWsMessageSchema, CircleUpdatedWsMessageSchema, CircleDeletedWsMessageSchema, RelationshipCreatedWsMessageSchema, RelationshipDeletedWsMessageSchema, CLIENT_MESSAGE_TYPE, SERVER_MESSAGE_TYPE, } from "./schemas/websocket.schema.js";
6
6
  export { PERMISSION_DECISION, PermissionRequestSchema, PermissionResponseSchema, } from "./schemas/permission.schema.js";
7
7
  export { AgentMessageSchema, MessageAnnotationSchema, AGENT_MESSAGE_ROLE, AGENT_MESSAGE_TYPE, } from "./schemas/agent-message.schema.js";
8
- export { ARTIFACT_TYPE, ARTIFACT_CONTENT_TYPE, ArtifactTypeSchema, ArtifactContentTypeSchema, ArtifactMetadataSchema, } from "./schemas/artifact.schema.js";
8
+ export { ARTIFACT_TYPE, ARTIFACT_CONTENT_TYPE, ArtifactTypeSchema, ArtifactContentTypeSchema, ArtifactMetadataSchema, ArtifactTagsUpdateSchema, } from "./schemas/artifact.schema.js";
9
9
  export { AGENT_TASK_STATE, AGENT_TASK_SOURCE_TYPE, AgentTaskStateSchema, AgentTaskSourceSchema, AgentTaskItemSchema, AgentTaskDatabaseSchema, CreateTaskInputSchema, UpdateTaskInputSchema, UpdateTaskStateInputSchema, AssignTaskInputSchema, } from "./schemas/agent-task.schema.js";
10
10
  export { MCP_CONFIG_TYPE, InternalMcpConfigSchema, McpServerConfigSchema, CreateMcpConfigInputSchema, UpdateMcpConfigInputSchema, } from "./schemas/mcp-config.schema.js";
11
11
  export { SensorInfoSchema } from "./schemas/sensor.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,
@@ -48,4 +48,12 @@ export const ArtifactMetadataSchema = z.object({
48
48
  updatedTimestamp: z.number(),
49
49
  createdBy: AgentTaskSourceSchema,
50
50
  });
51
+ /**
52
+ * Request body for updating an artifact's tags. Applies a remove-then-add delta to the
53
+ * current tag set; at least one of addTags/removeTags must be non-empty.
54
+ */
55
+ export const ArtifactTagsUpdateSchema = z.object({
56
+ addTags: z.array(z.string()).optional(),
57
+ removeTags: z.array(z.string()).optional(),
58
+ });
51
59
  //# sourceMappingURL=artifact.schema.js.map
@@ -11,6 +11,7 @@ import { getReadCircleArtifactToolConfig } from "./read-circle-artifact.js";
11
11
  import { getListCircleArtifactsToolConfig } from "./list-circle-artifacts.js";
12
12
  import { getDeleteCircleArtifactToolConfig } from "./delete-circle-artifact.js";
13
13
  import { getFindContentInCircleArtifactToolConfig } from "./find-content-in-circle-artifact.js";
14
+ import { getMoveArtifactToolConfig } from "./move-artifact.js";
14
15
  export const ARTIFACTS_MCP_SERVER_NAME = "crow-artifacts";
15
16
  export function getArtifactsMcpServerDefinition(artifactManager, registry, circleManager, sensorManager) {
16
17
  return {
@@ -28,6 +29,7 @@ export function getArtifactsMcpServerDefinition(artifactManager, registry, circl
28
29
  defineMcpTool(getListCircleArtifactsToolConfig(agentId, artifactManager, sensorManager)),
29
30
  defineMcpTool(getDeleteCircleArtifactToolConfig(agentId, artifactManager)),
30
31
  defineMcpTool(getFindContentInCircleArtifactToolConfig(agentId, artifactManager)),
32
+ defineMcpTool(getMoveArtifactToolConfig(agentId, artifactManager)),
31
33
  ],
32
34
  };
33
35
  }
@@ -0,0 +1,77 @@
1
+ import { z } from "zod";
2
+ import { AGENT_TASK_SOURCE_TYPE, ENTITY_TYPE } from "../../_shared/index.js";
3
+ import { getErrorToolResult, textToolResult } from "../tool-utils.js";
4
+ export const MOVE_ARTIFACT_TOOL_NAME = "move_artifact";
5
+ export function getMoveArtifactToolConfig(agentId, artifactManager) {
6
+ const inputSchema = {
7
+ filename: z
8
+ .string()
9
+ .describe("Exact source filename to move, as returned by list_artifacts or list_circle_artifacts."),
10
+ source_circle_id: z
11
+ .string()
12
+ .optional()
13
+ .describe("Circle the artifact currently lives in. Omit to move from your own artifacts folder."),
14
+ destination_circle_id: z
15
+ .string()
16
+ .optional()
17
+ .describe("Circle to move the artifact into. Omit to move into your own artifacts folder."),
18
+ destination_filename: z
19
+ .string()
20
+ .optional()
21
+ .describe("Filename at the destination. Defaults to the source filename."),
22
+ };
23
+ const handler = async ({ filename, source_circle_id, destination_circle_id, destination_filename, }) => {
24
+ const source = source_circle_id
25
+ ? { entityType: ENTITY_TYPE.AGENT_CIRCLE, entityId: source_circle_id }
26
+ : { entityType: ENTITY_TYPE.AGENT, entityId: agentId };
27
+ const destination = destination_circle_id
28
+ ? { entityType: ENTITY_TYPE.AGENT_CIRCLE, entityId: destination_circle_id }
29
+ : { entityType: ENTITY_TYPE.AGENT, entityId: agentId };
30
+ if (source.entityType === destination.entityType && source.entityId === destination.entityId) {
31
+ return textToolResult(["Error: source and destination are the same location; nothing to move."], true);
32
+ }
33
+ if (source_circle_id && !artifactManager.isDirectCircleMember(source_circle_id, agentId)) {
34
+ return textToolResult(["You are not a direct member of the source circle."], true);
35
+ }
36
+ if (destination_circle_id && !artifactManager.isDirectCircleMember(destination_circle_id, agentId)) {
37
+ return textToolResult(["You are not a direct member of the destination circle."], true);
38
+ }
39
+ try {
40
+ // Source-removal author guard — mirror the delete tools so move can't bypass them.
41
+ const sourceMetadata = source_circle_id
42
+ ? await artifactManager.getCircleArtifactMetadata(source_circle_id, filename)
43
+ : await artifactManager.getArtifactMetadata(agentId, filename);
44
+ const { createdBy } = sourceMetadata;
45
+ const canRemoveSource = source_circle_id
46
+ ? createdBy.sourceType === AGENT_TASK_SOURCE_TYPE.AGENT
47
+ : createdBy.sourceType === AGENT_TASK_SOURCE_TYPE.AGENT && createdBy.agentId === agentId;
48
+ if (!canRemoveSource) {
49
+ return textToolResult([`Error: cannot move ${filename} - it is not yours to move (created by: ${createdBy.sourceType}).`], true);
50
+ }
51
+ const metadata = await artifactManager.moveArtifact(source, destination, filename, {
52
+ destinationFilename: destination_filename,
53
+ movedBy: { sourceType: AGENT_TASK_SOURCE_TYPE.AGENT, agentId },
54
+ });
55
+ const sourceLabel = source_circle_id ? `circle ${source_circle_id}` : "your artifacts";
56
+ const destinationLabel = destination_circle_id ? `circle ${destination_circle_id}` : "your artifacts";
57
+ const requestedFilename = destination_filename ?? sourceMetadata.filename;
58
+ const normalizedNote = metadata.filename !== requestedFilename
59
+ ? ` (normalized from "${requestedFilename}" - use this exact filename on subsequent reads)`
60
+ : "";
61
+ return textToolResult([
62
+ `Moved ${filename} from ${sourceLabel} to ${destinationLabel} as ${metadata.filename}${normalizedNote}`,
63
+ ]);
64
+ }
65
+ catch (error) {
66
+ return getErrorToolResult(error, "Failed to move artifact.");
67
+ }
68
+ };
69
+ const config = {
70
+ name: MOVE_ARTIFACT_TOOL_NAME,
71
+ description: "Move one of your artifacts between your own folder and a circle you are a direct member of (own↔circle, or circle↔circle). Omit source_circle_id/destination_circle_id to use your own folder. You can only move artifacts you authored from your own folder, or agent-authored artifacts from a circle. Fails if an artifact with the destination name already exists; move it under a different destination_filename or delete the existing one first.",
72
+ inputSchema,
73
+ handler,
74
+ };
75
+ return config;
76
+ }
77
+ //# sourceMappingURL=move-artifact.js.map