kodu 1.2.0 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (138) hide show
  1. package/AGENTS.md +36 -68
  2. package/README.md +128 -96
  3. package/dist/package.json +1 -2
  4. package/dist/src/app.module.js +0 -8
  5. package/dist/src/app.module.js.map +1 -1
  6. package/dist/src/commands/clean/clean.command.d.ts +14 -1
  7. package/dist/src/commands/clean/clean.command.js +142 -32
  8. package/dist/src/commands/clean/clean.command.js.map +1 -1
  9. package/dist/src/commands/init/init.command.d.ts +2 -9
  10. package/dist/src/commands/init/init.command.js +15 -241
  11. package/dist/src/commands/init/init.command.js.map +1 -1
  12. package/dist/src/commands/pack/pack.command.d.ts +12 -1
  13. package/dist/src/commands/pack/pack.command.js +81 -6
  14. package/dist/src/commands/pack/pack.command.js.map +1 -1
  15. package/dist/src/commands/pack/pack.module.js +2 -1
  16. package/dist/src/commands/pack/pack.module.js.map +1 -1
  17. package/dist/src/core/config/config.schema.d.ts +0 -46
  18. package/dist/src/core/config/config.schema.js +1 -51
  19. package/dist/src/core/config/config.schema.js.map +1 -1
  20. package/dist/src/core/config/config.service.js +2 -2
  21. package/dist/src/core/config/config.service.js.map +1 -1
  22. package/dist/src/core/config/prompt.service.d.ts +1 -4
  23. package/dist/src/core/config/prompt.service.js +4 -17
  24. package/dist/src/core/config/prompt.service.js.map +1 -1
  25. package/dist/src/shared/cleaner/cleaner.service.d.ts +2 -0
  26. package/dist/src/shared/cleaner/cleaner.service.js +32 -7
  27. package/dist/src/shared/cleaner/cleaner.service.js.map +1 -1
  28. package/dist/src/shared/cleaner/cleaner.types.d.ts +7 -0
  29. package/dist/src/shared/constants.d.ts +0 -4
  30. package/dist/src/shared/constants.js +1 -5
  31. package/dist/src/shared/constants.js.map +1 -1
  32. package/dist/src/shared/git/git.module.js +0 -2
  33. package/dist/src/shared/git/git.module.js.map +1 -1
  34. package/dist/src/shared/git/git.service.d.ts +1 -8
  35. package/dist/src/shared/git/git.service.js +10 -33
  36. package/dist/src/shared/git/git.service.js.map +1 -1
  37. package/dist/src/shared/tokenizer/tokenizer.module.js +0 -2
  38. package/dist/src/shared/tokenizer/tokenizer.module.js.map +1 -1
  39. package/dist/src/shared/tokenizer/tokenizer.service.d.ts +0 -6
  40. package/dist/src/shared/tokenizer/tokenizer.service.js +8 -38
  41. package/dist/src/shared/tokenizer/tokenizer.service.js.map +1 -1
  42. package/dist/tsconfig.build.tsbuildinfo +1 -1
  43. package/kodu.schema.json +0 -139
  44. package/package.json +1 -2
  45. package/src/app.module.ts +0 -8
  46. package/src/commands/clean/clean.command.ts +143 -33
  47. package/src/commands/init/init.command.ts +15 -310
  48. package/src/commands/pack/pack.command.ts +74 -4
  49. package/src/commands/pack/pack.module.ts +2 -1
  50. package/src/core/config/config.schema.ts +1 -68
  51. package/src/core/config/config.service.ts +2 -2
  52. package/src/core/config/prompt.service.ts +4 -26
  53. package/src/shared/cleaner/cleaner.service.ts +43 -12
  54. package/src/shared/cleaner/cleaner.types.ts +7 -0
  55. package/src/shared/constants.ts +0 -4
  56. package/src/shared/git/git.module.ts +0 -2
  57. package/src/shared/git/git.service.ts +9 -31
  58. package/src/shared/tokenizer/tokenizer.module.ts +0 -2
  59. package/src/shared/tokenizer/tokenizer.service.ts +9 -39
  60. package/.kodu/prompts/.keep +0 -0
  61. package/.kodu/prompts/commit.md +0 -9
  62. package/.kodu/prompts/pack.md +0 -7
  63. package/.kodu/prompts/review-bug.md +0 -6
  64. package/.kodu/prompts/review-security.md +0 -6
  65. package/.kodu/prompts/review-style.md +0 -6
  66. package/.opencode/command/openspec-apply.md +0 -24
  67. package/.opencode/command/openspec-archive.md +0 -27
  68. package/.opencode/command/openspec-proposal.md +0 -29
  69. package/.opencode/skills/kodu-ops/SKILL.md +0 -184
  70. package/dist/src/commands/commit/commit.command.d.ts +0 -18
  71. package/dist/src/commands/commit/commit.command.js +0 -149
  72. package/dist/src/commands/commit/commit.command.js.map +0 -1
  73. package/dist/src/commands/commit/commit.module.d.ts +0 -2
  74. package/dist/src/commands/commit/commit.module.js +0 -25
  75. package/dist/src/commands/commit/commit.module.js.map +0 -1
  76. package/dist/src/commands/ops/ops.command.d.ts +0 -4
  77. package/dist/src/commands/ops/ops.command.js +0 -39
  78. package/dist/src/commands/ops/ops.command.js.map +0 -1
  79. package/dist/src/commands/ops/ops.module.d.ts +0 -2
  80. package/dist/src/commands/ops/ops.module.js +0 -33
  81. package/dist/src/commands/ops/ops.module.js.map +0 -1
  82. package/dist/src/commands/ops/ops.types.d.ts +0 -13
  83. package/dist/src/commands/ops/ops.types.js +0 -12
  84. package/dist/src/commands/ops/ops.types.js.map +0 -1
  85. package/dist/src/commands/ops/ops.utils.d.ts +0 -13
  86. package/dist/src/commands/ops/ops.utils.js +0 -121
  87. package/dist/src/commands/ops/ops.utils.js.map +0 -1
  88. package/dist/src/commands/ops/subcommands/ops-env.command.d.ts +0 -24
  89. package/dist/src/commands/ops/subcommands/ops-env.command.js +0 -156
  90. package/dist/src/commands/ops/subcommands/ops-env.command.js.map +0 -1
  91. package/dist/src/commands/ops/subcommands/ops-routes.command.d.ts +0 -22
  92. package/dist/src/commands/ops/subcommands/ops-routes.command.js +0 -203
  93. package/dist/src/commands/ops/subcommands/ops-routes.command.js.map +0 -1
  94. package/dist/src/commands/ops/subcommands/ops-service.command.d.ts +0 -22
  95. package/dist/src/commands/ops/subcommands/ops-service.command.js +0 -169
  96. package/dist/src/commands/ops/subcommands/ops-service.command.js.map +0 -1
  97. package/dist/src/commands/ops/subcommands/ops-sysinfo.command.d.ts +0 -14
  98. package/dist/src/commands/ops/subcommands/ops-sysinfo.command.js +0 -75
  99. package/dist/src/commands/ops/subcommands/ops-sysinfo.command.js.map +0 -1
  100. package/dist/src/commands/review/review.command.d.ts +0 -26
  101. package/dist/src/commands/review/review.command.js +0 -205
  102. package/dist/src/commands/review/review.command.js.map +0 -1
  103. package/dist/src/commands/review/review.module.d.ts +0 -2
  104. package/dist/src/commands/review/review.module.js +0 -26
  105. package/dist/src/commands/review/review.module.js.map +0 -1
  106. package/dist/src/core/config/default-prompts.d.ts +0 -9
  107. package/dist/src/core/config/default-prompts.js +0 -49
  108. package/dist/src/core/config/default-prompts.js.map +0 -1
  109. package/dist/src/shared/ai/ai.module.d.ts +0 -2
  110. package/dist/src/shared/ai/ai.module.js +0 -23
  111. package/dist/src/shared/ai/ai.module.js.map +0 -1
  112. package/dist/src/shared/ai/ai.service.d.ts +0 -22
  113. package/dist/src/shared/ai/ai.service.js +0 -164
  114. package/dist/src/shared/ai/ai.service.js.map +0 -1
  115. package/dist/src/shared/ssh/ssh.module.d.ts +0 -2
  116. package/dist/src/shared/ssh/ssh.module.js +0 -21
  117. package/dist/src/shared/ssh/ssh.module.js.map +0 -1
  118. package/dist/src/shared/ssh/ssh.service.d.ts +0 -11
  119. package/dist/src/shared/ssh/ssh.service.js +0 -53
  120. package/dist/src/shared/ssh/ssh.service.js.map +0 -1
  121. package/dist/tsconfig.tsbuildinfo +0 -1
  122. package/src/commands/commit/commit.command.ts +0 -139
  123. package/src/commands/commit/commit.module.ts +0 -12
  124. package/src/commands/ops/ops.command.ts +0 -30
  125. package/src/commands/ops/ops.module.ts +0 -20
  126. package/src/commands/ops/ops.types.ts +0 -24
  127. package/src/commands/ops/ops.utils.ts +0 -160
  128. package/src/commands/ops/subcommands/ops-env.command.ts +0 -165
  129. package/src/commands/ops/subcommands/ops-routes.command.ts +0 -221
  130. package/src/commands/ops/subcommands/ops-service.command.ts +0 -190
  131. package/src/commands/ops/subcommands/ops-sysinfo.command.ts +0 -77
  132. package/src/commands/review/review.command.ts +0 -199
  133. package/src/commands/review/review.module.ts +0 -13
  134. package/src/core/config/default-prompts.ts +0 -53
  135. package/src/shared/ai/ai.module.ts +0 -10
  136. package/src/shared/ai/ai.service.ts +0 -216
  137. package/src/shared/ssh/ssh.module.ts +0 -8
  138. package/src/shared/ssh/ssh.service.ts +0 -61
