@meistrari/remy-cli 1.7.0 → 1.8.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/README.md +2 -0
- package/dist/remy.js +75 -43
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -44,6 +44,8 @@ Use `Tab` while writing the request to complete a local file path. Remy attaches
|
|
|
44
44
|
|
|
45
45
|
Use Up/Down to select a session in the dashboard, Left/Right to load the adjacent page, and `Enter` to open it. 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 a session, type a follow-up and press `Enter` to send it.
|
|
46
46
|
|
|
47
|
+
Published files and Tela Pages appear in the timeline. A Tela Page row includes its title and canonical URL so you can open it directly from the terminal.
|
|
48
|
+
|
|
47
49
|
When Remy creates a plan, the session shows its checklist in the timeline and keeps `Plan <done>/<total>` with the current item pinned above the composer. Updates change the same checklist instead of producing repeated rows, and an unfinished plan remains visible after reconnecting or between turns. The collapsed timeline shows up to five plan items; press `Ctrl+O` for the complete checklist and activity detail.
|
|
48
50
|
|
|
49
51
|
Drag to select visible text in any Remy view; Remy copies it to the local clipboard and emits OSC 52 for terminal or remote-session clipboard support, then clears the selection highlight. When the conversation has focus, press `Tab` to return to the composer.
|
package/dist/remy.js
CHANGED
|
@@ -32607,6 +32607,38 @@ var selectableAgentReasoningEfforts = ["low", "medium", "high", "xhigh"];
|
|
|
32607
32607
|
// ../../packages/coding-agent-client/src/sessions.ts
|
|
32608
32608
|
var reasoningEffortSchema = exports_external2.enum(selectableAgentReasoningEfforts);
|
|
32609
32609
|
var sessionStatusSchema = exports_external2.enum(["open", "completed", "failed", "cancelled"]);
|
|
32610
|
+
var sessionArtifactPresentationSchema = exports_external2.discriminatedUnion("type", [
|
|
32611
|
+
exports_external2.strictObject({ type: exports_external2.literal("image"), caption: exports_external2.string(), alt_text: exports_external2.string() }),
|
|
32612
|
+
exports_external2.strictObject({ type: exports_external2.literal("video"), title: exports_external2.string(), description: exports_external2.string() }),
|
|
32613
|
+
exports_external2.strictObject({ type: exports_external2.literal("file"), title: exports_external2.string(), description: exports_external2.string() })
|
|
32614
|
+
]);
|
|
32615
|
+
var sessionFileArtifactEventSchema = exports_external2.strictObject({
|
|
32616
|
+
kind: exports_external2.literal("file"),
|
|
32617
|
+
artifact_id: exports_external2.string(),
|
|
32618
|
+
filename: exports_external2.string(),
|
|
32619
|
+
media_type: exports_external2.string(),
|
|
32620
|
+
byte_size: exports_external2.number().int().positive(),
|
|
32621
|
+
presentation: sessionArtifactPresentationSchema
|
|
32622
|
+
});
|
|
32623
|
+
var sessionTelaPageArtifactEventSchema = exports_external2.strictObject({
|
|
32624
|
+
kind: exports_external2.literal("tela_page"),
|
|
32625
|
+
artifact_id: exports_external2.string(),
|
|
32626
|
+
site: exports_external2.string(),
|
|
32627
|
+
title: exports_external2.string(),
|
|
32628
|
+
summary: exports_external2.string().nullable(),
|
|
32629
|
+
surface: exports_external2.enum(["document", "deployed"]),
|
|
32630
|
+
outcome: exports_external2.enum(["created", "updated", "unchanged"]),
|
|
32631
|
+
url: exports_external2.url(),
|
|
32632
|
+
published_at: exports_external2.iso.datetime()
|
|
32633
|
+
});
|
|
32634
|
+
var sessionArtifactEventSchema = exports_external2.discriminatedUnion("kind", [
|
|
32635
|
+
sessionFileArtifactEventSchema,
|
|
32636
|
+
sessionTelaPageArtifactEventSchema
|
|
32637
|
+
]);
|
|
32638
|
+
var sessionArtifactSchema = exports_external2.discriminatedUnion("kind", [
|
|
32639
|
+
sessionFileArtifactEventSchema.extend({ download_url: exports_external2.string() }),
|
|
32640
|
+
sessionTelaPageArtifactEventSchema.extend({ preview_url: exports_external2.string() })
|
|
32641
|
+
]);
|
|
32610
32642
|
var sessionMessageSchema = exports_external2.strictObject({
|
|
32611
32643
|
id: exports_external2.string(),
|
|
32612
32644
|
sequence: exports_external2.number().int().positive(),
|
|
@@ -32677,15 +32709,6 @@ var interruptSessionResponseSchema = exports_external2.strictObject({
|
|
|
32677
32709
|
type: exports_external2.literal("agent.interrupt")
|
|
32678
32710
|
})
|
|
32679
32711
|
});
|
|
32680
|
-
var sessionPullRequestSchema = exports_external2.strictObject({
|
|
32681
|
-
id: exports_external2.string(),
|
|
32682
|
-
repository_id: exports_external2.string(),
|
|
32683
|
-
number: exports_external2.number().int().positive(),
|
|
32684
|
-
title: exports_external2.string(),
|
|
32685
|
-
url: exports_external2.string(),
|
|
32686
|
-
status: exports_external2.enum(["open", "closed", "merged"]),
|
|
32687
|
-
draft: exports_external2.boolean()
|
|
32688
|
-
});
|
|
32689
32712
|
var sessionDetailResponseSchema = exports_external2.object({
|
|
32690
32713
|
id: exports_external2.string(),
|
|
32691
32714
|
status: sessionStatusSchema,
|
|
@@ -32704,18 +32727,9 @@ var sessionDetailResponseSchema = exports_external2.object({
|
|
|
32704
32727
|
id: exports_external2.string(),
|
|
32705
32728
|
full_name: exports_external2.string()
|
|
32706
32729
|
})),
|
|
32707
|
-
connections: exports_external2.array(sessionConnectionSchema).max(1)
|
|
32730
|
+
connections: exports_external2.array(sessionConnectionSchema).max(1),
|
|
32731
|
+
artifacts: exports_external2.array(sessionArtifactSchema)
|
|
32708
32732
|
}).passthrough();
|
|
32709
|
-
var sessionLifecycleResponseSchema = exports_external2.object({
|
|
32710
|
-
id: exports_external2.string(),
|
|
32711
|
-
status: sessionStatusSchema,
|
|
32712
|
-
repositories: exports_external2.array(exports_external2.strictObject({
|
|
32713
|
-
id: exports_external2.string(),
|
|
32714
|
-
full_name: exports_external2.string()
|
|
32715
|
-
})),
|
|
32716
|
-
pull_requests: exports_external2.array(sessionPullRequestSchema),
|
|
32717
|
-
connections: exports_external2.array(sessionConnectionSchema).max(1)
|
|
32718
|
-
});
|
|
32719
32733
|
var sessionSourceSchema = exports_external2.discriminatedUnion("provider", [
|
|
32720
32734
|
exports_external2.object({
|
|
32721
32735
|
provider: exports_external2.literal("slack"),
|
|
@@ -32757,6 +32771,10 @@ var sessionSummarySchema = exports_external2.object({
|
|
|
32757
32771
|
created_at: exports_external2.string(),
|
|
32758
32772
|
updated_at: exports_external2.string().nullable()
|
|
32759
32773
|
});
|
|
32774
|
+
var telaPagePreviewGrantSchema = exports_external2.strictObject({
|
|
32775
|
+
url: exports_external2.url(),
|
|
32776
|
+
expires_at: exports_external2.iso.datetime()
|
|
32777
|
+
});
|
|
32760
32778
|
var sessionListResponseSchema = exports_external2.strictObject({
|
|
32761
32779
|
data: exports_external2.array(sessionSummarySchema),
|
|
32762
32780
|
has_more: exports_external2.boolean(),
|
|
@@ -32848,14 +32866,14 @@ async function interruptSession({
|
|
|
32848
32866
|
}
|
|
32849
32867
|
async function completeSession({ client, sessionId }) {
|
|
32850
32868
|
const response = await client.request(`/v1/sessions/${encodeURIComponent(sessionId)}/complete`, { method: "PUT" });
|
|
32851
|
-
const parsed =
|
|
32869
|
+
const parsed = sessionDetailResponseSchema.safeParse(await parseJson2(response, "Session completion response was not valid JSON."));
|
|
32852
32870
|
if (!parsed.success)
|
|
32853
32871
|
throw new CodingAgentProtocolError("Session completion response did not match the public API contract.", { cause: parsed.error });
|
|
32854
32872
|
return parsed.data;
|
|
32855
32873
|
}
|
|
32856
32874
|
async function cancelSession({ client, sessionId }) {
|
|
32857
32875
|
const response = await client.request(`/v1/sessions/${encodeURIComponent(sessionId)}/cancel`, { method: "PUT" });
|
|
32858
|
-
const parsed =
|
|
32876
|
+
const parsed = sessionDetailResponseSchema.safeParse(await parseJson2(response, "Session cancellation response was not valid JSON."));
|
|
32859
32877
|
if (!parsed.success)
|
|
32860
32878
|
throw new CodingAgentProtocolError("Session cancellation response did not match the public API contract.", { cause: parsed.error });
|
|
32861
32879
|
return parsed.data;
|
|
@@ -32933,19 +32951,13 @@ function parseAppendSessionMessageResponse(body) {
|
|
|
32933
32951
|
// ../../packages/coding-agent-client/src/session-events.ts
|
|
32934
32952
|
var retainedEventBodySchema = exports_external2.object({ type: exports_external2.string().min(1) }).passthrough();
|
|
32935
32953
|
var ephemeralEventBodySchema = exports_external2.object({ type: exports_external2.string().min(1) }).passthrough();
|
|
32936
|
-
var publishedAttachmentSchema = exports_external2.object({
|
|
32937
|
-
artifact_id: exports_external2.string(),
|
|
32938
|
-
filename: exports_external2.string(),
|
|
32939
|
-
media_type: exports_external2.string(),
|
|
32940
|
-
byte_size: exports_external2.number().int().nonnegative()
|
|
32941
|
-
}).passthrough();
|
|
32942
32954
|
var retainedSessionEventSchema = exports_external2.object({
|
|
32943
32955
|
id: exports_external2.string(),
|
|
32944
32956
|
history_sequence: exports_external2.number().int().positive(),
|
|
32945
32957
|
occurred_at: exports_external2.iso.datetime(),
|
|
32946
32958
|
recorded_at: exports_external2.iso.datetime(),
|
|
32947
32959
|
event: retainedEventBodySchema,
|
|
32948
|
-
|
|
32960
|
+
artifact: sessionArtifactEventSchema.optional()
|
|
32949
32961
|
}).strict();
|
|
32950
32962
|
var ephemeralSessionEventSchema = exports_external2.object({
|
|
32951
32963
|
occurred_at: exports_external2.iso.datetime(),
|
|
@@ -33930,7 +33942,7 @@ function projectRemoteSessionEvent({ state, frame }) {
|
|
|
33930
33942
|
event: frame.data.event,
|
|
33931
33943
|
occurredAt: frame.data.occurred_at,
|
|
33932
33944
|
retainedEventId: frame.id,
|
|
33933
|
-
|
|
33945
|
+
artifact: frame.data.artifact
|
|
33934
33946
|
});
|
|
33935
33947
|
return {
|
|
33936
33948
|
...projected,
|
|
@@ -33968,7 +33980,7 @@ function projectRetainedEvent({
|
|
|
33968
33980
|
event,
|
|
33969
33981
|
occurredAt,
|
|
33970
33982
|
retainedEventId,
|
|
33971
|
-
|
|
33983
|
+
artifact
|
|
33972
33984
|
}) {
|
|
33973
33985
|
const messageCreated = sessionMessageCreatedEventSchema.safeParse(event);
|
|
33974
33986
|
const turnAssociated = sessionMessageTurnAssociatedEventSchema.safeParse(event);
|
|
@@ -33976,17 +33988,28 @@ function projectRetainedEvent({
|
|
|
33976
33988
|
const workspaceGitRevision = sessionWorkspaceGitRevisionEventSchema.safeParse(event);
|
|
33977
33989
|
const turnEnded = agentTurnEndedEventSchema.safeParse(event);
|
|
33978
33990
|
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 });
|
|
33979
|
-
if (
|
|
33991
|
+
if (artifact) {
|
|
33992
|
+
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 };
|
|
33993
|
+
const timelineArtifact = artifact.kind === "file" ? {
|
|
33994
|
+
kind: "artifact",
|
|
33995
|
+
artifactKind: artifact.kind,
|
|
33996
|
+
artifactId: artifact.artifact_id,
|
|
33997
|
+
occurredAt,
|
|
33998
|
+
title: artifact.filename,
|
|
33999
|
+
mediaType: artifact.media_type
|
|
34000
|
+
} : {
|
|
34001
|
+
kind: "artifact",
|
|
34002
|
+
artifactKind: artifact.kind,
|
|
34003
|
+
artifactId: artifact.artifact_id,
|
|
34004
|
+
occurredAt,
|
|
34005
|
+
title: artifact.title,
|
|
34006
|
+
site: artifact.site,
|
|
34007
|
+
url: artifact.url
|
|
34008
|
+
};
|
|
33980
34009
|
projected = {
|
|
33981
34010
|
...projected,
|
|
33982
|
-
publications: [...projected.publications,
|
|
33983
|
-
transcript: [...projected.transcript,
|
|
33984
|
-
kind: "artifact",
|
|
33985
|
-
artifactId: attachment.artifact_id,
|
|
33986
|
-
occurredAt,
|
|
33987
|
-
filename: attachment.filename,
|
|
33988
|
-
mediaType: attachment.media_type
|
|
33989
|
-
}]
|
|
34011
|
+
publications: [...projected.publications, publication],
|
|
34012
|
+
transcript: [...projected.transcript, timelineArtifact]
|
|
33990
34013
|
};
|
|
33991
34014
|
}
|
|
33992
34015
|
return projected;
|
|
@@ -37200,10 +37223,18 @@ function renderTimelineItem(item, activityExpanded) {
|
|
|
37200
37223
|
}
|
|
37201
37224
|
if (item.kind === "plan")
|
|
37202
37225
|
return renderPlan({ item, expanded: activityExpanded });
|
|
37226
|
+
if (item.artifactKind === "tela_page") {
|
|
37227
|
+
return new StyledText5([
|
|
37228
|
+
renderTimestampChunk(item.occurredAt),
|
|
37229
|
+
bold4(fg6(PALETTE.tool)("Tela Page: ")),
|
|
37230
|
+
fg6(PALETTE.bodyText)(item.title),
|
|
37231
|
+
dim4(fg6(PALETTE.dimText)(` \xB7 ${item.url}`))
|
|
37232
|
+
]);
|
|
37233
|
+
}
|
|
37203
37234
|
return new StyledText5([
|
|
37204
37235
|
renderTimestampChunk(item.occurredAt),
|
|
37205
37236
|
bold4(fg6(PALETTE.tool)("Artifact: ")),
|
|
37206
|
-
fg6(PALETTE.bodyText)(item.
|
|
37237
|
+
fg6(PALETTE.bodyText)(item.title)
|
|
37207
37238
|
]);
|
|
37208
37239
|
}
|
|
37209
37240
|
var collapsedPlanItemLimit = 5;
|
|
@@ -37514,7 +37545,7 @@ var compactMarkRows = 9;
|
|
|
37514
37545
|
var compactMinWidth = 48;
|
|
37515
37546
|
var compactMinHeight = 20;
|
|
37516
37547
|
var markBrightnessGain = 4.2;
|
|
37517
|
-
var remyCliVersion = "1.
|
|
37548
|
+
var remyCliVersion = "1.8.0";
|
|
37518
37549
|
async function showRemySplash({
|
|
37519
37550
|
createRenderer = createRemyRenderer,
|
|
37520
37551
|
durationMs = splashDurationMs,
|
|
@@ -38643,7 +38674,8 @@ async function attachCreatedSession({
|
|
|
38643
38674
|
status: created.session.status,
|
|
38644
38675
|
repositories: sessionRepositories.map((repository) => ({ id: repository.id, full_name: repository.fullName })),
|
|
38645
38676
|
pull_requests: [],
|
|
38646
|
-
connections: created.connections
|
|
38677
|
+
connections: created.connections,
|
|
38678
|
+
artifacts: []
|
|
38647
38679
|
}
|
|
38648
38680
|
},
|
|
38649
38681
|
noTui,
|