@stechquick/studio-cli 4.0.3-2 → 4.1.0-0
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/common/clean/domain/useCases/ICloudProviderStorage.js +5 -0
- package/dist/common/clean/domain/useCases/ICloudProviderStorage.js.map +1 -0
- package/dist/common/clean/infrastructure/cloud/s3Low.js +392 -0
- package/dist/common/clean/infrastructure/cloud/s3Low.js.map +1 -0
- package/dist/common/clean/useCases/cloudProviderStorageCephImpl.js +144 -0
- package/dist/common/clean/useCases/cloudProviderStorageCephImpl.js.map +1 -0
- package/dist/common/everything/authentication/types.js +5 -0
- package/dist/common/everything/authentication/types.js.map +1 -0
- package/dist/common/everything/dataType/runtimemodels/types.js +2 -1
- package/dist/common/everything/dataType/runtimemodels/types.js.map +1 -1
- package/dist/common/everything/report/runtimemodels/types.js +6 -0
- package/dist/common/everything/report/runtimemodels/types.js.map +1 -0
- package/dist/common/helpers/esModuleHelper.js +29 -0
- package/dist/common/helpers/esModuleHelper.js.map +1 -0
- package/dist/common/helpers/server/envLoader.js +141 -0
- package/dist/common/helpers/server/envLoader.js.map +1 -0
- package/dist/common/qCloudTemp/quickCloud.js +2 -1
- package/dist/common/qCloudTemp/quickCloud.js.map +1 -1
- package/dist/common/qCloudTemp/symDtoObjects.js +1 -0
- package/dist/common/qCloudTemp/symDtoObjects.js.map +1 -1
- package/dist/common/qCloudTemp/whatsNew.js +3 -0
- package/dist/common/qCloudTemp/whatsNew.js.map +1 -0
- package/dist/studio-cli/src/.ai-kit/{opencode.jsonc → .opencode/opencode.json} +9 -43
- package/dist/studio-cli/src/.ai-kit/AGENTS.md +1 -1
- package/dist/studio-cli/src/.ai-kit/CLAUDE.md +1 -1
- package/dist/studio-cli/src/.ai-kit/knowledge/12-render-check.md +5 -2
- package/dist/studio-cli/src/control/push.js +1 -1
- package/dist/studio-cli/src/control/push.js.map +1 -1
- package/dist/studio-cli/src/control/workspaceSetup.js +11 -25
- package/dist/studio-cli/src/control/workspaceSetup.js.map +1 -1
- package/dist/studio-cli/src/version.js +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ICloudProviderStorage.js","sourceRoot":"","sources":["../../../../../../common/clean/domain/useCases/ICloudProviderStorage.ts"],"names":[],"mappings":";;;AAqHa,QAAA,qBAAqB,GAAG,MAAM,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC"}
|
|
@@ -0,0 +1,392 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.S3Low = void 0;
|
|
4
|
+
const client_s3_1 = require("@aws-sdk/client-s3");
|
|
5
|
+
const https_1 = require("https");
|
|
6
|
+
class S3Low {
|
|
7
|
+
s3Client;
|
|
8
|
+
logger;
|
|
9
|
+
constructor(params, logger, options) {
|
|
10
|
+
this.logger = logger;
|
|
11
|
+
const s3ClientConfig = { credentials: params.credentials };
|
|
12
|
+
params.region && (s3ClientConfig.region = params.region);
|
|
13
|
+
params.endpoint && (s3ClientConfig.endpoint = params.endpoint);
|
|
14
|
+
const certs = this.loadCertificates(options.certs);
|
|
15
|
+
if (certs && certs.length > 0) {
|
|
16
|
+
const agent = new https_1.Agent({
|
|
17
|
+
rejectUnauthorized: true,
|
|
18
|
+
ca: certs
|
|
19
|
+
});
|
|
20
|
+
s3ClientConfig.requestHandler = {
|
|
21
|
+
httpAgent: agent,
|
|
22
|
+
httpsAgent: agent
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
s3ClientConfig.forcePathStyle = true;
|
|
26
|
+
this.logger.log({ level: "log", logCode: "S3-AO1", message: s3ClientConfig.endpoint ? `S3 Client initialized with custom endpoint: ${s3ClientConfig.endpoint}` : `S3 Client initialized with AWS endpoint for region: ${s3ClientConfig.region || "default"}` });
|
|
27
|
+
this.logger.log({ level: "log", logCode: "S3-AO2", message: options.certs.certType === "direct" ? `S3 Client initialized with direct certificates. Number of certificates: ${options.certs.certificates.length}` : `S3 Client initialized with environment variable for certificates: ${options.certs.certEnvName}` });
|
|
28
|
+
this.s3Client = new client_s3_1.S3Client(s3ClientConfig);
|
|
29
|
+
}
|
|
30
|
+
loadCertificates(certOptions) {
|
|
31
|
+
if (certOptions.certType === "direct") {
|
|
32
|
+
return certOptions.certificates;
|
|
33
|
+
}
|
|
34
|
+
const certs = [];
|
|
35
|
+
const certificateVariableName = certOptions.certEnvName || `S3_CERTIFICATE_${process.env["wfm_env"]}`;
|
|
36
|
+
const certificate = process.env?.[certificateVariableName]?.trim();
|
|
37
|
+
if (certificate) {
|
|
38
|
+
certs.push(certificate);
|
|
39
|
+
this.logger.log({ level: "log", logCode: "S3-L01", message: `Certificate loaded successfully.` });
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
this.logger.log({ level: "error", logCode: "S3-L01", message: `Certificate not found. Please provide ${certificateVariableName} environment variable.` });
|
|
43
|
+
}
|
|
44
|
+
return certs;
|
|
45
|
+
}
|
|
46
|
+
generateBucketName() {
|
|
47
|
+
let bucketName = '';
|
|
48
|
+
const possibleCharacters = 'abcdefghijklmnopqrstuvwxyz0123456789';
|
|
49
|
+
for (let i = 0; i < 24; i++) {
|
|
50
|
+
bucketName += possibleCharacters.charAt(Math.floor(Math.random() * possibleCharacters.length));
|
|
51
|
+
}
|
|
52
|
+
return bucketName;
|
|
53
|
+
}
|
|
54
|
+
async getBucketPolicy(params) {
|
|
55
|
+
try {
|
|
56
|
+
const command = new client_s3_1.GetBucketPolicyCommand({
|
|
57
|
+
Bucket: params.Bucket
|
|
58
|
+
});
|
|
59
|
+
const response = await this.s3Client.send(command);
|
|
60
|
+
return { Policy: response.Policy };
|
|
61
|
+
}
|
|
62
|
+
catch (error) {
|
|
63
|
+
if (error.name === 'NoSuchBucketPolicy' || error.Code === 'NoSuchBucketPolicy') {
|
|
64
|
+
throw {
|
|
65
|
+
code: 'NoSuchBucketPolicy',
|
|
66
|
+
name: 'NoSuchBucketPolicy',
|
|
67
|
+
message: 'The bucket policy does not exist'
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
// Diğer hataları yukarı fırlat
|
|
71
|
+
throw error;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
async createS3BucketPolicy(bucketName, params) {
|
|
75
|
+
const newS3BucketPolicy = {
|
|
76
|
+
Version: params.version || '2012-10-17',
|
|
77
|
+
Statement: params.statements.map(statement => ({
|
|
78
|
+
Sid: statement.sid,
|
|
79
|
+
Effect: statement.effect,
|
|
80
|
+
Principal: statement.principal,
|
|
81
|
+
Action: statement.action,
|
|
82
|
+
Resource: statement.resource
|
|
83
|
+
})),
|
|
84
|
+
};
|
|
85
|
+
const newPolicyStr = JSON.stringify(newS3BucketPolicy);
|
|
86
|
+
try {
|
|
87
|
+
const existingPolicy = await this.getBucketPolicy({ Bucket: bucketName });
|
|
88
|
+
const existingPolicyStr = existingPolicy.Policy;
|
|
89
|
+
// Sadece farklıysa güncelle
|
|
90
|
+
if (existingPolicyStr !== newPolicyStr) {
|
|
91
|
+
await this.uploadBucketPolicy({ Bucket: bucketName, Policy: newPolicyStr });
|
|
92
|
+
this.logger.log({ level: "log", logCode: "S3-L03", message: `Bucket(${bucketName}) policy updated` });
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
this.logger.log({ level: "log", logCode: "S3-L03", message: `Bucket(${bucketName}) policy already exists.` });
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
catch (error) {
|
|
99
|
+
// Policy yoksa veya erişim hatası varsa, yeni policy'yi yükle
|
|
100
|
+
if (error.code === 'NoSuchBucketPolicy' || error.name === 'NoSuchBucketPolicy') {
|
|
101
|
+
await this.uploadBucketPolicy({ Bucket: bucketName, Policy: newPolicyStr });
|
|
102
|
+
this.logger.log({ level: "log", logCode: "S3-L03", message: `Bucket(${bucketName}) policy updated` });
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
throw error;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
async createBucket(params) {
|
|
110
|
+
const bucketName = this.generateBucketName();
|
|
111
|
+
try {
|
|
112
|
+
await this.s3Client.send(new client_s3_1.CreateBucketCommand({ Bucket: bucketName }));
|
|
113
|
+
this.logger.log({ level: "log", logCode: "S3-L02", message: `Bucket ${bucketName} created successfully.` });
|
|
114
|
+
return bucketName;
|
|
115
|
+
}
|
|
116
|
+
catch (error) {
|
|
117
|
+
if ((error.name === "BucketAlreadyExist" || error.name === "BucketAlreadyOwnedByYou") && params.retries > 0) {
|
|
118
|
+
this.logger.log({ level: "warning", logCode: "S3-W01", message: `Bucket ${bucketName} already exists. Retrying with a new name...` });
|
|
119
|
+
return await this.createBucket({ retries: params.retries - 1 });
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
this.logger.log({ level: "error", logCode: "S3-E01", message: `Error occured when creating bucket: ${error.message}` });
|
|
123
|
+
throw new Error(`S3 Client returned message: ${error.message}`);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
async deleteBucket(params) {
|
|
128
|
+
try {
|
|
129
|
+
await this.deleteStandardObjects({ bucket: params.bucket });
|
|
130
|
+
await this.deleteVersionedObjects({ bucket: params.bucket });
|
|
131
|
+
await this.s3Client.send(new client_s3_1.DeleteBucketCommand({ Bucket: params.bucket }));
|
|
132
|
+
this.logger.log({ level: "log", logCode: "S3-L11", message: `Bucket ${params.bucket} deleted successfully.` });
|
|
133
|
+
}
|
|
134
|
+
catch (err) {
|
|
135
|
+
const error = err;
|
|
136
|
+
this.logger.log({ level: "error", logCode: "S3-E09", message: `Error occurred when deleting bucket: ${error.message}` });
|
|
137
|
+
throw new Error(`S3 Client returned message: ${error.message}`);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
async uploadStream(params) {
|
|
141
|
+
const { stream, bucket, key, contentType } = params;
|
|
142
|
+
const { UploadId } = await this.s3Client.send(new client_s3_1.CreateMultipartUploadCommand({ Bucket: bucket, Key: key, ContentType: contentType }));
|
|
143
|
+
this.logger.log({ level: "debug", logCode: "S3-L04", message: `Multipart upload initiated for ${bucket}/${key}.` });
|
|
144
|
+
const partProms = [];
|
|
145
|
+
let partNumber = 1; // Part numbers start at 1
|
|
146
|
+
for await (const chunk of stream) {
|
|
147
|
+
// NO AWAIT!! --> for await is awaiting body not s3.send
|
|
148
|
+
const part = this.s3Client.send(new client_s3_1.UploadPartCommand({
|
|
149
|
+
Bucket: bucket, Key: key, UploadId, Body: chunk, PartNumber: partNumber++
|
|
150
|
+
}));
|
|
151
|
+
partProms.push(part);
|
|
152
|
+
}
|
|
153
|
+
const Parts = await Promise.all(partProms);
|
|
154
|
+
await this.s3Client.send(new client_s3_1.CompleteMultipartUploadCommand({ Bucket: bucket, Key: key, UploadId, MultipartUpload: { Parts } }));
|
|
155
|
+
this.logger.log({ level: "debug", logCode: "S3-L06", message: `Multipart upload completed for ${bucket}/${key}.` });
|
|
156
|
+
}
|
|
157
|
+
async uploadFile(params) {
|
|
158
|
+
const MB = 1024 * 1024;
|
|
159
|
+
const fileSize = Buffer.byteLength(params.body, "utf-8");
|
|
160
|
+
try {
|
|
161
|
+
if (fileSize < 100 * MB) {
|
|
162
|
+
await this._uploadFile(params);
|
|
163
|
+
}
|
|
164
|
+
else {
|
|
165
|
+
await this.uploadLargeFile(fileSize, params);
|
|
166
|
+
}
|
|
167
|
+
return { success: true };
|
|
168
|
+
}
|
|
169
|
+
catch (error) {
|
|
170
|
+
return { success: false };
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
async _uploadFile(params) {
|
|
174
|
+
const uploadFileParams = {
|
|
175
|
+
Bucket: params.bucket,
|
|
176
|
+
Key: params.key,
|
|
177
|
+
Body: params.body,
|
|
178
|
+
ContentType: params.contentType
|
|
179
|
+
};
|
|
180
|
+
try {
|
|
181
|
+
await this.s3Client.send(new client_s3_1.PutObjectCommand(uploadFileParams));
|
|
182
|
+
this.logger.log({ level: "log", logCode: "S3-L03", message: `File uploaded successfully to ${params.bucket}/${params.key}` });
|
|
183
|
+
}
|
|
184
|
+
catch (error) {
|
|
185
|
+
this.logger.log({ level: "error", logCode: "S3-E02", message: `Error occured when uploading file: ${error.message}` });
|
|
186
|
+
throw new Error(`S3 Client returned message: ${error.message}`);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
async uploadLargeFile(fileSize, params) {
|
|
190
|
+
const MB = 1024 * 1024, GB = 1024 * MB;
|
|
191
|
+
let chunkSize = 0;
|
|
192
|
+
if (fileSize < 1 * GB)
|
|
193
|
+
chunkSize = 5 * MB;
|
|
194
|
+
else if (fileSize < 5 * GB)
|
|
195
|
+
chunkSize = 50 * MB;
|
|
196
|
+
else if (fileSize < 10 * GB)
|
|
197
|
+
chunkSize = 100 * MB;
|
|
198
|
+
else
|
|
199
|
+
chunkSize = Math.max(Math.ceil(fileSize / 10000), 200 * MB);
|
|
200
|
+
const { UploadId } = await this.s3Client.send(new client_s3_1.CreateMultipartUploadCommand({
|
|
201
|
+
Bucket: params.bucket,
|
|
202
|
+
Key: params.key
|
|
203
|
+
}));
|
|
204
|
+
this.logger.log({ level: "log", logCode: "S3-L04", message: `Multipart upload initiated for ${params.bucket}/${params.key}.` });
|
|
205
|
+
const promises = [];
|
|
206
|
+
for (let start = 0, PartNumber = 1; start < fileSize; start += chunkSize, PartNumber++) {
|
|
207
|
+
const end = Math.min(start + chunkSize, fileSize);
|
|
208
|
+
const promise = this.s3Client.send(new client_s3_1.UploadPartCommand({
|
|
209
|
+
Bucket: params.bucket,
|
|
210
|
+
Key: params.key,
|
|
211
|
+
PartNumber,
|
|
212
|
+
UploadId,
|
|
213
|
+
Body: params.body.slice(start, end)
|
|
214
|
+
})).then(({ ETag }) => { return { ETag, PartNumber }; });
|
|
215
|
+
promises.push(promise);
|
|
216
|
+
}
|
|
217
|
+
const Parts = await Promise.all(promises);
|
|
218
|
+
await this.s3Client.send(new client_s3_1.CompleteMultipartUploadCommand({
|
|
219
|
+
Bucket: params.bucket,
|
|
220
|
+
Key: params.key,
|
|
221
|
+
UploadId,
|
|
222
|
+
MultipartUpload: { Parts }
|
|
223
|
+
}));
|
|
224
|
+
this.logger.log({ level: "log", logCode: "S3-L05", message: `All ${Parts.length} parts uploaded for ${params.bucket}/${params.key}.` });
|
|
225
|
+
}
|
|
226
|
+
async downloadFile(params) {
|
|
227
|
+
try {
|
|
228
|
+
const file = await this.s3Client.send(new client_s3_1.GetObjectCommand({ Bucket: params.bucket, Key: params.key }));
|
|
229
|
+
if (file.Body === undefined) {
|
|
230
|
+
throw new Error(`S3 Client File Body is empty`);
|
|
231
|
+
}
|
|
232
|
+
this.logger.log({ level: "log", logCode: "S3-L06", message: `File downloaded successfully from ${params.bucket}/${params.key}` });
|
|
233
|
+
return file;
|
|
234
|
+
}
|
|
235
|
+
catch (error) {
|
|
236
|
+
this.logger.log({ level: "error", logCode: "S3-E03", message: `Error occured when downloading file: ${error.message}` });
|
|
237
|
+
throw new Error(`S3 Client returned message: ${error.message}`);
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
async listObjectsInFolder(params) {
|
|
241
|
+
return await this.listObjects({ bucket: params.bucket, prefix: params.prefix });
|
|
242
|
+
}
|
|
243
|
+
async deleteFolder(params) {
|
|
244
|
+
try {
|
|
245
|
+
const standardDeleteResult = await this.deleteStandardObjects(params);
|
|
246
|
+
const versionedDeleteResult = await this.deleteVersionedObjects(params);
|
|
247
|
+
const success = standardDeleteResult.success && versionedDeleteResult.success;
|
|
248
|
+
const deletedCount = standardDeleteResult.deletedCount + versionedDeleteResult.deletedCount;
|
|
249
|
+
const fails = [];
|
|
250
|
+
if (!standardDeleteResult.success) {
|
|
251
|
+
standardDeleteResult.fails.forEach(fail => fails.push(fail));
|
|
252
|
+
}
|
|
253
|
+
if (!versionedDeleteResult.success) {
|
|
254
|
+
versionedDeleteResult.fails.forEach(fail => fails.push(fail));
|
|
255
|
+
}
|
|
256
|
+
this.logger.log({ level: "log", logCode: "S3-L12", message: `Folder ${params.prefix} deleted successfully from bucket ${params.bucket}. deleted: ${deletedCount} failed: ${fails.length}` });
|
|
257
|
+
if (fails.length > 0) {
|
|
258
|
+
this.logger.log({ level: "error", logCode: "S3-E11", message: `Failed to delete some objects in folder ${params.prefix} from bucket ${params.bucket}: ${fails.map(fail => fail.key + ": " + fail.reason).join(", ")}` });
|
|
259
|
+
}
|
|
260
|
+
return { success, deletedCount, fails };
|
|
261
|
+
}
|
|
262
|
+
catch (err) {
|
|
263
|
+
const error = err;
|
|
264
|
+
this.logger.log({ level: "error", logCode: "S3-E10", message: `Error occurred when deleting folder: ${error.message}` });
|
|
265
|
+
throw new Error(`S3 Client returned message: ${error.message}`);
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
async deleteFile(params) {
|
|
269
|
+
try {
|
|
270
|
+
await this.s3Client.send(new client_s3_1.DeleteObjectCommand({ Bucket: params.bucket, Key: params.key }));
|
|
271
|
+
this.logger.log({ level: "log", logCode: "S3-L07", message: `File deleted successfully from ${params.bucket}/${params.key}` });
|
|
272
|
+
}
|
|
273
|
+
catch (error) {
|
|
274
|
+
this.logger.log({ level: "error", logCode: "S3-E04", message: `Error occured when deleting file: ${error.message}` });
|
|
275
|
+
throw new Error(`S3 Client returned message: ${error.message}`);
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
async assertBucketExistence(Bucket) {
|
|
279
|
+
try {
|
|
280
|
+
await this.s3Client.send(new client_s3_1.HeadBucketCommand({ Bucket }));
|
|
281
|
+
this.logger.log({ level: "log", logCode: "S3-L08", message: `Found Bucket with name: ${Bucket}.` });
|
|
282
|
+
}
|
|
283
|
+
catch (error) {
|
|
284
|
+
if (error.name === "NotFound") {
|
|
285
|
+
this.logger.log({ level: "error", logCode: "S3-E05", message: `S3 Bucket not found with given bucket name: ${Bucket}` });
|
|
286
|
+
throw new Error(`S3 Bucket not found with given bucket name: ${Bucket}`);
|
|
287
|
+
}
|
|
288
|
+
this.logger.log({ level: "error", logCode: "S3-E06", message: `Error occured when asserting bucket existence: ${error.message}` });
|
|
289
|
+
throw new Error(`S3 Client returned message: ${error}`);
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
parseKeyHandle(key) {
|
|
293
|
+
const lastIndex = key.lastIndexOf("/");
|
|
294
|
+
const name = lastIndex === -1 ? key : key.substring(lastIndex + 1);
|
|
295
|
+
const path = lastIndex === -1 ? undefined : key.substring(0, lastIndex);
|
|
296
|
+
return { name, path };
|
|
297
|
+
}
|
|
298
|
+
parseStorageHandle(storageHandle) {
|
|
299
|
+
try {
|
|
300
|
+
const sepIndex = storageHandle.indexOf("/");
|
|
301
|
+
if (sepIndex === -1) {
|
|
302
|
+
throw new Error(`Invalid storage handle: ${storageHandle}`);
|
|
303
|
+
} // outer catch to handle
|
|
304
|
+
const bucket = storageHandle.substring(0, sepIndex);
|
|
305
|
+
const key = storageHandle.substring(sepIndex + 1);
|
|
306
|
+
this.logger.log({ level: "log", logCode: "S3-L09", message: `Storage handle splitted into: ${bucket} / ${key}` });
|
|
307
|
+
return { bucket, key };
|
|
308
|
+
}
|
|
309
|
+
catch (err) {
|
|
310
|
+
this.logger.log({ level: "error", logCode: "S3-E07", message: `Invalid storage handle: ${storageHandle}` });
|
|
311
|
+
throw new Error(`Invalid storage handle: ${storageHandle}`);
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
async uploadBucketPolicy(params) {
|
|
315
|
+
try {
|
|
316
|
+
await this.s3Client.send(new client_s3_1.PutBucketPolicyCommand({ Bucket: params.Bucket, Policy: params.Policy }));
|
|
317
|
+
this.logger.log({ level: "log", logCode: "S3-L10", message: `Bucket policy updated for bucket: ${params.Bucket}` });
|
|
318
|
+
}
|
|
319
|
+
catch (error) {
|
|
320
|
+
this.logger.log({ level: "error", logCode: "S3-E08", message: `Error occured when updating bucket policy: ${error.message}` });
|
|
321
|
+
throw new Error(`S3 Client returned message: ${error.message}`);
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
async deleteVersionedObjects(params) {
|
|
325
|
+
let keyMarker = undefined;
|
|
326
|
+
let versionIdMarker = undefined;
|
|
327
|
+
let success = true, deletedCount = 0, fails = [];
|
|
328
|
+
while (true) {
|
|
329
|
+
const listedVersions = await this.s3Client.send(new client_s3_1.ListObjectVersionsCommand({ Bucket: params.bucket, Prefix: params.prefix, KeyMarker: keyMarker, VersionIdMarker: versionIdMarker }));
|
|
330
|
+
const allObjects = [...(listedVersions.Versions || []), ...(listedVersions.DeleteMarkers || [])];
|
|
331
|
+
if (allObjects.length === 0) {
|
|
332
|
+
break;
|
|
333
|
+
}
|
|
334
|
+
const objects = allObjects.map(({ Key, VersionId }) => ({ Key, VersionId }));
|
|
335
|
+
const x = await this.s3Client.send(new client_s3_1.DeleteObjectsCommand({ Bucket: params.bucket, Delete: { Objects: objects } }));
|
|
336
|
+
if (x.Errors?.length) {
|
|
337
|
+
success = false;
|
|
338
|
+
x.Errors.forEach(err => fails.push({ key: err.Key, reason: [err.Code, err.Message].filter(i => i).join(" - ") }));
|
|
339
|
+
}
|
|
340
|
+
deletedCount += (x.Deleted?.length || 0);
|
|
341
|
+
if (!listedVersions.IsTruncated) {
|
|
342
|
+
break;
|
|
343
|
+
}
|
|
344
|
+
keyMarker = listedVersions.NextKeyMarker;
|
|
345
|
+
versionIdMarker = listedVersions.NextVersionIdMarker;
|
|
346
|
+
}
|
|
347
|
+
return { success, deletedCount, fails };
|
|
348
|
+
}
|
|
349
|
+
async deleteStandardObjects(params) {
|
|
350
|
+
let continuationToken = undefined;
|
|
351
|
+
let success = true, deletedCount = 0, fails = [];
|
|
352
|
+
while (true) {
|
|
353
|
+
const listedObjects = await this.s3Client.send(new client_s3_1.ListObjectsV2Command({ Bucket: params.bucket, Prefix: params.prefix, ContinuationToken: continuationToken }));
|
|
354
|
+
continuationToken = listedObjects.NextContinuationToken;
|
|
355
|
+
if (!listedObjects.Contents?.length) {
|
|
356
|
+
break;
|
|
357
|
+
}
|
|
358
|
+
const objects = listedObjects.Contents.map(({ Key }) => ({ Key }));
|
|
359
|
+
const x = await this.s3Client.send(new client_s3_1.DeleteObjectsCommand({ Bucket: params.bucket, Delete: { Objects: objects } }));
|
|
360
|
+
if (x.Errors?.length) {
|
|
361
|
+
success = false;
|
|
362
|
+
x.Errors.forEach(err => fails.push({ key: err.Key, reason: [err.Code, err.Message].filter(i => i).join(" - ") }));
|
|
363
|
+
}
|
|
364
|
+
deletedCount += (x.Deleted?.length || 0);
|
|
365
|
+
if (!listedObjects.IsTruncated) {
|
|
366
|
+
break;
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
return { success, deletedCount, fails };
|
|
370
|
+
}
|
|
371
|
+
async listObjects(params) {
|
|
372
|
+
let continuationToken = undefined;
|
|
373
|
+
const keys = [];
|
|
374
|
+
while (true) {
|
|
375
|
+
const listedObjects = await this.s3Client.send(new client_s3_1.ListObjectsV2Command({ Bucket: params.bucket, Prefix: params.prefix, ContinuationToken: continuationToken }));
|
|
376
|
+
continuationToken = listedObjects.NextContinuationToken;
|
|
377
|
+
if (!listedObjects.Contents?.length) {
|
|
378
|
+
break;
|
|
379
|
+
}
|
|
380
|
+
listedObjects.Contents.forEach(({ Key }) => { if (!Key) {
|
|
381
|
+
return;
|
|
382
|
+
} keys.push(Key); });
|
|
383
|
+
if (!listedObjects.IsTruncated) {
|
|
384
|
+
break;
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
return keys;
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
exports.S3Low = S3Low;
|
|
391
|
+
;
|
|
392
|
+
//# sourceMappingURL=s3Low.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"s3Low.js","sourceRoot":"","sources":["../../../../../../common/clean/infrastructure/cloud/s3Low.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CloudProviderStorageCephImpl = void 0;
|
|
4
|
+
const s3Low_1 = require("../infrastructure/cloud/s3Low");
|
|
5
|
+
const stream_1 = require("stream");
|
|
6
|
+
class CloudProviderStorageCephImpl {
|
|
7
|
+
diContainer;
|
|
8
|
+
options;
|
|
9
|
+
type = "ceph";
|
|
10
|
+
constructor(diContainer, options) {
|
|
11
|
+
this.diContainer = diContainer;
|
|
12
|
+
this.options = options;
|
|
13
|
+
}
|
|
14
|
+
assertGetStorageHostUrl(options) {
|
|
15
|
+
const storage = options.organization.cloud?.storage;
|
|
16
|
+
if (storage?.type != "ceph") {
|
|
17
|
+
throw new Error("ceph storage is not configured!");
|
|
18
|
+
}
|
|
19
|
+
return storage.storageHostUrl;
|
|
20
|
+
}
|
|
21
|
+
assertOrgStorageConfigured(options) {
|
|
22
|
+
const storage = options.organization.cloud?.storage;
|
|
23
|
+
if (storage?.type != "ceph") {
|
|
24
|
+
throw new Error("ceph storage is not configured!");
|
|
25
|
+
}
|
|
26
|
+
if (!storage.bucketID) {
|
|
27
|
+
throw new Error("ceph storage bucketID is not configured!");
|
|
28
|
+
}
|
|
29
|
+
return storage;
|
|
30
|
+
}
|
|
31
|
+
async createOrganization(options) {
|
|
32
|
+
const s3Low = this.createS3Low();
|
|
33
|
+
const cloudExt = { cloud: options.organization.cloud || {}, changed: false };
|
|
34
|
+
try {
|
|
35
|
+
await this.createOrganizationBucket(s3Low, options, cloudExt);
|
|
36
|
+
}
|
|
37
|
+
finally {
|
|
38
|
+
await this.callUpdateOrganizationCloud(options.organization.organizationId, options.callbacks.updateOrganizationOnDBCallback, cloudExt, this.diContainer, { firstCloudCreation: true });
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
async deleteOrganization(options) {
|
|
42
|
+
const s3Low = this.createS3Low();
|
|
43
|
+
const storage = this.assertOrgStorageConfigured({ organization: options.organization });
|
|
44
|
+
await s3Low.deleteBucket({ bucket: storage.bucketID });
|
|
45
|
+
}
|
|
46
|
+
async uploadModelsToOrganizationStorage(options, files) {
|
|
47
|
+
const s3Low = this.createS3Low();
|
|
48
|
+
const storage = this.assertOrgStorageConfigured({ organization: options.organization });
|
|
49
|
+
return await this.uploadFilesToBucket(storage, files, s3Low, "models");
|
|
50
|
+
}
|
|
51
|
+
async uploadCdnFilesToOrganizationStorage(options, files) {
|
|
52
|
+
const s3Low = this.createS3Low();
|
|
53
|
+
const storage = this.assertOrgStorageConfigured({ organization: options.organization });
|
|
54
|
+
await this.uploadFilesToBucket(storage, files, s3Low, "web");
|
|
55
|
+
}
|
|
56
|
+
async deleteModel(options, modelId) {
|
|
57
|
+
const s3Low = this.createS3Low();
|
|
58
|
+
const storage = this.assertOrgStorageConfigured({ organization: options.organization });
|
|
59
|
+
return await s3Low.deleteFolder({ bucket: storage.bucketID, prefix: `models/${modelId}/` });
|
|
60
|
+
}
|
|
61
|
+
async streamToStorage(options) {
|
|
62
|
+
const s3Low = this.createS3Low();
|
|
63
|
+
const { container, pathToFile, stream, contentType } = options;
|
|
64
|
+
const bucketId = 'bucketId' in options ? options.bucketId : this.assertOrgStorageConfigured({ organization: options.organization }).bucketID;
|
|
65
|
+
const key = `${container}/${pathToFile}`;
|
|
66
|
+
await s3Low.uploadStream({ bucket: bucketId, key, stream, contentType });
|
|
67
|
+
}
|
|
68
|
+
async streamFromWebStorage(options) {
|
|
69
|
+
const s3Low = this.createS3Low();
|
|
70
|
+
const { container, pathToFile } = options;
|
|
71
|
+
const bucketId = 'bucketId' in options ? options.bucketId : this.assertOrgStorageConfigured({ organization: options.organization }).bucketID;
|
|
72
|
+
const key = `${container}/${pathToFile}`;
|
|
73
|
+
const file = await s3Low.downloadFile({ bucket: bucketId, key });
|
|
74
|
+
if (!(file.Body instanceof stream_1.Readable)) {
|
|
75
|
+
throw new Error(`Downloaded file Body is not a Readable stream: ${key}`);
|
|
76
|
+
}
|
|
77
|
+
return { stream: file.Body, contentType: file.ContentType, contentLength: file.ContentLength };
|
|
78
|
+
}
|
|
79
|
+
async readModel(options, path, fullName) {
|
|
80
|
+
const s3Low = this.createS3Low();
|
|
81
|
+
const storage = this.assertOrgStorageConfigured({ organization: options.organization });
|
|
82
|
+
const key = `models/${path}/${fullName}`;
|
|
83
|
+
const file = await s3Low.downloadFile({ bucket: storage.bucketID, key });
|
|
84
|
+
if (file.ContentLength === undefined || file.ContentLength === null) {
|
|
85
|
+
throw new Error(`Downloaded file has no contentLength: ${key}`);
|
|
86
|
+
}
|
|
87
|
+
const content = await file.Body.transformToString("utf-8");
|
|
88
|
+
return { path: path, file: { name: fullName, size: file.ContentLength, content, createDate: file.LastModified } };
|
|
89
|
+
}
|
|
90
|
+
async getModelsInPath(options, path) {
|
|
91
|
+
const s3Low = this.createS3Low();
|
|
92
|
+
const storage = this.assertOrgStorageConfigured({ organization: options.organization });
|
|
93
|
+
const prefix = `models/${path}/`;
|
|
94
|
+
const keys = await s3Low.listObjectsInFolder({ bucket: storage.bucketID, prefix });
|
|
95
|
+
const files = await Promise.all(keys.map(async (key) => {
|
|
96
|
+
const file = await s3Low.downloadFile({ bucket: storage.bucketID, key });
|
|
97
|
+
if (file.ContentLength === undefined || file.ContentLength === null) {
|
|
98
|
+
throw new Error(`Downloaded file has no contentLength: ${key}`);
|
|
99
|
+
}
|
|
100
|
+
const { name, path } = s3Low.parseKeyHandle(key);
|
|
101
|
+
const content = await file.Body.transformToString("utf-8");
|
|
102
|
+
return { name, content, size: file.ContentLength, createDate: file.LastModified };
|
|
103
|
+
}));
|
|
104
|
+
return { path, files };
|
|
105
|
+
}
|
|
106
|
+
async createOrganizationBucket(s3Low, options, cloudExt) {
|
|
107
|
+
if (cloudExt.cloud.storage?.type == "ceph" && cloudExt.cloud.storage.bucketID) {
|
|
108
|
+
this.diContainer.logger.log({ level: "info", message: `ceph Model storage exists: ${cloudExt.cloud.storage.bucketID}` });
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
const bucketName = await s3Low.createBucket({ retries: 10 });
|
|
112
|
+
cloudExt.cloud.storage = { type: "ceph", storageHostUrl: `{{API_URL}}/storage/web/${bucketName}/`, bucketID: bucketName };
|
|
113
|
+
cloudExt.changed = true;
|
|
114
|
+
}
|
|
115
|
+
async uploadFilesToBucket(storage, files, s3Low, container) {
|
|
116
|
+
const { bucketID: bucket } = storage;
|
|
117
|
+
const fails = [];
|
|
118
|
+
const success = [];
|
|
119
|
+
await Promise.all(files.map(async (file) => {
|
|
120
|
+
const key = `${container}/${file.path}/${file.fullName}`;
|
|
121
|
+
const result = await s3Low.uploadFile({ bucket, key, body: file.data, contentType: file.contentType });
|
|
122
|
+
if (!result.success) {
|
|
123
|
+
fails.push(file.path);
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
success.push(file.path + '.' + file.fullName);
|
|
127
|
+
}
|
|
128
|
+
}));
|
|
129
|
+
return { fails, success };
|
|
130
|
+
}
|
|
131
|
+
createS3Low() {
|
|
132
|
+
const { credentials, endpoint, certificates, region } = this.options;
|
|
133
|
+
return new s3Low_1.S3Low({ credentials, endpoint, region }, this.diContainer.logger, { certs: { certType: "direct", certificates } });
|
|
134
|
+
}
|
|
135
|
+
async callUpdateOrganizationCloud(orgId, updateOrganizationOnDBCallback, cloudExt, diContainer, updateOptions) {
|
|
136
|
+
if (!cloudExt.changed) {
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
diContainer.logger.log({ level: "debug", message: `updateOrganization callback` });
|
|
140
|
+
await updateOrganizationOnDBCallback(orgId, { cloud: cloudExt.cloud }, updateOptions);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
exports.CloudProviderStorageCephImpl = CloudProviderStorageCephImpl;
|
|
144
|
+
//# sourceMappingURL=cloudProviderStorageCephImpl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloudProviderStorageCephImpl.js","sourceRoot":"","sources":["../../../../../common/clean/useCases/cloudProviderStorageCephImpl.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../common/everything/authentication/types.ts"],"names":[],"mappings":";;;AAAa,QAAA,gBAAgB,GAAG,MAAM,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.VarsType = exports.ErrorType = exports.InfoType = exports.NotSetType = exports.LiteralType = exports.OutputType = exports.InputType = exports.ContextType = exports.allVariableTypes = exports.AnyType = exports.ConstantType = exports.DataSetType = exports.RoleType = exports.SwimlaneType = exports.DataType = exports.BooleanType = exports.EnumType = exports.DateTimeType = exports.NumberType = exports.StringType = exports.LivePreviewTag = exports.DecisionTableModelTypeTag = exports.CertificateModelTypeTag = exports.ConstantModelTypeTag = exports.JobSchedulerModelTypeTag = exports.DataTypeModelTypeTag = void 0;
|
|
3
|
+
exports.VarsType = exports.ErrorType = exports.InfoType = exports.NotSetType = exports.LiteralType = exports.OutputType = exports.InputType = exports.ContextType = exports.allVariableTypes = exports.AnyType = exports.ConstantType = exports.DataSetType = exports.RoleType = exports.SwimlaneType = exports.DataType = exports.BooleanType = exports.EnumType = exports.DateTimeType = exports.NumberType = exports.StringType = exports.LivePreviewTag = exports.DecisionTableModelTypeTag = exports.CertificateModelTypeTag = exports.ReportModelTypeTag = exports.ConstantModelTypeTag = exports.JobSchedulerModelTypeTag = exports.DataTypeModelTypeTag = void 0;
|
|
4
4
|
const objectHelper_1 = require("../../../helpers/objectHelper");
|
|
5
5
|
const types_1 = require("../../accessmanager/types");
|
|
6
6
|
const types_2 = require("../../dataSet/runtimemodels/types");
|
|
@@ -8,6 +8,7 @@ const types_3 = require("../../accessmanager/types");
|
|
|
8
8
|
exports.DataTypeModelTypeTag = "dataType"; // Used in model itself
|
|
9
9
|
exports.JobSchedulerModelTypeTag = "jobScheduler"; // Used in model itself
|
|
10
10
|
exports.ConstantModelTypeTag = "constant";
|
|
11
|
+
exports.ReportModelTypeTag = "report";
|
|
11
12
|
exports.CertificateModelTypeTag = "certificate";
|
|
12
13
|
exports.DecisionTableModelTypeTag = "decisionTable"; // Used in model itself
|
|
13
14
|
exports.LivePreviewTag = "livepreview";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../../common/everything/dataType/runtimemodels/types.ts"],"names":[],"mappings":";;;AAAA,gEAA2D;AAC3D,qDAA4E;AAC5E,6DAAwE;AACxE,qDAAiE;AAGpD,QAAA,oBAAoB,GAAG,UAAU,CAAC,CAAC,uBAAuB;AAG1D,QAAA,wBAAwB,GAAG,cAAc,CAAC,CAAC,uBAAuB;AAGlE,QAAA,oBAAoB,GAAG,UAAU,CAAC;AAGlC,QAAA,uBAAuB,GAAG,aAAa,CAAC;AAGxC,QAAA,yBAAyB,GAAG,eAAe,CAAC,CAAC,uBAAuB;AAGpE,QAAA,cAAc,GAAG,aAAa,CAAC;AAE/B,QAAA,UAAU,GAAG,QAAQ,CAAC;AACtB,QAAA,UAAU,GAAG,QAAQ,CAAC;AACtB,QAAA,YAAY,GAAG,UAAU,CAAC;AAC1B,QAAA,QAAQ,GAAG,MAAM,CAAC;AAClB,QAAA,WAAW,GAAG,SAAS,CAAC;AACxB,QAAA,QAAQ,GAAG,4BAAoB,CAAC,CAAC,6CAA6C;AAE9E,QAAA,YAAY,GAAG,4BAAoB,CAAC;AACpC,QAAA,QAAQ,GAAG,wBAAgB,CAAC;AAC5B,QAAA,WAAW,GAAG,2BAAmB,CAAA;AACjC,QAAA,YAAY,GAAG,UAAU,CAAC;AAC1B,QAAA,OAAO,GAAG,KAAK,CAAC;AAgB7B,MAAM,mBAAmB,GAAmC,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,eAAe,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;AACvL,QAAA,gBAAgB,GAAG,IAAA,yBAAU,EAAC,mBAAmB,CAAC,CAAC;AAEnD,QAAA,WAAW,GAAG,SAAS,CAAC;AACxB,QAAA,SAAS,GAAG,OAAO,CAAC;AACpB,QAAA,UAAU,GAAG,QAAQ,CAAC;AACtB,QAAA,WAAW,GAAG,SAAS,CAAC;AACxB,QAAA,UAAU,GAAG,QAAQ,CAAC;AACtB,QAAA,QAAQ,GAAG,MAAM,CAAC;AAClB,QAAA,SAAS,GAAG,OAAO,CAAC;AACpB,QAAA,QAAQ,GAAG,MAAM,CAAC"}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../../common/everything/dataType/runtimemodels/types.ts"],"names":[],"mappings":";;;AAAA,gEAA2D;AAC3D,qDAA4E;AAC5E,6DAAwE;AACxE,qDAAiE;AAGpD,QAAA,oBAAoB,GAAG,UAAU,CAAC,CAAC,uBAAuB;AAG1D,QAAA,wBAAwB,GAAG,cAAc,CAAC,CAAC,uBAAuB;AAGlE,QAAA,oBAAoB,GAAG,UAAU,CAAC;AAGlC,QAAA,kBAAkB,GAAG,QAAQ,CAAC;AAG9B,QAAA,uBAAuB,GAAG,aAAa,CAAC;AAGxC,QAAA,yBAAyB,GAAG,eAAe,CAAC,CAAC,uBAAuB;AAGpE,QAAA,cAAc,GAAG,aAAa,CAAC;AAE/B,QAAA,UAAU,GAAG,QAAQ,CAAC;AACtB,QAAA,UAAU,GAAG,QAAQ,CAAC;AACtB,QAAA,YAAY,GAAG,UAAU,CAAC;AAC1B,QAAA,QAAQ,GAAG,MAAM,CAAC;AAClB,QAAA,WAAW,GAAG,SAAS,CAAC;AACxB,QAAA,QAAQ,GAAG,4BAAoB,CAAC,CAAC,6CAA6C;AAE9E,QAAA,YAAY,GAAG,4BAAoB,CAAC;AACpC,QAAA,QAAQ,GAAG,wBAAgB,CAAC;AAC5B,QAAA,WAAW,GAAG,2BAAmB,CAAA;AACjC,QAAA,YAAY,GAAG,UAAU,CAAC;AAC1B,QAAA,OAAO,GAAG,KAAK,CAAC;AAgB7B,MAAM,mBAAmB,GAAmC,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,eAAe,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;AACvL,QAAA,gBAAgB,GAAG,IAAA,yBAAU,EAAC,mBAAmB,CAAC,CAAC;AAEnD,QAAA,WAAW,GAAG,SAAS,CAAC;AACxB,QAAA,SAAS,GAAG,OAAO,CAAC;AACpB,QAAA,UAAU,GAAG,QAAQ,CAAC;AACtB,QAAA,WAAW,GAAG,SAAS,CAAC;AACxB,QAAA,UAAU,GAAG,QAAQ,CAAC;AACtB,QAAA,QAAQ,GAAG,MAAM,CAAC;AAClB,QAAA,SAAS,GAAG,OAAO,CAAC;AACpB,QAAA,QAAQ,GAAG,MAAM,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../../common/everything/report/runtimemodels/types.ts"],"names":[],"mappings":";AAAA,6CAA6C;;;AAEhC,QAAA,kBAAkB,GAAG,QAAQ,CAAC,CAAC,uBAAuB"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.ESModuleHelper = void 0;
|
|
7
|
+
const path_1 = __importDefault(require("path"));
|
|
8
|
+
const url_1 = require("url");
|
|
9
|
+
class ESModuleHelper {
|
|
10
|
+
static toProtocolPath(normalPath) {
|
|
11
|
+
// return normalPath.startsWith("/") ? "file://" + normalPath : "file:///" + normalPath;
|
|
12
|
+
return (0, url_1.pathToFileURL)(normalPath).href;
|
|
13
|
+
}
|
|
14
|
+
static __filename(import_meta, relativePath) {
|
|
15
|
+
const fileName = (0, url_1.fileURLToPath)(import_meta.url);
|
|
16
|
+
if (!relativePath) {
|
|
17
|
+
return fileName;
|
|
18
|
+
}
|
|
19
|
+
const __dirname = path_1.default.dirname(fileName);
|
|
20
|
+
return path_1.default.join(__dirname, relativePath);
|
|
21
|
+
}
|
|
22
|
+
static __dirname(import_meta, relativePath) {
|
|
23
|
+
const fileName = ESModuleHelper.__filename(import_meta);
|
|
24
|
+
const __dirname = path_1.default.dirname(fileName);
|
|
25
|
+
return relativePath ? path_1.default.join(__dirname, relativePath) : __dirname;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
exports.ESModuleHelper = ESModuleHelper;
|
|
29
|
+
//# sourceMappingURL=esModuleHelper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"esModuleHelper.js","sourceRoot":"","sources":["../../../../common/helpers/esModuleHelper.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AACxB,6BAAmD;AAEnD,MAAa,cAAc;IAChB,MAAM,CAAC,cAAc,CAAC,UAAkB;QAC3C,wFAAwF;QACxF,OAAO,IAAA,mBAAa,EAAC,UAAU,CAAC,CAAC,IAAI,CAAC;IAC1C,CAAC;IACM,MAAM,CAAC,UAAU,CAAC,WAAuB,EAAE,YAAqB;QACnE,MAAM,QAAQ,GAAG,IAAA,mBAAa,EAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAChD,IAAI,CAAC,YAAY,EAAE;YAAE,OAAO,QAAQ,CAAC;SAAE;QACvC,MAAM,SAAS,GAAG,cAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACzC,OAAO,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IAC9C,CAAC;IACM,MAAM,CAAC,SAAS,CAAC,WAAuB,EAAE,YAAqB;QAClE,MAAM,QAAQ,GAAG,cAAc,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QACxD,MAAM,SAAS,GAAG,cAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACzC,OAAO,YAAY,CAAC,CAAC,CAAC,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACzE,CAAC;CACJ;AAhBD,wCAgBC"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
exports.EnvLoader = exports.process = exports.once = void 0;
|
|
30
|
+
const esModuleHelper_1 = require("../esModuleHelper");
|
|
31
|
+
const path_1 = __importDefault(require("path"));
|
|
32
|
+
const node_process_1 = __importDefault(require("node:process"));
|
|
33
|
+
const url_1 = require("url");
|
|
34
|
+
// what is memoized , why not memorized ?
|
|
35
|
+
// answer: https://stackoverflow.com/questions/10730362/what-is-the-correct-spelling-of-memoize-memorize
|
|
36
|
+
const once = (cb) => {
|
|
37
|
+
let cache;
|
|
38
|
+
return () => {
|
|
39
|
+
if (cache) {
|
|
40
|
+
return cache;
|
|
41
|
+
}
|
|
42
|
+
return cache = cb();
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
exports.once = once;
|
|
46
|
+
exports.process = {
|
|
47
|
+
env: {
|
|
48
|
+
must(key, options) {
|
|
49
|
+
const value = node_process_1.default.env[key];
|
|
50
|
+
if (!value) {
|
|
51
|
+
throw new Error(`Environment variable ${key} is missing${options?.reason ? ` reason: ${options.reason}` : ""}`);
|
|
52
|
+
}
|
|
53
|
+
return value;
|
|
54
|
+
},
|
|
55
|
+
mustValid(key, validValues, options) {
|
|
56
|
+
const value = exports.process.env.must(key);
|
|
57
|
+
if (validValues.indexOf(value) < 0) {
|
|
58
|
+
throw new Error(`Environment variable ${key} has invalid value: ${value}. Valid values are: ${validValues.join(", ")}${options?.reason ? ` reason: ${options.reason}` : ""}`);
|
|
59
|
+
}
|
|
60
|
+
return value;
|
|
61
|
+
},
|
|
62
|
+
can(key) {
|
|
63
|
+
return node_process_1.default.env[key];
|
|
64
|
+
},
|
|
65
|
+
canValid(key, validValues) {
|
|
66
|
+
const value = exports.process.env.can(key);
|
|
67
|
+
if (!value) {
|
|
68
|
+
return undefined;
|
|
69
|
+
}
|
|
70
|
+
if (validValues.indexOf(value) < 0) {
|
|
71
|
+
throw new Error(`Environment variable ${key} has invalid value: ${value}. Valid values are: ${validValues.join(", ")}`);
|
|
72
|
+
}
|
|
73
|
+
return value;
|
|
74
|
+
},
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
class EnvLoader {
|
|
78
|
+
async loadEnvFile(relativeEnvFilePath, options) {
|
|
79
|
+
relativeEnvFilePath = this.fixOutsideAppPath(relativeEnvFilePath, options);
|
|
80
|
+
const items = await ("import_meta" in options
|
|
81
|
+
? this.tryIt(() => this.loadMockFileEsmodule(options.import_meta, relativeEnvFilePath))
|
|
82
|
+
: this.tryIt(() => this.loadMockFileCjs(options.__filename, relativeEnvFilePath)));
|
|
83
|
+
if (!items) {
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
Object.entries(items).forEach(([key, value]) => {
|
|
87
|
+
if (value === undefined || value === null) {
|
|
88
|
+
delete node_process_1.default.env[key];
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
node_process_1.default.env[key] = Array.isArray(value) ? value.join(';') : value;
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
async tryIt(cb) {
|
|
96
|
+
try {
|
|
97
|
+
return await cb();
|
|
98
|
+
}
|
|
99
|
+
catch (err) {
|
|
100
|
+
if (err.code === "ERR_MODULE_NOT_FOUND" || err.code === "MODULE_NOT_FOUND") {
|
|
101
|
+
return undefined;
|
|
102
|
+
}
|
|
103
|
+
throw err; // If file exists but has syntax/runtime errors → crash
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
fixOutsideAppPath(relativeEnvFilePath, options) {
|
|
107
|
+
if (!options.pathOutsideApp) {
|
|
108
|
+
return relativeEnvFilePath;
|
|
109
|
+
}
|
|
110
|
+
const sep = path_1.default.sep;
|
|
111
|
+
const appRootFolderName = path_1.default.basename(node_process_1.default.cwd());
|
|
112
|
+
const importingFilePath = this.getFilePath(options);
|
|
113
|
+
const index = importingFilePath.lastIndexOf(appRootFolderName + sep) + appRootFolderName.length + 1;
|
|
114
|
+
const importingFilePath2AppRoot = importingFilePath.slice(index).split(sep).length - 1;
|
|
115
|
+
const appRoot2RepoRoot = (relativeEnvFilePath.split("../").length - 1) - importingFilePath2AppRoot;
|
|
116
|
+
const dist2AppRoot = 1, joinGap = 1;
|
|
117
|
+
const dist2RepoRoot = appRoot2RepoRoot + dist2AppRoot + joinGap;
|
|
118
|
+
const dist2RepoRootPrefix = Array.from(new Array(dist2RepoRoot)).join("../");
|
|
119
|
+
return path_1.default.join(dist2RepoRootPrefix, relativeEnvFilePath);
|
|
120
|
+
}
|
|
121
|
+
getFilePath(options) {
|
|
122
|
+
if ("import_meta" in options) {
|
|
123
|
+
return esModuleHelper_1.ESModuleHelper.__filename(options.import_meta);
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
return path_1.default.resolve(options.__filename);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
async loadMockFileCjs(__filename, mockFilePath) {
|
|
130
|
+
const mockFile = path_1.default.resolve(path_1.default.dirname(__filename), mockFilePath);
|
|
131
|
+
return eval("require")(mockFile);
|
|
132
|
+
}
|
|
133
|
+
async loadMockFileEsmodule(meta, mockFilePath) {
|
|
134
|
+
var _a;
|
|
135
|
+
const mockFile = esModuleHelper_1.ESModuleHelper.__filename(meta, mockFilePath);
|
|
136
|
+
const fileUrl = (0, url_1.pathToFileURL)(mockFile).href;
|
|
137
|
+
return (await (_a = fileUrl, Promise.resolve().then(() => __importStar(require(_a))))).default;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
exports.EnvLoader = EnvLoader;
|
|
141
|
+
//# sourceMappingURL=envLoader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"envLoader.js","sourceRoot":"","sources":["../../../../../common/helpers/server/envLoader.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,7 +12,8 @@ const types_8 = require("../everything/befunc/runtimeModels/types");
|
|
|
12
12
|
const types_9 = require("../everything/endpoint/runtimeModels/types");
|
|
13
13
|
const types_10 = require("../everything/accessmanager/types");
|
|
14
14
|
const types_11 = require("../everything/action/types");
|
|
15
|
-
|
|
15
|
+
const types_12 = require("../everything/authentication/types");
|
|
16
|
+
exports.DEPENDED_MODEL_KEYS = ["qjson", "named", "img", "woff", "woff2", "ttf", "otf", "lottie", types_2.DataTypeModelTypeTag, "flow", types_5.RestServiceModelTypeTag, types_4.SoapServiceModelTypeTag, types_3.WorkflowModelTypeTag, types_2.ConstantModelTypeTag, types_4.SoapServiceV2ModelTypeTag, "wsdl", types_6.SlaModelTypeTag, types_7.DataSetModelTypeTag, types_8.BackendFunctionModelTypeTag, types_9.EndpointModelTypeTag, types_1.DecisionTableModelTypeTag, types_10.SwimlaneModelTypeTag, types_10.RoleModelTypeTag, types_10.PrivilegeModelTypeTag, types_11.ActionModelTypeTag, types_12.AuthModelTypeTag];
|
|
16
17
|
exports.DEPENDED_IMAGE_KEYS = ["png", "jpg", "jpeg", "svg", "gif"];
|
|
17
18
|
exports.APP_ITEM_CONTENT_TYPES = ["qjson", "css", "png", "jpg", "jpeg", "svg", "gif", "lottie", "json", "woff", "woff2", "ttf", "otf"];
|
|
18
19
|
exports.UISettingsType = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quickCloud.js","sourceRoot":"","sources":["../../../../common/qCloudTemp/quickCloud.ts"],"names":[],"mappings":";;;AAAA,sEAAiG;AAIjG,sEAAwG;AACxG,sEAAkF;AAElF,yEAAmH;AACnH,yEAAwF;AACxF,iEAAwE;AAIxE,qEAAgF;AAChF,oEAAuF;AACvF,sEAAkF;AAClF,8DAAkH;AAClH,uDAAgE;
|
|
1
|
+
{"version":3,"file":"quickCloud.js","sourceRoot":"","sources":["../../../../common/qCloudTemp/quickCloud.ts"],"names":[],"mappings":";;;AAAA,sEAAiG;AAIjG,sEAAwG;AACxG,sEAAkF;AAElF,yEAAmH;AACnH,yEAAwF;AACxF,iEAAwE;AAIxE,qEAAgF;AAChF,oEAAuF;AACvF,sEAAkF;AAClF,8DAAkH;AAClH,uDAAgE;AAChE,+DAAsE;AAEzD,QAAA,mBAAmB,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAG,4BAAoB,EAAE,MAAM,EAAE,+BAAuB,EAAE,+BAAuB,EAAE,4BAAoB,EAAE,4BAAoB,EAAE,iCAAyB,EAAE,MAAM,EAAE,uBAAe,EAAE,2BAAmB,EAAE,mCAA2B,EAAE,4BAAoB,EAAE,iCAAyB,EAAE,6BAAoB,EAAE,yBAAgB,EAAE,8BAAqB,EAAE,2BAAkB,EAAE,yBAAgB,CAAE,CAAC;AACnd,QAAA,mBAAmB,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AAC3D,QAAA,sBAAsB,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AA2B/H,QAAA,cAAc,GAAG;IAC1B,KAAK,EAAE,OAAO;IACd,QAAQ,EAAE,UAAU;IACpB,OAAO,EAAE,SAAS;IAClB,QAAQ,EAAE,UAAU;IACpB,UAAU,EAAE,YAAY;IACxB,OAAO,EAAE,mBAAmB;IAC5B,cAAc,EAAE,sBAAsB;IACtC,GAAG,EAAE,OAAO;IACZ,QAAQ,EAAE,eAAe;IACzB,kBAAkB,EAAE,oBAAoB;IACxC,SAAS,EAAE,YAAY;IACvB,WAAW,EAAE,cAAc;IAC3B,KAAK,EAAE,OAAO;IACd,SAAS,EAAE,WAAW;CAChB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"symDtoObjects.js","sourceRoot":"","sources":["../../../../common/qCloudTemp/symDtoObjects.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"symDtoObjects.js","sourceRoot":"","sources":["../../../../common/qCloudTemp/symDtoObjects.ts"],"names":[],"mappings":";;AA0DmE,CAAC;AAInE,CAAC;AAmHD,CAAC;AA2cD,CAAC;AAMD,CAAC;AAuCD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"whatsNew.js","sourceRoot":"","sources":["../../../../common/qCloudTemp/whatsNew.ts"],"names":[],"mappings":""}
|
|
@@ -1,35 +1,9 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
//
|
|
4
|
-
// PLACEMENT — copy this file to the ROOT of your qjson workspace (next to .ai-kit/),
|
|
5
|
-
// renamed to `opencode.json`. opencode parses JSONC, so these comments are fine to keep.
|
|
6
|
-
// Config locations & precedence: https://opencode.ai/docs/config/#locations
|
|
7
|
-
//
|
|
8
|
-
// What this wires up:
|
|
9
|
-
// 1. instructions — always-load the kit's operating guide (it links the rest; the agent
|
|
10
|
-
// reads deeper docs on demand). opencode also auto-reads AGENTS.md on its own.
|
|
11
|
-
// 2. agent — the kit's specialist subagents; prompts pulled from the kit via {file:} so
|
|
12
|
-
// there's a single source of truth (no duplication).
|
|
13
|
-
// 3. mcp — the Playwright browser for render-checks: pushed pages rendered in a real,
|
|
14
|
-
// authenticated Studio editor, with the console errors static compilation can't see.
|
|
15
|
-
// Flow: .ai-kit/knowledge/12-render-check.md. (Claude Code gets the same server from
|
|
16
|
-
// .mcp.json at the workspace root.)
|
|
17
|
-
//
|
|
18
|
-
// SKILLS are NOT registered here. opencode auto-discovers skills from `.opencode/skills/`,
|
|
19
|
-
// `.claude/skills/`, or `.agents/skills/` (walking up to the git root) — there is no config
|
|
20
|
-
// key for a custom skill path. Activate the kit's skill by placing it at
|
|
21
|
-
// .claude/skills/quick-qjson/SKILL.md (read by BOTH opencode and Claude Code)
|
|
22
|
-
// e.g. `cp -r .ai-kit/skills/quick-qjson .claude/skills/`. See that SKILL.md.
|
|
2
|
+
|
|
23
3
|
"$schema": "https://opencode.ai/config.json",
|
|
24
|
-
|
|
25
|
-
// Always-on context: the operating guide (it links knowledge/reference/tools/docs).
|
|
26
4
|
"instructions": [
|
|
27
|
-
"
|
|
5
|
+
"../.ai-kit/AGENT_GUIDE.md"
|
|
28
6
|
],
|
|
29
|
-
|
|
30
|
-
// Playwright browser for render-checks (see knowledge/12-render-check.md). The agent opens
|
|
31
|
-
// http://127.0.0.1:<port>/render — the CLI bridge signs it into the Studio editor; no login,
|
|
32
|
-
// no token handling in the agent.
|
|
33
7
|
"mcp": {
|
|
34
8
|
"playwright": {
|
|
35
9
|
"type": "local",
|
|
@@ -37,59 +11,51 @@
|
|
|
37
11
|
"enabled": true
|
|
38
12
|
}
|
|
39
13
|
},
|
|
40
|
-
|
|
41
|
-
// Pre-approve the Playwright render-check tools so the agent isn't prompted on every browser
|
|
42
|
-
// action during the loop. (Claude Code gets the equivalent via .claude/settings.local.json,
|
|
43
|
-
// which `studio pull` merges for you.) Other tools keep their default ask-first behaviour.
|
|
44
14
|
"permission": {
|
|
45
15
|
"playwright*": "allow"
|
|
46
16
|
},
|
|
47
|
-
|
|
48
|
-
// Specialist subagents. `permission` is opencode's current access model (the older
|
|
49
|
-
// `tools: { read: true, ... }` object is deprecated). read/grep/glob are on by default;
|
|
50
|
-
// we explicitly allow the mutating + shell actions these agents need.
|
|
51
17
|
"agent": {
|
|
52
18
|
"quick-qjson-author": {
|
|
53
19
|
"description": "Router: reads root-level opt.V and routes to the right track author — quick-qjson-author-s for S-system pages (new / opt.V >= 2.0), quick-qjson-author-legacy for legacy V<2 pages. Owns the shared structure/containment/events flow.",
|
|
54
20
|
"mode": "subagent",
|
|
55
21
|
"permission": { "edit": "allow", "bash": "allow" },
|
|
56
|
-
"prompt": "{file
|
|
22
|
+
"prompt": "{file:../.ai-kit/agents/quick-qjson-author.md}"
|
|
57
23
|
},
|
|
58
24
|
"quick-qjson-author-s": {
|
|
59
25
|
"description": "Authors/edits .qjson pages on the S (new) style system — new pages, or opt.V >= 2.0. Design (visual AND layout) is authored in the node's S object. For legacy V<2 pages use quick-qjson-author-legacy.",
|
|
60
26
|
"mode": "subagent",
|
|
61
27
|
"permission": { "edit": "allow", "bash": "allow" },
|
|
62
|
-
"prompt": "{file
|
|
28
|
+
"prompt": "{file:../.ai-kit/agents/quick-qjson-author-s.md}"
|
|
63
29
|
},
|
|
64
30
|
"quick-qjson-author-legacy": {
|
|
65
31
|
"description": "Authors/edits .qjson pages on the legacy cssClass style system — opt.V missing or < 2.0, where S does not render. Design via O.layout (dOpt/class) + CSS utility classes. For new pages / opt.V >= 2.0 use quick-qjson-author-s.",
|
|
66
32
|
"mode": "subagent",
|
|
67
33
|
"permission": { "edit": "allow", "bash": "allow" },
|
|
68
|
-
"prompt": "{file
|
|
34
|
+
"prompt": "{file:../.ai-kit/agents/quick-qjson-author-legacy.md}"
|
|
69
35
|
},
|
|
70
36
|
"quick-styling": {
|
|
71
37
|
"description": "Styling AND layout on S-SYSTEM pages (new, or opt.V >= 2.0) via the cross-platform S Style System (S/SC); in the S system layout — grid col/direction/spacing — is also S. CSS is Web-only. For legacy V<2 pages use quick-styling-legacy.",
|
|
72
38
|
"mode": "subagent",
|
|
73
39
|
"permission": { "edit": "allow", "bash": "allow" },
|
|
74
|
-
"prompt": "{file
|
|
40
|
+
"prompt": "{file:../.ai-kit/agents/quick-styling.md}"
|
|
75
41
|
},
|
|
76
42
|
"quick-events": {
|
|
77
43
|
"description": "Writes the E (events) block: TS/QScript handlers, quick.* API, lifecycle, services. Shared across both style systems.",
|
|
78
44
|
"mode": "subagent",
|
|
79
45
|
"permission": { "edit": "allow", "bash": "allow" },
|
|
80
|
-
"prompt": "{file
|
|
46
|
+
"prompt": "{file:../.ai-kit/agents/quick-events.md}"
|
|
81
47
|
},
|
|
82
48
|
"quick-styling-legacy": {
|
|
83
49
|
"description": "Styling AND layout on LEGACY (cssClass) pages — opt.V missing or < 2.0, where S does NOT render. Owns O.layout (dOpt+compiled class) for grid/flex/spacing and CSS utility classes for visual design.",
|
|
84
50
|
"mode": "subagent",
|
|
85
51
|
"permission": { "edit": "allow", "bash": "allow" },
|
|
86
|
-
"prompt": "{file
|
|
52
|
+
"prompt": "{file:../.ai-kit/agents/quick-styling-legacy.md}"
|
|
87
53
|
},
|
|
88
54
|
"qjson-legacy-migrator": {
|
|
89
55
|
"description": "Migrates a single Quick .qjson file from the legacy system (O.layout/dOpt/Vuetify props) to the S-first style system. One file at a time, controlled per-node migration with a decision log; compiles to verify. Use only for a deliberate opt-in migration, not an incidental edit.",
|
|
90
56
|
"mode": "subagent",
|
|
91
57
|
"permission": { "edit": "allow", "bash": "allow" },
|
|
92
|
-
"prompt": "{file
|
|
58
|
+
"prompt": "{file:../.ai-kit/agents/qjson-legacy-migrator.md}"
|
|
93
59
|
}
|
|
94
60
|
}
|
|
95
61
|
}
|
|
@@ -10,7 +10,7 @@ Essentials:
|
|
|
10
10
|
- A `.qjson` is a JS module `let pjson = { ... }; export default pjson`. Author `pJson`/`lrids` — an AI-authored file carries only `{ pJson, lrids, opt }`. `cJson`/`clrids` are compiled twins (compiled output): **omit them entirely** — never write them into a new file, and **strip them if present** when editing a downloaded file (Studio regenerates them on import).
|
|
11
11
|
- Knowledge (how-to): [`.ai-kit/knowledge/`](.ai-kit/knowledge/). Reference (exact API/schema/components): [`.ai-kit/reference/`](.ai-kit/reference/).
|
|
12
12
|
- **Compile before you finish:** `studio buildQjson <file-or-folder>` (compiles with the bundled Quick compiler, reports any errors, and reports `S`/`SC` gaps as errors; it never edits the file — apply every fix yourself from `.ai-kit/reference/component-styles.json` and re-run until clean; see tools/README.md) — fix all remaining errors.
|
|
13
|
-
- **Compiling is not the finish line — push and render-check.** If `.studio/server.json` exists (the CLI bridge is running), run `studio push` yourself after a clean compile; the pushed page lands in the user's open Studio session as unsaved work. Then, if the `playwright` MCP server is available, verify the page actually *runs*: open `http://127.0.0.1:<port>/render` (port from `.studio/server.json`) and check the rendered page + browser console — full loop in [`.ai-kit/knowledge/12-render-check.md`](.ai-kit/knowledge/12-render-check.md). Report the render-check result; if the bridge or browser isn't available, say so instead of skipping silently.
|
|
13
|
+
- **Compiling is not the finish line — push and render-check.** If `.studio/server.json` exists (the CLI bridge is running), run `studio push` yourself after a clean compile; the pushed page lands in the user's open Studio session as unsaved work. Then, if the `playwright` MCP server is available, verify the page actually *runs*: open `http://127.0.0.1:<port>/render` (port from `.studio/server.json`) and check the rendered page + browser console — full loop in [`.ai-kit/knowledge/12-render-check.md`](.ai-kit/knowledge/12-render-check.md). When you're done, close the browser with `browser_close` — the Playwright MCP leaves it running otherwise. Report the render-check result; if the bridge or browser isn't available, say so instead of skipping silently.
|
|
14
14
|
- Don't rename downloaded files (Studio matches them back by name/id).
|
|
15
15
|
|
|
16
16
|
**Two style systems:** `.ai-kit` docs are split by style era. `AGENT_GUIDE.md` (Step 0) reads the page's root-level `opt.V` and routes you to the **`S`** track (new page / `opt.V >= 2.0`) or the **legacy** track (`opt.V` missing / `< 2.0`); each track has its own guide (`AGENT_GUIDE-s.md` / `AGENT_GUIDE-legacy.md`) and doc set. Follow one track — don't mix.
|
|
@@ -7,6 +7,6 @@ This workspace contains **Quick / Plateau Studio `.qjson`** UI pages. To create
|
|
|
7
7
|
- Author `pJson`/`lrids` only. **AI-authored files omit `cJson`/`clrids` entirely** — never write these compiled twins into a new file, and **strip them if present** when editing a downloaded file (Studio regenerates them on import). Authored envelope = `{ pJson, lrids, opt }`.
|
|
8
8
|
- How-to: [`.ai-kit/knowledge/`](.ai-kit/knowledge/) · Exact API/schema/components: [`.ai-kit/reference/`](.ai-kit/reference/).
|
|
9
9
|
- Always compile before finishing: `studio buildQjson <file-or-folder>` (compiles with the bundled Quick compiler, reports any errors, and reports `S`/`SC` gaps as errors; it never edits the file — apply every fix yourself from `.ai-kit/reference/component-styles.json` and re-run until clean; see tools/README.md).
|
|
10
|
-
- **Compiling is not the finish line — push and render-check.** If `.studio/server.json` exists (the CLI bridge is running), run `studio push` yourself after a clean compile; the pushed page lands in the user's open Studio session as unsaved work. Then, if the `playwright` MCP server is available, verify the page actually *runs*: open `http://127.0.0.1:<port>/render` (port from `.studio/server.json`) and check the rendered page + browser console — full loop in [`.ai-kit/knowledge/12-render-check.md`](.ai-kit/knowledge/12-render-check.md). Report the render-check result; if the bridge or browser isn't available, say so instead of skipping silently.
|
|
10
|
+
- **Compiling is not the finish line — push and render-check.** If `.studio/server.json` exists (the CLI bridge is running), run `studio push` yourself after a clean compile; the pushed page lands in the user's open Studio session as unsaved work. Then, if the `playwright` MCP server is available, verify the page actually *runs*: open `http://127.0.0.1:<port>/render` (port from `.studio/server.json`) and check the rendered page + browser console — full loop in [`.ai-kit/knowledge/12-render-check.md`](.ai-kit/knowledge/12-render-check.md). When you're done, close the browser with `browser_close` — the Playwright MCP leaves it running otherwise. Report the render-check result; if the bridge or browser isn't available, say so instead of skipping silently.
|
|
11
11
|
- **Two style systems:** `AGENT_GUIDE.md` (Step 0) reads the page's root-level `opt.V` and routes you to the **`S`** track (new page / `opt.V >= 2.0`) or the **legacy** track (`opt.V` missing / `< 2.0`) — each with its own guide (`AGENT_GUIDE-s.md` / `AGENT_GUIDE-legacy.md`) and doc set. Follow one track; don't mix.
|
|
12
12
|
- A `quick-qjson-author` router subagent (+ per-track `quick-qjson-author-s` / `quick-qjson-author-legacy`) is available in [`.ai-kit/agents/`](.ai-kit/agents/) if you want to delegate page authoring.
|
|
@@ -25,7 +25,8 @@ The test tab shows the real Studio app editor. A page you just authored locally
|
|
|
25
25
|
- the **browser console** — `browser_console_messages`; collect every `error` (and relevant `warning`),
|
|
26
26
|
- the **editor's own error panel / markers**, if it surfaces any.
|
|
27
27
|
4. **Fix & re-push:** map each error back to the offending node/handler in your `.qjson`, fix it locally, run `studio buildQjson`, then `studio push`. The test tab updates itself — no reload needed.
|
|
28
|
-
5. **Repeat** until the UI renders correctly and the console is clean.
|
|
28
|
+
5. **Repeat** until the UI renders correctly and the console is clean.
|
|
29
|
+
6. **Close the browser** with `browser_close`. The Playwright MCP keeps a real browser process alive between tool calls — it does not shut down on its own — so this is a required, explicit final action, not something to get to eventually. Close it whether the check passed or you are stopping early; the only time there is nothing to close is when you never opened the browser at all.
|
|
29
30
|
|
|
30
31
|
Interact only *inside* the editor page (clicking, typing into the rendered preview is fine). Do **not** navigate the tab elsewhere, do **not** click Save / check-in / create anything in that tab — it is a viewer; your changes become permanent only when the user reviews and saves in their own Studio session.
|
|
31
32
|
|
|
@@ -42,4 +43,6 @@ Ignore unrelated framework/network noise; focus on errors that name your compone
|
|
|
42
43
|
- If `http://127.0.0.1:<port>/render` refuses the connection, the bridge isn't running — the user needs `studio connect`. Skip the render check and rely on `buildQjson`; note that runtime wasn't verified.
|
|
43
44
|
- If it returns **503** ("no authenticated Studio session"), the user's Studio tab isn't connected — ask them to open Studio and connect the CLI, then retry.
|
|
44
45
|
- If the test tab starts failing with auth errors mid-session (token expired), `browser_navigate` to the render URL again — it re-enters with a fresh session and replays your pushes.
|
|
45
|
-
- If the `playwright` MCP server isn't in your harness at all, skip the render check and rely on `buildQjson` + the [pre-sync checklist](10-validation-and-sync.md).
|
|
46
|
+
- If the `playwright` MCP server isn't in your harness at all, skip the render check and rely on `buildQjson` + the [pre-sync checklist](10-validation-and-sync.md). Nothing was opened, so there is nothing to close.
|
|
47
|
+
|
|
48
|
+
Whenever you *did* open the browser — even if the check couldn't be finished (connection refused after navigating, a 503, an expired session you gave up on) — still call `browser_close` before you finish. A launched browser left open outlives the task.
|
|
@@ -12,7 +12,7 @@ const node_path_1 = require("node:path");
|
|
|
12
12
|
const frontmatter_1 = require("../util/frontmatter");
|
|
13
13
|
const state_1 = require("../util/state");
|
|
14
14
|
// Roottaki bu dosyalar agent araçları içindir, studio modeli değil → push atlanır.
|
|
15
|
-
const ROOT_SKIP_FILES = new Set(["AGENTS.md", "CLAUDE.md"
|
|
15
|
+
const ROOT_SKIP_FILES = new Set(["AGENTS.md", "CLAUDE.md"]);
|
|
16
16
|
// Studio'nun desteklediği metin tabanlı model uzantıları (ModelType değerleri).
|
|
17
17
|
// Bu listede olmayan uzantılar push'ta atlanır ve kullanıcıya bildirilir.
|
|
18
18
|
// Atlanmaya devam edenler: appSettings (settings senaryosu), erronous/step (gerçek model değil).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"push.js","sourceRoot":"","sources":["../../../../src/control/push.ts"],"names":[],"mappings":";AAAA,iFAAiF;AACjF,kGAAkG;AAClG,EAAE;AACF,oDAAoD;AACpD,qDAAqD;AACrD,qGAAqG;;;AAErG,+CAA2D;AAC3D,yCAAuE;AACvE,qDAAuD;AACvD,yCAAsD;AAGtD,mFAAmF;AACnF,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"push.js","sourceRoot":"","sources":["../../../../src/control/push.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,26 +4,21 @@ exports.reshapeStructure = void 0;
|
|
|
4
4
|
const promises_1 = require("node:fs/promises");
|
|
5
5
|
const node_path_1 = require("node:path");
|
|
6
6
|
const KIT_DIRNAME = ".ai-kit";
|
|
7
|
-
// Claude Code'da render-check sırasında her browser aksiyonunda izin sorulmasını önlemek için
|
|
8
|
-
// Playwright MCP sunucusunu baştan onaylarız. `mcp__playwright` kuralı o sunucunun TÜM araçlarını
|
|
9
|
-
// kapsar. (opencode tarafı opencode.jsonc'deki `permission` bloğu ile aynı işi yapar.)
|
|
10
7
|
const CLAUDE_ALLOW_RULES = ["mcp__playwright"];
|
|
11
|
-
//
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
const
|
|
15
|
-
// Bir dosyayı taşır; kaynak yoksa sessizce atlar (idempotent re-pull için).
|
|
16
|
-
async function moveIfPresent(from, to) {
|
|
8
|
+
// Dosya ya da klasör olabilir.
|
|
9
|
+
const MOVE_TO_ROOT = ["AGENTS.md", "CLAUDE.md", ".mcp.json", ".opencode"];
|
|
10
|
+
async function moveToRoot(kit, root, name) {
|
|
11
|
+
const from = (0, node_path_1.join)(kit, name);
|
|
17
12
|
try {
|
|
18
|
-
await (0, promises_1.
|
|
13
|
+
await (0, promises_1.stat)(from);
|
|
19
14
|
}
|
|
20
15
|
catch {
|
|
21
|
-
/* kaynak yok → atla */
|
|
16
|
+
return; /* kaynak yok → atla */
|
|
22
17
|
}
|
|
18
|
+
const to = (0, node_path_1.join)(root, name);
|
|
19
|
+
await (0, promises_1.rm)(to, { recursive: true, force: true });
|
|
20
|
+
await (0, promises_1.rename)(from, to);
|
|
23
21
|
}
|
|
24
|
-
// `.claude/settings.local.json`'a Playwright izin kurallarını MERGE eder (kullanıcının mevcut
|
|
25
|
-
// ayarlarını/izinlerini korur — yalnız eksik kuralları ekler). Dosya yoksa sıfırdan oluşturur.
|
|
26
|
-
// settings.local.json seçildi: kullanıcı-lokal dosyadır, Claude Code onu git'e önermez.
|
|
27
22
|
async function mergeClaudePermissions(claudeDir) {
|
|
28
23
|
const settingsPath = (0, node_path_1.join)(claudeDir, "settings.local.json");
|
|
29
24
|
let settings = {};
|
|
@@ -40,22 +35,13 @@ async function mergeClaudePermissions(claudeDir) {
|
|
|
40
35
|
allow.push(rule);
|
|
41
36
|
}
|
|
42
37
|
settings.permissions.allow = allow;
|
|
43
|
-
// Proje .mcp.json'undaki sunucular (playwright) onay prompt'suz yüklensin — prompt kaçırılırsa
|
|
44
|
-
// agent tarayıcısız kalıyor ve render-check'i sessizce atlıyordu.
|
|
45
38
|
settings.enableAllProjectMcpServers = true;
|
|
46
39
|
await (0, promises_1.writeFile)(settingsPath, JSON.stringify(settings, null, 2) + "\n", "utf8");
|
|
47
40
|
}
|
|
48
|
-
/**
|
|
49
|
-
* copyAiKit workspace'e kit'i kopyaladıktan SONRA çalışır; kit'i ajan
|
|
50
|
-
* tooling'i için yeniden şekillendirir:
|
|
51
|
-
* - AGENTS.md / CLAUDE.md / opencode.jsonc / .mcp.json → workspace kökü (kit'ten taşınır)
|
|
52
|
-
* - skills/ → .claude/skills (kopyalanır; kit içinde de kalır)
|
|
53
|
-
* - .claude/settings.local.json ← Playwright izin kuralları merge'lenir (render-check prompt'larını susturur)
|
|
54
|
-
*/
|
|
55
41
|
async function reshapeStructure(root) {
|
|
56
42
|
const kit = (0, node_path_1.join)(root, KIT_DIRNAME);
|
|
57
|
-
for (const
|
|
58
|
-
await
|
|
43
|
+
for (const name of MOVE_TO_ROOT) {
|
|
44
|
+
await moveToRoot(kit, root, name);
|
|
59
45
|
}
|
|
60
46
|
const claudeDir = (0, node_path_1.join)(root, ".claude");
|
|
61
47
|
await (0, promises_1.mkdir)(claudeDir, { recursive: true });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspaceSetup.js","sourceRoot":"","sources":["../../../../src/control/workspaceSetup.ts"],"names":[],"mappings":";;;AAAA,+
|
|
1
|
+
{"version":3,"file":"workspaceSetup.js","sourceRoot":"","sources":["../../../../src/control/workspaceSetup.ts"],"names":[],"mappings":";;;AAAA,+CAAoF;AACpF,yCAAiC;AAEjC,MAAM,WAAW,GAAG,SAAS,CAAC;AAC9B,MAAM,kBAAkB,GAAG,CAAC,iBAAiB,CAAC,CAAC;AAC/C,+BAA+B;AAC/B,MAAM,YAAY,GAAG,CAAC,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;AAE1E,KAAK,UAAU,UAAU,CAAC,GAAW,EAAE,IAAY,EAAE,IAAY;IAC7D,MAAM,IAAI,GAAG,IAAA,gBAAI,EAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC7B,IAAI;QACA,MAAM,IAAA,eAAI,EAAC,IAAI,CAAC,CAAC;KACpB;IAAC,MAAM;QACJ,OAAO,CAAC,uBAAuB;KAClC;IACD,MAAM,EAAE,GAAG,IAAA,gBAAI,EAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC5B,MAAM,IAAA,aAAE,EAAC,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/C,MAAM,IAAA,iBAAM,EAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAC3B,CAAC;AAED,KAAK,UAAU,sBAAsB,CAAC,SAAiB;IACnD,MAAM,YAAY,GAAG,IAAA,gBAAI,EAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC;IAC5D,IAAI,QAAQ,GAAiF,EAAE,CAAC;IAChG,IAAI;QACA,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,IAAA,mBAAQ,EAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;KAC/D;IAAC,MAAM;QACJ,gCAAgC;KACnC;IACD,QAAQ,CAAC,WAAW,KAAK,EAAE,CAAC;IAC5B,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1F,KAAK,MAAM,IAAI,IAAI,kBAAkB,EAAE;QACnC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC/C;IACD,QAAQ,CAAC,WAAW,CAAC,KAAK,GAAG,KAAK,CAAC;IACnC,QAAQ,CAAC,0BAA0B,GAAG,IAAI,CAAC;IAC3C,MAAM,IAAA,oBAAS,EAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC;AACpF,CAAC;AAEM,KAAK,UAAU,gBAAgB,CAAC,IAAY;IAC/C,MAAM,GAAG,GAAG,IAAA,gBAAI,EAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IAEpC,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE;QAC7B,MAAM,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;KACrC;IAED,MAAM,SAAS,GAAG,IAAA,gBAAI,EAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACxC,MAAM,IAAA,gBAAK,EAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5C,MAAM,IAAA,aAAE,EAAC,IAAA,gBAAI,EAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,IAAA,gBAAI,EAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3F,MAAM,sBAAsB,CAAC,SAAS,CAAC,CAAC;AAC5C,CAAC;AAXD,4CAWC"}
|
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.VERSION = void 0;
|
|
4
4
|
// This file is auto-generated by scripts/update-version.js — do not edit manually.
|
|
5
|
-
exports.VERSION = "4.0.
|
|
5
|
+
exports.VERSION = "4.0.4-0";
|
|
6
6
|
//# sourceMappingURL=version.js.map
|