opentasks 0.0.3 → 0.0.5

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 (332) hide show
  1. package/README.md +58 -1
  2. package/dist/cli.d.ts +1 -0
  3. package/dist/cli.d.ts.map +1 -1
  4. package/dist/cli.js +111 -14
  5. package/dist/cli.js.map +1 -1
  6. package/dist/client/client.d.ts +20 -0
  7. package/dist/client/client.d.ts.map +1 -1
  8. package/dist/client/client.js +60 -6
  9. package/dist/client/client.js.map +1 -1
  10. package/dist/config/env.d.ts.map +1 -1
  11. package/dist/config/env.js +11 -0
  12. package/dist/config/env.js.map +1 -1
  13. package/dist/config/index.d.ts +1 -1
  14. package/dist/config/index.d.ts.map +1 -1
  15. package/dist/config/index.js.map +1 -1
  16. package/dist/config/schema.d.ts +161 -3
  17. package/dist/config/schema.d.ts.map +1 -1
  18. package/dist/config/schema.js +126 -2
  19. package/dist/config/schema.js.map +1 -1
  20. package/dist/core/discover.d.ts.map +1 -1
  21. package/dist/core/discover.js +55 -39
  22. package/dist/core/discover.js.map +1 -1
  23. package/dist/core/init.d.ts +17 -0
  24. package/dist/core/init.d.ts.map +1 -0
  25. package/dist/core/init.js +54 -0
  26. package/dist/core/init.js.map +1 -0
  27. package/dist/daemon/entire-linker.d.ts +3 -0
  28. package/dist/daemon/entire-linker.d.ts.map +1 -1
  29. package/dist/daemon/entire-linker.js +51 -18
  30. package/dist/daemon/entire-linker.js.map +1 -1
  31. package/dist/daemon/entire-watcher.d.ts +12 -1
  32. package/dist/daemon/entire-watcher.d.ts.map +1 -1
  33. package/dist/daemon/entire-watcher.js +34 -3
  34. package/dist/daemon/entire-watcher.js.map +1 -1
  35. package/dist/daemon/factory.d.ts +3 -0
  36. package/dist/daemon/factory.d.ts.map +1 -1
  37. package/dist/daemon/factory.js +2 -1
  38. package/dist/daemon/factory.js.map +1 -1
  39. package/dist/daemon/ipc.d.ts +9 -1
  40. package/dist/daemon/ipc.d.ts.map +1 -1
  41. package/dist/daemon/ipc.js +41 -1
  42. package/dist/daemon/ipc.js.map +1 -1
  43. package/dist/daemon/lifecycle.d.ts.map +1 -1
  44. package/dist/daemon/lifecycle.js +106 -7
  45. package/dist/daemon/lifecycle.js.map +1 -1
  46. package/dist/daemon/location-state.d.ts +5 -1
  47. package/dist/daemon/location-state.d.ts.map +1 -1
  48. package/dist/daemon/location-state.js +68 -6
  49. package/dist/daemon/location-state.js.map +1 -1
  50. package/dist/daemon/methods/tools.d.ts +11 -1
  51. package/dist/daemon/methods/tools.d.ts.map +1 -1
  52. package/dist/daemon/methods/tools.js +40 -6
  53. package/dist/daemon/methods/tools.js.map +1 -1
  54. package/dist/daemon/methods/watch.d.ts +23 -0
  55. package/dist/daemon/methods/watch.d.ts.map +1 -0
  56. package/dist/daemon/methods/watch.js +172 -0
  57. package/dist/daemon/methods/watch.js.map +1 -0
  58. package/dist/daemon/registry.d.ts.map +1 -1
  59. package/dist/daemon/registry.js +2 -1
  60. package/dist/daemon/registry.js.map +1 -1
  61. package/dist/entire/agent/agents/claude-code.d.ts +76 -0
  62. package/dist/entire/agent/agents/claude-code.d.ts.map +1 -0
  63. package/dist/entire/agent/agents/claude-code.js +759 -0
  64. package/dist/entire/agent/agents/claude-code.js.map +1 -0
  65. package/dist/entire/agent/agents/cursor.d.ts +35 -0
  66. package/dist/entire/agent/agents/cursor.d.ts.map +1 -0
  67. package/dist/entire/agent/agents/cursor.js +294 -0
  68. package/dist/entire/agent/agents/cursor.js.map +1 -0
  69. package/dist/entire/agent/agents/gemini-cli.d.ts +62 -0
  70. package/dist/entire/agent/agents/gemini-cli.d.ts.map +1 -0
  71. package/dist/entire/agent/agents/gemini-cli.js +462 -0
  72. package/dist/entire/agent/agents/gemini-cli.js.map +1 -0
  73. package/dist/entire/agent/agents/opencode.d.ts +100 -0
  74. package/dist/entire/agent/agents/opencode.d.ts.map +1 -0
  75. package/dist/entire/agent/agents/opencode.js +423 -0
  76. package/dist/entire/agent/agents/opencode.js.map +1 -0
  77. package/dist/entire/agent/registry.d.ts +54 -0
  78. package/dist/entire/agent/registry.d.ts.map +1 -0
  79. package/dist/entire/agent/registry.js +123 -0
  80. package/dist/entire/agent/registry.js.map +1 -0
  81. package/dist/entire/agent/session-types.d.ts +45 -0
  82. package/dist/entire/agent/session-types.d.ts.map +1 -0
  83. package/dist/entire/agent/session-types.js +50 -0
  84. package/dist/entire/agent/session-types.js.map +1 -0
  85. package/dist/entire/agent/types.d.ts +126 -0
  86. package/dist/entire/agent/types.d.ts.map +1 -0
  87. package/dist/entire/agent/types.js +39 -0
  88. package/dist/entire/agent/types.js.map +1 -0
  89. package/dist/entire/commands/clean.d.ts +30 -0
  90. package/dist/entire/commands/clean.d.ts.map +1 -0
  91. package/dist/entire/commands/clean.js +99 -0
  92. package/dist/entire/commands/clean.js.map +1 -0
  93. package/dist/entire/commands/disable.d.ts +23 -0
  94. package/dist/entire/commands/disable.d.ts.map +1 -0
  95. package/dist/entire/commands/disable.js +57 -0
  96. package/dist/entire/commands/disable.js.map +1 -0
  97. package/dist/entire/commands/doctor.d.ts +43 -0
  98. package/dist/entire/commands/doctor.d.ts.map +1 -0
  99. package/dist/entire/commands/doctor.js +97 -0
  100. package/dist/entire/commands/doctor.js.map +1 -0
  101. package/dist/entire/commands/enable.d.ts +29 -0
  102. package/dist/entire/commands/enable.d.ts.map +1 -0
  103. package/dist/entire/commands/enable.js +102 -0
  104. package/dist/entire/commands/enable.js.map +1 -0
  105. package/dist/entire/commands/explain.d.ts +68 -0
  106. package/dist/entire/commands/explain.d.ts.map +1 -0
  107. package/dist/entire/commands/explain.js +182 -0
  108. package/dist/entire/commands/explain.js.map +1 -0
  109. package/dist/entire/commands/reset.d.ts +23 -0
  110. package/dist/entire/commands/reset.d.ts.map +1 -0
  111. package/dist/entire/commands/reset.js +68 -0
  112. package/dist/entire/commands/reset.js.map +1 -0
  113. package/dist/entire/commands/resume.d.ts +42 -0
  114. package/dist/entire/commands/resume.d.ts.map +1 -0
  115. package/dist/entire/commands/resume.js +134 -0
  116. package/dist/entire/commands/resume.js.map +1 -0
  117. package/dist/entire/commands/rewind.d.ts +34 -0
  118. package/dist/entire/commands/rewind.d.ts.map +1 -0
  119. package/dist/entire/commands/rewind.js +155 -0
  120. package/dist/entire/commands/rewind.js.map +1 -0
  121. package/dist/entire/commands/status.d.ts +51 -0
  122. package/dist/entire/commands/status.d.ts.map +1 -0
  123. package/dist/entire/commands/status.js +94 -0
  124. package/dist/entire/commands/status.js.map +1 -0
  125. package/dist/entire/config.d.ts +40 -0
  126. package/dist/entire/config.d.ts.map +1 -0
  127. package/dist/entire/config.js +126 -0
  128. package/dist/entire/config.js.map +1 -0
  129. package/dist/entire/git-operations.d.ts +170 -0
  130. package/dist/entire/git-operations.d.ts.map +1 -0
  131. package/dist/entire/git-operations.js +395 -0
  132. package/dist/entire/git-operations.js.map +1 -0
  133. package/dist/entire/hooks/git-hooks.d.ts +22 -0
  134. package/dist/entire/hooks/git-hooks.d.ts.map +1 -0
  135. package/dist/entire/hooks/git-hooks.js +145 -0
  136. package/dist/entire/hooks/git-hooks.js.map +1 -0
  137. package/dist/entire/hooks/lifecycle.d.ts +21 -0
  138. package/dist/entire/hooks/lifecycle.d.ts.map +1 -0
  139. package/dist/entire/hooks/lifecycle.js +179 -0
  140. package/dist/entire/hooks/lifecycle.js.map +1 -0
  141. package/dist/entire/index.d.ts +69 -0
  142. package/dist/entire/index.d.ts.map +1 -0
  143. package/dist/entire/index.js +152 -0
  144. package/dist/entire/index.js.map +1 -0
  145. package/dist/entire/security/redaction.d.ts +35 -0
  146. package/dist/entire/security/redaction.d.ts.map +1 -0
  147. package/dist/entire/security/redaction.js +221 -0
  148. package/dist/entire/security/redaction.js.map +1 -0
  149. package/dist/entire/session/state-machine.d.ts +90 -0
  150. package/dist/entire/session/state-machine.d.ts.map +1 -0
  151. package/dist/entire/session/state-machine.js +347 -0
  152. package/dist/entire/session/state-machine.js.map +1 -0
  153. package/dist/entire/store/checkpoint-store.d.ts +47 -0
  154. package/dist/entire/store/checkpoint-store.d.ts.map +1 -0
  155. package/dist/entire/store/checkpoint-store.js +307 -0
  156. package/dist/entire/store/checkpoint-store.js.map +1 -0
  157. package/dist/entire/store/native-store.d.ts +14 -0
  158. package/dist/entire/store/native-store.d.ts.map +1 -0
  159. package/dist/entire/store/native-store.js +159 -0
  160. package/dist/entire/store/native-store.js.map +1 -0
  161. package/dist/entire/store/provider-types.d.ts +78 -0
  162. package/dist/entire/store/provider-types.d.ts.map +1 -0
  163. package/dist/entire/store/provider-types.js +12 -0
  164. package/dist/entire/store/provider-types.js.map +1 -0
  165. package/dist/entire/store/session-store.d.ts +28 -0
  166. package/dist/entire/store/session-store.d.ts.map +1 -0
  167. package/dist/entire/store/session-store.js +187 -0
  168. package/dist/entire/store/session-store.js.map +1 -0
  169. package/dist/entire/strategy/attribution.d.ts +39 -0
  170. package/dist/entire/strategy/attribution.d.ts.map +1 -0
  171. package/dist/entire/strategy/attribution.js +227 -0
  172. package/dist/entire/strategy/attribution.js.map +1 -0
  173. package/dist/entire/strategy/common.d.ts +57 -0
  174. package/dist/entire/strategy/common.d.ts.map +1 -0
  175. package/dist/entire/strategy/common.js +156 -0
  176. package/dist/entire/strategy/common.js.map +1 -0
  177. package/dist/entire/strategy/content-overlap.d.ts +33 -0
  178. package/dist/entire/strategy/content-overlap.d.ts.map +1 -0
  179. package/dist/entire/strategy/content-overlap.js +168 -0
  180. package/dist/entire/strategy/content-overlap.js.map +1 -0
  181. package/dist/entire/strategy/manual-commit.d.ts +31 -0
  182. package/dist/entire/strategy/manual-commit.d.ts.map +1 -0
  183. package/dist/entire/strategy/manual-commit.js +730 -0
  184. package/dist/entire/strategy/manual-commit.js.map +1 -0
  185. package/dist/entire/strategy/types.d.ts +163 -0
  186. package/dist/entire/strategy/types.d.ts.map +1 -0
  187. package/dist/entire/strategy/types.js +49 -0
  188. package/dist/entire/strategy/types.js.map +1 -0
  189. package/dist/entire/summarize/claude-generator.d.ts +25 -0
  190. package/dist/entire/summarize/claude-generator.d.ts.map +1 -0
  191. package/dist/entire/summarize/claude-generator.js +87 -0
  192. package/dist/entire/summarize/claude-generator.js.map +1 -0
  193. package/dist/entire/summarize/summarize.d.ts +52 -0
  194. package/dist/entire/summarize/summarize.d.ts.map +1 -0
  195. package/dist/entire/summarize/summarize.js +335 -0
  196. package/dist/entire/summarize/summarize.js.map +1 -0
  197. package/dist/entire/types.d.ts +288 -0
  198. package/dist/entire/types.d.ts.map +1 -0
  199. package/dist/entire/types.js +94 -0
  200. package/dist/entire/types.js.map +1 -0
  201. package/dist/entire/utils/chunk-files.d.ts +25 -0
  202. package/dist/entire/utils/chunk-files.d.ts.map +1 -0
  203. package/dist/entire/utils/chunk-files.js +47 -0
  204. package/dist/entire/utils/chunk-files.js.map +1 -0
  205. package/dist/entire/utils/commit-message.d.ts +11 -0
  206. package/dist/entire/utils/commit-message.d.ts.map +1 -0
  207. package/dist/entire/utils/commit-message.js +54 -0
  208. package/dist/entire/utils/commit-message.js.map +1 -0
  209. package/dist/entire/utils/detect-agent.d.ts +19 -0
  210. package/dist/entire/utils/detect-agent.d.ts.map +1 -0
  211. package/dist/entire/utils/detect-agent.js +34 -0
  212. package/dist/entire/utils/detect-agent.js.map +1 -0
  213. package/dist/entire/utils/hook-managers.d.ts +24 -0
  214. package/dist/entire/utils/hook-managers.d.ts.map +1 -0
  215. package/dist/entire/utils/hook-managers.js +87 -0
  216. package/dist/entire/utils/hook-managers.js.map +1 -0
  217. package/dist/entire/utils/ide-tags.d.ts +12 -0
  218. package/dist/entire/utils/ide-tags.d.ts.map +1 -0
  219. package/dist/entire/utils/ide-tags.js +30 -0
  220. package/dist/entire/utils/ide-tags.js.map +1 -0
  221. package/dist/entire/utils/paths.d.ts +32 -0
  222. package/dist/entire/utils/paths.d.ts.map +1 -0
  223. package/dist/entire/utils/paths.js +55 -0
  224. package/dist/entire/utils/paths.js.map +1 -0
  225. package/dist/entire/utils/preview-rewind.d.ts +23 -0
  226. package/dist/entire/utils/preview-rewind.d.ts.map +1 -0
  227. package/dist/entire/utils/preview-rewind.js +63 -0
  228. package/dist/entire/utils/preview-rewind.js.map +1 -0
  229. package/dist/entire/utils/rewind-conflict.d.ts +52 -0
  230. package/dist/entire/utils/rewind-conflict.d.ts.map +1 -0
  231. package/dist/entire/utils/rewind-conflict.js +79 -0
  232. package/dist/entire/utils/rewind-conflict.js.map +1 -0
  233. package/dist/entire/utils/shadow-branch.d.ts +44 -0
  234. package/dist/entire/utils/shadow-branch.d.ts.map +1 -0
  235. package/dist/entire/utils/shadow-branch.js +93 -0
  236. package/dist/entire/utils/shadow-branch.js.map +1 -0
  237. package/dist/entire/utils/string-utils.d.ts +24 -0
  238. package/dist/entire/utils/string-utils.d.ts.map +1 -0
  239. package/dist/entire/utils/string-utils.js +47 -0
  240. package/dist/entire/utils/string-utils.js.map +1 -0
  241. package/dist/entire/utils/todo-extract.d.ts +52 -0
  242. package/dist/entire/utils/todo-extract.d.ts.map +1 -0
  243. package/dist/entire/utils/todo-extract.js +167 -0
  244. package/dist/entire/utils/todo-extract.js.map +1 -0
  245. package/dist/entire/utils/trailers.d.ts +36 -0
  246. package/dist/entire/utils/trailers.d.ts.map +1 -0
  247. package/dist/entire/utils/trailers.js +149 -0
  248. package/dist/entire/utils/trailers.js.map +1 -0
  249. package/dist/entire/utils/transcript-parse.d.ts +57 -0
  250. package/dist/entire/utils/transcript-parse.d.ts.map +1 -0
  251. package/dist/entire/utils/transcript-parse.js +126 -0
  252. package/dist/entire/utils/transcript-parse.js.map +1 -0
  253. package/dist/entire/utils/transcript-timestamp.d.ts +22 -0
  254. package/dist/entire/utils/transcript-timestamp.d.ts.map +1 -0
  255. package/dist/entire/utils/transcript-timestamp.js +56 -0
  256. package/dist/entire/utils/transcript-timestamp.js.map +1 -0
  257. package/dist/entire/utils/tree-ops.d.ts +47 -0
  258. package/dist/entire/utils/tree-ops.d.ts.map +1 -0
  259. package/dist/entire/utils/tree-ops.js +145 -0
  260. package/dist/entire/utils/tree-ops.js.map +1 -0
  261. package/dist/entire/utils/tty.d.ts +25 -0
  262. package/dist/entire/utils/tty.d.ts.map +1 -0
  263. package/dist/entire/utils/tty.js +70 -0
  264. package/dist/entire/utils/tty.js.map +1 -0
  265. package/dist/entire/utils/validation.d.ts +31 -0
  266. package/dist/entire/utils/validation.d.ts.map +1 -0
  267. package/dist/entire/utils/validation.js +59 -0
  268. package/dist/entire/utils/validation.js.map +1 -0
  269. package/dist/entire/utils/worktree.d.ts +16 -0
  270. package/dist/entire/utils/worktree.d.ts.map +1 -0
  271. package/dist/entire/utils/worktree.js +50 -0
  272. package/dist/entire/utils/worktree.js.map +1 -0
  273. package/dist/graph/expansion.d.ts +3 -1
  274. package/dist/graph/expansion.d.ts.map +1 -1
  275. package/dist/graph/expansion.js +32 -2
  276. package/dist/graph/expansion.js.map +1 -1
  277. package/dist/graph/git-graph-syncer.d.ts +72 -0
  278. package/dist/graph/git-graph-syncer.d.ts.map +1 -0
  279. package/dist/graph/git-graph-syncer.js +205 -0
  280. package/dist/graph/git-graph-syncer.js.map +1 -0
  281. package/dist/graph/store.d.ts +4 -0
  282. package/dist/graph/store.d.ts.map +1 -1
  283. package/dist/graph/store.js +97 -2
  284. package/dist/graph/store.js.map +1 -1
  285. package/dist/index.d.ts +3 -0
  286. package/dist/index.d.ts.map +1 -1
  287. package/dist/index.js +6 -0
  288. package/dist/index.js.map +1 -1
  289. package/dist/providers/entire.d.ts +40 -50
  290. package/dist/providers/entire.d.ts.map +1 -1
  291. package/dist/providers/entire.js +74 -9
  292. package/dist/providers/entire.js.map +1 -1
  293. package/dist/providers/from-config.d.ts.map +1 -1
  294. package/dist/providers/from-config.js +39 -20
  295. package/dist/providers/from-config.js.map +1 -1
  296. package/dist/providers/global.d.ts +28 -0
  297. package/dist/providers/global.d.ts.map +1 -0
  298. package/dist/providers/global.js +293 -0
  299. package/dist/providers/global.js.map +1 -0
  300. package/dist/providers/index.d.ts +2 -1
  301. package/dist/providers/index.d.ts.map +1 -1
  302. package/dist/providers/index.js +3 -1
  303. package/dist/providers/index.js.map +1 -1
  304. package/dist/schema/edges.d.ts +5 -1
  305. package/dist/schema/edges.d.ts.map +1 -1
  306. package/dist/schema/index.d.ts +1 -1
  307. package/dist/schema/index.d.ts.map +1 -1
  308. package/dist/tracking/claude-task-reconstructor.d.ts +41 -0
  309. package/dist/tracking/claude-task-reconstructor.d.ts.map +1 -0
  310. package/dist/tracking/claude-task-reconstructor.js +91 -0
  311. package/dist/tracking/claude-task-reconstructor.js.map +1 -0
  312. package/dist/tracking/claude-tool-categorizer.d.ts +30 -0
  313. package/dist/tracking/claude-tool-categorizer.d.ts.map +1 -0
  314. package/dist/tracking/claude-tool-categorizer.js +98 -0
  315. package/dist/tracking/claude-tool-categorizer.js.map +1 -0
  316. package/dist/tracking/index.d.ts +15 -0
  317. package/dist/tracking/index.d.ts.map +1 -0
  318. package/dist/tracking/index.js +12 -0
  319. package/dist/tracking/index.js.map +1 -0
  320. package/dist/tracking/plan-mode-tracker.d.ts +20 -0
  321. package/dist/tracking/plan-mode-tracker.d.ts.map +1 -0
  322. package/dist/tracking/plan-mode-tracker.js +35 -0
  323. package/dist/tracking/plan-mode-tracker.js.map +1 -0
  324. package/dist/tracking/skill-tracker.d.ts +133 -0
  325. package/dist/tracking/skill-tracker.d.ts.map +1 -0
  326. package/dist/tracking/skill-tracker.js +130 -0
  327. package/dist/tracking/skill-tracker.js.map +1 -0
  328. package/dist/tracking/transcript-extractor.d.ts +39 -0
  329. package/dist/tracking/transcript-extractor.d.ts.map +1 -0
  330. package/dist/tracking/transcript-extractor.js +165 -0
  331. package/dist/tracking/transcript-extractor.js.map +1 -0
  332. package/package.json +4 -1
