ai.matey.cli 0.2.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.
Files changed (129) hide show
  1. package/LICENSE +21 -0
  2. package/dist/cjs/convert-request.js +365 -0
  3. package/dist/cjs/convert-request.js.map +1 -0
  4. package/dist/cjs/convert-response.js +211 -0
  5. package/dist/cjs/convert-response.js.map +1 -0
  6. package/dist/cjs/converters/request-converters.js +183 -0
  7. package/dist/cjs/converters/request-converters.js.map +1 -0
  8. package/dist/cjs/converters/response-converters.js +203 -0
  9. package/dist/cjs/converters/response-converters.js.map +1 -0
  10. package/dist/cjs/create-backend.js +569 -0
  11. package/dist/cjs/create-backend.js.map +1 -0
  12. package/dist/cjs/index.js +31 -0
  13. package/dist/cjs/index.js.map +1 -0
  14. package/dist/cjs/main.js +181 -0
  15. package/dist/cjs/main.js.map +1 -0
  16. package/dist/cjs/ollama/commands/list.js +70 -0
  17. package/dist/cjs/ollama/commands/list.js.map +1 -0
  18. package/dist/cjs/ollama/commands/ps.js +80 -0
  19. package/dist/cjs/ollama/commands/ps.js.map +1 -0
  20. package/dist/cjs/ollama/commands/pull.js +198 -0
  21. package/dist/cjs/ollama/commands/pull.js.map +1 -0
  22. package/dist/cjs/ollama/commands/run.js +279 -0
  23. package/dist/cjs/ollama/commands/run.js.map +1 -0
  24. package/dist/cjs/ollama/commands/show.js +138 -0
  25. package/dist/cjs/ollama/commands/show.js.map +1 -0
  26. package/dist/cjs/ollama/index.js +238 -0
  27. package/dist/cjs/ollama/index.js.map +1 -0
  28. package/dist/cjs/ollama/types.js +10 -0
  29. package/dist/cjs/ollama/types.js.map +1 -0
  30. package/dist/cjs/proxy.js +406 -0
  31. package/dist/cjs/proxy.js.map +1 -0
  32. package/dist/cjs/utils/backend-loader.js +112 -0
  33. package/dist/cjs/utils/backend-loader.js.map +1 -0
  34. package/dist/cjs/utils/index.js +29 -0
  35. package/dist/cjs/utils/index.js.map +1 -0
  36. package/dist/cjs/utils/model-translation.js +138 -0
  37. package/dist/cjs/utils/model-translation.js.map +1 -0
  38. package/dist/cjs/utils/output-formatter.js +241 -0
  39. package/dist/cjs/utils/output-formatter.js.map +1 -0
  40. package/dist/cjs/utils/pipeline-inspector.js +90 -0
  41. package/dist/cjs/utils/pipeline-inspector.js.map +1 -0
  42. package/dist/cjs/utils/state-manager.js +114 -0
  43. package/dist/cjs/utils/state-manager.js.map +1 -0
  44. package/dist/esm/convert-request.js +331 -0
  45. package/dist/esm/convert-request.js.map +1 -0
  46. package/dist/esm/convert-response.js +177 -0
  47. package/dist/esm/convert-response.js.map +1 -0
  48. package/dist/esm/converters/request-converters.js +175 -0
  49. package/dist/esm/converters/request-converters.js.map +1 -0
  50. package/dist/esm/converters/response-converters.js +191 -0
  51. package/dist/esm/converters/response-converters.js.map +1 -0
  52. package/dist/esm/create-backend.js +533 -0
  53. package/dist/esm/create-backend.js.map +1 -0
  54. package/dist/esm/index.js +15 -0
  55. package/dist/esm/index.js.map +1 -0
  56. package/dist/esm/main.js +149 -0
  57. package/dist/esm/main.js.map +1 -0
  58. package/dist/esm/ollama/commands/list.js +67 -0
  59. package/dist/esm/ollama/commands/list.js.map +1 -0
  60. package/dist/esm/ollama/commands/ps.js +77 -0
  61. package/dist/esm/ollama/commands/ps.js.map +1 -0
  62. package/dist/esm/ollama/commands/pull.js +195 -0
  63. package/dist/esm/ollama/commands/pull.js.map +1 -0
  64. package/dist/esm/ollama/commands/run.js +243 -0
  65. package/dist/esm/ollama/commands/run.js.map +1 -0
  66. package/dist/esm/ollama/commands/show.js +135 -0
  67. package/dist/esm/ollama/commands/show.js.map +1 -0
  68. package/dist/esm/ollama/index.js +235 -0
  69. package/dist/esm/ollama/index.js.map +1 -0
  70. package/dist/esm/ollama/types.js +9 -0
  71. package/dist/esm/ollama/types.js.map +1 -0
  72. package/dist/esm/proxy.js +403 -0
  73. package/dist/esm/proxy.js.map +1 -0
  74. package/dist/esm/utils/backend-loader.js +74 -0
  75. package/dist/esm/utils/backend-loader.js.map +1 -0
  76. package/dist/esm/utils/index.js +13 -0
  77. package/dist/esm/utils/index.js.map +1 -0
  78. package/dist/esm/utils/model-translation.js +99 -0
  79. package/dist/esm/utils/model-translation.js.map +1 -0
  80. package/dist/esm/utils/output-formatter.js +224 -0
  81. package/dist/esm/utils/output-formatter.js.map +1 -0
  82. package/dist/esm/utils/pipeline-inspector.js +84 -0
  83. package/dist/esm/utils/pipeline-inspector.js.map +1 -0
  84. package/dist/esm/utils/state-manager.js +111 -0
  85. package/dist/esm/utils/state-manager.js.map +1 -0
  86. package/dist/types/convert-request.d.ts +15 -0
  87. package/dist/types/convert-request.d.ts.map +1 -0
  88. package/dist/types/convert-response.d.ts +16 -0
  89. package/dist/types/convert-response.d.ts.map +1 -0
  90. package/dist/types/converters/request-converters.d.ts +139 -0
  91. package/dist/types/converters/request-converters.d.ts.map +1 -0
  92. package/dist/types/converters/response-converters.d.ts +134 -0
  93. package/dist/types/converters/response-converters.d.ts.map +1 -0
  94. package/dist/types/create-backend.d.ts +20 -0
  95. package/dist/types/create-backend.d.ts.map +1 -0
  96. package/dist/types/index.d.ts +13 -0
  97. package/dist/types/index.d.ts.map +1 -0
  98. package/dist/types/main.d.ts +19 -0
  99. package/dist/types/main.d.ts.map +1 -0
  100. package/dist/types/ollama/commands/list.d.ts +32 -0
  101. package/dist/types/ollama/commands/list.d.ts.map +1 -0
  102. package/dist/types/ollama/commands/ps.d.ts +27 -0
  103. package/dist/types/ollama/commands/ps.d.ts.map +1 -0
  104. package/dist/types/ollama/commands/pull.d.ts +21 -0
  105. package/dist/types/ollama/commands/pull.d.ts.map +1 -0
  106. package/dist/types/ollama/commands/run.d.ts +48 -0
  107. package/dist/types/ollama/commands/run.d.ts.map +1 -0
  108. package/dist/types/ollama/commands/show.d.ts +36 -0
  109. package/dist/types/ollama/commands/show.d.ts.map +1 -0
  110. package/dist/types/ollama/index.d.ts +12 -0
  111. package/dist/types/ollama/index.d.ts.map +1 -0
  112. package/dist/types/ollama/types.d.ts +58 -0
  113. package/dist/types/ollama/types.d.ts.map +1 -0
  114. package/dist/types/proxy.d.ts +16 -0
  115. package/dist/types/proxy.d.ts.map +1 -0
  116. package/dist/types/utils/backend-loader.d.ts +55 -0
  117. package/dist/types/utils/backend-loader.d.ts.map +1 -0
  118. package/dist/types/utils/index.d.ts +13 -0
  119. package/dist/types/utils/index.d.ts.map +1 -0
  120. package/dist/types/utils/model-translation.d.ts +64 -0
  121. package/dist/types/utils/model-translation.d.ts.map +1 -0
  122. package/dist/types/utils/output-formatter.d.ts +113 -0
  123. package/dist/types/utils/output-formatter.d.ts.map +1 -0
  124. package/dist/types/utils/pipeline-inspector.d.ts +50 -0
  125. package/dist/types/utils/pipeline-inspector.d.ts.map +1 -0
  126. package/dist/types/utils/state-manager.d.ts +91 -0
  127. package/dist/types/utils/state-manager.d.ts.map +1 -0
  128. package/package.json +75 -0
  129. package/readme.md +32 -0
