@tablation/crew 0.31.0 → 0.32.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.
Files changed (2) hide show
  1. package/dist/cli.js +17 -6
  2. package/package.json +1 -1
package/dist/cli.js CHANGED
@@ -385,7 +385,7 @@ var claudeAdapter = {
385
385
  })] : [],
386
386
  ...spec.args
387
387
  ];
388
- return spec.launcher ? { bin: spec.launcher, args: [spec.bin, ...args] } : { bin: spec.bin, args };
388
+ return spec.launcher ? { bin: spec.launcherBin ?? spec.launcher, args: [spec.bin, ...args] } : { bin: spec.bin, args };
389
389
  },
390
390
  runEnv(spec) {
391
391
  return {
@@ -730,9 +730,15 @@ function resolveToolchain(ship, route) {
730
730
  return found;
731
731
  }
732
732
  function toolchainVendor(spec) {
733
- if (spec.launcher && basename(spec.launcher) === "ori") return "openrouter";
733
+ if (isOriLauncher(spec)) return "openrouter";
734
734
  return adapterFor(spec.harness).vendor;
735
735
  }
736
+ function isOriLauncher(spec) {
737
+ return !!spec.launcher && basename(spec.launcher) === "ori";
738
+ }
739
+ function toolchainProvider(spec) {
740
+ return isOriLauncher(spec) ? "openrouter" : adapterFor(spec.harness).provider(spec);
741
+ }
736
742
  function resolveSeat(ship, route, role, persona = {}) {
737
743
  const warnings = [];
738
744
  const base = resolveToolchain(ship, route);
@@ -1774,7 +1780,7 @@ Create the first of those:
1774
1780
  function expandCommand(cmd, base) {
1775
1781
  return cmd.includes("/") || cmd.startsWith("~") ? expand(cmd, base) : cmd;
1776
1782
  }
1777
- var TOOLCHAIN_KEYS = /* @__PURE__ */ new Set(["harness", "bin", "launcher", "model", "tiers", "args", "env", "maxThinkingTokens"]);
1783
+ var TOOLCHAIN_KEYS = /* @__PURE__ */ new Set(["harness", "bin", "launcher", "launcherBin", "model", "tiers", "args", "env", "maxThinkingTokens"]);
1778
1784
  function parsePair(raw, missing) {
1779
1785
  if (raw === void 0) return void 0;
1780
1786
  if (!Array.isArray(raw)) {
@@ -1836,6 +1842,7 @@ function parseToolchains(raw, base, missing, file) {
1836
1842
  harness,
1837
1843
  bin: expandCommand(String(entryRaw.bin ?? adapter.defaultBin), base),
1838
1844
  ...entryRaw.launcher ? { launcher: expandCommand(String(entryRaw.launcher), base) } : {},
1845
+ ...entryRaw.launcher && entryRaw.launcherBin ? { launcherBin: expandCommand(String(entryRaw.launcherBin), base) } : {},
1839
1846
  model: String(entryRaw.model ?? tiers.standard?.model ?? adapter.defaultModel),
1840
1847
  tiers,
1841
1848
  args: Array.isArray(args) ? args.map(String) : [],
@@ -6627,7 +6634,7 @@ function planAgentRun(o) {
6627
6634
  args: invocation.args,
6628
6635
  toolchain: toolchain.name,
6629
6636
  harness: toolchain.harness,
6630
- provider: adapter.provider(toolchain),
6637
+ provider: toolchainProvider(toolchain),
6631
6638
  resolution: { toolchain: seat.toolchainWhy, model: seat.modelWhy },
6632
6639
  warnings: seat.warnings,
6633
6640
  prompt,
@@ -14189,15 +14196,19 @@ crew manifest: ${seats2.length ? seats2.map((c) => c.name).join(", ") : "non
14189
14196
  let allBinsFound = true;
14190
14197
  for (const tc of shipToolchains(cfg.ship)) {
14191
14198
  const adapter = adapterFor(tc.harness);
14192
- const binPath = findOnPath(tc.launcher ?? tc.bin, schedulerPath);
14199
+ const binPath = findOnPath(tc.launcherBin ?? tc.launcher ?? tc.bin, schedulerPath);
14193
14200
  if (!binPath) allBinsFound = false;
14194
14201
  const label = tc.name === defaultToolchain ? "agent binary: " : `toolchain ${tc.name}:`.padEnd(18);
14195
14202
  process.stdout.write(
14196
- `${label} ${tc.launcher ?? tc.bin} \u2014 ${binPath ? `OK (${binPath})` : "NOT FOUND on the scheduler PATH"}${tc.name === defaultToolchain ? "" : ` [${adapter.displayName}]`}
14203
+ `${label} ${tc.launcherBin ?? tc.launcher ?? tc.bin} \u2014 ${binPath ? `OK (${binPath})` : "NOT FOUND on the scheduler PATH"}${tc.name === defaultToolchain ? "" : ` [${adapter.displayName}]`}
14197
14204
  `
14198
14205
  );
14199
14206
  for (const limit of adapter.limitations) process.stdout.write(` cannot enforce: ${limit}
14200
14207
  `);
14208
+ if (isOriLauncher(tc)) {
14209
+ process.stdout.write(` ori: headless auth under the scheduler is unverified \u2014 run \`ori login\` as the scheduler user, then confirm a run records provider openrouter (see docs/toolchains.md)
14210
+ `);
14211
+ }
14201
14212
  }
14202
14213
  process.stdout.write(`git: ${gitPath ? `OK (${gitPath})` : "NOT FOUND on the scheduler PATH"}
14203
14214
  `);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tablation/crew",
3
- "version": "0.31.0",
3
+ "version": "0.32.0",
4
4
  "description": "A standing team of headless agents that picks work off a Tablation board, does it on a machine you control, and reports back.",
5
5
  "type": "module",
6
6
  "license": "MIT",