opentasks 0.1.3 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (273) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +174 -49
  3. package/dist/cli.d.ts +20 -0
  4. package/dist/cli.d.ts.map +1 -1
  5. package/dist/cli.js +451 -15
  6. package/dist/cli.js.map +1 -1
  7. package/dist/client/client.d.ts +54 -0
  8. package/dist/client/client.d.ts.map +1 -1
  9. package/dist/client/client.js +148 -4
  10. package/dist/client/client.js.map +1 -1
  11. package/dist/client/index.d.ts +1 -1
  12. package/dist/client/index.d.ts.map +1 -1
  13. package/dist/client/index.js +1 -1
  14. package/dist/client/index.js.map +1 -1
  15. package/dist/core/discover.d.ts.map +1 -1
  16. package/dist/core/discover.js +7 -2
  17. package/dist/core/discover.js.map +1 -1
  18. package/dist/core/hash.d.ts.map +1 -1
  19. package/dist/core/hash.js +7 -0
  20. package/dist/core/hash.js.map +1 -1
  21. package/dist/core/id.d.ts +1 -1
  22. package/dist/core/id.d.ts.map +1 -1
  23. package/dist/core/id.js +2 -0
  24. package/dist/core/id.js.map +1 -1
  25. package/dist/core/worktree.js +4 -4
  26. package/dist/core/worktree.js.map +1 -1
  27. package/dist/daemon/events.d.ts +82 -0
  28. package/dist/daemon/events.d.ts.map +1 -0
  29. package/dist/daemon/events.js +71 -0
  30. package/dist/daemon/events.js.map +1 -0
  31. package/dist/daemon/flush.d.ts.map +1 -1
  32. package/dist/daemon/flush.js +12 -2
  33. package/dist/daemon/flush.js.map +1 -1
  34. package/dist/daemon/health-counters.d.ts +38 -0
  35. package/dist/daemon/health-counters.d.ts.map +1 -0
  36. package/dist/daemon/health-counters.js +42 -0
  37. package/dist/daemon/health-counters.js.map +1 -0
  38. package/dist/daemon/idempotency.d.ts +50 -0
  39. package/dist/daemon/idempotency.d.ts.map +1 -0
  40. package/dist/daemon/idempotency.js +104 -0
  41. package/dist/daemon/idempotency.js.map +1 -0
  42. package/dist/daemon/ipc.d.ts +32 -2
  43. package/dist/daemon/ipc.d.ts.map +1 -1
  44. package/dist/daemon/ipc.js +54 -3
  45. package/dist/daemon/ipc.js.map +1 -1
  46. package/dist/daemon/lifecycle.d.ts.map +1 -1
  47. package/dist/daemon/lifecycle.js +145 -9
  48. package/dist/daemon/lifecycle.js.map +1 -1
  49. package/dist/daemon/location-state.d.ts +60 -1
  50. package/dist/daemon/location-state.d.ts.map +1 -1
  51. package/dist/daemon/location-state.js +136 -31
  52. package/dist/daemon/location-state.js.map +1 -1
  53. package/dist/daemon/methods/context-files.d.ts.map +1 -1
  54. package/dist/daemon/methods/context-files.js +4 -3
  55. package/dist/daemon/methods/context-files.js.map +1 -1
  56. package/dist/daemon/methods/events.d.ts +22 -0
  57. package/dist/daemon/methods/events.d.ts.map +1 -0
  58. package/dist/daemon/methods/events.js +30 -0
  59. package/dist/daemon/methods/events.js.map +1 -0
  60. package/dist/daemon/methods/graph.d.ts +7 -0
  61. package/dist/daemon/methods/graph.d.ts.map +1 -1
  62. package/dist/daemon/methods/graph.js +24 -14
  63. package/dist/daemon/methods/graph.js.map +1 -1
  64. package/dist/daemon/methods/lifecycle.d.ts +16 -0
  65. package/dist/daemon/methods/lifecycle.d.ts.map +1 -1
  66. package/dist/daemon/methods/lifecycle.js +3 -1
  67. package/dist/daemon/methods/lifecycle.js.map +1 -1
  68. package/dist/daemon/methods/location.js.map +1 -1
  69. package/dist/daemon/methods/sync.d.ts +48 -2
  70. package/dist/daemon/methods/sync.d.ts.map +1 -1
  71. package/dist/daemon/methods/sync.js +106 -3
  72. package/dist/daemon/methods/sync.js.map +1 -1
  73. package/dist/daemon/methods/tools.d.ts.map +1 -1
  74. package/dist/daemon/methods/tools.js +42 -8
  75. package/dist/daemon/methods/tools.js.map +1 -1
  76. package/dist/daemon/methods/watch.d.ts +24 -0
  77. package/dist/daemon/methods/watch.d.ts.map +1 -1
  78. package/dist/daemon/methods/watch.js +178 -88
  79. package/dist/daemon/methods/watch.js.map +1 -1
  80. package/dist/graph/EdgeTypeRegistry.d.ts.map +1 -1
  81. package/dist/graph/EdgeTypeRegistry.js +32 -0
  82. package/dist/graph/EdgeTypeRegistry.js.map +1 -1
  83. package/dist/graph/FederatedGraph.d.ts.map +1 -1
  84. package/dist/graph/GraphologyAdapter.d.ts.map +1 -1
  85. package/dist/graph/GraphologyAdapter.js.map +1 -1
  86. package/dist/graph/HydratingFederatedGraph.d.ts.map +1 -1
  87. package/dist/graph/HydratingFederatedGraph.js +1 -1
  88. package/dist/graph/HydratingFederatedGraph.js.map +1 -1
  89. package/dist/graph/attempts.d.ts +50 -0
  90. package/dist/graph/attempts.d.ts.map +1 -0
  91. package/dist/graph/attempts.js +51 -0
  92. package/dist/graph/attempts.js.map +1 -0
  93. package/dist/graph/coordination.d.ts +4 -2
  94. package/dist/graph/coordination.d.ts.map +1 -1
  95. package/dist/graph/coordination.js +77 -85
  96. package/dist/graph/coordination.js.map +1 -1
  97. package/dist/graph/expansion.d.ts.map +1 -1
  98. package/dist/graph/expansion.js +1 -1
  99. package/dist/graph/expansion.js.map +1 -1
  100. package/dist/graph/git-graph-syncer.d.ts +24 -0
  101. package/dist/graph/git-graph-syncer.d.ts.map +1 -1
  102. package/dist/graph/git-graph-syncer.js +95 -28
  103. package/dist/graph/git-graph-syncer.js.map +1 -1
  104. package/dist/graph/provider-store.d.ts +12 -1
  105. package/dist/graph/provider-store.d.ts.map +1 -1
  106. package/dist/graph/provider-store.js +35 -8
  107. package/dist/graph/provider-store.js.map +1 -1
  108. package/dist/graph/query.d.ts.map +1 -1
  109. package/dist/graph/query.js +18 -2
  110. package/dist/graph/query.js.map +1 -1
  111. package/dist/graph/store.d.ts +18 -2
  112. package/dist/graph/store.d.ts.map +1 -1
  113. package/dist/graph/store.js +43 -0
  114. package/dist/graph/store.js.map +1 -1
  115. package/dist/graph/sync.js +1 -1
  116. package/dist/graph/sync.js.map +1 -1
  117. package/dist/graph/types.d.ts +9 -1
  118. package/dist/graph/types.d.ts.map +1 -1
  119. package/dist/graph/types.js.map +1 -1
  120. package/dist/graph/validation.d.ts.map +1 -1
  121. package/dist/graph/validation.js +20 -2
  122. package/dist/graph/validation.js.map +1 -1
  123. package/dist/index.d.ts +2 -0
  124. package/dist/index.d.ts.map +1 -1
  125. package/dist/index.js +4 -0
  126. package/dist/index.js.map +1 -1
  127. package/dist/materialization/archiver.d.ts.map +1 -1
  128. package/dist/materialization/archiver.js.map +1 -1
  129. package/dist/materialization/snapshot.d.ts.map +1 -1
  130. package/dist/materialization/snapshot.js +1 -1
  131. package/dist/materialization/snapshot.js.map +1 -1
  132. package/dist/materialization/types.d.ts +7 -5
  133. package/dist/materialization/types.d.ts.map +1 -1
  134. package/dist/materialization/types.js.map +1 -1
  135. package/dist/mcp/server.d.ts +2 -1
  136. package/dist/mcp/server.d.ts.map +1 -1
  137. package/dist/mcp/server.js +308 -11
  138. package/dist/mcp/server.js.map +1 -1
  139. package/dist/providers/beads.d.ts.map +1 -1
  140. package/dist/providers/beads.js +2 -0
  141. package/dist/providers/beads.js.map +1 -1
  142. package/dist/providers/claude-tasks.d.ts.map +1 -1
  143. package/dist/providers/claude-tasks.js.map +1 -1
  144. package/dist/providers/global.js +1 -1
  145. package/dist/providers/global.js.map +1 -1
  146. package/dist/providers/location.d.ts.map +1 -1
  147. package/dist/providers/location.js.map +1 -1
  148. package/dist/providers/map-client-factory.d.ts.map +1 -1
  149. package/dist/providers/map-client-factory.js +1 -1
  150. package/dist/providers/map-client-factory.js.map +1 -1
  151. package/dist/providers/map-connector.js +1 -1
  152. package/dist/providers/map-connector.js.map +1 -1
  153. package/dist/providers/map-event-bridge.d.ts.map +1 -1
  154. package/dist/providers/map-event-bridge.js +1 -0
  155. package/dist/providers/map-event-bridge.js.map +1 -1
  156. package/dist/providers/map.d.ts.map +1 -1
  157. package/dist/providers/map.js +5 -2
  158. package/dist/providers/map.js.map +1 -1
  159. package/dist/providers/native.d.ts.map +1 -1
  160. package/dist/providers/native.js +21 -8
  161. package/dist/providers/native.js.map +1 -1
  162. package/dist/providers/registry.js +1 -1
  163. package/dist/providers/registry.js.map +1 -1
  164. package/dist/providers/sudocode.d.ts.map +1 -1
  165. package/dist/providers/sudocode.js +5 -11
  166. package/dist/providers/sudocode.js.map +1 -1
  167. package/dist/providers/traits/Reconcilable.d.ts.map +1 -1
  168. package/dist/providers/traits/TaskManageable.d.ts +15 -1
  169. package/dist/providers/traits/TaskManageable.d.ts.map +1 -1
  170. package/dist/providers/traits/TaskManageable.js +26 -0
  171. package/dist/providers/traits/TaskManageable.js.map +1 -1
  172. package/dist/providers/traits/Watchable.d.ts +6 -0
  173. package/dist/providers/traits/Watchable.d.ts.map +1 -1
  174. package/dist/providers/traits/Watchable.js.map +1 -1
  175. package/dist/providers/types.d.ts +1 -1
  176. package/dist/providers/types.d.ts.map +1 -1
  177. package/dist/schema/edges.d.ts +5 -1
  178. package/dist/schema/edges.d.ts.map +1 -1
  179. package/dist/schema/index.d.ts +2 -2
  180. package/dist/schema/index.d.ts.map +1 -1
  181. package/dist/schema/index.js +1 -1
  182. package/dist/schema/index.js.map +1 -1
  183. package/dist/schema/nodes.d.ts +55 -2
  184. package/dist/schema/nodes.d.ts.map +1 -1
  185. package/dist/schema/storage.d.ts +2 -0
  186. package/dist/schema/storage.d.ts.map +1 -1
  187. package/dist/schema/validation.d.ts +6 -2
  188. package/dist/schema/validation.d.ts.map +1 -1
  189. package/dist/schema/validation.js +18 -1
  190. package/dist/schema/validation.js.map +1 -1
  191. package/dist/sessionlog/agent/registry.js.map +1 -1
  192. package/dist/sessionlog/agent/session-types.d.ts.map +1 -1
  193. package/dist/sessionlog/agent/types.d.ts.map +1 -1
  194. package/dist/sessionlog/commands/clean.js +1 -1
  195. package/dist/sessionlog/commands/clean.js.map +1 -1
  196. package/dist/sessionlog/commands/disable.d.ts.map +1 -1
  197. package/dist/sessionlog/commands/disable.js.map +1 -1
  198. package/dist/sessionlog/commands/doctor.js +1 -1
  199. package/dist/sessionlog/commands/doctor.js.map +1 -1
  200. package/dist/sessionlog/commands/enable.js +1 -1
  201. package/dist/sessionlog/commands/enable.js.map +1 -1
  202. package/dist/sessionlog/commands/resume.js +1 -1
  203. package/dist/sessionlog/commands/resume.js.map +1 -1
  204. package/dist/sessionlog/commands/rewind.d.ts.map +1 -1
  205. package/dist/sessionlog/commands/rewind.js +1 -1
  206. package/dist/sessionlog/commands/rewind.js.map +1 -1
  207. package/dist/sessionlog/commands/status.d.ts.map +1 -1
  208. package/dist/sessionlog/commands/status.js.map +1 -1
  209. package/dist/sessionlog/hooks/lifecycle.d.ts.map +1 -1
  210. package/dist/sessionlog/hooks/lifecycle.js +3 -3
  211. package/dist/sessionlog/hooks/lifecycle.js.map +1 -1
  212. package/dist/sessionlog/security/redaction.js +1 -1
  213. package/dist/sessionlog/security/redaction.js.map +1 -1
  214. package/dist/sessionlog/store/checkpoint-store.d.ts.map +1 -1
  215. package/dist/sessionlog/store/checkpoint-store.js +2 -2
  216. package/dist/sessionlog/store/checkpoint-store.js.map +1 -1
  217. package/dist/sessionlog/store/native-store.d.ts.map +1 -1
  218. package/dist/sessionlog/store/native-store.js.map +1 -1
  219. package/dist/sessionlog/store/session-store.d.ts.map +1 -1
  220. package/dist/sessionlog/store/session-store.js +1 -1
  221. package/dist/sessionlog/store/session-store.js.map +1 -1
  222. package/dist/sessionlog/strategy/attribution.js +2 -2
  223. package/dist/sessionlog/strategy/attribution.js.map +1 -1
  224. package/dist/sessionlog/strategy/common.d.ts +1 -1
  225. package/dist/sessionlog/strategy/common.d.ts.map +1 -1
  226. package/dist/sessionlog/strategy/common.js +3 -3
  227. package/dist/sessionlog/strategy/common.js.map +1 -1
  228. package/dist/sessionlog/strategy/content-overlap.d.ts.map +1 -1
  229. package/dist/sessionlog/strategy/content-overlap.js +1 -1
  230. package/dist/sessionlog/strategy/content-overlap.js.map +1 -1
  231. package/dist/sessionlog/strategy/manual-commit.d.ts.map +1 -1
  232. package/dist/sessionlog/strategy/manual-commit.js +6 -16
  233. package/dist/sessionlog/strategy/manual-commit.js.map +1 -1
  234. package/dist/sessionlog/utils/preview-rewind.d.ts.map +1 -1
  235. package/dist/sessionlog/utils/preview-rewind.js +1 -1
  236. package/dist/sessionlog/utils/preview-rewind.js.map +1 -1
  237. package/dist/sessionlog/utils/trailers.d.ts.map +1 -1
  238. package/dist/sessionlog/utils/trailers.js +0 -1
  239. package/dist/sessionlog/utils/trailers.js.map +1 -1
  240. package/dist/storage/interface.d.ts +64 -0
  241. package/dist/storage/interface.d.ts.map +1 -1
  242. package/dist/storage/interface.js.map +1 -1
  243. package/dist/storage/jsonl.js +2 -2
  244. package/dist/storage/jsonl.js.map +1 -1
  245. package/dist/storage/sqlite-schema.d.ts +8 -2
  246. package/dist/storage/sqlite-schema.d.ts.map +1 -1
  247. package/dist/storage/sqlite-schema.js +10 -1
  248. package/dist/storage/sqlite-schema.js.map +1 -1
  249. package/dist/storage/sqlite.d.ts +16 -1
  250. package/dist/storage/sqlite.d.ts.map +1 -1
  251. package/dist/storage/sqlite.js +134 -2
  252. package/dist/storage/sqlite.js.map +1 -1
  253. package/dist/tools/link.js +1 -1
  254. package/dist/tools/link.js.map +1 -1
  255. package/dist/tools/query.d.ts.map +1 -1
  256. package/dist/tools/query.js +8 -29
  257. package/dist/tools/query.js.map +1 -1
  258. package/dist/tools/task.d.ts.map +1 -1
  259. package/dist/tools/task.js +115 -5
  260. package/dist/tools/task.js.map +1 -1
  261. package/dist/tools/types.d.ts +84 -3
  262. package/dist/tools/types.d.ts.map +1 -1
  263. package/dist/tools/types.js.map +1 -1
  264. package/dist/version.d.ts +14 -0
  265. package/dist/version.d.ts.map +1 -0
  266. package/dist/version.js +44 -0
  267. package/dist/version.js.map +1 -0
  268. package/package.json +32 -7
  269. package/skills/opentasks/SKILL.md +226 -0
  270. package/skills/opentasks/dependency-management.md +119 -0
  271. package/skills/opentasks/feedback-and-review.md +100 -0
  272. package/skills/opentasks/linking-external-data.md +103 -0
  273. package/skills/opentasks/spec-to-implementation.md +171 -0
