hybridtm 0.8.0 → 0.9.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 (81) hide show
  1. package/README.md +7 -5
  2. package/dist/backupHandler.d.ts +1 -1
  3. package/dist/backupHandler.js +1 -1
  4. package/dist/backupReader.d.ts +1 -1
  5. package/dist/backupReader.js +1 -1
  6. package/dist/batchImporter.d.ts +1 -1
  7. package/dist/batchImporter.js +1 -1
  8. package/dist/cli/backupCommand.d.ts +5 -3
  9. package/dist/cli/backupCommand.js +33 -31
  10. package/dist/cli/backupCommand.js.map +1 -1
  11. package/dist/cli/cliUtils.d.ts +2 -1
  12. package/dist/cli/cliUtils.js +13 -1
  13. package/dist/cli/cliUtils.js.map +1 -1
  14. package/dist/cli/createCommand.d.ts +5 -3
  15. package/dist/cli/createCommand.js +33 -31
  16. package/dist/cli/createCommand.js.map +1 -1
  17. package/dist/cli/hybridtmCli.d.ts +1 -1
  18. package/dist/cli/hybridtmCli.js +24 -14
  19. package/dist/cli/hybridtmCli.js.map +1 -1
  20. package/dist/cli/importCommand.d.ts +11 -3
  21. package/dist/cli/importCommand.js +75 -76
  22. package/dist/cli/importCommand.js.map +1 -1
  23. package/dist/cli/matchCommand.d.ts +17 -3
  24. package/dist/cli/matchCommand.js +88 -234
  25. package/dist/cli/matchCommand.js.map +1 -1
  26. package/dist/cli/registryCommands.d.ts +8 -5
  27. package/dist/cli/registryCommands.js +63 -61
  28. package/dist/cli/registryCommands.js.map +1 -1
  29. package/dist/cli/restoreCommand.d.ts +8 -3
  30. package/dist/cli/restoreCommand.js +80 -78
  31. package/dist/cli/restoreCommand.js.map +1 -1
  32. package/dist/cli/serveCommand.d.ts +17 -0
  33. package/dist/cli/serveCommand.js +87 -0
  34. package/dist/cli/serveCommand.js.map +1 -0
  35. package/dist/cli/stopCommand.d.ts +15 -0
  36. package/dist/cli/stopCommand.js +73 -0
  37. package/dist/cli/stopCommand.js.map +1 -0
  38. package/dist/hybridtm.d.ts +3 -1
  39. package/dist/hybridtm.js +62 -27
  40. package/dist/hybridtm.js.map +1 -1
  41. package/dist/hybridtmFactory.d.ts +1 -1
  42. package/dist/hybridtmFactory.js +6 -1
  43. package/dist/hybridtmFactory.js.map +1 -1
  44. package/dist/importOptions.d.ts +5 -4
  45. package/dist/importOptions.js +11 -10
  46. package/dist/importOptions.js.map +1 -1
  47. package/dist/index.d.ts +2 -1
  48. package/dist/index.js +2 -1
  49. package/dist/index.js.map +1 -1
  50. package/dist/langEntry.d.ts +1 -1
  51. package/dist/langEntry.js +1 -1
  52. package/dist/match.d.ts +1 -1
  53. package/dist/match.js +1 -1
  54. package/dist/matchQuality.d.ts +1 -1
  55. package/dist/matchQuality.js +1 -1
  56. package/dist/pendingEntry.d.ts +1 -1
  57. package/dist/pendingEntry.js +1 -1
  58. package/dist/searchFilters.d.ts +1 -1
  59. package/dist/searchFilters.js +1 -1
  60. package/dist/server/hybridtmServer.d.ts +40 -0
  61. package/dist/server/hybridtmServer.js +527 -0
  62. package/dist/server/hybridtmServer.js.map +1 -0
  63. package/dist/server/hybridtmServerMain.d.ts +12 -0
  64. package/dist/server/hybridtmServerMain.js +18 -0
  65. package/dist/server/hybridtmServerMain.js.map +1 -0
  66. package/dist/tmxHandler.d.ts +1 -1
  67. package/dist/tmxHandler.js +5 -5
  68. package/dist/tmxHandler.js.map +1 -1
  69. package/dist/tmxReader.d.ts +1 -1
  70. package/dist/tmxReader.js +4 -4
  71. package/dist/tmxReader.js.map +1 -1
  72. package/dist/utils.d.ts +26 -2
  73. package/dist/utils.js +153 -2
  74. package/dist/utils.js.map +1 -1
  75. package/dist/xliffHandler.d.ts +1 -1
  76. package/dist/xliffHandler.js +8 -8
  77. package/dist/xliffHandler.js.map +1 -1
  78. package/dist/xliffReader.d.ts +1 -1
  79. package/dist/xliffReader.js +4 -4
  80. package/dist/xliffReader.js.map +1 -1
  81. package/package.json +1 -1
