instar 1.3.479 → 1.3.481
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dashboard/index.html +103 -0
- package/dist/commands/server.d.ts.map +1 -1
- package/dist/commands/server.js +10 -7
- package/dist/commands/server.js.map +1 -1
- package/dist/config/ConfigDefaults.d.ts.map +1 -1
- package/dist/config/ConfigDefaults.js +20 -8
- package/dist/config/ConfigDefaults.js.map +1 -1
- package/dist/core/PostUpdateMigrator.d.ts +1 -0
- package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
- package/dist/core/PostUpdateMigrator.js +139 -0
- package/dist/core/PostUpdateMigrator.js.map +1 -1
- package/dist/core/devGatedFeatures.d.ts +31 -0
- package/dist/core/devGatedFeatures.d.ts.map +1 -1
- package/dist/core/devGatedFeatures.js +121 -0
- package/dist/core/devGatedFeatures.js.map +1 -1
- package/dist/core/types.d.ts +27 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js.map +1 -1
- package/dist/monitoring/BlockerLedger.d.ts +294 -0
- package/dist/monitoring/BlockerLedger.d.ts.map +1 -0
- package/dist/monitoring/BlockerLedger.js +597 -0
- package/dist/monitoring/BlockerLedger.js.map +1 -0
- package/dist/monitoring/blockerSettleAuthority.d.ts +28 -0
- package/dist/monitoring/blockerSettleAuthority.d.ts.map +1 -0
- package/dist/monitoring/blockerSettleAuthority.js +0 -0
- package/dist/monitoring/blockerSettleAuthority.js.map +1 -0
- package/dist/scaffold/templates.d.ts.map +1 -1
- package/dist/scaffold/templates.js +9 -0
- package/dist/scaffold/templates.js.map +1 -1
- package/dist/server/AgentServer.d.ts +1 -0
- package/dist/server/AgentServer.d.ts.map +1 -1
- package/dist/server/AgentServer.js +32 -0
- package/dist/server/AgentServer.js.map +1 -1
- package/dist/server/CapabilityIndex.d.ts.map +1 -1
- package/dist/server/CapabilityIndex.js +15 -0
- package/dist/server/CapabilityIndex.js.map +1 -1
- package/dist/server/routes.d.ts +6 -0
- package/dist/server/routes.d.ts.map +1 -1
- package/dist/server/routes.js +108 -1
- package/dist/server/routes.js.map +1 -1
- package/package.json +1 -1
- package/scripts/lib/dark-gate-attribution.js +148 -0
- package/scripts/lint-dev-agent-dark-gate.js +159 -14
- package/src/data/builtin-manifest.json +64 -64
- package/src/scaffold/templates.ts +9 -0
- package/upgrades/1.3.480.md +35 -0
- package/upgrades/1.3.481.md +38 -0
- package/upgrades/side-effects/blocker-ledger.md +106 -0
- package/upgrades/side-effects/dev-agent-dark-gate-enforcement.md +95 -0
|
@@ -0,0 +1,294 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BlockerLedger — the resolution-workflow + memory layer that COMPLETES
|
|
3
|
+
* Principle 1 ("almost every blocker is a false blocker — work it through").
|
|
4
|
+
*
|
|
5
|
+
* The detection half already exists (deferral-detector hook, B16_UNVERIFIED_WALL,
|
|
6
|
+
* B17_FALSE_BLOCKER). This ledger is the MISSING half: it turns a detected blocker
|
|
7
|
+
* into a *gated pipeline* with structural evidence-of-work at every terminal, built
|
|
8
|
+
* so the memory can NEVER become a deferral-laundromat.
|
|
9
|
+
*
|
|
10
|
+
* Pipeline (no state may be skipped — `advance` refuses an illegal transition):
|
|
11
|
+
* candidate → authority-checked → access-requested → dry-run → live-run → terminal
|
|
12
|
+
*
|
|
13
|
+
* Terminal states each require verified evidence-of-work:
|
|
14
|
+
* - `resolved` — a real codified playbook (confined path, references the
|
|
15
|
+
* blocker id, links a SUCCESSFUL live-run). Existence alone
|
|
16
|
+
* never satisfies it.
|
|
17
|
+
* - `true-blocker` — the dangerous terminal, so the most gated. Requires a
|
|
18
|
+
* closed-taxonomy reason + a recorded FAILED self-fetch/dry-run
|
|
19
|
+
* attempt (no kind exempt) + an `access-requested` to the user
|
|
20
|
+
* AFTER the failed attempt + passing the Tier-1 B17 authority.
|
|
21
|
+
* Stored as a DECAYING HYPOTHESIS ("last verified <date>"),
|
|
22
|
+
* re-tested on a cadence; re-settle needs NEW evidence.
|
|
23
|
+
*
|
|
24
|
+
* Signal vs Authority (docs/signal-vs-authority.md): the ledger RECORDS and
|
|
25
|
+
* STRUCTURES; it never blocks an outbound message. The one judgment it carries —
|
|
26
|
+
* the `true-blocker` settle — routes through the injected Tier-1 authority
|
|
27
|
+
* (`settleAuthority`, default-wired to the B17 gate at the server), exactly as the
|
|
28
|
+
* constitution requires. Brittle field-presence checks gate the *form* of evidence;
|
|
29
|
+
* the *settle judgment* is the intelligent gate's.
|
|
30
|
+
*
|
|
31
|
+
* Concurrency: all mutations go through a single-writer CAS path (atomic temp-file
|
|
32
|
+
* + rename), reusing the CommitmentTracker.mutate() pattern. File-JSON does not
|
|
33
|
+
* exempt the ledger from the concurrency safety the rest of instar enforces.
|
|
34
|
+
*
|
|
35
|
+
* Spec: docs/specs/AUTONOMY-PRINCIPLES-ENFORCEMENT-SPEC.md (Piece 1).
|
|
36
|
+
*/
|
|
37
|
+
/** The gated pipeline states. Order matters — `advance` walks them linearly. */
|
|
38
|
+
export declare const BLOCKER_PIPELINE: readonly BlockerNonTerminalState[];
|
|
39
|
+
export type BlockerNonTerminalState = 'candidate' | 'authority-checked' | 'access-requested' | 'dry-run' | 'live-run';
|
|
40
|
+
export type BlockerTerminalState = 'resolved' | 'true-blocker';
|
|
41
|
+
export type BlockerState = BlockerNonTerminalState | BlockerTerminalState;
|
|
42
|
+
/**
|
|
43
|
+
* The ONLY legitimate true-blocker kinds (closed taxonomy — NOT free prose).
|
|
44
|
+
* A reason that doesn't match is refused and the entry stays where it is.
|
|
45
|
+
*/
|
|
46
|
+
export declare const TRUE_BLOCKER_KINDS: readonly ["operator-only-secret", "operator-only-account", "legal-billing-authorization", "operator-judgment"];
|
|
47
|
+
export type TrueBlockerKind = (typeof TRUE_BLOCKER_KINDS)[number];
|
|
48
|
+
export interface BlockerTransition {
|
|
49
|
+
from: BlockerState;
|
|
50
|
+
to: BlockerState;
|
|
51
|
+
at: string;
|
|
52
|
+
/** Authenticated origin that performed the transition (session/operator id). */
|
|
53
|
+
origin: string;
|
|
54
|
+
note?: string;
|
|
55
|
+
}
|
|
56
|
+
export interface AuthorityCheckEvidence {
|
|
57
|
+
/** Does the agent itself have the authority/access to clear this? */
|
|
58
|
+
agentHasAuthority: boolean;
|
|
59
|
+
/** Does the user hold the authority the agent lacks? */
|
|
60
|
+
userHasAuthority: boolean;
|
|
61
|
+
note: string;
|
|
62
|
+
}
|
|
63
|
+
export interface AccessRequestEvidence {
|
|
64
|
+
/** A reference to the ACTUAL outbound message asking the user (e.g. a relay id). */
|
|
65
|
+
messageRef: string;
|
|
66
|
+
at: string;
|
|
67
|
+
}
|
|
68
|
+
export interface AttemptEvidence {
|
|
69
|
+
/** A failed self-fetch (vault/gh/vercel/decrypt-miss) OR a failed dry-run. */
|
|
70
|
+
type: 'self-fetch' | 'dry-run';
|
|
71
|
+
at: string;
|
|
72
|
+
/** What was tried and how it failed (untrusted free text — surfaced via envelope). */
|
|
73
|
+
detail: string;
|
|
74
|
+
succeeded: false;
|
|
75
|
+
}
|
|
76
|
+
export interface LiveRunEvidence {
|
|
77
|
+
at: string;
|
|
78
|
+
outcome: string;
|
|
79
|
+
succeeded: boolean;
|
|
80
|
+
}
|
|
81
|
+
export interface ResolvedTerminal {
|
|
82
|
+
kind: 'resolved';
|
|
83
|
+
/** Confined, on-disk playbook path that references the blocker id + links live-run. */
|
|
84
|
+
playbookPath: string;
|
|
85
|
+
at: string;
|
|
86
|
+
}
|
|
87
|
+
export interface TrueBlockerTerminal {
|
|
88
|
+
kind: 'true-blocker';
|
|
89
|
+
reasonKind: TrueBlockerKind;
|
|
90
|
+
/** Per-step rebuttal of why each pipeline stage failed (untrusted free text). */
|
|
91
|
+
rebuttal: string;
|
|
92
|
+
/** The MANDATORY recorded failed work-attempt (self-fetch for secret/account kinds). */
|
|
93
|
+
failedAttempt: AttemptEvidence;
|
|
94
|
+
/** Reference to the access-request made to the user, AFTER the failed attempt. */
|
|
95
|
+
accessRequestRef: string;
|
|
96
|
+
/** Hash of the B17 gate decision that AUTHORIZED this settle. */
|
|
97
|
+
gateDecisionHash: string;
|
|
98
|
+
at: string;
|
|
99
|
+
/** D6: a settled true-blocker is a DECAYING hypothesis — reopened on this date. */
|
|
100
|
+
recheckAfter: string;
|
|
101
|
+
/** Consecutive re-settles with no new evidence — escalates to the user after N. */
|
|
102
|
+
noEvidenceResettleCount: number;
|
|
103
|
+
}
|
|
104
|
+
export type BlockerTerminal = ResolvedTerminal | TrueBlockerTerminal;
|
|
105
|
+
export interface BlockerEntry {
|
|
106
|
+
id: string;
|
|
107
|
+
/** CAS version — bumped on every mutation. */
|
|
108
|
+
version: number;
|
|
109
|
+
state: BlockerState;
|
|
110
|
+
/** The false-blocker framing that opened the entry (untrusted — surfaced via envelope). */
|
|
111
|
+
detectedText: string;
|
|
112
|
+
/** Authenticated origin that opened the entry. */
|
|
113
|
+
origin: string;
|
|
114
|
+
createdAt: string;
|
|
115
|
+
updatedAt: string;
|
|
116
|
+
history: BlockerTransition[];
|
|
117
|
+
authorityCheck?: AuthorityCheckEvidence;
|
|
118
|
+
accessRequest?: AccessRequestEvidence;
|
|
119
|
+
dryRun?: AttemptEvidence;
|
|
120
|
+
liveRun?: LiveRunEvidence;
|
|
121
|
+
terminal?: BlockerTerminal;
|
|
122
|
+
/** When this true-blocker was last reopened by the D6 re-walk job (if ever). */
|
|
123
|
+
lastReopenedAt?: string;
|
|
124
|
+
/**
|
|
125
|
+
* Consecutive no-new-evidence re-settle ATTEMPTS since the last successful
|
|
126
|
+
* (new-evidence) settle or reopen. Each refused no-evidence re-settle bumps this
|
|
127
|
+
* (and is refused); at >= maxNoEvidenceResettles the anomaly escalates to the user.
|
|
128
|
+
* A wall re-stamped without ever being re-tested is itself a signal.
|
|
129
|
+
*/
|
|
130
|
+
noEvidenceResettleAttempts?: number;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* The injected Tier-1 authority for the `true-blocker` settle judgment.
|
|
134
|
+
* Default-wired to the B17 gate at the server; tests inject a fake.
|
|
135
|
+
* Returns allow/deny + a reason + a stable hash of the decision (for the audit line).
|
|
136
|
+
*/
|
|
137
|
+
export type SettleAuthority = (input: {
|
|
138
|
+
entry: BlockerEntry;
|
|
139
|
+
proposed: TrueBlockerTerminal;
|
|
140
|
+
}) => Promise<{
|
|
141
|
+
allow: boolean;
|
|
142
|
+
reason: string;
|
|
143
|
+
decisionHash: string;
|
|
144
|
+
}>;
|
|
145
|
+
export interface BlockerLedgerOptions {
|
|
146
|
+
/** Agent home / stateDir; the store lives at `<stateDir>/state/blocker-ledger.json`. */
|
|
147
|
+
stateDir: string;
|
|
148
|
+
/** The Tier-1 settle authority (B17). Optional — when absent, a true-blocker settle is refused. */
|
|
149
|
+
settleAuthority?: SettleAuthority;
|
|
150
|
+
/** Move terminal entries older than this many days to the archive (default 30). */
|
|
151
|
+
archiveAfterDays?: number;
|
|
152
|
+
/** Default days until a settled true-blocker is reopened for a re-walk (default 30). */
|
|
153
|
+
recheckAfterDays?: number;
|
|
154
|
+
/** Consecutive no-new-evidence re-settles before escalating (default 2). */
|
|
155
|
+
maxNoEvidenceResettles?: number;
|
|
156
|
+
/** Max free-text length on any field, in chars (default 4000). */
|
|
157
|
+
maxFreeTextChars?: number;
|
|
158
|
+
/**
|
|
159
|
+
* Confined directory roots a `resolved` playbook MUST live under (absolute or
|
|
160
|
+
* stateDir-relative). Defaults to the agent's skills + playbook dirs.
|
|
161
|
+
*/
|
|
162
|
+
confinedPlaybookRoots?: string[];
|
|
163
|
+
/** Injectable clock for deterministic tests. */
|
|
164
|
+
now?: () => Date;
|
|
165
|
+
}
|
|
166
|
+
export declare class BlockerLedgerError extends Error {
|
|
167
|
+
readonly code: string;
|
|
168
|
+
constructor(message: string, code: string);
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Wrap untrusted ledger free-text in a delimited, quoted envelope before it is
|
|
172
|
+
* ever surfaced to an LLM (the D6 re-walk re-feeds it into context). NEVER
|
|
173
|
+
* concatenate ledger text as instructions — it is DATA. Mirrors the
|
|
174
|
+
* `<auto-learned-preference>` signal-envelope pattern.
|
|
175
|
+
*/
|
|
176
|
+
export declare function toLlmSafeEnvelope(text: string): string;
|
|
177
|
+
/** HTML-escape for the dashboard render path. */
|
|
178
|
+
export declare function escapeHtmlForDashboard(text: string): string;
|
|
179
|
+
export declare class BlockerLedger {
|
|
180
|
+
private readonly storePath;
|
|
181
|
+
private readonly archivePath;
|
|
182
|
+
private readonly auditPath;
|
|
183
|
+
private readonly settleAuthority?;
|
|
184
|
+
private readonly archiveAfterDays;
|
|
185
|
+
private readonly recheckAfterDays;
|
|
186
|
+
private readonly maxNoEvidenceResettles;
|
|
187
|
+
private readonly maxFreeText;
|
|
188
|
+
private readonly confinedRoots;
|
|
189
|
+
private readonly now;
|
|
190
|
+
private readonly stateDir;
|
|
191
|
+
private store;
|
|
192
|
+
/** Serialize all mutations through one in-process queue (single-writer). */
|
|
193
|
+
private mutateChain;
|
|
194
|
+
constructor(opts: BlockerLedgerOptions);
|
|
195
|
+
private loadStore;
|
|
196
|
+
private saveStore;
|
|
197
|
+
private iso;
|
|
198
|
+
/**
|
|
199
|
+
* Single-writer mutation funnel. Every mutation serializes through one
|
|
200
|
+
* in-process chain (no two interleave a read-modify-write) — this IS the
|
|
201
|
+
* single-writer guarantee. Each mutation reloads from disk first so a
|
|
202
|
+
* cross-process write (e.g. a manual edit) is picked up rather than clobbered,
|
|
203
|
+
* then applies + persists atomically (temp-file + rename).
|
|
204
|
+
*
|
|
205
|
+
* A rejected mutation does not poison the chain: the next mutation runs
|
|
206
|
+
* regardless of the prior outcome.
|
|
207
|
+
*/
|
|
208
|
+
private mutate;
|
|
209
|
+
private applyOnce;
|
|
210
|
+
private audit;
|
|
211
|
+
private boundText;
|
|
212
|
+
private find;
|
|
213
|
+
/**
|
|
214
|
+
* Open a `candidate` entry. Used directly by the deferral-detector auto-open
|
|
215
|
+
* trigger (Structure > Willpower — the agent doesn't choose to log it).
|
|
216
|
+
*/
|
|
217
|
+
open(input: {
|
|
218
|
+
detectedText: string;
|
|
219
|
+
origin: string;
|
|
220
|
+
}): Promise<BlockerEntry>;
|
|
221
|
+
list(opts?: {
|
|
222
|
+
limit?: number;
|
|
223
|
+
offset?: number;
|
|
224
|
+
includeArchived?: boolean;
|
|
225
|
+
}): {
|
|
226
|
+
entries: BlockerEntry[];
|
|
227
|
+
total: number;
|
|
228
|
+
};
|
|
229
|
+
get(id: string): BlockerEntry | undefined;
|
|
230
|
+
/**
|
|
231
|
+
* Advance through the linear non-terminal pipeline. REFUSES a transition that
|
|
232
|
+
* skips a state — the work-the-blocker states ARE the feature; bypassing them
|
|
233
|
+
* to a terminal is the exact avoidance Principle 1 exists to kill.
|
|
234
|
+
*/
|
|
235
|
+
advance(id: string, input: {
|
|
236
|
+
origin: string;
|
|
237
|
+
authorityCheck?: AuthorityCheckEvidence;
|
|
238
|
+
accessRequest?: AccessRequestEvidence;
|
|
239
|
+
dryRun?: Omit<AttemptEvidence, 'type' | 'succeeded'> & {
|
|
240
|
+
succeeded?: boolean;
|
|
241
|
+
};
|
|
242
|
+
liveRun?: LiveRunEvidence;
|
|
243
|
+
note?: string;
|
|
244
|
+
}): Promise<BlockerEntry>;
|
|
245
|
+
/**
|
|
246
|
+
* Settle to a terminal state with full evidence validation.
|
|
247
|
+
* - `resolved`: requires a confined, id-referencing playbook AND a successful live-run.
|
|
248
|
+
* - `true-blocker`: closed-taxonomy reason + failed-attempt rebuttal + post-attempt
|
|
249
|
+
* access-request + a PASS from the injected Tier-1 authority (B17).
|
|
250
|
+
*/
|
|
251
|
+
settle(id: string, input: {
|
|
252
|
+
origin: string;
|
|
253
|
+
kind: 'resolved';
|
|
254
|
+
playbookPath: string;
|
|
255
|
+
} | {
|
|
256
|
+
origin: string;
|
|
257
|
+
kind: 'true-blocker';
|
|
258
|
+
reasonKind: TrueBlockerKind;
|
|
259
|
+
rebuttal: string;
|
|
260
|
+
/** The mandatory FAILED work-attempt. `at` defaults to now; it MUST precede the access-request. */
|
|
261
|
+
failedAttempt: {
|
|
262
|
+
type: 'self-fetch' | 'dry-run';
|
|
263
|
+
detail: string;
|
|
264
|
+
at?: string;
|
|
265
|
+
};
|
|
266
|
+
/** The access-request to the user — recorded AFTER the failed attempt. */
|
|
267
|
+
accessRequest: {
|
|
268
|
+
messageRef: string;
|
|
269
|
+
at?: string;
|
|
270
|
+
};
|
|
271
|
+
}): Promise<BlockerEntry>;
|
|
272
|
+
private settleTrueBlocker;
|
|
273
|
+
/**
|
|
274
|
+
* D6 re-walk: reopen a settled true-blocker to `candidate` when its recheck date
|
|
275
|
+
* is due. The wall becomes a hypothesis again — re-settling requires NEW evidence.
|
|
276
|
+
*/
|
|
277
|
+
reopenForRecheck(id: string): Promise<BlockerEntry>;
|
|
278
|
+
/** Settled true-blockers whose recheck date is due (for the D6 job). */
|
|
279
|
+
dueForRecheck(now?: Date): BlockerEntry[];
|
|
280
|
+
/**
|
|
281
|
+
* Move terminal entries older than the archive threshold to the archive file,
|
|
282
|
+
* keeping the hot file bounded. Returns the number archived.
|
|
283
|
+
*/
|
|
284
|
+
archiveOld(now?: Date): Promise<number>;
|
|
285
|
+
private assertNotTerminal;
|
|
286
|
+
/** Parse a caller-supplied ISO timestamp; return undefined if absent/invalid. */
|
|
287
|
+
private normalizeIso;
|
|
288
|
+
private computeRecheckAfter;
|
|
289
|
+
/** Date.now/Math.random are unavailable in some contexts; derive jitter from the clock. */
|
|
290
|
+
private deterministicJitter;
|
|
291
|
+
private loadArchive;
|
|
292
|
+
private saveArchive;
|
|
293
|
+
}
|
|
294
|
+
//# sourceMappingURL=BlockerLedger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BlockerLedger.d.ts","sourceRoot":"","sources":["../../src/monitoring/BlockerLedger.ts"],"names":[],"mappings":"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"}
|