@apart-tech/intelligence-core 1.0.1 → 1.0.3
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.
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +19 -2
- package/dist/config/index.js.map +1 -1
- package/dist/db/tenant.d.ts.map +1 -1
- package/dist/db/tenant.js +2 -0
- package/dist/db/tenant.js.map +1 -1
- package/dist/index.d.ts +10 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/providers/batching.d.ts +14 -0
- package/dist/providers/batching.d.ts.map +1 -0
- package/dist/providers/batching.js +82 -0
- package/dist/providers/batching.js.map +1 -0
- package/dist/providers/cache.d.ts +30 -0
- package/dist/providers/cache.d.ts.map +1 -0
- package/dist/providers/cache.js +171 -0
- package/dist/providers/cache.js.map +1 -0
- package/dist/providers/index.d.ts +13 -3
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js +75 -8
- package/dist/providers/index.js.map +1 -1
- package/dist/providers/ollama.d.ts +11 -0
- package/dist/providers/ollama.d.ts.map +1 -0
- package/dist/providers/ollama.js +39 -0
- package/dist/providers/ollama.js.map +1 -0
- package/dist/providers/openai.d.ts +4 -2
- package/dist/providers/openai.d.ts.map +1 -1
- package/dist/providers/openai.js +29 -20
- package/dist/providers/openai.js.map +1 -1
- package/dist/providers/retry.d.ts +8 -0
- package/dist/providers/retry.d.ts.map +1 -0
- package/dist/providers/retry.js +55 -0
- package/dist/providers/retry.js.map +1 -0
- package/dist/providers/voyage.d.ts +11 -0
- package/dist/providers/voyage.d.ts.map +1 -0
- package/dist/providers/voyage.js +43 -0
- package/dist/providers/voyage.js.map +1 -0
- package/dist/services/context-service.d.ts +5 -1
- package/dist/services/context-service.d.ts.map +1 -1
- package/dist/services/context-service.js +30 -1
- package/dist/services/context-service.js.map +1 -1
- package/dist/services/node-service.d.ts +16 -0
- package/dist/services/node-service.d.ts.map +1 -1
- package/dist/services/node-service.js +53 -0
- package/dist/services/node-service.js.map +1 -1
- package/dist/services/workspace-service.d.ts +55 -0
- package/dist/services/workspace-service.d.ts.map +1 -0
- package/dist/services/workspace-service.js +124 -0
- package/dist/services/workspace-service.js.map +1 -0
- package/dist/types/index.d.ts +27 -2
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/prisma/schema.prisma +37 -4
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { SINGLE_TENANT_ORG_ID } from "../db/tenant.js";
|
|
2
|
+
export class WorkspaceService {
|
|
3
|
+
db;
|
|
4
|
+
orgId;
|
|
5
|
+
constructor(db, tenantCtx) {
|
|
6
|
+
this.db = db;
|
|
7
|
+
this.orgId = tenantCtx?.organizationId ?? SINGLE_TENANT_ORG_ID;
|
|
8
|
+
}
|
|
9
|
+
async create(input) {
|
|
10
|
+
return this.db.workspace.create({
|
|
11
|
+
data: {
|
|
12
|
+
name: input.name,
|
|
13
|
+
slug: input.slug,
|
|
14
|
+
description: input.description ?? "",
|
|
15
|
+
domainSlugs: input.domainSlugs ?? [],
|
|
16
|
+
nodeTypes: input.nodeTypes ?? [],
|
|
17
|
+
tags: input.tags ?? [],
|
|
18
|
+
maxDepth: input.maxDepth ?? null,
|
|
19
|
+
maxNodes: input.maxNodes ?? null,
|
|
20
|
+
includeDrafts: input.includeDrafts ?? false,
|
|
21
|
+
systemPrompt: input.systemPrompt ?? "",
|
|
22
|
+
createdBy: input.createdBy,
|
|
23
|
+
organizationId: this.orgId,
|
|
24
|
+
},
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
async update(id, input) {
|
|
28
|
+
// Build update data, only include fields that are provided
|
|
29
|
+
const data = { updatedAt: new Date() };
|
|
30
|
+
if (input.name !== undefined)
|
|
31
|
+
data.name = input.name;
|
|
32
|
+
if (input.description !== undefined)
|
|
33
|
+
data.description = input.description;
|
|
34
|
+
if (input.domainSlugs !== undefined)
|
|
35
|
+
data.domainSlugs = input.domainSlugs;
|
|
36
|
+
if (input.nodeTypes !== undefined)
|
|
37
|
+
data.nodeTypes = input.nodeTypes;
|
|
38
|
+
if (input.tags !== undefined)
|
|
39
|
+
data.tags = input.tags;
|
|
40
|
+
if (input.maxDepth !== undefined)
|
|
41
|
+
data.maxDepth = input.maxDepth;
|
|
42
|
+
if (input.maxNodes !== undefined)
|
|
43
|
+
data.maxNodes = input.maxNodes;
|
|
44
|
+
if (input.includeDrafts !== undefined)
|
|
45
|
+
data.includeDrafts = input.includeDrafts;
|
|
46
|
+
if (input.systemPrompt !== undefined)
|
|
47
|
+
data.systemPrompt = input.systemPrompt;
|
|
48
|
+
return this.db.workspace.update({
|
|
49
|
+
where: { id },
|
|
50
|
+
data,
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
async delete(id) {
|
|
54
|
+
await this.db.workspace.delete({ where: { id } });
|
|
55
|
+
return true;
|
|
56
|
+
}
|
|
57
|
+
async getBySlug(slug) {
|
|
58
|
+
return this.db.workspace.findUnique({
|
|
59
|
+
where: { slug_organizationId: { slug, organizationId: this.orgId } },
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
async getById(id) {
|
|
63
|
+
return this.db.workspace.findUnique({ where: { id } });
|
|
64
|
+
}
|
|
65
|
+
async list() {
|
|
66
|
+
return this.db.workspace.findMany({
|
|
67
|
+
where: { organizationId: this.orgId },
|
|
68
|
+
orderBy: { name: "asc" },
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Resolve a workspace slug into a filter object ready for ContextService/SearchService.
|
|
73
|
+
* Converts domain slugs to domain IDs using the provided domain lookup.
|
|
74
|
+
*/
|
|
75
|
+
async resolveFilter(slug, domainSlugToId) {
|
|
76
|
+
const ws = await this.getBySlug(slug);
|
|
77
|
+
if (!ws)
|
|
78
|
+
return null;
|
|
79
|
+
const domainSlugs = ws.domainSlugs || [];
|
|
80
|
+
const domainIds = domainSlugs.length > 0
|
|
81
|
+
? await domainSlugToId(domainSlugs)
|
|
82
|
+
: undefined;
|
|
83
|
+
return {
|
|
84
|
+
domainIds: domainIds && domainIds.length > 0 ? domainIds : undefined,
|
|
85
|
+
types: (ws.nodeTypes || []).length > 0 ? ws.nodeTypes : undefined,
|
|
86
|
+
tags: (ws.tags || []).length > 0 ? ws.tags : undefined,
|
|
87
|
+
maxDepth: ws.maxDepth ?? undefined,
|
|
88
|
+
maxNodes: ws.maxNodes ?? undefined,
|
|
89
|
+
includeDrafts: ws.includeDrafts,
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Export a workspace as a CLAUDE.md-formatted markdown string.
|
|
94
|
+
*/
|
|
95
|
+
async exportAsMarkdown(slug) {
|
|
96
|
+
const ws = await this.getBySlug(slug);
|
|
97
|
+
if (!ws)
|
|
98
|
+
return null;
|
|
99
|
+
const domainSlugs = ws.domainSlugs || [];
|
|
100
|
+
const nodeTypes = ws.nodeTypes || [];
|
|
101
|
+
const tags = ws.tags || [];
|
|
102
|
+
let md = `# ${ws.name}\n\n`;
|
|
103
|
+
if (ws.description)
|
|
104
|
+
md += `${ws.description}\n\n`;
|
|
105
|
+
if (ws.systemPrompt)
|
|
106
|
+
md += `## Purpose\n\n${ws.systemPrompt}\n\n`;
|
|
107
|
+
md += `## Knowledge Scope\n\n`;
|
|
108
|
+
if (domainSlugs.length > 0)
|
|
109
|
+
md += `- **Domains:** ${domainSlugs.join(", ")}\n`;
|
|
110
|
+
if (nodeTypes.length > 0)
|
|
111
|
+
md += `- **Node types:** ${nodeTypes.join(", ")}\n`;
|
|
112
|
+
if (tags.length > 0)
|
|
113
|
+
md += `- **Tags:** ${tags.join(", ")}\n`;
|
|
114
|
+
if (!domainSlugs.length && !nodeTypes.length && !tags.length)
|
|
115
|
+
md += `- All knowledge (no filters)\n`;
|
|
116
|
+
md += `\n## Usage\n\n`;
|
|
117
|
+
md += `\`\`\`bash\n`;
|
|
118
|
+
md += `ai context <query> --workspace ${ws.slug}\n`;
|
|
119
|
+
md += `ai search <query> --workspace ${ws.slug}\n`;
|
|
120
|
+
md += `\`\`\`\n`;
|
|
121
|
+
return md;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=workspace-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-service.js","sourceRoot":"","sources":["../../src/services/workspace-service.ts"],"names":[],"mappings":"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"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import type { Node as PrismaNode, Edge as PrismaEdge, Domain as PrismaDomain } from "@prisma/client";
|
|
1
|
+
import type { Node as PrismaNode, Edge as PrismaEdge, Domain as PrismaDomain, Workspace as PrismaWorkspace } from "@prisma/client";
|
|
2
2
|
export type Node = PrismaNode;
|
|
3
3
|
export type Domain = PrismaDomain;
|
|
4
|
+
export type Workspace = PrismaWorkspace;
|
|
4
5
|
export type NewNode = Omit<Node, "id" | "createdAt" | "updatedAt" | "embedding" | "searchVector"> & {
|
|
5
6
|
embedding?: unknown;
|
|
6
7
|
searchVector?: unknown;
|
|
@@ -29,6 +30,7 @@ export interface ContextOptions {
|
|
|
29
30
|
includeDrafts?: boolean;
|
|
30
31
|
types?: string[];
|
|
31
32
|
domainIds?: string[];
|
|
33
|
+
workspace?: string;
|
|
32
34
|
}
|
|
33
35
|
export interface ContextPackage {
|
|
34
36
|
nodes: Node[];
|
|
@@ -36,10 +38,25 @@ export interface ContextPackage {
|
|
|
36
38
|
query: string;
|
|
37
39
|
assembledAt: string;
|
|
38
40
|
domains?: Domain[];
|
|
41
|
+
workspace?: {
|
|
42
|
+
name: string;
|
|
43
|
+
slug: string;
|
|
44
|
+
description: string;
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
export interface EmbedBatchOptions {
|
|
48
|
+
onProgress?: (progress: EmbeddingProgress) => void;
|
|
49
|
+
signal?: AbortSignal;
|
|
50
|
+
}
|
|
51
|
+
export interface EmbeddingProgress {
|
|
52
|
+
completed: number;
|
|
53
|
+
total: number;
|
|
54
|
+
cached: number;
|
|
55
|
+
elapsed: number;
|
|
39
56
|
}
|
|
40
57
|
export interface EmbeddingProvider {
|
|
41
58
|
embed(text: string): Promise<number[]>;
|
|
42
|
-
embedBatch(texts: string[]): Promise<number[][]>;
|
|
59
|
+
embedBatch(texts: string[], options?: EmbedBatchOptions): Promise<number[][]>;
|
|
43
60
|
}
|
|
44
61
|
/** @deprecated Use ApartConfig instead */
|
|
45
62
|
export type CollectiveConfig = ApartConfig;
|
|
@@ -51,6 +68,14 @@ export interface ApartConfig {
|
|
|
51
68
|
provider: string;
|
|
52
69
|
model: string;
|
|
53
70
|
dimensions: number;
|
|
71
|
+
batchSize?: number;
|
|
72
|
+
maxConcurrency?: number;
|
|
73
|
+
baseUrl?: string;
|
|
74
|
+
cache?: {
|
|
75
|
+
enabled: boolean;
|
|
76
|
+
backend: "database" | "file";
|
|
77
|
+
directory?: string;
|
|
78
|
+
};
|
|
54
79
|
};
|
|
55
80
|
search: {
|
|
56
81
|
semanticWeight: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,IAAI,IAAI,UAAU,EAClB,IAAI,IAAI,UAAU,EAClB,MAAM,IAAI,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/prisma/schema.prisma
CHANGED
|
@@ -14,10 +14,11 @@ model Organization {
|
|
|
14
14
|
metadata Json @default("{}")
|
|
15
15
|
createdAt DateTime @default(now()) @map("created_at") @db.Timestamptz
|
|
16
16
|
|
|
17
|
-
nodes
|
|
18
|
-
edges
|
|
19
|
-
domains
|
|
20
|
-
apiKeys
|
|
17
|
+
nodes Node[]
|
|
18
|
+
edges Edge[]
|
|
19
|
+
domains Domain[]
|
|
20
|
+
apiKeys ApiKey[]
|
|
21
|
+
workspaces Workspace[]
|
|
21
22
|
|
|
22
23
|
@@map("organizations")
|
|
23
24
|
}
|
|
@@ -97,6 +98,38 @@ model Edge {
|
|
|
97
98
|
@@map("edges")
|
|
98
99
|
}
|
|
99
100
|
|
|
101
|
+
model Workspace {
|
|
102
|
+
id String @id @default(uuid()) @db.Uuid
|
|
103
|
+
name String @db.VarChar(200)
|
|
104
|
+
slug String @db.VarChar(200)
|
|
105
|
+
description String @default("") @db.Text
|
|
106
|
+
|
|
107
|
+
// Filter rules
|
|
108
|
+
domainSlugs Json @default("[]") @map("domain_slugs")
|
|
109
|
+
nodeTypes Json @default("[]") @map("node_types")
|
|
110
|
+
tags Json @default("[]") @map("tags")
|
|
111
|
+
|
|
112
|
+
// Context assembly overrides
|
|
113
|
+
maxDepth Int? @map("max_depth")
|
|
114
|
+
maxNodes Int? @map("max_nodes")
|
|
115
|
+
includeDrafts Boolean @default(false) @map("include_drafts")
|
|
116
|
+
|
|
117
|
+
// Layer 1: map description for AI
|
|
118
|
+
systemPrompt String @default("") @map("system_prompt") @db.Text
|
|
119
|
+
|
|
120
|
+
metadata Json @default("{}")
|
|
121
|
+
createdBy String @map("created_by") @db.VarChar(255)
|
|
122
|
+
createdAt DateTime @default(now()) @map("created_at") @db.Timestamptz
|
|
123
|
+
updatedAt DateTime @default(now()) @map("updated_at") @db.Timestamptz
|
|
124
|
+
organizationId String @map("organization_id") @db.Uuid
|
|
125
|
+
|
|
126
|
+
organization Organization @relation(fields: [organizationId], references: [id], onDelete: Cascade)
|
|
127
|
+
|
|
128
|
+
@@unique([slug, organizationId], map: "uq_workspaces_slug_org")
|
|
129
|
+
@@index([organizationId], map: "idx_workspaces_organization")
|
|
130
|
+
@@map("workspaces")
|
|
131
|
+
}
|
|
132
|
+
|
|
100
133
|
model ApiKey {
|
|
101
134
|
id String @id @default(uuid()) @db.Uuid
|
|
102
135
|
name String @db.VarChar(255)
|