mulmoclaude 0.1.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/README.md +44 -0
- package/bin/mulmoclaude.js +202 -0
- package/bin/prepare-dist.js +93 -0
- package/client/assets/chunk-vKJrgz-R-C_I3GbVV.js +1 -0
- package/client/assets/html2canvas-Cx501zZr-BF5dYYkY.js +5 -0
- package/client/assets/index-D8rhwXLq.js +4906 -0
- package/client/assets/index-KNLBjwuh.css +1 -0
- package/client/assets/index.es-D4YyL_Dg-BfRHLTZV.js +5 -0
- package/client/assets/material-icons-Dr0goTwe.woff +0 -0
- package/client/assets/material-icons-kAwBdRge.woff2 +0 -0
- package/client/assets/material-icons-outlined-BpWbwl2n.woff +0 -0
- package/client/assets/material-icons-outlined-DZhiGvEA.woff2 +0 -0
- package/client/assets/material-icons-round-BDlwx-sv.woff +0 -0
- package/client/assets/material-icons-round-DrirKXBx.woff2 +0 -0
- package/client/assets/material-icons-sharp-CH1KkVu7.woff +0 -0
- package/client/assets/material-icons-sharp-gidztirS.woff2 +0 -0
- package/client/assets/material-icons-two-tone-B7wz7mED.woff +0 -0
- package/client/assets/material-icons-two-tone-DuNIpaEj.woff2 +0 -0
- package/client/assets/mulmo_bw-ERmkSv0a.png +0 -0
- package/client/assets/purify.es-Fx1Nqyry-PeS5RUhs.js +2 -0
- package/client/assets/typeof-DBp4T-Ny-BC0P-2DM.js +1 -0
- package/client/index.html +28 -0
- package/package.json +66 -0
- package/server/agent/attachmentConverter.ts +270 -0
- package/server/agent/config.ts +414 -0
- package/server/agent/index.ts +260 -0
- package/server/agent/mcp-server.ts +412 -0
- package/server/agent/mcp-tools/index.ts +63 -0
- package/server/agent/mcp-tools/x.ts +188 -0
- package/server/agent/plugin-names.ts +75 -0
- package/server/agent/prompt.ts +349 -0
- package/server/agent/resumeFailover.ts +129 -0
- package/server/agent/sandboxMounts.ts +329 -0
- package/server/agent/stream.ts +194 -0
- package/server/api/auth/bearerAuth.ts +61 -0
- package/server/api/auth/token.ts +98 -0
- package/server/api/csrfGuard.ts +85 -0
- package/server/api/routes/agent.ts +478 -0
- package/server/api/routes/chart.ts +98 -0
- package/server/api/routes/chat-index.ts +46 -0
- package/server/api/routes/config.ts +258 -0
- package/server/api/routes/dispatchResponse.ts +79 -0
- package/server/api/routes/files.ts +812 -0
- package/server/api/routes/html.ts +101 -0
- package/server/api/routes/image.ts +169 -0
- package/server/api/routes/mulmo-script.ts +712 -0
- package/server/api/routes/mulmoScriptValidate.ts +101 -0
- package/server/api/routes/notifications.ts +69 -0
- package/server/api/routes/pdf.ts +163 -0
- package/server/api/routes/plugins.ts +276 -0
- package/server/api/routes/presentHtml.ts +48 -0
- package/server/api/routes/roles.ts +125 -0
- package/server/api/routes/scheduler.ts +153 -0
- package/server/api/routes/schedulerHandlers.ts +151 -0
- package/server/api/routes/schedulerTasks.ts +163 -0
- package/server/api/routes/sessions.ts +294 -0
- package/server/api/routes/sessionsCursor.ts +59 -0
- package/server/api/routes/skills.ts +195 -0
- package/server/api/routes/sources.ts +540 -0
- package/server/api/routes/todos.ts +263 -0
- package/server/api/routes/todosColumnsHandlers.ts +347 -0
- package/server/api/routes/todosHandlers.ts +274 -0
- package/server/api/routes/todosItemsHandlers.ts +386 -0
- package/server/api/routes/wiki/pageIndex.ts +53 -0
- package/server/api/routes/wiki.ts +363 -0
- package/server/api/sandboxStatus.ts +64 -0
- package/server/events/notifications.ts +160 -0
- package/server/events/pub-sub/index.ts +45 -0
- package/server/events/relay-client.ts +288 -0
- package/server/events/scheduler-adapter.ts +302 -0
- package/server/events/session-store/index.ts +492 -0
- package/server/events/task-manager/index.ts +181 -0
- package/server/index.ts +572 -0
- package/server/system/config.ts +243 -0
- package/server/system/credentials.ts +220 -0
- package/server/system/docker.ts +97 -0
- package/server/system/env.ts +109 -0
- package/server/system/logger/config.ts +112 -0
- package/server/system/logger/formatters.ts +40 -0
- package/server/system/logger/index.ts +53 -0
- package/server/system/logger/rotation.ts +37 -0
- package/server/system/logger/sinks.ts +101 -0
- package/server/system/logger/types.ts +29 -0
- package/server/utils/date.ts +57 -0
- package/server/utils/errors.ts +7 -0
- package/server/utils/fetch.ts +27 -0
- package/server/utils/files/atomic.ts +125 -0
- package/server/utils/files/html-io.ts +20 -0
- package/server/utils/files/image-store.ts +66 -0
- package/server/utils/files/index.ts +45 -0
- package/server/utils/files/journal-io.ts +213 -0
- package/server/utils/files/json.ts +69 -0
- package/server/utils/files/markdown-store.ts +33 -0
- package/server/utils/files/naming.ts +50 -0
- package/server/utils/files/reference-dirs-io.ts +45 -0
- package/server/utils/files/roles-io.ts +45 -0
- package/server/utils/files/safe.ts +106 -0
- package/server/utils/files/scheduler-io.ts +20 -0
- package/server/utils/files/scheduler-overrides-io.ts +64 -0
- package/server/utils/files/session-io.ts +136 -0
- package/server/utils/files/spreadsheet-store.ts +63 -0
- package/server/utils/files/todos-io.ts +29 -0
- package/server/utils/files/user-tasks-io.ts +25 -0
- package/server/utils/files/workspace-io.ts +221 -0
- package/server/utils/gemini.ts +59 -0
- package/server/utils/gitignore.ts +69 -0
- package/server/utils/http.ts +15 -0
- package/server/utils/httpError.ts +61 -0
- package/server/utils/id.ts +16 -0
- package/server/utils/json.ts +83 -0
- package/server/utils/logBackgroundError.ts +22 -0
- package/server/utils/markdown.ts +82 -0
- package/server/utils/request.ts +29 -0
- package/server/utils/slug.ts +50 -0
- package/server/utils/spawn.ts +62 -0
- package/server/utils/time.ts +34 -0
- package/server/utils/types.ts +47 -0
- package/server/workspace/chat-index/index.ts +153 -0
- package/server/workspace/chat-index/indexer.ts +209 -0
- package/server/workspace/chat-index/paths.ts +34 -0
- package/server/workspace/chat-index/summarizer.ts +247 -0
- package/server/workspace/chat-index/types.ts +38 -0
- package/server/workspace/custom-dirs.ts +220 -0
- package/server/workspace/helps/business.md +104 -0
- package/server/workspace/helps/github.md +23 -0
- package/server/workspace/helps/index.md +60 -0
- package/server/workspace/helps/mulmoscript.md +249 -0
- package/server/workspace/helps/sandbox.md +90 -0
- package/server/workspace/helps/spreadsheet.md +43 -0
- package/server/workspace/helps/telegram.md +135 -0
- package/server/workspace/helps/wiki.md +131 -0
- package/server/workspace/journal/archivist.ts +386 -0
- package/server/workspace/journal/dailyPass.ts +743 -0
- package/server/workspace/journal/diff.ts +71 -0
- package/server/workspace/journal/index.ts +185 -0
- package/server/workspace/journal/indexFile.ts +136 -0
- package/server/workspace/journal/linkRewrite.ts +4 -0
- package/server/workspace/journal/memoryExtractor.ts +130 -0
- package/server/workspace/journal/optimizationPass.ts +160 -0
- package/server/workspace/journal/paths.ts +76 -0
- package/server/workspace/journal/state.ts +125 -0
- package/server/workspace/paths.ts +158 -0
- package/server/workspace/reference-dirs.ts +252 -0
- package/server/workspace/roles.ts +37 -0
- package/server/workspace/skills/discovery.ts +125 -0
- package/server/workspace/skills/index.ts +10 -0
- package/server/workspace/skills/parser.ts +144 -0
- package/server/workspace/skills/paths.ts +41 -0
- package/server/workspace/skills/scheduler.ts +149 -0
- package/server/workspace/skills/types.ts +30 -0
- package/server/workspace/skills/user-tasks.ts +257 -0
- package/server/workspace/skills/writer.ts +189 -0
- package/server/workspace/sources/arxivDiscovery.ts +182 -0
- package/server/workspace/sources/classifier.ts +268 -0
- package/server/workspace/sources/fetchers/arxiv.ts +170 -0
- package/server/workspace/sources/fetchers/github.ts +106 -0
- package/server/workspace/sources/fetchers/githubIssues.ts +208 -0
- package/server/workspace/sources/fetchers/githubReleases.ts +186 -0
- package/server/workspace/sources/fetchers/index.ts +71 -0
- package/server/workspace/sources/fetchers/registerAll.ts +15 -0
- package/server/workspace/sources/fetchers/rss.ts +141 -0
- package/server/workspace/sources/fetchers/rssParser.ts +295 -0
- package/server/workspace/sources/httpFetcher.ts +230 -0
- package/server/workspace/sources/interests.ts +120 -0
- package/server/workspace/sources/paths.ts +110 -0
- package/server/workspace/sources/pipeline/dedup.ts +60 -0
- package/server/workspace/sources/pipeline/fetch.ts +136 -0
- package/server/workspace/sources/pipeline/index.ts +249 -0
- package/server/workspace/sources/pipeline/notify.ts +72 -0
- package/server/workspace/sources/pipeline/plan.ts +66 -0
- package/server/workspace/sources/pipeline/summarize.ts +189 -0
- package/server/workspace/sources/pipeline/write.ts +185 -0
- package/server/workspace/sources/rateLimiter.ts +148 -0
- package/server/workspace/sources/registry.ts +326 -0
- package/server/workspace/sources/robots.ts +271 -0
- package/server/workspace/sources/sourceState.ts +135 -0
- package/server/workspace/sources/taxonomy.ts +74 -0
- package/server/workspace/sources/types.ts +144 -0
- package/server/workspace/sources/urls.ts +112 -0
- package/server/workspace/tool-trace/classify.ts +114 -0
- package/server/workspace/tool-trace/index.ts +250 -0
- package/server/workspace/tool-trace/writeSearch.ts +98 -0
- package/server/workspace/wiki-backlinks/index.ts +107 -0
- package/server/workspace/wiki-backlinks/sessionBacklinks.ts +144 -0
- package/server/workspace/workspace.ts +66 -0
- package/src/App.vue +720 -0
- package/src/assets/mulmo_bw.png +0 -0
- package/src/components/CanvasViewToggle.vue +27 -0
- package/src/components/ChatAttachmentPreview.vue +45 -0
- package/src/components/ChatImagePreview.vue +17 -0
- package/src/components/ChatInput.vue +208 -0
- package/src/components/FileContentHeader.vue +49 -0
- package/src/components/FileContentRenderer.vue +162 -0
- package/src/components/FileTree.vue +115 -0
- package/src/components/FileTreePane.vue +85 -0
- package/src/components/FilesView.vue +206 -0
- package/src/components/LockStatusPopup.vue +111 -0
- package/src/components/NotificationBell.vue +131 -0
- package/src/components/NotificationToast.vue +72 -0
- package/src/components/PluginLauncher.vue +138 -0
- package/src/components/RightSidebar.vue +113 -0
- package/src/components/RoleSelector.vue +64 -0
- package/src/components/SessionHistoryPanel.vue +176 -0
- package/src/components/SessionTabBar.vue +81 -0
- package/src/components/SettingsMcpTab.vue +350 -0
- package/src/components/SettingsModal.vue +275 -0
- package/src/components/SettingsReferenceDirsTab.vue +173 -0
- package/src/components/SettingsWorkspaceDirsTab.vue +174 -0
- package/src/components/SidebarHeader.vue +69 -0
- package/src/components/StackView.vue +360 -0
- package/src/components/SuggestionsPanel.vue +65 -0
- package/src/components/TodoExplorer.vue +358 -0
- package/src/components/ToolResultsPanel.vue +77 -0
- package/src/components/todo/TodoAddDialog.vue +131 -0
- package/src/components/todo/TodoEditDialog.vue +47 -0
- package/src/components/todo/TodoEditPanel.vue +113 -0
- package/src/components/todo/TodoKanbanView.vue +249 -0
- package/src/components/todo/TodoListView.vue +79 -0
- package/src/components/todo/TodoTableView.vue +177 -0
- package/src/composables/useActiveSession.ts +40 -0
- package/src/composables/useAppApi.ts +45 -0
- package/src/composables/useCanvasViewMode.ts +121 -0
- package/src/composables/useChatScroll.ts +47 -0
- package/src/composables/useClickOutside.ts +26 -0
- package/src/composables/useClipboardCopy.ts +44 -0
- package/src/composables/useContentDisplay.ts +52 -0
- package/src/composables/useDebugBeat.ts +23 -0
- package/src/composables/useDynamicFavicon.ts +115 -0
- package/src/composables/useEventListeners.ts +42 -0
- package/src/composables/useExpandedDirs.ts +64 -0
- package/src/composables/useFaviconState.ts +30 -0
- package/src/composables/useFileSelection.ts +115 -0
- package/src/composables/useFileSortMode.ts +24 -0
- package/src/composables/useFileTree.ts +85 -0
- package/src/composables/useFreshPluginData.ts +89 -0
- package/src/composables/useHealth.ts +38 -0
- package/src/composables/useImeAwareEnter.ts +57 -0
- package/src/composables/useKeyNavigation.ts +60 -0
- package/src/composables/useMarkdownLinkHandler.ts +46 -0
- package/src/composables/useMarkdownMode.ts +17 -0
- package/src/composables/useMcpTools.ts +71 -0
- package/src/composables/useMergedSessions.ts +27 -0
- package/src/composables/useNotifications.ts +90 -0
- package/src/composables/usePdfDownload.ts +60 -0
- package/src/composables/usePendingCalls.ts +77 -0
- package/src/composables/usePubSub.ts +85 -0
- package/src/composables/useRightSidebar.ts +23 -0
- package/src/composables/useRoles.ts +34 -0
- package/src/composables/useSandboxStatus.ts +67 -0
- package/src/composables/useSelectedResult.ts +49 -0
- package/src/composables/useSessionDerived.ts +51 -0
- package/src/composables/useSessionHistory.ts +81 -0
- package/src/composables/useSessionSync.ts +57 -0
- package/src/composables/useViewLayout.ts +55 -0
- package/src/config/apiRoutes.ts +173 -0
- package/src/config/pubsubChannels.ts +45 -0
- package/src/config/roles.ts +335 -0
- package/src/config/schedulerActions.ts +25 -0
- package/src/config/toolNames.ts +71 -0
- package/src/config/workspacePaths.ts +24 -0
- package/src/index.css +107 -0
- package/src/main.ts +25 -0
- package/src/plugins/canvas/Preview.vue +13 -0
- package/src/plugins/canvas/View.vue +333 -0
- package/src/plugins/canvas/definition.ts +38 -0
- package/src/plugins/canvas/index.ts +36 -0
- package/src/plugins/chart/Preview.vue +49 -0
- package/src/plugins/chart/View.vue +143 -0
- package/src/plugins/chart/definition.ts +58 -0
- package/src/plugins/chart/index.ts +52 -0
- package/src/plugins/editImage/Preview.vue +13 -0
- package/src/plugins/editImage/View.vue +13 -0
- package/src/plugins/editImage/definition.ts +27 -0
- package/src/plugins/editImage/index.ts +36 -0
- package/src/plugins/generateImage/Preview.vue +13 -0
- package/src/plugins/generateImage/View.vue +33 -0
- package/src/plugins/generateImage/definition.ts +32 -0
- package/src/plugins/generateImage/index.ts +56 -0
- package/src/plugins/manageRoles/Preview.vue +49 -0
- package/src/plugins/manageRoles/View.vue +525 -0
- package/src/plugins/manageRoles/definition.ts +43 -0
- package/src/plugins/manageRoles/index.ts +47 -0
- package/src/plugins/manageSkills/Preview.vue +21 -0
- package/src/plugins/manageSkills/View.vue +321 -0
- package/src/plugins/manageSkills/definition.ts +49 -0
- package/src/plugins/manageSkills/index.ts +49 -0
- package/src/plugins/manageSource/Preview.vue +33 -0
- package/src/plugins/manageSource/View.vue +697 -0
- package/src/plugins/manageSource/definition.ts +63 -0
- package/src/plugins/manageSource/index.ts +66 -0
- package/src/plugins/markdown/Preview.vue +77 -0
- package/src/plugins/markdown/View.vue +476 -0
- package/src/plugins/markdown/definition.ts +50 -0
- package/src/plugins/markdown/index.ts +36 -0
- package/src/plugins/presentHtml/Preview.vue +25 -0
- package/src/plugins/presentHtml/View.vue +52 -0
- package/src/plugins/presentHtml/definition.ts +27 -0
- package/src/plugins/presentHtml/helpers.ts +72 -0
- package/src/plugins/presentHtml/index.ts +41 -0
- package/src/plugins/presentMulmoScript/Preview.vue +23 -0
- package/src/plugins/presentMulmoScript/View.vue +1166 -0
- package/src/plugins/presentMulmoScript/definition.ts +95 -0
- package/src/plugins/presentMulmoScript/helpers.ts +162 -0
- package/src/plugins/presentMulmoScript/index.ts +40 -0
- package/src/plugins/scheduler/Preview.vue +67 -0
- package/src/plugins/scheduler/TasksTab.vue +205 -0
- package/src/plugins/scheduler/View.vue +565 -0
- package/src/plugins/scheduler/definition.ts +57 -0
- package/src/plugins/scheduler/index.ts +45 -0
- package/src/plugins/scheduler/viewModes.ts +26 -0
- package/src/plugins/spreadsheet/Preview.vue +29 -0
- package/src/plugins/spreadsheet/View.vue +997 -0
- package/src/plugins/spreadsheet/cellHighlights.ts +79 -0
- package/src/plugins/spreadsheet/definition.ts +121 -0
- package/src/plugins/spreadsheet/engine/calculator.ts +459 -0
- package/src/plugins/spreadsheet/engine/cellBuilder.ts +81 -0
- package/src/plugins/spreadsheet/engine/date-parser.ts +220 -0
- package/src/plugins/spreadsheet/engine/date-utils.ts +56 -0
- package/src/plugins/spreadsheet/engine/engine.ts +176 -0
- package/src/plugins/spreadsheet/engine/evaluator.ts +390 -0
- package/src/plugins/spreadsheet/engine/formatter.ts +172 -0
- package/src/plugins/spreadsheet/engine/formulaRefs.ts +101 -0
- package/src/plugins/spreadsheet/engine/functions/date.ts +299 -0
- package/src/plugins/spreadsheet/engine/functions/financial.ts +387 -0
- package/src/plugins/spreadsheet/engine/functions/index.ts +16 -0
- package/src/plugins/spreadsheet/engine/functions/logical.ts +262 -0
- package/src/plugins/spreadsheet/engine/functions/lookup.ts +400 -0
- package/src/plugins/spreadsheet/engine/functions/mathematical.ts +297 -0
- package/src/plugins/spreadsheet/engine/functions/statistical.ts +338 -0
- package/src/plugins/spreadsheet/engine/functions/text.ts +389 -0
- package/src/plugins/spreadsheet/engine/index.ts +27 -0
- package/src/plugins/spreadsheet/engine/jsonCellLocator.ts +111 -0
- package/src/plugins/spreadsheet/engine/parser.ts +143 -0
- package/src/plugins/spreadsheet/engine/registry.ts +150 -0
- package/src/plugins/spreadsheet/engine/responseDecoder.ts +67 -0
- package/src/plugins/spreadsheet/engine/types.ts +64 -0
- package/src/plugins/spreadsheet/index.ts +36 -0
- package/src/plugins/textResponse/Preview.vue +94 -0
- package/src/plugins/textResponse/View.vue +503 -0
- package/src/plugins/textResponse/definition.ts +34 -0
- package/src/plugins/textResponse/index.ts +27 -0
- package/src/plugins/textResponse/plugin.ts +29 -0
- package/src/plugins/textResponse/samples.ts +97 -0
- package/src/plugins/textResponse/types.ts +11 -0
- package/src/plugins/todo/Preview.vue +63 -0
- package/src/plugins/todo/View.vue +364 -0
- package/src/plugins/todo/composables/useTodos.ts +177 -0
- package/src/plugins/todo/definition.ts +45 -0
- package/src/plugins/todo/index.ts +61 -0
- package/src/plugins/todo/labels.ts +163 -0
- package/src/plugins/todo/priority.ts +98 -0
- package/src/plugins/todo/viewModes.ts +19 -0
- package/src/plugins/ui-image/ImagePreview.vue +23 -0
- package/src/plugins/ui-image/ImageView.vue +34 -0
- package/src/plugins/ui-image/index.ts +3 -0
- package/src/plugins/ui-image/types.ts +4 -0
- package/src/plugins/wiki/Preview.vue +65 -0
- package/src/plugins/wiki/View.vue +342 -0
- package/src/plugins/wiki/definition.ts +25 -0
- package/src/plugins/wiki/helpers.ts +59 -0
- package/src/plugins/wiki/index.ts +52 -0
- package/src/router/guards.ts +61 -0
- package/src/router/index.ts +50 -0
- package/src/tools/index.ts +52 -0
- package/src/tools/types.ts +27 -0
- package/src/types/events.ts +16 -0
- package/src/types/fileTree.ts +13 -0
- package/src/types/notification.ts +67 -0
- package/src/types/session.ts +116 -0
- package/src/types/sse.ts +90 -0
- package/src/types/toolCallHistory.ts +13 -0
- package/src/utils/agent/eventDispatch.ts +74 -0
- package/src/utils/agent/request.ts +55 -0
- package/src/utils/agent/toolCalls.ts +62 -0
- package/src/utils/api.ts +218 -0
- package/src/utils/canvas/viewMode.ts +46 -0
- package/src/utils/dom/authTokenMeta.ts +20 -0
- package/src/utils/dom/clickOutside.ts +11 -0
- package/src/utils/dom/externalLink.ts +57 -0
- package/src/utils/dom/scrollable.ts +24 -0
- package/src/utils/errors.ts +11 -0
- package/src/utils/files/expandedDirs.ts +25 -0
- package/src/utils/files/filename.ts +12 -0
- package/src/utils/files/sortChildren.ts +20 -0
- package/src/utils/filesPreview/schedulerPreview.ts +38 -0
- package/src/utils/filesPreview/todoPreview.ts +40 -0
- package/src/utils/format/date.ts +85 -0
- package/src/utils/format/frontmatter.ts +80 -0
- package/src/utils/format/jsonSyntax.ts +109 -0
- package/src/utils/html/previewCsp.ts +65 -0
- package/src/utils/image/resolve.ts +8 -0
- package/src/utils/image/rewriteMarkdownImageRefs.ts +182 -0
- package/src/utils/markdown/extractFirstH1.ts +39 -0
- package/src/utils/notification/dispatch.ts +22 -0
- package/src/utils/path/relativeLink.ts +130 -0
- package/src/utils/role/icon.ts +20 -0
- package/src/utils/role/merge.ts +10 -0
- package/src/utils/role/plugins.ts +12 -0
- package/src/utils/session/mergeSessions.ts +103 -0
- package/src/utils/session/seedRoleDefault.ts +35 -0
- package/src/utils/session/sessionEntries.ts +121 -0
- package/src/utils/session/sessionFactory.ts +22 -0
- package/src/utils/session/sessionHelpers.ts +99 -0
- package/src/utils/tools/dedup.ts +17 -0
- package/src/utils/tools/mcp.ts +33 -0
- package/src/utils/tools/pendingCalls.ts +16 -0
- package/src/utils/tools/result.ts +40 -0
- package/src/utils/types.ts +44 -0
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
# Sandbox
|
|
2
|
+
|
|
3
|
+
MulmoClaude runs the Claude Code agent inside a **Docker sandbox** when Docker is available. This isolates the agent's file-system access and limits what it can do on the host.
|
|
4
|
+
|
|
5
|
+
## How It Works
|
|
6
|
+
|
|
7
|
+
- On each agent invocation, the server checks whether Docker is running.
|
|
8
|
+
- If Docker is available (and `DISABLE_SANDBOX` is not set), Claude Code runs inside a disposable container (`mulmoclaude-sandbox`) built from `Dockerfile.sandbox`.
|
|
9
|
+
- If Docker is not available, Claude Code runs directly on the host with the workspace as its working directory.
|
|
10
|
+
|
|
11
|
+
## What the Container Can Access
|
|
12
|
+
|
|
13
|
+
| Mount | Container path | Mode |
|
|
14
|
+
|---|---|---|
|
|
15
|
+
| Workspace | `/home/node/mulmoclaude` | read-write |
|
|
16
|
+
| `node_modules/` | `/app/node_modules` | read-only |
|
|
17
|
+
| `server/` | `/app/server` | read-only |
|
|
18
|
+
| `src/` | `/app/src` | read-only |
|
|
19
|
+
| `~/.claude/` | `/home/node/.claude` | read-write |
|
|
20
|
+
| `~/.claude.json` | `/home/node/.claude.json` | read-write |
|
|
21
|
+
|
|
22
|
+
The container runs with `--cap-drop ALL` and as the host user's UID/GID, so it has no elevated privileges.
|
|
23
|
+
|
|
24
|
+
## Disabling the Sandbox
|
|
25
|
+
|
|
26
|
+
Set the environment variable `DISABLE_SANDBOX=1` to always run the agent directly on the host, even when Docker is available.
|
|
27
|
+
|
|
28
|
+
## Host Credentials (opt-in)
|
|
29
|
+
|
|
30
|
+
The sandbox is credential-free by default. Two opt-in flags let you expose the minimum needed for `git` / `gh` to authenticate without leaking private keys into the container:
|
|
31
|
+
|
|
32
|
+
- `SANDBOX_SSH_AGENT_FORWARD=1` — forwards the host's SSH agent socket (private keys stay on the host).
|
|
33
|
+
- `SANDBOX_MOUNT_CONFIGS=gh,gitconfig` — allowlisted read-only config mounts.
|
|
34
|
+
|
|
35
|
+
Full contract, what's deliberately excluded, and troubleshooting: [`docs/sandbox-credentials.md`](../../docs/sandbox-credentials.md).
|
|
36
|
+
|
|
37
|
+
## Checking the Current Sandbox State
|
|
38
|
+
|
|
39
|
+
Two places surface what's actually attached to **your** running container — useful when you've just toggled an opt-in flag and want to confirm it took effect.
|
|
40
|
+
|
|
41
|
+
### From the UI — lock icon popup
|
|
42
|
+
|
|
43
|
+
Click the 🔒 icon in the top bar. The popup shows:
|
|
44
|
+
|
|
45
|
+
- **Sandbox enabled / disabled** — whether Docker was detected and `DISABLE_SANDBOX` is off.
|
|
46
|
+
- **Host credentials attached** (only when the sandbox is on):
|
|
47
|
+
- **SSH agent**: `forwarded` when `SANDBOX_SSH_AGENT_FORWARD=1` **and** `$SSH_AUTH_SOCK` points at a live socket. If the flag is on but the socket is missing, the popup shows `not forwarded` and the server log carries the reason.
|
|
48
|
+
- **Mounted configs**: allowlisted names from `SANDBOX_MOUNT_CONFIGS` whose host path exists. Names you typed but whose host path is missing are silently dropped from the UI (they appear in the server log as `config mount skipped`).
|
|
49
|
+
|
|
50
|
+
The popup also has a **sample query button** that asks Claude to summarise this information in natural language.
|
|
51
|
+
|
|
52
|
+
### From inside a chat session
|
|
53
|
+
|
|
54
|
+
Inside the container, you can verify each piece directly:
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
# SSH agent — lists identities the host agent will sign with
|
|
58
|
+
ssh-add -l
|
|
59
|
+
|
|
60
|
+
# gh config — mounted read-only, so `gh auth status` should succeed
|
|
61
|
+
ls /home/node/.config/gh && gh auth status
|
|
62
|
+
|
|
63
|
+
# gitconfig — mounted read-only
|
|
64
|
+
cat /home/node/.gitconfig
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### From the server log
|
|
68
|
+
|
|
69
|
+
The popup intentionally exposes **names only**, never host paths or skip reasons. Full debug detail lives in the server log:
|
|
70
|
+
|
|
71
|
+
- `[sandbox] host credentials attached to container` — one-line summary of what was mounted on agent spawn.
|
|
72
|
+
- `[sandbox] unknown SANDBOX_MOUNT_CONFIGS entries ignored` — typo in the CSV.
|
|
73
|
+
- `[sandbox] config mount skipped (host path missing)` — name is in the allowlist but the host file/dir doesn't exist.
|
|
74
|
+
- `[sandbox] SSH agent forward requested but skipped` — flag on but `$SSH_AUTH_SOCK` unset or non-existent.
|
|
75
|
+
|
|
76
|
+
If the popup isn't showing what you expect, grep the startup log for `[sandbox]` first.
|
|
77
|
+
|
|
78
|
+
## First-Time Setup (macOS)
|
|
79
|
+
|
|
80
|
+
On macOS, the Docker container uses a separate credential store from the host. Before using the sandbox for the first time (and whenever the credential expires), run:
|
|
81
|
+
|
|
82
|
+
```
|
|
83
|
+
yarn sandbox:login
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
This opens an interactive `claude login` session inside the container so that the sandbox has valid credentials.
|
|
87
|
+
|
|
88
|
+
## Building the Image
|
|
89
|
+
|
|
90
|
+
The sandbox image is built automatically on first use. If `Dockerfile.sandbox` changes, the image is rebuilt on the next agent invocation. No manual build step is needed.
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# Spreadsheet Authoring Guide
|
|
2
|
+
|
|
3
|
+
Reference for the `presentSpreadsheet` plugin. Read this before building a spreadsheet.
|
|
4
|
+
|
|
5
|
+
## Cell Format
|
|
6
|
+
|
|
7
|
+
Every cell is an object `{"v": value, "f": format}`.
|
|
8
|
+
|
|
9
|
+
- `v` — value: text, number, date string, or formula (string starting with `=`)
|
|
10
|
+
- `f` — optional format code for display
|
|
11
|
+
|
|
12
|
+
## Formulas
|
|
13
|
+
|
|
14
|
+
Set `v` to a string starting with `=`. Use Excel-style A1 cell references.
|
|
15
|
+
|
|
16
|
+
```json
|
|
17
|
+
{"v": "=B2*1.05", "f": "$#,##0.00"}
|
|
18
|
+
{"v": "=SUM(A1:A10)", "f": "#,##0"}
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Never pre-calculate — let the spreadsheet compute using cell refs, functions, and arithmetic.
|
|
22
|
+
|
|
23
|
+
## Available Functions
|
|
24
|
+
|
|
25
|
+
SUM, AVERAGE, COUNT, MIN, MAX, IF, AND, OR, NOT, ROUND, ABS, TODAY, DATE, DATEDIF, YEAR, MONTH, DAY, CONCATENATE, LEFT, RIGHT, MID, LEN, TRIM, UPPER, LOWER, VLOOKUP, INDEX, MATCH, PMT, FV, PV, NPV, IRR.
|
|
26
|
+
|
|
27
|
+
## Dates
|
|
28
|
+
|
|
29
|
+
Use date strings like `01/15/2025` or date formulas like `=TODAY()` or `=DATE(2025,1,15)`. The spreadsheet auto-parses common formats (MM/DD/YYYY, YYYY-MM-DD, DD-MMM-YYYY) into date serial numbers. Date arithmetic works: `=B2-TODAY()` calculates days between dates.
|
|
30
|
+
|
|
31
|
+
## Format Codes
|
|
32
|
+
|
|
33
|
+
| Code | Use |
|
|
34
|
+
|---|---|
|
|
35
|
+
| `$#,##0.00` | Currency |
|
|
36
|
+
| `#,##0` | Integer with commas |
|
|
37
|
+
| `0.00%` | Percent |
|
|
38
|
+
| `0.00` | Decimal |
|
|
39
|
+
| `MM/DD/YYYY` | Date |
|
|
40
|
+
| `DD-MMM-YYYY` | Date |
|
|
41
|
+
| `YYYY-MM-DD` | ISO date |
|
|
42
|
+
|
|
43
|
+
Format is optional for plain text/numbers.
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
# Telegram Bridge
|
|
2
|
+
|
|
3
|
+
The Telegram bridge lets you talk to your MulmoClaude from the Telegram app on your phone or desktop. Your own custom Telegram bot forwards messages to the MulmoClaude server running on your computer, and replies come back through the same bot.
|
|
4
|
+
|
|
5
|
+
This is useful when you want to reach your MulmoClaude away from your computer — on a walk, from a phone, or from a friend's device — without exposing the server to the public internet.
|
|
6
|
+
|
|
7
|
+
## How It Works
|
|
8
|
+
|
|
9
|
+
- You create a **bot** with Telegram's BotFather; it gives you a token.
|
|
10
|
+
- You run a **bridge process** (`yarn telegram`) on the same machine as the MulmoClaude server. The bridge uses your bot token to receive messages from Telegram, forwards them to MulmoClaude over `localhost:3001`, and sends the replies back to the Telegram user.
|
|
11
|
+
- A short **allowlist** of Telegram chat IDs controls who can talk to the bot. Everyone else gets `"Access denied"`.
|
|
12
|
+
|
|
13
|
+
Your computer has to be on and connected to the internet for the bot to respond. Close the laptop → the bot goes silent.
|
|
14
|
+
|
|
15
|
+
## Prerequisites
|
|
16
|
+
|
|
17
|
+
- MulmoClaude checked out and runnable (`yarn dev` works).
|
|
18
|
+
- A Telegram account.
|
|
19
|
+
- Two terminals free: one for `yarn dev`, one for `yarn telegram`.
|
|
20
|
+
|
|
21
|
+
## Step 1 — Create the Bot with BotFather
|
|
22
|
+
|
|
23
|
+
1. In Telegram, search for `@BotFather` (the official account has a blue check) and start a chat.
|
|
24
|
+
2. Send `/newbot`.
|
|
25
|
+
3. Answer the two prompts:
|
|
26
|
+
- **Display name** — what appears in the chat header. Anything, e.g. `"Alice's MulmoClaude"`.
|
|
27
|
+
- **Username** — must end in `bot` and be unique on Telegram, e.g. `alice_mulmoclaude_bot`.
|
|
28
|
+
4. BotFather replies with a **token** like `1234567890:AAHdqTcvCH1vGWJxfSeofSAs0K5PALDsaw`. This token is the bot's password — anyone who has it can impersonate the bot. Keep it secret.
|
|
29
|
+
|
|
30
|
+
Optional polish (can be done anytime later via BotFather):
|
|
31
|
+
|
|
32
|
+
- `/setdescription` — text shown when users open the chat for the first time.
|
|
33
|
+
- `/setuserpic` — the bot's avatar.
|
|
34
|
+
- `/setprivacy` → `Disable` — lets the bot see all messages in group chats (by default it only sees messages starting with `/`).
|
|
35
|
+
|
|
36
|
+
## Step 2 — Start MulmoClaude and the Bridge
|
|
37
|
+
|
|
38
|
+
In terminal A, start MulmoClaude:
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
yarn dev
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Wait until you see `[server] listening port=3001`.
|
|
45
|
+
|
|
46
|
+
In terminal B, start the bridge. Leave the allowlist **empty on purpose** for the first run — you will need to discover your own chat ID before you can add it.
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
export TELEGRAM_BOT_TOKEN='1234567890:AAHdqTcvCH1vGWJxfSeofSAs0K5PALDsaw'
|
|
50
|
+
export TELEGRAM_ALLOWED_CHAT_IDS=''
|
|
51
|
+
yarn telegram
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Expected output:
|
|
55
|
+
|
|
56
|
+
```
|
|
57
|
+
MulmoClaude Telegram bridge
|
|
58
|
+
Allowlist: (empty — all chats will be denied)
|
|
59
|
+
Connected (<socket id>).
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## Step 3 — Find Your Chat ID and Allowlist It
|
|
63
|
+
|
|
64
|
+
1. In Telegram, open your new bot (search the username you picked) and send it any message — `hi` works.
|
|
65
|
+
2. In terminal B, you will see a log line like:
|
|
66
|
+
```
|
|
67
|
+
[telegram] denied chat=987654321 user=@alice — not on allowlist
|
|
68
|
+
```
|
|
69
|
+
That number (`987654321`) is **your Telegram chat ID**.
|
|
70
|
+
3. Stop the bridge (`Ctrl+C`), put your ID in the allowlist, restart:
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
export TELEGRAM_ALLOWED_CHAT_IDS='987654321'
|
|
74
|
+
yarn telegram
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
4. Send the bot another message. MulmoClaude should now reply.
|
|
78
|
+
|
|
79
|
+
## Step 4 — Invite a Friend
|
|
80
|
+
|
|
81
|
+
To let another person use your MulmoClaude:
|
|
82
|
+
|
|
83
|
+
1. Share the bot's username with them; they search for it on Telegram and send it a message.
|
|
84
|
+
2. Their chat ID appears in terminal B's `denied` log line, just like yours did in Step 3.
|
|
85
|
+
3. Append their ID (comma-separated) and restart the bridge:
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
export TELEGRAM_ALLOWED_CHAT_IDS='987654321,123456789'
|
|
89
|
+
yarn telegram
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
4. When they message the bot again, it works.
|
|
93
|
+
|
|
94
|
+
To avoid re-exporting every time, put `TELEGRAM_BOT_TOKEN` and `TELEGRAM_ALLOWED_CHAT_IDS` in a `.env` file at the repo root. The bridge auto-loads `.env` on startup via `dotenv/config`, so the vars take effect just by restarting `yarn telegram` — no shell `export` needed.
|
|
95
|
+
|
|
96
|
+
```dotenv
|
|
97
|
+
# .env (repo root)
|
|
98
|
+
TELEGRAM_BOT_TOKEN=1234567890:AAHdqTcvCH1vGWJxfSeofSAs0K5PALDsaw
|
|
99
|
+
TELEGRAM_ALLOWED_CHAT_IDS=987654321,123456789
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
## Bot Commands
|
|
103
|
+
|
|
104
|
+
These are typed directly into the Telegram chat. They mirror the CLI:
|
|
105
|
+
|
|
106
|
+
- `/help` — show available commands.
|
|
107
|
+
- `/reset` — start a fresh conversation session (drops prior context).
|
|
108
|
+
- `/roles` — list available roles.
|
|
109
|
+
- `/role <id>` — switch to a specific role (e.g. `/role office`).
|
|
110
|
+
- `/status` — show the current session info (session ID, current role).
|
|
111
|
+
|
|
112
|
+
Any other text is treated as a message to the assistant.
|
|
113
|
+
|
|
114
|
+
## Troubleshooting
|
|
115
|
+
|
|
116
|
+
**`Connect error: bearer token rejected`** — MulmoClaude was restarted, so its bearer token changed. Restart `yarn telegram` to pick up the new one. To avoid this, pin `MULMOCLAUDE_AUTH_TOKEN` to the same value on both sides (see `docs/developer.md` §Auth).
|
|
117
|
+
|
|
118
|
+
**`TELEGRAM_ALLOWED_CHAT_IDS: "foo" is not an integer chat id`** — typo in the allowlist. Chat IDs are plain integers only — no spaces, quotes, or `#` prefix. Negative integers (for group chats) are allowed.
|
|
119
|
+
|
|
120
|
+
**Friend gets `"Access denied"` after you added their ID** — the allowlist is read once at startup. Restart `yarn telegram` after changing `TELEGRAM_ALLOWED_CHAT_IDS`.
|
|
121
|
+
|
|
122
|
+
**Messages stop flowing with no error** — check that `yarn dev` is still running. If the MulmoClaude server is down, the bridge stays up but has nothing to forward to. The next inbound message will log `Connect error` or `Disconnected`.
|
|
123
|
+
|
|
124
|
+
**Bot responds in a group chat you did not expect** — group chat IDs are **negative**. If you want the bot to work in a specific group, add that negative ID. By default BotFather enables "group privacy mode", so the bot only sees messages starting with `/` in groups — toggle it via BotFather's `/setprivacy` if you need full visibility.
|
|
125
|
+
|
|
126
|
+
## Security Notes
|
|
127
|
+
|
|
128
|
+
- The bot token is a password. If it leaks, regenerate it via BotFather's `/revoke`.
|
|
129
|
+
- The allowlist is the only thing standing between "my friends" and "every Telegram user on Earth". Keep it current — remove chat IDs when you no longer want that person to have access, and restart the bridge.
|
|
130
|
+
- The bridge logs chat IDs, usernames, and message lengths, but **not** message contents or the bot token. If you need a full audit trail, record it separately.
|
|
131
|
+
- The MulmoClaude bearer token never leaves your machine. The bridge only talks to `localhost:3001`; your friends talk to Telegram's servers, which then talk to your bridge.
|
|
132
|
+
|
|
133
|
+
## Full Operator Guide
|
|
134
|
+
|
|
135
|
+
For the complete operator walkthrough (including screenshots-worthy step numbering and a Japanese translation), see `docs/message_apps/telegram/README.md` (English) and `docs/message_apps/telegram/README.ja.md` (Japanese) in the MulmoClaude repository.
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
# Wiki
|
|
2
|
+
|
|
3
|
+
The wiki is a personal knowledge base that Claude builds and maintains as interconnected Markdown files in the workspace. It is available in the **General** role.
|
|
4
|
+
|
|
5
|
+
The idea originated from [Andrej Karpathy's LLM Wiki pattern](https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f).
|
|
6
|
+
|
|
7
|
+
## The Core Idea
|
|
8
|
+
|
|
9
|
+
Most people's experience with LLMs and documents resembles RAG: upload files, retrieve relevant chunks at query time, generate answers. The LLM rediscovers knowledge from scratch on every question — there is no accumulation.
|
|
10
|
+
|
|
11
|
+
The wiki is different. Instead of retrieving from raw documents at query time, Claude **incrementally builds and maintains a persistent wiki** — a structured, interlinked collection of Markdown files. When you add a new source, Claude doesn't just index it. It reads it, extracts key information, and integrates it into the existing wiki: updating entity pages, revising topic summaries, noting contradictions, strengthening synthesis.
|
|
12
|
+
|
|
13
|
+
**The wiki is a persistent, compounding artifact.** Cross-references are already there. Contradictions are flagged. The synthesis reflects everything you've read. The wiki grows richer with every source and every question.
|
|
14
|
+
|
|
15
|
+
You never write the wiki yourself — Claude writes and maintains all of it. You curate sources, explore, and ask questions. Claude does the summarizing, cross-referencing, filing, and bookkeeping.
|
|
16
|
+
|
|
17
|
+
## What You Can Do With It
|
|
18
|
+
|
|
19
|
+
- **Research**: go deep on a topic over weeks or months — reading papers, articles, reports, building a comprehensive wiki with an evolving thesis.
|
|
20
|
+
- **Reading a book**: file each chapter as you go, building pages for characters, themes, plot threads, and connections.
|
|
21
|
+
- **Personal knowledge**: track goals, health, self-improvement — file journal entries, articles, podcast notes, and build a structured picture over time.
|
|
22
|
+
- **Business**: feed Slack threads, meeting transcripts, project documents into a wiki that stays current because Claude does the maintenance.
|
|
23
|
+
|
|
24
|
+
## Your Role vs. Claude's Role
|
|
25
|
+
|
|
26
|
+
**Your job**: curate sources, direct the analysis, ask good questions, think about what it all means.
|
|
27
|
+
|
|
28
|
+
**Claude's job**: summarizing, cross-referencing, filing, updating pages, maintaining consistency, bookkeeping — everything that makes humans abandon wikis because the maintenance burden grows too fast.
|
|
29
|
+
|
|
30
|
+
## Three Operations
|
|
31
|
+
|
|
32
|
+
### Ingest
|
|
33
|
+
|
|
34
|
+
Drop a source (article, URL, text) and ask Claude to process it.
|
|
35
|
+
|
|
36
|
+
Claude will: read the source, identify key entities and concepts, create or update 5–15 wiki pages, add cross-references, append a log entry, and refresh the index. Show the updated index in the canvas when done.
|
|
37
|
+
|
|
38
|
+
### Query
|
|
39
|
+
|
|
40
|
+
Ask any question. Claude searches `data/wiki/index.md` for relevant pages, reads them, and synthesizes a grounded answer with citations. Good answers can be filed back into the wiki as new pages — a comparison you asked for, an analysis, a connection you discovered — so they don't disappear into chat history.
|
|
41
|
+
|
|
42
|
+
### Lint
|
|
43
|
+
|
|
44
|
+
Ask Claude to health-check the wiki. It scans for contradictions, stale claims, orphan pages, missing cross-references, and concepts that deserve their own page, then fixes issues automatically.
|
|
45
|
+
|
|
46
|
+
## Folder Layout
|
|
47
|
+
|
|
48
|
+
```
|
|
49
|
+
data/wiki/
|
|
50
|
+
index.md ← catalog of all pages (title, one-line summary, last updated)
|
|
51
|
+
log.md ← append-only chronological activity log
|
|
52
|
+
summary.md ← compact key-topics list (loaded into every session as ambient context)
|
|
53
|
+
SCHEMA.md ← conventions for page format, index updates, and log entries
|
|
54
|
+
pages/
|
|
55
|
+
<topic>.md ← one page per entity, concept, or theme
|
|
56
|
+
sources/
|
|
57
|
+
<slug>.md ← raw ingested sources (immutable after ingest)
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## Page Format
|
|
61
|
+
|
|
62
|
+
Each page is a plain Markdown file with YAML frontmatter:
|
|
63
|
+
|
|
64
|
+
```markdown
|
|
65
|
+
---
|
|
66
|
+
title: Transformer Architecture
|
|
67
|
+
created: 2026-04-05
|
|
68
|
+
updated: 2026-04-05
|
|
69
|
+
tags: [machine-learning, architecture, attention]
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
# Transformer Architecture
|
|
73
|
+
|
|
74
|
+
Brief summary paragraph...
|
|
75
|
+
|
|
76
|
+
## Key Concepts
|
|
77
|
+
|
|
78
|
+
...
|
|
79
|
+
|
|
80
|
+
## Related Pages
|
|
81
|
+
|
|
82
|
+
- [[Attention Mechanism]]
|
|
83
|
+
- [[BERT]]
|
|
84
|
+
- [[GPT]]
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
Cross-references use `[[Page Name]]` wiki-link syntax. Slugs are lowercase, hyphen-separated (e.g. `transformer-architecture.md`).
|
|
88
|
+
|
|
89
|
+
## `index.md` Format
|
|
90
|
+
|
|
91
|
+
`data/wiki/index.md` is the catalog — one bullet per page using standard markdown link syntax with the slug embedded in the href. This format works both in-app (the canvas parses it) and in any plain markdown viewer (GitHub, VS Code preview, etc.).
|
|
92
|
+
|
|
93
|
+
```markdown
|
|
94
|
+
# Wiki Index
|
|
95
|
+
|
|
96
|
+
## ページ一覧
|
|
97
|
+
|
|
98
|
+
- [Transformer Architecture](pages/transformer-architecture.md) — machine-learning, architecture, attention (2026-04-05)
|
|
99
|
+
- [さくらインターネット](pages/sakura-internet.md) — クラウド, 日本企業, データセンター (2026-04-06)
|
|
100
|
+
- [ECharts DataZoom](pages/echarts-datazoom.md) — ECharts, データ可視化 (2026-04-13)
|
|
101
|
+
|
|
102
|
+
## タグ一覧
|
|
103
|
+
|
|
104
|
+
- **AI**: [Transformer Architecture](pages/transformer-architecture.md), [さくらインターネット](pages/sakura-internet.md)
|
|
105
|
+
- **日本企業**: [さくらインターネット](pages/sakura-internet.md)
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
Key rules:
|
|
109
|
+
|
|
110
|
+
- Always write bullet items as `[Title](pages/<slug>.md) — description (YYYY-MM-DD)` — **no** `[[slug]]` wiki-link form, and **no** markdown tables. The canvas parser extracts the slug from the href so non-ASCII titles (日本語, etc.) keep a navigable slug.
|
|
111
|
+
- Slugs are lowercase ASCII, hyphen-separated. They match the page filename one-to-one (`pages/sakura-internet.md` → slug `sakura-internet`).
|
|
112
|
+
- Group by category if useful, then include a "タグ一覧" / "Tags" section with the same `[Title](pages/<slug>.md)` link form so every mention is clickable.
|
|
113
|
+
- Keep the index in sync with `pages/` — when you add a page, add a row; when you rename a file, update every link that points at it.
|
|
114
|
+
|
|
115
|
+
## Canvas Tool
|
|
116
|
+
|
|
117
|
+
Use the `manageWiki` tool to display wiki content in the canvas:
|
|
118
|
+
|
|
119
|
+
- `action: "index"` — show the page catalog
|
|
120
|
+
- `action: "page"` — show a single page (provide `pageName`)
|
|
121
|
+
- `action: "log"` — show the activity log
|
|
122
|
+
- `action: "lint_report"` — run a health check
|
|
123
|
+
|
|
124
|
+
## Relationship to `memory.md`
|
|
125
|
+
|
|
126
|
+
| | `memory.md` | `data/wiki/` |
|
|
127
|
+
| ------ | ---------------------------------------- | ------------------------------------------- |
|
|
128
|
+
| Scope | Brief distilled facts, always in context | Deep structured knowledge, loaded on demand |
|
|
129
|
+
| Growth | Intentionally small | Grows unboundedly |
|
|
130
|
+
|
|
131
|
+
Over time, Claude can distill key insights from the wiki back into `memory.md` as compact ambient context for all roles.
|