rovloom 0.4.0 → 0.6.0

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 (39) hide show
  1. package/README.md +21 -41
  2. package/dist/src/admin/index.js +1 -1
  3. package/dist/src/{chunk-smpevv7n.js → chunk-0dqx2mmz.js} +9 -16
  4. package/dist/src/{chunk-z1vhdr3c.js → chunk-0qgk7mhz.js} +16 -15
  5. package/dist/src/{chunk-qfyefed3.js → chunk-1bf0wmgk.js} +1 -1
  6. package/dist/src/{chunk-ymsx7hhd.js → chunk-3dvn33c4.js} +61 -62
  7. package/dist/src/chunk-5b8g62kw.js +438 -0
  8. package/dist/src/chunk-5j0gj6w2.js +7 -0
  9. package/dist/src/{chunk-v1httsp6.js → chunk-8ykrqhxh.js} +10 -4
  10. package/dist/src/{chunk-76wgt2g5.js → chunk-9zkq0kc8.js} +14 -8
  11. package/dist/src/{chunk-6hxy1fcg.js → chunk-bspzg8er.js} +2 -2
  12. package/dist/src/{chunk-dtj9y82v.js → chunk-d2kz25f2.js} +269 -39
  13. package/dist/src/{chunk-khmgp03q.js → chunk-ez7d5dac.js} +77 -16
  14. package/dist/src/{chunk-emcefrc1.js → chunk-g27b2gmx.js} +3 -4
  15. package/dist/src/{chunk-keg92d31.js → chunk-gyvqqnjb.js} +34 -59
  16. package/dist/src/{chunk-bjdqj43d.js → chunk-hpzr94hm.js} +23 -6
  17. package/dist/src/{chunk-t3pn1435.js → chunk-jf4r0r44.js} +4 -4
  18. package/dist/src/{chunk-4etdq0cp.js → chunk-jka7v3wb.js} +4 -7
  19. package/dist/src/{chunk-5vx1b9z8.js → chunk-m9c1pnv9.js} +5 -5
  20. package/dist/src/{chunk-7k9g0x5e.js → chunk-mg0fd6ph.js} +1 -1
  21. package/dist/src/{chunk-1fyfrgte.js → chunk-n6wtjyfb.js} +10 -18
  22. package/dist/src/{chunk-nyn75b8v.js → chunk-qjh9x872.js} +30 -1
  23. package/dist/src/{chunk-xmkgq3nh.js → chunk-s3ydr65k.js} +2 -2
  24. package/dist/src/{chunk-4af38z2b.js → chunk-srfbjwtk.js} +4 -3
  25. package/dist/src/{chunk-8x6ygvhh.js → chunk-ssp57p43.js} +27 -31
  26. package/dist/src/{chunk-qab3m6nh.js → chunk-wxqhscsw.js} +43 -7
  27. package/dist/src/{chunk-7q96e161.js → chunk-x0td5wn4.js} +6 -12
  28. package/dist/src/{chunk-ydmabg5t.js → chunk-ytpfmcp1.js} +7 -6
  29. package/dist/src/{chunk-wdr3sdsm.js → chunk-yv9px0f5.js} +60 -32
  30. package/dist/src/{chunk-se5daacy.js → chunk-z7kkfrgz.js} +1 -1
  31. package/dist/src/{chunk-fd9n51mc.js → chunk-zjkjjm81.js} +87 -61
  32. package/dist/src/cli/index.js +27 -19
  33. package/dist/src/cli/main.js +18 -13
  34. package/dist/src/mcp/index.js +6 -5
  35. package/dist/src/runtime/index.js +2 -2
  36. package/dist/src/service/index.js +3 -4
  37. package/dist/src/store.js +1 -1
  38. package/dist/src/webui/index.js +1107 -158
  39. package/package.json +1 -1
@@ -30,30 +30,35 @@ import {
30
30
  checkedRemoteLuvusConfig,
31
31
  createPinnedRemoteLuvus
32
32
  } from "./chunk-5s2emvww.js";