@@ -1,22 +0,0 @@
1
- import { CommandRunner } from 'nest-commander';
2
- import { ConfigService } from '../../../core/config/config.service';
3
- import { SshService } from '../../../shared/ssh/ssh.service';
4
- type OpsRoutesOptions = {
5
- server?: string;
6
- action?: string;
7
- domain?: string;
8
- upstream?: string;
9
- };
10
- export declare class OpsRoutesCommand extends CommandRunner {
11
- private readonly configService;
12
- private readonly sshService;
13
- constructor(configService: ConfigService, sshService: SshService);
14
- parseServer(value: string): string;
15
- parseAction(value: string): string;
16
- parseDomain(value: string): string;
17
- parseUpstream(value: string): string;
18
- run(passedParams: string[], options?: OpsRoutesOptions): Promise<void>;
19
- private buildEditCommand;
20
- private buildPythonScript;
21
- }
22
- export {};
@@ -1,203 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- var __metadata = (this && this.__metadata) || function (k, v) {
9
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
- };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.OpsRoutesCommand = void 0;
16
- const node_path_1 = __importDefault(require("node:path"));
17
- const nest_commander_1 = require("nest-commander");
18
- const config_service_1 = require("../../../core/config/config.service");
19
- const ssh_service_1 = require("../../../shared/ssh/ssh.service");
20
- const ops_types_1 = require("../ops.types");
21
- const ops_utils_1 = require("../ops.utils");
22
- let OpsRoutesCommand = class OpsRoutesCommand extends nest_commander_1.CommandRunner {
23
- configService;
24
- sshService;
25
- constructor(configService, sshService) {
26
- super();
27
- this.configService = configService;
28
- this.sshService = sshService;
29
- }
30
- parseServer(value) {
31
- return value;
32
- }
33
- parseAction(value) {
34
- return value;
35
- }
36
- parseDomain(value) {
37
- return value;
38
- }
39
- parseUpstream(value) {
40
- return value;
41
- }
42
- async run(passedParams, options = {}) {
43
- try {
44
- if (passedParams.length > 0) {
45
- throw new ops_types_1.OpsCliError('VALIDATION_ERROR', 'Positional arguments are not supported. Use named flags (e.g., --server, --action). Run with --help for examples.');
46
- }
47
- const serverAlias = (0, ops_utils_1.ensureRequired)(options.server, 'server');
48
- const rawAction = (0, ops_utils_1.ensureRequired)(options.action, 'action');
49
- const action = (0, ops_utils_1.ensureAction)(rawAction, ['list', 'add', 'remove', 'update'], 'routes action');
50
- const server = await (0, ops_utils_1.resolveServerOrThrow)(this.configService.getConfig(), serverAlias);
51
- const caddyRoot = (0, ops_utils_1.resolveCaddyPath)(server);
52
- const caddyfilePath = node_path_1.default.posix.join(caddyRoot, 'data', 'Caddyfile');
53
- if (action === 'list') {
54
- const command = `cat ${(0, ops_utils_1.shellQuote)(caddyfilePath)}`;
55
- const result = await this.sshService.execute(server, command);
56
- if (!result.success) {
57
- (0, ops_utils_1.printSshError)(result, command);
58
- return;
59
- }
60
- (0, ops_utils_1.printJson)({ status: 'ok', data: { caddyfile: result.stdout } });
61
- return;
62
- }
63
- const domain = (0, ops_utils_1.ensureRequired)(options.domain, 'domain');
64
- const upstream = action === 'add' || action === 'update'
65
- ? (0, ops_utils_1.ensureRequired)(options.upstream, 'upstream')
66
- : '';
67
- const editCommand = this.buildEditCommand({
68
- action,
69
- caddyfilePath,
70
- domain,
71
- upstream,
72
- });
73
- const editResult = await this.sshService.execute(server, editCommand);
74
- if (!editResult.success) {
75
- if (editResult.exitCode === 4) {
76
- (0, ops_utils_1.printJson)({
77
- status: 'error',
78
- code: 'NOT_FOUND',
79
- stderr: editResult.stderr || editResult.stdout || 'Route not found',
80
- command: editCommand,
81
- });
82
- return;
83
- }
84
- (0, ops_utils_1.printSshError)(editResult, editCommand);
85
- return;
86
- }
87
- const applyCommand = `cd ${(0, ops_utils_1.shellQuote)(caddyRoot)} && ./caddy.sh`;
88
- const applyResult = await this.sshService.execute(server, applyCommand);
89
- if (!applyResult.success) {
90
- (0, ops_utils_1.printSshError)(applyResult, applyCommand);
91
- return;
92
- }
93
- (0, ops_utils_1.printJson)({
94
- status: 'ok',
95
- message: 'Routes updated',
96
- data: {
97
- action,
98
- domain,
99
- upstream: upstream || undefined,
100
- caddyOutput: applyResult.stdout,
101
- },
102
- });
103
- }
104
- catch (error) {
105
- (0, ops_utils_1.printCliError)(error);
106
- process.exitCode = 1;
107
- }
108
- }
109
- buildEditCommand(params) {
110
- const script = this.buildPythonScript(params);
111
- return `python3 -c ${(0, ops_utils_1.shellQuote)(script)}`;
112
- }
113
- buildPythonScript(params) {
114
- return [
115
- 'import json',
116
- 'import os',
117
- 'import random',
118
- 'import re',
119
- 'import sys',
120
- 'import time',
121
- 'from pathlib import Path',
122
- `file_path = ${JSON.stringify(params.caddyfilePath)}`,
123
- `action = ${JSON.stringify(params.action)}`,
124
- `domain = ${JSON.stringify(params.domain)}`,
125
- `upstream = ${JSON.stringify(params.upstream)}`,
126
- 'with Path(file_path).open("r", encoding="utf-8") as handle:',
127
- ' text = handle.read()',
128
- 'domain_re = re.compile(r"(^|\\n)\\s*" + re.escape(domain) + r"\\s*\\{[\\s\\S]*?\\n\\}", re.MULTILINE)',
129
- 'if action == "add":',
130
- ' if domain_re.search(text):',
131
- ' sys.stderr.write("Route already exists for domain")',
132
- ' sys.exit(3)',
133
- ' block = "\\n" + domain + " {\\n reverse_proxy " + upstream + "\\n}\\n"',
134
- ' text = re.sub(r"\\s*$", "", text) + block',
135
- 'elif action == "remove":',
136
- ' if not domain_re.search(text):',
137
- ' sys.stderr.write("Route not found")',
138
- ' sys.exit(4)',
139
- ' text = domain_re.sub("\\n", text, count=1)',
140
- ' text = re.sub(r"\\n{3,}", "\\n\\n", text)',
141
- ' text = re.sub(r"^\\n+", "", text)',
142
- 'elif action == "update":',
143
- ' match = domain_re.search(text)',
144
- ' if not match:',
145
- ' sys.stderr.write("Route not found")',
146
- ' sys.exit(4)',
147
- ' block = match.group(0)',
148
- ' updated = re.sub(r"reverse_proxy\\s+[^\\n]+", "reverse_proxy " + upstream, block, count=1)',
149
- ' text = domain_re.sub(updated, text, count=1)',
150
- 'tmp = os.path.join(os.path.dirname(file_path), ".tmp-" + str(int(time.time() * 1000)) + "-" + format(random.getrandbits(48), "x"))',
151
- 'with open(tmp, "w", encoding="utf-8") as handle:',
152
- ' handle.write(text)',
153
- 'os.replace(tmp, file_path)',
154
- 'print(json.dumps({"status": "ok"}))',
155
- ].join('\n');
156
- }
157
- };
158
- exports.OpsRoutesCommand = OpsRoutesCommand;
159
- __decorate([
160
- (0, nest_commander_1.Option)({
161
- flags: '-s, --server <name>',
162
- description: 'Server alias defined in kodu.json (e.g., dev)',
163
- }),
164
- __metadata("design:type", Function),
165
- __metadata("design:paramtypes", [String]),
166
- __metadata("design:returntype", String)
167
- ], OpsRoutesCommand.prototype, "parseServer", null);
168
- __decorate([
169
- (0, nest_commander_1.Option)({
170
- flags: '-a, --action <type>',
171
- description: 'Action to perform: list | add | remove | update',
172
- }),
173
- __metadata("design:type", Function),
174
- __metadata("design:paramtypes", [String]),
175
- __metadata("design:returntype", String)
176
- ], OpsRoutesCommand.prototype, "parseAction", null);
177
- __decorate([
178
- (0, nest_commander_1.Option)({
179
- flags: '--domain <domain>',
180
- description: 'Domain name (required for add, update, remove)',
181
- }),
182
- __metadata("design:type", Function),
183
- __metadata("design:paramtypes", [String]),
184
- __metadata("design:returntype", String)
185
- ], OpsRoutesCommand.prototype, "parseDomain", null);
186
- __decorate([
187
- (0, nest_commander_1.Option)({
188
- flags: '--upstream <upstream>',
189
- description: 'Upstream host:port (required for add, update)',
190
- }),
191
- __metadata("design:type", Function),
192
- __metadata("design:paramtypes", [String]),
193
- __metadata("design:returntype", String)
194
- ], OpsRoutesCommand.prototype, "parseUpstream", null);
195
- exports.OpsRoutesCommand = OpsRoutesCommand = __decorate([
196
- (0, nest_commander_1.SubCommand)({
197
- name: 'routes',
198
- description: 'Manage remote Caddy reverse proxy routes.\nExamples:\n kodu ops routes --server dev --action list\n kodu ops routes --server dev --action add --domain api.example.com --upstream 127.0.0.1:3000\n kodu ops routes --server dev --action update --domain api.example.com --upstream 127.0.0.1:4000\n kodu ops routes --server dev --action remove --domain api.example.com',
199
- }),
200
- __metadata("design:paramtypes", [config_service_1.ConfigService,
201
- ssh_service_1.SshService])
202
- ], OpsRoutesCommand);
203
- //# sourceMappingURL=ops-routes.command.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ops-routes.command.js","sourceRoot":"","sources":["../../../../../src/commands/ops/subcommands/ops-routes.command.ts"],"names":[],"mappings":"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"}
@@ -1,22 +0,0 @@
1
- import { CommandRunner } from 'nest-commander';
2
- import { ConfigService } from '../../../core/config/config.service';
3
- import { SshService } from '../../../shared/ssh/ssh.service';
4
- type OpsServiceOptions = {
5
- server?: string;
6
- action?: string;
7
- project?: string;
8
- repo?: string;
9
- };
10
- export declare class OpsServiceCommand extends CommandRunner {
11
- private readonly configService;
12
- private readonly sshService;
13
- constructor(configService: ConfigService, sshService: SshService);
14
- parseServer(value: string): string;
15
- parseAction(value: string): string;
16
- parseProject(value: string): string;
17
- parseRepo(value: string): string;
18
- run(passedParams: string[], options?: OpsServiceOptions): Promise<void>;
19
- private buildActionCommand;
20
- private runStatus;
21
- }
22
- export {};
@@ -1,169 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- var __metadata = (this && this.__metadata) || function (k, v) {
9
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
- };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.OpsServiceCommand = void 0;
16
- const node_path_1 = __importDefault(require("node:path"));
17
- const nest_commander_1 = require("nest-commander");
18
- const config_service_1 = require("../../../core/config/config.service");
19
- const ssh_service_1 = require("../../../shared/ssh/ssh.service");
20
- const ops_types_1 = require("../ops.types");
21
- const ops_utils_1 = require("../ops.utils");
22
- let OpsServiceCommand = class OpsServiceCommand extends nest_commander_1.CommandRunner {
23
- configService;
24
- sshService;
25
- constructor(configService, sshService) {
26
- super();
27
- this.configService = configService;
28
- this.sshService = sshService;
29
- }
30
- parseServer(value) {
31
- return value;
32
- }
33
- parseAction(value) {
34
- return value;
35
- }
36
- parseProject(value) {
37
- return value;
38
- }
39
- parseRepo(value) {
40
- return value;
41
- }
42
- async run(passedParams, options = {}) {
43
- try {
44
- if (passedParams.length > 0) {
45
- throw new ops_types_1.OpsCliError('VALIDATION_ERROR', 'Positional arguments are not supported. Use named flags (e.g., --server, --action). Run with --help for examples.');
46
- }
47
- const serverAlias = (0, ops_utils_1.ensureRequired)(options.server, 'server');
48
- const rawAction = (0, ops_utils_1.ensureRequired)(options.action, 'action');
49
- const project = (0, ops_utils_1.ensureRequired)(options.project, 'project');
50
- const action = (0, ops_utils_1.ensureAction)(rawAction, ['clone', 'pull', 'up', 'down', 'logs', 'status'], 'service action');
51
- const server = await (0, ops_utils_1.resolveServerOrThrow)(this.configService.getConfig(), serverAlias);
52
- const projectPath = node_path_1.default.posix.join((0, ops_utils_1.resolveAppsPath)(server), project);
53
- if (action === 'status') {
54
- await this.runStatus(server, projectPath);
55
- return;
56
- }
57
- const command = this.buildActionCommand(action, projectPath, options);
58
- const result = await this.sshService.execute(server, command);
59
- if (!result.success) {
60
- (0, ops_utils_1.printSshError)(result, command);
61
- return;
62
- }
63
- (0, ops_utils_1.printJson)({
64
- status: 'ok',
65
- data: {
66
- action,
67
- project,
68
- stdout: result.stdout,
69
- },
70
- });
71
- }
72
- catch (error) {
73
- (0, ops_utils_1.printCliError)(error);
74
- process.exitCode = 1;
75
- }
76
- }
77
- buildActionCommand(action, projectPath, options) {
78
- const quotedProjectPath = (0, ops_utils_1.shellQuote)(projectPath);
79
- if (action === 'clone') {
80
- const repo = (0, ops_utils_1.ensureRequired)(options.repo, 'repo');
81
- const quotedRepo = (0, ops_utils_1.shellQuote)(repo);
82
- return [
83
- `if [ -d ${quotedProjectPath} ]; then echo 'Project already exists' >&2; exit 3; fi`,
84
- `git clone ${quotedRepo} ${quotedProjectPath}`,
85
- ].join(' && ');
86
- }
87
- if (action === 'pull') {
88
- return `cd ${quotedProjectPath} && git pull`;
89
- }
90
- if (action === 'up') {
91
- return `cd ${quotedProjectPath} && docker compose up -d`;
92
- }
93
- if (action === 'down') {
94
- return `cd ${quotedProjectPath} && docker compose down`;
95
- }
96
- return `cd ${quotedProjectPath} && docker compose logs --no-color --tail=200`;
97
- }
98
- async runStatus(server, projectPath) {
99
- const quotedProjectPath = (0, ops_utils_1.shellQuote)(projectPath);
100
- const jsonCommand = `cd ${quotedProjectPath} && docker compose ps --format json`;
101
- const jsonResult = await this.sshService.execute(server, jsonCommand);
102
- if (jsonResult.success) {
103
- (0, ops_utils_1.printJson)({
104
- status: 'ok',
105
- data: {
106
- action: 'status',
107
- stdout: jsonResult.stdout,
108
- },
109
- });
110
- return;
111
- }
112
- const fallbackCommand = `cd ${quotedProjectPath} && docker compose ps`;
113
- const fallbackResult = await this.sshService.execute(server, fallbackCommand);
114
- if (!fallbackResult.success) {
115
- (0, ops_utils_1.printSshError)(fallbackResult, fallbackCommand);
116
- return;
117
- }
118
- (0, ops_utils_1.printJson)({
119
- status: 'ok',
120
- data: {
121
- action: 'status',
122
- raw: fallbackResult.stdout,
123
- },
124
- });
125
- }
126
- };
127
- exports.OpsServiceCommand = OpsServiceCommand;
128
- __decorate([
129
- (0, nest_commander_1.Option)({
130
- flags: '-s, --server <name>',
131
- description: 'Server alias defined in kodu.json (e.g., dev)',
132
- }),
133
- __metadata("design:type", Function),
134
- __metadata("design:paramtypes", [String]),
135
- __metadata("design:returntype", String)
136
- ], OpsServiceCommand.prototype, "parseServer", null);
137
- __decorate([
138
- (0, nest_commander_1.Option)({
139
- flags: '-a, --action <type>',
140
- description: 'Action to perform: clone | pull | up | down | logs | status',
141
- }),
142
- __metadata("design:type", Function),
143
- __metadata("design:paramtypes", [String]),
144
- __metadata("design:returntype", String)
145
- ], OpsServiceCommand.prototype, "parseAction", null);
146
- __decorate([
147
- (0, nest_commander_1.Option)({
148
- flags: '-p, --project <name>',
149
- description: 'Target project directory name',
150
- }),
151
- __metadata("design:type", Function),
152
- __metadata("design:paramtypes", [String]),
153
- __metadata("design:returntype", String)
154
- ], OpsServiceCommand.prototype, "parseProject", null);
155
- __decorate([
156
- (0, nest_commander_1.Option)({ flags: '--repo <url>', description: 'Repository URL for clone' }),
157
- __metadata("design:type", Function),
158
- __metadata("design:paramtypes", [String]),
159
- __metadata("design:returntype", String)
160
- ], OpsServiceCommand.prototype, "parseRepo", null);
161
- exports.OpsServiceCommand = OpsServiceCommand = __decorate([
162
- (0, nest_commander_1.SubCommand)({
163
- name: 'service',
164
- description: 'Manage project lifecycle using Docker Compose.\nExamples:\n kodu ops service --server dev --action clone --project temp --repo https://github.com/org/repo.git\n kodu ops service --server dev --action up --project temp\n kodu ops service --server dev --action status --project temp\n kodu ops service --server dev --action logs --project temp\n kodu ops service --server dev --action pull --project temp\n kodu ops service --server dev --action down --project temp',
165
- }),
166
- __metadata("design:paramtypes", [config_service_1.ConfigService,
167
- ssh_service_1.SshService])
168
- ], OpsServiceCommand);
169
- //# sourceMappingURL=ops-service.command.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ops-service.command.js","sourceRoot":"","sources":["../../../../../src/commands/ops/subcommands/ops-service.command.ts"],"names":[],"mappings":"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"}
@@ -1,14 +0,0 @@
1
- import { CommandRunner } from 'nest-commander';
2
- import { ConfigService } from '../../../core/config/config.service';
3
- import { SshService } from '../../../shared/ssh/ssh.service';
4
- type OpsSysinfoOptions = {
5
- server?: string;
6
- };
7
- export declare class OpsSysinfoCommand extends CommandRunner {
8
- private readonly configService;
9
- private readonly sshService;
10
- constructor(configService: ConfigService, sshService: SshService);
11
- parseServer(value: string): string;
12
- run(passedParams: string[], options?: OpsSysinfoOptions): Promise<void>;
13
- }
14
- export {};
@@ -1,75 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- var __metadata = (this && this.__metadata) || function (k, v) {
9
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.OpsSysinfoCommand = void 0;
13
- const nest_commander_1 = require("nest-commander");
14
- const config_service_1 = require("../../../core/config/config.service");
15
- const ssh_service_1 = require("../../../shared/ssh/ssh.service");
16
- const ops_types_1 = require("../ops.types");
17
- const ops_utils_1 = require("../ops.utils");
18
- let OpsSysinfoCommand = class OpsSysinfoCommand extends nest_commander_1.CommandRunner {
19
- configService;
20
- sshService;
21
- constructor(configService, sshService) {
22
- super();
23
- this.configService = configService;
24
- this.sshService = sshService;
25
- }
26
- parseServer(value) {
27
- return value;
28
- }
29
- async run(passedParams, options = {}) {
30
- try {
31
- if (passedParams.length > 0) {
32
- throw new ops_types_1.OpsCliError('VALIDATION_ERROR', 'Positional arguments are not supported. Use named flags (e.g., --server, --action). Run with --help for examples.');
33
- }
34
- const serverAlias = (0, ops_utils_1.ensureRequired)(options.server, 'server');
35
- const server = await (0, ops_utils_1.resolveServerOrThrow)(this.configService.getConfig(), serverAlias);
36
- const payload = `echo "{"uptime": "$(uptime -p)", "disk_usage": "$(df -h / | tail -1 | awk '{print $5}')", "mem_free": "$(free -m | grep Mem | awk '{print $4}')MB"}`;
37
- const result = await this.sshService.execute(server, payload);
38
- if (!result.success) {
39
- (0, ops_utils_1.printSshError)(result, payload);
40
- return;
41
- }
42
- let data = {};
43
- try {
44
- data = JSON.parse(result.stdout);
45
- }
46
- catch {
47
- data = { raw: result.stdout.trim() };
48
- }
49
- (0, ops_utils_1.printJson)({ status: 'ok', data });
50
- }
51
- catch (error) {
52
- (0, ops_utils_1.printCliError)(error);
53
- process.exitCode = 1;
54
- }
55
- }
56
- };
57
- exports.OpsSysinfoCommand = OpsSysinfoCommand;
58
- __decorate([
59
- (0, nest_commander_1.Option)({
60
- flags: '-s, --server <name>',
61
- description: 'Server alias defined in kodu.json (e.g., dev)',
62
- }),
63
- __metadata("design:type", Function),
64
- __metadata("design:paramtypes", [String]),
65
- __metadata("design:returntype", String)
66
- ], OpsSysinfoCommand.prototype, "parseServer", null);
67
- exports.OpsSysinfoCommand = OpsSysinfoCommand = __decorate([
68
- (0, nest_commander_1.SubCommand)({
69
- name: 'sysinfo',
70
- description: 'Collect remote server diagnostics.\nExample: kodu ops sysinfo --server dev',
71
- }),
72
- __metadata("design:paramtypes", [config_service_1.ConfigService,
73
- ssh_service_1.SshService])
74
- ], OpsSysinfoCommand);
75
- //# sourceMappingURL=ops-sysinfo.command.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ops-sysinfo.command.js","sourceRoot":"","sources":["../../../../../src/commands/ops/subcommands/ops-sysinfo.command.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,mDAAmE;AACnE,wEAAoE;AACpE,iEAA6D;AAC7D,4CAA2C;AAC3C,4CAMsB;AAWf,IAAM,iBAAiB,GAAvB,MAAM,iBAAkB,SAAQ,8BAAa;IAE/B;IACA;IAFnB,YACmB,aAA4B,EAC5B,UAAsB;QAEvC,KAAK,EAAE,CAAC;QAHS,kBAAa,GAAb,aAAa,CAAe;QAC5B,eAAU,GAAV,UAAU,CAAY;IAGzC,CAAC;IAMD,WAAW,CAAC,KAAa;QACvB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,GAAG,CACP,YAAsB,EACtB,UAA6B,EAAE;QAE/B,IAAI,CAAC;YACH,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5B,MAAM,IAAI,uBAAW,CACnB,kBAAkB,EAClB,mHAAmH,CACpH,CAAC;YACJ,CAAC;YAED,MAAM,WAAW,GAAG,IAAA,0BAAc,EAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YAE7D,MAAM,MAAM,GAAG,MAAM,IAAA,gCAAoB,EACvC,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,EAC9B,WAAW,CACZ,CAAC;YACF,MAAM,OAAO,GAAG,qJAAqJ,CAAC;YAEtK,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAC9D,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,IAAA,yBAAa,EAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBAC/B,OAAO;YACT,CAAC;YAED,IAAI,IAAI,GAA2B,EAAE,CAAC;YACtC,IAAI,CAAC;gBACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAA2B,CAAC;YAC7D,CAAC;YAAC,MAAM,CAAC;gBACP,IAAI,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;YACvC,CAAC;YAED,IAAA,qBAAS,EAAC,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACpC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAA,yBAAa,EAAC,KAAK,CAAC,CAAC;YACrB,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;CACF,CAAA;AAvDY,8CAAiB;AAY5B;IAJC,IAAA,uBAAM,EAAC;QACN,KAAK,EAAE,qBAAqB;QAC5B,WAAW,EAAE,+CAA+C;KAC7D,CAAC;;;;oDAGD;4BAdU,iBAAiB;IAL7B,IAAA,2BAAU,EAAC;QACV,IAAI,EAAE,SAAS;QACf,WAAW,EACT,4EAA4E;KAC/E,CAAC;qCAGkC,8BAAa;QAChB,wBAAU;GAH9B,iBAAiB,CAuD7B"}
@@ -1,26 +0,0 @@
1
- import { CommandRunner } from 'nest-commander';
2
- import { UiService } from '../../core/ui/ui.service';
3
- import { AiService, type ReviewMode } from '../../shared/ai/ai.service';
4
- import { GitService } from '../../shared/git/git.service';
5
- import { TokenizerService } from '../../shared/tokenizer/tokenizer.service';
6
- type ReviewOptions = {
7
- mode?: ReviewMode;
8
- copy?: boolean;
9
- ci?: boolean;
10
- output?: string;
11
- };
12
- export declare class ReviewCommand extends CommandRunner {
13
- private readonly ui;
14
- private readonly git;
15
- private readonly tokenizer;
16
- private readonly ai;
17
- constructor(ui: UiService, git: GitService, tokenizer: TokenizerService, ai: AiService);
18
- parseMode(value: string): ReviewMode;
19
- parseCopy(): boolean;
20
- parseCi(): boolean;
21
- parseOutput(value: string): string;
22
- run(_inputs: string[], options?: ReviewOptions): Promise<void>;
23
- private writeOutput;
24
- private copyText;
25
- }
26
- export {};