@nocobase/plugin-ai 2.1.0-beta.33 → 2.1.0-beta.34

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -6,10 +6,12 @@ keywords: "nb env remove,NocoBase CLI,delete environment,remove config"
6
6
 
7
7
  # nb env remove
8
8
 
9
- Remove a configured env. This command only deletes CLI env configuration; use [`nb app down`](../app/down.md) to clean up local apps, containers, and storage.
9
+ Remove a configured env. This command only removes the saved CLI env config and does not clean local app directories, containers, or storage data; use [`nb app down`](../app/down.md) when you need to clean local runtime resources.
10
10
 
11
11
  If the removed env is also the current env, the CLI automatically selects a new current env from the remaining envs. If no envs remain, the current env is cleared.
12
12
 
13
+ By default, the command asks for confirmation. To skip confirmation, pass `--yes`. In non-interactive mode, `--yes` is required before the env can be removed.
14
+
13
15
  ## Usage
14
16
 
15
17
  ```bash
@@ -21,14 +23,14 @@ nb env remove <name> [flags]
21
23
  | Parameter | Type | Description |
22
24
  | --- | --- | --- |
23
25
  | `<name>` | string | Configured environment name to remove |
24
- | `--force`, `-f` | boolean | Skip confirmation and delete directly |
26
+ | `--yes`, `-y` | boolean | Skip confirmation and remove the saved CLI env config |
25
27
  | `--verbose` | boolean | Show detailed progress |
26
28
 
27
29
  ## Examples
28
30
 
29
31
  ```bash
30
32
  nb env remove staging
