@100xprompt/chitta 0.1.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 (92) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +203 -0
  3. package/assets/rules/claude-md.md +9 -0
  4. package/assets/skill/SKILL.md +47 -0
  5. package/package.json +48 -0
  6. package/src/README.md +124 -0
  7. package/src/arango-client.ts +67 -0
  8. package/src/arango-graph-provider.ts +364 -0
  9. package/src/bin.ts +27 -0
  10. package/src/config-env.ts +53 -0
  11. package/src/embedded/authorizer.ts +89 -0
  12. package/src/embedded/cli.ts +86 -0
  13. package/src/embedded/code-extractor.ts +9 -0
  14. package/src/embedded/demo.ts +36 -0
  15. package/src/embedded/extract.ts +12 -0
  16. package/src/embedded/extractors/code.ts +308 -0
  17. package/src/embedded/extractors/deterministic.ts +63 -0
  18. package/src/embedded/extractors/llm.ts +151 -0
  19. package/src/embedded/extractors/text-hygiene.ts +54 -0
  20. package/src/embedded/extractors/types.ts +34 -0
  21. package/src/embedded/graph/acl-paths.ts +96 -0
  22. package/src/embedded/graph/adjacency.ts +61 -0
  23. package/src/embedded/graph/centrality.ts +23 -0
  24. package/src/embedded/graph/communities.ts +46 -0
  25. package/src/embedded/graph/cypher.ts +17 -0
  26. package/src/embedded/graph/impact.ts +24 -0
  27. package/src/embedded/graph/knowledge-graph.ts +108 -0
  28. package/src/embedded/graph/pagerank.ts +57 -0
  29. package/src/embedded/graph/sql-access.ts +13 -0
  30. package/src/embedded/graph/traversal.ts +73 -0
  31. package/src/embedded/graph/types.ts +35 -0
  32. package/src/embedded/graph-query.ts +126 -0
  33. package/src/embedded/index.ts +171 -0
  34. package/src/embedded/ingest.ts +262 -0
  35. package/src/embedded/kgqa/answer-paths.ts +197 -0
  36. package/src/embedded/kgqa/entity-link.ts +13 -0
  37. package/src/embedded/kgqa/intent.ts +14 -0
  38. package/src/embedded/kgqa/predicates.ts +9 -0
  39. package/src/embedded/kgqa/preference.ts +20 -0
  40. package/src/embedded/kgqa/select.ts +99 -0
  41. package/src/embedded/kgqa/text.ts +16 -0
  42. package/src/embedded/kgqa/types.ts +6 -0
  43. package/src/embedded/kgqa-service.ts +122 -0
  44. package/src/embedded/llm-extractor.ts +10 -0
  45. package/src/embedded/local-embeddings.ts +36 -0
  46. package/src/embedded/personal.ts +100 -0
  47. package/src/embedded/reranker.ts +62 -0
  48. package/src/embedded/retrieval/decay-stage.ts +59 -0
  49. package/src/embedded/retrieval/diversity.ts +37 -0
  50. package/src/embedded/retrieval/fuse.ts +52 -0
  51. package/src/embedded/retrieval/graph-stage.ts +45 -0
  52. package/src/embedded/retrieval/hybrid-retriever.ts +80 -0
  53. package/src/embedded/retrieval/keyword-stage.ts +27 -0
  54. package/src/embedded/retrieval/passage.ts +44 -0
  55. package/src/embedded/retrieval/rerank-stage.ts +31 -0
  56. package/src/embedded/retrieval/trace.ts +31 -0
  57. package/src/embedded/retrieval/vector-stage.ts +15 -0
  58. package/src/embedded/sqlite-graph-provider.ts +119 -0
  59. package/src/embedded/sqlite-store.ts +95 -0
  60. package/src/embedded/sqlite-vec-service.ts +122 -0
  61. package/src/embedded/store/chunks.ts +61 -0
  62. package/src/embedded/store/fts.ts +50 -0
  63. package/src/embedded/store/nodes-edges.ts +112 -0
  64. package/src/embedded/store/salience.ts +37 -0
  65. package/src/embedded/store/schema.ts +109 -0
  66. package/src/embedded/transformers-embeddings.ts +100 -0
  67. package/src/embeddings.ts +51 -0
  68. package/src/eval/goldset.ts +46 -0
  69. package/src/eval/harness.ts +65 -0
  70. package/src/eval/metrics.ts +38 -0
  71. package/src/http/server.ts +93 -0
  72. package/src/index.ts +44 -0
  73. package/src/install/index.ts +139 -0
  74. package/src/install/platforms.ts +126 -0
  75. package/src/install/skill.ts +46 -0
  76. package/src/install/writers.ts +82 -0
  77. package/src/mcp/backend.ts +129 -0
  78. package/src/mcp/server.ts +83 -0
  79. package/src/mcp/tools/context-about.ts +69 -0
  80. package/src/mcp/tools/context-graph.ts +23 -0
  81. package/src/mcp/tools/context-ingest.ts +88 -0
  82. package/src/mcp/tools/context-rebuild.ts +22 -0
  83. package/src/mcp/tools/context-relate.ts +88 -0
  84. package/src/mcp/tools/get-context.ts +52 -0
  85. package/src/mcp/tools/index.ts +40 -0
  86. package/src/mcp/tools/types.ts +33 -0
  87. package/src/permission.ts +72 -0
  88. package/src/provider.ts +65 -0
  89. package/src/qdrant-vector.ts +76 -0
  90. package/src/retrieval.ts +218 -0
  91. package/src/service.ts +40 -0
  92. package/src/types.ts +91 -0
