oasis_test_v2 2.2.86 → 2.2.87

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 +27 -33
  2. package/package.json +2 -2
package/dist/index.js CHANGED
@@ -141260,7 +141260,7 @@ ${m2.spec.split("\n").map((l) => ` > ${l}`).join("\n")}`);
141260
141260
  // 队列从 N 变 N+1、随后 conclude 撞 queue not quiescent(本文件「怎么提交」那段注释记的卡死形状)。
141261
141261
  ...args.action === "review" || integrating || queueTaskDue ? [] : [
141262
141262
  ``,
141263
- `### \u4EA4\u4ED8\u65F6\u7684\u975E\u963B\u585E\u4FE1\u606F`,
141263
+ `### \u4EA4\u4ED8\u65F6\u5199\u7ED9\u4E0B\u6E38\u7684\u6CE8\u610F\u4E8B\u9879`,
141264
141264
  `\u4E0B\u9762\u51E0\u9879\u662F\u4EA4\u4ED8\u547D\u4EE4\uFF08\`oasis propose\`\uFF09\u7684\u53C2\u6570\uFF0C\u76F4\u63A5\u52A0\u5728\u90A3\u6761\u547D\u4EE4\u540E\u9762\uFF0C\u548C \`--reason\` \u5199\u5728\u4E00\u8D77\uFF1B\`oasis conclude\` \u53EA\u6536 \`--note\`\uFF0C\u5199\u5728 conclude \u4E0A\u7684\u5176\u5B83\u53C2\u6570\u4E0D\u4F1A\u88AB\u8BB0\u5F55\u3002`,
141265
141265
  `\`--reason\` \u5199\u660E\u76F8\u5BF9\u4E0A\u4E00\u7248\u6539\u4E86\u4EC0\u4E48\u3001\u4E3A\u4EC0\u4E48\u3001\u53EF\u80FD\u5F71\u54CD\u4EC0\u4E48\uFF1B\u9996\u6B21\u7248\u672C\u8BF4\u660E\u672C\u7248\u5B8C\u6210\u601D\u8DEF\u548C\u5185\u5BB9\u3002`,
141266
141266
  `\u53EA\u6709\u5F53\u524D\u7248\u672C\u5DF2\u7ECF\u8FBE\u5230\u4EA4\u4ED8\u6807\u51C6\u65F6\uFF0C\u624D\u53EF\u4EE5\u8BB0\u5F55\uFF08\u6BCF\u9879\u53EF\u4EE5\u5199\u591A\u6761\uFF0C\u7528\u82F1\u6587\u5206\u53F7 \`;\` \u9694\u5F00\uFF1B\u4EE5\u4E0B\u67D0\u4E00\u9879\u5982\u679C\u6CA1\u6709\u5C31\u4E0D\u5199\uFF0C\u540C\u65F6\u8BE5\u53C2\u6570\u4E5F\u4E0D\u5199\uFF09\uFF1A`,
