@ade-syofyan/feature-map-pro 0.21.0-pro.3 → 0.22.0-pro.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.
package/README.md CHANGED
@@ -1,19 +1,23 @@
1
+ <p align="center"><img src="assets/brand/feature-map.png" width="112" alt="Feature Map" /></p>
2
+
1
3
  # Feature Map Pro Installer
2
4
 
3
5
  Installer gratis untuk Feature Map Pro. Fitur premium memerlukan lisensi per email.
4
6
  Source mesin Pro tidak termasuk dalam paket npm; binary diunduh dari rilis resmi.
5
7
 
6
8
  ```bash
7
- npx @ade-syofyan/feature-map-pro@preview install
9
+ npx @ade-syofyan/feature-map-pro@latest install
8
10
  ```
9
11
 
10
- Masukkan email pembelian dan kode lisensi dari Ade Syofyan. Anda juga bisa memakai
12
+ Masukkan email pembelian dan kode lisensi dari Ade Syofyan. Saat mengetik atau paste,
13
+ kode disamarkan dengan titik dan jumlah karakter. Tekan Enter untuk memeriksa lisensi;
14
+ Ctrl+U menghapus input dan Ctrl+C membatalkan. Anda juga bisa memakai
11
15
  `--license-file /path/to/buyer.license`. Jangan memasukkan kode ke argumen command.
12
- Setelah aktif, buka sesi agent baru. Status: `npx @ade-syofyan/feature-map-pro@preview license status`.
16
+ Setelah aktif, buka sesi agent baru. Status: `npx @ade-syofyan/feature-map-pro@latest license status`.
13
17
 
14
18
  Platform yang tersedia tercantum di release.json: macOS Apple Silicon, Windows x64,
15
19
  dan Linux x64 (glibc, Ubuntu 22.04 atau lebih baru). Windows ARM, Linux ARM dan
16
- Alpine/musl belum didukung. Windows memakai tar bawaan Windows 10/11. Node 20+, tar, Git, serta Python 3
20
+ Alpine/musl dan Mac Intel belum didukung. Windows memakai tar bawaan Windows 10/11. Node 20+, tar, Git, serta Python 3
17
21
  untuk hook/core Free diperlukan. Installer memasang skill Codex; `--activate-only`
18
22
  mengaktifkan tanpa memasang skill. Plugin Claude Code dapat dipasang manual dari
19
23
  folder paket melalui pengelola plugin, dengan satu sumber feature-map aktif.
@@ -22,3 +26,9 @@ Lisensi diverifikasi offline sebelum instalasi skill dan setiap command premium.
22
26
  Instalasi lama disalin ke folder backup di luar folder skills. Core Free tetap MIT.
23
27
  Kompilasi mempersulit pembacaan source; bukan jaminan anti-reverse-engineering
24
28
  atau pencegahan penyalinan binary. Pembelian/harga: ade.syofyan@gmail.com.
29
+
30
+
31
+ Versi 0.22.0-pro.1 menambahkan Riwayat Aturan, Bekal Tugas dan Lanjut Tugas.
32
+ Agent membaca aturan sebelum edit dan memeriksa kembali kebijakan/bukti usang
33
+ ketika melanjutkan tugas. Review tetap wajib; laporan bukan pengunci editor atau
34
+ jaminan semua konflik kebijakan terdeteksi. Jalankan command --help untuk opsi.
Binary file
@@ -2,6 +2,7 @@
2
2
  import fs from 'node:fs';
3
3
  import {fileURLToPath} from 'node:url';
4
4
  import {activateAndInstall,ensurePayload,installSkills,runEngine} from '../lib/installer.mjs';
5
+ import {activateWithPrompt} from '../lib/prompts.mjs';
5
6
 
6
7
  const manifest=JSON.parse(fs.readFileSync(fileURLToPath(new URL('../release.json',import.meta.url)),'utf8'));
7
8
  const args=process.argv.slice(2);
@@ -17,7 +18,8 @@ if(!args.length||args[0]==='--help'||args[0]==='help') {
17
18
  if(!['--email','--license-file'].includes(args[i])||!args[i+1]) throw new Error('Opsi instalasi tidak dikenal. Gunakan --help.');
18
19
  activation.push(args[i]==='--license-file'?'--file':args[i],args[++i]);
19
20
  }
