@felan-ai/ext-rtk-optimizer 0.1.1 → 0.4.1
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/README.md +61 -44
- package/dist/command.d.ts +1 -4
- package/dist/command.d.ts.map +1 -1
- package/dist/command.js +2 -185
- package/dist/command.js.map +1 -1
- package/dist/config.d.ts +23 -10
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +95 -116
- package/dist/config.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +132 -33
- package/dist/index.js.map +1 -1
- package/dist/output-compactor.d.ts +4 -2
- package/dist/output-compactor.d.ts.map +1 -1
- package/dist/output-compactor.js +56 -13
- package/dist/output-compactor.js.map +1 -1
- package/dist/recovery.d.ts +9 -0
- package/dist/recovery.d.ts.map +1 -0
- package/dist/recovery.js +64 -0
- package/dist/recovery.js.map +1 -0
- package/dist/rtk-gain.d.ts +24 -0
- package/dist/rtk-gain.d.ts.map +1 -0
- package/dist/rtk-gain.js +259 -0
- package/dist/rtk-gain.js.map +1 -0
- package/dist/techniques/truncate.d.ts +9 -0
- package/dist/techniques/truncate.d.ts.map +1 -1
- package/dist/techniques/truncate.js +77 -6
- package/dist/techniques/truncate.js.map +1 -1
- package/package.json +3 -3
- package/dist/output-metrics.d.ts +0 -15
- package/dist/output-metrics.d.ts.map +0 -1
- package/dist/output-metrics.js +0 -50
- package/dist/output-metrics.js.map +0 -1
package/README.md
CHANGED
|
@@ -19,10 +19,12 @@ work.
|
|
|
19
19
|
when ANSI stripping is enabled.
|
|
20
20
|
|
|
21
21
|
Build, test, Git, and linter commands receive command-aware compaction. Search
|
|
22
|
-
results can be grouped by file. A final character limit protects
|
|
23
|
-
from unusually large command results
|
|
24
|
-
|
|
25
|
-
|
|
22
|
+
results can be grouped by file. A final head-and-tail character limit protects
|
|
23
|
+
the context from unusually large command results and stores a recoverable copy
|
|
24
|
+
in session storage. Failed results retain their original evidence, and complete
|
|
25
|
+
JSON is never cut. Lossy source filtering and smart truncation for `read` are
|
|
26
|
+
disabled by default; explicit read ranges and reads of at most 80 lines stay
|
|
27
|
+
exact even when read compaction is enabled.
|
|
26
28
|
|
|
27
29
|
## Requirements
|
|
28
30
|
|
|
@@ -43,16 +45,13 @@ never runs during extension startup or from a model-initiated tool call.
|
|
|
43
45
|
|
|
44
46
|
## Configuration
|
|
45
47
|
|
|
46
|
-
The extension
|
|
48
|
+
The extension receives portable configuration from:
|
|
47
49
|
|
|
48
|
-
|
|
49
|
-
$FELAN_AGENT_DIR/storage/agent/rtk-optimizer/config.json
|
|
50
|
-
```
|
|
50
|
+
`extensionConfig.rtkOptimizer` in `$FELAN_AGENT_DIR/settings.json`.
|
|
51
51
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
the extension host when it exposes a notification channel; the invalid file is
|
|
52
|
+
Root sessions and nested subagents receive the resolved snapshot. Invalid
|
|
53
|
+
fields, invalid types, and values outside the documented ranges stop activation
|
|
54
|
+
with a settings error; changes take effect in a new session. The invalid value is
|
|
56
55
|
not overwritten.
|
|
57
56
|
|
|
58
57
|
```json
|
|
@@ -61,30 +60,22 @@ not overwritten.
|
|
|
61
60
|
"mode": "rewrite",
|
|
62
61
|
"guardWhenRtkMissing": true,
|
|
63
62
|
"showRewriteNotifications": true,
|
|
64
|
-
"
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
},
|
|
81
|
-
"aggregateTestOutput": true,
|
|
82
|
-
"filterBuildOutput": true,
|
|
83
|
-
"compactGitOutput": true,
|
|
84
|
-
"aggregateLinterOutput": true,
|
|
85
|
-
"groupSearchOutput": true,
|
|
86
|
-
"trackSavings": true
|
|
87
|
-
}
|
|
63
|
+
"compactionEnabled": true,
|
|
64
|
+
"stripAnsi": true,
|
|
65
|
+
"readCompaction": false,
|
|
66
|
+
"truncate": true,
|
|
67
|
+
"truncateMaxChars": 12000,
|
|
68
|
+
"sourceCodeFilteringEnabled": false,
|
|
69
|
+
"preserveExactSkillReads": false,
|
|
70
|
+
"sourceFiltering": "none",
|
|
71
|
+
"smartTruncate": false,
|
|
72
|
+
"smartTruncateMaxLines": 220,
|
|
73
|
+
"aggregateTestOutput": true,
|
|
74
|
+
"filterBuildOutput": true,
|
|
75
|
+
"compactGitOutput": true,
|
|
76
|
+
"aggregateLinterOutput": true,
|
|
77
|
+
"groupSearchOutput": true,
|
|
78
|
+
"trackSavings": true
|
|
88
79
|
}
|
|
89
80
|
```
|
|
90
81
|
|
|
@@ -94,19 +85,26 @@ or `aggressive`. `truncate.maxChars` accepts 1,000–200,000 and
|
|
|
94
85
|
|
|
95
86
|
## Command
|
|
96
87
|
|
|
97
|
-
Run `/
|
|
88
|
+
Run `/settings` to edit RTK settings interactively. `/rtk` provides operational
|
|
89
|
+
commands. Subcommands are:
|
|
98
90
|
|
|
99
91
|
- `/rtk show`
|
|
100
|
-
- `/rtk path`
|
|
101
92
|
- `/rtk verify`
|
|
102
93
|
- `/rtk install`
|
|
103
|
-
- `/rtk stats`
|
|
104
|
-
- `/rtk clear-stats`
|
|
105
|
-
- `/rtk reset`
|
|
106
94
|
- `/rtk help`
|
|
107
95
|
|
|
108
|
-
|
|
109
|
-
|
|
96
|
+
RTK and post-tool savings are reported to Felan's persistent savings service when the
|
|
97
|
+
host provides it. They report two distinct sequential stages: RTK command-output
|
|
98
|
+
optimization from an isolated session/model tracker, and Felan post-tool
|
|
99
|
+
compaction for every supported result. Both use bounded token estimates and are
|
|
100
|
+
reported as separate Felan-owned savings measurements; they are not added twice.
|
|
101
|
+
The session tracker is queried once per model shard during session shutdown and
|
|
102
|
+
then deleted. A crashed session can recover its unfinished tracker on resume;
|
|
103
|
+
rare duplicate or skipped indicative measurements are acceptable. The global RTK
|
|
104
|
+
history is never imported. RTK command-output captures use the
|
|
105
|
+
`rtk-tracking-byte4-v1` estimator and are available on POSIX runtimes; on
|
|
106
|
+
Windows, rewriting remains available but the isolated RTK gain capture is
|
|
107
|
+
skipped because the POSIX environment wrapper is not used.
|
|
110
108
|
|
|
111
109
|
## Development
|
|
112
110
|
|
|
@@ -124,4 +122,23 @@ pnpm --filter @felan-ai/ext-rtk-optimizer test
|
|
|
124
122
|
## Attribution
|
|
125
123
|
|
|
126
124
|
This package adapts the MIT-licensed `pi-rtk-optimizer` 0.9.0 implementation.
|
|
127
|
-
See [NOTICE](NOTICE) for source provenance.
|
|
125
|
+
See [NOTICE](NOTICE) and [LICENSE](LICENSE) for source provenance.
|
|
126
|
+
|
|
127
|
+
## Package boundary and requirements
|
|
128
|
+
|
|
129
|
+
The extension owns rewrite decisions at the tool boundary, command/result
|
|
130
|
+
association, output compaction, configuration validation, and savings metrics.
|
|
131
|
+
The host supplies `AgentRuntime`, the agent-scoped storage root, interactive
|
|
132
|
+
settings presentation, and explicit installation policy. Output compaction can
|
|
133
|
+
operate without the executable; command rewriting requires a compatible `rtk`
|
|
134
|
+
on the active runtime.
|
|
135
|
+
|
|
136
|
+
It requires a compatible `@felan-ai/agent-core` peer. Managed installation is
|
|
137
|
+
explicit, digest-verified, and never runs during startup or a model tool call.
|
|
138
|
+
Lossy read compaction remains opt-in and explicit ranges remain exact.
|
|
139
|
+
|
|
140
|
+
## Related documentation
|
|
141
|
+
|
|
142
|
+
- [Configuration](../../docs/user-guide/configuration.md#rtk)
|
|
143
|
+
- [Commands and shortcuts](../../docs/user-guide/commands-and-shortcuts.md)
|
|
144
|
+
- [Runtime dependencies](../../docs/reference/runtime-dependencies.md)
|
package/dist/command.d.ts
CHANGED
|
@@ -1,13 +1,10 @@
|
|
|
1
1
|
import type { FelanExtensionAPI } from '@felan-ai/agent-core';
|
|
2
|
-
import {
|
|
2
|
+
import type { RtkOptimizerConfig, RuntimeStatus } from './types.js';
|
|
3
3
|
export interface RtkOptimizerController {
|
|
4
4
|
getConfig(): RtkOptimizerConfig;
|
|
5
|
-
setConfig(config: RtkOptimizerConfig): Promise<void>;
|
|
6
5
|
getRuntimeStatus(): RuntimeStatus;
|
|
7
6
|
refreshRuntimeStatus(): Promise<RuntimeStatus>;
|
|
8
7
|
install(onStatus: (message: string) => void): Promise<RuntimeStatus>;
|
|
9
|
-
getMetricsSummary(): string;
|
|
10
|
-
clearMetrics(): void;
|
|
11
8
|
}
|
|
12
9
|
export declare function registerRtkCommand(pi: FelanExtensionAPI, controller: RtkOptimizerController): void;
|
|
13
10
|
//# sourceMappingURL=command.d.ts.map
|
package/dist/command.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../src/command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAoB,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../src/command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAoB,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAChF,OAAO,KAAK,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEpE,MAAM,WAAW,sBAAsB;IACrC,SAAS,IAAI,kBAAkB,CAAC;IAChC,gBAAgB,IAAI,aAAa,CAAC;IAClC,oBAAoB,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC;IAC/C,OAAO,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;CACtE;AAUD,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,iBAAiB,EAAE,UAAU,EAAE,sBAAsB,GAAG,IAAI,CAkDlG"}
|
package/dist/command.js
CHANGED
|
@@ -1,14 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
import { DEFAULT_RTK_OPTIMIZER_CONFIG } from './types.js';
|
|
3
|
-
const USAGE = 'Usage: /rtk [show|path|verify|install|stats|clear-stats|reset|help]';
|
|
1
|
+
const USAGE = 'Usage: /rtk [show|verify|install|help]';
|
|
4
2
|
const SUBCOMMANDS = [
|
|
5
3
|
['show', 'Show current RTK configuration and runtime status'],
|
|
6
|
-
['path', 'Show the RTK configuration path'],
|
|
7
4
|
['verify', 'Check whether rtk is available in the runtime'],
|
|
8
5
|
['install', 'Run the pinned official RTK installer'],
|
|
9
|
-
['stats', 'Show output-compaction metrics'],
|
|
10
|
-
['clear-stats', 'Clear output-compaction metrics'],
|
|
11
|
-
['reset', 'Reset RTK settings to defaults'],
|
|
12
6
|
['help', 'Show command usage'],
|
|
13
7
|
];
|
|
14
8
|
export function registerRtkCommand(pi, controller) {
|
|
@@ -26,11 +20,7 @@ export function registerRtkCommand(pi, controller) {
|
|
|
26
20
|
handler: async (args, ctx) => {
|
|
27
21
|
const subcommand = args.trim().toLowerCase();
|
|
28
22
|
if (!subcommand) {
|
|
29
|
-
|
|
30
|
-
ctx.ui.notify('/rtk settings require interactive TUI mode.', 'warning');
|
|
31
|
-
return;
|
|
32
|
-
}
|
|
33
|
-
await openSettings(ctx, controller);
|
|
23
|
+
ctx.ui.notify('Configure RTK through /settings. Use /rtk show to inspect the resolved settings.', 'info');
|
|
34
24
|
return;
|
|
35
25
|
}
|
|
36
26
|
if (subcommand === 'help') {
|
|
@@ -39,9 +29,6 @@ export function registerRtkCommand(pi, controller) {
|
|
|
39
29
|
else if (subcommand === 'show') {
|
|
40
30
|
ctx.ui.notify(formatSummary(controller.getConfig(), controller.getRuntimeStatus()), 'info');
|
|
41
31
|
}
|
|
42
|
-
else if (subcommand === 'path') {
|
|
43
|
-
ctx.ui.notify(`RTK config: ${getRtkOptimizerConfigPath(pi.runtime)}`, 'info');
|
|
44
|
-
}
|
|
45
32
|
else if (subcommand === 'verify') {
|
|
46
33
|
const status = await controller.refreshRuntimeStatus();
|
|
47
34
|
ctx.ui.notify(status.rtkAvailable
|
|
@@ -62,179 +49,12 @@ export function registerRtkCommand(pi, controller) {
|
|
|
62
49
|
ctx.ui.setStatus('rtk-install', undefined);
|
|
63
50
|
}
|
|
64
51
|
}
|
|
65
|
-
else if (subcommand === 'stats') {
|
|
66
|
-
ctx.ui.notify(controller.getMetricsSummary(), 'info');
|
|
67
|
-
}
|
|
68
|
-
else if (subcommand === 'clear-stats') {
|
|
69
|
-
controller.clearMetrics();
|
|
70
|
-
ctx.ui.notify('RTK metrics cleared.', 'info');
|
|
71
|
-
}
|
|
72
|
-
else if (subcommand === 'reset') {
|
|
73
|
-
if (await saveConfig(ctx, controller, structuredClone(DEFAULT_RTK_OPTIMIZER_CONFIG))) {
|
|
74
|
-
ctx.ui.notify('RTK optimizer settings reset to defaults.', 'info');
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
52
|
else {
|
|
78
53
|
ctx.ui.notify(USAGE, 'warning');
|
|
79
54
|
}
|
|
80
55
|
},
|
|
81
56
|
});
|
|
82
57
|
}
|
|
83
|
-
async function openSettings(ctx, controller) {
|
|
84
|
-
while (true) {
|
|
85
|
-
const config = controller.getConfig();
|
|
86
|
-
const choices = settingChoices(config);
|
|
87
|
-
const close = 'Close RTK settings';
|
|
88
|
-
const selected = await ctx.ui.select('RTK Optimizer settings', [...choices.map((choice) => choice.label), close]);
|
|
89
|
-
if (!selected || selected === close)
|
|
90
|
-
return;
|
|
91
|
-
const choice = choices.find((candidate) => candidate.label === selected);
|
|
92
|
-
if (!choice)
|
|
93
|
-
continue;
|
|
94
|
-
const next = await changeSetting(ctx, config, choice.id);
|
|
95
|
-
if (next)
|
|
96
|
-
await saveConfig(ctx, controller, next);
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
async function changeSetting(ctx, config, id) {
|
|
100
|
-
const next = structuredClone(config);
|
|
101
|
-
const output = next.outputCompaction;
|
|
102
|
-
switch (id) {
|
|
103
|
-
case 'enabled':
|
|
104
|
-
next.enabled = !next.enabled;
|
|
105
|
-
break;
|
|
106
|
-
case 'mode':
|
|
107
|
-
next.mode = next.mode === 'rewrite' ? 'suggest' : 'rewrite';
|
|
108
|
-
break;
|
|
109
|
-
case 'guardWhenRtkMissing':
|
|
110
|
-
next.guardWhenRtkMissing = !next.guardWhenRtkMissing;
|
|
111
|
-
break;
|
|
112
|
-
case 'showRewriteNotifications':
|
|
113
|
-
next.showRewriteNotifications = !next.showRewriteNotifications;
|
|
114
|
-
break;
|
|
115
|
-
case 'compactionEnabled':
|
|
116
|
-
output.enabled = !output.enabled;
|
|
117
|
-
break;
|
|
118
|
-
case 'stripAnsi':
|
|
119
|
-
output.stripAnsi = !output.stripAnsi;
|
|
120
|
-
break;
|
|
121
|
-
case 'readCompaction':
|
|
122
|
-
output.readCompaction.enabled = !output.readCompaction.enabled;
|
|
123
|
-
break;
|
|
124
|
-
case 'sourceFilteringEnabled':
|
|
125
|
-
output.sourceCodeFilteringEnabled = !output.sourceCodeFilteringEnabled;
|
|
126
|
-
break;
|
|
127
|
-
case 'preserveExactSkillReads':
|
|
128
|
-
output.preserveExactSkillReads = !output.preserveExactSkillReads;
|
|
129
|
-
break;
|
|
130
|
-
case 'aggregateTestOutput':
|
|
131
|
-
output.aggregateTestOutput = !output.aggregateTestOutput;
|
|
132
|
-
break;
|
|
133
|
-
case 'filterBuildOutput':
|
|
134
|
-
output.filterBuildOutput = !output.filterBuildOutput;
|
|
135
|
-
break;
|
|
136
|
-
case 'compactGitOutput':
|
|
137
|
-
output.compactGitOutput = !output.compactGitOutput;
|
|
138
|
-
break;
|
|
139
|
-
case 'aggregateLinterOutput':
|
|
140
|
-
output.aggregateLinterOutput = !output.aggregateLinterOutput;
|
|
141
|
-
break;
|
|
142
|
-
case 'groupSearchOutput':
|
|
143
|
-
output.groupSearchOutput = !output.groupSearchOutput;
|
|
144
|
-
break;
|
|
145
|
-
case 'smartTruncate':
|
|
146
|
-
output.smartTruncate.enabled = !output.smartTruncate.enabled;
|
|
147
|
-
break;
|
|
148
|
-
case 'truncate':
|
|
149
|
-
output.truncate.enabled = !output.truncate.enabled;
|
|
150
|
-
break;
|
|
151
|
-
case 'trackSavings':
|
|
152
|
-
output.trackSavings = !output.trackSavings;
|
|
153
|
-
break;
|
|
154
|
-
case 'sourceFiltering': {
|
|
155
|
-
const selected = await ctx.ui.select('Read source filtering', ['none', 'minimal', 'aggressive']);
|
|
156
|
-
if (!selected)
|
|
157
|
-
return undefined;
|
|
158
|
-
output.sourceCodeFiltering = selected;
|
|
159
|
-
break;
|
|
160
|
-
}
|
|
161
|
-
case 'smartTruncateMaxLines': {
|
|
162
|
-
const selected = await ctx.ui.select('Read smart-truncation maximum lines', [
|
|
163
|
-
'40',
|
|
164
|
-
'80',
|
|
165
|
-
'120',
|
|
166
|
-
'160',
|
|
167
|
-
'220',
|
|
168
|
-
'320',
|
|
169
|
-
'500',
|
|
170
|
-
'1000',
|
|
171
|
-
'2000',
|
|
172
|
-
'4000',
|
|
173
|
-
]);
|
|
174
|
-
if (!selected)
|
|
175
|
-
return undefined;
|
|
176
|
-
output.smartTruncate.maxLines = Number.parseInt(selected, 10);
|
|
177
|
-
break;
|
|
178
|
-
}
|
|
179
|
-
case 'truncateMaxChars': {
|
|
180
|
-
const selected = await ctx.ui.select('Hard-truncation maximum characters', [
|
|
181
|
-
'4000',
|
|
182
|
-
'8000',
|
|
183
|
-
'12000',
|
|
184
|
-
'20000',
|
|
185
|
-
'50000',
|
|
186
|
-
'100000',
|
|
187
|
-
'200000',
|
|
188
|
-
]);
|
|
189
|
-
if (!selected)
|
|
190
|
-
return undefined;
|
|
191
|
-
output.truncate.maxChars = Number.parseInt(selected, 10);
|
|
192
|
-
break;
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
return next;
|
|
196
|
-
}
|
|
197
|
-
async function saveConfig(ctx, controller, config) {
|
|
198
|
-
try {
|
|
199
|
-
await controller.setConfig(config);
|
|
200
|
-
return true;
|
|
201
|
-
}
|
|
202
|
-
catch (error) {
|
|
203
|
-
ctx.ui.notify(`Failed to save RTK settings: ${errorMessage(error)}`, 'error');
|
|
204
|
-
return false;
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
function settingChoices(config) {
|
|
208
|
-
const output = config.outputCompaction;
|
|
209
|
-
return [
|
|
210
|
-
setting('enabled', 'Optimizer enabled', onOff(config.enabled)),
|
|
211
|
-
setting('mode', 'Rewrite mode', config.mode),
|
|
212
|
-
setting('guardWhenRtkMissing', 'Guard when RTK is missing', onOff(config.guardWhenRtkMissing)),
|
|
213
|
-
setting('showRewriteNotifications', 'Rewrite notifications', onOff(config.showRewriteNotifications)),
|
|
214
|
-
setting('compactionEnabled', 'Output compaction', onOff(output.enabled)),
|
|
215
|
-
setting('stripAnsi', 'Strip ANSI', onOff(output.stripAnsi)),
|
|
216
|
-
setting('readCompaction', 'Lossy read compaction', onOff(output.readCompaction.enabled)),
|
|
217
|
-
setting('sourceFilteringEnabled', 'Read source filtering', onOff(output.sourceCodeFilteringEnabled)),
|
|
218
|
-
setting('sourceFiltering', 'Read source-filter level', output.sourceCodeFiltering),
|
|
219
|
-
setting('preserveExactSkillReads', 'Preserve exact skill reads', onOff(output.preserveExactSkillReads)),
|
|
220
|
-
setting('aggregateTestOutput', 'Aggregate test output', onOff(output.aggregateTestOutput)),
|
|
221
|
-
setting('filterBuildOutput', 'Filter build output', onOff(output.filterBuildOutput)),
|
|
222
|
-
setting('compactGitOutput', 'Compact Git output', onOff(output.compactGitOutput)),
|
|
223
|
-
setting('aggregateLinterOutput', 'Aggregate linter output', onOff(output.aggregateLinterOutput)),
|
|
224
|
-
setting('groupSearchOutput', 'Group search output', onOff(output.groupSearchOutput)),
|
|
225
|
-
setting('smartTruncate', 'Read smart truncation', onOff(output.smartTruncate.enabled)),
|
|
226
|
-
setting('smartTruncateMaxLines', 'Read smart-truncation lines', String(output.smartTruncate.maxLines)),
|
|
227
|
-
setting('truncate', 'Hard truncation', onOff(output.truncate.enabled)),
|
|
228
|
-
setting('truncateMaxChars', 'Hard-truncation characters', String(output.truncate.maxChars)),
|
|
229
|
-
setting('trackSavings', 'Track savings', onOff(output.trackSavings)),
|
|
230
|
-
];
|
|
231
|
-
}
|
|
232
|
-
function setting(id, name, value) {
|
|
233
|
-
return { id, label: `${name}: ${value}` };
|
|
234
|
-
}
|
|
235
|
-
function onOff(value) {
|
|
236
|
-
return value ? 'on' : 'off';
|
|
237
|
-
}
|
|
238
58
|
function formatSummary(config, status) {
|
|
239
59
|
const runtime = status.rtkAvailable
|
|
240
60
|
? `available${status.version ? ` (${status.version})` : ''}`
|
|
@@ -249,7 +69,4 @@ function formatSummary(config, status) {
|
|
|
249
69
|
'commandTools=bash,exec_command,write_stdin',
|
|
250
70
|
].join(', ');
|
|
251
71
|
}
|
|
252
|
-
function errorMessage(error) {
|
|
253
|
-
return error instanceof Error ? error.message : String(error);
|
|
254
|
-
}
|
|
255
72
|
//# sourceMappingURL=command.js.map
|
package/dist/command.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command.js","sourceRoot":"","sources":["../src/command.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"command.js","sourceRoot":"","sources":["../src/command.ts"],"names":[],"mappings":"AAUA,MAAM,KAAK,GAAG,wCAAwC,CAAC;AACvD,MAAM,WAAW,GAAG;IAClB,CAAC,MAAM,EAAE,mDAAmD,CAAC;IAC7D,CAAC,QAAQ,EAAE,+CAA+C,CAAC;IAC3D,CAAC,SAAS,EAAE,uCAAuC,CAAC;IACpD,CAAC,MAAM,EAAE,oBAAoB,CAAC;CACtB,CAAC;AAEX,MAAM,UAAU,kBAAkB,CAAC,EAAqB,EAAE,UAAkC;IAC1F,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE;QACxB,WAAW,EAAE,+CAA+C;QAC5D,sBAAsB,EAAE,CAAC,MAAM,EAAE,EAAE;YACjC,MAAM,UAAU,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC,WAAW,EAAE,CAAC;YACpD,IAAI,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC;gBAAE,OAAO,IAAI,CAAC;YAC1C,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;YAC5E,OAAO,OAAO,CAAC,MAAM,KAAK,CAAC;gBACzB,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;QACxF,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;YAC3B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YAC7C,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,kFAAkF,EAAE,MAAM,CAAC,CAAC;gBAC1G,OAAO;YACT,CAAC;YAED,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;gBAC1B,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YAC/B,CAAC;iBAAM,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;gBACjC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,SAAS,EAAE,EAAE,UAAU,CAAC,gBAAgB,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;YAC9F,CAAC;iBAAM,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;gBACnC,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,oBAAoB,EAAE,CAAC;gBACvD,GAAG,CAAC,EAAE,CAAC,MAAM,CACX,MAAM,CAAC,YAAY;oBACjB,CAAC,CAAC,mBAAmB,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG;oBACpE,CAAC,CAAC,qBAAqB,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,EAC3E,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CACzC,CAAC;YACJ,CAAC;iBAAM,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;gBACpC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,aAAa,EAAE,kBAAkB,CAAC,CAAC;gBACpD,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;wBAClD,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,aAAa,EAAE,KAAK,OAAO,EAAE,CAAC,CAAC;oBAClD,CAAC,CAAC,CAAC;oBACH,GAAG,CAAC,EAAE,CAAC,MAAM,CACX,MAAM,CAAC,YAAY;wBACjB,CAAC,CAAC,6BAA6B,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG;wBAC9E,CAAC,CAAC,0BAA0B,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,EAChF,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CACvC,CAAC;gBACJ,CAAC;wBAAS,CAAC;oBACT,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;gBAC7C,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;YAClC,CAAC;QACH,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED,SAAS,aAAa,CAAC,MAA0B,EAAE,MAAqB;IACtE,MAAM,OAAO,GAAG,MAAM,CAAC,YAAY;QACjC,CAAC,CAAC,YAAY,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QAC5D,CAAC,CAAC,UAAU,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACjE,OAAO;QACL,WAAW,MAAM,CAAC,OAAO,EAAE;QAC3B,QAAQ,MAAM,CAAC,IAAI,EAAE;QACrB,OAAO,OAAO,EAAE;QAChB,cAAc,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE;QAC/C,kBAAkB,MAAM,CAAC,gBAAgB,CAAC,cAAc,CAAC,OAAO,EAAE;QAClE,gBAAgB,MAAM,CAAC,gBAAgB,CAAC,mBAAmB,EAAE;QAC7D,4CAA4C;KAC7C,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
|
package/dist/config.d.ts
CHANGED
|
@@ -1,13 +1,26 @@
|
|
|
1
|
-
import type { AgentRuntime } from '@felan-ai/agent-core';
|
|
2
1
|
import { type RtkOptimizerConfig } from './types.js';
|
|
3
|
-
export declare const
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
readonly
|
|
7
|
-
readonly
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
2
|
+
export declare const RTK_OPTIMIZER_CONFIG: import("@felan-ai/agent-core").ExtensionConfigDefinition<{
|
|
3
|
+
readonly enabled: import("@felan-ai/agent-core").ExtensionConfigField<boolean>;
|
|
4
|
+
readonly mode: import("@felan-ai/agent-core").ExtensionConfigField<"rewrite" | "suggest">;
|
|
5
|
+
readonly guardWhenRtkMissing: import("@felan-ai/agent-core").ExtensionConfigField<boolean>;
|
|
6
|
+
readonly showRewriteNotifications: import("@felan-ai/agent-core").ExtensionConfigField<boolean>;
|
|
7
|
+
readonly compactionEnabled: import("@felan-ai/agent-core").ExtensionConfigField<boolean>;
|
|
8
|
+
readonly stripAnsi: import("@felan-ai/agent-core").ExtensionConfigField<boolean>;
|
|
9
|
+
readonly readCompaction: import("@felan-ai/agent-core").ExtensionConfigField<boolean>;
|
|
10
|
+
readonly truncate: import("@felan-ai/agent-core").ExtensionConfigField<boolean>;
|
|
11
|
+
readonly truncateMaxChars: import("@felan-ai/agent-core").ExtensionConfigField<number>;
|
|
12
|
+
readonly sourceCodeFilteringEnabled: import("@felan-ai/agent-core").ExtensionConfigField<boolean>;
|
|
13
|
+
readonly preserveExactSkillReads: import("@felan-ai/agent-core").ExtensionConfigField<boolean>;
|
|
14
|
+
readonly sourceFiltering: import("@felan-ai/agent-core").ExtensionConfigField<"none" | "minimal" | "aggressive">;
|
|
15
|
+
readonly smartTruncate: import("@felan-ai/agent-core").ExtensionConfigField<boolean>;
|
|
16
|
+
readonly smartTruncateMaxLines: import("@felan-ai/agent-core").ExtensionConfigField<number>;
|
|
17
|
+
readonly aggregateTestOutput: import("@felan-ai/agent-core").ExtensionConfigField<boolean>;
|
|
18
|
+
readonly filterBuildOutput: import("@felan-ai/agent-core").ExtensionConfigField<boolean>;
|
|
19
|
+
readonly compactGitOutput: import("@felan-ai/agent-core").ExtensionConfigField<boolean>;
|
|
20
|
+
readonly aggregateLinterOutput: import("@felan-ai/agent-core").ExtensionConfigField<boolean>;
|
|
21
|
+
readonly groupSearchOutput: import("@felan-ai/agent-core").ExtensionConfigField<boolean>;
|
|
22
|
+
readonly trackSavings: import("@felan-ai/agent-core").ExtensionConfigField<boolean>;
|
|
23
|
+
}>;
|
|
24
|
+
export declare function rtkOptimizerConfigFromSettings(values: Readonly<Record<string, unknown>>): RtkOptimizerConfig;
|
|
12
25
|
export declare function validateRtkOptimizerConfig(value: unknown, source?: string): RtkOptimizerConfig;
|
|
13
26
|
//# sourceMappingURL=config.d.ts.map
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,kBAAkB,EAExB,MAAM,YAAY,CAAC;AAEpB,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;EAyB/B,CAAC;AAEH,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GACxC,kBAAkB,CAgCpB;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,SAAyB,GAAG,kBAAkB,CA6C9G"}
|