@@ -143302,9 +143302,12 @@ ${supplemental.taskAppend.trim()}
143302
143302
  bundle.files["TASK.md"] += [
143303
143303
  "",
143304
143304
  "## \u6267\u884C\u6062\u590D\uFF08\u4EC5\u5F53\u524D\u8282\u70B9\uFF09",
143305
- "\u672C\u8F6E\u662F\u540C\u4E00\u8282\u70B9\u4E0A\u4E00\u6B21 Attempt \u4E2D\u65AD\u540E\u7684\u7EE7\u7EED\u6267\u884C\u3002\u5F00\u5DE5\u524D\u5148\u8BFB `execution/RESUME.md`\uFF0C",
143306
- "\u6838\u5BF9\u6700\u65B0 Checkpoint\u3001\u5DF2\u5B8C\u6210\u6B65\u9AA4\u3001durable outputs\u3001ExternalEffects \u4E0E\u672A\u51B3\u6B65\u9AA4\uFF1B",
143307
- "\u4ECE\u5C1A\u672A\u5B8C\u6210\u7684\u90E8\u5206\u7EE7\u7EED\uFF0C\u907F\u514D\u91CD\u590D\u5DF2\u7ECF\u786E\u8BA4\u5B8C\u6210\u7684\u6B65\u9AA4\u6216\u5916\u90E8\u526F\u4F5C\u7528\u3002",
143305
+ // 2026-09-24(语菲定稿):进度记录可能比实际慢一步(K-04),换了执行机器时工作目录是新的、
143306
+ // 上一趟写的文件都不在(K-05 第三趟)——两种情况都以工作目录里实际有的文件为准。
143307
+ "\u672C\u8F6E\u662F\u540C\u4E00\u8282\u70B9\u4E0A\u4E00\u6B21\u6267\u884C\u4E2D\u65AD\u540E\u7684\u7EE7\u7EED\u3002\u5F00\u5DE5\u524D\u5148\u8BFB `execution/RESUME.md`\uFF0C\u91CC\u9762\u662F\u4E0A\u4E00\u6B21\u6700\u540E\u8BB0\u4E0B\u7684\u8FDB\u5EA6\uFF1B",
143308
+ "\u518D\u67E5\u770B\u5DE5\u4F5C\u76EE\u5F55\u91CC\u5B9E\u9645\u5DF2\u6709\u7684\u6587\u4EF6\uFF0C\u4EE5\u5B9E\u9645\u60C5\u51B5\u4E3A\u51C6\uFF1A",
143309
+ "- \u8FDB\u5EA6\u91CC\u8BF4\u5DF2\u7ECF\u5199\u597D\u7684\u6587\u4EF6\uFF0C\u5DE5\u4F5C\u76EE\u5F55\u91CC\u8FD8\u5728\u7684\uFF0C\u76F4\u63A5\u63A5\u7740\u7528\uFF1B",
143310
+ "- \u5DE5\u4F5C\u76EE\u5F55\u91CC\u6CA1\u6709\u7684\uFF08\u6BD4\u5982\u8FD9\u6B21\u6362\u4E86\u6267\u884C\u673A\u5668\uFF0C\u5DE5\u4F5C\u76EE\u5F55\u662F\u65B0\u7684\uFF09\uFF0C\u8981\u91CD\u65B0\u5199\u3002",
143308
143311
  "\u8FD9\u4EFD\u6062\u590D\u6750\u6599\u4E0D\u662F\u4E0A\u6E38\u8282\u70B9\u7684\u4E1A\u52A1\u4EA4\u63A5\uFF1B\u4E0A\u6E38\u4EA4\u63A5\u4ECD\u4EE5 `inputs/*/_HANDOFF.md` \u4E3A\u51C6\u3002",
143309
143312
  ""
143310
143313
  ].join("\n");
