@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 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";
@@ -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;AAK3E,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"}
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@apart-tech/intelligence-core",
3
- "version": "1.4.0",
3
+ "version": "1.5.0",
4
4
  "description": "Core library: database, services, and providers for Apart Intelligence",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -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)