mouaif 0.3.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 (116) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +140 -0
  3. package/bin/mouaif.js +281 -0
  4. package/frontend/dist/assets/AgentFilePicker-CcKLJorU.js +1 -0
  5. package/frontend/dist/assets/CliModal-Hs5phmNZ.js +7 -0
  6. package/frontend/dist/assets/DictationPage-BI23lp42.js +2 -0
  7. package/frontend/dist/assets/FileEditor-DDl31c6d.js +2 -0
  8. package/frontend/dist/assets/GitModal-3EC_gpJ5.js +2 -0
  9. package/frontend/dist/assets/Inspector-Ba3R1w04.js +73 -0
  10. package/frontend/dist/assets/SettingsAbout-bvZGDEDw.js +1 -0
  11. package/frontend/dist/assets/SettingsActions-Dk6WX9jv.js +1 -0
  12. package/frontend/dist/assets/SettingsAgents-BNV0MgDB.js +1 -0
  13. package/frontend/dist/assets/SettingsDefaults-DbMmQbzc.js +1 -0
  14. package/frontend/dist/assets/SettingsHiddenContent-BZ2sloH1.js +1 -0
  15. package/frontend/dist/assets/SettingsMcp-DOrfbQd1.js +1 -0
  16. package/frontend/dist/assets/SettingsMcpEdit-BGMQ2CWC.js +3 -0
  17. package/frontend/dist/assets/SettingsMcpRegistry-BywXee_A.js +1 -0
  18. package/frontend/dist/assets/SettingsNotifications-B0LEs11a.js +1 -0
  19. package/frontend/dist/assets/SettingsPricing-BAg33iVF.js +1 -0
  20. package/frontend/dist/assets/SettingsProject-DNrKhCcZ.js +14 -0
  21. package/frontend/dist/assets/SettingsProjects-IqkBfDcm.js +1 -0
  22. package/frontend/dist/assets/SettingsPrompts-BgeiASuk.js +1 -0
  23. package/frontend/dist/assets/SettingsProviders-k0xJN0IK.js +1 -0
  24. package/frontend/dist/assets/SettingsTags-B5kjFdQi.js +1 -0
  25. package/frontend/dist/assets/agentNavigation-BiiCpFz5.js +1 -0
  26. package/frontend/dist/assets/codemirror-Bp6CUUFk.js +30 -0
  27. package/frontend/dist/assets/index-BGvI4n0T.js +61 -0
  28. package/frontend/dist/assets/index-Bgg1gnDf.css +1 -0
  29. package/frontend/dist/assets/index-C1sQFIC-.css +1 -0
  30. package/frontend/dist/assets/index-CANPYzQg.css +1 -0
  31. package/frontend/dist/assets/index-Crn1LdzK.css +1 -0
  32. package/frontend/dist/assets/index-FbCWDPiB.css +1 -0
  33. package/frontend/dist/assets/projectQS-D1cSZ7Gr.js +1 -0
  34. package/frontend/dist/assets/virtual-list-6H9b4K51.js +1 -0
  35. package/frontend/dist/icons/favicon-32.png +0 -0
  36. package/frontend/dist/icons/icon-180-apple.png +0 -0
  37. package/frontend/dist/icons/icon-192.png +0 -0
  38. package/frontend/dist/icons/icon-512.png +0 -0
  39. package/frontend/dist/icons/icon-maskable-512.png +0 -0
  40. package/frontend/dist/index.html +83 -0
  41. package/frontend/dist/manifest.webmanifest +33 -0
  42. package/frontend/dist/sw.js +482 -0
  43. package/package.json +98 -0
  44. package/scripts/patch-zimmerframe.js +58 -0
  45. package/src/access-auth.js +515 -0
  46. package/src/agentFeatures.js +294 -0
  47. package/src/agentFiles.js +164 -0
  48. package/src/agentSkills.js +147 -0
  49. package/src/agents.js +230 -0
  50. package/src/ai-chat.js +21 -0
  51. package/src/ai-endpoints.js +1880 -0
  52. package/src/ai-stream.js +2048 -0
  53. package/src/ai.js +68 -0
  54. package/src/auth.js +391 -0
  55. package/src/chatdb.js +816 -0
  56. package/src/chats.js +275 -0
  57. package/src/custom-actions.js +65 -0
  58. package/src/files.js +431 -0
  59. package/src/hideFileContent.js +327 -0
  60. package/src/http-server.js +535 -0
  61. package/src/index.js +15 -0
  62. package/src/inspector.js +731 -0
  63. package/src/inspectorProfiles.js +503 -0
  64. package/src/live-chat.js +107 -0
  65. package/src/mcp.js +1517 -0
  66. package/src/messages.js +238 -0
  67. package/src/modelList.js +137 -0
  68. package/src/notifications.js +52 -0
  69. package/src/oauth-anthropic.js +280 -0
  70. package/src/oauth-github-copilot.js +417 -0
  71. package/src/oauth-mcp.js +216 -0
  72. package/src/oauth-openrouter.js +285 -0
  73. package/src/package-version.js +20 -0
  74. package/src/projects.js +285 -0
  75. package/src/promptProfiles.js +256 -0
  76. package/src/prompts.js +384 -0
  77. package/src/providerShapes.js +44 -0
  78. package/src/providers/base.js +41 -0
  79. package/src/providers/index.js +25 -0
  80. package/src/push.js +315 -0
  81. package/src/qr.js +192 -0
  82. package/src/restart.js +47 -0
  83. package/src/server-handlers-access.js +306 -0
  84. package/src/server-handlers-actions.js +100 -0
  85. package/src/server-handlers-ai.js +248 -0
  86. package/src/server-handlers-auth.js +273 -0
  87. package/src/server-handlers-chats.js +1436 -0
  88. package/src/server-handlers-git.js +467 -0
  89. package/src/server-handlers-mcp-oauth.js +56 -0
  90. package/src/server-handlers-misc.js +783 -0
  91. package/src/server-handlers-projects.js +289 -0
  92. package/src/server-handlers-prompts.js +259 -0
  93. package/src/server-handlers-push.js +102 -0
  94. package/src/server-handlers-settings.js +406 -0
  95. package/src/server-handlers-tools.js +654 -0
  96. package/src/server-handlers-transcribe.js +399 -0
  97. package/src/server-shared.js +780 -0
  98. package/src/server-web-static.js +191 -0
  99. package/src/settings.js +898 -0
  100. package/src/statusBar.js +541 -0
  101. package/src/tags.js +414 -0
  102. package/src/toolFeedback.js +225 -0
  103. package/src/tools/ask.js +154 -0
  104. package/src/tools/authorization.js +932 -0
  105. package/src/tools/files.js +1150 -0
  106. package/src/tools/progress.js +71 -0
  107. package/src/tools/restart.js +32 -0
  108. package/src/tools/searchEngine.js +957 -0
  109. package/src/tools/shell.js +341 -0
  110. package/src/tools/subagent.js +47 -0
  111. package/src/tools/task.js +234 -0
  112. package/src/tools/webpreview.js +448 -0
  113. package/src/trace.js +103 -0
  114. package/src/transcribe.js +683 -0
  115. package/src/usage.js +389 -0
  116. package/src/util.js +151 -0
