@agentteams/cli 0.1.96 → 0.1.98
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/.eslintcache +1 -1
- package/README.md +81 -23
- package/dist/auth/credentialStore.d.ts +70 -10
- package/dist/auth/credentialStore.d.ts.map +1 -1
- package/dist/auth/credentialStore.js +207 -20
- package/dist/auth/credentialStore.js.map +1 -1
- package/dist/auth/fileCredentialStore.d.ts +172 -0
- package/dist/auth/fileCredentialStore.d.ts.map +1 -0
- package/dist/auth/fileCredentialStore.js +445 -0
- package/dist/auth/fileCredentialStore.js.map +1 -0
- package/dist/auth/personalTokenClient.d.ts +7 -1
- package/dist/auth/personalTokenClient.d.ts.map +1 -1
- package/dist/auth/personalTokenClient.js +19 -4
- package/dist/auth/personalTokenClient.js.map +1 -1
- package/dist/auth/personalTokenStore.d.ts +1 -1
- package/dist/auth/personalTokenStore.d.ts.map +1 -1
- package/dist/auth/personalTokenStore.js +7 -2
- package/dist/auth/personalTokenStore.js.map +1 -1
- package/dist/auth/refreshLock.d.ts +5 -2
- package/dist/auth/refreshLock.d.ts.map +1 -1
- package/dist/auth/refreshLock.js +8 -4
- package/dist/auth/refreshLock.js.map +1 -1
- package/dist/auth/slotHash.d.ts +15 -0
- package/dist/auth/slotHash.d.ts.map +1 -0
- package/dist/auth/slotHash.js +18 -0
- package/dist/auth/slotHash.js.map +1 -0
- package/dist/commands/auth.d.ts +8 -1
- package/dist/commands/auth.d.ts.map +1 -1
- package/dist/commands/auth.js +41 -7
- package/dist/commands/auth.js.map +1 -1
- package/dist/commands/coaction.d.ts.map +1 -1
- package/dist/commands/coaction.js +6 -21
- package/dist/commands/coaction.js.map +1 -1
- package/dist/commands/codeReview.d.ts.map +1 -1
- package/dist/commands/codeReview.js +1 -2
- package/dist/commands/codeReview.js.map +1 -1
- package/dist/commands/doctor.js +1 -1
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/document.d.ts +0 -1
- package/dist/commands/document.d.ts.map +1 -1
- package/dist/commands/document.js +1 -1
- package/dist/commands/document.js.map +1 -1
- package/dist/commands/init.d.ts +1 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +2 -0
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/plan.d.ts.map +1 -1
- package/dist/commands/plan.js +10 -53
- package/dist/commands/plan.js.map +1 -1
- package/dist/commands/postmortem.d.ts.map +1 -1
- package/dist/commands/postmortem.js +1 -5
- package/dist/commands/postmortem.js.map +1 -1
- package/dist/commands/report.d.ts.map +1 -1
- package/dist/commands/report.js +1 -5
- package/dist/commands/report.js.map +1 -1
- package/dist/commands/task.js +2 -2
- package/dist/commands/task.js.map +1 -1
- package/dist/index.js +3 -1350
- package/dist/index.js.map +1 -1
- package/dist/mcp/context.d.ts +1 -1
- package/dist/mcp/context.js +1 -1
- package/dist/mcp/context.js.map +1 -1
- package/dist/mcp-registration/index.js +3 -3
- package/dist/mcp-registration/index.js.map +1 -1
- package/dist/mcp-registration/serverSpec.d.ts +1 -1
- package/dist/program/agentConfig.d.ts +3 -0
- package/dist/program/agentConfig.d.ts.map +1 -0
- package/dist/program/agentConfig.js +14 -0
- package/dist/program/agentConfig.js.map +1 -0
- package/dist/program/attachment.d.ts +3 -0
- package/dist/program/attachment.d.ts.map +1 -0
- package/dist/program/attachment.js +17 -0
- package/dist/program/attachment.js.map +1 -0
- package/dist/program/auth.d.ts +3 -0
- package/dist/program/auth.d.ts.map +1 -0
- package/dist/program/auth.js +39 -0
- package/dist/program/auth.js.map +1 -0
- package/dist/program/changeSet.d.ts +4 -0
- package/dist/program/changeSet.d.ts.map +1 -0
- package/dist/program/changeSet.js +53 -0
- package/dist/program/changeSet.js.map +1 -0
- package/dist/program/coaction.d.ts +7 -0
- package/dist/program/coaction.d.ts.map +1 -0
- package/dist/program/coaction.js +81 -0
- package/dist/program/coaction.js.map +1 -0
- package/dist/program/codeReview.d.ts +4 -0
- package/dist/program/codeReview.d.ts.map +1 -0
- package/dist/program/codeReview.js +100 -0
- package/dist/program/codeReview.js.map +1 -0
- package/dist/program/comment.d.ts +4 -0
- package/dist/program/comment.d.ts.map +1 -0
- package/dist/program/comment.js +50 -0
- package/dist/program/comment.js.map +1 -0
- package/dist/program/config.d.ts +3 -0
- package/dist/program/config.d.ts.map +1 -0
- package/dist/program/config.js +9 -0
- package/dist/program/config.js.map +1 -0
- package/dist/program/convention.d.ts +4 -0
- package/dist/program/convention.d.ts.map +1 -0
- package/dist/program/convention.js +37 -0
- package/dist/program/convention.js.map +1 -0
- package/dist/program/dependency.d.ts +3 -0
- package/dist/program/dependency.d.ts.map +1 -0
- package/dist/program/dependency.js +15 -0
- package/dist/program/dependency.js.map +1 -0
- package/dist/program/doctor.d.ts +6 -0
- package/dist/program/doctor.d.ts.map +1 -0
- package/dist/program/doctor.js +31 -0
- package/dist/program/doctor.js.map +1 -0
- package/dist/program/document.d.ts +7 -0
- package/dist/program/document.d.ts.map +1 -0
- package/dist/program/document.js +87 -0
- package/dist/program/document.js.map +1 -0
- package/dist/program/feedback.d.ts +3 -0
- package/dist/program/feedback.d.ts.map +1 -0
- package/dist/program/feedback.js +10 -0
- package/dist/program/feedback.js.map +1 -0
- package/dist/program/index.d.ts +3 -0
- package/dist/program/index.d.ts.map +1 -0
- package/dist/program/index.js +66 -0
- package/dist/program/index.js.map +1 -0
- package/dist/program/init.d.ts +6 -0
- package/dist/program/init.d.ts.map +1 -0
- package/dist/program/init.js +50 -0
- package/dist/program/init.js.map +1 -0
- package/dist/program/linear.d.ts +3 -0
- package/dist/program/linear.d.ts.map +1 -0
- package/dist/program/linear.js +25 -0
- package/dist/program/linear.js.map +1 -0
- package/dist/program/mcp.d.ts +6 -0
- package/dist/program/mcp.d.ts.map +1 -0
- package/dist/program/mcp.js +95 -0
- package/dist/program/mcp.js.map +1 -0
- package/dist/program/options/completionReport.d.ts +5 -0
- package/dist/program/options/completionReport.d.ts.map +1 -0
- package/dist/program/options/completionReport.js +19 -0
- package/dist/program/options/completionReport.js.map +1 -0
- package/dist/program/options/connection.d.ts +3 -0
- package/dist/program/options/connection.d.ts.map +1 -0
- package/dist/program/options/connection.js +8 -0
- package/dist/program/options/connection.js.map +1 -0
- package/dist/program/options/output.d.ts +3 -0
- package/dist/program/options/output.d.ts.map +1 -0
- package/dist/program/options/output.js +6 -0
- package/dist/program/options/output.js.map +1 -0
- package/dist/program/options/pagination.d.ts +3 -0
- package/dist/program/options/pagination.d.ts.map +1 -0
- package/dist/program/options/pagination.js +6 -0
- package/dist/program/options/pagination.js.map +1 -0
- package/dist/program/options/resource.d.ts +6 -0
- package/dist/program/options/resource.d.ts.map +1 -0
- package/dist/program/options/resource.js +29 -0
- package/dist/program/options/resource.js.map +1 -0
- package/dist/program/plan.d.ts +7 -0
- package/dist/program/plan.d.ts.map +1 -0
- package/dist/program/plan.js +137 -0
- package/dist/program/plan.js.map +1 -0
- package/dist/program/postmortem.d.ts +4 -0
- package/dist/program/postmortem.d.ts.map +1 -0
- package/dist/program/postmortem.js +27 -0
- package/dist/program/postmortem.js.map +1 -0
- package/dist/program/report.d.ts +4 -0
- package/dist/program/report.d.ts.map +1 -0
- package/dist/program/report.js +38 -0
- package/dist/program/report.js.map +1 -0
- package/dist/program/resolve.d.ts +6 -0
- package/dist/program/resolve.d.ts.map +1 -0
- package/dist/program/resolve.js +30 -0
- package/dist/program/resolve.js.map +1 -0
- package/dist/program/search.d.ts +6 -0
- package/dist/program/search.d.ts.map +1 -0
- package/dist/program/search.js +43 -0
- package/dist/program/search.js.map +1 -0
- package/dist/program/shared.d.ts +32 -0
- package/dist/program/shared.d.ts.map +1 -0
- package/dist/program/shared.js +96 -0
- package/dist/program/shared.js.map +1 -0
- package/dist/program/sync.d.ts +6 -0
- package/dist/program/sync.d.ts.map +1 -0
- package/dist/program/sync.js +35 -0
- package/dist/program/sync.js.map +1 -0
- package/dist/program/task.d.ts +3 -0
- package/dist/program/task.d.ts.map +1 -0
- package/dist/program/task.js +13 -0
- package/dist/program/task.js.map +1 -0
- package/dist/program/worktree.d.ts +3 -0
- package/dist/program/worktree.d.ts.map +1 -0
- package/dist/program/worktree.js +30 -0
- package/dist/program/worktree.js.map +1 -0
- package/dist/types/index.d.ts +3 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utils/apiContext.d.ts.map +1 -1
- package/dist/utils/apiContext.js +6 -1
- package/dist/utils/apiContext.js.map +1 -1
- package/dist/utils/apiKeyInput.d.ts +1 -3
- package/dist/utils/apiKeyInput.d.ts.map +1 -1
- package/dist/utils/apiKeyInput.js +1 -9
- package/dist/utils/apiKeyInput.js.map +1 -1
- package/dist/utils/apiOrigin.d.ts +43 -0
- package/dist/utils/apiOrigin.d.ts.map +1 -0
- package/dist/utils/apiOrigin.js +78 -0
- package/dist/utils/apiOrigin.js.map +1 -0
- package/dist/utils/authFormat.d.ts.map +1 -1
- package/dist/utils/authFormat.js +32 -11
- package/dist/utils/authFormat.js.map +1 -1
- package/dist/utils/config.d.ts +10 -4
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +13 -5
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/httpClient.d.ts.map +1 -1
- package/dist/utils/httpClient.js +50 -0
- package/dist/utils/httpClient.js.map +1 -1
- package/dist/utils/initOutput.d.ts.map +1 -1
- package/dist/utils/initOutput.js +14 -3
- package/dist/utils/initOutput.js.map +1 -1
- package/dist/utils/outputPolicy.d.ts +6 -7
- package/dist/utils/outputPolicy.d.ts.map +1 -1
- package/dist/utils/outputPolicy.js +0 -5
- package/dist/utils/outputPolicy.js.map +1 -1
- package/dist/utils/projectRootHash.d.ts +30 -0
- package/dist/utils/projectRootHash.d.ts.map +1 -0
- package/dist/utils/projectRootHash.js +43 -0
- package/dist/utils/projectRootHash.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { Option, CONVENTION_HINT, DEVICE_AUTH_OPTION_DESCRIPTION, DEVICE_AUTH_SET_DEFAULT_DESCRIPTION, executeCommand, handleError, normalizeInteractiveFormat, printInitResult, } from './shared.js';
|
|
2
|
+
/**
|
|
3
|
+
* 액션 인벤토리: 액션: start. 실사용 옵션: authMode, agentFiles, agentFilesExample, installWorktreeHook, deviceAuth, setDefault. 별칭/도움말 불일치: 없음.
|
|
4
|
+
*/
|
|
5
|
+
export function registerInitCommand(program) {
|
|
6
|
+
program
|
|
7
|
+
.command('init')
|
|
8
|
+
.description('Initialize AgentTeams CLI via OAuth')
|
|
9
|
+
// No commander `.default()` on purpose: init has to tell "the user asked for
|
|
10
|
+
// this credential" apart from "nothing was typed". A default would fill
|
|
11
|
+
// `options.auth` on every run, and `detectInitExecutionContext` reads a
|
|
12
|
+
// present value as an explicit relink request — which would make the
|
|
13
|
+
// configured-project fast path unreachable from the real CLI. The absent case
|
|
14
|
+
// is defaulted in `executeInitCommandWithContext`.
|
|
15
|
+
.addOption(new Option('--auth <mode>', 'Credential to configure. `personal-token` (default) stores a rotating personal login outside the repository — in the OS credential store, or in a permission-protected file when that store is unavailable — and refreshes itself; `api-key` writes a legacy agent key into .agentteams/config.json, which expires 30 days after issue and must be reissued by hand.').choices(['api-key', 'personal-token']))
|
|
16
|
+
// Entry point files are no longer written for every AI client on every run.
|
|
17
|
+
// Without a TTY the selection now comes from what is actually configured in
|
|
18
|
+
// the folder (.claude/, .cursor/, …), and this option is how an automated
|
|
19
|
+
// caller states the set explicitly instead.
|
|
20
|
+
.option('--agent-files <list>', "Comma-separated agent entry point files to create (CLAUDE.md, AGENTS.md, GEMINI.md, .cursor/rules/agentteams.mdc), or 'none'. Defaults to the AI clients detected in this folder.")
|
|
21
|
+
.option('--agent-files-example', 'When a selected entry point file already exists, write a <name>-example file next to it instead of leaving it alone.', false)
|
|
22
|
+
.option('--install-worktree-hook', "Install the managed git post-checkout hook even if this repository has no linked worktrees yet. By default the hook is installed only when linked worktrees exist; 'agentteams doctor' can install it later.", false)
|
|
23
|
+
// Explicit opt-in only. There is deliberately no `--no-device-auth`: the default
|
|
24
|
+
// already is the browser callback, so the way to turn this off is not to pass it.
|
|
25
|
+
.option('--device-auth', DEVICE_AUTH_OPTION_DESCRIPTION, false)
|
|
26
|
+
.option('--set-default', DEVICE_AUTH_SET_DEFAULT_DESCRIPTION, false)
|
|
27
|
+
.option('--format <format>', 'Output format (json; defaults to human-readable view)')
|
|
28
|
+
.option('--output-file <path>', 'Write full output to a file (stdout prints a short summary)')
|
|
29
|
+
.option('--verbose', 'Print full raw output to stdout; with --output-file, also echo it', false)
|
|
30
|
+
.addHelpText('after', CONVENTION_HINT)
|
|
31
|
+
.action(async (options) => {
|
|
32
|
+
try {
|
|
33
|
+
const result = await executeCommand('init', 'start', {
|
|
34
|
+
authMode: options.auth,
|
|
35
|
+
agentFiles: options.agentFiles,
|
|
36
|
+
agentFilesExample: options.agentFilesExample === true,
|
|
37
|
+
installWorktreeHook: options.installWorktreeHook === true,
|
|
38
|
+
deviceAuth: options.deviceAuth === true,
|
|
39
|
+
setDefault: options.setDefault === true,
|
|
40
|
+
});
|
|
41
|
+
const format = normalizeInteractiveFormat(options.format);
|
|
42
|
+
printInitResult(result, format);
|
|
43
|
+
}
|
|
44
|
+
catch (error) {
|
|
45
|
+
console.error(handleError(error));
|
|
46
|
+
process.exit(1);
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/program/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,MAAM,EACN,eAAe,EACf,8BAA8B,EAC9B,mCAAmC,EACnC,cAAc,EACd,WAAW,EACX,0BAA0B,EAC1B,eAAe,GAChB,MAAM,aAAa,CAAC;AAErB;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAClD,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,qCAAqC,CAAC;QACnD,6EAA6E;QAC7E,wEAAwE;QACxE,wEAAwE;QACxE,qEAAqE;QACrE,8EAA8E;QAC9E,mDAAmD;SAClD,SAAS,CACR,IAAI,MAAM,CACR,eAAe,EACf,sWAAsW,CACvW,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC,CACzC;QACD,4EAA4E;QAC5E,4EAA4E;QAC5E,0EAA0E;QAC1E,4CAA4C;SAC3C,MAAM,CACL,sBAAsB,EACtB,mLAAmL,CACpL;SACA,MAAM,CACL,uBAAuB,EACvB,sHAAsH,EACtH,KAAK,CACN;SACA,MAAM,CACL,yBAAyB,EACzB,8MAA8M,EAC9M,KAAK,CACN;QACD,iFAAiF;QACjF,kFAAkF;SACjF,MAAM,CAAC,eAAe,EAAE,8BAA8B,EAAE,KAAK,CAAC;SAC9D,MAAM,CAAC,eAAe,EAAE,mCAAmC,EAAE,KAAK,CAAC;SACnE,MAAM,CAAC,mBAAmB,EAAE,uDAAuD,CAAC;SACpF,MAAM,CAAC,sBAAsB,EAAE,6DAA6D,CAAC;SAC7F,MAAM,CAAC,WAAW,EAAE,mEAAmE,EAAE,KAAK,CAAC;SAC/F,WAAW,CAAC,OAAO,EAAE,eAAe,CAAC;SACrC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACxB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE;gBACnD,QAAQ,EAAE,OAAO,CAAC,IAAI;gBACtB,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,KAAK,IAAI;gBACrD,mBAAmB,EAAE,OAAO,CAAC,mBAAmB,KAAK,IAAI;gBACzD,UAAU,EAAE,OAAO,CAAC,UAAU,KAAK,IAAI;gBACvC,UAAU,EAAE,OAAO,CAAC,UAAU,KAAK,IAAI;aACxC,CAAC,CAAC;YACH,MAAM,MAAM,GAAG,0BAA0B,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAE1D,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAClC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;YAClC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"linear.d.ts","sourceRoot":"","sources":["../../src/program/linear.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAA2C,MAAM,aAAa,CAAC;AAG/E,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4D5D"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { CONVENTION_HINT, createApiKeyFileOption } from './shared.js';
|
|
2
|
+
import { addJsonResourceLeaf } from './options/resource.js';
|
|
3
|
+
export function registerLinearCommand(program) {
|
|
4
|
+
const root = program
|
|
5
|
+
.command('linear')
|
|
6
|
+
.description('Read Linear issues and add comments through the AgentTeams API')
|
|
7
|
+
.addHelpText('after', CONVENTION_HINT);
|
|
8
|
+
const issue = root.command('issue').description('Read, create, or update a Linear issue');
|
|
9
|
+
const comment = root.command('comment').description('Manage comments on a Linear issue');
|
|
10
|
+
const addConnection = (command) => command
|
|
11
|
+
.option('--api-url <url>', 'Override API URL (optional)')
|
|
12
|
+
.addOption(createApiKeyFileOption())
|
|
13
|
+
.option('--project-id <id>', 'Override AgentTeams project ID (optional)');
|
|
14
|
+
addJsonResourceLeaf(issue, 'linear', 'get', 'Get a Linear issue', (command) => addConnection(command).option('--issue-id <id>', 'Linear issue ID'), { connection: false, commandAction: 'issue-get' });
|
|
15
|
+
addJsonResourceLeaf(issue, 'linear', 'create', 'Create a Linear issue', (command) => addConnection(command)
|
|
16
|
+
.option('--team-id <id>', 'Linear team ID (not an AgentTeams team ID)')
|
|
17
|
+
.option('--title <text>', 'Issue title')
|
|
18
|
+
.option('--description <text>', 'Issue description')
|
|
19
|
+
.option('--state <name>', 'Issue state name')
|
|
20
|
+
.option('--parent-id <id>', 'Linear parent issue UUID'), { connection: false, commandAction: 'issue-create' });
|
|
21
|
+
addJsonResourceLeaf(issue, 'linear', 'update', 'Update a Linear issue', (command) => addConnection(command).option('--issue-id <id>', 'Linear issue ID').option('--state <name>', 'Issue state name'), { connection: false, commandAction: 'issue-update' });
|
|
22
|
+
addJsonResourceLeaf(comment, 'linear', 'list', 'List Linear issue comments', (command) => addConnection(command).option('--issue-id <id>', 'Linear issue ID'), { connection: false, commandAction: 'comment-list' });
|
|
23
|
+
addJsonResourceLeaf(comment, 'linear', 'create', 'Create a Linear issue comment', (command) => addConnection(command).option('--issue-id <id>', 'Linear issue ID').option('--body <text>', 'Comment body'), { connection: false, commandAction: 'comment-create' });
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=linear.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"linear.js","sourceRoot":"","sources":["../../src/program/linear.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,eAAe,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAC/E,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,MAAM,UAAU,qBAAqB,CAAC,OAAgB;IACpD,MAAM,IAAI,GAAG,OAAO;SACjB,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,gEAAgE,CAAC;SAC7E,WAAW,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IACzC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,wCAAwC,CAAC,CAAC;IAC1F,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,mCAAmC,CAAC,CAAC;IACzF,MAAM,aAAa,GAAG,CAAC,OAAgB,EAAE,EAAE,CACzC,OAAO;SACJ,MAAM,CAAC,iBAAiB,EAAE,6BAA6B,CAAC;SACxD,SAAS,CAAC,sBAAsB,EAAE,CAAC;SACnC,MAAM,CAAC,mBAAmB,EAAE,2CAA2C,CAAC,CAAC;IAC9E,mBAAmB,CACjB,KAAK,EACL,QAAQ,EACR,KAAK,EACL,oBAAoB,EACpB,CAAC,OAAO,EAAE,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,EAChF,EAAE,UAAU,EAAE,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,CAClD,CAAC;IACF,mBAAmB,CACjB,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,uBAAuB,EACvB,CAAC,OAAO,EAAE,EAAE,CACV,aAAa,CAAC,OAAO,CAAC;SACnB,MAAM,CAAC,gBAAgB,EAAE,4CAA4C,CAAC;SACtE,MAAM,CAAC,gBAAgB,EAAE,aAAa,CAAC;SACvC,MAAM,CAAC,sBAAsB,EAAE,mBAAmB,CAAC;SACnD,MAAM,CAAC,gBAAgB,EAAE,kBAAkB,CAAC;SAC5C,MAAM,CAAC,kBAAkB,EAAE,0BAA0B,CAAC,EAC3D,EAAE,UAAU,EAAE,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,CACrD,CAAC;IACF,mBAAmB,CACjB,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,uBAAuB,EACvB,CAAC,OAAO,EAAE,EAAE,CACV,aAAa,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,CAAC,MAAM,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,EAClH,EAAE,UAAU,EAAE,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,CACrD,CAAC;IACF,mBAAmB,CACjB,OAAO,EACP,QAAQ,EACR,MAAM,EACN,4BAA4B,EAC5B,CAAC,OAAO,EAAE,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,EAChF,EAAE,UAAU,EAAE,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,CACrD,CAAC;IACF,mBAAmB,CACjB,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,+BAA+B,EAC/B,CAAC,OAAO,EAAE,EAAE,CACV,aAAa,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,CAAC,MAAM,CAAC,eAAe,EAAE,cAAc,CAAC,EAC7G,EAAE,UAAU,EAAE,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,CACvD,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { Command } from './shared.js';
|
|
2
|
+
/**
|
|
3
|
+
* 액션 인벤토리: 액션: server(부모), config/install/doctor. 등록 액션은 client/scope/toolProfile/serverEntry/json 및 접속 옵션, install만 yes, doctor는 yes/json. 별칭 없음.
|
|
4
|
+
*/
|
|
5
|
+
export declare function registerMcpCommand(program: Command): void;
|
|
6
|
+
//# sourceMappingURL=mcp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/program/mcp.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EAMR,MAAM,aAAa,CAAC;AAErB;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAkHzD"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { CONVENTION_HINT, MCP_CLIENT_IDS, createApiKeyFileOption, formatOutput, handleError, } from './shared.js';
|
|
2
|
+
/**
|
|
3
|
+
* 액션 인벤토리: 액션: server(부모), config/install/doctor. 등록 액션은 client/scope/toolProfile/serverEntry/json 및 접속 옵션, install만 yes, doctor는 yes/json. 별칭 없음.
|
|
4
|
+
*/
|
|
5
|
+
export function registerMcpCommand(program) {
|
|
6
|
+
const mcpCommand = program
|
|
7
|
+
.command('mcp')
|
|
8
|
+
.description('Run an MCP server over stdio, exposing AgentTeams reads to MCP-capable coding agents')
|
|
9
|
+
.option('--tool-profile <profile>', 'Tool catalog profile (full, read, documents, comments, minimal); full is the compatibility default, limited profiles reduce upfront schemas', 'full')
|
|
10
|
+
.option('--api-url <url>', 'Override API URL (optional)')
|
|
11
|
+
.addOption(createApiKeyFileOption())
|
|
12
|
+
.option('--project-id <id>', 'Override project ID (optional)')
|
|
13
|
+
.addHelpText('after', CONVENTION_HINT)
|
|
14
|
+
.action(async (options) => {
|
|
15
|
+
try {
|
|
16
|
+
// Loaded lazily so the MCP SDK — which requires a newer Node than some of
|
|
17
|
+
// the CLI's other commands need — never enters the other command paths.
|
|
18
|
+
const { startMcpServer } = await import('../commands/mcp.js');
|
|
19
|
+
// stdout carries JSON-RPC frames only: this action deliberately bypasses
|
|
20
|
+
// executeCommand()/printCommandResult() and never writes to stdout.
|
|
21
|
+
await startMcpServer({
|
|
22
|
+
apiUrl: options.apiUrl,
|
|
23
|
+
apiKey: options.apiKey,
|
|
24
|
+
projectId: options.projectId,
|
|
25
|
+
toolProfile: options.toolProfile,
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
catch (error) {
|
|
29
|
+
// Staying alive without credentials would make the client retry forever.
|
|
30
|
+
console.error(handleError(error));
|
|
31
|
+
process.exit(1);
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
const MCP_CLIENT_CHOICES = MCP_CLIENT_IDS.join(', ');
|
|
35
|
+
function addMcpRegistrationOptions(command) {
|
|
36
|
+
return command
|
|
37
|
+
.option('--client <id>', `Target client (${MCP_CLIENT_CHOICES})`)
|
|
38
|
+
.option('--scope <scope>', 'Configuration scope (user, project)', 'project')
|
|
39
|
+
.option('--tool-profile <profile>', 'Tool catalog profile (full, read, documents, comments, minimal); full is the compatibility default, limited profiles reduce upfront schemas. A client whose backend rejects part of the catalog is narrowed automatically unless you name a profile here')
|
|
40
|
+
.option('--server-entry <path>', 'Use a local `cli/dist/index.js` instead of the published package (for pre-release testing)')
|
|
41
|
+
.option('--json', 'Print the machine-readable result instead of the human-readable report', false)
|
|
42
|
+
.option('--api-url <url>', 'Override API URL (optional)')
|
|
43
|
+
.addOption(createApiKeyFileOption())
|
|
44
|
+
.option('--project-id <id>', 'Override project ID (optional)');
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* The registration surface is loaded lazily for the same reason the server is:
|
|
48
|
+
* `agentteams mcp` must stay a thin stdio entry point, and no other command
|
|
49
|
+
* should pay for the client registry.
|
|
50
|
+
*/
|
|
51
|
+
async function runMcpRegistration(action, options, command) {
|
|
52
|
+
try {
|
|
53
|
+
const parentOptions = command.parent?.opts() ?? {};
|
|
54
|
+
const merged = { ...parentOptions, ...options };
|
|
55
|
+
const { runMcpConfigCommand, runMcpInstallCommand } = await import('../mcp-registration/index.js');
|
|
56
|
+
const output = action === 'config' ? runMcpConfigCommand(merged) : runMcpInstallCommand(merged);
|
|
57
|
+
console.log(options.json ? formatOutput(output.json) : output.text);
|
|
58
|
+
process.exitCode = output.exitCode;
|
|
59
|
+
}
|
|
60
|
+
catch (error) {
|
|
61
|
+
console.error(handleError(error));
|
|
62
|
+
process.exit(1);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
addMcpRegistrationOptions(mcpCommand
|
|
66
|
+
.command('config')
|
|
67
|
+
.description('Print the MCP configuration snippet for a coding agent. Never writes files or credentials.'))
|
|
68
|
+
.addHelpText('after', CONVENTION_HINT)
|
|
69
|
+
.action((options, command) => runMcpRegistration('config', options, command));
|
|
70
|
+
addMcpRegistrationOptions(mcpCommand
|
|
71
|
+
.command('install')
|
|
72
|
+
.description('Register AgentTeams with local MCP clients. Without --client it only prints a detection plan; batch apply requires --scope user --yes.'))
|
|
73
|
+
.option('--yes', 'Apply an explicitly selected user-scope batch plan instead of only printing it', false)
|
|
74
|
+
.addHelpText('after', CONVENTION_HINT)
|
|
75
|
+
.action((options, command) => runMcpRegistration('install', options, command));
|
|
76
|
+
mcpCommand
|
|
77
|
+
.command('doctor')
|
|
78
|
+
.description('Find legacy plaintext MCP key copies; cleanup is applied only with explicit --yes confirmation.')
|
|
79
|
+
.option('--yes', 'Confirm safe cleanup after the audit', false)
|
|
80
|
+
.option('--json', 'Print the machine-readable result instead of the human-readable report', false)
|
|
81
|
+
.addHelpText('after', CONVENTION_HINT)
|
|
82
|
+
.action(async (options) => {
|
|
83
|
+
try {
|
|
84
|
+
const { runMcpDoctorCommand } = await import('../mcp-registration/doctor.js');
|
|
85
|
+
const output = await runMcpDoctorCommand({ yes: options.yes === true });
|
|
86
|
+
console.log(options.json ? formatOutput(output.json) : output.text);
|
|
87
|
+
process.exitCode = output.exitCode;
|
|
88
|
+
}
|
|
89
|
+
catch (error) {
|
|
90
|
+
console.error(handleError(error));
|
|
91
|
+
process.exit(1);
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=mcp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/program/mcp.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { Command } from 'commander';
|
|
2
|
+
export declare function addGitToggleOption(command: Command): Command;
|
|
3
|
+
export declare function addCompletionReportMetricsOptions(command: Command): Command;
|
|
4
|
+
export declare function addCompletionReportMetricValueOptions(command: Command): Command;
|
|
5
|
+
//# sourceMappingURL=completionReport.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"completionReport.d.ts","sourceRoot":"","sources":["../../../src/program/options/completionReport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAE5D;AAED,wBAAgB,iCAAiC,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAE3E;AAED,wBAAgB,qCAAqC,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAW/E"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export function addGitToggleOption(command) {
|
|
2
|
+
return command.option('--no-git', 'Disable git metrics auto-collection');
|
|
3
|
+
}
|
|
4
|
+
export function addCompletionReportMetricsOptions(command) {
|
|
5
|
+
return addGitToggleOption(addCompletionReportMetricValueOptions(command));
|
|
6
|
+
}
|
|
7
|
+
export function addCompletionReportMetricValueOptions(command) {
|
|
8
|
+
return command
|
|
9
|
+
.option('--commit-hash <hash>', 'Git commit hash (manual override)')
|
|
10
|
+
.option('--branch-name <name>', 'Branch name (manual override)')
|
|
11
|
+
.option('--files-modified <n>', 'Number of modified files (manual override)')
|
|
12
|
+
.option('--lines-added <n>', 'Number of added lines (manual override)')
|
|
13
|
+
.option('--lines-deleted <n>', 'Number of deleted lines (manual override)')
|
|
14
|
+
.option('--duration-seconds <n>', 'Duration in seconds (manual only)')
|
|
15
|
+
.option('--commit-start <hash>', 'Commit range start hash (manual only)')
|
|
16
|
+
.option('--commit-end <hash>', 'Commit range end hash (manual only)')
|
|
17
|
+
.option('--pull-request-id <id>', 'Pull request ID (manual only)');
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=completionReport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"completionReport.js","sourceRoot":"","sources":["../../../src/program/options/completionReport.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,kBAAkB,CAAC,OAAgB;IACjD,OAAO,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,qCAAqC,CAAC,CAAC;AAC3E,CAAC;AAED,MAAM,UAAU,iCAAiC,CAAC,OAAgB;IAChE,OAAO,kBAAkB,CAAC,qCAAqC,CAAC,OAAO,CAAC,CAAC,CAAC;AAC5E,CAAC;AAED,MAAM,UAAU,qCAAqC,CAAC,OAAgB;IACpE,OAAO,OAAO;SACX,MAAM,CAAC,sBAAsB,EAAE,mCAAmC,CAAC;SACnE,MAAM,CAAC,sBAAsB,EAAE,+BAA+B,CAAC;SAC/D,MAAM,CAAC,sBAAsB,EAAE,4CAA4C,CAAC;SAC5E,MAAM,CAAC,mBAAmB,EAAE,yCAAyC,CAAC;SACtE,MAAM,CAAC,qBAAqB,EAAE,2CAA2C,CAAC;SAC1E,MAAM,CAAC,wBAAwB,EAAE,mCAAmC,CAAC;SACrE,MAAM,CAAC,uBAAuB,EAAE,uCAAuC,CAAC;SACxE,MAAM,CAAC,qBAAqB,EAAE,qCAAqC,CAAC;SACpE,MAAM,CAAC,wBAAwB,EAAE,+BAA+B,CAAC,CAAC;AACvE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../../src/program/options/connection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGzC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAK9D"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { createApiKeyFileOption } from '../shared.js';
|
|
2
|
+
export function addConnectionOptions(command) {
|
|
3
|
+
return command
|
|
4
|
+
.option('--api-url <url>', 'Override API URL (optional)')
|
|
5
|
+
.addOption(createApiKeyFileOption())
|
|
6
|
+
.option('--project-id <id>', 'Override project ID (optional)');
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=connection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../../../src/program/options/connection.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAEtD,MAAM,UAAU,oBAAoB,CAAC,OAAgB;IACnD,OAAO,OAAO;SACX,MAAM,CAAC,iBAAiB,EAAE,6BAA6B,CAAC;SACxD,SAAS,CAAC,sBAAsB,EAAE,CAAC;SACnC,MAAM,CAAC,mBAAmB,EAAE,gCAAgC,CAAC,CAAC;AACnE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../../src/program/options/output.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAI1D"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export function addOutputOptions(command) {
|
|
2
|
+
return command
|
|
3
|
+
.option('--output-file <path>', 'Write full output to a file (stdout prints a short summary)')
|
|
4
|
+
.option('--verbose', 'Print full raw output to stdout; with --output-file, also echo it', false);
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=output.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"output.js","sourceRoot":"","sources":["../../../src/program/options/output.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,gBAAgB,CAAC,OAAgB;IAC/C,OAAO,OAAO;SACX,MAAM,CAAC,sBAAsB,EAAE,6DAA6D,CAAC;SAC7F,MAAM,CAAC,WAAW,EAAE,mEAAmE,EAAE,KAAK,CAAC,CAAC;AACrG,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pagination.d.ts","sourceRoot":"","sources":["../../../src/program/options/pagination.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAI9D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pagination.js","sourceRoot":"","sources":["../../../src/program/options/pagination.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,oBAAoB,CAAC,OAAgB;IACnD,OAAO,OAAO;SACX,MAAM,CAAC,iBAAiB,EAAE,yBAAyB,CAAC;SACpD,MAAM,CAAC,sBAAsB,EAAE,uBAAuB,CAAC,CAAC;AAC7D,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { Command } from 'commander';
|
|
2
|
+
export declare function addJsonResourceLeaf(parent: Command, resource: string, action: string, description: string, configure?: (command: Command) => Command, options?: {
|
|
3
|
+
connection?: boolean;
|
|
4
|
+
commandAction?: string;
|
|
5
|
+
}): Command;
|
|
6
|
+
//# sourceMappingURL=resource.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../../../src/program/options/resource.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKzC,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,OAAO,EACf,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,SAAS,GAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAA8B,EAC/D,OAAO,GAAE;IAAE,UAAU,CAAC,EAAE,OAAO,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAO,GAC7D,OAAO,CAsBT"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { CONVENTION_HINT, executeCommand, handleError, printCommandResult } from '../shared.js';
|
|
2
|
+
import { addConnectionOptions } from './connection.js';
|
|
3
|
+
import { addOutputOptions } from './output.js';
|
|
4
|
+
export function addJsonResourceLeaf(parent, resource, action, description, configure = (command) => command, options = {}) {
|
|
5
|
+
let command = configure(parent.command(action).description(description));
|
|
6
|
+
if (options.connection !== false)
|
|
7
|
+
command = addConnectionOptions(command);
|
|
8
|
+
command = addOutputOptions(command).addHelpText('after', CONVENTION_HINT);
|
|
9
|
+
command.action(async (leafOptions) => {
|
|
10
|
+
try {
|
|
11
|
+
const { outputFile, verbose, ...actionOptions } = leafOptions;
|
|
12
|
+
const commandAction = options.commandAction ?? action;
|
|
13
|
+
const result = await executeCommand(resource, commandAction, actionOptions);
|
|
14
|
+
printCommandResult({
|
|
15
|
+
result,
|
|
16
|
+
outputFile,
|
|
17
|
+
verbose,
|
|
18
|
+
resource,
|
|
19
|
+
action: commandAction,
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
catch (error) {
|
|
23
|
+
console.error(handleError(error));
|
|
24
|
+
process.exit(1);
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
return command;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=resource.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resource.js","sourceRoot":"","sources":["../../../src/program/options/resource.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAChG,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,MAAM,UAAU,mBAAmB,CACjC,MAAe,EACf,QAAgB,EAChB,MAAc,EACd,WAAmB,EACnB,YAA2C,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,EAC/D,UAA4D,EAAE;IAE9D,IAAI,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC;IACzE,IAAI,OAAO,CAAC,UAAU,KAAK,KAAK;QAAE,OAAO,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC1E,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IAC1E,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE;QACnC,IAAI,CAAC;YACH,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,aAAa,EAAE,GAAG,WAAW,CAAC;YAC9D,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,MAAM,CAAC;YACtD,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,QAAQ,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC;YAC5E,kBAAkB,CAAC;gBACjB,MAAM;gBACN,UAAU;gBACV,OAAO;gBACP,QAAQ;gBACR,MAAM,EAAE,aAAa;aACtB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;YAClC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IACH,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Command } from './shared.js';
|
|
2
|
+
/**
|
|
3
|
+
* 액션 인벤토리: list/get/create/update/delete/download/cleanup/start/finish/quick/status/set-status/upload-html/link-issue/unlink-issue/list-issues.
|
|
4
|
+
* get/show와 link-issue/issue는 별칭이었으며 get과 link-issue만 유지합니다.
|
|
5
|
+
*/
|
|
6
|
+
export declare function registerPlanCommand(program: Command): void;
|
|
7
|
+
//# sourceMappingURL=plan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../src/program/plan.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAoE,MAAM,aAAa,CAAC;AAKxG;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA+L1D"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import { CONVENTION_HINT, executeCommand, handleError, printCommandResult } from './shared.js';
|
|
2
|
+
import { addCompletionReportMetricsOptions, addGitToggleOption } from './options/completionReport.js';
|
|
3
|
+
import { addOutputOptions } from './options/output.js';
|
|
4
|
+
import { addPaginationOptions } from './options/pagination.js';
|
|
5
|
+
/**
|
|
6
|
+
* 액션 인벤토리: list/get/create/update/delete/download/cleanup/start/finish/quick/status/set-status/upload-html/link-issue/unlink-issue/list-issues.
|
|
7
|
+
* get/show와 link-issue/issue는 별칭이었으며 get과 link-issue만 유지합니다.
|
|
8
|
+
*/
|
|
9
|
+
export function registerPlanCommand(program) {
|
|
10
|
+
const planCommand = program.command('plan').description('Manage plans').addHelpText('after', CONVENTION_HINT);
|
|
11
|
+
const addLeaf = (name, description, configure = (command) => command) => {
|
|
12
|
+
const command = addOutputOptions(configure(planCommand.command(name).description(description))).addHelpText('after', CONVENTION_HINT);
|
|
13
|
+
command.action(async (options) => {
|
|
14
|
+
try {
|
|
15
|
+
const { outputFile, verbose, ...actionOptions } = options;
|
|
16
|
+
const result = await executeCommand('plan', name, actionOptions);
|
|
17
|
+
printCommandResult({
|
|
18
|
+
result,
|
|
19
|
+
outputFile,
|
|
20
|
+
verbose,
|
|
21
|
+
resource: 'plan',
|
|
22
|
+
action: name,
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
catch (error) {
|
|
26
|
+
console.error(handleError(error));
|
|
27
|
+
process.exit(1);
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
return command;
|
|
31
|
+
};
|
|
32
|
+
addLeaf('list', 'List plans', (command) => addPaginationOptions(command)
|
|
33
|
+
.option('--title <title>', 'Plan title')
|
|
34
|
+
.option('--search <text>', 'Plan title/ID search keyword')
|
|
35
|
+
.option('--status <status>', 'Plan status')
|
|
36
|
+
.option('--type <type>', 'Plan type (FEATURE, BUG_FIX, ISSUE, REFACTOR, CHORE)')
|
|
37
|
+
.option('--assigned-to <id>', 'Agent config ID or name'));
|
|
38
|
+
addLeaf('get', 'Get a plan', (command) => command.option('--id <id>', 'Plan ID').option('--include-deps', 'Include dependencies in plan output', false));
|
|
39
|
+
addLeaf('status', 'Get plan lifecycle status', (command) => command.option('--id <id>', 'Plan ID'));
|
|
40
|
+
addLeaf('set-status', 'Set plan lifecycle status', (command) => command.option('--id <id>', 'Plan ID').option('--status <status>', 'Plan status'));
|
|
41
|
+
addLeaf('upload-html', 'Upload a legacy V1 plan HTML preview', (command) => command
|
|
42
|
+
.option('--id <id>', 'Plan ID')
|
|
43
|
+
.option('--file <path>', 'Read plan HTML summary from a local file')
|
|
44
|
+
.option('--stdin', 'Read plan HTML summary from stdin', false)
|
|
45
|
+
.option('--source-label <label>', 'Optional source label for uploaded plan HTML summary'));
|
|
46
|
+
addLeaf('start', 'Start plan execution', (command) => addGitToggleOption(command)
|
|
47
|
+
.option('--id <id>', 'Plan ID')
|
|
48
|
+
.option('--assigned-to <id>', 'Agent config ID or name')
|
|
49
|
+
.option('--task <text>', 'Task summary')
|
|
50
|
+
.option('--runner-type <type>', 'Runner type snapshot: CLAUDE_CODE, CODEX, ANTIGRAVITY, AMP, OPENCODE')
|
|
51
|
+
.option('--model <model>', 'Model ID snapshot')
|
|
52
|
+
.option('--fast', 'Request fast mode for the selected model when supported', false));
|
|
53
|
+
addLeaf('finish', 'Finish a plan and optionally attach a completion report', (command) => addCompletionReportMetricsOptions(command)
|
|
54
|
+
.option('--id <id>', 'Plan ID')
|
|
55
|
+
.option('--task <text>', 'Task summary')
|
|
56
|
+
.option('--report-title <title>', 'Completion report title')
|
|
57
|
+
.option('--report-file <path>', 'Read completion report content from a local file')
|
|
58
|
+
.option('--keep-temp', 'Keep the uploaded file under .agentteams/cli/temp/ instead of deleting it after upload', false)
|
|
59
|
+
.option('--report-status <status>', 'Completion report status: COMPLETED, FAILED, PARTIAL')
|
|
60
|
+
.option('--quality-score <n>', 'Quality score 0-100')
|
|
61
|
+
.option('--review-recommendation <value>', 'Code review recommendation: REQUIRED or NOT_NEEDED')
|
|
62
|
+
.option('--review-reason <text>', 'One-line reason for the review recommendation')
|
|
63
|
+
.option('--repository-remote-url <url>', 'Repository remote origin URL (defaults to git origin)')
|
|
64
|
+
.option('--runner-type <type>', 'Runner type snapshot: CLAUDE_CODE, CODEX, ANTIGRAVITY, AMP, OPENCODE')
|
|
65
|
+
.option('--model <model>', 'Model ID snapshot')
|
|
66
|
+
.option('--fast', 'Request fast mode for the selected model when supported', false));
|
|
67
|
+
addLeaf('create', 'Create a plan', (command) => addGitToggleOption(command)
|
|
68
|
+
.option('--title <title>', 'Plan title')
|
|
69
|
+
.option('--content <content>', 'Plan content (plain text or Tiptap JSON)')
|
|
70
|
+
.option('--interpret-escapes', 'Interpret \\n sequences in --content as newlines', false)
|
|
71
|
+
.option('--file <path>', 'Read plan content from a local file')
|
|
72
|
+
.option('--keep-temp', 'Keep the uploaded file under .agentteams/cli/temp/ instead of deleting it after upload', false)
|
|
73
|
+
.option('--html-file <path>', 'Read a legacy V1 plan HTML preview from a local file')
|
|
74
|
+
.option('--html-stdin', 'Read a legacy V1 plan HTML preview from stdin', false)
|
|
75
|
+
.option('--source-label <label>', 'Optional source label for uploaded plan HTML summary')
|
|
76
|
+
.option('--template <name>', 'Plan content template (refactor-minimal, quick-minimal)')
|
|
77
|
+
.option('--status <status>', 'Ignored because new plans start as BACKLOG')
|
|
78
|
+
.option('--type <type>', 'Plan type (FEATURE, BUG_FIX, ISSUE, REFACTOR, CHORE)')
|
|
79
|
+
.option('--complexity <level>', 'Plan complexity (MINIMAL, STANDARD, FULL; required)')
|
|
80
|
+
.option('--priority <priority>', 'Plan priority (LOW, MEDIUM, HIGH)')
|
|
81
|
+
.option('--repository-remote-url <url>', 'Repository remote origin URL (defaults to git origin)')
|
|
82
|
+
.option('--runner-type <type>', 'Runner type snapshot: CLAUDE_CODE, CODEX, ANTIGRAVITY, AMP, OPENCODE')
|
|
83
|
+
.option('--model <model>', 'Model ID snapshot')
|
|
84
|
+
.option('--fast', 'Request fast mode for the selected model when supported', false));
|
|
85
|
+
addLeaf('update', 'Update a plan', (command) => command
|
|
86
|
+
.option('--id <id>', 'Plan ID')
|
|
87
|
+
.option('--title <title>', 'Plan title')
|
|
88
|
+
.option('--content <content>', 'Plan content (plain text or Tiptap JSON)')
|
|
89
|
+
.option('--interpret-escapes', 'Interpret \\n sequences in --content as newlines', false)
|
|
90
|
+
.option('--file <path>', 'Read plan content from a local file')
|
|
91
|
+
.option('--keep-temp', 'Keep the uploaded file under .agentteams/cli/temp/ instead of deleting it after upload', false)
|
|
92
|
+
.option('--html-file <path>', 'Read a legacy V1 plan HTML preview from a local file')
|
|
93
|
+
.option('--html-stdin', 'Read a legacy V1 plan HTML preview from stdin', false)
|
|
94
|
+
.option('--source-label <label>', 'Optional source label for uploaded plan HTML summary')
|
|
95
|
+
.option('--status <status>', 'Plan status')
|
|
96
|
+
.option('--type <type>', 'Plan type (FEATURE, BUG_FIX, ISSUE, REFACTOR, CHORE)')
|
|
97
|
+
.option('--complexity <level>', 'Plan complexity (MINIMAL, STANDARD, FULL)')
|
|
98
|
+
.option('--complexity-reason <text>', 'Reason for changing complexity (recorded as a MODIFICATION comment)')
|
|
99
|
+
.option('--priority <priority>', 'Plan priority (LOW, MEDIUM, HIGH)'));
|
|
100
|
+
addLeaf('delete', 'Delete a plan', (command) => command.option('--id <id>', 'Plan ID'));
|
|
101
|
+
addLeaf('download', 'Download a plan runbook', (command) => command.option('--id <id>', 'Plan ID'));
|
|
102
|
+
addLeaf('cleanup', 'Remove downloaded plan runbooks', (command) => command.option('--id <id>', 'Plan ID (omit to remove all downloaded plans)'));
|
|
103
|
+
addLeaf('quick', 'Create and finish a quick log', (command) => addCompletionReportMetricsOptions(command)
|
|
104
|
+
.option('--title <title>', 'Plan title')
|
|
105
|
+
.option('--content <content>', 'Plan content')
|
|
106
|
+
.option('--interpret-escapes', 'Interpret \\n sequences in --content as newlines', false)
|
|
107
|
+
.option('--file <path>', 'Read plan content from a local file')
|
|
108
|
+
.option('--keep-temp', 'Keep uploaded files under .agentteams/cli/temp/ instead of deleting them after upload', false)
|
|
109
|
+
.option('--type <type>', 'Plan type (FEATURE, BUG_FIX, ISSUE, REFACTOR, CHORE)')
|
|
110
|
+
.option('--complexity <level>', 'Plan complexity (MINIMAL, STANDARD, FULL)')
|
|
111
|
+
.option('--priority <priority>', 'Plan priority (LOW, MEDIUM, HIGH)')
|
|
112
|
+
.option('--repository-remote-url <url>', 'Repository remote origin URL (defaults to git origin)')
|
|
113
|
+
.option('--assigned-to <id>', 'Agent config ID or name')
|
|
114
|
+
.option('--report-title <title>', 'Completion report title')
|
|
115
|
+
.option('--report-file <path>', 'Read completion report content from a local file')
|
|
116
|
+
.option('--report-status <status>', 'Completion report status: COMPLETED, FAILED, PARTIAL')
|
|
117
|
+
.option('--quality-score <n>', 'Quality score 0-100')
|
|
118
|
+
.option('--review-recommendation <value>', 'Code review recommendation: REQUIRED or NOT_NEEDED')
|
|
119
|
+
.option('--review-reason <text>', 'One-line reason for the review recommendation')
|
|
120
|
+
.option('--runner-type <type>', 'Runner type snapshot: CLAUDE_CODE, CODEX, ANTIGRAVITY, AMP, OPENCODE')
|
|
121
|
+
.option('--model <model>', 'Model ID snapshot')
|
|
122
|
+
.option('--fast', 'Request fast mode for the selected model when supported', false));
|
|
123
|
+
// 러너(@agentteams/runner)는 CLI와 별도로 배포되므로, CLI만 먼저 올라간 환경의
|
|
124
|
+
// 구 러너가 여전히 `plan issue`를 호출합니다. 한 릴리스 동안 숨은 별칭으로 흡수합니다.
|
|
125
|
+
// (별칭이어도 command.name()은 'link-issue'라 액션 분기는 그대로입니다.)
|
|
126
|
+
addLeaf('link-issue', 'Link an external issue to a plan', (command) => command
|
|
127
|
+
.alias('issue')
|
|
128
|
+
.option('--id <id>', 'Plan ID')
|
|
129
|
+
.option('--provider <provider>', 'External issue provider (GITHUB, GITLAB, LINEAR)')
|
|
130
|
+
.option('--external-id <id>', 'External issue ID')
|
|
131
|
+
.option('--external-url <url>', 'External issue URL')
|
|
132
|
+
.option('--title <title>', 'External issue title')
|
|
133
|
+
.option('--metadata <json>', 'Provider metadata as JSON (e.g. {"owner":"org","repo":"name"})'));
|
|
134
|
+
addLeaf('unlink-issue', 'Unlink an external issue from a plan', (command) => command.option('--id <id>', 'Plan ID').option('--issue-id <id>', 'PlanExternalIssue ID'));
|
|
135
|
+
addLeaf('list-issues', 'List external issues linked to a plan', (command) => command.option('--id <id>', 'Plan ID'));
|
|
136
|
+
}
|
|
137
|
+
//# sourceMappingURL=plan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plan.js","sourceRoot":"","sources":["../../src/program/plan.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postmortem.d.ts","sourceRoot":"","sources":["../../src/program/postmortem.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAmB,MAAM,aAAa,CAAC;AAKvD,uDAAuD;AACvD,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgChE"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { CONVENTION_HINT } from './shared.js';
|
|
2
|
+
import { addGitToggleOption } from './options/completionReport.js';
|
|
3
|
+
import { addPaginationOptions } from './options/pagination.js';
|
|
4
|
+
import { addJsonResourceLeaf } from './options/resource.js';
|
|
5
|
+
/** 액션 인벤토리: list/get/create/update/delete/download. */
|
|
6
|
+
export function registerPostmortemCommand(program) {
|
|
7
|
+
const root = program.command('postmortem').description('Manage post mortems').addHelpText('after', CONVENTION_HINT);
|
|
8
|
+
const addLeaf = (action, description, configure = (command) => command) => addJsonResourceLeaf(root, 'postmortem', action, description, configure);
|
|
9
|
+
const addContent = (command) => command
|
|
10
|
+
.option('--plan-id <id>', 'Plan ID')
|
|
11
|
+
.option('--title <title>', 'Post mortem title')
|
|
12
|
+
.option('--content <content>', 'Post mortem markdown content')
|
|
13
|
+
.option('--file <path>', 'Read postmortem content from a local file')
|
|
14
|
+
.option('--keep-temp', 'Keep the uploaded temporary file', false)
|
|
15
|
+
.option('--action-items <csv>', 'Action items (comma-separated)')
|
|
16
|
+
.option('--status <status>', 'Post mortem status');
|
|
17
|
+
addLeaf('list', 'List post mortems', (command) => addPaginationOptions(command)
|
|
18
|
+
.option('--plan-id <id>', 'Plan ID')
|
|
19
|
+
.option('--status <status>', 'Post mortem status')
|
|
20
|
+
.option('--search <text>', 'Title keyword search'));
|
|
21
|
+
addLeaf('get', 'Get a post mortem', (command) => command.option('--id <id>', 'Post mortem ID'));
|
|
22
|
+
addLeaf('create', 'Create a post mortem', (command) => addGitToggleOption(addContent(command)).option('--repository-remote-url <url>', 'Repository remote origin URL (defaults to git origin)'));
|
|
23
|
+
addLeaf('update', 'Update a post mortem', (command) => addContent(command.option('--id <id>', 'Post mortem ID')));
|
|
24
|
+
addLeaf('delete', 'Delete a post mortem', (command) => command.option('--id <id>', 'Post mortem ID'));
|
|
25
|
+
addLeaf('download', 'Download a post mortem', (command) => command.option('--id <id>', 'Post mortem ID'));
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=postmortem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postmortem.js","sourceRoot":"","sources":["../../src/program/postmortem.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,eAAe,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,uDAAuD;AACvD,MAAM,UAAU,yBAAyB,CAAC,OAAgB;IACxD,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC,WAAW,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IACpH,MAAM,OAAO,GAAG,CACd,MAAc,EACd,WAAmB,EACnB,YAA2C,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,EAC/D,EAAE,CAAC,mBAAmB,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;IAC7E,MAAM,UAAU,GAAG,CAAC,OAAgB,EAAE,EAAE,CACtC,OAAO;SACJ,MAAM,CAAC,gBAAgB,EAAE,SAAS,CAAC;SACnC,MAAM,CAAC,iBAAiB,EAAE,mBAAmB,CAAC;SAC9C,MAAM,CAAC,qBAAqB,EAAE,8BAA8B,CAAC;SAC7D,MAAM,CAAC,eAAe,EAAE,2CAA2C,CAAC;SACpE,MAAM,CAAC,aAAa,EAAE,kCAAkC,EAAE,KAAK,CAAC;SAChE,MAAM,CAAC,sBAAsB,EAAE,gCAAgC,CAAC;SAChE,MAAM,CAAC,mBAAmB,EAAE,oBAAoB,CAAC,CAAC;IACvD,OAAO,CAAC,MAAM,EAAE,mBAAmB,EAAE,CAAC,OAAO,EAAE,EAAE,CAC/C,oBAAoB,CAAC,OAAO,CAAC;SAC1B,MAAM,CAAC,gBAAgB,EAAE,SAAS,CAAC;SACnC,MAAM,CAAC,mBAAmB,EAAE,oBAAoB,CAAC;SACjD,MAAM,CAAC,iBAAiB,EAAE,sBAAsB,CAAC,CACrD,CAAC;IACF,OAAO,CAAC,KAAK,EAAE,mBAAmB,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAChG,OAAO,CAAC,QAAQ,EAAE,sBAAsB,EAAE,CAAC,OAAO,EAAE,EAAE,CACpD,kBAAkB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAC5C,+BAA+B,EAC/B,uDAAuD,CACxD,CACF,CAAC;IACF,OAAO,CAAC,QAAQ,EAAE,sBAAsB,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAClH,OAAO,CAAC,QAAQ,EAAE,sBAAsB,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC,CAAC;IACtG,OAAO,CAAC,UAAU,EAAE,wBAAwB,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC,CAAC;AAC5G,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../src/program/report.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAmB,MAAM,aAAa,CAAC;AAQvD,sEAAsE;AACtE,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA2C5D"}
|