@@ -0,0 +1,130 @@
1
+ /**
2
+ * Skill Tracker
3
+ *
4
+ * Tracks which agent skills (tools) are used during a session/trajectory.
5
+ * Provides types and a tracker implementation for recording skill invocations,
6
+ * aggregating usage statistics, and surfacing them in session metadata.
7
+ *
8
+ * This enables answering: "What skills did the agent use during this trajectory?"
9
+ */
10
+ // ============================================================================
11
+ // Implementation
12
+ // ============================================================================
13
+ /**
14
+ * Create a SkillTracker for recording skill usage during a session
15
+ */
16
+ export function createSkillTracker(options) {
17
+ const { sessionId, agentId, maxInvocations = 1000 } = options;
18
+ let invocations = [];
19
+ const startedAt = new Date().toISOString();
20
+ return {
21
+ get sessionId() {
22
+ return sessionId;
23
+ },
24
+ record(partial) {
25
+ const invocation = {
26
+ ...partial,
27
+ timestamp: new Date().toISOString(),
28
+ agentId,
29
+ sessionId,
30
+ };
31
+ invocations.push(invocation);
32
+ // Trim if over limit (keep most recent)
33
+ if (invocations.length > maxInvocations) {
34
+ invocations = invocations.slice(-maxInvocations);
35
+ }
36
+ },
37
+ getInvocations() {
38
+ return [...invocations];
39
+ },
40
+ getSkillInvocations(skill) {
41
+ return invocations.filter((i) => i.skill === skill);
42
+ },
43
+ getSkillsUsed() {
44
+ return [...new Set(invocations.map((i) => i.skill))];
45
+ },
46
+ getStats() {
47
+ const bySkill = new Map();
48
+ for (const inv of invocations) {
49
+ const existing = bySkill.get(inv.skill) ?? [];
50
+ existing.push(inv);
51
+ bySkill.set(inv.skill, existing);
52
+ }
53
+ const stats = [];
54
+ for (const [skill, skillInvocations] of bySkill) {
55
+ const successCount = skillInvocations.filter((i) => i.success).length;
56
+ const failureCount = skillInvocations.length - successCount;
57
+ const durations = skillInvocations
58
+ .map((i) => i.durationMs)
59
+ .filter((d) => d !== undefined);
60
+ const avgDurationMs = durations.length > 0
61
+ ? Math.round(durations.reduce((a, b) => a + b, 0) / durations.length)
62
+ : undefined;
63
+ const operations = [
64
+ ...new Set(skillInvocations
65
+ .map((i) => i.operation)
66
+ .filter((op) => op !== undefined)),
67
+ ];
68
+ stats.push({
69
+ skill,
70
+ count: skillInvocations.length,
71
+ successCount,
72
+ failureCount,
73
+ firstUsedAt: skillInvocations[0].timestamp,
74
+ lastUsedAt: skillInvocations[skillInvocations.length - 1].timestamp,
75
+ avgDurationMs,
76
+ operations,
77
+ });
78
+ }
79
+ return stats;
80
+ },
81
+ getSummary() {
82
+ return {
83
+ sessionId,
84
+ totalInvocations: invocations.length,
85
+ skillsUsed: this.getSkillsUsed(),
86
+ stats: this.getStats(),
87
+ invocations: this.getInvocations(),
88
+ startedAt,
89
+ updatedAt: new Date().toISOString(),
90
+ };
91
+ },
92
+ reset() {
93
+ invocations = [];
94
+ },
95
+ };
96
+ }
97
+ /**
98
+ * Create a SkillTrackerRegistry for managing per-session trackers
99
+ */
100
+ export function createSkillTrackerRegistry() {
101
+ const trackers = new Map();
102
+ return {
103
+ get size() {
104
+ return trackers.size;
105
+ },
106
+ getOrCreate(sessionId, agentId) {
107
+ let tracker = trackers.get(sessionId);
108
+ if (!tracker) {
109
+ tracker = createSkillTracker({ sessionId, agentId });
110
+ trackers.set(sessionId, tracker);
111
+ }
112
+ return tracker;
113
+ },
114
+ get(sessionId) {
115
+ return trackers.get(sessionId) ?? null;
116
+ },
117
+ remove(sessionId) {
118
+ const tracker = trackers.get(sessionId);
119
+ if (!tracker)
120
+ return null;
121
+ const summary = tracker.getSummary();
122
+ trackers.delete(sessionId);
123
+ return summary;
124
+ },
125
+ getAllSummaries() {
126
+ return Array.from(trackers.values()).map((t) => t.getSummary());
127
+ },
128
+ };
129
+ }
130
+ //# sourceMappingURL=skill-tracker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-tracker.js","sourceRoot":"","sources":["../../src/tracking/skill-tracker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Transcript Extractor Orchestrator
3
+ *
4
+ * Fetches Entire session transcripts, dispatches to the correct parser,
5
+ * runs categorization/reconstruction/plan-mode tracking, and backfills
6
+ * the SkillTrackerRegistry before session finalization.
7
+ *
8
+ * Best-effort: errors are caught and logged, never blocking the linker.
9
+ */
10
+ import type { AgentType, TokenUsage } from 'agent-session-parser';
11
+ import { type ExtractedToolCall, type ToolCategory } from './claude-tool-categorizer.js';
12
+ import type { SkillTrackerRegistry } from './skill-tracker.js';
13
+ import type { EntireSessionEvent } from '../daemon/entire-watcher.js';
14
+ export interface TranscriptExtractorConfig {
15
+ /** Skill tracker registry for backfilling tool usage */
16
+ skillTrackerRegistry?: SkillTrackerRegistry;
17
+ /** Git repo path to resolve transcript from (defaults to cwd) */
18
+ repoPath?: string;
19
+ /** Override git command execution (for testing) */
20
+ execGit?: (args: string) => string;
21
+ }
22
+ export interface TranscriptExtractionResult {
23
+ sessionId: string;
24
+ agentType: AgentType | 'unknown';
25
+ /** All extracted tool calls, chronological */
26
+ toolCalls: ExtractedToolCall[];
27
+ /** Tool call counts by category */
28
+ toolCategories: Record<ToolCategory, number>;
29
+ /** Token usage (from agent-session-parser) */
30
+ tokenUsage?: TokenUsage;
31
+ /** Spawned subagent IDs (agentId → toolUseId) */
32
+ subagentIds?: Record<string, string>;
33
+ }
34
+ export interface TranscriptExtractor {
35
+ /** Extract tool usage from a session's transcript on session end */
36
+ extract(event: EntireSessionEvent): Promise<TranscriptExtractionResult | null>;
37
+ }
38
+ export declare function createTranscriptExtractor(config: TranscriptExtractorConfig): TranscriptExtractor;
39
+ //# sourceMappingURL=transcript-extractor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transcript-extractor.d.ts","sourceRoot":"","sources":["../../src/tracking/transcript-extractor.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAoB,KAAK,iBAAiB,EAAE,KAAK,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC3G,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAMtE,MAAM,WAAW,yBAAyB;IACxC,wDAAwD;IACxD,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAE5C,iEAAiE;IACjE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,mDAAmD;IACnD,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;CACpC;AAED,MAAM,WAAW,0BAA0B;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,SAAS,GAAG,SAAS,CAAC;IAEjC,8CAA8C;IAC9C,SAAS,EAAE,iBAAiB,EAAE,CAAC;IAE/B,mCAAmC;IACnC,cAAc,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IAE7C,8CAA8C;IAC9C,UAAU,CAAC,EAAE,UAAU,CAAC;IAExB,iDAAiD;IACjD,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,mBAAmB;IAClC,oEAAoE;IACpE,OAAO,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,0BAA0B,GAAG,IAAI,CAAC,CAAC;CAChF;AAiED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,yBAAyB,GAAG,mBAAmB,CAmFhG"}
@@ -0,0 +1,165 @@
1
+ /**
2
+ * Transcript Extractor Orchestrator
3
+ *
4
+ * Fetches Entire session transcripts, dispatches to the correct parser,
5
+ * runs categorization/reconstruction/plan-mode tracking, and backfills
6
+ * the SkillTrackerRegistry before session finalization.
7
+ *
8
+ * Best-effort: errors are caught and logged, never blocking the linker.
9
+ */
10
+ import { execSync } from 'node:child_process';
11
+ import { claude, detectAgentTypeFromContent } from 'agent-session-parser';
12
+ import { extractToolCalls } from './claude-tool-categorizer.js';
13
+ // ============================================================================
14
+ // Helpers
15
+ // ============================================================================
16
+ function defaultExecGit(args, repoPath) {
17
+ const opts = repoPath ? { cwd: repoPath } : {};
18
+ return execSync(`git ${args}`, { ...opts, encoding: 'utf-8', timeout: 10000 });
19
+ }
20
+ function countByCategory(toolCalls) {
21
+ const counts = {
22
+ 'claude-native': 0,
23
+ 'mcp-sudocode': 0,
24
+ 'mcp-other': 0,
25
+ 'unknown': 0,
26
+ };
27
+ for (const call of toolCalls) {
28
+ counts[call.category]++;
29
+ }
30
+ return counts;
31
+ }
32
+ /**
33
+ * Fetch transcript and metadata from git for a checkpoint.
34
+ *
35
+ * Path format: sessionlog/checkpoints/v1:<shard>/<rest>/1/full.jsonl
36
+ * where shard = id.slice(0, 2), rest = id.slice(2)
37
+ */
38
+ function fetchTranscriptFromGit(checkpointId, execGit) {
39
+ const shard = checkpointId.slice(0, 2);
40
+ const rest = checkpointId.slice(2);
41
+ const basePath = `${shard}/${rest}/1`;
42
+ try {
43
+ const metadataRaw = execGit(`show sessionlog/checkpoints/v1:${basePath}/metadata.json`);
44
+ const transcript = execGit(`show sessionlog/checkpoints/v1:${basePath}/full.jsonl`);
45
+ const metadata = JSON.parse(metadataRaw);
46
+ return { transcript, metadata };
47
+ }
48
+ catch {
49
+ return null;
50
+ }
51
+ }
52
+ function resolveAgentType(metadata, transcript) {
53
+ const metaAgent = metadata.agent;
54
+ if (metaAgent === 'Claude Code')
55
+ return 'Claude Code';
56
+ if (metaAgent === 'Gemini CLI')
57
+ return 'Gemini CLI';
58
+ // Fallback: auto-detect from content
59
+ const detected = detectAgentTypeFromContent(transcript);
60
+ return detected ?? 'unknown';
61
+ }
62
+ // ============================================================================
63
+ // Implementation
64
+ // ============================================================================
65
+ export function createTranscriptExtractor(config) {
66
+ const { skillTrackerRegistry, repoPath } = config;
67
+ const execGit = config.execGit ?? ((args) => defaultExecGit(args, repoPath));
68
+ return {
69
+ async extract(event) {
70
+ if (event.type !== 'ended')
71
+ return null;
72
+ const { sessionId, session } = event;
73
+ const checkpoints = session.checkpoints;
74
+ if (!checkpoints || checkpoints.length === 0)
75
+ return null;
76
+ // Use the last checkpoint (most complete transcript)
77
+ const lastCheckpointId = checkpoints[checkpoints.length - 1];
78
+ const fetched = fetchTranscriptFromGit(lastCheckpointId, execGit);
79
+ if (!fetched)
80
+ return null;
81
+ const { transcript, metadata } = fetched;
82
+ const agentType = resolveAgentType(metadata, transcript);
83
+ // Only Claude Code extraction is supported in v1
84
+ if (agentType !== 'Claude Code') {
85
+ return {
86
+ sessionId,
87
+ agentType,
88
+ toolCalls: [],
89
+ toolCategories: countByCategory([]),
90
+ };
91
+ }
92
+ // Parse transcript
93
+ const lines = claude.parseFromString(transcript);
94
+ // Extract tool calls
95
+ const toolCalls = extractToolCalls(lines);
96
+ const toolCategories = countByCategory(toolCalls);
97
+ // Token usage
98
+ let tokenUsage;
99
+ try {
100
+ tokenUsage = claude.calculateTokenUsage(lines);
101
+ }
102
+ catch {
103
+ // Token calculation is best-effort
104
+ }
105
+ // Spawned subagent IDs
106
+ let subagentIds;
107
+ try {
108
+ const subagentMap = claude.extractSpawnedAgentIds(lines);
109
+ if (subagentMap.size > 0) {
110
+ subagentIds = Object.fromEntries(subagentMap);
111
+ }
112
+ }
113
+ catch {
114
+ // Best-effort
115
+ }
116
+ const result = {
117
+ sessionId,
118
+ agentType,
119
+ toolCalls,
120
+ toolCategories,
121
+ tokenUsage,
122
+ subagentIds,
123
+ };
124
+ // Backfill SkillTracker
125
+ if (skillTrackerRegistry) {
126
+ const tracker = skillTrackerRegistry.getOrCreate(sessionId);
127
+ for (const call of toolCalls) {
128
+ tracker.record({
129
+ skill: call.toolName,
130
+ success: call.success,
131
+ operation: call.category,
132
+ targets: extractTargets(call),
133
+ });
134
+ }
135
+ }
136
+ return result;
137
+ },
138
+ };
139
+ }
140
+ /**
141
+ * Extract meaningful target IDs from a tool call for SkillTracker recording.
142
+ */
143
+ function extractTargets(call) {
144
+ const targets = [];
145
+ // MCP sudocode: extract spec/issue IDs
146
+ if (call.category === 'mcp-sudocode') {
147
+ const input = call.input;
148
+ if (typeof input.spec_id === 'string')
149
+ targets.push(input.spec_id);
150
+ if (typeof input.issue_id === 'string')
151
+ targets.push(input.issue_id);
152
+ if (typeof input.from_id === 'string')
153
+ targets.push(input.from_id);
154
+ if (typeof input.to_id === 'string')
155
+ targets.push(input.to_id);
156
+ }
157
+ // Claude native: extract task IDs
158
+ if (call.category === 'claude-native') {
159
+ const input = call.input;
160
+ if (typeof input.taskId === 'string')
161
+ targets.push(input.taskId);
162
+ }
163
+ return targets.length > 0 ? targets : undefined;
164
+ }
165
+ //# sourceMappingURL=transcript-extractor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transcript-extractor.js","sourceRoot":"","sources":["../../src/tracking/transcript-extractor.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "opentasks",
3
- "version": "0.0.3",
3
+ "version": "0.0.5",
4
4
  "description": "Universal task graph data structure",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -50,6 +50,7 @@
50
50
  "@types/better-sqlite3": "^7.6.13",
51
51
  "@types/node": "^25.0.10",
52
52
  "@types/proper-lockfile": "^4.1.4",
53
+ "acp-factory": "^0.1.12",
53
54
  "eslint": "^9.39.2",
54
55
  "eslint-config-prettier": "^10.1.8",
55
56
  "husky": "^9.1.7",
@@ -67,12 +68,14 @@
67
68
  "url": "git+https://github.com/alexngai/opentasks.git"
68
69
  },
69
70
  "dependencies": {
71
+ "agent-session-parser": "^0.1.0",
70
72
  "better-sqlite3": "^12.6.2",
71
73
  "chokidar": "^5.0.0",
72
74
  "graphology": "^0.26.0",
73
75
  "graphology-shortest-path": "^2.1.0",
74
76
  "graphology-traversal": "^0.3.1",
75
77
  "proper-lockfile": "^4.1.2",
78
+ "sessionlog": "^0.0.5",
76
79
  "zod": "^4.3.6"
77
80
  }
78
81
  }