@phigon/observer 8.1.0 → 8.2.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 (217) hide show
  1. package/README.md +51 -8
  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.map +1 -1
  9. package/dist/src/action-policy.js +4 -2
  10. package/dist/src/action-policy.js.map +1 -1
  11. package/dist/src/activity/adapters/claude.d.ts.map +1 -1
  12. package/dist/src/activity/adapters/claude.js +19 -1
  13. package/dist/src/activity/adapters/claude.js.map +1 -1
  14. package/dist/src/activity/adapters/cline-task.d.ts +7 -0
  15. package/dist/src/activity/adapters/cline-task.d.ts.map +1 -0
  16. package/dist/src/activity/adapters/cline-task.js +197 -0
  17. package/dist/src/activity/adapters/cline-task.js.map +1 -0
  18. package/dist/src/activity/adapters/cline.d.ts +3 -0
  19. package/dist/src/activity/adapters/cline.d.ts.map +1 -0
  20. package/dist/src/activity/adapters/cline.js +102 -0
  21. package/dist/src/activity/adapters/cline.js.map +1 -0
  22. package/dist/src/activity/adapters/codex.d.ts.map +1 -1
  23. package/dist/src/activity/adapters/codex.js +76 -0
  24. package/dist/src/activity/adapters/codex.js.map +1 -1
  25. package/dist/src/activity/adapters/copilot-chat.d.ts +3 -0
  26. package/dist/src/activity/adapters/copilot-chat.d.ts.map +1 -0
  27. package/dist/src/activity/adapters/copilot-chat.js +176 -0
  28. package/dist/src/activity/adapters/copilot-chat.js.map +1 -0
  29. package/dist/src/activity/adapters/copilot.d.ts +2 -1
  30. package/dist/src/activity/adapters/copilot.d.ts.map +1 -1
  31. package/dist/src/activity/adapters/copilot.js +173 -2
  32. package/dist/src/activity/adapters/copilot.js.map +1 -1
  33. package/dist/src/activity/adapters/cursor.d.ts +3 -0
  34. package/dist/src/activity/adapters/cursor.d.ts.map +1 -0
  35. package/dist/src/activity/adapters/cursor.js +86 -0
  36. package/dist/src/activity/adapters/cursor.js.map +1 -0
  37. package/dist/src/activity/adapters/factory-droid.d.ts +3 -0
  38. package/dist/src/activity/adapters/factory-droid.d.ts.map +1 -0
  39. package/dist/src/activity/adapters/factory-droid.js +126 -0
  40. package/dist/src/activity/adapters/factory-droid.js.map +1 -0
  41. package/dist/src/activity/adapters/gemini.d.ts +3 -0
  42. package/dist/src/activity/adapters/gemini.d.ts.map +1 -0
  43. package/dist/src/activity/adapters/gemini.js +177 -0
  44. package/dist/src/activity/adapters/gemini.js.map +1 -0
  45. package/dist/src/activity/adapters/goose.d.ts +3 -0
  46. package/dist/src/activity/adapters/goose.d.ts.map +1 -0
  47. package/dist/src/activity/adapters/goose.js +116 -0
  48. package/dist/src/activity/adapters/goose.js.map +1 -0
  49. package/dist/src/activity/adapters/kiro.d.ts +3 -0
  50. package/dist/src/activity/adapters/kiro.d.ts.map +1 -0
  51. package/dist/src/activity/adapters/kiro.js +47 -0
  52. package/dist/src/activity/adapters/kiro.js.map +1 -0
  53. package/dist/src/activity/adapters/opencode.d.ts.map +1 -1
  54. package/dist/src/activity/adapters/opencode.js +108 -1
  55. package/dist/src/activity/adapters/opencode.js.map +1 -1
  56. package/dist/src/activity/adapters/zed.d.ts +3 -0
  57. package/dist/src/activity/adapters/zed.d.ts.map +1 -0
  58. package/dist/src/activity/adapters/zed.js +134 -0
  59. package/dist/src/activity/adapters/zed.js.map +1 -0
  60. package/dist/src/activity/collector.d.ts +12 -0
  61. package/dist/src/activity/collector.d.ts.map +1 -1
  62. package/dist/src/activity/collector.js +156 -3
  63. package/dist/src/activity/collector.js.map +1 -1
  64. package/dist/src/activity/goose-sqlite-source.d.ts +33 -0
  65. package/dist/src/activity/goose-sqlite-source.d.ts.map +1 -0
  66. package/dist/src/activity/goose-sqlite-source.js +274 -0
  67. package/dist/src/activity/goose-sqlite-source.js.map +1 -0
  68. package/dist/src/activity/index.d.ts +3 -0
  69. package/dist/src/activity/index.d.ts.map +1 -1
  70. package/dist/src/activity/index.js +3 -0
  71. package/dist/src/activity/index.js.map +1 -1
  72. package/dist/src/activity/ingest.d.ts.map +1 -1
  73. package/dist/src/activity/ingest.js +2 -1
  74. package/dist/src/activity/ingest.js.map +1 -1
  75. package/dist/src/activity/json-document-source.d.ts +136 -0
  76. package/dist/src/activity/json-document-source.d.ts.map +1 -0
  77. package/dist/src/activity/json-document-source.js +569 -0
  78. package/dist/src/activity/json-document-source.js.map +1 -0
  79. package/dist/src/activity/normalize.d.ts.map +1 -1
  80. package/dist/src/activity/normalize.js +64 -6
  81. package/dist/src/activity/normalize.js.map +1 -1
  82. package/dist/src/activity/opencode-message-tables.d.ts +87 -0
  83. package/dist/src/activity/opencode-message-tables.d.ts.map +1 -0
  84. package/dist/src/activity/opencode-message-tables.js +546 -0
  85. package/dist/src/activity/opencode-message-tables.js.map +1 -0
  86. package/dist/src/activity/opencode-sqlite-source.d.ts +7 -0
  87. package/dist/src/activity/opencode-sqlite-source.d.ts.map +1 -1
  88. package/dist/src/activity/opencode-sqlite-source.js +153 -63
  89. package/dist/src/activity/opencode-sqlite-source.js.map +1 -1
  90. package/dist/src/activity/source-reader.d.ts +16 -1
  91. package/dist/src/activity/source-reader.d.ts.map +1 -1
  92. package/dist/src/activity/source-reader.js +308 -29
  93. package/dist/src/activity/source-reader.js.map +1 -1
  94. package/dist/src/activity/sqlite-connections.d.ts +77 -0
  95. package/dist/src/activity/sqlite-connections.d.ts.map +1 -0
  96. package/dist/src/activity/sqlite-connections.js +220 -0
  97. package/dist/src/activity/sqlite-connections.js.map +1 -0
  98. package/dist/src/activity/zed-sqlite-source.d.ts +65 -0
  99. package/dist/src/activity/zed-sqlite-source.d.ts.map +1 -0
  100. package/dist/src/activity/zed-sqlite-source.js +547 -0
  101. package/dist/src/activity/zed-sqlite-source.js.map +1 -0
  102. package/dist/src/agent-action-executor.d.ts +13 -1
  103. package/dist/src/agent-action-executor.d.ts.map +1 -1
  104. package/dist/src/agent-action-executor.js +108 -56
  105. package/dist/src/agent-action-executor.js.map +1 -1
  106. package/dist/src/agentic-guardian.d.ts.map +1 -1
  107. package/dist/src/agentic-guardian.js +6 -5
  108. package/dist/src/agentic-guardian.js.map +1 -1
  109. package/dist/src/cli.d.ts.map +1 -1
  110. package/dist/src/cli.js +47 -10
  111. package/dist/src/cli.js.map +1 -1
  112. package/dist/src/config.d.ts +13 -0
  113. package/dist/src/config.d.ts.map +1 -1
  114. package/dist/src/config.js +99 -3
  115. package/dist/src/config.js.map +1 -1
  116. package/dist/src/connection-config.d.ts.map +1 -1
  117. package/dist/src/connection-config.js +5 -0
  118. package/dist/src/connection-config.js.map +1 -1
  119. package/dist/src/content-redaction.d.ts.map +1 -1
  120. package/dist/src/content-redaction.js +9 -2
  121. package/dist/src/content-redaction.js.map +1 -1
  122. package/dist/src/credential-store.d.ts.map +1 -1
  123. package/dist/src/credential-store.js +2 -1
  124. package/dist/src/credential-store.js.map +1 -1
  125. package/dist/src/custom-agent-registry.d.ts.map +1 -1
  126. package/dist/src/custom-agent-registry.js +2 -1
  127. package/dist/src/custom-agent-registry.js.map +1 -1
  128. package/dist/src/discovery/adapters/generic.d.ts.map +1 -1
  129. package/dist/src/discovery/adapters/generic.js +160 -2
  130. package/dist/src/discovery/adapters/generic.js.map +1 -1
  131. package/dist/src/discovery/engine.d.ts +7 -1
  132. package/dist/src/discovery/engine.d.ts.map +1 -1
  133. package/dist/src/discovery/engine.js +20 -5
  134. package/dist/src/discovery/engine.js.map +1 -1
  135. package/dist/src/discovery/known-agent.d.ts +7 -0
  136. package/dist/src/discovery/known-agent.d.ts.map +1 -1
  137. package/dist/src/discovery/known-agent.js +9 -4
  138. package/dist/src/discovery/known-agent.js.map +1 -1
  139. package/dist/src/discovery/system-evidence.d.ts +40 -1
  140. package/dist/src/discovery/system-evidence.d.ts.map +1 -1
  141. package/dist/src/discovery/system-evidence.js +189 -16
  142. package/dist/src/discovery/system-evidence.js.map +1 -1
  143. package/dist/src/event-queue.d.ts.map +1 -1
  144. package/dist/src/event-queue.js +88 -38
  145. package/dist/src/event-queue.js.map +1 -1
  146. package/dist/src/event-spool.d.ts.map +1 -1
  147. package/dist/src/event-spool.js +58 -10
  148. package/dist/src/event-spool.js.map +1 -1
  149. package/dist/src/guardian-containment.d.ts +2 -6
  150. package/dist/src/guardian-containment.d.ts.map +1 -1
  151. package/dist/src/guardian-containment.js +12 -63
  152. package/dist/src/guardian-containment.js.map +1 -1
  153. package/dist/src/guardian-decision-journal.d.ts.map +1 -1
  154. package/dist/src/guardian-decision-journal.js +2 -1
  155. package/dist/src/guardian-decision-journal.js.map +1 -1
  156. package/dist/src/guardian-managed-exec.d.ts.map +1 -1
  157. package/dist/src/guardian-managed-exec.js +2 -1
  158. package/dist/src/guardian-managed-exec.js.map +1 -1
  159. package/dist/src/guardian-model-bridge.d.ts.map +1 -1
  160. package/dist/src/guardian-model-bridge.js +2 -1
  161. package/dist/src/guardian-model-bridge.js.map +1 -1
  162. package/dist/src/guardian-native.d.ts +0 -1
  163. package/dist/src/guardian-native.d.ts.map +1 -1
  164. package/dist/src/guardian-native.js +0 -6
  165. package/dist/src/guardian-native.js.map +1 -1
  166. package/dist/src/guardian-process-monitor.d.ts +3 -0
  167. package/dist/src/guardian-process-monitor.d.ts.map +1 -1
  168. package/dist/src/guardian-process-monitor.js +8 -0
  169. package/dist/src/guardian-process-monitor.js.map +1 -1
  170. package/dist/src/historical-identity-store.d.ts.map +1 -1
  171. package/dist/src/historical-identity-store.js +2 -1
  172. package/dist/src/historical-identity-store.js.map +1 -1
  173. package/dist/src/installation.d.ts.map +1 -1
  174. package/dist/src/installation.js +3 -2
  175. package/dist/src/installation.js.map +1 -1
  176. package/dist/src/machine-command-executor.d.ts +22 -7
  177. package/dist/src/machine-command-executor.d.ts.map +1 -1
  178. package/dist/src/machine-command-executor.js +91 -17
  179. package/dist/src/machine-command-executor.js.map +1 -1
  180. package/dist/src/pair.d.ts.map +1 -1
  181. package/dist/src/pair.js +3 -2
  182. package/dist/src/pair.js.map +1 -1
  183. package/dist/src/private-directory.d.ts +4 -0
  184. package/dist/src/private-directory.d.ts.map +1 -0
  185. package/dist/src/private-directory.js +35 -0
  186. package/dist/src/private-directory.js.map +1 -0
  187. package/dist/src/process-tree.d.ts +73 -0
  188. package/dist/src/process-tree.d.ts.map +1 -0
  189. package/dist/src/process-tree.js +256 -0
  190. package/dist/src/process-tree.js.map +1 -0
  191. package/dist/src/server-authority.d.ts +26 -0
  192. package/dist/src/server-authority.d.ts.map +1 -0
  193. package/dist/src/server-authority.js +102 -0
  194. package/dist/src/server-authority.js.map +1 -0
  195. package/dist/src/stream-client.d.ts +3 -1
  196. package/dist/src/stream-client.d.ts.map +1 -1
  197. package/dist/src/stream-client.js +49 -11
  198. package/dist/src/stream-client.js.map +1 -1
  199. package/dist/src/stream-state.d.ts.map +1 -1
  200. package/dist/src/stream-state.js +2 -1
  201. package/dist/src/stream-state.js.map +1 -1
  202. package/dist/src/system-inspection.d.ts +78 -0
  203. package/dist/src/system-inspection.d.ts.map +1 -0
  204. package/dist/src/system-inspection.js +281 -0
  205. package/dist/src/system-inspection.js.map +1 -0
  206. package/dist/src/update.d.ts.map +1 -1
  207. package/dist/src/update.js +9 -3
  208. package/dist/src/update.js.map +1 -1
  209. package/dist/src/user-notices.d.ts +53 -0
  210. package/dist/src/user-notices.d.ts.map +1 -0
  211. package/dist/src/user-notices.js +117 -0
  212. package/dist/src/user-notices.js.map +1 -0
  213. package/package.json +1 -1
  214. package/dist/src/windows-process.d.ts +0 -7
  215. package/dist/src/windows-process.d.ts.map +0 -1
  216. package/dist/src/windows-process.js +0 -18
  217. package/dist/src/windows-process.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kiro.js","sourceRoot":"","sources":["../../../../src/activity/adapters/kiro.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,SAAS,GACV,MAAM,wCAAwC,CAAC;AAChD,OAAO,EACL,aAAa,EACb,UAAU,GACX,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,WAAW,EACX,WAAW,GACZ,MAAM,cAAc,CAAC;AAOtB;;;;;;;;GAQG;AACH,MAAM,mBAAmB;IACd,EAAE,GAAG,cAAc,CAAC;IACpB,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC;IAEvC,KAAK,CAAC,MAAe,EAAE,OAAqB;QAC1C,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;YAC9D,IAAI,OAAO,KAAK,IAAI;gBAAE,OAAO,EAAE,CAAC;YAChC,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAC1C,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,WAAW;gBAAE,OAAO,EAAE,CAAC;YACvD,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;YAC7C,IAAI,IAAI,KAAK,EAAE;gBAAE,OAAO,EAAE,CAAC;YAC3B,OAAO,CAAC,aAAa,CACnB,IAAI,CAAC,SAAS,EACd,OAAO,EACP,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,EAC7D,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,0BAA0B,EACvE,IAAI,EACJ,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,iBAAiB,EACrD,QAAQ,IAAI,EAAE,CACf,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;CACF;AAED,SAAS,WAAW,CAAC,OAAgB;IACnC,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC;IACvD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAAE,OAAO,EAAE,CAAC;IACvC,OAAO,OAAO;SACX,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;SACb,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAChB,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CACxE;SACA,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;SACpC,IAAI,CAAC,IAAI,CAAC;SACV,IAAI,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,CAAC,MAAM,mBAAmB,GAC9B,IAAI,mBAAmB,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"opencode.d.ts","sourceRoot":"","sources":["../../../../src/activity/adapters/opencode.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAGV,qBAAqB,EACtB,MAAM,aAAa,CAAC;AAqKrB,eAAO,MAAM,uBAAuB,EAAE,qBACP,CAAC"}
