@agents-tower/core 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (178) hide show
  1. package/dist/adapters/claude.d.ts +2 -0
  2. package/dist/adapters/claude.js +43 -0
  3. package/dist/adapters/claude.js.map +1 -0
  4. package/dist/adapters/codex-cloud.d.ts +4 -0
  5. package/dist/adapters/codex-cloud.js +80 -0
  6. package/dist/adapters/codex-cloud.js.map +1 -0
  7. package/dist/adapters/codex-local.d.ts +17 -0
  8. package/dist/adapters/codex-local.js +180 -0
  9. package/dist/adapters/codex-local.js.map +1 -0
  10. package/dist/adapters/cursor-cloud.d.ts +2 -0
  11. package/dist/adapters/cursor-cloud.js +54 -0
  12. package/dist/adapters/cursor-cloud.js.map +1 -0
  13. package/dist/adapters/cursor-local.d.ts +2 -0
  14. package/dist/adapters/cursor-local.js +37 -0
  15. package/dist/adapters/cursor-local.js.map +1 -0
  16. package/dist/adapters/helpers.d.ts +15 -0
  17. package/dist/adapters/helpers.js +33 -0
  18. package/dist/adapters/helpers.js.map +1 -0
  19. package/dist/adapters/hermes.d.ts +2 -0
  20. package/dist/adapters/hermes.js +41 -0
  21. package/dist/adapters/hermes.js.map +1 -0
  22. package/dist/adapters/index.d.ts +2 -0
  23. package/dist/adapters/index.js +37 -0
  24. package/dist/adapters/index.js.map +1 -0
  25. package/dist/adapters/openclaw.d.ts +2 -0
  26. package/dist/adapters/openclaw.js +41 -0
  27. package/dist/adapters/openclaw.js.map +1 -0
  28. package/dist/adapters/presence.d.ts +2 -0
  29. package/dist/adapters/presence.js +36 -0
  30. package/dist/adapters/presence.js.map +1 -0
  31. package/dist/adapters/static-source.d.ts +15 -0
  32. package/dist/adapters/static-source.js +41 -0
  33. package/dist/adapters/static-source.js.map +1 -0
  34. package/dist/adapters/types.d.ts +44 -0
  35. package/dist/adapters/types.js +3 -0
  36. package/dist/adapters/types.js.map +1 -0
  37. package/dist/app-server.d.ts +94 -0
  38. package/dist/app-server.js +382 -0
  39. package/dist/app-server.js.map +1 -0
  40. package/dist/app-settings.d.ts +52 -0
  41. package/dist/app-settings.js +268 -0
  42. package/dist/app-settings.js.map +1 -0
  43. package/dist/appearance.d.ts +6 -0
  44. package/dist/appearance.js +84 -0
  45. package/dist/appearance.js.map +1 -0
  46. package/dist/aseprite.d.ts +4 -0
  47. package/dist/aseprite.js +42 -0
  48. package/dist/aseprite.js.map +1 -0
  49. package/dist/claude-agent-sdk.d.ts +44 -0
  50. package/dist/claude-agent-sdk.js +347 -0
  51. package/dist/claude-agent-sdk.js.map +1 -0
  52. package/dist/claude-home-cache.d.ts +61 -0
  53. package/dist/claude-home-cache.js +438 -0
  54. package/dist/claude-home-cache.js.map +1 -0
  55. package/dist/claude.d.ts +154 -0
  56. package/dist/claude.js +3495 -0
  57. package/dist/claude.js.map +1 -0
  58. package/dist/cloud.d.ts +2 -0
  59. package/dist/cloud.js +25 -0
  60. package/dist/cloud.js.map +1 -0
  61. package/dist/codex-command.d.ts +25 -0
  62. package/dist/codex-command.js +235 -0
  63. package/dist/codex-command.js.map +1 -0
  64. package/dist/codex-session-files.d.ts +8 -0
  65. package/dist/codex-session-files.js +509 -0
  66. package/dist/codex-session-files.js.map +1 -0
  67. package/dist/codex-thread-query.d.ts +14 -0
  68. package/dist/codex-thread-query.js +82 -0
  69. package/dist/codex-thread-query.js.map +1 -0
  70. package/dist/cursor-cloud-data.d.ts +34 -0
  71. package/dist/cursor-cloud-data.js +344 -0
  72. package/dist/cursor-cloud-data.js.map +1 -0
  73. package/dist/cursor-lib/local-discovery.d.ts +17 -0
  74. package/dist/cursor-lib/local-discovery.js +251 -0
  75. package/dist/cursor-lib/local-discovery.js.map +1 -0
  76. package/dist/cursor-lib/shared.d.ts +5 -0
  77. package/dist/cursor-lib/shared.js +88 -0
  78. package/dist/cursor-lib/shared.js.map +1 -0
  79. package/dist/cursor.d.ts +8 -0
  80. package/dist/cursor.js +1584 -0
  81. package/dist/cursor.js.map +1 -0
  82. package/dist/domain/codex-turn-semantics.d.ts +4 -0
  83. package/dist/domain/codex-turn-semantics.js +49 -0
  84. package/dist/domain/codex-turn-semantics.js.map +1 -0
  85. package/dist/domain/workload-policy.d.ts +8 -0
  86. package/dist/domain/workload-policy.js +268 -0
  87. package/dist/domain/workload-policy.js.map +1 -0
  88. package/dist/domain/workspace-activity.d.ts +10 -0
  89. package/dist/domain/workspace-activity.js +372 -0
  90. package/dist/domain/workspace-activity.js.map +1 -0
  91. package/dist/goal.d.ts +11 -0
  92. package/dist/goal.js +76 -0
  93. package/dist/goal.js.map +1 -0
  94. package/dist/hermes-hook-install.d.ts +12 -0
  95. package/dist/hermes-hook-install.js +335 -0
  96. package/dist/hermes-hook-install.js.map +1 -0
  97. package/dist/hermes.d.ts +97 -0
  98. package/dist/hermes.js +2446 -0
  99. package/dist/hermes.js.map +1 -0
  100. package/dist/index.d.ts +28 -0
  101. package/dist/index.js +47 -0
  102. package/dist/index.js.map +1 -0
  103. package/dist/live-monitor-lib/events.d.ts +43 -0
  104. package/dist/live-monitor-lib/events.js +1463 -0
  105. package/dist/live-monitor-lib/events.js.map +1 -0
  106. package/dist/live-monitor-lib/rollout-hooks.d.ts +13 -0
  107. package/dist/live-monitor-lib/rollout-hooks.js +253 -0
  108. package/dist/live-monitor-lib/rollout-hooks.js.map +1 -0
  109. package/dist/live-monitor.d.ts +102 -0
  110. package/dist/live-monitor.js +1461 -0
  111. package/dist/live-monitor.js.map +1 -0
  112. package/dist/local-thread-selection.d.ts +2 -0
  113. package/dist/local-thread-selection.js +58 -0
  114. package/dist/local-thread-selection.js.map +1 -0
  115. package/dist/openclaw.d.ts +41 -0
  116. package/dist/openclaw.js +715 -0
  117. package/dist/openclaw.js.map +1 -0
  118. package/dist/presence.d.ts +9 -0
  119. package/dist/presence.js +108 -0
  120. package/dist/presence.js.map +1 -0
  121. package/dist/project-identity.d.ts +7 -0
  122. package/dist/project-identity.js +162 -0
  123. package/dist/project-identity.js.map +1 -0
  124. package/dist/project-paths.d.ts +23 -0
  125. package/dist/project-paths.js +394 -0
  126. package/dist/project-paths.js.map +1 -0
  127. package/dist/project-storage.d.ts +7 -0
  128. package/dist/project-storage.js +79 -0
  129. package/dist/project-storage.js.map +1 -0
  130. package/dist/room-config.d.ts +21 -0
  131. package/dist/room-config.js +230 -0
  132. package/dist/room-config.js.map +1 -0
  133. package/dist/services/project-discovery.d.ts +1 -0
  134. package/dist/services/project-discovery.js +16 -0
  135. package/dist/services/project-discovery.js.map +1 -0
  136. package/dist/services/project-live-monitor.d.ts +1 -0
  137. package/dist/services/project-live-monitor.js +6 -0
  138. package/dist/services/project-live-monitor.js.map +1 -0
  139. package/dist/services/project-snapshot-coordinator.d.ts +49 -0
  140. package/dist/services/project-snapshot-coordinator.js +152 -0
  141. package/dist/services/project-snapshot-coordinator.js.map +1 -0
  142. package/dist/services/refresh-scheduler.d.ts +8 -0
  143. package/dist/services/refresh-scheduler.js +44 -0
  144. package/dist/services/refresh-scheduler.js.map +1 -0
  145. package/dist/services/snapshot-assembler.d.ts +8 -0
  146. package/dist/services/snapshot-assembler.js +167 -0
  147. package/dist/services/snapshot-assembler.js.map +1 -0
  148. package/dist/services/thread-store.d.ts +4 -0
  149. package/dist/services/thread-store.js +8 -0
  150. package/dist/services/thread-store.js.map +1 -0
  151. package/dist/snapshot-lib/activity-summary.d.ts +3 -0
  152. package/dist/snapshot-lib/activity-summary.js +220 -0
  153. package/dist/snapshot-lib/activity-summary.js.map +1 -0
  154. package/dist/snapshot-lib/dashboard-builder.d.ts +21 -0
  155. package/dist/snapshot-lib/dashboard-builder.js +146 -0
  156. package/dist/snapshot-lib/dashboard-builder.js.map +1 -0
  157. package/dist/snapshot-lib/thread-summary.d.ts +27 -0
  158. package/dist/snapshot-lib/thread-summary.js +953 -0
  159. package/dist/snapshot-lib/thread-summary.js.map +1 -0
  160. package/dist/snapshot.d.ts +2 -0
  161. package/dist/snapshot.js +21 -0
  162. package/dist/snapshot.js.map +1 -0
  163. package/dist/types.d.ts +368 -0
  164. package/dist/types.js +3 -0
  165. package/dist/types.js.map +1 -0
  166. package/dist/utils/json.d.ts +4 -0
  167. package/dist/utils/json.js +29 -0
  168. package/dist/utils/json.js.map +1 -0
  169. package/dist/utils/text.d.ts +3 -0
  170. package/dist/utils/text.js +26 -0
  171. package/dist/utils/text.js.map +1 -0
  172. package/dist/web-search.d.ts +1 -0
  173. package/dist/web-search.js +52 -0
  174. package/dist/web-search.js.map +1 -0
  175. package/dist/workload.d.ts +1 -0
  176. package/dist/workload.js +12 -0
  177. package/dist/workload.js.map +1 -0
  178. package/package.json +19 -0
