@phigon/observer 8.0.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 (284) hide show
  1. package/README.md +303 -0
  2. package/dist/bin/guardian-runner-darwin-amd64 +0 -0
  3. package/dist/bin/guardian-runner-darwin-arm64 +0 -0
  4. package/dist/bin/guardian-runner-linux-amd64 +0 -0
  5. package/dist/bin/guardian-runner-linux-arm64 +0 -0
  6. package/dist/bin/guardian-runner-windows-amd64.exe +0 -0
  7. package/dist/bin/guardian-runner-windows-arm64.exe +0 -0
  8. package/dist/src/action-policy.d.ts +38 -0
  9. package/dist/src/action-policy.d.ts.map +1 -0
  10. package/dist/src/action-policy.js +269 -0
  11. package/dist/src/action-policy.js.map +1 -0
  12. package/dist/src/activity/adapters/claude.d.ts +3 -0
  13. package/dist/src/activity/adapters/claude.d.ts.map +1 -0
  14. package/dist/src/activity/adapters/claude.js +89 -0
  15. package/dist/src/activity/adapters/claude.js.map +1 -0
  16. package/dist/src/activity/adapters/codex.d.ts +3 -0
  17. package/dist/src/activity/adapters/codex.d.ts.map +1 -0
  18. package/dist/src/activity/adapters/codex.js +277 -0
  19. package/dist/src/activity/adapters/codex.js.map +1 -0
  20. package/dist/src/activity/adapters/copilot.d.ts +2 -0
  21. package/dist/src/activity/adapters/copilot.d.ts.map +1 -0
  22. package/dist/src/activity/adapters/copilot.js +4 -0
  23. package/dist/src/activity/adapters/copilot.js.map +1 -0
  24. package/dist/src/activity/adapters/generic.d.ts +2 -0
  25. package/dist/src/activity/adapters/generic.d.ts.map +1 -0
  26. package/dist/src/activity/adapters/generic.js +4 -0
  27. package/dist/src/activity/adapters/generic.js.map +1 -0
  28. package/dist/src/activity/adapters/hermes.d.ts +2 -0
  29. package/dist/src/activity/adapters/hermes.d.ts.map +1 -0
  30. package/dist/src/activity/adapters/hermes.js +4 -0
  31. package/dist/src/activity/adapters/hermes.js.map +1 -0
  32. package/dist/src/activity/adapters/openai-compatible.d.ts +4 -0
  33. package/dist/src/activity/adapters/openai-compatible.d.ts.map +1 -0
  34. package/dist/src/activity/adapters/openai-compatible.js +116 -0
  35. package/dist/src/activity/adapters/openai-compatible.js.map +1 -0
  36. package/dist/src/activity/adapters/openclaw.d.ts +2 -0
  37. package/dist/src/activity/adapters/openclaw.d.ts.map +1 -0
  38. package/dist/src/activity/adapters/openclaw.js +4 -0
  39. package/dist/src/activity/adapters/openclaw.js.map +1 -0
  40. package/dist/src/activity/adapters/opencode.d.ts +3 -0
  41. package/dist/src/activity/adapters/opencode.d.ts.map +1 -0
  42. package/dist/src/activity/adapters/opencode.js +137 -0
  43. package/dist/src/activity/adapters/opencode.js.map +1 -0
  44. package/dist/src/activity/bridges.d.ts +7 -0
  45. package/dist/src/activity/bridges.d.ts.map +1 -0
  46. package/dist/src/activity/bridges.js +17 -0
  47. package/dist/src/activity/bridges.js.map +1 -0
  48. package/dist/src/activity/collector.d.ts +90 -0
  49. package/dist/src/activity/collector.d.ts.map +1 -0
  50. package/dist/src/activity/collector.js +706 -0
  51. package/dist/src/activity/collector.js.map +1 -0
  52. package/dist/src/activity/index.d.ts +14 -0
  53. package/dist/src/activity/index.d.ts.map +1 -0
  54. package/dist/src/activity/index.js +14 -0
  55. package/dist/src/activity/index.js.map +1 -0
  56. package/dist/src/activity/ingest.d.ts +15 -0
  57. package/dist/src/activity/ingest.d.ts.map +1 -0
  58. package/dist/src/activity/ingest.js +103 -0
  59. package/dist/src/activity/ingest.js.map +1 -0
  60. package/dist/src/activity/native-capabilities.d.ts +14 -0
  61. package/dist/src/activity/native-capabilities.d.ts.map +1 -0
  62. package/dist/src/activity/native-capabilities.js +85 -0
  63. package/dist/src/activity/native-capabilities.js.map +1 -0
  64. package/dist/src/activity/normalize.d.ts +17 -0
  65. package/dist/src/activity/normalize.d.ts.map +1 -0
  66. package/dist/src/activity/normalize.js +416 -0
  67. package/dist/src/activity/normalize.js.map +1 -0
  68. package/dist/src/activity/opencode-sqlite-source.d.ts +19 -0
  69. package/dist/src/activity/opencode-sqlite-source.d.ts.map +1 -0
  70. package/dist/src/activity/opencode-sqlite-source.js +305 -0
  71. package/dist/src/activity/opencode-sqlite-source.js.map +1 -0
  72. package/dist/src/activity/policy.d.ts +48 -0
  73. package/dist/src/activity/policy.d.ts.map +1 -0
  74. package/dist/src/activity/policy.js +436 -0
  75. package/dist/src/activity/policy.js.map +1 -0
  76. package/dist/src/activity/record.d.ts +7 -0
  77. package/dist/src/activity/record.d.ts.map +1 -0
  78. package/dist/src/activity/record.js +61 -0
  79. package/dist/src/activity/record.js.map +1 -0
  80. package/dist/src/activity/source-reader.d.ts +46 -0
  81. package/dist/src/activity/source-reader.d.ts.map +1 -0
  82. package/dist/src/activity/source-reader.js +594 -0
  83. package/dist/src/activity/source-reader.js.map +1 -0
  84. package/dist/src/activity/types.d.ts +21 -0
  85. package/dist/src/activity/types.d.ts.map +1 -0
  86. package/dist/src/activity/types.js +2 -0
  87. package/dist/src/activity/types.js.map +1 -0
  88. package/dist/src/agent-action-executor.d.ts +21 -0
  89. package/dist/src/agent-action-executor.d.ts.map +1 -0
  90. package/dist/src/agent-action-executor.js +248 -0
  91. package/dist/src/agent-action-executor.js.map +1 -0
  92. package/dist/src/agentic-guardian.d.ts +50 -0
  93. package/dist/src/agentic-guardian.d.ts.map +1 -0
  94. package/dist/src/agentic-guardian.js +220 -0
  95. package/dist/src/agentic-guardian.js.map +1 -0
  96. package/dist/src/atomic-replace.d.ts +4 -0
  97. package/dist/src/atomic-replace.d.ts.map +1 -0
  98. package/dist/src/atomic-replace.js +18 -0
  99. package/dist/src/atomic-replace.js.map +1 -0
  100. package/dist/src/cli.d.ts +11 -0
  101. package/dist/src/cli.d.ts.map +1 -0
  102. package/dist/src/cli.js +1244 -0
  103. package/dist/src/cli.js.map +1 -0
  104. package/dist/src/config.d.ts +68 -0
  105. package/dist/src/config.d.ts.map +1 -0
  106. package/dist/src/config.js +260 -0
  107. package/dist/src/config.js.map +1 -0
  108. package/dist/src/credential-store.d.ts +22 -0
  109. package/dist/src/credential-store.d.ts.map +1 -0
  110. package/dist/src/credential-store.js +91 -0
  111. package/dist/src/credential-store.js.map +1 -0
  112. package/dist/src/custom-agent-registry.d.ts +26 -0
  113. package/dist/src/custom-agent-registry.d.ts.map +1 -0
  114. package/dist/src/custom-agent-registry.js +288 -0
  115. package/dist/src/custom-agent-registry.js.map +1 -0
  116. package/dist/src/discovery/adapters/claude.d.ts +3 -0
  117. package/dist/src/discovery/adapters/claude.d.ts.map +1 -0
  118. package/dist/src/discovery/adapters/claude.js +26 -0
  119. package/dist/src/discovery/adapters/claude.js.map +1 -0
  120. package/dist/src/discovery/adapters/codex.d.ts +3 -0
  121. package/dist/src/discovery/adapters/codex.d.ts.map +1 -0
  122. package/dist/src/discovery/adapters/codex.js +23 -0
  123. package/dist/src/discovery/adapters/codex.js.map +1 -0
  124. package/dist/src/discovery/adapters/custom.d.ts +4 -0
  125. package/dist/src/discovery/adapters/custom.d.ts.map +1 -0
  126. package/dist/src/discovery/adapters/custom.js +24 -0
  127. package/dist/src/discovery/adapters/custom.js.map +1 -0
  128. package/dist/src/discovery/adapters/generic.d.ts +3 -0
  129. package/dist/src/discovery/adapters/generic.d.ts.map +1 -0
  130. package/dist/src/discovery/adapters/generic.js +126 -0
  131. package/dist/src/discovery/adapters/generic.js.map +1 -0
  132. package/dist/src/discovery/adapters/hermes.d.ts +3 -0
  133. package/dist/src/discovery/adapters/hermes.d.ts.map +1 -0
  134. package/dist/src/discovery/adapters/hermes.js +22 -0
  135. package/dist/src/discovery/adapters/hermes.js.map +1 -0
  136. package/dist/src/discovery/adapters/openclaw.d.ts +3 -0
  137. package/dist/src/discovery/adapters/openclaw.d.ts.map +1 -0
  138. package/dist/src/discovery/adapters/openclaw.js +22 -0
  139. package/dist/src/discovery/adapters/openclaw.js.map +1 -0
  140. package/dist/src/discovery/engine.d.ts +17 -0
  141. package/dist/src/discovery/engine.d.ts.map +1 -0
  142. package/dist/src/discovery/engine.js +164 -0
  143. package/dist/src/discovery/engine.js.map +1 -0
  144. package/dist/src/discovery/evidence.d.ts +29 -0
  145. package/dist/src/discovery/evidence.d.ts.map +1 -0
  146. package/dist/src/discovery/evidence.js +2 -0
  147. package/dist/src/discovery/evidence.js.map +1 -0
  148. package/dist/src/discovery/index.d.ts +11 -0
  149. package/dist/src/discovery/index.d.ts.map +1 -0
  150. package/dist/src/discovery/index.js +11 -0
  151. package/dist/src/discovery/index.js.map +1 -0
  152. package/dist/src/discovery/known-agent.d.ts +17 -0
  153. package/dist/src/discovery/known-agent.d.ts.map +1 -0
  154. package/dist/src/discovery/known-agent.js +193 -0
  155. package/dist/src/discovery/known-agent.js.map +1 -0
  156. package/dist/src/discovery/process-identity.d.ts +19 -0
  157. package/dist/src/discovery/process-identity.d.ts.map +1 -0
  158. package/dist/src/discovery/process-identity.js +73 -0
  159. package/dist/src/discovery/process-identity.js.map +1 -0
  160. package/dist/src/discovery/system-evidence.d.ts +9 -0
  161. package/dist/src/discovery/system-evidence.d.ts.map +1 -0
  162. package/dist/src/discovery/system-evidence.js +270 -0
  163. package/dist/src/discovery/system-evidence.js.map +1 -0
  164. package/dist/src/discovery/types.d.ts +21 -0
  165. package/dist/src/discovery/types.d.ts.map +1 -0
  166. package/dist/src/discovery/types.js +2 -0
  167. package/dist/src/discovery/types.js.map +1 -0
  168. package/dist/src/event-queue.d.ts +32 -0
  169. package/dist/src/event-queue.d.ts.map +1 -0
  170. package/dist/src/event-queue.js +125 -0
  171. package/dist/src/event-queue.js.map +1 -0
  172. package/dist/src/event-spool.d.ts +19 -0
  173. package/dist/src/event-spool.d.ts.map +1 -0
  174. package/dist/src/event-spool.js +350 -0
  175. package/dist/src/event-spool.js.map +1 -0
  176. package/dist/src/generated/phigon/v1/action_pb.d.ts +223 -0
  177. package/dist/src/generated/phigon/v1/action_pb.d.ts.map +1 -0
  178. package/dist/src/generated/phigon/v1/action_pb.js +96 -0
  179. package/dist/src/generated/phigon/v1/action_pb.js.map +1 -0
  180. package/dist/src/generated/phigon/v1/common_pb.d.ts +255 -0
  181. package/dist/src/generated/phigon/v1/common_pb.d.ts.map +1 -0
  182. package/dist/src/generated/phigon/v1/common_pb.js +242 -0
  183. package/dist/src/generated/phigon/v1/common_pb.js.map +1 -0
  184. package/dist/src/generated/phigon/v1/history_sync_pb.d.ts +119 -0
  185. package/dist/src/generated/phigon/v1/history_sync_pb.d.ts.map +1 -0
  186. package/dist/src/generated/phigon/v1/history_sync_pb.js +46 -0
  187. package/dist/src/generated/phigon/v1/history_sync_pb.js.map +1 -0
  188. package/dist/src/generated/phigon/v1/identity_pb.d.ts +235 -0
  189. package/dist/src/generated/phigon/v1/identity_pb.d.ts.map +1 -0
  190. package/dist/src/generated/phigon/v1/identity_pb.js +31 -0
  191. package/dist/src/generated/phigon/v1/identity_pb.js.map +1 -0
  192. package/dist/src/generated/phigon/v1/observer_service_pb.d.ts +362 -0
  193. package/dist/src/generated/phigon/v1/observer_service_pb.d.ts.map +1 -0
  194. package/dist/src/generated/phigon/v1/observer_service_pb.js +120 -0
  195. package/dist/src/generated/phigon/v1/observer_service_pb.js.map +1 -0
  196. package/dist/src/generated/phigon/v1/policy_pb.d.ts +456 -0
  197. package/dist/src/generated/phigon/v1/policy_pb.d.ts.map +1 -0
  198. package/dist/src/generated/phigon/v1/policy_pb.js +161 -0
  199. package/dist/src/generated/phigon/v1/policy_pb.js.map +1 -0
  200. package/dist/src/generated/phigon/v1/supervision_pb.d.ts +849 -0
  201. package/dist/src/generated/phigon/v1/supervision_pb.d.ts.map +1 -0
  202. package/dist/src/generated/phigon/v1/supervision_pb.js +384 -0
  203. package/dist/src/generated/phigon/v1/supervision_pb.js.map +1 -0
  204. package/dist/src/generated/phigon/v1/telemetry_pb.d.ts +761 -0
  205. package/dist/src/generated/phigon/v1/telemetry_pb.d.ts.map +1 -0
  206. package/dist/src/generated/phigon/v1/telemetry_pb.js +309 -0
  207. package/dist/src/generated/phigon/v1/telemetry_pb.js.map +1 -0
  208. package/dist/src/guardian-containment.d.ts +30 -0
  209. package/dist/src/guardian-containment.d.ts.map +1 -0
  210. package/dist/src/guardian-containment.js +113 -0
  211. package/dist/src/guardian-containment.js.map +1 -0
  212. package/dist/src/guardian-decision-journal.d.ts +29 -0
  213. package/dist/src/guardian-decision-journal.d.ts.map +1 -0
  214. package/dist/src/guardian-decision-journal.js +55 -0
  215. package/dist/src/guardian-decision-journal.js.map +1 -0
  216. package/dist/src/guardian-execution-manifest.d.ts +29 -0
  217. package/dist/src/guardian-execution-manifest.d.ts.map +1 -0
  218. package/dist/src/guardian-execution-manifest.js +95 -0
  219. package/dist/src/guardian-execution-manifest.js.map +1 -0
  220. package/dist/src/guardian-hosted-client.d.ts +10 -0
  221. package/dist/src/guardian-hosted-client.d.ts.map +1 -0
  222. package/dist/src/guardian-hosted-client.js +45 -0
  223. package/dist/src/guardian-hosted-client.js.map +1 -0
  224. package/dist/src/guardian-managed-exec.d.ts +21 -0
  225. package/dist/src/guardian-managed-exec.d.ts.map +1 -0
  226. package/dist/src/guardian-managed-exec.js +249 -0
  227. package/dist/src/guardian-managed-exec.js.map +1 -0
  228. package/dist/src/guardian-model-bridge.d.ts +13 -0
  229. package/dist/src/guardian-model-bridge.d.ts.map +1 -0
  230. package/dist/src/guardian-model-bridge.js +87 -0
  231. package/dist/src/guardian-model-bridge.js.map +1 -0
  232. package/dist/src/guardian-native.d.ts +3 -0
  233. package/dist/src/guardian-native.d.ts.map +1 -0
  234. package/dist/src/guardian-native.js +13 -0
  235. package/dist/src/guardian-native.js.map +1 -0
  236. package/dist/src/guardian-process-monitor.d.ts +20 -0
  237. package/dist/src/guardian-process-monitor.d.ts.map +1 -0
  238. package/dist/src/guardian-process-monitor.js +98 -0
  239. package/dist/src/guardian-process-monitor.js.map +1 -0
  240. package/dist/src/health.d.ts +35 -0
  241. package/dist/src/health.d.ts.map +1 -0
  242. package/dist/src/health.js +41 -0
  243. package/dist/src/health.js.map +1 -0
  244. package/dist/src/historical-identity-store.d.ts +20 -0
  245. package/dist/src/historical-identity-store.d.ts.map +1 -0
  246. package/dist/src/historical-identity-store.js +391 -0
  247. package/dist/src/historical-identity-store.js.map +1 -0
  248. package/dist/src/index.d.ts +14 -0
  249. package/dist/src/index.d.ts.map +1 -0
  250. package/dist/src/index.js +14 -0
  251. package/dist/src/index.js.map +1 -0
  252. package/dist/src/installation.d.ts +2 -0
  253. package/dist/src/installation.d.ts.map +1 -0
  254. package/dist/src/installation.js +44 -0
  255. package/dist/src/installation.js.map +1 -0
  256. package/dist/src/machine-command-executor.d.ts +28 -0
  257. package/dist/src/machine-command-executor.d.ts.map +1 -0
  258. package/dist/src/machine-command-executor.js +166 -0
  259. package/dist/src/machine-command-executor.js.map +1 -0
  260. package/dist/src/pair.d.ts +21 -0
  261. package/dist/src/pair.d.ts.map +1 -0
  262. package/dist/src/pair.js +125 -0
  263. package/dist/src/pair.js.map +1 -0
  264. package/dist/src/remove-machine.d.ts +15 -0
  265. package/dist/src/remove-machine.d.ts.map +1 -0
  266. package/dist/src/remove-machine.js +77 -0
  267. package/dist/src/remove-machine.js.map +1 -0
  268. package/dist/src/stream-client.d.ts +42 -0
  269. package/dist/src/stream-client.d.ts.map +1 -0
  270. package/dist/src/stream-client.js +867 -0
  271. package/dist/src/stream-client.js.map +1 -0
  272. package/dist/src/stream-state.d.ts +13 -0
  273. package/dist/src/stream-state.d.ts.map +1 -0
  274. package/dist/src/stream-state.js +128 -0
  275. package/dist/src/stream-state.js.map +1 -0
  276. package/dist/src/windows-process.d.ts +7 -0
  277. package/dist/src/windows-process.d.ts.map +1 -0
  278. package/dist/src/windows-process.js +17 -0
  279. package/dist/src/windows-process.js.map +1 -0
  280. package/package.json +78 -0
  281. package/scripts/install.mjs +308 -0
  282. package/scripts/managed-service.mjs +132 -0
  283. package/scripts/verify-guardian-release.mjs +42 -0
  284. package/scripts/windows-app-control.mjs +117 -0
