perstack 0.0.114 → 0.0.116

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 intersection, A as runCommandInputSchema, At as NEVER, B as resolveModelTier, C as runSettingSchema, Ct as parseAsync, D as stopRunByDelegate, Dt as defineLazy, E as startRun, Et as clone, F as expertSchema, Ft as createId, G as _enum, H as number$1, I as isCoordinatorExpert, J as any, K as _instanceof, L as validateDelegation, M as perstackConfigSchema, Mt as defaultMaxRetries, N as lockfileSchema, Nt as defaultPerstackApiBaseUrl, O as stopRunByError, Ot as normalizeParams, P as jobSchema, Pt as defaultTimeout, Q as discriminatedUnion, R as checkpointSchema, S as runParamsSchema, St as parse$1, T as startGeneration, Tt as safeParseAsync$1, U as ZodIssueCode$1, V as resolveModelTierWithFallback, W as ZodOptional$1, X as boolean, Y as array$1, Z as custom, _ as parseExpertKey, _t as toJSONSchema, a as validateEventFilter, at as object$2, b as resumeFromStop, bt as $ZodObject, c as createBaseToolActivity, ct as record, d as completeRun, dt as tuple, et as lazy, f as continueToNextStep, ft as union, g as finishToolCall, gt as datetime, h as finishMcpTools, ht as safeParseAsync$2, i as createFilteredEventListener, it as number, j as startCommandInputSchema, jt as PerstackError, k as stopRunByInteractiveTool, kt as $constructor, l as createGeneralToolActivity, lt as strictObject, m as createStreamingEvent, mt as url, n as parseWithFriendlyError, nt as looseObject, o as getFilteredEnv, ot as optional, p as createRuntimeEvent, pt as unknown, q as _null, r as truncateText$1, rt as never, s as BASE_SKILL_PREFIX, st as preprocess, t as createApiClient, tt as literal, u as callTools, ut as string, v as proceedToInteractiveTools, vt as describe$1, w as skipDelegates, wt as safeParse$1, x as retry, xt as $ZodType, y as resolveToolResults, yt as meta$1, z as knownModels } from "../dist-Dbqn18AZ.js";
3
+ import { $ as intersection, A as runCommandInputSchema, At as NEVER, B as resolveModelTier, C as runSettingSchema, Ct as parseAsync, D as stopRunByDelegate, Dt as defineLazy, E as startRun, Et as clone, F as expertSchema, Ft as createId, G as _enum, H as number$1, I as isCoordinatorExpert, J as any, K as _instanceof, L as validateDelegation, M as perstackConfigSchema, Mt as defaultMaxRetries, N as lockfileSchema, Nt as defaultPerstackApiBaseUrl, O as stopRunByError, Ot as normalizeParams, P as jobSchema, Pt as defaultTimeout, Q as discriminatedUnion, R as checkpointSchema, S as runParamsSchema, St as parse$1, T as startGeneration, Tt as safeParseAsync$1, U as ZodIssueCode$1, V as resolveModelTierWithFallback, W as ZodOptional$1, X as boolean, Y as array$1, Z as custom, _ as parseExpertKey, _t as toJSONSchema, a as validateEventFilter, at as object$2, b as resumeFromStop, bt as $ZodObject, c as createBaseToolActivity, ct as record, d as completeRun, dt as tuple, et as lazy, f as continueToNextStep, ft as union, g as finishToolCall, gt as datetime, h as finishMcpTools, ht as safeParseAsync$2, i as createFilteredEventListener, it as number, j as startCommandInputSchema, jt as PerstackError, k as stopRunByInteractiveTool, kt as $constructor, l as createGeneralToolActivity, lt as strictObject, m as createStreamingEvent, mt as url, n as parseWithFriendlyError, nt as looseObject, o as getFilteredEnv, ot as optional, p as createRuntimeEvent, pt as unknown, q as _null, r as truncateText$1, rt as never, s as BASE_SKILL_PREFIX, st as preprocess, t as createApiClient, tt as literal, u as callTools, ut as string, v as proceedToInteractiveTools, vt as describe$1, w as skipDelegates, wt as safeParse$1, x as retry, xt as $ZodType, y as resolveToolResults, yt as meta$1, z as knownModels } from "../dist-ByKamhCW.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";
@@ -1102,7 +1102,8 @@ function toRuntimeExpert(key, expert) {
1102
1102
  instruction: expert.instruction,
1103
1103
  skills,
1104
1104
  delegates: expert.delegates ?? [],
1105
- tags: expert.tags ?? []
1105
+ tags: expert.tags ?? [],
1106
+ defaultModelTier: expert.defaultModelTier
1106
1107
  };
