@trungtamcongnghedigital/vsaf 1.0.0 → 1.0.1

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.
Files changed (37) hide show
  1. package/package.json +1 -1
  2. package/packages/cli/dist/commands/apply-pack.d.ts +0 -29
  3. package/packages/cli/dist/commands/apply-pack.d.ts.map +0 -1
  4. package/packages/cli/dist/commands/apply-pack.js +0 -30
  5. package/packages/cli/dist/commands/apply-pack.js.map +0 -1
  6. package/packages/cli/dist/commands/install/engine-range.d.ts +0 -13
  7. package/packages/cli/dist/commands/install/engine-range.d.ts.map +0 -1
  8. package/packages/cli/dist/commands/install/engine-range.js +0 -50
  9. package/packages/cli/dist/commands/install/engine-range.js.map +0 -1
  10. package/packages/cli/dist/commands/install/engine-version.d.ts +0 -16
  11. package/packages/cli/dist/commands/install/engine-version.d.ts.map +0 -1
  12. package/packages/cli/dist/commands/install/engine-version.js +0 -43
  13. package/packages/cli/dist/commands/install/engine-version.js.map +0 -1
  14. package/packages/cli/dist/commands/install/flow-home.d.ts +0 -24
  15. package/packages/cli/dist/commands/install/flow-home.d.ts.map +0 -1
  16. package/packages/cli/dist/commands/install/flow-home.js +0 -63
  17. package/packages/cli/dist/commands/install/flow-home.js.map +0 -1
  18. package/packages/cli/dist/commands/install/flow-script.d.ts +0 -97
  19. package/packages/cli/dist/commands/install/flow-script.d.ts.map +0 -1
  20. package/packages/cli/dist/commands/install/flow-script.js +0 -300
  21. package/packages/cli/dist/commands/install/flow-script.js.map +0 -1
  22. package/packages/cli/dist/commands/install/flow-source.d.ts +0 -165
  23. package/packages/cli/dist/commands/install/flow-source.d.ts.map +0 -1
  24. package/packages/cli/dist/commands/install/flow-source.js +0 -549
  25. package/packages/cli/dist/commands/install/flow-source.js.map +0 -1
  26. package/packages/cli/dist/commands/install/install-plan.d.ts +0 -80
  27. package/packages/cli/dist/commands/install/install-plan.d.ts.map +0 -1
  28. package/packages/cli/dist/commands/install/install-plan.js +0 -164
  29. package/packages/cli/dist/commands/install/install-plan.js.map +0 -1
  30. package/packages/cli/dist/commands/install/option-channels.d.ts +0 -20
  31. package/packages/cli/dist/commands/install/option-channels.d.ts.map +0 -1
  32. package/packages/cli/dist/commands/install/option-channels.js +0 -40
  33. package/packages/cli/dist/commands/install/option-channels.js.map +0 -1
  34. package/packages/cli/dist/commands/install/prompt-read.d.ts +0 -27
  35. package/packages/cli/dist/commands/install/prompt-read.d.ts.map +0 -1
  36. package/packages/cli/dist/commands/install/prompt-read.js +0 -60
  37. package/packages/cli/dist/commands/install/prompt-read.js.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@trungtamcongnghedigital/vsaf",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "description": "is it ready to use ?",
5
5
  "main": "packages/core/dist/index.js",
6
6
  "types": "packages/core/dist/index.d.ts",
