@monoes/monomindcli 2.11.9 → 2.11.11

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/.claude/skills/mastermind/SKILL.md +13 -0
  2. package/README.md +1 -1
  3. package/bin/cli.js +17 -8
  4. package/dist/src/commands/crash-reporting.d.ts +3 -1
  5. package/dist/src/commands/crash-reporting.d.ts.map +1 -1
  6. package/dist/src/commands/crash-reporting.js +26 -10
  7. package/dist/src/commands/crash-reporting.js.map +1 -1
  8. package/dist/src/commands/doctor-env-checks.d.ts +9 -0
  9. package/dist/src/commands/doctor-env-checks.d.ts.map +1 -1
  10. package/dist/src/commands/doctor-env-checks.js +31 -0
  11. package/dist/src/commands/doctor-env-checks.js.map +1 -1
  12. package/dist/src/commands/doctor-monoes-checks.d.ts +12 -0
  13. package/dist/src/commands/doctor-monoes-checks.d.ts.map +1 -1
  14. package/dist/src/commands/doctor-monoes-checks.js +142 -1
  15. package/dist/src/commands/doctor-monoes-checks.js.map +1 -1
  16. package/dist/src/commands/doctor.d.ts.map +1 -1
  17. package/dist/src/commands/doctor.js +11 -3
  18. package/dist/src/commands/doctor.js.map +1 -1
  19. package/dist/src/commands/mcp.d.ts.map +1 -1
  20. package/dist/src/commands/mcp.js +16 -0
  21. package/dist/src/commands/mcp.js.map +1 -1
  22. package/dist/src/commands/org-observe.d.ts.map +1 -1
  23. package/dist/src/commands/org-observe.js +29 -4
  24. package/dist/src/commands/org-observe.js.map +1 -1
  25. package/dist/src/commands/org.d.ts.map +1 -1
  26. package/dist/src/commands/org.js +12 -3
  27. package/dist/src/commands/org.js.map +1 -1
  28. package/dist/src/init/executor.d.ts.map +1 -1
  29. package/dist/src/init/executor.js +17 -0
  30. package/dist/src/init/executor.js.map +1 -1
  31. package/dist/src/init/mcp-generator.d.ts +2 -7
  32. package/dist/src/init/mcp-generator.d.ts.map +1 -1
  33. package/dist/src/init/mcp-generator.js +15 -17
  34. package/dist/src/init/mcp-generator.js.map +1 -1
  35. package/dist/src/init/write-claude.d.ts.map +1 -1
  36. package/dist/src/init/write-claude.js +9 -0
  37. package/dist/src/init/write-claude.js.map +1 -1
  38. package/dist/src/init/write-runtime-config.d.ts +8 -0
  39. package/dist/src/init/write-runtime-config.d.ts.map +1 -1
  40. package/dist/src/init/write-runtime-config.js +69 -14
  41. package/dist/src/init/write-runtime-config.js.map +1 -1
  42. package/dist/src/mcp/monoes-mcp-entry.mjs +152 -0
  43. package/dist/src/mcp/monoes-proxy.d.ts +48 -0
  44. package/dist/src/mcp/monoes-proxy.d.ts.map +1 -0
  45. package/dist/src/mcp/monoes-proxy.js +240 -0
  46. package/dist/src/mcp/monoes-proxy.js.map +1 -0
  47. package/dist/src/orgrt/completion-gate.d.ts +58 -0
  48. package/dist/src/orgrt/completion-gate.d.ts.map +1 -0
  49. package/dist/src/orgrt/completion-gate.js +86 -0
  50. package/dist/src/orgrt/completion-gate.js.map +1 -0
  51. package/dist/src/orgrt/daemon.d.ts +15 -0
  52. package/dist/src/orgrt/daemon.d.ts.map +1 -1
  53. package/dist/src/orgrt/daemon.js +194 -12
  54. package/dist/src/orgrt/daemon.js.map +1 -1
  55. package/dist/src/orgrt/file-roots.d.ts +57 -0
  56. package/dist/src/orgrt/file-roots.d.ts.map +1 -0
  57. package/dist/src/orgrt/file-roots.js +100 -0
  58. package/dist/src/orgrt/file-roots.js.map +1 -0
  59. package/dist/src/orgrt/policy-git.d.ts.map +1 -1
  60. package/dist/src/orgrt/policy-git.js +122 -4
  61. package/dist/src/orgrt/policy-git.js.map +1 -1
  62. package/dist/src/orgrt/policy.d.ts +13 -1
  63. package/dist/src/orgrt/policy.d.ts.map +1 -1
  64. package/dist/src/orgrt/policy.js +60 -11
  65. package/dist/src/orgrt/policy.js.map +1 -1
  66. package/dist/src/orgrt/reporting.d.ts +56 -0
  67. package/dist/src/orgrt/reporting.d.ts.map +1 -1
  68. package/dist/src/orgrt/reporting.js +42 -3
  69. package/dist/src/orgrt/reporting.js.map +1 -1
  70. package/dist/src/orgrt/role-sandbox.d.ts.map +1 -1
  71. package/dist/src/orgrt/role-sandbox.js +19 -49
  72. package/dist/src/orgrt/role-sandbox.js.map +1 -1
  73. package/dist/src/orgrt/scheduler-integration.d.ts.map +1 -1
  74. package/dist/src/orgrt/scheduler-integration.js +4 -2
  75. package/dist/src/orgrt/scheduler-integration.js.map +1 -1
  76. package/dist/src/orgrt/session.d.ts +5 -2
  77. package/dist/src/orgrt/session.d.ts.map +1 -1
  78. package/dist/src/orgrt/session.js +51 -7
  79. package/dist/src/orgrt/session.js.map +1 -1
  80. package/dist/src/orgrt/task-dag.d.ts +11 -0
  81. package/dist/src/orgrt/task-dag.d.ts.map +1 -1
  82. package/dist/src/orgrt/task-dag.js +19 -0
  83. package/dist/src/orgrt/task-dag.js.map +1 -1
  84. package/dist/src/orgrt/types.d.ts +6 -0
  85. package/dist/src/orgrt/types.d.ts.map +1 -1
  86. package/dist/src/orgrt/types.js +10 -0
  87. package/dist/src/orgrt/types.js.map +1 -1
  88. package/dist/src/prompt.d.ts.map +1 -1
  89. package/dist/src/prompt.js +14 -0
  90. package/dist/src/prompt.js.map +1 -1
  91. package/dist/src/services/crash-consent.d.ts +35 -0
  92. package/dist/src/services/crash-consent.d.ts.map +1 -0
  93. package/dist/src/services/crash-consent.js +100 -0
  94. package/dist/src/services/crash-consent.js.map +1 -0
  95. package/dist/src/services/crash-lock.d.ts +22 -0
  96. package/dist/src/services/crash-lock.d.ts.map +1 -0
  97. package/dist/src/services/crash-lock.js +86 -0
  98. package/dist/src/services/crash-lock.js.map +1 -0
  99. package/dist/src/services/crash-race-timeout.d.ts +13 -0
  100. package/dist/src/services/crash-race-timeout.d.ts.map +1 -0
  101. package/dist/src/services/crash-race-timeout.js +15 -0
  102. package/dist/src/services/crash-race-timeout.js.map +1 -0
  103. package/dist/src/services/crash-reporter.d.ts +12 -4
  104. package/dist/src/services/crash-reporter.d.ts.map +1 -1
  105. package/dist/src/services/crash-reporter.js +105 -129
  106. package/dist/src/services/crash-reporter.js.map +1 -1
  107. package/dist/src/ui/dashboard.html +122 -0
  108. package/dist/src/ui/mastermind-diagram-fallback.html +14 -0
  109. package/dist/src/ui/orgs.html +12 -0
  110. package/dist/src/ui/routes-monoes.mjs +105 -21
  111. package/dist/src/utils/redaction.d.ts +17 -0
  112. package/dist/src/utils/redaction.d.ts.map +1 -1
  113. package/dist/src/utils/redaction.js +52 -7
  114. package/dist/src/utils/redaction.js.map +1 -1
  115. package/dist/tsconfig.tsbuildinfo +1 -1
  116. package/package.json +4 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crash-race-timeout.js","sourceRoot":"","sources":["../../../src/services/crash-race-timeout.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAAc;IAClD,OAAO,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;AACjC,CAAC"}
