@agent-deck/backend 1.2.9 → 1.3.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.
Files changed (50) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/cli-runtime.d.ts +40 -0
  3. package/dist/cli-runtime.d.ts.map +1 -1
  4. package/dist/cli-runtime.js +67 -0
  5. package/dist/cli-runtime.js.map +1 -1
  6. package/dist/lib/agent-deck-context.d.ts +1 -1
  7. package/dist/lib/agent-deck-context.d.ts.map +1 -1
  8. package/dist/lib/agent-deck-context.js +7 -26
  9. package/dist/lib/agent-deck-context.js.map +1 -1
  10. package/dist/mcp-server.d.ts +9 -1
  11. package/dist/mcp-server.d.ts.map +1 -1
  12. package/dist/mcp-server.js +64 -835
  13. package/dist/mcp-server.js.map +1 -1
  14. package/dist/mcp-session-binding.d.ts +3 -4
  15. package/dist/mcp-session-binding.d.ts.map +1 -1
  16. package/dist/mcp-session-binding.js +3 -10
  17. package/dist/mcp-session-binding.js.map +1 -1
  18. package/dist/mcp-tools/deck-card-ops.d.ts +21 -0
  19. package/dist/mcp-tools/deck-card-ops.d.ts.map +1 -0
  20. package/dist/mcp-tools/deck-card-ops.js +94 -0
  21. package/dist/mcp-tools/deck-card-ops.js.map +1 -0
  22. package/dist/mcp-tools/profile.d.ts +17 -0
  23. package/dist/mcp-tools/profile.d.ts.map +1 -0
  24. package/dist/mcp-tools/profile.js +25 -0
  25. package/dist/mcp-tools/profile.js.map +1 -0
  26. package/dist/mcp-tools/register.d.ts +49 -0
  27. package/dist/mcp-tools/register.d.ts.map +1 -0
  28. package/dist/mcp-tools/register.js +635 -0
  29. package/dist/mcp-tools/register.js.map +1 -0
  30. package/dist/mcp-tools/test-harness.d.ts +31 -0
  31. package/dist/mcp-tools/test-harness.d.ts.map +1 -0
  32. package/dist/mcp-tools/test-harness.js +108 -0
  33. package/dist/mcp-tools/test-harness.js.map +1 -0
  34. package/dist/routes/scope.d.ts.map +1 -1
  35. package/dist/routes/scope.js +29 -59
  36. package/dist/routes/scope.js.map +1 -1
  37. package/dist/scope/badge.d.ts +3 -0
  38. package/dist/scope/badge.d.ts.map +1 -0
  39. package/dist/scope/badge.js +23 -0
  40. package/dist/scope/badge.js.map +1 -0
  41. package/dist/scope/live-display-registry.d.ts +7 -1
  42. package/dist/scope/live-display-registry.d.ts.map +1 -1
  43. package/dist/scope/live-display-registry.js +22 -2
  44. package/dist/scope/live-display-registry.js.map +1 -1
  45. package/package.json +2 -2
  46. package/static-ui/assets/index-CQoBRW1p.js +409 -0
  47. package/static-ui/assets/index-wleyGzod.css +1 -0
  48. package/static-ui/index.html +2 -2
  49. package/static-ui/assets/index-BnvBkGNu.js +0 -404
  50. package/static-ui/assets/index-D2upmaZj.css +0 -1
