@agentteams/cli 0.1.97 → 0.1.99
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 +27 -11
- package/dist/api/sentry.d.ts +7 -0
- package/dist/api/sentry.d.ts.map +1 -0
- package/dist/api/sentry.js +18 -0
- package/dist/api/sentry.js.map +1 -0
- package/dist/commands/auth.d.ts +2 -0
- package/dist/commands/auth.d.ts.map +1 -1
- package/dist/commands/auth.js +15 -4
- 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 +4 -5
- package/dist/commands/codeReview.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/index.d.ts.map +1 -1
- package/dist/commands/index.js +6 -0
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/plan.d.ts.map +1 -1
- package/dist/commands/plan.js +42 -75
- 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 +7 -9
- package/dist/commands/report.js.map +1 -1
- package/dist/commands/sentry.d.ts +2 -0
- package/dist/commands/sentry.d.ts.map +1 -0
- package/dist/commands/sentry.js +26 -0
- package/dist/commands/sentry.js.map +1 -0
- 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.js +1 -1
- package/dist/mcp/context.js.map +1 -1
- package/dist/mcp-registration/clients.d.ts.map +1 -1
- package/dist/mcp-registration/clients.js +92 -0
- package/dist/mcp-registration/clients.js.map +1 -1
- package/dist/mcp-registration/detect.d.ts +1 -0
- package/dist/mcp-registration/detect.d.ts.map +1 -1
- package/dist/mcp-registration/detect.js +25 -2
- package/dist/mcp-registration/detect.js.map +1 -1
- package/dist/mcp-registration/index.d.ts +2 -2
- package/dist/mcp-registration/index.d.ts.map +1 -1
- package/dist/mcp-registration/index.js +4 -0
- package/dist/mcp-registration/index.js.map +1 -1
- package/dist/mcp-registration/install.d.ts +2 -0
- package/dist/mcp-registration/install.d.ts.map +1 -1
- package/dist/mcp-registration/install.js +22 -2
- package/dist/mcp-registration/install.js.map +1 -1
- package/dist/mcp-registration/types.d.ts +8 -1
- package/dist/mcp-registration/types.d.ts.map +1 -1
- package/dist/mcp-registration/types.js +1 -0
- package/dist/mcp-registration/types.js.map +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 +101 -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 +68 -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 +138 -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 +39 -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/sentry.d.ts +3 -0
- package/dist/program/sentry.d.ts.map +1 -0
- package/dist/program/sentry.js +19 -0
- package/dist/program/sentry.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/utils/agentIdentity.d.ts +43 -0
- package/dist/utils/agentIdentity.d.ts.map +1 -1
- package/dist/utils/agentIdentity.js +45 -0
- package/dist/utils/agentIdentity.js.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/config.d.ts +9 -3
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +12 -4
- 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/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/dist/utils/runnerTypes.d.ts +29 -0
- package/dist/utils/runnerTypes.d.ts.map +1 -0
- package/dist/utils/runnerTypes.js +40 -0
- package/dist/utils/runnerTypes.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { Option, CONVENTION_HINT, executeCommand, handleError, printCommandResult } from './shared.js';
|
|
2
|
+
import { addOutputOptions } from './options/output.js';
|
|
3
|
+
/** 액션 인벤토리: list/show/download/status/create/update/delete. */
|
|
4
|
+
export function registerConventionCommand(program) {
|
|
5
|
+
const root = program
|
|
6
|
+
.command('convention')
|
|
7
|
+
.description('Manage project conventions')
|
|
8
|
+
.addHelpText('after', CONVENTION_HINT);
|
|
9
|
+
const addLeaf = (name, description, configure = (command) => command) => {
|
|
10
|
+
const command = addOutputOptions(configure(root.command(name).description(description))).addHelpText('after', CONVENTION_HINT);
|
|
11
|
+
command.action(async (options) => {
|
|
12
|
+
try {
|
|
13
|
+
const { outputFile, verbose, ...actionOptions } = options;
|
|
14
|
+
const result = await executeCommand('convention', name, {
|
|
15
|
+
...actionOptions,
|
|
16
|
+
cwd: actionOptions.cwd ?? process.cwd(),
|
|
17
|
+
});
|
|
18
|
+
printCommandResult({ result, outputFile, verbose });
|
|
19
|
+
}
|
|
20
|
+
catch (error) {
|
|
21
|
+
console.error(handleError(error));
|
|
22
|
+
process.exit(1);
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
return command;
|
|
26
|
+
};
|
|
27
|
+
const addCwd = (command) => command.option('--cwd <path>', 'Working directory (defaults to current)');
|
|
28
|
+
const addFiles = (command) => addCwd(command).option('-f, --file <path>', 'Target convention markdown file (repeatable)', (value, previous = []) => previous.concat([value]), []);
|
|
29
|
+
addLeaf('list', 'List project conventions');
|
|
30
|
+
addLeaf('show', 'Show the effective convention');
|
|
31
|
+
addLeaf('download', 'Download project conventions', addCwd);
|
|
32
|
+
addLeaf('status', 'Show convention freshness status', addCwd);
|
|
33
|
+
addLeaf('create', 'Create project conventions', (command) => addFiles(command).addOption(new Option('--scope <scope>', 'Convention scope (defaults to PROJECT)').choices(['PROJECT', 'PERSONAL'])));
|
|
34
|
+
addLeaf('update', 'Update project conventions', (command) => addFiles(command).option('--apply', 'Apply changes to server (default: dry-run)', false));
|
|
35
|
+
addLeaf('delete', 'Delete project conventions', (command) => addFiles(command).option('--apply', 'Apply changes to server (default: dry-run)', false));
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=convention.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convention.js","sourceRoot":"","sources":["../../src/program/convention.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dependency.d.ts","sourceRoot":"","sources":["../../src/program/dependency.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAmB,MAAM,aAAa,CAAC;AAGvD,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgBhE"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { CONVENTION_HINT } from './shared.js';
|
|
2
|
+
import { addJsonResourceLeaf } from './options/resource.js';
|
|
3
|
+
export function registerDependencyCommand(program) {
|
|
4
|
+
const root = program
|
|
5
|
+
.command('dependency')
|
|
6
|
+
.description('Manage plan dependencies')
|
|
7
|
+
.addHelpText('after', CONVENTION_HINT);
|
|
8
|
+
const addLeaf = (action, description, configure) => addJsonResourceLeaf(root, 'dependency', action, description, configure, {
|
|
9
|
+
connection: false,
|
|
10
|
+
});
|
|
11
|
+
addLeaf('list', 'List plan dependencies', (command) => command.option('--plan-id <id>', 'Plan ID'));
|
|
12
|
+
addLeaf('create', 'Create a plan dependency', (command) => command.option('--plan-id <id>', 'Plan ID').option('--blocking-plan-id <id>', 'Blocking plan ID'));
|
|
13
|
+
addLeaf('delete', 'Delete a plan dependency', (command) => command.option('--plan-id <id>', 'Plan ID').option('--dep-id <id>', 'Dependency ID to delete'));
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=dependency.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dependency.js","sourceRoot":"","sources":["../../src/program/dependency.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,eAAe,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,MAAM,UAAU,yBAAyB,CAAC,OAAgB;IACxD,MAAM,IAAI,GAAG,OAAO;SACjB,OAAO,CAAC,YAAY,CAAC;SACrB,WAAW,CAAC,0BAA0B,CAAC;SACvC,WAAW,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IACzC,MAAM,OAAO,GAAG,CAAC,MAAc,EAAE,WAAmB,EAAE,SAAwC,EAAE,EAAE,CAChG,mBAAmB,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE;QACtE,UAAU,EAAE,KAAK;KAClB,CAAC,CAAC;IACL,OAAO,CAAC,MAAM,EAAE,wBAAwB,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC,CAAC;IACpG,OAAO,CAAC,QAAQ,EAAE,0BAA0B,EAAE,CAAC,OAAO,EAAE,EAAE,CACxD,OAAO,CAAC,MAAM,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC,MAAM,CAAC,yBAAyB,EAAE,kBAAkB,CAAC,CAClG,CAAC;IACF,OAAO,CAAC,QAAQ,EAAE,0BAA0B,EAAE,CAAC,OAAO,EAAE,EAAE,CACxD,OAAO,CAAC,MAAM,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC,MAAM,CAAC,eAAe,EAAE,yBAAyB,CAAC,CAC/F,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/program/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EAOR,MAAM,aAAa,CAAC;AAGrB;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA+B5D"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { CONVENTION_HINT, executeCommand, executeValidatedInteractiveCommand, handleError, printDoctorResult, resolveDoctorExitCode, } from './shared.js';
|
|
2
|
+
/**
|
|
3
|
+
* 액션 인벤토리: 액션: run. 실사용 옵션: cwd, installWorktreeHook. 별칭/도움말 불일치: 없음.
|
|
4
|
+
*/
|
|
5
|
+
export function registerDoctorCommand(program) {
|
|
6
|
+
program
|
|
7
|
+
.command('doctor')
|
|
8
|
+
.description('Diagnose convention reachability and install the worktree bootstrap hook')
|
|
9
|
+
.option('--format <format>', 'Output format (json; defaults to human-readable view)')
|
|
10
|
+
// The doctor honors the same gate `init` does — a repository with no linked
|
|
11
|
+
// worktree keeps its shared .git/hooks untouched — so opting in needs a flag
|
|
12
|
+
// on this command too, not just on `init`.
|
|
13
|
+
.option('--install-worktree-hook', 'Install the managed git post-checkout hook even if this repository has no linked worktrees yet.', false)
|
|
14
|
+
.addHelpText('after', CONVENTION_HINT)
|
|
15
|
+
.action(async (options) => {
|
|
16
|
+
try {
|
|
17
|
+
const { result, format } = await executeValidatedInteractiveCommand(options.format, async () => executeCommand('doctor', 'run', {
|
|
18
|
+
cwd: process.cwd(),
|
|
19
|
+
installWorktreeHook: options.installWorktreeHook === true,
|
|
20
|
+
}));
|
|
21
|
+
printDoctorResult(result, format);
|
|
22
|
+
// exitCode (not process.exit) lets stdout flush before termination.
|
|
23
|
+
process.exitCode = resolveDoctorExitCode(result);
|
|
24
|
+
}
|
|
25
|
+
catch (error) {
|
|
26
|
+
console.error(handleError(error));
|
|
27
|
+
process.exit(1);
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=doctor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/program/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,eAAe,EACf,cAAc,EACd,kCAAkC,EAClC,WAAW,EACX,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,aAAa,CAAC;AAGrB;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAgB;IACpD,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,0EAA0E,CAAC;SACvF,MAAM,CAAC,mBAAmB,EAAE,uDAAuD,CAAC;QACrF,4EAA4E;QAC5E,6EAA6E;QAC7E,2CAA2C;SAC1C,MAAM,CACL,yBAAyB,EACzB,iGAAiG,EACjG,KAAK,CACN;SACA,WAAW,CAAC,OAAO,EAAE,eAAe,CAAC;SACrC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACxB,IAAI,CAAC;YACH,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,kCAAkC,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE,CAC7F,cAAc,CAAC,QAAQ,EAAE,KAAK,EAAE;gBAC9B,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;gBAClB,mBAAmB,EAAE,OAAO,CAAC,mBAAmB,KAAK,IAAI;aAC1D,CAAC,CACH,CAAC;YAEF,iBAAiB,CAAC,MAAsB,EAAE,MAAM,CAAC,CAAC;YAClD,oEAAoE;YACpE,OAAO,CAAC,QAAQ,GAAG,qBAAqB,CAAC,MAAsB,CAAC,CAAC;QACnE,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,7 @@
|
|
|
1
|
+
import { Command } from './shared.js';
|
|
2
|
+
/**
|
|
3
|
+
* 액션 인벤토리: create/update/download/list/tags/delete/archive/unarchive/revisions/revision-get/revision-restore/comment-list/comment-create/comment-update/comment-delete.
|
|
4
|
+
* archive/unarchive는 반대 동작의 별개 액션이며 --limit 별칭은 제거합니다.
|
|
5
|
+
*/
|
|
6
|
+
export declare function registerDocumentCommand(program: Command): void;
|
|
7
|
+
//# sourceMappingURL=document.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../../src/program/document.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAoE,MAAM,aAAa,CAAC;AAKxG;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAyH9D"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { CONVENTION_HINT, executeCommand, handleError, printCommandResult } from './shared.js';
|
|
2
|
+
import { addConnectionOptions } from './options/connection.js';
|
|
3
|
+
import { addOutputOptions } from './options/output.js';
|
|
4
|
+
import { addPaginationOptions } from './options/pagination.js';
|
|
5
|
+
/**
|
|
6
|
+
* 액션 인벤토리: create/update/download/list/tags/delete/archive/unarchive/revisions/revision-get/revision-restore/comment-list/comment-create/comment-update/comment-delete.
|
|
7
|
+
* archive/unarchive는 반대 동작의 별개 액션이며 --limit 별칭은 제거합니다.
|
|
8
|
+
*/
|
|
9
|
+
export function registerDocumentCommand(program) {
|
|
10
|
+
const parent = program
|
|
11
|
+
.command('document')
|
|
12
|
+
.description('Manage project documents')
|
|
13
|
+
.addHelpText('after', CONVENTION_HINT);
|
|
14
|
+
const addLeaf = (name, description, configure = (command) => command) => {
|
|
15
|
+
const command = addOutputOptions(addConnectionOptions(configure(parent.command(name).description(description)))).addHelpText('after', CONVENTION_HINT);
|
|
16
|
+
command.action(async (options) => {
|
|
17
|
+
try {
|
|
18
|
+
const { outputFile, verbose, ...actionOptions } = options;
|
|
19
|
+
const result = await executeCommand('document', name, actionOptions);
|
|
20
|
+
printCommandResult({
|
|
21
|
+
result,
|
|
22
|
+
outputFile,
|
|
23
|
+
verbose,
|
|
24
|
+
resource: 'document',
|
|
25
|
+
action: name,
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
catch (error) {
|
|
29
|
+
console.error(handleError(error));
|
|
30
|
+
process.exit(1);
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
return command;
|
|
34
|
+
};
|
|
35
|
+
const addWriteContractOptions = (command, includeExpectedUpdatedAt = false) => {
|
|
36
|
+
const configured = command
|
|
37
|
+
.option('--guide-hash <hash>', 'Hash of the document guide you followed. Stale hash is rejected with GUIDE_OUTDATED.')
|
|
38
|
+
.option('--idempotency-key <key>', 'Retry-safe key. Repeating the same key with the same request replays the first result.');
|
|
39
|
+
return includeExpectedUpdatedAt
|
|
40
|
+
? configured.option('--expected-updated-at <iso>', "The document's updatedAt as you last read it. Rejects the write if it changed meanwhile.")
|
|
41
|
+
: configured;
|
|
42
|
+
};
|
|
43
|
+
addLeaf('create', 'Create a document', (command) => addWriteContractOptions(command)
|
|
44
|
+
.option('--title <title>', 'Document title')
|
|
45
|
+
.option('--file <path>', 'Read markdown body from a local file')
|
|
46
|
+
.option('--tags <tags>', 'Comma-separated tag suggestions')
|
|
47
|
+
.option('--suggested-tags <tags>', 'Comma-separated AI-suggested tags')
|
|
48
|
+
.option('--visibility <visibility>', 'Document visibility: PRIVATE or PROJECT'));
|
|
49
|
+
addLeaf('update', 'Update a document', (command) => addWriteContractOptions(command, true)
|
|
50
|
+
.option('--id <id>', 'Document ID')
|
|
51
|
+
.option('--title <title>', 'Document title')
|
|
52
|
+
.option('--file <path>', 'Read markdown body from a local file')
|
|
53
|
+
.option('--tags <tags>', 'Comma-separated tag suggestions')
|
|
54
|
+
.option('--suggested-tags <tags>', 'Comma-separated AI-suggested tags')
|
|
55
|
+
.option('--visibility <visibility>', 'Document visibility: PRIVATE or PROJECT'));
|
|
56
|
+
addLeaf('download', 'Download a document', (command) => command.option('--id <id>', 'Document ID'));
|
|
57
|
+
addLeaf('list', 'List documents', (command) => addPaginationOptions(command)
|
|
58
|
+
.option('--query <q>', 'Search query')
|
|
59
|
+
.option('--tags <tags>', 'Comma-separated tag filter')
|
|
60
|
+
.option('--visibility <visibility>', 'Document visibility: PRIVATE or PROJECT')
|
|
61
|
+
.option('--archived <state>', 'Archive filter (ACTIVE, ARCHIVED, ALL)'));
|
|
62
|
+
addLeaf('tags', 'List confirmed document tags', (command) => command
|
|
63
|
+
.option('--visibility <visibility>', 'Document visibility: PRIVATE or PROJECT')
|
|
64
|
+
.option('--archived <state>', 'Archive filter (ACTIVE, ARCHIVED, ALL)'));
|
|
65
|
+
addLeaf('delete', 'Delete a document', (command) => addWriteContractOptions(command, true).option('--id <id>', 'Document ID'));
|
|
66
|
+
addLeaf('archive', 'Archive a document', (command) => command.option('--id <id>', 'Document ID'));
|
|
67
|
+
addLeaf('unarchive', 'Unarchive a document', (command) => command.option('--id <id>', 'Document ID'));
|
|
68
|
+
addLeaf('revisions', 'List document revisions', (command) => addPaginationOptions(command).option('--id <id>', 'Document ID'));
|
|
69
|
+
addLeaf('revision-get', 'Get a document revision', (command) => command.option('--id <id>', 'Document ID').option('--revision-id <id>', 'Document revision ID'));
|
|
70
|
+
addLeaf('revision-restore', 'Restore a document revision', (command) => command.option('--id <id>', 'Document ID').option('--revision-id <id>', 'Document revision ID'));
|
|
71
|
+
addLeaf('comment-list', 'List document comments', (command) => addPaginationOptions(command)
|
|
72
|
+
.option('--id <id>', 'Document ID')
|
|
73
|
+
.option('--order <order>', 'Comment order (asc or desc)'));
|
|
74
|
+
addLeaf('comment-create', 'Create a document comment', (command) => addWriteContractOptions(command)
|
|
75
|
+
.option('--id <id>', 'Document ID')
|
|
76
|
+
.option('--content <text>', 'Markdown comment content')
|
|
77
|
+
.option('--file <path>', 'Read markdown comment content from a local file'));
|
|
78
|
+
addLeaf('comment-update', 'Update a document comment', (command) => addWriteContractOptions(command, true)
|
|
79
|
+
.option('--id <id>', 'Document ID')
|
|
80
|
+
.option('--comment-id <id>', 'Document comment ID')
|
|
81
|
+
.option('--content <text>', 'Markdown comment content')
|
|
82
|
+
.option('--file <path>', 'Read markdown comment content from a local file'));
|
|
83
|
+
addLeaf('comment-delete', 'Delete a document comment', (command) => addWriteContractOptions(command, true)
|
|
84
|
+
.option('--id <id>', 'Document ID')
|
|
85
|
+
.option('--comment-id <id>', 'Document comment ID'));
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=document.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"document.js","sourceRoot":"","sources":["../../src/program/document.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feedback.d.ts","sourceRoot":"","sources":["../../src/program/feedback.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAmB,MAAM,aAAa,CAAC;AAGvD,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAQ9D"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { CONVENTION_HINT } from './shared.js';
|
|
2
|
+
import { addJsonResourceLeaf } from './options/resource.js';
|
|
3
|
+
export function registerFeedbackCommand(program) {
|
|
4
|
+
const root = program.command('feedback').description('Send product feedback').addHelpText('after', CONVENTION_HINT);
|
|
5
|
+
addJsonResourceLeaf(root, 'feedback', 'create', 'Create feedback', (command) => command
|
|
6
|
+
.option('--category <category>', 'Feedback category (BUG, SUGGESTION, CONVENTION, UX)')
|
|
7
|
+
.option('--title <title>', 'Feedback title')
|
|
8
|
+
.option('--content <content>', 'Feedback content'));
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=feedback.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feedback.js","sourceRoot":"","sources":["../../src/program/feedback.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,eAAe,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,MAAM,UAAU,uBAAuB,CAAC,OAAgB;IACtD,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,uBAAuB,CAAC,CAAC,WAAW,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IACpH,mBAAmB,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,iBAAiB,EAAE,CAAC,OAAO,EAAE,EAAE,CAC7E,OAAO;SACJ,MAAM,CAAC,uBAAuB,EAAE,qDAAqD,CAAC;SACtF,MAAM,CAAC,iBAAiB,EAAE,gBAAgB,CAAC;SAC3C,MAAM,CAAC,qBAAqB,EAAE,kBAAkB,CAAC,CACrD,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/program/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA4BpC,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CA0CtD"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { registerAgentConfigCommand } from './agentConfig.js';
|
|
3
|
+
import { registerAttachmentCommand } from './attachment.js';
|
|
4
|
+
import { registerAuthCommand } from './auth.js';
|
|
5
|
+
import { registerChangeSetCommand } from './changeSet.js';
|
|
6
|
+
import { registerCoactionCommand } from './coaction.js';
|
|
7
|
+
import { registerCodeReviewCommand } from './codeReview.js';
|
|
8
|
+
import { registerCommentCommand } from './comment.js';
|
|
9
|
+
import { registerConfigCommand } from './config.js';
|
|
10
|
+
import { registerConventionCommand } from './convention.js';
|
|
11
|
+
import { registerDependencyCommand } from './dependency.js';
|
|
12
|
+
import { registerDoctorCommand } from './doctor.js';
|
|
13
|
+
import { registerDocumentCommand } from './document.js';
|
|
14
|
+
import { registerFeedbackCommand } from './feedback.js';
|
|
15
|
+
import { registerInitCommand } from './init.js';
|
|
16
|
+
import { registerLinearCommand } from './linear.js';
|
|
17
|
+
import { registerMcpCommand } from './mcp.js';
|
|
18
|
+
import { registerPlanCommand } from './plan.js';
|
|
19
|
+
import { registerPostmortemCommand } from './postmortem.js';
|
|
20
|
+
import { registerReportCommand } from './report.js';
|
|
21
|
+
import { registerResolveCommand } from './resolve.js';
|
|
22
|
+
import { registerSearchCommand } from './search.js';
|
|
23
|
+
import { registerSentryCommand } from './sentry.js';
|
|
24
|
+
import { registerSyncCommand } from './sync.js';
|
|
25
|
+
import { registerTaskCommand } from './task.js';
|
|
26
|
+
import { registerWorktreeCommand } from './worktree.js';
|
|
27
|
+
import { registerApiKeyHook, removedContractHint } from './shared.js';
|
|
28
|
+
export function createProgram(version) {
|
|
29
|
+
const program = new Command();
|
|
30
|
+
// 서브커맨드는 생성 시점에 outputConfiguration을 상속하므로 등록보다 먼저 설정합니다.
|
|
31
|
+
program.configureOutput({
|
|
32
|
+
writeErr: (text) => {
|
|
33
|
+
process.stderr.write(text);
|
|
34
|
+
const hint = removedContractHint(text);
|
|
35
|
+
if (hint)
|
|
36
|
+
process.stderr.write(`hint: ${hint}\n`);
|
|
37
|
+
},
|
|
38
|
+
});
|
|
39
|
+
registerApiKeyHook(program);
|
|
40
|
+
program.name('agentteams').description('CLI tool for AgentTeams API').version(version);
|
|
41
|
+
registerInitCommand(program);
|
|
42
|
+
registerAuthCommand(program);
|
|
43
|
+
registerDoctorCommand(program);
|
|
44
|
+
registerSyncCommand(program);
|
|
45
|
+
registerWorktreeCommand(program);
|
|
46
|
+
registerPlanCommand(program);
|
|
47
|
+
registerResolveCommand(program);
|
|
48
|
+
registerTaskCommand(program);
|
|
49
|
+
registerCommentCommand(program);
|
|
50
|
+
registerAttachmentCommand(program);
|
|
51
|
+
registerReportCommand(program);
|
|
52
|
+
registerCodeReviewCommand(program);
|
|
53
|
+
registerChangeSetCommand(program);
|
|
54
|
+
registerPostmortemCommand(program);
|
|
55
|
+
registerCoactionCommand(program);
|
|
56
|
+
registerFeedbackCommand(program);
|
|
57
|
+
registerConventionCommand(program);
|
|
58
|
+
registerDocumentCommand(program);
|
|
59
|
+
registerDependencyCommand(program);
|
|
60
|
+
registerAgentConfigCommand(program);
|
|
61
|
+
registerConfigCommand(program);
|
|
62
|
+
registerSearchCommand(program);
|
|
63
|
+
registerMcpCommand(program);
|
|
64
|
+
registerLinearCommand(program);
|
|
65
|
+
registerSentryCommand(program);
|
|
66
|
+
return program;
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/program/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { Command } from './shared.js';
|
|
2
|
+
/**
|
|
3
|
+
* 액션 인벤토리: 액션: start. 실사용 옵션: authMode, agentFiles, agentFilesExample, installWorktreeHook, deviceAuth, setDefault. 별칭/도움말 불일치: 없음.
|
|
4
|
+
*/
|
|
5
|
+
export declare function registerInitCommand(program: Command): void;
|
|
6
|
+
//# sourceMappingURL=init.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/program/init.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EASR,MAAM,aAAa,CAAC;AAErB;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4D1D"}
|
|
@@ -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"}
|