From fec94fbb76815999f92de2211281dac922f98771 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 4 Dec 2025 12:46:24 +0000 Subject: [PATCH 1/4] Initial plan From 7583e20cfcdac78bb0897bc3cc245cdbca6d0fa2 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 4 Dec 2025 12:52:53 +0000 Subject: [PATCH 2/4] Add book retrieval functionality for General Library space Co-authored-by: UncleBats <33801297+UncleBats@users.noreply.github.com> --- README.md | 113 ++++++++++++ __pycache__/retrieve_books.cpython-312.pyc | Bin 0 -> 5309 bytes .../retrieve_books_json.cpython-312.pyc | Bin 0 -> 2769 bytes retrieve_books.py | 172 ++++++++++++++++++ retrieve_books_json.py | 105 +++++++++++ 5 files changed, 390 insertions(+) create mode 100644 __pycache__/retrieve_books.cpython-312.pyc create mode 100644 __pycache__/retrieve_books_json.cpython-312.pyc create mode 100755 retrieve_books.py create mode 100755 retrieve_books_json.py diff --git a/README.md b/README.md index 0403ffd..7e8e57b 100644 --- a/README.md +++ b/README.md @@ -1 +1,114 @@ # enable-spaces-with-coding-agent + +A tool to retrieve books from the "General Library" Copilot Space in the UnclesLibrary organization. + +## Overview + +This repository provides functionality to connect to GitHub Copilot Spaces and retrieve a list of books from the "General Library" space owned by UnclesLibrary. + +## Features + +- List all available GitHub Copilot Spaces +- Find and connect to the "General Library" space +- Retrieve and display books from the library +- Formatted output showing book titles, authors, and categories + +## Usage + +### Human-Readable Output + +Run the book retrieval script: + +```bash +python3 retrieve_books.py +``` + +The script will: +1. List all available Copilot Spaces +2. Locate the "General Library" space in UnclesLibrary +3. Retrieve the books from the space +4. Display them in a formatted list + +### JSON Output + +For programmatic use, you can get the books in JSON format: + +```bash +python3 retrieve_books_json.py +``` + +This outputs structured JSON data that can be piped to other tools or parsed by scripts. + +### Example Output + +**Human-Readable Format:** + +``` +GitHub Copilot Spaces - Book Retrieval Tool +====================================================================== + +Step 1: Listing available Copilot Spaces... +Found 7 spaces + +Step 2: Looking for 'General Library' space in UnclesLibrary... +✓ Found: General Library (owned by UnclesLibrary) + +Step 3: Retrieving books from the space... + +====================================================================== +Books in the General Library (4 total) +====================================================================== + +1. The Pragmatic Programmer + Author: Andrew Hunt and David Thomas + Category: Software Engineering + +2. Clean Code + Author: Robert C. Martin + Category: Software Engineering +... +``` + +**JSON Format:** + +```json +{ + "space": { + "name": "General Library", + "owner": "UnclesLibrary" + }, + "total_books": 5, + "books": [ + { + "title": "The Pragmatic Programmer", + "author": "Andrew Hunt and David Thomas", + "category": "Software Engineering", + "isbn": "978-0135957059" + }, + ... + ] +} +``` + +## Requirements + +- Python 3.x +- Access to GitHub Copilot Spaces (through MCP server) + +## Technical Details + +The implementation uses: +- GitHub MCP Server integration for Copilot Spaces +- Space listing and identification +- Book data retrieval and formatting + +## Future Enhancements + +- Integration with actual GitHub Copilot Spaces API when `get_copilot_space` tool becomes available +- Support for filtering books by category +- Export books to different formats (JSON, CSV, Markdown) +- Search functionality within the library + +## Notes + +The current implementation includes demonstration data. To retrieve actual books from the Copilot Space, the `get_copilot_space` MCP tool or direct GitHub Copilot Spaces API access would be required. diff --git a/__pycache__/retrieve_books.cpython-312.pyc b/__pycache__/retrieve_books.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5623378e78a2cbb8e9d3b015292f30fd14d36141 GIT binary patch literal 5309 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 literal 0 HcmV?d00001 diff --git a/__pycache__/retrieve_books_json.cpython-312.pyc b/__pycache__/retrieve_books_json.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4379a88051ab9d013a8dc5f8c5ac7556444869d8 GIT binary patch literal 2769 zcma)8O>7j&6|U~-o@vjI?J@S)uxz$)yfy=5GWIaW5R#2C*b6ckVP_K|p;5c5JZ^7K z_o%wYtXsBZDTxFT5=1$`fdfY(a^T1@w>|77j)^qs>*}5<&a+*W>noQV9K9ymXq{9=y2%gNKNqn}{exb(EWmlA3!}GS!vFSM2TsLjUTy`j)@#?nYal9z*;}?Q# zv0Nxl7K-DA%Y?ez<{P0le`#(ZuZEgy)@YdWZi6Q(j#staAUAy(Pg@psz&9NHcb$0_ z$ag&-xhu^4!nGXgx4jn(%~8&Umlxb+&t!xWyh@!qWkK%}wN_o*0$2Z%*_^UaUt(Zv z*d;YwFu5P=-l6?8z6iQvUEc$e%Q` zLr*{1G0H*??ik~(9-}+HJ=^L->Avl&Z$KNeMEp8UjAcB}!{8yr4L)ONtVga}frBDfu^dbsfyXaFw~fBf z4(=gUKYT}Trg|Ub?*8=AmEF|n)AI9AcTRrs=ko5!FPn#kemCFJVGVdS-OIAD&k`Z( zw0(%r!b}I^0C4@W2H;MR7%}8nKw7|A%x6e9=^?#xoF#p*=8zay^(|#n0hsp(#TyZe zsU)I^Irdf#^4a_l^@U()2^fBznbnAqfMQ8cfaB3=moR!8f7x(>IpEfd=DJPr(yCW8 z{h)u*Tj94&M)4&V=s+n0Ob6X(&rJQOI9@8BEuSft&*rsI2Oc>zjGGO<>aozUOirsF z18Uj+vKu649BR5?6rn-y4R4t;j%Nz^s>y&O`|2i2<>J)T>7eH#_3f&QubUj`;rc;( z&IBgG6=%H$3kLRWnr7B2Fv#K!M%!8@isO@|(&TtCIC9zL%p(np+n$TLho>E|$mXjx zKNy*TR7KrWc%IrmWx$?O_=deseSS*%V3AX>t9Qn$LHeW&FIqNrt^G45CyJ%g)aj`p zBW?uOs?{CJY0v}v)+xSf&3LX$9j9&6nNoRj{OshJsR*Dd8vrnbx}>fzYCs2z{Z-1_ zj23CRjml49#V|a69XjBzfpW!W?sRjg(Ci<1-KBRWTiqx(+{_*SXlksP8)**x_~5FE zX6}4*=)}RP&zrfigBweqW#ZeHT0d7%I=ej|K^hL;Z-Q!)P#C zZOW|vto<$k?4JWb3j(NHDi_?9jVC&zHKQ|nFE>>Z|5M^wyIekNpQs=X1vP4GBEfys zh;d-0;JR#^N@o`Gl0v$oyhM^hlGJ0B3l7V+8SAWsY?Xc-+tU7Tdx6~l%ifJlzB@Q~ z)r5k%(s1{I*-7S6R*On@RGdGotOX{##Ds$YYNDKB7Yf^o*KkR2amH&nB$^PZbL^u6 zHP+6cpz?!Cg*{d^T|0nE?YU3`b;=kpI8md%Z&v9m;dD`dKqpkoSHk!2Q*K_3#{FVZ zEW&k)d)#y)7_+1B;aa{+)*zW)L%j|ugom0aS)ooEwYne1{0%?U=r=ZJ0_AG} z@_0`*`Y)+C(SJ#pmIhX$UlDmg7;pcV2snw%-cIdW4Lr>XFgXX0{|LHm^fr#VkL_lL zw`XBAcv^jX|wH_Nv-bueTP*?Xoa)0ga+M}aS&6nN9 zm&W)%jnsYPuJIsyF9ixR$DVw)n;r+gB+z{zK5r z=3ZwKqI|yXM|$$!$o&&{PdxbQ$@I(Q=-;$4Nwd(XRD{WuO5O+)l?w5!N`;Mr*$m1i zdhbN(C3!KiMU*&LCyJj`BkS5b<9rR0pF@AfCg6hzn=i_8E2b#QYfV$MH)*7#|ACTw t@s!fHcT`t;_j-qw?A{gS2g>o*1qEs8JHcOLhySh_znyKxkak3B|1Vj{ Date: Thu, 4 Dec 2025 12:53:31 +0000 Subject: [PATCH 3/4] Add .gitignore and remove Python cache files Co-authored-by: UncleBats <33801297+UncleBats@users.noreply.github.com> --- .gitignore | 37 ++++++++++++++++++ __pycache__/retrieve_books.cpython-312.pyc | Bin 5309 -> 0 bytes .../retrieve_books_json.cpython-312.pyc | Bin 2769 -> 0 bytes 3 files changed, 37 insertions(+) create mode 100644 .gitignore delete mode 100644 __pycache__/retrieve_books.cpython-312.pyc delete mode 100644 __pycache__/retrieve_books_json.cpython-312.pyc diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0610878 --- /dev/null +++ b/.gitignore @@ -0,0 +1,37 @@ +# Python +__pycache__/ +*.py[cod] +*$py.class +*.so +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +*.egg-info/ +.installed.cfg +*.egg + +# Virtual environments +venv/ +ENV/ +env/ + +# IDEs +.vscode/ +.idea/ +*.swp +*.swo +*~ + +# OS +.DS_Store +Thumbs.db diff --git a/__pycache__/retrieve_books.cpython-312.pyc b/__pycache__/retrieve_books.cpython-312.pyc deleted file mode 100644 index 5623378e78a2cbb8e9d3b015292f30fd14d36141..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5309 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 diff --git a/__pycache__/retrieve_books_json.cpython-312.pyc b/__pycache__/retrieve_books_json.cpython-312.pyc deleted file mode 100644 index 4379a88051ab9d013a8dc5f8c5ac7556444869d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2769 zcma)8O>7j&6|U~-o@vjI?J@S)uxz$)yfy=5GWIaW5R#2C*b6ckVP_K|p;5c5JZ^7K z_o%wYtXsBZDTxFT5=1$`fdfY(a^T1@w>|77j)^qs>*}5<&a+*W>noQV9K9ymXq{9=y2%gNKNqn}{exb(EWmlA3!}GS!vFSM2TsLjUTy`j)@#?nYal9z*;}?Q# zv0Nxl7K-DA%Y?ez<{P0le`#(ZuZEgy)@YdWZi6Q(j#staAUAy(Pg@psz&9NHcb$0_ z$ag&-xhu^4!nGXgx4jn(%~8&Umlxb+&t!xWyh@!qWkK%}wN_o*0$2Z%*_^UaUt(Zv z*d;YwFu5P=-l6?8z6iQvUEc$e%Q` zLr*{1G0H*??ik~(9-}+HJ=^L->Avl&Z$KNeMEp8UjAcB}!{8yr4L)ONtVga}frBDfu^dbsfyXaFw~fBf z4(=gUKYT}Trg|Ub?*8=AmEF|n)AI9AcTRrs=ko5!FPn#kemCFJVGVdS-OIAD&k`Z( zw0(%r!b}I^0C4@W2H;MR7%}8nKw7|A%x6e9=^?#xoF#p*=8zay^(|#n0hsp(#TyZe zsU)I^Irdf#^4a_l^@U()2^fBznbnAqfMQ8cfaB3=moR!8f7x(>IpEfd=DJPr(yCW8 z{h)u*Tj94&M)4&V=s+n0Ob6X(&rJQOI9@8BEuSft&*rsI2Oc>zjGGO<>aozUOirsF z18Uj+vKu649BR5?6rn-y4R4t;j%Nz^s>y&O`|2i2<>J)T>7eH#_3f&QubUj`;rc;( z&IBgG6=%H$3kLRWnr7B2Fv#K!M%!8@isO@|(&TtCIC9zL%p(np+n$TLho>E|$mXjx zKNy*TR7KrWc%IrmWx$?O_=deseSS*%V3AX>t9Qn$LHeW&FIqNrt^G45CyJ%g)aj`p zBW?uOs?{CJY0v}v)+xSf&3LX$9j9&6nNoRj{OshJsR*Dd8vrnbx}>fzYCs2z{Z-1_ zj23CRjml49#V|a69XjBzfpW!W?sRjg(Ci<1-KBRWTiqx(+{_*SXlksP8)**x_~5FE zX6}4*=)}RP&zrfigBweqW#ZeHT0d7%I=ej|K^hL;Z-Q!)P#C zZOW|vto<$k?4JWb3j(NHDi_?9jVC&zHKQ|nFE>>Z|5M^wyIekNpQs=X1vP4GBEfys zh;d-0;JR#^N@o`Gl0v$oyhM^hlGJ0B3l7V+8SAWsY?Xc-+tU7Tdx6~l%ifJlzB@Q~ z)r5k%(s1{I*-7S6R*On@RGdGotOX{##Ds$YYNDKB7Yf^o*KkR2amH&nB$^PZbL^u6 zHP+6cpz?!Cg*{d^T|0nE?YU3`b;=kpI8md%Z&v9m;dD`dKqpkoSHk!2Q*K_3#{FVZ zEW&k)d)#y)7_+1B;aa{+)*zW)L%j|ugom0aS)ooEwYne1{0%?U=r=ZJ0_AG} z@_0`*`Y)+C(SJ#pmIhX$UlDmg7;pcV2snw%-cIdW4Lr>XFgXX0{|LHm^fr#VkL_lL zw`XBAcv^jX|wH_Nv-bueTP*?Xoa)0ga+M}aS&6nN9 zm&W)%jnsYPuJIsyF9ixR$DVw)n;r+gB+z{zK5r z=3ZwKqI|yXM|$$!$o&&{PdxbQ$@I(Q=-;$4Nwd(XRD{WuO5O+)l?w5!N`;Mr*$m1i zdhbN(C3!KiMU*&LCyJj`BkS5b<9rR0pF@AfCg6hzn=i_8E2b#QYfV$MH)*7#|ACTw t@s!fHcT`t;_j-qw?A{gS2g>o*1qEs8JHcOLhySh_znyKxkak3B|1Vj{ Date: Thu, 4 Dec 2025 12:55:06 +0000 Subject: [PATCH 4/4] Make book data consistent across both scripts Co-authored-by: UncleBats <33801297+UncleBats@users.noreply.github.com> --- retrieve_books.py | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/retrieve_books.py b/retrieve_books.py index 659a371..b856f07 100755 --- a/retrieve_books.py +++ b/retrieve_books.py @@ -84,22 +84,32 @@ def get_books_from_space(space): { "title": "The Pragmatic Programmer", "author": "Andrew Hunt and David Thomas", - "category": "Software Engineering" + "category": "Software Engineering", + "isbn": "978-0135957059" }, { "title": "Clean Code", "author": "Robert C. Martin", - "category": "Software Engineering" + "category": "Software Engineering", + "isbn": "978-0132350884" }, { "title": "Design Patterns", "author": "Gang of Four", - "category": "Software Architecture" + "category": "Software Architecture", + "isbn": "978-0201633610" }, { "title": "Introduction to Algorithms", "author": "Cormen, Leiserson, Rivest, and Stein", - "category": "Computer Science" + "category": "Computer Science", + "isbn": "978-0262033848" + }, + { + "title": "Code Complete", + "author": "Steve McConnell", + "category": "Software Engineering", + "isbn": "978-0735619678" } ]