shellmates 0.1.4 → 0.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/bin/shellmates.js CHANGED
@@ -25,17 +25,17 @@ if (isWelcome) {
25
25
  ` ${chalk.bold(name.padEnd(16))}${chalk.dim(desc)}`
26
26
 
27
27
  console.log(chalk.dim(' COMMANDS'))
28
+ console.log(cmd('spawn', 'Start a session — Claude asks what you want to work on'))
28
29
  console.log(cmd('init', 'First-time setup — create config and directories'))
29
30
  console.log(cmd('config', 'Configure agents, orchestrator, and permission mode'))
30
- console.log(cmd('spawn', 'Dispatch a task to a worker agent in a new tmux session'))
31
31
  console.log(cmd('status', 'Show active sessions and inbox results'))
32
32
  console.log(cmd('install-hook', 'Wire up native Claude Code AGENT_PING notifications'))
33
33
  console.log(cmd('teardown', 'Kill shellmates tmux sessions'))
34
34
  console.log(cmd('update', 'Update shellmates to the latest version'))
35
35
  console.log('')
36
36
  console.log(chalk.dim(' EXAMPLES'))
37
- console.log(` ${chalk.dim('shellmates spawn --task "Add dark mode" --agent gemini')}`)
38
- console.log(` ${chalk.dim('shellmates spawn --task-file plan.md --watch')}`)
37
+ console.log(` ${chalk.dim('shellmates spawn')} ${chalk.dim('# natural-language intake with Claude')}`)
38
+ console.log(` ${chalk.dim('shellmates spawn --task "Add dark mode"')} ${chalk.dim('# direct dispatch to default agent')}`)
39
39
  console.log(` ${chalk.dim('shellmates status')}`)
40
40
  console.log('')
41
41
  console.log(' ' + chalk.dim('shellmates <command> --help') + chalk.dim(' for command details.'))
@@ -86,15 +86,21 @@ program
86
86
  // ── shellmates spawn ─────────────────────────────────────────────────────────
87
87
  program
88
88
  .command('spawn')
89
- .description('Dispatch a task to a worker agent in a new tmux session')
90
- .option('-t, --task <text>', 'Inline task text to dispatch')
91
- .option('-f, --task-file <path>', 'Path to a file containing the task')
92
- .option('-a, --agent <name>', 'Override agent for this task (gemini|codex)')
93
- .option('-s, --session <name>', 'tmux session name (default: shellmates-<ts>)')
94
- .option('-p, --project <path>', 'Project directory for the worker (default: cwd)')
95
- .option('-w, --watch', 'Wait and print result when the agent finishes')
89
+ .description('Start a session Claude interviews you and dispatches agents, or pass --task for direct dispatch')
90
+ .option('-t, --task <text>', 'Direct task text (skips intake, dispatches immediately)')
91
+ .option('-f, --task-file <path>', 'Path to a task file (skips intake, dispatches immediately)')
92
+ .option('-a, --agent <name>', 'Override agent for direct dispatch (gemini|codex)')
93
+ .option('-s, --session <name>', 'tmux session name')
94
+ .option('-p, --project <path>', 'Project directory (default: cwd)')
95
+ .option('-w, --watch', 'Wait and print result when agent finishes')
96
96
  .option('--no-ping', 'Skip background inbox watcher')
97
97
  .action(async (opts) => {
98
+ // No task provided → open the orchestrator intake (pond mode)
99
+ if (!opts.task && !opts.taskFile) {
100
+ const { pond } = await import('../lib/commands/pond.js')
101
+ await pond({ session: opts.session, project: opts.project })
102
+ return
103
+ }
98
104
  const { spawn } = await import('../lib/commands/spawn.js')
99
105
  await spawn({
100
106
  task: opts.task,
@@ -107,6 +113,17 @@ program
107
113
  })
108
114
  })
109
115
 
116
+ // ── shellmates pond (alias for spawn with no task) ───────────────────────────
117
+ program
118
+ .command('pond')
119
+ .description('Start an orchestrator session — Claude asks what you want to work on')
120
+ .option('-s, --session <name>', 'tmux session name')
121
+ .option('-p, --project <path>', 'Project directory (default: cwd)')
122
+ .action(async (opts) => {
123
+ const { pond } = await import('../lib/commands/pond.js')
124
+ await pond({ session: opts.session, project: opts.project })
125
+ })
126
+
110
127
  // ── shellmates status ────────────────────────────────────────────────────────
111
128
  program
112
129
  .command('status')
@@ -1,6 +1,7 @@
1
1
  import chalk from 'chalk'
2
2
  import { existsSync, readFileSync, writeFileSync, mkdirSync, copyFileSync, chmodSync } from 'fs'
3
- import { join, dirname, fileURLToPath } from 'path'
3
+ import { join, dirname } from 'path'
4
+ import { fileURLToPath } from 'url'
4
5
  import { homedir } from 'os'
5
6
 
6
7
  const __dirname = dirname(fileURLToPath(import.meta.url))
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "shellmates",
3
- "version": "0.1.4",
3
+ "version": "0.1.6",
4
4
  "description": "Seamless tmux multi-agent orchestration for Claude, Gemini, and Codex",
5
5
  "keywords": [
6
6
  "tmux",