@kosuke-ai/cli 1.0.1-next.4 → 1.0.1-next.6

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 (86) hide show
  1. package/README.md +104 -0
  2. package/dist/commands/mcp.js +85 -0
  3. package/dist/generated/commands/index.js +43 -39
  4. package/dist/generated/commands/sessions/artifacts-get.js +20 -0
  5. package/dist/generated/commands/sessions/artifacts-list.js +19 -0
  6. package/dist/generated/tools/deploy/cancel.js +20 -0
  7. package/dist/generated/tools/deploy/messages.js +20 -0
  8. package/dist/generated/tools/deploy/run.js +52 -0
  9. package/dist/generated/tools/index.js +138 -0
  10. package/dist/generated/tools/preview/get.js +24 -0
  11. package/dist/generated/tools/preview/health.js +24 -0
  12. package/dist/generated/tools/preview/reset.js +23 -0
  13. package/dist/generated/tools/preview/share-create.js +24 -0
  14. package/dist/generated/tools/preview/share-delete.js +24 -0
  15. package/dist/generated/tools/preview/share-get.js +24 -0
  16. package/dist/generated/tools/preview/shared-artifact.js +25 -0
  17. package/dist/generated/tools/preview/shared.js +20 -0
  18. package/dist/generated/tools/projects/create.js +26 -0
  19. package/dist/generated/tools/projects/delete.js +20 -0
  20. package/dist/generated/tools/projects/env-vars-add.js +50 -0
  21. package/dist/generated/tools/projects/env-vars-remove.js +31 -0
  22. package/dist/generated/tools/projects/get.js +20 -0
  23. package/dist/generated/tools/projects/list.js +12 -0
  24. package/dist/generated/tools/projects/services-add.js +111 -0
  25. package/dist/generated/tools/projects/services-list.js +20 -0
  26. package/dist/generated/tools/projects/services-remove.js +25 -0
  27. package/dist/generated/tools/projects/services-update.js +104 -0
  28. package/dist/generated/tools/projects/settings-get.js +20 -0
  29. package/dist/generated/tools/projects/settings-import.js +208 -0
  30. package/dist/generated/tools/projects/settings-update.js +72 -0
  31. package/dist/generated/tools/projects/skills.js +32 -0
  32. package/dist/generated/tools/projects/update.js +24 -0
  33. package/dist/generated/tools/sessions/activate.js +25 -0
  34. package/dist/generated/tools/sessions/artifacts-get.js +30 -0
  35. package/dist/generated/tools/sessions/artifacts-list.js +25 -0
  36. package/dist/generated/tools/sessions/checklist-generate.js +25 -0
  37. package/dist/generated/tools/sessions/checklist-get.js +25 -0
  38. package/dist/generated/tools/sessions/comments-add.js +53 -0
  39. package/dist/generated/tools/sessions/comments-delete.js +30 -0
  40. package/dist/generated/tools/sessions/comments-list.js +25 -0
  41. package/dist/generated/tools/sessions/comments-update.js +62 -0
  42. package/dist/generated/tools/sessions/create.js +69 -0
  43. package/dist/generated/tools/sessions/delete.js +25 -0
  44. package/dist/generated/tools/sessions/diff-files.js +25 -0
  45. package/dist/generated/tools/sessions/diff-patch.js +64 -0
  46. package/dist/generated/tools/sessions/edit-prompt.js +69 -0
  47. package/dist/generated/tools/sessions/files-get.js +30 -0
  48. package/dist/generated/tools/sessions/files-list.js +25 -0
  49. package/dist/generated/tools/sessions/files-write.js +37 -0
  50. package/dist/generated/tools/sessions/get.js +25 -0
  51. package/dist/generated/tools/sessions/git-commit-message.js +25 -0
  52. package/dist/generated/tools/sessions/git-commit.js +29 -0
  53. package/dist/generated/tools/sessions/git-push.js +25 -0
  54. package/dist/generated/tools/sessions/git-state.js +25 -0
  55. package/dist/generated/tools/sessions/jobs-cancel.js +30 -0
  56. package/dist/generated/tools/sessions/jobs-get.js +30 -0
  57. package/dist/generated/tools/sessions/list.js +56 -0
  58. package/dist/generated/tools/sessions/messages.js +25 -0
  59. package/dist/generated/tools/sessions/search.js +17 -0
  60. package/dist/generated/tools/sessions/send.js +137 -0
  61. package/dist/generated/tools/sessions/update.js +63 -0
  62. package/dist/generated/tools/workspaces/access-status.js +28 -0
  63. package/dist/generated/tools/workspaces/ai-provider-get.js +20 -0
  64. package/dist/generated/tools/workspaces/ai-provider-remove.js +39 -0
  65. package/dist/generated/tools/workspaces/ai-provider-set.js +106 -0
  66. package/dist/generated/tools/workspaces/credits.js +20 -0
  67. package/dist/generated/tools/workspaces/get.js +20 -0
  68. package/dist/generated/tools/workspaces/getting-started-get.js +20 -0
  69. package/dist/generated/tools/workspaces/getting-started-update.js +27 -0
  70. package/dist/generated/tools/workspaces/list.js +12 -0
  71. package/dist/generated/tools/workspaces/members.js +24 -0
  72. package/dist/generated/tools/workspaces/sandbox-limit.js +20 -0
  73. package/dist/generated/tools/workspaces/stop-sandboxes.js +31 -0
  74. package/dist/generated/tools/workspaces/usage.js +28 -0
  75. package/dist/program.js +4 -2
  76. package/dist/runtime/mcp-attachments.js +110 -0
  77. package/dist/runtime/mcp-composite-support.js +49 -0
  78. package/dist/runtime/mcp-composite.js +309 -0
  79. package/dist/runtime/mcp-guard.js +74 -0
  80. package/dist/runtime/mcp-invoke.js +123 -0
  81. package/dist/runtime/mcp-open-pr.js +83 -0
  82. package/dist/runtime/mcp-redact.js +31 -0
  83. package/dist/runtime/mcp-server.js +219 -0
  84. package/dist/runtime/mcp-tool.js +6 -0
  85. package/openapi.json +134 -0
  86. package/package.json +2 -1