package/README.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # HybridTM
2
2
 
3
+ [![npm version](https://img.shields.io/npm/v/hybridtm)](https://www.npmjs.com/package/hybridtm)
4
+ [![npm license](https://img.shields.io/npm/l/hybridtm)](LICENSE)
5
+ [![TypeScript](https://img.shields.io/badge/implementation-native%20TypeScript-3178c6)](https://www.typescriptlang.org/)
6
+
3
7
  HybridTM is a semantic translation memory engine that stores bilingual content in LanceDB and scores matches by combining semantic embeddings (Hugging Face Transformers.js) with the built-in MatchQuality fuzzy metric.
4
8
 
5
9
  ## Highlights
@@ -11,6 +15,7 @@ HybridTM is a semantic translation memory engine that stores bilingual content i
11
15
  - Prevents duplicate segments by rewriting entries with deterministic IDs (`fileId:unitId:segmentIndex:lang`)
12
16
  - Backs up any instance to a single format-agnostic XML file and restores it into an existing or brand-new instance, optionally under a different embedding model
13
17
  - Ships a `hybridtm` command-line tool for creating instances, importing files, backing up/restoring data, and enriching XLIFF files with TM match candidates from the shell
18
+ - Runs as a JSON-over-HTTP server too (`hybridtm serve`, or embed `HybridTMServer` directly), for CAT tool and editor integrations that want to keep an instance and its loaded model open across many requests, with ticketed handling for long-running imports and matches, and a `storeXliffUnit` command for persisting a single confirmed unit as the user works
14
19
 
15
20
  Models download automatically the first time you initialize an instance and are cached in the standard Hugging Face directory.
16
21
 
@@ -102,7 +107,7 @@ npm install -g hybridtm
102
107
 
103
108
  hybridtm create -name project -path ./project.lancedb
104
109
  hybridtm import -name project -file ./translations/project.xlf
105
- hybridtm match -name project -file ./new-content.xlf -output ./new-content.matches.xlf
110
+ hybridtm match -name project -file ./new-content.xlf -similarity 60 -output ./new-content.matches.xlf
106
111
  hybridtm backup -name project -file ./project-backup.xml
107
112
  hybridtm restore -file ./project-backup.xml -name project
108
113
  hybridtm list
@@ -122,6 +127,7 @@ see [05 · Command-Line Interface](docs/05-command-line-interface.md).
122
127
  - [04 · Sample Scenarios](docs/04-sample-scenarios.md)
123
128
  - [05 · Command-Line Interface](docs/05-command-line-interface.md)
124
129
  - [06 · Backup and Restore](docs/06-backup-and-restore.md)
130
+ - [07 · HTTP Server](docs/07-http-server.md)
125
131
 
126
132
  Each guide is short and task-oriented, so you can jump directly to the workflow you need.
127
133
 
@@ -148,14 +154,10 @@ If you copy `samples/` elsewhere, update `samples/package.json` so the `hybridtm
148
154
  - `dist/` – compiled JavaScript and declarations (`npm run build`)
149
155
  - `docs/` – task-focused tutorials referenced above
150
156
  - `samples/` – standalone TypeScript project with runnable workflows
151
- - `models/` – local cache for pre-downloaded embedding models (optional)
152
157
 
153
158
  ## Development
154
159
 
155
160
  - `npm run build` – compile TypeScript to `dist/`
156
- - The [samples](docs/04-sample-scenarios.md) project doubles as a manual regression check for the importers and search APIs
157
-
158
- Contributions should include unit or integration coverage when you touch importer or search logic. Use `HybridTMFactory.removeInstance(name)` to clean up any throwaway databases you create during manual tests.
159
161
 
160
162
  ## License
161
163
 
@@ -2,7 +2,7 @@
2
2
  * Copyright (c) 2025-2026 Maxprograms.
3
3
  *
4
4
  * This program and the accompanying materials
5
- * are made available under the terms of the Eclipse License 1.0
5
+ * are made available under the terms of the Eclipse Public License v1.0
6
6
  * which accompanies this distribution, and is available at
7
7
  * https://www.eclipse.org/org/documents/epl-v10.html
8
8
  *
@@ -2,7 +2,7 @@
2
2
  * Copyright (c) 2025-2026 Maxprograms.
3
3
  *
4
4
  * This program and the accompanying materials
5
- * are made available under the terms of the Eclipse License 1.0
5
+ * are made available under the terms of the Eclipse Public License v1.0
6
6
  * which accompanies this distribution, and is available at
7
7
  * https://www.eclipse.org/org/documents/epl-v10.html
8
8
  *
@@ -2,7 +2,7 @@
2
2
  * Copyright (c) 2025-2026 Maxprograms.
3
3
  *
4
4
  * This program and the accompanying materials
5
- * are made available under the terms of the Eclipse License 1.0
5
+ * are made available under the terms of the Eclipse Public License v1.0
6
6
  * which accompanies this distribution, and is available at
7
7
  * https://www.eclipse.org/org/documents/epl-v10.html
8
8
  *
@@ -2,7 +2,7 @@
2
2
  * Copyright (c) 2025-2026 Maxprograms.
3
3
  *
4
4
  * This program and the accompanying materials
5
- * are made available under the terms of the Eclipse License 1.0
5
+ * are made available under the terms of the Eclipse Public License v1.0
6
6
  * which accompanies this distribution, and is available at
7
7
  * https://www.eclipse.org/org/documents/epl-v10.html
8
8
  *
@@ -2,7 +2,7 @@
2
2
  * Copyright (c) 2025-2026 Maxprograms.
3
3
  *
4
4
  * This program and the accompanying materials
5
- * are made available under the terms of the Eclipse License 1.0
5
+ * are made available under the terms of the Eclipse Public License v1.0
6
6
  * which accompanies this distribution, and is available at
7
7
  * https://www.eclipse.org/org/documents/epl-v10.html
8
8
  *
@@ -2,7 +2,7 @@
2
2
  * Copyright (c) 2025-2026 Maxprograms.
3
3
  *
4
4
  * This program and the accompanying materials
5
- * are made available under the terms of the Eclipse License 1.0
5
+ * are made available under the terms of the Eclipse Public License v1.0
6
6
  * which accompanies this distribution, and is available at
7
7
  * https://www.eclipse.org/org/documents/epl-v10.html
8
8
  *
@@ -2,12 +2,14 @@
2
2
  * Copyright (c) 2025-2026 Maxprograms.
3
3
  *
4
4
  * This program and the accompanying materials
5
- * are made available under the terms of the Eclipse License 1.0
5
+ * are made available under the terms of the Eclipse Public License v1.0
6
6
  * which accompanies this distribution, and is available at
7
7
  * https://www.eclipse.org/org/documents/epl-v10.html
8
8
  *
9
9
  * Contributors:
10
10
  * Maxprograms - initial API and implementation
11
11
  *******************************************************************************/
12
- export declare function usage(): void;
13
- export declare function runBackupCommand(args: string[]): Promise<void>;
12
+ export declare class BackupCommand {
13
+ static usage(): void;
14
+ static run(args: string[]): Promise<void>;
15
+ }
@@ -2,7 +2,7 @@
2
2
  * Copyright (c) 2025-2026 Maxprograms.
3
3
  *
4
4
  * This program and the accompanying materials
5
- * are made available under the terms of the Eclipse License 1.0
5
+ * are made available under the terms of the Eclipse Public License v1.0
6
6
  * which accompanies this distribution, and is available at
7
7
  * https://www.eclipse.org/org/documents/epl-v10.html
8
8
  *
@@ -11,37 +11,39 @@
11
11
  *******************************************************************************/
12
12
  import { HybridTMFactory } from '../index.js';
13
13
  import { CliUtils } from './cliUtils.js';
14
- export function usage() {
15
- console.log('Usage: hybridtm backup -name <name> -file <path>');
16
- console.log();
17
- console.log(' -name Instance to back up (required)');
18
- console.log(' -file Output XML file path (required)');
19
- }
20
- export async function runBackupCommand(args) {
21
- if (CliUtils.hasFlag(args, '-help')) {
22
- usage();
23
- return;
24
- }
25
- const name = CliUtils.getFlag(args, '-name');
26
- const rawFile = CliUtils.getFlag(args, '-file');
27
- if (!name || !rawFile) {
28
- usage();
29
- CliUtils.fail('Missing required -name or -file.');
30
- }
31
- const outputPath = CliUtils.resolvePath(rawFile);
32
- const tm = HybridTMFactory.getInstance(name);
33
- if (!tm) {
34
- CliUtils.fail('No instance named "' + name + '". Run "hybridtm create" or "hybridtm list" first.');
35
- }
36
- try {
37
- const count = await tm.backup(outputPath);
38
- console.log('Backed up ' + count + ' entries from "' + name + '" to ' + outputPath + '.');
39
- }
40
- catch (error) {
41
- CliUtils.fail(error instanceof Error ? error.message : String(error));
14
+ export class BackupCommand {
15
+ static usage() {
16
+ console.log('Usage: hybridtm backup -name <name> -file <path>');
17
+ console.log();
18
+ console.log(' -name Instance to back up (required)');
19
+ console.log(' -file Output XML file path (required)');
42
20
  }
43
- finally {
44
- await tm.close();
21
+ static async run(args) {
22
+ if (CliUtils.hasFlag(args, '-help')) {
23
+ BackupCommand.usage();
24
+ return;
25
+ }
26
+ const name = CliUtils.getFlag(args, '-name');
27
+ const rawFile = CliUtils.getFlag(args, '-file');
28
+ if (!name || !rawFile) {
29
+ BackupCommand.usage();
30
+ CliUtils.fail('Missing required -name or -file.');
31
+ }
32
+ const outputPath = CliUtils.resolvePath(rawFile);
33
+ const tm = HybridTMFactory.getInstance(name);
34
+ if (!tm) {
35
+ CliUtils.fail('No instance named "' + name + '". Run "hybridtm create" or "hybridtm list" first.');
36
+ }
37
+ try {
38
+ const count = await tm.backup(outputPath);
39
+ console.log('Backed up ' + count + ' entries from "' + name + '" to ' + outputPath + '.');
40
+ }
41
+ catch (error) {
42
+ CliUtils.fail(error instanceof Error ? error.message : String(error));
43
+ }
44
+ finally {
45
+ await tm.close();
46
+ }
45
47
  }
46
48
  }
47
49
  //# sourceMappingURL=backupCommand.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"backupCommand.js","sourceRoot":"","sources":["../../ts/cli/backupCommand.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;iFAUiF;AAEjF,OAAO,EAAY,eAAe,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,MAAM,UAAU,KAAK;IACjB,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC;IAChE,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;IACxD,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAAc;IACjD,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC;QAClC,KAAK,EAAE,CAAC;QACR,OAAO;IACX,CAAC;IAED,MAAM,IAAI,GAAuB,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACjE,MAAM,OAAO,GAAuB,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACpE,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACpB,KAAK,EAAE,CAAC;QACR,QAAQ,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;IACtD,CAAC;IAED,MAAM,UAAU,GAAW,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAEzD,MAAM,EAAE,GAAyB,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACnE,IAAI,CAAC,EAAE,EAAE,CAAC;QACN,QAAQ,CAAC,IAAI,CAAC,qBAAqB,GAAG,IAAI,GAAG,oDAAoD,CAAC,CAAC;IACvG,CAAC;IAED,IAAI,CAAC;QACD,MAAM,KAAK,GAAW,MAAM,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,YAAY,GAAG,KAAK,GAAG,iBAAiB,GAAG,IAAI,GAAG,OAAO,GAAG,UAAU,GAAG,GAAG,CAAC,CAAC;IAC9F,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;YAAS,CAAC;QACP,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"backupCommand.js","sourceRoot":"","sources":["../../ts/cli/backupCommand.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;iFAUiF;AAEjF,OAAO,EAAY,eAAe,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,MAAM,OAAO,aAAa;IAEtB,MAAM,CAAC,KAAK;QACR,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC;QAChE,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;QACxD,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAc;QAC3B,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC;YAClC,aAAa,CAAC,KAAK,EAAE,CAAC;YACtB,OAAO;QACX,CAAC;QAED,MAAM,IAAI,GAAuB,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACjE,MAAM,OAAO,GAAuB,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACpE,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACpB,aAAa,CAAC,KAAK,EAAE,CAAC;YACtB,QAAQ,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;QACtD,CAAC;QAED,MAAM,UAAU,GAAW,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAEzD,MAAM,EAAE,GAAyB,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACnE,IAAI,CAAC,EAAE,EAAE,CAAC;YACN,QAAQ,CAAC,IAAI,CAAC,qBAAqB,GAAG,IAAI,GAAG,oDAAoD,CAAC,CAAC;QACvG,CAAC;QAED,IAAI,CAAC;YACD,MAAM,KAAK,GAAW,MAAM,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAClD,OAAO,CAAC,GAAG,CAAC,YAAY,GAAG,KAAK,GAAG,iBAAiB,GAAG,IAAI,GAAG,OAAO,GAAG,UAAU,GAAG,GAAG,CAAC,CAAC;QAC9F,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACtB,QAAQ,CAAC,IAAI,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC1E,CAAC;gBAAS,CAAC;YACP,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC;QACrB,CAAC;IACL,CAAC;CACJ"}
@@ -2,7 +2,7 @@
2
2
  * Copyright (c) 2025-2026 Maxprograms.
3
3
  *
4
4
  * This program and the accompanying materials
5
- * are made available under the terms of the Eclipse License 1.0
5
+ * are made available under the terms of the Eclipse Public License v1.0
6
6
  * which accompanies this distribution, and is available at
7
7
  * https://www.eclipse.org/org/documents/epl-v10.html
8
8
  *
@@ -12,6 +12,7 @@
12
12
  export declare class CliUtils {
13
13
  static getFlag(args: string[], flag: string): string | undefined;
14
14
  static hasFlag(args: string[], flag: string): boolean;
15
+ static parseIntFlag(args: string[], flag: string, fallback: number, min: number, max?: number): number;
15
16
  static resolvePath(rawPath: string): string;
16
17
  static requireExistingFile(rawPath: string, label: string): string;
17
18
  static resolveModelName(alias: string | undefined): string;
@@ -2,7 +2,7 @@
2
2
  * Copyright (c) 2025-2026 Maxprograms.
3
3
  *
4
4
  * This program and the accompanying materials
5
- * are made available under the terms of the Eclipse License 1.0
5
+ * are made available under the terms of the Eclipse Public License v1.0
6
6
  * which accompanies this distribution, and is available at
7
7
  * https://www.eclipse.org/org/documents/epl-v10.html
8
8
  *
@@ -24,6 +24,18 @@ export class CliUtils {
24
24
  static hasFlag(args, flag) {
25
25
  return args.includes(flag);
26
26
  }
27
+ static parseIntFlag(args, flag, fallback, min, max) {
28
+ const raw = CliUtils.getFlag(args, flag);
29
+ if (raw === undefined) {
30
+ return fallback;
31
+ }
32
+ const parsed = Number(raw);
33
+ if (!Number.isInteger(parsed) || parsed < min || (max !== undefined && parsed > max)) {
34
+ const range = max !== undefined ? 'an integer between ' + min + ' and ' + max : 'an integer of at least ' + min;
35
+ CliUtils.fail('Invalid ' + flag + ' value "' + raw + '"; expected ' + range + '.');
36
+ }
37
+ return parsed;
38
+ }
27
39
  static resolvePath(rawPath) {
28
40
  let expanded = rawPath;
29
41
  if (expanded.startsWith('~')) {
@@ -1 +1 @@
1
- {"version":3,"file":"cliUtils.js","sourceRoot":"","sources":["../../ts/cli/cliUtils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;iFAUiF;AAEjF,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,MAAM,OAAO,QAAQ;IAEjB,MAAM,CAAC,OAAO,CAAC,IAAc,EAAE,IAAY;QACvC,MAAM,KAAK,GAAW,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,KAAK,KAAK,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9E,OAAO,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAC3B,CAAC;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,IAAc,EAAE,IAAY;QACvC,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,OAAe;QAC9B,IAAI,QAAQ,GAAW,OAAO,CAAC;QAC/B,IAAI,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,GAAW,OAAO,EAAE,CAAC;YAC/B,IAAI,QAAQ,KAAK,GAAG,EAAE,CAAC;gBACnB,QAAQ,GAAG,IAAI,CAAC;YACpB,CAAC;iBAAM,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnC,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7C,CAAC;QACL,CAAC;QACD,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC7B,CAAC;IAED,MAAM,CAAC,mBAAmB,CAAC,OAAe,EAAE,KAAa;QACrD,MAAM,QAAQ,GAAW,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACvD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YACxB,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,GAAG,QAAQ,GAAG,mBAAmB,CAAC,CAAC;YAC7D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;QACD,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,MAAM,CAAC,gBAAgB,CAAC,KAAyB;QAC7C,QAAQ,KAAK,EAAE,CAAC;YACZ,KAAK,SAAS;gBACV,OAAO,QAAQ,CAAC,aAAa,CAAC;YAClC,KAAK,UAAU;gBACX,OAAO,QAAQ,CAAC,cAAc,CAAC;YACnC,KAAK,OAAO,CAAC;YACb,KAAK,SAAS;gBACV,OAAO,QAAQ,CAAC,WAAW,CAAC;YAChC;gBACI,sEAAsE;gBACtE,kEAAkE;gBAClE,OAAO,KAAK,CAAC;QACrB,CAAC;IACL,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,OAAe;QACvB,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACvB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;CACJ"}
1
+ {"version":3,"file":"cliUtils.js","sourceRoot":"","sources":["../../ts/cli/cliUtils.ts"],"names":[],"mappings":"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"}
@@ -2,12 +2,14 @@
2
2
  * Copyright (c) 2025-2026 Maxprograms.
3
3
  *
4
4
  * This program and the accompanying materials
5
- * are made available under the terms of the Eclipse License 1.0
5
+ * are made available under the terms of the Eclipse Public License v1.0
6
6
  * which accompanies this distribution, and is available at
7
7
  * https://www.eclipse.org/org/documents/epl-v10.html
8
8
  *
9
9
  * Contributors:
10
10
  * Maxprograms - initial API and implementation
11
11
  *******************************************************************************/
12
- export declare function usage(): void;
13
- export declare function runCreateCommand(args: string[]): Promise<void>;
12
+ export declare class CreateCommand {
13
+ static usage(): void;
14
+ static run(args: string[]): Promise<void>;
15
+ }
@@ -2,7 +2,7 @@
2
2
  * Copyright (c) 2025-2026 Maxprograms.
3
3
  *
4
4
  * This program and the accompanying materials
5
- * are made available under the terms of the Eclipse License 1.0
5
+ * are made available under the terms of the Eclipse Public License v1.0
6
6
  * which accompanies this distribution, and is available at
7
7
  * https://www.eclipse.org/org/documents/epl-v10.html
8
8
  *
@@ -11,37 +11,39 @@
11
11
  *******************************************************************************/
12
12
  import { HybridTMFactory } from '../index.js';
13
13
  import { CliUtils } from './cliUtils.js';
14
- export function usage() {
15
- console.log('Usage: hybridtm create -name <name> -path <dir> [-model compact|standard|large|<model id>]');
16
- console.log();
17
- console.log(' -name Name to register the new instance under (required)');
18
- console.log(' -path Directory where the instance\'s LanceDB data will live (required)');
19
- console.log(' -model Embedding model preset (compact, standard, large [default]), or any');
20
- console.log(' other Hugging Face feature-extraction model id to load directly');
21
- console.log(' (e.g. onnx-community/gte-multilingual-base). See the README section');
22
- console.log(' "Choosing an embedding model" for guidance on which preset to pick.');
23
- }
24
- export async function runCreateCommand(args) {
25
- if (CliUtils.hasFlag(args, '-help')) {
26
- usage();
27
- return;
28
- }
29
- const name = CliUtils.getFlag(args, '-name');
30
- const rawPath = CliUtils.getFlag(args, '-path');
31
- if (!name || !rawPath) {
32
- usage();
33
- CliUtils.fail('Missing required -name or -path.');
34
- }
35
- const modelAlias = CliUtils.getFlag(args, '-model');
36
- const modelName = CliUtils.resolveModelName(modelAlias);
37
- const resolvedPath = CliUtils.resolvePath(rawPath);
38
- try {
39
- const tm = HybridTMFactory.createInstance(name, resolvedPath, modelName);
40
- await tm.close();
41
- console.log('Created instance "' + name + '" at ' + resolvedPath + ' (model: ' + modelName + ')');
14
+ export class CreateCommand {
15
+ static usage() {
16
+ console.log('Usage: hybridtm create -name <name> -path <dir> [-model compact|standard|large|<model id>]');
17
+ console.log();
18
+ console.log(' -name Name to register the new instance under (required)');
19
+ console.log(' -path Directory where the instance\'s LanceDB data will live (required)');
20
+ console.log(' -model Embedding model preset (compact, standard, large [default]), or any');
21
+ console.log(' other Hugging Face feature-extraction model id to load directly');
22
+ console.log(' (e.g. onnx-community/gte-multilingual-base). See the README section');
23
+ console.log(' "Choosing an embedding model" for guidance on which preset to pick.');
42
24
  }
43
- catch (error) {
44
- CliUtils.fail(error instanceof Error ? error.message : String(error));
25
+ static async run(args) {
26
+ if (CliUtils.hasFlag(args, '-help')) {
27
+ CreateCommand.usage();
28
+ return;
29
+ }
30
+ const name = CliUtils.getFlag(args, '-name');
31
+ const rawPath = CliUtils.getFlag(args, '-path');
32
+ if (!name || !rawPath) {
33
+ CreateCommand.usage();
34
+ CliUtils.fail('Missing required -name or -path.');
35
+ }
36
+ const modelAlias = CliUtils.getFlag(args, '-model');
37
+ const modelName = CliUtils.resolveModelName(modelAlias);
38
+ const resolvedPath = CliUtils.resolvePath(rawPath);
39
+ try {
40
+ const tm = HybridTMFactory.createInstance(name, resolvedPath, modelName);
41
+ await tm.close();
42
+ console.log('Created instance "' + name + '" at ' + resolvedPath + ' (model: ' + modelName + ')');
43
+ }
44
+ catch (error) {
45
+ CliUtils.fail(error instanceof Error ? error.message : String(error));
46
+ }
45
47
  }
46
48
  }
47
49
  //# sourceMappingURL=createCommand.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"createCommand.js","sourceRoot":"","sources":["../../ts/cli/createCommand.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;iFAUiF;AAEjF,OAAO,EAAY,eAAe,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,MAAM,UAAU,KAAK;IACjB,OAAO,CAAC,GAAG,CAAC,4FAA4F,CAAC,CAAC;IAC1G,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAC;IAC7E,OAAO,CAAC,GAAG,CAAC,8EAA8E,CAAC,CAAC;IAC5F,OAAO,CAAC,GAAG,CAAC,gFAAgF,CAAC,CAAC;IAC9F,OAAO,CAAC,GAAG,CAAC,4EAA4E,CAAC,CAAC;IAC1F,OAAO,CAAC,GAAG,CAAC,gFAAgF,CAAC,CAAC;IAC9F,OAAO,CAAC,GAAG,CAAC,gFAAgF,CAAC,CAAC;AAClG,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAAc;IACjD,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC;QAClC,KAAK,EAAE,CAAC;QACR,OAAO;IACX,CAAC;IAED,MAAM,IAAI,GAAuB,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACjE,MAAM,OAAO,GAAuB,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACpE,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACpB,KAAK,EAAE,CAAC;QACR,QAAQ,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;IACtD,CAAC;IAED,MAAM,UAAU,GAAuB,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACxE,MAAM,SAAS,GAAW,QAAQ,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAChE,MAAM,YAAY,GAAW,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAE3D,IAAI,CAAC;QACD,MAAM,EAAE,GAAa,eAAe,CAAC,cAAc,CAAC,IAAI,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;QACnF,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,oBAAoB,GAAG,IAAI,GAAG,OAAO,GAAG,YAAY,GAAG,WAAW,GAAG,SAAS,GAAG,GAAG,CAAC,CAAC;IACtG,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":"createCommand.js","sourceRoot":"","sources":["../../ts/cli/createCommand.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;iFAUiF;AAEjF,OAAO,EAAY,eAAe,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,MAAM,OAAO,aAAa;IAEtB,MAAM,CAAC,KAAK;QACR,OAAO,CAAC,GAAG,CAAC,4FAA4F,CAAC,CAAC;QAC1G,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAC;QAC7E,OAAO,CAAC,GAAG,CAAC,8EAA8E,CAAC,CAAC;QAC5F,OAAO,CAAC,GAAG,CAAC,gFAAgF,CAAC,CAAC;QAC9F,OAAO,CAAC,GAAG,CAAC,4EAA4E,CAAC,CAAC;QAC1F,OAAO,CAAC,GAAG,CAAC,gFAAgF,CAAC,CAAC;QAC9F,OAAO,CAAC,GAAG,CAAC,gFAAgF,CAAC,CAAC;IAClG,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAc;QAC3B,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC;YAClC,aAAa,CAAC,KAAK,EAAE,CAAC;YACtB,OAAO;QACX,CAAC;QAED,MAAM,IAAI,GAAuB,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACjE,MAAM,OAAO,GAAuB,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACpE,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACpB,aAAa,CAAC,KAAK,EAAE,CAAC;YACtB,QAAQ,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;QACtD,CAAC;QAED,MAAM,UAAU,GAAuB,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACxE,MAAM,SAAS,GAAW,QAAQ,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;QAChE,MAAM,YAAY,GAAW,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAE3D,IAAI,CAAC;YACD,MAAM,EAAE,GAAa,eAAe,CAAC,cAAc,CAAC,IAAI,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;YACnF,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,oBAAoB,GAAG,IAAI,GAAG,OAAO,GAAG,YAAY,GAAG,WAAW,GAAG,SAAS,GAAG,GAAG,CAAC,CAAC;QACtG,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACtB,QAAQ,CAAC,IAAI,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC1E,CAAC;IACL,CAAC;CACJ"}
@@ -3,7 +3,7 @@
3
3
  * Copyright (c) 2025-2026 Maxprograms.
4
4
  *
5
5
  * This program and the accompanying materials
6
- * are made available under the terms of the Eclipse License 1.0
6
+ * are made available under the terms of the Eclipse Public License v1.0
7
7
  * which accompanies this distribution, and is available at
8
8
  * https://www.eclipse.org/org/documents/epl-v10.html
9
9
  *
@@ -3,19 +3,21 @@
3
3
  * Copyright (c) 2025-2026 Maxprograms.
4
4
  *
5
5
  * This program and the accompanying materials
6
- * are made available under the terms of the Eclipse License 1.0
6
+ * are made available under the terms of the Eclipse Public License v1.0
7
7
  * which accompanies this distribution, and is available at
8
8
  * https://www.eclipse.org/org/documents/epl-v10.html
9
9
  *
10
10
  * Contributors:
11
11
  * Maxprograms - initial API and implementation
12
12
  *******************************************************************************/
13
- import { runBackupCommand } from './backupCommand.js';
14
- import { runCreateCommand } from './createCommand.js';
15
- import { runImportCommand } from './importCommand.js';
16
- import { runMatchCommand } from './matchCommand.js';
17
- import { runListCommand, runRemoveCommand } from './registryCommands.js';
18
- import { runRestoreCommand } from './restoreCommand.js';
13
+ import { BackupCommand } from './backupCommand.js';
14
+ import { CreateCommand } from './createCommand.js';
15
+ import { ImportCommand } from './importCommand.js';
16
+ import { MatchCommand } from './matchCommand.js';
17
+ import { RegistryCommands } from './registryCommands.js';
18
+ import { RestoreCommand } from './restoreCommand.js';
19
+ import { ServeCommand } from './serveCommand.js';
20
+ import { StopCommand } from './stopCommand.js';
19
21
  class HybridTMCli {
20
22
  constructor() {
21
23
  this.run(process.argv.slice(2));
@@ -25,25 +27,31 @@ class HybridTMCli {
25
27
  const rest = argv.slice(1);
26
28
  try {
27
29
  if (command === 'create') {
28
- await runCreateCommand(rest);
30
+ await CreateCommand.run(rest);
29
31
  }
30
32
  else if (command === 'import') {
31
- await runImportCommand(rest);
33
+ await ImportCommand.run(rest);
32
34
  }
33
35
  else if (command === 'match') {
34
- await runMatchCommand(rest);
36
+ await MatchCommand.run(rest);
35
37
  }
36
38
  else if (command === 'backup') {
37
- await runBackupCommand(rest);
39
+ await BackupCommand.run(rest);
38
40
  }
39
41
  else if (command === 'restore') {
40
- await runRestoreCommand(rest);
42
+ await RestoreCommand.run(rest);
41
43
  }
42
44
  else if (command === 'list') {
43
- await runListCommand(rest);
45
+ await RegistryCommands.runList(rest);
44
46
  }
45
47
  else if (command === 'remove') {
46
- await runRemoveCommand(rest);
48
+ await RegistryCommands.runRemove(rest);
49
+ }
50
+ else if (command === 'serve') {
51
+ await ServeCommand.run(rest);
52
+ }
53
+ else if (command === 'stop') {
54
+ await StopCommand.run(rest);
47
55
  }
48
56
  else if (command === '-help' || command === '--help') {
49
57
  this.usage();
@@ -75,6 +83,8 @@ class HybridTMCli {
75
83
  console.log(' restore Reimport a backup XML file into an existing or new instance');
76
84
  console.log(' list List registered instances');
77
85
  console.log(' remove Delete a registered instance and its data');
86
+ console.log(' serve Start the HybridTM HTTP server');
87
+ console.log(' stop Stop the HybridTM HTTP server');
78
88
  console.log();
79
89
  console.log('Run "hybridtm <command> -help" for command-specific options.');
80
90
  }
@@ -1 +1 @@
1
- {"version":3,"file":"hybridtmCli.js","sourceRoot":"","sources":["../../ts/cli/hybridtmCli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hybridtmCli.js","sourceRoot":"","sources":["../../ts/cli/hybridtmCli.ts"],"names":[],"mappings":"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"}
@@ -2,12 +2,20 @@
2
2
  * Copyright (c) 2025-2026 Maxprograms.
3
3
  *
4
4
  * This program and the accompanying materials
5
- * are made available under the terms of the Eclipse License 1.0
5
+ * are made available under the terms of the Eclipse Public License v1.0
6
6
  * which accompanies this distribution, and is available at
7
7
  * https://www.eclipse.org/org/documents/epl-v10.html
8
8
  *
9
9
  * Contributors:
10
10
  * Maxprograms - initial API and implementation
11
11
  *******************************************************************************/
12
- export declare function usage(): void;
13
- export declare function runImportCommand(args: string[]): Promise<void>;
12
+ import { HybridTM, ImportOptions, TranslationState } from '../index.js';
13
+ export type ImportType = 'xliff' | 'tmx' | 'sdltm';
14
+ export declare class ImportCommand {
15
+ static usage(): void;
16
+ static run(args: string[]): Promise<void>;
17
+ static importFile(tm: HybridTM, filePath: string, type: ImportType, options: ImportOptions): Promise<number>;
18
+ static resolveImportType(explicit: string | undefined, filePath: string): ImportType;
19
+ static isTranslationState(value: string): value is TranslationState;
20
+ private static buildImportOptions;
21
+ }