@pmate/cli 0.12.6 → 0.12.8

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 (145) hide show
  1. package/dist/index.d.ts +346 -3
  2. package/dist/index.js +20884 -1474
  3. package/package.json +6 -5
  4. package/dist/agentCommandParser.d.ts +0 -2
  5. package/dist/agentCommandParser.js +0 -151
  6. package/dist/agentCommandParser.js.map +0 -1
  7. package/dist/alioss.d.ts +0 -21
  8. package/dist/alioss.js +0 -281
  9. package/dist/alioss.js.map +0 -1
  10. package/dist/appCommandParser.d.ts +0 -2
  11. package/dist/appCommandParser.js +0 -106
  12. package/dist/appCommandParser.js.map +0 -1
  13. package/dist/appDir.d.ts +0 -2
  14. package/dist/appDir.js +0 -33
  15. package/dist/appDir.js.map +0 -1
  16. package/dist/cli.d.ts +0 -8
  17. package/dist/cli.js +0 -43
  18. package/dist/cli.js.map +0 -1
  19. package/dist/commands/AddDnsCommandHandler.d.ts +0 -4
  20. package/dist/commands/AddDnsCommandHandler.js +0 -26
  21. package/dist/commands/AddDnsCommandHandler.js.map +0 -1
  22. package/dist/commands/AgentCommandHandler.d.ts +0 -11
  23. package/dist/commands/AgentCommandHandler.js +0 -146
  24. package/dist/commands/AgentCommandHandler.js.map +0 -1
  25. package/dist/commands/AppCommandHandler.d.ts +0 -10
  26. package/dist/commands/AppCommandHandler.js +0 -125
  27. package/dist/commands/AppCommandHandler.js.map +0 -1
  28. package/dist/commands/BucketCommandHandler.d.ts +0 -4
  29. package/dist/commands/BucketCommandHandler.js +0 -14
  30. package/dist/commands/BucketCommandHandler.js.map +0 -1
  31. package/dist/commands/CollectCommandHandler.d.ts +0 -20
  32. package/dist/commands/CollectCommandHandler.js +0 -470
  33. package/dist/commands/CollectCommandHandler.js.map +0 -1
  34. package/dist/commands/CommitCommandHandler.d.ts +0 -4
  35. package/dist/commands/CommitCommandHandler.js +0 -12
  36. package/dist/commands/CommitCommandHandler.js.map +0 -1
  37. package/dist/commands/DeployCommandHandler.d.ts +0 -20
  38. package/dist/commands/DeployCommandHandler.js +0 -297
  39. package/dist/commands/DeployCommandHandler.js.map +0 -1
  40. package/dist/commands/DevCommandHandler.d.ts +0 -8
  41. package/dist/commands/DevCommandHandler.js +0 -81
  42. package/dist/commands/DevCommandHandler.js.map +0 -1
  43. package/dist/commands/EnvCommandHandler.d.ts +0 -12
  44. package/dist/commands/EnvCommandHandler.js +0 -346
  45. package/dist/commands/EnvCommandHandler.js.map +0 -1
  46. package/dist/commands/InitCommandHandler.d.ts +0 -21
  47. package/dist/commands/InitCommandHandler.js +0 -468
  48. package/dist/commands/InitCommandHandler.js.map +0 -1
  49. package/dist/commands/LinearCommandHandler.d.ts +0 -52
  50. package/dist/commands/LinearCommandHandler.js +0 -1652
  51. package/dist/commands/LinearCommandHandler.js.map +0 -1
  52. package/dist/commands/ListCommandHandler.d.ts +0 -6
  53. package/dist/commands/ListCommandHandler.js +0 -43
  54. package/dist/commands/ListCommandHandler.js.map +0 -1
  55. package/dist/commands/LogCommandHandler.d.ts +0 -15
  56. package/dist/commands/LogCommandHandler.js +0 -201
  57. package/dist/commands/LogCommandHandler.js.map +0 -1
  58. package/dist/commands/LoginCommandHandler.d.ts +0 -11
  59. package/dist/commands/LoginCommandHandler.js +0 -178
  60. package/dist/commands/LoginCommandHandler.js.map +0 -1
  61. package/dist/commands/NotionCommandHandler.d.ts +0 -5
  62. package/dist/commands/NotionCommandHandler.js +0 -59
  63. package/dist/commands/NotionCommandHandler.js.map +0 -1
  64. package/dist/commands/OssCommandHandler.d.ts +0 -7
  65. package/dist/commands/OssCommandHandler.js +0 -82
  66. package/dist/commands/OssCommandHandler.js.map +0 -1
  67. package/dist/commands/PrCommandHandler.d.ts +0 -44
  68. package/dist/commands/PrCommandHandler.js +0 -639
  69. package/dist/commands/PrCommandHandler.js.map +0 -1
  70. package/dist/commands/QrcodeCommandHandler.d.ts +0 -9
  71. package/dist/commands/QrcodeCommandHandler.js +0 -135
  72. package/dist/commands/QrcodeCommandHandler.js.map +0 -1
  73. package/dist/commands/RandomCommandHandler.d.ts +0 -6
  74. package/dist/commands/RandomCommandHandler.js +0 -201
  75. package/dist/commands/RandomCommandHandler.js.map +0 -1
  76. package/dist/commands/StsCommandHandler.d.ts +0 -5
  77. package/dist/commands/StsCommandHandler.js +0 -45
  78. package/dist/commands/StsCommandHandler.js.map +0 -1
  79. package/dist/commands/SummaryCommandHandler.d.ts +0 -16
  80. package/dist/commands/SummaryCommandHandler.js +0 -190
  81. package/dist/commands/SummaryCommandHandler.js.map +0 -1
  82. package/dist/commands/VercelCommandHandler.d.ts +0 -38
  83. package/dist/commands/VercelCommandHandler.js +0 -126
  84. package/dist/commands/VercelCommandHandler.js.map +0 -1
  85. package/dist/config.d.ts +0 -62
  86. package/dist/config.js +0 -265
  87. package/dist/config.js.map +0 -1
  88. package/dist/index.js.map +0 -1
  89. package/dist/llm/AgentLlmClient.d.ts +0 -14
  90. package/dist/llm/AgentLlmClient.js +0 -81
  91. package/dist/llm/AgentLlmClient.js.map +0 -1
  92. package/dist/llm/types.d.ts +0 -37
  93. package/dist/llm/types.js +0 -3
  94. package/dist/llm/types.js.map +0 -1
  95. package/dist/serverAddress.d.ts +0 -2
  96. package/dist/serverAddress.js +0 -21
  97. package/dist/serverAddress.js.map +0 -1
  98. package/dist/services/AliyunService.d.ts +0 -68
  99. package/dist/services/AliyunService.js +0 -622
  100. package/dist/services/AliyunService.js.map +0 -1
  101. package/dist/services/NotionService.d.ts +0 -47
  102. package/dist/services/NotionService.js +0 -292
  103. package/dist/services/NotionService.js.map +0 -1
  104. package/dist/shell.d.ts +0 -2
  105. package/dist/shell.js +0 -11
  106. package/dist/shell.js.map +0 -1
  107. package/dist/tests/AgentCommandHandler.test.d.ts +0 -1
  108. package/dist/tests/AgentCommandHandler.test.js +0 -138
  109. package/dist/tests/AgentCommandHandler.test.js.map +0 -1
  110. package/dist/tests/AppCommandHandler.test.d.ts +0 -1
  111. package/dist/tests/AppCommandHandler.test.js +0 -94
  112. package/dist/tests/AppCommandHandler.test.js.map +0 -1
  113. package/dist/tests/LoginCommandHandler.test.d.ts +0 -1
  114. package/dist/tests/LoginCommandHandler.test.js +0 -13
  115. package/dist/tests/LoginCommandHandler.test.js.map +0 -1
  116. package/dist/tests/PrCommandHandler.test.d.ts +0 -1
  117. package/dist/tests/PrCommandHandler.test.js +0 -27
  118. package/dist/tests/PrCommandHandler.test.js.map +0 -1
  119. package/dist/tests/VercelCommandHandler.test.d.ts +0 -1
  120. package/dist/tests/VercelCommandHandler.test.js +0 -84
  121. package/dist/tests/VercelCommandHandler.test.js.map +0 -1
  122. package/dist/tests/agentCommandParser.test.d.ts +0 -1
  123. package/dist/tests/agentCommandParser.test.js +0 -75
  124. package/dist/tests/agentCommandParser.test.js.map +0 -1
  125. package/dist/tests/appCommandParser.test.d.ts +0 -1
  126. package/dist/tests/appCommandParser.test.js +0 -28
  127. package/dist/tests/appCommandParser.test.js.map +0 -1
  128. package/dist/tests/config.test.d.ts +0 -1
  129. package/dist/tests/config.test.js +0 -41
  130. package/dist/tests/config.test.js.map +0 -1
  131. package/dist/tests/pythonAppSupport.test.d.ts +0 -1
  132. package/dist/tests/pythonAppSupport.test.js +0 -47
  133. package/dist/tests/pythonAppSupport.test.js.map +0 -1
  134. package/dist/tests/serverAddress.test.d.ts +0 -1
  135. package/dist/tests/serverAddress.test.js +0 -14
  136. package/dist/tests/serverAddress.test.js.map +0 -1
  137. package/dist/tests/shell.test.d.ts +0 -1
  138. package/dist/tests/shell.test.js +0 -16
  139. package/dist/tests/shell.test.js.map +0 -1
  140. package/dist/tests/vercelParser.test.d.ts +0 -1
  141. package/dist/tests/vercelParser.test.js +0 -39
  142. package/dist/tests/vercelParser.test.js.map +0 -1
  143. package/dist/types.d.ts +0 -394
  144. package/dist/types.js +0 -30
  145. package/dist/types.js.map +0 -1