@@ -0,0 +1,171 @@
1
+ # Spec to Implementation
2
+
3
+ Full lifecycle: create a context, break into issues, set up dependencies, track to completion.
4
+
5
+ ## Native Workflow
6
+
7
+ ### 1. Create context
8
+
9
+ ```bash
10
+ opentasks create --type context \
11
+ --title "OAuth2 authentication for API" \
12
+ --content "## Requirements\n\n- Google OAuth2 with PKCE\n- GitHub OAuth2\n- Token refresh\n- Session management" \
13
+ --status active --tags auth --priority 1
14
+ # → { id: "c-a2b3" }
15
+ ```
16
+
17
+ ### 2. Create tasks
18
+
19
+ ```bash
20
+ opentasks create --type task --title "Set up OAuth provider config" --status open --tags auth --priority 1
21
+ # → t-x7k9
22
+
23
+ opentasks create --type task --title "Implement Google OAuth login" --status open --tags auth --priority 1
24
+ # → t-m4n5
25
+
26
+ opentasks create --type task --title "Implement GitHub OAuth login" --status open --tags auth --priority 2
27
+ # → t-p6q7
28
+
29
+ opentasks create --type task --title "Token refresh and sessions" --status open --tags auth --priority 2
30
+ # → t-r8s9
31
+ ```
32
+
33
+ ### 3. Link issues to spec
34
+
35
+ ```bash
36
+ opentasks link --from t-x7k9 --to c-a2b3 --type implements
37
+ opentasks link --from t-m4n5 --to c-a2b3 --type implements
38
+ opentasks link --from t-p6q7 --to c-a2b3 --type implements
39
+ opentasks link --from t-r8s9 --to c-a2b3 --type implements
40
+ ```
41
+
42
+ ### 4. Set up dependencies
43
+
44
+ ```bash
45
+ opentasks link --from t-x7k9 --to t-m4n5 --type blocks # config before Google
46
+ opentasks link --from t-x7k9 --to t-p6q7 --type blocks # config before GitHub
47
+ opentasks link --from t-m4n5 --to t-r8s9 --type blocks # Google before sessions
48
+ opentasks link --from t-p6q7 --to t-r8s9 --type blocks # GitHub before sessions
49
+ ```
50
+
51
+ ### 5. Execute with ready queries
52
+
53
+ ```bash
54
+ opentasks query '{"ready": {}}'
55
+ # → [t-x7k9] (only config is unblocked)
56
+
57
+ # Work on it
58
+ opentasks update t-x7k9 --status in_progress
59
+ # ... do work ...
60
+ opentasks update t-x7k9 --status closed
61
+
62
+ # Query again
63
+ opentasks query '{"ready": {}}'
64
+ # → [t-m4n5, t-p6q7] (both unblocked, parallelizable)
65
+ ```
66
+
67
+ ### 6. Leave implementation feedback
68
+
69
+ ```bash
70
+ opentasks annotate '{"targetId":"c-a2b3","fromId":"t-m4n5","create":{"content":"Google OAuth implemented with PKCE. Requires access_type=offline for refresh tokens.","type":"comment","anchor":{"text":"Google OAuth2 with PKCE"}}}'
71
+ ```
72
+
73
+ ### 7. Check progress
74
+
75
+ ```bash
76
+ # All tasks of the context
77
+ opentasks query '{"tasks": {"specId": "c-a2b3"}}'
78
+
79
+ # Remaining blockers for sessions issue
80
+ opentasks query '{"blockers": {"nodeId": "t-r8s9", "activeOnly": true}}'
81
+ ```
82
+
83
+ ## File-Backed Context Workflow (MCP)
84
+
85
+ When the spec already exists as a file in the repo (design doc, architecture spec, etc.), reference it directly instead of duplicating content.
86
+
87
+ ### 1. Create file-backed context
88
+
89
+ ```json
90
+ // MCP: create_context
91
+ {
92
+ "title": "Auth Architecture",
93
+ "source": { "type": "file", "path": "docs/auth-architecture.md" },
94
+ "tags": ["auth"]
95
+ }
96
+ // → { id: "c-a2b3", metadata: { context_file: true, context_file_path: "docs/auth-architecture.md", ... } }
97
+ ```
98
+
99
+ No content is copied — just a pointer to the file with a content hash for drift detection.
100
+
101
+ ### 2. Reference key implementation files
102
+
103
+ ```json
104
+ // MCP: create_context
105
+ {
106
+ "source": { "type": "file", "path": "src/auth/middleware.ts" },
107
+ "tags": ["auth"]
108
+ }
109
+ // → { id: "c-m1n2" }
110
+
111
+ // MCP: create_context — snippet for a specific function
112
+ {
113
+ "title": "Token validation",
114
+ "source": { "type": "snippet", "path": "src/auth/middleware.ts", "startLine": 42, "endLine": 58 },
115
+ "tags": ["auth"]
116
+ }
117
+ // → { id: "c-s3n4" }
118
+ ```
119
+
120
+ ### 3. Create tasks and link to context
121
+
122
+ ```json
123
+ // MCP: create_task
124
+ { "title": "Add JWT refresh tokens", "status": "open", "tags": ["auth"] }
125
+ // → { id: "t-x7k9" }
126
+
127
+ // MCP: link
128
+ { "fromId": "t-x7k9", "toId": "c-a2b3", "type": "implements" }
129
+ ```
130
+
131
+ ### 4. Later — resolve context with drift detection
132
+
133
+ ```json
134
+ // MCP: get_context — check if spec has changed
135
+ { "id": "c-a2b3", "resolve": true }
136
+ // → { ..., _resolved: { content: "# Auth Architecture\n...", drifted: true, ... } }
137
+ ```
138
+
139
+ If `drifted: true`, the file has changed since the context was created. The agent can re-read the spec and decide if the task needs updating.
140
+
141
+ ### 5. Re-pin after changes
142
+
143
+ ```json
144
+ // MCP: update_context — sync to current HEAD
145
+ { "id": "c-a2b3", "sync": true }
146
+ ```
147
+
148
+ ### 6. Batch drift check
149
+
150
+ ```json
151
+ // MCP: list_contexts — check all file-backed contexts at once
152
+ { "filesOnly": true, "checkDrift": true }
153
+ // → each item has _drift: { drifted, currentCommit, capturedCommit, ... }
154
+ ```
155
+
156
+ ## Cross-System Workflow
157
+
158
+ When context and tasks live in different systems, OpenTasks provides the graph layer between them.
159
+
160
+ ```bash
161
+ # Taskmaster spec + Beads issue
162
+ opentasks link --from "beads://./bd-x7k9" --to "taskmaster://./auth-prd" --type implements
163
+
164
+ # Query tasks across systems
165
+ opentasks query '{"tasks": {"specId": "taskmaster://./auth-prd"}}'
166
+
167
+ # Native issue + Claude subtask
168
+ opentasks link --from "claude://current/t-abc" --to t-x7k9 --type child-of
169
+ ```
170
+
171
+ OpenTasks doesn't manage content in external systems. Use their native tools (bd CLI, tm CLI, Claude TaskCreate) for CRUD, then use OpenTasks for cross-system edges.