@@ -249352,8 +249355,10 @@ function executionContinuityDomain(service) {
249352
249355
  router.post("/api/execution-continuity/attempts/:id/checkpoints", async (req) => {
249353
249356
  const attemptId = resolveAttemptWriter(req, req.params.id);
249354
249357
  const b2 = req.body ?? {};
249358
+ if (b2.pendingSteps === void 0) b2.pendingSteps = [];
249359
+ if (b2.recoverability === void 0) b2.recoverability = "partial";
249355
249360
  if (!isStringArray(b2.pendingSteps) || !b2.recoverability || !["full", "partial", "none"].includes(b2.recoverability) || b2.durableRefs !== void 0 && !isRefArray(b2.durableRefs) || b2.completedStepIds !== void 0 && !isStringArray(b2.completedStepIds) || b2.trigger !== void 0 && !AGENT_CHECKPOINT_TRIGGERS.includes(b2.trigger)) {
249356
- throw new ApiError(400, "BAD_REQUEST", "\u7F3A\u5C11 pendingSteps \u6216 recoverability(full|partial|none)");
249361
+ throw new ApiError(400, "BAD_REQUEST", "pendingSteps \u987B\u4E3A\u5B57\u7B26\u4E32\u6570\u7EC4\uFF1Brecoverability \u53EA\u80FD\u662F full|partial|none");
249357
249362
  }
249358
249363
  const checkpoint = await service.checkpoint({
249359
249364
  attemptId,
@@ -249473,6 +249478,9 @@ function mergeContinuityRefs2(primary, extra) {
249473
249478
  }
249474
249479
  return out;
249475
249480
  }
249481
+ function stripRecoverability(text7) {
249482
+ return text7.replace(/\s*recoverability=\w+/g, "");
249483
+ }
249476
249484
  function renderResumePack(pack) {
249477
249485
  const lines = [
249478
249486
  "# ResumePack",
@@ -249486,7 +249494,7 @@ function renderResumePack(pack) {
249486
249494
  lines.push("", "## Previous attempt");
249487
249495
  if (!pack.previousAttempt) lines.push("- This is the first attempt.");
249488
249496
  else {
249489
- lines.push(`- Attempt ${pack.previousAttempt.attemptNo ?? "?"}: ${pack.previousHandoff?.summary || pack.previousAttempt.status}`);
249497
+ lines.push(`- Attempt ${pack.previousAttempt.attemptNo ?? "?"}: ${stripRecoverability(pack.previousHandoff?.summary || pack.previousAttempt.status)}`);
249490
249498
  const cp = pack.latestCheckpoint;
249491
249499
  const recoverySource = pack.recoverySourceAttempt ?? (cp ? pack.previousAttempt : null);
249492
249500
  if (cp && recoverySource && recoverySource.id !== pack.previousAttempt.id) {
@@ -249494,7 +249502,6 @@ function renderResumePack(pack) {
249494
249502
  }
249495
249503
  const done = cp?.completedStepIds ?? [];
249496
249504
  const durable = (cp?.durableRefs.length ? cp.durableRefs : pack.previousHandoff?.changedOutputs) ?? [];
249497
- if (cp) lines.push(`- Recoverability: ${cp.recoverability}`);
249498
249505
  if (done.length > 0) lines.push(`- \u4E0A\u4E00\u8D9F\u5DF2\u5B8C\u6210\u7684\u6B65\u9AA4\uFF1A${done.join("\u3001")}`);
249499
249506
  for (const ref2 of durable) {
249500
249507
  lines.push(` - durable: ${renderRefId(ref2)}${ref2.version ? `@${ref2.version}` : ""}${ref2.label ? ` \u2014 ${ref2.label}` : ""}`);
@@ -249507,20 +249514,6 @@ function renderResumePack(pack) {
249507
249514
  );
249508
249515
  }
249509
249516
  }
249510
- lines.push("", "## External effects");
249511
- const effectSummary = pack.externalEffectSummary;
249512
- if (effectSummary.total === 0) lines.push("- None recorded");
249513
- else {
249514
- const totals = effectSummary.totalByStatus;
249515
- const included = effectSummary.includedByStatus;
249516
- lines.push(
249517
- `- ${effectSummary.total} total; showing all ${included.pending} pending, latest ${included.succeeded} of ${totals.succeeded} succeeded, and latest ${included.failed} of ${totals.failed} retryable failed. Older records remain available through the history query.`
249518
- );
249519
- }
249520
- for (const effect of pack.externalEffects) {
249521
- const action = effect.status === "succeeded" ? "do not repeat" : effect.status === "pending" ? "execution uncertain; reconcile before retry" : "failed; retry allowed";
249522
- lines.push(`- [${effect.status}/${effect.source}] ${effect.kind} \u2192 ${effect.target} (${action}; key ${effect.idempotencyKey})`);
249523
- }
249524
249517
  const snapshot = Buffer.from(JSON.stringify(pack), "utf8").toString("base64url");
249525
249518
  lines.push("", `${RESUME_SNAPSHOT_PREFIX}${snapshot}${RESUME_SNAPSHOT_SUFFIX}`);
249526
249519
  return `${lines.join("\n")}
@@ -249654,7 +249647,7 @@ function renderCoordinatorView(view, taskBackground) {
249654
249647
  );
249655
249648
  if (source.recoveryCheckpoint) {
249656
249649
  lines.push(
249657
- ` - Recovery checkpoint: #${source.recoveryCheckpoint.seq} (${source.recoveryCheckpoint.recoverability}) from Attempt ${source.recoveredFromAttempt.attemptNo ?? "?"}`
249650
+ ` - Recovery checkpoint: #${source.recoveryCheckpoint.seq} from Attempt ${source.recoveredFromAttempt.attemptNo ?? "?"}`
249658
249651
  );
249659
249652
  for (const step of source.recoveryCheckpoint.pendingSteps) lines.push(` - Recovery pending: ${step}`);
249660
249653
  }
@@ -249664,14 +249657,14 @@ function renderCoordinatorView(view, taskBackground) {
249664
249657
  lines.push(` - Recovery Agent handoff (${handoffFrom}): ${source.recoveryHandoff.summary}`);
249665
249658
  } else if (source.recoveryHandoff.producedBy === "system_reconstructed") {
249666
249659
  lines.push(
249667
- ` - Recovery system reconstruction (${handoffFrom}, not an Agent conclusion): ${source.recoveryHandoff.summary}`
249660
+ ` - Recovery system reconstruction (${handoffFrom}, not an Agent conclusion): ${stripRecoverability(source.recoveryHandoff.summary)}`
249668
249661
  );
249669
249662
  }
249670
249663
  }
249671
249664
  for (const risk of source.recoveryHandoff?.risks ?? []) lines.push(` - Recovery risk: ${risk}`);
249672
249665
  }
249673
249666
  if (node2.progress) {
249674
- lines.push(`- Latest checkpoint: ${node2.progress.recoverability} at ${node2.progress.lastCheckpointAt}`);
249667
+ lines.push(`- Latest checkpoint at ${node2.progress.lastCheckpointAt}`);
249675
249668
  for (const step of node2.progress.pendingSteps) lines.push(` - Pending: ${step}`);
249676
249669
  }
249677
249670
  if (node2.handoffProducer === "agent" && node2.summary.trim() && !sameCoordinatorText(node2.summary, node2.conclusion)) {
@@ -292957,16 +292950,16 @@ var COMMAND_DECLS = {
292957
292950
  },
292958
292951
  "continuity-checkpoint": {
292959
292952
  group: "\u56FE\u673A\u5236\uFF08\xA76/\xA77\uFF09",
292960
- usage: "oasis continuity-checkpoint --pending <list> --recoverability full|partial|none [--trigger plan_completed|stage_completed] [--refs <json-array>] [--completed <list>]",
292953
+ usage: "oasis continuity-checkpoint [--completed <list>] [--pending <list>] [--recoverability full|partial|none] [--trigger plan_completed|stage_completed] [--refs <json-array>]",
292961
292954
  description: "\u4E3A\u5F53\u524D\u6D3E\u53D1 attempt \u8FFD\u52A0\u53EF\u6062\u590D\u68C0\u67E5\u70B9\uFF08\u81EA\u52A8\u4FDD\u7559\u6700\u65B0\u4E94\u4E2A\uFF09\u3002",
292962
292955
  flags: [
292963
- { name: "pending", desc: `\u5F85\u5B8C\u6210\u6B65\u9AA4\u3002JSON \u6570\u7EC4 '["a","b"]' \u6216\u5206\u53F7\u5206\u9694 "a; b" \u90FD\u6536`, required: true },
292964
- { name: "recoverability", desc: "\u6062\u590D\u7A0B\u5EA6\uFF08full | partial | none\uFF09", required: true },
292956
+ { name: "pending", desc: '\u8FD8\u6CA1\u505A\u7684\u6B65\u9AA4\u3002\u5206\u53F7\u5206\u9694 "a; b" \u6216 JSON \u6570\u7EC4\u90FD\u6536\uFF1B\u4E0D\u5199\u6216\u5199\u7A7A = \u6CA1\u6709\u5269\u4F59' },
292957
+ { name: "recoverability", desc: "\u6062\u590D\u7A0B\u5EA6\uFF08full | partial | none\uFF09\uFF0C\u53EF\u9009\uFF1B\u4E0D\u5199\u6309 partial \u8BB0" },
292965
292958
  { name: "refs", desc: "\u5DF2\u6301\u4E45\u5316\u4EA7\u51FA\u5F15\u7528 JSON array" },
292966
- { name: "completed", desc: "\u5DF2\u5B8C\u6210\u7684\u7A33\u5B9A\u6B65\u9AA4 id\u3002JSON \u6570\u7EC4\u6216\u5206\u53F7\u5206\u9694\u90FD\u6536" },
292959
+ { name: "completed", desc: "\u5230\u73B0\u5728\u4E3A\u6B62\u786E\u5B9E\u505A\u5B8C\u7684\u6B65\u9AA4\u3002\u5206\u53F7\u5206\u9694\u6216 JSON \u6570\u7EC4\u90FD\u6536" },
292967
292960
  { name: "trigger", desc: "\u7ED3\u6784\u5316\u8FB9\u754C\uFF08plan_completed | stage_completed\uFF1B\u7701\u7565\u4E3A\u666E\u901A agent checkpoint\uFF09" }
292968
292961
  ],
292969
- examples: [`oasis continuity-checkpoint --pending '["run tests"]' --recoverability full --refs '[{"kind":"file","id":"src/x.ts"}]'`]
292962
+ examples: ['oasis continuity-checkpoint --completed "\u67E5\u5B8C\u5317\u4EAC\u3001\u4E0A\u6D77\u653F\u7B56\uFF0C\u7ED3\u8BBA\u8BB0\u5728 notes.md; \u5199\u597D deliverable/beijing.md" --pending "\u5199 deliverable/shanghai.md; \u5199\u603B\u7ED3.md"']
292970
292963
  },
292971
292964
  "continuity-effect": {
292972
292965
  group: "\u56FE\u673A\u5236\uFF08\xA76/\xA77\uFF09",
@@ -294810,7 +294803,7 @@ async function waitForCommandAuthorization(base, headers, draftId, fallback) {
294810
294803
  }
294811
294804
  }
294812
294805
  }
294813
- var CLI_VERSION = "2.2.86" ? "2.2.86" : "dev";
294806
+ var CLI_VERSION = "2.2.87" ? "2.2.87" : "dev";
294814
294807
  function apiHeaders(token, company) {
294815
294808
  const headers = {
294816
294809
  authorization: `Bearer ${token}`,
@@ -295755,9 +295748,10 @@ Trace: ${run.traceRunId}`);
295755
295748
  break;
295756
295749
  }
295757
295750
  case "continuity-checkpoint": {
295751
+ const pendingRaw = flags.get("pending");
295758
295752
  const result = await api.post("/api/execution-continuity/attempts/current/checkpoints", {
295759
- pendingSteps: parseStringArrayFlag(need(flags, "pending"), "pending"),
295760
- recoverability: need(flags, "recoverability"),
295753
+ pendingSteps: pendingRaw === void 0 || pendingRaw.trim() === "" ? [] : parseStringArrayFlag(pendingRaw, "pending"),
295754
+ ...flags.has("recoverability") ? { recoverability: flags.get("recoverability") } : {},
295761
295755
  durableRefs: flags.has("refs") ? parseArrayFlag(flags.get("refs"), "refs") : [],
295762
295756
  completedStepIds: flags.has("completed") ? parseStringArrayFlag(flags.get("completed"), "completed") : [],
295763
295757
  ...flags.has("trigger") ? { trigger: flags.get("trigger") } : {}
@@ -298779,7 +298773,7 @@ function shimScript() {
298779
298773
  }
298780
298774
 
298781
298775
  // src/index.ts
298782
- var PKG_VERSION = true ? "2.2.86" : "dev";
298776
+ var PKG_VERSION = true ? "2.2.87" : "dev";
298783
298777
  var LOCAL_BIN = localBin();
298784
298778
  var NPM_PREFIX = npmPrefix();
298785
298779
  var INSTANCE = DEFAULT_INSTANCE;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "oasis_test_v2",
3
- "version": "2.2.86",
3
+ "version": "2.2.87",
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": "b4a9ec478fa40119ad3a0360569d1a11af27336f"
29
+ "sourceHead": "9c930cd1c2bf1757fde986333301a7b62376c0ad"
30
30
  }
31
31
  }