@agent-deck/backend 1.8.1 → 1.9.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 (182) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/cli-runtime.d.ts.map +1 -1
  3. package/dist/cli-runtime.js +5 -5
  4. package/dist/cli-runtime.js.map +1 -1
  5. package/dist/config/mcp-endpoint.d.ts +6 -0
  6. package/dist/config/mcp-endpoint.d.ts.map +1 -0
  7. package/dist/config/mcp-endpoint.js +19 -0
  8. package/dist/config/mcp-endpoint.js.map +1 -0
  9. package/dist/export-import/import-bundle.d.ts +12 -1
  10. package/dist/export-import/import-bundle.d.ts.map +1 -1
  11. package/dist/export-import/import-bundle.js +11 -3
  12. package/dist/export-import/import-bundle.js.map +1 -1
  13. package/dist/lib/agent-deck-context.d.ts +1 -1
  14. package/dist/lib/agent-deck-context.d.ts.map +1 -1
  15. package/dist/lib/agent-deck-context.js +4 -17
  16. package/dist/lib/agent-deck-context.js.map +1 -1
  17. package/dist/lib/backend-api-error.d.ts.map +1 -1
  18. package/dist/lib/backend-api-error.js +0 -1
  19. package/dist/lib/backend-api-error.js.map +1 -1
  20. package/dist/lib/bound-deck-scope.d.ts.map +1 -1
  21. package/dist/lib/bound-deck-scope.js +0 -4
  22. package/dist/lib/bound-deck-scope.js.map +1 -1
  23. package/dist/lib/http-auth.d.ts +0 -14
  24. package/dist/lib/http-auth.d.ts.map +1 -1
  25. package/dist/lib/http-auth.js +0 -25
  26. package/dist/lib/http-auth.js.map +1 -1
  27. package/dist/lib/invalid-deck-id-path-segment.d.ts +6 -0
  28. package/dist/lib/invalid-deck-id-path-segment.d.ts.map +1 -0
  29. package/dist/lib/invalid-deck-id-path-segment.js +11 -0
  30. package/dist/lib/invalid-deck-id-path-segment.js.map +1 -0
  31. package/dist/lib/route-policy.js +2 -2
  32. package/dist/lib/route-policy.js.map +1 -1
  33. package/dist/mcp-server.d.ts +11 -13
  34. package/dist/mcp-server.d.ts.map +1 -1
  35. package/dist/mcp-server.js +124 -161
  36. package/dist/mcp-server.js.map +1 -1
  37. package/dist/mcp-session-binding.d.ts +7 -15
  38. package/dist/mcp-session-binding.d.ts.map +1 -1
  39. package/dist/mcp-session-binding.js +14 -30
  40. package/dist/mcp-session-binding.js.map +1 -1
  41. package/dist/mcp-tools/policy.d.ts +0 -3
  42. package/dist/mcp-tools/policy.d.ts.map +1 -1
  43. package/dist/mcp-tools/policy.js +6 -43
  44. package/dist/mcp-tools/policy.js.map +1 -1
  45. package/dist/mcp-tools/register.d.ts +1 -5
  46. package/dist/mcp-tools/register.d.ts.map +1 -1
  47. package/dist/mcp-tools/register.js +100 -104
  48. package/dist/mcp-tools/register.js.map +1 -1
  49. package/dist/mcp-tools/test-harness.d.ts +22 -5
  50. package/dist/mcp-tools/test-harness.d.ts.map +1 -1
  51. package/dist/mcp-tools/test-harness.js +64 -23
  52. package/dist/mcp-tools/test-harness.js.map +1 -1
  53. package/dist/models/database.d.ts +2 -0
  54. package/dist/models/database.d.ts.map +1 -1
  55. package/dist/models/database.js +16 -0
  56. package/dist/models/database.js.map +1 -1
  57. package/dist/playbooks/playbook-manager.d.ts.map +1 -1
  58. package/dist/playbooks/playbook-manager.js +9 -4
  59. package/dist/playbooks/playbook-manager.js.map +1 -1
  60. package/dist/playbooks/stub-sync.d.ts +9 -0
  61. package/dist/playbooks/stub-sync.d.ts.map +1 -1
  62. package/dist/playbooks/stub-sync.js +51 -12
  63. package/dist/playbooks/stub-sync.js.map +1 -1
  64. package/dist/routes/decks.d.ts.map +1 -1
  65. package/dist/routes/decks.js +8 -52
  66. package/dist/routes/decks.js.map +1 -1
  67. package/dist/routes/export-import.d.ts.map +1 -1
  68. package/dist/routes/export-import.js +3 -5
  69. package/dist/routes/export-import.js.map +1 -1
  70. package/dist/routes/launch.d.ts +8 -0
  71. package/dist/routes/launch.d.ts.map +1 -0
  72. package/dist/routes/launch.js +35 -0
  73. package/dist/routes/launch.js.map +1 -0
  74. package/dist/routes/scope.d.ts.map +1 -1
  75. package/dist/routes/scope.js +1 -39
  76. package/dist/routes/scope.js.map +1 -1
  77. package/dist/routes/services.d.ts.map +1 -1
  78. package/dist/routes/services.js +1 -7
  79. package/dist/routes/services.js.map +1 -1
  80. package/dist/routes/trusted-session.d.ts.map +1 -1
  81. package/dist/routes/trusted-session.js +50 -152
  82. package/dist/routes/trusted-session.js.map +1 -1
  83. package/dist/scope/live-display-registry.d.ts +0 -2
  84. package/dist/scope/live-display-registry.d.ts.map +1 -1
  85. package/dist/scope/live-display-registry.js +0 -1
  86. package/dist/scope/live-display-registry.js.map +1 -1
  87. package/dist/server/index.d.ts +0 -2
  88. package/dist/server/index.d.ts.map +1 -1
  89. package/dist/server/index.js +2 -5
  90. package/dist/server/index.js.map +1 -1
  91. package/dist/services/service-manager.d.ts +5 -1
  92. package/dist/services/service-manager.d.ts.map +1 -1
  93. package/dist/services/service-manager.js +27 -3
  94. package/dist/services/service-manager.js.map +1 -1
  95. package/dist/store/deck-file.d.ts +55 -0
  96. package/dist/store/deck-file.d.ts.map +1 -0
  97. package/dist/store/deck-file.js +163 -0
  98. package/dist/store/deck-file.js.map +1 -0
  99. package/dist/store/index.d.ts +1 -0
  100. package/dist/store/index.d.ts.map +1 -1
  101. package/dist/store/index.js +1 -0
  102. package/dist/store/index.js.map +1 -1
  103. package/dist/store/migrate.d.ts.map +1 -1
  104. package/dist/store/migrate.js +2 -12
  105. package/dist/store/migrate.js.map +1 -1
  106. package/dist/test/auth-fixtures.d.ts +1 -1
  107. package/dist/test/auth-fixtures.d.ts.map +1 -1
  108. package/dist/test/auth-fixtures.js +2 -11
  109. package/dist/test/auth-fixtures.js.map +1 -1
  110. package/dist/trusted-session/auth.d.ts +1 -7
  111. package/dist/trusted-session/auth.d.ts.map +1 -1
  112. package/dist/trusted-session/auth.js +7 -54
  113. package/dist/trusted-session/auth.js.map +1 -1
  114. package/dist/trusted-session/policy-hook.d.ts.map +1 -1
  115. package/dist/trusted-session/policy-hook.js +1 -51
  116. package/dist/trusted-session/policy-hook.js.map +1 -1
  117. package/dist/trusted-session/route-policy-registry.d.ts.map +1 -1
  118. package/dist/trusted-session/route-policy-registry.js +5 -56
  119. package/dist/trusted-session/route-policy-registry.js.map +1 -1
  120. package/dist/trusted-session/store.d.ts +12 -45
  121. package/dist/trusted-session/store.d.ts.map +1 -1
  122. package/dist/trusted-session/store.js +66 -208
  123. package/dist/trusted-session/store.js.map +1 -1
  124. package/dist/vault/credential-manager.d.ts +6 -2
  125. package/dist/vault/credential-manager.d.ts.map +1 -1
  126. package/dist/vault/credential-manager.js +21 -14
  127. package/dist/vault/credential-manager.js.map +1 -1
  128. package/package.json +2 -2
  129. package/static-ui/assets/{index-DhP_UPyM.js → index-Bb9ckehB.js} +1 -1
  130. package/static-ui/index.html +1 -1
  131. package/dist/execution-authority/bearer.d.ts +0 -15
  132. package/dist/execution-authority/bearer.d.ts.map +0 -1
  133. package/dist/execution-authority/bearer.js +0 -35
  134. package/dist/execution-authority/bearer.js.map +0 -1
  135. package/dist/execution-authority/index.d.ts +0 -6
  136. package/dist/execution-authority/index.d.ts.map +0 -1
  137. package/dist/execution-authority/index.js +0 -8
  138. package/dist/execution-authority/index.js.map +0 -1
  139. package/dist/execution-authority/ledger.d.ts +0 -85
  140. package/dist/execution-authority/ledger.d.ts.map +0 -1
  141. package/dist/execution-authority/ledger.js +0 -507
  142. package/dist/execution-authority/ledger.js.map +0 -1
  143. package/dist/execution-authority/store.d.ts +0 -55
  144. package/dist/execution-authority/store.d.ts.map +0 -1
  145. package/dist/execution-authority/store.js +0 -256
  146. package/dist/execution-authority/store.js.map +0 -1
  147. package/dist/execution-authority/types.d.ts +0 -119
  148. package/dist/execution-authority/types.d.ts.map +0 -1
  149. package/dist/execution-authority/types.js +0 -9
  150. package/dist/execution-authority/types.js.map +0 -1
  151. package/dist/lib/execution-authority-http.d.ts +0 -23
  152. package/dist/lib/execution-authority-http.d.ts.map +0 -1
  153. package/dist/lib/execution-authority-http.js +0 -101
  154. package/dist/lib/execution-authority-http.js.map +0 -1
  155. package/dist/mcp-stdio.d.ts +0 -2
  156. package/dist/mcp-stdio.d.ts.map +0 -1
  157. package/dist/mcp-stdio.js.map +0 -1
  158. package/dist/playbooks/playbook-parser.d.ts +0 -8
  159. package/dist/playbooks/playbook-parser.d.ts.map +0 -1
  160. package/dist/playbooks/playbook-parser.js +0 -76
  161. package/dist/playbooks/playbook-parser.js.map +0 -1
  162. package/dist/playbooks/playbook-service.d.ts +0 -9
  163. package/dist/playbooks/playbook-service.d.ts.map +0 -1
  164. package/dist/playbooks/playbook-service.js +0 -107
  165. package/dist/playbooks/playbook-service.js.map +0 -1
  166. package/dist/routes/execution-authority.d.ts +0 -8
  167. package/dist/routes/execution-authority.d.ts.map +0 -1
  168. package/dist/routes/execution-authority.js +0 -506
  169. package/dist/routes/execution-authority.js.map +0 -1
  170. package/dist/scope/bindings-sidecar.d.ts +0 -9
  171. package/dist/scope/bindings-sidecar.d.ts.map +0 -1
  172. package/dist/scope/bindings-sidecar.js +0 -57
  173. package/dist/scope/bindings-sidecar.js.map +0 -1
  174. package/dist/scope/repo-deck.d.ts +0 -10
  175. package/dist/scope/repo-deck.d.ts.map +0 -1
  176. package/dist/scope/repo-deck.js +0 -63
  177. package/dist/scope/repo-deck.js.map +0 -1
  178. package/dist/test-local-mcp-e2e.d.ts +0 -3
  179. package/dist/test-local-mcp-e2e.d.ts.map +0 -1
  180. package/dist/test-local-mcp-e2e.js +0 -104
  181. package/dist/test-local-mcp-e2e.js.map +0 -1
  182. package/static-ui/favicon.png +0 -0
