@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,46 @@
1
+ /**
2
+ * Every colour and font of the design, once (`.ai/design/2026-09-23-design-guidelines.md` §2, §3, and the
3
+ * maintainer's design files). A component's own style names these and never a colour of its own: two pieces that
4
+ * mean the same thing then cannot drift apart, and a change of palette is a change of this file.
5
+ *
6
+ * The values are the design files' exactly, translucent ones included, because the pages are held to those files one
7
+ * to one (`.ai/plans/2026-09-23-conversations-redesign.md`).
8
+ */
9
+ export const TOKENS_STYLE = String.raw `
10
+ :root{
11
+ --bg:#111113;--panel:#141416;--card:#1a1a1d;--glow:#2c1c17;--glow-mid:#17131296;--glow-mint:rgba(30,70,52,0.55);
12
+ --text:#f2f0ee;--text-soft:#dcd8d5;--text-2:#a8a4a1;--text-3:#8a8683;--text-4:#5f5c5a;
13
+ --coral:#f8906f;--coral-text:#ff9a7a;--coral-hover:#ffa487;--coral-link-hover:#ffb8a0;--on-coral:#1c0f0a;
14
+ --coral-06:rgba(248,144,111,0.06);--coral-08:rgba(248,144,111,0.08);--coral-14:rgba(248,144,111,0.14);--coral-16:rgba(248,144,111,0.16);
15
+ --coral-25:rgba(248,144,111,0.25);--coral-30:rgba(248,144,111,0.3);--coral-35:rgba(248,144,111,0.35);--coral-45:rgba(248,144,111,0.45);--coral-50:rgba(248,144,111,0.5);
16
+ --amber:#f6b53d;--amber-16:rgba(246,181,61,0.16);
17
+ --sand:#f4ad5e;--sand-16:rgba(244,173,94,0.16);--sand-35:rgba(244,173,94,0.35);--on-sand:#1f150b;
18
+ --blue:#8fb7de;--blue-16:rgba(143,183,222,0.16);
19
+ --mint:#6dd3a6;--on-mint:#0c1c14;--mint-08:rgba(109,211,166,0.08);--mint-12:rgba(109,211,166,0.12);--mint-14:rgba(109,211,166,0.14);--mint-30:rgba(109,211,166,0.3);
20
+ --white-02:rgba(255,255,255,0.02);--white-06:rgba(255,255,255,0.06);--white-07:rgba(255,255,255,0.07);--white-08:rgba(255,255,255,0.08);
21
+ --white-09:rgba(255,255,255,0.09);--white-10:rgba(255,255,255,0.1);--white-12:rgba(255,255,255,0.12);--white-14:rgba(255,255,255,0.14);
22
+ --white-16:rgba(255,255,255,0.16);--white-28:rgba(255,255,255,0.28);--white-32:rgba(255,255,255,0.32);
23
+ --scroll:#2a2a2e;--star:#e59687;--star-glow:#f28b6844;--star-cross:#e59687aa;
24
+ --popup:#18181b;--popup-foot:#161618;--raised:#1f1f22;--raised-2:#232326;--avatar:#2a2a2e;--column-label:#6f6c69;--white:#ffffff;
25
+ --mint-hover:#85dcb5;--backdrop:rgba(8,8,9,0.72);--scrim:rgba(0,0,0,0.55);--shadow:rgba(0,0,0,0.6);--node-shadow:rgba(0,0,0,0.35);
26
+ --coral-05:rgba(248,144,111,0.05);--coral-07:rgba(248,144,111,0.07);--coral-12:rgba(248,144,111,0.12);--coral-18:rgba(248,144,111,0.18);
27
+ --coral-40:rgba(248,144,111,0.4);--coral-60:rgba(248,144,111,0.6);
28
+ --mint-05:rgba(109,211,166,0.05);--mint-06:rgba(109,211,166,0.06);--mint-07:rgba(109,211,166,0.07);--mint-16:rgba(109,211,166,0.16);--mint-20:rgba(109,211,166,0.2);--mint-50:rgba(109,211,166,0.5);--amber-12:rgba(246,181,61,0.12);--amber-35:rgba(246,181,61,0.35);--mint-10:rgba(109,211,166,0.1);--mint-35:rgba(109,211,166,0.35);
29
+ --white-025:rgba(255,255,255,0.025);--white-04:rgba(255,255,255,0.04);--white-05:rgba(255,255,255,0.05);--white-18:rgba(255,255,255,0.18);
30
+ --white-25:rgba(255,255,255,0.25);--white-30:rgba(255,255,255,0.3);--white-35:rgba(255,255,255,0.35);--white-40:rgba(255,255,255,0.4);--white-45:rgba(255,255,255,0.45);
31
+ --sans:-apple-system,BlinkMacSystemFont,'SF Pro Text','Segoe UI',system-ui,sans-serif;
32
+ --mono:ui-monospace,'SF Mono',Menlo,monospace;
33
+ color-scheme:dark}
34
+ body{margin:0;background:var(--bg);color:var(--text);font-family:var(--sans);-webkit-font-smoothing:antialiased}
35
+ a{color:var(--coral-text);text-decoration:none}a:hover{color:var(--coral-link-hover)}
36
+ *{box-sizing:border-box;scrollbar-color:var(--scroll) transparent}
37
+ ::-webkit-scrollbar{height:8px;width:8px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--scroll);border-radius:8px}
38
+ :focus-visible{outline:2px solid var(--coral);outline-offset:2px}
39
+ .i18n{display:none}
40
+ :root[data-lang="en"] .i18n[lang="en"],:root[data-lang="pl"] .i18n[lang="pl"],:root[data-lang="de"] .i18n[lang="de"]{display:inline}
41
+ .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
42
+ .js-only{display:none}.js .js-only{display:revert}
43
+ @media (prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}
44
+ `;
45
+ /** The page's background, for the browser's own chrome, which reads a meta tag and not a custom property. */
46
+ export const THEME_COLOUR = '#111113';
@@ -0,0 +1,146 @@
1
+ import { PACKAGE } from '../../../shared/package-name.js';
2
+ import { escapeHtml } from '../html-report-components.js';
3
+ import { inLanguages, labelAttributes } from '../report-copy.js';
4
+ import { closeButton, pill } from './button.js';
5
+ import { confirmDialog } from './confirm-dialog.js';
6
+ const WINDOW = 'upd-confirm';
7
+ /** An upward arrow in a circle: an update is neither a problem nor a safe state, so it is drawn in neither colour (U5). */
8
+ const ARROW = '<svg viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M12 19V5"/><path d="M6 11l6-6 6 6"/></svg>';
9
+ const CHECK = '<svg viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12.5l4.5 4.5L19 7.5"/></svg>';
10
+ /**
11
+ * The notice every page `start` serves draws while the project's hooks are behind (U4-U10): top right, like a system
12
+ * notification; **Update to X** opens the kit's confirmation window (U6, UD2) and posts `update` (U7); **Not now** hides
13
+ * it for this run (U9, UD1). Without a script, as a file, or once the server has gone, it shows the command a terminal
14
+ * runs instead of buttons that could not work (U10). Everything it can say is written here, in every language, so the
15
+ * script only shows and hides.
16
+ */
17
+ export function updateNotice(spec) {
18
+ const from = escapeHtml(spec.from);
19
+ const to = escapeHtml(spec.to);
20
+ const command = 'npx ' + PACKAGE + '@' + to + ' init --update';
21
+ const sentence = spec.shared ? 'upd.sentence.shared' : 'upd.sentence';
22
+ return '<aside class="upd" data-update-notice data-update-to="' + to + '" aria-labelledby="upd-title">' +
23
+ '<div class="upd-card">' +
24
+ closeButton(' data-upd-later' + labelAttributes((t) => t('app.close')), 'sm') +
25
+ '<div class="upd-head"><span class="upd-mark">' + ARROW + '</span><div>' +
26
+ '<p class="upd-title" id="upd-title">' + inLanguages((t) => t('upd.title')) + '</p>' +
27
+ '<p class="upd-sentence">' + inLanguages((t) => t(sentence, { from })) + '</p>' +
28
+ '</div></div>' +
29
+ '<div class="upd-actions">' +
30
+ pill({ label: inLanguages((t) => t('upd.update', { to })), tone: 'light', button: true, attributes: ' data-upd-update data-popup-open="' + WINDOW + '"' }) +
31
+ pill({ label: inLanguages((t) => t('upd.later')), tone: 'outline', button: true, attributes: ' data-upd-later' }) +
32
+ '</div>' +
33
+ '<p class="upd-say" data-upd-say="saving" hidden>' + inLanguages((t) => t('upd.saving')) + '</p>' +
34
+ '<p class="upd-say upd-say-bad" data-upd-say="refused" hidden>' + inLanguages((t) => t('upd.refused')) + ' <span data-upd-reason></span></p>' +
35
+ '<p class="upd-say upd-say-bad" data-upd-say="unreachable" hidden>' + inLanguages((t) => t('upd.unreachable')) + '</p>' +
36
+ '<div class="upd-command"><p>' + inLanguages((t) => t('upd.command')) + '</p>' +
37
+ '<div class="upd-line"><code data-upd-line>' + command + '</code>' +
38
+ pill({
39
+ label: '<span data-upd-copy-label>' + inLanguages((t) => t('upd.copy')) + '</span><span data-upd-copied hidden>' + inLanguages((t) => t('upd.copied')) + '</span>',
40
+ tone: 'outline',
41
+ size: 'sm',
42
+ button: true,
43
+ attributes: ' data-upd-copy',
44
+ }) +
45
+ '</div></div>' +
46
+ '<div class="upd-done"><span class="upd-check">' + CHECK + '</span><p>' + inLanguages((t) => t('upd.done', { to })) + '</p></div>' +
47
+ '</div></aside>' +
48
+ confirmDialog({
49
+ id: WINDOW,
50
+ title: inLanguages((t) => t('upd.confirm.title')),
51
+ subject: '<span class="upd-ver">' + from + '</span><span class="upd-arrow" aria-hidden="true">→</span><span class="upd-ver upd-ver-new">' + to + '</span>',
52
+ sentence: inLanguages((t) => t(spec.shared ? 'upd.confirm.sentence.shared' : 'upd.confirm.sentence', { to })),
53
+ option: '',
54
+ cancel: inLanguages((t) => t('app.cancel')),
55
+ confirm: inLanguages((t) => t('upd.confirm.do')),
56
+ confirmAttributes: ' data-upd-confirm',
57
+ glyph: ARROW,
58
+ });
59
+ }
60
+ export const UPDATE_NOTICE_STYLE = String.raw `
61
+ .upd{position:fixed;top:calc(24px + env(safe-area-inset-top));right:24px;z-index:25;width:360px;max-width:calc(100% - 32px);animation:upd-in .2s ease-out}
62
+ .upd[hidden]{display:none}
63
+ @keyframes upd-in{from{opacity:0;transform:translateX(12px)}to{opacity:1;transform:none}}
64
+ @keyframes upd-up{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
65
+ .upd-card{position:relative;padding:18px 18px 16px;border-radius:18px;background:var(--popup);border:1px solid var(--white-10);box-shadow:0 24px 70px var(--shadow)}
66
+ .upd-card>.close{position:absolute;top:12px;right:12px;width:30px;height:30px;font-size:16px}
67
+ .upd-head{display:flex;gap:14px;padding-right:34px}
68
+ .upd-mark{flex:none;width:36px;height:36px;border-radius:50%;background:var(--white-08);border:1px solid var(--white-12);color:var(--text);display:flex;align-items:center;justify-content:center}
69
+ .upd-title{margin:1px 0 6px;font-size:15.5px;font-weight:600;line-height:1.35;text-wrap:balance}
70
+ .upd-sentence{margin:0;font-size:14px;line-height:1.5;color:var(--text-2);text-wrap:pretty}
71
+ .upd-actions{display:flex;flex-wrap:wrap;gap:8px;margin:16px 0 0 50px}
72
+ .upd-say{margin:10px 0 0 50px;font-size:13.5px;line-height:1.45;color:var(--text-2)}
73
+ .upd-say-bad{color:var(--coral-text)}
74
+ .upd-command{display:none;margin:14px 0 0 50px}
75
+ .upd-command p{margin:0 0 8px;font-size:13.5px;color:var(--text-2)}
76
+ .upd-line{display:flex;align-items:center;gap:8px;padding:8px 8px 8px 12px;border-radius:10px;background:var(--raised);border:1px solid var(--white-09)}
77
+ .upd-line code{flex:1;min-width:0;font-family:var(--mono);font-size:12.5px;line-height:1.5;color:var(--text-soft);overflow-wrap:anywhere}
78
+ .upd-done{display:none;align-items:center;gap:12px}
79
+ .upd-done p{margin:0;font-size:14.5px;line-height:1.45;color:var(--text)}
80
+ .upd-check{flex:none;width:36px;height:36px;border-radius:50%;background:var(--mint-14);color:var(--mint);display:flex;align-items:center;justify-content:center}
81
+ .upd[data-state="command"] .upd-actions{display:none}
82
+ .upd[data-state="command"] .upd-command{display:block}
83
+ .upd[data-state="done"] .upd-head,.upd[data-state="done"] .upd-actions,.upd[data-state="done"] .upd-card>.close,.upd[data-state="done"] .upd-command,.upd[data-state="done"] .upd-say{display:none}
84
+ .upd[data-state="done"] .upd-done{display:flex}
85
+ html:not(.js) .upd-actions,html:not(.js) .upd-card>.close,html:not(.js) [data-upd-copy]{display:none}
86
+ html:not(.js) .upd-command{display:block}
87
+ #upd-confirm .cf-mark{background:var(--white-08);color:var(--text)}
88
+ .upd-ver{display:inline-block;font-family:var(--mono);font-size:13px;padding:4px 10px;border-radius:8px;background:var(--white-06);border:1px solid var(--white-10);color:var(--text-2)}
89
+ .upd-ver-new{color:var(--text);border-color:var(--white-25)}
90
+ .upd-arrow{margin:0 10px;color:var(--text-3)}
91
+ @media (max-width:640px){.upd{top:auto;right:16px;left:16px;bottom:calc(16px + env(safe-area-inset-bottom));width:auto;max-width:none;animation-name:upd-up}}
92
+ @media (prefers-reduced-motion:reduce){.upd{animation:none}}
93
+ `;
94
+ /**
95
+ * The notice's behaviour (U6-U10). Not now is kept in the browser under the run's token, so the next run of agentwhy -
96
+ * a new token - shows it again (UD1). The update is the page's one write of it, posted like every Settings write; a
97
+ * page that cannot post (a file, or a server that has gone) shows the command instead.
98
+ */
99
+ export const UPDATE_NOTICE_SCRIPT = String.raw `
100
+ (() => {
101
+ const notice = document.querySelector('[data-update-notice]');
102
+ if (!notice) return;
103
+ const served = location.protocol === 'http:' || location.protocol === 'https:';
104
+ const later = 'agentwhy.update.later';
105
+ const mark = (served ? location.pathname.split('/')[1] || '' : '') + ':' + notice.dataset.updateTo;
106
+ try { if (localStorage.getItem(later) === mark) { notice.hidden = true; return; } } catch (e) {}
107
+ const asCommand = () => { if (notice.dataset.state !== 'done') notice.dataset.state = 'command'; };
108
+ if (!served) asCommand();
109
+ const gone = document.querySelector('[data-live-stopped]');
110
+ if (gone) new MutationObserver(() => { if (!gone.hidden) asCommand(); }).observe(gone, { attributes: true, attributeFilter: ['hidden'] });
111
+ const say = (which) => notice.querySelectorAll('[data-upd-say]').forEach((line) => { line.hidden = line.dataset.updSay !== which; });
112
+ notice.querySelectorAll('[data-upd-later]').forEach((button) => button.addEventListener('click', () => {
113
+ notice.hidden = true;
114
+ try { localStorage.setItem(later, mark); } catch (e) {}
115
+ }));
116
+ const confirm = document.querySelector('[data-upd-confirm]');
117
+ const update = notice.querySelector('[data-upd-update]');
118
+ if (confirm && update) confirm.addEventListener('click', () => {
119
+ const dialog = confirm.closest('dialog');
120
+ if (dialog) dialog.close();
121
+ update.disabled = true;
122
+ say('saving');
123
+ fetch('api/settings', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ change: 'update' }) })
124
+ .then((response) => response.json().then((answer) => ({ ok: response.ok && answer.ok, message: answer.message || '' })))
125
+ .catch(() => ({ ok: false, unreachable: true, message: '' }))
126
+ .then((answer) => {
127
+ update.disabled = false;
128
+ if (answer.ok) {
129
+ say('');
130
+ notice.dataset.state = 'done';
131
+ setTimeout(() => { notice.hidden = true; }, 6000);
132
+ return;
133
+ }
134
+ notice.querySelector('[data-upd-reason]').textContent = answer.message;
135
+ say(answer.unreachable ? 'unreachable' : 'refused');
136
+ });
137
+ });
138
+ const copy = notice.querySelector('[data-upd-copy]');
139
+ if (copy && navigator.clipboard) copy.addEventListener('click', () => {
140
+ navigator.clipboard.writeText(notice.querySelector('[data-upd-line]').textContent).then(() => {
141
+ copy.querySelector('[data-upd-copy-label]').hidden = true;
142
+ copy.querySelector('[data-upd-copied]').hidden = false;
143
+ }, () => {});
144
+ });
145
+ })();
146
+ `;
@@ -0,0 +1,163 @@
1
+ /**
2
+ * The words the UI kit writes, whatever page it is on: the sidebar, the looks, the file chips, folding. In the
3
+ * glossary of `.ai/design/2026-09-23-design-guidelines.md` §7 - *private*, *read*, *helper*, *stopped* - and read
4
+ * through the one `translator` every page uses.
5
+ */
6
+ export const APP_WORDS = {
7
+ en: {
8
+ 'app.project': 'Your project',
9
+ 'app.shared': 'A shared page',
10
+ 'app.nav': 'Pages',
11
+ 'app.nav.conversations': 'Conversations',
12
+ 'app.nav.toFix': 'To fix',
13
+ 'app.nav.month': 'This month',
14
+ 'app.nav.settings': 'Settings',
15
+ 'app.local': 'Runs on your computer. Nothing is uploaded.',
16
+ 'app.lang': 'Language',
17
+ 'look.read': 'Read private files',
18
+ 'look.fixed': 'Read, now fixed',
19
+ 'look.allowed': 'Read — tracked',
20
+ 'look.name': 'Only saw a name',
21
+ 'look.stopped': 'Stopped',
22
+ 'look.none': 'Nothing private',
23
+ 'look.unchecked': 'Couldn’t check fully',
24
+ 'look.failed': 'Couldn’t be read',
25
+ 'look.outside': 'Not checked yet',
26
+ 'chip.more': '+{n} more',
27
+ 'chip.less': 'Show less',
28
+ 'fold.show': 'Show',
29
+ 'fold.hide': 'Hide',
30
+ 'app.close': 'Close',
31
+ 'app.cancel': 'Cancel',
32
+ 'upd.title': 'A new version of agentwhy is ready',
33
+ 'upd.sentence': 'This project still uses {from}. agentwhy never updates by itself, so nothing changes until you say so.',
34
+ 'upd.sentence.shared': 'Everyone who works on this project still uses {from}. agentwhy never updates by itself, so nothing changes until you say so.',
35
+ 'upd.update': 'Update to {to}',
36
+ 'upd.later': 'Not now',
37
+ 'upd.saving': 'Updating…',
38
+ 'upd.refused': 'Not updated.',
39
+ 'upd.unreachable': 'agentwhy could not be reached, so nothing changed.',
40
+ 'upd.command': 'To update, run this in your project:',
41
+ 'upd.copy': 'Copy',
42
+ 'upd.copied': 'Copied',
43
+ 'upd.done': 'Updated. Your AI’s next reply is checked by {to}.',
44
+ 'upd.confirm.title': 'Update agentwhy in this project?',
45
+ 'upd.confirm.sentence': 'Your AI’s next reply is checked by {to}. Nothing else in your settings changes.',
46
+ 'upd.confirm.sentence.shared': 'Your AI’s next reply is checked by {to}, for everyone on this project once they have your change. Nothing else in your settings changes.',
47
+ 'upd.confirm.do': 'Update',
48
+ 'live.new.one': '1 new conversation ↑',
49
+ 'live.new.other': '{n} new conversations ↑',
50
+ 'live.updated': 'Updated · Show',
51
+ 'live.go.one': '1 new conversation · Show',
52
+ 'live.go.other': '{n} new conversations · Show',
53
+ // which-project V14: a switch in another tab ends this page's run as Ctrl+C does, and the page cannot tell which.
54
+ 'live.stopped': 'agentwhy no longer shows this project here: it was stopped, or another tab switched to another project. Run agentwhy again to see new conversations.',
55
+ 'app.stuck': '✦ I\u2019m stuck',
56
+ 'app.tick': 'Mark as done',
57
+ 'app.ticked': 'Done',
58
+ },
59
+ pl: {
60
+ 'app.project': 'Twój projekt',
61
+ 'app.shared': 'Udostępniona strona',
62
+ 'app.nav': 'Strony',
63
+ 'app.nav.conversations': 'Rozmowy',
64
+ 'app.nav.toFix': 'Do naprawy',
65
+ 'app.nav.month': 'Ten miesiąc',
66
+ 'app.nav.settings': 'Ustawienia',
67
+ 'app.local': 'Działa na twoim komputerze. Nic nie jest wysyłane.',
68
+ 'app.lang': 'Język',
69
+ 'look.read': 'Przeczytało prywatne pliki',
70
+ 'look.fixed': 'Przeczytało, już naprawione',
71
+ 'look.allowed': 'Przeczytało — obserwowane',
72
+ 'look.name': 'Widziało tylko nazwę',
73
+ 'look.stopped': 'Zatrzymane',
74
+ 'look.none': 'Nic prywatnego',
75
+ 'look.unchecked': 'Nie w pełni sprawdzone',
76
+ 'look.failed': 'Nie dało się odczytać',
77
+ 'look.outside': 'Jeszcze nie sprawdzona',
78
+ 'chip.more': '+{n} więcej',
79
+ 'chip.less': 'Pokaż mniej',
80
+ 'fold.show': 'Pokaż',
81
+ 'fold.hide': 'Ukryj',
82
+ 'app.close': 'Zamknij',
83
+ 'app.cancel': 'Anuluj',
84
+ 'upd.title': 'Nowa wersja agentwhy jest gotowa',
85
+ 'upd.sentence': 'Ten projekt nadal używa wersji {from}. agentwhy nigdy nie aktualizuje się samo, więc nic się nie zmieni, dopóki nie zdecydujesz.',
86
+ 'upd.sentence.shared': 'Wszyscy, którzy pracują nad tym projektem, nadal używają wersji {from}. agentwhy nigdy nie aktualizuje się samo, więc nic się nie zmieni, dopóki nie zdecydujesz.',
87
+ 'upd.update': 'Zaktualizuj do {to}',
88
+ 'upd.later': 'Nie teraz',
89
+ 'upd.saving': 'Aktualizuję…',
90
+ 'upd.refused': 'Nie zaktualizowano.',
91
+ 'upd.unreachable': 'Nie udało się połączyć z agentwhy, więc nic się nie zmieniło.',
92
+ 'upd.command': 'Aby zaktualizować, uruchom w projekcie:',
93
+ 'upd.copy': 'Kopiuj',
94
+ 'upd.copied': 'Skopiowano',
95
+ 'upd.done': 'Zaktualizowano. Następną odpowiedź twojego AI sprawdzi wersja {to}.',
96
+ 'upd.confirm.title': 'Zaktualizować agentwhy w tym projekcie?',
97
+ 'upd.confirm.sentence': 'Następną odpowiedź twojego AI sprawdzi wersja {to}. Nic innego w ustawieniach się nie zmieni.',
98
+ 'upd.confirm.sentence.shared': 'Następną odpowiedź AI sprawdzi wersja {to} u wszystkich w tym projekcie, gdy dostaną twoją zmianę. Nic innego w ustawieniach się nie zmieni.',
99
+ 'upd.confirm.do': 'Zaktualizuj',
100
+ 'live.new.one': '1 nowa rozmowa ↑',
101
+ 'live.new.few': '{n} nowe rozmowy ↑',
102
+ 'live.new.many': '{n} nowych rozmów ↑',
103
+ 'live.updated': 'Zaktualizowano · Pokaż',
104
+ 'live.go.one': '1 nowa rozmowa · Pokaż',
105
+ 'live.go.few': '{n} nowe rozmowy · Pokaż',
106
+ 'live.go.many': '{n} nowych rozmów · Pokaż',
107
+ 'live.stopped': 'agentwhy nie pokazuje już tu tego projektu: zostało zatrzymane albo w innej karcie przełączono projekt. Uruchom agentwhy ponownie, żeby zobaczyć nowe rozmowy.',
108
+ 'app.stuck': '✦ Utknąłem',
109
+ 'app.tick': 'Oznacz jako zrobione',
110
+ 'app.ticked': 'Zrobione',
111
+ },
112
+ de: {
113
+ 'app.project': 'Dein Projekt',
114
+ 'app.shared': 'Eine geteilte Seite',
115
+ 'app.nav': 'Seiten',
116
+ 'app.nav.conversations': 'Unterhaltungen',
117
+ 'app.nav.toFix': 'Zu beheben',
118
+ 'app.nav.month': 'Dieser Monat',
119
+ 'app.nav.settings': 'Einstellungen',
120
+ 'app.local': 'Läuft auf deinem Computer. Nichts wird hochgeladen.',
121
+ 'app.lang': 'Sprache',
122
+ 'look.read': 'Private Dateien gelesen',
123
+ 'look.fixed': 'Gelesen, schon behoben',
124
+ 'look.allowed': 'Gelesen — beobachtet',
125
+ 'look.name': 'Nur einen Namen gesehen',
126
+ 'look.stopped': 'Gestoppt',
127
+ 'look.none': 'Nichts Privates',
128
+ 'look.unchecked': 'Nicht ganz geprüft',
129
+ 'look.failed': 'Nicht lesbar',
130
+ 'look.outside': 'Noch nicht geprüft',
131
+ 'chip.more': '+{n} weitere',
132
+ 'chip.less': 'Weniger zeigen',
133
+ 'fold.show': 'Zeigen',
134
+ 'fold.hide': 'Ausblenden',
135
+ 'app.close': 'Schließen',
136
+ 'app.cancel': 'Abbrechen',
137
+ 'upd.title': 'Eine neue Version von agentwhy ist bereit',
138
+ 'upd.sentence': 'Dieses Projekt nutzt noch {from}. agentwhy aktualisiert sich nie von selbst, also ändert sich nichts, bis du es sagst.',
139
+ 'upd.sentence.shared': 'Alle, die an diesem Projekt arbeiten, nutzen noch {from}. agentwhy aktualisiert sich nie von selbst, also ändert sich nichts, bis du es sagst.',
140
+ 'upd.update': 'Auf {to} aktualisieren',
141
+ 'upd.later': 'Nicht jetzt',
142
+ 'upd.saving': 'Wird aktualisiert …',
143
+ 'upd.refused': 'Nicht aktualisiert.',
144
+ 'upd.unreachable': 'agentwhy war nicht erreichbar, also hat sich nichts geändert.',
145
+ 'upd.command': 'Zum Aktualisieren führe das in deinem Projekt aus:',
146
+ 'upd.copy': 'Kopieren',
147
+ 'upd.copied': 'Kopiert',
148
+ 'upd.done': 'Aktualisiert. Die nächste Antwort deiner KI prüft {to}.',
149
+ 'upd.confirm.title': 'agentwhy in diesem Projekt aktualisieren?',
150
+ 'upd.confirm.sentence': 'Die nächste Antwort deiner KI prüft {to}. Sonst ändert sich nichts an deinen Einstellungen.',
151
+ 'upd.confirm.sentence.shared': 'Die nächste Antwort der KI prüft {to}, für alle in diesem Projekt, sobald sie deine Änderung haben. Sonst ändert sich nichts an deinen Einstellungen.',
152
+ 'upd.confirm.do': 'Aktualisieren',
153
+ 'live.new.one': '1 neue Unterhaltung ↑',
154
+ 'live.new.other': '{n} neue Unterhaltungen ↑',
155
+ 'live.updated': 'Aktualisiert · Anzeigen',
156
+ 'live.go.one': '1 neue Unterhaltung · Anzeigen',
157
+ 'live.go.other': '{n} neue Unterhaltungen · Anzeigen',
158
+ 'live.stopped': 'agentwhy zeigt dieses Projekt hier nicht mehr: Es wurde beendet, oder in einem anderen Tab wurde zu einem anderen Projekt gewechselt. Starte agentwhy erneut, um neue Unterhaltungen zu sehen.',
159
+ 'app.stuck': '✦ Ich komme nicht weiter',
160
+ 'app.tick': 'Als erledigt markieren',
161
+ 'app.ticked': 'Erledigt',
162
+ },
163
+ };