From a3a8e087683cd47814801fddc12ff1171b61d2f4 Mon Sep 17 00:00:00 2001 From: David Gardner Date: Tue, 21 Jul 2026 10:35:28 -0700 Subject: [PATCH 1/8] Drop duplicate adapter extras, remove hermes-agent from hermes extra Signed-off-by: David Gardner --- pyproject.toml | 24 ++--------- uv.lock | 113 ++++++++++++++++++++++++++++++++++++------------- 2 files changed, 88 insertions(+), 49 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 08e70f23..5bbcf100 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -36,25 +36,6 @@ Documentation = "https://nvidia-nemo-fabric.docs.buildwithfern.com/nemo/fabric" packages = [] [project.optional-dependencies] -adapters-common = [ - "nemo-fabric-adapters-common == 0.1.0", -] - -adapters-codex = [ - "nemo-fabric-adapters-codex == 0.1.0", -] - -adapters-claude = [ - "nemo-fabric-adapters-claude == 0.1.0", -] - -adapters-deepagents = [ - "nemo-fabric-adapters-deepagents == 0.1.0", -] - -adapters-hermes = [ - "nemo-fabric-adapters-hermes == 0.1.0; python_version < '3.14'", -] codex = [ "nemo-fabric-adapters-codex == 0.1.0", @@ -75,7 +56,10 @@ harbor = [ hermes = [ "nemo-fabric-adapters-hermes == 0.1.0; python_version < '3.14'", - "hermes-agent>=0.17.0; python_version < '3.14'", +] + +hermes-agent = [ + "hermes-agent>=0.17.0; python_version < '3.14'", ] relay = [ diff --git a/uv.lock b/uv.lock index 37e402e7..9271fce6 100644 --- a/uv.lock +++ b/uv.lock @@ -580,12 +580,82 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/07/4b/290b4c3efd6417a8b0c284896de19b1d5855e6dbdb97d2a35e68fa42de85/croniter-6.0.0-py2.py3-none-any.whl", hash = "sha256:2f878c3856f17896979b2a4379ba1f09c83e374931ea15cc835c5dd2eee9b368", size = 25468, upload-time = "2024-12-17T17:17:45.359Z" }, ] +[[package]] +name = "cryptography" +version = "46.0.7" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12' and python_full_version < '3.14' and sys_platform == 'win32'", + "python_full_version >= '3.12' and python_full_version < '3.14' and sys_platform == 'emscripten'", + "python_full_version >= '3.12' and python_full_version < '3.14' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version < '3.12'", +] +dependencies = [ + { name = "cffi", marker = "python_full_version < '3.14' and platform_python_implementation != 'PyPy'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/47/93/ac8f3d5ff04d54bc814e961a43ae5b0b146154c89c61b47bb07557679b18/cryptography-46.0.7.tar.gz", hash = "sha256:e4cfd68c5f3e0bfdad0d38e023239b96a2fe84146481852dffbcca442c245aa5", size = 750652, upload-time = "2026-04-08T01:57:54.692Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0b/5d/4a8f770695d73be252331e60e526291e3df0c9b27556a90a6b47bccca4c2/cryptography-46.0.7-cp311-abi3-macosx_10_9_universal2.whl", hash = "sha256:ea42cbe97209df307fdc3b155f1b6fa2577c0defa8f1f7d3be7d31d189108ad4", size = 7179869, upload-time = "2026-04-08T01:56:17.157Z" }, + { url = "https://files.pythonhosted.org/packages/5f/45/6d80dc379b0bbc1f9d1e429f42e4cb9e1d319c7a8201beffd967c516ea01/cryptography-46.0.7-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:b36a4695e29fe69215d75960b22577197aca3f7a25b9cf9d165dcfe9d80bc325", size = 4275492, upload-time = "2026-04-08T01:56:19.36Z" }, + { url = "https://files.pythonhosted.org/packages/4a/9a/1765afe9f572e239c3469f2cb429f3ba7b31878c893b246b4b2994ffe2fe/cryptography-46.0.7-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:5ad9ef796328c5e3c4ceed237a183f5d41d21150f972455a9d926593a1dcb308", size = 4426670, upload-time = "2026-04-08T01:56:21.415Z" }, + { url = "https://files.pythonhosted.org/packages/8f/3e/af9246aaf23cd4ee060699adab1e47ced3f5f7e7a8ffdd339f817b446462/cryptography-46.0.7-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:73510b83623e080a2c35c62c15298096e2a5dc8d51c3b4e1740211839d0dea77", size = 4280275, upload-time = "2026-04-08T01:56:23.539Z" }, + { url = "https://files.pythonhosted.org/packages/0f/54/6bbbfc5efe86f9d71041827b793c24811a017c6ac0fd12883e4caa86b8ed/cryptography-46.0.7-cp311-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:cbd5fb06b62bd0721e1170273d3f4d5a277044c47ca27ee257025146c34cbdd1", size = 4928402, upload-time = "2026-04-08T01:56:25.624Z" }, + { url = "https://files.pythonhosted.org/packages/2d/cf/054b9d8220f81509939599c8bdbc0c408dbd2bdd41688616a20731371fe0/cryptography-46.0.7-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:420b1e4109cc95f0e5700eed79908cef9268265c773d3a66f7af1eef53d409ef", size = 4459985, upload-time = "2026-04-08T01:56:27.309Z" }, + { url = "https://files.pythonhosted.org/packages/f9/46/4e4e9c6040fb01c7467d47217d2f882daddeb8828f7df800cb806d8a2288/cryptography-46.0.7-cp311-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:24402210aa54baae71d99441d15bb5a1919c195398a87b563df84468160a65de", size = 3990652, upload-time = "2026-04-08T01:56:29.095Z" }, + { url = "https://files.pythonhosted.org/packages/36/5f/313586c3be5a2fbe87e4c9a254207b860155a8e1f3cca99f9910008e7d08/cryptography-46.0.7-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:8a469028a86f12eb7d2fe97162d0634026d92a21f3ae0ac87ed1c4a447886c83", size = 4279805, upload-time = "2026-04-08T01:56:30.928Z" }, + { url = "https://files.pythonhosted.org/packages/69/33/60dfc4595f334a2082749673386a4d05e4f0cf4df8248e63b2c3437585f2/cryptography-46.0.7-cp311-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:9694078c5d44c157ef3162e3bf3946510b857df5a3955458381d1c7cfc143ddb", size = 4892883, upload-time = "2026-04-08T01:56:32.614Z" }, + { url = "https://files.pythonhosted.org/packages/c7/0b/333ddab4270c4f5b972f980adef4faa66951a4aaf646ca067af597f15563/cryptography-46.0.7-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:42a1e5f98abb6391717978baf9f90dc28a743b7d9be7f0751a6f56a75d14065b", size = 4459756, upload-time = "2026-04-08T01:56:34.306Z" }, + { url = "https://files.pythonhosted.org/packages/d2/14/633913398b43b75f1234834170947957c6b623d1701ffc7a9600da907e89/cryptography-46.0.7-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:91bbcb08347344f810cbe49065914fe048949648f6bd5c2519f34619142bbe85", size = 4410244, upload-time = "2026-04-08T01:56:35.977Z" }, + { url = "https://files.pythonhosted.org/packages/10/f2/19ceb3b3dc14009373432af0c13f46aa08e3ce334ec6eff13492e1812ccd/cryptography-46.0.7-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:5d1c02a14ceb9148cc7816249f64f623fbfee39e8c03b3650d842ad3f34d637e", size = 4674868, upload-time = "2026-04-08T01:56:38.034Z" }, + { url = "https://files.pythonhosted.org/packages/1a/bb/a5c213c19ee94b15dfccc48f363738633a493812687f5567addbcbba9f6f/cryptography-46.0.7-cp311-abi3-win32.whl", hash = "sha256:d23c8ca48e44ee015cd0a54aeccdf9f09004eba9fc96f38c911011d9ff1bd457", size = 3026504, upload-time = "2026-04-08T01:56:39.666Z" }, + { url = "https://files.pythonhosted.org/packages/2b/02/7788f9fefa1d060ca68717c3901ae7fffa21ee087a90b7f23c7a603c32ae/cryptography-46.0.7-cp311-abi3-win_amd64.whl", hash = "sha256:397655da831414d165029da9bc483bed2fe0e75dde6a1523ec2fe63f3c46046b", size = 3488363, upload-time = "2026-04-08T01:56:41.893Z" }, + { url = "https://files.pythonhosted.org/packages/7b/56/15619b210e689c5403bb0540e4cb7dbf11a6bf42e483b7644e471a2812b3/cryptography-46.0.7-cp314-cp314t-macosx_10_9_universal2.whl", hash = "sha256:d151173275e1728cf7839aaa80c34fe550c04ddb27b34f48c232193df8db5842", size = 7119671, upload-time = "2026-04-08T01:56:44Z" }, + { url = "https://files.pythonhosted.org/packages/74/66/e3ce040721b0b5599e175ba91ab08884c75928fbeb74597dd10ef13505d2/cryptography-46.0.7-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:db0f493b9181c7820c8134437eb8b0b4792085d37dbb24da050476ccb664e59c", size = 4268551, upload-time = "2026-04-08T01:56:46.071Z" }, + { url = "https://files.pythonhosted.org/packages/03/11/5e395f961d6868269835dee1bafec6a1ac176505a167f68b7d8818431068/cryptography-46.0.7-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ebd6daf519b9f189f85c479427bbd6e9c9037862cf8fe89ee35503bd209ed902", size = 4408887, upload-time = "2026-04-08T01:56:47.718Z" }, + { url = "https://files.pythonhosted.org/packages/40/53/8ed1cf4c3b9c8e611e7122fb56f1c32d09e1fff0f1d77e78d9ff7c82653e/cryptography-46.0.7-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:b7b412817be92117ec5ed95f880defe9cf18a832e8cafacf0a22337dc1981b4d", size = 4271354, upload-time = "2026-04-08T01:56:49.312Z" }, + { url = "https://files.pythonhosted.org/packages/50/46/cf71e26025c2e767c5609162c866a78e8a2915bbcfa408b7ca495c6140c4/cryptography-46.0.7-cp314-cp314t-manylinux_2_28_ppc64le.whl", hash = "sha256:fbfd0e5f273877695cb93baf14b185f4878128b250cc9f8e617ea0c025dfb022", size = 4905845, upload-time = "2026-04-08T01:56:50.916Z" }, + { url = "https://files.pythonhosted.org/packages/c0/ea/01276740375bac6249d0a971ebdf6b4dc9ead0ee0a34ef3b5a88c1a9b0d4/cryptography-46.0.7-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:ffca7aa1d00cf7d6469b988c581598f2259e46215e0140af408966a24cf086ce", size = 4444641, upload-time = "2026-04-08T01:56:52.882Z" }, + { url = "https://files.pythonhosted.org/packages/3d/4c/7d258f169ae71230f25d9f3d06caabcff8c3baf0978e2b7d65e0acac3827/cryptography-46.0.7-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:60627cf07e0d9274338521205899337c5d18249db56865f943cbe753aa96f40f", size = 3967749, upload-time = "2026-04-08T01:56:54.597Z" }, + { url = "https://files.pythonhosted.org/packages/b5/2a/2ea0767cad19e71b3530e4cad9605d0b5e338b6a1e72c37c9c1ceb86c333/cryptography-46.0.7-cp314-cp314t-manylinux_2_34_aarch64.whl", hash = "sha256:80406c3065e2c55d7f49a9550fe0c49b3f12e5bfff5dedb727e319e1afb9bf99", size = 4270942, upload-time = "2026-04-08T01:56:56.416Z" }, + { url = "https://files.pythonhosted.org/packages/41/3d/fe14df95a83319af25717677e956567a105bb6ab25641acaa093db79975d/cryptography-46.0.7-cp314-cp314t-manylinux_2_34_ppc64le.whl", hash = "sha256:c5b1ccd1239f48b7151a65bc6dd54bcfcc15e028c8ac126d3fada09db0e07ef1", size = 4871079, upload-time = "2026-04-08T01:56:58.31Z" }, + { url = "https://files.pythonhosted.org/packages/9c/59/4a479e0f36f8f378d397f4eab4c850b4ffb79a2f0d58704b8fa0703ddc11/cryptography-46.0.7-cp314-cp314t-manylinux_2_34_x86_64.whl", hash = "sha256:d5f7520159cd9c2154eb61eb67548ca05c5774d39e9c2c4339fd793fe7d097b2", size = 4443999, upload-time = "2026-04-08T01:57:00.508Z" }, + { url = "https://files.pythonhosted.org/packages/28/17/b59a741645822ec6d04732b43c5d35e4ef58be7bfa84a81e5ae6f05a1d33/cryptography-46.0.7-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:fcd8eac50d9138c1d7fc53a653ba60a2bee81a505f9f8850b6b2888555a45d0e", size = 4399191, upload-time = "2026-04-08T01:57:02.654Z" }, + { url = "https://files.pythonhosted.org/packages/59/6a/bb2e166d6d0e0955f1e9ff70f10ec4b2824c9cfcdb4da772c7dd69cc7d80/cryptography-46.0.7-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:65814c60f8cc400c63131584e3e1fad01235edba2614b61fbfbfa954082db0ee", size = 4655782, upload-time = "2026-04-08T01:57:04.592Z" }, + { url = "https://files.pythonhosted.org/packages/95/b6/3da51d48415bcb63b00dc17c2eff3a651b7c4fed484308d0f19b30e8cb2c/cryptography-46.0.7-cp314-cp314t-win32.whl", hash = "sha256:fdd1736fed309b4300346f88f74cd120c27c56852c3838cab416e7a166f67298", size = 3002227, upload-time = "2026-04-08T01:57:06.91Z" }, + { url = "https://files.pythonhosted.org/packages/32/a8/9f0e4ed57ec9cebe506e58db11ae472972ecb0c659e4d52bbaee80ca340a/cryptography-46.0.7-cp314-cp314t-win_amd64.whl", hash = "sha256:e06acf3c99be55aa3b516397fe42f5855597f430add9c17fa46bf2e0fb34c9bb", size = 3475332, upload-time = "2026-04-08T01:57:08.807Z" }, + { url = "https://files.pythonhosted.org/packages/a7/7f/cd42fc3614386bc0c12f0cb3c4ae1fc2bbca5c9662dfed031514911d513d/cryptography-46.0.7-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:462ad5cb1c148a22b2e3bcc5ad52504dff325d17daf5df8d88c17dda1f75f2a4", size = 7165618, upload-time = "2026-04-08T01:57:10.645Z" }, + { url = "https://files.pythonhosted.org/packages/a5/d0/36a49f0262d2319139d2829f773f1b97ef8aef7f97e6e5bd21455e5a8fb5/cryptography-46.0.7-cp38-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:84d4cced91f0f159a7ddacad249cc077e63195c36aac40b4150e7a57e84fffe7", size = 4270628, upload-time = "2026-04-08T01:57:12.885Z" }, + { url = "https://files.pythonhosted.org/packages/8a/6c/1a42450f464dda6ffbe578a911f773e54dd48c10f9895a23a7e88b3e7db5/cryptography-46.0.7-cp38-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:128c5edfe5e5938b86b03941e94fac9ee793a94452ad1365c9fc3f4f62216832", size = 4415405, upload-time = "2026-04-08T01:57:14.923Z" }, + { url = "https://files.pythonhosted.org/packages/9a/92/4ed714dbe93a066dc1f4b4581a464d2d7dbec9046f7c8b7016f5286329e2/cryptography-46.0.7-cp38-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:5e51be372b26ef4ba3de3c167cd3d1022934bc838ae9eaad7e644986d2a3d163", size = 4272715, upload-time = "2026-04-08T01:57:16.638Z" }, + { url = "https://files.pythonhosted.org/packages/b7/e6/a26b84096eddd51494bba19111f8fffe976f6a09f132706f8f1bf03f51f7/cryptography-46.0.7-cp38-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:cdf1a610ef82abb396451862739e3fc93b071c844399e15b90726ef7470eeaf2", size = 4918400, upload-time = "2026-04-08T01:57:19.021Z" }, + { url = "https://files.pythonhosted.org/packages/c7/08/ffd537b605568a148543ac3c2b239708ae0bd635064bab41359252ef88ed/cryptography-46.0.7-cp38-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:1d25aee46d0c6f1a501adcddb2d2fee4b979381346a78558ed13e50aa8a59067", size = 4450634, upload-time = "2026-04-08T01:57:21.185Z" }, + { url = "https://files.pythonhosted.org/packages/16/01/0cd51dd86ab5b9befe0d031e276510491976c3a80e9f6e31810cce46c4ad/cryptography-46.0.7-cp38-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:cdfbe22376065ffcf8be74dc9a909f032df19bc58a699456a21712d6e5eabfd0", size = 3985233, upload-time = "2026-04-08T01:57:22.862Z" }, + { url = "https://files.pythonhosted.org/packages/92/49/819d6ed3a7d9349c2939f81b500a738cb733ab62fbecdbc1e38e83d45e12/cryptography-46.0.7-cp38-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:abad9dac36cbf55de6eb49badd4016806b3165d396f64925bf2999bcb67837ba", size = 4271955, upload-time = "2026-04-08T01:57:24.814Z" }, + { url = "https://files.pythonhosted.org/packages/80/07/ad9b3c56ebb95ed2473d46df0847357e01583f4c52a85754d1a55e29e4d0/cryptography-46.0.7-cp38-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:935ce7e3cfdb53e3536119a542b839bb94ec1ad081013e9ab9b7cfd478b05006", size = 4879888, upload-time = "2026-04-08T01:57:26.88Z" }, + { url = "https://files.pythonhosted.org/packages/b8/c7/201d3d58f30c4c2bdbe9b03844c291feb77c20511cc3586daf7edc12a47b/cryptography-46.0.7-cp38-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:35719dc79d4730d30f1c2b6474bd6acda36ae2dfae1e3c16f2051f215df33ce0", size = 4449961, upload-time = "2026-04-08T01:57:29.068Z" }, + { url = "https://files.pythonhosted.org/packages/a5/ef/649750cbf96f3033c3c976e112265c33906f8e462291a33d77f90356548c/cryptography-46.0.7-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:7bbc6ccf49d05ac8f7d7b5e2e2c33830d4fe2061def88210a126d130d7f71a85", size = 4401696, upload-time = "2026-04-08T01:57:31.029Z" }, + { url = "https://files.pythonhosted.org/packages/41/52/a8908dcb1a389a459a29008c29966c1d552588d4ae6d43f3a1a4512e0ebe/cryptography-46.0.7-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a1529d614f44b863a7b480c6d000fe93b59acee9c82ffa027cfadc77521a9f5e", size = 4664256, upload-time = "2026-04-08T01:57:33.144Z" }, + { url = "https://files.pythonhosted.org/packages/4b/fa/f0ab06238e899cc3fb332623f337a7364f36f4bb3f2534c2bb95a35b132c/cryptography-46.0.7-cp38-abi3-win32.whl", hash = "sha256:f247c8c1a1fb45e12586afbb436ef21ff1e80670b2861a90353d9b025583d246", size = 3013001, upload-time = "2026-04-08T01:57:34.933Z" }, + { url = "https://files.pythonhosted.org/packages/d2/f1/00ce3bde3ca542d1acd8f8cfa38e446840945aa6363f9b74746394b14127/cryptography-46.0.7-cp38-abi3-win_amd64.whl", hash = "sha256:506c4ff91eff4f82bdac7633318a526b1d1309fc07ca76a3ad182cb5b686d6d3", size = 3472985, upload-time = "2026-04-08T01:57:36.714Z" }, + { url = "https://files.pythonhosted.org/packages/63/0c/dca8abb64e7ca4f6b2978769f6fea5ad06686a190cec381f0a796fdcaaba/cryptography-46.0.7-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:fc9ab8856ae6cf7c9358430e49b368f3108f050031442eaeb6b9d87e4dcf4e4f", size = 3476879, upload-time = "2026-04-08T01:57:38.664Z" }, + { url = "https://files.pythonhosted.org/packages/3a/ea/075aac6a84b7c271578d81a2f9968acb6e273002408729f2ddff517fed4a/cryptography-46.0.7-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:d3b99c535a9de0adced13d159c5a9cf65c325601aa30f4be08afd680643e9c15", size = 4219700, upload-time = "2026-04-08T01:57:40.625Z" }, + { url = "https://files.pythonhosted.org/packages/6c/7b/1c55db7242b5e5612b29fc7a630e91ee7a6e3c8e7bf5406d22e206875fbd/cryptography-46.0.7-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:d02c738dacda7dc2a74d1b2b3177042009d5cab7c7079db74afc19e56ca1b455", size = 4385982, upload-time = "2026-04-08T01:57:42.725Z" }, + { url = "https://files.pythonhosted.org/packages/cb/da/9870eec4b69c63ef5925bf7d8342b7e13bc2ee3d47791461c4e49ca212f4/cryptography-46.0.7-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:04959522f938493042d595a736e7dbdff6eb6cc2339c11465b3ff89343b65f65", size = 4219115, upload-time = "2026-04-08T01:57:44.939Z" }, + { url = "https://files.pythonhosted.org/packages/f4/72/05aa5832b82dd341969e9a734d1812a6aadb088d9eb6f0430fc337cc5a8f/cryptography-46.0.7-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:3986ac1dee6def53797289999eabe84798ad7817f3e97779b5061a95b0ee4968", size = 4385479, upload-time = "2026-04-08T01:57:46.86Z" }, + { url = "https://files.pythonhosted.org/packages/20/2a/1b016902351a523aa2bd446b50a5bc1175d7a7d1cf90fe2ef904f9b84ebc/cryptography-46.0.7-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:258514877e15963bd43b558917bc9f54cf7cf866c38aa576ebf47a77ddbc43a4", size = 3412829, upload-time = "2026-04-08T01:57:48.874Z" }, +] + [[package]] name = "cryptography" version = "49.0.0" source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.14' and sys_platform == 'win32'", + "python_full_version >= '3.14' and sys_platform == 'emscripten'", + "python_full_version >= '3.14' and sys_platform != 'emscripten' and sys_platform != 'win32'", +] dependencies = [ - { name = "cffi", marker = "platform_python_implementation != 'PyPy'" }, + { name = "cffi", marker = "python_full_version >= '3.14' and platform_python_implementation != 'PyPy'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/1f/99/d1c90d6041656cc6ee229dc99cd67fd0cd5aec3c5f7d72fffc27cc750054/cryptography-49.0.0.tar.gz", hash = "sha256:f89660a348f4f78a92366240a61404e337586ef7f5909a2fef59ca88ef505493", size = 854345, upload-time = "2026-06-12T20:02:30.512Z" } wheels = [ @@ -939,7 +1009,8 @@ name = "google-auth" version = "2.55.2" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "cryptography" }, + { name = "cryptography", version = "46.0.7", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.14'" }, + { name = "cryptography", version = "49.0.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.14'" }, { name = "pyasn1-modules" }, ] sdist = { url = "https://files.pythonhosted.org/packages/79/b9/e370d86fea3da13ec0256df30323dd26c0cb9c8c85f0c6ec42ac9df0106b/google_auth-2.55.2.tar.gz", hash = "sha256:97ae7790ff740f2bc9db60eb864a7804f4ac19f5f02c38b3d942f2fea6e9b9ae", size = 361414, upload-time = "2026-07-07T18:43:21.227Z" } @@ -1029,12 +1100,13 @@ wheels = [ [[package]] name = "hermes-agent" -version = "0.17.0" +version = "0.19.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "certifi", marker = "python_full_version < '3.14'" }, { name = "concurrent-log-handler", marker = "python_full_version < '3.14' and sys_platform == 'win32'" }, { name = "croniter", marker = "python_full_version < '3.14'" }, + { name = "cryptography", version = "46.0.7", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.14'" }, { name = "fastapi", marker = "python_full_version < '3.14'" }, { name = "fire", marker = "python_full_version < '3.14'" }, { name = "httpx", extra = ["socks"], marker = "python_full_version < '3.14'" }, @@ -1062,9 +1134,9 @@ dependencies = [ { name = "uvicorn", extra = ["standard"], marker = "python_full_version < '3.14'" }, { name = "websockets", marker = "python_full_version < '3.14'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/99/c2/6b65b1c1d093eff415304472709479a392ac1422e36d007e32f3bb848f58/hermes_agent-0.17.0.tar.gz", hash = "sha256:5ceda2a131627fecf5fd52b05d0162b48032023a5d814bb5d1894db4aa146120", size = 12156176, upload-time = "2026-06-19T19:40:16.589Z" } +sdist = { url = "https://files.pythonhosted.org/packages/c1/2c/5eca471374c1b48555a8f0b988c06b19a93ae33a6c0e67845e47fc3a5628/hermes_agent-0.19.0.tar.gz", hash = "sha256:ac986bede64a2785436676c0ea084ec586574f8cb00a9d047e095b435d3e21c0", size = 14282599, upload-time = "2026-07-20T18:37:28.903Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e3/e2/d18d5ec6735b412fde47ecac3b6a63874c824c83e9821e1c1f4a07bcff85/hermes_agent-0.17.0-py3-none-any.whl", hash = "sha256:f11dcc1b168d2db626ef8b2175301741a86b5247c5ffaff4b0f0e24018d1b190", size = 8642279, upload-time = "2026-06-19T19:40:14.014Z" }, + { url = "https://files.pythonhosted.org/packages/e5/30/c85be8290e9565dc3c7a9720e93f3e59e09b1b163487be4946c3aa848f80/hermes_agent-0.19.0-py3-none-any.whl", hash = "sha256:bd0bac012aee38a60894781f4597dc29ee7bedb3448540249921f10d3bef327f", size = 10144439, upload-time = "2026-07-20T18:37:26.417Z" }, ] [[package]] @@ -1951,21 +2023,6 @@ dependencies = [ ] [package.optional-dependencies] -adapters-claude = [ - { name = "nemo-fabric-adapters-claude" }, -] -adapters-codex = [ - { name = "nemo-fabric-adapters-codex" }, -] -adapters-common = [ - { name = "nemo-fabric-adapters-common" }, -] -adapters-deepagents = [ - { name = "nemo-fabric-adapters-deepagents" }, -] -adapters-hermes = [ - { name = "nemo-fabric-adapters-hermes", marker = "python_full_version < '3.14'" }, -] claude = [ { name = "nemo-fabric-adapters-claude" }, ] @@ -1980,9 +2037,11 @@ harbor = [ { name = "pyyaml" }, ] hermes = [ - { name = "hermes-agent", marker = "python_full_version < '3.14'" }, { name = "nemo-fabric-adapters-hermes", marker = "python_full_version < '3.14'" }, ] +hermes-agent = [ + { name = "hermes-agent", marker = "python_full_version < '3.14'" }, +] relay = [ { name = "nemo-relay" }, { name = "tomli-w" }, @@ -2024,15 +2083,10 @@ test = [ [package.metadata] requires-dist = [ { name = "harbor", marker = "python_full_version >= '3.12' and extra == 'harbor'", specifier = ">=0.18,<0.19" }, - { name = "hermes-agent", marker = "python_full_version < '3.14' and extra == 'hermes'", specifier = ">=0.17.0" }, - { name = "nemo-fabric-adapters-claude", marker = "extra == 'adapters-claude'", editable = "adapters/claude" }, + { name = "hermes-agent", marker = "python_full_version < '3.14' and extra == 'hermes-agent'", specifier = ">=0.17.0" }, { name = "nemo-fabric-adapters-claude", marker = "extra == 'claude'", editable = "adapters/claude" }, - { name = "nemo-fabric-adapters-codex", marker = "extra == 'adapters-codex'", editable = "adapters/codex" }, { name = "nemo-fabric-adapters-codex", marker = "extra == 'codex'", editable = "adapters/codex" }, - { name = "nemo-fabric-adapters-common", marker = "extra == 'adapters-common'", editable = "adapters/common" }, - { name = "nemo-fabric-adapters-deepagents", marker = "extra == 'adapters-deepagents'", editable = "adapters/deepagents" }, { name = "nemo-fabric-adapters-deepagents", marker = "extra == 'deepagents'", editable = "adapters/deepagents" }, - { name = "nemo-fabric-adapters-hermes", marker = "python_full_version < '3.14' and extra == 'adapters-hermes'", editable = "adapters/hermes" }, { name = "nemo-fabric-adapters-hermes", marker = "python_full_version < '3.14' and extra == 'hermes'", editable = "adapters/hermes" }, { name = "nemo-fabric-runtime", editable = "python" }, { name = "nemo-fabric-runtime", marker = "extra == 'runtime'", editable = "python" }, @@ -2040,7 +2094,7 @@ requires-dist = [ { name = "pyyaml", marker = "extra == 'harbor'", specifier = ">=6.0" }, { name = "tomli-w", marker = "extra == 'relay'", specifier = "~=1.2" }, ] -provides-extras = ["adapters-common", "adapters-codex", "adapters-claude", "adapters-deepagents", "adapters-hermes", "codex", "claude", "deepagents", "harbor", "hermes", "relay", "runtime"] +provides-extras = ["codex", "claude", "deepagents", "harbor", "hermes", "hermes-agent", "relay", "runtime"] [package.metadata.requires-dev] adapters = [ @@ -2937,7 +2991,8 @@ wheels = [ [package.optional-dependencies] crypto = [ - { name = "cryptography" }, + { name = "cryptography", version = "46.0.7", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.14'" }, + { name = "cryptography", version = "49.0.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.14'" }, ] [[package]] From 83ac4e65caac86c71766ad1c33efe6a718a1786e Mon Sep 17 00:00:00 2001 From: David Gardner Date: Tue, 21 Jul 2026 10:45:24 -0700 Subject: [PATCH 2/8] Add a hermes-agent extra for hermes-agent Signed-off-by: David Gardner --- CONTRIBUTING.md | 4 ++-- adapters/common/README.md | 6 ------ adapters/hermes/README.md | 8 ++++---- docs/getting-started/install.mdx | 12 ++++++------ docs/getting-started/quickstart.mdx | 2 +- pyproject.toml | 1 + skills/nemo-fabric-integrate/SKILL.md | 6 +++--- uv.lock | 2 ++ 8 files changed, 19 insertions(+), 22 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ec1fc0a9..407f0e38 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -23,10 +23,10 @@ just wheels uv pip install --find-links dist nemo-fabric ``` -Adapters are distributed as optional extras. For example, install the Hermes adapter with: +Adapters are distributed as optional extras. For example, install the Hermes Agent adapter with: ```bash -uv pip install --find-links dist "nemo-fabric[adapters-hermes]" +uv pip install --find-links dist "nemo-fabric[hermes]" ``` Refer to the [installation guide](docs/getting-started/install.mdx) for the diff --git a/adapters/common/README.md b/adapters/common/README.md index 5f95d95a..39177b4f 100644 --- a/adapters/common/README.md +++ b/adapters/common/README.md @@ -15,12 +15,6 @@ Install the package directly when developing an adapter: pip install nemo-fabric-adapters-common ``` -Alternately through the NeMo Fabric metapackage: - -```bash -pip install "nemo-fabric[adapters-common]" -``` - Refer to the [NeMo Fabric documentation](https://nvidia-nemo-fabric.docs.buildwithfern.com/nemo/fabric) for adapter and configuration guidance. Source code is available in the [NVIDIA NeMo Fabric repository](https://github.com/NVIDIA/nemo-fabric/). diff --git a/adapters/hermes/README.md b/adapters/hermes/README.md index 4d560ba2..70f5dcba 100644 --- a/adapters/hermes/README.md +++ b/adapters/hermes/README.md @@ -9,16 +9,16 @@ This adapter runs Hermes Agent through its Python SDK. ## Install -To install just the Hermes adapter by itself: +To install just the Hermes Agent adapter by itself: ```bash -pip install "nemo-fabric[adapters-hermes]" +pip install "nemo-fabric[hermes]" ``` -To install just the Hermes adapter along with the NeMo Fabric Runtime: +To install just the Hermes Agent adapter along with the NeMo Fabric Runtime: ```bash -pip install "nemo-fabric[adapters-hermes, runtime]" +pip install "nemo-fabric[hermes, runtime]" ``` ## What It Maps diff --git a/docs/getting-started/install.mdx b/docs/getting-started/install.mdx index c821cb0c..cf343637 100644 --- a/docs/getting-started/install.mdx +++ b/docs/getting-started/install.mdx @@ -34,12 +34,12 @@ intentionally have minimal dependencies and belong in the same environment as the agent harness. That environment can differ from the NeMo Fabric runtime environment. -The following adapter packages are available: +The following adapter extras are available: -- `adapters-claude` -- `adapters-codex` -- `adapters-deepagents` -- `adapters-hermes` +- `claude` +- `codex` +- `deepagents` +- `hermes` ```bash pip install "nemo-fabric[]" @@ -48,7 +48,7 @@ pip install "nemo-fabric[]" For example, to install the Hermes Agent adapter: ```bash -pip install "nemo-fabric[adapters-hermes]" +pip install "nemo-fabric[hermes]" ``` diff --git a/docs/getting-started/quickstart.mdx b/docs/getting-started/quickstart.mdx index 2e147076..b5d0244c 100644 --- a/docs/getting-started/quickstart.mdx +++ b/docs/getting-started/quickstart.mdx @@ -13,7 +13,7 @@ Create a Python virtual environment and install NeMo Fabric with Hermes Agent an ```bash python -m venv .venv source .venv/bin/activate -pip install "nemo-fabric[adapters-hermes]" +pip install "nemo-fabric[hermes, hermes-agent]" ``` Refer to [the installation guide](https://github.com/NVIDIA/NeMo-Fabric#installation) for more details. diff --git a/pyproject.toml b/pyproject.toml index 5bbcf100..2b7dcad6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -59,6 +59,7 @@ hermes = [ ] hermes-agent = [ + "nemo-fabric-adapters-hermes == 0.1.0; python_version < '3.14'", "hermes-agent>=0.17.0; python_version < '3.14'", ] diff --git a/skills/nemo-fabric-integrate/SKILL.md b/skills/nemo-fabric-integrate/SKILL.md index 110d5a21..ddc300dc 100644 --- a/skills/nemo-fabric-integrate/SKILL.md +++ b/skills/nemo-fabric-integrate/SKILL.md @@ -52,9 +52,9 @@ runtime assumptions but never installs harnesses or credentials at run time. [installation guide](https://github.com/NVIDIA/NeMo-Fabric/blob/main/docs/getting-started/install.mdx). - Select a harness adapter — the `adapter_id` set in `HarnessConfig`, for example `nvidia.fabric.hermes` — and install its extra the same way, for example - `uv pip install --find-links "nemo-fabric[adapters-hermes]"` - (available extras: `adapters-hermes`, `adapters-codex`, - `adapters-deepagents`, `adapters-claude`), plus the adapter's own harness + `uv pip install --find-links "nemo-fabric[hermes]"` + (available extras: `hermes`, `codex`, `deepagents`, `claude`), plus the + adapter's own harness binaries and dependencies. - Provide model credentials through environment variables named by the config (`ModelConfig.api_key_env`), never as literals in code. diff --git a/uv.lock b/uv.lock index 9271fce6..2a60089b 100644 --- a/uv.lock +++ b/uv.lock @@ -2041,6 +2041,7 @@ hermes = [ ] hermes-agent = [ { name = "hermes-agent", marker = "python_full_version < '3.14'" }, + { name = "nemo-fabric-adapters-hermes", marker = "python_full_version < '3.14'" }, ] relay = [ { name = "nemo-relay" }, @@ -2088,6 +2089,7 @@ requires-dist = [ { name = "nemo-fabric-adapters-codex", marker = "extra == 'codex'", editable = "adapters/codex" }, { name = "nemo-fabric-adapters-deepagents", marker = "extra == 'deepagents'", editable = "adapters/deepagents" }, { name = "nemo-fabric-adapters-hermes", marker = "python_full_version < '3.14' and extra == 'hermes'", editable = "adapters/hermes" }, + { name = "nemo-fabric-adapters-hermes", marker = "python_full_version < '3.14' and extra == 'hermes-agent'", editable = "adapters/hermes" }, { name = "nemo-fabric-runtime", editable = "python" }, { name = "nemo-fabric-runtime", marker = "extra == 'runtime'", editable = "python" }, { name = "nemo-relay", marker = "extra == 'relay'", specifier = ">=0.5.0,<0.7" }, From 51424eeff25daa7d33b47d7ce7264ea4c400288f Mon Sep 17 00:00:00 2001 From: David Gardner Date: Tue, 21 Jul 2026 10:50:28 -0700 Subject: [PATCH 3/8] Update references Signed-off-by: David Gardner --- README.md | 2 +- examples/harbor/calculator/task/environment/Dockerfile | 2 +- examples/harbor/prepare_swebench.sh | 2 +- tests/integrations/test_harbor_runner.py | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index b279ef14..3be3c23d 100644 --- a/README.md +++ b/README.md @@ -111,7 +111,7 @@ Install Fabric, Hermes Agent, and the Hermes adapter into an environment: ```bash # Use any Python 3.11-3.13 interpreter for Hermes. python3 -m venv .tmp/hermes-venv -.tmp/hermes-venv/bin/python -m pip install --find-links dist "nemo-fabric[hermes]" +.tmp/hermes-venv/bin/python -m pip install --find-links dist "nemo-fabric[hermes, hermes-agent]" ``` If you are working from a local Hermes checkout, replace the final install line diff --git a/examples/harbor/calculator/task/environment/Dockerfile b/examples/harbor/calculator/task/environment/Dockerfile index 64151472..5f142351 100644 --- a/examples/harbor/calculator/task/environment/Dockerfile +++ b/examples/harbor/calculator/task/environment/Dockerfile @@ -19,7 +19,7 @@ RUN pip install --no-cache-dir \ -e /opt/nemo-fabric/adapters/common \ -e /opt/nemo-fabric/adapters/claude \ -e /opt/nemo-fabric/adapters/hermes \ - -e "/opt/nemo-fabric[harbor,hermes,relay,runtime]" + -e "/opt/nemo-fabric[harbor,hermes,hermes-agent,relay,runtime]" COPY calculator.py /app/calculator.py COPY fabric /opt/fabric-calculator diff --git a/examples/harbor/prepare_swebench.sh b/examples/harbor/prepare_swebench.sh index 7bcc4ad4..8ba135ba 100755 --- a/examples/harbor/prepare_swebench.sh +++ b/examples/harbor/prepare_swebench.sh @@ -64,7 +64,7 @@ if [[ -z "$fabric_wheel" ]]; then fi printf '%s\n' \ - "nemo-fabric[claude,harbor,hermes,relay,runtime] @ file:///tmp/nemo-fabric-config/.wheelhouse/$fabric_wheel" \ + "nemo-fabric[claude,harbor,hermes,hermes-agent,relay,runtime] @ file:///tmp/nemo-fabric-config/.wheelhouse/$fabric_wheel" \ > "$bundle_dir/.fabric-package" echo "Prepared $bundle_dir" diff --git a/tests/integrations/test_harbor_runner.py b/tests/integrations/test_harbor_runner.py index 44b78653..b6122196 100644 --- a/tests/integrations/test_harbor_runner.py +++ b/tests/integrations/test_harbor_runner.py @@ -252,7 +252,7 @@ def test_claude_calculator_run_uses_current_adapter_contract(): dockerfile = CALCULATOR_DOCKERFILE.read_text(encoding="utf-8") assert "-e /opt/nemo-fabric/adapters/claude" in dockerfile assert "-e /opt/nemo-fabric/adapters/hermes" in dockerfile - assert "nemo-fabric[harbor,hermes,relay,runtime]" in dockerfile + assert "nemo-fabric[harbor,hermes,hermes-agent,relay,runtime]" in dockerfile assert "@openai/codex" not in dockerfile From 2e8d87bb8fd5a4d33164e27b61e93b5e82f95b2b Mon Sep 17 00:00:00 2001 From: David Gardner Date: Tue, 21 Jul 2026 11:02:57 -0700 Subject: [PATCH 4/8] Revert unintentional version change Signed-off-by: David Gardner --- uv.lock | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/uv.lock b/uv.lock index 2a60089b..0c07f8a4 100644 --- a/uv.lock +++ b/uv.lock @@ -1100,13 +1100,12 @@ wheels = [ [[package]] name = "hermes-agent" -version = "0.19.0" +version = "0.17.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "certifi", marker = "python_full_version < '3.14'" }, { name = "concurrent-log-handler", marker = "python_full_version < '3.14' and sys_platform == 'win32'" }, { name = "croniter", marker = "python_full_version < '3.14'" }, - { name = "cryptography", version = "46.0.7", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.14'" }, { name = "fastapi", marker = "python_full_version < '3.14'" }, { name = "fire", marker = "python_full_version < '3.14'" }, { name = "httpx", extra = ["socks"], marker = "python_full_version < '3.14'" }, @@ -1134,9 +1133,9 @@ dependencies = [ { name = "uvicorn", extra = ["standard"], marker = "python_full_version < '3.14'" }, { name = "websockets", marker = "python_full_version < '3.14'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/c1/2c/5eca471374c1b48555a8f0b988c06b19a93ae33a6c0e67845e47fc3a5628/hermes_agent-0.19.0.tar.gz", hash = "sha256:ac986bede64a2785436676c0ea084ec586574f8cb00a9d047e095b435d3e21c0", size = 14282599, upload-time = "2026-07-20T18:37:28.903Z" } +sdist = { url = "https://files.pythonhosted.org/packages/99/c2/6b65b1c1d093eff415304472709479a392ac1422e36d007e32f3bb848f58/hermes_agent-0.17.0.tar.gz", hash = "sha256:5ceda2a131627fecf5fd52b05d0162b48032023a5d814bb5d1894db4aa146120", size = 12156176, upload-time = "2026-06-19T19:40:16.589Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e5/30/c85be8290e9565dc3c7a9720e93f3e59e09b1b163487be4946c3aa848f80/hermes_agent-0.19.0-py3-none-any.whl", hash = "sha256:bd0bac012aee38a60894781f4597dc29ee7bedb3448540249921f10d3bef327f", size = 10144439, upload-time = "2026-07-20T18:37:26.417Z" }, + { url = "https://files.pythonhosted.org/packages/e3/e2/d18d5ec6735b412fde47ecac3b6a63874c824c83e9821e1c1f4a07bcff85/hermes_agent-0.17.0-py3-none-any.whl", hash = "sha256:f11dcc1b168d2db626ef8b2175301741a86b5247c5ffaff4b0f0e24018d1b190", size = 8642279, upload-time = "2026-06-19T19:40:14.014Z" }, ] [[package]] From d7382b098e31e65102447244f9fd07bf3dece2d7 Mon Sep 17 00:00:00 2001 From: David Gardner Date: Tue, 21 Jul 2026 11:09:38 -0700 Subject: [PATCH 5/8] Disable verbose flag for license diff Signed-off-by: David Gardner --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 6e193744..89886fde 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -66,4 +66,4 @@ repos: language: system files: '(^|/)(Cargo\.toml|Cargo\.lock|pyproject\.toml|uv\.lock)$' pass_filenames: false - verbose: true + verbose: false From 43c1d5a85c095024b7376addf0507c760f7c4eca Mon Sep 17 00:00:00 2001 From: David Gardner Date: Tue, 21 Jul 2026 11:21:11 -0700 Subject: [PATCH 6/8] Document the hermes-agent extra Signed-off-by: David Gardner --- adapters/hermes/README.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/adapters/hermes/README.md b/adapters/hermes/README.md index 70f5dcba..3bd88af1 100644 --- a/adapters/hermes/README.md +++ b/adapters/hermes/README.md @@ -15,12 +15,18 @@ To install just the Hermes Agent adapter by itself: pip install "nemo-fabric[hermes]" ``` -To install just the Hermes Agent adapter along with the NeMo Fabric Runtime: +To install the Hermes Agent adapter along with the NeMo Fabric Runtime: ```bash pip install "nemo-fabric[hermes, runtime]" ``` +To install the Hermes Agent adapter along with a compatible version of Hermes Agent: + +```bash +pip install "nemo-fabric[hermes, hermes-agent]" +``` + ## What It Maps The adapter receives a normalized payload from Fabric and materializes Hermes-native configuration for: From 8cda0781ac250f1c387bfd1a6263d9f6ddb3c5a9 Mon Sep 17 00:00:00 2001 From: David Gardner Date: Wed, 22 Jul 2026 10:11:55 -0700 Subject: [PATCH 7/8] Remove wording about NeMo Fabric not being on pypi Signed-off-by: David Gardner --- skills/nemo-fabric-integrate/SKILL.md | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/skills/nemo-fabric-integrate/SKILL.md b/skills/nemo-fabric-integrate/SKILL.md index fcc2e47d..64ecfdfa 100644 --- a/skills/nemo-fabric-integrate/SKILL.md +++ b/skills/nemo-fabric-integrate/SKILL.md @@ -44,18 +44,15 @@ that stay hidden behind this boundary. The consumer or its execution environment owns installation; NeMo Fabric validates runtime assumptions but never installs harnesses or credentials at run time. -- NeMo Fabric is not published on PyPI yet. From a source checkout, `just build-all` - builds the native extension and installs the SDK. To install into another - environment, build wheels with `just wheels`, then +- From a source checkout, `just build-all` builds the native extension and installs the SDK. To install into another environment, build wheels with `just wheels`, then `uv pip install --find-links nemo-fabric` (add the - `harbor` extra for the Harbor integration). See the + `harbor` extra for the Harbor integration). Refer to the [installation guide](https://github.com/NVIDIA/NeMo-Fabric/blob/main/docs/getting-started/install.mdx). - Select a harness adapter — the `adapter_id` set in `HarnessConfig`, for example `nvidia.fabric.hermes` — and install its extra the same way, for example `uv pip install --find-links "nemo-fabric[hermes]"` (available extras: `hermes`, `codex`, `deepagents`, `claude`), plus the - adapter's own harness - binaries and dependencies. + adapter's own harness binaries and dependencies. - Provide model credentials through environment variables named by the config (`ModelConfig.api_key_env`), never as literals in code. - Confirm the native extension is importable; SDK calls raise From 6ed94c02a13784e882b9f089c178cc7874ee5104 Mon Sep 17 00:00:00 2001 From: David Gardner Date: Wed, 22 Jul 2026 10:15:59 -0700 Subject: [PATCH 8/8] Apply suggestion from LL Signed-off-by: David Gardner --- skills/nemo-fabric-integrate/SKILL.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/skills/nemo-fabric-integrate/SKILL.md b/skills/nemo-fabric-integrate/SKILL.md index 64ecfdfa..5b326452 100644 --- a/skills/nemo-fabric-integrate/SKILL.md +++ b/skills/nemo-fabric-integrate/SKILL.md @@ -52,7 +52,7 @@ runtime assumptions but never installs harnesses or credentials at run time. `nvidia.fabric.hermes` — and install its extra the same way, for example `uv pip install --find-links "nemo-fabric[hermes]"` (available extras: `hermes`, `codex`, `deepagents`, `claude`), plus the - adapter's own harness binaries and dependencies. + corresponding harness binaries and dependencies. - Provide model credentials through environment variables named by the config (`ModelConfig.api_key_env`), never as literals in code. - Confirm the native extension is importable; SDK calls raise