@cluesmith/codev 3.3.5 → 3.3.6

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 (231) hide show
  1. package/dashboard-dist/assets/{index-r3bZzLmX.css → index-BjcqV9Vv.css} +1 -1
  2. package/dashboard-dist/assets/{index-BuflRUi6.js → index-b7GnZV2i.js} +55 -55
  3. package/dashboard-dist/assets/index-b7GnZV2i.js.map +1 -0
  4. package/dashboard-dist/index.html +2 -2
  5. package/dist/agent-farm/cli.d.ts.map +1 -1
  6. package/dist/agent-farm/cli.js +50 -17
  7. package/dist/agent-farm/cli.js.map +1 -1
  8. package/dist/agent-farm/commands/architect.d.ts.map +1 -1
  9. package/dist/agent-farm/commands/architect.js +5 -1
  10. package/dist/agent-farm/commands/architect.js.map +1 -1
  11. package/dist/agent-farm/commands/attach.d.ts +1 -1
  12. package/dist/agent-farm/commands/attach.d.ts.map +1 -1
  13. package/dist/agent-farm/commands/cleanup.d.ts +1 -1
  14. package/dist/agent-farm/commands/cleanup.d.ts.map +1 -1
  15. package/dist/agent-farm/commands/cleanup.js +2 -1
  16. package/dist/agent-farm/commands/cleanup.js.map +1 -1
  17. package/dist/agent-farm/commands/decisions.d.ts +25 -0
  18. package/dist/agent-farm/commands/decisions.d.ts.map +1 -0
  19. package/dist/agent-farm/commands/decisions.js +54 -0
  20. package/dist/agent-farm/commands/decisions.js.map +1 -0
  21. package/dist/agent-farm/commands/ide.d.ts +32 -3
  22. package/dist/agent-farm/commands/ide.d.ts.map +1 -1
  23. package/dist/agent-farm/commands/ide.js +180 -19
  24. package/dist/agent-farm/commands/ide.js.map +1 -1
  25. package/dist/agent-farm/commands/reset/context.d.ts +4 -2
  26. package/dist/agent-farm/commands/reset/context.d.ts.map +1 -1
  27. package/dist/agent-farm/commands/reset/context.js +12 -4
  28. package/dist/agent-farm/commands/reset/context.js.map +1 -1
  29. package/dist/agent-farm/commands/send.d.ts.map +1 -1
  30. package/dist/agent-farm/commands/send.js +13 -18
  31. package/dist/agent-farm/commands/send.js.map +1 -1
  32. package/dist/agent-farm/commands/spawn-worktree.d.ts +7 -0
  33. package/dist/agent-farm/commands/spawn-worktree.d.ts.map +1 -1
  34. package/dist/agent-farm/commands/spawn-worktree.js +51 -18
  35. package/dist/agent-farm/commands/spawn-worktree.js.map +1 -1
  36. package/dist/agent-farm/commands/spawn.d.ts +17 -0
  37. package/dist/agent-farm/commands/spawn.d.ts.map +1 -1
  38. package/dist/agent-farm/commands/spawn.js +41 -19
  39. package/dist/agent-farm/commands/spawn.js.map +1 -1
  40. package/dist/agent-farm/lib/builder-lookup.d.ts +3 -2
  41. package/dist/agent-farm/lib/builder-lookup.d.ts.map +1 -1
  42. package/dist/agent-farm/lib/builder-lookup.js +24 -9
  43. package/dist/agent-farm/lib/builder-lookup.js.map +1 -1
  44. package/dist/agent-farm/lib/ide-extensions.d.ts +82 -0
  45. package/dist/agent-farm/lib/ide-extensions.d.ts.map +1 -0
  46. package/dist/agent-farm/lib/ide-extensions.js +179 -0
  47. package/dist/agent-farm/lib/ide-extensions.js.map +1 -0
  48. package/dist/agent-farm/lib/ide-record.d.ts +6 -1
  49. package/dist/agent-farm/lib/ide-record.d.ts.map +1 -1
  50. package/dist/agent-farm/lib/ide-record.js +8 -1
  51. package/dist/agent-farm/lib/ide-record.js.map +1 -1
  52. package/dist/agent-farm/lib/ide-version.d.ts +97 -0
  53. package/dist/agent-farm/lib/ide-version.d.ts.map +1 -0
  54. package/dist/agent-farm/lib/ide-version.js +224 -0
  55. package/dist/agent-farm/lib/ide-version.js.map +1 -0
  56. package/dist/agent-farm/lib/tunnel-client.d.ts.map +1 -1
  57. package/dist/agent-farm/lib/tunnel-client.js +7 -3
  58. package/dist/agent-farm/lib/tunnel-client.js.map +1 -1
  59. package/dist/agent-farm/servers/agent-state/broadcast.d.ts +19 -0
  60. package/dist/agent-farm/servers/agent-state/broadcast.d.ts.map +1 -0
  61. package/dist/agent-farm/servers/agent-state/broadcast.js +30 -0
  62. package/dist/agent-farm/servers/agent-state/broadcast.js.map +1 -0
  63. package/dist/agent-farm/servers/agent-state/identity.d.ts +50 -0
  64. package/dist/agent-farm/servers/agent-state/identity.d.ts.map +1 -0
  65. package/dist/agent-farm/servers/agent-state/identity.js +120 -0
  66. package/dist/agent-farm/servers/agent-state/identity.js.map +1 -0
  67. package/dist/agent-farm/servers/agent-state/liveness.d.ts +107 -0
  68. package/dist/agent-farm/servers/agent-state/liveness.d.ts.map +1 -0
  69. package/dist/agent-farm/servers/agent-state/liveness.js +224 -0
  70. package/dist/agent-farm/servers/agent-state/liveness.js.map +1 -0
  71. package/dist/agent-farm/servers/agent-state/route.d.ts +38 -0
  72. package/dist/agent-farm/servers/agent-state/route.d.ts.map +1 -0
  73. package/dist/agent-farm/servers/agent-state/route.js +170 -0
  74. package/dist/agent-farm/servers/agent-state/route.js.map +1 -0
  75. package/dist/agent-farm/servers/agent-state/serve.d.ts +31 -0
  76. package/dist/agent-farm/servers/agent-state/serve.d.ts.map +1 -0
  77. package/dist/agent-farm/servers/agent-state/serve.js +49 -0
  78. package/dist/agent-farm/servers/agent-state/serve.js.map +1 -0
  79. package/dist/agent-farm/servers/agent-state/store.d.ts +76 -0
  80. package/dist/agent-farm/servers/agent-state/store.d.ts.map +1 -0
  81. package/dist/agent-farm/servers/agent-state/store.js +157 -0
  82. package/dist/agent-farm/servers/agent-state/store.js.map +1 -0
  83. package/dist/agent-farm/servers/decisions/parse.d.ts.map +1 -1
  84. package/dist/agent-farm/servers/decisions/parse.js +45 -15
  85. package/dist/agent-farm/servers/decisions/parse.js.map +1 -1
  86. package/dist/agent-farm/servers/decisions/stamp.d.ts +6 -2
  87. package/dist/agent-farm/servers/decisions/stamp.d.ts.map +1 -1
  88. package/dist/agent-farm/servers/decisions/stamp.js +53 -29
  89. package/dist/agent-farm/servers/decisions/stamp.js.map +1 -1
  90. package/dist/agent-farm/servers/decisions/template.d.ts +2 -0
  91. package/dist/agent-farm/servers/decisions/template.d.ts.map +1 -0
  92. package/dist/agent-farm/servers/decisions/template.js +15 -0
  93. package/dist/agent-farm/servers/decisions/template.js.map +1 -0
  94. package/dist/agent-farm/servers/ide-server.d.ts +28 -8
  95. package/dist/agent-farm/servers/ide-server.d.ts.map +1 -1
  96. package/dist/agent-farm/servers/ide-server.js +147 -50
  97. package/dist/agent-farm/servers/ide-server.js.map +1 -1
  98. package/dist/agent-farm/servers/overview.d.ts +27 -1
  99. package/dist/agent-farm/servers/overview.d.ts.map +1 -1
  100. package/dist/agent-farm/servers/overview.js +184 -31
  101. package/dist/agent-farm/servers/overview.js.map +1 -1
  102. package/dist/agent-farm/servers/tower-instances.d.ts +14 -1
  103. package/dist/agent-farm/servers/tower-instances.d.ts.map +1 -1
  104. package/dist/agent-farm/servers/tower-instances.js +51 -9
  105. package/dist/agent-farm/servers/tower-instances.js.map +1 -1
  106. package/dist/agent-farm/servers/tower-routes.d.ts.map +1 -1
  107. package/dist/agent-farm/servers/tower-routes.js +50 -9
  108. package/dist/agent-farm/servers/tower-routes.js.map +1 -1
  109. package/dist/agent-farm/servers/tower-server.js +35 -1
  110. package/dist/agent-farm/servers/tower-server.js.map +1 -1
  111. package/dist/agent-farm/servers/tower-terminals.d.ts +25 -0
  112. package/dist/agent-farm/servers/tower-terminals.d.ts.map +1 -1
  113. package/dist/agent-farm/servers/tower-terminals.js +128 -4
  114. package/dist/agent-farm/servers/tower-terminals.js.map +1 -1
  115. package/dist/agent-farm/servers/tower-utils.d.ts.map +1 -1
  116. package/dist/agent-farm/servers/tower-utils.js +18 -5
  117. package/dist/agent-farm/servers/tower-utils.js.map +1 -1
  118. package/dist/agent-farm/utils/builder-worktree-identity.d.ts +39 -0
  119. package/dist/agent-farm/utils/builder-worktree-identity.d.ts.map +1 -0
  120. package/dist/agent-farm/utils/builder-worktree-identity.js +42 -0
  121. package/dist/agent-farm/utils/builder-worktree-identity.js.map +1 -0
  122. package/dist/agent-farm/utils/harness.d.ts +71 -0
  123. package/dist/agent-farm/utils/harness.d.ts.map +1 -1
  124. package/dist/agent-farm/utils/harness.js +153 -0
  125. package/dist/agent-farm/utils/harness.js.map +1 -1
  126. package/dist/agent-farm/utils/lifecycle-reporter.d.ts +79 -0
  127. package/dist/agent-farm/utils/lifecycle-reporter.d.ts.map +1 -0
  128. package/dist/agent-farm/utils/lifecycle-reporter.js +347 -0
  129. package/dist/agent-farm/utils/lifecycle-reporter.js.map +1 -0
  130. package/dist/cli.d.ts.map +1 -1
  131. package/dist/cli.js +17 -0
  132. package/dist/cli.js.map +1 -1
  133. package/dist/commands/adopt.d.ts +16 -2
  134. package/dist/commands/adopt.d.ts.map +1 -1
  135. package/dist/commands/adopt.js +67 -23
  136. package/dist/commands/adopt.js.map +1 -1
  137. package/dist/commands/bootstrap-docs.d.ts +132 -0
  138. package/dist/commands/bootstrap-docs.d.ts.map +1 -0
  139. package/dist/commands/bootstrap-docs.js +725 -0
  140. package/dist/commands/bootstrap-docs.js.map +1 -0
  141. package/dist/commands/consult/index.d.ts.map +1 -1
  142. package/dist/commands/consult/index.js +14 -1
  143. package/dist/commands/consult/index.js.map +1 -1
  144. package/dist/commands/consult/tree-tripwire.d.ts +2 -75
  145. package/dist/commands/consult/tree-tripwire.d.ts.map +1 -1
  146. package/dist/commands/consult/tree-tripwire.js +7 -184
  147. package/dist/commands/consult/tree-tripwire.js.map +1 -1
  148. package/dist/commands/doctor.d.ts.map +1 -1
  149. package/dist/commands/doctor.js +36 -4
  150. package/dist/commands/doctor.js.map +1 -1
  151. package/dist/commands/porch/state.d.ts +0 -4
  152. package/dist/commands/porch/state.d.ts.map +1 -1
  153. package/dist/commands/porch/state.js +23 -10
  154. package/dist/commands/porch/state.js.map +1 -1
  155. package/dist/commands/update.d.ts +5 -1
  156. package/dist/commands/update.d.ts.map +1 -1
  157. package/dist/commands/update.js +73 -18
  158. package/dist/commands/update.js.map +1 -1
  159. package/dist/lib/agent-env.d.ts +22 -1
  160. package/dist/lib/agent-env.d.ts.map +1 -1
  161. package/dist/lib/agent-env.js +27 -1
  162. package/dist/lib/agent-env.js.map +1 -1
  163. package/dist/lib/agent-process.d.ts +23 -0
  164. package/dist/lib/agent-process.d.ts.map +1 -0
  165. package/dist/lib/agent-process.js +24 -0
  166. package/dist/lib/agent-process.js.map +1 -0
  167. package/dist/lib/forge-contracts.d.ts +9 -3
  168. package/dist/lib/forge-contracts.d.ts.map +1 -1
  169. package/dist/lib/forge-contracts.js.map +1 -1
  170. package/dist/lib/forge.d.ts +8 -5
  171. package/dist/lib/forge.d.ts.map +1 -1
  172. package/dist/lib/forge.js +57 -1
  173. package/dist/lib/forge.js.map +1 -1
  174. package/dist/lib/github.d.ts.map +1 -1
  175. package/dist/lib/github.js +38 -0
  176. package/dist/lib/github.js.map +1 -1
  177. package/dist/lib/governance-bootstrap.d.ts +155 -0
  178. package/dist/lib/governance-bootstrap.d.ts.map +1 -0
  179. package/dist/lib/governance-bootstrap.js +469 -0
  180. package/dist/lib/governance-bootstrap.js.map +1 -0
  181. package/dist/lib/issue-id.d.ts +34 -0
  182. package/dist/lib/issue-id.d.ts.map +1 -0
  183. package/dist/lib/issue-id.js +61 -0
  184. package/dist/lib/issue-id.js.map +1 -0
  185. package/dist/lib/scaffold.d.ts +4 -0
  186. package/dist/lib/scaffold.d.ts.map +1 -1
  187. package/dist/lib/scaffold.js +29 -5
  188. package/dist/lib/scaffold.js.map +1 -1
  189. package/dist/lib/shipped-skill-hashes.d.ts +10 -0
  190. package/dist/lib/shipped-skill-hashes.d.ts.map +1 -0
  191. package/dist/lib/shipped-skill-hashes.js +197 -0
  192. package/dist/lib/shipped-skill-hashes.js.map +1 -0
  193. package/dist/lib/skill-refresh.d.ts +90 -0
  194. package/dist/lib/skill-refresh.d.ts.map +1 -0
  195. package/dist/lib/skill-refresh.js +267 -0
  196. package/dist/lib/skill-refresh.js.map +1 -0
  197. package/dist/lib/tree-snapshot.d.ts +172 -0
  198. package/dist/lib/tree-snapshot.d.ts.map +1 -0
  199. package/dist/lib/tree-snapshot.js +393 -0
  200. package/dist/lib/tree-snapshot.js.map +1 -0
  201. package/dist/terminal/pty-session.d.ts +5 -0
  202. package/dist/terminal/pty-session.d.ts.map +1 -1
  203. package/dist/terminal/pty-session.js +7 -0
  204. package/dist/terminal/pty-session.js.map +1 -1
  205. package/ide-extension/codev-vscode.vsix +0 -0
  206. package/ide-extension/manifest.json +7 -0
  207. package/package.json +8 -6
  208. package/scripts/forge/jira/_lib.sh +113 -0
  209. package/scripts/forge/jira/auth-status.sh +29 -0
  210. package/scripts/forge/jira/issue-comment.sh +23 -0
  211. package/scripts/forge/jira/issue-list.sh +32 -0
  212. package/scripts/forge/jira/issue-search.sh +40 -0
  213. package/scripts/forge/jira/issue-view.sh +41 -0
  214. package/scripts/forge/jira/recently-closed.sh +81 -0
  215. package/scripts/forge/jira/user-identity.sh +18 -0
  216. package/skeleton/.claude/skills/afx/SKILL.md +36 -0
  217. package/skeleton/.claude/skills/codev/SKILL.md +18 -2
  218. package/skeleton/.claude/skills/update-arch-docs/SKILL.md +28 -2
  219. package/skeleton/.codex/skills/afx/SKILL.md +36 -0
  220. package/skeleton/.codex/skills/codev/SKILL.md +18 -2
  221. package/skeleton/.codex/skills/update-arch-docs/SKILL.md +28 -2
  222. package/skeleton/resources/commands/agent-farm.md +112 -0
  223. package/skeleton/resources/commands/codev.md +47 -0
  224. package/skeleton/resources/commands/overview.md +1 -0
  225. package/skeleton/resources/decision-protocol.md +215 -0
  226. package/skeleton/resources/workflow-reference.md +12 -0
  227. package/skeleton/roles/architect.md +6 -0
  228. package/skeleton/templates/bootstrap-docs-prompt.md +16 -0
  229. package/skeleton/templates/bootstrap-docs-review-prompt.md +19 -0
  230. package/skeleton/templates/cheatsheet.md +1 -0
  231. package/dashboard-dist/assets/index-BuflRUi6.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serve.js","sourceRoot":"","sources":["../../../../src/agent-farm/servers/agent-state/serve.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EACL,iBAAiB,GAGlB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAwB,MAAM,YAAY,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAsB,MAAM,eAAe,CAAC;AAiBrE,SAAS,YAAY,CAAC,QAAmC;IACvD,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACxC,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;AAClF,CAAC;AAED,SAAS,YAAY,CAAC,KAAsB,EAAE,aAAqB,EAAE,OAAe;IAClF,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IACjD,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACtC,MAAM,IAAI,GAAyB;QACjC,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,KAAK,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,WAAW,EAAE;QACnD,EAAE,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE;QAC7C,cAAc,EAAE,MAAM,CAAC,cAAc;KACtC,CAAC;IACF,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS;QAAE,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;IACzE,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAC7B,aAAqB,EACrB,OAAe,EACf,KAAsB,EACtB,UAAkC,EAAE;IAEpC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,eAAe,CAAC;IAC/C,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,gBAAgB,CAAC;IACtD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC;IACpC,OAAO,iBAAiB,CAAC;QACvB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,QAAQ,EAAE,YAAY,CAAC,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QACxD,QAAQ,EAAE,YAAY,CAAC,KAAK,EAAE,aAAa,EAAE,OAAO,CAAC;QACrD,GAAG,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,WAAW,EAAE;KACnC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,76 @@
