@toon-protocol/townhouse 0.5.4 → 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.
@@ -228,7 +228,8 @@ services:
228
228
  CONNECTOR_URL: ws://townhouse-dev-connector:3000
229
229
  CONNECTOR_ADMIN_URL: http://townhouse-dev-connector:9401
230
230
  FEE_PER_EVENT: '0'
231
- NODE_NOSTR_PUBKEY: ''
231
+ # Interpolated from TOWN_01_NOSTR_PUBKEY exported by townhouse-dev-infra.sh (issue #81).
232
+ NODE_NOSTR_PUBKEY: '${TOWN_01_NOSTR_PUBKEY:-}'
232
233
  NODE_EVM_ADDRESS: ''
233
234
  # Interpolated from TOWN_01_SECRET_KEY exported by townhouse-dev-infra.sh.
234
235
  NODE_NOSTR_SECRET_KEY: '${TOWN_01_SECRET_KEY:?TOWN_01_SECRET_KEY required — source scripts/townhouse-dev-infra.sh first}'
@@ -265,7 +266,8 @@ services:
265
266
  CONNECTOR_URL: ws://townhouse-dev-connector:3000
266
267
  CONNECTOR_ADMIN_URL: http://townhouse-dev-connector:9401
267
268
  FEE_PER_EVENT: '0'
268
- NODE_NOSTR_PUBKEY: ''
269
+ # Interpolated from TOWN_02_NOSTR_PUBKEY exported by townhouse-dev-infra.sh (issue #81).
270
+ NODE_NOSTR_PUBKEY: '${TOWN_02_NOSTR_PUBKEY:-}'
269
271
  NODE_EVM_ADDRESS: ''
270
272
  # Interpolated from TOWN_02_SECRET_KEY exported by townhouse-dev-infra.sh.
271
273
  NODE_NOSTR_SECRET_KEY: '${TOWN_02_SECRET_KEY:?TOWN_02_SECRET_KEY required — source scripts/townhouse-dev-infra.sh first}'
@@ -303,7 +305,8 @@ services:
303
305
  # nosemgrep: detect-insecure-websocket -- Docker-internal, TLS unnecessary
304
306
  CONNECTOR_URL: ws://townhouse-dev-connector:3000
305
307
  FEE_BASIS_POINTS: '0'
306
- NODE_NOSTR_PUBKEY: ''
308
+ # Interpolated from MILL_01_NOSTR_PUBKEY exported by townhouse-dev-infra.sh (issue #81).
309
+ NODE_NOSTR_PUBKEY: '${MILL_01_NOSTR_PUBKEY:-}'
307
310
  NODE_EVM_ADDRESS: ''
308
311
  # MILL_MNEMONIC takes priority over NODE_NOSTR_SECRET_KEY for BIP-32 swap key derivation.
309
312
  # Interpolated from MILL_01_MNEMONIC exported by townhouse-dev-infra.sh.
@@ -347,7 +350,8 @@ services:
347
350
  # nosemgrep: detect-insecure-websocket -- Docker-internal, TLS unnecessary
348
351
  CONNECTOR_URL: ws://townhouse-dev-connector:3000
349
352
  FEE_BASIS_POINTS: '0'
350
- NODE_NOSTR_PUBKEY: ''
353
+ # Interpolated from MILL_02_NOSTR_PUBKEY exported by townhouse-dev-infra.sh (issue #81).
354
+ NODE_NOSTR_PUBKEY: '${MILL_02_NOSTR_PUBKEY:-}'
351
355
  NODE_EVM_ADDRESS: ''
352
356
  # MILL_MNEMONIC takes priority over NODE_NOSTR_SECRET_KEY for BIP-32 swap key derivation.
353
357
  # Interpolated from MILL_02_MNEMONIC exported by townhouse-dev-infra.sh.
@@ -388,7 +392,8 @@ services:
388
392
  # nosemgrep: detect-insecure-websocket -- Docker-internal, TLS unnecessary
389
393
  CONNECTOR_URL: ws://townhouse-dev-connector:3000
390
394
  FEE_PER_JOB: '0'