33
+ import {
34
+ cliMessages2,
35
+ formatMessage2
36
+ } from "./chunk-5b8g62kw.js";
33
37
  import {
34
38
  writeAdminFiles2,
35
39
  managementSourceExists2
36
- } from "./chunk-wdr3sdsm.js";
40
+ } from "./chunk-yv9px0f5.js";
37
41
  import {
38
42
  setupFileStamp,
39
43
  writeSetupFile,
40
44
  readSetupJson,
41
45
  writeSetupJson,
42
46
  REGISTRY_MAX_BYTES,
43
- parseRegistry
44
- } from "./chunk-qab3m6nh.js";
47
+ parseRegistry,
48
+ isAdminPlaceholder
49
+ } from "./chunk-wxqhscsw.js";
45
50
  import {
46
51
  readRuntimeConfig2
47
- } from "./chunk-6hxy1fcg.js";
52
+ } from "./chunk-bspzg8er.js";
48
53
  import {
49
54
  runtimeReference,
50
55
  readRuntimeFile,
51
56
  readRuntimeJson
52
- } from "./chunk-se5daacy.js";
57
+ } from "./chunk-z7kkfrgz.js";
53
58
  import {
54
59
  luvusMode,
55
60
  CliError2
56
- } from "./chunk-bjdqj43d.js";
61
+ } from "./chunk-hpzr94hm.js";
57
62
  import {
58
63
  canonicalLoopbackHost
59
64
  } from "./chunk-6n9s7nfe.js";
