@agent-deck/backend 1.2.8 → 1.2.10
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/dist/.tsbuildinfo +1 -1
- package/dist/lib/agent-deck-context.d.ts +1 -1
- package/dist/lib/agent-deck-context.d.ts.map +1 -1
- package/dist/lib/agent-deck-context.js +7 -26
- package/dist/lib/agent-deck-context.js.map +1 -1
- package/dist/lib/client-scope.d.ts +4 -0
- package/dist/lib/client-scope.d.ts.map +1 -1
- package/dist/lib/client-scope.js +15 -1
- package/dist/lib/client-scope.js.map +1 -1
- package/dist/mcp-server.d.ts +8 -1
- package/dist/mcp-server.d.ts.map +1 -1
- package/dist/mcp-server.js +82 -216
- package/dist/mcp-server.js.map +1 -1
- package/dist/mcp-session-binding.d.ts +3 -4
- package/dist/mcp-session-binding.d.ts.map +1 -1
- package/dist/mcp-session-binding.js +3 -10
- package/dist/mcp-session-binding.js.map +1 -1
- package/dist/routes/scope.d.ts.map +1 -1
- package/dist/routes/scope.js +78 -58
- package/dist/routes/scope.js.map +1 -1
- package/dist/scope/badge.d.ts +3 -0
- package/dist/scope/badge.d.ts.map +1 -0
- package/dist/scope/badge.js +23 -0
- package/dist/scope/badge.js.map +1 -0
- package/dist/scope/bindings-sidecar.d.ts +2 -5
- package/dist/scope/bindings-sidecar.d.ts.map +1 -1
- package/dist/scope/bindings-sidecar.js +13 -17
- package/dist/scope/bindings-sidecar.js.map +1 -1
- package/dist/scope/display.d.ts +3 -3
- package/dist/scope/display.d.ts.map +1 -1
- package/dist/scope/display.js +41 -31
- package/dist/scope/display.js.map +1 -1
- package/dist/scope/live-display-registry.d.ts +25 -0
- package/dist/scope/live-display-registry.d.ts.map +1 -0
- package/dist/scope/live-display-registry.js +64 -0
- package/dist/scope/live-display-registry.js.map +1 -0
- package/dist/server/index.d.ts +2 -0
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +3 -0
- package/dist/server/index.js.map +1 -1
- package/package.json +2 -2
- package/static-ui/assets/index-CQoBRW1p.js +409 -0
- package/static-ui/assets/index-wleyGzod.css +1 -0
- package/static-ui/index.html +2 -2
- package/static-ui/assets/index-BnvBkGNu.js +0 -404
- package/static-ui/assets/index-D2upmaZj.css +0 -1
|
@@ -3,11 +3,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.
|
|
6
|
+
exports.upsertWorkspaceDisplayBinding = upsertWorkspaceDisplayBinding;
|
|
7
7
|
exports.readBindingForDisplay = readBindingForDisplay;
|
|
8
|
-
exports.upsertBindingForSession = upsertBindingForSession;
|
|
9
8
|
exports.readBindingForWorkspace = readBindingForWorkspace;
|
|
10
|
-
exports.upsertBindingForWorkspace = upsertBindingForWorkspace;
|
|
11
9
|
const promises_1 = __importDefault(require("node:fs/promises"));
|
|
12
10
|
const node_path_1 = __importDefault(require("node:path"));
|
|
13
11
|
const shared_1 = require("@agent-deck/shared");
|
|
@@ -34,28 +32,26 @@ async function writeBindingsFile(bindings) {
|
|
|
34
32
|
await promises_1.default.mkdir(node_path_1.default.dirname(filePath), { recursive: true });
|
|
35
33
|
await promises_1.default.writeFile(filePath, `${JSON.stringify(bindings, null, 2)}\n`, 'utf8');
|
|
36
34
|
}
|
|
37
|
-
|
|
35
|
+
function pruneLegacySessionKeys(bindings) {
|
|
36
|
+
for (const key of Object.keys(bindings)) {
|
|
37
|
+
if ((0, shared_1.isBindingSidecarSessionKey)(key)) {
|
|
38
|
+
delete bindings[key];
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
/** Write workspace-keyed binding for terminal status line; prune orphaned MCP session UUID keys. */
|
|
43
|
+
async function upsertWorkspaceDisplayBinding(workspaceRoot, entry) {
|
|
38
44
|
const bindings = await readBindingsFile();
|
|
39
|
-
|
|
45
|
+
bindings[(0, shared_1.normalizeWorkspaceRoot)(workspaceRoot)] = entry;
|
|
46
|
+
pruneLegacySessionKeys(bindings);
|
|
47
|
+
await writeBindingsFile(bindings);
|
|
40
48
|
}
|
|
41
49
|
async function readBindingForDisplay(options) {
|
|
42
50
|
const bindings = await readBindingsFile();
|
|
43
51
|
return (0, shared_1.resolveBindingEntry)(bindings, options);
|
|
44
52
|
}
|
|
45
|
-
async function upsertBindingForSession(sessionId, entry) {
|
|
46
|
-
const bindings = await readBindingsFile();
|
|
47
|
-
bindings[sessionId.trim()] = entry;
|
|
48
|
-
await writeBindingsFile(bindings);
|
|
49
|
-
}
|
|
50
|
-
/** @deprecated Legacy workspace-keyed sidecar; status display is session-scoped. */
|
|
51
53
|
async function readBindingForWorkspace(workspaceRoot) {
|
|
52
54
|
const bindings = await readBindingsFile();
|
|
53
55
|
return (0, shared_1.lookupWorkspaceBinding)(bindings, workspaceRoot);
|
|
54
56
|
}
|
|
55
|
-
/** @deprecated Legacy workspace-keyed sidecar; use upsertBindingForSession. */
|
|
56
|
-
async function upsertBindingForWorkspace(workspaceRoot, entry) {
|
|
57
|
-
const bindings = await readBindingsFile();
|
|
58
|
-
bindings[(0, shared_1.normalizeWorkspaceRoot)(workspaceRoot)] = entry;
|
|
59
|
-
await writeBindingsFile(bindings);
|
|
60
|
-
}
|
|
61
57
|
//# sourceMappingURL=bindings-sidecar.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bindings-sidecar.js","sourceRoot":"","sources":["../../src/scope/bindings-sidecar.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"bindings-sidecar.js","sourceRoot":"","sources":["../../src/scope/bindings-sidecar.ts"],"names":[],"mappings":";;;;;AAiDA,sEAQC;AAED,sDAMC;AAED,0DAGC;AAtED,gEAAkC;AAClC,0DAA6B;AAC7B,+CAU4B;AAE5B,KAAK,UAAU,gBAAgB;IAC7B,MAAM,MAAM,GAAiB,EAAE,CAAC;IAEhC,KAAK,MAAM,QAAQ,IAAI,IAAA,mCAA0B,GAAE,EAAE,CAAC;QACpD,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAChD,MAAM,MAAM,GAAG,2BAAkB,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;YAC7D,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;YACrC,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACvD,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,QAAsB;IACrD,MAAM,QAAQ,GAAG,IAAA,gCAAuB,GAAE,CAAC;IAC3C,MAAM,kBAAE,CAAC,KAAK,CAAC,mBAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5D,MAAM,kBAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACjF,CAAC;AAED,SAAS,sBAAsB,CAAC,QAAsB;IACpD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QACxC,IAAI,IAAA,mCAA0B,EAAC,GAAG,CAAC,EAAE,CAAC;YACpC,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;AACH,CAAC;AAED,oGAAoG;AAC7F,KAAK,UAAU,6BAA6B,CACjD,aAAqB,EACrB,KAAmB;IAEnB,MAAM,QAAQ,GAAG,MAAM,gBAAgB,EAAE,CAAC;IAC1C,QAAQ,CAAC,IAAA,+BAAsB,EAAC,aAAa,CAAC,CAAC,GAAG,KAAK,CAAC;IACxD,sBAAsB,CAAC,QAAQ,CAAC,CAAC;IACjC,MAAM,iBAAiB,CAAC,QAAQ,CAAC,CAAC;AACpC,CAAC;AAEM,KAAK,UAAU,qBAAqB,CAAC,OAG3C;IACC,MAAM,QAAQ,GAAG,MAAM,gBAAgB,EAAE,CAAC;IAC1C,OAAO,IAAA,4BAAmB,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AAChD,CAAC;AAEM,KAAK,UAAU,uBAAuB,CAAC,aAAqB;IACjE,MAAM,QAAQ,GAAG,MAAM,gBAAgB,EAAE,CAAC;IAC1C,OAAO,IAAA,+BAAsB,EAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;AACzD,CAAC"}
|
package/dist/scope/display.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { DeckDisplay } from '@agent-deck/shared';
|
|
2
2
|
import { DatabaseManager } from '../models/database';
|
|
3
|
+
import { LiveDisplayRegistry } from './live-display-registry';
|
|
3
4
|
export type ResolveDeckDisplayInput = {
|
|
4
|
-
sessionId?: string;
|
|
5
5
|
workspaceRoot: string;
|
|
6
6
|
};
|
|
7
|
-
/** Resolve bound-deck display
|
|
8
|
-
export declare function resolveDeckDisplay(input: ResolveDeckDisplayInput, db: DatabaseManager): Promise<DeckDisplay>;
|
|
7
|
+
/** Resolve bound-deck display from live MCP session registry only (no sidecar/manifest guessing). */
|
|
8
|
+
export declare function resolveDeckDisplay(input: ResolveDeckDisplayInput, db: DatabaseManager, registry: LiveDisplayRegistry): Promise<DeckDisplay>;
|
|
9
9
|
//# sourceMappingURL=display.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"display.d.ts","sourceRoot":"","sources":["../../src/scope/display.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"display.d.ts","sourceRoot":"","sources":["../../src/scope/display.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EAIZ,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAK9D,MAAM,MAAM,uBAAuB,GAAG;IACpC,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAgEF,qGAAqG;AACrG,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,uBAAuB,EAC9B,EAAE,EAAE,eAAe,EACnB,QAAQ,EAAE,mBAAmB,GAC5B,OAAO,CAAC,WAAW,CAAC,CAetB"}
|
package/dist/scope/display.js
CHANGED
|
@@ -2,56 +2,66 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.resolveDeckDisplay = resolveDeckDisplay;
|
|
4
4
|
const shared_1 = require("@agent-deck/shared");
|
|
5
|
-
const repo_deck_1 = require("./repo-deck");
|
|
6
|
-
const bindings_sidecar_1 = require("./bindings-sidecar");
|
|
7
5
|
const EMPTY_COUNTS = { mcp: 0, credentials: 0, playbooks: 0 };
|
|
6
|
+
const DEFAULT_MCP_PORT = 11112;
|
|
7
|
+
async function isMcpServerUp() {
|
|
8
|
+
const host = process.env.AGENT_DECK_HOST?.trim() || '127.0.0.1';
|
|
9
|
+
const parsed = Number.parseInt(process.env.AGENT_DECK_MCP_PORT ?? '', 10);
|
|
10
|
+
const port = Number.isFinite(parsed) ? parsed : DEFAULT_MCP_PORT;
|
|
11
|
+
const controller = new AbortController();
|
|
12
|
+
const timer = setTimeout(() => controller.abort(), 800);
|
|
13
|
+
try {
|
|
14
|
+
const response = await fetch(`http://${host}:${port}/health`, { signal: controller.signal });
|
|
15
|
+
if (!response.ok) {
|
|
16
|
+
return false;
|
|
17
|
+
}
|
|
18
|
+
const body = (await response.json());
|
|
19
|
+
return body.service === 'agent-deck-mcp-server';
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
finally {
|
|
25
|
+
clearTimeout(timer);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
8
28
|
function buildDisplay(input, source, deck, options) {
|
|
9
29
|
const agentDeckOnline = options?.agentDeckOnline ?? true;
|
|
10
|
-
const
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
const
|
|
30
|
+
const mcpOnline = options?.mcpOnline ?? true;
|
|
31
|
+
const cardCounts = deck ? (0, shared_1.countDeckCards)(deck) : options?.liveCardCounts ?? EMPTY_COUNTS;
|
|
32
|
+
const deckName = deck?.name ?? options?.liveDeckName ?? null;
|
|
33
|
+
const deckId = deck?.id ?? null;
|
|
34
|
+
const updatedAt = options?.updatedAt;
|
|
14
35
|
return {
|
|
15
36
|
workspaceRoot: input.workspaceRoot,
|
|
16
|
-
sessionId: input.sessionId ?? null,
|
|
17
37
|
deckId,
|
|
18
38
|
deckName,
|
|
19
39
|
source,
|
|
20
40
|
cardCounts,
|
|
21
|
-
oauthWarningCount: options?.sidecar?.oauthWarningCount,
|
|
22
41
|
agentDeckOnline,
|
|
42
|
+
mcpOnline,
|
|
23
43
|
updatedAt,
|
|
24
44
|
displayLine: (0, shared_1.formatDisplayLine)(deckName, cardCounts, {
|
|
25
45
|
offline: !agentDeckOnline,
|
|
46
|
+
mcpOffline: agentDeckOnline && !mcpOnline,
|
|
26
47
|
updatedAt,
|
|
27
48
|
}),
|
|
28
49
|
};
|
|
29
50
|
}
|
|
30
|
-
/** Resolve bound-deck display
|
|
31
|
-
async function resolveDeckDisplay(input, db) {
|
|
51
|
+
/** Resolve bound-deck display from live MCP session registry only (no sidecar/manifest guessing). */
|
|
52
|
+
async function resolveDeckDisplay(input, db, registry) {
|
|
32
53
|
const normalizedRoot = input.workspaceRoot.trim();
|
|
33
|
-
const
|
|
34
|
-
const
|
|
35
|
-
if (
|
|
36
|
-
const deck = await db.getDeck(
|
|
37
|
-
return buildDisplay({
|
|
38
|
-
|
|
54
|
+
const live = registry.findForWorkspace(normalizedRoot);
|
|
55
|
+
const mcpOnline = live ? true : await isMcpServerUp();
|
|
56
|
+
if (live) {
|
|
57
|
+
const deck = await db.getDeck(live.deckId);
|
|
58
|
+
return buildDisplay({ workspaceRoot: normalizedRoot }, live.source, deck, {
|
|
59
|
+
mcpOnline,
|
|
60
|
+
updatedAt: live.updatedAt,
|
|
61
|
+
liveDeckName: live.deckName,
|
|
62
|
+
liveCardCounts: live.cardCounts,
|
|
39
63
|
});
|
|
40
64
|
}
|
|
41
|
-
|
|
42
|
-
if (envDeckId) {
|
|
43
|
-
const deck = await db.getDeck(envDeckId);
|
|
44
|
-
if (deck) {
|
|
45
|
-
return buildDisplay({ sessionId, workspaceRoot: normalizedRoot }, 'env', deck);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
const manifest = await (0, repo_deck_1.loadRepoDeckManifest)(normalizedRoot);
|
|
49
|
-
if (manifest) {
|
|
50
|
-
const deck = await db.getDeck(manifest.deck_id);
|
|
51
|
-
if (deck) {
|
|
52
|
-
return buildDisplay({ sessionId, workspaceRoot: normalizedRoot }, 'repo_manifest', deck);
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
return buildDisplay({ sessionId, workspaceRoot: normalizedRoot }, 'unbound', null);
|
|
65
|
+
return buildDisplay({ workspaceRoot: normalizedRoot }, 'unbound', null, { mcpOnline });
|
|
56
66
|
}
|
|
57
67
|
//# sourceMappingURL=display.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"display.js","sourceRoot":"","sources":["../../src/scope/display.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"display.js","sourceRoot":"","sources":["../../src/scope/display.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { DeckCardCounts, DeckDisplaySource } from '@agent-deck/shared';
|
|
2
|
+
export type LiveDisplayEntry = {
|
|
3
|
+
mcpSessionId: string;
|
|
4
|
+
workspaceRoot: string;
|
|
5
|
+
deckId: string;
|
|
6
|
+
deckName: string;
|
|
7
|
+
source: Exclude<DeckDisplaySource, 'unbound'>;
|
|
8
|
+
cardCounts: DeckCardCounts;
|
|
9
|
+
updatedAt: string;
|
|
10
|
+
badge: string;
|
|
11
|
+
clientName?: string;
|
|
12
|
+
lastActivityAt: string;
|
|
13
|
+
};
|
|
14
|
+
export type LiveDisplayUpsert = Omit<LiveDisplayEntry, 'badge' | 'lastActivityAt'>;
|
|
15
|
+
/** In-memory registry of live MCP session binds (status line reads reality only). */
|
|
16
|
+
export declare class LiveDisplayRegistry {
|
|
17
|
+
private bySessionId;
|
|
18
|
+
upsert(input: LiveDisplayUpsert): LiveDisplayEntry;
|
|
19
|
+
remove(mcpSessionId: string): void;
|
|
20
|
+
touch(mcpSessionId: string, at: string): void;
|
|
21
|
+
list(): LiveDisplayEntry[];
|
|
22
|
+
/** Nearest workspace bind walking up from workspaceRoot (monorepo walk-up). */
|
|
23
|
+
findForWorkspace(workspaceRoot: string): LiveDisplayEntry | null;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=live-display-registry.d.ts.map
|
|
@@ -0,0 +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;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"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.LiveDisplayRegistry = void 0;
|
|
7
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
8
|
+
const shared_1 = require("@agent-deck/shared");
|
|
9
|
+
const badge_1 = require("./badge");
|
|
10
|
+
/** In-memory registry of live MCP session binds (status line reads reality only). */
|
|
11
|
+
class LiveDisplayRegistry {
|
|
12
|
+
bySessionId = new Map();
|
|
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;
|
|
25
|
+
}
|
|
26
|
+
remove(mcpSessionId) {
|
|
27
|
+
this.bySessionId.delete(mcpSessionId);
|
|
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
|
+
}
|
|
38
|
+
/** Nearest workspace bind walking up from workspaceRoot (monorepo walk-up). */
|
|
39
|
+
findForWorkspace(workspaceRoot) {
|
|
40
|
+
let current = (0, shared_1.normalizeWorkspaceRoot)(workspaceRoot);
|
|
41
|
+
while (true) {
|
|
42
|
+
let best = null;
|
|
43
|
+
for (const entry of this.bySessionId.values()) {
|
|
44
|
+
if ((0, shared_1.normalizeWorkspaceRoot)(entry.workspaceRoot) !== current) {
|
|
45
|
+
continue;
|
|
46
|
+
}
|
|
47
|
+
if (!best || entry.updatedAt > best.updatedAt) {
|
|
48
|
+
best = entry;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
if (best) {
|
|
52
|
+
return best;
|
|
53
|
+
}
|
|
54
|
+
const parent = node_path_1.default.dirname(current);
|
|
55
|
+
if (parent === current) {
|
|
56
|
+
break;
|
|
57
|
+
}
|
|
58
|
+
current = parent;
|
|
59
|
+
}
|
|
60
|
+
return null;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
exports.LiveDisplayRegistry = LiveDisplayRegistry;
|
|
64
|
+
//# sourceMappingURL=live-display-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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/dist/server/index.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ import { ServiceStatusUpdate, DeckUpdate, WebSocketMessage } from '@agent-deck/s
|
|
|
6
6
|
import { CredentialManager, OAuthClientSecretVault, OAuthTokenVault } from '../vault';
|
|
7
7
|
import { CollectionWarningService } from '../services/collection-warning-service';
|
|
8
8
|
import { PlaybookManager } from '../playbooks/playbook-manager';
|
|
9
|
+
import { LiveDisplayRegistry } from '../scope/live-display-registry';
|
|
9
10
|
export declare function createServer(): Promise<import("fastify").FastifyInstance<import("http").Server<typeof import("http").IncomingMessage, typeof import("http").ServerResponse>, import("http").IncomingMessage, import("http").ServerResponse<import("http").IncomingMessage>, import("fastify").FastifyBaseLogger, import("fastify").FastifyTypeProviderDefault>>;
|
|
10
11
|
declare module 'fastify' {
|
|
11
12
|
interface FastifyInstance {
|
|
@@ -18,6 +19,7 @@ declare module 'fastify' {
|
|
|
18
19
|
credentialManager: CredentialManager;
|
|
19
20
|
playbookManager: PlaybookManager;
|
|
20
21
|
collectionWarningService: CollectionWarningService;
|
|
22
|
+
liveDisplayRegistry: LiveDisplayRegistry;
|
|
21
23
|
broadcastServiceUpdate: (update: ServiceStatusUpdate) => void;
|
|
22
24
|
broadcastDeckUpdate: (update: DeckUpdate) => void;
|
|
23
25
|
broadcastToAll: (message: WebSocketMessage) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAUzD,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACvF,OAAO,EAAqB,iBAAiB,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAEzG,OAAO,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAElF,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAUzD,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACvF,OAAO,EAAqB,iBAAiB,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAEzG,OAAO,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAElF,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAGhE,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAErE,wBAAsB,YAAY,qUAkHjC;AAGD,OAAO,QAAQ,SAAS,CAAC;IACvB,UAAU,eAAe;QACvB,EAAE,EAAE,eAAe,CAAC;QACpB,cAAc,EAAE,cAAc,CAAC;QAC/B,SAAS,EAAE,gBAAgB,CAAC;QAC5B,YAAY,EAAE,YAAY,CAAC;QAC3B,sBAAsB,EAAE,sBAAsB,CAAC;QAC/C,eAAe,EAAE,eAAe,CAAC;QACjC,iBAAiB,EAAE,iBAAiB,CAAC;QACrC,eAAe,EAAE,eAAe,CAAC;QACjC,wBAAwB,EAAE,wBAAwB,CAAC;QACnD,mBAAmB,EAAE,mBAAmB,CAAC;QACzC,sBAAsB,EAAE,CAAC,MAAM,EAAE,mBAAmB,KAAK,IAAI,CAAC;QAC9D,mBAAmB,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;QAClD,cAAc,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,IAAI,CAAC;KACrD;CACF"}
|
package/dist/server/index.js
CHANGED
|
@@ -30,6 +30,7 @@ const collection_1 = require("../routes/collection");
|
|
|
30
30
|
const playbook_manager_1 = require("../playbooks/playbook-manager");
|
|
31
31
|
const version_1 = require("../lib/version");
|
|
32
32
|
const seed_default_services_1 = require("../data/seed-default-services");
|
|
33
|
+
const live_display_registry_1 = require("../scope/live-display-registry");
|
|
33
34
|
async function createServer() {
|
|
34
35
|
const fastify = (0, fastify_1.default)({
|
|
35
36
|
logger: {
|
|
@@ -60,6 +61,7 @@ async function createServer() {
|
|
|
60
61
|
void serviceManager.backfillMissingIcons();
|
|
61
62
|
const playbookManager = new playbook_manager_1.PlaybookManager(db);
|
|
62
63
|
const collectionWarningService = new collection_warning_service_1.CollectionWarningService();
|
|
64
|
+
const liveDisplayRegistry = new live_display_registry_1.LiveDisplayRegistry();
|
|
63
65
|
// Register routes
|
|
64
66
|
await fastify.register(websocket_2.registerWebSocketRoutes, { prefix: '/api/ws' });
|
|
65
67
|
await fastify.register(services_1.registerServiceRoutes, { prefix: '/api/services' });
|
|
@@ -111,6 +113,7 @@ async function createServer() {
|
|
|
111
113
|
fastify.decorate('credentialManager', credentialManager);
|
|
112
114
|
fastify.decorate('playbookManager', playbookManager);
|
|
113
115
|
fastify.decorate('collectionWarningService', collectionWarningService);
|
|
116
|
+
fastify.decorate('liveDisplayRegistry', liveDisplayRegistry);
|
|
114
117
|
// Add broadcast decorators for WebSocket functionality
|
|
115
118
|
fastify.decorate('broadcastServiceUpdate', (update) => {
|
|
116
119
|
console.log('Broadcasting service update:', update);
|
package/dist/server/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":";;;;;AA6BA,oCAkHC;AA/ID,sDAA8B;AAC9B,yDAAiC;AACjC,mEAA2C;AAC3C,6DAA4C;AAC5C,sDAAyB;AACzB,0DAA6B;AAC7B,iDAAqD;AACrD,iEAA6D;AAC7D,uEAAkE;AAClE,6DAAyD;AACzD,iDAA2D;AAC3D,2CAAqD;AACrD,2CAAsD;AACtD,mDAA8D;AAC9D,wDAAsC;AACtC,mDAA6D;AAC7D,uDAAiE;AACjE,2CAAsD;AACtD,mDAA6D;AAE7D,oCAAyG;AACzG,wCAAmD;AACnD,uFAAkF;AAClF,qDAAgE;AAChE,oEAAgE;AAChE,4CAAqD;AACrD,yEAA2E;AAC3E,0EAAqE;AAE9D,KAAK,UAAU,YAAY;IAChC,MAAM,OAAO,GAAG,IAAA,iBAAO,EAAC;QACtB,MAAM,EAAE;YACN,KAAK,EAAE,MAAM;SACd;KACF,CAAC,CAAC;IAEH,mBAAmB;IACnB,MAAM,OAAO,CAAC,QAAQ,CAAC,cAAI,EAAE;QAC3B,MAAM,EAAE,IAAI,EAAE,mCAAmC;QACjD,WAAW,EAAE,IAAI;KAClB,CAAC,CAAC;IAEH,MAAM,OAAO,CAAC,QAAQ,CAAC,mBAAS,CAAC,CAAC;IAElC,sBAAsB;IACtB,MAAM,YAAY,GAAG,IAAA,2BAAmB,GAAE,CAAC;IAC3C,OAAO,CAAC,GAAG,CAAC,gBAAgB,YAAY,EAAE,CAAC,CAAC;IAC5C,MAAM,EAAE,GAAG,IAAI,0BAAe,CAAC,YAAY,CAAC,CAAC;IAC7C,MAAM,WAAW,GAAG,MAAM,IAAA,kDAA0B,EAAC,EAAE,CAAC,CAAC;IACzD,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,UAAU,WAAW,4BAA4B,CAAC,CAAC;IACjE,CAAC;IACD,MAAM,WAAW,GAAG,IAAA,yBAAiB,GAAE,CAAC;IACxC,MAAM,sBAAsB,GAAG,IAAI,8BAAsB,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IAC3E,MAAM,eAAe,GAAG,IAAI,uBAAe,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IAC7D,MAAM,YAAY,GAAG,IAAI,4BAAY,CAAC,EAAE,EAAE,sBAAsB,EAAE,eAAe,CAAC,CAAC;IACnF,MAAM,iBAAiB,GAAG,IAAI,yBAAiB,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;IACjE,MAAM,SAAS,GAAG,IAAI,qCAAgB,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,YAAY,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC;IACnG,MAAM,cAAc,GAAG,IAAI,gCAAc,CACvC,EAAE,EACF,SAAS,EACT,YAAY,EACZ,sBAAsB,EACtB,iBAAiB,CAClB,CAAC;IACF,KAAK,cAAc,CAAC,oBAAoB,EAAE,CAAC;IAC3C,MAAM,eAAe,GAAG,IAAI,kCAAe,CAAC,EAAE,CAAC,CAAC;IAChD,MAAM,wBAAwB,GAAG,IAAI,qDAAwB,EAAE,CAAC;IAChE,MAAM,mBAAmB,GAAG,IAAI,2CAAmB,EAAE,CAAC;IAEtD,kBAAkB;IAClB,MAAM,OAAO,CAAC,QAAQ,CAAC,mCAAuB,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;IACvE,MAAM,OAAO,CAAC,QAAQ,CAAC,gCAAqB,EAAE,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC;IAC3E,MAAM,OAAO,CAAC,QAAQ,CAAC,0BAAkB,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;IACrE,MAAM,OAAO,CAAC,QAAQ,CAAC,sCAAwB,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC,CAAC;IACjF,MAAM,OAAO,CAAC,QAAQ,CAAC,2BAAmB,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;IACtE,MAAM,OAAO,CAAC,QAAQ,CAAC,kCAAsB,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC;IAC7E,MAAM,OAAO,CAAC,QAAQ,CAAC,qCAAwB,EAAE,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC,CAAC;IAChF,MAAM,OAAO,CAAC,QAAQ,CAAC,2BAAmB,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;IACtE,MAAM,OAAO,CAAC,QAAQ,CAAC,aAAS,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;IAC1D,MAAM,OAAO,CAAC,QAAQ,CAAC,kCAAsB,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC;IAE7E,wBAAwB;IACxB,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QAC9C,OAAO;YACL,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,oBAAoB;YAC7B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,OAAO,EAAE,IAAA,6BAAmB,GAAE;SAC/B,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,IAAI,EAAE,CAAC;IACtD,IAAI,MAAM,IAAI,iBAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACpC,MAAM,OAAO,CAAC,QAAQ,CAAC,gBAAa,EAAE;YACpC,IAAI,EAAE,mBAAI,CAAC,OAAO,CAAC,MAAM,CAAC;YAC1B,MAAM,EAAE,GAAG;SACZ,CAAC,CAAC;QAEH,OAAO,CAAC,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;YAClD,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;gBACpC,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;YACxE,CAAC;YACD,OAAO,KAAK,CAAC,QAAQ,CAAC,YAAY,EAAE,mBAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;IACL,CAAC;SAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QACnB,uDAAuD;QACvD,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;YAC5B,IAAI,EAAE,oBAAoB;YAC1B,OAAO,EAAE,IAAA,6BAAmB,GAAE;YAC9B,MAAM,EAAE,SAAS;SAClB,CAAC,CAAC,CAAC;IACN,CAAC;IAED,kCAAkC;IAClC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAC3B,OAAO,CAAC,QAAQ,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC;IACnD,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IACzC,OAAO,CAAC,QAAQ,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;IAC/C,OAAO,CAAC,QAAQ,CAAC,wBAAwB,EAAE,sBAAsB,CAAC,CAAC;IACnE,OAAO,CAAC,QAAQ,CAAC,iBAAiB,EAAE,eAAe,CAAC,CAAC;IACrD,OAAO,CAAC,QAAQ,CAAC,mBAAmB,EAAE,iBAAiB,CAAC,CAAC;IACzD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,EAAE,eAAe,CAAC,CAAC;IACrD,OAAO,CAAC,QAAQ,CAAC,0BAA0B,EAAE,wBAAwB,CAAC,CAAC;IACvE,OAAO,CAAC,QAAQ,CAAC,qBAAqB,EAAE,mBAAmB,CAAC,CAAC;IAE7D,uDAAuD;IACvD,OAAO,CAAC,QAAQ,CAAC,wBAAwB,EAAE,CAAC,MAA2B,EAAE,EAAE;QACzE,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE,MAAM,CAAC,CAAC;QACpD,gEAAgE;IAClE,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,QAAQ,CAAC,qBAAqB,EAAE,CAAC,MAAkB,EAAE,EAAE;QAC7D,OAAO,CAAC,GAAG,CAAC,2BAA2B,EAAE,MAAM,CAAC,CAAC;QACjD,gEAAgE;IAClE,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,QAAQ,CAAC,gBAAgB,EAAE,CAAC,OAAyB,EAAE,EAAE;QAC/D,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,OAAO,CAAC,CAAC;QAC7C,gEAAgE;IAClE,CAAC,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agent-deck/backend",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.10",
|
|
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.
|
|
40
|
+
"@agent-deck/shared": "^1.2.10",
|
|
41
41
|
"@fastify/cors": "^10.0.0",
|
|
42
42
|
"@fastify/static": "^8.0.0",
|
|
43
43
|
"@fastify/websocket": "^11.2.0",
|