@det-acp/core 0.2.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 (114) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +492 -0
  3. package/dist/cli/index.d.ts +15 -0
  4. package/dist/cli/index.d.ts.map +1 -0
  5. package/dist/cli/index.js +308 -0
  6. package/dist/cli/index.js.map +1 -0
  7. package/dist/cli/init.d.ts +32 -0
  8. package/dist/cli/init.d.ts.map +1 -0
  9. package/dist/cli/init.js +234 -0
  10. package/dist/cli/init.js.map +1 -0
  11. package/dist/cli/templates.d.ts +27 -0
  12. package/dist/cli/templates.d.ts.map +1 -0
  13. package/dist/cli/templates.js +266 -0
  14. package/dist/cli/templates.js.map +1 -0
  15. package/dist/engine/action-registry.d.ts +49 -0
  16. package/dist/engine/action-registry.d.ts.map +1 -0
  17. package/dist/engine/action-registry.js +95 -0
  18. package/dist/engine/action-registry.js.map +1 -0
  19. package/dist/engine/gate.d.ts +57 -0
  20. package/dist/engine/gate.d.ts.map +1 -0
  21. package/dist/engine/gate.js +145 -0
  22. package/dist/engine/gate.js.map +1 -0
  23. package/dist/engine/runtime.d.ts +98 -0
  24. package/dist/engine/runtime.d.ts.map +1 -0
  25. package/dist/engine/runtime.js +138 -0
  26. package/dist/engine/runtime.js.map +1 -0
  27. package/dist/engine/session.d.ts +74 -0
  28. package/dist/engine/session.d.ts.map +1 -0
  29. package/dist/engine/session.js +343 -0
  30. package/dist/engine/session.js.map +1 -0
  31. package/dist/index.d.ts +48 -0
  32. package/dist/index.d.ts.map +1 -0
  33. package/dist/index.js +56 -0
  34. package/dist/index.js.map +1 -0
  35. package/dist/ledger/ledger.d.ts +58 -0
  36. package/dist/ledger/ledger.d.ts.map +1 -0
  37. package/dist/ledger/ledger.js +188 -0
  38. package/dist/ledger/ledger.js.map +1 -0
  39. package/dist/ledger/query.d.ts +29 -0
  40. package/dist/ledger/query.d.ts.map +1 -0
  41. package/dist/ledger/query.js +61 -0
  42. package/dist/ledger/query.js.map +1 -0
  43. package/dist/ledger/types.d.ts +27 -0
  44. package/dist/ledger/types.d.ts.map +1 -0
  45. package/dist/ledger/types.js +5 -0
  46. package/dist/ledger/types.js.map +1 -0
  47. package/dist/policy/evaluator.d.ts +21 -0
  48. package/dist/policy/evaluator.d.ts.map +1 -0
  49. package/dist/policy/evaluator.js +383 -0
  50. package/dist/policy/evaluator.js.map +1 -0
  51. package/dist/policy/loader.d.ts +27 -0
  52. package/dist/policy/loader.d.ts.map +1 -0
  53. package/dist/policy/loader.js +69 -0
  54. package/dist/policy/loader.js.map +1 -0
  55. package/dist/policy/schema.d.ts +168 -0
  56. package/dist/policy/schema.d.ts.map +1 -0
  57. package/dist/policy/schema.js +107 -0
  58. package/dist/policy/schema.js.map +1 -0
  59. package/dist/proxy/mcp-proxy.d.ts +43 -0
  60. package/dist/proxy/mcp-proxy.d.ts.map +1 -0
  61. package/dist/proxy/mcp-proxy.js +240 -0
  62. package/dist/proxy/mcp-proxy.js.map +1 -0
  63. package/dist/proxy/mcp-types.d.ts +79 -0
  64. package/dist/proxy/mcp-types.d.ts.map +1 -0
  65. package/dist/proxy/mcp-types.js +28 -0
  66. package/dist/proxy/mcp-types.js.map +1 -0
  67. package/dist/proxy/shell-proxy.d.ts +52 -0
  68. package/dist/proxy/shell-proxy.d.ts.map +1 -0
  69. package/dist/proxy/shell-proxy.js +92 -0
  70. package/dist/proxy/shell-proxy.js.map +1 -0
  71. package/dist/rollback/manager.d.ts +62 -0
  72. package/dist/rollback/manager.d.ts.map +1 -0
  73. package/dist/rollback/manager.js +151 -0
  74. package/dist/rollback/manager.js.map +1 -0
  75. package/dist/server/server.d.ts +24 -0
  76. package/dist/server/server.d.ts.map +1 -0
  77. package/dist/server/server.js +200 -0
  78. package/dist/server/server.js.map +1 -0
  79. package/dist/tools/base.d.ts +58 -0
  80. package/dist/tools/base.d.ts.map +1 -0
  81. package/dist/tools/base.js +48 -0
  82. package/dist/tools/base.js.map +1 -0
  83. package/dist/tools/command-run.d.ts +30 -0
  84. package/dist/tools/command-run.d.ts.map +1 -0
  85. package/dist/tools/command-run.js +87 -0
  86. package/dist/tools/command-run.js.map +1 -0
  87. package/dist/tools/file-read.d.ts +34 -0
  88. package/dist/tools/file-read.d.ts.map +1 -0
  89. package/dist/tools/file-read.js +67 -0
  90. package/dist/tools/file-read.js.map +1 -0
  91. package/dist/tools/file-write.d.ts +39 -0
  92. package/dist/tools/file-write.d.ts.map +1 -0
  93. package/dist/tools/file-write.js +158 -0
  94. package/dist/tools/file-write.js.map +1 -0
  95. package/dist/tools/git.d.ts +48 -0
  96. package/dist/tools/git.d.ts.map +1 -0
  97. package/dist/tools/git.js +193 -0
  98. package/dist/tools/git.js.map +1 -0
  99. package/dist/tools/http-request.d.ts +48 -0
  100. package/dist/tools/http-request.d.ts.map +1 -0
  101. package/dist/tools/http-request.js +91 -0
  102. package/dist/tools/http-request.js.map +1 -0
  103. package/dist/types.d.ts +257 -0
  104. package/dist/types.d.ts.map +1 -0
  105. package/dist/types.js +8 -0
  106. package/dist/types.js.map +1 -0
  107. package/examples/coding-agent.policy.yaml +80 -0
  108. package/examples/devops-deploy.policy.yaml +107 -0
  109. package/examples/mcp-proxy.config.yaml +34 -0
  110. package/examples/simple-session.ts +161 -0
  111. package/examples/video-upscaler.policy.yaml +86 -0
  112. package/package.json +92 -0
  113. package/schemas/generate.ts +18 -0
  114. package/schemas/policy.schema.json +7 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/engine/session.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Deterministic Agent Control Protocol — Public Library API
