instar 1.3.546 → 1.3.547

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 (36) hide show
  1. package/dashboard/index.html +12 -1
  2. package/dashboard/mandates.js +88 -0
  3. package/dist/config/ConfigDefaults.d.ts.map +1 -1
  4. package/dist/config/ConfigDefaults.js +6 -0
  5. package/dist/config/ConfigDefaults.js.map +1 -1
  6. package/dist/core/AuthorizationRequestStore.d.ts +138 -0
  7. package/dist/core/AuthorizationRequestStore.d.ts.map +1 -0
  8. package/dist/core/AuthorizationRequestStore.js +307 -0
  9. package/dist/core/AuthorizationRequestStore.js.map +1 -0
  10. package/dist/core/devGatedFeatures.d.ts.map +1 -1
  11. package/dist/core/devGatedFeatures.js +6 -0
  12. package/dist/core/devGatedFeatures.js.map +1 -1
  13. package/dist/core/types.d.ts +10 -0
  14. package/dist/core/types.d.ts.map +1 -1
  15. package/dist/core/types.js.map +1 -1
  16. package/dist/scaffold/templates.d.ts.map +1 -1
  17. package/dist/scaffold/templates.js +6 -0
  18. package/dist/scaffold/templates.js.map +1 -1
  19. package/dist/server/AgentServer.d.ts +3 -0
  20. package/dist/server/AgentServer.d.ts.map +1 -1
  21. package/dist/server/AgentServer.js +34 -0
  22. package/dist/server/AgentServer.js.map +1 -1
  23. package/dist/server/CapabilityIndex.d.ts.map +1 -1
  24. package/dist/server/CapabilityIndex.js +16 -0
  25. package/dist/server/CapabilityIndex.js.map +1 -1
  26. package/dist/server/routes.d.ts +18 -0
  27. package/dist/server/routes.d.ts.map +1 -1
  28. package/dist/server/routes.js +164 -0
  29. package/dist/server/routes.js.map +1 -1
  30. package/package.json +1 -1
  31. package/scripts/instar-dev-precommit.js +24 -1
  32. package/scripts/lib/operator-surface.mjs +30 -0
  33. package/src/data/builtin-manifest.json +47 -47
  34. package/src/scaffold/templates.ts +6 -0
  35. package/upgrades/1.3.547.md +26 -0
  36. package/upgrades/side-effects/operator-authorization-request.md +65 -0
