@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.
Files changed (154) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +198 -0
  3. package/config/default-triggers.json +119 -0
  4. package/dist/adapters/runtime-adapter.d.ts +124 -0
  5. package/dist/adapters/runtime-adapter.d.ts.map +1 -0
  6. package/dist/adapters/runtime-adapter.js +5 -0
  7. package/dist/adapters/runtime-adapter.js.map +1 -0
  8. package/dist/config/datacore-constants.d.ts +21 -0
  9. package/dist/config/datacore-constants.d.ts.map +1 -0
  10. package/dist/config/datacore-constants.js +68 -0
  11. package/dist/config/datacore-constants.js.map +1 -0
  12. package/dist/domain/embeddable.d.ts +19 -0
  13. package/dist/domain/embeddable.d.ts.map +1 -0
  14. package/dist/domain/embeddable.js +106 -0
  15. package/dist/domain/embeddable.js.map +1 -0
  16. package/dist/domain/gold-store.d.ts +11 -0
  17. package/dist/domain/gold-store.d.ts.map +1 -0
  18. package/dist/domain/gold-store.js +210 -0
  19. package/dist/domain/gold-store.js.map +1 -0
  20. package/dist/domain/inbox.d.ts +14 -0
  21. package/dist/domain/inbox.d.ts.map +1 -0
  22. package/dist/domain/inbox.js +138 -0
  23. package/dist/domain/inbox.js.map +1 -0
  24. package/dist/domain/office-status.d.ts +31 -0
  25. package/dist/domain/office-status.d.ts.map +1 -0
  26. package/dist/domain/office-status.js +138 -0
  27. package/dist/domain/office-status.js.map +1 -0
  28. package/dist/domain/questions.d.ts +3 -0
  29. package/dist/domain/questions.d.ts.map +1 -0
  30. package/dist/domain/questions.js +60 -0
  31. package/dist/domain/questions.js.map +1 -0
  32. package/dist/domain/run-manager.d.ts +14 -0
  33. package/dist/domain/run-manager.d.ts.map +1 -0
  34. package/dist/domain/run-manager.js +25 -0
  35. package/dist/domain/run-manager.js.map +1 -0
  36. package/dist/domain/task-event-index.d.ts +31 -0
  37. package/dist/domain/task-event-index.d.ts.map +1 -0
  38. package/dist/domain/task-event-index.js +117 -0
  39. package/dist/domain/task-event-index.js.map +1 -0
  40. package/dist/domain/tasks.d.ts +3 -0
  41. package/dist/domain/tasks.d.ts.map +1 -0
  42. package/dist/domain/tasks.js +112 -0
  43. package/dist/domain/tasks.js.map +1 -0
  44. package/dist/domain/warm-start-builders.d.ts +18 -0
  45. package/dist/domain/warm-start-builders.d.ts.map +1 -0
  46. package/dist/domain/warm-start-builders.js +157 -0
  47. package/dist/domain/warm-start-builders.js.map +1 -0
  48. package/dist/domain/warm-start-extractors.d.ts +37 -0
  49. package/dist/domain/warm-start-extractors.d.ts.map +1 -0
  50. package/dist/domain/warm-start-extractors.js +372 -0
  51. package/dist/domain/warm-start-extractors.js.map +1 -0
  52. package/dist/domain/warm-start.d.ts +17 -0
  53. package/dist/domain/warm-start.d.ts.map +1 -0
  54. package/dist/domain/warm-start.js +225 -0
  55. package/dist/domain/warm-start.js.map +1 -0
  56. package/dist/index.d.ts +7 -0
  57. package/dist/index.d.ts.map +1 -0
  58. package/dist/index.js +8 -0
  59. package/dist/index.js.map +1 -0
  60. package/dist/mcp-slim-ack.d.ts +12 -0
  61. package/dist/mcp-slim-ack.d.ts.map +1 -0
  62. package/dist/mcp-slim-ack.js +16 -0
  63. package/dist/mcp-slim-ack.js.map +1 -0
  64. package/dist/routing/capability-registry.d.ts +38 -0
  65. package/dist/routing/capability-registry.d.ts.map +1 -0
  66. package/dist/routing/capability-registry.js +52 -0
  67. package/dist/routing/capability-registry.js.map +1 -0
  68. package/dist/routing/runtime-target-resolver.d.ts +42 -0
  69. package/dist/routing/runtime-target-resolver.d.ts.map +1 -0
  70. package/dist/routing/runtime-target-resolver.js +139 -0
  71. package/dist/routing/runtime-target-resolver.js.map +1 -0
  72. package/dist/search/azure-search-client.d.ts +53 -0
  73. package/dist/search/azure-search-client.d.ts.map +1 -0
  74. package/dist/search/azure-search-client.js +191 -0
  75. package/dist/search/azure-search-client.js.map +1 -0
  76. package/dist/search/circuit-breaker.d.ts +46 -0
  77. package/dist/search/circuit-breaker.d.ts.map +1 -0
  78. package/dist/search/circuit-breaker.js +87 -0
  79. package/dist/search/circuit-breaker.js.map +1 -0
  80. package/dist/search/deep-search.d.ts +24 -0
  81. package/dist/search/deep-search.d.ts.map +1 -0
  82. package/dist/search/deep-search.js +98 -0
  83. package/dist/search/deep-search.js.map +1 -0
  84. package/dist/search/search.d.ts +3 -0
  85. package/dist/search/search.d.ts.map +1 -0
  86. package/dist/search/search.js +76 -0
  87. package/dist/search/search.js.map +1 -0
  88. package/dist/server.d.ts +3 -0
  89. package/dist/server.d.ts.map +1 -0
  90. package/dist/server.js +39 -0
  91. package/dist/server.js.map +1 -0
  92. package/dist/skills/index.d.ts +3 -0
  93. package/dist/skills/index.d.ts.map +1 -0
  94. package/dist/skills/index.js +8 -0
  95. package/dist/skills/index.js.map +1 -0
  96. package/dist/skills/knowledge.d.ts +3 -0
  97. package/dist/skills/knowledge.d.ts.map +1 -0
  98. package/dist/skills/knowledge.js +78 -0
  99. package/dist/skills/knowledge.js.map +1 -0
  100. package/dist/skills/task-workflow.d.ts +3 -0
  101. package/dist/skills/task-workflow.d.ts.map +1 -0
  102. package/dist/skills/task-workflow.js +205 -0
  103. package/dist/skills/task-workflow.js.map +1 -0
  104. package/dist/storage/active-backend.d.ts +4 -0
  105. package/dist/storage/active-backend.d.ts.map +1 -0
  106. package/dist/storage/active-backend.js +12 -0
  107. package/dist/storage/active-backend.js.map +1 -0
  108. package/dist/storage/backend.d.ts +12 -0
  109. package/dist/storage/backend.d.ts.map +1 -0
  110. package/dist/storage/backend.js +5 -0
  111. package/dist/storage/backend.js.map +1 -0
  112. package/dist/storage/cosmos-client.d.ts +6 -0
  113. package/dist/storage/cosmos-client.d.ts.map +1 -0
  114. package/dist/storage/cosmos-client.js +38 -0
  115. package/dist/storage/cosmos-client.js.map +1 -0
  116. package/dist/storage/lancedb-backend.d.ts +13 -0
  117. package/dist/storage/lancedb-backend.d.ts.map +1 -0
  118. package/dist/storage/lancedb-backend.js +373 -0
  119. package/dist/storage/lancedb-backend.js.map +1 -0
  120. package/dist/storage/store.d.ts +8 -0
  121. package/dist/storage/store.d.ts.map +1 -0
  122. package/dist/storage/store.js +294 -0
  123. package/dist/storage/store.js.map +1 -0
  124. package/dist/storage/task-compaction.d.ts +12 -0
  125. package/dist/storage/task-compaction.d.ts.map +1 -0
  126. package/dist/storage/task-compaction.js +112 -0
  127. package/dist/storage/task-compaction.js.map +1 -0
  128. package/dist/storage/task-context-snapshot.d.ts +6 -0
  129. package/dist/storage/task-context-snapshot.d.ts.map +1 -0
  130. package/dist/storage/task-context-snapshot.js +87 -0
  131. package/dist/storage/task-context-snapshot.js.map +1 -0
  132. package/dist/storage/trigger-engine.d.ts +39 -0
  133. package/dist/storage/trigger-engine.d.ts.map +1 -0
  134. package/dist/storage/trigger-engine.js +212 -0
  135. package/dist/storage/trigger-engine.js.map +1 -0
  136. package/dist/tools.d.ts +3 -0
  137. package/dist/tools.d.ts.map +1 -0
  138. package/dist/tools.js +413 -0
  139. package/dist/tools.js.map +1 -0
  140. package/dist/transport/client.d.ts +68 -0
  141. package/dist/transport/client.d.ts.map +1 -0
  142. package/dist/transport/client.js +210 -0
  143. package/dist/transport/client.js.map +1 -0
  144. package/dist/transport/http-server.d.ts +3 -0
  145. package/dist/transport/http-server.d.ts.map +1 -0
  146. package/dist/transport/http-server.js +337 -0
  147. package/dist/transport/http-server.js.map +1 -0
  148. package/dist/types.d.ts +185 -0
  149. package/dist/types.d.ts.map +1 -0
  150. package/dist/types.js +3 -0
  151. package/dist/types.js.map +1 -0
  152. package/package.json +71 -0
  153. package/scripts/run-server.mjs +3 -0
  154. package/scripts/stdio-only.mjs +23 -0
