{"evidenceTier":"self-signed","executor":{"implName":"manual-demand-test","implVersion":"1","mode":"manual","model":"claude-sonnet-5 (solve), reviewed"},"generatedAt":"2026-07-28T12:04:11.998Z","participant":{"agentEoa":"0x654862876C8Ddaa048Fa9E0D32D5e0e81bD4Bd20"},"payload":{"branch":"docs/configuration-api-351","commitSha":"829cf75049","patchDiff":"From 829cf75049333671f8c2e08f1924138745d21310 Mon Sep 17 00:00:00 2001\nFrom: Oaksprout <oaksproutthetan@gmail.com>\nDate: Tue, 28 Jul 2026 12:59:44 +0100\nSubject: [PATCH] docs(configuration): add Configuration API reference section\n\nAdd a Configuration section to documentation/reference.md documenting\nclient.configuration.get() and the subscribe/subscribeWithKeys/\nsubscribeWithMetadata methods, matching the style of the existing\nService Invocation section. Notes that the Configuration API is\ngRPC-only (the HTTP client throws HTTPNotSupportedError), matching\nsrc/implementation/Client/HTTPClient/configuration.ts.\n\nCloses #351\n\nSigned-off-by: Oaksprout <oaksproutthetan@gmail.com>\n---\n documentation/reference.md | 30 ++++++++++++++++++++++++++++++\n 1 file changed, 30 insertions(+)\n\ndiff --git a/documentation/reference.md b/documentation/reference.md\nindex b1688c5..e6467e6 100644\n--- a/documentation/reference.md\n+++ b/documentation/reference.md\n@@ -32,3 +32,33 @@ await client.invoker.listen(\"method\", invokerListen.bind(this), options);\n ## Actors\n \n ## Secrets\n+\n+## Configuration\n+\n+The configuration methods are created as a wrapper on the [Dapr Configuration API](https://docs.dapr.io/reference/api/configuration_api/). The Configuration API is currently only implemented for the gRPC client; calling any `client.configuration` method on the HTTP client throws an `HTTPNotSupportedError`.\n+\n+### Getting configuration items\n+\n+```typescript\n+const config = await client.configuration.get(\"config-store\", [\"myconfigkey1\", \"myconfigkey2\"]);\n+console.log(config.items[\"myconfigkey1\"]); // { key: \"myconfigkey1\", value: \"...\", version: \"...\", metadata: {} }\n+```\n+\n+### Subscribing to configuration changes\n+\n+Subscribe to be notified whenever configuration items change in the store. The callback is invoked with the items that changed; call `stop()` on the returned stream to unsubscribe.\n+\n+```typescript\n+const stream = await client.configuration.subscribeWithKeys(\n+  \"config-store\",\n+  [\"myconfigkey1\", \"myconfigkey2\"],\n+  async (data) => {\n+    console.log(\"Configuration updated: \", data);\n+  },\n+);\n+\n+// Later, stop listening for changes\n+stream.stop();\n+```\n+\n+Use `client.configuration.subscribe(storeName, cb)` to subscribe to all keys in the store instead of a specific set, or `client.configuration.subscribeWithMetadata(storeName, keys, metadata, cb)` to pass store-specific metadata along with the subscription.\n-- \n2.50.1 (Apple Git-155)\n\n","testEvidence":"10/10 unit suite groups pass in node:22 container post-build; every doc snippet compile-checked against real exports via tsc --noEmit"},"role":"solution","schemaVersion":"jinn.execution.v1","signature":{"algo":"secp256k1","hash":"0x2c5d6f04eff03bb8d50b6c35d7a4b6e4e8a97e9af39aaa7bea72eaac4c9f0fd4","sig":"0xba86c360bf569dc2e02667a3a89d9748982571e635c09c0e6253a62a48c87f3b3d56f1823d9e866282a0c564febcecf26fae9fddd74d0bb98b07d72423225fee01","signer":"0x654862876C8Ddaa048Fa9E0D32D5e0e81bD4Bd20"},"solverType":"external-repo-fix.manual.v1","task":{"baseCommit":"f78006628ea259d16173a78184b929292f1d612f","cid":"bafkreihyjg4rdquphpmjcu2yokafjgbvsjeg5cfaqubtkfjhhrf5ia6ita","onchainCreationTx":"0x39461a6369e2b994ab3e6525fd13e2cee3fcf4f17abac8983fa5ccf2f03ef33a","repo":"dapr/js-sdk","requestId":"0xbf41c14a5a464d507248a15deecc3ccc68961eb2b9febfa6d1b8a107aae128f4"}}