@agentwhy/cli 0.1.0 → 0.2.1
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 +1 -1
- package/README.md +57 -5
- package/dist/adapter/claude-code/contract/assumptions.js +16 -4
- package/dist/adapter/claude-code/contract/denials.js +16 -1
- package/dist/adapter/claude-code/contract/desktop-sessions.js +28 -0
- package/dist/adapter/claude-code/contract/entry-points.js +6 -1
- package/dist/adapter/claude-code/contract/fields.js +2 -0
- package/dist/adapter/claude-code/contract/hooks.js +8 -0
- package/dist/adapter/claude-code/contract/identifiers.js +2 -0
- package/dist/adapter/claude-code/contract/layout.js +2 -0
- package/dist/adapter/claude-code/contract/line-types.js +2 -0
- package/dist/adapter/claude-code/contract/projects.js +2 -0
- package/dist/adapter/claude-code/contract/recognition.js +2 -0
- package/dist/adapter/claude-code/contract/settings.js +2 -0
- package/dist/adapter/claude-code/contract/task-notifications.js +2 -0
- package/dist/adapter/claude-code/contract/version.js +14 -1
- package/dist/adapter/claude-code/discovery/claude-code-project-catalogue.js +12 -12
- package/dist/adapter/claude-code/discovery/claude-code-recognition.js +2 -0
- package/dist/adapter/claude-code/discovery/claude-code-session-catalogue.js +28 -7
- package/dist/adapter/claude-code/discovery/claude-code-session-discovery.js +2 -0
- package/dist/adapter/claude-code/discovery/claude-code-session-titles.js +30 -6
- package/dist/adapter/claude-code/discovery/claude-desktop-titles.js +102 -0
- package/dist/adapter/claude-code/discovery/session-entries.js +2 -0
- package/dist/adapter/claude-code/events/delegation-index.js +2 -0
- package/dist/adapter/claude-code/events/transcript-scan.js +6 -5
- package/dist/adapter/claude-code/hooks/hook-output.js +2 -0
- package/dist/adapter/claude-code/hooks/pre-tool-use-input.js +2 -0
- package/dist/adapter/claude-code/hooks/stop-input.js +2 -0
- package/dist/adapter/claude-code/hooks/subagent-stop-input.js +4 -0
- package/dist/adapter/claude-code/probe/claude-code-probe.js +2 -0
- package/dist/adapter/claude-code/probe/collectors/agent-tool-input-key-collector.js +2 -0
- package/dist/adapter/claude-code/probe/collectors/denial-kind-collector.js +2 -0
- package/dist/adapter/claude-code/probe/collectors/denied-call-collector.js +2 -0
- package/dist/adapter/claude-code/probe/collectors/identifier-collector.js +2 -0
- package/dist/adapter/claude-code/probe/collectors/line-type-collector.js +2 -0
- package/dist/adapter/claude-code/probe/collectors/sidechain-collector.js +2 -0
- package/dist/adapter/claude-code/probe/collectors/task-notification-collector.js +2 -0
- package/dist/adapter/claude-code/probe/collectors/tool-result-reference-collector.js +2 -0
- package/dist/adapter/claude-code/probe/collectors/tool-use-collector.js +2 -0
- package/dist/adapter/claude-code/probe/collectors/tool-version-collector.js +2 -0
- package/dist/adapter/claude-code/probe/collectors/top-level-key-collector.js +2 -0
- package/dist/adapter/claude-code/probe/collectors/unknown-line-type-key-collector.js +2 -0
- package/dist/adapter/claude-code/probe/collectors/working-directory-collector.js +2 -0
- package/dist/adapter/claude-code/probe/meta-tally.js +2 -0
- package/dist/adapter/claude-code/probe/transcript-line.js +2 -0
- package/dist/adapter/claude-code/probe/transcript-tally.js +2 -0
- package/dist/adapter/claude-code/settings/deny-entries.js +2 -0
- package/dist/adapter/claude-code/settings/hook-entries.js +9 -0
- package/dist/adapter/claude-code/settings/refuse-project.js +99 -0
- package/dist/adapter/codex/contract/actions.js +2 -0
- package/dist/adapter/codex/contract/assumptions.js +2 -0
- package/dist/adapter/codex/contract/chat-folders.js +19 -0
- package/dist/adapter/codex/contract/delegations.js +2 -0
- package/dist/adapter/codex/contract/deliveries.js +2 -0
- package/dist/adapter/codex/contract/envelope.js +2 -0
- package/dist/adapter/codex/contract/hook-refusals.js +2 -0
- package/dist/adapter/codex/contract/hooks.js +51 -1
- package/dist/adapter/codex/contract/messages.js +2 -0
- package/dist/adapter/codex/contract/permissions.js +2 -0
- package/dist/adapter/codex/contract/reviews.js +2 -0
- package/dist/adapter/codex/contract/session.js +29 -1
- package/dist/adapter/codex/contract/turns.js +2 -0
- package/dist/adapter/codex/contract/version.js +2 -0
- package/dist/adapter/codex/discovery/codex-on-this-computer.js +13 -0
- package/dist/adapter/codex/discovery/codex-project-catalogue.js +2 -12
- package/dist/adapter/codex/discovery/codex-session-catalogue.js +2 -1
- package/dist/adapter/codex/discovery/codex-session-discovery.js +2 -0
- package/dist/adapter/codex/discovery/session-owners.js +2 -0
- package/dist/adapter/codex/events/action-items.js +2 -0
- package/dist/adapter/codex/events/codex-session-source.js +2 -0
- package/dist/adapter/codex/events/hook-refusals.js +2 -0
- package/dist/adapter/codex/events/rollout-scan.js +1 -1
- package/dist/adapter/codex/hooks/codex-conversation.js +54 -0
- package/dist/adapter/codex/hooks/pre-tool-use-input.js +2 -0
- package/dist/adapter/codex/hooks/reader.js +38 -0
- package/dist/adapter/codex/hooks/stop-input.js +32 -0
- package/dist/adapter/codex/hooks/stop-refusals.js +3 -6
- package/dist/adapter/codex/probe/codex-probe.js +2 -0
- package/dist/adapter/codex/settings/codex-check.js +38 -0
- package/dist/adapter/codex/settings/codex-hooks.js +168 -1
- package/dist/adapter/codex/settings/hook-approval.js +374 -0
- package/dist/cli/command-router.js +8 -2
- package/dist/cli/commands/check-cli-command.js +2 -0
- package/dist/cli/commands/codex-stop-cli-command.js +15 -12
- package/dist/cli/commands/doctor-arguments.js +2 -0
- package/dist/cli/commands/doctor-usage.js +2 -0
- package/dist/cli/commands/init-cli-command.js +10 -5
- package/dist/cli/commands/notify-cli-command.js +3 -1
- package/dist/cli/commands/refuse-cli-command.js +9 -4
- package/dist/cli/commands/report-arguments.js +2 -0
- package/dist/cli/commands/report-usage.js +2 -0
- package/dist/cli/commands/sessions-cli-command.js +9 -1
- package/dist/cli/commands/start-cli-command.js +29 -2
- package/dist/cli/commands/watch-cli-command.js +4 -2
- package/dist/cli/exit-codes.js +2 -0
- package/dist/cli.js +12 -1
- package/dist/composition-root.js +101 -16
- package/dist/core/access/command-line.js +48 -2
- package/dist/core/access/listing.js +2 -0
- package/dist/core/access/path-tokens.js +2 -0
- package/dist/core/access/protected-access.js +36 -3
- package/dist/core/access/protected-values.js +17 -0
- package/dist/core/access/search-output.js +2 -0
- package/dist/core/access/search-reach.js +2 -0
- package/dist/core/combined-project-catalogue.js +7 -1
- package/dist/core/correlation/correlate.js +13 -1
- package/dist/core/detector/prompt-signals.js +2 -0
- package/dist/core/guarded-places.js +42 -0
- package/dist/core/nearest-project.js +5 -2
- package/dist/core/policy/glob.js +2 -0
- package/dist/core/policy/parse-policy.js +2 -0
- package/dist/core/policy/policy.js +14 -2
- package/dist/core/policy/resolve-policy.js +2 -0
- package/dist/core/redaction/entropy.js +2 -0
- package/dist/core/redaction/redactor.js +2 -0
- package/dist/core/redaction/value-shapes.js +2 -0
- package/dist/core/redaction/value-trace.js +2 -0
- package/dist/core/session-catalogue.js +7 -0
- package/dist/core/session-filter.js +2 -0
- package/dist/infrastructure/clack-asker.js +2 -0
- package/dist/infrastructure/clack-chooser.js +2 -0
- package/dist/infrastructure/clack-multi-chooser.js +2 -0
- package/dist/infrastructure/file-alert-store.js +10 -3
- package/dist/infrastructure/file-checked-store.js +2 -0
- package/dist/infrastructure/file-mark-store.js +2 -0
- package/dist/infrastructure/file-onboarding-store.js +2 -0
- package/dist/infrastructure/file-page-servers.js +51 -0
- package/dist/infrastructure/folder-window.js +2 -0
- package/dist/infrastructure/node-agentwhy-invocation.js +2 -0
- package/dist/infrastructure/node-background-run.js +45 -0
- package/dist/infrastructure/node-browser.js +2 -0
- package/dist/infrastructure/node-file-system.js +42 -1
- package/dist/infrastructure/node-local-server.js +2 -0
- package/dist/infrastructure/node-page-probe.js +40 -0
- package/dist/infrastructure/os-notifier.js +2 -0
- package/dist/infrastructure/real-directory.js +2 -0
- package/dist/infrastructure/shell-command-trial.js +60 -0
- package/dist/infrastructure/terminal-banner.js +2 -0
- package/dist/ports/command-trial.js +1 -0
- package/dist/ports/directory-reader.js +14 -1
- package/dist/ports/file-replacer.js +1 -0
- package/dist/ports/mark-store.js +2 -0
- package/dist/ports/page-server.js +1 -0
- package/dist/refuse/command-reach.js +2 -0
- package/dist/refuse/command-refusal.js +19 -30
- package/dist/refuse/render/refusal-words.js +3 -1
- package/dist/report/build-report.js +59 -11
- package/dist/report/check/actions-digest.js +3 -0
- package/dist/report/check/check-lines.js +2 -1
- package/dist/report/check/render/text-digest-renderer.js +31 -9
- package/dist/report/check/session-actions.js +4 -6
- package/dist/report/check/session-check.js +8 -0
- package/dist/report/choose-policy.js +7 -1
- package/dist/report/nothing-saved-here.js +16 -0
- package/dist/report/private-files/tell-lists.js +2 -0
- package/dist/report/project-rules.js +2 -0
- package/dist/report/refusals.js +15 -0
- package/dist/report/render/home-relative.js +2 -0
- package/dist/report/render/html-head.js +2 -0
- package/dist/report/render/html-report-styles.js +2 -0
- package/dist/report/render/html-sidebar.js +2 -0
- package/dist/report/render/path-tail.js +2 -0
- package/dist/report/render/report-copy.js +2 -0
- package/dist/report/render/report-page/advanced-view.js +2 -0
- package/dist/report/render/report-page/files-view.js +2 -0
- package/dist/report/render/report-page/files.js +2 -0
- package/dist/report/render/report-page/fix-wizard-script.js +2 -0
- package/dist/report/render/report-page/helpers-view.js +2 -0
- package/dist/report/render/report-page/item-names.js +2 -0
- package/dist/report/render/report-page/protect-patterns.js +2 -0
- package/dist/report/render/report-page/report-views.js +2 -0
- package/dist/report/render/report-page/to-do-view.js +3 -2
- package/dist/report/render/text-report-renderer.js +2 -0
- package/dist/report/render/ui/add-file-popup.js +2 -0
- package/dist/report/render/ui/app-sidebar.js +2 -0
- package/dist/report/render/ui/ask-panel.js +2 -0
- package/dist/report/render/ui/avatar.js +2 -0
- package/dist/report/render/ui/backdrop.js +2 -0
- package/dist/report/render/ui/brand-mark.js +2 -0
- package/dist/report/render/ui/checklist.js +2 -0
- package/dist/report/render/ui/confirm-dialog.js +2 -0
- package/dist/report/render/ui/drawer.js +2 -0
- package/dist/report/render/ui/file-chip.js +2 -0
- package/dist/report/render/ui/fold-line.js +2 -0
- package/dist/report/render/ui/guide-card.js +2 -0
- package/dist/report/render/ui/live-script.js +2 -0
- package/dist/report/render/ui/page-shell.js +2 -0
- package/dist/report/render/ui/popup.js +2 -0
- package/dist/report/render/ui/progress.js +2 -0
- package/dist/report/render/ui/project-list.js +9 -9
- package/dist/report/render/ui/stats.js +2 -0
- package/dist/report/render/ui/status-icon.js +2 -0
- package/dist/report/render/ui/status-look.js +2 -0
- package/dist/report/render/ui/task-list.js +2 -0
- package/dist/report/render/ui/tokens.js +2 -0
- package/dist/report/render/ui/update-notice.js +2 -0
- package/dist/report/render/ui/words/app-words.js +3 -3
- package/dist/report/render/ui/words/onboarding-words.js +9 -9
- package/dist/report/render/ui/words/projects-words.js +3 -3
- package/dist/report/render/ui/words/report-words.js +11 -11
- package/dist/report/render/ui/words/settings-words.js +30 -6
- package/dist/report/rule-names.js +2 -0
- package/dist/report/session-report.js +2 -0
- package/dist/report/start/conversations/calendar-view.js +2 -0
- package/dist/report/start/conversations/conversation-columns.js +2 -0
- package/dist/report/start/conversations/empty-week.js +2 -0
- package/dist/report/start/conversations/files-window.js +2 -0
- package/dist/report/start/conversations/period-section.js +2 -0
- package/dist/report/start/conversations/periods-script.js +2 -0
- package/dist/report/start/conversations/periods.js +2 -0
- package/dist/report/start/conversations/week-view.js +2 -0
- package/dist/report/start/conversations/weeks.js +2 -0
- package/dist/report/start/detached-start.js +94 -0
- package/dist/report/start/month/month-view.js +2 -0
- package/dist/report/start/onboarding/done.js +9 -3
- package/dist/report/start/onboarding/finish-onboarding.js +6 -4
- package/dist/report/start/onboarding/intro.js +2 -0
- package/dist/report/start/onboarding/onboarding-renderer.js +4 -4
- package/dist/report/start/onboarding/onboarding-script.js +2 -0
- package/dist/report/start/onboarding/onboarding-view.js +1 -1
- package/dist/report/start/onboarding/project-step.js +1 -1
- package/dist/report/start/onboarding/steps.js +2 -0
- package/dist/report/start/onboarding/welcome-decision.js +44 -0
- package/dist/report/start/onboarding/welcome.js +2 -0
- package/dist/report/start/page-notice.js +2 -0
- package/dist/report/start/projects/index-projects.js +5 -2
- package/dist/report/start/projects/moved-page.js +2 -0
- package/dist/report/start/projects/project-switch.js +2 -0
- package/dist/report/start/projects/projects-window.js +2 -0
- package/dist/report/start/projects/temporary-space.js +2 -0
- package/dist/report/start/render/start-words.js +21 -2
- package/dist/report/start/repository.js +2 -0
- package/dist/report/start/serve/index-handler.js +4 -1
- package/dist/report/start/serve/settings-setup.js +10 -0
- package/dist/report/start/session-start.js +80 -55
- package/dist/report/start/settings/alerts-tab.js +4 -1
- package/dist/report/start/settings/files-tab.js +18 -12
- package/dist/report/start/settings/general-tab.js +33 -1
- package/dist/report/start/settings/settings-renderer.js +2 -0
- package/dist/report/start/settings/settings-script.js +8 -1
- package/dist/report/start/settings/settings-view.js +29 -2
- package/dist/report/start/settings/settings-windows.js +16 -5
- package/dist/report/start/settings-files.js +2 -0
- package/dist/report/start/to-fix/done-list.js +2 -0
- package/dist/report/start/to-fix/file-window.js +2 -0
- package/dist/report/start/to-fix/to-fix-list.js +2 -0
- package/dist/report/start/to-fix/to-fix-renderer.js +2 -0
- package/dist/report/start/to-fix/to-fix-script.js +2 -0
- package/dist/report/watch/agent-alert.js +3 -0
- package/dist/report/watch/codex-turn-format.js +69 -0
- package/dist/report/watch/notice-choices.js +2 -0
- package/dist/report/watch/notice-settings.js +2 -0
- package/dist/report/watch/preferences.js +2 -0
- package/dist/report/watch/render/codex-request-words.js +106 -0
- package/dist/report/watch/render/instruction-words.js +114 -12
- package/dist/report/watch/render/notice-words.js +74 -4
- package/dist/report/watch/subagent-watch.js +270 -45
- package/dist/setup/behind.js +2 -0
- package/dist/setup/codex-mirror.js +311 -104
- package/dist/setup/not-a-project.js +2 -0
- package/dist/setup/project-setup.js +2 -0
- package/dist/shared/compare.js +2 -0
- package/dist/shared/content-version.js +2 -0
- package/dist/shared/counter.js +2 -0
- package/dist/shared/file-stamp.js +2 -0
- package/dist/shared/label.js +2 -0
- package/dist/shared/package-name.js +2 -0
- package/dist/shared/plain-invocation.js +2 -0
- package/dist/shared/printable.js +2 -0
- package/dist/shared/sentence.js +2 -0
- package/dist/shared/terminal-logo.js +2 -0
- package/dist/shared/text-table.js +2 -0
- package/dist/shared/wrap.js +2 -0
- package/package.json +2 -1
- package/dist/refuse/render/codex-stop-words.js +0 -21
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
// Copyright 2026 Nessprim Karol Kozer
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
1
3
|
import { PROVIDER_NAMES } from '../../core/session-format.js';
|
|
2
4
|
import { paint } from '../../shared/colour.js';
|
|
3
5
|
import { logoWidth, TAGLINE, terminalLogo } from '../../shared/terminal-logo.js';
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
// Copyright 2026 Nessprim Karol Kozer
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
1
3
|
import { escapeHtml as e } from '../html-report-components.js';
|
|
2
4
|
import { inLanguages, labelAttributes, LANGS, translator } from '../report-copy.js';
|
|
3
5
|
import { closeButton, pill } from './button.js';
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
// Copyright 2026 Nessprim Karol Kozer
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
1
3
|
import { escapeHtml as e } from '../html-report-components.js';
|
|
2
4
|
/** Initials come from the page's own naming (`AI`, `H` and an ordinal), never from transcript text; escaped anyway. */
|
|
3
5
|
export function avatar(initials, tone, size = 42) {
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
// Copyright 2026 Nessprim Karol Kozer
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
1
3
|
/**
|
|
2
4
|
* The page's background: the warm glow of the design files at the top, and the still field of points the index has
|
|
3
5
|
* always had behind it, kept at the maintainer's request (2026-09-23) over the guidelines' "no dots". It says
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
// Copyright 2026 Nessprim Karol Kozer
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
1
3
|
/** The knot every page carries beside the wordmark, drawn in the current colour. */
|
|
2
4
|
export const BRAND_MARK = '<svg class="brand-mark" viewBox="-3 -2 46 44" fill="none" stroke="currentColor" stroke-width="6" stroke-linecap="round" aria-hidden="true">' +
|
|
3
5
|
'<path d="m17 25-3 3a7.07 7.07 0 0 1-10-10l8-8a7.07 7.07 0 0 1 10 0"/>' +
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
// Copyright 2026 Nessprim Karol Kozer
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
1
3
|
import { pill } from './button.js';
|
|
2
4
|
export function checklist(checks, tick) {
|
|
3
5
|
return '<ul class="ck" data-checklist>' + checks.map((check) => '<li class="ck-row"><div class="ck-text"><div class="ck-name">' + check.name + '</div><div class="ck-what">' + check.what + '</div></div>' +
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
// Copyright 2026 Nessprim Karol Kozer
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
1
3
|
import { inLanguages } from '../report-copy.js';
|
|
2
4
|
export function foldLine(spec) {
|
|
3
5
|
return '<details class="fold' + (spec.mark === undefined ? '' : ' fold-' + spec.mark.tone) + '"' + (spec.attributes ?? '') + '><summary class="fold-line">' +
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
// Copyright 2026 Nessprim Karol Kozer
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
1
3
|
import { pill } from './button.js';
|
|
2
4
|
const LOCK_SVG = '<svg viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round">' +
|
|
3
5
|
'<rect x="5" y="11" width="14" height="10" rx="2.5"/><path d="M8 11V8a4 4 0 0 1 8 0v3"/></svg>';
|
|
@@ -21,8 +21,8 @@ export function projectList(spec) {
|
|
|
21
21
|
const today = clock(spec.now).day.number;
|
|
22
22
|
const when = (row) => lastUsed(row.newest.modifiedAt, spec.now, clock, today);
|
|
23
23
|
const here = spec.rows.find((row) => row.current);
|
|
24
|
-
const others = spec.rows.filter((row) => !row.current && row.
|
|
25
|
-
const gone = spec.rows.filter((row) => !row.current &&
|
|
24
|
+
const others = spec.rows.filter((row) => !row.current && row.folder !== 'gone');
|
|
25
|
+
const gone = spec.rows.filter((row) => !row.current && row.folder === 'gone');
|
|
26
26
|
const shown = others.slice(0, ROWS);
|
|
27
27
|
const older = others.length - shown.length;
|
|
28
28
|
if (spec.pick !== undefined)
|
|
@@ -65,9 +65,9 @@ function feet(older, unreadable) {
|
|
|
65
65
|
* where the run is in no listed project.
|
|
66
66
|
*/
|
|
67
67
|
function pickList(spec, group, when) {
|
|
68
|
-
const here = spec.rows.find((row) => row.current && row.
|
|
69
|
-
const others = spec.rows.filter((row) => !row.current && row.
|
|
70
|
-
const gone = spec.rows.filter((row) =>
|
|
68
|
+
const here = spec.rows.find((row) => row.current && row.folder !== 'gone');
|
|
69
|
+
const others = spec.rows.filter((row) => !row.current && row.folder !== 'gone');
|
|
70
|
+
const gone = spec.rows.filter((row) => row.folder === 'gone').length;
|
|
71
71
|
const shown = others.slice(0, ROWS);
|
|
72
72
|
const more = Math.max(0, shown.length - FIRST);
|
|
73
73
|
const hidden = hiddenLine(spec.temporary ?? 0, gone);
|
|
@@ -137,18 +137,18 @@ function searchable(row) {
|
|
|
137
137
|
}
|
|
138
138
|
/** A row's four cells: the folder's initial, the project, its status, and what it offers. */
|
|
139
139
|
function cells(row, when, action) {
|
|
140
|
-
const detail = row.
|
|
140
|
+
const detail = row.folder !== 'gone'
|
|
141
141
|
? when(row) + ' · ' + inLanguages((t) => t('proj.chats', { n: row.conversations }))
|
|
142
142
|
: inLanguages((t) => t('proj.gone'));
|
|
143
143
|
return '<span class="pjl-mark" aria-hidden="true">' + e(initial(row.name)) + '</span>' +
|
|
144
144
|
'<span class="pjl-project"><span class="pjl-name" title="' + e(row.place) + '">' + e(row.name) + '</span>' +
|
|
145
145
|
'<span class="pjl-detail">' + detail + '</span></span>' +
|
|
146
146
|
'<span class="pjl-status">' + status(row) + '</span>' +
|
|
147
|
-
'<span class="pjl-action">' + (row.
|
|
147
|
+
'<span class="pjl-action">' + (row.folder !== 'gone' && action !== undefined ? action(row) : '') + '</span>';
|
|
148
148
|
}
|
|
149
|
-
/** Set up (mint), not set up yet (amber); nothing where it is not known
|
|
149
|
+
/** Set up (mint), not set up yet (amber); nothing where it is not known - not looked at (V10b) - or the folder is gone (V10). */
|
|
150
150
|
function status(row) {
|
|
151
|
-
return
|
|
151
|
+
return row.folder === 'gone' || row.setUp === undefined ? ''
|
|
152
152
|
: row.setUp ? tag(inLanguages((t) => t('proj.setUp')), 'mint') : tag(inLanguages((t) => t('proj.notSetUp')), 'amber');
|
|
153
153
|
}
|
|
154
154
|
/** "Last used 2 hours ago", "…yesterday", "…Mon, Sep 21": as near as the moment is, in the page's clock. */
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
// Copyright 2026 Nessprim Karol Kozer
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
1
3
|
import { escapeHtml as e } from '../html-report-components.js';
|
|
2
4
|
/** `head` is the three column names, already written in every language; a list of compact cards has none. */
|
|
3
5
|
export function taskList(head, tasks) {
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
// Copyright 2026 Nessprim Karol Kozer
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
1
3
|
/**
|
|
2
4
|
* Every colour and font of the design, once (`.ai/design/2026-09-23-design-guidelines.md` §2, §3, and the
|
|
3
5
|
* maintainer's design files). A component's own style names these and never a colour of its own: two pieces that
|
|
@@ -51,7 +51,7 @@ export const APP_WORDS = {
|
|
|
51
51
|
'live.go.one': '1 new conversation · Show',
|
|
52
52
|
'live.go.other': '{n} new conversations · Show',
|
|
53
53
|
// which-project V14: a switch in another tab ends this page's run as Ctrl+C does, and the page cannot tell which.
|
|
54
|
-
'live.stopped': 'agentwhy
|
|
54
|
+
'live.stopped': 'agentwhy stopped showing this project here: its pages were closed for a while, or another tab switched project. To open it again, ask your AI: “open agentwhy’s report” - or type npx @agentwhy/cli in a terminal.',
|
|
55
55
|
'app.stuck': '✦ I\u2019m stuck',
|
|
56
56
|
'app.tick': 'Mark as done',
|
|
57
57
|
'app.ticked': 'Done',
|
|
@@ -104,7 +104,7 @@ export const APP_WORDS = {
|
|
|
104
104
|
'live.go.one': '1 nowa rozmowa · Pokaż',
|
|
105
105
|
'live.go.few': '{n} nowe rozmowy · Pokaż',
|
|
106
106
|
'live.go.many': '{n} nowych rozmów · Pokaż',
|
|
107
|
-
'live.stopped': 'agentwhy
|
|
107
|
+
'live.stopped': 'agentwhy przestał tu pokazywać ten projekt: jego strony były przez chwilę zamknięte albo w innej karcie przełączono projekt. Żeby otworzyć go ponownie, napisz do AI: „otwórz raport agentwhy” - albo wpisz npx @agentwhy/cli w terminalu.',
|
|
108
108
|
'app.stuck': '✦ Utknąłem',
|
|
109
109
|
'app.tick': 'Oznacz jako zrobione',
|
|
110
110
|
'app.ticked': 'Zrobione',
|
|
@@ -155,7 +155,7 @@ export const APP_WORDS = {
|
|
|
155
155
|
'live.updated': 'Aktualisiert · Anzeigen',
|
|
156
156
|
'live.go.one': '1 neue Unterhaltung · Anzeigen',
|
|
157
157
|
'live.go.other': '{n} neue Unterhaltungen · Anzeigen',
|
|
158
|
-
'live.stopped': 'agentwhy zeigt dieses Projekt hier nicht mehr:
|
|
158
|
+
'live.stopped': 'agentwhy zeigt dieses Projekt hier nicht mehr: Seine Seiten waren eine Weile geschlossen, oder ein anderer Tab hat das Projekt gewechselt. Um es wieder zu öffnen, schreib deiner KI: „öffne den Bericht von agentwhy“ - oder tippe npx @agentwhy/cli in ein Terminal.',
|
|
159
159
|
'app.stuck': '✦ Ich komme nicht weiter',
|
|
160
160
|
'app.tick': 'Als erledigt markieren',
|
|
161
161
|
'app.ticked': 'Erledigt',
|
|
@@ -50,6 +50,7 @@ export const ONBOARDING_WORDS = {
|
|
|
50
50
|
'ob.project.worked.other': 'Your AI has worked here: {n} chats',
|
|
51
51
|
'ob.project.in.editor': '{n} in your code editor',
|
|
52
52
|
'ob.project.in.terminal': '{n} in the terminal',
|
|
53
|
+
'ob.project.in.desktop': '{n} in the Claude desktop app',
|
|
53
54
|
'ob.project.in.script': '{n} started by a script',
|
|
54
55
|
'ob.project.in.unknown': 'and {n} elsewhere',
|
|
55
56
|
'ob.project.found.title': 'We found your project.',
|
|
@@ -115,7 +116,7 @@ export const ONBOARDING_WORDS = {
|
|
|
115
116
|
'ob.done.more': '+{n} more on your To fix list',
|
|
116
117
|
'ob.done.later': 'Later — go to my dashboard',
|
|
117
118
|
'ob.done.fix': 'Fix them now — about 2 min each →',
|
|
118
|
-
'ob.done.protected': 'You’re protected
|
|
119
|
+
'ob.done.protected': 'You’re protected.',
|
|
119
120
|
'ob.done.set': 'Setup done.',
|
|
120
121
|
'ob.done.knowing': 'From now on, you’ll know every time Claude Code opens something private.',
|
|
121
122
|
'ob.done.good': 'Good news — nothing to fix.',
|
|
@@ -125,7 +126,6 @@ export const ONBOARDING_WORDS = {
|
|
|
125
126
|
'ob.done.open': 'Open agentwhy →',
|
|
126
127
|
'ob.done.empty.title': 'You’re set up.',
|
|
127
128
|
'ob.done.empty.text': 'There are no AI chats in this folder yet. Work with your AI here, then run agentwhy again to see what it opened.',
|
|
128
|
-
'ob.done.settings': 'Open Settings →',
|
|
129
129
|
'ob.summary.local': 'Just you',
|
|
130
130
|
'ob.summary.shared': 'Everyone on this project',
|
|
131
131
|
'ob.summary.kinds.one': '1 kind of files',
|
|
@@ -138,7 +138,7 @@ export const ONBOARDING_WORDS = {
|
|
|
138
138
|
'ob.failed.search': 'Searches weren’t blocked.',
|
|
139
139
|
'ob.failed.mode': 'Some of your Block and Track choices weren’t saved.',
|
|
140
140
|
'ob.failed.go': 'Try again in Settings',
|
|
141
|
-
'ob.done.codex.on': 'Codex too
|
|
141
|
+
'ob.done.codex.on': 'Codex too, from the first message — nothing to confirm there.',
|
|
142
142
|
'ob.done.codex.off': 'Codex isn’t blocked yet: it can still open these files.',
|
|
143
143
|
'ob.done.codex.go': 'Block it in Settings',
|
|
144
144
|
'ob.unrecorded': 'We couldn’t save that you’ve finished this, so you’ll see it again next time.',
|
|
@@ -195,6 +195,7 @@ export const ONBOARDING_WORDS = {
|
|
|
195
195
|
'ob.project.worked.many': 'Twoje AI pracowało tu: {n} czatów',
|
|
196
196
|
'ob.project.in.editor': '{n} w edytorze kodu',
|
|
197
197
|
'ob.project.in.terminal': '{n} w terminalu',
|
|
198
|
+
'ob.project.in.desktop': '{n} w aplikacji Claude na komputerze',
|
|
198
199
|
'ob.project.in.script': '{n} ze skryptu',
|
|
199
200
|
'ob.project.in.unknown': 'i {n} gdzie indziej',
|
|
200
201
|
'ob.project.found.title': 'Znaleźliśmy twój projekt.',
|
|
@@ -264,7 +265,7 @@ export const ONBOARDING_WORDS = {
|
|
|
264
265
|
'ob.done.more': '+{n} więcej na liście Do naprawy',
|
|
265
266
|
'ob.done.later': 'Później — przejdź do pulpitu',
|
|
266
267
|
'ob.done.fix': 'Napraw je teraz — ok. 2 min każdy →',
|
|
267
|
-
'ob.done.protected': 'Jesteś
|
|
268
|
+
'ob.done.protected': 'Jesteś pod ochroną.',
|
|
268
269
|
'ob.done.set': 'Gotowe.',
|
|
269
270
|
'ob.done.knowing': 'Od teraz będziesz wiedzieć za każdym razem, gdy Claude Code otworzy coś prywatnego.',
|
|
270
271
|
'ob.done.good': 'Dobra wiadomość — nie ma nic do naprawy.',
|
|
@@ -274,7 +275,6 @@ export const ONBOARDING_WORDS = {
|
|
|
274
275
|
'ob.done.open': 'Otwórz agentwhy →',
|
|
275
276
|
'ob.done.empty.title': 'Wszystko ustawione.',
|
|
276
277
|
'ob.done.empty.text': 'W tym folderze nie ma jeszcze czatów z AI. Popracuj tu ze swoim AI, a potem uruchom agentwhy jeszcze raz, żeby zobaczyć, co otworzyło.',
|
|
277
|
-
'ob.done.settings': 'Otwórz Ustawienia →',
|
|
278
278
|
'ob.summary.local': 'Tylko ty',
|
|
279
279
|
'ob.summary.shared': 'Wszyscy w tym projekcie',
|
|
280
280
|
'ob.summary.kinds.one': '1 rodzaj plików',
|
|
@@ -288,7 +288,7 @@ export const ONBOARDING_WORDS = {
|
|
|
288
288
|
'ob.failed.search': 'Przeszukiwanie nie zostało zablokowane.',
|
|
289
289
|
'ob.failed.mode': 'Część twoich wyborów Blokuj i Obserwuje nie została zapisana.',
|
|
290
290
|
'ob.failed.go': 'Spróbuj ponownie w Ustawieniach',
|
|
291
|
-
'ob.done.codex.on': 'Także Codex
|
|
291
|
+
'ob.done.codex.on': 'Także Codex, od pierwszej wiadomości — niczego nie musisz tam potwierdzać.',
|
|
292
292
|
'ob.done.codex.off': 'Codex nie jest jeszcze zablokowany: wciąż może otwierać te pliki.',
|
|
293
293
|
'ob.done.codex.go': 'Zablokuj go w Ustawieniach',
|
|
294
294
|
'ob.unrecorded': 'Nie udało się zapisać, że to zakończyłeś, więc zobaczysz to jeszcze raz następnym razem.',
|
|
@@ -344,6 +344,7 @@ export const ONBOARDING_WORDS = {
|
|
|
344
344
|
'ob.project.worked.other': 'Deine KI hat hier gearbeitet: {n} Chats',
|
|
345
345
|
'ob.project.in.editor': '{n} im Code-Editor',
|
|
346
346
|
'ob.project.in.terminal': '{n} im Terminal',
|
|
347
|
+
'ob.project.in.desktop': '{n} in der Claude-Desktop-App',
|
|
347
348
|
'ob.project.in.script': '{n} von einem Skript gestartet',
|
|
348
349
|
'ob.project.in.unknown': 'und {n} anderswo',
|
|
349
350
|
'ob.project.found.title': 'Wir haben dein Projekt gefunden.',
|
|
@@ -409,7 +410,7 @@ export const ONBOARDING_WORDS = {
|
|
|
409
410
|
'ob.done.more': '+{n} weitere auf deiner Liste Zu beheben',
|
|
410
411
|
'ob.done.later': 'Später — zu meiner Übersicht',
|
|
411
412
|
'ob.done.fix': 'Jetzt beheben — etwa 2 Min. pro Datei →',
|
|
412
|
-
'ob.done.protected': 'Du bist
|
|
413
|
+
'ob.done.protected': 'Du bist geschützt.',
|
|
413
414
|
'ob.done.set': 'Eingerichtet.',
|
|
414
415
|
'ob.done.knowing': 'Ab jetzt weißt du jedes Mal, wenn Claude Code etwas Privates öffnet.',
|
|
415
416
|
'ob.done.good': 'Gute Nachricht — nichts zu beheben.',
|
|
@@ -419,7 +420,6 @@ export const ONBOARDING_WORDS = {
|
|
|
419
420
|
'ob.done.open': 'agentwhy öffnen →',
|
|
420
421
|
'ob.done.empty.title': 'Alles eingerichtet.',
|
|
421
422
|
'ob.done.empty.text': 'In diesem Ordner gibt es noch keine KI-Chats. Arbeite hier mit deiner KI und starte agentwhy dann noch einmal, um zu sehen, was sie geöffnet hat.',
|
|
422
|
-
'ob.done.settings': 'Einstellungen öffnen →',
|
|
423
423
|
'ob.summary.local': 'Nur du',
|
|
424
424
|
'ob.summary.shared': 'Alle in diesem Projekt',
|
|
425
425
|
'ob.summary.kinds.one': '1 Art von Dateien',
|
|
@@ -432,7 +432,7 @@ export const ONBOARDING_WORDS = {
|
|
|
432
432
|
'ob.failed.search': 'Die Suchen wurden nicht blockiert.',
|
|
433
433
|
'ob.failed.mode': 'Ein Teil deiner Auswahl zwischen Blockieren und Beobachten wurde nicht gespeichert.',
|
|
434
434
|
'ob.failed.go': 'In den Einstellungen noch einmal versuchen',
|
|
435
|
-
'ob.done.codex.on': 'Auch Codex
|
|
435
|
+
'ob.done.codex.on': 'Auch Codex, von der ersten Nachricht an — dort musst du nichts bestätigen.',
|
|
436
436
|
'ob.done.codex.off': 'Codex ist noch nicht blockiert: Es kann diese Dateien noch öffnen.',
|
|
437
437
|
'ob.done.codex.go': 'In den Einstellungen blockieren',
|
|
438
438
|
'ob.unrecorded': 'Wir konnten nicht speichern, dass du fertig bist, deshalb siehst du das nächstes Mal noch einmal.',
|
|
@@ -60,7 +60,7 @@ export const PROJECTS_WORDS = {
|
|
|
60
60
|
'proj.nearInside': 'These projects are inside {name}:',
|
|
61
61
|
'proj.openName': 'Open {name}',
|
|
62
62
|
'proj.useAnyway': 'Use {name} anyway',
|
|
63
|
-
'proj.which': 'agentwhy reads your conversations with Claude Code - in the terminal and in your code editor - and with Codex. It protects files in both
|
|
63
|
+
'proj.which': 'agentwhy reads your conversations with Claude Code - in the terminal and in your code editor - and with Codex. It protects files in both. It doesn’t see Cursor’s own AI or chats on claude.ai.',
|
|
64
64
|
'proj.switching': 'Switching to {name}…',
|
|
65
65
|
'proj.switchFailed': 'Couldn’t switch. {reason}',
|
|
66
66
|
'proj.unreachable': 'agentwhy isn’t running anymore. Run agentwhy again to switch.',
|
|
@@ -134,7 +134,7 @@ export const PROJECTS_WORDS = {
|
|
|
134
134
|
'proj.nearInside': 'W folderze {name} są te projekty:',
|
|
135
135
|
'proj.openName': 'Otwórz {name}',
|
|
136
136
|
'proj.useAnyway': 'Użyj mimo to: {name}',
|
|
137
|
-
'proj.which': 'agentwhy czyta Twoje rozmowy z Claude Code - w terminalu i w edytorze kodu - oraz z Codexem. Chroni pliki w obu
|
|
137
|
+
'proj.which': 'agentwhy czyta Twoje rozmowy z Claude Code - w terminalu i w edytorze kodu - oraz z Codexem. Chroni pliki w obu. Nie widzi własnego AI Cursora ani czatów na claude.ai.',
|
|
138
138
|
'proj.switching': 'Przełączam na {name}…',
|
|
139
139
|
'proj.switchFailed': 'Nie udało się przełączyć. {reason}',
|
|
140
140
|
'proj.unreachable': 'agentwhy już nie działa. Uruchom agentwhy jeszcze raz, żeby przełączyć.',
|
|
@@ -203,7 +203,7 @@ export const PROJECTS_WORDS = {
|
|
|
203
203
|
'proj.nearInside': 'In {name} liegen diese Projekte:',
|
|
204
204
|
'proj.openName': '{name} öffnen',
|
|
205
205
|
'proj.useAnyway': '{name} trotzdem nehmen',
|
|
206
|
-
'proj.which': 'agentwhy liest deine Gespräche mit Claude Code - im Terminal und in deinem Code-Editor - und mit Codex. Dateien schützt es in beiden
|
|
206
|
+
'proj.which': 'agentwhy liest deine Gespräche mit Claude Code - im Terminal und in deinem Code-Editor - und mit Codex. Dateien schützt es in beiden. Die eigene KI von Cursor und Chats auf claude.ai sieht es nicht.',
|
|
207
207
|
'proj.switching': 'Wechsle zu {name} …',
|
|
208
208
|
'proj.switchFailed': 'Wechseln hat nicht geklappt. {reason}',
|
|
209
209
|
'proj.unreachable': 'agentwhy läuft nicht mehr. Starte agentwhy erneut, um zu wechseln.',
|
|
@@ -648,8 +648,8 @@ export const REPORT_WORDS = {
|
|
|
648
648
|
'rp.clean.privateShape': 'No file marked private was opened. The warning above is about something in a result.',
|
|
649
649
|
'rp.clean.allowed.one': 'It read {n} private file you let it read.',
|
|
650
650
|
'rp.clean.allowed.other': 'It read {n} private files you let it read.',
|
|
651
|
-
'rp.clean.allowedLine.one': 'You chose Track for it,
|
|
652
|
-
'rp.clean.allowedLine.other': 'You chose Track for them,
|
|
651
|
+
'rp.clean.allowedLine.one': 'You chose Track for it, so your AI may read it, keys and all. Nothing to do.',
|
|
652
|
+
'rp.clean.allowedLine.other': 'You chose Track for them, so your AI may read them, keys and all. Nothing to do.',
|
|
653
653
|
'rp.clean.named.one': 'It saw {n} private file name.',
|
|
654
654
|
'rp.clean.named.other': 'It saw {n} private file names.',
|
|
655
655
|
'rp.clean.namedLine.one': 'It didn’t see what is inside, so nothing to do.',
|
|
@@ -664,7 +664,7 @@ export const REPORT_WORDS = {
|
|
|
664
664
|
'rp.ask.nameA': 'Your AI saw the file’s name, not what is in it.\nA name can show up in a list of files, or in a command that didn’t print the file.\nNothing from inside the file reached your AI, so there is nothing to change.',
|
|
665
665
|
'rp.ask.safe': 'Is my data safe?',
|
|
666
666
|
'rp.ask.safeA': 'Nothing here shows your AI read a private file.\nIt didn’t open any file marked private in this conversation.\nWe only see what your AI wrote down, not what it was thinking.',
|
|
667
|
-
'rp.ask.safeAllowedA': 'Your AI read only the private files you let it read. You chose Track for them.\
|
|
667
|
+
'rp.ask.safeAllowedA': 'Your AI read only the private files you let it read. You chose Track for them.\nIt may read them, keys and all, so there is nothing to change.\nIf Claude Code should never open one of them, switch it to Block in Settings.',
|
|
668
668
|
'rp.ask.change': 'Should I change anything?',
|
|
669
669
|
'rp.ask.changeA': 'No. Nothing here needs fixing.\nIf there is a file your AI should never open, add it to your private files. From then on, every report shows when your AI reaches it.',
|
|
670
670
|
'rp.dev.title': 'Details for your developer',
|
|
@@ -1384,10 +1384,10 @@ export const REPORT_WORDS = {
|
|
|
1384
1384
|
'rp.clean.allowed.few': 'Przeczytało {n} prywatne pliki, na które mu pozwoliłeś.',
|
|
1385
1385
|
'rp.clean.allowed.many': 'Przeczytało {n} prywatnych plików, na które mu pozwoliłeś.',
|
|
1386
1386
|
'rp.clean.allowed.other': 'Przeczytało {n} prywatnego pliku, na który mu pozwoliłeś.',
|
|
1387
|
-
'rp.clean.allowedLine.one': 'Wybrałeś dla niego Obserwuje,
|
|
1388
|
-
'rp.clean.allowedLine.few': 'Wybrałeś dla nich Obserwuje,
|
|
1389
|
-
'rp.clean.allowedLine.many': 'Wybrałeś dla nich Obserwuje,
|
|
1390
|
-
'rp.clean.allowedLine.other': 'Wybrałeś dla niego Obserwuje,
|
|
1387
|
+
'rp.clean.allowedLine.one': 'Wybrałeś dla niego Obserwuje, więc twoje AI może go czytać, razem z kluczami. Nie ma nic do zrobienia.',
|
|
1388
|
+
'rp.clean.allowedLine.few': 'Wybrałeś dla nich Obserwuje, więc twoje AI może je czytać, razem z kluczami. Nie ma nic do zrobienia.',
|
|
1389
|
+
'rp.clean.allowedLine.many': 'Wybrałeś dla nich Obserwuje, więc twoje AI może je czytać, razem z kluczami. Nie ma nic do zrobienia.',
|
|
1390
|
+
'rp.clean.allowedLine.other': 'Wybrałeś dla niego Obserwuje, więc twoje AI może go czytać, razem z kluczami. Nie ma nic do zrobienia.',
|
|
1391
1391
|
'rp.clean.named.one': 'Widziało nazwę {n} prywatnego pliku.',
|
|
1392
1392
|
'rp.clean.named.few': 'Widziało nazwy {n} prywatnych plików.',
|
|
1393
1393
|
'rp.clean.named.many': 'Widziało nazwy {n} prywatnych plików.',
|
|
@@ -1408,7 +1408,7 @@ export const REPORT_WORDS = {
|
|
|
1408
1408
|
'rp.ask.nameA': 'Twoje AI widziało nazwę pliku, nie to, co jest w środku.\nNazwa może pojawić się na liście plików albo w poleceniu, które nie wypisało pliku.\nNic ze środka pliku nie dotarło do twojego AI, więc nie ma nic do zmiany.',
|
|
1409
1409
|
'rp.ask.safe': 'Czy moje dane są bezpieczne?',
|
|
1410
1410
|
'rp.ask.safeA': 'Nic tu nie wskazuje, że twoje AI przeczytało prywatny plik.\nW tej rozmowie nie otworzyło żadnego pliku oznaczonego jako prywatny.\nWidzimy tylko to, co AI zapisało, nie to, co myślało.',
|
|
1411
|
-
'rp.ask.safeAllowedA': 'Twoje AI przeczytało tylko prywatne pliki, na które mu pozwoliłeś. Wybrałeś dla nich Obserwuje.\
|
|
1411
|
+
'rp.ask.safeAllowedA': 'Twoje AI przeczytało tylko prywatne pliki, na które mu pozwoliłeś. Wybrałeś dla nich Obserwuje.\nMoże je czytać, razem z kluczami, więc nie ma nic do zmiany.\nJeśli Claude Code nie powinien otwierać któregoś z nich, przełącz go na Blokuj w Ustawieniach.',
|
|
1412
1412
|
'rp.ask.change': 'Czy muszę coś zmienić?',
|
|
1413
1413
|
'rp.ask.changeA': 'Nie. Nie ma tu nic do naprawy.\nJeśli jest plik, którego twoje AI nigdy nie powinno otwierać, dodaj go do prywatnych plików. Od tej chwili każdy raport pokaże, kiedy AI do niego sięgnie.',
|
|
1414
1414
|
'rp.dev.title': 'Szczegóły dla programisty',
|
|
@@ -2066,8 +2066,8 @@ export const REPORT_WORDS = {
|
|
|
2066
2066
|
'rp.clean.privateShape': 'Keine als privat markierte Datei wurde geöffnet. Die Warnung oben betrifft etwas in einem Ergebnis.',
|
|
2067
2067
|
'rp.clean.allowed.one': 'Sie hat {n} private Datei gelesen, die du ihr erlaubt hast.',
|
|
2068
2068
|
'rp.clean.allowed.other': 'Sie hat {n} private Dateien gelesen, die du ihr erlaubt hast.',
|
|
2069
|
-
'rp.clean.allowedLine.one': 'Du hast dafür Beobachten gewählt,
|
|
2070
|
-
'rp.clean.allowedLine.other': 'Du hast dafür Beobachten gewählt,
|
|
2069
|
+
'rp.clean.allowedLine.one': 'Du hast dafür Beobachten gewählt, also darf deine KI sie lesen, samt Schlüsseln. Nichts zu tun.',
|
|
2070
|
+
'rp.clean.allowedLine.other': 'Du hast dafür Beobachten gewählt, also darf deine KI sie lesen, samt Schlüsseln. Nichts zu tun.',
|
|
2071
2071
|
'rp.clean.named.one': 'Sie hat den Namen von {n} privaten Datei gesehen.',
|
|
2072
2072
|
'rp.clean.named.other': 'Sie hat die Namen von {n} privaten Dateien gesehen.',
|
|
2073
2073
|
'rp.clean.namedLine.one': 'Sie hat nicht gesehen, was drin ist, also nichts zu tun.',
|
|
@@ -2082,7 +2082,7 @@ export const REPORT_WORDS = {
|
|
|
2082
2082
|
'rp.ask.nameA': 'Deine KI hat den Namen der Datei gesehen, nicht was drin ist.\nEin Name kann in einer Dateiliste stehen oder in einem Befehl, der die Datei nicht ausgegeben hat.\nNichts aus der Datei hat deine KI erreicht, also ist nichts zu ändern.',
|
|
2083
2083
|
'rp.ask.safe': 'Sind meine Daten sicher?',
|
|
2084
2084
|
'rp.ask.safeA': 'Nichts hier zeigt, dass deine KI eine private Datei gelesen hat.\nSie hat in dieser Unterhaltung keine als privat markierte Datei geöffnet.\nWir sehen nur, was die KI aufgeschrieben hat, nicht was sie gedacht hat.',
|
|
2085
|
-
'rp.ask.safeAllowedA': 'Deine KI hat nur private Dateien gelesen, die du ihr erlaubt hast. Du hast dafür Beobachten gewählt.\
|
|
2085
|
+
'rp.ask.safeAllowedA': 'Deine KI hat nur private Dateien gelesen, die du ihr erlaubt hast. Du hast dafür Beobachten gewählt.\nSie darf sie lesen, samt Schlüsseln, also ist nichts zu ändern.\nWenn Claude Code eine davon nie öffnen soll, stell sie in den Einstellungen auf Blockieren.',
|
|
2086
2086
|
'rp.ask.change': 'Sollte ich etwas ändern?',
|
|
2087
2087
|
'rp.ask.changeA': 'Nein. Hier muss nichts behoben werden.\nWenn es eine Datei gibt, die deine KI nie öffnen soll, füge sie deinen privaten Dateien hinzu. Ab dann zeigt jeder Bericht, wenn deine KI sie erreicht.',
|
|
2088
2088
|
'rp.dev.title': 'Technische Details',
|
|
@@ -27,6 +27,10 @@ export const SETTINGS_WORDS = {
|
|
|
27
27
|
'set.card.fine.name': 'Once per conversation, even when all is fine',
|
|
28
28
|
'set.card.fine.when': 'Peace of mind: a quick sign that we’re watching.',
|
|
29
29
|
'set.card.fine.answer': 'All good — I didn’t open anything private.',
|
|
30
|
+
'set.system.title': 'System notifications',
|
|
31
|
+
'set.system.lead': 'Besides what agentwhy says in the conversation, it can show a notification in the corner of your screen.',
|
|
32
|
+
'set.system.name': 'A notification in the corner of the screen',
|
|
33
|
+
'set.system.when': 'It shows for a moment, whichever app your AI runs in. Without it, agentwhy speaks only in the conversation. On a Mac only.',
|
|
30
34
|
'set.chat.ai': 'AI',
|
|
31
35
|
'set.state.local': 'On — for just you',
|
|
32
36
|
'set.state.shared': 'On — for everyone on this project',
|
|
@@ -96,13 +100,17 @@ export const SETTINGS_WORDS = {
|
|
|
96
100
|
'set.finish.yes.other': 'Yes, block them',
|
|
97
101
|
'set.finish.honest': 'This stops the obvious tries, not every trick. If something slips past, you’ll still see it in your report.',
|
|
98
102
|
'set.rule.gap.open': 'Not fully blocked — Claude Code can still read what’s inside with a search or a command.',
|
|
103
|
+
'set.rule.covered': 'Claude Code still blocks this file — its Block rule {pattern} also covers it. Switch that rule to Track, or rename the file.',
|
|
99
104
|
'set.rule.gap.none': 'Not blocked yet — Claude Code can still open it.',
|
|
100
105
|
'set.codex.off': '<strong>Codex isn’t blocked yet.</strong> <span class="set-soft">It can still open and search through the files blocked here.</span>',
|
|
101
106
|
'set.codex.go': 'Block in Codex too',
|
|
102
|
-
'set.codex.on': 'Codex is kept from the same files
|
|
107
|
+
'set.codex.on': '<strong>Codex is kept from the same files — from the first message, in the terminal and in VS Code.</strong> <span class="set-soft">agentwhy set up its check in your own Codex settings and confirmed it there itself, so there is nothing to confirm in Codex.</span>',
|
|
108
|
+
'set.codex.stale': '<strong>Codex may still ask before it blocks.</strong> <span class="set-soft">agentwhy can set up its check in your own Codex settings and confirm it there itself, so Codex blocks from the first message — in the terminal and in VS Code, with nothing to confirm in Codex.</span>',
|
|
109
|
+
'set.codex.fix': 'Set it up for me',
|
|
103
110
|
'set.codex.title': 'Block these files in Codex too?',
|
|
104
|
-
'set.codex.text': '
|
|
111
|
+
'set.codex.text': 'agentwhy will add its check to your own Codex settings on this computer and confirm it there itself, so Codex can’t open the files blocked here or search through them — from the first message, in the terminal and in VS Code, with nothing to confirm in Codex. The check only acts in projects where files are blocked.',
|
|
105
112
|
'set.codex.yes': 'Yes, block them in Codex',
|
|
113
|
+
'set.confirm.uninstall.codex': 'Also take agentwhy’s check out of Codex on this computer. Left unticked, it stays for your other projects — and does nothing where no files are blocked.',
|
|
106
114
|
'set.exceptions.one': '1 exception — see the details for your developer.',
|
|
107
115
|
'set.exceptions.other': '{n} exceptions — see the details for your developer.',
|
|
108
116
|
'set.confirm.alerts.on': 'Turn on alerts?',
|
|
@@ -225,6 +233,10 @@ export const SETTINGS_WORDS = {
|
|
|
225
233
|
'set.card.fine.name': 'Raz na rozmowę, nawet gdy wszystko jest w porządku',
|
|
226
234
|
'set.card.fine.when': 'Dla spokoju: krótki znak, że czuwamy.',
|
|
227
235
|
'set.card.fine.answer': 'Wszystko w porządku — nie otwierałem niczego prywatnego.',
|
|
236
|
+
'set.system.title': 'Powiadomienia systemowe',
|
|
237
|
+
'set.system.lead': 'Oprócz tego, co agentwhy mówi w rozmowie, może pokazywać powiadomienie w rogu ekranu.',
|
|
238
|
+
'set.system.name': 'Powiadomienie w rogu ekranu',
|
|
239
|
+
'set.system.when': 'Pojawia się na chwilę, w jakiejkolwiek aplikacji działa twoje AI. Bez niego agentwhy mówi tylko w rozmowie. Tylko na Macu.',
|
|
228
240
|
'set.chat.ai': 'AI',
|
|
229
241
|
'set.state.local': 'Włączone — tylko dla ciebie',
|
|
230
242
|
'set.state.shared': 'Włączone — dla wszystkich w projekcie',
|
|
@@ -303,13 +315,17 @@ export const SETTINGS_WORDS = {
|
|
|
303
315
|
'set.finish.yes.many': 'Tak, zablokuj je',
|
|
304
316
|
'set.finish.honest': 'To zatrzymuje oczywiste próby, nie każdą sztuczkę. Jeśli coś się prześlizgnie, i tak zobaczysz to w raporcie.',
|
|
305
317
|
'set.rule.gap.open': 'Nie w pełni zablokowane — Claude Code wciąż może przeczytać zawartość przez przeszukiwanie albo komendę.',
|
|
318
|
+
'set.rule.covered': 'Claude Code nadal blokuje ten plik — obejmuje go też reguła blokady {pattern}. Przełącz tamtą regułę na „Obserwuje” albo zmień nazwę pliku.',
|
|
306
319
|
'set.rule.gap.none': 'Jeszcze niezablokowane — Claude Code wciąż może to otworzyć.',
|
|
307
320
|
'set.codex.off': '<strong>Codex nie jest jeszcze zablokowany.</strong> <span class="set-soft">Wciąż może otwierać i przeszukiwać pliki zablokowane tutaj.</span>',
|
|
308
321
|
'set.codex.go': 'Zablokuj też w Codexie',
|
|
309
|
-
'set.codex.on': 'Codex nie dostanie się do tych samych plików,
|
|
322
|
+
'set.codex.on': '<strong>Codex nie dostanie się do tych samych plików — od pierwszej wiadomości, w terminalu i w VS Code.</strong> <span class="set-soft">agentwhy dodał swoją kontrolę do Twoich własnych ustawień Codexa i sam ją tam potwierdził, więc w Codexie nie musisz niczego potwierdzać.</span>',
|
|
323
|
+
'set.codex.stale': '<strong>Codex może jeszcze pytać, zanim zablokuje.</strong> <span class="set-soft">agentwhy może dodać swoją kontrolę do Twoich własnych ustawień Codexa i sam ją tam potwierdzić, by Codex blokował od pierwszej wiadomości — w terminalu i w VS Code, bez potwierdzania czegokolwiek w Codexie.</span>',
|
|
324
|
+
'set.codex.fix': 'Ustaw to za mnie',
|
|
310
325
|
'set.codex.title': 'Zablokować te pliki także w Codexie?',
|
|
311
|
-
'set.codex.text': 'Codex nie będzie mógł otwierać plików zablokowanych tutaj ani ich
|
|
326
|
+
'set.codex.text': 'agentwhy doda swoją kontrolę do Twoich własnych ustawień Codexa na tym komputerze i sam ją tam potwierdzi, więc Codex nie będzie mógł otwierać plików zablokowanych tutaj ani ich przeszukiwać — od pierwszej wiadomości, w terminalu i w VS Code, bez potwierdzania czegokolwiek w Codexie. Kontrola działa tylko w projektach, w których pliki są zablokowane.',
|
|
312
327
|
'set.codex.yes': 'Tak, zablokuj w Codexie',
|
|
328
|
+
'set.confirm.uninstall.codex': 'Usuń też kontrolę agentwhy z Codexa na tym komputerze. Bez zaznaczenia zostaje dla Twoich pozostałych projektów — a tam, gdzie żadne pliki nie są zablokowane, nic nie robi.',
|
|
313
329
|
'set.exceptions.one': '1 wyjątek — szczegóły w sekcji dla twojego programisty.',
|
|
314
330
|
'set.exceptions.few': '{n} wyjątki — szczegóły w sekcji dla twojego programisty.',
|
|
315
331
|
'set.exceptions.many': '{n} wyjątków — szczegóły w sekcji dla twojego programisty.',
|
|
@@ -433,6 +449,10 @@ export const SETTINGS_WORDS = {
|
|
|
433
449
|
'set.card.fine.name': 'Einmal pro Unterhaltung, auch wenn alles gut ist',
|
|
434
450
|
'set.card.fine.when': 'Zur Beruhigung: ein kurzes Zeichen, dass wir aufpassen.',
|
|
435
451
|
'set.card.fine.answer': 'Alles gut — ich habe nichts Privates geöffnet.',
|
|
452
|
+
'set.system.title': 'Systembenachrichtigungen',
|
|
453
|
+
'set.system.lead': 'Zusätzlich zu dem, was agentwhy im Chat sagt, kann es eine Benachrichtigung in der Ecke deines Bildschirms zeigen.',
|
|
454
|
+
'set.system.name': 'Eine Benachrichtigung in der Bildschirmecke',
|
|
455
|
+
'set.system.when': 'Sie erscheint kurz, egal in welcher App deine KI läuft. Ohne sie spricht agentwhy nur im Chat. Nur auf dem Mac.',
|
|
436
456
|
'set.chat.ai': 'KI',
|
|
437
457
|
'set.state.local': 'An — nur für dich',
|
|
438
458
|
'set.state.shared': 'An — für alle in diesem Projekt',
|
|
@@ -502,13 +522,17 @@ export const SETTINGS_WORDS = {
|
|
|
502
522
|
'set.finish.yes.other': 'Ja, blockieren',
|
|
503
523
|
'set.finish.honest': 'Das stoppt die offensichtlichen Versuche, nicht jeden Trick. Wenn etwas durchrutscht, siehst du es trotzdem in deinem Bericht.',
|
|
504
524
|
'set.rule.gap.open': 'Nicht ganz blockiert – Claude Code kann den Inhalt noch mit einer Suche oder einem Befehl lesen.',
|
|
525
|
+
'set.rule.covered': 'Claude Code blockiert diese Datei weiterhin — auch die Blockier-Regel {pattern} erfasst sie. Stelle jene Regel auf „Beobachten“ um, oder benenne die Datei um.',
|
|
505
526
|
'set.rule.gap.none': 'Noch nicht blockiert – Claude Code kann es noch öffnen.',
|
|
506
527
|
'set.codex.off': '<strong>Codex ist noch nicht blockiert.</strong> <span class="set-soft">Es kann die hier blockierten Dateien noch öffnen und durchsuchen.</span>',
|
|
507
528
|
'set.codex.go': 'Auch in Codex blockieren',
|
|
508
|
-
'set.codex.on': 'Codex kommt an dieselben Dateien nicht heran,
|
|
529
|
+
'set.codex.on': '<strong>Codex kommt an dieselben Dateien nicht heran — von der ersten Nachricht an, im Terminal und in VS Code.</strong> <span class="set-soft">agentwhy hat seine Kontrolle in deinen eigenen Codex-Einstellungen eingerichtet und dort selbst bestätigt; in Codex musst du nichts bestätigen.</span>',
|
|
530
|
+
'set.codex.stale': '<strong>Codex fragt womöglich noch, bevor es blockiert.</strong> <span class="set-soft">agentwhy kann seine Kontrolle in deinen eigenen Codex-Einstellungen einrichten und dort selbst bestätigen, damit Codex von der ersten Nachricht an blockiert — im Terminal und in VS Code, ohne dass du in Codex etwas bestätigst.</span>',
|
|
531
|
+
'set.codex.fix': 'Für mich einrichten',
|
|
509
532
|
'set.codex.title': 'Diese Dateien auch in Codex blockieren?',
|
|
510
|
-
'set.codex.text': 'Codex kann die hier blockierten Dateien dann weder öffnen noch durchsuchen,
|
|
533
|
+
'set.codex.text': 'agentwhy fügt seine Kontrolle deinen eigenen Codex-Einstellungen auf diesem Computer hinzu und bestätigt sie dort selbst. Codex kann die hier blockierten Dateien dann weder öffnen noch durchsuchen — von der ersten Nachricht an, im Terminal und in VS Code, ohne dass du in Codex etwas bestätigst. Die Kontrolle wirkt nur in Projekten, in denen Dateien blockiert sind.',
|
|
511
534
|
'set.codex.yes': 'Ja, in Codex blockieren',
|
|
535
|
+
'set.confirm.uninstall.codex': 'Nimm agentwhys Kontrolle auch aus Codex auf diesem Computer. Ohne Häkchen bleibt sie für deine anderen Projekte — und tut nichts, wo keine Dateien blockiert sind.',
|
|
512
536
|
'set.exceptions.one': '1 Ausnahme — siehe die Details für deine Entwicklerin oder deinen Entwickler.',
|
|
513
537
|
'set.exceptions.other': '{n} Ausnahmen — siehe die Details für deine Entwicklerin oder deinen Entwickler.',
|
|
514
538
|
'set.confirm.alerts.on': 'Hinweise einschalten?',
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
// Copyright 2026 Nessprim Karol Kozer
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
1
3
|
import { textLink } from '../../render/ui/button.js';
|
|
2
4
|
import { dayName } from '../../render/ui/local-date.js';
|
|
3
5
|
import { inLanguages, labelAttributes } from '../../render/report-copy.js';
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
// Copyright 2026 Nessprim Karol Kozer
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
1
3
|
import { inLanguages } from '../../render/report-copy.js';
|
|
2
4
|
import { askPanel, askTrigger } from '../../render/ui/ask-panel.js';
|
|
3
5
|
import { settingsView } from '../settings/settings-view.js';
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
// Copyright 2026 Nessprim Karol Kozer
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
1
3
|
import { FILES_SCRIPT, FILES_VIEW_STYLE } from '../../render/report-page/files-view.js';
|
|
2
4
|
import { HELPERS_SCRIPT, HELPERS_VIEW_STYLE } from '../../render/report-page/helpers-view.js';
|
|
3
5
|
import { STORY_WINDOW_STYLE } from '../../render/report-page/story-window.js';
|