@dorokuma/herdsman 0.6.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 (184) hide show
  1. package/LICENSE +23 -0
  2. package/README.ja.md +143 -0
  3. package/README.md +150 -0
  4. package/dist/drizzle.config.d.ts +3 -0
  5. package/dist/drizzle.config.d.ts.map +1 -0
  6. package/dist/drizzle.config.js +7 -0
  7. package/dist/drizzle.config.js.map +1 -0
  8. package/dist/src/agent-history/claude-reader.d.ts +10 -0
  9. package/dist/src/agent-history/claude-reader.d.ts.map +1 -0
  10. package/dist/src/agent-history/claude-reader.js +90 -0
  11. package/dist/src/agent-history/claude-reader.js.map +1 -0
  12. package/dist/src/agent-history/codex-reader.d.ts +10 -0
  13. package/dist/src/agent-history/codex-reader.d.ts.map +1 -0
  14. package/dist/src/agent-history/codex-reader.js +119 -0
  15. package/dist/src/agent-history/codex-reader.js.map +1 -0
  16. package/dist/src/agent-history/discovery.d.ts +13 -0
  17. package/dist/src/agent-history/discovery.d.ts.map +1 -0
  18. package/dist/src/agent-history/discovery.js +220 -0
  19. package/dist/src/agent-history/discovery.js.map +1 -0
  20. package/dist/src/agent-history/gemini-reader.d.ts +10 -0
  21. package/dist/src/agent-history/gemini-reader.d.ts.map +1 -0
  22. package/dist/src/agent-history/gemini-reader.js +96 -0
  23. package/dist/src/agent-history/gemini-reader.js.map +1 -0
  24. package/dist/src/agent-history/opencode-reader.d.ts +10 -0
  25. package/dist/src/agent-history/opencode-reader.d.ts.map +1 -0
  26. package/dist/src/agent-history/opencode-reader.js +90 -0
  27. package/dist/src/agent-history/opencode-reader.js.map +1 -0
  28. package/dist/src/agent-history/pi-reader.d.ts +10 -0
  29. package/dist/src/agent-history/pi-reader.d.ts.map +1 -0
  30. package/dist/src/agent-history/pi-reader.js +59 -0
  31. package/dist/src/agent-history/pi-reader.js.map +1 -0
  32. package/dist/src/agent-history/readers.d.ts +16 -0
  33. package/dist/src/agent-history/readers.d.ts.map +1 -0
  34. package/dist/src/agent-history/readers.js +45 -0
  35. package/dist/src/agent-history/readers.js.map +1 -0
  36. package/dist/src/agent-history/service.d.ts +43 -0
  37. package/dist/src/agent-history/service.d.ts.map +1 -0
  38. package/dist/src/agent-history/service.js +124 -0
  39. package/dist/src/agent-history/service.js.map +1 -0
  40. package/dist/src/agent-history/text.d.ts +10 -0
  41. package/dist/src/agent-history/text.d.ts.map +1 -0
  42. package/dist/src/agent-history/text.js +64 -0
  43. package/dist/src/agent-history/text.js.map +1 -0
  44. package/dist/src/agent-history/tool-compaction.d.ts +8 -0
  45. package/dist/src/agent-history/tool-compaction.d.ts.map +1 -0
  46. package/dist/src/agent-history/tool-compaction.js +134 -0
  47. package/dist/src/agent-history/tool-compaction.js.map +1 -0
  48. package/dist/src/cli/herdsman-daemon.d.ts +3 -0
  49. package/dist/src/cli/herdsman-daemon.d.ts.map +1 -0
  50. package/dist/src/cli/herdsman-daemon.js +18 -0
  51. package/dist/src/cli/herdsman-daemon.js.map +1 -0
  52. package/dist/src/cli/herdsman.d.ts +42 -0
  53. package/dist/src/cli/herdsman.d.ts.map +1 -0
  54. package/dist/src/cli/herdsman.js +338 -0
  55. package/dist/src/cli/herdsman.js.map +1 -0
  56. package/dist/src/config/load.d.ts +14 -0
  57. package/dist/src/config/load.d.ts.map +1 -0
  58. package/dist/src/config/load.js +28 -0
  59. package/dist/src/config/load.js.map +1 -0
  60. package/dist/src/config/runtime.d.ts +40 -0
  61. package/dist/src/config/runtime.d.ts.map +1 -0
  62. package/dist/src/config/runtime.js +111 -0
  63. package/dist/src/config/runtime.js.map +1 -0
  64. package/dist/src/config/schema.d.ts +25 -0
  65. package/dist/src/config/schema.d.ts.map +1 -0
  66. package/dist/src/config/schema.js +26 -0
  67. package/dist/src/config/schema.js.map +1 -0
  68. package/dist/src/daemon/client.d.ts +9 -0
  69. package/dist/src/daemon/client.d.ts.map +1 -0
  70. package/dist/src/daemon/client.js +51 -0
  71. package/dist/src/daemon/client.js.map +1 -0
  72. package/dist/src/daemon/herdr-session-watch-manager.d.ts +33 -0
  73. package/dist/src/daemon/herdr-session-watch-manager.d.ts.map +1 -0
  74. package/dist/src/daemon/herdr-session-watch-manager.js +245 -0
  75. package/dist/src/daemon/herdr-session-watch-manager.js.map +1 -0
  76. package/dist/src/daemon/observability-server.d.ts +60 -0
  77. package/dist/src/daemon/observability-server.d.ts.map +1 -0
  78. package/dist/src/daemon/observability-server.js +501 -0
  79. package/dist/src/daemon/observability-server.js.map +1 -0
  80. package/dist/src/daemon/process-manager.d.ts +80 -0
  81. package/dist/src/daemon/process-manager.d.ts.map +1 -0
  82. package/dist/src/daemon/process-manager.js +178 -0
  83. package/dist/src/daemon/process-manager.js.map +1 -0
  84. package/dist/src/daemon/service.d.ts +5 -0
  85. package/dist/src/daemon/service.d.ts.map +1 -0
  86. package/dist/src/daemon/service.js +104 -0
  87. package/dist/src/daemon/service.js.map +1 -0
  88. package/dist/src/db/agent-context-snapshots.d.ts +11 -0
  89. package/dist/src/db/agent-context-snapshots.d.ts.map +1 -0
  90. package/dist/src/db/agent-context-snapshots.js +129 -0
  91. package/dist/src/db/agent-context-snapshots.js.map +1 -0
  92. package/dist/src/db/agent-events.d.ts +54 -0
  93. package/dist/src/db/agent-events.d.ts.map +1 -0
  94. package/dist/src/db/agent-events.js +124 -0
  95. package/dist/src/db/agent-events.js.map +1 -0
  96. package/dist/src/db/agent-history-cache.d.ts +31 -0
  97. package/dist/src/db/agent-history-cache.d.ts.map +1 -0
  98. package/dist/src/db/agent-history-cache.js +46 -0
  99. package/dist/src/db/agent-history-cache.js.map +1 -0
  100. package/dist/src/db/agent-orchestrator-scopes.d.ts +40 -0
  101. package/dist/src/db/agent-orchestrator-scopes.d.ts.map +1 -0
  102. package/dist/src/db/agent-orchestrator-scopes.js +148 -0
  103. package/dist/src/db/agent-orchestrator-scopes.js.map +1 -0
  104. package/dist/src/db/agents.d.ts +34 -0
  105. package/dist/src/db/agents.d.ts.map +1 -0
  106. package/dist/src/db/agents.js +295 -0
  107. package/dist/src/db/agents.js.map +1 -0
  108. package/dist/src/db/apply-migrations.d.ts +4 -0
  109. package/dist/src/db/apply-migrations.d.ts.map +1 -0
  110. package/dist/src/db/apply-migrations.js +37 -0
  111. package/dist/src/db/apply-migrations.js.map +1 -0
  112. package/dist/src/db/client.d.ts +5 -0
  113. package/dist/src/db/client.d.ts.map +1 -0
  114. package/dist/src/db/client.js +6 -0
  115. package/dist/src/db/client.js.map +1 -0
  116. package/dist/src/db/herdr-sessions.d.ts +18 -0
  117. package/dist/src/db/herdr-sessions.d.ts.map +1 -0
  118. package/dist/src/db/herdr-sessions.js +67 -0
  119. package/dist/src/db/herdr-sessions.js.map +1 -0
  120. package/dist/src/db/herdr-workspaces.d.ts +14 -0
  121. package/dist/src/db/herdr-workspaces.d.ts.map +1 -0
  122. package/dist/src/db/herdr-workspaces.js +53 -0
  123. package/dist/src/db/herdr-workspaces.js.map +1 -0
  124. package/dist/src/db/migrate.d.ts +2 -0
  125. package/dist/src/db/migrate.d.ts.map +1 -0
  126. package/dist/src/db/migrate.js +8 -0
  127. package/dist/src/db/migrate.js.map +1 -0
  128. package/dist/src/db/schema.d.ts +1258 -0
  129. package/dist/src/db/schema.d.ts.map +1 -0
  130. package/dist/src/db/schema.js +102 -0
  131. package/dist/src/db/schema.js.map +1 -0
  132. package/dist/src/herdr/pane-identity-resolver.d.ts +14 -0
  133. package/dist/src/herdr/pane-identity-resolver.d.ts.map +1 -0
  134. package/dist/src/herdr/pane-identity-resolver.js +34 -0
  135. package/dist/src/herdr/pane-identity-resolver.js.map +1 -0
  136. package/dist/src/herdr/session-list.d.ts +14 -0
  137. package/dist/src/herdr/session-list.d.ts.map +1 -0
  138. package/dist/src/herdr/session-list.js +44 -0
  139. package/dist/src/herdr/session-list.js.map +1 -0
  140. package/dist/src/herdr/session-snapshot.d.ts +10 -0
  141. package/dist/src/herdr/session-snapshot.d.ts.map +1 -0
  142. package/dist/src/herdr/session-snapshot.js +19 -0
  143. package/dist/src/herdr/session-snapshot.js.map +1 -0
  144. package/dist/src/herdr/socket-client.d.ts +19 -0
  145. package/dist/src/herdr/socket-client.d.ts.map +1 -0
  146. package/dist/src/herdr/socket-client.js +230 -0
  147. package/dist/src/herdr/socket-client.js.map +1 -0
  148. package/dist/src/observability/agent-context-service.d.ts +29 -0
  149. package/dist/src/observability/agent-context-service.d.ts.map +1 -0
  150. package/dist/src/observability/agent-context-service.js +170 -0
  151. package/dist/src/observability/agent-context-service.js.map +1 -0
  152. package/dist/src/observability/agent-index-service.d.ts +60 -0
  153. package/dist/src/observability/agent-index-service.d.ts.map +1 -0
  154. package/dist/src/observability/agent-index-service.js +376 -0
  155. package/dist/src/observability/agent-index-service.js.map +1 -0
  156. package/dist/src/observability/agent-orchestrator-service.d.ts +42 -0
  157. package/dist/src/observability/agent-orchestrator-service.d.ts.map +1 -0
  158. package/dist/src/observability/agent-orchestrator-service.js +95 -0
  159. package/dist/src/observability/agent-orchestrator-service.js.map +1 -0
  160. package/dist/src/observability/contracts.d.ts +161 -0
  161. package/dist/src/observability/contracts.d.ts.map +1 -0
  162. package/dist/src/observability/contracts.js +10 -0
  163. package/dist/src/observability/contracts.js.map +1 -0
  164. package/dist/src/observability/schemas.d.ts +49 -0
  165. package/dist/src/observability/schemas.d.ts.map +1 -0
  166. package/dist/src/observability/schemas.js +47 -0
  167. package/dist/src/observability/schemas.js.map +1 -0
  168. package/dist/src/shared/json-lines.d.ts +7 -0
  169. package/dist/src/shared/json-lines.d.ts.map +1 -0
  170. package/dist/src/shared/json-lines.js +25 -0
  171. package/dist/src/shared/json-lines.js.map +1 -0
  172. package/drizzle/0000_rare_robin_chapel.sql +90 -0
  173. package/drizzle/0001_opposite_toxin.sql +13 -0
  174. package/drizzle/0002_worthless_energizer.sql +2 -0
  175. package/drizzle/0003_opposite_tarantula.sql +14 -0
  176. package/drizzle/0004_serious_lorna_dane.sql +1 -0
  177. package/drizzle/0005_pane_generation.sql +7 -0
  178. package/drizzle/meta/0000_snapshot.json +621 -0
  179. package/drizzle/meta/0001_snapshot.json +709 -0
  180. package/drizzle/meta/0002_snapshot.json +563 -0
  181. package/drizzle/meta/0003_snapshot.json +657 -0
  182. package/drizzle/meta/0004_snapshot.json +664 -0
  183. package/drizzle/meta/_journal.json +12 -0
  184. package/package.json +82 -0