20
- activateAndInstall(()=>runEngine(root,['license','activate',...activation]),()=>{
21
+ const result=await activateWithPrompt(root,activation);
22
+ activateAndInstall(()=>result,()=>{
21
23
  const backup=activateOnly?null:installSkills(root);
22
24
  console.log('Pro aktif. Buka sesi baru untuk memuat instruksi Pro.');
23
25
  if(backup) console.log('Salinan skill sebelumnya: '+backup);
@@ -25,5 +27,5 @@ if(!args.length||args[0]==='--help'||args[0]==='help') {
25
27
  } else {
26
28
  process.exitCode=runEngine(root,args).status??2;
27
29
  }
28
- } catch(error) {console.error('Gagal: '+error.message);process.exitCode=2;}
30
+ } catch(error) {console.error('Gagal: '+error.message);process.exitCode=error.exitCode||2;}
29
31
  }
@@ -0,0 +1,68 @@
1
+ import {createInterface,emitKeypressEvents} from 'node:readline';
2
+ import {runEngine} from './installer.mjs';
3
+
4
+ export function readLicense({input=process.stdin,output=process.stdout}={}) {
5
+ return new Promise((resolve,reject)=>{
6
+ let value='',pasting=false,finished=false;
7
+ const wasRaw=Boolean(input.isRaw);
8
+ const draw=(message='')=>output.write('\r\x1b[2KKode lisensi: '+ '•'.repeat(Math.min([...value].length,20))+` (${[...value].length} karakter)`+(message?' — '+message:''));
9
+ function finish(error) {
10
+ if(finished)return;finished=true;
11
+ input.removeListener('keypress',onKey);input.removeListener('end',onEnd);input.removeListener('error',onError);
12
+ input.setRawMode(wasRaw);input.pause();output.write('\x1b[?2004l\n');
13
+ if(error)reject(error);else resolve(value);
14
+ value='';
15
+ }
16
+ const onEnd=()=>finish(new Error('Input lisensi terputus. Coba lagi.'));
17
+ const onError=()=>finish(new Error('Input lisensi tidak bisa dibaca.'));
18
+ function onKey(text,key={}) {
19
+ if(finished)return;
20
+ if(key.name==='paste-start'){pasting=true;return;}
21
+ if(key.name==='paste-end'){pasting=false;draw();return;}
22
+ if(key.ctrl&&key.name==='c')return finish(Object.assign(new Error('Aktivasi dibatalkan.'),{exitCode:130}));
23
+ if(key.ctrl&&key.name==='d')return onEnd();
24
+ if(key.ctrl&&key.name==='u'){value='';draw();return;}
25
+ if(key.name==='return'||key.name==='enter') {
26
+ if(pasting)return;
27
+ if(!value.trim()){draw('Masukkan kode lisensi');return;}
28
+ return finish();
29
+ }
30
+ if(key.name==='backspace'){value=[...value].slice(0,-1).join('');draw();return;}
31
+ if(text&&!key.ctrl&&!key.meta&&!text.includes('\x1b')) {
32
+ value+=(text.replace(/[\x00-\x20\x7f]/g,''));
33
+ if(value.length>16384)return finish(new Error('Kode lisensi terlalu panjang. Cek lagi.'));
34
+ draw();
35
+ }
36
+ }
37
+ emitKeypressEvents(input);input.setRawMode(true);
38
+ input.on('keypress',onKey);input.once('end',onEnd);input.once('error',onError);
39
+ output.write('Tempel kode lisensi, lalu tekan Enter. Ctrl+U hapus; Ctrl+C batal.\n\x1b[?2004h');draw();input.resume();
40
+ });
41
+ }
42
+
43
+ export async function activateWithPrompt(root,args,{input=process.stdin,output=process.stdout,run=runEngine}={}) {
44
+ if(!input.isTTY||!output.isTTY||args.includes('--file'))return run(root,['license','activate',...args]);
45
+ const activation=[...args];
46
+ if(!activation.includes('--email')) {
47
+ const prompt=createInterface({input,output});
48
+ try {
49
+ const email=await new Promise((resolve,reject)=>{
50
+ let settled=false;
51
+ const finish=(error,value)=>{
52
+ if(settled)return;settled=true;
53
+ prompt.removeListener('close',closed);prompt.removeListener('SIGINT',cancelled);input.removeListener('error',failed);
54
+ if(error)reject(error);else resolve(value);
55
+ };
56
+ const closed=()=>finish(new Error('Input email terputus. Coba lagi.'));
57
+ const cancelled=()=>finish(Object.assign(new Error('Aktivasi dibatalkan.'),{exitCode:130}));
58
+ const failed=()=>finish(new Error('Input email tidak bisa dibaca.'));
59
+ prompt.once('close',closed);prompt.once('SIGINT',cancelled);input.once('error',failed);
60
+ prompt.question('Email pembelian: ',value=>finish(null,value));
61
+ });
62
+ activation.push('--email',email);
63
+ } finally {prompt.close();}
64
+ }
65
+ const token=await readLicense({input,output});
66
+ output.write('Memeriksa lisensi…\n');
67
+ return run(root,['license','activate',...activation],{input:token+'\n',stdio:['pipe','inherit','inherit']});
68
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ade-syofyan/feature-map-pro",
3
- "version": "0.21.0-pro.3",
3
+ "version": "0.22.0-pro.1",
4
4
  "description": "Installer and launcher for licensed Feature Map Pro",
5
5
  "private": false,
6
6
  "type": "module",
@@ -12,7 +12,8 @@
12
12
  "lib/",
13
13
  "release.json",
14
14
  "README.md",
15
- "LICENSE"
15
+ "LICENSE",
16
+ "assets/"
16
17
  ],
17
18
  "engines": {
18
19
  "node": ">=20"
package/release.json CHANGED
@@ -1,24 +1,24 @@
1
1
  {
2
2
  "schema_version": 1,
3
- "version": "0.21.0-pro.3",
3
+ "version": "0.22.0-pro.1",
4
4
  "artifacts": {
5
5
  "darwin-arm64": {
6
- "sha256": "fa90315978ee367eb169fb885d360d8e9830769752105e050eb7f95ac49b5a7d",
7
- "engine_sha256": "189d9b537742f508de6bc2a296245a19d9422e91ce56edf7c55a9fee033266df",
8
- "size": 14320567,
9
- "url": "https://github.com/ade-syofyan/feature-map-installer/releases/download/v0.21.0-pro.2/feature-map-pro-0.21.0-pro.2-darwin-arm64.tar.gz"
6
+ "sha256": "d4d9076e1dc230b969cf1a1224195015f78b7b042580052c74424920342b1572",
7
+ "engine_sha256": "8442bfa866c4143b69fd0fd9aa8ac6f2fad906ed8ac1e116cb981dc793e4354d",
8
+ "size": 15511242,
9
+ "url": "https://github.com/ade-syofyan/feature-map-installer/releases/download/v0.22.0-pro.1/feature-map-pro-0.22.0-pro.1-darwin-arm64.tar.gz"
10
10
  },
11
11
  "linux-x64": {
12
- "sha256": "39bf4a0c239c0de291c27c7d7e684fef795f2de5e855072bc46868f2832c7ba4",
13
- "engine_sha256": "5da00bbd833bc15c3ad0d98017e0a7127df861ac446455768b23b2950f7fee1a",
14
- "size": 18223616,
15
- "url": "https://github.com/ade-syofyan/feature-map-installer/releases/download/v0.21.0-pro.2/feature-map-pro-0.21.0-pro.2-linux-x64.tar.gz"
12
+ "sha256": "407bd58f870d34f6315dd1d94a4acaa93ce3edcbd2eee90f631809a020869ec8",
13
+ "engine_sha256": "c6efcfabc2e400f73f6525adf0092c8a069cc2c819f7b5af8f814cf8bae1cdd2",
14
+ "size": 19455741,
15
+ "url": "https://github.com/ade-syofyan/feature-map-installer/releases/download/v0.22.0-pro.1/feature-map-pro-0.22.0-pro.1-linux-x64.tar.gz"
16
16
  },
17
17
  "win32-x64": {
18
- "sha256": "948db51f8583753b68dd64d92db4f333601f4c51f9585e8924e2ab71f75c1ca0",
19
- "engine_sha256": "9a4c4cb6cbe767eb02b9afa9a5e2425194ac6de6f2f593bd716ad53f87424ece",
20
- "size": 11664438,
21
- "url": "https://github.com/ade-syofyan/feature-map-installer/releases/download/v0.21.0-pro.2/feature-map-pro-0.21.0-pro.2-win32-x64.tar.gz"
18
+ "sha256": "1d44c5f4db35108fd889ff35bb698b763fa1e55322c7e481e204783c0f3e7974",
19
+ "engine_sha256": "26d1e3f5a87120e706d45cad049c082d514f67aaae92ef22887cf326a2adf1b4",
20
+ "size": 12843960,
21
+ "url": "https://github.com/ade-syofyan/feature-map-installer/releases/download/v0.22.0-pro.1/feature-map-pro-0.22.0-pro.1-win32-x64.tar.gz"
22
22
  }
23
23
  }
24
24
  }