@forge/cli-shared 8.22.1-next.1 → 8.23.0-experimental-4a332af
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.
- package/CHANGELOG.md +147 -0
- package/out/apps/template-module.d.ts +12 -9
- package/out/apps/template-module.d.ts.map +1 -1
- package/out/apps/template-module.js +61 -25
- package/out/ari/ari.d.ts +4 -0
- package/out/ari/ari.d.ts.map +1 -1
- package/out/ari/ari.js +13 -1
- package/out/config/config-file.d.ts.map +1 -1
- package/out/config/config-file.js +16 -3
- package/out/graphql/graphql-types.d.ts +3786 -219
- package/out/graphql/graphql-types.d.ts.map +1 -1
- package/out/graphql/graphql-types.js +474 -49
- package/out/graphql/minimal-graphql-runner.d.ts +3 -3
- package/out/graphql/minimal-graphql-runner.d.ts.map +1 -1
- package/out/graphql/minimal-graphql-runner.js +7 -8
- package/out/shared/forge-cli-attribution.d.ts +16 -0
- package/out/shared/forge-cli-attribution.d.ts.map +1 -0
- package/out/shared/forge-cli-attribution.js +129 -0
- package/out/shared/index.d.ts +1 -0
- package/out/shared/index.d.ts.map +1 -1
- package/out/shared/index.js +1 -0
- package/out/ui/text.d.ts +77 -4
- package/out/ui/text.d.ts.map +1 -1
- package/out/ui/text.js +105 -11
- package/package.json +4 -2
|
@@ -41,10 +41,10 @@ export declare class MinimalGraphQLRunner implements GraphQLRunner {
|
|
|
41
41
|
requestId: string | undefined;
|
|
42
42
|
response: TResponse;
|
|
43
43
|
}>;
|
|
44
|
-
protected getAuthenticatedClient(endpoint: string, authorizationHeader: AuthorizationHeader): GraphQLClient
|
|
45
|
-
getHeaders(authorizationHeader: AuthorizationHeader): {
|
|
44
|
+
protected getAuthenticatedClient(endpoint: string, authorizationHeader: AuthorizationHeader): Promise<GraphQLClient>;
|
|
45
|
+
getHeaders(authorizationHeader: AuthorizationHeader): Promise<{
|
|
46
46
|
[key: string]: string;
|
|
47
|
-
}
|
|
47
|
+
}>;
|
|
48
48
|
private getAttribution;
|
|
49
49
|
private getClientName;
|
|
50
50
|
private getClientVersion;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"minimal-graphql-runner.d.ts","sourceRoot":"","sources":["../../src/graphql/minimal-graphql-runner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEzD,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAE7D,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAqD,MAAM,UAAU,CAAC;AAC7G,OAAO,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"minimal-graphql-runner.d.ts","sourceRoot":"","sources":["../../src/graphql/minimal-graphql-runner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEzD,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAE7D,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAqD,MAAM,UAAU,CAAC;AAC7G,OAAO,EAAE,SAAS,EAAuB,SAAS,EAAE,MAAM,WAAW,CAAC;AAItE,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE5D,eAAO,MAAM,YAAY,cAAc,CAAC;AACxC,eAAO,MAAM,kBAAkB,qBAAqB,CAAC;AACrD,eAAO,MAAM,sBAAsB,0BAA0B,CAAC;AAE9D,eAAO,MAAM,cAAc,EAAE,kBAM5B,CAAC;AAOF,qBAAa,0BAA2B,SAAQ,SAAS;CAAG;AAM5D,qBAAa,0BAA2B,SAAQ,SAAS;;CAIxD;AAED,qBAAa,uBAAwB,SAAQ,SAAS;;CAIrD;AAED,qBAAa,2BAA4B,SAAQ,SAAS;IAMtD,OAAO,CAAC,QAAQ,CAAC,SAAS;IAL5B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAqB;IAC1C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqB;IAChD,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;gBAGpB,SAAS,EAAE,OAAO,EACnC,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,MAAM,EAAE,YAAY,EAAE;IASxB,OAAO,QAAO,MAAM,GAAG,SAAS,CAE9B;IAEF,aAAa,QAAO,MAAM,GAAG,SAAS,CAEpC;IAEF,YAAY,QAAO,MAAM,GAAG,SAAS,CAEnC;IAEK,WAAW,IAAI,OAAO;CAG9B;AAED,qBAAa,YAAa,SAAQ,KAAK;gBACzB,IAAI,EAAE,GAAG,EAAE,SAAS,CAAC,EAAE,MAAM;CAG1C;AAED,oBAAY,OAAO,GAAG,IAAI,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;AAEpD,qBAAa,oBAAqB,YAAW,aAAa;IAEtD,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAFV,aAAa,EAAE,aAAa,EAC5B,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,UAAU,GAAG,SAAS;IAGxC,GAAG,CAAC,UAAU,SAAS,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU;;;;cAS9E,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,mBAAmB,EAAE,mBAAmB;IAMpF,UAAU,CAAC,mBAAmB,EAAE,mBAAmB,GAAG,OAAO,CAAC;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;YAYvF,cAAc;IAQ5B,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,gBAAgB;YAIV,4BAA4B;IA0C1C,OAAO,CAAC,YAAY;CAUrB"}
|
|
@@ -83,28 +83,27 @@ class MinimalGraphQLRunner {
|
|
|
83
83
|
response: data
|
|
84
84
|
};
|
|
85
85
|
}
|
|
86
|
-
getAuthenticatedClient(endpoint, authorizationHeader) {
|
|
86
|
+
async getAuthenticatedClient(endpoint, authorizationHeader) {
|
|
87
87
|
return new graphql_request_1.GraphQLClient(endpoint, {
|
|
88
|
-
headers: this.getHeaders(authorizationHeader)
|
|
88
|
+
headers: await this.getHeaders(authorizationHeader)
|
|
89
89
|
});
|
|
90
90
|
}
|
|
91
|
-
getHeaders(authorizationHeader) {
|
|
91
|
+
async getHeaders(authorizationHeader) {
|
|
92
92
|
return {
|
|
93
93
|
...authorizationHeader,
|
|
94
94
|
...(this.cliDetails ? { 'user-agent': `${this.getClientName()}/${this.getClientVersion()}` } : {}),
|
|
95
95
|
...{
|
|
96
96
|
'atl-client-name': `${this.getClientName()}`,
|
|
97
97
|
'atl-client-version': `${this.getClientVersion()}`,
|
|
98
|
-
'atl-attribution': this.getAttribution()
|
|
98
|
+
'atl-attribution': await this.getAttribution()
|
|
99
99
|
}
|
|
100
100
|
};
|
|
101
101
|
}
|
|
102
|
-
getAttribution() {
|
|
102
|
+
async getAttribution() {
|
|
103
103
|
return JSON.stringify({
|
|
104
104
|
businessUnit: (0, index_1.getEnvironmentConfig)(exports.BUSINESS_UNITS),
|
|
105
105
|
service: exports.SERVICE_NAME,
|
|
106
|
-
|
|
107
|
-
isCI: process.env.CI === 'true'
|
|
106
|
+
...(await shared_1.ForgeCliAttribution.build())
|
|
108
107
|
});
|
|
109
108
|
}
|
|
110
109
|
getClientName() {
|
|
@@ -115,7 +114,7 @@ class MinimalGraphQLRunner {
|
|
|
115
114
|
}
|
|
116
115
|
async rawRequestWithoutClientError(query, variables) {
|
|
117
116
|
const authorizationHeader = await this.authenticator.getAuthorizationHeader();
|
|
118
|
-
const client = this.getAuthenticatedClient(this.endpoint, authorizationHeader);
|
|
117
|
+
const client = await this.getAuthenticatedClient(this.endpoint, authorizationHeader);
|
|
119
118
|
try {
|
|
120
119
|
return await client.rawRequest(query, variables);
|
|
121
120
|
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export declare class ForgeCliAttribution {
|
|
2
|
+
static isAgent(): boolean;
|
|
3
|
+
static isCI(): boolean;
|
|
4
|
+
static skillName(): string;
|
|
5
|
+
static agentHint(): Promise<string>;
|
|
6
|
+
static isStudio(): boolean;
|
|
7
|
+
static build(): Promise<Record<string, unknown>>;
|
|
8
|
+
private static getWildcardAttribution;
|
|
9
|
+
private static getValidAttributionEnvValue;
|
|
10
|
+
private static isValidAttributionValue;
|
|
11
|
+
private static isValidWildcardKey;
|
|
12
|
+
private static hasEnvKeySet;
|
|
13
|
+
private static camelCaseEnvKey;
|
|
14
|
+
private static capitalize;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=forge-cli-attribution.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"forge-cli-attribution.d.ts","sourceRoot":"","sources":["../../src/shared/forge-cli-attribution.ts"],"names":[],"mappings":"AA0CA,qBAAa,mBAAmB;WAOhB,OAAO,IAAI,OAAO;WAQlB,IAAI,IAAI,OAAO;WAIf,SAAS,IAAI,MAAM;WAIb,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;WAuBlC,QAAQ,IAAI,OAAO;WAWb,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAW7D,OAAO,CAAC,MAAM,CAAC,sBAAsB;IAgDrC,OAAO,CAAC,MAAM,CAAC,2BAA2B;IAK1C,OAAO,CAAC,MAAM,CAAC,uBAAuB;IAStC,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAIjC,OAAO,CAAC,MAAM,CAAC,YAAY;IAK3B,OAAO,CAAC,MAAM,CAAC,eAAe;IAS9B,OAAO,CAAC,MAAM,CAAC,UAAU;CAG1B"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ForgeCliAttribution = void 0;
|
|
4
|
+
const detect_agent_1 = require("@vercel/detect-agent");
|
|
5
|
+
const ATL_FORGE_ATTRIBUTION_ENV_PREFIX = 'ATL_FORGE_ATTRIBUTION_';
|
|
6
|
+
const UNKNOWN = 'unknown';
|
|
7
|
+
const MAX_ATTRIBUTION_VALUE_LENGTH = 512;
|
|
8
|
+
const MAX_WILDCARD_PAYLOAD_BYTES = 4096;
|
|
9
|
+
const MAX_WILDCARD_FIELDS = 32;
|
|
10
|
+
const ATTRIBUTION_VALUE_PATTERN = /^[A-Za-z0-9._\-/:+]+$/;
|
|
11
|
+
const WILDCARD_KEY_PATTERN = /^[A-Za-z][A-Za-z0-9_]*$/;
|
|
12
|
+
const WELL_KNOWN_ATTRIBUTION_ENV_KEYS = new Set(['AGENT_HINT', 'IS_STUDIO', 'SKILL_NAME']);
|
|
13
|
+
const RESERVED_ATTRIBUTION_FIELDS = new Set([
|
|
14
|
+
'agentHint',
|
|
15
|
+
'businessUnit',
|
|
16
|
+
'isAgent',
|
|
17
|
+
'isCI',
|
|
18
|
+
'isStudio',
|
|
19
|
+
'service',
|
|
20
|
+
'skillName'
|
|
21
|
+
]);
|
|
22
|
+
class ForgeCliAttribution {
|
|
23
|
+
static isAgent() {
|
|
24
|
+
return !process.stdin.isTTY && !process.stdout.isTTY;
|
|
25
|
+
}
|
|
26
|
+
static isCI() {
|
|
27
|
+
return process.env.CI === 'true';
|
|
28
|
+
}
|
|
29
|
+
static skillName() {
|
|
30
|
+
return this.getValidAttributionEnvValue('SKILL_NAME') || UNKNOWN;
|
|
31
|
+
}
|
|
32
|
+
static async agentHint() {
|
|
33
|
+
const explicitAgentHint = this.getValidAttributionEnvValue('AGENT_HINT');
|
|
34
|
+
if (explicitAgentHint) {
|
|
35
|
+
return explicitAgentHint;
|
|
36
|
+
}
|
|
37
|
+
if (this.hasEnvKeySet('ROVODEV_CLI')) {
|
|
38
|
+
return 'rovo-dev';
|
|
39
|
+
}
|
|
40
|
+
if (this.hasEnvKeySet('WINDSURF_CASCADE_TERMINAL_KIND')) {
|
|
41
|
+
return 'windsurf';
|
|
42
|
+
}
|
|
43
|
+
try {
|
|
44
|
+
const result = await (0, detect_agent_1.determineAgent)();
|
|
45
|
+
if (result?.isAgent && typeof result.agent?.name === 'string' && result.agent.name) {
|
|
46
|
+
return result.agent.name;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
}
|
|
51
|
+
return UNKNOWN;
|
|
52
|
+
}
|
|
53
|
+
static isStudio() {
|
|
54
|
+
return this.getValidAttributionEnvValue('IS_STUDIO') === 'true';
|
|
55
|
+
}
|
|
56
|
+
static async build() {
|
|
57
|
+
return {
|
|
58
|
+
isAgent: this.isAgent(),
|
|
59
|
+
isCI: this.isCI(),
|
|
60
|
+
skillName: this.skillName(),
|
|
61
|
+
agentHint: await this.agentHint(),
|
|
62
|
+
isStudio: this.isStudio(),
|
|
63
|
+
...this.getWildcardAttribution()
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
static getWildcardAttribution() {
|
|
67
|
+
const wildcardAttribution = {};
|
|
68
|
+
let totalBytes = 0;
|
|
69
|
+
const sortedEntries = Object.entries(process.env).sort(([a], [b]) => a.localeCompare(b));
|
|
70
|
+
for (const [envKey, envValue] of sortedEntries) {
|
|
71
|
+
if (!envKey.startsWith(ATL_FORGE_ATTRIBUTION_ENV_PREFIX)) {
|
|
72
|
+
continue;
|
|
73
|
+
}
|
|
74
|
+
const attributionEnvKey = envKey.slice(ATL_FORGE_ATTRIBUTION_ENV_PREFIX.length);
|
|
75
|
+
if (WELL_KNOWN_ATTRIBUTION_ENV_KEYS.has(attributionEnvKey)) {
|
|
76
|
+
continue;
|
|
77
|
+
}
|
|
78
|
+
if (!this.isValidWildcardKey(attributionEnvKey) || !this.isValidAttributionValue(envValue)) {
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
81
|
+
const attributionKey = this.camelCaseEnvKey(attributionEnvKey);
|
|
82
|
+
if (!attributionKey || RESERVED_ATTRIBUTION_FIELDS.has(attributionKey)) {
|
|
83
|
+
continue;
|
|
84
|
+
}
|
|
85
|
+
if (attributionKey in wildcardAttribution) {
|
|
86
|
+
continue;
|
|
87
|
+
}
|
|
88
|
+
if (Object.keys(wildcardAttribution).length >= MAX_WILDCARD_FIELDS) {
|
|
89
|
+
break;
|
|
90
|
+
}
|
|
91
|
+
const fieldBytes = attributionKey.length + envValue.length + 4;
|
|
92
|
+
if (totalBytes + fieldBytes > MAX_WILDCARD_PAYLOAD_BYTES) {
|
|
93
|
+
continue;
|
|
94
|
+
}
|
|
95
|
+
wildcardAttribution[attributionKey] = envValue;
|
|
96
|
+
totalBytes += fieldBytes;
|
|
97
|
+
}
|
|
98
|
+
return wildcardAttribution;
|
|
99
|
+
}
|
|
100
|
+
static getValidAttributionEnvValue(key) {
|
|
101
|
+
const value = process.env[`${ATL_FORGE_ATTRIBUTION_ENV_PREFIX}${key}`];
|
|
102
|
+
return this.isValidAttributionValue(value) ? value : undefined;
|
|
103
|
+
}
|
|
104
|
+
static isValidAttributionValue(value) {
|
|
105
|
+
return (typeof value === 'string' &&
|
|
106
|
+
value.length > 0 &&
|
|
107
|
+
value.length <= MAX_ATTRIBUTION_VALUE_LENGTH &&
|
|
108
|
+
ATTRIBUTION_VALUE_PATTERN.test(value));
|
|
109
|
+
}
|
|
110
|
+
static isValidWildcardKey(key) {
|
|
111
|
+
return WILDCARD_KEY_PATTERN.test(key);
|
|
112
|
+
}
|
|
113
|
+
static hasEnvKeySet(key) {
|
|
114
|
+
const value = process.env[key];
|
|
115
|
+
return value !== undefined && value !== '';
|
|
116
|
+
}
|
|
117
|
+
static camelCaseEnvKey(key) {
|
|
118
|
+
return key
|
|
119
|
+
.toLowerCase()
|
|
120
|
+
.split('_')
|
|
121
|
+
.filter(Boolean)
|
|
122
|
+
.map((part, index) => (index === 0 ? part : this.capitalize(part)))
|
|
123
|
+
.join('');
|
|
124
|
+
}
|
|
125
|
+
static capitalize(value) {
|
|
126
|
+
return `${value.charAt(0).toUpperCase()}${value.slice(1)}`;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
exports.ForgeCliAttribution = ForgeCliAttribution;
|
package/out/shared/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
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;AACvB,cAAc,iBAAiB,CAAC;AAEhC,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,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,yBAAyB,CAAC;AACxC,cAAc,QAAQ,CAAC;AACvB,cAAc,iBAAiB,CAAC;AAEhC,OAAO,OAAO,MAAM,yBAAyB,CAAC;AAC9C,QAAA,MAAM,IAAI,0BAAqD,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC"}
|
package/out/shared/index.js
CHANGED
|
@@ -7,6 +7,7 @@ tslib_1.__exportStar(require("./assistant-cli"), exports);
|
|
|
7
7
|
tslib_1.__exportStar(require("./cli-details"), exports);
|
|
8
8
|
tslib_1.__exportStar(require("./directories"), exports);
|
|
9
9
|
tslib_1.__exportStar(require("./environment"), exports);
|
|
10
|
+
tslib_1.__exportStar(require("./forge-cli-attribution"), exports);
|
|
10
11
|
tslib_1.__exportStar(require("./error-handling"), exports);
|
|
11
12
|
tslib_1.__exportStar(require("./pause"), exports);
|
|
12
13
|
tslib_1.__exportStar(require("./product"), exports);
|
package/out/ui/text.d.ts
CHANGED
|
@@ -562,11 +562,12 @@ export declare const Text: {
|
|
|
562
562
|
outFile: string;
|
|
563
563
|
version1: string;
|
|
564
564
|
version2: string;
|
|
565
|
+
limit: string;
|
|
565
566
|
};
|
|
566
567
|
desc: string;
|
|
567
568
|
overViewVersionTable: (versions: number, environment: string) => string;
|
|
568
569
|
promptVersionTable: string;
|
|
569
|
-
selectTargetVersionToUpgrade: (
|
|
570
|
+
selectTargetVersionToUpgrade: (sourceVersion?: string) => string;
|
|
570
571
|
error: {
|
|
571
572
|
missingVersionUpgradeParameters: string;
|
|
572
573
|
appVersionRolloutRunning: string;
|
|
@@ -579,8 +580,15 @@ export declare const Text: {
|
|
|
579
580
|
tooManyRequestsGlobally: string;
|
|
580
581
|
};
|
|
581
582
|
appVersionRolloutSuccess(appRolloutVersionId: string | undefined): string;
|
|
582
|
-
|
|
583
|
+
limitWarningUserLimit: (expectedRemaining: number, totalEligible: number, userLimit: number) => string;
|
|
584
|
+
limitWarningAdjustedLimit: (expectedRemaining: number, totalEligible: number, userLimit: number, appliedLimit: number) => string;
|
|
585
|
+
limitWarningSystemLimit: (expectedRemaining: number, totalEligible: number, systemLimit: number) => string;
|
|
586
|
+
limitWarningFollowUp: string;
|
|
587
|
+
warningMessage: (sourceVersionId: string, targetVersionId: string, installations?: number, limit?: number, enforcedSystemLimit?: number, userProvidedLimit?: number) => string;
|
|
583
588
|
promptConfirmation: string;
|
|
589
|
+
promptLimit: (installations?: number) => string;
|
|
590
|
+
promptLimitWithTargetInfo: (installations?: number, upgradeLimit?: number) => string;
|
|
591
|
+
limitValidationError: (max?: number) => string;
|
|
584
592
|
};
|
|
585
593
|
list: {
|
|
586
594
|
cmdName: string;
|
|
@@ -677,6 +685,9 @@ export declare const Text: {
|
|
|
677
685
|
buildTag: {
|
|
678
686
|
description: string;
|
|
679
687
|
};
|
|
688
|
+
skipRollout: {
|
|
689
|
+
description: string;
|
|
690
|
+
};
|
|
680
691
|
connectKeyChange: {
|
|
681
692
|
continueChange: string;
|
|
682
693
|
continueDelete: string;
|
|
@@ -831,6 +842,7 @@ export declare const Text: {
|
|
|
831
842
|
noResourceId: string;
|
|
832
843
|
noCloudId: string;
|
|
833
844
|
noResourceIdInWorkspace: string;
|
|
845
|
+
noResourceIdInInstallation: string;
|
|
834
846
|
noInstallations: string;
|
|
835
847
|
status: {
|
|
836
848
|
outdatedPermissions: string;
|
|
@@ -914,6 +926,7 @@ export declare const Text: {
|
|
|
914
926
|
};
|
|
915
927
|
};
|
|
916
928
|
installationId: {
|
|
929
|
+
option: string;
|
|
917
930
|
prompt: string;
|
|
918
931
|
errors: {
|
|
919
932
|
invalid: string;
|
|
@@ -1251,6 +1264,15 @@ export declare const Text: {
|
|
|
1251
1264
|
};
|
|
1252
1265
|
};
|
|
1253
1266
|
};
|
|
1267
|
+
commandHelp: {
|
|
1268
|
+
groups: {
|
|
1269
|
+
quickStart: string;
|
|
1270
|
+
develop: string;
|
|
1271
|
+
manage: string;
|
|
1272
|
+
account: string;
|
|
1273
|
+
cliExperience: string;
|
|
1274
|
+
};
|
|
1275
|
+
};
|
|
1254
1276
|
dynamicTable: {
|
|
1255
1277
|
exiting: string;
|
|
1256
1278
|
};
|
|
@@ -1266,14 +1288,63 @@ export declare const Text: {
|
|
|
1266
1288
|
optionDryRun: string;
|
|
1267
1289
|
optionForce: string;
|
|
1268
1290
|
optionNoInstall: string;
|
|
1269
|
-
optionUpgradeDeps: string;
|
|
1270
1291
|
promptSelectProduct: string;
|
|
1271
1292
|
promptSelectModule: string;
|
|
1272
1293
|
promptSelectUIFramework: string;
|
|
1294
|
+
dryRunLabel: string;
|
|
1295
|
+
filesToBeCreatedHeader: string;
|
|
1296
|
+
fileChangeHeader: (fileName: string) => string;
|
|
1297
|
+
depAdditionsHeader: string;
|
|
1298
|
+
frontendDepHeader: string;
|
|
1299
|
+
depConflictsHeader: string;
|
|
1300
|
+
depConflictsScopedHeader: (scope: 'backend' | 'frontend') => string;
|
|
1301
|
+
depConflictsBlockedHeader: (scope: 'backend' | 'frontend') => string;
|
|
1302
|
+
depConflictsColumnPackage: string;
|
|
1303
|
+
depConflictsColumnCurrent: string;
|
|
1304
|
+
depConflictsColumnTemplate: string;
|
|
1305
|
+
depConflictsColumnStatus: string;
|
|
1306
|
+
depConflictsStatusConflict: string;
|
|
1307
|
+
depConflictsStatusUpgraded: string;
|
|
1308
|
+
depConflictsStatusDowngraded: string;
|
|
1309
|
+
depConflictsStatusOk: string;
|
|
1310
|
+
depConflictsSummary: (count: number) => string;
|
|
1311
|
+
depConflictsUpgradedSummary: (count: number) => string;
|
|
1312
|
+
depConflictsOptionsHeader: string;
|
|
1313
|
+
depConflictsOptionForce: string;
|
|
1314
|
+
depConflictsOptionNoInstall: string;
|
|
1315
|
+
depConflictsOptionForceNoInstall: string;
|
|
1316
|
+
depConflictsFooter: string;
|
|
1317
|
+
errorDepConflicts: (count: number) => string;
|
|
1318
|
+
errorPackageJsonNotFound: (pkgPath: string) => string;
|
|
1319
|
+
errorPackageJsonParseFailed: (pkgPath: string, message: string) => string;
|
|
1320
|
+
errorMissingDepVersion: (name: string) => string;
|
|
1321
|
+
warnNoManifest: (manifestPath: string) => string;
|
|
1322
|
+
warnNoFragment: string;
|
|
1323
|
+
warnNoManifestDelta: string;
|
|
1324
|
+
warnAddedAppCompatibility: (existingProduct: string, newProduct: string) => string;
|
|
1325
|
+
warnUnsupportedFileOperations: (ops: string[]) => string;
|
|
1326
|
+
warnViteConfigExists: (configPath: string) => string;
|
|
1327
|
+
errorViteConfigNestedInput: () => string;
|
|
1328
|
+
errorApplyNotImplemented: string;
|
|
1273
1329
|
errorInvalidProduct: (product: string) => string;
|
|
1274
1330
|
errorInvalidUIFramework: (uiFramework: string | undefined, moduleKey: string) => string;
|
|
1275
1331
|
errorFailedToResolveChoice: (choice: string) => string;
|
|
1276
1332
|
errorFailedToDownloadTemplate: (moduleKey: string) => string;
|
|
1333
|
+
errorMissingTemplateSource: (sourcePath: string) => string;
|
|
1334
|
+
errorTargetConflict: (targets: string[]) => string;
|
|
1335
|
+
errorZipExtractionFailed: (moduleKey: string, message: string) => string;
|
|
1336
|
+
errorZipCleanupFailed: (moduleKey: string) => string;
|
|
1337
|
+
errorCacheDirMissing: (moduleKey: string) => string;
|
|
1338
|
+
errorFailedToDownloadBundle: (moduleKey: string, message: string) => string;
|
|
1339
|
+
errorCacheCleanupFailed: (cacheDir: string) => string;
|
|
1340
|
+
errorNoBundle: (moduleKey: string, searched: string[]) => string;
|
|
1341
|
+
errorNoFileOperations: (moduleKey: string, uiFramework: string | undefined) => string;
|
|
1342
|
+
warnDownloadFailed: (moduleKey: string, message: string) => string;
|
|
1343
|
+
warnNoBundle: string;
|
|
1344
|
+
warnInstallSkipped: string;
|
|
1345
|
+
infoReusingResource: (resourceKey: string) => string;
|
|
1346
|
+
errorResourceEntryConflict: (resourceKey: string, entryName: string, existing: string, incoming: string) => string;
|
|
1347
|
+
errorResourcePathConflict: (resourceKey: string, existing: string, incoming: string) => string;
|
|
1277
1348
|
};
|
|
1278
1349
|
list: {
|
|
1279
1350
|
description: string;
|
|
@@ -1290,9 +1361,11 @@ export declare const Text: {
|
|
|
1290
1361
|
bifrostIndexInvalid: string;
|
|
1291
1362
|
bifrostIndexFetchFailed: (status: number, statusText: string) => string;
|
|
1292
1363
|
bifrostManifestFragmentFetchFailed: (status: number, statusText: string) => string;
|
|
1293
|
-
|
|
1364
|
+
bifrostZipFetchFailed: (moduleKey: string, status: number, statusText: string) => string;
|
|
1365
|
+
duplicateModuleKey: (value: string) => string;
|
|
1294
1366
|
duplicateFunctionKey: (value: string) => string;
|
|
1295
1367
|
duplicateResourceKey: (value: string) => string;
|
|
1368
|
+
duplicateKey: (value: string) => string;
|
|
1296
1369
|
};
|
|
1297
1370
|
};
|
|
1298
1371
|
};
|
package/out/ui/text.d.ts.map
CHANGED
|
@@ -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
|
@@ -699,12 +699,16 @@ What do you like or don't like about Forge? Share your feedback below or press C
|
|
|
699
699
|
json: 'output results in JSON format',
|
|
700
700
|
outFile: 'specify a file to output the results',
|
|
701
701
|
version1: 'source version to upgrade in a non-interactive mode',
|
|
702
|
-
version2: 'target version to upgrade to in a non-interactive mode'
|
|
702
|
+
version2: 'target version to upgrade to in a non-interactive mode',
|
|
703
|
+
limit: 'limit the number of installations to upgrade (optional)'
|
|
703
704
|
},
|
|
704
705
|
desc: `upgrades installations using one major version to another version. The version selection list displays:\n${itemList(['major version number', 'deployment date', 'number of installations'])}`,
|
|
705
706
|
overViewVersionTable: (versions, environment) => `\nDetails for a total of [${versions} major versions] in [${environment}] can be seen below.\nWhere there are no upgrade paths available, use \`forge version compare\` to compare versions and see more information:\n`,
|
|
706
707
|
promptVersionTable: 'Getting app version list...',
|
|
707
|
-
selectTargetVersionToUpgrade: (
|
|
708
|
+
selectTargetVersionToUpgrade: (sourceVersion) => {
|
|
709
|
+
const sourceVersionText = sourceVersion ? ` from version ${sourceVersion}` : '';
|
|
710
|
+
return `Please select a version to upgrade installations${sourceVersionText} to:`;
|
|
711
|
+
},
|
|
708
712
|
error: {
|
|
709
713
|
missingVersionUpgradeParameters: `Missing parameters:\nError: [version bulk-upgrade start --non-interactive] requires --from-version and --to-version`,
|
|
710
714
|
appVersionRolloutRunning: `App version rollout for this app environment is already running. Use \`forge version bulk-upgrade list\` to identify the running upgrade and \`forge version bulk-upgrade cancel\` to cancel.`,
|
|
@@ -719,8 +723,29 @@ What do you like or don't like about Forge? Share your feedback below or press C
|
|
|
719
723
|
appVersionRolloutSuccess(appRolloutVersionId) {
|
|
720
724
|
return `Your upgrade has been queued with upgrade ID ${appRolloutVersionId}. To view that status of your update please use the \`forge version bulk-upgrade list\` command.`;
|
|
721
725
|
},
|
|
722
|
-
|
|
723
|
-
|
|
726
|
+
limitWarningUserLimit: (expectedRemaining, totalEligible, userLimit) => `${chalk_1.default.yellow('Warning:')} Due to the limit you specified (${userLimit}), ${expectedRemaining} out of the eligible ${totalEligible} upgrades will remain unprocessed.`,
|
|
727
|
+
limitWarningAdjustedLimit: (expectedRemaining, totalEligible, userLimit, appliedLimit) => `${chalk_1.default.yellow('Warning:')} The limit you supplied (${userLimit}) could not be honored and a limit of ${appliedLimit} has been applied. Due to this limit ${expectedRemaining} out of the eligible ${totalEligible} upgrades will remain unprocessed.`,
|
|
728
|
+
limitWarningSystemLimit: (expectedRemaining, totalEligible, systemLimit) => `${chalk_1.default.yellow('Warning:')} The number of eligible installations exceeded the per-workflow maximum (${systemLimit}). Due to this maximum ${expectedRemaining} out of the eligible ${totalEligible} upgrades will remain unprocessed.`,
|
|
729
|
+
limitWarningFollowUp: 'These unprocessed installations can be processed by starting a new workflow after the completion of this one.',
|
|
730
|
+
warningMessage: (sourceVersionId, targetVersionId, installations, limit, enforcedSystemLimit, userProvidedLimit) => {
|
|
731
|
+
const effectiveInstallations = limit !== undefined && limit < (installations || 0) ? limit : installations;
|
|
732
|
+
const installationText = effectiveInstallations === 1 ? 'installation' : 'installations';
|
|
733
|
+
let limitNote = '';
|
|
734
|
+
if (enforcedSystemLimit !== undefined && userProvidedLimit !== undefined) {
|
|
735
|
+
limitNote = `. Provided limit (${userProvidedLimit}) not honored due to system limit`;
|
|
736
|
+
}
|
|
737
|
+
return `${chalk_1.default.bold('Warning:')} You are planning to move ${effectiveInstallations} ${installationText} from version ${sourceVersionId} to version ${targetVersionId}${limitNote}.`;
|
|
738
|
+
},
|
|
739
|
+
promptConfirmation: 'Do you want to continue?',
|
|
740
|
+
promptLimit: (installations) => `How many installations to upgrade? (${installations} eligible):`,
|
|
741
|
+
promptLimitWithTargetInfo: (installations, upgradeLimit) => {
|
|
742
|
+
const eligibleText = `${installations} eligible`;
|
|
743
|
+
const limitText = upgradeLimit && (installations ?? 0) > upgradeLimit ? `, system limit: ${upgradeLimit}` : ``;
|
|
744
|
+
return `How many installations to upgrade? (${eligibleText}${limitText}):`;
|
|
745
|
+
},
|
|
746
|
+
limitValidationError: (max) => max !== undefined
|
|
747
|
+
? `Please enter a valid number between 1 and ${max}, or leave empty for no limit.`
|
|
748
|
+
: `Please enter a valid number greater than 0, or leave empty for no limit.`
|
|
724
749
|
},
|
|
725
750
|
list: {
|
|
726
751
|
cmdName: 'list',
|
|
@@ -856,6 +881,9 @@ What do you like or don't like about Forge? Share your feedback below or press C
|
|
|
856
881
|
buildTag: {
|
|
857
882
|
description: 'specify a build tag to deploy (from forge build)'
|
|
858
883
|
},
|
|
884
|
+
skipRollout: {
|
|
885
|
+
description: 'Skip rolling release rollout after deployment'
|
|
886
|
+
},
|
|
859
887
|
connectKeyChange: {
|
|
860
888
|
continueChange: `Do you wish to continue with changing the Connect key?`,
|
|
861
889
|
continueDelete: `Do you wish to continue with deleting the Connect key?`,
|
|
@@ -1049,6 +1077,7 @@ ${buildTerminalLink(link)}\n`,
|
|
|
1049
1077
|
noResourceId: 'Unknown site with no resource ID',
|
|
1050
1078
|
noCloudId: 'Unknown workspace with no cloud ID',
|
|
1051
1079
|
noResourceIdInWorkspace: 'Unknown workspace with no resource ID',
|
|
1080
|
+
noResourceIdInInstallation: 'Unknown installation with no resource ID',
|
|
1052
1081
|
noInstallations: `The app is not installed anywhere.\nRun ${forge('install')} to install your app on an Atlassian site.\n`,
|
|
1053
1082
|
status: {
|
|
1054
1083
|
outdatedPermissions: 'Outdated permissions',
|
|
@@ -1138,6 +1167,7 @@ ${buildTerminalLink(link)}\n`,
|
|
|
1138
1167
|
}
|
|
1139
1168
|
},
|
|
1140
1169
|
installationId: {
|
|
1170
|
+
option: 'specify the installation ID',
|
|
1141
1171
|
prompt: "Enter the app's installation ID:",
|
|
1142
1172
|
errors: {
|
|
1143
1173
|
invalid: `Invalid installation ID. Run ${forge('install', 'list')} to see the installation IDs for the app.`,
|
|
@@ -1158,8 +1188,12 @@ ${buildTerminalLink(link)}\n`,
|
|
|
1158
1188
|
confirmAllInstallations: 'This will uninstall the app from the listed contexts. Are you sure you want to continue?'
|
|
1159
1189
|
},
|
|
1160
1190
|
info: 'Uninstalling...',
|
|
1161
|
-
done: (product, domain, environment, isMulti) =>
|
|
1162
|
-
|
|
1191
|
+
done: (product, domain, environment, isMulti) => product === 'Ecosystem'
|
|
1192
|
+
? `${isMulti ? log_symbols_1.default.info : log_symbols_1.default.success} Uninstalled.`
|
|
1193
|
+
: `${isMulti ? log_symbols_1.default.info : log_symbols_1.default.success} Uninstalled from the ${(0, environment_1.environmentToOption)(environment)} environment in ${product} on ${buildTerminalLink(domain)}.`,
|
|
1194
|
+
failed: (product, domain, environment) => product === 'Ecosystem'
|
|
1195
|
+
? `Failed to uninstall the app. Try rerunning the command, or ask for help if you continue to see this error.`
|
|
1196
|
+
: `Failed to uninstall the app from the ${(0, environment_1.environmentToOption)(environment)} environment in ${product} on ${buildTerminalLink(domain)}. Try rerunning the command, or ask for help if you continue to see this error.`,
|
|
1163
1197
|
missingUninstallTask: `Cannot uninstall the app: something went wrong with starting the uninstall task.`,
|
|
1164
1198
|
uninstallBatchBanner: (remainingInstallations) => log_color_1.LogColor.warn(`${log_symbols_1.default.info} ${chalk_1.default.bold(`Batch uninstallations are limited to ${installations_1.MAX_BATCH_UNINSTALLS} per request and there ${remainingInstallations > 1 ? `are ${remainingInstallations} installations` : 'is 1 installation'} remaining. Run the command multiple times to perform more uninstallations`)}`),
|
|
1165
1199
|
uninstallBatchProductionError: `${log_symbols_1.default.error} ${chalk_1.default.bold('Batch uninstallations are not supported in production environments.')}`
|
|
@@ -1488,6 +1522,15 @@ When errors occur during Forge command execution, error details will be sent to
|
|
|
1488
1522
|
}
|
|
1489
1523
|
}
|
|
1490
1524
|
},
|
|
1525
|
+
commandHelp: {
|
|
1526
|
+
groups: {
|
|
1527
|
+
quickStart: 'Quick Start',
|
|
1528
|
+
develop: 'Develop',
|
|
1529
|
+
manage: 'Manage',
|
|
1530
|
+
account: 'Account',
|
|
1531
|
+
cliExperience: 'CLI Experience'
|
|
1532
|
+
}
|
|
1533
|
+
},
|
|
1491
1534
|
dynamicTable: {
|
|
1492
1535
|
exiting: 'Exiting...'
|
|
1493
1536
|
},
|
|
@@ -1501,16 +1544,65 @@ When errors occur during Forge command execution, error details will be sent to
|
|
|
1501
1544
|
optionUiType: 'UI framework (ui-kit, custom-ui)',
|
|
1502
1545
|
optionProduct: 'target product (Jira, Confluence, etc.)',
|
|
1503
1546
|
optionDryRun: 'show what would be generated',
|
|
1504
|
-
optionForce: 'overwrite existing files',
|
|
1547
|
+
optionForce: 'overwrite existing files and upgrade conflicting dependencies to template versions',
|
|
1505
1548
|
optionNoInstall: 'skip installing dependencies',
|
|
1506
|
-
optionUpgradeDeps: 'upgrade existing dependencies to template versions',
|
|
1507
1549
|
promptSelectProduct: 'select a product',
|
|
1508
1550
|
promptSelectModule: 'select a module',
|
|
1509
1551
|
promptSelectUIFramework: 'select a UI framework',
|
|
1552
|
+
dryRunLabel: 'Dry run: ',
|
|
1553
|
+
filesToBeCreatedHeader: 'Files to be created:',
|
|
1554
|
+
fileChangeHeader: (fileName) => `${fileName} changes:`,
|
|
1555
|
+
depAdditionsHeader: 'Adding:',
|
|
1556
|
+
frontendDepHeader: 'Frontend dependencies:',
|
|
1557
|
+
depConflictsHeader: '⚠️ Dependency conflicts detected',
|
|
1558
|
+
depConflictsScopedHeader: (scope) => `⚠️ ${scope === 'frontend' ? 'Frontend' : 'Backend'} dependency conflicts detected`,
|
|
1559
|
+
depConflictsBlockedHeader: (scope) => `⚠️ ${scope === 'frontend' ? 'Frontend' : 'Backend'} dependency conflicts detected`,
|
|
1560
|
+
depConflictsColumnPackage: 'Package',
|
|
1561
|
+
depConflictsColumnCurrent: 'Your version',
|
|
1562
|
+
depConflictsColumnTemplate: 'Template version',
|
|
1563
|
+
depConflictsColumnStatus: 'Status',
|
|
1564
|
+
depConflictsStatusConflict: '⛔ CONFLICT',
|
|
1565
|
+
depConflictsStatusUpgraded: '⬆️ UPGRADED',
|
|
1566
|
+
depConflictsStatusDowngraded: '⬇️ DOWNGRADED',
|
|
1567
|
+
depConflictsStatusOk: '✅ OK',
|
|
1568
|
+
depConflictsSummary: (count) => `${count} conflict(s) found. Cannot proceed without resolution.`,
|
|
1569
|
+
depConflictsUpgradedSummary: (count) => `${count} conflicting package(s) upgraded to template versions.`,
|
|
1570
|
+
depConflictsOptionsHeader: 'Options:',
|
|
1571
|
+
depConflictsOptionForce: '--force Upgrade conflicting packages to template versions (still runs npm install)',
|
|
1572
|
+
depConflictsOptionNoInstall: '--no-install Add to package.json only, skip npm install',
|
|
1573
|
+
depConflictsOptionForceNoInstall: '--force --no-install Upgrade conflicting packages but skip npm install',
|
|
1574
|
+
depConflictsFooter: 'Resolve conflicts manually or re-run with --force to upgrade.',
|
|
1575
|
+
errorDepConflicts: (count) => `${count} dependency conflict(s) detected. Re-run with --force to upgrade, or --no-install to skip the install step.`,
|
|
1576
|
+
errorPackageJsonNotFound: (pkgPath) => `package.json not found at ${pkgPath}. Cannot determine existing dependencies.`,
|
|
1577
|
+
errorPackageJsonParseFailed: (pkgPath, message) => `Failed to parse package.json at ${pkgPath}: ${message}`,
|
|
1578
|
+
errorMissingDepVersion: (name) => `Template dependency "${name}" is missing an explicit version. Templates must declare a version for every dependency.`,
|
|
1579
|
+
warnNoManifest: (manifestPath) => `No manifest.yml found at ${manifestPath}. Manifest changes were not planned.`,
|
|
1580
|
+
warnNoFragment: 'Template did not provide a manifest fragment; manifest changes were not planned.',
|
|
1581
|
+
warnNoManifestDelta: 'Manifest fragment did not introduce any changes after merge.',
|
|
1582
|
+
warnAddedAppCompatibility: (existingProduct, newProduct) => `Adding a "${newProduct}" module to an app that already targets "${existingProduct}"; updated app.compatibility so the app must be installed to "${newProduct}" to see changes.`,
|
|
1583
|
+
warnUnsupportedFileOperations: (ops) => `Skipping ${ops.length} unsupported file operation(s): ${ops.join(', ')}. Only "create" operations are supported.`,
|
|
1584
|
+
warnViteConfigExists: (configPath) => `An existing vite.config.js at ${configPath} could not be merged automatically. Skipping vite config changes; re-run with --force to overwrite.`,
|
|
1585
|
+
errorViteConfigNestedInput: () => `Cannot safely merge vite.config.js: the existing "input" block contains a nested object. Merging would corrupt the file. Re-run with --force to regenerate the config from scratch, or edit the input map manually.`,
|
|
1586
|
+
errorApplyNotImplemented: 'module add apply mode is not implemented yet; re-run with --dry-run to preview changes.',
|
|
1510
1587
|
errorInvalidProduct: (product) => `Invalid product "${product}"`,
|
|
1511
1588
|
errorInvalidUIFramework: (uiFramework, moduleKey) => `Invalid UI framework "${uiFramework ?? 'unknown'}" for module "${moduleKey}"`,
|
|
1512
1589
|
errorFailedToResolveChoice: (choice) => `Failed to resolve selected module from choice "${choice}"`,
|
|
1513
|
-
errorFailedToDownloadTemplate: (moduleKey) => `Failed to download template for module "${moduleKey}"
|
|
1590
|
+
errorFailedToDownloadTemplate: (moduleKey) => `Failed to download template for module "${moduleKey}"`,
|
|
1591
|
+
errorMissingTemplateSource: (sourcePath) => `Template source file not found in extracted bundle: ${sourcePath}`,
|
|
1592
|
+
errorTargetConflict: (targets) => `File(s) already exist and would be overwritten:\n- ${targets.join('\n- ')}\n\nRe-run with --force to overwrite, or choose different values to generate unique filenames.`,
|
|
1593
|
+
errorZipExtractionFailed: (moduleKey, message) => `Failed to extract template bundle for "${moduleKey}": ${message}`,
|
|
1594
|
+
errorZipCleanupFailed: (moduleKey) => `Failed to clean up downloaded zip for "${moduleKey}".`,
|
|
1595
|
+
errorCacheDirMissing: (moduleKey) => `Cache directory is not set for module "${moduleKey}". Call prepareModuleMetadata before downloading the bundle.`,
|
|
1596
|
+
errorFailedToDownloadBundle: (moduleKey, message) => `Failed to download bundle for "${moduleKey}": ${message}`,
|
|
1597
|
+
errorCacheCleanupFailed: (cacheDir) => `Failed to clean up cache directory: ${cacheDir}`,
|
|
1598
|
+
errorNoBundle: (moduleKey, searched) => `No template bundle was found for "${moduleKey}". Searched the following paths:\n- ${searched.join('\n- ')}\n\nThe template archive may have failed to download, or its layout may not match expectations.`,
|
|
1599
|
+
errorNoFileOperations: (moduleKey, uiFramework) => `Template "${moduleKey}"${uiFramework ? ` (variant "${uiFramework}")` : ''} declares no "create" file operations; nothing to copy.`,
|
|
1600
|
+
warnDownloadFailed: (moduleKey, message) => `Failed to download template archive for "${moduleKey}": ${message}. File copy will be skipped.`,
|
|
1601
|
+
warnNoBundle: 'Template bundle was not downloaded; file copy was skipped.',
|
|
1602
|
+
warnInstallSkipped: '⚠️ Skipping install: Run npm install to install new dependencies.',
|
|
1603
|
+
infoReusingResource: (resourceKey) => `Reusing existing resource '${resourceKey}'`,
|
|
1604
|
+
errorResourceEntryConflict: (resourceKey, entryName, existing, incoming) => `Resource '${resourceKey}' already declares entry '${entryName}' as '${existing}', but the new module wants '${incoming}'. Choose a different moduleKey or remove the existing entry.`,
|
|
1605
|
+
errorResourcePathConflict: (resourceKey, existing, incoming) => `Resource '${resourceKey}' already declares path '${existing}', but the new module wants '${incoming}'. Resources sharing a key must share a path.`
|
|
1514
1606
|
},
|
|
1515
1607
|
list: {
|
|
1516
1608
|
description: 'list available module templates',
|
|
@@ -1527,9 +1619,11 @@ When errors occur during Forge command execution, error details will be sent to
|
|
|
1527
1619
|
bifrostIndexInvalid: 'Error: expected array of templates',
|
|
1528
1620
|
bifrostIndexFetchFailed: (status, statusText) => `Error: template fetch failed: ${status} ${statusText}`,
|
|
1529
1621
|
bifrostManifestFragmentFetchFailed: (status, statusText) => `Error: failed to fetch manifest fragment: ${status} ${statusText}`,
|
|
1530
|
-
|
|
1622
|
+
bifrostZipFetchFailed: (moduleKey, status, statusText) => `Error: failed to fetch template bundle for "${moduleKey}": ${status} ${statusText}`,
|
|
1623
|
+
duplicateModuleKey: (value) => `Module key "${value}" already exists in the manifest. Please enter a different value.`,
|
|
1531
1624
|
duplicateFunctionKey: (value) => `Function key "${value}" already exists. Please enter a different value.`,
|
|
1532
|
-
duplicateResourceKey: (value) => `Resource key "${value}" already exists. Please enter a different value
|
|
1625
|
+
duplicateResourceKey: (value) => `Resource key "${value}" already exists. Please enter a different value.`,
|
|
1626
|
+
duplicateKey: (value) => `"${value}" must be unique. Please enter a different value.`
|
|
1533
1627
|
}
|
|
1534
1628
|
}
|
|
1535
1629
|
};
|