@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.
Files changed (400) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE +2 -0
  3. package/README.md +181 -0
  4. package/THIRD_PARTY_NOTICES.md +31 -0
  5. package/dist/adapter/claude-code/contract/assumptions.js +208 -0
  6. package/dist/adapter/claude-code/contract/denials.js +15 -0
  7. package/dist/adapter/claude-code/contract/entry-points.js +15 -0
  8. package/dist/adapter/claude-code/contract/fields.js +73 -0
  9. package/dist/adapter/claude-code/contract/hooks.js +96 -0
  10. package/dist/adapter/claude-code/contract/identifiers.js +15 -0
  11. package/dist/adapter/claude-code/contract/layout.js +29 -0
  12. package/dist/adapter/claude-code/contract/line-types.js +26 -0
  13. package/dist/adapter/claude-code/contract/projects.js +23 -0
  14. package/dist/adapter/claude-code/contract/recognition.js +14 -0
  15. package/dist/adapter/claude-code/contract/session-title.js +20 -0
  16. package/dist/adapter/claude-code/contract/settings.js +27 -0
  17. package/dist/adapter/claude-code/contract/task-notifications.js +33 -0
  18. package/dist/adapter/claude-code/contract/tools.js +37 -0
  19. package/dist/adapter/claude-code/contract/version.js +51 -0
  20. package/dist/adapter/claude-code/discovery/claude-code-project-catalogue.js +129 -0
  21. package/dist/adapter/claude-code/discovery/claude-code-recognition.js +46 -0
  22. package/dist/adapter/claude-code/discovery/claude-code-session-catalogue.js +100 -0
  23. package/dist/adapter/claude-code/discovery/claude-code-session-discovery.js +61 -0
  24. package/dist/adapter/claude-code/discovery/claude-code-session-titles.js +28 -0
  25. package/dist/adapter/claude-code/discovery/discovered-session.js +1 -0
  26. package/dist/adapter/claude-code/discovery/session-entries.js +41 -0
  27. package/dist/adapter/claude-code/discovery/transcript-tail.js +81 -0
  28. package/dist/adapter/claude-code/events/claude-code-session-source.js +197 -0
  29. package/dist/adapter/claude-code/events/delegation-index.js +15 -0
  30. package/dist/adapter/claude-code/events/transcript-scan.js +179 -0
  31. package/dist/adapter/claude-code/hooks/hook-output.js +42 -0
  32. package/dist/adapter/claude-code/hooks/pre-tool-use-input.js +23 -0
  33. package/dist/adapter/claude-code/hooks/stop-input.js +25 -0
  34. package/dist/adapter/claude-code/hooks/subagent-stop-input.js +26 -0
  35. package/dist/adapter/claude-code/policy/deny-rules.js +46 -0
  36. package/dist/adapter/claude-code/probe/claude-code-probe.js +86 -0
  37. package/dist/adapter/claude-code/probe/collectors/agent-tool-input-key-collector.js +24 -0
  38. package/dist/adapter/claude-code/probe/collectors/denial-kind-collector.js +20 -0
  39. package/dist/adapter/claude-code/probe/collectors/denied-call-collector.js +11 -0
  40. package/dist/adapter/claude-code/probe/collectors/identifier-collector.js +19 -0
  41. package/dist/adapter/claude-code/probe/collectors/line-collector.js +1 -0
  42. package/dist/adapter/claude-code/probe/collectors/line-type-collector.js +29 -0
  43. package/dist/adapter/claude-code/probe/collectors/sidechain-collector.js +20 -0
  44. package/dist/adapter/claude-code/probe/collectors/task-notification-collector.js +51 -0
  45. package/dist/adapter/claude-code/probe/collectors/tool-result-reference-collector.js +31 -0
  46. package/dist/adapter/claude-code/probe/collectors/tool-use-collector.js +24 -0
  47. package/dist/adapter/claude-code/probe/collectors/tool-version-collector.js +14 -0
  48. package/dist/adapter/claude-code/probe/collectors/top-level-key-collector.js +14 -0
  49. package/dist/adapter/claude-code/probe/collectors/unknown-line-type-key-collector.js +24 -0
  50. package/dist/adapter/claude-code/probe/collectors/working-directory-collector.js +28 -0
  51. package/dist/adapter/claude-code/probe/doctor-report.js +1 -0
  52. package/dist/adapter/claude-code/probe/meta-tally.js +42 -0
  53. package/dist/adapter/claude-code/probe/session-probe.js +1 -0
  54. package/dist/adapter/claude-code/probe/session-tally.js +41 -0
  55. package/dist/adapter/claude-code/probe/transcript-line.js +30 -0
  56. package/dist/adapter/claude-code/probe/transcript-tally.js +74 -0
  57. package/dist/adapter/claude-code/settings/deny-entries.js +65 -0
  58. package/dist/adapter/claude-code/settings/hook-entries.js +303 -0
  59. package/dist/adapter/codex/contract/actions.js +69 -0
  60. package/dist/adapter/codex/contract/assumptions.js +55 -0
  61. package/dist/adapter/codex/contract/capabilities.js +24 -0
  62. package/dist/adapter/codex/contract/delegations.js +30 -0
  63. package/dist/adapter/codex/contract/deliveries.js +25 -0
  64. package/dist/adapter/codex/contract/envelope.js +33 -0
  65. package/dist/adapter/codex/contract/hook-refusals.js +14 -0
  66. package/dist/adapter/codex/contract/hooks.js +46 -0
  67. package/dist/adapter/codex/contract/messages.js +47 -0
  68. package/dist/adapter/codex/contract/permissions.js +27 -0
  69. package/dist/adapter/codex/contract/reviews.js +13 -0
  70. package/dist/adapter/codex/contract/session.js +31 -0
  71. package/dist/adapter/codex/contract/turns.js +23 -0
  72. package/dist/adapter/codex/contract/version.js +15 -0
  73. package/dist/adapter/codex/discovery/codex-conversations.js +44 -0
  74. package/dist/adapter/codex/discovery/codex-project-catalogue.js +49 -0
  75. package/dist/adapter/codex/discovery/codex-recognition.js +20 -0
  76. package/dist/adapter/codex/discovery/codex-session-catalogue.js +28 -0
  77. package/dist/adapter/codex/discovery/codex-session-discovery.js +115 -0
  78. package/dist/adapter/codex/discovery/codex-session-index.js +21 -0
  79. package/dist/adapter/codex/discovery/codex-session-titles.js +135 -0
  80. package/dist/adapter/codex/discovery/session-header.js +86 -0
  81. package/dist/adapter/codex/discovery/session-owners.js +11 -0
  82. package/dist/adapter/codex/discovery/session-roots.js +49 -0
  83. package/dist/adapter/codex/events/action-items.js +138 -0
  84. package/dist/adapter/codex/events/capability-records.js +26 -0
  85. package/dist/adapter/codex/events/codex-session-source.js +121 -0
  86. package/dist/adapter/codex/events/hook-refusals.js +27 -0
  87. package/dist/adapter/codex/events/rollout-scan.js +614 -0
  88. package/dist/adapter/codex/events/turn-permissions.js +60 -0
  89. package/dist/adapter/codex/hooks/pre-tool-use-input.js +24 -0
  90. package/dist/adapter/codex/hooks/stop-refusals.js +57 -0
  91. package/dist/adapter/codex/probe/codex-doctor-report.js +1 -0
  92. package/dist/adapter/codex/probe/codex-probe.js +268 -0
  93. package/dist/adapter/codex/settings/codex-hooks.js +83 -0
  94. package/dist/cli/cli-command.js +1 -0
  95. package/dist/cli/command-router.js +42 -0
  96. package/dist/cli/commands/check-cli-command.js +128 -0
  97. package/dist/cli/commands/codex-stop-cli-command.js +27 -0
  98. package/dist/cli/commands/doctor-arguments.js +32 -0
  99. package/dist/cli/commands/doctor-cli-command.js +31 -0
  100. package/dist/cli/commands/doctor-usage.js +14 -0
  101. package/dist/cli/commands/init-cli-command.js +123 -0
  102. package/dist/cli/commands/menu-cli-command.js +58 -0
  103. package/dist/cli/commands/notify-cli-command.js +158 -0
  104. package/dist/cli/commands/refuse-cli-command.js +79 -0
  105. package/dist/cli/commands/report-arguments.js +62 -0
  106. package/dist/cli/commands/report-cli-command.js +36 -0
  107. package/dist/cli/commands/report-usage.js +41 -0
  108. package/dist/cli/commands/sessions-cli-command.js +184 -0
  109. package/dist/cli/commands/start-cli-command.js +83 -0
  110. package/dist/cli/commands/watch-cli-command.js +142 -0
  111. package/dist/cli/exit-codes.js +13 -0
  112. package/dist/cli/project-switches.js +46 -0
  113. package/dist/cli.js +80 -0
  114. package/dist/composition-root.js +411 -0
  115. package/dist/core/access/command-line.js +454 -0
  116. package/dist/core/access/listing.js +58 -0
  117. package/dist/core/access/path-shape.js +59 -0
  118. package/dist/core/access/path-tokens.js +37 -0
  119. package/dist/core/access/protected-access.js +310 -0
  120. package/dist/core/access/protected-values.js +102 -0
  121. package/dist/core/access/recorded-effect.js +67 -0
  122. package/dist/core/access/returns.js +173 -0
  123. package/dist/core/access/search-output.js +34 -0
  124. package/dist/core/access/search-reach.js +268 -0
  125. package/dist/core/access/uses.js +143 -0
  126. package/dist/core/access/words-before.js +52 -0
  127. package/dist/core/agent.js +1 -0
  128. package/dist/core/capability.js +11 -0
  129. package/dist/core/combined-project-catalogue.js +36 -0
  130. package/dist/core/combined-session-catalogue.js +25 -0
  131. package/dist/core/completeness.js +10 -0
  132. package/dist/core/context.js +1 -0
  133. package/dist/core/correlation/correlate.js +329 -0
  134. package/dist/core/delegation.js +1 -0
  135. package/dist/core/detector/prompt-signals.js +78 -0
  136. package/dist/core/entry-point.js +1 -0
  137. package/dist/core/event.js +1 -0
  138. package/dist/core/evidence.js +9 -0
  139. package/dist/core/late-message.js +32 -0
  140. package/dist/core/message.js +1 -0
  141. package/dist/core/nearest-project.js +28 -0
  142. package/dist/core/policy/default-policy.js +32 -0
  143. package/dist/core/policy/glob.js +56 -0
  144. package/dist/core/policy/parse-policy.js +70 -0
  145. package/dist/core/policy/policy.js +20 -0
  146. package/dist/core/policy/resolve-policy.js +16 -0
  147. package/dist/core/project-catalogue.js +1 -0
  148. package/dist/core/project-root.js +133 -0
  149. package/dist/core/provider-titles.js +10 -0
  150. package/dist/core/redaction/entropy.js +46 -0
  151. package/dist/core/redaction/redacted.js +4 -0
  152. package/dist/core/redaction/redactor.js +339 -0
  153. package/dist/core/redaction/secret-patterns.js +22 -0
  154. package/dist/core/redaction/value-shapes.js +81 -0
  155. package/dist/core/redaction/value-trace.js +110 -0
  156. package/dist/core/review.js +1 -0
  157. package/dist/core/session-catalogue.js +19 -0
  158. package/dist/core/session-filter.js +42 -0
  159. package/dist/core/session-format.js +27 -0
  160. package/dist/core/session-model.js +1 -0
  161. package/dist/core/session-reader.js +22 -0
  162. package/dist/core/session-records.js +1 -0
  163. package/dist/core/session-source.js +1 -0
  164. package/dist/core/session-titles.js +21 -0
  165. package/dist/core/turn.js +1 -0
  166. package/dist/doctor/codex-doctor.js +14 -0
  167. package/dist/doctor/doctor-use-case.js +1 -0
  168. package/dist/doctor/format-selecting-doctor.js +28 -0
  169. package/dist/doctor/render/attention/attention-rule.js +1 -0
  170. package/dist/doctor/render/attention/doctor-attention-rules.js +28 -0
  171. package/dist/doctor/render/attention/rules/damaged-meta-files-rule.js +8 -0
  172. package/dist/doctor/render/attention/rules/damaged-transcripts-rule.js +9 -0
  173. package/dist/doctor/render/attention/rules/incomplete-subagent-pairs-rule.js +6 -0
  174. package/dist/doctor/render/attention/rules/missing-main-transcript-rule.js +5 -0
  175. package/dist/doctor/render/attention/rules/missing-spilled-results-rule.js +6 -0
  176. package/dist/doctor/render/attention/rules/multiple-working-directories-rule.js +15 -0
  177. package/dist/doctor/render/attention/rules/unknown-denial-kinds-rule.js +5 -0
  178. package/dist/doctor/render/attention/rules/unknown-line-types-rule.js +6 -0
  179. package/dist/doctor/render/attention/rules/unrecognised-entries-rule.js +6 -0
  180. package/dist/doctor/render/attention/rules/unusable-directories-rule.js +12 -0
  181. package/dist/doctor/render/attention/transcript-scopes.js +6 -0
  182. package/dist/doctor/render/codex-text-doctor-renderer.js +97 -0
  183. package/dist/doctor/render/doctor-renderers.js +1 -0
  184. package/dist/doctor/render/json-doctor-renderer.js +7 -0
  185. package/dist/doctor/render/output-format.js +1 -0
  186. package/dist/doctor/render/text-doctor-renderer.js +124 -0
  187. package/dist/doctor/session-doctor.js +16 -0
  188. package/dist/infrastructure/clack-asker.js +24 -0
  189. package/dist/infrastructure/clack-chooser.js +40 -0
  190. package/dist/infrastructure/clack-multi-chooser.js +31 -0
  191. package/dist/infrastructure/file-alert-store.js +120 -0
  192. package/dist/infrastructure/file-checked-store.js +55 -0
  193. package/dist/infrastructure/file-mark-store.js +67 -0
  194. package/dist/infrastructure/file-onboarding-store.js +93 -0
  195. package/dist/infrastructure/folder-window.js +26 -0
  196. package/dist/infrastructure/node-agentwhy-invocation.js +99 -0
  197. package/dist/infrastructure/node-browser.js +40 -0
  198. package/dist/infrastructure/node-file-system.js +111 -0
  199. package/dist/infrastructure/node-local-server.js +115 -0
  200. package/dist/infrastructure/node-text-input.js +26 -0
  201. package/dist/infrastructure/os-notifier.js +21 -0
  202. package/dist/infrastructure/osascript-folder-chooser.js +53 -0
  203. package/dist/infrastructure/powershell-folder-chooser.js +78 -0
  204. package/dist/infrastructure/real-directory.js +18 -0
  205. package/dist/infrastructure/stream-printer.js +11 -0
  206. package/dist/infrastructure/terminal-banner.js +19 -0
  207. package/dist/ports/agentwhy-invocation.js +1 -0
  208. package/dist/ports/alert-store.js +1 -0
  209. package/dist/ports/asker.js +1 -0
  210. package/dist/ports/browser.js +1 -0
  211. package/dist/ports/checked-store.js +1 -0
  212. package/dist/ports/chooser.js +1 -0
  213. package/dist/ports/directory-reader.js +1 -0
  214. package/dist/ports/file-access-error.js +11 -0
  215. package/dist/ports/file-reader.js +1 -0
  216. package/dist/ports/file-tail-reader.js +1 -0
  217. package/dist/ports/file-writer.js +1 -0
  218. package/dist/ports/folder-chooser.js +1 -0
  219. package/dist/ports/local-server.js +1 -0
  220. package/dist/ports/mark-store.js +10 -0
  221. package/dist/ports/multi-chooser.js +1 -0
  222. package/dist/ports/notifier.js +1 -0
  223. package/dist/ports/onboarding-store.js +1 -0
  224. package/dist/ports/printer.js +1 -0
  225. package/dist/ports/text-input.js +1 -0
  226. package/dist/refuse/command-reach.js +135 -0
  227. package/dist/refuse/command-refusal.js +88 -0
  228. package/dist/refuse/render/codex-stop-words.js +21 -0
  229. package/dist/refuse/render/refusal-words.js +34 -0
  230. package/dist/report/build-report.js +1037 -0
  231. package/dist/report/check/actions-digest.js +73 -0
  232. package/dist/report/check/check-lines.js +83 -0
  233. package/dist/report/check/mark-request.js +90 -0
  234. package/dist/report/check/marks.js +84 -0
  235. package/dist/report/check/render/text-digest-renderer.js +332 -0
  236. package/dist/report/check/session-actions.js +90 -0
  237. package/dist/report/check/session-check.js +91 -0
  238. package/dist/report/choose-policy.js +61 -0
  239. package/dist/report/flow-reads.js +18 -0
  240. package/dist/report/private-files/tell-lists.js +84 -0
  241. package/dist/report/project-rules.js +33 -0
  242. package/dist/report/render/home-relative.js +18 -0
  243. package/dist/report/render/html-head.js +26 -0
  244. package/dist/report/render/html-report-components.js +48 -0
  245. package/dist/report/render/html-report-styles.js +500 -0
  246. package/dist/report/render/html-sidebar.js +42 -0
  247. package/dist/report/render/path-tail.js +14 -0
  248. package/dist/report/render/report-copy.js +1177 -0
  249. package/dist/report/render/report-page/advanced-view.js +167 -0
  250. package/dist/report/render/report-page/file-story.js +114 -0
  251. package/dist/report/render/report-page/files-view.js +381 -0
  252. package/dist/report/render/report-page/files.js +77 -0
  253. package/dist/report/render/report-page/fix-wizard-script.js +269 -0
  254. package/dist/report/render/report-page/fix-wizard.js +310 -0
  255. package/dist/report/render/report-page/helpers-view.js +383 -0
  256. package/dist/report/render/report-page/helpers.js +51 -0
  257. package/dist/report/render/report-page/item-names.js +63 -0
  258. package/dist/report/render/report-page/protect-patterns.js +13 -0
  259. package/dist/report/render/report-page/providers.js +208 -0
  260. package/dist/report/render/report-page/record-view.js +367 -0
  261. package/dist/report/render/report-page/report-page-renderer.js +129 -0
  262. package/dist/report/render/report-page/report-views.js +31 -0
  263. package/dist/report/render/report-page/story-window.js +356 -0
  264. package/dist/report/render/report-page/times.js +25 -0
  265. package/dist/report/render/report-page/to-do-view.js +299 -0
  266. package/dist/report/render/report-page/to-do.js +152 -0
  267. package/dist/report/render/report-page.js +1 -0
  268. package/dist/report/render/session-view.js +250 -0
  269. package/dist/report/render/text-report-renderer.js +981 -0
  270. package/dist/report/render/ui/add-file-popup.js +122 -0
  271. package/dist/report/render/ui/app-sidebar.js +78 -0
  272. package/dist/report/render/ui/ask-panel.js +80 -0
  273. package/dist/report/render/ui/avatar.js +19 -0
  274. package/dist/report/render/ui/backdrop.js +29 -0
  275. package/dist/report/render/ui/brand-mark.js +4 -0
  276. package/dist/report/render/ui/button.js +67 -0
  277. package/dist/report/render/ui/callout.js +20 -0
  278. package/dist/report/render/ui/chat-example.js +17 -0
  279. package/dist/report/render/ui/checklist.js +50 -0
  280. package/dist/report/render/ui/confirm-dialog.js +34 -0
  281. package/dist/report/render/ui/data-table.js +49 -0
  282. package/dist/report/render/ui/drawer.js +25 -0
  283. package/dist/report/render/ui/file-chip.js +37 -0
  284. package/dist/report/render/ui/fold-line.js +22 -0
  285. package/dist/report/render/ui/guide-card.js +25 -0
  286. package/dist/report/render/ui/hero.js +37 -0
  287. package/dist/report/render/ui/labelled-select.js +10 -0
  288. package/dist/report/render/ui/live-script.js +222 -0
  289. package/dist/report/render/ui/local-date.js +58 -0
  290. package/dist/report/render/ui/mode-icon.js +6 -0
  291. package/dist/report/render/ui/page-shell.js +101 -0
  292. package/dist/report/render/ui/pill-tabs.js +47 -0
  293. package/dist/report/render/ui/popup.js +77 -0
  294. package/dist/report/render/ui/progress.js +35 -0
  295. package/dist/report/render/ui/project-list.js +284 -0
  296. package/dist/report/render/ui/scope-choice.js +19 -0
  297. package/dist/report/render/ui/stats.js +21 -0
  298. package/dist/report/render/ui/status-icon.js +30 -0
  299. package/dist/report/render/ui/status-look.js +21 -0
  300. package/dist/report/render/ui/switch.js +11 -0
  301. package/dist/report/render/ui/tag.js +19 -0
  302. package/dist/report/render/ui/task-list.js +56 -0
  303. package/dist/report/render/ui/tokens.js +46 -0
  304. package/dist/report/render/ui/update-notice.js +146 -0
  305. package/dist/report/render/ui/words/app-words.js +163 -0
  306. package/dist/report/render/ui/words/conversations-words.js +457 -0
  307. package/dist/report/render/ui/words/month-words.js +59 -0
  308. package/dist/report/render/ui/words/onboarding-words.js +446 -0
  309. package/dist/report/render/ui/words/projects-words.js +217 -0
  310. package/dist/report/render/ui/words/report-words.js +2099 -0
  311. package/dist/report/render/ui/words/settings-words.js +611 -0
  312. package/dist/report/render/ui/words/to-fix-words.js +287 -0
  313. package/dist/report/report-model.js +2 -0
  314. package/dist/report/report-use-case.js +1 -0
  315. package/dist/report/rule-names.js +20 -0
  316. package/dist/report/session-report.js +163 -0
  317. package/dist/report/start/app-nav.js +37 -0
  318. package/dist/report/start/conversations/calendar-view.js +104 -0
  319. package/dist/report/start/conversations/conversation-columns.js +187 -0
  320. package/dist/report/start/conversations/conversations-renderer.js +54 -0
  321. package/dist/report/start/conversations/empty-week.js +120 -0
  322. package/dist/report/start/conversations/files-window.js +166 -0
  323. package/dist/report/start/conversations/period-section.js +280 -0
  324. package/dist/report/start/conversations/periods-script.js +440 -0
  325. package/dist/report/start/conversations/periods.js +110 -0
  326. package/dist/report/start/conversations/week-view.js +30 -0
  327. package/dist/report/start/conversations/weeks.js +17 -0
  328. package/dist/report/start/month/month-renderer.js +50 -0
  329. package/dist/report/start/month/month-view.js +135 -0
  330. package/dist/report/start/month/months.js +17 -0
  331. package/dist/report/start/onboarding/done.js +171 -0
  332. package/dist/report/start/onboarding/finish-onboarding.js +93 -0
  333. package/dist/report/start/onboarding/intro.js +100 -0
  334. package/dist/report/start/onboarding/onboarding-changes.js +40 -0
  335. package/dist/report/start/onboarding/onboarding-renderer.js +195 -0
  336. package/dist/report/start/onboarding/onboarding-script.js +400 -0
  337. package/dist/report/start/onboarding/onboarding-view.js +98 -0
  338. package/dist/report/start/onboarding/project-step.js +210 -0
  339. package/dist/report/start/onboarding/steps.js +239 -0
  340. package/dist/report/start/onboarding/welcome.js +66 -0
  341. package/dist/report/start/page-notice.js +10 -0
  342. package/dist/report/start/projects/index-projects.js +43 -0
  343. package/dist/report/start/projects/moved-page.js +82 -0
  344. package/dist/report/start/projects/project-switch.js +138 -0
  345. package/dist/report/start/projects/projects-window.js +67 -0
  346. package/dist/report/start/projects/temporary-space.js +18 -0
  347. package/dist/report/start/render/air-datepicker-vendor.js +27 -0
  348. package/dist/report/start/render/session-status.js +41 -0
  349. package/dist/report/start/render/start-words.js +84 -0
  350. package/dist/report/start/repository.js +28 -0
  351. package/dist/report/start/serve/index-handler.js +372 -0
  352. package/dist/report/start/serve/onboarding-request.js +50 -0
  353. package/dist/report/start/serve/settings-request.js +1 -0
  354. package/dist/report/start/serve/settings-setup.js +193 -0
  355. package/dist/report/start/session-index.js +1 -0
  356. package/dist/report/start/session-start.js +974 -0
  357. package/dist/report/start/settings/alerts-tab.js +104 -0
  358. package/dist/report/start/settings/files-tab.js +169 -0
  359. package/dist/report/start/settings/general-tab.js +71 -0
  360. package/dist/report/start/settings/settings-renderer.js +254 -0
  361. package/dist/report/start/settings/settings-script.js +161 -0
  362. package/dist/report/start/settings/settings-view.js +240 -0
  363. package/dist/report/start/settings/settings-windows.js +334 -0
  364. package/dist/report/start/settings-files.js +43 -0
  365. package/dist/report/start/to-fix/done-list.js +45 -0
  366. package/dist/report/start/to-fix/file-window.js +110 -0
  367. package/dist/report/start/to-fix/to-fix-list.js +70 -0
  368. package/dist/report/start/to-fix/to-fix-renderer.js +237 -0
  369. package/dist/report/start/to-fix/to-fix-script.js +94 -0
  370. package/dist/report/start/to-fix/to-fix-view.js +124 -0
  371. package/dist/report/watch/agent-alert.js +72 -0
  372. package/dist/report/watch/notice-choices.js +35 -0
  373. package/dist/report/watch/notice-settings.js +65 -0
  374. package/dist/report/watch/preferences.js +100 -0
  375. package/dist/report/watch/render/instruction-words.js +54 -0
  376. package/dist/report/watch/render/notice-words.js +182 -0
  377. package/dist/report/watch/subagent-watch.js +345 -0
  378. package/dist/report/watch/watch-notice.js +1 -0
  379. package/dist/setup/behind.js +18 -0
  380. package/dist/setup/codex-mirror.js +171 -0
  381. package/dist/setup/not-a-project.js +19 -0
  382. package/dist/setup/project-setup.js +644 -0
  383. package/dist/setup/protected-patterns.js +30 -0
  384. package/dist/shared/colour.js +23 -0
  385. package/dist/shared/compare.js +4 -0
  386. package/dist/shared/content-version.js +13 -0
  387. package/dist/shared/counter.js +11 -0
  388. package/dist/shared/file-stamp.js +4 -0
  389. package/dist/shared/json.js +13 -0
  390. package/dist/shared/label.js +13 -0
  391. package/dist/shared/package-name.js +6 -0
  392. package/dist/shared/plain-invocation.js +44 -0
  393. package/dist/shared/plain-version.js +21 -0
  394. package/dist/shared/printable.js +25 -0
  395. package/dist/shared/renderer.js +1 -0
  396. package/dist/shared/sentence.js +20 -0
  397. package/dist/shared/terminal-logo.js +41 -0
  398. package/dist/shared/text-table.js +15 -0
  399. package/dist/shared/wrap.js +29 -0
  400. package/package.json +70 -0