@@ -1,507 +0,0 @@
1
- "use strict";
2
- /**
3
- * In-memory execution-authority ledger (NOT-85 logic engine).
4
- * Durable SQLite wrapper: `ExecutionAuthorityStore` (NOT-86).
5
- */
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.ExecutionAuthorityLedger = void 0;
8
- const node_crypto_1 = require("node:crypto");
9
- const shared_1 = require("@agent-deck/shared");
10
- const store_1 = require("../trusted-session/store");
11
- function newId(kind) {
12
- return (0, shared_1.prefixTrustedId)(kind, (0, node_crypto_1.randomUUID)());
13
- }
14
- function cloneAuthority(authority) {
15
- return {
16
- ...authority,
17
- allowedServices: [...authority.allowedServices],
18
- allowedTools: authority.allowedTools.map((t) => ({ ...t })),
19
- };
20
- }
21
- function toolsEqual(a, b) {
22
- if (a.length !== b.length)
23
- return false;
24
- const key = (t) => `${t.serviceId}\0${t.toolName}`;
25
- const sortedA = [...a].map(key).sort();
26
- const sortedB = [...b].map(key).sort();
27
- return sortedA.every((v, i) => v === sortedB[i]);
28
- }
29
- function mintParamsMatch(existing, input) {
30
- const storedTtlMs = Date.parse(existing.expiresAt) - Date.parse(existing.issuedAt);
31
- return (existing.runId === input.runId &&
32
- existing.attemptId === input.attemptId &&
33
- existing.deckId === input.deckId &&
34
- existing.audience === input.audience &&
35
- storedTtlMs === input.ttlMs &&
36
- existing.allowedServices.length === input.allowedServices.length &&
37
- existing.allowedServices.every((s) => input.allowedServices.includes(s)) &&
38
- toolsEqual(existing.allowedTools, input.allowedTools));
39
- }
40
- /**
41
- * Deck-side authorization ledger (skeleton). Authoritative for enrollment and
42
- * execution authority; does not model Dealer run lifecycle.
43
- */
44
- class ExecutionAuthorityLedger {
45
- enrollments = new Map();
46
- enrollmentSecretHashes = new Map();
47
- authorities = new Map();
48
- secretHashes = new Map();
49
- mintIndex = new Map(); // enrollmentId\0idempotencyKey -> authorityId
50
- audit = [];
51
- now;
52
- constructor(options = {}) {
53
- this.now = options.now ?? (() => new Date());
54
- }
55
- exportState() {
56
- return {
57
- enrollments: [...this.enrollments.values()].map((e) => ({
58
- ...e,
59
- allowedDeckIds: [...e.allowedDeckIds],
60
- })),
61
- enrollmentSecretHashes: [...this.enrollmentSecretHashes.entries()].map(([enrollmentId, secretHash]) => ({ enrollmentId, secretHash })),
62
- authorities: [...this.authorities.values()].map(cloneAuthority),
63
- secretHashes: [...this.secretHashes.entries()].map(([authorityId, secretHash]) => ({
64
- authorityId,
65
- secretHash,
66
- })),
67
- mintIndex: [...this.mintIndex.entries()].map(([key, authorityId]) => {
68
- const [enrollmentId, idempotencyKey] = key.split('\0');
69
- return { enrollmentId, idempotencyKey, authorityId };
70
- }),
71
- audit: this.audit.map((event) => ({
72
- ...event,
73
- correlation: { ...event.correlation },
74
- detail: event.detail ? { ...event.detail } : undefined,
75
- })),
76
- };
77
- }
78
- replaceState(state) {
79
- this.enrollments.clear();
80
- this.enrollmentSecretHashes.clear();
81
- this.authorities.clear();
82
- this.secretHashes.clear();
83
- this.mintIndex.clear();
84
- this.audit.length = 0;
85
- for (const enrollment of state.enrollments) {
86
- this.enrollments.set(enrollment.enrollmentId, {
87
- ...enrollment,
88
- allowedDeckIds: [...enrollment.allowedDeckIds],
89
- });
90
- }
91
- for (const row of state.enrollmentSecretHashes) {
92
- this.enrollmentSecretHashes.set(row.enrollmentId, row.secretHash);
93
- }
94
- for (const authority of state.authorities) {
95
- this.authorities.set(authority.authorityId, cloneAuthority(authority));
96
- }
97
- for (const row of state.secretHashes) {
98
- this.secretHashes.set(row.authorityId, row.secretHash);
99
- }
100
- for (const row of state.mintIndex) {
101
- this.mintIndex.set(`${row.enrollmentId}\0${row.idempotencyKey}`, row.authorityId);
102
- }
103
- for (const event of state.audit) {
104
- this.audit.push({
105
- ...event,
106
- correlation: { ...event.correlation },
107
- detail: event.detail ? { ...event.detail } : undefined,
108
- });
109
- }
110
- }
111
- getEnrollment(enrollmentId) {
112
- const enrollment = this.enrollments.get(enrollmentId);
113
- if (!enrollment)
114
- return undefined;
115
- return { ...enrollment, allowedDeckIds: [...enrollment.allowedDeckIds] };
116
- }
117
- listEnrollments() {
118
- return [...this.enrollments.values()].map((e) => ({
119
- ...e,
120
- allowedDeckIds: [...e.allowedDeckIds],
121
- }));
122
- }
123
- verifyEnrollmentSecret(enrollmentId, secret) {
124
- const hash = this.enrollmentSecretHashes.get(enrollmentId);
125
- if (!hash)
126
- return false;
127
- return (0, store_1.verifyGrantSecret)(secret, hash);
128
- }
129
- verifyAuthoritySecret(authorityId, secret) {
130
- const hash = this.secretHashes.get(authorityId);
131
- if (!hash)
132
- return false;
133
- return (0, store_1.verifyGrantSecret)(secret, hash);
134
- }
135
- enrollCoordinator(input) {
136
- const enrollment = {
137
- enrollmentId: newId('enr'),
138
- coordinatorId: input.coordinatorId,
139
- status: 'active',
140
- allowedDeckIds: [...input.allowedDeckIds],
141
- createdAt: this.now().toISOString(),
142
- revokedAt: null,
143
- };
144
- const enrollmentSecret = `enrs_${(0, node_crypto_1.randomUUID)().replace(/-/g, '')}${(0, node_crypto_1.randomUUID)().replace(/-/g, '')}`;
145
- this.enrollments.set(enrollment.enrollmentId, enrollment);
146
- this.enrollmentSecretHashes.set(enrollment.enrollmentId, (0, store_1.hashGrantSecret)(enrollmentSecret));
147
- this.pushAudit('enrollment_created', {
148
- enrollmentId: enrollment.enrollmentId,
149
- }, { coordinatorId: input.coordinatorId });
150
- return {
151
- ok: true,
152
- data: {
153
- enrollment: {
154
- ...enrollment,
155
- allowedDeckIds: [...enrollment.allowedDeckIds],
156
- },
157
- enrollmentSecret,
158
- },
159
- };
160
- }
161
- revokeEnrollment(enrollmentId) {
162
- const enrollment = this.enrollments.get(enrollmentId);
163
- if (!enrollment) {
164
- return {
165
- ok: false,
166
- error_code: 'COORDINATOR_NOT_ENROLLED',
167
- message: 'Unknown enrollment',
168
- correlation: { enrollmentId },
169
- };
170
- }
171
- if (enrollment.status === 'revoked') {
172
- return { ok: true, data: { enrollmentId } };
173
- }
174
- enrollment.status = 'revoked';
175
- enrollment.revokedAt = this.now().toISOString();
176
- this.pushAudit('enrollment_revoked', { enrollmentId });
177
- for (const stored of this.authorities.values()) {
178
- if (stored.enrollmentId !== enrollmentId)
179
- continue;
180
- const authority = this.refreshAuthorityStatus(stored.authorityId);
181
- if (!authority || authority.status !== 'live')
182
- continue;
183
- authority.status = 'revoked';
184
- this.pushAudit('authority_revoked', {
185
- enrollmentId,
186
- authorityId: authority.authorityId,
187
- runId: authority.runId,
188
- attemptId: authority.attemptId,
189
- deckId: authority.deckId,
190
- }, { reason: 'enrollment_revoked' });
191
- }
192
- return { ok: true, data: { enrollmentId } };
193
- }
194
- mintAuthority(input) {
195
- if (!(input.ttlMs > 0)) {
196
- return {
197
- ok: false,
198
- error_code: 'INVALID_MINT_REQUEST',
199
- message: 'ttlMs must be positive',
200
- reason: 'ttl_non_positive',
201
- correlation: { enrollmentId: input.enrollmentId },
202
- };
203
- }
204
- const enrollment = this.enrollments.get(input.enrollmentId);
205
- if (!enrollment) {
206
- return {
207
- ok: false,
208
- error_code: 'COORDINATOR_NOT_ENROLLED',
209
- message: 'Unknown enrollment',
210
- correlation: { enrollmentId: input.enrollmentId },
211
- };
212
- }
213
- if (enrollment.status !== 'active') {
214
- return {
215
- ok: false,
216
- error_code: 'ENROLLMENT_REVOKED',
217
- message: 'Enrollment is revoked',
218
- correlation: { enrollmentId: input.enrollmentId },
219
- };
220
- }
221
- if (!enrollment.allowedDeckIds.includes(input.deckId)) {
222
- return {
223
- ok: false,
224
- error_code: 'RESOURCE_OUT_OF_SCOPE',
225
- message: 'Deck not permitted for this enrollment',
226
- reason: 'deck_not_permitted',
227
- correlation: { enrollmentId: input.enrollmentId, deckId: input.deckId },
228
- };
229
- }
230
- const mintKey = `${input.enrollmentId}\0${input.idempotencyKey}`;
231
- const existingId = this.mintIndex.get(mintKey);
232
- if (existingId) {
233
- const existing = this.refreshAuthorityStatus(existingId);
234
- if (!mintParamsMatch(existing, input)) {
235
- return {
236
- ok: false,
237
- error_code: 'IDEMPOTENCY_KEY_CONFLICT',
238
- message: 'Idempotency key reused with different mint parameters',
239
- reason: 'params_mismatch',
240
- correlation: {
241
- enrollmentId: existing.enrollmentId,
242
- authorityId: existing.authorityId,
243
- runId: existing.runId,
244
- attemptId: existing.attemptId,
245
- deckId: existing.deckId,
246
- },
247
- };
248
- }
249
- if (existing.status === 'live') {
250
- // Idempotent remint does not re-issue the secret (Dealer must retain launcher handle).
251
- return {
252
- ok: true,
253
- data: {
254
- authority: cloneAuthority(existing),
255
- authoritySecret: null,
256
- secretIssued: false,
257
- },
258
- };
259
- }
260
- return {
261
- ok: false,
262
- error_code: existing.status === 'expired' ? 'AUTHORITY_EXPIRED' : 'AUTHORITY_REVOKED',
263
- message: `Authority already ${existing.status}`,
264
- reason: existing.status === 'revoked' ? 'explicit_revoke' : undefined,
265
- correlation: {
266
- enrollmentId: existing.enrollmentId,
267
- authorityId: existing.authorityId,
268
- runId: existing.runId,
269
- attemptId: existing.attemptId,
270
- deckId: existing.deckId,
271
- },
272
- };
273
- }
274
- const issuedAt = this.now();
275
- const authority = {
276
- authorityId: newId('authz'),
277
- enrollmentId: input.enrollmentId,
278
- runId: input.runId,
279
- attemptId: input.attemptId,
280
- deckId: input.deckId,
281
- audience: input.audience,
282
- allowedServices: [...input.allowedServices],
283
- allowedTools: input.allowedTools.map((t) => ({ ...t })),
284
- issuedAt: issuedAt.toISOString(),
285
- expiresAt: new Date(issuedAt.getTime() + input.ttlMs).toISOString(),
286
- status: 'live',
287
- idempotencyKey: input.idempotencyKey,
288
- };
289
- const authoritySecret = `seas_${(0, node_crypto_1.randomUUID)().replace(/-/g, '')}${(0, node_crypto_1.randomUUID)().replace(/-/g, '')}`;
290
- this.authorities.set(authority.authorityId, authority);
291
- this.secretHashes.set(authority.authorityId, (0, store_1.hashGrantSecret)(authoritySecret));
292
- this.mintIndex.set(mintKey, authority.authorityId);
293
- this.pushAudit('authority_minted', {
294
- enrollmentId: authority.enrollmentId,
295
- authorityId: authority.authorityId,
296
- runId: authority.runId,
297
- attemptId: authority.attemptId,
298
- deckId: authority.deckId,
299
- });
300
- return {
301
- ok: true,
302
- data: {
303
- authority: cloneAuthority(authority),
304
- authoritySecret,
305
- secretIssued: true,
306
- },
307
- };
308
- }
309
- /**
310
- * Non-auditing lookup for ownership / existence checks.
311
- * Does not refresh expiry (avoids authority_expired side effects during probes).
312
- */
313
- peekAuthority(authorityId) {
314
- const authority = this.authorities.get(authorityId);
315
- return authority ? cloneAuthority(authority) : undefined;
316
- }
317
- inspectAuthority(authorityId) {
318
- const authority = this.refreshAuthorityStatus(authorityId);
319
- if (!authority) {
320
- return {
321
- ok: false,
322
- error_code: 'AUTHORITY_UNKNOWN',
323
- message: 'Unknown authority',
324
- correlation: { authorityId },
325
- };
326
- }
327
- this.pushAudit('authority_inspected', {
328
- enrollmentId: authority.enrollmentId,
329
- authorityId: authority.authorityId,
330
- runId: authority.runId,
331
- attemptId: authority.attemptId,
332
- deckId: authority.deckId,
333
- });
334
- return { ok: true, data: cloneAuthority(authority) };
335
- }
336
- revokeAuthority(authorityId) {
337
- const authority = this.authorities.get(authorityId);
338
- if (!authority) {
339
- return {
340
- ok: false,
341
- error_code: 'AUTHORITY_UNKNOWN',
342
- message: 'Unknown authority',
343
- correlation: { authorityId },
344
- };
345
- }
346
- if (authority.status !== 'revoked') {
347
- authority.status = 'revoked';
348
- this.pushAudit('authority_revoked', {
349
- enrollmentId: authority.enrollmentId,
350
- authorityId: authority.authorityId,
351
- runId: authority.runId,
352
- attemptId: authority.attemptId,
353
- deckId: authority.deckId,
354
- }, { reason: 'explicit_revoke' });
355
- }
356
- return { ok: true, data: { authorityId } };
357
- }
358
- /**
359
- * Simulate one authorized Deck tool call under execution authority.
360
- * Never waits for human approval — returns INTERACTION_REQUIRED immediately.
361
- */
362
- invokeAuthorizedCall(input) {
363
- const authority = this.refreshAuthorityStatus(input.authorityId);
364
- const correlation = {
365
- authorityId: input.authorityId,
366
- };
367
- if (!authority) {
368
- return {
369
- ok: false,
370
- error_code: 'AUTHORITY_UNKNOWN',
371
- message: 'Unknown authority',
372
- correlation,
373
- };
374
- }
375
- correlation.enrollmentId = authority.enrollmentId;
376
- correlation.runId = authority.runId;
377
- correlation.attemptId = authority.attemptId;
378
- correlation.deckId = authority.deckId;
379
- const expectedHash = this.secretHashes.get(authority.authorityId);
380
- if (!expectedHash || !(0, store_1.verifyGrantSecret)(input.authoritySecret, expectedHash)) {
381
- this.pushAudit('call_denied', correlation, { reason: 'bad_secret' });
382
- return {
383
- ok: false,
384
- error_code: 'AUTHORITY_SECRET_INVALID',
385
- message: 'Invalid authority secret',
386
- correlation,
387
- };
388
- }
389
- if (input.audience !== authority.audience) {
390
- this.pushAudit('call_denied', correlation, {
391
- reason: 'audience_mismatch',
392
- expected: authority.audience,
393
- actual: input.audience,
394
- });
395
- return {
396
- ok: false,
397
- error_code: 'AUDIENCE_MISMATCH',
398
- message: 'Caller audience does not match authority audience',
399
- correlation,
400
- };
401
- }
402
- if (authority.status === 'expired') {
403
- this.pushAudit('call_denied', correlation, { reason: 'expired' });
404
- return {
405
- ok: false,
406
- error_code: 'AUTHORITY_EXPIRED',
407
- message: 'Authority expired',
408
- correlation,
409
- };
410
- }
411
- if (authority.status === 'revoked') {
412
- this.pushAudit('call_denied', correlation, { reason: 'revoked' });
413
- return {
414
- ok: false,
415
- error_code: 'AUTHORITY_REVOKED',
416
- message: 'Authority revoked',
417
- reason: 'explicit_revoke',
418
- correlation,
419
- };
420
- }
421
- if (input.requiresInteraction) {
422
- const requestId = newId('req');
423
- correlation.requestId = requestId;
424
- this.pushAudit('call_denied', correlation, { reason: 'interaction_required' });
425
- return {
426
- ok: false,
427
- error_code: 'INTERACTION_REQUIRED',
428
- message: 'Control-plane decision required; do not hold the worker',
429
- correlation,
430
- };
431
- }
432
- if (!this.toolAllowed(authority, input.serviceId, input.toolName)) {
433
- this.pushAudit('call_denied', correlation, {
434
- reason: 'tool_not_in_snapshot',
435
- serviceId: input.serviceId,
436
- toolName: input.toolName,
437
- });
438
- return {
439
- ok: false,
440
- error_code: 'RESOURCE_OUT_OF_SCOPE',
441
- message: 'Tool not in authority snapshot',
442
- reason: 'tool_not_in_snapshot',
443
- correlation,
444
- };
445
- }
446
- this.pushAudit('call_allowed', correlation, {
447
- serviceId: input.serviceId,
448
- toolName: input.toolName,
449
- });
450
- return {
451
- ok: true,
452
- data: {
453
- serviceId: input.serviceId,
454
- toolName: input.toolName,
455
- result: 'ok',
456
- },
457
- };
458
- }
459
- listAuditEvents(filter = {}) {
460
- return this.audit.filter((event) => {
461
- const c = event.correlation;
462
- if (filter.runId && c.runId !== filter.runId)
463
- return false;
464
- if (filter.attemptId && c.attemptId !== filter.attemptId)
465
- return false;
466
- if (filter.authorityId && c.authorityId !== filter.authorityId)
467
- return false;
468
- if (filter.enrollmentId && c.enrollmentId !== filter.enrollmentId)
469
- return false;
470
- if (filter.requestId && c.requestId !== filter.requestId)
471
- return false;
472
- return true;
473
- });
474
- }
475
- toolAllowed(authority, serviceId, toolName) {
476
- if (!authority.allowedServices.includes(serviceId))
477
- return false;
478
- return authority.allowedTools.some((t) => t.serviceId === serviceId && t.toolName === toolName);
479
- }
480
- refreshAuthorityStatus(authorityId) {
481
- const authority = this.authorities.get(authorityId);
482
- if (!authority)
483
- return undefined;
484
- if (authority.status === 'live' && Date.parse(authority.expiresAt) <= this.now().getTime()) {
485
- authority.status = 'expired';
486
- this.pushAudit('authority_expired', {
487
- enrollmentId: authority.enrollmentId,
488
- authorityId: authority.authorityId,
489
- runId: authority.runId,
490
- attemptId: authority.attemptId,
491
- deckId: authority.deckId,
492
- });
493
- }
494
- return authority;
495
- }
496
- pushAudit(kind, correlation, detail) {
497
- this.audit.push({
498
- eventId: newId('evt'),
499
- at: this.now().toISOString(),
500
- kind,
501
- correlation: { ...correlation },
502
- detail,
503
- });
504
- }
505
- }
506
- exports.ExecutionAuthorityLedger = ExecutionAuthorityLedger;
507
- //# sourceMappingURL=ledger.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ledger.js","sourceRoot":"","sources":["../../src/execution-authority/ledger.ts"],"names":[],"mappings":"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"}
@@ -1,55 +0,0 @@
1
- /**
2
- * Durable SQLite-backed execution-authority store (NOT-86).
3
- * Logic lives in ExecutionAuthorityLedger; this module hydrates/persists snapshots.
4
- */
5
- import type Database from 'better-sqlite3';
6
- import type { AuthorizedCallInput, ContractResult, CoordinatorEnrollment, EnrollCoordinatorResult, ExecutionAuthority, MintAuthorityInput, MintAuthorityResult, AuditEvent } from './types';
7
- export type ExecutionAuthorityStoreOptions = {
8
- now?: () => Date;
9
- };
10
- export declare class ExecutionAuthorityStore {
11
- private readonly db;
12
- private readonly ledger;
13
- constructor(db: Database.Database, options?: ExecutionAuthorityStoreOptions);
14
- /** Test helper: replace clock without losing durable state. */
15
- withNow(now: () => Date): ExecutionAuthorityStore;
16
- private ensureTables;
17
- private hydrate;
18
- private persist;
19
- private runMutating;
20
- enrollCoordinator(input: {
21
- coordinatorId: string;
22
- allowedDeckIds: string[];
23
- }): ContractResult<EnrollCoordinatorResult>;
24
- revokeEnrollment(enrollmentId: string): ContractResult<{
25
- enrollmentId: string;
26
- }>;
27
- mintAuthority(input: MintAuthorityInput): ContractResult<MintAuthorityResult>;
28
- /** Non-auditing existence/ownership lookup (see ledger.peekAuthority). */
29
- peekAuthority(authorityId: string): ExecutionAuthority | undefined;
30
- inspectAuthority(authorityId: string): ContractResult<ExecutionAuthority>;
31
- revokeAuthority(authorityId: string): ContractResult<{
32
- authorityId: string;
33
- }>;
34
- invokeAuthorizedCall(input: AuthorizedCallInput): ContractResult<{
35
- serviceId: string;
36
- toolName: string;
37
- result: string;
38
- }>;
39
- listAuditEvents(filter?: {
40
- runId?: string;
41
- attemptId?: string;
42
- authorityId?: string;
43
- enrollmentId?: string;
44
- requestId?: string;
45
- }): AuditEvent[];
46
- getEnrollment(enrollmentId: string): CoordinatorEnrollment | undefined;
47
- listEnrollments(): CoordinatorEnrollment[];
48
- verifyEnrollmentSecret(enrollmentId: string, secret: string): boolean;
49
- verifyAuthoritySecret(authorityId: string, secret: string): boolean;
50
- /**
51
- * Validate authority id+secret and return current authority (may transition to expired).
52
- */
53
- authenticateAuthority(authorityId: string, authoritySecret: string): ContractResult<ExecutionAuthority>;
54
- }
55
- //# sourceMappingURL=store.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/execution-authority/store.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAG3C,OAAO,KAAK,EACV,mBAAmB,EACnB,cAAc,EACd,qBAAqB,EACrB,uBAAuB,EACvB,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,UAAU,EACX,MAAM,SAAS,CAAC;AAEjB,MAAM,MAAM,8BAA8B,GAAG;IAC3C,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;CAClB,CAAC;AAEF,qBAAa,uBAAuB;IAIhC,OAAO,CAAC,QAAQ,CAAC,EAAE;IAHrB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA2B;gBAG/B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACtC,OAAO,GAAE,8BAAmC;IAO9C,+DAA+D;IAC/D,OAAO,CAAC,GAAG,EAAE,MAAM,IAAI,GAAG,uBAAuB;IAKjD,OAAO,CAAC,YAAY;IA0CpB,OAAO,CAAC,OAAO;IAiGf,OAAO,CAAC,OAAO;IA+Ef,OAAO,CAAC,WAAW;IAMnB,iBAAiB,CAAC,KAAK,EAAE;QACvB,aAAa,EAAE,MAAM,CAAC;QACtB,cAAc,EAAE,MAAM,EAAE,CAAC;KAC1B,GAAG,cAAc,CAAC,uBAAuB,CAAC;IAI3C,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,cAAc,CAAC;QAAE,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC;IAMhF,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,cAAc,CAAC,mBAAmB,CAAC;IAI7E,0EAA0E;IAC1E,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS;IAIlE,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,cAAc,CAAC,kBAAkB,CAAC;IAIzE,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,cAAc,CAAC;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;IAM7E,oBAAoB,CAClB,KAAK,EAAE,mBAAmB,GACzB,cAAc,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAQ1E,eAAe,CAAC,MAAM,GAAE;QACtB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,SAAS,CAAC,EAAE,MAAM,CAAC;KACf,GAAG,UAAU,EAAE;IAIrB,aAAa,CAAC,YAAY,EAAE,MAAM,GAAG,qBAAqB,GAAG,SAAS;IAItE,eAAe,IAAI,qBAAqB,EAAE;IAI1C,sBAAsB,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO;IAIrE,qBAAqB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO;IAInE;;OAEG;IACH,qBAAqB,CACnB,WAAW,EAAE,MAAM,EACnB,eAAe,EAAE,MAAM,GACtB,cAAc,CAAC,kBAAkB,CAAC;CA6CtC"}