391
- NODE_NOSTR_PUBKEY: ''
395
+ # Interpolated from DVM_01_NOSTR_PUBKEY exported by townhouse-dev-infra.sh (issue #81).
396
+ NODE_NOSTR_PUBKEY: '${DVM_01_NOSTR_PUBKEY:-}'
392
397
  NODE_EVM_ADDRESS: ''
393
398
  # Interpolated from DVM_01_SECRET_KEY exported by townhouse-dev-infra.sh.
394
399
  NODE_NOSTR_SECRET_KEY: '${DVM_01_SECRET_KEY:?DVM_01_SECRET_KEY required — source scripts/townhouse-dev-infra.sh first}'
@@ -22,10 +22,10 @@
22
22
  # Story 45.4 boots only connector + townhouse-api at apex install
23
23
  #
24
24
  # Digest placeholders (substituted at build time from dist/image-manifest.json):
25
- # @sha256:5b3ad28f99d71dcdc9284d95911a668175425b5172eda6feeb32bfd7b4ef4cbe → @sha256:<hex>
26
- # @sha256:4420a11b186f2ac510916320ba2f02853ea3e26dba311b6714af9cf91439e2fa → @sha256:<hex>
27
- # @sha256:b4021bbbfb69eb55758c986001f3d636ec9caba080acabfe0886d09609b4cbcd → @sha256:<hex>
28
- # @sha256:8aac9644c4c86ff691d81f28261665adbc88b680990cd1e77ed93df07bc00c3e → @sha256:<hex>
25
+ # @sha256:6de5d4afecd687afc98df4a876d7e9ae6ce639201fea192eb106e501ebbb59d6 → @sha256:<hex>
26
+ # @sha256:48ab6c4be89e4d8b031550c2c0e7dee254c56923c939bebdc9f7cd22a95e02f2 → @sha256:<hex>
27
+ # @sha256:ee77ef2d994cd6a9e461dfa8cfb8e1587eaa4c37f886e91d7169c7dd3e97326a → @sha256:<hex>
28
+ # @sha256:c5294dd01b726058a1b50eab7f3a4a538534230b64bfc6ddecc217f7a3171d5b → @sha256:<hex>
29
29
  # @sha256:d22a786f82cc928238b0ef14c6455d1238bd2f42744138cad8af81ca1747ff6e → @sha256:<hex>
30
30
  #
31
31
  # Scope guard (Story 45.2 does NOT include):
@@ -157,7 +157,7 @@ services:
157
157
  # Port D21-008: Fastify host API on 127.0.0.1:28090.
158
158
  # ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
159
159
  townhouse-api:
160
- image: ghcr.io/toon-protocol/townhouse-api@sha256:5b3ad28f99d71dcdc9284d95911a668175425b5172eda6feeb32bfd7b4ef4cbe
160
+ image: ghcr.io/toon-protocol/townhouse-api@sha256:6de5d4afecd687afc98df4a876d7e9ae6ce639201fea192eb106e501ebbb59d6
161
161
  container_name: townhouse-hs-api
162
162
  # Run as the operator's host UID so bind-mounted ~/.townhouse files
163
163
  # (rw------- 600) are readable. TOWNHOUSE_UID is injected by `townhouse hs up`.
@@ -264,7 +264,7 @@ services:
264
264
  # start at first run).
265
265
  # ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
266
266
  town:
267
- image: ghcr.io/toon-protocol/town@sha256:4420a11b186f2ac510916320ba2f02853ea3e26dba311b6714af9cf91439e2fa
267
+ image: ghcr.io/toon-protocol/town@sha256:48ab6c4be89e4d8b031550c2c0e7dee254c56923c939bebdc9f7cd22a95e02f2
268
268
  container_name: townhouse-hs-town
269
269
  profiles: [town]
270
270
  networks:
@@ -296,7 +296,11 @@ services:
296
296
  # (env-writer). 'none' makes the town node run relay-only (no settlement).
297
297
  TOON_CHAIN: ${EVM_CHAIN:-}
298
298
  TOON_RPC_URL: ${EVM_RPC_URL:-}
