@spencer-kit/coder-studio 0.3.6 → 0.3.7

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.
@@ -10041,10 +10041,26 @@ var init_workspace = __esm({
10041
10041
 
10042
10042
  // packages/server/src/commands/workspace-activity.ts
10043
10043
  import { z as z7 } from "zod";
10044
+ function parseWorkspaceLastViewedTarget(value) {
10045
+ try {
10046
+ const parsed = JSON.parse(value);
10047
+ const result = workspaceLastViewedTargetSchema.safeParse(parsed);
10048
+ return result.success ? result.data : null;
10049
+ } catch {
10050
+ return null;
10051
+ }
10052
+ }
10053
+ var WORKSPACE_LAST_VIEWED_TARGET_KEY, workspaceLastViewedTargetSchema;
10044
10054
  var init_workspace_activity = __esm({
10045
10055
  "packages/server/src/commands/workspace-activity.ts"() {
10046
10056
  "use strict";
10047
10057
  init_dispatch();
10058
+ WORKSPACE_LAST_VIEWED_TARGET_KEY = "workspace.lastViewedTarget";
10059
+ workspaceLastViewedTargetSchema = z7.object({
10060
+ workspaceId: z7.string(),
10061
+ sessionId: z7.string().optional(),
10062
+ updatedAt: z7.number()
10063
+ });
10048
10064
  registerCommand(
10049
10065
  "workspace.activate",
10050
10066
  z7.object({
@@ -10065,6 +10081,43 @@ var init_workspace_activity = __esm({
10065
10081
  ctx.autoFetch.unregisterViewer(clientId);
10066
10082
  return {};
10067
10083
  });
10084
+ registerCommand("workspace.lastViewedTarget.get", z7.object({}), async (_args, ctx) => {
10085
+ const row = ctx.db.prepare("SELECT value FROM user_settings WHERE key = ?").get(WORKSPACE_LAST_VIEWED_TARGET_KEY);
10086
+ if (!row) {
10087
+ return null;
10088
+ }
10089
+ return parseWorkspaceLastViewedTarget(row.value);
10090
+ });
10091
+ registerCommand(
10092
+ "workspace.lastViewedTarget.set",
10093
+ z7.object({
10094
+ workspaceId: z7.string(),
10095
+ sessionId: z7.string().optional()
10096
+ }),
10097
+ async (args, ctx) => {
10098
+ const workspace = ctx.workspaceMgr.get(args.workspaceId);
10099
+ if (!workspace) {
10100
+ throw {
10101
+ code: "workspace_not_found",
10102
+ message: `Workspace not found: ${args.workspaceId}`
10103
+ };
10104
+ }
10105
+ const session = args.sessionId ? ctx.sessionMgr.get(args.sessionId) : void 0;
10106
+ const nextTarget = {
10107
+ workspaceId: args.workspaceId,
10108
+ sessionId: session && session.workspaceId === args.workspaceId ? session.id : void 0,
10109
+ updatedAt: Date.now()
10110
+ };
10111
+ ctx.db.prepare(
10112
+ `
10113
+ INSERT INTO user_settings (key, value)
10114
+ VALUES (?, ?)
10115
+ ON CONFLICT(key) DO UPDATE SET value = excluded.value
10116
+ `
10117
+ ).run(WORKSPACE_LAST_VIEWED_TARGET_KEY, JSON.stringify(nextTarget));
10118
+ return nextTarget;
10119
+ }
10120
+ );
10068
10121
  }
10069
10122
  });
10070
10123