1107
1108
  }
1108
1109
  function configExpertToExpert(key, configExpert) {
@@ -1117,7 +1118,8 @@ function configExpertToExpert(key, configExpert) {
1117
1118
  tags: configExpert.tags,
1118
1119
  providerTools: configExpert.providerTools,
1119
1120
  providerSkills: configExpert.providerSkills,
1120
- providerToolOptions: configExpert.providerToolOptions
1121
+ providerToolOptions: configExpert.providerToolOptions,
1122
+ defaultModelTier: configExpert.defaultModelTier
1121
1123
  });
1122
1124
  }
1123
1125
  async function resolveAllExperts(config, env) {
@@ -16302,7 +16304,7 @@ const EMPTY_COMPLETION_RESULT = { completion: {
16302
16304
  //#endregion
16303
16305
  //#region ../base/package.json
16304
16306
  var name$6 = "@perstack/base";
16305
- var version$2 = "0.0.77";
16307
+ var version$2 = "0.0.78";
16306
16308
 
16307
16309
  //#endregion
16308
16310
  //#region ../base/src/tools/todo.ts
@@ -21310,7 +21312,7 @@ async function expertVersionsHandler(scopeName, options) {
21310
21312
 
21311
21313
  //#endregion
21312
21314
  //#region ../../packages/runtime/package.json
21313
- var version$1 = "0.0.130";
21315
+ var version$1 = "0.0.132";
21314
21316
 
21315
21317
  //#endregion
21316
21318
  //#region ../../packages/runtime/src/helpers/usage.ts
@@ -80217,7 +80219,7 @@ function validateRuntimeVersion(experts) {
80217
80219
  //#endregion
80218
80220
  //#region ../../packages/runtime/src/helpers/setup-experts.ts
80219
80221
  async function setupExperts(setting, resolveExpertToRun) {
80220
- const resolveFn = resolveExpertToRun ?? (await import("../resolve-expert-BZR9BBkj.js")).resolveExpertToRun;
80222
+ const resolveFn = resolveExpertToRun ?? (await import("../resolve-expert-NYqP4qog.js")).resolveExpertToRun;
80221
80223
  const { expertKey } = setting;
80222
80224
  const experts = { ...setting.experts };
80223
80225
  const clientOptions = {
@@ -93949,6 +93951,7 @@ var CoordinatorExecutor = class {
93949
93951
  expertName: expertToRun.name,
93950
93952
  experts: Object.keys(experts),
93951
93953
  model: resolvedModel,
93954
+ providerName: setting.providerConfig.providerName,
93952
93955
  maxRetries: setting.maxRetries,
93953
93956
  timeout: setting.timeout,
93954
93957
  query: setting.input.text,
@@ -121809,6 +121812,11 @@ function createInitialDelegationTreeState() {
121809
121812
  nodes: /* @__PURE__ */ new Map(),
121810
121813
  rootRunId: void 0,
121811
121814
  jobTotalTokens: 0,
121815
+ jobReasoningTokens: 0,
121816
+ jobInputTokens: 0,
121817
+ jobCachedInputTokens: 0,
121818
+ jobOutputTokens: 0,
121819
+ providerName: void 0,
121812
121820
  jobStartedAt: void 0,
121813
121821
  runIdAliases: /* @__PURE__ */ new Map()
121814
121822
  };
@@ -121918,6 +121926,7 @@ function processDelegationTreeEvent(state, event) {
121918
121926
  switch (event.type) {
121919
121927
  case "initializeRuntime":
121920
121928
  if (state.jobStartedAt === void 0) state.jobStartedAt = event.timestamp;
121929
+ if (state.providerName === void 0) state.providerName = event.providerName;
121921
121930
  return true;
121922
121931
  case "startRun": {
121923
121932
  const initCheckpoint = event.initialCheckpoint;
@@ -121937,6 +121946,7 @@ function processDelegationTreeEvent(state, event) {
121937
121946
  actionLabel: "Starting...",
121938
121947
  actionFileArg: void 0,
121939
121948
  contextWindowUsage: initCheckpoint.contextWindowUsage ?? 0,
121949
+ model: event.model,
121940
121950
  parentRunId,
121941
121951
  childRunIds: [],
121942
121952
  totalTokens: 0
@@ -121964,6 +121974,7 @@ function processDelegationTreeEvent(state, event) {
121964
121974
  const node = state.nodes.get(nodeId);
121965
121975
  if (node) {
121966
121976
  node.status = "running";
121977
+ node.model = event.model;
121967
121978
  if (checkpoint.contextWindowUsage !== void 0) node.contextWindowUsage = checkpoint.contextWindowUsage;
121968
121979
  }
121969
121980
  return true;
@@ -121995,6 +122006,10 @@ function processDelegationTreeEvent(state, event) {
121995
122006
  node.actionFileArg = fileArg;
121996
122007
  node.totalTokens += event.usage.totalTokens;
121997
122008
  state.jobTotalTokens += event.usage.totalTokens;
122009
+ state.jobReasoningTokens += event.usage.reasoningTokens;
122010
+ state.jobInputTokens += event.usage.inputTokens;
122011
+ state.jobCachedInputTokens += event.usage.cachedInputTokens;
122012
+ state.jobOutputTokens += event.usage.outputTokens;
121998
122013
  }
121999
122014
  return true;
122000
122015
  }
@@ -122018,6 +122033,10 @@ function processDelegationTreeEvent(state, event) {
122018
122033
  node.actionFileArg = void 0;
122019
122034
  node.totalTokens += event.usage.totalTokens;
122020
122035
  state.jobTotalTokens += event.usage.totalTokens;
122036
+ state.jobReasoningTokens += event.usage.reasoningTokens;
122037
+ state.jobInputTokens += event.usage.inputTokens;
122038
+ state.jobCachedInputTokens += event.usage.cachedInputTokens;
122039
+ state.jobOutputTokens += event.usage.outputTokens;
122021
122040
  if (event.checkpoint.contextWindowUsage !== void 0) node.contextWindowUsage = event.checkpoint.contextWindowUsage;
122022
122041
  }
122023
122042
  return true;
@@ -122047,6 +122066,10 @@ function processDelegationTreeEvent(state, event) {
122047
122066
  if (node) {
122048
122067
  node.totalTokens += event.usage.totalTokens;
122049
122068
  state.jobTotalTokens += event.usage.totalTokens;
122069
+ state.jobReasoningTokens += event.usage.reasoningTokens;
122070
+ state.jobInputTokens += event.usage.inputTokens;
122071
+ state.jobCachedInputTokens += event.usage.cachedInputTokens;
122072
+ state.jobOutputTokens += event.usage.outputTokens;
122050
122073
  }
122051
122074
  return true;
122052
122075
  }
@@ -122064,7 +122087,13 @@ function useDelegationTree() {
122064
122087
  state,
122065
122088
  processEvent,
122066
122089
  statusCounts: getStatusCounts(state),
122067
- formattedTotalTokens: formatTokenCount(state.jobTotalTokens)
122090
+ formattedTotalTokens: formatTokenCount(state.jobTotalTokens),
122091
+ formattedReasoningTokens: formatTokenCount(state.jobReasoningTokens),
122092
+ formattedInputTokens: formatTokenCount(state.jobInputTokens),
122093
+ formattedCachedInputTokens: formatTokenCount(state.jobCachedInputTokens),
122094
+ formattedOutputTokens: formatTokenCount(state.jobOutputTokens),
122095
+ providerName: state.providerName,
122096
+ cacheHitRate: state.jobInputTokens + state.jobCachedInputTokens > 0 ? (state.jobCachedInputTokens / (state.jobInputTokens + state.jobCachedInputTokens) * 100).toFixed(2) : "0.00"
122068
122097
  };
122069
122098
  }
122070
122099
 
@@ -122163,15 +122192,25 @@ function TreeNodeLine({ flatNode, spinner }) {
122163
122192
  color: colors.muted,
122164
122193
  children: [" ", node.actionFileArg]
122165
122194
  }) : null,
122166
- showUsage ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Text, {
122167
- dimColor: true,
122168
- children: " · "
122169
- }), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Text, { children: [
122170
- usageIcon,
122171
- " ",
122172
- usagePercent,
122173
- "%"
122174
- ] })] }) : null
122195
+ showUsage ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
122196
+ node.model ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Text, {
122197
+ dimColor: true,
122198
+ children: " · "
122199
+ }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Text, {
122200
+ dimColor: true,
122201
+ children: node.model
122202
+ })] }) : null,
122203
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Text, {
122204
+ dimColor: true,
122205
+ children: " · "
122206
+ }),
122207
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Text, { children: [
122208
+ usageIcon,
122209
+ " ",
122210
+ usagePercent,
122211
+ "%"
122212
+ ] })
122213
+ ] }) : null
122175
122214
  ] });
