trellis 2.1.7 → 2.1.9

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 (240) hide show
  1. package/README.md +100 -10
  2. package/dist/cli/index.d.ts +14 -0
  3. package/dist/cli/index.d.ts.map +1 -0
  4. package/dist/cli/index.js +199 -9
  5. package/dist/client/config.d.ts +56 -0
  6. package/dist/client/config.d.ts.map +1 -0
  7. package/dist/client/index.d.ts +15 -0
  8. package/dist/client/index.d.ts.map +1 -0
  9. package/dist/client/index.js +32 -0
  10. package/dist/client/sdk.d.ts +152 -0
  11. package/dist/client/sdk.d.ts.map +1 -0
  12. package/dist/config-8hczw0rs.js +20 -0
  13. package/dist/core/agents/harness.d.ts +49 -0
  14. package/dist/core/agents/harness.d.ts.map +1 -0
  15. package/dist/core/agents/index.d.ts +8 -0
  16. package/dist/core/agents/index.d.ts.map +1 -0
  17. package/dist/core/agents/types.d.ts +63 -0
  18. package/dist/core/agents/types.d.ts.map +1 -0
  19. package/dist/core/index.d.ts +25 -0
  20. package/dist/core/index.d.ts.map +1 -0
  21. package/dist/core/index.js +15 -9
  22. package/dist/core/kernel/middleware.d.ts +28 -0
  23. package/dist/core/kernel/middleware.d.ts.map +1 -0
  24. package/dist/core/kernel/trellis-kernel.d.ts +162 -0
  25. package/dist/core/kernel/trellis-kernel.d.ts.map +1 -0
  26. package/dist/core/ontology/builtins.d.ts +16 -0
  27. package/dist/core/ontology/builtins.d.ts.map +1 -0
  28. package/dist/core/ontology/index.d.ts +10 -0
  29. package/dist/core/ontology/index.d.ts.map +1 -0
  30. package/dist/core/ontology/registry.d.ts +70 -0
  31. package/dist/core/ontology/registry.d.ts.map +1 -0
  32. package/dist/core/ontology/types.d.ts +97 -0
  33. package/dist/core/ontology/types.d.ts.map +1 -0
  34. package/dist/core/ontology/validator.d.ts +34 -0
  35. package/dist/core/ontology/validator.d.ts.map +1 -0
  36. package/dist/core/persist/backend.d.ts +60 -0
  37. package/dist/core/persist/backend.d.ts.map +1 -0
  38. package/dist/core/persist/sqlite-backend.d.ts +41 -0
  39. package/dist/core/persist/sqlite-backend.d.ts.map +1 -0
  40. package/dist/core/plugins/index.d.ts +8 -0
  41. package/dist/core/plugins/index.d.ts.map +1 -0
  42. package/dist/core/plugins/registry.d.ts +69 -0
  43. package/dist/core/plugins/registry.d.ts.map +1 -0
  44. package/dist/core/plugins/types.d.ts +87 -0
  45. package/dist/core/plugins/types.d.ts.map +1 -0
  46. package/dist/core/query/datalog.d.ts +52 -0
  47. package/dist/core/query/datalog.d.ts.map +1 -0
  48. package/dist/core/query/engine.d.ts +42 -0
  49. package/dist/core/query/engine.d.ts.map +1 -0
  50. package/dist/core/query/index.d.ts +12 -0
  51. package/dist/core/query/index.d.ts.map +1 -0
  52. package/dist/core/query/parser.d.ts +37 -0
  53. package/dist/core/query/parser.d.ts.map +1 -0
  54. package/dist/core/query/types.d.ts +135 -0
  55. package/dist/core/query/types.d.ts.map +1 -0
  56. package/dist/core/store/eav-store.d.ts +107 -0
  57. package/dist/core/store/eav-store.d.ts.map +1 -0
  58. package/dist/db/index.d.ts +18 -0
  59. package/dist/db/index.d.ts.map +1 -0
  60. package/dist/db/index.js +83 -0
  61. package/dist/db/inspector.js +28 -0
  62. package/dist/db/trellis.css +1 -0
  63. package/dist/decisions/auto-capture.d.ts +31 -0
  64. package/dist/decisions/auto-capture.d.ts.map +1 -0
  65. package/dist/decisions/hooks.d.ts +48 -0
  66. package/dist/decisions/hooks.d.ts.map +1 -0
  67. package/dist/decisions/index.d.ts +36 -0
  68. package/dist/decisions/index.d.ts.map +1 -0
  69. package/dist/decisions/types.d.ts +73 -0
  70. package/dist/decisions/types.d.ts.map +1 -0
  71. package/dist/deploy-99j5dc9c.js +9 -0
  72. package/dist/embeddings/auto-embed.d.ts +52 -0
  73. package/dist/embeddings/auto-embed.d.ts.map +1 -0
  74. package/dist/embeddings/chunker.d.ts +73 -0
  75. package/dist/embeddings/chunker.d.ts.map +1 -0
  76. package/dist/embeddings/index.d.ts +18 -0
  77. package/dist/embeddings/index.d.ts.map +1 -0
  78. package/dist/embeddings/model.d.ts +30 -0
  79. package/dist/embeddings/model.d.ts.map +1 -0
  80. package/dist/embeddings/search.d.ts +87 -0
  81. package/dist/embeddings/search.d.ts.map +1 -0
  82. package/dist/embeddings/store.d.ts +66 -0
  83. package/dist/embeddings/store.d.ts.map +1 -0
  84. package/dist/embeddings/types.d.ts +54 -0
  85. package/dist/embeddings/types.d.ts.map +1 -0
  86. package/dist/engine-y0724kjq.js +8 -0
  87. package/dist/engine.d.ts +216 -0
  88. package/dist/engine.d.ts.map +1 -0
  89. package/dist/garden/cluster.d.ts +57 -0
  90. package/dist/garden/cluster.d.ts.map +1 -0
  91. package/dist/garden/garden.d.ts +104 -0
  92. package/dist/garden/garden.d.ts.map +1 -0
  93. package/dist/garden/index.d.ts +15 -0
  94. package/dist/garden/index.d.ts.map +1 -0
  95. package/dist/git/git-exporter.d.ts +37 -0
  96. package/dist/git/git-exporter.d.ts.map +1 -0
  97. package/dist/git/git-importer.d.ts +36 -0
  98. package/dist/git/git-importer.d.ts.map +1 -0
  99. package/dist/git/git-reader.d.ts +63 -0
  100. package/dist/git/git-reader.d.ts.map +1 -0
  101. package/dist/git/index.d.ts +10 -0
  102. package/dist/git/index.d.ts.map +1 -0
  103. package/dist/identity/governance.d.ts +54 -0
  104. package/dist/identity/governance.d.ts.map +1 -0
  105. package/dist/identity/identity.d.ts +63 -0
  106. package/dist/identity/identity.d.ts.map +1 -0
  107. package/dist/identity/index.d.ts +10 -0
  108. package/dist/identity/index.d.ts.map +1 -0
  109. package/dist/identity/signing-middleware.d.ts +38 -0
  110. package/dist/identity/signing-middleware.d.ts.map +1 -0
  111. package/dist/import-fyg5sgq4.js +11 -0
  112. package/dist/{index-5m0g9r0y.js → index-04sq3h27.js} +1 -496
  113. package/dist/index-2r4jxwnb.js +32 -0
  114. package/dist/index-4beszbgg.js +292 -0
  115. package/dist/index-5bhe57y9.js +326 -0
  116. package/dist/index-5p6zgspx.js +77 -0
  117. package/dist/index-7t92ej34.js +544 -0
  118. package/dist/index-8fjwnztt.js +155 -0
  119. package/dist/{index-22jx9qsz.js → index-czecrvvn.js} +4 -4
  120. package/dist/index-hgd30epa.js +149 -0
  121. package/dist/index-k5b0xskw.js +1 -0
  122. package/dist/index-kbnht9p8.js +1 -0
  123. package/dist/index-n9f2qyh5.js +495 -0
  124. package/dist/index-xr7rx360.js +814 -0
  125. package/dist/index-xzym9w0m.js +43 -0
  126. package/dist/index-yp88he8n.js +316 -0
  127. package/dist/index.d.ts +23 -0
  128. package/dist/index.d.ts.map +1 -0
  129. package/dist/index.js +9 -7
  130. package/dist/links/index.d.ts +16 -0
  131. package/dist/links/index.d.ts.map +1 -0
  132. package/dist/links/lifecycle.d.ts +112 -0
  133. package/dist/links/lifecycle.d.ts.map +1 -0
  134. package/dist/links/parser.d.ts +56 -0
  135. package/dist/links/parser.d.ts.map +1 -0
  136. package/dist/links/ref-index.d.ts +55 -0
  137. package/dist/links/ref-index.d.ts.map +1 -0
  138. package/dist/links/resolver.d.ts +90 -0
  139. package/dist/links/resolver.d.ts.map +1 -0
  140. package/dist/links/types.d.ts +70 -0
  141. package/dist/links/types.d.ts.map +1 -0
  142. package/dist/mcp/docs.d.ts +18 -0
  143. package/dist/mcp/docs.d.ts.map +1 -0
  144. package/dist/mcp/index.d.ts +9 -0
  145. package/dist/mcp/index.d.ts.map +1 -0
  146. package/dist/mcp/server.d.ts +26 -0
  147. package/dist/mcp/server.d.ts.map +1 -0
  148. package/dist/react/index.js +189 -0
  149. package/dist/sdk-sj8rp0m7.js +15 -0
  150. package/dist/semantic/csharp-parser.d.ts +12 -0
  151. package/dist/semantic/csharp-parser.d.ts.map +1 -0
  152. package/dist/semantic/go-parser.d.ts +12 -0
  153. package/dist/semantic/go-parser.d.ts.map +1 -0
  154. package/dist/semantic/index.d.ts +22 -0
  155. package/dist/semantic/index.d.ts.map +1 -0
  156. package/dist/semantic/java-parser.d.ts +12 -0
  157. package/dist/semantic/java-parser.d.ts.map +1 -0
  158. package/dist/semantic/python-parser.d.ts +12 -0
  159. package/dist/semantic/python-parser.d.ts.map +1 -0
  160. package/dist/semantic/ruby-parser.d.ts +12 -0
  161. package/dist/semantic/ruby-parser.d.ts.map +1 -0
  162. package/dist/semantic/rust-parser.d.ts +12 -0
  163. package/dist/semantic/rust-parser.d.ts.map +1 -0
  164. package/dist/semantic/semantic-merge.d.ts +20 -0
  165. package/dist/semantic/semantic-merge.d.ts.map +1 -0
  166. package/dist/semantic/ts-parser.d.ts +13 -0
  167. package/dist/semantic/ts-parser.d.ts.map +1 -0
  168. package/dist/semantic/types.d.ts +130 -0
  169. package/dist/semantic/types.d.ts.map +1 -0
  170. package/dist/server/auth.d.ts +72 -0
  171. package/dist/server/auth.d.ts.map +1 -0
  172. package/dist/server/deploy.d.ts +44 -0
  173. package/dist/server/deploy.d.ts.map +1 -0
  174. package/dist/server/import.d.ts +40 -0
  175. package/dist/server/import.d.ts.map +1 -0
  176. package/dist/server/index.d.ts +24 -0
  177. package/dist/server/index.d.ts.map +1 -0
  178. package/dist/server/index.js +60 -0
  179. package/dist/server/permissions.d.ts +84 -0
  180. package/dist/server/permissions.d.ts.map +1 -0
  181. package/dist/server/realtime.d.ts +78 -0
  182. package/dist/server/realtime.d.ts.map +1 -0
  183. package/dist/server/server.d.ts +43 -0
  184. package/dist/server/server.d.ts.map +1 -0
  185. package/dist/server/tenancy.d.ts +53 -0
  186. package/dist/server/tenancy.d.ts.map +1 -0
  187. package/dist/server-3vkpnpbz.js +11 -0
  188. package/dist/sync/http-transport.d.ts +47 -0
  189. package/dist/sync/http-transport.d.ts.map +1 -0
  190. package/dist/sync/index.d.ts +22 -0
  191. package/dist/sync/index.d.ts.map +1 -0
  192. package/dist/sync/memory-transport.d.ts +27 -0
  193. package/dist/sync/memory-transport.d.ts.map +1 -0
  194. package/dist/sync/multi-repo.d.ts +82 -0
  195. package/dist/sync/multi-repo.d.ts.map +1 -0
  196. package/dist/sync/reconciler.d.ts +48 -0
  197. package/dist/sync/reconciler.d.ts.map +1 -0
  198. package/dist/sync/sync-engine.d.ts +65 -0
  199. package/dist/sync/sync-engine.d.ts.map +1 -0
  200. package/dist/sync/types.d.ts +71 -0
  201. package/dist/sync/types.d.ts.map +1 -0
  202. package/dist/sync/ws-transport.d.ts +41 -0
  203. package/dist/sync/ws-transport.d.ts.map +1 -0
  204. package/dist/tenancy-tjr7kk2v.js +13 -0
  205. package/dist/ui/server.d.ts +38 -0
  206. package/dist/ui/server.d.ts.map +1 -0
  207. package/dist/vcs/blob-store.d.ts +49 -0
  208. package/dist/vcs/blob-store.d.ts.map +1 -0
  209. package/dist/vcs/branch.d.ts +35 -0
  210. package/dist/vcs/branch.d.ts.map +1 -0
  211. package/dist/vcs/checkpoint.d.ts +24 -0
  212. package/dist/vcs/checkpoint.d.ts.map +1 -0
  213. package/dist/vcs/decompose.d.ts +19 -0
  214. package/dist/vcs/decompose.d.ts.map +1 -0
  215. package/dist/vcs/diff.d.ts +65 -0
  216. package/dist/vcs/diff.d.ts.map +1 -0
  217. package/dist/vcs/engine-context.d.ts +21 -0
  218. package/dist/vcs/engine-context.d.ts.map +1 -0
  219. package/dist/vcs/index.d.ts +23 -0
  220. package/dist/vcs/index.d.ts.map +1 -0
  221. package/dist/vcs/issue.d.ts +159 -0
  222. package/dist/vcs/issue.d.ts.map +1 -0
  223. package/dist/vcs/merge.d.ts +55 -0
  224. package/dist/vcs/merge.d.ts.map +1 -0
  225. package/dist/vcs/milestone.d.ts +30 -0
  226. package/dist/vcs/milestone.d.ts.map +1 -0
  227. package/dist/vcs/ops.d.ts +27 -0
  228. package/dist/vcs/ops.d.ts.map +1 -0
  229. package/dist/vcs/types.d.ts +94 -0
  230. package/dist/vcs/types.d.ts.map +1 -0
  231. package/dist/vcs/vcs-middleware.d.ts +14 -0
  232. package/dist/vcs/vcs-middleware.d.ts.map +1 -0
  233. package/dist/watcher/fs-watcher.d.ts +51 -0
  234. package/dist/watcher/fs-watcher.d.ts.map +1 -0
  235. package/dist/watcher/index.d.ts +9 -0
  236. package/dist/watcher/index.d.ts.map +1 -0
  237. package/dist/watcher/ingestion.d.ts +28 -0
  238. package/dist/watcher/ingestion.d.ts.map +1 -0
  239. package/package.json +44 -4
  240. package/dist/index-hybgxe40.js +0 -1174
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Identity Module
3
+ *
4
+ * Ed25519 key pair generation, DID derivation, and local identity storage.
5
+ * DESIGN.md §6.1 — Every actor is an Identity entity with a cryptographic key pair.
6
+ *
7
+ * Private keys are stored locally in `.trellis/identity.json` (never synced).
8
+ * Public keys and DIDs are graph entities that get replicated to peers.
9
+ */
10
+ export interface IdentityConfig {
11
+ displayName: string;
12
+ email?: string;
13
+ /** Ed25519 public key, base64-encoded. */
14
+ publicKey: string;
15
+ /** Ed25519 private key, base64-encoded (local only, never synced). */
16
+ privateKey: string;
17
+ /** did:key identifier derived from public key. */
18
+ did: string;
19
+ /** Entity ID for use in the EAV store. */
20
+ entityId: string;
21
+ /** ISO timestamp of creation. */
22
+ createdAt: string;
23
+ }
24
+ export interface PublicIdentity {
25
+ displayName: string;
26
+ email?: string;
27
+ publicKey: string;
28
+ did: string;
29
+ entityId: string;
30
+ createdAt: string;
31
+ }
32
+ /**
33
+ * Generate a new Ed25519 identity.
34
+ */
35
+ export declare function createIdentity(opts: {
36
+ displayName: string;
37
+ email?: string;
38
+ }): IdentityConfig;
39
+ /**
40
+ * Sign a message (typically an op hash) with a private key.
41
+ */
42
+ export declare function signMessage(message: string, privateKeyBase64: string): string;
43
+ /**
44
+ * Verify a signature against a message and public key.
45
+ */
46
+ export declare function verifySignature(message: string, signatureBase64: string, publicKeyBase64: string): boolean;
47
+ /**
48
+ * Save an identity to the local .trellis directory.
49
+ */
50
+ export declare function saveIdentity(trellisDir: string, identity: IdentityConfig): void;
51
+ /**
52
+ * Load the local identity from .trellis/identity.json.
53
+ */
54
+ export declare function loadIdentity(trellisDir: string): IdentityConfig | null;
55
+ /**
56
+ * Check if a local identity exists.
57
+ */
58
+ export declare function hasIdentity(trellisDir: string): boolean;
59
+ /**
60
+ * Extract the public (safe-to-share) portion of an identity.
61
+ */
62
+ export declare function toPublicIdentity(identity: IdentityConfig): PublicIdentity;
63
+ //# sourceMappingURL=identity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../../src/identity/identity.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAgBH,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0CAA0C;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,sEAAsE;IACtE,UAAU,EAAE,MAAM,CAAC;IACnB,kDAAkD;IAClD,GAAG,EAAE,MAAM,CAAC;IACZ,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB,iCAAiC;IACjC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAMD;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,cAAc,CAqBjB;AAqBD;;GAEG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,MAAM,EACf,gBAAgB,EAAE,MAAM,GACvB,MAAM,CAKR;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,EACf,eAAe,EAAE,MAAM,EACvB,eAAe,EAAE,MAAM,GACtB,OAAO,CAST;AAQD;;GAEG;AACH,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,GAAG,IAAI,CAM/E;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAQtE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAEvD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,cAAc,GAAG,cAAc,CASzE"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Identity Module — Public Surface
3
+ */
4
+ export { createIdentity, signMessage, verifySignature, saveIdentity, loadIdentity, hasIdentity, toPublicIdentity, } from './identity.js';
5
+ export type { IdentityConfig, PublicIdentity } from './identity.js';
6
+ export { signOp, verifyOp, verifyOpBatch } from './signing-middleware.js';
7
+ export type { IdentityResolver, SignatureVerificationResult, } from './signing-middleware.js';
8
+ export { evaluatePolicy, createPolicy } from './governance.js';
9
+ export type { PolicyRule, PolicyViolation, GovernanceResult, } from './governance.js';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/identity/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,cAAc,EACd,WAAW,EACX,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,gBAAgB,GACjB,MAAM,eAAe,CAAC;AAEvB,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE1E,YAAY,EACV,gBAAgB,EAChB,2BAA2B,GAC5B,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/D,YAAY,EACV,UAAU,EACV,eAAe,EACf,gBAAgB,GACjB,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Signing Middleware
3
+ *
4
+ * DESIGN.md §6.2 — Every op can be cryptographically signed by its author.
5
+ *
6
+ * This module provides:
7
+ * - `signOp`: Sign a VcsOp with a local identity's private key.
8
+ * - `verifyOp`: Verify the signature on a VcsOp.
9
+ * - `SignatureVerificationMiddleware`: Middleware that rejects ops with
10
+ * invalid signatures on remote ops.
11
+ */
12
+ import type { VcsOp } from '../vcs/types.js';
13
+ /**
14
+ * Sign a VcsOp in-place using the given private key.
15
+ * Sets `vcs.signature` and `vcs.signedBy` on the op.
16
+ */
17
+ export declare function signOp(op: VcsOp, privateKeyBase64: string, identityEntityId: string): VcsOp;
18
+ /**
19
+ * Verify the signature on a VcsOp.
20
+ * Returns true if the op has a valid signature, false if invalid.
21
+ * Returns null if the op has no signature (unsigned).
22
+ */
23
+ export declare function verifyOp(op: VcsOp, publicKeyBase64: string): boolean | null;
24
+ export interface IdentityResolver {
25
+ /** Resolve an identity entity ID to its public key (base64). */
26
+ resolvePublicKey(entityId: string): string | null;
27
+ }
28
+ export interface SignatureVerificationResult {
29
+ valid: boolean;
30
+ op: VcsOp;
31
+ reason?: string;
32
+ }
33
+ /**
34
+ * Verify all signatures on a batch of ops.
35
+ * Returns results for ops that have signatures.
36
+ */
37
+ export declare function verifyOpBatch(ops: VcsOp[], resolver: IdentityResolver): SignatureVerificationResult[];
38
+ //# sourceMappingURL=signing-middleware.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signing-middleware.d.ts","sourceRoot":"","sources":["../../src/identity/signing-middleware.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAO7C;;;GAGG;AACH,wBAAgB,MAAM,CACpB,EAAE,EAAE,KAAK,EACT,gBAAgB,EAAE,MAAM,EACxB,gBAAgB,EAAE,MAAM,GACvB,KAAK,CAOP;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CACtB,EAAE,EAAE,KAAK,EACT,eAAe,EAAE,MAAM,GACtB,OAAO,GAAG,IAAI,CAGhB;AAMD,MAAM,WAAW,gBAAgB;IAC/B,gEAAgE;IAChE,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;CACnD;AAED,MAAM,WAAW,2BAA2B;IAC1C,KAAK,EAAE,OAAO,CAAC;IACf,EAAE,EAAE,KAAK,CAAC;IACV,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,GAAG,EAAE,KAAK,EAAE,EACZ,QAAQ,EAAE,gBAAgB,GACzB,2BAA2B,EAAE,CAyB/B"}
@@ -0,0 +1,11 @@
1
+ // @bun
2
+ import {
3
+ importFile,
4
+ importRecords
5
+ } from "./index-8fjwnztt.js";
6
+ import"./index-5bhe57y9.js";
7
+ import"./index-a76rekgs.js";
8
+ export {
9
+ importRecords,
10
+ importFile
11
+ };
@@ -1,499 +1,4 @@
1
1
  // @bun
