@forge/cli-shared 8.5.0-next.6 → 8.5.0-next.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.
@@ -0,0 +1,14 @@
1
+ import { Logger } from '../ui';
2
+ export declare const ASSISTANT_ANALYZE_TIMEOUT = 300000;
3
+ export declare const ASSISTANT_CHECK_TIMEOUT = 30000;
4
+ export declare enum AssistantName {
5
+ ROVO = "rovo",
6
+ GEMINI = "gemini"
7
+ }
8
+ export declare function createForgeTunnelErrorPrompt(error: string): string;
9
+ export declare function createUnknownForgeCommandPrompt(command: string, errorText: string): string;
10
+ export declare function createForgeCommandErrorPrompt(command: string, error: unknown): string;
11
+ export declare function checkRovoAuthStatus(): Promise<boolean>;
12
+ export declare function checkGeminiSetup(): Promise<boolean>;
13
+ export declare function runAssistant(prompt: string, assistantName: string, logger: Logger): Promise<void>;
14
+ //# sourceMappingURL=assistant-cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assistant-cli.d.ts","sourceRoot":"","sources":["../../src/shared/assistant-cli.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAG/B,eAAO,MAAM,yBAAyB,SAAS,CAAC;AAChD,eAAO,MAAM,uBAAuB,QAAQ,CAAC;AAG7C,oBAAY,aAAa;IACvB,IAAI,SAAS;IACb,MAAM,WAAW;CAClB;AAED,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAElE;AAED,wBAAgB,+BAA+B,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAE1F;AAQD,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,CAErF;AA6BD,wBAAgB,mBAAmB,IAAI,OAAO,CAAC,OAAO,CAAC,CAEtD;AAED,wBAAgB,gBAAgB,IAAI,OAAO,CAAC,OAAO,CAAC,CAEnD;AAqCD,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAUjG"}
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.runAssistant = exports.checkGeminiSetup = exports.checkRovoAuthStatus = exports.createForgeCommandErrorPrompt = exports.createUnknownForgeCommandPrompt = exports.createForgeTunnelErrorPrompt = exports.AssistantName = exports.ASSISTANT_CHECK_TIMEOUT = exports.ASSISTANT_ANALYZE_TIMEOUT = void 0;
4
+ const child_process_1 = require("child_process");
5
+ exports.ASSISTANT_ANALYZE_TIMEOUT = 300000;
6
+ exports.ASSISTANT_CHECK_TIMEOUT = 30000;
7
+ var AssistantName;
8
+ (function (AssistantName) {
9
+ AssistantName["ROVO"] = "rovo";
10
+ AssistantName["GEMINI"] = "gemini";
11
+ })(AssistantName = exports.AssistantName || (exports.AssistantName = {}));
12
+ function createForgeTunnelErrorPrompt(error) {
13
+ return `Do not try to change the code, just analyze the issue and make a suggestion to fix the error. Analyze why when the Forge function resolver code is executed, there is error ${error}. This is likely because of some bug in the app code`;
14
+ }
15
+ exports.createForgeTunnelErrorPrompt = createForgeTunnelErrorPrompt;
16
+ function createUnknownForgeCommandPrompt(command, errorText) {
17
+ return `Do not try to change the code, just analyze the issue and make a suggestion to fix the error. Analyze why when I run the Forge command${command} and has the unknown command error ${errorText}. This is likely because of syntax error in the command. You can refer to https://developer.atlassian.com/platform/forge/cli-reference/ for the CLI reference. Try to suggest a valid command based on the intention.`;
18
+ }
19
+ exports.createUnknownForgeCommandPrompt = createUnknownForgeCommandPrompt;
20
+ function createForgeCommandErrorPrompt(command, error) {
21
+ return `Do not try to change the code, just analyze the issue and make a suggestion to fix the error. Analyze why when I run the command ${command} and I have the error ${error}`;
22
+ }
23
+ exports.createForgeCommandErrorPrompt = createForgeCommandErrorPrompt;
24
+ function checkCommandAvailability(command, args) {
25
+ return new Promise((resolve) => {
26
+ const childProcess = (0, child_process_1.spawn)(command, args, {
27
+ stdio: 'pipe',
28
+ timeout: exports.ASSISTANT_CHECK_TIMEOUT
29
+ });
30
+ childProcess.on('close', (code) => {
31
+ resolve(code === 0);
32
+ });
33
+ childProcess.on('error', () => {
34
+ resolve(false);
35
+ });
36
+ });
37
+ }
38
+ function checkRovoAuthStatus() {
39
+ return checkCommandAvailability('acli', ['rovodev', 'auth', 'status']);
40
+ }
41
+ exports.checkRovoAuthStatus = checkRovoAuthStatus;
42
+ function checkGeminiSetup() {
43
+ return checkCommandAvailability('gemini', ['--help']);
44
+ }
45
+ exports.checkGeminiSetup = checkGeminiSetup;
46
+ function runAssistantCommand(assistantName, command, args, logger) {
47
+ return new Promise((resolve) => {
48
+ logger.info(`Sending error to ${assistantName} for analysis...`);
49
+ const childProcess = (0, child_process_1.spawn)(command, args, {
50
+ stdio: 'inherit',
51
+ timeout: exports.ASSISTANT_ANALYZE_TIMEOUT
52
+ });
53
+ childProcess.on('close', () => {
54
+ resolve();
55
+ });
56
+ childProcess.on('error', (error) => {
57
+ logger.error(new Error(`Failed to start ${assistantName.toLowerCase()}: ${error.message}`));
58
+ resolve();
59
+ });
60
+ });
61
+ }
62
+ function runAssistant(prompt, assistantName, logger) {
63
+ switch (assistantName) {
64
+ case AssistantName.ROVO:
65
+ return runAssistantCommand(AssistantName.ROVO, 'acli', ['rovodev', prompt], logger);
66
+ case AssistantName.GEMINI:
67
+ return runAssistantCommand(AssistantName.GEMINI, 'gemini', ['-p', prompt], logger);
68
+ default:
69
+ logger.error(new Error(`Unknown assistant: ${assistantName}`));
70
+ return Promise.resolve();
71
+ }
72
+ }
73
+ exports.runAssistant = runAssistant;
@@ -21,7 +21,11 @@ export declare class UserError extends BaseError {
21
21
  export declare class HiddenError extends BaseError {
22
22
  constructor(message?: string, requestId?: string | undefined);
23
23
  }
24
- export declare const exitOnError: (logger: Logger, error: Error, hint?: string | null) => Promise<never>;
24
+ export interface AutoAnalyzeErrorInput {
25
+ assistantName?: string;
26
+ prompt?: string;
27
+ }
28
+ export declare const exitOnError: (logger: Logger, error: Error, hint?: string | null, autoAnalyzeErrorInput?: AutoAnalyzeErrorInput) => Promise<never>;
25
29
  export declare const wrapError: (error: unknown) => Error;
26
30
  export declare const assertIsError: (error: unknown) => asserts error is Error;
27
31
  export declare class ValidationError extends UserError {
@@ -1 +1 @@
1
- {"version":3,"file":"error-handling.d.ts","sourceRoot":"","sources":["../../src/shared/error-handling.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAI/B,oBAAY,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,GAAG,SAAS,CAAC,GAAG;IACrF,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAKF,MAAM,WAAW,kBAAkB;IACjC,aAAa,IAAI,cAAc,CAAC;CACjC;AAMD,wBAAgB,WAAW,CAAC,CAAC,EAAE,GAAG,GAAG,OAAO,CAe3C;AAED,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,GAAG,GAAG,cAAc,CAOzD;AAED,qBAAa,SAAU,SAAQ,KAAM,YAAW,kBAAkB;IAE9D,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAAV,SAAS,CAAC,oBAAoB,EACjD,OAAO,CAAC,EAAE,MAAM;IAKX,aAAa,IAAI,cAAc;IAM/B,WAAW,IAAI,OAAO;CAG9B;AAED,qBAAa,SAAU,SAAQ,SAAS;gBAC1B,OAAO,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS;IAIrD,WAAW,IAAI,OAAO;CAG9B;AAED,qBAAa,WAAY,SAAQ,SAAS;gBAC5B,OAAO,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS;CAG7D;AAgBD,eAAO,MAAM,WAAW,WAAkB,MAAM,SAAS,KAAK,SAAS,MAAM,GAAG,IAAI,KAAG,QAAQ,KAAK,CA+BnG,CAAC;AAOF,eAAO,MAAM,SAAS,UAAW,OAAO,KAAG,KAK1C,CAAC;AAMF,eAAO,MAAM,aAAa,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,KAAK,IAAI,KAIhE,CAAC;AAEF,qBAAa,eAAgB,SAAQ,SAAS;CAAG;AAEjD,qBAAa,cAAe,SAAQ,SAAS;CAAG;AAEhD,MAAM,WAAW,kBAAkB;IACjC,gBAAgB,EAAE,IAAI,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,cAAc,CAAC;CAC5B;AAED,qBAAa,uBAAwB,SAAQ,SAAS;CAAG;AAEzD,qBAAa,aAAc,SAAQ,SAAS;IAGxC,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAD3B,OAAO,CAAC,EAAE,MAAM,EACC,UAAU,GAAE,OAAe;IAKvC,WAAW;CAGnB;AAUD,qBAAa,wBAAyB,SAAQ,SAAS;gBAMzC,OAAO,CAAC,EAAE,MAAM;CAG7B;AAUD,qBAAa,mBAAoB,SAAQ,SAAS;gBAMpC,OAAO,CAAC,EAAE,MAAM;CAG7B"}
1
+ {"version":3,"file":"error-handling.d.ts","sourceRoot":"","sources":["../../src/shared/error-handling.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAK/B,oBAAY,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,GAAG,SAAS,CAAC,GAAG;IACrF,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAKF,MAAM,WAAW,kBAAkB;IACjC,aAAa,IAAI,cAAc,CAAC;CACjC;AAMD,wBAAgB,WAAW,CAAC,CAAC,EAAE,GAAG,GAAG,OAAO,CAe3C;AAED,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,GAAG,GAAG,cAAc,CAOzD;AAED,qBAAa,SAAU,SAAQ,KAAM,YAAW,kBAAkB;IAE9D,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAAV,SAAS,CAAC,oBAAoB,EACjD,OAAO,CAAC,EAAE,MAAM;IAKX,aAAa,IAAI,cAAc;IAM/B,WAAW,IAAI,OAAO;CAG9B;AAED,qBAAa,SAAU,SAAQ,SAAS;gBAC1B,OAAO,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS;IAIrD,WAAW,IAAI,OAAO;CAG9B;AAED,qBAAa,WAAY,SAAQ,SAAS;gBAC5B,OAAO,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS;CAG7D;AAUD,MAAM,WAAW,qBAAqB;IACpC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AASD,eAAO,MAAM,WAAW,WACd,MAAM,SACP,KAAK,SACL,MAAM,GAAG,IAAI,0BACI,qBAAqB,KAC5C,QAAQ,KAAK,CAmCf,CAAC;AAOF,eAAO,MAAM,SAAS,UAAW,OAAO,KAAG,KAK1C,CAAC;AAMF,eAAO,MAAM,aAAa,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,KAAK,IAAI,KAIhE,CAAC;AAEF,qBAAa,eAAgB,SAAQ,SAAS;CAAG;AAEjD,qBAAa,cAAe,SAAQ,SAAS;CAAG;AAEhD,MAAM,WAAW,kBAAkB;IACjC,gBAAgB,EAAE,IAAI,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,cAAc,CAAC;CAC5B;AAED,qBAAa,uBAAwB,SAAQ,SAAS;CAAG;AAEzD,qBAAa,aAAc,SAAQ,SAAS;IAGxC,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAD3B,OAAO,CAAC,EAAE,MAAM,EACC,UAAU,GAAE,OAAe;IAKvC,WAAW;CAGnB;AAUD,qBAAa,wBAAyB,SAAQ,SAAS;gBAMzC,OAAO,CAAC,EAAE,MAAM;CAG7B;AAUD,qBAAa,mBAAoB,SAAQ,SAAS;gBAMpC,OAAO,CAAC,EAAE,MAAM;CAG7B"}
@@ -4,6 +4,7 @@ exports.MissingCreatorError = exports.PartialInstallationError = exports.UIPromp
4
4
  const tslib_1 = require("tslib");
5
5
  const ui_1 = require("../ui");
6
6
  const Sentry = tslib_1.__importStar(require("@sentry/node"));
7
+ const assistant_cli_1 = require("./assistant-cli");
7
8
  function isErrorWithAnalytics(e) {
8
9
  return e.getAttributes !== undefined;
9
10
  }
@@ -66,7 +67,7 @@ function removePrefixFromErrorMessage(message) {
66
67
  }
67
68
  return message;
68
69
  }
69
- const exitOnError = async (logger, error, hint) => {
70
+ const exitOnError = async (logger, error, hint, autoAnalyzeErrorInput) => {
70
71
  let exitCode = 0;
71
72
  Sentry.withScope((scope) => {
72
73
  scope.setTag('userError', isUserError(error));
@@ -85,6 +86,9 @@ const exitOnError = async (logger, error, hint) => {
85
86
  }
86
87
  exitCode = 1;
87
88
  await Sentry.close();
89
+ if (autoAnalyzeErrorInput?.prompt && autoAnalyzeErrorInput?.assistantName) {
90
+ await (0, assistant_cli_1.runAssistant)(autoAnalyzeErrorInput.prompt, autoAnalyzeErrorInput.assistantName, logger);
91
+ }
88
92
  process.exit(exitCode);
89
93
  };
90
94
  exports.exitOnError = exitOnError;
@@ -1,4 +1,5 @@
1
1
  export * from './assertUnreachable';
2
+ export * from './assistant-cli';
2
3
  export * from './cli-details';
3
4
  export * from './directories';
4
5
  export * from './environment';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/shared/index.ts"],"names":[],"mappings":"AAEA,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,yBAAyB,CAAC;AACxC,cAAc,QAAQ,CAAC;AAEvB,OAAO,OAAO,MAAM,yBAAyB,CAAC;AAC9C,QAAA,MAAM,IAAI,0BAAqD,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/shared/index.ts"],"names":[],"mappings":"AAEA,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,yBAAyB,CAAC;AACxC,cAAc,QAAQ,CAAC;AAEvB,OAAO,OAAO,MAAM,yBAAyB,CAAC;AAC9C,QAAA,MAAM,IAAI,0BAAqD,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC"}
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.flat = exports.flatMap = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  tslib_1.__exportStar(require("./assertUnreachable"), exports);
6
+ tslib_1.__exportStar(require("./assistant-cli"), exports);
6
7
  tslib_1.__exportStar(require("./cli-details"), exports);
7
8
  tslib_1.__exportStar(require("./directories"), exports);
8
9
  tslib_1.__exportStar(require("./environment"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../src/shared/test.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAG/B,wBAAgB,UAAU,CAAC,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,GAAG,MAAM,CAU/E;AAED,aAAK,OAAO,GAAG;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC/C,CAAC;AAEF,wBAAsB,aAAa,CAAC,EAClC,QAAQ,EACR,gBAA0B,EAC1B,QAAQ,EACR,cAAsB,EACvB,EAAE;IACD,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,GAAG,OAAO,CAAC,OAAO,CAAC,CA+CnB"}
1
+ {"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../src/shared/test.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAG/B,wBAAgB,UAAU,CAAC,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,GAAG,MAAM,CAU/E;AAED,aAAK,OAAO,GAAG;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC/C,CAAC;AAEF,wBAAsB,aAAa,CAAC,EAClC,QAAQ,EACR,gBAA0B,EAC1B,QAAQ,EACR,cAAsB,EACvB,EAAE;IACD,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,GAAG,OAAO,CAAC,OAAO,CAAC,CA8CnB"}
@@ -41,8 +41,7 @@ async function createTestApp({ userCode, userCodeFilename = 'index', packages, w
41
41
  src = path_1.default.join(monorepoNodeModules, pkg);
42
42
  }
43
43
  const dest = path_1.default.join(appDirectory, 'node_modules', pkg);
44
- await (0, fs_extra_1.ensureDir)(dest);
45
- await (0, fs_extra_1.copy)(src, dest);
44
+ await (0, fs_extra_1.ensureSymlink)(src, dest);
46
45
  }
47
46
  if (withI18nBundle) {
48
47
  const localeFolder = 'locales';
@@ -7,6 +7,7 @@ export declare type TunnelCommandOptions = {
7
7
  };
8
8
  export declare type TunnelOptions = Omit<TunnelCommandOptions, 'debugStartingPort'> & {
9
9
  debugStartingPort: number;
10
+ assistantName?: string | null;
10
11
  };
11
12
  export declare const defaultDebugStartingPort = 9229;
12
13
  export declare const TUNNEL_BUNDLE_DIRECTORY: string;
@@ -1 +1 @@
1
- {"version":3,"file":"tunnel-options.d.ts","sourceRoot":"","sources":["../../src/tunnel/tunnel-options.ts"],"names":[],"mappings":"AAIA,oBAAY,oBAAoB,GAAG;IACjC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;IACjC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,oBAAY,aAAa,GAAG,IAAI,CAAC,oBAAoB,EAAE,mBAAmB,CAAC,GAAG;IAAE,iBAAiB,EAAE,MAAM,CAAA;CAAE,CAAC;AAE5G,eAAO,MAAM,wBAAwB,OAAO,CAAC;AAC7C,eAAO,MAAM,uBAAuB,QAA8C,CAAC;AACnF,eAAO,MAAM,2BAA2B,EAAE,aAGzC,CAAC"}
1
+ {"version":3,"file":"tunnel-options.d.ts","sourceRoot":"","sources":["../../src/tunnel/tunnel-options.ts"],"names":[],"mappings":"AAIA,oBAAY,oBAAoB,GAAG;IACjC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;IACjC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,oBAAY,aAAa,GAAG,IAAI,CAAC,oBAAoB,EAAE,mBAAmB,CAAC,GAAG;IAC5E,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B,CAAC;AAEF,eAAO,MAAM,wBAAwB,OAAO,CAAC;AAC7C,eAAO,MAAM,uBAAuB,QAA8C,CAAC;AACnF,eAAO,MAAM,2BAA2B,EAAE,aAGzC,CAAC"}
package/out/ui/text.d.ts CHANGED
@@ -9,6 +9,8 @@ export interface ListScope {
9
9
  export declare function itemList(items: string[], indent?: string): string;
10
10
  export declare const capitalise: (word: string) => string;
11
11
  export declare const Text: {
12
+ buildTerminalLink: (text: string) => string;
13
+ go: (link: string) => string;
12
14
  error: {
13
15
  noKeytar: string;
14
16
  noTokenStored: string;
@@ -953,7 +955,6 @@ export declare const Text: {
953
955
  listingImages: (key: string) => string;
954
956
  noImagesFound: string;
955
957
  promptNextPage: string;
956
- confirmationForNextPage: string;
957
958
  };
958
959
  };
959
960
  login: {
@@ -1057,6 +1058,19 @@ export declare const Text: {
1057
1058
  info: string;
1058
1059
  };
1059
1060
  };
1061
+ assistant: {
1062
+ description: string;
1063
+ on: {
1064
+ description: string;
1065
+ };
1066
+ off: {
1067
+ description: string;
1068
+ };
1069
+ enabled: (assistantName: string) => string;
1070
+ disabled: string;
1071
+ alreadyDisabled: string;
1072
+ enableConfirmation: string;
1073
+ };
1060
1074
  nonInteractive: {
1061
1075
  description: string;
1062
1076
  error: {
@@ -1 +1 @@
1
- {"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../src/ui/text.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../src/ui/text.ts"],"names":[],"mappings":"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"}
package/out/ui/text.js CHANGED
@@ -12,10 +12,11 @@ const cli_details_1 = require("../shared/cli-details");
12
12
  const environment_1 = require("../shared/environment");
13
13
  const manifest_1 = require("@forge/manifest");
14
14
  const ctrlC = 'Press Ctrl+C to cancel.';
15
- const gettingStartedDACLink = 'https://go.atlassian.com/dac/platform/forge/getting-started/#log-in-with-an-atlassian-api-token';
16
15
  const encryptedValue = '****';
17
16
  const greenTick = `${chalk_1.default.bold(chalk_1.default.green('✔'))}`;
18
17
  const buildTerminalLink = (text) => (0, terminal_link_1.default)(chalk_1.default.bold(text), text, { fallback: () => chalk_1.default.underline.bold(text) });
18
+ const go = (link) => buildTerminalLink(`https://go.atlassian.com/${link}`);
19
+ const gettingStartedDACLink = go('dac/platform/forge/getting-started/#log-in-with-an-atlassian-api-token');
19
20
  const command = (...args) => chalk_1.default.bold(args.join(' '));
20
21
  const forge = (...args) => command('forge', ...args);
21
22
  const autoSpaceSentences = (...sentences) => sentences
@@ -48,9 +49,11 @@ const platformKeytarRecommendations = () => {
48
49
  }
49
50
  };
50
51
  exports.Text = {
52
+ buildTerminalLink,
53
+ go,
51
54
  error: {
52
- noKeytar: autoSpaceSentences(`The CLI couldn't securely store your login credentials in a local keychain.`, platformKeytarRecommendations(), `If a local keychain is not available, use environment variables before trying again. See ${buildTerminalLink(gettingStartedDACLink)} for more.`),
53
- noTokenStored: `Not logged in. If a local keychain is available, run ${forge('login')}, otherwise set environment variables before trying again. See ${buildTerminalLink(gettingStartedDACLink)} for more.`,
55
+ noKeytar: autoSpaceSentences(`The CLI couldn't securely store your login credentials in a local keychain.`, platformKeytarRecommendations(), `If a local keychain is not available, use environment variables before trying again. See ${gettingStartedDACLink} for more.`),
56
+ noTokenStored: `Not logged in. If a local keychain is available, run ${forge('login')}, otherwise set environment variables before trying again. See ${gettingStartedDACLink} for more.`,
54
57
  keytarAccessError: {
55
58
  other: (message) => keytarAccessErrorBase(message),
56
59
  mac: (message) => keytarAccessErrorBase(message) +
@@ -102,7 +105,7 @@ exports.Text = {
102
105
  warning: {
103
106
  plaintextCredentialsFound: (url) => `Your credentials were stored in plaintext by a previous version of the Forge CLI. For additional security, revoke your existing API token by visting this URL ${buildTerminalLink(url)}.`,
104
107
  plaintextCredentialsMigrated: 'The credentials found in plaintext have been migrated to your local keychain.',
105
- plaintextCredentialsNotMigrated: autoSpaceSentences(`The CLI couldn't securely store your login credentials in a local keychain.`, platformKeytarRecommendations(), `If a local keychain is not available, use environment variables instead. See ${buildTerminalLink(gettingStartedDACLink)} for more information.`),
108
+ plaintextCredentialsNotMigrated: autoSpaceSentences(`The CLI couldn't securely store your login credentials in a local keychain.`, platformKeytarRecommendations(), `If a local keychain is not available, use environment variables instead. See ${gettingStartedDACLink} for more information.`),
106
109
  unsupportedNodeVersion: (_userNodeVersion, supportedNodeVersions) => log_color_1.LogColor.warn(`Warning: Forge CLI supports Node.js ${supportedNodeVersions}.` +
107
110
  `\nUnsupported Node.js versions are not guaranteed to work correctly.\n`),
108
111
  deprecation: {
@@ -217,9 +220,9 @@ exports.Text = {
217
220
  action: {
218
221
  start: `Help us make Forge even better.
219
222
 
220
- For any questions, post them on: https://go.atlassian.com/developer-community
223
+ For any questions, post them on: ${go('developer-community')}
221
224
 
222
- To report bugs or issues, go to: https://go.atlassian.com/forge-project
225
+ To report bugs or issues, go to: ${go('forge-project')}
223
226
 
224
227
  What do you like or don't like about Forge? Share your feedback below or press Ctrl+C to cancel.
225
228
  `,
@@ -242,7 +245,7 @@ What do you like or don't like about Forge? Share your feedback below or press C
242
245
  introWithCurrentDirectory: (currentDirectory) => `Creating an app in your current directory:\n\n ${chalk_1.default.bold(currentDirectory)}\n`,
243
246
  optionTemplate: 'specify the template to use',
244
247
  optionDirectory: 'specify the directory to create (uses the template name by default)',
245
- optionSpace: 'specify the developer space id to use',
248
+ optionSpace: 'specify the Developer Space id to use',
246
249
  overviewAppName: `\nName your app. The app name can include dashes, spaces, and underscores.\n`,
247
250
  overviewTemplates: '\nStart with a template. Each template contains the required files to be a valid app.\n',
248
251
  waitTemplates: 'Getting template list...',
@@ -282,29 +285,29 @@ What do you like or don't like about Forge? Share your feedback below or press C
282
285
  }
283
286
  },
284
287
  devSpace: {
285
- fetching: 'Fetching your developer spaces...',
288
+ fetching: 'Fetching your Developer Spaces...',
286
289
  documentationLink: 'https://developer.atlassian.com/platform/forge/developer-space/developer-spaces-introduction',
287
- noSpacesFound: (command, documentationLink) => `You are not currently a member of a Developer Space. You must be a member of a Developer space to ${command} an app. Please contact an admin to be added to an existing space or create a new one. To learn more about your Developer Space, go to: ${documentationLink}\n`,
290
+ noSpacesFound: (command, documentationLink) => `You are not currently a member of a Developer Space. You must be a member of a Developer Space to ${command} an app. Please contact an admin to be added to an existing space or create a new one. To learn more about your Developer Space, go to: ${documentationLink}\n`,
288
291
  selectPrompt: 'Select or create a Developer Space:',
289
292
  assignmentInfo: 'You are about to assign your app to a Developer Space. Once you assign your app to the selected Developer Space, all usage and billing for the app will be managed through this space.',
290
293
  selectionPrompt: (documentationLink) => `Please select the Developer Space you want to assign your app to. To learn more about your Developer Space, go to: ${documentationLink}`,
291
294
  createNewOption: 'Create a new Developer Space',
292
295
  createContinuePrompt: 'Do you want to continue?',
293
296
  createNewSpaceInfo: (documentationLink) => `\nA new Developer Space will now be created for you. To learn more about your Developer Space, go to: \n${documentationLink}`,
294
- createMessage: '\nName your Developer Space. The name must be unique and can include dashes, spaces, and underscores.\n',
297
+ createMessage: 'Name your Developer Space. The name must be unique and can include dashes, spaces, and underscores.\n',
295
298
  createPrompt: 'Enter a name for your Developer Space:',
296
299
  nameRequired: 'Developer Space name is required.',
297
300
  createInProgress: 'Creating your Developer Space...',
298
301
  contributingToSpace: (name) => `${greenTick} You are contributing to this Developer Space: ${name}.\n`,
299
302
  assigningToSpace: (name) => `${greenTick} You are assigning your app to this Developer Space: ${name}.\n`,
300
303
  createdAndContributing: (name) => `A Developer Space has been created for you. You are contributing to this Developer Space: ${name}.`,
301
- invalidSpaceName: (spaceName) => `Developer space does not exist or you do not have access to it.`,
302
- invalidSpaceId: (spaceId) => `Developer space id is not a valid UUID.`,
304
+ invalidSpaceName: (spaceName) => `The Developer Space does not exist, or you don't have the correct permissions to access it.`,
305
+ invalidSpaceId: (spaceId) => `Developer Space id is not a valid UUID.`,
303
306
  error: {
304
- fetchOrSelect: (errorMessage) => `Failed to fetch or select developer space: ${errorMessage}`,
305
- create: (errorMessage) => `Failed to create developer space: ${errorMessage}`,
306
- selectedNotFound: 'Selected developer space not found',
307
- nameAlreadyExists: chalk_1.default.red('\nError: The name you have entered for your developer space is already in use. Please choose a different name to ensure it is unique.')
307
+ fetchOrSelect: (errorMessage) => `Failed to fetch or select Developer Space: ${errorMessage}`,
308
+ create: (errorMessage) => `Failed to create Developer Space: ${errorMessage}`,
309
+ selectedNotFound: 'Selected Developer Space not found',
310
+ nameAlreadyExists: chalk_1.default.red('\nError: The name you have entered for your Developer Space is already in use. Please choose a different name to ensure it is unique.')
308
311
  },
309
312
  terms: {
310
313
  agreement: 'Please review the following agreement before continuing:\n',
@@ -824,10 +827,10 @@ What do you like or don't like about Forge? Share your feedback below or press C
824
827
  mpacAppConnectKeyChangeAnalyticsError: 'Cannot change app.connect.key for an app with an Atlassian Marketplace listing.',
825
828
  mpacAppConnectKeyChangeError: (mpacAppKey, connectKey) => log_color_1.LogColor.error(`Cannot change the app.connect.key from \'${mpacAppKey}\' to \'${connectKey}\'. The app's Connect key must match the Atlassian Marketplace key.\n`),
826
829
  connectKeyChangeWarning: (environment, migrationKey, connectKey) => `WARNING: Changing the app.connect.key in ${(0, environment_1.environmentToOption)(environment)} from \'${migrationKey}\' to \'${connectKey}\' affects features using the Connect key as an identifier. ` +
827
- `\nLearn more about the impact of this change at https://go.atlassian.com/forge-connect-key-changes.\n`,
830
+ `\nLearn more about the impact of this change at ${go('forge-connect-key-changes')}.\n`,
828
831
  connectKeyDeleteWarning: (environment) => `WARNING: You're about to delete the app.connect.key of the app in ${(0, environment_1.environmentToOption)(environment)}. ` +
829
832
  `\nIf you proceed, non-Forge Connect installations using the Connect key will no longer be replaced by future Forge installations of the app, and will co-exist. ` +
830
- `\nLearn more at https://go.atlassian.com/forge-connect-key-deletion.\n`,
833
+ `\nLearn more at ${go('forge-connect-key-deletion')}.\n`,
831
834
  connectKeyMutationInProductionError: (migrationKey, connectKey) => log_color_1.LogColor.error(`Cannot change the app.connect.key from \'${migrationKey}\' to \'${connectKey}\'. The app's Connect key cannot be mutated in production after deployment.\n`),
832
835
  connectKeyMutationInProductionAnalyticsError: 'Cannot mutate app.connect.key for an app in production.'
833
836
  },
@@ -851,8 +854,8 @@ What do you like or don't like about Forge? Share your feedback below or press C
851
854
  },
852
855
  outdatedInstallations: `We've detected new scopes or egress URLs in your app.\n` +
853
856
  `Run ${forge('install', '--upgrade')} and restart your tunnel to put them into effect.`,
854
- postDeploymentRoaEligibilityFailure: (appVersion, envKey, envType) => `${log_symbols_1.default.info} The version of your app [${appVersion}] that was just deployed to [${exports.Text.env.displayEnvironment(envKey, envType)}] is not eligible for the Runs on Atlassian program. Run ${forge('eligibility')} to know more.\n\nTo know more about Runs on Atlassian, go to https://go.atlassian.com/runs-on-atlassian`,
855
- postDeploymentRoaEligibilitySuccess: (appVersion, envKey, envType) => `${log_symbols_1.default.info} The version of your app [${appVersion}] that was just deployed to [${exports.Text.env.displayEnvironment(envKey, envType)}] is eligible for the Runs on Atlassian program.\n\nTo know more about Runs on Atlassian, go to https://go.atlassian.com/runs-on-atlassian`,
857
+ postDeploymentRoaEligibilityFailure: (appVersion, envKey, envType) => `${log_symbols_1.default.info} The version of your app [${appVersion}] that was just deployed to [${exports.Text.env.displayEnvironment(envKey, envType)}] is not eligible for the Runs on Atlassian program. Run ${forge('eligibility')} to know more.\n\nTo know more about Runs on Atlassian, go to ${go('runs-on-atlassian')}.`,
858
+ postDeploymentRoaEligibilitySuccess: (appVersion, envKey, envType) => `${log_symbols_1.default.info} The version of your app [${appVersion}] that was just deployed to [${exports.Text.env.displayEnvironment(envKey, envType)}] is eligible for the Runs on Atlassian program.\n\nTo know more about Runs on Atlassian, go to ${go('runs-on-atlassian')}.`,
856
859
  listIndexes: (environment) => `Run ${forge('storage', 'entities', 'indexes', 'list', '-e', (0, environment_1.environmentToOption)(environment))} to check the status of the indexes.`,
857
860
  reindexingInProgress: {
858
861
  continueDeployment: 'Reindexing is currently in progress. Are you sure you want to deploy?',
@@ -926,7 +929,7 @@ What do you like or don't like about Forge? Share your feedback below or press C
926
929
  '\n\nTo install the app on this site, generate an installation link ' +
927
930
  'in the developer console and share it with the site admin: ' +
928
931
  `https://developer.atlassian.com/console/myapps/${appId}/distribution`,
929
- appendRequestIdToErrorMessage: (message, requestId) => `${message} For more help on this issue, please reach out to support ${buildTerminalLink('(https://developer.atlassian.com/support)')} and provide them the following request ID: ${requestId}`,
932
+ appendRequestIdToErrorMessage: (message, requestId) => `${message} For more help on this issue, please reach out to support (${buildTerminalLink('https://developer.atlassian.com/support')}) and provide them the following request ID: ${requestId}`,
930
933
  majorVersionNotFound: 'The major version you specified does not exist. Check the version number and try again.',
931
934
  majorVersionAndUpgrade: 'Cannot use the major version flag with the upgrade flag'
932
935
  },
@@ -961,7 +964,7 @@ ${buildTerminalLink(link)}\n`,
961
964
  harmonization: {
962
965
  installation: {
963
966
  errors: {
964
- concurrentSync: `Install has failed due to a background syncing clash. Try installing your app again in 10 minutes. If you see this error again, raise a thread at ${buildTerminalLink('https://go.atlassian.com/cdac-connect-forge')}.`,
967
+ concurrentSync: `Install has failed due to a background syncing clash. Try installing your app again in 10 minutes. If you see this error again, raise a thread at ${go('cdac-connect-forge')}.`,
965
968
  placeholderMacroCollision: 'Confluence macro key is already used by another app. Macro keys must be globally unique. Prefixing with your app.key name ensures compatibility with other apps.',
966
969
  placeholderFailedDescriptorValidation: 'One or more connectModules are defined incorrectly in your manifest.yml. Check the module definitions and deploy before trying again.'
967
970
  }
@@ -1029,7 +1032,7 @@ ${buildTerminalLink(link)}\n`,
1029
1032
  fileServed: (filename, resourceKey) => `Serving file ${filename} for resource ${resourceKey}`,
1030
1033
  fileProxied: (filename, resourceKey, tunnelPort) => `Received proxy request. ${exports.Text.tunnel.customUI.fileServed(filename, resourceKey)} from specified address http://localhost:${tunnelPort}`,
1031
1034
  warning: {
1032
- cspViolation: (localUrl, violation) => `CSP violation detected for '${violation}' while serving content at ${localUrl}\nFor an app to share data with external resources or use custom CSP, follow the steps in: https://go.atlassian.com/forge-content-security-and-egress-controls\n`
1035
+ cspViolation: (localUrl, violation) => `CSP violation detected for '${violation}' while serving content at ${localUrl}\nFor an app to share data with external resources or use custom CSP, follow the steps in: ${go('forge-content-security-and-egress-controls')}\n`
1033
1036
  }
1034
1037
  },
1035
1038
  container: {
@@ -1181,8 +1184,7 @@ ${buildTerminalLink(link)}\n`,
1181
1184
  },
1182
1185
  listingImages: (key) => `Listing images for container with key '${key}'.`,
1183
1186
  noImagesFound: `No images found.`,
1184
- promptNextPage: 'Load next page [Y] or [Enter] to exit',
1185
- confirmationForNextPage: 'y'
1187
+ promptNextPage: 'Load next page?'
1186
1188
  }
1187
1189
  },
1188
1190
  login: {
@@ -1286,6 +1288,20 @@ ${buildTerminalLink(link)}\n`,
1286
1288
  info: `To view all environments for this app, run ${forge('environments', 'list')}.`
1287
1289
  }
1288
1290
  },
1291
+ assistant: {
1292
+ description: '[⚠️ experimental feature] manage AI assistant settings (Rovo/Gemini)',
1293
+ on: {
1294
+ description: `[⚠️ experimental feature] enable AI assistant for error analysis (specify name: rovo or gemini)
1295
+ When errors occur during Forge command execution, error details will be sent to your AI agent to help you understand and resolve issues.`
1296
+ },
1297
+ off: {
1298
+ description: 'disable AI assistant for error analysis'
1299
+ },
1300
+ enabled: (assistantName) => `${greenTick} ${assistantName} assistant enabled.`,
1301
+ disabled: `${greenTick} Assistant disabled. Error analysis will not be performed during Forge CLI commands.`,
1302
+ alreadyDisabled: 'Assistant is already disabled',
1303
+ enableConfirmation: '⚠️ Are you sure you want to enable the assistant? This is an experimental feature. When errors occur during Forge command execution, error details will be sent to your AI agent automatically to help you understand and resolve issues.'
1304
+ },
1289
1305
  nonInteractive: {
1290
1306
  description: 'run the command without input prompts',
1291
1307
  error: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@forge/cli-shared",
3
- "version": "8.5.0-next.6",
3
+ "version": "8.5.0-next.8",
4
4
  "description": "Common functionality for Forge CLI",
5
5
  "author": "Atlassian",
6
6
  "license": "SEE LICENSE IN LICENSE.txt",