agent-office 0.2.2 → 0.2.3

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.
@@ -47,13 +47,6 @@ export interface AgenticCodingServer {
47
47
  * @param limit maximum number of messages to return (server may cap this).
48
48
  */
49
49
  getMessages(sessionID: string, limit?: number): Promise<SessionMessage[]>;
50
- /**
51
- * Reset a session to a specific message.
52
- *
53
- * Implementations should abort any in-progress generation before reverting
54
- * so callers don't need to worry about "session is busy" errors.
55
- */
56
- revertSession(sessionID: string, messageID: string): Promise<void>;
57
50
  /**
58
51
  * Return the list of agent modes the server knows about.
59
52
  */
@@ -6,6 +6,5 @@ export declare class OpenCodeCodingServer implements AgenticCodingServer {
6
6
  deleteSession(sessionID: string): Promise<void>;
7
7
  sendMessage(sessionID: string, text: string, agent: string, system: string): Promise<void>;
8
8
  getMessages(sessionID: string, limit?: number): Promise<SessionMessage[]>;
9
- revertSession(sessionID: string, messageID: string): Promise<void>;
10
9
  getAgentModes(): Promise<AgentMode[]>;
11
10
  }
@@ -37,12 +37,6 @@ export class OpenCodeCodingServer {
37
37
  parts: m.parts,
38
38
  }));
39
39
  }
40
- async revertSession(sessionID, messageID) {
41
- // Abort any in-progress generation first — swallow errors because the
42
- // session may not be busy.
43
- await this.client.session.abort({ sessionID }).catch(() => { });
44
- await this.client.session.revert({ sessionID, messageID });
45
- }
46
40
  async getAgentModes() {
47
41
  const { data: config } = await this.client.config.get();
48
42
  const agent = config?.agent ?? {};
@@ -34,7 +34,7 @@ export function TailMessages({ serverUrl, password, onBack, contentHeight }) {
34
34
  try {
35
35
  const msgs = await getMessages(name, 50);
36
36
  setMessages(msgs);
37
- setScrollOffset(0);
37
+ setScrollOffset(Infinity);
38
38
  setStage("viewing");
39
39
  }
40
40
  catch (err) {
@@ -353,18 +353,13 @@ export function createRouter(sql, agenticCodingServer, serverUrl, scheduler, mem
353
353
  }
354
354
  const session = rows[0];
355
355
  try {
356
- const messages = await agenticCodingServer.getMessages(session.session_id);
357
- if (messages.length === 0) {
358
- res.status(400).json({ error: "Session has no messages to revert to" });
359
- return;
360
- }
361
- const firstMessage = messages[0];
362
- if (!firstMessage.id) {
363
- res.status(500).json({ error: "Failed to get first message ID" });
364
- return;
365
- }
366
- await agenticCodingServer.revertSession(session.session_id, firstMessage.id);
367
- res.json({ ok: true, messageID: firstMessage.id });
356
+ // Delete the old OpenCode session and create a fresh one
357
+ await agenticCodingServer.deleteSession(session.session_id);
358
+ const newSessionId = await agenticCodingServer.createSession();
359
+ await sql `
360
+ UPDATE sessions SET session_id = ${newSessionId} WHERE name = ${name}
361
+ `;
362
+ res.json({ ok: true });
368
363
  }
369
364
  catch (err) {
370
365
  console.error("POST /sessions/:name/revert-to-start error:", err);
@@ -373,22 +368,17 @@ export function createRouter(sql, agenticCodingServer, serverUrl, scheduler, mem
373
368
  });
374
369
  router.post("/sessions/revert-all", async (_req, res) => {
375
370
  const allSessions = await sql `
376
- SELECT id, name, session_id, agent_code, agent, status, created_at FROM sessions
371
+ SELECT id, name, session_id FROM sessions
377
372
  `;
378
373
  const results = [];
379
374
  for (const session of allSessions) {
380
375
  try {
381
- const messages = await agenticCodingServer.getMessages(session.session_id);
382
- if (messages.length === 0) {
383
- results.push({ name: session.name, ok: false, error: "No messages" });
384
- continue;
385
- }
386
- const firstMessage = messages[0];
387
- if (!firstMessage.id) {
388
- results.push({ name: session.name, ok: false, error: "Failed to get first message ID" });
389
- continue;
390
- }
391
- await agenticCodingServer.revertSession(session.session_id, firstMessage.id);
376
+ // Delete the old OpenCode session and create a fresh one
377
+ await agenticCodingServer.deleteSession(session.session_id);
378
+ const newSessionId = await agenticCodingServer.createSession();
379
+ await sql `
380
+ UPDATE sessions SET session_id = ${newSessionId} WHERE name = ${session.name}
381
+ `;
392
382
  results.push({ name: session.name, ok: true });
393
383
  }
394
384
  catch (err) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agent-office",
3
- "version": "0.2.2",
3
+ "version": "0.2.3",
4
4
  "description": "An office for your AI agents",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -34,7 +34,7 @@
34
34
  "dependencies": {
35
35
  "@inkjs/ui": "^2.0.0",
36
36
  "@opencode-ai/sdk": "^1.2.10",
37
- "agent-office": "0.2.1",
37
+ "agent-office": "^0.2.2",
38
38
  "commander": "^14.0.0",
39
39
  "croner": "^10.0.1",
40
40
  "dotenv": "^17.0.0",