@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,416 @@
1
+ import { createHash } from "node:crypto";
2
+ import { create } from "@bufbuild/protobuf";
3
+ import { ActivityKind, AgentKind, PrivacyClass, Severity, } from "../generated/phigon/v1/common_pb.js";
4
+ import { ActivityEventSchema, BrowserEventSchema, BrowserOperation, FilesystemEventSchema, FilesystemOperation, GitEventSchema, GitOperation, LifecycleEventSchema, ResourceReferenceSchema, TerminalEventSchema, TerminalPhase, ToolEventSchema, ToolPhase, VendorEventSchema, } from "../generated/phigon/v1/telemetry_pb.js";
5
+ export function vendorDraft(agentKind, context, source, vendorType, record) {
6
+ const sanitized = context.policy.vendorRecord(record);
7
+ return {
8
+ agentKind,
9
+ sessionId: context.sessionId,
10
+ observedAt: context.observedAt,
11
+ privacyClass: sanitized.value === undefined
12
+ ? PrivacyClass.SYSTEM_METADATA
13
+ : PrivacyClass.USER_CONTENT,
14
+ payload: {
15
+ case: "vendor",
16
+ value: create(VendorEventSchema, {
17
+ source: context.policy.safeName(source, "generic"),
18
+ vendorType: context.policy.safeName(vendorType, "record"),
19
+ sourceRecordDigest: sanitized.digest,
20
+ ...(sanitized.value === undefined
21
+ ? {}
22
+ : { payloadJson: sanitized.value }),
23
+ payloadRedacted: sanitized.redacted,
24
+ payloadTruncated: sanitized.truncated,
25
+ payloadOmitted: sanitized.value === undefined,
26
+ redactedFields: sanitized.redactedFields.slice(0, 256),
27
+ }),
28
+ },
29
+ };
30
+ }
31
+ export function activityDraft(agentKind, context, kind, summary, content, category, vendorType, severity = Severity.INFO) {
32
+ const sanitized = context.policy.content(content, category);
33
+ return {
34
+ agentKind,
35
+ sessionId: context.sessionId,
36
+ observedAt: context.observedAt,
37
+ privacyClass: sanitized.value === undefined
38
+ ? PrivacyClass.SYSTEM_METADATA
39
+ : PrivacyClass.USER_CONTENT,
40
+ payload: {
41
+ case: "activity",
42
+ value: create(ActivityEventSchema, {
43
+ kind,
44
+ severity,
45
+ summary: context.policy.summary(summary),
46
+ ...(sanitized.value === undefined
47
+ ? {}
48
+ : { content: sanitized.value }),
49
+ contentRedacted: sanitized.value === undefined ||
50
+ sanitized.redacted ||
51
+ sanitized.truncated,
52
+ vendorType: context.policy.safeName(vendorType, "unknown"),
53
+ }),
54
+ },
55
+ };
56
+ }
57
+ export function lifecycleDraft(agentKind, context, phase, reason) {
58
+ return {
59
+ agentKind,
60
+ sessionId: context.sessionId,
61
+ observedAt: context.observedAt,
62
+ privacyClass: PrivacyClass.SYSTEM_METADATA,
63
+ payload: {
64
+ case: "lifecycle",
65
+ value: create(LifecycleEventSchema, {
66
+ phase,
67
+ reason: context.policy.summary(reason),
68
+ }),
69
+ },
70
+ };
71
+ }
72
+ export function errorDraft(agentKind, context, vendorType) {
73
+ return {
74
+ ...activityDraft(agentKind, context, ActivityKind.ERROR, "Agent reported an error.", undefined, "responseContent", vendorType, Severity.ERROR),
75
+ privacyClass: PrivacyClass.SYSTEM_METADATA,
76
+ };
77
+ }
78
+ export function toolDrafts(agentKind, context, input) {
79
+ const toolName = context.policy.safeName(input.toolName, "unknown-tool");
80
+ const invocationId = context.policy.safeName(input.invocationId, `inv_${digest(`${context.sessionId}:${toolName}`).slice(0, 24)}`);
81
+ const argumentsValue = context.policy.json(parseMaybeJSON(input.arguments), "commandArguments");
82
+ const outputValue = context.policy.json(parseMaybeJSON(input.output), "toolOutput");
83
+ // Preserve permitted results whose provider does not report an outcome.
84
+ if (input.phase === ToolPhase.UNSPECIFIED && outputValue.value === undefined)
85
+ return [];
86
+ const exitCode = typeof input.exitCode === "number" &&
87
+ Number.isSafeInteger(input.exitCode)
88
+ ? input.exitCode
89
+ : undefined;
90
+ const drafts = [{
91
+ agentKind,
92
+ sessionId: context.sessionId,
93
+ observedAt: context.observedAt,
94
+ privacyClass: argumentsValue.value === undefined && outputValue.value === undefined
95
+ ? PrivacyClass.SYSTEM_METADATA
96
+ : PrivacyClass.USER_CONTENT,
97
+ payload: {
98
+ case: "tool",
99
+ value: create(ToolEventSchema, {
100
+ invocationId,
101
+ toolName,
102
+ phase: input.phase,
103
+ ...(argumentsValue.value === undefined
104
+ ? {}
105
+ : { argumentsJson: argumentsValue.value }),
106
+ ...(outputValue.value === undefined
107
+ ? {}
108
+ : { output: outputValue.value }),
109
+ argumentsRedacted: argumentsValue.value === undefined ||
110
+ argumentsValue.redacted ||
111
+ argumentsValue.truncated,
112
+ outputRedacted: outputValue.value === undefined ||
113
+ outputValue.redacted ||
114
+ outputValue.truncated,
115
+ ...(exitCode === undefined ? {} : { exitCode }),
116
+ }),
117
+ },
118
+ }];
119
+ const rawArguments = parseMaybeJSON(input.arguments);
120
+ const terminalTool = isTerminalTool(toolName) || hasCommandArgument(rawArguments);
121
+ if (terminalTool) {
122
+ drafts.push(terminalDraft(agentKind, context, {
123
+ invocationId,
124
+ phase: input.phase === ToolPhase.SUCCEEDED ||
125
+ input.phase === ToolPhase.FAILED ||
126
+ input.phase === ToolPhase.CANCELLED
127
+ ? TerminalPhase.EXITED
128
+ : input.output !== undefined
129
+ ? TerminalPhase.OUTPUT
130
+ : TerminalPhase.STARTED,
131
+ arguments: rawArguments,
132
+ output: input.output,
133
+ ...(exitCode === undefined ? {} : { exitCode }),
134
+ }));
135
+ }
136
+ const git = gitDraft(agentKind, context, invocationId, rawArguments, input.output);
137
+ if (git !== null)
138
+ drafts.push(git);
139
+ if (context.policy.allowsMetadata("fileMetadata") &&
140
+ (isFilesystemTool(toolName) ||
141
+ (!terminalTool && pathFromArguments(rawArguments) !== ""))) {
142
+ drafts.push(filesystemDraft(agentKind, context, toolName, rawArguments));
143
+ }
144
+ if (context.policy.allowsMetadata("browserMetadata") &&
145
+ (isBrowserTool(toolName) ||
146
+ stringProperty(rawArguments, ["url", "href"]) !== "")) {
147
+ drafts.push(browserDraft(agentKind, context, toolName, rawArguments));
148
+ }
149
+ return drafts;
150
+ }
151
+ function terminalDraft(agentKind, context, input) {
152
+ const command = commandFromArguments(input.arguments);
153
+ const executable = context.policy.safeName(executableFromCommand(command), "unknown");
154
+ const argumentsValue = context.policy.content(command, "commandArguments");
155
+ const outputValue = context.policy.content(input.output, "terminalOutput");
156
+ return {
157
+ agentKind,
158
+ sessionId: context.sessionId,
159
+ observedAt: context.observedAt,
160
+ privacyClass: argumentsValue.value === undefined && outputValue.value === undefined
161
+ ? PrivacyClass.SYSTEM_METADATA
162
+ : PrivacyClass.USER_CONTENT,
163
+ payload: {
164
+ case: "terminal",
165
+ value: create(TerminalEventSchema, {
166
+ commandId: input.invocationId,
167
+ phase: input.phase,
168
+ executable,
169
+ ...(argumentsValue.value === undefined
170
+ ? {}
171
+ : { arguments: argumentsValue.value }),
172
+ ...(outputValue.value === undefined
173
+ ? {}
174
+ : { output: Buffer.from(outputValue.value, "utf8") }),
175
+ outputRedacted: outputValue.value === undefined ||
176
+ outputValue.redacted ||
177
+ outputValue.truncated,
178
+ ...(input.exitCode === undefined
179
+ ? {}
180
+ : { exitCode: input.exitCode }),
181
+ }),
182
+ },
183
+ };
184
+ }
185
+ function filesystemDraft(agentKind, context, toolName, rawArguments) {
186
+ const rawPath = pathFromArguments(rawArguments);
187
+ const identifier = rawPath === ""
188
+ ? {
189
+ digest: digest(`${context.sessionId}:file`),
190
+ redacted: true,
191
+ }
192
+ : context.policy.identifier(rawPath, "filePaths");
193
+ const rawContent = stringProperty(rawArguments, [
194
+ "content",
195
+ "text",
196
+ "patch",
197
+ ]);
198
+ const content = context.policy.content(rawContent, "fileContent");
199
+ return {
200
+ agentKind,
201
+ sessionId: context.sessionId,
202
+ observedAt: context.observedAt,
203
+ privacyClass: PrivacyClass.RESOURCE_METADATA,
204
+ payload: {
205
+ case: "filesystem",
206
+ value: create(FilesystemEventSchema, {
207
+ operation: filesystemOperation(toolName, rawArguments),
208
+ resource: create(ResourceReferenceSchema, {
209
+ kind: "file",
210
+ displayName: rawPath === "" ? "redacted file" : "file",
211
+ identifierDigest: identifier.digest,
212
+ ...(identifier.value === undefined
213
+ ? {}
214
+ : { identifier: identifier.value }),
215
+ }),
216
+ ...(content.value === undefined
217
+ ? {}
218
+ : {
219
+ content: Buffer.from(content.value, "utf8"),
220
+ byteCount: BigInt(Buffer.byteLength(content.value, "utf8")),
221
+ }),
222
+ contentRedacted: content.value === undefined ||
223
+ content.redacted ||
224
+ content.truncated,
225
+ }),
226
+ },
227
+ };
228
+ }
229
+ function browserDraft(agentKind, context, toolName, rawArguments) {
230
+ const rawURL = stringProperty(rawArguments, ["url", "href"]);
231
+ const identifier = context.policy.identifier(rawURL, "browserUrls");
232
+ const target = context.policy.content(stringProperty(rawArguments, [
233
+ "target",
234
+ "selector",
235
+ "accessible_name",
236
+ "text",
237
+ ]), "browserContent");
238
+ let operation = BrowserOperation.READ;
239
+ if (toolName.includes("navigate") || toolName.includes("open")) {
240
+ operation = BrowserOperation.NAVIGATE;
241
+ }
242
+ else if (toolName.includes("click"))
243
+ operation = BrowserOperation.CLICK;
244
+ else if (toolName.includes("type"))
245
+ operation = BrowserOperation.TYPE;
246
+ else if (toolName.includes("download")) {
247
+ operation = BrowserOperation.DOWNLOAD;
248
+ }
249
+ return {
250
+ agentKind,
251
+ sessionId: context.sessionId,
252
+ observedAt: context.observedAt,
253
+ privacyClass: PrivacyClass.RESOURCE_METADATA,
254
+ payload: {
255
+ case: "browser",
256
+ value: create(BrowserEventSchema, {
257
+ operation,
258
+ ...(identifier.value === undefined
259
+ ? {}
260
+ : { url: identifier.value }),
261
+ urlDigest: identifier.digest,
262
+ ...(target.value === undefined ? {} : { target: target.value }),
263
+ contentRedacted: target.value === undefined ||
264
+ target.redacted ||
265
+ target.truncated,
266
+ }),
267
+ },
268
+ };
269
+ }
270
+ function gitDraft(agentKind, context, invocationId, rawArguments, rawOutput) {
271
+ const command = commandFromArguments(rawArguments);
272
+ const match = /(?:^|\s)git(?:\s+-C\s+\S+)?\s+(status|diff|commit|branch|switch|checkout|push|pull)\b/iu.exec(command);
273
+ const pullRequest = /(?:^|\s)gh\s+pr\s+(?:create|view|list|checks|merge|close|reopen)\b/iu.test(command);
274
+ if (match === null && !pullRequest)
275
+ return null;
276
+ const operationName = match?.[1]?.toLowerCase();
277
+ const operation = pullRequest
278
+ ? GitOperation.PULL_REQUEST
279
+ : gitOperation(operationName);
280
+ const patch = operation === GitOperation.DIFF
281
+ ? context.policy.content(rawOutput, "gitPatchContent")
282
+ : undefined;
283
+ return {
284
+ agentKind,
285
+ sessionId: context.sessionId,
286
+ observedAt: context.observedAt,
287
+ privacyClass: PrivacyClass.RESOURCE_METADATA,
288
+ payload: {
289
+ case: "git",
290
+ value: create(GitEventSchema, {
291
+ operation,
292
+ repositoryDigest: digest(stringProperty(rawArguments, ["workdir", "cwd"]) ||
293
+ context.sessionId),
294
+ revision: invocationId,
295
+ ...(patch?.value === undefined ? {} : { patch: patch.value }),
296
+ patchRedacted: patch === undefined ||
297
+ patch.value === undefined ||
298
+ patch.redacted ||
299
+ patch.truncated,
300
+ }),
301
+ },
302
+ };
303
+ }
304
+ function gitOperation(value) {
305
+ if (value === "status")
306
+ return GitOperation.STATUS;
307
+ if (value === "diff")
308
+ return GitOperation.DIFF;
309
+ if (value === "commit")
310
+ return GitOperation.COMMIT;
311
+ if (value === "branch" ||
312
+ value === "switch" ||
313
+ value === "checkout") {
314
+ return GitOperation.BRANCH;
315
+ }
316
+ if (value === "push")
317
+ return GitOperation.PUSH;
318
+ return GitOperation.STATUS;
319
+ }
320
+ function isTerminalTool(value) {
321
+ return /(?:exec|shell|terminal|command)/iu.test(value);
322
+ }
323
+ function hasCommandArgument(value) {
324
+ return stringProperty(value, ["cmd", "command", "script"]) !== "";
325
+ }
326
+ function isFilesystemTool(value) {
327
+ const normalized = value.toLowerCase().replace(/[^a-z0-9]+/gu, "_");
328
+ return /^(?:read|write|edit|create|delete|remove|rename|move|search|find|glob|grep|touch|unlink)$/u.test(normalized) ||
329
+ /(?:apply_patch|filesystem|(?:read|write|edit|create|delete|remove|rename|move|search|find|glob|grep)_file|(?:search|find|glob|grep)_files)/u.test(normalized);
330
+ }
331
+ function filesystemOperation(toolName, rawArguments) {
332
+ const normalized = toolName.toLowerCase().replace(/[^a-z0-9]+/gu, "_");
333
+ if (/(?:^|_)(?:read|get)(?:_|$)/u.test(normalized)) {
334
+ return FilesystemOperation.READ;
335
+ }
336
+ if (/(?:^|_)(?:search|find|glob|grep)(?:_|$)/u.test(normalized)) {
337
+ return FilesystemOperation.SEARCH;
338
+ }
339
+ if (/(?:^|_)(?:delete|remove|unlink)(?:_|$)/u.test(normalized)) {
340
+ return FilesystemOperation.DELETE;
341
+ }
342
+ if (/(?:^|_)(?:rename|move)(?:_|$)/u.test(normalized)) {
343
+ return FilesystemOperation.RENAME;
344
+ }
345
+ if (/(?:^|_)(?:create|add|touch)(?:_|$)/u.test(normalized)) {
346
+ return FilesystemOperation.CREATE;
347
+ }
348
+ if (normalized.includes("apply_patch")) {
349
+ const patch = stringProperty(rawArguments, ["patch", "input"]);
350
+ if (/^\*\*\* Add File:/mu.test(patch)) {
351
+ return FilesystemOperation.CREATE;
352
+ }
353
+ if (/^\*\*\* Delete File:/mu.test(patch)) {
354
+ return FilesystemOperation.DELETE;
355
+ }
356
+ if (/^\*\*\* Move to:/mu.test(patch)) {
357
+ return FilesystemOperation.RENAME;
358
+ }
359
+ }
360
+ return FilesystemOperation.WRITE;
361
+ }
362
+ function isBrowserTool(value) {
363
+ return /(?:browser|chrome|playwright)/iu.test(value);
364
+ }
365
+ function parseMaybeJSON(value) {
366
+ if (typeof value !== "string")
367
+ return value;
368
+ if (Buffer.byteLength(value, "utf8") > 1 << 20)
369
+ return "[OVERSIZED]";
370
+ try {
371
+ return JSON.parse(value);
372
+ }
373
+ catch {
374
+ return value;
375
+ }
376
+ }
377
+ function commandFromArguments(value) {
378
+ if (typeof value === "string")
379
+ return value;
380
+ return stringProperty(value, ["cmd", "command", "script"]);
381
+ }
382
+ function executableFromCommand(command) {
383
+ const first = command.trim().split(/\s+/u)[0] ?? "";
384
+ return first.split(/[\\/]/u).pop() ?? "";
385
+ }
386
+ function pathFromArguments(value) {
387
+ const direct = stringProperty(value, [
388
+ "path",
389
+ "file",
390
+ "filePath",
391
+ "file_path",
392
+ "targetPath",
393
+ "target_path",
394
+ "workdir",
395
+ ]);
396
+ if (direct !== "")
397
+ return direct;
398
+ const patch = stringProperty(value, ["patch", "input"]);
399
+ const match = /^\*\*\* (?:Update|Add|Delete) File: (.+)$/mu.exec(patch);
400
+ return match?.[1]?.trim() ?? "";
401
+ }
402
+ function stringProperty(value, names) {
403
+ if (typeof value !== "object" || value === null)
404
+ return "";
405
+ for (const name of names) {
406
+ const candidate = value[name];
407
+ if (typeof candidate === "string")
408
+ return candidate;
409
+ }
410
+ return "";
411
+ }
412
+ function digest(value) {
413
+ return createHash("sha256").update(value).digest("hex");
414
+ }
415
+ export const NormalizedAgentKind = AgentKind;
416
+ //# sourceMappingURL=normalize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalize.js","sourceRoot":"","sources":["../../../src/activity/normalize.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { SourceRecord } from "./source-reader.js";
2
+ type ScanOptions = Readonly<{
3
+ adapterId: string;
4
+ roots: readonly string[];
5
+ cursors: Map<string, number>;
6
+ initialScan: boolean;
7
+ replayOnFirstStart: boolean;
8
+ maxReplayRecords: number;
9
+ historical?: boolean;
10
+ }>;
11
+ export declare function scanOpenCodeSQLiteSources(options: ScanOptions): Promise<Readonly<{
12
+ records: readonly SourceRecord[];
13
+ files: number;
14
+ malformed: number;
15
+ oversized: number;
16
+ complete: boolean;
17
+ }>>;
18
+ export {};
19
+ //# sourceMappingURL=opencode-sqlite-source.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opencode-sqlite-source.d.ts","sourceRoot":"","sources":["../../../src/activity/opencode-sqlite-source.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AASvD,KAAK,WAAW,GAAG,QAAQ,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,WAAW,EAAE,OAAO,CAAC;IACrB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC,CAAC;AAaH,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,QAAQ,CAAC;IAClB,OAAO,EAAE,SAAS,YAAY,EAAE,CAAC;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC,CAAC,CAmBF"}