things-api 0.8.0 → 0.10.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.
- package/README.md +31 -11
- package/dist/audit/log.js +56 -2
- package/dist/audit/log.js.map +1 -1
- package/dist/audit/schema.d.ts +26 -8
- package/dist/audit/schema.js +42 -1
- package/dist/audit/schema.js.map +1 -1
- package/dist/cli/commands/area.d.ts +34 -2
- package/dist/cli/commands/area.js +140 -28
- package/dist/cli/commands/area.js.map +1 -1
- package/dist/cli/commands/doctor.d.ts +1 -1
- package/dist/cli/commands/doctor.js +44 -5
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/mcp.js +23 -4
- package/dist/cli/commands/mcp.js.map +1 -1
- package/dist/cli/commands/project.d.ts +23 -1
- package/dist/cli/commands/project.js +82 -15
- package/dist/cli/commands/project.js.map +1 -1
- package/dist/cli/commands/reads.d.ts +6 -125
- package/dist/cli/commands/reads.js +649 -657
- package/dist/cli/commands/reads.js.map +1 -1
- package/dist/cli/commands/repeat-flags.d.ts +20 -0
- package/dist/cli/commands/repeat-flags.js +76 -0
- package/dist/cli/commands/repeat-flags.js.map +1 -0
- package/dist/cli/commands/setup.js +2 -3
- package/dist/cli/commands/setup.js.map +1 -1
- package/dist/cli/commands/show.d.ts +1 -1
- package/dist/cli/commands/show.js +169 -18
- package/dist/cli/commands/show.js.map +1 -1
- package/dist/cli/commands/snapshot.js +1 -1
- package/dist/cli/commands/snapshot.js.map +1 -1
- package/dist/cli/commands/todo.d.ts +1 -1
- package/dist/cli/commands/todo.js +21 -9
- package/dist/cli/commands/todo.js.map +1 -1
- package/dist/cli/commands/writes.js +378 -148
- package/dist/cli/commands/writes.js.map +1 -1
- package/dist/cli/did-you-mean.d.ts +29 -0
- package/dist/cli/did-you-mean.js +53 -0
- package/dist/cli/did-you-mean.js.map +1 -0
- package/dist/cli/excess-args.d.ts +15 -0
- package/dist/cli/excess-args.js +51 -0
- package/dist/cli/excess-args.js.map +1 -0
- package/dist/cli/glyphs.d.ts +67 -7
- package/dist/cli/glyphs.js +202 -19
- package/dist/cli/glyphs.js.map +1 -1
- package/dist/cli/help.d.ts +54 -0
- package/dist/cli/help.js +355 -0
- package/dist/cli/help.js.map +1 -0
- package/dist/cli/main.js +36 -21
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/period.d.ts +39 -0
- package/dist/cli/period.js +141 -0
- package/dist/cli/period.js.map +1 -0
- package/dist/cli/read-driver.d.ts +83 -0
- package/dist/cli/read-driver.js +215 -0
- package/dist/cli/read-driver.js.map +1 -0
- package/dist/cli/render.d.ts +246 -0
- package/dist/cli/render.js +806 -0
- package/dist/cli/render.js.map +1 -0
- package/dist/cli/resolve-invocation.d.ts +116 -0
- package/dist/cli/resolve-invocation.js +261 -0
- package/dist/cli/resolve-invocation.js.map +1 -0
- package/dist/cli/shell-quote.d.ts +9 -0
- package/dist/cli/shell-quote.js +12 -0
- package/dist/cli/shell-quote.js.map +1 -0
- package/dist/cli/tag-filters.d.ts +59 -0
- package/dist/cli/tag-filters.js +57 -0
- package/dist/cli/tag-filters.js.map +1 -0
- package/dist/cli/verb-hint.d.ts +25 -0
- package/dist/cli/verb-hint.js +138 -0
- package/dist/cli/verb-hint.js.map +1 -0
- package/dist/cli/width.d.ts +135 -0
- package/dist/cli/width.js +313 -0
- package/dist/cli/width.js.map +1 -0
- package/dist/client.d.ts +146 -24
- package/dist/client.js +106 -16
- package/dist/client.js.map +1 -1
- package/dist/config.d.ts +11 -0
- package/dist/config.js +3 -0
- package/dist/config.js.map +1 -1
- package/dist/contracts.d.ts +136 -1
- package/dist/contracts.js +44 -1
- package/dist/contracts.js.map +1 -1
- package/dist/db/fingerprint.d.ts +12 -0
- package/dist/db/fingerprint.js +15 -1
- package/dist/db/fingerprint.js.map +1 -1
- package/dist/db/locate.js +1 -1
- package/dist/db/locate.js.map +1 -1
- package/dist/diagnose.d.ts +63 -0
- package/dist/diagnose.js +38 -1
- package/dist/diagnose.js.map +1 -1
- package/dist/index.d.ts +30 -4
- package/dist/index.js +35 -2
- package/dist/index.js.map +1 -1
- package/dist/mcp/server.d.ts +9 -1
- package/dist/mcp/server.js +850 -128
- package/dist/mcp/server.js.map +1 -1
- package/dist/model/entities.d.ts +40 -7
- package/dist/model/entities.js.map +1 -1
- package/dist/model/mappers.d.ts +7 -0
- package/dist/model/mappers.js +20 -3
- package/dist/model/mappers.js.map +1 -1
- package/dist/model/occurrences.d.ts +6 -1
- package/dist/model/occurrences.js +9 -5
- package/dist/model/occurrences.js.map +1 -1
- package/dist/model/recurrence.d.ts +17 -8
- package/dist/model/recurrence.js.map +1 -1
- package/dist/model/serialize.d.ts +28 -0
- package/dist/model/serialize.js +80 -0
- package/dist/model/serialize.js.map +1 -0
- package/dist/model/when-sugar.d.ts +47 -0
- package/dist/model/when-sugar.js +45 -0
- package/dist/model/when-sugar.js.map +1 -0
- package/dist/read/area-view.d.ts +8 -1
- package/dist/read/area-view.js +49 -13
- package/dist/read/area-view.js.map +1 -1
- package/dist/read/caps.d.ts +14 -0
- package/dist/read/caps.js +21 -0
- package/dist/read/caps.js.map +1 -0
- package/dist/read/filter-contract.d.ts +117 -0
- package/dist/read/filter-contract.js +78 -0
- package/dist/read/filter-contract.js.map +1 -0
- package/dist/read/log-boundary.d.ts +9 -4
- package/dist/read/log-boundary.js.map +1 -1
- package/dist/read/predicates.d.ts +61 -0
- package/dist/read/predicates.js +78 -0
- package/dist/read/predicates.js.map +1 -0
- package/dist/read/project-view.d.ts +12 -1
- package/dist/read/project-view.js +39 -8
- package/dist/read/project-view.js.map +1 -1
- package/dist/read/queries.d.ts +156 -8
- package/dist/read/queries.js +261 -38
- package/dist/read/queries.js.map +1 -1
- package/dist/read/search-rank.d.ts +36 -0
- package/dist/read/search-rank.js +31 -0
- package/dist/read/search-rank.js.map +1 -0
- package/dist/read/sections.d.ts +51 -0
- package/dist/read/sections.js +37 -0
- package/dist/read/sections.js.map +1 -0
- package/dist/read/show-target.d.ts +13 -4
- package/dist/read/show-target.js +11 -2
- package/dist/read/show-target.js.map +1 -1
- package/dist/read/sidebar-order.d.ts +19 -0
- package/dist/read/sidebar-order.js +93 -0
- package/dist/read/sidebar-order.js.map +1 -0
- package/dist/read/tags.d.ts +27 -3
- package/dist/read/tags.js +83 -12
- package/dist/read/tags.js.map +1 -1
- package/dist/read/truncation.d.ts +71 -0
- package/dist/read/truncation.js +217 -0
- package/dist/read/truncation.js.map +1 -0
- package/dist/read/views.d.ts +177 -19
- package/dist/read/views.js +390 -213
- package/dist/read/views.js.map +1 -1
- package/dist/surface-copy.d.ts +42 -0
- package/dist/surface-copy.js +55 -0
- package/dist/surface-copy.js.map +1 -1
- package/dist/sync-health.d.ts +78 -0
- package/dist/sync-health.js +312 -0
- package/dist/sync-health.js.map +1 -0
- package/dist/write/accessibility-probe.d.ts +12 -0
- package/dist/write/accessibility-probe.js +63 -0
- package/dist/write/accessibility-probe.js.map +1 -0
- package/dist/write/automation-probe.d.ts +7 -0
- package/dist/write/automation-probe.js +8 -1
- package/dist/write/automation-probe.js.map +1 -1
- package/dist/write/batch.js +4 -2
- package/dist/write/batch.js.map +1 -1
- package/dist/write/capabilities.d.ts +8 -0
- package/dist/write/capabilities.js +13 -5
- package/dist/write/capabilities.js.map +1 -1
- package/dist/write/commands.d.ts +2 -0
- package/dist/write/commands.js +562 -48
- package/dist/write/commands.js.map +1 -1
- package/dist/write/edit-checklist.js +3 -2
- package/dist/write/edit-checklist.js.map +1 -1
- package/dist/write/guards.d.ts +2 -7
- package/dist/write/guards.js +64 -6
- package/dist/write/guards.js.map +1 -1
- package/dist/write/heading.js +2 -0
- package/dist/write/heading.js.map +1 -1
- package/dist/write/lock.d.ts +40 -2
- package/dist/write/lock.js +91 -14
- package/dist/write/lock.js.map +1 -1
- package/dist/write/make-repeating-project.d.ts +4 -0
- package/dist/write/make-repeating-project.js +253 -0
- package/dist/write/make-repeating-project.js.map +1 -0
- package/dist/write/operations.d.ts +145 -1
- package/dist/write/operations.js +48 -0
- package/dist/write/operations.js.map +1 -1
- package/dist/write/pipeline.d.ts +19 -0
- package/dist/write/pipeline.js +109 -26
- package/dist/write/pipeline.js.map +1 -1
- package/dist/write/pre-state.d.ts +68 -3
- package/dist/write/pre-state.js +102 -3
- package/dist/write/pre-state.js.map +1 -1
- package/dist/write/reopen.js +3 -2
- package/dist/write/reopen.js.map +1 -1
- package/dist/write/reorder.js +27 -17
- package/dist/write/reorder.js.map +1 -1
- package/dist/write/repeat-rule.d.ts +22 -0
- package/dist/write/repeat-rule.js +258 -0
- package/dist/write/repeat-rule.js.map +1 -0
- package/dist/write/reversibility.js +49 -0
- package/dist/write/reversibility.js.map +1 -1
- package/dist/write/tag-refs.d.ts +47 -0
- package/dist/write/tag-refs.js +126 -0
- package/dist/write/tag-refs.js.map +1 -0
- package/dist/write/undo.d.ts +74 -5
- package/dist/write/undo.js +494 -80
- package/dist/write/undo.js.map +1 -1
- package/dist/write/vectors/registry.d.ts +17 -1
- package/dist/write/vectors/registry.js +18 -2
- package/dist/write/vectors/registry.js.map +1 -1
- package/dist/write/vectors/types.d.ts +119 -3
- package/dist/write/vectors/ui-certification.d.ts +48 -0
- package/dist/write/vectors/ui-certification.js +46 -0
- package/dist/write/vectors/ui-certification.js.map +1 -0
- package/dist/write/vectors/ui-drag.d.ts +188 -0
- package/dist/write/vectors/ui-drag.js +1095 -0
- package/dist/write/vectors/ui-drag.js.map +1 -0
- package/dist/write/vectors/ui-recipes.d.ts +70 -0
- package/dist/write/vectors/ui-recipes.js +558 -0
- package/dist/write/vectors/ui-recipes.js.map +1 -0
- package/dist/write/vectors/ui.d.ts +137 -0
- package/dist/write/vectors/ui.js +656 -0
- package/dist/write/vectors/ui.js.map +1 -0
- package/dist/write/verify/delta.d.ts +31 -3
- package/dist/write/verify/delta.js +22 -6
- package/dist/write/verify/delta.js.map +1 -1
- package/dist/write/verify/poller.js +1 -0
- package/dist/write/verify/poller.js.map +1 -1
- package/package.json +1 -1
- package/dist/cli/exit-codes.d.ts +0 -26
- package/dist/cli/exit-codes.js +0 -26
- package/dist/cli/exit-codes.js.map +0 -1
- package/dist/cli/output.d.ts +0 -42
- package/dist/cli/output.js +0 -16
- package/dist/cli/output.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/cli/render.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The single command router (docs/design/cli-grammar.md). Takes raw user argv
|
|
3
|
+
* (already stripped of the node/script prefix) and applies the precedence
|
|
4
|
+
* chain — registered command/alias → view keyword → reference — returning a
|
|
5
|
+
* normalized dispatch that `main.ts` feeds to commander. This replaces the
|
|
6
|
+
* former `expandShorthand` argv hack, the per-command keyword rewrites, and
|
|
7
|
+
* the hidden `--via-shorthand` marker.
|
|
8
|
+
*
|
|
9
|
+
* The resolver is argv-level and NEVER touches the database: it decides the
|
|
10
|
+
* command SHAPE. Reference resolution (uuid prefix → share link → tiered name
|
|
11
|
+
* match) happens later in `classifyShowTarget`, which needs the db. When a
|
|
12
|
+
* form's canonical command is only knowable after that resolution (bare noun,
|
|
13
|
+
* uuid/share-link routing), the `show`/`open` action fills `canonical` in via
|
|
14
|
+
* `setInvocationCanonical`; the view-keyword rewrite knows it immediately.
|
|
15
|
+
*/
|
|
16
|
+
import type { Command } from "commander";
|
|
17
|
+
/**
|
|
18
|
+
* The type namespaces whose `show` verb takes a reference and may be omitted:
|
|
19
|
+
* `things area Hobbies` → `things area show Hobbies`. Restricted to the three
|
|
20
|
+
* TYPE groups — `config show` also exists but takes no reference, so `config`
|
|
21
|
+
* is deliberately excluded. Registered subcommands (verbs) always win over
|
|
22
|
+
* this sugar (the reserved-word rule).
|
|
23
|
+
*/
|
|
24
|
+
export declare const IMPLIED_SHOW_NAMESPACES: Set<string>;
|
|
25
|
+
/**
|
|
26
|
+
* `show`'s keyword vocabulary: EVERY list-view command name, PLUS the section
|
|
27
|
+
* sugars in {@link KEYWORD_EXPANSIONS}. `things show <kw>` (and the bare
|
|
28
|
+
* `things <kw>`) dispatches to the identical `things <kw>` command — except the
|
|
29
|
+
* expansion keywords, which route to a command PLUS flags. Wider than the app's
|
|
30
|
+
* URL ids because `show` renders our own views — the plurals are real commands
|
|
31
|
+
* too, and `evening` is the This-Evening slice of Today.
|
|
32
|
+
*/
|
|
33
|
+
export declare const SHOW_KEYWORDS: Set<string>;
|
|
34
|
+
/**
|
|
35
|
+
* `open`'s keyword vocabulary: ONLY the app's verified URL-scheme show ids.
|
|
36
|
+
* `open`'s vocabulary belongs to the app (it hands the id straight to
|
|
37
|
+
* `things:///show?id=<kw>`), so the plurals — which have no app list screen —
|
|
38
|
+
* are deliberately excluded and rejected with a tailored error.
|
|
39
|
+
*/
|
|
40
|
+
export declare const OPEN_KEYWORDS: Set<string>;
|
|
41
|
+
export type InvocationForm =
|
|
42
|
+
/** A registered command/alias, or a flag-led/empty argv — nothing normalized. */
|
|
43
|
+
"canonical"
|
|
44
|
+
/** `things <subject>` — the verb `show` was omitted. */
|
|
45
|
+
| "bare-noun"
|
|
46
|
+
/** `things <type> <subject>` — the `show` verb inside a type namespace was omitted. */
|
|
47
|
+
| "namespace-show"
|
|
48
|
+
/** `things show <ref>` — explicit loose router by reference. */
|
|
49
|
+
| "loose-show"
|
|
50
|
+
/** `things open <ref>` — explicit loose router by reference. */
|
|
51
|
+
| "loose-open"
|
|
52
|
+
/** `things show <view-keyword>` — rewritten to the `<view-keyword>` command. */
|
|
53
|
+
| "show-keyword"
|
|
54
|
+
/**
|
|
55
|
+
* `things <mutation-verb> …` at the top level — a bare mutation verb (update,
|
|
56
|
+
* add, delete, …) that would otherwise fall into show-sugar. Dispatched to a
|
|
57
|
+
* dedicated hint handler that suggests the namespaced write command instead
|
|
58
|
+
* of emitting a confusing `show` usage error. `ref` carries the verb.
|
|
59
|
+
*/
|
|
60
|
+
| "verb-hint";
|
|
61
|
+
/**
|
|
62
|
+
* Write verbs that shadow the bare-noun sugar in first position (the
|
|
63
|
+
* reserved-word rule extended to writes). The registered write-group
|
|
64
|
+
* subcommands (`todo`/`project`/`area`/`heading`/`tag`) supply the real set at
|
|
65
|
+
* classify time; these SYNONYMS are verbs users type that map to a differently
|
|
66
|
+
* named command (`create` → `add`). Documented in docs/design/cli-grammar.md.
|
|
67
|
+
*/
|
|
68
|
+
export declare const MUTATION_VERB_SYNONYMS: Set<string>;
|
|
69
|
+
/**
|
|
70
|
+
* The write-command groups whose subcommands are reserved mutation verbs, in
|
|
71
|
+
* the order the namespaced-form hint lists them (`things todo|project|area|
|
|
72
|
+
* tag|heading <verb> …`).
|
|
73
|
+
*/
|
|
74
|
+
export declare const WRITE_GROUP_ORDER: string[];
|
|
75
|
+
/** The reserved mutation-verb set: every write-group subcommand plus the synonyms. */
|
|
76
|
+
export declare function mutationVerbs(program: Command): Set<string>;
|
|
77
|
+
export interface ResolvedInvocation {
|
|
78
|
+
form: InvocationForm;
|
|
79
|
+
/** Normalized argv handed to commander (`from: "user"`). */
|
|
80
|
+
argv: string[];
|
|
81
|
+
/**
|
|
82
|
+
* The canonical runnable command string, once known. Set at resolve time for
|
|
83
|
+
* `show-keyword`; filled in by the `show` action after reference resolution
|
|
84
|
+
* for the ref-routing forms; stays null for canonical invocations (and for
|
|
85
|
+
* loose forms whose result is not a routing sugar worth echoing).
|
|
86
|
+
*/
|
|
87
|
+
canonical: string | null;
|
|
88
|
+
/** The subject/reference token (for the action to build the typed canonical). */
|
|
89
|
+
ref: string | null;
|
|
90
|
+
}
|
|
91
|
+
/** The invocation the current process is running (null before `resolveInvocation`). */
|
|
92
|
+
export declare function getInvocation(): ResolvedInvocation | null;
|
|
93
|
+
/**
|
|
94
|
+
* Record the canonical command a ref-routing form resolved to, so the renderer
|
|
95
|
+
* can echo it and stamp `meta.resolvedCommand`. No-op when the form is not a
|
|
96
|
+
* routing sugar (canonical invocations echo nothing).
|
|
97
|
+
*/
|
|
98
|
+
export declare function setInvocationCanonical(canonical: string): void;
|
|
99
|
+
/**
|
|
100
|
+
* Classify raw user argv into a normalized dispatch and record it as the
|
|
101
|
+
* current invocation. Idempotent per process; called once by `runCli` (and by
|
|
102
|
+
* the in-process test harnesses) before commander parses.
|
|
103
|
+
*/
|
|
104
|
+
export declare function resolveInvocation(program: Command, args: string[]): ResolvedInvocation;
|
|
105
|
+
/**
|
|
106
|
+
* Skip over LEADING GLOBAL-STYLE FLAGS to find the token being classified, so
|
|
107
|
+
* `things --json Hobbies` routes exactly like `things Hobbies --json`. Only
|
|
108
|
+
* the global read options are recognized here — `--json` (boolean) and `--db`
|
|
109
|
+
* (value-taking: its value is skipped too, never misread as the subject).
|
|
110
|
+
* Any other leading flag returns null — an unknown flag keeps the plain
|
|
111
|
+
* fall-through to commander (which reports it), rather than guessing whether
|
|
112
|
+
* the next token is that flag's value or the subject.
|
|
113
|
+
*/
|
|
114
|
+
export declare function indexPastLeadingFlags(args: string[]): number | null;
|
|
115
|
+
/** The registered subcommand names + aliases of a command group (empty when the group is unknown). */
|
|
116
|
+
export declare function subcommandsOf(program: Command, groupName: string): Set<string>;
|
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
import { shellQuote } from "./shell-quote.js";
|
|
2
|
+
/**
|
|
3
|
+
* The type namespaces whose `show` verb takes a reference and may be omitted:
|
|
4
|
+
* `things area Hobbies` → `things area show Hobbies`. Restricted to the three
|
|
5
|
+
* TYPE groups — `config show` also exists but takes no reference, so `config`
|
|
6
|
+
* is deliberately excluded. Registered subcommands (verbs) always win over
|
|
7
|
+
* this sugar (the reserved-word rule).
|
|
8
|
+
*/
|
|
9
|
+
export const IMPLIED_SHOW_NAMESPACES = new Set(["area", "project", "todo"]);
|
|
10
|
+
/**
|
|
11
|
+
* `show`'s keyword vocabulary: EVERY list-view command name, PLUS the section
|
|
12
|
+
* sugars in {@link KEYWORD_EXPANSIONS}. `things show <kw>` (and the bare
|
|
13
|
+
* `things <kw>`) dispatches to the identical `things <kw>` command — except the
|
|
14
|
+
* expansion keywords, which route to a command PLUS flags. Wider than the app's
|
|
15
|
+
* URL ids because `show` renders our own views — the plurals are real commands
|
|
16
|
+
* too, and `evening` is the This-Evening slice of Today.
|
|
17
|
+
*/
|
|
18
|
+
export const SHOW_KEYWORDS = new Set([
|
|
19
|
+
"inbox",
|
|
20
|
+
"today",
|
|
21
|
+
"anytime",
|
|
22
|
+
"upcoming",
|
|
23
|
+
"someday",
|
|
24
|
+
"logbook",
|
|
25
|
+
"trash",
|
|
26
|
+
"projects",
|
|
27
|
+
"areas",
|
|
28
|
+
"tags",
|
|
29
|
+
"evening",
|
|
30
|
+
]);
|
|
31
|
+
/**
|
|
32
|
+
* SHOW_KEYWORDS that are NOT a same-named command but a section/filter sugar:
|
|
33
|
+
* they expand to a real command PLUS flags. `evening` is the This-Evening
|
|
34
|
+
* section of Today, so `things evening` / `things show evening` both normalize
|
|
35
|
+
* to `things today --evening`.
|
|
36
|
+
*/
|
|
37
|
+
const KEYWORD_EXPANSIONS = {
|
|
38
|
+
evening: ["today", "--evening"],
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* Build the show-keyword dispatch for a view keyword: a plain keyword becomes
|
|
42
|
+
* its own command; an expansion keyword becomes its command plus the fixed
|
|
43
|
+
* flags. `rest` carries the user's trailing tokens through unchanged.
|
|
44
|
+
*/
|
|
45
|
+
function keywordDispatch(kw, rest) {
|
|
46
|
+
const expansion = KEYWORD_EXPANSIONS[kw] ?? [kw];
|
|
47
|
+
return {
|
|
48
|
+
form: "show-keyword",
|
|
49
|
+
argv: [...expansion, ...rest],
|
|
50
|
+
canonical: `things ${expansion.join(" ")}`,
|
|
51
|
+
ref: kw,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* `open`'s keyword vocabulary: ONLY the app's verified URL-scheme show ids.
|
|
56
|
+
* `open`'s vocabulary belongs to the app (it hands the id straight to
|
|
57
|
+
* `things:///show?id=<kw>`), so the plurals — which have no app list screen —
|
|
58
|
+
* are deliberately excluded and rejected with a tailored error.
|
|
59
|
+
*/
|
|
60
|
+
export const OPEN_KEYWORDS = new Set([
|
|
61
|
+
"inbox",
|
|
62
|
+
"today",
|
|
63
|
+
"anytime",
|
|
64
|
+
"upcoming",
|
|
65
|
+
"someday",
|
|
66
|
+
"logbook",
|
|
67
|
+
"trash",
|
|
68
|
+
]);
|
|
69
|
+
/**
|
|
70
|
+
* Write verbs that shadow the bare-noun sugar in first position (the
|
|
71
|
+
* reserved-word rule extended to writes). The registered write-group
|
|
72
|
+
* subcommands (`todo`/`project`/`area`/`heading`/`tag`) supply the real set at
|
|
73
|
+
* classify time; these SYNONYMS are verbs users type that map to a differently
|
|
74
|
+
* named command (`create` → `add`). Documented in docs/design/cli-grammar.md.
|
|
75
|
+
*/
|
|
76
|
+
export const MUTATION_VERB_SYNONYMS = new Set(["create"]);
|
|
77
|
+
/**
|
|
78
|
+
* The write-command groups whose subcommands are reserved mutation verbs, in
|
|
79
|
+
* the order the namespaced-form hint lists them (`things todo|project|area|
|
|
80
|
+
* tag|heading <verb> …`).
|
|
81
|
+
*/
|
|
82
|
+
export const WRITE_GROUP_ORDER = ["todo", "project", "area", "tag", "heading"];
|
|
83
|
+
/** The reserved mutation-verb set: every write-group subcommand plus the synonyms. */
|
|
84
|
+
export function mutationVerbs(program) {
|
|
85
|
+
const verbs = new Set(MUTATION_VERB_SYNONYMS);
|
|
86
|
+
for (const group of WRITE_GROUP_ORDER) {
|
|
87
|
+
for (const v of subcommandsOf(program, group))
|
|
88
|
+
verbs.add(v);
|
|
89
|
+
}
|
|
90
|
+
return verbs;
|
|
91
|
+
}
|
|
92
|
+
let current = null;
|
|
93
|
+
/** The invocation the current process is running (null before `resolveInvocation`). */
|
|
94
|
+
export function getInvocation() {
|
|
95
|
+
return current;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Record the canonical command a ref-routing form resolved to, so the renderer
|
|
99
|
+
* can echo it and stamp `meta.resolvedCommand`. No-op when the form is not a
|
|
100
|
+
* routing sugar (canonical invocations echo nothing).
|
|
101
|
+
*/
|
|
102
|
+
export function setInvocationCanonical(canonical) {
|
|
103
|
+
if (current !== null)
|
|
104
|
+
current.canonical = canonical;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Classify raw user argv into a normalized dispatch and record it as the
|
|
108
|
+
* current invocation. Idempotent per process; called once by `runCli` (and by
|
|
109
|
+
* the in-process test harnesses) before commander parses.
|
|
110
|
+
*/
|
|
111
|
+
export function resolveInvocation(program, args) {
|
|
112
|
+
current = classify(program, args);
|
|
113
|
+
return current;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Skip over LEADING GLOBAL-STYLE FLAGS to find the token being classified, so
|
|
117
|
+
* `things --json Hobbies` routes exactly like `things Hobbies --json`. Only
|
|
118
|
+
* the global read options are recognized here — `--json` (boolean) and `--db`
|
|
119
|
+
* (value-taking: its value is skipped too, never misread as the subject).
|
|
120
|
+
* Any other leading flag returns null — an unknown flag keeps the plain
|
|
121
|
+
* fall-through to commander (which reports it), rather than guessing whether
|
|
122
|
+
* the next token is that flag's value or the subject.
|
|
123
|
+
*/
|
|
124
|
+
export function indexPastLeadingFlags(args) {
|
|
125
|
+
let i = 0;
|
|
126
|
+
while (i < args.length) {
|
|
127
|
+
const tok = args[i] ?? "";
|
|
128
|
+
if (!tok.startsWith("-"))
|
|
129
|
+
return i;
|
|
130
|
+
if (tok === "--json") {
|
|
131
|
+
i += 1;
|
|
132
|
+
}
|
|
133
|
+
else if (tok === "--db") {
|
|
134
|
+
i += 2; // skip the flag AND its value
|
|
135
|
+
}
|
|
136
|
+
else if (tok.startsWith("--db=")) {
|
|
137
|
+
i += 1;
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
return null; // unknown leading flag — commander's to handle
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
return i; // flags only, no subject (e.g. bare `things --json`)
|
|
144
|
+
}
|
|
145
|
+
/** The registered subcommand names + aliases of a command group (empty when the group is unknown). */
|
|
146
|
+
export function subcommandsOf(program, groupName) {
|
|
147
|
+
const group = program.commands.find((c) => c.name() === groupName || c.aliases().includes(groupName));
|
|
148
|
+
const names = new Set();
|
|
149
|
+
if (group === undefined)
|
|
150
|
+
return names;
|
|
151
|
+
for (const sub of group.commands) {
|
|
152
|
+
names.add(sub.name());
|
|
153
|
+
for (const alias of sub.aliases())
|
|
154
|
+
names.add(alias);
|
|
155
|
+
}
|
|
156
|
+
return names;
|
|
157
|
+
}
|
|
158
|
+
function classify(program, args) {
|
|
159
|
+
const at = indexPastLeadingFlags(args);
|
|
160
|
+
const first = at === null ? undefined : args[at];
|
|
161
|
+
// An empty, flags-only, or unknown-flag-led argv is commander's to handle
|
|
162
|
+
// (help, --version, error).
|
|
163
|
+
if (first === undefined) {
|
|
164
|
+
return { form: "canonical", argv: args, canonical: null, ref: null };
|
|
165
|
+
}
|
|
166
|
+
const known = new Set(["help"]);
|
|
167
|
+
for (const c of program.commands) {
|
|
168
|
+
known.add(c.name());
|
|
169
|
+
for (const alias of c.aliases())
|
|
170
|
+
known.add(alias);
|
|
171
|
+
}
|
|
172
|
+
if (at !== 0) {
|
|
173
|
+
// A registered command reached THROUGH leading flags stays untouched:
|
|
174
|
+
// program-level flags before a command were an error before and stay one.
|
|
175
|
+
if (known.has(first)) {
|
|
176
|
+
return { form: "canonical", argv: args, canonical: null, ref: null };
|
|
177
|
+
}
|
|
178
|
+
// Precedence 3 through leading global flags: a bare-noun subject routes
|
|
179
|
+
// through `show` with the flags left in place — commander accepts options
|
|
180
|
+
// before arguments on the subcommand. A leading MUTATION VERB is caught
|
|
181
|
+
// first and routed to the write hint instead of the show-sugar.
|
|
182
|
+
if (mutationVerbs(program).has(first.toLowerCase())) {
|
|
183
|
+
return { form: "verb-hint", argv: args, canonical: null, ref: first };
|
|
184
|
+
}
|
|
185
|
+
return { form: "bare-noun", argv: ["show", ...args], canonical: null, ref: first };
|
|
186
|
+
}
|
|
187
|
+
// Precedence 1: a registered command/alias always wins (names are reserved).
|
|
188
|
+
if (known.has(first)) {
|
|
189
|
+
if (first === "show") {
|
|
190
|
+
const second = args[1];
|
|
191
|
+
// Precedence 2 (show): a view keyword routes to that view command (or,
|
|
192
|
+
// for a section sugar like `evening`, to its command + flags).
|
|
193
|
+
if (second !== undefined && SHOW_KEYWORDS.has(second.toLowerCase())) {
|
|
194
|
+
return keywordDispatch(second.toLowerCase(), args.slice(2));
|
|
195
|
+
}
|
|
196
|
+
return { form: "loose-show", argv: args, canonical: null, ref: second ?? null };
|
|
197
|
+
}
|
|
198
|
+
if (first === "open") {
|
|
199
|
+
// Precedence 2 (open) is handled in the action: keyword launching and the
|
|
200
|
+
// plural-not-openable error both need the keyword sets, and open renders
|
|
201
|
+
// no card to anchor an echo to.
|
|
202
|
+
return { form: "loose-open", argv: args, canonical: null, ref: args[1] ?? null };
|
|
203
|
+
}
|
|
204
|
+
// Namespace implied-show: inside a TYPE group with a `show` verb, a first
|
|
205
|
+
// token that is not one of the group's registered subcommands is a subject
|
|
206
|
+
// with the verb omitted — `things area Hobbies` → `things area show
|
|
207
|
+
// Hobbies`. Registered verbs win (reserved-word rule); a flag or an absent
|
|
208
|
+
// token leaves the bare group command to commander (help / usage error).
|
|
209
|
+
if (at === 0 && IMPLIED_SHOW_NAMESPACES.has(first)) {
|
|
210
|
+
const second = args[1];
|
|
211
|
+
if (second !== undefined &&
|
|
212
|
+
!second.startsWith("-") &&
|
|
213
|
+
!subcommandsOf(program, first).has(second)) {
|
|
214
|
+
return {
|
|
215
|
+
form: "namespace-show",
|
|
216
|
+
argv: [first, "show", ...args.slice(1)],
|
|
217
|
+
canonical: `things ${first} show ${shellQuote(second)}`,
|
|
218
|
+
ref: second,
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
// Plural collection synonym: `things projects <ref>` / `things areas <ref>`
|
|
223
|
+
// show that one project/area — a true synonym of the singular `show` verb,
|
|
224
|
+
// which the plural command delegates to. Like the namespace implied-show it
|
|
225
|
+
// echoes the canonical SINGULAR command (`≡ things project show <ref>`) and
|
|
226
|
+
// stamps meta.resolvedCommand. An explicit `show` verb is forgiven and
|
|
227
|
+
// dropped here (`things projects show <ref>`), so the plural command still
|
|
228
|
+
// sees a single ref positional. A bare `things projects` (or a flag-led one)
|
|
229
|
+
// is the list form and stays canonical — echo-free.
|
|
230
|
+
if (at === 0 && (first === "projects" || first === "areas")) {
|
|
231
|
+
const singular = first === "projects" ? "project" : "area";
|
|
232
|
+
const rest = args[1] === "show" ? args.slice(2) : args.slice(1);
|
|
233
|
+
const subject = rest[0];
|
|
234
|
+
if (subject !== undefined && !subject.startsWith("-")) {
|
|
235
|
+
return {
|
|
236
|
+
form: "namespace-show",
|
|
237
|
+
argv: [first, ...rest],
|
|
238
|
+
canonical: `things ${singular} show ${shellQuote(subject)}`,
|
|
239
|
+
ref: subject,
|
|
240
|
+
};
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
return { form: "canonical", argv: args, canonical: null, ref: null };
|
|
244
|
+
}
|
|
245
|
+
// A view-keyword sugar that is NOT itself a registered command (the section
|
|
246
|
+
// sugars, e.g. `evening`) still normalizes to its canonical command form —
|
|
247
|
+
// exactly as `things show evening` would. Registered commands never reach
|
|
248
|
+
// here (they were handled above), so this only fires for the expansions.
|
|
249
|
+
if (SHOW_KEYWORDS.has(first.toLowerCase()) && !known.has(first.toLowerCase())) {
|
|
250
|
+
return keywordDispatch(first.toLowerCase(), args.slice(1));
|
|
251
|
+
}
|
|
252
|
+
// A bare MUTATION VERB (`things update health`) is not a reference — routing
|
|
253
|
+
// it through `show` produces a confusing usage error, so it is caught here
|
|
254
|
+
// and dispatched to the write-hint handler (docs/design/cli-grammar.md).
|
|
255
|
+
if (mutationVerbs(program).has(first.toLowerCase())) {
|
|
256
|
+
return { form: "verb-hint", argv: args, canonical: null, ref: first };
|
|
257
|
+
}
|
|
258
|
+
// Precedence 3: not a command — a bare-noun reference, routed through `show`.
|
|
259
|
+
return { form: "bare-noun", argv: ["show", ...args], canonical: null, ref: first };
|
|
260
|
+
}
|
|
261
|
+
//# sourceMappingURL=resolve-invocation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-invocation.js","sourceRoot":"","sources":["../../src/cli/resolve-invocation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shell-safe rendering of a single argument for a reconstructed `things …`
|
|
3
|
+
* command string (truncation footers, the normalized-form echo, the
|
|
4
|
+
* did-you-mean suggestion). A plain word is left bare; anything with spaces or
|
|
5
|
+
* shell metacharacters is double-quoted with the hazardous characters escaped.
|
|
6
|
+
* Lives in its own leaf module so both the read driver and the argv resolver
|
|
7
|
+
* can share ONE quoting rule (they must agree — the echo is contract-tested).
|
|
8
|
+
*/
|
|
9
|
+
export declare function shellQuote(v: string): string;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shell-safe rendering of a single argument for a reconstructed `things …`
|
|
3
|
+
* command string (truncation footers, the normalized-form echo, the
|
|
4
|
+
* did-you-mean suggestion). A plain word is left bare; anything with spaces or
|
|
5
|
+
* shell metacharacters is double-quoted with the hazardous characters escaped.
|
|
6
|
+
* Lives in its own leaf module so both the read driver and the argv resolver
|
|
7
|
+
* can share ONE quoting rule (they must agree — the echo is contract-tested).
|
|
8
|
+
*/
|
|
9
|
+
export function shellQuote(v) {
|
|
10
|
+
return /^[\w./@:+-]+$/.test(v) ? v : `"${v.replace(/(["\\$`])/g, "\\$1")}"`;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=shell-quote.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shell-quote.js","sourceRoot":"","sources":["../../src/cli/shell-quote.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,UAAU,UAAU,CAAC,CAAS;IAClC,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC,GAAG,CAAC;AAC9E,CAAC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The three universal tag-filter flags (`--tag`, `--exact-tag`, `--untagged`)
|
|
3
|
+
* shared by every read command that accepts them — the flat list views
|
|
4
|
+
* (reads.ts) and the container views (project.ts, area.ts, show.ts). One place
|
|
5
|
+
* owns the help copy, the repeatable-collect, the mutual-exclusivity guard, and
|
|
6
|
+
* the mapping to a {@link ViewFilter}.
|
|
7
|
+
*
|
|
8
|
+
* Two axes live in `--tag`: (A) CONTAINER inheritance (an item inherits its
|
|
9
|
+
* project/area/heading tags) and (B) TAG-HIERARCHY descendant expansion
|
|
10
|
+
* (filtering `Parent` matches items tagged with a descendant). `--exact-tag`
|
|
11
|
+
* drops only (B). Axis (A) is view-dependent: FLAT views keep it (an
|
|
12
|
+
* inheritance-inclusive `--tag`); CONTAINER views (`project show`, `area show`,
|
|
13
|
+
* the `projects` list) drop it, since every child inherits the container's tags
|
|
14
|
+
* — there a `--tag` matches a DIRECT assignment (still descendant-expanded).
|
|
15
|
+
*/
|
|
16
|
+
import type { Command } from "commander";
|
|
17
|
+
import { hasTagPresence as hasTagPresenceShared, type TagPresence, type ViewFilter } from "../index.ts";
|
|
18
|
+
/** Commander repeatable-collect: accumulate each `--tag` value. */
|
|
19
|
+
export declare const collectRef: (value: string, previous: string[]) => string[];
|
|
20
|
+
/** Help copy for the tag-filter flags (shared verbatim across every view). */
|
|
21
|
+
export declare const TAG_DESC: string;
|
|
22
|
+
export declare const EXACT_TAG_DESC = "match the named tag(s) only \u2014 exclude hierarchy descendants";
|
|
23
|
+
export declare const UNTAGGED_DESC: string;
|
|
24
|
+
/**
|
|
25
|
+
* The `--help` footer appended to the container views (`project show`,
|
|
26
|
+
* `area show`, the `projects` list) explaining their `--tag` semantics: the
|
|
27
|
+
* filter matches a tag carried directly on the child, ignoring tags inherited
|
|
28
|
+
* from the container (every child inherits those, so an inheritance-inclusive
|
|
29
|
+
* match would be vacuous).
|
|
30
|
+
*/
|
|
31
|
+
export declare const CONTAINER_TAG_HINT: string;
|
|
32
|
+
/**
|
|
33
|
+
* The parsed shape of the three tag-filter flags on any tag-accepting view.
|
|
34
|
+
* A structural subtype of the shared {@link TagPresence}, so the CLI's parsed
|
|
35
|
+
* commander options feed the shared predicates without adaptation.
|
|
36
|
+
*/
|
|
37
|
+
export interface TagFlags extends TagPresence {
|
|
38
|
+
tag?: string[];
|
|
39
|
+
exactTag?: boolean;
|
|
40
|
+
untagged?: boolean;
|
|
41
|
+
}
|
|
42
|
+
/** Register the three universal tag-filter flags on a command, in help order. */
|
|
43
|
+
export declare function addTagFilterOptions(cmd: Command): Command;
|
|
44
|
+
/** True when any tag-PRESENCE flag was passed (a positive filter, not a negation). */
|
|
45
|
+
export declare const hasTagPresence: typeof hasTagPresenceShared;
|
|
46
|
+
/**
|
|
47
|
+
* Shared usage guard for the tag-filter flags. The negation (`--untagged`)
|
|
48
|
+
* inverts a tag presence, so it does not combine with a tag-presence flag.
|
|
49
|
+
* Emits the usage error (the view's conflict style) and returns true when it
|
|
50
|
+
* fires. The predicate is the shared {@link tagFlagConflictShared}; only the
|
|
51
|
+
* CLI-voiced copy and the `--json`-aware emit stay here.
|
|
52
|
+
*/
|
|
53
|
+
export declare function tagFlagConflict(opts: TagFlags & {
|
|
54
|
+
json?: boolean;
|
|
55
|
+
}): boolean;
|
|
56
|
+
/** The ViewFilter tag fields built from the parsed flags (empty keys omitted). */
|
|
57
|
+
export declare function tagFilterFields(opts: TagFlags): ViewFilter;
|
|
58
|
+
/** The invocation-echo fragments for the tag flags (one `--tag <ref>` per ref). */
|
|
59
|
+
export declare function tagInvocationParts(opts: TagFlags): Array<string | false>;
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { hasTagPresence as hasTagPresenceShared, tagFilterFields as tagFilterFieldsShared, tagFlagConflict as tagFlagConflictShared, } from "../index.js";
|
|
2
|
+
import { shellQuote, usageError } from "./read-driver.js";
|
|
3
|
+
/** Commander repeatable-collect: accumulate each `--tag` value. */
|
|
4
|
+
export const collectRef = (value, previous) => [...previous, value];
|
|
5
|
+
/** Help copy for the tag-filter flags (shared verbatim across every view). */
|
|
6
|
+
export const TAG_DESC = "filter by tag (uuid or unique name), repeatable — several tags AND together; " +
|
|
7
|
+
"matches direct, container-inherited, or descendant-tagged items (in a container " +
|
|
8
|
+
"view — project/area/projects — the container's own inherited tags are ignored)";
|
|
9
|
+
export const EXACT_TAG_DESC = "match the named tag(s) only — exclude hierarchy descendants";
|
|
10
|
+
export const UNTAGGED_DESC = 'only items with no tag, direct or inherited — the app\'s "No Tag" filter (in a ' +
|
|
11
|
+
"container view: no tag on the item itself, ignoring the container's inherited tags)";
|
|
12
|
+
/**
|
|
13
|
+
* The `--help` footer appended to the container views (`project show`,
|
|
14
|
+
* `area show`, the `projects` list) explaining their `--tag` semantics: the
|
|
15
|
+
* filter matches a tag carried directly on the child, ignoring tags inherited
|
|
16
|
+
* from the container (every child inherits those, so an inheritance-inclusive
|
|
17
|
+
* match would be vacuous).
|
|
18
|
+
*/
|
|
19
|
+
export const CONTAINER_TAG_HINT = "\n--tag / --untagged match a tag carried directly on the item, ignoring tags\n" +
|
|
20
|
+
"inherited from this container (every child inherits them). --exact-tag still\n" +
|
|
21
|
+
"drops hierarchy descendants.";
|
|
22
|
+
/** Register the three universal tag-filter flags on a command, in help order. */
|
|
23
|
+
export function addTagFilterOptions(cmd) {
|
|
24
|
+
return cmd
|
|
25
|
+
.option("--tag <ref>", TAG_DESC, collectRef, [])
|
|
26
|
+
.option("--exact-tag", EXACT_TAG_DESC)
|
|
27
|
+
.option("--untagged", UNTAGGED_DESC);
|
|
28
|
+
}
|
|
29
|
+
/** True when any tag-PRESENCE flag was passed (a positive filter, not a negation). */
|
|
30
|
+
export const hasTagPresence = hasTagPresenceShared;
|
|
31
|
+
/**
|
|
32
|
+
* Shared usage guard for the tag-filter flags. The negation (`--untagged`)
|
|
33
|
+
* inverts a tag presence, so it does not combine with a tag-presence flag.
|
|
34
|
+
* Emits the usage error (the view's conflict style) and returns true when it
|
|
35
|
+
* fires. The predicate is the shared {@link tagFlagConflictShared}; only the
|
|
36
|
+
* CLI-voiced copy and the `--json`-aware emit stay here.
|
|
37
|
+
*/
|
|
38
|
+
export function tagFlagConflict(opts) {
|
|
39
|
+
if (tagFlagConflictShared(opts)) {
|
|
40
|
+
usageError(opts, "--untagged does not combine with --tag/--exact-tag");
|
|
41
|
+
return true;
|
|
42
|
+
}
|
|
43
|
+
return false;
|
|
44
|
+
}
|
|
45
|
+
/** The ViewFilter tag fields built from the parsed flags (empty keys omitted). */
|
|
46
|
+
export function tagFilterFields(opts) {
|
|
47
|
+
return tagFilterFieldsShared(opts);
|
|
48
|
+
}
|
|
49
|
+
/** The invocation-echo fragments for the tag flags (one `--tag <ref>` per ref). */
|
|
50
|
+
export function tagInvocationParts(opts) {
|
|
51
|
+
return [
|
|
52
|
+
...(opts.tag ?? []).map((t) => `--tag ${shellQuote(t)}`),
|
|
53
|
+
opts.exactTag === true && "--exact-tag",
|
|
54
|
+
opts.untagged === true && "--untagged",
|
|
55
|
+
];
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=tag-filters.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tag-filters.js","sourceRoot":"","sources":["../../src/cli/tag-filters.ts"],"names":[],"mappings":"AAiBA,OAAO,EACL,cAAc,IAAI,oBAAoB,EACtC,eAAe,IAAI,qBAAqB,EACxC,eAAe,IAAI,qBAAqB,GAGzC,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE1D,mEAAmE;AACnE,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,KAAa,EAAE,QAAkB,EAAY,EAAE,CAAC,CAAC,GAAG,QAAQ,EAAE,KAAK,CAAC,CAAC;AAEhG,8EAA8E;AAC9E,MAAM,CAAC,MAAM,QAAQ,GACnB,+EAA+E;IAC/E,kFAAkF;IAClF,gFAAgF,CAAC;AACnF,MAAM,CAAC,MAAM,cAAc,GAAG,6DAA6D,CAAC;AAC5F,MAAM,CAAC,MAAM,aAAa,GACxB,iFAAiF;IACjF,qFAAqF,CAAC;AAExF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAC7B,gFAAgF;IAChF,gFAAgF;IAChF,8BAA8B,CAAC;AAajC,iFAAiF;AACjF,MAAM,UAAU,mBAAmB,CAAC,GAAY;IAC9C,OAAO,GAAG;SACP,MAAM,CAAC,aAAa,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,CAAC;SAC/C,MAAM,CAAC,aAAa,EAAE,cAAc,CAAC;SACrC,MAAM,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;AACzC,CAAC;AAED,sFAAsF;AACtF,MAAM,CAAC,MAAM,cAAc,GAAG,oBAAoB,CAAC;AAEnD;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,IAAmC;IACjE,IAAI,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC;QAChC,UAAU,CAAC,IAAI,EAAE,oDAAoD,CAAC,CAAC;QACvE,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,eAAe,CAAC,IAAc;IAC5C,OAAO,qBAAqB,CAAC,IAAI,CAAC,CAAC;AACrC,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,kBAAkB,CAAC,IAAc;IAC/C,OAAO;QACL,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;QACxD,IAAI,CAAC,QAAQ,KAAK,IAAI,IAAI,aAAa;QACvC,IAAI,CAAC,QAAQ,KAAK,IAAI,IAAI,YAAY;KACvC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The bare-mutation-verb handler (docs/design/cli-grammar.md). A top-level
|
|
3
|
+
* `things <verb> …` whose first token is a write verb (update, add, delete, …)
|
|
4
|
+
* used to fall into the show-sugar and emit a confusing `things show` usage
|
|
5
|
+
* error. Instead the resolver flags it `verb-hint` and this handler suggests
|
|
6
|
+
* the namespaced write command:
|
|
7
|
+
*
|
|
8
|
+
* - a following ref that uniquely resolves as an area/project/to-do → one
|
|
9
|
+
* CONCRETE suggestion echoing the remaining args
|
|
10
|
+
* (`did you mean: things area update health --tags test`). The mutation is
|
|
11
|
+
* NEVER auto-run — the suggestion is the deliberate keystroke.
|
|
12
|
+
* - `add`/`create` with a title-like arg → `things todo add "<arg>"` first
|
|
13
|
+
* (the common intent), then the other namespaces.
|
|
14
|
+
* - no ref, an unresolvable ref, or an ambiguous ref → a hint listing the
|
|
15
|
+
* namespaced forms and pointing at `things help writes`.
|
|
16
|
+
*
|
|
17
|
+
* Exit class is Usage (exit 2), consistent with the other resolver errors;
|
|
18
|
+
* under `--json` the suggestions ride `error.details.suggestions`.
|
|
19
|
+
*/
|
|
20
|
+
import type { Command } from "commander";
|
|
21
|
+
/**
|
|
22
|
+
* Run the bare-verb hint: emit the suggestion(s) and set the Usage exit code.
|
|
23
|
+
* Never opens the write pipeline — this only reads to classify the ref.
|
|
24
|
+
*/
|
|
25
|
+
export declare function runVerbHint(program: Command, args: string[]): void;
|