@@ -0,0 +1,446 @@
1
+ /**
2
+ * The words of the onboarding (`.ai/specs/2026-09-24-onboarding.md`), in the glossary of the design guidelines §7. What
3
+ * the onboarding shares with Settings - the rules' names, the three messages, the add popup - is Settings' words, read
4
+ * by their keys, so the two pages cannot say one thing two ways (W28). The intro's files are fixed words, never a file
5
+ * of the person's (W5).
6
+ */
7
+ export const ONBOARDING_WORDS = {
8
+ en: {
9
+ 'ob.title': 'Welcome · agentwhy',
10
+ 'ob.local': 'Runs on your computer',
11
+ 'ob.skipIntro': 'Skip intro',
12
+ 'ob.intro.working': 'Your AI is helping you with your project…',
13
+ 'ob.intro.photos': 'Photos', 'ob.intro.invoices': 'Invoices', 'ob.intro.passwords': 'Passwords', 'ob.intro.contract': 'Contract.pdf',
14
+ 'ob.intro.customers': 'Customer list.xlsx', 'ob.intro.notes': 'Notes.docx', 'ob.intro.bank': 'Bank details.pdf', 'ob.intro.website': 'Website',
15
+ 'ob.intro.you': 'You',
16
+ 'ob.intro.ai': 'Your AI',
17
+ 'ob.intro.ask': 'Can you fix my website?',
18
+ 'ob.intro.sure': 'Sure, I’m on it.',
19
+ 'ob.intro.hidden': 'You don’t see this part',
20
+ 'ob.intro.opening': 'I’m opening the file with your <strong>secret keys</strong>…',
21
+ 'ob.intro.reading': '…and reading one: {key}',
22
+ 'ob.intro.done': 'Done! Your website works again ✓',
23
+ 'ob.intro.nobody': 'Nobody asked you.',
24
+ 'ob.eyebrow': 'For people who build with an AI agent',
25
+ 'ob.h1': 'Your AI opens your files.',
26
+ 'ob.h1b': 'Now you’ll know which ones.',
27
+ 'ob.lead': 'Set it up once. We’ll tell you whenever Claude Code opens something private.',
28
+ 'ob.start': 'Get started →',
29
+ 'ob.trust.local': 'Nothing leaves your computer',
30
+ 'ob.trust.inside': 'Never shows what’s inside your files',
31
+ 'ob.trust.free': 'Free, no account',
32
+ 'ob.step': 'Step {n} of 3',
33
+ 'ob.stepper': 'Setup steps',
34
+ 'ob.stepper.who': 'Who',
35
+ 'ob.stepper.files': 'Files',
36
+ 'ob.stepper.project': 'Project',
37
+ 'ob.back': '← Back',
38
+ 'ob.skip': 'Skip',
39
+ 'ob.continue': 'Continue →',
40
+ 'ob.finish': 'Finish setup →',
41
+ 'ob.recommended': 'Recommended',
42
+ 'ob.for': 'For {name}',
43
+ 'ob.project.title': 'Which project is this for?',
44
+ 'ob.project.text': 'agentwhy looks at one project at a time. Pick the one you work on with your AI.',
45
+ 'ob.project.home': 'You started agentwhy in your home folder, which isn’t a project. Pick the one you work on with your AI.',
46
+ 'ob.project.root': 'You started agentwhy at the root of a disk, which isn’t a project. Pick the one you work on with your AI.',
47
+ 'ob.project.hint': 'Not sure? It’s the folder you open in your code editor.',
48
+ 'ob.project.pick': 'No, pick another project',
49
+ 'ob.project.worked.one': 'Your AI has worked here: 1 chat',
50
+ 'ob.project.worked.other': 'Your AI has worked here: {n} chats',
51
+ 'ob.project.in.editor': '{n} in your code editor',
52
+ 'ob.project.in.terminal': '{n} in the terminal',
53
+ 'ob.project.in.script': '{n} started by a script',
54
+ 'ob.project.in.unknown': 'and {n} elsewhere',
55
+ 'ob.project.found.title': 'We found your project.',
56
+ 'ob.project.found.text': 'This is where you started agentwhy. Is this the right one?',
57
+ 'ob.project.found.tag': 'This folder',
58
+ 'ob.project.use': 'Yes, use {name} →',
59
+ 'ob.project.inside.title': 'You’re inside a project.',
60
+ 'ob.project.inside.text': 'You started agentwhy in {place}. Your AI chats are {up}.',
61
+ 'ob.project.up.one': 'one folder up',
62
+ 'ob.project.up.other': '{n} folders up',
63
+ 'ob.project.upTag.one': 'One folder up',
64
+ 'ob.project.upTag.other': '{n} folders up',
65
+ 'ob.project.includes': 'Includes the {name} folder',
66
+ 'ob.project.whole': 'You’re in {here}. We’ll protect all of {name}.',
67
+ 'ob.project.useIt': 'Use {name} →',
68
+ 'ob.project.inside.hint': 'Protecting the whole project also covers {name}.',
69
+ 'ob.project.empty.title': 'Your AI hasn’t worked here yet.',
70
+ 'ob.project.empty.text': 'That’s fine if it’s a new project. We’ll start watching from now on.',
71
+ 'ob.project.empty.tag': 'No AI chats yet',
72
+ 'ob.project.isProject': 'It’s a project folder',
73
+ 'ob.project.none': 'No AI chats here yet',
74
+ 'ob.project.anyway': 'Use it anyway →',
75
+ 'ob.project.empty.hint': 'Expected to see your chats? You may have started agentwhy in the wrong folder.',
76
+ 'ob.project.refused.title': 'Pick your project’s folder.',
77
+ 'ob.project.refused.home': 'agentwhy doesn’t change settings in your home folder: Claude Code reads the ones there in every project.',
78
+ 'ob.project.refused.root': 'agentwhy doesn’t change settings at the root of a disk: it isn’t a project.',
79
+ 'ob.project.chatsIn': 'Your AI chats are in {name}.',
80
+ 'ob.project.chatsInside': 'Your AI chats are in projects inside {name}.',
81
+ 'ob.project.picked': 'You picked {place}. It has no AI chats of its own.',
82
+ 'ob.project.weUse': 'We’ll use this project',
83
+ 'ob.project.inThere': 'Projects inside it',
84
+ 'ob.project.nothingYet': 'It has no AI chats, so there would be nothing to show yet.',
85
+ 'ob.project.failed.title': 'That didn’t work.',
86
+ 'ob.project.moment': 'One moment. Setup goes on right here.',
87
+ 'ob.who.title': 'Who is agentwhy for?',
88
+ 'ob.who.text': 'We can watch your AI just for you, or for everyone who works on {name}.',
89
+ 'ob.who.local': 'Just me',
90
+ 'ob.who.local.sub': 'Only on this computer. Nobody else is affected.',
91
+ 'ob.who.shared': 'Everyone on this project',
92
+ 'ob.who.shared.sub': 'Anyone who works on this project with Claude Code gets the same protection.',
93
+ 'ob.who.you': 'You',
94
+ 'ob.who.hint': 'Working alone? Pick “Just me”. You can change this later in Settings.',
95
+ 'ob.files.title': 'Which files are private?',
96
+ 'ob.files.add': 'Add another private file',
97
+ 'ob.files.info': 'What this does',
98
+ 'ob.files.hint': 'Keep them all on Block if you’re not sure. Nothing here reads or uploads your files.',
99
+ 'ob.change.file': 'Claude Code will be stopped from opening every file called {name}.',
100
+ 'ob.change.folder': 'Claude Code will be stopped from opening anything in a folder called {name}.',
101
+ 'ob.change.pattern': 'Claude Code will be stopped from opening every file that matches {name}.',
102
+ 'ob.change.honest': 'This stops the obvious tries, not every trick. If something slips past, you’ll still see it in your report.',
103
+ 'ob.when.h.one': 'in the last hour', 'ob.when.h.other': 'in the last {n} hours',
104
+ 'ob.when.d.one': 'in the last day', 'ob.when.d.other': 'in the last {n} days',
105
+ 'ob.when.w.one': 'in the last week', 'ob.when.w.other': 'in the last {n} weeks',
106
+ 'ob.when.since': 'since {date}',
107
+ 'ob.done.files.title': 'Setup done. One thing left.',
108
+ 'ob.done.told': 'From now on, you’ll be told right away in Claude Code.',
109
+ 'ob.done.notTold': 'Turn on alerts in Settings to be told in Claude Code next time.',
110
+ 'ob.done.already.one': 'But {when}, your AI already read 1 private file.',
111
+ 'ob.done.already.other': 'But {when}, your AI already read {n} private files.',
112
+ 'ob.done.found.one': 'We found 1 file your AI read',
113
+ 'ob.done.found.other': 'We found {n} files your AI read',
114
+ 'ob.done.keys': 'The keys in them may still work. Change them now.',
115
+ 'ob.done.more': '+{n} more on your To fix list',
116
+ 'ob.done.later': 'Later — go to my dashboard',
117
+ 'ob.done.fix': 'Fix them now — about 2 min each →',
118
+ 'ob.done.protected': 'You’re protected in Claude Code.',
119
+ 'ob.done.set': 'Setup done.',
120
+ 'ob.done.knowing': 'From now on, you’ll know every time Claude Code opens something private.',
121
+ 'ob.done.good': 'Good news — nothing to fix.',
122
+ 'ob.done.good.text': 'We looked at your AI chats {when}. Your AI didn’t read anything private.',
123
+ 'ob.done.gaps': 'We couldn’t check every chat.',
124
+ 'ob.done.gaps.go': 'See Conversations',
125
+ 'ob.done.open': 'Open agentwhy →',
126
+ 'ob.done.empty.title': 'You’re set up.',
127
+ '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
+ 'ob.summary.local': 'Just you',
130
+ 'ob.summary.shared': 'Everyone on this project',
131
+ 'ob.summary.kinds.one': '1 kind of files',
132
+ 'ob.summary.kinds.other': '{n} kinds of files',
133
+ 'ob.summary.messages': '{n} of 3 messages on',
134
+ 'ob.summary.change': 'Change in Settings',
135
+ 'ob.failed.watch': 'Alerts weren’t turned on.',
136
+ 'ob.failed.protect': 'Your files weren’t added.',
137
+ 'ob.failed.notices': 'Your message choices weren’t saved.',
138
+ 'ob.failed.search': 'Searches weren’t blocked.',
139
+ 'ob.failed.mode': 'Some of your Block and Track choices weren’t saved.',
140
+ 'ob.failed.go': 'Try again in Settings',
141
+ 'ob.done.codex.on': 'Codex too: it can’t open the same files once you approve agentwhy in Codex. Until then, Codex doesn’t block anything.',
142
+ 'ob.done.codex.off': 'Codex isn’t blocked yet: it can still open these files.',
143
+ 'ob.done.codex.go': 'Block it in Settings',
144
+ 'ob.unrecorded': 'We couldn’t save that you’ve finished this, so you’ll see it again next time.',
145
+ 'ob.nojs': 'Your browser isn’t running this page’s script, so nothing can be set up here. Make these choices in Settings.',
146
+ 'ob.nojs.settings': 'Open Settings',
147
+ 'ob.nojs.conversations': 'Open Conversations',
148
+ 'ob.again.title': 'Go through the setup again',
149
+ 'ob.again.text': 'The three questions from the start: who agentwhy is for, which files are private, and when to tell you. Nothing changes until you finish.',
150
+ 'ob.again.go': 'Start the setup',
151
+ },
152
+ pl: {
153
+ 'ob.title': 'Witaj · agentwhy',
154
+ 'ob.local': 'Działa na twoim komputerze',
155
+ 'ob.skipIntro': 'Pomiń wstęp',
156
+ 'ob.intro.working': 'Twoje AI pomaga ci przy projekcie…',
157
+ 'ob.intro.photos': 'Zdjęcia', 'ob.intro.invoices': 'Faktury', 'ob.intro.passwords': 'Hasła', 'ob.intro.contract': 'Umowa.pdf',
158
+ 'ob.intro.customers': 'Lista klientów.xlsx', 'ob.intro.notes': 'Notatki.docx', 'ob.intro.bank': 'Dane bankowe.pdf', 'ob.intro.website': 'Strona',
159
+ 'ob.intro.you': 'Ty',
160
+ 'ob.intro.ai': 'Twoje AI',
161
+ 'ob.intro.ask': 'Naprawisz mi stronę?',
162
+ 'ob.intro.sure': 'Jasne, już się tym zajmuję.',
163
+ 'ob.intro.hidden': 'Tej części nie widzisz',
164
+ 'ob.intro.opening': 'Otwieram plik z twoimi <strong>tajnymi kluczami</strong>…',
165
+ 'ob.intro.reading': '…i czytam jeden z nich: {key}',
166
+ 'ob.intro.done': 'Gotowe! Strona znów działa ✓',
167
+ 'ob.intro.nobody': 'Nikt cię nie zapytał.',
168
+ 'ob.eyebrow': 'Dla osób, które budują z agentem AI',
169
+ 'ob.h1': 'Twoje AI otwiera twoje pliki.',
170
+ 'ob.h1b': 'Teraz będziesz wiedzieć które.',
171
+ 'ob.lead': 'Ustaw raz. Powiemy ci za każdym razem, gdy Claude Code otworzy coś prywatnego.',
172
+ 'ob.start': 'Zaczynamy →',
173
+ 'ob.trust.local': 'Nic nie opuszcza twojego komputera',
174
+ 'ob.trust.inside': 'Nigdy nie pokazuje zawartości twoich plików',
175
+ 'ob.trust.free': 'Za darmo, bez konta',
176
+ 'ob.step': 'Krok {n} z 3',
177
+ 'ob.stepper': 'Kroki ustawień',
178
+ 'ob.stepper.who': 'Kto',
179
+ 'ob.stepper.files': 'Pliki',
180
+ 'ob.stepper.project': 'Projekt',
181
+ 'ob.back': '← Wstecz',
182
+ 'ob.skip': 'Pomiń',
183
+ 'ob.continue': 'Dalej →',
184
+ 'ob.finish': 'Zakończ ustawianie →',
185
+ 'ob.recommended': 'Polecane',
186
+ 'ob.for': 'Projekt {name}',
187
+ 'ob.project.title': 'Którego projektu to dotyczy?',
188
+ 'ob.project.text': 'agentwhy patrzy na jeden projekt naraz. Wybierz ten, nad którym pracujesz ze swoim AI.',
189
+ 'ob.project.home': 'agentwhy uruchomiono w folderze domowym, a to nie projekt. Wybierz ten, nad którym pracujesz ze swoim AI.',
190
+ 'ob.project.root': 'agentwhy uruchomiono w katalogu głównym dysku, a to nie projekt. Wybierz ten, nad którym pracujesz ze swoim AI.',
191
+ 'ob.project.hint': 'Nie wiesz? To folder, który otwierasz w edytorze kodu.',
192
+ 'ob.project.pick': 'Nie, wybierz inny projekt',
193
+ 'ob.project.worked.one': 'Twoje AI pracowało tu: 1 czat',
194
+ 'ob.project.worked.few': 'Twoje AI pracowało tu: {n} czaty',
195
+ 'ob.project.worked.many': 'Twoje AI pracowało tu: {n} czatów',
196
+ 'ob.project.in.editor': '{n} w edytorze kodu',
197
+ 'ob.project.in.terminal': '{n} w terminalu',
198
+ 'ob.project.in.script': '{n} ze skryptu',
199
+ 'ob.project.in.unknown': 'i {n} gdzie indziej',
200
+ 'ob.project.found.title': 'Znaleźliśmy twój projekt.',
201
+ 'ob.project.found.text': 'Tu uruchomiono agentwhy. Czy to właściwy projekt?',
202
+ 'ob.project.found.tag': 'Ten folder',
203
+ 'ob.project.use': 'Tak, użyj {name} →',
204
+ 'ob.project.inside.title': 'Jesteś wewnątrz projektu.',
205
+ 'ob.project.inside.text': 'agentwhy uruchomiono w {place}. Twoje czaty z AI są {up}.',
206
+ 'ob.project.up.one': 'folder wyżej',
207
+ 'ob.project.up.few': '{n} foldery wyżej',
208
+ 'ob.project.up.many': '{n} folderów wyżej',
209
+ 'ob.project.upTag.one': 'Folder wyżej',
210
+ 'ob.project.upTag.few': '{n} foldery wyżej',
211
+ 'ob.project.upTag.many': '{n} folderów wyżej',
212
+ 'ob.project.includes': 'Obejmuje folder {name}',
213
+ 'ob.project.whole': 'Jesteś w {here}. Ochronimy cały projekt {name}.',
214
+ 'ob.project.useIt': 'Użyj {name} →',
215
+ 'ob.project.inside.hint': 'Ochrona całego projektu obejmuje też {name}.',
216
+ 'ob.project.empty.title': 'Twoje AI jeszcze tu nie pracowało.',
217
+ 'ob.project.empty.text': 'Jeśli to nowy projekt, wszystko w porządku. Od teraz będziemy pilnować.',
218
+ 'ob.project.empty.tag': 'Brak czatów z AI',
219
+ 'ob.project.isProject': 'To folder projektu',
220
+ 'ob.project.none': 'Nie ma tu jeszcze czatów z AI',
221
+ 'ob.project.anyway': 'Użyj mimo to →',
222
+ 'ob.project.empty.hint': 'Miały tu być twoje czaty? Może agentwhy uruchomiono w złym folderze.',
223
+ 'ob.project.refused.title': 'Wybierz folder projektu.',
224
+ 'ob.project.refused.home': 'agentwhy nie zmienia ustawień w folderze domowym: Claude Code czyta je w każdym projekcie.',
225
+ 'ob.project.refused.root': 'agentwhy nie zmienia ustawień w katalogu głównym dysku: to nie jest projekt.',
226
+ 'ob.project.chatsIn': 'Twoje czaty z AI są w {name}.',
227
+ 'ob.project.chatsInside': 'Twoje czaty z AI są w projektach wewnątrz {name}.',
228
+ 'ob.project.picked': 'Wybrano {place}. Nie ma tam własnych czatów z AI.',
229
+ 'ob.project.weUse': 'Użyjemy tego projektu',
230
+ 'ob.project.inThere': 'Projekty w środku',
231
+ 'ob.project.nothingYet': 'Nie ma tam czatów z AI, więc na razie nie byłoby czego pokazać.',
232
+ 'ob.project.failed.title': 'To się nie udało.',
233
+ 'ob.project.moment': 'Chwila. Ustawianie trwa dalej tutaj.',
234
+ 'ob.who.title': 'Dla kogo jest agentwhy?',
235
+ 'ob.who.text': 'Możemy pilnować twojego AI tylko dla ciebie albo dla wszystkich, którzy pracują nad projektem {name}.',
236
+ 'ob.who.local': 'Tylko ja',
237
+ 'ob.who.local.sub': 'Tylko na tym komputerze. Nikogo innego to nie dotyczy.',
238
+ 'ob.who.shared': 'Wszyscy w tym projekcie',
239
+ 'ob.who.shared.sub': 'Każdy, kto pracuje nad tym projektem w Claude Code, dostaje tę samą ochronę.',
240
+ 'ob.who.you': 'Ty',
241
+ 'ob.who.hint': 'Pracujesz sam? Wybierz „Tylko ja”. Możesz to później zmienić w Ustawieniach.',
242
+ 'ob.files.title': 'Które pliki są prywatne?',
243
+ 'ob.files.add': 'Dodaj kolejny prywatny plik',
244
+ 'ob.files.info': 'Co to robi',
245
+ 'ob.files.hint': 'Jeśli nie masz pewności, zostaw wszystkie na Blokuj. Nic tutaj nie czyta ani nie wysyła twoich plików.',
246
+ 'ob.change.file': 'Claude Code nie otworzy żadnego pliku o nazwie {name}.',
247
+ 'ob.change.folder': 'Claude Code nie otworzy niczego w folderze o nazwie {name}.',
248
+ 'ob.change.pattern': 'Claude Code nie otworzy żadnego pliku pasującego do {name}.',
249
+ 'ob.change.honest': 'To zatrzymuje oczywiste próby, nie każdą sztuczkę. Jeśli coś się prześlizgnie, i tak zobaczysz to w raporcie.',
250
+ 'ob.when.h.one': 'w ciągu ostatniej godziny', 'ob.when.h.few': 'w ciągu ostatnich {n} godzin', 'ob.when.h.many': 'w ciągu ostatnich {n} godzin',
251
+ 'ob.when.d.one': 'w ciągu ostatniego dnia', 'ob.when.d.few': 'w ciągu ostatnich {n} dni', 'ob.when.d.many': 'w ciągu ostatnich {n} dni',
252
+ 'ob.when.w.one': 'w ciągu ostatniego tygodnia', 'ob.when.w.few': 'w ciągu ostatnich {n} tygodni', 'ob.when.w.many': 'w ciągu ostatnich {n} tygodni',
253
+ 'ob.when.since': 'od {date}',
254
+ 'ob.done.files.title': 'Gotowe. Została jedna rzecz.',
255
+ 'ob.done.told': 'Od teraz dowiesz się od razu w Claude Code.',
256
+ 'ob.done.notTold': 'Włącz powiadomienia w Ustawieniach, żeby następnym razem dowiedzieć się w Claude Code.',
257
+ 'ob.done.already.one': 'Ale {when} twoje AI przeczytało już 1 prywatny plik.',
258
+ 'ob.done.already.few': 'Ale {when} twoje AI przeczytało już {n} prywatne pliki.',
259
+ 'ob.done.already.many': 'Ale {when} twoje AI przeczytało już {n} prywatnych plików.',
260
+ 'ob.done.found.one': 'Znaleźliśmy 1 plik, który przeczytało twoje AI',
261
+ 'ob.done.found.few': 'Znaleźliśmy {n} pliki, które przeczytało twoje AI',
262
+ 'ob.done.found.many': 'Znaleźliśmy {n} plików, które przeczytało twoje AI',
263
+ 'ob.done.keys': 'Klucze w nich mogą wciąż działać. Zmień je teraz.',
264
+ 'ob.done.more': '+{n} więcej na liście Do naprawy',
265
+ 'ob.done.later': 'Później — przejdź do pulpitu',
266
+ 'ob.done.fix': 'Napraw je teraz — ok. 2 min każdy →',
267
+ 'ob.done.protected': 'Jesteś chroniony w Claude Code.',
268
+ 'ob.done.set': 'Gotowe.',
269
+ 'ob.done.knowing': 'Od teraz będziesz wiedzieć za każdym razem, gdy Claude Code otworzy coś prywatnego.',
270
+ 'ob.done.good': 'Dobra wiadomość — nie ma nic do naprawy.',
271
+ 'ob.done.good.text': 'Przejrzeliśmy twoje czaty z AI {when}. Twoje AI nie przeczytało niczego prywatnego.',
272
+ 'ob.done.gaps': 'Nie udało się sprawdzić każdego czatu.',
273
+ 'ob.done.gaps.go': 'Zobacz Rozmowy',
274
+ 'ob.done.open': 'Otwórz agentwhy →',
275
+ 'ob.done.empty.title': 'Wszystko ustawione.',
276
+ '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
+ 'ob.summary.local': 'Tylko ty',
279
+ 'ob.summary.shared': 'Wszyscy w tym projekcie',
280
+ 'ob.summary.kinds.one': '1 rodzaj plików',
281
+ 'ob.summary.kinds.few': '{n} rodzaje plików',
282
+ 'ob.summary.kinds.many': '{n} rodzajów plików',
283
+ 'ob.summary.messages': 'Wiadomości: {n} z 3',
284
+ 'ob.summary.change': 'Zmień w Ustawieniach',
285
+ 'ob.failed.watch': 'Powiadomienia nie zostały włączone.',
286
+ 'ob.failed.protect': 'Twoje pliki nie zostały dodane.',
287
+ 'ob.failed.notices': 'Twoje wybory wiadomości nie zostały zapisane.',
288
+ 'ob.failed.search': 'Przeszukiwanie nie zostało zablokowane.',
289
+ 'ob.failed.mode': 'Część twoich wyborów Blokuj i Obserwuje nie została zapisana.',
290
+ 'ob.failed.go': 'Spróbuj ponownie w Ustawieniach',
291
+ 'ob.done.codex.on': 'Także Codex: nie otworzy tych samych plików, gdy zatwierdzisz agentwhy w Codexie. Do tego czasu Codex niczego nie blokuje.',
292
+ 'ob.done.codex.off': 'Codex nie jest jeszcze zablokowany: wciąż może otwierać te pliki.',
293
+ 'ob.done.codex.go': 'Zablokuj go w Ustawieniach',
294
+ 'ob.unrecorded': 'Nie udało się zapisać, że to zakończyłeś, więc zobaczysz to jeszcze raz następnym razem.',
295
+ 'ob.nojs': 'Twoja przeglądarka nie uruchamia skryptu tej strony, więc niczego tu nie ustawisz. Dokonaj tych wyborów w Ustawieniach.',
296
+ 'ob.nojs.settings': 'Otwórz Ustawienia',
297
+ 'ob.nojs.conversations': 'Otwórz Rozmowy',
298
+ 'ob.again.title': 'Przejdź konfigurację jeszcze raz',
299
+ 'ob.again.text': 'Te same trzy pytania co na początku: dla kogo jest agentwhy, które pliki są prywatne i kiedy dać ci znać. Nic się nie zmieni, dopóki nie skończysz.',
300
+ 'ob.again.go': 'Zacznij konfigurację',
301
+ },
302
+ de: {
303
+ 'ob.title': 'Willkommen · agentwhy',
304
+ 'ob.local': 'Läuft auf deinem Computer',
305
+ 'ob.skipIntro': 'Intro überspringen',
306
+ 'ob.intro.working': 'Deine KI hilft dir bei deinem Projekt…',
307
+ 'ob.intro.photos': 'Fotos', 'ob.intro.invoices': 'Rechnungen', 'ob.intro.passwords': 'Passwörter', 'ob.intro.contract': 'Vertrag.pdf',
308
+ 'ob.intro.customers': 'Kundenliste.xlsx', 'ob.intro.notes': 'Notizen.docx', 'ob.intro.bank': 'Bankdaten.pdf', 'ob.intro.website': 'Website',
309
+ 'ob.intro.you': 'Du',
310
+ 'ob.intro.ai': 'Deine KI',
311
+ 'ob.intro.ask': 'Kannst du meine Website reparieren?',
312
+ 'ob.intro.sure': 'Klar, ich kümmere mich darum.',
313
+ 'ob.intro.hidden': 'Diesen Teil siehst du nicht',
314
+ 'ob.intro.opening': 'Ich öffne die Datei mit deinen <strong>geheimen Schlüsseln</strong>…',
315
+ 'ob.intro.reading': '…und lese einen davon: {key}',
316
+ 'ob.intro.done': 'Fertig! Deine Website läuft wieder ✓',
317
+ 'ob.intro.nobody': 'Niemand hat dich gefragt.',
318
+ 'ob.eyebrow': 'Für Menschen, die mit einem KI-Agenten bauen',
319
+ 'ob.h1': 'Deine KI öffnet deine Dateien.',
320
+ 'ob.h1b': 'Jetzt weißt du, welche.',
321
+ 'ob.lead': 'Einmal einrichten. Wir sagen dir jedes Mal Bescheid, wenn Claude Code etwas Privates öffnet.',
322
+ 'ob.start': 'Los geht’s →',
323
+ 'ob.trust.local': 'Nichts verlässt deinen Computer',
324
+ 'ob.trust.inside': 'Zeigt nie, was in deinen Dateien steht',
325
+ 'ob.trust.free': 'Kostenlos, kein Konto',
326
+ 'ob.step': 'Schritt {n} von 3',
327
+ 'ob.stepper': 'Einrichtungsschritte',
328
+ 'ob.stepper.who': 'Wer',
329
+ 'ob.stepper.files': 'Dateien',
330
+ 'ob.stepper.project': 'Projekt',
331
+ 'ob.back': '← Zurück',
332
+ 'ob.skip': 'Überspringen',
333
+ 'ob.continue': 'Weiter →',
334
+ 'ob.finish': 'Einrichtung abschließen →',
335
+ 'ob.recommended': 'Empfohlen',
336
+ 'ob.for': 'Für {name}',
337
+ 'ob.project.title': 'Für welches Projekt ist das?',
338
+ 'ob.project.text': 'agentwhy schaut sich immer ein Projekt an. Wähle das, an dem du mit deiner KI arbeitest.',
339
+ 'ob.project.home': 'Du hast agentwhy in deinem Home-Ordner gestartet, und der ist kein Projekt. Wähle das, an dem du mit deiner KI arbeitest.',
340
+ 'ob.project.root': 'Du hast agentwhy im Hauptverzeichnis eines Laufwerks gestartet, und das ist kein Projekt. Wähle das, an dem du mit deiner KI arbeitest.',
341
+ 'ob.project.hint': 'Nicht sicher? Es ist der Ordner, den du in deinem Code-Editor öffnest.',
342
+ 'ob.project.pick': 'Nein, anderes Projekt wählen',
343
+ 'ob.project.worked.one': 'Deine KI hat hier gearbeitet: 1 Chat',
344
+ 'ob.project.worked.other': 'Deine KI hat hier gearbeitet: {n} Chats',
345
+ 'ob.project.in.editor': '{n} im Code-Editor',
346
+ 'ob.project.in.terminal': '{n} im Terminal',
347
+ 'ob.project.in.script': '{n} von einem Skript gestartet',
348
+ 'ob.project.in.unknown': 'und {n} anderswo',
349
+ 'ob.project.found.title': 'Wir haben dein Projekt gefunden.',
350
+ 'ob.project.found.text': 'Hier hast du agentwhy gestartet. Ist es das richtige?',
351
+ 'ob.project.found.tag': 'Dieser Ordner',
352
+ 'ob.project.use': 'Ja, {name} nehmen →',
353
+ 'ob.project.inside.title': 'Du bist in einem Projekt.',
354
+ 'ob.project.inside.text': 'Du hast agentwhy in {place} gestartet. Deine KI-Chats liegen {up}.',
355
+ 'ob.project.up.one': 'einen Ordner höher',
356
+ 'ob.project.up.other': '{n} Ordner höher',
357
+ 'ob.project.upTag.one': 'Ein Ordner höher',
358
+ 'ob.project.upTag.other': '{n} Ordner höher',
359
+ 'ob.project.includes': 'Enthält den Ordner {name}',
360
+ 'ob.project.whole': 'Du bist in {here}. Wir schützen das ganze Projekt {name}.',
361
+ 'ob.project.useIt': '{name} nehmen →',
362
+ 'ob.project.inside.hint': 'Wenn das ganze Projekt geschützt ist, gilt das auch für {name}.',
363
+ 'ob.project.empty.title': 'Deine KI hat hier noch nicht gearbeitet.',
364
+ 'ob.project.empty.text': 'Wenn es ein neues Projekt ist, ist das in Ordnung. Ab jetzt behalten wir es im Blick.',
365
+ 'ob.project.empty.tag': 'Noch keine KI-Chats',
366
+ 'ob.project.isProject': 'Es ist ein Projektordner',
367
+ 'ob.project.none': 'Hier gibt es noch keine KI-Chats',
368
+ 'ob.project.anyway': 'Trotzdem nehmen →',
369
+ 'ob.project.empty.hint': 'Hast du deine Chats erwartet? Vielleicht hast du agentwhy im falschen Ordner gestartet.',
370
+ 'ob.project.refused.title': 'Wähle den Ordner deines Projekts.',
371
+ 'ob.project.refused.home': 'agentwhy ändert keine Einstellungen in deinem Home-Ordner: Claude Code liest die dortigen in jedem Projekt.',
372
+ 'ob.project.refused.root': 'agentwhy ändert keine Einstellungen im Hauptverzeichnis eines Laufwerks: es ist kein Projekt.',
373
+ 'ob.project.chatsIn': 'Deine KI-Chats liegen in {name}.',
374
+ 'ob.project.chatsInside': 'Deine KI-Chats liegen in Projekten in {name}.',
375
+ 'ob.project.picked': 'Du hast {place} gewählt. Dort gibt es keine eigenen KI-Chats.',
376
+ 'ob.project.weUse': 'Wir nehmen dieses Projekt',
377
+ 'ob.project.inThere': 'Projekte darin',
378
+ 'ob.project.nothingYet': 'Dort gibt es keine KI-Chats, also gäbe es noch nichts zu zeigen.',
379
+ 'ob.project.failed.title': 'Das hat nicht geklappt.',
380
+ 'ob.project.moment': 'Einen Moment. Die Einrichtung geht gleich hier weiter.',
381
+ 'ob.who.title': 'Für wen ist agentwhy?',
382
+ 'ob.who.text': 'Wir können deine KI nur für dich im Blick behalten oder für alle, die an {name} arbeiten.',
383
+ 'ob.who.local': 'Nur ich',
384
+ 'ob.who.local.sub': 'Nur auf diesem Computer. Niemand sonst ist betroffen.',
385
+ 'ob.who.shared': 'Alle in diesem Projekt',
386
+ 'ob.who.shared.sub': 'Alle, die mit Claude Code an diesem Projekt arbeiten, bekommen denselben Schutz.',
387
+ 'ob.who.you': 'Du',
388
+ 'ob.who.hint': 'Du arbeitest allein? Wähle „Nur ich“. Du kannst das später in den Einstellungen ändern.',
389
+ 'ob.files.title': 'Welche Dateien sind privat?',
390
+ 'ob.files.add': 'Weitere private Datei hinzufügen',
391
+ 'ob.files.info': 'Was das bewirkt',
392
+ 'ob.files.hint': 'Wenn du unsicher bist, lass alle auf Blockieren. Nichts hier liest oder lädt deine Dateien hoch.',
393
+ 'ob.change.file': 'Claude Code wird daran gehindert, eine Datei namens {name} zu öffnen.',
394
+ 'ob.change.folder': 'Claude Code wird daran gehindert, etwas in einem Ordner namens {name} zu öffnen.',
395
+ 'ob.change.pattern': 'Claude Code wird daran gehindert, eine Datei zu öffnen, die zu {name} passt.',
396
+ 'ob.change.honest': 'Das stoppt die offensichtlichen Versuche, nicht jeden Trick. Wenn etwas durchrutscht, siehst du es trotzdem in deinem Bericht.',
397
+ 'ob.when.h.one': 'in der letzten Stunde', 'ob.when.h.other': 'in den letzten {n} Stunden',
398
+ 'ob.when.d.one': 'am letzten Tag', 'ob.when.d.other': 'in den letzten {n} Tagen',
399
+ 'ob.when.w.one': 'in der letzten Woche', 'ob.when.w.other': 'in den letzten {n} Wochen',
400
+ 'ob.when.since': 'seit {date}',
401
+ 'ob.done.files.title': 'Eingerichtet. Eine Sache noch.',
402
+ 'ob.done.told': 'Ab jetzt erfährst du es sofort in Claude Code.',
403
+ 'ob.done.notTold': 'Schalte die Hinweise in den Einstellungen ein, um es nächstes Mal in Claude Code zu erfahren.',
404
+ 'ob.done.already.one': 'Aber {when} hat deine KI schon 1 private Datei gelesen.',
405
+ 'ob.done.already.other': 'Aber {when} hat deine KI schon {n} private Dateien gelesen.',
406
+ 'ob.done.found.one': 'Wir haben 1 Datei gefunden, die deine KI gelesen hat',
407
+ 'ob.done.found.other': 'Wir haben {n} Dateien gefunden, die deine KI gelesen hat',
408
+ 'ob.done.keys': 'Die Schlüssel darin funktionieren vielleicht noch. Ändere sie jetzt.',
409
+ 'ob.done.more': '+{n} weitere auf deiner Liste Zu beheben',
410
+ 'ob.done.later': 'Später — zu meiner Übersicht',
411
+ 'ob.done.fix': 'Jetzt beheben — etwa 2 Min. pro Datei →',
412
+ 'ob.done.protected': 'Du bist in Claude Code geschützt.',
413
+ 'ob.done.set': 'Eingerichtet.',
414
+ 'ob.done.knowing': 'Ab jetzt weißt du jedes Mal, wenn Claude Code etwas Privates öffnet.',
415
+ 'ob.done.good': 'Gute Nachricht — nichts zu beheben.',
416
+ 'ob.done.good.text': 'Wir haben deine KI-Chats {when} angesehen. Deine KI hat nichts Privates gelesen.',
417
+ 'ob.done.gaps': 'Wir konnten nicht jeden Chat prüfen.',
418
+ 'ob.done.gaps.go': 'Unterhaltungen ansehen',
419
+ 'ob.done.open': 'agentwhy öffnen →',
420
+ 'ob.done.empty.title': 'Alles eingerichtet.',
421
+ '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
+ 'ob.summary.local': 'Nur du',
424
+ 'ob.summary.shared': 'Alle in diesem Projekt',
425
+ 'ob.summary.kinds.one': '1 Art von Dateien',
426
+ 'ob.summary.kinds.other': '{n} Arten von Dateien',
427
+ 'ob.summary.messages': '{n} von 3 Nachrichten an',
428
+ 'ob.summary.change': 'In den Einstellungen ändern',
429
+ 'ob.failed.watch': 'Die Hinweise wurden nicht eingeschaltet.',
430
+ 'ob.failed.protect': 'Deine Dateien wurden nicht hinzugefügt.',
431
+ 'ob.failed.notices': 'Deine Auswahl der Nachrichten wurde nicht gespeichert.',
432
+ 'ob.failed.search': 'Die Suchen wurden nicht blockiert.',
433
+ 'ob.failed.mode': 'Ein Teil deiner Auswahl zwischen Blockieren und Beobachten wurde nicht gespeichert.',
434
+ 'ob.failed.go': 'In den Einstellungen noch einmal versuchen',
435
+ 'ob.done.codex.on': 'Auch Codex: Es kann dieselben Dateien nicht öffnen, sobald du agentwhy in Codex freigibst. Bis dahin blockiert Codex nichts.',
436
+ 'ob.done.codex.off': 'Codex ist noch nicht blockiert: Es kann diese Dateien noch öffnen.',
437
+ 'ob.done.codex.go': 'In den Einstellungen blockieren',
438
+ 'ob.unrecorded': 'Wir konnten nicht speichern, dass du fertig bist, deshalb siehst du das nächstes Mal noch einmal.',
439
+ 'ob.nojs': 'Dein Browser führt das Skript dieser Seite nicht aus, deshalb lässt sich hier nichts einrichten. Triff diese Auswahl in den Einstellungen.',
440
+ 'ob.nojs.settings': 'Einstellungen öffnen',
441
+ 'ob.nojs.conversations': 'Unterhaltungen öffnen',
442
+ 'ob.again.title': 'Die Einrichtung noch einmal durchgehen',
443
+ 'ob.again.text': 'Die drei Fragen vom Anfang: für wen agentwhy ist, welche Dateien privat sind und wann wir dir Bescheid sagen. Nichts ändert sich, bevor du fertig bist.',
444
+ 'ob.again.go': 'Einrichtung starten',
445
+ },
446
+ };