@@ -0,0 +1,2 @@
1
+ import type { ProjectAdapter } from "./types";
2
+ export declare const claudeAdapter: ProjectAdapter;
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.claudeAdapter = void 0;
4
+ const claude_1 = require("../claude");
5
+ const helpers_1 = require("./helpers");
6
+ const static_source_1 = require("./static-source");
7
+ exports.claudeAdapter = {
8
+ id: "claude",
9
+ source: "claude",
10
+ capabilities: {
11
+ discoverProjects: true,
12
+ typedNeedsUser: true
13
+ },
14
+ discoverProjects(limit) {
15
+ return (0, claude_1.discoverClaudeProjects)(limit);
16
+ },
17
+ createSource(context) {
18
+ return new static_source_1.StaticProjectSource(async () => {
19
+ const generatedAt = new Date().toISOString();
20
+ try {
21
+ const data = await (0, claude_1.loadClaudeProjectSnapshotData)(context.projectRoot);
22
+ return (0, helpers_1.emptyAdapterSnapshot)({
23
+ adapterId: "claude",
24
+ source: "claude",
25
+ agents: data.agents,
26
+ events: data.events,
27
+ generatedAt
28
+ });
29
+ }
30
+ catch (error) {
31
+ const message = error instanceof Error ? error.message : String(error);
32
+ return (0, helpers_1.emptyAdapterSnapshot)({
33
+ adapterId: "claude",
34
+ source: "claude",
35
+ generatedAt,
36
+ notes: [`Claude sessions unavailable: ${message}`],
37
+ health: (0, helpers_1.degradedHealth)(message, generatedAt)
38
+ });
39
+ }
40
+ }, (0, helpers_1.emptyAdapterSnapshot)({ adapterId: "claude", source: "claude" }));
41
+ }
42
+ };
43
+ //# sourceMappingURL=claude.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/adapters/claude.ts"],"names":[],"mappings":";;;AAAA,sCAAkF;AAElF,uCAAiE;AACjE,mDAAsD;AAEzC,QAAA,aAAa,GAAmB;IAC3C,EAAE,EAAE,QAAQ;IACZ,MAAM,EAAE,QAAQ;IAChB,YAAY,EAAE;QACZ,gBAAgB,EAAE,IAAI;QACtB,cAAc,EAAE,IAAI;KACrB;IACD,gBAAgB,CAAC,KAAK;QACpB,OAAO,IAAA,+BAAsB,EAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IACD,YAAY,CAAC,OAAO;QAClB,OAAO,IAAI,mCAAmB,CAAC,KAAK,IAAI,EAAE;YACxC,MAAM,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YAC7C,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,MAAM,IAAA,sCAA6B,EAAC,OAAO,CAAC,WAAW,CAAC,CAAC;gBACtE,OAAO,IAAA,8BAAoB,EAAC;oBAC1B,SAAS,EAAE,QAAQ;oBACnB,MAAM,EAAE,QAAQ;oBAChB,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,WAAW;iBACZ,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACvE,OAAO,IAAA,8BAAoB,EAAC;oBAC1B,SAAS,EAAE,QAAQ;oBACnB,MAAM,EAAE,QAAQ;oBAChB,WAAW;oBACX,KAAK,EAAE,CAAC,gCAAgC,OAAO,EAAE,CAAC;oBAClD,MAAM,EAAE,IAAA,wBAAc,EAAC,OAAO,EAAE,WAAW,CAAC;iBAC7C,CAAC,CAAC;YACL,CAAC;QACH,CAAC,EAAE,IAAA,8BAAoB,EAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;IACtE,CAAC;CACF,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { CloudTask, DashboardAgent } from "../types";
2
+ import type { ProjectAdapter } from "./types";
3
+ export declare function cloudTasksToAgents(projectRoot: string, tasks: CloudTask[]): Promise<DashboardAgent[]>;
4
+ export declare const codexCloudAdapter: ProjectAdapter;
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.codexCloudAdapter = void 0;
4
+ exports.cloudTasksToAgents = cloudTasksToAgents;
5
+ const appearance_1 = require("../appearance");
6
+ const cloud_1 = require("../cloud");
7
+ const snapshot_1 = require("../snapshot");
8
+ const helpers_1 = require("./helpers");
9
+ const static_source_1 = require("./static-source");
10
+ const DEFAULT_LIMIT = 10;
11
+ async function cloudTasksToAgents(projectRoot, tasks) {
12
+ return Promise.all(tasks.map(async (task) => ({
13
+ id: task.id,
14
+ label: task.title,
15
+ source: "cloud",
16
+ sourceKind: "cloud",
17
+ parentThreadId: null,
18
+ depth: 0,
19
+ isCurrent: false,
20
+ isOngoing: false,
21
+ statusText: task.status,
22
+ role: null,
23
+ nickname: null,
24
+ isSubagent: false,
25
+ state: "cloud",
26
+ detail: `${task.status} · ${task.summary.filesChanged} files`,
27
+ cwd: null,
28
+ roomId: null,
29
+ appearance: await (0, appearance_1.ensureAgentAppearance)(projectRoot, task.id),
30
+ updatedAt: task.updatedAt,
31
+ stoppedAt: null,
32
+ paths: [],
33
+ activityEvent: null,
34
+ latestMessage: null,
35
+ threadId: null,
36
+ taskId: task.id,
37
+ resumeCommand: null,
38
+ url: task.url,
39
+ git: null,
40
+ provenance: "cloud",
41
+ confidence: "typed",
42
+ needsUser: null,
43
+ liveSubscription: "readOnly",
44
+ network: null
45
+ })));
46
+ }
47
+ exports.codexCloudAdapter = {
48
+ id: "codex-cloud",
49
+ source: "cloud",
50
+ capabilities: {
51
+ cloudTasks: true
52
+ },
53
+ createSource(context) {
54
+ return new static_source_1.StaticProjectSource(async () => {
55
+ const generatedAt = new Date().toISOString();
56
+ try {
57
+ const listedCloudTasks = await (0, cloud_1.listCloudTasks)(DEFAULT_LIMIT);
58
+ const cloudTasks = (0, snapshot_1.filterProjectCloudTasks)(listedCloudTasks, context.projectRoot);
59
+ return (0, helpers_1.emptyAdapterSnapshot)({
60
+ adapterId: "codex-cloud",
61
+ source: "cloud",
62
+ agents: await cloudTasksToAgents(context.projectRoot, cloudTasks),
63
+ cloudTasks,
64
+ generatedAt
65
+ });
66
+ }
67
+ catch (error) {
68
+ const message = error instanceof Error ? error.message : String(error);
69
+ return (0, helpers_1.emptyAdapterSnapshot)({
70
+ adapterId: "codex-cloud",
71
+ source: "cloud",
72
+ generatedAt,
73
+ notes: [`Codex cloud list unavailable: ${message}`],
74
+ health: (0, helpers_1.degradedHealth)(message, generatedAt)
75
+ });
76
+ }
77
+ }, (0, helpers_1.emptyAdapterSnapshot)({ adapterId: "codex-cloud", source: "cloud" }));
78
+ }
79
+ };
80
+ //# sourceMappingURL=codex-cloud.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-cloud.js","sourceRoot":"","sources":["../../src/adapters/codex-cloud.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { ProjectAdapter } from "./types";
2
+ import { emptyAdapterSnapshot } from "./helpers";
3
+ import type { AgentGoalState, CloudTask, CodexThread, DashboardEvent, NeedsUserState } from "../types";
4
+ export { selectProjectThreadsWithParents } from "../local-thread-selection";
5
+ export declare function buildCodexLocalAdapterSnapshotFromState(input: {
6
+ projectRoot: string;
7
+ threads: CodexThread[];
8
+ events?: DashboardEvent[];
9
+ notes?: string[];
10
+ needsUserByThreadId?: Map<string, NeedsUserState>;
11
+ goalsByThreadId?: Map<string, AgentGoalState>;
12
+ subscribedThreadIds?: Set<string>;
13
+ stoppedAtByThreadId?: Map<string, number>;
14
+ ongoingThreadIds?: Set<string>;
15
+ cloudTasks?: CloudTask[];
16
+ }): Promise<ReturnType<typeof emptyAdapterSnapshot>>;
17
+ export declare const codexLocalAdapter: ProjectAdapter;
@@ -0,0 +1,180 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.codexLocalAdapter = exports.selectProjectThreadsWithParents = void 0;
4
+ exports.buildCodexLocalAdapterSnapshotFromState = buildCodexLocalAdapterSnapshotFromState;
5
+ const app_server_1 = require("../app-server");
6
+ const appearance_1 = require("../appearance");
7
+ const codex_thread_query_1 = require("../codex-thread-query");
8
+ const snapshot_1 = require("../snapshot");
9
+ const helpers_1 = require("./helpers");
10
+ const static_source_1 = require("./static-source");
11
+ var local_thread_selection_1 = require("../local-thread-selection");
12
+ Object.defineProperty(exports, "selectProjectThreadsWithParents", { enumerable: true, get: function () { return local_thread_selection_1.selectProjectThreadsWithParents; } });
13
+ async function buildLocalAgents(projectRoot, localLimit, notes, readThreads = true) {
14
+ try {
15
+ return await (0, app_server_1.withAppServerClient)(async (client) => {
16
+ const query = await (0, codex_thread_query_1.listCodexProjectThreadCandidates)({
17
+ client,
18
+ projectRoot,
19
+ localLimit
20
+ });
21
+ if (query.usedUnscopedFallback) {
22
+ notes.push("Local Codex cwd filter returned no project threads; used unscoped Windows path fallback.");
23
+ }
24
+ const threads = query.trackedThreads;
25
+ if (!readThreads) {
26
+ return threads;
27
+ }
28
+ return Promise.all(threads.map(async (thread) => mergeListedThreadMetadata(await (0, codex_thread_query_1.readCodexThreadWithTimeout)(client, thread.id).catch(() => thread), thread)));
29
+ });
30
+ }
31
+ catch (error) {
32
+ const message = error instanceof Error ? error.message : String(error);
33
+ notes.push(`Local Codex app-server unavailable: ${message}`);
34
+ return [];
35
+ }
36
+ }
37
+ function mergeListedThreadMetadata(thread, listedThread) {
38
+ return {
39
+ ...thread,
40
+ status: listedThread.status,
41
+ updatedAt: Math.max(thread.updatedAt, listedThread.updatedAt),
42
+ path: listedThread.path ?? thread.path
43
+ };
44
+ }
45
+ function latestAgentMessagePhase(thread) {
46
+ const turns = Array.isArray(thread.turns) ? thread.turns : [];
47
+ for (const turn of [...turns].reverse()) {
48
+ const items = Array.isArray(turn.items) ? turn.items : [];
49
+ for (const item of [...items].reverse()) {
50
+ if (!item || item.type !== "agentMessage") {
51
+ continue;
52
+ }
53
+ return typeof item.phase === "string" ? item.phase : null;
54
+ }
55
+ }
56
+ return null;
57
+ }
58
+ function recentWorkloadEventTimeMs(events, latestMessagePhase) {
59
+ const hasNonFinalMessage = Boolean(latestMessagePhase && latestMessagePhase !== "final_answer");
60
+ return events.reduce((latest, event) => {
61
+ if (!event || event.kind === "status") {
62
+ return latest;
63
+ }
64
+ if (event.kind === "message" && event.phase === "completed") {
65
+ return latest;
66
+ }
67
+ const isWorkloadEvent = hasNonFinalMessage
68
+ || event.kind === "subagent"
69
+ || event.phase === "started"
70
+ || event.phase === "updated"
71
+ || event.phase === "waiting"
72
+ || event.phase === "failed";
73
+ if (!isWorkloadEvent) {
74
+ return latest;
75
+ }
76
+ const createdAtMs = Date.parse(event.createdAt);
77
+ return Number.isFinite(createdAtMs) ? Math.max(latest, createdAtMs) : latest;
78
+ }, 0);
79
+ }
80
+ async function buildCodexLocalAdapterSnapshotFromState(input) {
81
+ const generatedAt = new Date().toISOString();
82
+ const recentEventsByThreadId = new Map();
83
+ for (const event of input.events ?? []) {
84
+ if (!event.threadId) {
85
+ continue;
86
+ }
87
+ const existing = recentEventsByThreadId.get(event.threadId) ?? [];
88
+ existing.push(event);
89
+ recentEventsByThreadId.set(event.threadId, existing);
90
+ }
91
+ const agents = await Promise.all([...input.threads]
92
+ .sort((left, right) => right.updatedAt - left.updatedAt)
93
+ .map(async (thread) => {
94
+ const recentThreadEvents = recentEventsByThreadId.get(thread.id) ?? [];
95
+ const needsUser = input.needsUserByThreadId?.get(thread.id) ?? null;
96
+ const inferredOngoing = (input.ongoingThreadIds?.has(thread.id) ?? false)
97
+ || (0, snapshot_1.isOngoingThread)(thread);
98
+ const summary = (0, snapshot_1.applyRecentActivityEvent)(thread, needsUser
99
+ ? {
100
+ ...(0, snapshot_1.summariseThread)(thread),
101
+ state: needsUser.kind === "approval" ? "blocked" : "waiting",
102
+ detail: needsUser.kind === "approval" ? "Waiting on approval" : "Waiting on input"
103
+ }
104
+ : (0, snapshot_1.summariseThread)(thread), recentThreadEvents);
105
+ const syncedMessageSummary = (0, snapshot_1.syncSummaryWithLatestThreadMessage)(thread, summary, recentThreadEvents);
106
+ const updatedAtMs = Math.max(thread.updatedAt * 1000, recentWorkloadEventTimeMs(recentThreadEvents, latestAgentMessagePhase(thread)));
107
+ const stoppedAtMs = inferredOngoing ? null
108
+ : input.stoppedAtByThreadId
109
+ ? (input.stoppedAtByThreadId.get(thread.id) ?? null)
110
+ : !input.ongoingThreadIds && thread.status.type !== "active" && (syncedMessageSummary.summary.state === "done" || syncedMessageSummary.summary.state === "idle")
111
+ ? thread.updatedAt * 1000
112
+ : null;
113
+ const appearance = await (0, appearance_1.ensureAgentAppearance)(input.projectRoot, thread.id);
114
+ const sourceMeta = (0, snapshot_1.parseThreadSourceMeta)(thread);
115
+ const resolvedRole = (0, snapshot_1.inferThreadAgentRole)(thread, sourceMeta.sourceKind);
116
+ return {
117
+ id: thread.id,
118
+ label: (0, snapshot_1.pickThreadLabel)(thread),
119
+ source: "local",
120
+ sourceKind: sourceMeta.sourceKind,
121
+ parentThreadId: sourceMeta.parentThreadId,
122
+ depth: sourceMeta.depth,
123
+ isCurrent: false,
124
+ isOngoing: inferredOngoing,
125
+ statusText: thread.status.type,
126
+ role: resolvedRole,
127
+ nickname: thread.agentNickname ?? sourceMeta.agentNickname,
128
+ isSubagent: Boolean(sourceMeta.parentThreadId || sourceMeta.sourceKind.startsWith("subAgent")),
129
+ state: syncedMessageSummary.summary.state,
130
+ detail: syncedMessageSummary.summary.detail,
131
+ cwd: thread.cwd,
132
+ roomId: null,
133
+ appearance,
134
+ updatedAt: new Date(updatedAtMs).toISOString(),
135
+ stoppedAt: stoppedAtMs ? new Date(stoppedAtMs).toISOString() : null,
136
+ paths: syncedMessageSummary.summary.paths,
137
+ activityEvent: syncedMessageSummary.summary.activityEvent,
138
+ goal: input.goalsByThreadId?.get(thread.id) ?? null,
139
+ latestMessage: syncedMessageSummary.latestMessage,
140
+ threadId: thread.id,
141
+ taskId: null,
142
+ resumeCommand: `codex resume ${thread.id}`,
143
+ url: null,
144
+ git: thread.gitInfo,
145
+ provenance: "codex",
146
+ confidence: "typed",
147
+ needsUser,
148
+ liveSubscription: input.subscribedThreadIds?.has(thread.id) ? "subscribed" : "readOnly",
149
+ network: null
150
+ };
151
+ }));
152
+ return (0, helpers_1.emptyAdapterSnapshot)({
153
+ adapterId: "codex-local",
154
+ source: "local",
155
+ generatedAt,
156
+ agents,
157
+ events: input.events ?? [],
158
+ notes: input.notes ?? []
159
+ });
160
+ }
161
+ exports.codexLocalAdapter = {
162
+ id: "codex-local",
163
+ source: "local",
164
+ capabilities: {
165
+ liveUpdates: true,
166
+ typedNeedsUser: true
167
+ },
168
+ createSource(context) {
169
+ return new static_source_1.StaticProjectSource(async () => {
170
+ const notes = [];
171
+ const threads = await buildLocalAgents(context.projectRoot, context.localLimit ?? 24, notes, context.readThreads !== false);
172
+ return buildCodexLocalAdapterSnapshotFromState({
173
+ projectRoot: context.projectRoot,
174
+ threads,
175
+ notes
176
+ });
177
+ }, (0, helpers_1.emptyAdapterSnapshot)({ adapterId: "codex-local", source: "local" }));
178
+ }
179
+ };
180
+ //# sourceMappingURL=codex-local.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-local.js","sourceRoot":"","sources":["../../src/adapters/codex-local.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { ProjectAdapter } from "./types";
2
+ export declare const cursorCloudAdapter: ProjectAdapter;
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.cursorCloudAdapter = void 0;
4
+ const cursor_1 = require("../cursor");
5
+ const helpers_1 = require("./helpers");
6
+ const static_source_1 = require("./static-source");
7
+ exports.cursorCloudAdapter = {
8
+ id: "cursor-cloud",
9
+ source: "cursor",
10
+ capabilities: {},
11
+ createSource(context) {
12
+ const knownConversationMessageIds = new Map();
13
+ let emitConversationEvents = false;
14
+ return new static_source_1.StaticProjectSource(async () => {
15
+ const generatedAt = new Date().toISOString();
16
+ try {
17
+ const availabilityNote = await (0, cursor_1.describeCursorAgentAvailability)(context.projectRoot);
18
+ if (availabilityNote) {
19
+ return (0, helpers_1.emptyAdapterSnapshot)({
20
+ adapterId: "cursor-cloud",
21
+ source: "cursor",
22
+ notes: [availabilityNote],
23
+ generatedAt,
24
+ health: (0, helpers_1.degradedHealth)(availabilityNote, generatedAt)
25
+ });
26
+ }
27
+ const snapshotData = await (0, cursor_1.loadCursorCloudProjectSnapshotData)(context.projectRoot, {
28
+ knownConversationMessageIds,
29
+ emitConversationEvents
30
+ });
31
+ emitConversationEvents = true;
32
+ return (0, helpers_1.emptyAdapterSnapshot)({
33
+ adapterId: "cursor-cloud",
34
+ source: "cursor",
35
+ agents: snapshotData.agents,
36
+ events: snapshotData.events,
37
+ generatedAt
38
+ });
39
+ }
40
+ catch (error) {
41
+ emitConversationEvents = true;
42
+ const message = error instanceof Error ? error.message : String(error);
43
+ return (0, helpers_1.emptyAdapterSnapshot)({
44
+ adapterId: "cursor-cloud",
45
+ source: "cursor",
46
+ generatedAt,
47
+ notes: [`Cursor background agents unavailable: ${message}`],
48
+ health: (0, helpers_1.degradedHealth)(message, generatedAt)
49
+ });
50
+ }
51
+ }, (0, helpers_1.emptyAdapterSnapshot)({ adapterId: "cursor-cloud", source: "cursor" }));
52
+ }
53
+ };
54
+ //# sourceMappingURL=cursor-cloud.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cursor-cloud.js","sourceRoot":"","sources":["../../src/adapters/cursor-cloud.ts"],"names":[],"mappings":";;;AAAA,sCAAgG;AAEhG,uCAAiE;AACjE,mDAAsD;AAEzC,QAAA,kBAAkB,GAAmB;IAChD,EAAE,EAAE,cAAc;IAClB,MAAM,EAAE,QAAQ;IAChB,YAAY,EAAE,EAAE;IAChB,YAAY,CAAC,OAAO;QAClB,MAAM,2BAA2B,GAAG,IAAI,GAAG,EAAuB,CAAC;QACnE,IAAI,sBAAsB,GAAG,KAAK,CAAC;QACnC,OAAO,IAAI,mCAAmB,CAAC,KAAK,IAAI,EAAE;YACxC,MAAM,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YAC7C,IAAI,CAAC;gBACH,MAAM,gBAAgB,GAAG,MAAM,IAAA,wCAA+B,EAAC,OAAO,CAAC,WAAW,CAAC,CAAC;gBACpF,IAAI,gBAAgB,EAAE,CAAC;oBACrB,OAAO,IAAA,8BAAoB,EAAC;wBAC1B,SAAS,EAAE,cAAc;wBACzB,MAAM,EAAE,QAAQ;wBAChB,KAAK,EAAE,CAAC,gBAAgB,CAAC;wBACzB,WAAW;wBACX,MAAM,EAAE,IAAA,wBAAc,EAAC,gBAAgB,EAAE,WAAW,CAAC;qBACtD,CAAC,CAAC;gBACL,CAAC;gBAED,MAAM,YAAY,GAAG,MAAM,IAAA,2CAAkC,EAAC,OAAO,CAAC,WAAW,EAAE;oBACjF,2BAA2B;oBAC3B,sBAAsB;iBACvB,CAAC,CAAC;gBACH,sBAAsB,GAAG,IAAI,CAAC;gBAC9B,OAAO,IAAA,8BAAoB,EAAC;oBAC1B,SAAS,EAAE,cAAc;oBACzB,MAAM,EAAE,QAAQ;oBAChB,MAAM,EAAE,YAAY,CAAC,MAAM;oBAC3B,MAAM,EAAE,YAAY,CAAC,MAAM;oBAC3B,WAAW;iBACZ,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,sBAAsB,GAAG,IAAI,CAAC;gBAC9B,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACvE,OAAO,IAAA,8BAAoB,EAAC;oBAC1B,SAAS,EAAE,cAAc;oBACzB,MAAM,EAAE,QAAQ;oBAChB,WAAW;oBACX,KAAK,EAAE,CAAC,yCAAyC,OAAO,EAAE,CAAC;oBAC3D,MAAM,EAAE,IAAA,wBAAc,EAAC,OAAO,EAAE,WAAW,CAAC;iBAC7C,CAAC,CAAC;YACL,CAAC;QACH,CAAC,EAAE,IAAA,8BAAoB,EAAC,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;IAC5E,CAAC;CACF,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { ProjectAdapter } from "./types";
2
+ export declare const cursorLocalAdapter: ProjectAdapter;
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.cursorLocalAdapter = void 0;
4
+ const cursor_1 = require("../cursor");
5
+ const helpers_1 = require("./helpers");
6
+ const static_source_1 = require("./static-source");
7
+ exports.cursorLocalAdapter = {
8
+ id: "cursor-local",
9
+ source: "cursor",
10
+ capabilities: {},
11
+ createSource(context) {
12
+ return new static_source_1.StaticProjectSource(async () => {
13
+ const generatedAt = new Date().toISOString();
14
+ try {
15
+ const data = await (0, cursor_1.loadCursorLocalProjectSnapshotData)(context.projectRoot);
16
+ return (0, helpers_1.emptyAdapterSnapshot)({
17
+ adapterId: "cursor-local",
18
+ source: "cursor",
19
+ agents: data.agents,
20
+ events: data.events,
21
+ generatedAt
22
+ });
23
+ }
24
+ catch (error) {
25
+ const message = error instanceof Error ? error.message : String(error);
26
+ return (0, helpers_1.emptyAdapterSnapshot)({
27
+ adapterId: "cursor-local",
28
+ source: "cursor",
29
+ generatedAt,
30
+ notes: [`Cursor local sessions unavailable: ${message}`],
31
+ health: (0, helpers_1.degradedHealth)(message, generatedAt)
32
+ });
33
+ }
34
+ }, (0, helpers_1.emptyAdapterSnapshot)({ adapterId: "cursor-local", source: "cursor" }));
35
+ }
36
+ };
37
+ //# sourceMappingURL=cursor-local.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cursor-local.js","sourceRoot":"","sources":["../../src/adapters/cursor-local.ts"],"names":[],"mappings":";;;AAAA,sCAA+D;AAE/D,uCAAiE;AACjE,mDAAsD;AAEzC,QAAA,kBAAkB,GAAmB;IAChD,EAAE,EAAE,cAAc;IAClB,MAAM,EAAE,QAAQ;IAChB,YAAY,EAAE,EAAE;IAChB,YAAY,CAAC,OAAO;QAClB,OAAO,IAAI,mCAAmB,CAAC,KAAK,IAAI,EAAE;YACxC,MAAM,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YAC7C,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,MAAM,IAAA,2CAAkC,EAAC,OAAO,CAAC,WAAW,CAAC,CAAC;gBAC3E,OAAO,IAAA,8BAAoB,EAAC;oBAC1B,SAAS,EAAE,cAAc;oBACzB,MAAM,EAAE,QAAQ;oBAChB,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,WAAW;iBACZ,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACvE,OAAO,IAAA,8BAAoB,EAAC;oBAC1B,SAAS,EAAE,cAAc;oBACzB,MAAM,EAAE,QAAQ;oBAChB,WAAW;oBACX,KAAK,EAAE,CAAC,sCAAsC,OAAO,EAAE,CAAC;oBACxD,MAAM,EAAE,IAAA,wBAAc,EAAC,OAAO,EAAE,WAAW,CAAC;iBAC7C,CAAC,CAAC;YACL,CAAC;QACH,CAAC,EAAE,IAAA,8BAAoB,EAAC,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;IAC5E,CAAC;CACF,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { AdapterHealth, AdapterSnapshot } from "./types";
2
+ import type { CloudTask, DashboardAgent, DashboardEvent } from "../types";
3
+ export declare function readyHealth(detail?: string | null, generatedAt?: string): AdapterHealth;
4
+ export declare function degradedHealth(detail: string, generatedAt?: string): AdapterHealth;
5
+ export declare function emptyAdapterSnapshot(input: {
6
+ adapterId: string;
7
+ source: DashboardAgent["source"];
8
+ detail?: string | null;
9
+ health?: AdapterHealth;
10
+ agents?: DashboardAgent[];
11
+ events?: DashboardEvent[];
12
+ notes?: string[];
13
+ cloudTasks?: CloudTask[];
14
+ generatedAt?: string;
15
+ }): AdapterSnapshot;
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.readyHealth = readyHealth;
4
+ exports.degradedHealth = degradedHealth;
5
+ exports.emptyAdapterSnapshot = emptyAdapterSnapshot;
6
+ function readyHealth(detail = null, generatedAt = new Date().toISOString()) {
7
+ return {
8
+ status: "ready",
9
+ detail,
10
+ lastUpdatedAt: generatedAt
11
+ };
12
+ }
13
+ function degradedHealth(detail, generatedAt = new Date().toISOString()) {
14
+ return {
15
+ status: "degraded",
16
+ detail,
17
+ lastUpdatedAt: generatedAt
18
+ };
19
+ }
20
+ function emptyAdapterSnapshot(input) {
21
+ const generatedAt = input.generatedAt ?? new Date().toISOString();
22
+ return {
23
+ adapterId: input.adapterId,
24
+ source: input.source,
25
+ generatedAt,
26
+ agents: input.agents ?? [],
27
+ events: input.events ?? [],
28
+ notes: input.notes ?? [],
29
+ cloudTasks: input.cloudTasks ?? [],
30
+ health: input.health ?? readyHealth(input.detail ?? null, generatedAt)
31
+ };
32
+ }
33
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/adapters/helpers.ts"],"names":[],"mappings":";;AAGA,kCAMC;AAED,wCAMC;AAED,oDAsBC;AAtCD,SAAgB,WAAW,CAAC,SAAwB,IAAI,EAAE,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;IAC9F,OAAO;QACL,MAAM,EAAE,OAAO;QACf,MAAM;QACN,aAAa,EAAE,WAAW;KAC3B,CAAC;AACJ,CAAC;AAED,SAAgB,cAAc,CAAC,MAAc,EAAE,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;IACnF,OAAO;QACL,MAAM,EAAE,UAAU;QAClB,MAAM;QACN,aAAa,EAAE,WAAW;KAC3B,CAAC;AACJ,CAAC;AAED,SAAgB,oBAAoB,CAAC,KAUpC;IACC,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAClE,OAAO;QACL,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,WAAW;QACX,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,EAAE;QAC1B,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,EAAE;QAC1B,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,EAAE;QACxB,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,EAAE;QAClC,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,WAAW,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,EAAE,WAAW,CAAC;KACvE,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { ProjectAdapter } from "./types";
2
+ export declare const hermesAdapter: ProjectAdapter;
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.hermesAdapter = void 0;
4
+ const hermes_1 = require("../hermes");
5
+ const helpers_1 = require("./helpers");
6
+ const static_source_1 = require("./static-source");
7
+ exports.hermesAdapter = {
8
+ id: "hermes",
9
+ source: "hermes",
10
+ capabilities: { discoverProjects: true },
11
+ discoverProjects(limit) {
12
+ return (0, hermes_1.discoverHermesProjects)(limit);
13
+ },
14
+ createSource(context) {
15
+ return new static_source_1.StaticProjectSource(async () => {
16
+ const generatedAt = new Date().toISOString();
17
+ try {
18
+ const data = await (0, hermes_1.loadHermesProjectSnapshotData)(context.projectRoot, context.localLimit);
19
+ return (0, helpers_1.emptyAdapterSnapshot)({
20
+ adapterId: "hermes",
21
+ source: "hermes",
22
+ agents: data.agents,
23
+ events: data.events,
24
+ notes: data.notes,
25
+ generatedAt
26
+ });
27
+ }
28
+ catch (error) {
29
+ const message = error instanceof Error ? error.message : String(error);
30
+ return (0, helpers_1.emptyAdapterSnapshot)({
31
+ adapterId: "hermes",
32
+ source: "hermes",
33
+ generatedAt,
34
+ notes: [`Hermes sessions unavailable: ${message}`],
35
+ health: (0, helpers_1.degradedHealth)(message, generatedAt)
36
+ });
37
+ }
38
+ }, (0, helpers_1.emptyAdapterSnapshot)({ adapterId: "hermes", source: "hermes" }));
39
+ }
40
+ };
41
+ //# sourceMappingURL=hermes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hermes.js","sourceRoot":"","sources":["../../src/adapters/hermes.ts"],"names":[],"mappings":";;;AAAA,sCAAkF;AAElF,uCAAiE;AACjE,mDAAsD;AAEzC,QAAA,aAAa,GAAmB;IAC3C,EAAE,EAAE,QAAQ;IACZ,MAAM,EAAE,QAAQ;IAChB,YAAY,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE;IACxC,gBAAgB,CAAC,KAAK;QACpB,OAAO,IAAA,+BAAsB,EAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IACD,YAAY,CAAC,OAAO;QAClB,OAAO,IAAI,mCAAmB,CAAC,KAAK,IAAI,EAAE;YACxC,MAAM,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YAC7C,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,MAAM,IAAA,sCAA6B,EAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;gBAC1F,OAAO,IAAA,8BAAoB,EAAC;oBAC1B,SAAS,EAAE,QAAQ;oBACnB,MAAM,EAAE,QAAQ;oBAChB,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,WAAW;iBACZ,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACvE,OAAO,IAAA,8BAAoB,EAAC;oBAC1B,SAAS,EAAE,QAAQ;oBACnB,MAAM,EAAE,QAAQ;oBAChB,WAAW;oBACX,KAAK,EAAE,CAAC,gCAAgC,OAAO,EAAE,CAAC;oBAClD,MAAM,EAAE,IAAA,wBAAc,EAAC,OAAO,EAAE,WAAW,CAAC;iBAC7C,CAAC,CAAC;YACL,CAAC;QACH,CAAC,EAAE,IAAA,8BAAoB,EAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;IACtE,CAAC;CACF,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "./types";
2
+ export declare const PROJECT_ADAPTERS: readonly [import("./types").ProjectAdapter, import("./types").ProjectAdapter, import("./types").ProjectAdapter, import("./types").ProjectAdapter, import("./types").ProjectAdapter, import("./types").ProjectAdapter, import("./types").ProjectAdapter, import("./types").ProjectAdapter];
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.PROJECT_ADAPTERS = void 0;
18
+ const claude_1 = require("./claude");
19
+ const codex_cloud_1 = require("./codex-cloud");
20
+ const codex_local_1 = require("./codex-local");
21
+ const cursor_cloud_1 = require("./cursor-cloud");
22
+ const cursor_local_1 = require("./cursor-local");
23
+ const hermes_1 = require("./hermes");
24
+ const openclaw_1 = require("./openclaw");
25
+ const presence_1 = require("./presence");
26
+ __exportStar(require("./types"), exports);
27
+ exports.PROJECT_ADAPTERS = [
28
+ codex_local_1.codexLocalAdapter,
29
+ claude_1.claudeAdapter,
30
+ cursor_local_1.cursorLocalAdapter,
31
+ cursor_cloud_1.cursorCloudAdapter,
32
+ hermes_1.hermesAdapter,
33
+ openclaw_1.openClawAdapter,
34
+ presence_1.presenceAdapter,
35
+ codex_cloud_1.codexCloudAdapter
36
+ ];
37
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,qCAAyC;AACzC,+CAAkD;AAClD,+CAAkD;AAClD,iDAAoD;AACpD,iDAAoD;AACpD,qCAAyC;AACzC,yCAA6C;AAC7C,yCAA6C;AAE7C,0CAAwB;AAEX,QAAA,gBAAgB,GAAG;IAC9B,+BAAiB;IACjB,sBAAa;IACb,iCAAkB;IAClB,iCAAkB;IAClB,sBAAa;IACb,0BAAe;IACf,0BAAe;IACf,+BAAiB;CACT,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { ProjectAdapter } from "./types";
2
+ export declare const openClawAdapter: ProjectAdapter;