1
+ /**
2
+ * Tower's in-memory agent activity store (Spec 1595).
3
+ *
4
+ * Holds, per agent, the latest activity its harness reported through the
5
+ * lifecycle route: the harness session id, the activity and when it began, the
6
+ * hook time of the latest accepted report, whether background work is pending,
7
+ * and the needs-input detail while (and only while) the agent needs input.
8
+ *
9
+ * Memory only, by owner ruling (2026-10-21): nothing here is ever written to
10
+ * `global.db` or any other store, so no served state can outlive the Tower
11
+ * process that received its report. A fresh store holds nothing.
12
+ *
13
+ * Keys are `(normalized workspace path, canonical agent id)`; callers resolve
14
+ * both through `resolveAgentIdentity` before touching the store.
15
+ *
16
+ * Ordering (SC17): a report older than the stored hook time is ignored; a report
17
+ * from a different harness session supersedes the stored one only with a newer
18
+ * hook time; a hook time more than `MAX_FUTURE_SKEW_MS` ahead of Tower's clock is
19
+ * rejected.
20
+ *
21
+ * Background work (SC5): a turn end with `backgroundWork: true` holds the agent
22
+ * `working`. A later same-session turn end that makes no background-work claim
23
+ * (the field absent) does not release that hold; a new turn does.
24
+ */
25
+ import { EventEmitter } from 'node:events';
26
+ import type { AgentActivity, AgentLifecycleEvent, NeedsInputDetail } from '@cluesmith/codev-types';
27
+ /** How far ahead of Tower's clock a report's hook time may be. */
28
+ export declare const MAX_FUTURE_SKEW_MS = 60000;
29
+ /** Raised on every accepted report that changes a served field. */
30
+ export declare const AGENT_STATE_CHANGED = "agent-state-changed";
31
+ /** One agent's reported activity, as held in memory. */
32
+ export interface StoredAgentActivity {
33
+ /** The harness session the activity belongs to. */
34
+ sessionId: string;
35
+ activity: AgentActivity;
36
+ /** Hook time (epoch ms) at which `activity` began. */
37
+ activitySince: number;
38
+ /** Hook time (epoch ms) of the latest report that set the served state; the served `at`. */
39
+ reportedAt: number;
40
+ /**
41
+ * Hook time (epoch ms) of the latest accepted report, including one that
42
+ * changed nothing served. The ordering watermark (SC17): never behind `reportedAt`.
43
+ */
44
+ latestHookAt: number;
45
+ /** True when the agent ended its turn with its own background work running. */
46
+ backgroundWork: boolean;
47
+ /** Present only while `activity` is `needs-input`. */
48
+ needsInput?: NeedsInputDetail;
49
+ }
50
+ /** The payload of `AGENT_STATE_CHANGED`. */
51
+ export interface AgentStateChange {
52
+ workspacePath: string;
53
+ agentId: string;
54
+ }
55
+ /**
56
+ * What `apply` did with a report: `changed` (accepted, a served field moved),
57
+ * `unchanged` (accepted, nothing served moved), `stale` (ignored by ordering),
58
+ * or `future` (rejected: hook time implausibly far ahead).
59
+ */
60
+ export type ApplyOutcome = 'changed' | 'unchanged' | 'stale' | 'future';
61
+ export declare class AgentStateStore extends EventEmitter {
62
+ private readonly now;
63
+ private readonly entries;
64
+ constructor(now?: () => number);
65
+ /** The stored activity for an agent, or `undefined` when it has reported nothing. */
66
+ get(workspacePath: string, agentId: string): StoredAgentActivity | undefined;
67
+ /** Apply one validated report for a resolved agent. */
68
+ apply(workspacePath: string, agentId: string, event: AgentLifecycleEvent): ApplyOutcome;
69
+ /** Every agent the store holds state for. */
70
+ agents(): AgentStateChange[];
71
+ /** Forget an agent's reported state (it was removed). */
72
+ drop(workspacePath: string, agentId: string): void;
73
+ }
74
+ /** Tower's one store. Nothing subscribes to its change event except the broadcaster. */
75
+ export declare const agentStateStore: AgentStateStore;
76
+ //# sourceMappingURL=store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../../src/agent-farm/servers/agent-state/store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAEnG,kEAAkE;AAClE,eAAO,MAAM,kBAAkB,QAAS,CAAC;AAEzC,mEAAmE;AACnE,eAAO,MAAM,mBAAmB,wBAAwB,CAAC;AAEzD,wDAAwD;AACxD,MAAM,WAAW,mBAAmB;IAClC,mDAAmD;IACnD,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,aAAa,CAAC;IACxB,sDAAsD;IACtD,aAAa,EAAE,MAAM,CAAC;IACtB,4FAA4F;IAC5F,UAAU,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB,+EAA+E;IAC/E,cAAc,EAAE,OAAO,CAAC;IACxB,sDAAsD;IACtD,UAAU,CAAC,EAAE,gBAAgB,CAAC;CAC/B;AAED,4CAA4C;AAC5C,MAAM,WAAW,gBAAgB;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,WAAW,GAAG,OAAO,GAAG,QAAQ,CAAC;AAyDxE,qBAAa,eAAgB,SAAQ,YAAY;IAGnC,OAAO,CAAC,QAAQ,CAAC,GAAG;IAFhC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA0C;gBAErC,GAAG,GAAE,MAAM,MAAiB;IAIzD,qFAAqF;IACrF,GAAG,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS;IAI5E,uDAAuD;IACvD,KAAK,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,GAAG,YAAY;IA8CvF,6CAA6C;IAC7C,MAAM,IAAI,gBAAgB,EAAE;IAS5B,yDAAyD;IACzD,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;CAGnD;AAED,wFAAwF;AACxF,eAAO,MAAM,eAAe,iBAAwB,CAAC"}
@@ -0,0 +1,157 @@
1
+ /**
2
+ * Tower's in-memory agent activity store (Spec 1595).
3
+ *
4
+ * Holds, per agent, the latest activity its harness reported through the
5
+ * lifecycle route: the harness session id, the activity and when it began, the
6
+ * hook time of the latest accepted report, whether background work is pending,
7
+ * and the needs-input detail while (and only while) the agent needs input.
8
+ *
9
+ * Memory only, by owner ruling (2026-10-21): nothing here is ever written to
10
+ * `global.db` or any other store, so no served state can outlive the Tower
11
+ * process that received its report. A fresh store holds nothing.
12
+ *
13
+ * Keys are `(normalized workspace path, canonical agent id)`; callers resolve
14
+ * both through `resolveAgentIdentity` before touching the store.
15
+ *
16
+ * Ordering (SC17): a report older than the stored hook time is ignored; a report
17
+ * from a different harness session supersedes the stored one only with a newer
18
+ * hook time; a hook time more than `MAX_FUTURE_SKEW_MS` ahead of Tower's clock is
19
+ * rejected.
20
+ *
21
+ * Background work (SC5): a turn end with `backgroundWork: true` holds the agent
22
+ * `working`. A later same-session turn end that makes no background-work claim
23
+ * (the field absent) does not release that hold; a new turn does.
24
+ */
25
+ import { EventEmitter } from 'node:events';
26
+ /** How far ahead of Tower's clock a report's hook time may be. */
27
+ export const MAX_FUTURE_SKEW_MS = 60_000;
28
+ /** Raised on every accepted report that changes a served field. */
29
+ export const AGENT_STATE_CHANGED = 'agent-state-changed';
30
+ function storeKey(workspacePath, agentId) {
31
+ return `${workspacePath}\0${agentId}`;
32
+ }
33
+ function sameDetail(a, b) {
34
+ if (a === undefined || b === undefined)
35
+ return a === b;
36
+ return a.kind === b.kind && a.tool === b.tool && a.summary === b.summary;
37
+ }
38
+ /** The activity a lifecycle event moves the agent into. */
39
+ function activityFor(event) {
40
+ switch (event.event) {
41
+ case 'session-started':
42
+ return 'idle';
43
+ case 'turn-started':
44
+ case 'tool-activity':
45
+ return 'working';
46
+ case 'needs-input':
47
+ return 'needs-input';
48
+ case 'turn-ended':
49
+ if (event.backgroundWork === true)
50
+ return 'working';
51
+ return 'idle';
52
+ }
53
+ }
54
+ /**
55
+ * True when `event` is a turn end that makes no background-work claim, arriving
56
+ * while the same session's turn end with background work is held. Such a report
57
+ * carries nothing new: Claude's 60 s `idle_prompt` (the second chance for a lost
58
+ * turn end) fires while the agent's own background task still runs, and must not
59
+ * end the background-work hold early. Real-session finding, Phase 8.
60
+ */
61
+ function repeatsBackgroundTurnEnd(event, previous) {
62
+ return event.event === 'turn-ended'
63
+ && event.backgroundWork === undefined
64
+ && previous !== undefined
65
+ && previous.sessionId === event.sessionId
66
+ && previous.backgroundWork;
67
+ }
68
+ /**
69
+ * The needs-input detail for an accepted `needs-input` report. A report without
70
+ * a tool (the redundant permission notification names none) keeps the detail
71
+ * already held for the same episode.
72
+ */
73
+ function detailFor(event, previous) {
74
+ const continuesEpisode = previous !== undefined
75
+ && previous.sessionId === event.sessionId
76
+ && previous.activity === 'needs-input';
77
+ if (continuesEpisode && previous.needsInput !== undefined && event.needsInput?.tool === undefined) {
78
+ return previous.needsInput;
79
+ }
80
+ return event.needsInput;
81
+ }
82
+ export class AgentStateStore extends EventEmitter {
83
+ now;
84
+ entries = new Map();
85
+ constructor(now = Date.now) {
86
+ super();
87
+ this.now = now;
88
+ }
89
+ /** The stored activity for an agent, or `undefined` when it has reported nothing. */
90
+ get(workspacePath, agentId) {
91
+ return this.entries.get(storeKey(workspacePath, agentId));
92
+ }
93
+ /** Apply one validated report for a resolved agent. */
94
+ apply(workspacePath, agentId, event) {
95
+ if (event.at > this.now() + MAX_FUTURE_SKEW_MS)
96
+ return 'future';
97
+ const key = storeKey(workspacePath, agentId);
98
+ const previous = this.entries.get(key);
99
+ if (previous !== undefined) {
100
+ if (event.at < previous.latestHookAt)
101
+ return 'stale';
102
+ if (event.sessionId !== previous.sessionId && event.at === previous.latestHookAt)
103
+ return 'stale';
104
+ }
105
+ if (previous !== undefined && repeatsBackgroundTurnEnd(event, previous)) {
106
+ // The hold and its served time stay; only the ordering watermark moves, so a
107
+ // delayed report older than this one is still ignored.
108
+ this.entries.set(key, { ...previous, latestHookAt: event.at });
109
+ return 'unchanged';
110
+ }
111
+ const activity = activityFor(event);
112
+ let activitySince = event.at;
113
+ if (previous !== undefined && previous.sessionId === event.sessionId && previous.activity === activity) {
114
+ activitySince = previous.activitySince;
115
+ }
116
+ const next = {
117
+ sessionId: event.sessionId,
118
+ activity,
119
+ activitySince,
120
+ reportedAt: event.at,
121
+ latestHookAt: event.at,
122
+ backgroundWork: event.event === 'turn-ended' && event.backgroundWork === true,
123
+ };
124
+ if (activity === 'needs-input') {
125
+ const detail = detailFor(event, previous);
126
+ if (detail !== undefined)
127
+ next.needsInput = detail;
128
+ }
129
+ this.entries.set(key, next);
130
+ const changed = previous === undefined
131
+ || previous.activity !== next.activity
132
+ || previous.reportedAt !== next.reportedAt
133
+ || previous.backgroundWork !== next.backgroundWork
134
+ || !sameDetail(previous.needsInput, next.needsInput);
135
+ if (!changed)
136
+ return 'unchanged';
137
+ const change = { workspacePath, agentId };
138
+ this.emit(AGENT_STATE_CHANGED, change);
139
+ return 'changed';
140
+ }
141
+ /** Every agent the store holds state for. */
142
+ agents() {
143
+ const agents = [];
144
+ for (const key of this.entries.keys()) {
145
+ const separator = key.indexOf('\0');
146
+ agents.push({ workspacePath: key.slice(0, separator), agentId: key.slice(separator + 1) });
147
+ }
148
+ return agents;
149
+ }
150
+ /** Forget an agent's reported state (it was removed). */
151
+ drop(workspacePath, agentId) {
152
+ this.entries.delete(storeKey(workspacePath, agentId));
153
+ }
154
+ }
155
+ /** Tower's one store. Nothing subscribes to its change event except the broadcaster. */
156
+ export const agentStateStore = new AgentStateStore();
157
+ //# sourceMappingURL=store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../../../src/agent-farm/servers/agent-state/store.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../../../src/agent-farm/servers/decisions/parse.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EACV,YAAY,EAEZ,cAAc,EAEd,iBAAiB,EACjB,oBAAoB,EACrB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAoD,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAGjG,MAAM,WAAW,UAAW,SAAQ,YAAY;IAC9C,8CAA8C;IAC9C,WAAW,EAAE,MAAM,CAAC;IACpB,iDAAiD;IACjD,OAAO,EAAE,MAAM,CAAC;IAChB,oDAAoD;IACpD,KAAK,EAAE,MAAM,CAAC;IACd,mFAAmF;IACnF,GAAG,EAAE,MAAM,CAAC;IACZ,yDAAyD;IACzD,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,qDAAqD;IACrD,GAAG,EAAE,IAAI,GAAG,MAAM,CAAC;IACnB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,oBAAoB,EAAE,CAAC;IACjC,OAAO,EAAE,MAAM,CAAC;CACjB;AA0CD;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,gBAAgB,EAAE,MAAM,GAAG,cAAc,EAAE,CAuBvE;AAmGD,2DAA2D;AAC3D,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,CAgD5D;AA8DD,wEAAwE;AACxE,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,GAAG,iBAAiB,CAmB5F"}
1
+ {"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../../../src/agent-farm/servers/decisions/parse.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EACV,YAAY,EAEZ,cAAc,EAGd,iBAAiB,EACjB,oBAAoB,EACrB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAoD,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAGjG,MAAM,WAAW,UAAW,SAAQ,YAAY;IAC9C,8CAA8C;IAC9C,WAAW,EAAE,MAAM,CAAC;IACpB,iDAAiD;IACjD,OAAO,EAAE,MAAM,CAAC;IAChB,oDAAoD;IACpD,KAAK,EAAE,MAAM,CAAC;IACd,mFAAmF;IACnF,GAAG,EAAE,MAAM,CAAC;IACZ,yDAAyD;IACzD,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,qDAAqD;IACrD,GAAG,EAAE,IAAI,GAAG,MAAM,CAAC;IACnB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,oBAAoB,EAAE,CAAC;IACjC,OAAO,EAAE,MAAM,CAAC;CACjB;AA4DD;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,gBAAgB,EAAE,MAAM,GAAG,cAAc,EAAE,CAuBvE;AAmGD,2DAA2D;AAC3D,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,CAiD5D;AA+DD,wEAAwE;AACxE,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,GAAG,iBAAiB,CAmB5F"}
@@ -1,11 +1,20 @@
1
1
  // Decisions file parser (Spec 1819).
