@agent-deck/backend 1.8.0 → 1.8.2

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 (99) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/execution-authority/types.d.ts +1 -1
  3. package/dist/execution-authority/types.d.ts.map +1 -1
  4. package/dist/lib/agent-deck-context.d.ts +1 -1
  5. package/dist/lib/agent-deck-context.d.ts.map +1 -1
  6. package/dist/lib/agent-deck-context.js +4 -17
  7. package/dist/lib/agent-deck-context.js.map +1 -1
  8. package/dist/lib/backend-api-error.d.ts.map +1 -1
  9. package/dist/lib/backend-api-error.js +0 -1
  10. package/dist/lib/backend-api-error.js.map +1 -1
  11. package/dist/lib/bound-deck-scope.d.ts.map +1 -1
  12. package/dist/lib/bound-deck-scope.js +0 -4
  13. package/dist/lib/bound-deck-scope.js.map +1 -1
  14. package/dist/lib/http-auth.d.ts +0 -14
  15. package/dist/lib/http-auth.d.ts.map +1 -1
  16. package/dist/lib/http-auth.js +0 -25
  17. package/dist/lib/http-auth.js.map +1 -1
  18. package/dist/lib/invalid-deck-id-path-segment.d.ts +6 -0
  19. package/dist/lib/invalid-deck-id-path-segment.d.ts.map +1 -0
  20. package/dist/lib/invalid-deck-id-path-segment.js +11 -0
  21. package/dist/lib/invalid-deck-id-path-segment.js.map +1 -0
  22. package/dist/lib/route-policy.js +2 -2
  23. package/dist/lib/route-policy.js.map +1 -1
  24. package/dist/mcp-server.d.ts +6 -13
  25. package/dist/mcp-server.d.ts.map +1 -1
  26. package/dist/mcp-server.js +64 -140
  27. package/dist/mcp-server.js.map +1 -1
  28. package/dist/mcp-session-binding.d.ts +7 -15
  29. package/dist/mcp-session-binding.d.ts.map +1 -1
  30. package/dist/mcp-session-binding.js +14 -30
  31. package/dist/mcp-session-binding.js.map +1 -1
  32. package/dist/mcp-tools/policy.d.ts +0 -3
  33. package/dist/mcp-tools/policy.d.ts.map +1 -1
  34. package/dist/mcp-tools/policy.js +6 -43
  35. package/dist/mcp-tools/policy.js.map +1 -1
  36. package/dist/mcp-tools/register.d.ts +1 -5
  37. package/dist/mcp-tools/register.d.ts.map +1 -1
  38. package/dist/mcp-tools/register.js +100 -104
  39. package/dist/mcp-tools/register.js.map +1 -1
  40. package/dist/mcp-tools/test-harness.d.ts +5 -5
  41. package/dist/mcp-tools/test-harness.d.ts.map +1 -1
  42. package/dist/mcp-tools/test-harness.js +15 -21
  43. package/dist/mcp-tools/test-harness.js.map +1 -1
  44. package/dist/models/database.d.ts +2 -0
  45. package/dist/models/database.d.ts.map +1 -1
  46. package/dist/models/database.js +5 -0
  47. package/dist/models/database.js.map +1 -1
  48. package/dist/playbooks/stub-sync.d.ts +9 -0
  49. package/dist/playbooks/stub-sync.d.ts.map +1 -1
  50. package/dist/playbooks/stub-sync.js +51 -12
  51. package/dist/playbooks/stub-sync.js.map +1 -1
  52. package/dist/routes/decks.d.ts.map +1 -1
  53. package/dist/routes/decks.js +0 -1
  54. package/dist/routes/decks.js.map +1 -1
  55. package/dist/routes/execution-authority.d.ts.map +1 -1
  56. package/dist/routes/execution-authority.js +115 -28
  57. package/dist/routes/execution-authority.js.map +1 -1
  58. package/dist/routes/launch.d.ts +8 -0
  59. package/dist/routes/launch.d.ts.map +1 -0
  60. package/dist/routes/launch.js +35 -0
  61. package/dist/routes/launch.js.map +1 -0
  62. package/dist/routes/scope.d.ts.map +1 -1
  63. package/dist/routes/scope.js +1 -39
  64. package/dist/routes/scope.js.map +1 -1
  65. package/dist/routes/services.d.ts.map +1 -1
  66. package/dist/routes/services.js +1 -7
  67. package/dist/routes/services.js.map +1 -1
  68. package/dist/routes/trusted-session.d.ts.map +1 -1
  69. package/dist/routes/trusted-session.js +50 -152
  70. package/dist/routes/trusted-session.js.map +1 -1
  71. package/dist/scope/live-display-registry.d.ts +0 -2
  72. package/dist/scope/live-display-registry.d.ts.map +1 -1
  73. package/dist/scope/live-display-registry.js +0 -1
  74. package/dist/scope/live-display-registry.js.map +1 -1
  75. package/dist/server/index.d.ts +0 -2
  76. package/dist/server/index.d.ts.map +1 -1
  77. package/dist/server/index.js +2 -5
  78. package/dist/server/index.js.map +1 -1
  79. package/dist/test/auth-fixtures.d.ts +1 -1
  80. package/dist/test/auth-fixtures.d.ts.map +1 -1
  81. package/dist/test/auth-fixtures.js +2 -11
  82. package/dist/test/auth-fixtures.js.map +1 -1
  83. package/dist/trusted-session/auth.d.ts +1 -7
  84. package/dist/trusted-session/auth.d.ts.map +1 -1
  85. package/dist/trusted-session/auth.js +7 -54
  86. package/dist/trusted-session/auth.js.map +1 -1
  87. package/dist/trusted-session/policy-hook.d.ts.map +1 -1
  88. package/dist/trusted-session/policy-hook.js +1 -51
  89. package/dist/trusted-session/policy-hook.js.map +1 -1
  90. package/dist/trusted-session/route-policy-registry.d.ts.map +1 -1
  91. package/dist/trusted-session/route-policy-registry.js +5 -50
  92. package/dist/trusted-session/route-policy-registry.js.map +1 -1
  93. package/dist/trusted-session/store.d.ts +12 -45
  94. package/dist/trusted-session/store.d.ts.map +1 -1
  95. package/dist/trusted-session/store.js +66 -208
  96. package/dist/trusted-session/store.js.map +1 -1
  97. package/package.json +2 -2
  98. package/static-ui/assets/{index-DhP_UPyM.js → index-Bb9ckehB.js} +1 -1
  99. package/static-ui/index.html +1 -1