3
+ *
4
+ * Import from this module for in-process SDK usage.
5
+ *
6
+ * @example
7
+ * ```typescript
8
+ * import { AgentGateway } from 'deterministic-agent-control-protocol';
9
+ *
10
+ * const gateway = await AgentGateway.create({ ledgerDir: './ledgers' });
11
+ * const session = await gateway.createSession('./policy.yaml');
12
+ *
13
+ * const verdict = await gateway.evaluate(session.id, {
14
+ * tool: 'file:read',
15
+ * input: { path: '/data/in/file.txt' },
16
+ * });
17
+ *
18
+ * if (verdict.decision === 'allow') {
19
+ * // Execute the action externally, then record the result
20
+ * await gateway.recordResult(session.id, verdict.actionId, {
21
+ * success: true,
22
+ * output: 'file contents...',
23
+ * });
24
+ * }
25
+ * ```
26
+ */
27
+ export { AgentGateway, type GatewayConfig } from './engine/runtime.js';
28
+ export { SessionManager, type SessionManagerConfig } from './engine/session.js';
29
+ export { loadPolicyFromFile, parsePolicyYaml, validatePolicy, PolicyValidationError } from './policy/loader.js';
30
+ export { PolicySchema, SessionConstraintsSchema } from './policy/schema.js';
31
+ export { evaluateAction, evaluateSessionAction, assessRiskLevel } from './policy/evaluator.js';
32
+ export { ToolAdapter } from './tools/base.js';
33
+ export { FileReadAdapter } from './tools/file-read.js';
34
+ export { FileWriteAdapter } from './tools/file-write.js';
35
+ export { CommandRunAdapter } from './tools/command-run.js';
36
+ export { HttpRequestAdapter } from './tools/http-request.js';
37
+ export { GitDiffAdapter, GitApplyAdapter } from './tools/git.js';
38
+ export { ActionRegistry, createDefaultRegistry } from './engine/action-registry.js';
39
+ export { GateManager, createAutoApproveHandler } from './engine/gate.js';
40
+ export { RollbackManager } from './rollback/manager.js';
41
+ export { EvidenceLedger } from './ledger/ledger.js';
42
+ export { queryLedger, summarizeSessionLedger } from './ledger/query.js';
43
+ export { MCPProxyServer } from './proxy/mcp-proxy.js';
44
+ export type { MCPProxyConfig, MCPBackendConfig } from './proxy/mcp-types.js';
45
+ export { ShellProxy } from './proxy/shell-proxy.js';
46
+ export { createServer, startServer, type ServerConfig } from './server/server.js';
47
+ export type { Policy, Capability, CapabilityScope, Gate, Limits, EvidenceConfig, ForbiddenPattern, Remediation, RemediationRule, SessionConstraints, RateLimitConfig, EscalationRule, ToolName, ApprovalMode, RiskLevel, ActionRequest, ValidationResult, ValidationVerdict, DryRunResult, ExecutionResult, ExecutionArtifact, RollbackResult, ActionResult, Session, SessionState, SessionAction, SessionReport, EvaluateRequest, EvaluateResponse, RecordResultRequest, BudgetSnapshot, ExecutionContext, BudgetTracker, LedgerEntry, LedgerEventType, GateRequest, GateResponse, GateDecision, CreateSessionRequest, SessionStatusResponse, } from './types.js';
48
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAGH,OAAO,EAAE,YAAY,EAAE,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGvE,OAAO,EAAE,cAAc,EAAE,KAAK,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAGhF,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAChH,OAAO,EAAE,YAAY,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAG/F,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGjE,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAGpF,OAAO,EAAE,WAAW,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAGzE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAGxD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAGxE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7E,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGpD,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGlF,YAAY,EAEV,MAAM,EACN,UAAU,EACV,eAAe,EACf,IAAI,EACJ,MAAM,EACN,cAAc,EACd,gBAAgB,EAChB,WAAW,EACX,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,cAAc,EACd,QAAQ,EACR,YAAY,EACZ,SAAS,EAET,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,YAAY,EAEZ,OAAO,EACP,YAAY,EACZ,aAAa,EACb,aAAa,EAEb,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,cAAc,EAEd,gBAAgB,EAChB,aAAa,EAEb,WAAW,EACX,eAAe,EAEf,WAAW,EACX,YAAY,EACZ,YAAY,EAEZ,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,YAAY,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Deterministic Agent Control Protocol — Public Library API
3
+ *
4
+ * Import from this module for in-process SDK usage.
5
+ *
6
+ * @example
7
+ * ```typescript
8
+ * import { AgentGateway } from 'deterministic-agent-control-protocol';
9
+ *
10
+ * const gateway = await AgentGateway.create({ ledgerDir: './ledgers' });
11
+ * const session = await gateway.createSession('./policy.yaml');
12
+ *
13
+ * const verdict = await gateway.evaluate(session.id, {
14
+ * tool: 'file:read',
15
+ * input: { path: '/data/in/file.txt' },
16
+ * });
17
+ *
18
+ * if (verdict.decision === 'allow') {
19
+ * // Execute the action externally, then record the result
20
+ * await gateway.recordResult(session.id, verdict.actionId, {
21
+ * success: true,
22
+ * output: 'file contents...',
23
+ * });
24
+ * }
25
+ * ```
26
+ */
27
+ // Gateway runtime
28
+ export { AgentGateway } from './engine/runtime.js';
29
+ // Session manager
30
+ export { SessionManager } from './engine/session.js';
31
+ // Policy
32
+ export { loadPolicyFromFile, parsePolicyYaml, validatePolicy, PolicyValidationError } from './policy/loader.js';
33
+ export { PolicySchema, SessionConstraintsSchema } from './policy/schema.js';
34
+ export { evaluateAction, evaluateSessionAction, assessRiskLevel } from './policy/evaluator.js';
35
+ // Tool adapters
36
+ export { ToolAdapter } from './tools/base.js';
37
+ export { FileReadAdapter } from './tools/file-read.js';
38
+ export { FileWriteAdapter } from './tools/file-write.js';
39
+ export { CommandRunAdapter } from './tools/command-run.js';
40
+ export { HttpRequestAdapter } from './tools/http-request.js';
41
+ export { GitDiffAdapter, GitApplyAdapter } from './tools/git.js';
42
+ // Action registry
43
+ export { ActionRegistry, createDefaultRegistry } from './engine/action-registry.js';
44
+ // Gate management
45
+ export { GateManager, createAutoApproveHandler } from './engine/gate.js';
46
+ // Rollback
47
+ export { RollbackManager } from './rollback/manager.js';
48
+ // Evidence ledger
49
+ export { EvidenceLedger } from './ledger/ledger.js';
50
+ export { queryLedger, summarizeSessionLedger } from './ledger/query.js';
51
+ // Proxies
52
+ export { MCPProxyServer } from './proxy/mcp-proxy.js';
53
+ export { ShellProxy } from './proxy/shell-proxy.js';
54
+ // Server
55
+ export { createServer, startServer } from './server/server.js';
56
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,kBAAkB;AAClB,OAAO,EAAE,YAAY,EAAsB,MAAM,qBAAqB,CAAC;AAEvE,kBAAkB;AAClB,OAAO,EAAE,cAAc,EAA6B,MAAM,qBAAqB,CAAC;AAEhF,SAAS;AACT,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAChH,OAAO,EAAE,YAAY,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE/F,gBAAgB;AAChB,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjE,kBAAkB;AAClB,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAEpF,kBAAkB;AAClB,OAAO,EAAE,WAAW,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAEzE,WAAW;AACX,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,kBAAkB;AAClB,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAExE,UAAU;AACV,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,SAAS;AACT,OAAO,EAAE,YAAY,EAAE,WAAW,EAAqB,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Evidence Ledger — append-only JSONL log with SHA-256 hash chaining.
3
+ *
4
+ * Every action the agent takes produces an immutable record.
5
+ * Entries are chained: each entry's hash includes the previous entry's hash,
6
+ * forming a tamper-evident chain.
7
+ *
8
+ * Rule: If it's not in the ledger, it didn't happen.
9
+ */
10
+ import type { LedgerEntry, LedgerEventType } from '../types.js';
11
+ export declare class EvidenceLedger {
12
+ private filePath;
13
+ private seq;
14
+ private lastHash;
15
+ private writeStream;
16
+ constructor(filePath: string);
17
+ /**
18
+ * Initialize the ledger. If the file exists, reads the last entry
19
+ * to continue the hash chain. If not, creates a new file.
20
+ */
21
+ init(): Promise<void>;
22
+ /**
23
+ * Append an entry to the ledger.
24
+ */
25
+ append(sessionId: string, type: LedgerEventType, data: Record<string, unknown>): Promise<LedgerEntry>;
26
+ /**
27
+ * Read all entries from the ledger file.
28
+ */
29
+ readAll(): LedgerEntry[];
30
+ /**
31
+ * Get current sequence number.
32
+ */
33
+ getSeq(): number;
34
+ /**
35
+ * Get last hash in the chain.
36
+ */
37
+ getLastHash(): string;
38
+ /**
39
+ * Close the write stream.
40
+ */
41
+ close(): Promise<void>;
42
+ /**
43
+ * Get the file path of the ledger.
44
+ */
45
+ getFilePath(): string;
46
+ /**
47
+ * Verify the integrity of the entire hash chain.
48
+ */
49
+ static verifyIntegrity(filePath: string): {
50
+ valid: boolean;
51
+ totalEntries: number;
52
+ firstSeq: number;
53
+ lastSeq: number;
54
+ brokenAt?: number;
55
+ error?: string;
56
+ };
57
+ }
58
+ //# sourceMappingURL=ledger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ledger.d.ts","sourceRoot":"","sources":["../../src/ledger/ledger.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAIhE,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,GAAG,CAAa;IACxB,OAAO,CAAC,QAAQ,CAAwB;IACxC,OAAO,CAAC,WAAW,CAA+B;gBAEtC,QAAQ,EAAE,MAAM;IAI5B;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAyB3B;;OAEG;IACG,MAAM,CACV,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,eAAe,EACrB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC,WAAW,CAAC;IAkCvB;;OAEG;IACH,OAAO,IAAI,WAAW,EAAE;IASxB;;OAEG;IACH,MAAM,IAAI,MAAM;IAIhB;;OAEG;IACH,WAAW,IAAI,MAAM;IAIrB;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAW5B;;OAEG;IACH,WAAW,IAAI,MAAM;IAIrB;;OAEG;IACH,MAAM,CAAC,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG;QACxC,KAAK,EAAE,OAAO,CAAC;QACf,YAAY,EAAE,MAAM,CAAC;QACrB,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB;CAkEF"}
@@ -0,0 +1,188 @@
1
+ /**
2
+ * Evidence Ledger — append-only JSONL log with SHA-256 hash chaining.
3
+ *
4
+ * Every action the agent takes produces an immutable record.
5
+ * Entries are chained: each entry's hash includes the previous entry's hash,
6
+ * forming a tamper-evident chain.
7
+ *
8
+ * Rule: If it's not in the ledger, it didn't happen.
9
+ */
10
+ import fs from 'node:fs';
11
+ import path from 'node:path';
12
+ import crypto from 'node:crypto';
13
+ const GENESIS_HASH = 'sha256:' + '0'.repeat(64);
14
+ export class EvidenceLedger {
15
+ filePath;
16
+ seq = 0;
17
+ lastHash = GENESIS_HASH;
18
+ writeStream = null;
19
+ constructor(filePath) {
20
+ this.filePath = path.resolve(filePath);
21
+ }
22
+ /**
23
+ * Initialize the ledger. If the file exists, reads the last entry
24
+ * to continue the hash chain. If not, creates a new file.
25
+ */
26
+ async init() {
27
+ const dir = path.dirname(this.filePath);
28
+ if (!fs.existsSync(dir)) {
29
+ fs.mkdirSync(dir, { recursive: true });
30
+ }
31
+ if (fs.existsSync(this.filePath)) {
32
+ // Resume from existing ledger
33
+ const content = fs.readFileSync(this.filePath, 'utf-8').trim();
34
+ if (content.length > 0) {
35
+ const lines = content.split('\n');
36
+ const lastLine = lines[lines.length - 1];
37
+ try {
38
+ const lastEntry = JSON.parse(lastLine);
39
+ this.seq = lastEntry.seq;
40
+ this.lastHash = lastEntry.hash;
41
+ }
42
+ catch {
43
+ throw new Error(`Corrupted ledger: cannot parse last entry in ${this.filePath}`);
44
+ }
45
+ }
46
+ }
47
+ this.writeStream = fs.createWriteStream(this.filePath, { flags: 'a' });
48
+ }
49
+ /**
50
+ * Append an entry to the ledger.
51
+ */
52
+ async append(sessionId, type, data) {
53
+ if (!this.writeStream) {
54
+ throw new Error('Ledger not initialized. Call init() first.');
55
+ }
56
+ this.seq++;
57
+ const ts = new Date().toISOString();
58
+ const prev = this.lastHash;
59
+ // Compute hash: sha256(seq + ts + prev + type + JSON(data))
60
+ const hashInput = `${this.seq}|${ts}|${prev}|${type}|${JSON.stringify(data)}`;
61
+ const hash = 'sha256:' + crypto.createHash('sha256').update(hashInput).digest('hex');
62
+ const entry = {
63
+ seq: this.seq,
64
+ ts,
65
+ hash,
66
+ prev,
67
+ sessionId,
68
+ type,
69
+ data,
70
+ };
71
+ this.lastHash = hash;
72
+ // Write as JSONL (one JSON object per line)
73
+ return new Promise((resolve, reject) => {
74
+ this.writeStream.write(JSON.stringify(entry) + '\n', (err) => {
75
+ if (err)
76
+ reject(err);
77
+ else
78
+ resolve(entry);
79
+ });
80
+ });
81
+ }
82
+ /**
83
+ * Read all entries from the ledger file.
84
+ */
85
+ readAll() {
86
+ if (!fs.existsSync(this.filePath))
87
+ return [];
88
+ const content = fs.readFileSync(this.filePath, 'utf-8').trim();
89
+ if (content.length === 0)
90
+ return [];
91
+ return content.split('\n').map((line) => JSON.parse(line));
92
+ }
93
+ /**
94
+ * Get current sequence number.
95
+ */
96
+ getSeq() {
97
+ return this.seq;
98
+ }
99
+ /**
100
+ * Get last hash in the chain.
101
+ */
102
+ getLastHash() {
103
+ return this.lastHash;
104
+ }
105
+ /**
106
+ * Close the write stream.
107
+ */
108
+ async close() {
109
+ return new Promise((resolve) => {
110
+ if (this.writeStream) {
111
+ this.writeStream.end(() => resolve());
112
+ this.writeStream = null;
113
+ }
114
+ else {
115
+ resolve();
116
+ }
117
+ });
118
+ }
119
+ /**
120
+ * Get the file path of the ledger.
121
+ */
122
+ getFilePath() {
123
+ return this.filePath;
124
+ }
125
+ /**
126
+ * Verify the integrity of the entire hash chain.
127
+ */
128
+ static verifyIntegrity(filePath) {
129
+ const absPath = path.resolve(filePath);
130
+ if (!fs.existsSync(absPath)) {
131
+ return { valid: false, totalEntries: 0, firstSeq: 0, lastSeq: 0, error: 'File not found' };
132
+ }
133
+ const content = fs.readFileSync(absPath, 'utf-8').trim();
134
+ if (content.length === 0) {
135
+ return { valid: true, totalEntries: 0, firstSeq: 0, lastSeq: 0 };
136
+ }
137
+ const lines = content.split('\n');
138
+ let prevHash = GENESIS_HASH;
139
+ for (let i = 0; i < lines.length; i++) {
140
+ let entry;
141
+ try {
142
+ entry = JSON.parse(lines[i]);
143
+ }
144
+ catch {
145
+ return {
146
+ valid: false,
147
+ totalEntries: lines.length,
148
+ firstSeq: 1,
149
+ lastSeq: lines.length,
150
+ brokenAt: i + 1,
151
+ error: `Cannot parse entry at line ${i + 1}`,
152
+ };
153
+ }
154
+ // Check prev hash link
155
+ if (entry.prev !== prevHash) {
156
+ return {
157
+ valid: false,
158
+ totalEntries: lines.length,
159
+ firstSeq: 1,
160
+ lastSeq: lines.length,
161
+ brokenAt: entry.seq,
162
+ error: `Hash chain broken at seq ${entry.seq}: expected prev=${prevHash}, got prev=${entry.prev}`,
163
+ };
164
+ }
165
+ // Recompute hash
166
+ const hashInput = `${entry.seq}|${entry.ts}|${entry.prev}|${entry.type}|${JSON.stringify(entry.data)}`;
167
+ const expectedHash = 'sha256:' + crypto.createHash('sha256').update(hashInput).digest('hex');
168
+ if (entry.hash !== expectedHash) {
169
+ return {
170
+ valid: false,
171
+ totalEntries: lines.length,
172
+ firstSeq: 1,
173
+ lastSeq: lines.length,
174
+ brokenAt: entry.seq,
175
+ error: `Hash mismatch at seq ${entry.seq}: expected ${expectedHash}, got ${entry.hash}`,
176
+ };
177
+ }
178
+ prevHash = entry.hash;
179
+ }
180
+ return {
181
+ valid: true,
182
+ totalEntries: lines.length,
183
+ firstSeq: 1,
184
+ lastSeq: lines.length,
185
+ };
186
+ }
187
+ }
188
+ //# sourceMappingURL=ledger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ledger.js","sourceRoot":"","sources":["../../src/ledger/ledger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Ledger Query — filter and search ledger entries.
3
+ */
4
+ import type { LedgerEntry } from '../types.js';
5
+ import type { LedgerQueryOptions } from './types.js';
6
+ /**
7
+ * Filter ledger entries based on query options.
8
+ */
9
+ export declare function queryLedger(entries: LedgerEntry[], options?: LedgerQueryOptions): LedgerEntry[];
10
+ /**
11
+ * Get a summary of a session's ledger entries.
12
+ */
13
+ export declare function summarizeSessionLedger(entries: LedgerEntry[], sessionId: string): {
14
+ sessionId: string;
15
+ totalEntries: number;
16
+ stateChanges: string[];
17
+ actionsEvaluated: number;
18
+ actionsAllowed: number;
19
+ actionsDenied: number;
20
+ actionsGated: number;
21
+ resultsRecorded: number;
22
+ actionsRolledBack: number;
23
+ gatesRequested: number;
24
+ gatesApproved: number;
25
+ gatesRejected: number;
26
+ escalationsTriggered: number;
27
+ errors: string[];
28
+ };
29
+ //# sourceMappingURL=query.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/ledger/query.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAErD;;GAEG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,WAAW,EAAE,EACtB,OAAO,GAAE,kBAAuB,GAC/B,WAAW,EAAE,CA8Bf;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,WAAW,EAAE,EACtB,SAAS,EAAE,MAAM,GAChB;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CA4BA"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Ledger Query — filter and search ledger entries.
3
+ */
4
+ /**
5
+ * Filter ledger entries based on query options.
6
+ */
7
+ export function queryLedger(entries, options = {}) {
8
+ let filtered = entries;
9
+ if (options.sessionId) {
10
+ filtered = filtered.filter((e) => e.sessionId === options.sessionId);
11
+ }
12
+ if (options.types && options.types.length > 0) {
13
+ filtered = filtered.filter((e) => options.types.includes(e.type));
14
+ }
15
+ if (options.after) {
16
+ const afterDate = new Date(options.after).getTime();
17
+ filtered = filtered.filter((e) => new Date(e.ts).getTime() > afterDate);
18
+ }
19
+ if (options.before) {
20
+ const beforeDate = new Date(options.before).getTime();
21
+ filtered = filtered.filter((e) => new Date(e.ts).getTime() < beforeDate);
22
+ }
23
+ if (options.offset) {
24
+ filtered = filtered.slice(options.offset);
25
+ }
26
+ if (options.limit) {
27
+ filtered = filtered.slice(0, options.limit);
28
+ }
29
+ return filtered;
30
+ }
31
+ /**
32
+ * Get a summary of a session's ledger entries.
33
+ */
34
+ export function summarizeSessionLedger(entries, sessionId) {
35
+ const sessionEntries = entries.filter((e) => e.sessionId === sessionId);
36
+ const actionEvals = sessionEntries.filter((e) => e.type === 'action:evaluate');
37
+ const actionsAllowed = actionEvals.filter((e) => e.data.verdict === 'allow').length;
38
+ const actionsDenied = actionEvals.filter((e) => e.data.verdict === 'deny').length;
39
+ const actionsGated = actionEvals.filter((e) => e.data.verdict === 'gate').length;
40
+ return {
41
+ sessionId,
42
+ totalEntries: sessionEntries.length,
43
+ stateChanges: sessionEntries
44
+ .filter((e) => e.type === 'session:state_change')
45
+ .map((e) => `${e.data.from} → ${e.data.to}`),
46
+ actionsEvaluated: actionEvals.length,
47
+ actionsAllowed,
48
+ actionsDenied,
49
+ actionsGated,
50
+ resultsRecorded: sessionEntries.filter((e) => e.type === 'action:result').length,
51
+ actionsRolledBack: sessionEntries.filter((e) => e.type === 'action:rollback').length,
52
+ gatesRequested: sessionEntries.filter((e) => e.type === 'gate:requested').length,
53
+ gatesApproved: sessionEntries.filter((e) => e.type === 'gate:approved').length,
54
+ gatesRejected: sessionEntries.filter((e) => e.type === 'gate:rejected').length,
55
+ escalationsTriggered: sessionEntries.filter((e) => e.type === 'escalation:triggered').length,
56
+ errors: sessionEntries
57
+ .filter((e) => e.type === 'session:terminate' && e.data.reason)
58
+ .map((e) => e.data.reason),
59
+ };
60
+ }
61
+ //# sourceMappingURL=query.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query.js","sourceRoot":"","sources":["../../src/ledger/query.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Ledger-specific types (re-exported from main types for convenience).
3
+ */
4
+ export type { LedgerEntry, LedgerEventType } from '../types.js';
5
+ export interface LedgerQueryOptions {
6
+ /** Filter by session ID */
7
+ sessionId?: string;
8
+ /** Filter by event type(s) */
9
+ types?: string[];
10
+ /** Filter entries after this timestamp (ISO string) */
11
+ after?: string;
12
+ /** Filter entries before this timestamp (ISO string) */
13
+ before?: string;
14
+ /** Maximum number of entries to return */
15
+ limit?: number;
16
+ /** Offset for pagination */
17
+ offset?: number;
18
+ }
19
+ export interface LedgerIntegrityReport {
20
+ valid: boolean;
21
+ totalEntries: number;
22
+ firstSeq: number;
23
+ lastSeq: number;
24
+ brokenAt?: number;
25
+ error?: string;
26
+ }
27
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/ledger/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEhE,MAAM,WAAW,kBAAkB;IACjC,2BAA2B;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,uDAAuD;IACvD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wDAAwD;IACxD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0CAA0C;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4BAA4B;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,OAAO,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Ledger-specific types (re-exported from main types for convenience).
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/ledger/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Policy Evaluator — runtime enforcement of policy rules.
3
+ *
4
+ * Given an ActionRequest and a loaded Policy, determines:
5
+ * - allow: action is permitted
6
+ * - deny: action is blocked
7
+ * - gate: action requires approval before execution
8
+ *
9
+ * Supports both stateless (single action) and stateful (session-aware) evaluation.
10
+ */
11
+ import type { ActionRequest, BudgetTracker, Policy, RiskLevel, Session, ValidationResult } from '../types.js';
12
+ export declare function evaluateAction(request: ActionRequest, policy: Policy, budget?: BudgetTracker): ValidationResult;
13
+ /**
14
+ * Evaluate an action in the context of an active session.
15
+ * Checks session-level constraints on top of the standard policy checks.
16
+ */
17
+ export declare function evaluateSessionAction(request: ActionRequest, policy: Policy, session: Session): ValidationResult & {
18
+ warnings?: string[];
19
+ };
20
+ export declare function assessRiskLevel(request: ActionRequest, policy: Policy): RiskLevel;
21
+ //# sourceMappingURL=evaluator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evaluator.d.ts","sourceRoot":"","sources":["../../src/policy/evaluator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EACV,aAAa,EACb,aAAa,EAIb,MAAM,EACN,SAAS,EACT,OAAO,EACP,gBAAgB,EAEjB,MAAM,aAAa,CAAC;AAMrB,wBAAgB,cAAc,CAC5B,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,aAAa,GACrB,gBAAgB,CA2DlB;AAMD;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,GACf,gBAAgB,GAAG;IAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,CAoF5C;AA8QD,wBAAgB,eAAe,CAAC,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,CAajF"}