@octp/cli 0.1.6 → 0.1.8
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/commands/agent/claude-searcher.d.ts +9 -0
- package/dist/commands/agent/claude-searcher.js +43 -0
- package/dist/commands/agent/claude-searcher.js.map +1 -0
- package/dist/commands/agent/index.d.ts +2 -0
- package/dist/commands/agent/index.js +8 -0
- package/dist/commands/agent/index.js.map +1 -0
- package/dist/commands/agent/searcher.d.ts +22 -0
- package/dist/commands/agent/searcher.js +301 -0
- package/dist/commands/agent/searcher.js.map +1 -0
- package/dist/commands/agent/start.d.ts +2 -0
- package/dist/commands/agent/start.js +297 -0
- package/dist/commands/agent/start.js.map +1 -0
- package/dist/commands/agent/watch.d.ts +13 -0
- package/dist/commands/agent/watch.js +142 -0
- package/dist/commands/agent/watch.js.map +1 -0
- package/dist/commands/pr/review.d.ts +4 -0
- package/dist/commands/pr/review.js +14 -6
- package/dist/commands/pr/review.js.map +1 -1
- package/dist/commands/skills.d.ts +1 -0
- package/dist/commands/skills.js +284 -99
- package/dist/commands/skills.js.map +1 -1
- package/dist/index.js +26 -2
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/commands/skills.js
CHANGED
|
@@ -1,130 +1,315 @@
|
|
|
1
1
|
import { Command } from "commander";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { fileURLToPath } from "node:url";
|
|
2
|
+
import { mkdir, writeFile, readFile, unlink } from "node:fs/promises";
|
|
3
|
+
import { join, basename } from "node:path";
|
|
5
4
|
import { homedir } from "node:os";
|
|
5
|
+
import { createHash } from "node:crypto";
|
|
6
6
|
import chalk from "chalk";
|
|
7
|
-
import { success, error, info, table } from "../lib/output.js";
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
const
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
if (!match)
|
|
16
|
-
return { name: "", description: "" };
|
|
17
|
-
const fm = match[1];
|
|
18
|
-
const name = fm.match(/(?:^|\n)name:\s*(.+)/)?.[1]?.trim() ?? "";
|
|
19
|
-
const desc = fm.match(/(?:^|\n)description:\s*(.+)/)?.[1]?.trim() ?? "";
|
|
20
|
-
return { name, description: desc };
|
|
21
|
-
}
|
|
22
|
-
async function getSkills() {
|
|
7
|
+
import { success, error, info, warn, table } from "../lib/output.js";
|
|
8
|
+
import { withSpinner } from "../lib/spinner.js";
|
|
9
|
+
import { getApiUrl } from "../lib/config-store.js";
|
|
10
|
+
const COMMANDS_DIR = join(process.cwd(), ".claude", "commands");
|
|
11
|
+
const STATE_DIR = join(homedir(), ".octopus");
|
|
12
|
+
const STATE_FILE = join(STATE_DIR, "skills-state.json");
|
|
13
|
+
// --- State persistence ---
|
|
14
|
+
async function loadState() {
|
|
23
15
|
try {
|
|
24
|
-
const
|
|
25
|
-
|
|
26
|
-
for (const file of files) {
|
|
27
|
-
if (!file.endsWith(".md"))
|
|
28
|
-
continue;
|
|
29
|
-
const content = await readFile(join(SKILLS_DIR, file), "utf-8");
|
|
30
|
-
const { name, description } = parseSkillFrontmatter(content);
|
|
31
|
-
skills.push({
|
|
32
|
-
fileName: file,
|
|
33
|
-
name: name || file.replace(/\.md$/, ""),
|
|
34
|
-
description,
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
|
-
return skills;
|
|
16
|
+
const data = await readFile(STATE_FILE, "utf-8");
|
|
17
|
+
return JSON.parse(data);
|
|
38
18
|
}
|
|
39
19
|
catch {
|
|
40
|
-
return
|
|
20
|
+
return { lastKnownVersion: 0, lastCheckedAt: "", installed: {} };
|
|
41
21
|
}
|
|
42
22
|
}
|
|
43
|
-
async function
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
23
|
+
async function saveState(state) {
|
|
24
|
+
await mkdir(STATE_DIR, { recursive: true });
|
|
25
|
+
await writeFile(STATE_FILE, JSON.stringify(state, null, 2), "utf-8");
|
|
26
|
+
}
|
|
27
|
+
// --- Helpers ---
|
|
28
|
+
function getBaseUrl() {
|
|
29
|
+
return getApiUrl();
|
|
30
|
+
}
|
|
31
|
+
async function fetchSkillsManifest() {
|
|
32
|
+
const url = `${getBaseUrl()}/skills/skills.json`;
|
|
33
|
+
const res = await fetch(url);
|
|
34
|
+
if (!res.ok) {
|
|
35
|
+
throw new Error(`Failed to fetch skills list: ${res.status} ${res.statusText}`);
|
|
47
36
|
}
|
|
48
|
-
|
|
49
|
-
|
|
37
|
+
return res.json();
|
|
38
|
+
}
|
|
39
|
+
async function fetchSkillContent(filename) {
|
|
40
|
+
const url = `${getBaseUrl()}/skills/${filename}`;
|
|
41
|
+
const res = await fetch(url);
|
|
42
|
+
if (!res.ok) {
|
|
43
|
+
throw new Error(`Failed to download skill file: ${res.status} ${res.statusText}`);
|
|
50
44
|
}
|
|
45
|
+
return res.text();
|
|
51
46
|
}
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
let count = 0;
|
|
55
|
-
for (const skill of skills) {
|
|
56
|
-
const src = join(SKILLS_DIR, skill.fileName);
|
|
57
|
-
const dest = join(CLAUDE_DIR, skill.fileName);
|
|
58
|
-
const content = await readFile(src, "utf-8");
|
|
59
|
-
await writeFile(dest, content, "utf-8");
|
|
60
|
-
count++;
|
|
61
|
-
}
|
|
62
|
-
return count;
|
|
47
|
+
function computeHash(content) {
|
|
48
|
+
return createHash("sha256").update(content, "utf-8").digest("hex");
|
|
63
49
|
}
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
const src = join(SKILLS_DIR, skill.fileName);
|
|
71
|
-
const content = await readFile(src, "utf-8");
|
|
72
|
-
// Codex expects SKILL.md inside a named directory
|
|
73
|
-
await writeFile(join(skillDir, "SKILL.md"), content, "utf-8");
|
|
74
|
-
count++;
|
|
75
|
-
}
|
|
76
|
-
return count;
|
|
50
|
+
function validateFilename(filename) {
|
|
51
|
+
const safe = basename(filename);
|
|
52
|
+
if (!safe.endsWith(".md") || safe !== filename) {
|
|
53
|
+
throw new Error(`Invalid skill filename: ${filename}`);
|
|
54
|
+
}
|
|
55
|
+
return safe;
|
|
77
56
|
}
|
|
78
57
|
// --- Commands ---
|
|
79
|
-
const installCommand = new Command("install")
|
|
80
|
-
.description("Install Octopus skills for Claude Code and/or Codex")
|
|
81
|
-
.option("--claude", "Install only for Claude Code")
|
|
82
|
-
.option("--codex", "Install only for Codex")
|
|
83
|
-
.action(async (opts) => {
|
|
84
|
-
const skills = await getSkills();
|
|
85
|
-
if (skills.length === 0) {
|
|
86
|
-
error("No skills found to install.");
|
|
87
|
-
return;
|
|
88
|
-
}
|
|
89
|
-
const both = !opts.claude && !opts.codex;
|
|
90
|
-
let claudeCount = 0;
|
|
91
|
-
let codexCount = 0;
|
|
92
|
-
if (both || opts.claude) {
|
|
93
|
-
claudeCount = await installForClaude(skills);
|
|
94
|
-
success(`Installed ${claudeCount} skill(s) to ${chalk.dim(CLAUDE_DIR)}`);
|
|
95
|
-
}
|
|
96
|
-
if (both || opts.codex) {
|
|
97
|
-
codexCount = await installForCodex(skills);
|
|
98
|
-
success(`Installed ${codexCount} skill(s) to ${chalk.dim(CODEX_DIR)}`);
|
|
99
|
-
}
|
|
100
|
-
console.log();
|
|
101
|
-
for (const skill of skills) {
|
|
102
|
-
info(`${chalk.bold(skill.name)} — ${skill.description || chalk.dim("no description")}`);
|
|
103
|
-
}
|
|
104
|
-
});
|
|
105
58
|
const listCommand = new Command("list")
|
|
106
59
|
.description("List available Octopus skills and their install status")
|
|
107
60
|
.action(async () => {
|
|
108
|
-
|
|
109
|
-
|
|
61
|
+
let manifest;
|
|
62
|
+
try {
|
|
63
|
+
manifest = await withSpinner("Fetching skills…", () => fetchSkillsManifest());
|
|
64
|
+
}
|
|
65
|
+
catch (err) {
|
|
66
|
+
error(err.message);
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
const state = await loadState();
|
|
70
|
+
// New skills notification
|
|
71
|
+
if (manifest.version > state.lastKnownVersion && state.lastKnownVersion > 0) {
|
|
72
|
+
console.log(chalk.cyan("🆕 New skills available!\n"));
|
|
73
|
+
}
|
|
74
|
+
// Update state
|
|
75
|
+
state.lastKnownVersion = manifest.version;
|
|
76
|
+
state.lastCheckedAt = new Date().toISOString();
|
|
77
|
+
await saveState(state);
|
|
78
|
+
if (manifest.skills.length === 0) {
|
|
110
79
|
info("No skills available.");
|
|
111
80
|
return;
|
|
112
81
|
}
|
|
113
82
|
const rows = [];
|
|
114
|
-
for (const skill of skills) {
|
|
115
|
-
const
|
|
116
|
-
|
|
83
|
+
for (const skill of manifest.skills) {
|
|
84
|
+
const installedEntry = state.installed[skill.name];
|
|
85
|
+
let status;
|
|
86
|
+
if (installedEntry) {
|
|
87
|
+
if (installedEntry.hash !== skill.hash) {
|
|
88
|
+
status = chalk.green("✓ installed") + " " + chalk.yellow("(update available)");
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
status = chalk.green("✓ installed");
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
status = chalk.dim("not installed");
|
|
96
|
+
}
|
|
117
97
|
rows.push([
|
|
118
98
|
chalk.bold(skill.name),
|
|
119
99
|
skill.description || chalk.dim("—"),
|
|
120
|
-
|
|
121
|
-
codexInstalled ? chalk.green("yes") : chalk.dim("no"),
|
|
100
|
+
status,
|
|
122
101
|
]);
|
|
123
102
|
}
|
|
124
|
-
table(rows, ["
|
|
103
|
+
table(rows, ["Name", "Description", "Status"]);
|
|
125
104
|
});
|
|
105
|
+
const installCommand = new Command("install")
|
|
106
|
+
.description("Install a skill from Octopus skill registry")
|
|
107
|
+
.argument("[name]", "Skill name to install")
|
|
108
|
+
.option("--all", "Install all available skills")
|
|
109
|
+
.action(async (name, opts) => {
|
|
110
|
+
if (!name && !opts.all) {
|
|
111
|
+
error("Provide a skill name or use --all to install all skills.");
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
let manifest;
|
|
115
|
+
try {
|
|
116
|
+
manifest = await withSpinner("Fetching skills…", () => fetchSkillsManifest());
|
|
117
|
+
}
|
|
118
|
+
catch (err) {
|
|
119
|
+
error(err.message);
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
const toInstall = opts.all
|
|
123
|
+
? manifest.skills
|
|
124
|
+
: manifest.skills.filter((s) => s.name === name);
|
|
125
|
+
if (toInstall.length === 0) {
|
|
126
|
+
error(`Skill "${name}" not found. Run ${chalk.cyan("octopus skills list")} to see available skills.`);
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
await mkdir(COMMANDS_DIR, { recursive: true });
|
|
130
|
+
const state = await loadState();
|
|
131
|
+
for (const skill of toInstall) {
|
|
132
|
+
const installedEntry = state.installed[skill.name];
|
|
133
|
+
// Already up to date
|
|
134
|
+
if (installedEntry && installedEntry.hash === skill.hash) {
|
|
135
|
+
info(`${chalk.bold(skill.name)} is already up to date.`);
|
|
136
|
+
continue;
|
|
137
|
+
}
|
|
138
|
+
try {
|
|
139
|
+
const safeFilename = validateFilename(skill.filename);
|
|
140
|
+
const content = await withSpinner(`Downloading ${skill.name}…`, () => fetchSkillContent(safeFilename));
|
|
141
|
+
// Verify hash — abort on mismatch
|
|
142
|
+
const downloadedHash = computeHash(content);
|
|
143
|
+
if (downloadedHash !== skill.hash) {
|
|
144
|
+
error(`Hash mismatch for ${chalk.bold(skill.name)}: expected ${skill.hash.slice(0, 12)}… got ${downloadedHash.slice(0, 12)}…. Aborting.`);
|
|
145
|
+
continue;
|
|
146
|
+
}
|
|
147
|
+
const dest = join(COMMANDS_DIR, safeFilename);
|
|
148
|
+
await writeFile(dest, content, "utf-8");
|
|
149
|
+
// Update state
|
|
150
|
+
state.installed[skill.name] = {
|
|
151
|
+
hash: skill.hash,
|
|
152
|
+
installedAt: new Date().toISOString(),
|
|
153
|
+
};
|
|
154
|
+
if (installedEntry) {
|
|
155
|
+
success(`Updated ${chalk.bold(skill.name)}.`);
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
success(`Installed ${chalk.bold(skill.name)}. Use it with: ${chalk.cyan(`/${skill.name}`)}`);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
catch (err) {
|
|
162
|
+
error(`Failed to install ${skill.name}: ${err.message}`);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
state.lastKnownVersion = manifest.version;
|
|
166
|
+
state.lastCheckedAt = new Date().toISOString();
|
|
167
|
+
await saveState(state);
|
|
168
|
+
});
|
|
169
|
+
const updateCommand = new Command("update")
|
|
170
|
+
.description("Update all installed skills to their latest versions")
|
|
171
|
+
.action(async () => {
|
|
172
|
+
let manifest;
|
|
173
|
+
try {
|
|
174
|
+
manifest = await withSpinner("Fetching skills…", () => fetchSkillsManifest());
|
|
175
|
+
}
|
|
176
|
+
catch (err) {
|
|
177
|
+
error(err.message);
|
|
178
|
+
return;
|
|
179
|
+
}
|
|
180
|
+
const state = await loadState();
|
|
181
|
+
const installedNames = Object.keys(state.installed);
|
|
182
|
+
if (installedNames.length === 0) {
|
|
183
|
+
info("No skills installed. Run " + chalk.cyan("octopus skills install <name>") + " first.");
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
let updated = 0;
|
|
187
|
+
let upToDate = 0;
|
|
188
|
+
for (const name of installedNames) {
|
|
189
|
+
const skill = manifest.skills.find((s) => s.name === name);
|
|
190
|
+
if (!skill) {
|
|
191
|
+
warn(`Skill "${name}" no longer exists in registry, skipping.`);
|
|
192
|
+
continue;
|
|
193
|
+
}
|
|
194
|
+
if (state.installed[name].hash === skill.hash) {
|
|
195
|
+
upToDate++;
|
|
196
|
+
continue;
|
|
197
|
+
}
|
|
198
|
+
try {
|
|
199
|
+
const safeFilename = validateFilename(skill.filename);
|
|
200
|
+
const content = await withSpinner(`Updating ${skill.name}…`, () => fetchSkillContent(safeFilename));
|
|
201
|
+
const downloadedHash = computeHash(content);
|
|
202
|
+
if (downloadedHash !== skill.hash) {
|
|
203
|
+
error(`Hash mismatch for ${chalk.bold(skill.name)}: expected ${skill.hash.slice(0, 12)}… got ${downloadedHash.slice(0, 12)}…. Aborting.`);
|
|
204
|
+
continue;
|
|
205
|
+
}
|
|
206
|
+
await mkdir(COMMANDS_DIR, { recursive: true });
|
|
207
|
+
await writeFile(join(COMMANDS_DIR, safeFilename), content, "utf-8");
|
|
208
|
+
state.installed[name] = {
|
|
209
|
+
hash: skill.hash,
|
|
210
|
+
installedAt: new Date().toISOString(),
|
|
211
|
+
};
|
|
212
|
+
updated++;
|
|
213
|
+
}
|
|
214
|
+
catch (err) {
|
|
215
|
+
error(`Failed to update ${name}: ${err.message}`);
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
state.lastKnownVersion = manifest.version;
|
|
219
|
+
state.lastCheckedAt = new Date().toISOString();
|
|
220
|
+
await saveState(state);
|
|
221
|
+
const parts = [];
|
|
222
|
+
if (updated > 0)
|
|
223
|
+
parts.push(`Updated ${updated} skill(s)`);
|
|
224
|
+
if (upToDate > 0)
|
|
225
|
+
parts.push(`${upToDate} already up to date`);
|
|
226
|
+
success(parts.join(", ") || "Nothing to update.");
|
|
227
|
+
});
|
|
228
|
+
const removeCommand = new Command("remove")
|
|
229
|
+
.description("Remove an installed skill")
|
|
230
|
+
.argument("<name>", "Skill name to remove")
|
|
231
|
+
.action(async (name) => {
|
|
232
|
+
const state = await loadState();
|
|
233
|
+
if (!state.installed[name]) {
|
|
234
|
+
error(`Skill "${name}" is not installed.`);
|
|
235
|
+
return;
|
|
236
|
+
}
|
|
237
|
+
// Try to find filename from manifest, fallback to name-based convention
|
|
238
|
+
let filename = `${name}.md`;
|
|
239
|
+
try {
|
|
240
|
+
const manifest = await fetchSkillsManifest();
|
|
241
|
+
const skill = manifest.skills.find((s) => s.name === name);
|
|
242
|
+
if (skill)
|
|
243
|
+
filename = skill.filename;
|
|
244
|
+
}
|
|
245
|
+
catch {
|
|
246
|
+
// Use fallback filename
|
|
247
|
+
}
|
|
248
|
+
const safeFilename = basename(filename);
|
|
249
|
+
const dest = join(COMMANDS_DIR, safeFilename);
|
|
250
|
+
try {
|
|
251
|
+
await unlink(dest);
|
|
252
|
+
}
|
|
253
|
+
catch (err) {
|
|
254
|
+
if (err.code !== "ENOENT") {
|
|
255
|
+
error(`Failed to remove file: ${err.message}`);
|
|
256
|
+
return;
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
delete state.installed[name];
|
|
260
|
+
await saveState(state);
|
|
261
|
+
success(`Removed ${chalk.bold(name)}.`);
|
|
262
|
+
});
|
|
263
|
+
// --- Startup check (exported for use in index.ts) ---
|
|
264
|
+
export async function checkSkillUpdates() {
|
|
265
|
+
try {
|
|
266
|
+
const state = await loadState();
|
|
267
|
+
// Throttle: max once per day
|
|
268
|
+
if (state.lastCheckedAt) {
|
|
269
|
+
const lastCheck = new Date(state.lastCheckedAt).getTime();
|
|
270
|
+
const oneDayMs = 24 * 60 * 60 * 1000;
|
|
271
|
+
if (Date.now() - lastCheck < oneDayMs)
|
|
272
|
+
return;
|
|
273
|
+
}
|
|
274
|
+
const url = `${getBaseUrl()}/skills/skills.json`;
|
|
275
|
+
const res = await fetch(url);
|
|
276
|
+
if (!res.ok)
|
|
277
|
+
return;
|
|
278
|
+
const manifest = (await res.json());
|
|
279
|
+
// Update check timestamp
|
|
280
|
+
state.lastCheckedAt = new Date().toISOString();
|
|
281
|
+
// New version available
|
|
282
|
+
if (manifest.version > state.lastKnownVersion && state.lastKnownVersion > 0) {
|
|
283
|
+
console.log(chalk.cyan("🆕 New skills available!") +
|
|
284
|
+
" Run " +
|
|
285
|
+
chalk.cyan("`octopus skills list`") +
|
|
286
|
+
" to see them.");
|
|
287
|
+
}
|
|
288
|
+
// Check for hash changes in installed skills
|
|
289
|
+
const installedNames = Object.keys(state.installed);
|
|
290
|
+
if (installedNames.length > 0) {
|
|
291
|
+
const hasUpdates = installedNames.some((name) => {
|
|
292
|
+
const remote = manifest.skills.find((s) => s.name === name);
|
|
293
|
+
return remote && state.installed[name].hash !== remote.hash;
|
|
294
|
+
});
|
|
295
|
+
if (hasUpdates) {
|
|
296
|
+
console.log(chalk.yellow("📦 Skill updates available.") +
|
|
297
|
+
" Run " +
|
|
298
|
+
chalk.cyan("`octopus skills update`"));
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
state.lastKnownVersion = manifest.version;
|
|
302
|
+
await saveState(state);
|
|
303
|
+
}
|
|
304
|
+
catch {
|
|
305
|
+
// Silently ignore — startup check must never block or crash
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
// --- Export command ---
|
|
126
309
|
export const skillsCommand = new Command("skills")
|
|
127
310
|
.description("Manage Octopus skills for AI coding agents")
|
|
311
|
+
.addCommand(listCommand)
|
|
128
312
|
.addCommand(installCommand)
|
|
129
|
-
.addCommand(
|
|
313
|
+
.addCommand(updateCommand)
|
|
314
|
+
.addCommand(removeCommand);
|
|
130
315
|
//# sourceMappingURL=skills.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skills.js","sourceRoot":"","sources":["../../src/commands/skills.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"skills.js","sourceRoot":"","sources":["../../src/commands/skills.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import { Command } from "commander";
|
|
2
|
+
import { readFileSync } from "node:fs";
|
|
3
|
+
import { fileURLToPath } from "node:url";
|
|
4
|
+
import { dirname, join } from "node:path";
|
|
2
5
|
import { loginCommand } from "./commands/login.js";
|
|
3
6
|
import { logoutCommand } from "./commands/logout.js";
|
|
4
7
|
import { whoamiCommand } from "./commands/whoami.js";
|
|
@@ -6,14 +9,25 @@ import { configCommand } from "./commands/config.js";
|
|
|
6
9
|
import { usageCommand } from "./commands/usage.js";
|
|
7
10
|
import { repoCommand } from "./commands/repo/index.js";
|
|
8
11
|
import { prCommand } from "./commands/pr/index.js";
|
|
12
|
+
import { reviewAction, PR_ARG_DESC } from "./commands/pr/review.js";
|
|
9
13
|
import { knowledgeCommand } from "./commands/knowledge/index.js";
|
|
10
14
|
import { analyzeDepsCommand } from "./commands/analyze-deps.js";
|
|
11
|
-
import { skillsCommand } from "./commands/skills.js";
|
|
15
|
+
import { skillsCommand, checkSkillUpdates } from "./commands/skills.js";
|
|
16
|
+
import { agentCommand } from "./commands/agent/index.js";
|
|
17
|
+
let version = "0.0.0";
|
|
18
|
+
try {
|
|
19
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
20
|
+
const pkg = JSON.parse(readFileSync(join(__dirname, "..", "package.json"), "utf-8"));
|
|
21
|
+
version = pkg.version ?? version;
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
// fall back to placeholder; CLI remains functional
|
|
25
|
+
}
|
|
12
26
|
const program = new Command();
|
|
13
27
|
program
|
|
14
28
|
.name("octopus")
|
|
15
29
|
.description("Octopus CLI — AI-powered PR review and codebase intelligence")
|
|
16
|
-
.version(
|
|
30
|
+
.version(version);
|
|
17
31
|
program.addCommand(loginCommand);
|
|
18
32
|
program.addCommand(logoutCommand);
|
|
19
33
|
program.addCommand(whoamiCommand);
|
|
@@ -24,5 +38,15 @@ program.addCommand(prCommand);
|
|
|
24
38
|
program.addCommand(knowledgeCommand);
|
|
25
39
|
program.addCommand(analyzeDepsCommand);
|
|
26
40
|
program.addCommand(skillsCommand);
|
|
41
|
+
program.addCommand(agentCommand);
|
|
42
|
+
// Top-level alias: `octopus review` → `octopus pr review`
|
|
43
|
+
program
|
|
44
|
+
.command("review")
|
|
45
|
+
.argument("[pr]", PR_ARG_DESC)
|
|
46
|
+
.option("--pr <pr>", PR_ARG_DESC)
|
|
47
|
+
.description("Trigger an AI review on a pull request (alias for 'pr review')")
|
|
48
|
+
.action(reviewAction);
|
|
49
|
+
// Non-blocking startup check for skill updates
|
|
50
|
+
checkSkillUpdates();
|
|
27
51
|
program.parse();
|
|
28
52
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,IAAI,OAAO,GAAG,OAAO,CAAC;AACtB,IAAI,CAAC;IACH,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;IACrF,OAAO,GAAG,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC;AACnC,CAAC;AAAC,MAAM,CAAC;IACP,mDAAmD;AACrD,CAAC;AAED,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,SAAS,CAAC;KACf,WAAW,CAAC,8DAA8D,CAAC;KAC3E,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AAC9B,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;AACrC,OAAO,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;AACvC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AAEjC,0DAA0D;AAC1D,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;KAC7B,MAAM,CAAC,WAAW,EAAE,WAAW,CAAC;KAChC,WAAW,CAAC,gEAAgE,CAAC;KAC7E,MAAM,CAAC,YAAY,CAAC,CAAC;AAExB,+CAA+C;AAC/C,iBAAiB,EAAE,CAAC;AAEpB,OAAO,CAAC,KAAK,EAAE,CAAC"}
|