@snelusha/noto 1.0.4 → 1.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/index.js +80 -7
- package/package.json +8 -7
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<h1 align="center">noto ✨</h1>
|
|
2
2
|
<p align="center"><sup>(/nōto/, <em>notebook</em> in Japanese)</sup></p>
|
|
3
|
-
<img src="https://github.com/snelusha/static/blob/main/noto/banner.png?raw=true" align="center"></img>
|
|
3
|
+
<img src="https://github.com/snelusha/static/blob/main/noto/banner-sharp.png?raw=true" align="center"></img>
|
|
4
4
|
|
|
5
5
|
## Features
|
|
6
6
|
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// src/index.ts
|
|
2
2
|
import * as p6 from "@clack/prompts";
|
|
3
|
-
import
|
|
3
|
+
import color7 from "picocolors";
|
|
4
4
|
|
|
5
5
|
// src/utils/parser.ts
|
|
6
6
|
import arg from "arg";
|
|
@@ -64,7 +64,8 @@ var AvailableModelsSchema = z.enum([
|
|
|
64
64
|
"gemini-1.5-pro-latest",
|
|
65
65
|
"gemini-2.0-flash-lite-preview-02-05",
|
|
66
66
|
"gemini-2.0-flash-exp",
|
|
67
|
-
"gemini-2.0-pro-exp-02-05"
|
|
67
|
+
"gemini-2.0-pro-exp-02-05",
|
|
68
|
+
"gemini-2.5-pro-exp-03-25"
|
|
68
69
|
]);
|
|
69
70
|
|
|
70
71
|
// src/utils/storage.ts
|
|
@@ -153,10 +154,26 @@ import dedent2 from "dedent";
|
|
|
153
154
|
|
|
154
155
|
// src/utils/git.ts
|
|
155
156
|
import simpleGit from "simple-git";
|
|
157
|
+
var INIT_COMMIT_MESSAGE = "chore: init repo";
|
|
156
158
|
var git = simpleGit();
|
|
157
159
|
var isGitRepository = async () => {
|
|
158
160
|
return git.checkIsRepo();
|
|
159
161
|
};
|
|
162
|
+
var getCommitCount = async () => {
|
|
163
|
+
try {
|
|
164
|
+
const count = await git.raw(["rev-list", "--all", "--count"]);
|
|
165
|
+
return parseInt(count);
|
|
166
|
+
} catch (error) {
|
|
167
|
+
const message = error.message;
|
|
168
|
+
const regex = /(ambiguous argument.*HEAD|unknown revision or path.*HEAD)/;
|
|
169
|
+
if (regex.test(message)) return 0;
|
|
170
|
+
throw error;
|
|
171
|
+
}
|
|
172
|
+
};
|
|
173
|
+
var isFirstCommit = async () => {
|
|
174
|
+
const count = await getCommitCount();
|
|
175
|
+
return count === 0;
|
|
176
|
+
};
|
|
160
177
|
var getStagedDiff = async () => {
|
|
161
178
|
try {
|
|
162
179
|
return git.diff(["--cached"]);
|
|
@@ -234,7 +251,8 @@ var models = {
|
|
|
234
251
|
"gemini-2.0-flash-lite-preview-02-05"
|
|
235
252
|
),
|
|
236
253
|
"gemini-2.0-flash-exp": google("gemini-2.0-flash-exp"),
|
|
237
|
-
"gemini-2.0-pro-exp-02-05": google("gemini-2.0-pro-exp-02-05")
|
|
254
|
+
"gemini-2.0-pro-exp-02-05": google("gemini-2.0-pro-exp-02-05"),
|
|
255
|
+
"gemini-2.5-pro-exp-03-25": google("gemini-2.5-pro-exp-03-25")
|
|
238
256
|
};
|
|
239
257
|
var availableModels = Object.keys(models);
|
|
240
258
|
var getModel = async () => {
|
|
@@ -362,7 +380,12 @@ var command = {
|
|
|
362
380
|
options.type = type;
|
|
363
381
|
}
|
|
364
382
|
spin.start("generating commit message");
|
|
365
|
-
let message =
|
|
383
|
+
let message = null;
|
|
384
|
+
if (!await isFirstCommit()) {
|
|
385
|
+
message = await generateCommitMessage(diff, options.type);
|
|
386
|
+
} else {
|
|
387
|
+
message = INIT_COMMIT_MESSAGE;
|
|
388
|
+
}
|
|
366
389
|
spin.stop(isEditMode ? color3.white(message) : color3.green(message));
|
|
367
390
|
if (isEditMode) {
|
|
368
391
|
const editedMessage = await p3.text({
|
|
@@ -553,6 +576,15 @@ var model = {
|
|
|
553
576
|
p5.log.error(color5.red("nothing changed!"));
|
|
554
577
|
return await exit(1);
|
|
555
578
|
}
|
|
579
|
+
if (model2 === "gemini-2.5-pro-exp-03-25") {
|
|
580
|
+
const confirm2 = await p5.confirm({
|
|
581
|
+
message: "this model has a rate limit of 5 RPM (requests per minute) 50 requests per day, do you want to continue?"
|
|
582
|
+
});
|
|
583
|
+
if (p5.isCancel(confirm2) || !confirm2) {
|
|
584
|
+
p5.log.error(color5.red("nothing changed!"));
|
|
585
|
+
return await exit(1);
|
|
586
|
+
}
|
|
587
|
+
}
|
|
556
588
|
await StorageManager.update((current) => ({
|
|
557
589
|
...current,
|
|
558
590
|
llm: {
|
|
@@ -609,14 +641,51 @@ var command3 = {
|
|
|
609
641
|
};
|
|
610
642
|
var config_default = command3;
|
|
611
643
|
|
|
644
|
+
// src/commands/help.ts
|
|
645
|
+
import color6 from "picocolors";
|
|
646
|
+
var help = {
|
|
647
|
+
name: "help",
|
|
648
|
+
description: "show help",
|
|
649
|
+
usage: "noto help [command]",
|
|
650
|
+
execute: async (options) => {
|
|
651
|
+
const command4 = getCommand(options._[0]);
|
|
652
|
+
if (command4) {
|
|
653
|
+
console.log();
|
|
654
|
+
console.log(color6.bold("Usage"));
|
|
655
|
+
console.log(` ${command4.usage}`);
|
|
656
|
+
console.log();
|
|
657
|
+
console.log(color6.bold("Description"));
|
|
658
|
+
console.log(` ${command4.description}`);
|
|
659
|
+
console.log();
|
|
660
|
+
} else {
|
|
661
|
+
const commands2 = listCommand();
|
|
662
|
+
console.log();
|
|
663
|
+
console.log(color6.bold("Usage"));
|
|
664
|
+
console.log(` noto [command] [options]`);
|
|
665
|
+
console.log();
|
|
666
|
+
console.log(color6.bold("Commands"));
|
|
667
|
+
commands2.forEach((command5) => {
|
|
668
|
+
console.log(
|
|
669
|
+
` ${color6.bold(command5.name)} ${color6.dim(command5.description)}`
|
|
670
|
+
);
|
|
671
|
+
});
|
|
672
|
+
console.log();
|
|
673
|
+
}
|
|
674
|
+
}
|
|
675
|
+
};
|
|
676
|
+
var help_default = help;
|
|
677
|
+
|
|
612
678
|
// src/commands/index.ts
|
|
613
|
-
var commands = [noto_default, prev_default, config_default];
|
|
679
|
+
var commands = [noto_default, prev_default, config_default, help_default];
|
|
614
680
|
var getCommand = (name, cmds = commands) => {
|
|
615
681
|
return cmds.find((cmd) => cmd.name === name);
|
|
616
682
|
};
|
|
683
|
+
var listCommand = () => {
|
|
684
|
+
return commands;
|
|
685
|
+
};
|
|
617
686
|
|
|
618
687
|
// package.json
|
|
619
|
-
var version = "1.0.
|
|
688
|
+
var version = "1.0.6";
|
|
620
689
|
|
|
621
690
|
// src/index.ts
|
|
622
691
|
var globalSpec = {
|
|
@@ -629,8 +698,12 @@ function main() {
|
|
|
629
698
|
const args = process.argv.slice(2);
|
|
630
699
|
const { command: command4, options: globalOptions } = parse(globalSpec, args);
|
|
631
700
|
console.log();
|
|
632
|
-
p6.intro(`${
|
|
701
|
+
p6.intro(`${color7.bgCyan(color7.black(" @snelusha/noto "))}`);
|
|
633
702
|
if (globalOptions["--version"]) return p6.outro(version);
|
|
703
|
+
if (globalOptions["--help"]) {
|
|
704
|
+
getCommand("help")?.execute(globalOptions);
|
|
705
|
+
return;
|
|
706
|
+
}
|
|
634
707
|
const cmd = getCommand(command4) ?? getCommand("noto");
|
|
635
708
|
if (!cmd) return getCommand("noto")?.execute(globalOptions);
|
|
636
709
|
let commandArgs = args;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@snelusha/noto",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.6",
|
|
4
4
|
"description": "Generate clean commit messages in a snap! ✨",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -9,10 +9,11 @@
|
|
|
9
9
|
"email": "hello@snelusha.dev",
|
|
10
10
|
"url": "https://snelusha.dev"
|
|
11
11
|
},
|
|
12
|
-
"homepage": "https://
|
|
12
|
+
"homepage": "https://noto.snelusha.dev",
|
|
13
13
|
"repository": {
|
|
14
14
|
"type": "git",
|
|
15
|
-
"url": "git+https://github.com/snelusha/noto.git"
|
|
15
|
+
"url": "git+https://github.com/snelusha/noto.git",
|
|
16
|
+
"directory": "packages/cli"
|
|
16
17
|
},
|
|
17
18
|
"bugs": {
|
|
18
19
|
"url": "https://github.com/snelusha/noto/issues"
|
|
@@ -41,21 +42,21 @@
|
|
|
41
42
|
"cli"
|
|
42
43
|
],
|
|
43
44
|
"devDependencies": {
|
|
44
|
-
"@types/node": "^22.13.
|
|
45
|
+
"@types/node": "^22.13.13",
|
|
45
46
|
"tsup": "^8.4.0",
|
|
46
47
|
"typescript": "^5.8.2"
|
|
47
48
|
},
|
|
48
49
|
"dependencies": {
|
|
49
|
-
"@ai-sdk/google": "^1.
|
|
50
|
+
"@ai-sdk/google": "^1.2.3",
|
|
50
51
|
"@clack/prompts": "^0.10.0",
|
|
51
|
-
"ai": "^4.
|
|
52
|
+
"ai": "^4.2.5",
|
|
52
53
|
"arg": "^5.0.2",
|
|
53
54
|
"clipboardy": "^4.0.0",
|
|
54
55
|
"dedent": "^1.5.3",
|
|
55
56
|
"picocolors": "^1.1.1",
|
|
56
57
|
"simple-git": "^3.27.0",
|
|
57
58
|
"tinyexec": "^0.3.2",
|
|
58
|
-
"vitest": "^3.0.
|
|
59
|
+
"vitest": "^3.0.9",
|
|
59
60
|
"zod": "^3.24.2"
|
|
60
61
|
}
|
|
61
62
|
}
|