@jaggerxtrm/specialists 2.1.18 → 2.1.20

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/index.js CHANGED
@@ -18218,17 +18218,18 @@ async function run3() {
18218
18218
  return;
18219
18219
  }
18220
18220
  const nameWidth = Math.max(...specialists.map((s) => s.name.length), 4);
18221
- const modelWidth = Math.max(...specialists.map((s) => s.model.length), 5);
18222
18221
  console.log(`
18223
18222
  ${bold(`Specialists (${specialists.length})`)}
18224
18223
  `);
18225
18224
  for (const s of specialists) {
18226
18225
  const name = cyan(s.name.padEnd(nameWidth));
18227
- const model = dim(s.model.padEnd(modelWidth));
18228
18226
  const scopeTag = yellow(`[${s.scope}]`);
18229
- console.log(` ${name} ${model} ${s.description} ${scopeTag}`);
18227
+ const model = dim(s.model);
18228
+ const desc = s.description.length > 80 ? s.description.slice(0, 79) + "…" : s.description;
18229
+ console.log(` ${name} ${scopeTag} ${model}`);
18230
+ console.log(` ${" ".repeat(nameWidth)} ${dim(desc)}`);
18231
+ console.log();
18230
18232
  }
18231
- console.log();
18232
18233
  }
18233
18234
  var dim = (s) => `\x1B[2m${s}\x1B[0m`, bold = (s) => `\x1B[1m${s}\x1B[0m`, cyan = (s) => `\x1B[36m${s}\x1B[0m`, yellow = (s) => `\x1B[33m${s}\x1B[0m`, ArgParseError;
18234
18235
  var init_list = __esm(() => {
@@ -26421,7 +26422,7 @@ async function run9() {
26421
26422
  const { run: handler } = await Promise.resolve().then(() => (init_install(), exports_install));
26422
26423
  return handler();
26423
26424
  }
26424
- if (sub === "version") {
26425
+ if (sub === "version" || sub === "--version" || sub === "-v") {
26425
26426
  const { run: handler } = await Promise.resolve().then(() => (init_version(), exports_version));
26426
26427
  return handler();
26427
26428
  }
@@ -26449,6 +26450,11 @@ async function run9() {
26449
26450
  const { run: handler } = await Promise.resolve().then(() => (init_help(), exports_help));
26450
26451
  return handler();
26451
26452
  }
26453
+ if (sub) {
26454
+ console.error(`Unknown command: '${sub}'
26455
+ Run 'specialists help' to see available commands.`);
26456
+ process.exit(1);
26457
+ }
26452
26458
  logger.info("Starting Specialists MCP Server...");
26453
26459
  const server = new SpecialistsServer;
26454
26460
  await server.start();
@@ -46,9 +46,25 @@ if (WRITE_TOOLS.has(tool)) {
46
46
  process.exit(2);
47
47
  }
48
48
 
49
- // Block direct pushes to master — agents must use feature branches + gh pr create/merge
49
+ // Block direct commits and pushes to master — use feature branches + gh pr create/merge
50
50
  if (tool === 'Bash') {
51
51
  const cmd = (input.tool_input?.command ?? '').trim().replace(/\s+/g, ' ');
52
+
53
+ if (/^git commit/.test(cmd)) {
54
+ process.stderr.write(
55
+ `⛔ Don't commit directly to '${branch}' — use a feature branch.\n\n` +
56
+ 'Full workflow:\n' +
57
+ ' 1. git checkout -b feature/<name> ← start here\n' +
58
+ ' 2. bd create + bd update in_progress track your work\n' +
59
+ ' 3. Edit files / write code\n' +
60
+ ' 4. bd close <id> && git add && git commit\n' +
61
+ ' 5. git push -u origin feature/<name>\n' +
62
+ ' 6. gh pr create --fill && gh pr merge --squash\n' +
63
+ ' 7. git checkout master && git reset --hard origin/master\n'
64
+ );
65
+ process.exit(2);
66
+ }
67
+
52
68
  if (/^git push/.test(cmd)) {
53
69
  const tokens = cmd.split(' ');
54
70
  const lastToken = tokens[tokens.length - 1];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jaggerxtrm/specialists",
3
- "version": "2.1.18",
3
+ "version": "2.1.20",
4
4
  "description": "OmniSpecialist — 7-tool MCP orchestration layer powered by the Specialist System. Discover and execute .specialist.yaml files across project/user/system scopes via pi.",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",