perstack 0.0.109 → 0.0.111

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/bin/cli.js CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  import { a as __toCommonJS, i as __require, n as __esmMin, o as __toESM, r as __exportAll, t as __commonJSMin } from "../chunk-D_gEzPfs.js";
3
- import { $ as lazy, A as runCommandInputSchema, At as PerstackError, B as resolveModelTier, C as runSettingSchema, Ct as safeParse$1, D as stopRunByDelegate, Dt as normalizeParams, E as startRun, Et as defineLazy, F as expertSchema, G as _instanceof, H as ZodIssueCode$1, I as isCoordinatorExpert, J as array$1, K as _null, L as validateDelegation, M as perstackConfigSchema, Mt as defaultPerstackApiBaseUrl, N as lockfileSchema, Nt as defaultTimeout, O as stopRunByError, Ot as $constructor, P as jobSchema, Pt as createId, Q as intersection, R as checkpointSchema, S as runParamsSchema, St as parseAsync, T as startGeneration, Tt as clone, U as ZodOptional$1, V as number$1, W as _enum, X as custom, Y as boolean, Z as discriminatedUnion, _ as parseExpertKey, _t as describe$1, a as validateEventFilter, at as optional, b as resumeFromStop, bt as $ZodType, c as createBaseToolActivity, ct as strictObject, d as completeRun, dt as union, et as literal, f as continueToNextStep, ft as unknown, g as finishToolCall, gt as toJSONSchema, h as finishMcpTools, ht as datetime, i as createFilteredEventListener, it as object$2, j as startCommandInputSchema, jt as defaultMaxRetries, k as stopRunByInteractiveTool, kt as NEVER, l as createGeneralToolActivity, lt as string, m as createStreamingEvent, mt as safeParseAsync$2, n as parseWithFriendlyError, nt as never, o as getFilteredEnv, ot as preprocess, p as createRuntimeEvent, pt as url, q as any, r as truncateText$1, rt as number, s as BASE_SKILL_PREFIX, st as record, t as createApiClient, tt as looseObject, u as callTools, ut as tuple, v as proceedToInteractiveTools, vt as meta$1, w as skipDelegates, wt as safeParseAsync$1, x as retry, xt as parse$1, y as resolveToolResults, yt as $ZodObject, z as knownModels } from "../dist-DmYKrkiR.js";
3
+ import { $ as lazy, A as runCommandInputSchema, At as PerstackError, B as resolveModelTier, C as runSettingSchema, Ct as safeParse$1, D as stopRunByDelegate, Dt as normalizeParams, E as startRun, Et as defineLazy, F as expertSchema, G as _instanceof, H as ZodIssueCode$1, I as isCoordinatorExpert, J as array$1, K as _null, L as validateDelegation, M as perstackConfigSchema, Mt as defaultPerstackApiBaseUrl, N as lockfileSchema, Nt as defaultTimeout, O as stopRunByError, Ot as $constructor, P as jobSchema, Pt as createId, Q as intersection, R as checkpointSchema, S as runParamsSchema, St as parseAsync, T as startGeneration, Tt as clone, U as ZodOptional$1, V as number$1, W as _enum, X as custom, Y as boolean, Z as discriminatedUnion, _ as parseExpertKey, _t as describe$1, a as validateEventFilter, at as optional, b as resumeFromStop, bt as $ZodType, c as createBaseToolActivity, ct as strictObject, d as completeRun, dt as union, et as literal, f as continueToNextStep, ft as unknown, g as finishToolCall, gt as toJSONSchema, h as finishMcpTools, ht as datetime, i as createFilteredEventListener, it as object$2, j as startCommandInputSchema, jt as defaultMaxRetries, k as stopRunByInteractiveTool, kt as NEVER, l as createGeneralToolActivity, lt as string, m as createStreamingEvent, mt as safeParseAsync$2, n as parseWithFriendlyError, nt as never, o as getFilteredEnv, ot as preprocess, p as createRuntimeEvent, pt as url, q as any, r as truncateText$1, rt as number, s as BASE_SKILL_PREFIX, st as record, t as createApiClient, tt as looseObject, u as callTools, ut as tuple, v as proceedToInteractiveTools, vt as meta$1, w as skipDelegates, wt as safeParseAsync$1, x as retry, xt as parse$1, y as resolveToolResults, yt as $ZodObject, z as knownModels } from "../dist-C-YhEwlg.js";
4
4
  import { t as require_token_error } from "../token-error-_b-fOBh2.js";
