trellis 2.1.6 → 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 +212 -12
  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-5b01h414.js → index-czecrvvn.js} +9 -9
  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,70 @@
1
+ /**
2
+ * Ontology Registry — Manages loaded ontology schemas.
3
+ *
4
+ * Provides registration, lookup, inheritance resolution, and
5
+ * entity-type-to-schema mapping.
6
+ *
7
+ * @module trellis/core/ontology
8
+ */
9
+ import type { OntologySchema, EntityDef, RelationDef, AttributeDef } from './types.js';
10
+ export declare class OntologyRegistry {
11
+ private schemas;
12
+ /** Resolved entity defs (with inherited attributes merged). */
13
+ private resolvedEntities;
14
+ /** Resolved relation defs. */
15
+ private resolvedRelations;
16
+ /**
17
+ * Register an ontology schema.
18
+ * Throws if an ontology with the same ID is already registered at the same version.
19
+ */
20
+ register(schema: OntologySchema): void;
21
+ /**
22
+ * Unregister an ontology by ID.
23
+ */
24
+ unregister(id: string): void;
25
+ /**
26
+ * Get a registered ontology schema by ID.
27
+ */
28
+ get(id: string): OntologySchema | undefined;
29
+ /**
30
+ * List all registered ontology schemas.
31
+ */
32
+ list(): OntologySchema[];
33
+ /**
34
+ * Get the resolved entity definition for an entity type name.
35
+ * Returns the entity def with inherited attributes merged in.
36
+ */
37
+ getEntityDef(typeName: string): EntityDef | undefined;
38
+ /**
39
+ * Get the ontology ID that defines a given entity type.
40
+ */
41
+ getEntityOntology(typeName: string): string | undefined;
42
+ /**
43
+ * List all known entity type names.
44
+ */
45
+ listEntityTypes(): string[];
46
+ /**
47
+ * Get all relation definitions involving a given entity type
48
+ * (either as source or target).
49
+ */
50
+ getRelationsForType(typeName: string): RelationDef[];
51
+ /**
52
+ * Get a specific relation definition by name.
53
+ */
54
+ getRelationDef(name: string): RelationDef | undefined;
55
+ /**
56
+ * List all known relation names.
57
+ */
58
+ listRelationNames(): string[];
59
+ /**
60
+ * Check if an entity type is known to any registered ontology.
61
+ */
62
+ hasEntityType(typeName: string): boolean;
63
+ /**
64
+ * Get the required attributes for an entity type.
65
+ */
66
+ getRequiredAttributes(typeName: string): AttributeDef[];
67
+ private _resolve;
68
+ private _resolveEntity;
69
+ }
70
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/core/ontology/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,SAAS,EACT,WAAW,EACX,YAAY,EACb,MAAM,YAAY,CAAC;AAMpB,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,OAAO,CAA0C;IACzD,+DAA+D;IAC/D,OAAO,CAAC,gBAAgB,CAAkE;IAC1F,8BAA8B;IAC9B,OAAO,CAAC,iBAAiB,CAAsE;IAE/F;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;IAWtC;;OAEG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAwB5B;;OAEG;IACH,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAI3C;;OAEG;IACH,IAAI,IAAI,cAAc,EAAE;IAIxB;;;OAGG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAIrD;;OAEG;IACH,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIvD;;OAEG;IACH,eAAe,IAAI,MAAM,EAAE;IAI3B;;;OAGG;IACH,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,EAAE;IAepD;;OAEG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAKrD;;OAEG;IACH,iBAAiB,IAAI,MAAM,EAAE;IAI7B;;OAEG;IACH,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIxC;;OAEG;IACH,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,EAAE;IAUvD,OAAO,CAAC,QAAQ;IAkBhB,OAAO,CAAC,cAAc;CA+BvB"}
@@ -0,0 +1,97 @@
1
+ /**
2
+ * Ontology Type System — Declarative schemas for entity types, attributes,
3
+ * constraints, and relationships.
4
+ *
5
+ * Ontologies define the "shape" of entities in the graph. They are used for:
6
+ * - Schema validation (reject mutations that violate constraints)
7
+ * - Documentation (describe what entity types exist and their attributes)
8
+ * - Code generation and tooling (auto-complete, type checking)
9
+ *
10
+ * @module trellis/core/ontology
11
+ */
12
+ import type { Atom } from '../store/eav-store.js';
13
+ export type AttrType = 'string' | 'number' | 'boolean' | 'date' | 'ref' | 'any';
14
+ export interface AttributeDef {
15
+ /** Attribute name (fact key). */
16
+ name: string;
17
+ /** Expected value type. */
18
+ type: AttrType;
19
+ /** Human-readable description. */
20
+ description?: string;
21
+ /** Whether this attribute is required on entity creation. */
22
+ required?: boolean;
23
+ /** Whether only one value is allowed (default: true). */
24
+ unique?: boolean;
25
+ /** Default value if not provided. */
26
+ default?: Atom;
27
+ /** Allowed values (enum constraint). */
28
+ enum?: Atom[];
29
+ /** Regex pattern for string values. */
30
+ pattern?: string;
31
+ /** Minimum value (for numbers) or min length (for strings). */
32
+ min?: number;
33
+ /** Maximum value (for numbers) or max length (for strings). */
34
+ max?: number;
35
+ /** If type is 'ref', the target entity type(s) this can reference. */
36
+ refTypes?: string[];
37
+ }
38
+ export interface RelationDef {
39
+ /** Relation attribute name (link key). */
40
+ name: string;
41
+ /** Human-readable description. */
42
+ description?: string;
43
+ /** Source entity type(s) that can have this relation. */
44
+ sourceTypes: string[];
45
+ /** Target entity type(s) this relation can point to. */
46
+ targetTypes: string[];
47
+ /** Cardinality: 'one' = at most one target, 'many' = unlimited. */
48
+ cardinality?: 'one' | 'many';
49
+ /** Whether this relation is required. */
50
+ required?: boolean;
51
+ /** Inverse relation name (auto-created on the target). */
52
+ inverse?: string;
53
+ }
54
+ export interface EntityDef {
55
+ /** Entity type name (e.g. "Project", "User", "Agent"). */
56
+ name: string;
57
+ /** Human-readable description. */
58
+ description?: string;
59
+ /** Attribute definitions for this entity type. */
60
+ attributes: AttributeDef[];
61
+ /** Whether this entity type is abstract (cannot be instantiated directly). */
62
+ abstract?: boolean;
63
+ /** Parent entity type (for inheritance). */
64
+ extends?: string;
65
+ }
66
+ export interface OntologySchema {
67
+ /** Unique ontology identifier (e.g. "trellis:project", "trellis:team"). */
68
+ id: string;
69
+ /** Human-readable name. */
70
+ name: string;
71
+ /** Semantic version. */
72
+ version: string;
73
+ /** Human-readable description. */
74
+ description?: string;
75
+ /** Entity type definitions. */
76
+ entities: EntityDef[];
77
+ /** Relation definitions. */
78
+ relations: RelationDef[];
79
+ }
80
+ export interface ValidationError {
81
+ /** Entity ID that failed validation. */
82
+ entityId: string;
83
+ /** Entity type. */
84
+ entityType: string;
85
+ /** Which attribute or relation failed. */
86
+ field: string;
87
+ /** Error message. */
88
+ message: string;
89
+ /** Severity: 'error' = hard failure, 'warning' = advisory. */
90
+ severity: 'error' | 'warning';
91
+ }
92
+ export interface ValidationResult {
93
+ valid: boolean;
94
+ errors: ValidationError[];
95
+ warnings: ValidationError[];
96
+ }
97
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/ontology/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAMlD,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC;AAEhF,MAAM,WAAW,YAAY;IAC3B,iCAAiC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,2BAA2B;IAC3B,IAAI,EAAE,QAAQ,CAAC;IACf,kCAAkC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,yDAAyD;IACzD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,qCAAqC;IACrC,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,wCAAwC;IACxC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC;IACd,uCAAuC;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,+DAA+D;IAC/D,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,+DAA+D;IAC/D,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,sEAAsE;IACtE,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAMD,MAAM,WAAW,WAAW;IAC1B,0CAA0C;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,kCAAkC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yDAAyD;IACzD,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,wDAAwD;IACxD,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,mEAAmE;IACnE,WAAW,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IAC7B,yCAAyC;IACzC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,0DAA0D;IAC1D,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAMD,MAAM,WAAW,SAAS;IACxB,0DAA0D;IAC1D,IAAI,EAAE,MAAM,CAAC;IACb,kCAAkC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kDAAkD;IAClD,UAAU,EAAE,YAAY,EAAE,CAAC;IAC3B,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,4CAA4C;IAC5C,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAMD,MAAM,WAAW,cAAc;IAC7B,2EAA2E;IAC3E,EAAE,EAAE,MAAM,CAAC;IACX,2BAA2B;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,wBAAwB;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,kCAAkC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+BAA+B;IAC/B,QAAQ,EAAE,SAAS,EAAE,CAAC;IACtB,4BAA4B;IAC5B,SAAS,EAAE,WAAW,EAAE,CAAC;CAC1B;AAMD,MAAM,WAAW,eAAe;IAC9B,wCAAwC;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,mBAAmB;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,0CAA0C;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,qBAAqB;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,8DAA8D;IAC9D,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;CAC/B;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,QAAQ,EAAE,eAAe,EAAE,CAAC;CAC7B"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Ontology Validation — Schema enforcement for graph mutations.
3
+ *
4
+ * Provides both standalone validation (check existing entities against schemas)
5
+ * and a kernel middleware that rejects mutations violating ontology constraints.
6
+ *
7
+ * @module trellis/core/ontology
8
+ */
9
+ import type { EAVStore } from '../store/eav-store.js';
10
+ import type { KernelMiddleware } from '../kernel/middleware.js';
11
+ import type { OntologyRegistry } from './registry.js';
12
+ import type { ValidationResult } from './types.js';
13
+ /**
14
+ * Validate a single entity against the ontology registry.
15
+ */
16
+ export declare function validateEntity(entityId: string, store: EAVStore, registry: OntologyRegistry): ValidationResult;
17
+ /**
18
+ * Validate all entities in the store against the ontology registry.
19
+ */
20
+ export declare function validateStore(store: EAVStore, registry: OntologyRegistry): ValidationResult;
21
+ /**
22
+ * Creates a kernel middleware that validates mutations against the ontology.
23
+ *
24
+ * - On `addFacts`: validates that new facts conform to attribute definitions
25
+ * - On `addLinks`: validates that links conform to relation definitions
26
+ * - Blocks operations that would create invalid data (throws on error)
27
+ *
28
+ * @param registry The ontology registry to validate against
29
+ * @param strict If true, unknown entity types cause errors (default: false = warnings only)
30
+ */
31
+ export declare function createValidationMiddleware(registry: OntologyRegistry, options?: {
32
+ strict?: boolean;
33
+ }): KernelMiddleware;
34
+ //# sourceMappingURL=validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../../src/core/ontology/validator.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAoB,MAAM,uBAAuB,CAAC;AAExE,OAAO,KAAK,EAAE,gBAAgB,EAAuC,MAAM,yBAAyB,CAAC;AACrG,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,KAAK,EAKV,gBAAgB,EACjB,MAAM,YAAY,CAAC;AAMpB;;GAEG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,QAAQ,EACf,QAAQ,EAAE,gBAAgB,GACzB,gBAAgB,CAoMlB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,QAAQ,EACf,QAAQ,EAAE,gBAAgB,GACzB,gBAAgB,CAkBlB;AAsCD;;;;;;;;;GASG;AACH,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAC7B,gBAAgB,CA4ElB"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Kernel persistence backend types.
3
+ * Inlined from trellis-core for single-package publish.
4
+ *
5
+ * @module trellis/core
6
+ */
7
+ import type { Fact, Link } from '../store/eav-store.js';
8
+ export type KernelOpKind = 'addFacts' | 'addLinks' | 'deleteFacts' | 'deleteLinks';
9
+ export interface KernelOp {
10
+ /**
11
+ * Content hash of this operation (including previousHash).
12
+ * Format: trellis:op:{hash}
13
+ */
14
+ hash: string;
15
+ /**
16
+ * Kind of operation.
17
+ */
18
+ kind: KernelOpKind;
19
+ /**
20
+ * ISO timestamp of when the op was created.
21
+ */
22
+ timestamp: string;
23
+ /**
24
+ * The ID of the agent that performed the operation.
25
+ */
26
+ agentId: string;
27
+ /**
28
+ * Hash of the previous operation in the local chain.
29
+ */
30
+ previousHash?: string;
31
+ /**
32
+ * The actual data payload.
33
+ */
34
+ facts?: Fact[];
35
+ links?: Link[];
36
+ /**
37
+ * Facts to delete (for update/delete operations).
38
+ */
39
+ deleteFacts?: Fact[];
40
+ /**
41
+ * Links to delete (for update/delete operations).
42
+ */
43
+ deleteLinks?: Link[];
44
+ }
45
+ export interface KernelBackend {
46
+ init(): void;
47
+ append(op: KernelOp): void;
48
+ readAll(): KernelOp[];
49
+ readUntil(hash: string): KernelOp[];
50
+ readAfter(hash: string): KernelOp[];
51
+ readUntilTimestamp(isoTimestamp: string): KernelOp[];
52
+ getLastOp(): KernelOp | undefined;
53
+ saveSnapshot(lastOpHash: string, data: any): void;
54
+ loadLatestSnapshot(): {
55
+ lastOpHash: string;
56
+ data: any;
57
+ } | undefined;
58
+ close?(): void;
59
+ }
60
+ //# sourceMappingURL=backend.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../../../src/core/persist/backend.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAExD,MAAM,MAAM,YAAY,GACpB,UAAU,GACV,UAAU,GACV,aAAa,GACb,aAAa,CAAC;AAElB,MAAM,WAAW,QAAQ;IACvB;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,IAAI,EAAE,YAAY,CAAC;IAEnB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;IACf,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;IAEf;;OAEG;IACH,WAAW,CAAC,EAAE,IAAI,EAAE,CAAC;IAErB;;OAEG;IACH,WAAW,CAAC,EAAE,IAAI,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,IAAI,IAAI,CAAC;IACb,MAAM,CAAC,EAAE,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC3B,OAAO,IAAI,QAAQ,EAAE,CAAC;IACtB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,EAAE,CAAC;IACpC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,EAAE,CAAC;IACpC,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,QAAQ,EAAE,CAAC;IACrD,SAAS,IAAI,QAAQ,GAAG,SAAS,CAAC;IAGlC,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,IAAI,CAAC;IAClD,kBAAkB,IAAI;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,GAAG,CAAA;KAAE,GAAG,SAAS,CAAC;IAEpE,KAAK,CAAC,IAAI,IAAI,CAAC;CAChB"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * SQLite-backed Kernel Backend
3
+ *
4
+ * Replaces the P0 JsonOpLog with a proper WAL-mode SQLite database.
5
+ * Stores ops, snapshots, and blobs in a single database file.
6
+ *
7
+ * @module trellis/core
8
+ */
9
+ import type { KernelOp, KernelBackend } from './backend.js';
10
+ export declare class SqliteKernelBackend implements KernelBackend {
11
+ private dbPath;
12
+ private db;
13
+ private _stmts;
14
+ constructor(dbPath: string);
15
+ init(): void;
16
+ private _prepareStatements;
17
+ append(op: KernelOp): void;
18
+ appendBatch(ops: KernelOp[]): void;
19
+ readAll(): KernelOp[];
20
+ readUntil(hash: string): KernelOp[];
21
+ readAfter(hash: string): KernelOp[];
22
+ readUntilTimestamp(isoTimestamp: string): KernelOp[];
23
+ getLastOp(): KernelOp | undefined;
24
+ getOpByHash(hash: string): KernelOp | undefined;
25
+ count(): number;
26
+ /**
27
+ * Find the common ancestor op of two op hashes by walking
28
+ * previousHash chains until they converge.
29
+ */
30
+ findCommonAncestor(hashA: string, hashB: string): KernelOp | undefined;
31
+ saveSnapshot(lastOpHash: string, data: any): void;
32
+ loadLatestSnapshot(): {
33
+ lastOpHash: string;
34
+ data: any;
35
+ } | undefined;
36
+ putBlob(hash: string, content: Uint8Array): void;
37
+ getBlob(hash: string): Uint8Array | undefined;
38
+ hasBlob(hash: string): boolean;
39
+ close(): void;
40
+ }
41
+ //# sourceMappingURL=sqlite-backend.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlite-backend.d.ts","sourceRoot":"","sources":["../../../src/core/persist/sqlite-backend.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAuC5D,qBAAa,mBAAoB,YAAW,aAAa;IAiB3C,OAAO,CAAC,MAAM;IAhB1B,OAAO,CAAC,EAAE,CAAW;IACrB,OAAO,CAAC,MAAM,CAaE;gBAEI,MAAM,EAAE,MAAM;IAIlC,IAAI,IAAI,IAAI;IAQZ,OAAO,CAAC,kBAAkB;IAqD1B,MAAM,CAAC,EAAE,EAAE,QAAQ,GAAG,IAAI;IAoB1B,WAAW,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,IAAI;IASlC,OAAO,IAAI,QAAQ,EAAE;IAKrB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,EAAE;IAKnC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,EAAE;IAKnC,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,QAAQ,EAAE;IAUpD,SAAS,IAAI,QAAQ,GAAG,SAAS;IAKjC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAK/C,KAAK,IAAI,MAAM;IAKf;;;OAGG;IACH,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IA2BtE,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,IAAI;IAOjD,kBAAkB,IAAI;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,GAAG,CAAA;KAAE,GAAG,SAAS;IAanE,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,GAAG,IAAI;IAOhD,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAM7C,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAQ9B,KAAK,IAAI,IAAI;CAGd"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Plugin System — Public API Surface
3
+ *
4
+ * @module trellis/core/plugins
5
+ */
6
+ export { PluginRegistry, EventBus } from './registry.js';
7
+ export type { PluginDef, PluginContext, PluginManifest, EventCallback, EventHandler, WellKnownEvent, WorkspaceConfig, } from './types.js';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/plugins/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzD,YAAY,EACV,SAAS,EACT,aAAa,EACb,cAAc,EACd,aAAa,EACb,YAAY,EACZ,cAAc,EACd,eAAe,GAChB,MAAM,YAAY,CAAC"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Plugin Registry — Load, register, and manage plugins.
3
+ *
4
+ * Handles plugin lifecycle, dependency resolution, event dispatching,
5
+ * and workspace configuration.
6
+ *
7
+ * @module trellis/core/plugins
8
+ */
9
+ import type { TrellisKernel } from '../kernel/trellis-kernel.js';
10
+ import type { OntologyRegistry } from '../ontology/registry.js';
11
+ import type { QueryEngine } from '../query/engine.js';
12
+ import type { PluginDef, EventCallback, WorkspaceConfig } from './types.js';
13
+ export declare class EventBus {
14
+ private handlers;
15
+ on(event: string, handler: EventCallback): void;
16
+ off(event: string, handler: EventCallback): void;
17
+ emit(event: string, data?: unknown): Promise<void>;
18
+ listEvents(): string[];
19
+ clear(): void;
20
+ }
21
+ export declare class PluginRegistry {
22
+ private plugins;
23
+ private eventBus;
24
+ private workspaceConfig;
25
+ private logs;
26
+ /**
27
+ * Register a plugin definition. Does not load it yet.
28
+ */
29
+ register(def: PluginDef): void;
30
+ /**
31
+ * Unregister a plugin. Unloads it first if loaded.
32
+ */
33
+ unregister(id: string): Promise<void>;
34
+ /**
35
+ * Load a plugin (call onLoad, register middleware/ontologies/rules/events).
36
+ * Resolves dependencies first.
37
+ */
38
+ load(id: string, kernel?: TrellisKernel, ontologyRegistry?: OntologyRegistry, queryEngine?: QueryEngine): Promise<void>;
39
+ /**
40
+ * Unload a plugin (call onUnload, remove middleware/events).
41
+ */
42
+ unload(id: string): Promise<void>;
43
+ /**
44
+ * Load all registered plugins in dependency order.
45
+ */
46
+ loadAll(kernel?: TrellisKernel, ontologyRegistry?: OntologyRegistry, queryEngine?: QueryEngine): Promise<void>;
47
+ /**
48
+ * Unload all plugins in reverse order.
49
+ */
50
+ unloadAll(): Promise<void>;
51
+ get(id: string): PluginDef | undefined;
52
+ isLoaded(id: string): boolean;
53
+ list(): Array<{
54
+ def: PluginDef;
55
+ loaded: boolean;
56
+ }>;
57
+ listLoaded(): PluginDef[];
58
+ getEventBus(): EventBus;
59
+ emit(event: string, data?: unknown): Promise<void>;
60
+ on(event: string, handler: EventCallback): void;
61
+ getWorkspaceConfig(): WorkspaceConfig;
62
+ setWorkspaceConfig(config: WorkspaceConfig): void;
63
+ getConfigValue(key: string): unknown;
64
+ setConfigValue(key: string, value: unknown): void;
65
+ getLogs(pluginId?: string): typeof this.logs;
66
+ private _buildContext;
67
+ private _resolveDependencyOrder;
68
+ }
69
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/core/plugins/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EACV,SAAS,EAGT,aAAa,EAEb,eAAe,EAChB,MAAM,YAAY,CAAC;AAMpB,qBAAa,QAAQ;IACnB,OAAO,CAAC,QAAQ,CAA8C;IAE9D,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI;IAM/C,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI;IAQ1C,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBxD,UAAU,IAAI,MAAM,EAAE;IAItB,KAAK,IAAI,IAAI;CAGd;AAMD,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CAA+D;IAC9E,OAAO,CAAC,QAAQ,CAA4B;IAC5C,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,IAAI,CAAuE;IAEnF;;OAEG;IACH,QAAQ,CAAC,GAAG,EAAE,SAAS,GAAG,IAAI;IAO9B;;OAEG;IACG,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAO3C;;;OAGG;IACG,IAAI,CACR,EAAE,EAAE,MAAM,EACV,MAAM,CAAC,EAAE,aAAa,EACtB,gBAAgB,CAAC,EAAE,gBAAgB,EACnC,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC,IAAI,CAAC;IA0DhB;;OAEG;IACG,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBvC;;OAEG;IACG,OAAO,CACX,MAAM,CAAC,EAAE,aAAa,EACtB,gBAAgB,CAAC,EAAE,gBAAgB,EACnC,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC,IAAI,CAAC;IAOhB;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAWhC,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAItC,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAI7B,IAAI,IAAI,KAAK,CAAC;QAAE,GAAG,EAAE,SAAS,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,CAAC;IAIlD,UAAU,IAAI,SAAS,EAAE;IAUzB,WAAW,IAAI,QAAQ;IAIjB,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxD,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI;IAQ/C,kBAAkB,IAAI,eAAe;IAIrC,kBAAkB,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI;IAIjD,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIpC,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IASjD,OAAO,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,IAAI,CAAC,IAAI;IAS5C,OAAO,CAAC,aAAa;IAYrB,OAAO,CAAC,uBAAuB;CA0BhC"}
@@ -0,0 +1,87 @@
1
+ /**
2
+ * Plugin System Types
3
+ *
4
+ * Defines the plugin interface, manifest format, lifecycle hooks,
5
+ * and event system for extensibility.
6
+ *
7
+ * @module trellis/core/plugins
8
+ */
9
+ import type { KernelMiddleware } from '../kernel/middleware.js';
10
+ import type { OntologySchema } from '../ontology/types.js';
11
+ import type { DatalogRule } from '../query/types.js';
12
+ export interface PluginDef {
13
+ /** Unique plugin identifier (e.g. "trellis:security", "my-org:custom"). */
14
+ id: string;
15
+ /** Human-readable name. */
16
+ name: string;
17
+ /** Semantic version. */
18
+ version: string;
19
+ /** Description. */
20
+ description?: string;
21
+ /** Plugin dependencies (other plugin IDs). */
22
+ dependencies?: string[];
23
+ /** Kernel middleware provided by this plugin. */
24
+ middleware?: KernelMiddleware[];
25
+ /** Ontology schemas provided by this plugin. */
26
+ ontologies?: OntologySchema[];
27
+ /** Datalog rules provided by this plugin. */
28
+ rules?: DatalogRule[];
29
+ /** Event listeners provided by this plugin. */
30
+ eventHandlers?: EventHandler[];
31
+ /** Called when the plugin is loaded. */
32
+ onLoad?: (ctx: PluginContext) => void | Promise<void>;
33
+ /** Called when the plugin is unloaded. */
34
+ onUnload?: (ctx: PluginContext) => void | Promise<void>;
35
+ }
36
+ export interface PluginContext {
37
+ /** The plugin's own ID. */
38
+ pluginId: string;
39
+ /** Subscribe to events. */
40
+ on: (event: string, handler: EventCallback) => void;
41
+ /** Emit an event. */
42
+ emit: (event: string, data?: unknown) => void;
43
+ /** Get workspace config value. */
44
+ getConfig: (key: string) => unknown;
45
+ /** Log a message. */
46
+ log: (message: string) => void;
47
+ }
48
+ export type EventCallback = (data: unknown) => void | Promise<void>;
49
+ export interface EventHandler {
50
+ /** Event name pattern (e.g. "op:*", "entity:created", "milestone:created"). */
51
+ event: string;
52
+ /** Handler function. */
53
+ handler: EventCallback;
54
+ }
55
+ /** Well-known event names. */
56
+ export type WellKnownEvent = 'op:applied' | 'entity:created' | 'entity:updated' | 'entity:deleted' | 'link:added' | 'link:removed' | 'milestone:created' | 'issue:created' | 'issue:closed' | 'plugin:loaded' | 'plugin:unloaded';
57
+ export interface WorkspaceConfig {
58
+ /** Active ontology IDs. */
59
+ ontologies?: string[];
60
+ /** Active plugin IDs. */
61
+ plugins?: string[];
62
+ /** Tracked file patterns (globs). */
63
+ trackedPaths?: string[];
64
+ /** Ignore patterns. */
65
+ ignorePaths?: string[];
66
+ /** Branch policies. */
67
+ branchPolicies?: Record<string, {
68
+ linear?: boolean;
69
+ }>;
70
+ /** Embedding model override. */
71
+ embeddingModel?: string;
72
+ /** Snapshot threshold (ops between auto-snapshots). */
73
+ snapshotThreshold?: number;
74
+ /** Custom key-value settings. */
75
+ settings?: Record<string, unknown>;
76
+ }
77
+ export interface PluginManifest {
78
+ /** Plugin ID. */
79
+ id: string;
80
+ /** Installed version. */
81
+ version: string;
82
+ /** Whether the plugin is enabled. */
83
+ enabled: boolean;
84
+ /** Plugin-specific configuration. */
85
+ config?: Record<string, unknown>;
86
+ }
87
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/plugins/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Datalog Evaluator — Rule-based recursive queries.
3
+ *
4
+ * Provides transitive closure, reachability, and other recursive
5
+ * graph queries via Datalog-style rules evaluated over the EAV store.
6
+ *
7
+ * Built-in rules:
8
+ * - `reachable(?src, ?tgt)` via a named link attribute
9
+ * - `ancestor(?x, ?y)` (generic transitive closure over any link)
10
+ *
11
+ * Custom rules can be registered via `addRule()`.
12
+ *
13
+ * @module trellis/core/query
14
+ */
15
+ import type { EAVStore } from '../store/eav-store.js';
16
+ import type { DatalogRule } from './types.js';
17
+ import { QueryEngine } from './engine.js';
18
+ /**
19
+ * Creates a transitive closure rule over a specific link attribute.
20
+ *
21
+ * `reachable(?x, ?y) :- (x attr y)`
22
+ * `reachable(?x, ?y) :- (x attr ?z), reachable(?z, ?y)`
23
+ */
24
+ export declare function transitiveClosureRules(ruleName: string, linkAttribute: string): DatalogRule[];
25
+ /**
26
+ * Creates a reverse reachability rule (follows links backwards).
27
+ */
28
+ export declare function reverseReachabilityRules(ruleName: string, linkAttribute: string): DatalogRule[];
29
+ /**
30
+ * Creates a "sibling" rule — entities that share a common parent via a link attribute.
31
+ *
32
+ * `sibling(?a, ?b) :- (?a attr ?parent), (?b attr ?parent)`
33
+ * FILTER ?a != ?b
34
+ */
35
+ export declare function siblingRules(ruleName: string, linkAttribute: string): DatalogRule[];
36
+ export declare class DatalogRuntime {
37
+ private engine;
38
+ constructor(store: EAVStore);
39
+ /** Register a Datalog rule (or multiple). */
40
+ addRule(rule: DatalogRule): void;
41
+ addRules(rules: DatalogRule[]): void;
42
+ removeRule(name: string): void;
43
+ /** Register built-in transitive closure for a link attribute. */
44
+ registerTransitiveClosure(ruleName: string, linkAttribute: string): void;
45
+ /** Register built-in reverse reachability for a link attribute. */
46
+ registerReverseReachability(ruleName: string, linkAttribute: string): void;
47
+ /** Register built-in sibling rule for a link attribute. */
48
+ registerSiblings(ruleName: string, linkAttribute: string): void;
49
+ /** Get the underlying QueryEngine for direct query execution. */
50
+ getEngine(): QueryEngine;
51
+ }
52
+ //# sourceMappingURL=datalog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"datalog.d.ts","sourceRoot":"","sources":["../../../src/core/query/datalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAM1C;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,WAAW,EAAE,CAoC7F;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,WAAW,EAAE,CAkC/F;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,WAAW,EAAE,CA6BnF;AAMD,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAc;gBAEhB,KAAK,EAAE,QAAQ;IAI3B,6CAA6C;IAC7C,OAAO,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;IAIhC,QAAQ,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,IAAI;IAIpC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI9B,iEAAiE;IACjE,yBAAyB,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI;IAIxE,mEAAmE;IACnE,2BAA2B,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI;IAI1E,2DAA2D;IAC3D,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI;IAI/D,iEAAiE;IACjE,SAAS,IAAI,WAAW;CAGzB"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * EQL-S Query Engine — Pattern-matching evaluator over the EAV store.
3
+ *
4
+ * Evaluates queries by matching fact/link patterns against the store,
5
+ * binding variables, applying filters, and computing aggregates.
6
+ *
7
+ * @module trellis/core/query
8
+ */
9
+ import type { EAVStore, Atom } from '../store/eav-store.js';
10
+ import type { Query, DatalogRule } from './types.js';
11
+ export interface QueryResult {
12
+ bindings: Record<string, Atom>[];
13
+ executionTime: number;
14
+ count: number;
15
+ }
16
+ export declare class QueryEngine {
17
+ private store;
18
+ private rules;
19
+ private maxRuleDepth;
20
+ constructor(store: EAVStore);
21
+ /** Register a Datalog rule. Multiple rules with the same name = union. */
22
+ addRule(rule: DatalogRule): void;
23
+ removeRule(name: string): void;
24
+ /** Execute a query against the store. */
25
+ execute(query: Query): QueryResult;
26
+ private _evaluatePatterns;
27
+ private _evaluatePattern;
28
+ private _evalFactPattern;
29
+ private _evalLinkPattern;
30
+ private _evalNotPattern;
31
+ private _evalOrPattern;
32
+ private _evalRuleApplication;
33
+ private _evalFilter;
34
+ private _aggregate;
35
+ private _computeAggregate;
36
+ private _order;
37
+ private _project;
38
+ private _resolve;
39
+ private _bind;
40
+ private _dedup;
41
+ }
42
+ //# sourceMappingURL=engine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../src/core/query/engine.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAc,IAAI,EAAE,MAAM,uBAAuB,CAAC;AACxE,OAAO,KAAK,EACV,KAAK,EAaL,WAAW,EACZ,MAAM,YAAY,CAAC;AAOpB,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC;IACjC,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;CACf;AAMD,qBAAa,WAAW;IAIV,OAAO,CAAC,KAAK;IAHzB,OAAO,CAAC,KAAK,CAAyC;IACtD,OAAO,CAAC,YAAY,CAAM;gBAEN,KAAK,EAAE,QAAQ;IAEnC,0EAA0E;IAC1E,OAAO,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;IAMhC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI9B,yCAAyC;IACzC,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,WAAW;IAuClC,OAAO,CAAC,iBAAiB;IAYzB,OAAO,CAAC,gBAAgB;IAexB,OAAO,CAAC,gBAAgB;IAwCxB,OAAO,CAAC,gBAAgB;IAuCxB,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,oBAAoB;IAsD5B,OAAO,CAAC,WAAW;IAmCnB,OAAO,CAAC,UAAU;IA+BlB,OAAO,CAAC,iBAAiB;IAqCzB,OAAO,CAAC,MAAM;IAmBd,OAAO,CAAC,QAAQ;IAsBhB,OAAO,CAAC,QAAQ;IAKhB,OAAO,CAAC,KAAK;IAQb,OAAO,CAAC,MAAM;CAYf"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * EQL-S Query Module — Public API Surface
3
+ *
4
+ * @module trellis/core/query
5
+ */
6
+ export type { Variable, Literal, Term, FactPattern, LinkPattern, NotPattern, OrPattern, RuleApplication, Pattern, FilterOp, Filter, AggregateOp, Aggregate, OrderBy, Query, Bindings, DatalogRule, } from './types.js';
7
+ export { isVariable, isLiteral, variable, literal } from './types.js';
8
+ export { QueryEngine } from './engine.js';
9
+ export type { QueryResult } from './engine.js';
10
+ export { parseQuery, parseRule, parseSimple } from './parser.js';
11
+ export { DatalogRuntime, transitiveClosureRules, reverseReachabilityRules, siblingRules, } from './datalog.js';
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/query/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,YAAY,EACV,QAAQ,EAAE,OAAO,EAAE,IAAI,EACvB,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,eAAe,EAAE,OAAO,EACzE,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,SAAS,EACtB,OAAO,EACP,KAAK,EACL,QAAQ,EACR,WAAW,GACZ,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAGtE,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG/C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAGjE,OAAO,EACL,cAAc,EACd,sBAAsB,EACtB,wBAAwB,EACxB,YAAY,GACb,MAAM,cAAc,CAAC"}