@forge/cli 12.5.2-next.0-experimental-553df98 → 12.5.2-next.2

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 (34) hide show
  1. package/CHANGELOG.md +20 -7
  2. package/npm-shrinkwrap.json +38 -38
  3. package/out/autocomplete/autocomplete-config.json +3 -20
  4. package/out/command-line/command.js +1 -1
  5. package/out/command-line/command.js.map +1 -1
  6. package/out/command-line/dependency-injection.d.ts +1 -2
  7. package/out/command-line/dependency-injection.d.ts.map +1 -1
  8. package/out/command-line/dependency-injection.js +1 -2
  9. package/out/command-line/dependency-injection.js.map +1 -1
  10. package/out/command-line/index.d.ts.map +1 -1
  11. package/out/command-line/index.js +0 -2
  12. package/out/command-line/index.js.map +1 -1
  13. package/out/command-line/register-app-commands.d.ts.map +1 -1
  14. package/out/command-line/register-app-commands.js +11 -87
  15. package/out/command-line/register-app-commands.js.map +1 -1
  16. package/out/command-line/register-installation-commands.d.ts.map +1 -1
  17. package/out/command-line/register-installation-commands.js +2 -3
  18. package/out/command-line/register-installation-commands.js.map +1 -1
  19. package/out/installations/installation-helper.d.ts.map +1 -1
  20. package/out/installations/installation-helper.js +1 -2
  21. package/out/installations/installation-helper.js.map +1 -1
  22. package/package.json +6 -6
  23. package/out/command-line/register-rovo-new-command.d.ts +0 -3
  24. package/out/command-line/register-rovo-new-command.d.ts.map +0 -1
  25. package/out/command-line/register-rovo-new-command.js +0 -117
  26. package/out/command-line/register-rovo-new-command.js.map +0 -1
  27. package/out/experimental/minimal-scaffolder.d.ts +0 -7
  28. package/out/experimental/minimal-scaffolder.d.ts.map +0 -1
  29. package/out/experimental/minimal-scaffolder.js +0 -91
  30. package/out/experimental/minimal-scaffolder.js.map +0 -1
  31. package/out/experimental/rovo-generator.d.ts +0 -22
  32. package/out/experimental/rovo-generator.d.ts.map +0 -1
  33. package/out/experimental/rovo-generator.js +0 -337
  34. package/out/experimental/rovo-generator.js.map +0 -1
