mixdog 0.9.2 → 0.9.3
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/package.json +2 -1
- package/scripts/anthropic-maxtokens-test.mjs +119 -0
- package/scripts/build-tui.mjs +13 -1
- package/scripts/explore-bench.mjs +124 -0
- package/scripts/hook-bus-test.mjs +191 -0
- package/scripts/path-suffix-test.mjs +57 -0
- package/scripts/recall-bench.mjs +207 -0
- package/scripts/tool-smoke.mjs +7 -4
- package/src/agents/debugger/AGENT.md +2 -2
- package/src/agents/heavy-worker/AGENT.md +20 -11
- package/src/agents/reviewer/AGENT.md +2 -2
- package/src/agents/worker/AGENT.md +17 -11
- package/src/mixdog-session-runtime.mjs +424 -1812
- package/src/repl.mjs +5 -5
- package/src/rules/agent/30-explorer.md +8 -11
- package/src/rules/lead/lead-tool.md +9 -5
- package/src/rules/shared/01-tool.md +11 -5
- package/src/runtime/agent/orchestrator/context/collect.mjs +51 -0
- package/src/runtime/agent/orchestrator/mcp/client.mjs +6 -2
- package/src/runtime/agent/orchestrator/providers/anthropic-effort.mjs +1 -1
- package/src/runtime/agent/orchestrator/providers/anthropic-max-tokens.mjs +93 -0
- package/src/runtime/agent/orchestrator/providers/anthropic-oauth.mjs +22 -68
- package/src/runtime/agent/orchestrator/providers/anthropic.mjs +46 -7
- package/src/runtime/agent/orchestrator/providers/api-usage.mjs +1 -13
- package/src/runtime/agent/orchestrator/providers/gemini.mjs +1 -1
- package/src/runtime/agent/orchestrator/providers/grok-oauth.mjs +1 -1
- package/src/runtime/agent/orchestrator/providers/lib/usage-primitives.mjs +32 -0
- package/src/runtime/agent/orchestrator/providers/oauth-usage.mjs +54 -20
- package/src/runtime/agent/orchestrator/providers/openai-compat-stream.mjs +19 -12
- package/src/runtime/agent/orchestrator/providers/openai-compat.mjs +7 -5
- package/src/runtime/agent/orchestrator/providers/openai-oauth-ws.mjs +33 -23
- package/src/runtime/agent/orchestrator/providers/openai-oauth.mjs +31 -14
- package/src/runtime/agent/orchestrator/providers/opencode-go-usage.mjs +38 -12
- package/src/runtime/agent/orchestrator/providers/retry-classifier.mjs +7 -8
- package/src/runtime/agent/orchestrator/session/loop/compact-debug.mjs +28 -0
- package/src/runtime/agent/orchestrator/session/loop/compact-policy.mjs +262 -0
- package/src/runtime/agent/orchestrator/session/loop/context-overflow.mjs +38 -0
- package/src/runtime/agent/orchestrator/session/loop/env.mjs +14 -0
- package/src/runtime/agent/orchestrator/session/loop/hidden-agents.mjs +21 -0
- package/src/runtime/agent/orchestrator/session/loop/pre-dispatch-deny.mjs +49 -0
- package/src/runtime/agent/orchestrator/session/loop/steering.mjs +63 -0
- package/src/runtime/agent/orchestrator/session/loop/stored-tool-args.mjs +100 -0
- package/src/runtime/agent/orchestrator/session/loop/tool-classify.mjs +52 -0
- package/src/runtime/agent/orchestrator/session/loop/tool-helpers.mjs +218 -0
- package/src/runtime/agent/orchestrator/session/loop/transcript-repair.mjs +101 -0
- package/src/runtime/agent/orchestrator/session/loop/usage.mjs +35 -0
- package/src/runtime/agent/orchestrator/session/loop.mjs +169 -918
- package/src/runtime/agent/orchestrator/session/manager/context-meta.mjs +227 -0
- package/src/runtime/agent/orchestrator/session/manager/pending-messages.mjs +235 -0
- package/src/runtime/agent/orchestrator/session/manager/prompt-utils.mjs +137 -0
- package/src/runtime/agent/orchestrator/session/manager/rules-cache.mjs +155 -0
- package/src/runtime/agent/orchestrator/session/manager/tool-resolution.mjs +303 -0
- package/src/runtime/agent/orchestrator/session/manager.mjs +65 -1032
- package/src/runtime/agent/orchestrator/stall-policy.mjs +3 -3
- package/src/runtime/agent/orchestrator/tools/builtin/builtin-tools.mjs +2 -2
- package/src/runtime/agent/orchestrator/tools/builtin/external-tool-adapters.mjs +241 -0
- package/src/runtime/agent/orchestrator/tools/builtin/external-tool-adapters.test.mjs +162 -0
- package/src/runtime/agent/orchestrator/tools/builtin/fuzzy-match.mjs +1 -1
- package/src/runtime/agent/orchestrator/tools/builtin/path-diagnostics.mjs +42 -2
- package/src/runtime/agent/orchestrator/tools/builtin/read-formatting.mjs +1 -1
- package/src/runtime/agent/orchestrator/tools/builtin/read-single-tool.mjs +11 -4
- package/src/runtime/agent/orchestrator/tools/builtin/search-tool.mjs +5 -0
- package/src/runtime/agent/orchestrator/tools/builtin/shell-jobs.mjs +50 -39
- package/src/runtime/agent/orchestrator/tools/builtin.mjs +11 -0
- package/src/runtime/agent/orchestrator/tools/code-graph/build.mjs +303 -0
- package/src/runtime/agent/orchestrator/tools/code-graph/constants.mjs +43 -0
- package/src/runtime/agent/orchestrator/tools/code-graph/disk-cache.mjs +382 -0
- package/src/runtime/agent/orchestrator/tools/code-graph/dispatch.mjs +497 -0
- package/src/runtime/agent/orchestrator/tools/code-graph/graph-binary.mjs +295 -0
- package/src/runtime/agent/orchestrator/tools/code-graph/graph-model.mjs +158 -0
- package/src/runtime/agent/orchestrator/tools/code-graph/lang-predicates.mjs +128 -0
- package/src/runtime/agent/orchestrator/tools/code-graph/memory-cache.mjs +66 -0
- package/src/runtime/agent/orchestrator/tools/code-graph/project-root.mjs +44 -0
- package/src/runtime/agent/orchestrator/tools/code-graph/search.mjs +1192 -0
- package/src/runtime/agent/orchestrator/tools/code-graph/source-access.mjs +81 -0
- package/src/runtime/agent/orchestrator/tools/code-graph/span.mjs +19 -0
- package/src/runtime/agent/orchestrator/tools/code-graph/symbol-index.mjs +280 -0
- package/src/runtime/agent/orchestrator/tools/code-graph/text-mask.mjs +347 -0
- package/src/runtime/agent/orchestrator/tools/code-graph.mjs +36 -4277
- package/src/runtime/agent/orchestrator/tools/patch.mjs +3 -3
- package/src/runtime/agent/orchestrator/tools/progress-message.mjs +1 -2
- package/src/runtime/agent/orchestrator/tools/shell-command.mjs +1 -2
- package/src/runtime/agent/orchestrator/tools/shell-snapshot.mjs +2 -4
- package/src/runtime/channels/index.mjs +14 -233
- package/src/runtime/channels/lib/boot-profile.mjs +23 -0
- package/src/runtime/channels/lib/crash-log.mjs +106 -0
- package/src/runtime/channels/lib/index-drop-trace.mjs +72 -0
- package/src/runtime/channels/lib/output-forwarder.mjs +8 -0
- package/src/runtime/channels/lib/telegram-format.mjs +19 -22
- package/src/runtime/channels/lib/whisper-language.mjs +42 -0
- package/src/runtime/memory/index.mjs +314 -359
- package/src/runtime/memory/lib/core-memory-store.mjs +351 -1
- package/src/runtime/memory/lib/cycle-signatures.mjs +34 -0
- package/src/runtime/memory/lib/http-wire.mjs +57 -0
- package/src/runtime/memory/lib/memory-cycle2.mjs +56 -3
- package/src/runtime/memory/lib/memory-recall-scope-filter.mjs +24 -0
- package/src/runtime/memory/lib/memory-retrievers.mjs +8 -0
- package/src/runtime/memory/lib/memory.mjs +20 -0
- package/src/runtime/memory/lib/promotion-fingerprint.mjs +50 -0
- package/src/runtime/memory/lib/recall-format.mjs +183 -0
- package/src/runtime/memory/tool-defs.mjs +4 -4
- package/src/runtime/shared/abort-controller.mjs +1 -1
- package/src/runtime/shared/background-tasks.mjs +2 -3
- package/src/runtime/shared/buffered-appender.mjs +149 -0
- package/src/runtime/shared/task-notification-envelope.mjs +98 -0
- package/src/runtime/shared/task-notification-envelope.test.mjs +107 -0
- package/src/runtime/shared/tool-execution-contract.mjs +2 -2
- package/src/runtime/shared/transcript-writer.mjs +29 -2
- package/src/session-runtime/config-helpers.mjs +209 -0
- package/src/session-runtime/effort.mjs +128 -0
- package/src/session-runtime/fs-utils.mjs +10 -0
- package/src/session-runtime/model-capabilities.mjs +130 -0
- package/src/session-runtime/output-styles.mjs +124 -0
- package/src/session-runtime/plugin-mcp.mjs +114 -0
- package/src/session-runtime/session-text.mjs +100 -0
- package/src/session-runtime/statusline-route.mjs +35 -0
- package/src/session-runtime/tool-catalog.mjs +720 -0
- package/src/session-runtime/workflow.mjs +358 -0
- package/src/standalone/agent-tool.mjs +49 -10
- package/src/standalone/channel-worker.mjs +3 -2
- package/src/standalone/explore-tool.mjs +10 -3
- package/src/standalone/hook-bus.mjs +165 -8
- package/src/standalone/opencode-go-login.mjs +121 -0
- package/src/standalone/provider-admin.mjs +14 -3
- package/src/tui/App.jsx +884 -143
- package/src/tui/components/PromptInput.jsx +272 -15
- package/src/tui/components/ToolExecution.jsx +20 -10
- package/src/tui/components/tool-output-format.mjs +2 -2
- package/src/tui/dist/index.mjs +1771 -1947
- package/src/tui/engine/agent-envelope.mjs +296 -0
- package/src/tui/engine/boot-profile.mjs +21 -0
- package/src/tui/engine/labels.mjs +67 -0
- package/src/tui/engine/notice-text.mjs +112 -0
- package/src/tui/engine/queue-helpers.mjs +161 -0
- package/src/tui/engine/session-stats.mjs +46 -0
- package/src/tui/engine/tool-call-fields.mjs +23 -0
- package/src/tui/engine/tool-result-text.mjs +126 -0
- package/src/tui/engine.mjs +311 -851
- package/src/tui/input-editing.mjs +58 -8
- package/src/tui/input-editing.selection.test.mjs +75 -0
- package/src/tui/keyboard-protocol.mjs +2 -2
- package/src/tui/lib/voice-recorder.mjs +35 -19
- package/src/tui/markdown/format-token.mjs +7 -8
- package/src/tui/markdown/format-token.test.mjs +3 -3
- package/src/tui/paste-attachments.mjs +38 -0
- package/src/tui/paste-fix.test.mjs +119 -0
- package/src/tui/themes/base.mjs +2 -2
- package/src/tui/themes/kanagawa.mjs +4 -4
- package/src/tui/themes/teal.mjs +4 -5
- package/src/tui/themes/utils.mjs +1 -1
- package/src/ui/statusline.mjs +49 -0
- package/src/workflows/default/WORKFLOW.md +16 -9
- package/src/workflows/sequential/WORKFLOW.md +16 -11
- package/src/workflows/solo/WORKFLOW.md +5 -1
|
@@ -1,31 +1,28 @@
|
|
|
1
|
-
// Telegram MarkdownV2 conversion
|
|
2
|
-
//
|
|
3
|
-
//
|
|
4
|
-
//
|
|
5
|
-
//
|
|
6
|
-
//
|
|
7
|
-
// output matches the reference.
|
|
1
|
+
// Telegram MarkdownV2 conversion.
|
|
2
|
+
//
|
|
3
|
+
// Converts standard markdown into Telegram's MarkdownV2 entity format: escapes
|
|
4
|
+
// all MarkdownV2-special characters outside protected regions, converts tables
|
|
5
|
+
// into bullet-grouped blocks Telegram can render, and preserves a fixed step
|
|
6
|
+
// order for table/header/blockquote handling so output stays deterministic.
|
|
8
7
|
//
|
|
9
8
|
// Exported:
|
|
10
|
-
// toMarkdownV2(text) — the main converter
|
|
11
|
-
// stripMdV2(text) — plain-text fallback (
|
|
12
|
-
// escapeMdV2(text) — raw escape helper
|
|
9
|
+
// toMarkdownV2(text) — the main converter
|
|
10
|
+
// stripMdV2(text) — plain-text fallback (strips MarkdownV2 markers)
|
|
11
|
+
// escapeMdV2(text) — raw escape helper
|
|
13
12
|
// isParseEntitiesError(err) — detect a MarkdownV2 400 parse failure
|
|
14
13
|
|
|
15
14
|
// Matches every character MarkdownV2 requires to be backslash-escaped outside a
|
|
16
|
-
// code span / fenced block.
|
|
17
|
-
// Python: r'([_*\[\]()~`>#\+\-=|{}.!\\])'
|
|
15
|
+
// code span / fenced block.
|
|
18
16
|
const MDV2_ESCAPE_RE = /([_*[\]()~`>#+\-=|{}.!\\])/g;
|
|
19
17
|
|
|
20
|
-
/**
|
|
18
|
+
/** Backslash-escape all MarkdownV2 special characters. */
|
|
21
19
|
export function escapeMdV2(text) {
|
|
22
20
|
return String(text).replace(MDV2_ESCAPE_RE, "\\$1");
|
|
23
21
|
}
|
|
24
22
|
|
|
25
23
|
/**
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
* parse-error fallback.
|
|
24
|
+
* Remove MarkdownV2 escape backslashes and the entity markers toMarkdownV2
|
|
25
|
+
* introduces, producing clean plain text for the parse-error fallback.
|
|
29
26
|
*/
|
|
30
27
|
export function stripMdV2(text) {
|
|
31
28
|
let cleaned = String(text);
|
|
@@ -34,7 +31,7 @@ export function stripMdV2(text) {
|
|
|
34
31
|
// Remove bold markers (*text* → text).
|
|
35
32
|
cleaned = cleaned.replace(/\*([^*]+)\*/g, "$1");
|
|
36
33
|
// Remove italic markers (_text_ → text). Word-boundary guards keep
|
|
37
|
-
// snake_case identifiers intact
|
|
34
|
+
// snake_case identifiers intact.
|
|
38
35
|
cleaned = cleaned.replace(/(^|\W)_([^_]+)_(?!\w)/g, "$1$2");
|
|
39
36
|
// Remove strikethrough markers (~text~ → text).
|
|
40
37
|
cleaned = cleaned.replace(/~([^~]+)~/g, "$1");
|
|
@@ -44,10 +41,10 @@ export function stripMdV2(text) {
|
|
|
44
41
|
}
|
|
45
42
|
|
|
46
43
|
// ── Markdown table → Telegram-friendly row groups ──────────────────────────
|
|
47
|
-
//
|
|
48
|
-
//
|
|
44
|
+
// Converts a markdown table block into per-row bullet groups Telegram can
|
|
45
|
+
// render (Telegram MarkdownV2 has no native table support).
|
|
49
46
|
|
|
50
|
-
//
|
|
47
|
+
// Matches a markdown table header-separator row, e.g. `| --- | :---: |`.
|
|
51
48
|
const TABLE_SEPARATOR_RE = /^\s*\|?\s*:?-+:?\s*(?:\|\s*:?-+:?\s*){1,}\|?\s*$/;
|
|
52
49
|
|
|
53
50
|
function isTableRow(line) {
|
|
@@ -99,7 +96,7 @@ function renderTableBlockForTelegram(tableBlock) {
|
|
|
99
96
|
bullets.push(`• ${headers[c]}: ${value}`);
|
|
100
97
|
}
|
|
101
98
|
// The heading is emitted as `**heading**` markdown so step 5 (bold) of the
|
|
102
|
-
// main pipeline converts it
|
|
99
|
+
// main pipeline converts it.
|
|
103
100
|
const groupLines = [`**${heading}**`, ...bullets];
|
|
104
101
|
renderedGroups.push(groupLines.join("\n"));
|
|
105
102
|
}
|
|
@@ -145,7 +142,7 @@ function wrapMarkdownTables(text) {
|
|
|
145
142
|
return out.join("\n");
|
|
146
143
|
}
|
|
147
144
|
|
|
148
|
-
// ── Main converter
|
|
145
|
+
// ── Main converter (placeholder-protected escape pipeline) ──
|
|
149
146
|
|
|
150
147
|
/**
|
|
151
148
|
* Convert standard/assistant markdown into Telegram MarkdownV2.
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
// Whisper transcription language detection. Extracted verbatim from
|
|
2
|
+
// channels/index.mjs (behavior-preserving). Module-scoped memoization of the
|
|
3
|
+
// resolved device language mirrors the original file-level `let`.
|
|
4
|
+
let resolvedWhisperLanguage = null;
|
|
5
|
+
|
|
6
|
+
function normalizeWhisperLanguage(value) {
|
|
7
|
+
const raw = String(value ?? "").trim().toLowerCase();
|
|
8
|
+
if (!raw || raw === "auto") return null;
|
|
9
|
+
if (raw.startsWith("ko")) return "ko";
|
|
10
|
+
if (raw.startsWith("ja")) return "ja";
|
|
11
|
+
if (raw.startsWith("en")) return "en";
|
|
12
|
+
if (raw.startsWith("zh")) return "zh";
|
|
13
|
+
if (raw.startsWith("de")) return "de";
|
|
14
|
+
if (raw.startsWith("fr")) return "fr";
|
|
15
|
+
if (raw.startsWith("es")) return "es";
|
|
16
|
+
if (raw.startsWith("it")) return "it";
|
|
17
|
+
if (raw.startsWith("pt")) return "pt";
|
|
18
|
+
if (raw.startsWith("ru")) return "ru";
|
|
19
|
+
return raw;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
function detectDeviceLanguage() {
|
|
23
|
+
if (resolvedWhisperLanguage) return resolvedWhisperLanguage;
|
|
24
|
+
const candidates = [
|
|
25
|
+
process.env.MIXDOG_CHANNELS_WHISPER_LANGUAGE,
|
|
26
|
+
process.env.LC_ALL,
|
|
27
|
+
process.env.LC_MESSAGES,
|
|
28
|
+
process.env.LANG,
|
|
29
|
+
Intl.DateTimeFormat().resolvedOptions().locale
|
|
30
|
+
];
|
|
31
|
+
for (const candidate of candidates) {
|
|
32
|
+
const normalized = normalizeWhisperLanguage(candidate);
|
|
33
|
+
if (normalized) {
|
|
34
|
+
resolvedWhisperLanguage = normalized;
|
|
35
|
+
return normalized;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
resolvedWhisperLanguage = "auto";
|
|
39
|
+
return resolvedWhisperLanguage;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export { normalizeWhisperLanguage, detectDeviceLanguage };
|