@phigon/observer 8.1.0 → 8.3.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 (309) hide show
  1. package/README.md +244 -18
  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/abortable-delay.d.ts +10 -0
  9. package/dist/src/abortable-delay.d.ts.map +1 -0
  10. package/dist/src/abortable-delay.js +21 -0
  11. package/dist/src/abortable-delay.js.map +1 -0
  12. package/dist/src/action-policy.d.ts.map +1 -1
  13. package/dist/src/action-policy.js +4 -2
  14. package/dist/src/action-policy.js.map +1 -1
  15. package/dist/src/activity/adapters/claude.d.ts.map +1 -1
  16. package/dist/src/activity/adapters/claude.js +28 -2
  17. package/dist/src/activity/adapters/claude.js.map +1 -1
  18. package/dist/src/activity/adapters/cline-task.d.ts +7 -0
  19. package/dist/src/activity/adapters/cline-task.d.ts.map +1 -0
  20. package/dist/src/activity/adapters/cline-task.js +197 -0
  21. package/dist/src/activity/adapters/cline-task.js.map +1 -0
  22. package/dist/src/activity/adapters/cline.d.ts +3 -0
  23. package/dist/src/activity/adapters/cline.d.ts.map +1 -0
  24. package/dist/src/activity/adapters/cline.js +102 -0
  25. package/dist/src/activity/adapters/cline.js.map +1 -0
  26. package/dist/src/activity/adapters/codex.d.ts.map +1 -1
  27. package/dist/src/activity/adapters/codex.js +76 -0
  28. package/dist/src/activity/adapters/codex.js.map +1 -1
  29. package/dist/src/activity/adapters/copilot-chat.d.ts +3 -0
  30. package/dist/src/activity/adapters/copilot-chat.d.ts.map +1 -0
  31. package/dist/src/activity/adapters/copilot-chat.js +176 -0
  32. package/dist/src/activity/adapters/copilot-chat.js.map +1 -0
  33. package/dist/src/activity/adapters/copilot.d.ts +2 -1
  34. package/dist/src/activity/adapters/copilot.d.ts.map +1 -1
  35. package/dist/src/activity/adapters/copilot.js +173 -2
  36. package/dist/src/activity/adapters/copilot.js.map +1 -1
  37. package/dist/src/activity/adapters/cursor.d.ts +3 -0
  38. package/dist/src/activity/adapters/cursor.d.ts.map +1 -0
  39. package/dist/src/activity/adapters/cursor.js +86 -0
  40. package/dist/src/activity/adapters/cursor.js.map +1 -0
  41. package/dist/src/activity/adapters/factory-droid.d.ts +3 -0
  42. package/dist/src/activity/adapters/factory-droid.d.ts.map +1 -0
  43. package/dist/src/activity/adapters/factory-droid.js +126 -0
  44. package/dist/src/activity/adapters/factory-droid.js.map +1 -0
  45. package/dist/src/activity/adapters/gemini.d.ts +3 -0
  46. package/dist/src/activity/adapters/gemini.d.ts.map +1 -0
  47. package/dist/src/activity/adapters/gemini.js +177 -0
  48. package/dist/src/activity/adapters/gemini.js.map +1 -0
  49. package/dist/src/activity/adapters/goose.d.ts +3 -0
  50. package/dist/src/activity/adapters/goose.d.ts.map +1 -0
  51. package/dist/src/activity/adapters/goose.js +116 -0
  52. package/dist/src/activity/adapters/goose.js.map +1 -0
  53. package/dist/src/activity/adapters/kiro.d.ts +3 -0
  54. package/dist/src/activity/adapters/kiro.d.ts.map +1 -0
  55. package/dist/src/activity/adapters/kiro.js +47 -0
  56. package/dist/src/activity/adapters/kiro.js.map +1 -0
  57. package/dist/src/activity/adapters/openai-compatible.d.ts.map +1 -1
  58. package/dist/src/activity/adapters/openai-compatible.js +9 -1
  59. package/dist/src/activity/adapters/openai-compatible.js.map +1 -1
  60. package/dist/src/activity/adapters/opencode.d.ts.map +1 -1
  61. package/dist/src/activity/adapters/opencode.js +108 -1
  62. package/dist/src/activity/adapters/opencode.js.map +1 -1
  63. package/dist/src/activity/adapters/zed.d.ts +3 -0
  64. package/dist/src/activity/adapters/zed.d.ts.map +1 -0
  65. package/dist/src/activity/adapters/zed.js +134 -0
  66. package/dist/src/activity/adapters/zed.js.map +1 -0
  67. package/dist/src/activity/collector.d.ts +43 -1
  68. package/dist/src/activity/collector.d.ts.map +1 -1
  69. package/dist/src/activity/collector.js +490 -77
  70. package/dist/src/activity/collector.js.map +1 -1
  71. package/dist/src/activity/goose-sqlite-source.d.ts +33 -0
  72. package/dist/src/activity/goose-sqlite-source.d.ts.map +1 -0
  73. package/dist/src/activity/goose-sqlite-source.js +274 -0
  74. package/dist/src/activity/goose-sqlite-source.js.map +1 -0
  75. package/dist/src/activity/index.d.ts +3 -0
  76. package/dist/src/activity/index.d.ts.map +1 -1
  77. package/dist/src/activity/index.js +3 -0
  78. package/dist/src/activity/index.js.map +1 -1
  79. package/dist/src/activity/ingest.d.ts +9 -0
  80. package/dist/src/activity/ingest.d.ts.map +1 -1
  81. package/dist/src/activity/ingest.js +94 -4
  82. package/dist/src/activity/ingest.js.map +1 -1
  83. package/dist/src/activity/json-document-source.d.ts +151 -0
  84. package/dist/src/activity/json-document-source.d.ts.map +1 -0
  85. package/dist/src/activity/json-document-source.js +586 -0
  86. package/dist/src/activity/json-document-source.js.map +1 -0
  87. package/dist/src/activity/native-capabilities.d.ts.map +1 -1
  88. package/dist/src/activity/native-capabilities.js +8 -12
  89. package/dist/src/activity/native-capabilities.js.map +1 -1
  90. package/dist/src/activity/normalize.d.ts.map +1 -1
  91. package/dist/src/activity/normalize.js +64 -6
  92. package/dist/src/activity/normalize.js.map +1 -1
  93. package/dist/src/activity/opencode-message-tables.d.ts +87 -0
  94. package/dist/src/activity/opencode-message-tables.d.ts.map +1 -0
  95. package/dist/src/activity/opencode-message-tables.js +546 -0
  96. package/dist/src/activity/opencode-message-tables.js.map +1 -0
  97. package/dist/src/activity/opencode-sqlite-source.d.ts +7 -0
  98. package/dist/src/activity/opencode-sqlite-source.d.ts.map +1 -1
  99. package/dist/src/activity/opencode-sqlite-source.js +154 -63
  100. package/dist/src/activity/opencode-sqlite-source.js.map +1 -1
  101. package/dist/src/activity/source-reader.d.ts +60 -4
  102. package/dist/src/activity/source-reader.d.ts.map +1 -1
  103. package/dist/src/activity/source-reader.js +593 -75
  104. package/dist/src/activity/source-reader.js.map +1 -1
  105. package/dist/src/activity/sqlite-connections.d.ts +77 -0
  106. package/dist/src/activity/sqlite-connections.d.ts.map +1 -0
  107. package/dist/src/activity/sqlite-connections.js +220 -0
  108. package/dist/src/activity/sqlite-connections.js.map +1 -0
  109. package/dist/src/activity/zed-sqlite-source.d.ts +65 -0
  110. package/dist/src/activity/zed-sqlite-source.d.ts.map +1 -0
  111. package/dist/src/activity/zed-sqlite-source.js +547 -0
  112. package/dist/src/activity/zed-sqlite-source.js.map +1 -0
  113. package/dist/src/agent-action-executor.d.ts +18 -1
  114. package/dist/src/agent-action-executor.d.ts.map +1 -1
  115. package/dist/src/agent-action-executor.js +113 -58
  116. package/dist/src/agent-action-executor.js.map +1 -1
  117. package/dist/src/agentic-guardian.d.ts.map +1 -1
  118. package/dist/src/agentic-guardian.js +6 -5
  119. package/dist/src/agentic-guardian.js.map +1 -1
  120. package/dist/src/atomic-replace.d.ts +7 -0
  121. package/dist/src/atomic-replace.d.ts.map +1 -1
  122. package/dist/src/atomic-replace.js +28 -3
  123. package/dist/src/atomic-replace.js.map +1 -1
  124. package/dist/src/bridge-journal.d.ts +32 -0
  125. package/dist/src/bridge-journal.d.ts.map +1 -0
  126. package/dist/src/bridge-journal.js +113 -0
  127. package/dist/src/bridge-journal.js.map +1 -0
  128. package/dist/src/cli.d.ts +7 -1
  129. package/dist/src/cli.d.ts.map +1 -1
  130. package/dist/src/cli.js +534 -50
  131. package/dist/src/cli.js.map +1 -1
  132. package/dist/src/collection-notice.d.ts +34 -0
  133. package/dist/src/collection-notice.d.ts.map +1 -0
  134. package/dist/src/collection-notice.js +73 -0
  135. package/dist/src/collection-notice.js.map +1 -0
  136. package/dist/src/config.d.ts +39 -0
  137. package/dist/src/config.d.ts.map +1 -1
  138. package/dist/src/config.js +187 -36
  139. package/dist/src/config.js.map +1 -1
  140. package/dist/src/connection-config.d.ts.map +1 -1
  141. package/dist/src/connection-config.js +5 -0
  142. package/dist/src/connection-config.js.map +1 -1
  143. package/dist/src/content-redaction.d.ts +17 -1
  144. package/dist/src/content-redaction.d.ts.map +1 -1
  145. package/dist/src/content-redaction.js +51 -3
  146. package/dist/src/content-redaction.js.map +1 -1
  147. package/dist/src/credential-store.d.ts +20 -1
  148. package/dist/src/credential-store.d.ts.map +1 -1
  149. package/dist/src/credential-store.js +29 -4
  150. package/dist/src/credential-store.js.map +1 -1
  151. package/dist/src/custom-agent-registry.d.ts.map +1 -1
  152. package/dist/src/custom-agent-registry.js +2 -1
  153. package/dist/src/custom-agent-registry.js.map +1 -1
  154. package/dist/src/discovery/adapters/generic.d.ts.map +1 -1
  155. package/dist/src/discovery/adapters/generic.js +160 -2
  156. package/dist/src/discovery/adapters/generic.js.map +1 -1
  157. package/dist/src/discovery/engine.d.ts +7 -1
  158. package/dist/src/discovery/engine.d.ts.map +1 -1
  159. package/dist/src/discovery/engine.js +21 -16
  160. package/dist/src/discovery/engine.js.map +1 -1
  161. package/dist/src/discovery/known-agent.d.ts +7 -0
  162. package/dist/src/discovery/known-agent.d.ts.map +1 -1
  163. package/dist/src/discovery/known-agent.js +9 -4
  164. package/dist/src/discovery/known-agent.js.map +1 -1
  165. package/dist/src/discovery/system-evidence.d.ts +40 -1
  166. package/dist/src/discovery/system-evidence.d.ts.map +1 -1
  167. package/dist/src/discovery/system-evidence.js +189 -16
  168. package/dist/src/discovery/system-evidence.js.map +1 -1
  169. package/dist/src/doctor-check.d.ts +51 -0
  170. package/dist/src/doctor-check.d.ts.map +1 -0
  171. package/dist/src/doctor-check.js +174 -0
  172. package/dist/src/doctor-check.js.map +1 -0
  173. package/dist/src/enroll.d.ts +86 -0
  174. package/dist/src/enroll.d.ts.map +1 -0
  175. package/dist/src/enroll.js +245 -0
  176. package/dist/src/enroll.js.map +1 -0
  177. package/dist/src/entry.d.ts +3 -0
  178. package/dist/src/entry.d.ts.map +1 -0
  179. package/dist/src/entry.js +14 -0
  180. package/dist/src/entry.js.map +1 -0
  181. package/dist/src/event-queue.d.ts +13 -1
  182. package/dist/src/event-queue.d.ts.map +1 -1
  183. package/dist/src/event-queue.js +137 -42
  184. package/dist/src/event-queue.js.map +1 -1
  185. package/dist/src/event-spool.d.ts +61 -3
  186. package/dist/src/event-spool.d.ts.map +1 -1
  187. package/dist/src/event-spool.js +341 -44
  188. package/dist/src/event-spool.js.map +1 -1
  189. package/dist/src/generated/phigon/v1/identity_pb.d.ts +7 -0
  190. package/dist/src/generated/phigon/v1/identity_pb.d.ts.map +1 -1
  191. package/dist/src/generated/phigon/v1/identity_pb.js +1 -1
  192. package/dist/src/generated/phigon/v1/identity_pb.js.map +1 -1
  193. package/dist/src/guardian-containment.d.ts +2 -6
  194. package/dist/src/guardian-containment.d.ts.map +1 -1
  195. package/dist/src/guardian-containment.js +12 -63
  196. package/dist/src/guardian-containment.js.map +1 -1
  197. package/dist/src/guardian-decision-journal.d.ts.map +1 -1
  198. package/dist/src/guardian-decision-journal.js +4 -19
  199. package/dist/src/guardian-decision-journal.js.map +1 -1
  200. package/dist/src/guardian-managed-exec.d.ts.map +1 -1
  201. package/dist/src/guardian-managed-exec.js +6 -18
  202. package/dist/src/guardian-managed-exec.js.map +1 -1
  203. package/dist/src/guardian-model-bridge.d.ts.map +1 -1
  204. package/dist/src/guardian-model-bridge.js +2 -1
  205. package/dist/src/guardian-model-bridge.js.map +1 -1
  206. package/dist/src/guardian-native.d.ts +0 -1
  207. package/dist/src/guardian-native.d.ts.map +1 -1
  208. package/dist/src/guardian-native.js +0 -6
  209. package/dist/src/guardian-native.js.map +1 -1
  210. package/dist/src/guardian-process-monitor.d.ts +4 -0
  211. package/dist/src/guardian-process-monitor.d.ts.map +1 -1
  212. package/dist/src/guardian-process-monitor.js +82 -26
  213. package/dist/src/guardian-process-monitor.js.map +1 -1
  214. package/dist/src/health.d.ts +19 -1
  215. package/dist/src/health.d.ts.map +1 -1
  216. package/dist/src/health.js +22 -1
  217. package/dist/src/health.js.map +1 -1
  218. package/dist/src/historical-identity-store.d.ts +8 -1
  219. package/dist/src/historical-identity-store.d.ts.map +1 -1
  220. package/dist/src/historical-identity-store.js +28 -10
  221. package/dist/src/historical-identity-store.js.map +1 -1
  222. package/dist/src/index.d.ts +2 -0
  223. package/dist/src/index.d.ts.map +1 -1
  224. package/dist/src/index.js +2 -0
  225. package/dist/src/index.js.map +1 -1
  226. package/dist/src/installation.d.ts +2 -0
  227. package/dist/src/installation.d.ts.map +1 -1
  228. package/dist/src/installation.js +6 -3
  229. package/dist/src/installation.js.map +1 -1
  230. package/dist/src/instance-lock.d.ts +45 -0
  231. package/dist/src/instance-lock.d.ts.map +1 -0
  232. package/dist/src/instance-lock.js +243 -0
  233. package/dist/src/instance-lock.js.map +1 -0
  234. package/dist/src/machine-command-executor.d.ts +22 -7
  235. package/dist/src/machine-command-executor.d.ts.map +1 -1
  236. package/dist/src/machine-command-executor.js +80 -19
  237. package/dist/src/machine-command-executor.js.map +1 -1
  238. package/dist/src/node-version.d.ts +8 -0
  239. package/dist/src/node-version.d.ts.map +1 -0
  240. package/dist/src/node-version.js +17 -0
  241. package/dist/src/node-version.js.map +1 -0
  242. package/dist/src/observer-log.d.ts +50 -0
  243. package/dist/src/observer-log.d.ts.map +1 -0
  244. package/dist/src/observer-log.js +141 -0
  245. package/dist/src/observer-log.js.map +1 -0
  246. package/dist/src/pair.d.ts +68 -1
  247. package/dist/src/pair.d.ts.map +1 -1
  248. package/dist/src/pair.js +204 -65
  249. package/dist/src/pair.js.map +1 -1
  250. package/dist/src/private-directory.d.ts +10 -0
  251. package/dist/src/private-directory.d.ts.map +1 -0
  252. package/dist/src/private-directory.js +66 -0
  253. package/dist/src/private-directory.js.map +1 -0
  254. package/dist/src/process-tree.d.ts +73 -0
  255. package/dist/src/process-tree.d.ts.map +1 -0
  256. package/dist/src/process-tree.js +256 -0
  257. package/dist/src/process-tree.js.map +1 -0
  258. package/dist/src/proxy.d.ts +68 -0
  259. package/dist/src/proxy.d.ts.map +1 -0
  260. package/dist/src/proxy.js +209 -0
  261. package/dist/src/proxy.js.map +1 -0
  262. package/dist/src/purge.d.ts +17 -0
  263. package/dist/src/purge.d.ts.map +1 -0
  264. package/dist/src/purge.js +84 -0
  265. package/dist/src/purge.js.map +1 -0
  266. package/dist/src/remove-machine.d.ts +5 -1
  267. package/dist/src/remove-machine.d.ts.map +1 -1
  268. package/dist/src/remove-machine.js +28 -14
  269. package/dist/src/remove-machine.js.map +1 -1
  270. package/dist/src/server-authority.d.ts +29 -0
  271. package/dist/src/server-authority.d.ts.map +1 -0
  272. package/dist/src/server-authority.js +106 -0
  273. package/dist/src/server-authority.js.map +1 -0
  274. package/dist/src/server-clock.d.ts +32 -0
  275. package/dist/src/server-clock.d.ts.map +1 -0
  276. package/dist/src/server-clock.js +72 -0
  277. package/dist/src/server-clock.js.map +1 -0
  278. package/dist/src/service-command.d.ts +20 -0
  279. package/dist/src/service-command.d.ts.map +1 -0
  280. package/dist/src/service-command.js +136 -0
  281. package/dist/src/service-command.js.map +1 -0
  282. package/dist/src/service.d.ts +98 -0
  283. package/dist/src/service.d.ts.map +1 -0
  284. package/dist/src/service.js +472 -0
  285. package/dist/src/service.js.map +1 -0
  286. package/dist/src/stream-client.d.ts +21 -1
  287. package/dist/src/stream-client.d.ts.map +1 -1
  288. package/dist/src/stream-client.js +137 -24
  289. package/dist/src/stream-client.js.map +1 -1
  290. package/dist/src/stream-state.d.ts +2 -0
  291. package/dist/src/stream-state.d.ts.map +1 -1
  292. package/dist/src/stream-state.js +5 -2
  293. package/dist/src/stream-state.js.map +1 -1
  294. package/dist/src/system-inspection.d.ts +78 -0
  295. package/dist/src/system-inspection.d.ts.map +1 -0
  296. package/dist/src/system-inspection.js +281 -0
  297. package/dist/src/system-inspection.js.map +1 -0
  298. package/dist/src/update.d.ts.map +1 -1
  299. package/dist/src/update.js +9 -3
  300. package/dist/src/update.js.map +1 -1
  301. package/dist/src/user-notices.d.ts +64 -0
  302. package/dist/src/user-notices.d.ts.map +1 -0
  303. package/dist/src/user-notices.js +141 -0
  304. package/dist/src/user-notices.js.map +1 -0
  305. package/package.json +7 -7
  306. package/dist/src/windows-process.d.ts +0 -7
  307. package/dist/src/windows-process.d.ts.map +0 -1
  308. package/dist/src/windows-process.js +0 -18
  309. package/dist/src/windows-process.js.map +0 -1
