agent-orchestrator-mcp-server 0.4.5 → 0.4.7

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agent-orchestrator-mcp-server",
3
- "version": "0.4.5",
3
+ "version": "0.4.7",
4
4
  "description": "Local implementation of agent-orchestrator MCP server",
5
5
  "main": "build/index.js",
6
6
  "type": "module",
@@ -124,6 +124,7 @@ function formatResponse(configs, fromCache) {
124
124
  lines.push('- Use `name` values from **MCP Servers** in `start_session` `mcp_servers` parameter');
125
125
  lines.push('- Use `git_root` from **Agent Roots** to start sessions with preconfigured defaults');
126
126
  lines.push('- If an **Agent Root** has a `default_subdirectory`, pass it as `subdirectory` in `start_session` — do not set `subdirectory` to arbitrary internal paths');
127
+ lines.push("- Pass `default_skills` from **Agent Roots** in the `skills` parameter of `start_session` — sessions won't have skills loaded unless you explicitly pass them");
127
128
  lines.push('- Use `id` values from **Stop Conditions** in `start_session` `stop_condition` parameter');
128
129
  if (fromCache) {
129
130
  lines.push('');
@@ -46,7 +46,7 @@ export declare function getSessionTool(_server: Server, clientFactory: () => IAg
46
46
  };
47
47
  include_transcript: {
48
48
  type: string;
49
- description: "Include the full transcript of the session. Default: false. Set to true for complete conversation history.";
49
+ description: "Include the full transcript inline. Default: false. WARNING: can be very large and may overwhelm your context window. When false, the transcript file path is returned instead so you can grep/tail it efficiently (see tool description for tips).";
50
50
  };
51
51
  transcript_format: {
52
52
  type: string;
@@ -1,7 +1,7 @@
1
1
  import { z } from 'zod';
2
2
  const PARAM_DESCRIPTIONS = {
3
3
  id: 'Session ID (numeric) or slug (string). Examples: "1", "fix-auth-bug-20250115"',
4
- include_transcript: 'Include the full transcript of the session. Default: false. Set to true for complete conversation history.',
4
+ include_transcript: 'Include the full transcript inline. Default: false. WARNING: can be very large and may overwhelm your context window. When false, the transcript file path is returned instead so you can grep/tail it efficiently (see tool description for tips).',
5
5
  transcript_format: 'Format for transcript retrieval: "text" (human-readable) or "json" (structured). Only used when include_transcript is true. When specified, fetches transcript via dedicated endpoint instead of inline.',
6
6
  include_logs: 'Include logs for the session. Default: false. Use logs_page and logs_per_page for pagination.',
7
7
  logs_page: 'Page number for logs pagination. Default: 1',
@@ -35,10 +35,12 @@ export const GetSessionSchema = z.object({
35
35
  const TOOL_DESCRIPTION = `Get detailed information about a specific agent session.
36
36
 
37
37
  **Returns:** Complete session details including status, configuration, metadata, and optionally:
38
- - Full session transcript
38
+ - Full session transcript (WARNING: can be very large)
39
39
  - Session logs (paginated)
40
40
  - Subagent transcripts (paginated)
41
41
 
42
+ **Transcript access:** By default (include_transcript=false), the response includes the transcript file path instead of the full content. You can then efficiently grep, tail, or read specific sections of that file — for example, read the last ~100 lines to see the most recent messages. This avoids overwhelming your context window with massive transcripts.
43
+
42
44
  **Use cases:**
43
45
  - View detailed session information
44
46
  - Check session status and progress (use transcript to determine if a "needs_input" session has completed its task or needs follow-up)
@@ -114,6 +116,14 @@ function formatSessionDetails(session, includeTranscript) {
114
116
  lines.push(session.transcript);
115
117
  lines.push('```');
116
118
  }
119
+ // When transcript is not included inline, provide file path hints for efficient access
120
+ if (!includeTranscript && session.session_id) {
121
+ lines.push('');
122
+ lines.push('### Transcript File');
123
+ lines.push(`- **Path pattern:** \`~/.claude/projects/*/${session.session_id}.jsonl\``);
124
+ lines.push(`- **Find exact path:** \`ls ~/.claude/projects/*/${session.session_id}.jsonl\``);
125
+ lines.push('- **Tip:** Once you have the exact path, read the last ~100 lines to see the most recent messages, or grep for specific keywords. This avoids loading the entire transcript into your context window.');
126
+ }
117
127
  return lines.join('\n');
118
128
  }
119
129
  function formatLogs(logs, pagination) {
@@ -12,6 +12,7 @@ export declare const StartSessionSchema: z.ZodObject<{
12
12
  stop_condition: z.ZodOptional<z.ZodString>;
13
13
  execution_provider: z.ZodOptional<z.ZodEnum<["local_filesystem", "remote_sandbox"]>>;
14
14
  mcp_servers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
15
+ skills: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
15
16
  config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
16
17
  custom_metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
17
18
  }, "strip", z.ZodTypeAny, {
@@ -25,6 +26,7 @@ export declare const StartSessionSchema: z.ZodObject<{
25
26
  slug?: string | undefined;
26
27
  stop_condition?: string | undefined;
27
28
  execution_provider?: "local_filesystem" | "remote_sandbox" | undefined;
29
+ skills?: string[] | undefined;
28
30
  config?: Record<string, unknown> | undefined;
29
31
  custom_metadata?: Record<string, unknown> | undefined;
30
32
  }, {
@@ -38,6 +40,7 @@ export declare const StartSessionSchema: z.ZodObject<{
38
40
  slug?: string | undefined;
39
41
  stop_condition?: string | undefined;
40
42
  execution_provider?: "local_filesystem" | "remote_sandbox" | undefined;
43
+ skills?: string[] | undefined;
41
44
  config?: Record<string, unknown> | undefined;
42
45
  custom_metadata?: Record<string, unknown> | undefined;
43
46
  }>;
@@ -91,6 +94,13 @@ export declare function startSessionTool(_server: Server, clientFactory: () => I
91
94
  };
92
95
  description: "List of MCP server names to enable for this session. Example: [\"github-development\", \"slack\"]";
93
96
  };
97
+ skills: {
98
+ type: string;
99
+ items: {
100
+ type: string;
101
+ };
102
+ description: "List of skill names to enable for this session. Example: [\"discovery-classify\", \"publish-and-pr\"]";
103
+ };
94
104
  config: {
95
105
  type: string;
96
106
  description: "Additional configuration as a JSON object.";
@@ -21,6 +21,7 @@ const PARAM_DESCRIPTIONS = {
21
21
  stop_condition: 'Stop condition ID from get_configs (e.g. "pr_merged"). The description is automatically resolved and passed to the agent as context.',
22
22
  execution_provider: 'Execution environment. Options: "local_filesystem" (runs locally), "remote_sandbox" (runs in isolated sandbox). Default: "local_filesystem"',
23
23
  mcp_servers: 'List of MCP server names to enable for this session. Example: ["github-development", "slack"]',
24
+ skills: 'List of skill names to enable for this session. Example: ["discovery-classify", "publish-and-pr"]',
24
25
  config: 'Additional configuration as a JSON object.',
25
26
  custom_metadata: 'User-defined metadata as a JSON object. Useful for tracking tickets, projects, etc.',
26
27
  };
@@ -38,6 +39,7 @@ export const StartSessionSchema = z.object({
38
39
  .optional()
39
40
  .describe(PARAM_DESCRIPTIONS.execution_provider),
40
41
  mcp_servers: z.array(z.string()).optional().describe(PARAM_DESCRIPTIONS.mcp_servers),
42
+ skills: z.array(z.string()).optional().describe(PARAM_DESCRIPTIONS.skills),
41
43
  config: z.record(z.unknown()).optional().describe(PARAM_DESCRIPTIONS.config),
42
44
  custom_metadata: z.record(z.unknown()).optional().describe(PARAM_DESCRIPTIONS.custom_metadata),
43
45
  });
@@ -51,10 +53,12 @@ const TOOL_DESCRIPTION = `Start a new agent session in the Agent Orchestrator.
51
53
  - If a prompt is provided, the agent job is automatically queued to start
52
54
  - If no prompt is provided, creates a clone-only session that can be started later with action_session
53
55
 
56
+ **Defaults from Agent Roots:** When starting a session that matches a preconfigured agent root (from \`get_configs\`), the agent root defines \`default_mcp_servers\` and \`default_skills\`. In most cases, you should pass these defaults through — omitting them means the session won't have MCP servers or skills configured. You can reduce the set (e.g., drop an MCP server you don't need), but when \`ALLOWED_AGENT_ROOTS\` is active, you cannot add servers beyond the defaults. Skills are not constrained — you can augment with additional skills as needed. As a rule of thumb: always pass the defaults unless you have a specific reason to remove something.
57
+
54
58
  **Use cases:**
55
59
  - Start a new agent task on a repository
56
60
  - Create a session to work on a specific branch
57
- - Set up an agent with specific MCP servers enabled
61
+ - Set up an agent with specific MCP servers and skills enabled
58
62
  - Create a session with custom metadata for tracking`;
59
63
  export function startSessionTool(_server, clientFactory) {
60
64
  return {
@@ -105,6 +109,11 @@ export function startSessionTool(_server, clientFactory) {
105
109
  items: { type: 'string' },
106
110
  description: PARAM_DESCRIPTIONS.mcp_servers,
107
111
  },
112
+ skills: {
113
+ type: 'array',
114
+ items: { type: 'string' },
115
+ description: PARAM_DESCRIPTIONS.skills,
116
+ },
108
117
  config: {
109
118
  type: 'object',
110
119
  description: PARAM_DESCRIPTIONS.config,
package/shared/types.d.ts CHANGED
@@ -142,6 +142,7 @@ export interface CreateSessionRequest {
142
142
  stop_condition?: string;
143
143
  execution_provider?: string;
144
144
  mcp_servers?: string[];
145
+ skills?: string[];
145
146
  config?: Record<string, unknown>;
146
147
  custom_metadata?: Record<string, unknown>;
147
148
  }