@@ -6,10 +6,20 @@
6
6
  * from their own panic/recover handlers so redaction, dedup, and GitHub auth
7
7
  * logic live in exactly one place instead of being reimplemented per language.
8
8
  *
9
- * Default: ON (files real GitHub issues on crash). Opt out with
10
- * `monomind crash-reporting disable`.
9
+ * Consent is asked once, on the first interactive crash (a local report path
10
+ * is shown before asking; default answer is No). Until you've answered, a
11
+ * non-interactive crash (CI, agents — most real runs) never asks and only
12
+ * saves locally, never filing. Once you've explicitly chosen — via the
13
+ * prompt or `monomind crash-reporting enable`/`disable` — that answer is
14
+ * used every time, interactive or not; `monomind crash-reporting status`
15
+ * shows the current state.
16
+ *
17
+ * Consent state and the interactive prompt live in ./crash-consent.ts; the
18
+ * advisory lock around the ledger lives in ./crash-lock.ts.
11
19
  */
12
20
  import { redact } from '../utils/redaction.js';
21
+ export type { ConsentState } from './crash-consent.js';
22
+ export { getConsentState, setEnabled } from './crash-consent.js';
13
23
  export interface CrashReportInput {
14
24
  /** e.g. "monoes/monomind", "monoes/mono-agent" */
15
25
  repo: string;
@@ -24,8 +34,6 @@ export interface CrashReportResult {
24
34
  path?: string;
25
35
  message: string;
26
36
  }
27
- export declare function isEnabled(): boolean;
28
- export declare function setEnabled(enabled: boolean): void;
29
37
  /**
30
38
  * Strip obvious secrets/PII before anything gets sent to a public GitHub repo.
31
39
  * Not a substitute for careful callers — this is a last-resort net.
@@ -1 +1 @@
1
- {"version":3,"file":"crash-reporter.d.ts","sourceRoot":"","sources":["../../../src/services/crash-reporter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAiBH,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAoB/C,MAAM,WAAW,gBAAgB;IAC/B,kDAAkD;IAClD,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,6FAA6F;IAC7F,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,eAAe,GAAG,UAAU,GAAG,cAAc,GAAG,OAAO,CAAC;IAC1F,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAwCD,wBAAgB,SAAS,IAAI,OAAO,CASnC;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAEjD;AAED;;;;;;;;GAQG;AACH,OAAO,EAAE,MAAM,EAAE,CAAC;AAkBlB,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAGpE;AAwMD;;;;;;GAMG;AACH,wBAAsB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA0GrF"}
1
+ {"version":3,"file":"crash-reporter.d.ts","sourceRoot":"","sources":["../../../src/services/crash-reporter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAOH,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAa/C,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAWjE,MAAM,WAAW,gBAAgB;IAC/B,kDAAkD;IAClD,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,6FAA6F;IAC7F,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,eAAe,GAAG,UAAU,GAAG,cAAc,GAAG,OAAO,CAAC;IAC1F,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAuBD;;;;;;;;GAQG;AACH,OAAO,EAAE,MAAM,EAAE,CAAC;AAkBlB,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAGpE;AA0JD;;;;;;GAMG;AACH,wBAAsB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAuKrF"}
@@ -6,68 +6,32 @@
6
6
  * from their own panic/recover handlers so redaction, dedup, and GitHub auth
7
7
  * logic live in exactly one place instead of being reimplemented per language.
8
8
  *
9
- * Default: ON (files real GitHub issues on crash). Opt out with
10
- * `monomind crash-reporting disable`.
9
+ * Consent is asked once, on the first interactive crash (a local report path
10
+ * is shown before asking; default answer is No). Until you've answered, a
11
+ * non-interactive crash (CI, agents — most real runs) never asks and only
12
+ * saves locally, never filing. Once you've explicitly chosen — via the
13
+ * prompt or `monomind crash-reporting enable`/`disable` — that answer is
14
+ * used every time, interactive or not; `monomind crash-reporting status`
15
+ * shows the current state.
16
+ *
17
+ * Consent state and the interactive prompt live in ./crash-consent.ts; the
18
+ * advisory lock around the ledger lives in ./crash-lock.ts.
11
19
  */
12
20
  import { execFile } from 'node:child_process';
13
21
  import { createHash } from 'node:crypto';
14
- import { closeSync, existsSync, mkdirSync, openSync, readFileSync, statSync, unlinkSync, writeFileSync, } from 'node:fs';
15
- import { homedir } from 'node:os';
22
+ import { existsSync, mkdirSync, unlinkSync, writeFileSync } from 'node:fs';
16
23
  import { join } from 'node:path';
17
24
  import { promisify } from 'node:util';
18
25
  import { redact } from '../utils/redaction.js';
26
+ import { ensureStateDir, getConsentState, isInteractiveTty, promptForConsent, readJsonSafe, STATE_DIR, setEnabled, writeJsonSafe, } from './crash-consent.js';
27
+ import { acquireLock, releaseLock } from './crash-lock.js';
28
+ export { getConsentState, setEnabled } from './crash-consent.js';
19
29
  const execFileAsync = promisify(execFile);
20
- const STATE_DIR = join(homedir(), '.monomind');
21
- const CONFIG_PATH = join(STATE_DIR, 'crash-reporting.json');
22
30
  const LEDGER_PATH = join(STATE_DIR, 'crash-reports.json');
23
31
  const PENDING_DIR = join(STATE_DIR, 'pending-reports');
24
- const LOCK_PATH = join(STATE_DIR, 'crash-reports.lock');
25
32
  const DEDUP_WINDOW_MS = 30 * 24 * 60 * 60 * 1000; // 30 days
26
- // Worst-case critical section is ~28s (5s hasGhAuth + 8s upstream search + 15s
27
- // issue create) — stale threshold needs real margin above that so a slow-but-
28
- // legitimate holder never gets its lock stolen mid-operation.
29
- const LOCK_STALE_MS = 60 * 1000;
30
- const LOCK_WAIT_MS = 3 * 1000; // bounded poll for a concurrent holder to finish — closes the
31
- // near-simultaneous-crash race without blocking the handler for long
32
33
  const RATE_LIMIT_WINDOW_MS = 60 * 60 * 1000; // 1 hour
33
34
  const RATE_LIMIT_MAX_PER_REPO = 5; // circuit breaker independent of per-signature dedup
34
- function ensureStateDir() {
35
- if (!existsSync(STATE_DIR))
36
- mkdirSync(STATE_DIR, { recursive: true });
37
- }
38
- function readJsonSafe(path, fallback) {
39
- try {
40
- if (!existsSync(path))
41
- return fallback;
42
- return JSON.parse(readFileSync(path, 'utf8'));
43
- }
44
- catch {
45
- return fallback;
46
- }
47
- }
48
- function writeJsonSafe(path, data) {
49
- try {
50
- ensureStateDir();
51
- writeFileSync(path, JSON.stringify(data, null, 2), 'utf8');
52
- }
53
- catch {
54
- // best-effort — a failed write here shouldn't crash the crash reporter
55
- }
56
- }
57
- export function isEnabled() {
58
- // Env override, so a measurement harness can switch telemetry off for the
59
- // duration of a run it intends to make claims about. `monomind doc eval`
60
- // sets this: its "zero network calls" verdict must describe the retrieval
61
- // path, not merely the fact that nothing happened to crash.
62
- const env = process.env.MONOMIND_CRASH_REPORTING;
63
- if (env && ['0', 'off', 'false', 'no'].includes(env.toLowerCase()))
64
- return false;
65
- const config = readJsonSafe(CONFIG_PATH, { enabled: true });
66
- return config.enabled !== false;
67
- }
68
- export function setEnabled(enabled) {
69
- writeJsonSafe(CONFIG_PATH, { enabled });
70
- }
71
35
  /**
72
36
  * Strip obvious secrets/PII before anything gets sent to a public GitHub repo.
73
37
  * Not a substitute for careful callers — this is a last-resort net.
@@ -101,7 +65,11 @@ function loadLedger() {
101
65
  const raw = readJsonSafe(LEDGER_PATH, {});
102
66
  // Defensive defaults — also covers the pre-rate-limiting ledger format
103
67
  // (a flat signature->entry map with no `bySignature` wrapper).
104
- return { bySignature: raw.bySignature ?? {}, filedAtByRepo: raw.filedAtByRepo ?? {} };
68
+ return {
69
+ bySignature: raw.bySignature ?? {},
70
+ filedAtByRepo: raw.filedAtByRepo ?? {},
71
+ localOnly: raw.localOnly ?? {},
72
+ };
105
73
  }
106
74
  function saveLedger(ledger) {
107
75
  writeJsonSafe(LEDGER_PATH, ledger);
@@ -134,74 +102,6 @@ function recordFiled(ledger, signature, repo, url, countsTowardRateLimit) {
134
102
  ledger.filedAtByRepo[repo] = recent;
135
103
  }
136
104
  }
137
- function sleep(ms) {
138
- return new Promise((resolve) => setTimeout(resolve, ms));
139
- }
140
- /** Tries once to atomically create the lock file with an ownership token. */
141
- function tryAcquireOnce(token) {
142
- ensureStateDir();
143
- try {
144
- const fd = openSync(LOCK_PATH, 'wx');
145
- writeFileSync(fd, token);
146
- closeSync(fd);
147
- return true;
148
- }
149
- catch {
150
- return false;
151
- }
152
- }
153
- /**
154
- * Best-effort advisory lock around the ledger's check-then-write sequence,
155
- * to close the race where two near-simultaneous crashes (e.g. a supervisor
156
- * restarting a process that panics on every startup) both pass the dedup
157
- * check before either records its result, filing duplicate issues.
158
- *
159
- * Returns an ownership token if acquired (pass to releaseLock so it only ever
160
- * removes its OWN lock, never one a stale-recovery elsewhere already
161
- * re-acquired), or null if not acquired — callers proceed unlocked rather
162
- * than block indefinitely, since a lock miss only reopens the same race this
163
- * exists to narrow, not something worth ever hanging a crash handler over.
164
- */
165
- async function acquireLock() {
166
- const token = `${process.pid}-${Date.now()}-${Math.random().toString(36).slice(2)}`;
167
- if (tryAcquireOnce(token))
168
- return token;
169
- // Bounded poll: closes the race for genuinely-simultaneous crashes (the
170
- // common real case — e.g. two crash handlers firing within the same
171
- // second) without blocking the handler for the full worst-case critical
172
- // section duration.
173
- const deadline = Date.now() + LOCK_WAIT_MS;
174
- while (Date.now() < deadline) {
175
- await sleep(150);
176
- if (tryAcquireOnce(token))
177
- return token;
178
- }
179
- // Still held — check staleness (crashed holder that never released it).
180
- try {
181
- const age = Date.now() - statSync(LOCK_PATH).mtimeMs;
182
- if (age > LOCK_STALE_MS) {
183
- unlinkSync(LOCK_PATH);
184
- if (tryAcquireOnce(token))
185
- return token;
186
- }
187
- }
188
- catch {
189
- // lock disappeared or another race — fall through to unlocked
190
- }
191
- return null;
192
- }
193
- function releaseLock(token) {
194
- if (!token)
195
- return;
196
- try {
197
- if (readFileSync(LOCK_PATH, 'utf8') === token)
198
- unlinkSync(LOCK_PATH);
199
- // else: someone else's lock (ours was stolen after going stale) — leave it alone
200
- }
201
- catch {
202
- // already gone — fine
203
- }
204
- }
205
105
  async function hasGhAuth() {
206
106
  try {
207
107
  await execFileAsync('gh', ['auth', 'status'], { timeout: 5000 });
@@ -270,6 +170,23 @@ function saveLocally(repo, title, body) {
270
170
  writeFileSync(path, `# ${title}\n\nRepo: ${repo}\n\n${body}\n`, 'utf8');
271
171
  return path;
272
172
  }
173
+ /**
174
+ * Removes the local copy saved before the consent prompt once the same
175
+ * crash has actually been filed upstream — otherwise a Yes answer leaves
176
+ * that pre-prompt file behind forever even though the issue now lives on
177
+ * GitHub. Best-effort and silent: this runs inside a crash handler, which
178
+ * must not throw, and a leftover local file is a cosmetic issue at worst.
179
+ */
180
+ function discardPreSavedCopy(path) {
181
+ if (!path)
182
+ return;
183
+ try {
184
+ unlinkSync(path);
185
+ }
186
+ catch {
187
+ // already gone, or never existed — fine either way
188
+ }
189
+ }
273
190
  /**
274
191
  * Report a crash. Never throws — always resolves to a result the caller can
275
192
  * log and move on from, since this runs inside a crash handler. Every step
@@ -279,13 +196,13 @@ function saveLocally(repo, title, body) {
279
196
  */
280
197
  export async function reportCrash(input) {
281
198
  let lockToken = null;
199
+ // Set only when the unanswered+TTY branch below saves a local copy before
200
+ // prompting. Reused by the filing pipeline instead of saving a second
201
+ // time, and cleaned up on a successful file (see the two `created`
202
+ // branches) — otherwise a Yes answer can leave an orphaned duplicate on
203
+ // disk forever, or write two files for one crash on a filing failure.
204
+ let preSavedPath;
282
205
  try {
283
- if (!isEnabled()) {
284
- return {
285
- status: 'disabled',
286
- message: 'Crash reporting is disabled (monomind crash-reporting enable to turn back on).',
287
- };
288
- }
289
206
  const title = redact(input.title).slice(0, 250);
290
207
  const body = redact(input.body).slice(0, 60_000);
291
208
  // Run caller-supplied signatures through the same digit/hex/address
@@ -298,6 +215,63 @@ export async function reportCrash(input) {
298
215
  .digest('hex')
299
216
  .slice(0, 16)
300
217
  : computeSignature(input.repo, title);
218
+ // The consent gate lives here, inside reportCrash() itself, rather than
219
+ // at a call site — there are two entry points (monomind's own
220
+ // uncaughtException/unhandledRejection handlers in bin/cli.js, and the
221
+ // hidden `monomind report-crash` command mono-agent/monotask/mono-clip
222
+ // shell out to). A gate at only one of them leaves the other wide open.
223
+ const state = getConsentState();
224
+ if (state === 'disabled') {
225
+ return {
226
+ status: 'disabled',
227
+ message: 'Crash reporting is disabled (monomind crash-reporting enable to turn back on).',
228
+ };
229
+ }
230
+ if (state === 'unanswered') {
231
+ if (!isInteractiveTty()) {
232
+ // Most monomind runs are inside agent sessions and CI — non-TTY.
233
+ // Never prompt, never file, never persist a *consent* decision
234
+ // here: this crash stays "unanswered" forever so a later
235
+ // interactive run can still ask. Deferring to "ask next time"
236
+ // would change nothing for the majority of real runs, which never
237
+ // get a next interactive time.
238
+ const ledger = loadLedger();
239
+ const existingLocal = ledger.localOnly[signature];
240
+ if (existingLocal && Date.now() - existingLocal.reportedAt <= DEDUP_WINDOW_MS) {
241
+ // Same signature saved once already this window — a crash-
242
+ // looping agent or CI job would otherwise pile up one .md file
243
+ // per iteration with no bound at all (this path had no dedup or
244
+ // rate limit of any kind, unlike the filing pipeline below).
245
+ return {
246
+ status: 'saved-locally',
247
+ path: existingLocal.path,
248
+ message: `Crash reporting hasn't been configured yet; this crash was already saved locally: ${existingLocal.path}. Run \`monomind crash-reporting enable\` or \`monomind crash-reporting disable\` to choose, or answer the prompt next time this runs interactively.`,
249
+ };
250
+ }
251
+ const path = saveLocally(input.repo, title, body);
252
+ ledger.localOnly[signature] = { path, reportedAt: Date.now() };
253
+ saveLedger(ledger);
254
+ return {
255
+ status: 'saved-locally',
256
+ path,
257
+ message: `Crash reporting hasn't been configured yet, so this crash was only saved locally (no network call): ${path}. Run \`monomind crash-reporting enable\` or \`monomind crash-reporting disable\` to choose, or answer the prompt next time this runs interactively.`,
258
+ };
259
+ }
260
+ // Show the local report path before asking, so consent isn't blind.
261
+ preSavedPath = saveLocally(input.repo, title, body);
262
+ const consented = await promptForConsent(input.repo, preSavedPath);
263
+ setEnabled(consented);
264
+ if (!consented) {
265
+ return {
266
+ status: 'saved-locally',
267
+ path: preSavedPath,
268
+ message: `Crash reporting is now disabled (monomind crash-reporting disable). Saved locally to ${preSavedPath}. Re-enable any time with \`monomind crash-reporting enable\`.`,
269
+ };
270
+ }
271
+ // Consented: fall through into the normal filing pipeline below, same
272
+ // as an already-'enabled' state. preSavedPath stays set so that
273
+ // pipeline reuses this file instead of writing a second one.
274
+ }
301
275
  // Bounded wait — closes the near-simultaneous-crash race without ever
302
276
  // blocking the handler for long; proceeds unlocked if still contended.
303
277
  lockToken = await acquireLock();
@@ -314,7 +288,7 @@ export async function reportCrash(input) {
314
288
  return {
315
289
  status: 'rate-limited',
316
290
  message: `Already filed ${RATE_LIMIT_MAX_PER_REPO}+ crash issues on ${input.repo} in the last hour — suppressing further auto-reports to avoid spamming the repo. Saved locally instead.`,
317
- path: saveLocally(input.repo, title, body),
291
+ path: preSavedPath ?? saveLocally(input.repo, title, body),
318
292
  };
319
293
  }
320
294
  const upstreamUrl = await findExistingUpstreamIssue(input.repo, title);
@@ -337,10 +311,11 @@ export async function reportCrash(input) {
337
311
  ledger = loadLedger();
338
312
  recordFiled(ledger, signature, input.repo, url, true);
339
313
  saveLedger(ledger);
314
+ discardPreSavedCopy(preSavedPath);
340
315
  return { status: 'created', url, message: `Filed: ${url}` };
341
316
  }
342
317
  catch (error) {
343
- const path = saveLocally(input.repo, title, body);
318
+ const path = preSavedPath ?? saveLocally(input.repo, title, body);
344
319
  return {
345
320
  status: 'saved-locally',
346
321
  path,
@@ -355,10 +330,11 @@ export async function reportCrash(input) {
355
330
  ledger = loadLedger();
356
331
  recordFiled(ledger, signature, input.repo, url, true);
357
332
  saveLedger(ledger);
333
+ discardPreSavedCopy(preSavedPath);
358
334
  return { status: 'created', url, message: `Filed: ${url}` };
359
335
  }
360
336
  catch (error) {
361
- const path = saveLocally(input.repo, title, body);
337
+ const path = preSavedPath ?? saveLocally(input.repo, title, body);
362
338
  return {
363
339
  status: 'saved-locally',
364
340
  path,
@@ -366,7 +342,7 @@ export async function reportCrash(input) {
366
342
  };
367
343
  }
368
344
  }
369
- const path = saveLocally(input.repo, title, body);
345
+ const path = preSavedPath ?? saveLocally(input.repo, title, body);
370
346
  return {
371
347
  status: 'saved-locally',
372
348
  path,
@@ -1 +1 @@
1
- {"version":3,"file":"crash-reporter.js","sourceRoot":"","sources":["../../../src/services/crash-reporter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"crash-reporter.js","sourceRoot":"","sources":["../../../src/services/crash-reporter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC3E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EACL,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,EACZ,SAAS,EACT,UAAU,EACV,aAAa,GACd,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAG3D,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEjE,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAE1C,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;AAC1D,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;AAEvD,MAAM,eAAe,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,UAAU;AAC5D,MAAM,oBAAoB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,SAAS;AACtD,MAAM,uBAAuB,GAAG,CAAC,CAAC,CAAC,qDAAqD;AAuCxF;;;;;;;;GAQG;AACH,OAAO,EAAE,MAAM,EAAE,CAAC;AAElB;;;;;GAKG;AACH,SAAS,qBAAqB,CAAC,KAAa;IAC1C,OAAO,KAAK;SACT,WAAW,EAAE;SACb,OAAO,CAAC,cAAc,EAAE,QAAQ,CAAC;SACjC,OAAO,CAAC,mBAAmB,EAAE,OAAO,CAAC;SACrC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC;SACtB,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC;SAC7B,IAAI,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,KAAa;IAC1D,MAAM,UAAU,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;IAChD,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,IAAI,IAAI,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACvF,CAAC;AAED,SAAS,UAAU;IACjB,MAAM,GAAG,GAAG,YAAY,CAAkB,WAAW,EAAE,EAAE,CAAC,CAAC;IAC3D,uEAAuE;IACvE,+DAA+D;IAC/D,OAAO;QACL,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,EAAE;QAClC,aAAa,EAAE,GAAG,CAAC,aAAa,IAAI,EAAE;QACtC,SAAS,EAAE,GAAG,CAAC,SAAS,IAAI,EAAE;KAC/B,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,MAAc;IAChC,aAAa,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;AACrC,CAAC;AAED,SAAS,WAAW,CAAC,MAAc,EAAE,SAAiB;IACpD,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IAC5C,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,UAAU,GAAG,eAAe;QAAE,OAAO,IAAI,CAAC;IACjE,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;sEAGsE;AACtE,SAAS,aAAa,CAAC,MAAc,EAAE,IAAY;IACjD,MAAM,MAAM,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CACtD,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,oBAAoB,CAC7C,CAAC;IACF,OAAO,MAAM,CAAC,MAAM,IAAI,uBAAuB,CAAC;AAClD,CAAC;AAED;;;uDAGuD;AACvD,SAAS,WAAW,CAClB,MAAc,EACd,SAAiB,EACjB,IAAY,EACZ,GAAW,EACX,qBAA8B;IAE9B,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;IACtE,IAAI,qBAAqB,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CACtD,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,oBAAoB,CAC7C,CAAC;QACF,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QACxB,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;IACtC,CAAC;AACH,CAAC;AAED,KAAK,UAAU,SAAS;IACtB,IAAI,CAAC;QACH,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACjE,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,2FAA2F;AAC3F,KAAK,UAAU,yBAAyB,CAAC,IAAY,EAAE,KAAa;IAClE,IAAI,CAAC;QACH,wEAAwE;QACxE,wEAAwE;QACxE,gFAAgF;QAChF,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,aAAa,CACpC,IAAI,EACJ;YACE,OAAO;YACP,MAAM;YACN,IAAI;YACJ,IAAI;YACJ,UAAU;YACV,IAAI,KAAK,YAAY;YACrB,QAAQ;YACR,WAAW;YACX,SAAS;YACT,GAAG;SACJ,EACD,EAAE,OAAO,EAAE,IAAI,EAAE,CAClB,CAAC;QACF,MAAM,MAAM,GAA0C,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACzE,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;QACpD,OAAO,KAAK,EAAE,GAAG,IAAI,IAAI,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,IAAY,EAAE,KAAa,EAAE,IAAY;IACvE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,aAAa,CACpC,IAAI,EACJ,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,EACjE,EAAE,OAAO,EAAE,KAAK,EAAE,CACnB,CAAC;IACF,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;AAC1D,CAAC;AAED,KAAK,UAAU,mBAAmB,CAChC,IAAY,EACZ,KAAa,EACb,IAAY,EACZ,KAAa;IAEb,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,gCAAgC,IAAI,SAAS,EAAE;QACrE,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,aAAa,EAAE,SAAS,KAAK,EAAE;YAC/B,MAAM,EAAE,6BAA6B;YACrC,cAAc,EAAE,kBAAkB;YAClC,YAAY,EAAE,yBAAyB;SACxC;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QACrC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC;KACnC,CAAC,CAAC;IACH,IAAI,CAAC,GAAG,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,cAAc,GAAG,CAAC,MAAM,KAAK,MAAM,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAC9E,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAyB,CAAC;IACxD,OAAO,IAAI,CAAC,QAAQ,CAAC;AACvB,CAAC;AAED,SAAS,WAAW,CAAC,IAAY,EAAE,KAAa,EAAE,IAAY;IAC5D,cAAc,EAAE,CAAC;IACjB,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;QAAE,SAAS,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1E,MAAM,IAAI,GAAG,KAAK;SACf,WAAW,EAAE;SACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAChB,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,KAAK,CAAC,CAAC;IAC3D,aAAa,CAAC,IAAI,EAAE,KAAK,KAAK,aAAa,IAAI,OAAO,IAAI,IAAI,EAAE,MAAM,CAAC,CAAC;IACxE,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;GAMG;AACH,SAAS,mBAAmB,CAAC,IAAwB;IACnD,IAAI,CAAC,IAAI;QAAE,OAAO;IAClB,IAAI,CAAC;QACH,UAAU,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC;IAAC,MAAM,CAAC;QACP,mDAAmD;IACrD,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,KAAuB;IACvD,IAAI,SAAS,GAAkB,IAAI,CAAC;IACpC,0EAA0E;IAC1E,sEAAsE;IACtE,mEAAmE;IACnE,wEAAwE;IACxE,sEAAsE;IACtE,IAAI,YAAgC,CAAC;IACrC,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAChD,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QACjD,oEAAoE;QACpE,yEAAyE;QACzE,sEAAsE;QACtE,gBAAgB;QAChB,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS;YAC/B,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC;iBACf,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI,qBAAqB,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;iBACzE,MAAM,CAAC,KAAK,CAAC;iBACb,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;YACjB,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAExC,wEAAwE;QACxE,8DAA8D;QAC9D,uEAAuE;QACvE,uEAAuE;QACvE,wEAAwE;QACxE,MAAM,KAAK,GAAG,eAAe,EAAE,CAAC;QAChC,IAAI,KAAK,KAAK,UAAU,EAAE,CAAC;YACzB,OAAO;gBACL,MAAM,EAAE,UAAU;gBAClB,OAAO,EAAE,gFAAgF;aAC1F,CAAC;QACJ,CAAC;QAED,IAAI,KAAK,KAAK,YAAY,EAAE,CAAC;YAC3B,IAAI,CAAC,gBAAgB,EAAE,EAAE,CAAC;gBACxB,iEAAiE;gBACjE,+DAA+D;gBAC/D,yDAAyD;gBACzD,8DAA8D;gBAC9D,kEAAkE;gBAClE,+BAA+B;gBAC/B,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;gBAC5B,MAAM,aAAa,GAAG,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;gBAClD,IAAI,aAAa,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,aAAa,CAAC,UAAU,IAAI,eAAe,EAAE,CAAC;oBAC9E,2DAA2D;oBAC3D,+DAA+D;oBAC/D,gEAAgE;oBAChE,6DAA6D;oBAC7D,OAAO;wBACL,MAAM,EAAE,eAAe;wBACvB,IAAI,EAAE,aAAa,CAAC,IAAI;wBACxB,OAAO,EAAE,qFAAqF,aAAa,CAAC,IAAI,sJAAsJ;qBACvQ,CAAC;gBACJ,CAAC;gBACD,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;gBAClD,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;gBAC/D,UAAU,CAAC,MAAM,CAAC,CAAC;gBACnB,OAAO;oBACL,MAAM,EAAE,eAAe;oBACvB,IAAI;oBACJ,OAAO,EAAE,uGAAuG,IAAI,sJAAsJ;iBAC3Q,CAAC;YACJ,CAAC;YAED,oEAAoE;YACpE,YAAY,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YACpD,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC,KAAK,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;YACnE,UAAU,CAAC,SAAS,CAAC,CAAC;YACtB,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,OAAO;oBACL,MAAM,EAAE,eAAe;oBACvB,IAAI,EAAE,YAAY;oBAClB,OAAO,EAAE,wFAAwF,YAAY,gEAAgE;iBAC9K,CAAC;YACJ,CAAC;YACD,sEAAsE;YACtE,gEAAgE;YAChE,6DAA6D;QAC/D,CAAC;QAED,sEAAsE;QACtE,uEAAuE;QACvE,SAAS,GAAG,MAAM,WAAW,EAAE,CAAC;QAEhC,IAAI,MAAM,GAAG,UAAU,EAAE,CAAC;QAC1B,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAChD,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO;gBACL,MAAM,EAAE,WAAW;gBACnB,GAAG,EAAE,QAAQ,CAAC,GAAG;gBACjB,OAAO,EAAE,qBAAqB,QAAQ,CAAC,GAAG,EAAE;aAC7C,CAAC;QACJ,CAAC;QAED,IAAI,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACtC,OAAO;gBACL,MAAM,EAAE,cAAc;gBACtB,OAAO,EAAE,iBAAiB,uBAAuB,qBAAqB,KAAK,CAAC,IAAI,yGAAyG;gBACzL,IAAI,EAAE,YAAY,IAAI,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC;aAC3D,CAAC;QACJ,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,yBAAyB,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACvE,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,GAAG,UAAU,EAAE,CAAC;YACtB,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;YAC/D,UAAU,CAAC,MAAM,CAAC,CAAC;YACnB,OAAO;gBACL,MAAM,EAAE,WAAW;gBACnB,GAAG,EAAE,WAAW;gBAChB,OAAO,EAAE,2CAA2C,WAAW,EAAE;aAClE,CAAC;QACJ,CAAC;QAED,qEAAqE;QACrE,kEAAkE;QAClE,wDAAwD;QACxD,IAAI,MAAM,SAAS,EAAE,EAAE,CAAC;YACtB,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,gBAAgB,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;gBAC5D,MAAM,GAAG,UAAU,EAAE,CAAC;gBACtB,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;gBACtD,UAAU,CAAC,MAAM,CAAC,CAAC;gBACnB,mBAAmB,CAAC,YAAY,CAAC,CAAC;gBAClC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC;YAC9D,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,IAAI,GAAG,YAAY,IAAI,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;gBAClE,OAAO;oBACL,MAAM,EAAE,eAAe;oBACvB,IAAI;oBACJ,OAAO,EAAE,2BAA2B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,uBAAuB,IAAI,EAAE;iBACxH,CAAC;YACJ,CAAC;QACH,CAAC;QAED,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;QACvC,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,mBAAmB,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;gBACtE,MAAM,GAAG,UAAU,EAAE,CAAC;gBACtB,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;gBACtD,UAAU,CAAC,MAAM,CAAC,CAAC;gBACnB,mBAAmB,CAAC,YAAY,CAAC,CAAC;gBAClC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC;YAC9D,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,IAAI,GAAG,YAAY,IAAI,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;gBAClE,OAAO;oBACL,MAAM,EAAE,eAAe;oBACvB,IAAI;oBACJ,OAAO,EAAE,qCAAqC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,uBAAuB,IAAI,EAAE;iBAClI,CAAC;YACJ,CAAC;QACH,CAAC;QAED,MAAM,IAAI,GAAG,YAAY,IAAI,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QAClE,OAAO;YACL,MAAM,EAAE,eAAe;YACvB,IAAI;YACJ,OAAO,EAAE,kEAAkE,IAAI,gDAAgD,KAAK,CAAC,IAAI,+BAA+B,IAAI,GAAG;SAChL,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;IAC9F,CAAC;YAAS,CAAC;QACT,WAAW,CAAC,SAAS,CAAC,CAAC;IACzB,CAAC;AACH,CAAC"}
@@ -14129,6 +14129,128 @@ async function mmRenderGraph(body) {
14129
14129
  } catch (e) { body.innerHTML = `<div class="empty">Failed: ${esc(e.message)}</div>`; }
14130
14130
  }
14131
14131
 
14132
+ // i-065-dash: expose the _-prefixed implementations under the bare names
14133
+ // inline onclick/onchange/... attributes above actually call. Commit 9537930fb
14134
+ // prefixed these declarations with _ (conventionally "intentionally unused") but
14135
+ // they are used, just from HTML attributes no linter sees — every name below threw
14136
+ // ReferenceError on click before this block existed. See
14137
+ // src/__tests__/dashboard-handler-resolution.test.ts, which fails if this list is
14138
+ // ever incomplete or stale.
14139
+ Object.assign(window, {
14140
+ toggleGlobalNav: _toggleGlobalNav,
14141
+ openBudgetModal: _openBudgetModal,
14142
+ cmdKey: _cmdKey,
14143
+ toggleLiveTail: _toggleLiveTail,
14144
+ copySession: _copySession,
14145
+ exportSession: _exportSession,
14146
+ toggleFocusMode: _toggleFocusMode,
14147
+ prevSession: _prevSession,
14148
+ nextSession: _nextSession,
14149
+ stopReplay: _stopReplay,
14150
+ setFeedTimeFilter: _setFeedTimeFilter,
14151
+ dismissWeekly: _dismissWeekly,
14152
+ dismissDigest: _dismissDigest,
14153
+ filterProjects: _filterProjects,
14154
+ toggleSessStarFilter: _toggleSessStarFilter,
14155
+ toggleLeaderboard: _toggleLeaderboard,
14156
+ toggleModelMix: _toggleModelMix,
14157
+ toggleToolErrors: _toggleToolErrors,
14158
+ toggleToolRank: _toggleToolRank,
14159
+ toggleProjCosts: _toggleProjCosts,
14160
+ exportSessionsCSV: _exportSessionsCSV,
14161
+ togglePatterns: _togglePatterns,
14162
+ toggleDiffMode: _toggleDiffMode,
14163
+ toggleTimeline: _toggleTimeline,
14164
+ toggleModelDonut: _toggleModelDonut,
14165
+ showReportCard: _showReportCard,
14166
+ clearFilePivot: _clearFilePivot,
14167
+ clearHeatmapFilter: _clearHeatmapFilter,
14168
+ setPeriod: _setPeriod,
14169
+ bulkExport: _bulkExport,
14170
+ bulkBookmark: _bulkBookmark,
14171
+ filterSessions: _filterSessions,
14172
+ filterLoopList: _filterLoopList,
14173
+ showLoopForm: _showLoopForm,
14174
+ createLoop: _createLoop,
14175
+ setTokPeriod: _setTokPeriod,
14176
+ switchMemTab: _switchMemTab,
14177
+ openNewMemModal: _openNewMemModal,
14178
+ filterADRs: _filterADRs,
14179
+ buildKnowledgeDocs: _buildKnowledgeDocs,
14180
+ secondBrainSearch: _secondBrainSearch,
14181
+ filterChunks: _filterChunks,
14182
+ filterDocs: _filterDocs,
14183
+ storeSearch: _storeSearch,
14184
+ openStoreNewModal: _openStoreNewModal,
14185
+ filterOrgList: _filterOrgList,
14186
+ mgSwitchTab: _mgSwitchTab,
14187
+ mgToggleWatch: _mgToggleWatch,
14188
+ mgRebuild: _mgRebuild,
14189
+ mgWikiSearchDebounced: _mgWikiSearchDebounced,
14190
+ mgRebuildDocs: _mgRebuildDocs,
14191
+ gdFilter: _gdFilter,
14192
+ hiSwitchTab: _hiSwitchTab,
14193
+ saveChunkModal: _saveChunkModal,
14194
+ saveMemModal: _saveMemModal,
14195
+ closeReportCard: _closeReportCard,
14196
+ copyReportCard: _copyReportCard,
14197
+ saveBudget: _saveBudget,
14198
+ expandGroup: _expandGroup,
14199
+ dismissAlert: _dismissAlert,
14200
+ showCostExplainer: _showCostExplainer,
14201
+ setFilePivot: _setFilePivot,
14202
+ toggleErrDrawer: _toggleErrDrawer,
14203
+ handleSessRowClick: _handleSessRowClick,
14204
+ copyPrompt: _copyPrompt,
14205
+ toggleBookmark: _toggleBookmark,
14206
+ toggleSessNote: _toggleSessNote,
14207
+ saveSessNote: _saveSessNote,
14208
+ toggleSessGroup: _toggleSessGroup,
14209
+ setTagFilter: _setTagFilter,
14210
+ openGlobalOrg: _openGlobalOrg,
14211
+ gdOpen: _gdOpen,
14212
+ gdRevealPath: _gdRevealPath,
14213
+ gdCopyPath: _gdCopyPath,
14214
+ submitHumanAnswer: _submitHumanAnswer,
14215
+ v2ViewOrgFile: _v2ViewOrgFile,
14216
+ minimapJump: _minimapJump,
14217
+ stopLoop: _stopLoop,
14218
+ toggleLoop: _toggleLoop,
14219
+ v2OpenMetaModal: _v2OpenMetaModal,
14220
+ v2TriggerAvatarUpload: _v2TriggerAvatarUpload,
14221
+ v2HandleAvatarFile: _v2HandleAvatarFile,
14222
+ orgApprovalAction: _orgApprovalAction,
14223
+ generateOrgSettingsCmd: _generateOrgSettingsCmd,
14224
+ setOdtChatMode: _setOdtChatMode,
14225
+ v2SaveOrgConfig: _v2SaveOrgConfig,
14226
+ setHeatmapFilter: _setHeatmapFilter,
14227
+ setDailyTrendFilter: _setDailyTrendFilter,
14228
+ removeCustomTag: _removeCustomTag,
14229
+ showCustomTagInput: _showCustomTagInput,
14230
+ closeErrDrawer: _closeErrDrawer,
14231
+ wfSwitchTab: _wfSwitchTab,
14232
+ pbToggleCat: _pbToggleCat,
14233
+ pbAddNode: _pbAddNode,
14234
+ pbDeleteNode: _pbDeleteNode,
14235
+ pbStartConnect: _pbStartConnect,
14236
+ pbUpdateNodeName: _pbUpdateNodeName,
14237
+ pbUpdateConfig: _pbUpdateConfig,
14238
+ pbRemoveConn: _pbRemoveConn,
14239
+ mgRunClient: _mgRunClient,
14240
+ mgRunServer: _mgRunServer,
14241
+ mgExport: _mgExport,
14242
+ mgWikiFilterType: _mgWikiFilterType,
14243
+ mgWikiShowDetail: _mgWikiShowDetail,
14244
+ selectMem: _selectMem,
14245
+ openEditMemModal: _openEditMemModal,
14246
+ deleteMem: _deleteMem,
14247
+ viewStoreEntry: _viewStoreEntry,
14248
+ deleteStoreEntry: _deleteStoreEntry,
14249
+ openChunkEditAt: _openChunkEditAt,
14250
+ deleteChunkAt: _deleteChunkAt,
14251
+ openDocModal: _openDocModal,
14252
+ mmGenerateOrgCmd: _mmGenerateOrgCmd,
14253
+ });
14132
14254
  </script>
14133
14255
  </body>
14134
14256
  </html>
@@ -1064,6 +1064,20 @@ setInterval(refreshSessions, 8000);
1064
1064
 
1065
1065
  // Set initial live mode banner
1066
1066
  document.getElementById('mode-banner').classList.add('live-mode');
1067
+
1068
+ // i-065-dash: expose the _-prefixed implementations under the bare names
1069
+ // inline onclick/onchange/... attributes above actually call. Commit 9537930fb
1070
+ // prefixed these declarations with _ (conventionally "intentionally unused") but
1071
+ // they are used, just from HTML attributes no linter sees — every name below threw
1072
+ // ReferenceError on click before this block existed. See
1073
+ // src/__tests__/dashboard-handler-resolution.test.ts, which fails if this list is
1074
+ // ever incomplete or stale.
1075
+ Object.assign(window, {
1076
+ applyProjectFilter: _applyProjectFilter,
1077
+ toggleMovieMode: _toggleMovieMode,
1078
+ closeDetail: _closeDetail,
1079
+ downloadSession: _downloadSession,
1080
+ });
1067
1081
  </script>
1068
1082
  </body>
1069
1083
  </html>
@@ -2578,6 +2578,18 @@ fetch('/api/status').then(r => r.json()).then(d => { if (d.dir) window._orgDir =
2578
2578
  connectSSE();
2579
2579
  loadOrgs();
2580
2580
  setInterval(loadOrgs, 8000);
2581
+
2582
+ // i-065-dash: expose the _-prefixed implementations under the bare names
2583
+ // inline onclick/onchange/... attributes above actually call. Commit 9537930fb
2584
+ // prefixed these declarations with _ (conventionally "intentionally unused") but
2585
+ // they are used, just from HTML attributes no linter sees — every name below threw
2586
+ // ReferenceError on click before this block existed. See
2587
+ // src/__tests__/dashboard-handler-resolution.test.ts, which fails if this list is
2588
+ // ever incomplete or stale.
2589
+ Object.assign(window, {
2590
+ setChatMode: _setChatMode,
2591
+ chatComposeKey: _chatComposeKey,
2592
+ });
2581
2593
  </script>
2582
2594
  </body>
2583
2595
  </html>