@apart-tech/intelligence-core 1.0.0 → 1.0.2
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/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 +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- 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/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 +8 -1
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +13 -12
- package/prisma/schema.prisma +37 -4
package/dist/db/tenant.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tenant.d.ts","sourceRoot":"","sources":["../../src/db/tenant.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEtD,MAAM,WAAW,aAAa;IAC5B,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,eAAO,MAAM,oBAAoB,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"tenant.d.ts","sourceRoot":"","sources":["../../src/db/tenant.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEtD,MAAM,WAAW,aAAa;IAC5B,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,eAAO,MAAM,oBAAoB,yCAAyC,CAAC;AA+E3E,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,YAAY,EAClB,GAAG,EAAE,aAAa,GACjB,YAAY,CAWd;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,aAAa,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG,CAK1E"}
|
package/dist/db/tenant.js
CHANGED
|
@@ -5,6 +5,7 @@ const TENANT_MODELS = [
|
|
|
5
5
|
"edge",
|
|
6
6
|
"domain",
|
|
7
7
|
"apiKey",
|
|
8
|
+
"workspace",
|
|
8
9
|
];
|
|
9
10
|
function isTenantModel(model) {
|
|
10
11
|
return TENANT_MODELS.includes(model);
|
|
@@ -80,6 +81,7 @@ export function createTenantClient(base, ctx) {
|
|
|
80
81
|
edge: ops,
|
|
81
82
|
domain: ops,
|
|
82
83
|
apiKey: ops,
|
|
84
|
+
workspace: ops,
|
|
83
85
|
},
|
|
84
86
|
});
|
|
85
87
|
}
|
package/dist/db/tenant.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tenant.js","sourceRoot":"","sources":["../../src/db/tenant.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAgB,MAAM,gBAAgB,CAAC;AAMtD,MAAM,CAAC,MAAM,oBAAoB,GAAG,sCAAsC,CAAC;AAE3E,MAAM,aAAa,GAAG;IACpB,MAAM;IACN,MAAM;IACN,QAAQ;IACR,QAAQ;
|
|
1
|
+
{"version":3,"file":"tenant.js","sourceRoot":"","sources":["../../src/db/tenant.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -10,6 +10,8 @@ export { EdgeService } from "./services/edge-service.js";
|
|
|
10
10
|
export { SearchService } from "./services/search-service.js";
|
|
11
11
|
export { ContextService } from "./services/context-service.js";
|
|
12
12
|
export { DomainService } from "./services/domain-service.js";
|
|
13
|
+
export { WorkspaceService } from "./services/workspace-service.js";
|
|
14
|
+
export type { WorkspaceFilter, CreateWorkspaceInput, UpdateWorkspaceInput } from "./services/workspace-service.js";
|
|
13
15
|
export { CleaningService } from "./services/cleaning-service.js";
|
|
14
16
|
export type { OrphanNode, DuplicatePair, HealthReport, LinkSuggestion, Island, IslandBridge, ValidationReport, ValidationIssue, ValidationCategory, ValidationSeverity, NormalizeSuggestion, NormalizeReport } from "./services/cleaning-service.js";
|
|
15
17
|
export { createEmbeddingProvider, OpenAIEmbeddingProvider } from "./providers/index.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AACjE,YAAY,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACvF,YAAY,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAGpD,cAAc,kBAAkB,CAAC;AAGjC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAG/C,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,EAAE,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAGrP,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AACjE,YAAY,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACvF,YAAY,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAGpD,cAAc,kBAAkB,CAAC;AAGjC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAG/C,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,YAAY,EAAE,eAAe,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACnH,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,EAAE,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAGrP,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -12,6 +12,7 @@ export { EdgeService } from "./services/edge-service.js";
|
|
|
12
12
|
export { SearchService } from "./services/search-service.js";
|
|
13
13
|
export { ContextService } from "./services/context-service.js";
|
|
14
14
|
export { DomainService } from "./services/domain-service.js";
|
|
15
|
+
export { WorkspaceService } from "./services/workspace-service.js";
|
|
15
16
|
export { CleaningService } from "./services/cleaning-service.js";
|
|
16
17
|
// Providers
|
|
17
18
|
export { createEmbeddingProvider, OpenAIEmbeddingProvider } from "./providers/index.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,WAAW;AACX,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAEjE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAGvF,QAAQ;AACR,cAAc,kBAAkB,CAAC;AAEjC,SAAS;AACT,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,WAAW;AACX,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAGjE,YAAY;AACZ,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,WAAW;AACX,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAEjE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAGvF,QAAQ;AACR,cAAc,kBAAkB,CAAC;AAEjC,SAAS;AACT,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,WAAW;AACX,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAEnE,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAGjE,YAAY;AACZ,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -2,12 +2,16 @@ import type { ContextOptions, ContextPackage, ApartConfig } from "../types/index
|
|
|
2
2
|
import type { SearchService } from "./search-service.js";
|
|
3
3
|
import type { EdgeService } from "./edge-service.js";
|
|
4
4
|
import type { NodeService } from "./node-service.js";
|
|
5
|
+
import type { WorkspaceService } from "./workspace-service.js";
|
|
6
|
+
import type { DomainService } from "./domain-service.js";
|
|
5
7
|
export declare class ContextService {
|
|
6
8
|
private nodeService;
|
|
7
9
|
private edgeService;
|
|
8
10
|
private searchService;
|
|
9
11
|
private config;
|
|
10
|
-
|
|
12
|
+
private workspaceService?;
|
|
13
|
+
private domainService?;
|
|
14
|
+
constructor(nodeService: NodeService, edgeService: EdgeService, searchService: SearchService, config: ApartConfig, workspaceService?: WorkspaceService | undefined, domainService?: DomainService | undefined);
|
|
11
15
|
assemble(options: ContextOptions): Promise<ContextPackage>;
|
|
12
16
|
}
|
|
13
17
|
//# sourceMappingURL=context-service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-service.d.ts","sourceRoot":"","sources":["../../src/services/context-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,cAAc,EACd,WAAW,EAGZ,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"context-service.d.ts","sourceRoot":"","sources":["../../src/services/context-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,cAAc,EACd,WAAW,EAGZ,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,qBAAa,cAAc;IAEvB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,gBAAgB,CAAC;IACzB,OAAO,CAAC,aAAa,CAAC;gBALd,WAAW,EAAE,WAAW,EACxB,WAAW,EAAE,WAAW,EACxB,aAAa,EAAE,aAAa,EAC5B,MAAM,EAAE,WAAW,EACnB,gBAAgB,CAAC,EAAE,gBAAgB,YAAA,EACnC,aAAa,CAAC,EAAE,aAAa,YAAA;IAGjC,QAAQ,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;CAsGjE"}
|
|
@@ -3,13 +3,40 @@ export class ContextService {
|
|
|
3
3
|
edgeService;
|
|
4
4
|
searchService;
|
|
5
5
|
config;
|
|
6
|
-
|
|
6
|
+
workspaceService;
|
|
7
|
+
domainService;
|
|
8
|
+
constructor(nodeService, edgeService, searchService, config, workspaceService, domainService) {
|
|
7
9
|
this.nodeService = nodeService;
|
|
8
10
|
this.edgeService = edgeService;
|
|
9
11
|
this.searchService = searchService;
|
|
10
12
|
this.config = config;
|
|
13
|
+
this.workspaceService = workspaceService;
|
|
14
|
+
this.domainService = domainService;
|
|
11
15
|
}
|
|
12
16
|
async assemble(options) {
|
|
17
|
+
// Resolve workspace filter and merge into options (workspace values as defaults, explicit options override)
|
|
18
|
+
let workspaceInfo;
|
|
19
|
+
if (options.workspace && this.workspaceService && this.domainService) {
|
|
20
|
+
const workspace = await this.workspaceService.getBySlug(options.workspace);
|
|
21
|
+
if (workspace) {
|
|
22
|
+
const filter = await this.workspaceService.resolveFilter(options.workspace, (slugs) => this.domainService.resolveSlugs(slugs));
|
|
23
|
+
workspaceInfo = {
|
|
24
|
+
name: workspace.name,
|
|
25
|
+
slug: workspace.slug,
|
|
26
|
+
description: workspace.description,
|
|
27
|
+
};
|
|
28
|
+
if (filter) {
|
|
29
|
+
options = {
|
|
30
|
+
...options,
|
|
31
|
+
domainIds: options.domainIds ?? filter.domainIds,
|
|
32
|
+
types: options.types ?? filter.types,
|
|
33
|
+
maxDepth: options.maxDepth ?? filter.maxDepth,
|
|
34
|
+
maxNodes: options.maxNodes ?? filter.maxNodes,
|
|
35
|
+
includeDrafts: options.includeDrafts ?? filter.includeDrafts,
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
13
40
|
const maxDepth = options.maxDepth ?? this.config.context.maxDepth;
|
|
14
41
|
const maxNodes = options.maxNodes ?? this.config.context.maxNodes;
|
|
15
42
|
const minRelevance = options.minRelevance ?? this.config.context.minRelevance;
|
|
@@ -30,6 +57,7 @@ export class ContextService {
|
|
|
30
57
|
edges: [],
|
|
31
58
|
query: options.query,
|
|
32
59
|
assembledAt: new Date().toISOString(),
|
|
60
|
+
...(workspaceInfo && { workspace: workspaceInfo }),
|
|
33
61
|
};
|
|
34
62
|
}
|
|
35
63
|
// 2. Expand via graph traversal
|
|
@@ -68,6 +96,7 @@ export class ContextService {
|
|
|
68
96
|
edges: uniqueEdges,
|
|
69
97
|
query: options.query,
|
|
70
98
|
assembledAt: new Date().toISOString(),
|
|
99
|
+
...(workspaceInfo && { workspace: workspaceInfo }),
|
|
71
100
|
};
|
|
72
101
|
}
|
|
73
102
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-service.js","sourceRoot":"","sources":["../../src/services/context-service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"context-service.js","sourceRoot":"","sources":["../../src/services/context-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import type { PrismaClient, Workspace } from "@prisma/client";
|
|
2
|
+
import { type TenantContext } from "../db/tenant.js";
|
|
3
|
+
export interface WorkspaceFilter {
|
|
4
|
+
domainIds?: string[];
|
|
5
|
+
types?: string[];
|
|
6
|
+
tags?: string[];
|
|
7
|
+
maxDepth?: number;
|
|
8
|
+
maxNodes?: number;
|
|
9
|
+
includeDrafts?: boolean;
|
|
10
|
+
}
|
|
11
|
+
export interface CreateWorkspaceInput {
|
|
12
|
+
name: string;
|
|
13
|
+
slug: string;
|
|
14
|
+
description?: string;
|
|
15
|
+
domainSlugs?: string[];
|
|
16
|
+
nodeTypes?: string[];
|
|
17
|
+
tags?: string[];
|
|
18
|
+
maxDepth?: number;
|
|
19
|
+
maxNodes?: number;
|
|
20
|
+
includeDrafts?: boolean;
|
|
21
|
+
systemPrompt?: string;
|
|
22
|
+
createdBy: string;
|
|
23
|
+
}
|
|
24
|
+
export interface UpdateWorkspaceInput {
|
|
25
|
+
name?: string;
|
|
26
|
+
description?: string;
|
|
27
|
+
domainSlugs?: string[];
|
|
28
|
+
nodeTypes?: string[];
|
|
29
|
+
tags?: string[];
|
|
30
|
+
maxDepth?: number | null;
|
|
31
|
+
maxNodes?: number | null;
|
|
32
|
+
includeDrafts?: boolean;
|
|
33
|
+
systemPrompt?: string;
|
|
34
|
+
}
|
|
35
|
+
export declare class WorkspaceService {
|
|
36
|
+
private db;
|
|
37
|
+
private orgId;
|
|
38
|
+
constructor(db: PrismaClient, tenantCtx?: TenantContext);
|
|
39
|
+
create(input: CreateWorkspaceInput): Promise<Workspace>;
|
|
40
|
+
update(id: string, input: UpdateWorkspaceInput): Promise<Workspace | null>;
|
|
41
|
+
delete(id: string): Promise<boolean>;
|
|
42
|
+
getBySlug(slug: string): Promise<Workspace | null>;
|
|
43
|
+
getById(id: string): Promise<Workspace | null>;
|
|
44
|
+
list(): Promise<Workspace[]>;
|
|
45
|
+
/**
|
|
46
|
+
* Resolve a workspace slug into a filter object ready for ContextService/SearchService.
|
|
47
|
+
* Converts domain slugs to domain IDs using the provided domain lookup.
|
|
48
|
+
*/
|
|
49
|
+
resolveFilter(slug: string, domainSlugToId: (slugs: string[]) => Promise<string[]>): Promise<WorkspaceFilter | null>;
|
|
50
|
+
/**
|
|
51
|
+
* Export a workspace as a CLAUDE.md-formatted markdown string.
|
|
52
|
+
*/
|
|
53
|
+
exportAsMarkdown(slug: string): Promise<string | null>;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=workspace-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-service.d.ts","sourceRoot":"","sources":["../../src/services/workspace-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAwB,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAE3E,MAAM,WAAW,eAAe;IAC9B,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,qBAAa,gBAAgB;IAIzB,OAAO,CAAC,EAAE;IAHZ,OAAO,CAAC,KAAK,CAAS;gBAGZ,EAAE,EAAE,YAAY,EACxB,SAAS,CAAC,EAAE,aAAa;IAKrB,MAAM,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,SAAS,CAAC;IAmBvD,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAmB1E,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKpC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAMlD,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAI9C,IAAI,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAOlC;;;OAGG;IACG,aAAa,CACjB,IAAI,EAAE,MAAM,EACZ,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,GACrD,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IAmBlC;;OAEG;IACG,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;CA0B7D"}
|
|
@@ -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,6 +38,11 @@ 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
|
+
};
|
|
39
46
|
}
|
|
40
47
|
export interface EmbeddingProvider {
|
|
41
48
|
embed(text: string): Promise<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
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@apart-tech/intelligence-core",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.2",
|
|
4
4
|
"description": "Core library: database, services, and providers for Apart Intelligence",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -18,25 +18,26 @@
|
|
|
18
18
|
"publishConfig": {
|
|
19
19
|
"access": "public"
|
|
20
20
|
},
|
|
21
|
+
"scripts": {
|
|
22
|
+
"postinstall": "prisma generate --schema ./prisma/schema.prisma 2>/dev/null || true",
|
|
23
|
+
"build": "tsc",
|
|
24
|
+
"dev": "tsc --watch",
|
|
25
|
+
"lint": "tsc --noEmit",
|
|
26
|
+
"test": "vitest run",
|
|
27
|
+
"db:generate": "prisma generate",
|
|
28
|
+
"db:migrate": "prisma migrate dev",
|
|
29
|
+
"db:push": "prisma db push"
|
|
30
|
+
},
|
|
21
31
|
"dependencies": {
|
|
22
32
|
"@prisma/client": "^6.6.0",
|
|
23
33
|
"@prisma/extension-accelerate": "^3.0.1",
|
|
34
|
+
"prisma": "^6.6.0",
|
|
24
35
|
"yaml": "^2.6.0",
|
|
25
36
|
"zod": "^3.24.0"
|
|
26
37
|
},
|
|
27
38
|
"devDependencies": {
|
|
28
39
|
"@types/node": "^25.5.0",
|
|
29
|
-
"prisma": "^6.6.0",
|
|
30
40
|
"typescript": "^5.7.0",
|
|
31
41
|
"vitest": "^3.0.0"
|
|
32
|
-
},
|
|
33
|
-
"scripts": {
|
|
34
|
-
"build": "tsc",
|
|
35
|
-
"dev": "tsc --watch",
|
|
36
|
-
"lint": "tsc --noEmit",
|
|
37
|
-
"test": "vitest run",
|
|
38
|
-
"db:generate": "prisma generate",
|
|
39
|
-
"db:migrate": "prisma migrate dev",
|
|
40
|
-
"db:push": "prisma db push"
|
|
41
42
|
}
|
|
42
|
-
}
|
|
43
|
+
}
|
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)
|