oasis_test 0.1.90 → 0.1.91

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 +193 -8
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -159207,15 +159207,43 @@ function actorsDomain(opts) {
159207
159207
  const conn = await service.setActorConnectorEnabled(req.params.id, req.params.connectorId, b2.enabled);
159208
159208
  return { status: 200, body: conn };
159209
159209
  });
159210
+ const requireVariableManager = (req) => {
159211
+ if (!isHumanActor(req.auth.actor)) {
159212
+ throw new ApiError(
159213
+ 403,
159214
+ "VARIABLE_MANAGEMENT_FORBIDDEN",
159215
+ "\u53D8\u91CF\u7684\u5217\u51FA/\u5199\u5165/\u5220\u9664\u4EC5\u9650\u4EBA\u7C7B\u63A7\u5236\u53F0\u7528\u6237\uFF1Bagent \u8BFB\u53D6\u51ED\u636E\u8BF7\u7528 `oasis var reveal <key>`"
159216
+ );
159217
+ }
159218
+ };
159219
+ const auditVariableChange = async (req, kind, variableKey, targetScope) => {
159220
+ await opts.credentialAudit?.({
159221
+ kind,
159222
+ actor: req.auth.actor,
159223
+ variableKey,
159224
+ targetScope,
159225
+ source: "console",
159226
+ timestamp: (/* @__PURE__ */ new Date()).toISOString()
159227
+ });
159228
+ };
159210
159229
  router.get("/api/variables", async (req) => {
159230
+ requireVariableManager(req);
159211
159231
  const { service } = await resolveCtx(req.auth.companyId);
159212
159232
  return { status: 200, body: { items: await service.listVariables() } };
159213
159233
  });