31
- nb env remove staging -f
33
+ nb env remove staging --yes
32
34
  ```
33
35
 
34
36
  ## Related Commands
@@ -8,22 +8,22 @@
8
8
  */
9
9
 
10
10
  module.exports = {
11
- "@nocobase/plugin-acl": "2.1.0-beta.33",
12
- "@nocobase/plugin-workflow": "2.1.0-beta.33",
13
- "@nocobase/client": "2.1.0-beta.33",
14
- "@nocobase/utils": "2.1.0-beta.33",
15
- "@nocobase/client-v2": "2.1.0-beta.33",
16
- "@nocobase/database": "2.1.0-beta.33",
17
- "@nocobase/server": "2.1.0-beta.33",
18
- "@nocobase/plugin-file-manager": "2.1.0-beta.33",
19
- "@nocobase/actions": "2.1.0-beta.33",
20
- "@nocobase/ai": "2.1.0-beta.33",
11
+ "@nocobase/plugin-acl": "2.1.0-beta.34",
12
+ "@nocobase/plugin-workflow": "2.1.0-beta.34",
13
+ "@nocobase/client": "2.1.0-beta.34",
14
+ "@nocobase/utils": "2.1.0-beta.34",
15
+ "@nocobase/client-v2": "2.1.0-beta.34",
16
+ "@nocobase/database": "2.1.0-beta.34",
17
+ "@nocobase/server": "2.1.0-beta.34",
18
+ "@nocobase/plugin-file-manager": "2.1.0-beta.34",
19
+ "@nocobase/actions": "2.1.0-beta.34",
20
+ "@nocobase/ai": "2.1.0-beta.34",
21
21
  "langchain": "1.2.24",
22
22
  "react": "18.2.0",
23
23
  "antd": "5.24.2",
24
24
  "@formily/core": "2.3.7",
25
25
  "@formily/react": "2.3.7",
26
- "@nocobase/flow-engine": "2.1.0-beta.33",
26
+ "@nocobase/flow-engine": "2.1.0-beta.34",
27
27
  "@ant-design/icons": "5.6.1",
28
28
  "@formily/antd-v5": "1.2.3",
29
29
  "react-router-dom": "6.30.1",
@@ -33,20 +33,20 @@ module.exports = {
33
33
  "lodash": "4.18.1",
34
34
  "@langchain/core": "1.1.24",
35
35
  "@langchain/langgraph": "1.1.4",
36
+ "@nocobase/cache": "2.1.0-beta.34",
36
37
  "@langchain/anthropic": "1.3.17",
37
38
  "axios": "1.7.7",
38
39
  "@langchain/openai": "1.2.7",
39
40
  "@langchain/deepseek": "1.0.11",
40
41
  "@langchain/google-genai": "2.1.18",
41
42
  "@langchain/ollama": "1.2.2",
42
- "@nocobase/acl": "2.1.0-beta.33",
43
- "@nocobase/cache": "2.1.0-beta.33",
44
- "@nocobase/resourcer": "2.1.0-beta.33",
43
+ "@nocobase/acl": "2.1.0-beta.34",
44
+ "@nocobase/resourcer": "2.1.0-beta.34",
45
45
  "@emotion/css": "11.13.0",
46
46
  "dayjs": "1.11.13",
47
47
  "react-i18next": "11.18.6",
48
- "@nocobase/plugin-data-source-manager": "2.1.0-beta.33",
48
+ "@nocobase/plugin-data-source-manager": "2.1.0-beta.34",
49
49
  "@langchain/langgraph-checkpoint": "1.0.0",
50
- "@nocobase/data-source-manager": "2.1.0-beta.33",
50
+ "@nocobase/data-source-manager": "2.1.0-beta.34",
51
51
  "react-dom": "18.2.0"
52
52
  };
@@ -1 +1 @@
1
- {"name":"@langchain/xai","version":"1.3.3","description":"xAI integration for LangChain.js","author":"LangChain","license":"MIT","type":"module","engines":{"node":">=20"},"repository":{"type":"git","url":"git@github.com:langchain-ai/langchainjs.git"},"homepage":"https://github.com/langchain-ai/langchainjs/tree/main/libs/langchain-xai/","dependencies":{"@langchain/openai":"1.2.7"},"peerDependencies":{"@langchain/core":"^1.0.0"},"devDependencies":{"@tsconfig/recommended":"^1.0.3","@types/uuid":"^9","@vitest/coverage-v8":"^3.2.4","dotenv":"^16.3.1","dpdm":"^3.14.0","eslint":"^9.34.0","prettier":"^3.5.0","typescript":"~5.8.3","vitest":"^3.2.4","zod":"^3.25.76","@langchain/core":"^1.1.21","@langchain/eslint":"0.1.1","@langchain/openai":"^1.2.7","@langchain/tsconfig":"0.0.1","@langchain/standard-tests":"0.0.23"},"publishConfig":{"access":"public"},"main":"./dist/index.cjs","types":"./dist/index.d.cts","exports":{".":{"input":"./src/index.ts","require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"},"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./package.json":"./package.json"},"files":["dist/","CHANGELOG.md","README.md","LICENSE"],"module":"./dist/index.js","scripts":{"build":"turbo build:compile --filter @langchain/xai --output-logs new-only","build:compile":"tsdown","lint:eslint":"eslint --cache src/","lint:dpdm":"dpdm --skip-dynamic-imports circular --exit-code circular:1 --no-warning --no-tree src/*.ts src/**/*.ts","lint":"pnpm lint:eslint && pnpm lint:dpdm","lint:fix":"pnpm lint:eslint --fix && pnpm lint:dpdm","clean":"rm -rf .turbo dist/","test":"vitest run","test:watch":"vitest --watch","test:int":"vitest --mode int","test:standard:unit":"vitest --mode standard-unit","test:standard:int":"vitest --mode standard-int","test:standard":"pnpm test:standard:unit && pnpm test:standard:int","format":"prettier --write \"src\"","format:check":"prettier --check \"src\"","typegen":"pnpm run typegen:profiles","typegen:profiles":"pnpm --filter @langchain/model-profiles make --config profiles.toml"},"_lastModified":"2026-05-15T15:54:57.807Z"}
1
+ {"name":"@langchain/xai","version":"1.3.3","description":"xAI integration for LangChain.js","author":"LangChain","license":"MIT","type":"module","engines":{"node":">=20"},"repository":{"type":"git","url":"git@github.com:langchain-ai/langchainjs.git"},"homepage":"https://github.com/langchain-ai/langchainjs/tree/main/libs/langchain-xai/","dependencies":{"@langchain/openai":"1.2.7"},"peerDependencies":{"@langchain/core":"^1.0.0"},"devDependencies":{"@tsconfig/recommended":"^1.0.3","@types/uuid":"^9","@vitest/coverage-v8":"^3.2.4","dotenv":"^16.3.1","dpdm":"^3.14.0","eslint":"^9.34.0","prettier":"^3.5.0","typescript":"~5.8.3","vitest":"^3.2.4","zod":"^3.25.76","@langchain/core":"^1.1.21","@langchain/eslint":"0.1.1","@langchain/openai":"^1.2.7","@langchain/tsconfig":"0.0.1","@langchain/standard-tests":"0.0.23"},"publishConfig":{"access":"public"},"main":"./dist/index.cjs","types":"./dist/index.d.cts","exports":{".":{"input":"./src/index.ts","require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"},"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./package.json":"./package.json"},"files":["dist/","CHANGELOG.md","README.md","LICENSE"],"module":"./dist/index.js","scripts":{"build":"turbo build:compile --filter @langchain/xai --output-logs new-only","build:compile":"tsdown","lint:eslint":"eslint --cache src/","lint:dpdm":"dpdm --skip-dynamic-imports circular --exit-code circular:1 --no-warning --no-tree src/*.ts src/**/*.ts","lint":"pnpm lint:eslint && pnpm lint:dpdm","lint:fix":"pnpm lint:eslint --fix && pnpm lint:dpdm","clean":"rm -rf .turbo dist/","test":"vitest run","test:watch":"vitest --watch","test:int":"vitest --mode int","test:standard:unit":"vitest --mode standard-unit","test:standard:int":"vitest --mode standard-int","test:standard":"pnpm test:standard:unit && pnpm test:standard:int","format":"prettier --write \"src\"","format:check":"prettier --check \"src\"","typegen":"pnpm run typegen:profiles","typegen:profiles":"pnpm --filter @langchain/model-profiles make --config profiles.toml"},"_lastModified":"2026-05-18T17:30:35.331Z"}
@@ -1 +1 @@
1
- {"name":"fs-extra","version":"9.1.0","description":"fs-extra contains methods that aren't included in the vanilla Node.js fs package. Such as recursive mkdir, copy, and remove.","engines":{"node":">=10"},"homepage":"https://github.com/jprichardson/node-fs-extra","repository":{"type":"git","url":"https://github.com/jprichardson/node-fs-extra"},"keywords":["fs","file","file system","copy","directory","extra","mkdirp","mkdir","mkdirs","recursive","json","read","write","extra","delete","remove","touch","create","text","output","move","promise"],"author":"JP Richardson <jprichardson@gmail.com>","license":"MIT","dependencies":{"at-least-node":"^1.0.0","graceful-fs":"^4.2.0","jsonfile":"^6.0.1","universalify":"^2.0.0"},"devDependencies":{"coveralls":"^3.0.0","klaw":"^2.1.1","klaw-sync":"^3.0.2","minimist":"^1.1.1","mocha":"^5.0.5","nyc":"^15.0.0","proxyquire":"^2.0.1","read-dir-files":"^0.1.1","standard":"^14.1.0"},"main":"./lib/index.js","files":["lib/","!lib/**/__tests__/"],"scripts":{"full-ci":"npm run lint && npm run coverage","coverage":"nyc -r lcovonly npm run unit","coveralls":"coveralls < coverage/lcov.info","lint":"standard","test-find":"find ./lib/**/__tests__ -name *.test.js | xargs mocha","test":"npm run lint && npm run unit","unit":"node test.js"},"_lastModified":"2026-05-15T15:54:57.963Z"}
1
+ {"name":"fs-extra","version":"9.1.0","description":"fs-extra contains methods that aren't included in the vanilla Node.js fs package. Such as recursive mkdir, copy, and remove.","engines":{"node":">=10"},"homepage":"https://github.com/jprichardson/node-fs-extra","repository":{"type":"git","url":"https://github.com/jprichardson/node-fs-extra"},"keywords":["fs","file","file system","copy","directory","extra","mkdirp","mkdir","mkdirs","recursive","json","read","write","extra","delete","remove","touch","create","text","output","move","promise"],"author":"JP Richardson <jprichardson@gmail.com>","license":"MIT","dependencies":{"at-least-node":"^1.0.0","graceful-fs":"^4.2.0","jsonfile":"^6.0.1","universalify":"^2.0.0"},"devDependencies":{"coveralls":"^3.0.0","klaw":"^2.1.1","klaw-sync":"^3.0.2","minimist":"^1.1.1","mocha":"^5.0.5","nyc":"^15.0.0","proxyquire":"^2.0.1","read-dir-files":"^0.1.1","standard":"^14.1.0"},"main":"./lib/index.js","files":["lib/","!lib/**/__tests__/"],"scripts":{"full-ci":"npm run lint && npm run coverage","coverage":"nyc -r lcovonly npm run unit","coveralls":"coveralls < coverage/lcov.info","lint":"standard","test-find":"find ./lib/**/__tests__ -name *.test.js | xargs mocha","test":"npm run lint && npm run unit","unit":"node test.js"},"_lastModified":"2026-05-18T17:30:35.486Z"}
@@ -1 +1 @@
1
- {"name":"jsonrepair","version":"3.13.1","description":"Repair broken JSON documents","repository":{"type":"git","url":"https://github.com/josdejong/jsonrepair.git"},"type":"module","main":"lib/cjs/index.js","module":"lib/esm/index.js","browser":"lib/umd/jsonrepair.min.js","types":"lib/types/index.d.ts","sideEffects":false,"exports":{".":{"import":"./lib/esm/index.js","require":"./lib/cjs/index.js","types":"./lib/types/index.d.ts"},"./stream":{"import":"./lib/esm/stream.js","require":"./lib/cjs/stream.js","types":"./lib/types/stream.d.ts"}},"keywords":["simple","json","repair","fix","invalid","stream","streaming"],"bin":{"jsonrepair":"./bin/cli.js"},"scripts":{"test":"vitest watch src","test:it":"vitest run src","build":"npm-run-all build:**","build:clean":"del-cli lib","build:esm":"babel src --out-dir lib/esm --extensions \".ts\" --source-maps --config-file ./babel.config.json","build:cjs":"babel src --out-dir lib/cjs --extensions \".ts\" --source-maps --config-file ./babel-cjs.config.json && cpy tools/cjs lib/cjs --flat","build:umd":"rollup lib/esm/index.js --format umd --name JSONRepair --sourcemap --output.file lib/umd/jsonrepair.js && cpy tools/cjs/package.json lib/umd --flat","build:umd:min":"uglifyjs --compress --mangle --source-map --comments --output lib/umd/jsonrepair.min.js -- lib/umd/jsonrepair.js","build:types":"tsc --project tsconfig-types.json","build:validate":"vitest run test-lib","lint":"biome check","format":"biome check --write","benchmark":"npm run build:esm && node tools/benchmark/run.mjs","build-and-test":"npm run lint && npm run test:it && npm run build","release":"npm-run-all release:**","release:build-and-test":"npm run build-and-test","release:version":"standard-version","release:push":"git push && git push --tag","release:publish":"npm publish","release-dry-run":"npm run build-and-test && standard-version --dry-run","prepare":"husky"},"files":["README.md","LICENSE.md","lib"],"author":"Jos de Jong","license":"ISC","devDependencies":{"@babel/cli":"7.28.3","@babel/core":"7.28.4","@babel/plugin-transform-typescript":"7.28.0","@babel/preset-env":"7.28.3","@babel/preset-typescript":"7.27.1","@biomejs/biome":"2.2.4","@commitlint/cli":"19.8.1","@commitlint/config-conventional":"19.8.1","@types/node":"24.5.2","cpy-cli":"6.0.0","del-cli":"7.0.0","husky":"9.1.7","npm-run-all":"4.1.5","rollup":"4.51.0","standard-version":"9.5.0","tinybench":"5.0.1","ts-node":"10.9.2","typescript":"5.9.2","uglify-js":"3.19.3","vitest":"3.2.4"},"_lastModified":"2026-05-15T15:55:04.228Z"}
1
+ {"name":"jsonrepair","version":"3.13.1","description":"Repair broken JSON documents","repository":{"type":"git","url":"https://github.com/josdejong/jsonrepair.git"},"type":"module","main":"lib/cjs/index.js","module":"lib/esm/index.js","browser":"lib/umd/jsonrepair.min.js","types":"lib/types/index.d.ts","sideEffects":false,"exports":{".":{"import":"./lib/esm/index.js","require":"./lib/cjs/index.js","types":"./lib/types/index.d.ts"},"./stream":{"import":"./lib/esm/stream.js","require":"./lib/cjs/stream.js","types":"./lib/types/stream.d.ts"}},"keywords":["simple","json","repair","fix","invalid","stream","streaming"],"bin":{"jsonrepair":"./bin/cli.js"},"scripts":{"test":"vitest watch src","test:it":"vitest run src","build":"npm-run-all build:**","build:clean":"del-cli lib","build:esm":"babel src --out-dir lib/esm --extensions \".ts\" --source-maps --config-file ./babel.config.json","build:cjs":"babel src --out-dir lib/cjs --extensions \".ts\" --source-maps --config-file ./babel-cjs.config.json && cpy tools/cjs lib/cjs --flat","build:umd":"rollup lib/esm/index.js --format umd --name JSONRepair --sourcemap --output.file lib/umd/jsonrepair.js && cpy tools/cjs/package.json lib/umd --flat","build:umd:min":"uglifyjs --compress --mangle --source-map --comments --output lib/umd/jsonrepair.min.js -- lib/umd/jsonrepair.js","build:types":"tsc --project tsconfig-types.json","build:validate":"vitest run test-lib","lint":"biome check","format":"biome check --write","benchmark":"npm run build:esm && node tools/benchmark/run.mjs","build-and-test":"npm run lint && npm run test:it && npm run build","release":"npm-run-all release:**","release:build-and-test":"npm run build-and-test","release:version":"standard-version","release:push":"git push && git push --tag","release:publish":"npm publish","release-dry-run":"npm run build-and-test && standard-version --dry-run","prepare":"husky"},"files":["README.md","LICENSE.md","lib"],"author":"Jos de Jong","license":"ISC","devDependencies":{"@babel/cli":"7.28.3","@babel/core":"7.28.4","@babel/plugin-transform-typescript":"7.28.0","@babel/preset-env":"7.28.3","@babel/preset-typescript":"7.27.1","@biomejs/biome":"2.2.4","@commitlint/cli":"19.8.1","@commitlint/config-conventional":"19.8.1","@types/node":"24.5.2","cpy-cli":"6.0.0","del-cli":"7.0.0","husky":"9.1.7","npm-run-all":"4.1.5","rollup":"4.51.0","standard-version":"9.5.0","tinybench":"5.0.1","ts-node":"10.9.2","typescript":"5.9.2","uglify-js":"3.19.3","vitest":"3.2.4"},"_lastModified":"2026-05-18T17:30:41.649Z"}
@@ -1 +1 @@
1
- {"name":"just-bash","version":"2.14.3","description":"A simulated bash environment with virtual filesystem","repository":{"type":"git","url":"git+https://github.com/vercel-labs/just-bash.git"},"homepage":"https://github.com/vercel-labs/just-bash#readme","bugs":{"url":"https://github.com/vercel-labs/just-bash/issues"},"type":"module","main":"dist/bundle/index.js","types":"dist/index.d.ts","exports":{".":{"browser":"./dist/bundle/browser.js","require":{"types":"./dist/index.d.cts","default":"./dist/bundle/index.cjs"},"import":{"types":"./dist/index.d.ts","default":"./dist/bundle/index.js"}},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/bundle/browser.js"}},"files":["dist/bundle/","dist/bin/","dist/*.d.ts","dist/*.d.cts","dist/ast/*.d.ts","dist/commands/**/*.d.ts","dist/fs/**/*.d.ts","dist/interpreter/**/*.d.ts","dist/network/**/*.d.ts","dist/parser/*.d.ts","dist/sandbox/*.d.ts","dist/utils/*.d.ts","vendor/cpython-emscripten/","README.md","CHANGELOG.md","dist/AGENTS.md"],"bin":{"just-bash":"./dist/bin/just-bash.js","just-bash-shell":"./dist/bin/shell/shell.js"},"publishConfig":{"access":"public"},"keywords":[],"author":"Malte and Claude","license":"Apache-2.0","devDependencies":{"@types/ini":"^4.1.1","@types/node":"^25.0.3","@types/papaparse":"^5.5.2","@types/sprintf-js":"^1.1.4","@types/sql.js":"^1.4.9","@types/turndown":"^5.0.6","@vitest/coverage-v8":"^4.0.18","esbuild":"^0.27.2","fast-check":"^3.23.2","knip":"^5.41.1","typescript":"^5.9.3","vitest":"^4.0.16"},"dependencies":{"seek-bzip":"^2.0.0","diff":"^8.0.2","fast-xml-parser":"5.3.3","file-type":"^21.2.0","ini":"^6.0.0","minimatch":"^10.1.1","modern-tar":"^0.7.3","papaparse":"^5.5.3","quickjs-emscripten":"^0.32.0","re2js":"^1.2.1","smol-toml":"^1.6.0","sprintf-js":"^1.1.3","sql.js":"^1.13.0","turndown":"^7.2.2","yaml":"^2.8.2"},"optionalDependencies":{"@mongodb-js/zstd":"^7.0.0","node-liblzma":"^2.0.3"},"scripts":{"build":"rm -rf dist && tsc && pnpm build:lib && pnpm build:lib:cjs && pnpm build:browser && pnpm build:cli && pnpm build:shell && pnpm build:worker && pnpm build:clean && cp dist/index.d.ts dist/index.d.cts && sed '1,/^-->/d' AGENTS.npm.md > dist/AGENTS.md","build:clean":"find dist -name '*.test.js' -delete && find dist -name '*.test.d.ts' -delete","build:worker":"esbuild src/commands/python3/worker.ts --bundle --platform=node --format=esm --outfile=src/commands/python3/worker.js --external:../../../vendor/cpython-emscripten/* && cp src/commands/python3/worker.js dist/commands/python3/worker.js && mkdir -p dist/bin/chunks && cp src/commands/python3/worker.js dist/bin/chunks/worker.js && mkdir -p dist/bundle/chunks && cp src/commands/python3/worker.js dist/bundle/chunks/worker.js && esbuild src/commands/js-exec/js-exec-worker.ts --bundle --platform=node --format=esm --outfile=src/commands/js-exec/js-exec-worker.js --external:quickjs-emscripten && cp src/commands/js-exec/js-exec-worker.js dist/commands/js-exec/js-exec-worker.js && cp src/commands/js-exec/js-exec-worker.js dist/bin/chunks/js-exec-worker.js && cp src/commands/js-exec/js-exec-worker.js dist/bundle/chunks/js-exec-worker.js","build:lib":"esbuild dist/index.js --bundle --splitting --platform=node --format=esm --minify --outdir=dist/bundle --chunk-names=chunks/[name]-[hash] --external:diff --external:minimatch --external:sprintf-js --external:turndown --external:sql.js --external:quickjs-emscripten --external:@mongodb-js/zstd --external:node-liblzma --external:seek-bzip","build:lib:cjs":"esbuild dist/index.js --bundle --platform=node --format=cjs --minify --outfile=dist/bundle/index.cjs --external:diff --external:minimatch --external:sprintf-js --external:turndown --external:sql.js --external:quickjs-emscripten --external:@mongodb-js/zstd --external:node-liblzma --external:seek-bzip","build:browser":"esbuild dist/browser.js --bundle --platform=browser --format=esm --minify --outfile=dist/bundle/browser.js --external:diff --external:minimatch --external:sprintf-js --external:turndown --external:node:zlib --external:@mongodb-js/zstd --external:node-liblzma --external:seek-bzip --define:__BROWSER__=true --alias:node:dns=./src/shims/browser-unsupported.js","build:cli":"esbuild dist/cli/just-bash.js --bundle --splitting --platform=node --format=esm --minify --outdir=dist/bin --entry-names=[name] --chunk-names=chunks/[name]-[hash] --banner:js='#!/usr/bin/env node' --external:sql.js --external:quickjs-emscripten --external:@mongodb-js/zstd --external:node-liblzma --external:seek-bzip","build:shell":"esbuild dist/cli/shell.js --bundle --splitting --platform=node --format=esm --minify --outdir=dist/bin/shell --entry-names=[name] --chunk-names=chunks/[name]-[hash] --banner:js='#!/usr/bin/env node' --external:sql.js --external:quickjs-emscripten --external:@mongodb-js/zstd --external:node-liblzma --external:seek-bzip","validate":"pnpm lint && pnpm knip && pnpm typecheck && pnpm build && pnpm check:worker-sync && pnpm test:run && pnpm test:wasm && pnpm test:dist","typecheck":"tsc --noEmit","lint":"pnpm lint:banned","check:worker-sync":"node scripts/check-worker-sync.js","lint:banned":"node scripts/check-banned-patterns.js","lint:fix":"pnpm --workspace-root lint:fix","knip":"knip","test":"vitest","test:run":"vitest run --exclude src/security/fuzzing/ --exclude src/commands/python3/ --exclude src/commands/sqlite3/ --exclude src/commands/js-exec/ --exclude src/agent-examples/python-scripting.test.ts","test:dist":"vitest run src/cli/just-bash.bundle.test.ts","test:unit":"vitest run --config vitest.unit.config.ts","test:wasm":"vitest run --config vitest.wasm.config.ts","test:comparison":"vitest run --config vitest.comparison.config.ts","test:comparison:record":"RECORD_FIXTURES=1 vitest run --config vitest.comparison.config.ts","test:coverage":"vitest run --coverage","test:coverage:unit":"vitest run --config vitest.unit.config.ts --coverage","test:fuzz":"vitest run src/security/fuzzing/","test:fuzz:long":"FUZZ_RUNS=10000 vitest run src/security/fuzzing/","shell":"npx tsx src/cli/shell.ts","dev:exec":"npx tsx src/cli/exec.ts"},"_lastModified":"2026-05-15T15:55:04.008Z"}
1
+ {"name":"just-bash","version":"2.14.3","description":"A simulated bash environment with virtual filesystem","repository":{"type":"git","url":"git+https://github.com/vercel-labs/just-bash.git"},"homepage":"https://github.com/vercel-labs/just-bash#readme","bugs":{"url":"https://github.com/vercel-labs/just-bash/issues"},"type":"module","main":"dist/bundle/index.js","types":"dist/index.d.ts","exports":{".":{"browser":"./dist/bundle/browser.js","require":{"types":"./dist/index.d.cts","default":"./dist/bundle/index.cjs"},"import":{"types":"./dist/index.d.ts","default":"./dist/bundle/index.js"}},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/bundle/browser.js"}},"files":["dist/bundle/","dist/bin/","dist/*.d.ts","dist/*.d.cts","dist/ast/*.d.ts","dist/commands/**/*.d.ts","dist/fs/**/*.d.ts","dist/interpreter/**/*.d.ts","dist/network/**/*.d.ts","dist/parser/*.d.ts","dist/sandbox/*.d.ts","dist/utils/*.d.ts","vendor/cpython-emscripten/","README.md","CHANGELOG.md","dist/AGENTS.md"],"bin":{"just-bash":"./dist/bin/just-bash.js","just-bash-shell":"./dist/bin/shell/shell.js"},"publishConfig":{"access":"public"},"keywords":[],"author":"Malte and Claude","license":"Apache-2.0","devDependencies":{"@types/ini":"^4.1.1","@types/node":"^25.0.3","@types/papaparse":"^5.5.2","@types/sprintf-js":"^1.1.4","@types/sql.js":"^1.4.9","@types/turndown":"^5.0.6","@vitest/coverage-v8":"^4.0.18","esbuild":"^0.27.2","fast-check":"^3.23.2","knip":"^5.41.1","typescript":"^5.9.3","vitest":"^4.0.16"},"dependencies":{"seek-bzip":"^2.0.0","diff":"^8.0.2","fast-xml-parser":"5.3.3","file-type":"^21.2.0","ini":"^6.0.0","minimatch":"^10.1.1","modern-tar":"^0.7.3","papaparse":"^5.5.3","quickjs-emscripten":"^0.32.0","re2js":"^1.2.1","smol-toml":"^1.6.0","sprintf-js":"^1.1.3","sql.js":"^1.13.0","turndown":"^7.2.2","yaml":"^2.8.2"},"optionalDependencies":{"@mongodb-js/zstd":"^7.0.0","node-liblzma":"^2.0.3"},"scripts":{"build":"rm -rf dist && tsc && pnpm build:lib && pnpm build:lib:cjs && pnpm build:browser && pnpm build:cli && pnpm build:shell && pnpm build:worker && pnpm build:clean && cp dist/index.d.ts dist/index.d.cts && sed '1,/^-->/d' AGENTS.npm.md > dist/AGENTS.md","build:clean":"find dist -name '*.test.js' -delete && find dist -name '*.test.d.ts' -delete","build:worker":"esbuild src/commands/python3/worker.ts --bundle --platform=node --format=esm --outfile=src/commands/python3/worker.js --external:../../../vendor/cpython-emscripten/* && cp src/commands/python3/worker.js dist/commands/python3/worker.js && mkdir -p dist/bin/chunks && cp src/commands/python3/worker.js dist/bin/chunks/worker.js && mkdir -p dist/bundle/chunks && cp src/commands/python3/worker.js dist/bundle/chunks/worker.js && esbuild src/commands/js-exec/js-exec-worker.ts --bundle --platform=node --format=esm --outfile=src/commands/js-exec/js-exec-worker.js --external:quickjs-emscripten && cp src/commands/js-exec/js-exec-worker.js dist/commands/js-exec/js-exec-worker.js && cp src/commands/js-exec/js-exec-worker.js dist/bin/chunks/js-exec-worker.js && cp src/commands/js-exec/js-exec-worker.js dist/bundle/chunks/js-exec-worker.js","build:lib":"esbuild dist/index.js --bundle --splitting --platform=node --format=esm --minify --outdir=dist/bundle --chunk-names=chunks/[name]-[hash] --external:diff --external:minimatch --external:sprintf-js --external:turndown --external:sql.js --external:quickjs-emscripten --external:@mongodb-js/zstd --external:node-liblzma --external:seek-bzip","build:lib:cjs":"esbuild dist/index.js --bundle --platform=node --format=cjs --minify --outfile=dist/bundle/index.cjs --external:diff --external:minimatch --external:sprintf-js --external:turndown --external:sql.js --external:quickjs-emscripten --external:@mongodb-js/zstd --external:node-liblzma --external:seek-bzip","build:browser":"esbuild dist/browser.js --bundle --platform=browser --format=esm --minify --outfile=dist/bundle/browser.js --external:diff --external:minimatch --external:sprintf-js --external:turndown --external:node:zlib --external:@mongodb-js/zstd --external:node-liblzma --external:seek-bzip --define:__BROWSER__=true --alias:node:dns=./src/shims/browser-unsupported.js","build:cli":"esbuild dist/cli/just-bash.js --bundle --splitting --platform=node --format=esm --minify --outdir=dist/bin --entry-names=[name] --chunk-names=chunks/[name]-[hash] --banner:js='#!/usr/bin/env node' --external:sql.js --external:quickjs-emscripten --external:@mongodb-js/zstd --external:node-liblzma --external:seek-bzip","build:shell":"esbuild dist/cli/shell.js --bundle --splitting --platform=node --format=esm --minify --outdir=dist/bin/shell --entry-names=[name] --chunk-names=chunks/[name]-[hash] --banner:js='#!/usr/bin/env node' --external:sql.js --external:quickjs-emscripten --external:@mongodb-js/zstd --external:node-liblzma --external:seek-bzip","validate":"pnpm lint && pnpm knip && pnpm typecheck && pnpm build && pnpm check:worker-sync && pnpm test:run && pnpm test:wasm && pnpm test:dist","typecheck":"tsc --noEmit","lint":"pnpm lint:banned","check:worker-sync":"node scripts/check-worker-sync.js","lint:banned":"node scripts/check-banned-patterns.js","lint:fix":"pnpm --workspace-root lint:fix","knip":"knip","test":"vitest","test:run":"vitest run --exclude src/security/fuzzing/ --exclude src/commands/python3/ --exclude src/commands/sqlite3/ --exclude src/commands/js-exec/ --exclude src/agent-examples/python-scripting.test.ts","test:dist":"vitest run src/cli/just-bash.bundle.test.ts","test:unit":"vitest run --config vitest.unit.config.ts","test:wasm":"vitest run --config vitest.wasm.config.ts","test:comparison":"vitest run --config vitest.comparison.config.ts","test:comparison:record":"RECORD_FIXTURES=1 vitest run --config vitest.comparison.config.ts","test:coverage":"vitest run --coverage","test:coverage:unit":"vitest run --config vitest.unit.config.ts --coverage","test:fuzz":"vitest run src/security/fuzzing/","test:fuzz:long":"FUZZ_RUNS=10000 vitest run src/security/fuzzing/","shell":"npx tsx src/cli/shell.ts","dev:exec":"npx tsx src/cli/exec.ts"},"_lastModified":"2026-05-18T17:30:41.431Z"}
@@ -1 +1 @@
1
- {"name":"nodejs-snowflake","collaborators":["Utkarsh Srivastava <utkarsh@sagacious.dev>"],"description":"Generate time sortable 64 bits unique ids for distributed systems (inspired from twitter snowflake)","version":"2.0.1","license":"Apache 2.0","repository":{"type":"git","url":"https://github.com/utkarsh-pro/nodejs-snowflake.git"},"files":["nodejs_snowflake_bg.wasm","nodejs_snowflake.js","nodejs_snowflake.d.ts"],"main":"nodejs_snowflake.js","types":"nodejs_snowflake.d.ts","_lastModified":"2026-05-15T15:54:53.233Z"}
1
+ {"name":"nodejs-snowflake","collaborators":["Utkarsh Srivastava <utkarsh@sagacious.dev>"],"description":"Generate time sortable 64 bits unique ids for distributed systems (inspired from twitter snowflake)","version":"2.0.1","license":"Apache 2.0","repository":{"type":"git","url":"https://github.com/utkarsh-pro/nodejs-snowflake.git"},"files":["nodejs_snowflake_bg.wasm","nodejs_snowflake.js","nodejs_snowflake.d.ts"],"main":"nodejs_snowflake.js","types":"nodejs_snowflake.d.ts","_lastModified":"2026-05-18T17:30:30.442Z"}
@@ -1 +1 @@
1
- {"name":"openai","version":"6.22.0","description":"The official TypeScript library for the OpenAI API","author":"OpenAI <support@openai.com>","types":"./index.d.ts","main":"./index.js","type":"commonjs","repository":"github:openai/openai-node","license":"Apache-2.0","packageManager":"yarn@1.22.22","files":["**/*"],"private":false,"publishConfig":{"access":"public"},"scripts":{"test":"./scripts/test","build":"./scripts/build","format":"./scripts/format","tsn":"ts-node -r tsconfig-paths/register","lint":"./scripts/lint","fix":"./scripts/format"},"dependencies":{},"bin":{"openai":"bin/cli"},"exports":{".":{"require":{"types":"./index.d.ts","default":"./index.js"},"types":"./index.d.mts","default":"./index.mjs"},"./_vendor/*.mjs":{"default":"./_vendor/*.mjs"},"./_vendor/*.js":{"default":"./_vendor/*.js"},"./_vendor/*":{"import":"./_vendor/*.mjs","require":"./_vendor/*.js"},"./api-promise":{"import":"./api-promise.mjs","require":"./api-promise.js"},"./api-promise.js":{"default":"./api-promise.js"},"./api-promise.mjs":{"default":"./api-promise.mjs"},"./azure":{"import":"./azure.mjs","require":"./azure.js"},"./azure.js":{"default":"./azure.js"},"./azure.mjs":{"default":"./azure.mjs"},"./beta/*.mjs":{"default":"./beta/*.mjs"},"./beta/*.js":{"default":"./beta/*.js"},"./beta/*":{"import":"./beta/*.mjs","require":"./beta/*.js"},"./client":{"import":"./client.mjs","require":"./client.js"},"./client.js":{"default":"./client.js"},"./client.mjs":{"default":"./client.mjs"},"./core/*.mjs":{"default":"./core/*.mjs"},"./core/*.js":{"default":"./core/*.js"},"./core/*":{"import":"./core/*.mjs","require":"./core/*.js"},"./error":{"import":"./error.mjs","require":"./error.js"},"./error.js":{"default":"./error.js"},"./error.mjs":{"default":"./error.mjs"},"./helpers/*.mjs":{"default":"./helpers/*.mjs"},"./helpers/*.js":{"default":"./helpers/*.js"},"./helpers/*":{"import":"./helpers/*.mjs","require":"./helpers/*.js"},"./index":{"import":"./index.mjs","require":"./index.js"},"./index.js":{"default":"./index.js"},"./index.mjs":{"default":"./index.mjs"},"./lib/*.mjs":{"default":"./lib/*.mjs"},"./lib/*.js":{"default":"./lib/*.js"},"./lib/*":{"import":"./lib/*.mjs","require":"./lib/*.js"},"./pagination":{"import":"./pagination.mjs","require":"./pagination.js"},"./pagination.js":{"default":"./pagination.js"},"./pagination.mjs":{"default":"./pagination.mjs"},"./realtime/*.mjs":{"default":"./realtime/*.mjs"},"./realtime/*.js":{"default":"./realtime/*.js"},"./realtime/*":{"import":"./realtime/*.mjs","require":"./realtime/*.js"},"./resource":{"import":"./resource.mjs","require":"./resource.js"},"./resource.js":{"default":"./resource.js"},"./resource.mjs":{"default":"./resource.mjs"},"./resources/*.mjs":{"default":"./resources/*.mjs"},"./resources/*.js":{"default":"./resources/*.js"},"./resources/*":{"import":"./resources/*.mjs","require":"./resources/*.js"},"./resources":{"import":"./resources.mjs","require":"./resources.js"},"./resources.js":{"default":"./resources.js"},"./resources.mjs":{"default":"./resources.mjs"},"./streaming":{"import":"./streaming.mjs","require":"./streaming.js"},"./streaming.js":{"default":"./streaming.js"},"./streaming.mjs":{"default":"./streaming.mjs"},"./uploads":{"import":"./uploads.mjs","require":"./uploads.js"},"./uploads.js":{"default":"./uploads.js"},"./uploads.mjs":{"default":"./uploads.mjs"},"./version":{"import":"./version.mjs","require":"./version.js"},"./version.js":{"default":"./version.js"},"./version.mjs":{"default":"./version.mjs"}},"peerDependencies":{"ws":"^8.18.0","zod":"^3.25 || ^4.0"},"peerDependenciesMeta":{"ws":{"optional":true},"zod":{"optional":true}},"_lastModified":"2026-05-15T15:54:55.524Z"}
1
+ {"name":"openai","version":"6.22.0","description":"The official TypeScript library for the OpenAI API","author":"OpenAI <support@openai.com>","types":"./index.d.ts","main":"./index.js","type":"commonjs","repository":"github:openai/openai-node","license":"Apache-2.0","packageManager":"yarn@1.22.22","files":["**/*"],"private":false,"publishConfig":{"access":"public"},"scripts":{"test":"./scripts/test","build":"./scripts/build","format":"./scripts/format","tsn":"ts-node -r tsconfig-paths/register","lint":"./scripts/lint","fix":"./scripts/format"},"dependencies":{},"bin":{"openai":"bin/cli"},"exports":{".":{"require":{"types":"./index.d.ts","default":"./index.js"},"types":"./index.d.mts","default":"./index.mjs"},"./_vendor/*.mjs":{"default":"./_vendor/*.mjs"},"./_vendor/*.js":{"default":"./_vendor/*.js"},"./_vendor/*":{"import":"./_vendor/*.mjs","require":"./_vendor/*.js"},"./api-promise":{"import":"./api-promise.mjs","require":"./api-promise.js"},"./api-promise.js":{"default":"./api-promise.js"},"./api-promise.mjs":{"default":"./api-promise.mjs"},"./azure":{"import":"./azure.mjs","require":"./azure.js"},"./azure.js":{"default":"./azure.js"},"./azure.mjs":{"default":"./azure.mjs"},"./beta/*.mjs":{"default":"./beta/*.mjs"},"./beta/*.js":{"default":"./beta/*.js"},"./beta/*":{"import":"./beta/*.mjs","require":"./beta/*.js"},"./client":{"import":"./client.mjs","require":"./client.js"},"./client.js":{"default":"./client.js"},"./client.mjs":{"default":"./client.mjs"},"./core/*.mjs":{"default":"./core/*.mjs"},"./core/*.js":{"default":"./core/*.js"},"./core/*":{"import":"./core/*.mjs","require":"./core/*.js"},"./error":{"import":"./error.mjs","require":"./error.js"},"./error.js":{"default":"./error.js"},"./error.mjs":{"default":"./error.mjs"},"./helpers/*.mjs":{"default":"./helpers/*.mjs"},"./helpers/*.js":{"default":"./helpers/*.js"},"./helpers/*":{"import":"./helpers/*.mjs","require":"./helpers/*.js"},"./index":{"import":"./index.mjs","require":"./index.js"},"./index.js":{"default":"./index.js"},"./index.mjs":{"default":"./index.mjs"},"./lib/*.mjs":{"default":"./lib/*.mjs"},"./lib/*.js":{"default":"./lib/*.js"},"./lib/*":{"import":"./lib/*.mjs","require":"./lib/*.js"},"./pagination":{"import":"./pagination.mjs","require":"./pagination.js"},"./pagination.js":{"default":"./pagination.js"},"./pagination.mjs":{"default":"./pagination.mjs"},"./realtime/*.mjs":{"default":"./realtime/*.mjs"},"./realtime/*.js":{"default":"./realtime/*.js"},"./realtime/*":{"import":"./realtime/*.mjs","require":"./realtime/*.js"},"./resource":{"import":"./resource.mjs","require":"./resource.js"},"./resource.js":{"default":"./resource.js"},"./resource.mjs":{"default":"./resource.mjs"},"./resources/*.mjs":{"default":"./resources/*.mjs"},"./resources/*.js":{"default":"./resources/*.js"},"./resources/*":{"import":"./resources/*.mjs","require":"./resources/*.js"},"./resources":{"import":"./resources.mjs","require":"./resources.js"},"./resources.js":{"default":"./resources.js"},"./resources.mjs":{"default":"./resources.mjs"},"./streaming":{"import":"./streaming.mjs","require":"./streaming.js"},"./streaming.js":{"default":"./streaming.js"},"./streaming.mjs":{"default":"./streaming.mjs"},"./uploads":{"import":"./uploads.mjs","require":"./uploads.js"},"./uploads.js":{"default":"./uploads.js"},"./uploads.mjs":{"default":"./uploads.mjs"},"./version":{"import":"./version.mjs","require":"./version.js"},"./version.js":{"default":"./version.js"},"./version.mjs":{"default":"./version.mjs"}},"peerDependencies":{"ws":"^8.18.0","zod":"^3.25 || ^4.0"},"peerDependenciesMeta":{"ws":{"optional":true},"zod":{"optional":true}},"_lastModified":"2026-05-18T17:30:32.975Z"}
@@ -1 +1 @@
1
- {"name":"zod","version":"4.3.5","type":"module","license":"MIT","author":"Colin McDonnell <zod@colinhacks.com>","description":"TypeScript-first schema declaration and validation library with static type inference","homepage":"https://zod.dev","llms":"https://zod.dev/llms.txt","llmsFull":"https://zod.dev/llms-full.txt","mcpServer":"https://mcp.inkeep.com/zod/mcp","funding":"https://github.com/sponsors/colinhacks","sideEffects":false,"files":["src","**/*.js","**/*.mjs","**/*.cjs","**/*.d.ts","**/*.d.mts","**/*.d.cts","**/package.json"],"keywords":["typescript","schema","validation","type","inference"],"main":"./index.cjs","types":"./index.d.cts","module":"./index.js","zshy":{"exports":{"./package.json":"./package.json",".":"./src/index.ts","./mini":"./src/mini/index.ts","./locales":"./src/locales/index.ts","./v3":"./src/v3/index.ts","./v4":"./src/v4/index.ts","./v4-mini":"./src/v4-mini/index.ts","./v4/mini":"./src/v4/mini/index.ts","./v4/core":"./src/v4/core/index.ts","./v4/locales":"./src/v4/locales/index.ts","./v4/locales/*":"./src/v4/locales/*"},"conditions":{"@zod/source":"src"}},"exports":{"./package.json":"./package.json",".":{"@zod/source":"./src/index.ts","types":"./index.d.cts","import":"./index.js","require":"./index.cjs"},"./mini":{"@zod/source":"./src/mini/index.ts","types":"./mini/index.d.cts","import":"./mini/index.js","require":"./mini/index.cjs"},"./locales":{"@zod/source":"./src/locales/index.ts","types":"./locales/index.d.cts","import":"./locales/index.js","require":"./locales/index.cjs"},"./v3":{"@zod/source":"./src/v3/index.ts","types":"./v3/index.d.cts","import":"./v3/index.js","require":"./v3/index.cjs"},"./v4":{"@zod/source":"./src/v4/index.ts","types":"./v4/index.d.cts","import":"./v4/index.js","require":"./v4/index.cjs"},"./v4-mini":{"@zod/source":"./src/v4-mini/index.ts","types":"./v4-mini/index.d.cts","import":"./v4-mini/index.js","require":"./v4-mini/index.cjs"},"./v4/mini":{"@zod/source":"./src/v4/mini/index.ts","types":"./v4/mini/index.d.cts","import":"./v4/mini/index.js","require":"./v4/mini/index.cjs"},"./v4/core":{"@zod/source":"./src/v4/core/index.ts","types":"./v4/core/index.d.cts","import":"./v4/core/index.js","require":"./v4/core/index.cjs"},"./v4/locales":{"@zod/source":"./src/v4/locales/index.ts","types":"./v4/locales/index.d.cts","import":"./v4/locales/index.js","require":"./v4/locales/index.cjs"},"./v4/locales/*":{"@zod/source":"./src/v4/locales/*","types":"./v4/locales/*","import":"./v4/locales/*","require":"./v4/locales/*"}},"repository":{"type":"git","url":"git+https://github.com/colinhacks/zod.git"},"bugs":{"url":"https://github.com/colinhacks/zod/issues"},"support":{"backing":{"npm-funding":true}},"scripts":{"clean":"git clean -xdf . -e node_modules","build":"zshy --project tsconfig.build.json","postbuild":"tsx ../../scripts/write-stub-package-jsons.ts && pnpm biome check --write .","test:watch":"pnpm vitest","test":"pnpm vitest run","prepublishOnly":"tsx ../../scripts/check-versions.ts"},"_lastModified":"2026-05-15T15:54:54.107Z"}
1
+ {"name":"zod","version":"4.3.5","type":"module","license":"MIT","author":"Colin McDonnell <zod@colinhacks.com>","description":"TypeScript-first schema declaration and validation library with static type inference","homepage":"https://zod.dev","llms":"https://zod.dev/llms.txt","llmsFull":"https://zod.dev/llms-full.txt","mcpServer":"https://mcp.inkeep.com/zod/mcp","funding":"https://github.com/sponsors/colinhacks","sideEffects":false,"files":["src","**/*.js","**/*.mjs","**/*.cjs","**/*.d.ts","**/*.d.mts","**/*.d.cts","**/package.json"],"keywords":["typescript","schema","validation","type","inference"],"main":"./index.cjs","types":"./index.d.cts","module":"./index.js","zshy":{"exports":{"./package.json":"./package.json",".":"./src/index.ts","./mini":"./src/mini/index.ts","./locales":"./src/locales/index.ts","./v3":"./src/v3/index.ts","./v4":"./src/v4/index.ts","./v4-mini":"./src/v4-mini/index.ts","./v4/mini":"./src/v4/mini/index.ts","./v4/core":"./src/v4/core/index.ts","./v4/locales":"./src/v4/locales/index.ts","./v4/locales/*":"./src/v4/locales/*"},"conditions":{"@zod/source":"src"}},"exports":{"./package.json":"./package.json",".":{"@zod/source":"./src/index.ts","types":"./index.d.cts","import":"./index.js","require":"./index.cjs"},"./mini":{"@zod/source":"./src/mini/index.ts","types":"./mini/index.d.cts","import":"./mini/index.js","require":"./mini/index.cjs"},"./locales":{"@zod/source":"./src/locales/index.ts","types":"./locales/index.d.cts","import":"./locales/index.js","require":"./locales/index.cjs"},"./v3":{"@zod/source":"./src/v3/index.ts","types":"./v3/index.d.cts","import":"./v3/index.js","require":"./v3/index.cjs"},"./v4":{"@zod/source":"./src/v4/index.ts","types":"./v4/index.d.cts","import":"./v4/index.js","require":"./v4/index.cjs"},"./v4-mini":{"@zod/source":"./src/v4-mini/index.ts","types":"./v4-mini/index.d.cts","import":"./v4-mini/index.js","require":"./v4-mini/index.cjs"},"./v4/mini":{"@zod/source":"./src/v4/mini/index.ts","types":"./v4/mini/index.d.cts","import":"./v4/mini/index.js","require":"./v4/mini/index.cjs"},"./v4/core":{"@zod/source":"./src/v4/core/index.ts","types":"./v4/core/index.d.cts","import":"./v4/core/index.js","require":"./v4/core/index.cjs"},"./v4/locales":{"@zod/source":"./src/v4/locales/index.ts","types":"./v4/locales/index.d.cts","import":"./v4/locales/index.js","require":"./v4/locales/index.cjs"},"./v4/locales/*":{"@zod/source":"./src/v4/locales/*","types":"./v4/locales/*","import":"./v4/locales/*","require":"./v4/locales/*"}},"repository":{"type":"git","url":"git+https://github.com/colinhacks/zod.git"},"bugs":{"url":"https://github.com/colinhacks/zod/issues"},"support":{"backing":{"npm-funding":true}},"scripts":{"clean":"git clean -xdf . -e node_modules","build":"zshy --project tsconfig.build.json","postbuild":"tsx ../../scripts/write-stub-package-jsons.ts && pnpm biome check --write .","test:watch":"pnpm vitest","test":"pnpm vitest run","prepublishOnly":"tsx ../../scripts/check-versions.ts"},"_lastModified":"2026-05-18T17:30:31.418Z"}
@@ -152,7 +152,6 @@ export declare class AIEmployee {
152
152
  shouldInterruptToolCall(tools: ToolsEntry): boolean;
153
153
  isAutoCall(tools: ToolsEntry): boolean;
154
154
  private formatMessages;
155
- private hydrateAttachmentsMeta;
156
155
  private getToolCallMap;
157
156
  private toInterruptActions;
158
157
  private getAIEmployeeTools;
@@ -1105,7 +1105,6 @@ If information is missing, clearly state it in the summary.</Important>`;
1105
1105
  var _a, _b;