2
2
  //
3
- // A pure function from the decisions file's text to its read model. The file is
4
- // the only state: this runs on every read, nothing is cached. Structure comes
5
- // from `grammar.ts`; this module adds the format's conventions:
3
+ // A function from the decisions file's text, and the clock, to its read model. The
4
+ // file is the only state: this runs on every read, nothing is cached. The clock
5
+ // enters only through time-only stamps, which are read as today in their zone
6
+ // (#1836), so the same text can parse to different instants on different days:
7
+ // - `version` (the client's cache key) hashes the text alone and does not cover
8
+ // that: a client keeps the instants it has until the file changes.
9
+ // - `splice.ts`'s `verify()` re-parses at a later moment than the parse it checks
10
+ // against; it is safe only because it compares no stamps.
11
+ // Structure comes from `grammar.ts`; this module adds the format's conventions:
6
12
  // - `## Open` / `## Ruled` sections; items are `###` headings inside `## Open`,
7
13
  // running to the next heading of level 1–3 (or end of file).
8
- // - item id = the heading's first token; ` · ` separates id, stamp and question.
14
+ // - item id = the heading's first token; ` · ` separates id, stamp and question. A first
15
+ // part that is not a stamp belongs to the question.
16
+ // - a `_Zone: <zone>_` line in the header (above the first `##`) is the zone of every
17
+ // stamp that names none.
9
18
  // - options = backticked words on the `**Your word:**` line, first recommended; an