1
+ {"version":3,"file":"opencode.d.ts","sourceRoot":"","sources":["../../../../src/activity/adapters/opencode.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAGV,qBAAqB,EACtB,MAAM,aAAa,CAAC;AAiTrB,eAAO,MAAM,uBAAuB,EAAE,qBACP,CAAC"}
@@ -16,7 +16,11 @@ class OpenCodeActivityAdapter {
16
16
  ...context,
17
17
  observedAt: openCodeObservedAt(object, context.observedAt),
18
18
  };
19
- const type = normalizeOpenCodeType(stringField(object, "type"));
19
+ const recordType = stringField(object, "type");
20
+ if (recordType.startsWith("session_message.")) {
21
+ return this.#parseSessionMessage(recordType, object, observedContext);
22
+ }
23
+ const type = normalizeOpenCodeType(recordType);
20
24
  const part = objectValue(object["part"]);
21
25
  this.#rememberMessageRole(objectValue(object["message_info"]), context.sessionId);
22
26
  if (type === "message.updated") {
@@ -83,6 +87,84 @@ class OpenCodeActivityAdapter {
83
87
  return [errorDraft(this.agentKind, context, "malformed_record")];
84
88
  }
85
89
  }
90
+ /**
91
+ * An OpenCode 2 record: a session_message row without its parts, or one
92
+ * part of it. See opencode-message-tables.ts.
93
+ */
94
+ #parseSessionMessage(type, object, context) {
95
+ const info = objectValue(object["info"]);
96
+ const part = objectValue(object["part"]);
97
+ switch (type) {
98
+ case "session_message.user": {
99
+ if (stringField(info, "text").trim() === "")
100
+ return [];
101
+ return [activityDraft(this.agentKind, context, ActivityKind.PROMPT, "User prompt submitted.", info?.["text"], "promptContent", "text")];
102
+ }
103
+ case "session_message.assistant": {
104
+ // A step's text, reasoning and tool calls are records of their own;
105
+ // its usage stays in the record for usage reports.
106
+ const drafts = [];
107
+ if (!this.#startedSessions.has(context.sessionId)) {
108
+ this.#rememberStarted(context.sessionId);
109
+ const started = nestedField(info, "time", "created");
110
+ drafts.push(lifecycleDraft(this.agentKind, typeof started === "number" && Number.isFinite(started)
111
+ ? { ...context, observedAt: new Date(started) }
112
+ : context, LifecyclePhase.STARTED, "OpenCode task started."));
113
+ }
114
+ if (info?.["error"] !== undefined && info["error"] !== null) {
115
+ drafts.push(errorDraft(this.agentKind, context, "session_message.assistant.error"));
116
+ }
117
+ return drafts;
118
+ }
119
+ case "session_message.assistant.text":
120
+ if (stringField(part, "text").trim() === "")
121
+ return [];
122
+ return [activityDraft(this.agentKind, context, ActivityKind.RESPONSE, "Agent response produced.", part?.["text"], "responseContent", "text")];
123
+ case "session_message.assistant.reasoning":
124
+ if (stringField(part, "text").trim() === "")
125
+ return [];
126
+ return [activityDraft(this.agentKind, context, ActivityKind.REASONING, "Agent reasoning updated.", part?.["text"], "reasoningContent", "text")];
127
+ case "session_message.assistant.tool": {
128
+ const state = objectValue(part?.["state"]);
129
+ const status = stringField(state, "status");
130
+ return toolDrafts(this.agentKind, context, {
131
+ invocationId: part?.["id"],
132
+ toolName: part?.["name"],
133
+ phase: openCodeToolPhase(status),
134
+ arguments: state?.["input"],
135
+ output: openCodeToolOutput(state),
136
+ exitCode: nestedField(state, "metadata", "exit") ??
137
+ nestedField(state, "metadata", "exitCode"),
138
+ });
139
+ }
140
+ case "session_message.shell": {
141
+ // A command the user ran in the session.
142
+ const exit = info?.["exit"];
143
+ return toolDrafts(this.agentKind, context, {
144
+ invocationId: info?.["shellID"],
145
+ toolName: "shell",
146
+ phase: openCodeShellPhase(stringField(info, "status"), exit),
147
+ arguments: { command: info?.["command"] },
148
+ output: nestedField(info, "output", "output"),
149
+ exitCode: exit,
150
+ });
151
+ }
152
+ case "session_message.idle": {
153
+ // Ends the turn: every step since the previous marker belongs to it.
154
+ this.#startedSessions.delete(context.sessionId);
155
+ const outcome = stringField(info, "outcome");
156
+ const drafts = [lifecycleDraft(this.agentKind, context, LifecyclePhase.IDLE, outcome === "interrupted" ? "OpenCode task interrupted." : "OpenCode task completed.")];
157
+ if (outcome === "failed") {
158
+ drafts.push(errorDraft(this.agentKind, context, "session_message.idle.failed"));
159
+ }
160
+ return drafts;
161
+ }
162
+ default:
163
+ // Synthetic and system messages, compactions, model and agent
164
+ // switches, and user files stay as the vendor's own records.
165
+ return [];
166
+ }
167
+ }
86
168
  #rememberStarted(sessionId) {