@@ -0,0 +1,138 @@
1
+ // office-status.ts — What does the whole office look like right now?
2
+ // Domain logic for /status endpoint. Aggregates task wall, meeting
3
+ // rooms, agent desks, operations, and library into one view.
4
+ import { searchEvents } from "../search/search.js";
5
+ import { queryEntities } from "./gold-store.js";
6
+ import { loadTaskEventIndex } from "./task-event-index.js";
7
+ import { isCosmosEnabled } from "../storage/cosmos-client.js";
8
+ export async function buildStatus() {
9
+ const now = Date.now();
10
+ const todayStart = new Date();
11
+ todayStart.setHours(0, 0, 0, 0);
12
+ const todayIso = todayStart.toISOString();
13
+ // Task wall
14
+ const taskWall = {
15
+ created: 0,
16
+ in_progress: 0,
17
+ review: 0,
18
+ blocked: 0,
19
+ completed_today: 0,
20
+ };
21
+ const agents = {};
22
+ const { tasks: taskMap } = await loadTaskEventIndex();
23
+ function updateDesk(agent, status, timestamp, taskId) {
24
+ const existing = agents[agent];
25
+ if (!existing || (timestamp ?? "") > (existing.last_seen ?? "")) {
26
+ agents[agent] = {
27
+ status,
28
+ task: taskId,
29
+ last_seen: timestamp ?? undefined,
30
+ };
31
+ }
32
+ }
33
+ for (const timeline of taskMap.values()) {
34
+ const reviewAssignments = timeline.reviewAssignments.filter((assignment) => !timeline.reviewedTimestamps.some((ts) => ts >= assignment.timestamp));
35
+ if (reviewAssignments.length > 0) {
36
+ taskWall.review++;
37
+ for (const assignment of reviewAssignments) {
38
+ updateDesk(assignment.assignedTo, "review_needed", assignment.timestamp, timeline.taskId);
39
+ }
40
+ continue;
41
+ }
42
+ if (timeline.blocked && timeline.status !== "failed") {
43
+ taskWall.blocked++;
44
+ if (timeline.assignedTo) {
45
+ updateDesk(timeline.assignedTo, "blocked", timeline.latestTimestamp, timeline.taskId);
46
+ }
47
+ continue;
48
+ }
49
+ if (timeline.status === "in_progress" || timeline.status === "rework") {
50
+ taskWall.in_progress++;
51
+ if (timeline.assignedTo) {
52
+ updateDesk(timeline.assignedTo, timeline.status === "rework" ? "rework" : "busy", timeline.latestTimestamp, timeline.taskId);
53
+ }
54
+ continue;
55
+ }
56
+ if (["assigned", "created", "unknown"].includes(timeline.status)) {
57
+ taskWall.created++;
58
+ if (timeline.assignedTo) {
59
+ updateDesk(timeline.assignedTo, "assigned", timeline.latestTimestamp, timeline.taskId);
60
+ }
61
+ }
62
+ if (timeline.status === "completed" && timeline.assignedTo) {
63
+ updateDesk(timeline.assignedTo, "completed", timeline.latestTimestamp, timeline.taskId);
64
+ }
65
+ }
66
+ for (const timeline of taskMap.values()) {
67
+ const completedToday = timeline.reviewedTimestamps.some((ts) => ts >= todayIso);
68
+ if (completedToday)
69
+ taskWall.completed_today++;
70
+ }
71
+ // Meeting rooms (open RFCs)
72
+ const rfcSearch = await searchEvents({
73
+ query: "RFC-",
74
+ type: "proposal",
75
+ maxResults: 10,
76
+ });
77
+ const openRfcs = [];
78
+ for (const r of rfcSearch.results) {
79
+ const rfcMatch = (r.snippet ?? "").match(/RFC-\d+/);
80
+ if (rfcMatch) {
81
+ const decisionSearch = await searchEvents({
82
+ query: rfcMatch[0],
83
+ type: "decision",
84
+ maxResults: 1,
85
+ });
86
+ if (decisionSearch.totalMatches === 0) {
87
+ openRfcs.push({
88
+ rfc_id: rfcMatch[0],
89
+ age_hours: Math.round((now - new Date(r.timestamp ?? "").getTime()) / 3600000),
90
+ });
91
+ }
92
+ }
93
+ }
94
+ // Operations (triggers fired today)
95
+ const triggerSearch = await searchEvents({
96
+ query: "trigger_fired",
97
+ type: "trigger_fired",
98
+ maxResults: 50,
99
+ });
100
+ let triggersToday = 0;
101
+ for (const t of triggerSearch.results) {
102
+ if ((t.timestamp ?? "") >= todayIso)
103
+ triggersToday++;
104
+ }
105
+ // Escalations: count currently blocked tasks
106
+ const escalations = taskWall.blocked;
107
+ // Library (new Gold entities today)
108
+ let newDecisionsToday = 0;
109
+ let newLessonsToday = 0;
110
+ if (isCosmosEnabled()) {
111
+ try {
112
+ const factsResult = await queryEntities({});
113
+ for (const e of factsResult.entities) {
114
+ if (e.created_at >= todayIso) {
115
+ if (e.entity_type === "decision")
116
+ newDecisionsToday++;
117
+ if (e.entity_type === "insight")
118
+ newLessonsToday++;
119
+ }
120
+ }
121
+ }
122
+ catch {
123
+ newDecisionsToday = 0;
124
+ newLessonsToday = 0;
125
+ }
126
+ }
127
+ return {
128
+ task_wall: taskWall,
129
+ meeting_rooms: { open_rfcs: openRfcs, decided_today: 0 },
130
+ desks: agents,
131
+ operations: { triggers_fired_today: triggersToday, escalations },
132
+ library: {
133
+ new_decisions_today: newDecisionsToday,
134
+ new_lessons_today: newLessonsToday,
135
+ },
136
+ };
137
+ }
138
+ //# sourceMappingURL=office-status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"office-status.js","sourceRoot":"","sources":["../../src/domain/office-status.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { QuestionInput, QuestionResult } from "../types.js";
2
+ export declare function getQuestions({ directed_to, status, task_id, limit, }?: QuestionInput): Promise<QuestionResult>;
3
+ //# sourceMappingURL=questions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"questions.d.ts","sourceRoot":"","sources":["../../src/domain/questions.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAEV,aAAa,EAEb,cAAc,EACf,MAAM,aAAa,CAAC;AAGrB,wBAAsB,YAAY,CAAC,EACjC,WAAW,EACX,MAAe,EACf,OAAO,EACP,KAAU,GACX,GAAE,aAAkB,GAAG,OAAO,CAAC,cAAc,CAAC,CAkE9C"}
@@ -0,0 +1,60 @@
1
+ // questions.ts — How do AI agents ask each other questions asynchronously?
2
+ import { readAllRecords } from "../storage/store.js";
3
+ export async function getQuestions({ directed_to, status = "open", task_id, limit = 10, } = {}) {
4
+ const { bronzeDir, records } = await readAllRecords({});
5
+ // Collect all question and answer events
6
+ const questions = records.filter((r) => r.type === "question");
7
+ const answers = records.filter((r) => r.type === "answer");
8
+ // Index answers by thread_id for fast lookup
9
+ const answerMap = new Map();
10
+ for (const a of answers) {
11
+ const tid = a.context?.thread_id;
12
+ if (tid)
13
+ answerMap.set(tid, a);
14
+ }
15
+ const results = [];
16
+ for (const q of questions) {
17
+ const ctx = q.context ?? {};
18
+ const threadId = ctx.thread_id ?? "";
19
+ if (!threadId)
20
+ continue;
21
+ const answerRecord = answerMap.get(threadId);
22
+ const isAnswered = !!answerRecord;
23
+ // Filter by status
24
+ if (status === "open" && isAnswered)
25
+ continue;
26
+ if (status === "answered" && !isAnswered)
27
+ continue;
28
+ // Filter by directed_to
29
+ const directedTo = ctx.directed_to ?? null;
30
+ if (directed_to && directedTo?.toLowerCase() !== directed_to.toLowerCase())
31
+ continue;
32
+ // Filter by task_id
33
+ const qTaskId = ctx.task_id ?? null;
34
+ if (task_id && qTaskId !== task_id)
35
+ continue;
36
+ const answerCtx = answerRecord
37
+ ? (answerRecord.context ?? {})
38
+ : {};
39
+ results.push({
40
+ thread_id: threadId,
41
+ question: q.content ?? "",
42
+ asked_by: ctx.asked_by ?? q._source ?? null,
43
+ directed_to: directedTo,
44
+ task_id: qTaskId,
45
+ status: isAnswered ? "answered" : "open",
46
+ asked_at: q._timestamp ?? null,
47
+ answered_at: answerRecord?._timestamp ?? null,
48
+ answer: answerRecord?.content ?? null,
49
+ answered_by: answerCtx.answered_by ?? answerRecord?._source ?? null,
50
+ });
51
+ }
52
+ // Sort newest first
53
+ results.sort((a, b) => (b.asked_at ?? "").localeCompare(a.asked_at ?? ""));
54
+ return {
55
+ bronzeDir,
56
+ total: results.length,
57
+ questions: results.slice(0, limit),
58
+ };
59
+ }
60
+ //# sourceMappingURL=questions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"questions.js","sourceRoot":"","sources":["../../src/domain/questions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ export interface ActiveRun {
2
+ run_id: string;
3
+ task_id: string;
4
+ started_at: string;
5
+ agent: string;
6
+ }
7
+ declare const activeRuns: Map<string, ActiveRun>;
8
+ export declare function generateRunId(taskId: string): string;
9
+ export declare function registerActiveRun(run: ActiveRun): ActiveRun;
10
+ export declare function getActiveRun(taskId: string): ActiveRun | undefined;
11
+ export declare function completeActiveRun(taskId: string): ActiveRun | undefined;
12
+ export declare function listActiveRuns(): ActiveRun[];
13
+ export { activeRuns as activeRunsMap };
14
+ //# sourceMappingURL=run-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-manager.d.ts","sourceRoot":"","sources":["../../src/domain/run-manager.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,QAAA,MAAM,UAAU,wBAA+B,CAAC;AAEhD,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAIpD;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,SAAS,GAAG,SAAS,CAG3D;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAElE;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAIvE;AAED,wBAAgB,cAAc,IAAI,SAAS,EAAE,CAE5C;AAED,OAAO,EAAE,UAAU,IAAI,aAAa,EAAE,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { randomUUID } from "node:crypto";
2
+ const activeRuns = new Map();
3
+ export function generateRunId(taskId) {
4
+ const trimmed = (taskId ?? "").trim();
5
+ const safeTaskId = trimmed.length > 0 ? trimmed.replace(/\s+/g, "-") : "task";
6
+ return `${safeTaskId}-run-${randomUUID()}`;
7
+ }
8
+ export function registerActiveRun(run) {
9
+ activeRuns.set(run.task_id, run);
10
+ return run;
11
+ }
12
+ export function getActiveRun(taskId) {
13
+ return activeRuns.get(taskId);
14
+ }
15
+ export function completeActiveRun(taskId) {
16
+ const run = activeRuns.get(taskId);
17
+ if (run)
18
+ activeRuns.delete(taskId);
19
+ return run;
20
+ }
21
+ export function listActiveRuns() {
22
+ return [...activeRuns.values()];
23
+ }
24
+ export { activeRuns as activeRunsMap };
25
+ //# sourceMappingURL=run-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-manager.js","sourceRoot":"","sources":["../../src/domain/run-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AASzC,MAAM,UAAU,GAAG,IAAI,GAAG,EAAqB,CAAC;AAEhD,MAAM,UAAU,aAAa,CAAC,MAAc;IAC1C,MAAM,OAAO,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACtC,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAC9E,OAAO,GAAG,UAAU,QAAQ,UAAU,EAAE,EAAE,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,GAAc;IAC9C,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACjC,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,MAAc;IACzC,OAAO,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,MAAc;IAC9C,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACnC,IAAI,GAAG;QAAE,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACnC,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,OAAO,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;AAClC,CAAC;AAED,OAAO,EAAE,UAAU,IAAI,aAAa,EAAE,CAAC"}
@@ -0,0 +1,31 @@
1
+ export interface TaskAssignment {
2
+ taskId: string;
3
+ assignedTo: string;
4
+ timestamp: string;
5
+ isReview: boolean;
6
+ source: string | null;
7
+ content: string | null;
8
+ }
9
+ export interface TaskTimeline {
10
+ taskId: string;
11
+ status: string;
12
+ assignedTo: string | null;
13
+ latestType: string | null;
14
+ latestTimestamp: string | null;
15
+ latestContent: string | null;
16
+ createdTimestamp: string | null;
17
+ createdContent: string | null;
18
+ assignments: TaskAssignment[];
19
+ reviewAssignments: TaskAssignment[];
20
+ startedTimestamps: string[];
21
+ completedTimestamps: string[];
22
+ reviewedTimestamps: string[];
23
+ blocked: boolean;
24
+ contextTimestamps: string[];
25
+ }
26
+ export interface TaskEventIndex {
27
+ tasks: Map<string, TaskTimeline>;
28
+ taskContextIds: Set<string>;
29
+ }
30
+ export declare function loadTaskEventIndex(): Promise<TaskEventIndex>;
31
+ //# sourceMappingURL=task-event-index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-event-index.d.ts","sourceRoot":"","sources":["../../src/domain/task-event-index.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,WAAW,EAAE,cAAc,EAAE,CAAC;IAC9B,iBAAiB,EAAE,cAAc,EAAE,CAAC;IACpC,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,iBAAiB,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACjC,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC7B;AA8BD,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,cAAc,CAAC,CAsGlE"}
@@ -0,0 +1,117 @@
1
+ // task-event-index.ts — Aggregate task-related events for inbox and status views.
2
+ import { readAllRecords } from "../storage/store.js";
3
+ function ensureTimeline(map, taskId) {
4
+ let timeline = map.get(taskId);
5
+ if (!timeline) {
6
+ timeline = {
7
+ taskId,
8
+ status: "unknown",
9
+ assignedTo: null,
10
+ latestType: null,
11
+ latestTimestamp: null,
12
+ latestContent: null,
13
+ createdTimestamp: null,
14
+ createdContent: null,
15
+ assignments: [],
16
+ reviewAssignments: [],
17
+ startedTimestamps: [],
18
+ completedTimestamps: [],
19
+ reviewedTimestamps: [],
20
+ blocked: false,
21
+ contextTimestamps: [],
22
+ };
23
+ map.set(taskId, timeline);
24
+ }
25
+ return timeline;
26
+ }
27
+ export async function loadTaskEventIndex() {
28
+ const { records } = await readAllRecords({ type: "task_" });
29
+ const tasks = new Map();
30
+ const taskContextIds = new Set();
31
+ const sorted = [...records].sort((a, b) => (a._timestamp ?? "").localeCompare(b._timestamp ?? ""));
32
+ for (const record of sorted) {
33
+ const context = record.context ?? {};
34
+ const taskId = typeof context.task_id === "string" ? context.task_id : null;
35
+ const timestamp = record._timestamp ?? new Date().toISOString();
36
+ if (record.type === "task_context" && taskId) {
37
+ taskContextIds.add(taskId);
38
+ }
39
+ if (!taskId)
40
+ continue;
41
+ const timeline = ensureTimeline(tasks, taskId);
42
+ timeline.latestType = record.type ?? timeline.latestType;
43
+ timeline.latestTimestamp = record._timestamp ?? timeline.latestTimestamp;
44
+ if (record.type === "task_created" && !timeline.createdTimestamp) {
45
+ timeline.createdTimestamp = timestamp;
46
+ timeline.createdContent = record.content ?? null;
47
+ if (timeline.status === "unknown") {
48
+ timeline.status = "created";
49
+ }
50
+ }
51
+ timeline.latestContent = record.content ?? timeline.latestContent;
52
+ if (typeof context.status === "string") {
53
+ timeline.status = context.status;
54
+ }
55
+ if (typeof context.assigned_to === "string") {
56
+ timeline.assignedTo = context.assigned_to;
57
+ }
58
+ switch (record.type) {
59
+ case "task_assigned": {
60
+ const assignedTo = typeof context.assigned_to === "string" ? context.assigned_to : null;
61
+ if (assignedTo) {
62
+ const assignment = {
63
+ taskId,
64
+ assignedTo,
65
+ timestamp,
66
+ isReview: context.review === true,
67
+ source: record._source ?? null,
68
+ content: record.content ?? null,
69
+ };
70
+ if (assignment.isReview) {
71
+ timeline.reviewAssignments.push(assignment);
72
+ timeline.status = "review";
73
+ }
74
+ else {
75
+ timeline.assignments.push(assignment);
76
+ if (timeline.status === "unknown")
77
+ timeline.status = "assigned";
78
+ }
79
+ }
80
+ break;
81
+ }
82
+ case "task_started":
83
+ case "task_progress":
84
+ timeline.startedTimestamps.push(timestamp);
85
+ timeline.status = "in_progress";
86
+ break;
87
+ case "task_blocked":
88
+ timeline.blocked = true;
89
+ timeline.status = "blocked";
90
+ break;
91
+ case "task_unblocked":
92
+ timeline.blocked = false;
93
+ timeline.status = "in_progress";
94
+ break;
95
+ case "task_completed":
96
+ timeline.completedTimestamps.push(timestamp);
97
+ timeline.status = "completed";
98
+ break;
99
+ case "task_failed":
100
+ timeline.status = "failed";
101
+ break;
102
+ case "task_reviewed":
103
+ timeline.reviewedTimestamps.push(timestamp);
104
+ if (context.verdict === "fail") {
105
+ timeline.status = "rework";
106
+ }
107
+ break;
108
+ case "task_context":
109
+ timeline.contextTimestamps.push(timestamp);
110
+ break;
111
+ default:
112
+ break;
113
+ }
114
+ }
115
+ return { tasks, taskContextIds };
116
+ }
117
+ //# sourceMappingURL=task-event-index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-event-index.js","sourceRoot":"","sources":["../../src/domain/task-event-index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { TaskInput, TaskResult } from "../types.js";
2
+ export declare function getTasks({ status, assigned_to, task_type, task_id, limit, }?: TaskInput): Promise<TaskResult>;
3
+ //# sourceMappingURL=tasks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../../src/domain/tasks.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAEV,SAAS,EAGT,UAAU,EACX,MAAM,aAAa,CAAC;AAcrB,wBAAsB,QAAQ,CAAC,EAC7B,MAAiB,EACjB,WAAW,EACX,SAAS,EACT,OAAO,EACP,KAAU,GACX,GAAE,SAAc,GAAG,OAAO,CAAC,UAAU,CAAC,CAqHtC"}
@@ -0,0 +1,112 @@
1
+ // tasks.ts — How are tasks tracked?
2
+ import { readAllRecords, readEventsByTask } from "../storage/store.js";
3
+ function formatTaskEvent(record) {
4
+ return {
5
+ eventId: record._event_id ?? null,
6
+ timestamp: record._timestamp ?? null,
7
+ source: record._source ?? record.source ?? null,
8
+ type: record.type ?? null,
9
+ content: record.content ?? null,
10
+ context: record.context ?? null,
11
+ };
12
+ }
13
+ export async function getTasks({ status = "active", assigned_to, task_type, task_id, limit = 20, } = {}) {
14
+ const { bronzeDir, records, parseErrors } = await readAllRecords({
15
+ type: "task_",
16
+ });
17
+ const taskEvents = records.filter((r) => (r.type ?? "").startsWith("task_"));
18
+ if (task_id) {
19
+ const { records: briefingRecords } = await readAllRecords({
20
+ type: "session_briefing",
21
+ });
22
+ const taskSlice = await readEventsByTask(task_id);
23
+ const briefingSlice = briefingRecords.filter((r) => r.type === "session_briefing" &&
24
+ r.context?.task_id === task_id);
25
+ const history = [...taskSlice, ...briefingSlice].sort((a, b) => (a._timestamp ?? "").localeCompare(b._timestamp ?? ""));
26
+ return {
27
+ bronzeDir,
28
+ mode: "history",
29
+ task_id,
30
+ events: history.map(formatTaskEvent),
31
+ totalEvents: history.length,
32
+ };
33
+ }
34
+ const taskMap = new Map();
35
+ for (const record of taskEvents) {
36
+ const tid = record.context?.task_id;
37
+ if (!tid)
38
+ continue;
39
+ if (!taskMap.has(tid))
40
+ taskMap.set(tid, []);
41
+ taskMap.get(tid).push(record);
42
+ }
43
+ const ACTIVE_STATUSES = new Set([
44
+ "created",
45
+ "assigned",
46
+ "in_progress",
47
+ "blocked",
48
+ "rework",
49
+ ]);
50
+ const tasks = [];
51
+ for (const [tid, events] of taskMap) {
52
+ events.sort((a, b) => (a._timestamp ?? "").localeCompare(b._timestamp ?? ""));
53
+ const latest = events[events.length - 1];
54
+ const created = events[0];
55
+ const mergedContext = {};
56
+ for (const ev of events) {
57
+ if (ev.context)
58
+ Object.assign(mergedContext, ev.context);
59
+ }
60
+ const currentStatus = mergedContext.status ?? "unknown";
61
+ if (status === "active" && !ACTIVE_STATUSES.has(currentStatus))
62
+ continue;
63
+ if (status === "completed" && currentStatus !== "completed")
64
+ continue;
65
+ if (status === "failed" && currentStatus !== "failed")
66
+ continue;
67
+ if (status === "rework" && currentStatus !== "rework")
68
+ continue;
69
+ if (assigned_to &&
70
+ (mergedContext.assigned_to ?? "").toLowerCase() !==
71
+ assigned_to.toLowerCase())
72
+ continue;
73
+ if (task_type &&
74
+ (mergedContext.task_type ?? "").toLowerCase() !==
75
+ task_type.toLowerCase())
76
+ continue;
77
+ tasks.push({
78
+ task_id: tid,
79
+ status: currentStatus,
80
+ task_type: mergedContext.task_type ?? null,
81
+ assigned_to: mergedContext.assigned_to ?? null,
82
+ score: mergedContext.score ?? null,
83
+ problem: mergedContext.problem ?? null,
84
+ impact: mergedContext.impact ?? null,
85
+ project: mergedContext.project ?? null,
86
+ workflow_stage: mergedContext.workflow_stage ?? null,
87
+ phase: mergedContext.phase ?? null,
88
+ depends_on: mergedContext.depends_on ?? null,
89
+ pattern: mergedContext.pattern ?? null,
90
+ acceptance: mergedContext.acceptance ?? null,
91
+ spec_file: mergedContext.spec_file ?? null,
92
+ summary: created.content ?? null,
93
+ latest_update: latest.content ?? null,
94
+ latest_type: latest.type ?? null,
95
+ created_at: created._timestamp ?? null,
96
+ updated_at: latest._timestamp ?? null,
97
+ event_count: events.length,
98
+ tags: mergedContext.tags ?? null,
99
+ lessons: mergedContext.lessons ?? null,
100
+ });
101
+ }
102
+ tasks.sort((a, b) => (b.updated_at ?? "").localeCompare(a.updated_at ?? ""));
103
+ return {
104
+ bronzeDir,
105
+ mode: "board",
106
+ status_filter: status,
107
+ total_tasks: tasks.length,
108
+ tasks: tasks.slice(0, limit),
109
+ parseErrors,
110
+ };
111
+ }
112
+ //# sourceMappingURL=tasks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../src/domain/tasks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type { GoldEntity } from "../types.js";
2
+ export declare function buildL0Identity(agent: string, task_id: string, format: "bullets" | "prose"): string;
3
+ export declare function buildL1TaskSpec(taskCreatedContent: string, acceptanceCriteria: string[], specFile: string | null, _format: "bullets" | "prose"): string;
4
+ export declare function buildL2ProjectContext(gotchas: string[], format: "bullets" | "prose"): string;
5
+ export declare function buildL3KnowledgeGraph(entities: GoldEntity[], selfContained: boolean, format: "bullets" | "prose"): string;
6
+ export declare function buildL4RecentCompletions(completions: Array<{
7
+ task_id: string;
8
+ summary: string;
9
+ gotcha?: string;
10
+ }>, format: "bullets" | "prose"): string;
11
+ export declare function buildL5RetryContext(failedCriteria: string[], fixInstructions: string, format: "bullets" | "prose"): string;
12
+ export declare function buildLA_AgentJournal(journal: Record<string, unknown>, format: "bullets" | "prose"): string;
13
+ export declare function buildLB_TaskCheckpoint(checkpointContent: string, format: "bullets" | "prose"): string;
14
+ export declare function buildL6FileManifest(files: Array<{
15
+ path: string;
16
+ action: "CREATE" | "MODIFY" | "DELETE";
17
+ }>, format: "bullets" | "prose"): string;
18
+ //# sourceMappingURL=warm-start-builders.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"warm-start-builders.d.ts","sourceRoot":"","sources":["../../src/domain/warm-start-builders.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,wBAAgB,eAAe,CAC7B,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,SAAS,GAAG,OAAO,GAC1B,MAAM,CAmBR;AAED,wBAAgB,eAAe,CAC7B,kBAAkB,EAAE,MAAM,EAC1B,kBAAkB,EAAE,MAAM,EAAE,EAC5B,QAAQ,EAAE,MAAM,GAAG,IAAI,EACvB,OAAO,EAAE,SAAS,GAAG,OAAO,GAC3B,MAAM,CAYR;AAED,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,EAAE,EACjB,MAAM,EAAE,SAAS,GAAG,OAAO,GAC1B,MAAM,CAWR;AAED,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,UAAU,EAAE,EACtB,aAAa,EAAE,OAAO,EACtB,MAAM,EAAE,SAAS,GAAG,OAAO,GAC1B,MAAM,CAqBR;AAED,wBAAgB,wBAAwB,CACtC,WAAW,EAAE,KAAK,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,EACzE,MAAM,EAAE,SAAS,GAAG,OAAO,GAC1B,MAAM,CAcR;AAED,wBAAgB,mBAAmB,CACjC,cAAc,EAAE,MAAM,EAAE,EACxB,eAAe,EAAE,MAAM,EACvB,MAAM,EAAE,SAAS,GAAG,OAAO,GAC1B,MAAM,CAaR;AAED,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,MAAM,EAAE,SAAS,GAAG,OAAO,GAC1B,MAAM,CAgCR;AAED,wBAAgB,sBAAsB,CACpC,iBAAiB,EAAE,MAAM,EACzB,MAAM,EAAE,SAAS,GAAG,OAAO,GAC1B,MAAM,CAUR;AAED,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAA;CAAE,CAAC,EACtE,MAAM,EAAE,SAAS,GAAG,OAAO,GAC1B,MAAM,CAcR"}