@jungjaehoon/mama-os 0.20.1 → 0.22.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.
Files changed (264) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/README.md +12 -4
  3. package/dist/agent/agent-loop.d.ts.map +1 -1
  4. package/dist/agent/agent-loop.js +76 -11
  5. package/dist/agent/agent-loop.js.map +1 -1
  6. package/dist/agent/code-act/host-bridge.d.ts.map +1 -1
  7. package/dist/agent/code-act/host-bridge.js +88 -3
  8. package/dist/agent/code-act/host-bridge.js.map +1 -1
  9. package/dist/agent/codex-mcp-process.d.ts +1 -0
  10. package/dist/agent/codex-mcp-process.d.ts.map +1 -1
  11. package/dist/agent/codex-mcp-process.js +3 -2
  12. package/dist/agent/codex-mcp-process.js.map +1 -1
  13. package/dist/agent/gateway-tool-executor.d.ts +24 -11
  14. package/dist/agent/gateway-tool-executor.d.ts.map +1 -1
  15. package/dist/agent/gateway-tool-executor.js +349 -30
  16. package/dist/agent/gateway-tool-executor.js.map +1 -1
  17. package/dist/agent/gateway-tools.md +7 -2
  18. package/dist/agent/model-runner.d.ts +8 -0
  19. package/dist/agent/model-runner.d.ts.map +1 -1
  20. package/dist/agent/model-runner.js.map +1 -1
  21. package/dist/agent/os-agent-capabilities.md +13 -12
  22. package/dist/agent/persistent-cli-adapter.d.ts +6 -0
  23. package/dist/agent/persistent-cli-adapter.d.ts.map +1 -1
  24. package/dist/agent/persistent-cli-adapter.js +21 -10
  25. package/dist/agent/persistent-cli-adapter.js.map +1 -1
  26. package/dist/agent/tool-registry.d.ts.map +1 -1
  27. package/dist/agent/tool-registry.js +33 -2
  28. package/dist/agent/tool-registry.js.map +1 -1
  29. package/dist/agent/types.d.ts +30 -2
  30. package/dist/agent/types.d.ts.map +1 -1
  31. package/dist/agent/types.js.map +1 -1
  32. package/dist/api/graph-api.d.ts.map +1 -1
  33. package/dist/api/graph-api.js +78 -5
  34. package/dist/api/graph-api.js.map +1 -1
  35. package/dist/api/index.d.ts +8 -1
  36. package/dist/api/index.d.ts.map +1 -1
  37. package/dist/api/index.js +18 -12
  38. package/dist/api/index.js.map +1 -1
  39. package/dist/api/operator-handler.d.ts +19 -0
  40. package/dist/api/operator-handler.d.ts.map +1 -0
  41. package/dist/api/operator-handler.js +106 -0
  42. package/dist/api/operator-handler.js.map +1 -0
  43. package/dist/api/operator-summary.d.ts +3 -0
  44. package/dist/api/operator-summary.d.ts.map +1 -0
  45. package/dist/api/operator-summary.js +72 -0
  46. package/dist/api/operator-summary.js.map +1 -0
  47. package/dist/api/operator-tasks-handler.d.ts +7 -0
  48. package/dist/api/operator-tasks-handler.d.ts.map +1 -0
  49. package/dist/api/operator-tasks-handler.js +165 -0
  50. package/dist/api/operator-tasks-handler.js.map +1 -0
  51. package/dist/api/report-handler.d.ts +7 -0
  52. package/dist/api/report-handler.d.ts.map +1 -1
  53. package/dist/api/report-handler.js +30 -0
  54. package/dist/api/report-handler.js.map +1 -1
  55. package/dist/api/report-persistence.d.ts +17 -0
  56. package/dist/api/report-persistence.d.ts.map +1 -0
  57. package/dist/api/report-persistence.js +91 -0
  58. package/dist/api/report-persistence.js.map +1 -0
  59. package/dist/cli/commands/start.d.ts.map +1 -1
  60. package/dist/cli/commands/start.js +402 -250
  61. package/dist/cli/commands/start.js.map +1 -1
  62. package/dist/cli/config/config-manager.d.ts.map +1 -1
  63. package/dist/cli/config/config-manager.js +93 -55
  64. package/dist/cli/config/config-manager.js.map +1 -1
  65. package/dist/cli/config/types.d.ts +17 -2
  66. package/dist/cli/config/types.d.ts.map +1 -1
  67. package/dist/cli/config/types.js +4 -0
  68. package/dist/cli/config/types.js.map +1 -1
  69. package/dist/cli/runtime/agent-loop-init.d.ts +3 -1
  70. package/dist/cli/runtime/agent-loop-init.d.ts.map +1 -1
  71. package/dist/cli/runtime/agent-loop-init.js +16 -7
  72. package/dist/cli/runtime/agent-loop-init.js.map +1 -1
  73. package/dist/cli/runtime/api-routes-init.d.ts.map +1 -1
  74. package/dist/cli/runtime/api-routes-init.js +503 -259
  75. package/dist/cli/runtime/api-routes-init.js.map +1 -1
  76. package/dist/cli/runtime/api-server-init.d.ts.map +1 -1
  77. package/dist/cli/runtime/api-server-init.js +12 -7
  78. package/dist/cli/runtime/api-server-init.js.map +1 -1
  79. package/dist/cli/runtime/connector-init.d.ts +19 -1
  80. package/dist/cli/runtime/connector-init.d.ts.map +1 -1
  81. package/dist/cli/runtime/connector-init.js +32 -2
  82. package/dist/cli/runtime/connector-init.js.map +1 -1
  83. package/dist/cli/runtime/gateway-init.d.ts.map +1 -1
  84. package/dist/cli/runtime/gateway-init.js +3 -1
  85. package/dist/cli/runtime/gateway-init.js.map +1 -1
  86. package/dist/cli/runtime/memory-agent-init.d.ts +2 -1
  87. package/dist/cli/runtime/memory-agent-init.d.ts.map +1 -1
  88. package/dist/cli/runtime/memory-agent-init.js +15 -3
  89. package/dist/cli/runtime/memory-agent-init.js.map +1 -1
  90. package/dist/cli/runtime/message-router-config.d.ts +4 -0
  91. package/dist/cli/runtime/message-router-config.d.ts.map +1 -0
  92. package/dist/cli/runtime/message-router-config.js +11 -0
  93. package/dist/cli/runtime/message-router-config.js.map +1 -0
  94. package/dist/cli/runtime/scheduler-init.d.ts.map +1 -1
  95. package/dist/cli/runtime/scheduler-init.js +12 -12
  96. package/dist/cli/runtime/scheduler-init.js.map +1 -1
  97. package/dist/connectors/framework/polling-scheduler.d.ts.map +1 -1
  98. package/dist/connectors/framework/polling-scheduler.js +53 -2
  99. package/dist/connectors/framework/polling-scheduler.js.map +1 -1
  100. package/dist/connectors/framework/types.d.ts +8 -0
  101. package/dist/connectors/framework/types.d.ts.map +1 -1
  102. package/dist/connectors/kagemusha/query-tools.d.ts.map +1 -1
  103. package/dist/connectors/kagemusha/query-tools.js +14 -3
  104. package/dist/connectors/kagemusha/query-tools.js.map +1 -1
  105. package/dist/connectors/slack/index.d.ts.map +1 -1
  106. package/dist/connectors/slack/index.js +3 -1
  107. package/dist/connectors/slack/index.js.map +1 -1
  108. package/dist/connectors/trello/index.d.ts.map +1 -1
  109. package/dist/connectors/trello/index.js +6 -2
  110. package/dist/connectors/trello/index.js.map +1 -1
  111. package/dist/db/agent-store.d.ts +5 -0
  112. package/dist/db/agent-store.d.ts.map +1 -1
  113. package/dist/db/agent-store.js +6 -3
  114. package/dist/db/agent-store.js.map +1 -1
  115. package/dist/db/migrations/agent-activity-tool-name.d.ts +8 -0
  116. package/dist/db/migrations/agent-activity-tool-name.d.ts.map +1 -0
  117. package/dist/db/migrations/agent-activity-tool-name.js +24 -0
  118. package/dist/db/migrations/agent-activity-tool-name.js.map +1 -0
  119. package/dist/db/migrations/wiki-artifacts.d.ts +3 -0
  120. package/dist/db/migrations/wiki-artifacts.d.ts.map +1 -0
  121. package/dist/db/migrations/wiki-artifacts.js +24 -0
  122. package/dist/db/migrations/wiki-artifacts.js.map +1 -0
  123. package/dist/envelope/run-guard.d.ts +10 -0
  124. package/dist/envelope/run-guard.d.ts.map +1 -0
  125. package/dist/envelope/run-guard.js +19 -0
  126. package/dist/envelope/run-guard.js.map +1 -0
  127. package/dist/gateways/message-router.d.ts.map +1 -1
  128. package/dist/gateways/message-router.js +15 -3
  129. package/dist/gateways/message-router.js.map +1 -1
  130. package/dist/gateways/types.d.ts +4 -0
  131. package/dist/gateways/types.d.ts.map +1 -1
  132. package/dist/multi-agent/agent-event-bus.d.ts +14 -0
  133. package/dist/multi-agent/agent-event-bus.d.ts.map +1 -1
  134. package/dist/multi-agent/agent-event-bus.js +34 -0
  135. package/dist/multi-agent/agent-event-bus.js.map +1 -1
  136. package/dist/multi-agent/conductor-persona.js +2 -2
  137. package/dist/multi-agent/dashboard-agent-persona.d.ts +6 -2
  138. package/dist/multi-agent/dashboard-agent-persona.d.ts.map +1 -1
  139. package/dist/multi-agent/dashboard-agent-persona.js +65 -32
  140. package/dist/multi-agent/dashboard-agent-persona.js.map +1 -1
  141. package/dist/multi-agent/memory-agent-persona.d.ts +1 -1
  142. package/dist/multi-agent/memory-agent-persona.d.ts.map +1 -1
  143. package/dist/multi-agent/memory-agent-persona.js +25 -4
  144. package/dist/multi-agent/memory-agent-persona.js.map +1 -1
  145. package/dist/multi-agent/runtime-process.d.ts +4 -2
  146. package/dist/multi-agent/runtime-process.d.ts.map +1 -1
  147. package/dist/multi-agent/runtime-process.js +7 -4
  148. package/dist/multi-agent/runtime-process.js.map +1 -1
  149. package/dist/multi-agent/types.d.ts +1 -1
  150. package/dist/multi-agent/wiki-agent-persona.d.ts +7 -1
  151. package/dist/multi-agent/wiki-agent-persona.d.ts.map +1 -1
  152. package/dist/multi-agent/wiki-agent-persona.js +82 -68
  153. package/dist/multi-agent/wiki-agent-persona.js.map +1 -1
  154. package/dist/operator/action-verifier.d.ts +50 -0
  155. package/dist/operator/action-verifier.d.ts.map +1 -0
  156. package/dist/operator/action-verifier.js +68 -0
  157. package/dist/operator/action-verifier.js.map +1 -0
  158. package/dist/operator/board-reconcile.d.ts +62 -0
  159. package/dist/operator/board-reconcile.d.ts.map +1 -0
  160. package/dist/operator/board-reconcile.js +160 -0
  161. package/dist/operator/board-reconcile.js.map +1 -0
  162. package/dist/operator/board-slot-instructions.d.ts +26 -0
  163. package/dist/operator/board-slot-instructions.d.ts.map +1 -0
  164. package/dist/operator/board-slot-instructions.js +76 -0
  165. package/dist/operator/board-slot-instructions.js.map +1 -0
  166. package/dist/operator/connector-delta-repo.d.ts +33 -0
  167. package/dist/operator/connector-delta-repo.d.ts.map +1 -0
  168. package/dist/operator/connector-delta-repo.js +0 -0
  169. package/dist/operator/connector-delta-repo.js.map +1 -0
  170. package/dist/operator/mama-memory-port.d.ts +13 -0
  171. package/dist/operator/mama-memory-port.d.ts.map +1 -0
  172. package/dist/operator/mama-memory-port.js +35 -0
  173. package/dist/operator/mama-memory-port.js.map +1 -0
  174. package/dist/operator/operator-interfaces.d.ts +136 -0
  175. package/dist/operator/operator-interfaces.d.ts.map +1 -0
  176. package/dist/operator/operator-interfaces.js +15 -0
  177. package/dist/operator/operator-interfaces.js.map +1 -0
  178. package/dist/operator/operator-trigger-loop.d.ts +119 -0
  179. package/dist/operator/operator-trigger-loop.d.ts.map +1 -0
  180. package/dist/operator/operator-trigger-loop.js +267 -0
  181. package/dist/operator/operator-trigger-loop.js.map +1 -0
  182. package/dist/operator/report-run.d.ts +78 -0
  183. package/dist/operator/report-run.d.ts.map +1 -0
  184. package/dist/operator/report-run.js +141 -0
  185. package/dist/operator/report-run.js.map +1 -0
  186. package/dist/operator/report-scheduler.d.ts +66 -0
  187. package/dist/operator/report-scheduler.d.ts.map +1 -0
  188. package/dist/operator/report-scheduler.js +135 -0
  189. package/dist/operator/report-scheduler.js.map +1 -0
  190. package/dist/operator/situation-report.d.ts +90 -0
  191. package/dist/operator/situation-report.d.ts.map +1 -0
  192. package/dist/operator/situation-report.js +221 -0
  193. package/dist/operator/situation-report.js.map +1 -0
  194. package/dist/operator/task-ledger.d.ts +96 -0
  195. package/dist/operator/task-ledger.d.ts.map +1 -0
  196. package/dist/operator/task-ledger.js +277 -0
  197. package/dist/operator/task-ledger.js.map +1 -0
  198. package/dist/operator/trigger-author.d.ts +45 -0
  199. package/dist/operator/trigger-author.d.ts.map +1 -0
  200. package/dist/operator/trigger-author.js +217 -0
  201. package/dist/operator/trigger-author.js.map +1 -0
  202. package/dist/operator/trigger-evolve.d.ts +31 -0
  203. package/dist/operator/trigger-evolve.d.ts.map +1 -0
  204. package/dist/operator/trigger-evolve.js +51 -0
  205. package/dist/operator/trigger-evolve.js.map +1 -0
  206. package/dist/operator/trigger-fire.d.ts +29 -0
  207. package/dist/operator/trigger-fire.d.ts.map +1 -0
  208. package/dist/operator/trigger-fire.js +41 -0
  209. package/dist/operator/trigger-fire.js.map +1 -0
  210. package/dist/operator/trigger-matcher.d.ts +19 -0
  211. package/dist/operator/trigger-matcher.d.ts.map +1 -0
  212. package/dist/operator/trigger-matcher.js +61 -0
  213. package/dist/operator/trigger-matcher.js.map +1 -0
  214. package/dist/operator/trigger-registry.d.ts +36 -0
  215. package/dist/operator/trigger-registry.d.ts.map +1 -0
  216. package/dist/operator/trigger-registry.js +135 -0
  217. package/dist/operator/trigger-registry.js.map +1 -0
  218. package/dist/operator/trigger-review.d.ts +23 -0
  219. package/dist/operator/trigger-review.d.ts.map +1 -0
  220. package/dist/operator/trigger-review.js +127 -0
  221. package/dist/operator/trigger-review.js.map +1 -0
  222. package/dist/operator/trigger-types.d.ts +84 -0
  223. package/dist/operator/trigger-types.d.ts.map +1 -0
  224. package/dist/operator/trigger-types.js +14 -0
  225. package/dist/operator/trigger-types.js.map +1 -0
  226. package/dist/scheduler/cron-worker.d.ts.map +1 -1
  227. package/dist/scheduler/cron-worker.js +3 -1
  228. package/dist/scheduler/cron-worker.js.map +1 -1
  229. package/dist/security/security-monitor.d.ts.map +1 -1
  230. package/dist/security/security-monitor.js +1 -0
  231. package/dist/security/security-monitor.js.map +1 -1
  232. package/dist/wiki/obsidian-writer.d.ts +1 -1
  233. package/dist/wiki/obsidian-writer.d.ts.map +1 -1
  234. package/dist/wiki/obsidian-writer.js +67 -27
  235. package/dist/wiki/obsidian-writer.js.map +1 -1
  236. package/dist/wiki/path-safety.d.ts +2 -0
  237. package/dist/wiki/path-safety.d.ts.map +1 -0
  238. package/dist/wiki/path-safety.js +40 -0
  239. package/dist/wiki/path-safety.js.map +1 -0
  240. package/dist/wiki/types.d.ts +4 -2
  241. package/dist/wiki/types.d.ts.map +1 -1
  242. package/dist/wiki/types.js +1 -1
  243. package/dist/wiki/types.js.map +1 -1
  244. package/dist/wiki-artifacts/normalization.d.ts +8 -0
  245. package/dist/wiki-artifacts/normalization.d.ts.map +1 -0
  246. package/dist/wiki-artifacts/normalization.js +41 -0
  247. package/dist/wiki-artifacts/normalization.js.map +1 -0
  248. package/dist/wiki-artifacts/types.d.ts +52 -0
  249. package/dist/wiki-artifacts/types.d.ts.map +1 -0
  250. package/dist/wiki-artifacts/types.js +3 -0
  251. package/dist/wiki-artifacts/types.js.map +1 -0
  252. package/dist/wiki-artifacts/wiki-publish-adapter.d.ts +14 -0
  253. package/dist/wiki-artifacts/wiki-publish-adapter.d.ts.map +1 -0
  254. package/dist/wiki-artifacts/wiki-publish-adapter.js +71 -0
  255. package/dist/wiki-artifacts/wiki-publish-adapter.js.map +1 -0
  256. package/package.json +5 -3
  257. package/public/ui/assets/index-CKOJQYXA.css +1 -0
  258. package/public/ui/assets/index-OSgiwL24.js +62 -0
  259. package/public/ui/index.html +14 -0
  260. package/public/ui/theme-init.js +20 -0
  261. package/public/viewer/js/utils/api.js +2 -2
  262. package/public/viewer/src/utils/api.ts +9 -2
  263. package/public/viewer/sw.js +1 -1
  264. package/public/viewer/viewer.html +17 -27
