hybridtm 0.7.0 → 0.7.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
@@ -84,7 +84,7 @@ hybridtm create -name project -path ./project.lancedb
84
84
  hybridtm import -name project -file ./translations/project.xlf
85
85
  hybridtm match -name project -file ./new-content.xlf -output ./new-content.matches.xlf
86
86
  hybridtm list
87
- hybridtm remove -name project -yes
87
+ hybridtm remove -name project
88
88
  ```
89
89
 
90
90
  `match` never touches `<target>` — it adds spec Translation Candidates
@@ -9,6 +9,7 @@
9
9
  * Contributors:
10
10
  * Maxprograms - initial API and implementation
11
11
  *******************************************************************************/
12
+ import { createInterface } from 'node:readline/promises';
12
13
  import { HybridTMFactory } from '../index.js';
13
14
  import { CliUtils } from './cliUtils.js';
14
15
  export function listUsage() {
@@ -29,10 +30,10 @@ export async function runListCommand(args) {
29
30
  });
30
31
  }
31
32
  export function removeUsage() {
32
- console.log('Usage: hybridtm remove -name <name> -yes');
33
+ console.log('Usage: hybridtm remove -name <name> [-force]');
33
34
  console.log();
34
- console.log(' -name Instance to remove (required)');
35
- console.log(' -yes Required confirmation; this permanently deletes the instance\'s data');
35
+ console.log(' -name Instance to remove (required)');
36
+ console.log(' -force Skip the interactive confirmation prompt (for scripts/automation)');
36
37
  }
37
38
  export async function runRemoveCommand(args) {
38
39
  if (CliUtils.hasFlag(args, '-help')) {
@@ -44,9 +45,22 @@ export async function runRemoveCommand(args) {
44
45
  removeUsage();
45
46
  CliUtils.fail('Missing required -name.');
46
47
  }
47
- if (!CliUtils.hasFlag(args, '-yes')) {
48
- removeUsage();
49
- CliUtils.fail('Refusing to remove "' + name + '" without -yes: this permanently deletes its stored data.');
48
+ const instances = HybridTMFactory.listInstances();
49
+ const metadata = instances.find((instance) => instance.name === name);
50
+ if (!metadata) {
51
+ const hint = instances.length > 0
52
+ ? ' Registered instances: ' + instances.map((instance) => '"' + instance.name + '"').join(', ') + '.'
53
+ : ' No instances are registered yet.';
54
+ CliUtils.fail('No instance named "' + name + '".' + hint);
55
+ }
56
+ if (!CliUtils.hasFlag(args, '-force')) {
57
+ console.log('About to permanently delete instance "' + name + '" at ' + metadata.filePath + ' (model: ' + metadata.modelName + ').');
58
+ console.log('This cannot be undone.');
59
+ const confirmed = await confirm('Type "yes" to confirm: ');
60
+ if (!confirmed) {
61
+ console.log('Aborted; no changes made.');
62
+ return;
63
+ }
50
64
  }
51
65
  try {
52
66
  HybridTMFactory.removeInstance(name);
@@ -56,4 +70,14 @@ export async function runRemoveCommand(args) {
56
70
  CliUtils.fail(error instanceof Error ? error.message : String(error));
57
71
  }
58
72
  }
73
+ async function confirm(promptText) {
74
+ const rl = createInterface({ input: process.stdin, output: process.stdout });
75
+ try {
76
+ const answer = await rl.question(promptText);
77
+ return answer.trim().toLowerCase() === 'yes';
78
+ }
79
+ finally {
80
+ rl.close();
81
+ }
82
+ }
59
83
  //# sourceMappingURL=registryCommands.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"registryCommands.js","sourceRoot":"","sources":["../../ts/cli/registryCommands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;iFAUiF;AAEjF,OAAO,EAAE,eAAe,EAA4B,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,MAAM,UAAU,SAAS;IACrB,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAc;IAC/C,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC;QAClC,SAAS,EAAE,CAAC;QACZ,OAAO;IACX,CAAC;IACD,MAAM,SAAS,GAA+B,eAAe,CAAC,aAAa,EAAE,CAAC;IAC9E,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAC;QAC3E,OAAO;IACX,CAAC;IACD,SAAS,CAAC,OAAO,CAAC,CAAC,QAAkC,EAAE,EAAE;QACrD,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,GAAG,QAAQ,CAAC,QAAQ,GAAG,IAAI,GAAG,QAAQ,CAAC,SAAS,GAAG,IAAI,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;IAClH,CAAC,CAAC,CAAC;AACP,CAAC;AAED,MAAM,UAAU,WAAW;IACvB,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;IACxD,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;IACtD,OAAO,CAAC,GAAG,CAAC,+EAA+E,CAAC,CAAC;AACjG,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAAc;IACjD,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC;QAClC,WAAW,EAAE,CAAC;QACd,OAAO;IACX,CAAC;IACD,MAAM,IAAI,GAAuB,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACjE,IAAI,CAAC,IAAI,EAAE,CAAC;QACR,WAAW,EAAE,CAAC;QACd,QAAQ,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC;QAClC,WAAW,EAAE,CAAC;QACd,QAAQ,CAAC,IAAI,CAAC,sBAAsB,GAAG,IAAI,GAAG,2DAA2D,CAAC,CAAC;IAC/G,CAAC;IACD,IAAI,CAAC;QACD,eAAe,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,oBAAoB,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;IACpD,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACtB,QAAQ,CAAC,IAAI,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1E,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"registryCommands.js","sourceRoot":"","sources":["../../ts/cli/registryCommands.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "hybridtm",
3
3
  "productName": "HybridTM",
4
- "version": "0.7.0",
4
+ "version": "0.7.1",
5
5
  "description": "HybridTM is a Translation Memory (TM) engine that combines semantic embeddings with fuzzy string matching.",
6
6
  "main": "dist/index.js",
7
7
  "type": "module",
@@ -14,8 +14,7 @@
14
14
  ],
15
15
  "scripts": {
16
16
  "clean": "node -e \"require('node:fs').rmSync('dist', { recursive: true, force: true })\"",
17
- "build": "npm run clean && tsc && node -e \"const fs=require('node:fs'); const p='dist/cli/hybridtmCli.js'; if (fs.existsSync(p)) { try { fs.chmodSync(p, 0o755); } catch {} }\"",
18
- "postinstall": "node -e \"const fs=require('node:fs'); const p='dist/cli/hybridtmCli.js'; if (fs.existsSync(p)) { try { fs.chmodSync(p, 0o755); } catch {} }\""
17
+ "build": "npm run clean && tsc && node -e \"const fs=require('node:fs'); const p='dist/cli/hybridtmCli.js'; if (fs.existsSync(p)) { try { fs.chmodSync(p, 0o755); } catch {} }\""
19
18
  },
20
19
  "author": {
21
20
  "name": "Rodolfo M. Raya",