@jaggerxtrm/specialists 2.1.1 → 2.1.2

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.
Files changed (3) hide show
  1. package/README.md +10 -3
  2. package/dist/index.js +15 -4
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -86,15 +86,22 @@ The orchestrating agent can retrieve the `beadId` from `poll_specialist` output
86
86
 
87
87
  ## Installation
88
88
 
89
- ### One-line installer (recommended)
89
+ ### Recommended
90
90
 
91
91
  ```bash
92
- npx --package=@jaggerxtrm/specialists install
92
+ npm install -g @jaggerxtrm/specialists
93
+ specialists install
93
94
  ```
94
95
 
95
96
  Installs: **pi** (`@mariozechner/pi-coding-agent`), **beads** (`@beads/bd`), **dolt** (interactive sudo on Linux / brew on macOS), registers the `specialists` MCP at user scope, scaffolds `~/.agents/specialists/`.
96
97
 
97
- After running, **restart Claude Code** to load the MCP.
98
+ After running, **restart Claude Code** to load the MCP. Re-run `specialists install` at any time to update or repair the installation.
99
+
100
+ ### One-time (no global install)
101
+
102
+ ```bash
103
+ npx --package=@jaggerxtrm/specialists install
104
+ ```
98
105
 
99
106
  ---
100
107
 
package/dist/index.js CHANGED
@@ -13393,6 +13393,11 @@ var require_public_api = __commonJS((exports) => {
13393
13393
  exports.stringify = stringify;
13394
13394
  });
13395
13395
 
13396
+ // src/index.ts
13397
+ import { execFileSync } from "node:child_process";
13398
+ import { fileURLToPath } from "node:url";
13399
+ import { dirname as dirname2, join as join4 } from "node:path";
13400
+
13396
13401
  // node_modules/zod/v3/external.js
13397
13402
  var exports_external = {};
13398
13403
  __export(exports_external, {
@@ -25396,7 +25401,7 @@ var useSpecialistSchema = exports_external.object({
25396
25401
  function createUseSpecialistTool(runner) {
25397
25402
  return {
25398
25403
  name: "use_specialist",
25399
- description: "Execute a specialist. Full lifecycle: load → agents.md → pi → validate output.",
25404
+ description: "Run a specialist synchronously and wait for the result. " + "Full lifecycle: load → agents.md → pi session output. " + "Response includes output, model, durationMs, and beadId (string | undefined). " + "beadId is set when the specialist's beads_integration policy triggered bead creation " + "(default: auto — creates for LOW/MEDIUM/HIGH permission, skips for READ_ONLY). " + "If beadId is present, use `bd update <beadId> --notes` to attach findings or " + "`bd remember` to persist key discoveries for future sessions.",
25400
25405
  inputSchema: useSpecialistSchema,
25401
25406
  async execute(input, onProgress) {
25402
25407
  return runner.run({
@@ -25637,7 +25642,7 @@ var startSpecialistSchema = exports_external.object({
25637
25642
  function createStartSpecialistTool(runner, registry2) {
25638
25643
  return {
25639
25644
  name: "start_specialist",
25640
- description: "Start a specialist asynchronously. Returns job_id immediately use poll_specialist to track progress and get output. Enables true parallel execution of multiple specialists.",
25645
+ description: "Start a specialist asynchronously. Returns job_id immediately. " + "Use poll_specialist to track progress, receive output delta, and retrieve beadId " + "(the beads issue auto-created for this run, if beads_integration policy applies). " + "Use stop_specialist to cancel. Enables true parallel execution of multiple specialists.",
25641
25646
  inputSchema: startSpecialistSchema,
25642
25647
  async execute(input) {
25643
25648
  const jobId = await runner.startAsync({
@@ -25659,7 +25664,7 @@ var pollSpecialistSchema = exports_external.object({
25659
25664
  function createPollSpecialistTool(registry2) {
25660
25665
  return {
25661
25666
  name: "poll_specialist",
25662
- description: "Poll a running specialist job. Returns status (running|done|error), delta (new content since cursor), next_cursor, and full output only when done. Pass next_cursor from each response as cursor on the next poll to receive only new tokens.",
25667
+ description: "Poll a running specialist job. Returns status (running|done|error|cancelled), " + "delta (new tokens since cursor), next_cursor, and full output when done. " + "Pass next_cursor back as cursor on each subsequent poll to receive only new content. " + "Response also includes beadId (string | undefined) once the specialist has started — " + "this is the beads issue tracking this run. If present after status=done, consider: " + '`bd update <beadId> --notes "<key finding>"` to attach results, or ' + '`bd remember "<insight>"` to persist discoveries across sessions.',
25663
25668
  inputSchema: pollSpecialistSchema,
25664
25669
  async execute(input) {
25665
25670
  const snapshot = registry2.snapshot(input.job_id, input.cursor ?? 0);
@@ -25703,7 +25708,7 @@ function createSpecialistInitTool(loader, deps) {
25703
25708
  };
25704
25709
  return {
25705
25710
  name: "specialist_init",
25706
- description: "Session bootstrap: initializes beads in the project if not already set up, " + "then returns available specialists. Call at session start for orientation.",
25711
+ description: "Call this first at session start. Returns available specialists and initializes beads " + "tracking (runs `bd init` if not already set up). " + "Response includes: specialists[] (use with use_specialist/start_specialist), " + "beads.available (bool), beads.initialized (bool). " + "If beads.available is true, specialists with permission LOW/MEDIUM/HIGH will auto-create " + "a beads issue when they run — no action needed from you.",
25707
25712
  inputSchema: specialistInitSchema,
25708
25713
  async execute(_input) {
25709
25714
  const available = resolved.bdAvailable();
@@ -25823,6 +25828,12 @@ class SpecialistsServer {
25823
25828
  }
25824
25829
 
25825
25830
  // src/index.ts
25831
+ if (process.argv[2] === "install") {
25832
+ const __dirname2 = dirname2(fileURLToPath(import.meta.url));
25833
+ const installerPath = join4(__dirname2, "..", "bin", "install.js");
25834
+ execFileSync(process.execPath, [installerPath], { stdio: "inherit" });
25835
+ process.exit(0);
25836
+ }
25826
25837
  async function main() {
25827
25838
  logger.info("Starting Specialists MCP Server...");
25828
25839
  const server = new SpecialistsServer;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jaggerxtrm/specialists",
3
- "version": "2.1.1",
3
+ "version": "2.1.2",
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",