@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
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
export function buildL0Identity(agent, task_id, format) {
|
|
2
|
+
if (format === "bullets") {
|
|
3
|
+
return [
|
|
4
|
+
`=== WARM-START PREAMBLE: ${task_id} ===`,
|
|
5
|
+
`Agent: ${agent}`,
|
|
6
|
+
`MANDATORY: Call log_event(type='task_completed') before this session ends.`,
|
|
7
|
+
`Chat-only responses are LOST — Datacore is the only real output. (Gotcha #14)`,
|
|
8
|
+
`Write-back required even if task is blocked or abandoned.`,
|
|
9
|
+
`===`,
|
|
10
|
+
].join("\n");
|
|
11
|
+
}
|
|
12
|
+
return [
|
|
13
|
+
`=== WARM-START PREAMBLE: ${task_id} ===`,
|
|
14
|
+
`You are ${agent}. This preamble was assembled by Datacore at dispatch time.`,
|
|
15
|
+
`MANDATORY: You must call log_event(type='task_completed') before this session ends.`,
|
|
16
|
+
`Responding in chat only is a silent failure — TR-002 and TR-003 never fire without a Datacore write.`,
|
|
17
|
+
`If you cannot complete the task, log task_blocked or task_failed instead. Any write-back is acceptable. No write-back is not.`,
|
|
18
|
+
`===`,
|
|
19
|
+
].join("\n");
|
|
20
|
+
}
|
|
21
|
+
export function buildL1TaskSpec(taskCreatedContent, acceptanceCriteria, specFile, _format) {
|
|
22
|
+
const lines = ["--- TASK SPEC (L1) ---", taskCreatedContent.trim()];
|
|
23
|
+
if (acceptanceCriteria.length > 0) {
|
|
24
|
+
lines.push("");
|
|
25
|
+
lines.push("Acceptance criteria:");
|
|
26
|
+
acceptanceCriteria.forEach((c, i) => lines.push(` ${i + 1}. ${c}`));
|
|
27
|
+
}
|
|
28
|
+
if (specFile) {
|
|
29
|
+
lines.push("");
|
|
30
|
+
lines.push(`Spec file: ${specFile} (read this file — it has full detail)`);
|
|
31
|
+
}
|
|
32
|
+
return lines.join("\n");
|
|
33
|
+
}
|
|
34
|
+
export function buildL2ProjectContext(gotchas, format) {
|
|
35
|
+
if (gotchas.length === 0)
|
|
36
|
+
return "";
|
|
37
|
+
const lines = ["--- PROJECT CONTEXT (L2) ---"];
|
|
38
|
+
if (format === "bullets") {
|
|
39
|
+
lines.push("Key gotchas (from CLAUDE.md):");
|
|
40
|
+
gotchas.forEach((g) => lines.push(` • ${g.trim()}`));
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
lines.push("Key rules for this task:");
|
|
44
|
+
gotchas.forEach((g, i) => lines.push(`${i + 1}. ${g.trim()}`));
|
|
45
|
+
}
|
|
46
|
+
return lines.join("\n");
|
|
47
|
+
}
|
|
48
|
+
export function buildL3KnowledgeGraph(entities, selfContained, format) {
|
|
49
|
+
if (entities.length === 0)
|
|
50
|
+
return "";
|
|
51
|
+
const lines = ["--- KNOWLEDGE GRAPH LINKS (L3) ---"];
|
|
52
|
+
lines.push(`${entities.length} related entities:`);
|
|
53
|
+
for (const e of entities) {
|
|
54
|
+
if (format === "bullets") {
|
|
55
|
+
lines.push(` • [${e.entity_type}] ${e.summary}`);
|
|
56
|
+
if (selfContained && e.data) {
|
|
57
|
+
const dataStr = JSON.stringify(e.data).slice(0, 300);
|
|
58
|
+
lines.push(` data: ${dataStr}`);
|
|
59
|
+
}
|
|
60
|
+
else if (!selfContained) {
|
|
61
|
+
lines.push(` id: ${e.entity_id}`);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
lines.push(`${e.entity_type}: ${e.summary}`);
|
|
66
|
+
if (selfContained && e.data) {
|
|
67
|
+
lines.push(` ${JSON.stringify(e.data).slice(0, 300)}`);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return lines.join("\n");
|
|
72
|
+
}
|
|
73
|
+
export function buildL4RecentCompletions(completions, format) {
|
|
74
|
+
if (completions.length === 0)
|
|
75
|
+
return "";
|
|
76
|
+
const lines = ["--- RECENT COMPLETIONS (L4) ---"];
|
|
77
|
+
lines.push("Recent passing tasks in this project:");
|
|
78
|
+
for (const c of completions) {
|
|
79
|
+
if (format === "bullets") {
|
|
80
|
+
lines.push(` • ${c.task_id}: ${c.summary.slice(0, 120)}`);
|
|
81
|
+
if (c.gotcha)
|
|
82
|
+
lines.push(` ↳ gotcha: ${c.gotcha}`);
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
lines.push(`${c.task_id}: ${c.summary.slice(0, 120)}`);
|
|
86
|
+
if (c.gotcha)
|
|
87
|
+
lines.push(` Note: ${c.gotcha}`);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return lines.join("\n");
|
|
91
|
+
}
|
|
92
|
+
export function buildL5RetryContext(failedCriteria, fixInstructions, format) {
|
|
93
|
+
if (failedCriteria.length === 0 && !fixInstructions)
|
|
94
|
+
return "";
|
|
95
|
+
const lines = ["--- RETRY CONTEXT (L5) --- ⚠️ THIS IS A RETRY"];
|
|
96
|
+
lines.push("Previous attempt FAILED on these criteria:");
|
|
97
|
+
failedCriteria.forEach((c) => lines.push(format === "bullets" ? ` • ${c}` : ` - ${c}`));
|
|
98
|
+
if (fixInstructions) {
|
|
99
|
+
lines.push("");
|
|
100
|
+
lines.push("Fix instructions from reviewer:");
|
|
101
|
+
lines.push(fixInstructions.trim());
|
|
102
|
+
}
|
|
103
|
+
return lines.join("\n");
|
|
104
|
+
}
|
|
105
|
+
export function buildLA_AgentJournal(journal, format) {
|
|
106
|
+
const lines = ["--- YOUR CODEBASE KNOWLEDGE (LA) ---"];
|
|
107
|
+
const knowledge = journal["codebase_knowledge"];
|
|
108
|
+
if (Array.isArray(knowledge) && knowledge.length > 0) {
|
|
109
|
+
lines.push("What you know about this codebase:");
|
|
110
|
+
knowledge
|
|
111
|
+
.slice(0, 12)
|
|
112
|
+
.forEach((k) => lines.push(format === "bullets" ? ` • ${k}` : `- ${k}`));
|
|
113
|
+
}
|
|
114
|
+
const gotchas = journal["gotchas"];
|
|
115
|
+
if (Array.isArray(gotchas) && gotchas.length > 0) {
|
|
116
|
+
lines.push("");
|
|
117
|
+
lines.push("Your own gotchas (learned the hard way):");
|
|
118
|
+
gotchas
|
|
119
|
+
.slice(0, 6)
|
|
120
|
+
.forEach((g) => lines.push(format === "bullets" ? ` ⚠️ ${g}` : `! ${g}`));
|
|
121
|
+
}
|
|
122
|
+
const patterns = journal["patterns"];
|
|
123
|
+
if (Array.isArray(patterns) && patterns.length > 0) {
|
|
124
|
+
lines.push("");
|
|
125
|
+
lines.push("Recurring patterns you have discovered:");
|
|
126
|
+
patterns
|
|
127
|
+
.slice(0, 4)
|
|
128
|
+
.forEach((p) => lines.push(format === "bullets" ? ` • ${p}` : `- ${p}`));
|
|
129
|
+
}
|
|
130
|
+
if (typeof journal["last_task"] === "string") {
|
|
131
|
+
lines.push("");
|
|
132
|
+
lines.push(`Your last task: ${journal["last_task"]}`);
|
|
133
|
+
}
|
|
134
|
+
return lines.join("\n");
|
|
135
|
+
}
|
|
136
|
+
export function buildLB_TaskCheckpoint(checkpointContent, format) {
|
|
137
|
+
const lines = ["--- RESUME FROM CHECKPOINT (LB) --- ⚠️ MID-TASK RECOVERY"];
|
|
138
|
+
lines.push(format === "bullets"
|
|
139
|
+
? "This task was interrupted. Continue from this checkpoint:"
|
|
140
|
+
: "The previous session was interrupted. Resume from this point:");
|
|
141
|
+
lines.push("");
|
|
142
|
+
lines.push(checkpointContent.trim());
|
|
143
|
+
return lines.join("\n");
|
|
144
|
+
}
|
|
145
|
+
export function buildL6FileManifest(files, format) {
|
|
146
|
+
if (files.length === 0)
|
|
147
|
+
return "";
|
|
148
|
+
const lines = ["--- FILE MANIFEST (L6) ---"];
|
|
149
|
+
lines.push("Files to change (domain logic in domain/, transport routing in transport/):");
|
|
150
|
+
for (const f of files) {
|
|
151
|
+
lines.push(format === "bullets"
|
|
152
|
+
? ` • ${f.action}: ${f.path}`
|
|
153
|
+
: `${f.action}: ${f.path}`);
|
|
154
|
+
}
|
|
155
|
+
return lines.join("\n");
|
|
156
|
+
}
|
|
157
|
+
//# sourceMappingURL=warm-start-builders.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"warm-start-builders.js","sourceRoot":"","sources":["../../src/domain/warm-start-builders.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { GoldEntity } from "../types.js";
|
|
2
|
+
export interface TaskCreatedContext {
|
|
3
|
+
content: string;
|
|
4
|
+
acceptanceCriteria: string[];
|
|
5
|
+
specFile: string | null;
|
|
6
|
+
filesChanged: Array<{
|
|
7
|
+
path: string;
|
|
8
|
+
action: "CREATE" | "MODIFY" | "DELETE";
|
|
9
|
+
}>;
|
|
10
|
+
project: string | null;
|
|
11
|
+
assignedTo: string | null;
|
|
12
|
+
}
|
|
13
|
+
export interface RetryInfo {
|
|
14
|
+
isRetry: boolean;
|
|
15
|
+
failedCriteria: string[];
|
|
16
|
+
fixInstructions: string;
|
|
17
|
+
}
|
|
18
|
+
export interface AgentProfile {
|
|
19
|
+
budget_chars: number;
|
|
20
|
+
format: "bullets" | "prose";
|
|
21
|
+
self_contained: boolean;
|
|
22
|
+
include_file_manifest: boolean;
|
|
23
|
+
drop_l4_first: boolean;
|
|
24
|
+
}
|
|
25
|
+
export declare function extractAgentJournal(agent: string): Promise<Record<string, unknown> | null>;
|
|
26
|
+
export declare function extractTaskCheckpoint(task_id: string): Promise<string | null>;
|
|
27
|
+
export declare function extractLatestTaskContext(task_id: string): Promise<TaskCreatedContext | null>;
|
|
28
|
+
export declare function extractTaskCreated(task_id: string): Promise<TaskCreatedContext | null>;
|
|
29
|
+
export declare function extractRetryInfo(task_id: string): Promise<RetryInfo>;
|
|
30
|
+
export declare function findRelatedEntities(task_id: string, project: string | null): Promise<GoldEntity[]>;
|
|
31
|
+
export declare function findRecentCompletions(project: string | null): Promise<Array<{
|
|
32
|
+
task_id: string;
|
|
33
|
+
summary: string;
|
|
34
|
+
gotcha?: string;
|
|
35
|
+
}>>;
|
|
36
|
+
export declare function getGotchas(project: string | null): string[];
|
|
37
|
+
//# sourceMappingURL=warm-start-extractors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"warm-start-extractors.d.ts","sourceRoot":"","sources":["../../src/domain/warm-start-extractors.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAgB,UAAU,EAAE,MAAM,aAAa,CAAC;AAE5D,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,YAAY,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAA;KAAE,CAAC,CAAC;IAC9E,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;CACzB;AAGD,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,MAAM,CAAC;IAErB,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC;IAC5B,cAAc,EAAE,OAAO,CAAC;IAExB,qBAAqB,EAAE,OAAO,CAAC;IAC/B,aAAa,EAAE,OAAO,CAAC;CAExB;AAID,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,CAWzC;AAED,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAcxB;AA8KD,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAuDpC;AAED,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAgDpC;AAED,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAiC1E;AAED,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GAAG,IAAI,GACrB,OAAO,CAAC,UAAU,EAAE,CAAC,CAsCvB;AAED,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,MAAM,GAAG,IAAI,GACrB,OAAO,CAAC,KAAK,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAwDvE;AAmBD,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,EAAE,CAG3D"}
|
|
@@ -0,0 +1,372 @@
|
|
|
1
|
+
// warm-start-extractors.ts — Data extraction helpers for warm-start assembly.
|
|
2
|
+
// All I/O lives here: reads Bronze + Gold, returns typed data for builders.
|
|
3
|
+
import { readAllRecords, readEventsByTask } from "../storage/store.js";
|
|
4
|
+
import { queryEntities } from "./gold-store.js";
|
|
5
|
+
// ─── Layer builders ───────────────────────────────────────────────────────────
|
|
6
|
+
export async function extractAgentJournal(agent) {
|
|
7
|
+
try {
|
|
8
|
+
const result = await queryEntities({ entity_type: "agent_journal" });
|
|
9
|
+
const match = result.entities.find((e) => e.entity_id?.toLowerCase() === agent.toLowerCase());
|
|
10
|
+
if (!match?.data || typeof match.data !== "object")
|
|
11
|
+
return null;
|
|
12
|
+
return match.data;
|
|
13
|
+
}
|
|
14
|
+
catch {
|
|
15
|
+
return null;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
export async function extractTaskCheckpoint(task_id) {
|
|
19
|
+
try {
|
|
20
|
+
const { records } = await readAllRecords({ type: "task_checkpoint" });
|
|
21
|
+
const checkpoints = records
|
|
22
|
+
.filter((r) => {
|
|
23
|
+
const ctx = r.context;
|
|
24
|
+
return ctx?.task_id === task_id;
|
|
25
|
+
})
|
|
26
|
+
.sort((a, b) => (b._timestamp ?? "").localeCompare(a._timestamp ?? ""));
|
|
27
|
+
if (checkpoints.length === 0)
|
|
28
|
+
return null;
|
|
29
|
+
return checkpoints[0].content ?? null;
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
/** When there is no task_context snapshot, merge task_created with task_progress for L1. */
|
|
36
|
+
/** Shared L1 metadata from task_created (criteria, files, project). */
|
|
37
|
+
function taskSideFromCreated(created, task_id) {
|
|
38
|
+
const ctx = created.context ?? {};
|
|
39
|
+
const raw = ctx.acceptance_criteria;
|
|
40
|
+
const acceptanceCriteria = Array.isArray(raw)
|
|
41
|
+
? raw.filter((x) => typeof x === "string")
|
|
42
|
+
: [];
|
|
43
|
+
const specFile = typeof ctx.spec_file === "string" ? ctx.spec_file : null;
|
|
44
|
+
const assignedTo = typeof ctx.assigned_to === "string" ? ctx.assigned_to : null;
|
|
45
|
+
const project = typeof ctx.project === "string" ? ctx.project : null;
|
|
46
|
+
const rawFiles = ctx.files_to_change;
|
|
47
|
+
const filesChanged = [];
|
|
48
|
+
if (Array.isArray(rawFiles)) {
|
|
49
|
+
for (const f of rawFiles) {
|
|
50
|
+
if (typeof f === "string" && f) {
|
|
51
|
+
filesChanged.push({ path: f, action: "MODIFY" });
|
|
52
|
+
}
|
|
53
|
+
else if (f && typeof f === "object") {
|
|
54
|
+
const fo = f;
|
|
55
|
+
const p = typeof fo.path === "string" ? fo.path : String(fo.path ?? "");
|
|
56
|
+
const a = typeof fo.action === "string" &&
|
|
57
|
+
["CREATE", "MODIFY", "DELETE"].includes(fo.action.toUpperCase())
|
|
58
|
+
? fo.action.toUpperCase()
|
|
59
|
+
: "MODIFY";
|
|
60
|
+
if (p)
|
|
61
|
+
filesChanged.push({ path: p, action: a });
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return {
|
|
66
|
+
acceptanceCriteria,
|
|
67
|
+
specFile,
|
|
68
|
+
filesChanged,
|
|
69
|
+
project,
|
|
70
|
+
assignedTo,
|
|
71
|
+
baseContent: (created.content ?? `Task ${task_id}`).trim(),
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
/** L1 body from task_compacted plus task_created structure (Cosmos-safe: uses per-task history, not global TOP N). */
|
|
75
|
+
function taskContextFromCreatedPlusCompacted(task_id, created, compactedRow) {
|
|
76
|
+
const side = taskSideFromCreated(created, task_id);
|
|
77
|
+
const compactCtx = compactedRow.context ?? {};
|
|
78
|
+
const projectFromCompact = typeof compactCtx.project === "string" ? compactCtx.project : side.project;
|
|
79
|
+
const assignedFromCompact = typeof compactCtx.assigned_to === "string"
|
|
80
|
+
? compactCtx.assigned_to
|
|
81
|
+
: side.assignedTo;
|
|
82
|
+
const summary = (compactedRow.content ?? "").trim();
|
|
83
|
+
return {
|
|
84
|
+
content: summary || side.baseContent || `Task ${task_id}`,
|
|
85
|
+
acceptanceCriteria: side.acceptanceCriteria,
|
|
86
|
+
specFile: side.specFile,
|
|
87
|
+
filesChanged: side.filesChanged,
|
|
88
|
+
project: projectFromCompact,
|
|
89
|
+
assignedTo: assignedFromCompact,
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
function taskContextFromTaskContextSnapshot(task_id, snap) {
|
|
93
|
+
const ctx = snap.context ?? {};
|
|
94
|
+
const raw = ctx.acceptance_criteria;
|
|
95
|
+
const acceptanceCriteria = Array.isArray(raw)
|
|
96
|
+
? raw.filter((x) => typeof x === "string")
|
|
97
|
+
: [];
|
|
98
|
+
const rawFiles = ctx.files_to_change;
|
|
99
|
+
const filesChanged = [];
|
|
100
|
+
if (Array.isArray(rawFiles)) {
|
|
101
|
+
for (const f of rawFiles) {
|
|
102
|
+
if (typeof f === "string" && f) {
|
|
103
|
+
filesChanged.push({ path: f, action: "MODIFY" });
|
|
104
|
+
}
|
|
105
|
+
else if (f && typeof f === "object") {
|
|
106
|
+
const fo = f;
|
|
107
|
+
const p = typeof fo.path === "string" ? fo.path : String(fo.path ?? "");
|
|
108
|
+
const a = typeof fo.action === "string" &&
|
|
109
|
+
["CREATE", "MODIFY", "DELETE"].includes(fo.action.toUpperCase())
|
|
110
|
+
? fo.action.toUpperCase()
|
|
111
|
+
: "MODIFY";
|
|
112
|
+
if (p)
|
|
113
|
+
filesChanged.push({ path: p, action: a });
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
const specFile = typeof ctx.spec_file === "string" ? ctx.spec_file : null;
|
|
118
|
+
const projectFromCtx = typeof ctx.project === "string" ? ctx.project : null;
|
|
119
|
+
const project = projectFromCtx ?? (typeof snap.project === "string" ? snap.project : null);
|
|
120
|
+
const assignedTo = typeof ctx.assigned_to === "string" ? ctx.assigned_to : null;
|
|
121
|
+
return {
|
|
122
|
+
content: snap.content ?? `Task ${task_id}`,
|
|
123
|
+
acceptanceCriteria,
|
|
124
|
+
specFile,
|
|
125
|
+
filesChanged,
|
|
126
|
+
project,
|
|
127
|
+
assignedTo,
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
function taskContextFromCreatedAndProgress(task_id, taskRecords) {
|
|
131
|
+
const created = taskRecords.find((r) => r.type === "task_created");
|
|
132
|
+
if (!created)
|
|
133
|
+
return null;
|
|
134
|
+
const progressRows = taskRecords.filter((r) => r.type === "task_progress");
|
|
135
|
+
if (progressRows.length === 0)
|
|
136
|
+
return null;
|
|
137
|
+
const side = taskSideFromCreated(created, task_id);
|
|
138
|
+
const progressLines = progressRows
|
|
139
|
+
.map((r) => (r.content ?? "").trim())
|
|
140
|
+
.filter((line) => line.length > 0);
|
|
141
|
+
const content = progressLines.length > 0
|
|
142
|
+
? `${side.baseContent}\n\n--- Progress ---\n${progressLines.join("\n")}`
|
|
143
|
+
: side.baseContent;
|
|
144
|
+
return {
|
|
145
|
+
content,
|
|
146
|
+
acceptanceCriteria: side.acceptanceCriteria,
|
|
147
|
+
specFile: side.specFile,
|
|
148
|
+
filesChanged: side.filesChanged,
|
|
149
|
+
project: side.project,
|
|
150
|
+
assignedTo: side.assignedTo,
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
function recordTime(r) {
|
|
154
|
+
return r._timestamp ?? "";
|
|
155
|
+
}
|
|
156
|
+
export async function extractLatestTaskContext(task_id) {
|
|
157
|
+
let forTask;
|
|
158
|
+
try {
|
|
159
|
+
forTask = await readEventsByTask(task_id);
|
|
160
|
+
}
|
|
161
|
+
catch {
|
|
162
|
+
return null;
|
|
163
|
+
}
|
|
164
|
+
const created = forTask.find((r) => r.type === "task_created");
|
|
165
|
+
if (!created)
|
|
166
|
+
return null;
|
|
167
|
+
const compactedRows = forTask.filter((r) => {
|
|
168
|
+
if (r.type !== "task_compacted")
|
|
169
|
+
return false;
|
|
170
|
+
const ctx = r.context;
|
|
171
|
+
return ctx?.task_id === task_id;
|
|
172
|
+
});
|
|
173
|
+
const contextRows = forTask.filter((r) => {
|
|
174
|
+
if (r.type !== "task_context")
|
|
175
|
+
return false;
|
|
176
|
+
const ctx = r.context;
|
|
177
|
+
return ctx?.task_id === task_id;
|
|
178
|
+
});
|
|
179
|
+
compactedRows.sort((a, b) => recordTime(a).localeCompare(recordTime(b)));
|
|
180
|
+
contextRows.sort((a, b) => recordTime(a).localeCompare(recordTime(b)));
|
|
181
|
+
const latestCompacted = compactedRows.length > 0 ? compactedRows[compactedRows.length - 1] : null;
|
|
182
|
+
const latestContext = contextRows.length > 0 ? contextRows[contextRows.length - 1] : null;
|
|
183
|
+
if (latestCompacted && latestContext) {
|
|
184
|
+
if (recordTime(latestCompacted) >= recordTime(latestContext)) {
|
|
185
|
+
return taskContextFromCreatedPlusCompacted(task_id, created, latestCompacted);
|
|
186
|
+
}
|
|
187
|
+
return taskContextFromTaskContextSnapshot(task_id, latestContext);
|
|
188
|
+
}
|
|
189
|
+
if (latestCompacted) {
|
|
190
|
+
return taskContextFromCreatedPlusCompacted(task_id, created, latestCompacted);
|
|
191
|
+
}
|
|
192
|
+
if (latestContext) {
|
|
193
|
+
return taskContextFromTaskContextSnapshot(task_id, latestContext);
|
|
194
|
+
}
|
|
195
|
+
const fromProgress = taskContextFromCreatedAndProgress(task_id, forTask);
|
|
196
|
+
if (fromProgress)
|
|
197
|
+
return fromProgress;
|
|
198
|
+
return null;
|
|
199
|
+
}
|
|
200
|
+
export async function extractTaskCreated(task_id) {
|
|
201
|
+
const taskRecords = await readEventsByTask(task_id);
|
|
202
|
+
const created = taskRecords.find((r) => r.type === "task_created");
|
|
203
|
+
if (!created)
|
|
204
|
+
return null;
|
|
205
|
+
const ctx = created.context ?? {};
|
|
206
|
+
const raw = ctx.acceptance_criteria;
|
|
207
|
+
const criteria = Array.isArray(raw) ? raw : [];
|
|
208
|
+
const specFile = typeof ctx.spec_file === "string" ? ctx.spec_file : null;
|
|
209
|
+
const assignedTo = typeof ctx.assigned_to === "string" ? ctx.assigned_to : null;
|
|
210
|
+
const project = typeof ctx.project === "string" ? ctx.project : null;
|
|
211
|
+
// Parse files_to_change if present
|
|
212
|
+
const rawFiles = ctx.files_to_change;
|
|
213
|
+
const files = [];
|
|
214
|
+
if (Array.isArray(rawFiles)) {
|
|
215
|
+
for (const f of rawFiles) {
|
|
216
|
+
if (typeof f === "string") {
|
|
217
|
+
files.push({ path: f, action: "MODIFY" });
|
|
218
|
+
}
|
|
219
|
+
else if (f && typeof f === "object") {
|
|
220
|
+
const fo = f;
|
|
221
|
+
const p = typeof fo.path === "string" ? fo.path : String(fo.path ?? "");
|
|
222
|
+
const a = typeof fo.action === "string" &&
|
|
223
|
+
["CREATE", "MODIFY", "DELETE"].includes(fo.action.toUpperCase())
|
|
224
|
+
? fo.action.toUpperCase()
|
|
225
|
+
: "MODIFY";
|
|
226
|
+
if (p)
|
|
227
|
+
files.push({ path: p, action: a });
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
return {
|
|
232
|
+
content: created.content ?? `Task ${task_id}`,
|
|
233
|
+
acceptanceCriteria: criteria,
|
|
234
|
+
specFile,
|
|
235
|
+
filesChanged: files,
|
|
236
|
+
project,
|
|
237
|
+
assignedTo,
|
|
238
|
+
};
|
|
239
|
+
}
|
|
240
|
+
export async function extractRetryInfo(task_id) {
|
|
241
|
+
const taskRecords = await readEventsByTask(task_id);
|
|
242
|
+
// Find the most recent task_reviewed with verdict=fail
|
|
243
|
+
const failedReviews = taskRecords.filter((r) => {
|
|
244
|
+
if (r.type !== "task_reviewed")
|
|
245
|
+
return false;
|
|
246
|
+
const ctx = r.context;
|
|
247
|
+
return ctx?.verdict === "fail";
|
|
248
|
+
});
|
|
249
|
+
if (failedReviews.length === 0)
|
|
250
|
+
return { isRetry: false, failedCriteria: [], fixInstructions: "" };
|
|
251
|
+
const latest = failedReviews[failedReviews.length - 1];
|
|
252
|
+
const ctx = latest.context ?? {};
|
|
253
|
+
const rawResults = ctx.criteria_results;
|
|
254
|
+
const failedCriteria = [];
|
|
255
|
+
if (Array.isArray(rawResults)) {
|
|
256
|
+
for (const cr of rawResults) {
|
|
257
|
+
if (cr && typeof cr === "object") {
|
|
258
|
+
const r = cr;
|
|
259
|
+
if (r.met === false && typeof r.criterion === "string") {
|
|
260
|
+
failedCriteria.push(r.criterion);
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
// Extract fix instructions from review content
|
|
266
|
+
const fixInstructions = latest.content ?? "";
|
|
267
|
+
return { isRetry: true, failedCriteria, fixInstructions };
|
|
268
|
+
}
|
|
269
|
+
export async function findRelatedEntities(task_id, project) {
|
|
270
|
+
// Phase 1 (pre-DC-T12): keyword search on task_id and project as fallback
|
|
271
|
+
// When DC-T12 ships, replace with get_linked(task_entity_id)
|
|
272
|
+
const results = [];
|
|
273
|
+
const seen = new Set();
|
|
274
|
+
// Search by task_id tag
|
|
275
|
+
const byTag = await queryEntities({ tag: task_id });
|
|
276
|
+
for (const e of byTag.entities) {
|
|
277
|
+
if (!seen.has(e.entity_id)) {
|
|
278
|
+
seen.add(e.entity_id);
|
|
279
|
+
results.push(e);
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
// Search by project (decisions and insights most relevant)
|
|
283
|
+
if (project && results.length < 6) {
|
|
284
|
+
const byProject = await queryEntities({ project, entity_type: "decision" });
|
|
285
|
+
for (const e of byProject.entities.slice(0, 3)) {
|
|
286
|
+
if (!seen.has(e.entity_id)) {
|
|
287
|
+
seen.add(e.entity_id);
|
|
288
|
+
results.push(e);
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
// Sort: decisions > insights > skills > other
|
|
293
|
+
const priority = {
|
|
294
|
+
decision: 0,
|
|
295
|
+
insight: 1,
|
|
296
|
+
skill: 2,
|
|
297
|
+
};
|
|
298
|
+
results.sort((a, b) => (priority[a.entity_type] ?? 9) - (priority[b.entity_type] ?? 9));
|
|
299
|
+
return results.slice(0, 8);
|
|
300
|
+
// cap at 8 entities for L3
|
|
301
|
+
}
|
|
302
|
+
export async function findRecentCompletions(project) {
|
|
303
|
+
if (!project)
|
|
304
|
+
return [];
|
|
305
|
+
const { records } = await readAllRecords({ type: "task_" });
|
|
306
|
+
const reviewed = records
|
|
307
|
+
.filter((r) => {
|
|
308
|
+
if (r.type !== "task_reviewed")
|
|
309
|
+
return false;
|
|
310
|
+
const ctx = r.context;
|
|
311
|
+
return ctx?.verdict === "pass" || ctx?.verdict === "pass_with_notes";
|
|
312
|
+
})
|
|
313
|
+
.sort((a, b) => (b._timestamp ?? "").localeCompare(a._timestamp ?? ""))
|
|
314
|
+
.slice(0, 10);
|
|
315
|
+
const results = [];
|
|
316
|
+
const seen = new Set();
|
|
317
|
+
for (const r of reviewed) {
|
|
318
|
+
const ctx = r.context;
|
|
319
|
+
const tid = typeof ctx?.task_id === "string" ? ctx.task_id : null;
|
|
320
|
+
if (!tid || seen.has(tid))
|
|
321
|
+
continue;
|
|
322
|
+
// Find task_created for this task to get project
|
|
323
|
+
const created = records.find((rec) => {
|
|
324
|
+
if (rec.type !== "task_created")
|
|
325
|
+
return false;
|
|
326
|
+
const c = rec.context;
|
|
327
|
+
return c?.task_id === tid;
|
|
328
|
+
});
|
|
329
|
+
if (!created)
|
|
330
|
+
continue;
|
|
331
|
+
const createdCtx = created.context;
|
|
332
|
+
if (typeof createdCtx?.project !== "string" ||
|
|
333
|
+
createdCtx.project.toLowerCase() !== project.toLowerCase())
|
|
334
|
+
continue;
|
|
335
|
+
seen.add(tid);
|
|
336
|
+
// Extract any deduction notes as gotchas
|
|
337
|
+
const rawDeductions = ctx?.deductions;
|
|
338
|
+
const gotcha = Array.isArray(rawDeductions) && rawDeductions.length > 0
|
|
339
|
+
? String(rawDeductions[0])
|
|
340
|
+
: undefined;
|
|
341
|
+
results.push({
|
|
342
|
+
task_id: tid,
|
|
343
|
+
summary: created.content ?? tid,
|
|
344
|
+
gotcha,
|
|
345
|
+
});
|
|
346
|
+
if (results.length >= 3)
|
|
347
|
+
break;
|
|
348
|
+
}
|
|
349
|
+
return results;
|
|
350
|
+
}
|
|
351
|
+
// Minimal set of gotchas relevant to coding tasks (from CLAUDE.md)
|
|
352
|
+
// These are embedded so the preamble works even when file reads are slow.
|
|
353
|
+
const CORE_GOTCHAS = {
|
|
354
|
+
datacore: [
|
|
355
|
+
"Domain logic in domain/, transport routing in transport/. Never mix. (Gotcha #1 equivalent)",
|
|
356
|
+
"log_event is the only real output — chat responses are ephemeral. (Gotcha #14)",
|
|
357
|
+
"task_completed proof is mandatory: commit hash, test output, files changed.",
|
|
358
|
+
"Never use `any` in TypeScript — ESLint enforces no-explicit-any. (Gotcha #10)",
|
|
359
|
+
"pnpm run check:all must pass before task_completed (format, lint, build, 217 tests).",
|
|
360
|
+
],
|
|
361
|
+
memobridge: [
|
|
362
|
+
"chrome.storage.local is async — cache in module variable on load for sync handlers.",
|
|
363
|
+
"pnpm run check must pass before task_completed.",
|
|
364
|
+
"log_event is the only real output. (Gotcha #14)",
|
|
365
|
+
],
|
|
366
|
+
};
|
|
367
|
+
export function getGotchas(project) {
|
|
368
|
+
if (!project)
|
|
369
|
+
return CORE_GOTCHAS["datacore"] ?? [];
|
|
370
|
+
return CORE_GOTCHAS[project.toLowerCase()] ?? CORE_GOTCHAS["datacore"] ?? [];
|
|
371
|
+
}
|
|
372
|
+
//# sourceMappingURL=warm-start-extractors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"warm-start-extractors.js","sourceRoot":"","sources":["../../src/domain/warm-start-extractors.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export interface WarmStartInput {
|
|
2
|
+
task_id: string;
|
|
3
|
+
agent: string;
|
|
4
|
+
budget_tokens?: number;
|
|
5
|
+
}
|
|
6
|
+
export interface WarmStartResult {
|
|
7
|
+
task_id: string;
|
|
8
|
+
agent: string;
|
|
9
|
+
preamble: string;
|
|
10
|
+
token_estimate: number;
|
|
11
|
+
layers_included: string[];
|
|
12
|
+
layers_dropped: string[];
|
|
13
|
+
assembled_at: string;
|
|
14
|
+
error?: string;
|
|
15
|
+
}
|
|
16
|
+
export declare function buildWarmStartPreamble(input: WarmStartInput): Promise<WarmStartResult>;
|
|
17
|
+
//# sourceMappingURL=warm-start.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"warm-start.d.ts","sourceRoot":"","sources":["../../src/domain/warm-start.ts"],"names":[],"mappings":"AA6BA,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AA4DD,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,cAAc,GACpB,OAAO,CAAC,eAAe,CAAC,CAwL1B"}
|