122176
122215
  }
122177
122216
  const DelegationTree = ({ state }) => {
@@ -122186,7 +122225,7 @@ const DelegationTree = ({ state }) => {
122186
122225
 
122187
122226
  //#endregion
122188
122227
  //#region ../../packages/tui-components/src/execution/components/interface-panel.tsx
122189
- const InterfacePanel = ({ query, runStatus, onSubmit, delegationTreeState, runningCount, waitingCount, formattedTotalTokens, elapsedTime }) => {
122228
+ const InterfacePanel = ({ query, runStatus, onSubmit, delegationTreeState, runningCount, waitingCount, formattedReasoningTokens, formattedInputTokens, formattedCachedInputTokens, formattedOutputTokens, providerName, cacheHitRate, elapsedTime }) => {
122190
122229
  const { input, handleInput } = useTextInput({
122191
122230
  onSubmit,
122192
122231
  canSubmit: runStatus !== "running"
@@ -122205,28 +122244,60 @@ const InterfacePanel = ({ query, runStatus, onSubmit, delegationTreeState, runni
122205
122244
  isWaiting ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Text, {
122206
122245
  color: colors.accent,
122207
122246
  children: "Waiting for query..."
122208
- }) : /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Text, {
122209
- color: colors.success,
122210
- wrap: "truncate",
122211
- children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Text, {
122212
- bold: true,
122213
- children: "Query: "
122214
- }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Text, { children: query || "–" })]
122215
- }), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Text, {
122216
- dimColor: true,
122217
- children: [
122218
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Text, { children: [runningCount, " running"] }),
122219
- waitingCount > 0 ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Text, { children: [
122220
- " · ",
122221
- waitingCount,
122222
- " waiting"
122223
- ] }) : null,
122224
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Text, { children: " · " }),
122225
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Text, { children: elapsedTime }),
122226
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Text, { children: " · " }),
122227
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Text, { children: [formattedTotalTokens, " tokens"] })
122228
- ]
122229
- })] }),
122247
+ }) : /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
122248
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Text, {
122249
+ color: colors.success,
122250
+ wrap: "truncate",
122251
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Text, {
122252
+ bold: true,
122253
+ children: "Query: "
122254
+ }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Text, { children: query || "–" })]
122255
+ }),
122256
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Text, {
122257
+ dimColor: true,
122258
+ children: [
122259
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Text, { children: [runningCount, " running"] }),
122260
+ waitingCount > 0 ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Text, { children: [
122261
+ " · ",
122262
+ waitingCount,
122263
+ " waiting"
122264
+ ] }) : null,
122265
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Text, { children: " · " }),
122266
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Text, { children: elapsedTime }),
122267
+ providerName ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Text, { children: [" · ", providerName] }) : null
122268
+ ]
122269
+ }),
122270
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Text, { children: [
122271
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Text, {
122272
+ dimColor: true,
122273
+ children: "R "
122274
+ }),
122275
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Text, { children: formattedReasoningTokens }),
122276
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Text, {
122277
+ dimColor: true,
122278
+ children: " · I "
122279
+ }),
122280
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Text, { children: formattedInputTokens }),
122281
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Text, {
122282
+ dimColor: true,
122283
+ children: " · C "
122284
+ }),
122285
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Text, { children: formattedCachedInputTokens }),
122286
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Text, {
122287
+ dimColor: true,
122288
+ children: " · O "
122289
+ }),
122290
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Text, { children: formattedOutputTokens }),
122291
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Text, {
122292
+ dimColor: true,
122293
+ children: [
122294
+ " (cache: ",
122295
+ cacheHitRate,
122296
+ "%)"
122297
+ ]
122298
+ })
122299
+ ] })
122300
+ ] }),
122230
122301
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(DelegationTree, { state: delegationTreeState }),
122231
122302
  /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Text, { children: [
122232
122303
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Text, {
@@ -122379,6 +122450,12 @@ const useExecutionState = (options) => {
122379
122450
  runningCount: delegationTree.statusCounts.running,
122380
122451
  waitingCount: delegationTree.statusCounts.waiting,
122381
122452
  formattedTotalTokens: delegationTree.formattedTotalTokens,
122453
+ formattedReasoningTokens: delegationTree.formattedReasoningTokens,
122454
+ formattedInputTokens: delegationTree.formattedInputTokens,
122455
+ formattedCachedInputTokens: delegationTree.formattedCachedInputTokens,
122456
+ formattedOutputTokens: delegationTree.formattedOutputTokens,
122457
+ providerName: delegationTree.providerName,
122458
+ cacheHitRate: delegationTree.cacheHitRate,
122382
122459
  elapsedTime
122383
122460
  };
122384
122461
  };
@@ -122444,6 +122521,12 @@ const ExecutionApp = (props) => {
122444
122521
  runningCount: state.runningCount,
122445
122522
  waitingCount: state.waitingCount,
122446
122523
  formattedTotalTokens: state.formattedTotalTokens,
122524
+ formattedReasoningTokens: state.formattedReasoningTokens,
122525
+ formattedInputTokens: state.formattedInputTokens,
122526
+ formattedCachedInputTokens: state.formattedCachedInputTokens,
122527
+ formattedOutputTokens: state.formattedOutputTokens,
122528
+ providerName: state.providerName,
122529
+ cacheHitRate: state.cacheHitRate,
122447
122530
  elapsedTime: state.elapsedTime
122448
122531
  })]
122449
122532
  });
@@ -122801,7 +122884,7 @@ async function startHandler(expertKey, query, options, handlerOptions) {
122801
122884
  //#endregion
122802
122885
  //#region package.json
122803
122886
  var name = "perstack";
122804
- var version = "0.0.114";
122887
+ var version = "0.0.116";
122805
122888
  var description = "PerStack CLI";
122806
122889
 
122807
122890
  //#endregion