@@ -1,9 +0,0 @@
1
- import { QrcodeCommandArgs } from "../types";
2
- export declare class QrcodeCommandHandler {
3
- handle(_args: QrcodeCommandArgs): Promise<void>;
4
- private captureScreenshot;
5
- private openScreenshot;
6
- private decodeQr;
7
- private promptValue;
8
- private run;
9
- }
@@ -1,135 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.QrcodeCommandHandler = void 0;
4
- const tslib_1 = require("tslib");
5
- const node_child_process_1 = require("node:child_process");
6
- const node_fs_1 = require("node:fs");
7
- const node_os_1 = tslib_1.__importDefault(require("node:os"));
8
- const node_path_1 = tslib_1.__importDefault(require("node:path"));
9
- const promises_1 = require("node:readline/promises");
10
- const jsqr_1 = tslib_1.__importDefault(require("jsqr"));
11
- const pngjs_1 = require("pngjs");
12
- const cli_1 = require("../cli");
13
- class QrcodeCommandHandler {
14
- async handle(_args) {
15
- if (process.platform !== "darwin") {
16
- throw new Error("qrcode currently supports macOS only.");
17
- }
18
- const { dir, filePath } = await this.captureScreenshot();
19
- try {
20
- await this.openScreenshot(filePath);
21
- const detected = await this.decodeQr(filePath);
22
- if (detected) {
23
- cli_1.ui.success("Detected QR code:", detected);
24
- }
25
- else {
26
- cli_1.ui.warn("No QR code detected in the screenshot.");
27
- }
28
- const value = await this.promptValue(detected);
29
- if (!value) {
30
- cli_1.ui.warn("No QR code value provided.");
31
- return;
32
- }
33
- cli_1.ui.success("QR code value:", value);
34
- }
35
- finally {
36
- try {
37
- await node_fs_1.promises.rm(dir, { recursive: true, force: true });
38
- }
39
- catch {
40
- // ignore
41
- }
42
- }
43
- }
44
- async captureScreenshot() {
45
- cli_1.ui.info("Capture a QR code screenshot now (macOS screencapture).");
46
- const rl = (0, promises_1.createInterface)({
47
- input: process.stdin,
48
- output: process.stdout,
49
- });
50
- try {
51
- await rl.question("Press Enter when ready: ");
52
- }
53
- finally {
54
- rl.close();
55
- }
56
- const dir = await node_fs_1.promises.mkdtemp(node_path_1.default.join(node_os_1.default.tmpdir(), "pmate-qrcode-"));
57
- const filePath = node_path_1.default.join(dir, "qrcode.png");
58
- const code = await this.run("screencapture", ["-i", "-x", filePath], true);
59
- if (code !== 0) {
60
- throw new Error("Screenshot capture canceled or failed.");
61
- }
62
- const buffer = await node_fs_1.promises.readFile(filePath);
63
- if (buffer.length === 0) {
64
- throw new Error("Screenshot capture produced an empty file.");
65
- }
66
- return { dir, filePath };
67
- }
68
- async openScreenshot(filePath) {
69
- try {
70
- await this.run("open", [filePath], true);
71
- }
72
- catch {
73
- cli_1.ui.warn("Failed to open screenshot preview.");
74
- }
75
- }
76
- async decodeQr(filePath) {
77
- var _a;
78
- let buffer;
79
- try {
80
- buffer = await node_fs_1.promises.readFile(filePath);
81
- }
82
- catch {
83
- return null;
84
- }
85
- let png;
86
- try {
87
- png = pngjs_1.PNG.sync.read(buffer);
88
- }
89
- catch {
90
- return null;
91
- }
92
- const data = new Uint8ClampedArray(png.data.buffer, png.data.byteOffset, png.data.byteLength);
93
- const result = (0, jsqr_1.default)(data, png.width, png.height);
94
- const value = (_a = result === null || result === void 0 ? void 0 : result.data) === null || _a === void 0 ? void 0 : _a.trim();
95
- return value ? value : null;
96
- }
97
- async promptValue(detected) {
98
- const rl = (0, promises_1.createInterface)({
99
- input: process.stdin,
100
- output: process.stdout,
101
- });
102
- try {
103
- if (detected) {
104
- const input = await rl.question("QR value (press Enter to accept detected): ");
105
- return input.trim() || detected;
106
- }
107
- const input = await rl.question("No QR detected. Paste value or press Enter to cancel: ");
108
- return input.trim();
109
- }
110
- finally {
111
- rl.close();
112
- }
113
- }
114
- run(command, args, quietError = false, env, cwd) {
115
- return new Promise((resolve, reject) => {
116
- const child = (0, node_child_process_1.spawn)(command, args, {
117
- stdio: quietError ? "ignore" : "inherit",
118
- env: env !== null && env !== void 0 ? env : process.env,
119
- cwd,
120
- });
121
- child.on("error", (error) => {
122
- reject(error);
123
- });
124
- child.on("close", (code) => {
125
- if (code === 0 || quietError) {
126
- resolve(code !== null && code !== void 0 ? code : 1);
127
- return;
128
- }
129
- reject(new Error(`${command} exited with code ${code}`));
130
- });
131
- });
132
- }
133
- }
134
- exports.QrcodeCommandHandler = QrcodeCommandHandler;
135
- //# sourceMappingURL=QrcodeCommandHandler.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"QrcodeCommandHandler.js","sourceRoot":"","sources":["../../src/commands/QrcodeCommandHandler.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- import { RandomCommandArgs } from "../types";
2
- export declare class RandomCommandHandler {
3
- handle(args: RandomCommandArgs): void;
4
- private generateToken;
5
- private generateEasy;
6
- }
@@ -1,201 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RandomCommandHandler = void 0;
4
- const node_crypto_1 = require("node:crypto");
5
- const cli_1 = require("../cli");
6
- const DEFAULT_TOKEN_LENGTH = 32;
7
- const DEFAULT_EASY_WORDS = 3;
8
- const DEFAULT_EASY_DIGITS = 2;
9
- const CHARSETS = {
10
- base64url: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",
11
- hex: "0123456789abcdef",
12
- alnum: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",
13
- ascii: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_~.",
14
- };
15
- const EASY_WORDS = [
16
- "amber",
17
- "apple",
18
- "apricot",
19
- "atlas",
20
- "autumn",
21
- "azure",
22
- "bamboo",
23
- "beacon",
24
- "beaver",
25
- "birch",
26
- "bison",
27
- "blaze",
28
- "blossom",
29
- "breeze",
30
- "brook",
31
- "cactus",
32
- "calm",
33
- "candle",
34
- "canoe",
35
- "canyon",
36
- "cedar",
37
- "cherry",
38
- "cloud",
39
- "clover",
40
- "comet",
41
- "coral",
42
- "coyote",
43
- "crane",
44
- "crystal",
45
- "daisy",
46
- "dawn",
47
- "delta",
48
- "ember",
49
- "falcon",
50
- "fern",
51
- "fjord",
52
- "flame",
53
- "flora",
54
- "forest",
55
- "fossil",
56
- "fox",
57
- "frost",
58
- "galaxy",
59
- "glacier",
60
- "glow",
61
- "granite",
62
- "harbor",
63
- "horizon",
64
- "island",
65
- "jade",
66
- "jaguar",
67
- "jasmine",
68
- "kelp",
69
- "kiwi",
70
- "lagoon",
71
- "lantern",
72
- "lemon",
73
- "lilac",
74
- "maple",
75
- "meadow",
76
- "meteor",
77
- "mint",
78
- "mist",
79
- "monarch",
80
- "moon",
81
- "moss",
82
- "mountain",
83
- "nebula",
84
- "nectar",
85
- "oasis",
86
- "ocean",
87
- "opal",
88
- "orchid",
89
- "owl",
90
- "palm",
91
- "pearl",
92
- "pine",
93
- "plum",
94
- "prairie",
95
- "quartz",
96
- "quill",
97
- "raven",
98
- "reef",
99
- "river",
100
- "robin",
101
- "rose",
102
- "sage",
103
- "sand",
104
- "sapphire",
105
- "shadow",
106
- "sky",
107
- "spark",
108
- "spring",
109
- "stone",
110
- "storm",
111
- "sun",
112
- "swift",
113
- "tide",
114
- "timber",
115
- "trail",
116
- "valley",
117
- "violet",
118
- "wave",
119
- "whisper",
120
- "wild",
121
- "willow",
122
- "wind",
123
- "winter",
124
- "wolf",
125
- "zenith",
126
- ];
127
- class RandomCommandHandler {
128
- handle(args) {
129
- const results = args.mode === "easy"
130
- ? this.generateEasy(args)
131
- : this.generateToken(args);
132
- for (const value of results) {
133
- cli_1.ui.plain(value);
134
- }
135
- }
136
- generateToken(args) {
137
- var _a;
138
- const length = clampNumber(args.length, 1, 4096, DEFAULT_TOKEN_LENGTH);
139
- const charset = (_a = CHARSETS[args.charset]) !== null && _a !== void 0 ? _a : CHARSETS.base64url;
140
- return Array.from({ length: args.count }, () => randomString(length, charset));
141
- }
142
- generateEasy(args) {
143
- const words = clampNumber(args.words, 2, 8, DEFAULT_EASY_WORDS);
144
- const digits = clampNumber(args.digits, 0, 8, DEFAULT_EASY_DIGITS);
145
- const separator = args.separator || "-";
146
- return Array.from({ length: args.count }, () => {
147
- const parts = [];
148
- for (let i = 0; i < words; i += 1) {
149
- parts.push(randomWord());
150
- }
151
- const base = parts.join(separator);
152
- if (digits > 0) {
153
- return `${base}${separator}${randomDigits(digits)}`;
154
- }
155
- return base;
156
- });
157
- }
158
- }
159
- exports.RandomCommandHandler = RandomCommandHandler;
160
- function randomString(length, charset) {
161
- if (length <= 0) {
162
- return "";
163
- }
164
- const chars = charset.split("");
165
- const charsetLength = chars.length;
166
- if (charsetLength === 0) {
167
- throw new Error("Charset cannot be empty.");
168
- }
169
- const max = Math.floor(256 / charsetLength) * charsetLength;
170
- let result = "";
171
- while (result.length < length) {
172
- const bytes = (0, node_crypto_1.randomBytes)(Math.max(1, length - result.length));
173
- for (const byte of bytes) {
174
- if (byte >= max) {
175
- continue;
176
- }
177
- result += chars[byte % charsetLength];
178
- if (result.length >= length) {
179
- break;
180
- }
181
- }
182
- }
183
- return result;
184
- }
185
- function randomWord() {
186
- return EASY_WORDS[(0, node_crypto_1.randomInt)(0, EASY_WORDS.length)];
187
- }
188
- function randomDigits(count) {
189
- let value = "";
190
- for (let i = 0; i < count; i += 1) {
191
- value += (0, node_crypto_1.randomInt)(0, 10).toString();
192
- }
193
- return value;
194
- }
195
- function clampNumber(value, min, max, fallback) {
196
- if (!Number.isFinite(value)) {
197
- return fallback;
198
- }
199
- return Math.min(max, Math.max(min, value));
200
- }
201
- //# sourceMappingURL=RandomCommandHandler.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RandomCommandHandler.js","sourceRoot":"","sources":["../../src/commands/RandomCommandHandler.ts"],"names":[],"mappings":";;;AAAA,6CAAoD;AACpD,gCAA2B;AAG3B,MAAM,oBAAoB,GAAG,EAAE,CAAA;AAC/B,MAAM,kBAAkB,GAAG,CAAC,CAAA;AAC5B,MAAM,mBAAmB,GAAG,CAAC,CAAA;AAE7B,MAAM,QAAQ,GAGV;IACF,SAAS,EACP,kEAAkE;IACpE,GAAG,EAAE,kBAAkB;IACvB,KAAK,EAAE,gEAAgE;IACvE,KAAK,EACH,oEAAoE;CACvE,CAAA;AAED,MAAM,UAAU,GAAG;IACjB,OAAO;IACP,OAAO;IACP,SAAS;IACT,OAAO;IACP,QAAQ;IACR,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,OAAO;IACP,OAAO;IACP,SAAS;IACT,QAAQ;IACR,OAAO;IACP,QAAQ;IACR,MAAM;IACN,QAAQ;IACR,OAAO;IACP,QAAQ;IACR,OAAO;IACP,QAAQ;IACR,OAAO;IACP,QAAQ;IACR,OAAO;IACP,OAAO;IACP,QAAQ;IACR,OAAO;IACP,SAAS;IACT,OAAO;IACP,MAAM;IACN,OAAO;IACP,OAAO;IACP,QAAQ;IACR,MAAM;IACN,OAAO;IACP,OAAO;IACP,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,KAAK;IACL,OAAO;IACP,QAAQ;IACR,SAAS;IACT,MAAM;IACN,SAAS;IACT,QAAQ;IACR,SAAS;IACT,QAAQ;IACR,MAAM;IACN,QAAQ;IACR,SAAS;IACT,MAAM;IACN,MAAM;IACN,QAAQ;IACR,SAAS;IACT,OAAO;IACP,OAAO;IACP,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,MAAM;IACN,SAAS;IACT,MAAM;IACN,MAAM;IACN,UAAU;IACV,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,OAAO;IACP,MAAM;IACN,QAAQ;IACR,KAAK;IACL,MAAM;IACN,OAAO;IACP,MAAM;IACN,MAAM;IACN,SAAS;IACT,QAAQ;IACR,OAAO;IACP,OAAO;IACP,MAAM;IACN,OAAO;IACP,OAAO;IACP,MAAM;IACN,MAAM;IACN,MAAM;IACN,UAAU;IACV,QAAQ;IACR,KAAK;IACL,OAAO;IACP,QAAQ;IACR,OAAO;IACP,OAAO;IACP,KAAK;IACL,OAAO;IACP,MAAM;IACN,QAAQ;IACR,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,SAAS;IACT,MAAM;IACN,QAAQ;IACR,MAAM;IACN,QAAQ;IACR,MAAM;IACN,QAAQ;CACT,CAAA;AAED,MAAa,oBAAoB;IAC/B,MAAM,CAAC,IAAuB;QAC5B,MAAM,OAAO,GACX,IAAI,CAAC,IAAI,KAAK,MAAM;YAClB,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;YACzB,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA;QAE9B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,QAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QACjB,CAAC;IACH,CAAC;IAEO,aAAa,CAAC,IAAmD;;QACvE,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,oBAAoB,CAAC,CAAA;QACtE,MAAM,OAAO,GAAG,MAAA,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,mCAAI,QAAQ,CAAC,SAAS,CAAA;QAC5D,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,CAC7C,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAC9B,CAAA;IACH,CAAC;IAEO,YAAY,CAAC,IAAkD;QACrE,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,kBAAkB,CAAC,CAAA;QAC/D,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,mBAAmB,CAAC,CAAA;QAClE,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,GAAG,CAAA;QAEvC,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE;YAC7C,MAAM,KAAK,GAAa,EAAE,CAAA;YAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;gBAClC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAA;YAC1B,CAAC;YACD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YAClC,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;gBACf,OAAO,GAAG,IAAI,GAAG,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,EAAE,CAAA;YACrD,CAAC;YACD,OAAO,IAAI,CAAA;QACb,CAAC,CAAC,CAAA;IACJ,CAAC;CACF;AArCD,oDAqCC;AAED,SAAS,YAAY,CAAC,MAAc,EAAE,OAAe;IACnD,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;QAChB,OAAO,EAAE,CAAA;IACX,CAAC;IACD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IAC/B,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAA;IAClC,IAAI,aAAa,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;IAC7C,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,aAAa,CAAC,GAAG,aAAa,CAAA;IAC3D,IAAI,MAAM,GAAG,EAAE,CAAA;IACf,OAAO,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,IAAA,yBAAW,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAA;QAC9D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC;gBAChB,SAAQ;YACV,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,IAAI,GAAG,aAAa,CAAC,CAAA;YACrC,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,EAAE,CAAC;gBAC5B,MAAK;YACP,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED,SAAS,UAAU;IACjB,OAAO,UAAU,CAAC,IAAA,uBAAS,EAAC,CAAC,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,CAAA;AACpD,CAAC;AAED,SAAS,YAAY,CAAC,KAAa;IACjC,IAAI,KAAK,GAAG,EAAE,CAAA;IACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAClC,KAAK,IAAI,IAAA,uBAAS,EAAC,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAA;IACtC,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,WAAW,CAClB,KAAa,EACb,GAAW,EACX,GAAW,EACX,QAAgB;IAEhB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,QAAQ,CAAA;IACjB,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAA;AAC5C,CAAC"}
@@ -1,5 +0,0 @@
1
- import { StsCommandArgs } from "../types";
2
- export declare class StsCommandHandler {
3
- handle(_args: StsCommandArgs): Promise<void>;
4
- private readSession;
5
- }
@@ -1,45 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.StsCommandHandler = void 0;
4
- const tslib_1 = require("tslib");
5
- const node_fs_1 = require("node:fs");
6
- const node_os_1 = tslib_1.__importDefault(require("node:os"));
7
- const node_path_1 = tslib_1.__importDefault(require("node:path"));
8
- const chalk_1 = tslib_1.__importDefault(require("chalk"));
9
- const cli_1 = require("../cli");
10
- class StsCommandHandler {
11
- async handle(_args) {
12
- var _a;
13
- const session = this.readSession();
14
- cli_1.ui.info("Session loaded.", session);
15
- const token = (_a = session.token) === null || _a === void 0 ? void 0 : _a.trim();
16
- if (!token) {
17
- throw new Error("Missing session token. Run `pmate login` first.");
18
- }
19
- const baseUrl = "https://ci.pmate.chat";
20
- const response = await fetch(`${baseUrl}/oss/sts`, {
21
- method: "POST",
22
- headers: {
23
- "content-type": "application/json",
24
- authorization: `Bearer ${token}`,
25
- },
26
- body: JSON.stringify({}),
27
- });
28
- if (!response.ok) {
29
- const detail = await response.text();
30
- throw new Error(`STS request failed (${response.status}): ${detail || response.statusText}`);
31
- }
32
- const payload = await response.json();
33
- cli_1.ui.plain(chalk_1.default.cyan(JSON.stringify(payload, null, 2)));
34
- }
35
- readSession() {
36
- const sessionPath = node_path_1.default.join(node_os_1.default.homedir(), ".pmate", "session.json");
37
- if (!(0, node_fs_1.existsSync)(sessionPath)) {
38
- throw new Error("Missing session. Run `pmate login` first.");
39
- }
40
- const raw = (0, node_fs_1.readFileSync)(sessionPath, "utf8");
41
- return JSON.parse(raw);
42
- }
43
- }
44
- exports.StsCommandHandler = StsCommandHandler;
45
- //# sourceMappingURL=StsCommandHandler.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"StsCommandHandler.js","sourceRoot":"","sources":["../../src/commands/StsCommandHandler.ts"],"names":[],"mappings":";;;;AAAA,qCAAkD;AAClD,8DAAwB;AACxB,kEAA4B;AAC5B,0DAAyB;AACzB,gCAA2B;AAO3B,MAAa,iBAAiB;IAC5B,KAAK,CAAC,MAAM,CAAC,KAAqB;;QAChC,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;QAClC,QAAE,CAAC,IAAI,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAA;QACnC,MAAM,KAAK,GAAG,MAAA,OAAO,CAAC,KAAK,0CAAE,IAAI,EAAE,CAAA;QACnC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAA;QACpE,CAAC;QAED,MAAM,OAAO,GAAG,uBAAuB,CAAA;QACvC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,UAAU,EAAE;YACjD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,aAAa,EAAE,UAAU,KAAK,EAAE;aACjC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;SACzB,CAAC,CAAA;QAEF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;YACpC,MAAM,IAAI,KAAK,CACb,uBAAuB,QAAQ,CAAC,MAAM,MACpC,MAAM,IAAI,QAAQ,CAAC,UACrB,EAAE,CACH,CAAA;QACH,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;QACrC,QAAE,CAAC,KAAK,CAAC,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;IACxD,CAAC;IAEO,WAAW;QACjB,MAAM,WAAW,GAAG,mBAAI,CAAC,IAAI,CAAC,iBAAE,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAA;QACrE,IAAI,CAAC,IAAA,oBAAU,EAAC,WAAW,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAA;QAC9D,CAAC;QACD,MAAM,GAAG,GAAG,IAAA,sBAAY,EAAC,WAAW,EAAE,MAAM,CAAC,CAAA;QAC7C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAgB,CAAA;IACvC,CAAC;CACF;AAxCD,8CAwCC"}
@@ -1,16 +0,0 @@
1
- import { SummaryCommandArgs } from "../types";
2
- export declare class SummaryCommandHandler {
3
- handle(args: SummaryCommandArgs): Promise<void>;
4
- private getPr;
5
- private getPrDiff;
6
- private getAiSummary;
7
- private ensureGitRepo;
8
- private ensureGhAuth;
9
- private ensureGhCli;
10
- private run;
11
- private runCapture;
12
- private getGhEnv;
13
- private runGh;
14
- private runCaptureGh;
15
- private resolveCwd;
16
- }
@@ -1,190 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SummaryCommandHandler = void 0;
4
- const tslib_1 = require("tslib");
5
- const node_child_process_1 = require("node:child_process");
6
- const node_path_1 = tslib_1.__importDefault(require("node:path"));
7
- const cli_1 = require("../cli");
8
- const config_1 = require("../config");
9
- const AgentLlmClient_1 = require("../llm/AgentLlmClient");
10
- class SummaryCommandHandler {
11
- async handle(args) {
12
- var _a, _b, _c, _d, _e;
13
- const cwd = this.resolveCwd(args.cwd);
14
- await this.ensureGitRepo(cwd);
15
- await this.ensureGhCli();
16
- await this.ensureGhAuth();
17
- const pr = await this.getPr(args.prRef, cwd);
18
- const diff = await this.getPrDiff(args.prRef, cwd);
19
- const summary = await this.getAiSummary({
20
- title: pr.title,
21
- body: (_a = pr.body) !== null && _a !== void 0 ? _a : "",
22
- url: pr.url,
23
- repository: (_c = (_b = pr.headRepository) === null || _b === void 0 ? void 0 : _b.nameWithOwner) !== null && _c !== void 0 ? _c : "",
24
- headRefName: pr.headRefName,
25
- baseRefName: pr.baseRefName,
26
- author: (_e = (_d = pr.author) === null || _d === void 0 ? void 0 : _d.login) !== null && _e !== void 0 ? _e : "",
27
- diff,
28
- });
29
- cli_1.ui.title("PR Summary");
30
- cli_1.ui.info(`PR: ${pr.url}`);
31
- cli_1.ui.info(`Branch: ${pr.headRefName} -> ${pr.baseRefName}`);
32
- cli_1.ui.info("Background");
33
- cli_1.ui.plain(summary.background);
34
- cli_1.ui.info("Changes");
35
- cli_1.ui.plain(summary.changes);
36
- cli_1.ui.info(`Usefulness rating: ${summary.rating}/5`);
37
- cli_1.ui.plain(summary.ratingReason);
38
- }
39
- async getPr(prRef, cwd) {
40
- const output = await this.runCaptureGh([
41
- "pr",
42
- "view",
43
- prRef,
44
- "--json",
45
- "title,body,url,number,headRefName,baseRefName,author,headRepository",
46
- ], false, cwd);
47
- try {
48
- const parsed = JSON.parse(output);
49
- if (!(parsed === null || parsed === void 0 ? void 0 : parsed.title) || !(parsed === null || parsed === void 0 ? void 0 : parsed.url)) {
50
- throw new Error("Invalid PR data from gh.");
51
- }
52
- return parsed;
53
- }
54
- catch (error) {
55
- const message = error instanceof Error ? error.message : String(error);
56
- throw new Error(`Failed to parse gh pr view output: ${message}`);
57
- }
58
- }
59
- async getPrDiff(prRef, cwd) {
60
- return this.runCaptureGh(["pr", "diff", prRef, "--color=never"], false, cwd);
61
- }
62
- async getAiSummary(context) {
63
- var _a, _b, _c;
64
- const client = new AgentLlmClient_1.AgentLlmClient();
65
- const parsed = await client.prompt("pr-summary", {
66
- title: context.title,
67
- body: context.body,
68
- url: context.url,
69
- repository: context.repository,
70
- headRefName: context.headRefName,
71
- baseRefName: context.baseRefName,
72
- author: context.author,
73
- diff: truncate(context.diff, 12000),
74
- });
75
- if (!parsed) {
76
- throw new Error("Agent response missing content.");
77
- }
78
- if (!((_a = parsed.background) === null || _a === void 0 ? void 0 : _a.trim()) ||
79
- !((_b = parsed.changes) === null || _b === void 0 ? void 0 : _b.trim()) ||
80
- !Number.isFinite(parsed.rating) ||
81
- !((_c = parsed.ratingReason) === null || _c === void 0 ? void 0 : _c.trim())) {
82
- throw new Error("Agent response missing summary fields.");
83
- }
84
- const rating = Math.max(1, Math.min(5, Math.round(parsed.rating)));
85
- return {
86
- background: parsed.background.trim(),
87
- changes: parsed.changes.trim(),
88
- rating,
89
- ratingReason: parsed.ratingReason.trim(),
90
- };
91
- }
92
- async ensureGitRepo(cwd) {
93
- const inside = await this.runCapture("git", ["rev-parse", "--is-inside-work-tree"], false, undefined, cwd);
94
- if (inside.trim() !== "true") {
95
- throw new Error("This command must be run inside a git repository.");
96
- }
97
- }
98
- async ensureGhAuth() {
99
- const code = await this.runGh(["auth", "status"], true);
100
- if (code !== 0) {
101
- throw new Error("GitHub CLI is not authenticated. Run: gh auth login.");
102
- }
103
- }
104
- async ensureGhCli() {
105
- await this.runGh(["--version"]);
106
- }
107
- run(command, args, quietError = false, env, cwd) {
108
- return new Promise((resolve, reject) => {
109
- const child = (0, node_child_process_1.spawn)(command, args, {
110
- stdio: quietError ? "ignore" : "inherit",
111
- env: env !== null && env !== void 0 ? env : process.env,
112
- cwd,
113
- });
114
- child.on("error", (error) => {
115
- reject(error);
116
- });
117
- child.on("close", (code) => {
118
- if (code === 0 || quietError) {
119
- resolve(code !== null && code !== void 0 ? code : 1);
120
- return;
121
- }
122
- reject(new Error(`${command} exited with code ${code}`));
123
- });
124
- });
125
- }
126
- runCapture(command, args, allowFailure = false, env, cwd) {
127
- return new Promise((resolve, reject) => {
128
- var _a, _b;
129
- const child = (0, node_child_process_1.spawn)(command, args, {
130
- stdio: ["ignore", "pipe", "pipe"],
131
- env: env !== null && env !== void 0 ? env : process.env,
132
- cwd,
133
- });
134
- let output = "";
135
- let errorOutput = "";
136
- (_a = child.stdout) === null || _a === void 0 ? void 0 : _a.on("data", (chunk) => {
137
- output += chunk.toString();
138
- });
139
- (_b = child.stderr) === null || _b === void 0 ? void 0 : _b.on("data", (chunk) => {
140
- errorOutput += chunk.toString();
141
- });
142
- child.on("error", (error) => {
143
- reject(error);
144
- });
145
- child.on("close", (code) => {
146
- if (code === 0 || allowFailure) {
147
- resolve(output);
148
- return;
149
- }
150
- const trimmed = errorOutput.trim();
151
- reject(new Error(trimmed
152
- ? `${command} failed: ${trimmed}`
153
- : `${command} exited with code ${code}`));
154
- });
155
- });
156
- }
157
- async getGhEnv(cwd) {
158
- var _a;
159
- const env = { ...process.env };
160
- delete env.GH_TOKEN;
161
- const repoConfig = (0, config_1.loadRepoConfig)(cwd !== null && cwd !== void 0 ? cwd : process.cwd());
162
- const githubUser = (_a = repoConfig === null || repoConfig === void 0 ? void 0 : repoConfig.githubUser) === null || _a === void 0 ? void 0 : _a.trim();
163
- if (!githubUser) {
164
- return env;
165
- }
166
- const token = (await this.runCapture("gh", ["auth", "token", "--user", githubUser], false, env, cwd)).trim();
167
- if (!token) {
168
- throw new Error(`Failed to resolve GitHub token for ${githubUser}.`);
169
- }
170
- env.GH_TOKEN = token;
171
- return env;
172
- }
173
- async runGh(args, quietError = false, cwd) {
174
- return this.run("gh", args, quietError, await this.getGhEnv(cwd), cwd);
175
- }
176
- async runCaptureGh(args, allowFailure = false, cwd) {
177
- return this.runCapture("gh", args, allowFailure, await this.getGhEnv(cwd), cwd);
178
- }
179
- resolveCwd(value) {
180
- return value ? node_path_1.default.resolve(process.cwd(), value) : process.cwd();
181
- }
182
- }
183
- exports.SummaryCommandHandler = SummaryCommandHandler;
184
- function truncate(value, limit) {
185
- if (value.length <= limit) {
186
- return value;
187
- }
188
- return `${value.slice(0, limit)}\n...[truncated]`;
189
- }
190
- //# sourceMappingURL=SummaryCommandHandler.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SummaryCommandHandler.js","sourceRoot":"","sources":["../../src/commands/SummaryCommandHandler.ts"],"names":[],"mappings":"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"}