@neurcode-ai/governance-runtime 0.1.3 → 0.1.4

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 (50) hide show
  1. package/LICENSE +201 -0
  2. package/dist/admission-provenance.d.ts +111 -0
  3. package/dist/admission-provenance.d.ts.map +1 -0
  4. package/dist/admission-provenance.js +735 -0
  5. package/dist/admission-provenance.js.map +1 -0
  6. package/dist/agent-guard-posture.d.ts +40 -0
  7. package/dist/agent-guard-posture.d.ts.map +1 -0
  8. package/dist/agent-guard-posture.js +117 -0
  9. package/dist/agent-guard-posture.js.map +1 -0
  10. package/dist/agent-invocation-observability.d.ts +47 -0
  11. package/dist/agent-invocation-observability.d.ts.map +1 -0
  12. package/dist/agent-invocation-observability.js +229 -0
  13. package/dist/agent-invocation-observability.js.map +1 -0
  14. package/dist/agent-plan.d.ts +119 -0
  15. package/dist/agent-plan.d.ts.map +1 -0
  16. package/dist/agent-plan.js +565 -0
  17. package/dist/agent-plan.js.map +1 -0
  18. package/dist/agent-runtime-adapter.d.ts +69 -0
  19. package/dist/agent-runtime-adapter.d.ts.map +1 -0
  20. package/dist/agent-runtime-adapter.js +274 -0
  21. package/dist/agent-runtime-adapter.js.map +1 -0
  22. package/dist/ai-change-record.d.ts +185 -0
  23. package/dist/ai-change-record.d.ts.map +1 -0
  24. package/dist/ai-change-record.js +580 -0
  25. package/dist/ai-change-record.js.map +1 -0
  26. package/dist/architecture-graph.d.ts +153 -0
  27. package/dist/architecture-graph.d.ts.map +1 -0
  28. package/dist/architecture-graph.js +646 -0
  29. package/dist/architecture-graph.js.map +1 -0
  30. package/dist/architecture-obligations.d.ts +153 -0
  31. package/dist/architecture-obligations.d.ts.map +1 -0
  32. package/dist/architecture-obligations.js +505 -0
  33. package/dist/architecture-obligations.js.map +1 -0
  34. package/dist/index.d.ts +10 -0
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.js +103 -1
  37. package/dist/index.js.map +1 -1
  38. package/dist/profile.d.ts +159 -0
  39. package/dist/profile.d.ts.map +1 -0
  40. package/dist/profile.js +611 -0
  41. package/dist/profile.js.map +1 -0
  42. package/dist/session.d.ts +428 -0
  43. package/dist/session.d.ts.map +1 -0
  44. package/dist/session.js +2052 -0
  45. package/dist/session.js.map +1 -0
  46. package/package.json +19 -8
  47. package/src/constraints.ts +0 -828
  48. package/src/index.test.ts +0 -502
  49. package/src/index.ts +0 -463
  50. package/tsconfig.json +0 -19