@@ -0,0 +1,594 @@
1
+ import { createHash, randomUUID } from "node:crypto";
2
+ import { chmod, mkdir, open, readFile, readdir, realpath, stat, unlink, writeFile, } from "node:fs/promises";
3
+ import { homedir } from "node:os";
4
+ import { basename, join, relative, resolve, sep } from "node:path";
5
+ import { atomicReplace } from "../atomic-replace.js";
6
+ const maxSourceFiles = 256;
7
+ const historicalFilesPerScan = 16;
8
+ const historicalRecordsPerScan = 4;
9
+ const maxDirectoryDepth = 8;
10
+ const maxReadBytesPerFile = 8 << 20;
11
+ const defaultInitialReplayBytes = 256 << 10;
12
+ const maxLineBytes = 1 << 20;
13
+ const maxCursorEntries = 16_384;
14
+ export class ActivityCursorStore {
15
+ #dataDirectory;
16
+ #path;
17
+ constructor(dataDirectory) {
18
+ this.#dataDirectory = dataDirectory;
19
+ this.#path = join(dataDirectory, "activity-cursors.json");
20
+ }
21
+ async load() {
22
+ let raw;
23
+ try {
24
+ raw = await readFile(this.#path, "utf8");
25
+ }
26
+ catch (error) {
27
+ if (isNodeError(error) && error.code === "ENOENT")
28
+ return new Map();
29
+ throw error;
30
+ }
31
+ let value;
32
+ try {
33
+ value = JSON.parse(raw);
34
+ }
35
+ catch {
36
+ // Offsets are an optimization, not source history. Keep the damaged
37
+ // checkpoint for inspection and rescan the original source records.
38
+ // Their stable source IDs let the server deduplicate retained events.
39
+ await writeFile(`${this.#path}.${randomUUID()}.corrupt`, raw, {
40
+ encoding: "utf8", flag: "wx", mode: 0o600, flush: true,
41
+ });
42
+ const recovered = new Map();
43
+ await this.save(recovered);
44
+ process.emitWarning("Saved activity checkpoints were unreadable. Available source history will be rescanned using stable record IDs.", { code: "PHIGON_CURSOR_RECOVERY" });
45
+ return recovered;
46
+ }
47
+ if (typeof value !== "object" ||
48
+ value === null ||
49
+ !("version" in value) ||
50
+ value.version !== 1 ||
51
+ !("files" in value) ||
52
+ typeof value.files !== "object" ||
53
+ value.files === null) {
54
+ throw new Error("Activity cursor state is invalid.");
55
+ }
56
+ const entries = Object.entries(value.files).slice(0, maxCursorEntries);
57
+ const result = new Map();
58
+ for (const [key, offset] of entries) {
59
+ if (/^[a-f0-9]{64}$/u.test(key) &&
60
+ typeof offset === "number" &&
61
+ Number.isSafeInteger(offset) &&
62
+ offset >= 0) {
63
+ result.set(key, offset);
64
+ }
65
+ }
66
+ return result;
67
+ }
68
+ async save(cursors) {
69
+ await mkdir(this.#dataDirectory, { recursive: true, mode: 0o700 });
70
+ await chmod(this.#dataDirectory, 0o700);
71
+ const files = Object.fromEntries([...cursors.entries()]
72
+ .slice(-maxCursorEntries)
73
+ .sort(([left], [right]) => left.localeCompare(right)));
74
+ const state = { version: 1, files };
75
+ const temporary = `${this.#path}.${process.pid}.${randomUUID()}.tmp`;
76
+ try {
77
+ await writeFile(temporary, `${JSON.stringify(state)}\n`, {
78
+ encoding: "utf8",
79
+ flag: "wx",
80
+ mode: 0o600,
81
+ flush: true,
82
+ });
83
+ await atomicReplace(temporary, this.#path);
84
+ await chmod(this.#path, 0o600);
85
+ }
86
+ catch (error) {
87
+ try {
88
+ await unlink(temporary);
89
+ }
90
+ catch {
91
+ // The temporary file may not have been created.
92
+ }
93
+ throw error;
94
+ }
95
+ }
96
+ }
97
+ export class JSONLSourceReader {
98
+ #cursorStore;
99
+ #replayOnFirstStart;
100
+ #initialReplayBytes;
101
+ #initialReplaySessions;
102
+ #mode;
103
+ #cursors;
104
+ #initialScanComplete = false;
105
+ #generation = 0;
106
+ #committedGeneration = 0;
107
+ #sourceCache;
108
+ #completedHistoryFiles = new Map();
109
+ constructor(dataDirectory, replayOnFirstStart = false, initialReplayBytes = defaultInitialReplayBytes, initialReplaySessions = 1, mode = "live") {
110
+ this.#cursorStore = new ActivityCursorStore(dataDirectory);
111
+ this.#replayOnFirstStart = replayOnFirstStart;
112
+ this.#initialReplayBytes = Math.min(maxReadBytesPerFile, Math.max(1, initialReplayBytes));
113
+ this.#initialReplaySessions = Math.min(maxSourceFiles, Math.max(1, initialReplaySessions));
114
+ this.#mode = mode;
115
+ }
116
+ async scan(sources, maxRecords) {
117
+ this.#cursors ??= await this.#cursorStore.load();
118
+ const records = [];
119
+ let fileCount = 0;
120
+ let malformed = 0;
121
+ let oversized = 0;
122
+ let candidates = [];
123
+ const cacheKey = JSON.stringify(sources);
124
+ if (this.#mode === "history" && this.#sourceCache?.key === cacheKey && Date.now() - this.#sourceCache.at < 5_000) {
125
+ candidates = this.#sourceCache.files;
126
+ }
127
+ else {
128
+ for (const source of sources) {
129
+ if (source.format === "opencode-sqlite")
130
+ continue;
131
+ for (const configuredRoot of source.roots) {
132
+ const root = expandedActivityRoot(configuredRoot);
133
+ const rootFiles = await listJSONLFiles(root);
134
+ for (const file of rootFiles) {
135
+ let canonicalPath;
136
+ try {
137
+ canonicalPath = await realpath(file.path);
138
+ }
139
+ catch (error) {
140
+ if (isTransientSourceError(error))
141
+ continue;
142
+ throw error;
143
+ }
144
+ candidates.push({
145
+ adapterId: source.adapterId,
146
+ ...(source.sourceDisplayName === undefined
147
+ ? {}
148
+ : { sourceDisplayName: source.sourceDisplayName }),
149
+ root,
150
+ path: canonicalPath,
151
+ modifiedMs: file.modifiedMs,
152
+ });
153
+ if (candidates.length > maxCursorEntries * 2) {
154
+ candidates = reconciledSourceFiles(candidates);
155
+ candidates.sort(recentFileFirst);
156
+ candidates.length = maxCursorEntries;
157
+ }
158
+ }
159
+ }
160
+ }
161
+ this.#sourceCache = { key: cacheKey, at: Date.now(), files: candidates };
162
+ }
163
+ const recentCandidates = reconciledSourceFiles(candidates)
164
+ .sort(recentFileFirst)
165
+ .slice(0, maxCursorEntries);
166
+ const initialScan = !this.#initialScanComplete;
167
+ const selected = this.#mode === "history"
168
+ ? await this.#pendingHistoryFiles(recentCandidates)
169
+ : recentCandidates.slice(0, maxSourceFiles);
170
+ const replayFiles = initialScan && this.#replayOnFirstStart
171
+ ? newestFilesPerAdapter(selected, this.#initialReplaySessions)
172
+ : new Set();
173
+ if (initialScan && this.#mode === "live") {
174
+ for (const file of [...recentCandidates].reverse()) {
175
+ if (!replayFiles.has(file.path)) {
176
+ try {
177
+ await this.#baselineFile(file.root, file.path);
178
+ }
179
+ catch (error) {
180
+ if (!isTransientSourceError(error))
181
+ throw error;
182
+ }
183
+ }
184
+ }
185
+ }
186
+ let remainingRecords = maxRecords ?? (this.#mode === "history"
187
+ ? historicalRecordsPerScan
188
+ : Number.MAX_SAFE_INTEGER);
189
+ // A busy JSONL source must not starve OpenCode's independent database.
190
+ const reservedDatabaseRecords = sources.some((source) => source.format === "opencode-sqlite")
191
+ ? Math.floor(remainingRecords / 2)
192
+ : 0;
193
+ for (const file of selected) {
194
+ if (remainingRecords <= reservedDatabaseRecords)
195
+ break;
196
+ let result;
197
+ try {
198
+ result = await this.#readFile(file.adapterId, file.root, file.path, replayFiles.has(file.path), file.sourceDisplayName, remainingRecords - reservedDatabaseRecords);
199
+ }
200
+ catch (error) {
201
+ if (isTransientSourceError(error))
202
+ continue;
203
+ throw error;
204
+ }
205
+ fileCount++;
206
+ records.push(...result.records);
207
+ malformed += result.malformed;
208
+ oversized += result.oversized;
209
+ remainingRecords -= result.processedRecords;
210
+ if (this.#mode === "history" && result.processedRecords === 0) {
211
+ // An unfinished final JSONL line is retried when its file changes.
212
+ // Keep its cursor untouched without blocking every other archive.
213
+ this.#completedHistoryFiles.set(file.path, file.modifiedMs);
214
+ }
215
+ }
216
+ let sqliteComplete = true;
217
+ let sqliteFiles = 0;
218
+ for (const source of sources) {
219
+ if (source.format !== "opencode-sqlite")
220
+ continue;
221
+ if (remainingRecords <= 0) {
222
+ sqliteComplete = false;
223
+ break;
224
+ }
225
+ // node:sqlite is experimental on supported Node releases. Load it only
226
+ // when an OpenCode data source is actually scanned so commands such as
227
+ // pair, doctor, and help stay warning-free.
228
+ const { scanOpenCodeSQLiteSources } = await import("./opencode-sqlite-source.js");
229
+ const sqlite = await scanOpenCodeSQLiteSources({
230
+ adapterId: source.adapterId,
231
+ roots: source.roots.map(expandedActivityRoot),
232
+ cursors: this.#cursors,
233
+ initialScan,
234
+ replayOnFirstStart: this.#replayOnFirstStart,
235
+ maxReplayRecords: Math.min(remainingRecords, Math.max(this.#mode === "history" ? 1 : 32, Math.floor(this.#initialReplayBytes / 1_024))),
236
+ historical: this.#mode === "history",
237
+ });
238
+ records.push(...sqlite.records);
239
+ fileCount += sqlite.files;
240
+ malformed += sqlite.malformed;
241
+ oversized += sqlite.oversized;
242
+ sqliteFiles += sqlite.files;
243
+ remainingRecords -= sqlite.records.length;
244
+ sqliteComplete = sqliteComplete && sqlite.complete;
245
+ }
246
+ this.#initialScanComplete = true;
247
+ const checkpoint = Object.freeze({
248
+ generation: ++this.#generation,
249
+ cursors: new Map(this.#cursors),
250
+ });
251
+ const jsonlComplete = this.#mode !== "history" || selected.length === 0;
252
+ return {
253
+ records,
254
+ metrics: {
255
+ files: fileCount,
256
+ discoveredFiles: recentCandidates.length + sqliteFiles,
257
+ records: records.length,
258
+ malformed,
259
+ oversized,
260
+ },
261
+ checkpoint,
262
+ complete: jsonlComplete && sqliteComplete,
263
+ };
264
+ }
265
+ async commit(checkpoint) {
266
+ if (checkpoint.generation <= this.#committedGeneration)
267
+ return;
268
+ if (checkpoint.generation > this.#generation) {
269
+ throw new Error("Activity source checkpoint is invalid.");
270
+ }
271
+ await this.#cursorStore.save(checkpoint.cursors);
272
+ this.#committedGeneration = checkpoint.generation;
273
+ }
274
+ async #readFile(adapterId, root, file, initialReplay, sourceDisplayName, maxRecords = Number.MAX_SAFE_INTEGER) {
275
+ const rootReal = await realpath(root);
276
+ const fileReal = await realpath(file);
277
+ if (!isWithin(rootReal, fileReal)) {
278
+ return { records: [], malformed: 0, oversized: 0, processedRecords: 0 };
279
+ }
280
+ const metadata = await stat(fileReal);
281
+ if (!metadata.isFile()) {
282
+ return { records: [], malformed: 0, oversized: 0, processedRecords: 0 };
283
+ }
284
+ const sourceId = digest(fileReal);
285
+ const cursorId = fileCursorId(fileReal, metadata);
286
+ const legacyCursorId = sourceId;
287
+ const knownOffset = this.#cursors?.get(cursorId) ??
288
+ this.#cursors?.get(legacyCursorId);
289
+ let offset = knownOffset ??
290
+ (this.#mode === "history"
291
+ ? 0
292
+ : Math.max(0, metadata.size -
293
+ (initialReplay ? this.#initialReplayBytes : maxReadBytesPerFile)));
294
+ if (metadata.size < offset)
295
+ offset = 0;
296
+ const length = Math.min(metadata.size - offset, maxReadBytesPerFile, Math.max(maxLineBytes + 1, Math.min(1_024, maxRecords) * 16_384));
297
+ if (length <= 0) {
298
+ this.#setCursor(cursorId, legacyCursorId, metadata.size);
299
+ return { records: [], malformed: 0, oversized: 0, processedRecords: 0 };
300
+ }
301
+ const handle = await open(fileReal, "r");
302
+ let content;
303
+ try {
304
+ content = Buffer.alloc(length);
305
+ const read = await handle.read(content, 0, length, offset);
306
+ content = content.subarray(0, read.bytesRead);
307
+ }
308
+ finally {
309
+ await handle.close();
310
+ }
311
+ if (knownOffset === undefined && offset > 0) {
312
+ const firstNewline = content.indexOf(0x0a);
313
+ if (firstNewline < 0) {
314
+ this.#setCursor(cursorId, legacyCursorId, offset + content.length);
315
+ return { records: [], malformed: 0, oversized: 1, processedRecords: 1 };
316
+ }
317
+ offset += firstNewline + 1;
318
+ content = content.subarray(firstNewline + 1);
319
+ }
320
+ const lastNewline = content.lastIndexOf(0x0a);
321
+ if (lastNewline < 0) {
322
+ if (content.length > maxLineBytes) {
323
+ this.#setCursor(cursorId, legacyCursorId, offset + content.length);
324
+ return { records: [], malformed: 0, oversized: 1, processedRecords: 1 };
325
+ }
326
+ return { records: [], malformed: 0, oversized: 0, processedRecords: 0 };
327
+ }
328
+ const complete = content.subarray(0, lastNewline + 1);
329
+ const records = [];
330
+ let malformed = 0;
331
+ let oversized = 0;
332
+ let processedRecords = 0;
333
+ let processedThrough = 0;
334
+ let lineStart = 0;
335
+ while (lineStart < complete.length) {
336
+ const newline = complete.indexOf(0x0a, lineStart);
337
+ if (newline < 0)
338
+ break;
339
+ let lineEnd = newline;
340
+ if (lineEnd > lineStart && complete[lineEnd - 1] === 0x0d) {
341
+ lineEnd--;
342
+ }
343
+ const lineBuffer = complete.subarray(lineStart, lineEnd);
344
+ const recordOffset = offset + lineStart;
345
+ lineStart = newline + 1;
346
+ processedThrough = lineStart;
347
+ const line = lineBuffer.toString("utf8");
348
+ if (line.trim() === "")
349
+ continue;
350
+ if (processedRecords >= maxRecords) {
351
+ processedThrough = recordOffset - offset;
352
+ break;
353
+ }
354
+ processedRecords++;
355
+ if (lineBuffer.byteLength > maxLineBytes) {
356
+ oversized++;
357
+ continue;
358
+ }
359
+ try {
360
+ records.push({
361
+ adapterId,
362
+ sourceId: `ses_${sourceId.slice(0, 32)}`,
363
+ sourceRecordId: digest(`${cursorId}:${recordOffset}`),
364
+ ...(sourceDisplayName === undefined
365
+ ? {}
366
+ : { sourceDisplayName }),
367
+ observedAt: metadata.mtime,
368
+ initialReplay: initialReplay || this.#mode === "history",
369
+ value: JSON.parse(line),
370
+ });
371
+ }
372
+ catch {
373
+ malformed++;
374
+ }
375
+ }
376
+ this.#setCursor(cursorId, legacyCursorId, offset + processedThrough);
377
+ return { records, malformed, oversized, processedRecords };
378
+ }
379
+ async #pendingHistoryFiles(files) {
380
+ const pending = [];
381
+ for (const file of files) {
382
+ if (this.#completedHistoryFiles.get(file.path) === file.modifiedMs)
383
+ continue;
384
+ try {
385
+ const metadata = await stat(file.path);
386
+ const offset = this.#cursors?.get(fileCursorId(file.path, metadata)) ??
387
+ this.#cursors?.get(digest(file.path));
388
+ if (offset === undefined || offset !== metadata.size) {
389
+ pending.push(file);
390
+ if (pending.length >= historicalFilesPerScan)
391
+ break;
392
+ }
393
+ else {
394
+ this.#completedHistoryFiles.set(file.path, file.modifiedMs);
395
+ }
396
+ }
397
+ catch (error) {
398
+ if (!isTransientSourceError(error))
399
+ throw error;
400
+ }
401
+ }
402
+ return pending;
403
+ }
404
+ #setCursor(cursorId, legacyCursorId, offset) {
405
+ this.#cursors?.set(cursorId, offset);
406
+ if (cursorId !== legacyCursorId) {
407
+ this.#cursors?.delete(legacyCursorId);
408
+ }
409
+ }
410
+ async #baselineFile(root, file) {
411
+ const rootReal = await realpath(root);
412
+ const fileReal = await realpath(file);
413
+ if (!isWithin(rootReal, fileReal))
414
+ return;
415
+ const metadata = await stat(fileReal);
416
+ if (!metadata.isFile())
417
+ return;
418
+ if (this.#cursors?.has(fileCursorId(fileReal, metadata)) || this.#cursors?.has(digest(fileReal)))
419
+ return;
420
+ this.#setCursor(fileCursorId(fileReal, metadata), digest(fileReal), metadata.size);
421
+ }
422
+ }
423
+ export function expandedActivityRoot(root) {
424
+ if (root === "~")
425
+ return homedir();
426
+ if (root.startsWith("~/") || root.startsWith("~\\")) {
427
+ return join(homedir(), root.slice(2));
428
+ }
429
+ return root;
430
+ }
431
+ async function listJSONLFiles(root) {
432
+ let metadata;
433
+ try {
434
+ metadata = await stat(root);
435
+ }
436
+ catch (error) {
437
+ if (isNodeError(error) &&
438
+ (error.code === "ENOENT" ||
439
+ error.code === "EACCES" ||
440
+ error.code === "EPERM")) {
441
+ return [];
442
+ }
443
+ throw error;
444
+ }
445
+ if (!metadata.isDirectory())
446
+ return [];
447
+ const result = [];
448
+ const walk = async (directory, depth) => {
449
+ if (depth > maxDirectoryDepth)
450
+ return;
451
+ let entries;
452
+ try {
453
+ entries = await readdir(directory, { withFileTypes: true });
454
+ }
455
+ catch (error) {
456
+ if (isNodeError(error) &&
457
+ (error.code === "ENOENT" ||
458
+ error.code === "EACCES" ||
459
+ error.code === "EPERM" ||
460
+ error.code === "ENOTDIR")) {
461
+ return;
462
+ }
463
+ throw error;
464
+ }
465
+ for (const entry of entries) {
466
+ const path = join(directory, entry.name);
467
+ if (entry.isDirectory())
468
+ await walk(path, depth + 1);
469
+ else if (entry.isFile() &&
470
+ basename(entry.name).toLowerCase().endsWith(".jsonl")) {
471
+ try {
472
+ const metadata = await stat(path);
473
+ result.push({ path, modifiedMs: metadata.mtimeMs });
474
+ if (result.length > maxCursorEntries * 2) {
475
+ result.sort(recentFileFirst);
476
+ result.length = maxCursorEntries;
477
+ }
478
+ }
479
+ catch (error) {
480
+ if (isNodeError(error) &&
481
+ (error.code === "ENOENT" ||
482
+ error.code === "EACCES" ||
483
+ error.code === "EPERM")) {
484
+ continue;
485
+ }
486
+ throw error;
487
+ }
488
+ }
489
+ }
490
+ };
491
+ await walk(root, 0);
492
+ return result.sort(recentFileFirst).slice(0, maxCursorEntries);
493
+ }
494
+ function recentFileFirst(left, right) {
495
+ return (right.modifiedMs - left.modifiedMs || left.path.localeCompare(right.path));
496
+ }
497
+ /**
498
+ * A file can be reached through overlapping configured roots. Resolve that
499
+ * once, independently of scan order: one native adapter outranks generic
500
+ * labeling, conflicting generic labels lose their label, and conflicting
501
+ * native adapters fall back to an unattributed generic source.
502
+ */
503
+ function reconciledSourceFiles(files) {
504
+ const claimsByPath = new Map();
505
+ for (const file of files) {
506
+ const claims = claimsByPath.get(file.path) ?? [];
507
+ claims.push(file);
508
+ claimsByPath.set(file.path, claims);
509
+ }
510
+ return [...claimsByPath.values()].map(reconciledSourceFile);
511
+ }
512
+ function reconciledSourceFile(claims) {
513
+ const ordered = [...claims].sort(compareSourceClaim);
514
+ const adapterIDs = new Set(ordered.map((claim) => claim.adapterId));
515
+ const nativeAdapterIDs = new Set(ordered
516
+ .map((claim) => claim.adapterId)
517
+ .filter((adapterID) => adapterID !== "generic"));
518
+ let adapterId;
519
+ let sourceDisplayName;
520
+ if (adapterIDs.size === 1) {
521
+ adapterId = ordered[0]?.adapterId ?? "generic";
522
+ if (adapterId === "generic") {
523
+ const labels = new Set(ordered.flatMap((claim) => claim.sourceDisplayName === undefined
524
+ ? []
525
+ : [claim.sourceDisplayName]));
526
+ if (labels.size === 1 &&
527
+ ordered.every((claim) => claim.sourceDisplayName !== undefined)) {
528
+ sourceDisplayName = [...labels][0];
529
+ }
530
+ }
531
+ }
532
+ else if (nativeAdapterIDs.size === 1) {
533
+ adapterId = [...nativeAdapterIDs][0] ?? "generic";
534
+ }
535
+ else {
536
+ adapterId = "generic";
537
+ }
538
+ const representative = ordered.find((claim) => claim.adapterId === adapterId) ??
539
+ ordered[0];
540
+ if (representative === undefined) {
541
+ throw new Error("Activity source reconciliation requires one file claim.");
542
+ }
543
+ return {
544
+ adapterId,
545
+ ...(sourceDisplayName === undefined ? {} : { sourceDisplayName }),
546
+ root: representative.root,
547
+ path: representative.path,
548
+ modifiedMs: Math.max(...ordered.map((claim) => claim.modifiedMs)),
549
+ };
550
+ }
551
+ function compareSourceClaim(left, right) {
552
+ return left.adapterId.localeCompare(right.adapterId) ||
553
+ (left.sourceDisplayName ?? "").localeCompare(right.sourceDisplayName ?? "") ||
554
+ left.root.localeCompare(right.root);
555
+ }
556
+ function fileCursorId(path, metadata) {
557
+ const identity = metadata.ino > 0 || metadata.dev > 0
558
+ ? `inode:${metadata.dev}:${metadata.ino}:${metadata.birthtimeMs}`
559
+ : metadata.birthtimeMs > 0
560
+ ? `birth:${metadata.birthtimeMs}`
561
+ : "path";
562
+ return digest(`${path}\u0000${identity}`);
563
+ }
564
+ function newestFilesPerAdapter(files, limit) {
565
+ const adapterCounts = new Map();
566
+ const selected = new Set();
567
+ for (const file of files) {
568
+ const count = adapterCounts.get(file.adapterId) ?? 0;
569
+ if (count >= limit)
570
+ continue;
571
+ adapterCounts.set(file.adapterId, count + 1);
572
+ selected.add(file.path);
573
+ }
574
+ return selected;
575
+ }
576
+ function isWithin(root, candidate) {
577
+ const path = relative(resolve(root), resolve(candidate));
578
+ return path === "" || (!path.startsWith(`..${sep}`) && path !== "..");
579
+ }
580
+ function digest(value) {
581
+ return createHash("sha256").update(value).digest("hex");
582
+ }
583
+ function isNodeError(error) {
584
+ return error instanceof Error && "code" in error;
585
+ }
586
+ function isTransientSourceError(error) {
587
+ return (isNodeError(error) &&
588
+ (error.code === "ENOENT" ||
589
+ error.code === "EACCES" ||
590
+ error.code === "EPERM" ||
591
+ error.code === "ENOTDIR" ||
592
+ error.code === "ESTALE"));
593
+ }
594
+ //# sourceMappingURL=source-reader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source-reader.js","sourceRoot":"","sources":["../../../src/activity/source-reader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import type { AgentKind, PrivacyClass } from "../generated/phigon/v1/common_pb.js";
2
+ import type { EventEnvelope } from "../generated/phigon/v1/telemetry_pb.js";
3
+ import type { LocalPolicyEngine } from "./policy.js";
4
+ export type ActivityDraft = Readonly<{
5
+ agentKind: AgentKind;
6
+ sessionId: string;
7
+ observedAt: Date;
8
+ privacyClass: PrivacyClass;
9
+ payload: EventEnvelope["payload"];
10
+ }>;
11
+ export type ParseContext = Readonly<{
12
+ sessionId: string;
13
+ observedAt: Date;
14
+ policy: LocalPolicyEngine;
15
+ }>;
16
+ export interface VendorActivityAdapter {
17
+ readonly id: string;
18
+ readonly agentKind: AgentKind;
19
+ parse(record: unknown, context: ParseContext): readonly ActivityDraft[];
20
+ }
21
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/activity/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACT,YAAY,EACb,MAAM,qCAAqC,CAAC;AAC7C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAC;AAC5E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAErD,MAAM,MAAM,aAAa,GAAG,QAAQ,CAAC;IACnC,SAAS,EAAE,SAAS,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,IAAI,CAAC;IACjB,YAAY,EAAE,YAAY,CAAC;IAC3B,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;CACnC,CAAC,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,QAAQ,CAAC;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,IAAI,CAAC;IACjB,MAAM,EAAE,iBAAiB,CAAC;CAC3B,CAAC,CAAC;AAEH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,GAAG,SAAS,aAAa,EAAE,CAAC;CACzE"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/activity/types.ts"],"names":[],"mappings":""}