@agent-deck/backend 1.10.6 → 1.11.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 (40) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/data/oauth-provider-guides.js +1 -1
  3. package/dist/data/oauth-provider-guides.js.map +1 -1
  4. package/dist/mcp-server.d.ts.map +1 -1
  5. package/dist/mcp-server.js +27 -2
  6. package/dist/mcp-server.js.map +1 -1
  7. package/dist/mcp-session-binding.d.ts +18 -0
  8. package/dist/mcp-session-binding.d.ts.map +1 -1
  9. package/dist/mcp-session-binding.js +25 -0
  10. package/dist/mcp-session-binding.js.map +1 -1
  11. package/dist/mcp-tools/elicitation.d.ts +129 -0
  12. package/dist/mcp-tools/elicitation.d.ts.map +1 -0
  13. package/dist/mcp-tools/elicitation.js +231 -0
  14. package/dist/mcp-tools/elicitation.js.map +1 -0
  15. package/dist/mcp-tools/policy.d.ts.map +1 -1
  16. package/dist/mcp-tools/policy.js +2 -0
  17. package/dist/mcp-tools/policy.js.map +1 -1
  18. package/dist/mcp-tools/register.d.ts +14 -0
  19. package/dist/mcp-tools/register.d.ts.map +1 -1
  20. package/dist/mcp-tools/register.js +109 -129
  21. package/dist/mcp-tools/register.js.map +1 -1
  22. package/dist/playbooks/stub-sync.d.ts +55 -12
  23. package/dist/playbooks/stub-sync.d.ts.map +1 -1
  24. package/dist/playbooks/stub-sync.js +136 -197
  25. package/dist/playbooks/stub-sync.js.map +1 -1
  26. package/dist/routes/trusted-session.d.ts.map +1 -1
  27. package/dist/routes/trusted-session.js +240 -6
  28. package/dist/routes/trusted-session.js.map +1 -1
  29. package/dist/trusted-session/route-policy-registry.d.ts.map +1 -1
  30. package/dist/trusted-session/route-policy-registry.js +22 -0
  31. package/dist/trusted-session/route-policy-registry.js.map +1 -1
  32. package/dist/trusted-session/store.d.ts +174 -2
  33. package/dist/trusted-session/store.d.ts.map +1 -1
  34. package/dist/trusted-session/store.js +459 -2
  35. package/dist/trusted-session/store.js.map +1 -1
  36. package/package.json +2 -2
  37. package/static-ui/assets/{index-BArFQUL8.js → index-B86VjIYT.js} +4 -4
  38. package/static-ui/assets/index-DlL_F4GS.css +1 -0
  39. package/static-ui/index.html +2 -2
  40. package/static-ui/assets/index-CbccleVj.css +0 -1
@@ -1,4 +1,4 @@
1
- import { type AgentSessionMode, type RuntimeSession } from '@agent-deck/shared';
1
+ import { type AgentSessionMode, type DeckSwitchDecision, type RuntimeSession } from '@agent-deck/shared';
2
2
  import type Database from 'better-sqlite3';
