centy 0.0.24 → 0.0.25
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/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/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/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/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/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-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-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-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 +15 -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 +169 -0
- package/dist/daemon/types.d.ts.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 +1 -3
- package/dist/tui/components/domain/DocCreate.js.map +1 -1
- package/dist/tui/components/domain/IssueCreate.js +1 -7
- 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 +1 -9
- 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 +1 -13
- 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 +1 -13
- 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/ProjectList.js +1 -3
- package/dist/tui/components/domain/ProjectList.js.map +1 -1
- package/dist/tui/components/layout/Sidebar.js +1 -1
- package/dist/tui/components/layout/Sidebar.js.map +1 -1
- package/dist/types/init-options.d.ts +14 -0
- package/dist/types/init-options.d.ts.map +1 -1
- package/oclif.manifest.json +721 -24
- package/package.json +2 -1
- package/proto/centy.proto +226 -0
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Command } from '@oclif/core';
|
|
2
|
+
/**
|
|
3
|
+
* Add or update an issue's plan
|
|
4
|
+
*/
|
|
5
|
+
export default class AddPlan 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
|
+
file: 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/add/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,WAA8B;IAGrD,OAAgB,IAAI;;MAKnB;IAGD,OAAgB,WAAW,SAAkC;IAG7D,OAAgB,QAAQ,WAKvB;IAGD,OAAgB,KAAK;;;MAMpB;IAEY,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAiDlC"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { readFile } from 'node:fs/promises';
|
|
2
|
+
// eslint-disable-next-line import/order
|
|
3
|
+
import { Args, Command, Flags } from '@oclif/core';
|
|
4
|
+
import { daemonUpdatePlan } from '../../daemon/daemon-update-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
|
+
* Add or update an issue's plan
|
|
10
|
+
*/
|
|
11
|
+
// eslint-disable-next-line custom/no-default-class-export, class-export/class-export
|
|
12
|
+
export default class AddPlan extends Command {
|
|
13
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
14
|
+
static aliases = ['update:plan', 'set: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 = "Add or update an issue's plan";
|
|
24
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
25
|
+
static examples = [
|
|
26
|
+
'<%= config.bin %> add plan 1 --file ./plan.md',
|
|
27
|
+
'<%= config.bin %> add plan abc123 --file ./plan.md',
|
|
28
|
+
'echo "# Plan" | <%= config.bin %> add plan 1',
|
|
29
|
+
'<%= config.bin %> add plan 1 --project centy-daemon --file ./plan.md',
|
|
30
|
+
];
|
|
31
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
32
|
+
static flags = {
|
|
33
|
+
file: Flags.string({
|
|
34
|
+
char: 'f',
|
|
35
|
+
description: 'Path to the plan file (reads from stdin if not provided)',
|
|
36
|
+
}),
|
|
37
|
+
project: projectFlag,
|
|
38
|
+
};
|
|
39
|
+
async run() {
|
|
40
|
+
const { args, flags } = await this.parse(AddPlan);
|
|
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
|
+
let content;
|
|
52
|
+
if (flags.file) {
|
|
53
|
+
try {
|
|
54
|
+
// eslint-disable-next-line security/detect-non-literal-fs-filename
|
|
55
|
+
content = await readFile(flags.file, 'utf-8');
|
|
56
|
+
}
|
|
57
|
+
catch (error) {
|
|
58
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
59
|
+
if (msg.includes('ENOENT')) {
|
|
60
|
+
this.error(`File not found: ${flags.file}`);
|
|
61
|
+
}
|
|
62
|
+
throw error instanceof Error ? error : new Error(String(error));
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
else if (!process.stdin.isTTY) {
|
|
66
|
+
// Read from stdin
|
|
67
|
+
const chunks = [];
|
|
68
|
+
for await (const chunk of process.stdin) {
|
|
69
|
+
chunks.push(Buffer.from(chunk));
|
|
70
|
+
}
|
|
71
|
+
content = Buffer.concat(chunks).toString('utf-8');
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
this.error('No input provided. Use --file or pipe content via stdin.');
|
|
75
|
+
}
|
|
76
|
+
const response = await daemonUpdatePlan({
|
|
77
|
+
projectPath: cwd,
|
|
78
|
+
issueId: args.issueId,
|
|
79
|
+
content,
|
|
80
|
+
});
|
|
81
|
+
if (!response.success) {
|
|
82
|
+
this.error(response.error);
|
|
83
|
+
}
|
|
84
|
+
this.log(`Plan updated for issue ${args.issueId}`);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=plan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plan.js","sourceRoot":"","sources":["../../../src/commands/add/plan.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Command } from '@oclif/core';
|
|
2
|
+
/**
|
|
3
|
+
* Assign users to an issue
|
|
4
|
+
*/
|
|
5
|
+
export default class AssignIssue extends Command {
|
|
6
|
+
static args: {
|
|
7
|
+
issueId: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
|
|
8
|
+
userIds: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
|
|
9
|
+
};
|
|
10
|
+
static description: string;
|
|
11
|
+
static examples: string[];
|
|
12
|
+
static flags: {
|
|
13
|
+
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
14
|
+
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
15
|
+
};
|
|
16
|
+
static strict: boolean;
|
|
17
|
+
run(): Promise<void>;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=issue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"issue.d.ts","sourceRoot":"","sources":["../../../src/commands/assign/issue.ts"],"names":[],"mappings":"AACA,OAAO,EAAQ,OAAO,EAAS,MAAM,aAAa,CAAA;AAUlD;;GAEG;AAEH,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,OAAO;IAE9C,OAAgB,IAAI;;;MASnB;IAGD,OAAgB,WAAW,SAA6B;IAGxD,OAAgB,QAAQ,WAIvB;IAGD,OAAgB,KAAK;;;MAMpB;IAGD,OAAgB,MAAM,UAAQ;IAEjB,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA8ClC"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
// eslint-disable-next-line import/order
|
|
2
|
+
import { Args, Command, Flags } from '@oclif/core';
|
|
3
|
+
import { daemonAssignIssue } from '../../daemon/daemon-assign-issue.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
|
+
* Assign users to an issue
|
|
9
|
+
*/
|
|
10
|
+
// eslint-disable-next-line custom/no-default-class-export, class-export/class-export
|
|
11
|
+
export default class AssignIssue extends Command {
|
|
12
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
13
|
+
static args = {
|
|
14
|
+
issueId: Args.string({
|
|
15
|
+
description: 'Issue ID (UUID) or display number',
|
|
16
|
+
required: true,
|
|
17
|
+
}),
|
|
18
|
+
userIds: Args.string({
|
|
19
|
+
description: 'User IDs to assign (space-separated)',
|
|
20
|
+
required: true,
|
|
21
|
+
}),
|
|
22
|
+
};
|
|
23
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
24
|
+
static description = 'Assign users to an issue';
|
|
25
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
26
|
+
static examples = [
|
|
27
|
+
'<%= config.bin %> assign issue 1 john-doe',
|
|
28
|
+
'<%= config.bin %> assign issue abc123-uuid alice bob',
|
|
29
|
+
'<%= config.bin %> assign issue 1 john-doe --project centy-daemon',
|
|
30
|
+
];
|
|
31
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
32
|
+
static flags = {
|
|
33
|
+
json: Flags.boolean({
|
|
34
|
+
description: 'Output as JSON',
|
|
35
|
+
default: false,
|
|
36
|
+
}),
|
|
37
|
+
project: projectFlag,
|
|
38
|
+
};
|
|
39
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
40
|
+
static strict = false;
|
|
41
|
+
async run() {
|
|
42
|
+
const { args, argv, flags } = await this.parse(AssignIssue);
|
|
43
|
+
const cwd = await resolveProjectPath(flags.project);
|
|
44
|
+
try {
|
|
45
|
+
await ensureInitialized(cwd);
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
if (error instanceof NotInitializedError) {
|
|
49
|
+
this.error(error.message);
|
|
50
|
+
}
|
|
51
|
+
throw error instanceof Error ? error : new Error(String(error));
|
|
52
|
+
}
|
|
53
|
+
// Get all user IDs from argv (everything after the issue ID)
|
|
54
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
55
|
+
const userIds = argv.slice(1);
|
|
56
|
+
if (userIds.length === 0) {
|
|
57
|
+
this.error('At least one user ID is required');
|
|
58
|
+
}
|
|
59
|
+
const response = await daemonAssignIssue({
|
|
60
|
+
projectPath: cwd,
|
|
61
|
+
issueId: args.issueId,
|
|
62
|
+
userIds,
|
|
63
|
+
});
|
|
64
|
+
if (!response.success) {
|
|
65
|
+
this.error(response.error);
|
|
66
|
+
}
|
|
67
|
+
if (flags.json) {
|
|
68
|
+
this.log(JSON.stringify(response.issue, null, 2));
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
const issue = response.issue;
|
|
72
|
+
if (issue !== undefined) {
|
|
73
|
+
this.log(`Assigned ${userIds.join(', ')} to issue #${issue.displayNumber}`);
|
|
74
|
+
const assignees = issue.metadata.assignees;
|
|
75
|
+
this.log(`Current assignees: ${assignees.length > 0 ? assignees.join(', ') : 'none'}`);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=issue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"issue.js","sourceRoot":"","sources":["../../../src/commands/assign/issue.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Command } from '@oclif/core';
|
|
2
|
+
/**
|
|
3
|
+
* Create a new user in the project
|
|
4
|
+
*/
|
|
5
|
+
export default class CreateUser extends Command {
|
|
6
|
+
static description: string;
|
|
7
|
+
static examples: string[];
|
|
8
|
+
static flags: {
|
|
9
|
+
id: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
10
|
+
name: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
11
|
+
email: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
12
|
+
'git-username': import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
13
|
+
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
14
|
+
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
15
|
+
};
|
|
16
|
+
run(): Promise<void>;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=user.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../../src/commands/create/user.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAA;AAU5C;;GAEG;AAEH,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,OAAO;IAE7C,OAAgB,WAAW,SAAqC;IAGhE,OAAgB,QAAQ,WAKvB;IAGD,OAAgB,KAAK;;;;;;;MAyBpB;IAEY,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAyClC"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
// eslint-disable-next-line import/order
|
|
2
|
+
import { Command, Flags } from '@oclif/core';
|
|
3
|
+
import { daemonCreateUser } from '../../daemon/daemon-create-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
|
+
* Create a new user in the project
|
|
9
|
+
*/
|
|
10
|
+
// eslint-disable-next-line custom/no-default-class-export, class-export/class-export
|
|
11
|
+
export default class CreateUser extends Command {
|
|
12
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
13
|
+
static description = 'Create a new user in the project';
|
|
14
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
15
|
+
static examples = [
|
|
16
|
+
'<%= config.bin %> create user --name "John Doe"',
|
|
17
|
+
'<%= config.bin %> create user --id john-doe --name "John Doe" --email john@example.com',
|
|
18
|
+
'<%= config.bin %> create user -n "Alice" -g alice-dev -g alice-work',
|
|
19
|
+
'<%= config.bin %> create user --name "Bob" --project centy-daemon',
|
|
20
|
+
];
|
|
21
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
22
|
+
static flags = {
|
|
23
|
+
id: Flags.string({
|
|
24
|
+
char: 'i',
|
|
25
|
+
description: 'User ID (slug format, auto-generated from name if not provided)',
|
|
26
|
+
}),
|
|
27
|
+
name: Flags.string({
|
|
28
|
+
char: 'n',
|
|
29
|
+
description: 'Display name (required)',
|
|
30
|
+
required: true,
|
|
31
|
+
}),
|
|
32
|
+
email: Flags.string({
|
|
33
|
+
char: 'e',
|
|
34
|
+
description: 'Email address',
|
|
35
|
+
}),
|
|
36
|
+
'git-username': Flags.string({
|
|
37
|
+
char: 'g',
|
|
38
|
+
description: 'Git username (can be specified multiple times)',
|
|
39
|
+
multiple: true,
|
|
40
|
+
}),
|
|
41
|
+
json: Flags.boolean({
|
|
42
|
+
description: 'Output as JSON',
|
|
43
|
+
default: false,
|
|
44
|
+
}),
|
|
45
|
+
project: projectFlag,
|
|
46
|
+
};
|
|
47
|
+
async run() {
|
|
48
|
+
const { flags } = await this.parse(CreateUser);
|
|
49
|
+
const cwd = await resolveProjectPath(flags.project);
|
|
50
|
+
try {
|
|
51
|
+
await ensureInitialized(cwd);
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
if (error instanceof NotInitializedError) {
|
|
55
|
+
this.error(error.message);
|
|
56
|
+
}
|
|
57
|
+
throw error instanceof Error ? error : new Error(String(error));
|
|
58
|
+
}
|
|
59
|
+
const response = await daemonCreateUser({
|
|
60
|
+
projectPath: cwd,
|
|
61
|
+
id: flags.id !== undefined ? flags.id : '',
|
|
62
|
+
name: flags.name,
|
|
63
|
+
email: flags.email,
|
|
64
|
+
gitUsernames: flags['git-username'],
|
|
65
|
+
});
|
|
66
|
+
if (!response.success) {
|
|
67
|
+
this.error(response.error);
|
|
68
|
+
}
|
|
69
|
+
if (flags.json) {
|
|
70
|
+
this.log(JSON.stringify(response.user, null, 2));
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
const user = response.user;
|
|
74
|
+
if (user !== undefined) {
|
|
75
|
+
this.log(`Created user: ${user.id} (${user.name})`);
|
|
76
|
+
if (user.email !== undefined && user.email !== '') {
|
|
77
|
+
this.log(` Email: ${user.email}`);
|
|
78
|
+
}
|
|
79
|
+
if (user.gitUsernames !== undefined && user.gitUsernames.length > 0) {
|
|
80
|
+
this.log(` Git usernames: ${user.gitUsernames.join(', ')}`);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=user.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user.js","sourceRoot":"","sources":["../../../src/commands/create/user.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Command } from '@oclif/core';
|
|
2
|
+
/**
|
|
3
|
+
* Delete an issue's plan
|
|
4
|
+
*/
|
|
5
|
+
export default class DeletePlan extends Command {
|
|
6
|
+
static args: {
|
|
7
|
+
issueId: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
|
|
8
|
+
};
|
|
9
|
+
static description: string;
|
|
10
|
+
static examples: string[];
|
|
11
|
+
static flags: {
|
|
12
|
+
force: 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=plan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../../src/commands/delete/plan.ts"],"names":[],"mappings":"AACA,OAAO,EAAQ,OAAO,EAAS,MAAM,aAAa,CAAA;AAUlD;;GAEG;AAEH,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,OAAO;IAE7C,OAAgB,IAAI;;MAKnB;IAGD,OAAgB,WAAW,SAA2B;IAGtD,OAAgB,QAAQ,WAKvB;IAGD,OAAgB,KAAK;;;MAOpB;IAEY,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA2ClC"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
// eslint-disable-next-line import/order
|
|
2
|
+
import { Args, Command, Flags } from '@oclif/core';
|
|
3
|
+
import { daemonDeletePlan } from '../../daemon/daemon-delete-plan.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
|
+
* Delete an issue's plan
|
|
9
|
+
*/
|
|
10
|
+
// eslint-disable-next-line custom/no-default-class-export, class-export/class-export
|
|
11
|
+
export default class DeletePlan extends Command {
|
|
12
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
13
|
+
static args = {
|
|
14
|
+
issueId: Args.string({
|
|
15
|
+
description: 'Issue ID or display number',
|
|
16
|
+
required: true,
|
|
17
|
+
}),
|
|
18
|
+
};
|
|
19
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
20
|
+
static description = "Delete an issue's plan";
|
|
21
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
22
|
+
static examples = [
|
|
23
|
+
'<%= config.bin %> delete plan 1',
|
|
24
|
+
'<%= config.bin %> delete plan abc123',
|
|
25
|
+
'<%= config.bin %> delete plan 1 --force',
|
|
26
|
+
'<%= config.bin %> delete plan 1 --project centy-daemon',
|
|
27
|
+
];
|
|
28
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
29
|
+
static flags = {
|
|
30
|
+
force: Flags.boolean({
|
|
31
|
+
char: 'f',
|
|
32
|
+
description: 'Skip confirmation prompt',
|
|
33
|
+
default: false,
|
|
34
|
+
}),
|
|
35
|
+
project: projectFlag,
|
|
36
|
+
};
|
|
37
|
+
async run() {
|
|
38
|
+
const { args, flags } = await this.parse(DeletePlan);
|
|
39
|
+
const cwd = await resolveProjectPath(flags.project);
|
|
40
|
+
try {
|
|
41
|
+
await ensureInitialized(cwd);
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
if (error instanceof NotInitializedError) {
|
|
45
|
+
this.error(error.message);
|
|
46
|
+
}
|
|
47
|
+
throw error instanceof Error ? error : new Error(String(error));
|
|
48
|
+
}
|
|
49
|
+
if (!flags.force) {
|
|
50
|
+
const readline = await import('node:readline');
|
|
51
|
+
const rl = readline.createInterface({
|
|
52
|
+
input: process.stdin,
|
|
53
|
+
output: process.stdout,
|
|
54
|
+
});
|
|
55
|
+
const answer = await new Promise(resolve => {
|
|
56
|
+
rl.question(`Are you sure you want to delete the plan for issue ${args.issueId}? (y/N) `, resolve);
|
|
57
|
+
});
|
|
58
|
+
rl.close();
|
|
59
|
+
if (answer.toLowerCase() !== 'y') {
|
|
60
|
+
this.log('Cancelled.');
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
const response = await daemonDeletePlan({
|
|
65
|
+
projectPath: cwd,
|
|
66
|
+
issueId: args.issueId,
|
|
67
|
+
});
|
|
68
|
+
if (!response.success) {
|
|
69
|
+
this.error(response.error);
|
|
70
|
+
}
|
|
71
|
+
this.log(`Deleted plan for issue ${args.issueId}`);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=plan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plan.js","sourceRoot":"","sources":["../../../src/commands/delete/plan.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Command } from '@oclif/core';
|
|
2
|
+
/**
|
|
3
|
+
* Delete a user
|
|
4
|
+
*/
|
|
5
|
+
export default class DeleteUser 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
|
+
force: 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/delete/user.ts"],"names":[],"mappings":"AACA,OAAO,EAAQ,OAAO,EAAS,MAAM,aAAa,CAAA;AAUlD;;GAEG;AAEH,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,OAAO;IAE7C,OAAgB,IAAI;;MAKnB;IAGD,OAAgB,WAAW,SAAkB;IAG7C,OAAgB,QAAQ,WAIvB;IAGD,OAAgB,KAAK;;;MAOpB;IAEY,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA2ClC"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
// eslint-disable-next-line import/order
|
|
2
|
+
import { Args, Command, Flags } from '@oclif/core';
|
|
3
|
+
import { daemonDeleteUser } from '../../daemon/daemon-delete-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
|
+
* Delete a user
|
|
9
|
+
*/
|
|
10
|
+
// eslint-disable-next-line custom/no-default-class-export, class-export/class-export
|
|
11
|
+
export default class DeleteUser 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 = 'Delete a user';
|
|
21
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
22
|
+
static examples = [
|
|
23
|
+
'<%= config.bin %> delete user john-doe',
|
|
24
|
+
'<%= config.bin %> delete user john-doe --force',
|
|
25
|
+
'<%= config.bin %> delete user john-doe --project centy-daemon',
|
|
26
|
+
];
|
|
27
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
28
|
+
static flags = {
|
|
29
|
+
force: Flags.boolean({
|
|
30
|
+
char: 'f',
|
|
31
|
+
description: 'Skip confirmation prompt',
|
|
32
|
+
default: false,
|
|
33
|
+
}),
|
|
34
|
+
project: projectFlag,
|
|
35
|
+
};
|
|
36
|
+
async run() {
|
|
37
|
+
const { args, flags } = await this.parse(DeleteUser);
|
|
38
|
+
const cwd = await resolveProjectPath(flags.project);
|
|
39
|
+
try {
|
|
40
|
+
await ensureInitialized(cwd);
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
if (error instanceof NotInitializedError) {
|
|
44
|
+
this.error(error.message);
|
|
45
|
+
}
|
|
46
|
+
throw error instanceof Error ? error : new Error(String(error));
|
|
47
|
+
}
|
|
48
|
+
if (!flags.force) {
|
|
49
|
+
const readline = await import('node:readline');
|
|
50
|
+
const rl = readline.createInterface({
|
|
51
|
+
input: process.stdin,
|
|
52
|
+
output: process.stdout,
|
|
53
|
+
});
|
|
54
|
+
const answer = await new Promise(resolve => {
|
|
55
|
+
rl.question(`Are you sure you want to delete user "${args.id}"? (y/N) `, resolve);
|
|
56
|
+
});
|
|
57
|
+
rl.close();
|
|
58
|
+
if (answer.toLowerCase() !== 'y') {
|
|
59
|
+
this.log('Cancelled.');
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
const response = await daemonDeleteUser({
|
|
64
|
+
projectPath: cwd,
|
|
65
|
+
userId: args.id,
|
|
66
|
+
});
|
|
67
|
+
if (!response.success) {
|
|
68
|
+
this.error(response.error);
|
|
69
|
+
}
|
|
70
|
+
this.log(`Deleted user "${args.id}"`);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=user.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user.js","sourceRoot":"","sources":["../../../src/commands/delete/user.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"}
|