@monoes/monomindcli 1.10.28 → 1.10.30

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 (87) hide show
  1. package/.claude/helpers/auto-memory-hook.mjs +39 -4
  2. package/.claude/helpers/handlers/edit-handler.cjs +145 -0
  3. package/.claude/helpers/handlers/route-handler.cjs +393 -0
  4. package/.claude/helpers/handlers/session-handler.cjs +167 -0
  5. package/.claude/helpers/handlers/session-restore-handler.cjs +343 -0
  6. package/.claude/helpers/handlers/task-handler.cjs +329 -0
  7. package/.claude/helpers/hook-handler.cjs +114 -2247
  8. package/.claude/helpers/intelligence.cjs +21 -2
  9. package/.claude/helpers/learning-service.mjs +166 -8
  10. package/.claude/helpers/memory-palace.cjs +72 -12
  11. package/.claude/helpers/router.cjs +79 -5
  12. package/.claude/helpers/statusline.cjs +193 -399
  13. package/.claude/helpers/utils/micro-agents.cjs +338 -0
  14. package/.claude/helpers/utils/monograph.cjs +349 -0
  15. package/.claude/helpers/utils/telemetry.cjs +144 -0
  16. package/.claude/skills/agent-browser-testing/SKILL.md +3 -2
  17. package/.claude/skills/monomind/browse-agentcore.md +116 -0
  18. package/.claude/skills/monomind/browse-electron.md +189 -0
  19. package/.claude/skills/monomind/browse-qa.md +229 -0
  20. package/.claude/skills/monomind/browse-references/authentication.md +162 -0
  21. package/.claude/skills/monomind/browse-references/trust-boundaries.md +41 -0
  22. package/.claude/skills/monomind/browse-references/video-recording.md +84 -0
  23. package/.claude/skills/monomind/browse-slack.md +189 -0
  24. package/.claude/skills/monomind/browse-vercel.md +240 -0
  25. package/.claude/skills/monomind/browse.md +724 -0
  26. package/dist/src/browser/actions.d.ts +13 -0
  27. package/dist/src/browser/actions.d.ts.map +1 -0
  28. package/dist/src/browser/actions.js +201 -0
  29. package/dist/src/browser/actions.js.map +1 -0
  30. package/dist/src/browser/browser.d.ts +14 -0
  31. package/dist/src/browser/browser.d.ts.map +1 -0
  32. package/dist/src/browser/browser.js +198 -0
  33. package/dist/src/browser/browser.js.map +1 -0
  34. package/dist/src/browser/cdp.d.ts +17 -0
  35. package/dist/src/browser/cdp.d.ts.map +1 -0
  36. package/dist/src/browser/cdp.js +106 -0
  37. package/dist/src/browser/cdp.js.map +1 -0
  38. package/dist/src/browser/index.d.ts +11 -0
  39. package/dist/src/browser/index.d.ts.map +1 -0
  40. package/dist/src/browser/index.js +11 -0
  41. package/dist/src/browser/index.js.map +1 -0
  42. package/dist/src/browser/network.d.ts +11 -0
  43. package/dist/src/browser/network.d.ts.map +1 -0
  44. package/dist/src/browser/network.js +81 -0
  45. package/dist/src/browser/network.js.map +1 -0
  46. package/dist/src/browser/screenshot.d.ts +15 -0
  47. package/dist/src/browser/screenshot.d.ts.map +1 -0
  48. package/dist/src/browser/screenshot.js +36 -0
  49. package/dist/src/browser/screenshot.js.map +1 -0
  50. package/dist/src/browser/session.d.ts +8 -0
  51. package/dist/src/browser/session.d.ts.map +1 -0
  52. package/dist/src/browser/session.js +50 -0
  53. package/dist/src/browser/session.js.map +1 -0
  54. package/dist/src/browser/snapshot.d.ts +12 -0
  55. package/dist/src/browser/snapshot.d.ts.map +1 -0
  56. package/dist/src/browser/snapshot.js +147 -0
  57. package/dist/src/browser/snapshot.js.map +1 -0
  58. package/dist/src/browser/tabs.d.ts +8 -0
  59. package/dist/src/browser/tabs.d.ts.map +1 -0
  60. package/dist/src/browser/tabs.js +25 -0
  61. package/dist/src/browser/tabs.js.map +1 -0
  62. package/dist/src/browser/types.d.ts +109 -0
  63. package/dist/src/browser/types.d.ts.map +1 -0
  64. package/dist/src/browser/types.js +16 -0
  65. package/dist/src/browser/types.js.map +1 -0
  66. package/dist/src/browser/wait.d.ts +4 -0
  67. package/dist/src/browser/wait.d.ts.map +1 -0
  68. package/dist/src/browser/wait.js +122 -0
  69. package/dist/src/browser/wait.js.map +1 -0
  70. package/dist/src/commands/browse.d.ts +8 -0
  71. package/dist/src/commands/browse.d.ts.map +1 -0
  72. package/dist/src/commands/browse.js +573 -0
  73. package/dist/src/commands/browse.js.map +1 -0
  74. package/dist/src/commands/index.d.ts.map +1 -1
  75. package/dist/src/commands/index.js +2 -0
  76. package/dist/src/commands/index.js.map +1 -1
  77. package/dist/src/commands/init.d.ts.map +1 -1
  78. package/dist/src/commands/init.js +25 -1
  79. package/dist/src/commands/init.js.map +1 -1
  80. package/dist/src/init/executor.d.ts.map +1 -1
  81. package/dist/src/init/executor.js +27 -0
  82. package/dist/src/init/executor.js.map +1 -1
  83. package/dist/src/ui/dashboard-v2.html +1692 -0
  84. package/dist/src/ui/server.mjs +15 -1
  85. package/dist/tsconfig.tsbuildinfo +1 -1
  86. package/package.json +2 -1
  87. package/scripts/understand-analyze.mjs +14 -1