1106
1106
  const formattedMessages = [];
1107
1107
  const workContextHandler = this.plugin.workContextHandler;
1108
- await this.hydrateAttachmentsMeta(messages);
1109
1108
  const truncate = (text, maxLen = 5e4) => {
1110
1109
  if (!text || text.length <= maxLen) return text;
1111
1110
  return text.slice(0, maxLen) + "\n...[truncated]";
@@ -1184,46 +1183,6 @@ If information is missing, clearly state it in the summary.</Important>`;
1184
1183
  }
1185
1184
  return formattedMessages;
1186
1185
  }
1187
- async hydrateAttachmentsMeta(messages) {
1188
- var _a, _b;
1189
- const attachmentIds = /* @__PURE__ */ new Set();
1190
- for (const message of messages) {
1191
- if (!((_a = message.attachments) == null ? void 0 : _a.length)) {
1192
- continue;
1193
- }
1194
- for (const attachment of message.attachments) {
1195
- if ((attachment == null ? void 0 : attachment.id) != null) {
1196
- attachmentIds.add(attachment.id);
1197
- }
1198
- }
1199
- }
1200
- if (!attachmentIds.size) {
1201
- return;
1202
- }
1203
- const files = await this.aiFilesModel.findAll({
1204
- where: {
1205
- id: {
1206
- [import_database.Op.in]: Array.from(attachmentIds)
1207
- }
1208
- },
1209
- attributes: ["id", "meta"]
1210
- });
1211
- const metaById = new Map(files.map((file) => [file.get("id"), file.get("meta")]));
1212
- for (const message of messages) {
1213
- if (!((_b = message.attachments) == null ? void 0 : _b.length)) {
1214
- continue;
1215
- }
1216
- for (const attachment of message.attachments) {
1217
- if ((attachment == null ? void 0 : attachment.id) == null) {
1218
- continue;
1219
- }
1220
- const meta = metaById.get(attachment.id);
1221
- if (meta !== void 0) {
1222
- attachment.meta = meta;
1223
- }
1224
- }
1225
- }
1226
- }
1227
1186
  async getToolCallMap(messageId) {
1228
1187
  const result = /* @__PURE__ */ new Map();
1229
1188
  const { toolCalls } = await this.aiMessagesRepo.findById(messageId);
@@ -6,6 +6,7 @@
6
6
  * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
7
  * For more information, please refer to: https://www.nocobase.com/agreement.
8
8
  */
9
+ import { Cache } from '@nocobase/cache';
9
10
  import PluginAIServer from '../plugin';
10
11
  import { DocumentLoaderLike, ParseableFile, ParsedDocumentResult } from './types';
11
12
  export type CachedDocumentLoaderOptions = {
@@ -18,17 +19,14 @@ export type CachedDocumentLoaderOptions = {
18
19
  export declare class CachedDocumentLoader {
19
20
  private readonly plugin;
20
21
  private readonly options;
22
+ protected _cache: Cache | null;
21
23
  constructor(plugin: PluginAIServer, options: CachedDocumentLoaderOptions);
22
- load(file: ParseableFile): Promise<ParsedDocumentResult>;
24
+ load(file: ParseableFile, options?: any): Promise<ParsedDocumentResult>;
23
25
  private loadFromCache;
24
26
  private persistParsedText;
25
- private updateSourceMeta;
26
- private resolveStorageName;
27
- private readTextFile;
28
27
  private documentsToText;
29
28
  private toDocumentsFromText;
30
- private getParseMeta;
31
29
  private toPlainObject;
32
- private get aiFilesRepo();
33
- private get fileManager();
30
+ private getCache;
31
+ private getCacheKey;
34
32
  }
@@ -43,24 +43,21 @@ var import_promises = __toESM(require("node:fs/promises"));
43
43
  var import_node_os = __toESM(require("node:os"));
44
44
  var import_node_path = __toESM(require("node:path"));
45
45
  var import_documents = require("@langchain/core/documents");
46
- var import_constants = require("./constants");
47
46
  var import_utils = require("./utils");
48
47
  class CachedDocumentLoader {
49
48
  constructor(plugin, options) {
50
49
  this.plugin = plugin;
51
50
  this.options = options;
52
51
  }
53
- async load(file) {
52
+ _cache = null;
53
+ async load(file, options) {
54
54
  const sourceFile = this.toPlainObject(file);
55
55
  if (!this.options.supports(sourceFile)) {
56
56
  return {
57
57
  supported: false,
58
58
  fromCache: false,
59
59
  text: "",
60
- documents: [],
61
- meta: {
62
- sourceFileId: sourceFile.id
63
- }
60
+ documents: []
64
61
  };
65
62
  }
66
63
  if (sourceFile.size === 0) {
@@ -68,132 +65,60 @@ class CachedDocumentLoader {
68
65
  supported: true,
69
66
  fromCache: false,
70
67
  text: "",
71
- documents: [],
72
- meta: {
73
- sourceFileId: sourceFile.id
74
- }
68
+ documents: []
75
69
  };
76
70
  }
77
71
  const cached = await this.loadFromCache(sourceFile);
78
72
  if (cached) {
79
73
  return cached;
80
74
  }
81
- try {
82
- const documents = await this.options.loader.load(sourceFile);
83
- const text = this.documentsToText(documents);
84
- const parsedFile = await this.persistParsedText(sourceFile, text);
85
- await this.updateSourceMeta(sourceFile, {
86
- status: "ready",
87
- parserVersion: this.options.parserVersion,
88
- parsedFileId: parsedFile.id,
89
- parsedFilename: parsedFile.filename,
90
- parsedMimetype: this.options.parsedMimetype,
91
- updatedAt: (/* @__PURE__ */ new Date()).toISOString()
92
- });
93
- return {
94
- supported: true,
95
- fromCache: false,
96
- text,
97
- documents,
98
- meta: {
99
- sourceFileId: sourceFile.id,
100
- parsedFileId: parsedFile.id
101
- }
102
- };
103
- } catch (error) {
104
- await this.updateSourceMeta(sourceFile, {
105
- status: "failed",
106
- parserVersion: this.options.parserVersion,
107
- updatedAt: (/* @__PURE__ */ new Date()).toISOString(),
108
- error: (error == null ? void 0 : error.message) ?? String(error)
109
- });
110
- throw error;
111
- }
75
+ const documents = await this.options.loader.load(sourceFile, options);
76
+ const text = this.documentsToText(documents);
77
+ await this.persistParsedText(sourceFile, text);
78
+ return {
79
+ supported: true,
80
+ fromCache: false,
81
+ text,
82
+ documents
83
+ };
112
84
  }
113
85
  async loadFromCache(sourceFile) {
114
- const meta = this.getParseMeta(sourceFile.meta);
115
- if (!meta || meta.status !== "ready" || meta.parserVersion !== this.options.parserVersion || !meta.parsedFileId) {
86
+ const cacheKey = this.getCacheKey(sourceFile);
87
+ if (!cacheKey) {
116
88
  return null;
117
89
  }
118
- const parsedModel = await this.aiFilesRepo.findById(meta.parsedFileId);
119
- if (!parsedModel) {
90
+ const cache = await this.getCache();
91
+ const filePath = await cache.get(cacheKey);
92
+ if (!filePath) {
93
+ return null;
94
+ }
95
+ try {
96
+ const stat = await import_promises.default.stat(filePath);
97
+ if (!stat.isFile()) {
98
+ return null;
99
+ }
100
+ } catch {
120
101
  return null;
121
102
  }
122
- const parsedFile = this.toPlainObject(parsedModel);
123
- const text = await this.readTextFile(parsedFile);
103
+ const text = await import_promises.default.readFile(filePath, "utf-8");
124
104
  const extname = (0, import_utils.resolveExtname)(sourceFile);
125
105
  const documents = this.toDocumentsFromText(text, sourceFile, extname);
126
106
  return {
127
107
  supported: true,
128
108
  fromCache: true,
129
109
  text,
130
- documents,
131
- meta: {
132
- sourceFileId: sourceFile.id,
133
- parsedFileId: parsedFile.id
134
- }
110
+ documents
135
111
  };
136
112
  }
137
113
  async persistParsedText(sourceFile, text) {
138
- const tempFilePath = import_node_path.default.join(
139
- import_node_os.default.tmpdir(),
140
- `${sourceFile.id ?? Date.now()}.${Date.now()}.parsed.${this.options.parsedFileExtname}`
141
- );
142
- await import_promises.default.writeFile(tempFilePath, text, "utf-8");
143
- try {
144
- const storageName = await this.resolveStorageName(sourceFile);
145
- const created = await this.fileManager.createFileRecord({
146
- collectionName: "aiFiles",
147
- filePath: tempFilePath,
148
- storageName,
149
- values: {
150
- title: `${sourceFile.title ?? sourceFile.filename ?? "document"} (parsed)`,
151
- mimetype: this.options.parsedMimetype,
152
- meta: {
153
- parserVersion: this.options.parserVersion,
154
- sourceFileId: sourceFile.id
155
- }
156
- }
157
- });
158
- return this.toPlainObject(created);
159
- } finally {
160
- await import_promises.default.rm(tempFilePath, { force: true });
161
- }
162
- }
163
- async updateSourceMeta(sourceFile, documentParse) {
164
- if (!sourceFile.id) {
165
- return;
166
- }
167
- const nextMeta = {
168
- ...sourceFile.meta ?? {},
169
- [import_constants.DOCUMENT_PARSE_META_KEY]: documentParse
170
- };
171
- await this.aiFilesRepo.update({
172
- filter: {
173
- id: sourceFile.id
174
- },
175
- values: {
176
- meta: nextMeta
177
- }
178
- });
179
- }
180
- async resolveStorageName(file) {
181
- if (!file.storageId) {
182
- return void 0;
183
- }
184
- if (!this.fileManager.storagesCache.size) {
185
- await this.fileManager.loadStorages();
186
- }
187
- const storage = this.fileManager.storagesCache.get(file.storageId);
188
- return storage == null ? void 0 : storage.name;
189
- }
190
- async readTextFile(file) {
191
- const { stream } = await this.fileManager.getFileStream(file);
192
- const chunks = [];
193
- for await (const chunk of stream) {
194
- chunks.push(chunk);
114
+ const cacheKey = this.getCacheKey(sourceFile);
115
+ if (!cacheKey) {
116
+ return null;
195
117
  }
196
- return Buffer.concat(chunks).toString("utf-8");
118
+ const tempFilePath = import_node_path.default.join(import_node_os.default.tmpdir(), `${cacheKey}.${Date.now()}.parsed.${this.options.parsedFileExtname}`);
119
+ await import_promises.default.writeFile(tempFilePath, text, "utf-8");
120
+ const cache = await this.getCache();
121
+ await cache.set(cacheKey, tempFilePath, 30 * 60 * 1e3);
197
122
  }
198
123
  documentsToText(documents) {
199
124
  return documents.map((doc) => doc.pageContent).join("\n\n");
@@ -212,23 +137,27 @@ class CachedDocumentLoader {
212
137
  })
213
138
  ];
214
139
  }
215
- getParseMeta(meta) {
216
- if (!meta || typeof meta !== "object") {
217
- return null;
218
- }
219
- return meta[import_constants.DOCUMENT_PARSE_META_KEY] ?? null;
220
- }
221
140
  toPlainObject(file) {
222
141
  if (file == null ? void 0 : file.toJSON) {
223
142
  return file.toJSON();
224
143
  }
225
144
  return file;
226
145
  }
227
- get aiFilesRepo() {
228
- return this.plugin.db.getRepository("aiFiles");
146
+ async getCache() {
147
+ this._cache ??= await this.plugin.app.cacheManager.createCache({
148
+ name: "ai-employee:document-loader:parsed",
149
+ store: "memory"
150
+ });
151
+ return this._cache;
229
152
  }
230
- get fileManager() {
231
- return this.plugin.app.pm.get("file-manager");
153
+ getCacheKey(sourceFile) {
154
+ if (!sourceFile) {
155
+ return null;
156
+ }
157
+ if (!sourceFile.id || !sourceFile.storageId) {
158
+ return null;
159
+ }
160
+ return `${sourceFile.id}@${sourceFile.storageId}`;
232
161
  }
233
162
  }
234
163
  // Annotate the CommonJS export names for ESM import in node:
@@ -12,6 +12,6 @@ import { ParseableFile } from './types';
12
12
  export declare class DocumentLoader {
13
13
  private readonly fileManager;
14
14
  constructor(fileManager: PluginFileManagerServer);
15
- load(file: ParseableFile): Promise<Document[]>;
15
+ load(file: ParseableFile, options?: any): Promise<Document[]>;
16
16
  private streamToBlob;
17
17
  }
@@ -36,12 +36,12 @@ class DocumentLoader {
36
36
  constructor(fileManager) {
37
37
  this.fileManager = fileManager;
38
38
  }
39
- async load(file) {
39
+ async load(file, options) {
40
40
  const extname = (0, import_utils.resolveExtname)(file);
41
41
  if (!import_constants.SUPPORTED_DOCUMENT_EXTNAMES.includes(extname)) {
42
42
  return [];
43
43
  }
44
- const { stream, contentType } = await this.fileManager.getFileStream(file);
44
+ const { stream, contentType } = await this.fileManager.getFileStream(file, options);
45
45
  const blob = await this.streamToBlob(stream, contentType ?? file.mimetype);
46
46
  return await (0, import_ai.loadByWorker)(extname, blob);
47
47
  }
@@ -21,11 +21,6 @@ export type ParsedDocumentResult = {
21
21
  fromCache: boolean;
22
22
  text: string;
23
23
  documents: Document[];
24
- meta?: {
25
- sourceFileId?: string | number;
26
- parsedFileId?: string | number;
27
- extname?: string;
28
- };
29
24
  };
30
25
  export type ParseableFile = {
31
26
  id?: number | string;
@@ -38,5 +33,5 @@ export type ParseableFile = {
38
33
  size?: number;
39
34
  };
40
35
  export type DocumentLoaderLike = {
41
- load(file: ParseableFile): Promise<Document[]>;
36
+ load(file: ParseableFile, options?: any): Promise<Document[]>;
42
37
  };
@@ -14,6 +14,10 @@ export interface VectorDatabaseProviderFeature {
14
14
  success: boolean;
15
15
  error?: string;
16
16
  }>;
17
+ beforeCreate<T>(providerName: string, connectParams: T, options?: any): Promise<{
18
+ status: number;
19
+ message?: string;
20
+ }>;
17
21
  createVectorStore<T, R>(providerName: string, embeddings: EmbeddingsInterface, connectParams: T): Promise<R>;
18
22
  listProviders(): VectorDatabaseProviderInfo<unknown, unknown>[];
19
23
  }
@@ -28,5 +32,9 @@ export type VectorDatabaseProvider<T, R> = {
28
32
  success: boolean;
29
33
  error?: string;
30
34
  }>;
35
+ beforeCreate(connectParams: T, options?: any): Promise<{
36
+ status: number;
37
+ message?: string;
38
+ }>;
31
39
  createVectorStore(embeddings: EmbeddingsInterface, connectParams: T): Promise<R>;
32
40
  };
@@ -17,7 +17,7 @@ export declare class KimiDocumentLoader {
17
17
  apiKey?: string;
18
18
  baseURL?: string;
19
19
  });
20
- load(file: ParseableFile): Promise<Document[]>;
20
+ load(file: ParseableFile, options?: any): Promise<Document[]>;
21
21
  private parseByApi;
22
22
  private deleteRemoteFile;
23
23
  private formatApiError;
@@ -54,8 +54,8 @@ class KimiDocumentLoader {
54
54
  this.client = this.createClient();
55
55
  }
56
56
  client;
57
- async load(file) {
58
- const text = await this.parseByApi(file);
57
+ async load(file, options) {
58
+ const text = await this.parseByApi(file, options);
59
59
  if (!text) {
60
60
  return [];
61
61
  }
@@ -69,12 +69,12 @@ class KimiDocumentLoader {
69
69
  })
70
70
  ];
71
71
  }
72
- async parseByApi(sourceFile) {
72
+ async parseByApi(sourceFile, options) {
73
73
  let uploadedFileId = "";
74
74
  const safeFilename = import_node_path.default.basename(sourceFile.filename || "document");
75
75
  const tempFilePath = import_node_path.default.join(import_node_os.default.tmpdir(), `${sourceFile.id ?? Date.now()}.${Date.now()}.${safeFilename}`);
76
76
  try {
77
- const { stream } = await this.fileManager.getFileStream(sourceFile);
77
+ const { stream } = await this.fileManager.getFileStream(sourceFile, options);
78
78
  await (0, import_promises2.pipeline)(stream, (0, import_node_fs.createWriteStream)(tempFilePath));
79
79
  let uploaded;
80
80
  try {
@@ -70,7 +70,7 @@ export declare abstract class LLMProvider {
70
70
  protected isApiSupportedAttachment(attachment: AttachmentModel): boolean;
71
71
  protected isDocumentLoaderSupportedAttachment(attachment: AttachmentModel): boolean;
72
72
  protected convertToContent(ctx: Context, attachment: any): Promise<ParsedAttachmentResult>;
73
- protected loadDocument(_ctx: Context, attachment: any): Promise<any>;
73
+ protected loadDocument(ctx: Context, attachment: any): Promise<any>;
74
74
  getStructuredOutputOptions(structuredOutput: AIChatContext['structuredOutput']): any;
75
75
  testFlight(): Promise<{
76
76
  status: 'success' | 'error';
@@ -202,9 +202,18 @@ class LLMProvider {
202
202
  };
203
203
  }
204
204
  }
205
- async loadDocument(_ctx, attachment) {
205
+ async loadDocument(ctx, attachment) {
206
+ const referer = ctx.get("referer") || "";
207
+ const ua = ctx.get("user-agent") || "";
206
208
  const safeFilename = attachment.filename ? import_node_path.default.basename(attachment.filename) : "document";
207
- const parsed = await this.documentLoader.load(attachment);
209
+ const parsed = await this.documentLoader.load(attachment, {
210
+ requestOptions: {
211
+ headers: {
212
+ Referer: referer,
213
+ "User-Agent": ua
214
+ }
215
+ }
216
+ });
208
217
  if (!parsed.supported) {
209
218
  return {
210
219
  placement: "system",
@@ -103,13 +103,12 @@ ${typeof message.system === "object" ? JSON.stringify(message.system) : message.
103
103
  });
104
104
  let currentRoles = (_a = input == null ? void 0 : input.result) == null ? void 0 : _a.roleName;
105
105
  if (!currentRoles) {
106
- const defaultRole = await this.workflow.db.getRepository("rolesUsers").findOne({
106
+ const roles = await this.workflow.db.getRepository("rolesUsers").find({
107
107
  filter: {
108
- userId: ((_c = (_b = input == null ? void 0 : input.result) == null ? void 0 : _b.user) == null ? void 0 : _c.id) ?? userId,
109
- default: true
108
+ userId: ((_c = (_b = input == null ? void 0 : input.result) == null ? void 0 : _b.user) == null ? void 0 : _c.id) ?? userId
110
109
  }
111
110
  });
112
- currentRoles = defaultRole == null ? void 0 : defaultRole.roleName;
111
+ currentRoles = roles.map((x) => x.roleName);
113
112
  }
114
113
  const employee = await this.workflow.db.getRepository("aiEmployees").findOne({
115
114
  filter: {
package/package.json CHANGED
@@ -6,7 +6,7 @@
6
6
  "description": "Create AI employees with diverse skills to collaborate with humans, build systems, and handle business operations.",
7
7
  "description.ru-RU": "Поддержка интеграции с AI-сервисами: предоставляются AI-узлы для рабочих процессов, расширяя возможности бизнес-обработки.",
8
8
  "description.zh-CN": "创建各种技能的 AI 员工,与人类协同,搭建系统,处理业务。",
9
- "version": "2.1.0-beta.33",
9
+ "version": "2.1.0-beta.34",
10
10
  "main": "dist/server/index.js",
11
11
  "homepage": "https://docs.nocobase.com/handbook/action-ai",
12
12
  "homepage.ru-RU": "https://docs-ru.nocobase.com/handbook/action-ai",
@@ -64,5 +64,5 @@
64
64
  "keywords": [
65
65
  "AI"
66
66
  ],
67
- "gitHead": "4815c394e80a264fa8ed619246280923c47aeb72"
67
+ "gitHead": "ca804833299c547f8d49f8d58f73273a4bfcd03c"
68
68
  }