@elyracode/coding-agent 0.7.3 → 0.7.6
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/CHANGELOG.md +13 -0
- package/dist/core/agent-session.d.ts +34 -0
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +149 -0
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/extensions/types.d.ts +5 -0
- package/dist/core/extensions/types.d.ts.map +1 -1
- package/dist/core/extensions/types.js.map +1 -1
- package/dist/core/git-checkpoint.d.ts +70 -0
- package/dist/core/git-checkpoint.d.ts.map +1 -0
- package/dist/core/git-checkpoint.js +140 -0
- package/dist/core/git-checkpoint.js.map +1 -0
- package/dist/core/keybindings.d.ts +5 -0
- package/dist/core/keybindings.d.ts.map +1 -1
- package/dist/core/keybindings.js +1 -0
- package/dist/core/keybindings.js.map +1 -1
- package/dist/core/slash-commands.d.ts.map +1 -1
- package/dist/core/slash-commands.js +1 -0
- package/dist/core/slash-commands.js.map +1 -1
- package/dist/modes/interactive/components/index.d.ts +1 -0
- package/dist/modes/interactive/components/index.d.ts.map +1 -1
- package/dist/modes/interactive/components/index.js +1 -0
- package/dist/modes/interactive/components/index.js.map +1 -1
- package/dist/modes/interactive/components/rewind-selector.d.ts +38 -0
- package/dist/modes/interactive/components/rewind-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/rewind-selector.js +119 -0
- package/dist/modes/interactive/components/rewind-selector.js.map +1 -0
- package/dist/modes/interactive/interactive-mode.d.ts +2 -0
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +100 -0
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/print-mode.d.ts.map +1 -1
- package/dist/modes/print-mode.js +4 -0
- package/dist/modes/print-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-mode.js +4 -0
- package/dist/modes/rpc/rpc-mode.js.map +1 -1
- package/docs/extensions.md +19 -0
- package/docs/keybindings.md +1 -0
- package/docs/sessions.md +30 -8
- package/docs/usage.md +2 -0
- package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
- package/examples/extensions/custom-provider-anthropic/package.json +1 -1
- package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
- package/examples/extensions/sandbox/package-lock.json +2 -2
- package/examples/extensions/sandbox/package.json +1 -1
- package/examples/extensions/with-deps/package-lock.json +2 -2
- package/examples/extensions/with-deps/package.json +1 -1
- package/package.json +4 -4
|
@@ -315,6 +315,7 @@ export declare class InteractiveMode {
|
|
|
315
315
|
private showSettingsSelector;
|
|
316
316
|
private handleInitCommand;
|
|
317
317
|
private handleSkillsCommand;
|
|
318
|
+
private checkForVersionUpdate;
|
|
318
319
|
private handleSkillsInstallCommand;
|
|
319
320
|
private handleHelpCommand;
|
|
320
321
|
private handleCostCommand;
|
|
@@ -339,6 +340,7 @@ export declare class InteractiveMode {
|
|
|
339
340
|
private showUserMessageSelector;
|
|
340
341
|
private handleCloneCommand;
|
|
341
342
|
private showTreeSelector;
|
|
343
|
+
private showRewindSelector;
|
|
342
344
|
private showSessionSelector;
|
|
343
345
|
private handleResumeSession;
|
|
344
346
|
private getLoginProviderOptions;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interactive-mode.d.ts","sourceRoot":"","sources":["../../../src/modes/interactive/interactive-mode.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,OAAO,EAGN,KAAK,YAAY,EAKjB,MAAM,eAAe,CAAC;AA6CvB,OAAO,EAAE,KAAK,mBAAmB,EAAkC,MAAM,qCAAqC,CAAC;
|
|
1
|
+
{"version":3,"file":"interactive-mode.d.ts","sourceRoot":"","sources":["../../../src/modes/interactive/interactive-mode.ts"],"names":[],"mappings":"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"}
|
|
@@ -50,6 +50,7 @@ import { formatKeyText, keyDisplayText, keyHint, keyText, rawKeyHint } from "./c
|
|
|
50
50
|
import { LoginDialogComponent } from "./components/login-dialog.js";
|
|
51
51
|
import { ModelSelectorComponent } from "./components/model-selector.js";
|
|
52
52
|
import { OAuthSelectorComponent } from "./components/oauth-selector.js";
|
|
53
|
+
import { RewindSelectorComponent } from "./components/rewind-selector.js";
|
|
53
54
|
import { ScopedModelsSelectorComponent } from "./components/scoped-models-selector.js";
|
|
54
55
|
import { SessionSelectorComponent } from "./components/session-selector.js";
|
|
55
56
|
import { SettingsSelectorComponent } from "./components/settings-selector.js";
|
|
@@ -521,6 +522,8 @@ export class InteractiveMode {
|
|
|
521
522
|
});
|
|
522
523
|
// Initialize available provider count for footer display
|
|
523
524
|
await this.updateAvailableProviderCount();
|
|
525
|
+
// Check for version updates (non-blocking)
|
|
526
|
+
void this.checkForVersionUpdate();
|
|
524
527
|
}
|
|
525
528
|
/**
|
|
526
529
|
* Update terminal title with session name and cwd.
|
|
@@ -1176,6 +1179,19 @@ export class InteractiveMode {
|
|
|
1176
1179
|
void this.flushCompactionQueue({ willRetry: false });
|
|
1177
1180
|
return { cancelled: false };
|
|
1178
1181
|
},
|
|
1182
|
+
rewind: async (entryId) => {
|
|
1183
|
+
const result = await this.session.rewind(entryId);
|
|
1184
|
+
if (!result.cancelled && !result.error) {
|
|
1185
|
+
this.chatContainer.clear();
|
|
1186
|
+
this.renderInitialMessages();
|
|
1187
|
+
if (result.editorText && !this.editor.getText().trim()) {
|
|
1188
|
+
this.editor.setText(result.editorText);
|
|
1189
|
+
}
|
|
1190
|
+
this.showStatus("Rewound to selected point");
|
|
1191
|
+
void this.flushCompactionQueue({ willRetry: false });
|
|
1192
|
+
}
|
|
1193
|
+
return { cancelled: result.cancelled, filesRestored: result.filesRestored, error: result.error };
|
|
1194
|
+
},
|
|
1179
1195
|
switchSession: async (sessionPath, options) => {
|
|
1180
1196
|
return this.handleResumeSession(sessionPath, options);
|
|
1181
1197
|
},
|
|
@@ -1937,6 +1953,7 @@ export class InteractiveMode {
|
|
|
1937
1953
|
this.defaultEditor.onAction("app.session.tree", () => this.showTreeSelector());
|
|
1938
1954
|
this.defaultEditor.onAction("app.session.fork", () => this.showUserMessageSelector());
|
|
1939
1955
|
this.defaultEditor.onAction("app.session.resume", () => this.showSessionSelector());
|
|
1956
|
+
this.defaultEditor.onAction("app.session.rewind", () => this.showRewindSelector());
|
|
1940
1957
|
this.defaultEditor.onChange = (text) => {
|
|
1941
1958
|
const wasBashMode = this.isBashMode;
|
|
1942
1959
|
this.isBashMode = text.trimStart().startsWith("!");
|
|
@@ -2120,6 +2137,11 @@ export class InteractiveMode {
|
|
|
2120
2137
|
this.editor.setText("");
|
|
2121
2138
|
return;
|
|
2122
2139
|
}
|
|
2140
|
+
if (text === "/rewind") {
|
|
2141
|
+
this.showRewindSelector();
|
|
2142
|
+
this.editor.setText("");
|
|
2143
|
+
return;
|
|
2144
|
+
}
|
|
2123
2145
|
if (text === "/login") {
|
|
2124
2146
|
this.showOAuthSelector("login");
|
|
2125
2147
|
this.editor.setText("");
|
|
@@ -3444,6 +3466,41 @@ export class InteractiveMode {
|
|
|
3444
3466
|
this.chatContainer.addChild(new Text(lines.join("\n"), 1, 0));
|
|
3445
3467
|
this.ui.requestRender();
|
|
3446
3468
|
}
|
|
3469
|
+
async checkForVersionUpdate() {
|
|
3470
|
+
try {
|
|
3471
|
+
if (process.env.ELYRA_SKIP_VERSION_CHECK || process.env.ELYRA_OFFLINE)
|
|
3472
|
+
return;
|
|
3473
|
+
const controller = new AbortController();
|
|
3474
|
+
const timeout = setTimeout(() => controller.abort(), 5000);
|
|
3475
|
+
const response = await fetch("https://registry.npmjs.org/@elyracode/coding-agent/latest", {
|
|
3476
|
+
headers: { Accept: "application/json", "User-Agent": "elyra" },
|
|
3477
|
+
signal: controller.signal,
|
|
3478
|
+
});
|
|
3479
|
+
clearTimeout(timeout);
|
|
3480
|
+
if (!response.ok)
|
|
3481
|
+
return;
|
|
3482
|
+
const data = (await response.json());
|
|
3483
|
+
if (!data.version)
|
|
3484
|
+
return;
|
|
3485
|
+
const latest = data.version;
|
|
3486
|
+
const current = this.version;
|
|
3487
|
+
if (latest === current)
|
|
3488
|
+
return;
|
|
3489
|
+
// Simple semver comparison
|
|
3490
|
+
const [lMajor, lMinor, lPatch] = latest.split(".").map(Number);
|
|
3491
|
+
const [cMajor, cMinor, cPatch] = current.split(".").map(Number);
|
|
3492
|
+
if (lMajor < cMajor ||
|
|
3493
|
+
(lMajor === cMajor && lMinor < cMinor) ||
|
|
3494
|
+
(lMajor === cMajor && lMinor === cMinor && lPatch <= cPatch))
|
|
3495
|
+
return;
|
|
3496
|
+
const updateCmd = theme.fg("accent", "elyra update");
|
|
3497
|
+
const message = `${theme.fg("dim", `Update available: ${current} \u2192 ${latest}. Run`)} ${updateCmd}`;
|
|
3498
|
+
this.chatContainer.addChild(new Text(message, 1, 0));
|
|
3499
|
+
}
|
|
3500
|
+
catch {
|
|
3501
|
+
// Never block startup on version check failure
|
|
3502
|
+
}
|
|
3503
|
+
}
|
|
3447
3504
|
async handleSkillsInstallCommand(args) {
|
|
3448
3505
|
if (!args) {
|
|
3449
3506
|
this.showError("Usage: /skills install <name> [name2 ...]\n\nBrowse available skills at github.com/kwhorne/elyra-skills");
|
|
@@ -4197,6 +4254,49 @@ export class InteractiveMode {
|
|
|
4197
4254
|
return { component: selector, focus: selector };
|
|
4198
4255
|
});
|
|
4199
4256
|
}
|
|
4257
|
+
showRewindSelector() {
|
|
4258
|
+
const points = this.session.getRewindPoints();
|
|
4259
|
+
if (points.length === 0) {
|
|
4260
|
+
this.showStatus("No rewind points available — checkpoints are created when the agent runs");
|
|
4261
|
+
return;
|
|
4262
|
+
}
|
|
4263
|
+
// Pre-select the second-to-last point (last non-current point)
|
|
4264
|
+
const initialIndex = Math.max(0, points.length - 2);
|
|
4265
|
+
this.showSelector((done) => {
|
|
4266
|
+
const selector = new RewindSelectorComponent(points, async (entryId) => {
|
|
4267
|
+
done();
|
|
4268
|
+
try {
|
|
4269
|
+
const result = await this.session.rewind(entryId);
|
|
4270
|
+
if (result.cancelled) {
|
|
4271
|
+
this.ui.requestRender();
|
|
4272
|
+
return;
|
|
4273
|
+
}
|
|
4274
|
+
if (result.error) {
|
|
4275
|
+
this.showError(`Rewind error: ${result.error}`);
|
|
4276
|
+
return;
|
|
4277
|
+
}
|
|
4278
|
+
// Rebuild the chat UI
|
|
4279
|
+
this.chatContainer.clear();
|
|
4280
|
+
this.renderInitialMessages();
|
|
4281
|
+
if (result.editorText && !this.editor.getText().trim()) {
|
|
4282
|
+
this.editor.setText(result.editorText);
|
|
4283
|
+
}
|
|
4284
|
+
const fileMsg = result.filesRestored > 0
|
|
4285
|
+
? ` (${result.filesRestored} file${result.filesRestored === 1 ? "" : "s"} restored)`
|
|
4286
|
+
: "";
|
|
4287
|
+
this.showStatus(`Rewound to selected point${fileMsg}`);
|
|
4288
|
+
void this.flushCompactionQueue({ willRetry: false });
|
|
4289
|
+
}
|
|
4290
|
+
catch (error) {
|
|
4291
|
+
this.showError(error instanceof Error ? error.message : String(error));
|
|
4292
|
+
}
|
|
4293
|
+
}, () => {
|
|
4294
|
+
done();
|
|
4295
|
+
this.ui.requestRender();
|
|
4296
|
+
}, initialIndex);
|
|
4297
|
+
return { component: selector, focus: selector.getList() };
|
|
4298
|
+
});
|
|
4299
|
+
}
|
|
4200
4300
|
showSessionSelector() {
|
|
4201
4301
|
this.showSelector((done) => {
|
|
4202
4302
|
const selector = new SessionSelectorComponent((onProgress) => SessionManager.list(this.sessionManager.getCwd(), this.sessionManager.getSessionDir(), onProgress), SessionManager.listAll, async (sessionPath) => {
|