@@ -0,0 +1,42 @@
1
+ import type { AgentEventStore } from "../db/agent-events.js";
2
+ import type { AgentOrchestratorScopeStore } from "../db/agent-orchestrator-scopes.js";
3
+ import type { AgentStore } from "../db/agents.js";
4
+ import type { AgentEventRecord, AgentOrchestratorChangeReason, AgentOrchestratorState, AgentScope } from "../observability/contracts.js";
5
+ export type AgentOrchestratorChange = {
6
+ current: AgentOrchestratorState;
7
+ previous: AgentOrchestratorState;
8
+ reason: AgentOrchestratorChangeReason;
9
+ };
10
+ export declare class AgentOrchestratorService {
11
+ #private;
12
+ constructor(options: {
13
+ agentEvents: AgentEventStore;
14
+ agents: AgentStore;
15
+ scopes: AgentOrchestratorScopeStore;
16
+ });
17
+ status(scope: AgentScope): AgentOrchestratorState | undefined;
18
+ claim(input: AgentScope & {
19
+ paneId: string;
20
+ terminalId: string;
21
+ }): AgentOrchestratorChange;
22
+ release(input: AgentScope & {
23
+ reason: "disconnected" | "released" | "startup_timeout";
24
+ terminalId: string;
25
+ }): AgentOrchestratorChange | undefined;
26
+ pending(input: AgentScope & {
27
+ limit?: number;
28
+ terminalId: string;
29
+ }): AgentEventRecord[];
30
+ ack(input: AgentScope & {
31
+ eventId: number;
32
+ terminalId: string;
33
+ }): AgentOrchestratorState;
34
+ move(input: {
35
+ from: AgentScope;
36
+ paneId: string;
37
+ terminalId: string;
38
+ to: AgentScope;
39
+ }): AgentOrchestratorChange[];
40
+ persistedOwners(): AgentOrchestratorState[];
41
+ }
42
+ //# sourceMappingURL=agent-orchestrator-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-orchestrator-service.d.ts","sourceRoot":"","sources":["../../../src/observability/agent-orchestrator-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,mCAAmC,CAAC;AACrF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EACV,gBAAgB,EAChB,6BAA6B,EAC7B,sBAAsB,EACtB,UAAU,EACX,MAAM,8BAA8B,CAAC;AAEtC,MAAM,MAAM,uBAAuB,GAAG;IACpC,OAAO,EAAE,sBAAsB,CAAC;IAChC,QAAQ,EAAE,sBAAsB,CAAC;IACjC,MAAM,EAAE,6BAA6B,CAAC;CACvC,CAAC;AAEF,qBAAa,wBAAwB;;gBAKvB,OAAO,EAAE;QACnB,WAAW,EAAE,eAAe,CAAC;QAC7B,MAAM,EAAE,UAAU,CAAC;QACnB,MAAM,EAAE,2BAA2B,CAAC;KACrC;IAMD,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,sBAAsB,GAAG,SAAS;IAI7D,KAAK,CAAC,KAAK,EAAE,UAAU,GAAG;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,GAAG,uBAAuB;IAK1F,OAAO,CACL,KAAK,EAAE,UAAU,GAAG;QAClB,MAAM,EAAE,cAAc,GAAG,UAAU,GAAG,iBAAiB,CAAC;QACxD,UAAU,EAAE,MAAM,CAAC;KACpB,GACA,uBAAuB,GAAG,SAAS;IAMtC,OAAO,CAAC,KAAK,EAAE,UAAU,GAAG;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,GAAG,gBAAgB,EAAE;IAqCvF,GAAG,CAAC,KAAK,EAAE,UAAU,GAAG;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,GAAG,sBAAsB;IAyBxF,IAAI,CAAC,KAAK,EAAE;QACV,IAAI,EAAE,UAAU,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,MAAM,CAAC;QACnB,EAAE,EAAE,UAAU,CAAC;KAChB,GAAG,uBAAuB,EAAE;IAM7B,eAAe,IAAI,sBAAsB,EAAE;CAQ5C"}
@@ -0,0 +1,95 @@
1
+ export class AgentOrchestratorService {
2
+ #agentEvents;
3
+ #agents;
4
+ #scopes;
5
+ constructor(options) {
6
+ this.#agentEvents = options.agentEvents;
7
+ this.#agents = options.agents;
8
+ this.#scopes = options.scopes;
9
+ }
10
+ status(scope) {
11
+ return this.#scopes.get(scope);
12
+ }
13
+ claim(input) {
14
+ const change = this.#scopes.claim({ ...input, ackedEventId: this.#claimCursor(input) });
15
+ return { ...change, reason: "claimed" };
16
+ }
17
+ release(input) {
18
+ const change = this.#scopes.releaseIfOwner(input);
19
+ if (!change.changed || !change.current || !change.previous)
20
+ return undefined;
21
+ return { current: change.current, previous: change.previous, reason: input.reason };
22
+ }
23
+ pending(input) {
24
+ const state = this.#scopes.get(input);
25
+ if (!state?.owner || state.owner.terminalId !== input.terminalId)
26
+ return [];
27
+ const limit = input.limit ?? 100;
28
+ const validAgents = new Map(this.#agents
29
+ .list(input)
30
+ .map((agent) => [agent.id, agent.paneId]));
31
+ const pending = [];
32
+ let afterEventId = state.ackedEventId;
33
+ let scanned = 0;
34
+ while (pending.length < limit && scanned < 1_000) {
35
+ const batch = this.#agentEvents.listAfter({
36
+ ...input,
37
+ afterEventId,
38
+ limit: Math.min(100, 1_000 - scanned),
39
+ });
40
+ if (batch.length === 0)
41
+ break;
42
+ scanned += batch.length;
43
+ afterEventId = batch.at(-1)?.id ?? afterEventId;
44
+ for (const event of batch) {
45
+ // Strict identity prevents an old event from being delivered after a pane is rebound.
46
+ const valid = event.agentId !== null &&
47
+ validAgents.get(event.agentId) === event.paneId &&
48
+ event.herdrSessionName === input.herdrSessionName;
49
+ if (valid && event.terminalId !== null && event.terminalId !== input.terminalId) {
50
+ pending.push(event);
51
+ }
52
+ if (pending.length === limit)
53
+ break;
54
+ }
55
+ }
56
+ return pending;
57
+ }
58
+ ack(input) {
59
+ const state = this.#scopes.get(input);
60
+ if (!state?.owner || state.owner.terminalId !== input.terminalId) {
61
+ throw new Error("Only the current orchestrator can acknowledge notifications");
62
+ }
63
+ if (input.eventId <= state.ackedEventId)
64
+ return state;
65
+ const next = this.#agentEvents.nextDeliverableAfter({
66
+ ...input,
67
+ afterEventId: state.ackedEventId,
68
+ ownerTerminalId: input.terminalId,
69
+ });
70
+ if (next?.id === input.eventId)
71
+ return this.#scopes.ack(input);
72
+ if (!next) {
73
+ const candidate = this.#agentEvents.get(input.eventId);
74
+ if (candidate.herdrSessionName === input.herdrSessionName &&
75
+ candidate.workspaceId === input.workspaceId &&
76
+ candidate.id > state.ackedEventId) {
77
+ return this.#scopes.ack(input);
78
+ }
79
+ }
80
+ throw new Error("Only the next pending orchestrator event can be acknowledged");
81
+ }
82
+ move(input) {
83
+ return this.#scopes
84
+ .moveOwner({ ...input, targetAckedEventId: this.#claimCursor(input.to) })
85
+ .map((change) => ({ ...change, reason: "moved" }));
86
+ }
87
+ persistedOwners() {
88
+ return this.#scopes.listOwned();
89
+ }
90
+ #claimCursor(scope) {
91
+ const current = this.#scopes.get(scope);
92
+ return current?.owner ? current.ackedEventId : this.#agentEvents.latestEventId(scope);
93
+ }
94
+ }
95
+ //# sourceMappingURL=agent-orchestrator-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-orchestrator-service.js","sourceRoot":"","sources":["../../../src/observability/agent-orchestrator-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,161 @@
1
+ export type AgentStatus = "blocked" | "done" | "idle" | "unknown" | "working";
2
+ export type HerdrSessionRecord = {
3
+ lastScannedAt: Date | null;
4
+ name: string;
5
+ running: boolean;
6
+ sessionDir: string;
7
+ socketPath: string;
8
+ updatedAt: Date;
9
+ };
10
+ export type HerdrWorkspaceRecord = {
11
+ agentStatus: AgentStatus;
12
+ focused: boolean;
13
+ herdrSessionName: string;
14
+ label: string | null;
15
+ lastSeenAt: Date;
16
+ workspaceId: string;
17
+ };
18
+ export type AgentSessionRef = {
19
+ agent: string;
20
+ kind: "id" | "path";
21
+ source: string;
22
+ value: string;
23
+ };
24
+ export type AgentIndexRecord = {
25
+ agent: string | null;
26
+ agentSession: AgentSessionRef | null;
27
+ agentStatus: AgentStatus;
28
+ cwd: string | null;
29
+ firstSeenAt: Date;
30
+ focused: boolean;
31
+ foregroundCwd: string | null;
32
+ herdrSessionName: string;
33
+ id: string;
34
+ lastSeenAt: Date;
35
+ name: string | null;
36
+ paneId: string;
37
+ paneRevision: number | null;
38
+ paneGeneration?: string | null;
39
+ tabId: string | null;
40
+ terminalId: string | null;
41
+ workspaceId: string;
42
+ };
43
+ export type AgentHistoryRef = {
44
+ kind: "agent_session" | "discovered_file";
45
+ path?: string;
46
+ source: "claude-jsonl" | "codex-jsonl" | "gemini-json" | "opencode-sqlite" | "pi-jsonl" | "unknown";
47
+ value: string;
48
+ };
49
+ export type AgentHistoryExcerpt = {
50
+ ref: string;
51
+ text: string;
52
+ timestamp: string | null;
53
+ };
54
+ export type CompactToolResult = {
55
+ compaction: {
56
+ mode: "failure_focus" | "grouped_matches" | "structured_summary" | "truncated_passthrough" | "web_sources" | "unknown";
57
+ originalChars: number;
58
+ returnedChars: number;
59
+ };
60
+ isError: boolean;
61
+ ref: string;
62
+ text: string;
63
+ toolName: string;
64
+ };
65
+ export type CompactAgentHistory = {
66
+ historyRef: AgentHistoryRef | null;
67
+ lastAssistantMessage: AgentHistoryExcerpt | null;
68
+ lastToolResult: CompactToolResult | null;
69
+ lastUserMessage: AgentHistoryExcerpt | null;
70
+ messageCount: number;
71
+ source: string | null;
72
+ updatedAt: string | null;
73
+ };
74
+ export type AgentHistorySourceFingerprint = {
75
+ mtimeMs: number;
76
+ path: string;
77
+ size: number;
78
+ };
79
+ export type AgentContextSnapshotRecord = {
80
+ agentId: string;
81
+ compactHistory: CompactAgentHistory;
82
+ historyRef: AgentHistoryRef | null;
83
+ paneRevision: number | null;
84
+ sourceFingerprint: AgentHistorySourceFingerprint | null;
85
+ updatedAt: Date;
86
+ };
87
+ export type AgentHistoryMessage = {
88
+ compact?: CompactToolResult;
89
+ ref: string;
90
+ role: "assistant" | "tool_result" | "user";
91
+ text: string;
92
+ timestamp: string | null;
93
+ toolName?: string;
94
+ };
95
+ export type AgentListItem = AgentIndexRecord & {
96
+ history: Pick<CompactAgentHistory, "lastAssistantMessage" | "lastUserMessage" | "source" | "updatedAt">;
97
+ };
98
+ export type AgentGetResult = AgentIndexRecord & {
99
+ history: CompactAgentHistory;
100
+ };
101
+ export type AgentReadResult = AgentIndexRecord & {
102
+ historyRef: AgentHistoryRef | null;
103
+ messages: AgentHistoryMessage[];
104
+ };
105
+ export type AgentEventType = "agent.blocked" | "agent.done" | "agent.idle" | "agent.status.changed" | "agent.tool.failed";
106
+ export type AgentEventRecord = {
107
+ agentId: string | null;
108
+ compactHistory: CompactAgentHistory | null;
109
+ createdAt: Date;
110
+ herdrSessionName: string;
111
+ id: number;
112
+ paneId: string | null;
113
+ paneGeneration?: string | null;
114
+ payload: unknown;
115
+ terminalId: string | null;
116
+ type: AgentEventType;
117
+ workspaceId: string | null;
118
+ };
119
+ export type AgentScope = {
120
+ herdrSessionName: string;
121
+ workspaceId: string;
122
+ };
123
+ export type AgentWorkspaceContextSnapshot = AgentScope & {
124
+ agents: AgentListItem[];
125
+ updatedAt: string;
126
+ };
127
+ export type AgentOrchestratorOwner = {
128
+ paneId: string;
129
+ terminalId: string;
130
+ };
131
+ export type AgentOrchestratorState = AgentScope & {
132
+ ackedEventId: number;
133
+ owner: AgentOrchestratorOwner | null;
134
+ updatedAt: Date;
135
+ };
136
+ export type AgentOrchestratorWireState = AgentScope & {
137
+ ackedEventId: number;
138
+ owner: AgentOrchestratorOwner | null;
139
+ updatedAt: string;
140
+ };
141
+ export type AgentOrchestratorChangeReason = "claimed" | "disconnected" | "moved" | "released" | "startup_timeout";
142
+ export type AgentOrchestratorChanged = {
143
+ current: AgentOrchestratorWireState;
144
+ previous: AgentOrchestratorWireState;
145
+ reason: AgentOrchestratorChangeReason;
146
+ };
147
+ export type PiPresenceRegistration = {
148
+ herdrSocketPath: string;
149
+ paneId: string;
150
+ sessionRef: AgentSessionRef;
151
+ subscriberId: string;
152
+ subscriberKind: "pi";
153
+ workspaceId: string;
154
+ };
155
+ export type AgentQueryScope = {
156
+ all?: boolean;
157
+ herdrSessionName?: string;
158
+ workspaceId?: string;
159
+ };
160
+ export declare function parseAgentStatus(value: unknown): AgentStatus;
161
+ //# sourceMappingURL=contracts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../../src/observability/contracts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export function parseAgentStatus(value) {
2
+ return value === "blocked" ||
3
+ value === "done" ||
4
+ value === "idle" ||
5
+ value === "unknown" ||
6
+ value === "working"
7
+ ? value
8
+ : "unknown";
9
+ }
10
+ //# sourceMappingURL=contracts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../../src/observability/contracts.ts"],"names":[],"mappings":"AAkNA,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,OAAO,KAAK,KAAK,SAAS;QACxB,KAAK,KAAK,MAAM;QAChB,KAAK,KAAK,MAAM;QAChB,KAAK,KAAK,SAAS;QACnB,KAAK,KAAK,SAAS;QACnB,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC"}
@@ -0,0 +1,49 @@
1
+ export declare const agentSessionRefSchema: import("@sinclair/typebox").TObject<{
2
+ agent: import("@sinclair/typebox").TString;
3
+ kind: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"id">, import("@sinclair/typebox").TLiteral<"path">]>;
4
+ source: import("@sinclair/typebox").TString;
5
+ value: import("@sinclair/typebox").TString;
6
+ }>;
7
+ export declare const agentListInputSchema: import("@sinclair/typebox").TObject<{
8
+ all: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
9
+ herdrSessionName: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
10
+ workspaceId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
11
+ }>;
12
+ export declare const agentGetInputSchema: import("@sinclair/typebox").TObject<{
13
+ herdrSessionName: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
14
+ target: import("@sinclair/typebox").TString;
15
+ workspaceId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
16
+ }>;
17
+ export declare const agentReadInputSchema: import("@sinclair/typebox").TObject<{
18
+ herdrSessionName: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
19
+ limit: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
20
+ target: import("@sinclair/typebox").TString;
21
+ workspaceId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
22
+ }>;
23
+ export declare const agentEventsInputSchema: import("@sinclair/typebox").TObject<{
24
+ afterEventId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
25
+ herdrSessionName: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
26
+ limit: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
27
+ workspaceId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
28
+ }>;
29
+ export declare const agentOrchestratorRegisterInputSchema: import("@sinclair/typebox").TObject<{
30
+ herdrSocketPath: import("@sinclair/typebox").TString;
31
+ paneId: import("@sinclair/typebox").TString;
32
+ sessionRef: import("@sinclair/typebox").TObject<{
33
+ agent: import("@sinclair/typebox").TLiteral<"pi">;
34
+ kind: import("@sinclair/typebox").TLiteral<"path">;
35
+ source: import("@sinclair/typebox").TString;
36
+ value: import("@sinclair/typebox").TString;
37
+ }>;
38
+ subscriberId: import("@sinclair/typebox").TString;
39
+ subscriberKind: import("@sinclair/typebox").TLiteral<"pi">;
40
+ workspaceId: import("@sinclair/typebox").TString;
41
+ }>;
42
+ export declare const agentOrchestratorSetInputSchema: import("@sinclair/typebox").TObject<{
43
+ enabled: import("@sinclair/typebox").TBoolean;
44
+ }>;
45
+ export declare const agentOrchestratorGetInputSchema: import("@sinclair/typebox").TObject<{}>;
46
+ export declare const agentOrchestratorAckInputSchema: import("@sinclair/typebox").TObject<{
47
+ eventId: import("@sinclair/typebox").TInteger;
48
+ }>;
49
+ //# sourceMappingURL=schemas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../../src/observability/schemas.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,qBAAqB;;;;;EAQjC,CAAC;AAEF,eAAO,MAAM,oBAAoB;;;;EAOhC,CAAC;AAEF,eAAO,MAAM,mBAAmB;;;;EAO/B,CAAC;AAEF,eAAO,MAAM,oBAAoB;;;;;EAQhC,CAAC;AAEF,eAAO,MAAM,sBAAsB;;;;;EAQlC,CAAC;AAYF,eAAO,MAAM,oCAAoC;;;;;;;;;;;;EAUhD,CAAC;AAEF,eAAO,MAAM,+BAA+B;;EAG3C,CAAC;AAEF,eAAO,MAAM,+BAA+B,yCAAmD,CAAC;AAEhG,eAAO,MAAM,+BAA+B;;EAG3C,CAAC"}
@@ -0,0 +1,47 @@
1
+ import { Type } from "@sinclair/typebox";
2
+ export const agentSessionRefSchema = Type.Object({
3
+ agent: Type.String({ minLength: 1 }),
4
+ kind: Type.Union([Type.Literal("id"), Type.Literal("path")]),
5
+ source: Type.String({ minLength: 1 }),
6
+ value: Type.String({ minLength: 1 }),
7
+ }, { additionalProperties: false });
8
+ export const agentListInputSchema = Type.Object({
9
+ all: Type.Optional(Type.Boolean()),
10
+ herdrSessionName: Type.Optional(Type.String({ minLength: 1 })),
11
+ workspaceId: Type.Optional(Type.String({ minLength: 1 })),
12
+ }, { additionalProperties: false });
13
+ export const agentGetInputSchema = Type.Object({
14
+ herdrSessionName: Type.Optional(Type.String({ minLength: 1 })),
15
+ target: Type.String({ minLength: 1 }),
16
+ workspaceId: Type.Optional(Type.String({ minLength: 1 })),
17
+ }, { additionalProperties: false });
18
+ export const agentReadInputSchema = Type.Object({
19
+ herdrSessionName: Type.Optional(Type.String({ minLength: 1 })),
20
+ limit: Type.Optional(Type.Integer({ minimum: 1, maximum: 500 })),
21
+ target: Type.String({ minLength: 1 }),
22
+ workspaceId: Type.Optional(Type.String({ minLength: 1 })),
23
+ }, { additionalProperties: false });
24
+ export const agentEventsInputSchema = Type.Object({
25
+ afterEventId: Type.Optional(Type.Integer({ minimum: 0 })),
26
+ herdrSessionName: Type.Optional(Type.String({ minLength: 1 })),
27
+ limit: Type.Optional(Type.Integer({ minimum: 1, maximum: 500 })),
28
+ workspaceId: Type.Optional(Type.String({ minLength: 1 })),
29
+ }, { additionalProperties: false });
30
+ const piPresenceSessionRefSchema = Type.Object({
31
+ agent: Type.Literal("pi"),
32
+ kind: Type.Literal("path"),
33
+ source: Type.String({ minLength: 1 }),
34
+ value: Type.String({ minLength: 1 }),
35
+ }, { additionalProperties: false });
36
+ export const agentOrchestratorRegisterInputSchema = Type.Object({
37
+ herdrSocketPath: Type.String({ minLength: 1 }),
38
+ paneId: Type.String({ minLength: 1 }),
39
+ sessionRef: piPresenceSessionRefSchema,
40
+ subscriberId: Type.String({ minLength: 1 }),
41
+ subscriberKind: Type.Literal("pi"),
42
+ workspaceId: Type.String({ minLength: 1 }),
43
+ }, { additionalProperties: false });
44
+ export const agentOrchestratorSetInputSchema = Type.Object({ enabled: Type.Boolean() }, { additionalProperties: false });
45
+ export const agentOrchestratorGetInputSchema = Type.Object({}, { additionalProperties: false });
46
+ export const agentOrchestratorAckInputSchema = Type.Object({ eventId: Type.Integer({ minimum: 1 }) }, { additionalProperties: false });
47
+ //# sourceMappingURL=schemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../../src/observability/schemas.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export declare function encodeJsonLine(value: unknown): string;
2
+ export declare class JsonLineDecoder {
3
+ #private;
4
+ push(chunk: string): unknown[];
5
+ flush(): unknown[];
6
+ }
7
+ //# sourceMappingURL=json-lines.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-lines.d.ts","sourceRoot":"","sources":["../../../src/shared/json-lines.ts"],"names":[],"mappings":"AAAA,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAQrD;AAED,qBAAa,eAAe;;IAG1B,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,EAAE;IAS9B,KAAK,IAAI,OAAO,EAAE;CASnB"}
@@ -0,0 +1,25 @@
1
+ export function encodeJsonLine(value) {
2
+ const encoded = JSON.stringify(value);
3
+ if (encoded === undefined) {
4
+ throw new TypeError("JSON Lines values must be JSON-serializable");
5
+ }
6
+ return `${encoded}\n`;
7
+ }
8
+ export class JsonLineDecoder {
9
+ #buffer = "";
10
+ push(chunk) {
11
+ this.#buffer += chunk;
12
+ const lines = this.#buffer.split("\n");
13
+ this.#buffer = lines.pop() ?? "";
14
+ return lines.filter((line) => line.length > 0).map((line) => JSON.parse(line));
15
+ }
16
+ flush() {
17
+ if (this.#buffer.length === 0) {
18
+ return [];
19
+ }
20
+ const line = this.#buffer;
21
+ this.#buffer = "";
22
+ return [JSON.parse(line)];
23
+ }
24
+ }
25
+ //# sourceMappingURL=json-lines.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-lines.js","sourceRoot":"","sources":["../../../src/shared/json-lines.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAEtC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,IAAI,SAAS,CAAC,6CAA6C,CAAC,CAAC;IACrE,CAAC;IAED,OAAO,GAAG,OAAO,IAAI,CAAC;AACxB,CAAC;AAED,MAAM,OAAO,eAAe;IAC1B,OAAO,GAAG,EAAE,CAAC;IAEb,IAAI,CAAC,KAAa;QAChB,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC;QAEtB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;QAEjC,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IACjF,CAAC;IAED,KAAK;QACH,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC;QAC1B,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5B,CAAC;CACF"}
@@ -0,0 +1,90 @@
1
+ CREATE TABLE `agent_events` (
2
+ `agent_id` text,
3
+ `compact_history_json` text,
4
+ `created_at` integer NOT NULL,
5
+ `herdr_session_name` text NOT NULL,
6
+ `id` integer PRIMARY KEY AUTOINCREMENT NOT NULL,
7
+ `idempotency_key` text,
8
+ `pane_id` text,
9
+ `payload_json` text NOT NULL,
10
+ `type` text NOT NULL,
11
+ `workspace_id` text,
12
+ FOREIGN KEY (`agent_id`) REFERENCES `agents`(`id`) ON UPDATE no action ON DELETE set null,
13
+ FOREIGN KEY (`herdr_session_name`) REFERENCES `herdr_sessions`(`name`) ON UPDATE no action ON DELETE cascade
14
+ );
15
+ --> statement-breakpoint
16
+ CREATE UNIQUE INDEX `agent_events_session_idempotency_idx` ON `agent_events` (`herdr_session_name`,`idempotency_key`);--> statement-breakpoint
17
+ CREATE TABLE `agent_history_cache` (
18
+ `compact_history_json` text NOT NULL,
19
+ `formatter_version` text NOT NULL,
20
+ `history_ref_json` text NOT NULL,
21
+ `id` integer PRIMARY KEY AUTOINCREMENT NOT NULL,
22
+ `source_mtime_ms` integer NOT NULL,
23
+ `source_path` text NOT NULL,
24
+ `source_size` integer NOT NULL,
25
+ `updated_at` integer NOT NULL
26
+ );
27
+ --> statement-breakpoint
28
+ CREATE UNIQUE INDEX `agent_history_cache_source_formatter_idx` ON `agent_history_cache` (`source_path`,`formatter_version`);--> statement-breakpoint
29
+ CREATE TABLE `agent_notification_cursors` (
30
+ `acked_event_id` integer DEFAULT 0 NOT NULL,
31
+ `auto_resume_event_id` integer DEFAULT 0 NOT NULL,
32
+ `delivered_event_id` integer DEFAULT 0 NOT NULL,
33
+ `hidden_context_event_id` integer DEFAULT 0 NOT NULL,
34
+ `subscription_id` text PRIMARY KEY NOT NULL,
35
+ `updated_at` integer NOT NULL,
36
+ FOREIGN KEY (`subscription_id`) REFERENCES `agent_notification_subscriptions`(`id`) ON UPDATE no action ON DELETE cascade
37
+ );
38
+ --> statement-breakpoint
39
+ CREATE TABLE `agent_notification_subscriptions` (
40
+ `auto_resume` integer NOT NULL,
41
+ `created_at` integer NOT NULL,
42
+ `herdr_session_name` text,
43
+ `id` text PRIMARY KEY NOT NULL,
44
+ `subscriber_id` text NOT NULL,
45
+ `subscriber_kind` text NOT NULL,
46
+ `updated_at` integer NOT NULL,
47
+ `workspace_id` text
48
+ );
49
+ --> statement-breakpoint
50
+ CREATE UNIQUE INDEX `agent_notification_subscriptions_scope_subscriber_idx` ON `agent_notification_subscriptions` (`herdr_session_name`,`workspace_id`,`subscriber_id`);--> statement-breakpoint
51
+ CREATE TABLE `agents` (
52
+ `agent` text,
53
+ `agent_session_json` text,
54
+ `agent_status` text NOT NULL,
55
+ `cwd` text,
56
+ `first_seen_at` integer NOT NULL,
57
+ `focused` integer NOT NULL,
58
+ `foreground_cwd` text,
59
+ `herdr_session_name` text NOT NULL,
60
+ `id` text PRIMARY KEY NOT NULL,
61
+ `last_seen_at` integer NOT NULL,
62
+ `pane_id` text NOT NULL,
63
+ `tab_id` text,
64
+ `terminal_id` text,
65
+ `workspace_id` text NOT NULL,
66
+ FOREIGN KEY (`herdr_session_name`) REFERENCES `herdr_sessions`(`name`) ON UPDATE no action ON DELETE cascade
67
+ );
68
+ --> statement-breakpoint
69
+ CREATE UNIQUE INDEX `agents_session_pane_idx` ON `agents` (`herdr_session_name`,`pane_id`);--> statement-breakpoint
70
+ CREATE UNIQUE INDEX `agents_session_terminal_idx` ON `agents` (`herdr_session_name`,`terminal_id`);--> statement-breakpoint
71
+ CREATE TABLE `herdr_sessions` (
72
+ `last_scanned_at` integer,
73
+ `name` text PRIMARY KEY NOT NULL,
74
+ `running` integer NOT NULL,
75
+ `session_dir` text NOT NULL,
76
+ `socket_path` text NOT NULL,
77
+ `updated_at` integer NOT NULL
78
+ );
79
+ --> statement-breakpoint
80
+ CREATE TABLE `herdr_workspaces` (
81
+ `agent_status` text NOT NULL,
82
+ `focused` integer NOT NULL,
83
+ `herdr_session_name` text NOT NULL,
84
+ `label` text,
85
+ `last_seen_at` integer NOT NULL,
86
+ `workspace_id` text NOT NULL,
87
+ FOREIGN KEY (`herdr_session_name`) REFERENCES `herdr_sessions`(`name`) ON UPDATE no action ON DELETE cascade
88
+ );
89
+ --> statement-breakpoint
90
+ CREATE UNIQUE INDEX `herdr_workspaces_session_workspace_idx` ON `herdr_workspaces` (`herdr_session_name`,`workspace_id`);
@@ -0,0 +1,13 @@
1
+ CREATE TABLE `agent_orchestrator_scopes` (
2
+ `acked_event_id` integer NOT NULL,
3
+ `created_at` integer NOT NULL,
4
+ `herdr_session_name` text NOT NULL,
5
+ `owner_pane_id` text,
6
+ `owner_terminal_id` text,
7
+ `updated_at` integer NOT NULL,
8
+ `workspace_id` text NOT NULL,
9
+ PRIMARY KEY(`herdr_session_name`, `workspace_id`),
10
+ FOREIGN KEY (`herdr_session_name`) REFERENCES `herdr_sessions`(`name`) ON UPDATE no action ON DELETE cascade
11
+ );
12
+ --> statement-breakpoint
13
+ ALTER TABLE `agent_events` ADD `terminal_id` text;
@@ -0,0 +1,2 @@
1
+ DROP TABLE `agent_notification_cursors`;--> statement-breakpoint
2
+ DROP TABLE `agent_notification_subscriptions`;
@@ -0,0 +1,14 @@
1
+ CREATE TABLE `agent_context_snapshots` (
2
+ `agent_id` text PRIMARY KEY NOT NULL,
3
+ `compact_history_json` text NOT NULL,
4
+ `history_ref_json` text,
5
+ `pane_revision` integer,
6
+ `source_path` text,
7
+ `source_mtime_ms` integer,
8
+ `source_size` integer,
9
+ `updated_at` integer NOT NULL,
10
+ FOREIGN KEY (`agent_id`) REFERENCES `agents`(`id`) ON UPDATE no action ON DELETE cascade
11
+ );
12
+ --> statement-breakpoint
13
+ ALTER TABLE `agents` ADD `agent_session_hint_json` text;--> statement-breakpoint
14
+ ALTER TABLE `agents` ADD `pane_revision` integer;
@@ -0,0 +1 @@
1
+ ALTER TABLE `agents` ADD `name` text;
@@ -0,0 +1,7 @@
1
+ ALTER TABLE `agents` ADD `pane_generation` text;
2
+ --> statement-breakpoint
3
+ ALTER TABLE `agent_events` ADD `pane_generation` text;
4
+ --> statement-breakpoint
5
+ ALTER TABLE `agent_events` ADD `deliverable` integer NOT NULL DEFAULT 1;
6
+ --> statement-breakpoint
7
+ CREATE INDEX `agent_events_session_pane_generation_idx` ON `agent_events` (`herdr_session_name`,`pane_id`,`pane_generation`);