@@ -1,29 +0,0 @@
1
- import { type InstallResult } from './install.js';
2
- /**
3
- * Cài một pack nằm sẵn trên đĩa.
4
- *
5
- * Đây là lối vào cho script của chính flow: `install.sh` của flow gọi lệnh này để
6
- * engine làm phần chung — rải skill, nhân bản sang thư mục IDE, quản gitignore, ghi
7
- * sổ để gỡ được — rồi flow tự làm phần riêng của nó.
8
- *
9
- * Bên trong không có gì mới: `execInstall` vốn đã nhận được một thư mục qua tuỳ chọn
10
- * nội bộ `_packDir`, trước nay chỉ test dùng. Mở nó ra thành lệnh thật giữ cho đường
11
- * cài đặt chỉ có một, nên sổ ghi và cách gỡ không phải viết lại lần thứ hai.
12
- */
13
- export interface ApplyPackOptions {
14
- force?: boolean;
15
- skipDeps?: boolean;
16
- dryRun?: boolean;
17
- verbose?: boolean;
18
- projectRoot?: boolean;
19
- /**
20
- * Bỏ qua bước cài graphify.
21
- *
22
- * Có cờ `--skip-graphify` ngoài dòng lệnh chứ không chỉ dùng trong test: bước này gọi
23
- * `pipx install` và ghi vào thư mục công cụ dưới home, tức là ra ngoài dự án. Một lượt
24
- * chạy tự động hoặc một lần cài lại flow không nên trả giá đó lần nữa.
25
- */
26
- _skipGraphify?: boolean;
27
- }
28
- export declare function execApplyPack(packDir: string, projectPath: string, options?: ApplyPackOptions): InstallResult;
29
- //# sourceMappingURL=apply-pack.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"apply-pack.d.ts","sourceRoot":"","sources":["../../src/commands/apply-pack.ts"],"names":[],"mappings":"AAEA,OAAO,EAAe,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAI/D;;;;;;;;;;GAUG;AACH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,gBAAqB,GAC7B,aAAa,CAwBf"}
@@ -1,30 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.execApplyPack = execApplyPack;
4
- const fs_1 = require("fs");
5
- const path_1 = require("path");
6
- const install_js_1 = require("./install.js");
7
- const install_plan_js_1 = require("./install/install-plan.js");
8
- const skill_js_1 = require("./skill.js");
9
- function execApplyPack(packDir, projectPath, options = {}) {
10
- const dir = (0, path_1.resolve)(packDir);
11
- // Nói ra ngay tại đây thay vì để hỏng sâu bên trong: người đọc lỗi này là người
12
- // vừa viết `install.sh` cho flow của họ, và thứ họ cần biết là thư mục đưa vào sai.
13
- if (!(0, fs_1.existsSync)((0, path_1.join)(dir, 'pack.yaml'))) {
14
- throw new Error(`"${dir}" không phải thư mục flow — không tìm thấy pack.yaml trong đó.`);
15
- }
16
- // Tên cài đặt phải đến từ chính `pack.yaml`, không phải tên thư mục đang giữ nó: một
17
- // cache bị đổi tên, một tarball giải nén ra chỗ khác, một worktree checkout — không
18
- // cái nào có nghĩa vụ giữ đúng tên thư mục gốc. Dùng `basename(dir)` làm tên cài đặt
19
- // sẽ làm sổ ghi mang tên thư mục thay vì tên pack, và `vsaf uninstall <tên-thật>` sẽ
20
- // không tìm thấy gì để gỡ. Chỉ lùi về tên thư mục khi chính `pack.yaml` không khai `name`.
21
- const name = (0, skill_js_1.readPackInfoFrom)(dir).name ?? (0, path_1.basename)(dir);
22
- // Kế hoạch trước, cờ dòng lệnh sau — để một cờ người dùng gõ tay là cờ thắng khi hai
23
- // bên nói khác nhau. Hai tập không giao nhau (kế hoạch mang hình dạng dự án, dòng lệnh
24
- // mang năm cờ hành vi), nên thứ tự này chỉ là để dành cho tương lai.
25
- const planPath = process.env[install_plan_js_1.PLAN_ENV];
26
- const plan = planPath ? (0, install_plan_js_1.readInstallPlan)(planPath, projectPath, name) : null;
27
- const fromPlan = plan ? (0, install_plan_js_1.planToOptions)(plan) : {};
28
- return (0, install_js_1.execInstall)(name, projectPath, { ...fromPlan, ...options, _packDir: dir });
29
- }
30
- //# sourceMappingURL=apply-pack.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"apply-pack.js","sourceRoot":"","sources":["../../src/commands/apply-pack.ts"],"names":[],"mappings":";;AAiCA,sCA4BC;AA7DD,2BAAgC;AAChC,+BAA+C;AAC/C,6CAA+D;AAC/D,+DAAqF;AACrF,yCAA8C;AA6B9C,SAAgB,aAAa,CAC3B,OAAe,EACf,WAAmB,EACnB,UAA4B,EAAE;IAE9B,MAAM,GAAG,GAAG,IAAA,cAAO,EAAC,OAAO,CAAC,CAAC;IAE7B,gFAAgF;IAChF,oFAAoF;IACpF,IAAI,CAAC,IAAA,eAAU,EAAC,IAAA,WAAI,EAAC,GAAG,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,IAAI,GAAG,gEAAgE,CAAC,CAAC;IAC3F,CAAC;IAED,qFAAqF;IACrF,oFAAoF;IACpF,qFAAqF;IACrF,qFAAqF;IACrF,2FAA2F;IAC3F,MAAM,IAAI,GAAG,IAAA,2BAAgB,EAAC,GAAG,CAAC,CAAC,IAAI,IAAI,IAAA,eAAQ,EAAC,GAAG,CAAC,CAAC;IAEzD,qFAAqF;IACrF,uFAAuF;IACvF,qEAAqE;IACrE,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,0BAAQ,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAA,iCAAe,EAAC,QAAQ,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5E,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,IAAA,+BAAa,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAEjD,OAAO,IAAA,wBAAW,EAAC,IAAI,EAAE,WAAW,EAAE,EAAE,GAAG,QAAQ,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;AACpF,CAAC"}
@@ -1,13 +0,0 @@
1
- /**
2
- * Chốt chặn giữa flow và engine.
3
- *
4
- * Flow phát hành ở repo riêng, không cùng nhịp với engine, nên một flow mới hoàn toàn
5
- * có thể đòi tính năng engine trên máy chưa có. Chặn ở đây — trước khi ghi file nào —
6
- * đổi một lỗi lạ giữa chừng cài đặt thành một câu bảo nâng engine.
7
- *
8
- * Chỉ nhận đúng một dạng khai báo. Không kéo `semver` về chỉ để đọc một dấu `>=`:
9
- * repo này không có dependency đó, và mọi dạng khai báo khác chưa ai cần tới.
10
- */
11
- export declare function satisfiesEngineRange(version: string, range: string): boolean;
12
- export declare function assertEngineSatisfies(packName: string, requires: string | undefined, engineVersion: string): void;
13
- //# sourceMappingURL=engine-range.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"engine-range.d.ts","sourceRoot":"","sources":["../../../src/commands/install/engine-range.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAmB5E;AAED,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,aAAa,EAAE,MAAM,GACpB,IAAI,CAgBN"}
@@ -1,50 +0,0 @@
1
- "use strict";
2
- /**
3
- * Chốt chặn giữa flow và engine.
4
- *
5
- * Flow phát hành ở repo riêng, không cùng nhịp với engine, nên một flow mới hoàn toàn
6
- * có thể đòi tính năng engine trên máy chưa có. Chặn ở đây — trước khi ghi file nào —
7
- * đổi một lỗi lạ giữa chừng cài đặt thành một câu bảo nâng engine.
8
- *
9
- * Chỉ nhận đúng một dạng khai báo. Không kéo `semver` về chỉ để đọc một dấu `>=`:
10
- * repo này không có dependency đó, và mọi dạng khai báo khác chưa ai cần tới.
11
- */
12
- Object.defineProperty(exports, "__esModule", { value: true });
13
- exports.satisfiesEngineRange = satisfiesEngineRange;
14
- exports.assertEngineSatisfies = assertEngineSatisfies;
15
- const RANGE = /^>=\s*(\d+)\.(\d+)\.(\d+)$/;
16
- const VERSION = /^(\d+)\.(\d+)\.(\d+)/;
17
- function satisfiesEngineRange(version, range) {
18
- const wanted = RANGE.exec(range.trim());
19
- if (!wanted) {
20
- throw new Error(`requiresEngine: "${range}" không đọc được. Dạng duy nhất được nhận là ">=X.Y.Z", ví dụ ">=6.20.0".`);
21
- }
22
- // Phần đuôi phát hành thử được bỏ qua: '6.20.0-rc.1' tính là 6.20.0.
23
- const have = VERSION.exec(version.trim());
24
- if (!have)
25
- return false;
26
- for (let part = 1; part <= 3; part++) {
27
- const mine = Number(have[part]);
28
- const need = Number(wanted[part]);
29
- if (mine > need)
30
- return true;
31
- if (mine < need)
32
- return false;
33
- }
34
- return true;
35
- }
36
- function assertEngineSatisfies(packName, requires, engineVersion) {
37
- if (!requires)
38
- return;
39
- // Chạy thẳng từ mã nguồn thì không có package.json đã phát hành để đọc. Chặn hết
40
- // mọi flow ở đây sẽ làm hỏng máy người phát triển, nên chỉ nói ra rồi đi tiếp.
41
- if (engineVersion === 'unknown') {
42
- console.log(`[vsaf] không đọc được bản engine nên bỏ qua chốt chặn của flow "${packName}" (${requires})`);
43
- return;
44
- }
45
- if (satisfiesEngineRange(engineVersion, requires))
46
- return;
47
- throw new Error(`Flow "${packName}" cần vsaf ${requires}, máy đang chạy ${engineVersion}.\n`
48
- + ' Nâng engine rồi cài lại: npm i -g @ngocsangairvds/vsaf@latest');
49
- }
50
- //# sourceMappingURL=engine-range.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"engine-range.js","sourceRoot":"","sources":["../../../src/commands/install/engine-range.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;AAKH,oDAmBC;AAED,sDAoBC;AA5CD,MAAM,KAAK,GAAG,4BAA4B,CAAC;AAC3C,MAAM,OAAO,GAAG,sBAAsB,CAAC;AAEvC,SAAgB,oBAAoB,CAAC,OAAe,EAAE,KAAa;IACjE,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IACxC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CACb,oBAAoB,KAAK,2EAA2E,CACrG,CAAC;IACJ,CAAC;IAED,qEAAqE;IACrE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAC1C,IAAI,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IAExB,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC;QACrC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAChC,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QAClC,IAAI,IAAI,GAAG,IAAI;YAAE,OAAO,IAAI,CAAC;QAC7B,IAAI,IAAI,GAAG,IAAI;YAAE,OAAO,KAAK,CAAC;IAChC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAgB,qBAAqB,CACnC,QAAgB,EAChB,QAA4B,EAC5B,aAAqB;IAErB,IAAI,CAAC,QAAQ;QAAE,OAAO;IAEtB,iFAAiF;IACjF,+EAA+E;IAC/E,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,mEAAmE,QAAQ,MAAM,QAAQ,GAAG,CAAC,CAAC;QAC1G,OAAO;IACT,CAAC;IAED,IAAI,oBAAoB,CAAC,aAAa,EAAE,QAAQ,CAAC;QAAE,OAAO;IAE1D,MAAM,IAAI,KAAK,CACb,SAAS,QAAQ,cAAc,QAAQ,mBAAmB,aAAa,KAAK;UAC1E,kEAAkE,CACrE,CAAC;AACJ,CAAC"}
@@ -1,16 +0,0 @@
1
- /**
2
- * Real package version, read from the root package.json at runtime.
3
- *
4
- * Walks up from this file (dist/commands/install → … → package root) and picks the
5
- * first package.json whose name is the published root (`…/vsaf`), skipping the
6
- * workspace's own `@vsaf/cli`. Reading it at runtime keeps `vsaf --version` truthful
7
- * after a release bump — the previous hardcoded '0.1.0' reported the (never-bumped)
8
- * workspace version instead.
9
- *
10
- * Lives here rather than in `index.ts` because the install path needs it too: the
11
- * `requiresEngine` gate compares a flow's demand against this number, and a version it
12
- * cannot read means the gate never refuses anything. Left unexported in `index.ts` it
13
- * was unreachable from there, so the gate would have passed every flow in silence.
14
- */
15
- export declare function resolveEngineVersion(): string;
16
- //# sourceMappingURL=engine-version.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"engine-version.d.ts","sourceRoot":"","sources":["../../../src/commands/install/engine-version.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;GAaG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAuB7C"}
@@ -1,43 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.resolveEngineVersion = resolveEngineVersion;
4
- const fs_1 = require("fs");
5
- const path_1 = require("path");
6
- /**
7
- * Real package version, read from the root package.json at runtime.
8
- *
9
- * Walks up from this file (dist/commands/install → … → package root) and picks the
10
- * first package.json whose name is the published root (`…/vsaf`), skipping the
11
- * workspace's own `@vsaf/cli`. Reading it at runtime keeps `vsaf --version` truthful
12
- * after a release bump — the previous hardcoded '0.1.0' reported the (never-bumped)
13
- * workspace version instead.
14
- *
15
- * Lives here rather than in `index.ts` because the install path needs it too: the
16
- * `requiresEngine` gate compares a flow's demand against this number, and a version it
17
- * cannot read means the gate never refuses anything. Left unexported in `index.ts` it
18
- * was unreachable from there, so the gate would have passed every flow in silence.
19
- */
20
- function resolveEngineVersion() {
21
- let dir = __dirname;
22
- // Eight rather than the six this walk needs from its deepest known home
23
- // (`dist/commands/install`). Six was exactly enough, which means one more directory
24
- // between this file and the package root would return 'unknown' — and 'unknown'
25
- // does not fail loudly, it turns the engine gate off without a word.
26
- for (let i = 0; i < 8; i++) {
27
- try {
28
- const pkg = JSON.parse((0, fs_1.readFileSync)((0, path_1.join)(dir, 'package.json'), 'utf8'));
29
- if (typeof pkg.name === 'string' && pkg.name.endsWith('/vsaf') && pkg.version) {
30
- return pkg.version;
31
- }
32
- }
33
- catch {
34
- // no package.json here (or unreadable) — keep walking up
35
- }
36
- const parent = (0, path_1.dirname)(dir);
37
- if (parent === dir)
38
- break;
39
- dir = parent;
40
- }
41
- return 'unknown';
42
- }
43
- //# sourceMappingURL=engine-version.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"engine-version.js","sourceRoot":"","sources":["../../../src/commands/install/engine-version.ts"],"names":[],"mappings":";;AAiBA,oDAuBC;AAxCD,2BAAkC;AAClC,+BAAqC;AAErC;;;;;;;;;;;;;GAaG;AACH,SAAgB,oBAAoB;IAClC,IAAI,GAAG,GAAG,SAAS,CAAC;IACpB,wEAAwE;IACxE,oFAAoF;IACpF,gFAAgF;IAChF,qEAAqE;IACrE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,iBAAY,EAAC,IAAA,WAAI,EAAC,GAAG,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAGrE,CAAC;YACF,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;gBAC9E,OAAO,GAAG,CAAC,OAAO,CAAC;YACrB,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,yDAAyD;QAC3D,CAAC;QACD,MAAM,MAAM,GAAG,IAAA,cAAO,EAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,MAAM,KAAK,GAAG;YAAE,MAAM;QAC1B,GAAG,GAAG,MAAM,CAAC;IACf,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -1,24 +0,0 @@
1
- /**
2
- * Nơi cache flow nằm trên máy, và những flow đã có trong đó.
3
- *
4
- * Tách khỏi `flow-source.ts` vì `skill.ts` cũng cần đọc: sau khi flow ra khỏi gói npm,
5
- * "những pack máy này biết" không còn là "những thư mục gói npm mang theo" nữa. Đặt
6
- * chung vào `flow-source.ts` thì `skill.ts` phải import nó, mà nó lại import `skill.ts`
7
- * — một vòng import, và cách vòng đó hỏng phụ thuộc vào thứ tự nạp module.
8
- *
9
- * Chỉ đọc đĩa. Không lệnh git nào ở đây, nên gọi từ đâu cũng an toàn.
10
- */
11
- /** Tên flow phải là một thư mục ở gốc repo, không phải một đường dẫn. */
12
- export declare function assertFlowName(flow: string): void;
13
- export declare function flowsCacheDir(): string;
14
- /**
15
- * Bản flow đã có sẵn trong cache trên máy, hoặc rỗng nếu chưa từng kéo về.
16
- *
17
- * Đọc thôi, không chạm git. Có đúng một chỗ cần thế: `--dry-run` hứa không ghi gì, nên
18
- * nó không được phép kéo repo về — kéo là ghi vào cache, và trên đường mặc định còn là
19
- * trả giá một lượt clone qua mạng cho một lệnh vốn chỉ để đọc.
20
- */
21
- export declare function cachedFlowDir(flow: string): string | null;
22
- /** Những flow đã kéo về máy — thư mục trong cache có `pack.yaml`. */
23
- export declare function cachedFlowNames(): string[];
24
- //# sourceMappingURL=flow-home.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"flow-home.d.ts","sourceRoot":"","sources":["../../../src/commands/install/flow-home.ts"],"names":[],"mappings":"AAIA;;;;;;;;;GASG;AAEH,yEAAyE;AACzE,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAUjD;AAED,wBAAgB,aAAa,IAAI,MAAM,CAMtC;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAIzD;AAED,qEAAqE;AACrE,wBAAgB,eAAe,IAAI,MAAM,EAAE,CAW1C"}
@@ -1,63 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.assertFlowName = assertFlowName;
4
- exports.flowsCacheDir = flowsCacheDir;
5
- exports.cachedFlowDir = cachedFlowDir;
6
- exports.cachedFlowNames = cachedFlowNames;
7
- const fs_1 = require("fs");
8
- const os_1 = require("os");
9
- const path_1 = require("path");
10
- /**
11
- * Nơi cache flow nằm trên máy, và những flow đã có trong đó.
12
- *
13
- * Tách khỏi `flow-source.ts` vì `skill.ts` cũng cần đọc: sau khi flow ra khỏi gói npm,
14
- * "những pack máy này biết" không còn là "những thư mục gói npm mang theo" nữa. Đặt
15
- * chung vào `flow-source.ts` thì `skill.ts` phải import nó, mà nó lại import `skill.ts`
16
- * — một vòng import, và cách vòng đó hỏng phụ thuộc vào thứ tự nạp module.
17
- *
18
- * Chỉ đọc đĩa. Không lệnh git nào ở đây, nên gọi từ đâu cũng an toàn.
19
- */
20
- /** Tên flow phải là một thư mục ở gốc repo, không phải một đường dẫn. */
21
- function assertFlowName(flow) {
22
- // Ba hình dạng, một lý do: tên flow đi thẳng vào `join(cache, flow)` và vào
23
- // `sparse-checkout add`, nên một tên mang dấu phân cách hay `..` là một đường dẫn
24
- // trỏ ra ngoài cache — và `--refresh-flows` thì `rmSync` đúng chỗ nó trỏ tới.
25
- if (flow.trim() === '' || flow.includes('/') || flow.includes('\\') || flow.includes('..')) {
26
- throw new Error(`"${flow}" không phải tên flow hợp lệ.\n`
27
- + ' Tên flow là tên một thư mục ở gốc repo flows — không chứa "/", "\\" hay "..".');
28
- }
29
- }
30
- function flowsCacheDir() {
31
- // `||` chứ không phải `??`: `VSAF_HOME=""` vẫn phải rơi về mặc định. Nếu không, `cache`
32
- // thành đường dẫn tương đối `flows` dưới thư mục hiện hành, và `ensureCache` sẽ `rmSync`
33
- // đúng thư mục đó — xoá nhầm một thư mục `./flows` chẳng liên quan gì của người dùng.
34
- const home = process.env.VSAF_HOME || (0, path_1.join)((0, os_1.homedir)(), '.vsaf');
35
- return (0, path_1.join)(home, 'flows');
36
- }
37
- /**
38
- * Bản flow đã có sẵn trong cache trên máy, hoặc rỗng nếu chưa từng kéo về.
39
- *
40
- * Đọc thôi, không chạm git. Có đúng một chỗ cần thế: `--dry-run` hứa không ghi gì, nên
41
- * nó không được phép kéo repo về — kéo là ghi vào cache, và trên đường mặc định còn là
42
- * trả giá một lượt clone qua mạng cho một lệnh vốn chỉ để đọc.
43
- */
44
- function cachedFlowDir(flow) {
45
- assertFlowName(flow);
46
- const dir = (0, path_1.join)(flowsCacheDir(), flow);
47
- return (0, fs_1.existsSync)((0, path_1.join)(dir, 'pack.yaml')) ? dir : null;
48
- }
49
- /** Những flow đã kéo về máy — thư mục trong cache có `pack.yaml`. */
50
- function cachedFlowNames() {
51
- const cache = flowsCacheDir();
52
- try {
53
- return (0, fs_1.readdirSync)(cache, { withFileTypes: true })
54
- .filter(entry => entry.isDirectory() && (0, fs_1.existsSync)((0, path_1.join)(cache, entry.name, 'pack.yaml')))
55
- .map(entry => entry.name)
56
- .sort();
57
- }
58
- catch {
59
- // Chưa có cache. Không phải sự cố, chỉ là chưa cài flow nào.
60
- return [];
61
- }
62
- }
63
- //# sourceMappingURL=flow-home.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"flow-home.js","sourceRoot":"","sources":["../../../src/commands/install/flow-home.ts"],"names":[],"mappings":";;AAgBA,wCAUC;AAED,sCAMC;AASD,sCAIC;AAGD,0CAWC;AA7DD,2BAA6C;AAC7C,2BAA6B;AAC7B,+BAA4B;AAE5B;;;;;;;;;GASG;AAEH,yEAAyE;AACzE,SAAgB,cAAc,CAAC,IAAY;IACzC,4EAA4E;IAC5E,kFAAkF;IAClF,8EAA8E;IAC9E,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3F,MAAM,IAAI,KAAK,CACb,IAAI,IAAI,iCAAiC;cACvC,iFAAiF,CACpF,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAgB,aAAa;IAC3B,wFAAwF;IACxF,yFAAyF;IACzF,sFAAsF;IACtF,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,IAAA,WAAI,EAAC,IAAA,YAAO,GAAE,EAAE,OAAO,CAAC,CAAC;IAC/D,OAAO,IAAA,WAAI,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC7B,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,aAAa,CAAC,IAAY;IACxC,cAAc,CAAC,IAAI,CAAC,CAAC;IACrB,MAAM,GAAG,GAAG,IAAA,WAAI,EAAC,aAAa,EAAE,EAAE,IAAI,CAAC,CAAC;IACxC,OAAO,IAAA,eAAU,EAAC,IAAA,WAAI,EAAC,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AACzD,CAAC;AAED,qEAAqE;AACrE,SAAgB,eAAe;IAC7B,MAAM,KAAK,GAAG,aAAa,EAAE,CAAC;IAC9B,IAAI,CAAC;QACH,OAAO,IAAA,gBAAW,EAAC,KAAK,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;aAC/C,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,IAAA,eAAU,EAAC,IAAA,WAAI,EAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC;aACxF,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;aACxB,IAAI,EAAE,CAAC;IACZ,CAAC;IAAC,MAAM,CAAC;QACP,6DAA6D;QAC7D,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC"}
@@ -1,97 +0,0 @@
1
- import type { FlowSource } from './flow-source.js';
2
- /**
3
- * Chạy file cài đặt của chính flow.
4
- *
5
- * Mỗi flow mang theo file cài của nó, để một flow tương lai cần làm việc mà engine
6
- * chưa có khái niệm thì người viết flow thêm dòng vào file đó và phát hành lại flow —
7
- * không ai phải chạm vào engine, không ai phải chờ engine ra bản mới.
8
- *
9
- * Hôm nay cả bốn flow đều dùng đúng một nội dung dài một dòng: gọi `vsaf apply-pack`.
10
- * Đó là dự tính, không phải thiếu sót.
11
- */
12
- export interface FlowScriptContext {
13
- source: FlowSource;
14
- flow: string;
15
- projectPath: string;
16
- projectName: string;
17
- engineVersion: string;
18
- /**
19
- * File kế hoạch lượt cài, hoặc chuỗi rỗng.
20
- *
21
- * LUÔN đặt biến này, kể cả khi rỗng: `runFlowScript` trộn `process.env` vào môi trường
22
- * của tiến trình con, nên bỏ trống khoá sẽ để một giá trị còn sót trong shell của người
23
- * dùng chảy vào lượt cài này.
24
- */
25
- planPath: string;
26
- }
27
- /**
28
- * Những cờ engine biết mà lượt cài thật cũng phải biết.
29
- *
30
- * Đây là chỗ `vsaf install --skip-deps` từng mất tác dụng: engine chỉ chuyển cho script
31
- * phần người dùng gõ sau `--`, nên bốn cờ engine tự nhận ở dòng lệnh đứng lại ở tiến
32
- * trình cha. Đo được: `vsaf install sdlc --skip-deps` vẫn chạy `npm install` thật, tải
33
- * 255 gói, mất 2 phút; và `--force` thì in `⊘ (exists, use --force to overwrite)` —
34
- * làm đúng ngược lại điều được yêu cầu, không báo lỗi.
35
- */
36
- export interface FlowScriptFlags {
37
- force?: boolean;
38
- skipDeps?: boolean;
39
- skipGraphify?: boolean;
40
- projectRoot?: boolean;
41
- verbose?: boolean;
42
- }
43
- /**
44
- * Dòng lệnh đưa cho script của flow: cờ engine trước, cờ người dùng gõ sau `--` sau.
45
- *
46
- * Đưa vào **tham số** chứ không vào một biến môi trường kiểu `VSAF_INSTALL_FLAGS`, vì
47
- * mẫu `install.sh` ở §4.3 spec đã có `"$@"` ở cuối: người viết flow không phải thêm gì,
48
- * không phải nhớ bỏ dấu ngoặc kép để bash tách từ, và không phải nghĩ về chuỗi rỗng.
49
- * Mọi cờ ở đây đều là cờ `vsaf apply-pack` nhận, tức là đúng lệnh mà `"$@"` chảy vào.
50
- *
51
- * Cờ engine đứng trước cờ người dùng, để một cờ người dùng gõ tay là cờ thắng khi hai
52
- * bên nói khác nhau.
53
- */
54
- export declare function flowScriptArgs(flags: FlowScriptFlags, passthrough?: string[]): string[];
55
- export declare function flowScriptName(platform: NodeJS.Platform): string;
56
- export declare function flowScriptEnv(context: FlowScriptContext): Record<string, string>;
57
- /**
58
- * Script chưa hề chạy: thiếu file cài cho hệ điều hành này, thiếu bash, hoặc tiến trình
59
- * không spawn được.
60
- *
61
- * Có lớp riêng vì phía gọi phải phân biệt được. Khi script ĐÃ chạy rồi mới thoát khác 0,
62
- * nó có thể đã rải file và đã ghi sổ, nên engine vẫn phải đọc sổ và in danh sách vấn đề
63
- * của tự kiểm. Khi nó chưa chạy thì không có gì để đọc, và ba dòng chẩn đoán "flow không
64
- * ghi sổ, cần gọi apply-pack" ở đó là ba dòng chỉ sai hướng.
65
- */
66
- export declare class FlowScriptNotRunError extends Error {
67
- }
68
- export interface FlowScriptFailure {
69
- status?: number | null;
70
- /**
71
- * Tín hiệu đã giết tiến trình, nếu có.
72
- *
73
- * Có mặt vì lượt tràn bộ đệm để lại `status: null` cùng `signal: 'SIGTERM'` — đo được
74
- * kể cả khi script định thoát mã 3 ngay sau khi tràn. `code === 'ENOBUFS'` mới là thứ
75
- * phép phân loại dựa vào, nhưng giữ trường này để hình dạng ở đây khớp hình dạng
76
- * `spawnSync` thật sự trả về.
77
- */
78
- signal?: NodeJS.Signals;
79
- code?: string;
80
- message?: string;
81
- stdout?: Buffer;
82
- stderr?: Buffer;
83
- }
84
- /** Phần cuối của những gì script đã in, đủ để thấy nó chết ở đâu. */
85
- export declare function tailOfOutput(failure: FlowScriptFailure): string;
86
- /**
87
- * Câu báo cho từng kiểu hỏng của script — ba kiểu, ba câu khác nhau.
88
- *
89
- * Tách khỏi `runFlowScript` để khoá được bằng test mà không phải dựng lại đúng cảnh
90
- * hỏng: sinh 64 MB output chỉ để xem câu chữ có đúng không là cái giá không đáng trả.
91
- */
92
- export declare function describeFlowScriptFailure(flow: string, failure: FlowScriptFailure): string;
93
- export declare function runFlowScript(context: FlowScriptContext & {
94
- flags: FlowScriptFlags;
95
- passthrough: string[];
96
- }): void;
97
- //# sourceMappingURL=flow-script.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"flow-script.d.ts","sourceRoot":"","sources":["../../../src/commands/install/flow-script.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAGnD;;;;;;;;;GASG;AAEH,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,UAAU,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB;;;;;;OAMG;IACH,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,eAAe,EAAE,WAAW,GAAE,MAAM,EAAO,GAAG,MAAM,EAAE,CAQ3F;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,GAAG,MAAM,CAEhE;AAyBD,wBAAgB,aAAa,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAkChF;AAaD;;;;;;;;GAQG;AACH,qBAAa,qBAAsB,SAAQ,KAAK;CAAG;AAEnD,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAqBD,qEAAqE;AACrE,wBAAgB,YAAY,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,CAU/D;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,MAAM,CA8B1F;AAwBD,wBAAgB,aAAa,CAC3B,OAAO,EAAE,iBAAiB,GAAG;IAAE,KAAK,EAAE,eAAe,CAAC;IAAC,WAAW,EAAE,MAAM,EAAE,CAAA;CAAE,GAC7E,IAAI,CAgGN"}