@felan-ai/ext-rtk-optimizer 0.1.0 → 0.3.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/NOTICE CHANGED
@@ -12,3 +12,8 @@ tool-output compaction techniques, read-compaction safeguards, configuration,
12
12
  session metrics, and the /rtk command behavior. Felan routes I/O through
13
13
  AgentRuntime and adds native support for Codex exec_command and write_stdin
14
14
  tools while preserving their structured result envelopes.
15
+
16
+ The optional /rtk install command downloads, verifies, and executes the
17
+ official rtk-ai/rtk installer from commit
18
+ b34be37caf3796b69a50952a28e60e32b5daad43 to install RTK 0.45.0. The installer
19
+ and RTK binary are not bundled in this npm package.
package/README.md CHANGED
@@ -27,21 +27,29 @@ of at most 80 lines stay exact even when read compaction is enabled.
27
27
  ## Requirements
28
28
 
29
29
  Install [RTK](https://github.com/rtk-ai/rtk) in the execution runtime and make
30
- the `rtk` executable available on its `PATH`. Use `/rtk verify` to check the
31
- same `AgentRuntime` used by coding tools.
30
+ the `rtk` executable available on its `PATH`, or run `/rtk install`. The
31
+ explicit install command downloads a commit-pinned copy of RTK's official
32
+ installer, verifies its reviewed SHA-256 digest, and asks that installer for
33
+ the pinned RTK 0.45.0 release. The upstream installer verifies the release
34
+ archive checksum before placing the executable in Felan agent storage. It
35
+ requires `curl` plus standard Linux/macOS shell utilities; Windows users must
36
+ place `rtk.exe` on `PATH` manually.
37
+
38
+ Managed RTK is preferred over `PATH`. Rewritten shell commands receive its bin
39
+ directory through a command-scoped `PATH`, so no shell-profile change is
40
+ required and compound rewrites can resolve every `rtk` invocation. Use
41
+ `/rtk verify` to check the same `AgentRuntime` used by coding tools. Installation
42
+ never runs during extension startup or from a model-initiated tool call.
32
43
 
33
44
  ## Configuration
34
45
 
35
- The extension stores portable agent-scoped configuration at:
46
+ The extension receives portable configuration from:
36
47
 
37
- ```text
38
- $FELAN_AGENT_DIR/storage/agent/rtk-optimizer/config.json
39
- ```
48
+ `extensionConfig.rtkOptimizer` in `$FELAN_AGENT_DIR/settings.json`.
40
49
 
41
- The file is created with safe defaults on first load. Root sessions and nested
42
- subagents share it. Invalid JSON, unknown fields, invalid types, and values
43
- outside the documented ranges fall back to defaults for that load and notify
44
- the extension host when it exposes a notification channel; the invalid file is
50
+ Root sessions and nested subagents receive the resolved snapshot. Invalid
51
+ fields, invalid types, and values outside the documented ranges stop activation
52
+ with a settings error; changes take effect in a new session. The invalid value is
45
53
  not overwritten.
46
54
 
47
55
  ```json
@@ -50,30 +58,22 @@ not overwritten.
50
58
  "mode": "rewrite",
51
59
  "guardWhenRtkMissing": true,
52
60
  "showRewriteNotifications": true,
53
- "outputCompaction": {
54
- "enabled": true,
55
- "stripAnsi": true,
56
- "readCompaction": {
57
- "enabled": false
58
- },
59
- "truncate": {
60
- "enabled": true,
61
- "maxChars": 12000
62
- },
63
- "sourceCodeFilteringEnabled": false,
64
- "preserveExactSkillReads": false,
65
- "sourceCodeFiltering": "none",
66
- "smartTruncate": {
67
- "enabled": false,
68
- "maxLines": 220
69
- },
70
- "aggregateTestOutput": true,
71
- "filterBuildOutput": true,
72
- "compactGitOutput": true,
73
- "aggregateLinterOutput": true,
74
- "groupSearchOutput": true,
75
- "trackSavings": true
76
- }
61
+ "compactionEnabled": true,
62
+ "stripAnsi": true,
63
+ "readCompaction": false,
64
+ "truncate": true,
65
+ "truncateMaxChars": 12000,
66
+ "sourceCodeFilteringEnabled": false,
67
+ "preserveExactSkillReads": false,
68
+ "sourceFiltering": "none",
69
+ "smartTruncate": false,
70
+ "smartTruncateMaxLines": 220,
71
+ "aggregateTestOutput": true,
72
+ "filterBuildOutput": true,
73
+ "compactGitOutput": true,
74
+ "aggregateLinterOutput": true,
75
+ "groupSearchOutput": true,
76
+ "trackSavings": true
77
77
  }
78
78
  ```
79
79
 
@@ -83,14 +83,14 @@ or `aggressive`. `truncate.maxChars` accepts 1,000–200,000 and
83
83
 
84
84
  ## Command
85
85
 
86
- Run `/rtk` to edit settings interactively. Subcommands are:
86
+ Run `/settings` to edit RTK settings interactively. `/rtk` provides operational
87
+ commands. Subcommands are:
87
88
 
88
89
  - `/rtk show`
89
- - `/rtk path`
90
90
  - `/rtk verify`
91
+ - `/rtk install`
91
92
  - `/rtk stats`
92
93
  - `/rtk clear-stats`
93
- - `/rtk reset`
94
94
  - `/rtk help`
95
95
 
96
96
  Metrics are scoped to the current Felan extension session and reset at session
@@ -112,4 +112,23 @@ pnpm --filter @felan-ai/ext-rtk-optimizer test
112
112
  ## Attribution
113
113
 
114
114
  This package adapts the MIT-licensed `pi-rtk-optimizer` 0.9.0 implementation.
115
- See [NOTICE](NOTICE) for source provenance.
115
+ See [NOTICE](NOTICE) and [LICENSE](LICENSE) for source provenance.
116
+
117
+ ## Package boundary and requirements
118
+
119
+ The extension owns rewrite decisions at the tool boundary, command/result
120
+ association, output compaction, configuration validation, and savings metrics.
121
+ The host supplies `AgentRuntime`, the agent-scoped storage root, interactive
122
+ settings presentation, and explicit installation policy. Output compaction can
123
+ operate without the executable; command rewriting requires a compatible `rtk`
124
+ on the active runtime.
125
+
126
+ It requires a compatible `@felan-ai/agent-core` peer. Managed installation is
127
+ explicit, digest-verified, and never runs during startup or a model tool call.
128
+ Lossy read compaction remains opt-in and explicit ranges remain exact.
129
+
130
+ ## Related documentation
131
+
132
+ - [Configuration](../../docs/user-guide/configuration.md#rtk)
133
+ - [Commands and shortcuts](../../docs/user-guide/commands-and-shortcuts.md)
134
+ - [Runtime dependencies](../../docs/reference/runtime-dependencies.md)
@@ -9,6 +9,7 @@ export interface RewriteDecision {
9
9
  }
10
10
  export interface ResolveRtkRewriteOptions {
11
11
  readonly timeoutMs?: number;
12
+ readonly executable?: string;
12
13
  }
13
14
  export interface RtkRewriteResult {
14
15
  readonly changed: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"command-rewriter.d.ts","sourceRoot":"","sources":["../src/command-rewriter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,IAAI,GAAG,OAAO,GAAG,aAAa,GAAG,UAAU,CAAC;IAC7D,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,YAAY,EACrB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,wBAAwB,GACjC,OAAO,CAAC,eAAe,CAAC,CAoC1B;AAED,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,YAAY,EACrB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,wBAA6B,GACrC,OAAO,CAAC,gBAAgB,CAAC,CAgD3B;AAED,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC,CAuBrF;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAGrD;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,GAAG;IACzD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,CAMA"}
1
+ {"version":3,"file":"command-rewriter.d.ts","sourceRoot":"","sources":["../src/command-rewriter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,IAAI,GAAG,OAAO,GAAG,aAAa,GAAG,UAAU,CAAC;IAC7D,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,YAAY,EACrB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,wBAAwB,GACjC,OAAO,CAAC,eAAe,CAAC,CAsD1B;AAED,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,YAAY,EACrB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,wBAA6B,GACrC,OAAO,CAAC,gBAAgB,CAAC,CAoD3B;AAED,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC,CAmCrF;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAGrD;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,GAAG;IACzD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,CAMA"}
@@ -1,3 +1,4 @@
1
+ import { managedRtkExecutable, supportsManagedRtk } from './installer.js';
1
2
  export async function computeRewriteDecision(runtime, command, options) {
2
3
  if (!command.trim()) {
3
4
  return {
@@ -7,7 +8,24 @@ export async function computeRewriteDecision(runtime, command, options) {
7
8
  reason: 'empty',
8
9
  };
9
10
  }
11
+ if (isAlreadyManagedRtk(command, options?.executable)) {
12
+ return {
13
+ changed: false,
14
+ originalCommand: command,
15
+ rewrittenCommand: command,
16
+ reason: 'already_rtk',
17
+ };
18
+ }
10
19
  if (isAlreadyRtk(command)) {
20
+ const executable = options?.executable;
21
+ if (executable && executable !== 'rtk') {
22
+ return {
23
+ changed: true,
24
+ originalCommand: command,
25
+ rewrittenCommand: qualifyManagedRewrite(command, executable),
26
+ reason: 'ok',
27
+ };
28
+ }
11
29
  return {
12
30
  changed: false,
13
31
  originalCommand: command,
@@ -33,11 +51,12 @@ export async function computeRewriteDecision(runtime, command, options) {
33
51
  };
34
52
  }
35
53
  export async function resolveRtkRewrite(runtime, command, options = {}) {
54
+ const executable = options.executable ?? 'rtk';
36
55
  try {
37
- const result = await runtime.exec('rtk', ['rewrite', command], {
56
+ const result = await runtime.exec(executable, ['rewrite', command], {
38
57
  timeout: options.timeoutMs ?? 3_000,
39
58
  });
40
- const rewritten = result.stdout.trim();
59
+ const rawRewritten = result.stdout.trim();
41
60
  if (result.code === 1) {
42
61
  return { changed: false, rewrittenCommand: command, exitCode: result.code };
43
62
  }
@@ -50,7 +69,7 @@ export async function resolveRtkRewrite(runtime, command, options = {}) {
50
69
  };
51
70
  }
52
71
  if (result.code === 0 || result.code === 3) {
53
- if (!rewritten) {
72
+ if (!rawRewritten) {
54
73
  return {
55
74
  changed: false,
56
75
  rewrittenCommand: command,
@@ -58,6 +77,9 @@ export async function resolveRtkRewrite(runtime, command, options = {}) {
58
77
  error: 'rtk returned empty output',
59
78
  };
60
79
  }
80
+ const rewritten = rawRewritten === command
81
+ ? rawRewritten
82
+ : qualifyManagedRewrite(rawRewritten, executable);
61
83
  return {
62
84
  changed: rewritten !== command,
63
85
  rewrittenCommand: rewritten,
@@ -81,29 +103,39 @@ export async function resolveRtkRewrite(runtime, command, options = {}) {
81
103
  }
82
104
  }
83
105
  export async function inspectRtkRuntime(runtime) {
84
- try {
85
- const result = await runtime.exec('rtk', ['--version'], { timeout: 5_000 });
86
- if (result.code === 0) {
87
- return {
88
- rtkAvailable: true,
89
- lastCheckedAt: Date.now(),
90
- ...(result.stdout.trim() ? { version: trimMessage(result.stdout) } : {}),
91
- };
106
+ const failures = [];
107
+ const candidates = [
108
+ ...(supportsManagedRtk(runtime)
109
+ ? [{ command: managedRtkExecutable(runtime), source: 'managed' }]
110
+ : []),
111
+ { command: 'rtk', source: 'path' },
112
+ ];
113
+ for (const candidate of candidates) {
114
+ try {
115
+ const result = await runtime.exec(candidate.command, ['--version'], { timeout: 5_000 });
116
+ if (result.code === 0 && !result.killed) {
117
+ return {
118
+ rtkAvailable: true,
119
+ lastCheckedAt: Date.now(),
120
+ command: candidate.command,
121
+ source: candidate.source,
122
+ ...(result.stdout.trim() ? { version: trimMessage(result.stdout) } : {}),
123
+ };
124
+ }
125
+ const detail = result.killed
126
+ ? 'timed out or was terminated'
127
+ : trimMessage(`${result.stderr} ${result.stdout}`) || `exit ${result.code}`;
128
+ failures.push(`${candidate.source}: ${detail}`);
129
+ }
130
+ catch (error) {
131
+ failures.push(`${candidate.source}: ${trimMessage(errorMessage(error))}`);
92
132
  }
93
- const detail = trimMessage(`${result.stderr} ${result.stdout}`);
94
- return {
95
- rtkAvailable: false,
96
- lastCheckedAt: Date.now(),
97
- lastError: detail || `exit ${result.code}`,
98
- };
99
- }
100
- catch (error) {
101
- return {
102
- rtkAvailable: false,
103
- lastCheckedAt: Date.now(),
104
- lastError: trimMessage(errorMessage(error)),
105
- };
106
133
  }
134
+ return {
135
+ rtkAvailable: false,
136
+ lastCheckedAt: Date.now(),
137
+ lastError: trimMessage(failures.join('; ')),
138
+ };
107
139
  }
108
140
  export function isAlreadyRtk(command) {
109
141
  const effectiveCommand = splitLeadingEnvAssignments(command.trimStart()).command.trimStart();
@@ -123,4 +155,23 @@ function trimMessage(value, maxLength = 220) {
123
155
  function errorMessage(error) {
124
156
  return error instanceof Error ? error.message : String(error);
125
157
  }
158
+ function qualifyManagedRewrite(rewritten, executable) {
159
+ if (executable === 'rtk' || !rewritten)
160
+ return rewritten;
161
+ return `${managedPathPrefix(executable)}${rewritten}\n\n)`;
162
+ }
163
+ function isAlreadyManagedRtk(command, executable) {
164
+ if (!executable || executable === 'rtk')
165
+ return false;
166
+ const effectiveCommand = splitLeadingEnvAssignments(command.trimStart()).command.trimStart();
167
+ return effectiveCommand.startsWith(managedPathPrefix(executable));
168
+ }
169
+ function managedPathPrefix(executable) {
170
+ const separator = executable.lastIndexOf('/');
171
+ const directory = separator < 0 ? '.' : executable.slice(0, separator);
172
+ return `(PATH=${quotePosixShellArgument(directory)}:"$PATH"; export PATH; `;
173
+ }
174
+ function quotePosixShellArgument(value) {
175
+ return `'${value.replace(/'/gu, `'\\''`)}'`;
176
+ }
126
177
  //# sourceMappingURL=command-rewriter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"command-rewriter.js","sourceRoot":"","sources":["../src/command-rewriter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"command-rewriter.js","sourceRoot":"","sources":["../src/command-rewriter.ts"],"names":[],"mappings":"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"}
package/dist/command.d.ts CHANGED
@@ -1,10 +1,10 @@
1
1
  import type { FelanExtensionAPI } from '@felan-ai/agent-core';
2
- import { type RtkOptimizerConfig, type RuntimeStatus } from './types.js';
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>;
7
+ install(onStatus: (message: string) => void): Promise<RuntimeStatus>;
8
8
  getMetricsSummary(): string;
9
9
  clearMetrics(): void;
10
10
  }
@@ -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;AAEhF,OAAO,EAAgC,KAAK,kBAAkB,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAEvG,MAAM,WAAW,sBAAsB;IACrC,SAAS,IAAI,kBAAkB,CAAC;IAChC,SAAS,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD,gBAAgB,IAAI,aAAa,CAAC;IAClC,oBAAoB,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC;IAC/C,iBAAiB,IAAI,MAAM,CAAC;IAC5B,YAAY,IAAI,IAAI,CAAC;CACtB;AAwCD,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,iBAAiB,EAAE,UAAU,EAAE,sBAAsB,GAAG,IAAI,CAkDlG"}
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;IACrE,iBAAiB,IAAI,MAAM,CAAC;IAC5B,YAAY,IAAI,IAAI,CAAC;CACtB;AAYD,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,iBAAiB,EAAE,UAAU,EAAE,sBAAsB,GAAG,IAAI,CAuDlG"}
package/dist/command.js CHANGED
@@ -1,13 +1,10 @@
1
- import { getRtkOptimizerConfigPath } from './config.js';
2
- import { DEFAULT_RTK_OPTIMIZER_CONFIG } from './types.js';
3
- const USAGE = 'Usage: /rtk [show|path|verify|stats|clear-stats|reset|help]';
1
+ const USAGE = 'Usage: /rtk [show|verify|install|stats|clear-stats|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'],
5
+ ['install', 'Run the pinned official RTK installer'],
8
6
  ['stats', 'Show output-compaction metrics'],
9
7
  ['clear-stats', 'Clear output-compaction metrics'],
10
- ['reset', 'Reset RTK settings to defaults'],
11
8
  ['help', 'Show command usage'],
12
9
  ];
13
10
  export function registerRtkCommand(pi, controller) {
@@ -25,11 +22,7 @@ export function registerRtkCommand(pi, controller) {
25
22
  handler: async (args, ctx) => {
26
23
  const subcommand = args.trim().toLowerCase();
27
24
  if (!subcommand) {
28
- if (!ctx.hasUI) {
29
- ctx.ui.notify('/rtk settings require interactive TUI mode.', 'warning');
30
- return;
31
- }
32
- await openSettings(ctx, controller);
25
+ ctx.ui.notify('Configure RTK through /settings. Use /rtk show to inspect the resolved settings.', 'info');
33
26
  return;
34
27
  }
35
28
  if (subcommand === 'help') {
@@ -38,15 +31,26 @@ export function registerRtkCommand(pi, controller) {
38
31
  else if (subcommand === 'show') {
39
32
  ctx.ui.notify(formatSummary(controller.getConfig(), controller.getRuntimeStatus()), 'info');
40
33
  }
41
- else if (subcommand === 'path') {
42
- ctx.ui.notify(`RTK config: ${getRtkOptimizerConfigPath(pi.runtime)}`, 'info');
43
- }
44
34
  else if (subcommand === 'verify') {
45
35
  const status = await controller.refreshRuntimeStatus();
46
36
  ctx.ui.notify(status.rtkAvailable
47
37
  ? `RTK is available${status.version ? ` (${status.version})` : ''}.`
48
38
  : `RTK is unavailable${status.lastError ? `: ${status.lastError}` : '.'}`, status.rtkAvailable ? 'info' : 'warning');
49
39
  }
40
+ else if (subcommand === 'install') {
41
+ ctx.ui.setStatus('rtk-install', '… Installing RTK');
42
+ try {
43
+ const status = await controller.install((message) => {
44
+ ctx.ui.setStatus('rtk-install', `… ${message}`);
45
+ });
46
+ ctx.ui.notify(status.rtkAvailable
47
+ ? `RTK installed successfully${status.version ? ` (${status.version})` : ''}.`
48
+ : `RTK installation failed${status.lastError ? `: ${status.lastError}` : '.'}`, status.rtkAvailable ? 'info' : 'error');
49
+ }
50
+ finally {
51
+ ctx.ui.setStatus('rtk-install', undefined);
52
+ }
53
+ }
50
54
  else if (subcommand === 'stats') {
51
55
  ctx.ui.notify(controller.getMetricsSummary(), 'info');
52
56
  }
@@ -54,172 +58,12 @@ export function registerRtkCommand(pi, controller) {
54
58
  controller.clearMetrics();
55
59
  ctx.ui.notify('RTK metrics cleared.', 'info');
56
60
  }
57
- else if (subcommand === 'reset') {
58
- if (await saveConfig(ctx, controller, structuredClone(DEFAULT_RTK_OPTIMIZER_CONFIG))) {
59
- ctx.ui.notify('RTK optimizer settings reset to defaults.', 'info');
60
- }
61
- }
62
61
  else {
63
62
  ctx.ui.notify(USAGE, 'warning');
64
63
  }
65
64
  },
66
65
  });
67
66
  }
68
- async function openSettings(ctx, controller) {
69
- while (true) {
70
- const config = controller.getConfig();
71
- const choices = settingChoices(config);
72
- const close = 'Close RTK settings';
73
- const selected = await ctx.ui.select('RTK Optimizer settings', [...choices.map((choice) => choice.label), close]);
74
- if (!selected || selected === close)
75
- return;
76
- const choice = choices.find((candidate) => candidate.label === selected);
77
- if (!choice)
78
- continue;
79
- const next = await changeSetting(ctx, config, choice.id);
80
- if (next)
81
- await saveConfig(ctx, controller, next);
82
- }
83
- }
84
- async function changeSetting(ctx, config, id) {
85
- const next = structuredClone(config);
86
- const output = next.outputCompaction;
87
- switch (id) {
88
- case 'enabled':
89
- next.enabled = !next.enabled;
90
- break;
91
- case 'mode':
92
- next.mode = next.mode === 'rewrite' ? 'suggest' : 'rewrite';
93
- break;
94
- case 'guardWhenRtkMissing':
95
- next.guardWhenRtkMissing = !next.guardWhenRtkMissing;
96
- break;
97
- case 'showRewriteNotifications':
98
- next.showRewriteNotifications = !next.showRewriteNotifications;
99
- break;
100
- case 'compactionEnabled':
101
- output.enabled = !output.enabled;
102
- break;
103
- case 'stripAnsi':
104
- output.stripAnsi = !output.stripAnsi;
105
- break;
106
- case 'readCompaction':
107
- output.readCompaction.enabled = !output.readCompaction.enabled;
108
- break;
109
- case 'sourceFilteringEnabled':
110
- output.sourceCodeFilteringEnabled = !output.sourceCodeFilteringEnabled;
111
- break;
112
- case 'preserveExactSkillReads':
113
- output.preserveExactSkillReads = !output.preserveExactSkillReads;
114
- break;
115
- case 'aggregateTestOutput':
116
- output.aggregateTestOutput = !output.aggregateTestOutput;
117
- break;
118
- case 'filterBuildOutput':
119
- output.filterBuildOutput = !output.filterBuildOutput;
120
- break;
121
- case 'compactGitOutput':
122
- output.compactGitOutput = !output.compactGitOutput;
123
- break;
124
- case 'aggregateLinterOutput':
125
- output.aggregateLinterOutput = !output.aggregateLinterOutput;
126
- break;
127
- case 'groupSearchOutput':
128
- output.groupSearchOutput = !output.groupSearchOutput;
129
- break;
130
- case 'smartTruncate':
131
- output.smartTruncate.enabled = !output.smartTruncate.enabled;
132
- break;
133
- case 'truncate':
134
- output.truncate.enabled = !output.truncate.enabled;
135
- break;
136
- case 'trackSavings':
137
- output.trackSavings = !output.trackSavings;
138
- break;
139
- case 'sourceFiltering': {
140
- const selected = await ctx.ui.select('Read source filtering', ['none', 'minimal', 'aggressive']);
141
- if (!selected)
142
- return undefined;
143
- output.sourceCodeFiltering = selected;
144
- break;
145
- }
146
- case 'smartTruncateMaxLines': {
147
- const selected = await ctx.ui.select('Read smart-truncation maximum lines', [
148
- '40',
149
- '80',
150
- '120',
151
- '160',
152
- '220',
153
- '320',
154
- '500',
155
- '1000',
156
- '2000',
157
- '4000',
158
- ]);
159
- if (!selected)
160
- return undefined;
161
- output.smartTruncate.maxLines = Number.parseInt(selected, 10);
162
- break;
163
- }
164
- case 'truncateMaxChars': {
165
- const selected = await ctx.ui.select('Hard-truncation maximum characters', [
166
- '4000',
167
- '8000',
168
- '12000',
169
- '20000',
170
- '50000',
171
- '100000',
172
- '200000',
173
- ]);
174
- if (!selected)
175
- return undefined;
176
- output.truncate.maxChars = Number.parseInt(selected, 10);
177
- break;
178
- }
179
- }
180
- return next;
181
- }
182
- async function saveConfig(ctx, controller, config) {
183
- try {
184
- await controller.setConfig(config);
185
- return true;
186
- }
187
- catch (error) {
188
- ctx.ui.notify(`Failed to save RTK settings: ${errorMessage(error)}`, 'error');
189
- return false;
190
- }
191
- }
192
- function settingChoices(config) {
193
- const output = config.outputCompaction;
194
- return [
195
- setting('enabled', 'Optimizer enabled', onOff(config.enabled)),
196
- setting('mode', 'Rewrite mode', config.mode),
197
- setting('guardWhenRtkMissing', 'Guard when RTK is missing', onOff(config.guardWhenRtkMissing)),
198
- setting('showRewriteNotifications', 'Rewrite notifications', onOff(config.showRewriteNotifications)),
199
- setting('compactionEnabled', 'Output compaction', onOff(output.enabled)),
200
- setting('stripAnsi', 'Strip ANSI', onOff(output.stripAnsi)),
201
- setting('readCompaction', 'Lossy read compaction', onOff(output.readCompaction.enabled)),
202
- setting('sourceFilteringEnabled', 'Read source filtering', onOff(output.sourceCodeFilteringEnabled)),
203
- setting('sourceFiltering', 'Read source-filter level', output.sourceCodeFiltering),
204
- setting('preserveExactSkillReads', 'Preserve exact skill reads', onOff(output.preserveExactSkillReads)),
205
- setting('aggregateTestOutput', 'Aggregate test output', onOff(output.aggregateTestOutput)),
206
- setting('filterBuildOutput', 'Filter build output', onOff(output.filterBuildOutput)),
207
- setting('compactGitOutput', 'Compact Git output', onOff(output.compactGitOutput)),
208
- setting('aggregateLinterOutput', 'Aggregate linter output', onOff(output.aggregateLinterOutput)),
209
- setting('groupSearchOutput', 'Group search output', onOff(output.groupSearchOutput)),
210
- setting('smartTruncate', 'Read smart truncation', onOff(output.smartTruncate.enabled)),
211
- setting('smartTruncateMaxLines', 'Read smart-truncation lines', String(output.smartTruncate.maxLines)),
212
- setting('truncate', 'Hard truncation', onOff(output.truncate.enabled)),
213
- setting('truncateMaxChars', 'Hard-truncation characters', String(output.truncate.maxChars)),
214
- setting('trackSavings', 'Track savings', onOff(output.trackSavings)),
215
- ];
216
- }
217
- function setting(id, name, value) {
218
- return { id, label: `${name}: ${value}` };
219
- }
220
- function onOff(value) {
221
- return value ? 'on' : 'off';
222
- }
223
67
  function formatSummary(config, status) {
224
68
  const runtime = status.rtkAvailable
225
69
  ? `available${status.version ? ` (${status.version})` : ''}`
@@ -1 +1 @@
1
- {"version":3,"file":"command.js","sourceRoot":"","sources":["../src/command.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"command.js","sourceRoot":"","sources":["../src/command.ts"],"names":[],"mappings":"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"}