@visorcraft/idlehands 1.1.16 → 1.2.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.
- package/dist/agent/formatting.js +30 -13
- package/dist/agent/formatting.js.map +1 -1
- package/dist/agent/review-artifact.js +12 -8
- package/dist/agent/review-artifact.js.map +1 -1
- package/dist/agent/tool-calls.js +62 -21
- package/dist/agent/tool-calls.js.map +1 -1
- package/dist/agent/tool-loop-detection.js +310 -0
- package/dist/agent/tool-loop-detection.js.map +1 -0
- package/dist/agent/tool-loop-guard.js +235 -0
- package/dist/agent/tool-loop-guard.js.map +1 -0
- package/dist/agent.js +585 -144
- package/dist/agent.js.map +1 -1
- package/dist/anton/controller.js +46 -30
- package/dist/anton/controller.js.map +1 -1
- package/dist/anton/lock.js +5 -1
- package/dist/anton/lock.js.map +1 -1
- package/dist/anton/parser.js +18 -19
- package/dist/anton/parser.js.map +1 -1
- package/dist/anton/prompt.js +42 -11
- package/dist/anton/prompt.js.map +1 -1
- package/dist/anton/reporter.js.map +1 -1
- package/dist/anton/session.js.map +1 -1
- package/dist/anton/verifier.js +3 -5
- package/dist/anton/verifier.js.map +1 -1
- package/dist/bench/compare.js +53 -20
- package/dist/bench/compare.js.map +1 -1
- package/dist/bench/openclaw.js +4 -4
- package/dist/bench/openclaw.js.map +1 -1
- package/dist/bench/report.js +11 -3
- package/dist/bench/report.js.map +1 -1
- package/dist/bench/runner.js +20 -14
- package/dist/bench/runner.js.map +1 -1
- package/dist/bot/commands.js +69 -26
- package/dist/bot/commands.js.map +1 -1
- package/dist/bot/confirm-discord.js +32 -9
- package/dist/bot/confirm-discord.js.map +1 -1
- package/dist/bot/confirm-telegram.js +26 -10
- package/dist/bot/confirm-telegram.js.map +1 -1
- package/dist/bot/dir-guard.js +18 -3
- package/dist/bot/dir-guard.js.map +1 -1
- package/dist/bot/discord-routing.js +28 -4
- package/dist/bot/discord-routing.js.map +1 -1
- package/dist/bot/discord-streaming.js +3 -3
- package/dist/bot/discord-streaming.js.map +1 -1
- package/dist/bot/discord.js +93 -37
- package/dist/bot/discord.js.map +1 -1
- package/dist/bot/escalation.js +124 -0
- package/dist/bot/escalation.js.map +1 -0
- package/dist/bot/format.js +2 -5
- package/dist/bot/format.js.map +1 -1
- package/dist/bot/session-manager.js +17 -6
- package/dist/bot/session-manager.js.map +1 -1
- package/dist/bot/telegram.js +92 -29
- package/dist/bot/telegram.js.map +1 -1
- package/dist/cli/agent-turn.js +10 -4
- package/dist/cli/agent-turn.js.map +1 -1
- package/dist/cli/args.js +51 -9
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/bot.js +19 -9
- package/dist/cli/bot.js.map +1 -1
- package/dist/cli/build-repl-context.js +60 -26
- package/dist/cli/build-repl-context.js.map +1 -1
- package/dist/cli/command-registry.js.map +1 -1
- package/dist/cli/commands/anton.js +5 -3
- package/dist/cli/commands/anton.js.map +1 -1
- package/dist/cli/commands/editing.js +27 -12
- package/dist/cli/commands/editing.js.map +1 -1
- package/dist/cli/commands/model.js +16 -7
- package/dist/cli/commands/model.js.map +1 -1
- package/dist/cli/commands/project.js +52 -17
- package/dist/cli/commands/project.js.map +1 -1
- package/dist/cli/commands/runtime.js +1 -1
- package/dist/cli/commands/runtime.js.map +1 -1
- package/dist/cli/commands/secrets.js +279 -0
- package/dist/cli/commands/secrets.js.map +1 -0
- package/dist/cli/commands/session.js +57 -2
- package/dist/cli/commands/session.js.map +1 -1
- package/dist/cli/commands/tools.js +3 -1
- package/dist/cli/commands/tools.js.map +1 -1
- package/dist/cli/commands/trifecta.js +1 -1
- package/dist/cli/commands/trifecta.js.map +1 -1
- package/dist/cli/commands/tui.js.map +1 -1
- package/dist/cli/init.js +50 -16
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/input.js +25 -7
- package/dist/cli/input.js.map +1 -1
- package/dist/cli/oneshot.js +31 -19
- package/dist/cli/oneshot.js.map +1 -1
- package/dist/cli/repl-dispatch.js +10 -6
- package/dist/cli/repl-dispatch.js.map +1 -1
- package/dist/cli/runtime-cmds.js +110 -46
- package/dist/cli/runtime-cmds.js.map +1 -1
- package/dist/cli/service.js +3 -3
- package/dist/cli/service.js.map +1 -1
- package/dist/cli/session-state.js +12 -5
- package/dist/cli/session-state.js.map +1 -1
- package/dist/cli/setup.js +86 -33
- package/dist/cli/setup.js.map +1 -1
- package/dist/cli/shell.js +4 -4
- package/dist/cli/shell.js.map +1 -1
- package/dist/cli/status.js +56 -12
- package/dist/cli/status.js.map +1 -1
- package/dist/client.js +40 -21
- package/dist/client.js.map +1 -1
- package/dist/commands.js +1 -1
- package/dist/commands.js.map +1 -1
- package/dist/config.js +171 -15
- package/dist/config.js.map +1 -1
- package/dist/confirm/auto.js.map +1 -1
- package/dist/confirm/headless.js +13 -2
- package/dist/confirm/headless.js.map +1 -1
- package/dist/confirm/terminal.js +1 -5
- package/dist/confirm/terminal.js.map +1 -1
- package/dist/context.js +9 -3
- package/dist/context.js.map +1 -1
- package/dist/git.js +56 -61
- package/dist/git.js.map +1 -1
- package/dist/harnesses.js +137 -37
- package/dist/harnesses.js.map +1 -1
- package/dist/history.js +12 -4
- package/dist/history.js.map +1 -1
- package/dist/hooks/index.js +2 -2
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/loader.js +6 -5
- package/dist/hooks/loader.js.map +1 -1
- package/dist/hooks/manager.js.map +1 -1
- package/dist/hooks/plugins/example-console.js.map +1 -1
- package/dist/hooks/scaffold.js +8 -6
- package/dist/hooks/scaffold.js.map +1 -1
- package/dist/index.js +120 -66
- package/dist/index.js.map +1 -1
- package/dist/indexer.js +6 -18
- package/dist/indexer.js.map +1 -1
- package/dist/jsonrpc.js.map +1 -1
- package/dist/lens.js +38 -16
- package/dist/lens.js.map +1 -1
- package/dist/lsp.js +60 -24
- package/dist/lsp.js.map +1 -1
- package/dist/markdown.js +6 -6
- package/dist/markdown.js.map +1 -1
- package/dist/mcp.js +15 -6
- package/dist/mcp.js.map +1 -1
- package/dist/model-customization.js +7 -3
- package/dist/model-customization.js.map +1 -1
- package/dist/progress/message-edit-scheduler.js +15 -3
- package/dist/progress/message-edit-scheduler.js.map +1 -1
- package/dist/progress/progress-message-renderer.js.map +1 -1
- package/dist/progress/progress-presenter.js +3 -3
- package/dist/progress/progress-presenter.js.map +1 -1
- package/dist/progress/serialize-telegram.js.map +1 -1
- package/dist/progress/tool-summary.js +3 -1
- package/dist/progress/tool-summary.js.map +1 -1
- package/dist/progress/turn-progress.js +3 -1
- package/dist/progress/turn-progress.js.map +1 -1
- package/dist/recovery.js +11 -3
- package/dist/recovery.js.map +1 -1
- package/dist/replay.js +9 -3
- package/dist/replay.js.map +1 -1
- package/dist/replay_cli.js +5 -3
- package/dist/replay_cli.js.map +1 -1
- package/dist/runtime/executor.js +66 -20
- package/dist/runtime/executor.js.map +1 -1
- package/dist/runtime/health.js.map +1 -1
- package/dist/runtime/host-runner.js +103 -0
- package/dist/runtime/host-runner.js.map +1 -0
- package/dist/runtime/planner.js +3 -1
- package/dist/runtime/planner.js.map +1 -1
- package/dist/runtime/secrets.js +102 -0
- package/dist/runtime/secrets.js.map +1 -0
- package/dist/runtime/store.js +95 -19
- package/dist/runtime/store.js.map +1 -1
- package/dist/safety.js +38 -21
- package/dist/safety.js.map +1 -1
- package/dist/spinner.js +7 -8
- package/dist/spinner.js.map +1 -1
- package/dist/sys/context.js +3 -3
- package/dist/sys/context.js.map +1 -1
- package/dist/term.js +1 -1
- package/dist/term.js.map +1 -1
- package/dist/themes.js +11 -5
- package/dist/themes.js.map +1 -1
- package/dist/tools/tool-error.js +2 -5
- package/dist/tools/tool-error.js.map +1 -1
- package/dist/tools.js +84 -35
- package/dist/tools.js.map +1 -1
- package/dist/tui/branch-picker.js +9 -3
- package/dist/tui/branch-picker.js.map +1 -1
- package/dist/tui/command-handler.js +88 -36
- package/dist/tui/command-handler.js.map +1 -1
- package/dist/tui/confirm.js.map +1 -1
- package/dist/tui/controller.js +234 -117
- package/dist/tui/controller.js.map +1 -1
- package/dist/tui/event-bridge.js.map +1 -1
- package/dist/tui/keymap.js +93 -71
- package/dist/tui/keymap.js.map +1 -1
- package/dist/tui/layout.js +9 -1
- package/dist/tui/layout.js.map +1 -1
- package/dist/tui/render.js +17 -5
- package/dist/tui/render.js.map +1 -1
- package/dist/tui/screen.js.map +1 -1
- package/dist/tui/state.js +129 -63
- package/dist/tui/state.js.map +1 -1
- package/dist/tui/theme.js +12 -3
- package/dist/tui/theme.js.map +1 -1
- package/dist/upgrade.js +28 -15
- package/dist/upgrade.js.map +1 -1
- package/dist/utils.js +8 -5
- package/dist/utils.js.map +1 -1
- package/dist/vault.js +48 -12
- package/dist/vault.js.map +1 -1
- package/dist/vim.js.map +1 -1
- package/package.json +11 -2
package/dist/git.js
CHANGED
|
@@ -1,27 +1,19 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
child = spawn(BASH, ['-lc', cmd], { cwd, stdio: ['ignore', 'pipe', 'ignore'] });
|
|
8
|
-
}
|
|
9
|
-
catch {
|
|
10
|
-
resolve({ rc: 127, out: '' });
|
|
11
|
-
return;
|
|
12
|
-
}
|
|
13
|
-
const out = [];
|
|
14
|
-
const t = setTimeout(() => child.kill('SIGKILL'), Math.max(1, timeoutSec) * 1000);
|
|
15
|
-
child.on('error', () => {
|
|
16
|
-
clearTimeout(t);
|
|
17
|
-
resolve({ rc: 127, out: '' });
|
|
18
|
-
});
|
|
19
|
-
child.stdout.on('data', (d) => out.push(d));
|
|
20
|
-
child.on('close', (code) => {
|
|
21
|
-
clearTimeout(t);
|
|
22
|
-
resolve({ rc: code ?? 0, out: Buffer.concat(out).toString('utf8') });
|
|
23
|
-
});
|
|
1
|
+
import { spawnSync } from 'node:child_process';
|
|
2
|
+
function runGit(cwd, args, timeoutMs) {
|
|
3
|
+
const res = spawnSync('git', args, {
|
|
4
|
+
cwd,
|
|
5
|
+
encoding: 'utf8',
|
|
6
|
+
timeout: timeoutMs,
|
|
24
7
|
});
|
|
8
|
+
return {
|
|
9
|
+
status: res.status ?? 1,
|
|
10
|
+
stdout: String(res.stdout || ''),
|
|
11
|
+
stderr: String(res.stderr || ''),
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
function isInsideWorkTree(cwd) {
|
|
15
|
+
const inside = runGit(cwd, ['rev-parse', '--is-inside-work-tree'], 1000);
|
|
16
|
+
return inside.status === 0 && inside.stdout.trim().startsWith('true');
|
|
25
17
|
}
|
|
26
18
|
function clipLines(s, maxLines, maxChars) {
|
|
27
19
|
const lines = s.split(/\r?\n/).filter(Boolean);
|
|
@@ -35,26 +27,25 @@ function clipLines(s, maxLines, maxChars) {
|
|
|
35
27
|
}
|
|
36
28
|
export async function loadGitContext(cwd) {
|
|
37
29
|
// Avoid slow git operations; keep it short and bounded.
|
|
38
|
-
|
|
39
|
-
if (inside.rc !== 0 || !inside.out.trim().startsWith('true'))
|
|
30
|
+
if (!isInsideWorkTree(cwd))
|
|
40
31
|
return '';
|
|
41
|
-
const branch =
|
|
42
|
-
const status =
|
|
43
|
-
const diffstat =
|
|
44
|
-
const recent =
|
|
32
|
+
const branch = runGit(cwd, ['rev-parse', '--abbrev-ref', 'HEAD'], 1000).stdout;
|
|
33
|
+
const status = runGit(cwd, ['status', '-s'], 2000).stdout;
|
|
34
|
+
const diffstat = runGit(cwd, ['diff', '--stat'], 2000).stdout;
|
|
35
|
+
const recent = runGit(cwd, ['log', '--oneline', '-5'], 2000).stdout;
|
|
45
36
|
const parts = [];
|
|
46
|
-
parts.push(`[git branch: ${branch.
|
|
47
|
-
const st = clipLines(status
|
|
37
|
+
parts.push(`[git branch: ${branch.trim() || 'unknown'}]`);
|
|
38
|
+
const st = clipLines(status, 40, 2000);
|
|
48
39
|
if (st.trim()) {
|
|
49
40
|
parts.push('[git status -s]');
|
|
50
41
|
parts.push(st);
|
|
51
42
|
}
|
|
52
|
-
const ds = clipLines(diffstat
|
|
43
|
+
const ds = clipLines(diffstat, 40, 2000);
|
|
53
44
|
if (ds.trim()) {
|
|
54
45
|
parts.push('[git diff --stat]');
|
|
55
46
|
parts.push(ds);
|
|
56
47
|
}
|
|
57
|
-
const lg = clipLines(recent
|
|
48
|
+
const lg = clipLines(recent, 8, 1200);
|
|
58
49
|
if (lg.trim()) {
|
|
59
50
|
parts.push('[git log --oneline -5]');
|
|
60
51
|
parts.push(lg);
|
|
@@ -62,73 +53,77 @@ export async function loadGitContext(cwd) {
|
|
|
62
53
|
return parts.join('\n');
|
|
63
54
|
}
|
|
64
55
|
export function isGitDirty(cwd) {
|
|
65
|
-
|
|
66
|
-
if (inside.status !== 0 || !String(inside.stdout || '').trim().startsWith('true'))
|
|
56
|
+
if (!isInsideWorkTree(cwd))
|
|
67
57
|
return false;
|
|
68
|
-
const st =
|
|
69
|
-
return st.status === 0 &&
|
|
58
|
+
const st = runGit(cwd, ['status', '--porcelain'], 1500);
|
|
59
|
+
return st.status === 0 && st.stdout.trim().length > 0;
|
|
70
60
|
}
|
|
71
61
|
export function stashWorkingTree(cwd) {
|
|
72
62
|
const stamp = new Date().toISOString();
|
|
73
|
-
const res =
|
|
74
|
-
const out = `${res.stdout
|
|
63
|
+
const res = runGit(cwd, ['stash', 'push', '-u', '-m', `idlehands auto-stash ${stamp}`], 5000);
|
|
64
|
+
const out = `${res.stdout}${res.stderr}`.trim();
|
|
75
65
|
if (res.status === 0)
|
|
76
66
|
return { ok: true, message: out || 'stashed' };
|
|
77
|
-
return { ok: false, message: out || `git stash failed (rc=${res.status
|
|
67
|
+
return { ok: false, message: out || `git stash failed (rc=${res.status})` };
|
|
78
68
|
}
|
|
79
69
|
export async function loadGitStartupSummary(cwd) {
|
|
80
|
-
|
|
81
|
-
if (inside.rc !== 0 || !inside.out.trim().startsWith('true'))
|
|
70
|
+
if (!isInsideWorkTree(cwd))
|
|
82
71
|
return '';
|
|
83
|
-
const branch = (
|
|
84
|
-
const status = (
|
|
72
|
+
const branch = runGit(cwd, ['rev-parse', '--abbrev-ref', 'HEAD'], 1000).stdout.trim() || 'unknown';
|
|
73
|
+
const status = runGit(cwd, ['status', '--porcelain'], 2000).stdout.split(/\r?\n/).filter(Boolean);
|
|
85
74
|
const modified = status.filter((l) => /^[ MARC][MDARC]/.test(l) || /^[MDARC][ MARC]/.test(l)).length;
|
|
86
75
|
const untracked = status.filter((l) => l.startsWith('??')).length;
|
|
87
76
|
return `${modified} modified files, ${untracked} untracked, on branch ${branch}`;
|
|
88
77
|
}
|
|
89
78
|
export function ensureCleanWorkingTree(cwd) {
|
|
90
79
|
if (isGitDirty(cwd)) {
|
|
91
|
-
throw new Error(
|
|
80
|
+
throw new Error('Anton: Working tree not clean. Commit or stash first.');
|
|
92
81
|
}
|
|
93
82
|
}
|
|
94
83
|
export function getWorkingDiff(cwd) {
|
|
95
|
-
|
|
96
|
-
if (inside.status !== 0 || !String(inside.stdout || '').trim().startsWith('true'))
|
|
84
|
+
if (!isInsideWorkTree(cwd))
|
|
97
85
|
return '';
|
|
98
|
-
const res =
|
|
99
|
-
return
|
|
86
|
+
const res = runGit(cwd, ['diff', 'HEAD'], 30000);
|
|
87
|
+
return res.stdout;
|
|
100
88
|
}
|
|
101
89
|
export function commitAll(cwd, message) {
|
|
102
|
-
const
|
|
103
|
-
if (
|
|
90
|
+
const addRes = runGit(cwd, ['add', '-A'], 30000);
|
|
91
|
+
if (addRes.status !== 0) {
|
|
92
|
+
throw new Error(`git add failed: ${addRes.stderr || addRes.stdout || 'unknown error'}`);
|
|
93
|
+
}
|
|
94
|
+
const commitRes = runGit(cwd, ['commit', '-m', message], 30000);
|
|
95
|
+
if (commitRes.status !== 0) {
|
|
104
96
|
// Check if it's because there's nothing to commit
|
|
105
|
-
const status =
|
|
106
|
-
if (status.status === 0 &&
|
|
97
|
+
const status = runGit(cwd, ['status', '--porcelain'], 1500);
|
|
98
|
+
if (status.status === 0 && status.stdout.trim().length === 0) {
|
|
107
99
|
return '';
|
|
108
100
|
}
|
|
109
|
-
throw new Error(`git commit failed: ${
|
|
101
|
+
throw new Error(`git commit failed: ${commitRes.stderr || commitRes.stdout || 'unknown error'}`);
|
|
110
102
|
}
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
return String(hashRes.stdout || '').trim();
|
|
103
|
+
const hashRes = runGit(cwd, ['rev-parse', '--short', 'HEAD'], 30000);
|
|
104
|
+
return hashRes.stdout.trim();
|
|
114
105
|
}
|
|
115
106
|
export function commitAmend(cwd) {
|
|
116
|
-
const
|
|
107
|
+
const addRes = runGit(cwd, ['add', '-A'], 30000);
|
|
108
|
+
if (addRes.status !== 0) {
|
|
109
|
+
throw new Error(`git add failed: ${addRes.stderr || addRes.stdout || 'unknown error'}`);
|
|
110
|
+
}
|
|
111
|
+
const res = runGit(cwd, ['commit', '--amend', '--no-edit'], 30000);
|
|
117
112
|
if (res.status !== 0) {
|
|
118
113
|
throw new Error(`git commit --amend failed: ${res.stderr || res.stdout || 'unknown error'}`);
|
|
119
114
|
}
|
|
120
115
|
}
|
|
121
116
|
export function restoreTrackedChanges(cwd) {
|
|
122
|
-
|
|
117
|
+
runGit(cwd, ['checkout', '--', '.'], 30000);
|
|
123
118
|
}
|
|
124
119
|
export function cleanUntracked(cwd) {
|
|
125
|
-
const res =
|
|
120
|
+
const res = runGit(cwd, ['clean', '-fd'], 30000);
|
|
126
121
|
if (res.status !== 0) {
|
|
127
122
|
throw new Error(`git clean failed: ${res.stderr || res.stdout || 'unknown error'}`);
|
|
128
123
|
}
|
|
129
124
|
}
|
|
130
125
|
export function createBranch(cwd, name) {
|
|
131
|
-
const res =
|
|
126
|
+
const res = runGit(cwd, ['checkout', '-b', name], 30000);
|
|
132
127
|
if (res.status !== 0) {
|
|
133
128
|
throw new Error(`git checkout -b failed: ${res.stderr || res.stdout || 'unknown error'}`);
|
|
134
129
|
}
|
package/dist/git.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git.js","sourceRoot":"","sources":["../src/git.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"git.js","sourceRoot":"","sources":["../src/git.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,SAAS,MAAM,CACb,GAAW,EACX,IAAc,EACd,SAAiB;IAEjB,MAAM,GAAG,GAAG,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE;QACjC,GAAG;QACH,QAAQ,EAAE,MAAM;QAChB,OAAO,EAAE,SAAS;KACnB,CAAC,CAAC;IACH,OAAO;QACL,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,CAAC;QACvB,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC;QAChC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC;KACjC,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,GAAW;IACnC,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,uBAAuB,CAAC,EAAE,IAAI,CAAC,CAAC;IACzE,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AACxE,CAAC;AAED,SAAS,SAAS,CAAC,CAAS,EAAE,QAAgB,EAAE,QAAgB;IAC9D,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC/C,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IACzC,IAAI,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B,IAAI,GAAG,CAAC,MAAM,GAAG,QAAQ;QAAE,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,eAAe,CAAC;IAC1E,IAAI,KAAK,CAAC,MAAM,GAAG,QAAQ;QAAE,GAAG,IAAI,iBAAiB,KAAK,CAAC,MAAM,GAAG,QAAQ,cAAc,CAAC;IAC3F,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,GAAW;IAC9C,wDAAwD;IACxD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IAEtC,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC;IAC/E,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC;IAC1D,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC;IAC9D,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC;IAEpE,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,gBAAgB,MAAM,CAAC,IAAI,EAAE,IAAI,SAAS,GAAG,CAAC,CAAC;IAE1D,MAAM,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;IACvC,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;QACd,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC9B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,MAAM,EAAE,GAAG,SAAS,CAAC,QAAQ,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;IACzC,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;QACd,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAChC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,MAAM,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;IACtC,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;QACd,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QACrC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,GAAW;IACpC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IACzC,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC,EAAE,IAAI,CAAC,CAAC;IACxD,OAAO,EAAE,CAAC,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,GAAW;IAC1C,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACvC,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,wBAAwB,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;IAC9F,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;IAChD,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,SAAS,EAAE,CAAC;IACrE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI,wBAAwB,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC;AAC9E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,GAAW;IACrD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IAEtC,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,SAAS,CAAC;IACnG,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAClG,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAC5B,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAC9D,CAAC,MAAM,CAAC;IACT,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;IAElE,OAAO,GAAG,QAAQ,oBAAoB,SAAS,yBAAyB,MAAM,EAAE,CAAC;AACnF,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,GAAW;IAChD,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC3E,CAAC;AACH,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,GAAW;IACxC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IACtC,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC;IACjD,OAAO,GAAG,CAAC,MAAM,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,GAAW,EAAE,OAAe;IACpD,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;IACjD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,mBAAmB,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,IAAI,eAAe,EAAE,CAAC,CAAC;IAC1F,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC;IAChE,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,kDAAkD;QAClD,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC,EAAE,IAAI,CAAC,CAAC;QAC5D,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7D,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,sBAAsB,SAAS,CAAC,MAAM,IAAI,SAAS,CAAC,MAAM,IAAI,eAAe,EAAE,CAAC,CAAC;IACnG,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC;IACrE,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;IACjD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,mBAAmB,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,IAAI,eAAe,EAAE,CAAC,CAAC;IAC1F,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,KAAK,CAAC,CAAC;IACnE,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,8BAA8B,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,eAAe,EAAE,CAAC,CAAC;IAC/F,CAAC;AACH,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,GAAW;IAC/C,MAAM,CAAC,GAAG,EAAE,CAAC,UAAU,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,GAAW;IACxC,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;IACjD,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,qBAAqB,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,eAAe,EAAE,CAAC,CAAC;IACtF,CAAC;AACH,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,GAAW,EAAE,IAAY;IACpD,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;IACzD,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,2BAA2B,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,eAAe,EAAE,CAAC,CAAC;IAC5F,CAAC;AACH,CAAC"}
|
package/dist/harnesses.js
CHANGED
|
@@ -2,88 +2,191 @@ import { readFileSync, readdirSync } from 'node:fs';
|
|
|
2
2
|
import { join } from 'node:path';
|
|
3
3
|
import { configDir } from './utils.js';
|
|
4
4
|
/** Default behavioral configs used to fill gaps in user-defined harnesses and inline definitions */
|
|
5
|
-
const DEFAULT_THINKING = {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
const DEFAULT_THINKING = {
|
|
6
|
+
format: 'xml',
|
|
7
|
+
openTag: '<think>',
|
|
8
|
+
closeTag: '</think>',
|
|
9
|
+
strip: true,
|
|
10
|
+
};
|
|
11
|
+
const DEFAULT_TOOL_CALLS = {
|
|
12
|
+
reliableToolCallsArray: false,
|
|
13
|
+
contentFallbackLikely: true,
|
|
14
|
+
parallelCalls: true,
|
|
15
|
+
retryOnMalformed: 3,
|
|
16
|
+
};
|
|
17
|
+
const DEFAULT_QUIRKS = {
|
|
18
|
+
omitsRequiredParams: false,
|
|
19
|
+
loopsOnToolError: false,
|
|
20
|
+
emitsMarkdownInToolArgs: false,
|
|
21
|
+
needsExplicitToolCallFormatReminder: false,
|
|
22
|
+
};
|
|
23
|
+
const QUIRKS_NEEDS_REMINDER = {
|
|
24
|
+
...DEFAULT_QUIRKS,
|
|
25
|
+
needsExplicitToolCallFormatReminder: true,
|
|
26
|
+
};
|
|
9
27
|
const HARNESS = [
|
|
10
28
|
{
|
|
11
29
|
id: 'qwen3-coder',
|
|
12
30
|
match: [/qwen3-coder/i],
|
|
13
31
|
description: 'Qwen3-Coder family (tool-native MoE)',
|
|
14
|
-
defaults: {
|
|
32
|
+
defaults: {
|
|
33
|
+
temperature: 0.2,
|
|
34
|
+
top_p: 0.95,
|
|
35
|
+
max_tokens: 32768,
|
|
36
|
+
trifecta: { vaultMode: 'active' },
|
|
37
|
+
},
|
|
15
38
|
thinking: { format: 'xml', openTag: '<think>', closeTag: '</think>', strip: true },
|
|
16
|
-
toolCalls: {
|
|
39
|
+
toolCalls: {
|
|
40
|
+
reliableToolCallsArray: false,
|
|
41
|
+
contentFallbackLikely: true,
|
|
42
|
+
parallelCalls: true,
|
|
43
|
+
retryOnMalformed: 3,
|
|
44
|
+
},
|
|
17
45
|
quirks: DEFAULT_QUIRKS,
|
|
18
|
-
systemPromptSuffix: 'Prefer apply_patch or edit_range for most edits. Use write_file for full rewrites, and use edit_file only for exact old_text replacement when necessary.\nWhen answering questions about code, search first (search_files or grep), then read only the relevant files. Never scan an entire directory by reading files one by one.'
|
|
46
|
+
systemPromptSuffix: 'Prefer apply_patch or edit_range for most edits. Use write_file for full rewrites, and use edit_file only for exact old_text replacement when necessary.\nWhen answering questions about code, search first (search_files or grep), then read only the relevant files. Never scan an entire directory by reading files one by one.',
|
|
19
47
|
},
|
|
20
48
|
{
|
|
21
49
|
id: 'qwen3-moe',
|
|
22
50
|
match: [/qwen3/i],
|
|
23
51
|
description: 'Qwen3 MoE family (non-coder variants)',
|
|
24
|
-
defaults: {
|
|
52
|
+
defaults: {
|
|
53
|
+
temperature: 0.2,
|
|
54
|
+
top_p: 0.95,
|
|
55
|
+
max_tokens: 16384,
|
|
56
|
+
trifecta: { vaultMode: 'passive' },
|
|
57
|
+
},
|
|
25
58
|
thinking: { format: 'xml', openTag: '<think>', closeTag: '</think>', strip: true },
|
|
26
|
-
toolCalls: {
|
|
59
|
+
toolCalls: {
|
|
60
|
+
reliableToolCallsArray: true,
|
|
61
|
+
contentFallbackLikely: true,
|
|
62
|
+
parallelCalls: true,
|
|
63
|
+
retryOnMalformed: 2,
|
|
64
|
+
},
|
|
27
65
|
quirks: QUIRKS_NEEDS_REMINDER,
|
|
28
|
-
systemPromptSuffix: 'When answering questions about code, search first (search_files or grep), then read only the relevant files. Never scan an entire directory by reading files one by one.'
|
|
66
|
+
systemPromptSuffix: 'When answering questions about code, search first (search_files or grep), then read only the relevant files. Never scan an entire directory by reading files one by one.',
|
|
29
67
|
},
|
|
30
68
|
{
|
|
31
69
|
id: 'qwen',
|
|
32
70
|
match: [/qwen/i],
|
|
33
71
|
description: 'Qwen family (generic, includes Qwen2.5)',
|
|
34
|
-
defaults: {
|
|
72
|
+
defaults: {
|
|
73
|
+
temperature: 0.2,
|
|
74
|
+
top_p: 0.95,
|
|
75
|
+
max_tokens: 16384,
|
|
76
|
+
trifecta: { vaultMode: 'passive' },
|
|
77
|
+
},
|
|
35
78
|
thinking: { format: 'none', strip: false },
|
|
36
|
-
toolCalls: {
|
|
37
|
-
|
|
79
|
+
toolCalls: {
|
|
80
|
+
reliableToolCallsArray: true,
|
|
81
|
+
contentFallbackLikely: true,
|
|
82
|
+
parallelCalls: true,
|
|
83
|
+
retryOnMalformed: 2,
|
|
84
|
+
},
|
|
85
|
+
quirks: QUIRKS_NEEDS_REMINDER,
|
|
38
86
|
},
|
|
39
87
|
{
|
|
40
88
|
id: 'nemotron',
|
|
41
89
|
match: [/nemotron/i],
|
|
42
90
|
description: 'Nemotron family — loops on errors, omits params, low agent quality',
|
|
43
|
-
defaults: {
|
|
91
|
+
defaults: {
|
|
92
|
+
temperature: 0.2,
|
|
93
|
+
top_p: 0.95,
|
|
94
|
+
max_tokens: 16384,
|
|
95
|
+
trifecta: { vaultMode: 'passive' },
|
|
96
|
+
},
|
|
44
97
|
thinking: { format: 'none', strip: false },
|
|
45
|
-
toolCalls: {
|
|
46
|
-
|
|
98
|
+
toolCalls: {
|
|
99
|
+
reliableToolCallsArray: false,
|
|
100
|
+
contentFallbackLikely: true,
|
|
101
|
+
parallelCalls: false,
|
|
102
|
+
retryOnMalformed: 1,
|
|
103
|
+
},
|
|
104
|
+
quirks: {
|
|
105
|
+
...QUIRKS_NEEDS_REMINDER,
|
|
106
|
+
omitsRequiredParams: true,
|
|
107
|
+
loopsOnToolError: true,
|
|
108
|
+
maxIterationsOverride: 10,
|
|
109
|
+
},
|
|
47
110
|
},
|
|
48
111
|
{
|
|
49
112
|
id: 'mistral',
|
|
50
113
|
match: [/mistral/i],
|
|
51
114
|
description: 'Mistral family — no thinking tokens, may need chat-template-file',
|
|
52
|
-
defaults: {
|
|
115
|
+
defaults: {
|
|
116
|
+
temperature: 0.2,
|
|
117
|
+
top_p: 0.95,
|
|
118
|
+
max_tokens: 16384,
|
|
119
|
+
trifecta: { vaultMode: 'passive' },
|
|
120
|
+
},
|
|
53
121
|
thinking: { format: 'none', strip: false },
|
|
54
|
-
toolCalls: {
|
|
55
|
-
|
|
122
|
+
toolCalls: {
|
|
123
|
+
reliableToolCallsArray: true,
|
|
124
|
+
contentFallbackLikely: false,
|
|
125
|
+
parallelCalls: true,
|
|
126
|
+
retryOnMalformed: 2,
|
|
127
|
+
},
|
|
128
|
+
quirks: DEFAULT_QUIRKS,
|
|
56
129
|
},
|
|
57
130
|
{
|
|
58
131
|
id: 'gpt-oss',
|
|
59
132
|
match: [/gpt-oss/i, /gpt_oss/i],
|
|
60
133
|
description: 'GPT-OSS — correct tool format but bad decisions, scans everything',
|
|
61
|
-
defaults: {
|
|
134
|
+
defaults: {
|
|
135
|
+
temperature: 0.2,
|
|
136
|
+
top_p: 0.95,
|
|
137
|
+
max_tokens: 16384,
|
|
138
|
+
trifecta: { vaultMode: 'passive' },
|
|
139
|
+
},
|
|
62
140
|
thinking: { format: 'none', strip: false },
|
|
63
|
-
toolCalls: {
|
|
141
|
+
toolCalls: {
|
|
142
|
+
reliableToolCallsArray: true,
|
|
143
|
+
contentFallbackLikely: false,
|
|
144
|
+
parallelCalls: true,
|
|
145
|
+
retryOnMalformed: 2,
|
|
146
|
+
},
|
|
64
147
|
quirks: { ...DEFAULT_QUIRKS, maxIterationsOverride: 10 },
|
|
65
|
-
systemPromptSuffix: 'When answering questions about code, search first (search_files or grep), then read only the relevant files. Never scan an entire directory by reading files one by one.'
|
|
148
|
+
systemPromptSuffix: 'When answering questions about code, search first (search_files or grep), then read only the relevant files. Never scan an entire directory by reading files one by one.',
|
|
66
149
|
},
|
|
67
150
|
{
|
|
68
151
|
id: 'llama',
|
|
69
152
|
match: [/llama/i],
|
|
70
153
|
description: 'Llama family (llama.cpp style)',
|
|
71
|
-
defaults: {
|
|
154
|
+
defaults: {
|
|
155
|
+
temperature: 0.2,
|
|
156
|
+
top_p: 0.95,
|
|
157
|
+
max_tokens: 16384,
|
|
158
|
+
trifecta: { vaultMode: 'passive' },
|
|
159
|
+
},
|
|
72
160
|
thinking: { format: 'none', strip: false },
|
|
73
|
-
toolCalls: {
|
|
161
|
+
toolCalls: {
|
|
162
|
+
reliableToolCallsArray: false,
|
|
163
|
+
contentFallbackLikely: true,
|
|
164
|
+
parallelCalls: false,
|
|
165
|
+
retryOnMalformed: 2,
|
|
166
|
+
},
|
|
74
167
|
quirks: QUIRKS_NEEDS_REMINDER,
|
|
75
|
-
systemPromptSuffix: 'When answering questions about code, search first (search_files or grep), then read only the relevant files. Never scan an entire directory by reading files one by one.'
|
|
168
|
+
systemPromptSuffix: 'When answering questions about code, search first (search_files or grep), then read only the relevant files. Never scan an entire directory by reading files one by one.',
|
|
76
169
|
},
|
|
77
170
|
{
|
|
78
171
|
id: 'generic',
|
|
79
172
|
match: [/.*/],
|
|
80
173
|
description: 'Generic fallback harness — conservative, all fallbacks enabled',
|
|
81
|
-
defaults: {
|
|
174
|
+
defaults: {
|
|
175
|
+
temperature: 0.2,
|
|
176
|
+
top_p: 0.95,
|
|
177
|
+
max_tokens: 16384,
|
|
178
|
+
trifecta: { vaultMode: 'passive' },
|
|
179
|
+
},
|
|
82
180
|
thinking: { format: 'xml', openTag: '<think>', closeTag: '</think>', strip: true },
|
|
83
|
-
toolCalls: {
|
|
181
|
+
toolCalls: {
|
|
182
|
+
reliableToolCallsArray: false,
|
|
183
|
+
contentFallbackLikely: true,
|
|
184
|
+
parallelCalls: true,
|
|
185
|
+
retryOnMalformed: 3,
|
|
186
|
+
},
|
|
84
187
|
quirks: DEFAULT_QUIRKS,
|
|
85
|
-
systemPromptSuffix: 'When answering questions about code, search first (search_files or grep), then read only the relevant files. Never scan an entire directory by reading files one by one.'
|
|
86
|
-
}
|
|
188
|
+
systemPromptSuffix: 'When answering questions about code, search first (search_files or grep), then read only the relevant files. Never scan an entire directory by reading files one by one.',
|
|
189
|
+
},
|
|
87
190
|
];
|
|
88
191
|
/**
|
|
89
192
|
* Load user-defined harnesses from ~/.config/idlehands/harnesses/*.json
|
|
@@ -94,7 +197,7 @@ function loadUserHarnesses() {
|
|
|
94
197
|
const dir = join(configDir(), 'harnesses');
|
|
95
198
|
let files;
|
|
96
199
|
try {
|
|
97
|
-
files = readdirSync(dir).filter(f => f.endsWith('.json'));
|
|
200
|
+
files = readdirSync(dir).filter((f) => f.endsWith('.json'));
|
|
98
201
|
}
|
|
99
202
|
catch {
|
|
100
203
|
return [];
|
|
@@ -114,12 +217,12 @@ function loadUserHarnesses() {
|
|
|
114
217
|
temperature: raw.params?.temperature ?? raw.defaults?.temperature,
|
|
115
218
|
top_p: raw.params?.top_p ?? raw.defaults?.top_p,
|
|
116
219
|
max_tokens: raw.params?.max_tokens ?? raw.defaults?.max_tokens,
|
|
117
|
-
trifecta: raw.defaults?.trifecta
|
|
220
|
+
trifecta: raw.defaults?.trifecta,
|
|
118
221
|
},
|
|
119
222
|
thinking: { ...DEFAULT_THINKING, ...(raw.thinking ?? {}) },
|
|
120
223
|
toolCalls: { ...DEFAULT_TOOL_CALLS, ...(raw.toolCalls ?? {}) },
|
|
121
224
|
quirks: { ...DEFAULT_QUIRKS, ...(raw.quirks ?? {}) },
|
|
122
|
-
systemPromptSuffix: raw.systemPromptSuffix
|
|
225
|
+
systemPromptSuffix: raw.systemPromptSuffix,
|
|
123
226
|
};
|
|
124
227
|
result.push(harness);
|
|
125
228
|
}
|
|
@@ -140,11 +243,8 @@ function getMergedHarnesses() {
|
|
|
140
243
|
return HARNESS;
|
|
141
244
|
}
|
|
142
245
|
// User harnesses override built-ins by id, then remaining built-ins follow
|
|
143
|
-
const userIds = new Set(user.map(h => h.id));
|
|
144
|
-
const merged = [
|
|
145
|
-
...user,
|
|
146
|
-
...HARNESS.filter(h => !userIds.has(h.id))
|
|
147
|
-
];
|
|
246
|
+
const userIds = new Set(user.map((h) => h.id));
|
|
247
|
+
const merged = [...user, ...HARNESS.filter((h) => !userIds.has(h.id))];
|
|
148
248
|
_mergedHarnesses = merged;
|
|
149
249
|
return merged;
|
|
150
250
|
}
|
package/dist/harnesses.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"harnesses.js","sourceRoot":"","sources":["../src/harnesses.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"harnesses.js","sourceRoot":"","sources":["../src/harnesses.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AA4DvC,oGAAoG;AACpG,MAAM,gBAAgB,GAAoB;IACxC,MAAM,EAAE,KAAK;IACb,OAAO,EAAE,SAAS;IAClB,QAAQ,EAAE,UAAU;IACpB,KAAK,EAAE,IAAI;CACZ,CAAC;AACF,MAAM,kBAAkB,GAAqB;IAC3C,sBAAsB,EAAE,KAAK;IAC7B,qBAAqB,EAAE,IAAI;IAC3B,aAAa,EAAE,IAAI;IACnB,gBAAgB,EAAE,CAAC;CACpB,CAAC;AACF,MAAM,cAAc,GAAkB;IACpC,mBAAmB,EAAE,KAAK;IAC1B,gBAAgB,EAAE,KAAK;IACvB,uBAAuB,EAAE,KAAK;IAC9B,mCAAmC,EAAE,KAAK;CAC3C,CAAC;AACF,MAAM,qBAAqB,GAAkB;IAC3C,GAAG,cAAc;IACjB,mCAAmC,EAAE,IAAI;CAC1C,CAAC;AAEF,MAAM,OAAO,GAAc;IACzB;QACE,EAAE,EAAE,aAAa;QACjB,KAAK,EAAE,CAAC,cAAc,CAAC;QACvB,WAAW,EAAE,sCAAsC;QACnD,QAAQ,EAAE;YACR,WAAW,EAAE,GAAG;YAChB,KAAK,EAAE,IAAI;YACX,UAAU,EAAE,KAAK;YACjB,QAAQ,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE;SAClC;QACD,QAAQ,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE;QAClF,SAAS,EAAE;YACT,sBAAsB,EAAE,KAAK;YAC7B,qBAAqB,EAAE,IAAI;YAC3B,aAAa,EAAE,IAAI;YACnB,gBAAgB,EAAE,CAAC;SACpB;QACD,MAAM,EAAE,cAAc;QACtB,kBAAkB,EAChB,oUAAoU;KACvU;IACD;QACE,EAAE,EAAE,WAAW;QACf,KAAK,EAAE,CAAC,QAAQ,CAAC;QACjB,WAAW,EAAE,uCAAuC;QACpD,QAAQ,EAAE;YACR,WAAW,EAAE,GAAG;YAChB,KAAK,EAAE,IAAI;YACX,UAAU,EAAE,KAAK;YACjB,QAAQ,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE;SACnC;QACD,QAAQ,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE;QAClF,SAAS,EAAE;YACT,sBAAsB,EAAE,IAAI;YAC5B,qBAAqB,EAAE,IAAI;YAC3B,aAAa,EAAE,IAAI;YACnB,gBAAgB,EAAE,CAAC;SACpB;QACD,MAAM,EAAE,qBAAqB;QAC7B,kBAAkB,EAChB,0KAA0K;KAC7K;IACD;QACE,EAAE,EAAE,MAAM;QACV,KAAK,EAAE,CAAC,OAAO,CAAC;QAChB,WAAW,EAAE,yCAAyC;QACtD,QAAQ,EAAE;YACR,WAAW,EAAE,GAAG;YAChB,KAAK,EAAE,IAAI;YACX,UAAU,EAAE,KAAK;YACjB,QAAQ,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE;SACnC;QACD,QAAQ,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE;QAC1C,SAAS,EAAE;YACT,sBAAsB,EAAE,IAAI;YAC5B,qBAAqB,EAAE,IAAI;YAC3B,aAAa,EAAE,IAAI;YACnB,gBAAgB,EAAE,CAAC;SACpB;QACD,MAAM,EAAE,qBAAqB;KAC9B;IACD;QACE,EAAE,EAAE,UAAU;QACd,KAAK,EAAE,CAAC,WAAW,CAAC;QACpB,WAAW,EAAE,oEAAoE;QACjF,QAAQ,EAAE;YACR,WAAW,EAAE,GAAG;YAChB,KAAK,EAAE,IAAI;YACX,UAAU,EAAE,KAAK;YACjB,QAAQ,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE;SACnC;QACD,QAAQ,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE;QAC1C,SAAS,EAAE;YACT,sBAAsB,EAAE,KAAK;YAC7B,qBAAqB,EAAE,IAAI;YAC3B,aAAa,EAAE,KAAK;YACpB,gBAAgB,EAAE,CAAC;SACpB;QACD,MAAM,EAAE;YACN,GAAG,qBAAqB;YACxB,mBAAmB,EAAE,IAAI;YACzB,gBAAgB,EAAE,IAAI;YACtB,qBAAqB,EAAE,EAAE;SAC1B;KACF;IACD;QACE,EAAE,EAAE,SAAS;QACb,KAAK,EAAE,CAAC,UAAU,CAAC;QACnB,WAAW,EAAE,kEAAkE;QAC/E,QAAQ,EAAE;YACR,WAAW,EAAE,GAAG;YAChB,KAAK,EAAE,IAAI;YACX,UAAU,EAAE,KAAK;YACjB,QAAQ,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE;SACnC;QACD,QAAQ,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE;QAC1C,SAAS,EAAE;YACT,sBAAsB,EAAE,IAAI;YAC5B,qBAAqB,EAAE,KAAK;YAC5B,aAAa,EAAE,IAAI;YACnB,gBAAgB,EAAE,CAAC;SACpB;QACD,MAAM,EAAE,cAAc;KACvB;IACD;QACE,EAAE,EAAE,SAAS;QACb,KAAK,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC;QAC/B,WAAW,EAAE,mEAAmE;QAChF,QAAQ,EAAE;YACR,WAAW,EAAE,GAAG;YAChB,KAAK,EAAE,IAAI;YACX,UAAU,EAAE,KAAK;YACjB,QAAQ,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE;SACnC;QACD,QAAQ,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE;QAC1C,SAAS,EAAE;YACT,sBAAsB,EAAE,IAAI;YAC5B,qBAAqB,EAAE,KAAK;YAC5B,aAAa,EAAE,IAAI;YACnB,gBAAgB,EAAE,CAAC;SACpB;QACD,MAAM,EAAE,EAAE,GAAG,cAAc,EAAE,qBAAqB,EAAE,EAAE,EAAE;QACxD,kBAAkB,EAChB,0KAA0K;KAC7K;IACD;QACE,EAAE,EAAE,OAAO;QACX,KAAK,EAAE,CAAC,QAAQ,CAAC;QACjB,WAAW,EAAE,gCAAgC;QAC7C,QAAQ,EAAE;YACR,WAAW,EAAE,GAAG;YAChB,KAAK,EAAE,IAAI;YACX,UAAU,EAAE,KAAK;YACjB,QAAQ,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE;SACnC;QACD,QAAQ,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE;QAC1C,SAAS,EAAE;YACT,sBAAsB,EAAE,KAAK;YAC7B,qBAAqB,EAAE,IAAI;YAC3B,aAAa,EAAE,KAAK;YACpB,gBAAgB,EAAE,CAAC;SACpB;QACD,MAAM,EAAE,qBAAqB;QAC7B,kBAAkB,EAChB,0KAA0K;KAC7K;IACD;QACE,EAAE,EAAE,SAAS;QACb,KAAK,EAAE,CAAC,IAAI,CAAC;QACb,WAAW,EAAE,gEAAgE;QAC7E,QAAQ,EAAE;YACR,WAAW,EAAE,GAAG;YAChB,KAAK,EAAE,IAAI;YACX,UAAU,EAAE,KAAK;YACjB,QAAQ,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE;SACnC;QACD,QAAQ,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE;QAClF,SAAS,EAAE;YACT,sBAAsB,EAAE,KAAK;YAC7B,qBAAqB,EAAE,IAAI;YAC3B,aAAa,EAAE,IAAI;YACnB,gBAAgB,EAAE,CAAC;SACpB;QACD,MAAM,EAAE,cAAc;QACtB,kBAAkB,EAChB,0KAA0K;KAC7K;CACF,CAAC;AAEF;;;;GAIG;AACH,SAAS,iBAAiB;IACxB,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,EAAE,EAAE,WAAW,CAAC,CAAC;IAC3C,IAAI,KAAe,CAAC;IACpB,IAAI,CAAC;QACH,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IAC9D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,MAAM,GAAc,EAAE,CAAC;IAC7B,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;YAC3D,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK;gBAAE,SAAS;YAEpC,MAAM,OAAO,GAAY;gBACvB,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;gBAClB,KAAK,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAC7D,CAAC,CAAU,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAC3C;gBACD,WAAW,EAAE,MAAM,CAAC,GAAG,CAAC,WAAW,IAAI,iBAAiB,GAAG,CAAC,EAAE,EAAE,CAAC;gBACjE,cAAc,EAAE,OAAO,GAAG,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS;gBACxF,QAAQ,EAAE;oBACR,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,IAAI,GAAG,CAAC,QAAQ,EAAE,WAAW;oBACjE,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,IAAI,GAAG,CAAC,QAAQ,EAAE,KAAK;oBAC/C,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,IAAI,GAAG,CAAC,QAAQ,EAAE,UAAU;oBAC9D,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,QAAQ;iBACjC;gBACD,QAAQ,EAAE,EAAE,GAAG,gBAAgB,EAAE,GAAG,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE;gBAC1D,SAAS,EAAE,EAAE,GAAG,kBAAkB,EAAE,GAAG,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC,EAAE;gBAC9D,MAAM,EAAE,EAAE,GAAG,cAAc,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE;gBACpD,kBAAkB,EAAE,GAAG,CAAC,kBAAkB;aAC3C,CAAC;YACF,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,IAAI,CACV,iCAAiC,CAAC,KAAK,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CACpF,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,IAAI,gBAAgB,GAAqB,IAAI,CAAC;AAE9C,wFAAwF;AACxF,SAAS,kBAAkB;IACzB,IAAI,gBAAgB;QAAE,OAAO,gBAAgB,CAAC;IAE9C,MAAM,IAAI,GAAG,iBAAiB,EAAE,CAAC;IACjC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QACjB,gBAAgB,GAAG,OAAO,CAAC;QAC3B,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,2EAA2E;IAC3E,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACvE,gBAAgB,GAAG,MAAM,CAAC;IAC1B,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,kDAAkD;AAClD,MAAM,UAAU,kBAAkB;IAChC,gBAAgB,GAAG,IAAI,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,OAAe,EAAE,UAAmB;IAChE,MAAM,SAAS,GAAG,kBAAkB,EAAE,CAAC;IACvC,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,CAAC;QACrD,IAAI,CAAC;YAAE,OAAO,CAAC,CAAC;IAClB,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;QAC1B,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;YACxB,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAAE,OAAO,CAAC,CAAC;YAC3D,IAAI,CAAC,YAAY,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;gBAAE,OAAO,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACzC,CAAC"}
|
package/dist/history.js
CHANGED
|
@@ -67,8 +67,11 @@ export function enforceContextBudget(opts) {
|
|
|
67
67
|
const budget = Math.max(1024, contextWindow - maxTokens - safetyMargin);
|
|
68
68
|
// Trigger compaction at configurable threshold (default 80%).
|
|
69
69
|
// Force mode targets 50% to guarantee freeing space.
|
|
70
|
-
const compactAt = opts.force
|
|
71
|
-
|
|
70
|
+
const compactAt = opts.force
|
|
71
|
+
? 0.5
|
|
72
|
+
: Number.isFinite(opts.compactAt)
|
|
73
|
+
? Math.min(0.95, Math.max(0.5, Number(opts.compactAt)))
|
|
74
|
+
: 0.8;
|
|
72
75
|
const threshold = Math.floor(budget * compactAt);
|
|
73
76
|
let msgs = [...opts.messages];
|
|
74
77
|
const beforeCount = msgs.length;
|
|
@@ -83,7 +86,9 @@ export function enforceContextBudget(opts) {
|
|
|
83
86
|
let protectedIdx = -1;
|
|
84
87
|
for (let i = msgs.length - 1; i >= sysStart; i--) {
|
|
85
88
|
const m = msgs[i];
|
|
86
|
-
if (m.role === 'assistant' &&
|
|
89
|
+
if (m.role === 'assistant' &&
|
|
90
|
+
!m.tool_calls?.length &&
|
|
91
|
+
messageContentChars(m.content) > 50) {
|
|
87
92
|
protectedIdx = i;
|
|
88
93
|
break;
|
|
89
94
|
}
|
|
@@ -99,10 +104,13 @@ export function enforceContextBudget(opts) {
|
|
|
99
104
|
if (groupIdx === -1)
|
|
100
105
|
break;
|
|
101
106
|
// Remove the group (assistant + following tool results) in one splice.
|
|
107
|
+
// The group may extend past the minTail search boundary — that's correct:
|
|
108
|
+
// we must drop the entire group (assistant + tool results) to keep the
|
|
109
|
+
// protocol valid, and minTail only bounds where we *search* for groups.
|
|
102
110
|
const groupEnd = findGroupEnd(msgs, groupIdx);
|
|
103
111
|
// Adjust protectedIdx if dropping before it
|
|
104
112
|
if (protectedIdx > groupIdx)
|
|
105
|
-
protectedIdx -=
|
|
113
|
+
protectedIdx -= groupEnd - groupIdx;
|
|
106
114
|
const dropped = msgs.splice(groupIdx, groupEnd - groupIdx);
|
|
107
115
|
for (const d of dropped)
|
|
108
116
|
currentTokens -= Math.ceil((messageContentChars(d.content) + 20) / 4);
|
package/dist/history.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"history.js","sourceRoot":"","sources":["../src/history.ts"],"names":[],"mappings":"AAEA,6EAA6E;AAC7E,MAAM,QAAQ,GAAG,8BAA8B,CAAC;AAChD,MAAM,WAAW,GAAG,oCAAoC,CAAC;AAEzD,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,0DAA0D;IAC1D,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,IAAI,OAAO,GAAG,IAAI,CAAC;IACnB,KAAK,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,EAAE,CAAC;QACzC,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"history.js","sourceRoot":"","sources":["../src/history.ts"],"names":[],"mappings":"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"}
|
package/dist/hooks/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { HookManager } from './manager.js';
|
|
2
2
|
export { loadHookPlugins } from './loader.js';
|
|
3
|
-
export { scaffoldHookPlugin, normalizePluginName } from './scaffold.js';
|
|
4
|
-
export { HOOK_CAPABILITIES
|
|
3
|
+
export { scaffoldHookPlugin, normalizePluginName, } from './scaffold.js';
|
|
4
|
+
export { HOOK_CAPABILITIES } from './types.js';
|
|
5
5
|
//# sourceMappingURL=index.js.map
|
package/dist/hooks/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAyB,MAAM,aAAa,CAAC;AACrE,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAyB,MAAM,aAAa,CAAC;AACrE,OAAO,EACL,kBAAkB,EAClB,mBAAmB,GAEpB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC"}
|