@geminilight/mindos-windows-arm64 1.0.6 → 1.0.8
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.
- package/_standalone/.mindos-build-version +1 -1
- package/_standalone/__next/BUILD_ID +1 -1
- package/_standalone/__next/app-path-routes-manifest.json +24 -24
- package/_standalone/__next/build-manifest.json +3 -3
- package/_standalone/__next/prerender-manifest.json +3 -3
- package/_standalone/__next/react-loadable-manifest.json +48 -7
- package/_standalone/__next/server/app/.well-known/agent-card.json/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/_global-error.html +2 -2
- package/_standalone/__next/server/app/_global-error.rsc +1 -1
- package/_standalone/__next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/_standalone/__next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/_standalone/__next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/_standalone/__next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/_standalone/__next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/_standalone/__next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/_standalone/__next/server/app/_not-found/page.js +1 -1
- package/_standalone/__next/server/app/_not-found/page.js.nft.json +1 -1
- package/_standalone/__next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/agents/[agentKey]/page.js +2 -2
- package/_standalone/__next/server/app/agents/[agentKey]/page.js.nft.json +1 -1
- package/_standalone/__next/server/app/agents/[agentKey]/page_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/agents/page.js +2 -2
- package/_standalone/__next/server/app/agents/page.js.nft.json +1 -1
- package/_standalone/__next/server/app/agents/page_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/a2a/agents/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/a2a/delegations/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/a2a/discover/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/a2a/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/acp/config/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/acp/detect/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/acp/install/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/acp/registry/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/acp/session/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/agent-activity/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/agents/copy-skill/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/agents/custom/detect/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/agents/custom/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/ask/route.js +2 -2
- package/_standalone/__next/server/app/api/ask/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/ask-sessions/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/auth/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/backlinks/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/bootstrap/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/changes/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/channels/verify/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/connect/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/embedding/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/export/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/extract-docx/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/extract-pdf/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/file/import/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/file/raw/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/file/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/files/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/git/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/graph/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/health/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/im/activity/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/im/config/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/im/feishu/long-connection/event/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/im/feishu/long-connection/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/im/status/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/im/test/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/im/webhook/feishu/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/im/webhook-status/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/inbox/clip/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/inbox/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/init/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/lint/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/mcp/agents/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/mcp/direct-tools/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/mcp/install/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/mcp/install-skill/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/mcp/restart/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/mcp/status/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/mcp/tools/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/mcp/uninstall/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/monitoring/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/obsidian/compat-report/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/obsidian/import/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/obsidian-plugins/settings/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/recent-files/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/restart/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/search/prewarm/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/search/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/settings/list-models/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/settings/reset-token/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/settings/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/settings/test-key/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/setup/check-path/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/setup/check-port/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/setup/generate-token/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/setup/ls/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/setup/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/skills/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/space-overview/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/sync/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/tree-version/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/uninstall/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/update/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/update-check/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/update-status/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/workflows/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/capture/history/page.js +1 -1
- package/_standalone/__next/server/app/capture/history/page.js.nft.json +1 -1
- package/_standalone/__next/server/app/capture/history/page_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/capture/page.js +1 -1
- package/_standalone/__next/server/app/capture/page.js.nft.json +1 -1
- package/_standalone/__next/server/app/capture/page_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/changelog/page.js +1 -1
- package/_standalone/__next/server/app/changelog/page.js.nft.json +1 -1
- package/_standalone/__next/server/app/changelog/page_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/changes/page.js +1 -1
- package/_standalone/__next/server/app/changes/page.js.nft.json +1 -1
- package/_standalone/__next/server/app/changes/page_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/echo/[segment]/page.js +4 -4
- package/_standalone/__next/server/app/echo/[segment]/page.js.nft.json +1 -1
- package/_standalone/__next/server/app/echo/[segment]/page_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/echo/page.js +1 -1
- package/_standalone/__next/server/app/echo/page.js.nft.json +1 -1
- package/_standalone/__next/server/app/echo/page_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/explore/page.js +3 -3
- package/_standalone/__next/server/app/explore/page.js.nft.json +1 -1
- package/_standalone/__next/server/app/explore/page_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/help/page.js +2 -2
- package/_standalone/__next/server/app/help/page.js.nft.json +1 -1
- package/_standalone/__next/server/app/help/page_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/inbox/history/page.js +1 -1
- package/_standalone/__next/server/app/inbox/history/page.js.nft.json +1 -1
- package/_standalone/__next/server/app/inbox/history/page_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/login/page.js +1 -1
- package/_standalone/__next/server/app/login/page.js.nft.json +1 -1
- package/_standalone/__next/server/app/login/page_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/page.js +1 -1
- package/_standalone/__next/server/app/page.js.nft.json +1 -1
- package/_standalone/__next/server/app/page_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/settings/page.js +8 -3
- package/_standalone/__next/server/app/settings/page.js.nft.json +1 -1
- package/_standalone/__next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/setup/page.js +1 -1
- package/_standalone/__next/server/app/setup/page.js.nft.json +1 -1
- package/_standalone/__next/server/app/setup/page_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/todo/page.js +1 -1
- package/_standalone/__next/server/app/todo/page.js.nft.json +1 -1
- package/_standalone/__next/server/app/todo/page_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/trash/page.js +2 -2
- package/_standalone/__next/server/app/trash/page.js.nft.json +1 -1
- package/_standalone/__next/server/app/trash/page_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/view/[...path]/page.js +3 -3
- package/_standalone/__next/server/app/view/[...path]/page.js.nft.json +1 -1
- package/_standalone/__next/server/app/view/[...path]/page_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/wiki/page.js +1 -1
- package/_standalone/__next/server/app/wiki/page.js.nft.json +1 -1
- package/_standalone/__next/server/app/wiki/page_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app-paths-manifest.json +24 -24
- package/_standalone/__next/server/chunks/103.js +1 -1
- package/_standalone/__next/server/chunks/1976.js +1 -1
- package/_standalone/__next/server/chunks/6602.js +43 -66
- package/_standalone/__next/server/chunks/6646.js +16 -0
- package/_standalone/__next/server/chunks/8461.js +7 -7
- package/_standalone/__next/server/chunks/9868.js +2 -0
- package/_standalone/__next/server/chunks/{3219.js → 9969.js} +4 -4
- package/_standalone/__next/server/middleware-build-manifest.js +1 -1
- package/_standalone/__next/server/middleware-react-loadable-manifest.js +1 -1
- package/_standalone/__next/server/pages/500.html +2 -2
- package/_standalone/__next/server/server-reference-manifest.js +1 -1
- package/_standalone/__next/server/server-reference-manifest.json +1 -1
- package/_standalone/__next/static/chunks/{1430-c4ffa328888515c1.js → 1104-0822d9349a412b9b.js} +7 -2
- package/_standalone/__next/static/chunks/1655.0a559759973b42e9.js +1 -0
- package/_standalone/__next/static/chunks/{2073-3f913ebb13702b7e.js → 2073-fadffc82a27afdc7.js} +2 -2
- package/{static-web/_next/static/chunks/9216.d3339c27169b21bf.js → _standalone/__next/static/chunks/2245.ef71edb24c5232c2.js} +1 -1
- package/_standalone/__next/static/chunks/2258-2d3b5aac6a1fa92a.js +53 -0
- package/{static-web/_next/static/chunks/4937-4101fcdadacf46e3.js → _standalone/__next/static/chunks/2409-244f9b90dceb0c04.js} +1 -1
- package/_standalone/__next/static/chunks/3279-b49c25a4f2964b16.js +1 -0
- package/_standalone/__next/static/chunks/3807-115388f118106ca8.js +1 -0
- package/_standalone/__next/static/chunks/3966.ea75f9c5490955de.js +1 -0
- package/_standalone/__next/static/chunks/4010.48b219cb22dfa5d8.js +10 -0
- package/_standalone/__next/static/chunks/5026-7fed7ca22272c18f.js +1 -0
- package/_standalone/__next/static/chunks/5152-87e6ed56dfd7d17d.js +1 -0
- package/_standalone/__next/static/chunks/577.5e448c99068f1323.js +1 -0
- package/_standalone/__next/static/chunks/5913.a0a734f87b13f81a.js +1 -0
- package/_standalone/__next/static/chunks/596.9cbaf6ba90cb204f.js +7 -0
- package/_standalone/__next/static/chunks/6223-3fb90852221bda56.js +1 -0
- package/_standalone/__next/static/chunks/6343.582d063078c45d73.js +6 -0
- package/_standalone/__next/static/chunks/8174-50048777dc2469c0.js +1 -0
- package/_standalone/__next/static/chunks/{5913.3cee388e26959b62.js → 8294.cc9f9ff2f8b219ed.js} +1 -1
- package/_standalone/__next/static/chunks/8626-7da79d9ab2504eed.js +1 -0
- package/_standalone/__next/static/chunks/{8732.9002f42201b06fe8.js → 8732.87554c78e8825fac.js} +4 -4
- package/_standalone/__next/static/chunks/8922-3babcd35e18e9e4f.js +1 -0
- package/_standalone/__next/static/chunks/9440-eee639175695be7d.js +33 -0
- package/_standalone/__next/static/chunks/9479-b48d19e3588823c1.js +34 -0
- package/_standalone/__next/static/chunks/{9602.4e99e3525e5f062c.js → 9602.218427fc7b3d6b11.js} +1 -1
- package/_standalone/__next/static/chunks/app/agents/[agentKey]/page-ef111ea0a3368752.js +1 -0
- package/_standalone/__next/static/chunks/app/agents/page-aacead0f47cedb0d.js +1 -0
- package/_standalone/__next/static/chunks/app/layout-ed608bbf9585e78f.js +99 -0
- package/_standalone/__next/static/chunks/app/page-d22928276c36528c.js +1 -0
- package/_standalone/__next/static/chunks/app/settings/{page-c9f44b3447a41431.js → page-045afd8c0908f923.js} +1 -1
- package/{static-web/_next/static/chunks/app/setup/page-f5de08d0d588c778.js → _standalone/__next/static/chunks/app/setup/page-034a608f19d04653.js} +1 -1
- package/_standalone/__next/static/chunks/app/trash/page-251aaf5aac9d5a0b.js +1 -0
- package/_standalone/__next/static/chunks/app/view/[...path]/page-7e17c3d13fe2e275.js +12 -0
- package/_standalone/__next/static/chunks/webpack-1decda0633a8a874.js +1 -0
- package/_standalone/__next/static/css/5f000212c8b2e09a.css +1 -0
- package/_standalone/__node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from/LICENSE +201 -0
- package/_standalone/__node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from/dist-cjs/index.js +20 -0
- package/_standalone/__node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from/dist-es/index.js +14 -0
- package/_standalone/__node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from/node_modules/@smithy/is-array-buffer/LICENSE +201 -0
- package/_standalone/__node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from/node_modules/@smithy/is-array-buffer/dist-cjs/index.js +6 -0
- package/_standalone/__node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from/node_modules/@smithy/is-array-buffer/dist-es/index.js +2 -0
- package/_standalone/__node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from/node_modules/@smithy/is-array-buffer/package.json +61 -0
- package/_standalone/__node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from/package.json +62 -0
- package/_standalone/__node_modules/@aws-sdk/core/node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from/LICENSE +201 -0
- package/_standalone/__node_modules/@aws-sdk/core/node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from/dist-cjs/index.js +20 -0
- package/_standalone/__node_modules/@aws-sdk/core/node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from/dist-es/index.js +14 -0
- package/_standalone/__node_modules/@aws-sdk/core/node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from/node_modules/@smithy/is-array-buffer/LICENSE +201 -0
- package/_standalone/__node_modules/@aws-sdk/core/node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from/node_modules/@smithy/is-array-buffer/dist-cjs/index.js +6 -0
- package/_standalone/__node_modules/@aws-sdk/core/node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from/node_modules/@smithy/is-array-buffer/dist-es/index.js +2 -0
- package/_standalone/__node_modules/@aws-sdk/core/node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from/node_modules/@smithy/is-array-buffer/package.json +61 -0
- package/_standalone/__node_modules/@aws-sdk/core/node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from/package.json +62 -0
- package/_standalone/__node_modules/@aws-sdk/middleware-sdk-s3/node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from/LICENSE +201 -0
- package/_standalone/__node_modules/@aws-sdk/middleware-sdk-s3/node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from/dist-cjs/index.js +20 -0
- package/_standalone/__node_modules/@aws-sdk/middleware-sdk-s3/node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from/dist-es/index.js +14 -0
- package/_standalone/__node_modules/@aws-sdk/middleware-sdk-s3/node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from/node_modules/@smithy/is-array-buffer/LICENSE +201 -0
- package/_standalone/__node_modules/@aws-sdk/middleware-sdk-s3/node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from/node_modules/@smithy/is-array-buffer/dist-cjs/index.js +6 -0
- package/_standalone/__node_modules/@aws-sdk/middleware-sdk-s3/node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from/node_modules/@smithy/is-array-buffer/dist-es/index.js +2 -0
- package/_standalone/__node_modules/@aws-sdk/middleware-sdk-s3/node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from/node_modules/@smithy/is-array-buffer/package.json +61 -0
- package/_standalone/__node_modules/@aws-sdk/middleware-sdk-s3/node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from/package.json +62 -0
- package/_standalone/__node_modules/@aws-sdk/middleware-websocket/node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from/LICENSE +201 -0
- package/_standalone/__node_modules/@aws-sdk/middleware-websocket/node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from/dist-cjs/index.js +20 -0
- package/_standalone/__node_modules/@aws-sdk/middleware-websocket/node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from/dist-es/index.js +14 -0
- package/_standalone/__node_modules/@aws-sdk/middleware-websocket/node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from/node_modules/@smithy/is-array-buffer/LICENSE +201 -0
- package/_standalone/__node_modules/@aws-sdk/middleware-websocket/node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from/node_modules/@smithy/is-array-buffer/dist-cjs/index.js +6 -0
- package/_standalone/__node_modules/@aws-sdk/middleware-websocket/node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from/node_modules/@smithy/is-array-buffer/dist-es/index.js +2 -0
- package/_standalone/__node_modules/@aws-sdk/middleware-websocket/node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from/node_modules/@smithy/is-array-buffer/package.json +61 -0
- package/_standalone/__node_modules/@aws-sdk/middleware-websocket/node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from/package.json +62 -0
- package/_standalone/__node_modules/@aws-sdk/nested-clients/node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from/LICENSE +201 -0
- package/_standalone/__node_modules/@aws-sdk/nested-clients/node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from/dist-cjs/index.js +20 -0
- package/_standalone/__node_modules/@aws-sdk/nested-clients/node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from/dist-es/index.js +14 -0
- package/_standalone/__node_modules/@aws-sdk/nested-clients/node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from/node_modules/@smithy/is-array-buffer/LICENSE +201 -0
- package/_standalone/__node_modules/@aws-sdk/nested-clients/node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from/node_modules/@smithy/is-array-buffer/dist-cjs/index.js +6 -0
- package/_standalone/__node_modules/@aws-sdk/nested-clients/node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from/node_modules/@smithy/is-array-buffer/dist-es/index.js +2 -0
- package/_standalone/__node_modules/@aws-sdk/nested-clients/node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from/node_modules/@smithy/is-array-buffer/package.json +61 -0
- package/_standalone/__node_modules/@aws-sdk/nested-clients/node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from/package.json +62 -0
- package/_standalone/__node_modules/@mariozechner/pi-coding-agent/node_modules/strip-ansi/node_modules/ansi-regex/index.js +14 -0
- package/_standalone/__node_modules/@mariozechner/pi-coding-agent/node_modules/strip-ansi/node_modules/ansi-regex/license +9 -0
- package/_standalone/__node_modules/@mariozechner/pi-coding-agent/node_modules/strip-ansi/node_modules/ansi-regex/package.json +61 -0
- package/_standalone/__node_modules/@smithy/core/node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from/LICENSE +201 -0
- package/_standalone/__node_modules/@smithy/core/node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from/dist-cjs/index.js +20 -0
- package/_standalone/__node_modules/@smithy/core/node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from/dist-es/index.js +14 -0
- package/_standalone/__node_modules/@smithy/core/node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from/node_modules/@smithy/is-array-buffer/LICENSE +201 -0
- package/_standalone/__node_modules/@smithy/core/node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from/node_modules/@smithy/is-array-buffer/dist-cjs/index.js +6 -0
- package/_standalone/__node_modules/@smithy/core/node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from/node_modules/@smithy/is-array-buffer/dist-es/index.js +2 -0
- package/_standalone/__node_modules/@smithy/core/node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from/node_modules/@smithy/is-array-buffer/package.json +61 -0
- package/_standalone/__node_modules/@smithy/core/node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from/package.json +62 -0
- package/_standalone/__node_modules/@smithy/hash-node/node_modules/@smithy/util-buffer-from/node_modules/@smithy/is-array-buffer/LICENSE +201 -0
- package/_standalone/__node_modules/@smithy/hash-node/node_modules/@smithy/util-buffer-from/node_modules/@smithy/is-array-buffer/dist-cjs/index.js +6 -0
- package/_standalone/__node_modules/@smithy/hash-node/node_modules/@smithy/util-buffer-from/node_modules/@smithy/is-array-buffer/dist-es/index.js +2 -0
- package/_standalone/__node_modules/@smithy/hash-node/node_modules/@smithy/util-buffer-from/node_modules/@smithy/is-array-buffer/package.json +61 -0
- package/_standalone/__node_modules/@smithy/hash-node/node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from/LICENSE +201 -0
- package/_standalone/__node_modules/@smithy/hash-node/node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from/dist-cjs/index.js +20 -0
- package/_standalone/__node_modules/@smithy/hash-node/node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from/dist-es/index.js +14 -0
- package/_standalone/__node_modules/@smithy/hash-node/node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from/node_modules/@smithy/is-array-buffer/LICENSE +201 -0
- package/_standalone/__node_modules/@smithy/hash-node/node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from/node_modules/@smithy/is-array-buffer/dist-cjs/index.js +6 -0
- package/_standalone/__node_modules/@smithy/hash-node/node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from/node_modules/@smithy/is-array-buffer/dist-es/index.js +2 -0
- package/_standalone/__node_modules/@smithy/hash-node/node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from/node_modules/@smithy/is-array-buffer/package.json +61 -0
- package/_standalone/__node_modules/@smithy/hash-node/node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from/package.json +62 -0
- package/_standalone/__node_modules/@smithy/signature-v4/node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from/LICENSE +201 -0
- package/_standalone/__node_modules/@smithy/signature-v4/node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from/dist-cjs/index.js +20 -0
- package/_standalone/__node_modules/@smithy/signature-v4/node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from/dist-es/index.js +14 -0
- package/_standalone/__node_modules/@smithy/signature-v4/node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from/node_modules/@smithy/is-array-buffer/LICENSE +201 -0
- package/_standalone/__node_modules/@smithy/signature-v4/node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from/node_modules/@smithy/is-array-buffer/dist-cjs/index.js +6 -0
- package/_standalone/__node_modules/@smithy/signature-v4/node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from/node_modules/@smithy/is-array-buffer/dist-es/index.js +2 -0
- package/_standalone/__node_modules/@smithy/signature-v4/node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from/node_modules/@smithy/is-array-buffer/package.json +61 -0
- package/_standalone/__node_modules/@smithy/signature-v4/node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from/package.json +62 -0
- package/_standalone/__node_modules/@smithy/util-base64/node_modules/@smithy/util-buffer-from/node_modules/@smithy/is-array-buffer/LICENSE +201 -0
- package/_standalone/__node_modules/@smithy/util-base64/node_modules/@smithy/util-buffer-from/node_modules/@smithy/is-array-buffer/dist-cjs/index.js +6 -0
- package/_standalone/__node_modules/@smithy/util-base64/node_modules/@smithy/util-buffer-from/node_modules/@smithy/is-array-buffer/dist-es/index.js +2 -0
- package/_standalone/__node_modules/@smithy/util-base64/node_modules/@smithy/util-buffer-from/node_modules/@smithy/is-array-buffer/package.json +61 -0
- package/_standalone/__node_modules/@smithy/util-base64/node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from/LICENSE +201 -0
- package/_standalone/__node_modules/@smithy/util-base64/node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from/dist-cjs/index.js +20 -0
- package/_standalone/__node_modules/@smithy/util-base64/node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from/dist-es/index.js +14 -0
- package/_standalone/__node_modules/@smithy/util-base64/node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from/node_modules/@smithy/is-array-buffer/LICENSE +201 -0
- package/_standalone/__node_modules/@smithy/util-base64/node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from/node_modules/@smithy/is-array-buffer/dist-cjs/index.js +6 -0
- package/_standalone/__node_modules/@smithy/util-base64/node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from/node_modules/@smithy/is-array-buffer/dist-es/index.js +2 -0
- package/_standalone/__node_modules/@smithy/util-base64/node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from/node_modules/@smithy/is-array-buffer/package.json +61 -0
- package/_standalone/__node_modules/@smithy/util-base64/node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from/package.json +62 -0
- package/_standalone/__node_modules/@smithy/util-stream/node_modules/@smithy/util-buffer-from/node_modules/@smithy/is-array-buffer/LICENSE +201 -0
- package/_standalone/__node_modules/@smithy/util-stream/node_modules/@smithy/util-buffer-from/node_modules/@smithy/is-array-buffer/dist-cjs/index.js +6 -0
- package/_standalone/__node_modules/@smithy/util-stream/node_modules/@smithy/util-buffer-from/node_modules/@smithy/is-array-buffer/dist-es/index.js +2 -0
- package/_standalone/__node_modules/@smithy/util-stream/node_modules/@smithy/util-buffer-from/node_modules/@smithy/is-array-buffer/package.json +61 -0
- package/_standalone/__node_modules/@smithy/util-stream/node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from/LICENSE +201 -0
- package/_standalone/__node_modules/@smithy/util-stream/node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from/dist-cjs/index.js +20 -0
- package/_standalone/__node_modules/@smithy/util-stream/node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from/dist-es/index.js +14 -0
- package/_standalone/__node_modules/@smithy/util-stream/node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from/node_modules/@smithy/is-array-buffer/LICENSE +201 -0
- package/_standalone/__node_modules/@smithy/util-stream/node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from/node_modules/@smithy/is-array-buffer/dist-cjs/index.js +6 -0
- package/_standalone/__node_modules/@smithy/util-stream/node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from/node_modules/@smithy/is-array-buffer/dist-es/index.js +2 -0
- package/_standalone/__node_modules/@smithy/util-stream/node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from/node_modules/@smithy/is-array-buffer/package.json +61 -0
- package/_standalone/__node_modules/@smithy/util-stream/node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from/package.json +62 -0
- package/_standalone/__node_modules/bignumber.js/doc/API.html +2249 -0
- package/_standalone/__node_modules/entities/LICENSE +11 -0
- package/_standalone/__node_modules/entities/dist/decode-codepoint.js +46 -0
- package/_standalone/__node_modules/entities/dist/decode.js +544 -0
- package/_standalone/__node_modules/entities/dist/encode.js +90 -0
- package/_standalone/__node_modules/entities/dist/escape.js +132 -0
- package/_standalone/__node_modules/entities/dist/generated/decode-data-html.js +5 -0
- package/_standalone/__node_modules/entities/dist/generated/decode-data-xml.js +5 -0
- package/_standalone/__node_modules/entities/dist/generated/encode-html.js +12 -0
- package/_standalone/__node_modules/entities/dist/index.js +91 -0
- package/_standalone/__node_modules/entities/dist/internal/bin-trie-flags.js +18 -0
- package/_standalone/__node_modules/entities/dist/internal/decode-shared.js +17 -0
- package/_standalone/__node_modules/entities/dist/internal/encode-shared.js +93 -0
- package/_standalone/__node_modules/entities/package.json +83 -0
- package/_standalone/__node_modules/entities/src/decode-codepoint.ts +50 -0
- package/_standalone/__node_modules/entities/src/decode.ts +671 -0
- package/_standalone/__node_modules/entities/src/encode.ts +95 -0
- package/_standalone/__node_modules/entities/src/escape.ts +160 -0
- package/_standalone/__node_modules/entities/src/generated/decode-data-html.ts +7 -0
- package/_standalone/__node_modules/entities/src/generated/decode-data-xml.ts +7 -0
- package/_standalone/__node_modules/entities/src/generated/encode-html.ts +18 -0
- package/_standalone/__node_modules/entities/src/index.ts +162 -0
- package/_standalone/__node_modules/entities/src/internal/bin-trie-flags.ts +16 -0
- package/_standalone/__node_modules/entities/src/internal/decode-shared.ts +18 -0
- package/_standalone/__node_modules/entities/src/internal/encode-shared.ts +123 -0
- package/_standalone/__node_modules/has-flag/index.js +8 -0
- package/_standalone/__node_modules/has-flag/license +9 -0
- package/_standalone/__node_modules/has-flag/package.json +46 -0
- package/_standalone/__node_modules/koffi/doc/benchmarks.md +126 -0
- package/_standalone/__node_modules/koffi/doc/callbacks.md +210 -0
- package/_standalone/__node_modules/koffi/doc/contribute.md +148 -0
- package/_standalone/__node_modules/koffi/doc/functions.md +250 -0
- package/_standalone/__node_modules/koffi/doc/index.md +61 -0
- package/_standalone/__node_modules/koffi/doc/input.md +471 -0
- package/_standalone/__node_modules/koffi/doc/migration.md +159 -0
- package/_standalone/__node_modules/koffi/doc/misc.md +180 -0
- package/_standalone/__node_modules/koffi/doc/output.md +305 -0
- package/_standalone/__node_modules/koffi/doc/packaging.md +88 -0
- package/_standalone/__node_modules/koffi/doc/platforms.md +36 -0
- package/_standalone/__node_modules/koffi/doc/pointers.md +328 -0
- package/_standalone/__node_modules/koffi/doc/start.md +118 -0
- package/_standalone/__node_modules/koffi/doc/unions.md +186 -0
- package/_standalone/__node_modules/koffi/doc/variables.md +102 -0
- package/_standalone/__node_modules/supports-color/browser.js +5 -0
- package/_standalone/__node_modules/supports-color/index.js +135 -0
- package/_standalone/__node_modules/supports-color/license +9 -0
- package/_standalone/__node_modules/supports-color/package.json +53 -0
- package/_standalone/__node_modules/yaml/browser/dist/doc/Document.js +335 -0
- package/_standalone/__node_modules/yaml/browser/dist/doc/anchors.js +71 -0
- package/_standalone/__node_modules/yaml/browser/dist/doc/applyReviver.js +55 -0
- package/_standalone/__node_modules/yaml/browser/dist/doc/createNode.js +88 -0
- package/_standalone/__node_modules/yaml/browser/dist/doc/directives.js +176 -0
- package/_standalone/__node_modules/yaml/dist/doc/Document.js +337 -0
- package/_standalone/__node_modules/yaml/dist/doc/anchors.js +76 -0
- package/_standalone/__node_modules/yaml/dist/doc/applyReviver.js +57 -0
- package/_standalone/__node_modules/yaml/dist/doc/createNode.js +90 -0
- package/_standalone/__node_modules/yaml/dist/doc/directives.js +178 -0
- package/_standalone/public/agent-icons/claude.svg +1 -0
- package/_standalone/public/agent-icons/cursor.svg +1 -0
- package/_standalone/public/agent-icons/github-copilot.svg +1 -0
- package/_standalone/public/agent-icons/google.svg +1 -0
- package/_standalone/public/agent-icons/openai.svg +1 -0
- package/_standalone/public/agent-icons/windsurf.svg +1 -0
- package/bin/lib/stop.js +45 -0
- package/bin/lib/sync.js +32 -19
- package/dist/server/handlers/file.js +5 -2
- package/dist/server/handlers/file.js.map +1 -1
- package/dist/server/handlers/mcp-restart.d.ts +2 -0
- package/dist/server/handlers/mcp-restart.d.ts.map +1 -1
- package/dist/server/handlers/mcp-restart.js +45 -2
- package/dist/server/handlers/mcp-restart.js.map +1 -1
- package/dist/server/handlers/skills.d.ts.map +1 -1
- package/dist/server/handlers/skills.js +17 -3
- package/dist/server/handlers/skills.js.map +1 -1
- package/dist/server/handlers/sync.d.ts.map +1 -1
- package/dist/server/handlers/sync.js +28 -10
- package/dist/server/handlers/sync.js.map +1 -1
- package/dist/server/index.d.ts +1 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +1 -1
- package/dist/server/index.js.map +1 -1
- package/dist/server/runtime.d.ts.map +1 -1
- package/dist/server/runtime.js +20 -21
- package/dist/server/runtime.js.map +1 -1
- package/package.json +1 -1
- package/runtime-manifest.json +1 -1
- package/scripts/build-bun-binary.mjs +139 -6
- package/scripts/prepare-standalone.mjs +0 -1
- package/scripts/prepare-static-web.mjs +52 -4
- package/scripts/release.sh +1 -1
- package/scripts/setup.js +115 -2
- package/scripts/verify-standalone.mjs +12 -0
- package/static-web/.mindos-build-version +1 -1
- package/static-web/_next/static/chunks/{1430-c4ffa328888515c1.js → 1104-0822d9349a412b9b.js} +7 -2
- package/static-web/_next/static/chunks/1655.0a559759973b42e9.js +1 -0
- package/static-web/_next/static/chunks/{2073-3f913ebb13702b7e.js → 2073-fadffc82a27afdc7.js} +2 -2
- package/{_standalone/__next/static/chunks/9216.d3339c27169b21bf.js → static-web/_next/static/chunks/2245.ef71edb24c5232c2.js} +1 -1
- package/static-web/_next/static/chunks/2258-2d3b5aac6a1fa92a.js +53 -0
- package/{_standalone/__next/static/chunks/4937-4101fcdadacf46e3.js → static-web/_next/static/chunks/2409-244f9b90dceb0c04.js} +1 -1
- package/static-web/_next/static/chunks/3279-b49c25a4f2964b16.js +1 -0
- package/static-web/_next/static/chunks/3807-115388f118106ca8.js +1 -0
- package/static-web/_next/static/chunks/3966.ea75f9c5490955de.js +1 -0
- package/static-web/_next/static/chunks/4010.48b219cb22dfa5d8.js +10 -0
- package/static-web/_next/static/chunks/5026-7fed7ca22272c18f.js +1 -0
- package/static-web/_next/static/chunks/5152-87e6ed56dfd7d17d.js +1 -0
- package/static-web/_next/static/chunks/577.5e448c99068f1323.js +1 -0
- package/static-web/_next/static/chunks/5913.a0a734f87b13f81a.js +1 -0
- package/static-web/_next/static/chunks/596.9cbaf6ba90cb204f.js +7 -0
- package/static-web/_next/static/chunks/6223-3fb90852221bda56.js +1 -0
- package/static-web/_next/static/chunks/6343.582d063078c45d73.js +6 -0
- package/static-web/_next/static/chunks/8174-50048777dc2469c0.js +1 -0
- package/static-web/_next/static/chunks/{5913.3cee388e26959b62.js → 8294.cc9f9ff2f8b219ed.js} +1 -1
- package/static-web/_next/static/chunks/8626-7da79d9ab2504eed.js +1 -0
- package/static-web/_next/static/chunks/{8732.9002f42201b06fe8.js → 8732.87554c78e8825fac.js} +4 -4
- package/static-web/_next/static/chunks/8922-3babcd35e18e9e4f.js +1 -0
- package/static-web/_next/static/chunks/9440-eee639175695be7d.js +33 -0
- package/static-web/_next/static/chunks/9479-b48d19e3588823c1.js +34 -0
- package/static-web/_next/static/chunks/{9602.4e99e3525e5f062c.js → 9602.218427fc7b3d6b11.js} +1 -1
- package/static-web/_next/static/chunks/app/agents/[agentKey]/page-ef111ea0a3368752.js +1 -0
- package/static-web/_next/static/chunks/app/agents/page-aacead0f47cedb0d.js +1 -0
- package/static-web/_next/static/chunks/app/layout-ed608bbf9585e78f.js +99 -0
- package/static-web/_next/static/chunks/app/page-d22928276c36528c.js +1 -0
- package/static-web/_next/static/chunks/app/settings/{page-c9f44b3447a41431.js → page-045afd8c0908f923.js} +1 -1
- package/{_standalone/__next/static/chunks/app/setup/page-f5de08d0d588c778.js → static-web/_next/static/chunks/app/setup/page-034a608f19d04653.js} +1 -1
- package/static-web/_next/static/chunks/app/trash/page-251aaf5aac9d5a0b.js +1 -0
- package/static-web/_next/static/chunks/app/view/[...path]/page-7e17c3d13fe2e275.js +12 -0
- package/static-web/_next/static/chunks/webpack-1decda0633a8a874.js +1 -0
- package/static-web/_next/static/css/5f000212c8b2e09a.css +1 -0
- package/static-web/agent-icons/claude.svg +1 -0
- package/static-web/agent-icons/cursor.svg +1 -0
- package/static-web/agent-icons/github-copilot.svg +1 -0
- package/static-web/agent-icons/google.svg +1 -0
- package/static-web/agent-icons/openai.svg +1 -0
- package/static-web/agent-icons/windsurf.svg +1 -0
- package/static-web/help/index.html +5 -20
- package/static-web/index.html +8 -22
- package/static-web/setup/index.html +5 -20
- package/static-web/static-web-manifest.json +1 -1
- package/static-web/wiki/index.html +5 -20
- package/_standalone/__next/server/chunks/2037.js +0 -2
- package/_standalone/__next/server/chunks/9350.js +0 -11
- package/_standalone/__next/static/chunks/2288-4dcb8ad3ccbd651e.js +0 -1
- package/_standalone/__next/static/chunks/2461-a1073a0bd04c228a.js +0 -33
- package/_standalone/__next/static/chunks/3424-060f01a8983e438d.js +0 -1
- package/_standalone/__next/static/chunks/4172-4fc551f07f7d082f.js +0 -1
- package/_standalone/__next/static/chunks/4454-f582e17b76ccf1d1.js +0 -1
- package/_standalone/__next/static/chunks/47-41e1a06e6d389b69.js +0 -48
- package/_standalone/__next/static/chunks/5152-2db55438be7ecb94.js +0 -1
- package/_standalone/__next/static/chunks/5200-6c82e5ce54a95b4b.js +0 -6
- package/_standalone/__next/static/chunks/6274-f173cb227ad1ef21.js +0 -1
- package/_standalone/__next/static/chunks/6947.7e50e18da7dc4aef.js +0 -1
- package/_standalone/__next/static/chunks/725-3b648bf7929ff78d.js +0 -1
- package/_standalone/__next/static/chunks/9479-7b304601a56304cd.js +0 -32
- package/_standalone/__next/static/chunks/app/agents/[agentKey]/page-44c493b744d18249.js +0 -1
- package/_standalone/__next/static/chunks/app/agents/page-6591b482a193e657.js +0 -1
- package/_standalone/__next/static/chunks/app/layout-5966cd317bbed698.js +0 -114
- package/_standalone/__next/static/chunks/app/page-5c9489e28657376e.js +0 -1
- package/_standalone/__next/static/chunks/app/trash/page-d87207a63591ee16.js +0 -1
- package/_standalone/__next/static/chunks/app/view/[...path]/page-1898f4ae4ab28db0.js +0 -12
- package/_standalone/__next/static/chunks/webpack-75abef9cbb1ea912.js +0 -1
- package/_standalone/__next/static/css/0d2fd378b5449176.css +0 -1
- package/static-web/_next/static/chunks/2288-4dcb8ad3ccbd651e.js +0 -1
- package/static-web/_next/static/chunks/2461-a1073a0bd04c228a.js +0 -33
- package/static-web/_next/static/chunks/3424-060f01a8983e438d.js +0 -1
- package/static-web/_next/static/chunks/4172-4fc551f07f7d082f.js +0 -1
- package/static-web/_next/static/chunks/4454-f582e17b76ccf1d1.js +0 -1
- package/static-web/_next/static/chunks/47-41e1a06e6d389b69.js +0 -48
- package/static-web/_next/static/chunks/5152-2db55438be7ecb94.js +0 -1
- package/static-web/_next/static/chunks/5200-6c82e5ce54a95b4b.js +0 -6
- package/static-web/_next/static/chunks/6274-f173cb227ad1ef21.js +0 -1
- package/static-web/_next/static/chunks/6947.7e50e18da7dc4aef.js +0 -1
- package/static-web/_next/static/chunks/725-3b648bf7929ff78d.js +0 -1
- package/static-web/_next/static/chunks/9479-7b304601a56304cd.js +0 -32
- package/static-web/_next/static/chunks/app/agents/[agentKey]/page-44c493b744d18249.js +0 -1
- package/static-web/_next/static/chunks/app/agents/page-6591b482a193e657.js +0 -1
- package/static-web/_next/static/chunks/app/layout-5966cd317bbed698.js +0 -114
- package/static-web/_next/static/chunks/app/page-5c9489e28657376e.js +0 -1
- package/static-web/_next/static/chunks/app/trash/page-d87207a63591ee16.js +0 -1
- package/static-web/_next/static/chunks/app/view/[...path]/page-1898f4ae4ab28db0.js +0 -12
- package/static-web/_next/static/chunks/webpack-75abef9cbb1ea912.js +0 -1
- package/static-web/_next/static/css/0d2fd378b5449176.css +0 -1
- /package/_standalone/__next/static/{J9M4pgRyRHH7Ofbxuuklh → apol5mbXb7N_sqaKgpXN1}/_buildManifest.js +0 -0
- /package/_standalone/__next/static/{J9M4pgRyRHH7Ofbxuuklh → apol5mbXb7N_sqaKgpXN1}/_ssgManifest.js +0 -0
- /package/static-web/_next/static/{J9M4pgRyRHH7Ofbxuuklh → apol5mbXb7N_sqaKgpXN1}/_buildManifest.js +0 -0
- /package/static-web/_next/static/{J9M4pgRyRHH7Ofbxuuklh → apol5mbXb7N_sqaKgpXN1}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
# Types
|
|
2
|
+
|
|
3
|
+
## Introspection
|
|
4
|
+
|
|
5
|
+
*New in Koffi 2.0: `koffi.resolve()`, new in Koffi 2.2: `koffi.offsetof()`*
|
|
6
|
+
|
|
7
|
+
> [!NOTE]
|
|
8
|
+
> The value returned by `introspect()` has **changed in version 2.0 and in version 2.2**.
|
|
9
|
+
>
|
|
10
|
+
> In Koffi 1.x, it could only be used with struct types and returned the object passed to koffi.struct() with the member names and types.
|
|
11
|
+
>
|
|
12
|
+
> Starting in Koffi 2.2, each record member is exposed as an object containing the name, the type and the offset within the record.
|
|
13
|
+
>
|
|
14
|
+
> Consult the [migration guide](migration) for more information.
|
|
15
|
+
|
|
16
|
+
Use `koffi.introspect(type)` to get detailed information about a type: name, primitive, size, alignment, members (record types), reference type (array, pointer) and length (array).
|
|
17
|
+
|
|
18
|
+
```js
|
|
19
|
+
const FoobarType = koffi.struct('FoobarType', {
|
|
20
|
+
a: 'int',
|
|
21
|
+
b: 'char *',
|
|
22
|
+
c: 'double'
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
console.log(koffi.introspect(FoobarType));
|
|
26
|
+
|
|
27
|
+
// Expected result on 64-bit machines:
|
|
28
|
+
// {
|
|
29
|
+
// name: 'FoobarType',
|
|
30
|
+
// primitive: 'Record',
|
|
31
|
+
// size: 24,
|
|
32
|
+
// alignment: 8,
|
|
33
|
+
// members: {
|
|
34
|
+
// a: { name: 'a', type: [External: 4b28a60], offset: 0 },
|
|
35
|
+
// b: { name: 'b', type: [External: 4b292e0], offset: 8 },
|
|
36
|
+
// c: { name: 'c', type: [External: 4b29260], offset: 16 }
|
|
37
|
+
// }
|
|
38
|
+
// }
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Koffi also exposes a few more utility functions to get a subset of this information:
|
|
42
|
+
|
|
43
|
+
- `koffi.sizeof(type)` to get the size of a type
|
|
44
|
+
- `koffi.alignof(type)` to get the alignment of a type
|
|
45
|
+
- `koffi.offsetof(type, member_name)` to get the offset of a record member
|
|
46
|
+
- `koffi.resolve(type)` to get the resolved type object from a type string
|
|
47
|
+
|
|
48
|
+
Just like before, you can refer to primitive types by their name or through `koffi.types`:
|
|
49
|
+
|
|
50
|
+
```js
|
|
51
|
+
// These two lines do the same:
|
|
52
|
+
console.log(koffi.sizeof('long'));
|
|
53
|
+
console.log(koffi.sizeof(koffi.types.long));
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## Aliases
|
|
57
|
+
|
|
58
|
+
*New in Koffi 2.0*
|
|
59
|
+
|
|
60
|
+
You can alias a type with `koffi.alias(name, type)`. Aliased types are completely equivalent.
|
|
61
|
+
|
|
62
|
+
## Circular references
|
|
63
|
+
|
|
64
|
+
*New in Koffi 2.10.0*
|
|
65
|
+
|
|
66
|
+
In some cases, composite types can point to each other and thus depend on each other. This can also happen when a function takes a pointer to a struct that also contains a function pointer.
|
|
67
|
+
|
|
68
|
+
To deal with this, you can create an opaque type and redefine it later to a concrete struct or union type, as shown below.
|
|
69
|
+
|
|
70
|
+
```js
|
|
71
|
+
const Type1 = koffi.opaque('Type1');
|
|
72
|
+
|
|
73
|
+
const Type2 = koffi.struct('Type2', {
|
|
74
|
+
ptr: 'Type1 *',
|
|
75
|
+
i: 'int'
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
// Redefine Type1 to a concrete type
|
|
79
|
+
koffi.struct(Type1, {
|
|
80
|
+
ptr: 'Type2 *',
|
|
81
|
+
f: 'float'
|
|
82
|
+
});
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
> [!NOTE]
|
|
86
|
+
> You must use a proper type object when you redefine the type. If you only have the name, use `koffi.resolve()` to get a type object from a type string.
|
|
87
|
+
>
|
|
88
|
+
> ```js
|
|
89
|
+
> const MyType = koffi.opaque('MyType');
|
|
90
|
+
>
|
|
91
|
+
> // This does not work, you must use the MyType object and not a type string
|
|
92
|
+
> koffi.struct('MyType', {
|
|
93
|
+
> ptr: 'Type2 *',
|
|
94
|
+
> f: 'float'
|
|
95
|
+
> });
|
|
96
|
+
|
|
97
|
+
# Settings
|
|
98
|
+
|
|
99
|
+
## Memory usage
|
|
100
|
+
|
|
101
|
+
For synchronous/normal calls, Koffi uses two preallocated memory blocks:
|
|
102
|
+
|
|
103
|
+
- One to construct the C stack and assign registers, subsequently used by the platform-specific assembly code (1 MiB by default)
|
|
104
|
+
- One to allocate strings and objects/structs (2 MiB by default)
|
|
105
|
+
|
|
106
|
+
Unless very big strings or objects (at least more than one page of memory) are used, Koffi does not directly allocate any extra memory during calls or callbacks. However, please note that the JS engine (V8) might.
|
|
107
|
+
|
|
108
|
+
The size (in bytes) of these preallocated blocks can be changed. Use `koffi.config()` to get an object with the settings, and `koffi.config(obj)` to apply new settings.
|
|
109
|
+
|
|
110
|
+
```js
|
|
111
|
+
let config = koffi.config();
|
|
112
|
+
console.log(config);
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
The same is true for asynchronous calls. When an asynchronous call is made, Koffi will allocate new blocks unless there is an unused (resident) set of blocks still available. Once the asynchronous call is finished, these blocks are freed if there are more than `resident_async_pools` sets of blocks left around. By default, the preallocated stack and heap blocks are much smaller than for synchronous calls (see [default settings](#default-settings)).
|
|
116
|
+
|
|
117
|
+
> [!CAUTION]
|
|
118
|
+
> The **memory usage can blow up easily** if you increase the size of async memory blocks and many async calls are running or queued at the same time !
|
|
119
|
+
>
|
|
120
|
+
> For example, with 4096 running/queued async calls, a stack size of 256 kiB and a heap size of 512 kiB, the memory usage will reach approximately _4096 * (256 + 512) kiB ≈ 3 GiB_ just for Koffi, even though most of it will be freed once the number of queued calls goes down.
|
|
121
|
+
|
|
122
|
+
Async calls run on worker threads, the number of which depends on the number of cores in your machine. Additional async calls are queued, up to `max_async_calls` can run and be queued at the same time. If you try to make an async call once the queue if full, an exception will be thrown.
|
|
123
|
+
|
|
124
|
+
## Default settings
|
|
125
|
+
|
|
126
|
+
*Changed in Koffi 2.15*
|
|
127
|
+
|
|
128
|
+
Setting | Default | Maximum | Description
|
|
129
|
+
-------------------- | ------- | ------- | ----------------------------------------------------
|
|
130
|
+
sync_stack_size | 1 MiB | 16 MiB | Stack size for synchronous calls
|
|
131
|
+
sync_heap_size | 2 MiB | 16 MiB | Heap size for synchronous calls
|
|
132
|
+
async_stack_size | 128 kiB | 16 MiB | Stack size for asynchronous calls
|
|
133
|
+
async_heap_size | 128 kiB | 16 MiB | Heap size for asynchronous calls
|
|
134
|
+
resident_async_pools | 4 | 16 | Number of resident pools for asynchronous calls
|
|
135
|
+
max_async_calls | 256 | 4096 | Maximum number of queued asynchronous calls
|
|
136
|
+
max_type_size | 64 MiB | 512 MiB | Maximum size of Koffi types (for arrays and structs)
|
|
137
|
+
|
|
138
|
+
# Usage statistics
|
|
139
|
+
|
|
140
|
+
*New in Koffi 2.3.2*
|
|
141
|
+
|
|
142
|
+
You can use `koffi.stats()` to get a few statistics related to Koffi.
|
|
143
|
+
|
|
144
|
+
# POSIX error codes
|
|
145
|
+
|
|
146
|
+
*New in Koffi 2.3.14*
|
|
147
|
+
|
|
148
|
+
You can use `koffi.errno()` to get the current errno value, and `koffi.errno(value)` to change it.
|
|
149
|
+
|
|
150
|
+
The standard POSIX error codes are available in `koffi.os.errno`, as shown below:
|
|
151
|
+
|
|
152
|
+
```js
|
|
153
|
+
const assert = require('assert');
|
|
154
|
+
|
|
155
|
+
// ES6 syntax: import koffi from 'koffi';
|
|
156
|
+
const koffi = require('koffi');
|
|
157
|
+
|
|
158
|
+
const lib = koffi.load('libc.so.6');
|
|
159
|
+
|
|
160
|
+
const close = lib.func('int close(int fd)');
|
|
161
|
+
|
|
162
|
+
close(-1);
|
|
163
|
+
assert.equal(koffi.errno(), koffi.os.errno.EBADF);
|
|
164
|
+
|
|
165
|
+
console.log('close() with invalid FD is POSIX compliant!');
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
# Reset internal state
|
|
169
|
+
|
|
170
|
+
*New in Koffi 2.5.19*
|
|
171
|
+
|
|
172
|
+
You can use `koffi.reset()` to clear some Koffi internal state such as:
|
|
173
|
+
|
|
174
|
+
- Parser type names
|
|
175
|
+
- Asynchronous function broker (useful to avoid false positive with `jest --detectOpenHandles`)
|
|
176
|
+
|
|
177
|
+
This function is mainly intended for test code, when you execute the same code over and over and you need to reuse type names.
|
|
178
|
+
|
|
179
|
+
> [!WARNING]
|
|
180
|
+
> Trying to use a function or a type that was initially defined before the reset is undefined behavior and will likely lead to a crash!
|
|
@@ -0,0 +1,305 @@
|
|
|
1
|
+
# Output and input/output
|
|
2
|
+
|
|
3
|
+
For simplicity, and because Javascript only has value semantics for primitive types, Koffi can marshal out (or in/out) multiple types of parameters:
|
|
4
|
+
|
|
5
|
+
- [Structs](input#struct-types) (to/from JS objects)
|
|
6
|
+
- [Unions](unions)
|
|
7
|
+
- [Opaque types](input#opaque-types)
|
|
8
|
+
- String buffers
|
|
9
|
+
|
|
10
|
+
In order to change an argument from input-only to output or input/output, use the following functions:
|
|
11
|
+
|
|
12
|
+
- `koffi.out()` on a pointer, e.g. `koffi.out(koffi.pointer(timeval))` (where timeval is a struct type)
|
|
13
|
+
- `koffi.inout()` for dual input/output parameters
|
|
14
|
+
|
|
15
|
+
The same can be done when declaring a function with a C-like prototype string, with the MSDN-like type qualifiers:
|
|
16
|
+
|
|
17
|
+
- `_Out_` for output parameters
|
|
18
|
+
- `_Inout_` for dual input/output parameters
|
|
19
|
+
|
|
20
|
+
> [!TIP]
|
|
21
|
+
> The Win32 API provides many functions that take a pointer to an empty struct for output, except that the first member of the struct (often named `cbSize`) must be set to the size of the struct before calling the function. An example of such a function is `GetLastInputInfo()`.
|
|
22
|
+
>
|
|
23
|
+
> In order to use these functions in Koffi, you must define the parameter as `_Inout_`: the value must be copied in (to provide `cbSize` to the function) and then the filled struct must be copied out to JS.
|
|
24
|
+
>
|
|
25
|
+
> Look at the [Win32 example](#win32-struct-example) below for more information.
|
|
26
|
+
|
|
27
|
+
## Primitive value
|
|
28
|
+
|
|
29
|
+
This Windows example enumerate all Chrome windows along with their PID and their title. The `GetWindowThreadProcessId()` function illustrates how to get a primitive value from an output argument.
|
|
30
|
+
|
|
31
|
+
```js
|
|
32
|
+
// ES6 syntax: import koffi from 'koffi';
|
|
33
|
+
const koffi = require('koffi');
|
|
34
|
+
|
|
35
|
+
const user32 = koffi.load('user32.dll');
|
|
36
|
+
|
|
37
|
+
const DWORD = koffi.alias('DWORD', 'uint32_t');
|
|
38
|
+
const HANDLE = koffi.pointer('HANDLE', koffi.opaque());
|
|
39
|
+
const HWND = koffi.alias('HWND', HANDLE);
|
|
40
|
+
|
|
41
|
+
const FindWindowEx = user32.func('HWND __stdcall FindWindowExW(HWND hWndParent, HWND hWndChildAfter, const char16_t *lpszClass, const char16_t *lpszWindow)');
|
|
42
|
+
const GetWindowThreadProcessId = user32.func('DWORD __stdcall GetWindowThreadProcessId(HWND hWnd, _Out_ DWORD *lpdwProcessId)');
|
|
43
|
+
const GetWindowText = user32.func('int __stdcall GetWindowTextA(HWND hWnd, _Out_ uint8_t *lpString, int nMaxCount)');
|
|
44
|
+
|
|
45
|
+
for (let hwnd = null;;) {
|
|
46
|
+
hwnd = FindWindowEx(0, hwnd, 'Chrome_WidgetWin_1', null);
|
|
47
|
+
|
|
48
|
+
if (!hwnd)
|
|
49
|
+
break;
|
|
50
|
+
|
|
51
|
+
// Get PID
|
|
52
|
+
let pid;
|
|
53
|
+
{
|
|
54
|
+
let ptr = [null];
|
|
55
|
+
let tid = GetWindowThreadProcessId(hwnd, ptr);
|
|
56
|
+
|
|
57
|
+
if (!tid) {
|
|
58
|
+
// Maybe the process ended in-between?
|
|
59
|
+
continue;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
pid = ptr[0];
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
// Get window title
|
|
66
|
+
let title;
|
|
67
|
+
{
|
|
68
|
+
let buf = Buffer.allocUnsafe(1024);
|
|
69
|
+
let length = GetWindowText(hwnd, buf, buf.length);
|
|
70
|
+
|
|
71
|
+
if (!length) {
|
|
72
|
+
// Maybe the process ended in-between?
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
title = koffi.decode(buf, 'char', length);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
console.log({ PID: pid, Title: title });
|
|
80
|
+
}
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
## Struct examples
|
|
84
|
+
|
|
85
|
+
### POSIX struct example
|
|
86
|
+
|
|
87
|
+
This example calls the POSIX function `gettimeofday()`, and uses the prototype-like syntax.
|
|
88
|
+
|
|
89
|
+
```js
|
|
90
|
+
// ES6 syntax: import koffi from 'koffi';
|
|
91
|
+
const koffi = require('koffi');
|
|
92
|
+
|
|
93
|
+
const lib = koffi.load('libc.so.6');
|
|
94
|
+
|
|
95
|
+
const timeval = koffi.struct('timeval', {
|
|
96
|
+
tv_sec: 'unsigned int',
|
|
97
|
+
tv_usec: 'unsigned int'
|
|
98
|
+
});
|
|
99
|
+
const timezone = koffi.struct('timezone', {
|
|
100
|
+
tz_minuteswest: 'int',
|
|
101
|
+
tz_dsttime: 'int'
|
|
102
|
+
});
|
|
103
|
+
|
|
104
|
+
// The _Out_ qualifiers instruct Koffi to marshal out the values
|
|
105
|
+
const gettimeofday = lib.func('int gettimeofday(_Out_ timeval *tv, _Out_ timezone *tz)');
|
|
106
|
+
|
|
107
|
+
let tv = {};
|
|
108
|
+
gettimeofday(tv, null);
|
|
109
|
+
|
|
110
|
+
console.log(tv);
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### Win32 struct example
|
|
114
|
+
|
|
115
|
+
Many Win32 functions that use struct outputs require you to set a size member (often named `cbSize`). These functions won't work with `_Out_` because the size value must be copied from JS to C, use `_Inout_` in this case.
|
|
116
|
+
|
|
117
|
+
```js
|
|
118
|
+
// ES6 syntax: import koffi from 'koffi';
|
|
119
|
+
const koffi = require('koffi');
|
|
120
|
+
|
|
121
|
+
const user32 = koffi.load('user32.dll');
|
|
122
|
+
|
|
123
|
+
const LASTINPUTINFO = koffi.struct('LASTINPUTINFO', {
|
|
124
|
+
cbSize: 'uint',
|
|
125
|
+
dwTime: 'uint32'
|
|
126
|
+
});
|
|
127
|
+
const GetLastInputInfo = user32.func('bool __stdcall GetLastInputInfo(_Inout_ LASTINPUTINFO *plii)');
|
|
128
|
+
|
|
129
|
+
let info = { cbSize: koffi.sizeof(LASTINPUTINFO) };
|
|
130
|
+
let success = GetLastInputInfo(info);
|
|
131
|
+
|
|
132
|
+
console.log(success, info);
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
## Opaque type example
|
|
136
|
+
|
|
137
|
+
This example opens an in-memory SQLite database, and uses the node-ffi-style function declaration syntax.
|
|
138
|
+
|
|
139
|
+
```js
|
|
140
|
+
// ES6 syntax: import koffi from 'koffi';
|
|
141
|
+
const koffi = require('koffi');
|
|
142
|
+
|
|
143
|
+
const lib = koffi.load('sqlite3.so');
|
|
144
|
+
|
|
145
|
+
const sqlite3 = koffi.opaque('sqlite3');
|
|
146
|
+
|
|
147
|
+
// Use koffi.out() on a double pointer to copy out (from C to JS) after the call
|
|
148
|
+
const sqlite3_open_v2 = lib.func('sqlite3_open_v2', 'int', ['str', koffi.out(koffi.pointer(sqlite3, 2)), 'int', 'str']);
|
|
149
|
+
const sqlite3_close_v2 = lib.func('sqlite3_close_v2', 'int', [koffi.pointer(sqlite3)]);
|
|
150
|
+
|
|
151
|
+
const SQLITE_OPEN_READWRITE = 0x2;
|
|
152
|
+
const SQLITE_OPEN_CREATE = 0x4;
|
|
153
|
+
|
|
154
|
+
let out = [null];
|
|
155
|
+
if (sqlite3_open_v2(':memory:', out, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, null) != 0)
|
|
156
|
+
throw new Error('Failed to open database');
|
|
157
|
+
let db = out[0];
|
|
158
|
+
|
|
159
|
+
sqlite3_close_v2(db);
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
## String buffer example
|
|
163
|
+
|
|
164
|
+
*New in Koffi 2.2*
|
|
165
|
+
|
|
166
|
+
This example calls a C function to concatenate two strings to a pre-allocated string buffer. Since JS strings are immutable, you must pass an array with a single string instead.
|
|
167
|
+
|
|
168
|
+
```c
|
|
169
|
+
void ConcatToBuffer(const char *str1, const char *str2, char *out)
|
|
170
|
+
{
|
|
171
|
+
size_t len = 0;
|
|
172
|
+
|
|
173
|
+
for (size_t i = 0; str1[i]; i++) {
|
|
174
|
+
out[len++] = str1[i];
|
|
175
|
+
}
|
|
176
|
+
for (size_t i = 0; str2[i]; i++) {
|
|
177
|
+
out[len++] = str2[i];
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
out[len] = 0;
|
|
181
|
+
}
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
```js
|
|
185
|
+
const ConcatToBuffer = lib.func('void ConcatToBuffer(const char *str1, const char *str2, _Out_ char *out)');
|
|
186
|
+
|
|
187
|
+
let str1 = 'Hello ';
|
|
188
|
+
let str2 = 'Friends!';
|
|
189
|
+
|
|
190
|
+
// We need to reserve space for the output buffer! Including the NUL terminator
|
|
191
|
+
// because ConcatToBuffer() expects so, but Koffi can convert back to a JS string
|
|
192
|
+
// without it (if we reserve the right size).
|
|
193
|
+
let out = ['\0'.repeat(str1.length + str2.length + 1)];
|
|
194
|
+
|
|
195
|
+
ConcatToBuffer(str1, str2, out);
|
|
196
|
+
|
|
197
|
+
console.log(out[0]);
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
# Output buffers
|
|
201
|
+
|
|
202
|
+
In most cases, you can use buffers and typed arrays to provide output buffers. This works as long as the buffer only gets used while the native C function is being called. See [transient pointers](#transient-pointers) below for an example.
|
|
203
|
+
|
|
204
|
+
> [!WARNING]
|
|
205
|
+
> It is unsafe to keep the pointer around in the native code, or to change the contents outside of the function call where it is provided.
|
|
206
|
+
>
|
|
207
|
+
> If you need to provide a pointer that will be kept around, allocate memory with [koffi.alloc()](#stable-pointers) instead.
|
|
208
|
+
|
|
209
|
+
## Transient pointers
|
|
210
|
+
|
|
211
|
+
*New in Koffi 2.3*
|
|
212
|
+
|
|
213
|
+
You can use buffers and typed arrays for output (and input/output) pointer parameters. Simply pass the buffer as an argument and the native function will receive a pointer to its contents.
|
|
214
|
+
|
|
215
|
+
Once the native function returns, you can decode the content with `koffi.decode(value, type)` as in the following example:
|
|
216
|
+
|
|
217
|
+
```js
|
|
218
|
+
// ES6 syntax: import koffi from 'koffi';
|
|
219
|
+
const koffi = require('koffi');
|
|
220
|
+
|
|
221
|
+
const lib = koffi.load('libc.so.6');
|
|
222
|
+
|
|
223
|
+
const Vec3 = koffi.struct('Vec3', {
|
|
224
|
+
x: 'float32',
|
|
225
|
+
y: 'float32',
|
|
226
|
+
z: 'float32'
|
|
227
|
+
})
|
|
228
|
+
|
|
229
|
+
const memcpy = lib.func('void *memcpy(_Out_ void *dest, const void *src, size_t size)');
|
|
230
|
+
|
|
231
|
+
let vec1 = { x: 1, y: 2, z: 3 };
|
|
232
|
+
let vec2 = null;
|
|
233
|
+
|
|
234
|
+
// Copy the vector in a convoluted way through memcpy
|
|
235
|
+
{
|
|
236
|
+
let src = koffi.as(vec1, 'Vec3 *');
|
|
237
|
+
let dest = Buffer.allocUnsafe(koffi.sizeof(Vec3));
|
|
238
|
+
|
|
239
|
+
memcpy(dest, src, koffi.sizeof(Vec3));
|
|
240
|
+
|
|
241
|
+
vec2 = koffi.decode(dest, Vec3);
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
// CHange vector1, leaving copy alone
|
|
245
|
+
[vec1.x, vec1.y, vec1.z] = [vec1.z, vec1.y, vec1.x];
|
|
246
|
+
|
|
247
|
+
console.log(vec1); // { x: 3, y: 2, z: 1 }
|
|
248
|
+
console.log(vec2); // { x: 1, y: 2, z: 3 }
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
See [decoding variables](variables#decode-to-js-values) for more information about the decode function.
|
|
252
|
+
|
|
253
|
+
## Stable pointers
|
|
254
|
+
|
|
255
|
+
*New in Koffi 2.8*
|
|
256
|
+
|
|
257
|
+
In some cases, the native code may need to change the output buffer at a later time, maybe during a later call or from another thread.
|
|
258
|
+
|
|
259
|
+
In this case, it is **not safe to use buffers or typed arrays**!
|
|
260
|
+
|
|
261
|
+
However, you can use `koffi.alloc(type, len)` to allocate memory and get a pointer that won't move, and can be safely used at any time by the native code. Use [koffi.decode()](variables#decode-to-js-values) to read data from the pointer when needed.
|
|
262
|
+
|
|
263
|
+
The example below sets up some memory to be used as an output buffer where a concatenation function appends a string on each call.
|
|
264
|
+
|
|
265
|
+
```c
|
|
266
|
+
#include <assert.h>
|
|
267
|
+
#include <stddef.h>
|
|
268
|
+
|
|
269
|
+
static char *buf_ptr;
|
|
270
|
+
static size_t buf_len;
|
|
271
|
+
static size_t buf_size;
|
|
272
|
+
|
|
273
|
+
void reset_buffer(char *buf, size_t size)
|
|
274
|
+
{
|
|
275
|
+
assert(size > 1);
|
|
276
|
+
|
|
277
|
+
buf_ptr = buf;
|
|
278
|
+
buf_len = 0;
|
|
279
|
+
buf_size = size - 1; // Keep space for trailing NUL
|
|
280
|
+
|
|
281
|
+
buf_ptr[0] = 0;
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
void append_str(const char *str)
|
|
285
|
+
{
|
|
286
|
+
for (size_t i = 0; str[i] && buf_len < buf_size; i++, buf_len++) {
|
|
287
|
+
buf_ptr[buf_len] = str[i];
|
|
288
|
+
}
|
|
289
|
+
buf_ptr[buf_len] = 0;
|
|
290
|
+
}
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
```js
|
|
294
|
+
const reset_buffer = lib.func('void reset_buffer(char *buf, size_t size)');
|
|
295
|
+
const append_str = lib.func('void append_str(const char *str)');
|
|
296
|
+
|
|
297
|
+
let output = koffi.alloc('char', 64);
|
|
298
|
+
reset_buffer(output, 64);
|
|
299
|
+
|
|
300
|
+
append_str('Hello');
|
|
301
|
+
console.log(koffi.decode(output, 'char', -1)); // Prints Hello
|
|
302
|
+
|
|
303
|
+
append_str(' World!');
|
|
304
|
+
console.log(koffi.decode(output, 'char', -1)); // Prints Hello World!
|
|
305
|
+
```
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
# Bundling
|
|
2
|
+
|
|
3
|
+
## Native modules
|
|
4
|
+
|
|
5
|
+
*Simplified in Koffi 2.5.9*
|
|
6
|
+
|
|
7
|
+
Koffi uses native modules to work. The NPM package contains binaries for various platforms and architectures, and the appropriate module is selected at runtime.
|
|
8
|
+
|
|
9
|
+
> [!IMPORTANT]
|
|
10
|
+
> Please note that Koffi is meant for Node.js (or Electron) and not for browsers! It it not possible to load native libraries inside a browser!
|
|
11
|
+
|
|
12
|
+
In theory, the **packagers/bundlers should be able to find all native modules** because they are explictly listed in the Javascript file (as static strings) and package them somehow.
|
|
13
|
+
|
|
14
|
+
If that is not the case, you can manually arrange to copy the `node_modules/koffi/build/koffi` directory next to your bundled script.
|
|
15
|
+
|
|
16
|
+
Here is an example that would work:
|
|
17
|
+
|
|
18
|
+
```text
|
|
19
|
+
koffi/
|
|
20
|
+
win32_x64/
|
|
21
|
+
koffi.node
|
|
22
|
+
linux_x64/
|
|
23
|
+
koffi.node
|
|
24
|
+
...
|
|
25
|
+
MyBundle.js
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
When running in Electron, Koffi will also try to find the native module in `process.resourcesPath`. For an Electron app you could do something like this
|
|
29
|
+
|
|
30
|
+
```text
|
|
31
|
+
locales/
|
|
32
|
+
resources/
|
|
33
|
+
koffi/
|
|
34
|
+
win32_ia32/
|
|
35
|
+
koffi.node
|
|
36
|
+
win32_x64/
|
|
37
|
+
koffi.node
|
|
38
|
+
...
|
|
39
|
+
MyApp.exe
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Indirect loader
|
|
43
|
+
|
|
44
|
+
*New in Koffi 2.6.2*
|
|
45
|
+
|
|
46
|
+
Some bundlers (such as vite) don't like when require is used with native modules.
|
|
47
|
+
|
|
48
|
+
In this case, you can use `require('koffi/indirect')` but you will need to make sure that the native Koffi modules are packaged properly.
|
|
49
|
+
|
|
50
|
+
# Packaging examples
|
|
51
|
+
|
|
52
|
+
## Electron with electron-builder
|
|
53
|
+
|
|
54
|
+
Packaging with electron-builder should work as-is.
|
|
55
|
+
|
|
56
|
+
Take a look at the full [working example in the repository](https://codeberg.org/Koromix/rygel/src/branch/master/src/koffi/examples/electron-builder).
|
|
57
|
+
|
|
58
|
+
## Electron Forge
|
|
59
|
+
|
|
60
|
+
Packaging with Electron Force should work as-is, even when using webpack as configured initially when you run:
|
|
61
|
+
|
|
62
|
+
```sh
|
|
63
|
+
npm init electron-app@latest my-app -- --template=webpack
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
Take a look at the full [working example in the repository](https://codeberg.org/Koromix/rygel/src/branch/master/src/koffi/examples/electron-forge).
|
|
67
|
+
|
|
68
|
+
## NW.js
|
|
69
|
+
|
|
70
|
+
Packagers such as nw-builder should work as-is.
|
|
71
|
+
|
|
72
|
+
You can find a full [working example in the repository](https://codeberg.org/Koromix/rygel/src/branch/master/src/koffi/examples/nwjs).
|
|
73
|
+
|
|
74
|
+
## Node.js and esbuild
|
|
75
|
+
|
|
76
|
+
You can easily tell esbuild to copy the native files with the copy loader and things should just work. Use something like:
|
|
77
|
+
|
|
78
|
+
```sh
|
|
79
|
+
esbuild index.js --platform=node --bundle --loader:.node=copy --outdir=dist/
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
You can find a full [working example in the repository](https://codeberg.org/Koromix/rygel/src/branch/master/src/koffi/examples/node-esbuild).
|
|
83
|
+
|
|
84
|
+
## Node.js and yao-pkg
|
|
85
|
+
|
|
86
|
+
Use [yao-pkg](https://github.com/yao-pkg/pkg) to make binary packages of your Node.js-based project.
|
|
87
|
+
|
|
88
|
+
You can find a full [working example in the repository](https://codeberg.org/Koromix/rygel/src/branch/master/src/koffi/examples/yao-pkg).
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Node.js
|
|
2
|
+
|
|
3
|
+
Koffi requires a recent [Node.js](https://nodejs.org/) version with [N-API](https://nodejs.org/api/n-api.html) version 8 support:
|
|
4
|
+
|
|
5
|
+
- Node < 12.22.0 is not supported
|
|
6
|
+
- _Node 12.x_: Node 12.22.0 or newer
|
|
7
|
+
- _Node 14.x_: Node 14.17.0 or newer
|
|
8
|
+
- _Node 15.x_: Node 15.12.0 or newer
|
|
9
|
+
- Node 16.0.0 or later versions
|
|
10
|
+
|
|
11
|
+
Use [NVM](https://github.com/nvm-sh/nvm) to install more recent Node versions on older Linux distributions.
|
|
12
|
+
|
|
13
|
+
# Supported platforms
|
|
14
|
+
|
|
15
|
+
The following combinations of OS and architectures __are officially supported and tested__ at the moment:
|
|
16
|
+
|
|
17
|
+
ISA / OS | Windows | Linux (glibc) | Linux (musl) | macOS | FreeBSD | OpenBSD
|
|
18
|
+
------------------ | ----------- | ------------- | ------------ | ----------- | ----------- | --------
|
|
19
|
+
x86 (IA32) [^1] | ✅ Yes | ✅ Yes | 🟨 Probably | ⬜️ *N/A* | ✅ Yes | ✅ Yes
|
|
20
|
+
x86_64 (AMD64) | ✅ Yes | ✅ Yes | ✅ Yes | ✅ Yes | ✅ Yes | ✅ Yes
|
|
21
|
+
ARM32 LE [^2] | ⬜️ *N/A* | ✅ Yes | 🟨 Probably | ⬜️ *N/A* | 🟨 Probably | 🟨 Probably
|
|
22
|
+
ARM64 (AArch64) LE | ✅ Yes | ✅ Yes | ✅ Yes | ✅ Yes | ✅ Yes | 🟨 Probably
|
|
23
|
+
RISC-V 64 [^3] | ⬜️ *N/A* | ✅ Yes | 🟨 Probably | ⬜️ *N/A* | 🟨 Probably | 🟨 Probably
|
|
24
|
+
LoongArch64 | ⬜️ *N/A* | ✅ Yes | 🟨 Probably | ⬜️ *N/A* | 🟨 Probably | 🟨 Probably
|
|
25
|
+
|
|
26
|
+
<div class="legend">✅ Yes | 🟨 Probably | ⬜️ Not applicable</div>
|
|
27
|
+
|
|
28
|
+
[^1]: The following call conventions are supported for forward calls: cdecl, stdcall, MS fastcall, thiscall. Only cdecl and stdcall can be used for C to JS callbacks.
|
|
29
|
+
[^2]: The prebuilt binary uses the hard float ABI and expects a VFP coprocessor. Build from source to use Koffi with a different ABI (softfp, soft).
|
|
30
|
+
[^3]: The prebuilt binary uses the LP64D (double-precision float) ABI. The LP64 ABI is supported in theory if you build Koffi from source (untested), the LP64F ABI is not supported.
|
|
31
|
+
|
|
32
|
+
For all fully supported platforms (green check marks), a prebuilt binary is included in the NPM package which means you can install Koffi without a C++ compiler.
|
|
33
|
+
|
|
34
|
+
<style>
|
|
35
|
+
table td:not(:first-child) { text-align: center; }
|
|
36
|
+
</style>
|