vault-tasks 0.4.0__py3-none-any.whl

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 (150) hide show
  1. vault_tasks/__init__.py +3 -0
  2. vault_tasks/__main__.py +82 -0
  3. vault_tasks/_bundle/dist/cli.d.ts +3 -0
  4. vault_tasks/_bundle/dist/cli.d.ts.map +1 -0
  5. vault_tasks/_bundle/dist/cli.js +351 -0
  6. vault_tasks/_bundle/dist/cli.js.map +1 -0
  7. vault_tasks/_bundle/dist/commands/archive.d.ts +3 -0
  8. vault_tasks/_bundle/dist/commands/archive.d.ts.map +1 -0
  9. vault_tasks/_bundle/dist/commands/archive.js +14 -0
  10. vault_tasks/_bundle/dist/commands/archive.js.map +1 -0
  11. vault_tasks/_bundle/dist/commands/done.d.ts +5 -0
  12. vault_tasks/_bundle/dist/commands/done.d.ts.map +1 -0
  13. vault_tasks/_bundle/dist/commands/done.js +8 -0
  14. vault_tasks/_bundle/dist/commands/done.js.map +1 -0
  15. vault_tasks/_bundle/dist/commands/edit.d.ts +8 -0
  16. vault_tasks/_bundle/dist/commands/edit.d.ts.map +1 -0
  17. vault_tasks/_bundle/dist/commands/edit.js +12 -0
  18. vault_tasks/_bundle/dist/commands/edit.js.map +1 -0
  19. vault_tasks/_bundle/dist/commands/init.d.ts +4 -0
  20. vault_tasks/_bundle/dist/commands/init.d.ts.map +1 -0
  21. vault_tasks/_bundle/dist/commands/init.js +60 -0
  22. vault_tasks/_bundle/dist/commands/init.js.map +1 -0
  23. vault_tasks/_bundle/dist/commands/install-skills.d.ts +7 -0
  24. vault_tasks/_bundle/dist/commands/install-skills.d.ts.map +1 -0
  25. vault_tasks/_bundle/dist/commands/install-skills.js +130 -0
  26. vault_tasks/_bundle/dist/commands/install-skills.js.map +1 -0
  27. vault_tasks/_bundle/dist/commands/lint.d.ts +11 -0
  28. vault_tasks/_bundle/dist/commands/lint.d.ts.map +1 -0
  29. vault_tasks/_bundle/dist/commands/lint.js +45 -0
  30. vault_tasks/_bundle/dist/commands/lint.js.map +1 -0
  31. vault_tasks/_bundle/dist/commands/list.d.ts +8 -0
  32. vault_tasks/_bundle/dist/commands/list.d.ts.map +1 -0
  33. vault_tasks/_bundle/dist/commands/list.js +22 -0
  34. vault_tasks/_bundle/dist/commands/list.js.map +1 -0
  35. vault_tasks/_bundle/dist/commands/new.d.ts +12 -0
  36. vault_tasks/_bundle/dist/commands/new.d.ts.map +1 -0
  37. vault_tasks/_bundle/dist/commands/new.js +112 -0
  38. vault_tasks/_bundle/dist/commands/new.js.map +1 -0
  39. vault_tasks/_bundle/dist/commands/search.d.ts +6 -0
  40. vault_tasks/_bundle/dist/commands/search.d.ts.map +1 -0
  41. vault_tasks/_bundle/dist/commands/search.js +12 -0
  42. vault_tasks/_bundle/dist/commands/search.js.map +1 -0
  43. vault_tasks/_bundle/dist/commands/show.d.ts +5 -0
  44. vault_tasks/_bundle/dist/commands/show.d.ts.map +1 -0
  45. vault_tasks/_bundle/dist/commands/show.js +8 -0
  46. vault_tasks/_bundle/dist/commands/show.js.map +1 -0
  47. vault_tasks/_bundle/dist/commands/stale.d.ts +5 -0
  48. vault_tasks/_bundle/dist/commands/stale.d.ts.map +1 -0
  49. vault_tasks/_bundle/dist/commands/stale.js +8 -0
  50. vault_tasks/_bundle/dist/commands/stale.js.map +1 -0
  51. vault_tasks/_bundle/dist/commands/start.d.ts +5 -0
  52. vault_tasks/_bundle/dist/commands/start.d.ts.map +1 -0
  53. vault_tasks/_bundle/dist/commands/start.js +12 -0
  54. vault_tasks/_bundle/dist/commands/start.js.map +1 -0
  55. vault_tasks/_bundle/dist/commands/tags.d.ts +3 -0
  56. vault_tasks/_bundle/dist/commands/tags.d.ts.map +1 -0
  57. vault_tasks/_bundle/dist/commands/tags.js +8 -0
  58. vault_tasks/_bundle/dist/commands/tags.js.map +1 -0
  59. vault_tasks/_bundle/dist/config.d.ts +71 -0
  60. vault_tasks/_bundle/dist/config.d.ts.map +1 -0
  61. vault_tasks/_bundle/dist/config.js +453 -0
  62. vault_tasks/_bundle/dist/config.js.map +1 -0
  63. vault_tasks/_bundle/dist/counter.d.ts +11 -0
  64. vault_tasks/_bundle/dist/counter.d.ts.map +1 -0
  65. vault_tasks/_bundle/dist/counter.js +131 -0
  66. vault_tasks/_bundle/dist/counter.js.map +1 -0
  67. vault_tasks/_bundle/dist/frontmatter.d.ts +16 -0
  68. vault_tasks/_bundle/dist/frontmatter.d.ts.map +1 -0
  69. vault_tasks/_bundle/dist/frontmatter.js +187 -0
  70. vault_tasks/_bundle/dist/frontmatter.js.map +1 -0
  71. vault_tasks/_bundle/dist/index.d.ts +10 -0
  72. vault_tasks/_bundle/dist/index.d.ts.map +1 -0
  73. vault_tasks/_bundle/dist/index.js +7 -0
  74. vault_tasks/_bundle/dist/index.js.map +1 -0
  75. vault_tasks/_bundle/dist/lint/checks/broken.d.ts +11 -0
  76. vault_tasks/_bundle/dist/lint/checks/broken.d.ts.map +1 -0
  77. vault_tasks/_bundle/dist/lint/checks/broken.js +38 -0
  78. vault_tasks/_bundle/dist/lint/checks/broken.js.map +1 -0
  79. vault_tasks/_bundle/dist/lint/checks/drift.d.ts +15 -0
  80. vault_tasks/_bundle/dist/lint/checks/drift.d.ts.map +1 -0
  81. vault_tasks/_bundle/dist/lint/checks/drift.js +57 -0
  82. vault_tasks/_bundle/dist/lint/checks/drift.js.map +1 -0
  83. vault_tasks/_bundle/dist/lint/checks/orphans.d.ts +20 -0
  84. vault_tasks/_bundle/dist/lint/checks/orphans.d.ts.map +1 -0
  85. vault_tasks/_bundle/dist/lint/checks/orphans.js +61 -0
  86. vault_tasks/_bundle/dist/lint/checks/orphans.js.map +1 -0
  87. vault_tasks/_bundle/dist/lint/checks/stale.d.ts +11 -0
  88. vault_tasks/_bundle/dist/lint/checks/stale.d.ts.map +1 -0
  89. vault_tasks/_bundle/dist/lint/checks/stale.js +48 -0
  90. vault_tasks/_bundle/dist/lint/checks/stale.js.map +1 -0
  91. vault_tasks/_bundle/dist/lint/collect.d.ts +44 -0
  92. vault_tasks/_bundle/dist/lint/collect.d.ts.map +1 -0
  93. vault_tasks/_bundle/dist/lint/collect.js +223 -0
  94. vault_tasks/_bundle/dist/lint/collect.js.map +1 -0
  95. vault_tasks/_bundle/dist/lint/index.d.ts +29 -0
  96. vault_tasks/_bundle/dist/lint/index.d.ts.map +1 -0
  97. vault_tasks/_bundle/dist/lint/index.js +119 -0
  98. vault_tasks/_bundle/dist/lint/index.js.map +1 -0
  99. vault_tasks/_bundle/dist/lint/report.d.ts +11 -0
  100. vault_tasks/_bundle/dist/lint/report.d.ts.map +1 -0
  101. vault_tasks/_bundle/dist/lint/report.js +77 -0
  102. vault_tasks/_bundle/dist/lint/report.js.map +1 -0
  103. vault_tasks/_bundle/dist/lint/resolve.d.ts +48 -0
  104. vault_tasks/_bundle/dist/lint/resolve.d.ts.map +1 -0
  105. vault_tasks/_bundle/dist/lint/resolve.js +147 -0
  106. vault_tasks/_bundle/dist/lint/resolve.js.map +1 -0
  107. vault_tasks/_bundle/dist/lint/suggest.d.ts +31 -0
  108. vault_tasks/_bundle/dist/lint/suggest.d.ts.map +1 -0
  109. vault_tasks/_bundle/dist/lint/suggest.js +124 -0
  110. vault_tasks/_bundle/dist/lint/suggest.js.map +1 -0
  111. vault_tasks/_bundle/dist/lint/types.d.ts +130 -0
  112. vault_tasks/_bundle/dist/lint/types.d.ts.map +1 -0
  113. vault_tasks/_bundle/dist/lint/types.js +8 -0
  114. vault_tasks/_bundle/dist/lint/types.js.map +1 -0
  115. vault_tasks/_bundle/dist/output.d.ts +9 -0
  116. vault_tasks/_bundle/dist/output.d.ts.map +1 -0
  117. vault_tasks/_bundle/dist/output.js +59 -0
  118. vault_tasks/_bundle/dist/output.js.map +1 -0
  119. vault_tasks/_bundle/dist/similarity.d.ts +12 -0
  120. vault_tasks/_bundle/dist/similarity.d.ts.map +1 -0
  121. vault_tasks/_bundle/dist/similarity.js +62 -0
  122. vault_tasks/_bundle/dist/similarity.js.map +1 -0
  123. vault_tasks/_bundle/dist/slugify.d.ts +5 -0
  124. vault_tasks/_bundle/dist/slugify.d.ts.map +1 -0
  125. vault_tasks/_bundle/dist/slugify.js +27 -0
  126. vault_tasks/_bundle/dist/slugify.js.map +1 -0
  127. vault_tasks/_bundle/dist/store.d.ts +41 -0
  128. vault_tasks/_bundle/dist/store.d.ts.map +1 -0
  129. vault_tasks/_bundle/dist/store.js +386 -0
  130. vault_tasks/_bundle/dist/store.js.map +1 -0
  131. vault_tasks/_bundle/dist/task.d.ts +28 -0
  132. vault_tasks/_bundle/dist/task.d.ts.map +1 -0
  133. vault_tasks/_bundle/dist/task.js +2 -0
  134. vault_tasks/_bundle/dist/task.js.map +1 -0
  135. vault_tasks/_bundle/dist/ulid.d.ts +19 -0
  136. vault_tasks/_bundle/dist/ulid.d.ts.map +1 -0
  137. vault_tasks/_bundle/dist/ulid.js +121 -0
  138. vault_tasks/_bundle/dist/ulid.js.map +1 -0
  139. vault_tasks/_bundle/templates/backlog.base +62 -0
  140. vault_tasks/_bundle/templates/rules/backlog.md +14 -0
  141. vault_tasks/_bundle/templates/skills/brief/SKILL.md +54 -0
  142. vault_tasks/_bundle/templates/skills/build-log/SKILL.md +47 -0
  143. vault_tasks/_bundle/templates/skills/lint/SKILL.md +123 -0
  144. vault_tasks/_bundle/templates/skills/task/SKILL.md +28 -0
  145. vault_tasks/_bundle/templates/skills/weekly-review/SKILL.md +90 -0
  146. vault_tasks/_version.py +2 -0
  147. vault_tasks-0.4.0.dist-info/METADATA +217 -0
  148. vault_tasks-0.4.0.dist-info/RECORD +150 -0
  149. vault_tasks-0.4.0.dist-info/WHEEL +4 -0
  150. vault_tasks-0.4.0.dist-info/entry_points.txt +3 -0