@@ -0,0 +1,31 @@
1
+ import { AgentDeckMCPServer } from '../mcp-server';
2
+ import type { McpToolProfile } from './profile';
3
+ export declare const MCP_ACCEPT = "application/json, text/event-stream";
4
+ export declare function initializePayload(id?: number, clientName?: string): {
5
+ jsonrpc: string;
6
+ id: number;
7
+ method: string;
8
+ params: {
9
+ protocolVersion: string;
10
+ capabilities: {};
11
+ clientInfo: {
12
+ name: string;
13
+ version: string;
14
+ };
15
+ };
16
+ };
17
+ export declare function waitForMcpHealth(port: number): Promise<void>;
18
+ export declare function postInitialize(port: number, id?: number, clientName?: string): Promise<Response>;
19
+ export declare function listTools(port: number, sessionId: string, id: number): Promise<{
20
+ name: string;
21
+ inputSchema?: {
22
+ required?: string[];
23
+ };
24
+ }[]>;
25
+ export declare function callTool(port: number, sessionId: string, name: string, args: unknown, id: number): Promise<Record<string, unknown>>;
26
+ export declare function startMcpServer(backendUrl: string, profile?: McpToolProfile): Promise<{
27
+ port: number;
28
+ server: AgentDeckMCPServer;
29
+ }>;
30
+ export declare function openSession(port: number, id?: number): Promise<string>;
31
+ //# sourceMappingURL=test-harness.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-harness.d.ts","sourceRoot":"","sources":["../../src/mcp-tools/test-harness.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAEhD,eAAO,MAAM,UAAU,wCAAwC,CAAC;AAEhE,wBAAgB,iBAAiB,CAAC,EAAE,SAAI,EAAE,UAAU,SAAW;;;;;;;;;;;;EAW9D;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAalE;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,SAAI,EAAE,UAAU,SAAW,qBAS/E;AAED,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM;UAgBtC,MAAM;kBAAgB;QAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE;KAGjF;AAED,wBAAsB,QAAQ,CAC5B,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,OAAO,EACb,EAAE,EAAE,MAAM,oCA4BX;AAED,wBAAsB,cAAc,CAClC,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,cAA2B,GACnC,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,kBAAkB,CAAA;CAAE,CAAC,CAMvD;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,SAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAOvE"}
@@ -0,0 +1,108 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MCP_ACCEPT = void 0;
4
+ exports.initializePayload = initializePayload;
5
+ exports.waitForMcpHealth = waitForMcpHealth;
6
+ exports.postInitialize = postInitialize;
7
+ exports.listTools = listTools;
8
+ exports.callTool = callTool;
9
+ exports.startMcpServer = startMcpServer;
10
+ exports.openSession = openSession;
11
+ const mcp_server_1 = require("../mcp-server");
12
+ exports.MCP_ACCEPT = 'application/json, text/event-stream';
13
+ function initializePayload(id = 1, clientName = 'vitest') {
14
+ return {
15
+ jsonrpc: '2.0',
16
+ id,
17
+ method: 'initialize',
18
+ params: {
19
+ protocolVersion: '2024-11-05',
20
+ capabilities: {},
21
+ clientInfo: { name: clientName, version: '1.0.0' },
22
+ },
23
+ };
24
+ }
25
+ async function waitForMcpHealth(port) {
26
+ for (let attempt = 0; attempt < 40; attempt += 1) {
27
+ try {
28
+ const response = await fetch(`http://127.0.0.1:${port}/health`);
29
+ if (response.ok) {
30
+ return;
31
+ }
32
+ }
33
+ catch {
34
+ // retry
35
+ }
36
+ await new Promise((resolve) => setTimeout(resolve, 50));
37
+ }
38
+ throw new Error(`MCP server on :${port} did not become healthy`);
39
+ }
40
+ async function postInitialize(port, id = 1, clientName = 'vitest') {
41
+ return fetch(`http://127.0.0.1:${port}/mcp`, {
42
+ method: 'POST',
43
+ headers: {
44
+ 'Content-Type': 'application/json',
45
+ Accept: exports.MCP_ACCEPT,
46
+ },
47
+ body: JSON.stringify(initializePayload(id, clientName)),
48
+ });
49
+ }
50
+ async function listTools(port, sessionId, id) {
51
+ const response = await fetch(`http://127.0.0.1:${port}/mcp`, {
52
+ method: 'POST',
53
+ headers: {
54
+ 'Content-Type': 'application/json',
55
+ Accept: exports.MCP_ACCEPT,
56
+ 'mcp-session-id': sessionId,
57
+ },
58
+ body: JSON.stringify({
59
+ jsonrpc: '2.0',
60
+ id,
61
+ method: 'tools/list',
62
+ params: {},
63
+ }),
64
+ });
65
+ const body = (await response.json());
66
+ return body.result?.tools ?? [];
67
+ }
68
+ async function callTool(port, sessionId, name, args, id) {
69
+ const response = await fetch(`http://127.0.0.1:${port}/mcp`, {
70
+ method: 'POST',
71
+ headers: {
72
+ 'Content-Type': 'application/json',
73
+ Accept: exports.MCP_ACCEPT,
74
+ 'mcp-session-id': sessionId,
75
+ },
76
+ body: JSON.stringify({
77
+ jsonrpc: '2.0',
78
+ id,
79
+ method: 'tools/call',
80
+ params: { name, arguments: args },
81
+ }),
82
+ });
83
+ const body = (await response.json());
84
+ if (body.error) {
85
+ throw new Error(`MCP tools/call error: ${JSON.stringify(body.error)}`);
86
+ }
87
+ const text = body.result?.content?.[0]?.text;
88
+ if (typeof text !== 'string') {
89
+ throw new Error(`Unexpected tools/call result: ${JSON.stringify(body)}`);
90
+ }
91
+ return JSON.parse(text);
92
+ }
93
+ async function startMcpServer(backendUrl, profile = 'standard') {
94
+ const port = 36_000 + Math.floor(Math.random() * 3_000);
95
+ const server = new mcp_server_1.AgentDeckMCPServer(port, backendUrl, profile);
96
+ await server.start();
97
+ await waitForMcpHealth(port);
98
+ return { port, server };
99
+ }
100
+ async function openSession(port, id = 1) {
101
+ const init = await postInitialize(port, id);
102
+ const sessionId = init.headers.get('mcp-session-id');
103
+ if (!sessionId) {
104
+ throw new Error('Missing mcp-session-id');
105
+ }
106
+ return sessionId;
107
+ }
108
+ //# sourceMappingURL=test-harness.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-harness.js","sourceRoot":"","sources":["../../src/mcp-tools/test-harness.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"scope.d.ts","sourceRoot":"","sources":["../../src/routes/scope.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAkB1C,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,eAAe,iBAqLjE"}
1
+ {"version":3,"file":"scope.d.ts","sourceRoot":"","sources":["../../src/routes/scope.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAsB1C,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,eAAe,iBAgJjE"}
@@ -5,7 +5,6 @@ const zod_1 = require("zod");
5
5
  const shared_1 = require("@agent-deck/shared");
6
6
  const agent_deck_context_1 = require("../lib/agent-deck-context");
7
7
  const client_scope_1 = require("../lib/client-scope");
8
- const repo_deck_1 = require("../scope/repo-deck");
9
8
  const display_1 = require("../scope/display");
10
9
  const LiveDisplayBodySchema = zod_1.z.object({
11
10
  mcpSessionId: zod_1.z.string().min(1),
@@ -13,54 +12,14 @@ const LiveDisplayBodySchema = zod_1.z.object({
13
12
  deckId: zod_1.z.string().uuid(),
14
13
  deckName: zod_1.z.string().min(1),
15
14
  source: shared_1.DeckDisplaySourceSchema.exclude(['unbound']),
15
+ clientName: zod_1.z.string().min(1).optional(),
16
16
  cardCounts: shared_1.DeckCardCountsSchema,
17
17
  updatedAt: zod_1.z.string().datetime(),
18
18
  });
19
+ const LiveDisplayTouchSchema = zod_1.z.object({
20
+ at: zod_1.z.string().datetime().optional(),
21
+ });
19
22
  async function registerScopeRoutes(fastify) {
20
- fastify.post('/resolve', async (request, reply) => {
21
- try {
22
- const { workspaceRoot } = request.body;
23
- if (!workspaceRoot?.trim()) {
24
- return reply.status(400).send({
25
- success: false,
26
- error: 'workspaceRoot is required',
27
- });
28
- }
29
- const manifest = await (0, repo_deck_1.loadRepoDeckManifest)(workspaceRoot);
30
- if (!manifest) {
31
- return reply.status(404).send({
32
- success: false,
33
- error: 'No .agent-deck/deck.yaml found in workspace',
34
- });
35
- }
36
- const deck = await fastify.db.getDeck(manifest.deck_id);
37
- if (!deck) {
38
- return reply.status(404).send({
39
- success: false,
40
- error: `Deck not found: ${manifest.deck_id}`,
41
- });
42
- }
43
- return reply.send({
44
- success: true,
45
- data: {
46
- manifest,
47
- deck,
48
- manifestPath: '.agent-deck/deck.yaml',
49
- },
50
- });
51
- }
52
- catch (error) {
53
- const message = error instanceof repo_deck_1.RepoDeckManifestError
54
- ? error.message
55
- : error instanceof Error
56
- ? error.message
57
- : 'Unknown error';
58
- return reply.status(400).send({
59
- success: false,
60
- error: message,
61
- });
62
- }
63
- });
64
23
  fastify.get('/deck', async (request, reply) => {
65
24
  try {
66
25
  if ((0, client_scope_1.isDashboardClient)(request)) {
@@ -122,8 +81,8 @@ async function registerScopeRoutes(fastify) {
122
81
  error: parsed.error.issues.map((issue) => issue.message).join('; '),
123
82
  });
124
83
  }
125
- fastify.liveDisplayRegistry.upsert(parsed.data);
126
- return reply.send({ success: true });
84
+ const entry = fastify.liveDisplayRegistry.upsert(parsed.data);
85
+ return reply.send({ success: true, data: { badge: entry.badge } });
127
86
  }
128
87
  catch (error) {
129
88
  return reply.status(403).send({
@@ -152,23 +111,20 @@ async function registerScopeRoutes(fastify) {
152
111
  });
153
112
  }
154
113
  });
155
- fastify.get('/manifest-template', async (request, reply) => {
114
+ fastify.post('/live-display/:mcpSessionId/touch', async (request, reply) => {
156
115
  try {
157
- (0, client_scope_1.requireDashboardClient)(request);
158
- const { deckId, name } = request.query;
159
- if (!deckId) {
116
+ (0, client_scope_1.requireAgentClient)(request);
117
+ const mcpSessionId = request.params.mcpSessionId?.trim();
118
+ if (!mcpSessionId) {
160
119
  return reply.status(400).send({
161
120
  success: false,
162
- error: 'deckId query parameter is required',
121
+ error: 'mcpSessionId is required',
163
122
  });
164
123
  }
165
- return reply.send({
166
- success: true,
167
- data: {
168
- path: '.agent-deck/deck.yaml',
169
- content: (0, repo_deck_1.formatRepoDeckManifest)(deckId, name),
170
- },
171
- });
124
+ const parsed = LiveDisplayTouchSchema.safeParse(request.body ?? {});
125
+ const at = parsed.success && parsed.data.at ? parsed.data.at : new Date().toISOString();
126
+ fastify.liveDisplayRegistry.touch(mcpSessionId, at);
127
+ return reply.send({ success: true });
172
128
  }
173
129
  catch (error) {
174
130
  return reply.status(403).send({
@@ -177,5 +133,19 @@ async function registerScopeRoutes(fastify) {
177
133
  });
178
134
  }
179
135
  });
136
+ fastify.get('/bindings', async (_request, reply) => {
137
+ const data = fastify.liveDisplayRegistry.list().map((entry) => ({
138
+ badge: entry.badge,
139
+ deckId: entry.deckId,
140
+ deckName: entry.deckName,
141
+ source: entry.source,
142
+ workspaceRoot: entry.workspaceRoot,
143
+ clientName: entry.clientName,
144
+ cardCounts: entry.cardCounts,
145
+ updatedAt: entry.updatedAt,
146
+ lastActivityAt: entry.lastActivityAt,
147
+ }));
148
+ return reply.send({ success: true, data });
149
+ });
180
150
  }
181
151
  //# sourceMappingURL=scope.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scope.js","sourceRoot":"","sources":["../../src/routes/scope.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scope.js","sourceRoot":"","sources":["../../src/routes/scope.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare const BADGE_WORDS: readonly string[];
2
+ export declare function assignBadge(used: ReadonlySet<string>): string;
3
+ //# sourceMappingURL=badge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"badge.d.ts","sourceRoot":"","sources":["../../src/scope/badge.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,EAAE,SAAS,MAAM,EAKxC,CAAC;AAEF,wBAAgB,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,MAAM,CAW7D"}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BADGE_WORDS = void 0;
4
+ exports.assignBadge = assignBadge;
5
+ exports.BADGE_WORDS = [
6
+ 'fox', 'ember', 'moss', 'wren', 'birch', 'coral', 'dune', 'fern',
7
+ 'sage', 'cedar', 'iris', 'kite', 'lark', 'maple', 'newt', 'otter',
8
+ 'pearl', 'quill', 'reef', 'slate', 'teal', 'umber', 'vale', 'willow',
9
+ 'yarrow', 'zephyr', 'aspen', 'brook', 'cliff', 'delta', 'glen', 'heron',
10
+ ];
11
+ function assignBadge(used) {
12
+ for (const word of exports.BADGE_WORDS) {
13
+ if (!used.has(word)) {
14
+ return word;
15
+ }
16
+ }
17
+ let index = 1;
18
+ while (used.has(`s${index}`)) {
19
+ index += 1;
20
+ }
21
+ return `s${index}`;
22
+ }
23
+ //# sourceMappingURL=badge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"badge.js","sourceRoot":"","sources":["../../src/scope/badge.ts"],"names":[],"mappings":";;;AAOA,kCAWC;AAlBY,QAAA,WAAW,GAAsB;IAC5C,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM;IAChE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO;IACjE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ;IACpE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO;CACxE,CAAC;AAEF,SAAgB,WAAW,CAAC,IAAyB;IACnD,KAAK,MAAM,IAAI,IAAI,mBAAW,EAAE,CAAC;QAC/B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACpB,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IACD,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,EAAE,CAAC,EAAE,CAAC;QAC7B,KAAK,IAAI,CAAC,CAAC;IACb,CAAC;IACD,OAAO,IAAI,KAAK,EAAE,CAAC;AACrB,CAAC"}
@@ -7,12 +7,18 @@ export type LiveDisplayEntry = {
7
7
  source: Exclude<DeckDisplaySource, 'unbound'>;
8
8
  cardCounts: DeckCardCounts;
9
9
  updatedAt: string;
10
+ badge: string;
11
+ clientName?: string;
12
+ lastActivityAt: string;
10
13
  };
14
+ export type LiveDisplayUpsert = Omit<LiveDisplayEntry, 'badge' | 'lastActivityAt'>;
11
15
  /** In-memory registry of live MCP session binds (status line reads reality only). */
12
16
  export declare class LiveDisplayRegistry {
13
17
  private bySessionId;
14
- upsert(entry: LiveDisplayEntry): void;
18
+ upsert(input: LiveDisplayUpsert): LiveDisplayEntry;
15
19
  remove(mcpSessionId: string): void;
20
+ touch(mcpSessionId: string, at: string): void;
21
+ list(): LiveDisplayEntry[];
16
22
  /** Nearest workspace bind walking up from workspaceRoot (monorepo walk-up). */
17
23
  findForWorkspace(workspaceRoot: string): LiveDisplayEntry | null;
18
24
  }
@@ -1 +1 @@
1
- {"version":3,"file":"live-display-registry.d.ts","sourceRoot":"","sources":["../../src/scope/live-display-registry.ts"],"names":[],"mappings":"AACA,OAAO,EACL,cAAc,EACd,iBAAiB,EAElB,MAAM,oBAAoB,CAAC;AAE5B,MAAM,MAAM,gBAAgB,GAAG;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC,iBAAiB,EAAE,SAAS,CAAC,CAAC;IAC9C,UAAU,EAAE,cAAc,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,qFAAqF;AACrF,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,WAAW,CAAuC;IAE1D,MAAM,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI;IAIrC,MAAM,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IAIlC,+EAA+E;IAC/E,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI;CAwBjE"}
1
+ {"version":3,"file":"live-display-registry.d.ts","sourceRoot":"","sources":["../../src/scope/live-display-registry.ts"],"names":[],"mappings":"AACA,OAAO,EACL,cAAc,EACd,iBAAiB,EAElB,MAAM,oBAAoB,CAAC;AAG5B,MAAM,MAAM,gBAAgB,GAAG;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC,iBAAiB,EAAE,SAAS,CAAC,CAAC;IAC9C,UAAU,EAAE,cAAc,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,gBAAgB,EAAE,OAAO,GAAG,gBAAgB,CAAC,CAAC;AAEnF,qFAAqF;AACrF,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,WAAW,CAAuC;IAE1D,MAAM,CAAC,KAAK,EAAE,iBAAiB,GAAG,gBAAgB;IAelD,MAAM,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IAIlC,KAAK,CAAC,YAAY,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;IAO7C,IAAI,IAAI,gBAAgB,EAAE;IAM1B,+EAA+E;IAC/E,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI;CAwBjE"}
@@ -6,15 +6,35 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.LiveDisplayRegistry = void 0;
7
7
  const node_path_1 = __importDefault(require("node:path"));
8
8
  const shared_1 = require("@agent-deck/shared");
9
+ const badge_1 = require("./badge");
9
10
  /** In-memory registry of live MCP session binds (status line reads reality only). */
10
11
  class LiveDisplayRegistry {
11
12
  bySessionId = new Map();
12
- upsert(entry) {
13
- this.bySessionId.set(entry.mcpSessionId, entry);
13
+ upsert(input) {
14
+ const existing = this.bySessionId.get(input.mcpSessionId);
15
+ const badge = existing?.badge ??
16
+ (0, badge_1.assignBadge)(new Set([...this.bySessionId.values()].map((entry) => entry.badge)));
17
+ const entry = {
18
+ ...input,
19
+ clientName: input.clientName ?? existing?.clientName,
20
+ badge,
21
+ lastActivityAt: input.updatedAt,
22
+ };
23
+ this.bySessionId.set(input.mcpSessionId, entry);
24
+ return entry;
14
25
  }
15
26
  remove(mcpSessionId) {
16
27
  this.bySessionId.delete(mcpSessionId);
17
28
  }
29
+ touch(mcpSessionId, at) {
30
+ const entry = this.bySessionId.get(mcpSessionId);
31
+ if (entry && at > entry.lastActivityAt) {
32
+ entry.lastActivityAt = at;
33
+ }
34
+ }
35
+ list() {
36
+ return [...this.bySessionId.values()].sort((a, b) => a.lastActivityAt < b.lastActivityAt ? 1 : a.lastActivityAt > b.lastActivityAt ? -1 : 0);
37
+ }
18
38
  /** Nearest workspace bind walking up from workspaceRoot (monorepo walk-up). */
19
39
  findForWorkspace(workspaceRoot) {
20
40
  let current = (0, shared_1.normalizeWorkspaceRoot)(workspaceRoot);
@@ -1 +1 @@
1
- {"version":3,"file":"live-display-registry.js","sourceRoot":"","sources":["../../src/scope/live-display-registry.ts"],"names":[],"mappings":";;;;;;AAAA,0DAA6B;AAC7B,+CAI4B;AAY5B,qFAAqF;AACrF,MAAa,mBAAmB;IACtB,WAAW,GAAG,IAAI,GAAG,EAA4B,CAAC;IAE1D,MAAM,CAAC,KAAuB;QAC5B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,CAAC,YAAoB;QACzB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IACxC,CAAC;IAED,+EAA+E;IAC/E,gBAAgB,CAAC,aAAqB;QACpC,IAAI,OAAO,GAAG,IAAA,+BAAsB,EAAC,aAAa,CAAC,CAAC;QACpD,OAAO,IAAI,EAAE,CAAC;YACZ,IAAI,IAAI,GAA4B,IAAI,CAAC;YACzC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC;gBAC9C,IAAI,IAAA,+BAAsB,EAAC,KAAK,CAAC,aAAa,CAAC,KAAK,OAAO,EAAE,CAAC;oBAC5D,SAAS;gBACX,CAAC;gBACD,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;oBAC9C,IAAI,GAAG,KAAK,CAAC;gBACf,CAAC;YACH,CAAC;YACD,IAAI,IAAI,EAAE,CAAC;gBACT,OAAO,IAAI,CAAC;YACd,CAAC;YAED,MAAM,MAAM,GAAG,mBAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACrC,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;gBACvB,MAAM;YACR,CAAC;YACD,OAAO,GAAG,MAAM,CAAC;QACnB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AApCD,kDAoCC"}
1
+ {"version":3,"file":"live-display-registry.js","sourceRoot":"","sources":["../../src/scope/live-display-registry.ts"],"names":[],"mappings":";;;;;;AAAA,0DAA6B;AAC7B,+CAI4B;AAC5B,mCAAsC;AAiBtC,qFAAqF;AACrF,MAAa,mBAAmB;IACtB,WAAW,GAAG,IAAI,GAAG,EAA4B,CAAC;IAE1D,MAAM,CAAC,KAAwB;QAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAC1D,MAAM,KAAK,GACT,QAAQ,EAAE,KAAK;YACf,IAAA,mBAAW,EAAC,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACnF,MAAM,KAAK,GAAqB;YAC9B,GAAG,KAAK;YACR,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,QAAQ,EAAE,UAAU;YACpD,KAAK;YACL,cAAc,EAAE,KAAK,CAAC,SAAS;SAChC,CAAC;QACF,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QAChD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,CAAC,YAAoB;QACzB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,YAAoB,EAAE,EAAU;QACpC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACjD,IAAI,KAAK,IAAI,EAAE,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;YACvC,KAAK,CAAC,cAAc,GAAG,EAAE,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,IAAI;QACF,OAAO,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAClD,CAAC,CAAC,cAAc,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACvF,CAAC;IACJ,CAAC;IAED,+EAA+E;IAC/E,gBAAgB,CAAC,aAAqB;QACpC,IAAI,OAAO,GAAG,IAAA,+BAAsB,EAAC,aAAa,CAAC,CAAC;QACpD,OAAO,IAAI,EAAE,CAAC;YACZ,IAAI,IAAI,GAA4B,IAAI,CAAC;YACzC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC;gBAC9C,IAAI,IAAA,+BAAsB,EAAC,KAAK,CAAC,aAAa,CAAC,KAAK,OAAO,EAAE,CAAC;oBAC5D,SAAS;gBACX,CAAC;gBACD,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;oBAC9C,IAAI,GAAG,KAAK,CAAC;gBACf,CAAC;YACH,CAAC;YACD,IAAI,IAAI,EAAE,CAAC;gBACT,OAAO,IAAI,CAAC;YACd,CAAC;YAED,MAAM,MAAM,GAAG,mBAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACrC,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;gBACvB,MAAM;YACR,CAAC;YACD,OAAO,GAAG,MAAM,CAAC;QACnB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AA5DD,kDA4DC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-deck/backend",
3
- "version": "1.2.9",
3
+ "version": "1.3.0",
4
4
  "description": "Agent Deck backend API, MCP server, and vault",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -37,7 +37,7 @@
37
37
  "prepublishOnly": "node ../../scripts/pre-publish-check.mjs && npm run build"
38
38
  },
39
39
  "dependencies": {
40
- "@agent-deck/shared": "^1.2.9",
40
+ "@agent-deck/shared": "^1.3.0",
41
41
  "@fastify/cors": "^10.0.0",
42
42
  "@fastify/static": "^8.0.0",
43
43
  "@fastify/websocket": "^11.2.0",