299
- NODE_NOSTR_PUBKEY: ''
299
+ # x-only pubkey derived from the node secret at provisioning time and
300
+ # injected by the API (nodes-lifecycle buildNodeEnv → TOWN_NOSTR_PUBKEY).
301
+ # Informational — lets operators / SDK clients read it via `docker inspect`
302
+ # or `node list --json` without re-deriving from the secret (issue #81).
303
+ NODE_NOSTR_PUBKEY: '${TOWN_NOSTR_PUBKEY:-}'
300
304
  NODE_EVM_ADDRESS: ''
301
305
  # Derived from HD wallet at runtime (Story 45.4 / Epic 46).
302
306
  NODE_NOSTR_SECRET_KEY: '${TOWN_SECRET_KEY:-}'
@@ -326,7 +330,7 @@ services:
326
330
  # Lazy-provisioned via Epic 46: `townhouse node add mill`
327
331
  # ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
328
332
  mill:
329
- image: ghcr.io/toon-protocol/mill@sha256:b4021bbbfb69eb55758c986001f3d636ec9caba080acabfe0886d09609b4cbcd
333
+ image: ghcr.io/toon-protocol/mill@sha256:ee77ef2d994cd6a9e461dfa8cfb8e1587eaa4c37f886e91d7169c7dd3e97326a
330
334
  container_name: townhouse-hs-mill
331
335
  profiles: [mill]
332
336
  networks:
@@ -353,7 +357,10 @@ services:
353
357
  SETTLEMENT_TOKEN_ADDRESS: ${EVM_USDC_ADDRESS:-}
354
358
  SOLANA_RPC_URL: ${SOLANA_RPC_URL:-}
355
359
  SOLANA_USDC_MINT: ${SOLANA_USDC_MINT:-}
356
- NODE_NOSTR_PUBKEY: ''
360
+ # x-only pubkey injected by the API (buildNodeEnv → MILL_NOSTR_PUBKEY).
361
+ # SDK clients need the mill pubkey for streamSwap seal verification —
362
+ # surfacing it here avoids re-deriving from the secret (issue #81).
363
+ NODE_NOSTR_PUBKEY: '${MILL_NOSTR_PUBKEY:-}'
357
364
  NODE_EVM_ADDRESS: ''
358
365
  # Derived from HD wallet at runtime (Story 45.4 / Epic 46).
359
366
  MILL_MNEMONIC: '${MILL_MNEMONIC:-}'
@@ -381,7 +388,7 @@ services:
381
388
  # Lazy-provisioned via Epic 46: `townhouse node add dvm`
382
389
  # ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
383
390
  dvm:
384
- image: ghcr.io/toon-protocol/dvm@sha256:8aac9644c4c86ff691d81f28261665adbc88b680990cd1e77ed93df07bc00c3e
391
+ image: ghcr.io/toon-protocol/dvm@sha256:c5294dd01b726058a1b50eab7f3a4a538534230b64bfc6ddecc217f7a3171d5b
385
392
  container_name: townhouse-hs-dvm
386
393
  profiles: [dvm]
387
394
  networks:
@@ -397,7 +404,10 @@ services:
397
404
  CONNECTOR_URL: ws://connector:3000
398
405
  FEE_PER_JOB: '0'
399
406
  DVM_KIND: '5094'
400
- NODE_NOSTR_PUBKEY: ''
407
+ # x-only pubkey injected by the API (buildNodeEnv → DVM_NOSTR_PUBKEY).
408
+ # Informational — readable via `docker inspect` / `node list --json`
409
+ # without re-deriving from the secret (issue #81).
410
+ NODE_NOSTR_PUBKEY: '${DVM_NOSTR_PUBKEY:-}'
401
411
  NODE_EVM_ADDRESS: ''
402
412
  # Derived from HD wallet at runtime (Story 45.4 / Epic 46).
403
413
  NODE_NOSTR_SECRET_KEY: '${DVM_SECRET_KEY:-}'