@@ -1,337 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RovoCodegenService = exports.JIRA_MODULES = void 0;
4
- const child_process_1 = require("child_process");
5
- exports.JIRA_MODULES = {
6
- 'jira:issuePanel': {
7
- key: 'jira:issuePanel',
8
- name: 'Issue Panel',
9
- description: 'Add detailed panels to the issue view',
10
- hasCustomUI: true
11
- },
12
- 'jira:issueGlance': {
13
- key: 'jira:issueGlance',
14
- name: 'Issue Glance',
15
- description: 'Add toggleable issue glances',
16
- hasCustomUI: true
17
- },
18
- 'jira:issueAction': {
19
- key: 'jira:issueAction',
20
- name: 'Issue Action',
21
- description: 'Add menu items to the issue view',
22
- hasCustomUI: false
23
- },
24
- 'jira:issueContext': {
25
- key: 'jira:issueContext',
26
- name: 'Issue Context',
27
- description: 'Add collapsible panels to the issue view',
28
- hasCustomUI: true
29
- },
30
- 'jira:globalPage': {
31
- key: 'jira:globalPage',
32
- name: 'Global Page',
33
- description: 'Add items to main navigation',
34
- hasCustomUI: true
35
- },
36
- 'jira:projectPage': {
37
- key: 'jira:projectPage',
38
- name: 'Project Page',
39
- description: 'Add custom project pages',
40
- hasCustomUI: true
41
- },
42
- 'jira:adminPage': {
43
- key: 'jira:adminPage',
44
- name: 'Admin Page',
45
- description: 'Add items to Apps section in admin settings',
46
- hasCustomUI: true
47
- },
48
- 'jira:dashboardGadget': {
49
- key: 'jira:dashboardGadget',
50
- name: 'Dashboard Gadget',
51
- description: 'Create dashboard gadgets',
52
- hasCustomUI: true
53
- },
54
- 'jira:customField': {
55
- key: 'jira:customField',
56
- name: 'Custom Field',
57
- description: 'Create new custom fields for issues',
58
- hasCustomUI: true
59
- },
60
- 'jira:jqlFunction': {
61
- key: 'jira:jqlFunction',
62
- name: 'JQL Function',
63
- description: 'Define custom JQL functions',
64
- hasCustomUI: false
65
- },
66
- 'jira:issueActivity': {
67
- key: 'jira:issueActivity',
68
- name: 'Issue Activity',
69
- description: 'Adds a item to the Activity panel of Jira issues',
70
- hasCustomUI: false
71
- }
72
- };
73
- class RovoCodegenService {
74
- buildPrompt(moduleType, moduleName, functionName, customPrompt) {
75
- const moduleDef = exports.JIRA_MODULES[moduleType];
76
- if (!moduleDef) {
77
- throw new Error(`Unsupported module type: ${moduleType}`);
78
- }
79
- const basePrompt = moduleDef.hasCustomUI
80
- ? this.buildUIPrompt(moduleType, moduleDef.name, moduleDef.description, moduleName, functionName)
81
- : this.buildActionPrompt(moduleType, moduleDef.name, moduleDef.description, moduleName, functionName);
82
- let prompt = customPrompt
83
- ? `${basePrompt}\n\nCustom Requirements:\n${this.interpolate(customPrompt, {
84
- moduleType,
85
- moduleName,
86
- functionName,
87
- moduleDescription: moduleDef.description,
88
- displayName: moduleDef.name
89
- })}`
90
- : basePrompt;
91
- if (process.env.FORGE_ROVO_DIAG === '1') {
92
- prompt += `\n\nDiagnostic:\n- At the very top of the output file, add a single-line comment strictly in this format:\n// ROVO_DIAG tools=<list or unknown> using_mcp=<true|false|unknown>\n- Then continue with the rest of the code as normal.`;
93
- }
94
- return prompt;
95
- }
96
- buildCreatePrompt(appName, userDescription) {
97
- let prompt = `You are helping create an Atlassian Forge app named "${appName}".
98
-
99
- User description:
100
- ${userDescription}
101
-
102
- Goals:
103
- - Infer the correct Forge module type(s) from the description (e.g., jira:issuePanel, jira:globalPage, etc.).
104
- - Generate a simple, working app implementation using the latest Forge UI Kit 2 (use Frame component if appropriate).
105
- - Keep it simple to help the user get started; favor small, readable code.
106
-
107
- Technical Requirements:
108
- - Use @forge/resolver and @forge/react components where appropriate. Prefer simple components such as Text, Strong, Fragment, etc.
109
- - Include any necessary resolver function(s) and minimal, helpful comments.
110
- - Update manifest.yml with the selected module(s), function(s), and any required permissions/properties.
111
- - Write code files into the src/ directory.
112
- - Do not print full code to stdout; write files instead and only print minimal status.`;
113
- if (process.env.FORGE_ROVO_DIAG === '1') {
114
- prompt += `\n\nDiagnostic:\n- Add at top of the main file a comment: // ROVO_DIAG using_mcp=<true|false|unknown>`;
115
- }
116
- return prompt;
117
- }
118
- async generateResolverCode(moduleType, moduleName, functionName, customPrompt, callbacks) {
119
- const moduleDef = exports.JIRA_MODULES[moduleType];
120
- if (!moduleDef) {
121
- throw new Error(`Unsupported module type: ${moduleType}`);
122
- }
123
- const basePrompt = moduleDef.hasCustomUI
124
- ? this.buildUIPrompt(moduleType, moduleDef.name, moduleDef.description, moduleName, functionName)
125
- : this.buildActionPrompt(moduleType, moduleDef.name, moduleDef.description, moduleName, functionName);
126
- let prompt = customPrompt
127
- ? `${basePrompt}\n\nCustom Requirements:\n${this.interpolate(customPrompt, {
128
- moduleType,
129
- moduleName,
130
- functionName,
131
- moduleDescription: moduleDef.description,
132
- displayName: moduleDef.name
133
- })}`
134
- : basePrompt;
135
- if (process.env.FORGE_ROVO_DIAG === '1') {
136
- prompt += `\n\nDiagnostic:\n- At the very top of the output file, add a single-line comment strictly in this format:\n// ROVO_DIAG tools=<list or unknown> using_mcp=<true|false|unknown>\n- Then continue with the rest of the code as normal.`;
137
- }
138
- try {
139
- return await this.runRovodev(prompt, callbacks);
140
- }
141
- catch (e) {
142
- return moduleDef.hasCustomUI
143
- ? this.fallbackUICode(moduleType, moduleDef.name, moduleName, functionName)
144
- : this.fallbackActionCode(moduleType, moduleDef.name, moduleName, functionName);
145
- }
146
- }
147
- interpolate(template, vars) {
148
- return template.replace(/\{(\w+)\}/g, (_, k) => vars[k] ?? `{${k}}`);
149
- }
150
- buildUIPrompt(moduleType, displayName, moduleDescription, moduleName, functionName) {
151
- return `Generate a complete Forge resolver JavaScript file for a ${moduleType} (${displayName}) module named "${moduleName}" and update manifest.yml.
152
-
153
- Technical Requirements:
154
- - Use the latest Forge UI Kit 2 with the Frame component (if required) as your default UI approach
155
- - Use @forge/resolver and @forge/react components where appropriate. Simple components like Text, Strong, Fragment, etc. are preferred over custom components.
156
- - Function name: ${functionName}
157
- - Include proper imports for Resolver and React components (Text, Strong, Fragment, etc.)
158
- - Include context access examples (issueId, projectId, userId) where relevant
159
- - Use modern React patterns with hooks if appropriate
160
- - Add helpful comments explaining the code
161
- - Export the handler properly
162
- - Keep it simple with the purpose of helping you get started with Forge
163
- - Include examples of how to access Jira/Confluence API if relevant
164
- - The code should be complete, runnable, and demonstrate best practices for ${moduleDescription}
165
- - Update manifest.yml to include the new ${moduleType} module with key "${moduleName}" and function "${functionName} "and any additional properties that are required for the module to work properly including permissions`;
166
- }
167
- buildActionPrompt(moduleType, displayName, moduleDescription, moduleName, functionName) {
168
- return `Generate a complete Forge resolver JavaScript file for a ${moduleType} (${displayName}) action module named "${moduleName}" and update manifest.yml.
169
-
170
- Technical Requirements:
171
- - Use @forge/resolver for action handling
172
- - Function name: ${functionName}
173
- - Include proper imports for Resolver and any needed Forge APIs
174
- - Include context access (issueId, projectId, userId, etc.) where relevant
175
- - Use Forge API calls to interact with Jira/Confluence data if appropriate
176
- - Return meaningful success/error responses
177
- - Add helpful comments explaining the action logic
178
- - Export the handler properly
179
- - Keep it simple with the purpose of helping you get started with Forge
180
- - The code should be complete, runnable, and demonstrate best practices for ${moduleDescription}
181
- - Focus on server-side logic rather than UI components
182
- - Update manifest.yml to include the new ${moduleType} module with key "${moduleName}" and function "${functionName}" and any additional properties that are required for the module to work properly including permissions`;
183
- }
184
- runRovodev(prompt, callbacks) {
185
- return new Promise((resolve, reject) => {
186
- try {
187
- const nodePty = require('node-pty');
188
- const pty = nodePty.spawn('acli', ['rovodev', prompt], {
189
- name: 'xterm-256color',
190
- cols: process.stdout.isTTY ? process.stdout.columns : 80,
191
- rows: process.stdout.isTTY ? process.stdout.rows : 24,
192
- cwd: process.cwd(),
193
- env: { ...process.env, TERM: process.env.TERM || 'xterm-256color' }
194
- });
195
- const timeoutMsRaw = Number(process.env.FORGE_ROVO_TIMEOUT_MS ?? 600000);
196
- const timeoutMs = Number.isFinite(timeoutMsRaw) ? timeoutMsRaw : 600000;
197
- const killTimer = timeoutMs > 0
198
- ? setTimeout(() => {
199
- try {
200
- pty.kill();
201
- }
202
- catch { }
203
- reject(new Error('acli rovodev timed out'));
204
- }, timeoutMs)
205
- : null;
206
- let buffer = '';
207
- const onPtyData = (data) => {
208
- buffer += data;
209
- process.stdout.write(data);
210
- };
211
- pty.onData(onPtyData);
212
- const stdin = process.stdin;
213
- const hadRaw = stdin.isRaw || false;
214
- const onStdinData = (d) => {
215
- try {
216
- pty.write(d.toString('utf8'));
217
- }
218
- catch { }
219
- };
220
- if (stdin.isTTY) {
221
- try {
222
- stdin.setRawMode(true);
223
- }
224
- catch { }
225
- }
226
- stdin.resume();
227
- stdin.on('data', onStdinData);
228
- const onResize = () => {
229
- try {
230
- pty.resize(process.stdout.isTTY ? process.stdout.columns : 80, process.stdout.isTTY ? process.stdout.rows : 24);
231
- }
232
- catch { }
233
- };
234
- if (process.stdout.isTTY) {
235
- process.stdout.on('resize', onResize);
236
- }
237
- pty.onExit(({ exitCode }) => {
238
- if (killTimer) {
239
- clearTimeout(killTimer);
240
- }
241
- pty.off?.('data', onPtyData);
242
- stdin.off('data', onStdinData);
243
- if (stdin.isTTY) {
244
- try {
245
- stdin.setRawMode(hadRaw);
246
- }
247
- catch { }
248
- }
249
- if (process.stdout.isTTY) {
250
- process.stdout.off('resize', onResize);
251
- }
252
- if (exitCode === 0 && buffer.trim().length > 0) {
253
- resolve(buffer.trim());
254
- }
255
- else {
256
- reject(new Error(`acli rovodev failed${exitCode !== undefined ? ` with code ${exitCode}` : ''}`));
257
- }
258
- });
259
- return;
260
- }
261
- catch {
262
- }
263
- const child = (0, child_process_1.spawn)('acli', ['rovodev', prompt], { stdio: ['inherit', 'pipe', 'inherit'] });
264
- const timeoutMsRaw = Number(process.env.FORGE_ROVO_TIMEOUT_MS ?? 600000);
265
- const timeoutMs = Number.isFinite(timeoutMsRaw) ? timeoutMsRaw : 600000;
266
- const killTimer = timeoutMs > 0
267
- ? setTimeout(() => {
268
- try {
269
- child.kill('SIGKILL');
270
- }
271
- catch { }
272
- reject(new Error('acli rovodev timed out'));
273
- }, timeoutMs)
274
- : null;
275
- let stdout = '';
276
- child.stdout.on('data', (d) => {
277
- const chunk = d.toString();
278
- stdout += chunk;
279
- process.stdout.write(chunk);
280
- });
281
- child.on('close', (code) => {
282
- if (killTimer) {
283
- clearTimeout(killTimer);
284
- }
285
- if (code === 0 && stdout.trim().length > 0) {
286
- resolve(stdout.trim());
287
- }
288
- else {
289
- reject(new Error(`acli rovodev failed${code !== null ? ` with code ${code}` : ''}`));
290
- }
291
- });
292
- child.on('error', (err) => {
293
- if (killTimer) {
294
- clearTimeout(killTimer);
295
- }
296
- reject(err);
297
- });
298
- });
299
- }
300
- fallbackUICode(moduleType, displayName, moduleName, functionName) {
301
- return `import Resolver from '@forge/resolver';
302
- import { Text, Strong, Fragment } from '@forge/react';
303
-
304
- const resolver = new Resolver();
305
-
306
- resolver.define('${functionName}', () => {
307
- return (
308
- <Fragment>
309
- <Text><Strong>${displayName} generated by experimental CLI</Strong></Text>
310
- <Text>Module: ${moduleName}</Text>
311
- <Text>Type: ${moduleType}</Text>
312
- </Fragment>
313
- );
314
- });
315
-
316
- export const handler = resolver.getDefinitions();
317
- `;
318
- }
319
- fallbackActionCode(moduleType, displayName, moduleName, functionName) {
320
- return `import Resolver from '@forge/resolver';
321
-
322
- const resolver = new Resolver();
323
-
324
- resolver.define('${functionName}', async (req) => {
325
- try {
326
- return { success: true, message: '${displayName} "${moduleName}" executed.' };
327
- } catch (e) {
328
- return { success: false, error: e instanceof Error ? e.message : String(e) };
329
- }
330
- });
331
-
332
- export const handler = resolver.getDefinitions();
333
- `;
334
- }
335
- }
336
- exports.RovoCodegenService = RovoCodegenService;
337
- //# sourceMappingURL=rovo-generator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rovo-generator.js","sourceRoot":"","sources":["../../src/experimental/rovo-generator.ts"],"names":[],"mappings":"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"}