@marcopeg/hal 1.0.26 → 1.0.27

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 (107) hide show
  1. package/README.md +49 -54
  2. package/dist/bot/commands/session.d.ts.map +1 -1
  3. package/dist/bot/commands/session.js +8 -4
  4. package/dist/bot/commands/session.js.map +1 -1
  5. package/dist/bot/handlers/document.d.ts.map +1 -1
  6. package/dist/bot/handlers/document.js +8 -4
  7. package/dist/bot/handlers/document.js.map +1 -1
  8. package/dist/bot/handlers/photo.d.ts.map +1 -1
  9. package/dist/bot/handlers/photo.js +8 -4
  10. package/dist/bot/handlers/photo.js.map +1 -1
  11. package/dist/bot/handlers/text.d.ts.map +1 -1
  12. package/dist/bot/handlers/text.js +8 -4
  13. package/dist/bot/handlers/text.js.map +1 -1
  14. package/dist/bot/handlers/voice.d.ts.map +1 -1
  15. package/dist/bot/handlers/voice.js +8 -4
  16. package/dist/bot/handlers/voice.js.map +1 -1
  17. package/dist/bot.d.ts.map +1 -1
  18. package/dist/bot.js +20 -2
  19. package/dist/bot.js.map +1 -1
  20. package/dist/cli.js +54 -23
  21. package/dist/cli.js.map +1 -1
  22. package/dist/config-watcher.d.ts +7 -3
  23. package/dist/config-watcher.d.ts.map +1 -1
  24. package/dist/config-watcher.js +6 -4
  25. package/dist/config-watcher.js.map +1 -1
  26. package/dist/config.d.ts +49 -146
  27. package/dist/config.d.ts.map +1 -1
  28. package/dist/config.js +140 -39
  29. package/dist/config.js.map +1 -1
  30. package/dist/default-models.d.ts.map +1 -1
  31. package/dist/default-models.js +3 -4
  32. package/dist/default-models.js.map +1 -1
  33. package/dist/engine/adapters/antigravity.d.ts.map +1 -1
  34. package/dist/engine/adapters/antigravity.js +7 -3
  35. package/dist/engine/adapters/antigravity.js.map +1 -1
  36. package/dist/engine/adapters/claude.d.ts.map +1 -1
  37. package/dist/engine/adapters/claude.js +16 -6
  38. package/dist/engine/adapters/claude.js.map +1 -1
  39. package/dist/engine/adapters/codex.d.ts.map +1 -1
  40. package/dist/engine/adapters/codex.js +28 -5
  41. package/dist/engine/adapters/codex.js.map +1 -1
  42. package/dist/engine/adapters/copilot.js +2 -2
  43. package/dist/engine/adapters/copilot.js.map +1 -1
  44. package/dist/engine/adapters/cursor.d.ts.map +1 -1
  45. package/dist/engine/adapters/cursor.js +45 -5
  46. package/dist/engine/adapters/cursor.js.map +1 -1
  47. package/dist/engine/adapters/opencode.d.ts.map +1 -1
  48. package/dist/engine/adapters/opencode.js +4 -2
  49. package/dist/engine/adapters/opencode.js.map +1 -1
  50. package/dist/engine/cli-available.d.ts +9 -1
  51. package/dist/engine/cli-available.d.ts.map +1 -1
  52. package/dist/engine/cli-available.js +27 -2
  53. package/dist/engine/cli-available.js.map +1 -1
  54. package/dist/engine/codex-sessions.d.ts +7 -0
  55. package/dist/engine/codex-sessions.d.ts.map +1 -0
  56. package/dist/engine/codex-sessions.js +90 -0
  57. package/dist/engine/codex-sessions.js.map +1 -0
  58. package/dist/init-template.yaml +5 -8
  59. package/package.json +1 -1
  60. package/dist/bot/commands/clear.d.ts +0 -4
  61. package/dist/bot/commands/clear.d.ts.map +0 -1
  62. package/dist/bot/commands/clear.js +0 -24
  63. package/dist/bot/commands/clear.js.map +0 -1
  64. package/dist/bot/commands/tasks.d.ts +0 -5
  65. package/dist/bot/commands/tasks.d.ts.map +0 -1
  66. package/dist/bot/commands/tasks.js +0 -123
  67. package/dist/bot/commands/tasks.js.map +0 -1
  68. package/dist/claude/executor.d.ts +0 -21
  69. package/dist/claude/executor.d.ts.map +0 -1
  70. package/dist/claude/executor.js +0 -185
  71. package/dist/claude/executor.js.map +0 -1
  72. package/dist/claude/parser.d.ts +0 -13
  73. package/dist/claude/parser.d.ts.map +0 -1
  74. package/dist/claude/parser.js +0 -63
  75. package/dist/claude/parser.js.map +0 -1
  76. package/dist/engine/detect.d.ts +0 -26
  77. package/dist/engine/detect.d.ts.map +0 -1
  78. package/dist/engine/detect.js +0 -129
  79. package/dist/engine/detect.js.map +0 -1
  80. package/dist/engine/model-cache.d.ts +0 -25
  81. package/dist/engine/model-cache.d.ts.map +0 -1
  82. package/dist/engine/model-cache.js +0 -162
  83. package/dist/engine/model-cache.js.map +0 -1
  84. package/dist/engine/model-validation.d.ts +0 -9
  85. package/dist/engine/model-validation.d.ts.map +0 -1
  86. package/dist/engine/model-validation.js +0 -21
  87. package/dist/engine/model-validation.js.map +0 -1
  88. package/dist/engine/models-data.generated.d.ts +0 -4
  89. package/dist/engine/models-data.generated.d.ts.map +0 -1
  90. package/dist/engine/models-data.generated.js +0 -196
  91. package/dist/engine/models-data.generated.js.map +0 -1
  92. package/dist/engine/models-fetch.d.ts +0 -5
  93. package/dist/engine/models-fetch.d.ts.map +0 -1
  94. package/dist/engine/models-fetch.js +0 -54
  95. package/dist/engine/models-fetch.js.map +0 -1
  96. package/dist/engine/probe-utils.d.ts +0 -6
  97. package/dist/engine/probe-utils.d.ts.map +0 -1
  98. package/dist/engine/probe-utils.js +0 -42
  99. package/dist/engine/probe-utils.js.map +0 -1
  100. package/dist/prompts.d.ts +0 -19
  101. package/dist/prompts.d.ts.map +0 -1
  102. package/dist/prompts.js +0 -73
  103. package/dist/prompts.js.map +0 -1
  104. package/dist/setup-wizard.d.ts +0 -4
  105. package/dist/setup-wizard.d.ts.map +0 -1
  106. package/dist/setup-wizard.js +0 -258
  107. package/dist/setup-wizard.js.map +0 -1