5
5
  import fs, { constants, lstat, mkdir, open, readFile, stat, writeFile } from "node:fs/promises";
6
6
  import path, { dirname, extname } from "node:path";
@@ -16302,7 +16302,7 @@ const EMPTY_COMPLETION_RESULT = { completion: {
16302
16302
  //#endregion
16303
16303
  //#region ../base/package.json
16304
16304
  var name$5 = "@perstack/base";
16305
- var version$2 = "0.0.71";
16305
+ var version$2 = "0.0.73";
16306
16306
 
16307
16307
  //#endregion
16308
16308
  //#region ../base/src/tools/todo.ts
@@ -16787,7 +16787,7 @@ async function writeTextFile(input) {
16787
16787
  await safeWriteFile(validatedPath, text);
16788
16788
  return {
16789
16789
  path: validatedPath,
16790
- text: truncateText$1(text)
16790
+ bytesWritten: Buffer.byteLength(text, "utf-8")
16791
16791
  };
16792
16792
  }
16793
16793
  function registerWriteTextFile(server) {
@@ -21310,7 +21310,7 @@ async function expertVersionsHandler(scopeName, options) {
21310
21310
 
21311
21311
  //#endregion
21312
21312
  //#region ../../packages/runtime/package.json
21313
- var version$1 = "0.0.124";
21313
+ var version$1 = "0.0.126";
21314
21314
 
21315
21315
  //#endregion
21316
21316
  //#region ../../packages/runtime/src/helpers/usage.ts
@@ -77271,7 +77271,7 @@ function validateRuntimeVersion(experts) {
77271
77271
  //#endregion
77272
77272
  //#region ../../packages/runtime/src/helpers/setup-experts.ts
77273
77273
  async function setupExperts(setting, resolveExpertToRun) {
77274
- const resolveFn = resolveExpertToRun ?? (await import("../resolve-expert-B7umXJIc.js")).resolveExpertToRun;
77274
+ const resolveFn = resolveExpertToRun ?? (await import("../resolve-expert-CVjfQVXn.js")).resolveExpertToRun;
77275
77275
  const { expertKey } = setting;
77276
77276
  const experts = { ...setting.experts };
77277
77277
  const clientOptions = {
@@ -90819,11 +90819,13 @@ var CoordinatorExecutor = class {
90819
90819
  }
90820
90820
  async execute(setting, checkpoint) {
90821
90821
  const adapter = await createProviderAdapter(setting.providerConfig, { proxyUrl: setting.proxyUrl });
90822
- const llmExecutor = new LLMExecutor(adapter, adapter.createModel(setting.model));
90823
- const contextWindow = getContextWindow(setting.providerConfig.providerName, setting.model);
90824
90822
  const { expertToRun, experts } = await setupExperts(setting, this.options.resolveExpertToRun);
90825
90823
  validateRuntimeVersion(experts);
90826
- this.emitInitEvent(setting, expertToRun, experts);
90824
+ const resolvedModel = setting.model ?? (expertToRun.defaultModelTier ? resolveModelTier(setting.providerConfig.providerName, expertToRun.defaultModelTier) : void 0) ?? resolveModelTier(setting.providerConfig.providerName, "middle");
90825
+ if (!resolvedModel) throw new PerstackError(`Cannot resolve model for provider "${setting.providerConfig.providerName}". Specify a model explicitly with --model.`);
90826
+ const llmExecutor = new LLMExecutor(adapter, adapter.createModel(resolvedModel));
90827
+ const contextWindow = getContextWindow(setting.providerConfig.providerName, resolvedModel);
90828
+ this.emitInitEvent(setting, resolvedModel, expertToRun, experts);
90827
90829
  const onLifecycleEvent = this.createLifecycleEventBridge(setting);
90828
90830
  const lockfileExpert = this.options.lockfile?.experts[setting.expertKey];
90829
90831
  const skillManager = lockfileExpert ? await SkillManager.fromLockfile(expertToRun, experts, {
@@ -90852,6 +90854,7 @@ var CoordinatorExecutor = class {
90852
90854
  checkpoint: await executeStateMachine({
90853
90855
  setting: {
90854
90856
  ...setting,
90857
+ model: resolvedModel,
90855
90858
  experts
90856
90859
  },
90857
90860
  initialCheckpoint,
@@ -90912,13 +90915,13 @@ var CoordinatorExecutor = class {
90912
90915
  }
90913
90916
  };
90914
90917
  }
90915
- emitInitEvent(setting, expertToRun, experts) {
90918
+ emitInitEvent(setting, resolvedModel, expertToRun, experts) {
90916
90919
  if (!this.options.eventListener) return;
90917
90920
  const initEvent = createRuntimeEvent("initializeRuntime", setting.jobId, setting.runId, {
90918
90921
  runtimeVersion: version$1,
90919
90922
  expertName: expertToRun.name,
90920
90923
  experts: Object.keys(experts),
90921
- model: setting.model,
90924
+ model: resolvedModel,
90922
90925
  maxRetries: setting.maxRetries,
90923
90926
  timeout: setting.timeout,
90924
90927
  query: setting.input.text,
@@ -91373,7 +91376,6 @@ function getAllEventContentsForJob(jobId) {
91373
91376
  //#endregion
91374
91377
  //#region ../../packages/tui/src/lib/context.ts
91375
91378
  const defaultProvider = "anthropic";
91376
- const defaultModel = "claude-sonnet-4-5";
91377
91379
  async function resolveRunContext(input) {
91378
91380
  const perstackConfig = input.perstackConfig;
91379
91381
  let checkpoint;
@@ -91386,7 +91388,7 @@ async function resolveRunContext(input) {
91386
91388
  if (checkpoint && input.expertKey && checkpoint.expert.key !== input.expertKey) throw new PerstackError(`Checkpoint expert key ${checkpoint.expert.key} does not match input expert key ${input.expertKey}`);
91387
91389
  const env = getEnv(input.envPath && input.envPath.length > 0 ? input.envPath : perstackConfig.envPath ?? [".env", ".env.local"]);
91388
91390
  const provider = input.provider ?? perstackConfig.provider?.providerName ?? defaultProvider;
91389
- const model = input.model ?? perstackConfig.model ?? defaultModel;
91391
+ const model = input.model ?? perstackConfig.model;
91390
91392
  const providerConfig = getProviderConfig(provider, env, perstackConfig.provider);
91391
91393
  const experts = Object.fromEntries(Object.entries(perstackConfig.experts ?? {}).map(([name, expert]) => {
91392
91394
  return [name, {
@@ -91460,14 +91462,6 @@ async function runHandler(expertKey, query, options, handlerOptions) {
91460
91462
  resumeFrom: input.options.resumeFrom,
91461
91463
  expertKey: input.expertKey
91462
91464
  });
91463
- let resolvedModel = model;
91464
- if (!input.options.model) {
91465
- const expertConfig = perstackConfig.experts?.[input.expertKey];
91466
- if (expertConfig?.defaultModelTier) {
91467
- const tierModel = resolveModelTier(providerConfig.providerName, expertConfig.defaultModelTier);
91468
- if (tierModel) resolvedModel = tierModel;
91469
- }
91470
- }
91471
91465
  if (handlerOptions?.additionalEnv) Object.assign(env, handlerOptions.additionalEnv(env));
91472
91466
  const lockfile = handlerOptions.lockfile;
91473
91467
  await run({
@@ -91477,7 +91471,7 @@ async function runHandler(expertKey, query, options, handlerOptions) {
91477
91471
  expertKey: input.expertKey,
91478
91472
  input: input.options.interactiveToolCallResult ? parseInteractiveToolCallResultJson(input.query) ?? (checkpoint ? parseInteractiveToolCallResult(input.query, checkpoint) : { text: input.query }) : { text: input.query },
91479
91473
  experts,
91480
- model: resolvedModel,
91474
+ model,
91481
91475
  providerConfig,
91482
91476
  reasoningBudget: input.options.reasoningBudget ?? perstackConfig.reasoningBudget,
91483
91477
  maxRetries: input.options.maxRetries ?? perstackConfig.maxRetries,
@@ -118038,7 +118032,7 @@ const useRuntimeInfo = (options) => {
118038
118032
  status: "initializing",
118039
118033
  runtimeVersion: options.initialConfig.runtimeVersion,
118040
118034
  expertName: options.initialExpertName,
118041
- model: options.initialConfig.model,
118035
+ model: options.initialConfig.model ?? "",
118042
118036
  maxRetries: options.initialConfig.maxRetries,
118043
118037
  timeout: options.initialConfig.timeout,
118044
118038
  activeSkills: [],
@@ -119706,14 +119700,6 @@ async function startHandler(expertKey, query, options, handlerOptions) {
119706
119700
  console.error(`Checkpoint expert key ${currentCheckpoint.expert.key} does not match input expert key ${selection.expertKey}`);
119707
119701
  return;
119708
119702
  }
119709
- let resolvedModel = model;
119710
- if (!input.options.model) {
119711
- const expertConfig = perstackConfig.experts?.[selection.expertKey];
119712
- if (expertConfig?.defaultModelTier) {
119713
- const tierModel = resolveModelTier(providerConfig.providerName, expertConfig.defaultModelTier);
119714
- if (tierModel) resolvedModel = tierModel;
119715
- }
119716
- }
119717
119703
  const lockfile = handlerOptions.lockfile;
119718
119704
  let currentQuery = input.query ?? null;
119719
119705
  let currentJobId = currentCheckpoint?.jobId ?? input.options.jobId ?? createId();
@@ -119728,7 +119714,7 @@ async function startHandler(expertKey, query, options, handlerOptions) {
119728
119714
  query: currentQuery ?? void 0,
119729
119715
  config: {
119730
119716
  runtimeVersion,
119731
- model: resolvedModel,
119717
+ model,
119732
119718
  maxRetries,
119733
119719
  timeout,
119734
119720
  contextWindowUsage: currentCheckpoint?.contextWindowUsage ?? 0
@@ -119743,7 +119729,7 @@ async function startHandler(expertKey, query, options, handlerOptions) {
119743
119729
  expertKey: selection.expertKey,
119744
119730
  input: isNextQueryInteractiveToolResult && currentCheckpoint ? parseInteractiveToolCallResult(resolvedQuery, currentCheckpoint) : { text: resolvedQuery },
119745
119731
  experts,
119746
- model: resolvedModel,
119732
+ model,
119747
119733
  providerConfig,
119748
119734
  reasoningBudget: input.options.reasoningBudget ?? perstackConfig.reasoningBudget,
119749
119735
  maxRetries: input.options.maxRetries ?? perstackConfig.maxRetries,
@@ -119780,7 +119766,7 @@ async function startHandler(expertKey, query, options, handlerOptions) {
119780
119766
  //#endregion
119781
119767
  //#region package.json
119782
119768
  var name = "perstack";
119783
- var version = "0.0.109";
119769
+ var version = "0.0.111";
119784
119770
  var description = "PerStack CLI";
119785
119771
 
119786
119772
  //#endregion