Skip to content

Commit 284abe0

Browse files
hyperpolymathclaude
andcommitted
feat(v-lang): add 4 V-lang connectors — Phase 2 remaining (graphdb, objectstore, ldap, vpn)
Complete the proven-servers Phase 2 connector set with four new V-Ecosystem API interface modules: - v-graphdb: Multi-dialect graph database client (Neo4j Bolt/Cypher, TinkerPop Gremlin, W3C SPARQL) with node/edge CRUD and transactions - v-objectstore: S3-compatible object storage client (AWS S3, MinIO, Ceph RADOS) with bucket ops, multipart upload, presigned URLs, and AWS Signature V4 request signing - v-ldap: LDAPv3 (RFC 4511) directory service client with BER-TLV encoding, bind/unbind (simple + SASL), search, add/modify/delete, compare, and modify DN - v-vpn: VPN management client (WireGuard userspace API + OpenVPN management socket) with peer lifecycle, key generation, tunnel configuration, and status monitoring Each connector follows the established pattern: V source module, Idris2 ABI type definitions, contractiles Trustfile, and README. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent cd49169 commit 284abe0

File tree

16 files changed

+2930
-0
lines changed

16 files changed

+2930
-0
lines changed
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
= v-graphdb
2+
// SPDX-License-Identifier: PMPL-1.0-or-later
3+
4+
Multi-dialect graph database protocol connector for the V-Ecosystem API interfaces layer.
5+
Supports Neo4j Bolt (Cypher), Apache TinkerPop (Gremlin), and W3C SPARQL endpoints through a unified client interface.
6+
Provides node/edge CRUD, parameterised query execution, and explicit transaction management.
7+
8+
== Author
9+
10+
Jonathan D.A. Jewell
11+
12+
== Source
13+
14+
`src/graphdb.v`
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# Trustfile.a2ml -- v-graphdb
2+
# SPDX-License-Identifier: PMPL-1.0-or-later
3+
# Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) <j.d.a.jewell@open.ac.uk>
4+
#
5+
# Contractile trust specification for the v-graphdb protocol module.
6+
# Evaluated by the contractile-cli (must/trust/dust/intend/k9) toolchain.
7+
8+
[trust]
9+
post-quantum-keys = "pending"
10+
threat-model = "network-facing-query-engine"
11+
formal-verification = "idris2-abi"
12+
audit-status = "unaudited"
13+
14+
[must]
15+
invariant-checks = ["input-validation", "query-parameterisation", "connection-lifecycle", "transaction-state-machine", "property-escaping"]
16+
build-contract = "v build src/"
17+
18+
[dust]
19+
recovery = "rollback-and-reconnect"
20+
rollback = "abort-transaction-close-connection"
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
-- SPDX-License-Identifier: PMPL-1.0-or-later
2+
-- Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath)
3+
--
4+
-- Idris2 ABI type definitions for the v-graphdb protocol.
5+
-- Graph database query dialects, node/edge types, transaction states,
6+
-- and result set structures.
7+
8+
module Types
9+
10+
import Data.List
11+
12+
||| Graph query dialect supported by the connector.
13+
public export
14+
data QueryDialect : Type where
15+
Cypher : QueryDialect -- Neo4j Cypher Query Language
16+
Gremlin : QueryDialect -- Apache TinkerPop traversal language
17+
SPARQL : QueryDialect -- W3C SPARQL 1.1 query/update
18+
19+
||| Connection lifecycle state for graph database sessions.
20+
public export
21+
data ConnState : Type where
22+
Disconnected : ConnState
23+
Connecting : ConnState
24+
Connected : ConnState
25+
InTransaction : ConnState
26+
27+
||| Transaction lifecycle state.
28+
public export
29+
data TxState : Type where
30+
TxNone : TxState -- No transaction active
31+
TxActive : TxState -- Transaction in progress
32+
TxCommitted : TxState -- Successfully committed
33+
TxRolledBack : TxState -- Rolled back (explicitly or on error)
34+
35+
||| A labelled vertex in the property graph.
36+
public export
37+
record Node where
38+
constructor MkNode
39+
nodeId : String
40+
labels : List String
41+
properties : List (String, String)
42+
43+
||| A directed, typed relationship between two nodes.
44+
public export
45+
record Edge where
46+
constructor MkEdge
47+
edgeId : String
48+
relType : String
49+
sourceId : String
50+
targetId : String
51+
properties : List (String, String)
52+
53+
||| A single column in a query result set.
54+
public export
55+
record Column where
56+
constructor MkColumn
57+
name : String
58+
index : Nat
59+
60+
||| A row of string-valued cells in a query result set.
61+
public export
62+
record Row where
63+
constructor MkRow
64+
cells : List (String, String)
65+
66+
||| Complete result set returned by a graph query.
67+
public export
68+
record QueryResult where
69+
constructor MkQueryResult
70+
columns : List Column
71+
rows : List Row
72+
count : Nat

0 commit comments

Comments
 (0)