@forge/cli-shared 8.4.0 → 8.5.0-experimental-73629cc

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.
@@ -1,5 +1,5 @@
1
1
  import { CLIDetails, ConfigSectionReader, CredentialGetter, getEnvironmentConfig, Logger } from '../index';
2
- export declare type FeatureGate = 'forge-cli-test-gate' | 'is-logs-v-2-api-enabled' | 'forge-cli-bundle-runtime-loader' | 'forge-cli-enable-atlas-product-support' | 'forge-cli-enable-teamwork-graph-product-support' | 'forge-cli-enable-xpa-installation' | 'forge-cli-enable-developer-space-flow';
2
+ export declare type FeatureGate = 'forge-cli-test-gate' | 'is-logs-v-2-api-enabled' | 'forge-cli-bundle-runtime-loader' | 'forge-cli-enable-atlas-product-support' | 'forge-cli-enable-teamwork-graph-product-support' | 'forge-cli-enable-xpa-installation' | 'forge-cli-enable-developer-space-flow' | 'forge-cli-enable-typescript-bundler';
3
3
  export declare type DynamicConfig = {
4
4
  'forge-cli-test-dynamic-configs': string[];
5
5
  'xls-forge-cli-deprecated-runtimes': string[];
@@ -17,6 +17,7 @@ export declare abstract class StatsigReader {
17
17
  enableCrossProductAppInstallation(): Promise<boolean>;
18
18
  getDeprecatedRuntimes(): Promise<string[]>;
19
19
  isDevSpaceSelectionEnabled(): Promise<boolean>;
20
+ isTypescriptBundlerEnabled(): Promise<boolean>;
20
21
  }
21
22
  export declare function cacheStatsigResult<C, T>(getter: (this: C, ...args: any[]) => Promise<T>): (this: C, ...args: any[]) => Promise<T>;
22
23
  export declare class StatsigService extends StatsigReader {
@@ -1 +1 @@
1
- {"version":3,"file":"statsig-service.d.ts","sourceRoot":"","sources":["../../src/service/statsig-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"statsig-service.d.ts","sourceRoot":"","sources":["../../src/service/statsig-service.ts"],"names":[],"mappings":"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"}
@@ -31,8 +31,14 @@ class StatsigReader {
31
31
  if (process.env.FORGE_CLI_DISABLE_DEV_SPACE === 'true') {
32
32
  return false;
33
33
  }
34
+ else if (process.env.FORGE_CLI_DISABLE_DEV_SPACE === 'false') {
35
+ return true;
36
+ }
34
37
  return (await this.checkGate('forge-cli-enable-developer-space-flow')) ?? false;
35
38
  }
39
+ async isTypescriptBundlerEnabled() {
40
+ return (await this.checkGate('forge-cli-enable-typescript-bundler')) ?? false;
41
+ }
36
42
  }
37
43
  exports.StatsigReader = StatsigReader;
38
44
  var STATSIG_API_KEYS;
@@ -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;
@@ -225,7 +227,7 @@ export declare const Text: {
225
227
  noSpacesFound: (command: string, documentationLink: string) => string;
226
228
  selectPrompt: string;
227
229
  assignmentInfo: string;
228
- selectionPrompt: string;
230
+ selectionPrompt: (documentationLink: string) => string;
229
231
  createNewOption: string;
230
232
  createContinuePrompt: string;
231
233
  createNewSpaceInfo: (documentationLink: string) => string;
@@ -704,12 +706,14 @@ export declare const Text: {
704
706
  bannerSite: string;
705
707
  bannerWorkspace: string;
706
708
  devAppInstallWarning: string;
709
+ majorVersionIsNotLatest: (versionToInstall: string) => string;
707
710
  devAppInstallConfirm: string;
708
711
  optionConfirmScopes: string;
709
712
  optionUpgrade: string;
710
713
  optionLicense: string;
711
714
  optionLicenseModes: string;
712
715
  optionUsersWithAccess: string;
716
+ optionMajorVersion: string;
713
717
  listScopes: (scopes: ListScope[]) => string;
714
718
  listEgressAddresses: (egressAddresses: string[]) => string;
715
719
  permissionsMismatch: (environment: string) => string;
@@ -725,10 +729,13 @@ export declare const Text: {
725
729
  url: (url: string) => string;
726
730
  site: (url: string) => string;
727
731
  alreadyInstalledError: string;
732
+ alreadyInstalledErrorWithMajorVersion: (envKey: string, envType: AppEnvironmentType) => string;
728
733
  serverSideInstallationError: (message: string) => string;
729
734
  noDeploymentFound: (environment: string) => string;
730
735
  permissionsDeniedInstructions: (requestId: string, appId: string) => string;
731
736
  appendRequestIdToErrorMessage: (message: string | undefined, requestId: string) => string;
737
+ majorVersionNotFound: string;
738
+ majorVersionAndUpgrade: string;
732
739
  };
733
740
  failedAll: (site: URL, environment: string) => string;
734
741
  security: {
@@ -948,7 +955,6 @@ export declare const Text: {
948
955
  listingImages: (key: string) => string;
949
956
  noImagesFound: string;
950
957
  promptNextPage: string;
951
- confirmationForNextPage: string;
952
958
  };
953
959
  };
954
960
  login: {
@@ -1052,6 +1058,19 @@ export declare const Text: {
1052
1058
  info: string;
1053
1059
  };
1054
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
+ };
1055
1074
  nonInteractive: {
1056
1075
  description: string;
1057
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...',
286
- documentationLink: 'https://go.atlassian.com/some-link',
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`,
288
+ fetching: 'Fetching your Developer Spaces...',
289
+ documentationLink: 'https://developer.atlassian.com/platform/forge/developer-space/developer-spaces-introduction',
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
- selectionPrompt: 'Please select the Developer Space you want to assign your app to. To learn more about your Developer Space, go to: https://go.atlassian.com/some-link',
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?',
@@ -885,12 +888,14 @@ What do you like or don't like about Forge? Share your feedback below or press C
885
888
  bannerSite: `\nInstalling your app onto an Atlassian site.\n${ctrlC}\n`,
886
889
  bannerWorkspace: `\nInstalling your app onto the selected workspace.\n${ctrlC}\n`,
887
890
  devAppInstallWarning: `${chalk_1.default.bold('WARNING:')} You are about to install a development app to a production site. If you do not intend to test your app, we strongly recommend that you deploy your app to production and install the production version instead.`,
891
+ majorVersionIsNotLatest: (versionToInstall) => `WARNING: You are about to install a previous version of the app. (${versionToInstall})`,
888
892
  devAppInstallConfirm: `Are you sure you want to proceed?`,
889
893
  optionConfirmScopes: 'skip confirmation of scopes for the app before installing or upgrading the app',
890
894
  optionUpgrade: 'upgrade an existing installation',
891
895
  optionLicense: 'specify the license value for the app (allowed values: active, standard, advanced, inactive, and trial)',
892
896
  optionLicenseModes: 'specify the list of license mode value for the app (allowed values: user-access)',
893
897
  optionUsersWithAccess: 'specify the list of Atlassian Account IDs(aaid) for users who have access to the app',
898
+ optionMajorVersion: 'specify the major version to install',
894
899
  listScopes: (scopes) => `Your app will be installed with the following scopes:\n${scopes
895
900
  .map(({ name, requiresInteractiveConsent }) => `- ${name}${requiresInteractiveConsent ? ' (requires user consent)' : ''}`)
896
901
  .join('\n')}\n`,
@@ -917,13 +922,16 @@ What do you like or don't like about Forge? Share your feedback below or press C
917
922
  url: (url) => `Site URL is invalid: ${url}`,
918
923
  site: (url) => `Site is invalid: ${url}`,
919
924
  alreadyInstalledError: `Installation error: App is already installed.\nIf you're trying to upgrade your app, use the ${forge('install', '--upgrade')} command.`,
925
+ alreadyInstalledErrorWithMajorVersion: (envKey, envType) => `The app in the ${exports.Text.env.displayEnvironment(envKey, envType)} environment is already installed on this site. Uninstall the app before trying again.`,
920
926
  serverSideInstallationError: (message) => `Installation error: ${message}`,
921
927
  noDeploymentFound: (environment) => `Forge apps must be deployed before installation. Deploy your app by running ${forge('deploy', '-e', (0, environment_1.environmentToOption)(environment))}.`,
922
928
  permissionsDeniedInstructions: (requestId, appId) => `Insufficient permissions to install app (requestId: ${requestId})` +
923
929
  '\n\nTo install the app on this site, generate an installation link ' +
924
930
  'in the developer console and share it with the site admin: ' +
925
931
  `https://developer.atlassian.com/console/myapps/${appId}/distribution`,
926
- 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}`,
933
+ majorVersionNotFound: 'The major version you specified does not exist. Check the version number and try again.',
934
+ majorVersionAndUpgrade: 'Cannot use the major version flag with the upgrade flag'
927
935
  },
928
936
  failedAll: (site, environment) => `Your app in ${(0, environment_1.environmentToOption)(environment)} was not installed to any contexts on ${chalk_1.default.bold(site)}.`,
929
937
  security: {
@@ -956,7 +964,7 @@ ${buildTerminalLink(link)}\n`,
956
964
  harmonization: {
957
965
  installation: {
958
966
  errors: {
959
- 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')}.`,
960
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.',
961
969
  placeholderFailedDescriptorValidation: 'One or more connectModules are defined incorrectly in your manifest.yml. Check the module definitions and deploy before trying again.'
962
970
  }
@@ -1024,7 +1032,7 @@ ${buildTerminalLink(link)}\n`,
1024
1032
  fileServed: (filename, resourceKey) => `Serving file ${filename} for resource ${resourceKey}`,
1025
1033
  fileProxied: (filename, resourceKey, tunnelPort) => `Received proxy request. ${exports.Text.tunnel.customUI.fileServed(filename, resourceKey)} from specified address http://localhost:${tunnelPort}`,
1026
1034
  warning: {
1027
- 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`
1028
1036
  }
1029
1037
  },
1030
1038
  container: {
@@ -1176,8 +1184,7 @@ ${buildTerminalLink(link)}\n`,
1176
1184
  },
1177
1185
  listingImages: (key) => `Listing images for container with key '${key}'.`,
1178
1186
  noImagesFound: `No images found.`,
1179
- promptNextPage: 'Load next page [Y] or [Enter] to exit',
1180
- confirmationForNextPage: 'y'
1187
+ promptNextPage: 'Load next page?'
1181
1188
  }
1182
1189
  },
1183
1190
  login: {
@@ -1281,6 +1288,20 @@ ${buildTerminalLink(link)}\n`,
1281
1288
  info: `To view all environments for this app, run ${forge('environments', 'list')}.`
1282
1289
  }
1283
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
+ },
1284
1305
  nonInteractive: {
1285
1306
  description: 'run the command without input prompts',
1286
1307
  error: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@forge/cli-shared",
3
- "version": "8.4.0",
3
+ "version": "8.5.0-experimental-73629cc",
4
4
  "description": "Common functionality for Forge CLI",
5
5
  "author": "Atlassian",
6
6
  "license": "SEE LICENSE IN LICENSE.txt",
@@ -12,7 +12,7 @@
12
12
  "generate-graphql-types": "graphql-codegen --config src/graphql/codegen.yml"
13
13
  },
14
14
  "dependencies": {
15
- "@forge/manifest": "10.3.0",
15
+ "@forge/manifest": "10.4.0-experimental-73629cc",
16
16
  "@forge/util": "2.0.0",
17
17
  "@forge/i18n": "0.0.7",
18
18
  "@sentry/node": "7.106.0",