@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,457 @@
1
+ /**
2
+ * What only the Conversations page says (`for-people-who-build-with-ai.md` F7-F17). Values arrive escaped: `{ask}`
3
+ * is a session's title, already past the redactor and escaped by the page before it is put here.
4
+ */
5
+ export const CONVERSATIONS_WORDS = {
6
+ en: {
7
+ 'conv.title': 'Conversations · agentwhy',
8
+ 'conv.week.this': 'This week',
9
+ 'conv.week.last': 'Last week',
10
+ 'conv.week.ago': '{n} weeks ago',
11
+ 'conv.hero.fact.one': 'Your AI worked for you once.',
12
+ 'conv.hero.fact.other': 'Your AI worked for you {n} times.',
13
+ 'conv.hero.fact.zero': 'No conversations yet this week.',
14
+ 'conv.hero.none': 'Nothing private was read.',
15
+ 'conv.hero.times.one': 'Once it read something private.',
16
+ 'conv.hero.times.other': '{n} times it read something private.',
17
+ 'conv.hero.lead': 'Each time is one conversation with your AI. Most were fine. The ones marked in coral need a few minutes of your time.',
18
+ 'conv.day.today': 'Today',
19
+ 'conv.day.yesterday': 'Yesterday',
20
+ 'conv.guide.today': 'today',
21
+ 'conv.guide.yesterday': 'yesterday',
22
+ 'conv.guide.title': 'Start with {when}, {time}.',
23
+ 'conv.guide.asked': 'You asked: “{ask}”.',
24
+ 'conv.guide.read': 'Your AI read {what} along the way. About 2 minutes to fix.',
25
+ 'conv.guide.files.one': 'a private file',
26
+ 'conv.guide.files.other': '{n} private files',
27
+ 'conv.guide.something': 'something private',
28
+ 'conv.guide.go': 'Fix it now →',
29
+ 'conv.clean.title': 'Nothing to fix this week.',
30
+ 'conv.clean.body': 'Your AI didn’t read anything private.',
31
+ 'conv.clean.fixed': 'Your AI read something private, and it’s all fixed now.',
32
+ 'conv.clean.allowed': 'Your AI read only private files you let it read.',
33
+ 'conv.clean.fixedAllowed': 'Your AI read something private. What needed fixing is fixed, and the rest you let it read.',
34
+ 'conv.week.heading': 'Your week',
35
+ 'conv.week.earlier': 'An earlier week',
36
+ 'conv.week.later': 'A later week',
37
+ 'conv.week.back': 'Back to this week',
38
+ 'conv.week.pick': 'Choose a week',
39
+ 'conv.week.hint': 'Tap a day to see only that day',
40
+ 'conv.day.toCheck': '{n} to check',
41
+ 'conv.day.fixed.one': '1 read, fixed',
42
+ 'conv.day.fixed.other': '{n} read, fixed',
43
+ 'conv.day.good': 'All good',
44
+ 'conv.day.none': 'No work',
45
+ 'conv.need': 'Needs your attention',
46
+ 'conv.info': 'For your info',
47
+ 'conv.info.rest': '— your AI read files you track. Nothing to fix.',
48
+ 'conv.col.when': 'When',
49
+ 'conv.col.ask': 'What you asked',
50
+ 'conv.col.action': 'Action',
51
+ 'conv.untitled': 'A conversation with no title',
52
+ 'conv.day.unchecked.one': '1 not checked',
53
+ 'conv.day.unchecked.other': '{n} not checked',
54
+ 'conv.day.partial.one': '1 not fully checked',
55
+ 'conv.day.partial.other': '{n} not fully checked',
56
+ 'conv.unchecked.below.one': 'It’s listed below, with the reason.',
57
+ 'conv.unchecked.below.other': 'They’re listed below, with the reason.',
58
+ 'conv.hero.unchecked.one': 'One couldn’t be checked.',
59
+ 'conv.hero.unchecked.other': '{n} couldn’t be checked.',
60
+ 'conv.hero.partial.one': 'One couldn’t be fully checked.',
61
+ 'conv.hero.partial.other': '{n} couldn’t be fully checked.',
62
+ 'conv.unchecked': 'Not checked',
63
+ 'conv.unchecked.title.one': '1 conversation wasn’t checked.',
64
+ 'conv.unchecked.title.other': '{n} conversations weren’t checked.',
65
+ 'conv.unchecked.lead': 'This run didn’t read them: they are older than it, or their record couldn’t be read. To include older ones, run {command}',
66
+ 'conv.unchecked.check': 'This run didn’t read them yet. Press Check it beside one to read it now, or run {command} to include them all.',
67
+ 'conv.unchecked.partial.title.one': '1 conversation couldn’t be fully checked.',
68
+ 'conv.unchecked.partial.title.other': '{n} conversations couldn’t be fully checked.',
69
+ 'conv.unchecked.partial': 'Their record leaves out some steps, so their reports may not show everything your AI opened. Open one to see what was written down.',
70
+ 'conv.unchecked.mixed': 'Some are older than this check, or their record couldn’t be opened. The others leave out some steps, so their reports may not show everything. To include older ones, run {command}',
71
+ 'conv.act.fix': 'Fix it →',
72
+ 'conv.act.see': 'See report',
73
+ 'conv.act.none': 'No report',
74
+ 'conv.act.include': 'Check it',
75
+ 'conv.include.saving': 'Checking…',
76
+ 'conv.include.refused': 'That didn’t work:',
77
+ 'conv.include.asFile': 'This page was opened as a file. To check it, run this in your project:',
78
+ 'conv.include.unreachable': 'The page could not reach agentwhy - it may have stopped. Run it again.',
79
+ 'conv.others.count.one': '1 other conversation',
80
+ 'conv.others.count.other': '{n} other conversations',
81
+ 'conv.others.rest': '— nothing private to fix.',
82
+ 'conv.search': 'Find a conversation',
83
+ 'conv.empty': 'No conversations match.',
84
+ 'conv.shown': '{shown} of {total} shown. Most recent first.',
85
+ 'conv.tech.show': 'Show technical details',
86
+ 'conv.tech.hide': 'Hide technical details',
87
+ 'conv.tech.helpers.one': '1 helper',
88
+ 'conv.tech.helpers.other': '{n} helpers',
89
+ 'conv.tech.widen': 'to include it: {command}',
90
+ 'conv.tech.zone': 'Days and times are {zone}.',
91
+ 'conv.day.clear': 'Show the whole week',
92
+ 'conv.hero.lead.clean': 'Each time is one conversation with your AI. All of them were fine — open any to see what your AI did.',
93
+ 'conv.hero.lead.unchecked': 'Each time is one conversation with your AI. Nothing is waiting for you to fix.',
94
+ 'conv.hero.lead.fixed': 'Each time is one conversation with your AI. Everything it read has been fixed — open any to see what your AI did.',
95
+ 'conv.hero.lead.allowed': 'Each time is one conversation with your AI. It read only files you let it read — open any to see what your AI did.',
96
+ 'conv.hero.lead.fixedAllowed': 'Each time is one conversation with your AI. What it read has been fixed, or was a file you let it read — open any to see what your AI did.',
97
+ 'conv.list': 'Your conversations',
98
+ 'conv.filter.all': 'All',
99
+ 'conv.filter.label': 'Show only',
100
+ 'conv.more.all': 'Show all {n}',
101
+ 'conv.more.less': 'Show less',
102
+ 'conv.more.rest': '{n} more',
103
+ 'conv.day.count.one': '1 conversation',
104
+ 'conv.day.count.other': '{n} conversations',
105
+ 'conv.files.asked': 'You asked: “{ask}” · {when}',
106
+ 'conv.files.loading': 'Opening the files…',
107
+ 'conv.files.note': 'The same list as the Files tab of this conversation’s report.',
108
+ 'conv.files.full': 'Open the full report →',
109
+ 'conv.col.happened': 'What happened',
110
+ 'conv.did.read.one': 'Read 1 private file',
111
+ 'conv.did.read.other': 'Read {n} private files',
112
+ 'conv.did.partial.name.one': 'Its record names 1 private file.',
113
+ 'conv.did.partial.name.other': 'Its record names {n} private files.',
114
+ 'conv.col.setting': 'Your setting',
115
+ 'conv.fixed.yes': 'Fixed',
116
+ 'conv.fixed.no': 'Not yet',
117
+ 'conv.fixed.na': 'Nothing to fix',
118
+ 'conv.fixed.unknown': 'Not known',
119
+ 'conv.seeAll.one': 'See 1 file →',
120
+ 'conv.seeAll.other': 'See all {n} files →',
121
+ 'conv.empty.lead': 'That’s normal — you haven’t asked your AI for anything in this project since Monday.',
122
+ 'conv.empty.lead.today': 'That’s normal — you haven’t asked your AI for anything in this project today.',
123
+ 'conv.empty.safe': 'Your private files are protected either way.',
124
+ 'conv.empty.on': 'Protection is on.',
125
+ 'conv.empty.on.body': 'Your private files stay blocked.',
126
+ 'conv.empty.on.chosen': 'The private files you chose to block stay blocked.',
127
+ 'conv.empty.on.alert': 'If your AI tries to open one, we’ll alert you.',
128
+ 'conv.empty.last': 'See last week →',
129
+ 'conv.empty.earlier': 'See your last conversations →',
130
+ 'conv.empty.gap.one': '1 private file isn’t fully blocked.',
131
+ 'conv.empty.gap.other': '{n} private files aren’t fully blocked.',
132
+ 'conv.empty.gap.body': 'Your AI can still read what’s inside. You can finish blocking in Settings.',
133
+ 'conv.empty.settings': 'Open Settings →',
134
+ 'conv.day.yet': 'Nothing yet',
135
+ 'conv.day.ahead': 'Coming up',
136
+ 'conv.next': 'What happens next',
137
+ 'conv.next.1.title': 'Talk to your AI',
138
+ 'conv.next.1.body': 'Open Claude Code or Codex and ask for anything.',
139
+ 'conv.next.2.title': 'Work together',
140
+ 'conv.next.2.body': 'Let it do the job, like always.',
141
+ 'conv.next.3.title': 'See your conversation',
142
+ 'conv.next.3.body': 'Come back here to see what your AI did.',
143
+ 'conv.live': 'Connected · this page updates by itself',
144
+ 'conv.ask': '✦ Nothing showing up? See answers',
145
+ 'conv.ask.which': 'Which AI does agentwhy see?',
146
+ 'conv.ask.where': 'I asked my AI something, and it isn’t here.',
147
+ 'conv.ask.where.a': 'This page shows only this project’s conversations. One held in another folder belongs to that folder’s project.',
148
+ },
149
+ pl: {
150
+ 'conv.title': 'Rozmowy · agentwhy',
151
+ 'conv.week.this': 'Ten tydzień',
152
+ 'conv.week.last': 'Poprzedni tydzień',
153
+ 'conv.week.ago.few': '{n} tygodnie temu',
154
+ 'conv.week.ago.many': '{n} tygodni temu',
155
+ 'conv.hero.fact.one': 'Twoje AI pracowało dla ciebie raz.',
156
+ 'conv.hero.fact.few': 'Twoje AI pracowało dla ciebie {n} razy.',
157
+ 'conv.hero.fact.many': 'Twoje AI pracowało dla ciebie {n} razy.',
158
+ 'conv.hero.fact.zero': 'W tym tygodniu nie było jeszcze rozmów.',
159
+ 'conv.hero.none': 'Nic prywatnego nie zostało przeczytane.',
160
+ 'conv.hero.times.one': 'Raz przeczytało coś prywatnego.',
161
+ 'conv.hero.times.few': '{n} razy przeczytało coś prywatnego.',
162
+ 'conv.hero.times.many': '{n} razy przeczytało coś prywatnego.',
163
+ 'conv.hero.lead': 'Każdy raz to jedna rozmowa z twoim AI. Większość była w porządku. Te oznaczone na koralowo wymagają kilku minut twojego czasu.',
164
+ 'conv.day.today': 'Dziś',
165
+ 'conv.day.yesterday': 'Wczoraj',
166
+ 'conv.guide.today': 'dziś',
167
+ 'conv.guide.yesterday': 'wczoraj',
168
+ 'conv.guide.title': 'Zacznij od: {when}, {time}.',
169
+ 'conv.guide.asked': 'Prosiłeś: „{ask}”.',
170
+ 'conv.guide.read': 'Twoje AI przeczytało po drodze {what}. Naprawa zajmie około 2 minut.',
171
+ 'conv.guide.files.one': 'prywatny plik',
172
+ 'conv.guide.files.few': '{n} prywatne pliki',
173
+ 'conv.guide.files.many': '{n} prywatnych plików',
174
+ 'conv.guide.something': 'coś prywatnego',
175
+ 'conv.guide.go': 'Napraw teraz →',
176
+ 'conv.clean.title': 'W tym tygodniu nie ma nic do naprawy.',
177
+ 'conv.clean.body': 'Twoje AI nie przeczytało nic prywatnego.',
178
+ 'conv.clean.fixed': 'Twoje AI przeczytało coś prywatnego, ale wszystko jest już naprawione.',
179
+ 'conv.clean.allowed': 'Twoje AI przeczytało tylko prywatne pliki, na które mu pozwoliłeś.',
180
+ 'conv.clean.fixedAllowed': 'Twoje AI przeczytało coś prywatnego. To, co wymagało naprawy, jest naprawione, a resztę pozwoliłeś mu przeczytać.',
181
+ 'conv.week.heading': 'Twój tydzień',
182
+ 'conv.week.earlier': 'Wcześniejszy tydzień',
183
+ 'conv.week.later': 'Późniejszy tydzień',
184
+ 'conv.week.back': 'Wróć do tego tygodnia',
185
+ 'conv.week.pick': 'Wybierz tydzień',
186
+ 'conv.week.hint': 'Kliknij dzień, by zobaczyć tylko ten dzień',
187
+ 'conv.day.toCheck': '{n} do sprawdzenia',
188
+ 'conv.day.fixed.one': '1 odczyt, naprawiony',
189
+ 'conv.day.fixed.few': '{n} odczyty, naprawione',
190
+ 'conv.day.fixed.many': '{n} odczytów, naprawione',
191
+ 'conv.day.good': 'Wszystko dobrze',
192
+ 'conv.day.none': 'Bez pracy',
193
+ 'conv.need': 'Wymaga twojej uwagi',
194
+ 'conv.info': 'Dla twojej wiadomości',
195
+ 'conv.info.rest': '— twoje AI przeczytało pliki, które obserwujesz. Nic do naprawy.',
196
+ 'conv.col.when': 'Kiedy',
197
+ 'conv.col.ask': 'O co prosiłeś',
198
+ 'conv.col.action': 'Akcja',
199
+ 'conv.untitled': 'Rozmowa bez tytułu',
200
+ 'conv.day.unchecked.one': '1 niesprawdzona',
201
+ 'conv.day.unchecked.few': '{n} niesprawdzone',
202
+ 'conv.day.unchecked.many': '{n} niesprawdzonych',
203
+ 'conv.day.partial.one': '1 nie w pełni sprawdzona',
204
+ 'conv.day.partial.few': '{n} nie w pełni sprawdzone',
205
+ 'conv.day.partial.many': '{n} nie w pełni sprawdzonych',
206
+ 'conv.day.partial.other': '{n} nie w pełni sprawdzonej',
207
+ 'conv.unchecked.below.one': 'Jest na liście poniżej, razem z wyjaśnieniem.',
208
+ 'conv.unchecked.below.few': 'Są na liście poniżej, razem z wyjaśnieniem.',
209
+ 'conv.unchecked.below.many': 'Są na liście poniżej, razem z wyjaśnieniem.',
210
+ 'conv.unchecked.below.other': 'Są na liście poniżej, razem z wyjaśnieniem.',
211
+ 'conv.hero.unchecked.one': 'Jednej nie udało się sprawdzić.',
212
+ 'conv.hero.unchecked.few': '{n} nie udało się sprawdzić.',
213
+ 'conv.hero.unchecked.many': '{n} nie udało się sprawdzić.',
214
+ 'conv.hero.partial.one': 'Jednej nie udało się w pełni sprawdzić.',
215
+ 'conv.hero.partial.few': '{n} nie udało się w pełni sprawdzić.',
216
+ 'conv.hero.partial.many': '{n} nie udało się w pełni sprawdzić.',
217
+ 'conv.hero.partial.other': '{n} nie udało się w pełni sprawdzić.',
218
+ 'conv.unchecked': 'Nie sprawdzono',
219
+ 'conv.unchecked.title.one': '1 rozmowa nie została sprawdzona.',
220
+ 'conv.unchecked.title.few': '{n} rozmowy nie zostały sprawdzone.',
221
+ 'conv.unchecked.title.many': '{n} rozmów nie zostało sprawdzonych.',
222
+ 'conv.unchecked.lead': 'Ten przebieg ich nie czytał: są starsze niż on albo nie dało się odczytać ich zapisu. Żeby dołączyć starsze, uruchom {command}',
223
+ 'conv.unchecked.check': 'Ten przebieg jeszcze ich nie czytał. Kliknij Sprawdź przy którejś, żeby przeczytać ją teraz, albo uruchom {command}, żeby dołączyć wszystkie.',
224
+ 'conv.unchecked.partial.title.one': '1 rozmowa nie została w pełni sprawdzona.',
225
+ 'conv.unchecked.partial.title.few': '{n} rozmowy nie zostały w pełni sprawdzone.',
226
+ 'conv.unchecked.partial.title.many': '{n} rozmów nie zostało w pełni sprawdzonych.',
227
+ 'conv.unchecked.partial': 'Ich zapis pomija niektóre kroki, więc raporty mogą nie pokazywać wszystkiego, co otworzyło twoje AI. Otwórz którąś, żeby zobaczyć, co zostało zapisane.',
228
+ 'conv.unchecked.mixed': 'Część jest starsza niż to sprawdzenie albo nie dało się otworzyć ich zapisu. Zapis pozostałych pomija niektóre kroki, więc raporty mogą nie pokazywać wszystkiego. Żeby dołączyć starsze, uruchom {command}',
229
+ 'conv.act.fix': 'Napraw →',
230
+ 'conv.act.see': 'Zobacz raport',
231
+ 'conv.act.none': 'Brak raportu',
232
+ 'conv.act.include': 'Sprawdź',
233
+ 'conv.include.saving': 'Sprawdzam…',
234
+ 'conv.include.refused': 'Nie udało się:',
235
+ 'conv.include.asFile': 'Ta strona została otwarta jako plik. Żeby to sprawdzić, uruchom w swoim projekcie:',
236
+ 'conv.include.unreachable': 'Strona nie mogła połączyć się z agentwhy - mógł się zatrzymać. Uruchom go ponownie.',
237
+ 'conv.others.count.one': '1 inna rozmowa',
238
+ 'conv.others.count.few': '{n} inne rozmowy',
239
+ 'conv.others.count.many': '{n} innych rozmów',
240
+ 'conv.others.rest': '— nic prywatnego do naprawy.',
241
+ 'conv.search': 'Znajdź rozmowę',
242
+ 'conv.empty': 'Żadna rozmowa nie pasuje.',
243
+ 'conv.shown': 'Pokazano {shown} z {total}. Najnowsze na górze.',
244
+ 'conv.tech.show': 'Pokaż szczegóły techniczne',
245
+ 'conv.tech.hide': 'Ukryj szczegóły techniczne',
246
+ 'conv.tech.helpers.one': '1 pomocnik',
247
+ 'conv.tech.helpers.few': '{n} pomocników',
248
+ 'conv.tech.helpers.many': '{n} pomocników',
249
+ 'conv.tech.widen': 'by ją dołączyć: {command}',
250
+ 'conv.tech.zone': 'Dni i godziny w strefie {zone}.',
251
+ 'conv.day.clear': 'Pokaż cały tydzień',
252
+ 'conv.hero.lead.clean': 'Każdy raz to jedna rozmowa z twoim AI. Wszystkie były w porządku — otwórz dowolną, żeby zobaczyć, co robiło twoje AI.',
253
+ 'conv.hero.lead.unchecked': 'Każdy raz to jedna rozmowa z twoim AI. Nic nie czeka na naprawę.',
254
+ 'conv.hero.lead.fixed': 'Każdy raz to jedna rozmowa z twoim AI. Wszystko, co przeczytało, jest już naprawione — otwórz dowolną, żeby zobaczyć, co robiło twoje AI.',
255
+ 'conv.hero.lead.allowed': 'Każdy raz to jedna rozmowa z twoim AI. Przeczytało tylko pliki, na które mu pozwoliłeś — otwórz dowolną, żeby zobaczyć, co robiło twoje AI.',
256
+ 'conv.hero.lead.fixedAllowed': 'Każdy raz to jedna rozmowa z twoim AI. To, co przeczytało, jest już naprawione albo było plikiem, na który mu pozwoliłeś — otwórz dowolną, żeby zobaczyć, co robiło twoje AI.',
257
+ 'conv.list': 'Twoje rozmowy',
258
+ 'conv.filter.all': 'Wszystkie',
259
+ 'conv.filter.label': 'Pokaż tylko',
260
+ 'conv.more.all': 'Pokaż wszystkie ({n})',
261
+ 'conv.more.less': 'Pokaż mniej',
262
+ 'conv.more.rest': 'jeszcze {n}',
263
+ 'conv.day.count.one': '1 rozmowa',
264
+ 'conv.day.count.few': '{n} rozmowy',
265
+ 'conv.day.count.many': '{n} rozmów',
266
+ 'conv.files.asked': 'Twoje pytanie: „{ask}” · {when}',
267
+ 'conv.files.loading': 'Otwieram pliki…',
268
+ 'conv.files.note': 'Ta sama lista co zakładka Pliki w raporcie tej rozmowy.',
269
+ 'conv.files.full': 'Otwórz cały raport →',
270
+ 'conv.col.happened': 'Co się stało',
271
+ 'conv.did.read.one': 'Przeczytało 1 plik prywatny',
272
+ 'conv.did.read.few': 'Przeczytało {n} pliki prywatne',
273
+ 'conv.did.read.many': 'Przeczytało {n} plików prywatnych',
274
+ 'conv.did.partial.name.one': 'W zapisie jest nazwa 1 prywatnego pliku.',
275
+ 'conv.did.partial.name.few': 'W zapisie są nazwy {n} prywatnych plików.',
276
+ 'conv.did.partial.name.many': 'W zapisie są nazwy {n} prywatnych plików.',
277
+ 'conv.col.setting': 'Twoje ustawienie',
278
+ 'conv.fixed.yes': 'Naprawione',
279
+ 'conv.fixed.no': 'Jeszcze nie',
280
+ 'conv.fixed.na': 'Nic do naprawy',
281
+ 'conv.fixed.unknown': 'Nie wiadomo',
282
+ 'conv.seeAll.one': 'Zobacz 1 plik →',
283
+ 'conv.seeAll.few': 'Zobacz wszystkie {n} pliki →',
284
+ 'conv.seeAll.many': 'Zobacz wszystkie {n} plików →',
285
+ 'conv.empty.lead': 'To normalne — od poniedziałku o nic nie prosiłeś swojego AI w tym projekcie.',
286
+ 'conv.empty.lead.today': 'To normalne — dziś o nic nie prosiłeś swojego AI w tym projekcie.',
287
+ 'conv.empty.safe': 'Twoje prywatne pliki i tak są chronione.',
288
+ 'conv.empty.on': 'Ochrona jest włączona.',
289
+ 'conv.empty.on.body': 'Twoje prywatne pliki pozostają zablokowane.',
290
+ 'conv.empty.on.chosen': 'Prywatne pliki, które wybrałeś do zablokowania, pozostają zablokowane.',
291
+ 'conv.empty.on.alert': 'Jeśli twoje AI spróbuje któryś otworzyć, powiadomimy cię.',
292
+ 'conv.empty.last': 'Zobacz poprzedni tydzień →',
293
+ 'conv.empty.earlier': 'Zobacz ostatnie rozmowy →',
294
+ 'conv.empty.gap.one': '1 prywatny plik nie jest w pełni zablokowany.',
295
+ 'conv.empty.gap.few': '{n} prywatne pliki nie są w pełni zablokowane.',
296
+ 'conv.empty.gap.many': '{n} prywatnych plików nie jest w pełni zablokowanych.',
297
+ 'conv.empty.gap.body': 'Twoje AI wciąż może przeczytać, co jest w środku. Blokowanie dokończysz w Ustawieniach.',
298
+ 'conv.empty.settings': 'Otwórz Ustawienia →',
299
+ 'conv.day.yet': 'Jeszcze nic',
300
+ 'conv.day.ahead': 'Wkrótce',
301
+ 'conv.next': 'Co dalej',
302
+ 'conv.next.1.title': 'Porozmawiaj ze swoim AI',
303
+ 'conv.next.1.body': 'Otwórz Claude Code lub Codexa i poproś o cokolwiek.',
304
+ 'conv.next.2.title': 'Pracujcie razem',
305
+ 'conv.next.2.body': 'Pozwól mu wykonać zadanie, jak zawsze.',
306
+ 'conv.next.3.title': 'Zobacz swoją rozmowę',
307
+ 'conv.next.3.body': 'Wróć tutaj, żeby zobaczyć, co zrobiło twoje AI.',
308
+ 'conv.live': 'Połączono · ta strona odświeża się sama',
309
+ 'conv.ask': '✦ Nic się nie pojawia? Zobacz odpowiedzi',
310
+ 'conv.ask.which': 'Które AI widzi agentwhy?',
311
+ 'conv.ask.where': 'Poprosiłem AI o coś, a tego tu nie ma.',
312
+ 'conv.ask.where.a': 'Ta strona pokazuje tylko rozmowy z tego projektu. Rozmowa prowadzona w innym folderze należy do projektu tamtego folderu.',
313
+ },
314
+ de: {
315
+ 'conv.title': 'Unterhaltungen · agentwhy',
316
+ 'conv.week.this': 'Diese Woche',
317
+ 'conv.week.last': 'Letzte Woche',
318
+ 'conv.week.ago': 'vor {n} Wochen',
319
+ 'conv.hero.fact.one': 'Deine KI hat einmal für dich gearbeitet.',
320
+ 'conv.hero.fact.other': 'Deine KI hat {n}-mal für dich gearbeitet.',
321
+ 'conv.hero.fact.zero': 'Diese Woche gab es noch keine Unterhaltungen.',
322
+ 'conv.hero.none': 'Nichts Privates wurde gelesen.',
323
+ 'conv.hero.times.one': 'Einmal hat sie etwas Privates gelesen.',
324
+ 'conv.hero.times.other': '{n}-mal hat sie etwas Privates gelesen.',
325
+ 'conv.hero.lead': 'Jedes Mal ist eine Unterhaltung mit deiner KI. Die meisten waren in Ordnung. Die korallenrot markierten brauchen ein paar Minuten deiner Zeit.',
326
+ 'conv.day.today': 'Heute',
327
+ 'conv.day.yesterday': 'Gestern',
328
+ 'conv.guide.today': 'heute',
329
+ 'conv.guide.yesterday': 'gestern',
330
+ 'conv.guide.title': 'Fang mit {when}, {time} an.',
331
+ 'conv.guide.asked': 'Du hast gefragt: „{ask}“.',
332
+ 'conv.guide.read': 'Deine KI hat dabei {what} gelesen. Etwa 2 Minuten zum Beheben.',
333
+ 'conv.guide.files.one': 'eine private Datei',
334
+ 'conv.guide.files.other': '{n} private Dateien',
335
+ 'conv.guide.something': 'etwas Privates',
336
+ 'conv.guide.go': 'Jetzt beheben →',
337
+ 'conv.clean.title': 'Diese Woche gibt es nichts zu beheben.',
338
+ 'conv.clean.body': 'Deine KI hat nichts Privates gelesen.',
339
+ 'conv.clean.fixed': 'Deine KI hat etwas Privates gelesen, aber alles ist schon behoben.',
340
+ 'conv.clean.allowed': 'Deine KI hat nur private Dateien gelesen, die du ihr erlaubt hast.',
341
+ 'conv.clean.fixedAllowed': 'Deine KI hat etwas Privates gelesen. Was zu beheben war, ist behoben, den Rest hast du ihr erlaubt.',
342
+ 'conv.week.heading': 'Deine Woche',
343
+ 'conv.week.earlier': 'Eine frühere Woche',
344
+ 'conv.week.later': 'Eine spätere Woche',
345
+ 'conv.week.back': 'Zurück zu dieser Woche',
346
+ 'conv.week.pick': 'Woche wählen',
347
+ 'conv.week.hint': 'Tippe auf einen Tag, um nur diesen zu sehen',
348
+ 'conv.day.toCheck': '{n} zu prüfen',
349
+ 'conv.day.fixed.one': '1 gelesen, behoben',
350
+ 'conv.day.fixed.other': '{n} gelesen, behoben',
351
+ 'conv.day.good': 'Alles gut',
352
+ 'conv.day.none': 'Keine Arbeit',
353
+ 'conv.need': 'Braucht deine Aufmerksamkeit',
354
+ 'conv.info': 'Zur Info',
355
+ 'conv.info.rest': '— deine KI hat Dateien gelesen, die du beobachtest. Nichts zu beheben.',
356
+ 'conv.col.when': 'Wann',
357
+ 'conv.col.ask': 'Was du gefragt hast',
358
+ 'conv.col.action': 'Aktion',
359
+ 'conv.untitled': 'Eine Unterhaltung ohne Titel',
360
+ 'conv.day.unchecked.one': '1 nicht geprüft',
361
+ 'conv.day.unchecked.other': '{n} nicht geprüft',
362
+ 'conv.day.partial.one': '1 nicht ganz geprüft',
363
+ 'conv.day.partial.other': '{n} nicht ganz geprüft',
364
+ 'conv.unchecked.below.one': 'Sie steht unten in der Liste, mit dem Grund.',
365
+ 'conv.unchecked.below.other': 'Sie stehen unten in der Liste, mit dem Grund.',
366
+ 'conv.hero.unchecked.one': 'Eine konnte nicht geprüft werden.',
367
+ 'conv.hero.unchecked.other': '{n} konnten nicht geprüft werden.',
368
+ 'conv.hero.partial.one': 'Eine konnte nicht vollständig geprüft werden.',
369
+ 'conv.hero.partial.other': '{n} konnten nicht vollständig geprüft werden.',
370
+ 'conv.unchecked': 'Nicht geprüft',
371
+ 'conv.unchecked.title.one': '1 Unterhaltung wurde nicht geprüft.',
372
+ 'conv.unchecked.title.other': '{n} Unterhaltungen wurden nicht geprüft.',
373
+ 'conv.unchecked.lead': 'Dieser Lauf hat sie nicht gelesen: Sie sind älter als er, oder ihre Aufzeichnung konnte nicht gelesen werden. Um ältere einzubeziehen, führe {command} aus',
374
+ 'conv.unchecked.check': 'Dieser Lauf hat sie noch nicht gelesen. Klicke bei einer auf Prüfen, um sie jetzt zu lesen, oder führe {command} aus, um alle einzubeziehen.',
375
+ 'conv.unchecked.partial.title.one': '1 Unterhaltung konnte nicht vollständig geprüft werden.',
376
+ 'conv.unchecked.partial.title.other': '{n} Unterhaltungen konnten nicht vollständig geprüft werden.',
377
+ 'conv.unchecked.partial': 'Ihre Aufzeichnung lässt einige Schritte aus, daher zeigen ihre Berichte vielleicht nicht alles, was deine KI geöffnet hat. Öffne eine, um zu sehen, was aufgezeichnet wurde.',
378
+ 'conv.unchecked.mixed': 'Einige sind älter als diese Prüfung, oder ihre Aufzeichnung ließ sich nicht öffnen. Die übrigen lassen einige Schritte aus, daher zeigen ihre Berichte vielleicht nicht alles. Um ältere einzubeziehen, führe {command} aus',
379
+ 'conv.act.fix': 'Beheben →',
380
+ 'conv.act.see': 'Bericht ansehen',
381
+ 'conv.act.none': 'Kein Bericht',
382
+ 'conv.act.include': 'Prüfen',
383
+ 'conv.include.saving': 'Wird geprüft…',
384
+ 'conv.include.refused': 'Das hat nicht geklappt:',
385
+ 'conv.include.asFile': 'Diese Seite wurde als Datei geöffnet. Um sie zu prüfen, führe das hier in deinem Projekt aus:',
386
+ 'conv.include.unreachable': 'Die Seite hat agentwhy nicht erreicht - vielleicht wurde es beendet. Starte es neu.',
387
+ 'conv.others.count.one': '1 weitere Unterhaltung',
388
+ 'conv.others.count.other': '{n} weitere Unterhaltungen',
389
+ 'conv.others.rest': '— nichts Privates zu beheben.',
390
+ 'conv.search': 'Unterhaltung suchen',
391
+ 'conv.empty': 'Keine Unterhaltung passt.',
392
+ 'conv.shown': '{shown} von {total} angezeigt. Neueste zuerst.',
393
+ 'conv.tech.show': 'Technische Details zeigen',
394
+ 'conv.tech.hide': 'Technische Details ausblenden',
395
+ 'conv.tech.helpers.one': '1 Helfer',
396
+ 'conv.tech.helpers.other': '{n} Helfer',
397
+ 'conv.tech.widen': 'um sie aufzunehmen: {command}',
398
+ 'conv.tech.zone': 'Tage und Uhrzeiten in {zone}.',
399
+ 'conv.day.clear': 'Die ganze Woche zeigen',
400
+ 'conv.hero.lead.clean': 'Jedes Mal ist eine Unterhaltung mit deiner KI. Alle waren in Ordnung — öffne eine, um zu sehen, was deine KI getan hat.',
401
+ 'conv.hero.lead.unchecked': 'Jedes Mal ist eine Unterhaltung mit deiner KI. Nichts wartet darauf, behoben zu werden.',
402
+ 'conv.hero.lead.fixed': 'Jedes Mal ist eine Unterhaltung mit deiner KI. Alles, was sie gelesen hat, ist behoben — öffne eine, um zu sehen, was deine KI getan hat.',
403
+ 'conv.hero.lead.allowed': 'Jedes Mal ist eine Unterhaltung mit deiner KI. Sie hat nur Dateien gelesen, die du ihr erlaubt hast — öffne eine, um zu sehen, was deine KI getan hat.',
404
+ 'conv.hero.lead.fixedAllowed': 'Jedes Mal ist eine Unterhaltung mit deiner KI. Was sie gelesen hat, ist behoben oder war eine Datei, die du ihr erlaubt hast — öffne eine, um zu sehen, was deine KI getan hat.',
405
+ 'conv.list': 'Deine Unterhaltungen',
406
+ 'conv.filter.all': 'Alle',
407
+ 'conv.filter.label': 'Nur zeigen',
408
+ 'conv.more.all': 'Alle {n} zeigen',
409
+ 'conv.more.less': 'Weniger zeigen',
410
+ 'conv.more.rest': '{n} weitere',
411
+ 'conv.day.count.one': '1 Unterhaltung',
412
+ 'conv.day.count.other': '{n} Unterhaltungen',
413
+ 'conv.files.asked': 'Du hast gefragt: „{ask}“ · {when}',
414
+ 'conv.files.loading': 'Dateien werden geöffnet…',
415
+ 'conv.files.note': 'Dieselbe Liste wie der Tab Dateien im Bericht dieser Unterhaltung.',
416
+ 'conv.files.full': 'Ganzen Bericht öffnen →',
417
+ 'conv.col.happened': 'Was passiert ist',
418
+ 'conv.did.read.one': '1 private Datei gelesen',
419
+ 'conv.did.read.other': '{n} private Dateien gelesen',
420
+ 'conv.did.partial.name.one': 'Im Protokoll steht der Name von 1 privaten Datei.',
421
+ 'conv.did.partial.name.other': 'Im Protokoll stehen die Namen von {n} privaten Dateien.',
422
+ 'conv.col.setting': 'Deine Einstellung',
423
+ 'conv.fixed.yes': 'Behoben',
424
+ 'conv.fixed.no': 'Noch nicht',
425
+ 'conv.fixed.na': 'Nichts zu beheben',
426
+ 'conv.fixed.unknown': 'Unbekannt',
427
+ 'conv.seeAll.one': '1 Datei ansehen →',
428
+ 'conv.seeAll.other': 'Alle {n} Dateien ansehen →',
429
+ 'conv.empty.lead': 'Das ist normal — du hast deine KI seit Montag in diesem Projekt um nichts gebeten.',
430
+ 'conv.empty.lead.today': 'Das ist normal — du hast deine KI heute in diesem Projekt um nichts gebeten.',
431
+ 'conv.empty.safe': 'Deine privaten Dateien sind so oder so geschützt.',
432
+ 'conv.empty.on': 'Der Schutz ist an.',
433
+ 'conv.empty.on.body': 'Deine privaten Dateien bleiben blockiert.',
434
+ 'conv.empty.on.chosen': 'Die privaten Dateien, die du blockieren wolltest, bleiben blockiert.',
435
+ 'conv.empty.on.alert': 'Wenn deine KI versucht, eine davon zu öffnen, geben wir dir einen Hinweis.',
436
+ 'conv.empty.last': 'Letzte Woche ansehen →',
437
+ 'conv.empty.earlier': 'Deine letzten Unterhaltungen ansehen →',
438
+ 'conv.empty.gap.one': '1 private Datei ist nicht ganz blockiert.',
439
+ 'conv.empty.gap.other': '{n} private Dateien sind nicht ganz blockiert.',
440
+ 'conv.empty.gap.body': 'Deine KI kann ihren Inhalt noch lesen. In den Einstellungen kannst du das Blockieren abschließen.',
441
+ 'conv.empty.settings': 'Einstellungen öffnen →',
442
+ 'conv.day.yet': 'Noch nichts',
443
+ 'conv.day.ahead': 'Kommt noch',
444
+ 'conv.next': 'Wie es weitergeht',
445
+ 'conv.next.1.title': 'Sprich mit deiner KI',
446
+ 'conv.next.1.body': 'Öffne Claude Code oder Codex und bitte um irgendetwas.',
447
+ 'conv.next.2.title': 'Arbeitet zusammen',
448
+ 'conv.next.2.body': 'Lass sie die Arbeit machen, wie immer.',
449
+ 'conv.next.3.title': 'Sieh dir deine Unterhaltung an',
450
+ 'conv.next.3.body': 'Komm hierher zurück, um zu sehen, was deine KI getan hat.',
451
+ 'conv.live': 'Verbunden · diese Seite aktualisiert sich selbst',
452
+ 'conv.ask': '✦ Nichts zu sehen? Antworten ansehen',
453
+ 'conv.ask.which': 'Welche KI sieht agentwhy?',
454
+ 'conv.ask.where': 'Ich habe meine KI etwas gefragt, und es ist nicht hier.',
455
+ 'conv.ask.where.a': 'Diese Seite zeigt nur die Unterhaltungen dieses Projekts. Eine Unterhaltung in einem anderen Ordner gehört zum Projekt dieses Ordners.',
456
+ },
457
+ };
@@ -0,0 +1,59 @@
1
+ /**
2
+ * What only the This month page says (`.ai/plans/2026-09-23-month-redesign.md`). Everything else on it - the heading,
3
+ * the guide card, the tiles, the lists - is the Conversations page's, in the Conversations page's words.
4
+ */
5
+ export const MONTH_WORDS = {
6
+ en: {
7
+ 'month.title': 'This month · agentwhy',
8
+ 'month.this': 'This month',
9
+ 'month.last': 'Last month',
10
+ 'month.ago': '{n} months ago',
11
+ 'month.hero.zero': 'Your AI didn’t work for you this month.',
12
+ 'month.heading': 'Your month',
13
+ 'month.earlier': 'An earlier month',
14
+ 'month.later': 'A later month',
15
+ 'month.back': 'Back to this month',
16
+ 'month.pick': 'Choose a month',
17
+ 'month.hint': 'Tap a day to see what happened',
18
+ 'month.day.count.one': '1 conversation',
19
+ 'month.day.count.other': '{n} conversations',
20
+ 'month.tip.open': 'Click to see them',
21
+ 'month.window.note': 'Private files first, then the rest. Most recent first.',
22
+ },
23
+ pl: {
24
+ 'month.title': 'Ten miesiąc · agentwhy',
25
+ 'month.this': 'Ten miesiąc',
26
+ 'month.last': 'Poprzedni miesiąc',
27
+ 'month.ago.few': '{n} miesiące temu',
28
+ 'month.ago.many': '{n} miesięcy temu',
29
+ 'month.hero.zero': 'W tym miesiącu twoje AI nie pracowało.',
30
+ 'month.heading': 'Twój miesiąc',
31
+ 'month.earlier': 'Wcześniejszy miesiąc',
32
+ 'month.later': 'Późniejszy miesiąc',
33
+ 'month.back': 'Wróć do tego miesiąca',
34
+ 'month.pick': 'Wybierz miesiąc',
35
+ 'month.hint': 'Kliknij dzień, by zobaczyć, co się wydarzyło',
36
+ 'month.day.count.one': '1 rozmowa',
37
+ 'month.day.count.few': '{n} rozmowy',
38
+ 'month.day.count.many': '{n} rozmów',
39
+ 'month.tip.open': 'Kliknij, by je zobaczyć',
40
+ 'month.window.note': 'Najpierw pliki prywatne, potem reszta. Najnowsze na górze.',
41
+ },
42
+ de: {
43
+ 'month.title': 'Dieser Monat · agentwhy',
44
+ 'month.this': 'Dieser Monat',
45
+ 'month.last': 'Letzter Monat',
46
+ 'month.ago': 'vor {n} Monaten',
47
+ 'month.hero.zero': 'Deine KI hat diesen Monat nicht für dich gearbeitet.',
48
+ 'month.heading': 'Dein Monat',
49
+ 'month.earlier': 'Ein früherer Monat',
50
+ 'month.later': 'Ein späterer Monat',
51
+ 'month.back': 'Zurück zu diesem Monat',
52
+ 'month.pick': 'Monat wählen',
53
+ 'month.hint': 'Tippe auf einen Tag, um zu sehen, was passiert ist',
54
+ 'month.day.count.one': '1 Unterhaltung',
55
+ 'month.day.count.other': '{n} Unterhaltungen',
56
+ 'month.tip.open': 'Klicke, um sie zu sehen',
57
+ 'month.window.note': 'Zuerst private Dateien, dann der Rest. Neueste zuerst.',
58
+ },
59
+ };