oasis_test_v2 2.2.28 → 2.2.30

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/index.js +43 -20
  2. package/package.json +2 -2
package/dist/index.js CHANGED
@@ -1554,7 +1554,7 @@ var init_delegation_prompts = __esm({
1554
1554
  " \u4E2D\u9014\u7F3A\u4EC0\u4E48\u518D\u8981\u4EC0\u4E48\u3002**\u53EA\u6709\u76EE\u6807\u3001\u8303\u56F4\u3001\u6216\u8981\u7528\u6237\u62CD\u677F\u7684\u53D6\u820D**\u624D\u56DE\u5934\u95EE\u4EBA\u3002",
1555
1555
  "- **\u62FF\u4E0D\u51C6\u5F52\u8C01\u8D1F\u8D23\uFF0C\u5C31\u81EA\u5DF1\u505A\u3002**\u6D3E\u9519\u4EBA\u6BD4\u591A\u505A\u4E00\u6B65\u8D35\u3002",
1556
1556
  "- **\u81EA\u5DF1\u505A\u7684\u65F6\u5019**\uFF1A\u5148\u7528\u4E00\u53E5\u666E\u901A\u8BDD\u8BF4\u4F60\u5728\u505A\u4EC0\u4E48\uFF08\u4F8B\uFF1A\u300C\u6211\u6765\u6574\u7406\u8FD9\u4EFD\u9700\u6C42\uFF0C\u5E76\u8865\u51FA\u53EF\u6267\u884C\u7684\u8303\u56F4\u300D\uFF09\uFF0C",
1557
- " \u505A\u5B8C\u628A\u7ED3\u679C\u6216\u6587\u4EF6\u7ED9\u51FA\u6765\u2014\u2014\u6587\u4EF6\u4F1A\u81EA\u52A8\u8FDB\u53F3\u4FA7\u5DE5\u4F5C\u533A\uFF0C\u4E0D\u7528\u4F60\u518D\u8D34\u4E00\u904D\u3002",
1557
+ " \u505A\u5B8C\u628A\u7ED3\u679C\u7ED9\u51FA\u6765\uFF1B\u7ED9\u7528\u6237\u7684\u6587\u4EF6\u653E\u8FDB `outputs/`\uFF08\u4F1A\u51FA\u5361\uFF09\uFF0C\u4E0D\u7528\u518D\u8D34\u3002",
1558
1558
  "- **\u4E2D\u9014\u53D1\u73B0\u8BE5\u6362\u8DEF**\uFF08\u505A\u7740\u505A\u7740\u53D1\u73B0\u8981\u4E09\u4E2A\u4EBA\u4E00\u8D77\uFF09\uFF1A\u76F4\u63A5\u6362\u3002",
1559
1559
  " **\u8FD9\u4E2A\u8F6C\u6298\u4E0D\u7528\u8BB2\u7ED9\u7528\u6237\u542C**\uFF0C\u53EA\u5728\u771F\u9700\u8981\u4ED6\u8865\u4FE1\u606F\u3001\u7ED9\u6388\u6743\u3001\u505A\u53D6\u820D\u65F6\u624D\u5F00\u53E3\u3002",
1560
1560
  "",
@@ -1607,7 +1607,7 @@ var init_delegation_prompts = __esm({
1607
1607
  "### \u8981\u5E26\u6587\u4EF6\u5C31\u660E\u5199",
1608
1608
  "",
1609
1609
  "`--file <\u5DE5\u4F5C\u533A\u91CC\u7684\u8DEF\u5F84>`\uFF0C\u53EF\u4EE5\u7ED9\u591A\u6B21\u3002**\u4E0D\u5199\u5C31\u4E00\u4E2A\u6587\u4EF6\u90FD\u4E0D\u5E26**\u2014\u2014\u4E24\u8FB9\u5DE5\u4F5C\u533A\u662F\u5206\u5F00\u7684\u3002",
1610
- "\u5BF9\u65B9\u4EA4\u56DE\u7684\u6587\u4EF6\u81EA\u52A8\u843D\u8FDB `delegations/<\u77ED\u540D>/`\uFF08\u7528\u6237\u770B\u4E0D\u5230\uFF09\uFF1B\u8981\u7ED9\u7528\u6237\u770B\u7684\uFF0C\u590D\u5236\u6216\u52A0\u5DE5\u540E\u653E\u8FDB `outputs/`\uFF0C\u539F\u4EF6\u522B\u52A8\u3002"
1610
+ "\u5BF9\u65B9\u4EA4\u56DE\u7684\u6587\u4EF6\u81EA\u52A8\u843D\u8FDB `delegations/<\u77ED\u540D>/`\uFF0C\u4E0D\u51FA\u5361\uFF1B\u8981\u7ED9\u7528\u6237\u770B\u7684\uFF0C\u590D\u5236\u6216\u52A0\u5DE5\u8FDB `outputs/`\uFF0C\u539F\u4EF6\u522B\u52A8\u3002"
1611
1611
  ].join("\n");
1612
1612
  }
1613
1613
  });
