@agentwhy/cli 0.0.0-dev
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/LICENSE +202 -0
- package/NOTICE +2 -0
- package/README.md +181 -0
- package/THIRD_PARTY_NOTICES.md +31 -0
- package/dist/adapter/claude-code/contract/assumptions.js +208 -0
- package/dist/adapter/claude-code/contract/denials.js +15 -0
- package/dist/adapter/claude-code/contract/entry-points.js +15 -0
- package/dist/adapter/claude-code/contract/fields.js +73 -0
- package/dist/adapter/claude-code/contract/hooks.js +96 -0
- package/dist/adapter/claude-code/contract/identifiers.js +15 -0
- package/dist/adapter/claude-code/contract/layout.js +29 -0
- package/dist/adapter/claude-code/contract/line-types.js +26 -0
- package/dist/adapter/claude-code/contract/projects.js +23 -0
- package/dist/adapter/claude-code/contract/recognition.js +14 -0
- package/dist/adapter/claude-code/contract/session-title.js +20 -0
- package/dist/adapter/claude-code/contract/settings.js +27 -0
- package/dist/adapter/claude-code/contract/task-notifications.js +33 -0
- package/dist/adapter/claude-code/contract/tools.js +37 -0
- package/dist/adapter/claude-code/contract/version.js +51 -0
- package/dist/adapter/claude-code/discovery/claude-code-project-catalogue.js +129 -0
- package/dist/adapter/claude-code/discovery/claude-code-recognition.js +46 -0
- package/dist/adapter/claude-code/discovery/claude-code-session-catalogue.js +100 -0
- package/dist/adapter/claude-code/discovery/claude-code-session-discovery.js +61 -0
- package/dist/adapter/claude-code/discovery/claude-code-session-titles.js +28 -0
- package/dist/adapter/claude-code/discovery/discovered-session.js +1 -0
- package/dist/adapter/claude-code/discovery/session-entries.js +41 -0
- package/dist/adapter/claude-code/discovery/transcript-tail.js +81 -0
- package/dist/adapter/claude-code/events/claude-code-session-source.js +197 -0
- package/dist/adapter/claude-code/events/delegation-index.js +15 -0
- package/dist/adapter/claude-code/events/transcript-scan.js +179 -0
- package/dist/adapter/claude-code/hooks/hook-output.js +42 -0
- package/dist/adapter/claude-code/hooks/pre-tool-use-input.js +23 -0
- package/dist/adapter/claude-code/hooks/stop-input.js +25 -0
- package/dist/adapter/claude-code/hooks/subagent-stop-input.js +26 -0
- package/dist/adapter/claude-code/policy/deny-rules.js +46 -0
- package/dist/adapter/claude-code/probe/claude-code-probe.js +86 -0
- package/dist/adapter/claude-code/probe/collectors/agent-tool-input-key-collector.js +24 -0
- package/dist/adapter/claude-code/probe/collectors/denial-kind-collector.js +20 -0
- package/dist/adapter/claude-code/probe/collectors/denied-call-collector.js +11 -0
- package/dist/adapter/claude-code/probe/collectors/identifier-collector.js +19 -0
- package/dist/adapter/claude-code/probe/collectors/line-collector.js +1 -0
- package/dist/adapter/claude-code/probe/collectors/line-type-collector.js +29 -0
- package/dist/adapter/claude-code/probe/collectors/sidechain-collector.js +20 -0
- package/dist/adapter/claude-code/probe/collectors/task-notification-collector.js +51 -0
- package/dist/adapter/claude-code/probe/collectors/tool-result-reference-collector.js +31 -0
- package/dist/adapter/claude-code/probe/collectors/tool-use-collector.js +24 -0
- package/dist/adapter/claude-code/probe/collectors/tool-version-collector.js +14 -0
- package/dist/adapter/claude-code/probe/collectors/top-level-key-collector.js +14 -0
- package/dist/adapter/claude-code/probe/collectors/unknown-line-type-key-collector.js +24 -0
- package/dist/adapter/claude-code/probe/collectors/working-directory-collector.js +28 -0
- package/dist/adapter/claude-code/probe/doctor-report.js +1 -0
- package/dist/adapter/claude-code/probe/meta-tally.js +42 -0
- package/dist/adapter/claude-code/probe/session-probe.js +1 -0
- package/dist/adapter/claude-code/probe/session-tally.js +41 -0
- package/dist/adapter/claude-code/probe/transcript-line.js +30 -0
- package/dist/adapter/claude-code/probe/transcript-tally.js +74 -0
- package/dist/adapter/claude-code/settings/deny-entries.js +65 -0
- package/dist/adapter/claude-code/settings/hook-entries.js +303 -0
- package/dist/adapter/codex/contract/actions.js +69 -0
- package/dist/adapter/codex/contract/assumptions.js +55 -0
- package/dist/adapter/codex/contract/capabilities.js +24 -0
- package/dist/adapter/codex/contract/delegations.js +30 -0
- package/dist/adapter/codex/contract/deliveries.js +25 -0
- package/dist/adapter/codex/contract/envelope.js +33 -0
- package/dist/adapter/codex/contract/hook-refusals.js +14 -0
- package/dist/adapter/codex/contract/hooks.js +46 -0
- package/dist/adapter/codex/contract/messages.js +47 -0
- package/dist/adapter/codex/contract/permissions.js +27 -0
- package/dist/adapter/codex/contract/reviews.js +13 -0
- package/dist/adapter/codex/contract/session.js +31 -0
- package/dist/adapter/codex/contract/turns.js +23 -0
- package/dist/adapter/codex/contract/version.js +15 -0
- package/dist/adapter/codex/discovery/codex-conversations.js +44 -0
- package/dist/adapter/codex/discovery/codex-project-catalogue.js +49 -0
- package/dist/adapter/codex/discovery/codex-recognition.js +20 -0
- package/dist/adapter/codex/discovery/codex-session-catalogue.js +28 -0
- package/dist/adapter/codex/discovery/codex-session-discovery.js +115 -0
- package/dist/adapter/codex/discovery/codex-session-index.js +21 -0
- package/dist/adapter/codex/discovery/codex-session-titles.js +135 -0
- package/dist/adapter/codex/discovery/session-header.js +86 -0
- package/dist/adapter/codex/discovery/session-owners.js +11 -0
- package/dist/adapter/codex/discovery/session-roots.js +49 -0
- package/dist/adapter/codex/events/action-items.js +138 -0
- package/dist/adapter/codex/events/capability-records.js +26 -0
- package/dist/adapter/codex/events/codex-session-source.js +121 -0
- package/dist/adapter/codex/events/hook-refusals.js +27 -0
- package/dist/adapter/codex/events/rollout-scan.js +614 -0
- package/dist/adapter/codex/events/turn-permissions.js +60 -0
- package/dist/adapter/codex/hooks/pre-tool-use-input.js +24 -0
- package/dist/adapter/codex/hooks/stop-refusals.js +57 -0
- package/dist/adapter/codex/probe/codex-doctor-report.js +1 -0
- package/dist/adapter/codex/probe/codex-probe.js +268 -0
- package/dist/adapter/codex/settings/codex-hooks.js +83 -0
- package/dist/cli/cli-command.js +1 -0
- package/dist/cli/command-router.js +42 -0
- package/dist/cli/commands/check-cli-command.js +128 -0
- package/dist/cli/commands/codex-stop-cli-command.js +27 -0
- package/dist/cli/commands/doctor-arguments.js +32 -0
- package/dist/cli/commands/doctor-cli-command.js +31 -0
- package/dist/cli/commands/doctor-usage.js +14 -0
- package/dist/cli/commands/init-cli-command.js +123 -0
- package/dist/cli/commands/menu-cli-command.js +58 -0
- package/dist/cli/commands/notify-cli-command.js +158 -0
- package/dist/cli/commands/refuse-cli-command.js +79 -0
- package/dist/cli/commands/report-arguments.js +62 -0
- package/dist/cli/commands/report-cli-command.js +36 -0
- package/dist/cli/commands/report-usage.js +41 -0
- package/dist/cli/commands/sessions-cli-command.js +184 -0
- package/dist/cli/commands/start-cli-command.js +83 -0
- package/dist/cli/commands/watch-cli-command.js +142 -0
- package/dist/cli/exit-codes.js +13 -0
- package/dist/cli/project-switches.js +46 -0
- package/dist/cli.js +80 -0
- package/dist/composition-root.js +411 -0
- package/dist/core/access/command-line.js +454 -0
- package/dist/core/access/listing.js +58 -0
- package/dist/core/access/path-shape.js +59 -0
- package/dist/core/access/path-tokens.js +37 -0
- package/dist/core/access/protected-access.js +310 -0
- package/dist/core/access/protected-values.js +102 -0
- package/dist/core/access/recorded-effect.js +67 -0
- package/dist/core/access/returns.js +173 -0
- package/dist/core/access/search-output.js +34 -0
- package/dist/core/access/search-reach.js +268 -0
- package/dist/core/access/uses.js +143 -0
- package/dist/core/access/words-before.js +52 -0
- package/dist/core/agent.js +1 -0
- package/dist/core/capability.js +11 -0
- package/dist/core/combined-project-catalogue.js +36 -0
- package/dist/core/combined-session-catalogue.js +25 -0
- package/dist/core/completeness.js +10 -0
- package/dist/core/context.js +1 -0
- package/dist/core/correlation/correlate.js +329 -0
- package/dist/core/delegation.js +1 -0
- package/dist/core/detector/prompt-signals.js +78 -0
- package/dist/core/entry-point.js +1 -0
- package/dist/core/event.js +1 -0
- package/dist/core/evidence.js +9 -0
- package/dist/core/late-message.js +32 -0
- package/dist/core/message.js +1 -0
- package/dist/core/nearest-project.js +28 -0
- package/dist/core/policy/default-policy.js +32 -0
- package/dist/core/policy/glob.js +56 -0
- package/dist/core/policy/parse-policy.js +70 -0
- package/dist/core/policy/policy.js +20 -0
- package/dist/core/policy/resolve-policy.js +16 -0
- package/dist/core/project-catalogue.js +1 -0
- package/dist/core/project-root.js +133 -0
- package/dist/core/provider-titles.js +10 -0
- package/dist/core/redaction/entropy.js +46 -0
- package/dist/core/redaction/redacted.js +4 -0
- package/dist/core/redaction/redactor.js +339 -0
- package/dist/core/redaction/secret-patterns.js +22 -0
- package/dist/core/redaction/value-shapes.js +81 -0
- package/dist/core/redaction/value-trace.js +110 -0
- package/dist/core/review.js +1 -0
- package/dist/core/session-catalogue.js +19 -0
- package/dist/core/session-filter.js +42 -0
- package/dist/core/session-format.js +27 -0
- package/dist/core/session-model.js +1 -0
- package/dist/core/session-reader.js +22 -0
- package/dist/core/session-records.js +1 -0
- package/dist/core/session-source.js +1 -0
- package/dist/core/session-titles.js +21 -0
- package/dist/core/turn.js +1 -0
- package/dist/doctor/codex-doctor.js +14 -0
- package/dist/doctor/doctor-use-case.js +1 -0
- package/dist/doctor/format-selecting-doctor.js +28 -0
- package/dist/doctor/render/attention/attention-rule.js +1 -0
- package/dist/doctor/render/attention/doctor-attention-rules.js +28 -0
- package/dist/doctor/render/attention/rules/damaged-meta-files-rule.js +8 -0
- package/dist/doctor/render/attention/rules/damaged-transcripts-rule.js +9 -0
- package/dist/doctor/render/attention/rules/incomplete-subagent-pairs-rule.js +6 -0
- package/dist/doctor/render/attention/rules/missing-main-transcript-rule.js +5 -0
- package/dist/doctor/render/attention/rules/missing-spilled-results-rule.js +6 -0
- package/dist/doctor/render/attention/rules/multiple-working-directories-rule.js +15 -0
- package/dist/doctor/render/attention/rules/unknown-denial-kinds-rule.js +5 -0
- package/dist/doctor/render/attention/rules/unknown-line-types-rule.js +6 -0
- package/dist/doctor/render/attention/rules/unrecognised-entries-rule.js +6 -0
- package/dist/doctor/render/attention/rules/unusable-directories-rule.js +12 -0
- package/dist/doctor/render/attention/transcript-scopes.js +6 -0
- package/dist/doctor/render/codex-text-doctor-renderer.js +97 -0
- package/dist/doctor/render/doctor-renderers.js +1 -0
- package/dist/doctor/render/json-doctor-renderer.js +7 -0
- package/dist/doctor/render/output-format.js +1 -0
- package/dist/doctor/render/text-doctor-renderer.js +124 -0
- package/dist/doctor/session-doctor.js +16 -0
- package/dist/infrastructure/clack-asker.js +24 -0
- package/dist/infrastructure/clack-chooser.js +40 -0
- package/dist/infrastructure/clack-multi-chooser.js +31 -0
- package/dist/infrastructure/file-alert-store.js +120 -0
- package/dist/infrastructure/file-checked-store.js +55 -0
- package/dist/infrastructure/file-mark-store.js +67 -0
- package/dist/infrastructure/file-onboarding-store.js +93 -0
- package/dist/infrastructure/folder-window.js +26 -0
- package/dist/infrastructure/node-agentwhy-invocation.js +99 -0
- package/dist/infrastructure/node-browser.js +40 -0
- package/dist/infrastructure/node-file-system.js +111 -0
- package/dist/infrastructure/node-local-server.js +115 -0
- package/dist/infrastructure/node-text-input.js +26 -0
- package/dist/infrastructure/os-notifier.js +21 -0
- package/dist/infrastructure/osascript-folder-chooser.js +53 -0
- package/dist/infrastructure/powershell-folder-chooser.js +78 -0
- package/dist/infrastructure/real-directory.js +18 -0
- package/dist/infrastructure/stream-printer.js +11 -0
- package/dist/infrastructure/terminal-banner.js +19 -0
- package/dist/ports/agentwhy-invocation.js +1 -0
- package/dist/ports/alert-store.js +1 -0
- package/dist/ports/asker.js +1 -0
- package/dist/ports/browser.js +1 -0
- package/dist/ports/checked-store.js +1 -0
- package/dist/ports/chooser.js +1 -0
- package/dist/ports/directory-reader.js +1 -0
- package/dist/ports/file-access-error.js +11 -0
- package/dist/ports/file-reader.js +1 -0
- package/dist/ports/file-tail-reader.js +1 -0
- package/dist/ports/file-writer.js +1 -0
- package/dist/ports/folder-chooser.js +1 -0
- package/dist/ports/local-server.js +1 -0
- package/dist/ports/mark-store.js +10 -0
- package/dist/ports/multi-chooser.js +1 -0
- package/dist/ports/notifier.js +1 -0
- package/dist/ports/onboarding-store.js +1 -0
- package/dist/ports/printer.js +1 -0
- package/dist/ports/text-input.js +1 -0
- package/dist/refuse/command-reach.js +135 -0
- package/dist/refuse/command-refusal.js +88 -0
- package/dist/refuse/render/codex-stop-words.js +21 -0
- package/dist/refuse/render/refusal-words.js +34 -0
- package/dist/report/build-report.js +1037 -0
- package/dist/report/check/actions-digest.js +73 -0
- package/dist/report/check/check-lines.js +83 -0
- package/dist/report/check/mark-request.js +90 -0
- package/dist/report/check/marks.js +84 -0
- package/dist/report/check/render/text-digest-renderer.js +332 -0
- package/dist/report/check/session-actions.js +90 -0
- package/dist/report/check/session-check.js +91 -0
- package/dist/report/choose-policy.js +61 -0
- package/dist/report/flow-reads.js +18 -0
- package/dist/report/private-files/tell-lists.js +84 -0
- package/dist/report/project-rules.js +33 -0
- package/dist/report/render/home-relative.js +18 -0
- package/dist/report/render/html-head.js +26 -0
- package/dist/report/render/html-report-components.js +48 -0
- package/dist/report/render/html-report-styles.js +500 -0
- package/dist/report/render/html-sidebar.js +42 -0
- package/dist/report/render/path-tail.js +14 -0
- package/dist/report/render/report-copy.js +1177 -0
- package/dist/report/render/report-page/advanced-view.js +167 -0
- package/dist/report/render/report-page/file-story.js +114 -0
- package/dist/report/render/report-page/files-view.js +381 -0
- package/dist/report/render/report-page/files.js +77 -0
- package/dist/report/render/report-page/fix-wizard-script.js +269 -0
- package/dist/report/render/report-page/fix-wizard.js +310 -0
- package/dist/report/render/report-page/helpers-view.js +383 -0
- package/dist/report/render/report-page/helpers.js +51 -0
- package/dist/report/render/report-page/item-names.js +63 -0
- package/dist/report/render/report-page/protect-patterns.js +13 -0
- package/dist/report/render/report-page/providers.js +208 -0
- package/dist/report/render/report-page/record-view.js +367 -0
- package/dist/report/render/report-page/report-page-renderer.js +129 -0
- package/dist/report/render/report-page/report-views.js +31 -0
- package/dist/report/render/report-page/story-window.js +356 -0
- package/dist/report/render/report-page/times.js +25 -0
- package/dist/report/render/report-page/to-do-view.js +299 -0
- package/dist/report/render/report-page/to-do.js +152 -0
- package/dist/report/render/report-page.js +1 -0
- package/dist/report/render/session-view.js +250 -0
- package/dist/report/render/text-report-renderer.js +981 -0
- package/dist/report/render/ui/add-file-popup.js +122 -0
- package/dist/report/render/ui/app-sidebar.js +78 -0
- package/dist/report/render/ui/ask-panel.js +80 -0
- package/dist/report/render/ui/avatar.js +19 -0
- package/dist/report/render/ui/backdrop.js +29 -0
- package/dist/report/render/ui/brand-mark.js +4 -0
- package/dist/report/render/ui/button.js +67 -0
- package/dist/report/render/ui/callout.js +20 -0
- package/dist/report/render/ui/chat-example.js +17 -0
- package/dist/report/render/ui/checklist.js +50 -0
- package/dist/report/render/ui/confirm-dialog.js +34 -0
- package/dist/report/render/ui/data-table.js +49 -0
- package/dist/report/render/ui/drawer.js +25 -0
- package/dist/report/render/ui/file-chip.js +37 -0
- package/dist/report/render/ui/fold-line.js +22 -0
- package/dist/report/render/ui/guide-card.js +25 -0
- package/dist/report/render/ui/hero.js +37 -0
- package/dist/report/render/ui/labelled-select.js +10 -0
- package/dist/report/render/ui/live-script.js +222 -0
- package/dist/report/render/ui/local-date.js +58 -0
- package/dist/report/render/ui/mode-icon.js +6 -0
- package/dist/report/render/ui/page-shell.js +101 -0
- package/dist/report/render/ui/pill-tabs.js +47 -0
- package/dist/report/render/ui/popup.js +77 -0
- package/dist/report/render/ui/progress.js +35 -0
- package/dist/report/render/ui/project-list.js +284 -0
- package/dist/report/render/ui/scope-choice.js +19 -0
- package/dist/report/render/ui/stats.js +21 -0
- package/dist/report/render/ui/status-icon.js +30 -0
- package/dist/report/render/ui/status-look.js +21 -0
- package/dist/report/render/ui/switch.js +11 -0
- package/dist/report/render/ui/tag.js +19 -0
- package/dist/report/render/ui/task-list.js +56 -0
- package/dist/report/render/ui/tokens.js +46 -0
- package/dist/report/render/ui/update-notice.js +146 -0
- package/dist/report/render/ui/words/app-words.js +163 -0
- package/dist/report/render/ui/words/conversations-words.js +457 -0
- package/dist/report/render/ui/words/month-words.js +59 -0
- package/dist/report/render/ui/words/onboarding-words.js +446 -0
- package/dist/report/render/ui/words/projects-words.js +217 -0
- package/dist/report/render/ui/words/report-words.js +2099 -0
- package/dist/report/render/ui/words/settings-words.js +611 -0
- package/dist/report/render/ui/words/to-fix-words.js +287 -0
- package/dist/report/report-model.js +2 -0
- package/dist/report/report-use-case.js +1 -0
- package/dist/report/rule-names.js +20 -0
- package/dist/report/session-report.js +163 -0
- package/dist/report/start/app-nav.js +37 -0
- package/dist/report/start/conversations/calendar-view.js +104 -0
- package/dist/report/start/conversations/conversation-columns.js +187 -0
- package/dist/report/start/conversations/conversations-renderer.js +54 -0
- package/dist/report/start/conversations/empty-week.js +120 -0
- package/dist/report/start/conversations/files-window.js +166 -0
- package/dist/report/start/conversations/period-section.js +280 -0
- package/dist/report/start/conversations/periods-script.js +440 -0
- package/dist/report/start/conversations/periods.js +110 -0
- package/dist/report/start/conversations/week-view.js +30 -0
- package/dist/report/start/conversations/weeks.js +17 -0
- package/dist/report/start/month/month-renderer.js +50 -0
- package/dist/report/start/month/month-view.js +135 -0
- package/dist/report/start/month/months.js +17 -0
- package/dist/report/start/onboarding/done.js +171 -0
- package/dist/report/start/onboarding/finish-onboarding.js +93 -0
- package/dist/report/start/onboarding/intro.js +100 -0
- package/dist/report/start/onboarding/onboarding-changes.js +40 -0
- package/dist/report/start/onboarding/onboarding-renderer.js +195 -0
- package/dist/report/start/onboarding/onboarding-script.js +400 -0
- package/dist/report/start/onboarding/onboarding-view.js +98 -0
- package/dist/report/start/onboarding/project-step.js +210 -0
- package/dist/report/start/onboarding/steps.js +239 -0
- package/dist/report/start/onboarding/welcome.js +66 -0
- package/dist/report/start/page-notice.js +10 -0
- package/dist/report/start/projects/index-projects.js +43 -0
- package/dist/report/start/projects/moved-page.js +82 -0
- package/dist/report/start/projects/project-switch.js +138 -0
- package/dist/report/start/projects/projects-window.js +67 -0
- package/dist/report/start/projects/temporary-space.js +18 -0
- package/dist/report/start/render/air-datepicker-vendor.js +27 -0
- package/dist/report/start/render/session-status.js +41 -0
- package/dist/report/start/render/start-words.js +84 -0
- package/dist/report/start/repository.js +28 -0
- package/dist/report/start/serve/index-handler.js +372 -0
- package/dist/report/start/serve/onboarding-request.js +50 -0
- package/dist/report/start/serve/settings-request.js +1 -0
- package/dist/report/start/serve/settings-setup.js +193 -0
- package/dist/report/start/session-index.js +1 -0
- package/dist/report/start/session-start.js +974 -0
- package/dist/report/start/settings/alerts-tab.js +104 -0
- package/dist/report/start/settings/files-tab.js +169 -0
- package/dist/report/start/settings/general-tab.js +71 -0
- package/dist/report/start/settings/settings-renderer.js +254 -0
- package/dist/report/start/settings/settings-script.js +161 -0
- package/dist/report/start/settings/settings-view.js +240 -0
- package/dist/report/start/settings/settings-windows.js +334 -0
- package/dist/report/start/settings-files.js +43 -0
- package/dist/report/start/to-fix/done-list.js +45 -0
- package/dist/report/start/to-fix/file-window.js +110 -0
- package/dist/report/start/to-fix/to-fix-list.js +70 -0
- package/dist/report/start/to-fix/to-fix-renderer.js +237 -0
- package/dist/report/start/to-fix/to-fix-script.js +94 -0
- package/dist/report/start/to-fix/to-fix-view.js +124 -0
- package/dist/report/watch/agent-alert.js +72 -0
- package/dist/report/watch/notice-choices.js +35 -0
- package/dist/report/watch/notice-settings.js +65 -0
- package/dist/report/watch/preferences.js +100 -0
- package/dist/report/watch/render/instruction-words.js +54 -0
- package/dist/report/watch/render/notice-words.js +182 -0
- package/dist/report/watch/subagent-watch.js +345 -0
- package/dist/report/watch/watch-notice.js +1 -0
- package/dist/setup/behind.js +18 -0
- package/dist/setup/codex-mirror.js +171 -0
- package/dist/setup/not-a-project.js +19 -0
- package/dist/setup/project-setup.js +644 -0
- package/dist/setup/protected-patterns.js +30 -0
- package/dist/shared/colour.js +23 -0
- package/dist/shared/compare.js +4 -0
- package/dist/shared/content-version.js +13 -0
- package/dist/shared/counter.js +11 -0
- package/dist/shared/file-stamp.js +4 -0
- package/dist/shared/json.js +13 -0
- package/dist/shared/label.js +13 -0
- package/dist/shared/package-name.js +6 -0
- package/dist/shared/plain-invocation.js +44 -0
- package/dist/shared/plain-version.js +21 -0
- package/dist/shared/printable.js +25 -0
- package/dist/shared/renderer.js +1 -0
- package/dist/shared/sentence.js +20 -0
- package/dist/shared/terminal-logo.js +41 -0
- package/dist/shared/text-table.js +15 -0
- package/dist/shared/wrap.js +29 -0
- package/package.json +70 -0
|
@@ -0,0 +1,1177 @@
|
|
|
1
|
+
import { APP_WORDS } from './ui/words/app-words.js';
|
|
2
|
+
import { CONVERSATIONS_WORDS } from './ui/words/conversations-words.js';
|
|
3
|
+
import { MONTH_WORDS } from './ui/words/month-words.js';
|
|
4
|
+
import { ONBOARDING_WORDS } from './ui/words/onboarding-words.js';
|
|
5
|
+
import { PROJECTS_WORDS } from './ui/words/projects-words.js';
|
|
6
|
+
import { REPORT_WORDS } from './ui/words/report-words.js';
|
|
7
|
+
import { SETTINGS_WORDS } from './ui/words/settings-words.js';
|
|
8
|
+
import { TO_FIX_WORDS } from './ui/words/to-fix-words.js';
|
|
9
|
+
export const LANGS = ['en', 'pl', 'de'];
|
|
10
|
+
export const DEFAULT_LANG = 'en';
|
|
11
|
+
export const LANG_NAMES = { en: 'English', pl: 'Polski', de: 'Deutsch' };
|
|
12
|
+
/** English and German count one against the rest; Polish has a third form for 2–4, and not for 12–14. */
|
|
13
|
+
function category(lang, count) {
|
|
14
|
+
if (count === 1)
|
|
15
|
+
return 'one';
|
|
16
|
+
if (lang !== 'pl')
|
|
17
|
+
return 'other';
|
|
18
|
+
const last = count % 10;
|
|
19
|
+
const lastTwo = count % 100;
|
|
20
|
+
return last >= 2 && last <= 4 && !(lastTwo >= 12 && lastTwo <= 14) ? 'few' : 'many';
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Values arrive already escaped, because most of them are HTML fragments the caller built (`<code>` around a
|
|
24
|
+
* path, `<b>` around a tool). The dictionary itself is the project's own text, so it is written as HTML.
|
|
25
|
+
*/
|
|
26
|
+
function format(template, vars) {
|
|
27
|
+
return template.replace(/\{(\w+)\}/g, (whole, name) => (name in vars ? String(vars[name]) : whole));
|
|
28
|
+
}
|
|
29
|
+
export function translator(lang) {
|
|
30
|
+
const table = TABLES[lang];
|
|
31
|
+
return (key, vars = {}) => {
|
|
32
|
+
const count = typeof vars['n'] === 'number' ? vars['n'] : undefined;
|
|
33
|
+
const plural = count === undefined ? undefined : table[key + '.' + category(lang, count)];
|
|
34
|
+
const text = plural ?? table[key] ?? TABLES.en[key + (count === undefined ? '' : '.' + category('en', count))] ?? TABLES.en[key] ?? key;
|
|
35
|
+
return format(text, vars);
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
/** One inline fragment per language; the CSS shows the chosen one. Use `blocks` when the fragment has block content. */
|
|
39
|
+
export function inLanguages(render) {
|
|
40
|
+
return LANGS.map((lang) => '<span class="i18n" lang="' + lang + '">' + render(translator(lang), lang) + '</span>').join('');
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* An attribute cannot hold three languages, so every language keeps its own and the script swaps them.
|
|
44
|
+
*
|
|
45
|
+
* What `render` returns lands between double quotes and is written as it came, so a caller passing a value
|
|
46
|
+
* through must escape it first - the same contract `format` above states, and the one that matters most here,
|
|
47
|
+
* because an attribute has no tag around it to make an unescaped quote look wrong. A deny rule read out of a
|
|
48
|
+
* project's settings file reached these quotes raw and closed them, which turned a pattern anyone can commit
|
|
49
|
+
* into attributes on the button. Escaping inside this function instead would be wrong: callers such as
|
|
50
|
+
* `html-session-graph.ts` build their value out of already-escaped parts and would have it escaped twice.
|
|
51
|
+
*/
|
|
52
|
+
export function labelAttributes(render) {
|
|
53
|
+
return LANGS.map((lang) => ' data-label-' + lang + '="' + render(translator(lang)) + '"').join('') +
|
|
54
|
+
' aria-label="' + render(translator(DEFAULT_LANG)) + '"';
|
|
55
|
+
}
|
|
56
|
+
const EN = {
|
|
57
|
+
'quote.open': '\u201C', 'quote.close': '\u201D',
|
|
58
|
+
'lang.aria': 'Report language',
|
|
59
|
+
'bar.analysis': 'Session analysis',
|
|
60
|
+
'bar.session': 'session <code>{id}</code>',
|
|
61
|
+
'bar.agents.one': '{n} agent', 'bar.agents.other': '{n} agents',
|
|
62
|
+
'bar.actions.one': '{n} action', 'bar.actions.other': '{n} actions',
|
|
63
|
+
'bar.record': 'Record: {state}',
|
|
64
|
+
'bar.policy': "Analysis rule: {level}", 'bar.policyDefault': ' (default)',
|
|
65
|
+
'bar.unknowns': 'What we cannot tell',
|
|
66
|
+
// The rail: the same words on both pages, short because a collapsed rail shows them one icon wide.
|
|
67
|
+
'rail.nav': 'Sections of this page',
|
|
68
|
+
// The heading over the items, and the standing fact the sessions index carries in the same place.
|
|
69
|
+
// The three readings of one agent, where a script can offer them one at a time. Without one they are stacked.
|
|
70
|
+
'tab.summary': 'Summary', 'tab.steps': 'Step by step', 'tab.evidence': 'Evidence',
|
|
71
|
+
'tab.group': 'What this agent did',
|
|
72
|
+
'side.nav': 'Back to the session list',
|
|
73
|
+
'side.record': 'Session record',
|
|
74
|
+
'rail.sessions': 'Sessions',
|
|
75
|
+
'record.complete': 'complete', 'record.partial': 'partial', 'record.unresolved': 'part of the data could not be joined',
|
|
76
|
+
'files.one': '{n} protected file', 'files.other': '{n} protected files',
|
|
77
|
+
'verdict.appeared.one': 'appeared', 'verdict.appeared.other': 'appeared',
|
|
78
|
+
"verdict.result": "<em>Agents saw the names of sensitive files.</em>",
|
|
79
|
+
'verdict.them.one': 'it', 'verdict.them.other': 'them',
|
|
80
|
+
"verdict.mixed": "<em>Agents saw or used the names of sensitive files.</em>",
|
|
81
|
+
"verdict.named": "<em>Agents reached for sensitive files.</em>",
|
|
82
|
+
'verdict.were.one': 'was', 'verdict.were.other': 'were',
|
|
83
|
+
"verdict.blocked": "No agent got into a sensitive file — <em>{n} {attempts} blocked</em>.",
|
|
84
|
+
'verdict.attempts.one': 'attempt was', 'verdict.attempts.other': 'attempts were',
|
|
85
|
+
"verdict.signals": "<em>A result contains something that looks like a password or key.</em>",
|
|
86
|
+
"verdict.incomplete": "<em>We cannot tell</em> — part of the record is missing.",
|
|
87
|
+
"verdict.clear": "Nothing shows that agents saw sensitive files.",
|
|
88
|
+
"lead.incompleteCount.one": "Part of the record is missing: {n} action has no result.",
|
|
89
|
+
"lead.incompleteCount.other": "Part of the record is missing: {n} actions have no result.",
|
|
90
|
+
"lead.incomplete": "Part of the record is missing.",
|
|
91
|
+
'lead.noDelegations': 'The helper agents have no recorded instruction — their actions are here, what they were asked for is not.',
|
|
92
|
+
'lead.noGuarantee': 'That is not a guarantee that nothing was disclosed.',
|
|
93
|
+
"lead.hint": "Click an agent to see the details.",
|
|
94
|
+
"verdict.show": "Show:",
|
|
95
|
+
'filter.title': 'Click to show or hide',
|
|
96
|
+
"tier.hit.filter": "saw only a file name", "tier.hit.chip": "File name in a result", "tier.hit.row": "saw only the name",
|
|
97
|
+
"tier.hit.term": "<b>Saw only the name</b>: a result listed the file’s name. Its contents did not come back.",
|
|
98
|
+
"tier.secret.filter": "possible password or key", "tier.secret.chip": "Possible password or key", "tier.secret.row": "possible password or key",
|
|
99
|
+
"tier.secret.term": "<b>Possible password or key</b>: text that looks like one. It may be example data. The text is never shown here.",
|
|
100
|
+
"tier.named.filter": "file named in a command", "tier.named.chip": "File named in a command", "tier.named.row": "named in a command",
|
|
101
|
+
"tier.named.term": "<b>Named in a command</b>: a command mentioned the file, but its contents did not come back.",
|
|
102
|
+
"tier.unknown.filter": "record incomplete", "tier.unknown.chip": "Record incomplete", "tier.unknown.row": "record incomplete",
|
|
103
|
+
"tier.unknown.term": "<b>Record incomplete</b>: an action has no recorded result, so we cannot tell what happened.",
|
|
104
|
+
"tier.block.filter": "blocked", "tier.block.chip": "Blocked", "tier.block.row": "blocked",
|
|
105
|
+
"tier.block.term": "<b>Blocked</b>: the attempt was refused and returned nothing.",
|
|
106
|
+
"tier.clean.filter": "nothing found", "tier.clean.chip": "Nothing found", "tier.clean.row": "nothing found",
|
|
107
|
+
"tier.clean.term": "<b>Nothing found</b>: nothing in this agent’s record touched a sensitive file. Missing results can still hide something.",
|
|
108
|
+
"strip.hint": "Click an agent or a file.",
|
|
109
|
+
// The workbench, as `.ai/mocks/report-clean.html` lays it out: one panel holding the two views, and a panel of
|
|
110
|
+
// its own for what is selected. These are the page's own words for those parts.
|
|
111
|
+
'work.title': 'Who saw what',
|
|
112
|
+
'work.lead': 'Select an agent or a file to see what happened.',
|
|
113
|
+
'work.mapNote': 'Matching text can point to several files. It does not prove which file was opened.',
|
|
114
|
+
'work.tableAgent': 'Agent',
|
|
115
|
+
'work.shown': '{shown} of {total} agents shown',
|
|
116
|
+
'foot.local': 'Processed on your machine. No data sent.',
|
|
117
|
+
'foot.after': 'An analysis of a past session. It did not block anything.',
|
|
118
|
+
'view.aria': 'View', 'view.graph': 'Graph', 'view.list': 'List',
|
|
119
|
+
'col.you': 'You', 'col.main': 'Main agent', 'col.mainShort': 'Main',
|
|
120
|
+
'col.agents': 'Helper agents', 'col.agentsShort': 'Helpers',
|
|
121
|
+
"col.targets": "Sensitive files", 'col.targetsShort': 'Files',
|
|
122
|
+
'graph.aria': 'Session graph: who was asked for what, who did what, and what they touched',
|
|
123
|
+
'graph.you': 'You — where the session starts',
|
|
124
|
+
"graph.clean": "nothing found", 'graph.cleanSub': 'collapsed — click to see them', "graph.cleanAria": "Agents with nothing found",
|
|
125
|
+
'graph.gap': 'Delegation with no agent', 'graph.gapSub': 'no description recorded',
|
|
126
|
+
'graph.targetAgents.one': '{n} agent', 'graph.targetAgents.other': '{n} agents',
|
|
127
|
+
"legend.delegated": "gave a task", "legend.hit": "saw only a name", "legend.secret": "possible password",
|
|
128
|
+
"legend.named": "named in a command", "legend.unknown": "record incomplete", "legend.block": "blocked", "legend.unresolved": "who started it is unknown",
|
|
129
|
+
'list.aria': 'Session agents, worst first',
|
|
130
|
+
'list.more': 'Show <u><span data-count></span> agents that reached nothing</u>',
|
|
131
|
+
'list.mainTask': 'Runs the session and delegates', 'list.unknownTask': 'Instruction not established', 'list.noDescription': 'No description recorded',
|
|
132
|
+
'list.gapOut': 'agent not established',
|
|
133
|
+
'panel.back': 'Back to: ',
|
|
134
|
+
'panel.agentSub.main': 'runs the session and delegates', 'panel.agentSub.helper': "helper agent",
|
|
135
|
+
'step.asked': 'What it was asked', 'step.did': 'What it did', "step.result": "What came of it",
|
|
136
|
+
"panel.next": "What to do", 'panel.what': 'What is this?', 'panel.evidence': "Task recorded at: {evidence}",
|
|
137
|
+
"asked.note": "The task as written in the session.",
|
|
138
|
+
'asked.main': 'The main agent works from your conversation. This report does not quote it.',
|
|
139
|
+
'asked.noDescription': 'The delegation is in the record, but without a description.',
|
|
140
|
+
'asked.unresolved': 'We do not know what this agent was asked — the call that started it is missing from the record.',
|
|
141
|
+
'did.none': 'No actions recorded. That does not confirm the agent did nothing.',
|
|
142
|
+
'did.noStories.one': '{n} action recorded. None of them touched a protected path.',
|
|
143
|
+
'did.noStories.other': '{n} actions recorded. None of them touched a protected path.',
|
|
144
|
+
'did.used': 'Used <b>{did}</b>. {note}',
|
|
145
|
+
'wrote.head.reasoning': "The agent’s note before this action",
|
|
146
|
+
'wrote.head.said': "The agent’s message before this action",
|
|
147
|
+
'wrote.covers.one': "These words preceded {n} action.",
|
|
148
|
+
'wrote.covers.other': "These words preceded {n} actions, not just this one.",
|
|
149
|
+
'wrote.none': "No earlier message was recorded for this action.",
|
|
150
|
+
'wrote.blank.one': "The earlier message was recorded without its text.",
|
|
151
|
+
'wrote.blank.other': "The earlier messages were recorded without their text ({n}).",
|
|
152
|
+
'wrote.carried': "The earlier text contained data matching {files}. We hide that text.",
|
|
153
|
+
'wrote.cut': 'Cut at the first {n} characters.',
|
|
154
|
+
'wrote.size': 'It wrote {n} characters before this call; this view does not show them.',
|
|
155
|
+
"result.link": "See this file →",
|
|
156
|
+
"result.signals": "A result contains something that looks like a password or key. The text is hidden.",
|
|
157
|
+
"result.signalsLink": "All possible passwords or keys →",
|
|
158
|
+
'result.clean': 'No contact with protected files was found. That does not confirm the whole session was safe.',
|
|
159
|
+
"return.value": "Its reply to the agent that gave it the task contained the same text as {files}.",
|
|
160
|
+
// What the record forces rather than what it shows: the agent that delegated holds text only this agent read,
|
|
161
|
+
// and a child's one channel to its parent is its reply. The reply itself is not in the record.
|
|
162
|
+
"return.crossed": "The same text as {files} reached the agent that gave it the task. Its reply is not in this record, so how it was worded cannot be shown.",
|
|
163
|
+
"return.path": "Its reply mentioned {files}, but not what is inside.",
|
|
164
|
+
"return.report.one": "No text from sensitive files was found in its reply ({length} characters).",
|
|
165
|
+
"return.report.other": "No text from sensitive files was found in its reply ({length} characters).",
|
|
166
|
+
"return.unknown": "Its reply is missing or unreadable.",
|
|
167
|
+
"return.awaited": "It ran in the background. Its reply is not in the record.",
|
|
168
|
+
"return.written": "It wrote the same text as {files} in its own messages.",
|
|
169
|
+
"use.file": "The same text as in {files} was saved to {targets}.",
|
|
170
|
+
"use.fileProtected": "The same text as in {files} was saved to the sensitive file {targets}.",
|
|
171
|
+
"use.command": "A command{programs} contained the same text as {files}.",
|
|
172
|
+
"use.commit": "A commit{programs} contained the same text as {files}.",
|
|
173
|
+
"use.delegation": "A task for another agent contained the same text as {files}.",
|
|
174
|
+
"use.said": "A message contained the same text as {files}.",
|
|
175
|
+
"use.reasoning": "The agent’s notes contained the same text as {files}.",
|
|
176
|
+
"use.call": "A tool call contained the same text as {files}.",
|
|
177
|
+
"use.source.none": "Earlier steps do not show where the agent got it.",
|
|
178
|
+
"use.file.same": "The text was saved to {targets}.",
|
|
179
|
+
"use.fileProtected.same": "The text was saved to the sensitive file {targets}.",
|
|
180
|
+
"use.command.same": "A command{programs} contained the text.",
|
|
181
|
+
"use.commit.same": "A commit{programs} contained the text.",
|
|
182
|
+
"use.delegation.same": "A task for another agent contained the text.",
|
|
183
|
+
"use.said.same": "A message contained the text.",
|
|
184
|
+
"use.reasoning.same": "The agent’s notes contained the text.",
|
|
185
|
+
"use.call.same": "A tool call contained the text.",
|
|
186
|
+
'flow.dialog': 'What happened, step by step',
|
|
187
|
+
'flow.close': 'Close',
|
|
188
|
+
"flow.kind.asked": "Got a task",
|
|
189
|
+
'flow.kind.reached.succeeded': 'Reached a protected file', "flow.kind.reached.blocked": "Was blocked", "flow.kind.reached.unknown": "Result unknown",
|
|
190
|
+
"flow.kind.carried": "Saw the same text in another file",
|
|
191
|
+
"flow.kind.used.file": "Saved the text to a file", "flow.kind.used.command": "Used the text in a command", "flow.kind.used.delegation": "Passed the text to another agent",
|
|
192
|
+
"flow.kind.used.said": "Wrote the text in a message", "flow.kind.used.reasoning": "Wrote the text in its notes", "flow.kind.used.call": "Put the text in a tool call",
|
|
193
|
+
"flow.kind.delegated": "Started another agent", "flow.kind.returned": "Replied",
|
|
194
|
+
"flow.kind.received": "Was handed the file’s contents",
|
|
195
|
+
"flow.asked": "{by} asked: {asked}",
|
|
196
|
+
'flow.askedBare': '{by} started it, and no description was recorded.',
|
|
197
|
+
"flow.reached.result": "{did} showed the name {files}, not what is inside.",
|
|
198
|
+
"flow.reached.input": "Ran {did} with {files}. The contents did not come back.",
|
|
199
|
+
"flow.reached.printed": "Ran {did} with {files}. We see what the command printed, not how much of it reached the AI.",
|
|
200
|
+
"flow.received": "Code it wrote passed it the same text as in {files}. The text came from that code, not from one of its actions.",
|
|
201
|
+
"flow.reached.blocked": "Tried {did} on {files}, and it was blocked.",
|
|
202
|
+
"flow.reached.unknown": "Ran {did} on {files}, but the result is missing.",
|
|
203
|
+
"flow.carried": "{did} showed the same text in {named}, which is not marked as sensitive.",
|
|
204
|
+
"flow.carriedBare": "{did} showed the same text. Which file it came from is not clear.",
|
|
205
|
+
"flow.after": "(The agent had seen this text in step {n}.)",
|
|
206
|
+
"flow.openOther": "Open steps: {name}",
|
|
207
|
+
'flow.someAgent': 'an agent this report does not hold',
|
|
208
|
+
"flow.records.one": "Where in the record", "flow.records.other": "Where in the record",
|
|
209
|
+
'tldr.valueWrittenOn': ' It wrote a value from a protected file into files that are not protected.',
|
|
210
|
+
// One call printed several protected files at once: the value came from one of them, and which is not recorded.
|
|
211
|
+
'files.or': ' or ',
|
|
212
|
+
'tldr.valueReturned': ' Its answer carried a value from a protected file to the agent that started it.',
|
|
213
|
+
'tldr.valueWritten': ' It wrote a value from a protected file in its own messages, which the session’s transcript keeps.',
|
|
214
|
+
'tldr.hit': '{name} used <b>{did}</b>. The path {path} appeared in the result, although the call never named it.',
|
|
215
|
+
'tldr.named': '{name} named {path} in a <b>{did}</b> call. The call ran; the record does not show whether the file’s content was in the result.',
|
|
216
|
+
'tldr.unknown': '{name} used <b>{did}</b> on {path}, but the record holds no certain outcome.',
|
|
217
|
+
'tldr.block': '{name} tried to reach {path} (<b>{did}</b>). The record confirms the refusal.',
|
|
218
|
+
'tldr.more.one': ' {n} event at protected paths in total.', 'tldr.more.other': ' {n} events at protected paths in total.',
|
|
219
|
+
'tldr.alsoSignals.one': ' {n} result also carries a signal of a possible secret.',
|
|
220
|
+
'tldr.alsoSignals.other': ' {n} results also carry signals of possible secrets.',
|
|
221
|
+
'tldr.onlySignals.one': '{name}: {n} tool result carries a signal of a possible secret. The values are hidden.',
|
|
222
|
+
'tldr.onlySignals.other': '{name}: {n} tool results carry signals of possible secrets. The values are hidden.',
|
|
223
|
+
'tldr.actions.one': '{name} performed {n} action. None of them touched a protected file.',
|
|
224
|
+
'tldr.actions.other': '{name} performed {n} actions. None of them touched a protected file.',
|
|
225
|
+
'tldr.noActions': 'The record holds no action of this agent at all.',
|
|
226
|
+
'tldr.unknownActions.one': ' {n} action has no certain outcome.', 'tldr.unknownActions.other': ' {n} actions have no certain outcome.',
|
|
227
|
+
"story.blocked": "This attempt was blocked.", "story.unknown": "An attempt is visible, but not its result.",
|
|
228
|
+
"story.result": "A result showed a sensitive file’s name.", "story.input": "A command mentioned a sensitive file and ran.",
|
|
229
|
+
"source.result": "The command did not ask for this file; its name showed up in the result.",
|
|
230
|
+
"source.input": "The file was named in the command.",
|
|
231
|
+
'story.occurrences.one': '{n} occurrence', 'story.occurrences.other': '{n} occurrences',
|
|
232
|
+
'story.evidence': 'Evidence: <code>{evidence}</code>', 'story.link': 'Link to event #{n}',
|
|
233
|
+
"agent.stories": "File events ({n})",
|
|
234
|
+
"agent.shapes": "Possible passwords or keys ({n})", 'agent.actions': 'All actions ({n})',
|
|
235
|
+
'missing.chip': 'No link established', 'missing.title': 'Delegation with no agent established', 'missing.sub': 'delegation {id}',
|
|
236
|
+
'missing.tldr': 'The delegation is visible, but we do not know which agent carried it out. We do not assign it anyone else’s actions.',
|
|
237
|
+
'missing.description': 'Recorded description', 'missing.none': 'No description recorded.',
|
|
238
|
+
"target.why": "Why it counts as sensitive",
|
|
239
|
+
"target.whyPatterns.one": "It matches the rule {patterns}.",
|
|
240
|
+
"target.whyPatterns.other": "It matches the rules {patterns}.",
|
|
241
|
+
"target.whyPolicy": "It matches this analysis’s rules.",
|
|
242
|
+
"target.whyNote": "That does not mean it really holds passwords.",
|
|
243
|
+
"target.who": "Who touched it ({n})",
|
|
244
|
+
"signal.title": "Possible passwords or keys", "signal.name": "Possible passwords or keys",
|
|
245
|
+
'signal.sub.one': '{n} result · values hidden', 'signal.sub.other': '{n} results · values hidden',
|
|
246
|
+
"signal.tldr.one": "{n} result contains something that looks like a password or key. The text is hidden.",
|
|
247
|
+
"signal.tldr.other": "{n} results contain something that looks like a password or key. The text is hidden.",
|
|
248
|
+
'signal.kinds': 'Kinds of signal', 'signal.who': 'Who saw it', 'signal.all': 'All signals and evidence ({n})',
|
|
249
|
+
'signal.results.one': '{n} result', 'signal.results.other': '{n} results',
|
|
250
|
+
'ty.chip': 'Where the session starts', 'ty.title': 'You',
|
|
251
|
+
'ty.tldr': 'The session began with your conversation with the main agent. The record holds {agents}, {delegations} and {actions}.',
|
|
252
|
+
'ty.delegations.one': '{n} delegation', 'ty.delegations.other': '{n} delegations',
|
|
253
|
+
'ty.next': 'What happened next',
|
|
254
|
+
'clean.title.one': '{n} agent reached nothing', 'clean.title.other': '{n} agents reached nothing',
|
|
255
|
+
'clean.sub': '{actions} in total',
|
|
256
|
+
'clean.tldr': 'These agents touched no protected path and saw no possible secret. On the graph they are collapsed into one node until the “nothing reached” filter is on.',
|
|
257
|
+
'clean.empty': 'This session has no helper agents without findings.', 'clean.who': 'Who they are',
|
|
258
|
+
'scope.chip': 'Policy and scope', 'scope.title': 'Which policy produced this report?',
|
|
259
|
+
'scope.sub': 'session <code>{id}</code> · record: {state}',
|
|
260
|
+
'scope.noRead': 'protected resources must not be read or searched.',
|
|
261
|
+
'scope.noDisclose': 'reading is allowed; values must not be disclosed.',
|
|
262
|
+
'scope.other': 'see the policy source below.',
|
|
263
|
+
'scope.origin': 'Where the policy came from',
|
|
264
|
+
'scope.patterns.one': '{n} protection pattern', 'scope.patterns.other': '{n} protection patterns',
|
|
265
|
+
'scope.exceptions.one': '{n} exception', 'scope.exceptions.other': '{n} exceptions',
|
|
266
|
+
'scope.counts': '{patterns} · {exceptions}. A path matching one is a signal to check, not a finished verdict of a breach.',
|
|
267
|
+
'scope.builtIn': '<b>This is the built-in default policy.</b> No policy file was supplied. The report does not reconstruct the protection that was active at the time.',
|
|
268
|
+
'scope.privacy': 'Privacy', 'scope.privacyText': 'The analysis is local and runs after the fact. Full prompts, commands and results never enter the report; paths, task descriptions and shortened identifiers are visible. Secret values are hidden before the file is written.',
|
|
269
|
+
// The session list as the mock draws it: three tabs over the table, one badge per row, a footer that pages.
|
|
270
|
+
// The shell of the index: the sidebar that navigates it, and the heading of each view.
|
|
271
|
+
'side.local': 'On your machine', 'side.localSub': 'Nothing is uploaded. Nothing is measured.',
|
|
272
|
+
// The chart over the session list: one bar per day of the chosen period, or per week where the range is long.
|
|
273
|
+
'index.notices.notify.chat,terminal': 'And the terminal',
|
|
274
|
+
'index.notices.notify.chat,os': 'And a notification',
|
|
275
|
+
'table.expand': 'Open this table full width', 'table.dialog': 'Table, full width', 'table.close': 'Close the table',
|
|
276
|
+
'scope.paths': 'How paths are shown',
|
|
277
|
+
'scope.pathsFull': 'Paths are shown as they were written, relative to the project root where they lie under it.',
|
|
278
|
+
'scope.pathsShared': '<b>This is a shared report.</b> Nothing above the project root appears in it. That reduces exposure; it does not anonymise — a path inside the repository still names what the repository names.',
|
|
279
|
+
'scope.root.known': 'The project root was read from the session, so paths under it are shown relative to it.',
|
|
280
|
+
'scope.root.absent': 'No project root was recorded, so paths are shown exactly as written.',
|
|
281
|
+
'scope.root.absentShared': 'No project root was recorded, so nothing can be placed inside the project: every path that says where it starts is shown as a category.',
|
|
282
|
+
'scope.root.ambiguousShared': 'The session recorded {n} working directories, so no single project root describes it and every path that says where it starts is shown as a category.',
|
|
283
|
+
'scope.root.ambiguous': 'The session recorded {n} working directories, so no single project root describes it.',
|
|
284
|
+
'scope.technical': 'Technical details',
|
|
285
|
+
'scope.ruleset': 'Redaction ruleset', 'scope.redactions': 'Hidden occurrences of values', 'scope.distinct': 'Distinct hidden values',
|
|
286
|
+
'scope.protected': 'Protected contents', 'scope.missingClasses': 'Scanner classes not implemented', 'scope.none': 'none',
|
|
287
|
+
'gaps.chipGaps': 'The record has gaps', 'gaps.chipClean': 'No gaps found', 'gaps.title': 'What cannot be established?',
|
|
288
|
+
'gaps.sub': 'record: {state}',
|
|
289
|
+
'gaps.tldr': 'We do not establish the agent’s intent, the full context of its instructions, or confirmed disclosure of a secret.',
|
|
290
|
+
'gaps.record': 'Gaps in the record', 'gaps.noneFound': 'No gaps were found in the structure of the supplied record.',
|
|
291
|
+
'gaps.unresolved': 'Agents with no established instruction ({n})', 'gaps.unresolvedNote': 'we do not know who started it',
|
|
292
|
+
'gaps.missing': 'Delegations with no established agent ({n})',
|
|
293
|
+
'gaps.howToRead': 'How to read the numbers',
|
|
294
|
+
'gaps.howToReadText': 'A path named inside a shell command counts as touched — some of those are mentions rather than openings.',
|
|
295
|
+
'gaps.unknownActions': 'Actions with no certain outcome ({n})',
|
|
296
|
+
'what.main': '<b>The main agent</b> is the assistant you talk to. It does some of the work itself and delegates the rest to helper agents.',
|
|
297
|
+
'what.agent': "<b>A helper agent</b> is an assistant given a task by another agent. Its reply can become part of the other agent’s conversation.",
|
|
298
|
+
'what.unresolved': '<b>No established link</b>: we do not know who started this agent. On the graph it hangs from the main agent by a dashed line — that is an annotation, not an established fact.',
|
|
299
|
+
"what.file": "<b>A sensitive file</b> matches this analysis’s rules, such as <code>.env</code>. That does not mean access was blocked or that it really holds passwords.",
|
|
300
|
+
"limit": "This report shows what the session record contains. It cannot tell what the agent intended, or whether data was shared outside this session.",
|
|
301
|
+
"next.hit": "Nothing urgent. Agents only saw the file’s name.",
|
|
302
|
+
"next.secret": "Check whether it is a real password or key. If it is, change it.",
|
|
303
|
+
"next.named": "Open an agent below to see what the command did.",
|
|
304
|
+
"next.unknown": "Open an agent below to see what is missing.",
|
|
305
|
+
"next.block": "Nothing to do. The block worked.",
|
|
306
|
+
"next.clean": "Nothing to do.",
|
|
307
|
+
'outcome.succeeded': 'Succeeded', 'outcome.blocked': 'Refused', 'outcome.unknown': 'No certain outcome',
|
|
308
|
+
'table.caption': 'The agent’s actions in the order its transcript recorded them',
|
|
309
|
+
'table.step': 'Step', 'table.tool': 'Tool', 'table.path': 'Protected path', 'table.outcome': 'Outcome', 'table.evidence': 'Evidence',
|
|
310
|
+
'table.notDetected': 'none detected', 'table.signal': 'Signal',
|
|
311
|
+
'table.empty': 'No actions recorded. That does not confirm the agent did nothing.',
|
|
312
|
+
'skip': 'Skip to the report',
|
|
313
|
+
'title': 'agentwhy — what happened in session {id}',
|
|
314
|
+
"flow.delegated.value": "Started {agent}. Its reply contained the same text as {files}.",
|
|
315
|
+
"flow.delegated.crossed": "Started {agent}. The same text as {files} came back from it; its reply is not in this record.",
|
|
316
|
+
"flow.returned.crossed": "The same text as {files} reached {agent}. Its reply is not in this record.",
|
|
317
|
+
"flow.delegated.path": "Started {agent}. Its reply mentioned {files}, but not what is inside.",
|
|
318
|
+
"flow.delegated.report": "Started {agent}. No text from sensitive files was found in its reply.",
|
|
319
|
+
"flow.delegated.unknown": "Started {agent}. Its reply could not be read.",
|
|
320
|
+
"flow.delegated.awaited": "Started {agent} in the background. Its reply is not in the record.",
|
|
321
|
+
"flow.returned.value": "Its reply to {agent} contained the same text as {files}.",
|
|
322
|
+
"flow.returned.path": "Its reply to {agent} mentioned {files}, but not what is inside.",
|
|
323
|
+
"flow.returned.report": "No text from sensitive files was found in its reply to {agent}.",
|
|
324
|
+
"flow.returned.unknown": "Its reply could not be read.",
|
|
325
|
+
"flow.returned.awaited": "It ran in the background. Its reply is not in the record.",
|
|
326
|
+
"flow.open": "Show step by step ({n})",
|
|
327
|
+
// The steps tab, as `.ai/mocks/report-clean.html` lays it out: a heading that counts them, a control that opens
|
|
328
|
+
// the whole run in a dialog, and the first few steps read in place.
|
|
329
|
+
'steps.how': 'How it happened',
|
|
330
|
+
'steps.count.one': '{n} step', 'steps.count.other': '{n} steps',
|
|
331
|
+
'steps.expand': 'Expand',
|
|
332
|
+
'steps.all': 'Show all {n} steps',
|
|
333
|
+
'steps.dialog': 'Step by step',
|
|
334
|
+
'evidence.title': 'What the answer is based on',
|
|
335
|
+
'evidence.lead': 'Grouped by action, with the records each one rests on kept beside it.',
|
|
336
|
+
"agent.evidence": "Details: task, files, evidence",
|
|
337
|
+
"wrote.open": "What it wrote just before",
|
|
338
|
+
"flow.kind.reached.value": "Saw the file’s contents",
|
|
339
|
+
"flow.kind.reached.path": "Saw a file name",
|
|
340
|
+
"flow.kind.reached.named": "Mentioned a file in a command",
|
|
341
|
+
"wrote.blank.few": "The earlier messages were recorded without their text ({n}).",
|
|
342
|
+
"wrote.blank.many": "The earlier messages were recorded without their text ({n}).",
|
|
343
|
+
"wrote.covers.few": "These words preceded {n} actions, not just this one.",
|
|
344
|
+
"wrote.covers.many": "These words preceded {n} actions, not just this one.",
|
|
345
|
+
"flow.reached.value": "{did} showed it the same text as in {files}.",
|
|
346
|
+
"return.report.few": "No text from sensitive files was found in its reply ({length} characters).",
|
|
347
|
+
"return.report.many": "No text from sensitive files was found in its reply ({length} characters).",
|
|
348
|
+
// plain-report: the answer first, in words a first-time reader needs no glossary for.
|
|
349
|
+
"verdict.seen.one": "An agent saw <em>what is inside a sensitive file.</em>",
|
|
350
|
+
"verdict.seen.other": "{n} agents saw <em>what is inside sensitive files.</em>",
|
|
351
|
+
"lead.seen.who": "Who: {agents}.",
|
|
352
|
+
"lead.seen.files": "Files: {files}.",
|
|
353
|
+
"lead.seen.passed": "Passed on to another agent by: {agents}.",
|
|
354
|
+
"lead.seen.saved": "Saved to files by: {agents}.",
|
|
355
|
+
"lead.seen.next": "If these files hold real passwords or keys, change them.",
|
|
356
|
+
// The counts beside the answer, as the sessions index writes them: a number, then what it counts.
|
|
357
|
+
'stat.keys.one': 'possible key', 'stat.keys.other': 'possible keys',
|
|
358
|
+
'stat.files.one': 'matching file', 'stat.files.other': 'matching files',
|
|
359
|
+
'strip.title': 'Who saw what',
|
|
360
|
+
"tier.value.filter": "saw file contents",
|
|
361
|
+
"tier.value.chip": "Saw file contents",
|
|
362
|
+
"tier.value.row": "saw the contents",
|
|
363
|
+
"tier.value.term": "<b>Saw the contents</b>: the same text as in this file ended up in the agent’s conversation.",
|
|
364
|
+
"legend.value": "saw contents",
|
|
365
|
+
"graph.seen.yes": "saw file contents",
|
|
366
|
+
"graph.seen.maybe": "possible password or key",
|
|
367
|
+
"graph.seen.path": "saw only a file name",
|
|
368
|
+
"graph.seen.named": "file named in a command",
|
|
369
|
+
"graph.seen.unknown": "record incomplete",
|
|
370
|
+
"graph.seen.blocked": "blocked",
|
|
371
|
+
"graph.passed": "passed it on",
|
|
372
|
+
"graph.saved": "saved to a file",
|
|
373
|
+
"seen.question": "Did this agent see what is inside a sensitive file?",
|
|
374
|
+
"seen.word.yes": "Yes",
|
|
375
|
+
"seen.word.maybe": "Possibly",
|
|
376
|
+
"seen.word.path": "No",
|
|
377
|
+
"seen.word.named": "Not that we can see",
|
|
378
|
+
"seen.word.unknown": "Unknown",
|
|
379
|
+
"seen.word.blocked": "No",
|
|
380
|
+
"seen.word.no": "No",
|
|
381
|
+
"seen.word.empty": "Unknown",
|
|
382
|
+
"seen.says.yes": "The same text as in {files} ended up in its conversation.",
|
|
383
|
+
"seen.says.yes.bare": "Text from a sensitive file ended up in its conversation.",
|
|
384
|
+
"seen.says.maybe": "It saw text that looks like a password or key. It may also be example data.",
|
|
385
|
+
"seen.says.path": "It saw only the name {files}, not what is inside.",
|
|
386
|
+
"seen.says.path.bare": "It saw only a sensitive file’s name, not what is inside.",
|
|
387
|
+
"seen.says.named": "A command mentioned {files}, but its contents did not come back.",
|
|
388
|
+
"seen.says.named.bare": "A command mentioned a sensitive file, but its contents did not come back.",
|
|
389
|
+
"seen.says.unknown": "Part of the record is missing, so we cannot tell.",
|
|
390
|
+
"seen.says.blocked": "It tried to reach {files}, and that was blocked.",
|
|
391
|
+
"seen.says.blocked.bare": "It tried to reach a sensitive file, and that was blocked.",
|
|
392
|
+
"seen.says.no": "Nothing shows that it touched a sensitive file.",
|
|
393
|
+
"seen.says.empty": "This agent’s actions were not recorded.",
|
|
394
|
+
"seen.row.passed": "Passed it to another agent",
|
|
395
|
+
"seen.row.saved": "Saved it to a file",
|
|
396
|
+
"seen.row.chat": "Wrote it in its messages",
|
|
397
|
+
"seen.row.command": "Used it in a command",
|
|
398
|
+
"yn.yes": "Yes",
|
|
399
|
+
"yn.no": "No",
|
|
400
|
+
"yn.unknown": "Unknown",
|
|
401
|
+
"seen.next.yes": "If that file holds real passwords or keys, change them.",
|
|
402
|
+
"seen.next.maybe": "Check whether it is a real password or key. If it is, change it.",
|
|
403
|
+
"seen.next.path": "Nothing urgent. The agent only knows that the file exists.",
|
|
404
|
+
"seen.next.named": "The details below show what the command did.",
|
|
405
|
+
"seen.next.unknown": "The details below show what is missing.",
|
|
406
|
+
"seen.next.blocked": "Nothing to do. The block worked.",
|
|
407
|
+
"seen.next.no": "Nothing to do.",
|
|
408
|
+
"seen.next.empty": "Check that agentwhy can read this agent’s record.",
|
|
409
|
+
"seen.chip.yes": "Saw file contents",
|
|
410
|
+
"seen.chip.maybe": "Possible password or key",
|
|
411
|
+
"seen.chip.path": "Saw only a file name",
|
|
412
|
+
"seen.chip.named": "File named in a command",
|
|
413
|
+
"seen.chip.unknown": "Record incomplete",
|
|
414
|
+
"seen.chip.blocked": "Blocked",
|
|
415
|
+
"seen.chip.no": "Nothing found",
|
|
416
|
+
"seen.chip.empty": "No record",
|
|
417
|
+
"seen.incomplete": "Part of the record is missing, so this answer may be incomplete.",
|
|
418
|
+
"seen.help": "How does agentwhy know?",
|
|
419
|
+
"seen.helpText": "A sensitive file is one that matches this analysis’s rules, such as <code>.env</code>. That does not mean access to it was blocked. agentwhy compares text: when the same text is in such a file and in an agent’s conversation, the agent saw that text. The text itself is never shown in this report.",
|
|
420
|
+
"target.notSeen": "Agents saw or used only its name. Its contents did not come back.",
|
|
421
|
+
"target.unknown": "Part of the record is missing, so we cannot tell whether an agent saw what is inside.",
|
|
422
|
+
"target.blocked": "Every attempt to reach it was blocked.",
|
|
423
|
+
"next.value": "If this file holds real passwords or keys, change them.",
|
|
424
|
+
"story.value": "The agent saw this file’s contents.",
|
|
425
|
+
"lead.notBack": "Their contents did not come back to the agents.",
|
|
426
|
+
"target.seen.one": "1 agent saw what is inside this file.",
|
|
427
|
+
"target.seen.other": "{n} agents saw what is inside this file.",
|
|
428
|
+
"target.seen.few": "{n} agents saw what is inside this file.",
|
|
429
|
+
"target.seen.many": "{n} agents saw what is inside this file.",
|
|
430
|
+
"lead.seen.more": "and {n} more",
|
|
431
|
+
"index.incomplete": "record incomplete",
|
|
432
|
+
};
|
|
433
|
+
const PL = {
|
|
434
|
+
'quote.open': '\u201E', 'quote.close': '\u201D',
|
|
435
|
+
'lang.aria': 'Język raportu',
|
|
436
|
+
'bar.analysis': 'Analiza sesji',
|
|
437
|
+
'bar.session': 'sesja <code>{id}</code>',
|
|
438
|
+
'bar.agents.one': '{n} agent', 'bar.agents.few': '{n} agenci', 'bar.agents.many': '{n} agentów',
|
|
439
|
+
'bar.actions.one': '{n} działanie', 'bar.actions.few': '{n} działania', 'bar.actions.many': '{n} działań',
|
|
440
|
+
'bar.record': 'Zapis: {state}',
|
|
441
|
+
'bar.policy': "Zasada analizy: {level}", 'bar.policyDefault': ' (domyślna)',
|
|
442
|
+
'bar.unknowns': 'Czego nie wiemy',
|
|
443
|
+
'rail.nav': 'Sekcje tej strony',
|
|
444
|
+
'tab.summary': 'Podsumowanie', 'tab.steps': 'Krok po kroku', 'tab.evidence': 'Dowody',
|
|
445
|
+
'tab.group': 'Co zrobił ten agent',
|
|
446
|
+
'side.nav': 'Powrót do listy sesji',
|
|
447
|
+
'side.record': 'Zapis sesji',
|
|
448
|
+
'rail.sessions': 'Sesje',
|
|
449
|
+
'record.complete': 'kompletny', 'record.partial': 'częściowy', 'record.unresolved': 'nie udało się powiązać części danych',
|
|
450
|
+
'files.one': '{n} chroniony plik', 'files.few': '{n} chronione pliki', 'files.many': '{n} chronionych plików',
|
|
451
|
+
"verdict.result": "<em>Agenci widzieli nazwy wrażliwych plików.</em>",
|
|
452
|
+
'verdict.them.one': 'go', 'verdict.them.few': 'ich', 'verdict.them.many': 'ich',
|
|
453
|
+
'verdict.appeared.one': 'pojawił się', 'verdict.appeared.few': 'pojawiły się', 'verdict.appeared.many': 'pojawiło się',
|
|
454
|
+
"verdict.mixed": "<em>Agenci widzieli lub używali nazw wrażliwych plików.</em>",
|
|
455
|
+
"verdict.named": "<em>Agenci sięgali po wrażliwe pliki.</em>",
|
|
456
|
+
'verdict.were.one': 'został wskazany', 'verdict.were.few': 'zostały wskazane', 'verdict.were.many': 'zostało wskazanych',
|
|
457
|
+
"verdict.blocked": "Żaden agent nie dostał się do wrażliwego pliku — <em>{n} {attempts}</em>.",
|
|
458
|
+
'verdict.attempts.one': 'próba została zablokowana', 'verdict.attempts.few': 'próby zostały zablokowane', 'verdict.attempts.many': 'prób zostało zablokowanych',
|
|
459
|
+
"verdict.signals": "<em>W wyniku jest coś, co wygląda na hasło lub klucz.</em>",
|
|
460
|
+
"verdict.incomplete": "<em>Nie wiadomo</em> — brakuje części zapisu.",
|
|
461
|
+
"verdict.clear": "Nic nie wskazuje, że agenci widzieli wrażliwe pliki.",
|
|
462
|
+
"lead.incompleteCount.one": "Brakuje części zapisu. Działania bez wyniku: {n}.",
|
|
463
|
+
"lead.incompleteCount.few": "Brakuje części zapisu. Działania bez wyniku: {n}.",
|
|
464
|
+
"lead.incompleteCount.many": "Brakuje części zapisu. Działania bez wyniku: {n}.",
|
|
465
|
+
"lead.incomplete": "Brakuje części zapisu.",
|
|
466
|
+
'lead.noDelegations': 'Brakuje zleceń dla agentów pomocniczych — widać ich działania, ale nie wiadomo, co im polecono.',
|
|
467
|
+
'lead.noGuarantee': 'To nie jest gwarancja braku ujawnienia danych.',
|
|
468
|
+
"lead.hint": "Kliknij agenta, aby zobaczyć szczegóły.",
|
|
469
|
+
"verdict.show": "Pokaż:",
|
|
470
|
+
'filter.title': 'Kliknij, żeby pokazać lub ukryć',
|
|
471
|
+
"tier.hit.filter": "widział tylko nazwę pliku", "tier.hit.chip": "Nazwa pliku w wyniku", "tier.hit.row": "widział tylko nazwę",
|
|
472
|
+
"tier.hit.term": "<b>Widział tylko nazwę</b>: wynik pokazał nazwę pliku. Jego zawartość nie wróciła.",
|
|
473
|
+
"tier.secret.filter": "możliwe hasło lub klucz", "tier.secret.chip": "Możliwe hasło lub klucz", "tier.secret.row": "możliwe hasło lub klucz",
|
|
474
|
+
"tier.secret.term": "<b>Możliwe hasło lub klucz</b>: tekst, który tak wygląda. Może to być przykład. Sam tekst nigdy nie jest tu pokazywany.",
|
|
475
|
+
"tier.named.filter": "nazwa pliku w poleceniu", "tier.named.chip": "Nazwa pliku w poleceniu", "tier.named.row": "nazwa w poleceniu",
|
|
476
|
+
"tier.named.term": "<b>Nazwa w poleceniu</b>: polecenie wspomniało plik, ale jego zawartość nie wróciła.",
|
|
477
|
+
"tier.unknown.filter": "niepełny zapis", "tier.unknown.chip": "Niepełny zapis", "tier.unknown.row": "niepełny zapis",
|
|
478
|
+
"tier.unknown.term": "<b>Niepełny zapis</b>: działanie nie ma zapisanego wyniku, więc nie wiadomo, co się stało.",
|
|
479
|
+
"tier.block.filter": "zablokowano", "tier.block.chip": "Zablokowano", "tier.block.row": "zablokowano",
|
|
480
|
+
"tier.block.term": "<b>Zablokowano</b>: próbę odrzucono i nic nie zwróciła.",
|
|
481
|
+
"tier.clean.filter": "nic nie znaleziono", "tier.clean.chip": "Nic nie znaleziono", "tier.clean.row": "nic nie znaleziono",
|
|
482
|
+
"tier.clean.term": "<b>Nic nie znaleziono</b>: w zapisie tego agenta nic nie dotyczyło wrażliwych plików. Brakujące wyniki mogą jednak coś ukrywać.",
|
|
483
|
+
"strip.hint": "Kliknij agenta lub plik.",
|
|
484
|
+
'work.title': 'Kto co zobaczył',
|
|
485
|
+
'work.lead': 'Wybierz agenta lub plik, aby zobaczyć, co się stało.',
|
|
486
|
+
'work.mapNote': 'Pasujący tekst może wskazywać na kilka plików. Nie dowodzi, który plik został otwarty.',
|
|
487
|
+
'work.tableAgent': 'Agent',
|
|
488
|
+
'work.shown': 'pokazano {shown} z {total} agentów',
|
|
489
|
+
'foot.local': 'Przetworzone na Twoim komputerze. Nic nie zostało wysłane.',
|
|
490
|
+
'foot.after': 'Analiza minionej sesji. Niczego nie zablokowała.',
|
|
491
|
+
'view.aria': 'Widok', 'view.graph': 'Graf', 'view.list': 'Lista',
|
|
492
|
+
'col.you': 'Ty', 'col.main': 'Główny agent', 'col.mainShort': 'Główny',
|
|
493
|
+
'col.agents': 'Agenci pomocniczy', 'col.agentsShort': 'Pomocnicy',
|
|
494
|
+
"col.targets": "Wrażliwe pliki", 'col.targetsShort': 'Pliki',
|
|
495
|
+
'graph.aria': 'Graf sesji: kto zlecił zadanie, kto co zrobił i czego dotknął',
|
|
496
|
+
'graph.you': 'Ty — tu zaczyna się sesja',
|
|
497
|
+
"graph.clean": "bez znalezisk", 'graph.cleanSub': 'zwinięci — kliknij, żeby zobaczyć', "graph.cleanAria": "Agenci, u których nic nie znaleziono",
|
|
498
|
+
'graph.gap': 'Zlecenie bez agenta', 'graph.gapSub': 'brak opisu zlecenia',
|
|
499
|
+
'graph.targetAgents.one': '{n} agent', 'graph.targetAgents.few': '{n} agenci', 'graph.targetAgents.many': '{n} agentów',
|
|
500
|
+
"legend.delegated": "zlecił zadanie", "legend.hit": "tylko nazwa", "legend.secret": "możliwe hasło",
|
|
501
|
+
"legend.named": "nazwa w poleceniu", "legend.unknown": "niepełny zapis", "legend.block": "zablokowano", "legend.unresolved": "nie wiadomo, kto go uruchomił",
|
|
502
|
+
'list.aria': 'Agenci sesji, najpoważniejsze na górze',
|
|
503
|
+
'list.more': 'Pokaż <u><span data-count></span> agentów bez trafień</u>',
|
|
504
|
+
'list.mainTask': 'Prowadzi sesję i rozdziela zadania', 'list.unknownTask': 'Zlecenie nieznane', 'list.noDescription': 'Bez opisu zlecenia',
|
|
505
|
+
'list.gapOut': 'nieustalony wykonawca',
|
|
506
|
+
'panel.back': 'Wróć do: ',
|
|
507
|
+
'panel.agentSub.main': 'prowadzi sesję i rozdziela zadania', 'panel.agentSub.helper': "agent pomocniczy",
|
|
508
|
+
'step.asked': 'Co mu zlecono', 'step.did': 'Co zrobił', "step.result": "Co z tego wyszło",
|
|
509
|
+
"panel.next": "Co zrobić", 'panel.what': 'Co to jest?', 'panel.evidence': "Zapis zadania: {evidence}",
|
|
510
|
+
"asked.note": "Treść zadania z sesji.",
|
|
511
|
+
'asked.main': 'Główny agent działa na podstawie Twojej rozmowy. Raport nie cytuje jej treści.',
|
|
512
|
+
'asked.noDescription': 'Zlecenie jest w zapisie, ale bez opisu.',
|
|
513
|
+
'asked.unresolved': 'Nie znamy zlecenia tego agenta — w zapisie brakuje wywołania, które go uruchomiło.',
|
|
514
|
+
'did.none': 'Brak zapisanych działań. To nie potwierdza, że agent nic nie zrobił.',
|
|
515
|
+
'did.noStories.one': 'Zapisano {n} działanie. Żadne nie dotyczyło chronionych ścieżek.',
|
|
516
|
+
'did.noStories.few': 'Zapisano {n} działania. Żadne nie dotyczyło chronionych ścieżek.',
|
|
517
|
+
'did.noStories.many': 'Zapisano {n} działań. Żadne nie dotyczyło chronionych ścieżek.',
|
|
518
|
+
'did.used': 'Użył <b>{did}</b>. {note}',
|
|
519
|
+
'wrote.head.reasoning': "Notatka agenta przed tym działaniem",
|
|
520
|
+
'wrote.head.said': "Wiadomość agenta przed tym działaniem",
|
|
521
|
+
'wrote.covers.one': "Ta wypowiedź poprzedzała {n} działanie.",
|
|
522
|
+
'wrote.covers.few': "Ta wypowiedź poprzedzała {n} działania, nie tylko to jedno.",
|
|
523
|
+
'wrote.covers.many': "Ta wypowiedź poprzedzała {n} działań, nie tylko to jedno.",
|
|
524
|
+
'wrote.none': "Nie zapisano wcześniejszej wypowiedzi dla tego działania.",
|
|
525
|
+
'wrote.blank.one': "Wcześniejszą wypowiedź zapisano bez jej treści.",
|
|
526
|
+
'wrote.blank.few': "Wcześniejsze wypowiedzi zapisano bez ich treści ({n}).",
|
|
527
|
+
'wrote.blank.many': "Wcześniejsze wypowiedzi zapisano bez ich treści ({n}).",
|
|
528
|
+
'wrote.carried': "Wcześniejszy tekst zawierał dane występujące w {files}. Ukrywamy jego treść.",
|
|
529
|
+
'wrote.cut': 'Ucięte na pierwszych {n} znakach.',
|
|
530
|
+
'wrote.size': 'Napisał przed tym wywołaniem {n} znaków; ten widok ich nie pokazuje.',
|
|
531
|
+
"result.link": "Zobacz ten plik →",
|
|
532
|
+
"result.signals": "W wyniku jest coś, co wygląda na hasło lub klucz. Sam tekst jest ukryty.",
|
|
533
|
+
"result.signalsLink": "Wszystkie możliwe hasła i klucze →",
|
|
534
|
+
'result.clean': 'Nie wykryto kontaktu z chronionymi plikami. To nie potwierdza bezpieczeństwa całej sesji.',
|
|
535
|
+
"return.value": "Jego odpowiedź dla agenta, który zlecił zadanie, zawierała ten sam tekst, co {files}.",
|
|
536
|
+
"return.crossed": "Ten sam tekst, co {files}, dotarł do agenta, który zlecił zadanie. Jego odpowiedzi nie ma w tym zapisie, więc nie można pokazać, jak była sformułowana.",
|
|
537
|
+
"return.path": "Jego odpowiedź wspomniała {files}, bez zawartości.",
|
|
538
|
+
"return.report.one": "W jego odpowiedzi ({length} znaków) nie znaleziono tekstu z wrażliwych plików.",
|
|
539
|
+
"return.report.few": "W jego odpowiedzi ({length} znaków) nie znaleziono tekstu z wrażliwych plików.",
|
|
540
|
+
"return.report.many": "W jego odpowiedzi ({length} znaków) nie znaleziono tekstu z wrażliwych plików.",
|
|
541
|
+
"return.unknown": "Brakuje jego odpowiedzi albo nie da się jej odczytać.",
|
|
542
|
+
"return.awaited": "Działał w tle. Jego odpowiedzi nie ma w zapisie.",
|
|
543
|
+
"return.written": "W swoich wiadomościach napisał ten sam tekst, co {files}.",
|
|
544
|
+
"use.file": "Ten sam tekst, co w {files}, zapisano w {targets}.",
|
|
545
|
+
"use.fileProtected": "Ten sam tekst, co w {files}, zapisano we wrażliwym pliku {targets}.",
|
|
546
|
+
"use.command": "Polecenie{programs} zawierało ten sam tekst, co {files}.",
|
|
547
|
+
"use.commit": "Commit{programs} zawierał ten sam tekst, co {files}.",
|
|
548
|
+
"use.delegation": "Zadanie dla innego agenta zawierało ten sam tekst, co {files}.",
|
|
549
|
+
"use.said": "Wiadomość zawierała ten sam tekst, co {files}.",
|
|
550
|
+
"use.reasoning": "Notatki agenta zawierały ten sam tekst, co {files}.",
|
|
551
|
+
"use.call": "Wywołanie narzędzia zawierało ten sam tekst, co {files}.",
|
|
552
|
+
"use.source.none": "Wcześniejsze kroki nie pokazują, skąd agent go miał.",
|
|
553
|
+
"use.file.same": "Tekst zapisano w {targets}.",
|
|
554
|
+
"use.fileProtected.same": "Tekst zapisano we wrażliwym pliku {targets}.",
|
|
555
|
+
"use.command.same": "Polecenie{programs} zawierało ten tekst.",
|
|
556
|
+
"use.commit.same": "Commit{programs} zawierał ten tekst.",
|
|
557
|
+
"use.delegation.same": "Zadanie dla innego agenta zawierało ten tekst.",
|
|
558
|
+
"use.said.same": "Wiadomość zawierała ten tekst.",
|
|
559
|
+
"use.reasoning.same": "Notatki agenta zawierały ten tekst.",
|
|
560
|
+
"use.call.same": "Wywołanie narzędzia zawierało ten tekst.",
|
|
561
|
+
'flow.dialog': 'Co się stało, krok po kroku',
|
|
562
|
+
'flow.close': 'Zamknij',
|
|
563
|
+
"flow.kind.asked": "Dostał zadanie",
|
|
564
|
+
'flow.kind.reached.succeeded': 'Dotarł do chronionego pliku', "flow.kind.reached.blocked": "Zablokowano", "flow.kind.reached.unknown": "Wynik nieznany",
|
|
565
|
+
"flow.kind.carried": "Zobaczył ten sam tekst w innym pliku",
|
|
566
|
+
"flow.kind.used.file": "Zapisał ten tekst w pliku", "flow.kind.used.command": "Użył tego tekstu w poleceniu", "flow.kind.used.delegation": "Przekazał ten tekst innemu agentowi",
|
|
567
|
+
"flow.kind.used.said": "Napisał ten tekst w wiadomości", "flow.kind.used.reasoning": "Napisał ten tekst w swoich notatkach", "flow.kind.used.call": "Wpisał ten tekst do narzędzia",
|
|
568
|
+
"flow.kind.delegated": "Uruchomił innego agenta", "flow.kind.returned": "Odpowiedział",
|
|
569
|
+
"flow.kind.received": "Dostał zawartość pliku",
|
|
570
|
+
"flow.asked": "{by} poprosił: {asked}",
|
|
571
|
+
'flow.askedBare': '{by} go uruchomił, a opisu nie zapisano.',
|
|
572
|
+
"flow.reached.result": "{did} pokazał nazwę {files}, bez zawartości.",
|
|
573
|
+
"flow.reached.input": "Uruchomił {did} z {files}. Zawartość nie wróciła.",
|
|
574
|
+
"flow.reached.printed": "Uruchomił {did} z {files}. Widać, co wypisało polecenie, ale nie to, ile z tego dotarło do AI.",
|
|
575
|
+
"flow.received": "Kod, który napisał, przekazał mu ten sam tekst, co w {files}. Tekst przyszedł z tego kodu, a nie z żadnego z jego działań.",
|
|
576
|
+
"flow.reached.blocked": "Próbował {did} na {files}, ale to zablokowano.",
|
|
577
|
+
"flow.reached.unknown": "Uruchomił {did} na {files}, ale brakuje wyniku.",
|
|
578
|
+
"flow.carried": "{did} pokazał ten sam tekst w {named}, który nie jest oznaczony jako wrażliwy.",
|
|
579
|
+
"flow.carriedBare": "{did} pokazał ten sam tekst. Nie wiadomo, z którego pliku.",
|
|
580
|
+
"flow.after": "(Agent widział ten tekst w kroku {n}.)",
|
|
581
|
+
"flow.openOther": "Otwórz kroki: {name}",
|
|
582
|
+
'flow.someAgent': 'agent, którego ten raport nie zawiera',
|
|
583
|
+
"flow.records.one": "Gdzie w zapisie", "flow.records.few": "Gdzie w zapisie", "flow.records.many": "Gdzie w zapisie",
|
|
584
|
+
'tldr.valueWrittenOn': ' Zapisał wartość z chronionego pliku w plikach, które nie są chronione.',
|
|
585
|
+
'files.or': ' lub ',
|
|
586
|
+
'tldr.valueReturned': ' Jego odpowiedź zawierała wartość z chronionego pliku i trafiła do agenta, który go uruchomił.',
|
|
587
|
+
'tldr.valueWritten': ' Napisał wartość z chronionego pliku w swoich wiadomościach, które przechowuje transkrypt sesji.',
|
|
588
|
+
'tldr.hit': '{name} użył <b>{did}</b>. Ścieżka {path} pojawiła się w wyniku, choć wywołanie jej nie wskazywało.',
|
|
589
|
+
'tldr.named': '{name} wskazał {path} w wywołaniu <b>{did}</b>. Operacja się wykonała; zapis nie pokazuje, czy treść pliku była w wyniku.',
|
|
590
|
+
'tldr.unknown': '{name} użył <b>{did}</b> przy {path}, ale zapis nie zawiera pewnego wyniku.',
|
|
591
|
+
'tldr.block': '{name} próbował sięgnąć po {path} (<b>{did}</b>). Zapis potwierdza odmowę.',
|
|
592
|
+
'tldr.more.one': ' Łącznie {n} zdarzenie przy chronionych ścieżkach.', 'tldr.more.few': ' Łącznie {n} zdarzenia przy chronionych ścieżkach.',
|
|
593
|
+
'tldr.more.many': ' Łącznie {n} zdarzeń przy chronionych ścieżkach.',
|
|
594
|
+
'tldr.alsoSignals.one': ' W {n} wyniku wykryto też możliwy sekret.', 'tldr.alsoSignals.few': ' W {n} wynikach wykryto też możliwe sekrety.',
|
|
595
|
+
'tldr.alsoSignals.many': ' W {n} wynikach wykryto też możliwe sekrety.',
|
|
596
|
+
'tldr.onlySignals.one': '{name}: w {n} wyniku narzędzi wykryto możliwy sekret. Wartości są ukryte.',
|
|
597
|
+
'tldr.onlySignals.few': '{name}: w {n} wynikach narzędzi wykryto możliwe sekrety. Wartości są ukryte.',
|
|
598
|
+
'tldr.onlySignals.many': '{name}: w {n} wynikach narzędzi wykryto możliwe sekrety. Wartości są ukryte.',
|
|
599
|
+
'tldr.actions.one': '{name} wykonał {n} działanie. Żadne nie dotyczyło chronionych plików.',
|
|
600
|
+
'tldr.actions.few': '{name} wykonał {n} działania. Żadne nie dotyczyło chronionych plików.',
|
|
601
|
+
'tldr.actions.many': '{name} wykonał {n} działań. Żadne nie dotyczyło chronionych plików.',
|
|
602
|
+
'tldr.noActions': 'W zapisie nie ma żadnego działania tego agenta.',
|
|
603
|
+
'tldr.unknownActions.one': ' {n} działanie nie ma pewnego wyniku.', 'tldr.unknownActions.few': ' {n} działania nie mają pewnego wyniku.',
|
|
604
|
+
'tldr.unknownActions.many': ' {n} działań nie ma pewnego wyniku.',
|
|
605
|
+
"story.blocked": "Tę próbę zablokowano.", "story.unknown": "Widać próbę, ale nie jej wynik.",
|
|
606
|
+
"story.result": "Wynik pokazał nazwę wrażliwego pliku.", "story.input": "Polecenie wspomniało wrażliwy plik i zostało wykonane.",
|
|
607
|
+
"source.result": "Polecenie nie wskazywało tego pliku; jego nazwa pojawiła się w wyniku.",
|
|
608
|
+
"source.input": "Plik był wymieniony w poleceniu.",
|
|
609
|
+
'story.occurrences.one': '{n} wystąpienie', 'story.occurrences.few': '{n} wystąpienia', 'story.occurrences.many': '{n} wystąpień',
|
|
610
|
+
'story.evidence': 'Dowód: <code>{evidence}</code>', 'story.link': 'Link do zdarzenia #{n}',
|
|
611
|
+
"agent.stories": "Zdarzenia z plikami ({n})",
|
|
612
|
+
"agent.shapes": "Możliwe hasła lub klucze ({n})", 'agent.actions': 'Wszystkie działania ({n})',
|
|
613
|
+
'missing.chip': 'Brak powiązania', 'missing.title': 'Zlecenie bez ustalonego agenta', 'missing.sub': 'zlecenie {id}',
|
|
614
|
+
'missing.tldr': 'Widać zlecenie, ale nie wiemy, który agent je wykonał. Nie przypisujemy mu cudzych działań.',
|
|
615
|
+
'missing.description': 'Zapisany opis zlecenia', 'missing.none': 'Brak opisu zlecenia.',
|
|
616
|
+
"target.why": "Dlaczego to wrażliwy plik",
|
|
617
|
+
"target.whyPatterns.one": "Pasuje do reguły {patterns}.",
|
|
618
|
+
"target.whyPatterns.few": "Pasuje do reguł {patterns}.",
|
|
619
|
+
"target.whyPatterns.many": "Pasuje do reguł {patterns}.",
|
|
620
|
+
"target.whyPolicy": "Pasuje do reguł tej analizy.",
|
|
621
|
+
"target.whyNote": "To nie znaczy, że na pewno zawiera hasła.",
|
|
622
|
+
"target.who": "Kto miał z nim styczność ({n})",
|
|
623
|
+
"signal.title": "Możliwe hasła lub klucze", "signal.name": "Możliwe hasła lub klucze",
|
|
624
|
+
'signal.sub.one': '{n} wynik · wartości ukryte', 'signal.sub.few': '{n} wyniki · wartości ukryte', 'signal.sub.many': '{n} wyników · wartości ukryte',
|
|
625
|
+
"signal.tldr.one": "Wyniki, które wyglądają na hasło lub klucz: {n}. Sam tekst jest ukryty.",
|
|
626
|
+
"signal.tldr.few": "Wyniki, które wyglądają na hasło lub klucz: {n}. Sam tekst jest ukryty.",
|
|
627
|
+
"signal.tldr.many": "Wyniki, które wyglądają na hasło lub klucz: {n}. Sam tekst jest ukryty.",
|
|
628
|
+
'signal.kinds': 'Rodzaje sygnałów', 'signal.who': 'Kto to zobaczył', 'signal.all': 'Wszystkie sygnały i dowody ({n})',
|
|
629
|
+
'signal.results.one': '{n} wynik', 'signal.results.few': '{n} wyniki', 'signal.results.many': '{n} wyników',
|
|
630
|
+
'ty.chip': 'Początek sesji', 'ty.title': 'Ty',
|
|
631
|
+
'ty.tldr': 'Sesja zaczęła się od Twojej rozmowy z głównym agentem. W zapisie jest {agents}, {delegations} i {actions}.',
|
|
632
|
+
'ty.delegations.one': '{n} zlecenie', 'ty.delegations.few': '{n} zlecenia', 'ty.delegations.many': '{n} zleceń',
|
|
633
|
+
'ty.next': 'Co było dalej',
|
|
634
|
+
'clean.title.one': '{n} agent bez trafień', 'clean.title.few': '{n} agenci bez trafień', 'clean.title.many': '{n} agentów bez trafień',
|
|
635
|
+
'clean.sub': 'razem {actions}',
|
|
636
|
+
'clean.tldr': 'Ci agenci nie dotknęli żadnej chronionej ścieżki ani możliwego sekretu. Na grafie są zwinięci w jeden element, dopóki nie włączysz filtra „bez trafień”.',
|
|
637
|
+
'clean.empty': 'W tej sesji nie ma agentów pomocniczych bez trafień.', 'clean.who': 'Kto to jest',
|
|
638
|
+
'scope.chip': 'Zasada i zakres', 'scope.title': 'Według jakiej zasady powstał raport?',
|
|
639
|
+
'scope.sub': 'sesja <code>{id}</code> · zapis: {state}',
|
|
640
|
+
'scope.noRead': 'chronionych zasobów nie wolno odczytywać ani przeszukiwać.',
|
|
641
|
+
'scope.noDisclose': 'odczyt jest dozwolony; nie wolno ujawniać wartości.',
|
|
642
|
+
'scope.other': 'sprawdź źródło zasady poniżej.',
|
|
643
|
+
'scope.origin': 'Źródło zasady',
|
|
644
|
+
'scope.patterns.one': '{n} wzorzec ochrony', 'scope.patterns.few': '{n} wzorce ochrony', 'scope.patterns.many': '{n} wzorców ochrony',
|
|
645
|
+
'scope.exceptions.one': '{n} wyjątek', 'scope.exceptions.few': '{n} wyjątki', 'scope.exceptions.many': '{n} wyjątków',
|
|
646
|
+
'scope.counts': '{patterns} · {exceptions}. Dopasowanie ścieżki jest sygnałem do sprawdzenia, a nie gotowym werdyktem naruszenia.',
|
|
647
|
+
'scope.builtIn': '<b>To wbudowana zasada domyślna.</b> Nie dostarczono własnego pliku zasad. Raport nie odtwarza ustawień ochrony z momentu zdarzenia.',
|
|
648
|
+
'scope.privacy': 'Prywatność', 'scope.privacyText': 'Analiza jest lokalna i działa po fakcie. Pełne prompty, polecenia i wyniki nie trafiają do raportu; ścieżki, opisy zleceń i skrócone identyfikatory są widoczne. Wartości sekretów są ukrywane przed zapisaniem pliku.',
|
|
649
|
+
'side.local': 'Na twojej maszynie', 'side.localSub': 'Nic nie jest wysyłane. Nic nie jest mierzone.',
|
|
650
|
+
'index.notices.notify.chat,terminal': 'I w terminalu',
|
|
651
|
+
'index.notices.notify.chat,os': 'I jako powiadomienie',
|
|
652
|
+
'table.expand': 'Otwórz tę tabelę na pełną szerokość', 'table.dialog': 'Tabela na pełną szerokość', 'table.close': 'Zamknij tabelę',
|
|
653
|
+
'scope.paths': 'Jak pokazujemy ścieżki',
|
|
654
|
+
'scope.pathsFull': 'Ścieżki są pokazane tak, jak zostały zapisane — względem korzenia projektu tam, gdzie w nim leżą.',
|
|
655
|
+
'scope.pathsShared': '<b>To jest raport do udostępnienia.</b> Nie ma w nim niczego nad korzeniem projektu. To zmniejsza ekspozycję, ale nie anonimizuje — ścieżka wewnątrz repozytorium nadal nazywa to, co nazywa repozytorium.',
|
|
656
|
+
'scope.root.known': 'Korzeń projektu został odczytany z sesji, więc ścieżki pod nim są pokazane względem niego.',
|
|
657
|
+
'scope.root.absent': 'Żaden zapis nie niósł korzenia projektu, więc ścieżki są pokazane dokładnie tak, jak je zapisano.',
|
|
658
|
+
'scope.root.absentShared': 'Żaden zapis nie niósł korzenia projektu, więc niczego nie da się umieścić wewnątrz projektu: każda ścieżka mówiąca, gdzie się zaczyna, jest pokazana jako kategoria.',
|
|
659
|
+
'scope.root.ambiguousShared': 'Sesja zapisała {n} katalogów roboczych, więc żaden pojedynczy korzeń jej nie opisuje, a każda ścieżka mówiąca, gdzie się zaczyna, jest pokazana jako kategoria.',
|
|
660
|
+
'scope.root.ambiguous': 'Sesja zapisała {n} katalogów roboczych, więc żaden pojedynczy korzeń projektu jej nie opisuje.',
|
|
661
|
+
'scope.technical': 'Szczegóły techniczne',
|
|
662
|
+
'scope.ruleset': 'Reguły redakcji', 'scope.redactions': 'Ukryte wystąpienia wartości', 'scope.distinct': 'Różne ukryte wartości',
|
|
663
|
+
'scope.protected': 'Chronione treści', 'scope.missingClasses': 'Brakujące klasy skanera', 'scope.none': 'brak',
|
|
664
|
+
'gaps.chipGaps': 'Zapis ma luki', 'gaps.chipClean': 'Bez wykrytych luk', 'gaps.title': 'Czego nie da się ustalić?',
|
|
665
|
+
'gaps.sub': 'zapis: {state}',
|
|
666
|
+
'gaps.tldr': 'Nie ustalamy intencji agenta, pełnego kontekstu jego instrukcji ani potwierdzonego ujawnienia sekretu.',
|
|
667
|
+
'gaps.record': 'Braki w zapisie', 'gaps.noneFound': 'Nie wykryto braków w strukturze dostarczonego zapisu.',
|
|
668
|
+
'gaps.unresolved': 'Agenci bez ustalonego zlecenia ({n})', 'gaps.unresolvedNote': 'nie wiemy, kto go uruchomił',
|
|
669
|
+
'gaps.missing': 'Zlecenia bez ustalonego agenta ({n})',
|
|
670
|
+
'gaps.howToRead': 'Jak czytać liczby',
|
|
671
|
+
'gaps.howToReadText': 'Ścieżka wymieniona w poleceniu powłoki liczy się jako dotknięta — część takich trafień to wzmianki, a nie otwarcia pliku.',
|
|
672
|
+
'gaps.unknownActions': 'Działania bez pewnego wyniku ({n})',
|
|
673
|
+
'what.main': '<b>Główny agent</b> to asystent, z którym rozmawiasz. Część pracy wykonuje sam, resztę zleca agentom pomocniczym.',
|
|
674
|
+
'what.agent': "<b>Agent pomocniczy</b> to asystent, któremu inny agent zlecił zadanie. Jego odpowiedź może trafić do rozmowy tamtego agenta.",
|
|
675
|
+
'what.unresolved': '<b>Nieustalone powiązanie</b>: nie wiemy, kto uruchomił tego agenta. Na grafie jest dołączony do głównego agenta przerywaną linią — to adnotacja, nie ustalony fakt.',
|
|
676
|
+
"what.file": "<b>Wrażliwy plik</b> pasuje do reguł tej analizy, np. <code>.env</code>. Nie znaczy to, że dostęp był zablokowany ani że plik na pewno zawiera hasła.",
|
|
677
|
+
"limit": "Raport pokazuje to, co jest w zapisie sesji. Nie mówi, jakie były zamiary agenta ani czy dane trafiły gdzieś poza tę sesję.",
|
|
678
|
+
"next.hit": "Nic pilnego. Agenci widzieli tylko nazwę pliku.",
|
|
679
|
+
"next.secret": "Sprawdź, czy to prawdziwe hasło lub klucz. Jeśli tak, zmień je.",
|
|
680
|
+
"next.named": "Otwórz agenta poniżej, aby zobaczyć, co zrobiło polecenie.",
|
|
681
|
+
"next.unknown": "Otwórz agenta poniżej, aby zobaczyć, czego brakuje.",
|
|
682
|
+
"next.block": "Nic nie trzeba robić. Blokada zadziałała.",
|
|
683
|
+
"next.clean": "Nic nie trzeba robić.",
|
|
684
|
+
'outcome.succeeded': 'Wykonano', 'outcome.blocked': 'Zablokowano', 'outcome.unknown': 'Brak pewnego wyniku',
|
|
685
|
+
'table.caption': 'Działania agenta w kolejności zapisanej w jego transkrypcie',
|
|
686
|
+
'table.step': 'Krok', 'table.tool': 'Narzędzie', 'table.path': 'Chroniona ścieżka', 'table.outcome': 'Wynik', 'table.evidence': 'Dowód',
|
|
687
|
+
'table.notDetected': 'nie wykryto', 'table.signal': 'Sygnał',
|
|
688
|
+
'table.empty': 'Brak zapisanych działań. To nie potwierdza, że agent nic nie zrobił.',
|
|
689
|
+
'skip': 'Przejdź do raportu',
|
|
690
|
+
'title': 'agentwhy — co wydarzyło się w sesji {id}',
|
|
691
|
+
"flow.delegated.value": "Uruchomił: {agent}. Jego odpowiedź zawierała ten sam tekst, co {files}.",
|
|
692
|
+
"flow.delegated.crossed": "Uruchomił: {agent}. Ten sam tekst, co {files}, wrócił od niego; jego odpowiedzi nie ma w tym zapisie.",
|
|
693
|
+
"flow.returned.crossed": "Ten sam tekst, co {files}, dotarł do: {agent}. Jego odpowiedzi nie ma w tym zapisie.",
|
|
694
|
+
"flow.delegated.path": "Uruchomił: {agent}. Jego odpowiedź wspomniała {files}, bez zawartości.",
|
|
695
|
+
"flow.delegated.report": "Uruchomił: {agent}. W jego odpowiedzi nie znaleziono tekstu z wrażliwych plików.",
|
|
696
|
+
"flow.delegated.unknown": "Uruchomił: {agent}. Nie da się odczytać jego odpowiedzi.",
|
|
697
|
+
"flow.delegated.awaited": "Uruchomił w tle: {agent}. Jego odpowiedzi nie ma w zapisie.",
|
|
698
|
+
"flow.returned.value": "Odbiorca: {agent}. Odpowiedź zawierała ten sam tekst, co {files}.",
|
|
699
|
+
"flow.returned.path": "Odbiorca: {agent}. Odpowiedź wspomniała {files}, bez zawartości.",
|
|
700
|
+
"flow.returned.report": "Odbiorca: {agent}. W odpowiedzi nie znaleziono tekstu z wrażliwych plików.",
|
|
701
|
+
"flow.returned.unknown": "Nie da się odczytać jego odpowiedzi.",
|
|
702
|
+
"flow.returned.awaited": "Działał w tle. Jego odpowiedzi nie ma w zapisie.",
|
|
703
|
+
"flow.open": "Pokaż krok po kroku ({n})",
|
|
704
|
+
'steps.how': 'Jak do tego doszło',
|
|
705
|
+
'steps.count.one': '{n} krok', 'steps.count.few': '{n} kroki', 'steps.count.many': '{n} kroków',
|
|
706
|
+
'steps.expand': 'Rozwiń',
|
|
707
|
+
'steps.all': 'Pokaż wszystkie kroki ({n})',
|
|
708
|
+
'steps.dialog': 'Krok po kroku',
|
|
709
|
+
'evidence.title': 'Na czym opiera się ta odpowiedź',
|
|
710
|
+
'evidence.lead': 'Pogrupowane według działania, z zapisami, na których każde się opiera.',
|
|
711
|
+
"agent.evidence": "Szczegóły: zadanie, pliki, dowody",
|
|
712
|
+
"wrote.open": "Co napisał tuż przed tym",
|
|
713
|
+
"flow.kind.reached.value": "Zobaczył zawartość pliku",
|
|
714
|
+
"flow.kind.reached.path": "Zobaczył nazwę pliku",
|
|
715
|
+
"flow.kind.reached.named": "Wspomniał plik w poleceniu",
|
|
716
|
+
"wrote.blank.other": "Wcześniejsze wypowiedzi zapisano bez ich treści ({n}).",
|
|
717
|
+
"wrote.covers.other": "Ta wypowiedź poprzedzała kilka działań ({n}), nie tylko to jedno.",
|
|
718
|
+
"flow.records.other": "Gdzie w zapisie",
|
|
719
|
+
"flow.reached.value": "{did} pokazał mu ten sam tekst, co w {files}.",
|
|
720
|
+
"return.report.other": "W jego odpowiedzi ({length} znaków) nie znaleziono tekstu z wrażliwych plików.",
|
|
721
|
+
// plain-report: the answer first, in words a first-time reader needs no glossary for.
|
|
722
|
+
"verdict.seen.one": "Agent widział <em>zawartość wrażliwego pliku.</em>",
|
|
723
|
+
"verdict.seen.few": "{n} agenci widzieli <em>zawartość wrażliwych plików.</em>",
|
|
724
|
+
"verdict.seen.many": "{n} agentów widziało <em>zawartość wrażliwych plików.</em>",
|
|
725
|
+
"lead.seen.who": "Kto: {agents}.",
|
|
726
|
+
"lead.seen.files": "Pliki: {files}.",
|
|
727
|
+
"lead.seen.passed": "Przekazane innemu agentowi przez: {agents}.",
|
|
728
|
+
"lead.seen.saved": "Zapisane w plikach przez: {agents}.",
|
|
729
|
+
"lead.seen.next": "Jeśli te pliki zawierają prawdziwe hasła lub klucze, zmień je.",
|
|
730
|
+
'stat.keys.one': 'możliwy klucz', 'stat.keys.few': 'możliwe klucze', 'stat.keys.many': 'możliwych kluczy',
|
|
731
|
+
'stat.files.one': 'pasujący plik', 'stat.files.few': 'pasujące pliki', 'stat.files.many': 'pasujących plików',
|
|
732
|
+
'strip.title': 'Kto co zobaczył',
|
|
733
|
+
"tier.value.filter": "widział zawartość pliku",
|
|
734
|
+
"tier.value.chip": "Widział zawartość pliku",
|
|
735
|
+
"tier.value.row": "widział zawartość",
|
|
736
|
+
"tier.value.term": "<b>Widział zawartość</b>: ten sam tekst, co w tym pliku, trafił do rozmowy agenta.",
|
|
737
|
+
"legend.value": "widział zawartość",
|
|
738
|
+
"graph.seen.yes": "widział zawartość pliku",
|
|
739
|
+
"graph.seen.maybe": "możliwe hasło lub klucz",
|
|
740
|
+
"graph.seen.path": "widział tylko nazwę pliku",
|
|
741
|
+
"graph.seen.named": "nazwa pliku w poleceniu",
|
|
742
|
+
"graph.seen.unknown": "niepełny zapis",
|
|
743
|
+
"graph.seen.blocked": "zablokowano",
|
|
744
|
+
"graph.passed": "przekazał dalej",
|
|
745
|
+
"graph.saved": "zapisał w pliku",
|
|
746
|
+
"seen.question": "Czy agent widział zawartość wrażliwego pliku?",
|
|
747
|
+
"seen.word.yes": "Tak",
|
|
748
|
+
"seen.word.maybe": "Możliwe",
|
|
749
|
+
"seen.word.path": "Nie",
|
|
750
|
+
"seen.word.named": "Nie widać",
|
|
751
|
+
"seen.word.unknown": "Nie wiadomo",
|
|
752
|
+
"seen.word.blocked": "Nie",
|
|
753
|
+
"seen.word.no": "Nie",
|
|
754
|
+
"seen.word.empty": "Nie wiadomo",
|
|
755
|
+
"seen.says.yes": "Do jego rozmowy trafił ten sam tekst, co w {files}.",
|
|
756
|
+
"seen.says.yes.bare": "Do jego rozmowy trafił tekst z wrażliwego pliku.",
|
|
757
|
+
"seen.says.maybe": "Zobaczył tekst, który wygląda jak hasło lub klucz. Może to też być przykład.",
|
|
758
|
+
"seen.says.path": "Widział tylko nazwę {files}, nie zawartość.",
|
|
759
|
+
"seen.says.path.bare": "Widział tylko nazwę wrażliwego pliku, nie zawartość.",
|
|
760
|
+
"seen.says.named": "Polecenie wspomniało {files}, ale zawartość pliku nie wróciła do agenta.",
|
|
761
|
+
"seen.says.named.bare": "Polecenie wspomniało wrażliwy plik, ale jego zawartość nie wróciła do agenta.",
|
|
762
|
+
"seen.says.unknown": "Brakuje części zapisu, więc nie da się tego stwierdzić.",
|
|
763
|
+
"seen.says.blocked": "Próbował sięgnąć po {files}, ale to zablokowano.",
|
|
764
|
+
"seen.says.blocked.bare": "Próbował sięgnąć po wrażliwy plik, ale to zablokowano.",
|
|
765
|
+
"seen.says.no": "Nic nie wskazuje, że dotykał wrażliwych plików.",
|
|
766
|
+
"seen.says.empty": "Działania tego agenta nie zostały zapisane.",
|
|
767
|
+
"seen.row.passed": "Przekazał go innemu agentowi",
|
|
768
|
+
"seen.row.saved": "Zapisał go w pliku",
|
|
769
|
+
"seen.row.chat": "Napisał go w swoich wiadomościach",
|
|
770
|
+
"seen.row.command": "Użył go w poleceniu",
|
|
771
|
+
"yn.yes": "Tak",
|
|
772
|
+
"yn.no": "Nie",
|
|
773
|
+
"yn.unknown": "Nie wiadomo",
|
|
774
|
+
"seen.next.yes": "Jeśli ten plik zawiera prawdziwe hasła lub klucze, zmień je.",
|
|
775
|
+
"seen.next.maybe": "Sprawdź, czy to prawdziwe hasło lub klucz. Jeśli tak, zmień je.",
|
|
776
|
+
"seen.next.path": "Nic pilnego. Agent wie tylko, że taki plik istnieje.",
|
|
777
|
+
"seen.next.named": "W szczegółach poniżej zobaczysz, co zrobiło polecenie.",
|
|
778
|
+
"seen.next.unknown": "W szczegółach poniżej zobaczysz, czego brakuje.",
|
|
779
|
+
"seen.next.blocked": "Nic nie trzeba robić. Blokada zadziałała.",
|
|
780
|
+
"seen.next.no": "Nic nie trzeba robić.",
|
|
781
|
+
"seen.next.empty": "Sprawdź, czy agentwhy ma dostęp do zapisu tego agenta.",
|
|
782
|
+
"seen.chip.yes": "Widział zawartość pliku",
|
|
783
|
+
"seen.chip.maybe": "Możliwe hasło lub klucz",
|
|
784
|
+
"seen.chip.path": "Widział tylko nazwę pliku",
|
|
785
|
+
"seen.chip.named": "Nazwa pliku w poleceniu",
|
|
786
|
+
"seen.chip.unknown": "Niepełny zapis",
|
|
787
|
+
"seen.chip.blocked": "Zablokowano",
|
|
788
|
+
"seen.chip.no": "Nic nie znaleziono",
|
|
789
|
+
"seen.chip.empty": "Brak zapisu",
|
|
790
|
+
"seen.incomplete": "Brakuje części zapisu, więc ta odpowiedź może być niepełna.",
|
|
791
|
+
"seen.help": "Skąd to wiadomo?",
|
|
792
|
+
"seen.helpText": "Wrażliwy plik to plik pasujący do reguł tej analizy, np. <code>.env</code>. Nie znaczy to, że dostęp do niego był zablokowany. agentwhy porównuje tekst: jeśli ten sam tekst jest w takim pliku i w rozmowie agenta, to agent ten tekst widział. Sam tekst nigdy nie jest pokazywany w raporcie.",
|
|
793
|
+
"target.notSeen": "Agenci widzieli lub używali tylko jego nazwy. Zawartość nie wróciła.",
|
|
794
|
+
"target.unknown": "Brakuje części zapisu, więc nie wiadomo, czy któryś agent widział zawartość.",
|
|
795
|
+
"target.blocked": "Każdą próbę dostępu do niego zablokowano.",
|
|
796
|
+
"next.value": "Jeśli ten plik zawiera prawdziwe hasła lub klucze, zmień je.",
|
|
797
|
+
"story.value": "Agent widział zawartość tego pliku.",
|
|
798
|
+
"lead.notBack": "Ich zawartość nie wróciła do agentów.",
|
|
799
|
+
"target.seen.one": "Zawartość tego pliku widział {n} agent.",
|
|
800
|
+
"target.seen.few": "Zawartość tego pliku widzieli {n} agenci.",
|
|
801
|
+
"target.seen.many": "Zawartość tego pliku widziało {n} agentów.",
|
|
802
|
+
"target.seen.other": "Zawartość tego pliku widzieli {n} agenci.",
|
|
803
|
+
"lead.seen.more": "i {n} więcej",
|
|
804
|
+
"index.incomplete": "zapis niepełny",
|
|
805
|
+
};
|
|
806
|
+
const DE = {
|
|
807
|
+
'quote.open': '\u201E', 'quote.close': '\u201C',
|
|
808
|
+
'lang.aria': 'Sprache des Berichts',
|
|
809
|
+
'bar.analysis': 'Sitzungsanalyse',
|
|
810
|
+
'bar.session': 'Sitzung <code>{id}</code>',
|
|
811
|
+
'bar.agents.one': '{n} Agent', 'bar.agents.other': '{n} Agenten',
|
|
812
|
+
'bar.actions.one': '{n} Aktion', 'bar.actions.other': '{n} Aktionen',
|
|
813
|
+
'bar.record': 'Aufzeichnung: {state}',
|
|
814
|
+
'bar.policy': "Analyseregel: {level}", 'bar.policyDefault': ' (Standard)',
|
|
815
|
+
'bar.unknowns': 'Was wir nicht wissen',
|
|
816
|
+
'rail.nav': 'Abschnitte dieser Seite',
|
|
817
|
+
'tab.summary': 'Zusammenfassung', 'tab.steps': 'Schritt für Schritt', 'tab.evidence': 'Belege',
|
|
818
|
+
'tab.group': 'Was dieser Agent getan hat',
|
|
819
|
+
'side.nav': 'Zurück zur Sitzungsliste',
|
|
820
|
+
'side.record': 'Aufzeichnung',
|
|
821
|
+
'rail.sessions': 'Sitzungen',
|
|
822
|
+
'record.complete': 'vollständig', 'record.partial': 'teilweise', 'record.unresolved': 'ein Teil der Daten ließ sich nicht zuordnen',
|
|
823
|
+
'files.one': '{n} geschützte Datei', 'files.other': '{n} geschützte Dateien',
|
|
824
|
+
"verdict.result": "<em>Die Agenten sahen Namen sensibler Dateien.</em>",
|
|
825
|
+
'verdict.them.one': 'sie', 'verdict.them.other': 'sie',
|
|
826
|
+
'verdict.appeared.one': 'erschien', 'verdict.appeared.other': 'erschienen',
|
|
827
|
+
"verdict.mixed": "<em>Die Agenten sahen oder nutzten Namen sensibler Dateien.</em>",
|
|
828
|
+
"verdict.named": "<em>Agenten griffen nach sensiblen Dateien.</em>",
|
|
829
|
+
'verdict.were.one': 'wurde', 'verdict.were.other': 'wurden',
|
|
830
|
+
"verdict.blocked": "Kein Agent kam an eine sensible Datei — <em>{n} {attempts} blockiert</em>.",
|
|
831
|
+
'verdict.attempts.one': 'Versuch wurde', 'verdict.attempts.other': 'Versuche wurden',
|
|
832
|
+
"verdict.signals": "<em>Ein Ergebnis enthält etwas, das wie ein Passwort oder Schlüssel aussieht.</em>",
|
|
833
|
+
"verdict.incomplete": "<em>Das lässt sich nicht sagen</em> — ein Teil der Aufzeichnung fehlt.",
|
|
834
|
+
"verdict.clear": "Nichts deutet darauf hin, dass Agenten sensible Dateien gesehen haben.",
|
|
835
|
+
"lead.incompleteCount.one": "Ein Teil der Aufzeichnung fehlt. Aktionen ohne Ergebnis: {n}.",
|
|
836
|
+
"lead.incompleteCount.other": "Ein Teil der Aufzeichnung fehlt. Aktionen ohne Ergebnis: {n}.",
|
|
837
|
+
"lead.incomplete": "Ein Teil der Aufzeichnung fehlt.",
|
|
838
|
+
'lead.noDelegations': 'Für die Hilfsagenten fehlt der Auftrag — ihre Aktionen sind da, ihr Auftrag nicht.',
|
|
839
|
+
'lead.noGuarantee': 'Das ist keine Garantie, dass nichts offengelegt wurde.',
|
|
840
|
+
"lead.hint": "Klicke auf einen Agenten für Details.",
|
|
841
|
+
"verdict.show": "Zeigen:",
|
|
842
|
+
'filter.title': 'Klicken, um ein- oder auszublenden',
|
|
843
|
+
"tier.hit.filter": "sah nur Dateinamen", "tier.hit.chip": "Dateiname im Ergebnis", "tier.hit.row": "sah nur den Namen",
|
|
844
|
+
"tier.hit.term": "<b>Sah nur den Namen</b>: Ein Ergebnis zeigte den Dateinamen. Der Inhalt kam nicht zurück.",
|
|
845
|
+
"tier.secret.filter": "mögliches Passwort oder Schlüssel", "tier.secret.chip": "Mögliches Passwort oder Schlüssel", "tier.secret.row": "mögliches Passwort oder Schlüssel",
|
|
846
|
+
"tier.secret.term": "<b>Mögliches Passwort oder Schlüssel</b>: Text, der so aussieht. Es kann ein Beispiel sein. Der Text wird hier nie gezeigt.",
|
|
847
|
+
"tier.named.filter": "Dateiname im Befehl", "tier.named.chip": "Dateiname im Befehl", "tier.named.row": "im Befehl genannt",
|
|
848
|
+
"tier.named.term": "<b>Im Befehl genannt</b>: Ein Befehl nannte die Datei, aber ihr Inhalt kam nicht zurück.",
|
|
849
|
+
"tier.unknown.filter": "unvollständig", "tier.unknown.chip": "Aufzeichnung unvollständig", "tier.unknown.row": "unvollständig",
|
|
850
|
+
"tier.unknown.term": "<b>Unvollständig</b>: Für eine Aktion fehlt das Ergebnis, daher ist unklar, was passiert ist.",
|
|
851
|
+
"tier.block.filter": "blockiert", "tier.block.chip": "Blockiert", "tier.block.row": "blockiert",
|
|
852
|
+
"tier.block.term": "<b>Blockiert</b>: Der Versuch wurde abgelehnt und lieferte nichts.",
|
|
853
|
+
"tier.clean.filter": "nichts gefunden", "tier.clean.chip": "Nichts gefunden", "tier.clean.row": "nichts gefunden",
|
|
854
|
+
"tier.clean.term": "<b>Nichts gefunden</b>: Nichts in der Aufzeichnung dieses Agenten betraf sensible Dateien. Fehlende Ergebnisse können trotzdem etwas verbergen.",
|
|
855
|
+
"strip.hint": "Klicke auf einen Agenten oder eine Datei.",
|
|
856
|
+
'work.title': 'Wer was gesehen hat',
|
|
857
|
+
'work.lead': 'Wähle einen Agenten oder eine Datei, um zu sehen, was passiert ist.',
|
|
858
|
+
'work.mapNote': 'Übereinstimmender Text kann auf mehrere Dateien zeigen. Er beweist nicht, welche Datei geöffnet wurde.',
|
|
859
|
+
'work.tableAgent': 'Agent',
|
|
860
|
+
'work.shown': '{shown} von {total} Agenten angezeigt',
|
|
861
|
+
'foot.local': 'Auf deinem Rechner verarbeitet. Nichts wurde gesendet.',
|
|
862
|
+
'foot.after': 'Eine Analyse einer vergangenen Sitzung. Sie hat nichts blockiert.',
|
|
863
|
+
'view.aria': 'Ansicht', 'view.graph': 'Graph', 'view.list': 'Liste',
|
|
864
|
+
'col.you': 'Du', 'col.main': 'Hauptagent', 'col.mainShort': 'Haupt',
|
|
865
|
+
'col.agents': 'Hilfsagenten', 'col.agentsShort': 'Helfer',
|
|
866
|
+
"col.targets": "Sensible Dateien", 'col.targetsShort': 'Dateien',
|
|
867
|
+
'graph.aria': 'Sitzungsgraph: wer was beauftragt hat, wer was tat und was dabei berührt wurde',
|
|
868
|
+
'graph.you': 'Du — hier beginnt die Sitzung',
|
|
869
|
+
"graph.clean": "nichts gefunden", 'graph.cleanSub': 'eingeklappt — klicken, um sie zu sehen', "graph.cleanAria": "Agenten ohne Funde",
|
|
870
|
+
'graph.gap': 'Auftrag ohne Agent', 'graph.gapSub': 'keine Beschreibung aufgezeichnet',
|
|
871
|
+
'graph.targetAgents.one': '{n} Agent', 'graph.targetAgents.other': '{n} Agenten',
|
|
872
|
+
"legend.delegated": "hat beauftragt", "legend.hit": "nur Name", "legend.secret": "mögliches Passwort",
|
|
873
|
+
"legend.named": "im Befehl genannt", "legend.unknown": "unvollständig", "legend.block": "blockiert", "legend.unresolved": "Auftraggeber unbekannt",
|
|
874
|
+
'list.aria': 'Agenten der Sitzung, die schwerwiegendsten zuerst',
|
|
875
|
+
'list.more': '<u><span data-count></span> Agenten ohne Treffer</u> anzeigen',
|
|
876
|
+
'list.mainTask': 'Führt die Sitzung und verteilt Aufgaben', 'list.unknownTask': 'Auftrag nicht ermittelt', 'list.noDescription': 'Keine Beschreibung aufgezeichnet',
|
|
877
|
+
'list.gapOut': 'Ausführender nicht ermittelt',
|
|
878
|
+
'panel.back': 'Zurück zu: ',
|
|
879
|
+
'panel.agentSub.main': 'führt die Sitzung und verteilt Aufgaben', 'panel.agentSub.helper': "Hilfsagent",
|
|
880
|
+
'step.asked': 'Was beauftragt wurde', 'step.did': 'Was er tat', "step.result": "Was dabei herauskam",
|
|
881
|
+
"panel.next": "Was tun", 'panel.what': 'Was ist das?', 'panel.evidence': "Auftrag aufgezeichnet unter: {evidence}",
|
|
882
|
+
"asked.note": "Der Auftrag, wie er in der Sitzung steht.",
|
|
883
|
+
'asked.main': 'Der Hauptagent arbeitet aus deinem Gespräch heraus. Dieser Bericht zitiert es nicht.',
|
|
884
|
+
'asked.noDescription': 'Der Auftrag steht in der Aufzeichnung, aber ohne Beschreibung.',
|
|
885
|
+
'asked.unresolved': 'Wir kennen den Auftrag dieses Agenten nicht — der Aufruf, der ihn gestartet hat, fehlt in der Aufzeichnung.',
|
|
886
|
+
'did.none': 'Keine Aktionen aufgezeichnet. Das bestätigt nicht, dass der Agent nichts getan hat.',
|
|
887
|
+
'did.noStories.one': '{n} Aktion aufgezeichnet. Keine davon betraf einen geschützten Pfad.',
|
|
888
|
+
'did.noStories.other': '{n} Aktionen aufgezeichnet. Keine davon betraf einen geschützten Pfad.',
|
|
889
|
+
'did.used': 'Nutzte <b>{did}</b>. {note}',
|
|
890
|
+
'wrote.head.reasoning': "Notiz des Agenten vor dieser Aktion",
|
|
891
|
+
'wrote.head.said': "Nachricht des Agenten vor dieser Aktion",
|
|
892
|
+
'wrote.covers.one': "Diese Worte standen vor {n} Aktion.",
|
|
893
|
+
'wrote.covers.other': "Diese Worte standen vor {n} Aktionen, nicht nur vor dieser.",
|
|
894
|
+
'wrote.none': "Für diese Aktion wurde keine vorherige Nachricht aufgezeichnet.",
|
|
895
|
+
'wrote.blank.one': "Die vorherige Nachricht wurde ohne ihren Text aufgezeichnet.",
|
|
896
|
+
'wrote.blank.other': "Die vorherigen Nachrichten wurden ohne ihren Text aufgezeichnet ({n}).",
|
|
897
|
+
'wrote.carried': "Der vorherige Text enthielt Daten, die auch in {files} vorkommen. Wir blenden diesen Text aus.",
|
|
898
|
+
'wrote.cut': 'Nach den ersten {n} Zeichen abgeschnitten.',
|
|
899
|
+
'wrote.size': 'Er schrieb vor diesem Aufruf {n} Zeichen; diese Ansicht zeigt sie nicht.',
|
|
900
|
+
"result.link": "Diese Datei ansehen →",
|
|
901
|
+
"result.signals": "Ein Ergebnis enthält etwas, das wie ein Passwort oder Schlüssel aussieht. Der Text ist verborgen.",
|
|
902
|
+
"result.signalsLink": "Alle möglichen Passwörter und Schlüssel →",
|
|
903
|
+
'result.clean': 'Kein Kontakt mit geschützten Dateien gefunden. Das bestätigt nicht die Sicherheit der ganzen Sitzung.',
|
|
904
|
+
"return.value": "Seine Antwort an den auftraggebenden Agenten enthielt denselben Text wie {files}.",
|
|
905
|
+
"return.crossed": "Derselbe Text wie {files} erreichte den auftraggebenden Agenten. Seine Antwort ist nicht in dieser Aufzeichnung, ihr Wortlaut lässt sich also nicht zeigen.",
|
|
906
|
+
"return.path": "Seine Antwort nannte {files}, ohne Inhalt.",
|
|
907
|
+
"return.report.one": "In seiner Antwort ({length} Zeichen) wurde kein Text aus sensiblen Dateien gefunden.",
|
|
908
|
+
"return.report.other": "In seiner Antwort ({length} Zeichen) wurde kein Text aus sensiblen Dateien gefunden.",
|
|
909
|
+
"return.unknown": "Seine Antwort fehlt oder ist unlesbar.",
|
|
910
|
+
"return.awaited": "Er lief im Hintergrund. Seine Antwort fehlt in der Aufzeichnung.",
|
|
911
|
+
"return.written": "In seinen eigenen Nachrichten schrieb er denselben Text wie {files}.",
|
|
912
|
+
"use.file": "Derselbe Text wie in {files} wurde in {targets} geschrieben.",
|
|
913
|
+
"use.fileProtected": "Derselbe Text wie in {files} wurde in die sensible Datei {targets} geschrieben.",
|
|
914
|
+
"use.command": "Ein Befehl{programs} enthielt denselben Text wie {files}.",
|
|
915
|
+
"use.commit": "Ein Commit{programs} enthielt denselben Text wie {files}.",
|
|
916
|
+
"use.delegation": "Ein Auftrag für einen anderen Agenten enthielt denselben Text wie {files}.",
|
|
917
|
+
"use.said": "Eine Nachricht enthielt denselben Text wie {files}.",
|
|
918
|
+
"use.reasoning": "Die Notizen des Agenten enthielten denselben Text wie {files}.",
|
|
919
|
+
"use.call": "Ein Werkzeugaufruf enthielt denselben Text wie {files}.",
|
|
920
|
+
"use.source.none": "Frühere Schritte zeigen nicht, woher der Agent ihn hatte.",
|
|
921
|
+
"use.file.same": "Der Text wurde in {targets} geschrieben.",
|
|
922
|
+
"use.fileProtected.same": "Der Text wurde in die sensible Datei {targets} geschrieben.",
|
|
923
|
+
"use.command.same": "Ein Befehl{programs} enthielt den Text.",
|
|
924
|
+
"use.commit.same": "Ein Commit{programs} enthielt den Text.",
|
|
925
|
+
"use.delegation.same": "Ein Auftrag für einen anderen Agenten enthielt den Text.",
|
|
926
|
+
"use.said.same": "Eine Nachricht enthielt den Text.",
|
|
927
|
+
"use.reasoning.same": "Die Notizen des Agenten enthielten den Text.",
|
|
928
|
+
"use.call.same": "Ein Werkzeugaufruf enthielt den Text.",
|
|
929
|
+
'flow.dialog': 'Was geschah, Schritt für Schritt',
|
|
930
|
+
'flow.close': 'Schließen',
|
|
931
|
+
"flow.kind.asked": "Bekam einen Auftrag",
|
|
932
|
+
'flow.kind.reached.succeeded': 'Erreichte eine geschützte Datei', "flow.kind.reached.blocked": "Wurde blockiert", "flow.kind.reached.unknown": "Ergebnis unbekannt",
|
|
933
|
+
"flow.kind.carried": "Sah denselben Text in einer anderen Datei",
|
|
934
|
+
"flow.kind.used.file": "Schrieb den Text in eine Datei", "flow.kind.used.command": "Nutzte den Text in einem Befehl", "flow.kind.used.delegation": "Gab den Text an einen anderen Agenten",
|
|
935
|
+
"flow.kind.used.said": "Schrieb den Text in eine Nachricht", "flow.kind.used.reasoning": "Schrieb den Text in seine Notizen", "flow.kind.used.call": "Gab den Text an ein Werkzeug",
|
|
936
|
+
"flow.kind.delegated": "Startete einen anderen Agenten", "flow.kind.returned": "Antwortete",
|
|
937
|
+
"flow.kind.received": "Bekam den Dateiinhalt",
|
|
938
|
+
"flow.asked": "{by} bat: {asked}",
|
|
939
|
+
'flow.askedBare': '{by} startete ihn, und keine Beschreibung wurde aufgezeichnet.',
|
|
940
|
+
"flow.reached.result": "{did} zeigte den Namen {files}, nicht den Inhalt.",
|
|
941
|
+
"flow.reached.input": "Führte {did} mit {files} aus. Der Inhalt kam nicht zurück.",
|
|
942
|
+
"flow.reached.printed": "Führte {did} mit {files} aus. Wir sehen, was der Befehl ausgab, aber nicht, wie viel davon bei der KI ankam.",
|
|
943
|
+
"flow.received": "Code, den er schrieb, gab ihm denselben Text wie in {files}. Der Text kam aus diesem Code, nicht aus einer seiner Aktionen.",
|
|
944
|
+
"flow.reached.blocked": "Versuchte {did} auf {files}, das wurde blockiert.",
|
|
945
|
+
"flow.reached.unknown": "Führte {did} auf {files} aus, aber das Ergebnis fehlt.",
|
|
946
|
+
"flow.carried": "{did} zeigte denselben Text in {named}, die nicht als sensibel markiert ist.",
|
|
947
|
+
"flow.carriedBare": "{did} zeigte denselben Text. Aus welcher Datei, ist unklar.",
|
|
948
|
+
"flow.after": "(Der Agent hatte diesen Text in Schritt {n} gesehen.)",
|
|
949
|
+
"flow.openOther": "Schritte öffnen: {name}",
|
|
950
|
+
'flow.someAgent': 'ein Agent, den dieser Bericht nicht enthält',
|
|
951
|
+
"flow.records.one": "Wo in der Aufzeichnung", "flow.records.other": "Wo in der Aufzeichnung",
|
|
952
|
+
'tldr.valueWrittenOn': ' Er schrieb einen Wert aus einer geschützten Datei in nicht geschützte Dateien.',
|
|
953
|
+
'files.or': ' oder ',
|
|
954
|
+
'tldr.valueReturned': ' Seine Antwort enthielt einen Wert aus einer geschützten Datei und erreichte den Agenten, der ihn gestartet hat.',
|
|
955
|
+
'tldr.valueWritten': ' Er schrieb einen Wert aus einer geschützten Datei in seine eigenen Nachrichten, die das Transkript der Sitzung aufbewahrt.',
|
|
956
|
+
'tldr.hit': '{name} nutzte <b>{did}</b>. Der Pfad {path} erschien im Ergebnis, obwohl der Aufruf ihn nicht genannt hat.',
|
|
957
|
+
'tldr.named': '{name} nannte {path} in einem <b>{did}</b>-Aufruf. Der Aufruf lief; die Aufzeichnung zeigt nicht, ob der Inhalt der Datei im Ergebnis stand.',
|
|
958
|
+
'tldr.unknown': '{name} nutzte <b>{did}</b> bei {path}, aber die Aufzeichnung enthält kein gesichertes Ergebnis.',
|
|
959
|
+
'tldr.block': '{name} versuchte, {path} zu erreichen (<b>{did}</b>). Die Aufzeichnung bestätigt die Verweigerung.',
|
|
960
|
+
'tldr.more.one': ' Insgesamt {n} Ereignis an geschützten Pfaden.', 'tldr.more.other': ' Insgesamt {n} Ereignisse an geschützten Pfaden.',
|
|
961
|
+
'tldr.alsoSignals.one': ' {n} Ergebnis enthält außerdem einen Hinweis auf ein mögliches Geheimnis.',
|
|
962
|
+
'tldr.alsoSignals.other': ' {n} Ergebnisse enthalten außerdem Hinweise auf mögliche Geheimnisse.',
|
|
963
|
+
'tldr.onlySignals.one': '{name}: {n} Werkzeugergebnis enthält einen Hinweis auf ein mögliches Geheimnis. Die Werte sind verborgen.',
|
|
964
|
+
'tldr.onlySignals.other': '{name}: {n} Werkzeugergebnisse enthalten Hinweise auf mögliche Geheimnisse. Die Werte sind verborgen.',
|
|
965
|
+
'tldr.actions.one': '{name} führte {n} Aktion aus. Keine davon betraf eine geschützte Datei.',
|
|
966
|
+
'tldr.actions.other': '{name} führte {n} Aktionen aus. Keine davon betraf eine geschützte Datei.',
|
|
967
|
+
'tldr.noActions': 'Die Aufzeichnung enthält keine einzige Aktion dieses Agenten.',
|
|
968
|
+
'tldr.unknownActions.one': ' {n} Aktion hat kein gesichertes Ergebnis.', 'tldr.unknownActions.other': ' {n} Aktionen haben kein gesichertes Ergebnis.',
|
|
969
|
+
"story.blocked": "Dieser Versuch wurde blockiert.", "story.unknown": "Ein Versuch ist sichtbar, sein Ergebnis nicht.",
|
|
970
|
+
"story.result": "Ein Ergebnis zeigte den Namen einer sensiblen Datei.", "story.input": "Ein Befehl nannte eine sensible Datei und lief.",
|
|
971
|
+
"source.result": "Der Befehl fragte nicht nach dieser Datei; ihr Name tauchte im Ergebnis auf.",
|
|
972
|
+
"source.input": "Die Datei wurde im Befehl genannt.",
|
|
973
|
+
'story.occurrences.one': '{n} Vorkommen', 'story.occurrences.other': '{n} Vorkommen',
|
|
974
|
+
'story.evidence': 'Beleg: <code>{evidence}</code>', 'story.link': 'Link zum Ereignis #{n}',
|
|
975
|
+
"agent.stories": "Dateiereignisse ({n})",
|
|
976
|
+
"agent.shapes": "Mögliche Passwörter oder Schlüssel ({n})", 'agent.actions': 'Alle Aktionen ({n})',
|
|
977
|
+
'missing.chip': 'Keine Zuordnung', 'missing.title': 'Auftrag ohne ermittelten Agenten', 'missing.sub': 'Auftrag {id}',
|
|
978
|
+
'missing.tldr': 'Der Auftrag ist sichtbar, aber wir wissen nicht, welcher Agent ihn ausgeführt hat. Wir schreiben ihm keine fremden Aktionen zu.',
|
|
979
|
+
'missing.description': 'Aufgezeichnete Beschreibung', 'missing.none': 'Keine Beschreibung aufgezeichnet.',
|
|
980
|
+
"target.why": "Warum sie als sensibel gilt",
|
|
981
|
+
"target.whyPatterns.one": "Sie passt auf die Regel {patterns}.",
|
|
982
|
+
"target.whyPatterns.other": "Sie passt auf die Regeln {patterns}.",
|
|
983
|
+
"target.whyPolicy": "Sie passt auf die Regeln dieser Analyse.",
|
|
984
|
+
"target.whyNote": "Das heißt nicht, dass sie wirklich Passwörter enthält.",
|
|
985
|
+
"target.who": "Wer sie berührt hat ({n})",
|
|
986
|
+
"signal.title": "Mögliche Passwörter oder Schlüssel", "signal.name": "Mögliche Passwörter oder Schlüssel",
|
|
987
|
+
'signal.sub.one': '{n} Ergebnis · Werte verborgen', 'signal.sub.other': '{n} Ergebnisse · Werte verborgen',
|
|
988
|
+
"signal.tldr.one": "Ergebnisse, die wie ein Passwort oder Schlüssel aussehen: {n}. Der Text ist verborgen.",
|
|
989
|
+
"signal.tldr.other": "Ergebnisse, die wie ein Passwort oder Schlüssel aussehen: {n}. Der Text ist verborgen.",
|
|
990
|
+
'signal.kinds': 'Arten von Hinweisen', 'signal.who': 'Wer es gesehen hat', 'signal.all': 'Alle Hinweise und Belege ({n})',
|
|
991
|
+
'signal.results.one': '{n} Ergebnis', 'signal.results.other': '{n} Ergebnisse',
|
|
992
|
+
'ty.chip': 'Beginn der Sitzung', 'ty.title': 'Du',
|
|
993
|
+
'ty.tldr': 'Die Sitzung begann mit deinem Gespräch mit dem Hauptagenten. Die Aufzeichnung enthält {agents}, {delegations} und {actions}.',
|
|
994
|
+
'ty.delegations.one': '{n} Auftrag', 'ty.delegations.other': '{n} Aufträge',
|
|
995
|
+
'ty.next': 'Was danach geschah',
|
|
996
|
+
'clean.title.one': '{n} Agent ohne Treffer', 'clean.title.other': '{n} Agenten ohne Treffer',
|
|
997
|
+
'clean.sub': 'zusammen {actions}',
|
|
998
|
+
'clean.tldr': 'Diese Agenten berührten keinen geschützten Pfad und sahen kein mögliches Geheimnis. Im Graphen sind sie zu einem Element eingeklappt, bis der Filter „nichts erreicht“ an ist.',
|
|
999
|
+
'clean.empty': 'Diese Sitzung hat keine Hilfsagenten ohne Treffer.', 'clean.who': 'Wer das ist',
|
|
1000
|
+
'scope.chip': 'Regel und Umfang', 'scope.title': 'Nach welcher Regel entstand dieser Bericht?',
|
|
1001
|
+
'scope.sub': 'Sitzung <code>{id}</code> · Aufzeichnung: {state}',
|
|
1002
|
+
'scope.noRead': 'geschützte Ressourcen dürfen weder gelesen noch durchsucht werden.',
|
|
1003
|
+
'scope.noDisclose': 'Lesen ist erlaubt; Werte dürfen nicht offengelegt werden.',
|
|
1004
|
+
'scope.other': 'siehe die Quelle der Regel unten.',
|
|
1005
|
+
'scope.origin': 'Woher die Regel stammt',
|
|
1006
|
+
'scope.patterns.one': '{n} Schutzmuster', 'scope.patterns.other': '{n} Schutzmuster',
|
|
1007
|
+
'scope.exceptions.one': '{n} Ausnahme', 'scope.exceptions.other': '{n} Ausnahmen',
|
|
1008
|
+
'scope.counts': '{patterns} · {exceptions}. Ein passender Pfad ist ein Hinweis zum Prüfen, kein fertiges Urteil über einen Verstoß.',
|
|
1009
|
+
'scope.builtIn': '<b>Das ist die eingebaute Standardregel.</b> Es wurde keine eigene Regeldatei übergeben. Der Bericht rekonstruiert nicht den Schutz, der zum Zeitpunkt des Ereignisses aktiv war.',
|
|
1010
|
+
'scope.privacy': 'Privatsphäre', 'scope.privacyText': 'Die Analyse ist lokal und läuft im Nachhinein. Vollständige Prompts, Befehle und Ergebnisse gelangen nicht in den Bericht; Pfade, Aufgabenbeschreibungen und gekürzte Kennungen sind sichtbar. Geheime Werte werden vor dem Schreiben der Datei verborgen.',
|
|
1011
|
+
'side.local': 'Auf deinem Rechner', 'side.localSub': 'Nichts wird hochgeladen. Nichts wird gemessen.',
|
|
1012
|
+
'index.notices.notify.chat,terminal': 'Und im Terminal',
|
|
1013
|
+
'index.notices.notify.chat,os': 'Und als Mitteilung',
|
|
1014
|
+
'table.expand': 'Diese Tabelle in voller Breite öffnen', 'table.dialog': 'Tabelle in voller Breite', 'table.close': 'Tabelle schließen',
|
|
1015
|
+
'scope.paths': 'Wie Pfade dargestellt werden',
|
|
1016
|
+
'scope.pathsFull': 'Pfade werden so gezeigt, wie sie geschrieben wurden — relativ zum Projektstamm, sofern sie darunter liegen.',
|
|
1017
|
+
'scope.pathsShared': '<b>Dies ist ein Bericht zum Weitergeben.</b> Nichts oberhalb des Projektstamms erscheint darin. Das verringert die Offenlegung, anonymisiert aber nicht — ein Pfad innerhalb des Repositorys benennt weiterhin das, was das Repository benennt.',
|
|
1018
|
+
'scope.root.known': 'Der Projektstamm wurde aus der Sitzung gelesen, daher werden Pfade darunter relativ dazu gezeigt.',
|
|
1019
|
+
'scope.root.absent': 'Keine Aufzeichnung trug einen Projektstamm, daher werden Pfade genau so gezeigt, wie sie geschrieben wurden.',
|
|
1020
|
+
'scope.root.absentShared': 'Keine Aufzeichnung trug einen Projektstamm, daher lässt sich nichts im Projekt verorten: jeder Pfad, der seinen Anfang nennt, wird als Kategorie gezeigt.',
|
|
1021
|
+
'scope.root.ambiguousShared': 'Die Sitzung hat {n} Arbeitsverzeichnisse aufgezeichnet, daher beschreibt sie kein einzelner Projektstamm und jeder Pfad, der seinen Anfang nennt, wird als Kategorie gezeigt.',
|
|
1022
|
+
'scope.root.ambiguous': 'Die Sitzung hat {n} Arbeitsverzeichnisse aufgezeichnet, daher beschreibt sie kein einzelner Projektstamm.',
|
|
1023
|
+
'scope.technical': 'Technische Details',
|
|
1024
|
+
'scope.ruleset': 'Redaktionsregeln', 'scope.redactions': 'Verborgene Vorkommen von Werten', 'scope.distinct': 'Verschiedene verborgene Werte',
|
|
1025
|
+
'scope.protected': 'Geschützte Inhalte', 'scope.missingClasses': 'Nicht umgesetzte Scannerklassen', 'scope.none': 'keine',
|
|
1026
|
+
'gaps.chipGaps': 'Die Aufzeichnung hat Lücken', 'gaps.chipClean': 'Keine Lücken gefunden', 'gaps.title': 'Was lässt sich nicht ermitteln?',
|
|
1027
|
+
'gaps.sub': 'Aufzeichnung: {state}',
|
|
1028
|
+
'gaps.tldr': 'Wir ermitteln weder die Absicht des Agenten noch den vollen Kontext seiner Anweisungen noch eine bestätigte Offenlegung eines Geheimnisses.',
|
|
1029
|
+
'gaps.record': 'Lücken in der Aufzeichnung', 'gaps.noneFound': 'In der Struktur der gelieferten Aufzeichnung wurden keine Lücken gefunden.',
|
|
1030
|
+
'gaps.unresolved': 'Agenten ohne ermittelten Auftrag ({n})', 'gaps.unresolvedNote': 'wir wissen nicht, wer ihn gestartet hat',
|
|
1031
|
+
'gaps.missing': 'Aufträge ohne ermittelten Agenten ({n})',
|
|
1032
|
+
'gaps.howToRead': 'Wie die Zahlen zu lesen sind',
|
|
1033
|
+
'gaps.howToReadText': 'Ein in einem Shell-Befehl genannter Pfad zählt als berührt — ein Teil davon sind Erwähnungen und kein Öffnen der Datei.',
|
|
1034
|
+
'gaps.unknownActions': 'Aktionen ohne gesichertes Ergebnis ({n})',
|
|
1035
|
+
'what.main': '<b>Der Hauptagent</b> ist der Assistent, mit dem du sprichst. Einen Teil der Arbeit macht er selbst, den Rest gibt er an Hilfsagenten ab.',
|
|
1036
|
+
'what.agent': "<b>Ein Hilfsagent</b> ist ein Assistent, den ein anderer Agent mit einer Aufgabe betraut. Seine Antwort kann Teil des Gesprächs des anderen Agenten werden.",
|
|
1037
|
+
'what.unresolved': '<b>Keine ermittelte Zuordnung</b>: Wir wissen nicht, wer diesen Agenten gestartet hat. Im Graphen hängt er mit gestrichelter Linie am Hauptagenten — das ist eine Anmerkung, keine ermittelte Tatsache.',
|
|
1038
|
+
"what.file": "<b>Eine sensible Datei</b> passt auf die Regeln dieser Analyse, etwa <code>.env</code>. Das heißt weder, dass der Zugriff blockiert war, noch, dass sie wirklich Passwörter enthält.",
|
|
1039
|
+
"limit": "Dieser Bericht zeigt, was die Aufzeichnung der Sitzung enthält. Er sagt nicht, was der Agent beabsichtigte oder ob Daten außerhalb dieser Sitzung weitergegeben wurden.",
|
|
1040
|
+
"next.hit": "Nichts Dringendes. Die Agenten sahen nur den Dateinamen.",
|
|
1041
|
+
"next.secret": "Prüfe, ob es ein echtes Passwort oder ein echter Schlüssel ist. Wenn ja, ändere es.",
|
|
1042
|
+
"next.named": "Öffne unten einen Agenten, um zu sehen, was der Befehl getan hat.",
|
|
1043
|
+
"next.unknown": "Öffne unten einen Agenten, um zu sehen, was fehlt.",
|
|
1044
|
+
"next.block": "Nichts zu tun. Die Sperre hat gegriffen.",
|
|
1045
|
+
"next.clean": "Nichts zu tun.",
|
|
1046
|
+
'outcome.succeeded': 'Ausgeführt', 'outcome.blocked': 'Abgelehnt', 'outcome.unknown': 'Kein gesichertes Ergebnis',
|
|
1047
|
+
'table.caption': 'Die Aktionen des Agenten in der Reihenfolge seiner Aufzeichnung',
|
|
1048
|
+
'table.step': 'Schritt', 'table.tool': 'Werkzeug', 'table.path': 'Geschützter Pfad', 'table.outcome': 'Ergebnis', 'table.evidence': 'Beleg',
|
|
1049
|
+
'table.notDetected': 'nicht erkannt', 'table.signal': 'Hinweis',
|
|
1050
|
+
'table.empty': 'Keine Aktionen aufgezeichnet. Das bestätigt nicht, dass der Agent nichts getan hat.',
|
|
1051
|
+
'skip': 'Zum Bericht springen',
|
|
1052
|
+
'title': 'agentwhy — was in Sitzung {id} geschah',
|
|
1053
|
+
"flow.delegated.value": "Startete {agent}. Dessen Antwort enthielt denselben Text wie {files}.",
|
|
1054
|
+
"flow.delegated.crossed": "Startete {agent}. Derselbe Text wie {files} kam von dort zurück; dessen Antwort ist nicht in dieser Aufzeichnung.",
|
|
1055
|
+
"flow.returned.crossed": "Derselbe Text wie {files} erreichte {agent}. Dessen Antwort ist nicht in dieser Aufzeichnung.",
|
|
1056
|
+
"flow.delegated.path": "Startete {agent}. Dessen Antwort nannte {files}, ohne Inhalt.",
|
|
1057
|
+
"flow.delegated.report": "Startete {agent}. In dessen Antwort wurde kein Text aus sensiblen Dateien gefunden.",
|
|
1058
|
+
"flow.delegated.unknown": "Startete {agent}. Dessen Antwort ließ sich nicht lesen.",
|
|
1059
|
+
"flow.delegated.awaited": "Startete {agent} im Hintergrund. Dessen Antwort fehlt in der Aufzeichnung.",
|
|
1060
|
+
"flow.returned.value": "Seine Antwort an {agent} enthielt denselben Text wie {files}.",
|
|
1061
|
+
"flow.returned.path": "Seine Antwort an {agent} nannte {files}, ohne Inhalt.",
|
|
1062
|
+
"flow.returned.report": "In seiner Antwort an {agent} wurde kein Text aus sensiblen Dateien gefunden.",
|
|
1063
|
+
"flow.returned.unknown": "Seine Antwort ließ sich nicht lesen.",
|
|
1064
|
+
"flow.returned.awaited": "Er lief im Hintergrund. Seine Antwort fehlt in der Aufzeichnung.",
|
|
1065
|
+
"flow.open": "Schritt für Schritt zeigen ({n})",
|
|
1066
|
+
'steps.how': 'Wie es dazu kam',
|
|
1067
|
+
'steps.count.one': '{n} Schritt', 'steps.count.other': '{n} Schritte',
|
|
1068
|
+
'steps.expand': 'Aufklappen',
|
|
1069
|
+
'steps.all': 'Alle {n} Schritte zeigen',
|
|
1070
|
+
'steps.dialog': 'Schritt für Schritt',
|
|
1071
|
+
'evidence.title': 'Worauf diese Antwort beruht',
|
|
1072
|
+
'evidence.lead': 'Nach Aktion gruppiert, mit den Aufzeichnungen, auf denen jede beruht.',
|
|
1073
|
+
"agent.evidence": "Details: Auftrag, Dateien, Belege",
|
|
1074
|
+
"wrote.open": "Was er kurz davor schrieb",
|
|
1075
|
+
"flow.kind.reached.value": "Sah den Dateiinhalt",
|
|
1076
|
+
"flow.kind.reached.path": "Sah einen Dateinamen",
|
|
1077
|
+
"flow.kind.reached.named": "Nannte eine Datei in einem Befehl",
|
|
1078
|
+
"wrote.blank.few": "Die vorherigen Nachrichten wurden ohne ihren Text aufgezeichnet ({n}).",
|
|
1079
|
+
"wrote.blank.many": "Die vorherigen Nachrichten wurden ohne ihren Text aufgezeichnet ({n}).",
|
|
1080
|
+
"wrote.covers.few": "Diese Worte standen vor {n} Aktionen, nicht nur vor dieser.",
|
|
1081
|
+
"wrote.covers.many": "Diese Worte standen vor {n} Aktionen, nicht nur vor dieser.",
|
|
1082
|
+
"flow.reached.value": "{did} zeigte ihm denselben Text wie in {files}.",
|
|
1083
|
+
"return.report.few": "In seiner Antwort ({length} Zeichen) wurde kein Text aus sensiblen Dateien gefunden.",
|
|
1084
|
+
"return.report.many": "In seiner Antwort ({length} Zeichen) wurde kein Text aus sensiblen Dateien gefunden.",
|
|
1085
|
+
// plain-report: the answer first, in words a first-time reader needs no glossary for.
|
|
1086
|
+
"verdict.seen.one": "Ein Agent hat <em>den Inhalt einer sensiblen Datei gesehen.</em>",
|
|
1087
|
+
"verdict.seen.other": "{n} Agenten haben <em>den Inhalt sensibler Dateien gesehen.</em>",
|
|
1088
|
+
"lead.seen.who": "Wer: {agents}.",
|
|
1089
|
+
"lead.seen.files": "Dateien: {files}.",
|
|
1090
|
+
"lead.seen.passed": "An einen anderen Agenten weitergegeben von: {agents}.",
|
|
1091
|
+
"lead.seen.saved": "In Dateien geschrieben von: {agents}.",
|
|
1092
|
+
"lead.seen.next": "Wenn diese Dateien echte Passwörter oder Schlüssel enthalten, ändere sie.",
|
|
1093
|
+
'stat.keys.one': 'möglicher Schlüssel', 'stat.keys.other': 'mögliche Schlüssel',
|
|
1094
|
+
'stat.files.one': 'übereinstimmende Datei', 'stat.files.other': 'übereinstimmende Dateien',
|
|
1095
|
+
'strip.title': 'Wer was gesehen hat',
|
|
1096
|
+
"tier.value.filter": "sah Dateiinhalt",
|
|
1097
|
+
"tier.value.chip": "Dateiinhalt gesehen",
|
|
1098
|
+
"tier.value.row": "sah den Inhalt",
|
|
1099
|
+
"tier.value.term": "<b>Sah den Inhalt</b>: Derselbe Text wie in dieser Datei ist im Gespräch des Agenten gelandet.",
|
|
1100
|
+
"legend.value": "sah Inhalt",
|
|
1101
|
+
"graph.seen.yes": "sah Dateiinhalt",
|
|
1102
|
+
"graph.seen.maybe": "mögliches Passwort",
|
|
1103
|
+
"graph.seen.path": "sah nur Dateinamen",
|
|
1104
|
+
"graph.seen.named": "Dateiname im Befehl",
|
|
1105
|
+
"graph.seen.unknown": "unvollständig",
|
|
1106
|
+
"graph.seen.blocked": "blockiert",
|
|
1107
|
+
"graph.passed": "weitergegeben",
|
|
1108
|
+
"graph.saved": "in Datei geschrieben",
|
|
1109
|
+
"seen.question": "Hat dieser Agent den Inhalt einer sensiblen Datei gesehen?",
|
|
1110
|
+
"seen.word.yes": "Ja",
|
|
1111
|
+
"seen.word.maybe": "Möglich",
|
|
1112
|
+
"seen.word.path": "Nein",
|
|
1113
|
+
"seen.word.named": "Nicht erkennbar",
|
|
1114
|
+
"seen.word.unknown": "Unbekannt",
|
|
1115
|
+
"seen.word.blocked": "Nein",
|
|
1116
|
+
"seen.word.no": "Nein",
|
|
1117
|
+
"seen.word.empty": "Unbekannt",
|
|
1118
|
+
"seen.says.yes": "Derselbe Text wie in {files} ist in seinem Gespräch gelandet.",
|
|
1119
|
+
"seen.says.yes.bare": "Text aus einer sensiblen Datei ist in seinem Gespräch gelandet.",
|
|
1120
|
+
"seen.says.maybe": "Er sah Text, der wie ein Passwort oder Schlüssel aussieht. Es kann auch ein Beispiel sein.",
|
|
1121
|
+
"seen.says.path": "Er sah nur den Namen {files}, nicht den Inhalt.",
|
|
1122
|
+
"seen.says.path.bare": "Er sah nur den Namen einer sensiblen Datei, nicht den Inhalt.",
|
|
1123
|
+
"seen.says.named": "Ein Befehl nannte {files}, aber der Inhalt kam nicht zurück.",
|
|
1124
|
+
"seen.says.named.bare": "Ein Befehl nannte eine sensible Datei, aber der Inhalt kam nicht zurück.",
|
|
1125
|
+
"seen.says.unknown": "Ein Teil der Aufzeichnung fehlt, daher lässt sich das nicht sagen.",
|
|
1126
|
+
"seen.says.blocked": "Er versuchte, auf {files} zuzugreifen, das wurde blockiert.",
|
|
1127
|
+
"seen.says.blocked.bare": "Er versuchte, auf eine sensible Datei zuzugreifen, das wurde blockiert.",
|
|
1128
|
+
"seen.says.no": "Nichts deutet darauf hin, dass er sensible Dateien berührt hat.",
|
|
1129
|
+
"seen.says.empty": "Die Aktionen dieses Agenten wurden nicht aufgezeichnet.",
|
|
1130
|
+
"seen.row.passed": "An einen anderen Agenten weitergegeben",
|
|
1131
|
+
"seen.row.saved": "In eine Datei geschrieben",
|
|
1132
|
+
"seen.row.chat": "In seine Nachrichten geschrieben",
|
|
1133
|
+
"seen.row.command": "In einem Befehl verwendet",
|
|
1134
|
+
"yn.yes": "Ja",
|
|
1135
|
+
"yn.no": "Nein",
|
|
1136
|
+
"yn.unknown": "Unbekannt",
|
|
1137
|
+
"seen.next.yes": "Wenn die Datei echte Passwörter oder Schlüssel enthält, ändere sie.",
|
|
1138
|
+
"seen.next.maybe": "Prüfe, ob es ein echtes Passwort oder ein echter Schlüssel ist. Wenn ja, ändere es.",
|
|
1139
|
+
"seen.next.path": "Nichts Dringendes. Der Agent weiß nur, dass die Datei existiert.",
|
|
1140
|
+
"seen.next.named": "Die Details unten zeigen, was der Befehl getan hat.",
|
|
1141
|
+
"seen.next.unknown": "Die Details unten zeigen, was fehlt.",
|
|
1142
|
+
"seen.next.blocked": "Nichts zu tun. Die Sperre hat gegriffen.",
|
|
1143
|
+
"seen.next.no": "Nichts zu tun.",
|
|
1144
|
+
"seen.next.empty": "Prüfe, ob agentwhy die Aufzeichnung dieses Agenten lesen kann.",
|
|
1145
|
+
"seen.chip.yes": "Dateiinhalt gesehen",
|
|
1146
|
+
"seen.chip.maybe": "Mögliches Passwort oder Schlüssel",
|
|
1147
|
+
"seen.chip.path": "Nur Dateiname gesehen",
|
|
1148
|
+
"seen.chip.named": "Dateiname im Befehl",
|
|
1149
|
+
"seen.chip.unknown": "Aufzeichnung unvollständig",
|
|
1150
|
+
"seen.chip.blocked": "Blockiert",
|
|
1151
|
+
"seen.chip.no": "Nichts gefunden",
|
|
1152
|
+
"seen.chip.empty": "Keine Aufzeichnung",
|
|
1153
|
+
"seen.incomplete": "Ein Teil der Aufzeichnung fehlt, daher kann diese Antwort unvollständig sein.",
|
|
1154
|
+
"seen.help": "Woher weiß agentwhy das?",
|
|
1155
|
+
"seen.helpText": "Eine sensible Datei passt auf die Regeln dieser Analyse, etwa <code>.env</code>. Das heißt nicht, dass der Zugriff blockiert war. agentwhy vergleicht Text: Steht derselbe Text in so einer Datei und im Gespräch eines Agenten, hat der Agent diesen Text gesehen. Der Text selbst wird in diesem Bericht nie gezeigt.",
|
|
1156
|
+
"target.notSeen": "Agenten sahen oder nutzten nur ihren Namen. Der Inhalt kam nicht zurück.",
|
|
1157
|
+
"target.unknown": "Ein Teil der Aufzeichnung fehlt, daher ist unklar, ob ein Agent den Inhalt sah.",
|
|
1158
|
+
"target.blocked": "Jeder Zugriffsversuch wurde blockiert.",
|
|
1159
|
+
"next.value": "Wenn diese Datei echte Passwörter oder Schlüssel enthält, ändere sie.",
|
|
1160
|
+
"story.value": "Der Agent sah den Inhalt dieser Datei.",
|
|
1161
|
+
"lead.notBack": "Deren Inhalt kam nicht zu den Agenten zurück.",
|
|
1162
|
+
"target.seen.one": "1 Agent hat den Inhalt dieser Datei gesehen.",
|
|
1163
|
+
"target.seen.other": "{n} Agenten haben den Inhalt dieser Datei gesehen.",
|
|
1164
|
+
"target.seen.few": "{n} Agenten haben den Inhalt dieser Datei gesehen.",
|
|
1165
|
+
"target.seen.many": "{n} Agenten haben den Inhalt dieser Datei gesehen.",
|
|
1166
|
+
"lead.seen.more": "und {n} weitere",
|
|
1167
|
+
"index.incomplete": "Aufzeichnung unvollständig",
|
|
1168
|
+
};
|
|
1169
|
+
/**
|
|
1170
|
+
* Exported so a test can ask whether a key is present rather than whether it reads in English: `translator` falls
|
|
1171
|
+
* back to the English table, so a missing translation renders, and only the tables themselves say it is missing.
|
|
1172
|
+
*/
|
|
1173
|
+
export const TABLES = {
|
|
1174
|
+
en: { ...EN, ...APP_WORDS.en, ...CONVERSATIONS_WORDS.en, ...MONTH_WORDS.en, ...REPORT_WORDS.en, ...SETTINGS_WORDS.en, ...TO_FIX_WORDS.en, ...ONBOARDING_WORDS.en, ...PROJECTS_WORDS.en },
|
|
1175
|
+
pl: { ...PL, ...APP_WORDS.pl, ...CONVERSATIONS_WORDS.pl, ...MONTH_WORDS.pl, ...REPORT_WORDS.pl, ...SETTINGS_WORDS.pl, ...TO_FIX_WORDS.pl, ...ONBOARDING_WORDS.pl, ...PROJECTS_WORDS.pl },
|
|
1176
|
+
de: { ...DE, ...APP_WORDS.de, ...CONVERSATIONS_WORDS.de, ...MONTH_WORDS.de, ...REPORT_WORDS.de, ...SETTINGS_WORDS.de, ...TO_FIX_WORDS.de, ...ONBOARDING_WORDS.de, ...PROJECTS_WORDS.de },
|
|
1177
|
+
};
|