{"_id":"@tiangong-ai/cli","_rev":"15-66fc16ca3ef2f0cd9fd868c4898a39ae","name":"@tiangong-ai/cli","dist-tags":{"latest":"0.0.17"},"versions":{"0.0.1":{"name":"@tiangong-ai/cli","version":"0.0.1","keywords":["tiangong","ai","cli","kb"],"license":"MIT","_id":"@tiangong-ai/cli@0.0.1","maintainers":[{"name":"linanenv","email":"linanenv@gmail.com"}],"homepage":"https://github.com/tiangong-ai/cli#readme","bugs":{"url":"https://github.com/tiangong-ai/cli/issues"},"bin":{"tiangong-ai":"bin/tiangong-ai.js"},"dist":{"shasum":"d3e48280a379705a6b57034d6a41358633fef069","tarball":"https://registry.npmjs.org/@tiangong-ai/cli/-/cli-0.0.1.tgz","fileCount":11,"integrity":"sha512-BsTS5xtfnvXs2PeISVcm4asPJQ51k8H1hYkSSUOKq9cTP15w2vD8gvVGLegbyKRRu5/fsSaw9AFc28ByVnon5A==","signatures":[{"sig":"MEQCIFVcijIInKQibBNUqbQgbJLjlqaLK2RZd5Fr7NELXRwVAiBqr8mKjWHwBG7TWfeydwwMgTv4LuXYypUdHZgZmd681A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":67136},"type":"module","engines":{"node":">=24 <25"},"scripts":{"lint":"npm run lint:format && npm run lint:coverage-guards","test":"npm run build && node --import tsx --test test/*.test.ts","build":"tsc -p tsconfig.build.json","clean":"node --eval \"import('node:fs').then(({ rmSync }) => rmSync('dist', { recursive: true, force: true }))\"","format":"prettier --write \"{src,test,bin,scripts}/**/*.{ts,js,cjs,mjs}\" \"*.{md,json}\" \"docs/**/*.md\" \".docpact/**/*.yaml\" \".github/**/*.yml\"","prepack":"npm run build","typecheck":"tsc --noEmit","lint:format":"prettier --check \"{src,test,bin,scripts}/**/*.{ts,js,cjs,mjs}\" \"*.{md,json}\" \"docs/**/*.md\" \".docpact/**/*.yaml\" \".github/**/*.yml\"","prepush:gate":"npm run lint && npm run test:coverage && docpact validate-config --root . --strict && docpact lint --root . --worktree --mode enforce","test:coverage":"npm run build && node ./scripts/run-test-coverage.cjs","lint:coverage-guards":"node ./scripts/assert-no-coverage-ignore.cjs"},"_npmUser":{"name":"linanenv","email":"linanenv@gmail.com"},"repository":{"url":"git+https://github.com/tiangong-ai/cli.git","type":"git"},"_npmVersion":"11.6.2","description":"Tiangong AI command-line interface.","directories":{},"_nodeVersion":"24.13.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","tsx":"^4.21.0","prettier":"^3.8.1","typescript":"^5.9.3","@types/node":"^24.12.2"},"_npmOperationalInternal":{"tmp":"tmp/cli_0.0.1_1778235939299_0.06519211069511832","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"@tiangong-ai/cli","version":"0.0.3","keywords":["tiangong","ai","cli","kb"],"license":"MIT","_id":"@tiangong-ai/cli@0.0.3","maintainers":[{"name":"linanenv","email":"linanenv@gmail.com"}],"homepage":"https://github.com/tiangong-ai/cli#readme","bugs":{"url":"https://github.com/tiangong-ai/cli/issues"},"bin":{"tiangong-ai":"bin/tiangong-ai.js"},"dist":{"shasum":"f65f8ff787b6a36c37ae7c352c2008cd7b5fc36c","tarball":"https://registry.npmjs.org/@tiangong-ai/cli/-/cli-0.0.3.tgz","fileCount":11,"integrity":"sha512-4r+vEbYLpGHirdf4Vl6J6QA2jeiAfEu82Xeht8yuFiCiUzNjeOzsdz00dMFm0dOABRyxzcOdOOPjbidNjUfdDQ==","signatures":[{"sig":"MEUCIQDnmSNaXRPk07qajE30/VYr3Cjzcr0Fr70N/CIxMLzufgIgJc61nMaI5OnrKsurN1vFvxRuO5lx26k3epQalwmxw68=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@tiangong-ai%2fcli@0.0.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":67126},"type":"module","engines":{"node":">=24 <25"},"gitHead":"1e5e6cfea24c1b1c558e97bb23eeea4ec08c8b7d","scripts":{"lint":"npm run lint:format && npm run lint:coverage-guards","test":"npm run build && node --import tsx --test test/*.test.ts","build":"tsc -p tsconfig.build.json","clean":"node --eval \"import('node:fs').then(({ rmSync }) => rmSync('dist', { recursive: true, force: true }))\"","format":"prettier --write \"{src,test,bin,scripts}/**/*.{ts,js,cjs,mjs}\" \"*.{md,json}\" \"docs/**/*.md\" \".docpact/**/*.yaml\" \".github/**/*.yml\"","prepack":"npm run build","typecheck":"tsc --noEmit","lint:format":"prettier --check \"{src,test,bin,scripts}/**/*.{ts,js,cjs,mjs}\" \"*.{md,json}\" \"docs/**/*.md\" \".docpact/**/*.yaml\" \".github/**/*.yml\"","prepush:gate":"npm run lint && npm run test:coverage && docpact validate-config --root . --strict && docpact lint --root . --worktree --mode enforce","test:coverage":"npm run build && node ./scripts/run-test-coverage.cjs","lint:coverage-guards":"node ./scripts/assert-no-coverage-ignore.cjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7d3aabf1-639b-4161-a81f-688bde4f0654"}},"repository":{"url":"git+https://github.com/tiangong-ai/cli.git","type":"git"},"_npmVersion":"11.12.1","description":"Tiangong AI command-line interface.","directories":{},"_nodeVersion":"24.14.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","tsx":"^4.21.0","prettier":"^3.8.1","typescript":"^5.9.3","@types/node":"^24.12.2"},"_npmOperationalInternal":{"tmp":"tmp/cli_0.0.3_1778236919932_0.3972246035086331","host":"s3://npm-registry-packages-npm-production"}},"0.0.4":{"name":"@tiangong-ai/cli","version":"0.0.4","keywords":["tiangong","ai","cli","kb"],"license":"MIT","_id":"@tiangong-ai/cli@0.0.4","maintainers":[{"name":"linanenv","email":"linanenv@gmail.com"}],"homepage":"https://github.com/tiangong-ai/cli#readme","bugs":{"url":"https://github.com/tiangong-ai/cli/issues"},"bin":{"tiangong-ai":"bin/tiangong-ai.js"},"dist":{"shasum":"7e3ebd72533e6937a4bd6bbb284b3e6491b70be6","tarball":"https://registry.npmjs.org/@tiangong-ai/cli/-/cli-0.0.4.tgz","fileCount":11,"integrity":"sha512-JKolJG5Uw0uk9m/OYcZ0gz6/oVAKEYAHcgPPqruerOx2gXC+wkRSmecf5bK5DZfziq51GY2QIYw2XT6hiCBc2g==","signatures":[{"sig":"MEUCIQC0UvkDXPDc30FvpwxFC6wr3dcs8Cy3jF9eBeTKKz2JnAIgOUv17P8Ip4sV0oNARi0OsLATiqSXeLdOtN0qgrZxiQY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@tiangong-ai%2fcli@0.0.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":236863},"type":"module","engines":{"node":">=24 <25"},"gitHead":"b323c9fc80c91a4558babbb54066ed97cce0bf24","scripts":{"lint":"npm run lint:format && npm run lint:coverage-guards","test":"npm run build && node --import tsx --test test/*.test.ts","build":"tsc -p tsconfig.build.json","clean":"node --eval \"import('node:fs').then(({ rmSync }) => rmSync('dist', { recursive: true, force: true }))\"","format":"prettier --write \"{src,test,bin,scripts}/**/*.{ts,js,cjs,mjs}\" \"*.{md,json}\" \"docs/**/*.md\" \".docpact/**/*.yaml\" \".github/**/*.yml\"","prepack":"npm run build","typecheck":"tsc --noEmit","lint:format":"prettier --check \"{src,test,bin,scripts}/**/*.{ts,js,cjs,mjs}\" \"*.{md,json}\" \"docs/**/*.md\" \".docpact/**/*.yaml\" \".github/**/*.yml\"","prepush:gate":"npm run lint && npm run test:coverage && docpact validate-config --root . --strict && docpact lint --root . --worktree --mode enforce","test:coverage":"npm run build && node ./scripts/run-test-coverage.cjs","lint:coverage-guards":"node ./scripts/assert-no-coverage-ignore.cjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7d3aabf1-639b-4161-a81f-688bde4f0654"}},"repository":{"url":"git+https://github.com/tiangong-ai/cli.git","type":"git"},"_npmVersion":"11.12.1","description":"Tiangong AI command-line interface.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"sharp":"^0.34.5","pdf-lib":"^1.17.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","tsx":"^4.21.0","prettier":"^3.8.1","typescript":"^5.9.3","@types/node":"^24.12.2"},"_npmOperationalInternal":{"tmp":"tmp/cli_0.0.4_1778422939551_0.11722691465155255","host":"s3://npm-registry-packages-npm-production"}},"0.0.6":{"name":"@tiangong-ai/cli","version":"0.0.6","keywords":["tiangong","ai","cli","kb"],"license":"MIT","_id":"@tiangong-ai/cli@0.0.6","maintainers":[{"name":"linanenv","email":"linanenv@gmail.com"}],"homepage":"https://github.com/tiangong-ai/cli#readme","bugs":{"url":"https://github.com/tiangong-ai/cli/issues"},"bin":{"tiangong-ai":"bin/tiangong-ai.js"},"dist":{"shasum":"788365a0bcd0078041d0dd83ed41ae5e9c082bbb","tarball":"https://registry.npmjs.org/@tiangong-ai/cli/-/cli-0.0.6.tgz","fileCount":11,"integrity":"sha512-UzuXcZWyFGgGtT93hICAq99mGAMBZ4iYm+nPdMlY7xS5PK5zhjSfmfzYQ/7fV8drnrzYbueGJlcm4H7j4ihIcw==","signatures":[{"sig":"MEUCIQCQXwIIQ5GJpWwN2j+M/M+rOba3wzt2BKygnUJmnlX/9wIgJPyb6pMCyAAb1P+oZySeZbaFLs93Lo2fVf/fPPae/ZM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@tiangong-ai%2fcli@0.0.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":237071},"type":"module","engines":{"node":">=24 <25"},"gitHead":"5388ebb9e4a4ea43c52f4dc05589afd4e1a78eb8","scripts":{"lint":"npm run lint:format && npm run lint:coverage-guards","test":"npm run build && node --import tsx --test test/*.test.ts","build":"tsc -p tsconfig.build.json","clean":"node --eval \"import('node:fs').then(({ rmSync }) => rmSync('dist', { recursive: true, force: true }))\"","format":"prettier --write \"{src,test,bin,scripts}/**/*.{ts,js,cjs,mjs}\" \"*.{md,json}\" \"docs/**/*.md\" \".docpact/**/*.yaml\" \".github/**/*.yml\"","prepack":"npm run build","typecheck":"tsc --noEmit","lint:format":"prettier --check \"{src,test,bin,scripts}/**/*.{ts,js,cjs,mjs}\" \"*.{md,json}\" \"docs/**/*.md\" \".docpact/**/*.yaml\" \".github/**/*.yml\"","prepush:gate":"npm run lint && npm run test:coverage && docpact validate-config --root . --strict && docpact lint --root . --worktree --mode enforce","test:coverage":"npm run build && node ./scripts/run-test-coverage.cjs","lint:coverage-guards":"node ./scripts/assert-no-coverage-ignore.cjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7d3aabf1-639b-4161-a81f-688bde4f0654"}},"repository":{"url":"git+https://github.com/tiangong-ai/cli.git","type":"git"},"_npmVersion":"11.12.1","description":"Tiangong AI command-line interface.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"sharp":"^0.34.5","pdf-lib":"^1.17.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","tsx":"^4.21.0","prettier":"^3.8.1","typescript":"^5.9.3","@types/node":"^24.12.2"},"_npmOperationalInternal":{"tmp":"tmp/cli_0.0.6_1778425399303_0.12148615777318206","host":"s3://npm-registry-packages-npm-production"}},"0.0.7":{"name":"@tiangong-ai/cli","version":"0.0.7","keywords":["tiangong","ai","cli","kb"],"license":"MIT","_id":"@tiangong-ai/cli@0.0.7","maintainers":[{"name":"linanenv","email":"linanenv@gmail.com"}],"homepage":"https://github.com/tiangong-ai/cli#readme","bugs":{"url":"https://github.com/tiangong-ai/cli/issues"},"bin":{"tiangong-ai":"bin/tiangong-ai.js"},"dist":{"shasum":"35db763233f9f043517a5d3470d263e7f3a07558","tarball":"https://registry.npmjs.org/@tiangong-ai/cli/-/cli-0.0.7.tgz","fileCount":11,"integrity":"sha512-mF2WFN3xafd7DBb5RVUYBZWEIWRSkXmkqm4YFe0Yu6FB13NA6C2ssZXsQjYYw1uUmlS8D9jPS5SbYAFxIBwZ/w==","signatures":[{"sig":"MEUCIQDMPg7QwRPFXDNkuDtYT8H7y/66j2eq1qx5Nh3Qx672QQIgcpblHd52zO4GEaFnBLZYBz8yaYMuUciYDOpeBgFl5sw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@tiangong-ai%2fcli@0.0.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":269701},"type":"module","engines":{"node":">=24 <25"},"gitHead":"1c91a0dcf2c40b542ab758822e5c1cc7227cf565","scripts":{"lint":"npm run lint:format && npm run lint:coverage-guards","test":"npm run build && node --import tsx --test test/*.test.ts","build":"tsc -p tsconfig.build.json","clean":"node --eval \"import('node:fs').then(({ rmSync }) => rmSync('dist', { recursive: true, force: true }))\"","format":"prettier --write \"{src,test,bin,scripts}/**/*.{ts,js,cjs,mjs}\" \"*.{md,json}\" \"docs/**/*.md\" \".docpact/**/*.yaml\" \".github/**/*.yml\"","prepack":"npm run build","typecheck":"tsc --noEmit","lint:format":"prettier --check \"{src,test,bin,scripts}/**/*.{ts,js,cjs,mjs}\" \"*.{md,json}\" \"docs/**/*.md\" \".docpact/**/*.yaml\" \".github/**/*.yml\"","prepush:gate":"npm run lint && npm run test:coverage && docpact validate-config --root . --strict && docpact lint --root . --worktree --mode enforce","test:coverage":"npm run build && node ./scripts/run-test-coverage.cjs","lint:coverage-guards":"node ./scripts/assert-no-coverage-ignore.cjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7d3aabf1-639b-4161-a81f-688bde4f0654"}},"repository":{"url":"git+https://github.com/tiangong-ai/cli.git","type":"git"},"_npmVersion":"11.12.1","description":"Tiangong AI command-line interface.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"sharp":"^0.34.5","pdf-lib":"^1.17.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","tsx":"^4.21.0","prettier":"^3.8.1","typescript":"^5.9.3","@types/node":"^24.12.2"},"_npmOperationalInternal":{"tmp":"tmp/cli_0.0.7_1778583498967_0.8753301184798479","host":"s3://npm-registry-packages-npm-production"}},"0.0.8":{"name":"@tiangong-ai/cli","version":"0.0.8","keywords":["tiangong","ai","cli","kb"],"license":"MIT","_id":"@tiangong-ai/cli@0.0.8","maintainers":[{"name":"linanenv","email":"linanenv@gmail.com"}],"homepage":"https://github.com/tiangong-ai/cli#readme","bugs":{"url":"https://github.com/tiangong-ai/cli/issues"},"bin":{"tiangong-ai":"bin/tiangong-ai.js"},"dist":{"shasum":"f28f08454b26e31ae1f126746ad3471e9db312b0","tarball":"https://registry.npmjs.org/@tiangong-ai/cli/-/cli-0.0.8.tgz","fileCount":11,"integrity":"sha512-x6KI5Nu+g3JiTj6nJiNpkcXN5o30VcRZhgV1IHUTjHj0Ir9nYaJtkEns8DmHkcB867Z+wJ8c1t6ye2EfEq9QCg==","signatures":[{"sig":"MEUCIQCBliCp0JQOOAf9B+9pYin5P0QNkjVLU5FKgguAcDxY4gIgNb6nLaZLI6AV4rPXKgYi8FmDKP5AfI1Ig+7y6F/2vKY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@tiangong-ai%2fcli@0.0.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":260538},"type":"module","engines":{"node":">=24 <25"},"gitHead":"9f6d90b59729299ccd7fa2ee190b3489f39e7e43","scripts":{"lint":"npm run lint:format && npm run lint:coverage-guards","test":"npm run build && node --import tsx --test test/*.test.ts","build":"tsc -p tsconfig.build.json","clean":"node --eval \"import('node:fs').then(({ rmSync }) => rmSync('dist', { recursive: true, force: true }))\"","format":"prettier --write \"{src,test,bin,scripts}/**/*.{ts,js,cjs,mjs}\" \"*.{md,json}\" \"docs/**/*.md\" \".docpact/**/*.yaml\" \".github/**/*.yml\"","prepack":"npm run build","typecheck":"tsc --noEmit","lint:format":"prettier --check \"{src,test,bin,scripts}/**/*.{ts,js,cjs,mjs}\" \"*.{md,json}\" \"docs/**/*.md\" \".docpact/**/*.yaml\" \".github/**/*.yml\"","prepush:gate":"npm run lint && npm run test:coverage && docpact validate-config --root . --strict && docpact lint --root . --worktree --mode enforce","test:coverage":"npm run build && node ./scripts/run-test-coverage.cjs","lint:coverage-guards":"node ./scripts/assert-no-coverage-ignore.cjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7d3aabf1-639b-4161-a81f-688bde4f0654"}},"repository":{"url":"git+https://github.com/tiangong-ai/cli.git","type":"git"},"_npmVersion":"11.12.1","description":"Tiangong AI command-line interface.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"sharp":"^0.34.5","pdf-lib":"^1.17.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","tsx":"^4.21.0","prettier":"^3.8.1","typescript":"^5.9.3","@types/node":"^24.12.2"},"_npmOperationalInternal":{"tmp":"tmp/cli_0.0.8_1778652012721_0.3938229018455015","host":"s3://npm-registry-packages-npm-production"}},"0.0.9":{"name":"@tiangong-ai/cli","version":"0.0.9","keywords":["tiangong","ai","cli","kb"],"license":"MIT","_id":"@tiangong-ai/cli@0.0.9","maintainers":[{"name":"linanenv","email":"linanenv@gmail.com"}],"homepage":"https://github.com/tiangong-ai/cli#readme","bugs":{"url":"https://github.com/tiangong-ai/cli/issues"},"bin":{"tiangong-ai":"bin/tiangong-ai.js"},"dist":{"shasum":"c06d190499c152066cdf77268d28cf7745fe6b50","tarball":"https://registry.npmjs.org/@tiangong-ai/cli/-/cli-0.0.9.tgz","fileCount":11,"integrity":"sha512-5oH4l16BT23xnv2HPgZGN06KQLilTMnziwEIdVKvX6UIv5VXqROiak528sTkXHH5qQhxhA9S+7y3ij4n8vA1qA==","signatures":[{"sig":"MEYCIQDu8jb9NPcyaMCk1un1TsbZBA34CKrWy+o7SyONPRodbQIhAISEYnbbkws8Dje1z3x9FBjZ+eAAq0rlnsn7SrnURDhm","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@tiangong-ai%2fcli@0.0.9","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":260615},"type":"module","engines":{"node":">=24 <25"},"gitHead":"ab563926a36f07f61f3926d0dac31544ec078c98","scripts":{"lint":"npm run lint:format && npm run lint:coverage-guards","test":"npm run build && node --import tsx --test test/*.test.ts","build":"tsc -p tsconfig.build.json","clean":"node --eval \"import('node:fs').then(({ rmSync }) => rmSync('dist', { recursive: true, force: true }))\"","format":"prettier --write \"{src,test,bin,scripts}/**/*.{ts,js,cjs,mjs}\" \"*.{md,json}\" \"docs/**/*.md\" \".docpact/**/*.yaml\" \".github/**/*.yml\"","prepack":"npm run build","typecheck":"tsc --noEmit","lint:format":"prettier --check \"{src,test,bin,scripts}/**/*.{ts,js,cjs,mjs}\" \"*.{md,json}\" \"docs/**/*.md\" \".docpact/**/*.yaml\" \".github/**/*.yml\"","prepush:gate":"npm run lint && npm run test:coverage && docpact validate-config --root . --strict && docpact lint --root . --worktree --mode enforce","test:coverage":"npm run build && node ./scripts/run-test-coverage.cjs","lint:coverage-guards":"node ./scripts/assert-no-coverage-ignore.cjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7d3aabf1-639b-4161-a81f-688bde4f0654"}},"repository":{"url":"git+https://github.com/tiangong-ai/cli.git","type":"git"},"_npmVersion":"11.12.1","description":"Tiangong AI command-line interface.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"sharp":"^0.34.5","pdf-lib":"^1.17.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","tsx":"^4.21.0","prettier":"^3.8.1","typescript":"^5.9.3","@types/node":"^24.12.2"},"_npmOperationalInternal":{"tmp":"tmp/cli_0.0.9_1778653288985_0.7914768394206801","host":"s3://npm-registry-packages-npm-production"}},"0.0.10":{"name":"@tiangong-ai/cli","version":"0.0.10","keywords":["tiangong","ai","cli","kb"],"license":"MIT","_id":"@tiangong-ai/cli@0.0.10","maintainers":[{"name":"linanenv","email":"linanenv@gmail.com"}],"homepage":"https://github.com/tiangong-ai/cli#readme","bugs":{"url":"https://github.com/tiangong-ai/cli/issues"},"bin":{"tiangong-ai":"bin/tiangong-ai.js"},"dist":{"shasum":"d315dedf4b3eec0161ed8e8f0057958d0a1e403c","tarball":"https://registry.npmjs.org/@tiangong-ai/cli/-/cli-0.0.10.tgz","fileCount":11,"integrity":"sha512-RSASRN1JzgK0nrKrNQnwO1nIHrM4UVcDciwWkuQbPCfRcnuCErE7dlR3pdiXKjrMF231Y4F31o0T7LBS1rZ6rA==","signatures":[{"sig":"MEUCIQCUII+DoGd9EgBrCNKPHQtL5qzbNdkavEzKT/KOYumy0QIgQ9fEk6KrkQpYFfrX8pjH96Fp4ypcz7LxCl926YHHJM8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@tiangong-ai%2fcli@0.0.10","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":261516},"type":"module","engines":{"node":">=24 <25"},"gitHead":"e33f2a21d0c5d35cd04d5eafb668e4f2de2d0e0d","scripts":{"lint":"npm run lint:format && npm run lint:coverage-guards","test":"npm run build && node --import tsx --test test/*.test.ts","build":"tsc -p tsconfig.build.json","clean":"node --eval \"import('node:fs').then(({ rmSync }) => rmSync('dist', { recursive: true, force: true }))\"","format":"prettier --write \"{src,test,bin,scripts}/**/*.{ts,js,cjs,mjs}\" \"*.{md,json}\" \"docs/**/*.md\" \".docpact/**/*.yaml\" \".github/**/*.yml\"","prepack":"npm run build","typecheck":"tsc --noEmit","lint:format":"prettier --check \"{src,test,bin,scripts}/**/*.{ts,js,cjs,mjs}\" \"*.{md,json}\" \"docs/**/*.md\" \".docpact/**/*.yaml\" \".github/**/*.yml\"","prepush:gate":"npm run lint && npm run test:coverage && docpact validate-config --root . --strict && docpact lint --root . --worktree --mode enforce","test:coverage":"npm run build && node ./scripts/run-test-coverage.cjs","lint:coverage-guards":"node ./scripts/assert-no-coverage-ignore.cjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7d3aabf1-639b-4161-a81f-688bde4f0654"}},"repository":{"url":"git+https://github.com/tiangong-ai/cli.git","type":"git"},"_npmVersion":"11.12.1","description":"Tiangong AI command-line interface.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"sharp":"^0.34.5","pdf-lib":"^1.17.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","tsx":"^4.21.0","prettier":"^3.8.1","typescript":"^5.9.3","@types/node":"^24.12.2"},"_npmOperationalInternal":{"tmp":"tmp/cli_0.0.10_1778668566727_0.40282414623543206","host":"s3://npm-registry-packages-npm-production"}},"0.0.11":{"name":"@tiangong-ai/cli","version":"0.0.11","keywords":["tiangong","ai","cli","kb"],"license":"MIT","_id":"@tiangong-ai/cli@0.0.11","maintainers":[{"name":"linanenv","email":"linanenv@gmail.com"}],"homepage":"https://github.com/tiangong-ai/cli#readme","bugs":{"url":"https://github.com/tiangong-ai/cli/issues"},"bin":{"tiangong-ai":"bin/tiangong-ai.js"},"dist":{"shasum":"d082ae0d15261e990881b56ca15b1d57a3cc2351","tarball":"https://registry.npmjs.org/@tiangong-ai/cli/-/cli-0.0.11.tgz","fileCount":11,"integrity":"sha512-JUYK5qmYSPRETwyWgep696fRzdKn5B3pA1I3tkVG0QBT+/oTFQFsjeKB63GFteeOKo5botk9JhMPN/iKPmzT4Q==","signatures":[{"sig":"MEQCIHq0fPJYHDmFblP7VpycS39BKYJd1NkkMbyAdj9lLqywAiAnZUc8EoTeOfR7AZCPWVidZBocxQ2UrQnA5djiKq2DEw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@tiangong-ai%2fcli@0.0.11","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":266333},"type":"module","engines":{"node":">=24 <25"},"gitHead":"be56490b427d4e3308be9fb1bcc9e28422ccbc60","scripts":{"lint":"npm run lint:format && npm run lint:coverage-guards","test":"npm run build && node --import tsx --test test/*.test.ts","build":"tsc -p tsconfig.build.json","clean":"node --eval \"import('node:fs').then(({ rmSync }) => rmSync('dist', { recursive: true, force: true }))\"","format":"prettier --write \"{src,test,bin,scripts}/**/*.{ts,js,cjs,mjs}\" \"*.{md,json}\" \"docs/**/*.md\" \".docpact/**/*.yaml\" \".github/**/*.yml\"","prepack":"npm run build","typecheck":"tsc --noEmit","lint:format":"prettier --check \"{src,test,bin,scripts}/**/*.{ts,js,cjs,mjs}\" \"*.{md,json}\" \"docs/**/*.md\" \".docpact/**/*.yaml\" \".github/**/*.yml\"","prepush:gate":"npm run lint && npm run test:coverage && docpact validate-config --root . --strict && docpact lint --root . --worktree --mode enforce","test:coverage":"npm run build && node ./scripts/run-test-coverage.cjs","lint:coverage-guards":"node ./scripts/assert-no-coverage-ignore.cjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7d3aabf1-639b-4161-a81f-688bde4f0654"}},"repository":{"url":"git+https://github.com/tiangong-ai/cli.git","type":"git"},"_npmVersion":"11.12.1","description":"Tiangong AI command-line interface.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"sharp":"^0.34.5","pdf-lib":"^1.17.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","tsx":"^4.21.0","prettier":"^3.8.1","typescript":"^5.9.3","@types/node":"^24.12.2"},"_npmOperationalInternal":{"tmp":"tmp/cli_0.0.11_1778822808185_0.5883104992282029","host":"s3://npm-registry-packages-npm-production"}},"0.0.12":{"name":"@tiangong-ai/cli","version":"0.0.12","keywords":["tiangong","ai","cli","kb"],"license":"MIT","_id":"@tiangong-ai/cli@0.0.12","maintainers":[{"name":"linanenv","email":"linanenv@gmail.com"}],"homepage":"https://github.com/tiangong-ai/cli#readme","bugs":{"url":"https://github.com/tiangong-ai/cli/issues"},"bin":{"tiangong-ai":"bin/tiangong-ai.js"},"dist":{"shasum":"678f55164f65e2ea107e1abd89d7d8b9b3a25e0f","tarball":"https://registry.npmjs.org/@tiangong-ai/cli/-/cli-0.0.12.tgz","fileCount":11,"integrity":"sha512-3Sgu7N7b+6v5zRCeUiOMvp7zj5AmD6VN7WIDT+1+1OibybDARkFJGU5D9t31oZPwZY7v3yQfnrRCEv/zE/ENkw==","signatures":[{"sig":"MEQCIBNG2iW8oscNBEkYJT6Trppvy9fZ79vXiJqeqDLTE6MAAiAG/eqa413LbBjIjF960WmMCqJJCezEvXksH2CRzIJeaA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@tiangong-ai%2fcli@0.0.12","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":266333},"type":"module","engines":{"node":">=24 <25"},"gitHead":"d56d2633c2d69354d2cc787fe241459d887f22b9","scripts":{"lint":"npm run lint:format && npm run lint:coverage-guards","test":"npm run build && node --import tsx --test test/*.test.ts","build":"tsc -p tsconfig.build.json","clean":"node --eval \"import('node:fs').then(({ rmSync }) => rmSync('dist', { recursive: true, force: true }))\"","format":"prettier --write \"{src,test,bin,scripts}/**/*.{ts,js,cjs,mjs}\" \"*.{md,json}\" \"docs/**/*.md\" \".docpact/**/*.yaml\" \".github/**/*.yml\"","prepack":"npm run build","typecheck":"tsc --noEmit","lint:format":"prettier --check \"{src,test,bin,scripts}/**/*.{ts,js,cjs,mjs}\" \"*.{md,json}\" \"docs/**/*.md\" \".docpact/**/*.yaml\" \".github/**/*.yml\"","prepush:gate":"npm run lint && npm run test:coverage && docpact validate-config --root . --strict && docpact lint --root . --worktree --mode enforce","test:coverage":"npm run build && node ./scripts/run-test-coverage.cjs","lint:coverage-guards":"node ./scripts/assert-no-coverage-ignore.cjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7d3aabf1-639b-4161-a81f-688bde4f0654"}},"repository":{"url":"git+https://github.com/tiangong-ai/cli.git","type":"git"},"_npmVersion":"11.12.1","description":"Tiangong AI command-line interface.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"sharp":"^0.34.5","pdf-lib":"^1.17.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","tsx":"^4.21.0","prettier":"^3.8.1","typescript":"^5.9.3","@types/node":"^24.12.2"},"_npmOperationalInternal":{"tmp":"tmp/cli_0.0.12_1778936698722_0.7059176899204662","host":"s3://npm-registry-packages-npm-production"}},"0.0.13":{"name":"@tiangong-ai/cli","version":"0.0.13","keywords":["tiangong","ai","cli","kb"],"license":"MIT","_id":"@tiangong-ai/cli@0.0.13","maintainers":[{"name":"linanenv","email":"linanenv@gmail.com"}],"homepage":"https://github.com/tiangong-ai/cli#readme","bugs":{"url":"https://github.com/tiangong-ai/cli/issues"},"bin":{"tiangong-ai":"bin/tiangong-ai.js"},"dist":{"shasum":"a779b7cc9586201c2123dbefb68d3708864f87f1","tarball":"https://registry.npmjs.org/@tiangong-ai/cli/-/cli-0.0.13.tgz","fileCount":11,"integrity":"sha512-qf3c4U/e3n3wPdXFfLw/rQAJGBNtnjLwGWpr54QEKGEW9oaMg+ZAZKy3Ic/Hl3sgDGOVZ44ZnNEHzu1XVkrbjw==","signatures":[{"sig":"MEQCIBR7MTeQ2uSA0dWaVhunrsgHf7FjMGpxMCWcE1Tv9UKkAiAbvE+RJfR26uFW1a5M4jrLUFsk7nBUURLp+/x27uO/Zw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@tiangong-ai%2fcli@0.0.13","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":268083},"type":"module","engines":{"node":">=24 <25"},"gitHead":"6a05f20d5e167b770fce1aa3286a7dbdd2e1cd0d","scripts":{"lint":"npm run lint:format && npm run lint:coverage-guards","test":"npm run build && node --import tsx --test test/*.test.ts","build":"tsc -p tsconfig.build.json","clean":"node --eval \"import('node:fs').then(({ rmSync }) => rmSync('dist', { recursive: true, force: true }))\"","format":"prettier --write \"{src,test,bin,scripts}/**/*.{ts,js,cjs,mjs}\" \"*.{md,json}\" \"docs/**/*.md\" \".docpact/**/*.yaml\" \".github/**/*.yml\"","prepack":"npm run build","typecheck":"tsc --noEmit","lint:format":"prettier --check \"{src,test,bin,scripts}/**/*.{ts,js,cjs,mjs}\" \"*.{md,json}\" \"docs/**/*.md\" \".docpact/**/*.yaml\" \".github/**/*.yml\"","prepush:gate":"npm run lint && npm run test:coverage && docpact validate-config --root . --strict && docpact lint --root . --worktree --mode enforce","test:coverage":"npm run build && node ./scripts/run-test-coverage.cjs","lint:coverage-guards":"node ./scripts/assert-no-coverage-ignore.cjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7d3aabf1-639b-4161-a81f-688bde4f0654"}},"repository":{"url":"git+https://github.com/tiangong-ai/cli.git","type":"git"},"_npmVersion":"11.12.1","description":"Tiangong AI command-line interface.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"sharp":"^0.34.5","pdf-lib":"^1.17.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","tsx":"^4.21.0","prettier":"^3.8.1","typescript":"^5.9.3","@types/node":"^24.12.2"},"_npmOperationalInternal":{"tmp":"tmp/cli_0.0.13_1779167523567_0.5576318646806833","host":"s3://npm-registry-packages-npm-production"}},"0.0.14":{"name":"@tiangong-ai/cli","version":"0.0.14","keywords":["tiangong","ai","cli","kb"],"license":"MIT","_id":"@tiangong-ai/cli@0.0.14","maintainers":[{"name":"linanenv","email":"linanenv@gmail.com"}],"homepage":"https://github.com/tiangong-ai/cli#readme","bugs":{"url":"https://github.com/tiangong-ai/cli/issues"},"bin":{"tiangong-ai":"bin/tiangong-ai.js"},"dist":{"shasum":"e7e2c2f36171484bb2a776ea0272173b104302a2","tarball":"https://registry.npmjs.org/@tiangong-ai/cli/-/cli-0.0.14.tgz","fileCount":68,"integrity":"sha512-Z2rGgj4pUsTJwqpu8zV0WfIIP9wICkTNSYk5nWVOGui/GUhQGH4iG54MK6PYO4vI8ZglVNQ7HSiUe3zseBbHDA==","signatures":[{"sig":"MEUCIQCvFeE9FEAplunTXggJC5gKLqEH0SO50lM7kc/6KjzXjAIgDaN4Fw9A7jUnwhXRuaUlEXc7IDKG+BW2HcD3NWyY5vM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@tiangong-ai%2fcli@0.0.14","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":345834},"type":"module","engines":{"node":">=24 <25"},"gitHead":"ae90d45670f1ca03f976cd7d2a83b1dedae7f702","scripts":{"lint":"npm run lint:format && npm run lint:coverage-guards","test":"npm run build && node --import tsx --test test/*.test.ts","build":"tsc -p tsconfig.build.json","clean":"node --eval \"import('node:fs').then(({ rmSync }) => rmSync('dist', { recursive: true, force: true }))\"","format":"prettier --write \"{src,test,bin,scripts}/**/*.{ts,js,cjs,mjs}\" \"*.{md,json}\" \"docs/**/*.md\" \".docpact/**/*.yaml\" \".github/**/*.yml\"","prepack":"npm run build","typecheck":"tsc --noEmit","lint:format":"prettier --check \"{src,test,bin,scripts}/**/*.{ts,js,cjs,mjs}\" \"*.{md,json}\" \"docs/**/*.md\" \".docpact/**/*.yaml\" \".github/**/*.yml\"","prepush:gate":"npm run lint && npm run test:coverage && docpact validate-config --root . --strict && docpact lint --root . --worktree --mode enforce","test:coverage":"npm run build && node ./scripts/run-test-coverage.cjs","lint:coverage-guards":"node ./scripts/assert-no-coverage-ignore.cjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7d3aabf1-639b-4161-a81f-688bde4f0654"}},"repository":{"url":"git+https://github.com/tiangong-ai/cli.git","type":"git"},"_npmVersion":"11.12.1","description":"Tiangong AI command-line interface.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"sharp":"^0.34.5","pdf-lib":"^1.17.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","tsx":"^4.21.0","prettier":"^3.8.1","typescript":"^5.9.3","@types/node":"^24.12.2"},"_npmOperationalInternal":{"tmp":"tmp/cli_0.0.14_1779865690391_0.6723498834589181","host":"s3://npm-registry-packages-npm-production"}},"0.0.15":{"name":"@tiangong-ai/cli","version":"0.0.15","keywords":["tiangong","ai","cli","kb"],"license":"MIT","_id":"@tiangong-ai/cli@0.0.15","maintainers":[{"name":"linanenv","email":"linanenv@gmail.com"}],"homepage":"https://github.com/tiangong-ai/cli#readme","bugs":{"url":"https://github.com/tiangong-ai/cli/issues"},"bin":{"tiangong-ai":"bin/tiangong-ai.js"},"dist":{"shasum":"d9102f2c29af2fa60b2bada88576f4addc1cdd73","tarball":"https://registry.npmjs.org/@tiangong-ai/cli/-/cli-0.0.15.tgz","fileCount":68,"integrity":"sha512-amwxIzQ2Io+/0XzHb9aQvwuH8L0yGNLGgkqcNuod0uim8UOqPTqnS6fzxcaIRPcJ2s2rjW7hfTQTotSicXzMcA==","signatures":[{"sig":"MEUCIQCtGdbbAY0HpK3tJNofmMwkrr4rrd/Twd0fwZJRQCdWQwIgZWOTMNV8thEn6b3rD/KQiGaOuYxD5b2GghOwDoDLO7c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@tiangong-ai%2fcli@0.0.15","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":345851},"type":"module","engines":{"node":">=24 <25"},"gitHead":"8bd0ba63b906789761fc21f450f9979bd5e1b0b9","scripts":{"lint":"npm run lint:format && npm run lint:coverage-guards","test":"npm run build && node --import tsx --test test/*.test.ts","build":"tsc -p tsconfig.build.json","clean":"node --eval \"import('node:fs').then(({ rmSync }) => rmSync('dist', { recursive: true, force: true }))\"","format":"prettier --write \"{src,test,bin,scripts}/**/*.{ts,js,cjs,mjs}\" \"*.{md,json}\" \"docs/**/*.md\" \".docpact/**/*.yaml\" \".github/**/*.yml\"","prepack":"npm run clean && npm run build","typecheck":"tsc --noEmit","lint:format":"prettier --check \"{src,test,bin,scripts}/**/*.{ts,js,cjs,mjs}\" \"*.{md,json}\" \"docs/**/*.md\" \".docpact/**/*.yaml\" \".github/**/*.yml\"","prepush:gate":"npm run lint && npm run test:coverage && docpact validate-config --root . --strict && docpact lint --root . --worktree --mode enforce","test:coverage":"npm run build && node ./scripts/run-test-coverage.cjs","lint:coverage-guards":"node ./scripts/assert-no-coverage-ignore.cjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7d3aabf1-639b-4161-a81f-688bde4f0654"}},"repository":{"url":"git+https://github.com/tiangong-ai/cli.git","type":"git"},"_npmVersion":"11.12.1","description":"Tiangong AI command-line interface.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"sharp":"^0.34.5","pdf-lib":"^1.17.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","tsx":"^4.21.0","prettier":"^3.8.1","typescript":"^5.9.3","@types/node":"^24.12.2"},"_npmOperationalInternal":{"tmp":"tmp/cli_0.0.15_1779865777141_0.002871158544280661","host":"s3://npm-registry-packages-npm-production"}},"0.0.16":{"name":"@tiangong-ai/cli","version":"0.0.16","keywords":["tiangong","ai","cli","kb"],"license":"MIT","_id":"@tiangong-ai/cli@0.0.16","maintainers":[{"name":"linanenv","email":"linanenv@gmail.com"}],"homepage":"https://github.com/tiangong-ai/cli#readme","bugs":{"url":"https://github.com/tiangong-ai/cli/issues"},"bin":{"tiangong-ai":"bin/tiangong-ai.js"},"dist":{"shasum":"4f850bafcbed16d283661555368e6b1437393fe6","tarball":"https://registry.npmjs.org/@tiangong-ai/cli/-/cli-0.0.16.tgz","fileCount":71,"integrity":"sha512-bdOzKfP9MZSdx/nuw/ik8YsagLjD/xZtoWCni/1GWV0p6xyy5EAhmtQPxJqMvPWxPwz0cYKcHpbsB3C7PJUwAg==","signatures":[{"sig":"MEUCIQD8Zd04n4HZPe0BPqWqGp7I+I1DTUrCcLqvlByTyHlUvwIgTxM+CwzTrpXzE4YkNHYPiNDrw31fnn1fSC/4tVjpGBw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@tiangong-ai%2fcli@0.0.16","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":361012},"type":"module","engines":{"node":">=24 <25"},"gitHead":"09572bea5a50c07a5a8e023a2b7e180cbd037d75","scripts":{"lint":"npm run lint:format && npm run lint:coverage-guards","test":"npm run build && node --import tsx --test test/*.test.ts","build":"tsc -p tsconfig.build.json","clean":"node --eval \"import('node:fs').then(({ rmSync }) => rmSync('dist', { recursive: true, force: true }))\"","format":"prettier --write \"{src,test,bin,scripts}/**/*.{ts,js,cjs,mjs}\" \"*.{md,json}\" \"docs/**/*.md\" \".docpact/**/*.yaml\" \".github/**/*.yml\"","prepack":"npm run clean && npm run build","typecheck":"tsc --noEmit","lint:format":"prettier --check \"{src,test,bin,scripts}/**/*.{ts,js,cjs,mjs}\" \"*.{md,json}\" \"docs/**/*.md\" \".docpact/**/*.yaml\" \".github/**/*.yml\"","prepush:gate":"npm run lint && npm run test:coverage && docpact validate-config --root . --strict && docpact lint --root . --worktree --mode enforce","test:coverage":"npm run build && node ./scripts/run-test-coverage.cjs","lint:coverage-guards":"node ./scripts/assert-no-coverage-ignore.cjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7d3aabf1-639b-4161-a81f-688bde4f0654"}},"repository":{"url":"git+https://github.com/tiangong-ai/cli.git","type":"git"},"_npmVersion":"11.12.1","description":"Tiangong AI command-line interface.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"sharp":"^0.34.5","pdf-lib":"^1.17.1","@aws-sdk/client-s3":"^3.1056.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","tsx":"^4.21.0","prettier":"^3.8.1","typescript":"^5.9.3","@types/node":"^24.12.2"},"_npmOperationalInternal":{"tmp":"tmp/cli_0.0.16_1780042147948_0.04033812738373044","host":"s3://npm-registry-packages-npm-production"}},"0.0.17":{"name":"@tiangong-ai/cli","version":"0.0.17","description":"Tiangong AI command-line interface.","repository":{"type":"git","url":"git+https://github.com/tiangong-ai/cli.git"},"homepage":"https://github.com/tiangong-ai/cli#readme","bugs":{"url":"https://github.com/tiangong-ai/cli/issues"},"type":"module","bin":{"tiangong-ai":"bin/tiangong-ai.js"},"publishConfig":{"access":"public"},"scripts":{"build":"tsc -p tsconfig.build.json","prepack":"npm run clean && npm run build","typecheck":"tsc --noEmit","test":"npm run build && node --import tsx --test test/*.test.ts","test:coverage":"npm run build && node ./scripts/run-test-coverage.cjs","prepush:gate":"npm run lint && npm run test:coverage && docpact validate-config --root . --strict && docpact lint --root . --worktree --mode enforce","lint":"npm run lint:format && npm run lint:coverage-guards","lint:format":"prettier --check \"{src,test,bin,scripts}/**/*.{ts,js,cjs,mjs}\" \"*.{md,json}\" \"docs/**/*.md\" \".docpact/**/*.yaml\" \".github/**/*.yml\"","lint:coverage-guards":"node ./scripts/assert-no-coverage-ignore.cjs","format":"prettier --write \"{src,test,bin,scripts}/**/*.{ts,js,cjs,mjs}\" \"*.{md,json}\" \"docs/**/*.md\" \".docpact/**/*.yaml\" \".github/**/*.yml\"","clean":"node --eval \"import('node:fs').then(({ rmSync }) => rmSync('dist', { recursive: true, force: true }))\""},"engines":{"node":">=24 <25"},"keywords":["tiangong","ai","cli","kb"],"license":"MIT","devDependencies":{"@types/node":"^24.12.2","c8":"^11.0.0","prettier":"^3.8.1","tsx":"^4.21.0","typescript":"^5.9.3"},"dependencies":{"@aws-sdk/client-s3":"^3.1056.0","pdf-lib":"^1.17.1","sharp":"^0.34.5"},"gitHead":"8ca14bfbc4c052064ccc931af0b43bfab486ae7f","_id":"@tiangong-ai/cli@0.0.17","_nodeVersion":"24.16.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-O8xsDaoikZmMJ36xNgABZwjAXs9qVYDkQGr1aCF61mPWLyUR+FI4xlYaS9V7zovSgnTtXZv3qJLTV+jFN92xAA==","shasum":"cf2795de66e28265192a88d74ea0307de8d2bb7d","tarball":"https://registry.npmjs.org/@tiangong-ai/cli/-/cli-0.0.17.tgz","fileCount":71,"unpackedSize":361215,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@tiangong-ai%2fcli@0.0.17","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCNZZ1/uCbe+tk153IeviUX6Z+KoHtFm0/zjcey7dOK5QIhAI7NU0INBmtG5VqvW3lL3SM7ua5smLwZtOkx12uRgZpA"}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7d3aabf1-639b-4161-a81f-688bde4f0654"}},"directories":{},"maintainers":[{"name":"linanenv","email":"linanenv@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/cli_0.0.17_1780312711303_0.835606469575265"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-08T10:25:39.240Z","modified":"2026-06-01T11:18:31.871Z","0.0.1":"2026-05-08T10:25:39.439Z","0.0.3":"2026-05-08T10:42:00.072Z","0.0.4":"2026-05-10T14:22:19.716Z","0.0.6":"2026-05-10T15:03:19.512Z","0.0.7":"2026-05-12T10:58:19.135Z","0.0.8":"2026-05-13T06:00:12.906Z","0.0.9":"2026-05-13T06:21:29.135Z","0.0.10":"2026-05-13T10:36:06.873Z","0.0.11":"2026-05-15T05:26:48.347Z","0.0.12":"2026-05-16T13:04:58.873Z","0.0.13":"2026-05-19T05:12:03.726Z","0.0.14":"2026-05-27T07:08:10.566Z","0.0.15":"2026-05-27T07:09:37.346Z","0.0.16":"2026-05-29T08:09:08.102Z","0.0.17":"2026-06-01T11:18:31.499Z"},"bugs":{"url":"https://github.com/tiangong-ai/cli/issues"},"license":"MIT","homepage":"https://github.com/tiangong-ai/cli#readme","keywords":["tiangong","ai","cli","kb"],"repository":{"type":"git","url":"git+https://github.com/tiangong-ai/cli.git"},"description":"Tiangong AI command-line interface.","maintainers":[{"name":"linanenv","email":"linanenv@gmail.com"}],"readme":"---\ndocType: repo-readme\nscope: repo\nstatus: current\nauthoritative: true\nowner: cli\nlanguage: en\nwhenToUse: \"When installing, running, or validating the Tiangong AI CLI.\"\nwhenToUpdate: \"When package name, Node baseline, command examples, environment variables, or validation commands change.\"\ncheckPaths:\n  - README.md\n  - package.json\n  - bin/**\n  - src/**\nlastReviewedAt: 2026-06-01\nlastReviewedCommit: 09572bea5a50c07a5a8e023a2b7e180cbd037d75\n---\n\n# Tiangong AI CLI\n\nPackage: `@tiangong-ai/cli` Executable: `tiangong-ai` Node: `>=24`\n\n## Run From This Repository\n\n```bash\nnpm install\nnpm run build\nnode ./bin/tiangong-ai.js --help\n```\n\nUse Node `24.x`; this package declares `>=24 <25` and includes `.nvmrc` for\ncompatible version managers.\n\n## KB Ingest\n\nRequired environment:\n\n```bash\nTIANGONG_AI_API_KEY=\nTIANGONG_KB_DEFAULT_COLLECTION_NAME=\n```\n\nThe KB API server defaults to `https://thuenv.tiangong.world:7300` with path\nprefix `/api/v1/kb`.\n\nRun a resumable sliding-window ingest for one file or a folder:\n\n```bash\ntiangong-ai kb ingest bulk /path/to/document.pdf \\\n  --collection-path /course/thu_humanities \\\n  --poll-interval 30\n```\n\nRun a larger folder ingest:\n\n```bash\ntiangong-ai kb ingest bulk /path/to/folder \\\n  --collection-path /course/thu_humanities \\\n  --window-size 100 \\\n  --top-up-max 50 \\\n  --upload-concurrency 4 \\\n  --poll-interval 30\n```\n\nBulk scan a large folder and emit a structural JSON summary:\n\n```bash\ntiangong-ai kb ingest bulk scan /path/to/folder --json\n```\n\nDry-run a layered metadata map against a folder and collection schema:\n\n```bash\ntiangong-ai kb ingest bulk dry-run /path/to/folder \\\n  --collection-path /course/thu_humanities \\\n  --metadata-map metadata-map.yaml \\\n  --json\n```\n\nThe same dry-run is also available through the skill-facing alias:\n\n```bash\ntiangong-ai kb ingest metadata dry-run /path/to/folder \\\n  --collection-path /course/thu_humanities \\\n  --metadata-map metadata-map.yaml \\\n  --json\n```\n\nRun a resumable sliding-window bulk ingest with metadata:\n\n```bash\ntiangong-ai kb ingest bulk /path/to/folder \\\n  --collection-path /course/thu_humanities \\\n  --metadata-map metadata-map.yaml \\\n  --window-size 100 \\\n  --top-up-max 50 \\\n  --upload-concurrency 4 \\\n  --poll-interval 30\n```\n\n`tiangong-ai kb ingest bulk run /path/to/folder` is accepted as an explicit\nalias for wrappers that want a verb before the folder path.\n\nBulk ingest uses SQLite as its checkpoint source. By default, job files are\nstored under the OS app-data directory:\n\n- macOS: `~/Library/Application Support/tiangong-ai/kb-ingest/jobs/<job-id>.sqlite`\n- Linux: `~/.local/share/tiangong-ai/kb-ingest/jobs/<job-id>.sqlite`\n- Windows: `%APPDATA%/tiangong-ai/kb-ingest/jobs/<job-id>.sqlite`\n\nUse `--state /path/to/job.sqlite` to override the checkpoint path. Bulk ingest\ndoes not impose a client-side polling limit by default, so it can keep topping\nup the sliding upload window until all rows complete. Use `--max-polls <n>` only\nwhen a wrapper or operator needs a bounded run.\n\nBulk ingest scans and fingerprints files first, then lazily creates derived\nfiles only when a row enters the active upload window. `.docx` files larger than\n10MiB are uploaded through 300dpi-normalized ingest copies; smaller `.docx`\nfiles upload directly unless they are empty. Oversized PDFs are split into the\nfewest uploadable PDF parts when they enter the window, and the generated part\nrows are written back to SQLite so resume can reuse them. Derived files stay\nunder `.tiangong-kb-ingest-derived` by default, and that directory is excluded\nfrom future bulk scans. Upload metadata remains the user/business metadata\nproduced by the metadata map.\n\nManage bulk jobs:\n\n```bash\ntiangong-ai kb ingest jobs\ntiangong-ai kb ingest status <job-id>\ntiangong-ai kb ingest resume <job-id>\ntiangong-ai kb ingest export <job-id> --format csv\n```\n\nList uploadable collections:\n\n```bash\ntiangong-ai kb collections list --capability upload\n```\n\nResolve a collection and include the effective metadata schema:\n\n```bash\ntiangong-ai kb collections schema --collection-path /course/thu_humanities --json\n```\n\nCheck document status:\n\n```bash\ntiangong-ai kb ingest status <document-id>\n```\n\nRead course fulltext from the processed S3 bucket:\n\n```bash\ntiangong-ai kb course fulltext \\\n  --document-id 000125ed-c4d9-4fe3-9380-000000000000 \\\n  --tags thu_humanities\n```\n\nThe command lists exactly one `.txt` object under\n`s3://tiangong/processed_docs/course_pickle/<tags>_pickle/<document-id>/` and\nprints its content. Override the location with `--bucket`, `--prefix`, or the\n`TIANGONG_COURSE_FULLTEXT_S3_BUCKET` and\n`TIANGONG_COURSE_FULLTEXT_S3_PREFIX` environment variables. AWS credentials and\nregion are resolved by the AWS SDK, including `AWS_ACCESS_KEY_ID`,\n`AWS_SECRET_ACCESS_KEY`, `AWS_SESSION_TOKEN`, `AWS_PROFILE`, `AWS_REGION`, and\n`AWS_DEFAULT_REGION`.\n\n## Research Search\n\nForward research-oriented search requests to SCI, report, and patent edge\nsearch sources:\n\n```bash\ntiangong-ai research search \\\n  --input ./sci-request.json \\\n  --sources all \\\n  --dry-run \\\n  --json\n```\n\nRequired environment:\n\n```bash\nTIANGONG_AI_APIKEY=\n```\n\n`--input <file>` reads a JSON object and forwards it unchanged as the POST body\nto every selected source. Use `--dry-run` to emit the exact request plan,\nincluding method, URL, masked headers, input path, body, and timeout\nmilliseconds, without remote calls.\nFor quick calls, `--query <text>` builds a minimal body with `query` plus\noptional `--top-k`, `--ext-k`, and `--get-meta`.\n\n`--sources` accepts concrete IDs and presets. `default` expands to `sci`; `all`\nexpands to `sci,report,patent`. Use source-specific endpoint or credential\noverrides with `--sci-url`, `--report-url`, `--patent-url`,\n`--sci-api-key`, `--report-api-key`, and `--patent-api-key`. When source URLs\nare not provided, `--api-base-url` or `TIANGONG_AI_API_BASE_URL` may be a\nSupabase project root, `/functions/v1`, or `/rest/v1`; the CLI derives the\nFunctions base URL and appends `sci_search`, `report_search`, or\n`patent_search`.\n\n## Education Search\n\nForward education-oriented search requests to course, education, and textbook\nedge search sources:\n\n```bash\ntiangong-ai education search \\\n  --query \"activated sludge process principles\" \\\n  --sources all \\\n  --json\n```\n\n`--input <file>` forwards the JSON request body unchanged. `--query <text>`\nbuilds a minimal body with `query` plus optional `--top-k` and `--ext-k`.\n`--sources default` expands to `course`; `--sources all` expands to\n`course,edu,textbook`. `course` search can use a scoped bearer token through\n`--bearer-token` or `TIANGONG_EDUCATION_BEARER_TOKEN`; all education sources can\nuse `--api-key` or `TIANGONG_AI_APIKEY`. When source URLs are not provided,\n`--api-base-url` or `TIANGONG_AI_API_BASE_URL` may be a Supabase project root,\n`/functions/v1`, or `/rest/v1`; the CLI derives the Functions base URL and\nappends `course_search`, `edu_search`, or `textbook_search`.\n\n## Boundary\n\nThe CLI is a thin local client. It sends bearer-token requests to the Tiangong\nKB ingest API and records SQLite checkpoints for batch recovery. Ingest uses\nthe bulk runner and releases sliding-window capacity only when document status\nis `completed` and both `opensearchIndexed` and `pineconeIndexed` are true. If\nthe status API does not return those index flags yet, the file remains in\n`waiting_for_index_flags`. The backend owns authorization, collection\npermissions, duplicate detection, NAS raw writes, parse queueing, and status\ntransitions.\n\n## Validation\n\n```bash\nnpm run lint\nnpm test\nnpm run test:coverage\ndocpact validate-config --root . --strict\n```\n\n## Release\n\nPublishing is handled by GitHub Actions in `.github/workflows/publish.yml`.\nPush a `v*` tag that matches `package.json` version. The workflow publishes\n`@tiangong-ai/cli` to npm through npm Trusted Publishing after lint, tests,\ncoverage, version availability, and a package dry run pass.\n","readmeFilename":"README.md"}