{"_id":"@ilivemylife/graph-sdk","_rev":"29-95cb542c6c3ae692b5cde10746b6e723","name":"@ilivemylife/graph-sdk","dist-tags":{"latest":"1.0.29"},"versions":{"1.0.0":{"name":"@ilivemylife/graph-sdk","version":"1.0.0","keywords":["ilivemylife","ilml","knowledge-graph","pkm","graphql","sdk","cli","ai","lifebot"],"author":{"url":"https://ilivemylife.io","name":"Ilya Sorokin","email":"info@ilivemylife.io"},"license":"UNLICENSED","_id":"@ilivemylife/graph-sdk@1.0.0","maintainers":[{"name":"silar","email":"ilya.sorokin@gmail.com"}],"homepage":"https://ilivemylife.io","bin":{"ilml":"bin/ilml","ilml-mcp":"dist/mcp-server.mjs"},"dist":{"shasum":"35726c74f85db182bba27dec8fd7543ad2b5f59d","tarball":"https://registry.npmjs.org/@ilivemylife/graph-sdk/-/graph-sdk-1.0.0.tgz","fileCount":24,"integrity":"sha512-dmvfCpv1eY/2NS2BTB6t+8xdX/1yZFswQt63G81g27rW6J4g5CK2dZGmMeqh4L4wV3pwwQVyySZEGeo/MUeGFw==","signatures":[{"sig":"MEQCIDLhJbi2JxOS/5Pnh4oxw5rn/0McgTx7aWUjsZvWLrLDAiBaZBkP6phaTdvwp0rgV65LCQvgZ6eRAKDYydGq8PEiog==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":610025},"main":"./dist/client.cjs","type":"module","types":"./dist/client.d.ts","module":"./dist/client.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/client.d.ts","import":"./dist/client.mjs","require":"./dist/client.cjs"},"./queries":{"types":"./dist/queries.d.ts","import":"./dist/queries.mjs","require":"./dist/queries.cjs"}},"gitHead":"1b275089a6a83dc4d86c564922bf2f8de4032741","scripts":{"build":"tsup","release:major":"npm version major && npm publish --access public","release:minor":"npm version minor && npm publish --access public","release:patch":"npm version patch && npm publish --access public","prepublishOnly":"npm run build"},"_npmUser":{"name":"silar","email":"ilya.sorokin@gmail.com"},"_npmVersion":"10.7.0","description":"SDK and CLI for iLiveMyLife Knowledge Graph","directories":{},"sideEffects":false,"_nodeVersion":"18.20.3","dependencies":{"ws":"^8.18.0","graphql":"^16.8.0","graphql-ws":"^5.14.0","cross-fetch":"^4.0.0","@apollo/client":"^3.8.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","@types/ws":"^8.18.1","typescript":"^5.3.0"},"_npmOperationalInternal":{"tmp":"tmp/graph-sdk_1.0.0_1770206014491_0.5146406117050424","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@ilivemylife/graph-sdk","version":"1.0.1","keywords":["ilivemylife","ilml","knowledge-graph","pkm","graphql","sdk","cli","ai","lifebot"],"author":{"url":"https://ilivemylife.io","name":"Ilya Sorokin","email":"info@ilivemylife.io"},"license":"UNLICENSED","_id":"@ilivemylife/graph-sdk@1.0.1","maintainers":[{"name":"silar","email":"ilya.sorokin@gmail.com"}],"homepage":"https://ilivemylife.io","bin":{"ilml":"dist/cli.mjs","ilml-mcp":"dist/mcp-server.mjs"},"dist":{"shasum":"9b18caa2cc441c978a1499250701681a1a329831","tarball":"https://registry.npmjs.org/@ilivemylife/graph-sdk/-/graph-sdk-1.0.1.tgz","fileCount":23,"integrity":"sha512-0ehbamrwKWLnkfjbQDcqDoqVU0iqO3M80HCm3WO5mAEeODLfKDqh/rzdZ8O0XaSvZZQLQGSwpTOKadWZAiSjBQ==","signatures":[{"sig":"MEUCIQCOIqotEioTBiJygmrarShi70t1xrA2k56NKRFtMC1OEwIgemsVEtEeFwTLMecudQfQ7Paq/ECMk3ouM9ENPXz+w3M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":610132},"main":"./dist/client.cjs","type":"module","types":"./dist/client.d.ts","module":"./dist/client.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/client.d.ts","import":"./dist/client.mjs","require":"./dist/client.cjs"},"./queries":{"types":"./dist/queries.d.ts","import":"./dist/queries.mjs","require":"./dist/queries.cjs"}},"gitHead":"a9bc323739ae511f3826875182bcc51501cfaa95","scripts":{"build":"tsup","release:major":"npm version major && npm publish --access public","release:minor":"npm version minor && npm publish --access public","release:patch":"npm version patch && npm publish --access public","prepublishOnly":"npm run build"},"_npmUser":{"name":"silar","email":"ilya.sorokin@gmail.com"},"_npmVersion":"10.7.0","description":"SDK and CLI for iLiveMyLife Knowledge Graph","directories":{},"sideEffects":false,"_nodeVersion":"18.20.3","dependencies":{"ws":"^8.18.0","graphql":"^16.8.0","graphql-ws":"^5.14.0","cross-fetch":"^4.0.0","@apollo/client":"^3.8.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","@types/ws":"^8.18.1","typescript":"^5.3.0"},"_npmOperationalInternal":{"tmp":"tmp/graph-sdk_1.0.1_1770286820565_0.19517848475502686","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@ilivemylife/graph-sdk","version":"1.0.2","keywords":["ilivemylife","ilml","knowledge-graph","pkm","graphql","sdk","cli","ai","lifebot"],"author":{"url":"https://ilivemylife.io","name":"Ilya Sorokin","email":"info@ilivemylife.io"},"license":"UNLICENSED","_id":"@ilivemylife/graph-sdk@1.0.2","maintainers":[{"name":"silar","email":"ilya.sorokin@gmail.com"}],"homepage":"https://ilivemylife.io","bin":{"ilml":"dist/cli.mjs","ilml-mcp":"dist/mcp-server.mjs"},"dist":{"shasum":"ade7c5f4f24a78c7f0e9c5e12b0b02c1a634a2d3","tarball":"https://registry.npmjs.org/@ilivemylife/graph-sdk/-/graph-sdk-1.0.2.tgz","fileCount":23,"integrity":"sha512-H37473BzJTwUOUeb7RhLMdXWyh2hNN93wSHn0zxX+CYIo3C0qrmOWpeRqRNRDXsPCl+rt9tZiZZhCls8WhH4Jw==","signatures":[{"sig":"MEUCIC5O15nr+Imj31FnYIGUuvBLyd0buPtvxY4FWLjiUN2VAiEAn/Pm7Dsq/vB/QXLQn1X7/JXsOd2hVYZcLG+RVyUyTgI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":609633},"main":"./dist/client.cjs","type":"module","types":"./dist/client.d.ts","module":"./dist/client.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/client.d.ts","import":"./dist/client.mjs","require":"./dist/client.cjs"},"./queries":{"types":"./dist/queries.d.ts","import":"./dist/queries.mjs","require":"./dist/queries.cjs"}},"gitHead":"8c50ee45136d8d59e9ffc57b3d7bb3d5f6cfcf95","scripts":{"build":"tsup","release:major":"npm version major && npm publish --access public","release:minor":"npm version minor && npm publish --access public","release:patch":"npm version patch && npm publish --access public","prepublishOnly":"npm run build"},"_npmUser":{"name":"silar","email":"ilya.sorokin@gmail.com"},"_npmVersion":"10.7.0","description":"SDK and CLI for iLiveMyLife Knowledge Graph","directories":{},"sideEffects":false,"_nodeVersion":"18.20.3","dependencies":{"ws":"^8.18.0","graphql":"^16.8.0","graphql-ws":"^5.14.0","cross-fetch":"^4.0.0","@apollo/client":"^3.8.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","@types/ws":"^8.18.1","typescript":"^5.3.0"},"_npmOperationalInternal":{"tmp":"tmp/graph-sdk_1.0.2_1770298607075_0.31203664639263784","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@ilivemylife/graph-sdk","version":"1.0.3","keywords":["ilivemylife","ilml","knowledge-graph","pkm","graphql","sdk","cli","ai","lifebot"],"author":{"url":"https://ilivemylife.io","name":"Ilya Sorokin","email":"info@ilivemylife.io"},"license":"UNLICENSED","_id":"@ilivemylife/graph-sdk@1.0.3","maintainers":[{"name":"silar","email":"ilya.sorokin@gmail.com"}],"homepage":"https://ilivemylife.io","bin":{"ilml":"dist/cli.mjs","ilml-mcp":"dist/mcp-server.mjs"},"dist":{"shasum":"bb8caca69d092a139df0a13977a9d6bd1d1f21dc","tarball":"https://registry.npmjs.org/@ilivemylife/graph-sdk/-/graph-sdk-1.0.3.tgz","fileCount":23,"integrity":"sha512-ClR2HLlKy2JD8g5xKRW0uBX331n/0dbEWJ4yEM4H39sECevcIP7bpuZBhasCkUxGXhdVZEPA2qFt+9ezRPwJiA==","signatures":[{"sig":"MEQCIFjRb3fp48SlZEcOr1igo4aVhEgsePk1fyHmvbtsqrAOAiAivdB5DAS0WHgXXCJYbSupvqe4kJrbZtj4HctmQ4qkXQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":610885},"main":"./dist/client.cjs","type":"module","types":"./dist/client.d.ts","module":"./dist/client.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/client.d.ts","import":"./dist/client.mjs","require":"./dist/client.cjs"},"./queries":{"types":"./dist/queries.d.ts","import":"./dist/queries.mjs","require":"./dist/queries.cjs"}},"gitHead":"3c51feabe4f35f886bcfce94570e43a2a2597c05","scripts":{"build":"tsup","release:major":"npm version major && npm publish --access public","release:minor":"npm version minor && npm publish --access public","release:patch":"npm version patch && npm publish --access public","prepublishOnly":"npm run build"},"_npmUser":{"name":"silar","email":"ilya.sorokin@gmail.com"},"_npmVersion":"10.7.0","description":"SDK and CLI for iLiveMyLife Knowledge Graph","directories":{},"sideEffects":false,"_nodeVersion":"18.20.3","dependencies":{"ws":"^8.18.0","graphql":"^16.8.0","graphql-ws":"^5.14.0","cross-fetch":"^4.0.0","@apollo/client":"^3.8.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","@types/ws":"^8.18.1","typescript":"^5.3.0"},"_npmOperationalInternal":{"tmp":"tmp/graph-sdk_1.0.3_1770300850618_0.026098078518653534","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@ilivemylife/graph-sdk","version":"1.0.4","keywords":["ilivemylife","ilml","knowledge-graph","pkm","graphql","sdk","cli","ai","lifebot"],"author":{"url":"https://ilivemylife.io","name":"Ilya Sorokin","email":"info@ilivemylife.io"},"license":"UNLICENSED","_id":"@ilivemylife/graph-sdk@1.0.4","maintainers":[{"name":"silar","email":"ilya.sorokin@gmail.com"}],"homepage":"https://ilivemylife.io","bin":{"ilml":"dist/cli.mjs","ilml-mcp":"dist/mcp-server.mjs"},"dist":{"shasum":"977201c57cec6d338970dd1a617cb979c7ae49cc","tarball":"https://registry.npmjs.org/@ilivemylife/graph-sdk/-/graph-sdk-1.0.4.tgz","fileCount":23,"integrity":"sha512-ndr0cP/9oC8y27y+bdhu6aE7hYdtA6NIjEpQ5gg2YO2KdoxNjcaGekpN9GEGh58/LerWMt7DQN+Qy4JA1JCmOQ==","signatures":[{"sig":"MEYCIQCA/xrL8b0+fo2Qpbk1ZN8Hb4/851smBdKjKsg2hCbrIgIhALKGzzA8LKxCmCdy1OOxUmzoNWC167lfDu5hTtGkybJt","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":611808},"main":"./dist/client.cjs","type":"module","types":"./dist/client.d.ts","module":"./dist/client.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/client.d.ts","import":"./dist/client.mjs","require":"./dist/client.cjs"},"./queries":{"types":"./dist/queries.d.ts","import":"./dist/queries.mjs","require":"./dist/queries.cjs"}},"gitHead":"0326e7c914366d1be59f37495bac00b441252a9a","scripts":{"build":"tsup","release:major":"npm version major && npm publish --access public","release:minor":"npm version minor && npm publish --access public","release:patch":"npm version patch && npm publish --access public","prepublishOnly":"npm run build"},"_npmUser":{"name":"silar","email":"ilya.sorokin@gmail.com"},"_npmVersion":"10.7.0","description":"SDK and CLI for iLiveMyLife Knowledge Graph","directories":{},"sideEffects":false,"_nodeVersion":"18.20.3","dependencies":{"ws":"^8.18.0","graphql":"^16.8.0","graphql-ws":"^5.14.0","cross-fetch":"^4.0.0","@apollo/client":"^3.8.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","@types/ws":"^8.18.1","typescript":"^5.3.0"},"_npmOperationalInternal":{"tmp":"tmp/graph-sdk_1.0.4_1770301456469_0.5920789709543399","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@ilivemylife/graph-sdk","version":"1.0.5","keywords":["ilivemylife","ilml","knowledge-graph","pkm","graphql","sdk","cli","ai","lifebot"],"author":{"url":"https://ilivemylife.io","name":"Ilya Sorokin","email":"info@ilivemylife.io"},"license":"UNLICENSED","_id":"@ilivemylife/graph-sdk@1.0.5","maintainers":[{"name":"silar","email":"ilya.sorokin@gmail.com"}],"homepage":"https://ilivemylife.io","bin":{"ilml":"dist/cli.mjs","ilml-mcp":"dist/mcp-server.mjs"},"dist":{"shasum":"6fa9d85963bf633c233768e40cb3a2fc7dadbce7","tarball":"https://registry.npmjs.org/@ilivemylife/graph-sdk/-/graph-sdk-1.0.5.tgz","fileCount":23,"integrity":"sha512-3qJrYecaIloI/PYoeDqi+VPYIRmTXTnCvdrpU924pMCi43ZBXSC5uZIiiqxpZjQDsZ6vSVuliWrMY4+NVzrI9A==","signatures":[{"sig":"MEUCIDqr1g2jI3sl0oDjiRSVfsOv93a7xlu5BxrOEDOlJPoKAiEAyGMF8mP7hdbejXT1ex/suX7qx0VldwSmLek2tpaQZKc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":612574},"main":"./dist/client.cjs","type":"module","types":"./dist/client.d.ts","module":"./dist/client.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/client.d.ts","import":"./dist/client.mjs","require":"./dist/client.cjs"},"./queries":{"types":"./dist/queries.d.ts","import":"./dist/queries.mjs","require":"./dist/queries.cjs"}},"gitHead":"897f90e02923e7672b071d66431dc5ea69b3a6f5","scripts":{"build":"tsup","release:major":"npm version major && npm publish --access public","release:minor":"npm version minor && npm publish --access public","release:patch":"npm version patch && npm publish --access public","prepublishOnly":"npm run build"},"_npmUser":{"name":"silar","email":"ilya.sorokin@gmail.com"},"_npmVersion":"10.7.0","description":"SDK and CLI for iLiveMyLife Knowledge Graph","directories":{},"sideEffects":false,"_nodeVersion":"18.20.3","dependencies":{"ws":"^8.18.0","graphql":"^16.8.0","graphql-ws":"^5.14.0","cross-fetch":"^4.0.0","@apollo/client":"^3.8.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","@types/ws":"^8.18.1","typescript":"^5.3.0"},"_npmOperationalInternal":{"tmp":"tmp/graph-sdk_1.0.5_1770303142893_0.7498382794156684","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"@ilivemylife/graph-sdk","version":"1.0.6","keywords":["ilivemylife","ilml","knowledge-graph","pkm","graphql","sdk","cli","ai","lifebot"],"author":{"url":"https://ilivemylife.io","name":"Ilya Sorokin","email":"info@ilivemylife.io"},"license":"UNLICENSED","_id":"@ilivemylife/graph-sdk@1.0.6","maintainers":[{"name":"silar","email":"ilya.sorokin@gmail.com"}],"homepage":"https://ilivemylife.io","bin":{"ilml":"dist/cli.mjs","ilml-mcp":"dist/mcp-server.mjs"},"dist":{"shasum":"a41e03a8374d44b4b645a95ee5e0ea687b7858b9","tarball":"https://registry.npmjs.org/@ilivemylife/graph-sdk/-/graph-sdk-1.0.6.tgz","fileCount":23,"integrity":"sha512-2rGG+VWTxCsGNqXod8ocS40vijIjNVNp38YMU0jlUI8kSzUx0AsahmtqLA5i0VzOE4hU9DxPy558E64sqifroQ==","signatures":[{"sig":"MEYCIQDYAAV9x9RSvqDza+e/GthGRa7+ixMMF04rnNA595bptQIhAI+dCP7EQbFgkEsJkrhblZ5hsFi1ZdGlXH2y5VaeEBl7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":612507},"main":"./dist/client.cjs","type":"module","types":"./dist/client.d.ts","module":"./dist/client.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/client.d.ts","import":"./dist/client.mjs","require":"./dist/client.cjs"},"./queries":{"types":"./dist/queries.d.ts","import":"./dist/queries.mjs","require":"./dist/queries.cjs"}},"gitHead":"0501954ca8f3fc408f9647ddcd0848f57cd22f3c","scripts":{"build":"tsup","release:major":"npm version major && npm publish --access public","release:minor":"npm version minor && npm publish --access public","release:patch":"npm version patch && npm publish --access public","prepublishOnly":"npm run build"},"_npmUser":{"name":"silar","email":"ilya.sorokin@gmail.com"},"_npmVersion":"10.7.0","description":"SDK and CLI for iLiveMyLife Knowledge Graph","directories":{},"sideEffects":false,"_nodeVersion":"18.20.3","dependencies":{"ws":"^8.18.0","graphql":"^16.8.0","graphql-ws":"^5.14.0","cross-fetch":"^4.0.0","@apollo/client":"^3.8.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","@types/ws":"^8.18.1","typescript":"^5.3.0"},"_npmOperationalInternal":{"tmp":"tmp/graph-sdk_1.0.6_1770303882605_0.2848041452942265","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"@ilivemylife/graph-sdk","version":"1.0.7","keywords":["ilivemylife","ilml","knowledge-graph","pkm","graphql","sdk","cli","ai","lifebot"],"author":{"url":"https://ilivemylife.io","name":"Ilya Sorokin","email":"info@ilivemylife.io"},"license":"UNLICENSED","_id":"@ilivemylife/graph-sdk@1.0.7","maintainers":[{"name":"silar","email":"ilya.sorokin@gmail.com"}],"homepage":"https://ilivemylife.io","bin":{"ilml":"dist/cli.mjs","ilml-mcp":"dist/mcp-server.mjs"},"dist":{"shasum":"7c5e8944a6d292a92d5300f3983959b346856cc6","tarball":"https://registry.npmjs.org/@ilivemylife/graph-sdk/-/graph-sdk-1.0.7.tgz","fileCount":23,"integrity":"sha512-oQc/Mp9LBXGS1foxmoWTDAO5JgfO0Q5jXbTndGVPkJoqk9moo6/HyOn8E8MRn0iRMg8t80rsNQIx01g55thQaw==","signatures":[{"sig":"MEQCIC0P/rYvt04W7X4SmIDmwXRzxgHZ4LAh5uJnIbVAxNxXAiARWiJY7NRdnZJK/p4utV6FbWUy/eJHegoGksd7y7f22Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":613371},"main":"./dist/client.cjs","type":"module","types":"./dist/client.d.ts","module":"./dist/client.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/client.d.ts","import":"./dist/client.mjs","require":"./dist/client.cjs"},"./queries":{"types":"./dist/queries.d.ts","import":"./dist/queries.mjs","require":"./dist/queries.cjs"}},"gitHead":"9c94dd9d8cb8f8cf36eb00f79ba0616eff6292d5","scripts":{"build":"tsup","release:major":"npm version major && npm publish --access public","release:minor":"npm version minor && npm publish --access public","release:patch":"npm version patch && npm publish --access public","prepublishOnly":"npm run build"},"_npmUser":{"name":"silar","email":"ilya.sorokin@gmail.com"},"_npmVersion":"10.7.0","description":"SDK and CLI for iLiveMyLife Knowledge Graph","directories":{},"sideEffects":false,"_nodeVersion":"18.20.3","dependencies":{"ws":"^8.18.0","graphql":"^16.8.0","graphql-ws":"^5.14.0","cross-fetch":"^4.0.0","@apollo/client":"^3.8.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","@types/ws":"^8.18.1","typescript":"^5.3.0"},"_npmOperationalInternal":{"tmp":"tmp/graph-sdk_1.0.7_1770350307888_0.40633229748978916","host":"s3://npm-registry-packages-npm-production"}},"1.0.8":{"name":"@ilivemylife/graph-sdk","version":"1.0.8","keywords":["ilivemylife","ilml","knowledge-graph","pkm","graphql","sdk","cli","ai","lifebot"],"author":{"url":"https://ilivemylife.io","name":"Ilya Sorokin","email":"info@ilivemylife.io"},"license":"UNLICENSED","_id":"@ilivemylife/graph-sdk@1.0.8","maintainers":[{"name":"silar","email":"ilya.sorokin@gmail.com"}],"homepage":"https://ilivemylife.io","bin":{"ilml":"dist/cli.mjs","ilml-mcp":"dist/mcp-server.mjs"},"dist":{"shasum":"9d60a931f6767db69a8c41e89df895a24f80c0b3","tarball":"https://registry.npmjs.org/@ilivemylife/graph-sdk/-/graph-sdk-1.0.8.tgz","fileCount":23,"integrity":"sha512-Cr6RBZLWsiKJKgWBtuh9gL9um4MVRmZBmiX9ZRnXZVhBN5B0VHf8yZNBTmkEGgGoshWH0A2Hy4bh5JYPd2KS+Q==","signatures":[{"sig":"MEYCIQCaEe6ZSJ1PFCE+d+eTDCG+id5/Vs0j2ujBPx8Hea4xkwIhAJKLBLYteIZz3myPpfqjwowg7v7PxQOhmye9VBuaTYap","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":614925},"main":"./dist/client.cjs","type":"module","types":"./dist/client.d.ts","module":"./dist/client.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/client.d.ts","import":"./dist/client.mjs","require":"./dist/client.cjs"},"./queries":{"types":"./dist/queries.d.ts","import":"./dist/queries.mjs","require":"./dist/queries.cjs"}},"gitHead":"3d8c8fb430f1533b17d5fbd46372b43d50ee5761","scripts":{"build":"tsup","release:major":"npm version major && npm publish --access public","release:minor":"npm version minor && npm publish --access public","release:patch":"npm version patch && npm publish --access public","prepublishOnly":"npm run build"},"_npmUser":{"name":"silar","email":"ilya.sorokin@gmail.com"},"_npmVersion":"10.7.0","description":"SDK and CLI for iLiveMyLife Knowledge Graph","directories":{},"sideEffects":false,"_nodeVersion":"18.20.3","dependencies":{"ws":"^8.18.0","graphql":"^16.8.0","graphql-ws":"^5.14.0","cross-fetch":"^4.0.0","@apollo/client":"^3.8.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","@types/ws":"^8.18.1","typescript":"^5.3.0"},"_npmOperationalInternal":{"tmp":"tmp/graph-sdk_1.0.8_1770358168671_0.9206954801881782","host":"s3://npm-registry-packages-npm-production"}},"1.0.9":{"name":"@ilivemylife/graph-sdk","version":"1.0.9","keywords":["ilivemylife","ilml","knowledge-graph","pkm","graphql","sdk","cli","ai","lifebot"],"author":{"url":"https://ilivemylife.io","name":"Ilya Sorokin","email":"info@ilivemylife.io"},"license":"UNLICENSED","_id":"@ilivemylife/graph-sdk@1.0.9","maintainers":[{"name":"silar","email":"ilya.sorokin@gmail.com"}],"homepage":"https://ilivemylife.io","bin":{"ilml":"dist/cli.mjs","ilml-mcp":"dist/mcp-server.mjs"},"dist":{"shasum":"adcd62b0d3d4dd26bb85d42fa6a74cadfaa53048","tarball":"https://registry.npmjs.org/@ilivemylife/graph-sdk/-/graph-sdk-1.0.9.tgz","fileCount":23,"integrity":"sha512-mbCA6xdX/nzGHLg2+DakAY5Xlx/LUIGDO6Su4g5TT2VQeZQGcfiADz7KnOhJ/9W2AgfqI7diFAzD+p80t8md4Q==","signatures":[{"sig":"MEUCIQCw2QQ/B5NgN7kLTbXR9l2cvmOzDKmv+gE6lmwGwFLADgIgPiIXrY6Ly1722KuARvoAxkxrUX97oYGsbS1BJTIvdPE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":645295},"main":"./dist/client.cjs","type":"module","types":"./dist/client.d.ts","module":"./dist/client.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/client.d.ts","import":"./dist/client.mjs","require":"./dist/client.cjs"},"./queries":{"types":"./dist/queries.d.ts","import":"./dist/queries.mjs","require":"./dist/queries.cjs"}},"gitHead":"d648740b8858e2d5bfdcb8b1a2bac538c4a17b25","scripts":{"build":"tsup","release:major":"npm version major && npm publish --access public","release:minor":"npm version minor && npm publish --access public","release:patch":"npm version patch && npm publish --access public","prepublishOnly":"npm run build"},"_npmUser":{"name":"silar","email":"ilya.sorokin@gmail.com"},"_npmVersion":"10.7.0","description":"SDK and CLI for iLiveMyLife Knowledge Graph","directories":{},"sideEffects":false,"_nodeVersion":"18.20.3","dependencies":{"ws":"^8.18.0","graphql":"^16.8.0","graphql-ws":"^5.14.0","cross-fetch":"^4.0.0","@apollo/client":"^3.8.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","@types/ws":"^8.18.1","typescript":"^5.3.0"},"_npmOperationalInternal":{"tmp":"tmp/graph-sdk_1.0.9_1770363040812_0.5153868955388636","host":"s3://npm-registry-packages-npm-production"}},"1.0.10":{"name":"@ilivemylife/graph-sdk","version":"1.0.10","keywords":["ilivemylife","ilml","knowledge-graph","pkm","graphql","sdk","cli","ai","lifebot"],"author":{"url":"https://ilivemylife.io","name":"Ilya Sorokin","email":"info@ilivemylife.io"},"license":"UNLICENSED","_id":"@ilivemylife/graph-sdk@1.0.10","maintainers":[{"name":"silar","email":"ilya.sorokin@gmail.com"}],"homepage":"https://ilivemylife.io","bin":{"ilml":"dist/cli.mjs","ilml-mcp":"dist/mcp-server.mjs"},"dist":{"shasum":"1b71604e59502d1ca93c696dc7ece64667925322","tarball":"https://registry.npmjs.org/@ilivemylife/graph-sdk/-/graph-sdk-1.0.10.tgz","fileCount":23,"integrity":"sha512-uev4zaO4nyuiTK8EK1BJG3mhND1O0clyOfdxHfoyPybXlEuuOwMkOHcz2w/XfmPhFqUfifOO6zVmVHw0LlTVmg==","signatures":[{"sig":"MEUCIQCorMzzppdl3gN6zZRnZzdbcvhCc4Q8zEcPtZHQN4U4hgIgGO5kBofHTFmrHmDVSJM9lZKUnPCmnN3MVJjRMFINbCU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":683881},"main":"./dist/client.cjs","type":"module","types":"./dist/client.d.ts","module":"./dist/client.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/client.d.ts","import":"./dist/client.mjs","require":"./dist/client.cjs"},"./queries":{"types":"./dist/queries.d.ts","import":"./dist/queries.mjs","require":"./dist/queries.cjs"}},"gitHead":"7247fe00a97c19cae6703b79fffb779867093374","scripts":{"build":"tsup","release:major":"npm version major && npm publish --access public","release:minor":"npm version minor && npm publish --access public","release:patch":"npm version patch && npm publish --access public","prepublishOnly":"npm run build"},"_npmUser":{"name":"silar","email":"ilya.sorokin@gmail.com"},"_npmVersion":"10.7.0","description":"SDK and CLI for iLiveMyLife Knowledge Graph","directories":{},"sideEffects":false,"_nodeVersion":"18.20.3","dependencies":{"ws":"^8.18.0","graphql":"^16.8.0","graphql-ws":"^5.14.0","cross-fetch":"^4.0.0","@apollo/client":"^3.8.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","@types/ws":"^8.18.1","typescript":"^5.3.0"},"_npmOperationalInternal":{"tmp":"tmp/graph-sdk_1.0.10_1770712289940_0.030039756712005206","host":"s3://npm-registry-packages-npm-production"}},"1.0.11":{"name":"@ilivemylife/graph-sdk","version":"1.0.11","keywords":["ilivemylife","ilml","knowledge-graph","pkm","graphql","sdk","cli","ai","lifebot"],"author":{"url":"https://ilivemylife.io","name":"Ilya Sorokin","email":"info@ilivemylife.io"},"license":"UNLICENSED","_id":"@ilivemylife/graph-sdk@1.0.11","maintainers":[{"name":"silar","email":"ilya.sorokin@gmail.com"}],"homepage":"https://ilivemylife.io","bin":{"ilml":"dist/cli.mjs","ilml-mcp":"dist/mcp-server.mjs"},"dist":{"shasum":"ab4af490b6d97e8d5ad1f370c203e3996969f7b3","tarball":"https://registry.npmjs.org/@ilivemylife/graph-sdk/-/graph-sdk-1.0.11.tgz","fileCount":23,"integrity":"sha512-anQJDZ0MGC1dCB+1gkMAVRnIUHqP84aN7Iik8lwCD+jxXQeQlIgH+UjG3xqqMO5P61t/RK3cQUM6ysVuidMl6g==","signatures":[{"sig":"MEQCIEplkU8ivnyRHIV9iK+JfZLNLX5ZhKMAO8YqCUwTdslpAiB9M56tgKC8cMurwIX66r91XRwmBzGts9FUD1w6TPIl9w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":698339},"main":"./dist/client.cjs","type":"module","types":"./dist/client.d.ts","module":"./dist/client.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/client.d.ts","import":"./dist/client.mjs","require":"./dist/client.cjs"},"./queries":{"types":"./dist/queries.d.ts","import":"./dist/queries.mjs","require":"./dist/queries.cjs"}},"gitHead":"38a98d94160bd719d2be955fb026371ac2bfcd8a","scripts":{"build":"tsup","release:major":"npm version major && npm publish --access public","release:minor":"npm version minor && npm publish --access public","release:patch":"npm version patch && npm publish --access public","prepublishOnly":"npm run build"},"_npmUser":{"name":"silar","email":"ilya.sorokin@gmail.com"},"_npmVersion":"10.7.0","description":"SDK and CLI for iLiveMyLife Knowledge Graph","directories":{},"sideEffects":false,"_nodeVersion":"18.20.3","dependencies":{"ws":"^8.18.0","graphql":"^16.8.0","graphql-ws":"^5.14.0","cross-fetch":"^4.0.0","@apollo/client":"^3.8.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","@types/ws":"^8.18.1","typescript":"^5.3.0"},"_npmOperationalInternal":{"tmp":"tmp/graph-sdk_1.0.11_1770808622934_0.8283528143791004","host":"s3://npm-registry-packages-npm-production"}},"1.0.12":{"name":"@ilivemylife/graph-sdk","version":"1.0.12","keywords":["ilivemylife","ilml","knowledge-graph","pkm","graphql","sdk","cli","ai","lifebot"],"author":{"url":"https://ilivemylife.io","name":"Ilya Sorokin","email":"info@ilivemylife.io"},"license":"UNLICENSED","_id":"@ilivemylife/graph-sdk@1.0.12","maintainers":[{"name":"silar","email":"ilya.sorokin@gmail.com"}],"homepage":"https://ilivemylife.io","bin":{"ilml":"dist/cli.mjs","ilml-mcp":"dist/mcp-server.mjs"},"dist":{"shasum":"5e6dd6a3c841979f21a9be9951605ff1311469f0","tarball":"https://registry.npmjs.org/@ilivemylife/graph-sdk/-/graph-sdk-1.0.12.tgz","fileCount":23,"integrity":"sha512-KcuX279tQw/YXuLq7PyEAUuSDmepCqmtJvL1O0eWpwbHpGpmOrF6K3pE3SR8clIMGzfZL9xGhmwHuaejlIBRTA==","signatures":[{"sig":"MEUCIGy5Vw2VzKLzBpY7SoMjsws17jqQPf/vCbegPvrCm7FnAiEA3urP76gH3v1sjCXKVZlGoBoI4XR3D5nwW2vvZJIaykQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":704452},"main":"./dist/client.cjs","type":"module","types":"./dist/client.d.ts","module":"./dist/client.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/client.d.ts","import":"./dist/client.mjs","require":"./dist/client.cjs"},"./queries":{"types":"./dist/queries.d.ts","import":"./dist/queries.mjs","require":"./dist/queries.cjs"}},"gitHead":"3d45f4b512cf30c20a942641feca8ad951d4f60d","scripts":{"build":"tsup","release:major":"npm version major && npm publish --access public","release:minor":"npm version minor && npm publish --access public","release:patch":"npm version patch && npm publish --access public","prepublishOnly":"npm run build"},"_npmUser":{"name":"silar","email":"ilya.sorokin@gmail.com"},"_npmVersion":"10.7.0","description":"SDK and CLI for iLiveMyLife Knowledge Graph","directories":{},"sideEffects":false,"_nodeVersion":"18.20.3","dependencies":{"ws":"^8.18.0","graphql":"^16.8.0","graphql-ws":"^5.14.0","cross-fetch":"^4.0.0","@apollo/client":"^3.8.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","@types/ws":"^8.18.1","typescript":"^5.3.0"},"_npmOperationalInternal":{"tmp":"tmp/graph-sdk_1.0.12_1773057156385_0.4263130539783031","host":"s3://npm-registry-packages-npm-production"}},"1.0.13":{"name":"@ilivemylife/graph-sdk","version":"1.0.13","keywords":["ilivemylife","ilml","knowledge-graph","pkm","graphql","sdk","cli","ai","lifebot"],"author":{"url":"https://ilivemylife.io","name":"Ilya Sorokin","email":"info@ilivemylife.io"},"license":"UNLICENSED","_id":"@ilivemylife/graph-sdk@1.0.13","maintainers":[{"name":"silar","email":"ilya.sorokin@gmail.com"}],"homepage":"https://ilivemylife.io","bin":{"ilml":"dist/cli.mjs","ilml-mcp":"dist/mcp-server.mjs"},"dist":{"shasum":"292fefb846c4398ab4b1421f2fafa9f72f1093dd","tarball":"https://registry.npmjs.org/@ilivemylife/graph-sdk/-/graph-sdk-1.0.13.tgz","fileCount":25,"integrity":"sha512-zfPgtrNEvLAVxMGCt6YEVUIwJ50vt54FzbHPnAP9FcZsJ++f2h4hl2UyPN4rcV9RIIJQZK/rZcWWv/5CL01kBg==","signatures":[{"sig":"MEUCIDz3jwFvqDsI+VKc+emgOQk+aE8aZ3fchM6vwYq6j6ERAiEAzJZ63sMV2yspTAG17bjPzxFvd9llWLAgsDnH9TEbQXI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":796660},"main":"./dist/client.cjs","type":"module","types":"./dist/client.d.ts","module":"./dist/client.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/client.d.ts","import":"./dist/client.mjs","require":"./dist/client.cjs"},"./queries":{"types":"./dist/queries.d.ts","import":"./dist/queries.mjs","require":"./dist/queries.cjs"}},"gitHead":"4c7638bc039c154c1afe2f03b81e0f1aca916127","scripts":{"build":"tsup","release:major":"npm version major && npm publish --access public","release:minor":"npm version minor && npm publish --access public","release:patch":"npm version patch && npm publish --access public","prepublishOnly":"npm run build"},"_npmUser":{"name":"silar","email":"ilya.sorokin@gmail.com"},"_npmVersion":"10.7.0","description":"SDK and CLI for iLiveMyLife Knowledge Graph","directories":{},"sideEffects":false,"_nodeVersion":"18.20.3","dependencies":{"ws":"^8.18.0","graphql":"^16.8.0","graphql-ws":"^5.14.0","cross-fetch":"^4.0.0","@apollo/client":"^3.8.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","@types/ws":"^8.18.1","typescript":"^5.3.0"},"_npmOperationalInternal":{"tmp":"tmp/graph-sdk_1.0.13_1775474926449_0.013441597718580889","host":"s3://npm-registry-packages-npm-production"}},"1.0.14":{"name":"@ilivemylife/graph-sdk","version":"1.0.14","keywords":["ilivemylife","ilml","knowledge-graph","pkm","graphql","sdk","cli","ai","lifebot"],"author":{"url":"https://ilivemylife.io","name":"Ilya Sorokin","email":"info@ilivemylife.io"},"license":"UNLICENSED","_id":"@ilivemylife/graph-sdk@1.0.14","maintainers":[{"name":"silar","email":"ilya.sorokin@gmail.com"}],"homepage":"https://ilivemylife.io","bin":{"ilml":"dist/cli.mjs","ilml-mcp":"dist/mcp-server.mjs"},"dist":{"shasum":"ee7ee6cfd5a803ac425fdd9ef2fa079716ff0d77","tarball":"https://registry.npmjs.org/@ilivemylife/graph-sdk/-/graph-sdk-1.0.14.tgz","fileCount":26,"integrity":"sha512-sBTWzfoHGY4DabxO9QPpSoCnnvZ2rbfZt8Kq1xLpiDf31rwg++k1UBPd1eS1esWkHomOYqs370qwgF31G5qRUg==","signatures":[{"sig":"MEUCIHOJEWjxO1cz/l5jyYZmAo5rdPr8OPubnmRUguXt1TxrAiEAn2a92JFJr+hEPx1tk0e6LIP6qCZh2yg5TOnK4Vuwl0s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":818235},"main":"./dist/client.cjs","type":"module","types":"./dist/client.d.ts","module":"./dist/client.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/client.d.ts","import":"./dist/client.mjs","require":"./dist/client.cjs"},"./queries":{"types":"./dist/queries.d.ts","import":"./dist/queries.mjs","require":"./dist/queries.cjs"}},"gitHead":"63937a7a575dd26fbeca9561bb00e66e5138c65e","scripts":{"build":"tsup","release:major":"npm version major && npm publish --access public","release:minor":"npm version minor && npm publish --access public","release:patch":"npm version patch && npm publish --access public","prepublishOnly":"npm run build"},"_npmUser":{"name":"silar","email":"ilya.sorokin@gmail.com"},"_npmVersion":"10.7.0","description":"SDK and CLI for iLiveMyLife Knowledge Graph","directories":{},"sideEffects":false,"_nodeVersion":"18.20.3","dependencies":{"ws":"^8.18.0","graphql":"^16.8.0","graphql-ws":"^5.14.0","cross-fetch":"^4.0.0","@apollo/client":"^3.8.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","@types/ws":"^8.18.1","typescript":"^5.3.0"},"_npmOperationalInternal":{"tmp":"tmp/graph-sdk_1.0.14_1775837184958_0.7247263216985649","host":"s3://npm-registry-packages-npm-production"}},"1.0.15":{"name":"@ilivemylife/graph-sdk","version":"1.0.15","keywords":["ilivemylife","ilml","knowledge-graph","pkm","graphql","sdk","cli","ai","lifebot"],"author":{"url":"https://ilivemylife.io","name":"Ilya Sorokin","email":"info@ilivemylife.io"},"license":"UNLICENSED","_id":"@ilivemylife/graph-sdk@1.0.15","maintainers":[{"name":"silar","email":"ilya.sorokin@gmail.com"}],"homepage":"https://ilivemylife.io","bin":{"ilml":"dist/cli.mjs","ilml-mcp":"dist/mcp-server.mjs"},"dist":{"shasum":"79dc5408fe99c78e273674c1b79e42bfc9e42a25","tarball":"https://registry.npmjs.org/@ilivemylife/graph-sdk/-/graph-sdk-1.0.15.tgz","fileCount":22,"integrity":"sha512-60Wtggy4AL/7MXM6saOMebM/qfoSzeTB+gM3UoQRXBj5y4LEw+jQ42e0WpjFH7Vt3CQt65IQ3IfZxwiJuyoI+Q==","signatures":[{"sig":"MEQCICICu+sTVwTxZyzbxs6ypQCpYYm5tNV3Y6pCJBahekFSAiA1Z/+KUCERMcMMhQXHDNx0c6r+ubAF2N/GoVqENnvpQg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":411342},"main":"./dist/client.cjs","type":"module","types":"./dist/client.d.ts","module":"./dist/client.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/client.d.ts","import":"./dist/client.mjs","require":"./dist/client.cjs"},"./queries":{"types":"./dist/queries.d.ts","import":"./dist/queries.mjs","require":"./dist/queries.cjs"}},"gitHead":"4be68c8315a6c594ec3c2d36a54b86482ba748be","scripts":{"build":"tsup","release:major":"npm version major && npm publish --access public","release:minor":"npm version minor && npm publish --access public","release:patch":"npm version patch && npm publish --access public","prepublishOnly":"npm run build"},"_npmUser":{"name":"silar","email":"ilya.sorokin@gmail.com"},"_npmVersion":"10.7.0","description":"SDK and CLI for iLiveMyLife Knowledge Graph","directories":{},"sideEffects":false,"_nodeVersion":"18.20.3","dependencies":{"ws":"^8.18.0","graphql":"^16.8.0","graphql-ws":"^5.14.0","cross-fetch":"^4.0.0","@apollo/client":"^3.8.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","@types/ws":"^8.18.1","typescript":"^5.3.0"},"_npmOperationalInternal":{"tmp":"tmp/graph-sdk_1.0.15_1776170748130_0.44664780016690653","host":"s3://npm-registry-packages-npm-production"}},"1.0.16":{"name":"@ilivemylife/graph-sdk","version":"1.0.16","keywords":["ilivemylife","ilml","knowledge-graph","pkm","graphql","sdk","cli","ai","lifebot"],"author":{"url":"https://ilivemylife.io","name":"Ilya Sorokin","email":"info@ilivemylife.io"},"license":"UNLICENSED","_id":"@ilivemylife/graph-sdk@1.0.16","maintainers":[{"name":"silar","email":"ilya.sorokin@gmail.com"}],"homepage":"https://ilivemylife.io","bin":{"ilml":"dist/cli.mjs","ilml-mcp":"dist/mcp-server.mjs"},"dist":{"shasum":"4cbacb5623bf5359dacd64f84ca38c38657a21cb","tarball":"https://registry.npmjs.org/@ilivemylife/graph-sdk/-/graph-sdk-1.0.16.tgz","fileCount":22,"integrity":"sha512-XHhkd4KLUUQrT8Y/rSfRGAozVQ9w8ZIo+wjh+0lLSY84qyS47bz5azxrcBF0phV3fWo15GpiG7MK1TCK39cQIg==","signatures":[{"sig":"MEUCICnPSLHDjeP/BP/e2QVoGPB60x4wKanhMjW4mQGpibICAiEA9O96bOj+qmQRUno1jRIcDEzMuKyTULM+dS+H41xfFIA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":414195},"main":"./dist/client.cjs","type":"module","types":"./dist/client.d.ts","module":"./dist/client.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/client.d.ts","import":"./dist/client.mjs","require":"./dist/client.cjs"},"./queries":{"types":"./dist/queries.d.ts","import":"./dist/queries.mjs","require":"./dist/queries.cjs"}},"gitHead":"dd3a75dd01d8e84f68db9dfe9dda5ff6a57d8e16","scripts":{"build":"tsup","release:major":"npm version major && npm publish --access public","release:minor":"npm version minor && npm publish --access public","release:patch":"npm version patch && npm publish --access public","prepublishOnly":"npm run build"},"_npmUser":{"name":"silar","email":"ilya.sorokin@gmail.com"},"_npmVersion":"10.7.0","description":"SDK and CLI for iLiveMyLife Knowledge Graph","directories":{},"sideEffects":false,"_nodeVersion":"18.20.3","dependencies":{"ws":"^8.18.0","graphql":"^16.8.0","graphql-ws":"^5.14.0","cross-fetch":"^4.0.0","@apollo/client":"^3.8.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","@types/ws":"^8.18.1","typescript":"^5.3.0"},"_npmOperationalInternal":{"tmp":"tmp/graph-sdk_1.0.16_1777220451746_0.16426668849049264","host":"s3://npm-registry-packages-npm-production"}},"1.0.17":{"name":"@ilivemylife/graph-sdk","version":"1.0.17","keywords":["ilivemylife","ilml","knowledge-graph","pkm","graphql","sdk","cli","ai","lifebot","plugin-system","mcp"],"author":{"url":"https://ilivemylife.io","name":"Ilya Sorokin","email":"info@ilivemylife.io"},"license":"UNLICENSED","_id":"@ilivemylife/graph-sdk@1.0.17","maintainers":[{"name":"silar","email":"ilya.sorokin@gmail.com"}],"homepage":"https://ilivemylife.io","bin":{"ilml":"dist/cli.mjs","ilml-mcp":"dist/mcp-server.mjs"},"dist":{"shasum":"e6dba4b72d732329ab948f38610728a3162d9bab","tarball":"https://registry.npmjs.org/@ilivemylife/graph-sdk/-/graph-sdk-1.0.17.tgz","fileCount":23,"integrity":"sha512-KSajEKEGlxeZcPD5WvnsaaIyYzV/todIxiRT8Cuu8UqQCBMGoqNJPek6jmCKIMh2tdF0Ty2JnvcGv3+YcGmihg==","signatures":[{"sig":"MEUCIGBbEzmZ3COutLkFO6cK/Be66L/Vea6k0a+fPgCp9fynAiEAh7LxIhUQlQYxoo2cgzUbFaE4PH9tyYvVRUkT6KrQFCc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":473605},"main":"./dist/client.cjs","type":"module","types":"./dist/client.d.ts","module":"./dist/client.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/client.d.ts","import":"./dist/client.mjs","require":"./dist/client.cjs"},"./queries":{"types":"./dist/queries.d.ts","import":"./dist/queries.mjs","require":"./dist/queries.cjs"}},"gitHead":"2edebec7577d470a548371da27d9f750c4edbfaf","scripts":{"build":"tsup","release:major":"npm version major && npm publish --access public","release:minor":"npm version minor && npm publish --access public","release:patch":"npm version patch && npm publish --access public","prepublishOnly":"npm run build"},"_npmUser":{"name":"silar","email":"ilya.sorokin@gmail.com"},"_npmVersion":"10.7.0","description":"SDK and CLI for iLiveMyLife Knowledge Graph","directories":{},"sideEffects":false,"_nodeVersion":"18.20.3","dependencies":{"ws":"^8.18.0","graphql":"^16.8.0","graphql-ws":"^5.14.0","cross-fetch":"^4.0.0","@apollo/client":"^3.8.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","@types/ws":"^8.18.1","typescript":"^5.3.0"},"_npmOperationalInternal":{"tmp":"tmp/graph-sdk_1.0.17_1777545488891_0.1484266656756299","host":"s3://npm-registry-packages-npm-production"}},"1.0.18":{"name":"@ilivemylife/graph-sdk","version":"1.0.18","keywords":["ilivemylife","ilml","knowledge-graph","pkm","graphql","sdk","cli","ai","lifebot","plugin-system","mcp"],"author":{"url":"https://ilivemylife.io","name":"Ilya Sorokin","email":"info@ilivemylife.io"},"license":"UNLICENSED","_id":"@ilivemylife/graph-sdk@1.0.18","maintainers":[{"name":"silar","email":"ilya.sorokin@gmail.com"}],"homepage":"https://ilivemylife.io","bin":{"ilml":"dist/cli.mjs","ilml-mcp":"dist/mcp-server.mjs"},"dist":{"shasum":"259cdcb02c7eccbd39784e5632e5618c2f828129","tarball":"https://registry.npmjs.org/@ilivemylife/graph-sdk/-/graph-sdk-1.0.18.tgz","fileCount":23,"integrity":"sha512-sN+ah7sGNhPIDy2eCbNuAMgCCtLnU8G6u2kmGZKQFFhTOJqMXCzzGRxvH3F1Wbp8y9RjEf0CZodmYB0jTFfoOw==","signatures":[{"sig":"MEUCIGjp5N+LP8zICYJtoGyg/1G5tETt4brFDVIO1Yt04SZAAiEAuejvILC/VN4BX9rAE2YK2EEIFloCyFIeyVoqO3MLvM4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":473867},"main":"./dist/client.cjs","type":"module","types":"./dist/client.d.ts","module":"./dist/client.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/client.d.ts","import":"./dist/client.mjs","require":"./dist/client.cjs"},"./queries":{"types":"./dist/queries.d.ts","import":"./dist/queries.mjs","require":"./dist/queries.cjs"}},"gitHead":"80d46a1c93caaa8668543500eb737708296b0049","scripts":{"build":"tsup","release:major":"npm version major && npm publish --access public","release:minor":"npm version minor && npm publish --access public","release:patch":"npm version patch && npm publish --access public","prepublishOnly":"npm run build"},"_npmUser":{"name":"silar","email":"ilya.sorokin@gmail.com"},"_npmVersion":"10.7.0","description":"SDK and CLI for iLiveMyLife Knowledge Graph","directories":{},"sideEffects":false,"_nodeVersion":"18.20.3","dependencies":{"ws":"^8.18.0","graphql":"^16.8.0","graphql-ws":"^5.14.0","cross-fetch":"^4.0.0","@apollo/client":"^3.8.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","@types/ws":"^8.18.1","typescript":"^5.3.0"},"_npmOperationalInternal":{"tmp":"tmp/graph-sdk_1.0.18_1777569873560_0.07653694999338234","host":"s3://npm-registry-packages-npm-production"}},"1.0.19":{"name":"@ilivemylife/graph-sdk","version":"1.0.19","keywords":["ilivemylife","ilml","knowledge-graph","pkm","graphql","sdk","cli","ai","lifebot","plugin-system","mcp"],"author":{"url":"https://ilivemylife.io","name":"Ilya Sorokin","email":"info@ilivemylife.io"},"license":"UNLICENSED","_id":"@ilivemylife/graph-sdk@1.0.19","maintainers":[{"name":"silar","email":"ilya.sorokin@gmail.com"}],"homepage":"https://ilivemylife.io","bin":{"ilml":"dist/cli.mjs","ilml-mcp":"dist/mcp-server.mjs"},"dist":{"shasum":"ea88b5921de7d323acc40b57a2a1d09618d673c3","tarball":"https://registry.npmjs.org/@ilivemylife/graph-sdk/-/graph-sdk-1.0.19.tgz","fileCount":24,"integrity":"sha512-tPS4MJwBL/a0f33EbR4ONAhVn/hWAS6L3CeLtXwk1xTmUg2Q/NxKmFzTHLMA0E0OduEqiPHFn4T2So14bfLdAw==","signatures":[{"sig":"MEYCIQDZ9AWgrB7PoeBHUfSDWLbr1XcSw7s9tD8vOlN8Hw6KZwIhAOdjcVkmjePcHIvT6N2+A/AeYbCK53D4yMchnLncuZCl","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":533461},"main":"./dist/client.cjs","type":"module","types":"./dist/client.d.ts","module":"./dist/client.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/client.d.ts","import":"./dist/client.mjs","require":"./dist/client.cjs"},"./queries":{"types":"./dist/queries.d.ts","import":"./dist/queries.mjs","require":"./dist/queries.cjs"}},"gitHead":"cf49e5c80642074f84e8240a775805fe948f0cb5","scripts":{"build":"tsup","release:major":"npm version major && npm publish --access public","release:minor":"npm version minor && npm publish --access public","release:patch":"npm version patch && npm publish --access public","prepublishOnly":"npm run build"},"_npmUser":{"name":"silar","email":"ilya.sorokin@gmail.com"},"_npmVersion":"10.7.0","description":"SDK and CLI for iLiveMyLife Knowledge Graph","directories":{},"sideEffects":false,"_nodeVersion":"18.20.3","dependencies":{"ws":"^8.18.0","graphql":"^16.8.0","graphql-ws":"^5.14.0","cross-fetch":"^4.0.0","@apollo/client":"^3.8.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","@types/ws":"^8.18.1","typescript":"^5.3.0"},"_npmOperationalInternal":{"tmp":"tmp/graph-sdk_1.0.19_1777718893090_0.30105876382225993","host":"s3://npm-registry-packages-npm-production"}},"1.0.21":{"name":"@ilivemylife/graph-sdk","version":"1.0.21","keywords":["ilivemylife","ilml","knowledge-graph","pkm","graphql","sdk","cli","ai","lifebot","plugin-system","mcp"],"author":{"url":"https://ilivemylife.io","name":"Ilya Sorokin","email":"info@ilivemylife.io"},"license":"UNLICENSED","_id":"@ilivemylife/graph-sdk@1.0.21","maintainers":[{"name":"silar","email":"ilya.sorokin@gmail.com"}],"homepage":"https://ilivemylife.io","bin":{"ilml":"dist/cli.mjs","ilml-mcp":"dist/mcp-server.mjs"},"dist":{"shasum":"0cf359a5d15866d7f5474dd97f956feb53f4dc28","tarball":"https://registry.npmjs.org/@ilivemylife/graph-sdk/-/graph-sdk-1.0.21.tgz","fileCount":24,"integrity":"sha512-Aqw5tdsBsHXKbi2Xb3Sb5uUDZiVDZ64/N2O+HJkIuyVUSy1OtMp9UolCqeYUjXusAG37hN47KLB8Vq3/CrsdcQ==","signatures":[{"sig":"MEYCIQD8TOcQUt6gmzSx0+Qdo9JkPY+9f++gG5orUrGee1s8cAIhAL/yXkwpHmPsBt4Mob2l6GVADuQKJZSmDzzy+OCi/LST","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":533358},"main":"./dist/client.cjs","type":"module","types":"./dist/client.d.ts","module":"./dist/client.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/client.d.ts","import":"./dist/client.mjs","require":"./dist/client.cjs"},"./queries":{"types":"./dist/queries.d.ts","import":"./dist/queries.mjs","require":"./dist/queries.cjs"}},"gitHead":"cc62176236eafe12af06d3892ce8d70a406b48d6","scripts":{"build":"tsup","release:major":"npm version major && npm publish --access public","release:minor":"npm version minor && npm publish --access public","release:patch":"npm version patch && npm publish --access public","prepublishOnly":"npm run build"},"_npmUser":{"name":"silar","email":"ilya.sorokin@gmail.com"},"_npmVersion":"10.7.0","description":"SDK and CLI for iLiveMyLife Knowledge Graph","directories":{},"sideEffects":false,"_nodeVersion":"18.20.3","dependencies":{"ws":"^8.18.0","tar":"^7.5.13","graphql":"^16.8.0","graphql-ws":"^5.14.0","cross-fetch":"^4.0.0","@apollo/client":"^3.8.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","@types/ws":"^8.18.1","typescript":"^5.3.0"},"_npmOperationalInternal":{"tmp":"tmp/graph-sdk_1.0.21_1777793643624_0.003024598284486979","host":"s3://npm-registry-packages-npm-production"}},"1.0.22":{"name":"@ilivemylife/graph-sdk","version":"1.0.22","keywords":["ilivemylife","ilml","knowledge-graph","pkm","graphql","sdk","cli","ai","lifebot","plugin-system","mcp"],"author":{"url":"https://ilivemylife.io","name":"Ilya Sorokin","email":"info@ilivemylife.io"},"license":"UNLICENSED","_id":"@ilivemylife/graph-sdk@1.0.22","maintainers":[{"name":"silar","email":"ilya.sorokin@gmail.com"}],"homepage":"https://ilivemylife.io","bin":{"ilml":"dist/cli.mjs","ilml-mcp":"dist/mcp-server.mjs"},"dist":{"shasum":"23bee10f6903a1ed83c4bd27508182d6340a3f1f","tarball":"https://registry.npmjs.org/@ilivemylife/graph-sdk/-/graph-sdk-1.0.22.tgz","fileCount":24,"integrity":"sha512-vyzRagHh/Vrr2AmviqYItsCM5bwchtAtlZrBILN6Cg7fDji5ND3ZSZrXxUJck30MLcULTrzIq70ZOt2wNwCQNQ==","signatures":[{"sig":"MEUCIE8quaBWz0aPq1C+OW89d6FurHZxIXn5yNWm0n/K8MSSAiEA6JvtKYUE5/sSZqboWPq7WNycDmNSLtqv3i9gkWHLRNo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":533285},"main":"./dist/client.cjs","type":"module","types":"./dist/client.d.ts","module":"./dist/client.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/client.d.ts","import":"./dist/client.mjs","require":"./dist/client.cjs"},"./queries":{"types":"./dist/queries.d.ts","import":"./dist/queries.mjs","require":"./dist/queries.cjs"}},"gitHead":"0ed1589cbbfe0a2bfe568a2cb0cb56eaaa932948","scripts":{"build":"tsup","release:major":"npm version major && npm publish --access public","release:minor":"npm version minor && npm publish --access public","release:patch":"npm version patch && npm publish --access public","prepublishOnly":"npm run build"},"_npmUser":{"name":"silar","email":"ilya.sorokin@gmail.com"},"_npmVersion":"10.7.0","description":"SDK and CLI for iLiveMyLife Knowledge Graph","directories":{},"sideEffects":false,"_nodeVersion":"18.20.3","dependencies":{"ws":"^8.18.0","tar":"^7.5.13","graphql":"^16.8.0","graphql-ws":"^5.14.0","cross-fetch":"^4.0.0","@apollo/client":"^3.8.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","@types/ws":"^8.18.1","typescript":"^5.3.0"},"_npmOperationalInternal":{"tmp":"tmp/graph-sdk_1.0.22_1777798532170_0.5141914035971173","host":"s3://npm-registry-packages-npm-production"}},"1.0.23":{"name":"@ilivemylife/graph-sdk","version":"1.0.23","keywords":["ilivemylife","ilml","knowledge-graph","pkm","graphql","sdk","cli","ai","lifebot","plugin-system","mcp"],"author":{"url":"https://ilivemylife.io","name":"Ilya Sorokin","email":"info@ilivemylife.io"},"license":"UNLICENSED","_id":"@ilivemylife/graph-sdk@1.0.23","maintainers":[{"name":"silar","email":"ilya.sorokin@gmail.com"}],"homepage":"https://ilivemylife.io","bin":{"ilml":"dist/cli.mjs","ilml-mcp":"dist/mcp-server.mjs"},"dist":{"shasum":"d989221befbe47a45ae4e5326442b1384f62f277","tarball":"https://registry.npmjs.org/@ilivemylife/graph-sdk/-/graph-sdk-1.0.23.tgz","fileCount":24,"integrity":"sha512-vlr47m9iadW3L00jW2FW2Tn/qwagKxMN8cpXfLzJ6Y7xfv/tgR+Ke70rUtj6Iv/BDoUq7YQz6pMuGKFnxAOCmQ==","signatures":[{"sig":"MEQCICwIfaZAqbd9M8k2fCEGWxuikeliBzNspo9yvaQ0IjTOAiAxKuFksTxWMdTGEuKPhM8L9yR1aURh8yXF/jMtv3lmgA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":534199},"main":"./dist/client.cjs","type":"module","types":"./dist/client.d.ts","module":"./dist/client.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/client.d.ts","import":"./dist/client.mjs","require":"./dist/client.cjs"},"./queries":{"types":"./dist/queries.d.ts","import":"./dist/queries.mjs","require":"./dist/queries.cjs"}},"gitHead":"cbe29501458f9389534c01477e1c69dc4dd3cb88","scripts":{"build":"tsup","release:major":"npm version major && npm publish --access public","release:minor":"npm version minor && npm publish --access public","release:patch":"npm version patch && npm publish --access public","prepublishOnly":"npm run build"},"_npmUser":{"name":"silar","email":"ilya.sorokin@gmail.com"},"_npmVersion":"10.7.0","description":"SDK and CLI for iLiveMyLife Knowledge Graph","directories":{},"sideEffects":false,"_nodeVersion":"18.20.3","dependencies":{"ws":"^8.18.0","tar":"^7.5.13","graphql":"^16.8.0","graphql-ws":"^5.14.0","cross-fetch":"^4.0.0","@apollo/client":"^3.8.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","@types/ws":"^8.18.1","typescript":"^5.3.0"},"_npmOperationalInternal":{"tmp":"tmp/graph-sdk_1.0.23_1777810468040_0.271145158335113","host":"s3://npm-registry-packages-npm-production"}},"1.0.24":{"name":"@ilivemylife/graph-sdk","version":"1.0.24","keywords":["ilivemylife","ilml","knowledge-graph","pkm","graphql","sdk","cli","ai","lifebot","plugin-system","mcp"],"author":{"url":"https://ilivemylife.io","name":"Ilya Sorokin","email":"info@ilivemylife.io"},"license":"UNLICENSED","_id":"@ilivemylife/graph-sdk@1.0.24","maintainers":[{"name":"silar","email":"ilya.sorokin@gmail.com"}],"homepage":"https://ilivemylife.io","bin":{"ilml":"dist/cli.mjs","ilml-mcp":"dist/mcp-server.mjs"},"dist":{"shasum":"44c40de98f9c722fd0d4c4373bef049be013e305","tarball":"https://registry.npmjs.org/@ilivemylife/graph-sdk/-/graph-sdk-1.0.24.tgz","fileCount":24,"integrity":"sha512-z9P6xedtXIf0IlW53gRh0t4ZOh3/XARNDpAySJuHdKmp3fNmPl/xSF27T0vTvycax9qsGoNkLNoGxbQEgwHnYQ==","signatures":[{"sig":"MEUCIACwHygDs/meBKK9swYpDZSyBXJfMIr/4yqGBbZ0uI8kAiEA9uzyekYCzpyKZbhgTjEsorU3osLS6hZ1XNOmBe8Wbg0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":714508},"main":"./dist/client.cjs","type":"module","types":"./dist/client.d.ts","module":"./dist/client.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/client.d.ts","import":"./dist/client.mjs","require":"./dist/client.cjs"},"./queries":{"types":"./dist/queries.d.ts","import":"./dist/queries.mjs","require":"./dist/queries.cjs"}},"gitHead":"44fdde98a29e8db94675a93916a7b9986437ebda","scripts":{"build":"tsup","release:major":"npm version major && npm publish --access public","release:minor":"npm version minor && npm publish --access public","release:patch":"npm version patch && npm publish --access public","prepublishOnly":"npm run build"},"_npmUser":{"name":"silar","email":"ilya.sorokin@gmail.com"},"_npmVersion":"10.7.0","description":"SDK and CLI for iLiveMyLife Knowledge Graph","directories":{},"sideEffects":false,"_nodeVersion":"18.20.3","dependencies":{"ws":"^8.18.0","tar":"^7.5.13","graphql":"^16.8.0","graphql-ws":"^5.14.0","cross-fetch":"^4.0.0","@apollo/client":"^3.8.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","@types/ws":"^8.18.1","typescript":"^5.3.0"},"_npmOperationalInternal":{"tmp":"tmp/graph-sdk_1.0.24_1786011240137_0.48592156899421957","host":"s3://npm-registry-packages-npm-production"}},"1.0.25":{"name":"@ilivemylife/graph-sdk","version":"1.0.25","keywords":["ilivemylife","ilml","knowledge-graph","pkm","graphql","sdk","cli","ai","lifebot","plugin-system","mcp"],"author":{"url":"https://ilivemylife.io","name":"Ilya Sorokin","email":"info@ilivemylife.io"},"license":"UNLICENSED","_id":"@ilivemylife/graph-sdk@1.0.25","maintainers":[{"name":"silar","email":"ilya.sorokin@gmail.com"}],"homepage":"https://ilivemylife.io","bin":{"ilml":"dist/cli.mjs","ilml-mcp":"dist/mcp-server.mjs"},"dist":{"shasum":"f3eec480af747066915cb5f3f6d65768fcf87481","tarball":"https://registry.npmjs.org/@ilivemylife/graph-sdk/-/graph-sdk-1.0.25.tgz","fileCount":24,"integrity":"sha512-U8uChfYBDagzto2aZDyNPgaKK0icGoCElxGPEJRKUodWe4B6EQYRs98pqgKvzY8SkXsOUm+9rtj97m2GicqCbw==","signatures":[{"sig":"MEYCIQCLyixfJDV4eEbMBHguW3l+P5G3XhinzdZ2kFY3Fc/eXQIhANaOBPbqtkoeGCqG/mq0AK72VG9s4r2UE5XMk5FAHq4L","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":724599},"main":"./dist/client.cjs","type":"module","types":"./dist/client.d.ts","module":"./dist/client.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/client.d.ts","import":"./dist/client.mjs","require":"./dist/client.cjs"},"./queries":{"types":"./dist/queries.d.ts","import":"./dist/queries.mjs","require":"./dist/queries.cjs"}},"gitHead":"96379604c924c60d79da315c799494951ddce2e5","scripts":{"build":"tsup","release:major":"npm version major && npm publish --access public","release:minor":"npm version minor && npm publish --access public","release:patch":"npm version patch && npm publish --access public","prepublishOnly":"npm run build"},"_npmUser":{"name":"silar","email":"ilya.sorokin@gmail.com"},"_npmVersion":"10.7.0","description":"SDK and CLI for iLiveMyLife Knowledge Graph","directories":{},"sideEffects":false,"_nodeVersion":"18.20.3","dependencies":{"ws":"^8.18.0","tar":"^7.5.13","graphql":"^16.8.0","graphql-ws":"^5.14.0","cross-fetch":"^4.0.0","@apollo/client":"^3.8.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","@types/ws":"^8.18.1","typescript":"^5.3.0"},"_npmOperationalInternal":{"tmp":"tmp/graph-sdk_1.0.25_1786701494910_0.06635185640144292","host":"s3://npm-registry-packages-npm-production"}},"1.0.26":{"name":"@ilivemylife/graph-sdk","version":"1.0.26","keywords":["ilivemylife","ilml","knowledge-graph","pkm","graphql","sdk","cli","ai","lifebot","plugin-system","mcp"],"author":{"url":"https://ilivemylife.io","name":"Ilya Sorokin","email":"info@ilivemylife.io"},"license":"UNLICENSED","_id":"@ilivemylife/graph-sdk@1.0.26","maintainers":[{"name":"silar","email":"ilya.sorokin@gmail.com"}],"homepage":"https://ilivemylife.io","bin":{"ilml":"dist/cli.mjs","ilml-mcp":"dist/mcp-server.mjs"},"dist":{"shasum":"175aa5ad21c5f00397c4a439d7919a5049cca5c3","tarball":"https://registry.npmjs.org/@ilivemylife/graph-sdk/-/graph-sdk-1.0.26.tgz","fileCount":24,"integrity":"sha512-xiJiw8VRfGEKkqiFv2nd14nbnXRS/htFOZJFsL6fYSjHxY7jazZ9tXb3vzu1oTSXevfqaxzG19Cig7Vspr9YEQ==","signatures":[{"sig":"MEYCIQDxwNIbeTYSvmGNAyCSiuDnBhoYLoinlb0tNypvcgVi9gIhANtHPXaD7GZI1763iXaN4k18rr3qcP9mCGWzb6Ah6xSk","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":732151},"main":"./dist/client.cjs","type":"module","types":"./dist/client.d.ts","module":"./dist/client.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/client.d.ts","import":"./dist/client.mjs","require":"./dist/client.cjs"},"./queries":{"types":"./dist/queries.d.ts","import":"./dist/queries.mjs","require":"./dist/queries.cjs"}},"gitHead":"8a357355556320f12cb8376632cd83d439d638bf","scripts":{"build":"tsup","release:major":"npm version major && npm publish --access public","release:minor":"npm version minor && npm publish --access public","release:patch":"npm version patch && npm publish --access public","prepublishOnly":"npm run build"},"_npmUser":{"name":"silar","email":"ilya.sorokin@gmail.com"},"_npmVersion":"10.7.0","description":"SDK and CLI for iLiveMyLife Knowledge Graph","directories":{},"sideEffects":false,"_nodeVersion":"18.20.3","dependencies":{"ws":"^8.18.0","tar":"^7.5.13","graphql":"^16.8.0","graphql-ws":"^5.14.0","cross-fetch":"^4.0.0","@apollo/client":"^3.8.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","@types/ws":"^8.18.1","typescript":"^5.3.0"},"_npmOperationalInternal":{"tmp":"tmp/graph-sdk_1.0.26_1786973711851_0.6144929915810913","host":"s3://npm-registry-packages-npm-production"}},"1.0.27":{"name":"@ilivemylife/graph-sdk","version":"1.0.27","keywords":["ilivemylife","ilml","knowledge-graph","pkm","graphql","sdk","cli","ai","lifebot","plugin-system","mcp"],"author":{"url":"https://ilivemylife.io","name":"Ilya Sorokin","email":"info@ilivemylife.io"},"license":"UNLICENSED","_id":"@ilivemylife/graph-sdk@1.0.27","maintainers":[{"name":"silar","email":"ilya.sorokin@gmail.com"}],"homepage":"https://ilivemylife.io","bin":{"ilml":"dist/cli.mjs","ilml-mcp":"dist/mcp-server.mjs"},"dist":{"shasum":"7ca74eec30a6a0ce082d817e299c641361b0e9eb","tarball":"https://registry.npmjs.org/@ilivemylife/graph-sdk/-/graph-sdk-1.0.27.tgz","fileCount":24,"integrity":"sha512-YtP5gfpgKxApikWRfJaxrzEUPFDS4SGu9Xyzkoyio3ssSsBxHCxdQKCyDaXdb7Iyo1ZwwVPELUjJykkvnZXENw==","signatures":[{"sig":"MEYCIQDZD93HhIZJBr4U9yYhQ3nejHMVras27ibxa2M+XSLdoQIhAPeNpWrP9UMu68yBAaUBEmEVZfvgs4Kf5ofP82af60ke","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":760708},"main":"./dist/client.cjs","type":"module","types":"./dist/client.d.ts","module":"./dist/client.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/client.d.ts","import":"./dist/client.mjs","require":"./dist/client.cjs"},"./queries":{"types":"./dist/queries.d.ts","import":"./dist/queries.mjs","require":"./dist/queries.cjs"}},"gitHead":"5c75063959287eb009fa021a39c9d3882e8db0d7","scripts":{"build":"tsup","release:major":"npm version major && npm publish --access public","release:minor":"npm version minor && npm publish --access public","release:patch":"npm version patch && npm publish --access public","prepublishOnly":"npm run build"},"_npmUser":{"name":"silar","email":"ilya.sorokin@gmail.com"},"_npmVersion":"10.7.0","description":"SDK and CLI for iLiveMyLife Knowledge Graph","directories":{},"sideEffects":false,"_nodeVersion":"18.20.3","dependencies":{"ws":"^8.18.0","tar":"^7.5.13","graphql":"^16.8.0","graphql-ws":"^5.14.0","cross-fetch":"^4.0.0","@apollo/client":"^3.8.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","@types/ws":"^8.18.1","typescript":"^5.3.0"},"_npmOperationalInternal":{"tmp":"tmp/graph-sdk_1.0.27_1787572246038_0.33664247296228367","host":"s3://npm-registry-packages-npm-production"}},"1.0.28":{"name":"@ilivemylife/graph-sdk","version":"1.0.28","keywords":["ilivemylife","ilml","knowledge-graph","pkm","graphql","sdk","cli","ai","lifebot","plugin-system","mcp"],"author":{"url":"https://ilivemylife.io","name":"Ilya Sorokin","email":"info@ilivemylife.io"},"license":"UNLICENSED","_id":"@ilivemylife/graph-sdk@1.0.28","maintainers":[{"name":"silar","email":"ilya.sorokin@gmail.com"}],"homepage":"https://ilivemylife.io","bin":{"ilml":"dist/cli.mjs","ilml-mcp":"dist/mcp-server.mjs"},"dist":{"shasum":"702354c084c8c8aa75bbcdf6c3bd34238f701390","tarball":"https://registry.npmjs.org/@ilivemylife/graph-sdk/-/graph-sdk-1.0.28.tgz","fileCount":24,"integrity":"sha512-WESLM8ue2tg0xaRs0nJu3k0zs5zDAG2gB0G8Y5xWw+owStDIFIDEczRSQwOk7ApsJd9nHREhNkXJ7pgxM6Ohrg==","signatures":[{"sig":"MEYCIQCg4WEmzyFUit37NyS/3yCxmseq37Z1wjSBa2KUg+ydVgIhAIW6rI90Ew1rROclWL615qER/mSb3UGpxKqqJDppieMl","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDaFyUV4zhCS4p7RoEZIjjFPx5gbHRZcpufGavGE0yy1AIhAMLqZLNDCdtP+3jtX2z64p9+nY7AnbViL7LX3C+jko3P","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":767216},"main":"./dist/client.cjs","type":"module","types":"./dist/client.d.ts","module":"./dist/client.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/client.d.ts","import":"./dist/client.mjs","require":"./dist/client.cjs"},"./queries":{"types":"./dist/queries.d.ts","import":"./dist/queries.mjs","require":"./dist/queries.cjs"}},"gitHead":"fc7319d531e71ddf398909a56c9499f3d4250686","scripts":{"build":"tsup","release:major":"npm version major && npm publish --access public","release:minor":"npm version minor && npm publish --access public","release:patch":"npm version patch && npm publish --access public","prepublishOnly":"npm run build"},"_npmUser":{"name":"silar","email":"ilya.sorokin@gmail.com"},"_npmVersion":"10.7.0","description":"SDK and CLI for iLiveMyLife Knowledge Graph","directories":{},"sideEffects":false,"_nodeVersion":"18.20.3","dependencies":{"ws":"^8.18.0","tar":"^7.5.13","graphql":"^16.8.0","graphql-ws":"^5.14.0","cross-fetch":"^4.0.0","@apollo/client":"^3.8.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","@types/ws":"^8.18.1","typescript":"^5.3.0"},"_npmOperationalInternal":{"tmp":"tmp/graph-sdk_1.0.28_1788259171572_0.41229294401374816","host":"s3://npm-registry-packages-npm-production"}},"1.0.29":{"_id":"@ilivemylife/graph-sdk@1.0.29","bin":{"ilml":"dist/cli.mjs","ilml-mcp":"dist/mcp-server.mjs"},"dist":{"shasum":"c8452c57294ccb37234e7432b23702940869a64a","tarball":"https://registry.npmjs.org/@ilivemylife/graph-sdk/-/graph-sdk-1.0.29.tgz","fileCount":24,"integrity":"sha512-Qx5cLNZ/QkLP04bBybGL27M40LEjo+FtwE43P5awfoiBekLX1HNw847oNuZnCMq1hZAGQc0wH69YZrIIPq5ekA==","signatures":[{"sig":"MEUCIQDekiQtr1XpUNXxK5YPhk4QJkvhbjUu04vieSrgp24IWAIgYVPzF8CZi/fC367Xn2C5toytdi8w2cC5Tq1JTQDAMBg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIG7bqn9fLcFGBsjLxX+GlJ/ZHV1oN1VYBQRTaM+hT95fAiEAn1ucx0JtQ6n29obFTOcOzmR6ccoJdujA9t7zS902apI="}],"unpackedSize":771281},"main":"./dist/client.cjs","name":"@ilivemylife/graph-sdk","type":"module","types":"./dist/client.d.ts","author":{"url":"https://digitaltwins.team/in/ilya-sorokin","name":"Ilya Sorokin"},"module":"./dist/client.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/client.d.ts","import":"./dist/client.mjs","require":"./dist/client.cjs"},"./queries":{"types":"./dist/queries.d.ts","import":"./dist/queries.mjs","require":"./dist/queries.cjs"}},"gitHead":"9f81c975750572e4407acd17cb5abef6c0aae27c","license":"UNLICENSED","scripts":{"build":"tsup","release:major":"npm version major && npm publish --access public","release:minor":"npm version minor && npm publish --access public","release:patch":"npm version patch && npm publish --access public","prepublishOnly":"npm run build"},"version":"1.0.29","_npmUser":{"name":"silar","email":"ilya.sorokin@gmail.com"},"homepage":"https://ilivemylife.io","keywords":["ilivemylife","ilml","knowledge-graph","pkm","graphql","sdk","cli","ai","lifebot","plugin-system","mcp"],"_npmVersion":"10.7.0","description":"SDK and CLI for iLiveMyLife Knowledge Graph","directories":{},"maintainers":[{"name":"silar","email":"ilya.sorokin@gmail.com"}],"sideEffects":false,"_nodeVersion":"18.20.3","dependencies":{"ws":"^8.18.0","tar":"^7.5.13","graphql":"^16.8.0","graphql-ws":"^5.14.0","cross-fetch":"^4.0.0","@apollo/client":"^3.8.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","@types/ws":"^8.18.1","typescript":"^5.3.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/graph-sdk_1.0.29_1789483535854_0.8319690150766215"}}},"time":{"created":"2026-02-04T11:53:34.379Z","modified":"2026-09-15T14:45:36.164Z","1.0.0":"2026-02-04T11:53:34.659Z","1.0.1":"2026-02-05T10:20:20.745Z","1.0.2":"2026-02-05T13:36:47.243Z","1.0.3":"2026-02-05T14:14:10.760Z","1.0.4":"2026-02-05T14:24:16.707Z","1.0.5":"2026-02-05T14:52:23.057Z","1.0.6":"2026-02-05T15:04:42.752Z","1.0.7":"2026-02-06T03:58:28.039Z","1.0.8":"2026-02-06T06:09:28.841Z","1.0.9":"2026-02-06T07:30:41.005Z","1.0.10":"2026-02-10T08:31:30.098Z","1.0.11":"2026-02-11T11:17:03.107Z","1.0.12":"2026-03-09T11:52:36.548Z","1.0.13":"2026-04-06T11:28:46.613Z","1.0.14":"2026-04-10T16:06:25.210Z","1.0.15":"2026-04-14T12:45:48.269Z","1.0.16":"2026-04-26T16:20:51.884Z","1.0.17":"2026-04-30T10:38:09.057Z","1.0.18":"2026-04-30T17:24:33.733Z","1.0.19":"2026-05-02T10:48:13.251Z","1.0.21":"2026-05-03T07:34:03.826Z","1.0.22":"2026-05-03T08:55:32.344Z","1.0.23":"2026-05-03T12:14:28.213Z","1.0.24":"2026-08-06T10:14:00.349Z","1.0.25":"2026-08-14T09:58:15.086Z","1.0.26":"2026-08-17T13:35:12.002Z","1.0.27":"2026-08-24T11:50:46.203Z","1.0.28":"2026-09-01T10:39:31.700Z","1.0.29":"2026-09-15T14:45:35.966Z"},"author":{"url":"https://digitaltwins.team/in/ilya-sorokin","name":"Ilya Sorokin"},"license":"UNLICENSED","homepage":"https://ilivemylife.io","keywords":["ilivemylife","ilml","knowledge-graph","pkm","graphql","sdk","cli","ai","lifebot","plugin-system","mcp"],"description":"SDK and CLI for iLiveMyLife Knowledge Graph","maintainers":[{"name":"silar","email":"ilya.sorokin@gmail.com"}],"readme":"# @ilivemylife/graph-sdk\n\nSDK for [iLiveMyLife](https://iLiveMyLife.io) Knowledge Graph.\n\n## What is iLiveMyLife?\n\n**iLiveMyLife** is your personal **informational wallet** — a unified platform to organize everything in your life.\n\n### Key Features\n\n- **Knowledge Graph** — Structure your information as interconnected nodes, not just files and folders\n- **Cross-platform** — Apps for iOS, Android, Web, Desktop (macOS, Windows, Linux)\n- **Real-time Sync** — Changes sync instantly across all your devices\n- **Push Notifications** — Stay informed with smart notifications\n- **Team Collaboration** — Share nodes with team members, control privacy with tags (private/wallet/kyc/etc.)\n- **AI Assistants (Lifebot)** — Built-in AI that understands your knowledge graph context\n- **Offline Support** — Your data is synced on your device for offline access if not connected\n- **Powerful Tags System** — Customize node behavior with tags (privacy, AI assistance, colors, markers, and more)\n- **Markers (Status System)** — Track item status with customizable markers (like task states)\n- **Rich Content** — Support for text, images, files, links, checklists, due dates, and more\n- **Robust API & SDK** — Full-featured TypeScript SDK and GraphQL API for developers\n- **CLI Tool** — Command-line interface for scripting and automation\n- **CLI Plugins** — Extend `ilml` with domain-specific automation (LinkedIn, Indeed, custom workflows) via tarball-based plugin packages\n- **MCP Server** — Integrate with AI assistants like Claude, Cursor, Windsurf via Model Context Protocol\n\n### Use Cases\n\n- Personal knowledge management\n- Team project coordination\n- Task and goal tracking\n- Note-taking with AI assistance\n- Information organization for any domain\n\n**Get the app:** [https://iLiveMyLife.io](https://iLiveMyLife.io)\n\n---\n\n## Which path is yours?\n\nThe npm package covers three surfaces at once. Pick the one that matches your goal — each links to its own quick start below.\n\n### 🤖 Use your graph via AI assistant (most people) — 5 minutes\n\nAdd this package as an MCP server to Claude Code / Cursor / Windsurf / Claude Desktop. Ask your AI: *\"what's on my project X?\"* — *\"add a task under groceries\"* — *\"summarize my week\"*. Your graph becomes something you talk to.\n\n→ [Quick Start: AI Assistant](#3-add-to-ai-tools-optional)\n\n### 🏢 Evaluating for your team or organization\n\nSame package covers three roles across your org:\n- **People** get an AI-native graph (MCP path above)\n- **IT / ops** automate with the CLI (`ilml items <id>`, `ilml plugin install ...`)\n- **Developers** build on the TypeScript SDK (typed errors, subscriptions, file upload)\n\nCustom automation ships as [CLI plugins](./PLUGINS.md) — install from npm or a private tarball URL, so your internal team can distribute domain-specific commands org-wide.\n\n→ [Feature overview](#key-features) • [Corporate onboarding](https://iLiveMyLife.io)\n\n### 💻 Building on top of the graph\n\nFull TypeScript SDK: nodes, references, messages, subscriptions, file upload, Lifebot AI, privacy tags. GraphQL over HTTP + WebSocket subscriptions. Runnable examples in [`examples/`](./examples/).\n\n→ [Quick Start (code)](#quick-start) • [API Reference](#api-reference)\n\n---\n\n## Prerequisites\n\n- **Node.js 18+** — [download](https://nodejs.org/)\n- **iLiveMyLife account** — sign up at [iLiveMyLife.io](https://iLiveMyLife.io)\n\n## Getting Started\n\n### 1. Install\n\n```bash\nnpm install -g @ilivemylife/graph-sdk\n```\n\n### 2. Login\n\n```bash\nilml login\nilml doctor  # verify installation\n```\n\nToken saved to `~/.ilivemylife/config.json`. For per-project accounts, see [Token Priority](#token-priority).\n\n### 3. Add to AI tools (optional)\n\n```bash\n# Claude Code (global — available in all projects)\nclaude mcp add --scope user ilml -- npx -y @ilivemylife/graph-sdk\n\n# Claude Code (current project only)\nclaude mcp add ilml -- npx -y @ilivemylife/graph-sdk\n```\n\nFor Cursor, Windsurf, Claude Desktop — see [MCP Setup](#mcp-server-ai-assistant-integration).\n\n---\n\n## Authentication Details\n\n### Config File\n\nAfter `ilml login`, config is saved as JSON:\n\n```json\n// ~/.ilivemylife/config.json\n{\n  \"token\": \"your-access-token\",\n  \"user\": {\n    \"id\": \"user-id\",\n    \"email\": \"you@example.com\",\n    \"displayName\": \"Your Name\"\n  },\n  \"rootItemId\": \"your-root-node-id\"\n}\n```\n\n**What each field is authoritative for:**\n\n- `token` is the single credential. Every SDK/CLI/MCP request sends it in `access-token` header; the server resolves the caller's identity, `rootItemId`, and permissions **from the token on every request**. Keep the file readable only by you (Unix: `chmod 0600 ~/.ilivemylife/config.json`; Windows: default per-user ACL is already tight).\n- `user.*` and `rootItemId` in the config are a **display cache only** — populated at login so the CLI can show \"logged in as X\" and plugin code can call `getCachedUser()` without a network round-trip. They are **not** used for authorization or query routing. If the profile changes server-side (renamed, email updated, etc.) the cache goes stale; run `ilml me` or re-login to refresh. Plugin authors who need an authoritative user for a security-sensitive decision should call `await graph.me()` instead of `getCachedUser()`.\n- `user.id` and `rootItemId` are immutable per account, so those two never go stale in practice.\n\n### Token Priority\n\nThe SDK, CLI, and MCP server resolve tokens in this order (first found wins):\n\n| Priority | Source | How to set |\n|----------|--------|------------|\n| 1 | Local config | `ilml login --local` → `.ilivemylife/config.json` in project dir |\n| 2 | `.env` file | `ILML_TOKEN` entry in `.env` (project dir) |\n| 3 | Global config | `ilml login` → `~/.ilivemylife/config.json` |\n| 4 | Shell env var | `ILML_TOKEN` in the shell environment (e.g. `$env:ILML_TOKEN` / `export ILML_TOKEN=...`) |\n\nUse different accounts per project:\n```bash\n# Global account (default)\nilml login\n\n# Project-specific account (overrides global)\ncd my-project\nilml login --local\n```\n\n### Other Authentication Methods\n\n**Programmatic login (for bots and automations):**\n```javascript\nimport { login, createGraphClient } from '@ilivemylife/graph-sdk';\n\nconst { user, accessToken } = await login('user@example.com', 'password');\nconst graph = createGraphClient({ token: accessToken });\n```\n\n**Browser DevTools (manual):**\n1. Open https://app.ilivemylife.io and log in\n2. Open DevTools (F12) → Network tab\n3. Click any GraphQL request → Headers tab\n4. Copy `access-token` value\n\n### Overriding the web App URL (`ILML_APP_URL`)\n\nUser-facing / AI-facing messages (KYC prompts, MCP `nextStep` payloads, \"open it in\n&lt;App&gt;\" suggestions) link to `https://app.iLiveMyLife.io` by default. Staging or\nself-hosted deployments override with the `ILML_APP_URL` env var — no code change:\n\n```bash\nILML_APP_URL=https://staging-app.example.com ilml items <nodeId>\nILML_APP_URL=https://ilml.mycorp.internal node your-script.mjs\n```\n\nApplies to CLI, SDK, and MCP surfaces uniformly. Unset → default.\n\n## Finding Node IDs\n\nNode IDs are visible in the URL when viewing a node:\n```\nhttps://app.ilivemylife.io/item/00001191f13c5c81-ee4ae8284f820001\n                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n                                 This is the node ID\n```\n\nOr get your root node (\"My Life\") programmatically:\n```javascript\nconst me = await graph.me();\nconsole.log(me.rootItemId);  // Your root node ID\n```\n\n## Quick Start\n\n```javascript\nimport { createGraphClient } from '@ilivemylife/graph-sdk';\n\n// Create client (token from ilml login or env variable)\nconst graph = createGraphClient({\n    token: process.env.ILML_TOKEN\n});\n\n// Get your root node\nconst me = await graph.me();\nconst rootId = me.rootItemId;\n\n// See what's in your graph\nconst items = await graph.items(rootId);\nconsole.log('My Life:', items[0].title);\nconsole.log('Children:', items.slice(1).map(i => i.title));\n\n// Create a new node\nconst project = await graph.addItem(rootId, { title: 'My Project' });\n\n// Add children to it\nawait graph.addItem(project.id, { title: 'First Task' });\nawait graph.addItem(project.id, { title: 'Second Task' });\n\n// Ask AI about it (requires 'assist' tag on the node)\nconst reply = await graph.askLifebot(project.id, 'What tasks do I have?');\nconsole.log(reply.content);\n```\n\nFor a complete walkthrough, run: `node examples/getting-started.mjs`\n\n## Features\n\n- **TypeScript** — Full type definitions included\n- **Dual Format** — Works with both ESM (`import`) and CommonJS (`require`)\n- **Typed Errors** — every read AND write throws a typed class: `NodeAuthRequiredError`, `InvalidOperationError`, `InvalidRefError`, `NotFoundError`, `NodeKycRequiredError`, `HighPrivacyForbiddenError`, `GraphAuthError`, `GraphNetworkError`, `LifebotTimeoutError`, `LifebotRateLimitError`, `LifebotProcessingError`, `LifebotError`, `GraphError` (base). See [examples/README.md](./examples/README.md#error-handling-reference) for the full reference.\n- **Injectable Logger** — Pass your own logger or use silent mode\n- **Real-time Subscriptions** — Subscribe to message and item changes\n\n## Examples\n\nSee [examples/](./examples/) directory for complete usage examples:\n\n- [getting-started.mjs](./examples/getting-started.mjs) — **Start here!** Complete walkthrough (no NODE_ID needed)\n- [messenger-basics.mjs](./examples/messenger-basics.mjs) — Messages and Lifebot AI\n- [ask-lifebot.mjs](./examples/ask-lifebot.mjs) — AI interactions with error handling\n- [manage-items.mjs](./examples/manage-items.mjs) — Create, edit, reorder items\n- [subscriptions.mjs](./examples/subscriptions.mjs) — Real-time updates\n- [error-handling.mjs](./examples/error-handling.mjs) — Error handling patterns\n\n---\n\n## API Reference\n\n### Creating a Client\n\n```javascript\nimport { createGraphClient } from '@ilivemylife/graph-sdk';\n\nconst graph = createGraphClient({\n    token: 'your-access-token',      // Required\n    logger: console                   // Optional: enable logging\n});\n```\n\n### Queries (Read Operations)\n\n```javascript\n// Get node and its children\nconst items = await graph.items(nodeId);\n// items[0] = node itself, items[1...n] = children\n\n// Full-tree sync — returns EVERY node the caller can access under `rootId`\n// (recursive descent, server-side). Use for cache-and-sync consumers; server\n// filters wallet-class subtrees and refs-to-wallet from the response.\nconst everything = await graph.allItems(rootId);\n\n// Get messages\nconst messages = await graph.messages(nodeId, 20);\n\n// Get change history\nconst history = await graph.itemHistory(nodeId);\n\n// Get users with access\nconst users = await graph.itemUsers(nodeId);\n\n// Get child count\nconst { count } = await graph.subItemCount(nodeId);\n\n// Get node settings\nconst settings = await graph.itemSettings(nodeId);\n\n// Edit node settings (AI provider, notifications, etc)\nimport { AI_PROVIDER_TYPES, TOGGLE_VALUES } from '@ilivemylife/graph-sdk';\n\nawait graph.editItemSettings({\n    itemId: nodeId,\n    artificialIntelligenceProvider: AI_PROVIDER_TYPES.openai,  // switch AI to OpenAI\n    intelligence: TOGGLE_VALUES.enabled                         // use smart model\n});\n\n// Reset to app defaults (user's global settings)\nawait graph.editItemSettings({\n    itemId: nodeId,\n    artificialIntelligenceProvider: null,  // null = use user's app default\n    intelligence: null\n});\n\n// Search messages\nconst found = await graph.searchMessages(nodeId, 'keyword');\n\n// Recent visits — nodes the current user has opened recently\n// Returns array sorted newest-first. `count` is page size; pass last entry's\n// `createdAt` as `cursor` to fetch the next page.\nconst visits = await graph.lastVisits(20);\nconst moreVisits = await graph.lastVisits(20, visits[visits.length - 1].createdAt);\n\n// Recent notifications — in-app/push notifications for the current user\n// Same pagination contract as lastVisits.\nconst notifications = await graph.lastNotifications(20);\nconst moreNotifications = await graph.lastNotifications(20, notifications[notifications.length - 1].createdAt);\n```\n\n**Privacy signal — `Item.isHighPrivacy`**\n\nEvery `Item` (and `HistoryEntry`) carries a boolean `isHighPrivacy`. When `true`, render `Protected 🔒` in place of title / description / body unless you're deliberately revealing content. The CLI does this by default (see `--reveal`); App applies the same convention.\n\n### Mutations (Write Operations)\n\n```javascript\n// Create item (all fields optional, node added to end of list by default)\nconst item = await graph.addItem(parentId, {\n    title: 'New Item',\n    description: 'Description',\n    tags: ['tag1', 'tag2'],\n    dueDate: '1735689600000'  // timestamp string (ms)\n});\n\n// Create a reference (pointer node) to another node — the reference has its own title/description but resolves to the origin.\nconst reference = await graph.addItem(parentId, {\n    refId: originalNodeId,        // origin the reference points at\n    title: 'Custom Title',        // reference's own title (overrides origin's)\n    description: 'Custom Desc'    // reference's own description\n});\n\n// Edit item\nawait graph.editItem({\n    id: itemId,\n    title: 'Updated Title'\n});\n\n// Archive/unarchive\nawait graph.archiveItem(itemId);\nawait graph.unarchiveItem(itemId);\n\n// Move item to different parent\nawait graph.moveItem(itemId, fromParentId, toParentId);\n\n// Move item to different parent at specific position (1-based)\nawait graph.moveItemToPosition(itemId, fromParentId, toParentId, 3);\n\n// Reorder within parent (positions are 1-based)\nawait graph.reorderChild(parentId, fromPosition, toPosition);\n// Example: move child from position 4 to position 1\nawait graph.reorderChild(parentId, 4, 1);\n\n// Move specific node to position (positions are 1-based)\nawait graph.setPosition(nodeId, parentId, position);\n// Example: move node to position 2\nawait graph.setPosition(nodeId, parentId, 2);\n```\n\n### File Upload\n\n```javascript\n// Upload from file path (Node.js)\nconst file = await graph.uploadFile(nodeId, '/path/to/image.jpg');\nconsole.log(file.uri);       // CDN URL\nconsole.log(file.filename);  // 'image.jpg'\nconsole.log(file.mimetype);  // 'image/jpeg'\n\n// Upload from Buffer\nconst buffer = fs.readFileSync('/path/to/data.csv');\nconst file = await graph.uploadFile(nodeId, buffer, {\n    filename: 'data.csv',\n    mimetype: 'text/csv'\n});\n\n// Upload from Blob (browser)\nconst file = await graph.uploadFile(nodeId, blob, { filename: 'photo.png' });\n```\n\n### Messages\n\n```javascript\nimport { LIFEBOT_MESSAGE_TYPES, MESSAGE_TYPES } from '@ilivemylife/graph-sdk';\n\n// Log a message without any AI reply\nawait graph.addMessage(nodeId, 'Hello!', {\n    lifebot: LIFEBOT_MESSAGE_TYPES.off\n});\n\n// Force an AI reply (bypasses Lifebot's should-I-answer estimation)\nawait graph.addMessage(nodeId, 'Help me with this', {\n    lifebot: LIFEBOT_MESSAGE_TYPES.on\n});\n\n// Let Lifebot decide whether to answer — this is also the default when\n// `lifebot` is omitted entirely.\nawait graph.addMessage(nodeId, 'FYI, shipped the release', {\n    lifebot: LIFEBOT_MESSAGE_TYPES.auto\n});\n\n// Reply to a message\nawait graph.addMessage(nodeId, 'Thanks!', {\n    type: MESSAGE_TYPES.reply,\n    refId: originalMessageId\n});\n\n// Edit/archive messages\nawait graph.editMessage({ id: msgId, content: 'Updated' });\nawait graph.archiveMessage(msgId);\n```\n\n### Real-time Subscriptions\n\n```javascript\nimport {\n    MESSAGE_CHANGE_TYPES,\n    ITEM_CHANGE_TYPES,\n    NodeAuthRequiredError,\n    GraphAuthError,\n} from '@ilivemylife/graph-sdk';\n\n// Subscribe to messages. Third arg (onError) receives mapped SDK error classes for\n// mid-stream failures (access revoked, token expired, transport dropped). Without\n// onError, the SDK logs and swallows — pass it if you want to reconnect or notify.\nconst unsubscribeMessages = await graph.subscribeToMessages(\n    nodeId,\n    (change, message) => {\n        if (change === MESSAGE_CHANGE_TYPES.added) {\n            console.log('New message:', message.content);\n        } else if (change === MESSAGE_CHANGE_TYPES.edited) {\n            console.log('Message edited:', message.content);\n        } else if (change === MESSAGE_CHANGE_TYPES.removed) {\n            console.log('Message removed (archived):', message.id);\n        }\n    },\n    (error) => {\n        if (error instanceof NodeAuthRequiredError) console.error('Access revoked mid-stream');\n        else if (error instanceof GraphAuthError) console.error('Token expired — re-login');\n        else console.error('Subscription error:', error);\n    }\n);\n\n// Subscribe to item changes (same onError semantics; see examples/subscriptions.mjs for full demo)\nconst unsubscribeItems = await graph.subscribeToItems(nodeId, (change, item) => {\n    if (change === ITEM_CHANGE_TYPES.added) {\n        console.log('New item:', item.title);\n    } else if (change === ITEM_CHANGE_TYPES.movedIn) {\n        console.log('Item moved here:', item.title);\n    } else if (change === ITEM_CHANGE_TYPES.reorder) {\n        console.log('Item reordered:', item.title);\n    }\n});\n\n// Stop listening\nunsubscribeMessages();\nunsubscribeItems();\n\n// Wait for specific message\nconst msg = await graph.waitForMessage(nodeId,\n    (change, msg) => change === MESSAGE_CHANGE_TYPES.added && msg.createdBy === 'Lifebot',\n    30000  // timeout\n);\n\n// Wait for any reply after your message\nconst reply = await graph.waitForReply(nodeId, myMessageId);\n\n// Wait for a reply that directly references your message (via refId)\nconst exactReply = await graph.waitForReply(nodeId, myMessageId, { exactMatch: true, timeout: 60000 });\n```\n\n### AI Interactions\n\n```javascript\nimport { LifebotTimeoutError, LifebotRateLimitError } from '@ilivemylife/graph-sdk';\n\ntry {\n    const response = await graph.askLifebot(nodeId, 'What is 2 + 2?', {\n        timeout: 60000  // 60 seconds\n    });\n    console.log(response.content);\n} catch (error) {\n    if (error instanceof LifebotTimeoutError) {\n        console.error('AI did not respond in time');\n    } else if (error instanceof LifebotRateLimitError) {\n        console.error('Rate limit exceeded');\n    }\n}\n```\n\n**What is Lifebot?**\n\nLifebot is the AI assistant that lives inside your iLiveMyLife knowledge graph. It can:\n- Answer questions about your data and context\n- Search and find information across your nodes\n- **Create new nodes** with titles and descriptions\n- **Organize information** by creating nested structure\n- Execute actions on your behalf\n\n```javascript\n// Ask Lifebot to create a project with sub-tasks\nawait graph.askLifebot(nodeId,\n    'Create a node \"Weekly Plan\" with 3 tasks inside: Monday review, Wednesday sync, Friday summary'\n);\n// Lifebot will create the parent node AND all children!\n```\n\n**Enable Lifebot:** Add `assist` tag to a node to enable Lifebot in that context.\n\n### Helper Methods\n\n```javascript\n// Get single item\nconst item = await graph.getItem(nodeId);\n\n// Resolve a reference — follow its refId to fetch the origin node\nconst actual = await graph.resolveRef(nodeId);\n\n// Get items with references resolved\nconst items = await graph.itemsResolved(nodeId);\n```\n\n### Cleanup\n\n```javascript\n// Close all connections and free resources when done\ngraph.destroy();\n```\n\nCall `destroy()` at the end of scripts to close WebSocket connections and let the process exit. Safe to call multiple times. Not needed for HTTP-only usage (queries/mutations without subscriptions).\n\n### Validation\n\n```javascript\nimport { isValidNodeId, parseNodeId, validateNodeId } from '@ilivemylife/graph-sdk';\n\n// Check if string is valid node ID\nisValidNodeId('00001191f13c5c81-ee4ae8284f820001') // true\nisValidNodeId('invalid') // false\n\n// Parse node ID from raw ID or full URL\nparseNodeId('00001191f13c5c81-ee4ae8284f820001')\n// → '00001191f13c5c81-ee4ae8284f820001'\n\nparseNodeId('https://app.ilivemylife.io/item/00001191f13c5c81-ee4ae8284f820001')\n// → '00001191f13c5c81-ee4ae8284f820001'\n\nparseNodeId('invalid')\n// → null\n\n// Validate and throw error if invalid\nvalidateNodeId(userInput); // throws GraphError if invalid\n```\n\n### Authentication\n\n```javascript\n// Login (standalone — no client needed)\nimport { login } from '@ilivemylife/graph-sdk';\nconst { user, accessToken } = await login(email, password);\n\n// Login (instance method — if client already exists)\nconst result = await graph.login(email, password);\n\n// Get current user\nconst me = await graph.me();\n```\n\n---\n\n## Error Handling\n\n```javascript\nimport {\n    GraphError,                  // Base error — branch on error.code (GraphErrorCodes.*)\n    GraphNetworkError,           // Network/connection issues\n    GraphAuthError,              // UNAUTHENTICATED — token missing or invalid\n    AccountProvisioningError,    // login() — account valid but not yet fully initialised (retryable)\n    NodeAuthRequiredError,       // Read/mutation on a gated node — caller lacks access\n    NodeKycRequiredError,        // requestAccess() hit a KYC-required node (open in app)\n    InvalidOperationError,       // Mutation semantically invalid (ref-record, tag-abuse, non_drop)\n    InvalidRefError,             // Ref creation invalid (reference-to-reference, reference to a SYS_* system node, or reference to a root node)\n    NotFoundError,               // Node / message id does not exist\n    ForbiddenError,              // Permission block that no access flow can lift (e.g. author-who-lost-access edits)\n    HighPrivacyForbiddenError,   // Policy block — e.g. forward from any gated source: wallet/bank/hidden/private/kyc/system/device (non-retryable)\n    LifebotError,                // AI error base\n    LifebotTimeoutError,         // AI timeout\n    LifebotRateLimitError,       // AI rate limit\n    LifebotProcessingError       // AI failed during processing — don't retry same prompt\n} from '@ilivemylife/graph-sdk';\n\ntry {\n    await graph.items(nodeId);\n} catch (error) {\n    if (error instanceof NodeAuthRequiredError) {\n        // Gated node — inspect error.options / error.requestStatus, then either register a\n        // visit, wait for a pending request, or call graph.requestAccess(error.itemId).\n        console.error(error.message);\n    } else if (error instanceof InvalidOperationError) {\n        console.error(error.message);        // Terminal — do NOT retry with same args\n    } else if (error instanceof InvalidRefError) {\n        console.error(error.message);        // Terminal — drop refId or pick a different target\n    } else if (error instanceof NotFoundError) {\n        console.error('Not found:', error.itemId);\n    } else if (error instanceof ForbiddenError) {\n        console.error(error.message);        // Terminal — no access flow will lift this\n    } else if (error instanceof HighPrivacyForbiddenError) {\n        console.error(error.message);        // Terminal — policy block, do NOT retry (see error.operation)\n    } else if (error instanceof AccountProvisioningError) {\n        console.error(error.message);        // Retry after error.retryAfterSeconds\n    } else if (error instanceof GraphAuthError) {\n        console.error('Run: npx ilml login');\n    } else if (error instanceof GraphError) {\n        console.error('Operation failed:', error.code);\n    }\n}\n```\n\n**Full worked catches** (with commentary on when each fires and what to do next) live in [`examples/error-handling.mjs`](./examples/error-handling.mjs).\n\n---\n\n## Requesting Access to Gated Nodes\n\nSome nodes are gated. The SDK / CLI / MCP can request access programmatically without going through KYC — the server creates a request record and notifies the node owner via Lifebot. The user waits for the owner to approve, then retries the original read.\n\n### Two server-side processes\n\nThe server's `ACCESS_PROCESS` enum mirrors the two independent gating processes a node can require:\n\n| `ACCESS_PROCESS` value | Triggered by tags | Headless support |\n|---|---|---|\n| `ACCESS_PROCESS.PRIVATE` (`'private'`) | Tags like `private`, `ask` | **Yes** — `requestAccess()` sends the request, owner approves via `@@<full display name>` mention (double `@@` = grant, not just notify; the mention must match the requester's full `displayName` exactly, e.g. `@@Ilya Sorokin` — NOT a short handle like `@@ilya`) |\n| `ACCESS_PROCESS.KYC` (`'kyc'`) | Tags like `kyc`, `wallet`, `bank` | **No** — needs the in-app PaymentRequest UI; SDK throws `NodeKycRequiredError` |\n\nA node may need both (e.g. `wallet` triggers KYC + PRIVATE). The server inspects the tags and returns the union of required processes in `arrayOfOptions`. The SDK never branches on raw tag names — only on these two process labels — so adding a new tag server-side does not require an SDK change.\n\n### SDK\n\n```javascript\nimport { ACCESS_RESULT_CODE, NodeKycRequiredError } from '@ilivemylife/graph-sdk';\n\ntry {\n    const r = await graph.requestAccess(nodeId);\n    // r.ok:           always true (errors are thrown)\n    // r.accessStatus: true if the caller has access right now\n    // r.code:         one of ACCESS_RESULT_CODE values\n    // r.message:      SDK-formatted convenience string for terminals/logs\n\n    if (r.accessStatus) {\n        console.log('Have access — proceed:', r.message);\n    } else if (r.code === ACCESS_RESULT_CODE.REQUEST_PENDING) {\n        console.log('Request still pending; ask user to come back later');\n    } else if (r.code === ACCESS_RESULT_CODE.REQUEST_SENT) {\n        console.log('Request just sent to owner; wait for approval');\n    }\n} catch (error) {\n    if (error instanceof NodeKycRequiredError) {\n        console.log(`Open ${error.itemId} in app.iLiveMyLife.io to complete KYC.`);\n    } else {\n        throw error;\n    }\n}\n```\n\nThe mutation is **idempotent** — calling on a node where you already have access returns `ALREADY_ACCESSED`, on a node with a pending request returns `REQUEST_PENDING`. The same method works as both \"send request\" and \"check status\" — no preflight read, no separate poll endpoint.\n\n### CLI\n\n```bash\n# Default output — human-readable, exit 0 on success, 1 on KYC required or error\nilml request-access <nodeId>\n# → Request sent to owner of <id>. They will get a Lifebot notification.\n\n# JSON output — mirrors server's AddUserAccessResponse for scripts\nilml request-access <nodeId> --json\n# → { \"ok\": true, \"accessStatus\": false, \"code\": \"REQUEST_SENT\", \"message\": \"...\", ... }\n```\n\n### MCP\n\nThe `graph_request_access` tool returns the same server-shape (`{ ok, accessStatus, code, message, itemAccessedResponse? }`). KYC is **not thrown** — it's converted into `{ ok: false, code: 'KYC_REQUIRED', ... }` so the LLM can relay the message to the user without retrying.\n\n---\n\n## Constants\n\n```javascript\nimport {\n    // Message options\n    MESSAGE_TYPES,         // normal, reply, forward\n    LIFEBOT_MESSAGE_TYPES, // on (force), off (never), auto (decide, default)\n    NOTIFY_MESSAGE_TYPES,  // on, off, postpone\n\n    // Subscription change types — cache-delta signals (not server operations)\n    MESSAGE_CHANGE_TYPES,  // added ('+1'), edited ('edit'), removed ('-1' — archived)\n    ITEM_CHANGE_TYPES,     // added ('+1'), edited ('edit'), removed ('-1' — archived OR moved out), movedIn ('movedIn'), reorder ('reorder')\n\n    // Access and settings\n    ITEM_ACCESS_TYPES,     // human, bot, request\n    AI_PROVIDER_TYPES,     // openai, claude, gemini, deepseek\n    TOGGLE_VALUES,         // enabled, disabled (for intelligence, lifebotRootAccess)\n    NODE_SPECIAL_TYPES,    // user_settings, user_system, non_drop\n\n    // Access request result codes (server's response code in addUserAccessRequest)\n    ACCESS_RESULT_CODE,    // ALREADY_ACCESSED, NO_REQUEST_NEEDED, REQUEST_PENDING, REQUEST_SENT, ACCESS_GRANTED, KYC_REQUIRED\n\n    // GraphQL error codes (server's error.extensions.code — covers reads + writes)\n    GRAPHQL_ERROR_CODES,   // NODE_AUTH_REQUIRED, INVALID_OPERATION, INVALID_REF, NOT_FOUND, FORBIDDEN, HIGH_PRIVACY_FORBIDDEN, UNAUTHENTICATED, UNKNOWN, GRAPHQL_VALIDATION_FAILED\n\n    // Process labels in NodeAuthRequiredError.options (server normalizes raw gating tags here)\n    ACCESS_PROCESS,        // KYC, PRIVATE  (only these two ever appear — never 'wallet'/'bank'/'ask')\n\n    // States of an existing access request (NodeAuthRequiredError.requestStatus)\n    REQUEST_STATUS,        // REQUIRED, PENDING, VISIT_REQUIRED\n\n    // Server's default arrayOfOptions when tags are not in scope (KYC + PRIVATE — safest)\n    DEFAULT_ACCESS_OPTIONS,\n\n    // Closed enum for HighPrivacyForbiddenError.operation — branch on the operation kind that got blocked\n    HIGH_PRIVACY_OPERATION, // FORWARD  (only member today)\n\n    // Pre-resolved node id for sending SDK feedback / bug reports via addMessage\n    SDK_SUPPORT_NODE,\n\n    // SDK-internal error codes (GraphError.code) — NOT to be confused with server codes\n    GraphErrorCodes        // MUTATION_FAILED, INVALID_NODE_ID, INVALID_POSITION, NO_CHANGE, NO_CHILDREN, OUT_OF_RANGE, NO_ORDER, NOT_IN_PARENT, RATE_LIMIT, PROCESSING_ERROR, TIMEOUT\n                           // (NOT_IN_PARENT was renamed from NOT_FOUND in 1.0.24 to avoid shadowing NotFoundError)\n} from '@ilivemylife/graph-sdk';\n\n// Subscription change values (cache-delta signals — describe what to do with your\n// local cache, NOT which server mutation ran):\n// MESSAGE_CHANGE_TYPES.added   === '+1'      (message appeared)\n// MESSAGE_CHANGE_TYPES.edited  === 'edit'    (message content changed)\n// MESSAGE_CHANGE_TYPES.removed === '-1'      (message archived — evict from cache)\n//\n// ITEM_CHANGE_TYPES.added      === '+1'      (item appeared — create OR unarchive)\n// ITEM_CHANGE_TYPES.edited     === 'edit'    (item content changed)\n// ITEM_CHANGE_TYPES.removed    === '-1'      (item no longer in this parent — archive OR moveOut; check itemHistory to distinguish)\n// ITEM_CHANGE_TYPES.movedIn    === 'movedIn' (item moved into this parent)\n// ITEM_CHANGE_TYPES.reorder    === 'reorder' (item's position within parent changed)\n```\n\n---\n\n## Tags & Markers\n\nTags control node behavior. Format: `#tagname#value` or just `tagname`.\n\n### Special Tags\n\n| Tag | Description |\n|-----|-------------|\n| `wallet` | High privacy — entering the node requires access; invisible to outsiders and to AI. Can be shared between users (e.g. corporate wallet between CEO and accountant). Rendered as `Protected 🔒` unless explicitly revealed. |\n| `private` | Lower privacy — node itself is visible but entering (seeing children) requires access. Users with access can use AI to search inside if `allowAIPrivateSearch` setting is enabled |\n| `assist` | Enables Lifebot AI in this node |\n| `#color#r,g,b,a` | Node background color |\n| `#markerList#<listId>` | Enables status dropdown for children |\n| `#marker#<statusId>` | Sets item status from marker list |\n\n### Markers (Status System)\n\nMarkers let you track status of items (like task states). It's a pattern, not a built-in feature:\n\n1. **Create a marker list** — a node with status options as children (emoji titles)\n2. **Enable on parent** — add `#markerList#<listId>` tag\n3. **Set status** — add `#marker#<statusId>` tag to items\n\n```javascript\n// Enable default markers on a parent node\nawait graph.editItem({\n    id: parentId,\n    tags: ['#markerList#0000018190aaf813-a61a6f263e6a0000']\n});\n\n// Mark item as completed (default marker)\nawait graph.editItem({\n    id: taskId,\n    tags: ['#marker#0000018195a2d792-a61a6f263e6a0000']  // ☑️ Completed\n});\n```\n\nFull marker documentation and the default marker IDs are on the [iLiveMyLife.io](https://iLiveMyLife.io) knowledge graph under your account's Markers node.\n\n---\n\n## CLI Usage\n\n```bash\n# Install globally\nnpm install -g @ilivemylife/graph-sdk\n\n# Login (saves token to ~/.ilivemylife/config.json)\nilml login\n\n# Queries (read operations) - all support --json for scripting\nilml items <nodeId>              # List node and children (short)\nilml items <nodeId> --single     # Node only, no children\nilml items <nodeId> --long       # Full details (all fields)\nilml items <nodeId> --json       # JSON output (for scripting)\nilml items <nodeId> --ids        # IDs only (for piping)\nilml messages <nodeId> [count]   # Show messages (short)\nilml messages <nodeId> --long    # Full message details\nilml messages <nodeId> --json    # JSON output\nilml itemHistory <nodeId>        # Show change history\nilml itemHistory <nodeId> --json # JSON output\nilml itemUsers <nodeId> --json   # Users with access\nilml subItemCount <nodeId>       # Get children count\nilml itemSettings <nodeId>       # Show node settings\nilml search <nodeId> \"text\"      # Search messages\nilml tree <nodeId> [depth]       # Show tree structure (truncated)\nilml tree <nodeId> --long        # Full titles, no truncation\nilml allItems <rootId>           # Full-tree recursive sync (every accessible node under root)\n\n# Item mutations\nilml addItem <parentId> --title \"Task\" --desc \"Description\" --tags work,urgent\nilml addItem <parentId> --ref <nodeId>  # Create a reference pointing at another node\nilml editItem <nodeId> --title \"New Title\" --tags updated\nilml archiveItem <nodeId>\nilml unarchiveItem <nodeId>\nilml moveItem <nodeId> <fromParentId> <toParentId>\nilml moveItemToPosition <nodeId> <from> <to> <pos>  # Move to parent at position (1-based)\nilml reorderChild <parentId> <from> <to>  # Reorder child (1-based positions)\nilml setPosition <nodeId> <parentId> <pos>  # Move to position (1-based)\nilml editSettings <nodeId> --provider claude       # Change AI provider\nilml editSettings <nodeId> --intelligence disabled  # Use cheaper AI model\nilml editSettings <nodeId> --rootAccess enabled     # AI searches entire graph for context\nilml editSettings <nodeId> --push true --inApp true # Enable notifications\nilml editSettings <nodeId> --provider null          # Reset to app default\n\n# Messaging\nilml send <nodeId> \"message\"     # Send message (no AI — alias for message --lifebot off)\nilml message <nodeId> \"text\" --lifebot on|off|auto  # on=force reply, off=never, auto=Lifebot decides (default)\nilml ask <nodeId> \"question\"     # Ask AI (forced reply, --lifebot on) and wait for response\nilml editMessage <msgId> \"new content\"\nilml archiveMessage <msgId>\n\n# Access (request access to gated nodes — see \"Requesting Access\" section above)\nilml request-access <nodeId>          # Send request OR check status (idempotent)\nilml request-access <nodeId> --json   # Structured output for scripts\n\n# File upload\nilml upload <nodeId> /path/to/file.jpg\n\n# Management\nilml config                      # Show configuration\nilml me                          # Current user info\nilml visits [count]              # Recent node visits (default 10, paginated)\nilml visits [count] --long       # Full visit details (parent, device, previous node)\nilml visits [count] --json       # JSON output\nilml visits --cursor <createdAt> # Next page (use timestamp from previous page footer)\nilml notifications [count]       # Recent in-app/push notifications (default 10)\nilml notifications [count] --long  # Full notification details\nilml notifications [count] --json  # JSON output\nilml notifications --cursor <ts> # Pagination\n\n# Wallet-blur (1.0.24+) — shoulder-surf protection in the terminal\n# `items`, `itemHistory`, `visits`, `notifications` blur title / description / body of\n# wallet-class rows behind `Protected 🔒` by default in the human-readable output.\n# Pass --reveal to see the real content; --json / --ids always return raw data (blur\n# applies to human-facing output only, so scripts don't break).\nilml items <nodeId>              # wallet children rendered as `Protected 🔒`\nilml items <nodeId> --reveal     # show real titles / descriptions\nilml visits --reveal             # unblur wallet-node rows in visit history\nilml notifications --reveal      # unblur wallet-related notification bodies\n\n# Plugins (extend ilml with domain-specific automation)\nilml plugin install linkedin                            # auto-prefix → npm:ilml-plugin-linkedin (latest)\nilml plugin install linkedin npm:ilml-plugin-linkedin@1.2.0  # pinned npm version\nilml plugin install custom https://example.com/x.tgz    # direct HTTPS tarball (private/paid)\nilml plugin install custom file:///abs/path/x.tgz       # local tarball (development)\nilml plugin list                                        # List installed plugins (with source kind)\nilml plugin update                                      # Check all installed; npm sources are version-checked\nilml plugin update linkedin                             # Update one plugin (uses stored source)\nilml plugin remove <name>                               # Uninstall plugin\nilml plugin config <name>                               # Show plugin config in active scope\nilml plugin config <name> set KEY VALUE                 # Set a config value\nilml plugin config <name> unset KEY                     # Remove a config value\nilml plugin config <name> reset                         # Wipe config (re-prompt on next run)\nilml <pluginName> <command> [args]                      # Run an installed plugin's command\n```\n\n### Token Configuration\n\nToken is resolved in order:\n1. Local config — `.ilivemylife/config.json` in current directory (or parent directories)\n2. `.env` file with `ILML_TOKEN` entry in current directory\n3. Global config — `~/.ilivemylife/config.json` (set by `ilml login`)\n4. Shell env var `ILML_TOKEN` in the shell environment\n\nThis allows per-project tokens:\n```bash\n# Project A uses user A's token\nproject-a/.ilivemylife/config.json   # via: ilml login --local\n\n# Or use .env file\nproject-b/.env                        # ILML_TOKEN=xxx\n```\n\n---\n\n## MCP Server (AI Assistant Integration)\n[MCP (Model Context Protocol)](https://modelcontextprotocol.io/) allows AI assistants to interact with external tools. This SDK includes an MCP server that exposes graph operations to Claude, Cursor, Windsurf and other MCP-compatible tools.\n\n### Setup\n\n**Prerequisites:** Run `ilml login` first (see [Getting Started](#getting-started)).\n\n**Claude Code:**\n```bash\n# Global (available in all projects)\nclaude mcp add --scope user ilml -- ilml-mcp\n\n# Or current project only\nclaude mcp add ilml -- ilml-mcp\n```\n\nIf you didn't install globally (`npm install -g`), use npx:\n```bash\nclaude mcp add --scope user ilml -- npx -y @ilivemylife/graph-sdk\n```\n\n**Other AI tools** — add to config file:\n\n```json\n{\n  \"mcpServers\": {\n    \"ilml\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@ilivemylife/graph-sdk\"]\n    }\n  }\n}\n```\n\nOr if installed globally:\n```json\n{\n  \"mcpServers\": {\n    \"ilml\": {\n      \"command\": \"ilml-mcp\"\n    }\n  }\n}\n```\n\n| AI Tool | Config Path |\n|---------|------------|\n| Claude Code | `claude mcp add` (recommended) or `~/.claude/settings.json` |\n| Claude Desktop | macOS: `~/Library/Application Support/Claude/claude_desktop_config.json` |\n| | Windows: `%APPDATA%\\Claude\\claude_desktop_config.json` |\n| Cursor | `~/.cursor/mcp.json` |\n| Windsurf | `~/.codeium/windsurf/mcp_config.json` |\n| IntelliJ IDEA | Settings → Tools → AI Assistant → Model Context Protocol (MCP) |\n\nToken is resolved automatically: local config > .env file > global config > shell env var ILML_TOKEN.\nRestart your AI tool after adding the config.\n\n### Available Tools\n\n**Read Operations** (no confirmation needed):\n- `graph_items` — Get node and children\n- `graph_get_item` — Get a single node by ID\n- `graph_resolve_ref` — Resolve a reference node to its target\n- `graph_items_resolved` — Get items with all references resolved\n- `graph_messages` — Get messages from node\n- `graph_search_messages` — Search messages\n- `graph_item_history` — Get change history\n- `graph_item_users` — Get users with access\n- `graph_sub_item_count` — Get count of children\n- `graph_item_settings` — Get node settings\n- `graph_me` — Get current user info\n- `graph_last_visits` — Recent node visits for the current user (paginated by `count` + `cursor` createdAt)\n- `graph_last_notifications` — Recent in-app/push notifications for the current user (paginated)\n- `graph_info` — Get documentation about graph features (topics: markers, tags, links (references), privacy, access (request-access protocol), errors (typed-error decision flow), lifebot, settings, plugins, all)\n- `graph_plugins` — List installed CLI plugins (name, version, commands)\n- `graph_plugin_config` — Show plugin configuration in active scope (secrets masked)\n\n**Write Operations** (require confirmation):\n- `graph_add_item` — Create new node\n- `graph_edit_item` — Edit node (title, description, tags)\n- `graph_edit_settings` — Edit node settings (AI provider, notifications)\n- `graph_archive_item` / `graph_unarchive_item` — Archive/restore\n- `graph_move_item` — Move to different parent\n- `graph_reorder_child` / `graph_set_position` — Reorder\n- `graph_add_message` — Send message (`lifebot`: `on` = force reply, `off` = never, `auto` = Lifebot decides, default)\n- `graph_edit_message` — Edit existing message\n- `graph_archive_message` — Delete a message\n- `graph_ask_lifebot` — Ask AI and wait for response (always `lifebot: on` — forced reply)\n- `graph_upload_file` — Upload file to a node\n- `graph_request_access` — Request access to a gated node (private/ask), or check status of an existing request. Returns structured `{ ok, accessStatus, code, message, itemAccessedResponse? }` (the server's `AddUserAccessResponse` shape). `code` is one of `ACCESS_RESULT_CODE` values: `ALREADY_ACCESSED` / `NO_REQUEST_NEEDED` / `REQUEST_PENDING` / `REQUEST_SENT` / `ACCESS_GRANTED` / `KYC_REQUIRED`. KYC nodes return `{ ok: false, code: 'KYC_REQUIRED' }` (LLM should tell the user to open the node in the app)\n\n### Example Prompts\n\n```\n\"Show me items in node abc123\"\n\"Create a task called 'Review PR' under node xyz789\"\n\"What messages are in my root node?\"\n\"Ask Lifebot to summarize this project\"\n\"Switch AI to OpenAI for node xyz789\"\n\"Use cheaper AI model for this node to save costs\"\n\"What ilml plugins do I have installed?\"\n\"Why doesn't `ilml linkedin apply` work? Check what's missing.\"\n```\n\n---\n\n## Plugins\n\nilml CLI can be extended with plugins — npm-style tarballs that add domain-specific commands like `ilml linkedin apply` or `ilml indeed search`. End users install plugins once per machine; their configuration is stored per-scope (mirroring ilml's token resolution).\n\n```bash\nilml plugin install linkedin                  # auto-prefix → npm:ilml-plugin-linkedin (latest)\nilml linkedin apply                           # first run prompts for required config\nilml plugin list                              # see what's installed\nilml plugin config linkedin                   # inspect saved config (secrets masked)\nilml plugin update                            # check all installed; npm sources only re-download if newer\n```\n\nThe bare-name install uses the convention `ilml-plugin-<name>` on npm. Private/paid plugins ship as direct HTTPS tarballs:\n\n```bash\nilml plugin install secret-tool https://yourhost.example/secret-tool-1.0.0.tgz\n```\n\n### For Plugin Authors\n\nPlugins ship an `ilml-plugin.json` manifest declaring commands and a `config.schema`. Inside the plugin, configuration is read via the SDK:\n\n```typescript\nimport { getPluginConfig, getCachedUser } from '@ilivemylife/graph-sdk';\n\nconst cfg = await getPluginConfig();              // { LINKEDIN_EMAIL, ..., from current scope }\nconst user = getCachedUser();                     // sync, no network — { id, email, ... } or null\n```\n\nThe SDK auto-discovers the plugin's manifest by walking up from `process.cwd()`, validates the schema, and pulls values from the right place automatically — production reads from the active scope (`<scope>/.ilivemylife/plugins-state/<name>.json`), dev mode reads from `.env` next to the manifest. Plugin authors don't need to handle scopes themselves.\n\nSee **[PLUGINS.md](./PLUGINS.md)** for the full architecture spec, dev workflow, and isolation/trust model.\n\n---\n\n## TypeScript\n\nFull type definitions included:\n\n```typescript\nimport {\n    // Functions\n    createGraphClient,\n    login,               // standalone login (no client needed)\n\n    // Plugin SDK (for plugin authors)\n    getPluginConfig,\n    getPluginConfigDetails,\n    getCachedUser,\n\n    // Constants\n    MESSAGE_TYPES, LIFEBOT_MESSAGE_TYPES, NOTIFY_MESSAGE_TYPES,\n    ITEM_ACCESS_TYPES, AI_PROVIDER_TYPES, TOGGLE_VALUES\n} from '@ilivemylife/graph-sdk';\n\nimport type {\n    // Data types\n    Item, Message, User, ItemSettings,\n    HistoryEntry, ItemUser, SubItemCount,\n    FileInfo, UploadFileOptions,\n\n    // Client types\n    GraphClient, GraphClientOptions,\n    AddItemOptions, EditItemInput, EditItemSettingsInput,\n    AddMessageOptions, EditMessageInput, AskLifebotOptions,\n\n    // Access-flow result types\n    RequestAccessResult, GrantUserAccessResult,\n\n    // Plugin SDK types\n    PluginManifest, PluginConfigSchemaEntry,\n    PluginConfigDetails, PluginConfigSource, CachedUser,\n\n    // Subscription change types (for type-safe comparisons)\n    MessageChangeType,     // '+1' | 'edit' | '-1'\n    ItemChangeType,        // '+1' | 'edit' | '-1' | 'movedIn' | 'reorder'\n    HighPrivacyOperation   // 'FORWARD' — union type for HighPrivacyForbiddenError.operation\n} from '@ilivemylife/graph-sdk';\n```\n\n---\n\n## Staying Updated\n\nGet notified about new releases:\n\n- **In-app notifications** — open the [Releases node](https://app.ilivemylife.io/item/0000019be3017cbf-420aa21953490000) in iLiveMyLife and enable push notifications. You'll receive a notification whenever a new version is published.\n- **CLI** — run `ilml update` to check for updates and install the latest version.\n\n---\n\n## License\n\n© 2026 Ilya Sorokin. All rights reserved.\n\nThis package is proprietary software. For licensing inquiries, business partnerships, or enterprise usage, please contact the author.\n\n---\n\n## Author\n\nCreated by **Ilya Sorokin** — founder and developer of iLiveMyLife.\n\n- **LinkedIn:** [linkedin.com/in/ilyasorokin](https://www.linkedin.com/in/ilyasorokin/)\n- **Email:** info@ilivemylife.io\n- **App:** [https://iLiveMyLife.io](https://iLiveMyLife.io)\n","readmeFilename":"README.md"}