@@ -25935,11 +25935,19 @@ var init_codex = __esm({
25935
25935
  active: false,
25936
25936
  pendingInputs: /* @__PURE__ */ new Set(),
25937
25937
  codex: createCodexNormalizeState(),
25938
- // 本次 run 的用量:逐轮累加 `thread/tokenUsage/updated` 的 `last`(见该解析函数注释)。
25939
- usage: { input: 0, cacheRead: 0, cacheWrite: 0, output: 0 },
25940
- sawUsage: false,
25941
- // `thread/started` 会直接给出本会话 rollout 的绝对路径——取实际模型时不必再满盘搜。
25942
- rolloutPath: void 0
25938
+ // 本次 run 的用量:`thread/tokenUsage/updated` 的 `last`(见该解析函数注释)按轮次记下,
25939
+ // 结算时只加**本次 run 发起的轮次**(runTurnIds)。原因:`thread/resume` 之后 codex 会把线程
25940
+ // **上一轮**的用量通知重放一遍(本机 codex 0.154.0 实测,turnId 是上一轮的),照单全收的话
25941
+ // 每次续接都把上一轮的 token 再记一遍。没带 turnId 的通知(老版本)照旧直接计入。
25942
+ usageByTurn: [],
25943
+ runTurnIds: /* @__PURE__ */ new Set(),
25944
+ // 已经发出本次 run 的 `turn/start`:在这之前出现的 `turn/started` 不是本次的轮次。
25945
+ turnRequested: false,
25946
+ // 会话 rollout 的绝对路径:新开线程时 `thread/started` 通知会给;**续接(thread/resume)不发这条通知**,
25947
+ // 只能从 resume 的响应里取(同上实测)。取不到它就读不到实际模型。
25948
+ rolloutPath: void 0,
25949
+ // thread/start / thread/resume 响应里 codex 报的线程模型:rollout 读不到时的兜底。
25950
+ threadModel: void 0
25943
25951
  }),