2
- import {
3
- QueryEngine,
4
- literal,
5
- variable
6
- } from "./index-hybgxe40.js";
7
-
8
- // src/core/query/parser.ts
9
- function tokenize(input) {
10
- const tokens = [];
11
- let i = 0;
12
- while (i < input.length) {
13
- if (/\s/.test(input[i])) {
14
- i++;
15
- continue;
16
- }
17
- if (input[i] === "/" && input[i + 1] === "/") {
18
- while (i < input.length && input[i] !== `
19
- `)
20
- i++;
21
- continue;
22
- }
23
- const pos = i;
24
- if ("[](){},:".includes(input[i])) {
25
- tokens.push({ kind: "symbol", value: input[i], pos });
26
- i++;
27
- continue;
28
- }
29
- if (input[i] === "!" && input[i + 1] === "=") {
30
- tokens.push({ kind: "symbol", value: "!=", pos });
31
- i += 2;
32
- continue;
33
- }
34
- if (input[i] === "<" && input[i + 1] === "=") {
35
- tokens.push({ kind: "symbol", value: "<=", pos });
36
- i += 2;
37
- continue;
38
- }
39
- if (input[i] === ">" && input[i + 1] === "=") {
40
- tokens.push({ kind: "symbol", value: ">=", pos });
41
- i += 2;
42
- continue;
43
- }
44
- if ("<>=".includes(input[i])) {
45
- tokens.push({ kind: "symbol", value: input[i], pos });
46
- i++;
47
- continue;
48
- }
49
- if (input[i] === '"') {
50
- i++;
51
- let s = "";
52
- while (i < input.length && input[i] !== '"') {
53
- if (input[i] === "\\" && i + 1 < input.length) {
54
- s += input[i + 1];
55
- i += 2;
56
- } else {
57
- s += input[i];
58
- i++;
59
- }
60
- }
61
- if (i < input.length)
62
- i++;
63
- tokens.push({ kind: "string", value: s, pos });
64
- continue;
65
- }
66
- if (/[0-9]/.test(input[i]) || input[i] === "-" && i + 1 < input.length && /[0-9]/.test(input[i + 1])) {
67
- let n = input[i];
68
- i++;
69
- while (i < input.length && /[0-9.]/.test(input[i])) {
70
- n += input[i];
71
- i++;
72
- }
73
- tokens.push({ kind: "number", value: n, pos });
74
- continue;
75
- }
76
- if (/[?a-zA-Z_]/.test(input[i])) {
77
- let w = "";
78
- while (i < input.length && /[?a-zA-Z0-9_.:/-]/.test(input[i])) {
79
- w += input[i];
80
- i++;
81
- }
82
- tokens.push({ kind: "word", value: w, pos });
83
- continue;
84
- }
85
- i++;
86
- }
87
- tokens.push({ kind: "eof", value: "", pos: input.length });
88
- return tokens;
89
- }
90
-
91
- class Parser {
92
- tokens;
93
- pos = 0;
94
- constructor(tokens) {
95
- this.tokens = tokens;
96
- }
97
- peek() {
98
- return this.tokens[this.pos];
99
- }
100
- advance() {
101
- return this.tokens[this.pos++];
102
- }
103
- expect(kind, value) {
104
- const t = this.advance();
105
- if (t.kind !== kind || value !== undefined && t.value !== value) {
106
- throw new Error(`Expected ${kind}${value ? ` "${value}"` : ""} at pos ${t.pos}, got ${t.kind} "${t.value}"`);
107
- }
108
- return t;
109
- }
110
- match(kind, value) {
111
- const t = this.peek();
112
- if (t.kind === kind && (value === undefined || t.value === value)) {
113
- this.pos++;
114
- return true;
115
- }
116
- return false;
117
- }
118
- isAt(kind, value) {
119
- const t = this.peek();
120
- return t.kind === kind && (value === undefined || t.value === value);
121
- }
122
- parseTerm() {
123
- const t = this.peek();
124
- if (t.kind === "word" && t.value.startsWith("?")) {
125
- this.advance();
126
- return variable(t.value.slice(1));
127
- }
128
- if (t.kind === "string") {
129
- this.advance();
130
- return literal(t.value);
131
- }
132
- if (t.kind === "number") {
133
- this.advance();
134
- const n = Number(t.value);
135
- return literal(n);
136
- }
137
- if (t.kind === "word") {
138
- const v = t.value;
139
- this.advance();
140
- if (v === "true")
141
- return literal(true);
142
- if (v === "false")
143
- return literal(false);
144
- return literal(v);
145
- }
146
- throw new Error(`Unexpected token at pos ${t.pos}: ${t.kind} "${t.value}"`);
147
- }
148
- parsePattern() {
149
- const t = this.peek();
150
- if (t.kind === "word" && t.value.toUpperCase() === "NOT") {
151
- this.advance();
152
- const inner = this.parsePattern();
153
- return { kind: "not", pattern: inner };
154
- }
155
- if (t.kind === "word" && t.value.toUpperCase() === "OR") {
156
- this.advance();
157
- const branches = [];
158
- while (this.isAt("symbol", "{")) {
159
- this.advance();
160
- const branch = [];
161
- while (!this.isAt("symbol", "}") && !this.isAt("eof", undefined)) {
162
- branch.push(this.parsePattern());
163
- }
164
- this.expect("symbol", "}");
165
- branches.push(branch);
166
- }
167
- return { kind: "or", branches };
168
- }
169
- if (t.kind === "symbol" && t.value === "[") {
170
- this.advance();
171
- const entity = this.parseTerm();
172
- const attribute = this.parseTerm();
173
- const value = this.parseTerm();
174
- this.expect("symbol", "]");
175
- return { kind: "fact", entity, attribute, value };
176
- }
177
- if (t.kind === "symbol" && t.value === "(") {
178
- this.advance();
179
- const source = this.parseTerm();
180
- const attribute = this.parseTerm();
181
- const target = this.parseTerm();
182
- this.expect("symbol", ")");
183
- return { kind: "link", source, attribute, target };
184
- }
185
- if (t.kind === "word" && !t.value.startsWith("?")) {
186
- const name = this.advance().value;
187
- if (this.isAt("symbol", "(")) {
188
- this.advance();
189
- const args = [];
190
- while (!this.isAt("symbol", ")") && !this.isAt("eof", undefined)) {
191
- args.push(this.parseTerm());
192
- this.match("symbol", ",");
193
- }
194
- this.expect("symbol", ")");
195
- return { kind: "rule", name, args };
196
- }
197
- throw new Error(`Expected '(' after rule name "${name}" at pos ${t.pos}`);
198
- }
199
- throw new Error(`Cannot parse pattern at pos ${t.pos}: ${t.kind} "${t.value}"`);
200
- }
201
- parseFilter() {
202
- const left = this.parseTerm();
203
- const op = this.advance().value;
204
- const right = this.parseTerm();
205
- return { kind: "filter", left, op, right };
206
- }
207
- parseQuery() {
208
- const query = {
209
- select: [],
210
- where: [],
211
- filters: [],
212
- aggregates: [],
213
- orderBy: [],
214
- limit: 0,
215
- offset: 0
216
- };
217
- while (!this.isAt("eof", undefined)) {
218
- const kw = this.peek();
219
- if (kw.kind !== "word") {
220
- throw new Error(`Expected keyword at pos ${kw.pos}, got ${kw.kind} "${kw.value}"`);
221
- }
222
- switch (kw.value.toUpperCase()) {
223
- case "SELECT": {
224
- this.advance();
225
- while (this.peek().kind === "word" && this.peek().value.startsWith("?")) {
226
- query.select.push(this.advance().value.slice(1));
227
- }
228
- break;
229
- }
230
- case "WHERE": {
231
- this.advance();
232
- this.expect("symbol", "{");
233
- while (!this.isAt("symbol", "}") && !this.isAt("eof", undefined)) {
234
- query.where.push(this.parsePattern());
235
- }
236
- this.expect("symbol", "}");
237
- break;
238
- }
239
- case "FILTER": {
240
- this.advance();
241
- query.filters.push(this.parseFilter());
242
- break;
243
- }
244
- case "AGGREGATE": {
245
- this.advance();
246
- const op = this.advance().value;
247
- this.expect("symbol", "(");
248
- const varName = this.advance().value;
249
- const varClean = varName.startsWith("?") ? varName.slice(1) : varName;
250
- this.expect("symbol", ")");
251
- this.expect("word", "AS");
252
- const asName = this.advance().value;
253
- const asClean = asName.startsWith("?") ? asName.slice(1) : asName;
254
- query.aggregates.push({ op, variable: varClean, as: asClean });
255
- break;
256
- }
257
- case "ORDER": {
258
- this.advance();
259
- this.expect("word", "BY");
260
- while (this.peek().kind === "word" && this.peek().value.startsWith("?")) {
261
- const v = this.advance().value.slice(1);
262
- let dir = "asc";
263
- if (this.peek().kind === "word" && ["ASC", "DESC"].includes(this.peek().value.toUpperCase())) {
264
- dir = this.advance().value.toLowerCase();
265
- }
266
- query.orderBy.push({ variable: v, direction: dir });
267
- }
268
- break;
269
- }
270
- case "LIMIT": {
271
- this.advance();
272
- query.limit = Number(this.expect("number").value);
273
- break;
274
- }
275
- case "OFFSET": {
276
- this.advance();
277
- query.offset = Number(this.expect("number").value);
278
- break;
279
- }
280
- default:
281
- throw new Error(`Unknown keyword "${kw.value}" at pos ${kw.pos}`);
282
- }
283
- }
284
- return query;
285
- }
286
- parseRule() {
287
- const name = this.expect("word").value;
288
- this.expect("symbol", "(");
289
- const params = [];
290
- while (!this.isAt("symbol", ")") && !this.isAt("eof", undefined)) {
291
- const v = this.expect("word").value;
292
- params.push(v.startsWith("?") ? v.slice(1) : v);
293
- this.match("symbol", ",");
294
- }
295
- this.expect("symbol", ")");
296
- if (this.isAt("symbol", ":")) {
297
- this.advance();
298
- if (this.peek().kind === "number" && this.peek().value.startsWith("-")) {
299
- this.advance();
300
- }
301
- } else if (this.isAt("word", ":-")) {
302
- this.advance();
303
- }
304
- const body = [];
305
- const filters = [];
306
- while (!this.isAt("eof", undefined)) {
307
- if (this.peek().kind === "word" && this.peek().value.toUpperCase() === "FILTER") {
308
- this.advance();
309
- filters.push(this.parseFilter());
310
- } else {
311
- body.push(this.parsePattern());
312
- }
313
- this.match("symbol", ",");
314
- }
315
- return { name, params, body, filters };
316
- }
317
- }
318
- function parseQuery(input) {
319
- const tokens = tokenize(input);
320
- return new Parser(tokens).parseQuery();
321
- }
322
- function parseRule(input) {
323
- const tokens = tokenize(input);
324
- return new Parser(tokens).parseRule();
325
- }
326
- function parseSimple(input) {
327
- const trimmed = input.trim();
328
- const upper = trimmed.toUpperCase();
329
- if (upper.startsWith("SELECT") || upper.startsWith("WHERE")) {
330
- return parseQuery(trimmed);
331
- }
332
- const findMatch = trimmed.match(/^find\s+(.+?)\s+where\s+(.+)$/i);
333
- if (findMatch) {
334
- const vars = findMatch[1].trim().split(/\s+/);
335
- const conditions = findMatch[2].trim();
336
- const selectVars = vars.map((v) => v.startsWith("?") ? v : `?${v}`);
337
- const entity = selectVars[0];
338
- const parts = conditions.split(/\s+and\s+/i);
339
- const patterns = [];
340
- const filters = [];
341
- for (const part of parts) {
342
- const eqMatch = part.match(/^(\S+)\s*(=|!=|<|<=|>|>=|contains|startsWith|endsWith|matches)\s*(.+)$/);
343
- if (eqMatch) {
344
- const [, attr, op, val] = eqMatch;
345
- const valTrimmed = val.trim();
346
- if (op === "=") {
347
- patterns.push(`[${entity} "${attr}" ${valTrimmed}]`);
348
- } else {
349
- const tmpVar = `?_${attr.replace(/[^a-zA-Z0-9]/g, "_")}`;
350
- patterns.push(`[${entity} "${attr}" ${tmpVar}]`);
351
- filters.push(`FILTER ${tmpVar} ${op} ${valTrimmed}`);
352
- }
353
- }
354
- }
355
- const fullQuery = `SELECT ${selectVars.join(" ")}
356
- WHERE {
357
- ${patterns.join(`
358
- `)}
359
- }
360
- ${filters.join(`
361
- `)}`;
362
- return parseQuery(fullQuery);
363
- }
364
- throw new Error(`Cannot parse query: "${trimmed}". Use full EQL-S syntax or "find ?e where attr = value".`);
365
- }
366
-
367
- // src/core/query/datalog.ts
368
- function transitiveClosureRules(ruleName, linkAttribute) {
369
- return [
370
- {
371
- name: ruleName,
372
- params: ["x", "y"],
373
- body: [
374
- {
375
- kind: "link",
376
- source: variable("x"),
377
- attribute: literal(linkAttribute),
378
- target: variable("y")
379
- }
380
- ],
381
- filters: []
382
- },
383
- {
384
- name: ruleName,
385
- params: ["x", "y"],
386
- body: [
387
- {
388
- kind: "link",
389
- source: variable("x"),
390
- attribute: literal(linkAttribute),
391
- target: variable("z")
392
- },
393
- {
394
- kind: "rule",
395
- name: ruleName,
396
- args: [variable("z"), variable("y")]
397
- }
398
- ],
399
- filters: []
400
- }
401
- ];
402
- }
403
- function reverseReachabilityRules(ruleName, linkAttribute) {
404
- return [
405
- {
406
- name: ruleName,
407
- params: ["x", "y"],
408
- body: [
409
- {
410
- kind: "link",
411
- source: variable("y"),
412
- attribute: literal(linkAttribute),
413
- target: variable("x")
414
- }
415
- ],
416
- filters: []
417
- },
418
- {
419
- name: ruleName,
420
- params: ["x", "y"],
421
- body: [
422
- {
423
- kind: "link",
424
- source: variable("z"),
425
- attribute: literal(linkAttribute),
426
- target: variable("x")
427
- },
428
- {
429
- kind: "rule",
430
- name: ruleName,
431
- args: [variable("z"), variable("y")]
432
- }
433
- ],
434
- filters: []
435
- }
436
- ];
437
- }
438
- function siblingRules(ruleName, linkAttribute) {
439
- return [
440
- {
441
- name: ruleName,
442
- params: ["a", "b"],
443
- body: [
444
- {
445
- kind: "link",
446
- source: variable("a"),
447
- attribute: literal(linkAttribute),
448
- target: variable("parent")
449
- },
450
- {
451
- kind: "link",
452
- source: variable("b"),
453
- attribute: literal(linkAttribute),
454
- target: variable("parent")
455
- }
456
- ],
457
- filters: [
458
- {
459
- kind: "filter",
460
- left: variable("a"),
461
- op: "!=",
462
- right: variable("b")
463
- }
464
- ]
465
- }
466
- ];
467
- }
468
-
469
- class DatalogRuntime {
470
- engine;
471
- constructor(store) {
472
- this.engine = new QueryEngine(store);
473
- }
474
- addRule(rule) {
475
- this.engine.addRule(rule);
476
- }
477
- addRules(rules) {
478
- for (const r of rules)
479
- this.engine.addRule(r);
480
- }
481
- removeRule(name) {
482
- this.engine.removeRule(name);
483
- }
484
- registerTransitiveClosure(ruleName, linkAttribute) {
485
- this.addRules(transitiveClosureRules(ruleName, linkAttribute));
486
- }
487
- registerReverseReachability(ruleName, linkAttribute) {
488
- this.addRules(reverseReachabilityRules(ruleName, linkAttribute));
489
- }
490
- registerSiblings(ruleName, linkAttribute) {
491
- this.addRules(siblingRules(ruleName, linkAttribute));
492
- }
493
- getEngine() {
494
- return this.engine;
495
- }
496
- }
497
2
  // src/core/ontology/registry.ts
