@apart-tech/intelligence-core 1.4.0 → 1.5.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.
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/services/agent-cli-reference.d.ts +7 -0
- package/dist/services/agent-cli-reference.d.ts.map +1 -0
- package/dist/services/agent-cli-reference.js +91 -0
- package/dist/services/agent-cli-reference.js.map +1 -0
- package/dist/services/agent-run-service.d.ts +36 -0
- package/dist/services/agent-run-service.d.ts.map +1 -0
- package/dist/services/agent-run-service.js +65 -0
- package/dist/services/agent-run-service.js.map +1 -0
- package/dist/services/org-agent-config-service.d.ts +29 -0
- package/dist/services/org-agent-config-service.d.ts.map +1 -0
- package/dist/services/org-agent-config-service.js +99 -0
- package/dist/services/org-agent-config-service.js.map +1 -0
- package/package.json +1 -1
- package/prisma/schema.prisma +39 -0
package/dist/index.d.ts
CHANGED
|
@@ -22,6 +22,11 @@ export type { PiiEncryptionOptions, PiiReport, PiiProcessingResult } from "./ser
|
|
|
22
22
|
export { OrgPiiConfigService } from "./services/org-pii-config-service.js";
|
|
23
23
|
export type { OrgPiiConfig, OrgPiiConfigWithKey, PiiMode } from "./services/org-pii-config-service.js";
|
|
24
24
|
export type { OrgEmbeddingConfig, OrgEmbeddingConfigWithKey } from "./services/org-embedding-config-service.js";
|
|
25
|
+
export { OrgAgentConfigService } from "./services/org-agent-config-service.js";
|
|
26
|
+
export type { OrgAgentConfig, OrgAgentConfigWithKeys } from "./services/org-agent-config-service.js";
|
|
27
|
+
export { AgentRunService } from "./services/agent-run-service.js";
|
|
28
|
+
export type { AgentRun } from "./services/agent-run-service.js";
|
|
29
|
+
export { CLI_REFERENCE } from "./services/agent-cli-reference.js";
|
|
25
30
|
export type { OrphanNode, DuplicatePair, HealthReport, LinkSuggestion, Island, IslandBridge, ValidationReport, ValidationIssue, ValidationCategory, ValidationSeverity, NormalizeSuggestion, NormalizeReport } from "./services/cleaning-service.js";
|
|
26
31
|
export { createEmbeddingProvider, validateEmbeddingKey, OpenAIEmbeddingProvider, VoyageEmbeddingProvider, OllamaEmbeddingProvider } from "./providers/index.js";
|
|
27
32
|
export type { CreateEmbeddingProviderOptions } 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,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG1E,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,OAAO,EAAE,yBAAyB,EAAE,MAAM,4CAA4C,CAAC;AACvF,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,YAAY,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACvF,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAC5E,YAAY,EAAE,oBAAoB,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AACjH,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAC3E,YAAY,EAAE,YAAY,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,sCAAsC,CAAC;AACvG,YAAY,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,MAAM,4CAA4C,CAAC;AAChH,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,oBAAoB,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAChK,YAAY,EAAE,8BAA8B,EAAE,MAAM,sBAAsB,CAAC;AAC3E,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,YAAY,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACpG,YAAY,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,YAAY,EAAE,YAAY,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,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG1E,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,OAAO,EAAE,yBAAyB,EAAE,MAAM,4CAA4C,CAAC;AACvF,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,YAAY,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACvF,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAC5E,YAAY,EAAE,oBAAoB,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AACjH,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAC3E,YAAY,EAAE,YAAY,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,sCAAsC,CAAC;AACvG,YAAY,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,MAAM,4CAA4C,CAAC;AAChH,OAAO,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAC/E,YAAY,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAC;AACrG,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,YAAY,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,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,oBAAoB,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAChK,YAAY,EAAE,8BAA8B,EAAE,MAAM,sBAAsB,CAAC;AAC3E,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,YAAY,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACpG,YAAY,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,YAAY,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -20,6 +20,9 @@ export { OrgEmbeddingConfigService } from "./services/org-embedding-config-servi
|
|
|
20
20
|
export { PiiDetectorService } from "./services/pii-detector-service.js";
|
|
21
21
|
export { PiiEncryptionService } from "./services/pii-encryption-service.js";
|
|
22
22
|
export { OrgPiiConfigService } from "./services/org-pii-config-service.js";
|
|
23
|
+
export { OrgAgentConfigService } from "./services/org-agent-config-service.js";
|
|
24
|
+
export { AgentRunService } from "./services/agent-run-service.js";
|
|
25
|
+
export { CLI_REFERENCE } from "./services/agent-cli-reference.js";
|
|
23
26
|
// Providers
|
|
24
27
|
export { createEmbeddingProvider, validateEmbeddingKey, OpenAIEmbeddingProvider, VoyageEmbeddingProvider, OllamaEmbeddingProvider } from "./providers/index.js";
|
|
25
28
|
export { BatchingEmbeddingProvider } from "./providers/batching.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,SAAS;AACT,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE1E,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;AACjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,4CAA4C,CAAC;AACvF,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAExE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAE5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,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,SAAS;AACT,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE1E,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;AACjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,4CAA4C,CAAC;AACvF,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAExE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAE5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAG3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAE/E,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAElE,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAGlE,YAAY;AACZ,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAEhK,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAEpE,OAAO,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEpG,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Condensed CLI reference for AI agents running inside E2B sandboxes.
|
|
3
|
+
* Injected into the agent prompt so it knows how to interact with the knowledge graph.
|
|
4
|
+
* Kept under ~1500 tokens to be cost-efficient.
|
|
5
|
+
*/
|
|
6
|
+
export declare const CLI_REFERENCE = "# Apart Intelligence CLI \u2014 Quick Reference\n\nYou have access to the `ai` CLI to read from and write to the organization's knowledge graph.\n\n## Reading\n\n**Search** \u2014 find nodes by natural language query:\n```\nai search \"authentication patterns\" -l 10 -t policy\nai search \"onboarding flow\" --format json\n```\nFlags: `-l/--limit <n>`, `-t/--type <type>`, `-d/--domain <slug>`, `-f/--format text|json`, `--include-drafts`\n\n**Context** \u2014 assemble related knowledge for a topic (nodes + edges):\n```\nai context \"user authentication\" --depth 2 --max-nodes 30\n```\nFlags: `-d/--depth <n>`, `-n/--max-nodes <n>`, `-w/--workspace <slug>`, `--format text|json|markdown`\n\n**Get** \u2014 retrieve a specific node by ID:\n```\nai get <node-id>\n```\n\n**Types** \u2014 list all node types in use:\n```\nai types\n```\n\n**Domains** \u2014 list domain taxonomy:\n```\nai domains\n```\n\n**Drafts** \u2014 list nodes pending review:\n```\nai drafts -l 20\n```\n\n**Health** \u2014 graph health overview:\n```\nai health\n```\n\n## Writing\n\n**Add** \u2014 create a new node:\n```\nai add \"Node content here\" --type research --title \"Title\" -d engineering -s draft\n```\nFlags: `-t/--type <type>` (required), `--title <title>`, `-d/--domain <slug>`, `-s/--status draft|approved`\n\n**Update** \u2014 modify an existing node:\n```\nai update <node-id> --title \"New Title\" --content \"Updated content\"\n```\n\n**Delete** \u2014 remove a node:\n```\nai delete <node-id>\n```\n\n**Link** \u2014 create a relationship between nodes:\n```\nai link <source-id> <target-id> -r \"relates-to\"\n```\nFlags: `-r/--relationship <type>` (e.g. relates-to, supersedes, part-of, depends-on)\n\n**Approve** \u2014 approve a draft node:\n```\nai approve <node-id>\n```\n\n**Import** \u2014 bulk import nodes and edges from JSON:\n```\nai import data.json\n```\nJSON format: `{ \"nodes\": [{ \"ref\": \"n1\", \"type\": \"...\", \"title\": \"...\", \"content\": \"...\" }], \"edges\": [{ \"source\": \"n1\", \"target\": \"n2\", \"relationshipType\": \"...\" }] }`\n\n## Tips\n- Use `--format json` when you need to parse output programmatically.\n- Always set `--type` when adding nodes. Common types: research, policy, process, decision, note, analysis, summary.\n- Use `ai search` before adding nodes to avoid duplicates.\n- Create nodes as `draft` status unless the org prompt says otherwise.\n";
|
|
7
|
+
//# sourceMappingURL=agent-cli-reference.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-cli-reference.d.ts","sourceRoot":"","sources":["../../src/services/agent-cli-reference.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,eAAO,MAAM,aAAa,w2EAoFzB,CAAC"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Condensed CLI reference for AI agents running inside E2B sandboxes.
|
|
3
|
+
* Injected into the agent prompt so it knows how to interact with the knowledge graph.
|
|
4
|
+
* Kept under ~1500 tokens to be cost-efficient.
|
|
5
|
+
*/
|
|
6
|
+
export const CLI_REFERENCE = `# Apart Intelligence CLI — Quick Reference
|
|
7
|
+
|
|
8
|
+
You have access to the \`ai\` CLI to read from and write to the organization's knowledge graph.
|
|
9
|
+
|
|
10
|
+
## Reading
|
|
11
|
+
|
|
12
|
+
**Search** — find nodes by natural language query:
|
|
13
|
+
\`\`\`
|
|
14
|
+
ai search "authentication patterns" -l 10 -t policy
|
|
15
|
+
ai search "onboarding flow" --format json
|
|
16
|
+
\`\`\`
|
|
17
|
+
Flags: \`-l/--limit <n>\`, \`-t/--type <type>\`, \`-d/--domain <slug>\`, \`-f/--format text|json\`, \`--include-drafts\`
|
|
18
|
+
|
|
19
|
+
**Context** — assemble related knowledge for a topic (nodes + edges):
|
|
20
|
+
\`\`\`
|
|
21
|
+
ai context "user authentication" --depth 2 --max-nodes 30
|
|
22
|
+
\`\`\`
|
|
23
|
+
Flags: \`-d/--depth <n>\`, \`-n/--max-nodes <n>\`, \`-w/--workspace <slug>\`, \`--format text|json|markdown\`
|
|
24
|
+
|
|
25
|
+
**Get** — retrieve a specific node by ID:
|
|
26
|
+
\`\`\`
|
|
27
|
+
ai get <node-id>
|
|
28
|
+
\`\`\`
|
|
29
|
+
|
|
30
|
+
**Types** — list all node types in use:
|
|
31
|
+
\`\`\`
|
|
32
|
+
ai types
|
|
33
|
+
\`\`\`
|
|
34
|
+
|
|
35
|
+
**Domains** — list domain taxonomy:
|
|
36
|
+
\`\`\`
|
|
37
|
+
ai domains
|
|
38
|
+
\`\`\`
|
|
39
|
+
|
|
40
|
+
**Drafts** — list nodes pending review:
|
|
41
|
+
\`\`\`
|
|
42
|
+
ai drafts -l 20
|
|
43
|
+
\`\`\`
|
|
44
|
+
|
|
45
|
+
**Health** — graph health overview:
|
|
46
|
+
\`\`\`
|
|
47
|
+
ai health
|
|
48
|
+
\`\`\`
|
|
49
|
+
|
|
50
|
+
## Writing
|
|
51
|
+
|
|
52
|
+
**Add** — create a new node:
|
|
53
|
+
\`\`\`
|
|
54
|
+
ai add "Node content here" --type research --title "Title" -d engineering -s draft
|
|
55
|
+
\`\`\`
|
|
56
|
+
Flags: \`-t/--type <type>\` (required), \`--title <title>\`, \`-d/--domain <slug>\`, \`-s/--status draft|approved\`
|
|
57
|
+
|
|
58
|
+
**Update** — modify an existing node:
|
|
59
|
+
\`\`\`
|
|
60
|
+
ai update <node-id> --title "New Title" --content "Updated content"
|
|
61
|
+
\`\`\`
|
|
62
|
+
|
|
63
|
+
**Delete** — remove a node:
|
|
64
|
+
\`\`\`
|
|
65
|
+
ai delete <node-id>
|
|
66
|
+
\`\`\`
|
|
67
|
+
|
|
68
|
+
**Link** — create a relationship between nodes:
|
|
69
|
+
\`\`\`
|
|
70
|
+
ai link <source-id> <target-id> -r "relates-to"
|
|
71
|
+
\`\`\`
|
|
72
|
+
Flags: \`-r/--relationship <type>\` (e.g. relates-to, supersedes, part-of, depends-on)
|
|
73
|
+
|
|
74
|
+
**Approve** — approve a draft node:
|
|
75
|
+
\`\`\`
|
|
76
|
+
ai approve <node-id>
|
|
77
|
+
\`\`\`
|
|
78
|
+
|
|
79
|
+
**Import** — bulk import nodes and edges from JSON:
|
|
80
|
+
\`\`\`
|
|
81
|
+
ai import data.json
|
|
82
|
+
\`\`\`
|
|
83
|
+
JSON format: \`{ "nodes": [{ "ref": "n1", "type": "...", "title": "...", "content": "..." }], "edges": [{ "source": "n1", "target": "n2", "relationshipType": "..." }] }\`
|
|
84
|
+
|
|
85
|
+
## Tips
|
|
86
|
+
- Use \`--format json\` when you need to parse output programmatically.
|
|
87
|
+
- Always set \`--type\` when adding nodes. Common types: research, policy, process, decision, note, analysis, summary.
|
|
88
|
+
- Use \`ai search\` before adding nodes to avoid duplicates.
|
|
89
|
+
- Create nodes as \`draft\` status unless the org prompt says otherwise.
|
|
90
|
+
`;
|
|
91
|
+
//# sourceMappingURL=agent-cli-reference.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-cli-reference.js","sourceRoot":"","sources":["../../src/services/agent-cli-reference.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoF5B,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { PrismaClient } from "@prisma/client";
|
|
2
|
+
export interface AgentRun {
|
|
3
|
+
id: string;
|
|
4
|
+
prompt: string;
|
|
5
|
+
status: string;
|
|
6
|
+
result: string;
|
|
7
|
+
error: string | null;
|
|
8
|
+
sandboxId: string | null;
|
|
9
|
+
model: string;
|
|
10
|
+
startedAt: Date;
|
|
11
|
+
completedAt: Date | null;
|
|
12
|
+
createdBy: string;
|
|
13
|
+
}
|
|
14
|
+
export declare class AgentRunService {
|
|
15
|
+
private db;
|
|
16
|
+
constructor(db: PrismaClient);
|
|
17
|
+
create(organizationId: string, input: {
|
|
18
|
+
prompt: string;
|
|
19
|
+
model: string;
|
|
20
|
+
createdBy: string;
|
|
21
|
+
}): Promise<AgentRun>;
|
|
22
|
+
updateStatus(id: string, organizationId: string, update: {
|
|
23
|
+
status: string;
|
|
24
|
+
result?: string;
|
|
25
|
+
error?: string;
|
|
26
|
+
sandboxId?: string;
|
|
27
|
+
completedAt?: Date;
|
|
28
|
+
}): Promise<AgentRun>;
|
|
29
|
+
getById(id: string, organizationId: string): Promise<AgentRun | null>;
|
|
30
|
+
list(organizationId: string, opts?: {
|
|
31
|
+
limit?: number;
|
|
32
|
+
status?: string;
|
|
33
|
+
}): Promise<AgentRun[]>;
|
|
34
|
+
private toAgentRun;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=agent-run-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-run-service.d.ts","sourceRoot":"","sources":["../../src/services/agent-run-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEnD,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,IAAI,CAAC;IAChB,WAAW,EAAE,IAAI,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,eAAe;IACd,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,YAAY;IAE9B,MAAM,CACV,cAAc,EAAE,MAAM,EACtB,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,GAC1D,OAAO,CAAC,QAAQ,CAAC;IAad,YAAY,CAChB,EAAE,EAAE,MAAM,EACV,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE;QACN,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,WAAW,CAAC,EAAE,IAAI,CAAC;KACpB,GACA,OAAO,CAAC,QAAQ,CAAC;IAcd,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAQrE,IAAI,CACR,cAAc,EAAE,MAAM,EACtB,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GACzC,OAAO,CAAC,QAAQ,EAAE,CAAC;IAYtB,OAAO,CAAC,UAAU;CAcnB"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
export class AgentRunService {
|
|
2
|
+
db;
|
|
3
|
+
constructor(db) {
|
|
4
|
+
this.db = db;
|
|
5
|
+
}
|
|
6
|
+
async create(organizationId, input) {
|
|
7
|
+
const run = await this.db.agentRun.create({
|
|
8
|
+
data: {
|
|
9
|
+
organizationId,
|
|
10
|
+
prompt: input.prompt,
|
|
11
|
+
model: input.model,
|
|
12
|
+
status: "pending",
|
|
13
|
+
createdBy: input.createdBy,
|
|
14
|
+
},
|
|
15
|
+
});
|
|
16
|
+
return this.toAgentRun(run);
|
|
17
|
+
}
|
|
18
|
+
async updateStatus(id, organizationId, update) {
|
|
19
|
+
const run = await this.db.agentRun.update({
|
|
20
|
+
where: { id, organizationId },
|
|
21
|
+
data: {
|
|
22
|
+
status: update.status,
|
|
23
|
+
result: update.result,
|
|
24
|
+
error: update.error,
|
|
25
|
+
sandboxId: update.sandboxId,
|
|
26
|
+
completedAt: update.completedAt,
|
|
27
|
+
},
|
|
28
|
+
});
|
|
29
|
+
return this.toAgentRun(run);
|
|
30
|
+
}
|
|
31
|
+
async getById(id, organizationId) {
|
|
32
|
+
const run = await this.db.agentRun.findFirst({
|
|
33
|
+
where: { id, organizationId },
|
|
34
|
+
});
|
|
35
|
+
if (!run)
|
|
36
|
+
return null;
|
|
37
|
+
return this.toAgentRun(run);
|
|
38
|
+
}
|
|
39
|
+
async list(organizationId, opts) {
|
|
40
|
+
const runs = await this.db.agentRun.findMany({
|
|
41
|
+
where: {
|
|
42
|
+
organizationId,
|
|
43
|
+
...(opts?.status ? { status: opts.status } : {}),
|
|
44
|
+
},
|
|
45
|
+
orderBy: { startedAt: "desc" },
|
|
46
|
+
take: opts?.limit ?? 20,
|
|
47
|
+
});
|
|
48
|
+
return runs.map((r) => this.toAgentRun(r));
|
|
49
|
+
}
|
|
50
|
+
toAgentRun(run) {
|
|
51
|
+
return {
|
|
52
|
+
id: run.id,
|
|
53
|
+
prompt: run.prompt,
|
|
54
|
+
status: run.status,
|
|
55
|
+
result: run.result,
|
|
56
|
+
error: run.error,
|
|
57
|
+
sandboxId: run.sandboxId,
|
|
58
|
+
model: run.model,
|
|
59
|
+
startedAt: run.startedAt,
|
|
60
|
+
completedAt: run.completedAt,
|
|
61
|
+
createdBy: run.createdBy,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=agent-run-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-run-service.js","sourceRoot":"","sources":["../../src/services/agent-run-service.ts"],"names":[],"mappings":"AAeA,MAAM,OAAO,eAAe;IACN;IAApB,YAAoB,EAAgB;QAAhB,OAAE,GAAF,EAAE,CAAc;IAAG,CAAC;IAExC,KAAK,CAAC,MAAM,CACV,cAAsB,EACtB,KAA2D;QAE3D,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;YACxC,IAAI,EAAE;gBACJ,cAAc;gBACd,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,MAAM,EAAE,SAAS;gBACjB,SAAS,EAAE,KAAK,CAAC,SAAS;aAC3B;SACF,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,YAAY,CAChB,EAAU,EACV,cAAsB,EACtB,MAMC;QAED,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;YACxC,KAAK,EAAE,EAAE,EAAE,EAAE,cAAc,EAAE;YAC7B,IAAI,EAAE;gBACJ,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,WAAW,EAAE,MAAM,CAAC,WAAW;aAChC;SACF,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,EAAU,EAAE,cAAsB;QAC9C,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC;YAC3C,KAAK,EAAE,EAAE,EAAE,EAAE,cAAc,EAAE;SAC9B,CAAC,CAAC;QACH,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC;QACtB,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,IAAI,CACR,cAAsB,EACtB,IAA0C;QAE1C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAC3C,KAAK,EAAE;gBACL,cAAc;gBACd,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACjD;YACD,OAAO,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE;YAC9B,IAAI,EAAE,IAAI,EAAE,KAAK,IAAI,EAAE;SACxB,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC;IAEO,UAAU,CAAC,GAAQ;QACzB,OAAO;YACL,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,WAAW,EAAE,GAAG,CAAC,WAAW;YAC5B,SAAS,EAAE,GAAG,CAAC,SAAS;SACzB,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { PrismaClient } from "@prisma/client";
|
|
2
|
+
export interface OrgAgentConfig {
|
|
3
|
+
model: string;
|
|
4
|
+
promptTemplate: string;
|
|
5
|
+
maxTimeoutMinutes: number;
|
|
6
|
+
enabled: boolean;
|
|
7
|
+
updatedAt: Date;
|
|
8
|
+
updatedBy: string;
|
|
9
|
+
}
|
|
10
|
+
export interface OrgAgentConfigWithKeys extends OrgAgentConfig {
|
|
11
|
+
claudeApiKey: string;
|
|
12
|
+
e2bApiKey: string;
|
|
13
|
+
}
|
|
14
|
+
export declare class OrgAgentConfigService {
|
|
15
|
+
private db;
|
|
16
|
+
constructor(db: PrismaClient);
|
|
17
|
+
get(organizationId: string): Promise<OrgAgentConfig | null>;
|
|
18
|
+
getWithKeys(organizationId: string): Promise<OrgAgentConfigWithKeys | null>;
|
|
19
|
+
set(organizationId: string, input: {
|
|
20
|
+
claudeApiKey: string;
|
|
21
|
+
e2bApiKey?: string;
|
|
22
|
+
model?: string;
|
|
23
|
+
promptTemplate?: string;
|
|
24
|
+
maxTimeoutMinutes?: number;
|
|
25
|
+
updatedBy?: string;
|
|
26
|
+
}): Promise<OrgAgentConfig>;
|
|
27
|
+
delete(organizationId: string): Promise<boolean>;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=org-agent-config-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"org-agent-config-service.d.ts","sourceRoot":"","sources":["../../src/services/org-agent-config-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAgBnD,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,sBAAuB,SAAQ,cAAc;IAC5D,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,qBAAqB;IACpB,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,YAAY;IAE9B,GAAG,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAe3D,WAAW,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC;IA2B3E,GAAG,CACP,cAAc,EAAE,MAAM,EACtB,KAAK,EAAE;QACL,YAAY,EAAE,MAAM,CAAC;QACrB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,GACA,OAAO,CAAC,cAAc,CAAC;IAkCpB,MAAM,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAQvD"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { encryptAesGcm, decryptAesGcm, deriveKey } from "../lib/crypto.js";
|
|
2
|
+
function getEncryptionKey() {
|
|
3
|
+
const secret = process.env.AGENT_KEY_SECRET ?? "apart-default-agent-key-secret-change-me";
|
|
4
|
+
return deriveKey(secret);
|
|
5
|
+
}
|
|
6
|
+
function encrypt(plaintext) {
|
|
7
|
+
return encryptAesGcm(plaintext, getEncryptionKey());
|
|
8
|
+
}
|
|
9
|
+
function decrypt(encoded) {
|
|
10
|
+
return decryptAesGcm(encoded, getEncryptionKey());
|
|
11
|
+
}
|
|
12
|
+
export class OrgAgentConfigService {
|
|
13
|
+
db;
|
|
14
|
+
constructor(db) {
|
|
15
|
+
this.db = db;
|
|
16
|
+
}
|
|
17
|
+
async get(organizationId) {
|
|
18
|
+
const config = await this.db.orgAgentConfig.findUnique({
|
|
19
|
+
where: { organizationId },
|
|
20
|
+
});
|
|
21
|
+
if (!config)
|
|
22
|
+
return null;
|
|
23
|
+
return {
|
|
24
|
+
model: config.model,
|
|
25
|
+
promptTemplate: config.promptTemplate,
|
|
26
|
+
maxTimeoutMinutes: config.maxTimeoutMinutes,
|
|
27
|
+
enabled: config.enabled,
|
|
28
|
+
updatedAt: config.updatedAt,
|
|
29
|
+
updatedBy: config.updatedBy,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
async getWithKeys(organizationId) {
|
|
33
|
+
const config = await this.db.orgAgentConfig.findUnique({
|
|
34
|
+
where: { organizationId },
|
|
35
|
+
});
|
|
36
|
+
if (!config)
|
|
37
|
+
return null;
|
|
38
|
+
// E2B key: org-level overrides server-level env var
|
|
39
|
+
const e2bApiKey = config.e2bApiKeyEncrypted
|
|
40
|
+
? decrypt(config.e2bApiKeyEncrypted)
|
|
41
|
+
: process.env.E2B_API_KEY;
|
|
42
|
+
if (!e2bApiKey) {
|
|
43
|
+
throw new Error("No E2B API key configured. Set E2B_API_KEY on the server or provide one during agent config setup.");
|
|
44
|
+
}
|
|
45
|
+
return {
|
|
46
|
+
model: config.model,
|
|
47
|
+
promptTemplate: config.promptTemplate,
|
|
48
|
+
maxTimeoutMinutes: config.maxTimeoutMinutes,
|
|
49
|
+
enabled: config.enabled,
|
|
50
|
+
claudeApiKey: decrypt(config.claudeApiKeyEncrypted),
|
|
51
|
+
e2bApiKey,
|
|
52
|
+
updatedAt: config.updatedAt,
|
|
53
|
+
updatedBy: config.updatedBy,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
async set(organizationId, input) {
|
|
57
|
+
const encryptedClaude = encrypt(input.claudeApiKey);
|
|
58
|
+
const encryptedE2b = input.e2bApiKey ? encrypt(input.e2bApiKey) : null;
|
|
59
|
+
const config = await this.db.orgAgentConfig.upsert({
|
|
60
|
+
where: { organizationId },
|
|
61
|
+
create: {
|
|
62
|
+
organizationId,
|
|
63
|
+
claudeApiKeyEncrypted: encryptedClaude,
|
|
64
|
+
e2bApiKeyEncrypted: encryptedE2b,
|
|
65
|
+
model: input.model ?? "sonnet",
|
|
66
|
+
promptTemplate: input.promptTemplate ?? "",
|
|
67
|
+
maxTimeoutMinutes: input.maxTimeoutMinutes ?? 30,
|
|
68
|
+
updatedBy: input.updatedBy ?? "api",
|
|
69
|
+
},
|
|
70
|
+
update: {
|
|
71
|
+
claudeApiKeyEncrypted: encryptedClaude,
|
|
72
|
+
e2bApiKeyEncrypted: encryptedE2b !== undefined ? encryptedE2b : undefined,
|
|
73
|
+
model: input.model ?? undefined,
|
|
74
|
+
promptTemplate: input.promptTemplate ?? undefined,
|
|
75
|
+
maxTimeoutMinutes: input.maxTimeoutMinutes ?? undefined,
|
|
76
|
+
updatedAt: new Date(),
|
|
77
|
+
updatedBy: input.updatedBy ?? "api",
|
|
78
|
+
},
|
|
79
|
+
});
|
|
80
|
+
return {
|
|
81
|
+
model: config.model,
|
|
82
|
+
promptTemplate: config.promptTemplate,
|
|
83
|
+
maxTimeoutMinutes: config.maxTimeoutMinutes,
|
|
84
|
+
enabled: config.enabled,
|
|
85
|
+
updatedAt: config.updatedAt,
|
|
86
|
+
updatedBy: config.updatedBy,
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
async delete(organizationId) {
|
|
90
|
+
try {
|
|
91
|
+
await this.db.orgAgentConfig.delete({ where: { organizationId } });
|
|
92
|
+
return true;
|
|
93
|
+
}
|
|
94
|
+
catch {
|
|
95
|
+
return false;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=org-agent-config-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"org-agent-config-service.js","sourceRoot":"","sources":["../../src/services/org-agent-config-service.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/prisma/schema.prisma
CHANGED
|
@@ -21,6 +21,8 @@ model Organization {
|
|
|
21
21
|
workspaces Workspace[]
|
|
22
22
|
embeddingConfig OrgEmbeddingConfig?
|
|
23
23
|
piiConfig OrgPiiConfig?
|
|
24
|
+
agentConfig OrgAgentConfig?
|
|
25
|
+
agentRuns AgentRun[]
|
|
24
26
|
|
|
25
27
|
@@map("organizations")
|
|
26
28
|
}
|
|
@@ -163,6 +165,43 @@ model Workspace {
|
|
|
163
165
|
@@map("workspaces")
|
|
164
166
|
}
|
|
165
167
|
|
|
168
|
+
model OrgAgentConfig {
|
|
169
|
+
id String @id @default(uuid()) @db.Uuid
|
|
170
|
+
organizationId String @unique @map("organization_id") @db.Uuid
|
|
171
|
+
claudeApiKeyEncrypted String @map("claude_api_key_encrypted") @db.Text
|
|
172
|
+
e2bApiKeyEncrypted String? @map("e2b_api_key_encrypted") @db.Text
|
|
173
|
+
model String @default("sonnet") @db.VarChar(50)
|
|
174
|
+
promptTemplate String @default("") @map("prompt_template") @db.Text
|
|
175
|
+
maxTimeoutMinutes Int @default(30) @map("max_timeout_minutes")
|
|
176
|
+
enabled Boolean @default(true)
|
|
177
|
+
updatedAt DateTime @default(now()) @map("updated_at") @db.Timestamptz
|
|
178
|
+
updatedBy String @default("api") @map("updated_by") @db.VarChar(255)
|
|
179
|
+
|
|
180
|
+
organization Organization @relation(fields: [organizationId], references: [id], onDelete: Cascade)
|
|
181
|
+
|
|
182
|
+
@@map("org_agent_config")
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
model AgentRun {
|
|
186
|
+
id String @id @default(uuid()) @db.Uuid
|
|
187
|
+
organizationId String @map("organization_id") @db.Uuid
|
|
188
|
+
prompt String @db.Text
|
|
189
|
+
status String @default("pending") @db.VarChar(20)
|
|
190
|
+
result String @default("") @db.Text
|
|
191
|
+
error String? @db.Text
|
|
192
|
+
sandboxId String? @map("sandbox_id") @db.VarChar(100)
|
|
193
|
+
model String @default("sonnet") @db.VarChar(50)
|
|
194
|
+
startedAt DateTime @default(now()) @map("started_at") @db.Timestamptz
|
|
195
|
+
completedAt DateTime? @map("completed_at") @db.Timestamptz
|
|
196
|
+
createdBy String @map("created_by") @db.VarChar(255)
|
|
197
|
+
|
|
198
|
+
organization Organization @relation(fields: [organizationId], references: [id], onDelete: Cascade)
|
|
199
|
+
|
|
200
|
+
@@index([organizationId], map: "idx_agent_runs_organization")
|
|
201
|
+
@@index([status], map: "idx_agent_runs_status")
|
|
202
|
+
@@map("agent_runs")
|
|
203
|
+
}
|
|
204
|
+
|
|
166
205
|
model ApiKey {
|
|
167
206
|
id String @id @default(uuid()) @db.Uuid
|
|
168
207
|
name String @db.VarChar(255)
|