@@ -1,25 +0,0 @@
1
- import type { EngineAdapter, EngineName, ModelListResult } from "./types.js";
2
- interface CacheEngineEntry {
3
- models: {
4
- id: string;
5
- displayName: string;
6
- description?: string;
7
- }[];
8
- lastUpdatedAt: string;
9
- source: "cli" | "http" | "cache" | "embedded";
10
- }
11
- export interface CacheData {
12
- fetchedAt: string;
13
- engines: Partial<Record<EngineName, CacheEngineEntry>>;
14
- }
15
- export declare function readCache(configDir: string): CacheData | null;
16
- export declare function writeCache(configDir: string, data: CacheData): void;
17
- export declare function isCacheValid(cache: CacheData): boolean;
18
- export declare function resolveModels(engine: EngineName, adapter: EngineAdapter, configDir: string): Promise<ModelListResult>;
19
- export declare function fetchAllModels(engines: Map<EngineName, EngineAdapter>, configDir: string): Promise<CacheData>;
20
- export declare function startModelCacheRefresh(engines: Map<EngineName, EngineAdapter>, configDir: string): {
21
- stop: () => void;
22
- };
23
- export declare function getCachedModels(engine: EngineName): ModelListResult | null;
24
- export {};
25
- //# sourceMappingURL=model-cache.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"model-cache.d.ts","sourceRoot":"","sources":["../../src/engine/model-cache.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAI7E,UAAU,gBAAgB;IACxB,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACpE,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,UAAU,CAAC;CAC/C;AAED,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC,CAAC;CACxD;AAiBD,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAO7D;AAED,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,IAAI,CAMnE;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAGtD;AAID,wBAAsB,aAAa,CACjC,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,aAAa,EACtB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,eAAe,CAAC,CA+C1B;AAqBD,wBAAsB,cAAc,CAClC,OAAO,EAAE,GAAG,CAAC,UAAU,EAAE,aAAa,CAAC,EACvC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,SAAS,CAAC,CAoCpB;AAID,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,GAAG,CAAC,UAAU,EAAE,aAAa,CAAC,EACvC,SAAS,EAAE,MAAM,GAChB;IAAE,IAAI,EAAE,MAAM,IAAI,CAAA;CAAE,CAmBtB;AAID,wBAAgB,eAAe,CAAC,MAAM,EAAE,UAAU,GAAG,eAAe,GAAG,IAAI,CAS1E"}
@@ -1,162 +0,0 @@
1
- import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
2
- import { join } from "node:path";
3
- import { getEmbeddedModels } from "./models-fetch.js";
4
- const CACHE_FILE = "models.json";
5
- const CACHE_DIR = "cache";
6
- const CACHE_MAX_AGE_MS = 24 * 60 * 60 * 1000; // 24 hours
7
- const REFRESH_INTERVAL_MS = 60 * 60 * 1000; // 1 hour
8
- // ─── In-memory cache ────────────────────────────────────────────────────────
9
- let memoryCache = null;
10
- // ─── File cache operations ──────────────────────────────────────────────────
11
- function cachePath(configDir) {
12
- return join(configDir, ".hal", CACHE_DIR, CACHE_FILE);
13
- }
14
- export function readCache(configDir) {
15
- try {
16
- const raw = readFileSync(cachePath(configDir), "utf-8");
17
- return JSON.parse(raw);
18
- }
19
- catch {
20
- return null;
21
- }
22
- }
23
- export function writeCache(configDir, data) {
24
- const dir = join(configDir, ".hal", CACHE_DIR);
25
- if (!existsSync(dir)) {
26
- mkdirSync(dir, { recursive: true });
27
- }
28
- writeFileSync(cachePath(configDir), JSON.stringify(data, null, 2), "utf-8");
29
- }
30
- export function isCacheValid(cache) {
31
- const age = Date.now() - new Date(cache.fetchedAt).getTime();
32
- return age < CACHE_MAX_AGE_MS;
33
- }
34
- // ─── Resolve models (fallback chain) ────────────────────────────────────────
35
- export async function resolveModels(engine, adapter, configDir) {
36
- // 1. In-memory cache
37
- if (memoryCache?.engines[engine]) {
38
- const entry = memoryCache.engines[engine];
39
- return {
40
- engine,
41
- models: entry.models,
42
- lastUpdatedAt: entry.lastUpdatedAt,
43
- source: "cache",
44
- };
45
- }
46
- // 2. File cache (if valid)
47
- const fileCache = readCache(configDir);
48
- if (fileCache && isCacheValid(fileCache) && fileCache.engines[engine]) {
49
- // Populate memory cache
50
- memoryCache = fileCache;
51
- const entry = fileCache.engines[engine];
52
- return {
53
- engine,
54
- models: entry.models,
55
- lastUpdatedAt: entry.lastUpdatedAt,
56
- source: "cache",
57
- };
58
- }
59
- // 3. Fresh fetch from adapter
60
- try {
61
- const result = await adapter.listModels();
62
- // Update caches
63
- updateCache(configDir, engine, result);
64
- return result;
65
- }
66
- catch {
67
- // 4. Stale file cache
68
- if (fileCache?.engines[engine]) {
69
- const entry = fileCache.engines[engine];
70
- return {
71
- engine,
72
- models: entry.models,
73
- lastUpdatedAt: entry.lastUpdatedAt,
74
- source: "cache",
75
- };
76
- }
77
- // 5. Embedded fallback
78
- return getEmbeddedModels(engine);
79
- }
80
- }
81
- function updateCache(configDir, engine, result) {
82
- if (!memoryCache) {
83
- memoryCache = { fetchedAt: new Date().toISOString(), engines: {} };
84
- }
85
- memoryCache.engines[engine] = {
86
- models: result.models,
87
- lastUpdatedAt: result.lastUpdatedAt,
88
- source: result.source,
89
- };
90
- memoryCache.fetchedAt = new Date().toISOString();
91
- writeCache(configDir, memoryCache);
92
- }
93
- // ─── Boot-time fetch for all used engines ───────────────────────────────────
94
- export async function fetchAllModels(engines, configDir) {
95
- // Check file cache first
96
- const fileCache = readCache(configDir);
97
- if (fileCache && isCacheValid(fileCache)) {
98
- memoryCache = fileCache;
99
- // Only fetch engines not in cache
100
- const missing = [...engines.entries()].filter(([name]) => !fileCache.engines[name]);
101
- if (missing.length === 0)
102
- return fileCache;
103
- for (const [name, adapter] of missing) {
104
- try {
105
- const result = await adapter.listModels();
106
- updateCache(configDir, name, result);
107
- }
108
- catch {
109
- // Use embedded as last resort
110
- const embedded = getEmbeddedModels(name);
111
- updateCache(configDir, name, embedded);
112
- }
113
- }
114
- return memoryCache;
115
- }
116
- // Fresh fetch for all engines
117
- memoryCache = { fetchedAt: new Date().toISOString(), engines: {} };
118
- for (const [name, adapter] of engines) {
119
- try {
120
- const result = await adapter.listModels();
121
- updateCache(configDir, name, result);
122
- }
123
- catch {
124
- const embedded = getEmbeddedModels(name);
125
- updateCache(configDir, name, embedded);
126
- }
127
- }
128
- return memoryCache;
129
- }
130
- // ─── Hourly refresh ─────────────────────────────────────────────────────────
131
- export function startModelCacheRefresh(engines, configDir) {
132
- const interval = setInterval(async () => {
133
- for (const [name, adapter] of engines) {
134
- try {
135
- const result = await adapter.listModels();
136
- updateCache(configDir, name, result);
137
- }
138
- catch {
139
- // Silently ignore — stale cache / embedded will be used
140
- }
141
- }
142
- }, REFRESH_INTERVAL_MS);
143
- interval.unref();
144
- return {
145
- stop() {
146
- clearInterval(interval);
147
- },
148
- };
149
- }
150
- // ─── Get cached models for an engine (used by validation) ───────────────────
151
- export function getCachedModels(engine) {
152
- if (!memoryCache?.engines[engine])
153
- return null;
154
- const entry = memoryCache.engines[engine];
155
- return {
156
- engine,
157
- models: entry.models,
158
- lastUpdatedAt: entry.lastUpdatedAt,
159
- source: "cache",
160
- };
161
- }
162
- //# sourceMappingURL=model-cache.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"model-cache.js","sourceRoot":"","sources":["../../src/engine/model-cache.ts"],"names":[],"mappings":"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"}
@@ -1,9 +0,0 @@
1
- import type { ResolvedProjectConfig } from "../config.js";
2
- import type { CacheData } from "./model-cache.js";
3
- interface ValidationResult {
4
- valid: boolean;
5
- errors: string[];
6
- }
7
- export declare function validateEngineModels(projects: ResolvedProjectConfig[], modelCache: CacheData): ValidationResult;
8
- export {};
9
- //# sourceMappingURL=model-validation.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"model-validation.d.ts","sourceRoot":"","sources":["../../src/engine/model-validation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAElD,UAAU,gBAAgB;IACxB,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,qBAAqB,EAAE,EACjC,UAAU,EAAE,SAAS,GACpB,gBAAgB,CA0BlB"}
@@ -1,21 +0,0 @@
1
- export function validateEngineModels(projects, modelCache) {
2
- const errors = [];
3
- for (const project of projects) {
4
- const modelId = project.engineModel;
5
- if (!modelId)
6
- continue; // No model configured — relies on engine default
7
- const engineData = modelCache.engines[project.engine];
8
- if (!engineData) {
9
- errors.push(`Project "${project.name || project.slug}": no model data available for engine "${project.engine}". ` +
10
- `Cannot validate model "${modelId}".`);
11
- continue;
12
- }
13
- const modelIds = engineData.models.map((m) => m.id);
14
- if (!modelIds.includes(modelId)) {
15
- errors.push(`Project "${project.name || project.slug}": model "${modelId}" is not valid for engine "${project.engine}". ` +
16
- `Available: ${modelIds.join(", ")}`);
17
- }
18
- }
19
- return { valid: errors.length === 0, errors };
20
- }
21
- //# sourceMappingURL=model-validation.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"model-validation.js","sourceRoot":"","sources":["../../src/engine/model-validation.ts"],"names":[],"mappings":"AAQA,MAAM,UAAU,oBAAoB,CAClC,QAAiC,EACjC,UAAqB;IAErB,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC;QACpC,IAAI,CAAC,OAAO;YAAE,SAAS,CAAC,iDAAiD;QAEzE,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACtD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,CAAC,IAAI,CACT,YAAY,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,0CAA0C,OAAO,CAAC,MAAM,KAAK;gBACnG,0BAA0B,OAAO,IAAI,CACxC,CAAC;YACF,SAAS;QACX,CAAC;QAED,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAChC,MAAM,CAAC,IAAI,CACT,YAAY,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,aAAa,OAAO,8BAA8B,OAAO,CAAC,MAAM,KAAK;gBAC3G,cAAc,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACtC,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;AAChD,CAAC"}
@@ -1,4 +0,0 @@
1
- import type { EngineName, ModelEntry } from "./types.js";
2
- export declare const EMBEDDED_MODELS: Record<EngineName, ModelEntry[]>;
3
- export declare const MODELS_LAST_UPDATED = "2026-03-02T06:28:37.506Z";
4
- //# sourceMappingURL=models-data.generated.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"models-data.generated.d.ts","sourceRoot":"","sources":["../../src/engine/models-data.generated.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEzD,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,UAAU,EAAE,UAAU,EAAE,CAiMnD,CAAC;AAEX,eAAO,MAAM,mBAAmB,6BAA6B,CAAC"}
@@ -1,196 +0,0 @@
1
- export const EMBEDDED_MODELS = {
2
- claude: [
3
- {
4
- id: "claude-opus-4-6",
5
- displayName: "Claude Opus 4.6",
6
- description: "Most capable, best for complex reasoning and coding",
7
- },
8
- {
9
- id: "claude-sonnet-4-6",
10
- displayName: "Claude Sonnet 4.6",
11
- description: "Balanced performance and speed",
12
- },
13
- {
14
- id: "claude-haiku-4-5",
15
- displayName: "Claude Haiku 4.5",
16
- description: "Fast and cost-effective",
17
- },
18
- {
19
- id: "claude-sonnet-4-5",
20
- displayName: "Claude Sonnet 4.5",
21
- description: "Previous generation balanced model",
22
- },
23
- {
24
- id: "claude-opus-4-5",
25
- displayName: "Claude Opus 4.5",
26
- description: "Previous generation high-capability model",
27
- },
28
- {
29
- id: "claude-opus-4-1",
30
- displayName: "Claude Opus 4.1",
31
- description: "Earlier high-capability model",
32
- },
33
- {
34
- id: "claude-sonnet-4",
35
- displayName: "Claude Sonnet 4",
36
- description: "Earlier balanced model",
37
- },
38
- {
39
- id: "claude-opus-4",
40
- displayName: "Claude Opus 4",
41
- description: "Earlier capability model",
42
- },
43
- ],
44
- copilot: [
45
- {
46
- id: "gpt-5",
47
- displayName: "GPT-5",
48
- description: "Most capable OpenAI model",
49
- },
50
- {
51
- id: "gpt-5-mini",
52
- displayName: "GPT-5 Mini",
53
- description: "Compact GPT-5 variant",
54
- },
55
- {
56
- id: "gpt-4.1",
57
- displayName: "GPT-4.1",
58
- description: "Refined GPT-4 model",
59
- },
60
- {
61
- id: "o3",
62
- displayName: "o3",
63
- description: "Advanced reasoning model",
64
- },
65
- {
66
- id: "o3-mini",
67
- displayName: "o3 Mini",
68
- description: "Compact reasoning model",
69
- },
70
- {
71
- id: "o4-mini",
72
- displayName: "o4 Mini",
73
- description: "Latest compact reasoning model",
74
- },
75
- {
76
- id: "claude-sonnet-4.5",
77
- displayName: "Claude Sonnet 4.5",
78
- description: "Anthropic model via Copilot",
79
- },
80
- {
81
- id: "claude-opus-4.5",
82
- displayName: "Claude Opus 4.5",
83
- description: "Anthropic high-end via Copilot",
84
- },
85
- {
86
- id: "gemini-2.5-pro",
87
- displayName: "Gemini 2.5 Pro",
88
- description: "Google model via Copilot",
89
- },
90
- {
91
- id: "gemini-3-flash",
92
- displayName: "Gemini 3 Flash",
93
- description: "Fast Google model via Copilot",
94
- },
95
- {
96
- id: "gemini-3-pro",
97
- displayName: "Gemini 3 Pro",
98
- description: "Advanced Google model via Copilot",
99
- },
100
- ],
101
- codex: [
102
- {
103
- id: "gpt-5.3-codex",
104
- displayName: "GPT-5.3 Codex",
105
- description: "Full-size Codex model",
106
- },
107
- {
108
- id: "gpt-5.3-codex-spark",
109
- displayName: "GPT-5.3 Codex Spark",
110
- description: "Lightweight Codex model",
111
- },
112
- {
113
- id: "codex-mini-latest",
114
- displayName: "Codex Mini",
115
- description: "Minimal latency Codex model",
116
- },
117
- ],
118
- opencode: [
119
- {
120
- id: "anthropic/claude-sonnet-4-6",
121
- displayName: "Claude Sonnet 4.6",
122
- description: "Anthropic via OpenCode",
123
- },
124
- {
125
- id: "anthropic/claude-opus-4-6",
126
- displayName: "Claude Opus 4.6",
127
- description: "Anthropic high-end via OpenCode",
128
- },
129
- {
130
- id: "openai/gpt-5",
131
- displayName: "GPT-5",
132
- description: "OpenAI via OpenCode",
133
- },
134
- {
135
- id: "openai/o3",
136
- displayName: "o3",
137
- description: "OpenAI reasoning via OpenCode",
138
- },
139
- {
140
- id: "google/gemini-2.5-pro",
141
- displayName: "Gemini 2.5 Pro",
142
- description: "Google via OpenCode",
143
- },
144
- ],
145
- cursor: [
146
- {
147
- id: "claude-4-sonnet-thinking",
148
- displayName: "Claude 4 Sonnet Thinking",
149
- description: "Sonnet with extended thinking",
150
- },
151
- {
152
- id: "claude-4-opus-thinking",
153
- displayName: "Claude 4 Opus Thinking",
154
- description: "Opus with extended thinking",
155
- },
156
- {
157
- id: "o3",
158
- displayName: "o3",
159
- description: "OpenAI reasoning model",
160
- },
161
- {
162
- id: "gpt-5",
163
- displayName: "GPT-5",
164
- description: "OpenAI flagship model",
165
- },
166
- {
167
- id: "gemini-2.5-pro",
168
- displayName: "Gemini 2.5 Pro",
169
- description: "Google advanced model",
170
- },
171
- ],
172
- antigravity: [
173
- {
174
- id: "gemini-2.5-pro",
175
- displayName: "Gemini 2.5 Pro",
176
- description: "Most capable Gemini model",
177
- },
178
- {
179
- id: "gemini-2.5-flash",
180
- displayName: "Gemini 2.5 Flash",
181
- description: "Fast and efficient Gemini model",
182
- },
183
- {
184
- id: "gemini-3-pro",
185
- displayName: "Gemini 3 Pro",
186
- description: "Next-gen Gemini model",
187
- },
188
- {
189
- id: "gemini-3-flash",
190
- displayName: "Gemini 3 Flash",
191
- description: "Next-gen fast Gemini model",
192
- },
193
- ],
194
- };
195
- export const MODELS_LAST_UPDATED = "2026-03-02T06:28:37.506Z";
196
- //# sourceMappingURL=models-data.generated.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"models-data.generated.js","sourceRoot":"","sources":["../../src/engine/models-data.generated.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- import type { EngineName, ModelListResult } from "./types.js";
2
- export declare function getEmbeddedModels(engine: EngineName): ModelListResult;
3
- export declare function fetchModelsFromModelsDev(provider: string, engine: EngineName): Promise<ModelListResult>;
4
- export declare function parseCliModelOutput(output: string, engine: EngineName): ModelListResult;
5
- //# sourceMappingURL=models-fetch.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"models-fetch.d.ts","sourceRoot":"","sources":["../../src/engine/models-fetch.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAc,eAAe,EAAE,MAAM,YAAY,CAAC;AAE1E,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,UAAU,GAAG,eAAe,CAOrE;AASD,wBAAsB,wBAAwB,CAC5C,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,UAAU,GACjB,OAAO,CAAC,eAAe,CAAC,CAkB1B;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,UAAU,GACjB,eAAe,CAwBjB"}
@@ -1,54 +0,0 @@
1
- import { EMBEDDED_MODELS, MODELS_LAST_UPDATED, } from "./models-data.generated.js";
2
- export function getEmbeddedModels(engine) {
3
- return {
4
- engine,
5
- models: EMBEDDED_MODELS[engine] ?? [],
6
- lastUpdatedAt: MODELS_LAST_UPDATED,
7
- source: "embedded",
8
- };
9
- }
10
- export async function fetchModelsFromModelsDev(provider, engine) {
11
- const res = await fetch("https://models.dev/api.json");
12
- if (!res.ok)
13
- throw new Error(`models.dev returned ${res.status}`);
14
- const data = (await res.json());
15
- const filtered = data.filter((m) => m.provider?.toLowerCase() === provider.toLowerCase());
16
- const models = filtered.map((m) => ({
17
- id: m.slug,
18
- displayName: m.name,
19
- description: m.description,
20
- }));
21
- return {
22
- engine,
23
- models,
24
- lastUpdatedAt: new Date().toISOString(),
25
- source: "http",
26
- };
27
- }
28
- export function parseCliModelOutput(output, engine) {
29
- const models = [];
30
- for (const line of output.split("\n")) {
31
- const trimmed = line.trim();
32
- if (!trimmed || trimmed.startsWith("#") || trimmed.startsWith("-"))
33
- continue;
34
- // Try to parse "id - description" or just "id"
35
- const dashMatch = trimmed.match(/^(\S+)\s+-\s+(.+)$/);
36
- if (dashMatch) {
37
- models.push({
38
- id: dashMatch[1],
39
- displayName: dashMatch[1],
40
- description: dashMatch[2],
41
- });
42
- }
43
- else if (/^\S+$/.test(trimmed)) {
44
- models.push({ id: trimmed, displayName: trimmed });
45
- }
46
- }
47
- return {
48
- engine,
49
- models,
50
- lastUpdatedAt: new Date().toISOString(),
51
- source: "cli",
52
- };
53
- }
54
- //# sourceMappingURL=models-fetch.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"models-fetch.js","sourceRoot":"","sources":["../../src/engine/models-fetch.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,mBAAmB,GACpB,MAAM,4BAA4B,CAAC;AAGpC,MAAM,UAAU,iBAAiB,CAAC,MAAkB;IAClD,OAAO;QACL,MAAM;QACN,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC,IAAI,EAAE;QACrC,aAAa,EAAE,mBAAmB;QAClC,MAAM,EAAE,UAAU;KACnB,CAAC;AACJ,CAAC;AASD,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,QAAgB,EAChB,MAAkB;IAElB,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACvD,IAAI,CAAC,GAAG,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IAClE,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAqB,CAAC;IACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAC1B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,WAAW,EAAE,KAAK,QAAQ,CAAC,WAAW,EAAE,CAC5D,CAAC;IACF,MAAM,MAAM,GAAiB,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAChD,EAAE,EAAE,CAAC,CAAC,IAAI;QACV,WAAW,EAAE,CAAC,CAAC,IAAI;QACnB,WAAW,EAAE,CAAC,CAAC,WAAW;KAC3B,CAAC,CAAC,CAAC;IACJ,OAAO;QACL,MAAM;QACN,MAAM;QACN,aAAa,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACvC,MAAM,EAAE,MAAM;KACf,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,MAAc,EACd,MAAkB;IAElB,MAAM,MAAM,GAAiB,EAAE,CAAC;IAChC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACtC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;YAChE,SAAS;QACX,+CAA+C;QAC/C,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;QACtD,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,CAAC,IAAI,CAAC;gBACV,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC;gBAChB,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC;gBACzB,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC;aAC1B,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACjC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IACD,OAAO;QACL,MAAM;QACN,MAAM;QACN,aAAa,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACvC,MAAM,EAAE,KAAK;KACd,CAAC;AACJ,CAAC"}
@@ -1,6 +0,0 @@
1
- /**
2
- * Spawn a CLI command with a "hi" prompt and verify it produces output.
3
- * Returns true if exit code === 0 and stdout is non-empty.
4
- */
5
- export declare function spawnProbe(cmd: string, args: string[], cwd: string, timeoutMs?: number, env?: NodeJS.ProcessEnv): Promise<boolean>;
6
- //# sourceMappingURL=probe-utils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"probe-utils.d.ts","sourceRoot":"","sources":["../../src/engine/probe-utils.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,wBAAgB,UAAU,CACxB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EAAE,EACd,GAAG,EAAE,MAAM,EACX,SAAS,SAAqB,EAC9B,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,GACtB,OAAO,CAAC,OAAO,CAAC,CAuClB"}
@@ -1,42 +0,0 @@
1
- import { spawn } from "node:child_process";
2
- const DEFAULT_TIMEOUT_MS = 30_000;
3
- /**
4
- * Spawn a CLI command with a "hi" prompt and verify it produces output.
5
- * Returns true if exit code === 0 and stdout is non-empty.
6
- */
7
- export function spawnProbe(cmd, args, cwd, timeoutMs = DEFAULT_TIMEOUT_MS, env) {
8
- return new Promise((resolve) => {
9
- const proc = spawn(cmd, args, {
10
- cwd,
11
- env: env ?? process.env,
12
- stdio: ["ignore", "pipe", "pipe"],
13
- });
14
- let stdout = "";
15
- let done = false;
16
- const timer = setTimeout(() => {
17
- if (!done) {
18
- done = true;
19
- proc.kill("SIGKILL");
20
- resolve(false);
21
- }
22
- }, timeoutMs);
23
- proc.stdout.on("data", (data) => {
24
- stdout += data.toString();
25
- });
26
- proc.on("close", (code) => {
27
- if (!done) {
28
- done = true;
29
- clearTimeout(timer);
30
- resolve(code === 0 && stdout.trim().length > 0);
31
- }
32
- });
33
- proc.on("error", () => {
34
- if (!done) {
35
- done = true;
36
- clearTimeout(timer);
37
- resolve(false);
38
- }
39
- });
40
- });
41
- }
42
- //# sourceMappingURL=probe-utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"probe-utils.js","sourceRoot":"","sources":["../../src/engine/probe-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAElC;;;GAGG;AACH,MAAM,UAAU,UAAU,CACxB,GAAW,EACX,IAAc,EACd,GAAW,EACX,SAAS,GAAG,kBAAkB,EAC9B,GAAuB;IAEvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE;YAC5B,GAAG;YACH,GAAG,EAAE,GAAG,IAAI,OAAO,CAAC,GAAG;YACvB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;SAClC,CAAC,CAAC;QAEH,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,IAAI,GAAG,KAAK,CAAC;QAEjB,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,IAAI,GAAG,IAAI,CAAC;gBACZ,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACrB,OAAO,CAAC,KAAK,CAAC,CAAC;YACjB,CAAC;QACH,CAAC,EAAE,SAAS,CAAC,CAAC;QAEd,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;YACtC,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACxB,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,IAAI,GAAG,IAAI,CAAC;gBACZ,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpB,OAAO,CAAC,IAAI,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAClD,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACpB,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,IAAI,GAAG,IAAI,CAAC;gBACZ,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpB,OAAO,CAAC,KAAK,CAAC,CAAC;YACjB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
package/dist/prompts.d.ts DELETED
@@ -1,19 +0,0 @@
1
- /** Close the shared readline. Call once when all prompts are done. */
2
- export declare function closePrompts(): void;
3
- export declare function confirm(options: {
4
- message: string;
5
- default?: boolean;
6
- }): Promise<boolean>;
7
- export declare function input(options: {
8
- message: string;
9
- default?: string;
10
- validate?: (val: string) => string | true;
11
- }): Promise<string>;
12
- export declare function select<T extends string>(options: {
13
- message: string;
14
- choices: Array<{
15
- name: string;
16
- value: T;
17
- }>;
18
- }): Promise<T>;
19
- //# sourceMappingURL=prompts.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"AA6BA,sEAAsE;AACtE,wBAAgB,YAAY,IAAI,IAAI,CAKnC;AAUD,wBAAsB,OAAO,CAAC,OAAO,EAAE;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,GAAG,OAAO,CAAC,OAAO,CAAC,CAQnB;AAID,wBAAsB,KAAK,CAAC,OAAO,EAAE;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;CAC3C,GAAG,OAAO,CAAC,MAAM,CAAC,CAkBlB;AAID,wBAAsB,MAAM,CAAC,CAAC,SAAS,MAAM,EAAE,OAAO,EAAE;IACtD,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,CAAC,CAAA;KAAE,CAAC,CAAC;CAC5C,GAAG,OAAO,CAAC,CAAC,CAAC,CAiBb"}