@@ -0,0 +1,428 @@
1
+ /**
2
+ * V0 session store — lightweight JSON-file-backed governance session.
3
+ *
4
+ * One session per .neurcode/sessions/<id>.json.
5
+ * No daemon required; CLI commands and hooks read/write directly.
6
+ */
7
+ import { type OwnershipBoundary, type PlanCoherenceMode, type RepoGovernanceProfile } from './profile';
8
+ import { type AgentPlan, type AgentPlanSource, type PlanCoherenceResult } from './agent-plan';
9
+ import { type ArchitectureObligation, type ArchitectureObligationPolicy, type ArchitectureObligationWaiver, type ArchitectureObligationWaiverSource } from './architecture-obligations';
10
+ import type { RepoArchitectureGraph } from './architecture-graph';
11
+ export type EventType = 'session_start' | 'check_ok' | 'check_warn' | 'check_block' | 'approval_decision' | 'user_decision' | 'plan_captured' | 'plan_amended' | 'plan_amendment_proposed' | 'plan_amendment_decision' | 'obligation_state_changed' | 'obligation_waiver_decision' | 'agent_session_launched' | 'agent_handshake' | 'agent_runtime_call' | 'agent_guard_started' | 'agent_guard_status' | 'agent_guard_finished' | 'agent_guard_supervisor_started' | 'agent_guard_supervisor_stopped' | 'structural_understanding' | 'consequence_nudge' | 'session_finish';
12
+ export interface SessionEvent {
13
+ type: EventType;
14
+ ts: string;
15
+ filePath?: string;
16
+ verdict?: string;
17
+ message?: string;
18
+ decision?: string;
19
+ detail?: Record<string, unknown>;
20
+ }
21
+ /**
22
+ * scopeMode tracks how the allowed-glob list was derived:
23
+ * 'explicit' — user supplied specific paths in the goal (path-like tokens)
24
+ * 'inferred' — keyword-based inference from the goal text
25
+ * 'ambiguous' — goal had no recognisable scope signal; globs are a conservative
26
+ * best-effort list that excludes approval-required areas,
27
+ * but the boundary check should treat any approval-required hit as block.
28
+ */
29
+ export type ScopeMode = 'explicit' | 'inferred' | 'ambiguous';
30
+ export type ApprovalSource = 'local_cli' | 'dashboard' | 'mcp' | 'vscode' | 'unknown';
31
+ export declare const DEFAULT_APPROVAL_TTL_MS: number;
32
+ export declare const DEFAULT_OBLIGATION_WAIVER_TTL_MS: number;
33
+ export type IntentConfidence = 'high' | 'medium' | 'low';
34
+ export type IntentPrimaryAction = 'add' | 'modify' | 'fix' | 'refactor' | 'test' | 'document' | 'remove' | 'migrate' | 'unknown';
35
+ export interface IntentObligation {
36
+ id: string;
37
+ title: string;
38
+ description: string;
39
+ severity: 'info' | 'warn' | 'critical';
40
+ }
41
+ export interface IntentContract {
42
+ schemaVersion: 1;
43
+ summary: string;
44
+ primaryAction: IntentPrimaryAction;
45
+ confidence: IntentConfidence;
46
+ target: {
47
+ pathTokens: string[];
48
+ domainKeywords: string[];
49
+ expectedPathGlobs: string[];
50
+ supportPathGlobs: string[];
51
+ };
52
+ obligations: IntentObligation[];
53
+ outOfScopeGlobs: string[];
54
+ riskNotes: string[];
55
+ createdAt: string;
56
+ }
57
+ export type IntentCoherenceVerdict = 'aligned' | 'supporting' | 'drift' | 'unknown';
58
+ export interface IntentCoherenceResult {
59
+ verdict: IntentCoherenceVerdict;
60
+ score: number;
61
+ filePath: string;
62
+ matchedGlobs: string[];
63
+ reasons: string[];
64
+ obligations: IntentObligation[];
65
+ }
66
+ export interface ApprovalGrant {
67
+ path: string;
68
+ reason: string;
69
+ approvedAt: string;
70
+ expiresAt: string | null;
71
+ source: ApprovalSource;
72
+ eventId: string;
73
+ approvedBy?: string | null;
74
+ requestId?: string | null;
75
+ revokedAt?: string | null;
76
+ revokedBy?: string | null;
77
+ revocationReason?: string | null;
78
+ }
79
+ export interface SessionContract {
80
+ goal: string;
81
+ /** Glob patterns the agent is allowed to edit. */
82
+ allowedGlobs: string[];
83
+ sensitiveGlobs: string[];
84
+ approvalRequiredGlobs: string[];
85
+ ownershipRules: OwnershipBoundary[];
86
+ scopeMode: ScopeMode;
87
+ safeSupportGlobs: string[];
88
+ ignoredGlobs: string[];
89
+ /**
90
+ * Paths/globs for which the human has explicitly granted approval in this session.
91
+ * Empty = no approvals on record. Checked by checkFileBoundary before blocking.
92
+ */
93
+ approvedPaths: string[];
94
+ /** Structured approval metadata used for expiry and audit. */
95
+ approvalGrants?: ApprovalGrant[];
96
+ /** Source-free intent model derived from the user's task and repo profile. */
97
+ intentContract?: IntentContract;
98
+ /** Repo policy for edits that the captured agent plan did not justify. */
99
+ planCoherenceMode?: PlanCoherenceMode;
100
+ /**
101
+ * Source-free model of the agent's *own stated plan* (steps + expected files),
102
+ * captured from Claude Code hook payloads when the agent exposes one.
103
+ * Optional for backward compatibility with pre-V1 session records.
104
+ */
105
+ agentPlan?: AgentPlan;
106
+ /**
107
+ * Active agent-plan revision number. `agentPlan` remains the latest/active
108
+ * snapshot for backward compatibility; this revision tells reviewers whether
109
+ * the plan changed during the session.
110
+ */
111
+ agentPlanRevision?: number;
112
+ /**
113
+ * Source-free revision ledger for plan changes inside the live session.
114
+ * No source, diffs, or patches are stored — only the plan metadata that was
115
+ * already eligible for `agentPlan`.
116
+ */
117
+ agentPlanRevisions?: AgentPlanRevision[];
118
+ /**
119
+ * Source-free proposal ledger for agent-authored amendments that require a
120
+ * human decision before they can become the active enforcement plan.
121
+ */
122
+ planAmendmentProposals?: AgentPlanAmendmentProposal[];
123
+ /**
124
+ * Live source-free architecture obligations derived from intent, the
125
+ * accepted plan, guarded change trajectory, and exact approvals.
126
+ */
127
+ architectureObligations?: ArchitectureObligation[];
128
+ /** Session-captured authority policy for live architecture obligations. */
129
+ architectureObligationPolicy?: ArchitectureObligationPolicy;
130
+ /** Session-scoped human waivers for architecture obligations. */
131
+ architectureObligationWaivers?: ArchitectureObligationWaiver[];
132
+ /**
133
+ * V2 repository architecture graph (module boundaries + dependency edges +
134
+ * surfaces) carried from the repo profile. Source-free; used to derive
135
+ * structural obligations as the agent edits. Optional for pre-V2 sessions.
136
+ */
137
+ architectureGraph?: RepoArchitectureGraph;
138
+ }
139
+ export type AgentPlanRevisionKind = 'captured' | 'amended';
140
+ export type AgentPlanAmendmentActor = 'agent' | 'human' | 'system';
141
+ export type AgentPlanAmendmentRiskLevel = 'low' | 'medium' | 'high';
142
+ export type AgentPlanAmendmentProposalStatus = 'pending' | 'accepted' | 'rejected';
143
+ export type AgentPlanAmendmentDecision = 'accept' | 'reject';
144
+ export interface AgentPlanRevision {
145
+ revision: number;
146
+ kind: AgentPlanRevisionKind;
147
+ plan: AgentPlan;
148
+ reason: string;
149
+ source: AgentPlanSource;
150
+ capturedAt: string;
151
+ eventId: string;
152
+ }
153
+ export type AgentPlanAmendmentAction = 'replace' | 'patch';
154
+ export interface AgentPlanAmendmentInput {
155
+ sessionId?: string;
156
+ /** Full replacement plan text, usually from a re-plan / ExitPlanMode step. */
157
+ planText?: string;
158
+ /** Replacement summary when patching the active plan. */
159
+ summary?: string;
160
+ addSteps?: string[];
161
+ removeSteps?: string[];
162
+ addExpectedFiles?: string[];
163
+ removeExpectedFiles?: string[];
164
+ addExpectedGlobs?: string[];
165
+ removeExpectedGlobs?: string[];
166
+ addConstraints?: string[];
167
+ removeConstraints?: string[];
168
+ addRisks?: string[];
169
+ removeRisks?: string[];
170
+ reason?: string;
171
+ source?: AgentPlanSource;
172
+ proposedBy?: AgentPlanAmendmentActor;
173
+ decidedBy?: string;
174
+ amendedAt?: string;
175
+ }
176
+ export interface AgentPlanAmendmentResult {
177
+ sessionId: string;
178
+ previousRevision: number;
179
+ revision: number | null;
180
+ action: AgentPlanAmendmentAction;
181
+ reason: string;
182
+ eventId: string;
183
+ status: 'applied' | 'pending';
184
+ risk: AgentPlanAmendmentRisk;
185
+ activePlan: AgentPlan | null;
186
+ proposal?: AgentPlanAmendmentProposal;
187
+ }
188
+ export interface AgentPlanAmendmentRisk {
189
+ level: AgentPlanAmendmentRiskLevel;
190
+ requiresHumanApproval: boolean;
191
+ reasons: string[];
192
+ addedFiles: string[];
193
+ addedGlobs: string[];
194
+ removedConstraints: string[];
195
+ }
196
+ export interface AgentPlanAmendmentProposal {
197
+ proposalId: string;
198
+ sessionId: string;
199
+ previousRevision: number;
200
+ action: AgentPlanAmendmentAction;
201
+ proposedBy: AgentPlanAmendmentActor;
202
+ source: AgentPlanSource;
203
+ reason: string;
204
+ proposedPlan: AgentPlan;
205
+ risk: AgentPlanAmendmentRisk;
206
+ status: AgentPlanAmendmentProposalStatus;
207
+ createdAt: string;
208
+ decidedAt?: string | null;
209
+ decidedBy?: string | null;
210
+ decisionReason?: string | null;
211
+ appliedRevision?: number | null;
212
+ }
213
+ export interface AgentPlanCaptureResult {
214
+ session: GovernanceSession;
215
+ status: 'captured' | 'applied' | 'pending' | 'unchanged';
216
+ proposal?: AgentPlanAmendmentProposal;
217
+ }
218
+ export interface AgentPlanAmendmentDecisionInput {
219
+ sessionId?: string;
220
+ proposalId: string;
221
+ decision: AgentPlanAmendmentDecision;
222
+ reason?: string;
223
+ decidedBy?: string;
224
+ source?: AgentPlanSource;
225
+ decidedAt?: string;
226
+ }
227
+ export interface AgentPlanAmendmentDecisionResult {
228
+ sessionId: string;
229
+ proposalId: string;
230
+ decision: AgentPlanAmendmentDecision;
231
+ status: AgentPlanAmendmentProposalStatus;
232
+ previousRevision: number;
233
+ revision: number | null;
234
+ activePlan: AgentPlan | null;
235
+ }
236
+ export type PlanCoherencePolicyAction = 'none' | 'warn' | 'block';
237
+ export interface PlanCoherencePolicyDecision {
238
+ mode: PlanCoherenceMode;
239
+ action: PlanCoherencePolicyAction;
240
+ reason: string;
241
+ }
242
+ export interface GovernanceSession {
243
+ schemaVersion: 1;
244
+ sessionId: string;
245
+ profileHash: string;
246
+ repoName: string;
247
+ contract: SessionContract;
248
+ events: SessionEvent[];
249
+ replayHash?: string;
250
+ finishedAt?: string;
251
+ status: 'active' | 'finished';
252
+ }
253
+ export interface UnresolvedApprovalBlock {
254
+ filePath: string;
255
+ suggestedApprovalPath: string;
256
+ }
257
+ export interface FinishSessionOptions {
258
+ unresolvedApprovalBlocks?: UnresolvedApprovalBlock[];
259
+ reason?: string;
260
+ }
261
+ export declare function sessionsDir(projectRoot: string): string;
262
+ export declare function sessionPath(projectRoot: string, sessionId: string): string;
263
+ export declare function createSession(projectRoot: string, profile: RepoGovernanceProfile, goal: string): GovernanceSession;
264
+ export declare function loadActiveSession(projectRoot: string): GovernanceSession | null;
265
+ export declare function loadSession(projectRoot: string, sessionId: string): GovernanceSession | null;
266
+ export declare function appendEvent(projectRoot: string, sessionId: string, event: SessionEvent): GovernanceSession | null;
267
+ export declare function refreshArchitectureObligations(projectRoot: string, sessionId: string, now?: string): GovernanceSession | null;
268
+ export interface ApprovalResult {
269
+ sessionId: string;
270
+ approvedPath: string;
271
+ approvedPaths: string[];
272
+ approvalGrant: ApprovalGrant;
273
+ expiresAt: string | null;
274
+ eventId: string;
275
+ }
276
+ export interface ApprovalOptions {
277
+ reason?: string;
278
+ sessionId?: string;
279
+ expiresAt?: string | null;
280
+ ttlMs?: number | null;
281
+ source?: ApprovalSource;
282
+ approvedBy?: string | null;
283
+ requestId?: string | null;
284
+ approvedAt?: string;
285
+ }
286
+ export interface ApprovalRevocationOptions {
287
+ reason?: string;
288
+ sessionId?: string;
289
+ requestId?: string | null;
290
+ source?: ApprovalSource;
291
+ revokedBy?: string | null;
292
+ revokedAt?: string;
293
+ }
294
+ export interface ApprovalRevocationResult {
295
+ sessionId: string;
296
+ revokedPath: string;
297
+ approvedPaths: string[];
298
+ approvalGrant: ApprovalGrant;
299
+ revokedAt: string;
300
+ }
301
+ export interface ArchitectureObligationWaiverOptions {
302
+ reason?: string;
303
+ sessionId?: string;
304
+ expiresAt?: string | null;
305
+ ttlMs?: number | null;
306
+ source?: ArchitectureObligationWaiverSource;
307
+ waivedBy?: string | null;
308
+ waivedAt?: string;
309
+ }
310
+ export interface ArchitectureObligationWaiverResult {
311
+ sessionId: string;
312
+ obligationId: string;
313
+ waiver: ArchitectureObligationWaiver;
314
+ expiresAt: string | null;
315
+ eventId: string;
316
+ architectureObligations: ArchitectureObligation[];
317
+ }
318
+ export declare function activeApprovalPaths(contract: SessionContract, checkedAt?: string): string[];
319
+ export declare function expireSessionApprovals(projectRoot: string, sessionId: string, checkedAt?: string): GovernanceSession | null;
320
+ export declare function expireArchitectureObligationWaivers(projectRoot: string, sessionId: string, checkedAt?: string): GovernanceSession | null;
321
+ export declare function waiveArchitectureObligation(projectRoot: string, obligationId: string, options?: ArchitectureObligationWaiverOptions): ArchitectureObligationWaiverResult;
322
+ export declare function approveSession(projectRoot: string, approvedPath: string, reason?: string | ApprovalOptions, sessionId?: string): ApprovalResult;
323
+ /**
324
+ * Revoke one exact session grant and recompute the backward-compatible active
325
+ * path list. Dashboard revocations prefer requestId so the same path can be
326
+ * approved again later without revoking the wrong historical grant.
327
+ */
328
+ export declare function revokeSessionApproval(projectRoot: string, approvedPath: string, options?: ApprovalRevocationOptions): ApprovalRevocationResult;
329
+ export declare function finishSession(projectRoot: string, sessionId: string, options?: FinishSessionOptions): GovernanceSession | null;
330
+ export declare function replaySession(session: GovernanceSession): {
331
+ replayHash: string;
332
+ matchesOriginal: boolean;
333
+ originalHash: string | undefined;
334
+ };
335
+ export declare function evaluateIntentCoherence(contract: SessionContract, filePath: string): IntentCoherenceResult;
336
+ /**
337
+ * Attach (or replace) the agent's captured plan on a session contract and record
338
+ * a `plan_captured` event. Source-free: only the AgentPlan metadata is stored.
339
+ * Returns null when the session cannot be loaded; never throws on a missing plan.
340
+ */
341
+ export declare function attachAgentPlan(projectRoot: string, sessionId: string, plan: AgentPlan): GovernanceSession | null;
342
+ /**
343
+ * Deterministically classify a proposed plan change. The risk model is
344
+ * intentionally conservative around permission-envelope expansion:
345
+ * - broad globs require human review;
346
+ * - newly named sensitive / approval-required / owned files require review;
347
+ * - files outside the original intent envelope require review;
348
+ * - removing a stated constraint requires review.
349
+ *
350
+ * Adding a concrete file already inside the declared task intent stays fluid,
351
+ * which preserves normal iterative implementation work.
352
+ */
353
+ export declare function classifyAgentPlanAmendment(contract: SessionContract, proposedPlan: AgentPlan): AgentPlanAmendmentRisk;
354
+ /**
355
+ * Capture an agent-emitted plan from the live hook path. The initial plan is
356
+ * accepted as revision 1. Later safe refinements apply automatically, while
357
+ * risky agent-authored expansions remain pending until a human decides.
358
+ */
359
+ export declare function captureAgentPlan(projectRoot: string, sessionId: string, plan: AgentPlan): AgentPlanCaptureResult | null;
360
+ /**
361
+ * Amend the active agent plan for a live session. This is the user/agent
362
+ * re-plan path: it updates `contract.agentPlan` immediately, appends a
363
+ * source-free revision, and records a `plan_amended` event for replay.
364
+ */
365
+ export declare function amendAgentPlan(projectRoot: string, input: AgentPlanAmendmentInput): AgentPlanAmendmentResult;
366
+ export declare function decideAgentPlanAmendment(projectRoot: string, input: AgentPlanAmendmentDecisionInput): AgentPlanAmendmentDecisionResult;
367
+ /**
368
+ * Plan/edit coherence for a session: does this edit follow the agent's own plan?
369
+ *
370
+ * Maps the session's intent-support scope into the deterministic plan-coherence
371
+ * evaluator. Boundary/approval blocks always override this advisory verdict at
372
+ * the call site; an `unplanned` verdict must not block on its own in V1.
373
+ */
374
+ export declare function evaluateSessionPlanCoherence(contract: SessionContract, filePath: string): PlanCoherenceResult;
375
+ export declare function evaluatePlanCoherencePolicy(mode: PlanCoherenceMode | undefined, planCoherence: PlanCoherenceResult): PlanCoherencePolicyDecision;
376
+ export type PlanTimelineEntryKind = 'intent' | 'plan_captured' | 'plan_amended' | 'amendment_proposed' | 'amendment_accepted' | 'amendment_rejected' | 'boundary_block' | 'drift_warning' | 'approval' | 'obligation_waiver';
377
+ export interface PlanTimelineEntry {
378
+ kind: PlanTimelineEntryKind;
379
+ ts: string;
380
+ /** Active agent-plan revision in force when this entry occurred (0 = no plan yet). */
381
+ activePlanRevision: number;
382
+ /** Short, source-free label for the entry. */
383
+ label: string;
384
+ /** Plan revision this entry *creates* (only for plan_captured / plan_amended). */
385
+ revision?: number;
386
+ /** Repo-relative path for check / approval entries (never file contents). */
387
+ filePath?: string;
388
+ /** Source / actor metadata (e.g. agent, manual, mcp, human). */
389
+ source?: string;
390
+ /** Boundary verdict for check entries. */
391
+ verdict?: string;
392
+ }
393
+ export interface PlanTimeline {
394
+ sessionId: string;
395
+ /** Initial captured intent summary (the first intent record). */
396
+ intentSummary: string;
397
+ /** Latest non-reverted plan revision (0 when no plan has been captured). */
398
+ activePlanRevision: number;
399
+ /** Number of plan versions recorded (never decreases; older plans are kept). */
400
+ planVersions: number;
401
+ amendmentCount: number;
402
+ pendingAmendmentCount: number;
403
+ driftWarningCount: number;
404
+ blockedBoundaryCount: number;
405
+ approvalCount: number;
406
+ /** Ordered, source-free milestones: intent → plan vN → amendment → block/warn/approval. */
407
+ entries: PlanTimelineEntry[];
408
+ }
409
+ /**
410
+ * Latest non-reverted agent-plan revision for a contract. `0` means no agent
411
+ * plan has been captured yet. Public wrapper around the internal resolver so
412
+ * callers (hooks, evidence, dashboard) can record which plan version was active.
413
+ */
414
+ export declare function activeAgentPlanRevision(contract: SessionContract): number;
415
+ /**
416
+ * Build a source-free plan timeline from a governance session.
417
+ *
418
+ * Derived purely from data already persisted on the session (goal, intent
419
+ * contract, plan revision ledger, amendment proposals, and boundary-check
420
+ * events). No source, diffs, or file contents are read or emitted — only the
421
+ * summaries, paths, and revision numbers that already live in the record.
422
+ *
423
+ * The timeline reads: Intent → Plan v1 → Amendment v2 → Block / Warning /
424
+ * Approval, with every milestone tagged with the plan revision that was active
425
+ * when it occurred.
426
+ */
427
+ export declare function buildPlanTimeline(session: GovernanceSession): PlanTimeline;
428
+ //# sourceMappingURL=session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}