@@ -0,0 +1,122 @@
1
+ import { getCurrentUrl } from './browser.js';
2
+ import { evaluateJs } from './actions.js';
3
+ const DEFAULT_TIMEOUT = 30_000;
4
+ const POLL_INTERVAL = 250;
5
+ export async function waitFor(client, sessionId, options) {
6
+ const timeout = options.timeout ?? DEFAULT_TIMEOUT;
7
+ const deadline = Date.now() + timeout;
8
+ if (options.load) {
9
+ await waitForLoad(client, sessionId, options.load, timeout);
10
+ return;
11
+ }
12
+ if (options.url) {
13
+ await waitForUrl(client, sessionId, options.url, deadline);
14
+ return;
15
+ }
16
+ if (options.text) {
17
+ await waitForText(client, sessionId, options.text, deadline);
18
+ return;
19
+ }
20
+ if (options.selector) {
21
+ await waitForSelector(client, sessionId, options.selector, deadline);
22
+ return;
23
+ }
24
+ // Just wait for timeout
25
+ await sleep(timeout);
26
+ }
27
+ async function waitForLoad(client, sessionId, condition, timeout) {
28
+ if (condition === 'networkidle') {
29
+ await waitForNetworkIdle(client, sessionId, 500, timeout);
30
+ return;
31
+ }
32
+ const event = condition === 'load' ? 'Page.loadEventFired' : 'Page.domContentEventFired';
33
+ await Promise.race([
34
+ client.once(event),
35
+ sleep(timeout).then(() => { throw new Error(`Timeout waiting for ${condition}`); }),
36
+ ]);
37
+ }
38
+ async function waitForNetworkIdle(client, sessionId, idleMs, timeout) {
39
+ return new Promise((resolve, reject) => {
40
+ let pending = 0;
41
+ let timer = null;
42
+ const killTimer = setTimeout(() => reject(new Error('Timeout waiting for networkidle')), timeout);
43
+ const settle = () => {
44
+ clearTimeout(killTimer);
45
+ offReq();
46
+ offResp();
47
+ offFail();
48
+ resolve();
49
+ };
50
+ const check = () => {
51
+ if (pending === 0) {
52
+ if (timer)
53
+ clearTimeout(timer);
54
+ timer = setTimeout(settle, idleMs);
55
+ }
56
+ else {
57
+ if (timer) {
58
+ clearTimeout(timer);
59
+ timer = null;
60
+ }
61
+ }
62
+ };
63
+ const offReq = client.on('Network.requestWillBeSent', (_, sid) => {
64
+ if (sid === sessionId) {
65
+ pending++;
66
+ check();
67
+ }
68
+ });
69
+ const offResp = client.on('Network.loadingFinished', (_, sid) => {
70
+ if (sid === sessionId) {
71
+ pending = Math.max(0, pending - 1);
72
+ check();
73
+ }
74
+ });
75
+ const offFail = client.on('Network.loadingFailed', (_, sid) => {
76
+ if (sid === sessionId) {
77
+ pending = Math.max(0, pending - 1);
78
+ check();
79
+ }
80
+ });
81
+ check();
82
+ });
83
+ }
84
+ async function waitForUrl(client, sessionId, pattern, deadline) {
85
+ const regex = globToRegex(pattern);
86
+ while (Date.now() < deadline) {
87
+ const url = await getCurrentUrl(client, sessionId);
88
+ if (regex.test(url))
89
+ return;
90
+ await sleep(POLL_INTERVAL);
91
+ }
92
+ throw new Error(`Timeout waiting for URL matching: ${pattern}`);
93
+ }
94
+ async function waitForText(client, sessionId, text, deadline) {
95
+ while (Date.now() < deadline) {
96
+ const bodyText = await evaluateJs(client, sessionId, 'document.body.innerText');
97
+ if (bodyText.includes(text))
98
+ return;
99
+ await sleep(POLL_INTERVAL);
100
+ }
101
+ throw new Error(`Timeout waiting for text: ${text}`);
102
+ }
103
+ async function waitForSelector(client, sessionId, selector, deadline) {
104
+ while (Date.now() < deadline) {
105
+ const found = await evaluateJs(client, sessionId, `!!document.querySelector(${JSON.stringify(selector)})`);
106
+ if (found)
107
+ return;
108
+ await sleep(POLL_INTERVAL);
109
+ }
110
+ throw new Error(`Timeout waiting for selector: ${selector}`);
111
+ }
112
+ function globToRegex(pattern) {
113
+ const escaped = pattern
114
+ .replace(/[-[\]{}()+?.,\\^$|#\s]/g, '\\$&')
115
+ .replace(/\*\*/g, '.*')
116
+ .replace(/\*/g, '[^/]*');
117
+ return new RegExp(escaped);
118
+ }
119
+ function sleep(ms) {
120
+ return new Promise((r) => setTimeout(r, ms));
121
+ }
122
+ //# sourceMappingURL=wait.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wait.js","sourceRoot":"","sources":["../../../src/browser/wait.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Browse Command — Native browser automation via Chrome DevTools Protocol
3
+ * Provides ref-based element model and token-efficient accessibility snapshots
4
+ */
5
+ import type { Command } from '../types.js';
6
+ declare const browseCommand: Command;
7
+ export default browseCommand;
8
+ //# sourceMappingURL=browse.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browse.d.ts","sourceRoot":"","sources":["../../../src/commands/browse.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAiC,MAAM,aAAa,CAAC;AA2hB1E,QAAA,MAAM,aAAa,EAAE,OAkEpB,CAAC;AAEF,eAAe,aAAa,CAAC"}