diff --git a/CHANGELOG.md b/CHANGELOG.md
index 4890d9ad..4587f7d0 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -6,8 +6,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
### Added
- New Admin API endpoint `storageInfo`.
-- New Admin API endpoint 'updateCoordinators' to update coordinator zomes in an already installed hApp.
+- New Admin API endpoint `dumpNetworkStats`.
+- New Admin API endpoint `updateCoordinators` to update coordinator zomes in an already installed hApp.
### Changed
+- Updated response type `NetworkInfo`.
### Fixed
### Removed
diff --git a/docs/client.dnaproperties.md b/docs/client.dnaproperties.md
index 98438764..53a0f83a 100644
--- a/docs/client.dnaproperties.md
+++ b/docs/client.dnaproperties.md
@@ -8,5 +8,5 @@
Signature:
```typescript
-export declare type DnaProperties = any;
+export declare type DnaProperties = unknown;
```
diff --git a/docs/client.networkinfo.arc_size.md b/docs/client.networkinfo.arc_size.md
new file mode 100644
index 00000000..11543e5a
--- /dev/null
+++ b/docs/client.networkinfo.arc_size.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [@holochain/client](./client.md) > [NetworkInfo](./client.networkinfo.md) > [arc\_size](./client.networkinfo.arc_size.md)
+
+## NetworkInfo.arc\_size property
+
+Signature:
+
+```typescript
+arc_size: number;
+```
diff --git a/docs/client.networkinfo.bytes_since_last_time_queried.md b/docs/client.networkinfo.bytes_since_last_time_queried.md
new file mode 100644
index 00000000..ad0c36df
--- /dev/null
+++ b/docs/client.networkinfo.bytes_since_last_time_queried.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [@holochain/client](./client.md) > [NetworkInfo](./client.networkinfo.md) > [bytes\_since\_last\_time\_queried](./client.networkinfo.bytes_since_last_time_queried.md)
+
+## NetworkInfo.bytes\_since\_last\_time\_queried property
+
+Signature:
+
+```typescript
+bytes_since_last_time_queried: number;
+```
diff --git a/docs/client.networkinfo.completed_rounds_since_last_time_queried.md b/docs/client.networkinfo.completed_rounds_since_last_time_queried.md
new file mode 100644
index 00000000..d110672e
--- /dev/null
+++ b/docs/client.networkinfo.completed_rounds_since_last_time_queried.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [@holochain/client](./client.md) > [NetworkInfo](./client.networkinfo.md) > [completed\_rounds\_since\_last\_time\_queried](./client.networkinfo.completed_rounds_since_last_time_queried.md)
+
+## NetworkInfo.completed\_rounds\_since\_last\_time\_queried property
+
+Signature:
+
+```typescript
+completed_rounds_since_last_time_queried: number;
+```
diff --git a/docs/client.networkinfo.current_number_of_peers.md b/docs/client.networkinfo.current_number_of_peers.md
new file mode 100644
index 00000000..4ace907a
--- /dev/null
+++ b/docs/client.networkinfo.current_number_of_peers.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [@holochain/client](./client.md) > [NetworkInfo](./client.networkinfo.md) > [current\_number\_of\_peers](./client.networkinfo.current_number_of_peers.md)
+
+## NetworkInfo.current\_number\_of\_peers property
+
+Signature:
+
+```typescript
+current_number_of_peers: number;
+```
diff --git a/docs/client.networkinfo.md b/docs/client.networkinfo.md
index 62cc8ad0..f24e1b2e 100644
--- a/docs/client.networkinfo.md
+++ b/docs/client.networkinfo.md
@@ -15,5 +15,10 @@ export interface NetworkInfo
| Property | Modifiers | Type | Description |
| --- | --- | --- | --- |
+| [arc\_size](./client.networkinfo.arc_size.md) | | number | |
+| [bytes\_since\_last\_time\_queried](./client.networkinfo.bytes_since_last_time_queried.md) | | number | |
+| [completed\_rounds\_since\_last\_time\_queried](./client.networkinfo.completed_rounds_since_last_time_queried.md) | | number | |
+| [current\_number\_of\_peers](./client.networkinfo.current_number_of_peers.md) | | number | |
| [fetch\_pool\_info](./client.networkinfo.fetch_pool_info.md) | | [FetchPoolInfo](./client.fetchpoolinfo.md) | |
+| [total\_network\_peers](./client.networkinfo.total_network_peers.md) | | number | |
diff --git a/docs/client.networkinfo.total_network_peers.md b/docs/client.networkinfo.total_network_peers.md
new file mode 100644
index 00000000..99d9c14a
--- /dev/null
+++ b/docs/client.networkinfo.total_network_peers.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [@holochain/client](./client.md) > [NetworkInfo](./client.networkinfo.md) > [total\_network\_peers](./client.networkinfo.total_network_peers.md)
+
+## NetworkInfo.total\_network\_peers property
+
+Signature:
+
+```typescript
+total_network_peers: number;
+```
diff --git a/src/api/admin/types.ts b/src/api/admin/types.ts
index e4767be4..c325ee86 100644
--- a/src/api/admin/types.ts
+++ b/src/api/admin/types.ts
@@ -789,6 +789,16 @@ export type StorageInfoRequest = void;
*/
export type StorageInfoResponse = StorageInfo;
+/**
+ * @public
+ */
+export type DumpNetworkStatsRequest = void;
+
+/**
+ * @public
+ */
+export type DumpNetworkStatsResponse = string;
+
/**
* @public
*/
@@ -827,4 +837,8 @@ export interface AdminApi {
GrantZomeCallCapabilityResponse
>;
storageInfo: Requester;
+ dumpNetworkStats: Requester<
+ DumpNetworkStatsRequest,
+ DumpNetworkStatsResponse
+ >;
}
diff --git a/src/api/admin/websocket.ts b/src/api/admin/websocket.ts
index 0839790d..469eddad 100644
--- a/src/api/admin/websocket.ts
+++ b/src/api/admin/websocket.ts
@@ -34,6 +34,8 @@ import {
DisableAppResponse,
DumpFullStateRequest,
DumpFullStateResponse,
+ DumpNetworkStatsRequest,
+ DumpNetworkStatsResponse,
DumpStateRequest,
DumpStateResponse,
EnableAppRequest,
@@ -260,6 +262,11 @@ export class AdminWebsocket implements AdminApi {
storageInfo: Requester =
this._requester("storage_info");
+ dumpNetworkStats: Requester<
+ DumpNetworkStatsRequest,
+ DumpNetworkStatsResponse
+ > = this._requester("dump_network_stats");
+
// zome call signing related methods
/**
diff --git a/src/api/app-agent/websocket.ts b/src/api/app-agent/websocket.ts
index 3c47d178..598671d7 100644
--- a/src/api/app-agent/websocket.ts
+++ b/src/api/app-agent/websocket.ts
@@ -145,13 +145,7 @@ export class AppAgentWebsocket implements AppAgentClient {
request: AppAgentCallZomeRequest,
timeout?: number
): Promise {
- if ("provenance" in request) {
- if ("role_name" in request && request.role_name) {
- throw new Error(
- "Cannot find other agent's cells based on role name. Use cell id when providing a provenance."
- );
- }
- } else {
+ if (!("provenance" in request)) {
request = {
...request,
provenance: this.myPubKey,
diff --git a/src/types.ts b/src/types.ts
index 27d6bca0..36bc5b1a 100644
--- a/src/types.ts
+++ b/src/types.ts
@@ -85,7 +85,7 @@ export type CellId = [DnaHash, AgentPubKey];
/**
* @public
*/
-export type DnaProperties = any;
+export type DnaProperties = unknown;
/**
* @public
*/
@@ -124,6 +124,11 @@ export interface HoloHashed {
*/
export interface NetworkInfo {
fetch_pool_info: FetchPoolInfo;
+ current_number_of_peers: number;
+ arc_size: number;
+ total_network_peers: number;
+ bytes_since_last_time_queried: number;
+ completed_rounds_since_last_time_queried: number;
}
/**
diff --git a/test/e2e/index.ts b/test/e2e/index.ts
index ca236077..7902d1b8 100644
--- a/test/e2e/index.ts
+++ b/test/e2e/index.ts
@@ -278,6 +278,7 @@ test(
new Date("2022-02-11T23:05:19.470323Z").getTime(),
"dna definition: origin time matches"
);
+ assert(Buffer.isBuffer(dnaDefinition.modifiers.properties));
t.equal(
decode(dnaDefinition.modifiers.properties),
null,
@@ -964,6 +965,18 @@ test(
})
);
+test(
+ "can fetch network stats",
+ withConductor(ADMIN_PORT, async (t: Test) => {
+ const { admin } = await installAppAndDna(ADMIN_PORT);
+
+ const response = await admin.dumpNetworkStats();
+
+ t.ok(typeof response === "string", "response is string");
+ t.ok(JSON.parse(response), "response is valid JSON");
+ })
+);
+
test(
"can update coordinators of an app",
withConductor(ADMIN_PORT, async (t: Test) => {