kiriya 0.1.0
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/CHANGELOG.md +58 -0
- package/LICENSE +21 -0
- package/README.md +87 -0
- package/dist/src/config/clean-rules.js +39 -0
- package/dist/src/config/config-keys.js +24 -0
- package/dist/src/config/dependency-directories.js +16 -0
- package/dist/src/config/modules.js +38 -0
- package/dist/src/config/protected-paths.js +32 -0
- package/dist/src/config/rebuildable-directories.js +20 -0
- package/dist/src/core/application/command-registry.js +57 -0
- package/dist/src/core/application/config-values.js +33 -0
- package/dist/src/core/application/path-guard.js +69 -0
- package/dist/src/core/application/paths.js +77 -0
- package/dist/src/core/application/plugin-loader.js +100 -0
- package/dist/src/core/application/process-ending.js +28 -0
- package/dist/src/core/application/root-scope.js +123 -0
- package/dist/src/core/application/safety.js +26 -0
- package/dist/src/core/application/text-input.js +44 -0
- package/dist/src/core/application/walk.js +34 -0
- package/dist/src/core/domain/command.js +8 -0
- package/dist/src/core/domain/encodings.js +70 -0
- package/dist/src/core/domain/errors.js +49 -0
- package/dist/src/core/domain/glob.js +57 -0
- package/dist/src/core/domain/global-options.js +10 -0
- package/dist/src/core/domain/input-schema.js +54 -0
- package/dist/src/core/domain/message.js +7 -0
- package/dist/src/core/domain/module.js +2 -0
- package/dist/src/core/domain/names.js +22 -0
- package/dist/src/core/domain/ports/clipboard.js +2 -0
- package/dist/src/core/domain/ports/clock.js +2 -0
- package/dist/src/core/domain/ports/command-catalog.js +2 -0
- package/dist/src/core/domain/ports/compression.js +2 -0
- package/dist/src/core/domain/ports/config-store.js +2 -0
- package/dist/src/core/domain/ports/confirmation.js +2 -0
- package/dist/src/core/domain/ports/environment.js +2 -0
- package/dist/src/core/domain/ports/file-content.js +2 -0
- package/dist/src/core/domain/ports/file-system.js +2 -0
- package/dist/src/core/domain/ports/hasher.js +2 -0
- package/dist/src/core/domain/ports/network.js +2 -0
- package/dist/src/core/domain/ports/opener.js +2 -0
- package/dist/src/core/domain/ports/passthrough.js +2 -0
- package/dist/src/core/domain/ports/plugin-inventory.js +2 -0
- package/dist/src/core/domain/ports/plugin-source.js +2 -0
- package/dist/src/core/domain/ports/port-table.js +2 -0
- package/dist/src/core/domain/ports/process-runner.js +2 -0
- package/dist/src/core/domain/ports/process-table.js +2 -0
- package/dist/src/core/domain/ports/protected-paths.js +2 -0
- package/dist/src/core/domain/ports/random-source.js +2 -0
- package/dist/src/core/domain/ports/standard-input.js +2 -0
- package/dist/src/core/domain/ports/system-info.js +2 -0
- package/dist/src/core/domain/ports/trash.js +2 -0
- package/dist/src/core/domain/secrets.js +59 -0
- package/dist/src/core/domain/targets.js +41 -0
- package/dist/src/core/domain/text-case.js +39 -0
- package/dist/src/core/domain/values/bytes.js +13 -0
- package/dist/src/core/domain/view.js +2 -0
- package/dist/src/core/infrastructure/node/can-listen.js +10 -0
- package/dist/src/core/infrastructure/node/closed-standard-input.adapter.js +12 -0
- package/dist/src/core/infrastructure/node/config-location.js +27 -0
- package/dist/src/core/infrastructure/node/fs-errors.js +22 -0
- package/dist/src/core/infrastructure/node/json-config-store.adapter.js +69 -0
- package/dist/src/core/infrastructure/node/node-compression.adapter.js +82 -0
- package/dist/src/core/infrastructure/node/node-environment.adapter.js +21 -0
- package/dist/src/core/infrastructure/node/node-file-content.adapter.js +99 -0
- package/dist/src/core/infrastructure/node/node-file-system.adapter.js +169 -0
- package/dist/src/core/infrastructure/node/node-hasher.adapter.js +32 -0
- package/dist/src/core/infrastructure/node/node-network.adapter.js +168 -0
- package/dist/src/core/infrastructure/node/node-plugin-source.adapter.js +89 -0
- package/dist/src/core/infrastructure/node/node-process-runner.adapter.js +48 -0
- package/dist/src/core/infrastructure/node/node-random-source.adapter.js +7 -0
- package/dist/src/core/infrastructure/node/node-standard-input.adapter.js +24 -0
- package/dist/src/core/infrastructure/node/node-system-info.adapter.js +63 -0
- package/dist/src/core/infrastructure/node/process-signals.js +51 -0
- package/dist/src/core/infrastructure/node/run-program.js +65 -0
- package/dist/src/core/infrastructure/node/system-clock.adapter.js +22 -0
- package/dist/src/core/infrastructure/node/typed-programs.js +45 -0
- package/dist/src/core/infrastructure/platform/linux/freedesktop-trash.adapter.js +115 -0
- package/dist/src/core/infrastructure/platform/linux/linux-clipboard.adapter.js +70 -0
- package/dist/src/core/infrastructure/platform/linux/linux-opener.adapter.js +21 -0
- package/dist/src/core/infrastructure/platform/linux/linux-port-table.adapter.js +97 -0
- package/dist/src/core/infrastructure/platform/linux/linux-process-table.adapter.js +61 -0
- package/dist/src/core/infrastructure/platform/macos/macos-clipboard.adapter.js +29 -0
- package/dist/src/core/infrastructure/platform/macos/macos-opener.adapter.js +13 -0
- package/dist/src/core/infrastructure/platform/macos/macos-port-table.adapter.js +86 -0
- package/dist/src/core/infrastructure/platform/macos/macos-process-table.adapter.js +62 -0
- package/dist/src/core/infrastructure/platform/macos/macos-trash.adapter.js +64 -0
- package/dist/src/core/infrastructure/platform/windows/system32.js +6 -0
- package/dist/src/core/infrastructure/platform/windows/windows-clipboard.adapter.js +50 -0
- package/dist/src/core/infrastructure/platform/windows/windows-opener.adapter.js +11 -0
- package/dist/src/core/infrastructure/platform/windows/windows-port-table.adapter.js +38 -0
- package/dist/src/core/infrastructure/platform/windows/windows-process-table.adapter.js +134 -0
- package/dist/src/core/infrastructure/platform/windows/windows-trash.adapter.js +86 -0
- package/dist/src/core/presentation/cli/argv.js +83 -0
- package/dist/src/core/presentation/cli/cli-application.js +201 -0
- package/dist/src/core/presentation/cli/cli-view-format.js +46 -0
- package/dist/src/core/presentation/cli/help.js +202 -0
- package/dist/src/core/presentation/cli/json-output.js +28 -0
- package/dist/src/core/presentation/cli/style.js +21 -0
- package/dist/src/core/presentation/cli/suggest.js +25 -0
- package/dist/src/core/presentation/cli/terminal-confirmation.js +63 -0
- package/dist/src/core/presentation/ended-processes.js +18 -0
- package/dist/src/core/presentation/i18n/translator.js +23 -0
- package/dist/src/core/presentation/list-preview.js +10 -0
- package/dist/src/core/presentation/mcp/elicitation.js +55 -0
- package/dist/src/core/presentation/mcp/mcp-application.js +60 -0
- package/dist/src/core/presentation/mcp/mcp-confirmation.js +59 -0
- package/dist/src/core/presentation/mcp/mcp-server.js +355 -0
- package/dist/src/core/presentation/mcp/protocol.js +32 -0
- package/dist/src/core/presentation/mcp/request-state.js +66 -0
- package/dist/src/core/presentation/mcp/tool-definitions.js +149 -0
- package/dist/src/core/presentation/mcp/tool-results.js +56 -0
- package/dist/src/i18n/locales/en.js +827 -0
- package/dist/src/main.js +154 -0
- package/dist/src/modules/archive/application/archive-sources.js +55 -0
- package/dist/src/modules/archive/application/create-tar.use-case.js +123 -0
- package/dist/src/modules/archive/application/create-zip.use-case.js +106 -0
- package/dist/src/modules/archive/application/extract-tar.use-case.js +240 -0
- package/dist/src/modules/archive/application/extract-zip.use-case.js +181 -0
- package/dist/src/modules/archive/application/tar-reader.js +45 -0
- package/dist/src/modules/archive/application/zip-reader.js +57 -0
- package/dist/src/modules/archive/archive.module.js +27 -0
- package/dist/src/modules/archive/domain/crc32.js +18 -0
- package/dist/src/modules/archive/domain/tar-format.js +97 -0
- package/dist/src/modules/archive/domain/tar-stream.js +223 -0
- package/dist/src/modules/archive/domain/zip-format.js +158 -0
- package/dist/src/modules/archive/presentation/tar.view.js +17 -0
- package/dist/src/modules/archive/presentation/untar.view.js +30 -0
- package/dist/src/modules/archive/presentation/unzip.view.js +24 -0
- package/dist/src/modules/archive/presentation/zip.view.js +17 -0
- package/dist/src/modules/clip/application/copy-text.use-case.js +43 -0
- package/dist/src/modules/clip/application/paste-text.use-case.js +25 -0
- package/dist/src/modules/clip/clip.module.js +16 -0
- package/dist/src/modules/clip/presentation/clip.views.js +7 -0
- package/dist/src/modules/completion/application/print-script.use-case.js +38 -0
- package/dist/src/modules/completion/application/suggest-words.use-case.js +37 -0
- package/dist/src/modules/completion/completion.module.js +14 -0
- package/dist/src/modules/completion/domain/scripts.js +91 -0
- package/dist/src/modules/completion/domain/suggest.js +134 -0
- package/dist/src/modules/completion/presentation/completion.views.js +6 -0
- package/dist/src/modules/config/application/config-commands.js +14 -0
- package/dist/src/modules/config/application/get-setting.use-case.js +25 -0
- package/dist/src/modules/config/application/list-config-keys.use-case.js +26 -0
- package/dist/src/modules/config/application/list-settings.use-case.js +28 -0
- package/dist/src/modules/config/application/set-setting.use-case.js +53 -0
- package/dist/src/modules/config/application/show-config-path.use-case.js +21 -0
- package/dist/src/modules/config/application/unset-setting.use-case.js +28 -0
- package/dist/src/modules/config/config.module.js +28 -0
- package/dist/src/modules/config/presentation/config.views.js +33 -0
- package/dist/src/modules/convert/application/convert-case.use-case.js +38 -0
- package/dist/src/modules/convert/application/convert-codecs.use-case.js +92 -0
- package/dist/src/modules/convert/application/convert-input.js +16 -0
- package/dist/src/modules/convert/application/convert-json.use-case.js +51 -0
- package/dist/src/modules/convert/application/convert-time.use-case.js +39 -0
- package/dist/src/modules/convert/application/decode-jwt.use-case.js +52 -0
- package/dist/src/modules/convert/convert.module.js +29 -0
- package/dist/src/modules/convert/domain/json-syntax.js +135 -0
- package/dist/src/modules/convert/domain/jwt.js +29 -0
- package/dist/src/modules/convert/domain/moments.js +20 -0
- package/dist/src/modules/convert/presentation/convert.views.js +44 -0
- package/dist/src/modules/docker/application/clean-engine.use-case.js +77 -0
- package/dist/src/modules/docker/application/compose-project.js +45 -0
- package/dist/src/modules/docker/application/docker-engine.js +40 -0
- package/dist/src/modules/docker/application/list-containers.use-case.js +69 -0
- package/dist/src/modules/docker/application/run-compose.use-case.js +83 -0
- package/dist/src/modules/docker/application/show-logs.use-case.js +51 -0
- package/dist/src/modules/docker/application/stop-project.use-case.js +56 -0
- package/dist/src/modules/docker/docker.module.js +23 -0
- package/dist/src/modules/docker/domain/compose-file.js +105 -0
- package/dist/src/modules/docker/domain/engine-output.js +65 -0
- package/dist/src/modules/docker/presentation/docker.views.js +63 -0
- package/dist/src/modules/doctor/application/run-checks.use-case.js +128 -0
- package/dist/src/modules/doctor/doctor.module.js +13 -0
- package/dist/src/modules/doctor/domain/versions.js +22 -0
- package/dist/src/modules/doctor/presentation/doctor.view.js +30 -0
- package/dist/src/modules/env/application/check-dotenv.use-case.js +116 -0
- package/dist/src/modules/env/application/inspect-path.use-case.js +71 -0
- package/dist/src/modules/env/application/path-entries.js +28 -0
- package/dist/src/modules/env/application/show-variables.use-case.js +47 -0
- package/dist/src/modules/env/domain/dotenv.js +62 -0
- package/dist/src/modules/env/env.module.js +17 -0
- package/dist/src/modules/env/presentation/env.views.js +43 -0
- package/dist/src/modules/files/application/clean-builds.use-case.js +149 -0
- package/dist/src/modules/files/application/compare-paths.use-case.js +127 -0
- package/dist/src/modules/files/application/copy-paths.use-case.js +101 -0
- package/dist/src/modules/files/application/create-paths.use-case.js +85 -0
- package/dist/src/modules/files/application/delete-paths.use-case.js +127 -0
- package/dist/src/modules/files/application/find-duplicates.use-case.js +105 -0
- package/dist/src/modules/files/application/find-files.use-case.js +131 -0
- package/dist/src/modules/files/application/hash-files.use-case.js +73 -0
- package/dist/src/modules/files/application/list-entries.use-case.js +87 -0
- package/dist/src/modules/files/application/measure-folders.use-case.js +102 -0
- package/dist/src/modules/files/application/move-entry.js +19 -0
- package/dist/src/modules/files/application/move-paths.use-case.js +82 -0
- package/dist/src/modules/files/application/read-text.use-case.js +92 -0
- package/dist/src/modules/files/application/rename-paths.use-case.js +184 -0
- package/dist/src/modules/files/application/replace-text.use-case.js +146 -0
- package/dist/src/modules/files/application/search-text.use-case.js +115 -0
- package/dist/src/modules/files/application/show-info.use-case.js +80 -0
- package/dist/src/modules/files/application/show-tree.use-case.js +75 -0
- package/dist/src/modules/files/application/sync-folders.use-case.js +162 -0
- package/dist/src/modules/files/application/text-files.js +46 -0
- package/dist/src/modules/files/application/transfers.js +35 -0
- package/dist/src/modules/files/domain/case-style.js +18 -0
- package/dist/src/modules/files/domain/filters.js +9 -0
- package/dist/src/modules/files/domain/sync-plan.js +35 -0
- package/dist/src/modules/files/domain/text-encoding.js +75 -0
- package/dist/src/modules/files/domain/values.js +28 -0
- package/dist/src/modules/files/files.module.js +70 -0
- package/dist/src/modules/files/presentation/clean.view.js +15 -0
- package/dist/src/modules/files/presentation/compare.view.js +50 -0
- package/dist/src/modules/files/presentation/copy.view.js +17 -0
- package/dist/src/modules/files/presentation/delete.view.js +16 -0
- package/dist/src/modules/files/presentation/dupes.view.js +20 -0
- package/dist/src/modules/files/presentation/find.view.js +16 -0
- package/dist/src/modules/files/presentation/grep.view.js +27 -0
- package/dist/src/modules/files/presentation/hash.view.js +15 -0
- package/dist/src/modules/files/presentation/info.view.js +36 -0
- package/dist/src/modules/files/presentation/list.view.js +17 -0
- package/dist/src/modules/files/presentation/move.view.js +14 -0
- package/dist/src/modules/files/presentation/new.view.js +8 -0
- package/dist/src/modules/files/presentation/read.view.js +6 -0
- package/dist/src/modules/files/presentation/rename.view.js +16 -0
- package/dist/src/modules/files/presentation/replace.view.js +26 -0
- package/dist/src/modules/files/presentation/size.view.js +24 -0
- package/dist/src/modules/files/presentation/sync.view.js +37 -0
- package/dist/src/modules/files/presentation/tree.view.js +22 -0
- package/dist/src/modules/gen/application/gen-options.js +18 -0
- package/dist/src/modules/gen/application/generate-passwords.use-case.js +39 -0
- package/dist/src/modules/gen/application/generate-tokens.use-case.js +38 -0
- package/dist/src/modules/gen/application/generate-ulids.use-case.js +40 -0
- package/dist/src/modules/gen/application/generate-uuids.use-case.js +32 -0
- package/dist/src/modules/gen/domain/identifiers.js +65 -0
- package/dist/src/modules/gen/domain/secrets.js +43 -0
- package/dist/src/modules/gen/gen.module.js +20 -0
- package/dist/src/modules/git/application/fetch-repositories.use-case.js +50 -0
- package/dist/src/modules/git/application/git-client.js +62 -0
- package/dist/src/modules/git/application/pull-repositories.use-case.js +67 -0
- package/dist/src/modules/git/application/repositories.js +67 -0
- package/dist/src/modules/git/application/show-status.use-case.js +49 -0
- package/dist/src/modules/git/application/switch-branch.use-case.js +118 -0
- package/dist/src/modules/git/domain/repository-status.js +37 -0
- package/dist/src/modules/git/git.module.js +25 -0
- package/dist/src/modules/git/presentation/git.views.js +100 -0
- package/dist/src/modules/net/application/check-connection.use-case.js +71 -0
- package/dist/src/modules/net/application/list-addresses.use-case.js +29 -0
- package/dist/src/modules/net/application/lookup-name.use-case.js +55 -0
- package/dist/src/modules/net/net.module.js +17 -0
- package/dist/src/modules/net/presentation/net.views.js +39 -0
- package/dist/src/modules/open/application/open-target.use-case.js +53 -0
- package/dist/src/modules/open/domain/targets.js +45 -0
- package/dist/src/modules/open/open.module.js +12 -0
- package/dist/src/modules/open/presentation/open.view.js +6 -0
- package/dist/src/modules/port/application/end-port-owners.use-case.js +68 -0
- package/dist/src/modules/port/application/find-free-port.use-case.js +40 -0
- package/dist/src/modules/port/application/find-listeners.use-case.js +34 -0
- package/dist/src/modules/port/application/port-owners.js +25 -0
- package/dist/src/modules/port/domain/port-number.js +8 -0
- package/dist/src/modules/port/port.module.js +17 -0
- package/dist/src/modules/port/presentation/port.views.js +27 -0
- package/dist/src/modules/proc/application/end-processes.use-case.js +77 -0
- package/dist/src/modules/proc/application/find-processes.use-case.js +50 -0
- package/dist/src/modules/proc/application/list-processes.use-case.js +41 -0
- package/dist/src/modules/proc/application/show-tree.use-case.js +40 -0
- package/dist/src/modules/proc/domain/process-tree.js +55 -0
- package/dist/src/modules/proc/presentation/proc.views.js +28 -0
- package/dist/src/modules/proc/proc.module.js +19 -0
- package/dist/src/modules/sys/application/create-report.use-case.js +30 -0
- package/dist/src/modules/sys/application/find-tools.use-case.js +20 -0
- package/dist/src/modules/sys/application/machine-facts.js +44 -0
- package/dist/src/modules/sys/application/show-info.use-case.js +29 -0
- package/dist/src/modules/sys/domain/tools.js +17 -0
- package/dist/src/modules/sys/presentation/sys.views.js +67 -0
- package/dist/src/modules/sys/sys.module.js +17 -0
- package/dist/src/modules/wait/application/poll.js +26 -0
- package/dist/src/modules/wait/application/wait-file.use-case.js +55 -0
- package/dist/src/modules/wait/application/wait-port.use-case.js +76 -0
- package/dist/src/modules/wait/application/wait-url.use-case.js +71 -0
- package/dist/src/modules/wait/domain/reasons.js +14 -0
- package/dist/src/modules/wait/domain/wait-input.js +50 -0
- package/dist/src/modules/wait/presentation/wait.views.js +31 -0
- package/dist/src/modules/wait/wait.module.js +21 -0
- package/package.json +57 -0
|
@@ -0,0 +1,827 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The English catalog, and the source of every message key. Another locale is a
|
|
3
|
+
* file of the same shape typed as `Catalog`, so a missing key fails the build.
|
|
4
|
+
*/
|
|
5
|
+
export const en = {
|
|
6
|
+
"core.app.summary": "One command-line toolbox for everyday developer work that behaves the same on Windows, Linux and macOS.",
|
|
7
|
+
"core.help.usage": "Usage",
|
|
8
|
+
"core.help.modules": "Modules",
|
|
9
|
+
"core.help.commands": "Commands",
|
|
10
|
+
"core.help.arguments": "Arguments",
|
|
11
|
+
"core.help.options": "Options",
|
|
12
|
+
"core.help.examples": "Examples",
|
|
13
|
+
"core.help.global-options": "Global options",
|
|
14
|
+
"core.help.module-hint": "Run {command} to see a module's commands.",
|
|
15
|
+
"core.help.command-hint": "Run {command} for a command's arguments and options.",
|
|
16
|
+
"core.help.guide": "Guide: {address}",
|
|
17
|
+
"core.help.guides": "Guides to every module: {address}",
|
|
18
|
+
"core.option.json": "Print the result as JSON on stdout",
|
|
19
|
+
"core.option.no-color": "Print without colour",
|
|
20
|
+
"core.option.no-input": "Never prompt; fail with the flag that would have been needed",
|
|
21
|
+
"core.option.debug": "Show internal details of unexpected errors",
|
|
22
|
+
"core.option.help": "Show help",
|
|
23
|
+
"core.option.version": "Show the version",
|
|
24
|
+
"core.usage.unknown-module": "Unknown module: {name}",
|
|
25
|
+
"core.usage.unknown-command": "Unknown command: {module} {name}",
|
|
26
|
+
"core.usage.did-you-mean": "Did you mean {suggestion}?",
|
|
27
|
+
"core.usage.bad-arguments": "{detail}",
|
|
28
|
+
"core.usage.unknown-option": "Unknown option: {option}",
|
|
29
|
+
"core.usage.takes-no-value": "--{option} does not take a value",
|
|
30
|
+
"core.usage.too-many-arguments": "Too many arguments: {extra}",
|
|
31
|
+
"core.usage.missing-argument": "Missing argument: {name}",
|
|
32
|
+
"core.usage.expects-value": "--{option} needs a value",
|
|
33
|
+
"core.usage.not-a-choice": "--{option} must be one of: {choices}",
|
|
34
|
+
"core.usage.not-a-positive-integer": "--{option} must be a positive whole number",
|
|
35
|
+
"core.result.preview": "Preview only: nothing changed. Run again with {flag} to apply it.",
|
|
36
|
+
"core.result.dry-run": "Dry run: nothing changed.",
|
|
37
|
+
"core.confirm.yes-no": "[y/N]",
|
|
38
|
+
"core.confirm.cannot-undo": "This cannot be undone.",
|
|
39
|
+
"core.confirm.type": "Type {expected} to continue:",
|
|
40
|
+
"core.confirm.no-terminal-yes": "There is no terminal to ask for confirmation; pass --yes to go ahead.",
|
|
41
|
+
"core.confirm.no-terminal-typed": "There is no terminal to ask for confirmation; pass {flag} to go ahead.",
|
|
42
|
+
"core.confirm.declined": "Stopped: nothing changed.",
|
|
43
|
+
"core.error.label": "error",
|
|
44
|
+
"core.error.interrupted": "Interrupted: stopped before finishing.",
|
|
45
|
+
"core.error.unexpected": "Unexpected error: {detail}",
|
|
46
|
+
"core.fs.not-found": "Not found: {path}",
|
|
47
|
+
"core.fs.permission": "Permission denied: {path}",
|
|
48
|
+
"core.fs.exists": "Already exists: {path}",
|
|
49
|
+
"core.fs.failed": "{path}: {detail}",
|
|
50
|
+
"core.guard.drive-root": "{path} is a drive root",
|
|
51
|
+
"core.guard.home": "{path} is your home folder",
|
|
52
|
+
"core.guard.working-folder": "{path} is the current folder or one of its parents",
|
|
53
|
+
"core.guard.system-folder": "{path} is inside the system folder {folder}",
|
|
54
|
+
"core.guard.system-location": "{path} is the system folder {folder}",
|
|
55
|
+
"core.trash.location.recycle-bin": "the Recycle Bin",
|
|
56
|
+
"core.trash.location.macos": "the Trash",
|
|
57
|
+
"core.trash.location.freedesktop": "the trash",
|
|
58
|
+
"core.trash.windows.language-mode": "PowerShell runs in {mode} mode on this machine, so the Recycle Bin cannot be reached; use --permanent",
|
|
59
|
+
"core.trash.windows.network": "a network path has no Recycle Bin; use --permanent",
|
|
60
|
+
"core.trash.windows.drive": "a {drive} drive may have no Recycle Bin; use --permanent",
|
|
61
|
+
"core.trash.other-device": "it is on another drive than the trash; use --permanent",
|
|
62
|
+
"core.trash.failed": "{detail}",
|
|
63
|
+
"files.summary": "Files and folders: create, find, read, search, compare, copy, move, rename and delete, the same on every OS",
|
|
64
|
+
"files.about": "Everyday work on files and folders, with the same results in PowerShell, cmd, bash and zsh. kiriya expands globs itself, so quote them; they ignore case and skip hidden entries and dependency folders such as node_modules unless --all is given. rename, replace, clean and sync only show their plan until --apply, and copy, move and delete take --dry-run. delete sends to the trash. Removing for good or replacing what exists needs a typed confirmation, and drive roots, the home folder, the working folder and its parents, and system folders are always refused.",
|
|
65
|
+
"files.option.all": "Include hidden entries and dependency folders such as node_modules",
|
|
66
|
+
"core.path.not-a-folder": "Not a folder: {path}",
|
|
67
|
+
"core.glob.no-match": "Nothing matches {pattern}",
|
|
68
|
+
"files.value.size": "Not a size: {value} (try 500, 10KB, 1.5MB or 2GB)",
|
|
69
|
+
"files.value.time": "Not a time: {value} (try 30m, 12h, 7d, 2w, 1y or 2026-01-31)",
|
|
70
|
+
"core.name.empty": "The name is empty",
|
|
71
|
+
"core.name.characters": '{name}: names cannot contain / \\ < > : " | ? * or control characters',
|
|
72
|
+
"core.name.trailing": "{name}: names cannot end with a dot or a space",
|
|
73
|
+
"core.name.reserved": "{name} is a reserved name on Windows",
|
|
74
|
+
"files.list.summary": "List a folder's entries with type, size and modification time",
|
|
75
|
+
"files.list.arg.path": "The folder or file to list; the current folder by default",
|
|
76
|
+
"files.list.option.sort": "Sort by name, size or time",
|
|
77
|
+
"files.list.option.reverse": "Reverse the order",
|
|
78
|
+
"files.list.total": "{folders} folder(s), {files} file(s), {size}",
|
|
79
|
+
"files.list.hidden": "{count} hidden, shown with --all",
|
|
80
|
+
"files.find.summary": "Find files and folders by name, extension, type, size, age or emptiness",
|
|
81
|
+
"files.find.arg.folder": "The folder to search; the current folder by default",
|
|
82
|
+
"files.find.option.name": "A glob that ignores case, such as *.test.ts or src/**/index.*",
|
|
83
|
+
"files.find.option.ext": "Extensions, such as .ts,.tsx",
|
|
84
|
+
"files.find.option.type": "Only files or only folders",
|
|
85
|
+
"files.find.option.larger": "Larger than a size, such as 10KB",
|
|
86
|
+
"files.find.option.smaller": "Smaller than a size",
|
|
87
|
+
"files.find.option.newer": "Modified within a time, such as 7d, or after a date",
|
|
88
|
+
"files.find.option.older": "Modified before a time or date",
|
|
89
|
+
"files.find.option.empty": "Only empty files and folders",
|
|
90
|
+
"files.find.option.limit": "Show at most this many results",
|
|
91
|
+
"files.find.total": "{count} found, {size} in files",
|
|
92
|
+
"files.find.none": "Nothing found",
|
|
93
|
+
"files.find.more": "… and {count} more; raise --limit to see them",
|
|
94
|
+
"files.new.summary": "Create files or folders with any missing parents; never touches an existing one",
|
|
95
|
+
"files.new.arg.paths": "Paths to create; a path ending in / is a folder",
|
|
96
|
+
"files.new.option.dir": "Create folders",
|
|
97
|
+
"files.new.option.content": "Text to write into each new file",
|
|
98
|
+
"files.new.content-with-dir": "--content is for files, not --dir",
|
|
99
|
+
"files.new.created-file": "Created file {path}",
|
|
100
|
+
"files.new.created-folder": "Created folder {path}",
|
|
101
|
+
"files.delete.summary": "Send files and folders to the trash, or remove them for good with --permanent",
|
|
102
|
+
"files.delete.arg.paths": "Paths or globs to delete",
|
|
103
|
+
"files.delete.option.permanent": "Remove for good instead of sending to the trash",
|
|
104
|
+
"files.delete.option.dry-run": "Show what would be deleted and change nothing",
|
|
105
|
+
"files.delete.option.yes": "Send to the trash without asking; never enough for --permanent",
|
|
106
|
+
"files.delete.option.confirm": "For --permanent in scripts: the number of items, as the prompt would ask",
|
|
107
|
+
"files.delete.total": "{count} item(s), {size}",
|
|
108
|
+
"files.delete.repository": "{path} is a git repository",
|
|
109
|
+
"files.delete.ask-trash": "Send {count} item(s) to {location}?",
|
|
110
|
+
"files.delete.warn-permanent": "Permanently delete {count} item(s), {size}.",
|
|
111
|
+
"files.delete.trashed": "Sent to the trash: {path}",
|
|
112
|
+
"files.delete.deleted": "Deleted {path}",
|
|
113
|
+
"files.delete.failed": "{path}: {reason}",
|
|
114
|
+
"core.fs.is-folder": "{path} is a folder",
|
|
115
|
+
"core.fs.truncated": "{path} ends early; it is truncated or damaged",
|
|
116
|
+
"core.compression.failed": "The compressed data is damaged: {detail}",
|
|
117
|
+
"core.process.cannot-start": "Could not start {program}: {detail}",
|
|
118
|
+
"core.guard.refused": "Refused: {reason}",
|
|
119
|
+
"core.confirm.mismatch": "--confirm={provided} does not match {expected}; nothing changed",
|
|
120
|
+
"core.list.more": "… and {count} more",
|
|
121
|
+
"core.kind.file": "file",
|
|
122
|
+
"core.kind.directory": "folder",
|
|
123
|
+
"core.kind.symlink": "symlink",
|
|
124
|
+
"core.kind.other": "other",
|
|
125
|
+
"files.option.ext": "Only files with these extensions, such as .ts,.tsx",
|
|
126
|
+
"files.option.name": "Only files whose name matches this glob, such as *.config.js",
|
|
127
|
+
"files.tree.summary": "Show a folder as a tree, folders first",
|
|
128
|
+
"files.tree.arg.path": "The folder to draw; the current folder by default",
|
|
129
|
+
"files.tree.option.depth": "How many levels to open; 3 by default",
|
|
130
|
+
"files.tree.option.all": "Show hidden entries and open dependency folders such as node_modules",
|
|
131
|
+
"files.tree.not-opened": "(not opened)",
|
|
132
|
+
"files.tree.unreadable": "(cannot be read)",
|
|
133
|
+
"files.tree.total": "{folders} folder(s), {files} file(s) shown, depth {depth}",
|
|
134
|
+
"files.info.summary": "Show type, size, dates and permissions of files or folders, and optionally a hash",
|
|
135
|
+
"files.info.arg.paths": "Paths or globs",
|
|
136
|
+
"files.info.option.hash": "Also show a hash of each file",
|
|
137
|
+
"files.info.label.type": "type",
|
|
138
|
+
"files.info.label.target": "target",
|
|
139
|
+
"files.info.label.size": "size",
|
|
140
|
+
"files.info.label.created": "created",
|
|
141
|
+
"files.info.label.modified": "modified",
|
|
142
|
+
"files.info.label.accessed": "accessed",
|
|
143
|
+
"files.info.label.access": "access",
|
|
144
|
+
"files.info.label.hidden": "hidden",
|
|
145
|
+
"files.info.size-file": "{size} ({bytes} bytes)",
|
|
146
|
+
"files.info.size-folder": "{size} in {files} file(s), {folders} folder(s)",
|
|
147
|
+
"files.info.read-write": "read-write",
|
|
148
|
+
"files.info.read-only": "read-only",
|
|
149
|
+
"files.info.hidden-yes": "yes (dot name)",
|
|
150
|
+
"files.info.hidden-no": "no",
|
|
151
|
+
"files.read.summary": "Print a text file, or part of it, in UTF-8, UTF-8 with BOM, UTF-16 LE or UTF-16 BE",
|
|
152
|
+
"files.read.arg.file": "The text file",
|
|
153
|
+
"files.read.option.head": "Only the first n lines",
|
|
154
|
+
"files.read.option.tail": "Only the last n lines",
|
|
155
|
+
"files.read.option.lines": "Only these lines, such as 10-20",
|
|
156
|
+
"files.read.option.number": "Put line numbers in front",
|
|
157
|
+
"files.read.one-selection": "Use only one of --head, --tail and --lines",
|
|
158
|
+
"files.read.lines-format": "--lines must look like 10-20",
|
|
159
|
+
"files.read.lines-order": "--lines must go from a lower to a higher line",
|
|
160
|
+
"files.read.is-folder": "{path} is a folder; use kiriya files list or kiriya files tree",
|
|
161
|
+
"files.read.not-text": "{path} is not a text file, or is larger than {limit}",
|
|
162
|
+
"files.grep.summary": "Search text inside files with the same regular expressions on every OS",
|
|
163
|
+
"files.grep.arg.pattern": "A JavaScript regular expression, or exact text with --literal",
|
|
164
|
+
"files.grep.arg.paths": "Files, folders or globs to search; the current folder by default",
|
|
165
|
+
"files.grep.option.literal": "Search for the exact text instead of a regular expression",
|
|
166
|
+
"files.grep.option.ignore-case": "Ignore case",
|
|
167
|
+
"files.grep.option.files-only": "Print only the names of files with a match",
|
|
168
|
+
"files.grep.option.count": "Print the number of matches in each file",
|
|
169
|
+
"files.grep.option.limit": "Show at most this many matching lines; 500 by default",
|
|
170
|
+
"files.grep.empty-pattern": "The pattern is empty",
|
|
171
|
+
"files.grep.bad-pattern": "Not a valid regular expression: {pattern}; pass --literal to search for the text itself",
|
|
172
|
+
"files.grep.more": "… {count} more match(es) not shown; raise --limit to see them",
|
|
173
|
+
"files.grep.skipped": "{count} binary or large file(s) skipped",
|
|
174
|
+
"files.grep.total": "{matches} match(es) in {matched} of {checked} file(s)",
|
|
175
|
+
"files.hash.summary": "Print checksums of files, or check a file against a published checksum",
|
|
176
|
+
"files.hash.arg.paths": "Files or globs",
|
|
177
|
+
"files.hash.option.algo": "The algorithm; sha256 by default",
|
|
178
|
+
"files.hash.option.check": "The checksum a single file should have; exits 1 when it does not",
|
|
179
|
+
"files.hash.not-a-file": "{path} is not a file; skipped",
|
|
180
|
+
"files.hash.check-one": "--check takes exactly one file",
|
|
181
|
+
"files.hash.matches": "{algorithm} matches: {path}",
|
|
182
|
+
"files.hash.mismatch": "{algorithm} does not match: expected {expected}, got {actual}",
|
|
183
|
+
"files.dupes.summary": "Find files with identical content, and the space their extra copies take",
|
|
184
|
+
"files.dupes.arg.folder": "The folder to search; the current folder by default",
|
|
185
|
+
"files.dupes.option.min-size": "Ignore files smaller than this, such as 1MB",
|
|
186
|
+
"files.dupes.extra": "{size} in extra copies",
|
|
187
|
+
"files.dupes.none": "No duplicates among {checked} file(s)",
|
|
188
|
+
"files.dupes.total": "{groups} group(s) of identical files, {size} in extra copies ({checked} file(s) checked)",
|
|
189
|
+
"files.compare.summary": "Compare two files, or two folders, by content; exits 1 when they differ",
|
|
190
|
+
"files.compare.arg.a": "The first file or folder",
|
|
191
|
+
"files.compare.arg.b": "The second file or folder",
|
|
192
|
+
"files.compare.option.all": "In folders, include hidden entries and dependency folders",
|
|
193
|
+
"files.compare.mixed": "Compare two files or two folders, not one of each",
|
|
194
|
+
"files.compare.different": "They differ",
|
|
195
|
+
"files.compare.identical": "Identical ({size})",
|
|
196
|
+
"files.compare.files-differ": "The files differ: {sizeA} and {sizeB}",
|
|
197
|
+
"files.compare.same-text": "The text is the same; only line endings or the encoding differ: {encodingA} and {encodingB}",
|
|
198
|
+
"files.compare.first-difference": "The files differ first at line {line} ({linesA} and {linesB} lines)",
|
|
199
|
+
"files.compare.end-of-file": "(end of file)",
|
|
200
|
+
"files.compare.only-in-a": "Only in a ({count})",
|
|
201
|
+
"files.compare.only-in-b": "Only in b ({count})",
|
|
202
|
+
"files.compare.changed": "Different ({count})",
|
|
203
|
+
"files.compare.kind-differs": "{path} (a file on one side, a folder on the other)",
|
|
204
|
+
"files.compare.identical-folders": "Identical: {count} entries",
|
|
205
|
+
"files.compare.folder-total": "{onlyA} only in a, {onlyB} only in b, {different} different",
|
|
206
|
+
"files.transfer.arg.sources": "Files, folders or globs, followed by the target",
|
|
207
|
+
"files.transfer.arg.target": "A new name, or a folder to put them in; a trailing / always means a folder",
|
|
208
|
+
"files.transfer.option.overwrite": "Replace what exists at a destination, after a typed confirmation",
|
|
209
|
+
"files.transfer.option.dry-run": "Show the plan and change nothing",
|
|
210
|
+
"files.transfer.option.confirm": "For --overwrite in scripts: the number of conflicts, as the prompt would ask",
|
|
211
|
+
"files.transfer.already-there": "{path} is already there",
|
|
212
|
+
"files.transfer.into-itself": "{path} cannot go inside itself",
|
|
213
|
+
"files.transfer.same-destination": "Two sources would both become {path}",
|
|
214
|
+
"files.transfer.exists-note": "exists",
|
|
215
|
+
"files.transfer.conflicts-note": "{count} already exist",
|
|
216
|
+
"files.transfer.nothing-changed": "Nothing changed; pass --overwrite to replace what exists",
|
|
217
|
+
"files.copy.summary": "Copy files and folders, keeping modification times; never replaces anything unasked",
|
|
218
|
+
"files.copy.total": "{count} item(s), {size}",
|
|
219
|
+
"files.copy.warn-overwrite": "Replace files in {count} existing destination(s).",
|
|
220
|
+
"files.copy.done": "Copied {count} item(s)",
|
|
221
|
+
"files.move.summary": "Move or rename files and folders, across drives too; never replaces anything unasked",
|
|
222
|
+
"files.move.total": "{count} item(s)",
|
|
223
|
+
"files.move.warn-overwrite": "Send {count} existing destination(s) to {location} and move into their place.",
|
|
224
|
+
"files.move.trash-failed": "{path} could not go to the trash: {reason}",
|
|
225
|
+
"files.move.nothing-moved": "Nothing moved",
|
|
226
|
+
"files.move.done": "Moved {count} item(s)",
|
|
227
|
+
"files.rename.summary": "Rename one entry, or many by case style or text replacement, with a preview",
|
|
228
|
+
"files.rename.arg.paths": "A path and its new name; with --case or --find, the folders and globs to rename",
|
|
229
|
+
"files.rename.option.case": "Rename to a case style",
|
|
230
|
+
"files.rename.option.find": "Text to replace in names",
|
|
231
|
+
"files.rename.option.with": "The replacement for --find",
|
|
232
|
+
"files.rename.option.recursive": "Rename everything below a folder, not only its own entries",
|
|
233
|
+
"files.rename.option.only": "Rename only files or only folders",
|
|
234
|
+
"files.rename.option.apply": "Rename; without it kiriya only shows the plan",
|
|
235
|
+
"files.rename.option.yes": "Rename without asking",
|
|
236
|
+
"files.rename.usage": "Give a path and its new name, or use --case, or --find with --with",
|
|
237
|
+
"files.rename.find-with": "--find and --with go together",
|
|
238
|
+
"files.rename.find-empty": "--find needs some text",
|
|
239
|
+
"files.rename.invalid-name": "{reason}; to move it somewhere else, use kiriya files move",
|
|
240
|
+
"files.rename.invalid": "{from}: {reason}",
|
|
241
|
+
"files.rename.clash": "{first} and {second} would both become {name}",
|
|
242
|
+
"files.rename.nothing-renamed": "Nothing renamed; fix these first",
|
|
243
|
+
"files.rename.ask": "Rename {count} item(s)?",
|
|
244
|
+
"files.rename.renamed-one": "{from} -> {name}",
|
|
245
|
+
"files.rename.count": "{count} to rename",
|
|
246
|
+
"files.rename.all-fit": "Every name already fits",
|
|
247
|
+
"files.rename.renamed": "Renamed {count} item(s)",
|
|
248
|
+
"files.replace.summary": "Find and replace text across files, keeping each file's encoding and line endings",
|
|
249
|
+
"files.replace.arg.find": "The text to find, or a regular expression with --regex",
|
|
250
|
+
"files.replace.arg.with": "The replacement; with --regex, $1 inserts the first group",
|
|
251
|
+
"files.replace.arg.paths": "Files, folders or globs; the current folder by default",
|
|
252
|
+
"files.replace.option.regex": "Treat the text to find as a regular expression",
|
|
253
|
+
"files.replace.option.ignore-case": "Ignore case",
|
|
254
|
+
"files.replace.option.apply": "Write the changes; without it kiriya only shows them",
|
|
255
|
+
"files.replace.option.yes": "Write without asking",
|
|
256
|
+
"files.replace.empty-find": "The text to find is empty",
|
|
257
|
+
"files.replace.bad-pattern": "Not a valid regular expression: {pattern}",
|
|
258
|
+
"files.replace.matches": "{count} match(es)",
|
|
259
|
+
"files.replace.lines-change": "The number of lines changes",
|
|
260
|
+
"files.replace.total": "{total} replacement(s) in {files} of {checked} file(s)",
|
|
261
|
+
"files.replace.ask": "Write {count} changed file(s)? There is no undo.",
|
|
262
|
+
"files.replace.written": "Wrote {count} file(s)",
|
|
263
|
+
"files.clean.summary": "Remove rebuildable build output and caches, only next to the project files that recreate them",
|
|
264
|
+
"files.clean.arg.folder": "The folder to search; the current folder by default",
|
|
265
|
+
"files.clean.option.depth": "How many folders deep to search; 8 by default",
|
|
266
|
+
"files.clean.option.apply": "Remove the folders; without it kiriya only lists them",
|
|
267
|
+
"files.clean.option.confirm": "For --apply in scripts: the number of folders, as the prompt would ask",
|
|
268
|
+
"files.clean.reason.node": "package.json",
|
|
269
|
+
"files.clean.reason.dotnet": ".NET project",
|
|
270
|
+
"files.clean.reason.python": "Python project",
|
|
271
|
+
"files.clean.reason.cargo-maven": "Cargo.toml or pom.xml",
|
|
272
|
+
"files.clean.reason.gradle": "Gradle project",
|
|
273
|
+
"files.clean.reason.python-cache": "Python cache",
|
|
274
|
+
"files.clean.no-git": "git is not on PATH, so folders with files git tracks could not be recognised",
|
|
275
|
+
"files.clean.total": "{count} rebuildable folder(s), {size}",
|
|
276
|
+
"files.clean.tracked": "{count} tracked by git, left alone",
|
|
277
|
+
"files.clean.warn": "Permanently remove {count} rebuildable folder(s), {size}.",
|
|
278
|
+
"files.clean.done": "Removed {count} folder(s), freed {size}",
|
|
279
|
+
"files.sync.summary": "Mirror one folder into another: a preview first, and no change without --apply",
|
|
280
|
+
"files.sync.arg.source": "The folder to copy from",
|
|
281
|
+
"files.sync.arg.target": "The folder to bring in line with the source",
|
|
282
|
+
"files.sync.option.delete": "Also delete target files that are not in the source",
|
|
283
|
+
"files.sync.option.apply": "Make the changes; without it kiriya only shows the plan",
|
|
284
|
+
"files.sync.option.yes": "Copy without asking; never enough for --delete",
|
|
285
|
+
"files.sync.option.confirm": "For --delete in scripts: the target folder's name, as the prompt would ask",
|
|
286
|
+
"files.sync.source-not-folder": "The source is not a folder: {path}",
|
|
287
|
+
"files.sync.nested": "The source and the target must not be the same folder or contain each other",
|
|
288
|
+
"files.sync.label.source": "source",
|
|
289
|
+
"files.sync.label.target": "target",
|
|
290
|
+
"files.sync.plan": "{copy} to copy, {update} to update, {remove} to delete · {size} to write",
|
|
291
|
+
"files.sync.section.copy": "copy",
|
|
292
|
+
"files.sync.section.update": "update",
|
|
293
|
+
"files.sync.section.delete": "delete",
|
|
294
|
+
"files.sync.in-sync": "Already in sync",
|
|
295
|
+
"files.sync.ask": "Write {count} file(s) into {target}?",
|
|
296
|
+
"files.sync.warn-delete": "Delete {count} file(s) from {target} that are not in the source.",
|
|
297
|
+
"files.sync.outside": "Refusing to delete outside the target: {path}",
|
|
298
|
+
"files.sync.done": "{copy} copied, {update} updated, {remove} deleted",
|
|
299
|
+
"files.size.summary": "Show the largest folders under a folder, with rebuildable dependency and cache folders called out",
|
|
300
|
+
"files.size.arg.folder": "The folder to measure; the current folder by default",
|
|
301
|
+
"files.size.option.top": "How many folders to show; 15 by default",
|
|
302
|
+
"files.size.rebuildable-total": "({size} rebuildable)",
|
|
303
|
+
"files.size.rebuildable": "{size} rebuildable",
|
|
304
|
+
"files.size.more": "… and {count} more folders",
|
|
305
|
+
"files.size.loose-files": "(files)",
|
|
306
|
+
"archive.summary": "ZIP and tar.gz archives, made and opened the same way on every OS with no zip, tar or 7-Zip installed",
|
|
307
|
+
"archive.about": "Make and open .zip, .tar.gz, .tgz and .tar archives with nothing else installed, with the same result on every OS. A new archive never replaces an existing file, and --lean leaves out .git, node_modules and build folders. Extracting refuses the whole archive when any entry would land outside its folder, and replaces existing files only with --overwrite and a typed confirmation.",
|
|
308
|
+
"archive.read.not-a-zip": "Not a zip file: {path}",
|
|
309
|
+
"archive.read.zip64": "{path} uses ZIP64, which is not supported",
|
|
310
|
+
"archive.read.damaged": "The zip directory of {path} is damaged",
|
|
311
|
+
"archive.zip.summary": "Pack files and folders into a new .zip",
|
|
312
|
+
"archive.zip.arg.paths": "Files, folders or globs; each folder keeps its own name inside the archive",
|
|
313
|
+
"archive.zip.option.to": "The archive to create; it must not exist yet",
|
|
314
|
+
"archive.zip.option.lean": "Leave out .git, node_modules and other dependency or build folders",
|
|
315
|
+
"archive.zip.option.all": "Let globs match hidden entries and dependency folders",
|
|
316
|
+
"archive.zip.to-required": "--to must name the archive to create",
|
|
317
|
+
"archive.zip.too-many-entries": "{count} entries need ZIP64, which is not supported",
|
|
318
|
+
"archive.zip.entry-too-large": "{name} is 4 GB or larger, which needs ZIP64",
|
|
319
|
+
"archive.zip.archive-too-large": "{path} would pass 4 GB, which needs ZIP64",
|
|
320
|
+
"archive.zip.done": "{path}: {entries} entries, {bytesIn} -> {bytesOut} ({ratio}%)",
|
|
321
|
+
"archive.zip.skipped-links": "{count} symlink(s) skipped",
|
|
322
|
+
"archive.unzip.summary": "List or extract a .zip, refusing entries that would land outside the target folder",
|
|
323
|
+
"archive.unzip.arg.archive": "The .zip file",
|
|
324
|
+
"archive.unzip.option.to": "Where to extract; by default a folder named after the archive, next to it",
|
|
325
|
+
"archive.unzip.option.list": "List the entries and extract nothing",
|
|
326
|
+
"archive.unzip.option.overwrite": "Replace existing files, after a typed confirmation",
|
|
327
|
+
"archive.unzip.option.confirm": "For --overwrite in scripts: the number of files replaced, as the prompt would ask",
|
|
328
|
+
"archive.unzip.encrypted": "encrypted entries are not supported",
|
|
329
|
+
"archive.unzip.method": "compression method {method} is not supported; only stored and deflate are",
|
|
330
|
+
"archive.unzip.damaged-entry": "the entry's local header is damaged",
|
|
331
|
+
"archive.unzip.checksum": "the checksum does not match; the archive is damaged",
|
|
332
|
+
"archive.unzip.folder-in-the-way": "a folder is in the way",
|
|
333
|
+
"archive.unzip.entry-failed": "{name}: {reason}",
|
|
334
|
+
"archive.unzip.invalid-name": "{name}: {reason}; skipped",
|
|
335
|
+
"archive.unzip.unsafe-name": "Unsafe entry name: {name}",
|
|
336
|
+
"archive.unzip.unsafe-archive": "Nothing extracted: this archive tries to write outside its folder",
|
|
337
|
+
"archive.unzip.nothing-extracted": "Nothing extracted; pass --overwrite to replace existing files",
|
|
338
|
+
"archive.unzip.warn-overwrite": "Replace {count} existing file(s) in {target}.",
|
|
339
|
+
"archive.unzip.list-total": "{count} entries, {size} unpacked",
|
|
340
|
+
"archive.unzip.done": "{files} file(s), {size} into {target}",
|
|
341
|
+
"core.config.invalid-json": "{path} is not valid JSON",
|
|
342
|
+
"core.config.not-an-object": "{path} must hold one JSON object",
|
|
343
|
+
"core.config.invalid-field": "{path}: {field} must be text or a list of text",
|
|
344
|
+
"core.config.wrong-type": "{path}: {field} must be {expected}",
|
|
345
|
+
"core.config.type.string": "text",
|
|
346
|
+
"core.config.type.list": "a list of text",
|
|
347
|
+
"core.plugin.not-found": "No plugin found at {entry}",
|
|
348
|
+
"core.plugin.import-failed": "{entry} could not be imported: {detail}",
|
|
349
|
+
"core.plugin.no-module": "it does not export a kiriya module",
|
|
350
|
+
"core.plugin.bad-id": "its id must be lower-case letters, digits and hyphens, starting with a letter",
|
|
351
|
+
"core.plugin.no-register": "{id} has no register function",
|
|
352
|
+
"core.plugin.no-messages": "{id} has no messages object",
|
|
353
|
+
"core.plugin.bad-message": "{id}: the message {key} must start with {id}. and hold text",
|
|
354
|
+
"core.plugin.no-summary": "{id}: its summary must be one of its own message keys",
|
|
355
|
+
"core.plugin.bad-about": "{id}: its about must be one of its own message keys",
|
|
356
|
+
"core.plugin.bad-examples": "{id}: its examples must be a list of text",
|
|
357
|
+
"core.plugin.bad-guide": "{id}: its guide must be a web address starting with https://",
|
|
358
|
+
"core.plugin.taken": "the id {id} already belongs to kiriya or another plugin",
|
|
359
|
+
"core.plugin.register-failed": "{id} could not register its commands: {detail}",
|
|
360
|
+
"config.summary": "kiriya's own settings, such as the plugins to load, in one file per user",
|
|
361
|
+
"config.about": "kiriya's own settings, in one JSON file per user: which plugins to load, and what kiriya mcp may offer AI agents. config path shows where the file is, config keys lists every setting and the values it takes, and set and unset change the file. The file never holds a secret, so set refuses values that look like one, and AI agents are never offered set or unset.",
|
|
362
|
+
"config.arg.key": "The setting's name",
|
|
363
|
+
"config.key.plugins": "Plugins to load: npm package names, or paths relative to this file",
|
|
364
|
+
"config.key.mcp-allow-destroy": "true lets kiriya mcp offer AI agents the commands whose work cannot be undone, each of which asks the user through the client first; start the server again after changing it",
|
|
365
|
+
"config.key.mcp-allow-write": "true lets kiriya mcp offer AI agents the commands that change files, which can be undone; start the server again after changing it",
|
|
366
|
+
"config.path.summary": "Print where the configuration file is, whether or not it exists yet",
|
|
367
|
+
"config.keys.summary": "List every setting kiriya reads",
|
|
368
|
+
"config.keys.example": "e.g. {command}",
|
|
369
|
+
"config.keys.choices": "one of: {choices}",
|
|
370
|
+
"config.list.summary": "List the settings in the configuration file",
|
|
371
|
+
"config.list.not-set": "(not set)",
|
|
372
|
+
"config.list.unknown": "(not a kiriya setting)",
|
|
373
|
+
"config.get.summary": "Print one setting, one value per line",
|
|
374
|
+
"config.get.not-set": "{key} is not set",
|
|
375
|
+
"config.set.summary": "Change a setting; a list setting takes all its values at once",
|
|
376
|
+
"config.set.arg.key": "The setting's name; see kiriya config keys",
|
|
377
|
+
"config.set.arg.values": "The value, or every value of a list",
|
|
378
|
+
"config.set.unknown-key": "{key} is not a kiriya setting; see kiriya config keys",
|
|
379
|
+
"config.set.one-value": "{key} takes exactly one value",
|
|
380
|
+
"config.set.not-a-choice": "{key} takes one of: {choices}",
|
|
381
|
+
"config.set.secret": "Refused: the configuration file never holds a password, token or key",
|
|
382
|
+
"config.set.done": "{key} = {value}",
|
|
383
|
+
"config.unset.summary": "Remove a setting from the configuration file",
|
|
384
|
+
"config.unset.done": "Removed {key}",
|
|
385
|
+
"config.unset.not-set": "{key} was not set",
|
|
386
|
+
"doctor.summary": "Check what this machine gives kiriya: runtime, configuration, trash, clipboard, git, docker and plugins",
|
|
387
|
+
"doctor.about": "Check what this machine gives kiriya before a command needs it: the Node.js version, the configuration file, the trash, the clipboard, git, docker and plugins. Each check says ok, warn or fail, and what is missing. It changes nothing and exits with 1 when a check fails, so a script can run it first.",
|
|
388
|
+
"doctor.status.ok": "ok",
|
|
389
|
+
"doctor.status.warn": "warn",
|
|
390
|
+
"doctor.status.fail": "fail",
|
|
391
|
+
"doctor.check.kiriya": "{version}",
|
|
392
|
+
"doctor.check.node": "{version}",
|
|
393
|
+
"doctor.check.node-old": "Node.js {version} is older than {minimum}, the oldest release kiriya supports",
|
|
394
|
+
"doctor.check.os": "{os}",
|
|
395
|
+
"doctor.check.config": "{path}",
|
|
396
|
+
"doctor.check.config-missing": "{path} (not created yet)",
|
|
397
|
+
"doctor.check.trash": "{location}",
|
|
398
|
+
"doctor.check.git": "{version}",
|
|
399
|
+
"doctor.check.git-missing": "git is not on PATH; kiriya git and files clean need it",
|
|
400
|
+
"doctor.check.docker": "Docker Engine {version}",
|
|
401
|
+
"doctor.check.docker-stopped": "docker is installed, but its engine is not running",
|
|
402
|
+
"doctor.check.docker-missing": "docker is not on PATH; kiriya docker needs it",
|
|
403
|
+
"doctor.check.plugins": "{loaded} loaded, {failed} failed",
|
|
404
|
+
"doctor.plugins": "Plugins",
|
|
405
|
+
"doctor.plugin": "{commands} command(s) · {location}",
|
|
406
|
+
"doctor.plugin-failed": "The plugin {entry} was not loaded: {reason}",
|
|
407
|
+
"git.summary": "Git across every repository under a folder: status, fetch, pull and switch",
|
|
408
|
+
"git.about": "Work with every git repository under a folder at once: see which have uncommitted or unpushed work or no remote, fetch them all, fast-forward them, or put them on one branch. It runs the git on PATH and never commits, pushes, merges or stashes. pull skips repositories with uncommitted files, and switch refuses them and asks before it changes any branch.",
|
|
409
|
+
"git.not-installed": "git is not on PATH; install Git and try again",
|
|
410
|
+
"git.arg.folder": "A repository, or a folder holding repositories; the current folder by default",
|
|
411
|
+
"git.option.depth": "How many folder levels to search for repositories; 3 by default",
|
|
412
|
+
"git.option.depth-invalid": "--depth must be a whole number from 1 to {max}, not {value}",
|
|
413
|
+
"git.none-found": "No git repositories within {depth} folder level(s)",
|
|
414
|
+
"git.sync.no-upstream": "no upstream",
|
|
415
|
+
"git.sync.in-sync": "in sync",
|
|
416
|
+
"git.sync.ahead": "{count} unpushed",
|
|
417
|
+
"git.sync.behind": "{count} behind",
|
|
418
|
+
"git.skip.no-remote": "no remote, skipped",
|
|
419
|
+
"git.skip.no-upstream": "no upstream branch, skipped",
|
|
420
|
+
"git.skip.dirty": "{count} uncommitted file(s), skipped",
|
|
421
|
+
"git.status.summary": "Show every repository under a folder: branch, commits, uncommitted files, unpushed work and remote",
|
|
422
|
+
"git.status.repository": "repository",
|
|
423
|
+
"git.status.workspace": "workspace · {count} repositories",
|
|
424
|
+
"git.status.commits": "{count} commit(s)",
|
|
425
|
+
"git.status.uncommitted": "{count} uncommitted",
|
|
426
|
+
"git.status.clean": "clean",
|
|
427
|
+
"git.status.has-remote": "remote",
|
|
428
|
+
"git.status.no-remote-short": "no remote",
|
|
429
|
+
"git.status.no-remote": "{name} has no remote, so nothing in it is backed up",
|
|
430
|
+
"git.status.unpushed": "{name} has {count} unpushed commit(s)",
|
|
431
|
+
"git.status.other-branch": "{name} is on {branch}; most repositories are on {common}",
|
|
432
|
+
"git.status.all-good": "Every repository has a remote, nothing is unpushed, and all are on one branch",
|
|
433
|
+
"git.fetch.summary": "Fetch every repository under a folder from all its remotes, pruning deleted branches",
|
|
434
|
+
"git.fetch.failed": "{name}: fetch failed: {detail}",
|
|
435
|
+
"git.fetch.failed-short": "fetch failed",
|
|
436
|
+
"git.pull.summary": "Fast-forward every clean repository under a folder; never merges, rebases or stashes",
|
|
437
|
+
"git.pull.new-commits": "{count} new commit(s)",
|
|
438
|
+
"git.pull.up-to-date": "already up to date",
|
|
439
|
+
"git.pull.dirty": "{name} has {count} uncommitted file(s), so it was not pulled",
|
|
440
|
+
"git.pull.failed": "{name}: not pulled: {detail}",
|
|
441
|
+
"git.pull.failed-short": "not pulled",
|
|
442
|
+
"git.switch.summary": "Put every repository under a folder on one branch",
|
|
443
|
+
"git.switch.arg.branch": "The branch to switch to",
|
|
444
|
+
"git.switch.option.create": "Create the branch from the current commit wherever it does not exist yet",
|
|
445
|
+
"git.switch.option.yes": "Switch without asking",
|
|
446
|
+
"git.switch.bad-branch": "Not a valid branch name: {branch}",
|
|
447
|
+
"git.switch.dirty": "{name} has {count} uncommitted file(s); commit or stash them first",
|
|
448
|
+
"git.switch.missing": "{name}: {branch} is neither a local branch nor on origin; fetch first, or pass --create",
|
|
449
|
+
"git.switch.ask": "Switch {count} repositories to {branch}?",
|
|
450
|
+
"git.switch.failed": "{name}: {detail}",
|
|
451
|
+
"git.switch.action.already": "already on it",
|
|
452
|
+
"git.switch.action.local": "switch",
|
|
453
|
+
"git.switch.action.track": "track origin",
|
|
454
|
+
"git.switch.action.create": "create",
|
|
455
|
+
"git.switch.action.missing": "not found",
|
|
456
|
+
"git.switch.done": "Switched {count} repositories to {branch}",
|
|
457
|
+
"git.switch.all-on": "Every repository is already on {branch}",
|
|
458
|
+
"docker.summary": "docker compose for the project in the current folder, and a previewed clean-up of the engine",
|
|
459
|
+
"docker.about": "Run the docker compose project in the current folder, or the one --file names, with the same commands on every OS, and win back disk space from the engine. It runs the docker program on PATH. down keeps the project's volumes unless --volumes, which asks for the project name first, and clean only shows the space it would reclaim until --apply and a typed confirmation.",
|
|
460
|
+
"docker.not-installed": "docker is not on PATH; install Docker and try again",
|
|
461
|
+
"docker.not-running": "Docker is installed, but its engine is not running; start it and try again",
|
|
462
|
+
"docker.no-compose-file": "No compose file in {folder}; pass --file to name one",
|
|
463
|
+
"docker.command-failed": "docker {command} failed: {detail}",
|
|
464
|
+
"docker.option.file": "The compose file; by default compose.yaml, compose.yml, docker-compose.yaml or docker-compose.yml here",
|
|
465
|
+
"docker.arg.services": "The services to act on; every service by default",
|
|
466
|
+
"docker.port": "localhost:{host} -> {service}:{target}",
|
|
467
|
+
"docker.ps.summary": "List the containers of the compose project here, or every compose project",
|
|
468
|
+
"docker.ps.option.projects": "List every compose project on this machine instead",
|
|
469
|
+
"docker.ps.no-containers": "No containers for this project yet",
|
|
470
|
+
"docker.ps.no-projects": "No compose projects",
|
|
471
|
+
"docker.up.summary": "Start the compose project in the background, optionally building its images first",
|
|
472
|
+
"docker.up.option.build": "Build the images before starting",
|
|
473
|
+
"docker.up.done": "{project} is up",
|
|
474
|
+
"docker.up.failed": "docker compose up failed for {project} with exit code {code}",
|
|
475
|
+
"docker.down.summary": "Stop and remove the project's containers; its volumes stay unless --volumes",
|
|
476
|
+
"docker.down.option.volumes": "Also delete the project's volumes and all data in them, after a typed confirmation",
|
|
477
|
+
"docker.down.option.confirm": "For --volumes in scripts: the project name, as the prompt would ask",
|
|
478
|
+
"docker.down.warn-volumes": "Remove {project}, its volumes, and all data stored in them.",
|
|
479
|
+
"docker.down.done": "{project} is down",
|
|
480
|
+
"docker.down.done-volumes": "{project} is down, and its volumes are deleted",
|
|
481
|
+
"docker.down.failed": "docker compose down failed for {project} with exit code {code}",
|
|
482
|
+
"docker.logs.summary": "Show the project's logs, optionally following them",
|
|
483
|
+
"docker.logs.option.follow": "Keep printing new lines until Ctrl+C",
|
|
484
|
+
"docker.logs.option.tail": "How many lines to show from the end of each log, or all; 200 by default",
|
|
485
|
+
"docker.logs.tail-invalid": "--tail must be a whole number or all, not {value}",
|
|
486
|
+
"docker.logs.failed": "docker compose logs failed for {project} with exit code {code}",
|
|
487
|
+
"docker.rebuild.summary": "Rebuild the project's images from source and recreate its containers; volumes stay",
|
|
488
|
+
"docker.rebuild.done": "{project} is rebuilt and running",
|
|
489
|
+
"docker.rebuild.failed": "The rebuild of {project} failed with exit code {code}",
|
|
490
|
+
"docker.clean.summary": "Show what Docker can reclaim, then remove stopped containers, dangling images, unused networks and build cache",
|
|
491
|
+
"docker.clean.option.volumes": "Also remove unused anonymous volumes and the data in them",
|
|
492
|
+
"docker.clean.option.apply": "Remove them; without it kiriya only shows the space they take",
|
|
493
|
+
"docker.clean.option.confirm": "For --apply in scripts: the word prune, as the prompt would ask",
|
|
494
|
+
"docker.clean.column.type": "type",
|
|
495
|
+
"docker.clean.column.total": "total",
|
|
496
|
+
"docker.clean.column.active": "active",
|
|
497
|
+
"docker.clean.column.size": "size",
|
|
498
|
+
"docker.clean.column.reclaimable": "reclaimable",
|
|
499
|
+
"docker.clean.warn": "Permanently remove stopped containers, dangling images, unused networks and the build cache.",
|
|
500
|
+
"docker.clean.warn-volumes": "Permanently remove stopped containers, dangling images, unused networks, the build cache, and unused anonymous volumes with their data.",
|
|
501
|
+
"docker.clean.reclaimed": "{target}: {space} reclaimed",
|
|
502
|
+
"docker.clean.failed": "docker {target} prune failed: {detail}",
|
|
503
|
+
"core.stdin.too-large": "What was piped in is larger than {limit}",
|
|
504
|
+
"gen.summary": "Random identifiers, passwords and tokens from the operating system's secure random source",
|
|
505
|
+
"gen.about": "Make UUIDs, ULIDs, passwords and tokens from the operating system's secure random source, the same way on every OS and without the network. kiriya stores nothing it makes, and --count makes several at once.",
|
|
506
|
+
"gen.option.count": "How many to make; 1 by default",
|
|
507
|
+
"gen.count-too-large": "--count can be at most {max}",
|
|
508
|
+
"gen.out-of-range": "--{option} must be from {min} to {max}",
|
|
509
|
+
"gen.uuid.summary": "Make UUIDs: random version 4, or version 7 that sorts by creation time",
|
|
510
|
+
"gen.uuid.option.v7": "Make version 7 UUIDs, which sort by the time they were made",
|
|
511
|
+
"gen.ulid.summary": "Make ULIDs: 26 characters that sort by the time they were made",
|
|
512
|
+
"gen.password.summary": "Make passwords of letters, digits and symbols, every character equally likely",
|
|
513
|
+
"gen.password.option.length": "Characters in each password, from 8 to 256; 24 by default",
|
|
514
|
+
"gen.password.option.no-symbols": "Leave symbols out, for systems that refuse them",
|
|
515
|
+
"gen.token.summary": "Make random tokens for secrets and API keys",
|
|
516
|
+
"gen.token.option.bytes": "Random bytes in each token, from 8 to 1024; 32 by default",
|
|
517
|
+
"gen.token.option.format": "hex, base64 or base64url; base64url by default",
|
|
518
|
+
"convert.summary": "Convert text between base64, hex, URL encoding, JSON, JWT, times and cases, entirely on this machine",
|
|
519
|
+
"convert.about": "Convert text between base64, hex, URL encoding, JSON, JWT, times and cases entirely on this machine, so tokens and data never go to a website. Most commands read the text from an argument, from what is piped in, or from a file with --file. jwt only decodes: it never checks a signature and never sends the token anywhere.",
|
|
520
|
+
"convert.arg.value": "The text to convert; - or nothing reads what is piped in",
|
|
521
|
+
"convert.option.file": "Read a file's exact bytes instead",
|
|
522
|
+
"convert.option.decode": "Decode instead of encode",
|
|
523
|
+
"convert.decoded-binary": "The decoded bytes are not UTF-8 text, so they are not printed",
|
|
524
|
+
"convert.base64.summary": "Encode text or a file as base64, or decode base64 back to text",
|
|
525
|
+
"convert.base64.option.url": "Use the URL-safe alphabet, without padding",
|
|
526
|
+
"convert.base64.invalid": "The input is not base64",
|
|
527
|
+
"convert.hex.summary": "Encode text or a file as hexadecimal, or decode hexadecimal back to text",
|
|
528
|
+
"convert.hex.invalid": "The input is not hexadecimal: pairs of the digits 0-9 and a-f",
|
|
529
|
+
"convert.url.summary": "Percent-encode text for a URL, or decode it",
|
|
530
|
+
"convert.url.invalid": "The input is not valid percent-encoding",
|
|
531
|
+
"convert.json.summary": "Format, minify or check JSON, pointing at the line and column of an error",
|
|
532
|
+
"convert.json.option.minify": "Print it on one line",
|
|
533
|
+
"convert.json.option.check": "Only check it",
|
|
534
|
+
"convert.json.invalid": "Invalid JSON at line {line}, column {column}",
|
|
535
|
+
"convert.json.valid": "Valid JSON",
|
|
536
|
+
"convert.jwt.summary": "Decode a JWT's header and payload on this machine; the signature is never checked and nothing is sent",
|
|
537
|
+
"convert.jwt.invalid": "The input is not a JWT: three base64url parts, the first two JSON objects",
|
|
538
|
+
"convert.jwt.unverified": "The signature was not checked, so nothing here proves the token is genuine",
|
|
539
|
+
"convert.jwt.from-argument": "A token given as an argument can stay in your shell history; pipe it in or use --file",
|
|
540
|
+
"convert.jwt.header": "Header",
|
|
541
|
+
"convert.jwt.payload": "Payload",
|
|
542
|
+
"convert.jwt.issued": "Issued {time}",
|
|
543
|
+
"convert.jwt.not-before": "Not valid before {time}",
|
|
544
|
+
"convert.jwt.expires": "Expires {time}",
|
|
545
|
+
"convert.jwt.expired": "Expired {time}",
|
|
546
|
+
"convert.time.summary": "Show a moment as ISO 8601, local time, and Unix seconds and milliseconds; now by default",
|
|
547
|
+
"convert.time.arg.value": "Unix seconds or milliseconds, or a date such as 2026-01-31T12:00:00Z",
|
|
548
|
+
"convert.time.option.unit": "How to read a number: auto, seconds or ms; auto reads numbers below 100000000000 as seconds",
|
|
549
|
+
"convert.time.invalid": "Not a time: {value}",
|
|
550
|
+
"convert.time.label.iso": "iso",
|
|
551
|
+
"convert.time.label.local": "local",
|
|
552
|
+
"convert.time.label.seconds": "seconds",
|
|
553
|
+
"convert.time.label.ms": "ms",
|
|
554
|
+
"convert.case.summary": "Change the case of text, line by line: kebab, snake, camel, pascal, constant, title, lower or upper",
|
|
555
|
+
"convert.case.option.to": "The case to change to",
|
|
556
|
+
"convert.case.to-required": "--to must name the case to change to",
|
|
557
|
+
"env.summary": "Environment variables, PATH and .env files, read the same way on every OS",
|
|
558
|
+
"env.about": "Read the environment the same way in every shell: list variables with secret-looking values hidden, find missing, duplicate, empty and relative folders in PATH, and check a .env file against its .env.example. Nothing changes. env check compares names only and never shows values, and AI agents are never offered --reveal, which shows hidden values.",
|
|
559
|
+
"env.show.summary": "List environment variables, hiding values that look secret",
|
|
560
|
+
"env.show.arg.filter": "Only variables whose name contains this text, in any case",
|
|
561
|
+
"env.show.option.reveal": "Show secret-looking values too",
|
|
562
|
+
"env.show.hidden-value": "(hidden)",
|
|
563
|
+
"env.show.hidden": "{count} value(s) hidden because they look secret; --reveal shows them",
|
|
564
|
+
"env.show.revealed": "Secret-looking values are shown; mind who can see this screen or log",
|
|
565
|
+
"env.show.no-match": "No environment variable name contains {filter}",
|
|
566
|
+
"env.path.summary": "Check each folder in PATH, or another list variable, for missing, duplicate, empty and relative entries",
|
|
567
|
+
"env.path.arg.variable": "The variable to check; PATH by default",
|
|
568
|
+
"env.path.not-set": "The variable {variable} is not set",
|
|
569
|
+
"env.path.problems": "{count} of {total} entries need attention",
|
|
570
|
+
"env.path.status.ok": "ok",
|
|
571
|
+
"env.path.status.missing": "missing",
|
|
572
|
+
"env.path.status.not-a-folder": "not a folder",
|
|
573
|
+
"env.path.status.duplicate": "duplicate",
|
|
574
|
+
"env.path.status.empty": "empty",
|
|
575
|
+
"env.path.status.relative": "relative",
|
|
576
|
+
"env.path.same-as": "same as entry {index}",
|
|
577
|
+
"env.check.summary": "Compare a .env file with its .env.example by variable name; values are never shown",
|
|
578
|
+
"env.check.option.file": "The file to check; .env by default",
|
|
579
|
+
"env.check.option.example": "The file listing the variables expected; .env.example by default",
|
|
580
|
+
"env.check.no-example": "{path} does not exist",
|
|
581
|
+
"env.check.no-file": "{path} does not exist; copy {example} to start it",
|
|
582
|
+
"env.check.missing": "{count} variable(s) from {example} are missing in {file}: {names}",
|
|
583
|
+
"env.check.empty": "{count} variable(s) are set but empty: {names}",
|
|
584
|
+
"env.check.extra": "{count} variable(s) in {file} are not in {example}: {names}",
|
|
585
|
+
"env.check.duplicates": "Set more than once in {file}, where the last one wins: {names}",
|
|
586
|
+
"env.check.malformed": "{path}:{line} is not a KEY=value line",
|
|
587
|
+
"env.check.too-large": "{path} is larger than {limit}",
|
|
588
|
+
"env.check.not-text": "{path} is not UTF-8 text",
|
|
589
|
+
"env.check.ok": "All {count} variable(s) from {example} are set in {file}",
|
|
590
|
+
"sys.summary": "This machine and the developer tools on it, described the same way on every OS",
|
|
591
|
+
"sys.about": "Describe this machine and the developer tools on it the same way on every OS: the operating system, processor, memory, locale and runtime, and the versions of node, python, dotnet, java, go, git and docker. sys report prints both as Markdown for a bug report, without the host name. Nothing changes.",
|
|
592
|
+
"sys.info.summary": "Show the operating system, processor, memory, uptime, locale and runtime",
|
|
593
|
+
"sys.tools.summary": "Find node, python, dotnet, java, go, git and docker, and their versions",
|
|
594
|
+
"sys.report.summary": "Print machine facts and tool versions as Markdown for a bug report, without the host name",
|
|
595
|
+
"sys.label.os": "OS",
|
|
596
|
+
"sys.label.cpu": "CPU",
|
|
597
|
+
"sys.label.memory": "Memory",
|
|
598
|
+
"sys.label.uptime": "Uptime",
|
|
599
|
+
"sys.label.host": "Host",
|
|
600
|
+
"sys.label.locale": "Locale",
|
|
601
|
+
"sys.label.node": "Node.js",
|
|
602
|
+
"sys.label.kiriya": "kiriya",
|
|
603
|
+
"sys.label.tools": "Tools",
|
|
604
|
+
"sys.info.os": "{name} ({kernel}, {arch})",
|
|
605
|
+
"sys.info.cpu": "{model}, {count} logical processor(s)",
|
|
606
|
+
"sys.info.memory": "{total}, {free} free",
|
|
607
|
+
"sys.info.uptime": "{days} d {hours} h {minutes} min",
|
|
608
|
+
"sys.info.locale": "{locale}, time zone {timeZone}",
|
|
609
|
+
"sys.tools.not-found": "not found",
|
|
610
|
+
"sys.report.not-found": "not found: {names}",
|
|
611
|
+
"net.summary": "Local addresses, TCP reachability and DNS lookups, the same on every OS",
|
|
612
|
+
"net.about": "Answer everyday network questions the same way on every OS: which addresses this machine has, whether a TCP port on a host answers, and what a name resolves to. check and dns use the network; ip only reads this machine. Nothing changes.",
|
|
613
|
+
"net.ip.summary": "List this machine's network addresses",
|
|
614
|
+
"net.ip.option.all": "Include loopback addresses",
|
|
615
|
+
"net.ip.none": "No network addresses found",
|
|
616
|
+
"net.ip.mac": "MAC",
|
|
617
|
+
"net.check.summary": "Check whether a TCP port answers, such as db.internal:5432 or https://example.com",
|
|
618
|
+
"net.check.arg.target": "host:port, [IPv6]:port, or a URL whose scheme gives the port",
|
|
619
|
+
"net.check.option.timeout": "Seconds to wait, from 1 to 120; 5 by default",
|
|
620
|
+
"net.check.target-invalid": "Not a host and port: {target}; write host:port, [IPv6]:port or a URL",
|
|
621
|
+
"net.check.timeout-range": "--timeout can be at most {max} seconds",
|
|
622
|
+
"net.check.reachable": "{target} answered in {ms} ms ({address})",
|
|
623
|
+
"net.check.refused": "{target} refused the connection: nothing listens there, or a firewall rejects it",
|
|
624
|
+
"net.check.timeout": "{target} did not answer within {seconds} s",
|
|
625
|
+
"net.check.not-found": "{host} was not found in DNS",
|
|
626
|
+
"net.check.unreachable": "{target} is unreachable from this network",
|
|
627
|
+
"net.check.failed": "Connecting to {target} failed: {code}",
|
|
628
|
+
"net.dns.summary": "Look up a name's addresses as programs here see them, or its DNS records of one type",
|
|
629
|
+
"net.dns.arg.name": "The host name to look up",
|
|
630
|
+
"net.dns.option.type": "system (the default: the hosts file, then DNS), a, aaaa, cname, mx, txt or ns",
|
|
631
|
+
"net.dns.name-missing": "Give a host name to look up",
|
|
632
|
+
"net.dns.not-found": "{name} has no {type} records",
|
|
633
|
+
"net.dns.timeout": "The DNS lookup of {name} timed out",
|
|
634
|
+
"net.dns.failed": "The DNS lookup of {name} failed: {code}",
|
|
635
|
+
"wait.summary": "Wait until a port listens, a web address answers or a file appears, the same way on every OS",
|
|
636
|
+
"wait.about": "Wait until a TCP port accepts connections, a web address answers, or a file appears or goes, so a script moves on only when the step before is ready. kiriya tries at once and then every half second until --timeout, 60 seconds by default, and exits with 1 when the time runs out. Nothing changes; port and url use the network, and url counts only a 2xx status unless --status names others.",
|
|
637
|
+
"wait.option.timeout": "Seconds to wait before giving up, from 1 to 3600; 60 by default",
|
|
638
|
+
"wait.timeout-range": "--timeout can be at most {max} seconds",
|
|
639
|
+
"wait.reason.refused": "it refused the connection",
|
|
640
|
+
"wait.reason.timeout": "it did not answer",
|
|
641
|
+
"wait.reason.not-found": "{host} is not in DNS",
|
|
642
|
+
"wait.reason.unreachable": "it is unreachable from this network",
|
|
643
|
+
"wait.reason.tls": "its certificate was not accepted ({code})",
|
|
644
|
+
"wait.reason.failed": "it failed with {code}",
|
|
645
|
+
"wait.reason.status": "it answered {status}",
|
|
646
|
+
"wait.port.summary": "Wait until a TCP port accepts connections, or until nothing listens there with --gone",
|
|
647
|
+
"wait.port.arg.target": "A port on this machine such as 5432, host:port, [IPv6]:port, or a URL whose scheme gives the port",
|
|
648
|
+
"wait.port.option.gone": "Wait until nothing listens there instead",
|
|
649
|
+
"wait.port.target-invalid": "Not a port or a host and port: {target}; write 5432, host:port, [IPv6]:port or a URL",
|
|
650
|
+
"wait.port.listening": "{target} is listening ({address}), after {seconds} s",
|
|
651
|
+
"wait.port.closed": "Nothing listens on {target} any more, after {seconds} s",
|
|
652
|
+
"wait.port.timed-out": "{target} was not listening within {seconds} s: {reason}",
|
|
653
|
+
"wait.port.still-listening": "{target} was still listening after {seconds} s",
|
|
654
|
+
"wait.url.summary": "Wait until a web address answers with a 2xx status, or with a status --status names",
|
|
655
|
+
"wait.url.arg.url": "The http or https address to wait for",
|
|
656
|
+
"wait.url.option.status": "A status that counts as ready, such as 200 or 401; any 2xx by default",
|
|
657
|
+
"wait.url.not-http": "Not an http or https address: {url}",
|
|
658
|
+
"wait.url.bad-status": "--status must be a code from 100 to 599, not {value}",
|
|
659
|
+
"wait.url.ready": "{url} answered {status}, after {seconds} s",
|
|
660
|
+
"wait.url.timed-out": "{url} was not ready within {seconds} s: {reason}",
|
|
661
|
+
"wait.file.summary": "Wait until a file or folder exists, or until it is gone with --gone",
|
|
662
|
+
"wait.file.arg.path": "The file or folder to wait for",
|
|
663
|
+
"wait.file.option.gone": "Wait until it no longer exists instead",
|
|
664
|
+
"wait.file.exists": "{path} exists, after {seconds} s",
|
|
665
|
+
"wait.file.gone": "{path} is gone, after {seconds} s",
|
|
666
|
+
"wait.file.timed-out": "{path} did not appear within {seconds} s",
|
|
667
|
+
"wait.file.still-there": "{path} was still there after {seconds} s",
|
|
668
|
+
"core.processes.failed": "{program} could not list processes (exit code {code}): {detail}",
|
|
669
|
+
"core.processes.unreadable": "Processes could not be read from {source}: {detail}",
|
|
670
|
+
"core.ports.failed": "{program} could not list listening ports (exit code {code}): {detail}",
|
|
671
|
+
"core.ports.unreadable": "Listening ports could not be read from {source}: {detail}",
|
|
672
|
+
"core.end.ended": "Ended {name} ({pid})",
|
|
673
|
+
"core.end.gone": "{name} ({pid}) had already ended",
|
|
674
|
+
"core.end.still-running": "{name} ({pid}) is still running; --force ends it at once",
|
|
675
|
+
"core.end.denied": "Not allowed to end {name} ({pid}): it belongs to another user or to the system, and kiriya never elevates",
|
|
676
|
+
"core.end.failed": "Could not end {name} ({pid}): {code}",
|
|
677
|
+
"port.summary": "See which process listens on a TCP port, end it, or find a free port, the same on every OS",
|
|
678
|
+
"port.about": "Find what holds a TCP port, end it, or pick a free one, without netstat, lsof or ss. who shows the listening processes, free prints a port nothing uses, and kill ends the listeners after you type the port number. Without administrator rights, Linux and macOS hide which process of another user holds a port; kiriya says so and never asks for elevation.",
|
|
679
|
+
"port.invalid": "Not a TCP port: {port}; use a number from 1 to 65535",
|
|
680
|
+
"port.column.port": "PORT",
|
|
681
|
+
"port.column.address": "ADDRESS",
|
|
682
|
+
"port.column.pid": "PID",
|
|
683
|
+
"port.column.process": "PROCESS",
|
|
684
|
+
"port.who.summary": "Show the processes listening on a TCP port, or on every port",
|
|
685
|
+
"port.who.arg.port": "The port; every listening port when left out",
|
|
686
|
+
"port.who.none": "Nothing listens on port {port}",
|
|
687
|
+
"port.who.none-at-all": "No TCP port is listening",
|
|
688
|
+
"port.who.hidden": "another user's process",
|
|
689
|
+
"port.kill.summary": "End the processes listening on a TCP port, after a typed confirmation",
|
|
690
|
+
"port.kill.arg.port": "The port whose listeners to end",
|
|
691
|
+
"port.kill.option.force": "End them at once instead of asking them to exit",
|
|
692
|
+
"port.kill.option.confirm": "For scripts: the port number, as the prompt would ask",
|
|
693
|
+
"port.kill.nothing": "Nothing listens on port {port}",
|
|
694
|
+
"port.kill.hidden": "The process listening on port {port} belongs to another user, and kiriya never elevates; run the command as that user or as an administrator",
|
|
695
|
+
"port.kill.some-hidden": "Some listeners on port {port} belong to another user and were left alone",
|
|
696
|
+
"port.kill.protected": "Refused: {name} ({pid}) is kiriya itself, the program that started it, or part of the operating system",
|
|
697
|
+
"port.kill.warn": "End {processes}, listening on port {port}.",
|
|
698
|
+
"port.free.summary": "Print the first TCP port, from 3000 or --from, that nothing listens on and that can be opened",
|
|
699
|
+
"port.free.option.from": "The first port to try; 3000 by default",
|
|
700
|
+
"port.free.none": "No free TCP port from {from} to 65535",
|
|
701
|
+
"proc.summary": "List, find and end processes, and show them as a tree, the same on every OS",
|
|
702
|
+
"proc.about": "List, find and end processes, and see them as a tree, without tasklist, ps or Get-Process. kill ends a process by id, or every process with a name, after you type that id or name, and --force ends them at once instead of asking them to exit. kiriya never ends itself, the program that started it, or the operating system's first processes.",
|
|
703
|
+
"proc.column.pid": "PID",
|
|
704
|
+
"proc.column.parent": "PARENT",
|
|
705
|
+
"proc.column.memory": "MEMORY",
|
|
706
|
+
"proc.column.name": "NAME",
|
|
707
|
+
"proc.column.command": "COMMAND",
|
|
708
|
+
"proc.list.summary": "List processes with their memory, sorted by name",
|
|
709
|
+
"proc.list.option.name": "Only processes whose name contains this text, in any case",
|
|
710
|
+
"proc.list.option.full": "Add parent ids and command lines; slower on Windows",
|
|
711
|
+
"proc.list.none": "No process name contains {name}",
|
|
712
|
+
"proc.find.summary": "Find processes whose name or command line contains some text",
|
|
713
|
+
"proc.find.arg.text": "The text to look for, in any case",
|
|
714
|
+
"proc.find.text-missing": "Give the text to look for",
|
|
715
|
+
"proc.find.none": "No process name or command line contains {text}",
|
|
716
|
+
"proc.kill.summary": "End a process by id, or every process with a name, after a typed confirmation",
|
|
717
|
+
"proc.kill.arg.target": "A process id, or a program name such as node; .exe is optional",
|
|
718
|
+
"proc.kill.target-missing": "Give a process id or a program name",
|
|
719
|
+
"proc.kill.option.force": "End them at once instead of asking them to exit",
|
|
720
|
+
"proc.kill.option.confirm": "For scripts: the id or name exactly as given, as the prompt would ask",
|
|
721
|
+
"proc.kill.no-pid": "No process has the id {pid}",
|
|
722
|
+
"proc.kill.no-name": "No process is named {name}",
|
|
723
|
+
"proc.kill.protected": "Refused: {name} ({pid}) is kiriya itself, the program that started it, or part of the operating system",
|
|
724
|
+
"proc.kill.only-protected": "Refused: every process named {name} is kiriya itself, the program that started it, or part of the operating system",
|
|
725
|
+
"proc.kill.skipped": "{count} matching process(es) were left alone: kiriya itself, the program that started it, or the operating system",
|
|
726
|
+
"proc.kill.warn": "End {processes}.",
|
|
727
|
+
"proc.tree.summary": "Show processes as a tree of parents and children, or the tree under one process",
|
|
728
|
+
"proc.tree.arg.pid": "The process whose tree to show; every process when left out",
|
|
729
|
+
"proc.tree.pid-invalid": "Not a process id: {pid}",
|
|
730
|
+
"proc.tree.no-pid": "No process has the id {pid}",
|
|
731
|
+
"core.input.missing": "Give the text as an argument, pipe it in, or pass --file",
|
|
732
|
+
"core.input.twice": "Give the text as an argument or with --file, not both",
|
|
733
|
+
"core.input.not-text": "The input is not UTF-8 text; pass --file for binary data",
|
|
734
|
+
"core.input.too-large": "The input is larger than {limit}",
|
|
735
|
+
"core.mcp.summary": "Serve kiriya's commands to AI agents over the Model Context Protocol, on stdin and stdout",
|
|
736
|
+
"core.mcp.arg.folders": "Folders the agent may reach; the current folder when none is given here or with --root",
|
|
737
|
+
"core.mcp.option.root": "A folder the agent may reach, repeated for more; the current folder when left out",
|
|
738
|
+
"core.mcp.help-details": "Commands that change nothing become tools. With kiriya config set mcp.allowWrite true, so do commands that change files, and with mcp.allowDestroy true, commands whose work cannot be undone, which ask you first. Every path must stay inside a root, and relative paths start at the first root. How to add kiriya to an MCP client: https://github.com/SatPaingOo/kiriya/blob/main/docs/guides/mcp.md",
|
|
739
|
+
"core.help.mcp-hint": "Run {command} to serve these commands to AI agents over MCP.",
|
|
740
|
+
"core.mcp.instructions": "kiriya's developer tools, which behave the same on Windows, Linux and macOS. {tools} Relative paths start at {start}; paths outside {roots} are refused.",
|
|
741
|
+
"core.mcp.instructions.read-only": "Every tool here only reads.",
|
|
742
|
+
"core.mcp.instructions.write": "Tools may change files inside the roots; work that cannot be undone is refused.",
|
|
743
|
+
"core.mcp.instructions.destroy": "Tools may change things inside the roots, and before any work that cannot be undone the user is asked through the client.",
|
|
744
|
+
"core.mcp.confirm.type": "Type {expected} to go ahead.",
|
|
745
|
+
"core.mcp.confirm.field": "Confirmation",
|
|
746
|
+
"core.mcp.root-missing": "No folder at {path} to serve as a root",
|
|
747
|
+
"core.mcp.outside-roots": "Refused: {path} is outside the folders this server may reach: {roots}",
|
|
748
|
+
"core.mcp.guarded": "Refused: {path} would reach {file}, kiriya's configuration file, which only a person may change",
|
|
749
|
+
"core.mcp.git-folder": "Refused: {path} is inside a .git folder, which holds what git runs; tools that change something may not reach it",
|
|
750
|
+
"core.mcp.cannot-confirm": "Refused: this cannot be undone, and nobody can be asked to confirm it here; that needs kiriya config set mcp.allowDestroy true and a client that supports elicitation. Nothing changed",
|
|
751
|
+
"core.mcp.config-unreadable": "kiriya mcp: the configuration file cannot be read, so only tools that change nothing are offered: {detail}",
|
|
752
|
+
"core.mcp.tool-left-out": "kiriya mcp: {tool} is left out: {detail}",
|
|
753
|
+
"core.mcp.arguments-not-object": "The arguments must be a JSON object",
|
|
754
|
+
"core.mcp.unknown-argument": "Unknown argument: {name}",
|
|
755
|
+
"core.mcp.expects-text": "{name} must be text",
|
|
756
|
+
"core.mcp.expects-boolean": "{name} must be true or false",
|
|
757
|
+
"core.mcp.expects-list": "{name} must be a list of text",
|
|
758
|
+
"core.mcp.error.parse": "The message is not valid JSON",
|
|
759
|
+
"core.mcp.error.invalid-request": "The message is not a JSON-RPC 2.0 request",
|
|
760
|
+
"core.mcp.error.unknown-method": "Unknown method: {method}",
|
|
761
|
+
"core.mcp.error.params-not-object": "params must be a JSON object",
|
|
762
|
+
"core.mcp.error.no-version": "_meta must name io.modelcontextprotocol/protocolVersion, or initialize must come first",
|
|
763
|
+
"core.mcp.error.no-capabilities": "_meta must carry io.modelcontextprotocol/clientCapabilities",
|
|
764
|
+
"core.mcp.error.unsupported-version": "Unsupported protocol version: {version}",
|
|
765
|
+
"core.mcp.error.unknown-cursor": "Unknown cursor: the tool list has a single page",
|
|
766
|
+
"core.mcp.error.no-tool-name": "params.name must name a tool",
|
|
767
|
+
"core.mcp.error.unknown-tool": "Unknown tool: {name}",
|
|
768
|
+
"core.mcp.error.needs-elicitation": "{name} can do work that cannot be undone, so it needs a client that supports elicitation in form mode",
|
|
769
|
+
"core.mcp.error.bad-request-state": "requestState is not one this server issued for this call, or it has expired",
|
|
770
|
+
"core.clipboard.windows.language-mode": "PowerShell runs in {mode} here, where the clipboard cmdlets cannot run",
|
|
771
|
+
"core.clipboard.no-display": "This session has no display, so it has no clipboard: neither WAYLAND_DISPLAY nor DISPLAY is set",
|
|
772
|
+
"core.clipboard.no-program": "No clipboard program found; install wl-clipboard for Wayland, or xclip or xsel for X11",
|
|
773
|
+
"core.clipboard.failed": "{program} failed with exit code {code}: {detail}",
|
|
774
|
+
"core.open.no-display": "This session has no display to open {target} on",
|
|
775
|
+
"core.open.no-xdg-open": "xdg-open is not installed; install xdg-utils",
|
|
776
|
+
"core.open.failed": "{program} could not open {target} (exit code {code}): {detail}",
|
|
777
|
+
"clip.summary": "Copy text to the clipboard and paste it back, with Unicode intact on every OS",
|
|
778
|
+
"clip.about": "Copy text to the system clipboard and paste it back, with Unicode such as Myanmar text intact on every OS. copy takes an argument, what is piped in, or a file, and warns when the text looks like a secret. On Linux it needs a desktop session and wl-clipboard, xclip or xsel; kiriya doctor shows which one it found.",
|
|
779
|
+
"clip.copy.summary": "Copy text from an argument, what is piped in, or a file to the clipboard",
|
|
780
|
+
"clip.copy.arg.text": "The text to copy; - or nothing reads what is piped in",
|
|
781
|
+
"clip.copy.option.file": "Copy a text file's content instead",
|
|
782
|
+
"clip.copy.empty": "There is no text to copy",
|
|
783
|
+
"clip.copy.secret": "The text looks like a secret; clipboard history and other programs can read it",
|
|
784
|
+
"clip.copy.done": "Copied {count} character(s)",
|
|
785
|
+
"clip.paste.summary": "Print the text on the clipboard",
|
|
786
|
+
"open.summary": "Open a file or folder in its default application, or a web address in the browser",
|
|
787
|
+
"open.about": "Open a file or folder in the application the operating system chooses, or a web address in the browser, with one command on every OS. It opens only files, folders and http, https and mailto addresses, and refuses anything that would run as a program.",
|
|
788
|
+
"open.arg.target": "A file, a folder, or an http, https or mailto address",
|
|
789
|
+
"open.scheme-refused": "Refused: kiriya opens only http, https and mailto addresses, not {scheme}",
|
|
790
|
+
"open.runs-program": "Refused: opening {path} would run it as a program; open the folder that holds it instead",
|
|
791
|
+
"open.done": "Opened {target}",
|
|
792
|
+
"doctor.check.clipboard": "{backend}",
|
|
793
|
+
"archive.same-name": "Two sources are both named {name}",
|
|
794
|
+
"archive.tar.summary": "Pack files and folders into a new .tar.gz or .tgz, or a .tar without compression",
|
|
795
|
+
"archive.tar.arg.paths": "Files, folders or globs; each folder keeps its own name inside the archive",
|
|
796
|
+
"archive.tar.option.to": "The archive to create, ending in .tar.gz, .tgz or .tar; it must not exist yet",
|
|
797
|
+
"archive.tar.option.lean": "Leave out .git, node_modules and other dependency or build folders",
|
|
798
|
+
"archive.tar.option.all": "Let globs match hidden entries and dependency folders",
|
|
799
|
+
"archive.tar.to-required": "--to must name the archive to create",
|
|
800
|
+
"archive.tar.extension": "{path} must end in .tar.gz, .tgz or .tar",
|
|
801
|
+
"archive.tar.done": "{path}: {entries} entries, {bytesIn} -> {bytesOut} ({ratio}%)",
|
|
802
|
+
"archive.tar.skipped-links": "{count} symlink(s) skipped",
|
|
803
|
+
"archive.tar.not-tar": "it does not look like a tar archive",
|
|
804
|
+
"archive.tar.bad-checksum": "a header's checksum does not match",
|
|
805
|
+
"archive.tar.bad-header": "a header holds a value that is not a number",
|
|
806
|
+
"archive.tar.meta-too-large": "an extended header is larger than 1 MB",
|
|
807
|
+
"archive.tar.truncated": "it ends in the middle of an entry",
|
|
808
|
+
"archive.untar.summary": "List or extract a .tar.gz, .tgz or .tar, refusing entries that would land outside the target folder",
|
|
809
|
+
"archive.untar.arg.archive": "The .tar.gz, .tgz or .tar file",
|
|
810
|
+
"archive.untar.option.to": "Where to extract; by default a folder named after the archive, next to it",
|
|
811
|
+
"archive.untar.option.list": "List the entries and extract nothing",
|
|
812
|
+
"archive.untar.option.overwrite": "Replace existing files, after a typed confirmation",
|
|
813
|
+
"archive.untar.option.confirm": "For --overwrite in scripts: the number of files replaced, as the prompt would ask",
|
|
814
|
+
"archive.untar.damaged": "{path} cannot be read: {reason}",
|
|
815
|
+
"archive.untar.changed": "{path} changed while it was being extracted",
|
|
816
|
+
"archive.untar.skipped-links": "{count} link(s) and special file(s) skipped",
|
|
817
|
+
"completion.summary": "Tab completion for kiriya's modules, commands, options and values in bash, zsh, fish and PowerShell",
|
|
818
|
+
"completion.about": "Tab completion for kiriya's modules, commands, options and option values in bash, zsh, fish and PowerShell. kiriya completion <shell> prints a script to load from your shell's profile; the script asks kiriya what can come next, so plugins complete too with nothing to reinstall.",
|
|
819
|
+
"completion.script.summary": "Print the completion script for a shell; its first lines say how to load it",
|
|
820
|
+
"completion.arg.shell": "bash, zsh, fish or powershell",
|
|
821
|
+
"completion.shell-invalid": "Not a supported shell: {shell}; use bash, zsh, fish or powershell",
|
|
822
|
+
"completion.suggest.summary": "Print what can come next on a command line, for the completion scripts to show",
|
|
823
|
+
"completion.suggest.option.current": "The word being completed, which may be empty",
|
|
824
|
+
"completion.suggest.option.word": "A word before it on the command line, once for each word",
|
|
825
|
+
"completion.help-word": "Show help for a module or one of its commands",
|
|
826
|
+
};
|
|
827
|
+
//# sourceMappingURL=en.js.map
|