@meistrari/remy-cli 1.14.0 → 1.14.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 +1 -1
- package/dist/remy.js +27 -2
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -42,7 +42,7 @@ Use `Tab` while writing the request to complete a local file or directory path.
|
|
|
42
42
|
|
|
43
43
|
### Resume or follow up
|
|
44
44
|
|
|
45
|
-
Every terminal follow-up is appended as an explicit **Steer**, so it targets the work currently in progress. Queuing a message for a later turn (**Next**) is Web-only for now.
|
|
45
|
+
Every terminal follow-up is appended as an explicit **Steer**, so it targets the work currently in progress. Queuing a message for a later turn (**Next**) is Web-only for now. Remy can replay sessions containing queued-message dispatch, withdrawal, and failure events. Messages withdrawn or failed before reaching Remy show an activity notice; an active submission ends as cancelled or failed instead of waiting for a turn that never started.
|
|
46
46
|
|
|
47
47
|
Use Up/Down to select a session in the dashboard, Left/Right to load the adjacent page, and `Enter` to open it. Remy loads the complete retained conversation before showing the session view, then streams new activity as it arrives. Press `s` to search the loaded page by session ID, title, or number; `Enter` keeps the search active and `Esc` clears it. Press `f` to filter sessions by lifecycle status or `a` to filter by author. Both pickers use checkboxes: Up/Down or `j`/`k` moves, `Space` toggles, Right/`l` checks, Left/`h` clears, `G` and `gg` jump to the last and first option, and `Enter` applies every checked value. An empty picker means all values. Press `s` inside either picker to fuzzy-search its options; `Enter` keeps the matching list and `Esc` cancels the search. Press `Esc` outside search to discard staged checkbox changes. Filters apply to the complete remote result set and reset pagination to its first page. After the dashboard list or repository-review list has focus, Vim keys work too: `j`/`k` move, `h`/`l` go to the previous/next dashboard page (or clear/mark a repository), `G` goes to the last row, and `gg` goes to the first row. Press `Shift+L` in the dashboard to start a logout confirmation. In any message composer, plain `Enter` and `Shift+Enter` submit; `Option+Enter` on macOS (`Alt+Enter` elsewhere) inserts a newline. `Ctrl+J` also inserts a newline for terminals that do not report the Option/Alt modifier. The conversation header keeps the numbered session title on its first line and repository, pull request, work state, elapsed time, and connection state on its second line. The header also keeps the last provider-reported context observation across reconnects, such as `Context 50% left · 62,000 used`; when the provider does not report a context window, it shows only used tokens. This is an observation, not a live occupancy guarantee or billing total.
|
|
48
48
|
|
package/dist/remy.js
CHANGED
|
@@ -34069,6 +34069,10 @@ var sessionMessageTurnAssociatedEventSchema = exports_external2.object({
|
|
|
34069
34069
|
type: exports_external2.literal("session.message.turn-associated"),
|
|
34070
34070
|
payload: exports_external2.object({ messageId: exports_external2.string().min(1), commandId: exports_external2.string().min(1), turnId: exports_external2.string().min(1) }).passthrough()
|
|
34071
34071
|
}).passthrough();
|
|
34072
|
+
var sessionMessageDispatchEventSchema = exports_external2.object({
|
|
34073
|
+
type: exports_external2.enum(["session.message.dispatched", "session.message.withdrawn", "session.message.failed"]),
|
|
34074
|
+
payload: exports_external2.object({ messageId: exports_external2.string().min(1), commandId: exports_external2.string().min(1) }).passthrough()
|
|
34075
|
+
}).passthrough();
|
|
34072
34076
|
var sessionWorkspaceGitInitializedEventSchema = exports_external2.object({
|
|
34073
34077
|
type: exports_external2.literal("session.workspace.git.initialized"),
|
|
34074
34078
|
payload: exports_external2.object({
|
|
@@ -34205,6 +34209,8 @@ function sessionTurnOutcome({ state, sessionMessageId }) {
|
|
|
34205
34209
|
const turn = state.messageTurns[sessionMessageId];
|
|
34206
34210
|
if (!turn)
|
|
34207
34211
|
return { status: "unassociated" };
|
|
34212
|
+
if (turn.turnId === null)
|
|
34213
|
+
return { status: "ended", turnId: null, outcome: turn.outcome };
|
|
34208
34214
|
if (turn.outcome)
|
|
34209
34215
|
return { status: "ended", turnId: turn.turnId, outcome: turn.outcome };
|
|
34210
34216
|
return { status: "pending", turnId: turn.turnId };
|
|
@@ -34228,10 +34234,11 @@ function projectRetainedEvent({
|
|
|
34228
34234
|
}) {
|
|
34229
34235
|
const messageCreated = sessionMessageCreatedEventSchema.safeParse(event);
|
|
34230
34236
|
const turnAssociated = sessionMessageTurnAssociatedEventSchema.safeParse(event);
|
|
34237
|
+
const messageDispatch = sessionMessageDispatchEventSchema.safeParse(event);
|
|
34231
34238
|
const workspaceGitInitialized = sessionWorkspaceGitInitializedEventSchema.safeParse(event);
|
|
34232
34239
|
const workspaceGitRevision = sessionWorkspaceGitRevisionEventSchema.safeParse(event);
|
|
34233
34240
|
const turnEnded = agentTurnEndedEventSchema.safeParse(event);
|
|
34234
|
-
let projected = messageCreated.success ? projectSessionMessageCreated({ state, event: messageCreated.data, occurredAt }) : turnAssociated.success ? projectSessionMessageTurnAssociated({ state, event: turnAssociated.data }) : workspaceGitInitialized.success ? projectSessionWorkspaceGitInitialized({ state, event: workspaceGitInitialized.data, occurredAt, retainedEventId }) : workspaceGitRevision.success ? projectSessionWorkspaceGitRevision({ state, event: workspaceGitRevision.data, occurredAt, retainedEventId }) : turnEnded.success ? projectAgentTurnEnded({ state, event: turnEnded.data, occurredAt, retainedEventId }) : projectDurableAgentEvent({ state, event, occurredAt, retainedEventId });
|
|
34241
|
+
let projected = messageCreated.success ? projectSessionMessageCreated({ state, event: messageCreated.data, occurredAt }) : turnAssociated.success ? projectSessionMessageTurnAssociated({ state, event: turnAssociated.data }) : messageDispatch.success ? projectSessionMessageDispatch({ state, event: messageDispatch.data, occurredAt, retainedEventId }) : workspaceGitInitialized.success ? projectSessionWorkspaceGitInitialized({ state, event: workspaceGitInitialized.data, occurredAt, retainedEventId }) : workspaceGitRevision.success ? projectSessionWorkspaceGitRevision({ state, event: workspaceGitRevision.data, occurredAt, retainedEventId }) : turnEnded.success ? projectAgentTurnEnded({ state, event: turnEnded.data, occurredAt, retainedEventId }) : projectDurableAgentEvent({ state, event, occurredAt, retainedEventId });
|
|
34235
34242
|
projected = recordAgentLineageEvent({ state: projected, event, retainedEventId });
|
|
34236
34243
|
if (artifact) {
|
|
34237
34244
|
const publication = artifact.kind === "file" ? { artifactId: artifact.artifact_id, kind: artifact.kind, title: artifact.filename } : { artifactId: artifact.artifact_id, kind: artifact.kind, title: artifact.title, url: artifact.url };
|
|
@@ -34319,6 +34326,24 @@ function projectSessionMessageTurnAssociated({ state, event }) {
|
|
|
34319
34326
|
};
|
|
34320
34327
|
return { ...state, messageTurns: { ...state.messageTurns, [event.payload.messageId]: nextTurn } };
|
|
34321
34328
|
}
|
|
34329
|
+
function projectSessionMessageDispatch({ state, event, occurredAt, retainedEventId }) {
|
|
34330
|
+
if (event.type === "session.message.dispatched")
|
|
34331
|
+
return state;
|
|
34332
|
+
const withdrawn = event.type === "session.message.withdrawn";
|
|
34333
|
+
const outcome = withdrawn ? "cancelled" : "failed";
|
|
34334
|
+
return appendActivity({
|
|
34335
|
+
state: {
|
|
34336
|
+
...state,
|
|
34337
|
+
messageTurns: {
|
|
34338
|
+
...state.messageTurns,
|
|
34339
|
+
[event.payload.messageId]: { commandId: event.payload.commandId, turnId: null, outcome }
|
|
34340
|
+
}
|
|
34341
|
+
},
|
|
34342
|
+
occurredAt,
|
|
34343
|
+
retainedEventId,
|
|
34344
|
+
card: withdrawn ? { kind: "lifecycle", weight: "signal", title: "Message withdrawn", summary: "Message was withdrawn before reaching Remy." } : { kind: "failure", weight: "signal", title: "Message failed", summary: "Message failed before reaching Remy." }
|
|
34345
|
+
});
|
|
34346
|
+
}
|
|
34322
34347
|
function projectSessionWorkspaceGitInitialized({ state, event, occurredAt, retainedEventId }) {
|
|
34323
34348
|
return appendActivity({
|
|
34324
34349
|
state,
|
|
@@ -39405,7 +39430,7 @@ var compactMarkRows = 9;
|
|
|
39405
39430
|
var compactMinWidth = 48;
|
|
39406
39431
|
var compactMinHeight = 20;
|
|
39407
39432
|
var markBrightnessGain = 4.2;
|
|
39408
|
-
var remyCliVersion = "1.14.
|
|
39433
|
+
var remyCliVersion = "1.14.1";
|
|
39409
39434
|
async function showRemySplash({
|
|
39410
39435
|
createRenderer = createRemyRenderer,
|
|
39411
39436
|
durationMs = splashDurationMs,
|