@@ -607,13 +612,13 @@ class SetupApproval {
607
612
  if (!["issued", "paired", "native_approved"].includes(previous.phase) || previous.phase === "issued" && Date.now() >= previous.expires_at) {
608
613
  throw new CliError2("configuration_required");
609
614
  }
610
- if (!await this.terminal.confirm("Resume the existing device setup? / \u7EE7\u7EED\u539F\u8BBE\u5907\u8BBE\u7F6E\uFF1F")) {
615
+ if (!await this.terminal.confirm(cliMessages2(this.terminal.io.language)["setup.approval.resumeConfirm"])) {
611
616
  throw new CliError2("configuration_required");
612
617
  }
613
618
  return { plan: previous };
614
619
  }
615
- if (!await this.terminal.confirm("Pair one Connector with this Gateway? / \u5141\u8BB8\u914D\u5BF9\u4E00\u4E2A Connector\uFF1F")) {
616
- throw new CliError2("configuration_required");
620
+ if (!await this.terminal.confirm(cliMessages2(this.terminal.io.language)["setup.approval.pairConfirm"])) {
621
+ return { declined: true };
617
622
  }
618
623
  const now = Date.now();
619
624
  const attempt = randomUUID();
@@ -668,7 +673,10 @@ class SetupApproval {
668
673
  if (device.status === "revoked") {
669
674
  throw new CliError2("configuration_required");
670
675
  }
671
- if (!await this.terminal.confirm("Re-pair the existing Connector device " + device.name + " (" + machine + ")? The credential it holds stops working now and in-flight calls become unknown. / \u91CD\u65B0\u914D\u5BF9\u5DF2\u6709\u8BBE\u5907 " + device.name + "\uFF08" + machine + "\uFF09\uFF1F\u8BE5\u8BBE\u5907\u5F53\u524D\u51ED\u636E\u7ACB\u5373\u5931\u6548\uFF0C\u8FDB\u884C\u4E2D\u7684\u8C03\u7528\u7ED3\u679C\u53D8\u4E3A\u672A\u77E5\u3002")) {
676
+ if (!await this.terminal.confirm(formatMessage2(cliMessages2(this.terminal.io.language)["setup.approval.repairDeviceConfirm"], {
677
+ name: device.name,
678
+ machine
679
+ }))) {
672
680
  throw new CliError2("configuration_required");
673
681
  }
674
682
  for (let attempt = 0;; attempt++) {
@@ -820,6 +828,34 @@ function unionGrants(existing, added) {
820
828
  }
821
829
  return merged;
822
830
  }
831
+ function publishFirstCallers(path, resource, authorization, caller) {
832
+ const previous = readSetupJson(path, REGISTRY_MAX_BYTES);
833
+ const created = {
834
+ schema_version: 1,
835
+ kind: "mcp-caller-source",
836
+ resource,
837
+ local_policy: authorization.policies.local,
838
+ callers: [caller]
839
+ };
840
+ if (previous === undefined) {
841
+ parseRegistry(JSON.parse(boundedJson2(created, REGISTRY_MAX_BYTES)));
842
+ writeSetupFile(path, boundedJson2(created, REGISTRY_MAX_BYTES), false);
843
+ return;
844
+ }
845
+ const registry = parseRegistry(previous, resource);
846
+ const kept = registry.callers.filter((entry) => isAdminPlaceholder(entry) || entry.scope === "gateway" || boundedJson2(entry, REGISTRY_MAX_BYTES) === boundedJson2(caller, REGISTRY_MAX_BYTES));
847
+ if (kept.length !== registry.callers.length) {
848
+ throw new CliError2("configuration_required");
849
+ }
850
+ const callers = [...kept];
851
+ if (!callers.some((entry) => boundedJson2(entry, REGISTRY_MAX_BYTES) === boundedJson2(caller, REGISTRY_MAX_BYTES))) {
852
+ callers.push(caller);
853
+ }
854
+ const merged = { ...created, callers };
855
+ parseRegistry(JSON.parse(boundedJson2(merged, REGISTRY_MAX_BYTES)), resource);
856
+ const stamp = setupFileStamp(path);
857
+ writeSetupFile(path, boundedJson2(merged, REGISTRY_MAX_BYTES), true, stamp);
858
+ }
823
859
 
824
860
  class GatewaySetup {
825
861
  config;
@@ -851,35 +887,34 @@ class GatewaySetup {
851
887
  this.#begun = true;
852
888
  const active = this.approval.active();
853
889
  if (active?.repair && active.phase === "configured") {
854
- this.terminal.show(`Resuming the device re-pairing; waiting for the Connector to reconnect. / \u7EE7\u7EED\u539F\u91CD\u65B0\u914D\u5BF9\uFF0C\u7B49\u5F85 Connector \u91CD\u8FDE\u3002
855
- `);
890
+ this.terminal.show(cliMessages2(this.terminal.io.language)["setup.gateway.resumeRePairing"]);
856
891
  } else {
857
892
  const issued = await this.approval.issueRepair();
858
- this.terminal.show("Gateway MCP: " + mcpUrl + `
859
- Connector endpoint: ` + gateway.transport.url.replace(/\/connector$/, "") + `
860
- One-time re-pairing code for the existing device (5 minutes; keep private) / \u5DF2\u6709\u8BBE\u5907\u7684\u4E00\u6B21\u6027\u91CD\u65B0\u914D\u5BF9\u7801\uFF085\u5206\u949F\uFF0C\u8BF7\u4FDD\u5BC6\uFF09:
861
- ` + issued.code + `
862
- Stop that Connector, then run rovloom connector --repair on its machine and enter the code. The old credential no longer works.
863
- \u5728\u8BE5\u8BBE\u5907\u4E0A\u505C\u6B62 Connector\uFF0C\u8FD0\u884C rovloom connector --repair \u5E76\u8F93\u5165\u6B64\u7801\uFF1B\u65E7\u51ED\u636E\u5DF2\u5931\u6548\u3002
864
- `);
893
+ this.terminal.show(formatMessage2(cliMessages2(this.terminal.io.language)["setup.gateway.repairCodeBlock"], {
894
+ mcpUrl,
895
+ endpoint: gateway.transport.url.replace(/\/connector$/, ""),
896
+ code: issued.code
897
+ }));
865
898
  }
866
899
  }
867
900
  const current = this.approval.active();
868
901
  if (!this.#begun && (current?.phase === "ready" ? this.options.addDevice === true : current?.phase !== "configured")) {
869
902
  this.#begun = true;
870
- this.terminal.show("Gateway MCP: " + mcpUrl + `
871
- Connector endpoint: ` + gateway.transport.url.replace(/\/connector$/, "") + `
872
- `);
903
+ this.terminal.show(formatMessage2(cliMessages2(this.terminal.io.language)["setup.gateway.endpoints"], {
904
+ mcpUrl,
905
+ endpoint: gateway.transport.url.replace(/\/connector$/, "")
906
+ }));
873
907
  const issued = await this.approval.issue();
908
+ if (issued.declined) {
909
+ const page = this.config.management_enabled ? "http://127.0.0.1:" + this.config.management_port + "/" : "";
910
+ this.terminal.show(cliMessages2(this.terminal.io.language)["setup.gateway.unpairedRunning"] + (page ? formatMessage2(cliMessages2(this.terminal.io.language)["setup.gateway.managementFirstPairing"], { page }) : cliMessages2(this.terminal.io.language)["setup.gateway.managementDisabled"]));
911
+ this.terminal.finishQuestions();
912
+ return;
913
+ }
874
914
  if (issued.code) {
875
- this.terminal.show(`One-time pairing code (5 minutes; keep private) / \u4E00\u6B21\u6027\u914D\u5BF9\u7801\uFF085\u5206\u949F\uFF0C\u8BF7\u4FDD\u5BC6\uFF09:
876
- ` + issued.code + `
877
- Run rovloom connector in another local terminal and enter the Gateway address and code.
878
- \u5728 Connector \u7684\u672C\u5730\u7EC8\u7AEF\u8F93\u5165 Gateway \u5730\u5740\u4E0E\u8BE5\u7801\uFF1B\u968F\u540E\u56DE\u5230\u6B64\u7EC8\u7AEF\u6279\u51C6\u5B9E\u6D4B\u5B89\u88C5\u3002
879
- `);
915
+ this.terminal.show(formatMessage2(cliMessages2(this.terminal.io.language)["setup.gateway.pairingCodeBlock"], { code: issued.code }));
880
916
  } else {
881
- this.terminal.show(`Resuming the existing setup; no new enrollment or credential is issued. / \u7EE7\u7EED\u539F\u8BBE\u7F6E\uFF0C\u4E0D\u91CD\u65B0\u7B7E\u53D1\u3002
882
- `);
917
+ this.terminal.show(cliMessages2(this.terminal.io.language)["setup.gateway.resumingExisting"]);
883
918
  }
884
919
  }
885
920
  const plan = this.approval.active();
@@ -901,8 +936,7 @@ Run rovloom connector in another local terminal and enter the Gateway address an
901
936
  }
902
937
  if (device?.authenticated && device.ready && (plan.providers ?? ["luvus"]).every((kind) => device.providers.some((entry) => entry.provider_id === kind && entry.ready))) {
903
938
  this.approval.finishReady(plan.attempt_id);
904
- this.terminal.show(`connector_ready / Connector \u5DF2\u901A\u8FC7\u771F\u5B9E\u8BA4\u8BC1\u4E14\u5168\u90E8\u6240\u9009\u539F\u751F provider \u5C31\u7EEA\u3002
905
- `);
939
+ this.terminal.show(cliMessages2(this.terminal.io.language)["setup.gateway.connectorReady"]);
906
940
  clearInterval(this.#timer);
907
941
  this.#timer = undefined;
908
942
  }
@@ -934,7 +968,9 @@ Run rovloom connector in another local terminal and enter the Gateway address an
934
968
  })) {
935
969
  throw new CliError2("configuration_required");
936
970
  }
937
- await this.approval.approveNative(request.plan.attempt_id, kinds, fingerprint, "Allow this paired device's measured native installations (" + reviewed.map((entry) => entry.kind + " " + entry.label + ", Target " + boundedJson2(entry.target) + ", binary SHA-256 " + entry.binary_sha256).join("; ") + `) for reviewed workspace/Agent operations and one local MCP caller? Terminal execution is controlled by the Connector machine owner's local configuration. / \u6279\u51C6\u8FD9\u4E9B\u5B9E\u6D4B\u539F\u751F\u6765\u6E90\u3001\u5404\u81EA\u7A97\u53E3/Agent \u64CD\u4F5C\u53CA\u4E00\u4E2A\u672C\u673A MCP caller\uFF08\u7EC8\u7AEF\u6267\u884C\u7531 Connector \u672C\u673A\u6240\u6709\u8005\u914D\u7F6E\u51B3\u5B9A\uFF09\uFF1F`, request.signal);
971
+ await this.approval.approveNative(request.plan.attempt_id, kinds, fingerprint, formatMessage2(cliMessages2(this.terminal.io.language)["setup.prompt.gatewayNativeInstallations"], {
972
+ entries: reviewed.map((entry) => entry.kind + " " + entry.label + ", Target " + boundedJson2(entry.target) + ", binary SHA-256 " + entry.binary_sha256).join("; ")
973
+ }), request.signal);
938
974
  this.terminal.assertOwner();
939
975
  if (request.signal.aborted) {
940
976
  throw new CliError2("configuration_required");
@@ -978,19 +1014,11 @@ Run rovloom connector in another local terminal and enter the Gateway address an
978
1014
  value: entry.value
979
1015
  }));