@@ -0,0 +1,307 @@
1
+ /**
2
+ * AuthorizationRequestStore — the "agent proposes, operator approves" primitive.
3
+ *
4
+ * Spec: docs/specs/OPERATOR-AUTHORIZATION-REQUEST-SPEC.md (converged 2026-06-13).
5
+ *
6
+ * The agent (Bearer-auth) registers a STRUCTURED request; a pending request confers
7
+ * ZERO authority (it is inert). The operator approves it with their dashboard PIN, and
8
+ * ONLY then — inside the PIN-gated route — does the server execute the structured
9
+ * proposal (issue the floor-action grant via the existing signed MandateStore path).
10
+ *
11
+ * Safety invariants this store upholds:
12
+ * - requester ≠ authorizer: the store never confers authority; `approve()` runs an
13
+ * INJECTED `execute` callback (the PIN-gated route wires it to MandateStore) — the
14
+ * store itself only manages request lifecycle + the atomic status transition.
15
+ * - display integrity: the store carries the STRUCTURED `proposal` (the only thing
16
+ * executed) + its content hash. The operator-facing text is rendered SERVER-SIDE
17
+ * from the proposal (see renderAuthorizationCard); agent free-text (`reason`) is
18
+ * carried but is never the authority headline.
19
+ * - TOCTOU: `proposalSha256` is fixed at create and re-verified at approve, so the
20
+ * proposal cannot be mutated between display and approval.
21
+ * - atomicity/idempotency: `approve` is serialized per-request and idempotent (a second
22
+ * approve of an already-approved request returns the same result, never a 2nd grant).
23
+ *
24
+ * File-based JSON store (no DB), mirroring MandateStore. Pure + injectable (now/genId)
25
+ * so it unit-tests with fakes and never reaches the real clock in tests.
26
+ */
27
+ import fs from 'node:fs';
28
+ import path from 'node:path';
29
+ import { createHash } from 'node:crypto';
30
+ /** The floor actions an agent MAY propose via this path. EXCLUDES 'grant-authority'
31
+ * (the meta-escalation stays manual-only — the Advanced mandate form). FD-8. */
32
+ export const PROPOSABLE_FLOOR_ACTIONS = [
33
+ 'prod-deploy', 'money-movement', 'credential-access', 'destructive-data', 'external-send',
34
+ ];
35
+ /** Human labels for the server-authored headline (FD / display-integrity rule). */
36
+ export const FLOOR_ACTION_LABELS = {
37
+ 'prod-deploy': 'deploy to production',
38
+ 'money-movement': 'move money',
39
+ 'credential-access': 'access credentials',
40
+ 'destructive-data': 'run a destructive data operation',
41
+ 'external-send': 'send an external message',
42
+ 'grant-authority': 'grant authority to others',
43
+ };
44
+ export const MIN_GRANT_DURATION_MS = 60_000; // 1 minute
45
+ export const MAX_GRANT_DURATION_MS = 86_400_000; // 24 hours (FD-7 human-supervision ceiling)
46
+ export const REQUEST_TTL_MS = 86_400_000; // pending auto-expires after 24h (FD-7)
47
+ export const DEFAULT_PENDING_CAP_PER_AGENT = 10; // FD-13
48
+ export const RESOLVED_RETENTION_MS = 2_592_000_000; // prune resolved after 30d (FD-11)
49
+ export const REPROPOSE_COOLDOWN_MS = 3_600_000; // 1h after a deny (FD-10)
50
+ /** Deterministic, key-sorted serialization (matches MandateStore.stableStringify). */
51
+ function stableStringify(value) {
52
+ if (value === null || typeof value !== 'object')
53
+ return JSON.stringify(value);
54
+ if (Array.isArray(value))
55
+ return '[' + value.map(stableStringify).join(',') + ']';
56
+ const obj = value;
57
+ const keys = Object.keys(obj).sort();
58
+ return '{' + keys.map((k) => JSON.stringify(k) + ':' + stableStringify(obj[k])).join(',') + '}';
59
+ }
60
+ /** Content-address a proposal (fixed at create, re-checked at approve — TOCTOU guard). */
61
+ export function hashProposal(p) {
62
+ return createHash('sha256').update(stableStringify(p)).digest('hex');
63
+ }
64
+ /** A plain-language duration for the server-authored headline. */
65
+ export function humanDuration(ms) {
66
+ if (ms % 3_600_000 === 0) {
67
+ const h = ms / 3_600_000;
68
+ return `${h} hour${h === 1 ? '' : 's'}`;
69
+ }
70
+ const m = Math.round(ms / 60_000);
71
+ return `${m} minute${m === 1 ? '' : 's'}`;
72
+ }
73
+ /**
74
+ * The SERVER-AUTHORED card the operator sees. Built ONLY from the structured proposal
75
+ * + the trusted display name resolved upstream (never from agent free-text). The
76
+ * `reason` is returned separately so the UI can render it as a clearly-secondary,
77
+ * escaped line — never the headline. This is the display-integrity fix.
78
+ */
79
+ export function renderAuthorizationCard(req, grantedToDisplay) {
80
+ const action = FLOOR_ACTION_LABELS[req.proposal.floorAction] ?? req.proposal.floorAction;
81
+ const who = grantedToDisplay || req.proposal.grantedToSlackUserId;
82
+ const dur = humanDuration(req.proposal.durationMs);
83
+ return {
84
+ headline: `Let ${who} ${action} for ${dur}.`,
85
+ ...(req.reason ? { reason: req.reason } : {}),
86
+ };
87
+ }
88
+ export class AuthorizationRequestStore {
89
+ d;
90
+ cap;
91
+ constructor(deps) {
92
+ this.d = deps;
93
+ this.cap = deps.pendingCapPerAgent ?? DEFAULT_PENDING_CAP_PER_AGENT;
94
+ }
95
+ nowMs() { return this.d.now ? this.d.now() : Date.now(); }
96
+ nowIso() { return new Date(this.nowMs()).toISOString(); }
97
+ readAll() {
98
+ try {
99
+ const raw = JSON.parse(fs.readFileSync(this.d.filePath, 'utf8'));
100
+ return Array.isArray(raw) ? raw : [];
101
+ }
102
+ catch { /* @silent-fallback-ok — file may not exist yet; empty store is the safe (no pending) state */
103
+ return [];
104
+ }
105
+ }
106
+ writeAll(list) {
107
+ fs.mkdirSync(path.dirname(this.d.filePath), { recursive: true });
108
+ fs.writeFileSync(this.d.filePath, JSON.stringify(list, null, 2));
109
+ }
110
+ /** Lazily age out past-TTL pending requests on every read-modify path (also driven by an hourly sweep). */
111
+ ageExpired(list) {
112
+ const now = this.nowMs();
113
+ let changed = false;
114
+ for (const r of list) {
115
+ if (r.status === 'pending' && Date.parse(r.requestExpiresAt) <= now) {
116
+ r.status = 'expired';
117
+ r.resolvedAt = new Date(now).toISOString();
118
+ changed = true;
119
+ }
120
+ }
121
+ return { list, changed };
122
+ }
123
+ /** Validate + create a pending request. Confers no authority. Dedup + flood-capped. */
124
+ create(input) {
125
+ const p = input.proposal;
126
+ if (!p || typeof p !== 'object')
127
+ return { ok: false, status: 400, error: 'proposal is required' };
128
+ if (!PROPOSABLE_FLOOR_ACTIONS.includes(p.floorAction)) {
129
+ return { ok: false, status: 400, error: `floorAction must be one of: ${PROPOSABLE_FLOOR_ACTIONS.join(', ')}` };
130
+ }
131
+ if (typeof p.grantedToSlackUserId !== 'string' || !/^[UW][A-Z0-9]+$/.test(p.grantedToSlackUserId)) {
132
+ return { ok: false, status: 400, error: 'grantedToSlackUserId must be a Slack user id (U… / W…)' };
133
+ }
134
+ if (typeof p.durationMs !== 'number' || !Number.isFinite(p.durationMs)
135
+ || p.durationMs < MIN_GRANT_DURATION_MS || p.durationMs > MAX_GRANT_DURATION_MS) {
136
+ return { ok: false, status: 400, error: `durationMs must be within [${MIN_GRANT_DURATION_MS}, ${MAX_GRANT_DURATION_MS}]` };
137
+ }
138
+ if (input.reason !== undefined && (typeof input.reason !== 'string' || input.reason.length > 280)) {
139
+ return { ok: false, status: 400, error: 'reason must be a string ≤280 chars' };
140
+ }
141
+ // Strict: only the three structured proposal fields (no bounds in v1 — FD-15).
142
+ const extra = Object.keys(p).filter((k) => !['floorAction', 'grantedToSlackUserId', 'durationMs'].includes(k));
143
+ if (extra.length)
144
+ return { ok: false, status: 400, error: `unknown proposal fields: ${extra.join(', ')}` };
145
+ const cleanProposal = {
146
+ floorAction: p.floorAction, grantedToSlackUserId: p.grantedToSlackUserId, durationMs: p.durationMs,
147
+ };
148
+ const sha = hashProposal(cleanProposal);
149
+ const now = this.nowMs();
150
+ const { list } = this.ageExpired(this.readAll());
151
+ // Re-propose cooldown after a recent deny of the SAME (user, action) by the same agent (FD-10).
152
+ const recentDeny = list.find((r) => r.createdByAgent === input.createdByAgent && r.status === 'denied'
153
+ && r.proposal.grantedToSlackUserId === cleanProposal.grantedToSlackUserId
154
+ && r.proposal.floorAction === cleanProposal.floorAction
155
+ && r.resolvedAt && (now - Date.parse(r.resolvedAt)) < REPROPOSE_COOLDOWN_MS);
156
+ if (recentDeny) {
157
+ return { ok: false, status: 429, error: 'recently-denied — wait before re-proposing this grant' };
158
+ }
159
+ // Dedup: an identical pending proposal from the same agent returns the existing id (FD-13).
160
+ const dup = list.find((r) => r.status === 'pending' && r.createdByAgent === input.createdByAgent && r.proposalSha256 === sha);
161
+ if (dup) {
162
+ this.writeAll(list);
163
+ return { ok: true, request: dup, deduped: true };
164
+ }
165
+ // Per-agent pending cap (FD-13).
166
+ const pendingForAgent = list.filter((r) => r.status === 'pending' && r.createdByAgent === input.createdByAgent).length;
167
+ if (pendingForAgent >= this.cap) {
168
+ this.writeAll(list);
169
+ return { ok: false, status: 429, error: `too-many-pending (cap ${this.cap}) — resolve existing requests first` };
170
+ }
171
+ const id = this.d.genId ? this.d.genId() : `authreq-${Math.random().toString(36).slice(2, 10)}`;
172
+ const request = {
173
+ id,
174
+ createdAt: new Date(now).toISOString(),
175
+ createdByAgent: input.createdByAgent,
176
+ createdOnMachine: input.createdOnMachine,
177
+ status: 'pending',
178
+ kind: 'user-floor-grant',
179
+ proposal: cleanProposal,
180
+ proposalSha256: sha,
181
+ ...(input.reason ? { reason: input.reason } : {}),
182
+ requestExpiresAt: new Date(now + REQUEST_TTL_MS).toISOString(),
183
+ };
184
+ list.push(request);
185
+ this.writeAll(list);
186
+ return { ok: true, request };
187
+ }
188
+ get(id) {
189
+ return this.readAll().find((r) => r.id === id);
190
+ }
191
+ list(status) {
192
+ const { list, changed } = this.ageExpired(this.readAll());
193
+ if (changed)
194
+ this.writeAll(list);
195
+ return status ? list.filter((r) => r.status === status) : list;
196
+ }
197
+ /**
198
+ * Approve a request — the ONLY authority-conferring path, and ONLY callable from the
199
+ * PIN-gated route. `execute(proposal)` issues the carrier mandate + grant via MandateStore
200
+ * and returns the resultMandateId; it runs AFTER the status + hash + (caller's) allowlist /
201
+ * registry re-checks, and BEFORE the commit, so a thrown execute aborts cleanly (request
202
+ * stays pending). Idempotent: re-approving an already-approved request returns its result.
203
+ */
204
+ approve(id, opts) {
205
+ const { list } = this.ageExpired(this.readAll());
206
+ const idx = list.findIndex((r) => r.id === id);
207
+ if (idx < 0)
208
+ return { ok: false, status: 404, error: 'request not found' };
209
+ const r = list[idx];
210
+ if (r.status === 'approved') {
211
+ this.writeAll(list);
212
+ return { ok: true, request: r, alreadyApproved: true };
213
+ }
214
+ if (r.status !== 'pending') {
215
+ this.writeAll(list);
216
+ return { ok: false, status: 409, error: `request is ${r.status}` };
217
+ }
218
+ // TOCTOU: the proposal cannot have changed between display and approval.
219
+ if (hashProposal(r.proposal) !== r.proposalSha256) {
220
+ return { ok: false, status: 409, error: 'proposal-tampered' };
221
+ }
222
+ let resultMandateId;
223
+ try {
224
+ resultMandateId = opts.execute(r.proposal);
225
+ }
226
+ catch (e) {
227
+ // execute failed (allowlist re-check / registry / carrier issue) — request stays pending.
228
+ return { ok: false, status: 409, error: e instanceof Error ? e.message : 'approval execution failed' };
229
+ }
230
+ r.status = 'approved';
231
+ r.resolvedAt = this.nowIso();
232
+ r.resolvedBy = 'operator';
233
+ r.resultMandateId = resultMandateId;
234
+ list[idx] = r;
235
+ this.writeAll(list);
236
+ return { ok: true, request: r };
237
+ }
238
+ /** Operator declines — reason REQUIRED (FD-10). */
239
+ deny(id, denyReason) {
240
+ if (typeof denyReason !== 'string' || !denyReason.trim()) {
241
+ return { ok: false, status: 400, error: 'denyReason is required' };
242
+ }
243
+ const { list } = this.ageExpired(this.readAll());
244
+ const idx = list.findIndex((r) => r.id === id);
245
+ if (idx < 0)
246
+ return { ok: false, status: 404, error: 'request not found' };
247
+ const r = list[idx];
248
+ if (r.status === 'denied') {
249
+ this.writeAll(list);
250
+ return { ok: true, request: r };
251
+ }
252
+ if (r.status !== 'pending') {
253
+ this.writeAll(list);
254
+ return { ok: false, status: 409, error: `request is ${r.status}` };
255
+ }
256
+ r.status = 'denied';
257
+ r.resolvedAt = this.nowIso();
258
+ r.resolvedBy = 'operator';
259
+ r.denyReason = denyReason.trim();
260
+ list[idx] = r;
261
+ this.writeAll(list);
262
+ return { ok: true, request: r };
263
+ }
264
+ /** The proposing agent withdraws its OWN still-pending request. Mutually exclusive with approve. */
265
+ withdraw(id, byAgent) {
266
+ const { list } = this.ageExpired(this.readAll());
267
+ const idx = list.findIndex((r) => r.id === id);
268
+ if (idx < 0)
269
+ return { ok: false, status: 404, error: 'request not found' };
270
+ const r = list[idx];
271
+ if (r.createdByAgent !== byAgent)
272
+ return { ok: false, status: 403, error: 'only the proposing agent may withdraw' };
273
+ if (r.status === 'withdrawn') {
274
+ this.writeAll(list);
275
+ return { ok: true, request: r };
276
+ }
277
+ if (r.status !== 'pending') {
278
+ this.writeAll(list);
279
+ return { ok: false, status: 409, error: `request is ${r.status}` };
280
+ }
281
+ r.status = 'withdrawn';
282
+ r.resolvedAt = this.nowIso();
283
+ list[idx] = r;
284
+ this.writeAll(list);
285
+ return { ok: true, request: r };
286
+ }
287
+ /** Hourly sweep: age out past-TTL pending + prune resolved older than the retention window (FD-11). */
288
+ sweep() {
289
+ const now = this.nowMs();
290
+ const { list } = this.ageExpired(this.readAll());
291
+ let expired = 0;
292
+ for (const r of list)
293
+ if (r.status === 'expired' && r.resolvedAt && Date.parse(r.resolvedAt) === now)
294
+ expired++;
295
+ const kept = list.filter((r) => {
296
+ const resolved = r.status !== 'pending';
297
+ if (!resolved)
298
+ return true;
299
+ const at = r.resolvedAt ? Date.parse(r.resolvedAt) : now;
300
+ return (now - at) < RESOLVED_RETENTION_MS;
301
+ });
302
+ const pruned = list.length - kept.length;
303
+ this.writeAll(kept);
304
+ return { expired, pruned };
305
+ }
306
+ }
307
+ //# sourceMappingURL=AuthorizationRequestStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AuthorizationRequestStore.js","sourceRoot":"","sources":["../../src/core/AuthorizationRequestStore.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"devGatedFeatures.d.ts","sourceRoot":"","sources":["../../src/core/devGatedFeatures.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,oEAAoE;AACpE,MAAM,WAAW,eAAe;IAC9B,mEAAmE;IACnE,IAAI,EAAE,MAAM,CAAC;IACb,uEAAuE;IACvE,UAAU,EAAE,MAAM,CAAC;IACnB,6DAA6D;IAC7D,WAAW,EAAE,MAAM,CAAC;IACpB;;;;;;OAMG;IACH,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,eAAO,MAAM,kBAAkB,EAAE,eAAe,EAmJ/C,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,MAAM,gBAAgB,GACxB,aAAa,GACb,cAAc,GACd,gBAAgB,GAChB,sBAAsB,GACtB,iBAAiB,CAAC;AAEtB,MAAM,WAAW,iBAAiB;IAChC,uEAAuE;IACvE,UAAU,EAAE,MAAM,CAAC;IACnB,6CAA6C;IAC7C,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,mFAAmF;IACnF,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,oBAAoB,EAAE,iBAAiB,EAwInD,CAAC;AAEF;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAO5E"}
1
+ {"version":3,"file":"devGatedFeatures.d.ts","sourceRoot":"","sources":["../../src/core/devGatedFeatures.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,oEAAoE;AACpE,MAAM,WAAW,eAAe;IAC9B,mEAAmE;IACnE,IAAI,EAAE,MAAM,CAAC;IACb,uEAAuE;IACvE,UAAU,EAAE,MAAM,CAAC;IACnB,6DAA6D;IAC7D,WAAW,EAAE,MAAM,CAAC;IACpB;;;;;;OAMG;IACH,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,eAAO,MAAM,kBAAkB,EAAE,eAAe,EA2J/C,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,MAAM,gBAAgB,GACxB,aAAa,GACb,cAAc,GACd,gBAAgB,GAChB,sBAAsB,GACtB,iBAAiB,CAAC;AAEtB,MAAM,WAAW,iBAAiB;IAChC,uEAAuE;IACvE,UAAU,EAAE,MAAM,CAAC;IACnB,6CAA6C;IAC7C,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,mFAAmF;IACnF,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,oBAAoB,EAAE,iBAAiB,EAwInD,CAAC;AAEF;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAO5E"}
@@ -132,6 +132,12 @@ export const DEV_GATED_FEATURES = [
132
132
  description: 'Build-Session Yield Safety (ACT-839) — a reaped session with uncommitted worktree work becomes resume-eligible and gets a tracked commit-or-preserve obligation.',
133
133
  justification: 'Dev-enabled per the Maturation Path standard (the dev agent is the controlled blast radius where a lifecycle-touching feature matures before fleet). Loss-reducing only: R1 is a read-only pre-kill dirty-check (no egress, no spend); R2 is a SIGNAL + a tracked beacon (never a blocking gate) plus a NON-destructive preservation patch (git diff → a state-dir file, secret-scrubbed, size-capped; never mutates index/ref/history). The operator origin-veto is preserved — an explicit operator/user/emergency kill is never auto-revived. Fail-open everywhere.',
134
134
  },
135
+ {
136
+ name: 'authorizationRequests',
137
+ configPath: 'monitoring.authorizationRequests.enabled',
138
+ description: 'Operator Authorization Request — the agent pre-fills a structured grant request; the operator approves it one-tap with their dashboard PIN (replaces the raw-JSON mandate form). Spec: docs/specs/OPERATOR-AUTHORIZATION-REQUEST-SPEC.md.',
139
+ justification: 'Dev-enabled per the Maturation Path standard. Does NOT weaken authority: a pending request confers ZERO authority (it is inert); the grant is issued ONLY inside the existing PIN-gated path (checkMandatePin) via the existing signed MandateStore.issue/addGrants — requester ≠ authorizer is preserved and the agent can never approve its own request. The operator-facing card is SERVER-authored from the structured proposal + the registry display name (never agent free-text), closing the deceptive-summary class. Routes 503 when off; the existing mandate/grant path is unchanged. The dev agent is the controlled blast radius where the operator-surface matures before fleet.',
140
+ },
135
141
  // ── CMT-1438 (DEV-AGENT-DARK-GATE-TEETH): the 4 audited-safe migrants from the
136
142
  // retired deliberate-fleet-default bucket. Each was code-grounded (D4) before
137
143
  // the move; 3 candidates (correctionLearning, apprenticeshipCycleSla,
@@ -1 +1 @@
1
- {"version":3,"file":"devGatedFeatures.js","sourceRoot":"","sources":["../../src/core/devGatedFeatures.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"devGatedFeatures.js","sourceRoot":"","sources":["../../src/core/devGatedFeatures.ts"],"names":[],"mappings":"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"}
@@ -4019,6 +4019,16 @@ export interface MonitoringConfig {
4019
4019
  preservationMaxFileBytes?: number;
4020
4020
  preservationMaxTotalBytes?: number;
4021
4021
  };
4022
+ /**
4023
+ * Operator Authorization Request (agent proposes → operator approves one-tap).
4024
+ * `enabled` is dev-gated (resolveDevAgentGate) — enabled-on-dev / dark-on-fleet —
4025
+ * so it is OMITTED from ConfigDefaults. Spec: OPERATOR-AUTHORIZATION-REQUEST-SPEC.md.
4026
+ */
4027
+ authorizationRequests?: {
4028
+ enabled?: boolean;
4029
+ /** Max pending requests per proposing agent before 429 (FD-13). */
4030
+ pendingCapPerAgent?: number;
4031
+ };
4022
4032
  /**
4023
4033
  * McpProcessReaper (RESPONSIBLE-RESOURCE-USAGE — MCP-leak fix, Option B).
4024
4034
  * Reaps leaked MCP-server children (playwright-mcp / mcp-remote / instar