@enterpriseai/cli 3.19.3 → 3.19.4
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/dist/commands/chat.d.ts.map +1 -1
- package/dist/commands/chat.js +116 -35
- package/dist/commands/chat.js.map +1 -1
- package/dist/commands/eai-managed-source-move.js +2 -2
- package/dist/commands/eai-managed-source-move.js.map +1 -1
- package/dist/commands/env.js +15 -2
- package/dist/commands/env.js.map +1 -1
- package/dist/commands/gofer.js +8 -1
- package/dist/commands/gofer.js.map +1 -1
- package/dist/commands/init.d.ts +2 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +155 -8
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +6 -2
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/provision.d.ts.map +1 -1
- package/dist/commands/provision.js +25 -8
- package/dist/commands/provision.js.map +1 -1
- package/dist/commands/publicapi.d.ts.map +1 -1
- package/dist/commands/publicapi.js +14 -2
- package/dist/commands/publicapi.js.map +1 -1
- package/dist/commands/resources.d.ts.map +1 -1
- package/dist/commands/resources.js +41 -20
- package/dist/commands/resources.js.map +1 -1
- package/dist/commands/tenant.js +39 -3
- package/dist/commands/tenant.js.map +1 -1
- package/dist/commands/types.d.ts +7 -0
- package/dist/commands/types.d.ts.map +1 -1
- package/dist/commands/types.js +118 -24
- package/dist/commands/types.js.map +1 -1
- package/dist/commands/verify.d.ts.map +1 -1
- package/dist/commands/verify.js +89 -44
- package/dist/commands/verify.js.map +1 -1
- package/dist/commands/vertical.d.ts.map +1 -1
- package/dist/commands/vertical.js +163 -15
- package/dist/commands/vertical.js.map +1 -1
- package/dist/index.js +22 -8
- package/dist/index.js.map +1 -1
- package/dist/lib/api.d.ts +21 -2
- package/dist/lib/api.d.ts.map +1 -1
- package/dist/lib/api.js +135 -34
- package/dist/lib/api.js.map +1 -1
- package/dist/lib/cloud-env.d.ts +1 -0
- package/dist/lib/cloud-env.d.ts.map +1 -1
- package/dist/lib/cloud-env.js +28 -15
- package/dist/lib/cloud-env.js.map +1 -1
- package/dist/lib/config.d.ts +4 -2
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +5 -1
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/eai-managed-source-client-types.d.ts +3 -0
- package/dist/lib/eai-managed-source-client-types.d.ts.map +1 -1
- package/dist/lib/object-type-export-filesystem.d.ts +13 -0
- package/dist/lib/object-type-export-filesystem.d.ts.map +1 -0
- package/dist/lib/object-type-export-filesystem.js +112 -0
- package/dist/lib/object-type-export-filesystem.js.map +1 -0
- package/dist/lib/object-type-export.d.ts +13 -0
- package/dist/lib/object-type-export.d.ts.map +1 -0
- package/dist/lib/object-type-export.js +173 -0
- package/dist/lib/object-type-export.js.map +1 -0
- package/dist/lib/output.d.ts.map +1 -1
- package/dist/lib/output.js +21 -1
- package/dist/lib/output.js.map +1 -1
- package/dist/lib/platform-diagnostics.d.ts +21 -0
- package/dist/lib/platform-diagnostics.d.ts.map +1 -0
- package/dist/lib/platform-diagnostics.js +50 -0
- package/dist/lib/platform-diagnostics.js.map +1 -0
- package/dist/lib/profile.d.ts +7 -2
- package/dist/lib/profile.d.ts.map +1 -1
- package/dist/lib/profile.js +139 -4
- package/dist/lib/profile.js.map +1 -1
- package/dist/lib/schema-builder.d.ts +2 -0
- package/dist/lib/schema-builder.d.ts.map +1 -1
- package/dist/lib/schema-builder.js +5 -0
- package/dist/lib/schema-builder.js.map +1 -1
- package/package.json +2 -2
- package/resources/deploy/eai-app-template/producer-pin.json +4 -4
- package/resources/linked-sources.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../src/commands/chat.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../src/commands/chat.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAyGpC,eAAO,MAAM,WAAW,SACgB,CAAC"}
|
package/dist/commands/chat.js
CHANGED
|
@@ -6,6 +6,120 @@ import { randomUUID } from 'node:crypto';
|
|
|
6
6
|
import chalk from 'chalk';
|
|
7
7
|
import { resolveCommandContext } from '../lib/context.js';
|
|
8
8
|
import * as out from '../lib/output.js';
|
|
9
|
+
import { safePlatformDiagnostics, formatSafePlatformFailure } from '../lib/platform-diagnostics.js';
|
|
10
|
+
class ChatStreamError extends Error {
|
|
11
|
+
}
|
|
12
|
+
async function printChatStream(body) {
|
|
13
|
+
const reader = body.getReader();
|
|
14
|
+
const decoder = new TextDecoder();
|
|
15
|
+
let buffer = '';
|
|
16
|
+
let dataLines = [];
|
|
17
|
+
let eventType = '';
|
|
18
|
+
const dispatchEvent = () => {
|
|
19
|
+
if (dataLines.length === 0) {
|
|
20
|
+
eventType = '';
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
const data = dataLines.join('\n');
|
|
24
|
+
dataLines = [];
|
|
25
|
+
const declaredType = eventType;
|
|
26
|
+
eventType = '';
|
|
27
|
+
if (data === '[DONE]') {
|
|
28
|
+
if (declaredType === 'error')
|
|
29
|
+
throw new ChatStreamError('Chat stream failed. Retry the request or contact support.');
|
|
30
|
+
return true;
|
|
31
|
+
}
|
|
32
|
+
let parsed;
|
|
33
|
+
try {
|
|
34
|
+
parsed = JSON.parse(data);
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
// Preserve legacy streams that send plain text data frames.
|
|
38
|
+
if (declaredType === 'error')
|
|
39
|
+
throw new ChatStreamError('Chat stream failed. Retry the request or contact support.');
|
|
40
|
+
process.stdout.write(data);
|
|
41
|
+
return false;
|
|
42
|
+
}
|
|
43
|
+
if (declaredType === 'error' && (!parsed || typeof parsed !== 'object' || Array.isArray(parsed))) {
|
|
44
|
+
throw new ChatStreamError('Chat stream failed. Retry the request or contact support.');
|
|
45
|
+
}
|
|
46
|
+
if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed))
|
|
47
|
+
return false;
|
|
48
|
+
const event = parsed;
|
|
49
|
+
const kind = event.type ?? event.event ?? declaredType;
|
|
50
|
+
if (declaredType === 'error' || event.type === 'error' || event.event === 'error') {
|
|
51
|
+
throw new ChatStreamError(formatSafePlatformFailure('Chat stream', safePlatformDiagnostics(502, {
|
|
52
|
+
...event, details: event.data,
|
|
53
|
+
})));
|
|
54
|
+
}
|
|
55
|
+
if (kind === 'done')
|
|
56
|
+
return true;
|
|
57
|
+
if (kind === 'token') {
|
|
58
|
+
if (typeof event.data !== 'string')
|
|
59
|
+
throw new ChatStreamError('Chat stream returned an invalid token');
|
|
60
|
+
process.stdout.write(event.data);
|
|
61
|
+
}
|
|
62
|
+
else if (typeof event.content === 'string') {
|
|
63
|
+
process.stdout.write(event.content);
|
|
64
|
+
}
|
|
65
|
+
else if (typeof event.text === 'string') {
|
|
66
|
+
process.stdout.write(event.text);
|
|
67
|
+
}
|
|
68
|
+
return false;
|
|
69
|
+
};
|
|
70
|
+
try {
|
|
71
|
+
let complete = false;
|
|
72
|
+
while (!complete) {
|
|
73
|
+
const { done, value } = await reader.read();
|
|
74
|
+
buffer += done ? decoder.decode() : decoder.decode(value, { stream: true });
|
|
75
|
+
while (true) {
|
|
76
|
+
const lineEnd = buffer.search(/[\r\n]/);
|
|
77
|
+
if (lineEnd < 0)
|
|
78
|
+
break;
|
|
79
|
+
// A CR may be the first half of a CRLF split across network chunks.
|
|
80
|
+
if (buffer[lineEnd] === '\r' && lineEnd === buffer.length - 1 && !done)
|
|
81
|
+
break;
|
|
82
|
+
const line = buffer.slice(0, lineEnd);
|
|
83
|
+
const delimiterLength = buffer[lineEnd] === '\r' && buffer[lineEnd + 1] === '\n' ? 2 : 1;
|
|
84
|
+
buffer = buffer.slice(lineEnd + delimiterLength);
|
|
85
|
+
if (line === '') {
|
|
86
|
+
complete = dispatchEvent();
|
|
87
|
+
if (complete)
|
|
88
|
+
break;
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
const colon = line.indexOf(':');
|
|
92
|
+
const field = colon < 0 ? line : line.slice(0, colon);
|
|
93
|
+
const rawValue = colon < 0 ? '' : line.slice(colon + 1);
|
|
94
|
+
const fieldValue = rawValue.startsWith(' ') ? rawValue.slice(1) : rawValue;
|
|
95
|
+
if (field === 'data')
|
|
96
|
+
dataLines.push(fieldValue);
|
|
97
|
+
else if (field === 'event')
|
|
98
|
+
eventType = fieldValue;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
if (done && !complete)
|
|
102
|
+
throw new ChatStreamError('Chat stream ended before completion');
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
catch (error) {
|
|
106
|
+
if (error instanceof ChatStreamError)
|
|
107
|
+
throw error;
|
|
108
|
+
throw new ChatStreamError('Chat stream could not be completed. Retry the request or contact support.');
|
|
109
|
+
}
|
|
110
|
+
finally {
|
|
111
|
+
// Stop the HTTP body even when a terminal frame arrives before EOF.
|
|
112
|
+
try {
|
|
113
|
+
await reader.cancel();
|
|
114
|
+
}
|
|
115
|
+
catch {
|
|
116
|
+
// Keep the original stream/provider failure if the body is already errored.
|
|
117
|
+
}
|
|
118
|
+
finally {
|
|
119
|
+
reader.releaseLock();
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
9
123
|
export const chatCommand = new Command('chat')
|
|
10
124
|
.description('Chat with AI workflows');
|
|
11
125
|
// ─── eai chat send ────────────────────────────────────────────────────────
|
|
@@ -60,42 +174,9 @@ chatCommand
|
|
|
60
174
|
out.error('No response body');
|
|
61
175
|
process.exit(1);
|
|
62
176
|
}
|
|
63
|
-
|
|
64
|
-
const reader = res.body.getReader();
|
|
65
|
-
const decoder = new TextDecoder();
|
|
66
|
-
let buffer = '';
|
|
67
|
-
while (true) {
|
|
68
|
-
const { done, value } = await reader.read();
|
|
69
|
-
if (done)
|
|
70
|
-
break;
|
|
71
|
-
buffer += decoder.decode(value, { stream: true });
|
|
72
|
-
const lines = buffer.split('\n');
|
|
73
|
-
buffer = lines.pop() || '';
|
|
74
|
-
for (const line of lines) {
|
|
75
|
-
if (line.startsWith('data: ')) {
|
|
76
|
-
const data = line.slice(6);
|
|
77
|
-
if (data === '[DONE]') {
|
|
78
|
-
out.blank();
|
|
79
|
-
out.success('Stream complete');
|
|
80
|
-
return;
|
|
81
|
-
}
|
|
82
|
-
try {
|
|
83
|
-
const parsed = JSON.parse(data);
|
|
84
|
-
if (parsed.content) {
|
|
85
|
-
process.stdout.write(parsed.content);
|
|
86
|
-
}
|
|
87
|
-
else if (parsed.text) {
|
|
88
|
-
process.stdout.write(parsed.text);
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
catch {
|
|
92
|
-
// Non-JSON data event, print raw
|
|
93
|
-
process.stdout.write(data);
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
}
|
|
177
|
+
await printChatStream(res.body);
|
|
98
178
|
out.blank();
|
|
179
|
+
out.success('Stream complete');
|
|
99
180
|
}
|
|
100
181
|
catch (err) {
|
|
101
182
|
out.error(err instanceof Error ? err.message : String(err));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat.js","sourceRoot":"","sources":["../../src/commands/chat.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,GAAG,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"chat.js","sourceRoot":"","sources":["../../src/commands/chat.ts"],"names":[],"mappings":"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"}
|
|
@@ -58,7 +58,7 @@ eaiManagedSourceCommand.command("move")
|
|
|
58
58
|
const source = validateCliManagedSourceOperation(await responseOperation(await client.getCliManagedSourceOperation(scope.tenantId, appKey, options.sourceOperation, scope.targetTenantId, scope.environment)), scope, { operationId: options.sourceOperation });
|
|
59
59
|
if (source.status !== "completed"
|
|
60
60
|
|| !Number.isSafeInteger(source.repository.id) || (source.repository.id ?? 0) < 1
|
|
61
|
-
|| !source.repository.nodeId || !/^[a-f0-9]{40}$/.test(source.review?.
|
|
61
|
+
|| !source.repository.nodeId || !/^[a-f0-9]{40}$/.test(source.review?.mergedCommitSha || "")) {
|
|
62
62
|
fail("SOURCE_MOVE_NOT_READY", "The exact source operation lacks completed review and immutable repository evidence.", "Finish the original EAI-managed deployment, then retry this exact source operation.");
|
|
63
63
|
}
|
|
64
64
|
const deployment = await readUnifiedExactOperation(client, scope.tenantId, scope.targetTenantId, appKey, options.sourceOperation);
|
|
@@ -66,7 +66,7 @@ eaiManagedSourceCommand.command("move")
|
|
|
66
66
|
|| deployment.environment !== scope.environment
|
|
67
67
|
|| classifyManagedOperationStatus(deployment) !== "succeeded"
|
|
68
68
|
|| deployment.sourceRevision?.repositoryId !== source.repository.id
|
|
69
|
-
|| deployment.sourceRevision?.sourceCommitSha !== source.review?.
|
|
69
|
+
|| deployment.sourceRevision?.sourceCommitSha !== source.review?.mergedCommitSha) {
|
|
70
70
|
fail("SOURCE_MOVE_DEPLOYMENT_MISMATCH", "The exact CLI source is not the observed active deployment.", "Resolve the original deployment and read its current source receipt before moving ownership.");
|
|
71
71
|
}
|
|
72
72
|
const url = new URL(`/platform/apps/${encodeURIComponent(appKey)}/deployment`, cliManagedSourceMovePortalOrigin(context.publicApiUrl));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eai-managed-source-move.js","sourceRoot":"","sources":["../../src/commands/eai-managed-source-move.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC3E,OAAO,EAAE,8BAA8B,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAC1G,OAAO,EAAE,+BAA+B,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAC9G,OAAO,EAAE,gCAAgC,EAAE,MAAM,0CAA0C,CAAC;AAC5F,OAAO,EAAE,iBAAiB,EAAE,iCAAiC,EAAE,MAAM,+CAA+C,CAAC;AAErH,OAAO,KAAK,GAAG,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AACrF,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,kCAAkC,EAAE,MAAM,kCAAkC,CAAC;AAEtF,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAWjC,mGAAmG;AACnG,MAAM,CAAC,MAAM,uBAAuB,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC;KACzD,WAAW,CAAC,wCAAwC,CAAC,CAAC;AAEzD,uBAAuB,CAAC,UAAU,CAAC,kCAAkC,EAAE,CAAC,CAAC;AAEzE,uBAAuB,CAAC,OAAO,CAAC,MAAM,CAAC;KACpC,WAAW,CAAC,6DAA6D,CAAC;KAC1E,QAAQ,CAAC,WAAW,EAAE,sBAAsB,CAAC;KAC7C,cAAc,CAAC,kBAAkB,EAAE,kCAAkC,CAAC;KACtE,cAAc,CAAC,yBAAyB,EAAE,+BAA+B,CAAC;KAC1E,cAAc,CAAC,6BAA6B,EAAE,8BAA8B,CAAC;KAC7E,cAAc,CAAC,yBAAyB,EAAE,mCAAmC,CAAC;KAC9E,MAAM,CAAC,WAAW,EAAE,6DAA6D,CAAC;KAClF,MAAM,CAAC,mBAAmB,EAAE,2BAA2B,EAAE,MAAM,CAAC;KAChE,MAAM,CAAC,KAAK,EAAE,MAAc,EAAE,OAAoB,EAAE,EAAE;IACrD,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IACxC,IAAI,CAAC;QACH,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;YAC3C,IAAI,CAAC,gBAAgB,EAAE,6BAA6B,EAAE,qCAAqC,CAAC,CAAC;QAC/F,CAAC;QACD,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC;eAClF,CAAC,2BAA2B,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC;eACrD,CAAC,+BAA+B,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC;YACpE,IAAI,CAAC,2BAA2B,EAAE,+DAA+D,EAAE,yEAAyE,CAAC,CAAC;QAChL,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,qBAAqB,CAAC;YAC1C,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,WAAW,EAAE,KAAK;YAClB,YAAY,EAAE,IAAI;YAClB,oBAAoB,EAAE,0BAA0B;SACjD,CAAC,CAAC;QACH,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;YACjE,IAAI,CAAC,2BAA2B,EAAE,2DAA2D,EAAE,uEAAuE,CAAC,CAAC;QAC1K,CAAC;QACD,MAAM,KAAK,GAA0B;YACnC,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,cAAc,EAAE,OAAO,CAAC,cAAc;YACtC,WAAW,EAAE,OAAO,CAAC,WAAmD;YACxE,MAAM;YACN,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG;SAC5B,CAAC;QACF,MAAM,MAAM,GAAG,IAAI,iBAAiB,CAAC,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC3E,MAAM,MAAM,GAAG,iCAAiC,CAC9C,MAAM,iBAAiB,CAAC,MAAM,MAAM,CAAC,4BAA4B,CAC/D,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,eAAe,EAAE,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,WAAW,CACzF,CAAC,EACF,KAAK,EACL,EAAE,WAAW,EAAE,OAAO,CAAC,eAAe,EAAE,CACzC,CAAC;QACF,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW;eAC5B,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC;eAC9E,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"eai-managed-source-move.js","sourceRoot":"","sources":["../../src/commands/eai-managed-source-move.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/env.js
CHANGED
|
@@ -55,11 +55,14 @@ Examples:
|
|
|
55
55
|
}
|
|
56
56
|
const spinner = ora(`Pulling config from ${store} (label: ${label})`).start();
|
|
57
57
|
try {
|
|
58
|
-
const
|
|
58
|
+
const cloudValues = await pullCloudEnvValues({
|
|
59
59
|
environment: options.env,
|
|
60
60
|
label,
|
|
61
61
|
includeSecrets: options.includeSecrets,
|
|
62
62
|
});
|
|
63
|
+
// This is a workstation-local CLI selector, never cloud app configuration.
|
|
64
|
+
const patches = Object.fromEntries(Object.entries(cloudValues.patches).filter(([key]) => key !== 'EAI_PROFILE'));
|
|
65
|
+
const secretRefs = cloudValues.secretRefs.filter((ref) => ref.key !== 'EAI_PROFILE');
|
|
63
66
|
spinner.succeed(`Found ${Object.keys(patches).length + (!options.includeSecrets ? secretRefs.length : 0)} config values`);
|
|
64
67
|
for (const [key, value] of Object.entries(patches)) {
|
|
65
68
|
if (secretRefs.some((ref) => ref.key === key)) {
|
|
@@ -160,7 +163,11 @@ envCommand
|
|
|
160
163
|
if (!label) {
|
|
161
164
|
exitWithError(ErrorCode.E303, { field: '--label or NEXT_PUBLIC_APP_NAME' });
|
|
162
165
|
}
|
|
163
|
-
|
|
166
|
+
if (options.key === 'EAI_PROFILE') {
|
|
167
|
+
out.info('EAI_PROFILE is a local CLI selector and is not synced to cloud configuration.');
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
const keysToSync = (options.key ? [options.key] : Object.keys(env)).filter((key) => key !== 'EAI_PROFILE');
|
|
164
171
|
let store;
|
|
165
172
|
try {
|
|
166
173
|
store = resolveAppConfigStore(options.env);
|
|
@@ -171,6 +178,7 @@ envCommand
|
|
|
171
178
|
}
|
|
172
179
|
const spinner = ora(`Pushing ${keysToSync.length} values to ${store} (label: ${label})`).start();
|
|
173
180
|
let pushed = 0;
|
|
181
|
+
const failedKeys = [];
|
|
174
182
|
for (const key of keysToSync) {
|
|
175
183
|
if (!env[key])
|
|
176
184
|
continue;
|
|
@@ -189,9 +197,14 @@ envCommand
|
|
|
189
197
|
pushed++;
|
|
190
198
|
}
|
|
191
199
|
catch (_err) {
|
|
200
|
+
failedKeys.push(key);
|
|
192
201
|
spinner.warn(`Failed to push ${key}`);
|
|
193
202
|
}
|
|
194
203
|
}
|
|
204
|
+
if (failedKeys.length > 0) {
|
|
205
|
+
spinner.fail(`Pushed ${pushed} values to ${store} (label: ${label}); ${failedKeys.length} failed: ${failedKeys.join(', ')}`);
|
|
206
|
+
process.exit(1);
|
|
207
|
+
}
|
|
195
208
|
spinner.succeed(`Pushed ${pushed} values to ${store} (label: ${label})`);
|
|
196
209
|
});
|
|
197
210
|
function truncate(s, max) {
|
package/dist/commands/env.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/commands/env.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC9E,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,KAAK,GAAG,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEjE,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAEjC,KAAK,UAAU,YAAY,CAAC,IAAc;IACxC,MAAM,UAAU,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAC/C,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC;KACzC,WAAW,CAAC,8BAA8B,CAAC,CAAC;AAE/C,8EAA8E;AAE9E,UAAU;KACP,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,uCAAuC,CAAC;KACpD,MAAM,CAAC,eAAe,EAAE,iEAAiE,CAAC;KAC1F,MAAM,CAAC,iBAAiB,EAAE,yCAAyC,CAAC;KACpE,MAAM,CAAC,mBAAmB,EAAE,8BAA8B,EAAE,KAAK,CAAC;KAClE,WAAW,CAAC,OAAO,EAAE;;;;GAIrB,CAAC;KACD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,IAAI,GAAG,MAAM,eAAe,EAAE,CAAC;IACrC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAED,4CAA4C;IAC5C,MAAM,WAAW,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC;IAC5C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,WAAW,CAAC,oBAAoB,CAAC;IAChE,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,aAAa,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,+CAA+C,EAAE,CAAC,CAAC;IAC5F,CAAC;IAED,IAAI,KAAa,CAAC;IAClB,IAAI,CAAC;QACH,KAAK,GAAG,qBAAqB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC7C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,OAAO,GAAG,GAAG,CAAC,uBAAuB,KAAK,YAAY,KAAK,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IAE9E,IAAI,CAAC;QACH,MAAM,
|
|
1
|
+
{"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/commands/env.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/gofer.js
CHANGED
|
@@ -47,7 +47,14 @@ goferCommand
|
|
|
47
47
|
firstRefresh: plan.firstRefresh,
|
|
48
48
|
bundle: plan.bundle,
|
|
49
49
|
summary: plan.summary,
|
|
50
|
-
items: actionableItems
|
|
50
|
+
items: actionableItems.map((item) => ({
|
|
51
|
+
relativePath: item.relativePath,
|
|
52
|
+
action: item.action,
|
|
53
|
+
source: item.source,
|
|
54
|
+
desiredHash: item.desiredHash,
|
|
55
|
+
currentHash: item.currentHash,
|
|
56
|
+
executable: item.executable,
|
|
57
|
+
})),
|
|
51
58
|
});
|
|
52
59
|
return;
|
|
53
60
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gofer.js","sourceRoot":"","sources":["../../src/commands/gofer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,GAAG,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAEpE,SAAS,cAAc,CAAC,MAAc;IACpC,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,KAAK;YACR,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,MAAM,CAAC;QACpC,KAAK,QAAQ;YACX,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,SAAS,CAAC;QACzC,KAAK,cAAc;YACjB,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,QAAQ,CAAC;QACxC,KAAK,QAAQ;YACX,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,SAAS,CAAC;QACzC,KAAK,UAAU;YACb,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC;QAC3C,KAAK,iBAAiB;YACpB,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,kBAAkB,CAAC;QAClD;YACE,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,SAAS,YAAY,CAAC;IAChD,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC;KAC7C,WAAW,CAAC,kDAAkD,CAAC,CAAC;AAEnE,YAAY;KACT,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,4FAA4F,CAAC;KACzG,MAAM,CAAC,SAAS,EAAE,6CAA6C,EAAE,KAAK,CAAC;KACvE,MAAM,CAAC,SAAS,EAAE,2DAA2D,EAAE,KAAK,CAAC;KACrF,MAAM,CAAC,mBAAmB,EAAE,2BAA2B,EAAE,MAAM,CAAC;KAChE,MAAM,CAAC,KAAK,EAAE,OAA8D,EAAE,EAAE;IAC/E,MAAM,IAAI,GAAG,MAAM,eAAe,EAAE,CAAC;IACrC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,GAAG,CAAC,KAAK,CAAC,uEAAuE,CAAC,CAAC;QACnF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,gBAAgB,GAAG,MAAM,sBAAsB,CAAC,IAAI,CAAC,CAAC;IAC5D,MAAM,IAAI,GAAG,MAAM,gBAAgB,CAAC,IAAI,EAAE,gBAAgB,CAAC,QAAQ,EAAE,EAAE,eAAe,EAAE,cAAc,EAAE,CAAC,CAAC;IAC1G,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC;IAEjF,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QAC9B,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,GAAG,CAAC,IAAI,CAAC;gBACP,IAAI,EAAE,OAAO;gBACb,WAAW,EAAE,IAAI;gBACjB,YAAY,EAAE,IAAI,CAAC,YAAY;gBAC/B,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,KAAK,EAAE,eAAe;
|
|
1
|
+
{"version":3,"file":"gofer.js","sourceRoot":"","sources":["../../src/commands/gofer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,GAAG,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAEpE,SAAS,cAAc,CAAC,MAAc;IACpC,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,KAAK;YACR,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,MAAM,CAAC;QACpC,KAAK,QAAQ;YACX,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,SAAS,CAAC;QACzC,KAAK,cAAc;YACjB,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,QAAQ,CAAC;QACxC,KAAK,QAAQ;YACX,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,SAAS,CAAC;QACzC,KAAK,UAAU;YACb,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC;QAC3C,KAAK,iBAAiB;YACpB,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,kBAAkB,CAAC;QAClD;YACE,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,SAAS,YAAY,CAAC;IAChD,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC;KAC7C,WAAW,CAAC,kDAAkD,CAAC,CAAC;AAEnE,YAAY;KACT,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,4FAA4F,CAAC;KACzG,MAAM,CAAC,SAAS,EAAE,6CAA6C,EAAE,KAAK,CAAC;KACvE,MAAM,CAAC,SAAS,EAAE,2DAA2D,EAAE,KAAK,CAAC;KACrF,MAAM,CAAC,mBAAmB,EAAE,2BAA2B,EAAE,MAAM,CAAC;KAChE,MAAM,CAAC,KAAK,EAAE,OAA8D,EAAE,EAAE;IAC/E,MAAM,IAAI,GAAG,MAAM,eAAe,EAAE,CAAC;IACrC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,GAAG,CAAC,KAAK,CAAC,uEAAuE,CAAC,CAAC;QACnF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,gBAAgB,GAAG,MAAM,sBAAsB,CAAC,IAAI,CAAC,CAAC;IAC5D,MAAM,IAAI,GAAG,MAAM,gBAAgB,CAAC,IAAI,EAAE,gBAAgB,CAAC,QAAQ,EAAE,EAAE,eAAe,EAAE,cAAc,EAAE,CAAC,CAAC;IAC1G,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC;IAEjF,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QAC9B,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,GAAG,CAAC,IAAI,CAAC;gBACP,IAAI,EAAE,OAAO;gBACb,WAAW,EAAE,IAAI;gBACjB,YAAY,EAAE,IAAI,CAAC,YAAY;gBAC/B,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,KAAK,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;oBACpC,YAAY,EAAE,IAAI,CAAC,YAAY;oBAC/B,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,WAAW,EAAE,IAAI,CAAC,WAAW;oBAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;oBAC7B,UAAU,EAAE,IAAI,CAAC,UAAU;iBAC5B,CAAC,CAAC;aACJ,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QACvE,GAAG,CAAC,IAAI,CAAC;YACP,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,IAAI;YACjB,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,eAAe,EAAE,MAAM,CAAC,eAAe;SACxC,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,GAAG,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IAC7B,GAAG,CAAC,KAAK,EAAE,CAAC;IACZ,GAAG,CAAC,OAAO,CAAC,iBAAiB,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEhD,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QAC/C,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;QAC3E,GAAG,CAAC,OAAO,CAAC,iBAAiB,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC,CAAC;IAC9G,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACxB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;IAED,IAAI,gBAAgB,CAAC,MAAM,KAAK,sBAAsB,EAAE,CAAC;QACvD,GAAG,CAAC,IAAI,CAAC,uKAAuK,CAAC,CAAC;IACpL,CAAC;SAAM,IAAI,gBAAgB,CAAC,MAAM,KAAK,4BAA4B,EAAE,CAAC;QACpE,GAAG,CAAC,IAAI,CAAC,wJAAwJ,CAAC,CAAC;IACrK,CAAC;IAED,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;QACtB,GAAG,CAAC,IAAI,CAAC,4IAA4I,CAAC,CAAC;IACzJ,CAAC;IAED,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;QACvD,GAAG,CAAC,OAAO,CAAC,8CAA8C,CAAC,CAAC;QAC5D,OAAO;IACT,CAAC;IAED,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,GAAG,CAAC,KAAK,EAAE,CAAC;QACZ,KAAK,MAAM,IAAI,IAAI,eAAe,EAAE,CAAC;YACnC,OAAO,CAAC,GAAG,CAAC,KAAK,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;QACxE,CAAC;QAED,GAAG,CAAC,KAAK,EAAE,CAAC;QACZ,GAAG,CAAC,KAAK,CAAC;YACR,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACnC,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACxC,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACxC,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAC7C,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;SAC9C,CAAC,CAAC;IACL,CAAC;IAED,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,GAAG,CAAC,KAAK,EAAE,CAAC;QACZ,IAAI,IAAI,CAAC,YAAY,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtD,GAAG,CAAC,IAAI,CAAC,qIAAqI,CAAC,CAAC;QAClJ,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,IAAI,CAAC,wIAAwI,CAAC,CAAC;QACrJ,CAAC;QACD,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IACvE,GAAG,CAAC,KAAK,EAAE,CAAC;IACZ,IAAI,IAAI,CAAC,YAAY,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtD,GAAG,CAAC,OAAO,CAAC,gHAAgH,CAAC,CAAC;IAChI,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,OAAO,CAAC,iCAAiC,CAAC,CAAC;IACjD,CAAC;IACD,GAAG,CAAC,KAAK,CAAC;QACR,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACvC,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC3C,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC3C,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACjD,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;KAC/C,CAAC,CAAC;IAEH,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;QAC3B,GAAG,CAAC,IAAI,CAAC,qBAAqB,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACpD,GAAG,CAAC,IAAI,CAAC,0IAA0I,CAAC,CAAC;IACvJ,CAAC;AACH,CAAC,CAAC,CAAC"}
|
package/dist/commands/init.d.ts
CHANGED
|
@@ -106,6 +106,8 @@ interface ExistingAppSelection {
|
|
|
106
106
|
}
|
|
107
107
|
/** Select one exact app enrollment and derive its recorded runtime tenant. */
|
|
108
108
|
export declare function selectExistingAppSelection(payload: unknown, requestedAppKey: string): ExistingAppSelection;
|
|
109
|
+
/** Serialize init writers; existing-target rename is atomic, not a filesystem compare-and-swap. */
|
|
110
|
+
export declare function updateInitProjectFile(targetDir: string, name: ".gitignore" | ".env.local", update: (content: Buffer) => Buffer, mode?: number): Promise<void>;
|
|
109
111
|
export declare function isMissingGitIdentity(error: unknown): boolean;
|
|
110
112
|
export declare function describeGitCommitFailure(error: unknown): string;
|
|
111
113
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/init.js
CHANGED
|
@@ -6,7 +6,8 @@ import { execFile } from "node:child_process";
|
|
|
6
6
|
import { createRequire } from "node:module";
|
|
7
7
|
import { tmpdir } from "node:os";
|
|
8
8
|
import { promisify } from "node:util";
|
|
9
|
-
import {
|
|
9
|
+
import { constants } from "node:fs";
|
|
10
|
+
import { readFile, writeFile, access, mkdir, rm, cp, mkdtemp, chmod, realpath, lstat, open, link, rename, unlink, } from "node:fs/promises";
|
|
10
11
|
import { basename, join, resolve } from "node:path";
|
|
11
12
|
import { randomBytes } from "node:crypto";
|
|
12
13
|
import ora from "ora";
|
|
@@ -19,7 +20,7 @@ import { browserLogin, isAuthenticated, loadTokens, resolveAuthConfig, storeToke
|
|
|
19
20
|
import { publicApiUrlForHomeRegion, resolveActiveTenantContext, resolveMainCompanyTenantId, resolvePublicApiUrl, } from "../lib/tenant-context.js";
|
|
20
21
|
import { buildTenantHierarchy, promptForTenantFromHierarchy, } from "../lib/tenant-hierarchy.js";
|
|
21
22
|
import { isManagedPublicRequestTimeout, parseApiError, readManagedPublicResponseText, PlatformAPIClient, } from "../lib/api.js";
|
|
22
|
-
import { entraScopeEnvPatch, findProjectRoot,
|
|
23
|
+
import { entraScopeEnvPatch, findProjectRoot, patchEnvContent } from "../lib/config.js";
|
|
23
24
|
import { pullCloudEnvValues } from "../lib/cloud-env.js";
|
|
24
25
|
import { findGuidance } from "../lib/error-guidance/match.js";
|
|
25
26
|
import { formatGuidanceText } from "../lib/error-guidance/render.js";
|
|
@@ -528,13 +529,16 @@ Use --no-gofer only when you need a bare app scaffold.
|
|
|
528
529
|
// Step 3: Generate .env.local with placeholders
|
|
529
530
|
const envSpinner = startEaiStep("Generating .env.local...");
|
|
530
531
|
try {
|
|
532
|
+
await ensureLocalEnvIgnored(targetDir);
|
|
531
533
|
const envContent = generateEnvFile(initOptions);
|
|
532
|
-
await
|
|
534
|
+
await updateInitProjectFile(targetDir, ".env.local", () => Buffer.from(envContent), 0o600);
|
|
533
535
|
await hydrateEnvFromLoginContext(targetDir, initOptions.name, initOptions.parentTenantId, initOptions.tenantId, initOptions.tenantHomeRegion, initOptions.appKey);
|
|
534
536
|
envSpinner.succeed("Generated .env.local");
|
|
535
537
|
}
|
|
536
|
-
catch (
|
|
538
|
+
catch (err) {
|
|
537
539
|
envSpinner.fail("Failed to generate .env.local");
|
|
540
|
+
out.error(errMsg(err));
|
|
541
|
+
process.exit(1);
|
|
538
542
|
}
|
|
539
543
|
// Step 4: Generate Object Types scaffold
|
|
540
544
|
const typesSpinner = startEaiStep("Creating Object Types scaffold...");
|
|
@@ -1115,7 +1119,7 @@ async function provisionEntraInline(targetDir, appName, tenantId, publicApiUrl)
|
|
|
1115
1119
|
}
|
|
1116
1120
|
const scopeEnv = entraScopeEnvPatch(result.scopes);
|
|
1117
1121
|
if (result.clientSecret) {
|
|
1118
|
-
await
|
|
1122
|
+
await patchInitEnvFile(targetDir, {
|
|
1119
1123
|
ENTRA_CLIENT_ID: result.clientId,
|
|
1120
1124
|
ENTRA_CLIENT_SECRET: result.clientSecret,
|
|
1121
1125
|
AUTH_URL: authEndpointUrl,
|
|
@@ -1128,7 +1132,7 @@ async function provisionEntraInline(targetDir, appName, tenantId, publicApiUrl)
|
|
|
1128
1132
|
return true;
|
|
1129
1133
|
}
|
|
1130
1134
|
if (result.existing) {
|
|
1131
|
-
await
|
|
1135
|
+
await patchInitEnvFile(targetDir, {
|
|
1132
1136
|
ENTRA_CLIENT_ID: result.clientId,
|
|
1133
1137
|
AUTH_URL: authEndpointUrl,
|
|
1134
1138
|
NEXTAUTH_URL: authSiteUrl,
|
|
@@ -1168,7 +1172,7 @@ async function hydrateCloudSecret(targetDir, appName) {
|
|
|
1168
1172
|
if (!secret) {
|
|
1169
1173
|
return false;
|
|
1170
1174
|
}
|
|
1171
|
-
await
|
|
1175
|
+
await patchInitEnvFile(targetDir, { ENTRA_CLIENT_SECRET: secret });
|
|
1172
1176
|
return true;
|
|
1173
1177
|
}
|
|
1174
1178
|
catch {
|
|
@@ -1516,6 +1520,9 @@ async function hydrateEnvFromLoginContext(targetDir, appName, parentTenantId, pl
|
|
|
1516
1520
|
const envKey = appName.replace(/-/g, "_").toUpperCase();
|
|
1517
1521
|
const regionalPublicApiUrl = publicApiUrlForHomeRegion(tenantHomeRegion);
|
|
1518
1522
|
const profileName = getActiveProfile();
|
|
1523
|
+
// Persist only the selector. Private profile auth/API settings and CLI tokens
|
|
1524
|
+
// remain in the user's local CLI configuration, outside the app repository.
|
|
1525
|
+
patches.EAI_PROFILE = profileName;
|
|
1519
1526
|
const profileConfig = await loadProfileConfig(profileName);
|
|
1520
1527
|
if (profileConfig?.publicApiUrl) {
|
|
1521
1528
|
patches.BASE_URL_PUBLIC_API = profileConfig.publicApiUrl;
|
|
@@ -1565,7 +1572,147 @@ async function hydrateEnvFromLoginContext(targetDir, appName, parentTenantId, pl
|
|
|
1565
1572
|
patches.NEXT_PUBLIC_EAI_APP_KEY = appKey;
|
|
1566
1573
|
}
|
|
1567
1574
|
if (Object.keys(patches).length > 0) {
|
|
1568
|
-
await
|
|
1575
|
+
await patchInitEnvFile(targetDir, patches);
|
|
1576
|
+
}
|
|
1577
|
+
}
|
|
1578
|
+
/** Apply every init hydration/provisioning patch through the protected credential writer. */
|
|
1579
|
+
async function patchInitEnvFile(targetDir, patches) {
|
|
1580
|
+
await updateInitProjectFile(targetDir, ".env.local", content => Buffer.from(patchEnvContent(content.toString("utf8"), patches)), 0o600);
|
|
1581
|
+
}
|
|
1582
|
+
async function ensureLocalEnvIgnored(targetDir) {
|
|
1583
|
+
await updateInitProjectFile(targetDir, ".gitignore", (content) => {
|
|
1584
|
+
// Last-match precedence also protects custom templates which unignore env files.
|
|
1585
|
+
const separator = content.length && content[content.length - 1] !== 10 ? "\n" : "";
|
|
1586
|
+
return Buffer.concat([content, Buffer.from(`${separator}\n# Local app credentials and EAI CLI profile selector\n/.env.local\n/.env.local.eai-*.tmp\n`)]);
|
|
1587
|
+
});
|
|
1588
|
+
}
|
|
1589
|
+
/** Serialize init writers; existing-target rename is atomic, not a filesystem compare-and-swap. */
|
|
1590
|
+
export async function updateInitProjectFile(targetDir, name, update, mode) {
|
|
1591
|
+
const root = await realpath(targetDir);
|
|
1592
|
+
const parent = await lstat(root);
|
|
1593
|
+
const lockPath = join(root, `${name}.eai-init.lock`);
|
|
1594
|
+
const lock = await open(lockPath, constants.O_WRONLY | constants.O_CREAT | constants.O_EXCL | (constants.O_NOFOLLOW || 0), 0o600);
|
|
1595
|
+
const ownedLock = await lock.stat();
|
|
1596
|
+
const assertLock = async () => {
|
|
1597
|
+
const current = await lstat(lockPath);
|
|
1598
|
+
if (!current.isFile() || current.nlink !== 1 || current.dev !== ownedLock.dev || current.ino !== ownedLock.ino) {
|
|
1599
|
+
throw new Error(`Project ${name} initialization lock changed; inspect the project files before retrying.`);
|
|
1600
|
+
}
|
|
1601
|
+
};
|
|
1602
|
+
const releaseOwnedLock = async () => {
|
|
1603
|
+
await lock.close();
|
|
1604
|
+
try {
|
|
1605
|
+
const current = await lstat(lockPath);
|
|
1606
|
+
if (current.isFile() && current.nlink === 1 && current.dev === ownedLock.dev && current.ino === ownedLock.ino)
|
|
1607
|
+
await unlink(lockPath);
|
|
1608
|
+
}
|
|
1609
|
+
catch (error) {
|
|
1610
|
+
if (error.code !== "ENOENT")
|
|
1611
|
+
throw error;
|
|
1612
|
+
}
|
|
1613
|
+
};
|
|
1614
|
+
try {
|
|
1615
|
+
await assertLock();
|
|
1616
|
+
await updateLockedInitProjectFile(root, parent, name, update, mode, assertLock);
|
|
1617
|
+
}
|
|
1618
|
+
finally {
|
|
1619
|
+
await releaseOwnedLock();
|
|
1620
|
+
}
|
|
1621
|
+
}
|
|
1622
|
+
async function updateLockedInitProjectFile(root, parent, name, update, mode, assertLock) {
|
|
1623
|
+
const path = join(root, name);
|
|
1624
|
+
const maxBytes = 1024 * 1024;
|
|
1625
|
+
const unsafe = () => new Error(`Project ${name} must be an unlinked regular file within 1 MiB.`);
|
|
1626
|
+
const sameFile = (left, right) => left.dev === right.dev && left.ino === right.ino
|
|
1627
|
+
&& left.size === right.size && left.mtimeMs === right.mtimeMs && left.ctimeMs === right.ctimeMs
|
|
1628
|
+
&& left.mode === right.mode && right.isFile() && right.nlink === 1;
|
|
1629
|
+
const statLeaf = async () => {
|
|
1630
|
+
try {
|
|
1631
|
+
return await lstat(path);
|
|
1632
|
+
}
|
|
1633
|
+
catch (error) {
|
|
1634
|
+
if (error.code === "ENOENT")
|
|
1635
|
+
return null;
|
|
1636
|
+
throw error;
|
|
1637
|
+
}
|
|
1638
|
+
};
|
|
1639
|
+
const original = await statLeaf();
|
|
1640
|
+
if (original && (!original.isFile() || original.isSymbolicLink() || original.nlink !== 1 || original.size > maxBytes))
|
|
1641
|
+
throw unsafe();
|
|
1642
|
+
let content = Buffer.alloc(0);
|
|
1643
|
+
if (original) {
|
|
1644
|
+
const file = await open(path, constants.O_RDONLY | (constants.O_NOFOLLOW || 0) | (constants.O_NONBLOCK || 0));
|
|
1645
|
+
try {
|
|
1646
|
+
const opened = await file.stat();
|
|
1647
|
+
if (!sameFile(original, opened))
|
|
1648
|
+
throw unsafe();
|
|
1649
|
+
const buffer = Buffer.alloc(maxBytes + 1);
|
|
1650
|
+
let length = 0;
|
|
1651
|
+
while (length < buffer.length) {
|
|
1652
|
+
const { bytesRead } = await file.read(buffer, length, buffer.length - length, null);
|
|
1653
|
+
if (!bytesRead)
|
|
1654
|
+
break;
|
|
1655
|
+
length += bytesRead;
|
|
1656
|
+
}
|
|
1657
|
+
if (length !== original.size || length > maxBytes || !sameFile(original, await file.stat()))
|
|
1658
|
+
throw unsafe();
|
|
1659
|
+
content = buffer.subarray(0, length);
|
|
1660
|
+
}
|
|
1661
|
+
finally {
|
|
1662
|
+
await file.close();
|
|
1663
|
+
}
|
|
1664
|
+
}
|
|
1665
|
+
const assertUnchanged = async () => {
|
|
1666
|
+
const current = await statLeaf();
|
|
1667
|
+
const parentAfter = await lstat(root);
|
|
1668
|
+
if ((original ? !current || !sameFile(original, current) : current !== null)
|
|
1669
|
+
|| parent.dev !== parentAfter.dev || parent.ino !== parentAfter.ino || !parentAfter.isDirectory()) {
|
|
1670
|
+
throw new Error(`Project ${name} changed during initialization; retry after checking the project files.`);
|
|
1671
|
+
}
|
|
1672
|
+
};
|
|
1673
|
+
await assertUnchanged();
|
|
1674
|
+
const updated = update(content);
|
|
1675
|
+
const temporary = join(root, `${name}.eai-${randomBytes(16).toString("hex")}.tmp`);
|
|
1676
|
+
const file = await open(temporary, constants.O_WRONLY | constants.O_CREAT | constants.O_EXCL | (constants.O_NOFOLLOW || 0), 0o600);
|
|
1677
|
+
const ownedTemporary = await file.stat();
|
|
1678
|
+
const removeOwnedTemporary = async () => {
|
|
1679
|
+
try {
|
|
1680
|
+
const current = await lstat(temporary);
|
|
1681
|
+
if (current.isFile() && current.dev === ownedTemporary.dev && current.ino === ownedTemporary.ino)
|
|
1682
|
+
await unlink(temporary);
|
|
1683
|
+
}
|
|
1684
|
+
catch (error) {
|
|
1685
|
+
if (error.code !== "ENOENT")
|
|
1686
|
+
throw error;
|
|
1687
|
+
}
|
|
1688
|
+
};
|
|
1689
|
+
try {
|
|
1690
|
+
await file.writeFile(updated);
|
|
1691
|
+
await file.chmod(mode ?? (original ? original.mode & 0o777 : 0o666 & ~process.umask()));
|
|
1692
|
+
await file.sync();
|
|
1693
|
+
const written = await file.stat();
|
|
1694
|
+
if (!sameFile(written, await lstat(temporary)))
|
|
1695
|
+
throw unsafe();
|
|
1696
|
+
await assertLock();
|
|
1697
|
+
await assertUnchanged();
|
|
1698
|
+
// link publishes an absent target without replacing a concurrent occupant.
|
|
1699
|
+
// Existing targets are rechecked under the cooperative lock, then renamed.
|
|
1700
|
+
if (original)
|
|
1701
|
+
await rename(temporary, path);
|
|
1702
|
+
else {
|
|
1703
|
+
await link(temporary, path);
|
|
1704
|
+
await removeOwnedTemporary();
|
|
1705
|
+
}
|
|
1706
|
+
const published = await statLeaf();
|
|
1707
|
+
const parentAfter = await lstat(root);
|
|
1708
|
+
if (!published || !sameFile(await file.stat(), published)
|
|
1709
|
+
|| parent.dev !== parentAfter.dev || parent.ino !== parentAfter.ino || !parentAfter.isDirectory()) {
|
|
1710
|
+
throw new Error(`Project ${name} publication could not be verified; inspect the project files before retrying.`);
|
|
1711
|
+
}
|
|
1712
|
+
}
|
|
1713
|
+
finally {
|
|
1714
|
+
await file.close();
|
|
1715
|
+
await removeOwnedTemporary();
|
|
1569
1716
|
}
|
|
1570
1717
|
}
|
|
1571
1718
|
function toDisplayName(name) {
|