@@ -0,0 +1,137 @@
1
+ import { operation } from '../../commands/sessions/send.js';
2
+ export const tool = {
3
+ "name": "sessions_send",
4
+ "toolset": "sessions",
5
+ "description": "Send a message: starts a turn, or steers the one running when steerTargetJobId names it. Attachments ride along as multipart.",
6
+ "inputSchema": {
7
+ "type": "object",
8
+ "properties": {
9
+ "projectId": {
10
+ "type": "string",
11
+ "description": "Project id."
12
+ },
13
+ "sessionId": {
14
+ "type": "string",
15
+ "description": "Session id."
16
+ },
17
+ "content": {
18
+ "type": "string"
19
+ },
20
+ "model": {
21
+ "type": "string"
22
+ },
23
+ "previewContext": {
24
+ "type": "object",
25
+ "properties": {
26
+ "frontendName": {
27
+ "type": "string",
28
+ "minLength": 1,
29
+ "maxLength": 100
30
+ },
31
+ "path": {
32
+ "type": "string",
33
+ "minLength": 1,
34
+ "maxLength": 2048
35
+ }
36
+ },
37
+ "required": [
38
+ "frontendName",
39
+ "path"
40
+ ],
41
+ "additionalProperties": false
42
+ },
43
+ "diffCommentsContext": {
44
+ "maxItems": 50,
45
+ "type": "array",
46
+ "items": {
47
+ "type": "object",
48
+ "properties": {
49
+ "id": {
50
+ "type": "string",
51
+ "format": "uuid",
52
+ "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
53
+ },
54
+ "filePath": {
55
+ "type": "string",
56
+ "minLength": 1,
57
+ "maxLength": 1024
58
+ },
59
+ "side": {
60
+ "type": "string",
61
+ "enum": [
62
+ "old",
63
+ "new"
64
+ ]
65
+ },
66
+ "startLineNumber": {
67
+ "type": "integer",
68
+ "minimum": 1,
69
+ "maximum": 9007199254740991
70
+ },
71
+ "endLineNumber": {
72
+ "type": "integer",
73
+ "minimum": 1,
74
+ "maximum": 9007199254740991
75
+ },
76
+ "body": {
77
+ "type": "string",
78
+ "minLength": 1,
79
+ "maxLength": 4000
80
+ },
81
+ "lineSnapshot": {
82
+ "type": "string",
83
+ "maxLength": 4000
84
+ },
85
+ "isOutdated": {
86
+ "default": false,
87
+ "type": "boolean"
88
+ },
89
+ "createdAt": {
90
+ "type": "string"
91
+ }
92
+ },
93
+ "required": [
94
+ "id",
95
+ "filePath",
96
+ "side",
97
+ "startLineNumber",
98
+ "endLineNumber",
99
+ "body",
100
+ "lineSnapshot"
101
+ ],
102
+ "additionalProperties": false
103
+ }
104
+ },
105
+ "retryFailedJobId": {
106
+ "type": "string"
107
+ },
108
+ "steerTargetJobId": {
109
+ "type": "string"
110
+ },
111
+ "attachments": {
112
+ "type": "array",
113
+ "maxItems": 10,
114
+ "description": "Files to attach, at most 10 of 10 MiB each. Each is a path on this machine; the request is sent as multipart when any are given.",
115
+ "items": {
116
+ "type": "object",
117
+ "properties": {
118
+ "path": {
119
+ "type": "string",
120
+ "description": "Path of a file to attach."
121
+ }
122
+ },
123
+ "required": [
124
+ "path"
125
+ ],
126
+ "additionalProperties": false
127
+ }
128
+ }
129
+ },
130
+ "required": [
131
+ "projectId",
132
+ "sessionId"
133
+ ],
134
+ "additionalProperties": false
135
+ },
136
+ operation,
137
+ };
@@ -0,0 +1,63 @@
1
+ import { operation } from '../../commands/sessions/update.js';
2
+ export const tool = {
3
+ "name": "sessions_update",
4
+ "toolset": "sessions",
5
+ "description": "Change title, status, model, owner or priority. Which changes are legal depends on the current status; the handler decides.",
6
+ "inputSchema": {
7
+ "type": "object",
8
+ "properties": {
9
+ "projectId": {
10
+ "type": "string",
11
+ "description": "Project id."
12
+ },
13
+ "sessionId": {
14
+ "type": "string",
15
+ "description": "Session id."
16
+ },
17
+ "startBranch": {
18
+ "type": [
19
+ "string",
20
+ "null"
21
+ ]
22
+ },
23
+ "title": {
24
+ "type": "string"
25
+ },
26
+ "status": {
27
+ "type": "string",
28
+ "enum": [
29
+ "backlog",
30
+ "active",
31
+ "under-review",
32
+ "archived",
33
+ "completed"
34
+ ]
35
+ },
36
+ "model": {
37
+ "type": "string"
38
+ },
39
+ "ownerId": {
40
+ "type": [
41
+ "string",
42
+ "null"
43
+ ]
44
+ },
45
+ "priority": {
46
+ "type": "string",
47
+ "enum": [
48
+ "urgent",
49
+ "high",
50
+ "medium",
51
+ "low",
52
+ "none"
53
+ ]
54
+ }
55
+ },
56
+ "required": [
57
+ "projectId",
58
+ "sessionId"
59
+ ],
60
+ "additionalProperties": false
61
+ },
62
+ operation,
63
+ };
@@ -0,0 +1,28 @@
1
+ import { operation } from '../../commands/workspaces/access-status.js';
2
+ export const tool = {
3
+ "name": "workspaces_access_status",
4
+ "toolset": "workspaces",
5
+ "description": "Read which providers you, or the workspace, can run.",
6
+ "inputSchema": {
7
+ "type": "object",
8
+ "properties": {
9
+ "workspaceId": {
10
+ "type": "string",
11
+ "description": "Workspace id."
12
+ },
13
+ "scope": {
14
+ "type": "string",
15
+ "description": "Whose provider access to report. Anything other than 'workspace' reads as 'member'.",
16
+ "enum": [
17
+ "member",
18
+ "workspace"
19
+ ]
20
+ }
21
+ },
22
+ "required": [
23
+ "workspaceId"
24
+ ],
25
+ "additionalProperties": false
26
+ },
27
+ operation,
28
+ };
@@ -0,0 +1,20 @@
1
+ import { operation } from '../../commands/workspaces/ai-provider-get.js';
2
+ export const tool = {
3
+ "name": "workspaces_ai_provider_get",
4
+ "toolset": "workspaces",
5
+ "description": "Read the workspace credentials and active auth method per provider. Secrets are masked.",
6
+ "inputSchema": {
7
+ "type": "object",
8
+ "properties": {
9
+ "workspaceId": {
10
+ "type": "string",
11
+ "description": "Workspace id."
12
+ }
13
+ },
14
+ "required": [
15
+ "workspaceId"
16
+ ],
17
+ "additionalProperties": false
18
+ },
19
+ operation,
20
+ };
@@ -0,0 +1,39 @@
1
+ import { operation } from '../../commands/workspaces/ai-provider-remove.js';
2
+ export const tool = {
3
+ "name": "workspaces_ai_provider_remove",
4
+ "toolset": "workspaces",
5
+ "description": "Remove the credentials of one auth method. Which methods a provider takes is not in the schema. Admins only.",
6
+ "inputSchema": {
7
+ "type": "object",
8
+ "properties": {
9
+ "workspaceId": {
10
+ "type": "string",
11
+ "description": "Workspace id."
12
+ },
13
+ "provider": {
14
+ "type": "string",
15
+ "enum": [
16
+ "anthropic",
17
+ "openai"
18
+ ]
19
+ },
20
+ "authMethod": {
21
+ "type": "string",
22
+ "description": "Must belong to the provider: anthropic takes the first three, openai api_key or codex.",
23
+ "enum": [
24
+ "api_key",
25
+ "aws_bedrock",
26
+ "claude_code",
27
+ "codex"
28
+ ]
29
+ }
30
+ },
31
+ "required": [
32
+ "workspaceId",
33
+ "provider",
34
+ "authMethod"
35
+ ],
36
+ "additionalProperties": false
37
+ },
38
+ operation,
39
+ };
@@ -0,0 +1,106 @@
1
+ import { operation } from '../../commands/workspaces/ai-provider-set.js';
2
+ export const tool = {
3
+ "name": "workspaces_ai_provider_set",
4
+ "toolset": "workspaces",
5
+ "description": "Store or switch workspace credentials. The body is one of the operation variants. Admins only.",
6
+ "inputSchema": {
7
+ "type": "object",
8
+ "properties": {
9
+ "workspaceId": {
10
+ "type": "string",
11
+ "description": "Workspace id."
12
+ },
13
+ "body": {
14
+ "description": "The whole request body.",
15
+ "oneOf": [
16
+ {
17
+ "type": "object",
18
+ "properties": {
19
+ "operation": {
20
+ "type": "string",
21
+ "const": "anthropic_api_key"
22
+ },
23
+ "anthropicApiKey": {
24
+ "type": "string",
25
+ "minLength": 1
26
+ }
27
+ },
28
+ "required": [
29
+ "operation"
30
+ ]
31
+ },
32
+ {
33
+ "type": "object",
34
+ "properties": {
35
+ "operation": {
36
+ "type": "string",
37
+ "const": "anthropic_aws_bedrock"
38
+ },
39
+ "region": {
40
+ "type": "string",
41
+ "minLength": 1
42
+ },
43
+ "bedrockApiKey": {
44
+ "type": "string",
45
+ "minLength": 1
46
+ },
47
+ "validationModel": {
48
+ "type": "string"
49
+ }
50
+ },
51
+ "required": [
52
+ "operation",
53
+ "region"
54
+ ]
55
+ },
56
+ {
57
+ "type": "object",
58
+ "properties": {
59
+ "operation": {
60
+ "type": "string",
61
+ "const": "anthropic_claude_code"
62
+ }
63
+ },
64
+ "required": [
65
+ "operation"
66
+ ]
67
+ },
68
+ {
69
+ "type": "object",
70
+ "properties": {
71
+ "operation": {
72
+ "type": "string",
73
+ "const": "openai_api_key"
74
+ },
75
+ "openaiApiKey": {
76
+ "type": "string",
77
+ "minLength": 1
78
+ }
79
+ },
80
+ "required": [
81
+ "operation"
82
+ ]
83
+ },
84
+ {
85
+ "type": "object",
86
+ "properties": {
87
+ "operation": {
88
+ "type": "string",
89
+ "const": "openai_codex"
90
+ }
91
+ },
92
+ "required": [
93
+ "operation"
94
+ ]
95
+ }
96
+ ]
97
+ }
98
+ },
99
+ "required": [
100
+ "workspaceId",
101
+ "body"
102
+ ],
103
+ "additionalProperties": false
104
+ },
105
+ operation,
106
+ };
@@ -0,0 +1,20 @@
1
+ import { operation } from '../../commands/workspaces/credits.js';
2
+ export const tool = {
3
+ "name": "workspaces_credits",
4
+ "toolset": "workspaces",
5
+ "description": "Read the credit balance and limit of a workspace.",
6
+ "inputSchema": {
7
+ "type": "object",
8
+ "properties": {
9
+ "workspaceId": {
10
+ "type": "string",
11
+ "description": "Workspace id."
12
+ }
13
+ },
14
+ "required": [
15
+ "workspaceId"
16
+ ],
17
+ "additionalProperties": false
18
+ },
19
+ operation,
20
+ };
@@ -0,0 +1,20 @@
1
+ import { operation } from '../../commands/workspaces/get.js';
2
+ export const tool = {
3
+ "name": "workspaces_get",
4
+ "toolset": "workspaces",
5
+ "description": "Read one workspace and your role in it.",
6
+ "inputSchema": {
7
+ "type": "object",
8
+ "properties": {
9
+ "workspaceId": {
10
+ "type": "string",
11
+ "description": "Workspace id."
12
+ }
13
+ },
14
+ "required": [
15
+ "workspaceId"
16
+ ],
17
+ "additionalProperties": false
18
+ },
19
+ operation,
20
+ };
@@ -0,0 +1,20 @@
1
+ import { operation } from '../../commands/workspaces/getting-started-get.js';
2
+ export const tool = {
3
+ "name": "workspaces_getting_started_get",
4
+ "toolset": "workspaces",
5
+ "description": "Read the getting-started guide and which milestones are done.",
6
+ "inputSchema": {
7
+ "type": "object",
8
+ "properties": {
9
+ "workspaceId": {
10
+ "type": "string",
11
+ "description": "Workspace id."
12
+ }
13
+ },
14
+ "required": [
15
+ "workspaceId"
16
+ ],
17
+ "additionalProperties": false
18
+ },
19
+ operation,
20
+ };
@@ -0,0 +1,27 @@
1
+ import { operation } from '../../commands/workspaces/getting-started-update.js';
2
+ export const tool = {
3
+ "name": "workspaces_getting_started_update",
4
+ "toolset": "workspaces",
5
+ "description": "Dismiss the guide (empty body or action=dismiss) or record the preview milestone.",
6
+ "inputSchema": {
7
+ "type": "object",
8
+ "properties": {
9
+ "workspaceId": {
10
+ "type": "string",
11
+ "description": "Workspace id."
12
+ },
13
+ "action": {
14
+ "type": "string",
15
+ "enum": [
16
+ "dismiss",
17
+ "preview_opened"
18
+ ]
19
+ }
20
+ },
21
+ "required": [
22
+ "workspaceId"
23
+ ],
24
+ "additionalProperties": false
25
+ },
26
+ operation,
27
+ };
@@ -0,0 +1,12 @@
1
+ import { operation } from '../../commands/workspaces/list.js';
2
+ export const tool = {
3
+ "name": "workspaces_list",
4
+ "toolset": "workspaces",
5
+ "description": "List the workspaces you belong to.",
6
+ "inputSchema": {
7
+ "type": "object",
8
+ "properties": {},
9
+ "additionalProperties": false
10
+ },
11
+ operation,
12
+ };
@@ -0,0 +1,24 @@
1
+ import { operation } from '../../commands/workspaces/members.js';
2
+ export const tool = {
3
+ "name": "workspaces_members",
4
+ "toolset": "workspaces",
5
+ "description": "List the members of a workspace, and its pending invitations unless excluded.",
6
+ "inputSchema": {
7
+ "type": "object",
8
+ "properties": {
9
+ "workspaceId": {
10
+ "type": "string",
11
+ "description": "Workspace id."
12
+ },
13
+ "includeInvitations": {
14
+ "type": "boolean",
15
+ "description": "Include pending invitations. Defaults to true; only the literal 'false' turns it off."
16
+ }
17
+ },
18
+ "required": [
19
+ "workspaceId"
20
+ ],
21
+ "additionalProperties": false
22
+ },
23
+ operation,
24
+ };
@@ -0,0 +1,20 @@
1
+ import { operation } from '../../commands/workspaces/sandbox-limit.js';
2
+ export const tool = {
3
+ "name": "workspaces_sandbox_limit",
4
+ "toolset": "workspaces",
5
+ "description": "Read how many sandboxes may run at once and which sessions are running now.",
6
+ "inputSchema": {
7
+ "type": "object",
8
+ "properties": {
9
+ "workspaceId": {
10
+ "type": "string",
11
+ "description": "Workspace id."
12
+ }
13
+ },
14
+ "required": [
15
+ "workspaceId"
16
+ ],
17
+ "additionalProperties": false
18
+ },
19
+ operation,
20
+ };
@@ -0,0 +1,31 @@
1
+ import { operation } from '../../commands/workspaces/stop-sandboxes.js';
2
+ export const tool = {
3
+ "name": "workspaces_stop_sandboxes",
4
+ "toolset": "workspaces",
5
+ "description": "Pause the sandboxes of the given chat sessions.",
6
+ "inputSchema": {
7
+ "type": "object",
8
+ "properties": {
9
+ "workspaceId": {
10
+ "type": "string",
11
+ "description": "Workspace id."
12
+ },
13
+ "sessionIds": {
14
+ "minItems": 1,
15
+ "maxItems": 50,
16
+ "type": "array",
17
+ "items": {
18
+ "type": "string",
19
+ "format": "uuid",
20
+ "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
21
+ }
22
+ }
23
+ },
24
+ "required": [
25
+ "workspaceId",
26
+ "sessionIds"
27
+ ],
28
+ "additionalProperties": false
29
+ },
30
+ operation,
31
+ };
@@ -0,0 +1,28 @@
1
+ import { operation } from '../../commands/workspaces/usage.js';
2
+ export const tool = {
3
+ "name": "workspaces_usage",
4
+ "toolset": "workspaces",
5
+ "description": "Read sandbox usage by day and by project. start must precede end and the range is capped at 366 days.",
6
+ "inputSchema": {
7
+ "type": "object",
8
+ "properties": {
9
+ "workspaceId": {
10
+ "type": "string",
11
+ "description": "Workspace id."
12
+ },
13
+ "start": {
14
+ "type": "string",
15
+ "description": "Range start, any Date-parsable string. Default: end minus 30 days."
16
+ },
17
+ "end": {
18
+ "type": "string",
19
+ "description": "Range end, any Date-parsable string. Default: now."
20
+ }
21
+ },
22
+ "required": [
23
+ "workspaceId"
24
+ ],
25
+ "additionalProperties": false
26
+ },
27
+ operation,
28
+ };
package/dist/program.js CHANGED
@@ -1,12 +1,13 @@
1
1
  import { Command } from 'commander';
2
2
  import { attachAuthCommands } from './commands/auth.js';
3
+ import { attachMcpCommands } from './commands/mcp.js';
3
4
  import { operations } from './generated/commands/index.js';
4
5
  import { attachOperation } from './runtime/attach.js';
5
6
  import { createRuntime, ExitSignal } from './runtime/runtime.js';
6
7
  import { version } from './runtime/version.js';
7
8
  /**
8
- * The command tree: `auth` by hand, everything else from the generated
9
- * descriptors. Global flags are read before any subcommand runs, so the
9
+ * The command tree: `auth` and `mcp` by hand, everything else from the
10
+ * generated descriptors. Global flags are read before any subcommand runs, so the
10
11
  * runtime the subcommands share is built once, from them.
11
12
  */
12
13
  export function createProgram(options = {}) {
@@ -29,6 +30,7 @@ export function createProgram(options = {}) {
29
30
  output: (outcome) => runtimeFor().output(outcome),
30
31
  };
31
32
  attachAuthCommands(program, lazy, options.auth);
33
+ attachMcpCommands(program, lazy, options.mcp);
32
34
  for (const operation of operations)
33
35
  attachOperation(program, operation, lazy);
34
36
  return program;