@codetreker/daynight 0.8.19 → 0.10.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/client.d.ts +5 -1
- package/dist/api/client.js +8 -1
- package/dist/api/client.js.map +1 -1
- package/dist/api/parse.js +13 -6
- package/dist/api/parse.js.map +1 -1
- package/dist/api/types.d.ts +12 -2
- package/dist/commands/review/adapters/copilot.js +1 -0
- package/dist/commands/review/adapters/copilot.js.map +1 -1
- package/dist/commands/review/skills/daynight-review/SKILL.md +69 -4
- package/dist/commands/skill/skills/using-daynight/SKILL.md +17 -8
- package/dist/commands/skill/skills/using-daynight/references/autopilot.md +13 -6
- package/dist/commands/skill/skills/using-daynight/references/create-task.md +64 -16
- package/dist/commands/skill/skills/using-daynight/references/goal.md +36 -12
- package/dist/commands/skill/skills/using-daynight/references/handbook.md +69 -35
- package/dist/commands/skill/skills/using-daynight/references/run-task.md +39 -18
- package/dist/commands/task/command.js +13 -7
- package/dist/commands/task/command.js.map +1 -1
- package/dist/commands/task/definition.js +19 -6
- package/dist/commands/task/definition.js.map +1 -1
- package/package.json +3 -2
|
@@ -32,19 +32,22 @@ When there is no current task, query:
|
|
|
32
32
|
daynight task ready --json
|
|
33
33
|
```
|
|
34
34
|
|
|
35
|
-
Pick exactly one ready `todo` task most relevant to the confirmed Goal and
|
|
35
|
+
Pick exactly one approved ready `todo` task most relevant to the confirmed Goal and
|
|
36
36
|
authorized work. Compare concrete actions, scope, deliverables, solution,
|
|
37
37
|
acceptance criteria, and actual dependencies; creation order does not establish
|
|
38
38
|
relevance. Read full details and actual task-specific and shared inputs for
|
|
39
39
|
plausible candidates before choosing. Readiness checks prerequisites, not stage
|
|
40
40
|
artifact completeness or execution authorization. Pass the selected ID to
|
|
41
|
-
`run-task
|
|
41
|
+
`run-task`, which claims the version observed for that decision before starting.
|
|
42
|
+
Autopilot never auto-approves proposed work. Goal creation, completed description
|
|
43
|
+
or design, and permission to execute do not authorize task approval.
|
|
42
44
|
|
|
43
45
|
Ready returns at most 10 candidates by default, or the requested bounded
|
|
44
46
|
`--limit`; it is not a complete backlog. If this page is empty or no candidate
|
|
45
47
|
matches, obtain the additional context actually needed through selected reads,
|
|
46
48
|
the graph, or a complete filtered list as described in the handbook. Distinguish
|
|
47
|
-
completed scope, prerequisite-blocked work, other
|
|
49
|
+
completed scope, work awaiting explicit approval, prerequisite-blocked work, other
|
|
50
|
+
ongoing work, and insufficient
|
|
48
51
|
candidates. Do not take unrelated work to stay busy or report completion from an
|
|
49
52
|
empty or unrelated bounded page.
|
|
50
53
|
|
|
@@ -53,7 +56,8 @@ ones. If the confirmed Goal requires missing tracked work, use explicit creation
|
|
|
53
56
|
permission already granted for that scope or obtain it, then use
|
|
54
57
|
[create-task](create-task.md). Permission to create a Goal already covers both
|
|
55
58
|
starting tasks and its later in-scope breakdown; do not ask again for each one.
|
|
56
|
-
Creation
|
|
59
|
+
Creation leaves proposed tasks pending separate explicit approval and returns
|
|
60
|
+
to this mode without starting execution. The design stage must
|
|
57
61
|
actually register and verify the complete delivery breakdown before handing over
|
|
58
62
|
its required PR; successor execution waits for design completion.
|
|
59
63
|
|
|
@@ -63,8 +67,11 @@ Run one task at a time. Subagents collaborate on it; they do not each choose a
|
|
|
63
67
|
separate task. Ordinary CI, review, and merge waits keep that target. After
|
|
64
68
|
`run-task` confirms `done`, refresh readiness and select at most one next related
|
|
65
69
|
task within the same authorized scope. Description completion permits design
|
|
66
|
-
selection, and design completion permits delivery selection, only
|
|
67
|
-
|
|
70
|
+
selection, and design completion permits delivery selection, only when the next
|
|
71
|
+
task is approved ready todo, its stage inputs are complete, this mode is explicitly
|
|
72
|
+
active and execution is authorized. Stage completion satisfies a dependency; it
|
|
73
|
+
never approves a successor. Explicit scoped user approval may cover stated Goal
|
|
74
|
+
tasks, but the Goal-creation permission itself does not.
|
|
68
75
|
|
|
69
76
|
If `run-task` returns a wait requiring external intervention, preserve its
|
|
70
77
|
current-task checkpoint and report the blocker and required next action. An
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Use this mode to prepare and register work that needs persistent tracking. Read
|
|
4
4
|
[the handbook](handbook.md) before discovery, queries, or writes. Return after
|
|
5
|
-
registration; creating work does not authorize execution or
|
|
5
|
+
registration; creating work does not authorize approval, execution or autopilot.
|
|
6
6
|
|
|
7
7
|
Create tasks only with the user's explicit permission for the relevant scope.
|
|
8
8
|
Loading this mode, needing durable tracking, or permission to implement or run
|
|
@@ -47,12 +47,13 @@ Use the target repository's document and workspace rules.
|
|
|
47
47
|
| Prerequisite tasks | `dependsOn` only |
|
|
48
48
|
| Delivery PR URLs and titles | `properties.pullRequests` |
|
|
49
49
|
|
|
50
|
-
Give each task an outcome-focused title and a self-contained
|
|
51
|
-
reader must understand what this specific task will do, deliver,
|
|
52
|
-
without opening attachments. Summarize the approach and observable
|
|
53
|
-
conditions, then reference the real detailed sources. A generic
|
|
54
|
-
and a link list are insufficient. Keep the summary consistent
|
|
55
|
-
Markdown without maintaining a second complete plan in the
|
|
50
|
+
Give each task an outcome-focused title and a self-contained Markdown
|
|
51
|
+
description: a reader must understand what this specific task will do, deliver,
|
|
52
|
+
and verify without opening attachments. Summarize the approach and observable
|
|
53
|
+
completion conditions, then reference the real detailed sources. A generic
|
|
54
|
+
problem sentence and a link list are insufficient. Keep the summary consistent
|
|
55
|
+
with its primary Markdown without maintaining a second complete plan in the
|
|
56
|
+
description.
|
|
56
57
|
|
|
57
58
|
The primary Markdown must contain **Solution** and **Acceptance criteria**
|
|
58
59
|
sections; equivalent headings in the task's language are valid. Define the
|
|
@@ -71,7 +72,7 @@ Do not upload the same whole packet to every task. Create a separate snapshot
|
|
|
71
72
|
only when the task needs an independent copy, recording its purpose, original
|
|
72
73
|
source, and source revision or content identity.
|
|
73
74
|
|
|
74
|
-
A frontend task requires an interactive mock UI that runs with frontend code
|
|
75
|
+
A frontend delivery task requires an interactive mock UI that runs with frontend code
|
|
75
76
|
alone, matches final visual styling, and represents relevant data and interaction
|
|
76
77
|
states. Include applicable populated, empty, loading, failure, disabled, long
|
|
77
78
|
content, and narrow-screen cases. Provide required CSS, JavaScript, images, and
|
|
@@ -85,9 +86,51 @@ Markdown. A top-level task has no dependencies. Repository specifications and
|
|
|
85
86
|
design documents retain their full contracts; the task's own primary attachment
|
|
86
87
|
must still provide a specific solution and verifiable acceptance criteria.
|
|
87
88
|
|
|
89
|
+
## Author Markdown
|
|
90
|
+
|
|
91
|
+
Use headings, paragraphs, lists, quotes, fenced code, tables, links, and images
|
|
92
|
+
when they help readers understand the assignment. The Web renders CommonMark
|
|
93
|
+
and GFM; raw HTML appears as text. API and CLI reads retain the original Markdown
|
|
94
|
+
string, with no separate format field. Preserve its syntax, whitespace, code,
|
|
95
|
+
and valid references when replacing the complete description.
|
|
96
|
+
|
|
97
|
+
A relative link or image in a description starts at this task's attachment root.
|
|
98
|
+
A link inside a Markdown attachment starts at that file's directory. Keep paths
|
|
99
|
+
inside the task root and preserve the actual case and resource identity. Confirm
|
|
100
|
+
an upload and read back its contents before adding its link. Reference shared
|
|
101
|
+
inputs by their verified source task ID and attachment path or immutable
|
|
102
|
+
repository URL; a relative link cannot identify another task's attachment.
|
|
103
|
+
|
|
104
|
+
For example, the following brief applies to a task whose confirmed, readable
|
|
105
|
+
attachments include its own `plan.md` and the complete `mockui/index.html`
|
|
106
|
+
prototype with its resources. Use these paths only when those files actually
|
|
107
|
+
belong to that task; adapt the content and references to the actual assignment.
|
|
108
|
+
A Goal stage that produces a prototype links it only after producing and
|
|
109
|
+
confirming it.
|
|
110
|
+
|
|
111
|
+
```markdown
|
|
112
|
+
## 问题与行动
|
|
113
|
+
登录失败后,用户无法判断是否可以重试。实现明确的失败原因和重试入口,保留当前登录表单输入。
|
|
114
|
+
|
|
115
|
+
## 范围与交付
|
|
116
|
+
更新登录页的错误提示、重试交互和中英文文案;沿用现有认证接口与会话边界。
|
|
117
|
+
|
|
118
|
+
## 完成条件
|
|
119
|
+
网络失败和凭据错误均显示对应提示;重试成功后进入工作区。桌面与窄屏、两种语言的交互通过验证,表单输入保持正确。
|
|
120
|
+
|
|
121
|
+
## 资料
|
|
122
|
+
|
|
123
|
+
- [方案与验收](plan.md)
|
|
124
|
+
- [交互原型](mockui/index.html)
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
This remains a concise assignment. Its own primary Markdown still contains the
|
|
128
|
+
specific **Solution** and **Acceptance criteria**, verification methods, and
|
|
129
|
+
evidence. The prototype remains with its actual owner when shared across a Goal.
|
|
130
|
+
|
|
88
131
|
## Register and verify
|
|
89
132
|
|
|
90
|
-
Reuse the established project and suitable tasks. Create new tasks in `
|
|
133
|
+
Reuse the established project and suitable tasks. Create new tasks in `proposed`,
|
|
91
134
|
retaining each confirmed ID. Set their concrete descriptions and actual
|
|
92
135
|
`dependsOn` prerequisites. Upload each task's own primary Markdown and required
|
|
93
136
|
resources; add actual attachment references to the complete description using
|
|
@@ -95,15 +138,20 @@ the observed task version. Reference already readable shared inputs at their
|
|
|
95
138
|
source. Do not present planned uploads as existing attachments.
|
|
96
139
|
|
|
97
140
|
Read back each complete task, its attachment inventory and required contents,
|
|
98
|
-
and its referenced shared inputs. Verify
|
|
99
|
-
|
|
100
|
-
applicable mock UI resources and
|
|
101
|
-
tasks and their stage briefs.
|
|
102
|
-
artifacts and associations are
|
|
141
|
+
and its referenced shared inputs. Verify self-contained Markdown descriptions,
|
|
142
|
+
valid links and images, the two required primary-document sections, real source
|
|
143
|
+
identities, intended dependencies, and applicable mock UI resources and
|
|
144
|
+
interaction. For a Goal, verify both starting tasks and their stage briefs.
|
|
145
|
+
Registration is complete only when required artifacts and associations are
|
|
146
|
+
confirmed readable. Without separate explicit approval authorization, leave
|
|
147
|
+
registered work proposed and report that approval is pending. Goal-creation
|
|
148
|
+
permission covers the two starting tasks and later in-scope breakdown, but never
|
|
149
|
+
their approval. A user can explicitly approve a stated task or Goal-task scope,
|
|
150
|
+
or approve directly through CLI/Web; an authorized Agent uses each reviewed
|
|
151
|
+
task's exact version through `task approve`.
|
|
103
152
|
|
|
104
153
|
If creation succeeds but a later operation fails, retain the confirmed IDs and
|
|
105
|
-
resume missing operations there. Tasks remain `
|
|
106
|
-
draft state. Reconcile uncertain results through the handbook before another
|
|
154
|
+
resume missing operations there. Tasks remain `proposed`. Reconcile uncertain results through the handbook before another
|
|
107
155
|
mutation. Report incomplete registration with the exact missing operation or
|
|
108
156
|
artifact and next step. Do not move detailed plans into descriptions to bypass
|
|
109
157
|
an attachment failure. Return after verified registration without selecting or
|
|
@@ -19,6 +19,11 @@ breakdown within that Goal. It covers no unrelated tasks and grants no execution
|
|
|
19
19
|
publication, deployment, external communication, merge, or mainline push
|
|
20
20
|
permission. Existing explicit authorization continues to apply within its scope.
|
|
21
21
|
Implementation or autopilot permission alone does not grant creation permission.
|
|
22
|
+
Goal-creation permission does not authorize approval. Approve only tasks or a
|
|
23
|
+
Goal-task scope explicitly approved by the user, using each reviewed task's exact
|
|
24
|
+
version; CLI and Web approval are available. Goal creation, requirements/prototype
|
|
25
|
+
completion, design completion and autopilot never imply that instruction. Approval
|
|
26
|
+
itself grants no execution or delivery permission.
|
|
22
27
|
|
|
23
28
|
During registration, create or reuse both starting tasks:
|
|
24
29
|
|
|
@@ -33,15 +38,28 @@ establish stable identity. Preserve confirmed IDs and inspect full content when
|
|
|
33
38
|
reusing an existing chain.
|
|
34
39
|
|
|
35
40
|
Set the design task's `dependsOn` to the Goal description task. Each task starts
|
|
36
|
-
in `
|
|
37
|
-
Solution and Acceptance criteria. State unanswered questions honestly.
|
|
38
|
-
requirements, prototypes, architecture, and breakdown are produced by their
|
|
41
|
+
in `proposed` with its own self-contained Markdown description and primary Markdown
|
|
42
|
+
containing Solution and Acceptance criteria. State unanswered questions honestly.
|
|
43
|
+
Complete requirements, prototypes, architecture, and breakdown are produced by their
|
|
39
44
|
respective stages; they are not prerequisites for registering the chain or
|
|
40
45
|
starting the stage that produces them. Confirm both tasks, stage briefs,
|
|
41
46
|
references, and dependency through real reads, then return from `create-task`.
|
|
47
|
+
Registration completeness leaves approval pending unless the user separately
|
|
48
|
+
authorized approval for those tasks. Metadata and attachment writes do not approve.
|
|
42
49
|
|
|
43
50
|
## Execute the appropriate stage
|
|
44
51
|
|
|
52
|
+
Every stage uses the same explicit task lifecycle. Proposed work waits for the
|
|
53
|
+
user's scoped approval; an authorized `task approve` moves it to todo even with
|
|
54
|
+
unfinished prerequisites. Begin only from approved ready todo with complete
|
|
55
|
+
stage inputs and execution authorization: use `task claim` with the exact version
|
|
56
|
+
observed for that decision and confirm in_progress. Resume existing in-progress
|
|
57
|
+
work after checking its actual checkpoint. After the stage acceptance and every
|
|
58
|
+
required authorized PR merge, reread and use `task complete` with the observed
|
|
59
|
+
version. Completion satisfies dependencies but never approves the next stage.
|
|
60
|
+
Unstarted todo work can return to proposed through explicitly authorized
|
|
61
|
+
unapprove; it then waits for a new approval before claim.
|
|
62
|
+
|
|
45
63
|
| Stage | Required inputs to start | Outputs and completion |
|
|
46
64
|
|---|---|---|
|
|
47
65
|
| Goal description | Its stage brief, current problem and scope, and available background. | Complete overall requirements, applicable final-style interactive UI prototype, verified stage acceptance, and repository-required delivery. Finishing this task completes problem definition. |
|
|
@@ -69,8 +87,10 @@ exercise the result when verifying this stage.
|
|
|
69
87
|
Confirm the full requirements are clear, the applicable prototype is usable,
|
|
70
88
|
and this stage's acceptance and repository delivery rules are satisfied. If
|
|
71
89
|
repository rules require a PR for these artifacts, use the existing PR completion
|
|
72
|
-
rules. Otherwise use the stated stage acceptance.
|
|
73
|
-
|
|
90
|
+
rules. Otherwise use the stated stage acceptance. Complete only this in-progress
|
|
91
|
+
task through `task complete` with its observed version after verification. This
|
|
92
|
+
satisfies design's dependency; design still needs its own approval and claim, and
|
|
93
|
+
whole-Goal delivery remains unverified.
|
|
74
94
|
|
|
75
95
|
### Architecture design and actual task breakdown
|
|
76
96
|
|
|
@@ -89,7 +109,9 @@ Use `dependsOn` for actual prerequisites. Every delivery root with no other
|
|
|
89
109
|
implementation prerequisite depends directly on the design task; all delivery
|
|
90
110
|
paths must therefore pass through design completion. Keep delivery tasks blocked
|
|
91
111
|
while design is unfinished. This stage registers and verifies them; it does not
|
|
92
|
-
execute them.
|
|
112
|
+
execute them. New successors are proposed; approval requires a separate explicit
|
|
113
|
+
user instruction covering them, even when Goal creation already permits their
|
|
114
|
+
registration. Approved successors still wait for completed design prerequisites.
|
|
93
115
|
|
|
94
116
|
Upload each successor's own primary Markdown and needed resources, referencing
|
|
95
117
|
shared Goal and design inputs at their verified source. The design task owns its
|
|
@@ -108,9 +130,10 @@ and its blocking dependency while waiting; it grants no merge authority.
|
|
|
108
130
|
|
|
109
131
|
## Preserve ownership and recover partial registration
|
|
110
132
|
|
|
111
|
-
Every stage and delivery task needs its own
|
|
112
|
-
primary Markdown.
|
|
113
|
-
|
|
133
|
+
Every stage and delivery task needs its own self-contained Markdown description
|
|
134
|
+
and detailed primary Markdown. Follow create-task's Markdown and verified-resource
|
|
135
|
+
rules without claiming unfinished stage outputs are already available. Keep shared
|
|
136
|
+
requirements on the Goal description task and shared architecture and breakdown on the design task. Later tasks reference
|
|
114
137
|
verified source task IDs and attachment paths, read through the installed CLI,
|
|
115
138
|
or verified immutable repository references. Do not distribute a duplicate whole
|
|
116
139
|
packet to all tasks. Only copy a snapshot when the consuming task needs it,
|
|
@@ -125,11 +148,12 @@ does not prove failure. If identity cannot be established uniquely, preserve the
|
|
|
125
148
|
specific error and request the information needed to reconcile it; do not create
|
|
126
149
|
another chain.
|
|
127
150
|
|
|
128
|
-
Apply the handbook's exact-version
|
|
129
|
-
updates. Attachments are independent of task versions, status, and timestamps;
|
|
151
|
+
Apply the handbook's exact-version rules to metadata updates, approval,
|
|
152
|
+
withdrawal, claim and completion, and preserve complete-field replacement semantics for updates. Attachments are independent of task versions, status, and timestamps;
|
|
130
153
|
verify actual file contents and metadata separately. Do not unlock delivery by
|
|
131
154
|
marking incomplete registration or unfinished design complete. Readiness and
|
|
132
|
-
`in_progress` provide no ownership lock
|
|
155
|
+
`in_progress` provide no ownership lock; claim is a versioned transition, not an
|
|
156
|
+
assignee lease. Generic updates cannot write status or bypass stages.
|
|
133
157
|
|
|
134
158
|
## Advance and accept the whole Goal
|
|
135
159
|
|
|
@@ -2,22 +2,26 @@
|
|
|
2
2
|
|
|
3
3
|
Use the installed `daynight` CLI. Discover command groups with `daynight --help`
|
|
4
4
|
and read the relevant command's `--help` for arguments, options, and output
|
|
5
|
-
formats. This reference indexes project/task commands and explains the context
|
|
5
|
+
formats. The installed `dn` alias accepts the same commands. This reference indexes project/task commands and explains the context
|
|
6
6
|
needed to use them correctly.
|
|
7
7
|
|
|
8
8
|
## Command index
|
|
9
9
|
|
|
10
10
|
| Command | Purpose |
|
|
11
11
|
|---|---|
|
|
12
|
-
| `setup` | Configure access to the
|
|
12
|
+
| `setup` | Configure access to the service origin and optional personal token. |
|
|
13
13
|
| `project create` | Register a repository as a project or find its existing project. |
|
|
14
14
|
| `project list` | Find projects on the configured service. |
|
|
15
15
|
| `project show` | Inspect a project's details. |
|
|
16
|
-
| `task create` | Register a
|
|
17
|
-
| `task ready` |
|
|
16
|
+
| `task create` | Register a proposed task with its metadata and dependencies. |
|
|
17
|
+
| `task ready` | Read a bounded candidate page of approved todo tasks with completed prerequisites. |
|
|
18
18
|
| `task list` | Read every matching page; defaults to unfinished tasks. |
|
|
19
|
-
| `task show` | Read one task's complete details and version. |
|
|
20
|
-
| `task update` | Change
|
|
19
|
+
| `task show` | Read one task's complete details and exact version. |
|
|
20
|
+
| `task update` | Change metadata, dependencies, or PR references; status is not writable. |
|
|
21
|
+
| `task approve` | Change proposed to todo using an observed version and explicit approval authorization. |
|
|
22
|
+
| `task unapprove` | Withdraw approval of todo work, returning it to proposed using an observed version. |
|
|
23
|
+
| `task claim` | Change ready todo to in_progress using an observed version. |
|
|
24
|
+
| `task complete` | Change in_progress to done after acceptance and required authorized delivery. |
|
|
21
25
|
| `task graph` | Inspect the project's dependency graph and summary. |
|
|
22
26
|
| `task attachment put` | Upload or replace one attachment file. |
|
|
23
27
|
| `task attachment list` | Read a task's attachment inventory and metadata. |
|
|
@@ -32,10 +36,11 @@ stdin option; never put a token in command arguments, chat, task descriptions,
|
|
|
32
36
|
checkpoints or attachments. A configured token is bound to the normalized service
|
|
33
37
|
origin: changing the origin removes the previous token. Tokens require HTTPS
|
|
34
38
|
except for literal localhost or loopback HTTP addresses. Project discovery and
|
|
35
|
-
explicit project IDs grant no access; the service decides from current
|
|
36
|
-
|
|
37
|
-
blind repeat of a mutation. Reconcile an unconfirmed write
|
|
38
|
-
mutation. Setup
|
|
39
|
+
explicit project IDs grant no access; the service decides from current membership
|
|
40
|
+
when authorization is enabled. A 401 points to setup and does not permit an
|
|
41
|
+
anonymous retry or a blind repeat of a mutation. Reconcile an unconfirmed write
|
|
42
|
+
before another mutation. Setup saves configuration and performs no login or
|
|
43
|
+
network check.
|
|
39
44
|
|
|
40
45
|
**Project discovery.** Inside a Git worktree, task commands can omit `--project`:
|
|
41
46
|
the CLI matches the origin repository URL to a project on the configured
|
|
@@ -43,31 +48,58 @@ service. An explicit project overrides discovery for that invocation. Resolve
|
|
|
43
48
|
missing or ambiguous matches rather than guessing an ID or creating a project
|
|
44
49
|
to make a query succeed.
|
|
45
50
|
|
|
46
|
-
**Read scope.** Ready is a candidate page, ordered by
|
|
47
|
-
relevance. An empty page does not rule out
|
|
48
|
-
work. List traverses every matching page but
|
|
49
|
-
completed tasks explicitly when checking the
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
bounded candidate and
|
|
51
|
+
**Read scope.** Ready is a candidate page of approved todo tasks, ordered by
|
|
52
|
+
creation rather than relevance. An empty page does not rule out proposed,
|
|
53
|
+
in-progress or dependency-blocked work. List traverses every matching page but
|
|
54
|
+
excludes `done` by default; include completed tasks explicitly when checking the
|
|
55
|
+
full backlog or prior registrations. Its grouping is in-progress, ready todo,
|
|
56
|
+
blocked todo, proposed, then done when included; this does not rank relevance.
|
|
57
|
+
Human lists are summaries; JSON lists omit only `description` and preserve every
|
|
58
|
+
other task field. Use show when a description is needed; ready, details and write
|
|
59
|
+
results retain full tasks. Graph provides compact dependency context without
|
|
60
|
+
full descriptions, PR properties, or versions. Read the selected task's details
|
|
61
|
+
before acting. A graph-limit error still permits bounded candidate and
|
|
62
|
+
individual task reads.
|
|
57
63
|
|
|
58
|
-
**
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
64
|
+
**Lifecycle and approval.** Creation starts in `proposed`. Explicit approval
|
|
65
|
+
moves proposed to todo; unapprove returns only unstarted todo work to proposed;
|
|
66
|
+
claim moves ready todo to in_progress; complete moves in_progress to done.
|
|
67
|
+
Approval and withdrawal allow unfinished prerequisites. Claim and completion
|
|
68
|
+
require every direct prerequisite to be done. Proposed is never ready, even
|
|
69
|
+
with no prerequisites. Withdrawal preserves task materials, dependencies,
|
|
70
|
+
execution timestamps and attachments; it does not change successor states.
|
|
71
|
+
Repeated actions and wrong predecessor states fail. There is no reopening of
|
|
72
|
+
in-progress or done work, execution release, or direct todo-to-done transition.
|
|
73
|
+
Metadata, attachments and PR references cannot approve, withdraw approval or
|
|
74
|
+
claim work. Approve or unapprove only when the user explicitly authorizes that
|
|
75
|
+
action for the task or stated scope; creation, execution requests, `run-task`
|
|
76
|
+
and autopilot grant none. In the Web, the title-row entry opens a confirmation;
|
|
77
|
+
only deliberate confirmation is the user's approval or withdrawal instruction.
|
|
78
|
+
Cancel and Escape submit no action. Task approval itself grants no implementation,
|
|
79
|
+
publication, deployment or merge permission.
|
|
80
|
+
|
|
81
|
+
**Task concurrency.** Bind each metadata update, approve, unapprove, claim and complete to
|
|
82
|
+
the exact version read for that decision using `--if-version`; the CLI's default
|
|
83
|
+
pre-submit read cannot protect an earlier decision. Preserve full int64 decimal
|
|
84
|
+
digits without numeric rounding. A claim is a versioned transition, not an
|
|
85
|
+
assignee lock, renewable lease or proof that existing work belongs to this
|
|
86
|
+
session. On a conflict, reread and reconsider; a new action needs a fresh
|
|
87
|
+
decision, not merely a newer version. Never retry a mutation automatically.
|
|
66
88
|
|
|
67
89
|
**Replacement fields.** Descriptions, dependency sets, and PR reference lists
|
|
68
90
|
replace the whole supplied field. Preserve every still-needed value. Omitted
|
|
69
91
|
fields stay unchanged; clearing and option-pairing syntax is in command help.
|
|
70
92
|
|
|
93
|
+
**Markdown descriptions.** Write self-contained task briefs in Markdown following
|
|
94
|
+
[create-task](create-task.md). The Web displays CommonMark/GFM, while API and CLI
|
|
95
|
+
reads preserve the original string, including line breaks and fenced code. There
|
|
96
|
+
is no format flag. Relative description links and images start at the current
|
|
97
|
+
task's attachment root; Markdown attachment internals start at their containing
|
|
98
|
+
file's directory. Keep real case-sensitive paths inside the task root, confirm
|
|
99
|
+
uploaded contents before linking them, and preserve Markdown and valid references
|
|
100
|
+
when replacing a description. Shared inputs retain their source task ID and path
|
|
101
|
+
or verified immutable repository URL; they are not cross-task relative links.
|
|
102
|
+
|
|
71
103
|
**Attachment independence.** Task reads contain no attachment inventory.
|
|
72
104
|
Attachments use case-sensitive relative paths; uploads to the same path replace
|
|
73
105
|
that file, so keep mock UI resources at their referenced relative locations.
|
|
@@ -76,13 +108,15 @@ Task versions therefore cannot protect attachment writes. Multiple file
|
|
|
76
108
|
operations are independent, and file bytes and metadata can change partially;
|
|
77
109
|
confirm actual contents as well as metadata when reconciling a write.
|
|
78
110
|
|
|
79
|
-
**Unconfirmed writes.** A timeout or lost response may follow an
|
|
80
|
-
Read back task fields or attachment contents before
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
resending a write.
|
|
111
|
+
**Unconfirmed writes.** A timeout, cancellation or lost response may follow an
|
|
112
|
+
applied change. Read back current task fields or attachment contents before
|
|
113
|
+
another mutation; cancellation does not prove rollback. For an unconfirmed
|
|
114
|
+
create, establish identity from complete fields and operation context; a matching
|
|
115
|
+
title or an empty lookup alone is insufficient. Preserve actual errors and
|
|
116
|
+
resource IDs rather than reporting success or blindly resending a write.
|
|
85
117
|
|
|
86
118
|
Task registration, execution, and selection follow [create-task](create-task.md),
|
|
87
119
|
[run-task](run-task.md), and [autopilot](autopilot.md), respectively. For a chain
|
|
88
120
|
of independently tracked delivery stages, use [the Goal protocol](goal.md).
|
|
121
|
+
Goal scope grants no implicit approval: every stage and delivery task follows the
|
|
122
|
+
same proposed/approve/unapprove/claim/complete lifecycle.
|
|
@@ -7,13 +7,16 @@ or activating autopilot.
|
|
|
7
7
|
|
|
8
8
|
## Establish the task and stage
|
|
9
9
|
|
|
10
|
-
Read the complete task with `daynight task show <task-id> --json`. Its
|
|
11
|
-
must make the current actions, scope, deliverables,
|
|
12
|
-
completion summary understandable. Read its own primary
|
|
13
|
-
Acceptance criteria; equivalent headings in the task's
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
10
|
+
Read the complete task with `daynight task show <task-id> --json`. Its Markdown
|
|
11
|
+
description must make the problem, current actions, scope, deliverables,
|
|
12
|
+
constraints, and observable completion summary understandable. Read its own primary
|
|
13
|
+
Markdown's Solution and Acceptance criteria; equivalent headings in the task's
|
|
14
|
+
language are valid.
|
|
15
|
+
Resolve description-relative links and images from the current task's attachment
|
|
16
|
+
root; links inside a Markdown attachment use its own directory. Resolve real
|
|
17
|
+
shared input references using the source task ID and attachment path or a verified
|
|
18
|
+
immutable repository reference. Read required contents rather than assuming a
|
|
19
|
+
task read loads attachment inventory or bytes.
|
|
17
20
|
|
|
18
21
|
For a Goal stage or delivery task, read [the Goal protocol](goal.md) and identify
|
|
19
22
|
its role from the actual task content and context. Apply that stage's input and
|
|
@@ -32,13 +35,25 @@ from a title, silently invent acceptance criteria, or move detailed plans into
|
|
|
32
35
|
the description. Do not execute prerequisites as an implicit expansion of the
|
|
33
36
|
requested task.
|
|
34
37
|
|
|
35
|
-
For `
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
38
|
+
For `proposed`, keep execution pending approval. A run request or autopilot
|
|
39
|
+
activation does not authorize approval. Only if the user explicitly authorized
|
|
40
|
+
approval of this task or stated scope, review its current content and use
|
|
41
|
+
`task approve` with that exact observed version, then confirm the resulting todo
|
|
42
|
+
state. The user can also approve directly through the CLI or Web. Approval does
|
|
43
|
+
not expand implementation or delivery authorization.
|
|
44
|
+
|
|
45
|
+
If approval is withdrawn before claim, the task is proposed again and waits for
|
|
46
|
+
new explicit approval. Do not infer approval from its earlier todo state or
|
|
47
|
+
retry a failed claim with a newer version.
|
|
48
|
+
|
|
49
|
+
For ready `todo`, begin only when dependencies are done, required stage inputs are complete
|
|
50
|
+
and the work is authorized. Use `task claim` with the exact version observed for
|
|
51
|
+
that decision and confirm in_progress before starting. A stale version or
|
|
52
|
+
changed prerequisite requires rereading and reconsidering, with no automatic
|
|
53
|
+
claim retry. For `in_progress`, recover existing work and coordinate using the
|
|
54
|
+
project's established mechanisms; the state is not an assignee lock or lease.
|
|
55
|
+
A task already `done` is reported as such; there is no reopening operation.
|
|
56
|
+
Preserve the requested task ID through recovery and waiting.
|
|
42
57
|
|
|
43
58
|
## Execute and maintain continuity
|
|
44
59
|
|
|
@@ -53,8 +68,11 @@ while running either stage.
|
|
|
53
68
|
Resolve material changes to the agreed solution or acceptance within the current
|
|
54
69
|
authorization. Rewrite the owning artifact and affected task summaries and input
|
|
55
70
|
references coherently. Preserve requirements; do not silently weaken acceptance.
|
|
56
|
-
Descriptions remain
|
|
57
|
-
|
|
71
|
+
Descriptions remain self-contained Markdown task summaries. Preserve valid
|
|
72
|
+
syntax, original content, and actual resource references during full-field
|
|
73
|
+
updates; confirm new or replaced resources before linking them. Each primary
|
|
74
|
+
Markdown owns its detailed plan and evidence; shared inputs remain at their
|
|
75
|
+
verified source.
|
|
58
76
|
|
|
59
77
|
Advance only this task. Subagents collaborate on it, and waiting for CI, review,
|
|
60
78
|
approval, or merge remains part of it. Keep all required delivery PR URLs and
|
|
@@ -85,7 +103,9 @@ pending and successors blocked.
|
|
|
85
103
|
|
|
86
104
|
For tasks without a development or PR delivery path, use their stated stage
|
|
87
105
|
acceptance. In every case, confirm required evidence is recorded and readable,
|
|
88
|
-
then reread the complete task and
|
|
106
|
+
then reread the complete in-progress task and use `task complete` with its exact
|
|
107
|
+
observed version. This applies to Goal description, design and every delivery
|
|
108
|
+
task, using their own stage acceptance and required authorized PR merges.
|
|
89
109
|
Only service confirmation establishes the status update; reconcile uncertain
|
|
90
110
|
results before reporting success. A Goal description task's completion means
|
|
91
111
|
problem definition is complete; design completion means architecture and actual
|
|
@@ -94,6 +114,7 @@ breakdown are delivered. Neither establishes whole-Goal completion.
|
|
|
94
114
|
Continue ordinary CI and review waits as this task. When progress requires
|
|
95
115
|
external intervention, preserve the target, actual state, concrete blocker,
|
|
96
116
|
existing work, and next action in the checkpoint, then return the waiting result.
|
|
97
|
-
|
|
117
|
+
Unapproved work stays `proposed`; approved unstarted work stays `todo`; claimed
|
|
118
|
+
work stays `in_progress`. Do not declare
|
|
98
119
|
completion or select other work to bypass a wait. After completion, return
|
|
99
120
|
without selecting a successor. Whole-Goal acceptance follows the Goal protocol.
|
|
@@ -19,6 +19,8 @@ export const runTaskCommand = async (args, context, dependencies = defaultDepend
|
|
|
19
19
|
return;
|
|
20
20
|
}
|
|
21
21
|
const help = `${command.path.join(" ")} --help`;
|
|
22
|
+
const name = command.command.name;
|
|
23
|
+
const action = name === "approve" || name === "unapprove" || name === "claim" || name === "complete" ? name : undefined;
|
|
22
24
|
const title = command.options.get("--title");
|
|
23
25
|
const description = command.options.get("--description");
|
|
24
26
|
const status = command.options.get("--status");
|
|
@@ -43,31 +45,28 @@ export const runTaskCommand = async (args, context, dependencies = defaultDepend
|
|
|
43
45
|
throw new UsageError("Task title must be nonempty UTF-8 text without NUL characters.", help);
|
|
44
46
|
if (description !== undefined && !isText(description))
|
|
45
47
|
throw new UsageError("Task description must be UTF-8 text without NUL characters.", help);
|
|
46
|
-
if (status !== undefined && !["todo", "in_progress", "done"].includes(status))
|
|
47
|
-
throw new UsageError("Task status must be todo, in_progress, or done.", help);
|
|
48
48
|
if (dependsOn !== undefined && clearDependencies)
|
|
49
49
|
throw new UsageError("Specify --depends-on or --clear-dependencies, not both.", help);
|
|
50
50
|
const changes = {
|
|
51
51
|
...(title === undefined ? {} : { title }),
|
|
52
52
|
...(description === undefined ? {} : { description }),
|
|
53
|
-
...(status === undefined ? {} : { status }),
|
|
54
53
|
...(dependsOn === undefined ? {} : { dependsOn }),
|
|
55
54
|
...(clearDependencies ? { dependsOn: [] } : {}),
|
|
56
55
|
...(properties === undefined ? {} : { properties }),
|
|
57
56
|
};
|
|
58
|
-
if (
|
|
59
|
-
throw new UsageError("Task update requires a title, description,
|
|
57
|
+
if (name === "update" && Object.keys(changes).length === 0)
|
|
58
|
+
throw new UsageError("Task update requires a title, description, dependency, or PR reference change.", help);
|
|
60
59
|
const rawProjectId = command.options.get("--project");
|
|
61
60
|
let projectId;
|
|
62
61
|
let taskId;
|
|
63
|
-
if (rawProjectId !== undefined ||
|
|
62
|
+
if (rawProjectId !== undefined || name === "show" || name === "update" || action !== undefined) {
|
|
64
63
|
const { canonicalId } = await import("../../api/parse.js");
|
|
65
64
|
if (rawProjectId !== undefined) {
|
|
66
65
|
projectId = canonicalId(rawProjectId) ?? undefined;
|
|
67
66
|
if (projectId === undefined)
|
|
68
67
|
throw new UsageError("project-id must be a hyphenated UUID.", help);
|
|
69
68
|
}
|
|
70
|
-
if (
|
|
69
|
+
if (name === "show" || name === "update" || action !== undefined) {
|
|
71
70
|
taskId = canonicalId(command.values[0]) ?? undefined;
|
|
72
71
|
if (taskId === undefined)
|
|
73
72
|
throw new UsageError("task-id must be a hyphenated UUID.", help);
|
|
@@ -127,6 +126,13 @@ export const runTaskCommand = async (args, context, dependencies = defaultDepend
|
|
|
127
126
|
}
|
|
128
127
|
const version = expectedVersion === undefined ? (await api.getTask(project.id, taskId)).version : expectedVersion;
|
|
129
128
|
operation.check();
|
|
129
|
+
if (action !== undefined) {
|
|
130
|
+
const mutate = { approve: api.approveTask, unapprove: api.unapproveTask, claim: api.claimTask, complete: api.completeTask }[action];
|
|
131
|
+
const task = await mutate(project.id, taskId, { version });
|
|
132
|
+
operation.check();
|
|
133
|
+
const result = { approve: "approved", unapprove: "unapproved", claim: "claimed", complete: "completed" }[action];
|
|
134
|
+
return `Task ${result}.\n${renderTask(task)}`;
|
|
135
|
+
}
|
|
130
136
|
const task = await api.updateTask(project.id, taskId, { ...changes, version });
|
|
131
137
|
operation.check();
|
|
132
138
|
return `Task updated.\n${renderTask(task)}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command.js","sourceRoot":"","sources":["../../../src/commands/task/command.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAGhE,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAOjD,MAAM,mBAAmB,GAA4B;IACnD,gBAAgB,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,EAAE,CAAC,CAAC,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAC;IACrG,cAAc,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,EAAE,CAAC,CAAC,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAC,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC;CACvG,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,IAAU,EAAU,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAElK,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EACjC,IAAuB,EACvB,OAAmB,EACnB,YAAY,GAA4B,mBAAmB,EAC5C,EAAE;IACjB,MAAM,OAAO,GAAG,YAAY,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC,UAAU,EAAE,MAAM,CAAC,EAAE,sBAAsB,CAAC,CAAC;IACjG,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QAC3B,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QACjE,OAAO;IACT,CAAC;IACD,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,YAAY,EAAE,CAAC;QACrC,MAAM,EAAE,wBAAwB,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;QACrE,MAAM,wBAAwB,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;QAC/D,OAAO;IACT,CAAC;IACD,MAAM,IAAI,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC;IAChD,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAuB,CAAC;IACnE,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAuB,CAAC;IAC/E,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAA0B,CAAC;IACxE,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACzC,IAAI,GAAG,IAAI,MAAM,KAAK,SAAS;QAAE,MAAM,IAAI,UAAU,CAAC,gCAAgC,EAAE,IAAI,CAAC,CAAC;IAC9F,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAkC,CAAC;IACvF,MAAM,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;IACtE,MAAM,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAkC,CAAC;IACnG,MAAM,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAkC,CAAC;IACvG,MAAM,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;IACvE,IAAI,iBAAiB,IAAI,CAAC,eAAe,KAAK,SAAS,IAAI,iBAAiB,KAAK,SAAS,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,mFAAmF,EAAE,IAAI,CAAC,CAAC;IAC7M,IAAI,eAAe,EAAE,MAAM,KAAK,iBAAiB,EAAE,MAAM;QAAE,MAAM,IAAI,UAAU,CAAC,gFAAgF,EAAE,IAAI,CAAC,CAAC;IACxK,MAAM,UAAU,GAAG,iBAAiB,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,iBAAkB,CAAC,KAAK,CAAE,EAAE,CAAC,CAAC,EAAE,CAAC;IAC9M,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAuB,CAAC;IAC3E,MAAM,UAAU,GAAG,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IAC5E,IAAI,aAAa,KAAK,SAAS,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,UAAU,GAAG,CAAC,IAAI,UAAU,GAAG,GAAG,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,2DAA2D,EAAE,IAAI,CAAC,CAAC;IACrO,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,gEAAgE,EAAE,IAAI,CAAC,CAAC;IAChJ,IAAI,WAAW,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,6DAA6D,EAAE,IAAI,CAAC,CAAC;IACjJ,IAAI,
|
|
1
|
+
{"version":3,"file":"command.js","sourceRoot":"","sources":["../../../src/commands/task/command.ts"],"names":[],"mappings":"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"}
|