@@ -0,0 +1,3 @@
1
+ from ._version import __version__
2
+
3
+ __all__ = ["__version__"]
@@ -0,0 +1,82 @@
1
+ """Python entry point for the vault-tasks CLI.
2
+
3
+ The pip wheel ships the compiled JS at vault_tasks/_bundle/dist/cli.js plus
4
+ the templates tree at vault_tasks/_bundle/templates/. This shim:
5
+
6
+ 1. Locates `node` on PATH (errors actionably if missing).
7
+ 2. Sets VAULT_TASKS_TEMPLATES_DIR so install-skills finds the bundled
8
+ templates instead of walking up from __dirname.
9
+ 3. Execs `node cli.js <forwarded argv>`. On POSIX we use os.execvpe so
10
+ signals (Ctrl-C) and exit codes pass through cleanly. On Windows we
11
+ fall back to subprocess.run because execvpe semantics there are
12
+ different enough to cause shell-related surprises.
13
+ """
14
+
15
+ from __future__ import annotations
16
+
17
+ import os
18
+ import shutil
19
+ import subprocess
20
+ import sys
21
+ from pathlib import Path
22
+
23
+ NODE_MISSING_MESSAGE = (
24
+ "vault-tasks: Node.js is required but was not found on PATH.\n"
25
+ "\n"
26
+ "vault-tasks ships as JavaScript and needs Node.js >= 20 to run.\n"
27
+ "Install Node from https://nodejs.org or via your package manager:\n"
28
+ " macOS: brew install node\n"
29
+ " Ubuntu: sudo apt install nodejs\n"
30
+ " Windows: winget install OpenJS.NodeJS.LTS\n"
31
+ "Then re-run this command.\n"
32
+ )
33
+
34
+
35
+ def _bundle_root() -> Path:
36
+ return Path(__file__).resolve().parent / "_bundle"
37
+
38
+
39
+ def _find_node() -> str:
40
+ node = shutil.which("node")
41
+ if not node:
42
+ sys.stderr.write(NODE_MISSING_MESSAGE)
43
+ sys.exit(127)
44
+ return node
45
+
46
+
47
+ def main() -> None:
48
+ node = _find_node()
49
+ bundle = _bundle_root()
50
+ cli_js = bundle / "dist" / "cli.js"
51
+ templates = bundle / "templates"
52
+
53
+ if not cli_js.is_file():
54
+ sys.stderr.write(
55
+ f"vault-tasks: bundle is missing cli.js at {cli_js}.\n"
56
+ "The pip wheel appears to be corrupt. Try `pip install --force-reinstall vault-tasks`.\n"
57
+ )
58
+ sys.exit(1)
59
+ if not templates.is_dir():
60
+ sys.stderr.write(
61
+ f"vault-tasks: bundle is missing templates at {templates}.\n"
62
+ "The pip wheel appears to be corrupt. Try `pip install --force-reinstall vault-tasks`.\n"
63
+ )
64
+ sys.exit(1)
65
+
66
+ env = os.environ.copy()
67
+ env["VAULT_TASKS_TEMPLATES_DIR"] = str(templates)
68
+
69
+ argv = [node, str(cli_js), *sys.argv[1:]]
70
+
71
+ if os.name == "nt":
72
+ # Windows: subprocess.run preserves stdio/exit-code semantics best.
73
+ # Pass argv as a list so the shell does not re-quote anything.
74
+ completed = subprocess.run(argv, env=env)
75
+ sys.exit(completed.returncode)
76
+
77
+ # POSIX: replace the Python process so signals and exit codes pass through.
78
+ os.execvpe(node, argv, env)
79
+
80
+
81
+ if __name__ == "__main__":
82
+ main()
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
@@ -0,0 +1,351 @@
1
+ #!/usr/bin/env node
2
+ import { loadConfig } from "./config.js";
3
+ import { cmdArchive } from "./commands/archive.js";
4
+ import { cmdDone } from "./commands/done.js";
5
+ import { cmdEdit } from "./commands/edit.js";
6
+ import { cmdInit } from "./commands/init.js";
7
+ import { cmdInstallSkills } from "./commands/install-skills.js";
8
+ import { cmdLint } from "./commands/lint.js";
9
+ import { cmdList } from "./commands/list.js";
10
+ import { cmdNew } from "./commands/new.js";
11
+ import { cmdSearch } from "./commands/search.js";
12
+ import { cmdShow } from "./commands/show.js";
13
+ import { cmdStale } from "./commands/stale.js";
14
+ import { cmdStart } from "./commands/start.js";
15
+ import { cmdTags } from "./commands/tags.js";
16
+ const USAGE = `vault-tasks — markdown-file task manager
17
+
18
+ Usage: vt <command> [options]
19
+
20
+ Commands:
21
+ new <title> Create a new task
22
+ list List tasks
23
+ search <keyword> Search tasks by title and body
24
+ stale List stale open tasks
25
+ show <id> Show full task
26
+ done <id> Mark task as done
27
+ start <id> Mark task as in-progress
28
+ edit <id> Edit task fields (--status, --priority, --tags)
29
+ archive Move completed tasks to archive
30
+ tags List all tags in use
31
+ lint Audit the vault for broken wikilinks, orphans, stale refs, drift
32
+ init Initialize vault-tasks in current directory
33
+ install-skills Install Claude Code skills and rules
34
+
35
+ Options (vary by command):
36
+ --priority, -p high, medium, or low
37
+ --tags, -t Comma-separated tags
38
+ --source, -s Where this was noticed
39
+ --body Task body as inline string (use - for stdin)
40
+ --body-file Task body read from file path
41
+ --commit Git commit after creating
42
+ --no-dedupe Skip duplicate detection (new)
43
+ --status Filter or set status
44
+ --tag Filter by tag
45
+ --all, -a Include done/archived tasks (list, search)
46
+ --install Install all skills and rules (install-skills)
47
+ --days, -d Stale threshold in days (default: 14)
48
+ --list List available skills
49
+ --update Overwrite existing skill files
50
+ --only Run a single lint check (broken|orphans|stale|drift)
51
+ --scope Restrict lint to files under <dir>
52
+ --json Machine-readable lint output
53
+ --quiet Print only the lint SUMMARY line
54
+ --no-suggestions Skip "did you mean?" suggestions in lint
55
+ --help, -h Show this help message
56
+ `;
57
+ const BOOLEAN_FLAGS = new Set([
58
+ "all",
59
+ "commit",
60
+ "install",
61
+ "list",
62
+ "update",
63
+ "help",
64
+ "no-dedupe",
65
+ "json",
66
+ "quiet",
67
+ "no-suggestions",
68
+ ]);
69
+ // Flags that require a value. parseArgs throws an actionable error when one
70
+ // of these is passed without a value (e.g. `vt new T --priority` followed by
71
+ // EOL or another flag) so commands never receive a boolean for a string field.
72
+ const VALUE_FLAGS = new Set([
73
+ "priority",
74
+ "tags",
75
+ "source",
76
+ "body",
77
+ "body-file",
78
+ "status",
79
+ "tag",
80
+ "days",
81
+ "only",
82
+ "scope",
83
+ ]);
84
+ const VALUE_FLAG_HINTS = {
85
+ priority: "high, medium, or low",
86
+ tags: "comma-separated tag names",
87
+ source: "where this was noticed (e.g. [[2026-05-09]])",
88
+ body: "a string, or '-' to read from stdin",
89
+ "body-file": "a file path",
90
+ status: "open, in-progress, done, or wont-do",
91
+ tag: "a tag name",
92
+ days: "a positive integer",
93
+ only: "broken|orphans|stale|drift",
94
+ scope: "a directory",
95
+ };
96
+ function missingValueError(key) {
97
+ const hint = VALUE_FLAG_HINTS[key];
98
+ return new Error(`Flag --${key} requires a value${hint ? ` (${hint})` : ""}.`);
99
+ }
100
+ function isFlag(arg) {
101
+ if (arg.startsWith("--"))
102
+ return true;
103
+ if (arg.startsWith("-") && arg.length === 2 && /[a-zA-Z]/.test(arg[1]))
104
+ return true;
105
+ return false;
106
+ }
107
+ function parseArgs(argv) {
108
+ const command = argv[0] ?? "";
109
+ const args = {};
110
+ const positional = [];
111
+ const shortFlags = {
112
+ p: "priority",
113
+ t: "tags",
114
+ s: "source",
115
+ a: "all",
116
+ d: "days",
117
+ h: "help",
118
+ };
119
+ let i = 1;
120
+ while (i < argv.length) {
121
+ const arg = argv[i];
122
+ if (arg.startsWith("--") && arg.includes("=")) {
123
+ const eqIdx = arg.indexOf("=");
124
+ const key = arg.slice(2, eqIdx);
125
+ const rawValue = arg.slice(eqIdx + 1);
126
+ if (BOOLEAN_FLAGS.has(key)) {
127
+ const lower = rawValue.toLowerCase();
128
+ if (lower === "true" || lower === "1" || lower === "") {
129
+ args[key] = true;
130
+ }
131
+ else if (lower === "false" || lower === "0") {
132
+ args[key] = false;
133
+ }
134
+ else {
135
+ throw new Error(`Flag --${key} is boolean; expected true/false/1/0 but got '${rawValue}'. ` +
136
+ `Either pass --${key} on its own, or use --${key}=true / --${key}=false.`);
137
+ }
138
+ }
139
+ else {
140
+ if (VALUE_FLAGS.has(key) && rawValue === "") {
141
+ throw missingValueError(key);
142
+ }
143
+ args[key] = rawValue;
144
+ }
145
+ i++;
146
+ continue;
147
+ }
148
+ if (arg.startsWith("--")) {
149
+ const key = arg.slice(2);
150
+ if (BOOLEAN_FLAGS.has(key)) {
151
+ args[key] = true;
152
+ i++;
153
+ }
154
+ else {
155
+ const next = argv[i + 1];
156
+ if (next && !isFlag(next)) {
157
+ args[key] = next;
158
+ i += 2;
159
+ }
160
+ else if (VALUE_FLAGS.has(key)) {
161
+ throw missingValueError(key);
162
+ }
163
+ else {
164
+ args[key] = true;
165
+ i++;
166
+ }
167
+ }
168
+ }
169
+ else if (arg.startsWith("-") && arg.length === 2 && /[a-zA-Z]/.test(arg[1])) {
170
+ const key = shortFlags[arg[1]] ?? arg[1];
171
+ if (BOOLEAN_FLAGS.has(key)) {
172
+ args[key] = true;
173
+ i++;
174
+ }
175
+ else {
176
+ const next = argv[i + 1];
177
+ if (next && !isFlag(next)) {
178
+ args[key] = next;
179
+ i += 2;
180
+ }
181
+ else if (VALUE_FLAGS.has(key)) {
182
+ throw missingValueError(key);
183
+ }
184
+ else {
185
+ args[key] = true;
186
+ i++;
187
+ }
188
+ }
189
+ }
190
+ else {
191
+ positional.push(arg);
192
+ i++;
193
+ }
194
+ }
195
+ return { command, args, positional };
196
+ }
197
+ function main() {
198
+ const rawArgs = process.argv.slice(2);
199
+ if (rawArgs.length === 0 || rawArgs.includes("--help") || rawArgs.includes("-h")) {
200
+ console.log(USAGE);
201
+ return;
202
+ }
203
+ let command;
204
+ let args;
205
+ let positional;
206
+ try {
207
+ ({ command, args, positional } = parseArgs(rawArgs));
208
+ }
209
+ catch (err) {
210
+ console.error(err.message);
211
+ process.exitCode = 2;
212
+ return;
213
+ }
214
+ // init doesn't need config
215
+ if (command === "init") {
216
+ cmdInit({ dir: positional[0] });
217
+ return;
218
+ }
219
+ let config;
220
+ try {
221
+ config = loadConfig();
222
+ }
223
+ catch (err) {
224
+ console.error(err.message);
225
+ process.exitCode = 1;
226
+ return;
227
+ }
228
+ // install-skills needs vault root but not necessarily a full config
229
+ try {
230
+ switch (command) {
231
+ case "install-skills":
232
+ cmdInstallSkills(config, {
233
+ install: args["install"] === true,
234
+ list: args["list"] === true,
235
+ update: args["update"] === true,
236
+ });
237
+ break;
238
+ case "new":
239
+ if (!positional[0]) {
240
+ console.error("Usage: vt new <title> [--priority P] [--tags t1,t2] [--source S] [--commit] [--body TEXT|--body-file PATH]");
241
+ process.exitCode = 1;
242
+ return;
243
+ }
244
+ cmdNew(config, {
245
+ title: positional[0],
246
+ priority: args["priority"]?.toLowerCase(),
247
+ tags: args["tags"],
248
+ source: args["source"],
249
+ body: args["body"],
250
+ bodyFile: args["body-file"],
251
+ commit: args["commit"] === true,
252
+ noDedupe: args["no-dedupe"] === true,
253
+ });
254
+ break;
255
+ case "list":
256
+ cmdList(config, {
257
+ status: args["status"]?.toLowerCase(),
258
+ priority: args["priority"]?.toLowerCase(),
259
+ tag: args["tag"],
260
+ all: args["all"] === true,
261
+ });
262
+ break;
263
+ case "search":
264
+ if (!positional[0]) {
265
+ console.error("Usage: vt search <keyword> [--all]");
266
+ process.exitCode = 1;
267
+ return;
268
+ }
269
+ cmdSearch(config, {
270
+ keyword: positional[0],
271
+ all: args["all"] === true,
272
+ });
273
+ break;
274
+ case "stale": {
275
+ let days;
276
+ if (args["days"] !== undefined) {
277
+ days = parseInt(args["days"], 10);
278
+ if (isNaN(days) || days < 1) {
279
+ console.error("Error: --days must be a positive integer");
280
+ process.exitCode = 1;
281
+ return;
282
+ }
283
+ }
284
+ cmdStale(config, { days });
285
+ break;
286
+ }
287
+ case "show":
288
+ if (!positional[0]) {
289
+ console.error("Usage: vt show <id-or-substring>");
290
+ process.exitCode = 1;
291
+ return;
292
+ }
293
+ cmdShow(config, { identifier: positional[0] });
294
+ break;
295
+ case "done":
296
+ if (!positional[0]) {
297
+ console.error("Usage: vt done <id-or-substring>");
298
+ process.exitCode = 1;
299
+ return;
300
+ }
301
+ cmdDone(config, { identifier: positional[0] });
302
+ break;
303
+ case "start":
304
+ if (!positional[0]) {
305
+ console.error("Usage: vt start <id-or-substring>");
306
+ process.exitCode = 1;
307
+ return;
308
+ }
309
+ cmdStart(config, { identifier: positional[0] });
310
+ break;
311
+ case "edit":
312
+ if (!positional[0]) {
313
+ console.error("Usage: vt edit <id-or-substring> [--status S] [--priority P] [--tags t1,t2]");
314
+ process.exitCode = 1;
315
+ return;
316
+ }
317
+ cmdEdit(config, {
318
+ identifier: positional[0],
319
+ status: args["status"]?.toLowerCase(),
320
+ priority: args["priority"]?.toLowerCase(),
321
+ tags: args["tags"],
322
+ });
323
+ break;
324
+ case "archive":
325
+ cmdArchive(config);
326
+ break;
327
+ case "tags":
328
+ cmdTags(config);
329
+ break;
330
+ case "lint":
331
+ cmdLint(config, {
332
+ only: args["only"],
333
+ scope: args["scope"],
334
+ json: args["json"] === true,
335
+ quiet: args["quiet"] === true,
336
+ noSuggestions: args["no-suggestions"] === true,
337
+ });
338
+ break;
339
+ default:
340
+ console.error(`Unknown command: ${command}\n`);
341
+ console.log(USAGE);
342
+ process.exitCode = 1;
343
+ }
344
+ }
345
+ catch (err) {
346
+ console.error(err.message);
347
+ process.exitCode = 1;
348
+ }
349
+ }
350
+ main();
351
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Config } from "../config.js";
2
+ export declare function cmdArchive(config: Config): void;
3
+ //# sourceMappingURL=archive.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"archive.d.ts","sourceRoot":"","sources":["../../src/commands/archive.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAG3C,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAa/C"}
@@ -0,0 +1,14 @@
1
+ import { TaskStore } from "../store.js";
2
+ export function cmdArchive(config) {
3
+ const store = new TaskStore(config);
4
+ const archived = store.archiveCompleted();
5
+ if (archived.length === 0) {
6
+ console.log("No completed tasks to archive.");
7
+ return;
8
+ }
9
+ for (const task of archived) {
10
+ console.log(` Archived: ${task.slug}.md`);
11
+ }
12
+ console.log(`\n${archived.length} task(s) archived.`);
13
+ }
14
+ //# sourceMappingURL=archive.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"archive.js","sourceRoot":"","sources":["../../src/commands/archive.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,UAAU,UAAU,CAAC,MAAc;IACvC,MAAM,KAAK,GAAG,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC;IACpC,MAAM,QAAQ,GAAG,KAAK,CAAC,gBAAgB,EAAE,CAAC;IAE1C,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;QAC9C,OAAO;IACT,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,KAAK,QAAQ,CAAC,MAAM,oBAAoB,CAAC,CAAC;AACxD,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { Config } from "../config.js";
2
+ export declare function cmdDone(config: Config, args: {
3
+ identifier: string;
4
+ }): void;
5
+ //# sourceMappingURL=done.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"done.d.ts","sourceRoot":"","sources":["../../src/commands/done.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAG3C,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAK1E"}
@@ -0,0 +1,8 @@
1
+ import { TaskStore } from "../store.js";
2
+ export function cmdDone(config, args) {
3
+ const store = new TaskStore(config);
4
+ const task = store.setStatus(args.identifier, "done");
5
+ const archived = task.filePath.startsWith(config.archiveDir);
6
+ console.log(`${task.slug}.md → done${archived ? " (archived)" : ""}`);
7
+ }
8
+ //# sourceMappingURL=done.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"done.js","sourceRoot":"","sources":["../../src/commands/done.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,UAAU,OAAO,CAAC,MAAc,EAAE,IAA4B;IAClE,MAAM,KAAK,GAAG,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC;IACpC,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IACtD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAC7D,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,aAAa,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACxE,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { Config } from "../config.js";
2
+ export declare function cmdEdit(config: Config, args: {
3
+ identifier: string;
4
+ status?: string;
5
+ priority?: string;
6
+ tags?: string;
7
+ }): void;
8
+ //# sourceMappingURL=edit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edit.d.ts","sourceRoot":"","sources":["../../src/commands/edit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAG3C,wBAAgB,OAAO,CACrB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAC9E,IAAI,CASN"}
@@ -0,0 +1,12 @@
1
+ import { TaskStore } from "../store.js";
2
+ export function cmdEdit(config, args) {
3
+ const store = new TaskStore(config);
4
+ const tags = args.tags ? args.tags.split(",").map((t) => t.trim()) : undefined;
5
+ const task = store.update(args.identifier, {
6
+ status: args.status,
7
+ priority: args.priority,
8
+ tags,
9
+ });
10
+ console.log(`Updated: ${task.slug}.md`);
11
+ }
12
+ //# sourceMappingURL=edit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edit.js","sourceRoot":"","sources":["../../src/commands/edit.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,UAAU,OAAO,CACrB,MAAc,EACd,IAA+E;IAE/E,MAAM,KAAK,GAAG,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC;IACpC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/E,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE;QACzC,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,IAAI;KACL,CAAC,CAAC;IACH,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC;AAC1C,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare function cmdInit(args: {
2
+ dir?: string;
3
+ }): void;
4
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AA6CA,wBAAgB,OAAO,CAAC,IAAI,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAyBpD"}
@@ -0,0 +1,60 @@
1
+ import { closeSync, existsSync, mkdirSync, openSync, readFileSync, writeFileSync, } from "node:fs";
2
+ import { join, resolve } from "node:path";
3
+ import { generateDefaultConfig, loadConfig } from "../config.js";
4
+ const COUNTER_IGNORE_LINE = ".vault-tasks-counter.json";
5
+ /**
6
+ * Atomically ensure `.vault-tasks-counter.json` is listed in .gitignore.
7
+ *
8
+ * Uses `openSync(path, 'wx')` to create the file exclusively; on EEXIST we
9
+ * read and append only if the line is missing. This avoids the TOCTOU race
10
+ * between `existsSync` and `writeFileSync` and guarantees we never overwrite
11
+ * an existing `.gitignore`.
12
+ */
13
+ function ensureCounterIgnored(gitignorePath) {
14
+ try {
15
+ const fd = openSync(gitignorePath, "wx");
16
+ try {
17
+ writeFileSync(fd, `${COUNTER_IGNORE_LINE}\n`, "utf-8");
18
+ }
19
+ finally {
20
+ closeSync(fd);
21
+ }
22
+ console.log("Created: .gitignore");
23
+ return;
24
+ }
25
+ catch (err) {
26
+ if (err.code !== "EEXIST")
27
+ throw err;
28
+ }
29
+ const content = readFileSync(gitignorePath, "utf-8");
30
+ // Line-level match so we don't get fooled by "#.vault-tasks-counter.json" in a comment.
31
+ const lines = content.split(/\r?\n/).map((l) => l.trim());
32
+ if (lines.includes(COUNTER_IGNORE_LINE))
33
+ return;
34
+ const appended = content.endsWith("\n") ? content : content + "\n";
35
+ writeFileSync(gitignorePath, appended + `${COUNTER_IGNORE_LINE}\n`, "utf-8");
36
+ console.log(`Updated: .gitignore (added ${COUNTER_IGNORE_LINE})`);
37
+ }
38
+ export function cmdInit(args) {
39
+ const root = resolve(args.dir ?? process.cwd());
40
+ const configPath = join(root, ".vault-tasks.toml");
41
+ const backlogDir = join(root, "backlog");
42
+ if (existsSync(configPath)) {
43
+ console.log(`.vault-tasks.toml already exists at ${configPath}`);
44
+ return;
45
+ }
46
+ writeFileSync(configPath, generateDefaultConfig(), "utf-8");
47
+ console.log(`Created: .vault-tasks.toml`);
48
+ const backlogExisted = existsSync(backlogDir);
49
+ mkdirSync(backlogDir, { recursive: true });
50
+ if (!backlogExisted)
51
+ console.log(`Created: backlog/`);
52
+ // Only add counter file to .gitignore for sequential ID strategy
53
+ const config = loadConfig(root);
54
+ if (config.idStrategy === "sequential") {
55
+ ensureCounterIgnored(join(root, ".gitignore"));
56
+ }
57
+ console.log("\nvault-tasks initialized. Create your first task with:");
58
+ console.log(' vt new "My first task"');
59
+ }
60
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { Config } from "../config.js";
2
+ export declare function cmdInstallSkills(config: Config, args: {
3
+ install?: boolean;
4
+ list?: boolean;
5
+ update?: boolean;
6
+ }): void;
7
+ //# sourceMappingURL=install-skills.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install-skills.d.ts","sourceRoot":"","sources":["../../src/commands/install-skills.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AA6F3C,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAC5D,IAAI,CAiEN"}