centy 0.0.24 → 0.0.26
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/dist/commands/add/plan.d.ts +18 -0
- package/dist/commands/add/plan.d.ts.map +1 -0
- package/dist/commands/add/plan.js +87 -0
- package/dist/commands/add/plan.js.map +1 -0
- package/dist/commands/assign/issue.d.ts +19 -0
- package/dist/commands/assign/issue.d.ts.map +1 -0
- package/dist/commands/assign/issue.js +79 -0
- package/dist/commands/assign/issue.js.map +1 -0
- package/dist/commands/close/issue.d.ts +16 -0
- package/dist/commands/close/issue.d.ts.map +1 -0
- package/dist/commands/close/issue.js +54 -0
- package/dist/commands/close/issue.js.map +1 -0
- package/dist/commands/close/org-issue.d.ts +17 -0
- package/dist/commands/close/org-issue.d.ts.map +1 -0
- package/dist/commands/close/org-issue.js +69 -0
- package/dist/commands/close/org-issue.js.map +1 -0
- package/dist/commands/close.d.ts +22 -0
- package/dist/commands/close.d.ts.map +1 -0
- package/dist/commands/close.js +198 -0
- package/dist/commands/close.js.map +1 -0
- package/dist/commands/create/issue.d.ts +1 -0
- package/dist/commands/create/issue.d.ts.map +1 -1
- package/dist/commands/create/issue.js +6 -0
- package/dist/commands/create/issue.js.map +1 -1
- package/dist/commands/create/user.d.ts +18 -0
- package/dist/commands/create/user.d.ts.map +1 -0
- package/dist/commands/create/user.js +85 -0
- package/dist/commands/create/user.js.map +1 -0
- package/dist/commands/delete/plan.d.ts +17 -0
- package/dist/commands/delete/plan.d.ts.map +1 -0
- package/dist/commands/delete/plan.js +74 -0
- package/dist/commands/delete/plan.js.map +1 -0
- package/dist/commands/delete/user.d.ts +17 -0
- package/dist/commands/delete/user.d.ts.map +1 -0
- package/dist/commands/delete/user.js +73 -0
- package/dist/commands/delete/user.js.map +1 -0
- package/dist/commands/duplicate/doc.d.ts +19 -0
- package/dist/commands/duplicate/doc.d.ts.map +1 -0
- package/dist/commands/duplicate/doc.js +87 -0
- package/dist/commands/duplicate/doc.js.map +1 -0
- package/dist/commands/duplicate/issue.d.ts +18 -0
- package/dist/commands/duplicate/issue.d.ts.map +1 -0
- package/dist/commands/duplicate/issue.js +82 -0
- package/dist/commands/duplicate/issue.js.map +1 -0
- package/dist/commands/get/issue.d.ts +1 -0
- package/dist/commands/get/issue.d.ts.map +1 -1
- package/dist/commands/get/issue.js +38 -1
- package/dist/commands/get/issue.js.map +1 -1
- package/dist/commands/get/plan.d.ts +18 -0
- package/dist/commands/get/plan.d.ts.map +1 -0
- package/dist/commands/get/plan.js +68 -0
- package/dist/commands/get/plan.js.map +1 -0
- package/dist/commands/get/user.d.ts +17 -0
- package/dist/commands/get/user.d.ts.map +1 -0
- package/dist/commands/get/user.js +75 -0
- package/dist/commands/get/user.js.map +1 -0
- package/dist/commands/init.d.ts +7 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +43 -1
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/list/issues.d.ts +1 -0
- package/dist/commands/list/issues.d.ts.map +1 -1
- package/dist/commands/list/issues.js +9 -1
- package/dist/commands/list/issues.js.map +1 -1
- package/dist/commands/list/users.d.ts +15 -0
- package/dist/commands/list/users.d.ts.map +1 -0
- package/dist/commands/list/users.js +67 -0
- package/dist/commands/list/users.js.map +1 -0
- package/dist/commands/move/doc.d.ts +18 -0
- package/dist/commands/move/doc.d.ts.map +1 -0
- package/dist/commands/move/doc.js +82 -0
- package/dist/commands/move/doc.js.map +1 -0
- package/dist/commands/move/issue.d.ts +17 -0
- package/dist/commands/move/issue.d.ts.map +1 -0
- package/dist/commands/move/issue.js +74 -0
- package/dist/commands/move/issue.js.map +1 -0
- package/dist/commands/project/title.d.ts +19 -0
- package/dist/commands/project/title.d.ts.map +1 -0
- package/dist/commands/project/title.js +76 -0
- package/dist/commands/project/title.js.map +1 -0
- package/dist/commands/sync/users.d.ts +17 -0
- package/dist/commands/sync/users.d.ts.map +1 -0
- package/dist/commands/sync/users.js +105 -0
- package/dist/commands/sync/users.js.map +1 -0
- package/dist/commands/unassign/issue.d.ts +19 -0
- package/dist/commands/unassign/issue.d.ts.map +1 -0
- package/dist/commands/unassign/issue.js +79 -0
- package/dist/commands/unassign/issue.js.map +1 -0
- package/dist/commands/update/issue.d.ts +1 -0
- package/dist/commands/update/issue.d.ts.map +1 -1
- package/dist/commands/update/issue.js +7 -1
- package/dist/commands/update/issue.js.map +1 -1
- package/dist/commands/update/user.d.ts +20 -0
- package/dist/commands/update/user.d.ts.map +1 -0
- package/dist/commands/update/user.js +88 -0
- package/dist/commands/update/user.js.map +1 -0
- package/dist/daemon/daemon-assign-issue.d.ts +6 -0
- package/dist/daemon/daemon-assign-issue.d.ts.map +1 -0
- package/dist/daemon/daemon-assign-issue.js +17 -0
- package/dist/daemon/daemon-assign-issue.js.map +1 -0
- package/dist/daemon/daemon-create-user.d.ts +6 -0
- package/dist/daemon/daemon-create-user.d.ts.map +1 -0
- package/dist/daemon/daemon-create-user.js +17 -0
- package/dist/daemon/daemon-create-user.js.map +1 -0
- package/dist/daemon/daemon-delete-plan.d.ts +6 -0
- package/dist/daemon/daemon-delete-plan.d.ts.map +1 -0
- package/dist/daemon/daemon-delete-plan.js +17 -0
- package/dist/daemon/daemon-delete-plan.js.map +1 -0
- package/dist/daemon/daemon-delete-user.d.ts +6 -0
- package/dist/daemon/daemon-delete-user.d.ts.map +1 -0
- package/dist/daemon/daemon-delete-user.js +17 -0
- package/dist/daemon/daemon-delete-user.js.map +1 -0
- package/dist/daemon/daemon-duplicate-doc.d.ts +6 -0
- package/dist/daemon/daemon-duplicate-doc.d.ts.map +1 -0
- package/dist/daemon/daemon-duplicate-doc.js +17 -0
- package/dist/daemon/daemon-duplicate-doc.js.map +1 -0
- package/dist/daemon/daemon-duplicate-issue.d.ts +6 -0
- package/dist/daemon/daemon-duplicate-issue.d.ts.map +1 -0
- package/dist/daemon/daemon-duplicate-issue.js +17 -0
- package/dist/daemon/daemon-duplicate-issue.js.map +1 -0
- package/dist/daemon/daemon-get-plan.d.ts +6 -0
- package/dist/daemon/daemon-get-plan.d.ts.map +1 -0
- package/dist/daemon/daemon-get-plan.js +17 -0
- package/dist/daemon/daemon-get-plan.js.map +1 -0
- package/dist/daemon/daemon-get-user.d.ts +6 -0
- package/dist/daemon/daemon-get-user.d.ts.map +1 -0
- package/dist/daemon/daemon-get-user.js +17 -0
- package/dist/daemon/daemon-get-user.js.map +1 -0
- package/dist/daemon/daemon-list-users.d.ts +6 -0
- package/dist/daemon/daemon-list-users.d.ts.map +1 -0
- package/dist/daemon/daemon-list-users.js +17 -0
- package/dist/daemon/daemon-list-users.js.map +1 -0
- package/dist/daemon/daemon-move-doc.d.ts +6 -0
- package/dist/daemon/daemon-move-doc.d.ts.map +1 -0
- package/dist/daemon/daemon-move-doc.js +17 -0
- package/dist/daemon/daemon-move-doc.js.map +1 -0
- package/dist/daemon/daemon-move-issue.d.ts +6 -0
- package/dist/daemon/daemon-move-issue.d.ts.map +1 -0
- package/dist/daemon/daemon-move-issue.js +17 -0
- package/dist/daemon/daemon-move-issue.js.map +1 -0
- package/dist/daemon/daemon-set-project-title.d.ts +7 -0
- package/dist/daemon/daemon-set-project-title.d.ts.map +1 -0
- package/dist/daemon/daemon-set-project-title.js +18 -0
- package/dist/daemon/daemon-set-project-title.js.map +1 -0
- package/dist/daemon/daemon-set-project-user-title.d.ts +7 -0
- package/dist/daemon/daemon-set-project-user-title.d.ts.map +1 -0
- package/dist/daemon/daemon-set-project-user-title.js +18 -0
- package/dist/daemon/daemon-set-project-user-title.js.map +1 -0
- package/dist/daemon/daemon-spawn-agent.d.ts +6 -0
- package/dist/daemon/daemon-spawn-agent.d.ts.map +1 -0
- package/dist/daemon/daemon-spawn-agent.js +17 -0
- package/dist/daemon/daemon-spawn-agent.js.map +1 -0
- package/dist/daemon/daemon-sync-users.d.ts +6 -0
- package/dist/daemon/daemon-sync-users.d.ts.map +1 -0
- package/dist/daemon/daemon-sync-users.js +17 -0
- package/dist/daemon/daemon-sync-users.js.map +1 -0
- package/dist/daemon/daemon-unassign-issue.d.ts +6 -0
- package/dist/daemon/daemon-unassign-issue.d.ts.map +1 -0
- package/dist/daemon/daemon-unassign-issue.js +17 -0
- package/dist/daemon/daemon-unassign-issue.js.map +1 -0
- package/dist/daemon/daemon-update-plan.d.ts +6 -0
- package/dist/daemon/daemon-update-plan.d.ts.map +1 -0
- package/dist/daemon/daemon-update-plan.js +17 -0
- package/dist/daemon/daemon-update-plan.js.map +1 -0
- package/dist/daemon/daemon-update-user.d.ts +6 -0
- package/dist/daemon/daemon-update-user.d.ts.map +1 -0
- package/dist/daemon/daemon-update-user.js +17 -0
- package/dist/daemon/daemon-update-user.js.map +1 -0
- package/dist/daemon/load-proto.d.ts +20 -1
- package/dist/daemon/load-proto.d.ts.map +1 -1
- package/dist/daemon/load-proto.js.map +1 -1
- package/dist/daemon/types.d.ts +242 -0
- package/dist/daemon/types.d.ts.map +1 -1
- package/dist/hooks/postrun.d.ts +4 -0
- package/dist/hooks/postrun.d.ts.map +1 -0
- package/dist/hooks/postrun.js +17 -0
- package/dist/hooks/postrun.js.map +1 -0
- package/dist/lib/create-issue/create-issue.d.ts.map +1 -1
- package/dist/lib/create-issue/create-issue.js +3 -0
- package/dist/lib/create-issue/create-issue.js.map +1 -1
- package/dist/lib/init/init.d.ts +7 -0
- package/dist/lib/init/init.d.ts.map +1 -1
- package/dist/lib/init/init.js +51 -1
- package/dist/lib/init/init.js.map +1 -1
- package/dist/lib/install-daemon/github-api.d.ts.map +1 -1
- package/dist/lib/install-daemon/github-api.js +50 -39
- package/dist/lib/install-daemon/github-api.js.map +1 -1
- package/dist/tui/components/domain/AssetList.js +1 -3
- package/dist/tui/components/domain/AssetList.js.map +1 -1
- package/dist/tui/components/domain/ConfigPanel.js +1 -3
- package/dist/tui/components/domain/ConfigPanel.js.map +1 -1
- package/dist/tui/components/domain/DocCreate.d.ts.map +1 -1
- package/dist/tui/components/domain/DocCreate.js +10 -43
- package/dist/tui/components/domain/DocCreate.js.map +1 -1
- package/dist/tui/components/domain/IssueCreate.d.ts.map +1 -1
- package/dist/tui/components/domain/IssueCreate.js +11 -55
- package/dist/tui/components/domain/IssueCreate.js.map +1 -1
- package/dist/tui/components/domain/IssueEdit.d.ts.map +1 -1
- package/dist/tui/components/domain/IssueEdit.js +15 -54
- package/dist/tui/components/domain/IssueEdit.js.map +1 -1
- package/dist/tui/components/domain/IssueList.js +1 -1
- package/dist/tui/components/domain/IssueList.js.map +1 -1
- package/dist/tui/components/domain/PRCreate.d.ts.map +1 -1
- package/dist/tui/components/domain/PRCreate.js +12 -47
- package/dist/tui/components/domain/PRCreate.js.map +1 -1
- package/dist/tui/components/domain/PREdit.d.ts.map +1 -1
- package/dist/tui/components/domain/PREdit.js +17 -51
- package/dist/tui/components/domain/PREdit.js.map +1 -1
- package/dist/tui/components/domain/PRList.js +1 -1
- package/dist/tui/components/domain/PRList.js.map +1 -1
- package/dist/tui/components/domain/ProjectCreate.d.ts.map +1 -1
- package/dist/tui/components/domain/ProjectCreate.js +5 -13
- package/dist/tui/components/domain/ProjectCreate.js.map +1 -1
- package/dist/tui/components/domain/ProjectList.js +1 -3
- package/dist/tui/components/domain/ProjectList.js.map +1 -1
- package/dist/tui/components/form/FormInput.d.ts +12 -0
- package/dist/tui/components/form/FormInput.d.ts.map +1 -0
- package/dist/tui/components/form/FormInput.js +6 -0
- package/dist/tui/components/form/FormInput.js.map +1 -0
- package/dist/tui/components/form/FormTextarea.d.ts +11 -0
- package/dist/tui/components/form/FormTextarea.d.ts.map +1 -0
- package/dist/tui/components/form/FormTextarea.js +13 -0
- package/dist/tui/components/form/FormTextarea.js.map +1 -0
- package/dist/tui/components/form/index.d.ts +3 -0
- package/dist/tui/components/form/index.d.ts.map +1 -0
- package/dist/tui/components/form/index.js +3 -0
- package/dist/tui/components/form/index.js.map +1 -0
- package/dist/tui/components/layout/Sidebar.js +1 -1
- package/dist/tui/components/layout/Sidebar.js.map +1 -1
- package/dist/tui/hooks/useNavigation.d.ts +1 -0
- package/dist/tui/hooks/useNavigation.d.ts.map +1 -1
- package/dist/tui/hooks/useNavigation.js +4 -0
- package/dist/tui/hooks/useNavigation.js.map +1 -1
- package/dist/tui/state/app-state.d.ts +4 -0
- package/dist/tui/state/app-state.d.ts.map +1 -1
- package/dist/tui/state/app-state.js +7 -0
- package/dist/tui/state/app-state.js.map +1 -1
- package/dist/types/create-issue-options.d.ts +2 -0
- package/dist/types/create-issue-options.d.ts.map +1 -1
- package/dist/types/init-options.d.ts +14 -0
- package/dist/types/init-options.d.ts.map +1 -1
- package/dist/utils/is-valid-uuid.js +2 -2
- package/dist/utils/is-valid-uuid.js.map +1 -1
- package/oclif.manifest.json +1270 -155
- package/package.json +9 -3
- package/proto/centy.proto +230 -0
|
@@ -4,9 +4,10 @@ import { Args, Command, Flags } from '@oclif/core';
|
|
|
4
4
|
import { daemonGetIssue } from '../../daemon/daemon-get-issue.js';
|
|
5
5
|
import { daemonGetIssueByDisplayNumber } from '../../daemon/daemon-get-issue-by-display-number.js';
|
|
6
6
|
import { daemonGetIssuesByUuid } from '../../daemon/daemon-get-issues-by-uuid.js';
|
|
7
|
+
import { daemonSpawnAgent } from '../../daemon/daemon-spawn-agent.js';
|
|
7
8
|
import { projectFlag } from '../../flags/project-flag.js';
|
|
8
9
|
import { formatCrossProjectHint, formatCrossProjectJson, handleNotInitializedWithSearch, isNotFoundError, isValidUuid, } from '../../utils/cross-project-search.js';
|
|
9
|
-
import { ensureInitialized } from '../../utils/ensure-initialized.js';
|
|
10
|
+
import { ensureInitialized, NotInitializedError, } from '../../utils/ensure-initialized.js';
|
|
10
11
|
import { resolveProjectPath } from '../../utils/resolve-project-path.js';
|
|
11
12
|
/**
|
|
12
13
|
* Get a single issue by ID or display number
|
|
@@ -33,6 +34,8 @@ export default class GetIssue extends Command {
|
|
|
33
34
|
'<%= config.bin %> get issue abc12345-1234-1234-1234-123456789abc -g --json',
|
|
34
35
|
'<%= config.bin %> get issue 1 --project centy-daemon',
|
|
35
36
|
'<%= config.bin %> get issue 1 --project /path/to/project',
|
|
37
|
+
'<%= config.bin %> issue 1 --action plan',
|
|
38
|
+
'<%= config.bin %> issue 1 -a implement',
|
|
36
39
|
];
|
|
37
40
|
// eslint-disable-next-line no-restricted-syntax
|
|
38
41
|
static flags = {
|
|
@@ -46,11 +49,45 @@ export default class GetIssue extends Command {
|
|
|
46
49
|
default: false,
|
|
47
50
|
}),
|
|
48
51
|
project: projectFlag,
|
|
52
|
+
action: Flags.string({
|
|
53
|
+
char: 'a',
|
|
54
|
+
description: 'Spawn AI agent with action (plan or implement)',
|
|
55
|
+
options: ['plan', 'implement'],
|
|
56
|
+
}),
|
|
49
57
|
};
|
|
50
58
|
// eslint-disable-next-line max-lines-per-function
|
|
51
59
|
async run() {
|
|
52
60
|
const { args, flags } = await this.parse(GetIssue);
|
|
53
61
|
const cwd = await resolveProjectPath(flags.project);
|
|
62
|
+
// Handle action - spawn agent
|
|
63
|
+
if (flags.action !== undefined) {
|
|
64
|
+
try {
|
|
65
|
+
await ensureInitialized(cwd);
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
if (error instanceof NotInitializedError) {
|
|
69
|
+
this.error(error.message);
|
|
70
|
+
}
|
|
71
|
+
throw error instanceof Error ? error : new Error(String(error));
|
|
72
|
+
}
|
|
73
|
+
const response = await daemonSpawnAgent({
|
|
74
|
+
projectPath: cwd,
|
|
75
|
+
issueId: args.id,
|
|
76
|
+
action: flags.action === 'implement' ? 'IMPLEMENT' : 'PLAN',
|
|
77
|
+
});
|
|
78
|
+
if (!response.success) {
|
|
79
|
+
this.error(response.error);
|
|
80
|
+
}
|
|
81
|
+
if (flags.json) {
|
|
82
|
+
this.log(JSON.stringify(response, null, 2));
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
this.log(`Agent spawned: ${response.agentName}`);
|
|
86
|
+
this.log(`Issue: #${response.displayNumber}`);
|
|
87
|
+
this.log(`Action: ${flags.action}`);
|
|
88
|
+
this.log(`\nPrompt preview:\n${response.promptPreview}...`);
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
54
91
|
// Handle global search
|
|
55
92
|
if (flags.global) {
|
|
56
93
|
// Validate UUID format for global search
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"issue.js","sourceRoot":"","sources":["../../../src/commands/get/issue.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAE9B,wCAAwC;AACxC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAElD,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAA;AACjE,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAA;AAClG,OAAO,EAAE,qBAAqB,EAAE,MAAM,2CAA2C,CAAA;AACjF,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AACzD,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,8BAA8B,EAC9B,eAAe,EACf,WAAW,GACZ,MAAM,qCAAqC,CAAA;AAC5C,OAAO,
|
|
1
|
+
{"version":3,"file":"issue.js","sourceRoot":"","sources":["../../../src/commands/get/issue.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Command } from '@oclif/core';
|
|
2
|
+
/**
|
|
3
|
+
* Get an issue's plan
|
|
4
|
+
*/
|
|
5
|
+
export default class GetPlan extends Command {
|
|
6
|
+
static aliases: string[];
|
|
7
|
+
static args: {
|
|
8
|
+
issueId: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
|
|
9
|
+
};
|
|
10
|
+
static description: string;
|
|
11
|
+
static examples: string[];
|
|
12
|
+
static flags: {
|
|
13
|
+
output: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
14
|
+
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
15
|
+
};
|
|
16
|
+
run(): Promise<void>;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=plan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../../src/commands/get/plan.ts"],"names":[],"mappings":"AAEA,OAAO,EAAQ,OAAO,EAAS,MAAM,aAAa,CAAA;AAUlD;;GAEG;AAEH,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,OAAO;IAE1C,OAAgB,OAAO,WAAgB;IAGvC,OAAgB,IAAI;;MAKnB;IAGD,OAAgB,WAAW,SAAwB;IAGnD,OAAgB,QAAQ,WAKvB;IAGD,OAAgB,KAAK;;;MAMpB;IAEY,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA8BlC"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { writeFile } from 'node:fs/promises';
|
|
2
|
+
// eslint-disable-next-line import/order
|
|
3
|
+
import { Args, Command, Flags } from '@oclif/core';
|
|
4
|
+
import { daemonGetPlan } from '../../daemon/daemon-get-plan.js';
|
|
5
|
+
import { projectFlag } from '../../flags/project-flag.js';
|
|
6
|
+
import { ensureInitialized, NotInitializedError, } from '../../utils/ensure-initialized.js';
|
|
7
|
+
import { resolveProjectPath } from '../../utils/resolve-project-path.js';
|
|
8
|
+
/**
|
|
9
|
+
* Get an issue's plan
|
|
10
|
+
*/
|
|
11
|
+
// eslint-disable-next-line custom/no-default-class-export, class-export/class-export
|
|
12
|
+
export default class GetPlan extends Command {
|
|
13
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
14
|
+
static aliases = ['show:plan'];
|
|
15
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
16
|
+
static args = {
|
|
17
|
+
issueId: Args.string({
|
|
18
|
+
description: 'Issue ID or display number',
|
|
19
|
+
required: true,
|
|
20
|
+
}),
|
|
21
|
+
};
|
|
22
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
23
|
+
static description = "Get an issue's plan";
|
|
24
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
25
|
+
static examples = [
|
|
26
|
+
'<%= config.bin %> get plan 1',
|
|
27
|
+
'<%= config.bin %> get plan abc123',
|
|
28
|
+
'<%= config.bin %> get plan 1 --output ./plan.md',
|
|
29
|
+
'<%= config.bin %> get plan 1 --project centy-daemon',
|
|
30
|
+
];
|
|
31
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
32
|
+
static flags = {
|
|
33
|
+
output: Flags.string({
|
|
34
|
+
char: 'o',
|
|
35
|
+
description: 'Output file path (prints to stdout by default)',
|
|
36
|
+
}),
|
|
37
|
+
project: projectFlag,
|
|
38
|
+
};
|
|
39
|
+
async run() {
|
|
40
|
+
const { args, flags } = await this.parse(GetPlan);
|
|
41
|
+
const cwd = await resolveProjectPath(flags.project);
|
|
42
|
+
try {
|
|
43
|
+
await ensureInitialized(cwd);
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
if (error instanceof NotInitializedError) {
|
|
47
|
+
this.error(error.message);
|
|
48
|
+
}
|
|
49
|
+
throw error instanceof Error ? error : new Error(String(error));
|
|
50
|
+
}
|
|
51
|
+
const response = await daemonGetPlan({
|
|
52
|
+
projectPath: cwd,
|
|
53
|
+
issueId: args.issueId,
|
|
54
|
+
});
|
|
55
|
+
if (!response.exists) {
|
|
56
|
+
this.error(`No plan found for issue ${args.issueId}`);
|
|
57
|
+
}
|
|
58
|
+
if (flags.output) {
|
|
59
|
+
// eslint-disable-next-line security/detect-non-literal-fs-filename
|
|
60
|
+
await writeFile(flags.output, response.content);
|
|
61
|
+
this.log(`Saved plan to ${flags.output}`);
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
this.log(response.content);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=plan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plan.js","sourceRoot":"","sources":["../../../src/commands/get/plan.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAC5C,wCAAwC;AACxC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAElD,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAA;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AACzD,OAAO,EACL,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAA;AAExE;;GAEG;AACH,qFAAqF;AACrF,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,OAAO;IAC1C,gDAAgD;IAChD,MAAM,CAAU,OAAO,GAAG,CAAC,WAAW,CAAC,CAAA;IAEvC,gDAAgD;IAChD,MAAM,CAAU,IAAI,GAAG;QACrB,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC;YACnB,WAAW,EAAE,4BAA4B;YACzC,QAAQ,EAAE,IAAI;SACf,CAAC;KACH,CAAA;IAED,gDAAgD;IAChD,MAAM,CAAU,WAAW,GAAG,qBAAqB,CAAA;IAEnD,gDAAgD;IAChD,MAAM,CAAU,QAAQ,GAAG;QACzB,8BAA8B;QAC9B,mCAAmC;QACnC,iDAAiD;QACjD,qDAAqD;KACtD,CAAA;IAED,gDAAgD;IAChD,MAAM,CAAU,KAAK,GAAG;QACtB,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC;YACnB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,gDAAgD;SAC9D,CAAC;QACF,OAAO,EAAE,WAAW;KACrB,CAAA;IAEM,KAAK,CAAC,GAAG;QACd,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QACjD,MAAM,GAAG,GAAG,MAAM,kBAAkB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAEnD,IAAI,CAAC;YACH,MAAM,iBAAiB,CAAC,GAAG,CAAC,CAAA;QAC9B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,mBAAmB,EAAE,CAAC;gBACzC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;YAC3B,CAAC;YACD,MAAM,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;QACjE,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC;YACnC,WAAW,EAAE,GAAG;YAChB,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC,CAAA;QAEF,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YACrB,IAAI,CAAC,KAAK,CAAC,2BAA2B,IAAI,CAAC,OAAO,EAAE,CAAC,CAAA;QACvD,CAAC;QAED,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACjB,mEAAmE;YACnE,MAAM,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAA;YAC/C,IAAI,CAAC,GAAG,CAAC,iBAAiB,KAAK,CAAC,MAAM,EAAE,CAAC,CAAA;QAC3C,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;QAC5B,CAAC;IACH,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Command } from '@oclif/core';
|
|
2
|
+
/**
|
|
3
|
+
* Get a user by ID
|
|
4
|
+
*/
|
|
5
|
+
export default class GetUser extends Command {
|
|
6
|
+
static args: {
|
|
7
|
+
id: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
|
|
8
|
+
};
|
|
9
|
+
static description: string;
|
|
10
|
+
static examples: string[];
|
|
11
|
+
static flags: {
|
|
12
|
+
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
13
|
+
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
14
|
+
};
|
|
15
|
+
run(): Promise<void>;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=user.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../../src/commands/get/user.ts"],"names":[],"mappings":"AACA,OAAO,EAAQ,OAAO,EAAS,MAAM,aAAa,CAAA;AAUlD;;GAEG;AAEH,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,OAAO;IAE1C,OAAgB,IAAI;;MAKnB;IAGD,OAAgB,WAAW,SAAqB;IAGhD,OAAgB,QAAQ,WAIvB;IAGD,OAAgB,KAAK;;;MAMpB;IAEY,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAyClC"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
// eslint-disable-next-line import/order
|
|
2
|
+
import { Args, Command, Flags } from '@oclif/core';
|
|
3
|
+
import { daemonGetUser } from '../../daemon/daemon-get-user.js';
|
|
4
|
+
import { projectFlag } from '../../flags/project-flag.js';
|
|
5
|
+
import { ensureInitialized, NotInitializedError, } from '../../utils/ensure-initialized.js';
|
|
6
|
+
import { resolveProjectPath } from '../../utils/resolve-project-path.js';
|
|
7
|
+
/**
|
|
8
|
+
* Get a user by ID
|
|
9
|
+
*/
|
|
10
|
+
// eslint-disable-next-line custom/no-default-class-export, class-export/class-export
|
|
11
|
+
export default class GetUser extends Command {
|
|
12
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
13
|
+
static args = {
|
|
14
|
+
id: Args.string({
|
|
15
|
+
description: 'User ID',
|
|
16
|
+
required: true,
|
|
17
|
+
}),
|
|
18
|
+
};
|
|
19
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
20
|
+
static description = 'Get a user by ID';
|
|
21
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
22
|
+
static examples = [
|
|
23
|
+
'<%= config.bin %> get user john-doe',
|
|
24
|
+
'<%= config.bin %> get user john-doe --json',
|
|
25
|
+
'<%= config.bin %> get user john-doe --project centy-daemon',
|
|
26
|
+
];
|
|
27
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
28
|
+
static flags = {
|
|
29
|
+
json: Flags.boolean({
|
|
30
|
+
description: 'Output as JSON',
|
|
31
|
+
default: false,
|
|
32
|
+
}),
|
|
33
|
+
project: projectFlag,
|
|
34
|
+
};
|
|
35
|
+
async run() {
|
|
36
|
+
const { args, flags } = await this.parse(GetUser);
|
|
37
|
+
const cwd = await resolveProjectPath(flags.project);
|
|
38
|
+
try {
|
|
39
|
+
await ensureInitialized(cwd);
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
if (error instanceof NotInitializedError) {
|
|
43
|
+
this.error(error.message);
|
|
44
|
+
}
|
|
45
|
+
throw error instanceof Error ? error : new Error(String(error));
|
|
46
|
+
}
|
|
47
|
+
try {
|
|
48
|
+
const user = await daemonGetUser({
|
|
49
|
+
projectPath: cwd,
|
|
50
|
+
userId: args.id,
|
|
51
|
+
});
|
|
52
|
+
if (flags.json) {
|
|
53
|
+
this.log(JSON.stringify(user, null, 2));
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
this.log(`User: ${user.id}`);
|
|
57
|
+
this.log(` Name: ${user.name}`);
|
|
58
|
+
if (user.email !== undefined && user.email !== '') {
|
|
59
|
+
this.log(` Email: ${user.email}`);
|
|
60
|
+
}
|
|
61
|
+
if (user.gitUsernames !== undefined && user.gitUsernames.length > 0) {
|
|
62
|
+
this.log(` Git usernames: ${user.gitUsernames.join(', ')}`);
|
|
63
|
+
}
|
|
64
|
+
this.log(` Created: ${user.createdAt}`);
|
|
65
|
+
this.log(` Updated: ${user.updatedAt}`);
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
if (error instanceof Error && error.message.includes('not found')) {
|
|
69
|
+
this.error(`User "${args.id}" not found`);
|
|
70
|
+
}
|
|
71
|
+
throw error instanceof Error ? error : new Error(String(error));
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=user.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user.js","sourceRoot":"","sources":["../../../src/commands/get/user.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/init.d.ts
CHANGED
|
@@ -7,6 +7,13 @@ export default class Init extends Command {
|
|
|
7
7
|
static examples: string[];
|
|
8
8
|
static flags: {
|
|
9
9
|
force: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
10
|
+
'priority-levels': import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
11
|
+
'default-state': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
12
|
+
'allowed-states': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
13
|
+
version: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
14
|
+
'llm-auto-close': import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
15
|
+
'llm-update-status': import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
16
|
+
'llm-allow-direct-edits': import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
10
17
|
};
|
|
11
18
|
run(): Promise<void>;
|
|
12
19
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAA;AAI5C;;GAEG;AAEH,MAAM,CAAC,OAAO,OAAO,IAAK,SAAQ,OAAO;IAEvC,OAAgB,WAAW,SAC0B;IAGrD,OAAgB,QAAQ,WAGvB;IAGD,OAAgB,KAAK
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAA;AAI5C;;GAEG;AAEH,MAAM,CAAC,OAAO,OAAO,IAAK,SAAQ,OAAO;IAEvC,OAAgB,WAAW,SAC0B;IAGrD,OAAgB,QAAQ,WAGvB;IAGD,OAAgB,KAAK;;;;;;;;;MAkCpB;IAEY,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA4BlC"}
|
package/dist/commands/init.js
CHANGED
|
@@ -20,13 +20,55 @@ export default class Init extends Command {
|
|
|
20
20
|
description: 'Skip interactive prompts and use defaults',
|
|
21
21
|
default: false,
|
|
22
22
|
}),
|
|
23
|
+
// Config flags
|
|
24
|
+
'priority-levels': Flags.integer({
|
|
25
|
+
description: 'Number of priority levels (1-10, default: 3)',
|
|
26
|
+
min: 1,
|
|
27
|
+
max: 10,
|
|
28
|
+
}),
|
|
29
|
+
'default-state': Flags.string({
|
|
30
|
+
description: 'Default state for new issues (default: "open")',
|
|
31
|
+
}),
|
|
32
|
+
'allowed-states': Flags.string({
|
|
33
|
+
description: 'Comma-separated list of allowed states',
|
|
34
|
+
}),
|
|
35
|
+
version: Flags.string({
|
|
36
|
+
description: 'Project version (semver)',
|
|
37
|
+
}),
|
|
38
|
+
// LLM flags
|
|
39
|
+
'llm-auto-close': Flags.boolean({
|
|
40
|
+
description: 'Auto-close issues when LLM completes work',
|
|
41
|
+
allowNo: true,
|
|
42
|
+
}),
|
|
43
|
+
'llm-update-status': Flags.boolean({
|
|
44
|
+
description: 'Update status to in-progress when LLM starts',
|
|
45
|
+
allowNo: true,
|
|
46
|
+
}),
|
|
47
|
+
'llm-allow-direct-edits': Flags.boolean({
|
|
48
|
+
description: 'Allow LLM to directly edit issue files',
|
|
49
|
+
allowNo: true,
|
|
50
|
+
}),
|
|
23
51
|
};
|
|
24
52
|
async run() {
|
|
25
53
|
const { flags } = await this.parse(Init);
|
|
26
54
|
// Allow CENTY_CWD env var to override working directory (for testing)
|
|
27
55
|
// eslint-disable-next-line no-restricted-syntax
|
|
28
56
|
const cwd = process.env['CENTY_CWD'];
|
|
29
|
-
|
|
57
|
+
// Parse allowed-states if provided
|
|
58
|
+
const allowedStates = flags['allowed-states']
|
|
59
|
+
? flags['allowed-states'].split(',').map(s => s.trim())
|
|
60
|
+
: undefined;
|
|
61
|
+
const result = await init({
|
|
62
|
+
force: flags.force,
|
|
63
|
+
cwd,
|
|
64
|
+
priorityLevels: flags['priority-levels'],
|
|
65
|
+
defaultState: flags['default-state'],
|
|
66
|
+
allowedStates,
|
|
67
|
+
version: flags.version,
|
|
68
|
+
llmAutoClose: flags['llm-auto-close'],
|
|
69
|
+
llmUpdateStatus: flags['llm-update-status'],
|
|
70
|
+
llmAllowDirectEdits: flags['llm-allow-direct-edits'],
|
|
71
|
+
});
|
|
30
72
|
if (!result.success) {
|
|
31
73
|
this.exit(1);
|
|
32
74
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAE5C,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAA;AAE3C;;GAEG;AACH,qFAAqF;AACrF,MAAM,CAAC,OAAO,OAAO,IAAK,SAAQ,OAAO;IACvC,gDAAgD;IAChD,MAAM,CAAU,WAAW,GACzB,mDAAmD,CAAA;IAErD,gDAAgD;IAChD,MAAM,CAAU,QAAQ,GAAG;QACzB,qCAAqC;QACrC,6CAA6C;KAC9C,CAAA;IAED,gDAAgD;IAChD,MAAM,CAAU,KAAK,GAAG;QACtB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC;YACnB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,2CAA2C;YACxD,OAAO,EAAE,KAAK;SACf,CAAC;KACH,CAAA;IAEM,KAAK,CAAC,GAAG;QACd,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAExC,sEAAsE;QACtE,gDAAgD;QAChD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;QAEpC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAE5C,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAA;AAE3C;;GAEG;AACH,qFAAqF;AACrF,MAAM,CAAC,OAAO,OAAO,IAAK,SAAQ,OAAO;IACvC,gDAAgD;IAChD,MAAM,CAAU,WAAW,GACzB,mDAAmD,CAAA;IAErD,gDAAgD;IAChD,MAAM,CAAU,QAAQ,GAAG;QACzB,qCAAqC;QACrC,6CAA6C;KAC9C,CAAA;IAED,gDAAgD;IAChD,MAAM,CAAU,KAAK,GAAG;QACtB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC;YACnB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,2CAA2C;YACxD,OAAO,EAAE,KAAK;SACf,CAAC;QACF,eAAe;QACf,iBAAiB,EAAE,KAAK,CAAC,OAAO,CAAC;YAC/B,WAAW,EAAE,8CAA8C;YAC3D,GAAG,EAAE,CAAC;YACN,GAAG,EAAE,EAAE;SACR,CAAC;QACF,eAAe,EAAE,KAAK,CAAC,MAAM,CAAC;YAC5B,WAAW,EAAE,gDAAgD;SAC9D,CAAC;QACF,gBAAgB,EAAE,KAAK,CAAC,MAAM,CAAC;YAC7B,WAAW,EAAE,wCAAwC;SACtD,CAAC;QACF,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC;YACpB,WAAW,EAAE,0BAA0B;SACxC,CAAC;QACF,YAAY;QACZ,gBAAgB,EAAE,KAAK,CAAC,OAAO,CAAC;YAC9B,WAAW,EAAE,2CAA2C;YACxD,OAAO,EAAE,IAAI;SACd,CAAC;QACF,mBAAmB,EAAE,KAAK,CAAC,OAAO,CAAC;YACjC,WAAW,EAAE,8CAA8C;YAC3D,OAAO,EAAE,IAAI;SACd,CAAC;QACF,wBAAwB,EAAE,KAAK,CAAC,OAAO,CAAC;YACtC,WAAW,EAAE,wCAAwC;YACrD,OAAO,EAAE,IAAI;SACd,CAAC;KACH,CAAA;IAEM,KAAK,CAAC,GAAG;QACd,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAExC,sEAAsE;QACtE,gDAAgD;QAChD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;QAEpC,mCAAmC;QACnC,MAAM,aAAa,GAAG,KAAK,CAAC,gBAAgB,CAAC;YAC3C,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACvD,CAAC,CAAC,SAAS,CAAA;QAEb,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC;YACxB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,GAAG;YACH,cAAc,EAAE,KAAK,CAAC,iBAAiB,CAAC;YACxC,YAAY,EAAE,KAAK,CAAC,eAAe,CAAC;YACpC,aAAa;YACb,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,YAAY,EAAE,KAAK,CAAC,gBAAgB,CAAC;YACrC,eAAe,EAAE,KAAK,CAAC,mBAAmB,CAAC;YAC3C,mBAAmB,EAAE,KAAK,CAAC,wBAAwB,CAAC;SACrD,CAAC,CAAA;QAEF,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACd,CAAC;IACH,CAAC"}
|
|
@@ -9,6 +9,7 @@ export default class ListIssues extends Command {
|
|
|
9
9
|
status: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
10
10
|
priority: import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
11
11
|
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
12
|
+
draft: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
12
13
|
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
13
14
|
};
|
|
14
15
|
run(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"issues.d.ts","sourceRoot":"","sources":["../../../src/commands/list/issues.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAA;AAU5C;;GAEG;AAEH,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,OAAO;IAE7C,OAAgB,WAAW,SAAoB;IAG/C,OAAgB,QAAQ,
|
|
1
|
+
{"version":3,"file":"issues.d.ts","sourceRoot":"","sources":["../../../src/commands/list/issues.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAA;AAU5C;;GAEG;AAEH,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,OAAO;IAE7C,OAAgB,WAAW,SAAoB;IAG/C,OAAgB,QAAQ,WAOvB;IAGD,OAAgB,KAAK;;;;;;MAmBpB;IAEY,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA+ClC"}
|
|
@@ -17,6 +17,8 @@ export default class ListIssues extends Command {
|
|
|
17
17
|
'<%= config.bin %> list issues --status open',
|
|
18
18
|
'<%= config.bin %> list issues --priority 1',
|
|
19
19
|
'<%= config.bin %> list issues --project centy-daemon',
|
|
20
|
+
'<%= config.bin %> list issues --draft',
|
|
21
|
+
'<%= config.bin %> list issues --no-draft',
|
|
20
22
|
];
|
|
21
23
|
// eslint-disable-next-line no-restricted-syntax
|
|
22
24
|
static flags = {
|
|
@@ -32,6 +34,10 @@ export default class ListIssues extends Command {
|
|
|
32
34
|
description: 'Output as JSON',
|
|
33
35
|
default: false,
|
|
34
36
|
}),
|
|
37
|
+
draft: Flags.boolean({
|
|
38
|
+
description: 'Filter by draft status (--draft for drafts only, --no-draft for non-drafts)',
|
|
39
|
+
allowNo: true,
|
|
40
|
+
}),
|
|
35
41
|
project: projectFlag,
|
|
36
42
|
};
|
|
37
43
|
async run() {
|
|
@@ -50,6 +56,7 @@ export default class ListIssues extends Command {
|
|
|
50
56
|
projectPath: cwd,
|
|
51
57
|
status: flags.status,
|
|
52
58
|
priority: flags.priority,
|
|
59
|
+
draft: flags.draft,
|
|
53
60
|
});
|
|
54
61
|
if (flags.json) {
|
|
55
62
|
this.log(JSON.stringify(response.issues, null, 2));
|
|
@@ -68,7 +75,8 @@ export default class ListIssues extends Command {
|
|
|
68
75
|
: `P${meta.priority}`
|
|
69
76
|
: 'P?';
|
|
70
77
|
const status = meta !== undefined ? meta.status : 'unknown';
|
|
71
|
-
|
|
78
|
+
const draftIndicator = meta !== undefined && meta.draft === true ? ' [DRAFT]' : '';
|
|
79
|
+
this.log(`#${issue.displayNumber} [${priority}] [${status}]${draftIndicator} ${issue.title}`);
|
|
72
80
|
}
|
|
73
81
|
}
|
|
74
82
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"issues.js","sourceRoot":"","sources":["../../../src/commands/list/issues.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAE5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAA;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AACzD,OAAO,EACL,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAA;AAExE;;GAEG;AACH,qFAAqF;AACrF,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,OAAO;IAC7C,gDAAgD;IAChD,MAAM,CAAU,WAAW,GAAG,iBAAiB,CAAA;IAE/C,gDAAgD;IAChD,MAAM,CAAU,QAAQ,GAAG;QACzB,+BAA+B;QAC/B,6CAA6C;QAC7C,4CAA4C;QAC5C,sDAAsD;
|
|
1
|
+
{"version":3,"file":"issues.js","sourceRoot":"","sources":["../../../src/commands/list/issues.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Command } from '@oclif/core';
|
|
2
|
+
/**
|
|
3
|
+
* List all users in the project
|
|
4
|
+
*/
|
|
5
|
+
export default class ListUsers extends Command {
|
|
6
|
+
static description: string;
|
|
7
|
+
static examples: string[];
|
|
8
|
+
static flags: {
|
|
9
|
+
'git-username': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
10
|
+
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
11
|
+
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
12
|
+
};
|
|
13
|
+
run(): Promise<void>;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=users.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"users.d.ts","sourceRoot":"","sources":["../../../src/commands/list/users.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAA;AAU5C;;GAEG;AAEH,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,OAAO;IAE5C,OAAgB,WAAW,SAAkC;IAG7D,OAAgB,QAAQ,WAKvB;IAGD,OAAgB,KAAK;;;;MAUpB;IAEY,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAuClC"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
// eslint-disable-next-line import/order
|
|
2
|
+
import { Command, Flags } from '@oclif/core';
|
|
3
|
+
import { daemonListUsers } from '../../daemon/daemon-list-users.js';
|
|
4
|
+
import { projectFlag } from '../../flags/project-flag.js';
|
|
5
|
+
import { ensureInitialized, NotInitializedError, } from '../../utils/ensure-initialized.js';
|
|
6
|
+
import { resolveProjectPath } from '../../utils/resolve-project-path.js';
|
|
7
|
+
/**
|
|
8
|
+
* List all users in the project
|
|
9
|
+
*/
|
|
10
|
+
// eslint-disable-next-line custom/no-default-class-export, class-export/class-export
|
|
11
|
+
export default class ListUsers extends Command {
|
|
12
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
13
|
+
static description = 'List all users in the project';
|
|
14
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
15
|
+
static examples = [
|
|
16
|
+
'<%= config.bin %> list users',
|
|
17
|
+
'<%= config.bin %> list users --json',
|
|
18
|
+
'<%= config.bin %> list users --git-username johndoe',
|
|
19
|
+
'<%= config.bin %> list users --project centy-daemon',
|
|
20
|
+
];
|
|
21
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
22
|
+
static flags = {
|
|
23
|
+
'git-username': Flags.string({
|
|
24
|
+
char: 'g',
|
|
25
|
+
description: 'Filter by git username',
|
|
26
|
+
}),
|
|
27
|
+
json: Flags.boolean({
|
|
28
|
+
description: 'Output as JSON',
|
|
29
|
+
default: false,
|
|
30
|
+
}),
|
|
31
|
+
project: projectFlag,
|
|
32
|
+
};
|
|
33
|
+
async run() {
|
|
34
|
+
const { flags } = await this.parse(ListUsers);
|
|
35
|
+
const cwd = await resolveProjectPath(flags.project);
|
|
36
|
+
try {
|
|
37
|
+
await ensureInitialized(cwd);
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
if (error instanceof NotInitializedError) {
|
|
41
|
+
this.error(error.message);
|
|
42
|
+
}
|
|
43
|
+
throw error instanceof Error ? error : new Error(String(error));
|
|
44
|
+
}
|
|
45
|
+
const response = await daemonListUsers({
|
|
46
|
+
projectPath: cwd,
|
|
47
|
+
gitUsername: flags['git-username'],
|
|
48
|
+
});
|
|
49
|
+
if (flags.json) {
|
|
50
|
+
this.log(JSON.stringify(response.users, null, 2));
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
if (response.users.length === 0) {
|
|
54
|
+
this.log('No users found.');
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
this.log(`Found ${response.totalCount} user(s):\n`);
|
|
58
|
+
for (const user of response.users) {
|
|
59
|
+
const gitNames = user.gitUsernames.length > 0
|
|
60
|
+
? ` (git: ${user.gitUsernames.join(', ')})`
|
|
61
|
+
: '';
|
|
62
|
+
const email = user.email !== undefined && user.email !== '' ? ` <${user.email}>` : '';
|
|
63
|
+
this.log(` ${user.id}: ${user.name}${email}${gitNames}`);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=users.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"users.js","sourceRoot":"","sources":["../../../src/commands/list/users.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAE5C,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAA;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AACzD,OAAO,EACL,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAA;AAExE;;GAEG;AACH,qFAAqF;AACrF,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,OAAO;IAC5C,gDAAgD;IAChD,MAAM,CAAU,WAAW,GAAG,+BAA+B,CAAA;IAE7D,gDAAgD;IAChD,MAAM,CAAU,QAAQ,GAAG;QACzB,8BAA8B;QAC9B,qCAAqC;QACrC,qDAAqD;QACrD,qDAAqD;KACtD,CAAA;IAED,gDAAgD;IAChD,MAAM,CAAU,KAAK,GAAG;QACtB,cAAc,EAAE,KAAK,CAAC,MAAM,CAAC;YAC3B,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,wBAAwB;SACtC,CAAC;QACF,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC;YAClB,WAAW,EAAE,gBAAgB;YAC7B,OAAO,EAAE,KAAK;SACf,CAAC;QACF,OAAO,EAAE,WAAW;KACrB,CAAA;IAEM,KAAK,CAAC,GAAG;QACd,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;QAC7C,MAAM,GAAG,GAAG,MAAM,kBAAkB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAEnD,IAAI,CAAC;YACH,MAAM,iBAAiB,CAAC,GAAG,CAAC,CAAA;QAC9B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,mBAAmB,EAAE,CAAC;gBACzC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;YAC3B,CAAC;YACD,MAAM,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;QACjE,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC;YACrC,WAAW,EAAE,GAAG;YAChB,WAAW,EAAE,KAAK,CAAC,cAAc,CAAC;SACnC,CAAC,CAAA;QAEF,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YACf,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;YACjD,OAAM;QACR,CAAC;QAED,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChC,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;YAC3B,OAAM;QACR,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,SAAS,QAAQ,CAAC,UAAU,aAAa,CAAC,CAAA;QACnD,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;YAClC,MAAM,QAAQ,GACZ,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC;gBAC1B,CAAC,CAAC,UAAU,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;gBAC3C,CAAC,CAAC,EAAE,CAAA;YACR,MAAM,KAAK,GACT,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;YACzE,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,IAAI,GAAG,KAAK,GAAG,QAAQ,EAAE,CAAC,CAAA;QAC3D,CAAC;IACH,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Command } from '@oclif/core';
|
|
2
|
+
/**
|
|
3
|
+
* Move a doc to a different project
|
|
4
|
+
*/
|
|
5
|
+
export default class MoveDoc extends Command {
|
|
6
|
+
static args: {
|
|
7
|
+
slug: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
|
|
8
|
+
};
|
|
9
|
+
static description: string;
|
|
10
|
+
static examples: string[];
|
|
11
|
+
static flags: {
|
|
12
|
+
to: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
13
|
+
'new-slug': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
14
|
+
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
15
|
+
};
|
|
16
|
+
run(): Promise<void>;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=doc.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doc.d.ts","sourceRoot":"","sources":["../../../src/commands/move/doc.ts"],"names":[],"mappings":"AACA,OAAO,EAAQ,OAAO,EAAS,MAAM,aAAa,CAAA;AAUlD;;GAEG;AAEH,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,OAAO;IAE1C,OAAgB,IAAI;;MAKnB;IAGD,OAAgB,WAAW,SAAsC;IAGjE,OAAgB,QAAQ,WAIvB;IAGD,OAAgB,KAAK;;;;MAWpB;IAEY,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA+ClC"}
|