87
169
  this.#startedSessions.add(sessionId);
88
170
  if (this.#startedSessions.size <= 4_096)
@@ -122,6 +204,31 @@ function openCodeObservedAt(object, fallback) {
122
204
  const parsed = new Date(timestamp);
123
205
  return Number.isNaN(parsed.getTime()) ? fallback : parsed;
124
206
  }
207
+ /** A finished OpenCode 2 tool call's text output, or its error. */
208
+ function openCodeToolOutput(state) {
209
+ const content = state?.["content"];
210
+ const texts = Array.isArray(content)
211
+ ? content.flatMap((item) => {
212
+ const value = objectValue(item);
213
+ return value?.["type"] === "text" && typeof value["text"] === "string" ? [value["text"]] : [];
214
+ })
215
+ : [];
216
+ const error = nestedField(state, "error", "message");
217
+ if (typeof error === "string" && error !== "")
218
+ texts.unshift(error);
219
+ return texts.length === 0 ? undefined : texts.join("\n");
220
+ }
221
+ function openCodeShellPhase(status, exit) {
222
+ if (status === "running")
223
+ return ToolPhase.RUNNING;
224
+ if (status === "killed")
225
+ return ToolPhase.CANCELLED;
226
+ if (status === "timeout")
227
+ return ToolPhase.FAILED;
228
+ if (status === "exited")
229
+ return exit === undefined || exit === 0 ? ToolPhase.SUCCEEDED : ToolPhase.FAILED;
230
+ return ToolPhase.REQUESTED;
231
+ }
125
232
  function openCodeToolPhase(status) {
126
233
  if (status === "completed")
127
234
  return ToolPhase.SUCCEEDED;
@@ -1 +1 @@
1
- {"version":3,"file":"opencode.js","sourceRoot":"","sources":["../../../../src/activity/adapters/opencode.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"opencode.js","sourceRoot":"","sources":["../../../../src/activity/adapters/opencode.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { VendorActivityAdapter } from "../types.js";
2
+ export declare const zedActivityAdapter: VendorActivityAdapter;
3
+ //# sourceMappingURL=zed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zed.d.ts","sourceRoot":"","sources":["../../../../src/activity/adapters/zed.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAGV,qBAAqB,EACtB,MAAM,aAAa,CAAC;AA+JrB,eAAO,MAAM,kBAAkB,EAAE,qBACP,CAAC"}
@@ -0,0 +1,134 @@
1
+ import { ActivityKind, AgentKind, } from "../../generated/phigon/v1/common_pb.js";
2
+ import { ToolPhase } from "../../generated/phigon/v1/telemetry_pb.js";
3
+ import { activityDraft, errorDraft, toolDrafts, } from "../normalize.js";
4
+ import { arrayField, objectValue, recordObservedAt, stringField, } from "../record.js";
5
+ const maxTrackedToolCalls = 4_096;
6
+ /**
7
+ * Zed agent threads read from its threads database (see
8
+ * zed-sqlite-source.ts). Each record is one item of a thread:
9
+ * `{ type: "zed_message", role: "user", content }` with Text and Mention
10
+ * parts, `{ type: "zed_message", role: "assistant", content: [block] }`
11
+ * with one Text, Thinking `{ text }` or ToolUse `{ id, name, input }` block,
12
+ * or `{ type: "zed_tool_result", tool_use_id, tool_name, is_error, content }`.
13
+ */
14
+ class ZedActivityAdapter {
15
+ id = "zed-thread";
16
+ agentKind = AgentKind.GENERIC;
17
+ #toolNames = new Map();
18
+ parse(record, context) {
19
+ try {
20
+ const object = objectValue(record);
21
+ if (object === null)
22
+ return [];
23
+ const observedContext = {
24
+ ...context,
25
+ observedAt: recordObservedAt(record, context.observedAt),
26
+ };
27
+ const type = stringField(object, "type");
28
+ if (type === "zed_tool_result") {
29
+ return this.#toolResult(object, observedContext);
30
+ }
31
+ if (type !== "zed_message")
32
+ return [];
33
+ const role = stringField(object, "role");
34
+ if (role === "user")
35
+ return this.#prompt(object, observedContext);
36
+ if (role !== "assistant")
37
+ return [];
38
+ return arrayField(object, "content")
39
+ .slice(0, 256)
40
+ .flatMap((block) => this.#agentBlock(block, observedContext));
41
+ }
42
+ catch {
43
+ return [errorDraft(this.agentKind, context, "malformed_record")];
44
+ }
45
+ }
46
+ #prompt(object, context) {
47
+ // Zed splits the prompt around each mention, so the parts join with
48
+ // nothing between them.
49
+ const text = arrayField(object, "content")
50
+ .slice(0, 256)
51
+ .map((part) => {
52
+ const value = objectValue(part);
53
+ if (typeof value?.["Text"] === "string")
54
+ return value["Text"];
55
+ const mention = objectValue(value?.["Mention"]);
56
+ return mention === null ? "" : `@${mentionName(mention["uri"])}`;
57
+ })
58
+ .join("")
59
+ .trim();
60
+ if (text === "")
61
+ return [];
62
+ return [activityDraft(this.agentKind, context, ActivityKind.PROMPT, "User prompt submitted.", text, "promptContent", "zed_user")];
63
+ }
64
+ #agentBlock(block, context) {
65
+ const value = objectValue(block);
66
+ if (value === null)
67
+ return [];
68
+ if (typeof value["Text"] === "string") {
69
+ if (value["Text"].trim() === "")
70
+ return [];
71
+ return [activityDraft(this.agentKind, context, ActivityKind.RESPONSE, "Agent response produced.", value["Text"], "responseContent", "zed_assistant")];
72
+ }
73
+ const thinking = stringField(objectValue(value["Thinking"]), "text");
74
+ if (thinking.trim() !== "") {
75
+ return [activityDraft(this.agentKind, context, ActivityKind.REASONING, "Agent reasoning updated.", thinking, "reasoningContent", "thinking")];
76
+ }
77
+ const toolUse = objectValue(value["ToolUse"]);
78
+ if (toolUse === null)
79
+ return [];
80
+ const id = stringField(toolUse, "id");
81
+ const name = stringField(toolUse, "name") || "tool";
82
+ if (id !== "") {
83
+ this.#toolNames.set(`${context.sessionId}\u0000${id}`, name);
84
+ if (this.#toolNames.size > maxTrackedToolCalls) {
85
+ const oldest = this.#toolNames.keys().next().value;
86
+ if (oldest !== undefined)
87
+ this.#toolNames.delete(oldest);
88
+ }
89
+ }
90
+ return toolDrafts(this.agentKind, context, {
91
+ invocationId: id,
92
+ toolName: name,
93
+ phase: ToolPhase.REQUESTED,
94
+ arguments: toolUse["input"],
95
+ });
96
+ }
97
+ #toolResult(object, context) {
98
+ const id = stringField(object, "tool_use_id");
99
+ const key = `${context.sessionId}\u0000${id}`;
100
+ const name = stringField(object, "tool_name") ||
101
+ this.#toolNames.get(key) ||
102
+ "tool";
103
+ this.#toolNames.delete(key);
104
+ const output = stringField(object, "content");
105
+ return toolDrafts(this.agentKind, context, {
106
+ invocationId: id,
107
+ toolName: name,
108
+ phase: object["is_error"] === true ? ToolPhase.FAILED : ToolPhase.SUCCEEDED,
109
+ ...(output === "" ? {} : { output }),
110
+ });
111
+ }
112
+ }
113
+ /**
114
+ * What a mention points at, as Zed shows it: a symbol, thread or rule name,
115
+ * a file or folder name, or a URL. Mentions are tagged values such as
116
+ * `{ File: { abs_path } }` or `{ Fetch: { url } }`.
117
+ */
118
+ function mentionName(uri) {
119
+ const variant = objectValue(uri);
120
+ const fields = variant === null
121
+ ? null
122
+ : objectValue(Object.values(variant)[0]);
123
+ for (const field of ["name", "abs_path", "path", "url"]) {
124
+ const value = stringField(fields, field);
125
+ if (value !== "") {
126
+ return field === "abs_path" || field === "path"
127
+ ? value.split(/[\\/]/u).filter(Boolean).at(-1) ?? value
128
+ : value;
129
+ }
130
+ }
131
+ return variant === null ? "mention" : Object.keys(variant)[0] ?? "mention";
132
+ }
133
+ export const zedActivityAdapter = new ZedActivityAdapter();
134
+ //# sourceMappingURL=zed.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zed.js","sourceRoot":"","sources":["../../../../src/activity/adapters/zed.ts"],"names":[],"mappings":"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"}
@@ -48,6 +48,11 @@ export declare class ActivityCollector {
48
48
  scanOnce(): Promise<ActivityCollectorMetrics>;
49
49
  syncHistory(signal?: AbortSignal): Promise<HistorySyncSummary>;
50
50
  run(signal: AbortSignal): Promise<void>;
51
+ /**
52
+ * Release the database connections the live reader keeps open. A later
53
+ * scan opens them again.
54
+ */
55
+ close(): void;
51
56
  metrics(): ActivityCollectorMetrics;
52
57
  sourceIdentities(): AgentIdentity[];
53
58
  }
@@ -87,4 +92,11 @@ export declare function registeredAgentActivitySources(registrations: readonly R
87
92
  displayName: string;
88
93
  activityDirectories: readonly string[];
89
94
  }>[]): readonly ActivitySource[];
95
+ /**
96
+ * How long a history import rests after a batch that took `spentMs`. Resting
97
+ * as long as the batch worked keeps a large first import near half a core,
98
+ * and leaves the other half of the event loop to live collection; a full
99
+ * catch-up once held a whole core for minutes. One second at most.
100
+ */
101
+ export declare function historyRest(spentMs: number): number;
90
102
  //# sourceMappingURL=collector.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"collector.d.ts","sourceRoot":"","sources":["../../../src/activity/collector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"collector.d.ts","sourceRoot":"","sources":["../../../src/activity/collector.ts"],"names":[],"mappings":"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"}
@@ -7,11 +7,20 @@ import { AgentIdentitySchema, } from "../generated/phigon/v1/identity_pb.js";
7
7
  import { mergeInventoryWithHistoricalIdentities } from "../historical-identity-store.js";
8
8
  import { EventEnvelopeSchema, } from "../generated/phigon/v1/telemetry_pb.js";
9
9
  import { claudeActivityAdapter } from "./adapters/claude.js";
10
+ import { clineExtensionActivityAdapter, clineTaskFirstMessageField, kiloCodeActivityAdapter, rooCodeActivityAdapter, } from "./adapters/cline-task.js";
11
+ import { clineActivityAdapter } from "./adapters/cline.js";
10
12
  import { codexActivityAdapter } from "./adapters/codex.js";
11
13
  import { copilotActivityAdapter } from "./adapters/copilot.js";
14
+ import { copilotChatActivityAdapter } from "./adapters/copilot-chat.js";
15
+ import { cursorActivityAdapter } from "./adapters/cursor.js";
16
+ import { factoryDroidActivityAdapter } from "./adapters/factory-droid.js";
17
+ import { geminiActivityAdapter } from "./adapters/gemini.js";
18
+ import { gooseActivityAdapter } from "./adapters/goose.js";
12
19
  import { hermesActivityAdapter } from "./adapters/hermes.js";
20
+ import { kiroActivityAdapter } from "./adapters/kiro.js";
13
21
  import { openClawActivityAdapter } from "./adapters/openclaw.js";
14
22
  import { openCodeActivityAdapter } from "./adapters/opencode.js";
23
+ import { zedActivityAdapter } from "./adapters/zed.js";
15
24
  import { createOpenAICompatibleAdapter } from "./adapters/openai-compatible.js";
16
25
  import { activityBridgeAgents } from "./bridges.js";
17
26
  import { genericActivityAdapter } from "./adapters/generic.js";
@@ -38,6 +47,19 @@ const adapters = new Map([
38
47
  // the generic bridge cannot accidentally replace it with a fixed label.
39
48
  ["generic", genericActivityAdapter],
40
49
  ["opencode", openCodeActivityAdapter],
50
+ // Native recordings use their own adapter IDs so the OpenAI-compatible
51
+ // `ingest --agent` bridges for the same products keep their parser.
52
+ ["gemini-cli", geminiActivityAdapter],
53
+ ["cline-cli", clineActivityAdapter],
54
+ ["goose-session", gooseActivityAdapter],
55
+ ["cursor-transcript", cursorActivityAdapter],
56
+ ["copilot-chat", copilotChatActivityAdapter],
57
+ ["kiro-session", kiroActivityAdapter],
58
+ ["zed-thread", zedActivityAdapter],
59
+ ["factory-droid", factoryDroidActivityAdapter],
60
+ ["cline-task", clineExtensionActivityAdapter],
61
+ ["roo-code-task", rooCodeActivityAdapter],
62
+ ["kilo-code-task", kiloCodeActivityAdapter],
41
63
  ]);
42
64
  export class ActivityCollector {
43
65
  #config;
@@ -145,6 +167,7 @@ export class ActivityCollector {
145
167
  }
146
168
  // Release the collection lock between bounded batches. A large archive
147
169
  // must not prevent the live reader from following current work.
170
+ const started = performance.now();
148
171
  const pass = await this.#withScanLock(async () => {
149
172
  const before = this.#emittedEvents;
150
173
  const result = await this.#collectOnce(this.#historyReader, true);
@@ -157,6 +180,9 @@ export class ActivityCollector {
157
180
  if (!complete && pass.sourceRecords === 0) {
158
181
  await abortableDelay(100, signal ?? new AbortController().signal);
159
182
  }
183
+ else if (!complete) {
184
+ await abortableDelay(historyRest(performance.now() - started), signal ?? new AbortController().signal);
185
+ }
160
186
  }
161
187
  return Object.freeze({
162
188
  filesDiscovered,
@@ -275,10 +301,22 @@ export class ActivityCollector {
275
301
  };
276
302
  }
277
303
  async run(signal) {
278
- while (!signal.aborted) {
279
- await this.scanOnce();
280
- await abortableDelay(this.#config.activityScanIntervalMs, signal);
304
+ try {
305
+ while (!signal.aborted) {
306
+ await this.scanOnce();
307
+ await abortableDelay(this.#config.activityScanIntervalMs, signal);
308
+ }
281
309
  }
310
+ finally {
311
+ this.close();
312
+ }
313
+ }
314
+ /**
315
+ * Release the database connections the live reader keeps open. A later
316
+ * scan opens them again.
317
+ */
318
+ close() {
319
+ this.#reader.close();
282
320
  }
283
321
  metrics() {
284
322
  return Object.freeze({
@@ -557,6 +595,99 @@ function configuredSources(config) {
557
595
  roots: config.activitySourceDirectories.opencode,
558
596
  format: "opencode-sqlite",
559
597
  },
598
+ {
599
+ adapterId: "gemini-cli",
600
+ roots: config.activitySourceDirectories.gemini,
601
+ // <project>/chats/session-*.jsonl and subagent <parent>/<id>.jsonl.
602
+ pathPattern: "^[^/]+/chats/",
603
+ },
604
+ {
605
+ adapterId: "cline-cli",
606
+ roots: config.activitySourceDirectories.cline,
607
+ format: "json-messages",
608
+ // <session>/<session>.messages.json, rewritten in place per turn.
609
+ pathPattern: "^[^/]+/[^/]+\\.messages\\.json$",
610
+ messagesField: "messages",
611
+ },
612
+ {
613
+ adapterId: "goose-session",
614
+ roots: config.activitySourceDirectories.goose,
615
+ format: "goose-sqlite",
616
+ },
617
+ {
618
+ adapterId: "cursor-transcript",
619
+ roots: config.activitySourceDirectories.cursor,
620
+ format: "json-messages",
621
+ // <project>/agent-transcripts/<id>/<id>.jsonl and
622
+ // <id>/subagents/<sub>.jsonl. The final line often has no newline yet.
623
+ pathPattern: "^[^/]+/agent-transcripts/.+\\.jsonl$",
624
+ document: {
625
+ documentFormat: "jsonl",
626
+ directoryPattern: "^[^/]+(?:/agent-transcripts(?:/[^/]+(?:/subagents)?)?)?$",
627
+ },
628
+ },
629
+ // VS Code chat sessions: <workspace>/chatSessions/<id>.json documents
630
+ // and, with operation-log storage, <id>.jsonl logs of the same session.
631
+ ...["json", "jsonl"].map((extension) => ({
632
+ adapterId: "copilot-chat",
633
+ roots: config.activitySourceDirectories.copilotChat,
634
+ format: "json-messages",
635
+ pathPattern: `^(?:[^/]+/chatSessions/)?[^/]+\\.${extension}$`,
636
+ messagesField: "requests",
637
+ document: {
638
+ documentFormat: extension === "json"
639
+ ? "json"
640
+ : "mutation-log",
641
+ directoryPattern: "^[^/]+(?:/chatSessions)?$",
642
+ messageIdField: "requestId",
643
+ completeFields: ["result", "isCanceled", "modelState.completedAt"],
644
+ sessionIdField: "sessionId",
645
+ },
646
+ })),
647
+ {
648
+ adapterId: "kiro-session",
649
+ roots: config.activitySourceDirectories.kiro,
650
+ format: "json-messages",
651
+ // <workspace>/<session id>.json beside the <workspace>/sessions.json index.
652
+ pathPattern: "^[^/]+/(?!sessions[.]json$)[^/]+[.]json$",
653
+ messagesField: "history",
654
+ document: {
655
+ directoryPattern: "^[^/]+$",
656
+ messageIdField: "message.id",
657
+ sessionIdField: "sessionId",
658
+ },
659
+ },
660
+ {
661
+ adapterId: "zed-thread",
662
+ roots: config.activitySourceDirectories.zed,
663
+ format: "zed-sqlite",
664
+ },
665
+ {
666
+ adapterId: "factory-droid",
667
+ roots: config.activitySourceDirectories.droid,
668
+ // <project>/<session id>.jsonl, appended as the session runs, beside
669
+ // <session id>.settings.json.
670
+ pathPattern: "^(?:[^/]+/)?[^/]+\\.jsonl$",
671
+ },
672
+ // Cline, Roo Code and Kilo Code tasks: <task id>/ui_messages.json, the
673
+ // list of messages the extension shows, rewritten as the task runs.
674
+ ...[
675
+ ["cline-task", config.activitySourceDirectories.clineTasks],
676
+ ["roo-code-task", config.activitySourceDirectories.rooCode],
677
+ ["kilo-code-task", config.activitySourceDirectories.kiloCode],
678
+ ].map(([adapterId, roots]) => ({
679
+ adapterId,
680
+ roots,
681
+ format: "json-messages",
682
+ pathPattern: "^[^/]+/ui_messages[.]json$",
683
+ messagesField: "",
684
+ document: {
685
+ directoryPattern: "^[^/]+$",
686
+ messageIdField: "ts",
687
+ pendingField: "partial",
688
+ firstMessageField: clineTaskFirstMessageField,
689
+ },
690
+ })),
560
691
  {
561
692
  adapterId: "generic",
562
693
  roots: config.activitySourceDirectories.generic,
@@ -602,6 +733,17 @@ function sourceIdentityDisplayName(adapterID, sourceID, sourceDisplayName) {
602
733
  case "hermes": return "Hermes Agent";
603
734
  case "openclaw": return "OpenClaw";
604
735
  case "opencode": return "OpenCode";
736
+ case "gemini-cli": return "Gemini CLI";
737
+ case "cline-cli": return "Cline";
738
+ case "goose-session": return "Goose";
739
+ case "cursor-transcript": return "Cursor";
740
+ case "copilot-chat": return "GitHub Copilot";
741
+ case "kiro-session": return "Kiro";
742
+ case "zed-thread": return "Zed";
743
+ case "factory-droid": return "Factory Droid";
744
+ case "cline-task": return "Cline";
745
+ case "roo-code-task": return "Roo Code";
746
+ case "kilo-code-task": return "Kilo Code";
605
747
  default: return "Agent activity";
606
748
  }
607
749
  })();
@@ -692,6 +834,17 @@ function clampObservedAt(value, now) {
692
834
  return now;
693
835
  return value;
694
836
  }
837
+ /**
838
+ * How long a history import rests after a batch that took `spentMs`. Resting
839
+ * as long as the batch worked keeps a large first import near half a core,
840
+ * and leaves the other half of the event loop to live collection; a full
841
+ * catch-up once held a whole core for minutes. One second at most.
842
+ */
843
+ export function historyRest(spentMs) {
844
+ if (!Number.isFinite(spentMs) || spentMs <= 0)
845
+ return 0;
846
+ return Math.min(1_000, Math.round(spentMs));
847
+ }
695
848
  async function abortableDelay(milliseconds, signal) {
696
849
  if (signal.aborted)
697
850
  return;