@freesyntax/notch-cli 0.5.19 → 0.5.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{apply-patch-EBZ5VLO7.js → apply-patch-D5PDUXUC.js} +0 -1
- package/dist/{auth-S3FIB42I.js → auth-JQX6MHJG.js} +0 -1
- package/dist/builtins/archimedes.toml +18 -0
- package/dist/builtins/awaiter.toml +18 -0
- package/dist/builtins/euclid.toml +18 -0
- package/dist/builtins/hypatia.toml +18 -0
- package/dist/builtins/kepler.toml +18 -0
- package/dist/builtins/plato.toml +18 -0
- package/dist/builtins/ptolemy.toml +18 -0
- package/dist/builtins/pythagoras.toml +18 -0
- package/dist/chunk-443G6HCC.js +543 -0
- package/dist/chunk-GFVLHUSS.js +155 -0
- package/dist/chunk-MMBFNIKE.js +509 -0
- package/dist/chunk-OSWUX6TC.js +167 -0
- package/dist/{chunk-6M6CXXWR.js → chunk-PKZKVOAN.js} +209 -1
- package/dist/chunk-QKM27RHS.js +198 -0
- package/dist/chunk-TU465P2P.js +3106 -0
- package/dist/compression-SQAIQ2UU.js +32 -0
- package/dist/{edit-FXWXOFAF.js → edit-JEFEK43H.js} +0 -1
- package/dist/{git-XVWI2BT7.js → git-5T5TSQTX.js} +0 -1
- package/dist/{github-DOZ2MVQE.js → github-DWRGWX6U.js} +0 -1
- package/dist/{glob-XSBN4MDB.js → glob-BI3P4C7Q.js} +0 -1
- package/dist/{grep-2A42QPWM.js → grep-VZ3I5GNW.js} +0 -1
- package/dist/index.js +5049 -1113
- package/dist/{lsp-WUEGBQ3F.js → lsp-UPY6I3L7.js} +0 -1
- package/dist/{notebook-5U6PAF6M.js → notebook-FXJBTSPA.js} +0 -1
- package/dist/ollama-bench-QQHBIG2D.js +190 -0
- package/dist/ollama-launch-2ASVER3S.js +18 -0
- package/dist/ollama-usage-2WPCZJJI.js +69 -0
- package/dist/{plugins-GJIUZCJ5.js → plugins-OG2P75K5.js} +0 -1
- package/dist/{read-LY2VGCZY.js → read-OVJG2XKW.js} +0 -1
- package/dist/{server-4JRQH3DT.js → server-7UQKCB2Z.js} +15 -17
- package/dist/session-index-SSGOOZXK.js +21 -0
- package/dist/{shell-RGXMLRLH.js → shell-4X545EVN.js} +0 -1
- package/dist/{task-VIJ3N5EB.js → task-OS3E5F3X.js} +0 -1
- package/dist/{tools-XKVTMNR5.js → tools-7WAWS6V4.js} +3 -2
- package/dist/{web-fetch-XOH5PUCP.js → web-fetch-KNIV3Z3W.js} +0 -1
- package/dist/{write-DOLDW7HM.js → write-NNHLOTYK.js} +0 -1
- package/package.json +6 -4
- package/dist/chunk-3RG5ZIWI.js +0 -10
- package/dist/chunk-75K7DQVI.js +0 -630
- package/dist/compression-LPFNGAV6.js +0 -17
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
import {
|
|
2
|
+
printNotReachable,
|
|
3
|
+
renderProgressLine,
|
|
4
|
+
resolveEndpoint
|
|
5
|
+
} from "./chunk-MMBFNIKE.js";
|
|
6
|
+
import {
|
|
7
|
+
detectDaemon,
|
|
8
|
+
listModels,
|
|
9
|
+
pullModel
|
|
10
|
+
} from "./chunk-GFVLHUSS.js";
|
|
11
|
+
import {
|
|
12
|
+
resolveByokModel
|
|
13
|
+
} from "./chunk-443G6HCC.js";
|
|
14
|
+
|
|
15
|
+
// src/commands/ollama-bench.ts
|
|
16
|
+
import fs from "fs/promises";
|
|
17
|
+
import path from "path";
|
|
18
|
+
import chalk from "chalk";
|
|
19
|
+
import { streamText } from "ai";
|
|
20
|
+
var DEFAULT_PROMPT = "Write a 5-line Python function that returns the n-th Fibonacci number.";
|
|
21
|
+
var DEFAULT_BENCH_MODELS = [
|
|
22
|
+
"qwen3-coder:30b",
|
|
23
|
+
"llama3.2:latest",
|
|
24
|
+
"gpt-oss:20b"
|
|
25
|
+
];
|
|
26
|
+
function approximateTokens(text) {
|
|
27
|
+
if (!text) return 0;
|
|
28
|
+
return Math.round(text.split(/\s+/).filter(Boolean).length / 0.75);
|
|
29
|
+
}
|
|
30
|
+
async function ensureModelPresent(modelName, baseUrl, apiKey, allowPull) {
|
|
31
|
+
try {
|
|
32
|
+
const installed = await listModels(baseUrl, { apiKey });
|
|
33
|
+
if (installed.some((m) => m.name === modelName)) return true;
|
|
34
|
+
} catch {
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
37
|
+
if (!allowPull) return false;
|
|
38
|
+
console.log(chalk.gray(`
|
|
39
|
+
Pulling ${modelName} (not installed)...
|
|
40
|
+
`));
|
|
41
|
+
const lastStatus = { label: "" };
|
|
42
|
+
try {
|
|
43
|
+
for await (const ev of pullModel(modelName, baseUrl, { apiKey })) {
|
|
44
|
+
renderProgressLine(ev, lastStatus);
|
|
45
|
+
}
|
|
46
|
+
} catch (err) {
|
|
47
|
+
process.stdout.write("\n");
|
|
48
|
+
console.error(chalk.red(` Pull failed: ${err.message}`));
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
return true;
|
|
52
|
+
}
|
|
53
|
+
async function runOne(model, prompt, baseUrl, apiKey, isCloud) {
|
|
54
|
+
const providerId = isCloud ? "ollama-cloud" : "ollama";
|
|
55
|
+
const { model: languageModel } = resolveByokModel({
|
|
56
|
+
provider: providerId,
|
|
57
|
+
model,
|
|
58
|
+
apiKey,
|
|
59
|
+
baseUrl
|
|
60
|
+
});
|
|
61
|
+
const messages = [{ role: "user", content: prompt }];
|
|
62
|
+
const started = Date.now();
|
|
63
|
+
let firstTokenAt = 0;
|
|
64
|
+
let output = "";
|
|
65
|
+
try {
|
|
66
|
+
const stream = streamText({ model: languageModel, messages });
|
|
67
|
+
for await (const chunk of stream.textStream) {
|
|
68
|
+
if (!firstTokenAt) firstTokenAt = Date.now();
|
|
69
|
+
output += chunk;
|
|
70
|
+
}
|
|
71
|
+
const finished = Date.now();
|
|
72
|
+
const usage = await stream.usage;
|
|
73
|
+
const promptTokens = usage?.promptTokens ?? approximateTokens(prompt);
|
|
74
|
+
const completionTokens = usage?.completionTokens ?? approximateTokens(output);
|
|
75
|
+
const totalMs = finished - started;
|
|
76
|
+
const firstTokenMs = firstTokenAt ? firstTokenAt - started : totalMs;
|
|
77
|
+
const seconds = Math.max(1e-3, totalMs / 1e3);
|
|
78
|
+
return {
|
|
79
|
+
model,
|
|
80
|
+
firstTokenMs,
|
|
81
|
+
totalMs,
|
|
82
|
+
tokensPerSec: completionTokens / seconds,
|
|
83
|
+
promptTokens,
|
|
84
|
+
completionTokens,
|
|
85
|
+
output
|
|
86
|
+
};
|
|
87
|
+
} catch (err) {
|
|
88
|
+
return {
|
|
89
|
+
model,
|
|
90
|
+
firstTokenMs: 0,
|
|
91
|
+
totalMs: Date.now() - started,
|
|
92
|
+
tokensPerSec: 0,
|
|
93
|
+
promptTokens: 0,
|
|
94
|
+
completionTokens: 0,
|
|
95
|
+
output: "",
|
|
96
|
+
error: err.message
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
function formatRow(r) {
|
|
101
|
+
const name = r.model.padEnd(28);
|
|
102
|
+
const ttft = `${r.firstTokenMs.toString().padStart(5)} ms`;
|
|
103
|
+
const total = `${r.totalMs.toString().padStart(6)} ms`;
|
|
104
|
+
const tps = `${r.tokensPerSec.toFixed(1).padStart(6)} tok/s`;
|
|
105
|
+
const toks = `${r.promptTokens}\u2192${r.completionTokens}`;
|
|
106
|
+
if (r.error) {
|
|
107
|
+
return ` ${chalk.red("\u2717")} ${chalk.white(name)} ${chalk.red(r.error.slice(0, 70))}`;
|
|
108
|
+
}
|
|
109
|
+
return ` ${chalk.green("\u2713")} ${chalk.white(name)} ${chalk.gray(ttft)} ${chalk.gray(total)} ${chalk.cyan(tps)} ${chalk.gray(toks.padEnd(12))}`;
|
|
110
|
+
}
|
|
111
|
+
async function persistBench(projectRoot, results, prompt) {
|
|
112
|
+
const outDir = path.join(projectRoot, ".notch");
|
|
113
|
+
await fs.mkdir(outDir, { recursive: true });
|
|
114
|
+
const file = path.join(outDir, "ollama-bench.json");
|
|
115
|
+
const payload = {
|
|
116
|
+
ts: (/* @__PURE__ */ new Date()).toISOString(),
|
|
117
|
+
prompt,
|
|
118
|
+
results: results.map((r) => ({
|
|
119
|
+
model: r.model,
|
|
120
|
+
firstTokenMs: r.firstTokenMs,
|
|
121
|
+
totalMs: r.totalMs,
|
|
122
|
+
tokensPerSec: Number(r.tokensPerSec.toFixed(2)),
|
|
123
|
+
promptTokens: r.promptTokens,
|
|
124
|
+
completionTokens: r.completionTokens,
|
|
125
|
+
error: r.error
|
|
126
|
+
}))
|
|
127
|
+
};
|
|
128
|
+
await fs.writeFile(file, JSON.stringify(payload, null, 2) + "\n", "utf-8");
|
|
129
|
+
return file;
|
|
130
|
+
}
|
|
131
|
+
async function runOllamaBench(flags, opts) {
|
|
132
|
+
const { baseUrl, apiKey, mode } = await resolveEndpoint(flags);
|
|
133
|
+
if (!await detectDaemon(baseUrl, { apiKey })) {
|
|
134
|
+
printNotReachable(baseUrl, mode);
|
|
135
|
+
return 1;
|
|
136
|
+
}
|
|
137
|
+
const modelsArg = flags.model ?? "";
|
|
138
|
+
const fromFlag = modelsArg.split(",").map((s) => s.trim()).filter(Boolean);
|
|
139
|
+
const models = fromFlag.length > 0 ? fromFlag : DEFAULT_BENCH_MODELS;
|
|
140
|
+
const prompt = flags.positional.join(" ").trim() || DEFAULT_PROMPT;
|
|
141
|
+
console.log("");
|
|
142
|
+
console.log(chalk.cyan(` Ollama bench \u2014 ${models.length} model(s) @ ${baseUrl}`));
|
|
143
|
+
console.log(chalk.gray(` Prompt: ${prompt}`));
|
|
144
|
+
console.log("");
|
|
145
|
+
const results = [];
|
|
146
|
+
for (const model of models) {
|
|
147
|
+
if (mode === "local") {
|
|
148
|
+
const present = await ensureModelPresent(model, baseUrl, apiKey, flags.yes);
|
|
149
|
+
if (!present) {
|
|
150
|
+
results.push({
|
|
151
|
+
model,
|
|
152
|
+
firstTokenMs: 0,
|
|
153
|
+
totalMs: 0,
|
|
154
|
+
tokensPerSec: 0,
|
|
155
|
+
promptTokens: 0,
|
|
156
|
+
completionTokens: 0,
|
|
157
|
+
output: "",
|
|
158
|
+
error: "not installed (pass -y to auto-pull)"
|
|
159
|
+
});
|
|
160
|
+
continue;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
process.stdout.write(chalk.gray(` running ${model}... `));
|
|
164
|
+
const result = await runOne(model, prompt, baseUrl, apiKey, mode === "cloud");
|
|
165
|
+
results.push(result);
|
|
166
|
+
process.stdout.write("\r\x1B[K");
|
|
167
|
+
}
|
|
168
|
+
const ranked = [...results].sort((a, b) => {
|
|
169
|
+
if (a.error && !b.error) return 1;
|
|
170
|
+
if (!a.error && b.error) return -1;
|
|
171
|
+
return b.tokensPerSec - a.tokensPerSec;
|
|
172
|
+
});
|
|
173
|
+
const header = ` ${" "}${"model".padEnd(28)} ${"ttft".padStart(8)} ${"total".padStart(9)} ${"throughput".padStart(12)} ${"tokens (p\u2192c)"}`;
|
|
174
|
+
console.log(chalk.gray(header));
|
|
175
|
+
console.log(chalk.gray(` ${"-".repeat(header.length - 2)}`));
|
|
176
|
+
for (const r of ranked) console.log(formatRow(r));
|
|
177
|
+
try {
|
|
178
|
+
const saved = await persistBench(opts.projectRoot, ranked, prompt);
|
|
179
|
+
console.log("");
|
|
180
|
+
console.log(chalk.gray(` Saved: ${saved}`));
|
|
181
|
+
console.log("");
|
|
182
|
+
} catch (err) {
|
|
183
|
+
console.warn(chalk.yellow(` ! Could not persist bench: ${err.message}`));
|
|
184
|
+
}
|
|
185
|
+
const anyFailed = ranked.some((r) => r.error);
|
|
186
|
+
return anyFailed ? 1 : 0;
|
|
187
|
+
}
|
|
188
|
+
export {
|
|
189
|
+
runOllamaBench
|
|
190
|
+
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import {
|
|
2
|
+
parseFlags,
|
|
3
|
+
persistOllamaChoice,
|
|
4
|
+
printNotReachable,
|
|
5
|
+
renderProgressLine,
|
|
6
|
+
resolveEndpoint,
|
|
7
|
+
runOllamaCli
|
|
8
|
+
} from "./chunk-MMBFNIKE.js";
|
|
9
|
+
import "./chunk-GFVLHUSS.js";
|
|
10
|
+
import "./chunk-443G6HCC.js";
|
|
11
|
+
export {
|
|
12
|
+
parseFlags,
|
|
13
|
+
persistOllamaChoice,
|
|
14
|
+
printNotReachable,
|
|
15
|
+
renderProgressLine,
|
|
16
|
+
resolveEndpoint,
|
|
17
|
+
runOllamaCli
|
|
18
|
+
};
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import {
|
|
2
|
+
isCloudModel
|
|
3
|
+
} from "./chunk-GFVLHUSS.js";
|
|
4
|
+
|
|
5
|
+
// src/ui/ollama-usage.ts
|
|
6
|
+
import chalk from "chalk";
|
|
7
|
+
var OllamaCloudUsageTracker = class {
|
|
8
|
+
turns = [];
|
|
9
|
+
/**
|
|
10
|
+
* Record a turn. The tracker auto-filters: only entries whose modelId
|
|
11
|
+
* looks like an Ollama Cloud model are kept. Non-cloud turns are
|
|
12
|
+
* silently ignored so callers can fire this once per turn without
|
|
13
|
+
* conditionals.
|
|
14
|
+
*/
|
|
15
|
+
record(turn) {
|
|
16
|
+
if (!this.isCloudTurn(turn.modelId)) return;
|
|
17
|
+
this.turns.push(turn);
|
|
18
|
+
}
|
|
19
|
+
isCloudTurn(modelId) {
|
|
20
|
+
if (!modelId) return false;
|
|
21
|
+
if (modelId.startsWith("ollama-cloud:")) return true;
|
|
22
|
+
return isCloudModel(modelId);
|
|
23
|
+
}
|
|
24
|
+
get turnCount() {
|
|
25
|
+
return this.turns.length;
|
|
26
|
+
}
|
|
27
|
+
get sessionTotals() {
|
|
28
|
+
return this.turns.reduce(
|
|
29
|
+
(acc, t) => ({
|
|
30
|
+
promptTokens: acc.promptTokens + t.promptTokens,
|
|
31
|
+
completionTokens: acc.completionTokens + t.completionTokens,
|
|
32
|
+
totalTokens: acc.totalTokens + t.totalTokens,
|
|
33
|
+
toolCalls: acc.toolCalls + t.toolCalls,
|
|
34
|
+
iterations: acc.iterations + t.iterations
|
|
35
|
+
}),
|
|
36
|
+
{ promptTokens: 0, completionTokens: 0, totalTokens: 0, toolCalls: 0, iterations: 0 }
|
|
37
|
+
);
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* One-line footer rendered after every turn when the active model is
|
|
41
|
+
* an Ollama Cloud alias. Kept intentionally short — it sits beside
|
|
42
|
+
* the existing UsageTracker.formatLast() output.
|
|
43
|
+
*/
|
|
44
|
+
formatFooter(activeModelId) {
|
|
45
|
+
if (!this.isCloudTurn(activeModelId) || this.turnCount === 0) return "";
|
|
46
|
+
const total = this.sessionTotals;
|
|
47
|
+
const totalK = (total.totalTokens / 1e3).toFixed(1);
|
|
48
|
+
return chalk.gray(` [cloud: ${this.turnCount} turns, ${totalK}K tokens]`);
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Multi-line breakdown for `/usage cloud` / `/status` style surfaces.
|
|
52
|
+
*/
|
|
53
|
+
formatDetail() {
|
|
54
|
+
if (this.turnCount === 0) {
|
|
55
|
+
return chalk.gray(" No Ollama Cloud traffic this session.");
|
|
56
|
+
}
|
|
57
|
+
const total = this.sessionTotals;
|
|
58
|
+
return [
|
|
59
|
+
chalk.gray(" Ollama Cloud"),
|
|
60
|
+
chalk.gray(` turns ${this.turnCount}`),
|
|
61
|
+
chalk.gray(` prompt ${total.promptTokens.toLocaleString()} tokens`),
|
|
62
|
+
chalk.gray(` completion ${total.completionTokens.toLocaleString()} tokens`),
|
|
63
|
+
chalk.gray(` total ${total.totalTokens.toLocaleString()} tokens`)
|
|
64
|
+
].join("\n");
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
export {
|
|
68
|
+
OllamaCloudUsageTracker
|
|
69
|
+
};
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import "./chunk-3RG5ZIWI.js";
|
|
2
|
-
|
|
3
1
|
// src/mcp/server.ts
|
|
4
2
|
import readline from "readline";
|
|
5
3
|
|
|
@@ -1317,8 +1315,8 @@ function toolsToMcpList(tools) {
|
|
|
1317
1315
|
}));
|
|
1318
1316
|
}
|
|
1319
1317
|
async function runMcpServer(opts) {
|
|
1320
|
-
const toolsModule = await import("./tools-
|
|
1321
|
-
const { pluginManager } = await import("./plugins-
|
|
1318
|
+
const toolsModule = await import("./tools-7WAWS6V4.js");
|
|
1319
|
+
const { pluginManager } = await import("./plugins-OG2P75K5.js");
|
|
1322
1320
|
if (opts.includePlugins !== false) {
|
|
1323
1321
|
try {
|
|
1324
1322
|
await pluginManager.init(opts.cwd, (m) => logStderr(m));
|
|
@@ -1327,19 +1325,19 @@ async function runMcpServer(opts) {
|
|
|
1327
1325
|
}
|
|
1328
1326
|
}
|
|
1329
1327
|
const getTools = () => toolsModule.listToolNames().map((name) => ({ name, desc: toolsModule.describeTools() })).filter(() => true);
|
|
1330
|
-
const { readTool } = await import("./read-
|
|
1331
|
-
const { writeTool } = await import("./write-
|
|
1332
|
-
const { editTool } = await import("./edit-
|
|
1333
|
-
const { applyPatchTool } = await import("./apply-patch-
|
|
1334
|
-
const { shellTool } = await import("./shell-
|
|
1335
|
-
const { gitTool } = await import("./git-
|
|
1336
|
-
const { githubTool } = await import("./github-
|
|
1337
|
-
const { grepTool } = await import("./grep-
|
|
1338
|
-
const { globTool } = await import("./glob-
|
|
1339
|
-
const { webFetchTool } = await import("./web-fetch-
|
|
1340
|
-
const { lspTool } = await import("./lsp-
|
|
1341
|
-
const { notebookTool } = await import("./notebook-
|
|
1342
|
-
const { taskTool } = await import("./task-
|
|
1328
|
+
const { readTool } = await import("./read-OVJG2XKW.js");
|
|
1329
|
+
const { writeTool } = await import("./write-NNHLOTYK.js");
|
|
1330
|
+
const { editTool } = await import("./edit-JEFEK43H.js");
|
|
1331
|
+
const { applyPatchTool } = await import("./apply-patch-D5PDUXUC.js");
|
|
1332
|
+
const { shellTool } = await import("./shell-4X545EVN.js");
|
|
1333
|
+
const { gitTool } = await import("./git-5T5TSQTX.js");
|
|
1334
|
+
const { githubTool } = await import("./github-DWRGWX6U.js");
|
|
1335
|
+
const { grepTool } = await import("./grep-VZ3I5GNW.js");
|
|
1336
|
+
const { globTool } = await import("./glob-BI3P4C7Q.js");
|
|
1337
|
+
const { webFetchTool } = await import("./web-fetch-KNIV3Z3W.js");
|
|
1338
|
+
const { lspTool } = await import("./lsp-UPY6I3L7.js");
|
|
1339
|
+
const { notebookTool } = await import("./notebook-FXJBTSPA.js");
|
|
1340
|
+
const { taskTool } = await import("./task-OS3E5F3X.js");
|
|
1343
1341
|
const exposed = [
|
|
1344
1342
|
readTool,
|
|
1345
1343
|
writeTool,
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import {
|
|
2
|
+
deriveEntryFromRollout,
|
|
3
|
+
forgetSession,
|
|
4
|
+
getSession,
|
|
5
|
+
indexFilePath,
|
|
6
|
+
querySessions,
|
|
7
|
+
rebuildIndex,
|
|
8
|
+
tagSession,
|
|
9
|
+
upsertSessionIndexEntry
|
|
10
|
+
} from "./chunk-OSWUX6TC.js";
|
|
11
|
+
import "./chunk-QKM27RHS.js";
|
|
12
|
+
export {
|
|
13
|
+
deriveEntryFromRollout,
|
|
14
|
+
forgetSession,
|
|
15
|
+
getSession,
|
|
16
|
+
indexFilePath,
|
|
17
|
+
querySessions,
|
|
18
|
+
rebuildIndex,
|
|
19
|
+
tagSession,
|
|
20
|
+
upsertSessionIndexEntry
|
|
21
|
+
};
|
|
@@ -5,7 +5,8 @@ import {
|
|
|
5
5
|
initMCPServers,
|
|
6
6
|
listToolNames,
|
|
7
7
|
mcpToolCount
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-TU465P2P.js";
|
|
9
|
+
import "./chunk-QKM27RHS.js";
|
|
9
10
|
import "./chunk-6CZCFY6H.js";
|
|
10
11
|
import "./chunk-6U3ZAGYA.js";
|
|
11
12
|
import "./chunk-FFB7GK3Y.js";
|
|
@@ -14,13 +15,13 @@ import "./chunk-TH6GKC7E.js";
|
|
|
14
15
|
import "./chunk-KZAS754V.js";
|
|
15
16
|
import "./chunk-UR4XL6OM.js";
|
|
16
17
|
import "./chunk-3QUV4JEX.js";
|
|
18
|
+
import "./chunk-FIFC4V2R.js";
|
|
17
19
|
import "./chunk-CQMAVWLJ.js";
|
|
18
20
|
import "./chunk-O3WZW7GS.js";
|
|
19
21
|
import "./chunk-YAYPQTOU.js";
|
|
20
22
|
import "./chunk-C4CPDDMN.js";
|
|
21
23
|
import "./chunk-W4FAGQFL.js";
|
|
22
24
|
import "./chunk-FAULT7VE.js";
|
|
23
|
-
import "./chunk-3RG5ZIWI.js";
|
|
24
25
|
export {
|
|
25
26
|
buildToolMap,
|
|
26
27
|
describeTools,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@freesyntax/notch-cli",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.21",
|
|
4
4
|
"description": "Notch CLI — AI-powered coding assistant by Driftrail",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -10,9 +10,9 @@
|
|
|
10
10
|
"dist"
|
|
11
11
|
],
|
|
12
12
|
"scripts": {
|
|
13
|
-
"build": "tsup
|
|
14
|
-
"build:publish": "tsup
|
|
15
|
-
"dev": "tsup
|
|
13
|
+
"build": "tsup --dts",
|
|
14
|
+
"build:publish": "tsup",
|
|
15
|
+
"dev": "tsup --watch",
|
|
16
16
|
"start": "node dist/index.js",
|
|
17
17
|
"typecheck": "tsc --noEmit",
|
|
18
18
|
"lint": "eslint src/",
|
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
"prepublishOnly": "npm run build:publish"
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
|
+
"@ai-sdk/anthropic": "^1.2.12",
|
|
23
24
|
"@ai-sdk/openai": "^1.2.0",
|
|
24
25
|
"ai": "^4.3.2",
|
|
25
26
|
"chalk": "^5.3.0",
|
|
@@ -28,6 +29,7 @@
|
|
|
28
29
|
"ignore": "^6.0.2",
|
|
29
30
|
"ora": "^8.1.1",
|
|
30
31
|
"simple-git": "^3.27.0",
|
|
32
|
+
"smol-toml": "^1.6.1",
|
|
31
33
|
"zod": "^3.24.1"
|
|
32
34
|
},
|
|
33
35
|
"devDependencies": {
|
package/dist/chunk-3RG5ZIWI.js
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
|
|
2
|
-
get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
|
|
3
|
-
}) : x)(function(x) {
|
|
4
|
-
if (typeof require !== "undefined") return require.apply(this, arguments);
|
|
5
|
-
throw Error('Dynamic require of "' + x + '" is not supported');
|
|
6
|
-
});
|
|
7
|
-
|
|
8
|
-
export {
|
|
9
|
-
__require
|
|
10
|
-
};
|