shortcutxl 0.3.76 → 0.3.78
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/BINARY-INVENTORY.json +813 -813
- package/CHANGELOG.md +14 -0
- package/dist/ai/models.d.ts +10 -6
- package/dist/ai/models.generated.d.ts +72 -0
- package/dist/ai/models.generated.js +33 -0
- package/dist/ai/models.js +36 -13
- package/dist/ai/providers/anthropic.d.ts +4 -2
- package/dist/ai/providers/anthropic.js +59 -29
- package/dist/ai/providers/azure-openai-responses.d.ts +2 -1
- package/dist/ai/providers/azure-openai-responses.js +4 -20
- package/dist/ai/providers/google-vertex.d.ts +8 -2
- package/dist/ai/providers/google-vertex.js +66 -54
- package/dist/ai/providers/google.js +15 -48
- package/dist/ai/providers/openai-completions.d.ts +4 -1
- package/dist/ai/providers/openai-completions.js +26 -10
- package/dist/ai/providers/openai-reasoning.d.ts +5 -0
- package/dist/ai/providers/openai-reasoning.js +13 -0
- package/dist/ai/providers/openai-responses-shared.js +1 -1
- package/dist/ai/providers/openai-responses.d.ts +6 -2
- package/dist/ai/providers/openai-responses.js +28 -23
- package/dist/ai/providers/simple-options.d.ts +2 -3
- package/dist/ai/providers/simple-options.js +4 -6
- package/dist/ai/types.d.ts +19 -2
- package/dist/app/agent-session-runtime-adapter.js +7 -6
- package/dist/app/agent-session.d.ts +0 -15
- package/dist/app/agent-session.js +0 -37
- package/dist/app/approvals/approval-errors.d.ts +15 -0
- package/dist/app/approvals/approval-errors.js +14 -0
- package/dist/app/approvals/runtime-approval-gates.d.ts +1 -2
- package/dist/app/approvals/tool-approval.d.ts +1 -0
- package/dist/app/approvals/tool-approval.js +11 -23
- package/dist/app/approvals/types.d.ts +0 -14
- package/dist/app/approvals/types.js +0 -2
- package/dist/app/background/tool-summaries.js +0 -2
- package/dist/app/extensions/slash-commands.js +1 -3
- package/dist/app/local/tools/execute-code/executor.d.ts +1 -1
- package/dist/app/local/tools/execute-code/executor.js +20 -10
- package/dist/app/local/tools/execute-code/tool.js +21 -2
- package/dist/app/modes/action/agent.js +4 -5
- package/dist/app/modes/ask/agent.js +4 -6
- package/dist/app/modes/index.js +20 -10
- package/dist/app/modes/installation/agent.js +4 -5
- package/dist/app/modes/manage/agent.js +3 -4
- package/dist/app/modes/manage/prompt.js +1 -2
- package/dist/app/modes/metadata.d.ts +31 -0
- package/dist/app/modes/metadata.js +35 -0
- package/dist/app/modes/plan/agent.js +5 -8
- package/dist/app/modes/plan/prompt.js +3 -3
- package/dist/app/permissions/runtime-approval-flow.d.ts +1 -5
- package/dist/app/permissions/runtime-approval-flow.js +0 -28
- package/dist/app/permissions/tool-gates.d.ts +2 -3
- package/dist/app/permissions/tool-gates.js +3 -81
- package/dist/app/prompts/com-api.js +1 -1
- package/dist/app/prompts/shared-guidelines.js +7 -3
- package/dist/app/providers/google-vertex-gateway.js +4 -51
- package/dist/app/providers/model-registry.d.ts +1 -0
- package/dist/app/providers/model-registry.js +39 -0
- package/dist/app/providers/model-resolver.js +10 -7
- package/dist/app/providers/register-shortcut-provider.js +6 -6
- package/dist/app/providers/shortcut-api-v2-transport.js +4 -0
- package/dist/app/providers/shortcut-llm-proxy-client.d.ts +2 -2
- package/dist/app/providers/shortcut-llm-proxy-client.js +1 -0
- package/dist/app/resources/package-manager.js +2 -123
- package/dist/app/resources/resource-patterns.d.ts +9 -0
- package/dist/app/resources/resource-patterns.js +120 -0
- package/dist/app/session/forked-agent.d.ts +2 -2
- package/dist/app/session/model-manager.js +3 -2
- package/dist/app/session/session-lifecycle.js +3 -2
- package/dist/app/session/session-models.d.ts +2 -0
- package/dist/app/session/session-models.js +14 -6
- package/dist/app/settings-manager.d.ts +3 -3
- package/dist/app/shared/tools/execute-code/mog.d.ts +3 -1
- package/dist/app/shared/tools/execute-code/mog.js +18 -2
- package/dist/app/tools/bash.js +3 -3
- package/dist/app/tools/execute-code/index.d.ts +1 -0
- package/dist/app/tools/execute-code/index.js +3 -1
- package/dist/app/tools/find-ignore-files.d.ts +3 -0
- package/dist/app/tools/find-ignore-files.js +33 -0
- package/dist/app/tools/find.js +2 -21
- package/dist/app/tools/llm-analysis.js +0 -2
- package/dist/app/tools/refresh-context.d.ts +1 -1
- package/dist/app/tools/session-settings/update-session-settings.js +2 -2
- package/dist/app/tools/switch-mode.js +2 -2
- package/dist/app/tools/take-screenshot.js +0 -2
- package/dist/app/tools/task/runner.js +1 -2
- package/dist/app/tools/task/task.d.ts +1 -3
- package/dist/app/tools/task/task.js +20 -40
- package/dist/app/tools/web-search.js +12 -2
- package/dist/autocomplete/core.d.ts +33 -0
- package/dist/autocomplete/core.js +113 -0
- package/dist/{tui → autocomplete}/fuzzy.d.ts +0 -1
- package/dist/{tui → autocomplete}/fuzzy.js +0 -1
- package/dist/{tui/autocomplete.d.ts → autocomplete/index.d.ts} +0 -1
- package/dist/{tui/autocomplete.js → autocomplete/index.js} +62 -158
- package/dist/cli/args.js +1 -1
- package/dist/cli/list-models.js +1 -1
- package/dist/cli.js +26227 -30480
- package/dist/constants.d.ts +0 -2
- package/dist/constants.js +0 -3
- package/dist/contracts/agent-session-store.d.ts +1 -1
- package/dist/contracts/agent-settings.d.ts +1 -0
- package/dist/contracts/agent-settings.js +2 -1
- package/dist/contracts/model-call.d.ts +1 -2
- package/dist/contracts/model-call.js +1 -2
- package/dist/contracts/model-stream.d.ts +1 -0
- package/dist/contracts/model-stream.js +1 -0
- package/dist/contracts/wire.d.ts +10 -7
- package/dist/contracts/wire.js +8 -0
- package/dist/core/agent-engine.js +1 -1
- package/dist/core/core-types.d.ts +1 -21
- package/dist/core/defaults.d.ts +1 -1
- package/dist/core/defaults.js +9 -1
- package/dist/core/prompts/agent-guidelines.d.ts +4 -5
- package/dist/core/prompts/agent-guidelines.js +28 -42
- package/dist/core/session-schema.d.ts +1 -1
- package/dist/embedded-agent/ai-invoke.d.ts +1 -2
- package/dist/embedded-agent/ai-invoke.js +2 -70
- package/dist/embedded-agent/anthropic-messages-transport.d.ts +4 -20
- package/dist/embedded-agent/anthropic-messages-transport.js +23 -786
- package/dist/embedded-agent/bootstrap.js +2 -2
- package/dist/embedded-agent/compose.js +8 -7
- package/dist/embedded-agent/gateway-base-url.d.ts +3 -0
- package/dist/embedded-agent/gateway-base-url.js +35 -0
- package/dist/embedded-agent/google-vertex-transport.d.ts +2 -11
- package/dist/embedded-agent/google-vertex-transport.js +20 -117
- package/dist/embedded-agent/host-runtime-options.d.ts +0 -8
- package/dist/embedded-agent/host-runtime-options.js +10 -2
- package/dist/embedded-agent/host-tools/invoke-llm/contract.d.ts +2 -2
- package/dist/embedded-agent/host-tools/invoke-llm/contract.js +4 -2
- package/dist/embedded-agent/host-tools/sandbox-llm/contract.d.ts +8 -3
- package/dist/embedded-agent/host-tools/sandbox-llm/contract.js +12 -8
- package/dist/embedded-agent/host-tools/sandbox-llm/index.d.ts +1 -1
- package/dist/embedded-agent/host-tools/sandbox-llm/index.js +1 -1
- package/dist/embedded-agent/host-tools/shared/index.d.ts +1 -1
- package/dist/embedded-agent/host-tools/shared/index.js +1 -1
- package/dist/embedded-agent/host-tools/shared/llm-stream-error.d.ts +7 -0
- package/dist/embedded-agent/host-tools/shared/llm-stream-error.js +10 -0
- package/dist/embedded-agent/host-tools/take-screenshot/contract.d.ts +0 -2
- package/dist/embedded-agent/host-tools/take-screenshot/contract.js +1 -3
- package/dist/embedded-agent/host-tools/take-screenshot/index.d.ts +1 -1
- package/dist/embedded-agent/host-tools/take-screenshot/index.js +1 -1
- package/dist/embedded-agent/host-tools/task/agents/clone.js +1 -2
- package/dist/embedded-agent/host-tools/task/contract.js +1 -1
- package/dist/embedded-agent/index.d.ts +3 -4
- package/dist/embedded-agent/index.js +2 -3
- package/dist/embedded-agent/model-selection.d.ts +0 -6
- package/dist/embedded-agent/model-selection.js +15 -8
- package/dist/embedded-agent/openai-completions-transport.d.ts +2 -11
- package/dist/embedded-agent/openai-completions-transport.js +20 -120
- package/dist/embedded-agent/openai-responses-transport.d.ts +2 -11
- package/dist/embedded-agent/openai-responses-transport.js +15 -170
- package/dist/embedded-agent/prompt/build.js +1 -2
- package/dist/embedded-agent/prompt/sections.d.ts +1 -1
- package/dist/embedded-agent/prompt/sections.js +2 -0
- package/dist/embedded-agent/provider-native-request.d.ts +29 -0
- package/dist/embedded-agent/provider-native-request.js +65 -0
- package/dist/embedded-agent/run-stats.d.ts +1 -1
- package/dist/embedded-agent/stream.d.ts +10 -96
- package/dist/embedded-agent/stream.js +31 -556
- package/dist/embedded-agent/suggestions.d.ts +1 -1
- package/dist/embedded-agent/suggestions.js +1 -1
- package/dist/embedded-agent/worker-bridge/host-client.d.ts +7 -0
- package/dist/embedded-agent/worker-bridge/host-client.js +15 -0
- package/dist/embedded-agent/worker-bridge/worker-port.js +17 -1
- package/dist/main.js +18 -14
- package/dist/rpc/index.d.ts +1 -1
- package/dist/rpc/rpc-approval-gates.js +1 -2
- package/dist/rpc/rpc-host.d.ts +4 -0
- package/dist/rpc/rpc-host.js +13 -24
- package/dist/rpc/rpc-types.d.ts +6 -17
- package/dist/shared/platform/open.d.ts +4 -1
- package/dist/shared/platform/open.js +14 -2
- package/dist/shell/approvals/runtime-approval-gates.js +1 -3
- package/dist/shell/components/selectors/model-selector.js +2 -1
- package/dist/shell/components/selectors/session-selector-search.js +1 -1
- package/dist/shell/components/selectors/thinking-selector.js +7 -6
- package/dist/shell/index.d.ts +0 -1
- package/dist/shell/index.js +0 -1
- package/dist/shell/interactive/interactive-mode-options.d.ts +10 -0
- package/dist/shell/interactive/interactive-mode.d.ts +6 -12
- package/dist/shell/interactive/interactive-mode.js +39 -158
- package/dist/shell/interactive/slash-commands.d.ts +0 -34
- package/dist/shell/interactive/slash-commands.js +0 -2
- package/dist/shell/links/local-file-link-input.d.ts +15 -0
- package/dist/shell/links/local-file-link-input.js +38 -0
- package/dist/shell/links/local-file-link.d.ts +7 -0
- package/dist/shell/links/local-file-link.js +35 -0
- package/dist/shell/links/local-file-opener.d.ts +16 -0
- package/dist/shell/links/local-file-opener.js +90 -0
- package/dist/shell/session-client.d.ts +0 -1
- package/dist/shell/session-client.js +0 -6
- package/dist/shell/status/update-check-scheduler.d.ts +30 -0
- package/dist/shell/status/update-check-scheduler.js +71 -0
- package/dist/shell/status/update-reminder-controller.d.ts +22 -0
- package/dist/shell/status/update-reminder-controller.js +40 -0
- package/dist/shell/status/update-reminder.d.ts +6 -0
- package/dist/shell/status/update-reminder.js +4 -0
- package/dist/shell/theme/dark.json +1 -2
- package/dist/shell/theme/light.json +1 -2
- package/dist/shell/theme/runtime.d.ts +2 -3
- package/dist/shell/theme/runtime.js +2 -6
- package/dist/shell/theme/theme-schema.json +1 -6
- package/dist/shortcut-model-catalog.d.ts +7 -2
- package/dist/shortcut-model-catalog.js +134 -10
- package/dist/startup/update-manager.d.ts +6 -6
- package/dist/startup/update-manager.js +23 -38
- package/dist/startup/update-prompt.d.ts +1 -0
- package/dist/startup/update-prompt.js +2 -2
- package/dist/tui/components/editor.d.ts +1 -1
- package/dist/tui/components/editor.js +1 -1
- package/dist/tui/components/markdown.js +15 -6
- package/dist/tui/components/settings-list.js +1 -1
- package/dist/tui/editor-component.d.ts +1 -1
- package/dist/tui/index.d.ts +7 -8
- package/dist/tui/index.js +7 -6
- package/dist/tui/tui.d.ts +2 -0
- package/dist/tui/tui.js +16 -1
- package/dist/tui/utils.d.ts +7 -0
- package/dist/tui/utils.js +58 -8
- package/native-app/main/index.js +3200 -48
- package/native-app/main/{photon_rs-SoVDgheu.js → photon_rs-XkYyYTVA.js} +2 -2
- package/native-app/package.json +1 -1
- package/native-app/preload/index.cjs +2 -0
- package/native-app/renderer/assets/{index-CFc-oZuS.js → index-B4jz6epR.js} +825 -155
- package/native-app/renderer/assets/{index-OhGE0UY4.css → index-C__g36ft.css} +412 -162
- package/native-app/renderer/assets/shortcutagent-DxFsGSkw.png +0 -0
- package/native-app/renderer/index.html +2 -2
- package/package.json +17 -3
- package/skills/add-custom-model/SKILL.md +52 -0
- package/user-docs/dist/index.html +1 -1
- package/user-docs/dist/shortcutxl-docs.pdf +0 -0
- package/xll/ShortcutXL.xll +0 -0
- package/xll/modules/shortcut_xl/_managed.py +26 -7
- package/xll/modules/shortcut_xl/_tracking.py +141 -251
- package/xll/modules/shortcut_xl/api/__init__.py +60 -0
- package/xll/modules/shortcut_xl/api/workbook.py +9 -1
- package/xll/modules/shortcut_xl/api/worksheet.py +4 -1
- package/xll/python/Lib/site-packages/httpx-0.28.1.dist-info/RECORD +1 -1
- package/xll/python/Lib/site-packages/idna-3.18.dist-info/RECORD +1 -1
- package/xll/python/Lib/site-packages/pip/__init__.py +1 -1
- package/xll/python/Lib/site-packages/pip/_internal/build_env/__init__.py +25 -0
- package/xll/python/Lib/site-packages/pip/_internal/build_env/base.py +103 -0
- package/xll/python/Lib/site-packages/pip/_internal/build_env/installer.py +333 -0
- package/xll/python/Lib/site-packages/pip/_internal/build_env/noop.py +42 -0
- package/xll/python/Lib/site-packages/pip/_internal/build_env/venv.py +145 -0
- package/xll/python/Lib/site-packages/pip/_internal/build_env/virtual.py +139 -0
- package/xll/python/Lib/site-packages/pip/_internal/cache.py +4 -1
- package/xll/python/Lib/site-packages/pip/_internal/cli/autocompletion.py +4 -1
- package/xll/python/Lib/site-packages/pip/_internal/cli/base_command.py +11 -14
- package/xll/python/Lib/site-packages/pip/_internal/cli/cmdoptions.py +133 -22
- package/xll/python/Lib/site-packages/pip/_internal/cli/index_command.py +11 -6
- package/xll/python/Lib/site-packages/pip/_internal/cli/main.py +2 -1
- package/xll/python/Lib/site-packages/pip/_internal/cli/main_parser.py +1 -2
- package/xll/python/Lib/site-packages/pip/_internal/cli/parser.py +10 -2
- package/xll/python/Lib/site-packages/pip/_internal/cli/progress_bars.py +2 -2
- package/xll/python/Lib/site-packages/pip/_internal/cli/req_command.py +57 -25
- package/xll/python/Lib/site-packages/pip/_internal/cli/status_codes.py +1 -0
- package/xll/python/Lib/site-packages/pip/_internal/commands/cache.py +7 -6
- package/xll/python/Lib/site-packages/pip/_internal/commands/configuration.py +2 -1
- package/xll/python/Lib/site-packages/pip/_internal/commands/debug.py +4 -5
- package/xll/python/Lib/site-packages/pip/_internal/commands/download.py +4 -0
- package/xll/python/Lib/site-packages/pip/_internal/commands/freeze.py +1 -1
- package/xll/python/Lib/site-packages/pip/_internal/commands/index.py +10 -3
- package/xll/python/Lib/site-packages/pip/_internal/commands/inspect.py +1 -1
- package/xll/python/Lib/site-packages/pip/_internal/commands/install.py +6 -6
- package/xll/python/Lib/site-packages/pip/_internal/commands/list.py +11 -6
- package/xll/python/Lib/site-packages/pip/_internal/commands/lock.py +4 -6
- package/xll/python/Lib/site-packages/pip/_internal/commands/show.py +14 -8
- package/xll/python/Lib/site-packages/pip/_internal/commands/wheel.py +7 -1
- package/xll/python/Lib/site-packages/pip/_internal/configuration.py +2 -3
- package/xll/python/Lib/site-packages/pip/_internal/distributions/base.py +5 -3
- package/xll/python/Lib/site-packages/pip/_internal/distributions/installed.py +3 -2
- package/xll/python/Lib/site-packages/pip/_internal/distributions/sdist.py +45 -20
- package/xll/python/Lib/site-packages/pip/_internal/distributions/wheel.py +3 -2
- package/xll/python/Lib/site-packages/pip/_internal/exceptions.py +174 -0
- package/xll/python/Lib/site-packages/pip/_internal/index/collector.py +70 -48
- package/xll/python/Lib/site-packages/pip/_internal/index/package_finder.py +46 -7
- package/xll/python/Lib/site-packages/pip/_internal/index/sources.py +1 -2
- package/xll/python/Lib/site-packages/pip/_internal/locations/_sysconfig.py +1 -1
- package/xll/python/Lib/site-packages/pip/_internal/locations/base.py +1 -1
- package/xll/python/Lib/site-packages/pip/_internal/metadata/base.py +10 -5
- package/xll/python/Lib/site-packages/pip/_internal/metadata/importlib/_dists.py +1 -1
- package/xll/python/Lib/site-packages/pip/_internal/metadata/importlib/_envs.py +8 -3
- package/xll/python/Lib/site-packages/pip/_internal/models/candidate.py +5 -1
- package/xll/python/Lib/site-packages/pip/_internal/models/link.py +53 -13
- package/xll/python/Lib/site-packages/pip/_internal/network/auth.py +38 -21
- package/xll/python/Lib/site-packages/pip/_internal/network/cache.py +2 -2
- package/xll/python/Lib/site-packages/pip/_internal/network/download.py +58 -11
- package/xll/python/Lib/site-packages/pip/_internal/network/session.py +35 -40
- package/xll/python/Lib/site-packages/pip/_internal/network/utils.py +109 -1
- package/xll/python/Lib/site-packages/pip/_internal/operations/check.py +2 -3
- package/xll/python/Lib/site-packages/pip/_internal/operations/install/wheel.py +23 -18
- package/xll/python/Lib/site-packages/pip/_internal/operations/prepare.py +152 -7
- package/xll/python/Lib/site-packages/pip/_internal/req/__init__.py +2 -0
- package/xll/python/Lib/site-packages/pip/_internal/req/constructors.py +54 -69
- package/xll/python/Lib/site-packages/pip/_internal/req/req_file.py +6 -6
- package/xll/python/Lib/site-packages/pip/_internal/req/req_install.py +25 -21
- package/xll/python/Lib/site-packages/pip/_internal/req/req_uninstall.py +13 -8
- package/xll/python/Lib/site-packages/pip/_internal/resolution/base.py +2 -2
- package/xll/python/Lib/site-packages/pip/_internal/resolution/legacy/resolver.py +2 -2
- package/xll/python/Lib/site-packages/pip/_internal/resolution/resolvelib/base.py +1 -1
- package/xll/python/Lib/site-packages/pip/_internal/resolution/resolvelib/candidates.py +0 -1
- package/xll/python/Lib/site-packages/pip/_internal/resolution/resolvelib/factory.py +39 -52
- package/xll/python/Lib/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py +3 -3
- package/xll/python/Lib/site-packages/pip/_internal/resolution/resolvelib/provider.py +3 -0
- package/xll/python/Lib/site-packages/pip/_internal/resolution/resolvelib/resolver.py +9 -0
- package/xll/python/Lib/site-packages/pip/_internal/utils/compat.py +15 -9
- package/xll/python/Lib/site-packages/pip/_internal/utils/deprecation.py +6 -1
- package/xll/python/Lib/site-packages/pip/_internal/utils/filesystem.py +2 -2
- package/xll/python/Lib/site-packages/pip/_internal/utils/logging.py +11 -3
- package/xll/python/Lib/site-packages/pip/_internal/utils/misc.py +48 -4
- package/xll/python/Lib/site-packages/pip/_internal/utils/pylock.py +18 -2
- package/xll/python/Lib/site-packages/pip/_internal/utils/retry.py +2 -1
- package/xll/python/Lib/site-packages/pip/_internal/utils/subprocess.py +4 -3
- package/xll/python/Lib/site-packages/pip/_internal/utils/temp_dir.py +1 -2
- package/xll/python/Lib/site-packages/pip/_internal/utils/unpacking.py +30 -4
- package/xll/python/Lib/site-packages/pip/_internal/utils/urls.py +5 -2
- package/xll/python/Lib/site-packages/pip/_internal/utils/virtualenv.py +2 -36
- package/xll/python/Lib/site-packages/pip/_internal/vcs/git.py +8 -5
- package/xll/python/Lib/site-packages/pip/_internal/vcs/versioncontrol.py +1 -2
- package/xll/python/Lib/site-packages/pip/_internal/wheel_builder.py +5 -1
- package/xll/python/Lib/site-packages/pip/_vendor/bom.cdx.json +231 -0
- package/xll/python/Lib/site-packages/pip/_vendor/certifi/__init__.py +1 -1
- package/xll/python/Lib/site-packages/pip/_vendor/certifi/cacert.pem +0 -631
- package/xll/python/Lib/site-packages/pip/_vendor/distlib/__init__.py +1 -1
- package/xll/python/Lib/site-packages/pip/_vendor/distlib/compat.py +34 -64
- package/xll/python/Lib/site-packages/pip/_vendor/distlib/resources.py +28 -14
- package/xll/python/Lib/site-packages/pip/_vendor/distlib/scripts.py +7 -3
- package/xll/python/Lib/site-packages/pip/_vendor/distlib/util.py +48 -11
- package/xll/python/Lib/site-packages/pip/_vendor/idna/LICENSE.md +1 -1
- package/xll/python/Lib/site-packages/pip/_vendor/idna/__main__.py +6 -0
- package/xll/python/Lib/site-packages/pip/_vendor/idna/cli.py +128 -0
- package/xll/python/Lib/site-packages/pip/_vendor/idna/codec.py +50 -13
- package/xll/python/Lib/site-packages/pip/_vendor/idna/compat.py +26 -0
- package/xll/python/Lib/site-packages/pip/_vendor/idna/core.py +352 -141
- package/xll/python/Lib/site-packages/pip/_vendor/idna/idnadata.py +571 -2983
- package/xll/python/Lib/site-packages/pip/_vendor/idna/intranges.py +5 -7
- package/xll/python/Lib/site-packages/pip/_vendor/idna/package_data.py +1 -1
- package/xll/python/Lib/site-packages/pip/_vendor/idna/uts46data.py +16887 -8832
- package/xll/python/Lib/site-packages/pip/_vendor/platformdirs/__init__.py +352 -66
- package/xll/python/Lib/site-packages/pip/_vendor/platformdirs/__main__.py +11 -0
- package/xll/python/Lib/site-packages/pip/_vendor/platformdirs/_xdg.py +171 -0
- package/xll/python/Lib/site-packages/pip/_vendor/platformdirs/android.py +92 -41
- package/xll/python/Lib/site-packages/pip/_vendor/platformdirs/api.py +213 -49
- package/xll/python/Lib/site-packages/pip/_vendor/platformdirs/macos.py +128 -51
- package/xll/python/Lib/site-packages/pip/_vendor/platformdirs/unix.py +176 -127
- package/xll/python/Lib/site-packages/pip/_vendor/platformdirs/version.py +8 -18
- package/xll/python/Lib/site-packages/pip/_vendor/platformdirs/windows.py +185 -68
- package/xll/python/Lib/site-packages/pip/_vendor/pygments/__init__.py +2 -2
- package/xll/python/Lib/site-packages/pip/_vendor/pygments/__main__.py +1 -1
- package/xll/python/Lib/site-packages/pip/_vendor/pygments/console.py +1 -1
- package/xll/python/Lib/site-packages/pip/_vendor/pygments/filter.py +1 -1
- package/xll/python/Lib/site-packages/pip/_vendor/pygments/filters/__init__.py +10 -8
- package/xll/python/Lib/site-packages/pip/_vendor/pygments/formatter.py +1 -1
- package/xll/python/Lib/site-packages/pip/_vendor/pygments/formatters/__init__.py +1 -1
- package/xll/python/Lib/site-packages/pip/_vendor/pygments/lexer.py +7 -5
- package/xll/python/Lib/site-packages/pip/_vendor/pygments/lexers/__init__.py +1 -1
- package/xll/python/Lib/site-packages/pip/_vendor/pygments/lexers/_mapping.py +9 -8
- package/xll/python/Lib/site-packages/pip/_vendor/pygments/lexers/python.py +35 -32
- package/xll/python/Lib/site-packages/pip/_vendor/pygments/modeline.py +1 -1
- package/xll/python/Lib/site-packages/pip/_vendor/pygments/plugin.py +3 -1
- package/xll/python/Lib/site-packages/pip/_vendor/pygments/regexopt.py +13 -2
- package/xll/python/Lib/site-packages/pip/_vendor/pygments/scanner.py +1 -1
- package/xll/python/Lib/site-packages/pip/_vendor/pygments/sphinxext.py +1 -1
- package/xll/python/Lib/site-packages/pip/_vendor/pygments/style.py +1 -1
- package/xll/python/Lib/site-packages/pip/_vendor/pygments/styles/__init__.py +1 -1
- package/xll/python/Lib/site-packages/pip/_vendor/pygments/token.py +1 -1
- package/xll/python/Lib/site-packages/pip/_vendor/pygments/unistring.py +1 -1
- package/xll/python/Lib/site-packages/pip/_vendor/pygments/util.py +2 -2
- package/xll/python/Lib/site-packages/pip/_vendor/requests/__init__.py +52 -16
- package/xll/python/Lib/site-packages/pip/_vendor/requests/__version__.py +2 -2
- package/xll/python/Lib/site-packages/pip/_vendor/requests/_internal_utils.py +2 -2
- package/xll/python/Lib/site-packages/pip/_vendor/requests/_types.py +183 -0
- package/xll/python/Lib/site-packages/pip/_vendor/requests/adapters.py +101 -50
- package/xll/python/Lib/site-packages/pip/_vendor/requests/api.py +31 -8
- package/xll/python/Lib/site-packages/pip/_vendor/requests/auth.py +80 -40
- package/xll/python/Lib/site-packages/pip/_vendor/requests/compat.py +9 -3
- package/xll/python/Lib/site-packages/pip/_vendor/requests/cookies.py +143 -79
- package/xll/python/Lib/site-packages/pip/_vendor/requests/exceptions.py +15 -5
- package/xll/python/Lib/site-packages/pip/_vendor/requests/help.py +13 -10
- package/xll/python/Lib/site-packages/pip/_vendor/requests/hooks.py +23 -9
- package/xll/python/Lib/site-packages/pip/_vendor/requests/models.py +265 -126
- package/xll/python/Lib/site-packages/pip/_vendor/requests/py.typed +0 -0
- package/xll/python/Lib/site-packages/pip/_vendor/requests/sessions.py +164 -78
- package/xll/python/Lib/site-packages/pip/_vendor/requests/status_codes.py +2 -2
- package/xll/python/Lib/site-packages/pip/_vendor/requests/structures.py +51 -20
- package/xll/python/Lib/site-packages/pip/_vendor/requests/utils.py +161 -89
- package/xll/python/Lib/site-packages/pip/_vendor/tomli/__init__.py +1 -1
- package/xll/python/Lib/site-packages/pip/_vendor/tomli/_parser.py +9 -4
- package/xll/python/Lib/site-packages/pip/_vendor/tomli/_re.py +13 -9
- package/xll/python/Lib/site-packages/pip/_vendor/urllib3/_base_connection.py +3 -1
- package/xll/python/Lib/site-packages/pip/_vendor/urllib3/_collections.py +0 -1
- package/xll/python/Lib/site-packages/pip/_vendor/urllib3/_version.py +8 -18
- package/xll/python/Lib/site-packages/pip/_vendor/urllib3/connection.py +4 -4
- package/xll/python/Lib/site-packages/pip/_vendor/urllib3/connectionpool.py +23 -10
- package/xll/python/Lib/site-packages/pip/_vendor/urllib3/contrib/emscripten/response.py +5 -1
- package/xll/python/Lib/site-packages/pip/_vendor/urllib3/contrib/pyopenssl.py +7 -8
- package/xll/python/Lib/site-packages/pip/_vendor/urllib3/contrib/socks.py +1 -1
- package/xll/python/Lib/site-packages/pip/_vendor/urllib3/exceptions.py +2 -2
- package/xll/python/Lib/site-packages/pip/_vendor/urllib3/fields.py +14 -14
- package/xll/python/Lib/site-packages/pip/_vendor/urllib3/poolmanager.py +8 -6
- package/xll/python/Lib/site-packages/pip/_vendor/urllib3/response.py +35 -22
- package/xll/python/Lib/site-packages/pip/_vendor/urllib3/util/retry.py +8 -0
- package/xll/python/Lib/site-packages/pip/_vendor/urllib3/util/ssl_.py +11 -61
- package/xll/python/Lib/site-packages/pip/_vendor/urllib3/util/ssl_match_hostname.py +5 -11
- package/xll/python/Lib/site-packages/pip/_vendor/vendor.txt +8 -8
- package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/METADATA +3 -2
- package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/RECORD +208 -188
- package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/licenses/AUTHORS.txt +20 -0
- package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/licenses/src/pip/_vendor/idna/LICENSE.md +1 -1
- package/xll/python/Lib/site-packages/pywin32-311.dist-info/RECORD +2 -2
- package/xll/python/Scripts/httpx.exe +0 -0
- package/xll/python/Scripts/idna.exe +0 -0
- package/xll/python/Scripts/pip.exe +0 -0
- package/xll/python/Scripts/pip3.13.exe +0 -0
- package/xll/python/Scripts/pip3.exe +0 -0
- package/xll/python/Scripts/pywin32_postinstall.exe +0 -0
- package/xll/python/Scripts/pywin32_testall.exe +0 -0
- package/dist/app/collab/awareness.d.ts +0 -32
- package/dist/app/collab/awareness.js +0 -52
- package/dist/app/collab/collab-client.d.ts +0 -37
- package/dist/app/collab/collab-client.js +0 -208
- package/dist/app/collab/collab-manager.d.ts +0 -91
- package/dist/app/collab/collab-manager.js +0 -218
- package/dist/app/collab/collab-sync.d.ts +0 -62
- package/dist/app/collab/collab-sync.js +0 -215
- package/dist/app/collab/index.d.ts +0 -9
- package/dist/app/collab/index.js +0 -6
- package/dist/app/collab/super-fight.d.ts +0 -90
- package/dist/app/collab/super-fight.js +0 -310
- package/dist/app/collab/sync-bridge.d.ts +0 -35
- package/dist/app/collab/sync-bridge.js +0 -109
- package/dist/app/collab/types.d.ts +0 -75
- package/dist/app/collab/types.js +0 -5
- package/dist/embedded-agent/ai-content.d.ts +0 -52
- package/dist/embedded-agent/ai-content.js +0 -101
- package/dist/embedded-agent/host-tools/shared/llm-stream.d.ts +0 -31
- package/dist/embedded-agent/host-tools/shared/llm-stream.js +0 -136
- package/dist/embedded-agent/model-call-orchestrator.d.ts +0 -22
- package/dist/embedded-agent/model-call-orchestrator.js +0 -22
- package/dist/embedded-agent/stream-errors.d.ts +0 -10
- package/dist/embedded-agent/stream-errors.js +0 -73
- package/dist/embedded-agent/stream-message-state.d.ts +0 -14
- package/dist/embedded-agent/stream-message-state.js +0 -271
- package/dist/embedded-agent/stream-sse.d.ts +0 -78
- package/dist/embedded-agent/stream-sse.js +0 -73
- package/dist/shell/approvals/task-spawn-approval.d.ts +0 -20
- package/dist/shell/approvals/task-spawn-approval.js +0 -93
- package/dist/shell/interactive/collab-command.d.ts +0 -9
- package/dist/shell/interactive/collab-command.js +0 -115
- package/dist/shell/interactive/super-fight-ui.d.ts +0 -80
- package/dist/shell/interactive/super-fight-ui.js +0 -484
- package/dist/shell/status/collab-status.d.ts +0 -18
- package/dist/shell/status/collab-status.js +0 -46
- package/xll/python/Lib/site-packages/pip/_internal/build_env.py +0 -606
- /package/dist/{tui → autocomplete}/skill-autocomplete.js +0 -0
- /package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/INSTALLER +0 -0
- /package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/REQUESTED +0 -0
- /package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/WHEEL +0 -0
- /package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/entry_points.txt +0 -0
- /package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/licenses/LICENSE.txt +0 -0
- /package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/licenses/src/pip/_vendor/cachecontrol/LICENSE.txt +0 -0
- /package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/licenses/src/pip/_vendor/certifi/LICENSE +0 -0
- /package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/licenses/src/pip/_vendor/distlib/LICENSE.txt +0 -0
- /package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/licenses/src/pip/_vendor/distro/LICENSE +0 -0
- /package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/licenses/src/pip/_vendor/msgpack/COPYING +0 -0
- /package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/licenses/src/pip/_vendor/packaging/LICENSE +0 -0
- /package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/licenses/src/pip/_vendor/packaging/LICENSE.APACHE +0 -0
- /package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/licenses/src/pip/_vendor/packaging/LICENSE.BSD +0 -0
- /package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/licenses/src/pip/_vendor/pkg_resources/LICENSE +0 -0
- /package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/licenses/src/pip/_vendor/platformdirs/LICENSE +0 -0
- /package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/licenses/src/pip/_vendor/pygments/LICENSE +0 -0
- /package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/licenses/src/pip/_vendor/pyproject_hooks/LICENSE +0 -0
- /package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/licenses/src/pip/_vendor/requests/LICENSE +0 -0
- /package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/licenses/src/pip/_vendor/resolvelib/LICENSE +0 -0
- /package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/licenses/src/pip/_vendor/rich/LICENSE +0 -0
- /package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/licenses/src/pip/_vendor/tomli/LICENSE +0 -0
- /package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/licenses/src/pip/_vendor/tomli_w/LICENSE +0 -0
- /package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/licenses/src/pip/_vendor/truststore/LICENSE +0 -0
- /package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/licenses/src/pip/_vendor/urllib3/LICENSE.txt +0 -0
|
@@ -15,10 +15,21 @@ PROPS = (
|
|
|
15
15
|
"user_pictures_dir",
|
|
16
16
|
"user_videos_dir",
|
|
17
17
|
"user_music_dir",
|
|
18
|
+
"user_projects_dir",
|
|
19
|
+
"user_publicshare_dir",
|
|
20
|
+
"user_templates_dir",
|
|
21
|
+
"user_fonts_dir",
|
|
22
|
+
"user_preference_dir",
|
|
23
|
+
"user_bin_dir",
|
|
24
|
+
"site_bin_dir",
|
|
25
|
+
"user_applications_dir",
|
|
18
26
|
"user_runtime_dir",
|
|
19
27
|
"site_data_dir",
|
|
20
28
|
"site_config_dir",
|
|
21
29
|
"site_cache_dir",
|
|
30
|
+
"site_state_dir",
|
|
31
|
+
"site_log_dir",
|
|
32
|
+
"site_applications_dir",
|
|
22
33
|
"site_runtime_dir",
|
|
23
34
|
)
|
|
24
35
|
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
"""XDG environment variable mixin for Unix and macOS."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import os
|
|
6
|
+
|
|
7
|
+
from .api import PlatformDirsABC
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class XDGMixin(PlatformDirsABC):
|
|
11
|
+
"""Mixin that checks XDG environment variables, falling back to platform-specific defaults via ``super()``."""
|
|
12
|
+
|
|
13
|
+
@property
|
|
14
|
+
def user_data_dir(self) -> str:
|
|
15
|
+
""":returns: data directory tied to the user, from ``$XDG_DATA_HOME`` if set, else platform default"""
|
|
16
|
+
if path := os.environ.get("XDG_DATA_HOME", "").strip():
|
|
17
|
+
return self._append_app_name_and_version(path)
|
|
18
|
+
return super().user_data_dir
|
|
19
|
+
|
|
20
|
+
@property
|
|
21
|
+
def _site_data_dirs(self) -> list[str]:
|
|
22
|
+
if xdg_dirs := os.environ.get("XDG_DATA_DIRS", "").strip():
|
|
23
|
+
return [self._append_app_name_and_version(p) for p in xdg_dirs.split(os.pathsep) if p.strip()]
|
|
24
|
+
return super()._site_data_dirs
|
|
25
|
+
|
|
26
|
+
@property
|
|
27
|
+
def site_data_dir(self) -> str:
|
|
28
|
+
""":returns: data directories shared by users, from ``$XDG_DATA_DIRS`` if set, else platform default"""
|
|
29
|
+
dirs = self._site_data_dirs
|
|
30
|
+
return os.pathsep.join(dirs) if self.multipath else dirs[0]
|
|
31
|
+
|
|
32
|
+
@property
|
|
33
|
+
def user_config_dir(self) -> str:
|
|
34
|
+
""":returns: config directory tied to the user, from ``$XDG_CONFIG_HOME`` if set, else platform default"""
|
|
35
|
+
if path := os.environ.get("XDG_CONFIG_HOME", "").strip():
|
|
36
|
+
return self._append_app_name_and_version(path)
|
|
37
|
+
return super().user_config_dir
|
|
38
|
+
|
|
39
|
+
@property
|
|
40
|
+
def _site_config_dirs(self) -> list[str]:
|
|
41
|
+
if xdg_dirs := os.environ.get("XDG_CONFIG_DIRS", "").strip():
|
|
42
|
+
return [self._append_app_name_and_version(p) for p in xdg_dirs.split(os.pathsep) if p.strip()]
|
|
43
|
+
return super()._site_config_dirs
|
|
44
|
+
|
|
45
|
+
@property
|
|
46
|
+
def site_config_dir(self) -> str:
|
|
47
|
+
""":returns: config directories shared by users, from ``$XDG_CONFIG_DIRS`` if set, else platform default"""
|
|
48
|
+
dirs = self._site_config_dirs
|
|
49
|
+
return os.pathsep.join(dirs) if self.multipath else dirs[0]
|
|
50
|
+
|
|
51
|
+
@property
|
|
52
|
+
def user_cache_dir(self) -> str:
|
|
53
|
+
""":returns: cache directory tied to the user, from ``$XDG_CACHE_HOME`` if set, else platform default"""
|
|
54
|
+
if path := os.environ.get("XDG_CACHE_HOME", "").strip():
|
|
55
|
+
return self._append_app_name_and_version(path)
|
|
56
|
+
return super().user_cache_dir
|
|
57
|
+
|
|
58
|
+
@property
|
|
59
|
+
def user_state_dir(self) -> str:
|
|
60
|
+
""":returns: state directory tied to the user, from ``$XDG_STATE_HOME`` if set, else platform default"""
|
|
61
|
+
if path := os.environ.get("XDG_STATE_HOME", "").strip():
|
|
62
|
+
return self._append_app_name_and_version(path)
|
|
63
|
+
return super().user_state_dir
|
|
64
|
+
|
|
65
|
+
@property
|
|
66
|
+
def user_runtime_dir(self) -> str:
|
|
67
|
+
""":returns: runtime directory tied to the user, from ``$XDG_RUNTIME_DIR`` if set, else platform default"""
|
|
68
|
+
if path := os.environ.get("XDG_RUNTIME_DIR", "").strip():
|
|
69
|
+
return self._append_app_name_and_version(path)
|
|
70
|
+
return super().user_runtime_dir
|
|
71
|
+
|
|
72
|
+
@property
|
|
73
|
+
def site_runtime_dir(self) -> str:
|
|
74
|
+
""":returns: runtime directory shared by users, from ``$XDG_RUNTIME_DIR`` if set, else platform default"""
|
|
75
|
+
if path := os.environ.get("XDG_RUNTIME_DIR", "").strip():
|
|
76
|
+
return self._append_app_name_and_version(path)
|
|
77
|
+
return super().site_runtime_dir
|
|
78
|
+
|
|
79
|
+
@property
|
|
80
|
+
def user_documents_dir(self) -> str:
|
|
81
|
+
""":returns: documents directory tied to the user, from ``$XDG_DOCUMENTS_DIR`` if set, else platform default"""
|
|
82
|
+
if path := os.environ.get("XDG_DOCUMENTS_DIR", "").strip():
|
|
83
|
+
return os.path.expanduser(path) # noqa: PTH111
|
|
84
|
+
return super().user_documents_dir
|
|
85
|
+
|
|
86
|
+
@property
|
|
87
|
+
def user_downloads_dir(self) -> str:
|
|
88
|
+
""":returns: downloads directory tied to the user, from ``$XDG_DOWNLOAD_DIR`` if set, else platform default"""
|
|
89
|
+
if path := os.environ.get("XDG_DOWNLOAD_DIR", "").strip():
|
|
90
|
+
return os.path.expanduser(path) # noqa: PTH111
|
|
91
|
+
return super().user_downloads_dir
|
|
92
|
+
|
|
93
|
+
@property
|
|
94
|
+
def user_pictures_dir(self) -> str:
|
|
95
|
+
""":returns: pictures directory tied to the user, from ``$XDG_PICTURES_DIR`` if set, else platform default"""
|
|
96
|
+
if path := os.environ.get("XDG_PICTURES_DIR", "").strip():
|
|
97
|
+
return os.path.expanduser(path) # noqa: PTH111
|
|
98
|
+
return super().user_pictures_dir
|
|
99
|
+
|
|
100
|
+
@property
|
|
101
|
+
def user_videos_dir(self) -> str:
|
|
102
|
+
""":returns: videos directory tied to the user, from ``$XDG_VIDEOS_DIR`` if set, else platform default"""
|
|
103
|
+
if path := os.environ.get("XDG_VIDEOS_DIR", "").strip():
|
|
104
|
+
return os.path.expanduser(path) # noqa: PTH111
|
|
105
|
+
return super().user_videos_dir
|
|
106
|
+
|
|
107
|
+
@property
|
|
108
|
+
def user_music_dir(self) -> str:
|
|
109
|
+
""":returns: music directory tied to the user, from ``$XDG_MUSIC_DIR`` if set, else platform default"""
|
|
110
|
+
if path := os.environ.get("XDG_MUSIC_DIR", "").strip():
|
|
111
|
+
return os.path.expanduser(path) # noqa: PTH111
|
|
112
|
+
return super().user_music_dir
|
|
113
|
+
|
|
114
|
+
@property
|
|
115
|
+
def user_desktop_dir(self) -> str:
|
|
116
|
+
""":returns: desktop directory tied to the user, from ``$XDG_DESKTOP_DIR`` if set, else platform default"""
|
|
117
|
+
if path := os.environ.get("XDG_DESKTOP_DIR", "").strip():
|
|
118
|
+
return os.path.expanduser(path) # noqa: PTH111
|
|
119
|
+
return super().user_desktop_dir
|
|
120
|
+
|
|
121
|
+
@property
|
|
122
|
+
def user_projects_dir(self) -> str:
|
|
123
|
+
""":returns: projects directory tied to the user, from ``$XDG_PROJECTS_DIR`` if set, else platform default"""
|
|
124
|
+
if path := os.environ.get("XDG_PROJECTS_DIR", "").strip():
|
|
125
|
+
return os.path.expanduser(path) # noqa: PTH111 # API returns str, not Path
|
|
126
|
+
return super().user_projects_dir
|
|
127
|
+
|
|
128
|
+
@property
|
|
129
|
+
def user_publicshare_dir(self) -> str:
|
|
130
|
+
""":returns: public share directory tied to the user, from ``$XDG_PUBLICSHARE_DIR`` if set, else platform default"""
|
|
131
|
+
if path := os.environ.get("XDG_PUBLICSHARE_DIR", "").strip():
|
|
132
|
+
return os.path.expanduser(path) # noqa: PTH111 # API returns str, not Path
|
|
133
|
+
return super().user_publicshare_dir
|
|
134
|
+
|
|
135
|
+
@property
|
|
136
|
+
def user_templates_dir(self) -> str:
|
|
137
|
+
""":returns: templates directory tied to the user, from ``$XDG_TEMPLATES_DIR`` if set, else platform default"""
|
|
138
|
+
if path := os.environ.get("XDG_TEMPLATES_DIR", "").strip():
|
|
139
|
+
return os.path.expanduser(path) # noqa: PTH111 # API returns str, not Path
|
|
140
|
+
return super().user_templates_dir
|
|
141
|
+
|
|
142
|
+
@property
|
|
143
|
+
def user_fonts_dir(self) -> str:
|
|
144
|
+
""":returns: fonts directory tied to the user, from ``$XDG_DATA_HOME/fonts`` if set, else platform default"""
|
|
145
|
+
if path := os.environ.get("XDG_DATA_HOME", "").strip():
|
|
146
|
+
return f"{os.path.expanduser(path)}/fonts" # noqa: PTH111 # API returns str, not Path
|
|
147
|
+
return super().user_fonts_dir
|
|
148
|
+
|
|
149
|
+
@property
|
|
150
|
+
def user_applications_dir(self) -> str:
|
|
151
|
+
""":returns: applications directory tied to the user, from ``$XDG_DATA_HOME`` if set, else platform default"""
|
|
152
|
+
if path := os.environ.get("XDG_DATA_HOME", "").strip():
|
|
153
|
+
return os.path.join(os.path.expanduser(path), "applications") # noqa: PTH111, PTH118
|
|
154
|
+
return super().user_applications_dir
|
|
155
|
+
|
|
156
|
+
@property
|
|
157
|
+
def _site_applications_dirs(self) -> list[str]:
|
|
158
|
+
if xdg_dirs := os.environ.get("XDG_DATA_DIRS", "").strip():
|
|
159
|
+
return [os.path.join(p, "applications") for p in xdg_dirs.split(os.pathsep) if p.strip()] # noqa: PTH118
|
|
160
|
+
return super()._site_applications_dirs
|
|
161
|
+
|
|
162
|
+
@property
|
|
163
|
+
def site_applications_dir(self) -> str:
|
|
164
|
+
""":returns: applications directories shared by users, from ``$XDG_DATA_DIRS`` if set, else platform default"""
|
|
165
|
+
dirs = self._site_applications_dirs
|
|
166
|
+
return os.pathsep.join(dirs) if self.multipath else dirs[0]
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
__all__ = [
|
|
170
|
+
"XDGMixin",
|
|
171
|
+
]
|
|
@@ -11,114 +11,165 @@ from typing import TYPE_CHECKING, cast
|
|
|
11
11
|
from .api import PlatformDirsABC
|
|
12
12
|
|
|
13
13
|
|
|
14
|
-
class Android(PlatformDirsABC):
|
|
15
|
-
"""
|
|
16
|
-
|
|
14
|
+
class Android(PlatformDirsABC): # noqa: PLR0904
|
|
15
|
+
"""Platform directories for Android.
|
|
16
|
+
|
|
17
|
+
Follows the guidance `from here <https://android.stackexchange.com/a/216132>`_. Directories are typically located
|
|
18
|
+
under the app's private storage (``/data/user/<userid>/<packagename>/``).
|
|
17
19
|
|
|
18
20
|
Makes use of the `appname <platformdirs.api.PlatformDirsABC.appname>`, `version
|
|
19
|
-
<platformdirs.api.PlatformDirsABC.version>`, `
|
|
21
|
+
<platformdirs.api.PlatformDirsABC.version>`, `opinion <platformdirs.api.PlatformDirsABC.opinion>`, `ensure_exists
|
|
22
|
+
<platformdirs.api.PlatformDirsABC.ensure_exists>`.
|
|
20
23
|
|
|
21
24
|
"""
|
|
22
25
|
|
|
23
26
|
@property
|
|
24
27
|
def user_data_dir(self) -> str:
|
|
25
|
-
""":
|
|
28
|
+
""":returns: data directory tied to the user, e.g. ``/data/user/<userid>/<packagename>/files/<AppName>``"""
|
|
26
29
|
return self._append_app_name_and_version(cast("str", _android_folder()), "files")
|
|
27
30
|
|
|
28
31
|
@property
|
|
29
32
|
def site_data_dir(self) -> str:
|
|
30
|
-
""":
|
|
33
|
+
""":returns: data directory shared by users, same as `user_data_dir`"""
|
|
31
34
|
return self.user_data_dir
|
|
32
35
|
|
|
33
36
|
@property
|
|
34
37
|
def user_config_dir(self) -> str:
|
|
35
|
-
"""
|
|
36
|
-
:return: config directory tied to the user, e.g. \
|
|
37
|
-
``/data/user/<userid>/<packagename>/shared_prefs/<AppName>``
|
|
38
|
-
"""
|
|
38
|
+
""":returns: config directory tied to the user, e.g. ``/data/user/<userid>/<packagename>/shared_prefs/<AppName>``"""
|
|
39
39
|
return self._append_app_name_and_version(cast("str", _android_folder()), "shared_prefs")
|
|
40
40
|
|
|
41
41
|
@property
|
|
42
42
|
def site_config_dir(self) -> str:
|
|
43
|
-
""":
|
|
43
|
+
""":returns: config directory shared by users, same as `user_config_dir`"""
|
|
44
44
|
return self.user_config_dir
|
|
45
45
|
|
|
46
46
|
@property
|
|
47
47
|
def user_cache_dir(self) -> str:
|
|
48
|
-
""":
|
|
48
|
+
""":returns: cache directory tied to the user, e.g.,``/data/user/<userid>/<packagename>/cache/<AppName>``"""
|
|
49
49
|
return self._append_app_name_and_version(cast("str", _android_folder()), "cache")
|
|
50
50
|
|
|
51
51
|
@property
|
|
52
52
|
def site_cache_dir(self) -> str:
|
|
53
|
-
""":
|
|
53
|
+
""":returns: cache directory shared by users, same as `user_cache_dir`"""
|
|
54
54
|
return self.user_cache_dir
|
|
55
55
|
|
|
56
56
|
@property
|
|
57
57
|
def user_state_dir(self) -> str:
|
|
58
|
-
""":
|
|
58
|
+
""":returns: state directory tied to the user, same as `user_data_dir`"""
|
|
59
59
|
return self.user_data_dir
|
|
60
60
|
|
|
61
|
+
@property
|
|
62
|
+
def site_state_dir(self) -> str:
|
|
63
|
+
""":returns: state directory shared by users, same as `user_state_dir`"""
|
|
64
|
+
return self.user_state_dir
|
|
65
|
+
|
|
61
66
|
@property
|
|
62
67
|
def user_log_dir(self) -> str:
|
|
63
|
-
"""
|
|
64
|
-
:return: log directory tied to the user, same as `user_cache_dir` if not opinionated else ``log`` in it,
|
|
65
|
-
e.g. ``/data/user/<userid>/<packagename>/cache/<AppName>/log``
|
|
66
|
-
"""
|
|
68
|
+
""":returns: log directory tied to the user, same as `user_cache_dir` if not opinionated else ``log`` in it, e.g. ``/data/user/<userid>/<packagename>/cache/<AppName>/log``"""
|
|
67
69
|
path = self.user_cache_dir
|
|
68
70
|
if self.opinion:
|
|
69
71
|
path = os.path.join(path, "log") # noqa: PTH118
|
|
72
|
+
self._optionally_create_directory(path)
|
|
70
73
|
return path
|
|
71
74
|
|
|
75
|
+
@property
|
|
76
|
+
def site_log_dir(self) -> str:
|
|
77
|
+
""":returns: log directory shared by users, same as `user_log_dir`"""
|
|
78
|
+
return self.user_log_dir
|
|
79
|
+
|
|
72
80
|
@property
|
|
73
81
|
def user_documents_dir(self) -> str:
|
|
74
|
-
""":
|
|
82
|
+
""":returns: documents directory tied to the user e.g. ``/storage/emulated/0/Documents``"""
|
|
75
83
|
return _android_documents_folder()
|
|
76
84
|
|
|
77
85
|
@property
|
|
78
86
|
def user_downloads_dir(self) -> str:
|
|
79
|
-
""":
|
|
87
|
+
""":returns: downloads directory tied to the user e.g. ``/storage/emulated/0/Downloads``"""
|
|
80
88
|
return _android_downloads_folder()
|
|
81
89
|
|
|
82
90
|
@property
|
|
83
91
|
def user_pictures_dir(self) -> str:
|
|
84
|
-
""":
|
|
92
|
+
""":returns: pictures directory tied to the user e.g. ``/storage/emulated/0/Pictures``"""
|
|
85
93
|
return _android_pictures_folder()
|
|
86
94
|
|
|
87
95
|
@property
|
|
88
96
|
def user_videos_dir(self) -> str:
|
|
89
|
-
""":
|
|
97
|
+
""":returns: videos directory tied to the user e.g. ``/storage/emulated/0/DCIM/Camera``"""
|
|
90
98
|
return _android_videos_folder()
|
|
91
99
|
|
|
92
100
|
@property
|
|
93
101
|
def user_music_dir(self) -> str:
|
|
94
|
-
""":
|
|
102
|
+
""":returns: music directory tied to the user e.g. ``/storage/emulated/0/Music``"""
|
|
95
103
|
return _android_music_folder()
|
|
96
104
|
|
|
97
105
|
@property
|
|
98
106
|
def user_desktop_dir(self) -> str:
|
|
99
|
-
""":
|
|
107
|
+
""":returns: desktop directory tied to the user e.g. ``/storage/emulated/0/Desktop``"""
|
|
100
108
|
return "/storage/emulated/0/Desktop"
|
|
101
109
|
|
|
110
|
+
@property
|
|
111
|
+
def user_projects_dir(self) -> str:
|
|
112
|
+
""":returns: projects directory tied to the user e.g. ``/storage/emulated/0/Projects``"""
|
|
113
|
+
return "/storage/emulated/0/Projects"
|
|
114
|
+
|
|
115
|
+
@property
|
|
116
|
+
def user_publicshare_dir(self) -> str:
|
|
117
|
+
""":returns: public share directory tied to the user e.g. ``/storage/emulated/0/Public``"""
|
|
118
|
+
return "/storage/emulated/0/Public"
|
|
119
|
+
|
|
120
|
+
@property
|
|
121
|
+
def user_templates_dir(self) -> str:
|
|
122
|
+
""":returns: templates directory tied to the user e.g. ``/storage/emulated/0/Templates``"""
|
|
123
|
+
return "/storage/emulated/0/Templates"
|
|
124
|
+
|
|
125
|
+
@property
|
|
126
|
+
def user_fonts_dir(self) -> str:
|
|
127
|
+
""":returns: fonts directory tied to the user e.g. ``/storage/emulated/0/fonts``"""
|
|
128
|
+
return "/storage/emulated/0/fonts"
|
|
129
|
+
|
|
130
|
+
@property
|
|
131
|
+
def user_preference_dir(self) -> str:
|
|
132
|
+
""":returns: preference directory tied to the user, same as ``user_config_dir``"""
|
|
133
|
+
return self.user_config_dir
|
|
134
|
+
|
|
135
|
+
@property
|
|
136
|
+
def user_bin_dir(self) -> str:
|
|
137
|
+
""":returns: bin directory tied to the user, e.g. ``/data/user/<userid>/<packagename>/files/bin``"""
|
|
138
|
+
return os.path.join(cast("str", _android_folder()), "files", "bin") # noqa: PTH118
|
|
139
|
+
|
|
140
|
+
@property
|
|
141
|
+
def site_bin_dir(self) -> str:
|
|
142
|
+
""":returns: bin directory shared by users, same as `user_bin_dir`"""
|
|
143
|
+
return self.user_bin_dir
|
|
144
|
+
|
|
145
|
+
@property
|
|
146
|
+
def user_applications_dir(self) -> str:
|
|
147
|
+
""":returns: applications directory tied to the user, same as `user_data_dir`"""
|
|
148
|
+
return self.user_data_dir
|
|
149
|
+
|
|
150
|
+
@property
|
|
151
|
+
def site_applications_dir(self) -> str:
|
|
152
|
+
""":returns: applications directory shared by users, same as `user_applications_dir`"""
|
|
153
|
+
return self.user_applications_dir
|
|
154
|
+
|
|
102
155
|
@property
|
|
103
156
|
def user_runtime_dir(self) -> str:
|
|
104
|
-
"""
|
|
105
|
-
:return: runtime directory tied to the user, same as `user_cache_dir` if not opinionated else ``tmp`` in it,
|
|
106
|
-
e.g. ``/data/user/<userid>/<packagename>/cache/<AppName>/tmp``
|
|
107
|
-
"""
|
|
157
|
+
""":returns: runtime directory tied to the user, same as `user_cache_dir` if not opinionated else ``tmp`` in it, e.g. ``/data/user/<userid>/<packagename>/cache/<AppName>/tmp``"""
|
|
108
158
|
path = self.user_cache_dir
|
|
109
159
|
if self.opinion:
|
|
110
160
|
path = os.path.join(path, "tmp") # noqa: PTH118
|
|
161
|
+
self._optionally_create_directory(path)
|
|
111
162
|
return path
|
|
112
163
|
|
|
113
164
|
@property
|
|
114
165
|
def site_runtime_dir(self) -> str:
|
|
115
|
-
""":
|
|
166
|
+
""":returns: runtime directory shared by users, same as `user_runtime_dir`"""
|
|
116
167
|
return self.user_runtime_dir
|
|
117
168
|
|
|
118
169
|
|
|
119
170
|
@lru_cache(maxsize=1)
|
|
120
171
|
def _android_folder() -> str | None: # noqa: C901
|
|
121
|
-
""":
|
|
172
|
+
""":returns: base folder for the Android OS or None if it cannot be found"""
|
|
122
173
|
result: str | None = None
|
|
123
174
|
# type checker isn't happy with our "import android", just don't do this when type checking see
|
|
124
175
|
# https://stackoverflow.com/a/61394121
|
|
@@ -135,7 +186,7 @@ def _android_folder() -> str | None: # noqa: C901
|
|
|
135
186
|
try:
|
|
136
187
|
# ...and fall back to using plain pyjnius, if python4android isn't available or doesn't deliver any useful
|
|
137
188
|
# result...
|
|
138
|
-
from jnius import autoclass # noqa: PLC0415
|
|
189
|
+
from jnius import autoclass # noqa: PLC0415 # ty: ignore[unresolved-import]
|
|
139
190
|
|
|
140
191
|
context = autoclass("android.content.Context")
|
|
141
192
|
result = context.getFilesDir().getParentFile().getAbsolutePath()
|
|
@@ -166,10 +217,10 @@ def _android_folder() -> str | None: # noqa: C901
|
|
|
166
217
|
|
|
167
218
|
@lru_cache(maxsize=1)
|
|
168
219
|
def _android_documents_folder() -> str:
|
|
169
|
-
""":
|
|
220
|
+
""":returns: documents folder for the Android OS"""
|
|
170
221
|
# Get directories with pyjnius
|
|
171
222
|
try:
|
|
172
|
-
from jnius import autoclass # noqa: PLC0415
|
|
223
|
+
from jnius import autoclass # noqa: PLC0415 # ty: ignore[unresolved-import]
|
|
173
224
|
|
|
174
225
|
context = autoclass("android.content.Context")
|
|
175
226
|
environment = autoclass("android.os.Environment")
|
|
@@ -182,10 +233,10 @@ def _android_documents_folder() -> str:
|
|
|
182
233
|
|
|
183
234
|
@lru_cache(maxsize=1)
|
|
184
235
|
def _android_downloads_folder() -> str:
|
|
185
|
-
""":
|
|
236
|
+
""":returns: downloads folder for the Android OS"""
|
|
186
237
|
# Get directories with pyjnius
|
|
187
238
|
try:
|
|
188
|
-
from jnius import autoclass # noqa: PLC0415
|
|
239
|
+
from jnius import autoclass # noqa: PLC0415 # ty: ignore[unresolved-import]
|
|
189
240
|
|
|
190
241
|
context = autoclass("android.content.Context")
|
|
191
242
|
environment = autoclass("android.os.Environment")
|
|
@@ -198,10 +249,10 @@ def _android_downloads_folder() -> str:
|
|
|
198
249
|
|
|
199
250
|
@lru_cache(maxsize=1)
|
|
200
251
|
def _android_pictures_folder() -> str:
|
|
201
|
-
""":
|
|
252
|
+
""":returns: pictures folder for the Android OS"""
|
|
202
253
|
# Get directories with pyjnius
|
|
203
254
|
try:
|
|
204
|
-
from jnius import autoclass # noqa: PLC0415
|
|
255
|
+
from jnius import autoclass # noqa: PLC0415 # ty: ignore[unresolved-import]
|
|
205
256
|
|
|
206
257
|
context = autoclass("android.content.Context")
|
|
207
258
|
environment = autoclass("android.os.Environment")
|
|
@@ -214,10 +265,10 @@ def _android_pictures_folder() -> str:
|
|
|
214
265
|
|
|
215
266
|
@lru_cache(maxsize=1)
|
|
216
267
|
def _android_videos_folder() -> str:
|
|
217
|
-
""":
|
|
268
|
+
""":returns: videos folder for the Android OS"""
|
|
218
269
|
# Get directories with pyjnius
|
|
219
270
|
try:
|
|
220
|
-
from jnius import autoclass # noqa: PLC0415
|
|
271
|
+
from jnius import autoclass # noqa: PLC0415 # ty: ignore[unresolved-import]
|
|
221
272
|
|
|
222
273
|
context = autoclass("android.content.Context")
|
|
223
274
|
environment = autoclass("android.os.Environment")
|
|
@@ -230,10 +281,10 @@ def _android_videos_folder() -> str:
|
|
|
230
281
|
|
|
231
282
|
@lru_cache(maxsize=1)
|
|
232
283
|
def _android_music_folder() -> str:
|
|
233
|
-
""":
|
|
284
|
+
""":returns: music folder for the Android OS"""
|
|
234
285
|
# Get directories with pyjnius
|
|
235
286
|
try:
|
|
236
|
-
from jnius import autoclass # noqa: PLC0415
|
|
287
|
+
from jnius import autoclass # noqa: PLC0415 # ty: ignore[unresolved-import]
|
|
237
288
|
|
|
238
289
|
context = autoclass("android.content.Context")
|
|
239
290
|
environment = autoclass("android.os.Environment")
|