@@ -0,0 +1,138 @@
1
+ "use strict";
2
+ /**
3
+ * Model Translation Utility
4
+ *
5
+ * Translates model names between different providers.
6
+ * Supports backend.modelMapping property or external mapping files.
7
+ *
8
+ * @module cli/utils/model-translation
9
+ */
10
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ var desc = Object.getOwnPropertyDescriptor(m, k);
13
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
14
+ desc = { enumerable: true, get: function() { return m[k]; } };
15
+ }
16
+ Object.defineProperty(o, k2, desc);
17
+ }) : (function(o, m, k, k2) {
18
+ if (k2 === undefined) k2 = k;
19
+ o[k2] = m[k];
20
+ }));
21
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
22
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
23
+ }) : function(o, v) {
24
+ o["default"] = v;
25
+ });
26
+ var __importStar = (this && this.__importStar) || (function () {
27
+ var ownKeys = function(o) {
28
+ ownKeys = Object.getOwnPropertyNames || function (o) {
29
+ var ar = [];
30
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
31
+ return ar;
32
+ };
33
+ return ownKeys(o);
34
+ };
35
+ return function (mod) {
36
+ if (mod && mod.__esModule) return mod;
37
+ var result = {};
38
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
39
+ __setModuleDefault(result, mod);
40
+ return result;
41
+ };
42
+ })();
43
+ Object.defineProperty(exports, "__esModule", { value: true });
44
+ exports.translateModel = translateModel;
45
+ exports.loadModelMapping = loadModelMapping;
46
+ exports.reverseMapping = reverseMapping;
47
+ exports.hasTranslation = hasTranslation;
48
+ /**
49
+ * Translate a model name using mapping or backend default.
50
+ *
51
+ * @param modelName - Original model name
52
+ * @param options - Translation options
53
+ * @returns Translated model name or original if no mapping
54
+ *
55
+ * @example
56
+ * ```typescript
57
+ * const backend = new OpenAIBackend({ defaultModel: 'gpt-4o' });
58
+ * backend.modelMapping = { 'llama3.1': 'gpt-4o' };
59
+ *
60
+ * const translated = translateModel('llama3.1', { backend });
61
+ * // → 'gpt-4o'
62
+ * ```
63
+ */
64
+ function translateModel(modelName, options) {
65
+ const { backend, mapping, useBackendDefault = true } = options;
66
+ // Check external mapping first
67
+ if (mapping && mapping[modelName]) {
68
+ return mapping[modelName];
69
+ }
70
+ // Check backend.modelMapping
71
+ const backendMapping = backend.modelMapping;
72
+ if (backendMapping && backendMapping[modelName]) {
73
+ return backendMapping[modelName];
74
+ }
75
+ // Try backend default model
76
+ if (useBackendDefault) {
77
+ const defaultModel = backend.config?.defaultModel;
78
+ if (defaultModel) {
79
+ return defaultModel;
80
+ }
81
+ }
82
+ // No translation - return original
83
+ return modelName;
84
+ }
85
+ /**
86
+ * Load model mapping from JSON file.
87
+ *
88
+ * @param path - Path to JSON file
89
+ * @returns Model mapping
90
+ */
91
+ async function loadModelMapping(path) {
92
+ const { readFile } = await Promise.resolve().then(() => __importStar(require('node:fs/promises')));
93
+ const { resolve } = await Promise.resolve().then(() => __importStar(require('node:path')));
94
+ try {
95
+ const resolvedPath = resolve(process.cwd(), path);
96
+ const content = await readFile(resolvedPath, 'utf-8');
97
+ const mapping = JSON.parse(content);
98
+ if (typeof mapping !== 'object' || mapping === null) {
99
+ throw new Error('Model mapping must be a JSON object');
100
+ }
101
+ return mapping;
102
+ }
103
+ catch (error) {
104
+ throw new Error(`Failed to load model mapping from ${path}: ${error instanceof Error ? error.message : String(error)}`);
105
+ }
106
+ }
107
+ /**
108
+ * Get reverse mapping (backend model → original model name).
109
+ *
110
+ * @param mapping - Forward mapping
111
+ * @returns Reverse mapping
112
+ */
113
+ function reverseMapping(mapping) {
114
+ const reversed = {};
115
+ for (const [key, value] of Object.entries(mapping)) {
116
+ reversed[value] = key;
117
+ }
118
+ return reversed;
119
+ }
120
+ /**
121
+ * Check if model name needs translation.
122
+ *
123
+ * @param modelName - Model name to check
124
+ * @param options - Translation options
125
+ * @returns True if translation is available
126
+ */
127
+ function hasTranslation(modelName, options) {
128
+ const { backend, mapping } = options;
129
+ if (mapping && mapping[modelName]) {
130
+ return true;
131
+ }
132
+ const backendMapping = backend.modelMapping;
133
+ if (backendMapping && backendMapping[modelName]) {
134
+ return true;
135
+ }
136
+ return false;
137
+ }
138
+ //# sourceMappingURL=model-translation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-translation.js","sourceRoot":"","sources":["../../../src/utils/model-translation.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuCH,wCAwBC;AAQD,4CAmBC;AAQD,wCAMC;AASD,wCAgBC;AA1GD;;;;;;;;;;;;;;;GAeG;AACH,SAAgB,cAAc,CAAC,SAAiB,EAAE,OAAgC;IAChF,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,iBAAiB,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;IAE/D,+BAA+B;IAC/B,IAAI,OAAO,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QAClC,OAAO,OAAO,CAAC,SAAS,CAAC,CAAC;IAC5B,CAAC;IAED,6BAA6B;IAC7B,MAAM,cAAc,GAAI,OAAe,CAAC,YAAwC,CAAC;IACjF,IAAI,cAAc,IAAI,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC;QAChD,OAAO,cAAc,CAAC,SAAS,CAAC,CAAC;IACnC,CAAC;IAED,4BAA4B;IAC5B,IAAI,iBAAiB,EAAE,CAAC;QACtB,MAAM,YAAY,GAAI,OAAe,CAAC,MAAM,EAAE,YAAY,CAAC;QAC3D,IAAI,YAAY,EAAE,CAAC;YACjB,OAAO,YAAY,CAAC;QACtB,CAAC;IACH,CAAC;IAED,mCAAmC;IACnC,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;GAKG;AACI,KAAK,UAAU,gBAAgB,CAAC,IAAY;IACjD,MAAM,EAAE,QAAQ,EAAE,GAAG,wDAAa,kBAAkB,GAAC,CAAC;IACtD,MAAM,EAAE,OAAO,EAAE,GAAG,wDAAa,WAAW,GAAC,CAAC;IAE9C,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;QAClD,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QACtD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAEpC,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACpD,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACzD,CAAC;QAED,OAAO,OAAuB,CAAC;IACjC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,qCAAqC,IAAI,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CACvG,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAgB,cAAc,CAAC,OAAqB;IAClD,MAAM,QAAQ,GAAiB,EAAE,CAAC;IAClC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACnD,QAAQ,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC;IACxB,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,cAAc,CAC5B,SAAiB,EACjB,OAA2D;IAE3D,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAErC,IAAI,OAAO,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QAClC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,cAAc,GAAI,OAAe,CAAC,YAAwC,CAAC;IACjF,IAAI,cAAc,IAAI,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC;QAChD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1,241 @@
1
+ "use strict";
2
+ /**
3
+ * Output Formatter Utility
4
+ *
5
+ * Formats output for terminal display.
6
+ * Handles colors, tables, and streaming output.
7
+ *
8
+ * @module cli/utils/output-formatter
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.Spinner = exports.colors = void 0;
12
+ exports.setColorsEnabled = setColorsEnabled;
13
+ exports.areColorsEnabled = areColorsEnabled;
14
+ exports.colorize = colorize;
15
+ exports.style = style;
16
+ exports.success = success;
17
+ exports.error = error;
18
+ exports.warn = warn;
19
+ exports.info = info;
20
+ exports.formatTable = formatTable;
21
+ exports.formatSize = formatSize;
22
+ exports.formatDuration = formatDuration;
23
+ exports.formatRelativeTime = formatRelativeTime;
24
+ exports.printBox = printBox;
25
+ /**
26
+ * ANSI color codes.
27
+ */
28
+ exports.colors = {
29
+ reset: '\x1b[0m',
30
+ bold: '\x1b[1m',
31
+ dim: '\x1b[2m',
32
+ // Foreground colors
33
+ black: '\x1b[30m',
34
+ red: '\x1b[31m',
35
+ green: '\x1b[32m',
36
+ yellow: '\x1b[33m',
37
+ blue: '\x1b[34m',
38
+ magenta: '\x1b[35m',
39
+ cyan: '\x1b[36m',
40
+ white: '\x1b[37m',
41
+ gray: '\x1b[90m',
42
+ // Background colors
43
+ bgBlack: '\x1b[40m',
44
+ bgRed: '\x1b[41m',
45
+ bgGreen: '\x1b[42m',
46
+ bgYellow: '\x1b[43m',
47
+ bgBlue: '\x1b[44m',
48
+ bgMagenta: '\x1b[45m',
49
+ bgCyan: '\x1b[46m',
50
+ bgWhite: '\x1b[47m',
51
+ };
52
+ let colorsEnabled = true;
53
+ /**
54
+ * Enable or disable colored output.
55
+ */
56
+ function setColorsEnabled(enabled) {
57
+ colorsEnabled = enabled;
58
+ }
59
+ /**
60
+ * Check if colors are enabled.
61
+ */
62
+ function areColorsEnabled() {
63
+ return colorsEnabled;
64
+ }
65
+ /**
66
+ * Apply color to text.
67
+ */
68
+ function colorize(text, color) {
69
+ if (!colorsEnabled) {
70
+ return text;
71
+ }
72
+ return `${exports.colors[color]}${text}${exports.colors.reset}`;
73
+ }
74
+ /**
75
+ * Format text with multiple styles.
76
+ */
77
+ function style(text, ...styles) {
78
+ if (!colorsEnabled) {
79
+ return text;
80
+ }
81
+ const prefix = styles.map((s) => exports.colors[s]).join('');
82
+ return `${prefix}${text}${exports.colors.reset}`;
83
+ }
84
+ /**
85
+ * Print success message.
86
+ */
87
+ function success(message) {
88
+ console.log(colorize('✓ ' + message, 'green'));
89
+ }
90
+ /**
91
+ * Print error message.
92
+ */
93
+ function error(message) {
94
+ console.error(colorize('✗ ' + message, 'red'));
95
+ }
96
+ /**
97
+ * Print warning message.
98
+ */
99
+ function warn(message) {
100
+ console.warn(colorize('⚠ ' + message, 'yellow'));
101
+ }
102
+ /**
103
+ * Print info message.
104
+ */
105
+ function info(message) {
106
+ console.log(colorize('ℹ ' + message, 'blue'));
107
+ }
108
+ function formatTable(options) {
109
+ const { columns, rows } = options;
110
+ if (rows.length === 0) {
111
+ return '';
112
+ }
113
+ // Calculate column widths
114
+ const widths = columns.map((col) => {
115
+ const headerWidth = col.header.length;
116
+ const maxContentWidth = Math.max(...rows.map((row) => String(row[col.key] || '').length));
117
+ return col.width || Math.max(headerWidth, maxContentWidth);
118
+ });
119
+ // Format header
120
+ const header = columns.map((col, i) => col.header.padEnd(widths[i] || 0)).join(' ');
121
+ // Format rows
122
+ const formattedRows = rows.map((row) => columns
123
+ .map((col, i) => {
124
+ const value = String(row[col.key] || '');
125
+ const width = widths[i] || 0;
126
+ return col.align === 'right' ? value.padStart(width) : value.padEnd(width);
127
+ })
128
+ .join(' '));
129
+ return [style(header, 'bold'), ...formattedRows].join('\n');
130
+ }
131
+ /**
132
+ * Format file size in human-readable format.
133
+ */
134
+ function formatSize(bytes) {
135
+ const units = ['B', 'KB', 'MB', 'GB', 'TB'];
136
+ let size = bytes;
137
+ let unitIndex = 0;
138
+ while (size >= 1024 && unitIndex < units.length - 1) {
139
+ size /= 1024;
140
+ unitIndex++;
141
+ }
142
+ return `${size.toFixed(1)} ${units[unitIndex]}`;
143
+ }
144
+ /**
145
+ * Format duration in human-readable format.
146
+ */
147
+ function formatDuration(ms) {
148
+ if (ms < 1000) {
149
+ return `${ms}ms`;
150
+ }
151
+ if (ms < 60000) {
152
+ return `${(ms / 1000).toFixed(1)}s`;
153
+ }
154
+ if (ms < 3600000) {
155
+ return `${Math.floor(ms / 60000)}m ${Math.floor((ms % 60000) / 1000)}s`;
156
+ }
157
+ const hours = Math.floor(ms / 3600000);
158
+ const minutes = Math.floor((ms % 3600000) / 60000);
159
+ return `${hours}h ${minutes}m`;
160
+ }
161
+ /**
162
+ * Format relative time (e.g., "2 minutes ago").
163
+ */
164
+ function formatRelativeTime(timestamp) {
165
+ const now = Date.now();
166
+ const diff = now - timestamp;
167
+ if (diff < 60000) {
168
+ return 'just now';
169
+ }
170
+ if (diff < 3600000) {
171
+ const minutes = Math.floor(diff / 60000);
172
+ return `${minutes} minute${minutes !== 1 ? 's' : ''} ago`;
173
+ }
174
+ if (diff < 86400000) {
175
+ const hours = Math.floor(diff / 3600000);
176
+ return `${hours} hour${hours !== 1 ? 's' : ''} ago`;
177
+ }
178
+ const days = Math.floor(diff / 86400000);
179
+ return `${days} day${days !== 1 ? 's' : ''} ago`;
180
+ }
181
+ /**
182
+ * Create a spinner for long-running operations.
183
+ */
184
+ class Spinner {
185
+ frames = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];
186
+ currentFrame = 0;
187
+ interval;
188
+ text;
189
+ constructor(text) {
190
+ this.text = text;
191
+ }
192
+ start() {
193
+ if (this.interval || !colorsEnabled) {
194
+ return;
195
+ }
196
+ this.interval = setInterval(() => {
197
+ const frame = this.frames[this.currentFrame] || '⠋';
198
+ process.stdout.write(`\r${colorize(frame, 'cyan')} ${this.text}`);
199
+ this.currentFrame = (this.currentFrame + 1) % this.frames.length;
200
+ }, 80);
201
+ }
202
+ stop(finalMessage) {
203
+ if (this.interval) {
204
+ clearInterval(this.interval);
205
+ this.interval = undefined;
206
+ }
207
+ // Clear spinner line
208
+ process.stdout.write('\r\x1b[K');
209
+ if (finalMessage) {
210
+ console.log(finalMessage);
211
+ }
212
+ }
213
+ succeed(message) {
214
+ this.stop(success.bind(null, message || this.text));
215
+ }
216
+ fail(message) {
217
+ this.stop(error.bind(null, message || this.text));
218
+ }
219
+ }
220
+ exports.Spinner = Spinner;
221
+ /**
222
+ * Print a box around text.
223
+ */
224
+ function printBox(text, options = {}) {
225
+ const { title, padding = 1 } = options;
226
+ const lines = text.split('\n');
227
+ const maxLength = Math.max(...lines.map((l) => l.length));
228
+ const width = maxLength + padding * 2;
229
+ const top = title
230
+ ? `╭─ ${title} ${'─'.repeat(Math.max(0, width - title.length - 3))}╮`
231
+ : `╭${'─'.repeat(width + 2)}╮`;
232
+ const bottom = `╰${'─'.repeat(width + 2)}╯`;
233
+ const paddingStr = ' '.repeat(padding);
234
+ console.log(style(top, 'cyan'));
235
+ for (const line of lines) {
236
+ const padded = line.padEnd(maxLength);
237
+ console.log(style('│', 'cyan') + paddingStr + padded + paddingStr + style('│', 'cyan'));
238
+ }
239
+ console.log(style(bottom, 'cyan'));
240
+ }
241
+ //# sourceMappingURL=output-formatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output-formatter.js","sourceRoot":"","sources":["../../../src/utils/output-formatter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+ /**
3
+ * CLI Pipeline Inspector - visualize pipeline execution
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.formatTrace = formatTrace;
7
+ exports.formatTraces = formatTraces;
8
+ exports.formatStats = formatStats;
9
+ exports.visualizePipeline = visualizePipeline;
10
+ /**
11
+ * Format a trace for CLI display
12
+ */
13
+ function formatTrace(trace) {
14
+ const lines = [];
15
+ lines.push(`\n┌─ Pipeline Trace: ${trace.requestId}`);
16
+ lines.push(`├─ Duration: ${trace.duration ? `${trace.duration}ms` : 'in progress'}`);
17
+ lines.push(`├─ Status: ${trace.error ? '✗ Error' : '✓ Success'}`);
18
+ if (trace.steps.length > 0) {
19
+ lines.push(`└─ Steps:`);
20
+ for (let i = 0; i < trace.steps.length; i++) {
21
+ const step = trace.steps[i];
22
+ const isLast = i === trace.steps.length - 1;
23
+ const prefix = isLast ? ' └─' : ' ├─';
24
+ lines.push(`${prefix} ${step.name} (${step.type}) - ${step.duration ? `${step.duration}ms` : 'running'}`);
25
+ if (step.error) {
26
+ lines.push(`${isLast ? ' ' : ' │ '}✗ ${step.error.message}`);
27
+ }
28
+ }
29
+ }
30
+ if (trace.error) {
31
+ lines.push(`\nError: ${trace.error.message}`);
32
+ }
33
+ return lines.join('\n');
34
+ }
35
+ /**
36
+ * Format multiple traces
37
+ */
38
+ function formatTraces(traces) {
39
+ if (traces.length === 0) {
40
+ return 'No traces available';
41
+ }
42
+ return traces.map(formatTrace).join('\n\n');
43
+ }
44
+ /**
45
+ * Format debug statistics
46
+ */
47
+ function formatStats(stats) {
48
+ const lines = [];
49
+ lines.push('\n┌─ Debug Statistics');
50
+ lines.push(`├─ Total Requests: ${stats.totalRequests}`);
51
+ lines.push(`├─ Total Events: ${stats.totalEvents}`);
52
+ lines.push(`├─ Average Duration: ${stats.averageDuration.toFixed(2)}ms`);
53
+ lines.push(`├─ Errors: ${stats.errorCount}`);
54
+ lines.push(`├─ Warnings: ${stats.warningCount}`);
55
+ const eventTypes = Object.entries(stats.eventsByType);
56
+ if (eventTypes.length > 0) {
57
+ lines.push(`└─ Events by Type:`);
58
+ for (let i = 0; i < eventTypes.length; i++) {
59
+ const [type, count] = eventTypes[i];
60
+ const isLast = i === eventTypes.length - 1;
61
+ const prefix = isLast ? ' └─' : ' ├─';
62
+ lines.push(`${prefix} ${type}: ${count}`);
63
+ }
64
+ }
65
+ return lines.join('\n');
66
+ }
67
+ /**
68
+ * Create a simple visualization of pipeline flow
69
+ */
70
+ function visualizePipeline(trace) {
71
+ const lines = [];
72
+ lines.push('\nPipeline Flow:');
73
+ lines.push('─'.repeat(60));
74
+ let offset = 0;
75
+ const totalDuration = trace.duration || Date.now() - trace.startTime;
76
+ const scale = 50 / totalDuration;
77
+ for (const step of trace.steps) {
78
+ if (!step.duration)
79
+ continue;
80
+ const barLength = Math.max(1, Math.floor(step.duration * scale));
81
+ const bar = '█'.repeat(barLength);
82
+ const status = step.error ? '✗' : '✓';
83
+ lines.push(`${status} ${step.name.padEnd(20)} ${bar} ${step.duration}ms`);
84
+ offset += step.duration;
85
+ }
86
+ lines.push('─'.repeat(60));
87
+ lines.push(`Total: ${totalDuration}ms`);
88
+ return lines.join('\n');
89
+ }
90
+ //# sourceMappingURL=pipeline-inspector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline-inspector.js","sourceRoot":"","sources":["../../../src/utils/pipeline-inspector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,114 @@
1
+ "use strict";
2
+ /**
3
+ * State Manager Utility
4
+ *
5
+ * Tracks running models and backend state for CLI.
6
+ * Used by `ps` command to show active models.
7
+ *
8
+ * @module cli/utils/state-manager
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.stateManager = void 0;
12
+ /**
13
+ * Global state manager for running models.
14
+ */
15
+ class StateManager {
16
+ models = new Map();
17
+ cleanupTimers = new Map();
18
+ /**
19
+ * Add a running model.
20
+ */
21
+ add(model) {
22
+ const key = `${model.backend}:${model.name}`;
23
+ this.models.set(key, model);
24
+ // Set up cleanup timer if TTL specified
25
+ if (model.ttl) {
26
+ this.scheduleCleanup(key, model.ttl);
27
+ }
28
+ }
29
+ /**
30
+ * Update last activity time.
31
+ */
32
+ touch(backend, modelName) {
33
+ const key = `${backend}:${modelName}`;
34
+ const model = this.models.get(key);
35
+ if (model) {
36
+ model.lastActivity = Date.now();
37
+ // Reschedule cleanup if TTL set
38
+ if (model.ttl) {
39
+ this.scheduleCleanup(key, model.ttl);
40
+ }
41
+ }
42
+ }
43
+ /**
44
+ * Remove a running model.
45
+ */
46
+ remove(backend, modelName) {
47
+ const key = `${backend}:${modelName}`;
48
+ this.models.delete(key);
49
+ // Clear cleanup timer
50
+ const timer = this.cleanupTimers.get(key);
51
+ if (timer) {
52
+ clearTimeout(timer);
53
+ this.cleanupTimers.delete(key);
54
+ }
55
+ }
56
+ /**
57
+ * Get a running model.
58
+ */
59
+ get(backend, modelName) {
60
+ const key = `${backend}:${modelName}`;
61
+ return this.models.get(key);
62
+ }
63
+ /**
64
+ * Get all running models.
65
+ */
66
+ getAll() {
67
+ return Array.from(this.models.values());
68
+ }
69
+ /**
70
+ * Get models by backend.
71
+ */
72
+ getByBackend(backend) {
73
+ return Array.from(this.models.values()).filter((m) => m.backend === backend);
74
+ }
75
+ /**
76
+ * Check if model is running.
77
+ */
78
+ isRunning(backend, modelName) {
79
+ const key = `${backend}:${modelName}`;
80
+ return this.models.has(key);
81
+ }
82
+ /**
83
+ * Clear all models.
84
+ */
85
+ clear() {
86
+ // Clear all timers
87
+ for (const timer of this.cleanupTimers.values()) {
88
+ clearTimeout(timer);
89
+ }
90
+ this.cleanupTimers.clear();
91
+ this.models.clear();
92
+ }
93
+ /**
94
+ * Schedule cleanup after TTL.
95
+ */
96
+ scheduleCleanup(key, ttl) {
97
+ // Clear existing timer
98
+ const existingTimer = this.cleanupTimers.get(key);
99
+ if (existingTimer) {
100
+ clearTimeout(existingTimer);
101
+ }
102
+ // Schedule new timer
103
+ const timer = setTimeout(() => {
104
+ this.models.delete(key);
105
+ this.cleanupTimers.delete(key);
106
+ }, ttl);
107
+ this.cleanupTimers.set(key, timer);
108
+ }
109
+ }
110
+ /**
111
+ * Global state manager instance.
112
+ */
113
+ exports.stateManager = new StateManager();
114
+ //# sourceMappingURL=state-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state-manager.js","sourceRoot":"","sources":["../../../src/utils/state-manager.ts"],"names":[],"mappings":"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"}