@@ -9,7 +9,7 @@ export type AuthorityStatus = 'live' | 'expired' | 'revoked';
9
9
  export type AuthorityAudience = 'dealer-worker';
10
10
  export type ContractErrorCode = 'GRANT_REQUIRED' | 'AUTHORITY_EXPIRED' | 'AUTHORITY_REVOKED' | 'AUTHORITY_UNKNOWN' | 'AUTHORITY_SECRET_INVALID' | 'RESOURCE_OUT_OF_SCOPE' | 'INTERACTION_REQUIRED' | 'ENROLLMENT_REVOKED' | 'COORDINATOR_NOT_ENROLLED' | 'IDEMPOTENCY_KEY_CONFLICT' | 'INVALID_MINT_REQUEST' | 'AUDIENCE_MISMATCH';
11
11
  /** Fine-grained cause when one error_code covers multiple recovery paths. */
12
- export type ContractErrorReason = 'deck_not_permitted' | 'tool_not_in_snapshot' | 'enrollment_revoked' | 'explicit_revoke' | 'params_mismatch' | 'ttl_non_positive';
12
+ export type ContractErrorReason = 'deck_not_permitted' | 'deck_not_found' | 'tool_not_in_snapshot' | 'enrollment_revoked' | 'explicit_revoke' | 'params_mismatch' | 'ttl_non_positive';
13
13
  export type AuditEventKind = 'enrollment_created' | 'enrollment_revoked' | 'authority_minted' | 'authority_inspected' | 'authority_revoked' | 'authority_expired' | 'call_allowed' | 'call_denied';