@@ -5,12 +5,17 @@ import { create, toBinary } from "@bufbuild/protobuf";
5
5
  import { timestampDate, timestampFromDate } from "@bufbuild/protobuf/wkt";
6
6
  import { AgentActionResultSchema, AgentActionCommandSchema, RemoteActionResultState, RemoteActionType, } from "./generated/phigon/v1/action_pb.js";
7
7
  import { AgentState } from "./generated/phigon/v1/common_pb.js";
8
- import { requestWindowsGracefulStop } from "./windows-process.js";
9
- import { killVerifiedWindowsProcess } from "./guardian-native.js";
8
+ import { defaultProcessTreeControl, describeTreeOutcome } from "./process-tree.js";
10
9
  import { MachineCommandExecutor, machineActionTypes, pruneCommandReceipts } from "./machine-command-executor.js";
11
10
  import { atomicReplace } from "./atomic-replace.js";
12
- const executorVersion = "observer-agent-actions-v2";
11
+ import { noticeAgentName } from "./user-notices.js";
12
+ const executorVersion = "observer-agent-actions-v3";
13
13
  const receiptLimit = 256;
14
+ const discoveryTimeoutMs = 60_000;
15
+ // Periodic discovery runs every 10 seconds by default.
16
+ const recentInventoryMs = 60_000;
17
+ // Matches the retention of process claims and machine-command receipts.
18
+ const receiptRetentionMs = 30 * 86_400_000;
14
19
  export class AgentActionExecutor {
15
20
  #enabled;
16
21
  #machineID;
@@ -20,15 +25,49 @@ export class AgentActionExecutor {
20
25
  #commandsEnabled;
21
26
  #queue = Promise.resolve();
22
27
  #claimsDirectory;
28
+ #processes;
29
+ #notices;
30
+ #serverNow;
31
+ #latestInventory;
23
32
  constructor(options) {
24
33
  this.#enabled = options.enabled;
34
+ this.#notices = options.notices;
35
+ this.#serverNow = options.serverNow ?? Date.now;
36
+ this.#processes = options.processControl ?? defaultProcessTreeControl();
25
37
  this.#machineID = options.machineID;
26
38
  this.#inventory = options.inventory;
27
39
  this.#commandsEnabled = options.commandsEnabled ?? false;
28
40
  this.#claimsDirectory = join(options.dataDirectory, "process-operation-claims");
29
- this.#commands = new MachineCommandExecutor({ enabled: this.#commandsEnabled, machineID: options.machineID, dataDirectory: options.dataDirectory });
41
+ this.#commands = new MachineCommandExecutor({
42
+ enabled: this.#commandsEnabled, machineID: options.machineID, dataDirectory: options.dataDirectory,
43
+ agents: () => this.#runningAgents(),
44
+ serverNow: this.#serverNow,
45
+ ...(options.notices === undefined ? {} : { notices: options.notices }),
46
+ });
30
47
  this.#receipts = new ActionReceiptStore(join(options.dataDirectory, "agent-action-receipts.json"));
31
48
  }
