@taskset/cli 4.0.0 → 5.1.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/CHANGELOG.md +22 -0
- package/README.md +6 -2
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +510 -63
- package/docs/_meta.ts +8 -0
- package/docs/cli-reference.md +461 -0
- package/docs/configuration.md +61 -0
- package/docs/document-types.md +100 -0
- package/docs/getting-started.md +99 -0
- package/docs/index.md +37 -0
- package/docs/maintainers/_meta.ts +7 -0
- package/docs/maintainers/architecture/_meta.ts +5 -0
- package/docs/maintainers/architecture/decisions/0001-documentation-platform.md +70 -0
- package/docs/maintainers/architecture/decisions/0002-code-architecture.md +31 -0
- package/docs/maintainers/architecture/decisions/0003-snapshot-policy.md +31 -0
- package/docs/maintainers/architecture/decisions/_meta.ts +5 -0
- package/docs/maintainers/architecture/overview.md +111 -0
- package/docs/maintainers/architecture/synchronization.md +56 -0
- package/docs/maintainers/development/_meta.ts +6 -0
- package/docs/maintainers/development/contributing.md +59 -0
- package/docs/maintainers/development/documentation.md +69 -0
- package/docs/maintainers/development/engineering.md +59 -0
- package/docs/maintainers/development/testing.md +89 -0
- package/docs/maintainers/index.md +22 -0
- package/docs/maintainers/product/_meta.ts +3 -0
- package/docs/maintainers/product/vision.md +76 -0
- package/docs/maintainers/technology.md +55 -0
- package/docs/task-files.md +174 -0
- package/package.json +7 -5
- package/skills/taskset/SKILL.md +227 -0
- package/skills/taskset/references/changesets-examples.md +97 -0
- package/skills/taskset/references/document-modeling-examples.md +63 -0
- package/skills/taskset/references/monorepo-task-modeling.md +125 -0
- package/skills/taskset/references/task-modeling-examples.md +249 -0
- package/skills/taskset-implement/SKILL.md +234 -0
- package/skills/taskset-implement/agents/openai.yaml +4 -0
- package/skills/taskset-implement/references/architecture/client-and-server.md +69 -0
- package/skills/taskset-implement/references/architecture/documentation-and-generated.md +70 -0
- package/skills/taskset-implement/references/architecture/ownership-and-dependencies.md +107 -0
- package/skills/taskset-implement/references/architecture/product-and-source.md +80 -0
- package/skills/taskset-implement/references/architecture/storage-and-snapshots.md +45 -0
- package/skills/taskset-implement/references/architecture.md +34 -0
- package/skills/taskset-implement/references/conventions/backend-and-tooling.md +33 -0
- package/skills/taskset-implement/references/conventions/design.md +38 -0
- package/skills/taskset-implement/references/conventions/interfaces-and-ui.md +50 -0
- package/skills/taskset-implement/references/conventions/naming-and-packages.md +64 -0
- package/skills/taskset-implement/references/conventions/task-files.md +89 -0
- package/skills/taskset-implement/references/conventions/tests-and-docs.md +55 -0
- package/skills/taskset-implement/references/conventions/typescript-and-exports.md +41 -0
- package/skills/taskset-implement/references/conventions.md +40 -0
- package/skills/taskset-implement/references/release.md +135 -0
- package/skills/taskset-implement/references/workflows/dependencies-and-docs-site.md +54 -0
- package/skills/taskset-implement/references/workflows/environment-and-pnpm.md +108 -0
- package/skills/taskset-implement/references/workflows/persisted-data-and-git.md +30 -0
- package/skills/taskset-implement/references/workflows/validation.md +34 -0
- package/skills/taskset-implement/references/workflows/vitest-and-test-strategy.md +82 -0
- package/skills/taskset-implement/references/workflows.md +33 -0
- package/src/cli.ts +611 -77
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Testing
|
|
3
|
+
description: Maintainer test strategy, Vitest usage, and pragmatic TDD guidance.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Testing
|
|
7
|
+
|
|
8
|
+
Taskset uses Vitest for TypeScript unit and integration tests. The root
|
|
9
|
+
configuration is shared by package-local suites. Turbo runs each owning
|
|
10
|
+
package's Vitest task and the root workspace architecture suite.
|
|
11
|
+
Vitest already provides the Vite-powered test pipeline; the Node library and
|
|
12
|
+
CLI packages use TypeScript directly for builds, so they do not need a separate
|
|
13
|
+
Vite build configuration.
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
pnpm test
|
|
17
|
+
pnpm test:architecture
|
|
18
|
+
pnpm test:watch
|
|
19
|
+
pnpm check
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
Use filtered package tests for focused work:
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
pnpm --filter @taskset/core test
|
|
26
|
+
pnpm --filter @taskset/cli test
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
Package-local test scripts are intentional. Turbo and filtered pnpm commands
|
|
30
|
+
execute scripts owned by each workspace; the root script cannot replace those
|
|
31
|
+
entrypoints. `test:architecture` names the separate root-only package-boundary
|
|
32
|
+
suite. There is no `transit` command in the repository.
|
|
33
|
+
|
|
34
|
+
## TDD Policy
|
|
35
|
+
|
|
36
|
+
Prefer a red-green-refactor loop for:
|
|
37
|
+
|
|
38
|
+
- domain invariants
|
|
39
|
+
- parser and serializer behavior
|
|
40
|
+
- lifecycle transitions
|
|
41
|
+
- graph rules
|
|
42
|
+
- migrations
|
|
43
|
+
- bug fixes
|
|
44
|
+
|
|
45
|
+
Do not force test-first ceremony for documentation, formatting, generated
|
|
46
|
+
configuration, or exploratory spikes. Convert a successful spike into tested
|
|
47
|
+
production behavior before merging it.
|
|
48
|
+
|
|
49
|
+
## Test Layers
|
|
50
|
+
|
|
51
|
+
### Unit
|
|
52
|
+
|
|
53
|
+
Test pure schemas, value objects, state transitions, graph algorithms, filters,
|
|
54
|
+
and serialization rules.
|
|
55
|
+
|
|
56
|
+
### Integration
|
|
57
|
+
|
|
58
|
+
Use temporary fixture repositories to test filesystem behavior, Git discovery,
|
|
59
|
+
atomic writes, path safety, monorepo discovery, and package impact.
|
|
60
|
+
|
|
61
|
+
### Contract
|
|
62
|
+
|
|
63
|
+
Verify CLI exit codes and output, MCP schemas, package exports, and persisted
|
|
64
|
+
Markdown compatibility.
|
|
65
|
+
|
|
66
|
+
### UI
|
|
67
|
+
|
|
68
|
+
Test feature behavior and accessibility in the owning interface. Add browser
|
|
69
|
+
projects only when UI packages exist.
|
|
70
|
+
|
|
71
|
+
### End to end
|
|
72
|
+
|
|
73
|
+
Keep a small number of workflows that create a fixture repository and exercise
|
|
74
|
+
the public CLI or hosted interface. Do not duplicate every unit case at this
|
|
75
|
+
level.
|
|
76
|
+
|
|
77
|
+
## Important Cases
|
|
78
|
+
|
|
79
|
+
- malformed YAML and unknown fields
|
|
80
|
+
- CRLF, Unicode, and empty Markdown bodies
|
|
81
|
+
- parse and serialize round trips
|
|
82
|
+
- duplicate IDs and branch-safe identity
|
|
83
|
+
- path traversal and symlink boundaries
|
|
84
|
+
- broken graph references and cycles
|
|
85
|
+
- interrupted writes and stale updates
|
|
86
|
+
- old-format fixtures and compatibility rollback behavior
|
|
87
|
+
|
|
88
|
+
Vitest code snapshots are acceptable for small stable serialized output or
|
|
89
|
+
diagnostics. They are unrelated to Taskset safety snapshots.
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Maintainers
|
|
3
|
+
description: Repository maintenance documentation for Taskset contributors.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Taskset Maintainer Documentation
|
|
7
|
+
|
|
8
|
+
This section contains repository maintenance material. It is intentionally
|
|
9
|
+
separate from the primary user guides while remaining available in the same
|
|
10
|
+
Nextra documentation site.
|
|
11
|
+
|
|
12
|
+
## Contents
|
|
13
|
+
|
|
14
|
+
- `product/`: product direction and scope
|
|
15
|
+
- `architecture/`: system boundaries and accepted decisions
|
|
16
|
+
- `development/`: contribution, engineering, testing, and documentation
|
|
17
|
+
workflows
|
|
18
|
+
- `technology.md`: preferred frontend, backend, language, and database choices
|
|
19
|
+
|
|
20
|
+
Contributors should start with the root `CONTRIBUTING.md`, then read the
|
|
21
|
+
relevant maintainer document before changing architecture, tooling, or
|
|
22
|
+
repository workflows.
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Product Vision
|
|
3
|
+
description: Maintainer-facing product direction for Taskset.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Product Vision
|
|
7
|
+
|
|
8
|
+
## Origin
|
|
9
|
+
|
|
10
|
+
Taskset began from a simple need: keep task context offline and inline with the
|
|
11
|
+
code so developers and AI assistants can understand work immediately without
|
|
12
|
+
switching to a disconnected project-management database.
|
|
13
|
+
|
|
14
|
+
## Vision
|
|
15
|
+
|
|
16
|
+
Taskset aims to become the Git-native operating system for software delivery.
|
|
17
|
+
|
|
18
|
+
## Mission
|
|
19
|
+
|
|
20
|
+
Store planning, execution, and project knowledge as human-readable repository
|
|
21
|
+
files, then provide focused interfaces over that shared task graph.
|
|
22
|
+
|
|
23
|
+
## Product Goals
|
|
24
|
+
|
|
25
|
+
- Accelerate delivery by reducing context switching.
|
|
26
|
+
- Give developers immediate awareness of related tasks, dependencies, specs,
|
|
27
|
+
decisions, and releases.
|
|
28
|
+
- Give AI systems direct, structured, reviewable project context.
|
|
29
|
+
- Make monorepos, packages, applications, and code paths first-class.
|
|
30
|
+
- Let managers and stakeholders view repository-backed information without
|
|
31
|
+
creating another source of truth.
|
|
32
|
+
|
|
33
|
+
## Principles
|
|
34
|
+
|
|
35
|
+
### Offline first
|
|
36
|
+
|
|
37
|
+
Core workflows must work from a local repository without a network service.
|
|
38
|
+
|
|
39
|
+
### Inline with code
|
|
40
|
+
|
|
41
|
+
Project context belongs beside the code it affects and travels with the
|
|
42
|
+
repository.
|
|
43
|
+
|
|
44
|
+
### Human and AI readable
|
|
45
|
+
|
|
46
|
+
Markdown carries durable prose. Structured frontmatter carries data that tools
|
|
47
|
+
can validate and query.
|
|
48
|
+
|
|
49
|
+
### Git native
|
|
50
|
+
|
|
51
|
+
Commits, branches, pull requests, diffs, and reviews are normal collaboration
|
|
52
|
+
mechanisms.
|
|
53
|
+
|
|
54
|
+
### One source of truth
|
|
55
|
+
|
|
56
|
+
Every interface reads and changes the same canonical `.taskset/` files through
|
|
57
|
+
the same domain rules.
|
|
58
|
+
|
|
59
|
+
### Developer first
|
|
60
|
+
|
|
61
|
+
Taskset proves developer workflows before broad enterprise planning features.
|
|
62
|
+
|
|
63
|
+
## Near-Term Scope
|
|
64
|
+
|
|
65
|
+
The MVP should implement:
|
|
66
|
+
|
|
67
|
+
- repository initialization
|
|
68
|
+
- task creation, listing, display, editing, and removal
|
|
69
|
+
- lifecycle transitions
|
|
70
|
+
- deterministic Markdown parsing and serialization
|
|
71
|
+
- validation and repository diagnostics
|
|
72
|
+
- basic search and filtering
|
|
73
|
+
- dependency integrity
|
|
74
|
+
|
|
75
|
+
TUI, MCP, extension, Kanban, Office, and integrations follow after the file and
|
|
76
|
+
core contracts are reliable.
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Technology Preferences
|
|
3
|
+
description: Preferred frontend, backend, language, and database choices for Taskset.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Technology Preferences
|
|
7
|
+
|
|
8
|
+
These are defaults for new Taskset implementation work. They guide choices
|
|
9
|
+
when requirements do not demand a different tool; they are not a requirement
|
|
10
|
+
to install every library in every package.
|
|
11
|
+
|
|
12
|
+
## Frontend
|
|
13
|
+
|
|
14
|
+
Use TypeScript and React for web interfaces. Prefer the TanStack ecosystem for
|
|
15
|
+
headless application behavior:
|
|
16
|
+
|
|
17
|
+
- TanStack Query for server-state fetching, caching, and mutations
|
|
18
|
+
- TanStack Form for complex validated forms
|
|
19
|
+
- TanStack Table for data grids and tabular state
|
|
20
|
+
- TanStack Hotkeys for keyboard command handling
|
|
21
|
+
- TanStack Pacer for debouncing, throttling, queuing, and rate control
|
|
22
|
+
- TanStack Virtual for large virtualized lists and grids
|
|
23
|
+
- TanStack DB when a client-side reactive data layer is justified
|
|
24
|
+
- TanStack Devtools and library-specific devtools during development
|
|
25
|
+
|
|
26
|
+
Adopt these tools by demonstrated feature need. Do not add speculative
|
|
27
|
+
dependencies to scaffolds or force TanStack abstractions around simple local
|
|
28
|
+
state.
|
|
29
|
+
|
|
30
|
+
## Backend
|
|
31
|
+
|
|
32
|
+
Prefer TypeScript for services and hosted adapters.
|
|
33
|
+
|
|
34
|
+
- Start with a small framework-independent composition root where practical.
|
|
35
|
+
- Use NestJS when dependency injection, modules, guards, transport adapters, or
|
|
36
|
+
a larger service boundary justify the framework.
|
|
37
|
+
- In NestJS applications, prefer `class-transformer` and `class-validator` for
|
|
38
|
+
transport DTO transformation and validation.
|
|
39
|
+
- Prefer TypeORM when a relational object mapper is appropriate.
|
|
40
|
+
- Keep Taskset domain rules in `@taskset/core`; server frameworks own transport,
|
|
41
|
+
authentication, persistence adapters, and process lifecycle.
|
|
42
|
+
|
|
43
|
+
Use Rust for components where systems-level performance, memory control,
|
|
44
|
+
portability, concurrency, or a standalone native executable provides a clear
|
|
45
|
+
advantage. Keep language boundaries explicit and narrow.
|
|
46
|
+
|
|
47
|
+
## Databases
|
|
48
|
+
|
|
49
|
+
- Prefer MariaDB for smaller conventional hosted applications.
|
|
50
|
+
- Prefer PostgreSQL for larger systems, advanced relational workloads, and
|
|
51
|
+
features that benefit from its ecosystem.
|
|
52
|
+
- Do not introduce a database as an authority for canonical Taskset entities;
|
|
53
|
+
`.taskset/` Markdown remains the product source of truth.
|
|
54
|
+
- Document schema ownership, migrations, backup, and consistency behavior
|
|
55
|
+
before adding a database-backed adapter.
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Task Files
|
|
3
|
+
description: The canonical Markdown representation for Taskset work items.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Task Files
|
|
7
|
+
|
|
8
|
+
Task files live under `.taskset/tasks/`. YAML frontmatter owns structured
|
|
9
|
+
metadata and the Markdown body owns durable human context.
|
|
10
|
+
|
|
11
|
+
```markdown
|
|
12
|
+
---
|
|
13
|
+
id: 0000001-add-task-validation
|
|
14
|
+
title: Add task validation
|
|
15
|
+
status: doing
|
|
16
|
+
priority: high
|
|
17
|
+
order: 10
|
|
18
|
+
owner: platform
|
|
19
|
+
assignees:
|
|
20
|
+
- maintainer
|
|
21
|
+
reviewers:
|
|
22
|
+
- reviewer
|
|
23
|
+
team: core
|
|
24
|
+
estimate: 90
|
|
25
|
+
effort: 3
|
|
26
|
+
risk: high
|
|
27
|
+
dueDate: 2026-06-30
|
|
28
|
+
createdAt: 2026-06-12
|
|
29
|
+
updatedAt: 2026-06-12 09:30 UTC
|
|
30
|
+
labels:
|
|
31
|
+
- core
|
|
32
|
+
dependsOn: []
|
|
33
|
+
related: []
|
|
34
|
+
duplicates: []
|
|
35
|
+
files:
|
|
36
|
+
- packages/core/src/tasks/taskFile.ts
|
|
37
|
+
directories:
|
|
38
|
+
- packages/core
|
|
39
|
+
projects:
|
|
40
|
+
- taskset
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
# Context
|
|
44
|
+
|
|
45
|
+
Explain why the task exists.
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## Canonical Data
|
|
49
|
+
|
|
50
|
+
Required fields are `id`, `title`, `status`, `createdAt`, and `updatedAt`.
|
|
51
|
+
Task IDs are immutable seven-digit sequences plus a lowercase title slug, such
|
|
52
|
+
as `0000001-add-task-validation`. The sequence prevents title collisions while
|
|
53
|
+
the slug keeps filenames recognizable.
|
|
54
|
+
|
|
55
|
+
Task files use one strict versionless metadata shape. Optional fields:
|
|
56
|
+
|
|
57
|
+
- Planning: `priority`, `order`, `estimate` in integer minutes, `effort` as a
|
|
58
|
+
finite nonnegative number, `risk`, and `dueDate`
|
|
59
|
+
- People: `owner`, `assignees`, `reviewers`, and `team`
|
|
60
|
+
- Relationships: `dependsOn`, `related`, `duplicates`, and `parent`
|
|
61
|
+
- Scope: `labels`, `files`, `directories`, and `projects`
|
|
62
|
+
|
|
63
|
+
People and project values are trimmed free-form strings. Arrays must not
|
|
64
|
+
contain duplicates. Paths are normalized repository-relative POSIX paths.
|
|
65
|
+
Dates use `YYYY-MM-DD` or `YYYY-MM-DD HH:mm UTC`; documented legacy
|
|
66
|
+
millisecond ISO UTC timestamps remain readable.
|
|
67
|
+
|
|
68
|
+
Unknown fields, invalid enum values, self-links, duplicate list values, path
|
|
69
|
+
traversal, and an `updatedAt` earlier than `createdAt` are rejected.
|
|
70
|
+
|
|
71
|
+
`order` is the optional user-controlled sequence. Lower order values sort
|
|
72
|
+
first. Missing values sort after ordered tasks, and duplicate order values fall
|
|
73
|
+
back to deterministic task ID ordering.
|
|
74
|
+
|
|
75
|
+
## Compatibility Cutover
|
|
76
|
+
|
|
77
|
+
Legacy `TS-` ULIDs remain readable so a repository can migrate safely. Run
|
|
78
|
+
`taskset task migrate-ids` once to atomically rename task files and rewrite all
|
|
79
|
+
`dependsOn`, `related`, `duplicates`, and `parent` references. The command
|
|
80
|
+
prints the old-to-new mapping for updating references outside `.taskset/`.
|
|
81
|
+
|
|
82
|
+
Task metadata is versionless. Versioned task frontmatter is invalid input and
|
|
83
|
+
fails with a schema diagnostic rather than being silently rewritten.
|
|
84
|
+
Repositories created with earlier Taskset releases must convert task files by
|
|
85
|
+
removing only the legacy version field from task frontmatter while preserving
|
|
86
|
+
all other metadata and Markdown body content. Take a Git commit or
|
|
87
|
+
`taskset snapshot create` checkpoint before converting existing repositories.
|
|
88
|
+
|
|
89
|
+
## Relationships
|
|
90
|
+
|
|
91
|
+
`dependsOn`, `related`, `duplicates`, and `parent` are canonical. Taskset
|
|
92
|
+
derives:
|
|
93
|
+
|
|
94
|
+
- `blockedBy`: direct dependencies
|
|
95
|
+
- `blocks`: direct inverse dependencies
|
|
96
|
+
- `children`: direct inverse parents
|
|
97
|
+
- `subtasks`: all transitive descendants
|
|
98
|
+
|
|
99
|
+
Use `--include-derived` with task list or JSON task show output. Derived values
|
|
100
|
+
are never written to canonical Markdown. The graph validates missing targets,
|
|
101
|
+
self-links, dependency cycles, and parent cycles.
|
|
102
|
+
|
|
103
|
+
## Writes And Lifecycle
|
|
104
|
+
|
|
105
|
+
Taskset serializes fields deterministically, normalizes line endings to LF,
|
|
106
|
+
preserves the Markdown body, and emits one final newline. Canonical mutations
|
|
107
|
+
use failure-safe file operations.
|
|
108
|
+
|
|
109
|
+
Allowed lifecycle transitions are:
|
|
110
|
+
|
|
111
|
+
- `todo` to `doing`, `blocked`, or `canceled`
|
|
112
|
+
- `doing` to `todo`, `blocked`, `done`, or `canceled`
|
|
113
|
+
- `blocked` to `todo`, `doing`, or `canceled`
|
|
114
|
+
- `done` and `canceled` are terminal
|
|
115
|
+
|
|
116
|
+
Deletion is rejected while another task has an inbound canonical relationship
|
|
117
|
+
to the target. `--remove-dependencies` repairs those references and removes the
|
|
118
|
+
target in one transaction.
|
|
119
|
+
|
|
120
|
+
## Queries And Derived State
|
|
121
|
+
|
|
122
|
+
`task list` supports metadata, relationship, planning range, timestamp range,
|
|
123
|
+
text, file, and directory filters. Numeric and timestamp ranges are inclusive:
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
taskset task list --file packages/core --impact --json
|
|
127
|
+
taskset task list --sort order
|
|
128
|
+
taskset task list --estimate-min 30 --estimate-max 120 --risk high
|
|
129
|
+
taskset task list --duplicate 0000001-add-task-validation
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
Repeated enum, person, project, file, and directory values use OR within the
|
|
133
|
+
same option. Repeated labels require every requested label. Different filter
|
|
134
|
+
categories compose with AND. For example, two `--file` values match either
|
|
135
|
+
path, while adding `--owner` requires both the path match and owner match.
|
|
136
|
+
`--file` is the unified containment query over task files and task directories;
|
|
137
|
+
`--directory` matches only canonical directory metadata. All path inputs are
|
|
138
|
+
normalized relative to the repository before matching.
|
|
139
|
+
|
|
140
|
+
Planning filters are `--estimate-min`, `--estimate-max`, `--effort-min`, and
|
|
141
|
+
`--effort-max`. Timestamp filters are `--due-before`, `--due-after`,
|
|
142
|
+
`--created-before`, `--created-after`, `--updated-before`, and
|
|
143
|
+
`--updated-after`. Title and Markdown body use case-insensitive `--search`;
|
|
144
|
+
every whitespace-separated search term must occur somewhere in those fields,
|
|
145
|
+
but terms need not be adjacent or ordered. Exact task IDs use `task show` or
|
|
146
|
+
relationship filters rather than a redundant list ID filter.
|
|
147
|
+
|
|
148
|
+
With `--impact`, every direct filter is applied first, then the graph adds tasks
|
|
149
|
+
that transitively depend on those direct matches. JSON output uses
|
|
150
|
+
`{ "direct": [...], "impacted": [...] }`; `--include-derived` adds relationship
|
|
151
|
+
projections to records in both groups.
|
|
152
|
+
|
|
153
|
+
`.taskset/cache/` and each entity folder's `.generated/` directory are disposable.
|
|
154
|
+
Generated metadata
|
|
155
|
+
indexes are deterministic projections for supported non-ID task metadata fields
|
|
156
|
+
and refresh on a best-effort basis after canonical mutations. Date and
|
|
157
|
+
timestamp metadata is grouped by calendar date only. Generated filenames remain
|
|
158
|
+
human-readable: spaces are preserved and path separators are displayed with
|
|
159
|
+
`∕` instead of URL-encoded text. Generated views sort tasks by `order` when
|
|
160
|
+
present and display ordered rows with the order value.
|
|
161
|
+
|
|
162
|
+
## Snapshots
|
|
163
|
+
|
|
164
|
+
Git remains the normal history. `.taskset/snapshots/` contains immutable,
|
|
165
|
+
non-authoritative safety checkpoints:
|
|
166
|
+
|
|
167
|
+
```bash
|
|
168
|
+
taskset snapshot create
|
|
169
|
+
taskset snapshot list
|
|
170
|
+
taskset snapshot restore <snapshot-id>
|
|
171
|
+
taskset snapshot restore <snapshot-id> --apply
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
Restore previews by default and requires `--apply` to mutate canonical tasks.
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@taskset/cli",
|
|
3
3
|
"type": "module",
|
|
4
4
|
"private": false,
|
|
5
|
-
"version": "
|
|
5
|
+
"version": "5.1.0",
|
|
6
6
|
"description": "The scriptable command-line interface for Taskset.",
|
|
7
7
|
"license": "MIT",
|
|
8
8
|
"author": {
|
|
@@ -23,6 +23,8 @@
|
|
|
23
23
|
"dist",
|
|
24
24
|
"src",
|
|
25
25
|
"!src/**/*.test.ts",
|
|
26
|
+
"docs",
|
|
27
|
+
"skills",
|
|
26
28
|
"README.md",
|
|
27
29
|
"CHANGELOG.md"
|
|
28
30
|
],
|
|
@@ -44,8 +46,8 @@
|
|
|
44
46
|
},
|
|
45
47
|
"dependencies": {
|
|
46
48
|
"zod": "4.6.5",
|
|
47
|
-
"@taskset/contracts": "
|
|
48
|
-
"@taskset/core": "
|
|
49
|
+
"@taskset/contracts": "5.0.0",
|
|
50
|
+
"@taskset/core": "5.0.0"
|
|
49
51
|
},
|
|
50
52
|
"devDependencies": {
|
|
51
53
|
"@types/node": "^26.6.3",
|
|
@@ -54,8 +56,8 @@
|
|
|
54
56
|
"@taskset/configs": "0.1.1"
|
|
55
57
|
},
|
|
56
58
|
"scripts": {
|
|
57
|
-
"build": "pnpm clean && tsc",
|
|
58
|
-
"clean": "node --eval \"import { rmSync } from 'node:fs';
|
|
59
|
+
"build": "pnpm clean && tsc && node ./scripts/copy-package-assets.mjs",
|
|
60
|
+
"clean": "node --eval \"import { rmSync } from 'node:fs'; for (const name of ['dist', 'docs', 'skills']) rmSync(name, { recursive: true, force: true })\"",
|
|
59
61
|
"test": "vitest run --root ../.. packages/cli/src",
|
|
60
62
|
"test:watch": "vitest --root ../.. packages/cli/src"
|
|
61
63
|
}
|