3
3
  export type RuntimeSessionRow = {
4
4
  id: string;
@@ -23,10 +23,117 @@ export type DashboardSessionRow = {
23
23
  last_seen_at: string;
24
24
  expires_at: string;
25
25
  };
26
+ /** Default validity of a deck-switch request (NOT-205). */
27
+ export declare const DECK_SWITCH_REQUEST_TTL_MS: number;
28
+ export type DeckSwitchRequestStatus = 'pending' | 'approved' | 'declined' | 'expired' | 'consumed';
29
+ export type DeckSwitchRequestRow = {
30
+ id: string;
31
+ runtime_session_id: string;
32
+ mcp_session_id: string | null;
33
+ current_deck_id: string;
34
+ requested_deck_id: string;
35
+ workspace_root: string | null;
36
+ status: DeckSwitchRequestStatus;
37
+ created_at: string;
38
+ expires_at: string;
39
+ resolved_at: string | null;
40
+ };
41
+ /**
42
+ * Server-side deck-switch request (NOT-205).
43
+ * The requested deck id and workspace root stay server-side; client-facing
44
+ * readers get {@link DeckSwitchRequestSummary} instead.
45
+ */
46
+ export type DeckSwitchRequest = {
47
+ requestId: string;
48
+ runtimeSessionId: string;
49
+ mcpSessionId?: string;
50
+ currentDeckId: string;
51
+ requestedDeckId: string;
52
+ workspaceRoot?: string;
53
+ status: DeckSwitchRequestStatus;
54
+ createdAt: string;
55
+ expiresAt: string;
56
+ resolvedAt: string | null;
57
+ };
58
+ /**
59
+ * Display-safe client view of a deck-switch request: opaque request id plus
60
+ * lifecycle fields only. Never carries the requested deck id or workspace
61
+ * root, so a pending/declined request exposes nothing of the target deck.
62
+ */
63
+ export type DeckSwitchRequestSummary = {
64
+ requestId: string;
65
+ status: DeckSwitchRequestStatus;
66
+ createdAt: string;
67
+ expiresAt: string;
68
+ };
69
+ /** Result of the atomic approval commit (NOT-207). */
70
+ export type DeckSwitchResolutionOutcome = {
71
+ outcome: 'not-found';
72
+ } | {
73
+ outcome: 'unauthorized';
74
+ } | {
75
+ outcome: 'expired';
76
+ request: DeckSwitchRequest;
77
+ } | {
78
+ outcome: 'already-resolved';
79
+ request: DeckSwitchRequest;
80
+ } | {
81
+ outcome: 'declined';
82
+ request: DeckSwitchRequest;
83
+ } | {
84
+ outcome: 'resolved';
85
+ request: DeckSwitchRequest;
86
+ workspaceRoot?: string;
87
+ } | {
88
+ outcome: 'target-missing';
89
+ } | {
90
+ outcome: 'session-invalid';
91
+ } | {
92
+ outcome: 'workspace-required';
93
+ } | {
94
+ outcome: 'assignment-failed';
95
+ error: string;
96
+ };
97
+ /**
98
+ * Workspace-default assignment writer seam (NOT-207).
99
+ *
100
+ * Preferred injection point is {@link TrustedSessionStoreOptions}; the
101
+ * per-call `deps` override on {@link TrustedSessionStore.applyDeckSwitchResolution}
102
+ * is kept for backwards compatibility. Custom writers own their side effects:
103
+ * snapshot/restore compensation below only applies to the default file writer.
104
+ */
105
+ export type WorkspaceAssignmentWriter = (workspaceRoot: string, deckId: string, nowIso: string) => void;
106
+ export type TrustedSessionStoreOptions = {
107
+ workspaceAssignmentWriter?: WorkspaceAssignmentWriter;
108
+ deckExists?: (deckId: string) => boolean;
109
+ };
26
110
  export declare function hashDashboardSessionToken(token: string): string;
111
+ /**
112
+ * NOT-205: project a request to its display-safe client view.
113
+ * Only the opaque request id plus lifecycle fields are exposed; the
114
+ * requested deck id, session identity, and workspace root stay server-side.
115
+ */
116
+ export declare function toDeckSwitchRequestSummary(request: DeckSwitchRequest): DeckSwitchRequestSummary;
27
117
  export declare class TrustedSessionStore {
28
118
  private readonly db;
29
- constructor(db: Database.Database);
119
+ private readonly options?;
120
+ constructor(db: Database.Database, options?: TrustedSessionStoreOptions | undefined);
121
+ /**
122
+ * Default workspace-default assignment write (NOT-207): the v3 `use.json`
123
+ * at the request's workspaceRoot. Preserves the existing `mcpUrl`, if any.
124
+ * Never touches `deck_workspaces` — that registry only records which
125
+ * folders receive stub syncs for a deck; the assignment file is the source
126
+ * of truth launchers and the CLI read for the folder's default deck.
127
+ */
128
+ private writeWorkspaceAssignmentFile;
129
+ /**
130
+ * Approval-path session rebind: move the requesting session to the new deck
131
+ * and renew its lease. Unlike {@link setRuntimeSessionDeck} (agent-initiated,
132
+ * agent-admin-gated), approval acts as the human, so no mode check applies;
133
+ * the session must still be live. Returns false when the row is gone,
134
+ * revoked, or expired.
135
+ */
136
+ private rebindRuntimeSessionDeck;
30
137
  private ensureTables;
31
138
  /**
32
139
  * NOT-108 PR2: drop grant ledger and rebuild runtime_sessions without
@@ -70,6 +177,71 @@ export declare class TrustedSessionStore {
70
177
  expiresAt: string;
71
178
  createdAt: string;
72
179
  }>;
180
+ /**
181
+ * NOT-205: record a human-decision deck-switch request.
182
+ * Never mutates the runtime session binding — the session keeps serving
183
+ * its current deck while the request is pending (or declined).
184
+ * Duplicate pending requests for the same session and requested target are
185
+ * idempotent: the existing pending request is returned as-is.
186
+ */
187
+ createDeckSwitchRequest(input: {
188
+ runtimeSessionId: string;
189
+ mcpSessionId?: string;
190
+ currentDeckId: string;
191
+ requestedDeckId: string;
192
+ workspaceRoot?: string;
193
+ ttlMs?: number;
194
+ }): DeckSwitchRequest;
195
+ private getDeckSwitchRequestRow;
196
+ /**
197
+ * Read a request, lazily marking it expired when its TTL has passed.
198
+ * An expired request is returned with status `expired` and can never be
199
+ * approved afterwards.
200
+ */
201
+ getDeckSwitchRequest(requestId: string): DeckSwitchRequest | null;
202
+ /** Client-safe view: opaque id plus lifecycle fields, no target deck data. */
203
+ getDeckSwitchRequestSummary(requestId: string): DeckSwitchRequestSummary | null;
204
+ listPendingDeckSwitchRequests(runtimeSessionId?: string): DeckSwitchRequest[];
205
+ /**
206
+ * Compare-and-set status transition. Returns the updated request on success,
207
+ * or null when the request is missing, the current status differs from
208
+ * `expectedStatus`, the transition is illegal, or an expired pending request
209
+ * is resolved to anything but `expired`. Exactly one concurrent resolver
210
+ * wins because the UPDATE is conditional on the expected status.
211
+ */
212
+ transitionDeckSwitchRequestStatus(requestId: string, expectedStatus: DeckSwitchRequestStatus, nextStatus: DeckSwitchRequestStatus): DeckSwitchRequest | null;
213
+ /**
214
+ * NOT-207: approval commit for a deck-switch request.
215
+ *
216
+ * The only commit point for changing a deck binding from a request.
217
+ *
218
+ * Ordering is rollback-safe because a file write cannot join the SQLite
219
+ * transaction: for `workspace-default` the v3 `use.json` at the request's
220
+ * workspaceRoot is written *before* the database transaction runs. A failed
221
+ * write returns `assignment-failed` with zero database mutation, so the
222
+ * session stays on the prior deck. The transaction then atomically covers
223
+ * pending→approved, the requesting session's rebind, and approved→consumed;
224
+ * if it fails after the file was written (only possible when the session
225
+ * row vanishes concurrently), the file is restored from its snapshot and
226
+ * `session-invalid` is returned. Either way the prior binding stays
227
+ * effective and no partial commit is visible.
228
+ *
229
+ * - `session`: rebind requesting session only; workspace default untouched.
230
+ * - `workspace-default`: as `session`, plus replace the workspace-root
231
+ * assignment file (never `deck_workspaces`).
232
+ * - `decline`: pending→declined; bindings untouched.
233
+ */
234
+ applyDeckSwitchResolution(requestId: string, runtimeSessionId: string, decision: DeckSwitchDecision, deps?: {
235
+ deckExists?: (deckId: string) => boolean;
236
+ writeWorkspaceAssignment?: (workspaceRoot: string, deckId: string, nowIso: string) => void;
237
+ }): DeckSwitchResolutionOutcome;
238
+ /**
239
+ * Sweep pending requests past their TTL to `expired`. Returns the number
240
+ * of requests newly expired.
241
+ */
242
+ expireDeckSwitchRequests(): number;
243
+ private markDeckSwitchRequestExpired;
244
+ private toDeckSwitchRequest;
73
245
  expireStaleSessions(): number;
74
246
  private toRuntimeSession;
75
247
  }
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/trusted-session/store.ts"],"names":[],"mappings":"AAEA,OAAO,EAML,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACpB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C,MAAM,MAAM,iBAAiB,GAAG;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,gBAAgB,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,kBAAkB,EAAE,MAAM,CAAC;IAC3B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAQF,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE/D;AAUD,qBAAa,mBAAmB;IAClB,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,QAAQ,CAAC,QAAQ;IAIlD,OAAO,CAAC,YAAY;IAgDpB;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB;IAoC5B,oBAAoB,CAAC,KAAK,EAAE;QAC1B,MAAM,EAAE,MAAM,CAAC;QACf,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,GAAG,cAAc;IAgBlB;;;OAGG;IACH,sCAAsC,CAAC,YAAY,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI;IAenF,sCAAsC,CAAC,YAAY,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI;IAiBnF,6BAA6B,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI;IAmB1F,mCAAmC,CAAC,YAAY,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI;IAIlF,qCAAqC,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAkB7F,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI;IAQ/D,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAiB7C,qBAAqB,IAAI,MAAM;IAQ/B,sBAAsB,IAAI,MAAM;IAYhC,gCAAgC,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IA4BxD,uBAAuB,IAAI,MAAM;IAOjC,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI;IAYjE,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI;IAkC7D,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI;IAkB/D,6EAA6E;IAC7E,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI;IAqB/E,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI;IAkBlE,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAM7C,oBAAoB,CAAC,gBAAgB,EAAE,MAAM,GAAG,iBAAiB;IAqBjE,qBAAqB,CAAC,WAAW,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,OAAO;IAqB7E,0BAA0B,IAAI,KAAK,CAAC;QAClC,WAAW,EAAE,MAAM,CAAC;QACpB,gBAAgB,EAAE,MAAM,CAAC;QACzB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IA4BF,mBAAmB,IAAI,MAAM;IAuB7B,OAAO,CAAC,gBAAgB;CAWzB"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/trusted-session/store.ts"],"names":[],"mappings":"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"}