159214
159234
  router.post("/api/variables", async (req) => {
159235
+ requireVariableManager(req);
159215
159236
  const { service } = await resolveCtx(req.auth.companyId);
159216
159237
  const b2 = req.body;
159217
159238
  if (!b2?.key) throw new ApiError(400, "BAD_REQUEST", "\u7F3A\u5C11 key");
159218
- const scope = b2.scope ?? "global";
159239
+ if (b2.scope !== "global" && b2.scope !== "personal" && b2.scope !== "project") {
159240
+ throw new ApiError(
159241
+ 400,
159242
+ "BAD_REQUEST",
159243
+ "\u5FC5\u987B\u663E\u5F0F\u63D0\u4F9B scope\uFF08global | personal | project\uFF09\u2014\u2014\u4F5C\u7528\u57DF\u51B3\u5B9A\u8FD9\u6761\u51ED\u636E\u53D1\u7ED9\u8C01\uFF0C\u4E0D\u8BBE\u7F3A\u7701"
159244
+ );
159245
+ }
159246
+ const scope = b2.scope;
159219
159247
  if (scope === "project" && !b2.projectId) {
159220
159248
  throw new ApiError(400, "BAD_REQUEST", "scope=project \u5FC5\u987B\u63D0\u4F9B projectId");
159221
159249
  }
@@ -159225,6 +159253,13 @@ function actorsDomain(opts) {
159225
159253
  if (b2.deliveryMode !== void 0 && b2.deliveryMode !== "env" && b2.deliveryMode !== "ref") {
159226
159254
  throw new ApiError(400, "BAD_REQUEST", "deliveryMode \u53EA\u80FD\u662F env \u6216 ref");
159227
159255
  }
159256
+ if (scope === "personal") {
159257
+ throw new ApiError(
159258
+ 400,
159259
+ "BAD_REQUEST",
159260
+ "personal \u53D8\u91CF\u8BF7\u8D70 POST /api/actors/:id/variables\uFF08\u672C\u7AEF\u70B9\u65E0 actorId\uFF0C\u5199\u5165\u4F1A\u843D\u4E0B\u65E0\u5F52\u5C5E\u7684\u7578\u5F62\u884C\uFF09"
159261
+ );
159262
+ }
159228
159263
  if (b2.value === void 0 || b2.value === "") return { status: 200, body: { ok: true } };
159229
159264
  await service.putVariable({
159230
159265
  key: b2.key,
@@ -159236,9 +159271,16 @@ function actorsDomain(opts) {
159236
159271
  ...b2.overrides !== void 0 ? { overrides: b2.overrides } : {},
159237
159272
  ...b2.encrypted !== void 0 ? { encrypted: b2.encrypted } : {}
159238
159273
  });
159274
+ await auditVariableChange(
159275
+ req,
159276
+ "credential_write",
159277
+ b2.key,
159278
+ scope === "project" ? `project:${b2.projectId}` : "global"
159279
+ );
159239
159280
  return { status: 201, body: { ok: true } };
159240
159281
  });
159241
159282
  router.delete("/api/variables/:key", async (req) => {
159283
+ requireVariableManager(req);
159242
159284
  const { service } = await resolveCtx(req.auth.companyId);
159243
159285
  const projectId = req.query.get("projectId") ?? void 0;
159244
159286
  await service.deleteVariable(
@@ -159246,13 +159288,21 @@ function actorsDomain(opts) {
159246
159288
  void 0,
159247
159289
  projectId ? { projectId } : void 0
159248
159290
  );
159291
+ await auditVariableChange(
159292
+ req,
159293
+ "credential_delete",
159294
+ req.params.key,
159295
+ projectId ? `project:${projectId}` : "global"
159296
+ );
159249
159297
  return { status: 200, body: { ok: true } };
159250
159298
  });
159251
159299
  router.get("/api/actors/:id/variables", async (req) => {
159300
+ requireVariableManager(req);
159252
159301
  const { service } = await resolveCtx(req.auth.companyId);
159253
159302
  return { status: 200, body: { items: await service.listVariables(req.params.id) } };
159254
159303
  });
159255
159304
  router.post("/api/actors/:id/variables", async (req) => {
159305
+ requireVariableManager(req);
159256
159306
  const { service } = await resolveCtx(req.auth.companyId);
159257
159307
  const actorId = req.params.id;
159258
159308
  const b2 = req.body;
@@ -159282,11 +159332,14 @@ function actorsDomain(opts) {
159282
159332
  ...b2.overrides !== void 0 ? { overrides: b2.overrides } : {},
159283
159333
  ...b2.encrypted !== void 0 ? { encrypted: b2.encrypted } : {}
159284
159334
  });
159335
+ await auditVariableChange(req, "credential_write", b2.key, `personal:${actorId}`);
159285
159336
  return { status: 201, body: { ok: true } };
159286
159337
  });
159287
159338
  router.delete("/api/actors/:id/variables/:key", async (req) => {
159339
+ requireVariableManager(req);
159288
159340
  const { service } = await resolveCtx(req.auth.companyId);
159289
159341
  await service.deleteVariable(req.params.key, req.params.id);
159342
+ await auditVariableChange(req, "credential_delete", req.params.key, `personal:${req.params.id}`);
159290
159343
  return { status: 200, body: { ok: true } };
159291
159344
  });
159292
159345
  router.post("/api/variables/reveal", async (req) => {
@@ -184502,17 +184555,53 @@ var COMMAND_DECLS = {
184502
184555
  examples: ['oasis artifact revision register --project oasis --artifact-id artifact:dev:abc --type dev --title "v1.0" --version 1 --content-ref ref-001']
184503
184556
  },
184504
184557
  var: {
184505
- usage: "oasis var <reveal> ...",
184506
- description: "\u51ED\u636E\u4FDD\u9669\u5E93\uFF1A\u8BFB\u53D6\u654F\u611F\u53D8\u91CF\u660E\u6587\uFF08ADR \u51ED\u636E\u4FDD\u9669\u5E93 \xA74.5\uFF09\u3002",
184507
- subCommands: ["var reveal"],
184508
- examples: ["oasis var reveal DEV_SPA_LOGIN_PASSWORD"]
184558
+ usage: "oasis var <reveal|list|set|rm> ...",
184559
+ description: "\u51ED\u636E\u4FDD\u9669\u5E93\uFF08ADR \u51ED\u636E\u4FDD\u9669\u5E93 / ADR 0125\uFF09\u3002reveal \u662F agent \u53D6\u660E\u6587\u7684\u5165\u53E3\uFF1Blist/set/rm \u662F\u7BA1\u7406\u9762\uFF0C\u4EC5\u9650\u4EBA\u7C7B operator token\u3002",
184560
+ subCommands: ["var reveal", "var list", "var set", "var rm"],
184561
+ examples: ["oasis var reveal DEV_SPA_LOGIN_PASSWORD", "oasis var list --scope project --project oasis"]
184509
184562
  },
184510
184563
  "var reveal": {
184511
184564
  usage: "oasis var reveal <key> [--source <tag>]",
184512
- description: "\u8BFB\u53D6\u654F\u611F\u53D8\u91CF\u7684\u660E\u6587\u3002env \u91CC\u82E5\u89C1 oasis://var/X\uFF08\u5F15\u7528\u975E\u660E\u6587\uFF09\u2192 \u7528\u672C\u547D\u4EE4\u53D6\u660E\u6587\u3002\u7F3A key/\u65E0\u6743\u8FD4\u56DE denied\uFF1B\u77ED\u65F6\u8BFB\u53D6\u8FC7\u591A\u4F1A\u9650\u6D41\u3002\u660E\u6587\u53EA\u8F93\u51FA\u5230 stdout\u3002",
184565
+ description: "\u8BFB\u53D6\u654F\u611F\u53D8\u91CF\u7684\u660E\u6587\u3002env \u91CC\u82E5\u89C1 oasis://var/X\uFF08\u5F15\u7528\u975E\u660E\u6587\uFF09\u2192 \u7528\u672C\u547D\u4EE4\u53D6\u660E\u6587\u3002\u7F3A key/\u65E0\u6743\u8FD4\u56DE denied\uFF1B\u77ED\u65F6\u8BFB\u53D6\u8FC7\u591A\u4F1A\u9650\u6D41\u3002**\u8F93\u51FA\u4F1A\u8FDB\u5165\u4F1A\u8BDD\u8BB0\u5F55\u4E0E trace**\u2014\u2014\u80FD\u5305\u8FDB\u5B50\u8FDB\u7A0B\u5C31\u522B\u88F8\u8DD1\uFF0C\u7528 X=$(oasis var reveal K) \u63A5\u4F4F\u3002",
184513
184566
  positional: [{ name: "key", required: true, desc: "\u53D8\u91CF key\uFF08\u53EF\u4F20\u88F8 key \u6216 oasis://var/<key> \u5F15\u7528\uFF0C\u4E8C\u8005\u7B49\u4EF7\uFF09" }],
184514
184567
  flags: [{ name: "source", desc: "\u8C03\u7528\u6765\u6E90\u6807\u8BB0\uFF08\u5BA1\u8BA1\u7528\uFF0C\u5982 smoke-test\uFF1B\u7F3A\u7701 agent-cli\uFF09", own: true }],
184515
184568
  examples: ["oasis var reveal DEV_SPA_LOGIN_PASSWORD", "oasis var reveal oasis://var/GLM_API_KEY --source smoke-test"]
184569
+ },
184570
+ "var list": {
184571
+ usage: "oasis var list [--scope global|project|personal] [--project <id>] [--actor <actorId>]",
184572
+ description: "\u5217\u51FA\u53D8\u91CF\u5143\u6570\u636E\uFF08key / \u4F5C\u7528\u57DF / \u5F52\u5C5E / \u6295\u9012\u6A21\u5F0F\uFF09\u3002**\u503C\u4E0D\u51FA\u73B0**\u3002\u7BA1\u7406\u9762\u547D\u4EE4\uFF0C\u4EC5\u9650\u4EBA\u7C7B operator token\uFF1Bagent \u8C03\u4F1A\u5F97\u5230 403\u3002",
184573
+ flags: [
184574
+ { name: "scope", desc: "\u53EA\u5217\u8FD9\u4E00\u6863\uFF1Aglobal | project | personal", own: true },
184575
+ { name: "project", desc: "\u53EA\u5217\u8BE5\u9879\u76EE\u7684 project \u53D8\u91CF", own: true },
184576
+ { name: "actor", desc: "\u5217\u8BE5\u5458\u5DE5\u53EF\u89C1\u7684\u53D8\u91CF\uFF08personal + global\uFF09", own: true }
184577
+ ],
184578
+ examples: ["oasis var list", "oasis var list --scope project --project oasis"]
184579
+ },
184580
+ "var set": {
184581
+ usage: "oasis var set <key> --scope global|project|personal [--project <id>] [--actor <actorId>] [--delivery env|ref]",
184582
+ description: "\u5199\u5165\u53D8\u91CF\u3002**\u503C\u53EA\u4ECE stdin \u8BFB**\u2014\u2014\u547D\u4EE4\u884C\u53C2\u6570\u4F1A\u8FDB shell history\u3001\u4E5F\u4F1A\u88AB\u540C\u673A\u4EFB\u4F55\u4EBA ps aux \u770B\u89C1\u3002--scope \u5FC5\u586B\u4E0D\u8BBE\u7F3A\u7701\uFF08\u4F5C\u7528\u57DF\u51B3\u5B9A\u8FD9\u6761\u51ED\u636E\u53D1\u7ED9\u8C01\uFF09\u3002\u7BA1\u7406\u9762\u547D\u4EE4\uFF0C\u4EC5\u9650\u4EBA\u7C7B operator token\u3002",
184583
+ positional: [{ name: "key", required: true, desc: "\u53D8\u91CF key" }],
184584
+ flags: [
184585
+ { name: "scope", desc: "global=\u5168\u7EC4\u7EC7 / project=\u6302\u9879\u76EE / personal=\u6302\u5458\u5DE5\uFF08\u5FC5\u586B\uFF09", own: true },
184586
+ { name: "project", desc: "\u9879\u76EE id\uFF08--scope project \u65F6\u5FC5\u586B\uFF09", own: true },
184587
+ { name: "actor", desc: "\u5458\u5DE5 actorId\uFF08--scope personal \u65F6\u5FC5\u586B\uFF09", own: true },
184588
+ { name: "delivery", desc: "\u6295\u9012\u6A21\u5F0F\uFF1Aenv=\u660E\u6587\u6CE8\u5165 / ref=\u5F15\u7528\u6CE8\u5165\uFF08\u654F\u611F\u9879\u7528\u8FD9\u4E2A\uFF09\uFF1B\u7F3A\u7701 env", own: true }
184589
+ ],
184590
+ examples: [
184591
+ 'printf %s "$SECRET" | oasis var set DEV_SPA_LOGIN_PASSWORD --scope project --project oasis --delivery ref',
184592
+ "oasis var set TAVILY_API_KEY --scope global < key.txt"
184593
+ ]
184594
+ },
184595
+ "var rm": {
184596
+ usage: "oasis var rm <key> --scope global|project|personal [--project <id>] [--actor <actorId>]",
184597
+ description: "\u5220\u9664\u4E00\u884C\u53D8\u91CF\u3002--scope \u5FC5\u586B\u2014\u2014\u540C\u4E00\u4E2A key \u53EF\u4EE5\u5728\u4E09\u6863\u5404\u6709\u4E00\u884C\uFF0C\u4E0D\u6307\u660E\u4F1A\u5220\u9519\u884C\u3002\u7BA1\u7406\u9762\u547D\u4EE4\uFF0C\u4EC5\u9650\u4EBA\u7C7B operator token\u3002",
184598
+ positional: [{ name: "key", required: true, desc: "\u53D8\u91CF key" }],
184599
+ flags: [
184600
+ { name: "scope", desc: "\u8981\u5220\u54EA\u4E00\u6863\uFF1Aglobal | project | personal\uFF08\u5FC5\u586B\uFF09", own: true },
184601
+ { name: "project", desc: "\u9879\u76EE id\uFF08--scope project \u65F6\u5FC5\u586B\uFF09", own: true },
184602
+ { name: "actor", desc: "\u5458\u5DE5 actorId\uFF08--scope personal \u65F6\u5FC5\u586B\uFF09", own: true }
184603
+ ],
184604
+ examples: ["oasis var rm STALE_KEY --scope project --project oasis"]
184516
184605
  }
184517
184606
  };
184518
184607
  function formatCommandHelp(decl) {
@@ -184731,6 +184820,12 @@ function needPos(positional, i, usage) {
184731
184820
  if (v2 === void 0) throw new Error(`\u7528\u6CD5: ${usage}`);
184732
184821
  return v2;
184733
184822
  }
184823
+ async function readStdin() {
184824
+ if (process.stdin.isTTY) return "";
184825
+ const chunks = [];
184826
+ for await (const c of process.stdin) chunks.push(Buffer.from(c));
184827
+ return Buffer.concat(chunks).toString("utf8").replace(/\r?\n$/, "");
184828
+ }
184734
184829
  function slugId(value) {
184735
184830
  return value.trim().toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-|-$/g, "") || `artifact-${Date.now()}`;
184736
184831
  }
@@ -186202,8 +186297,98 @@ ${res.warning}`);
186202
186297
  }
186203
186298
  break;
186204
186299
  }
186300
+ const forbidden = (e) => e instanceof ApiRequestError && e.status === 403 ? new Error("\u53D8\u91CF\u7684\u5217\u51FA/\u5199\u5165/\u5220\u9664\u4EC5\u9650\u4EBA\u7C7B\u63A7\u5236\u53F0\u7528\u6237\uFF08operator token\uFF09\u3002agent \u53D6\u51ED\u636E\u8BF7\u7528 `oasis var reveal <key>`\u3002") : void 0;
186301
+ const readScope = () => {
186302
+ const scope = flags.get("scope");
186303
+ if (scope !== "global" && scope !== "project" && scope !== "personal") {
186304
+ throw new Error("--scope \u5FC5\u586B\uFF0C\u53D6\u503C global | project | personal\n global \u5168\u7EC4\u7EC7\u901A\u7528\uFF0C\u6240\u6709 agent \u90FD\u62FF\u5F97\u5230\n project \u6302\u5728\u9879\u76EE\u4E0A\uFF08\u914D --project <id>\uFF09\uFF0C\u6D3E\u5230\u8BE5\u9879\u76EE\u7684 agent \u81EA\u52A8\u83B7\u5F97\n personal \u6302\u5728\u5458\u5DE5\u4E0A\uFF08\u914D --actor <actorId>\uFF09\uFF0C\u53EA\u6709\u90A3\u4E2A agent \u62FF\u5F97\u5230\n\uFF08\u4E0D\u8BBE\u7F3A\u7701\uFF1A\u4F5C\u7528\u57DF\u51B3\u5B9A\u8FD9\u6761\u51ED\u636E\u53D1\u7ED9\u8C01\uFF0C\u731C\u9519\u5C31\u662F\u628A\u5B83\u53D1\u7ED9\u5168\u7EC4\u7EC7\u3002\uFF09");
186305
+ }
186306
+ if (scope === "project" && !flags.get("project")) throw new Error("--scope project \u5FC5\u987B\u914D --project <projectId>");
186307
+ if (scope === "personal" && !flags.get("actor")) throw new Error("--scope personal \u5FC5\u987B\u914D --actor <actorId>");
186308
+ return {
186309
+ scope,
186310
+ ...flags.get("project") ? { projectId: flags.get("project") } : {},
186311
+ ...flags.get("actor") ? { actorId: flags.get("actor") } : {}
186312
+ };
186313
+ };
186314
+ if (sub === "list") {
186315
+ const want = flags.get("scope");
186316
+ const actorFilter = flags.get("actor");
186317
+ const path30 = actorFilter ? `/api/actors/${encodeURIComponent(actorFilter)}/variables` : "/api/variables";
186318
+ let items;
186319
+ try {
186320
+ ({ items } = await api.request("GET", path30));
186321
+ } catch (e) {
186322
+ throw forbidden(e) ?? e;
186323
+ }
186324
+ const rows = items.filter((v2) => !want || v2.scope === want).filter((v2) => !flags.get("project") || v2.projectId === flags.get("project"));
186325
+ if (rows.length === 0) {
186326
+ println("\u6CA1\u6709\u5339\u914D\u7684\u53D8\u91CF");
186327
+ break;
186328
+ }
186329
+ for (const v2 of rows) {
186330
+ const owner = v2.scope === "project" ? v2.projectId ?? "?" : v2.scope === "personal" ? v2.actorId ?? "?" : "-";
186331
+ println(`${v2.key} ${v2.scope} ${owner} ${v2.deliveryMode ?? "env"}${v2.connectorId ? ` [connector:${v2.connectorId}]` : ""}`);
186332
+ }
186333
+ break;
186334
+ }
186335
+ if (sub === "set") {
186336
+ const key = needPos(positional, 1, "oasis var set <key> --scope \u2026 \uFF08\u503C\u4ECE stdin \u8BFB\uFF09");
186337
+ const { scope, projectId, actorId } = readScope();
186338
+ const delivery = flags.get("delivery") ?? flags.get("delivery-mode");
186339
+ if (delivery !== void 0 && delivery !== "env" && delivery !== "ref") {
186340
+ throw new Error("--delivery \u53EA\u80FD\u662F env\uFF08\u660E\u6587\u6CE8\u5165\uFF09\u6216 ref\uFF08\u5F15\u7528\u6CE8\u5165\uFF0C\u654F\u611F\u9879\u7528\u8FD9\u4E2A\uFF09");
186341
+ }
186342
+ const value = await readStdin();
186343
+ if (!value) {
186344
+ throw new Error(`\u503C\u4ECE stdin \u8BFB\uFF0C\u547D\u4EE4\u884C\u4E0D\u63A5\u53D7 --value\uFF08\u4F1A\u8FDB shell history \u548C ps aux\uFF09\u3002\u7528\u6CD5\uFF1A
186345
+ printf %s "$SECRET" | oasis var set ${key} --scope ${scope}${projectId ? ` --project ${projectId}` : ""}
186346
+ oasis var set ${key} --scope ${scope} < secret.txt`);
186347
+ }
186348
+ const body = {
186349
+ key,
186350
+ value,
186351
+ scope,
186352
+ ...projectId ? { projectId } : {},
186353
+ ...delivery ? { deliveryMode: delivery } : {},
186354
+ encrypted: true
186355
+ };
186356
+ try {
186357
+ if (scope === "personal") {
186358
+ await api.request("POST", `/api/actors/${encodeURIComponent(actorId)}/variables`, { ...body, scope: "personal" });
186359
+ } else {
186360
+ await api.request("POST", "/api/variables", body);
186361
+ }
186362
+ } catch (e) {
186363
+ throw forbidden(e) ?? e;
186364
+ }
186365
+ const where = scope === "project" ? `\u9879\u76EE ${projectId}` : scope === "personal" ? `\u5458\u5DE5 ${actorId}` : "\u5168\u7EC4\u7EC7";
186366
+ println(`\u5DF2\u5199\u5165 ${key}\uFF08${where}\uFF0C\u6295\u9012=${delivery ?? "env"}\uFF09`);
186367
+ break;
186368
+ }
186369
+ if (sub === "rm") {
186370
+ const key = needPos(positional, 1, "oasis var rm <key> --scope \u2026");
186371
+ const { scope, projectId, actorId } = readScope();
186372
+ try {
186373
+ if (scope === "personal") {
186374
+ await api.request("DELETE", `/api/actors/${encodeURIComponent(actorId)}/variables/${encodeURIComponent(key)}`);
186375
+ } else {
186376
+ const q = scope === "project" ? `?projectId=${encodeURIComponent(projectId)}` : "";
186377
+ await api.request("DELETE", `/api/variables/${encodeURIComponent(key)}${q}`);
186378
+ }
186379
+ } catch (e) {
186380
+ throw forbidden(e) ?? e;
186381
+ }
186382
+ println(`\u5DF2\u5220\u9664 ${key}\uFF08${scope === "project" ? `\u9879\u76EE ${projectId}` : scope === "personal" ? `\u5458\u5DE5 ${actorId}` : "\u5168\u7EC4\u7EC7"}\uFF09`);
186383
+ break;
186384
+ }
186205
186385
  throw new Error(`\u672A\u77E5\u5B50\u547D\u4EE4\uFF1Aoasis var ${sub ?? ""}
186206
- \u53EF\u7528\uFF1Aoasis var reveal <key> [--source <tag>]`);
186386
+ \u53EF\u7528\uFF1A
186387
+ oasis var reveal <key> [--source <tag>] \u53D6\u660E\u6587\uFF08agent \u7528\uFF09
186388
+ oasis var list [--scope s] [--project p] [--actor a]
186389
+ oasis var set <key> --scope \u2026 [--delivery env|ref] \uFF08\u503C\u4ECE stdin\uFF09
186390
+ oasis var rm <key> --scope \u2026
186391
+ \u540E\u4E09\u4E2A\u662F\u7BA1\u7406\u9762\uFF0C\u4EC5\u9650\u4EBA\u7C7B operator token\u3002`);
186207
186392
  }
186208
186393
  case "pin": {
186209
186394
  const { message } = await api.cmd("pin", {
@@ -186904,7 +187089,7 @@ function syncRuntimeAssets(candidateRoots, binDir) {
186904
187089
  }
186905
187090
 
186906
187091
  // src/index.ts
186907
- var PKG_VERSION = true ? "0.1.90" : "dev";
187092
+ var PKG_VERSION = true ? "0.1.91" : "dev";
186908
187093
  var OASIS_DIR = path29.join(os9.homedir(), ".oasis");
186909
187094
  var CONFIG_FILE = path29.join(OASIS_DIR, "node-config.json");
186910
187095
  var PID_FILE = path29.join(OASIS_DIR, "node.pid");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "oasis_test",
3
- "version": "0.1.90",
3
+ "version": "0.1.91",
4
4
  "description": "Oasis node daemon + CLI — background daemon, auto-start, full server CLI",
5
5
  "bin": {
6
6
  "oasis": "./dist/index.js"