14
14
  export interface AllowedTool {
15
15
  serviceId: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/execution-authority/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/execution-authority/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,SAAS,CAAC;AACpD,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;AAC7D,MAAM,MAAM,iBAAiB,GAAG,eAAe,CAAC;AAEhD,MAAM,MAAM,iBAAiB,GACzB,gBAAgB,GAChB,mBAAmB,GACnB,mBAAmB,GACnB,mBAAmB,GACnB,0BAA0B,GAC1B,uBAAuB,GACvB,sBAAsB,GACtB,oBAAoB,GACpB,0BAA0B,GAC1B,0BAA0B,GAC1B,sBAAsB,GACtB,mBAAmB,CAAC;AAExB,6EAA6E;AAC7E,MAAM,MAAM,mBAAmB,GAC3B,oBAAoB,GACpB,gBAAgB,GAChB,sBAAsB,GACtB,oBAAoB,GACpB,iBAAiB,GACjB,iBAAiB,GACjB,kBAAkB,CAAC;AAEvB,MAAM,MAAM,cAAc,GACtB,oBAAoB,GACpB,oBAAoB,GACpB,kBAAkB,GAClB,qBAAqB,GACrB,mBAAmB,GACnB,mBAAmB,GACnB,cAAc,GACd,aAAa,CAAC;AAElB,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,qBAAqB;IACpC,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,gBAAgB,CAAC;IACzB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,eAAe,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,cAAc,CAAC;IACrB,WAAW,EAAE,gBAAgB,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,KAAK,CAAC;IACV,UAAU,EAAE,iBAAiB,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAC7B,WAAW,CAAC,EAAE,gBAAgB,CAAC;CAChC;AAED,MAAM,WAAW,eAAe,CAAC,CAAC;IAChC,EAAE,EAAE,IAAI,CAAC;IACT,IAAI,EAAE,CAAC,CAAC;CACT;AAED,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI,eAAe,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC;AAEnE,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,qBAAqB,CAAC;IAClC,qEAAqE;IACrE,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,uDAAuD;IACvD,KAAK,EAAE,MAAM,CAAC;CACf;AAED,4EAA4E;AAC5E,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,yEAAyE;IACzE,aAAa,CAAC,EAAE,WAAW,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,kBAAkB,CAAC;IAC9B;;;OAGG;IACH,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,sEAAsE;IACtE,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,yEAAyE;IACzE,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B"}
@@ -4,7 +4,7 @@ export declare class AgentDeckContextError extends Error {
4
4
  readonly errorCode?: string | undefined;
5
5
  constructor(message: string, errorCode?: string | undefined);
6
6
  }
7
- /** Resolve bound deck from authenticated runtime session or execution authority (PRD C3 / NOT-86). */
7
+ /** Resolve bound deck from authenticated runtime session. */
8
8
  export declare function resolveAgentDeckId(request: FastifyRequest, db: DatabaseManager): Promise<string>;
9
9
  export declare function resolveAgentMode(request: FastifyRequest): Promise<'normal' | 'agent-admin'>;
10
10
  //# sourceMappingURL=agent-deck-context.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent-deck-context.d.ts","sourceRoot":"","sources":["../../src/lib/agent-deck-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEzC,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAGrD,qBAAa,qBAAsB,SAAQ,KAAK;aAG5B,SAAS,CAAC,EAAE,MAAM;gBADlC,OAAO,EAAE,MAAM,EACC,SAAS,CAAC,EAAE,MAAM,YAAA;CAKrC;AAOD,sGAAsG;AACtG,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,cAAc,EACvB,EAAE,EAAE,eAAe,GAClB,OAAO,CAAC,MAAM,CAAC,CAyDjB;AAED,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,QAAQ,GAAG,aAAa,CAAC,CAWnC"}
1
+ {"version":3,"file":"agent-deck-context.d.ts","sourceRoot":"","sources":["../../src/lib/agent-deck-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEzC,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAGrD,qBAAa,qBAAsB,SAAQ,KAAK;aAG5B,SAAS,CAAC,EAAE,MAAM;gBADlC,OAAO,EAAE,MAAM,EACC,SAAS,CAAC,EAAE,MAAM,YAAA;CAKrC;AAOD,6DAA6D;AAC7D,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,cAAc,EACvB,EAAE,EAAE,eAAe,GAClB,OAAO,CAAC,MAAM,CAAC,CA4CjB;AAED,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,QAAQ,GAAG,aAAa,CAAC,CAOnC"}
@@ -18,20 +18,11 @@ function headerValue(request, name) {
18
18
  const value = request.headers[name];
19
19
  return typeof value === 'string' && value.trim() ? value.trim() : undefined;
20
20
  }
21
- /** Resolve bound deck from authenticated runtime session or execution authority (PRD C3 / NOT-86). */
21
+ /** Resolve bound deck from authenticated runtime session. */
22
22
  async function resolveAgentDeckId(request, db) {
23
- const principal = request.requestPrincipal;
24
- if (principal?.kind === 'execution-authority') {
25
- const deckId = principal.authority.deckId;
26
- const deck = await db.getDeck(deckId);
27
- if (!deck) {
28
- throw new AgentDeckContextError((0, shared_1.trustedSessionError)('RESOURCE_OUT_OF_SCOPE', 'Authority deck not found').error, 'RESOURCE_OUT_OF_SCOPE');
29
- }
30
- return deckId;
31
- }
32
23
  const sessionId = headerValue(request, shared_1.AGENT_DECK_SESSION_HEADER);
33
24
  if (!sessionId) {
34
- throw new AgentDeckContextError((0, shared_1.trustedSessionError)('GRANT_REQUIRED', 'No valid workspace grant').error, 'GRANT_REQUIRED');
25
+ throw new AgentDeckContextError((0, shared_1.trustedSessionError)('GRANT_REQUIRED', 'No deck selected for this connection').error, 'GRANT_REQUIRED');
35
26
  }
36
27
  const store = request.server.trustedSessionStore;
37
28
  const row = store.getRuntimeSessionRow(sessionId);
@@ -39,7 +30,7 @@ async function resolveAgentDeckId(request, db) {
39
30
  throw new AgentDeckContextError((0, shared_1.trustedSessionError)('SESSION_INVALID', 'Runtime session absent or expired').error, 'SESSION_INVALID');
40
31
  }
41
32
  if (row.revoked_at) {
42
- throw new AgentDeckContextError((0, shared_1.trustedSessionError)('SESSION_REVOKED', 'Grant rotation or explicit revocation ended the session').error, 'SESSION_REVOKED');
33
+ throw new AgentDeckContextError((0, shared_1.trustedSessionError)('SESSION_REVOKED', 'Session was revoked').error, 'SESSION_REVOKED');
43
34
  }
44
35
  if (Date.parse(row.expires_at) <= Date.now()) {
45
36
  throw new AgentDeckContextError((0, shared_1.trustedSessionError)('SESSION_INVALID', 'Runtime session absent or expired').error, 'SESSION_INVALID');
@@ -50,15 +41,11 @@ async function resolveAgentDeckId(request, db) {
50
41
  }
51
42
  const deck = await db.getDeck(session.deckId);
52
43
  if (!deck) {
53
- throw new auth_1.TrustedAuthError('GRANT_REQUIRED', 'No valid workspace grant');
44
+ throw new auth_1.TrustedAuthError('GRANT_REQUIRED', 'No deck selected for this connection');
54
45
  }
55
46
  return session.deckId;
56
47
  }
57
48
  async function resolveAgentMode(request) {
58
- const principal = request.requestPrincipal;
59
- if (principal?.kind === 'execution-authority') {
60
- return 'normal';
61
- }
62
49
  const sessionId = headerValue(request, shared_1.AGENT_DECK_SESSION_HEADER);
63
50
  if (!sessionId) {
64
51
  return 'normal';
@@ -1 +1 @@
1
- {"version":3,"file":"agent-deck-context.js","sourceRoot":"","sources":["../../src/lib/agent-deck-context.ts"],"names":[],"mappings":";;;AAqBA,gDA4DC;AAED,4CAaC;AA/FD,+CAAoF;AAEpF,kDAA2D;AAE3D,MAAa,qBAAsB,SAAQ,KAAK;IAG5B;IAFlB,YACE,OAAe,EACC,SAAkB;QAElC,KAAK,CAAC,OAAO,CAAC,CAAC;QAFC,cAAS,GAAT,SAAS,CAAS;QAGlC,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;IACtC,CAAC;CACF;AARD,sDAQC;AAED,SAAS,WAAW,CAAC,OAAuB,EAAE,IAAY;IACxD,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AAC9E,CAAC;AAED,sGAAsG;AAC/F,KAAK,UAAU,kBAAkB,CACtC,OAAuB,EACvB,EAAmB;IAEnB,MAAM,SAAS,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAC3C,IAAI,SAAS,EAAE,IAAI,KAAK,qBAAqB,EAAE,CAAC;QAC9C,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC;QAC1C,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,qBAAqB,CAC7B,IAAA,4BAAmB,EAAC,uBAAuB,EAAE,0BAA0B,CAAC,CAAC,KAAK,EAC9E,uBAAuB,CACxB,CAAC;QACJ,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,SAAS,GAAG,WAAW,CAAC,OAAO,EAAE,kCAAyB,CAAC,CAAC;IAClE,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,qBAAqB,CAC7B,IAAA,4BAAmB,EAAC,gBAAgB,EAAE,0BAA0B,CAAC,CAAC,KAAK,EACvE,gBAAgB,CACjB,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC;IACjD,MAAM,GAAG,GAAG,KAAK,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;IAClD,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,qBAAqB,CAC7B,IAAA,4BAAmB,EAAC,iBAAiB,EAAE,mCAAmC,CAAC,CAAC,KAAK,EACjF,iBAAiB,CAClB,CAAC;IACJ,CAAC;IACD,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;QACnB,MAAM,IAAI,qBAAqB,CAC7B,IAAA,4BAAmB,EAAC,iBAAiB,EAAE,yDAAyD,CAAC,CAAC,KAAK,EACvG,iBAAiB,CAClB,CAAC;IACJ,CAAC;IACD,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;QAC7C,MAAM,IAAI,qBAAqB,CAC7B,IAAA,4BAAmB,EAAC,iBAAiB,EAAE,mCAAmC,CAAC,CAAC,KAAK,EACjF,iBAAiB,CAClB,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;IACrD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,qBAAqB,CAC7B,IAAA,4BAAmB,EAAC,iBAAiB,EAAE,mCAAmC,CAAC,CAAC,KAAK,EACjF,iBAAiB,CAClB,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9C,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,uBAAgB,CAAC,gBAAgB,EAAE,0BAA0B,CAAC,CAAC;IAC3E,CAAC;IAED,OAAO,OAAO,CAAC,MAAM,CAAC;AACxB,CAAC;AAEM,KAAK,UAAU,gBAAgB,CACpC,OAAuB;IAEvB,MAAM,SAAS,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAC3C,IAAI,SAAS,EAAE,IAAI,KAAK,qBAAqB,EAAE,CAAC;QAC9C,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,MAAM,SAAS,GAAG,WAAW,CAAC,OAAO,EAAE,kCAAyB,CAAC,CAAC;IAClE,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;IAC/E,OAAO,GAAG,EAAE,IAAI,IAAI,QAAQ,CAAC;AAC/B,CAAC"}
1
+ {"version":3,"file":"agent-deck-context.js","sourceRoot":"","sources":["../../src/lib/agent-deck-context.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"backend-api-error.d.ts","sourceRoot":"","sources":["../../src/lib/backend-api-error.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAElE,qBAAa,eAAgB,SAAQ,KAAK;aAGtB,MAAM,EAAE,MAAM;aACd,SAAS,CAAC,EAAE,uBAAuB;gBAFnD,OAAO,EAAE,MAAM,EACC,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,uBAAuB,YAAA;CAKtD;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,eAAe,CA0BnF"}
1
+ {"version":3,"file":"backend-api-error.d.ts","sourceRoot":"","sources":["../../src/lib/backend-api-error.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAElE,qBAAa,eAAgB,SAAQ,KAAK;aAGtB,MAAM,EAAE,MAAM;aACd,SAAS,CAAC,EAAE,uBAAuB;gBAFnD,OAAO,EAAE,MAAM,EACC,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,uBAAuB,YAAA;CAKtD;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,eAAe,CAyBnF"}
@@ -25,7 +25,6 @@ function parseBackendErrorBody(text, status) {
25
25
  message = String(body.message);
26
26
  }
27
27
  if (body.error_code) {
28
- // May be a trusted-session code or an execution-authority contract code.
29
28
  errorCode = body.error_code;
30
29
  }
31
30
  }
@@ -1 +1 @@
1
- {"version":3,"file":"backend-api-error.js","sourceRoot":"","sources":["../../src/lib/backend-api-error.ts"],"names":[],"mappings":";;;AAaA,sDA0BC;AArCD,MAAa,eAAgB,SAAQ,KAAK;IAGtB;IACA;IAHlB,YACE,OAAe,EACC,MAAc,EACd,SAAmC;QAEnD,KAAK,CAAC,OAAO,CAAC,CAAC;QAHC,WAAM,GAAN,MAAM,CAAQ;QACd,cAAS,GAAT,SAAS,CAA0B;QAGnD,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAChC,CAAC;CACF;AATD,0CASC;AAED,SAAgB,qBAAqB,CAAC,IAAY,EAAE,MAAc;IAChE,IAAI,OAAO,GAAG,sBAAsB,MAAM,EAAE,CAAC;IAC7C,IAAI,SAA8C,CAAC;IAEnD,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAI3B,CAAC;QACF,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;aAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACxB,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC;QACD,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,yEAAyE;YACzE,SAAS,GAAG,IAAI,CAAC,UAAqC,CAAC;QACzD,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YAChB,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QACxB,CAAC;IACH,CAAC;IAED,OAAO,IAAI,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;AACzD,CAAC"}
1
+ {"version":3,"file":"backend-api-error.js","sourceRoot":"","sources":["../../src/lib/backend-api-error.ts"],"names":[],"mappings":";;;AAaA,sDAyBC;AApCD,MAAa,eAAgB,SAAQ,KAAK;IAGtB;IACA;IAHlB,YACE,OAAe,EACC,MAAc,EACd,SAAmC;QAEnD,KAAK,CAAC,OAAO,CAAC,CAAC;QAHC,WAAM,GAAN,MAAM,CAAQ;QACd,cAAS,GAAT,SAAS,CAA0B;QAGnD,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAChC,CAAC;CACF;AATD,0CASC;AAED,SAAgB,qBAAqB,CAAC,IAAY,EAAE,MAAc;IAChE,IAAI,OAAO,GAAG,sBAAsB,MAAM,EAAE,CAAC;IAC7C,IAAI,SAA8C,CAAC;IAEnD,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAI3B,CAAC;QACF,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;aAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACxB,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC;QACD,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,SAAS,GAAG,IAAI,CAAC,UAAqC,CAAC;QACzD,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YAChB,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QACxB,CAAC;IACH,CAAC;IAED,OAAO,IAAI,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;AACzD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"bound-deck-scope.d.ts","sourceRoot":"","sources":["../../src/lib/bound-deck-scope.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAGrD,OAAO,EAAE,mBAAmB,EAAE,KAAK,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAEvF,qBAAa,mBAAoB,SAAQ,KAAK;aAG1B,SAAS,EAAE,uBAAuB;gBADlD,OAAO,SAAuC,EAC9B,SAAS,GAAE,uBAAiD;CAK/E;AAED,6FAA6F;AAC7F,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,cAAc,EACvB,EAAE,EAAE,eAAe,EACnB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,CAAC,CAqBjB;AAED,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,cAAc,EACvB,EAAE,EAAE,eAAe,EACnB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CAef;AAED,wBAAsB,4BAA4B,CAChD,OAAO,EAAE,cAAc,EACvB,EAAE,EAAE,eAAe,EACnB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC,CAYf;AAED,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,cAAc,EACvB,EAAE,EAAE,eAAe,EACnB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAef;AAED,iBAAS,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG;IAC/C,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,uBAAuB,CAAC;IACrC,IAAI,CAAC,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC;CAC/C,CAgBA;AAED,OAAO,EAAE,sBAAsB,EAAE,CAAC"}
1
+ {"version":3,"file":"bound-deck-scope.d.ts","sourceRoot":"","sources":["../../src/lib/bound-deck-scope.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAGrD,OAAO,EAAE,mBAAmB,EAAE,KAAK,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAEvF,qBAAa,mBAAoB,SAAQ,KAAK;aAG1B,SAAS,EAAE,uBAAuB;gBADlD,OAAO,SAAuC,EAC9B,SAAS,GAAE,uBAAiD;CAK/E;AAED,6FAA6F;AAC7F,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,cAAc,EACvB,EAAE,EAAE,eAAe,EACnB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,CAAC,CAajB;AAED,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,cAAc,EACvB,EAAE,EAAE,eAAe,EACnB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CAef;AAED,wBAAsB,4BAA4B,CAChD,OAAO,EAAE,cAAc,EACvB,EAAE,EAAE,eAAe,EACnB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC,CAYf;AAED,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,cAAc,EACvB,EAAE,EAAE,eAAe,EACnB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAef;AAED,iBAAS,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG;IAC/C,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,uBAAuB,CAAC;IACrC,IAAI,CAAC,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC;CAC/C,CAgBA;AAED,OAAO,EAAE,sBAAsB,EAAE,CAAC"}
@@ -23,10 +23,6 @@ async function requireBoundDeckScope(request, db, deckId) {
23
23
  if ((0, client_scope_1.isDashboardClient)(request)) {
24
24
  return deckId;
25
25
  }
26
- // Defense in depth: execution authority never mutates deck composition (NOT-86).
27
- if (request.requestPrincipal?.kind === 'execution-authority') {
28
- throw new BoundDeckScopeError('Control-plane decision required; do not hold the worker', 'INTERACTION_REQUIRED');
29
- }
30
26
  const boundDeckId = await (0, agent_deck_context_1.resolveAgentDeckId)(request, db);
31
27
  if (deckId !== boundDeckId) {
32
28
  throw new BoundDeckScopeError(`Agent may only modify bound deck ${boundDeckId}, not ${deckId}`);
@@ -1 +1 @@
1
- {"version":3,"file":"bound-deck-scope.js","sourceRoot":"","sources":["../../src/lib/bound-deck-scope.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bound-deck-scope.js","sourceRoot":"","sources":["../../src/lib/bound-deck-scope.ts"],"names":[],"mappings":"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"}
@@ -2,18 +2,4 @@ import type { FastifyRequest } from 'fastify';
2
2
  export declare function parseBearerToken(request: FastifyRequest | {
3
3
  headers: Record<string, unknown>;
4
4
  }): string | null;
5
- export type WorkspaceGrantBearer = {
6
- /** Raw secret used for hash lookup (`mcp-launch` canonical form). */
7
- secret: string;
8
- /** Present when the client sent `wgr_…:secret`. */
9
- claimedGrantId: string | null;
10
- };
11
- /**
12
- * Workspace grants authenticate with the raw secret (`mcp-launch`).
13
- * Some manual clients send `grantId:secret` (`wgr_…:…`) — accept both and
14
- * surface the claimed grant id so callers can verify it matches the lookup.
15
- */
16
- export declare function parseWorkspaceGrantBearer(token: string): WorkspaceGrantBearer;
17
- /** @deprecated Prefer parseWorkspaceGrantBearer — kept for call sites that only need the secret. */
18
- export declare function normalizeWorkspaceGrantSecret(token: string): string;
19
5
  //# sourceMappingURL=http-auth.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"http-auth.d.ts","sourceRoot":"","sources":["../../src/lib/http-auth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,cAAc,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GAAG,MAAM,GAAG,IAAI,CAM9G;AAED,MAAM,MAAM,oBAAoB,GAAG;IACjC,qEAAqE;IACrE,MAAM,EAAE,MAAM,CAAC;IACf,mDAAmD;IACnD,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,oBAAoB,CAa7E;AAED,oGAAoG;AACpG,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEnE"}
1
+ {"version":3,"file":"http-auth.d.ts","sourceRoot":"","sources":["../../src/lib/http-auth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,cAAc,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GAAG,MAAM,GAAG,IAAI,CAM9G"}
@@ -1,8 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.parseBearerToken = parseBearerToken;
4
- exports.parseWorkspaceGrantBearer = parseWorkspaceGrantBearer;
5
- exports.normalizeWorkspaceGrantSecret = normalizeWorkspaceGrantSecret;
6
4
  function parseBearerToken(request) {
7
5
  const header = request.headers.authorization;
8
6
  if (!header || typeof header !== 'string' || !header.startsWith('Bearer ')) {
@@ -10,27 +8,4 @@ function parseBearerToken(request) {
10
8
  }
11
9
  return header.slice('Bearer '.length).trim() || null;
12
10
  }
13
- /**
14
- * Workspace grants authenticate with the raw secret (`mcp-launch`).
15
- * Some manual clients send `grantId:secret` (`wgr_…:…`) — accept both and
16
- * surface the claimed grant id so callers can verify it matches the lookup.
17
- */
18
- function parseWorkspaceGrantBearer(token) {
19
- const trimmed = token.trim();
20
- const colon = trimmed.indexOf(':');
21
- if (colon > 0) {
22
- const maybeGrantId = trimmed.slice(0, colon);
23
- if (/^wgr_[A-Za-z0-9]+$/.test(maybeGrantId)) {
24
- return {
25
- secret: trimmed.slice(colon + 1),
26
- claimedGrantId: maybeGrantId,
27
- };
28
- }
29
- }
30
- return { secret: trimmed, claimedGrantId: null };
31
- }
32
- /** @deprecated Prefer parseWorkspaceGrantBearer — kept for call sites that only need the secret. */
33
- function normalizeWorkspaceGrantSecret(token) {
34
- return parseWorkspaceGrantBearer(token).secret;
35
- }
36
11
  //# sourceMappingURL=http-auth.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"http-auth.js","sourceRoot":"","sources":["../../src/lib/http-auth.ts"],"names":[],"mappings":";;AAEA,4CAMC;AAcD,8DAaC;AAGD,sEAEC;AAtCD,SAAgB,gBAAgB,CAAC,OAA8D;IAC7F,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC;IAC7C,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3E,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC;AACvD,CAAC;AASD;;;;GAIG;AACH,SAAgB,yBAAyB,CAAC,KAAa;IACrD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACd,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAC7C,IAAI,oBAAoB,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;YAC5C,OAAO;gBACL,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;gBAChC,cAAc,EAAE,YAAY;aAC7B,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;AACnD,CAAC;AAED,oGAAoG;AACpG,SAAgB,6BAA6B,CAAC,KAAa;IACzD,OAAO,yBAAyB,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;AACjD,CAAC"}
1
+ {"version":3,"file":"http-auth.js","sourceRoot":"","sources":["../../src/lib/http-auth.ts"],"names":[],"mappings":";;AAEA,4CAMC;AAND,SAAgB,gBAAgB,CAAC,OAA8D;IAC7F,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC;IAC7C,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3E,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC;AACvD,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Fastify decodes path params, so `/decks/x%2Fy/playbooks` yields `deckId === "x/y"`
3
+ * while the route-policy `[^/]+` still matched one encoded segment. Reject before scope checks.
4
+ */
5
+ export declare function invalidDeckIdPathSegment(deckId: string): boolean;
6
+ //# sourceMappingURL=invalid-deck-id-path-segment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invalid-deck-id-path-segment.d.ts","sourceRoot":"","sources":["../../src/lib/invalid-deck-id-path-segment.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEhE"}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.invalidDeckIdPathSegment = invalidDeckIdPathSegment;
4
+ /**
5
+ * Fastify decodes path params, so `/decks/x%2Fy/playbooks` yields `deckId === "x/y"`
6
+ * while the route-policy `[^/]+` still matched one encoded segment. Reject before scope checks.
7
+ */
8
+ function invalidDeckIdPathSegment(deckId) {
9
+ return deckId.includes('/');
10
+ }
11
+ //# sourceMappingURL=invalid-deck-id-path-segment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invalid-deck-id-path-segment.js","sourceRoot":"","sources":["../../src/lib/invalid-deck-id-path-segment.ts"],"names":[],"mappings":";;AAIA,4DAEC;AAND;;;GAGG;AACH,SAAgB,wBAAwB,CAAC,MAAc;IACrD,OAAO,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC9B,CAAC"}
@@ -32,7 +32,7 @@ async function requireAgentBoundDeck(request, db) {
32
32
  function requireAgentAdmin(request) {
33
33
  const sessionId = request.headers['x-agent-deck-session-id'];
34
34
  if (typeof sessionId !== 'string' || !sessionId.trim()) {
35
- throw new RoutePolicyError('GRANT_REQUIRED', 'No valid workspace grant');
35
+ throw new RoutePolicyError('GRANT_REQUIRED', 'No deck selected for this connection');
36
36
  }
37
37
  const session = request.server.trustedSessionStore.touchRuntimeSession(sessionId.trim());
38
38
  if (!session || session.mode !== 'agent-admin') {
@@ -43,7 +43,7 @@ async function getBoundDeckServices(request, db) {
43
43
  const deckId = await requireAgentBoundDeck(request, db);
44
44
  const deck = await db.getDeck(deckId);
45
45
  if (!deck) {
46
- throw new RoutePolicyError('GRANT_REQUIRED', 'No valid workspace grant');
46
+ throw new RoutePolicyError('GRANT_REQUIRED', 'No deck selected for this connection');
47
47
  }
48
48
  return deck.services ?? [];
49
49
  }
@@ -1 +1 @@
1
- {"version":3,"file":"route-policy.js","sourceRoot":"","sources":["../../src/lib/route-policy.ts"],"names":[],"mappings":";;;AAsBA,oDAEC;AAED,4CAIC;AAED,sDAKC;AAED,8CAUC;AAED,oDAUC;AA3DD,+CAI4B;AAE5B,6DAA0D;AAC1D,iDAAmD;AAGnD,MAAa,gBAAiB,SAAQ,KAAK;IAEvB;IADlB,YACkB,IAA6B,EAC7C,OAAe;QAEf,KAAK,CAAC,OAAO,CAAC,CAAC;QAHC,SAAI,GAAJ,IAAI,CAAyB;QAI7C,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IACjC,CAAC;CACF;AARD,4CAQC;AAED,SAAgB,oBAAoB,CAAC,KAAmB,EAAE,KAAuB;IAC/E,KAAK,CAAC,MAAM,CAAC,IAAA,kCAAyB,EAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAA,4BAAmB,EAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;AAC3G,CAAC;AAED,SAAgB,gBAAgB,CAAC,OAAuB;IACtD,IAAI,CAAC,IAAA,gCAAiB,EAAC,OAAO,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,gBAAgB,CAAC,oBAAoB,EAAE,mCAAmC,CAAC,CAAC;IACxF,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,qBAAqB,CACzC,OAAuB,EACvB,EAAmB;IAEnB,OAAO,IAAA,uCAAkB,EAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AACzC,CAAC;AAED,SAAgB,iBAAiB,CAAC,OAAuB;IACvD,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;IAC7D,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;QACvD,MAAM,IAAI,gBAAgB,CAAC,gBAAgB,EAAE,0BAA0B,CAAC,CAAC;IAC3E,CAAC;IAED,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;IACzF,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;QAC/C,MAAM,IAAI,gBAAgB,CAAC,gBAAgB,EAAE,kCAAkC,CAAC,CAAC;IACnF,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,oBAAoB,CACxC,OAAuB,EACvB,EAAmB;IAEnB,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IACxD,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACtC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,gBAAgB,CAAC,gBAAgB,EAAE,0BAA0B,CAAC,CAAC;IAC3E,CAAC;IACD,OAAO,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;AAC7B,CAAC"}
1
+ {"version":3,"file":"route-policy.js","sourceRoot":"","sources":["../../src/lib/route-policy.ts"],"names":[],"mappings":";;;AAsBA,oDAEC;AAED,4CAIC;AAED,sDAKC;AAED,8CAUC;AAED,oDAUC;AA3DD,+CAI4B;AAE5B,6DAA0D;AAC1D,iDAAmD;AAGnD,MAAa,gBAAiB,SAAQ,KAAK;IAEvB;IADlB,YACkB,IAA6B,EAC7C,OAAe;QAEf,KAAK,CAAC,OAAO,CAAC,CAAC;QAHC,SAAI,GAAJ,IAAI,CAAyB;QAI7C,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IACjC,CAAC;CACF;AARD,4CAQC;AAED,SAAgB,oBAAoB,CAAC,KAAmB,EAAE,KAAuB;IAC/E,KAAK,CAAC,MAAM,CAAC,IAAA,kCAAyB,EAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAA,4BAAmB,EAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;AAC3G,CAAC;AAED,SAAgB,gBAAgB,CAAC,OAAuB;IACtD,IAAI,CAAC,IAAA,gCAAiB,EAAC,OAAO,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,gBAAgB,CAAC,oBAAoB,EAAE,mCAAmC,CAAC,CAAC;IACxF,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,qBAAqB,CACzC,OAAuB,EACvB,EAAmB;IAEnB,OAAO,IAAA,uCAAkB,EAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AACzC,CAAC;AAED,SAAgB,iBAAiB,CAAC,OAAuB;IACvD,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;IAC7D,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;QACvD,MAAM,IAAI,gBAAgB,CAAC,gBAAgB,EAAE,sCAAsC,CAAC,CAAC;IACvF,CAAC;IAED,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;IACzF,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;QAC/C,MAAM,IAAI,gBAAgB,CAAC,gBAAgB,EAAE,kCAAkC,CAAC,CAAC;IACnF,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,oBAAoB,CACxC,OAAuB,EACvB,EAAmB;IAEnB,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IACxD,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACtC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,gBAAgB,CAAC,gBAAgB,EAAE,sCAAsC,CAAC,CAAC;IACvF,CAAC;IACD,OAAO,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;AAC7B,CAAC"}
@@ -43,24 +43,17 @@ export declare class AgentDeckMCPServer {
43
43
  private setupRoutes;
44
44
  private getSessionIdHeader;
45
45
  private refreshRuntimeSession;
46
- private parseGrantBearer;
47
- private parseAuthorityBearerCreds;
48
46
  private sendGrantRequired;
49
- private sendAuthorityError;
50
- private authenticateExecutionAuthority;
51
- private authenticateTrustedSession;
47
+ private authenticateLaunchDeck;
52
48
  private disconnectTrustedSession;
53
49
  /**
54
- * Re-validate workspace grant or execution authority on every follow-up MCP HTTP request.
55
- * Fail closed with 401 — do not destroy the transport session so a correct
56
- * Bearer on the next attempt can succeed.
57
- * AGENT_DECK_MCP_SKIP_GRANT_AUTH=1 only relaxes *missing* Bearer (unit tests).
50
+ * Re-validate launch deck on every follow-up MCP HTTP request.
51
+ * Fail closed with 401 — do not destroy the transport session so a
52
+ * correct credential on the next attempt can succeed.
53
+ * AGENT_DECK_MCP_SKIP_GRANT_AUTH=1 only relaxes *missing* deck header (unit tests).
58
54
  */
59
55
  private requireFollowUpGrant;
60
- /**
61
- * @deprecated Legacy pre-bind from deck header — replaced by grant authentication.
62
- */
63
- private preBindSessionDeck;
56
+ private sendLaunchDeckInvalid;
64
57
  private handleMcpPost;
65
58
  private handleMcpSessionRequest;
66
59
  start(): Promise<express.Application>;
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":"AAQA,OAAO,OAA8B,MAAM,SAAS,CAAC;AAarD,OAAO,EAAE,cAAc,EAAyB,MAAM,qBAAqB,CAAC;AAqB5E,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,GAAG,CAAsB;IACjC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,WAAW,CAAiB;IACpC,OAAO,CAAC,QAAQ,CAAiC;IACjD,mFAAmF;IACnF,OAAO,CAAC,wBAAwB,CAAwB;IACxD,mFAAmF;IACnF,OAAO,CAAC,cAAc,CAAyB;IAC/C,uFAAuF;IACvF,OAAO,CAAC,cAAc,CAA6B;IACnD,OAAO,CAAC,aAAa,CAA6B;IAElD,OAAO,KAAK,MAAM,GAKjB;gBAGC,IAAI,GAAE,MAAa,EACnB,UAAU,GAAE,MAAgC,EAC5C,WAAW,CAAC,EAAE,cAAc,EAC5B,IAAI,GAAE,MAAoB;IAiB5B;;;OAGG;IACH,OAAO,CAAC,eAAe;YAYT,SAAS;YAsBT,mBAAmB;YAoBnB,mBAAmB;IAqCjC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAS;IAElD,iFAAiF;IACjF,OAAO,CAAC,gBAAgB;IAuBxB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CAAS;IAEtD,mFAAmF;IACnF,OAAO,CAAC,MAAM,CAAC,mBAAmB;YAWpB,qBAAqB;YAsBrB,cAAc;YA4Cd,cAAc;IAQ5B,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,SAAS;IAIjB,6EAA6E;IAC7E,OAAO,CAAC,YAAY;YAYN,mBAAmB;IAkCjC,OAAO,CAAC,UAAU;IAwBlB,OAAO,CAAC,cAAc;IA8MtB,OAAO,CAAC,WAAW;IA4CnB,OAAO,CAAC,kBAAkB;YAKZ,qBAAqB;IAuBnC,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,yBAAyB;IAOjC,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,kBAAkB;YAQZ,8BAA8B;YAiD9B,0BAA0B;YA8C1B,wBAAwB;IAgBtC;;;;;OAKG;YACW,oBAAoB;IAyClC;;OAEG;IACH,OAAO,CAAC,kBAAkB;YAIZ,aAAa;YA8Hb,uBAAuB;IAqB/B,KAAK;IAiCL,IAAI;CAeX"}
1
+ {"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":"AAUA,OAAO,OAA8B,MAAM,SAAS,CAAC;AAWrD,OAAO,EAAE,cAAc,EAAyB,MAAM,qBAAqB,CAAC;AA2B5E,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,GAAG,CAAsB;IACjC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,WAAW,CAAiB;IACpC,OAAO,CAAC,QAAQ,CAAiC;IACjD,mFAAmF;IACnF,OAAO,CAAC,wBAAwB,CAAwB;IACxD,mFAAmF;IACnF,OAAO,CAAC,cAAc,CAAyB;IAC/C,uFAAuF;IACvF,OAAO,CAAC,cAAc,CAA6B;IACnD,OAAO,CAAC,aAAa,CAA6B;IAElD,OAAO,KAAK,MAAM,GAKjB;gBAGC,IAAI,GAAE,MAAa,EACnB,UAAU,GAAE,MAAgC,EAC5C,WAAW,CAAC,EAAE,cAAc,EAC5B,IAAI,GAAE,MAAoB;IAiB5B;;;OAGG;IACH,OAAO,CAAC,eAAe;YAYT,SAAS;YAsBT,mBAAmB;YAoBnB,mBAAmB;IAiCjC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAS;IAElD,iFAAiF;IACjF,OAAO,CAAC,gBAAgB;IAoBxB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CAAS;IAEtD,mFAAmF;IACnF,OAAO,CAAC,MAAM,CAAC,mBAAmB;YAWpB,qBAAqB;YAmBrB,cAAc;YA4Cd,cAAc;IAQ5B,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,SAAS;IAIjB,6EAA6E;IAC7E,OAAO,CAAC,YAAY;YAYN,mBAAmB;IAmCjC,OAAO,CAAC,UAAU;IAwBlB,OAAO,CAAC,cAAc;IA8MtB,OAAO,CAAC,WAAW;IA4CnB,OAAO,CAAC,kBAAkB;YAKZ,qBAAqB;IAoBnC,OAAO,CAAC,iBAAiB;YAQX,sBAAsB;YA0DtB,wBAAwB;IActC;;;;;OAKG;YACW,oBAAoB;IAiClC,OAAO,CAAC,qBAAqB;YAQf,aAAa;YA8Gb,uBAAuB;IAqB/B,KAAK;IAiCL,IAAI;CAeX"}