10
19
  // option with no `= …` there takes its description from the body's `**Options:**`.
11
20
  // - current ruling = everything after the `**Your word:**` line, verbatim.
@@ -16,6 +25,7 @@ import { createHash } from 'node:crypto';
16
25
  import { YOUR_WORD_LABEL, classifyLines, detectLineEnding } from './grammar.js';
17
26
  import { resolveStamp } from './stamp.js';
18
27
  const SEPARATOR = ' · ';
28
+ const ZONE_LINE_RE = /^ {0,3}_Zone:[ \t]*(\S+?)\.?_[ \t]*$/;
19
29
  const ASKED_RE = /^ {0,3}- \*\*You asked \(([^)]*)\):\*\*[ \t]*(.*)$/;
20
30
  const ANSWER_RE = /^ {0,3}- \*\*(.+?)['’]s answer \(([^)]*)\):\*\*[ \t]*(.*)$/;
21
31
  const CONTINUATION_INDENT_RE = /^(?: {2}|\t)/;
@@ -42,17 +52,36 @@ function joinTrimmed(lines) {
42
52
  return lines.slice(from, to).map(l => l.text).join('\n');
43
53
  }
44
54
  /**
45
- * Split a heading's text into id, stamp text and question: the first token is the id;
46
- * after a ` · `, the first part is the stamp and the rest (re-joined) the question. A
47
- * heading without separators has a question and no stamp.
55
+ * The file's zone: the one `_Zone: <zone>_` line above the first `##` heading. None, or
56
+ * more than one, gives no file zone.
48
57
  */
49
- function splitHeading(headingText) {
58
+ function fileZone(lines) {
59
+ const zones = [];
60
+ for (const line of lines) {
61
+ if (line.headingLevel >= 2)
62
+ break;
63
+ const zone = line.fenced ? null : ZONE_LINE_RE.exec(line.text);
64
+ if (zone)
65
+ zones.push(zone[1]);
66
+ }
67
+ return zones.length === 1 ? zones[0] : null;
68
+ }
69
+ /**
70
+ * Split a heading's text into id, stamp and question: the first token is the id; after a
71
+ * ` · `, the first part is the stamp and the rest (re-joined) the question. A heading
72
+ * without separators, or whose first part is not a stamp, has a question and no stamp.
73
+ */
74
+ function splitHeading(headingText, zone) {
50
75
  const id = headingText.split(/\s+/)[0] ?? '';
51
76
  const rest = headingText.slice(id.length);
52
77
  if (!rest.startsWith(SEPARATOR))
53
- return { id, stampText: null, question: rest.trim() };
54
- const [stampText, ...questionParts] = rest.slice(SEPARATOR.length).split(SEPARATOR);
55
- return { id, stampText: stampText.trim(), question: questionParts.join(SEPARATOR).trim() };
78
+ return { id, stamp: null, question: rest.trim() };
79
+ const afterId = rest.slice(SEPARATOR.length);
80
+ const [stampText, ...questionParts] = afterId.split(SEPARATOR);
81
+ const stamp = resolveStamp(stampText.trim(), zone);
82
+ if (!stamp)
83
+ return { id, stamp: null, question: afterId.trim() };
84
+ return { id, stamp, question: questionParts.join(SEPARATOR).trim() };
56
85
  }
57
86
  /**
58
87
  * Options from a `**Your word:**` line. An option starts at a backticked span at the
@@ -202,6 +231,7 @@ export function parseDecisions(text) {
202
231
  if (ruledHeadings.length > 1)
203
232
  problems.push('ruled-multiple');
204
233
  const offsetOf = (lineIndex) => (lineIndex < lines.length ? lines[lineIndex].start : text.length);
234
+ const zone = fileZone(lines);
205
235
  const items = [];
206
236
  for (const open of openHeadings) {
207
237
  const openEnd = sectionEnd(open.index);
@@ -215,7 +245,7 @@ export function parseDecisions(text) {
215
245
  break;
216
246
  }
217
247
  }
218
- items.push(parseItem(text, lines, i, endLine, offsetOf));
248
+ items.push(parseItem(text, lines, i, endLine, offsetOf, zone));
219
249
  i = endLine - 1;
220
250
  }
221
251
  }
@@ -232,9 +262,9 @@ export function parseDecisions(text) {
232
262
  const ruledMarkdown = ruled ? joinTrimmed(lines.slice(ruled.index + 1, sectionEnd(ruled.index))) : '';
233
263
  return { lines, eol: detectLineEnding(lines), items, ruledMarkdown, problems, version: sha256(text) };
234
264
  }
235
- function parseItem(text, lines, headingLine, endLine, offsetOf) {
265
+ function parseItem(text, lines, headingLine, endLine, offsetOf, zone) {
236
266
  const heading = lines[headingLine];
237
- const { id, stampText, question } = splitHeading(heading.headingText);
267
+ const { id, stamp, question } = splitHeading(heading.headingText, zone);
238
268
  const start = heading.start;
239
269
  const end = offsetOf(endLine);
240
270
  const itemLines = lines.slice(headingLine + 1, endLine);
@@ -268,7 +298,7 @@ function parseItem(text, lines, headingLine, endLine, offsetOf) {
268
298
  }
269
299
  return {
270
300
  id,
271
- stamp: stampText === null ? null : resolveStamp(stampText),
301
+ stamp,
272
302
  question,
273
303
  bodyMarkdown: joinTrimmed(rest),
274
304
  options,
@@ -1 +1 @@
1
- {"version":3,"file":"parse.js","sourceRoot":"","sources":["../../../../src/agent-farm/servers/decisions/parse.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parse.js","sourceRoot":"","sources":["../../../../src/agent-farm/servers/decisions/parse.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,8 @@
1
1
  import type { DecisionStamp } from '@cluesmith/codev-types';
2
- /** Resolve a heading stamp to an instant using only the zone written in it. */
3
- export declare function resolveStamp(raw: string): DecisionStamp;
2
+ /**
3
+ * Resolve a heading stamp to an instant, using the zone written in it or else `fileZone`.
4
+ * A stamp without a date takes today's date in that zone. Returns null for text that is not
5
+ * a stamp.
6
+ */
7
+ export declare function resolveStamp(raw: string, fileZone?: string | null): DecisionStamp | null;
4
8
  //# sourceMappingURL=stamp.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"stamp.d.ts","sourceRoot":"","sources":["../../../../src/agent-farm/servers/decisions/stamp.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AA2H5D,+EAA+E;AAC/E,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CAuCvD"}
1
+ {"version":3,"file":"stamp.d.ts","sourceRoot":"","sources":["../../../../src/agent-farm/servers/decisions/stamp.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAmI5D;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAM,GAAG,IAAW,GAAG,aAAa,GAAG,IAAI,CAiD9F"}
@@ -1,9 +1,11 @@
1
- // Decision heading timestamps (Spec 1819).
1
+ // Decision heading timestamps (Spec 1819, Issue #1836).
2
2
  //
3
- // A stamp is `YYYY-MM-DD h:mm am|pm <ZONE>` or `YYYY-MM-DD HH:mm <ZONE>`. It is
4
- // resolved to an absolute instant using ONLY the zone written in it — nothing here
5
- // defaults to, or special-cases, any zone. Anything not in the accepted forms is
6
- // returned unconverted with a reason, so the tab shows it verbatim.
3
+ // A stamp is `[YYYY-MM-DD] h:mm am|pm [ZONE]` or `[YYYY-MM-DD] HH:mm [ZONE]`. It is
4
+ // resolved to an absolute instant using the zone written in it or, failing that, the
5
+ // file's `_Zone: …_` line — nothing here defaults to, or special-cases, any zone. A
6
+ // stamp without a date is today in its zone. A stamp with no zone at all is returned
7
+ // unconverted with no reason, so the tab shows it as written; text in none of these
8
+ // forms is not a stamp at all (null).
7
9
  //
8
10
  // IANA and generic zones are resolved with the runtime's built-in `Intl` time-zone
9
11
  // data by offset probing: the wall-clock time is tried against every offset the
@@ -55,8 +57,10 @@ const FIXED_ZONES = {
55
57
  NZST: 12 * 60,
56
58
  NZDT: 13 * 60,
57
59
  };
58
- const STAMP_RE = /^(\d{4})-(\d{2})-(\d{2})\s+(\d{1,2}):(\d{2})(?:\s*(am|pm))?\s+(\S.*?)\s*$/i;
60
+ const STAMP_RE = /^(?:(\d{4})-(\d{2})-(\d{2})\s+)?(\d{1,2}):(\d{2})(?:\s*(am|pm))?(?:\s+(\S+))?$/i;
59
61
  const OFFSET_RE = /^(?:UTC|GMT)?([+-])(\d{1,2})(?::?(\d{2}))?$/;
62
+ /** Shaped like a zone (an abbreviation, an Area/Location name, an offset), known or not. */
63
+ const ZONE_LIKE_RE = /^(?:[A-Z]{2,5}|[A-Z][A-Za-z_]*(?:\/[A-Za-z0-9_+-]+)+|(?:UTC|GMT)?[+-]\d{1,2}(?::?\d{2})?)$/;
60
64
  const MINUTE_MS = 60_000;
61
65
  const DAY_MS = 24 * 60 * MINUTE_MS;
62
66
  function isIanaZone(name) {
@@ -125,47 +129,67 @@ function instantsForWallClock(wallMs, zone) {
125
129
  }
126
130
  return [...instants].sort((a, b) => a - b);
127
131
  }
128
- /** Resolve a heading stamp to an instant using only the zone written in it. */
129
- export function resolveStamp(raw) {
132
+ /** The wall-clock time in `zone` at the given instant, as if UTC. */
133
+ function wallClockAt(instantMs, zone) {
134
+ const offsetMinutes = zone.kind === 'fixed' ? zone.offsetMinutes : offsetAt(instantMs, zone.name);
135
+ return instantMs + offsetMinutes * MINUTE_MS;
136
+ }
137
+ /**
138
+ * Resolve a heading stamp to an instant, using the zone written in it or else `fileZone`.
139
+ * A stamp without a date takes today's date in that zone. Returns null for text that is not
140
+ * a stamp.
141
+ */
142
+ export function resolveStamp(raw, fileZone = null) {
130
143
  const m = STAMP_RE.exec(raw.trim());
131
144
  if (!m)
132
- return { raw, instant: null, unconvertedReason: 'unrecognized-format' };
145
+ return null;
133
146
  const [, y, mo, d, h, mi, meridiem, zoneText] = m;
134
- // `12:10 am` with no zone backtracks to read `am` as the zone; it has none.
135
- if (/^(am|pm)$/i.test(zoneText))
136
- return { raw, instant: null, unconvertedReason: 'unrecognized-format' };
137
- const year = Number(y);
138
- const month = Number(mo);
139
- const day = Number(d);
140
147
  let hour = Number(h);
141
148
  const minute = Number(mi);
142
149
  if (meridiem) {
143
150
  if (hour < 1 || hour > 12)
144
- return { raw, instant: null, unconvertedReason: 'unrecognized-format' };
151
+ return null;
145
152
  const pm = meridiem.toLowerCase() === 'pm';
146
153
  hour = (hour % 12) + (pm ? 12 : 0);
147
154
  }
148
155
  else if (hour > 23) {
149
- return { raw, instant: null, unconvertedReason: 'unrecognized-format' };
156
+ return null;
150
157
  }
151
158
  if (minute > 59)
152
- return { raw, instant: null, unconvertedReason: 'unrecognized-format' };
153
- const wallMs = Date.UTC(year, month - 1, day, hour, minute);
154
- const check = new Date(wallMs);
155
- if (check.getUTCFullYear() !== year || check.getUTCMonth() !== month - 1 || check.getUTCDate() !== day) {
156
- return { raw, instant: null, unconvertedReason: 'unrecognized-format' };
159
+ return null;
160
+ const timeOnly = y === undefined;
161
+ let dateMs = 0;
162
+ if (!timeOnly) {
163
+ const year = Number(y);
164
+ const month = Number(mo);
165
+ const day = Number(d);
166
+ dateMs = Date.UTC(year, month - 1, day);
167
+ const check = new Date(dateMs);
168
+ if (check.getUTCFullYear() !== year || check.getUTCMonth() !== month - 1 || check.getUTCDate() !== day)
169
+ return null;
170
+ }
171
+ const stamp = timeOnly ? { raw, instant: null, timeOnly: true } : { raw, instant: null };
172
+ const zoneName = zoneText ?? fileZone;
173
+ if (!zoneName)
174
+ return stamp;
175
+ const zone = parseZone(zoneName);
176
+ if (!zone) {
177
+ // A bare time and a word that is no zone (`10:30 standup?`) is a question, not a stamp.
178
+ if (timeOnly && zoneText !== undefined && !ZONE_LIKE_RE.test(zoneText))
179
+ return null;
180
+ return { ...stamp, unconvertedReason: 'unknown-zone' };
157
181
  }
158
- const zone = parseZone(zoneText);
159
- if (!zone)
160
- return { raw, instant: null, unconvertedReason: 'unknown-zone' };
182
+ if (timeOnly)
183
+ dateMs = Math.floor(wallClockAt(Date.now(), zone) / DAY_MS) * DAY_MS;
184
+ const wallMs = dateMs + (hour * 60 + minute) * MINUTE_MS;
161
185
  if (zone.kind === 'fixed') {
162
- return { raw, instant: new Date(wallMs - zone.offsetMinutes * MINUTE_MS).toISOString() };
186
+ return { ...stamp, instant: new Date(wallMs - zone.offsetMinutes * MINUTE_MS).toISOString() };
163
187
  }
164
188
  const instants = instantsForWallClock(wallMs, zone.name);
165
189
  if (instants.length === 0)
166
- return { raw, instant: null, unconvertedReason: 'nonexistent-time' };
190
+ return { ...stamp, unconvertedReason: 'nonexistent-time' };
167
191
  if (instants.length > 1)
168
- return { raw, instant: null, unconvertedReason: 'ambiguous-time' };
169
- return { raw, instant: new Date(instants[0]).toISOString() };
192
+ return { ...stamp, unconvertedReason: 'ambiguous-time' };
193
+ return { ...stamp, instant: new Date(instants[0]).toISOString() };
170
194
  }
171
195
  //# sourceMappingURL=stamp.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"stamp.js","sourceRoot":"","sources":["../../../../src/agent-farm/servers/decisions/stamp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stamp.js","sourceRoot":"","sources":["../../../../src/agent-farm/servers/decisions/stamp.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,EAAE;AACF,oFAAoF;AACpF,qFAAqF;AACrF,oFAAoF;AACpF,qFAAqF;AACrF,oFAAoF;AACpF,sCAAsC;AACtC,EAAE;AACF,mFAAmF;AACnF,gFAAgF;AAChF,kFAAkF;AAClF,iFAAiF;AACjF,+DAA+D;AAI/D,kEAAkE;AAClE,MAAM,aAAa,GAA2B;IAC5C,EAAE,EAAE,qBAAqB;IACzB,EAAE,EAAE,gBAAgB;IACpB,EAAE,EAAE,iBAAiB;IACrB,EAAE,EAAE,kBAAkB;IACtB,GAAG,EAAE,mBAAmB;IACxB,EAAE,EAAE,kBAAkB;CACvB,CAAC;AAEF;;;;GAIG;AACH,MAAM,WAAW,GAA2B;IAC1C,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,CAAC,EAAE,CAAC;IACJ,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE;IACZ,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE;IACZ,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE;IACZ,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE;IACZ,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE;IACZ,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE;IACZ,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE;IACZ,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE;IACZ,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE;IACb,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE;IACb,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE;IACb,GAAG,EAAE,CAAC;IACN,IAAI,EAAE,CAAC,GAAG,EAAE;IACZ,GAAG,EAAE,CAAC,GAAG,EAAE;IACX,IAAI,EAAE,CAAC,GAAG,EAAE;IACZ,GAAG,EAAE,CAAC,GAAG,EAAE;IACX,IAAI,EAAE,CAAC,GAAG,EAAE;IACZ,GAAG,EAAE,CAAC,GAAG,EAAE;IACX,GAAG,EAAE,CAAC,GAAG,EAAE;IACX,GAAG,EAAE,CAAC,GAAG,EAAE;IACX,GAAG,EAAE,CAAC,GAAG,EAAE;IACX,GAAG,EAAE,CAAC,GAAG,EAAE;IACX,IAAI,EAAE,EAAE,GAAG,EAAE;IACb,IAAI,EAAE,EAAE,GAAG,EAAE;IACb,IAAI,EAAE,EAAE,GAAG,EAAE;IACb,IAAI,EAAE,EAAE,GAAG,EAAE;CACd,CAAC;AAEF,MAAM,QAAQ,GAAG,iFAAiF,CAAC;AACnG,MAAM,SAAS,GAAG,6CAA6C,CAAC;AAChE,4FAA4F;AAC5F,MAAM,YAAY,GAAG,4FAA4F,CAAC;AAElH,MAAM,SAAS,GAAG,MAAM,CAAC;AACzB,MAAM,MAAM,GAAG,EAAE,GAAG,EAAE,GAAG,SAAS,CAAC;AAInC,SAAS,UAAU,CAAC,IAAY;IAC9B,IAAI,CAAC;QACH,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QACrD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,IAAY;IAC7B,sFAAsF;IACtF,IAAI,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;IACjG,IAAI,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,IAAI,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;IAC3F,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAChC,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClD,IAAI,KAAK,GAAG,EAAE,IAAI,OAAO,GAAG,EAAE;YAAE,OAAO,IAAI,CAAC;QAC5C,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,IAAI,GAAG,CAAC,KAAK,GAAG,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;IACzE,CAAC;IACD,iFAAiF;IACjF,wCAAwC;IACxC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAChF,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,GAAG,IAAI,GAAG,EAA+B,CAAC;AAE1D,SAAS,YAAY,CAAC,IAAY;IAChC,IAAI,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC7B,IAAI,CAAC,CAAC,EAAE,CAAC;QACP,CAAC,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;YACnC,QAAQ,EAAE,IAAI;YACd,SAAS,EAAE,KAAK;YAChB,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,SAAS;YAChB,GAAG,EAAE,SAAS;YACd,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,SAAS;SAClB,CAAC,CAAC;QACH,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC1B,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,+DAA+D;AAC/D,SAAS,QAAQ,CAAC,SAAiB,EAAE,IAAY;IAC/C,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IACpE,MAAM,GAAG,GAAG,CAAC,IAAY,EAAU,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAE,CAAC,KAAK,CAAC,CAAC;IACtF,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC/F,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC,GAAG,SAAS,CAAC;IACpE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,aAAa,CAAC,GAAG,SAAS,CAAC,CAAC;AAC1D,CAAC;AAED,4EAA4E;AAC5E,SAAS,oBAAoB,CAAC,MAAc,EAAE,IAAY;IACxD,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,MAAM,EAAE,IAAI,CAAC,EAAE,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,QAAQ,CAAC,MAAM,GAAG,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IACpH,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IACnC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;QAC9C,IAAI,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,MAAM;YAAE,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACpE,CAAC;IACD,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC7C,CAAC;AAED,qEAAqE;AACrE,SAAS,WAAW,CAAC,SAAiB,EAAE,IAAU;IAChD,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAClG,OAAO,SAAS,GAAG,aAAa,GAAG,SAAS,CAAC;AAC/C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,GAAW,EAAE,WAA0B,IAAI;IACtE,MAAM,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;IACpC,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAEpB,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;IAClD,IAAI,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACrB,MAAM,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;IAE1B,IAAI,QAAQ,EAAE,CAAC;QACb,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,EAAE;YAAE,OAAO,IAAI,CAAC;QACvC,MAAM,EAAE,GAAG,QAAQ,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC;QAC3C,IAAI,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrC,CAAC;SAAM,IAAI,IAAI,GAAG,EAAE,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,MAAM,GAAG,EAAE;QAAE,OAAO,IAAI,CAAC;IAE7B,MAAM,QAAQ,GAAG,CAAC,KAAK,SAAS,CAAC;IACjC,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACvB,MAAM,KAAK,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;QACzB,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACtB,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;QACxC,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/B,IAAI,KAAK,CAAC,cAAc,EAAE,KAAK,IAAI,IAAI,KAAK,CAAC,WAAW,EAAE,KAAK,KAAK,GAAG,CAAC,IAAI,KAAK,CAAC,UAAU,EAAE,KAAK,GAAG;YAAE,OAAO,IAAI,CAAC;IACtH,CAAC;IAED,MAAM,KAAK,GAAkB,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACxG,MAAM,QAAQ,GAAG,QAAQ,IAAI,QAAQ,CAAC;IACtC,IAAI,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5B,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IACjC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,wFAAwF;QACxF,IAAI,QAAQ,IAAI,QAAQ,KAAK,SAAS,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC;YAAE,OAAO,IAAI,CAAC;QACpF,OAAO,EAAE,GAAG,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,CAAC;IACzD,CAAC;IAED,IAAI,QAAQ;QAAE,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC;IACnF,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,MAAM,CAAC,GAAG,SAAS,CAAC;IAEzD,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC1B,OAAO,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;IAChG,CAAC;IAED,MAAM,QAAQ,GAAG,oBAAoB,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACzD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,GAAG,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,CAAC;IACtF,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,EAAE,GAAG,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,CAAC;IAClF,OAAO,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;AACpE,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const DECISIONS_FILE_TEMPLATE = "# Pending owner decisions \u2014 all architects (hub: main)\n\nRule inline: one word on the line under an item's **Your word:** line, or in the Decisions tab.\nNewest first. Only main edits this file; architects send items with `afx send architect:main 'DECISION \u2026'`.\n\n_Status: 0 open._\n_Zone: UTC_\n\n## Open\n\n## Ruled\n";
2
+ //# sourceMappingURL=template.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../../../src/agent-farm/servers/decisions/template.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,uBAAuB,gVAWnC,CAAC"}