498
3
  class OntologyRegistry {
499
4
  schemas = new Map;
@@ -1097,4 +602,4 @@ function createValidationMiddleware(registry, options) {
1097
602
  }
1098
603
  };
1099
604
  }
1100
- export { parseQuery, parseRule, parseSimple, DatalogRuntime, OntologyRegistry, projectOntology, teamOntology, agentOntology, builtinOntologies, validateEntity, validateStore, createValidationMiddleware };
605
+ export { OntologyRegistry, projectOntology, teamOntology, agentOntology, builtinOntologies, validateEntity, validateStore, createValidationMiddleware };
@@ -0,0 +1,32 @@
1
+ // @bun
2
+ import {
3
+ DatalogRuntime,
4
+ parseQuery,
5
+ parseRule,
6
+ parseSimple,
7
+ reverseReachabilityRules,
8
+ siblingRules,
9
+ transitiveClosureRules
10
+ } from "./index-n9f2qyh5.js";
11
+ import {
12
+ QueryEngine,
13
+ isLiteral,
14
+ isVariable,
15
+ literal,
16
+ variable
17
+ } from "./index-yp88he8n.js";
18
+ import"./index-a76rekgs.js";
19
+ export {
20
+ variable,
21
+ transitiveClosureRules,
22
+ siblingRules,
23
+ reverseReachabilityRules,
24
+ parseSimple,
25
+ parseRule,
26
+ parseQuery,
27
+ literal,
28
+ isVariable,
29
+ isLiteral,
30
+ QueryEngine,
31
+ DatalogRuntime
32
+ };