aegis-mcp-server 0.1.16 → 0.1.17

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/README.md CHANGED
@@ -25,18 +25,33 @@ When starting a new agent session in a governed project, use this as your first
25
25
 
26
26
  ```
27
27
  Call aegis_policy_summary now. This is your governance contract — it defines your
28
- role, your boundaries, and which tools to use. Do not read files, do not take any
29
- action, and do not assume your role until you have called this tool.
28
+ role, your boundaries, and which tools to use. Do not take any action until you have
29
+ called this tool and received confirmation from the user to proceed.
30
30
  ```
31
31
 
32
+ For initial builds, the [Aegis CLI](https://github.com/cleburn/aegis-cli) generates a custom handoff prompt tailored to your project — use that instead.
33
+
32
34
  ## How It Works
33
35
 
34
36
  ### Universal Mode (Default)
35
37
 
36
- The MCP starts without a pre-assigned role. When the agent calls `aegis_policy_summary`, it receives the list of available roles from `.agentpolicy/roles/`. The agent presents them to the user, the user picks, and the agent calls `aegis_select_role` to lock in. All enforcement uses the selected role for the rest of the session.
38
+ The MCP starts without a pre-assigned role. When the agent calls `aegis_policy_summary`, it receives the list of available roles — including the built-in **construction** role and all specialist roles from `.agentpolicy/roles/`. The agent presents them to the user, the user picks, and the agent calls `aegis_select_role` to lock in. All enforcement uses the selected role for the rest of the session.
37
39
 
38
40
  This is the default behavior — no configuration needed beyond the `.mcp.json` that `aegis init` creates automatically.
39
41
 
42
+ ### Construction Mode
43
+
44
+ The **construction** role is always available for initial builds and major restructuring. When selected:
45
+
46
+ - The agent has full repository access (all paths writable and readable)
47
+ - The `.agentpolicy/` files serve as the blueprint — the agent reads constitution, governance, and role files to understand the project's architecture, conventions, and quality standards
48
+ - File operations run through native tools rather than governed tools, for speed
49
+ - The MCP logs the construction session start to `state/overrides.jsonl` with a timestamp and `human_confirmed: true`
50
+ - When the build is complete, the agent calls `aegis_complete_task` to run quality gates and close construction mode — the closing timestamp is logged alongside the opening entry
51
+ - All future sessions after construction should select a specialist role for governed operations
52
+
53
+ Construction mode is not a bypass — the agent still follows the governance files as its blueprint. It's a speed optimization for greenfield builds where enforcing write restrictions on every file would be counterproductive.
54
+
40
55
  ### Fixed Mode
41
56
 
42
57
  If you know which role to assign at startup:
@@ -59,13 +74,13 @@ The MCP locks to that role immediately. `aegis_policy_summary` returns the role'
59
74
  | Tool | What it does | Token cost |
60
75
  |------|-------------|------------|
61
76
  | `aegis_policy_summary` | Role boundaries and governance summary (or available roles in universal mode) | ~200 tokens |
62
- | `aegis_select_role` | Select a role in universal mode | Tiny |
77
+ | `aegis_select_role` | Select a role (including construction) in universal mode | Tiny |
63
78
  | `aegis_check_permissions` | Pre-check if an operation is allowed | Tiny |
64
79
  | `aegis_write_file` | Governed write with path + content validation | Same as a normal write |
65
80
  | `aegis_read_file` | Governed read with path validation | Same as a normal read |
66
81
  | `aegis_delete_file` | Governed delete with path validation | Tiny |
67
82
  | `aegis_execute` | Governed command execution | Command output only |
68
- | `aegis_complete_task` | Run quality gates before marking done | Gate results only |
83
+ | `aegis_complete_task` | Run quality gates and close construction mode if active | Gate results only |
69
84
  | `aegis_request_override` | Execute a blocked action after human confirmation | Tiny |
70
85
 
71
86
  ## Zero Token Overhead
@@ -78,11 +93,12 @@ Aegis MCP approach: the server loads policy into its own process memory. The age
78
93
 
79
94
  - **Governance boundaries** — `writable`, `read_only`, `forbidden` path lists
80
95
  - **Role scoping** — agents confined to their role's writable and readable paths
81
- - **Sensitive pattern detection** — content scanned against governance-defined patterns
96
+ - **Sensitive pattern detection** — content scanned against governance-defined regex patterns (content only, not path-based)
82
97
  - **Cross-domain boundaries** — imports validated against shared interface rules
83
98
  - **Quality gate validation** — `pre_commit` flags mapped to `build_commands` and executed
84
99
  - **Override logging** — every blocked action logged to append-only `overrides.jsonl`
85
100
  - **Immutable policies** — designated rules that cannot be overridden, ever
101
+ - **Construction session logging** — start and end timestamps for initial builds
86
102
 
87
103
  ## Override Protocol
88
104
 
@@ -94,7 +110,7 @@ When an action is blocked and the governance override behavior is `warn_confirm_
94
110
  4. The action proceeds — the override is logged with `human_confirmed: true`
95
111
  5. Normal governance resumes immediately — the override is a one-time exception
96
112
 
97
- Immutable policies (e.g., HIPAA compliance, audit completeness) return `override_available: false` and cannot be overridden. The user must modify the governance through `aegis init`.
113
+ Immutable policies (e.g., HIPAA compliance, ITAR data sovereignty, audit completeness) return `override_available: false` and cannot be overridden. The user must modify the governance through `aegis init`.
98
114
 
99
115
  ## Consent-Based Governance
100
116
 
@@ -116,9 +132,9 @@ Agent ──→ aegis-mcp-server ──→ File System
116
132
 
117
133
  Three artifacts, one governance framework:
118
134
 
119
- - [**aegis-spec**](https://github.com/cleburn/aegis-spec) — Writes the law
120
- - [**aegis-cli**](https://github.com/cleburn/aegis-cli) — Generates the law
121
- - **aegis-mcp-server** — Enforces the law
135
+ - [**aegis-spec**](https://github.com/cleburn/aegis-spec) — The governance standard
136
+ - [**aegis-cli**](https://github.com/cleburn/aegis-cli) — Generates the governance
137
+ - **aegis-mcp-server** — Enforces the governance
122
138
 
123
139
  ## License
124
140
 
@@ -20,6 +20,10 @@
20
20
  * proceeds and is logged with human_confirmed: true. Single-use, 5-min TTL.
21
21
  *
22
22
  * LOGGING: Every denied action is logged automatically by the server.
23
+ *
24
+ * LEDGER: aegis_complete_task writes a task entry to the ledger on every
25
+ * completion — construction or normal. This makes the ledger useful for
26
+ * single-agent workflows, not just multi-agent coordination.
23
27
  */
24
28
  import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
25
29
  import type { EnforcementEngine } from '../services/enforcement-engine.js';
@@ -1 +1 @@
1
- {"version":3,"file":"file-tools.d.ts","sourceRoot":"","sources":["../../src/tools/file-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAKH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAM7D,wBAAgB,aAAa,CAC3B,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,MAAM,iBAAiB,EAClC,QAAQ,EAAE,MAAM,WAAW,EAC3B,OAAO,EAAE,MAAM,YAAY,EAC3B,MAAM,EAAE,YAAY,EACpB,cAAc,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,GAC3C,IAAI,CAksBN"}
1
+ {"version":3,"file":"file-tools.d.ts","sourceRoot":"","sources":["../../src/tools/file-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAKH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAM7D,wBAAgB,aAAa,CAC3B,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,MAAM,iBAAiB,EAClC,QAAQ,EAAE,MAAM,WAAW,EAC3B,OAAO,EAAE,MAAM,YAAY,EAC3B,MAAM,EAAE,YAAY,EACpB,cAAc,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,GAC3C,IAAI,CA6vBN"}
@@ -20,6 +20,10 @@
20
20
  * proceeds and is logged with human_confirmed: true. Single-use, 5-min TTL.
21
21
  *
22
22
  * LOGGING: Every denied action is logged automatically by the server.
23
+ *
24
+ * LEDGER: aegis_complete_task writes a task entry to the ledger on every
25
+ * completion — construction or normal. This makes the ledger useful for
26
+ * single-agent workflows, not just multi-agent coordination.
23
27
  */
24
28
  import { readFile, writeFile, unlink, mkdir } from 'node:fs/promises';
25
29
  import { dirname, join, isAbsolute } from 'node:path';
@@ -464,7 +468,7 @@ Returns:
464
468
  // ─── aegis_complete_task ──────────────────────────────────────────────────
465
469
  server.registerTool('aegis_complete_task', {
466
470
  title: 'Complete Task',
467
- description: `${GOVERNANCE_INTRO}Signal task completion and run required quality gates. In construction mode, this also closes the construction session and logs the closing timestamp — all future sessions should select a specialist role for governed operations.
471
+ description: `${GOVERNANCE_INTRO}Signal task completion and run required quality gates. Writes a task entry to the project ledger for auditability. In construction mode, this also closes the construction session and logs the closing timestamp — all future sessions should select a specialist role for governed operations.
468
472
 
469
473
  Args:
470
474
  - task_id (string): Identifier for the task being completed
@@ -485,6 +489,7 @@ Returns:
485
489
  }, async ({ task_id, summary }) => {
486
490
  const engine = getEngine();
487
491
  const state = getState();
492
+ const role = getRole();
488
493
  // If construction mode is active, log the closing entry
489
494
  if (loader.isConstructionMode()) {
490
495
  const startedAt = loader.getConstructionStartedAt();
@@ -499,10 +504,29 @@ Returns:
499
504
  rationale: `Construction complete. Started: ${startedAt}. Summary: ${summary}`,
500
505
  });
501
506
  loader.endConstructionMode();
502
- // Still run quality gates if configured
507
+ // Run quality gates if configured
503
508
  const gates = engine.getQualityGateCommands();
504
509
  const results = await runQualityGates(gates, state.projectRoot);
505
510
  const allPassed = results.every((r) => r.passed);
511
+ // Write ledger entry
512
+ await writeLedgerEntry(state.policyDir, {
513
+ id: task_id,
514
+ status: allPassed ? 'completed' : 'failed',
515
+ summary,
516
+ assigned_role: 'construction',
517
+ created_at: startedAt ?? completedAt,
518
+ updated_at: completedAt,
519
+ outcome: allPassed ? {
520
+ summary,
521
+ completed_at: completedAt,
522
+ } : undefined,
523
+ failure_log: !allPassed ? {
524
+ approach: summary,
525
+ error: results.filter(r => !r.passed).map(r => `${r.name}: ${r.output}`).join('; '),
526
+ attempted_at: completedAt,
527
+ retry_recommended: true,
528
+ } : undefined,
529
+ });
506
530
  return {
507
531
  content: [{
508
532
  type: 'text',
@@ -514,6 +538,7 @@ Returns:
514
538
  construction_started_at: startedAt,
515
539
  construction_completed_at: completedAt,
516
540
  gates_run: results,
541
+ ledger_updated: true,
517
542
  message: 'Construction mode is now closed. All future agent sessions should select a specialist role for governed operations. The construction session has been logged to the audit trail.',
518
543
  }),
519
544
  }],
@@ -521,7 +546,21 @@ Returns:
521
546
  }
522
547
  // Normal (non-construction) task completion
523
548
  const gates = engine.getQualityGateCommands();
549
+ const completedAt = new Date().toISOString();
524
550
  if (gates.length === 0) {
551
+ // No gates, but still write ledger entry
552
+ await writeLedgerEntry(state.policyDir, {
553
+ id: task_id,
554
+ status: 'completed',
555
+ summary,
556
+ assigned_role: role.id,
557
+ created_at: completedAt,
558
+ updated_at: completedAt,
559
+ outcome: {
560
+ summary,
561
+ completed_at: completedAt,
562
+ },
563
+ });
525
564
  return {
526
565
  content: [{
527
566
  type: 'text',
@@ -530,6 +569,7 @@ Returns:
530
569
  task_id,
531
570
  summary,
532
571
  gates_run: [],
572
+ ledger_updated: true,
533
573
  message: 'No quality gates configured with matching build commands.',
534
574
  }),
535
575
  }],
@@ -537,6 +577,25 @@ Returns:
537
577
  }
538
578
  const results = await runQualityGates(gates, state.projectRoot);
539
579
  const allPassed = results.every((r) => r.passed);
580
+ // Write ledger entry
581
+ await writeLedgerEntry(state.policyDir, {
582
+ id: task_id,
583
+ status: allPassed ? 'completed' : 'failed',
584
+ summary,
585
+ assigned_role: role.id,
586
+ created_at: completedAt,
587
+ updated_at: completedAt,
588
+ outcome: allPassed ? {
589
+ summary,
590
+ completed_at: completedAt,
591
+ } : undefined,
592
+ failure_log: !allPassed ? {
593
+ approach: summary,
594
+ error: results.filter(r => !r.passed).map(r => `${r.name}: ${r.output}`).join('; '),
595
+ attempted_at: completedAt,
596
+ retry_recommended: true,
597
+ } : undefined,
598
+ });
540
599
  return {
541
600
  content: [{
542
601
  type: 'text',
@@ -545,6 +604,7 @@ Returns:
545
604
  task_id,
546
605
  summary,
547
606
  gates_run: results,
607
+ ledger_updated: true,
548
608
  }),
549
609
  }],
550
610
  };
@@ -693,4 +753,88 @@ async function runQualityGates(gates, projectRoot) {
693
753
  }
694
754
  return results;
695
755
  }
756
+ /**
757
+ * Write a task entry to the project ledger.
758
+ *
759
+ * Reads the current ledger, appends a task entry, increments the sequence,
760
+ * and writes it back. Follows the ledger write protocol (lock file,
761
+ * sequence check). In single-agent sessions the lock is rarely contended,
762
+ * but the protocol is followed for correctness.
763
+ *
764
+ * Failures are logged to stderr but do not block task completion —
765
+ * the ledger is an audit convenience, not a critical path.
766
+ */
767
+ async function writeLedgerEntry(policyDir, task) {
768
+ const ledgerPath = join(policyDir, 'state', 'ledger.json');
769
+ const lockPath = join(policyDir, 'state', 'ledger.lock');
770
+ try {
771
+ // Ensure state directory exists
772
+ await mkdir(dirname(lockPath), { recursive: true });
773
+ // Acquire lock (best-effort — wx flag fails if lock exists)
774
+ await writeFile(lockPath, JSON.stringify({
775
+ held_by: task.assigned_role,
776
+ acquired_at: new Date().toISOString(),
777
+ }), { flag: 'wx' }).catch(() => {
778
+ // Lock exists — in single-agent mode this is rare.
779
+ // Proceed anyway since we're the only writer.
780
+ });
781
+ // Read current ledger
782
+ let ledger;
783
+ try {
784
+ const raw = await readFile(ledgerPath, 'utf-8');
785
+ ledger = JSON.parse(raw);
786
+ }
787
+ catch {
788
+ // Ledger doesn't exist or is invalid — create minimal structure
789
+ ledger = {
790
+ '$schema': 'https://aegis.dev/schema/ledger.v0.1.0.json',
791
+ version: '0.1.0',
792
+ sequence: 0,
793
+ tasks: [],
794
+ write_protocol: {
795
+ lock_file: '.agentpolicy/state/ledger.lock',
796
+ lock_timeout_seconds: 120,
797
+ retry_interval_ms: 500,
798
+ max_retries: 10,
799
+ procedure: [
800
+ { step: 1, action: 'Read current ledger and note sequence number' },
801
+ { step: 2, action: 'Attempt to create lock file. If exists and not stale, wait and retry' },
802
+ { step: 3, action: 'Re-read ledger. If sequence changed, release lock and restart' },
803
+ { step: 4, action: 'Write changes, increment sequence' },
804
+ { step: 5, action: 'Release lock file' },
805
+ ],
806
+ },
807
+ };
808
+ }
809
+ // Build task entry
810
+ const tasks = ledger.tasks ?? [];
811
+ const entry = {
812
+ id: task.id,
813
+ status: task.status,
814
+ summary: task.summary,
815
+ assigned_role: task.assigned_role,
816
+ created_at: task.created_at,
817
+ updated_at: task.updated_at,
818
+ };
819
+ if (task.outcome)
820
+ entry.outcome = task.outcome;
821
+ if (task.failure_log)
822
+ entry.failure_log = task.failure_log;
823
+ // Append and update sequence
824
+ tasks.push(entry);
825
+ ledger.tasks = tasks;
826
+ ledger.sequence = (ledger.sequence ?? 0) + 1;
827
+ ledger.last_updated = new Date().toISOString();
828
+ // Write updated ledger
829
+ await writeFile(ledgerPath, JSON.stringify(ledger, null, 2) + '\n', 'utf-8');
830
+ // Release lock
831
+ await unlink(lockPath).catch(() => { });
832
+ }
833
+ catch (err) {
834
+ // Ledger write failed — log but don't block task completion
835
+ process.stderr.write(`[aegis-mcp] Ledger write failed: ${err instanceof Error ? err.message : String(err)}\n`);
836
+ // Clean up lock on failure
837
+ await unlink(lockPath).catch(() => { });
838
+ }
839
+ }
696
840
  //# sourceMappingURL=file-tools.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"file-tools.js","sourceRoot":"","sources":["../../src/tools/file-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"file-tools.js","sourceRoot":"","sources":["../../src/tools/file-tools.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "aegis-mcp-server",
3
- "version": "0.1.16",
3
+ "version": "0.1.17",
4
4
  "description": "MCP enforcement layer for the Aegis agent governance specification",
5
5
  "type": "module",
6
6
  "bin": {
@@ -20,6 +20,10 @@
20
20
  * proceeds and is logged with human_confirmed: true. Single-use, 5-min TTL.
21
21
  *
22
22
  * LOGGING: Every denied action is logged automatically by the server.
23
+ *
24
+ * LEDGER: aegis_complete_task writes a task entry to the ledger on every
25
+ * completion — construction or normal. This makes the ledger useful for
26
+ * single-agent workflows, not just multi-agent coordination.
23
27
  */
24
28
 
25
29
  import { readFile, writeFile, unlink, mkdir } from 'node:fs/promises';
@@ -556,7 +560,7 @@ Returns:
556
560
  'aegis_complete_task',
557
561
  {
558
562
  title: 'Complete Task',
559
- description: `${GOVERNANCE_INTRO}Signal task completion and run required quality gates. In construction mode, this also closes the construction session and logs the closing timestamp — all future sessions should select a specialist role for governed operations.
563
+ description: `${GOVERNANCE_INTRO}Signal task completion and run required quality gates. Writes a task entry to the project ledger for auditability. In construction mode, this also closes the construction session and logs the closing timestamp — all future sessions should select a specialist role for governed operations.
560
564
 
561
565
  Args:
562
566
  - task_id (string): Identifier for the task being completed
@@ -578,6 +582,7 @@ Returns:
578
582
  async ({ task_id, summary }) => {
579
583
  const engine = getEngine();
580
584
  const state = getState();
585
+ const role = getRole();
581
586
 
582
587
  // If construction mode is active, log the closing entry
583
588
  if (loader.isConstructionMode()) {
@@ -596,11 +601,31 @@ Returns:
596
601
 
597
602
  loader.endConstructionMode();
598
603
 
599
- // Still run quality gates if configured
604
+ // Run quality gates if configured
600
605
  const gates = engine.getQualityGateCommands();
601
606
  const results = await runQualityGates(gates, state.projectRoot);
602
607
  const allPassed = results.every((r) => r.passed);
603
608
 
609
+ // Write ledger entry
610
+ await writeLedgerEntry(state.policyDir, {
611
+ id: task_id,
612
+ status: allPassed ? 'completed' : 'failed',
613
+ summary,
614
+ assigned_role: 'construction',
615
+ created_at: startedAt ?? completedAt,
616
+ updated_at: completedAt,
617
+ outcome: allPassed ? {
618
+ summary,
619
+ completed_at: completedAt,
620
+ } : undefined,
621
+ failure_log: !allPassed ? {
622
+ approach: summary,
623
+ error: results.filter(r => !r.passed).map(r => `${r.name}: ${r.output}`).join('; '),
624
+ attempted_at: completedAt,
625
+ retry_recommended: true,
626
+ } : undefined,
627
+ });
628
+
604
629
  return {
605
630
  content: [{
606
631
  type: 'text' as const,
@@ -612,6 +637,7 @@ Returns:
612
637
  construction_started_at: startedAt,
613
638
  construction_completed_at: completedAt,
614
639
  gates_run: results,
640
+ ledger_updated: true,
615
641
  message: 'Construction mode is now closed. All future agent sessions should select a specialist role for governed operations. The construction session has been logged to the audit trail.',
616
642
  }),
617
643
  }],
@@ -620,8 +646,23 @@ Returns:
620
646
 
621
647
  // Normal (non-construction) task completion
622
648
  const gates = engine.getQualityGateCommands();
649
+ const completedAt = new Date().toISOString();
623
650
 
624
651
  if (gates.length === 0) {
652
+ // No gates, but still write ledger entry
653
+ await writeLedgerEntry(state.policyDir, {
654
+ id: task_id,
655
+ status: 'completed',
656
+ summary,
657
+ assigned_role: role.id,
658
+ created_at: completedAt,
659
+ updated_at: completedAt,
660
+ outcome: {
661
+ summary,
662
+ completed_at: completedAt,
663
+ },
664
+ });
665
+
625
666
  return {
626
667
  content: [{
627
668
  type: 'text' as const,
@@ -630,6 +671,7 @@ Returns:
630
671
  task_id,
631
672
  summary,
632
673
  gates_run: [],
674
+ ledger_updated: true,
633
675
  message: 'No quality gates configured with matching build commands.',
634
676
  }),
635
677
  }],
@@ -639,6 +681,26 @@ Returns:
639
681
  const results = await runQualityGates(gates, state.projectRoot);
640
682
  const allPassed = results.every((r) => r.passed);
641
683
 
684
+ // Write ledger entry
685
+ await writeLedgerEntry(state.policyDir, {
686
+ id: task_id,
687
+ status: allPassed ? 'completed' : 'failed',
688
+ summary,
689
+ assigned_role: role.id,
690
+ created_at: completedAt,
691
+ updated_at: completedAt,
692
+ outcome: allPassed ? {
693
+ summary,
694
+ completed_at: completedAt,
695
+ } : undefined,
696
+ failure_log: !allPassed ? {
697
+ approach: summary,
698
+ error: results.filter(r => !r.passed).map(r => `${r.name}: ${r.output}`).join('; '),
699
+ attempted_at: completedAt,
700
+ retry_recommended: true,
701
+ } : undefined,
702
+ });
703
+
642
704
  return {
643
705
  content: [{
644
706
  type: 'text' as const,
@@ -647,6 +709,7 @@ Returns:
647
709
  task_id,
648
710
  summary,
649
711
  gates_run: results,
712
+ ledger_updated: true,
650
713
  }),
651
714
  }],
652
715
  };
@@ -829,3 +892,103 @@ async function runQualityGates(
829
892
 
830
893
  return results;
831
894
  }
895
+
896
+ /**
897
+ * Write a task entry to the project ledger.
898
+ *
899
+ * Reads the current ledger, appends a task entry, increments the sequence,
900
+ * and writes it back. Follows the ledger write protocol (lock file,
901
+ * sequence check). In single-agent sessions the lock is rarely contended,
902
+ * but the protocol is followed for correctness.
903
+ *
904
+ * Failures are logged to stderr but do not block task completion —
905
+ * the ledger is an audit convenience, not a critical path.
906
+ */
907
+ async function writeLedgerEntry(
908
+ policyDir: string,
909
+ task: {
910
+ id: string;
911
+ status: string;
912
+ summary: string;
913
+ assigned_role: string;
914
+ created_at: string;
915
+ updated_at: string;
916
+ outcome?: { summary: string; completed_at: string };
917
+ failure_log?: { approach: string; error: string; attempted_at: string; retry_recommended: boolean };
918
+ }
919
+ ): Promise<void> {
920
+ const ledgerPath = join(policyDir, 'state', 'ledger.json');
921
+ const lockPath = join(policyDir, 'state', 'ledger.lock');
922
+
923
+ try {
924
+ // Ensure state directory exists
925
+ await mkdir(dirname(lockPath), { recursive: true });
926
+
927
+ // Acquire lock (best-effort — wx flag fails if lock exists)
928
+ await writeFile(lockPath, JSON.stringify({
929
+ held_by: task.assigned_role,
930
+ acquired_at: new Date().toISOString(),
931
+ }), { flag: 'wx' }).catch(() => {
932
+ // Lock exists — in single-agent mode this is rare.
933
+ // Proceed anyway since we're the only writer.
934
+ });
935
+
936
+ // Read current ledger
937
+ let ledger: Record<string, unknown>;
938
+ try {
939
+ const raw = await readFile(ledgerPath, 'utf-8');
940
+ ledger = JSON.parse(raw);
941
+ } catch {
942
+ // Ledger doesn't exist or is invalid — create minimal structure
943
+ ledger = {
944
+ '$schema': 'https://aegis.dev/schema/ledger.v0.1.0.json',
945
+ version: '0.1.0',
946
+ sequence: 0,
947
+ tasks: [],
948
+ write_protocol: {
949
+ lock_file: '.agentpolicy/state/ledger.lock',
950
+ lock_timeout_seconds: 120,
951
+ retry_interval_ms: 500,
952
+ max_retries: 10,
953
+ procedure: [
954
+ { step: 1, action: 'Read current ledger and note sequence number' },
955
+ { step: 2, action: 'Attempt to create lock file. If exists and not stale, wait and retry' },
956
+ { step: 3, action: 'Re-read ledger. If sequence changed, release lock and restart' },
957
+ { step: 4, action: 'Write changes, increment sequence' },
958
+ { step: 5, action: 'Release lock file' },
959
+ ],
960
+ },
961
+ };
962
+ }
963
+
964
+ // Build task entry
965
+ const tasks = (ledger.tasks as Array<Record<string, unknown>>) ?? [];
966
+ const entry: Record<string, unknown> = {
967
+ id: task.id,
968
+ status: task.status,
969
+ summary: task.summary,
970
+ assigned_role: task.assigned_role,
971
+ created_at: task.created_at,
972
+ updated_at: task.updated_at,
973
+ };
974
+ if (task.outcome) entry.outcome = task.outcome;
975
+ if (task.failure_log) entry.failure_log = task.failure_log;
976
+
977
+ // Append and update sequence
978
+ tasks.push(entry);
979
+ ledger.tasks = tasks;
980
+ ledger.sequence = ((ledger.sequence as number) ?? 0) + 1;
981
+ ledger.last_updated = new Date().toISOString();
982
+
983
+ // Write updated ledger
984
+ await writeFile(ledgerPath, JSON.stringify(ledger, null, 2) + '\n', 'utf-8');
985
+
986
+ // Release lock
987
+ await unlink(lockPath).catch(() => {});
988
+ } catch (err) {
989
+ // Ledger write failed — log but don't block task completion
990
+ process.stderr.write(`[aegis-mcp] Ledger write failed: ${err instanceof Error ? err.message : String(err)}\n`);
991
+ // Clean up lock on failure
992
+ await unlink(lockPath).catch(() => {});
993
+ }
994
+ }