multiclaw 0.6.2 → 0.6.3

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
@@ -9,6 +9,7 @@ import { Command } from "commander";
9
9
  // src/commands/doctor.ts
10
10
  import {
11
11
  detectProviders,
12
+ hasExplicitTools,
12
13
  presentProviders,
13
14
  resolveCommand,
14
15
  resolveProvider,
@@ -113,13 +114,13 @@ function buildDoctorReport(detected, config) {
113
114
  const defaultsProvider = config.defaults?.provider;
114
115
  const defaultsProviderOk = !defaultsProvider || present.includes(defaultsProvider);
115
116
  const agents2 = [...config.agents];
116
- if (config.leader) agents2.push(config.leader);
117
+ if (config.leader && config.useLeader !== false) agents2.push(config.leader);
117
118
  const agentsWithMissingProvider = agents2.map((a) => ({ id: a.id, intended: resolveProvider(a, config) })).filter((a) => !present.includes(a.intended)).map((a) => a.id);
118
119
  const agentsWithUnsupportedTools = agents2.map((a) => {
119
120
  const command = resolveCommand(a, config);
120
121
  const spec = specForCommand(command) ?? specForProvider(resolveProvider(a, config));
121
- return { id: a.id, spec, tools: a.tools };
122
- }).filter((a) => a.spec && !a.spec.tools && a.tools !== void 0).map((a) => a.id);
122
+ return { id: a.id, spec, explicitTools: hasExplicitTools(a) };
123
+ }).filter((a) => a.spec && !a.spec.tools && a.explicitTools).map((a) => a.id);
123
124
  configReport = {
124
125
  name: config.name,
125
126
  defaultsProvider,
@@ -478,14 +479,17 @@ import {
478
479
  // src/lib.ts
479
480
  import {
480
481
  detectProviders as detectProviders3,
482
+ hasExplicitTools as hasExplicitTools2,
481
483
  presentProviders as presentProviders2,
482
484
  resolveCommand as resolveCommand2,
483
- runtimeRegistry
485
+ runtimeRegistry,
486
+ validateToolsPolicy
484
487
  } from "@multiclawcli/core";
485
488
  import { agents, defineConfig } from "@multiclawcli/core";
486
489
  async function assertRuntimesAvailable(config) {
487
490
  const checked = /* @__PURE__ */ new Set();
488
- for (const agent of config.agents) {
491
+ const agents2 = config.leader && config.useLeader !== false && hasExplicitTools2(config.leader) ? [config.leader, ...config.agents] : config.agents;
492
+ for (const agent of agents2) {
489
493
  const name = agent.runtime ?? "acp";
490
494
  if (!runtimeRegistry.has(name)) {
491
495
  const supported = runtimeRegistry.list().join(", ");
@@ -505,6 +509,12 @@ async function assertRuntimesAvailable(config) {
505
509
  process.exit(1);
506
510
  }
507
511
  }
512
+ try {
513
+ await validateToolsPolicy(config);
514
+ } catch (error) {
515
+ console.error(`\x1B[31mError: ${error instanceof Error ? error.message : String(error)}\x1B[0m`);
516
+ process.exit(1);
517
+ }
508
518
  }
509
519
 
510
520
  // src/reporters/ConsoleReporter.ts
package/dist/lib.js CHANGED
@@ -1,14 +1,17 @@
1
1
  // src/lib.ts
2
2
  import {
3
3
  detectProviders,
4
+ hasExplicitTools,
4
5
  presentProviders,
5
6
  resolveCommand,
6
- runtimeRegistry
7
+ runtimeRegistry,
8
+ validateToolsPolicy
7
9
  } from "@multiclawcli/core";
8
10
  import { agents, defineConfig } from "@multiclawcli/core";
9
11
  async function assertRuntimesAvailable(config) {
10
12
  const checked = /* @__PURE__ */ new Set();
11
- for (const agent of config.agents) {
13
+ const agents2 = config.leader && config.useLeader !== false && hasExplicitTools(config.leader) ? [config.leader, ...config.agents] : config.agents;
14
+ for (const agent of agents2) {
12
15
  const name = agent.runtime ?? "acp";
13
16
  if (!runtimeRegistry.has(name)) {
14
17
  const supported = runtimeRegistry.list().join(", ");
@@ -28,6 +31,12 @@ async function assertRuntimesAvailable(config) {
28
31
  process.exit(1);
29
32
  }
30
33
  }
34
+ try {
35
+ await validateToolsPolicy(config);
36
+ } catch (error) {
37
+ console.error(`\x1B[31mError: ${error instanceof Error ? error.message : String(error)}\x1B[0m`);
38
+ process.exit(1);
39
+ }
31
40
  }
32
41
  async function availableRuntimes() {
33
42
  const detected = await detectProviders();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "multiclaw",
3
- "version": "0.6.2",
3
+ "version": "0.6.3",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "multiclaw": "dist/index.js"
@@ -30,8 +30,8 @@
30
30
  "@agentclientprotocol/claude-agent-acp": "^0.95.0",
31
31
  "@agentclientprotocol/codex-acp": "^2.2.2",
32
32
  "@inquirer/prompts": "^8.7.4",
33
- "@multiclawcli/core": "0.6.2",
34
- "@multiclawcli/dashboard": "0.6.2",
33
+ "@multiclawcli/core": "0.6.3",
34
+ "@multiclawcli/dashboard": "0.6.3",
35
35
  "commander": "^15.0.0",
36
36
  "jiti": "^2.7.0"
37
37
  },