980
1016
  if (!additional) {
981
- publish(callersPath, {
982
- schema_version: 1,
983
- kind: "mcp-caller-source",
984
- resource,
985
- local_policy: authorization.policies.local,
986
- callers: [
987
- {
988
- principal: { id: authorization.principal_id, policy: authorization.policies.caller },
989
- token_sha256: createHash3("sha256").update(client.token).digest("hex"),
990
- issued_at: client.issued_at,
991
- expires_at: client.expires_at
992
- }
993
- ]
1017
+ publishFirstCallers(callersPath, resource, authorization, {
1018
+ principal: { id: authorization.principal_id, policy: authorization.policies.caller },
1019
+ token_sha256: createHash3("sha256").update(client.token).digest("hex"),
1020
+ issued_at: client.issued_at,
1021
+ expires_at: client.expires_at
994
1022
  });
995
1023
  publish(providersPath, { schema_version: 1, role: "gateway", providers: reviewedEntries }, 1048576);
996
1024
  } else {
@@ -1011,23 +1039,21 @@ Run rovloom connector in another local terminal and enter the Gateway address an
1011
1039
  const page = "http://127.0.0.1:" + this.config.management_port + "/";
1012
1040
  try {
1013
1041
  const admin = writeAdminFiles2(this.config, "admin", Date.now());
1014
- adminNote = `
1015
- Management page / \u7BA1\u7406\u9875: ` + page + `
1016
- Management user / \u7BA1\u7406\u5458: admin` + `
1017
- Management password (private) / \u7BA1\u7406\u5458\u5BC6\u7801: ` + admin.secret + `
1018
- (Shown once; run rovloom admin create to re-issue. / \u53EA\u663E\u793A\u4E00\u6B21\uFF1B\u4E22\u5931\u540E\u8FD0\u884C rovloom admin create \u91CD\u65B0\u7B7E\u53D1\u3002)`;
1042
+ adminNote = formatMessage2(cliMessages2(this.terminal.io.language)["setup.gateway.adminBlock"], {
1043
+ page,
1044
+ secret: admin.secret
1045
+ });
1019
1046
  } catch {
1020
- adminNote = `
1021
- Management administrator was not created; run rovloom admin create. / \u672A\u80FD\u521B\u5EFA\u7BA1\u7406\u9875\u7BA1\u7406\u5458\uFF0C\u8BF7\u7A0D\u540E\u8FD0\u884C rovloom admin create\u3002`;
1047
+ adminNote = cliMessages2(this.terminal.io.language)["setup.gateway.adminNotCreated"];
1022
1048
  }
1023
1049
  }
1024
- this.terminal.show(`Native configuration saved; Gateway will reopen its real providers. / \u539F\u751F\u914D\u7F6E\u5DF2\u4FDD\u5B58\uFF0CGateway \u5C06\u91CD\u5F00\u5B9E\u9645 provider\u3002
1025
- MCP credential file / MCP \u51ED\u636E\u6587\u4EF6: ` + clientPath + `
1026
- MCP URL: ` + (this.config.mcp_public_url ?? resource) + `
1027
- Targets: ` + boundedJson2(reviewed.map((entry) => entry.target)) + `
1028
- Binding revision: 1` + (additional ? `
1029
- Existing MCP Bearer now also covers this device (not shown again; tokens made with rovloom token create --like need re-creating). / \u73B0\u6709 MCP Bearer \u5DF2\u8986\u76D6\u6B64\u8BBE\u5907\uFF08\u4E0D\u518D\u663E\u793A\uFF1B\u7528 token create --like \u514B\u9686\u7684\u4EE4\u724C\u9700\u8981\u91CD\u65B0\u514B\u9686\uFF09\u3002` : `
1030
- Bearer (private): ` + client.token) + adminNote + `
1050
+ this.terminal.show(formatMessage2(cliMessages2(this.terminal.io.language)["setup.gateway.nativeSaved"], {
1051
+ clientPath,
1052
+ url: this.config.mcp_public_url ?? resource,
1053
+ targets: boundedJson2(reviewed.map((entry) => entry.target))
1054
+ }) + (additional ? cliMessages2(this.terminal.io.language)["setup.gateway.bearerAdditional"] : formatMessage2(cliMessages2(this.terminal.io.language)["setup.gateway.bearerSecret"], {
1055
+ token: client.token
1056
+ })) + adminNote + `
1031
1057
  `);
1032
1058
  setImmediate(() => this.#reload?.());
1033
1059
  return { state: "configured", fingerprint };
@@ -1083,6 +1109,6 @@ function mergeSetupProviders(path, entries) {
1083
1109
  writeSetupFile(path, boundedJson2({ ...document, providers: merged }, 1048576), true, stamp);
1084
1110
  }
1085
1111
 
1086
- export { setupSessions, setupTarget, setupProviderKinds, selectedSetupPolicies, setupReference, setupSessionsFor, setupReply, requestJson, device, reviewSetupManifest, publishSetupSchemas, publish, GatewaySetup, mergeSetupCallers, mergeSetupProviders };
1112
+ export { setupSessions, setupTarget, setupProviderKinds, selectedSetupPolicies, setupReference, setupSessionsFor, setupReply, requestJson, device, reviewSetupManifest, publishSetupSchemas, publish, publishFirstCallers, GatewaySetup, mergeSetupCallers, mergeSetupProviders };
1087
1113
 
1088
- //# debugId=0617AAABC9378C6D64756E2164756E21
1114
+ //# debugId=0EFB955908D6EDF264756E2164756E21
@@ -5,18 +5,23 @@ import"../chunk-qt9m2kg2.js";
5
5
  import"../chunk-9tt13dm0.js";
6
6
  import"../chunk-g7pnjzkk.js";
7
7
  import {
8
- HELP2,
8
+ resolveCliLanguage2,
9
+ cliMessages2,
10
+ formatMessage2
11
+ } from "../chunk-5b8g62kw.js";
12
+ import {
13
+ cliHelp2,
9
14
  parseCommand2,
10
15
  runCli2
11
- } from "../chunk-keg92d31.js";
16
+ } from "../chunk-gyvqqnjb.js";
12
17
  import {
13
18
  Store2
14
- } from "../chunk-nyn75b8v.js";
19
+ } from "../chunk-qjh9x872.js";
15
20
  import"../chunk-09f9q26d.js";
16
21
  import {
17
22
  FacadeServiceError2
18
- } from "../chunk-smpevv7n.js";
19
- import"../chunk-76wgt2g5.js";
23
+ } from "../chunk-0dqx2mmz.js";
24
+ import"../chunk-9zkq0kc8.js";
20
25
  import {
21
26
  Router2
22
27
  } from "../chunk-y4hksha9.js";
@@ -27,7 +32,7 @@ import"../chunk-0xgpxdgc.js";
27
32
  import {
28
33
  resolveGatewayPrincipal,
29
34
  StoreGatewayService2
30
- } from "../chunk-7k9g0x5e.js";
35
+ } from "../chunk-mg0fd6ph.js";
31
36
  import"../chunk-zj48jvfe.js";
32
37
  import"../chunk-8nv79bhy.js";
33
38
  import"../chunk-zxsz6g14.js";
@@ -38,39 +43,39 @@ import {
38
43
  } from "../chunk-zjzrcc59.js";
39
44
  import"../chunk-d4ejrtjq.js";
40
45
  import"../chunk-5s2emvww.js";
41
- import"../chunk-4etdq0cp.js";
42
- import"../chunk-khmgp03q.js";
46
+ import"../chunk-jka7v3wb.js";
47
+ import"../chunk-ez7d5dac.js";
43
48
  import"../chunk-5h82060k.js";
44
49
  import"../chunk-863tk45b.js";
45
50
  import"../chunk-zb641qa3.js";
46
51
  import"../chunk-ttsrctxg.js";
47
52
  import"../chunk-5svt6rwr.js";
48
53
  import"../chunk-2tn0r64b.js";
49
- import"../chunk-wdr3sdsm.js";
50
- import"../chunk-fd9n51mc.js";
54
+ import"../chunk-yv9px0f5.js";
55
+ import"../chunk-zjkjjm81.js";
51
56
  import {
52
57
  createRuntimeCliRuntime2,
53
58
  MANAGEMENT_COOKIE_NAME2,
54
59
  MANAGEMENT_BOOTSTRAP_META2,
55
60
  createManagementPageInitializer2,
56
61
  createProductionCliRuntime2
57
- } from "../chunk-dtj9y82v.js";
58
- import"../chunk-qab3m6nh.js";
62
+ } from "../chunk-d2kz25f2.js";
63
+ import"../chunk-wxqhscsw.js";
59
64
  import {
60
65
  readRuntimeConfig2
61
- } from "../chunk-6hxy1fcg.js";
62
- import"../chunk-v1httsp6.js";
66
+ } from "../chunk-bspzg8er.js";
67
+ import"../chunk-8ykrqhxh.js";
63
68
  import {
64
69
  resolveRoleConfigPath2
65
- } from "../chunk-qfyefed3.js";
66
- import"../chunk-se5daacy.js";
70
+ } from "../chunk-1bf0wmgk.js";
71
+ import"../chunk-z7kkfrgz.js";
67
72
  import {
68
73
  CliError2,
69
74
  parseConfig2,
70
75
  configDocument2,
71
76
  configTemplate2,
72
77
  readConfig2
73
- } from "../chunk-bjdqj43d.js";
78
+ } from "../chunk-hpzr94hm.js";
74
79
  import"../chunk-vwcntax3.js";
75
80
  import"../chunk-gbsbwssz.js";
76
81
  import"../chunk-3nnahj0j.js";
@@ -206,9 +211,10 @@ function createTransportCliRuntime(host) {
206
211
  }
207
212
  export {
208
213
  CliError2 as CliError,
209
- HELP2 as HELP,
210
214
  MANAGEMENT_BOOTSTRAP_META2 as MANAGEMENT_BOOTSTRAP_META,
211
215
  MANAGEMENT_COOKIE_NAME2 as MANAGEMENT_COOKIE_NAME,
216
+ cliHelp2 as cliHelp,
217
+ cliMessages2 as cliMessages,
212
218
  configDocument2 as configDocument,
213
219
  configTemplate2 as configTemplate,
214
220
  createManagementPageInitializer2 as createManagementPageInitializer,
@@ -216,12 +222,14 @@ export {
216
222
  createRuntimeCliRuntime2 as createRuntimeCliRuntime,
217
223
  createStoreCliRuntime,
218
224
  createTransportCliRuntime,
225
+ formatMessage2 as formatMessage,
219
226
  parseCommand2 as parseCommand,
220
227
  parseConfig2 as parseConfig,
221
228
  readConfig2 as readConfig,
222
229
  readRuntimeConfig2 as readRuntimeConfig,
230
+ resolveCliLanguage2 as resolveCliLanguage,
223
231
  resolveRoleConfigPath2 as resolveRoleConfigPath,
224
232
  runCli2 as runCli
225
233
  };
226
234
 
227
- //# debugId=1B7BA4593951588264756E2164756E21
235
+ //# debugId=E0A8FE0C7070424764756E2164756E21
@@ -1,5 +1,10 @@
1
1
  #!/usr/bin/env bun
2
2
  // @bun
3
+ import {
4
+ resolveCliLanguage2,
5
+ cliMessages2,
6
+ formatMessage2
7
+ } from "../chunk-5b8g62kw.js";
3
8
  import"../chunk-d71r315c.js";
4
9
  import {
5
10
  parseNativeJson2
@@ -10,20 +15,20 @@ import"../chunk-g7pnjzkk.js";
10
15
  import {
11
16
  parseCommand2,
12
17
  runCli2
13
- } from "../chunk-keg92d31.js";
18
+ } from "../chunk-gyvqqnjb.js";
14
19
  import {
15
20
  createNativeServiceBackend2,
16
21
  ServiceManager2
17
22
  } from "../chunk-ttm3c0jh.js";
18
- import"../chunk-6hxy1fcg.js";
19
- import"../chunk-v1httsp6.js";
23
+ import"../chunk-bspzg8er.js";
24
+ import"../chunk-8ykrqhxh.js";
20
25
  import {
21
26
  resolveRoleConfigPath2
22
- } from "../chunk-qfyefed3.js";
23
- import"../chunk-se5daacy.js";
27
+ } from "../chunk-1bf0wmgk.js";
28
+ import"../chunk-z7kkfrgz.js";
24
29
  import {
25
30
  parseConfig2
26
- } from "../chunk-bjdqj43d.js";
31
+ } from "../chunk-hpzr94hm.js";
27
32
  import {
28
33
  manifest,
29
34
  serviceControlId
@@ -53,8 +58,7 @@ function bunSupported(version, minimum = MINIMUM_BUN) {
53
58
  return true;
54
59
  }
55
60
  if (!bunSupported(process.versions.bun)) {
56
- process.stderr.write(`Rovloom requires Bun ${MINIMUM_BUN} or newer (https://bun.sh); this runtime is not supported.
57
- `);
61
+ process.stderr.write(formatMessage2(cliMessages2(resolveCliLanguage2(process.env))["guard.bunUnsupported"], { minimum: MINIMUM_BUN }));
58
62
  process.exit(1);
59
63
  }
60
64
 
@@ -300,10 +304,10 @@ async function control(role) {
300
304
  }
301
305
  async function product() {
302
306
  if (!runtime) {
303
- const { createProductSources } = await import("../chunk-t3pn1435.js");
304
- const { CliSetup } = await import("../chunk-ymsx7hhd.js");
307
+ const { createProductSources } = await import("../chunk-jf4r0r44.js");
308
+ const { CliSetup } = await import("../chunk-3dvn33c4.js");
305
309
  setup = new CliSetup;
306
- runtime = (await import("../chunk-z1vhdr3c.js")).createProductionCliRuntime(createProductSources(), setup);
310
+ runtime = (await import("../chunk-0qgk7mhz.js")).createProductionCliRuntime(createProductSources(), setup);
307
311
  }
308
312
  return runtime;
309
313
  }
@@ -312,7 +316,8 @@ try {
312
316
  stdin: process.stdin,
313
317
  stdout: process.stdout,
314
318
  stderr: process.stderr,
315
- signal: stop.signal
319
+ signal: stop.signal,
320
+ language: resolveCliLanguage2(process.env)
316
321
  }, {
317
322
  ...process.argv[2] === "service" && process.argv[3] !== "--help" ? { service: createProductServiceHost() } : {},
318
323
  prepare: async (config, path, io, options) => (await product()).prepare(config, path, io, options),
@@ -343,4 +348,4 @@ try {
343
348
  }
344
349
  }
345
350
 
346
- //# debugId=91A2754E6B663B1964756E2164756E21
351
+ //# debugId=80EA4F16E6397DC764756E2164756E21
@@ -5,11 +5,11 @@ import {
5
5
  HTTP_BODY_BYTES2,
6
6
  createHttpFacade2,
7
7
  startHttpFacade2
8
- } from "../chunk-76wgt2g5.js";
8
+ } from "../chunk-9zkq0kc8.js";
9
9
  import {
10
10
  StoreGatewayService2,
11
11
  RuntimeGatewayService2
12
- } from "../chunk-7k9g0x5e.js";
12
+ } from "../chunk-mg0fd6ph.js";
13
13
  import {
14
14
  MAX_MCP_BYTES2,
15
15
  MAX_RESULT_BYTES2,
@@ -18,11 +18,12 @@ import {
18
18
  toolDefinition2,
19
19
  parseToolArguments2,
20
20
  FacadeServiceError2
21
- } from "../chunk-smpevv7n.js";
21
+ } from "../chunk-0dqx2mmz.js";
22
22
  import {
23
23
  MCP_REVISION2,
24
24
  PRODUCT_VERSION2
25
- } from "../chunk-xmkgq3nh.js";
25
+ } from "../chunk-s3ydr65k.js";
26
+ import"../chunk-5b8g62kw.js";
26
27
  import"../chunk-zj48jvfe.js";
27
28
  import"../chunk-0xgpxdgc.js";
28
29
  import"../chunk-gbsbwssz.js";
@@ -57,4 +58,4 @@ export {
57
58
  toolNames2 as toolNames
58
59
  };
59
60
 
60
- //# debugId=82387112B1AB3AD564756E2164756E21
61
+ //# debugId=000CCA32D906A2E664756E2164756E21
@@ -15,7 +15,7 @@ import {
15
15
  attachExistingLuvus2,
16
16
  LuvusProductionStartupError2,
17
17
  createLuvusProductionSources2
18
- } from "../chunk-4etdq0cp.js";
18
+ } from "../chunk-jka7v3wb.js";
19
19
  import {
20
20
  initializeManagedLuvusRoot2,
21
21
  openManagedLuvusRoot2,
@@ -43,7 +43,7 @@ import"../chunk-gbsbwssz.js";
43
43
  import"../chunk-q5pgbwb3.js";
44
44
  import"../chunk-57ayxqnb.js";
45
45
  import"../chunk-3nnahj0j.js";
46
- import"../chunk-nyn75b8v.js";
46
+ import"../chunk-qjh9x872.js";
47
47
  import"../chunk-zdxww7ms.js";
48
48
  import"../chunk-0pewfj89.js";
49
49
  import"../chunk-0y5542k8.js";
@@ -1,9 +1,9 @@
1
1
  // @bun
2
+ import"../chunk-5b8g62kw.js";
2
3
  import {
3
- SERVICE_HELP2,
4
4
  parseServiceCommand2,
5
5
  handleServiceCommand2
6
- } from "../chunk-7q96e161.js";
6
+ } from "../chunk-x0td5wn4.js";
7
7
  import {
8
8
  createNativeServiceBackend2,
9
9
  ServiceManager2
@@ -12,7 +12,6 @@ import {
12
12
  ServiceError2
13
13
  } from "../chunk-wqknkynm.js";
14
14
  export {
15
- SERVICE_HELP2 as SERVICE_HELP,
16
15
  ServiceError2 as ServiceError,
17
16
  ServiceManager2 as ServiceManager,
18
17
  createNativeServiceBackend2 as createNativeServiceBackend,
@@ -20,4 +19,4 @@ export {
20
19
  parseServiceCommand2 as parseServiceCommand
21
20
  };
22
21
 
23
- //# debugId=B84154E5700C2C6B64756E2164756E21
22
+ //# debugId=89E2AB8CB22A102364756E2164756E21
package/dist/src/store.js CHANGED
@@ -3,7 +3,7 @@ import {
3
3
  DEFAULT_RETENTION2,
4
4
  GATEWAY_LOCK_FORMAT2,
5
5
  Store2
6
- } from "./chunk-nyn75b8v.js";
6
+ } from "./chunk-qjh9x872.js";
7
7
  import"./chunk-zdxww7ms.js";
8
8
  import"./chunk-0pewfj89.js";
9
9
  import"./chunk-0y5542k8.js";