@@ -0,0 +1,14 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <title>MAMA Operator</title>
7
+ <script src="/ui/theme-init.js"></script>
8
+ <script type="module" crossorigin src="/ui/assets/index-OSgiwL24.js"></script>
9
+ <link rel="stylesheet" crossorigin href="/ui/assets/index-CKOJQYXA.css">
10
+ </head>
11
+ <body>
12
+ <div id="root"></div>
13
+ </body>
14
+ </html>
@@ -0,0 +1,20 @@
1
+ /* global localStorage, window, document */
2
+ (function () {
3
+ let theme = null;
4
+ try {
5
+ // Keep in sync with THEME_STORAGE_KEY in src/lib/theme.ts.
6
+ const stored = localStorage.getItem('mama-ui-theme');
7
+ if (stored === 'light' || stored === 'dark') {
8
+ theme = stored;
9
+ }
10
+ } catch (_error) {
11
+ theme = null;
12
+ }
13
+ if (!theme) {
14
+ const prefersDark =
15
+ typeof window.matchMedia === 'function' &&
16
+ window.matchMedia('(prefers-color-scheme: dark)').matches;
17
+ theme = prefersDark ? 'dark' : 'light';
18
+ }
19
+ document.documentElement.setAttribute('data-theme', theme);
20
+ })();
@@ -62,10 +62,10 @@ export class API {
62
62
  * @param {Object} body - Request body
63
63
  * @returns {Promise<Object>} Response data
64
64
  */
65
- static async post(endpoint, body) {
65
+ static async post(endpoint, body, options = {}) {
66
66
  const response = await fetch(endpoint, {
67
67
  method: 'POST',
68
- headers: { 'Content-Type': 'application/json' },
68
+ headers: { 'Content-Type': 'application/json', ...(options?.headers ?? {}) },
69
69
  body: JSON.stringify(body),
70
70
  });
71
71
  if (!response.ok) {
@@ -13,6 +13,9 @@ export type QueryValue = string | number | boolean | null | undefined;
13
13
  export type QueryParams = Record<string, QueryValue>;
14
14
  export type ApiErrorPayload = { message?: string; error?: string };
15
15
  export type JsonRecord = Record<string, unknown>;
16
+ export interface ApiRequestOptions {
17
+ headers?: Record<string, string>;
18
+ }
16
19
 
17
20
  export interface GraphNode {
18
21
  id: string | number;
@@ -602,10 +605,14 @@ export class API {
602
605
  * @param {Object} body - Request body
603
606
  * @returns {Promise<Object>} Response data
604
607
  */
605
- static async post<T = unknown, B = unknown>(endpoint: string, body: B): Promise<T> {
608
+ static async post<T = unknown, B = unknown>(
609
+ endpoint: string,
610
+ body: B,
611
+ options: ApiRequestOptions | null = {}
612
+ ): Promise<T> {
606
613
  const response = await fetch(endpoint, {
607
614
  method: 'POST',
608
- headers: { 'Content-Type': 'application/json' },
615
+ headers: { 'Content-Type': 'application/json', ...(options?.headers ?? {}) },
609
616
  body: JSON.stringify(body),
610
617
  });
611
618
 
@@ -7,7 +7,7 @@
7
7
 
8
8
  /* eslint-env serviceworker */
9
9
 
10
- const CACHE_NAME = 'mama-mobile-v1.6.0';
10
+ const CACHE_NAME = 'mama-mobile-v1.6.1';
11
11
  const STATIC_ASSETS = [
12
12
  '/viewer',
13
13
  '/viewer/viewer.css',
@@ -214,6 +214,7 @@
214
214
  font-family: 'Inter', 'Noto Sans KR', sans-serif;
215
215
  font-size: 13px;
216
216
  font-weight: 600;
217
+ text-decoration: none;
217
218
  cursor: pointer;
218
219
  transition:
219
220
  background 0.15s ease,
@@ -280,6 +281,7 @@
280
281
  color: #6b6560;
281
282
  font-size: 10px;
282
283
  font-weight: 600;
284
+ text-decoration: none;
283
285
  font-family: 'Inter', 'Noto Sans KR', sans-serif;
284
286
  cursor: pointer;
285
287
  transition: color 0.15s ease;
@@ -428,16 +430,12 @@
428
430
  <span>MAMA</span>
429
431
  </a>
430
432
  <div class="mama-nav-items">
433
+ <a class="mama-nav-item" href="/ui" title="Operator Board (beta)">
434
+ <i data-lucide="zap"></i>
435
+ <span>Operator (beta)</span>
436
+ </a>
431
437
  <button
432
438
  class="mama-nav-item mama-nav-active"
433
- data-tab="dashboard"
434
- onclick="window.switchTab && window.switchTab('dashboard')"
435
- >
436
- <i data-lucide="layout-dashboard"></i>
437
- <span>Dashboard</span>
438
- </button>
439
- <button
440
- class="mama-nav-item"
441
439
  data-tab="feed"
442
440
  onclick="window.switchTab && window.switchTab('feed')"
443
441
  >
@@ -1244,7 +1242,7 @@
1244
1242
  <span
1245
1243
  id="chat-tab-indicator"
1246
1244
  class="text-[10px] bg-gray-100 text-gray-500 px-1.5 py-0.5 rounded-md font-medium"
1247
- >Dashboard</span
1245
+ >Feed</span
1248
1246
  >
1249
1247
  <span
1250
1248
  class="status-indicator w-1.5 h-1.5 rounded-full bg-gray-300 flex-shrink-0"
@@ -1471,14 +1469,6 @@
1471
1469
 
1472
1470
  <!-- Mobile Bottom Tab Bar -->
1473
1471
  <div id="mama-mobile-tabs">
1474
- <button
1475
- class="mama-mobile-tab mama-nav-active"
1476
- data-tab="dashboard"
1477
- onclick="window.switchTab && window.switchTab('dashboard')"
1478
- >
1479
- <i data-lucide="layout-dashboard"></i>
1480
- <span>Home</span>
1481
- </button>
1482
1472
  <button
1483
1473
  class="mama-mobile-tab"
1484
1474
  data-tab="chat"
@@ -1504,7 +1494,7 @@
1504
1494
  <span>Memory</span>
1505
1495
  </button>
1506
1496
  <button
1507
- class="mama-mobile-tab"
1497
+ class="mama-mobile-tab mama-nav-active"
1508
1498
  data-tab="more"
1509
1499
  onclick="window.toggleMobileMore && window.toggleMobileMore()"
1510
1500
  >
@@ -2030,7 +2020,7 @@ export MAMA_AUTH_TOKEN="your-secure-token-here"</pre
2030
2020
  };
2031
2021
 
2032
2022
  const STATE = {
2033
- currentTab: 'dashboard',
2023
+ currentTab: 'feed',
2034
2024
  theme: 'dark',
2035
2025
  graphLoaded: false,
2036
2026
  };
@@ -2041,11 +2031,6 @@ export MAMA_AUTH_TOKEN="your-secure-token-here"</pre
2041
2031
  // Close mobile More menu if open
2042
2032
  const moreMenu = document.getElementById('mama-mobile-more');
2043
2033
  if (moreMenu) moreMenu.style.display = 'none';
2044
- const moreBtn = document.querySelector('#mama-mobile-tabs [data-tab="more"]');
2045
- const overflowTabs = ['feed', 'wiki', 'logs', 'settings'];
2046
- if (moreBtn) {
2047
- moreBtn.classList.toggle('mama-nav-active', overflowTabs.includes(tabName));
2048
- }
2049
2034
 
2050
2035
  // Also highlight the source tab in More menu if it was selected from there
2051
2036
  document.querySelectorAll('#mama-mobile-more .mama-mobile-tab').forEach((btn) => {
@@ -2067,6 +2052,11 @@ export MAMA_AUTH_TOKEN="your-secure-token-here"</pre
2067
2052
  document.querySelectorAll('#mama-mobile-tabs .mama-mobile-tab').forEach((btn) => {
2068
2053
  btn.classList.toggle('mama-nav-active', btn.dataset.tab === tabName);
2069
2054
  });
2055
+ const moreBtn = document.querySelector('#mama-mobile-tabs [data-tab="more"]');
2056
+ const overflowTabs = ['feed', 'wiki', 'logs', 'settings'];
2057
+ if (moreBtn) {
2058
+ moreBtn.classList.toggle('mama-nav-active', overflowTabs.includes(tabName));
2059
+ }
2070
2060
 
2071
2061
  // Legacy: update any remaining [data-tab] buttons outside sidebar/mobile
2072
2062
  document.querySelectorAll('[data-tab]').forEach((btn) => {
@@ -3043,8 +3033,8 @@ export MAMA_AUTH_TOKEN="your-secure-token-here"</pre
3043
3033
  initTheme();
3044
3034
  // Initialize floating chat panel bindings (session init is lazy, on first open)
3045
3035
  chat.initFloating();
3046
- // Default to dashboard tab
3047
- switchTab('dashboard');
3036
+ // Default to feed tab
3037
+ switchTab('feed');
3048
3038
  });
3049
3039
 
3050
3040
  // Listen for postMessage from skill deployment
@@ -3118,7 +3108,7 @@ Be friendly and concise.`,
3118
3108
  };
3119
3109
 
3120
3110
  window.askContextHelp = function () {
3121
- const currentTab = STATE.currentTab || 'dashboard';
3111
+ const currentTab = STATE.currentTab || 'feed';
3122
3112
  const prompt = TAB_HELP_PROMPTS[currentTab];
3123
3113
  if (!prompt) return;
3124
3114