@oracle-agent/oracle 0.34.0 → 0.35.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.
@@ -45,6 +45,7 @@ def _resolve_assets() -> Path:
45
45
  here = Path(__file__).resolve().parent
46
46
  candidates = [
47
47
  here / "assets",
48
+ Path.home() / ".local/share/oracle-assets",
48
49
  here.parent / "assets" / "graphics" / "assets",
49
50
  here.parent / "graphics" / "assets",
50
51
  ]
@@ -97,7 +97,7 @@ does not prove npm users receive it. A locally hosted model/data/policy loop doe
97
97
  a bundled signer. A merged feature is not public until the npm artifact containing it is
98
98
  published and inspected.
99
99
 
100
- **Candidate release in this source tree:** public package `@oracle-agent/oracle@0.34.0`
100
+ **Candidate release in this source tree:** public package `@oracle-agent/oracle@0.35.0`
101
101
  ships the encrypted local vault + short-lived loopback signer. Hosted/keyless
102
102
  Oracle cannot hold keys or move funds. Self-host after `oracle sign init|import` is **auto-armed**
103
103
  for user-initiated actions. Public still charges the disclosed fee card; Administrator
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oracle-agent/oracle",
3
- "version": "0.34.0",
3
+ "version": "0.35.0",
4
4
  "description": "Oracle: standalone multichain agent control plane with an optional encrypted, loopback-only self-hosted signer.",
5
5
  "license": "BUSL-1.1",
6
6
  "type": "module",
@@ -4,6 +4,11 @@
4
4
  const PACKAGE = "@oracle-agent/oracle";
5
5
  const COMMAND = "npx";
6
6
  const ARGS = ["-y", "--package", PACKAGE, "oracle-data-mcp"];
7
+ // Artifact-card lane. Deepen and Refresh are read paths; Prepare emits an
8
+ // unsigned artifact and is OFF unless the operator sets
9
+ // ORACLE_TELEGRAM_CARD_GRANT=1 in their own environment. The page never
10
+ // emits that variable, so a copied config is read-only by default.
11
+ const CARD_ARGS = ["-y", "--package", PACKAGE, "oracle-telegram-mcp"];
7
12
  const INIT_COMMAND = "npx -y --package @oracle-agent/oracle oracle-init";
8
13
  const NATIVE_COMMAND = "curl -fsSL https://oracle.demi.la/install.sh | bash && oracle setup model && oracle chat";
9
14
 
@@ -27,8 +32,32 @@
27
32
  };
28
33
 
29
34
  const server = () => ({ command: COMMAND, args: [...ARGS], env: env() });
35
+ const cardServer = () => ({ command: COMMAND, args: [...CARD_ARGS] });
30
36
 
31
- const jsonMcp = () => ({ mcpServers: { oracle: server() } });
37
+ const jsonMcp = () => ({ mcpServers: { oracle: server(), "oracle-cards": cardServer() } });
38
+
39
+ const yamlBlock = (name, entry) => {
40
+ const lines = [` ${name}:`, ` command: ${JSON.stringify(entry.command)}`, " args:"];
41
+ entry.args.forEach((arg) => lines.push(` - ${JSON.stringify(arg)}`));
42
+ if (entry.env) {
43
+ lines.push(" env:");
44
+ Object.entries(entry.env).forEach(([key, value]) => lines.push(` ${key}: ${JSON.stringify(value)}`));
45
+ }
46
+ return lines;
47
+ };
48
+
49
+ const tomlBlock = (name, entry) => {
50
+ const lines = [
51
+ `[mcp_servers.${name}]`,
52
+ `command = ${JSON.stringify(entry.command)}`,
53
+ `args = [${entry.args.map((arg) => JSON.stringify(arg)).join(", ")}]`,
54
+ ];
55
+ if (entry.env) {
56
+ lines.push("", `[mcp_servers.${name}.env]`);
57
+ Object.entries(entry.env).forEach(([key, value]) => lines.push(`${key} = ${JSON.stringify(value)}`));
58
+ }
59
+ return lines;
60
+ };
32
61
 
33
62
  const configs = {
34
63
  oracle: () => [
@@ -38,32 +67,18 @@
38
67
  "# Optional: still expose read MCP to other tools",
39
68
  JSON.stringify(jsonMcp(), null, 2),
40
69
  ].join("\n"),
41
- hermes: () => {
42
- const s = server();
43
- const values = env();
44
- return [
45
- "mcp_servers:",
46
- " oracle:",
47
- ` command: ${JSON.stringify(s.command)}`,
48
- " args:",
49
- ...s.args.map((a) => ` - ${JSON.stringify(a)}`),
50
- " env:",
51
- ...Object.entries(values).map(([k, v]) => ` ${k}: ${JSON.stringify(v)}`),
52
- "",
53
- ].join("\n");
54
- },
70
+ hermes: () => [
71
+ "mcp_servers:",
72
+ ...yamlBlock("oracle", server()),
73
+ ...yamlBlock("oracle-cards", cardServer()),
74
+ "",
75
+ ].join("\n"),
55
76
  claude: () => jsonMcp(),
56
- codex: () => {
57
- const values = env();
58
- return [
59
- "[mcp_servers.oracle]",
60
- `command = ${JSON.stringify(COMMAND)}`,
61
- `args = [${ARGS.map((arg) => JSON.stringify(arg)).join(", ")}]`,
62
- "",
63
- "[mcp_servers.oracle.env]",
64
- ...Object.entries(values).map(([key, value]) => `${key} = ${JSON.stringify(value)}`),
65
- ].join("\n");
66
- },
77
+ codex: () => [
78
+ ...tomlBlock("oracle", server()),
79
+ "",
80
+ ...tomlBlock("oracle-cards", cardServer()),
81
+ ].join("\n"),
67
82
  cursor: () => jsonMcp(),
68
83
  openclaw: () => jsonMcp(),
69
84
  perplexity: () => jsonMcp(),
@@ -14,6 +14,7 @@
14
14
  <p class="eyebrow">AGENT CONNECT</p>
15
15
  <h1>Give your agent market context.<br /><span>Keep custody local.</span></h1>
16
16
  <p class="lede">Use Oracle's native harness, or connect Oracle MCP into the agent you already run. Skills, quotes, swap cards, and prepare land in Claude or Codex. The model proposes actions; you review and authorize them through your local operator.</p>
17
+ <p class="lede">The config below wires two lanes: <code>oracle</code> for market reads, and <code>oracle-cards</code> for artifact cards your agent can deepen and refresh. Card Prepare emits an unsigned artifact only, is off unless you set <code>ORACLE_TELEGRAM_CARD_GRANT=1</code> yourself, and never broadcasts.</p>
17
18
  </header>
18
19
 
19
20
  <section class="card setup" aria-labelledby="connection-title">