@@ -0,0 +1,71 @@
1
+ 'use strict';
2
+
3
+ // Native `report_progress` tool — lets the model report real-time
4
+ // progress on a long-running operation. The tool call itself is a
5
+ // no-op for the server (it just validates args and returns the
6
+ // structured data), but the dispatch loop emits a `progress_update`
7
+ // SSE event so the frontend can show a live progress bar.
8
+ //
9
+ // The model calls this periodically with { title, current, total,
10
+ // status, message } and the frontend renders a progress bar
11
+ // notification.
12
+
13
+ const MAX_TITLE_CHARS = 120;
14
+ const MAX_MESSAGE_CHARS = 500;
15
+
16
+ const SPEC = {
17
+ type: 'function',
18
+ function: {
19
+ name: 'report_progress',
20
+ description: 'Report real-time progress on a long-running operation. Call this periodically to show a progress bar on the frontend.',
21
+ parameters: {
22
+ type: 'object',
23
+ properties: {
24
+ title: { type: 'string', description: 'Short description of the operation (e.g. "Building project")' },
25
+ current: { type: 'number', description: 'Current progress value (0-based)' },
26
+ total: { type: 'number', description: 'Maximum progress value' },
27
+ status: { type: 'string', enum: ['running', 'completed', 'failed'], description: 'Current status of the operation' },
28
+ message: { type: 'string', description: 'Optional status message shown below the progress bar' }
29
+ },
30
+ required: ['title', 'current', 'total'],
31
+ additionalProperties: false
32
+ }
33
+ }
34
+ };
35
+
36
+ function trimString(value, max) {
37
+ if (typeof value !== 'string') return '';
38
+ const s = value.trim();
39
+ if (s.length <= max) return s;
40
+ return s.slice(0, max);
41
+ }
42
+
43
+ function validateArgs(args) {
44
+ if (!args || typeof args !== 'object') {
45
+ const e = new Error('args is required'); e.code = 'EBADINPUT'; throw e;
46
+ }
47
+ const title = trimString(args.title, MAX_TITLE_CHARS);
48
+ if (!title) {
49
+ const e = new Error('title is required'); e.code = 'EBADINPUT'; throw e;
50
+ }
51
+ const current = Number.isFinite(args.current) ? Math.round(args.current) : 0;
52
+ const total = Number.isFinite(args.total) ? Math.round(args.total) : 100;
53
+ if (total <= 0) {
54
+ const e = new Error('total must be positive'); e.code = 'EBADINPUT'; throw e;
55
+ }
56
+ const status = (args.status === 'completed' || args.status === 'failed') ? args.status : 'running';
57
+ const message = trimString(args.message, MAX_MESSAGE_CHARS);
58
+ return { title, current: Math.max(0, current), total, status, message };
59
+ }
60
+
61
+ function buildResult(args) {
62
+ return { ok: true, content: JSON.stringify(args), result: args };
63
+ }
64
+
65
+ module.exports = {
66
+ SPEC,
67
+ validateArgs,
68
+ buildResult,
69
+ MAX_TITLE_CHARS,
70
+ MAX_MESSAGE_CHARS
71
+ };
@@ -0,0 +1,32 @@
1
+ 'use strict';
2
+ // Native restart_app tool. It schedules the same graceful worker relaunch as
3
+ // POST /api/restart, without making an authenticated loopback HTTP request.
4
+ const { requestRestart } = require('../restart.js');
5
+
6
+ const SPEC = {
7
+ type: 'function',
8
+ function: {
9
+ name: 'restart_app',
10
+ description: 'Gracefully restart the mouaif app from this chat without stopping its supervisor. Use when the user asks to restart, reload, or apply server-side code changes. The current response is saved before the worker relaunches.',
11
+ parameters: {
12
+ type: 'object',
13
+ properties: {
14
+ reason: { type: 'string', description: 'Short reason for the restart.' }
15
+ },
16
+ additionalProperties: false
17
+ }
18
+ }
19
+ };
20
+
21
+ function runRestart(args, options = {}) {
22
+ const result = requestRestart({
23
+ lifecycle: options.lifecycle,
24
+ reason: args && args.reason,
25
+ // Leave enough time for tool_result and the chat stream to flush and save.
26
+ delayMs: 1000,
27
+ defaultDelayMs: 1000
28
+ });
29
+ return { ok: !!result.ok, content: JSON.stringify(result), result };
30
+ }
31
+
32
+ module.exports = { SPEC, runRestart };