@codevoyant/agent-kit 1.24.1 → 1.25.0

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/bin.js CHANGED
@@ -4,6 +4,8 @@ import { initCommand } from './commands/init.js';
4
4
  import { plansCommand } from './commands/plans.js';
5
5
  import { notifyCommand } from './commands/notify.js';
6
6
  import { worktreesCommand } from './commands/worktrees.js';
7
+ import { gitCommand } from './commands/git.js';
8
+ import { taskRunnerCommand } from './commands/task-runner.js';
7
9
  const program = new Command();
8
10
  program
9
11
  .name('codevoyant')
@@ -13,6 +15,7 @@ program.addCommand(initCommand());
13
15
  program.addCommand(plansCommand());
14
16
  program.addCommand(notifyCommand());
15
17
  program.addCommand(worktreesCommand());
16
- // future: program.addCommand(styleCommand());
18
+ program.addCommand(gitCommand());
19
+ program.addCommand(taskRunnerCommand());
17
20
  program.parse();
18
21
  //# sourceMappingURL=bin.js.map
package/dist/bin.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,YAAY,CAAC;KAClB,WAAW,CAAC,0DAA0D,CAAC;KACvE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,OAAO,CAAC,CAAC;AAEvD,OAAO,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC,CAAC;AACnC,OAAO,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,CAAC;AACpC,OAAO,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC,CAAC;AACvC,8CAA8C;AAE9C,OAAO,CAAC,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAE9D,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,YAAY,CAAC;KAClB,WAAW,CAAC,0DAA0D,CAAC;KACvE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,OAAO,CAAC,CAAC;AAEvD,OAAO,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC,CAAC;AACnC,OAAO,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,CAAC;AACpC,OAAO,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC,CAAC;AACvC,OAAO,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,CAAC;AACxC,OAAO,CAAC,KAAK,EAAE,CAAC"}
@@ -0,0 +1,21 @@
1
+ import { Command } from 'commander';
2
+ export declare function gitCommand(): Command;
3
+ export { getCurrentBranch, cleanBranch, extractIssueId, stripIssueFromBranch, getRemoteUrl, BRANCH_PREFIXES, ISSUE_ID_PATTERN, };
4
+ /** Prefixes that are stripped by --clean. */
5
+ declare const BRANCH_PREFIXES: string[];
6
+ /** Issue ID pattern: 2+ uppercase letters followed by - or _ and 1+ digits. */
7
+ declare const ISSUE_ID_PATTERN: RegExp;
8
+ /** Get the current branch name. Returns "HEAD" for detached HEAD state. */
9
+ declare function getCurrentBranch(cwd?: string): string;
10
+ /** Strip common branch prefixes (feature/, bugfix/, etc.). */
11
+ declare function cleanBranch(branch: string): string;
12
+ /** Extract issue ID from a branch name. Returns empty string if not found. */
13
+ declare function extractIssueId(branch: string): string;
14
+ /**
15
+ * Strip the leading issue ID (and trailing separator) from a branch name.
16
+ * E.g. "ENG-123-my-feature" -> "my-feature"
17
+ */
18
+ declare function stripIssueFromBranch(branch: string): string;
19
+ /** Get the remote URL for origin, or null if no remote. */
20
+ declare function getRemoteUrl(cwd?: string): string | null;
21
+ //# sourceMappingURL=git.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/commands/git.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,wBAAgB,UAAU,IAAI,OAAO,CAkEpC;AAGD,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,cAAc,EACd,oBAAoB,EACpB,YAAY,EACZ,eAAe,EACf,gBAAgB,GACjB,CAAC;AAIF,6CAA6C;AAC7C,QAAA,MAAM,eAAe,UAAgF,CAAC;AAEtG,+EAA+E;AAC/E,QAAA,MAAM,gBAAgB,QAAwB,CAAC;AAmB/C,2EAA2E;AAC3E,iBAAS,gBAAgB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAG9C;AAED,8DAA8D;AAC9D,iBAAS,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAO3C;AAED,8EAA8E;AAC9E,iBAAS,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAG9C;AAED;;;GAGG;AACH,iBAAS,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED,2DAA2D;AAC3D,iBAAS,YAAY,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAEjD"}
@@ -0,0 +1,115 @@
1
+ import { Command } from 'commander';
2
+ import { spawnSync } from 'child_process';
3
+ import { findProjectRoot, getRepoName, isInWorktree } from '../project.js';
4
+ export function gitCommand() {
5
+ const git = new Command('git').description('Git metadata extraction');
6
+ git
7
+ .command('repo-name')
8
+ .description('Get repository name from remote URL (fallback to directory name)')
9
+ .action(() => {
10
+ requireGitRepo();
11
+ console.log(getRepoName());
12
+ });
13
+ git
14
+ .command('branch')
15
+ .description('Get current branch name')
16
+ .option('--clean', 'Strip common prefixes (feature/, bugfix/, etc.)')
17
+ .option('--strip-issue', 'Also strip leading issue ID (use with --clean)')
18
+ .action((opts) => {
19
+ requireGitRepo();
20
+ let branch = getCurrentBranch();
21
+ if (opts.clean) {
22
+ branch = cleanBranch(branch);
23
+ }
24
+ if (opts.stripIssue) {
25
+ branch = stripIssueFromBranch(branch);
26
+ }
27
+ console.log(branch);
28
+ });
29
+ git
30
+ .command('issue-id')
31
+ .description('Extract issue ID (e.g. ENG-123) from current branch name')
32
+ .action(() => {
33
+ requireGitRepo();
34
+ const branch = getCurrentBranch();
35
+ const issueId = extractIssueId(branch);
36
+ // Always exit 0, print empty string if no issue ID
37
+ console.log(issueId);
38
+ });
39
+ git
40
+ .command('info')
41
+ .description('All git metadata as JSON')
42
+ .action(() => {
43
+ requireGitRepo();
44
+ const branch = getCurrentBranch();
45
+ const branchClean = cleanBranch(branch);
46
+ const issueId = extractIssueId(branch);
47
+ const remoteUrl = getRemoteUrl();
48
+ const repoName = getRepoName();
49
+ const inWorktree = isInWorktree();
50
+ const info = {
51
+ repoName,
52
+ branch,
53
+ branchClean,
54
+ issueId: issueId || null,
55
+ isWorktree: inWorktree,
56
+ remoteUrl: remoteUrl || null,
57
+ };
58
+ console.log(JSON.stringify(info, null, 2));
59
+ });
60
+ return git;
61
+ }
62
+ // Export internals for testing
63
+ export { getCurrentBranch, cleanBranch, extractIssueId, stripIssueFromBranch, getRemoteUrl, BRANCH_PREFIXES, ISSUE_ID_PATTERN, };
64
+ // HELPERS -----------------------------------------------------------------------------------------
65
+ /** Prefixes that are stripped by --clean. */
66
+ const BRANCH_PREFIXES = ['feature/', 'bugfix/', 'hotfix/', 'fix/', 'release/', 'chore/', 'refactor/'];
67
+ /** Issue ID pattern: 2+ uppercase letters followed by - or _ and 1+ digits. */
68
+ const ISSUE_ID_PATTERN = /[A-Z]{2,}[_-][0-9]+/;
69
+ /** Run a git command and return trimmed stdout. Returns null on failure. */
70
+ function gitOrNull(args, cwd) {
71
+ const result = spawnSync('git', args, { encoding: 'utf-8', cwd });
72
+ if (result.status !== 0)
73
+ return null;
74
+ return result.stdout?.trim() ?? null;
75
+ }
76
+ /** Require that we're inside a git repo. Exits with code 1 if not. */
77
+ function requireGitRepo() {
78
+ const root = findProjectRoot();
79
+ if (!root) {
80
+ console.error('fatal: not a git repository (or any parent up to mount point /)');
81
+ process.exit(1);
82
+ }
83
+ return root;
84
+ }
85
+ /** Get the current branch name. Returns "HEAD" for detached HEAD state. */
86
+ function getCurrentBranch(cwd) {
87
+ const branch = gitOrNull(['rev-parse', '--abbrev-ref', 'HEAD'], cwd);
88
+ return branch || 'HEAD';
89
+ }
90
+ /** Strip common branch prefixes (feature/, bugfix/, etc.). */
91
+ function cleanBranch(branch) {
92
+ for (const prefix of BRANCH_PREFIXES) {
93
+ if (branch.startsWith(prefix)) {
94
+ return branch.slice(prefix.length);
95
+ }
96
+ }
97
+ return branch;
98
+ }
99
+ /** Extract issue ID from a branch name. Returns empty string if not found. */
100
+ function extractIssueId(branch) {
101
+ const match = branch.match(ISSUE_ID_PATTERN);
102
+ return match ? match[0] : '';
103
+ }
104
+ /**
105
+ * Strip the leading issue ID (and trailing separator) from a branch name.
106
+ * E.g. "ENG-123-my-feature" -> "my-feature"
107
+ */
108
+ function stripIssueFromBranch(branch) {
109
+ return branch.replace(/^[A-Z]{2,}[_-][0-9]+[-_]?/, '');
110
+ }
111
+ /** Get the remote URL for origin, or null if no remote. */
112
+ function getRemoteUrl(cwd) {
113
+ return gitOrNull(['remote', 'get-url', 'origin'], cwd);
114
+ }
115
+ //# sourceMappingURL=git.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/commands/git.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"notify.d.ts","sourceRoot":"","sources":["../../src/commands/notify.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,wBAAgB,aAAa,IAAI,OAAO,CAUvC"}
1
+ {"version":3,"file":"notify.d.ts","sourceRoot":"","sources":["../../src/commands/notify.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgBpC,wBAAgB,aAAa,IAAI,OAAO,CAUvC"}
@@ -1,5 +1,19 @@
1
1
  import { Command } from 'commander';
2
- import notifier from 'node-notifier';
2
+ import { spawnSync } from 'child_process';
3
+ function sendNotification(title, message) {
4
+ if (process.platform === 'darwin') {
5
+ spawnSync('osascript', ['-e', `display notification "${message}" with title "${title}"`]);
6
+ }
7
+ else if (process.platform === 'linux') {
8
+ spawnSync('notify-send', [title, message]);
9
+ }
10
+ else if (process.platform === 'win32') {
11
+ spawnSync('powershell', [
12
+ '-Command',
13
+ `[System.Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms'); [System.Windows.Forms.MessageBox]::Show('${message}', '${title}')`,
14
+ ]);
15
+ }
16
+ }
3
17
  export function notifyCommand() {
4
18
  return new Command('notify')
5
19
  .description('Send a cross-platform desktop notification')
@@ -9,7 +23,7 @@ export function notifyCommand() {
9
23
  .action((opts) => {
10
24
  if (opts.silent)
11
25
  return;
12
- notifier.notify({ title: opts.title, message: opts.message });
26
+ sendNotification(opts.title, opts.message);
13
27
  });
14
28
  }
15
29
  //# sourceMappingURL=notify.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"notify.js","sourceRoot":"","sources":["../../src/commands/notify.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,QAAQ,MAAM,eAAe,CAAC;AAErC,MAAM,UAAU,aAAa;IAC3B,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC;SACzB,WAAW,CAAC,4CAA4C,CAAC;SACzD,cAAc,CAAC,iBAAiB,EAAE,oBAAoB,CAAC;SACvD,cAAc,CAAC,qBAAqB,EAAE,sBAAsB,CAAC;SAC7D,MAAM,CAAC,UAAU,EAAE,+BAA+B,EAAE,KAAK,CAAC;SAC1D,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;QACf,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO;QACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"notify.js","sourceRoot":"","sources":["../../src/commands/notify.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE1C,SAAS,gBAAgB,CAAC,KAAa,EAAE,OAAe;IACtD,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAClC,SAAS,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,yBAAyB,OAAO,iBAAiB,KAAK,GAAG,CAAC,CAAC,CAAC;IAC5F,CAAC;SAAM,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACxC,SAAS,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;IAC7C,CAAC;SAAM,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACxC,SAAS,CAAC,YAAY,EAAE;YACtB,UAAU;YACV,uHAAuH,OAAO,OAAO,KAAK,IAAI;SAC/I,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC;SACzB,WAAW,CAAC,4CAA4C,CAAC;SACzD,cAAc,CAAC,iBAAiB,EAAE,oBAAoB,CAAC;SACvD,cAAc,CAAC,qBAAqB,EAAE,sBAAsB,CAAC;SAC7D,MAAM,CAAC,UAAU,EAAE,+BAA+B,EAAE,KAAK,CAAC;SAC1D,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;QACf,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO;QACxB,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { Command } from 'commander';
2
+ import type { TaskRunnerInfo } from '../types.js';
3
+ /**
4
+ * Detect the task runner by scanning for config files in priority order.
5
+ * Optionally provide a cwd to search from (defaults to process.cwd()).
6
+ */
7
+ export declare function detectRunner(cwd?: string): TaskRunnerInfo | null;
8
+ interface TaskEntry {
9
+ name: string;
10
+ description?: string;
11
+ }
12
+ /**
13
+ * List available tasks for a given runner by invoking its list command.
14
+ * If the runner binary is not installed, falls back to showing raw config file content.
15
+ */
16
+ export declare function listTasks(info: TaskRunnerInfo, cwd?: string): TaskEntry[];
17
+ export declare function taskRunnerCommand(): Command;
18
+ export {};
19
+ //# sourceMappingURL=task-runner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-runner.d.ts","sourceRoot":"","sources":["../../src/commands/task-runner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AA8BlD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CA8BhE;AAED,UAAU,SAAS;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,EAAE,CA8DzE;AA6BD,wBAAgB,iBAAiB,IAAI,OAAO,CAwF3C"}
@@ -0,0 +1,225 @@
1
+ import { Command } from 'commander';
2
+ import { execSync } from 'child_process';
3
+ import * as fs from 'fs';
4
+ import * as path from 'path';
5
+ import { readSettings, writeSettings } from '../config.js';
6
+ const RUNNER_PRIORITY = [
7
+ { runner: 'just', command: 'just', configFiles: ['justfile', 'Justfile'] },
8
+ { runner: 'task', command: 'task', configFiles: ['Taskfile.yml', 'Taskfile.yaml'] },
9
+ { runner: 'mise', command: 'mise run', configFiles: ['mise.toml', '.mise.toml'] },
10
+ { runner: 'make', command: 'make', configFiles: ['makefile', 'Makefile'] },
11
+ {
12
+ runner: 'npm',
13
+ command: 'npm run',
14
+ configFiles: ['package.json'],
15
+ qualify: (filePath) => {
16
+ try {
17
+ const pkg = JSON.parse(fs.readFileSync(filePath, 'utf-8'));
18
+ return !!(pkg.scripts && Object.keys(pkg.scripts).length > 0);
19
+ }
20
+ catch {
21
+ return false;
22
+ }
23
+ },
24
+ },
25
+ ];
26
+ /**
27
+ * Detect the task runner by scanning for config files in priority order.
28
+ * Optionally provide a cwd to search from (defaults to process.cwd()).
29
+ */
30
+ export function detectRunner(cwd) {
31
+ const dir = cwd ?? process.cwd();
32
+ for (const def of RUNNER_PRIORITY) {
33
+ for (const configFile of def.configFiles) {
34
+ const filePath = path.join(dir, configFile);
35
+ if (fs.existsSync(filePath)) {
36
+ if (def.qualify && !def.qualify(filePath))
37
+ continue;
38
+ // Prefer pnpm over npm if lockfile exists
39
+ let command = def.command;
40
+ if (def.runner === 'npm') {
41
+ if (fs.existsSync(path.join(dir, 'pnpm-lock.yaml'))) {
42
+ command = 'pnpm run';
43
+ }
44
+ else if (fs.existsSync(path.join(dir, 'yarn.lock'))) {
45
+ command = 'yarn run';
46
+ }
47
+ }
48
+ return {
49
+ runner: command.split(' ')[0],
50
+ command,
51
+ configFile,
52
+ detectedAt: new Date().toISOString(),
53
+ };
54
+ }
55
+ }
56
+ }
57
+ return null;
58
+ }
59
+ /**
60
+ * List available tasks for a given runner by invoking its list command.
61
+ * If the runner binary is not installed, falls back to showing raw config file content.
62
+ */
63
+ export function listTasks(info, cwd) {
64
+ const dir = cwd ?? process.cwd();
65
+ try {
66
+ switch (info.runner) {
67
+ case 'just': {
68
+ const output = execSync('just --dump --dump-format json', { encoding: 'utf-8', cwd: dir });
69
+ const dump = JSON.parse(output);
70
+ const recipes = dump.recipes ?? {};
71
+ return Object.entries(recipes).map(([name, recipe]) => ({
72
+ name,
73
+ description: recipe.doc ?? undefined,
74
+ }));
75
+ }
76
+ case 'mise': {
77
+ const output = execSync('mise tasks ls --json', { encoding: 'utf-8', cwd: dir });
78
+ const tasks = JSON.parse(output);
79
+ return tasks.map((t) => ({ name: t.name, description: t.description }));
80
+ }
81
+ case 'task': {
82
+ const output = execSync('task --list-all --json', { encoding: 'utf-8', cwd: dir });
83
+ const data = JSON.parse(output);
84
+ const tasks = data.tasks ?? [];
85
+ return tasks.map((t) => ({
86
+ name: t.name,
87
+ description: t.desc ?? undefined,
88
+ }));
89
+ }
90
+ case 'make': {
91
+ const output = execSync(`make -pRrq 2>/dev/null | awk -F: '/^[a-zA-Z0-9][^$#\\/\\t=]*:([^=]|$)/ {split($1,a," ");print a[1]}' | sort -u`, { encoding: 'utf-8', cwd: dir, shell: '/bin/sh' });
92
+ return output
93
+ .trim()
94
+ .split('\n')
95
+ .filter(Boolean)
96
+ .map((name) => ({ name }));
97
+ }
98
+ case 'pnpm':
99
+ case 'npm':
100
+ case 'yarn': {
101
+ const pkgPath = path.join(dir, 'package.json');
102
+ if (!fs.existsSync(pkgPath))
103
+ return [];
104
+ const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf-8'));
105
+ const scripts = pkg.scripts ?? {};
106
+ return Object.entries(scripts).map(([name, cmd]) => ({
107
+ name,
108
+ description: typeof cmd === 'string' ? cmd : undefined,
109
+ }));
110
+ }
111
+ default:
112
+ return [];
113
+ }
114
+ }
115
+ catch (err) {
116
+ // If the runner binary is not installed (ENOENT or "not found" in stderr),
117
+ // fall back to showing raw config file content as a single entry.
118
+ if (isBinaryMissing(err)) {
119
+ return readConfigFileFallback(info.configFile, dir);
120
+ }
121
+ return [];
122
+ }
123
+ }
124
+ // HELPERS -----------------------------------------------------------------------------------------
125
+ /** Returns true if the error indicates the runner binary is not installed. */
126
+ function isBinaryMissing(err) {
127
+ if (err instanceof Error) {
128
+ const msg = err.message.toLowerCase();
129
+ return (err.code === 'ENOENT' ||
130
+ msg.includes('command not found') ||
131
+ msg.includes('not found') ||
132
+ msg.includes('no such file'));
133
+ }
134
+ return false;
135
+ }
136
+ /** Read the config file and return its content as a single fallback entry. */
137
+ function readConfigFileFallback(configFile, dir) {
138
+ const filePath = path.join(dir, configFile);
139
+ try {
140
+ const content = fs.readFileSync(filePath, 'utf-8');
141
+ return [{ name: '(raw)', description: content }];
142
+ }
143
+ catch {
144
+ return [];
145
+ }
146
+ }
147
+ export function taskRunnerCommand() {
148
+ const cmd = new Command('task-runner').description('Detect and interact with project task runners');
149
+ cmd
150
+ .command('detect')
151
+ .description('Detect the active task runner and cache the result')
152
+ .option('--dir <dir>', 'Directory to scan', '.')
153
+ .option('--settings-dir <settingsDir>', 'Directory for settings.json', '.codevoyant')
154
+ .action((opts) => {
155
+ const info = detectRunner(opts.dir === '.' ? undefined : opts.dir);
156
+ if (!info) {
157
+ console.error('No task runner detected');
158
+ process.exit(1);
159
+ }
160
+ // Cache in settings.json
161
+ const settings = readSettings(opts.settingsDir);
162
+ settings.taskRunner = info;
163
+ writeSettings(settings, opts.settingsDir);
164
+ console.log(JSON.stringify({ ...info, cached: true }, null, 2));
165
+ });
166
+ cmd
167
+ .command('list')
168
+ .description('List available tasks for the detected runner')
169
+ .option('--json', 'Output as JSON', false)
170
+ .option('--dir <dir>', 'Directory to scan', '.')
171
+ .option('--settings-dir <settingsDir>', 'Directory for settings.json', '.codevoyant')
172
+ .action((opts) => {
173
+ // Try to read cached runner, otherwise detect
174
+ const settings = readSettings(opts.settingsDir);
175
+ let info = settings.taskRunner ?? null;
176
+ if (!info) {
177
+ info = detectRunner(opts.dir === '.' ? undefined : opts.dir);
178
+ if (!info) {
179
+ console.error('No task runner detected');
180
+ process.exit(1);
181
+ }
182
+ }
183
+ const tasks = listTasks(info, opts.dir === '.' ? undefined : opts.dir);
184
+ if (opts.json) {
185
+ console.log(JSON.stringify({ runner: info.runner, command: info.command, tasks }, null, 2));
186
+ }
187
+ else {
188
+ console.log(`Runner: ${info.command}`);
189
+ console.log('');
190
+ for (const t of tasks) {
191
+ const desc = t.description ? ` # ${t.description}` : '';
192
+ console.log(` ${t.name}${desc}`);
193
+ }
194
+ }
195
+ });
196
+ cmd
197
+ .command('run')
198
+ .description('Run a task using the detected runner')
199
+ .argument('<task>', 'Task name to run')
200
+ .argument('[args...]', 'Additional arguments')
201
+ .option('--dir <dir>', 'Directory to run in', '.')
202
+ .option('--settings-dir <settingsDir>', 'Directory for settings.json', '.codevoyant')
203
+ .action((task, args, opts) => {
204
+ const settings = readSettings(opts.settingsDir);
205
+ let info = settings.taskRunner ?? null;
206
+ if (!info) {
207
+ info = detectRunner(opts.dir === '.' ? undefined : opts.dir);
208
+ if (!info) {
209
+ console.error('No task runner detected');
210
+ process.exit(1);
211
+ }
212
+ }
213
+ const extraArgs = args.length > 0 ? ' ' + args.join(' ') : '';
214
+ const fullCommand = `${info.command} ${task}${extraArgs}`;
215
+ const cwd = opts.dir === '.' ? undefined : opts.dir;
216
+ try {
217
+ execSync(fullCommand, { stdio: 'inherit', cwd, shell: '/bin/sh' });
218
+ }
219
+ catch {
220
+ process.exit(1);
221
+ }
222
+ });
223
+ return cmd;
224
+ }
225
+ //# sourceMappingURL=task-runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-runner.js","sourceRoot":"","sources":["../../src/commands/task-runner.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"worktrees.d.ts","sourceRoot":"","sources":["../../src/commands/worktrees.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA+DpC,wBAAgB,gBAAgB,IAAI,OAAO,CAuQ1C"}
1
+ {"version":3,"file":"worktrees.d.ts","sourceRoot":"","sources":["../../src/commands/worktrees.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,wBAAgB,gBAAgB,IAAI,OAAO,CAmV1C"}
@@ -3,56 +3,7 @@ import { spawnSync } from 'child_process';
3
3
  import * as fs from 'fs';
4
4
  import * as path from 'path';
5
5
  import { readConfig, writeConfig, getConfigPath } from '../config.js';
6
- function git(args, cwd) {
7
- const result = spawnSync('git', args, { encoding: 'utf-8', cwd });
8
- if (result.status !== 0)
9
- throw new Error(result.stderr?.trim() || `git ${args[0]} failed`);
10
- return result.stdout?.trim() ?? '';
11
- }
12
- function parseWorktreeList(cwd) {
13
- const output = git(['worktree', 'list', '--porcelain'], cwd);
14
- if (!output)
15
- return [];
16
- const entries = [];
17
- let current = {};
18
- for (const line of output.split('\n')) {
19
- if (line === '') {
20
- if (current.worktree) {
21
- entries.push(current);
22
- }
23
- current = {};
24
- }
25
- else if (line.startsWith('worktree ')) {
26
- current.worktree = line.slice('worktree '.length);
27
- }
28
- else if (line.startsWith('HEAD ')) {
29
- current.HEAD = line.slice('HEAD '.length);
30
- }
31
- else if (line.startsWith('branch ')) {
32
- current.branch = line.slice('branch '.length).replace('refs/heads/', '');
33
- }
34
- else if (line === 'bare') {
35
- current.bare = true;
36
- }
37
- }
38
- if (current.worktree) {
39
- entries.push(current);
40
- }
41
- return entries;
42
- }
43
- function ensureGitignoreEntry(dir) {
44
- const gitignorePath = path.join(dir, '.gitignore');
45
- const entry = '.codevoyant/worktrees/';
46
- if (fs.existsSync(gitignorePath)) {
47
- const existing = fs.readFileSync(gitignorePath, 'utf-8');
48
- if (!existing.includes(entry)) {
49
- fs.appendFileSync(gitignorePath, '\n# codevoyant\n' + entry + '\n');
50
- }
51
- }
52
- else {
53
- fs.writeFileSync(gitignorePath, '# codevoyant\n' + entry + '\n');
54
- }
55
- }
6
+ import { findProjectRoot, isInWorktree, getRepoName, getCurrentPlan, getWorktreeBasePath } from '../project.js';
56
7
  export function worktreesCommand() {
57
8
  const wt = new Command('worktrees').description('Manage git worktrees');
58
9
  wt.command('create')
@@ -60,35 +11,38 @@ export function worktreesCommand() {
60
11
  .requiredOption('--branch <branch>', 'Branch name')
61
12
  .option('--base <base>', 'Base branch/commit', 'HEAD')
62
13
  .option('--plan <plan>', 'Associated plan name')
14
+ .option('--base-path <basePath>', 'Custom base path for worktrees')
63
15
  .option('--registry <path>', 'Path to codevoyant.json')
64
16
  .action((opts) => {
65
- // Validate branch name
17
+ const projectRoot = requireProjectRoot();
66
18
  if (!/^[\w/.-]+$/.test(opts.branch)) {
67
19
  console.error('Invalid branch name: only alphanumeric, hyphens, underscores, slashes, and dots allowed');
68
20
  process.exit(1);
69
21
  }
70
- // Check not already a worktree
71
- const existing = parseWorktreeList();
22
+ const existing = parseWorktreeList(projectRoot);
72
23
  if (existing.some((e) => e.branch === opts.branch)) {
73
24
  console.error(`Branch "${opts.branch}" is already a worktree`);
74
25
  process.exit(1);
75
26
  }
76
- const wtPath = path.join('.codevoyant', 'worktrees', opts.branch);
27
+ const repoName = getRepoName(projectRoot);
28
+ const basePath = opts.basePath ?? getWorktreeBasePath(repoName, projectRoot);
29
+ const wtName = opts.plan ?? opts.branch;
30
+ const wtPath = path.join(basePath, wtName);
77
31
  if (fs.existsSync(wtPath)) {
78
32
  console.error(`Directory already exists: ${wtPath}`);
79
33
  process.exit(1);
80
34
  }
81
- // Check if branch exists
82
- const branchCheck = spawnSync('git', ['rev-parse', '--verify', opts.branch], { encoding: 'utf-8' });
35
+ fs.mkdirSync(basePath, { recursive: true });
36
+ const branchCheck = spawnSync('git', ['rev-parse', '--verify', opts.branch], {
37
+ encoding: 'utf-8',
38
+ cwd: projectRoot,
39
+ });
83
40
  if (branchCheck.status === 0) {
84
- git(['worktree', 'add', wtPath, opts.branch]);
41
+ gitExec(['worktree', 'add', wtPath, opts.branch], projectRoot);
85
42
  }
86
43
  else {
87
- git(['worktree', 'add', '-b', opts.branch, wtPath, opts.base]);
44
+ gitExec(['worktree', 'add', '-b', opts.branch, wtPath, opts.base], projectRoot);
88
45
  }
89
- // Ensure .gitignore entry
90
- ensureGitignoreEntry('.');
91
- // Register in config
92
46
  const configPath = getConfigPath(opts.registry);
93
47
  const config = readConfig(configPath);
94
48
  const entry = {
@@ -108,29 +62,26 @@ export function worktreesCommand() {
108
62
  .option('--force', 'Force removal', false)
109
63
  .option('--registry <path>', 'Path to codevoyant.json')
110
64
  .action((opts) => {
111
- const worktrees = parseWorktreeList();
65
+ const projectRoot = requireProjectRoot();
66
+ const worktrees = parseWorktreeList(projectRoot);
112
67
  const wte = worktrees.find((e) => e.branch === opts.branch);
113
68
  if (!wte) {
114
69
  console.error(`Worktree for branch "${opts.branch}" not found`);
115
70
  process.exit(1);
116
71
  }
117
- // Warn if uncommitted changes
118
72
  const statusResult = spawnSync('git', ['-C', wte.worktree, 'status', '--porcelain'], { encoding: 'utf-8' });
119
73
  if (statusResult.stdout && statusResult.stdout.trim() && !opts.force) {
120
74
  console.error(`Worktree has uncommitted changes. Use --force to remove anyway.`);
121
75
  process.exit(1);
122
76
  }
123
- // Remove worktree
124
77
  const removeArgs = ['worktree', 'remove', wte.worktree];
125
78
  if (opts.force)
126
79
  removeArgs.push('--force');
127
- git(removeArgs);
128
- // Delete branch if requested
80
+ gitExec(removeArgs, projectRoot);
129
81
  if (opts.deleteBranch) {
130
82
  const deleteFlag = opts.force ? '-D' : '-d';
131
- git(['branch', deleteFlag, opts.branch]);
83
+ gitExec(['branch', deleteFlag, opts.branch], projectRoot);
132
84
  }
133
- // Remove from config
134
85
  const configPath = getConfigPath(opts.registry);
135
86
  const config = readConfig(configPath);
136
87
  config.worktrees = config.worktrees.filter((w) => w.branch !== opts.branch);
@@ -141,7 +92,8 @@ export function worktreesCommand() {
141
92
  .description('Prune stale worktrees')
142
93
  .option('--registry <path>', 'Path to codevoyant.json')
143
94
  .action((opts) => {
144
- git(['worktree', 'prune', '--verbose']);
95
+ const projectRoot = findProjectRoot() ?? '.';
96
+ gitExec(['worktree', 'prune', '--verbose'], projectRoot);
145
97
  const configPath = getConfigPath(opts.registry);
146
98
  const config = readConfig(configPath);
147
99
  const before = config.worktrees.length;
@@ -153,15 +105,16 @@ export function worktreesCommand() {
153
105
  wt.command('list')
154
106
  .description('List worktrees')
155
107
  .option('--json', 'Output as JSON', false)
108
+ .option('--filter <plan>', 'Filter by plan name')
156
109
  .option('--registry <path>', 'Path to codevoyant.json')
157
110
  .action((opts) => {
158
- const worktrees = parseWorktreeList();
111
+ const projectRoot = findProjectRoot() ?? '.';
112
+ const worktrees = parseWorktreeList(projectRoot);
159
113
  const configPath = getConfigPath(opts.registry);
160
114
  const config = readConfig(configPath);
161
- const enriched = worktrees.map((wte) => {
115
+ let enriched = worktrees.map((wte) => {
162
116
  const registered = config.worktrees.find((w) => w.branch === wte.branch);
163
117
  const plan = config.activePlans.find((p) => p.worktree === wte.worktree || p.branch === wte.branch);
164
- // Check dirty status
165
118
  let dirty = false;
166
119
  try {
167
120
  const status = spawnSync('git', ['-C', wte.worktree, 'status', '--porcelain'], { encoding: 'utf-8' });
@@ -178,6 +131,9 @@ export function worktreesCommand() {
178
131
  plan: plan?.name ?? registered?.planName ?? null,
179
132
  };
180
133
  });
134
+ if (opts.filter) {
135
+ enriched = enriched.filter((e) => e.plan && e.plan.toLowerCase().includes(opts.filter.toLowerCase()));
136
+ }
181
137
  if (opts.json) {
182
138
  console.log(JSON.stringify(enriched, null, 2));
183
139
  }
@@ -196,7 +152,6 @@ export function worktreesCommand() {
196
152
  .action((opts) => {
197
153
  const configPath = getConfigPath(opts.registry);
198
154
  const config = readConfig(configPath);
199
- // Auto-detect plan if not given
200
155
  let planName = opts.plan;
201
156
  if (!planName) {
202
157
  const sorted = [...config.activePlans].sort((a, b) => new Date(b.lastUpdated).getTime() - new Date(a.lastUpdated).getTime());
@@ -207,30 +162,25 @@ export function worktreesCommand() {
207
162
  planName = sorted[0].name;
208
163
  console.log(`Auto-detected plan: ${planName}`);
209
164
  }
210
- // Verify plan.md exists
211
165
  const planDir = path.join('.codevoyant', 'plans', planName);
212
166
  const planMd = path.join(planDir, 'plan.md');
213
167
  if (!fs.existsSync(planMd)) {
214
168
  console.error(`Plan file not found: ${planMd}`);
215
169
  process.exit(1);
216
170
  }
217
- // Resolve main repo root
218
- const gitCommonDir = git(['rev-parse', '--git-common-dir']);
171
+ const gitCommonDir = gitExec(['rev-parse', '--git-common-dir']);
219
172
  const mainRoot = path.resolve(path.dirname(gitCommonDir));
220
173
  const currentRoot = path.resolve('.');
221
174
  if (mainRoot === currentRoot) {
222
175
  console.error('Already in main repo');
223
176
  process.exit(1);
224
177
  }
225
- // Check destination
226
178
  const destDir = path.join(mainRoot, '.codevoyant', 'plans', planName);
227
179
  if (fs.existsSync(destDir) && !opts.force) {
228
180
  console.error(`Destination already exists: ${destDir}. Use --force to overwrite.`);
229
181
  process.exit(1);
230
182
  }
231
- // Copy plan directory
232
183
  fs.cpSync(planDir, destDir, { recursive: true, force: true });
233
- // Upsert plan entry in main repo config
234
184
  const mainConfigPath = path.join(mainRoot, '.codevoyant', 'codevoyant.json');
235
185
  const mainConfig = readConfig(mainConfigPath);
236
186
  const existingPlan = mainConfig.activePlans.find((p) => p.name === planName);
@@ -281,6 +231,116 @@ export function worktreesCommand() {
281
231
  writeConfig(configPath, config);
282
232
  console.log(`Unregistered worktree: ${opts.branch}`);
283
233
  });
234
+ wt.command('attach')
235
+ .description('Register a manually-created worktree')
236
+ .requiredOption('--path <path>', 'Path to existing worktree')
237
+ .requiredOption('--plan <plan>', 'Associated plan name')
238
+ .option('--registry <registryPath>', 'Path to codevoyant.json')
239
+ .action((opts) => {
240
+ const wtPath = path.resolve(opts.path);
241
+ if (!fs.existsSync(wtPath)) {
242
+ console.error(`Path does not exist: ${wtPath}`);
243
+ process.exit(1);
244
+ }
245
+ const gitPath = path.join(wtPath, '.git');
246
+ if (!fs.existsSync(gitPath)) {
247
+ console.error(`Not a git worktree: ${wtPath} (no .git found)`);
248
+ process.exit(1);
249
+ }
250
+ let branch;
251
+ try {
252
+ branch = gitExec(['rev-parse', '--abbrev-ref', 'HEAD'], wtPath);
253
+ }
254
+ catch {
255
+ console.error(`Cannot determine branch for worktree at: ${wtPath}`);
256
+ process.exit(1);
257
+ return;
258
+ }
259
+ const configPath = getConfigPath(opts.registryPath);
260
+ const config = readConfig(configPath);
261
+ if (config.worktrees.some((w) => w.path === wtPath)) {
262
+ console.error(`Worktree already registered: ${wtPath}`);
263
+ process.exit(1);
264
+ }
265
+ const entry = {
266
+ branch,
267
+ path: wtPath,
268
+ planName: opts.plan,
269
+ createdAt: new Date().toISOString(),
270
+ };
271
+ config.worktrees.push(entry);
272
+ writeConfig(configPath, config);
273
+ console.log(`Attached worktree: ${wtPath} (branch: ${branch}, plan: ${opts.plan})`);
274
+ });
275
+ wt.command('detect')
276
+ .description('Print current worktree context (repo, plan, branch)')
277
+ .action(() => {
278
+ const projectRoot = findProjectRoot();
279
+ const inWorktree = isInWorktree();
280
+ const repoName = getRepoName();
281
+ const plan = getCurrentPlan();
282
+ let branch = '';
283
+ try {
284
+ branch = gitExec(['rev-parse', '--abbrev-ref', 'HEAD']);
285
+ }
286
+ catch {
287
+ // not in a git repo
288
+ }
289
+ const info = {
290
+ projectRoot: projectRoot ?? null,
291
+ repoName,
292
+ branch: branch || null,
293
+ isWorktree: inWorktree,
294
+ plan: plan ?? null,
295
+ };
296
+ console.log(JSON.stringify(info, null, 2));
297
+ });
284
298
  return wt;
285
299
  }
300
+ /** Run a git command, throw on failure. */
301
+ function gitExec(args, cwd) {
302
+ const result = spawnSync('git', args, { encoding: 'utf-8', cwd });
303
+ if (result.status !== 0)
304
+ throw new Error(result.stderr?.trim() || `git ${args[0]} failed`);
305
+ return result.stdout?.trim() ?? '';
306
+ }
307
+ /** Parse `git worktree list --porcelain` output into structured entries. */
308
+ function parseWorktreeList(cwd) {
309
+ const output = gitExec(['worktree', 'list', '--porcelain'], cwd);
310
+ if (!output)
311
+ return [];
312
+ const entries = [];
313
+ let current = {};
314
+ for (const line of output.split('\n')) {
315
+ if (line === '') {
316
+ if (current.worktree)
317
+ entries.push(current);
318
+ current = {};
319
+ }
320
+ else if (line.startsWith('worktree ')) {
321
+ current.worktree = line.slice('worktree '.length);
322
+ }
323
+ else if (line.startsWith('HEAD ')) {
324
+ current.HEAD = line.slice('HEAD '.length);
325
+ }
326
+ else if (line.startsWith('branch ')) {
327
+ current.branch = line.slice('branch '.length).replace('refs/heads/', '');
328
+ }
329
+ else if (line === 'bare') {
330
+ current.bare = true;
331
+ }
332
+ }
333
+ if (current.worktree)
334
+ entries.push(current);
335
+ return entries;
336
+ }
337
+ /** Resolve the project root. Exits with code 1 if not in a git repo. */
338
+ function requireProjectRoot() {
339
+ const root = findProjectRoot();
340
+ if (!root) {
341
+ console.error('Not in a git repository');
342
+ process.exit(1);
343
+ }
344
+ return root;
345
+ }
286
346
  //# sourceMappingURL=worktrees.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"worktrees.js","sourceRoot":"","sources":["../../src/commands/worktrees.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"worktrees.js","sourceRoot":"","sources":["../../src/commands/worktrees.ts"],"names":[],"mappings":"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"}
package/dist/config.d.ts CHANGED
@@ -3,4 +3,5 @@ export declare function getConfigPath(registry?: string): string;
3
3
  export declare function readConfig(configPath: string): CodevoyantConfig;
4
4
  export declare function writeConfig(configPath: string, config: CodevoyantConfig): void;
5
5
  export declare function readSettings(dir?: string): CodevoyantSettings;
6
+ export declare function writeSettings(settings: CodevoyantSettings, dir?: string): void;
6
7
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAUvE,wBAAgB,aAAa,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED,wBAAgB,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,gBAAgB,CAG/D;AAED,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAK9E;AAED,wBAAgB,YAAY,CAAC,GAAG,SAAgB,GAAG,kBAAkB,CAIpE"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AASvE,wBAAgB,aAAa,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED,wBAAgB,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,gBAAgB,CAG/D;AAED,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAK9E;AAED,wBAAgB,YAAY,CAAC,GAAG,SAAgB,GAAG,kBAAkB,CAIpE;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,kBAAkB,EAAE,GAAG,SAAgB,GAAG,IAAI,CAMrF"}
package/dist/config.js CHANGED
@@ -5,7 +5,6 @@ const DEFAULT_CONFIG = {
5
5
  activePlans: [],
6
6
  archivedPlans: [],
7
7
  worktrees: [],
8
- style: [],
9
8
  };
10
9
  export function getConfigPath(registry) {
11
10
  return registry ?? path.join('.codevoyant', 'codevoyant.json');
@@ -27,4 +26,11 @@ export function readSettings(dir = '.codevoyant') {
27
26
  return {};
28
27
  return JSON.parse(fs.readFileSync(p, 'utf-8'));
29
28
  }
29
+ export function writeSettings(settings, dir = '.codevoyant') {
30
+ fs.mkdirSync(dir, { recursive: true });
31
+ const p = path.join(dir, 'settings.json');
32
+ const tmp = `${p}.tmp`;
33
+ fs.writeFileSync(tmp, JSON.stringify(settings, null, 2) + '\n');
34
+ fs.renameSync(tmp, p);
35
+ }
30
36
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAG7B,MAAM,cAAc,GAAqB;IACvC,OAAO,EAAE,KAAK;IACd,WAAW,EAAE,EAAE;IACf,aAAa,EAAE,EAAE;IACjB,SAAS,EAAE,EAAE;IACb,KAAK,EAAE,EAAE;CACV,CAAC;AAEF,MAAM,UAAU,aAAa,CAAC,QAAiB;IAC7C,OAAO,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,UAAkB;IAC3C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO,EAAE,GAAG,cAAc,EAAE,CAAC;IAC7D,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAqB,CAAC;AAC9E,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,UAAkB,EAAE,MAAwB;IACtE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5D,MAAM,GAAG,GAAG,GAAG,UAAU,MAAM,CAAC;IAChC,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAC9D,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,GAAG,GAAG,aAAa;IAC9C,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;IAC1C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;QAAE,OAAO,EAAE,CAAC;IACjC,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC,CAAuB,CAAC;AACvE,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAG7B,MAAM,cAAc,GAAqB;IACvC,OAAO,EAAE,KAAK;IACd,WAAW,EAAE,EAAE;IACf,aAAa,EAAE,EAAE;IACjB,SAAS,EAAE,EAAE;CACd,CAAC;AAEF,MAAM,UAAU,aAAa,CAAC,QAAiB;IAC7C,OAAO,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,UAAkB;IAC3C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO,EAAE,GAAG,cAAc,EAAE,CAAC;IAC7D,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAqB,CAAC;AAC9E,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,UAAkB,EAAE,MAAwB;IACtE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5D,MAAM,GAAG,GAAG,GAAG,UAAU,MAAM,CAAC;IAChC,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAC9D,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,GAAG,GAAG,aAAa;IAC9C,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;IAC1C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;QAAE,OAAO,EAAE,CAAC;IACjC,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC,CAAuB,CAAC;AACvE,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,QAA4B,EAAE,GAAG,GAAG,aAAa;IAC7E,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACvC,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;IAC1C,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC;IACvB,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAChE,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AACxB,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
- export { readConfig, writeConfig, getConfigPath, readSettings } from './config.js';
2
- export type { CodevoyantConfig, CodevoyantSettings, PlanEntry, WorktreeEntry, StyleContext } from './types.js';
1
+ export { readConfig, writeConfig, getConfigPath, readSettings, writeSettings } from './config.js';
2
+ export type { CodevoyantConfig, CodevoyantSettings, PlanEntry, WorktreeEntry, TaskRunnerInfo } from './types.js';
3
+ export { findProjectRoot, isInWorktree, getRepoName, getCurrentPlan, getWorktreeBasePath, getWorktreePath, } from './project.js';
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACnF,YAAY,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAClG,YAAY,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,SAAS,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjH,OAAO,EACL,eAAe,EACf,YAAY,EACZ,WAAW,EACX,cAAc,EACd,mBAAmB,EACnB,eAAe,GAChB,MAAM,cAAc,CAAC"}
package/dist/index.js CHANGED
@@ -1,2 +1,3 @@
1
- export { readConfig, writeConfig, getConfigPath, readSettings } from './config.js';
1
+ export { readConfig, writeConfig, getConfigPath, readSettings, writeSettings } from './config.js';
2
+ export { findProjectRoot, isInWorktree, getRepoName, getCurrentPlan, getWorktreeBasePath, getWorktreePath, } from './project.js';
2
3
  //# 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,UAAU,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAElG,OAAO,EACL,eAAe,EACf,YAAY,EACZ,WAAW,EACX,cAAc,EACd,mBAAmB,EACnB,eAAe,GAChB,MAAM,cAAc,CAAC"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Walk up from the given directory (default cwd) to find a .git directory or file.
3
+ * Returns the project root path, or null if not found.
4
+ */
5
+ export declare function findProjectRoot(startDir?: string): string | null;
6
+ /**
7
+ * Returns true if the current working directory (or startDir) is inside a git worktree
8
+ * (not the main working tree). In a worktree, .git is a file (not a directory)
9
+ * containing a "gitdir:" pointer.
10
+ */
11
+ export declare function isInWorktree(startDir?: string): boolean;
12
+ /**
13
+ * Returns the repo name from git remote URL, or falls back to the basename
14
+ * of the project root directory.
15
+ *
16
+ * Examples:
17
+ * git@github.com:owner/repo.git -> "repo"
18
+ * https://github.com/owner/repo.git -> "repo"
19
+ * https://github.com/owner/repo -> "repo"
20
+ * (no remote) -> basename of project root
21
+ */
22
+ export declare function getRepoName(cwd?: string): string;
23
+ /**
24
+ * Returns the plan name associated with the current worktree, if any.
25
+ * Looks up the worktree path in .codevoyant/settings.json worktreeMap.
26
+ */
27
+ export declare function getCurrentPlan(cwd?: string): string | null;
28
+ /**
29
+ * Returns the global worktree base path for the current repo.
30
+ * Path convention: ~/codevoyant/[repo-name]/worktrees/
31
+ */
32
+ export declare function getWorktreeBasePath(repoName?: string, cwd?: string): string;
33
+ /**
34
+ * Returns the full worktree path for a given plan name.
35
+ * Path convention: ~/codevoyant/[repo-name]/worktrees/[plan-name]
36
+ */
37
+ export declare function getWorktreePath(planName: string, repoName?: string, cwd?: string): string;
38
+ //# sourceMappingURL=project.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../src/project.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,wBAAgB,eAAe,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAYhE;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAYvD;AAED;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CA4BhD;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA8B1D;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAG3E;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAEzF"}
@@ -0,0 +1,126 @@
1
+ import { spawnSync } from 'child_process';
2
+ import * as fs from 'fs';
3
+ import * as path from 'path';
4
+ import * as os from 'os';
5
+ /**
6
+ * Walk up from the given directory (default cwd) to find a .git directory or file.
7
+ * Returns the project root path, or null if not found.
8
+ */
9
+ export function findProjectRoot(startDir) {
10
+ let dir = path.resolve(startDir ?? process.cwd());
11
+ const root = path.parse(dir).root;
12
+ while (dir !== root) {
13
+ const gitPath = path.join(dir, '.git');
14
+ if (fs.existsSync(gitPath)) {
15
+ return dir;
16
+ }
17
+ dir = path.dirname(dir);
18
+ }
19
+ return null;
20
+ }
21
+ /**
22
+ * Returns true if the current working directory (or startDir) is inside a git worktree
23
+ * (not the main working tree). In a worktree, .git is a file (not a directory)
24
+ * containing a "gitdir:" pointer.
25
+ */
26
+ export function isInWorktree(startDir) {
27
+ const projectRoot = findProjectRoot(startDir);
28
+ if (!projectRoot)
29
+ return false;
30
+ const gitPath = path.join(projectRoot, '.git');
31
+ try {
32
+ const stat = fs.statSync(gitPath);
33
+ // In a worktree, .git is a file; in the main tree, it's a directory
34
+ return stat.isFile();
35
+ }
36
+ catch {
37
+ return false;
38
+ }
39
+ }
40
+ /**
41
+ * Returns the repo name from git remote URL, or falls back to the basename
42
+ * of the project root directory.
43
+ *
44
+ * Examples:
45
+ * git@github.com:owner/repo.git -> "repo"
46
+ * https://github.com/owner/repo.git -> "repo"
47
+ * https://github.com/owner/repo -> "repo"
48
+ * (no remote) -> basename of project root
49
+ */
50
+ export function getRepoName(cwd) {
51
+ const effectiveCwd = cwd ?? process.cwd();
52
+ try {
53
+ const result = spawnSync('git', ['remote', 'get-url', 'origin'], {
54
+ encoding: 'utf-8',
55
+ cwd: effectiveCwd,
56
+ });
57
+ if (result.status === 0 && result.stdout?.trim()) {
58
+ const url = result.stdout.trim();
59
+ // Handle SSH: git@github.com:owner/repo.git
60
+ // Handle HTTPS: https://github.com/owner/repo.git
61
+ const name = url
62
+ .replace(/\.git$/, '')
63
+ .split('/')
64
+ .pop()
65
+ ?.split(':')
66
+ .pop();
67
+ if (name)
68
+ return name;
69
+ }
70
+ }
71
+ catch {
72
+ // Fall through to directory name fallback
73
+ }
74
+ // Fallback: basename of project root or cwd
75
+ const projectRoot = findProjectRoot(effectiveCwd);
76
+ return path.basename(projectRoot ?? effectiveCwd);
77
+ }
78
+ /**
79
+ * Returns the plan name associated with the current worktree, if any.
80
+ * Looks up the worktree path in .codevoyant/settings.json worktreeMap.
81
+ */
82
+ export function getCurrentPlan(cwd) {
83
+ const effectiveCwd = path.resolve(cwd ?? process.cwd());
84
+ const projectRoot = findProjectRoot(effectiveCwd);
85
+ if (!projectRoot)
86
+ return null;
87
+ // Try to find the main repo root (via git common dir)
88
+ try {
89
+ const result = spawnSync('git', ['rev-parse', '--git-common-dir'], {
90
+ encoding: 'utf-8',
91
+ cwd: effectiveCwd,
92
+ });
93
+ if (result.status === 0 && result.stdout?.trim()) {
94
+ const commonDir = path.resolve(effectiveCwd, result.stdout.trim());
95
+ const mainRoot = path.dirname(commonDir);
96
+ const settingsPath = path.join(mainRoot, '.codevoyant', 'settings.json');
97
+ if (fs.existsSync(settingsPath)) {
98
+ const settings = JSON.parse(fs.readFileSync(settingsPath, 'utf-8'));
99
+ const worktreeMap = settings.worktreeMap;
100
+ if (worktreeMap) {
101
+ return worktreeMap[effectiveCwd] ?? null;
102
+ }
103
+ }
104
+ }
105
+ }
106
+ catch {
107
+ // ignore
108
+ }
109
+ return null;
110
+ }
111
+ /**
112
+ * Returns the global worktree base path for the current repo.
113
+ * Path convention: ~/codevoyant/[repo-name]/worktrees/
114
+ */
115
+ export function getWorktreeBasePath(repoName, cwd) {
116
+ const name = repoName ?? getRepoName(cwd);
117
+ return path.join(os.homedir(), 'codevoyant', name, 'worktrees');
118
+ }
119
+ /**
120
+ * Returns the full worktree path for a given plan name.
121
+ * Path convention: ~/codevoyant/[repo-name]/worktrees/[plan-name]
122
+ */
123
+ export function getWorktreePath(planName, repoName, cwd) {
124
+ return path.join(getWorktreeBasePath(repoName, cwd), planName);
125
+ }
126
+ //# sourceMappingURL=project.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project.js","sourceRoot":"","sources":["../src/project.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -19,22 +19,22 @@ export interface WorktreeEntry {
19
19
  planName: string | null;
20
20
  createdAt: string;
21
21
  }
22
- export interface StyleContext {
23
- name: string;
24
- description: string;
25
- learnedAt: string;
26
- examples: string[];
27
- }
28
22
  export interface CodevoyantConfig {
29
23
  version: string;
30
24
  activePlans: PlanEntry[];
31
25
  archivedPlans: PlanEntry[];
32
26
  worktrees: WorktreeEntry[];
33
- style: StyleContext[];
27
+ }
28
+ export interface TaskRunnerInfo {
29
+ runner: string;
30
+ command: string;
31
+ configFile: string;
32
+ detectedAt: string;
34
33
  }
35
34
  export interface CodevoyantSettings {
36
35
  notifications?: boolean;
37
36
  defaultPlugin?: string;
37
+ taskRunner?: TaskRunnerInfo;
38
38
  [key: string]: unknown;
39
39
  }
40
40
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,QAAQ,GAAG,WAAW,GAAG,QAAQ,GAAG,UAAU,GAAG,WAAW,CAAC;IACrE,QAAQ,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,SAAS,EAAE,CAAC;IACzB,aAAa,EAAE,SAAS,EAAE,CAAC;IAC3B,SAAS,EAAE,aAAa,EAAE,CAAC;IAC3B,KAAK,EAAE,YAAY,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,kBAAkB;IACjC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,QAAQ,GAAG,WAAW,GAAG,QAAQ,GAAG,UAAU,GAAG,WAAW,CAAC;IACrE,QAAQ,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,SAAS,EAAE,CAAC;IACzB,aAAa,EAAE,SAAS,EAAE,CAAC;IAC3B,SAAS,EAAE,aAAa,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codevoyant/agent-kit",
3
- "version": "1.24.1",
3
+ "version": "1.25.0",
4
4
  "description": "CLI and shared library for codevoyant agents and tools",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -36,12 +36,10 @@
36
36
  ],
37
37
  "license": "MIT",
38
38
  "dependencies": {
39
- "commander": "^12.0.0",
40
- "node-notifier": "^10.0.0"
39
+ "commander": "^12.0.0"
41
40
  },
42
41
  "devDependencies": {
43
42
  "@types/node": "^22.0.0",
44
- "@types/node-notifier": "^8.0.0",
45
43
  "typescript": "^5.0.0",
46
44
  "vitest": "^2.0.0"
47
45
  }