49
+ /**
50
+ * Records the observer's periodic discovery result. inspect_system reuses a
51
+ * recent one instead of scanning again; stop and kill always rescan.
52
+ */
53
+ observeInventory(inventory) {
54
+ this.#latestInventory = { inventory, at: Date.now() };
55
+ }
56
+ async #runningAgents() {
57
+ const latest = this.#latestInventory;
58
+ const inventory = latest !== undefined && Date.now() - latest.at < recentInventoryMs ? latest.inventory : await this.#inventory();
59
+ return {
60
+ complete: !inventory.partial,
61
+ agents: inventory.agents.filter((agent) => agent.state === AgentState.RUNNING && agent.startedAt !== undefined &&
62
+ agent.processId > 0n && agent.processId <= BigInt(Number.MAX_SAFE_INTEGER) &&
63
+ agent.capabilities.includes("process-instance"))
64
+ .map((agent) => ({
65
+ name: agent.displayName || agent.runtime || "Agent",
66
+ processId: Number(agent.processId),
67
+ startedAt: timestampDate(agent.startedAt),
68
+ })),
69
+ };
70
+ }
32
71
  capabilities() {
33
72
  return [...(this.#enabled ? [RemoteActionType.STOP_AGENT, RemoteActionType.KILL_AGENT] : []), ...(this.#commandsEnabled ? machineActionTypes : [])];
34
73
  }
@@ -86,14 +125,40 @@ export class AgentActionExecutor {
86
125
  const cached = await this.#receipts.get(command.idempotencyKey, digest);
87
126
  if (cached !== null)
88
127
  return cached;
128
+ // A claim without a receipt means a signal may already have been sent.
129
+ // Report that honestly instead of an expiry or a second attempt.
130
+ const claim = await readClaim(join(this.#claimsDirectory, `${command.idempotencyKey}.claim`));
131
+ if (claim !== null) {
132
+ if (/^[0-9a-f]{64}$/u.test(claim) && claim !== digest)
133
+ throw new Error("idempotency_conflict");
134
+ return await reject("execution_interrupted", "A process signal was claimed without a completion receipt. It will not be repeated automatically.", true, RemoteActionResultState.FAILED);
135
+ }
89
136
  if (!this.#enabled)
90
137
  return await reject("executor_disabled", "Machine owner has not enabled remote agent actions.");
91
- if (!Number.isFinite(timestampDate(command.expiresAt).getTime()) || timestampDate(command.expiresAt).getTime() > Date.now() + 330_000)
138
+ if (!Number.isFinite(timestampDate(command.expiresAt).getTime()) || timestampDate(command.expiresAt).getTime() > this.#serverNow() + 330_000)
92
139
  return await reject("invalid_command", "Command expiry is outside the approved execution window.");
93
- if (timestampDate(command.expiresAt).getTime() <= Date.now()) {
140
+ if (timestampDate(command.expiresAt).getTime() <= this.#serverNow()) {
94
141
  return await reject("command_expired", "The approved command expired before local execution.", true, RemoteActionResultState.EXPIRED);
95
142
  }
96
- const inventory = await this.#inventory();
143
+ // Discovery can be slow. The approval is only valid until expiresAt, so
144
+ // the wait is bounded by it and expiry is checked again before dispatch.
145
+ const expiresAt = timestampDate(command.expiresAt).getTime();
146
+ const expired = () => reject("command_expired", "The approved command expired while the observer verified the target process. Nothing was signalled.", true, RemoteActionResultState.EXPIRED);
147
+ let inventory;
148
+ const untilExpiry = expiresAt - this.#serverNow();
149
+ try {
150
+ inventory = await withDeadline(this.#inventory(), Math.min(untilExpiry, discoveryTimeoutMs));
151
+ }
152
+ catch (error) {
153
+ // A timer can fire a millisecond before the clock reaches expiresAt, so
154
+ // a deadline set by the expiry counts as expiry even when the clock lags.
155
+ const expiryDeadline = untilExpiry <= discoveryTimeoutMs && error instanceof Error && error.message === "deadline_exceeded";
156
+ if (expiryDeadline || this.#serverNow() >= expiresAt)
157
+ return await expired();
158
+ return await reject("target_unverified", "The observer could not list running agents, so the target could not be verified. Nothing was signalled.", true, RemoteActionResultState.FAILED);
159
+ }
160
+ if (this.#serverNow() >= expiresAt)
161
+ return await expired();
97
162
  const target = inventory.agents.find((agent) => agent.agentId === command.agentId &&
98
163
  agent.processId === command.processId &&
99
164
  agent.state === AgentState.RUNNING &&
@@ -107,9 +172,6 @@ export class AgentActionExecutor {
107
172
  if (pid === process.pid) {
108
173
  return await reject("self_target_rejected", "Observer refuses to terminate its own process.");
109
174
  }
110
- if (!processAlive(pid)) {
111
- return await reject("target_already_stopped", "The target process is no longer running.", false);
112
- }
113
175
  await mkdir(this.#claimsDirectory, { recursive: true, mode: 0o700 });
114
176
  // Exclusive creation also prevents two observer processes from claiming
115
177
  // the same signal. A leftover claim must never trigger another signal.
@@ -119,61 +181,44 @@ export class AgentActionExecutor {
119
181
  detail: "A process signal was claimed without a completion receipt. It will not be repeated automatically.",
120
182
  observedAt: timestampFromDate(new Date()), targetStillRunning: true,
121
183
  }), digest, timestampDate(command.expiresAt).toISOString());
122
- try {
123
- if (command.action === RemoteActionType.STOP_AGENT &&
124
- process.platform === "win32") {
125
- await requestWindowsGracefulStop(pid, timestampDate(command.expectedStartedAt).toISOString());
126
- }
127
- else if (process.platform === "win32") {
128
- await killVerifiedWindowsProcess(pid, timestampDate(command.expectedStartedAt).toISOString());
129
- }
130
- else {
131
- process.kill(pid, command.action === RemoteActionType.STOP_AGENT ? "SIGTERM" : "SIGKILL");
132
- }
133
- }
134
- catch (error) {
135
- return await reject("os_dispatch_failed", safeErrorDetail(error), processAlive(pid), RemoteActionResultState.FAILED);
136
- }
137
- const stopped = await waitForExit(pid, command.action === RemoteActionType.STOP_AGENT ? 5_000 : 2_000);
184
+ // The controller re-verifies the exact lifetime immediately before any
185
+ // signal and includes only verified descendants of that lifetime.
186
+ const outcome = await this.#processes.stop({ processId: pid, startedAt: timestampDate(command.expectedStartedAt) }, command.action === RemoteActionType.STOP_AGENT ? "stop" : "kill").catch(() => ({ outcome: "failed", code: "unknown" }));
187
+ const [state, resultCode, detail, targetStillRunning] = describeOutcome(outcome, command.action === RemoteActionType.STOP_AGENT);
138
188
  const receipt = create(AgentActionResultSchema, {
139
- ...base,
140
- state: stopped
141
- ? RemoteActionResultState.SUCCEEDED
142
- : RemoteActionResultState.FAILED,
143
- resultCode: stopped ? "process_stopped" : "process_still_running",
144
- detail: stopped
145
- ? "The exact observed process lifetime exited after the approved signal."
146
- : "The approved stop request was sent without escalation, but the target still reports running.",
147
- observedAt: timestampFromDate(new Date()),
148
- targetStillRunning: !stopped,
189
+ ...base, state, resultCode, detail, targetStillRunning, observedAt: timestampFromDate(new Date()),
149
190
  });
150
191
  await this.#receipts.put(receipt, digest, timestampDate(command.expiresAt).toISOString());
192
+ if (state === RemoteActionResultState.SUCCEEDED) {
193
+ this.#notices?.agentStopped({
194
+ key: command.actionId, agent: noticeAgentName(target.displayName),
195
+ forced: command.action === RemoteActionType.KILL_AGENT, reason: command.reason,
196
+ });
197
+ }
151
198
  return receipt;
152
199
  }
153
200
  }
154
- function processAlive(pid) {
201
+ /** Maps a process-tree outcome to the wire receipt fields. */
202
+ export function describeOutcome(outcome, graceful) {
203
+ const receipt = describeTreeOutcome(outcome, graceful);
204
+ const state = { succeeded: RemoteActionResultState.SUCCEEDED, failed: RemoteActionResultState.FAILED, rejected: RemoteActionResultState.REJECTED }[receipt.state];
205
+ return [state, receipt.code, receipt.detail, receipt.targetStillRunning];
206
+ }
207
+ async function readClaim(path) {
155
208
  try {
156
- process.kill(pid, 0);
157
- return true;
209
+ return (await readFile(path, "utf8")).trim();
158
210
  }
159
211
  catch (error) {
160
- return error.code === "EPERM";
161
- }
162
- }
163
- async function waitForExit(pid, timeoutMs) {
164
- const deadline = Date.now() + timeoutMs;
165
- while (Date.now() < deadline) {
166
- if (!processAlive(pid))
167
- return true;
168
- await new Promise((resolve) => setTimeout(resolve, 100));
212
+ if (error.code === "ENOENT")
213
+ return null;
214
+ throw error;
169
215
  }
170
- return !processAlive(pid);
171
216
  }
172
- function safeErrorDetail(error) {
173
- const code = error instanceof Error && "code" in error
174
- ? String(error.code ?? "unknown")
175
- : "unknown";
176
- return `Operating system rejected the approved process signal (${code.slice(0, 32)}).`;
217
+ function withDeadline(work, milliseconds) {
218
+ return new Promise((resolve, reject) => {
219
+ const timer = setTimeout(() => reject(new Error("deadline_exceeded")), Math.max(0, milliseconds));
220
+ work.then((value) => { clearTimeout(timer); resolve(value); }, (error) => { clearTimeout(timer); reject(error instanceof Error ? error : new Error("discovery_failed")); });
221
+ });
177
222
  }
178
223
  function validUUID(value) {
179
224
  return /^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/iu.test(value);
@@ -199,11 +244,18 @@ class ActionReceiptStore {
199
244
  const observedAt = receipt.observedAt === undefined
200
245
  ? new Date().toISOString()
201
246
  : timestampDate(receipt.observedAt).toISOString();
247
+ // Receipts outlive their command: a replay after a long disconnect must
248
+ // return what happened, not a false "expired". Expired receipts make
249
+ // room first; the durable claim still blocks a second signal.
250
+ const now = Date.now();
202
251
  const receipts = (await this.#load())
203
- .filter((entry) => entry.idempotencyKey !== receipt.idempotencyKey &&
204
- (entry.expiresAt ? Date.parse(entry.expiresAt) : Date.parse(entry.observedAt) + 600_000) > Date.now());
205
- if (receipts.length >= receiptLimit)
206
- throw new Error("Execution journal capacity reached");
252
+ .filter((entry) => entry.idempotencyKey !== receipt.idempotencyKey && receiptExpiry(entry) + receiptRetentionMs > now);
253
+ while (receipts.length >= receiptLimit) {
254
+ const oldestExpired = receipts.findIndex((entry) => receiptExpiry(entry) <= now);
255
+ if (oldestExpired < 0)
256
+ throw new Error("Execution journal capacity reached");
257
+ receipts.splice(oldestExpired, 1);
258
+ }
207
259
  receipts.push({
208
260
  commandDigest, ...(expiresAt ? { expiresAt } : {}),
209
261
  actionId: receipt.actionId,
@@ -235,6 +287,9 @@ class ActionReceiptStore {
235
287
  }
236
288
  }
237
289
  }
290
+ function receiptExpiry(entry) {
291
+ return entry.expiresAt ? Date.parse(entry.expiresAt) : Date.parse(entry.observedAt) + 600_000;
292
+ }
238
293
  function validStoredReceipt(value) {
239
294
  if (value === null || typeof value !== "object" || Array.isArray(value))
240
295
  return false;
@@ -1 +1 @@
1
- {"version":3,"file":"agent-action-executor.js","sourceRoot":"","sources":["../../src/agent-action-executor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-action-executor.js","sourceRoot":"","sources":["../../src/agent-action-executor.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"agentic-guardian.d.ts","sourceRoot":"","sources":["../../src/agentic-guardian.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAI/D,MAAM,MAAM,qBAAqB,GAAG,QAAQ,CAAC;IAC3C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC,CAAC;AAEH,MAAM,MAAM,sBAAsB,GAAG,QAAQ,CAAC;IAC5C,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,qBAAqB,CAAC;CAChC,CAAC,CAAC;AAEH,MAAM,MAAM,wBAAwB,GAAG,QAAQ,CAAC;IAC9C,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,kBAAkB,CAAC;IAChD,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;IAC7C,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,GAAG,oBAAoB,CAAC;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,UAAU,GAAG,SAAS,CAAC;IAC7E,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC,CAAC;AAEH,qBAAa,gCAAiC,SAAQ,KAAK;CAAG;AAE9D,qBAAa,0BAA0B;;gBAMzB,OAAO,EAAE,QAAQ,CAAC;QAC5B,eAAe,EAAE,GAAG,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;KACxB,CAAC;IAOI,MAAM,CACV,QAAQ,EAAE,sBAAsB,EAChC,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,wBAAwB,CAAC;CA+DrC;AAED,wBAAsB,yBAAyB,CAC7C,IAAI,EAAE,MAAM,GAAG,SAAS,GACvB,OAAO,CAAC,qBAAqB,CAAC,CAuChC;AAgBD,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,OAAO,EACd,iBAAiB,EAAE,MAAM,GACxB,wBAAwB,CAwH1B"}
1
+ {"version":3,"file":"agentic-guardian.d.ts","sourceRoot":"","sources":["../../src/agentic-guardian.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAI/D,MAAM,MAAM,qBAAqB,GAAG,QAAQ,CAAC;IAC3C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC,CAAC;AAEH,MAAM,MAAM,sBAAsB,GAAG,QAAQ,CAAC;IAC5C,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,qBAAqB,CAAC;CAChC,CAAC,CAAC;AAEH,MAAM,MAAM,wBAAwB,GAAG,QAAQ,CAAC;IAC9C,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,kBAAkB,CAAC;IAChD,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;IAC7C,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,GAAG,oBAAoB,CAAC;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,UAAU,GAAG,SAAS,CAAC;IAC7E,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC,CAAC;AAEH,qBAAa,gCAAiC,SAAQ,KAAK;CAAG;AAE9D,qBAAa,0BAA0B;;gBAMzB,OAAO,EAAE,QAAQ,CAAC;QAC5B,eAAe,EAAE,GAAG,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;KACxB,CAAC;IAOI,MAAM,CACV,QAAQ,EAAE,sBAAsB,EAChC,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,wBAAwB,CAAC;CA+DrC;AAED,wBAAsB,yBAAyB,CAC7C,IAAI,EAAE,MAAM,GAAG,SAAS,GACvB,OAAO,CAAC,qBAAqB,CAAC,CAuChC;AAiBD,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,OAAO,EACd,iBAAiB,EAAE,MAAM,GACxB,wBAAwB,CAwH1B"}
@@ -1,4 +1,5 @@
1
1
  import { readFile } from "node:fs/promises";
2
+ import { redactSecrets } from "./content-redaction.js";
2
3
  const maxResponseBytes = 64 << 10;
3
4
  export class GuardianDecisionUnavailableError extends Error {
4
5
  }
@@ -103,9 +104,9 @@ export async function readGuardianActionContext(path) {
103
104
  throw new Error("Guardian context file contains an unsupported field.");
104
105
  }
105
106
  return Object.freeze({
106
- ...optionalContext(record, "task_id", "taskId", 128),
107
- ...optionalContext(record, "proposal_id", "proposalId", 128),
108
- ...optionalContext(record, "plan_step_id", "planStepId", 128),
107
+ ...optionalContext(record, "task_id", "taskId", 128, false),
108
+ ...optionalContext(record, "proposal_id", "proposalId", 128, false),
109
+ ...optionalContext(record, "plan_step_id", "planStepId", 128, false),
109
110
  ...optionalContext(record, "user_prompt", "userPrompt", 2_000),
110
111
  ...optionalContext(record, "agent_plan", "agentPlan", 2_000),
111
112
  ...optionalContext(record, "justification", "justification", 1_000),
@@ -113,14 +114,14 @@ export async function readGuardianActionContext(path) {
113
114
  ...optionalContext(record, "recent_activity", "recentActivity", 2_000),
114
115
  });
115
116
  }
116
- function optionalContext(record, source, target, maximum) {
117
+ function optionalContext(record, source, target, maximum, redact = true) {
117
118
  const value = record[source];
118
119
  if (value === undefined || value === "")
119
120
  return {};
120
121
  if (typeof value !== "string" || value.length > maximum || /[\u0000]/u.test(value)) {
121
122
  throw new Error(`Guardian context ${source} is invalid.`);
122
123
  }
123
- return { [target]: value };
124
+ return { [target]: redact ? redactSecrets(value) : value };
124
125
  }
125
126
  export function semanticDecision(value, observedLatencyMs) {
126
127
  if (value === null || typeof value !== "object" || Array.isArray(value)) {
@@ -1 +1 @@
1
- {"version":3,"file":"agentic-guardian.js","sourceRoot":"","sources":["../../src/agentic-guardian.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agentic-guardian.js","sourceRoot":"","sources":["../../src/agentic-guardian.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,11 @@
1
+ import { renameSync } from "node:fs";
1
2
  import { rename } from "node:fs/promises";
2
3
  /** Preserve both files while Windows readers or scanners briefly hold a lock. */
3
4
  export declare function atomicReplace(temporary: string, destination: string, replace?: typeof rename): Promise<void>;
5
+ /**
6
+ * The same for synchronous writers such as the telemetry spool. The wait
7
+ * blocks, like the synchronous write around it, and only after Windows
8
+ * refused the rename: at most about 0.6 seconds in all.
9
+ */
10
+ export declare function atomicReplaceSync(temporary: string, destination: string, replace?: typeof renameSync): void;
4
11
  //# sourceMappingURL=atomic-replace.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"atomic-replace.d.ts","sourceRoot":"","sources":["../../src/atomic-replace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAG1C,iFAAiF;AACjF,wBAAsB,aAAa,CACjC,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,OAAO,MAAe,GAC9B,OAAO,CAAC,IAAI,CAAC,CAWf"}
1
+ {"version":3,"file":"atomic-replace.d.ts","sourceRoot":"","sources":["../../src/atomic-replace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAG1C,iFAAiF;AACjF,wBAAsB,aAAa,CACjC,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,OAAO,MAAe,GAC9B,OAAO,CAAC,IAAI,CAAC,CAUf;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,OAAO,UAAuB,GACtC,IAAI,CAUN"}
@@ -1,3 +1,4 @@
1
+ import { renameSync } from "node:fs";
1
2
  import { rename } from "node:fs/promises";
2
3
  import { setTimeout as delay } from "node:timers/promises";
3
4
  /** Preserve both files while Windows readers or scanners briefly hold a lock. */
@@ -8,11 +9,35 @@ export async function atomicReplace(temporary, destination, replace = rename) {
8
9
  return;
9
10
  }
10
11
  catch (error) {
11
- const code = error.code;
12
- if (process.platform !== "win32" || attempt >= 5 || !["EPERM", "EACCES", "EBUSY"].includes(code ?? ""))
12
+ if (!retryable(error, attempt))
13
13
  throw error;
14
- await delay(20 * 2 ** attempt);
14
+ await delay(retryDelayMs(attempt));
15
15
  }
16
16
  }
17
17
  }
18
+ /**
19
+ * The same for synchronous writers such as the telemetry spool. The wait
20
+ * blocks, like the synchronous write around it, and only after Windows
21
+ * refused the rename: at most about 0.6 seconds in all.
22
+ */
23
+ export function atomicReplaceSync(temporary, destination, replace = renameSync) {
24
+ for (let attempt = 0;; attempt++) {
25
+ try {
26
+ replace(temporary, destination);
27
+ return;
28
+ }
29
+ catch (error) {
30
+ if (!retryable(error, attempt))
31
+ throw error;
32
+ Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, retryDelayMs(attempt));
33
+ }
34
+ }
35
+ }
36
+ function retryable(error, attempt) {
37
+ const code = error?.code;
38
+ return process.platform === "win32" && attempt < 5 && ["EPERM", "EACCES", "EBUSY"].includes(code ?? "");
39
+ }
40
+ function retryDelayMs(attempt) {
41
+ return 20 * 2 ** attempt;
42
+ }
18
43
  //# sourceMappingURL=atomic-replace.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"atomic-replace.js","sourceRoot":"","sources":["../../src/atomic-replace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,UAAU,IAAI,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAE3D,iFAAiF;AACjF,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,SAAiB,EACjB,WAAmB,EACnB,UAAyB,MAAM;IAE/B,KAAK,IAAI,OAAO,GAAG,CAAC,GAAI,OAAO,EAAE,EAAE,CAAC;QAClC,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;YACtC,OAAO;QACT,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,GAAI,KAA+B,CAAC,IAAI,CAAC;YACnD,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC;gBAAE,MAAM,KAAK,CAAC;YACpH,MAAM,KAAK,CAAC,EAAE,GAAG,CAAC,IAAI,OAAO,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"atomic-replace.js","sourceRoot":"","sources":["../../src/atomic-replace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,UAAU,IAAI,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAE3D,iFAAiF;AACjF,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,SAAiB,EACjB,WAAmB,EACnB,UAAyB,MAAM;IAE/B,KAAK,IAAI,OAAO,GAAG,CAAC,GAAI,OAAO,EAAE,EAAE,CAAC;QAClC,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;YACtC,OAAO;QACT,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC;gBAAE,MAAM,KAAK,CAAC;YAC5C,MAAM,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAC/B,SAAiB,EACjB,WAAmB,EACnB,UAA6B,UAAU;IAEvC,KAAK,IAAI,OAAO,GAAG,CAAC,GAAI,OAAO,EAAE,EAAE,CAAC;QAClC,IAAI,CAAC;YACH,OAAO,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;YAChC,OAAO;QACT,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC;gBAAE,MAAM,KAAK,CAAC;YAC5C,OAAO,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,IAAI,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;QACtF,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,KAAc,EAAE,OAAe;IAChD,MAAM,IAAI,GAAI,KAA2C,EAAE,IAAI,CAAC;IAChE,OAAO,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;AAC1G,CAAC;AAED,SAAS,YAAY,CAAC,OAAe;IACnC,OAAO,EAAE,GAAG,CAAC,IAAI,OAAO,CAAC;AAC3B,CAAC"}
@@ -0,0 +1,32 @@
1
+ /** Journals the observer writes into the generic activity bridge. */
2
+ export declare const guardianDecisionJournal = "guardian-decisions";
3
+ export declare const managedCommandJournal = "guardian-managed-commands";
4
+ type JournalName = typeof guardianDecisionJournal | typeof managedCommandJournal;
5
+ /**
6
+ * An append-only JSONL journal in a bridge directory, read by the activity
7
+ * collector like any other bridge file. It is written in segments: a full
8
+ * segment is left as it is and later records go to a new file. A file is
9
+ * never renamed or truncated, because the collector's read position belongs
10
+ * to a path: the first segment keeps the journal's plain name, later ones
11
+ * add the time they were started. The collector deletes a closed segment
12
+ * once its records are delivered. If nothing reads the journal, the oldest
13
+ * closed segments are deleted here to keep it near 10 MiB.
14
+ */
15
+ export declare class SegmentedJournal {
16
+ #private;
17
+ constructor(dataDirectory: string, journal: JournalName, limits?: Readonly<{
18
+ segmentBytes?: number;
19
+ maxBytes?: number;
20
+ }>);
21
+ /** Appends one record, `encoded` without its newline. */
22
+ append(encoded: string, options?: Readonly<{
23
+ sync?: boolean;
24
+ }>): Promise<void>;
25
+ }
26
+ /**
27
+ * The journal segments among `names` that no longer receive records: every
28
+ * segment but the newest of its journal.
29
+ */
30
+ export declare function closedJournalSegments(names: readonly string[]): readonly string[];
31
+ export {};
32
+ //# sourceMappingURL=bridge-journal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bridge-journal.d.ts","sourceRoot":"","sources":["../../src/bridge-journal.ts"],"names":[],"mappings":"AAIA,qEAAqE;AACrE,eAAO,MAAM,uBAAuB,uBAAuB,CAAC;AAC5D,eAAO,MAAM,qBAAqB,8BAA8B,CAAC;AACjE,KAAK,WAAW,GAAG,OAAO,uBAAuB,GAAG,OAAO,qBAAqB,CAAC;AASjF;;;;;;;;;GASG;AACH,qBAAa,gBAAgB;;gBAOzB,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,WAAW,EACpB,MAAM,GAAE,QAAQ,CAAC;QAAE,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAM;IAQrE,yDAAyD;IACnD,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,QAAQ,CAAC;QAAE,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,CAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAqCzF;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,MAAM,EAAE,CAOjF"}
@@ -0,0 +1,113 @@
1
+ import { makeDirectoryPrivate } from "./private-directory.js";
2
+ import { chmod, mkdir, open, readdir, stat, unlink } from "node:fs/promises";
3
+ import { join } from "node:path";
4
+ /** Journals the observer writes into the generic activity bridge. */
5
+ export const guardianDecisionJournal = "guardian-decisions";
6
+ export const managedCommandJournal = "guardian-managed-commands";
7
+ // A journal starts a new file past this size, and keeps about this much in
8
+ // all when nothing reads it.
9
+ const segmentBytes = 4 << 20;
10
+ const maxJournalBytes = 10 << 20;
11
+ /**
12
+ * An append-only JSONL journal in a bridge directory, read by the activity
13
+ * collector like any other bridge file. It is written in segments: a full
14
+ * segment is left as it is and later records go to a new file. A file is
15
+ * never renamed or truncated, because the collector's read position belongs
16
+ * to a path: the first segment keeps the journal's plain name, later ones
17
+ * add the time they were started. The collector deletes a closed segment
18
+ * once its records are delivered. If nothing reads the journal, the oldest
19
+ * closed segments are deleted here to keep it near 10 MiB.
20
+ */
21
+ export class SegmentedJournal {
22
+ #dataDirectory;
23
+ #journal;
24
+ #segmentBytes;
25
+ #maxBytes;
26
+ constructor(dataDirectory, journal, limits = {}) {
27
+ this.#dataDirectory = dataDirectory;
28
+ this.#journal = journal;
29
+ this.#segmentBytes = limits.segmentBytes ?? segmentBytes;
30
+ this.#maxBytes = limits.maxBytes ?? maxJournalBytes;
31
+ }
32
+ /** Appends one record, `encoded` without its newline. */
33
+ async append(encoded, options = {}) {
34
+ const bridges = join(this.#dataDirectory, "bridges");
35
+ const directory = join(bridges, "generic");
36
+ await mkdir(directory, { recursive: true, mode: 0o700 });
37
+ await makeDirectoryPrivate(this.#dataDirectory);
38
+ await chmod(bridges, 0o700);
39
+ await chmod(directory, 0o700);
40
+ const line = `${encoded}\n`;
41
+ const path = join(directory, await this.#segmentFor(directory, Buffer.byteLength(line)));
42
+ const handle = await open(path, "a", 0o600);
43
+ try {
44
+ await handle.write(line);
45
+ if (options.sync === true)
46
+ await handle.sync();
47
+ }
48
+ finally {
49
+ await handle.close();
50
+ }
51
+ await chmod(path, 0o600);
52
+ }
53
+ /** The segment that takes the next `bytes`, started when the last is full. */
54
+ async #segmentFor(directory, bytes) {
55
+ const segments = journalSegments(await readdir(directory))
56
+ .filter((segment) => segment.journal === this.#journal);
57
+ const current = segments.at(-1);
58
+ if (current === undefined)
59
+ return `${this.#journal}.jsonl`;
60
+ const size = await sizeOf(join(directory, current.name));
61
+ if (size === 0 || size + bytes <= this.#segmentBytes)
62
+ return current.name;
63
+ // Keep the newest closed segments within the bound, leaving room for
64
+ // the new one; anything older was not read in time.
65
+ let kept = 0;
66
+ for (const segment of [...segments].reverse()) {
67
+ kept += await sizeOf(join(directory, segment.name));
68
+ if (kept + this.#segmentBytes <= this.#maxBytes || segment === current)
69
+ continue;
70
+ await unlink(join(directory, segment.name)).catch(() => undefined);
71
+ }
72
+ return `${this.#journal}-${Math.max(Date.now(), current.ordinal + 1)}.jsonl`;
73
+ }
74
+ }
75
+ /**
76
+ * The journal segments among `names` that no longer receive records: every
77
+ * segment but the newest of its journal.
78
+ */
79
+ export function closedJournalSegments(names) {
80
+ const segments = journalSegments(names);
81
+ const newest = new Map();
82
+ for (const segment of segments)
83
+ newest.set(segment.journal, segment.name);
84
+ return segments
85
+ .filter((segment) => newest.get(segment.journal) !== segment.name)
86
+ .map((segment) => segment.name);
87
+ }
88
+ /** The journal segments among `names`, oldest first within each journal. */
89
+ function journalSegments(names) {
90
+ const segments = [];
91
+ for (const name of names) {
92
+ const match = /^(guardian-decisions|guardian-managed-commands)(?:-(\d{1,16}))?\.jsonl$/u.exec(name);
93
+ if (match === null)
94
+ continue;
95
+ segments.push({
96
+ name,
97
+ journal: match[1],
98
+ ordinal: match[2] === undefined ? 0 : Number(match[2]),
99
+ });
100
+ }
101
+ return segments.sort((left, right) => left.ordinal - right.ordinal);
102
+ }
103
+ async function sizeOf(path) {
104
+ try {
105
+ return (await stat(path)).size;
106
+ }
107
+ catch (error) {
108
+ if (error instanceof Error && "code" in error && error.code === "ENOENT")
109
+ return 0;
110
+ throw error;
111
+ }
112
+ }
113
+ //# sourceMappingURL=bridge-journal.js.map