@@ -1,27 +1,27 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
- "townhouseVersion": "0.5.4",
4
- "builtAt": "2026-06-03T21:26:44.613Z",
3
+ "townhouseVersion": "0.6.0",
4
+ "builtAt": "2026-06-03T21:38:35.242Z",
5
5
  "images": {
6
6
  "townhouse-api": {
7
7
  "name": "ghcr.io/toon-protocol/townhouse-api",
8
- "tag": "0.5.4",
9
- "digest": "sha256:5b3ad28f99d71dcdc9284d95911a668175425b5172eda6feeb32bfd7b4ef4cbe"
8
+ "tag": "0.6.0",
9
+ "digest": "sha256:6de5d4afecd687afc98df4a876d7e9ae6ce639201fea192eb106e501ebbb59d6"
10
10
  },
11
11
  "town": {
12
12
  "name": "ghcr.io/toon-protocol/town",
13
- "tag": "0.5.4",
14
- "digest": "sha256:4420a11b186f2ac510916320ba2f02853ea3e26dba311b6714af9cf91439e2fa"
13
+ "tag": "0.6.0",
14
+ "digest": "sha256:48ab6c4be89e4d8b031550c2c0e7dee254c56923c939bebdc9f7cd22a95e02f2"
15
15
  },
16
16
  "mill": {
17
17
  "name": "ghcr.io/toon-protocol/mill",
18
- "tag": "0.5.4",
19
- "digest": "sha256:b4021bbbfb69eb55758c986001f3d636ec9caba080acabfe0886d09609b4cbcd"
18
+ "tag": "0.6.0",
19
+ "digest": "sha256:ee77ef2d994cd6a9e461dfa8cfb8e1587eaa4c37f886e91d7169c7dd3e97326a"
20
20
  },
21
21
  "dvm": {
22
22
  "name": "ghcr.io/toon-protocol/dvm",
23
- "tag": "0.5.4",
24
- "digest": "sha256:8aac9644c4c86ff691d81f28261665adbc88b680990cd1e77ed93df07bc00c3e"
23
+ "tag": "0.6.0",
24
+ "digest": "sha256:c5294dd01b726058a1b50eab7f3a4a538534230b64bfc6ddecc217f7a3171d5b"
25
25
  },
26
26
  "connector": {
27
27
  "name": "ghcr.io/toon-protocol/connector",
package/dist/index.d.ts CHANGED
@@ -1482,6 +1482,7 @@ declare const NodesYamlEntrySchema: z.ZodObject<{
1482
1482
  peerId: z.ZodString;
1483
1483
  ilpAddress: z.ZodString;
1484
1484
  derivationIndex: z.ZodNumber;
1485
+ nostrPubkey: z.ZodOptional<z.ZodString>;
1485
1486
  enabledAt: z.ZodString;
1486
1487
  lastSeenAt: z.ZodNullable<z.ZodString>;
1487
1488
  }, "strict", z.ZodTypeAny, {
@@ -1492,6 +1493,7 @@ declare const NodesYamlEntrySchema: z.ZodObject<{
1492
1493
  derivationIndex: number;
1493
1494
  enabledAt: string;
1494
1495
  lastSeenAt: string | null;
1496
+ nostrPubkey?: string | undefined;
1495
1497
  }, {
1496
1498
  type: "town" | "mill" | "dvm";
1497
1499
  id: string;
@@ -1500,6 +1502,7 @@ declare const NodesYamlEntrySchema: z.ZodObject<{
1500
1502
  derivationIndex: number;
1501
1503
  enabledAt: string;
1502
1504
  lastSeenAt: string | null;
1505
+ nostrPubkey?: string | undefined;
1503
1506
  }>;
1504
1507
  declare const NodesYamlSchema: z.ZodEffects<z.ZodObject<{
1505
1508
  entries: z.ZodArray<z.ZodObject<{
@@ -1508,6 +1511,7 @@ declare const NodesYamlSchema: z.ZodEffects<z.ZodObject<{
1508
1511
  peerId: z.ZodString;
1509
1512
  ilpAddress: z.ZodString;
1510
1513
  derivationIndex: z.ZodNumber;
1514
+ nostrPubkey: z.ZodOptional<z.ZodString>;
1511
1515
  enabledAt: z.ZodString;
1512
1516
  lastSeenAt: z.ZodNullable<z.ZodString>;
1513
1517
  }, "strict", z.ZodTypeAny, {
@@ -1518,6 +1522,7 @@ declare const NodesYamlSchema: z.ZodEffects<z.ZodObject<{
1518
1522
  derivationIndex: number;
1519
1523
  enabledAt: string;
1520
1524
  lastSeenAt: string | null;
1525
+ nostrPubkey?: string | undefined;
1521
1526
  }, {
1522
1527
  type: "town" | "mill" | "dvm";
1523
1528
  id: string;
@@ -1526,6 +1531,7 @@ declare const NodesYamlSchema: z.ZodEffects<z.ZodObject<{
1526
1531
  derivationIndex: number;
1527
1532
  enabledAt: string;
1528
1533
  lastSeenAt: string | null;
1534
+ nostrPubkey?: string | undefined;
1529
1535
  }>, "many">;
1530
1536
  }, "strict", z.ZodTypeAny, {
1531
1537
  entries: {
@@ -1536,6 +1542,7 @@ declare const NodesYamlSchema: z.ZodEffects<z.ZodObject<{
1536
1542
  derivationIndex: number;
1537
1543
  enabledAt: string;
1538
1544
  lastSeenAt: string | null;
1545
+ nostrPubkey?: string | undefined;
1539
1546
  }[];
1540
1547
  }, {
1541
1548
  entries: {
@@ -1546,6 +1553,7 @@ declare const NodesYamlSchema: z.ZodEffects<z.ZodObject<{
1546
1553
  derivationIndex: number;
1547
1554
  enabledAt: string;
1548
1555
  lastSeenAt: string | null;
1556
+ nostrPubkey?: string | undefined;
1549
1557
  }[];
1550
1558
  }>, {
1551
1559
  entries: {
@@ -1556,6 +1564,7 @@ declare const NodesYamlSchema: z.ZodEffects<z.ZodObject<{
1556
1564
  derivationIndex: number;
1557
1565
  enabledAt: string;
1558
1566
  lastSeenAt: string | null;
1567
+ nostrPubkey?: string | undefined;
1559
1568
  }[];
1560
1569
  }, {
1561
1570
  entries: {
@@ -1566,6 +1575,7 @@ declare const NodesYamlSchema: z.ZodEffects<z.ZodObject<{
1566
1575
  derivationIndex: number;
1567
1576
  enabledAt: string;
1568
1577
  lastSeenAt: string | null;
1578
+ nostrPubkey?: string | undefined;
1569
1579
  }[];
1570
1580
  }>;
1571
1581
  type NodesYamlEntry = z.infer<typeof NodesYamlEntrySchema>;
package/dist/index.js CHANGED
@@ -34,7 +34,7 @@ import {
34
34
  utcYearBoundary,
35
35
  validateConfig,
36
36
  writeNodesYaml
37
- } from "./chunk-FFGRTYIK.js";
37
+ } from "./chunk-ZUMMJFGH.js";
38
38
  import "./chunk-5O4SBV5O.js";
39
39
  import "./chunk-NZR5C3KD.js";
40
40
  import "./chunk-I2R4CRUX.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@toon-protocol/townhouse",
3
- "version": "0.5.4",
3
+ "version": "0.6.0",
4
4
  "description": "TOON Townhouse — host-native orchestrator + dashboard for Docker-containerized TOON nodes",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -71,11 +71,11 @@
71
71
  "tsup": "^8.0.0",
72
72
  "typescript": "^5.3.0",
73
73
  "vitest": "^1.0.0",
74
- "@toon-protocol/core": "^1.4.1",
75
74
  "@toon-protocol/client": "^0.9.1",
75
+ "@toon-protocol/core": "^1.4.1",
76
76
  "@toon-protocol/relay": "^1.3.1",
77
- "@toon-protocol/sdk": "^0.5.0",
78
- "@toon-protocol/mill": "^0.1.0"
77
+ "@toon-protocol/mill": "^0.1.0",
78
+ "@toon-protocol/sdk": "^0.5.0"
79
79
  },
80
80
  "scripts": {
81
81
  "build": "tsup",