trekoon 0.1.9 → 0.2.1
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.
- package/.agents/skills/trekoon/SKILL.md +176 -230
- package/README.md +299 -7
- package/package.json +1 -1
- package/src/commands/arg-parser.ts +198 -0
- package/src/commands/dep.ts +197 -25
- package/src/commands/epic.ts +674 -28
- package/src/commands/error-utils.ts +111 -0
- package/src/commands/events.ts +23 -3
- package/src/commands/help.ts +66 -4
- package/src/commands/init.ts +11 -3
- package/src/commands/migrate.ts +11 -4
- package/src/commands/subtask.ts +408 -26
- package/src/commands/sync.ts +7 -1
- package/src/commands/task.ts +381 -26
- package/src/domain/mutation-service.ts +394 -1
- package/src/domain/tracker-domain.ts +674 -0
- package/src/domain/types.ts +107 -0
- package/src/sync/event-writes.ts +21 -1
- package/src/sync/service.ts +42 -0
|
@@ -7,309 +7,255 @@ description: Use Trekoon to create issues/tasks, plan backlog and sprints, creat
|
|
|
7
7
|
|
|
8
8
|
Trekoon is a local-first issue tracker for epics, tasks, and subtasks.
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
**Every trekoon command MUST include `--toon` for machine-readable output.**
|
|
13
|
-
|
|
14
|
-
The `--toon` flag outputs structured YAML-like data that is easy to parse. Never run trekoon commands without it.
|
|
15
|
-
|
|
16
|
-
### TOON Output Format
|
|
17
|
-
|
|
18
|
-
All `--toon` output follows this structure:
|
|
19
|
-
|
|
20
|
-
```yaml
|
|
21
|
-
ok: true
|
|
22
|
-
command: task.list
|
|
23
|
-
data:
|
|
24
|
-
tasks[0]:
|
|
25
|
-
id: abc-123
|
|
26
|
-
epicId: epic-456
|
|
27
|
-
title: Implement feature X
|
|
28
|
-
status: todo
|
|
29
|
-
createdAt: 1700000000000
|
|
30
|
-
updatedAt: 1700000000000
|
|
31
|
-
tasks[1]:
|
|
32
|
-
id: def-789
|
|
33
|
-
epicId: epic-456
|
|
34
|
-
title: Write tests
|
|
35
|
-
status: in_progress
|
|
36
|
-
createdAt: 1700000001000
|
|
37
|
-
updatedAt: 1700000001000
|
|
38
|
-
metadata:
|
|
39
|
-
contractVersion: 1.0.0
|
|
40
|
-
requestId: req-abc12345
|
|
41
|
-
```
|
|
10
|
+
This skill is the agent operating guide, not the full CLI reference. Use it to
|
|
11
|
+
pick the right command with the fewest reads and mutations.
|
|
42
12
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
```yaml
|
|
46
|
-
ok: false
|
|
47
|
-
command: task.show
|
|
48
|
-
data: {}
|
|
49
|
-
metadata:
|
|
50
|
-
contractVersion: 1.0.0
|
|
51
|
-
requestId: req-def67890
|
|
52
|
-
error:
|
|
53
|
-
code: not_found
|
|
54
|
-
message: task not found: invalid-id
|
|
55
|
-
```
|
|
13
|
+
## Non-negotiable defaults
|
|
56
14
|
|
|
57
|
-
|
|
15
|
+
- Always include `--toon` on every Trekoon command.
|
|
16
|
+
- Prefer the smallest sufficient scope.
|
|
17
|
+
- Prefer transactional bulk commands over many single-item commands.
|
|
18
|
+
- Prefer `--append` for progress notes, completion notes, and blocker notes.
|
|
19
|
+
- Preview replace before `--apply`.
|
|
20
|
+
- Prefer `--ids` over `--all` for bulk updates.
|
|
21
|
+
- Never edit `.trekoon/trekoon.db` directly.
|
|
22
|
+
- Never run `trekoon wipe --yes --toon` unless the user explicitly asks for it.
|
|
58
23
|
|
|
59
|
-
|
|
60
|
-
|-------|---------|
|
|
61
|
-
| `ok` | `true` if command succeeded, `false` on error |
|
|
62
|
-
| `command` | The command that was executed (e.g., `task.list`, `epic.create`) |
|
|
63
|
-
| `data` | The response payload (tasks, epics, dependencies, etc.) |
|
|
64
|
-
| `metadata` | Contract metadata (`contractVersion`, `requestId`) |
|
|
65
|
-
| `meta` | Optional command-specific metadata (pagination/defaults/filters/diagnostics) |
|
|
66
|
-
| `error` | Present only on failure, contains `code` and `message` |
|
|
24
|
+
## Default agent loop
|
|
67
25
|
|
|
68
|
-
|
|
26
|
+
Run this loop each session:
|
|
69
27
|
|
|
70
|
-
|
|
28
|
+
1. Check sync baseline:
|
|
71
29
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
- Unknown options fail fast with deterministic `unknown_option` errors and may include:
|
|
76
|
-
- `data.option`
|
|
77
|
-
- `data.allowedOptions`
|
|
78
|
-
- `data.suggestions`
|
|
30
|
+
```bash
|
|
31
|
+
trekoon --toon sync status
|
|
32
|
+
```
|
|
79
33
|
|
|
80
|
-
|
|
34
|
+
If this returns `missing_branch_db` on a fresh branch or worktree, continue
|
|
35
|
+
with local task selection and treat sync as unavailable for now.
|
|
81
36
|
|
|
82
|
-
|
|
37
|
+
2. Pick the next item deterministically:
|
|
83
38
|
|
|
84
|
-
|
|
39
|
+
```bash
|
|
40
|
+
trekoon --toon task next
|
|
41
|
+
trekoon --toon task ready --limit 5
|
|
42
|
+
```
|
|
85
43
|
|
|
86
|
-
|
|
87
|
-
trekoon --toon --compat legacy-sync-command-ids sync status
|
|
88
|
-
```
|
|
44
|
+
3. Inspect dependencies or downstream impact when needed:
|
|
89
45
|
|
|
90
|
-
|
|
46
|
+
```bash
|
|
47
|
+
trekoon --toon dep list <task-id>
|
|
48
|
+
trekoon --toon dep reverse <task-or-subtask-id>
|
|
49
|
+
```
|
|
91
50
|
|
|
92
|
-
|
|
51
|
+
4. Claim work explicitly:
|
|
93
52
|
|
|
94
|
-
|
|
53
|
+
```bash
|
|
54
|
+
trekoon --toon task update <task-id> --status in_progress
|
|
55
|
+
```
|
|
95
56
|
|
|
96
|
-
|
|
57
|
+
5. Finish or report a block with appended context:
|
|
97
58
|
|
|
98
|
-
|
|
59
|
+
```bash
|
|
60
|
+
trekoon --toon task update <task-id> --append "Completed implementation and checks" --status done
|
|
61
|
+
trekoon --toon task update <task-id> --append "Blocked by <reason>" --status blocked
|
|
62
|
+
```
|
|
99
63
|
|
|
100
|
-
|
|
101
|
-
|--------|---------|
|
|
102
|
-
| `todo` | Work not started (default for new items) |
|
|
103
|
-
| `in_progress` | Actively being worked on |
|
|
104
|
-
| `done` | Completed successfully |
|
|
64
|
+
Recommended statuses for consistent workflows: `todo`, `in_progress`, `done`.
|
|
105
65
|
|
|
106
|
-
|
|
66
|
+
## Read policy: use the smallest sufficient read
|
|
107
67
|
|
|
108
|
-
|
|
68
|
+
Use the narrowest command that answers the question.
|
|
109
69
|
|
|
110
|
-
|
|
|
111
|
-
|
|
112
|
-
|
|
|
113
|
-
|
|
|
70
|
+
| Need | Preferred command |
|
|
71
|
+
|---|---|
|
|
72
|
+
| Next task | `trekoon --toon task next` |
|
|
73
|
+
| A few ready options | `trekoon --toon task ready --limit 5` |
|
|
74
|
+
| Direct blockers for one task | `trekoon --toon dep list <task-id>` |
|
|
75
|
+
| What this item unblocks | `trekoon --toon dep reverse <task-or-subtask-id>` |
|
|
76
|
+
| One full task payload | `trekoon --toon task show <task-id> --all` |
|
|
77
|
+
| One full epic tree | `trekoon --toon epic show <epic-id> --all` |
|
|
78
|
+
| Repeated text in one scope | `trekoon --toon epic|task|subtask search ...` |
|
|
114
79
|
|
|
115
|
-
|
|
80
|
+
Avoid broad scans such as `task list --all` or `epic show --all` when
|
|
81
|
+
`task next`, `task ready`, `dep list`, `dep reverse`, or `search` can answer the
|
|
82
|
+
question more cheaply.
|
|
116
83
|
|
|
117
|
-
|
|
118
|
-
trekoon task update <task-id> --status in_progress --toon
|
|
119
|
-
trekoon task update <task-id> --status done --toon
|
|
120
|
-
trekoon subtask update <subtask-id> --status done --toon
|
|
121
|
-
trekoon epic update <epic-id> --status done --toon
|
|
122
|
-
```
|
|
84
|
+
## Creation policy: prefer bulk planning workflows
|
|
123
85
|
|
|
124
|
-
|
|
86
|
+
When creating multiple related records, do not loop through repeated single-item
|
|
87
|
+
creates unless only one record is needed.
|
|
125
88
|
|
|
126
|
-
|
|
89
|
+
### Which command to use
|
|
127
90
|
|
|
128
|
-
|
|
91
|
+
| Situation | Preferred command |
|
|
92
|
+
|---|---|
|
|
93
|
+
| New epic and full graph already known | `trekoon --toon epic create ... --task ... --subtask ... --dep ...` |
|
|
94
|
+
| Existing epic needs linked additions | `trekoon --toon epic expand <epic-id> ...` |
|
|
95
|
+
| Multiple sibling tasks under one epic | `trekoon --toon task create-many --epic <epic-id> --task ...` |
|
|
96
|
+
| Multiple sibling subtasks under one task | `trekoon --toon subtask create-many <task-id> --subtask ...` |
|
|
97
|
+
| Multiple dependency edges across existing IDs | `trekoon --toon dep add-many --dep ...` |
|
|
98
|
+
| One record only | `epic create`, `task create`, or `subtask create` |
|
|
129
99
|
|
|
130
|
-
|
|
131
|
-
trekoon dep add <source-id> <depends-on-id> --toon
|
|
132
|
-
trekoon dep list <source-id> --toon
|
|
133
|
-
trekoon dep remove <source-id> <depends-on-id> --toon
|
|
134
|
-
trekoon dep reverse <task-or-subtask-id> --toon
|
|
135
|
-
```
|
|
100
|
+
### Critical temp-key rule
|
|
136
101
|
|
|
137
|
-
-
|
|
138
|
-
-
|
|
102
|
+
- Use plain temp keys when declaring records in compact specs, for example
|
|
103
|
+
`task-api` or `sub-tests`.
|
|
104
|
+
- Refer to those records later in the same invocation as `@task-api` or
|
|
105
|
+
`@sub-tests`.
|
|
106
|
+
- `@temp-key` references work in same-invocation graph workflows such as
|
|
107
|
+
one-shot `epic create` and `epic expand`.
|
|
108
|
+
- `dep add-many` does **not** resolve temp keys from earlier commands. Use real
|
|
109
|
+
persisted IDs there.
|
|
139
110
|
|
|
140
|
-
###
|
|
111
|
+
### Compact examples
|
|
141
112
|
|
|
142
|
-
|
|
113
|
+
#### One-shot epic creation
|
|
114
|
+
|
|
115
|
+
Use this when the epic does not exist yet and you already know the tree.
|
|
143
116
|
|
|
144
117
|
```bash
|
|
145
|
-
trekoon
|
|
118
|
+
trekoon --toon epic create \
|
|
119
|
+
--title "Batch command rollout" \
|
|
120
|
+
--description "Ship linked planning in one transaction" \
|
|
121
|
+
--task "task-api|Design API|Define compact grammar|todo" \
|
|
122
|
+
--task "task-cli|Wire CLI|Hook parser and output|todo" \
|
|
123
|
+
--subtask "@task-api|sub-tests|Write tests|Cover parser cases|todo" \
|
|
124
|
+
--dep "@task-cli|@task-api"
|
|
146
125
|
```
|
|
147
126
|
|
|
148
|
-
|
|
149
|
-
- `sourceId`: the task you're checking
|
|
150
|
-
- `dependsOnId`: what must be done first
|
|
151
|
-
- `dependsOnKind`: "task" or "subtask"
|
|
127
|
+
#### Expand an existing epic
|
|
152
128
|
|
|
153
|
-
|
|
129
|
+
Use this when the epic already exists and the new batch needs internal links.
|
|
154
130
|
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
131
|
+
```bash
|
|
132
|
+
trekoon --toon epic expand <epic-id> \
|
|
133
|
+
--task "task-docs|Document workflow|Write operator guide|todo" \
|
|
134
|
+
--subtask "@task-docs|sub-examples|Add examples|Show canonical flows|todo" \
|
|
135
|
+
--dep "@sub-examples|@task-docs"
|
|
136
|
+
```
|
|
158
137
|
|
|
159
|
-
|
|
138
|
+
#### Create sibling tasks or subtasks
|
|
160
139
|
|
|
161
|
-
|
|
140
|
+
```bash
|
|
141
|
+
trekoon --toon task create-many --epic <epic-id> \
|
|
142
|
+
--task "seed-api|Design API|Define grammar|todo" \
|
|
143
|
+
--task "seed-cli|Wire CLI|Hook output|todo"
|
|
162
144
|
|
|
163
|
-
|
|
145
|
+
trekoon --toon subtask create-many <task-id> \
|
|
146
|
+
--subtask "seed-tests|Write tests|Cover happy path|todo" \
|
|
147
|
+
--subtask "seed-docs|Document flow|Add notes|todo"
|
|
148
|
+
```
|
|
164
149
|
|
|
165
|
-
|
|
166
|
-
```bash
|
|
167
|
-
trekoon sync status --toon
|
|
168
|
-
```
|
|
169
|
-
2. Pull deterministic ready candidates (or next candidate):
|
|
170
|
-
```bash
|
|
171
|
-
trekoon task ready --limit 5 --toon
|
|
172
|
-
trekoon task next --toon
|
|
173
|
-
```
|
|
174
|
-
3. Inspect downstream impact before changes:
|
|
175
|
-
```bash
|
|
176
|
-
trekoon dep reverse <task-or-subtask-id> --toon
|
|
177
|
-
```
|
|
178
|
-
4. Start work with explicit status updates:
|
|
179
|
-
```bash
|
|
180
|
-
trekoon task update <task-id> --status in_progress --toon
|
|
181
|
-
```
|
|
182
|
-
5. Finish or block with appended context + final status:
|
|
183
|
-
```bash
|
|
184
|
-
trekoon task update <task-id> --append "Completed implementation" --status done --toon
|
|
185
|
-
trekoon task update <task-id> --append "Blocked by <reason>" --status blocked --toon
|
|
186
|
-
```
|
|
150
|
+
#### Add dependencies after records already exist
|
|
187
151
|
|
|
188
|
-
|
|
152
|
+
```bash
|
|
153
|
+
trekoon --toon dep add-many \
|
|
154
|
+
--dep "<task-b>|<task-a>" \
|
|
155
|
+
--dep "<subtask-c>|<task-b>"
|
|
156
|
+
```
|
|
189
157
|
|
|
190
|
-
|
|
191
|
-
```bash
|
|
192
|
-
trekoon task update <task-id> --status done --toon
|
|
193
|
-
```
|
|
158
|
+
## Update policy: prefer append-based progress logging
|
|
194
159
|
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
- Pull ready queue: `trekoon task ready --limit 5 --toon`
|
|
198
|
-
- Pick one deterministically: `trekoon task next --toon`
|
|
160
|
+
Use descriptions as the durable work log. For progress updates, append instead
|
|
161
|
+
of rewriting full descriptions.
|
|
199
162
|
|
|
200
|
-
###
|
|
163
|
+
### Preferred patterns
|
|
201
164
|
|
|
202
165
|
```bash
|
|
203
|
-
trekoon task
|
|
204
|
-
trekoon task
|
|
205
|
-
trekoon
|
|
166
|
+
trekoon --toon task update <task-id> --append "Started implementation" --status in_progress
|
|
167
|
+
trekoon --toon task update <task-id> --append "Completed implementation and checks" --status done
|
|
168
|
+
trekoon --toon task update <task-id> --append "Blocked by <reason>" --status blocked
|
|
206
169
|
```
|
|
207
170
|
|
|
208
|
-
|
|
171
|
+
### Bulk update rules
|
|
209
172
|
|
|
210
|
-
|
|
173
|
+
- Bulk update is available for `epic update`, `task update`, and
|
|
174
|
+
`subtask update`.
|
|
175
|
+
- Bulk mode uses `--ids <csv>` or `--all`.
|
|
176
|
+
- Bulk mode supports only `--append` and/or `--status`.
|
|
177
|
+
- Do not pass a positional ID in bulk mode.
|
|
178
|
+
- `--append` and `--description` are mutually exclusive.
|
|
179
|
+
- Prefer `--ids` for narrow, explicit updates.
|
|
180
|
+
- Use `--all` only for clear maintenance sweeps or when the user explicitly wants
|
|
181
|
+
a broad update.
|
|
211
182
|
|
|
212
|
-
|
|
183
|
+
Examples:
|
|
213
184
|
|
|
214
185
|
```bash
|
|
215
|
-
trekoon
|
|
216
|
-
trekoon
|
|
217
|
-
trekoon epic show <id> --all --toon
|
|
218
|
-
trekoon task show <id> --all --toon
|
|
186
|
+
trekoon --toon task update --ids id1,id2 --append "Waiting on release" --status blocked
|
|
187
|
+
trekoon --toon epic update --ids epic1,epic2 --append "Sprint planning refreshed" --status in_progress
|
|
219
188
|
```
|
|
220
189
|
|
|
221
|
-
|
|
222
|
-
- open work only (`in_progress`, `in-progress`, `todo`)
|
|
223
|
-
- prioritized as `in_progress`/`in-progress` first, then `todo`
|
|
224
|
-
- default limit `10`
|
|
225
|
-
- `--cursor <n>` is offset-like pagination for list endpoints
|
|
226
|
-
- Filter list explicitly when needed:
|
|
190
|
+
## Search and replace policy
|
|
227
191
|
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
trekoon epic list --status done --toon
|
|
231
|
-
trekoon task list --all --toon
|
|
232
|
-
```
|
|
192
|
+
Use scoped search before manual tree reads when you need to locate repeated
|
|
193
|
+
paths, labels, owners, or migration targets.
|
|
233
194
|
|
|
234
|
-
|
|
235
|
-
- `--all` cannot be combined with `--cursor`.
|
|
236
|
-
- Machine pagination contract is in `meta.pagination.hasMore` and
|
|
237
|
-
`meta.pagination.nextCursor`.
|
|
238
|
-
- Machine list/show responses may also include:
|
|
239
|
-
- `meta.defaults`
|
|
240
|
-
- `meta.filters`
|
|
241
|
-
- `meta.truncation`
|
|
242
|
-
- `epic show <id> --all --toon`: full epic tree (tasks + subtasks)
|
|
243
|
-
- `task show <id> --all --toon`: task plus its subtasks
|
|
195
|
+
### Scope choice
|
|
244
196
|
|
|
245
|
-
|
|
197
|
+
Prefer the narrowest valid root:
|
|
246
198
|
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
- If invocation cwd differs from canonical root, machine output may include
|
|
251
|
-
`meta.storageRootDiagnostics`.
|
|
199
|
+
1. `subtask search` or `subtask replace`
|
|
200
|
+
2. `task search` or `task replace`
|
|
201
|
+
3. `epic search` or `epic replace`
|
|
252
202
|
|
|
253
|
-
|
|
203
|
+
Scope behavior:
|
|
254
204
|
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
| `show` | `table` (default), `compact`, `tree`, `detail` |
|
|
205
|
+
- `subtask` scope scans only that subtask.
|
|
206
|
+
- `task` scope scans the task plus descendant subtasks.
|
|
207
|
+
- `epic` scope scans the epic plus descendant tasks and subtasks.
|
|
259
208
|
|
|
260
|
-
|
|
209
|
+
### Safe replace workflow
|
|
210
|
+
|
|
211
|
+
1. Search first.
|
|
212
|
+
2. Preview replace.
|
|
213
|
+
3. Apply only after preview matches the intended scope.
|
|
261
214
|
|
|
262
215
|
```bash
|
|
263
|
-
trekoon epic
|
|
264
|
-
trekoon
|
|
265
|
-
trekoon
|
|
216
|
+
trekoon --toon epic search <epic-id> "path/to/somewhere"
|
|
217
|
+
trekoon --toon epic replace <epic-id> --search "path/to/somewhere" --replace "path/to/new-path"
|
|
218
|
+
trekoon --toon epic replace <epic-id> --search "path/to/somewhere" --replace "path/to/new-path" --apply
|
|
266
219
|
```
|
|
267
220
|
|
|
268
|
-
|
|
269
|
-
- `description` is required for epic/task create and it must be well written.
|
|
270
|
-
- `status` defaults to `todo` if omitted.
|
|
271
|
-
- `description` is optional for subtask create.
|
|
272
|
-
|
|
273
|
-
## 6) Update work
|
|
221
|
+
Guardrails:
|
|
274
222
|
|
|
275
|
-
|
|
223
|
+
- Use literal, explicit search text.
|
|
224
|
+
- Narrow fields when useful: `--fields title`, `--fields description`, or
|
|
225
|
+
`--fields title,description`.
|
|
226
|
+
- Do not jump straight to `--apply`.
|
|
227
|
+
- Prefer scoped search/replace over manually reading a whole tree and editing
|
|
228
|
+
many records one by one.
|
|
276
229
|
|
|
277
|
-
|
|
278
|
-
trekoon epic update <epic-id> --title "..." --description "..." --status in_progress --toon
|
|
279
|
-
trekoon task update <task-id> --title "..." --description "..." --status in_progress --toon
|
|
280
|
-
trekoon subtask update <subtask-id> --title "..." --description "..." --status in_progress --toon
|
|
281
|
-
```
|
|
230
|
+
## Setup and fallback
|
|
282
231
|
|
|
283
|
-
|
|
232
|
+
If Trekoon is unavailable or state is missing:
|
|
284
233
|
|
|
285
234
|
```bash
|
|
286
|
-
trekoon
|
|
287
|
-
trekoon
|
|
288
|
-
|
|
289
|
-
trekoon epic update --all --append "..." --status in_progress --toon
|
|
290
|
-
trekoon epic update --ids id1,id2 --append "..." --status in_progress --toon
|
|
235
|
+
trekoon --toon init
|
|
236
|
+
trekoon --toon quickstart
|
|
237
|
+
trekoon --help --toon
|
|
291
238
|
```
|
|
292
239
|
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
- In bulk mode, do not pass a positional ID.
|
|
296
|
-
- Bulk update supports `--append` and/or `--status`.
|
|
297
|
-
|
|
298
|
-
## 7) Setup/install/init (if `trekoon` is unavailable)
|
|
240
|
+
Use `quickstart` for the canonical execution loop. Use `--help --toon` when you
|
|
241
|
+
need exact syntax.
|
|
299
242
|
|
|
300
|
-
|
|
301
|
-
2. In the target repository/worktree, initialize tracker state:
|
|
243
|
+
## Sync reminders
|
|
302
244
|
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
```
|
|
245
|
+
- Run `trekoon --toon sync status` at session start and before PR or merge.
|
|
246
|
+
- Before merge, pull tracker events from the base branch:
|
|
306
247
|
|
|
307
|
-
|
|
308
|
-
|
|
248
|
+
```bash
|
|
249
|
+
trekoon --toon sync pull --from main
|
|
250
|
+
```
|
|
309
251
|
|
|
310
|
-
If
|
|
252
|
+
- If conflicts exist, inspect and resolve them explicitly:
|
|
311
253
|
|
|
312
|
-
|
|
254
|
+
```bash
|
|
255
|
+
trekoon --toon sync conflicts list
|
|
256
|
+
trekoon --toon sync conflicts show <conflict-id>
|
|
257
|
+
trekoon --toon sync resolve <conflict-id> --use ours
|
|
258
|
+
```
|
|
313
259
|
|
|
314
|
-
|
|
315
|
-
|
|
260
|
+
Trekoon stores local state in `.trekoon/trekoon.db`. In git repos and
|
|
261
|
+
worktrees, storage resolves from the repository root.
|