@doist/todoist-cli 3.0.3 → 3.0.5
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/CHANGELOG.md +4 -0
- package/README.md +2 -0
- package/dist/commands/skill/install.d.ts.map +1 -1
- package/dist/commands/skill/install.js +5 -0
- package/dist/commands/skill/install.js.map +1 -1
- package/dist/commands/skill/update.d.ts.map +1 -1
- package/dist/commands/skill/update.js +6 -1
- package/dist/commands/skill/update.js.map +1 -1
- package/dist/lib/skills/create-installer.d.ts +4 -2
- package/dist/lib/skills/create-installer.d.ts.map +1 -1
- package/dist/lib/skills/create-installer.js +67 -12
- package/dist/lib/skills/create-installer.js.map +1 -1
- package/dist/lib/skills/index.d.ts.map +1 -1
- package/dist/lib/skills/index.js +5 -1
- package/dist/lib/skills/index.js.map +1 -1
- package/dist/lib/skills/types.d.ts +5 -2
- package/dist/lib/skills/types.d.ts.map +1 -1
- package/dist/lib/skills/update-installed.d.ts.map +1 -1
- package/dist/lib/skills/update-installed.js +1 -1
- package/dist/lib/skills/update-installed.js.map +1 -1
- package/package.json +6 -6
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
## [3.0.5](https://github.com/Doist/todoist-cli/compare/v3.0.4...v3.0.5) (2026-07-28)
|
|
2
|
+
|
|
3
|
+
## [3.0.4](https://github.com/Doist/todoist-cli/compare/v3.0.3...v3.0.4) (2026-07-27)
|
|
4
|
+
|
|
1
5
|
## [3.0.3](https://github.com/Doist/todoist-cli/compare/v3.0.2...v3.0.3) (2026-07-27)
|
|
2
6
|
|
|
3
7
|
## [3.0.2](https://github.com/Doist/todoist-cli/compare/v3.0.1...v3.0.2) (2026-07-24)
|
package/README.md
CHANGED
|
@@ -28,6 +28,8 @@ td skill install universal
|
|
|
28
28
|
|
|
29
29
|
Skills are installed to `~/<agent-dir>/skills/todoist-cli/SKILL.md` (e.g. `~/.claude/` for claude-code, `~/.agents/` for universal, etc.). When updating the CLI, installed skills are updated automatically. The `universal` agent is compatible with Amp, OpenCode, and other agents that read from `~/.agents/`.
|
|
30
30
|
|
|
31
|
+
The `gemini` agent installs to `~/.gemini/config/skills/todoist-cli/SKILL.md`, the global location read by Antigravity, Antigravity CLI and Antigravity IDE alike. For project-scoped Antigravity skills use `td skill install universal --local`, which writes to `.agents/skills/` — the workspace directory Antigravity reads.
|
|
32
|
+
|
|
31
33
|
```bash
|
|
32
34
|
td skill list
|
|
33
35
|
td skill uninstall <agent>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../src/commands/skill/install.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,cAAc;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,KAAK,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,wBAAsB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../src/commands/skill/install.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,cAAc;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,KAAK,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,wBAAsB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAuBxF"}
|
|
@@ -11,9 +11,14 @@ export async function installSkill(agent, options) {
|
|
|
11
11
|
}
|
|
12
12
|
const local = options.local ?? false;
|
|
13
13
|
const force = options.force ?? false;
|
|
14
|
+
const legacyPath = installer.getLegacyInstallPath(local);
|
|
15
|
+
const hadLegacy = await installer.hasLegacyInstall(local);
|
|
14
16
|
await installer.install(local, force);
|
|
15
17
|
const filepath = installer.getInstallPath(local);
|
|
16
18
|
console.log(chalk.green('✓'), `Installed ${installer.name} skill`);
|
|
17
19
|
console.log(chalk.dim(filepath));
|
|
20
|
+
if (hadLegacy && legacyPath) {
|
|
21
|
+
console.log(chalk.dim(`Removed skill from previous location ${legacyPath}`));
|
|
22
|
+
}
|
|
18
23
|
}
|
|
19
24
|
//# sourceMappingURL=install.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/commands/skill/install.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AAOpE,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,KAAa,EAAE,OAAuB;IACrE,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,CAAA;IACrC,IAAI,CAAC,SAAS,EAAE,CAAC;QACb,MAAM,SAAS,GAAG,UAAU,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACzC,MAAM,IAAI,QAAQ,CAAC,eAAe,EAAE,kBAAkB,KAAK,EAAE,EAAE;YAC3D,qBAAqB,SAAS,EAAE;SACnC,CAAC,CAAA;IACN,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,KAAK,CAAA;IACpC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,KAAK,CAAA;IAEpC,MAAM,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;IAErC,MAAM,QAAQ,GAAG,SAAS,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA;IAChD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,aAAa,SAAS,CAAC,IAAI,QAAQ,CAAC,CAAA;IAClE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/commands/skill/install.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AAOpE,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,KAAa,EAAE,OAAuB;IACrE,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,CAAA;IACrC,IAAI,CAAC,SAAS,EAAE,CAAC;QACb,MAAM,SAAS,GAAG,UAAU,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACzC,MAAM,IAAI,QAAQ,CAAC,eAAe,EAAE,kBAAkB,KAAK,EAAE,EAAE;YAC3D,qBAAqB,SAAS,EAAE;SACnC,CAAC,CAAA;IACN,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,KAAK,CAAA;IACpC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,KAAK,CAAA;IAEpC,MAAM,UAAU,GAAG,SAAS,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAA;IACxD,MAAM,SAAS,GAAG,MAAM,SAAS,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAA;IAEzD,MAAM,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;IAErC,MAAM,QAAQ,GAAG,SAAS,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA;IAChD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,aAAa,SAAS,CAAC,IAAI,QAAQ,CAAC,CAAA;IAClE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAA;IAChC,IAAI,SAAS,IAAI,UAAU,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,wCAAwC,UAAU,EAAE,CAAC,CAAC,CAAA;IAChF,CAAC;AACL,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/commands/skill/update.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,aAAa;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,wBAAsB,eAAe,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAmB3E;AAED,wBAAsB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/commands/skill/update.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,aAAa;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,wBAAsB,eAAe,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAmB3E;AAED,wBAAsB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA6BtF"}
|
|
@@ -27,7 +27,9 @@ export async function updateSkill(agent, options) {
|
|
|
27
27
|
]);
|
|
28
28
|
}
|
|
29
29
|
const local = options.local ?? false;
|
|
30
|
-
const
|
|
30
|
+
const legacyPath = installer.getLegacyInstallPath(local);
|
|
31
|
+
const hadLegacy = await installer.hasLegacyInstall(local);
|
|
32
|
+
const installed = (await installer.isInstalled(local)) || hadLegacy;
|
|
31
33
|
if (!installed) {
|
|
32
34
|
throw new CliError('NOT_INSTALLED', `Skill is not installed for ${agent}. Use \`td skill install ${agent}${local ? ' --local' : ''}\` first.`);
|
|
33
35
|
}
|
|
@@ -35,5 +37,8 @@ export async function updateSkill(agent, options) {
|
|
|
35
37
|
const filepath = installer.getInstallPath(local);
|
|
36
38
|
console.log(chalk.green('✓'), `Updated ${installer.name} skill`);
|
|
37
39
|
console.log(chalk.dim(filepath));
|
|
40
|
+
if (hadLegacy && legacyPath) {
|
|
41
|
+
console.log(chalk.dim(`Removed skill from previous location ${legacyPath}`));
|
|
42
|
+
}
|
|
38
43
|
}
|
|
39
44
|
//# sourceMappingURL=update.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/commands/skill/update.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AACpE,OAAO,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAA;AAM/E,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAAsB;IACxD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,KAAK,CAAA;IACpC,MAAM,MAAM,GAAG,MAAM,wBAAwB,CAAC,KAAK,CAAC,CAAA;IAEpD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,WAAW,IAAI,QAAQ,CAAC,CAAA;IAC1D,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,IAAI,kBAAkB,CAAC,CAAC,CAAA;IAC/D,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,oBAAoB,IAAI,EAAE,CAAC,CAAA;IAC3D,CAAC;IAED,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC,CAAA;IAClE,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,KAAa,EAAE,OAAsB;IACnE,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,CAAA;IACrC,IAAI,CAAC,SAAS,EAAE,CAAC;QACb,MAAM,SAAS,GAAG,UAAU,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACzC,MAAM,IAAI,QAAQ,CAAC,eAAe,EAAE,kBAAkB,KAAK,EAAE,EAAE;YAC3D,qBAAqB,SAAS,EAAE;SACnC,CAAC,CAAA;IACN,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,KAAK,CAAA;IACpC,MAAM,SAAS,GAAG,MAAM,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/commands/skill/update.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import type { SkillInstaller } from './types.js';
|
|
2
|
-
|
|
2
|
+
type InstallerConfig = {
|
|
3
3
|
name: string;
|
|
4
4
|
description: string;
|
|
5
5
|
dirName: string;
|
|
6
6
|
globalDirName?: string;
|
|
7
|
-
|
|
7
|
+
/** Directory an earlier version of the CLI installed the global skill to, cleaned up on install and update. */
|
|
8
|
+
legacyGlobalDirName?: string;
|
|
9
|
+
};
|
|
8
10
|
export declare function generateSkillFile(): string;
|
|
9
11
|
export declare function createInstaller(config: InstallerConfig): SkillInstaller;
|
|
10
12
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-installer.d.ts","sourceRoot":"","sources":["../../../src/lib/skills/create-installer.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAEhD,
|
|
1
|
+
{"version":3,"file":"create-installer.d.ts","sourceRoot":"","sources":["../../../src/lib/skills/create-installer.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAEhD,KAAK,eAAe,GAAG;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,+GAA+G;IAC/G,mBAAmB,CAAC,EAAE,MAAM,CAAA;CAC/B,CAAA;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAa1C;AAmBD,wBAAgB,eAAe,CAAC,MAAM,EAAE,eAAe,GAAG,cAAc,CAoHvE"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { access, mkdir,
|
|
1
|
+
import { access, mkdir, rmdir, unlink, writeFile } from 'node:fs/promises';
|
|
2
2
|
import { homedir } from 'node:os';
|
|
3
3
|
import { dirname, join } from 'node:path';
|
|
4
4
|
import packageJson from '../../../package.json' with { type: 'json' };
|
|
@@ -18,16 +18,73 @@ metadata:
|
|
|
18
18
|
`;
|
|
19
19
|
return frontmatter + SKILL_CONTENT;
|
|
20
20
|
}
|
|
21
|
+
function isEnoent(error) {
|
|
22
|
+
return error instanceof Error && 'code' in error && error.code === 'ENOENT';
|
|
23
|
+
}
|
|
24
|
+
/** Removes up to `levels` directories, walking upwards, stopping at the first one that is not empty. */
|
|
25
|
+
async function removeEmptyDirs(startDir, levels) {
|
|
26
|
+
let dir = startDir;
|
|
27
|
+
for (let level = 0; level < levels; level++) {
|
|
28
|
+
try {
|
|
29
|
+
await rmdir(dir);
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
dir = dirname(dir);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
21
37
|
export function createInstaller(config) {
|
|
22
38
|
function getInstallPath(local) {
|
|
23
39
|
const base = local ? process.cwd() : homedir();
|
|
24
40
|
const dirName = local ? config.dirName : (config.globalDirName ?? config.dirName);
|
|
25
41
|
return join(base, dirName, 'skills', SKILL_NAME, 'SKILL.md');
|
|
26
42
|
}
|
|
43
|
+
function getLegacyInstallPath(local) {
|
|
44
|
+
if (local || !config.legacyGlobalDirName) {
|
|
45
|
+
return undefined;
|
|
46
|
+
}
|
|
47
|
+
return join(homedir(), config.legacyGlobalDirName, 'skills', SKILL_NAME, 'SKILL.md');
|
|
48
|
+
}
|
|
49
|
+
async function hasLegacyInstall(local) {
|
|
50
|
+
const filepath = getLegacyInstallPath(local);
|
|
51
|
+
if (!filepath) {
|
|
52
|
+
return false;
|
|
53
|
+
}
|
|
54
|
+
try {
|
|
55
|
+
await access(filepath);
|
|
56
|
+
return true;
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
async function removeLegacyInstall(local) {
|
|
63
|
+
const filepath = getLegacyInstallPath(local);
|
|
64
|
+
if (!filepath) {
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
try {
|
|
68
|
+
await unlink(filepath);
|
|
69
|
+
}
|
|
70
|
+
catch (error) {
|
|
71
|
+
// Anything other than the file already being gone leaves the old skill
|
|
72
|
+
// active for clients that still read it, so it must not pass silently.
|
|
73
|
+
if (isEnoent(error)) {
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
throw error;
|
|
77
|
+
}
|
|
78
|
+
// Prune the now-empty todoist-cli/ directory and, if nothing else lives
|
|
79
|
+
// there, the skills/ directory that contained it.
|
|
80
|
+
await removeEmptyDirs(dirname(filepath), 2);
|
|
81
|
+
}
|
|
27
82
|
return {
|
|
28
83
|
name: config.name,
|
|
29
84
|
description: config.description,
|
|
30
85
|
getInstallPath,
|
|
86
|
+
getLegacyInstallPath,
|
|
87
|
+
hasLegacyInstall,
|
|
31
88
|
generateContent() {
|
|
32
89
|
return generateSkillFile();
|
|
33
90
|
},
|
|
@@ -57,28 +114,26 @@ export function createInstaller(config) {
|
|
|
57
114
|
}
|
|
58
115
|
await mkdir(dirname(filepath), { recursive: true });
|
|
59
116
|
await writeFile(filepath, this.generateContent(), 'utf-8');
|
|
117
|
+
await removeLegacyInstall(local);
|
|
60
118
|
},
|
|
61
119
|
async update(local) {
|
|
62
120
|
const filepath = getInstallPath(local);
|
|
121
|
+
await mkdir(dirname(filepath), { recursive: true });
|
|
63
122
|
await writeFile(filepath, this.generateContent(), 'utf-8');
|
|
123
|
+
await removeLegacyInstall(local);
|
|
64
124
|
},
|
|
65
125
|
async uninstall(local) {
|
|
66
126
|
const filepath = getInstallPath(local);
|
|
67
127
|
const exists = await this.isInstalled(local);
|
|
68
|
-
|
|
128
|
+
const legacyExists = await hasLegacyInstall(local);
|
|
129
|
+
if (!exists && !legacyExists) {
|
|
69
130
|
throw new CliError('NOT_FOUND', `Skill file not found at ${filepath}`);
|
|
70
131
|
}
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
const files = await readdir(dir);
|
|
75
|
-
if (files.length === 0) {
|
|
76
|
-
await rmdir(dir);
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
catch {
|
|
80
|
-
// Ignore errors when cleaning up empty directory
|
|
132
|
+
if (exists) {
|
|
133
|
+
await unlink(filepath);
|
|
134
|
+
await removeEmptyDirs(dirname(filepath), 1);
|
|
81
135
|
}
|
|
136
|
+
await removeLegacyInstall(local);
|
|
82
137
|
},
|
|
83
138
|
};
|
|
84
139
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-installer.js","sourceRoot":"","sources":["../../../src/lib/skills/create-installer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"create-installer.js","sourceRoot":"","sources":["../../../src/lib/skills/create-installer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAC1E,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,WAAW,MAAM,uBAAuB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAA;AACrE,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AACvC,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAYhG,MAAM,UAAU,iBAAiB;IAC7B,MAAM,WAAW,GAAG;QAChB,UAAU;eACH,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC;iBAC/B,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC;WACzC,WAAW,CAAC,OAAO;;;aAGjB,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC;;;CAG/C,CAAA;IACG,OAAO,WAAW,GAAG,aAAa,CAAA;AACtC,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC5B,OAAO,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAA;AAC/E,CAAC;AAED,wGAAwG;AACxG,KAAK,UAAU,eAAe,CAAC,QAAgB,EAAE,MAAc;IAC3D,IAAI,GAAG,GAAG,QAAQ,CAAA;IAClB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QAC1C,IAAI,CAAC;YACD,MAAM,KAAK,CAAC,GAAG,CAAC,CAAA;QACpB,CAAC;QAAC,MAAM,CAAC;YACL,OAAM;QACV,CAAC;QACD,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAA;IACtB,CAAC;AACL,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAAuB;IACnD,SAAS,cAAc,CAAC,KAAc;QAClC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAA;QAC9C,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,OAAO,CAAC,CAAA;QACjF,OAAO,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,CAAC,CAAA;IAChE,CAAC;IAED,SAAS,oBAAoB,CAAC,KAAc;QACxC,IAAI,KAAK,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC;YACvC,OAAO,SAAS,CAAA;QACpB,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC,mBAAmB,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,CAAC,CAAA;IACxF,CAAC;IAED,KAAK,UAAU,gBAAgB,CAAC,KAAc;QAC1C,MAAM,QAAQ,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAA;QAC5C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACZ,OAAO,KAAK,CAAA;QAChB,CAAC;QACD,IAAI,CAAC;YACD,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAA;YACtB,OAAO,IAAI,CAAA;QACf,CAAC;QAAC,MAAM,CAAC;YACL,OAAO,KAAK,CAAA;QAChB,CAAC;IACL,CAAC;IAED,KAAK,UAAU,mBAAmB,CAAC,KAAc;QAC7C,MAAM,QAAQ,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAA;QAC5C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACZ,OAAM;QACV,CAAC;QACD,IAAI,CAAC;YACD,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAA;QAC1B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,uEAAuE;YACvE,uEAAuE;YACvE,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBAClB,OAAM;YACV,CAAC;YACD,MAAM,KAAK,CAAA;QACf,CAAC;QACD,wEAAwE;QACxE,kDAAkD;QAClD,MAAM,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAA;IAC/C,CAAC;IAED,OAAO;QACH,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,WAAW,EAAE,MAAM,CAAC,WAAW;QAE/B,cAAc;QAEd,oBAAoB;QAEpB,gBAAgB;QAEhB,eAAe;YACX,OAAO,iBAAiB,EAAE,CAAA;QAC9B,CAAC;QAED,KAAK,CAAC,WAAW,CAAC,KAAc;YAC5B,IAAI,CAAC;gBACD,MAAM,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAA;gBACnC,OAAO,IAAI,CAAA;YACf,CAAC;YAAC,MAAM,CAAC;gBACL,OAAO,KAAK,CAAA;YAChB,CAAC;QACL,CAAC;QAED,KAAK,CAAC,OAAO,CAAC,KAAc,EAAE,KAAc;YACxC,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;gBACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,CAAA;gBAChD,IAAI,CAAC;oBACD,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAA;gBAC1B,CAAC;gBAAC,MAAM,CAAC;oBACL,MAAM,IAAI,QAAQ,CACd,eAAe,EACf,GAAG,MAAM,CAAC,IAAI,qCAAqC,QAAQ,aAAa,CAC3E,CAAA;gBACL,CAAC;YACL,CAAC;YACD,MAAM,QAAQ,GAAG,cAAc,CAAC,KAAK,CAAC,CAAA;YACtC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;YAC5C,IAAI,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;gBACnB,MAAM,IAAI,QAAQ,CACd,gBAAgB,EAChB,gCAAgC,QAAQ,6BAA6B,CACxE,CAAA;YACL,CAAC;YACD,MAAM,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;YACnD,MAAM,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAE,EAAE,OAAO,CAAC,CAAA;YAC1D,MAAM,mBAAmB,CAAC,KAAK,CAAC,CAAA;QACpC,CAAC;QAED,KAAK,CAAC,MAAM,CAAC,KAAc;YACvB,MAAM,QAAQ,GAAG,cAAc,CAAC,KAAK,CAAC,CAAA;YACtC,MAAM,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;YACnD,MAAM,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAE,EAAE,OAAO,CAAC,CAAA;YAC1D,MAAM,mBAAmB,CAAC,KAAK,CAAC,CAAA;QACpC,CAAC;QAED,KAAK,CAAC,SAAS,CAAC,KAAc;YAC1B,MAAM,QAAQ,GAAG,cAAc,CAAC,KAAK,CAAC,CAAA;YACtC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;YAC5C,MAAM,YAAY,GAAG,MAAM,gBAAgB,CAAC,KAAK,CAAC,CAAA;YAClD,IAAI,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;gBAC3B,MAAM,IAAI,QAAQ,CAAC,WAAW,EAAE,2BAA2B,QAAQ,EAAE,CAAC,CAAA;YAC1E,CAAC;YACD,IAAI,MAAM,EAAE,CAAC;gBACT,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAA;gBACtB,MAAM,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAA;YAC/C,CAAC;YACD,MAAM,mBAAmB,CAAC,KAAK,CAAC,CAAA;QACpC,CAAC;KACJ,CAAA;AACL,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/skills/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAEhD,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/skills/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAEhD,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAyC1D,CAAA;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAEtE;AAED,wBAAgB,UAAU,IAAI,MAAM,EAAE,CAErC;AAED,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA"}
|
package/dist/lib/skills/index.js
CHANGED
|
@@ -22,8 +22,12 @@ export const skillInstallers = {
|
|
|
22
22
|
}),
|
|
23
23
|
gemini: createInstaller({
|
|
24
24
|
name: 'gemini',
|
|
25
|
-
|
|
25
|
+
// Antigravity reads global skills from ~/.gemini/config/skills — the only
|
|
26
|
+
// global location the Antigravity CLI, IDE and agent all pick up.
|
|
27
|
+
description: 'Antigravity (Gemini) skill for Todoist CLI',
|
|
26
28
|
dirName: '.gemini',
|
|
29
|
+
globalDirName: '.gemini/config',
|
|
30
|
+
legacyGlobalDirName: '.gemini',
|
|
27
31
|
}),
|
|
28
32
|
pi: createInstaller({
|
|
29
33
|
name: 'pi',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/skills/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAGvD,MAAM,CAAC,MAAM,eAAe,GAAmC;IAC3D,aAAa,EAAE,eAAe,CAAC;QAC3B,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,mCAAmC;QAChD,OAAO,EAAE,SAAS;KACrB,CAAC;IACF,KAAK,EAAE,eAAe,CAAC;QACnB,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,6BAA6B;QAC1C,OAAO,EAAE,QAAQ;KACpB,CAAC;IACF,OAAO,EAAE,eAAe,CAAC;QACrB,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,sCAAsC;QACnD,OAAO,EAAE,UAAU;KACtB,CAAC;IACF,MAAM,EAAE,eAAe,CAAC;QACpB,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,8BAA8B;QAC3C,OAAO,EAAE,SAAS;KACrB,CAAC;IACF,MAAM,EAAE,eAAe,CAAC;QACpB,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/skills/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAGvD,MAAM,CAAC,MAAM,eAAe,GAAmC;IAC3D,aAAa,EAAE,eAAe,CAAC;QAC3B,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,mCAAmC;QAChD,OAAO,EAAE,SAAS;KACrB,CAAC;IACF,KAAK,EAAE,eAAe,CAAC;QACnB,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,6BAA6B;QAC1C,OAAO,EAAE,QAAQ;KACpB,CAAC;IACF,OAAO,EAAE,eAAe,CAAC;QACrB,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,sCAAsC;QACnD,OAAO,EAAE,UAAU;KACtB,CAAC;IACF,MAAM,EAAE,eAAe,CAAC;QACpB,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,8BAA8B;QAC3C,OAAO,EAAE,SAAS;KACrB,CAAC;IACF,MAAM,EAAE,eAAe,CAAC;QACpB,IAAI,EAAE,QAAQ;QACd,0EAA0E;QAC1E,kEAAkE;QAClE,WAAW,EAAE,4CAA4C;QACzD,OAAO,EAAE,SAAS;QAClB,aAAa,EAAE,gBAAgB;QAC/B,mBAAmB,EAAE,SAAS;KACjC,CAAC;IACF,EAAE,EAAE,eAAe,CAAC;QAChB,IAAI,EAAE,IAAI;QACV,WAAW,EAAE,0BAA0B;QACvC,OAAO,EAAE,KAAK;QACd,aAAa,EAAE,WAAW;KAC7B,CAAC;IACF,SAAS,EAAE,eAAe,CAAC;QACvB,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,uCAAuC;QACpD,OAAO,EAAE,SAAS;KACrB,CAAC;CACL,CAAA;AAED,MAAM,UAAU,YAAY,CAAC,KAAa;IACtC,OAAO,eAAe,CAAC,KAAK,CAAC,CAAA;AACjC,CAAC;AAED,MAAM,UAAU,UAAU;IACtB,OAAO,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;AACvC,CAAC"}
|
|
@@ -1,11 +1,14 @@
|
|
|
1
|
-
export
|
|
1
|
+
export type SkillInstaller = {
|
|
2
2
|
name: string;
|
|
3
3
|
description: string;
|
|
4
4
|
getInstallPath(local: boolean): string;
|
|
5
|
+
/** Path a previous CLI version installed to, or undefined when the agent never had one. */
|
|
6
|
+
getLegacyInstallPath(local: boolean): string | undefined;
|
|
7
|
+
hasLegacyInstall(local: boolean): Promise<boolean>;
|
|
5
8
|
generateContent(): string;
|
|
6
9
|
isInstalled(local: boolean): Promise<boolean>;
|
|
7
10
|
install(local: boolean, force: boolean): Promise<void>;
|
|
8
11
|
update(local: boolean): Promise<void>;
|
|
9
12
|
uninstall(local: boolean): Promise<void>;
|
|
10
|
-
}
|
|
13
|
+
};
|
|
11
14
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/skills/types.ts"],"names":[],"mappings":"AAAA,MAAM,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/skills/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GAAG;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAA;IACtC,2FAA2F;IAC3F,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAAA;IACxD,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAClD,eAAe,IAAI,MAAM,CAAA;IACzB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAC7C,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACtD,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACrC,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAC3C,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-installed.d.ts","sourceRoot":"","sources":["../../../src/lib/skills/update-installed.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,eAAe;IAC5B,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,MAAM,EAAE,MAAM,EAAE,CAAA;CACnB;AAED,wBAAsB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,eAAe,CAAC,
|
|
1
|
+
{"version":3,"file":"update-installed.d.ts","sourceRoot":"","sources":["../../../src/lib/skills/update-installed.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,eAAe;IAC5B,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,MAAM,EAAE,MAAM,EAAE,CAAA;CACnB;AAED,wBAAsB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,eAAe,CAAC,CAqBvF"}
|
|
@@ -5,7 +5,7 @@ export async function updateAllInstalledSkills(local) {
|
|
|
5
5
|
const errors = [];
|
|
6
6
|
for (const [name, installer] of Object.entries(skillInstallers)) {
|
|
7
7
|
try {
|
|
8
|
-
const isInstalled = await installer.isInstalled(local);
|
|
8
|
+
const isInstalled = (await installer.isInstalled(local)) || (await installer.hasLegacyInstall(local));
|
|
9
9
|
if (isInstalled) {
|
|
10
10
|
await installer.update(local);
|
|
11
11
|
updated.push(name);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-installed.js","sourceRoot":"","sources":["../../../src/lib/skills/update-installed.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAQ5C,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,KAAc;IACzD,MAAM,OAAO,GAAa,EAAE,CAAA;IAC5B,MAAM,OAAO,GAAa,EAAE,CAAA;IAC5B,MAAM,MAAM,GAAa,EAAE,CAAA;IAE3B,KAAK,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC;QAC9D,IAAI,CAAC;YACD,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"update-installed.js","sourceRoot":"","sources":["../../../src/lib/skills/update-installed.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAQ5C,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,KAAc;IACzD,MAAM,OAAO,GAAa,EAAE,CAAA;IAC5B,MAAM,OAAO,GAAa,EAAE,CAAA;IAC5B,MAAM,MAAM,GAAa,EAAE,CAAA;IAE3B,KAAK,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC;QAC9D,IAAI,CAAC;YACD,MAAM,WAAW,GACb,CAAC,MAAM,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,SAAS,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAA;YACrF,IAAI,WAAW,EAAE,CAAC;gBACd,MAAM,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;gBAC7B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACtB,CAAC;iBAAM,CAAC;gBACJ,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACtB,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACL,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACrB,CAAC;IACL,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAA;AACvC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@doist/todoist-cli",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.5",
|
|
4
4
|
"description": "TypeScript CLI for Todoist",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -59,20 +59,20 @@
|
|
|
59
59
|
"chalk": "5.6.2",
|
|
60
60
|
"commander": "14.0.3",
|
|
61
61
|
"date-fns": "4.4.0",
|
|
62
|
-
"marked": "18.0.
|
|
62
|
+
"marked": "18.0.7",
|
|
63
63
|
"marked-terminal-renderer": "2.2.0",
|
|
64
64
|
"oauth4webapi": "3.8.6",
|
|
65
65
|
"open": "11.0.0"
|
|
66
66
|
},
|
|
67
67
|
"devDependencies": {
|
|
68
|
-
"@semantic-release/changelog": "
|
|
68
|
+
"@semantic-release/changelog": "7.0.0",
|
|
69
69
|
"@semantic-release/exec": "7.1.0",
|
|
70
|
-
"@semantic-release/git": "
|
|
70
|
+
"@semantic-release/git": "11.0.0",
|
|
71
71
|
"@types/node": "25.9.5",
|
|
72
72
|
"conventional-changelog-conventionalcommits": "10.2.1",
|
|
73
73
|
"lefthook": "2.1.10",
|
|
74
|
-
"oxfmt": "0.
|
|
75
|
-
"oxlint": "1.
|
|
74
|
+
"oxfmt": "0.60.0",
|
|
75
|
+
"oxlint": "1.75.0",
|
|
76
76
|
"semantic-release": "25.0.8",
|
|
77
77
|
"typescript": "7.0.2",
|
|
78
78
|
"vitest": "4.1.10"
|