mulmoclaude 0.5.2 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Dockerfile.sandbox +100 -0
- package/README.md +17 -4
- package/bin/mulmoclaude.js +46 -15
- package/bin/prepare-dist.js +18 -2
- package/client/assets/chunk-CernVdwh.js +1 -0
- package/client/assets/chunk-D8eiyYIV-C1eAZMzz.js +1 -0
- package/client/assets/html2canvas-CDGcmOD3-BbPeutDg.js +5 -0
- package/client/assets/index-BbgSjFQ8.js +4968 -0
- package/client/assets/index-ECD0lgIv.css +2 -0
- package/client/assets/{index.es-D4YyL_Dg-BgT6a3Nd.js → index.es-DqtpmBm8-DJdTPdnc.js} +5 -5
- package/client/assets/material-symbols-outlined-BLDfUw-_.woff2 +0 -0
- package/client/assets/runtime-protocol-vue-6WYa8hAs.js +1 -0
- package/client/assets/runtime-vue-BVUzgYGA.js +1 -0
- package/client/assets/typeof-DBp4T-Ny-C2xoZtcz.js +1 -0
- package/client/assets/vue-1e_vz2LW.js +1 -0
- package/client/assets/vue.runtime.esm-bundler-DQ8Kjjui.js +4 -0
- package/client/index.html +33 -2
- package/package.json +20 -18
- package/sandbox-entrypoint.sh +106 -0
- package/server/accounting/accountNormalize.ts +32 -0
- package/server/accounting/defaultAccounts.ts +87 -0
- package/server/accounting/eventPublisher.ts +51 -0
- package/server/accounting/journal.ts +252 -0
- package/server/accounting/openingBalances.ts +114 -0
- package/server/accounting/report.ts +237 -0
- package/server/accounting/service.ts +718 -0
- package/server/accounting/snapshotCache.ts +333 -0
- package/server/accounting/timeSeries.ts +265 -0
- package/server/accounting/types.ts +148 -0
- package/server/agent/activeTools.ts +128 -0
- package/server/agent/attachmentConverter.ts +10 -5
- package/server/agent/backend/claude-code.ts +8 -2
- package/server/agent/backend/types.ts +1 -1
- package/server/agent/config.ts +101 -31
- package/server/agent/index.ts +45 -33
- package/server/agent/mcp-server.ts +146 -69
- package/server/agent/mcp-tools/index.ts +1 -5
- package/server/agent/mcp-tools/notify.ts +2 -22
- package/server/agent/mcp-tools/x.ts +0 -4
- package/server/agent/mcpHealth.ts +168 -0
- package/server/agent/plugin-names.ts +20 -77
- package/server/agent/prompt.ts +259 -51
- package/server/agent/resumeFailover.ts +1 -1
- package/server/agent/stream.ts +0 -1
- package/server/api/auth/bearerAuth.ts +5 -5
- package/server/api/csrfGuard.ts +1 -1
- package/server/api/routes/accounting.ts +366 -0
- package/server/api/routes/agent.ts +509 -46
- package/server/api/routes/attachment.ts +104 -0
- package/server/api/routes/chart.ts +2 -1
- package/server/api/routes/config.ts +12 -12
- package/server/api/routes/files.ts +105 -48
- package/server/api/routes/image.ts +70 -25
- package/server/api/routes/journal.ts +35 -0
- package/server/api/routes/mulmo-script.ts +358 -118
- package/server/api/routes/mulmoScriptValidate.ts +1 -1
- package/server/api/routes/news.ts +1 -1
- package/server/api/routes/notifications.ts +92 -22
- package/server/api/routes/notifier.ts +98 -0
- package/server/api/routes/pdf.ts +188 -48
- package/server/api/routes/plugins.ts +34 -14
- package/server/api/routes/presentHtml.ts +58 -3
- package/server/api/routes/roles.ts +1 -8
- package/server/api/routes/runtime-plugin.ts +224 -0
- package/server/api/routes/scheduler.ts +7 -5
- package/server/api/routes/schedulerHandlers.ts +1 -1
- package/server/api/routes/schedulerTasks.ts +8 -7
- package/server/api/routes/sessions.ts +234 -121
- package/server/api/routes/skills.ts +56 -51
- package/server/api/routes/sources.ts +52 -45
- package/server/api/routes/translation.ts +44 -0
- package/server/api/routes/wiki/frontmatter.ts +13 -65
- package/server/api/routes/wiki/history.ts +261 -0
- package/server/api/routes/wiki/pageIndex.ts +1 -1
- package/server/api/routes/wiki.ts +50 -26
- package/server/events/file-change.ts +83 -0
- package/server/events/notifications.ts +247 -91
- package/server/events/pub-sub/index.ts +1 -1
- package/server/events/relay-client.ts +5 -5
- package/server/events/scheduler-adapter.ts +2 -2
- package/server/events/session-store/index.ts +110 -22
- package/server/events/task-manager/index.ts +10 -9
- package/server/index.ts +509 -33
- package/server/notifier/engine.ts +419 -0
- package/server/notifier/legacy-adapters.ts +76 -0
- package/server/notifier/runtime-api.ts +74 -0
- package/server/notifier/store.ts +70 -0
- package/server/notifier/types.ts +121 -0
- package/server/plugins/dev-loader.ts +171 -0
- package/server/plugins/dev-watcher.ts +150 -0
- package/server/plugins/diagnostics.ts +188 -0
- package/server/plugins/preset-list.ts +52 -0
- package/server/plugins/preset-loader.ts +112 -0
- package/server/plugins/runtime-chat-api.ts +38 -0
- package/server/plugins/runtime-loader.ts +430 -0
- package/server/plugins/runtime-registry.ts +112 -0
- package/server/plugins/runtime-tasks-api.ts +50 -0
- package/server/plugins/runtime.ts +378 -0
- package/server/services/translation/cache.ts +72 -0
- package/server/services/translation/index.ts +106 -0
- package/server/services/translation/llm.ts +140 -0
- package/server/services/translation/types.ts +35 -0
- package/server/system/credentials.ts +13 -2
- package/server/system/env.ts +6 -1
- package/server/system/logger/formatters.ts +46 -4
- package/server/system/logger/index.ts +4 -4
- package/server/system/logger/sinks.ts +26 -5
- package/server/system/logger/types.ts +2 -2
- package/server/utils/dev-plugin-args.d.mts +11 -0
- package/server/utils/dev-plugin-args.mjs +43 -0
- package/server/utils/errors.ts +13 -4
- package/server/utils/files/accounting-io.ts +295 -0
- package/server/utils/files/atomic.ts +17 -49
- package/server/utils/files/attachment-store.ts +182 -0
- package/server/utils/files/html-io.ts +1 -7
- package/server/utils/files/html-store.ts +19 -0
- package/server/utils/files/image-store.ts +20 -22
- package/server/utils/files/index.ts +5 -15
- package/server/utils/files/journal-io.ts +7 -35
- package/server/utils/files/json.ts +2 -29
- package/server/utils/files/markdown-image-fill.ts +6 -37
- package/server/utils/files/markdown-store.ts +6 -21
- package/server/utils/files/naming.ts +3 -39
- package/server/utils/files/plugins-io.ts +100 -0
- package/server/utils/files/reference-dirs-io.ts +1 -9
- package/server/utils/files/roles-io.ts +2 -10
- package/server/utils/files/safe.ts +17 -19
- package/server/utils/files/scheduler-io.ts +1 -7
- package/server/utils/files/scheduler-overrides-io.ts +3 -12
- package/server/utils/files/session-io.ts +21 -30
- package/server/utils/files/spreadsheet-store.ts +9 -22
- package/server/utils/files/translation-io.ts +46 -0
- package/server/utils/files/user-tasks-io.ts +1 -7
- package/server/utils/files/workspace-io.ts +3 -79
- package/server/utils/gemini.ts +33 -11
- package/server/utils/html/htmlArtifactSplicer.ts +41 -0
- package/server/utils/markdown/frontmatter.ts +112 -0
- package/server/utils/regex.ts +56 -0
- package/server/utils/router.ts +41 -0
- package/server/utils/slug.ts +5 -3
- package/server/utils/time.ts +12 -0
- package/server/workspace/chat-index/indexer.ts +15 -2
- package/server/workspace/chat-index/summarizer.ts +1 -1
- package/server/workspace/custom-dirs.ts +1 -1
- package/server/workspace/helps/gemini.md +1 -1
- package/server/workspace/helps/guide.md +61 -0
- package/server/workspace/helps/index.md +4 -0
- package/server/workspace/helps/presenthtml.md +80 -0
- package/server/workspace/helps/sandbox.md +7 -0
- package/server/workspace/helps/storyteller.md +101 -0
- package/server/workspace/helps/telegram.md +1 -0
- package/server/workspace/helps/wiki.md +9 -7
- package/server/workspace/journal/archivist-cli.ts +7 -33
- package/server/workspace/journal/archivist-schemas.ts +5 -43
- package/server/workspace/journal/dailyPass.ts +34 -187
- package/server/workspace/journal/diff.ts +3 -28
- package/server/workspace/journal/index.ts +10 -81
- package/server/workspace/journal/indexFile.ts +3 -24
- package/server/workspace/journal/latestDaily.ts +51 -0
- package/server/workspace/journal/memoryExtractor.ts +4 -20
- package/server/workspace/journal/optimizationPass.ts +4 -21
- package/server/workspace/journal/paths.ts +4 -23
- package/server/workspace/journal/state.ts +6 -29
- package/server/workspace/memory/io.ts +213 -0
- package/server/workspace/memory/llm-classifier.ts +158 -0
- package/server/workspace/memory/migrate.ts +263 -0
- package/server/workspace/memory/run.ts +84 -0
- package/server/workspace/memory/topic-cluster.ts +218 -0
- package/server/workspace/memory/topic-detect.ts +67 -0
- package/server/workspace/memory/topic-index-hook.ts +128 -0
- package/server/workspace/memory/topic-io.ts +180 -0
- package/server/workspace/memory/topic-migrate.ts +248 -0
- package/server/workspace/memory/topic-run.ts +172 -0
- package/server/workspace/memory/topic-swap.ts +135 -0
- package/server/workspace/memory/topic-types.ts +142 -0
- package/server/workspace/memory/types.ts +83 -0
- package/server/workspace/news/reader.ts +4 -5
- package/server/workspace/paths.ts +124 -47
- package/server/workspace/roles.ts +2 -11
- package/server/workspace/skills/parser.ts +38 -55
- package/server/workspace/skills/user-tasks.ts +1 -2
- package/server/workspace/skills-preset/mc-library/SKILL.md +188 -0
- package/server/workspace/skills-preset.ts +196 -0
- package/server/workspace/sources/fetchers/githubIssues.ts +13 -11
- package/server/workspace/sources/fetchers/index.ts +1 -1
- package/server/workspace/sources/fetchers/rssParser.ts +1 -1
- package/server/workspace/sources/pipeline/index.ts +2 -2
- package/server/workspace/sources/pipeline/notify.ts +3 -3
- package/server/workspace/sources/pipeline/write.ts +2 -2
- package/server/workspace/sources/registry.ts +39 -61
- package/server/workspace/sources/robots.ts +1 -1
- package/server/workspace/tool-trace/classify.ts +2 -1
- package/server/workspace/tool-trace/index.ts +1 -1
- package/server/workspace/tool-trace/writeSearch.ts +6 -1
- package/server/workspace/wiki-backlinks/index.ts +19 -7
- package/server/workspace/wiki-backlinks/sessionBacklinks.ts +1 -0
- package/server/workspace/wiki-history/hook/snapshot.mjs +98 -0
- package/server/workspace/wiki-history/hook/snapshot.ts +135 -0
- package/server/workspace/wiki-history/provision.ts +181 -0
- package/server/workspace/wiki-pages/io.ts +217 -0
- package/server/workspace/wiki-pages/snapshot.ts +380 -0
- package/server/workspace/workspace.ts +75 -13
- package/src/App.vue +115 -40
- package/src/_runtime/protocol-vue.ts +21 -0
- package/src/_runtime/vue.ts +22 -0
- package/src/components/ChatInput.vue +14 -10
- package/src/components/CopyChatButton.vue +76 -0
- package/src/components/FileContentRenderer.vue +67 -14
- package/src/components/FileTree.vue +2 -2
- package/src/components/FilesView.vue +17 -1
- package/src/components/NewsView.vue +16 -2
- package/src/components/NotificationBell.vue +320 -93
- package/src/components/PageChatComposer.vue +5 -4
- package/src/components/PluginLauncher.vue +42 -6
- package/src/components/PluginScopedRoot.vue +87 -0
- package/src/components/RoleSelector.vue +12 -1
- package/src/components/RolesView.vue +562 -0
- package/src/components/SentAttachmentChip.vue +102 -0
- package/src/components/SessionHistoryPanel.vue +109 -20
- package/src/components/SessionRoleIcon.vue +7 -4
- package/src/components/SessionSidebar.vue +20 -7
- package/src/components/SessionTabBar.vue +1 -1
- package/src/components/SettingsMcpTab.vue +4 -4
- package/src/components/SettingsModal.vue +2 -0
- package/src/components/SidebarHeader.vue +16 -5
- package/src/components/SourcesManager.vue +23 -9
- package/src/components/SourcesView.vue +1 -1
- package/src/components/StackView.vue +102 -6
- package/src/components/SuggestionsPanel.vue +105 -16
- package/src/components/SystemFileBanner.vue +1 -1
- package/src/components/TodoExplorer.vue +4 -5
- package/src/components/todo/TodoAddDialog.vue +2 -3
- package/src/components/todo/TodoEditDialog.vue +1 -2
- package/src/components/todo/TodoEditPanel.vue +2 -3
- package/src/components/todo/TodoKanbanView.vue +8 -5
- package/src/components/todo/TodoListView.vue +3 -5
- package/src/components/todo/TodoTableView.vue +7 -5
- package/src/composables/useAccountingChannel.ts +58 -0
- package/src/composables/useActiveSession.ts +4 -25
- package/src/composables/useAppApi.ts +6 -44
- package/src/composables/useClipboardCopy.ts +3 -20
- package/src/composables/useContentDisplay.ts +33 -2
- package/src/composables/useDevPluginReload.ts +23 -0
- package/src/composables/useDynamicFavicon.ts +5 -31
- package/src/composables/useEventListeners.ts +0 -20
- package/src/composables/useExpandedDirs.ts +4 -15
- package/src/composables/useFaviconState.ts +12 -46
- package/src/composables/useFileChange.ts +53 -0
- package/src/composables/useFreshPluginData.ts +6 -43
- package/src/composables/useHealth.ts +14 -43
- package/src/composables/useImageErrorRepair.ts +104 -0
- package/src/composables/useLatestDaily.ts +40 -0
- package/src/composables/useMarkdownDoc.ts +39 -0
- package/src/composables/useMarkdownLinkHandler.ts +1 -1
- package/src/composables/useMcpTools.ts +3 -16
- package/src/composables/useNotifications.ts +138 -112
- package/src/composables/usePdfDownload.ts +17 -3
- package/src/composables/usePendingCalls.ts +8 -26
- package/src/composables/usePluginErrorBoundary.ts +68 -0
- package/src/composables/usePubSub.ts +9 -17
- package/src/composables/useRunElapsed.ts +5 -22
- package/src/composables/useSandboxStatus.ts +4 -20
- package/src/composables/useSessionDerived.ts +7 -15
- package/src/composables/useSessionHistory.ts +70 -29
- package/src/composables/useSessionSync.ts +25 -3
- package/src/composables/useSkillsList.ts +59 -0
- package/src/composables/useTranslatedQueries.ts +109 -0
- package/src/config/apiRoutes.ts +181 -80
- package/src/config/historyFilters.ts +5 -3
- package/src/config/hostEvents.ts +17 -0
- package/src/config/mcpCatalog.ts +277 -5
- package/src/config/pubsubChannels.ts +134 -12
- package/src/config/roles.ts +212 -147
- package/src/config/systemFileDescriptors.ts +5 -5
- package/src/config/toolNames.ts +52 -30
- package/src/config/workspacePaths.ts +26 -2
- package/src/lang/de.ts +483 -27
- package/src/lang/en.ts +448 -27
- package/src/lang/es.ts +474 -27
- package/src/lang/fr.ts +476 -27
- package/src/lang/ja.ts +465 -27
- package/src/lang/ko.ts +466 -27
- package/src/lang/pt-BR.ts +473 -27
- package/src/lang/zh.ts +463 -27
- package/src/lib/vue-i18n.ts +1 -1
- package/src/lib/wiki-page/slug.ts +66 -0
- package/src/main.ts +85 -0
- package/src/plugins/_extras.ts +58 -0
- package/src/plugins/_generated/metas.ts +42 -0
- package/src/plugins/_generated/registrations.ts +44 -0
- package/src/plugins/_generated/server-bindings.ts +47 -0
- package/src/plugins/accounting/Preview.vue +106 -0
- package/src/plugins/accounting/View.vue +632 -0
- package/src/plugins/accounting/actions.ts +34 -0
- package/src/plugins/accounting/api.ts +301 -0
- package/src/plugins/accounting/components/AccountEditor.vue +250 -0
- package/src/plugins/accounting/components/AccountRow.vue +50 -0
- package/src/plugins/accounting/components/AccountsList.vue +102 -0
- package/src/plugins/accounting/components/AccountsModal.vue +300 -0
- package/src/plugins/accounting/components/BalanceSheet.vue +186 -0
- package/src/plugins/accounting/components/BookSettings.vue +284 -0
- package/src/plugins/accounting/components/BookSwitcher.vue +78 -0
- package/src/plugins/accounting/components/DateRangePicker.vue +140 -0
- package/src/plugins/accounting/components/JournalEntryForm.vue +504 -0
- package/src/plugins/accounting/components/JournalList.vue +553 -0
- package/src/plugins/accounting/components/Ledger.vue +206 -0
- package/src/plugins/accounting/components/NewBookForm.vue +211 -0
- package/src/plugins/accounting/components/OpeningBalancesForm.vue +271 -0
- package/src/plugins/accounting/components/ProfitLoss.vue +160 -0
- package/src/plugins/accounting/components/accountDraft.ts +13 -0
- package/src/plugins/accounting/components/accountNumbering.ts +103 -0
- package/src/plugins/accounting/components/accountValidation.ts +75 -0
- package/src/plugins/accounting/components/useLatestRequest.ts +44 -0
- package/src/plugins/accounting/countries.ts +158 -0
- package/src/plugins/accounting/currencies.ts +64 -0
- package/src/plugins/accounting/dates.ts +51 -0
- package/src/plugins/accounting/definition.ts +199 -0
- package/src/plugins/accounting/fiscalYear.ts +136 -0
- package/src/plugins/accounting/index.ts +49 -0
- package/src/plugins/accounting/meta.ts +91 -0
- package/src/plugins/accounting/timeSeriesEnums.ts +16 -0
- package/src/plugins/api.ts +125 -0
- package/src/plugins/canvas/View.vue +38 -28
- package/src/plugins/canvas/definition.ts +10 -8
- package/src/plugins/canvas/index.ts +15 -8
- package/src/plugins/canvas/meta.ts +12 -0
- package/src/plugins/chart/Preview.vue +1 -1
- package/src/plugins/chart/View.vue +2 -2
- package/src/plugins/chart/definition.ts +12 -2
- package/src/plugins/chart/index.ts +15 -7
- package/src/plugins/chart/meta.ts +18 -0
- package/src/plugins/editImages/definition.ts +44 -0
- package/src/plugins/editImages/index.ts +43 -0
- package/src/plugins/editImages/meta.ts +5 -0
- package/src/plugins/generateImage/View.vue +3 -1
- package/src/plugins/generateImage/definition.ts +2 -0
- package/src/plugins/generateImage/index.ts +13 -5
- package/src/plugins/generateImage/meta.ts +5 -0
- package/src/plugins/index.ts +35 -0
- package/src/plugins/manageRoles/Preview.vue +7 -4
- package/src/plugins/manageRoles/View.vue +12 -8
- package/src/plugins/manageRoles/definition.ts +6 -0
- package/src/plugins/manageRoles/index.ts +7 -6
- package/src/plugins/manageSkills/View.vue +11 -7
- package/src/plugins/manageSkills/definition.ts +4 -1
- package/src/plugins/manageSkills/index.ts +14 -7
- package/src/plugins/manageSkills/meta.ts +21 -0
- package/src/plugins/manageSource/definition.ts +4 -1
- package/src/plugins/manageSource/index.ts +15 -7
- package/src/plugins/manageSource/meta.ts +21 -0
- package/src/plugins/markdown/Preview.vue +10 -8
- package/src/plugins/markdown/View.vue +84 -17
- package/src/plugins/markdown/definition.ts +7 -1
- package/src/plugins/markdown/index.ts +15 -8
- package/src/plugins/markdown/meta.ts +16 -0
- package/src/plugins/meta-types.ts +97 -0
- package/src/plugins/metas.ts +224 -0
- package/src/plugins/presentForm/Preview.vue +4 -15
- package/src/plugins/presentForm/View.vue +35 -78
- package/src/plugins/presentForm/definition.ts +7 -6
- package/src/plugins/presentForm/index.ts +12 -5
- package/src/plugins/presentForm/meta.ts +11 -0
- package/src/plugins/presentForm/plugin.ts +8 -9
- package/src/plugins/presentForm/types.ts +0 -24
- package/src/plugins/presentHtml/Preview.vue +1 -8
- package/src/plugins/presentHtml/View.vue +401 -30
- package/src/plugins/presentHtml/definition.ts +8 -5
- package/src/plugins/presentHtml/index.ts +15 -8
- package/src/plugins/presentHtml/meta.ts +14 -0
- package/src/plugins/presentMulmoScript/View.vue +327 -107
- package/src/plugins/presentMulmoScript/definition.ts +34 -7
- package/src/plugins/presentMulmoScript/helpers.ts +4 -5
- package/src/plugins/presentMulmoScript/index.ts +20 -7
- package/src/plugins/presentMulmoScript/meta.ts +52 -0
- package/src/plugins/scheduler/AutomationsPreview.vue +2 -8
- package/src/plugins/scheduler/Preview.vue +5 -2
- package/src/plugins/scheduler/TasksTab.vue +16 -36
- package/src/plugins/scheduler/View.vue +22 -54
- package/src/plugins/scheduler/automationsDefinition.ts +14 -9
- package/src/plugins/scheduler/automationsMeta.ts +5 -0
- package/src/plugins/scheduler/calendarDefinition.ts +4 -7
- package/src/plugins/scheduler/calendarMeta.ts +28 -0
- package/src/plugins/scheduler/formatSchedule.ts +6 -24
- package/src/plugins/scheduler/index.ts +26 -52
- package/src/plugins/scope.ts +57 -0
- package/src/plugins/server-bindings-types.ts +38 -0
- package/src/plugins/server.ts +32 -0
- package/src/plugins/skill/Preview.vue +25 -0
- package/src/plugins/skill/View.vue +125 -0
- package/src/plugins/skill/definition.ts +23 -0
- package/src/plugins/skill/index.ts +36 -0
- package/src/plugins/skill/plugin.ts +31 -0
- package/src/plugins/skill/types.ts +21 -0
- package/src/plugins/spreadsheet/Preview.vue +1 -3
- package/src/plugins/spreadsheet/View.vue +29 -49
- package/src/plugins/spreadsheet/cellHighlights.ts +2 -3
- package/src/plugins/spreadsheet/definition.ts +5 -2
- package/src/plugins/spreadsheet/index.ts +15 -8
- package/src/plugins/spreadsheet/keyboardNav.ts +38 -0
- package/src/plugins/spreadsheet/meta.ts +14 -0
- package/src/plugins/textResponse/Preview.vue +9 -1
- package/src/plugins/textResponse/View.vue +59 -8
- package/src/plugins/textResponse/index.ts +11 -3
- package/src/plugins/textResponse/plugin.ts +8 -10
- package/src/plugins/textResponse/types.ts +28 -0
- package/src/plugins/wiki/Preview.vue +6 -4
- package/src/plugins/wiki/View.vue +463 -254
- package/src/plugins/wiki/components/WikiPageBody.vue +159 -0
- package/src/plugins/wiki/helpers.ts +17 -0
- package/src/plugins/wiki/history/HistoryDetail.vue +325 -0
- package/src/plugins/wiki/history/HistoryTab.vue +167 -0
- package/src/plugins/wiki/history/RestoreConfirm.vue +63 -0
- package/src/plugins/wiki/history/api.ts +52 -0
- package/src/plugins/wiki/history/diff.ts +145 -0
- package/src/plugins/wiki/index.ts +42 -32
- package/src/plugins/wiki/meta.ts +10 -0
- package/src/plugins/wiki/pageEditLoader.ts +53 -0
- package/src/plugins/wiki/route.ts +8 -0
- package/src/router/guards.ts +2 -1
- package/src/router/index.ts +19 -0
- package/src/router/pageRoutes.ts +1 -0
- package/src/tools/index.ts +50 -51
- package/src/tools/runtimeLoader.ts +141 -0
- package/src/tools/types.ts +44 -1
- package/src/types/notification.ts +23 -0
- package/src/types/pastedFile.ts +10 -0
- package/src/types/session.ts +61 -3
- package/src/types/sse.ts +21 -6
- package/src/utils/agent/eventDispatch.ts +12 -9
- package/src/utils/agent/pastedAttachment.ts +35 -0
- package/src/utils/agent/request.ts +32 -3
- package/src/utils/agent/toolCalls.ts +7 -1
- package/src/utils/api.ts +1 -1
- package/src/utils/chat/exportMarkdown.ts +243 -0
- package/src/utils/errors.ts +10 -2
- package/src/utils/files/expandedDirs.ts +1 -1
- package/src/utils/filesPreview/todoPreview.ts +13 -2
- package/src/utils/format/date.ts +1 -3
- package/src/utils/format/jsonSyntax.ts +5 -0
- package/src/utils/html/iframeHeightReporterScript.ts +62 -0
- package/src/utils/html/previewCsp.ts +29 -2
- package/src/utils/image/htmlSrcAttrs.ts +122 -0
- package/src/utils/image/imageRepairInlineScript.ts +115 -0
- package/src/utils/image/resolve.ts +17 -3
- package/src/utils/image/rewriteMarkdownImageRefs.ts +62 -9
- package/src/utils/markdown/frontmatter.ts +125 -0
- package/src/utils/markdown/taskList.ts +7 -2
- package/src/utils/plugin/runtime.ts +132 -0
- package/src/utils/session/mergeSessions.ts +40 -37
- package/src/utils/session/sessionEntries.ts +74 -18
- package/src/utils/session/sessionHelpers.ts +54 -10
- package/src/utils/tools/result.ts +76 -14
- package/src/vite-env.d.ts +6 -0
- package/client/assets/html2canvas-Cx501zZr-Bug0qRNv.js +0 -5
- package/client/assets/index-CY-WpQUm.css +0 -2
- package/client/assets/index-DbTz2Mfs.js +0 -4911
- package/client/assets/material-symbols-outlined-NzYEeyps.woff2 +0 -0
- package/server/api/routes/html.ts +0 -114
- package/server/api/routes/todos.ts +0 -293
- package/server/api/routes/todosColumnsHandlers.ts +0 -333
- package/server/api/routes/todosHandlers.ts +0 -274
- package/server/api/routes/todosItemsHandlers.ts +0 -386
- package/server/utils/files/todos-io.ts +0 -29
- package/src/components/NotificationToast.vue +0 -75
- package/src/plugins/editImage/definition.ts +0 -27
- package/src/plugins/editImage/index.ts +0 -37
- package/src/plugins/presentHtml/helpers.ts +0 -72
- package/src/plugins/scheduler/LegacySchedulerView.vue +0 -32
- package/src/plugins/scheduler/legacyShape.ts +0 -34
- package/src/plugins/todo/Preview.vue +0 -68
- package/src/plugins/todo/View.vue +0 -378
- package/src/plugins/todo/composables/useTodos.ts +0 -179
- package/src/plugins/todo/definition.ts +0 -45
- package/src/plugins/todo/index.ts +0 -62
- package/src/plugins/todo/labels.ts +0 -163
- package/src/plugins/todo/priority.ts +0 -98
- package/src/plugins/todo/viewModes.ts +0 -19
- package/src/plugins/wiki/definition.ts +0 -25
- package/src/tools/legacyPluginNames.ts +0 -13
- package/src/utils/format/frontmatter.ts +0 -80
- package/src/utils/image/rewriteHtmlImageRefs.ts +0 -50
- package/src/utils/notification/dispatch.ts +0 -58
- /package/client/assets/{purify.es-Fx1Nqyry-BwJECkqS.js → purify.es-Fx1Nqyry-BSVNht6S.js} +0 -0
- /package/src/plugins/{editImage → editImages}/Preview.vue +0 -0
- /package/src/plugins/{editImage → editImages}/View.vue +0 -0
- /package/src/{config/schedulerActions.ts → plugins/scheduler/actions.ts} +0 -0
package/src/lang/pt-BR.ts
CHANGED
|
@@ -33,11 +33,13 @@ const ptBRMessages = {
|
|
|
33
33
|
attachFile: "Anexar arquivo",
|
|
34
34
|
fileTooLarge: "Arquivo muito grande ({sizeMB} MB). O limite é 30 MB.",
|
|
35
35
|
unsupportedFileType: "Tipo de arquivo não suportado. Aceitos: imagens, PDF, DOCX, XLSX, PPTX e arquivos de texto.",
|
|
36
|
+
attachImageFailed: "Falha ao anexar a imagem: {error}",
|
|
36
37
|
},
|
|
37
38
|
sessionHistoryPanel: {
|
|
38
39
|
filters: {
|
|
39
40
|
all: "Todas",
|
|
40
41
|
unread: "Não lidas",
|
|
42
|
+
bookmarked: "Favoritas",
|
|
41
43
|
human: "Pessoa",
|
|
42
44
|
scheduler: "Agendador",
|
|
43
45
|
skill: "Skill",
|
|
@@ -50,18 +52,45 @@ const ptBRMessages = {
|
|
|
50
52
|
running: "Em execução",
|
|
51
53
|
noMessages: "(sem mensagens)",
|
|
52
54
|
openRowAria: "Abrir sessão: {preview}",
|
|
55
|
+
rowMenuAria: "Ações da sessão",
|
|
56
|
+
bookmark: "Favoritar",
|
|
57
|
+
unbookmark: "Remover favorito",
|
|
58
|
+
delete: "Excluir",
|
|
59
|
+
deleteConfirm: "Excluir esta sessão?\n\n{preview}\n\nEsta ação não pode ser desfeita.",
|
|
53
60
|
},
|
|
54
61
|
notificationBell: {
|
|
55
62
|
notifications: "Notificações",
|
|
56
|
-
|
|
57
|
-
|
|
63
|
+
activeSection: "Ativas",
|
|
64
|
+
historySection: "Histórico",
|
|
65
|
+
noActive: "Sem notificações ativas",
|
|
66
|
+
noHistory: "Sem atividade recente",
|
|
67
|
+
clearAll: "Limpar",
|
|
58
68
|
dismiss: "Dispensar",
|
|
69
|
+
cancel: "Cancelar",
|
|
70
|
+
},
|
|
71
|
+
pluginDiagnostics: {
|
|
72
|
+
title: "Problema de configuração do plugin",
|
|
73
|
+
hostBody: 'O plugin "{plugin}" tentou registrar a chave {label} "{key}", mas ela está reservada para o host. A entrada do plugin foi descartada.',
|
|
74
|
+
intraBody:
|
|
75
|
+
'Os plugins "{first}" e "{second}" registram o mesmo {dimension} "{key}". "{first}" o reivindicou primeiro, portanto o registro de "{second}" é ignorado.',
|
|
76
|
+
},
|
|
77
|
+
pluginErrorBoundary: {
|
|
78
|
+
title: "O plugin {pkg} travou",
|
|
79
|
+
subtitle: "O plugin falhou ao renderizar. O erro foi registrado no console.",
|
|
80
|
+
showDetails: "Mostrar detalhes",
|
|
81
|
+
hideDetails: "Ocultar detalhes",
|
|
82
|
+
retry: "Tentar novamente",
|
|
59
83
|
},
|
|
60
84
|
sidebarHeader: {
|
|
61
85
|
home: "Ir para o chat mais recente",
|
|
62
86
|
toolCallHistory: "Histórico de chamadas de ferramentas",
|
|
63
87
|
settings: "Configurações",
|
|
64
88
|
settingsGeminiMissing: "Configurações — Chave da API Gemini ausente",
|
|
89
|
+
todayJournal: "Resumo de hoje",
|
|
90
|
+
todayJournalNotFound: "Ainda sem resumo — converse um pouco e o journal será gerado.",
|
|
91
|
+
todayJournalLoadFailed: "Falha ao carregar o journal (status {status}): {error}",
|
|
92
|
+
copyMarkdown: "Copiar conversa como Markdown",
|
|
93
|
+
copiedMarkdown: "Copiado!",
|
|
65
94
|
},
|
|
66
95
|
rightSidebar: {
|
|
67
96
|
toggleSystemPrompt: "Alternar system prompt",
|
|
@@ -201,6 +230,110 @@ const ptBRMessages = {
|
|
|
201
230
|
pdfPreview: "Pré-visualização PDF",
|
|
202
231
|
parseError: "erro de análise",
|
|
203
232
|
},
|
|
233
|
+
filesView: {
|
|
234
|
+
chatPlaceholder: "Pergunte sobre este arquivo…",
|
|
235
|
+
},
|
|
236
|
+
systemFiles: {
|
|
237
|
+
schemaLabel: "Esquema",
|
|
238
|
+
showDetails: "Mostrar detalhes",
|
|
239
|
+
hideDetails: "Ocultar detalhes",
|
|
240
|
+
editPolicy: {
|
|
241
|
+
"agent-managed-but-hand-editable": "Gerenciado pelo agente (edição manual permitida)",
|
|
242
|
+
"user-editable": "Editável pelo usuário",
|
|
243
|
+
"agent-managed": "Gerenciado pelo agente",
|
|
244
|
+
"fragile-format": "Formato frágil",
|
|
245
|
+
ephemeral: "Efêmero",
|
|
246
|
+
},
|
|
247
|
+
interests: {
|
|
248
|
+
title: "Configuração de interesses",
|
|
249
|
+
summary: "Tópicos que o pipeline de notícias / fontes monitora e pontua. Editável manualmente; o agente também atualiza a partir do chat.",
|
|
250
|
+
},
|
|
251
|
+
mcp: {
|
|
252
|
+
title: "Servidores MCP",
|
|
253
|
+
summary: "Servidores externos do Model Context Protocol conectados ao agente. Adicione servidores HTTP ou stdio para expandir as ferramentas.",
|
|
254
|
+
},
|
|
255
|
+
settings: {
|
|
256
|
+
title: "Configurações do app",
|
|
257
|
+
summary: "Preferências de comportamento editáveis — chave da API Gemini, ferramentas permitidas, configuração do sandbox etc.",
|
|
258
|
+
},
|
|
259
|
+
schedulerTasks: {
|
|
260
|
+
title: "Tarefas do agendador",
|
|
261
|
+
summary: "Automações recorrentes do agente que disparam em horário definido. Gerenciadas pela UI Automations; este arquivo é a fonte em disco.",
|
|
262
|
+
},
|
|
263
|
+
schedulerOverrides: {
|
|
264
|
+
title: "Sobrescritas do agendador",
|
|
265
|
+
summary:
|
|
266
|
+
"Sobrescritas por tarefa de horário / intervalo aplicadas sobre o agendamento do sistema. O agente edita quando você pede para mudar o horário de uma tarefa.",
|
|
267
|
+
},
|
|
268
|
+
newsReadState: {
|
|
269
|
+
title: "Estado de leitura de notícias",
|
|
270
|
+
summary: "Rastreamento local de quais notícias você viu. Efêmero — pode apagar; será regenerado conforme você lê.",
|
|
271
|
+
},
|
|
272
|
+
schedulerItems: {
|
|
273
|
+
title: "Fila de itens do agendador",
|
|
274
|
+
summary: "Invocações agendadas prontas para disparar. Gerenciado pelo agente; não edite manualmente sem entender cada campo.",
|
|
275
|
+
},
|
|
276
|
+
todosItems: {
|
|
277
|
+
title: "Itens pendentes",
|
|
278
|
+
summary:
|
|
279
|
+
'Suas tarefas em todas as colunas do quadro kanban. O agente escreve aqui quando você diz "adicione um todo"; você também pode editar manualmente.',
|
|
280
|
+
},
|
|
281
|
+
todosColumns: {
|
|
282
|
+
title: "Colunas de pendências",
|
|
283
|
+
summary: "Layout das colunas do kanban (títulos, ordem, ids). Editável pelo usuário — renomeie ou reordene livremente.",
|
|
284
|
+
},
|
|
285
|
+
wikiIndex: {
|
|
286
|
+
title: "Índice da wiki",
|
|
287
|
+
summary: "Índice autogerado de todas as páginas da wiki. Atualizado a cada edição — não edite manualmente (suas alterações serão sobrescritas).",
|
|
288
|
+
},
|
|
289
|
+
wikiLog: {
|
|
290
|
+
title: "Log de edição da wiki",
|
|
291
|
+
summary: "Log de atividade de criação e edição de páginas. Gerenciado pelo agente e somente acréscimos — útil como feed de mudanças recentes.",
|
|
292
|
+
},
|
|
293
|
+
wikiSummary: {
|
|
294
|
+
title: "Resumo da wiki",
|
|
295
|
+
summary: "Visão geral autogerada da wiki — clusters de tópicos, contagem de páginas, atividade recente. Atualizado pelo agente.",
|
|
296
|
+
},
|
|
297
|
+
wikiSchema: {
|
|
298
|
+
title: "Esquema da wiki",
|
|
299
|
+
summary:
|
|
300
|
+
"Especificação de formato que o agente lê para manter as páginas da wiki consistentes. Frágil — espera uma estrutura específica; prefira edições via agente.",
|
|
301
|
+
},
|
|
302
|
+
memory: {
|
|
303
|
+
title: "Memória",
|
|
304
|
+
summary:
|
|
305
|
+
"Fatos destilados sobre você, sempre carregados como contexto em novas conversas. O extrator do journal adiciona automaticamente; você também pode editar manualmente.",
|
|
306
|
+
},
|
|
307
|
+
summariesIndex: {
|
|
308
|
+
title: "Índice de resumos",
|
|
309
|
+
summary:
|
|
310
|
+
"Índice navegável com links para os resumos diários e por tópico gerados pelo journal. Gerenciado pelo agente; atualizado a cada execução do journal.",
|
|
311
|
+
},
|
|
312
|
+
rolesJson: {
|
|
313
|
+
title: "Definição da role (JSON)",
|
|
314
|
+
summary: "Configuração da role — escolha de modelo, servidores MCP, plugins permitidos, sugestões de query. Editável, sem reinício.",
|
|
315
|
+
},
|
|
316
|
+
rolesMd: {
|
|
317
|
+
title: "Descrição da role (Markdown)",
|
|
318
|
+
summary: "Persona e system prompt da role, carregada como contexto quando esta role está ativa. Editável; mudanças aplicam na próxima mensagem.",
|
|
319
|
+
},
|
|
320
|
+
sourceFeed: {
|
|
321
|
+
title: "Fonte assinada",
|
|
322
|
+
summary: "Uma fonte assinada (RSS, releases / issues do GitHub, arXiv etc.). Editável; o pipeline de fontes consulta conforme o agendamento.",
|
|
323
|
+
},
|
|
324
|
+
sourceState: {
|
|
325
|
+
title: "Estado da fonte",
|
|
326
|
+
summary: "Estado efêmero do pipeline para uma fonte — últimos ids vistos, ETags, erros de fetch. Pode apagar; será regenerado na próxima execução.",
|
|
327
|
+
},
|
|
328
|
+
journalDaily: {
|
|
329
|
+
title: "Resumo diário do journal",
|
|
330
|
+
summary: "Retrospectiva autogerada da sua atividade em um dia, destilada pelo journal a partir das sessões de chat.",
|
|
331
|
+
},
|
|
332
|
+
journalTopic: {
|
|
333
|
+
title: "Journal por tópico",
|
|
334
|
+
summary: "Notas de longo prazo sobre um tópico específico, acumuladas e revisadas conforme você continua falando dele. Gerenciado pelo agente.",
|
|
335
|
+
},
|
|
336
|
+
},
|
|
204
337
|
settingsMcpTab: {
|
|
205
338
|
explanation:
|
|
206
339
|
"Adicione servidores MCP externos. Servidores HTTP funcionam em todos os modos. Servidores Stdio usam o {npx} / {node} / {tsx} da imagem do sandbox; quando o Docker está habilitado, os caminhos devem ficar dentro do workspace.",
|
|
@@ -286,10 +419,81 @@ const ptBRMessages = {
|
|
|
286
419
|
},
|
|
287
420
|
},
|
|
288
421
|
},
|
|
422
|
+
appleNative: {
|
|
423
|
+
displayName: "Apps nativos da Apple (macOS)",
|
|
424
|
+
description: "Lê e escreve em Lembretes, Calendário, Notas, Mail e Mapas via AppleScript. Apenas macOS — sem credenciais.",
|
|
425
|
+
},
|
|
426
|
+
gmail: {
|
|
427
|
+
displayName: "Gmail",
|
|
428
|
+
description:
|
|
429
|
+
"Lê, envia e etiqueta seu Gmail. Usa um cliente OAuth do Google criado por você no seu próprio projeto do Google Cloud (sem verificação de app).",
|
|
430
|
+
field: {
|
|
431
|
+
credentials: {
|
|
432
|
+
label: "Caminho para credentials.json",
|
|
433
|
+
help: "Google Cloud Console → APIs & Services → Credentials → ID do cliente OAuth (Desktop app). Baixe credentials.json e cole o caminho absoluto.",
|
|
434
|
+
},
|
|
435
|
+
},
|
|
436
|
+
},
|
|
437
|
+
googleCalendar: {
|
|
438
|
+
displayName: "Google Agenda",
|
|
439
|
+
description: "Lê e cria eventos no Google Agenda. Mesmo padrão BYO credentials.json do Gmail.",
|
|
440
|
+
field: {
|
|
441
|
+
credentials: {
|
|
442
|
+
label: "Caminho para credentials.json",
|
|
443
|
+
help: "Reutilize o mesmo cliente OAuth do Google Cloud usado no Gmail, ou crie um separado para o Calendar.",
|
|
444
|
+
},
|
|
445
|
+
},
|
|
446
|
+
},
|
|
447
|
+
googleDrive: {
|
|
448
|
+
displayName: "Google Drive",
|
|
449
|
+
description: "Pesquisa e lê arquivos do Google Drive. BYO credenciais OAuth do Google — o token é armazenado localmente ao lado do arquivo.",
|
|
450
|
+
field: {
|
|
451
|
+
credentials: {
|
|
452
|
+
label: "Caminho para credentials.json",
|
|
453
|
+
help: "Google Cloud Console → APIs & Services → Credentials → ID do cliente OAuth (Desktop app). Habilite a API do Google Drive no mesmo projeto.",
|
|
454
|
+
},
|
|
455
|
+
},
|
|
456
|
+
},
|
|
457
|
+
github: {
|
|
458
|
+
displayName: "GitHub",
|
|
459
|
+
description:
|
|
460
|
+
"Lê repos, issues, PRs e executa buscas com um Personal Access Token. Limite o escopo — permissões de escrita (`repo`) deixam o agente fazer push em qualquer repo acessível.",
|
|
461
|
+
field: {
|
|
462
|
+
token: {
|
|
463
|
+
label: "Personal Access Token",
|
|
464
|
+
help: "GitHub → Settings → Developer settings → Personal access tokens. Prefira fine-grained tokens limitados aos repos onde o agente deve atuar.",
|
|
465
|
+
},
|
|
466
|
+
},
|
|
467
|
+
},
|
|
468
|
+
linear: {
|
|
469
|
+
displayName: "Linear",
|
|
470
|
+
description: "Lê e atualiza issues, projetos e ciclos do Linear com uma chave de API pessoal.",
|
|
471
|
+
field: {
|
|
472
|
+
apiKey: {
|
|
473
|
+
label: "Chave de API do Linear",
|
|
474
|
+
help: "Linear → Settings → API → Personal API keys. Clique em 🔑 para abrir a página e em Create key.",
|
|
475
|
+
},
|
|
476
|
+
},
|
|
477
|
+
},
|
|
289
478
|
weatherOpenMeteo: {
|
|
290
479
|
displayName: "Clima (Open-Meteo)",
|
|
291
480
|
description: "Previsão do tempo gratuita e condições atuais no mundo todo — sem chave de API.",
|
|
292
481
|
},
|
|
482
|
+
spotify: {
|
|
483
|
+
displayName: "Spotify",
|
|
484
|
+
description:
|
|
485
|
+
"Pesquisa faixas, gerencia playlists e controla a reprodução. BYO app de desenvolvedor do Spotify — apenas Client ID (fluxo PKCE, sem client secret).",
|
|
486
|
+
field: {
|
|
487
|
+
clientId: {
|
|
488
|
+
label: "Client ID",
|
|
489
|
+
help: "Spotify Developer Dashboard → Create app, defina a Redirect URI como http://127.0.0.1:8888/callback, copie o Client ID. Depois execute uma vez no terminal `SPOTIFY_CLIENT_ID=<id> npx spotify-mcp@latest auth` para fazer login (refresh token fica em cache em ~/.spotify-mcp/tokens.json).",
|
|
490
|
+
},
|
|
491
|
+
},
|
|
492
|
+
},
|
|
493
|
+
youtubeTranscript: {
|
|
494
|
+
displayName: "Transcrição do YouTube",
|
|
495
|
+
description: "Obtém as legendas de qualquer vídeo público do YouTube pela URL. Sem credenciais.",
|
|
496
|
+
},
|
|
293
497
|
},
|
|
294
498
|
config: {
|
|
295
499
|
howToGet: "Como obter",
|
|
@@ -351,6 +555,8 @@ const ptBRMessages = {
|
|
|
351
555
|
redo: "Refazer",
|
|
352
556
|
clear: "Limpar",
|
|
353
557
|
styleLabel: "Estilo:",
|
|
558
|
+
stylePromptWithPath: "Transforme a imagem em `{path}` em uma imagem no estilo {style}.",
|
|
559
|
+
stylePromptNoPath: "Transforme meu desenho na tela em uma imagem no estilo {style}.",
|
|
354
560
|
},
|
|
355
561
|
pluginChart: {
|
|
356
562
|
untitled: "Gráfico",
|
|
@@ -358,20 +564,222 @@ const ptBRMessages = {
|
|
|
358
564
|
chartTitle: "Gráfico {num}",
|
|
359
565
|
png: "PNG",
|
|
360
566
|
},
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
567
|
+
pluginAccounting: {
|
|
568
|
+
title: "Contabilidade",
|
|
569
|
+
noBook: 'Ainda não há livros — clique em "+ Novo livro" acima para criar o primeiro.',
|
|
570
|
+
common: {
|
|
571
|
+
cancel: "Cancelar",
|
|
572
|
+
loading: "Carregando…",
|
|
573
|
+
error: "Erro: {error}",
|
|
574
|
+
empty: "Ainda não há lançamentos.",
|
|
575
|
+
},
|
|
576
|
+
tabs: {
|
|
577
|
+
journal: "Diário",
|
|
578
|
+
newEntry: "Novo lançamento",
|
|
579
|
+
opening: "Abertura",
|
|
580
|
+
accounts: "Contas",
|
|
581
|
+
ledger: "Razão",
|
|
582
|
+
balanceSheet: "Balanço",
|
|
583
|
+
profitLoss: "DRE",
|
|
584
|
+
settings: "Configurações",
|
|
585
|
+
},
|
|
586
|
+
bookSwitcher: {
|
|
587
|
+
label: "Livro",
|
|
588
|
+
newBook: "Novo livro…",
|
|
589
|
+
create: "Criar",
|
|
590
|
+
nameLabel: "Nome",
|
|
591
|
+
currencyLabel: "Moeda",
|
|
592
|
+
countryLabel: "País",
|
|
593
|
+
countryPlaceholder: "Selecione um país…",
|
|
594
|
+
countryHint: "O país define a jurisdição fiscal para que o assistente possa dar conselhos específicos (T-number no Japão, ID de IVA na UE, etc.).",
|
|
595
|
+
fiscalYearEndLabel: "Encerramento do exercício",
|
|
596
|
+
fiscalYearEndQ1: "31 de março (Q1)",
|
|
597
|
+
fiscalYearEndQ2: "30 de junho (Q2)",
|
|
598
|
+
fiscalYearEndQ3: "30 de setembro (Q3)",
|
|
599
|
+
fiscalYearEndQ4: "31 de dezembro (Q4)",
|
|
600
|
+
fiscalYearEndHint: "Define o limite do exercício social usado pelos atalhos de período deste livro. Padrão: 31 de dezembro (Q4 — ano civil).",
|
|
601
|
+
placeholder: "Selecione um livro…",
|
|
602
|
+
firstRunHint:
|
|
603
|
+
"Escolha o nome, a moeda, o país e o encerramento do exercício do seu primeiro livro. A moeda é definida por livro e fica difícil alterar depois de começar a lançar.",
|
|
604
|
+
},
|
|
605
|
+
deletedNotice: {
|
|
606
|
+
title: "“{bookName}” foi excluído.",
|
|
607
|
+
body: "Selecione outro livro no menu acima ou crie um novo.",
|
|
608
|
+
},
|
|
609
|
+
journalList: {
|
|
610
|
+
fromLabel: "De",
|
|
611
|
+
toLabel: "Até",
|
|
612
|
+
accountLabel: "Conta",
|
|
613
|
+
allAccounts: "Todas as contas",
|
|
614
|
+
void: "Estornar",
|
|
615
|
+
edit: "Editar",
|
|
616
|
+
voidConfirm: "Estornar este lançamento? O original permanece no diário e um par de reversão é anexado.",
|
|
617
|
+
voidReason: "Motivo (opcional):",
|
|
618
|
+
columns: {
|
|
619
|
+
date: "Data",
|
|
620
|
+
kind: "Tipo",
|
|
621
|
+
memo: "Memo",
|
|
622
|
+
lines: "Linhas",
|
|
623
|
+
},
|
|
624
|
+
kind: {
|
|
625
|
+
normal: "—",
|
|
626
|
+
opening: "Abertura",
|
|
627
|
+
void: "Reverso",
|
|
628
|
+
voidMarker: "Marcador de estorno",
|
|
629
|
+
},
|
|
630
|
+
},
|
|
631
|
+
entryForm: {
|
|
632
|
+
title: "Novo lançamento",
|
|
633
|
+
editTitle: "Editar lançamento",
|
|
634
|
+
editBanner: "Ao enviar, o lançamento original será estornado e substituído por este.",
|
|
635
|
+
dateLabel: "Data",
|
|
636
|
+
memoLabel: "Memo",
|
|
637
|
+
accountLabel: "Conta",
|
|
638
|
+
debitLabel: "Débito",
|
|
639
|
+
creditLabel: "Crédito",
|
|
640
|
+
taxRegistrationIdLabel: "Inscrição fiscal",
|
|
641
|
+
taxRegistrationIdPlaceholder: "CNPJ / VAT ID / GSTIN…",
|
|
642
|
+
taxRegistrationIdMissingWarning: "Obrigatório",
|
|
643
|
+
addLine: "Adicionar linha",
|
|
644
|
+
removeLine: "Remover",
|
|
645
|
+
submit: "Lançar",
|
|
646
|
+
submitting: "Lançando…",
|
|
647
|
+
update: "Atualizar",
|
|
648
|
+
updating: "Atualizando…",
|
|
649
|
+
cancelEdit: "Cancelar",
|
|
650
|
+
success: "Lançamento registrado.",
|
|
651
|
+
editSuccess: "Lançamento atualizado.",
|
|
652
|
+
editVoidReason: "editado",
|
|
653
|
+
imbalance: "Diferença: {amount}",
|
|
654
|
+
balanced: "Equilibrado ✓",
|
|
655
|
+
},
|
|
656
|
+
openingForm: {
|
|
657
|
+
title: "Saldos iniciais",
|
|
658
|
+
asOfLabel: "Em",
|
|
659
|
+
explainer: "Apenas contas de balanço (ativo/passivo/patrimônio). Σ débito = Σ crédito; a diferença entra em Retained Earnings.",
|
|
660
|
+
emptyHint:
|
|
661
|
+
"Você pode salvar tudo em branco — os saldos iniciais podem ser atualizados depois. Basta ter uma abertura registrada para que as outras abas sejam liberadas.",
|
|
662
|
+
explainer2: "Apenas contas de balanço.",
|
|
663
|
+
submit: "Salvar saldos iniciais",
|
|
664
|
+
replaceWarning: "Salvar substitui a abertura existente (a anterior é estornada no diário).",
|
|
665
|
+
none: "Ainda não há saldo inicial.",
|
|
666
|
+
setBy: "Definido em {date}",
|
|
667
|
+
success: "Saldos iniciais salvos.",
|
|
668
|
+
},
|
|
669
|
+
ledger: {
|
|
670
|
+
selectAccount: "Selecionar conta",
|
|
671
|
+
closingBalance: "Saldo final",
|
|
672
|
+
columns: {
|
|
673
|
+
date: "Data",
|
|
674
|
+
memo: "Memo",
|
|
675
|
+
debit: "Débito",
|
|
676
|
+
credit: "Crédito",
|
|
677
|
+
balance: "Saldo",
|
|
678
|
+
taxRegistrationId: "Inscrição fiscal",
|
|
679
|
+
},
|
|
680
|
+
},
|
|
681
|
+
dateRange: {
|
|
682
|
+
shortcutLabel: "Período",
|
|
683
|
+
currentQuarter: "Trimestre atual",
|
|
684
|
+
previousQuarter: "Último trimestre",
|
|
685
|
+
currentYear: "Ano atual",
|
|
686
|
+
previousYear: "Ano anterior",
|
|
687
|
+
lifetime: "Desde a abertura",
|
|
688
|
+
all: "Tudo",
|
|
689
|
+
fromLabel: "De",
|
|
690
|
+
toLabel: "Até",
|
|
691
|
+
},
|
|
692
|
+
balanceSheet: {
|
|
693
|
+
asOfLabel: "Período",
|
|
694
|
+
sections: {
|
|
695
|
+
asset: "Ativo",
|
|
696
|
+
liability: "Passivo",
|
|
697
|
+
equity: "Patrimônio",
|
|
698
|
+
},
|
|
699
|
+
total: "Total",
|
|
700
|
+
imbalance: "Diferença: {amount}",
|
|
701
|
+
currentEarnings: "Resultado do período",
|
|
702
|
+
shortcutLabel: "Atalho",
|
|
703
|
+
thisMonth: "Este mês",
|
|
704
|
+
lastMonth: "Mês anterior",
|
|
705
|
+
lastQuarter: "Último trimestre",
|
|
706
|
+
lastYear: "Ano anterior",
|
|
707
|
+
},
|
|
708
|
+
profitLoss: {
|
|
709
|
+
fromLabel: "De",
|
|
710
|
+
toLabel: "Até",
|
|
711
|
+
income: "Receita",
|
|
712
|
+
expense: "Despesa",
|
|
713
|
+
netIncome: "Resultado líquido:",
|
|
714
|
+
},
|
|
715
|
+
accounts: {
|
|
716
|
+
listEmpty: "Ainda não há contas nesta categoria.",
|
|
717
|
+
openLedgerAria: "Abrir razão de {code} {name}",
|
|
718
|
+
manageButton: "Gerenciar contas",
|
|
719
|
+
modalTitle: "Gerenciar contas",
|
|
720
|
+
addAccount: "Adicionar conta",
|
|
721
|
+
sectionTitle: {
|
|
722
|
+
asset: "Ativos",
|
|
723
|
+
liability: "Passivos",
|
|
724
|
+
equity: "Patrimônio",
|
|
725
|
+
income: "Receitas",
|
|
726
|
+
expense: "Despesas",
|
|
727
|
+
},
|
|
728
|
+
columnCode: "Código",
|
|
729
|
+
columnName: "Nome",
|
|
730
|
+
columnType: "Tipo",
|
|
731
|
+
columnNote: "Observação",
|
|
732
|
+
typeOption: {
|
|
733
|
+
asset: "Ativo",
|
|
734
|
+
liability: "Passivo",
|
|
735
|
+
equity: "Patrimônio",
|
|
736
|
+
income: "Receita",
|
|
737
|
+
expense: "Despesa",
|
|
738
|
+
},
|
|
739
|
+
edit: "Editar",
|
|
740
|
+
save: "Salvar",
|
|
741
|
+
cancel: "Cancelar",
|
|
742
|
+
saving: "Salvando…",
|
|
743
|
+
addToCategory: "Adicionar conta de {type}",
|
|
744
|
+
deactivate: "Desativar",
|
|
745
|
+
reactivate: "Ativar",
|
|
746
|
+
deactivateConfirm: "Ocultar “{name}” dos menus de lançamentos / razão? Os lançamentos existentes não são afetados.",
|
|
747
|
+
errorEmptyCode: "O código é obrigatório.",
|
|
748
|
+
errorReservedCode: "Códigos iniciados por “_” são reservados para linhas do sistema.",
|
|
749
|
+
errorInvalidCodeFormat: "O código da conta deve ter exatamente 4 dígitos.",
|
|
750
|
+
errorCodeTypeMismatch: "O código deve corresponder ao tipo de conta: 1xxx ativo, 2xxx passivo, 3xxx patrimônio, 4xxx receita, 5xxx despesa.",
|
|
751
|
+
errorEmptyName: "O nome é obrigatório.",
|
|
752
|
+
errorDuplicateCode: "Já existe uma conta com este código.",
|
|
753
|
+
errorDuplicateName: "Já existe uma conta com este nome.",
|
|
754
|
+
success: "Conta salva.",
|
|
755
|
+
codeReadOnlyHint: "O código não pode ser alterado depois que a conta é criada.",
|
|
756
|
+
noteOptional: "(opcional)",
|
|
757
|
+
},
|
|
758
|
+
settings: {
|
|
759
|
+
bookInfo: "Informações do livro",
|
|
760
|
+
bookInfoExplain: "Edite o país para atualizar as recomendações conforme a jurisdição fiscal. A moeda não pode ser alterada após registrar lançamentos.",
|
|
761
|
+
countryUnset: "(não definido)",
|
|
762
|
+
fiscalYearEndExplain: "Apenas altera como os atalhos de período são resolvidos a partir de agora; lançamentos existentes não são movidos.",
|
|
763
|
+
saveChanges: "Salvar alterações",
|
|
764
|
+
updateOk: "Livro atualizado.",
|
|
765
|
+
rebuild: "Reconstruir snapshots",
|
|
766
|
+
rebuildExplain: "Apaga todos os snapshots mensais e recalcula a partir do diário. Útil após editar o diário manualmente.",
|
|
767
|
+
rebuildOk: "Reconstruído(s) {count} período(s).",
|
|
768
|
+
advanced: "Avançado…",
|
|
769
|
+
deleteBook: "Excluir livro",
|
|
770
|
+
deleteBookExplain: "Exclui permanentemente o diretório do livro. Não pode ser desfeito.",
|
|
771
|
+
deleteBookConfirm: 'Digite "{bookName}" para confirmar:',
|
|
772
|
+
deleteBookButton: "Excluir para sempre",
|
|
773
|
+
},
|
|
774
|
+
preview: {
|
|
775
|
+
entry: "Lançamento em {date}",
|
|
776
|
+
pl: "P&L {from} → {to}: líquido {net}",
|
|
777
|
+
bs: "Balanço em {date} · ativos {assets}",
|
|
778
|
+
bookCreated: 'Livro "{name}" ({id}) criado',
|
|
779
|
+
},
|
|
780
|
+
previewSummary: "Contabilidade · {bookId}",
|
|
781
|
+
previewError: "Contabilidade: {error}",
|
|
782
|
+
previewGeneric: "Resultado da contabilidade",
|
|
375
783
|
},
|
|
376
784
|
todoExplorer: {
|
|
377
785
|
heading: "Tarefas",
|
|
@@ -388,14 +796,6 @@ const ptBRMessages = {
|
|
|
388
796
|
newColumnPlaceholder: "Revisar",
|
|
389
797
|
noMatchingFilter: "Nenhum item corresponde ao filtro atual",
|
|
390
798
|
},
|
|
391
|
-
todoPreview: {
|
|
392
|
-
completedRatio: "{done}/{total} concluídas",
|
|
393
|
-
moreItems: "+ {count} mais…",
|
|
394
|
-
headerIcon: "☑",
|
|
395
|
-
doneIcon: "✓",
|
|
396
|
-
pendingIcon: "○",
|
|
397
|
-
moreLabels: "+{count}",
|
|
398
|
-
},
|
|
399
799
|
todoDialogs: {
|
|
400
800
|
addTitle: "Adicionar tarefa",
|
|
401
801
|
editTitle: "Editar tarefa",
|
|
@@ -425,6 +825,7 @@ const ptBRMessages = {
|
|
|
425
825
|
noMatchingFilter: "Nenhum item corresponde ao filtro atual",
|
|
426
826
|
sortColumnAria: "Ordenar por {column}",
|
|
427
827
|
expandRowAria: "Expandir tarefa: {task}",
|
|
828
|
+
deleteItem: "Excluir item",
|
|
428
829
|
},
|
|
429
830
|
pluginWiki: {
|
|
430
831
|
backToIndex: "Voltar ao índice",
|
|
@@ -444,6 +845,35 @@ const ptBRMessages = {
|
|
|
444
845
|
noMatches: "Nenhuma página com a tag #{tag}",
|
|
445
846
|
lintChat: "Revisar meu wiki",
|
|
446
847
|
taskCountMismatch: "A fonte do wiki e a saída renderizada divergem no número de tarefas. A alternância foi recusada para evitar corromper o arquivo.",
|
|
848
|
+
metadataCreated: "Criado",
|
|
849
|
+
metadataUpdated: "Atualizado",
|
|
850
|
+
metadataEditor: "Editor",
|
|
851
|
+
pageEditHeader: "Edição do wiki",
|
|
852
|
+
snapshotExpired: "Snapshot expirado — exibindo a página atual",
|
|
853
|
+
pageDeleted: "Página excluída",
|
|
854
|
+
history: {
|
|
855
|
+
tabContent: "Conteúdo",
|
|
856
|
+
tabHistory: "Histórico",
|
|
857
|
+
empty: "Ainda sem histórico — edite esta página e a primeira versão aparecerá aqui.",
|
|
858
|
+
loading: "Carregando histórico…",
|
|
859
|
+
backToList: "Voltar ao histórico",
|
|
860
|
+
restoreButton: "Restaurar esta versão",
|
|
861
|
+
restoreConfirmTitle: "Restaurar esta versão?",
|
|
862
|
+
restoreConfirmBody: "Restaurar a página para a versão de {ts} por {editor}. A página atual será substituída. O histórico existente é preservado.",
|
|
863
|
+
restoreConfirmAction: "Restaurar",
|
|
864
|
+
restoreConfirmCancel: "Cancelar",
|
|
865
|
+
restoreSuccessToast: "Página restaurada.",
|
|
866
|
+
restoreFailureBanner: "Falha ao restaurar: {error}",
|
|
867
|
+
compareCurrent: "Comparar com a página atual",
|
|
868
|
+
comparePrevious: "Comparar com a versão anterior",
|
|
869
|
+
diffNoPrevious: "Não há versão anterior para comparar.",
|
|
870
|
+
diffNoChanges: "Sem diferenças de conteúdo entre esta versão e o objeto de comparação.",
|
|
871
|
+
editorBadgeUser: "Usuário",
|
|
872
|
+
editorBadgeLLM: "LLM",
|
|
873
|
+
editorBadgeSystem: "Sistema",
|
|
874
|
+
hiddenLines: "{count} linhas inalteradas ocultas",
|
|
875
|
+
expandHidden: "Mostrar",
|
|
876
|
+
},
|
|
447
877
|
},
|
|
448
878
|
pluginPresentForm: {
|
|
449
879
|
fallbackTitle: "Formulário",
|
|
@@ -461,8 +891,13 @@ const ptBRMessages = {
|
|
|
461
891
|
saveAsPdf: "Salvar como PDF (abre o diálogo de impressão)",
|
|
462
892
|
pdf: "PDF",
|
|
463
893
|
untitled: "Página HTML",
|
|
464
|
-
|
|
465
|
-
|
|
894
|
+
editSource: "Editar fonte HTML",
|
|
895
|
+
cancel: "Cancelar",
|
|
896
|
+
applyChanges: "Aplicar alterações",
|
|
897
|
+
saving: "Salvando...",
|
|
898
|
+
saveError: "⚠ Falha ao salvar: {error}",
|
|
899
|
+
loadingSource: "Carregando fonte…",
|
|
900
|
+
sourceError: "Falha ao carregar a fonte: {error}",
|
|
466
901
|
},
|
|
467
902
|
pluginNews: {
|
|
468
903
|
title: "Notícias",
|
|
@@ -576,7 +1011,6 @@ const ptBRMessages = {
|
|
|
576
1011
|
pluginManageRoles: {
|
|
577
1012
|
heading: "Papéis personalizados",
|
|
578
1013
|
roleCount: "{count} papel | {count} papéis",
|
|
579
|
-
previewCount: "{count} papel personalizado | {count} papéis personalizados",
|
|
580
1014
|
addButton: "+ Adicionar",
|
|
581
1015
|
createPanel: "Criar novo papel",
|
|
582
1016
|
fieldId: "ID",
|
|
@@ -625,6 +1059,8 @@ const ptBRMessages = {
|
|
|
625
1059
|
gen: "Gerar",
|
|
626
1060
|
play: "▶ Reproduzir",
|
|
627
1061
|
stop: "■ Parar",
|
|
1062
|
+
playPresentation: "Reproduzir apresentação",
|
|
1063
|
+
regenerateMovie: "Regenerar vídeo",
|
|
628
1064
|
errPrefix: "⚠ Erro",
|
|
629
1065
|
noBeats: "Nenhum beat encontrado no script",
|
|
630
1066
|
editSource: "Editar fonte do script",
|
|
@@ -661,6 +1097,11 @@ const ptBRMessages = {
|
|
|
661
1097
|
copyLabel: "Copiar",
|
|
662
1098
|
copiedLabel: "Copiado!",
|
|
663
1099
|
cancel: "Cancelar",
|
|
1100
|
+
seededByPlugin: "de {pkg}",
|
|
1101
|
+
seededByPluginTooltip: "Esta mensagem foi gerada pelo plugin {pkg}, não foi enviada por você.",
|
|
1102
|
+
},
|
|
1103
|
+
pluginSkill: {
|
|
1104
|
+
noDescription: "(sem descrição)",
|
|
664
1105
|
},
|
|
665
1106
|
pluginSpreadsheet: {
|
|
666
1107
|
previewUntitled: "Planilha",
|
|
@@ -688,6 +1129,11 @@ const ptBRMessages = {
|
|
|
688
1129
|
},
|
|
689
1130
|
suggestionsPanel: {
|
|
690
1131
|
suggestions: "Sugestões",
|
|
1132
|
+
skills: "Habilidades",
|
|
1133
|
+
tooltip: "Sugestões e habilidades",
|
|
1134
|
+
emptySuggestions: "Sem sugestões.",
|
|
1135
|
+
emptySkills: "Nenhuma habilidade instalada.",
|
|
1136
|
+
skillsError: "Falha ao carregar habilidades: {error}",
|
|
691
1137
|
sendEditHint: "clique para enviar · shift+clique para editar",
|
|
692
1138
|
},
|
|
693
1139
|
settingsToolsTab: {
|