package/src/service.ts ADDED
@@ -0,0 +1,40 @@
1
+ // Wires config → fetch-based adapters → the native ACL/retrieval moat. This is
2
+ // the only place that knows about concrete backends; everything above depends on
3
+ // the interfaces in provider.ts. No Python, no SDKs - direct HTTP to Arango/Qdrant
4
+ // and the embedding server.
5
+
6
+ import { ArangoHttpClient, type ArangoConfig } from "./arango-client"
7
+ import { QdrantVectorService, type QdrantConfig } from "./qdrant-vector"
8
+ import { HttpEmbeddingProvider, type EmbeddingConfig } from "./embeddings"
9
+ import { ArangoGraphProvider } from "./arango-graph-provider"
10
+ import { RetrievalService } from "./retrieval"
11
+
12
+ export interface ContextConfig {
13
+ arango: ArangoConfig
14
+ qdrant: QdrantConfig
15
+ embeddings: EmbeddingConfig
16
+ collectionName: string
17
+ }
18
+
19
+ export interface ContextLog {
20
+ info: (m: string) => void
21
+ debug: (m: string) => void
22
+ error: (m: string, ...a: unknown[]) => void
23
+ }
24
+
25
+ /** Build a fully-wired retrieval service from config. */
26
+ export function buildContextService(cfg: ContextConfig, log?: ContextLog) {
27
+ const graph = new ArangoGraphProvider(new ArangoHttpClient(cfg.arango), log)
28
+ const vector = new QdrantVectorService(cfg.qdrant)
29
+ const embeddings = new HttpEmbeddingProvider(cfg.embeddings)
30
+ const retrieval = new RetrievalService({
31
+ graph,
32
+ vector,
33
+ embeddings,
34
+ collectionName: cfg.collectionName,
35
+ log,
36
+ })
37
+ return { graph, vector, embeddings, retrieval }
38
+ }
39
+
40
+ export type ContextService = ReturnType<typeof buildContextService>
package/src/types.ts ADDED
@@ -0,0 +1,91 @@
1
+ // Shared types for the context-retrieval layer. Ported from the data shapes used
2
+ // across PipesHub's Query service (`retrieval_service.py`) and Arango provider.
3
+
4
+ /** virtualRecordId -> recordId. Each virtual id maps to the ONE record the user
5
+ * is actually permitted to see (the cross-connector leak guard lives here). */
6
+ export type AccessibleMap = Record<string, string>
7
+
8
+ /** Optional retrieval filters. `kb`/`apps` scope the corpus; the rest are
9
+ * metadata facets resolved against graph edges. */
10
+ export interface RetrievalFilters {
11
+ kb?: string[]
12
+ apps?: string[]
13
+ departments?: string[]
14
+ categories?: string[]
15
+ subcategories1?: string[]
16
+ subcategories2?: string[]
17
+ subcategories3?: string[]
18
+ languages?: string[]
19
+ topics?: string[]
20
+ }
21
+
22
+ /** Metadata filters = everything except kb/apps. */
23
+ export type MetadataFilters = Omit<RetrievalFilters, "kb" | "apps">
24
+
25
+ export interface RecordDoc {
26
+ _key: string
27
+ virtualRecordId?: string
28
+ origin?: string
29
+ connectorName?: string
30
+ connectorId?: string
31
+ kbId?: string
32
+ webUrl?: string
33
+ recordName?: string
34
+ recordType?: string
35
+ mimeType?: string
36
+ previewRenderable?: boolean
37
+ hideWeburl?: boolean
38
+ [k: string]: unknown
39
+ }
40
+
41
+ export interface UserDoc {
42
+ _key?: string
43
+ id?: string
44
+ userId?: string
45
+ email?: string
46
+ [k: string]: unknown
47
+ }
48
+
49
+ export interface SearchResultMeta {
50
+ virtualRecordId?: string
51
+ recordId?: string
52
+ orgId?: string
53
+ origin?: string
54
+ connector?: string | null
55
+ connectorId?: string | null
56
+ kbId?: string | null
57
+ webUrl?: string
58
+ recordName?: string
59
+ mimeType?: string
60
+ extension?: string
61
+ point_id?: string | number
62
+ [k: string]: unknown
63
+ }
64
+
65
+ export interface SearchResult {
66
+ score: number
67
+ citationType: string
68
+ metadata: SearchResultMeta
69
+ content: string
70
+ }
71
+
72
+ export enum RetrievalStatus {
73
+ SUCCESS = "SUCCESS",
74
+ ERROR = "ERROR",
75
+ EMPTY_RESPONSE = "EMPTY_RESPONSE",
76
+ ACCESSIBLE_RECORDS_NOT_FOUND = "ACCESSIBLE_RECORDS_NOT_FOUND",
77
+ VECTOR_DB_EMPTY = "VECTOR_DB_EMPTY",
78
+ }
79
+
80
+ export interface RetrievalResponse {
81
+ searchResults: SearchResult[]
82
+ records: RecordDoc[]
83
+ status: RetrievalStatus
84
+ statusCode: number
85
+ message: string
86
+ appliedFilters?: { kb: string[]; kb_count: number }
87
+ }
88
+
89
+ export const ACCESSIBLE_RECORDS_NOT_FOUND_MESSAGE =
90
+ "No documents are available for you to search yet. Upload files in Collections " +
91
+ "and/or connect a data source under Connectors so content can be indexed."