25944
25952
  initialCommand: () => ({
25945
25953
  jsonrpc: "2.0",
@@ -25956,12 +25964,16 @@ var init_codex = __esm({
25956
25964
  const threadId = thread.thread?.id ?? thread.id;
25957
25965
  if (typeof threadId !== "string" || !threadId) throw new Error("codex app-server returned no thread id");
25958
25966
  state.threadId = threadId;
25967
+ if (typeof thread.thread?.path === "string" && thread.thread.path) state.rolloutPath ??= thread.thread.path;
25968
+ const responseModel = typeof thread.model === "string" && thread.model ? thread.model : typeof thread.thread?.model === "string" && thread.thread.model ? thread.thread.model : void 0;
25969
+ if (responseModel) state.threadModel = responseModel;
25959
25970
  const text5 = currentJob.systemPrompt ? `${currentJob.systemPrompt}
25960
25971
 
25961
25972
  ---
25962
25973
 
25963
25974
  ${task}` : task;
25964
25975
  state.active = true;
25976
+ state.turnRequested = true;
25965
25977
  const turn = await send({
25966
25978
  jsonrpc: "2.0",
25967
25979
  method: "turn/start",
@@ -25974,7 +25986,10 @@ ${task}` : task;
25974
25986
  }
25975
25987
  });
25976
25988
  const turnId = turn.turn?.id ?? turn.id;
25977
- if (typeof turnId === "string" && turnId) state.turnId = turnId;
25989
+ if (typeof turnId === "string" && turnId) {
25990
+ state.turnId = turnId;
25991
+ state.runTurnIds.add(turnId);
25992
+ }
25978
25993
  if (!state.turnId) throw new Error("codex app-server returned no turn id");
25979
25994
  },
25980
25995
  liveEvents(message, state) {
@@ -26015,16 +26030,14 @@ ${task}` : task;
26015
26030
  }
26016
26031
  if (method === "thread/tokenUsage/updated") {
26017
26032
  const turn = parseCodexAppServerTurnUsage(params);
26018
- if (turn) {
26019
- addCodexBuckets(state.usage, turn);
26020
- state.sawUsage = true;
26021
- }
26033
+ if (turn) state.usageByTurn.push({ turnId: typeof params?.turnId === "string" ? params.turnId : void 0, buckets: turn });
26022
26034
  }
26023
26035
  if (method === "turn/started") {
26024
26036
  const turn = params?.turn;
26025
26037
  if (typeof turn?.id === "string") {
26026
26038
  state.turnId = turn.id;
26027
26039
  state.active = true;
26040
+ if (state.turnRequested) state.runTurnIds.add(turn.id);
26028
26041
  }
26029
26042
  }
26030
26043
  if (method === "item/agentMessage/delta" || method === "item/reasoning/textDelta") {
@@ -26056,9 +26069,16 @@ ${task}` : task;
26056
26069
  } catch {
26057
26070
  }
26058
26071
  }
26059
- model ??= resolvedModel2;
26072
+ model ??= state.threadModel ?? resolvedModel2;
26073
+ const usage = { input: 0, cacheRead: 0, cacheWrite: 0, output: 0 };
26074
+ let sawUsage = false;
26075
+ for (const entry of state.usageByTurn) {
26076
+ if (entry.turnId !== void 0 && !state.runTurnIds.has(entry.turnId)) continue;
26077
+ addCodexBuckets(usage, entry.buckets);
26078
+ sawUsage = true;
26079
+ }
26060
26080
  return {
26061
- ...state.sawUsage ? { usage: codexUsageFromBuckets(state.usage) } : {},
26081
+ ...sawUsage ? { usage: codexUsageFromBuckets(usage) } : {},
26062
26082
  ...model ? { model } : {}
26063
26083
  };
26064
26084
  },
@@ -26068,7 +26088,10 @@ ${task}` : task;
26068
26088
  await send({ jsonrpc: "2.0", method: "turn/interrupt", params: { threadId: state.threadId, turnId: state.turnId } });
26069
26089
  const next = await send({ jsonrpc: "2.0", method: "turn/start", params: { threadId: state.threadId, input: [{ type: "text", text: input.text }] } });
26070
26090
  const nextId = next.turn?.id;
26071
- if (typeof nextId === "string") state.turnId = nextId;
26091
+ if (typeof nextId === "string") {
26092
+ state.turnId = nextId;
26093
+ state.runTurnIds.add(nextId);
26094
+ }
26072
26095
  state.active = true;
26073
26096
  return { accepted: true, interrupt: "unknown" };
26074
26097
  }
@@ -198179,7 +198202,7 @@ function delegationReturnText(terminal, opts) {
198179
198202
  );
198180
198203
  if (opts.movedPaths.length > 0 || (opts.unchangedPaths?.length ?? 0) > 0) {
198181
198204
  lines.push(
198182
- "\u4EA4\u56DE\u7684\u6587\u4EF6\u653E\u5728 `delegations/` \u4E0B\uFF0C**\u7528\u6237\u770B\u4E0D\u5230**\uFF1B\u8981\u7ED9\u7528\u6237\u770B\u7684\uFF0C\u590D\u5236\u6216\u52A0\u5DE5\u540E\u653E\u8FDB `outputs/`\uFF08\u539F\u4EF6\u522B\u79FB\u52A8\u3001\u522B\u5220\u9664\uFF09\u3002" + ((opts.updatedPaths?.length ?? 0) > 0 ? "\u6807\u4E86\u300C\u66F4\u65B0\u300D\u7684\u6587\u4EF6\u5982\u679C\u4F60\u4E4B\u524D\u653E\u8FDB\u8FC7 `outputs/`\uFF0C\u8981\u4E0D\u8981\u6362\u6210\u65B0\u7248\u7531\u4F60\u5224\u65AD\u3002" : "")
198205
+ "\u4EA4\u56DE\u7684\u6587\u4EF6\u653E\u5728 `delegations/` \u4E0B\uFF0C**\u4E0D\u4F1A\u5728\u5BF9\u8BDD\u91CC\u51FA\u5361**\uFF08\u7528\u6237\u53EA\u80FD\u53BB\u53F3\u4FA7\u300C\u76F8\u5173\u6587\u4EF6\u300D\u5217\u8868\u91CC\u7FFB\uFF09\uFF1B\u8981\u7ED9\u7528\u6237\u770B\u7684\uFF0C\u590D\u5236\u6216\u52A0\u5DE5\u540E\u653E\u8FDB `outputs/`\uFF08\u539F\u4EF6\u522B\u79FB\u52A8\u3001\u522B\u5220\u9664\uFF09\u3002" + ((opts.updatedPaths?.length ?? 0) > 0 ? "\u6807\u4E86\u300C\u66F4\u65B0\u300D\u7684\u6587\u4EF6\u5982\u679C\u4F60\u4E4B\u524D\u653E\u8FDB\u8FC7 `outputs/`\uFF0C\u8981\u4E0D\u8981\u6362\u6210\u65B0\u7248\u7531\u4F60\u5224\u65AD\u3002" : "")
198183
198206
  );
198184
198207
  }
198185
198208
  return lines.join("\n");
@@ -259628,12 +259651,12 @@ ${detail}`.slice(0, 4200) } : {}
259628
259651
  init_src11();
259629
259652
  init_src();
259630
259653
  var BRAINSTORM_LEGACY_LINE = "\u8BF7\u76F4\u63A5\u56DE\u7B54\u7528\u6237\u95EE\u9898\u3002\u9664\u975E\u7528\u6237\u660E\u786E\u8981\u6C42\u5199\u5165\u7CFB\u7EDF\uFF0C\u5426\u5219\u4E0D\u8981\u521B\u5EFA\u6216\u4FEE\u6539 artifact\u3002";
259631
- var BRAINSTORM_ARTIFACT_GUARD = "\u9664\u975E\u7528\u6237\u660E\u786E\u8981\u6C42\u5199\u5165\u7CFB\u7EDF\uFF0C\u5426\u5219\u4E0D\u8981\u521B\u5EFA\u6216\u4FEE\u6539 artifact\u3002";
259654
+ var BRAINSTORM_ARTIFACT_GUARD = "\u9664\u975E\u7528\u6237\u660E\u786E\u8981\u6C42\u5199\u5165\u7CFB\u7EDF\uFF0C\u5426\u5219\u4E0D\u8981\u76F4\u63A5\u521B\u5EFA\u6216\u4FEE\u6539 artifact\uFF1B\u5DE5\u5355\u8349\u6848\u8981\u7528\u6237\u786E\u8BA4\u624D\u751F\u6548\uFF0C\u4E0D\u5728\u6B64\u5217\u3002";
259632
259655
  var OUTPUTS_CONVENTION = [
259633
259656
  "## \u4EA7\u51FA\u653E\u54EA",
259634
259657
  "",
259635
259658
  "\u8981\u7ED9\u7528\u6237\u770B\u7684\u6210\u54C1\u6587\u4EF6\uFF0C**\u653E\u8FDB\u5DE5\u4F5C\u76EE\u5F55\u4E0B\u7684 `outputs/`**\uFF08\u53EF\u4EE5\u6709\u5B50\u76EE\u5F55\uFF0C\u7ED3\u6784\u81EA\u5DF1\u5B9A\uFF09\u3002",
259636
- "\u53EA\u6709\u8FD9\u4E2A\u76EE\u5F55\u91CC\u7684\u6587\u4EF6\u4F1A\u5728\u5BF9\u8BDD\u91CC\u663E\u793A\u6210\u53EF\u70B9\u5F00\u7684\u6587\u4EF6\u5361\u7247\uFF1B\u5199\u5728\u522B\u5904\u7684\u7528\u6237\u770B\u4E0D\u89C1\u3002",
259659
+ "\u53EA\u6709\u8FD9\u4E2A\u76EE\u5F55\u91CC\u7684\u6587\u4EF6\u4F1A\u5728\u5BF9\u8BDD\u91CC\u663E\u793A\u6210\u53EF\u70B9\u5F00\u7684\u6587\u4EF6\u5361\u7247\uFF1B\u5199\u5728\u522B\u5904\u7684\u4E0D\u51FA\u5361\uFF0C\u7528\u6237\u53EA\u80FD\u53BB\u53F3\u4FA7\u300C\u76F8\u5173\u6587\u4EF6\u300D\u5217\u8868\u91CC\u81EA\u5DF1\u7FFB\u3002",
259637
259660
  "\u4E2D\u95F4\u4EA7\u7269\u3001\u4E34\u65F6\u811A\u672C\u3001\u8349\u7A3F\u4E0D\u8981\u653E\u8FD9\u91CC\u2014\u2014\u653E\u8FDB\u53BB\u5C31\u4F1A\u6446\u5230\u7528\u6237\u9762\u524D\u3002"
259638
259661
  ].join("\n");
259639
259662
  function buildChatTaskHeader(input) {
@@ -270972,7 +270995,7 @@ ${round.text}`);
270972
270995
  break;
270973
270996
  }
270974
270997
  println(`\u5DF2\u4EA4\u7ED9 ${to} \u53BB\u505A\uFF08\u5F02\u6B65\uFF0C\u4E0D\u7528\u7B49\uFF09\u3002`);
270975
- println(` \u77ED\u540D\uFF08--continue \u7528\u8FD9\u4E2A\uFF09\uFF1A${started.label}`);
270998
+ println(` \u77ED\u540D\uFF08--follow-up \u7528\u8FD9\u4E2A\uFF09\uFF1A${started.label}`);
270976
270999
  println(` delegationId\uFF1A${started.delegationId}`);
270977
271000
  if (started.attachedFiles?.length) println(` \u5E26\u8FC7\u53BB\u7684\u6587\u4EF6\uFF1A${started.attachedFiles.join("\u3001")}`);
270978
271001
  println("\u7ED3\u679C\u5E72\u5B8C\u4E86\u4F1A\u81EA\u5DF1\u56DE\u5230\u8FD9\u6761\u5BF9\u8BDD\u3002\u8FD9\u4E00\u8F6E\u5148\u6536\u5C3E\u2014\u2014\u53EF\u4EE5\u987A\u624B\u8DDF\u7528\u6237\u8BF4\u4E00\u53E5\u4F60\u628A\u8FD9\u4EF6\u4E8B\u6D3E\u51FA\u53BB\u4E86\u3002");
@@ -273755,7 +273778,7 @@ function shimScript() {
273755
273778
  }
273756
273779
 
273757
273780
  // src/index.ts
273758
- var PKG_VERSION = true ? "2.2.28" : "dev";
273781
+ var PKG_VERSION = true ? "2.2.30" : "dev";
273759
273782
  var LOCAL_BIN = localBin();
273760
273783
  var NPM_PREFIX = npmPrefix();
273761
273784
  var INSTANCE = DEFAULT_INSTANCE;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "oasis_test_v2",
3
- "version": "2.2.28",
3
+ "version": "2.2.30",
4
4
  "description": "Oasis node daemon + CLI — background daemon, auto-start, full server CLI",
5
5
  "bin": {
6
6
  "oasis": "./dist/index.js"
@@ -26,6 +26,6 @@
26
26
  "node": ">=20"
27
27
  },
28
28
  "oasisRelease": {
29
- "sourceHead": "e4073f89796b0c8fa3735c985f904e4542185a31"
29
+ "sourceHead": "013d645f571ea8a12f1a119c0dae1cc1f4c3caac"
30
30
  }
31
31
  }