oasis_test 0.1.113 → 0.1.114

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 +137 -41
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -82,7 +82,12 @@ var init_src = __esm({
82
82
  DECLARED_LETTER_UNRESOLVED_EFFECTS = effects(WAKE, NEUTRAL, VETO, WAKE);
83
83
  OPEN_BACKPRESSURE_EFFECTS = effects(WAKE, NEUTRAL, VETO, WAKE);
84
84
  OPEN_HUMAN_CHANGE_REQUEST_EFFECTS = effects(WAKE, NEUTRAL, VETO, WAKE);
85
- OPEN_SELF_ANNOTATION_EFFECTS = effects(NEUTRAL, VETO, VETO, WAKE);
85
+ OPEN_SELF_ANNOTATION_EFFECTS = effects(
86
+ { kind: "veto", exemptedBy: ["open-letter", "declared-letter-unresolved"] },
87
+ VETO,
88
+ VETO,
89
+ WAKE
90
+ );
86
91
  UNPRODUCED_PARTS_OWNER_EFFECTS = effects(WAKE, VETO, VETO, WAKE);
87
92
  UNPRODUCED_PARTS_SYSTEM_EFFECTS = effects(NEUTRAL, VETO, VETO, WAKE);
88
93
  HEAD_REJECTED_EFFECTS = effects(WAKE, VETO, VETO, WAKE);
@@ -1350,8 +1355,16 @@ function convergenceState(model, id) {
1350
1355
  blockers.push({
1351
1356
  kind: "open-self-annotation",
1352
1357
  action: "wait_upstream",
1353
- // §3.7。dispatch=neutral(owner 在等某上游 artifact)。conclude=veto(§4-C 阶段④:自提回压未答就收口=装作没提过,与 auto 对齐);auto=veto、stall=wake(actor=null 呈现 waiting_upstream)。
1354
- effects: { dispatch: NEUTRAL2, conclude: VETO2, autoConclude: VETO2, stall: WAKE2 },
1358
+ // §3.7。dispatch=**veto**(ADR 0161,恢复 0144 前的「回压即阻塞提出方」:提出方的活建在它自己声称
1359
+ // 有问题的上游产物上,上游未答复前不再派它——与引擎 scan OPEN_SELF_ANNOTATION_EFFECTS 同步,
1360
+ // 豁免「未回的信」两类不吞信)。conclude=veto(§4-C 阶段④:自提回压未答就收口=装作没提过,与 auto
1361
+ // 对齐);auto=veto、stall=wake(actor=null 呈现 waiting_upstream)。
1362
+ effects: {
1363
+ dispatch: { kind: "veto", exemptedBy: ["open-letter", "declared-letter-unresolved"] },
1364
+ conclude: VETO2,
1365
+ autoConclude: VETO2,
1366
+ stall: WAKE2
1367
+ },
1355
1368
  actor: null,
1356
1369
  ref: a.id,
1357
1370
  detail: `\u4F60\u5BF9\u4E0A\u6E38\u63D0\u7684\u56DE\u538B\u8FD8\u6CA1\u88AB\u7B54\u590D\uFF08${a.body}\uFF09\u2014\u2014\u7B49\u4E0A\u6E38\u56DE\u5E94\u540E\u7EED\u5B8C\u8FD9\u6761\u518D\u6536\u53E3`
@@ -7299,7 +7312,9 @@ function scan(state, ctx) {
7299
7312
  continue;
7300
7313
  }
7301
7314
  const blockers = scanBlockersForNode(state, node, lw);
7302
- const selfStop = blockers.some((b2) => b2.kind === "open-gap" || b2.kind === "escalation");
7315
+ const selfStop = blockers.some(
7316
+ (b2) => b2.kind === "open-gap" || b2.kind === "escalation" || b2.kind === "open-self-annotation"
7317
+ );
7303
7318
  if (selfStop && !passDispatch(blockers, node.assigneeActorId)) {
7304
7319
  continue;
7305
7320
  }
@@ -7451,6 +7466,16 @@ function scanBlockersForNode(state, node, latest) {
7451
7466
  effects: OPEN_HUMAN_CHANGE_REQUEST_EFFECTS
7452
7467
  });
7453
7468
  }
7469
+ if ((i.kind === "comment" || i.kind === "change_request") && i.resolvedAt === null && i.raisedByNodeId === node.id) {
7470
+ blockers.push({
7471
+ kind: "open-self-annotation",
7472
+ action: "wait_upstream",
7473
+ actor: null,
7474
+ ref: i.id,
7475
+ detail: `\u4F60\u5BF9\u4E0A\u6E38\u63D0\u7684\u56DE\u538B\u8FD8\u6CA1\u88AB\u7B54\u590D\uFF08${i.body}\uFF09\u2014\u2014\u7B49\u4E0A\u6E38 resolve \u540E\u518D\u7EE7\u7EED`,
7476
+ effects: OPEN_SELF_ANNOTATION_EFFECTS
7477
+ });
7478
+ }
7454
7479
  }
7455
7480
  blockers.push(...openCommentBlockers(state, node));
7456
7481
  if (latest && node.latestAcceptId === latest.id && findResolvedGapAfterHead(node.id, latest, state.allIssues())) {
@@ -157449,6 +157474,7 @@ var init_sync_skills = __esm({
157449
157474
  "claude-code",
157450
157475
  "codex",
157451
157476
  "hermes",
157477
+ "oasis-agent",
157452
157478
  "cursor"
157453
157479
  ]);
157454
157480
  }
@@ -159159,6 +159185,8 @@ async function listModels(runtime, executablePath) {
159159
159185
  return cachedDiscovery(runtime, () => discoverAntigravityModels(executablePath));
159160
159186
  case "hermes":
159161
159187
  return cachedDiscovery(runtime, async () => await discoverACPModels(executablePath ?? "hermes", "hermes", ["acp"]) ?? []);
159188
+ case "oasis-agent":
159189
+ return cachedDiscovery(runtime, async () => await discoverACPModels(executablePath ?? "oasis-agent", "oasis-agent", ["acp"], 3e4) ?? []);
159162
159190
  case "kimi":
159163
159191
  return cachedDiscovery(runtime, async () => await discoverACPModels(executablePath ?? "kimi", "kimi", ["acp"]) ?? []);
159164
159192
  case "kiro":
@@ -159336,7 +159364,7 @@ async function runCapture(bin, args, timeoutMs = 15e3) {
159336
159364
  child.on("close", (code) => done(code === 0 ? out : void 0));
159337
159365
  });
159338
159366
  }
159339
- async function discoverACPModels(bin, provider, args = ["acp"]) {
159367
+ async function discoverACPModels(bin, provider, args = ["acp"], timeoutMs = 12e3) {
159340
159368
  const child = (() => {
159341
159369
  try {
159342
159370
  return (0, import_node_child_process8.spawn)(bin, args, { stdio: ["pipe", "pipe", "ignore"], env: { ...process.env } });
@@ -159365,7 +159393,7 @@ async function discoverACPModels(bin, provider, args = ["acp"]) {
159365
159393
  }
159366
159394
  }
159367
159395
  };
159368
- const watchdog = setTimeout(cleanup, 12e3);
159396
+ const watchdog = setTimeout(cleanup, timeoutMs);
159369
159397
  return new Promise((resolve10) => {
159370
159398
  const fail = () => {
159371
159399
  cleanup();
@@ -161264,6 +161292,49 @@ var init_hermes = __esm({
161264
161292
  }
161265
161293
  });
161266
161294
 
161295
+ // ../adapters/src/oasis-agent/index.ts
161296
+ var OasisAgentAdapter;
161297
+ var init_oasis_agent = __esm({
161298
+ "../adapters/src/oasis-agent/index.ts"() {
161299
+ "use strict";
161300
+ init_acp();
161301
+ OasisAgentAdapter = class {
161302
+ constructor(opts = {}) {
161303
+ this.opts = opts;
161304
+ }
161305
+ /** ADR-0093:ACP 引擎原生支持对话追加(同 session 二次 session/prompt)。 */
161306
+ capabilities = { appendInput: true };
161307
+ spawn(job) {
161308
+ return runACPSession(job, {
161309
+ bin: this.opts.oasisAgentBin ?? "oasis-agent",
161310
+ args: ["acp"],
161311
+ yoloEnv: { HERMES_YOLO_MODE: "1" },
161312
+ model: this.opts.model,
161313
+ // 与 hermes 同源:PromptResponse.usage.inputTokens 是 prompt_tokens(已含缓存命中的读),
161314
+ // 归一到 Oasis 的「input / cacheRead 互斥」口径要先减一次。
161315
+ inputTokensIncludeCacheRead: true,
161316
+ // 同上:PromptResponse 上的用量是本轮完整快照,优先于中途的 usage_update 采样。
161317
+ finalUsageIsAuthoritative: true,
161318
+ workRoot: this.opts.workRoot,
161319
+ cleanupWorkdir: this.opts.cleanupWorkdir,
161320
+ env: {
161321
+ ...this.opts.provider ? { HERMES_PROVIDER: this.opts.provider } : {},
161322
+ ...this.opts.env
161323
+ },
161324
+ extraArgs: this.opts.extraArgs,
161325
+ runtimeKind: "oasis-agent",
161326
+ // 与 hermes 同源:不扫 cwd 技能目录,只认 `$HERMES_HOME/skills` + config `skills.external_dirs`。
161327
+ // 用**自己的** env 名(不复用 OASIS_HERMES_SKILLS_DIR)——两个 runtime 各有各的 config.yaml,
161328
+ // 名字分开才能在同机共存时一眼看出哪份 config 是给谁的。node enroll 会把该字面量写进
161329
+ // `~/.oasis-agent/home/config.yaml` 的 skills.external_dirs(见 connect-script.ts)。
161330
+ injectSkillsDirEnv: "OASIS_AGENT_SKILLS_DIR",
161331
+ ...this.opts.syncSkills ? { syncSkills: this.opts.syncSkills } : {}
161332
+ });
161333
+ }
161334
+ };
161335
+ }
161336
+ });
161337
+
161267
161338
  // ../adapters/src/kimi/index.ts
161268
161339
  var KimiAdapter;
161269
161340
  var init_kimi = __esm({
@@ -162490,6 +162561,7 @@ var init_src7 = __esm({
162490
162561
  init_container_runtime();
162491
162562
  init_codex();
162492
162563
  init_hermes();
162564
+ init_oasis_agent();
162493
162565
  init_kimi();
162494
162566
  init_kiro();
162495
162567
  init_reasonix();
@@ -179859,31 +179931,19 @@ else
179859
179931
  echo '\u2192 \u4F9D\u8D56\u5DF2\u5B58\u5728\uFF0C\u8DF3\u8FC7\u5B89\u88C5'
179860
179932
  fi
179861
179933
 
179862
- # ACP \u53EF\u9009\u4F9D\u8D56\uFF1A\u82E5\u672C\u673A\u5B89\u88C5\u4E86 hermes\uFF0C\u786E\u4FDD\u5176 ACP extra \u5DF2\u88C5\uFF08\u8BFB shebang \u5B9A\u4F4D\u5176 pip\uFF09
179863
- if command -v hermes &>/dev/null; then
179864
- HERMES_PY=$(head -1 "$(which hermes)" | sed 's/^#!//')
179865
- HERMES_PIP="$(dirname "$HERMES_PY")/pip"
179866
- if [ -x "$HERMES_PIP" ] && ! "$HERMES_PIP" show agent-client-protocol &>/dev/null 2>&1; then
179867
- echo '\u2192 \u5B89\u88C5 hermes ACP \u4F9D\u8D56...'
179868
- HERMES_AGENT="$(dirname "$(dirname "$(dirname "$HERMES_PY")")")"
179869
- if [ -f "$HERMES_AGENT/pyproject.toml" ]; then
179870
- "$HERMES_PIP" install -e "$HERMES_AGENT[acp]"
179871
- else
179872
- "$HERMES_PIP" install 'agent-client-protocol>=0.9.0,<1.0'
179873
- fi
179874
- fi
179875
- # Oasis \u6BCF\u4F1A\u8BDD\u6280\u80FD\uFF1Ahermes \u4E0D\u626B cwd\uFF0C\u53EA\u8BA4 $HERMES_HOME/skills + config skills.external_dirs\u3002
179876
- # \u5E42\u7B49\u5730\u628A config.yaml \u7684 external_dirs \u914D\u6210\u5B57\u9762\u91CF $OASIS_HERMES_SKILLS_DIR\uFF08\u7531 hermes \u8FD0\u884C\u65F6
179877
- # \u6309 env \u5C55\u5F00\uFF1Badapter \u6BCF\u4F1A\u8BDD\u628A\u8BE5 env \u6307\u5411\u672C workdir \u7684\u6280\u80FD\u76EE\u5F55 \u2192 \u6BCF session \u5404\u81EA\u53D1\u73B0\uFF0C\u8BFB\u4FA7\u9694\u79BB\uFF09\u3002
179878
- HERMES_HOME_DIR="$HERMES_HOME"
179879
- if [ -z "$HERMES_HOME_DIR" ]; then HERMES_HOME_DIR="$HOME/.hermes"; fi
179880
- "$HERMES_PY" - "$HERMES_HOME_DIR/config.yaml" <<'PYEOF' || true
179934
+ # hermes \u7CFB runtime\uFF08hermes / oasis-agent\uFF09\u7684\u6280\u80FD\u5916\u6302\u76EE\u5F55\uFF1A\u4E24\u8005\u90FD**\u4E0D\u626B cwd**\uFF0C\u53EA\u8BA4
179935
+ # $HERMES_HOME/skills + config skills.external_dirs\u3002\u8FD9\u91CC\u5E42\u7B49\u5730\u628A external_dirs \u914D\u6210\u4E00\u4E2A
179936
+ # **\u5B57\u9762\u91CF env \u540D**\uFF08\u7531\u8FD0\u884C\u65F6\u6309 env \u5C55\u5F00\uFF1Badapter \u6BCF\u4F1A\u8BDD\u628A\u8BE5 env \u6307\u5411\u672C workdir \u7684\u6280\u80FD\u76EE\u5F55
179937
+ # \u2192 \u6BCF session \u5404\u81EA\u53D1\u73B0\uFF0C\u8BFB\u4FA7\u9694\u79BB\uFF09\u3002\u5199\u56DE\u4ECD\u843D\u5168\u5C40 $HERMES_HOME/skills\u3002
179938
+ oasis_patch_hermes_skills_dir() {
179939
+ PY="$1"; CFG="$2"; TOKEN="$3"
179940
+ "$PY" - "$CFG" "$TOKEN" <<'PYEOF' || true
179881
179941
  import sys, os
179882
179942
  try:
179883
179943
  import yaml
179884
179944
  except Exception:
179885
179945
  sys.exit(0)
179886
- p = sys.argv[1]
179946
+ p, token = sys.argv[1], sys.argv[2]
179887
179947
  data = {}
179888
179948
  if os.path.exists(p):
179889
179949
  try:
@@ -179901,7 +179961,6 @@ ext = skills.get("external_dirs")
179901
179961
  if not isinstance(ext, list):
179902
179962
  ext = [] if not ext else [ext]
179903
179963
  skills["external_dirs"] = ext
179904
- token = "$OASIS_HERMES_SKILLS_DIR"
179905
179964
  if token not in ext:
179906
179965
  ext.append(token)
179907
179966
  os.makedirs(os.path.dirname(p), exist_ok=True)
@@ -179909,8 +179968,46 @@ if token not in ext:
179909
179968
  with open(tmp, "w") as f:
179910
179969
  yaml.safe_dump(data, f, sort_keys=False, allow_unicode=True)
179911
179970
  os.replace(tmp, p)
179912
- print("-> hermes config.yaml: skills.external_dirs += $OASIS_HERMES_SKILLS_DIR")
179971
+ print("-> %s: skills.external_dirs += %s" % (p, token))
179913
179972
  PYEOF
179973
+ }
179974
+
179975
+ # ACP \u53EF\u9009\u4F9D\u8D56\uFF1A\u82E5\u672C\u673A\u5B89\u88C5\u4E86 hermes\uFF0C\u786E\u4FDD\u5176 ACP extra \u5DF2\u88C5\uFF08\u8BFB shebang \u5B9A\u4F4D\u5176 pip\uFF09
179976
+ if command -v hermes &>/dev/null; then
179977
+ HERMES_PY=$(head -1 "$(which hermes)" | sed 's/^#!//')
179978
+ HERMES_PIP="$(dirname "$HERMES_PY")/pip"
179979
+ if [ -x "$HERMES_PIP" ] && ! "$HERMES_PIP" show agent-client-protocol &>/dev/null 2>&1; then
179980
+ echo '\u2192 \u5B89\u88C5 hermes ACP \u4F9D\u8D56...'
179981
+ HERMES_AGENT="$(dirname "$(dirname "$(dirname "$HERMES_PY")")")"
179982
+ if [ -f "$HERMES_AGENT/pyproject.toml" ]; then
179983
+ "$HERMES_PIP" install -e "$HERMES_AGENT[acp]"
179984
+ else
179985
+ "$HERMES_PIP" install 'agent-client-protocol>=0.9.0,<1.0'
179986
+ fi
179987
+ fi
179988
+ HERMES_HOME_DIR="$HERMES_HOME"
179989
+ if [ -z "$HERMES_HOME_DIR" ]; then HERMES_HOME_DIR="$HOME/.hermes"; fi
179990
+ oasis_patch_hermes_skills_dir "$HERMES_PY" "$HERMES_HOME_DIR/config.yaml" '$OASIS_HERMES_SKILLS_DIR'
179991
+ fi
179992
+
179993
+ # oasis-agent\uFF08hermes-agent \u5206\u53C9\uFF0C\u89C1 docs/oasis-agent-runtime.md\uFF09\u3002\u5B83\u7684 PATH \u5165\u53E3\u662F\u4E00\u5C42 bash
179994
+ # wrapper\uFF0C\u4E0D\u662F python \u811A\u672C\uFF0C\u6240\u4EE5**\u4E0D\u80FD\u8BFB shebang** \u5B9A\u4F4D\u89E3\u91CA\u5668\u2014\u2014\u6309\u5B89\u88C5\u7EA6\u5B9A\u8D70 venv \u8DEF\u5F84\u3002
179995
+ # \u4E0E hermes \u5404\u7528\u5404\u7684 HERMES_HOME \u4E0E\u5404\u81EA\u7684 config.yaml\uFF0C\u540C\u673A\u53EF\u5171\u5B58\u3002
179996
+ if command -v oasis-agent &>/dev/null; then
179997
+ OA_ROOT="$OASIS_AGENT_ROOT"
179998
+ if [ -z "$OA_ROOT" ]; then OA_ROOT="$HOME/.oasis-agent"; fi
179999
+ OA_PY="$OA_ROOT/venv/bin/python"
180000
+ OA_HOME="$OASIS_AGENT_HOME"
180001
+ if [ -z "$OA_HOME" ]; then OA_HOME="$OA_ROOT/home"; fi
180002
+ if [ -x "$OA_PY" ]; then
180003
+ if ! "$OA_PY" -c 'import acp' &>/dev/null; then
180004
+ echo '\u2192 \u5B89\u88C5 oasis-agent ACP \u4F9D\u8D56...'
180005
+ "$OA_PY" -m pip install 'agent-client-protocol>=0.9.0,<1.0' || true
180006
+ fi
180007
+ oasis_patch_hermes_skills_dir "$OA_PY" "$OA_HOME/config.yaml" '$OASIS_AGENT_SKILLS_DIR'
180008
+ else
180009
+ echo "\u26A0 oasis-agent \u5728 PATH \u4E0A\u4F46\u6CA1\u627E\u5230 $OA_PY\u2014\u2014\u6280\u80FD\u5916\u6302\u76EE\u5F55\u672A\u914D\u7F6E\uFF0C\u8BF7\u6838\u5BF9\u5B89\u88C5\u4F4D\u7F6E"
180010
+ fi
179914
180011
  fi
179915
180012
 
179916
180013
  OASIS_DIR="$(pwd)"
@@ -188847,17 +188944,7 @@ var init_daemon_adapter = __esm({
188847
188944
  if (job.binding?.nodeId) return this.opts.remote.spawn(job);
188848
188945
  const msg = `\u62D2\u7EDD\u6D3E\u53D1\uFF1A${job.actor} \u65E0 active runtime \u7ED1\u5B9A\u2014\u2014\u4E0D\u56DE\u843D\u672C\u5730\uFF08\u5148\u5728\u5E73\u53F0\u4E3A\u8BE5\u5458\u5DE5\u914D\u7F6E runtime\uFF09`;
188849
188946
  console.warn(`[dispatch] ${msg}\uFF08artifact=${job.artifactId}\uFF09`);
188850
- return {
188851
- id: `refused-${job.artifactId.replace(/[^a-zA-Z0-9_-]+/g, "_").slice(0, 40)}`,
188852
- kill: async () => {
188853
- },
188854
- onOutput: () => {
188855
- },
188856
- onTelemetry: () => {
188857
- },
188858
- onExit: (cb) => cb({ code: null, reason: "error" })
188859
- // 立败 → strike/退避/熔断 → 表面化给人
188860
- };
188947
+ throw new Error(msg);
188861
188948
  }
188862
188949
  };
188863
188950
  WorkdirBridge = class {
@@ -197513,6 +197600,7 @@ function traceRuntimeKind(runtimeKind) {
197513
197600
  if (runtimeKind === "claude" || runtimeKind === "claude-code") return "claude-code";
197514
197601
  if (runtimeKind === "codex") return "codex";
197515
197602
  if (runtimeKind === "hermes") return "hermes";
197603
+ if (runtimeKind === "oasis-agent") return "oasis-agent";
197516
197604
  return "custom";
197517
197605
  }
197518
197606
  function reworkWavefrontFromEnv(raw) {
@@ -199583,6 +199671,12 @@ async function startServe(opts) {
199583
199671
  console.log(`[new-engine] dispatchWork ${workId} \u2192 ${rev.artifactId} / ${rev.author}${replyIssueId ? `\uFF08\u56DE\u4FE1 ${replyIssueId}\uFF09` : ""}`);
199584
199672
  const art = kernelModel.artifacts.get(rev.artifactId);
199585
199673
  const wid = art?.workspace ?? "";
199674
+ const actorRecord = await registryStore.getActor(rev.author).catch(() => null);
199675
+ const actorKind = actorRecord?.kind ?? (rev.author.startsWith("actor:human:") ? "human" : rev.author.startsWith("actor:agent:") ? "agent" : void 0);
199676
+ if (actorKind === "human") {
199677
+ console.log(`[new-engine] dispatchWork ${workId} \u662F human work\u2014\u2014\u4E0D\u6D3E runtime\uFF0C\u7B49\u5F85\u4EBA\u5DE5\u5904\u7406`);
199678
+ return;
199679
+ }
199586
199680
  const ledgerId = `dispatch:${(0, import_node_crypto45.randomUUID)()}`;
199587
199681
  try {
199588
199682
  await dispatchLedger.insertOpen({
@@ -200886,6 +200980,7 @@ var KNOWN2 = [
200886
200980
  { adapter: "gemini", binary: "gemini" },
200887
200981
  { adapter: "opencode", binary: "opencode" },
200888
200982
  { adapter: "hermes", binary: "hermes" },
200983
+ { adapter: "oasis-agent", binary: "oasis-agent" },
200889
200984
  { adapter: "copilot", binary: "copilot" },
200890
200985
  { adapter: "kimi", binary: "kimi" },
200891
200986
  { adapter: "kiro", binary: "kiro-cli" },
@@ -200895,7 +200990,7 @@ var KNOWN2 = [
200895
200990
  { adapter: "codebuddy", binary: "codebuddy" },
200896
200991
  { adapter: "antigravity", binary: "agy" }
200897
200992
  ];
200898
- var NATIVE_APPEND_RUNTIMES = /* @__PURE__ */ new Set(["hermes", "gemini", "kimi", "kiro", "reasonix"]);
200993
+ var NATIVE_APPEND_RUNTIMES = /* @__PURE__ */ new Set(["hermes", "oasis-agent", "gemini", "kimi", "kiro", "reasonix"]);
200899
200994
  function resolveOnPath(binary) {
200900
200995
  try {
200901
200996
  const cmd = process.platform === "win32" ? "where" : "which";
@@ -201699,6 +201794,7 @@ async function startNode(opts) {
201699
201794
  claude,
201700
201795
  codex: new CodexAdapter({ syncSkills: syncSkillsHook }),
201701
201796
  hermes: new HermesAdapter({ syncSkills: syncSkillsHook }),
201797
+ "oasis-agent": new OasisAgentAdapter({ syncSkills: syncSkillsHook }),
201702
201798
  cursor: new CursorAdapter({ syncSkills: syncSkillsHook }),
201703
201799
  gemini: new GeminiAdapter(),
201704
201800
  opencode: new OpenCodeAdapter(),
@@ -206502,7 +206598,7 @@ function syncRuntimeAssets(candidateRoots, binDir) {
206502
206598
  }
206503
206599
 
206504
206600
  // src/index.ts
206505
- var PKG_VERSION = true ? "0.1.113" : "dev";
206601
+ var PKG_VERSION = true ? "0.1.114" : "dev";
206506
206602
  var OASIS_DIR = path30.join(os12.homedir(), ".oasis");
206507
206603
  var CONFIG_FILE = path30.join(OASIS_DIR, "node-config.json");
206508
206604
  var PID_FILE = path30.join(OASIS_DIR, "node.pid");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "oasis_test",
3
- "version": "0.1.113",
3
+ "version": "0.1.114",
4
4
  "description": "Oasis node daemon + CLI — background daemon, auto-start, full server CLI",
5
5
  "bin": {
6
6
  "oasis": "./dist/index.js"