@davidjinguoxu/agentcore 0.4.1
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/LICENSE +21 -0
- package/README.md +198 -0
- package/config/default-triggers.json +119 -0
- package/dist/adapters/runtime-adapter.d.ts +124 -0
- package/dist/adapters/runtime-adapter.d.ts.map +1 -0
- package/dist/adapters/runtime-adapter.js +5 -0
- package/dist/adapters/runtime-adapter.js.map +1 -0
- package/dist/config/datacore-constants.d.ts +21 -0
- package/dist/config/datacore-constants.d.ts.map +1 -0
- package/dist/config/datacore-constants.js +68 -0
- package/dist/config/datacore-constants.js.map +1 -0
- package/dist/domain/embeddable.d.ts +19 -0
- package/dist/domain/embeddable.d.ts.map +1 -0
- package/dist/domain/embeddable.js +106 -0
- package/dist/domain/embeddable.js.map +1 -0
- package/dist/domain/gold-store.d.ts +11 -0
- package/dist/domain/gold-store.d.ts.map +1 -0
- package/dist/domain/gold-store.js +210 -0
- package/dist/domain/gold-store.js.map +1 -0
- package/dist/domain/inbox.d.ts +14 -0
- package/dist/domain/inbox.d.ts.map +1 -0
- package/dist/domain/inbox.js +138 -0
- package/dist/domain/inbox.js.map +1 -0
- package/dist/domain/office-status.d.ts +31 -0
- package/dist/domain/office-status.d.ts.map +1 -0
- package/dist/domain/office-status.js +138 -0
- package/dist/domain/office-status.js.map +1 -0
- package/dist/domain/questions.d.ts +3 -0
- package/dist/domain/questions.d.ts.map +1 -0
- package/dist/domain/questions.js +60 -0
- package/dist/domain/questions.js.map +1 -0
- package/dist/domain/run-manager.d.ts +14 -0
- package/dist/domain/run-manager.d.ts.map +1 -0
- package/dist/domain/run-manager.js +25 -0
- package/dist/domain/run-manager.js.map +1 -0
- package/dist/domain/task-event-index.d.ts +31 -0
- package/dist/domain/task-event-index.d.ts.map +1 -0
- package/dist/domain/task-event-index.js +117 -0
- package/dist/domain/task-event-index.js.map +1 -0
- package/dist/domain/tasks.d.ts +3 -0
- package/dist/domain/tasks.d.ts.map +1 -0
- package/dist/domain/tasks.js +112 -0
- package/dist/domain/tasks.js.map +1 -0
- package/dist/domain/warm-start-builders.d.ts +18 -0
- package/dist/domain/warm-start-builders.d.ts.map +1 -0
- package/dist/domain/warm-start-builders.js +157 -0
- package/dist/domain/warm-start-builders.js.map +1 -0
- package/dist/domain/warm-start-extractors.d.ts +37 -0
- package/dist/domain/warm-start-extractors.d.ts.map +1 -0
- package/dist/domain/warm-start-extractors.js +372 -0
- package/dist/domain/warm-start-extractors.js.map +1 -0
- package/dist/domain/warm-start.d.ts +17 -0
- package/dist/domain/warm-start.d.ts.map +1 -0
- package/dist/domain/warm-start.js +225 -0
- package/dist/domain/warm-start.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp-slim-ack.d.ts +12 -0
- package/dist/mcp-slim-ack.d.ts.map +1 -0
- package/dist/mcp-slim-ack.js +16 -0
- package/dist/mcp-slim-ack.js.map +1 -0
- package/dist/routing/capability-registry.d.ts +38 -0
- package/dist/routing/capability-registry.d.ts.map +1 -0
- package/dist/routing/capability-registry.js +52 -0
- package/dist/routing/capability-registry.js.map +1 -0
- package/dist/routing/runtime-target-resolver.d.ts +42 -0
- package/dist/routing/runtime-target-resolver.d.ts.map +1 -0
- package/dist/routing/runtime-target-resolver.js +139 -0
- package/dist/routing/runtime-target-resolver.js.map +1 -0
- package/dist/search/azure-search-client.d.ts +53 -0
- package/dist/search/azure-search-client.d.ts.map +1 -0
- package/dist/search/azure-search-client.js +191 -0
- package/dist/search/azure-search-client.js.map +1 -0
- package/dist/search/circuit-breaker.d.ts +46 -0
- package/dist/search/circuit-breaker.d.ts.map +1 -0
- package/dist/search/circuit-breaker.js +87 -0
- package/dist/search/circuit-breaker.js.map +1 -0
- package/dist/search/deep-search.d.ts +24 -0
- package/dist/search/deep-search.d.ts.map +1 -0
- package/dist/search/deep-search.js +98 -0
- package/dist/search/deep-search.js.map +1 -0
- package/dist/search/search.d.ts +3 -0
- package/dist/search/search.d.ts.map +1 -0
- package/dist/search/search.js +76 -0
- package/dist/search/search.js.map +1 -0
- package/dist/server.d.ts +3 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +39 -0
- package/dist/server.js.map +1 -0
- package/dist/skills/index.d.ts +3 -0
- package/dist/skills/index.d.ts.map +1 -0
- package/dist/skills/index.js +8 -0
- package/dist/skills/index.js.map +1 -0
- package/dist/skills/knowledge.d.ts +3 -0
- package/dist/skills/knowledge.d.ts.map +1 -0
- package/dist/skills/knowledge.js +78 -0
- package/dist/skills/knowledge.js.map +1 -0
- package/dist/skills/task-workflow.d.ts +3 -0
- package/dist/skills/task-workflow.d.ts.map +1 -0
- package/dist/skills/task-workflow.js +205 -0
- package/dist/skills/task-workflow.js.map +1 -0
- package/dist/storage/active-backend.d.ts +4 -0
- package/dist/storage/active-backend.d.ts.map +1 -0
- package/dist/storage/active-backend.js +12 -0
- package/dist/storage/active-backend.js.map +1 -0
- package/dist/storage/backend.d.ts +12 -0
- package/dist/storage/backend.d.ts.map +1 -0
- package/dist/storage/backend.js +5 -0
- package/dist/storage/backend.js.map +1 -0
- package/dist/storage/cosmos-client.d.ts +6 -0
- package/dist/storage/cosmos-client.d.ts.map +1 -0
- package/dist/storage/cosmos-client.js +38 -0
- package/dist/storage/cosmos-client.js.map +1 -0
- package/dist/storage/lancedb-backend.d.ts +13 -0
- package/dist/storage/lancedb-backend.d.ts.map +1 -0
- package/dist/storage/lancedb-backend.js +373 -0
- package/dist/storage/lancedb-backend.js.map +1 -0
- package/dist/storage/store.d.ts +8 -0
- package/dist/storage/store.d.ts.map +1 -0
- package/dist/storage/store.js +294 -0
- package/dist/storage/store.js.map +1 -0
- package/dist/storage/task-compaction.d.ts +12 -0
- package/dist/storage/task-compaction.d.ts.map +1 -0
- package/dist/storage/task-compaction.js +112 -0
- package/dist/storage/task-compaction.js.map +1 -0
- package/dist/storage/task-context-snapshot.d.ts +6 -0
- package/dist/storage/task-context-snapshot.d.ts.map +1 -0
- package/dist/storage/task-context-snapshot.js +87 -0
- package/dist/storage/task-context-snapshot.js.map +1 -0
- package/dist/storage/trigger-engine.d.ts +39 -0
- package/dist/storage/trigger-engine.d.ts.map +1 -0
- package/dist/storage/trigger-engine.js +212 -0
- package/dist/storage/trigger-engine.js.map +1 -0
- package/dist/tools.d.ts +3 -0
- package/dist/tools.d.ts.map +1 -0
- package/dist/tools.js +413 -0
- package/dist/tools.js.map +1 -0
- package/dist/transport/client.d.ts +68 -0
- package/dist/transport/client.d.ts.map +1 -0
- package/dist/transport/client.js +210 -0
- package/dist/transport/client.js.map +1 -0
- package/dist/transport/http-server.d.ts +3 -0
- package/dist/transport/http-server.d.ts.map +1 -0
- package/dist/transport/http-server.js +337 -0
- package/dist/transport/http-server.js.map +1 -0
- package/dist/types.d.ts +185 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/package.json +71 -0
- package/scripts/run-server.mjs +3 -0
- package/scripts/stdio-only.mjs +23 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 David Xu
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
# agentcore
|
|
2
|
+
|
|
3
|
+
> Shared memory and coordination layer for multi-agent AI workflows.
|
|
4
|
+
> MCP server + REST API. Works locally with zero config. Scales to Azure.
|
|
5
|
+
|
|
6
|
+
Any AI tool that speaks MCP — Cursor, Claude Code, Copilot CLI, Codex — connects to
|
|
7
|
+
this server and gains persistent memory, task coordination, and shared knowledge across
|
|
8
|
+
every session.
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## Quick start
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
npx agentcore
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
That's it. The server starts on port 3001, stores data locally in `~/.agentcore/` using
|
|
19
|
+
LanceDB, and is immediately available to any MCP client. No account, no API key, no config.
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Connect your AI tool
|
|
24
|
+
|
|
25
|
+
Add to your MCP client config (Claude Code, Cursor, Copilot, etc.):
|
|
26
|
+
|
|
27
|
+
```json
|
|
28
|
+
{
|
|
29
|
+
"mcpServers": {
|
|
30
|
+
"datacore": {
|
|
31
|
+
"command": "npx",
|
|
32
|
+
"args": ["agentcore"]
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
For **Claude Desktop**, add to `~/Library/Application Support/Claude/claude_desktop_config.json`:
|
|
39
|
+
|
|
40
|
+
```json
|
|
41
|
+
{
|
|
42
|
+
"mcpServers": {
|
|
43
|
+
"datacore": {
|
|
44
|
+
"command": "npx",
|
|
45
|
+
"args": ["agentcore"]
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## What's included
|
|
54
|
+
|
|
55
|
+
### 17 MCP tools across 4 categories
|
|
56
|
+
|
|
57
|
+
**Context**
|
|
58
|
+
| Tool | What it does |
|
|
59
|
+
|---|---|
|
|
60
|
+
| `warm_start` | Assemble full task context: spec, gotchas, knowledge graph, retry history |
|
|
61
|
+
|
|
62
|
+
**Memory & search**
|
|
63
|
+
| Tool | What it does |
|
|
64
|
+
|---|---|
|
|
65
|
+
| `log_event` | Append any event to the Bronze memory layer |
|
|
66
|
+
| `search` | Full-text search across all events |
|
|
67
|
+
| `deep_search` | Semantic (vector) search — finds by meaning, not keyword |
|
|
68
|
+
| `get_facts` | Query curated Gold entities (decisions, lessons, skills) |
|
|
69
|
+
| `get_linked` | Traverse the knowledge graph from any entity |
|
|
70
|
+
| `add_entity` | Create or update a Gold entity |
|
|
71
|
+
| `get_tasks` | Read the task board |
|
|
72
|
+
| `get_questions` | Read async AI-to-AI questions |
|
|
73
|
+
|
|
74
|
+
**Task lifecycle**
|
|
75
|
+
| Tool | What it does |
|
|
76
|
+
|---|---|
|
|
77
|
+
| `start_task` | Mark a task in progress |
|
|
78
|
+
| `complete_task` | Mark complete — auto-captures tool sequence |
|
|
79
|
+
| `update_task` | Log progress (loop detection at 4×, compaction at 8×) |
|
|
80
|
+
| `block_task` | Record a blocker |
|
|
81
|
+
| `fail_task` | Record a failure |
|
|
82
|
+
|
|
83
|
+
**Knowledge**
|
|
84
|
+
| Tool | What it does |
|
|
85
|
+
|---|---|
|
|
86
|
+
| `save_lesson` | Extract a reusable lesson from a task |
|
|
87
|
+
| `save_decision` | Record an architecture decision with rationale |
|
|
88
|
+
| `ask_team` | Post an async question to another agent |
|
|
89
|
+
|
|
90
|
+
### Skills
|
|
91
|
+
|
|
92
|
+
Datacore ships with a set of AI-callable skills in `skills/datacore/`. These are
|
|
93
|
+
standalone scripts any agent can invoke as part of completing a task:
|
|
94
|
+
|
|
95
|
+
| Skill | What it does |
|
|
96
|
+
|---|---|
|
|
97
|
+
| `promote-to-gold.mjs` | Promote Bronze events → curated Gold entities |
|
|
98
|
+
| `backfill-search.mjs` | Index Bronze events into the Silver search layer |
|
|
99
|
+
| `backfill-links.mjs` | Build knowledge graph links between entities |
|
|
100
|
+
| `enrich-memory.mjs` | Enrich session startup context |
|
|
101
|
+
| `export-obsidian.mjs` | Export the knowledge graph to Obsidian markdown |
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## Data architecture
|
|
106
|
+
|
|
107
|
+
Datacore stores everything in a three-layer medallion pattern:
|
|
108
|
+
|
|
109
|
+
```
|
|
110
|
+
Bronze Append-only event log. Every agent action lands here.
|
|
111
|
+
Local: LanceDB in ~/.agentcore/ Cloud: Azure Cosmos DB
|
|
112
|
+
|
|
113
|
+
Silver Vector-indexed for semantic search.
|
|
114
|
+
Local: LanceDB full-text index Cloud: Azure AI Search
|
|
115
|
+
|
|
116
|
+
Gold Curated facts — decisions, lessons, skills, agent journals.
|
|
117
|
+
225+ entities. Queried via get_facts() and get_linked().
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
---
|
|
121
|
+
|
|
122
|
+
## Upgrade to Azure (cloud mode)
|
|
123
|
+
|
|
124
|
+
To persist across machines and share memory between a real team,
|
|
125
|
+
set Cosmos DB credentials and the engine switches to cloud mode automatically:
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
export COSMOS_ENDPOINT="https://your-cosmos.documents.azure.com:443/"
|
|
129
|
+
export COSMOS_KEY="your-key"
|
|
130
|
+
npx agentcore
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
Optional: add Azure AI Search for semantic search across large event volumes:
|
|
134
|
+
|
|
135
|
+
```bash
|
|
136
|
+
export AZURE_SEARCH_ENDPOINT="https://your-search.search.windows.net"
|
|
137
|
+
export AZURE_SEARCH_KEY="your-key"
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
No code changes. No config file. The engine detects credentials at startup
|
|
141
|
+
and selects the right backend automatically.
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
145
|
+
## HTTP API
|
|
146
|
+
|
|
147
|
+
The engine also exposes a REST API on port 3001 alongside the MCP server.
|
|
148
|
+
Useful for shell scripts, cron jobs, or any tool that can't run MCP:
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
# Log an event
|
|
152
|
+
curl -X POST http://localhost:3001/events \
|
|
153
|
+
-H "Content-Type: application/json" \
|
|
154
|
+
-d '{"source":"my-tool","type":"note","content":"built the widget"}'
|
|
155
|
+
|
|
156
|
+
# Search
|
|
157
|
+
curl "http://localhost:3001/search?q=widget"
|
|
158
|
+
|
|
159
|
+
# Task board
|
|
160
|
+
curl http://localhost:3001/tasks
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
Full reference: `API.md` in the datacore repo.
|
|
164
|
+
|
|
165
|
+
---
|
|
166
|
+
|
|
167
|
+
## Requirements
|
|
168
|
+
|
|
169
|
+
- Node.js >= 22
|
|
170
|
+
- No other dependencies for local mode
|
|
171
|
+
|
|
172
|
+
---
|
|
173
|
+
|
|
174
|
+
## Use as a library
|
|
175
|
+
|
|
176
|
+
```typescript
|
|
177
|
+
import { appendEvent, queryEntities } from 'agentcore';
|
|
178
|
+
import type { BronzeRecord, GoldEntity } from 'agentcore/types';
|
|
179
|
+
|
|
180
|
+
await appendEvent({
|
|
181
|
+
source: 'my-agent',
|
|
182
|
+
type: 'task_completed',
|
|
183
|
+
content: 'Finished building the widget',
|
|
184
|
+
project: 'my-project',
|
|
185
|
+
});
|
|
186
|
+
|
|
187
|
+
const { entities } = await queryEntities({ entity_type: 'decision' });
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
---
|
|
191
|
+
|
|
192
|
+
## License
|
|
193
|
+
|
|
194
|
+
MIT
|
|
195
|
+
|
|
196
|
+
---
|
|
197
|
+
|
|
198
|
+
*Built by [David Xu](https://github.com/david3xu) · Part of the Datacore project*
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
{
|
|
2
|
+
"_comment": "Default trigger rules bundled with @datacore/engine. Uses log_event actions only — works standalone without any dispatch scripts. Override by placing triggers.json in ~/.datacore/triggers.json.",
|
|
3
|
+
"rules": [
|
|
4
|
+
{
|
|
5
|
+
"rule_id": "TR-001",
|
|
6
|
+
"name": "Queue review on task completion",
|
|
7
|
+
"condition": {
|
|
8
|
+
"event_type": "task_completed"
|
|
9
|
+
},
|
|
10
|
+
"action": {
|
|
11
|
+
"type": "log_event",
|
|
12
|
+
"event": {
|
|
13
|
+
"type": "task_assigned",
|
|
14
|
+
"source": "datacore",
|
|
15
|
+
"content": "Review queued for ${context.task_id} — assigned to claude-desktop.",
|
|
16
|
+
"context": {
|
|
17
|
+
"task_id": "${context.task_id}",
|
|
18
|
+
"assigned_to": "claude-desktop",
|
|
19
|
+
"status": "assigned",
|
|
20
|
+
"review": true
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
"enabled": true
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"rule_id": "TR-002",
|
|
28
|
+
"name": "Re-queue task on review failure",
|
|
29
|
+
"condition": {
|
|
30
|
+
"event_type": "task_reviewed",
|
|
31
|
+
"context.verdict": "fail"
|
|
32
|
+
},
|
|
33
|
+
"action": {
|
|
34
|
+
"type": "log_event",
|
|
35
|
+
"event": {
|
|
36
|
+
"type": "task_assigned",
|
|
37
|
+
"source": "datacore",
|
|
38
|
+
"content": "Retry: ${context.task_id} failed review. Re-assigning to ${context.assigned_to}.",
|
|
39
|
+
"context": {
|
|
40
|
+
"task_id": "${context.task_id}",
|
|
41
|
+
"assigned_to": "${context.assigned_to}",
|
|
42
|
+
"status": "assigned",
|
|
43
|
+
"retry": true
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
"enabled": true
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"rule_id": "TR-003",
|
|
51
|
+
"name": "Queue lesson extraction on review pass",
|
|
52
|
+
"condition": {
|
|
53
|
+
"event_type": "task_reviewed",
|
|
54
|
+
"context.verdict": "pass"
|
|
55
|
+
},
|
|
56
|
+
"action": {
|
|
57
|
+
"type": "log_event",
|
|
58
|
+
"event": {
|
|
59
|
+
"type": "task_assigned",
|
|
60
|
+
"source": "datacore",
|
|
61
|
+
"content": "Lesson extraction queued for ${context.task_id}.",
|
|
62
|
+
"context": {
|
|
63
|
+
"task_id": "${context.task_id}",
|
|
64
|
+
"assigned_to": "claude-desktop",
|
|
65
|
+
"status": "assigned",
|
|
66
|
+
"lesson_extraction": true
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
},
|
|
70
|
+
"enabled": true
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"rule_id": "TR-006",
|
|
74
|
+
"name": "Loop detection — flag stuck tasks",
|
|
75
|
+
"condition": {
|
|
76
|
+
"event_type": "task_loop_detected"
|
|
77
|
+
},
|
|
78
|
+
"action": {
|
|
79
|
+
"type": "log_event",
|
|
80
|
+
"event": {
|
|
81
|
+
"type": "task_assigned",
|
|
82
|
+
"source": "datacore",
|
|
83
|
+
"content": "Loop detected on ${context.task_id} after ${context.progress_count} progress events. Manual review required.",
|
|
84
|
+
"context": {
|
|
85
|
+
"task_id": "${context.task_id}",
|
|
86
|
+
"assigned_to": "claude-desktop",
|
|
87
|
+
"status": "assigned",
|
|
88
|
+
"loop_intervention": true,
|
|
89
|
+
"progress_count": "${context.progress_count}"
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
},
|
|
93
|
+
"enabled": true
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
"rule_id": "TR-009",
|
|
97
|
+
"name": "Context compaction — flag for briefing",
|
|
98
|
+
"condition": {
|
|
99
|
+
"event_type": "task_compaction_needed"
|
|
100
|
+
},
|
|
101
|
+
"action": {
|
|
102
|
+
"type": "log_event",
|
|
103
|
+
"event": {
|
|
104
|
+
"type": "task_assigned",
|
|
105
|
+
"source": "datacore",
|
|
106
|
+
"content": "Compaction needed for ${context.task_id} — ${context.progress_count} progress events logged.",
|
|
107
|
+
"context": {
|
|
108
|
+
"task_id": "${context.task_id}",
|
|
109
|
+
"assigned_to": "claude-desktop",
|
|
110
|
+
"status": "assigned",
|
|
111
|
+
"compaction": true,
|
|
112
|
+
"progress_count": "${context.progress_count}"
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
},
|
|
116
|
+
"enabled": true
|
|
117
|
+
}
|
|
118
|
+
]
|
|
119
|
+
}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
export type CostClass = "free" | "low" | "medium" | "high";
|
|
2
|
+
export type QuotaClass = "unlimited" | "subscription" | "pay-per-use" | "rate-limited";
|
|
3
|
+
export type ReliabilityClass = "high" | "medium" | "experimental";
|
|
4
|
+
export type AgentRole = "planner" | "builder" | "reviewer" | "architect" | "researcher" | "ops" | "director";
|
|
5
|
+
export type TaskStage = "planning" | "implementation" | "review" | "rework" | "validation" | "release";
|
|
6
|
+
export interface AdapterMetadata {
|
|
7
|
+
runtime_id: string;
|
|
8
|
+
provider: string;
|
|
9
|
+
surfaces: string[];
|
|
10
|
+
supports_mcp: boolean;
|
|
11
|
+
supports_hooks: boolean;
|
|
12
|
+
supports_transcript_export: boolean;
|
|
13
|
+
supports_isolation: boolean;
|
|
14
|
+
supports_review_mode: boolean;
|
|
15
|
+
supports_parallel_subagents: boolean;
|
|
16
|
+
cost_class: CostClass;
|
|
17
|
+
quota_class: QuotaClass;
|
|
18
|
+
reliability_class: ReliabilityClass;
|
|
19
|
+
ideal_roles: AgentRole[];
|
|
20
|
+
ideal_stages: TaskStage[];
|
|
21
|
+
}
|
|
22
|
+
export interface NormalizedTask {
|
|
23
|
+
task_id: string;
|
|
24
|
+
parent_task_id?: string;
|
|
25
|
+
project_id: string;
|
|
26
|
+
title: string;
|
|
27
|
+
description: string;
|
|
28
|
+
stage: TaskStage;
|
|
29
|
+
priority: "low" | "medium" | "high" | "critical";
|
|
30
|
+
risk_level: "low" | "medium" | "high";
|
|
31
|
+
required_capabilities: string[];
|
|
32
|
+
preferred_role: AgentRole;
|
|
33
|
+
review_required: boolean;
|
|
34
|
+
worktree_mode: "shared_workspace" | "isolated_worktree" | "sandboxed_runtime";
|
|
35
|
+
acceptance_criteria: string[];
|
|
36
|
+
budget_policy?: DispatchPolicy;
|
|
37
|
+
attachments?: string[];
|
|
38
|
+
warm_start_ref?: string;
|
|
39
|
+
}
|
|
40
|
+
export interface TaskContext {
|
|
41
|
+
run_id: string;
|
|
42
|
+
warm_start?: string;
|
|
43
|
+
prior_attempts: number;
|
|
44
|
+
review_findings?: string[];
|
|
45
|
+
workspace_path?: string;
|
|
46
|
+
}
|
|
47
|
+
export interface DispatchPolicy {
|
|
48
|
+
max_cost_class?: CostClass;
|
|
49
|
+
max_retries?: number;
|
|
50
|
+
require_review?: boolean;
|
|
51
|
+
require_isolation?: boolean;
|
|
52
|
+
budget_cap_usd?: number;
|
|
53
|
+
}
|
|
54
|
+
export interface PreflightResult {
|
|
55
|
+
ok: boolean;
|
|
56
|
+
runtime_id: string;
|
|
57
|
+
failure_reason?: "auth_failure" | "quota_failure" | "mcp_unavailable" | "executable_missing" | "policy_denied" | "workspace_unavailable";
|
|
58
|
+
detail?: string;
|
|
59
|
+
}
|
|
60
|
+
export interface RunHandle {
|
|
61
|
+
run_id: string;
|
|
62
|
+
runtime_id: string;
|
|
63
|
+
task_id: string;
|
|
64
|
+
started_at: string;
|
|
65
|
+
workspace_path?: string;
|
|
66
|
+
}
|
|
67
|
+
export interface RunStatus {
|
|
68
|
+
run_id: string;
|
|
69
|
+
task_id: string;
|
|
70
|
+
status: "starting" | "running" | "review" | "done" | "failed" | "cancelled";
|
|
71
|
+
runtime_id: string;
|
|
72
|
+
last_heartbeat?: string;
|
|
73
|
+
model_in_use?: string;
|
|
74
|
+
artifact_refs: string[];
|
|
75
|
+
}
|
|
76
|
+
export interface CancelResult {
|
|
77
|
+
run_id: string;
|
|
78
|
+
reason: "user" | "policy" | "timeout" | "superseded" | "dependency_failure";
|
|
79
|
+
cancelled_at: string;
|
|
80
|
+
}
|
|
81
|
+
export interface TranscriptRef {
|
|
82
|
+
ref: string;
|
|
83
|
+
runtime_id: string;
|
|
84
|
+
task_id: string;
|
|
85
|
+
run_id: string;
|
|
86
|
+
path?: string;
|
|
87
|
+
}
|
|
88
|
+
export interface HealthcheckResult {
|
|
89
|
+
ok: boolean;
|
|
90
|
+
executable_found: boolean;
|
|
91
|
+
config_present: boolean;
|
|
92
|
+
service_reachable: boolean;
|
|
93
|
+
mcp_reachable: boolean;
|
|
94
|
+
log_path_writable: boolean;
|
|
95
|
+
detail?: string;
|
|
96
|
+
}
|
|
97
|
+
export interface AuthState {
|
|
98
|
+
authenticated: boolean;
|
|
99
|
+
account_id?: string;
|
|
100
|
+
token_expiry?: string;
|
|
101
|
+
provider_host?: string;
|
|
102
|
+
interactive_reauth_required: boolean;
|
|
103
|
+
mcp_auth_issues: string[];
|
|
104
|
+
}
|
|
105
|
+
export interface RuntimeAdapter {
|
|
106
|
+
readonly runtime_id: string;
|
|
107
|
+
/** Check auth, quota, MCP, workspace before dispatch. */
|
|
108
|
+
preflight(task: NormalizedTask, context: TaskContext, policy: DispatchPolicy): Promise<PreflightResult>;
|
|
109
|
+
/** Launch a run. Returns a handle for status polling. */
|
|
110
|
+
start(task: NormalizedTask, context: TaskContext): Promise<RunHandle>;
|
|
111
|
+
/** Current state of a run. */
|
|
112
|
+
status(task_id: string): Promise<RunStatus>;
|
|
113
|
+
/** Stop a run intentionally. */
|
|
114
|
+
cancel(task_id: string, reason: CancelResult["reason"]): Promise<CancelResult>;
|
|
115
|
+
/** Export transcript or ref pointer for the run. */
|
|
116
|
+
export_transcript(task_id: string): Promise<TranscriptRef>;
|
|
117
|
+
/** Is the runtime operational right now? */
|
|
118
|
+
healthcheck(): Promise<HealthcheckResult>;
|
|
119
|
+
/** What can this runtime do? (used by router for scoring) */
|
|
120
|
+
capabilities(): AdapterMetadata;
|
|
121
|
+
/** Auth + credential readiness. */
|
|
122
|
+
auth_state(): Promise<AuthState>;
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=runtime-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-adapter.d.ts","sourceRoot":"","sources":["../../src/adapters/runtime-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-adapter.js","sourceRoot":"","sources":["../../src/adapters/runtime-adapter.ts"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,4DAA4D;AAC5D,0DAA0D"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/** Semantic version from this package's package.json (MCP server metadata). */
|
|
2
|
+
export declare function getMcpServerPackageVersion(): string;
|
|
3
|
+
export declare function getCosmosDatabaseName(): string;
|
|
4
|
+
export declare function getCosmosBronzeContainerName(): string;
|
|
5
|
+
export declare function getCosmosGoldContainerName(): string;
|
|
6
|
+
/** Display / API string for the active bronze Cosmos path (not a real URL scheme). */
|
|
7
|
+
export declare function getCosmosBronzeUriString(): string;
|
|
8
|
+
/** Display / API string for the gold Cosmos path. */
|
|
9
|
+
export declare function getCosmosGoldUriString(): string;
|
|
10
|
+
/** HTTP listen port (default 3001). */
|
|
11
|
+
export declare function getHttpPort(): number;
|
|
12
|
+
/** Base URL for HTTP clients. */
|
|
13
|
+
export declare function getHttpBaseUrl(): string;
|
|
14
|
+
/**
|
|
15
|
+
* Resolved API key for HTTP auth: production callers should set MCP_API_KEY.
|
|
16
|
+
* In dev, falls back to AGENTCORE_DEV_KEY / DATACORE_HTTP_DEV_FALLBACK_KEY.
|
|
17
|
+
*/
|
|
18
|
+
export declare function getApiKey(): string;
|
|
19
|
+
/** Insecure dev-only API key when MCP_API_KEY is unset (non-production only). */
|
|
20
|
+
export declare function getHttpDevFallbackApiKey(): string;
|
|
21
|
+
//# sourceMappingURL=datacore-constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"datacore-constants.d.ts","sourceRoot":"","sources":["../../src/config/datacore-constants.ts"],"names":[],"mappings":"AAWA,+EAA+E;AAC/E,wBAAgB,0BAA0B,IAAI,MAAM,CAQnD;AAED,wBAAgB,qBAAqB,IAAI,MAAM,CAM9C;AAED,wBAAgB,4BAA4B,IAAI,MAAM,CAMrD;AAED,wBAAgB,0BAA0B,IAAI,MAAM,CAMnD;AAED,sFAAsF;AACtF,wBAAgB,wBAAwB,IAAI,MAAM,CAEjD;AAED,qDAAqD;AACrD,wBAAgB,sBAAsB,IAAI,MAAM,CAE/C;AAED,uCAAuC;AACvC,wBAAgB,WAAW,IAAI,MAAM,CAKpC;AAED,iCAAiC;AACjC,wBAAgB,cAAc,IAAI,MAAM,CAMvC;AAED;;;GAGG;AACH,wBAAgB,SAAS,IAAI,MAAM,CAOlC;AAED,iFAAiF;AACjF,wBAAgB,wBAAwB,IAAI,MAAM,CAMjD"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
// agentcore-constants.ts — Single source for package version and Cosmos display URIs.
|
|
2
|
+
// Database / container names are overridable for non-default Cosmos layouts.
|
|
3
|
+
// Env vars: AGENTCORE_* preferred; DATACORE_* accepted as legacy aliases.
|
|
4
|
+
import { readFileSync } from "node:fs";
|
|
5
|
+
import { dirname, join } from "node:path";
|
|
6
|
+
import { fileURLToPath } from "node:url";
|
|
7
|
+
const packageDir = dirname(fileURLToPath(import.meta.url));
|
|
8
|
+
let cachedPackageVersion;
|
|
9
|
+
/** Semantic version from this package's package.json (MCP server metadata). */
|
|
10
|
+
export function getMcpServerPackageVersion() {
|
|
11
|
+
if (cachedPackageVersion === undefined) {
|
|
12
|
+
const pkgPath = join(packageDir, "..", "..", "package.json");
|
|
13
|
+
const raw = readFileSync(pkgPath, "utf8");
|
|
14
|
+
const pkg = JSON.parse(raw);
|
|
15
|
+
cachedPackageVersion = pkg.version ?? "0.0.0";
|
|
16
|
+
}
|
|
17
|
+
return cachedPackageVersion;
|
|
18
|
+
}
|
|
19
|
+
export function getCosmosDatabaseName() {
|
|
20
|
+
return (process.env.AGENTCORE_COSMOS_DATABASE ??
|
|
21
|
+
process.env.DATACORE_COSMOS_DATABASE ??
|
|
22
|
+
"datacore");
|
|
23
|
+
}
|
|
24
|
+
export function getCosmosBronzeContainerName() {
|
|
25
|
+
return (process.env.AGENTCORE_COSMOS_BRONZE_CONTAINER ??
|
|
26
|
+
process.env.DATACORE_COSMOS_BRONZE_CONTAINER ??
|
|
27
|
+
"bronze");
|
|
28
|
+
}
|
|
29
|
+
export function getCosmosGoldContainerName() {
|
|
30
|
+
return (process.env.AGENTCORE_COSMOS_GOLD_CONTAINER ??
|
|
31
|
+
process.env.DATACORE_COSMOS_GOLD_CONTAINER ??
|
|
32
|
+
"gold");
|
|
33
|
+
}
|
|
34
|
+
/** Display / API string for the active bronze Cosmos path (not a real URL scheme). */
|
|
35
|
+
export function getCosmosBronzeUriString() {
|
|
36
|
+
return `cosmos://${getCosmosDatabaseName()}/${getCosmosBronzeContainerName()}`;
|
|
37
|
+
}
|
|
38
|
+
/** Display / API string for the gold Cosmos path. */
|
|
39
|
+
export function getCosmosGoldUriString() {
|
|
40
|
+
return `cosmos://${getCosmosDatabaseName()}/${getCosmosGoldContainerName()}`;
|
|
41
|
+
}
|
|
42
|
+
/** HTTP listen port (default 3001). */
|
|
43
|
+
export function getHttpPort() {
|
|
44
|
+
return parseInt(process.env.AGENTCORE_PORT ?? process.env.DATACORE_HTTP_PORT ?? "3001", 10);
|
|
45
|
+
}
|
|
46
|
+
/** Base URL for HTTP clients. */
|
|
47
|
+
export function getHttpBaseUrl() {
|
|
48
|
+
return (process.env.AGENTCORE_BASE_URL ??
|
|
49
|
+
process.env.DATACORE_HTTP_BASE_URL ??
|
|
50
|
+
`http://localhost:${getHttpPort()}`);
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Resolved API key for HTTP auth: production callers should set MCP_API_KEY.
|
|
54
|
+
* In dev, falls back to AGENTCORE_DEV_KEY / DATACORE_HTTP_DEV_FALLBACK_KEY.
|
|
55
|
+
*/
|
|
56
|
+
export function getApiKey() {
|
|
57
|
+
return (process.env.MCP_API_KEY ??
|
|
58
|
+
process.env.AGENTCORE_DEV_KEY ??
|
|
59
|
+
process.env.DATACORE_HTTP_DEV_FALLBACK_KEY ??
|
|
60
|
+
"dev-key-change-me");
|
|
61
|
+
}
|
|
62
|
+
/** Insecure dev-only API key when MCP_API_KEY is unset (non-production only). */
|
|
63
|
+
export function getHttpDevFallbackApiKey() {
|
|
64
|
+
return (process.env.AGENTCORE_DEV_KEY ??
|
|
65
|
+
process.env.DATACORE_HTTP_DEV_FALLBACK_KEY ??
|
|
66
|
+
"dev-key-change-me");
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=datacore-constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"datacore-constants.js","sourceRoot":"","sources":["../../src/config/datacore-constants.ts"],"names":[],"mappings":"AAAA,sFAAsF;AACtF,6EAA6E;AAC7E,0EAA0E;AAE1E,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3D,IAAI,oBAAwC,CAAC;AAE7C,+EAA+E;AAC/E,MAAM,UAAU,0BAA0B;IACxC,IAAI,oBAAoB,KAAK,SAAS,EAAE,CAAC;QACvC,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;QAC7D,MAAM,GAAG,GAAG,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAyB,CAAC;QACpD,oBAAoB,GAAG,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC;IAChD,CAAC;IACD,OAAO,oBAAoB,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO,CACL,OAAO,CAAC,GAAG,CAAC,yBAAyB;QACrC,OAAO,CAAC,GAAG,CAAC,wBAAwB;QACpC,UAAU,CACX,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,4BAA4B;IAC1C,OAAO,CACL,OAAO,CAAC,GAAG,CAAC,iCAAiC;QAC7C,OAAO,CAAC,GAAG,CAAC,gCAAgC;QAC5C,QAAQ,CACT,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,0BAA0B;IACxC,OAAO,CACL,OAAO,CAAC,GAAG,CAAC,+BAA+B;QAC3C,OAAO,CAAC,GAAG,CAAC,8BAA8B;QAC1C,MAAM,CACP,CAAC;AACJ,CAAC;AAED,sFAAsF;AACtF,MAAM,UAAU,wBAAwB;IACtC,OAAO,YAAY,qBAAqB,EAAE,IAAI,4BAA4B,EAAE,EAAE,CAAC;AACjF,CAAC;AAED,qDAAqD;AACrD,MAAM,UAAU,sBAAsB;IACpC,OAAO,YAAY,qBAAqB,EAAE,IAAI,0BAA0B,EAAE,EAAE,CAAC;AAC/E,CAAC;AAED,uCAAuC;AACvC,MAAM,UAAU,WAAW;IACzB,OAAO,QAAQ,CACb,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,MAAM,EACtE,EAAE,CACH,CAAC;AACJ,CAAC;AAED,iCAAiC;AACjC,MAAM,UAAU,cAAc;IAC5B,OAAO,CACL,OAAO,CAAC,GAAG,CAAC,kBAAkB;QAC9B,OAAO,CAAC,GAAG,CAAC,sBAAsB;QAClC,oBAAoB,WAAW,EAAE,EAAE,CACpC,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,SAAS;IACvB,OAAO,CACL,OAAO,CAAC,GAAG,CAAC,WAAW;QACvB,OAAO,CAAC,GAAG,CAAC,iBAAiB;QAC7B,OAAO,CAAC,GAAG,CAAC,8BAA8B;QAC1C,mBAAmB,CACpB,CAAC;AACJ,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,wBAAwB;IACtC,OAAO,CACL,OAAO,CAAC,GAAG,CAAC,iBAAiB;QAC7B,OAAO,CAAC,GAAG,CAAC,8BAA8B;QAC1C,mBAAmB,CACpB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export declare const EMBEDDABLE_TYPES: Set<string>;
|
|
2
|
+
export declare const MIN_CONTENT_LENGTH = 50;
|
|
3
|
+
export declare function shouldEmbed(record: {
|
|
4
|
+
type?: string;
|
|
5
|
+
content?: string;
|
|
6
|
+
}): boolean;
|
|
7
|
+
export declare const KNOWN_SOURCES: Set<string>;
|
|
8
|
+
export interface ValidationResult {
|
|
9
|
+
valid: boolean;
|
|
10
|
+
reasons: string[];
|
|
11
|
+
}
|
|
12
|
+
export declare function validateForSilver(record: Record<string, unknown>): ValidationResult;
|
|
13
|
+
/**
|
|
14
|
+
* Extract a compact summary from event content for better Silver embeddings.
|
|
15
|
+
* Rule-based only — no LLM calls. For content >200 chars: first sentence + key entities.
|
|
16
|
+
* Returns null for short content (embed as-is).
|
|
17
|
+
*/
|
|
18
|
+
export declare function extractContentSummary(content: string | null | undefined): string | null;
|
|
19
|
+
//# sourceMappingURL=embeddable.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"embeddable.d.ts","sourceRoot":"","sources":["../../src/domain/embeddable.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,gBAAgB,aAsB3B,CAAC;AAEH,eAAO,MAAM,kBAAkB,KAAK,CAAC;AAErC,wBAAgB,WAAW,CAAC,MAAM,EAAE;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,OAAO,CAIV;AAGD,eAAO,MAAM,aAAa,aAexB,CAAC;AAKH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,gBAAgB,CAkClB;AAID;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GACjC,MAAM,GAAG,IAAI,CAoBf"}
|