@codetreker/daynight 0.13.1 → 0.17.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/dist/api/client.d.ts +10 -6
  2. package/dist/api/client.js +77 -16
  3. package/dist/api/client.js.map +1 -1
  4. package/dist/api/parse.js +39 -8
  5. package/dist/api/parse.js.map +1 -1
  6. package/dist/api/types.d.ts +86 -5
  7. package/dist/commands/skill/refresh-installed.d.ts +1 -0
  8. package/dist/commands/skill/refresh-installed.js +17 -0
  9. package/dist/commands/skill/refresh-installed.js.map +1 -0
  10. package/dist/commands/skill/refresh.d.ts +4 -0
  11. package/dist/commands/skill/refresh.js +87 -0
  12. package/dist/commands/skill/refresh.js.map +1 -0
  13. package/dist/commands/skill/skills/using-daynight/SKILL.md +23 -16
  14. package/dist/commands/skill/skills/using-daynight/references/autopilot.md +69 -48
  15. package/dist/commands/skill/skills/using-daynight/references/create-task.md +25 -18
  16. package/dist/commands/skill/skills/using-daynight/references/goal.md +65 -22
  17. package/dist/commands/skill/skills/using-daynight/references/handbook.md +56 -39
  18. package/dist/commands/skill/skills/using-daynight/references/run-task.md +41 -34
  19. package/dist/commands/skill/targets.d.ts +1 -0
  20. package/dist/commands/skill/targets.js +17 -9
  21. package/dist/commands/skill/targets.js.map +1 -1
  22. package/dist/commands/task/command.js +18 -13
  23. package/dist/commands/task/command.js.map +1 -1
  24. package/dist/commands/task/definition.js +20 -21
  25. package/dist/commands/task/definition.js.map +1 -1
  26. package/dist/commands/task/rendering.js +3 -1
  27. package/dist/commands/task/rendering.js.map +1 -1
  28. package/dist/commands/update/definition.js +2 -2
  29. package/dist/commands/update/definition.js.map +1 -1
  30. package/dist/commands/update/updater.d.ts +2 -1
  31. package/dist/commands/update/updater.js +19 -4
  32. package/dist/commands/update/updater.js.map +1 -1
  33. package/dist/repository/git.d.ts +6 -3
  34. package/dist/repository/git.js +6 -4
  35. package/dist/repository/git.js.map +1 -1
  36. package/package.json +2 -2
@@ -13,15 +13,12 @@ needed to use them correctly.
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 proposed task with its metadata and dependencies. |
17
- | `task ready` | Read a bounded candidate page of approved todo tasks with completed prerequisites. |
16
+ | `task create` | Register a todo task with its metadata and dependencies. |
17
+ | `task ready` | Read a bounded candidate page of todo tasks with completed prerequisites. |
18
18
  | `task list` | Read every matching page; defaults to unfinished tasks. |
19
19
  | `task show` | Read one task's complete details and exact version. |
20
- | `task update` | Change metadata, automatic-execution permission, 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. |
20
+ | `task update` | Change metadata, automatic-execution permission, platform requirements, dependencies, or PR references; status is not writable. |
21
+ | `task set-status` | Set todo, in_progress, or done using an observed exact version. |
25
22
  | `task graph` | Inspect the project's dependency graph and summary. |
26
23
  | `task attachment put` | Upload or replace one attachment file. |
27
24
  | `task attachment list` | Read a task's attachment inventory and metadata. |
@@ -48,12 +45,11 @@ service. An explicit project overrides discovery for that invocation. Resolve
48
45
  missing or ambiguous matches rather than guessing an ID or creating a project
49
46
  to make a query succeed.
50
47
 
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
48
+ **Read scope.** Ready is a candidate page of todo tasks, ordered by
49
+ creation rather than relevance. An empty page does not rule out in-progress or dependency-blocked work. List traverses every matching page but
54
50
  excludes `done` by default; include completed tasks explicitly when checking the
55
51
  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.
52
+ blocked todo, then done when included; this does not rank relevance.
57
53
  Human lists are summaries; JSON lists omit only `description` and preserve every
58
54
  other task field. Use show when a description is needed; ready, details and write
59
55
  results retain full tasks. Graph provides compact dependency context without
@@ -61,49 +57,68 @@ full descriptions, PR properties, or versions. Read the selected task's details
61
57
  before acting. A graph-limit error still permits bounded candidate and
62
58
  individual task reads.
63
59
 
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 alone grant none. The Goal protocol treats an explicit request
77
- to start a requirements or solution discussion as scoped authorization to approve
78
- and claim that discussion task. Its user-confirmed transitions do not authorize
79
- approval or execution of delivery tasks. In the Web, the title-row entry opens a confirmation;
80
- only deliberate confirmation is the user's approval or withdrawal instruction.
81
- Cancel and Escape submit no action. Task approval itself grants no implementation,
82
- publication, deployment or merge permission.
60
+ **Task status.** Creation starts in `todo` with no task approval stage and does
61
+ not start execution. `task set-status <task-id> <status> --if-version <version>`
62
+ sets any of `todo`, `in_progress`, or `done`. The service checks the exact version
63
+ before a same-status no-op; it preserves all fields for a current-version no-op
64
+ and refuses stale versions. A real change increments the version once. Generic
65
+ metadata updates cannot write status. Status, materials, and readiness grant no
66
+ implementation, publication, deployment, or merge permission.
67
+
68
+ Entering in_progress or done requires every direct prerequisite done. Reopening
69
+ done to todo or in_progress is refused when a direct successor is in_progress or
70
+ done; successors are never changed automatically. Entering in_progress starts a
71
+ new execution interval and clears completion; returning to todo clears both
72
+ endpoints. In_progress to done retains the nullable start and records completion.
73
+ Todo to done records only completion, with unknown duration. Same-status and
74
+ metadata updates preserve timing. State changes provide no process ownership,
75
+ release, transfer, stop, or lease semantics. The Web confirms every status choice,
76
+ including the current status; cancel and Escape submit no request.
83
77
 
84
78
  **Automatic execution permission.** Tasks expose the required boolean
85
- `allowAgents`, independent of status approval and dependency readiness. New tasks
79
+ `allowAgents`, independent of status and dependency readiness. New tasks
86
80
  start false; public creation cannot set it. Existing tasks receive true through
87
81
  the database migration. Use `task update <task-id> --allow-agents true|false --if-version <version>` only
88
82
  for an explicitly authorized permission change.
89
83
  Omission preserves the current value, including explicit false. Actual changes
90
84
  are locked during in_progress; exact-version same-value requests keep the
91
- version and timestamps, while stale versions still conflict. Approve, unapprove,
92
- claim, complete and other metadata updates preserve the flag.
85
+ version and timestamps, while stale versions still conflict. Status changes and other metadata updates preserve the flag.
93
86
 
94
87
  `task list` and `task ready` accept `--allow-agents true|false`. The server
95
88
  combines that condition with other filters before pagination and the ready limit;
96
89
  an unfiltered ready page may contain tasks without automatic-execution permission.
97
90
  Automatic selection requires true and automated workflows must not enable it
98
- themselves. An explicitly user-selected task may still use manual claim regardless
91
+ themselves. An explicitly user-selected task may still use manual execution regardless
99
92
  of the flag. Permission does not grant execution, publication or merge authority.
100
93
  A lost permission PATCH response is an unconfirmed write: read actual task state
101
94
  before reconsidering the operation, without resubmitting automatically.
102
95
 
103
- **Task concurrency.** Bind each metadata update, approve, unapprove, claim and complete to
96
+ **Execution platform.** Complete tasks, inventory items and graph nodes expose
97
+ `requiredPlatform` as `null`, `windows`, `linux` or `macos`; null means unrestricted.
98
+ Set a requirement with `task create --required-platform <platform>` or
99
+ `task update <task-id> --required-platform <platform> --if-version <version>`.
100
+ Clear it with `task update <task-id> --clear-required-platform --if-version <version>`;
101
+ setting and clearing in one command is invalid. Omitting both update options
102
+ preserves the requirement. Existing and new tasks without a requirement are
103
+ unrestricted. Actual changes are locked during in_progress; an exact-version
104
+ same-value request keeps version and timestamps, while stale versions conflict.
105
+ Explicitly user-selected tasks and fixed queues retain their manual execution
106
+ path independently of platform compatibility. Automatic selections keep their
107
+ actual-platform context and recheck full-task eligibility before set-status.
108
+
109
+ `task list` and `task ready` accept `--compatible-platform <platform>`. The
110
+ server includes unrestricted tasks and exact matches, combining this condition
111
+ with status, readiness and `--allow-agents` before pagination or the ready limit.
112
+ Platform compatibility does not change readiness or enable automatic execution.
113
+ Preserve the filter when requesting additional candidate inventory; do not filter
114
+ a bounded unfiltered ready page locally. A query option selects a candidate
115
+ platform and does not establish the actual execution environment. Worker runtime
116
+ must identify its own platform; a Linux runtime in WSL is Linux.
117
+
118
+ **Task concurrency.** Bind each metadata update and status change to
104
119
  the exact version read for that decision using `--if-version`; the CLI's default
105
120
  pre-submit read cannot protect an earlier decision. Preserve full int64 decimal
106
- digits without numeric rounding. A claim is a versioned transition, not an
121
+ digits without numeric rounding. Entering in_progress is a versioned transition, not an
107
122
  assignee lock, renewable lease or proof that existing work belongs to this
108
123
  session. On a conflict, reread and reconsider; a new action needs a fresh
109
124
  decision, not merely a newer version. Never retry a mutation automatically.
@@ -111,7 +126,7 @@ decision, not merely a newer version. Never retry a mutation automatically.
111
126
  **Dependency classification.** `dependsOn` contains every direct prerequisite;
112
127
  `externalDependsOn` is its explicit external subset. Ordinary prerequisites are
113
128
  `dependsOn` minus that subset. Both are canonical, duplicate-free UUID sets,
114
- not insertion order. Every prerequisite must be done before claim or completion,
129
+ not insertion order. Every prerequisite must be done before entering in_progress or done,
115
130
  including external ones; cycle checks and project access rules use all edges.
116
131
  External means cross-chain within the same project, not a cross-project
117
132
  reference. It separates chain ownership, not blocking or authorization. Use
@@ -174,5 +189,7 @@ resource IDs rather than reporting success or blindly resending a write.
174
189
  Task registration, execution, and selection follow [create-task](create-task.md),
175
190
  [run-task](run-task.md), and [autopilot](autopilot.md), respectively. For a chain
176
191
  of independently tracked delivery stages, use [the Goal protocol](goal.md).
177
- Goal scope grants no implicit approval: every stage and delivery task follows the
178
- same proposed/approve/unapprove/claim/complete lifecycle.
192
+ Every stage and delivery task follows the same todo/in_progress/done contract.
193
+ A fixed Goal queue may use existing scoped execution authorization for its ready
194
+ successors; registration and discussion confirmation grant no delivery execution
195
+ permission.
@@ -25,48 +25,56 @@ its role from the actual task content and context. Apply that stage's input and
25
25
  output requirements. Requirements and solution discussions start from their stage briefs;
26
26
  the completed requirements, applicable UI prototype, and architecture are outputs
27
27
  of the stages that produce them. Delivery tasks require the delivered design and
28
- applicable prototype. When a prototype is a required input, view and exercise it
29
- with its resources. An unfinished output of the current stage is not a missing
30
- input.
31
-
32
- An explicitly user-selected task may use the manual claim path regardless of
33
- `allowAgents`; this flag gates automatic selection, not explicit task assignment.
34
- Automated task selection requires true and must not enable the flag itself.
28
+ applicable prototype. Before implementation, read every required architecture
29
+ document listed in the delivery task's description using its architecture task ID
30
+ and full attachment paths or verified immutable repository references. This also
31
+ applies when the architecture task is only an indirect prerequisite. Confirm the
32
+ description's references satisfy the Goal protocol. When a prototype is a required
33
+ input, view and exercise it with its resources. An unfinished output of the current
34
+ stage is not a missing input.
35
+
36
+ An explicitly user-selected task may use the manual execution path regardless of
37
+ `allowAgents` or platform compatibility; a fixed queue explicitly selected by the
38
+ user has the same manual path. These conditions gate automatic selection, not
39
+ explicit assignment. Automated task selection requires true and must not enable
40
+ the flag itself. An automatically selected ID passed here remains automatic
41
+ selection, even though run-task receives a concrete ID. Carry its actual runtime
42
+ platform from autopilot and wait if unsupported or unknown. Immediately before
43
+ setting in_progress, reread the full task and recheck `todo`, ready,
44
+ `allowAgents=true`, and `requiredPlatform` either null or equal to that same actual
45
+ platform. A changed or incompatible requirement prevents starting and requires a
46
+ new selection decision; a changed execution environment requires fresh runtime
47
+ identification and candidate queries. Use the exact version from this full-task
48
+ recheck with `--if-version`; an earlier candidate page does not authorize the
49
+ manual exception after automatic eligibility changes.
35
50
 
36
51
  Check state, every direct prerequisite, authorized scope, and required stage
37
52
  inputs. Read `dependsOn` and its `externalDependsOn` subset: ordinary edges
38
53
  express same-chain prerequisites, external marks distinguish verified cross-chain
39
- ownership. Both kinds must be done for claim and completion. Classification
40
- never grants permission to execute a prerequisite, approve it, enable automatic
54
+ ownership. Both kinds must be done before entering in_progress or done. Classification
55
+ never grants permission to execute a prerequisite, enable automatic
41
56
  execution, or remove a blocker.
42
57
  A missing or unreadable primary Markdown, missing Solution or Acceptance criteria,
43
- or absent required input leaves execution unready. Resolve it within the
44
- existing authorization or return the concrete issue. Do not infer requirements
45
- from a title, silently invent acceptance criteria, or move detailed plans into
46
- the description. Do not execute prerequisites as an implicit expansion of the
47
- requested task.
48
-
49
- For `proposed`, keep execution pending approval. A run request or autopilot
50
- activation does not authorize approval of ordinary or delivery tasks. An explicit
51
- request to start the current Goal discussion, or the user-directed transition
52
- that starts solution discussion, authorizes approval and claim of that discussion
53
- under the Goal protocol; registration alone does not. Only if the user explicitly authorized
54
- approval of this task or stated scope, review its current content and use
55
- `task approve` with that exact observed version, then confirm the resulting todo
56
- state. The user can also approve directly through the CLI or Web. Approval does
57
- not expand implementation or delivery authorization.
58
-
59
- If approval is withdrawn before claim, the task is proposed again and waits for
60
- new explicit approval. Do not infer approval from its earlier todo state or
61
- retry a failed claim with a newer version.
58
+ or missing or unreadable required architecture reference or input leaves execution
59
+ unready. Resolve it within the existing authorization or return the concrete issue.
60
+ Do not infer requirements from a title, silently invent acceptance criteria, or
61
+ move detailed plans into the description. Do not execute prerequisites as an
62
+ implicit expansion of the requested task.
63
+
64
+ Creation leaves a task `todo` and does not execute it. An explicit request to
65
+ start the current Goal discussion, or the user-directed transition that starts
66
+ solution discussion, authorizes entering in_progress for that discussion under
67
+ the Goal protocol; registration alone does not. Existing execution authorization
68
+ may cover the stated task or fixed Goal queue and its ready successors. Task
69
+ status never expands implementation or delivery authorization.
62
70
 
63
71
  For ready `todo`, begin only when dependencies are done, required stage inputs are complete
64
- and the work is authorized. Use `task claim` with the exact version observed for
72
+ and the work is authorized. Use `task set-status <task-id> in_progress` with the exact version observed for
65
73
  that decision and confirm in_progress before starting. A stale version or
66
74
  changed prerequisite requires rereading and reconsidering, with no automatic
67
- claim retry. For `in_progress`, recover existing work and coordinate using the
75
+ mutation retry. For `in_progress`, recover existing work and coordinate using the
68
76
  project's established mechanisms; the state is not an assignee lock or lease.
69
- A task already `done` is reported as such; there is no reopening operation.
77
+ A task already `done` is reported as such unless reopening is within the explicit requested scope; use the same versioned status setter and dependency protection.
70
78
  Preserve the requested task ID through recovery and waiting.
71
79
 
72
80
  ## Execute and maintain continuity
@@ -132,7 +140,7 @@ pending and successors blocked.
132
140
 
133
141
  For tasks without a development or PR delivery path, use their stated stage
134
142
  acceptance. In every case, confirm required evidence is recorded and readable,
135
- then reread the complete in-progress task and use `task complete` with its exact
143
+ then reread the complete in-progress task and use `task set-status <task-id> done` with its exact
136
144
  observed version. For Goal discussions, use their confirmation gates and verified
137
145
  accepted materials; for delivery tasks, use their acceptance and required authorized PR
138
146
  merges.
@@ -144,8 +152,7 @@ actual verified breakdown are delivered. Neither establishes whole-Goal completi
144
152
  Continue ordinary CI and review waits as this task. When progress requires
145
153
  external intervention, preserve the target, actual state, concrete blocker,
146
154
  existing work, and next action in the checkpoint, then return the waiting result.
147
- Unapproved work stays `proposed`; approved unstarted work stays `todo`; claimed
148
- work stays `in_progress`. Do not declare
155
+ Unstarted work stays `todo`; active work stays `in_progress`. Do not declare
149
156
  completion or select other work to bypass a wait. After completion, return
150
157
  without selecting a successor, except for an explicit user-directed discussion
151
158
  transition under the Goal protocol. That transition does not activate autopilot
@@ -8,4 +8,5 @@ export type SkillTarget = {
8
8
  missingParents: readonly string[];
9
9
  agents: SkillAgent[];
10
10
  };
11
+ export declare const mergeSkillTargets: (candidates: readonly SkillTarget[]) => SkillTarget[];
11
12
  export declare const planSkillTargets: (base: string, agents: readonly SkillAgent[]) => Promise<SkillTarget[]>;
@@ -5,17 +5,16 @@ const contains = (parent, child) => {
5
5
  const relative = path.relative(comparisonPath(parent), comparisonPath(child));
6
6
  return relative !== "" && relative !== ".." && !relative.startsWith(`..${path.sep}`) && !path.isAbsolute(relative);
7
7
  };
8
- export const planSkillTargets = async (base, agents) => {
8
+ export const mergeSkillTargets = (candidates) => {
9
9
  const targets = [];
10
- for (const agent of agents) {
11
- const parent = await resolvePhysicalDirectory(path.join(base, agent.directory, "skills"));
12
- const physicalParent = path.join(parent.ancestorPath, ...parent.missingComponents);
13
- const targetPath = path.join(physicalParent, "using-daynight");
14
- const existing = targets.find((target) => comparisonPath(target.path) === comparisonPath(targetPath));
15
- if (existing !== undefined)
16
- existing.agents.push(agent);
10
+ for (const candidate of candidates) {
11
+ const existing = targets.find((target) => comparisonPath(target.path) === comparisonPath(candidate.path));
12
+ if (existing === undefined)
13
+ targets.push({ ...candidate, agents: [...candidate.agents] });
17
14
  else
18
- targets.push({ path: targetPath, legacyPath: path.join(physicalParent, "daynight"), parent: physicalParent, ancestor: parent.ancestorPath, missingParents: parent.missingComponents, agents: [agent] });
15
+ for (const agent of candidate.agents)
16
+ if (!existing.agents.some(({ id }) => id === agent.id))
17
+ existing.agents.push(agent);
19
18
  }
20
19
  for (const [index, first] of targets.entries()) {
21
20
  for (const second of targets.slice(index + 1)) {
@@ -33,4 +32,13 @@ export const planSkillTargets = async (base, agents) => {
33
32
  }
34
33
  return targets;
35
34
  };
35
+ export const planSkillTargets = async (base, agents) => {
36
+ const targets = [];
37
+ for (const agent of agents) {
38
+ const parent = await resolvePhysicalDirectory(path.join(base, agent.directory, "skills"));
39
+ const physicalParent = path.join(parent.ancestorPath, ...parent.missingComponents);
40
+ targets.push({ path: path.join(physicalParent, "using-daynight"), legacyPath: path.join(physicalParent, "daynight"), parent: physicalParent, ancestor: parent.ancestorPath, missingParents: parent.missingComponents, agents: [agent] });
41
+ }
42
+ return mergeSkillTargets(targets);
43
+ };
36
44
  //# sourceMappingURL=targets.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"targets.js","sourceRoot":"","sources":["../../../src/commands/skill/targets.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"targets.js","sourceRoot":"","sources":["../../../src/commands/skill/targets.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@ const defaultDependencies = {
6
6
  runServerCommand: async (...args) => (await import("../server/runtime.js")).runServerCommand(...args),
7
7
  resolveProject: async (...args) => (await import("../../repository/index.js")).resolveProject(...args),
8
8
  };
9
- const taskPriority = (task) => task.status === "in_progress" ? 0 : task.ready ? 1 : task.status === "todo" ? 2 : task.status === "proposed" ? 3 : 4;
9
+ const taskPriority = (task) => task.status === "in_progress" ? 0 : task.ready ? 1 : task.status === "todo" ? 2 : 3;
10
10
  const compileDependencies = async (ordinary, external, clear, help) => {
11
11
  if (clear && (ordinary !== undefined || external !== undefined))
12
12
  throw new UsageError("--clear-dependencies conflicts with --depends-on and --external-depends-on.", help);
@@ -42,12 +42,18 @@ export const runTaskCommand = async (args, context, dependencies = defaultDepend
42
42
  }
43
43
  const help = `${command.path.join(" ")} --help`;
44
44
  const name = command.command.name;
45
- const action = name === "approve" || name === "unapprove" || name === "claim" || name === "complete" ? name : undefined;
45
+ const setsStatus = name === "set-status";
46
46
  const title = command.options.get("--title");
47
47
  const description = command.options.get("--description");
48
48
  const status = command.options.get("--status");
49
49
  const allowAgentsArgument = command.options.get("--allow-agents");
50
50
  const allowAgents = allowAgentsArgument === undefined ? undefined : allowAgentsArgument === "true";
51
+ const requiredPlatform = command.options.get("--required-platform");
52
+ const clearRequiredPlatform = command.options.has("--clear-required-platform");
53
+ if (clearRequiredPlatform && requiredPlatform !== undefined)
54
+ throw new UsageError("--clear-required-platform conflicts with --required-platform.", help);
55
+ const platformFields = clearRequiredPlatform ? { requiredPlatform: null } : requiredPlatform === undefined ? {} : { requiredPlatform };
56
+ const compatiblePlatform = command.options.get("--compatible-platform");
51
57
  const all = command.options.has("--all");
52
58
  if (all && status !== undefined)
53
59
  throw new UsageError("--all conflicts with --status.", help);
@@ -73,24 +79,25 @@ export const runTaskCommand = async (args, context, dependencies = defaultDepend
73
79
  const dependencyFields = await compileDependencies(dependsOn, externalDependsOn, clearDependencies, help);
74
80
  const changes = {
75
81
  ...(allowAgents === undefined ? {} : { allowAgents }),
82
+ ...platformFields,
76
83
  ...(title === undefined ? {} : { title }),
77
84
  ...(description === undefined ? {} : { description }),
78
85
  ...dependencyFields,
79
86
  ...(properties === undefined ? {} : { properties }),
80
87
  };
81
88
  if (name === "update" && Object.keys(changes).length === 0)
82
- throw new UsageError("Task update requires a title, description, automatic-execution permission, dependency, or PR reference change.", help);
89
+ throw new UsageError("Task update requires a title, description, automatic-execution permission, platform requirement, dependency, or PR reference change.", help);
83
90
  const rawProjectId = command.options.get("--project");
84
91
  let projectId;
85
92
  let taskId;
86
- if (rawProjectId !== undefined || name === "show" || name === "update" || action !== undefined) {
93
+ if (rawProjectId !== undefined || name === "show" || name === "update" || setsStatus) {
87
94
  const { canonicalId } = await import("../../api/parse.js");
88
95
  if (rawProjectId !== undefined) {
89
96
  projectId = canonicalId(rawProjectId) ?? undefined;
90
97
  if (projectId === undefined)
91
98
  throw new UsageError("project-id must be a hyphenated UUID.", help);
92
99
  }
93
- if (name === "show" || name === "update" || action !== undefined) {
100
+ if (name === "show" || name === "update" || setsStatus) {
94
101
  taskId = canonicalId(command.values[0]) ?? undefined;
95
102
  if (taskId === undefined)
96
103
  throw new UsageError("task-id must be a hyphenated UUID.", help);
@@ -120,13 +127,13 @@ export const runTaskCommand = async (args, context, dependencies = defaultDepend
120
127
  const { renderTask, renderTaskGraph, renderTaskJson, renderTaskList, renderTaskListJson, renderTaskSummaryList } = await import("./rendering.js");
121
128
  operation.check();
122
129
  if (command.command.name === "create") {
123
- const input = { title: title, ...(description === undefined ? {} : { description }), ...dependencyFields, ...(properties === undefined ? {} : { properties }) };
130
+ const input = { title: title, ...(description === undefined ? {} : { description }), ...platformFields, ...dependencyFields, ...(properties === undefined ? {} : { properties }) };
124
131
  const task = await api.createTask(project.id, input);
125
132
  operation.check();
126
133
  return `Task created.\n${renderTask(task)}`;
127
134
  }
128
135
  if (command.command.name === "list") {
129
- const filters = { ...(status === undefined ? {} : { status }), ...(command.options.has("--ready") ? { ready: true } : {}), ...(allowAgents === undefined ? {} : { allowAgents }) };
136
+ const filters = { ...(status === undefined ? {} : { status }), ...(command.options.has("--ready") ? { ready: true } : {}), ...(allowAgents === undefined ? {} : { allowAgents }), ...(compatiblePlatform === undefined ? {} : { compatiblePlatform }) };
130
137
  const tasks = (await api.listTasks(project.id, filters))
131
138
  .filter((task) => all || status !== undefined || task.status !== "done")
132
139
  .toSorted((left, right) => taskPriority(left) - taskPriority(right));
@@ -134,7 +141,7 @@ export const runTaskCommand = async (args, context, dependencies = defaultDepend
134
141
  return command.options.has("--json") ? renderTaskListJson(tasks) : renderTaskSummaryList(tasks);
135
142
  }
136
143
  if (command.command.name === "ready") {
137
- const tasks = await api.listReadyTasks(project.id, readyLimit, ...(allowAgents === undefined ? [] : [allowAgents]));
144
+ const tasks = await api.listReadyTasks(project.id, readyLimit, { ...(allowAgents === undefined ? {} : { allowAgents }), ...(compatiblePlatform === undefined ? {} : { compatiblePlatform }) });
138
145
  operation.check();
139
146
  return command.options.has("--json") ? renderTaskJson(tasks) : tasks.length === 0 ? "No ready tasks.\n" : renderTaskList(tasks);
140
147
  }
@@ -150,12 +157,10 @@ export const runTaskCommand = async (args, context, dependencies = defaultDepend
150
157
  }
151
158
  const version = expectedVersion === undefined ? (await api.getTask(project.id, taskId)).version : expectedVersion;
152
159
  operation.check();
153
- if (action !== undefined) {
154
- const mutate = { approve: api.approveTask, unapprove: api.unapproveTask, claim: api.claimTask, complete: api.completeTask }[action];
155
- const task = await mutate(project.id, taskId, { version });
160
+ if (setsStatus) {
161
+ const task = await api.setTaskStatus(project.id, taskId, { version, status: command.values[1] });
156
162
  operation.check();
157
- const result = { approve: "approved", unapprove: "unapproved", claim: "claimed", complete: "completed" }[action];
158
- return `Task ${result}.\n${renderTask(task)}`;
163
+ return `Task status set.\n${renderTask(task)}`;
159
164
  }
160
165
  const task = await api.updateTask(project.id, taskId, { ...changes, version });
161
166
  operation.check();
@@ -1 +1 @@
1
- {"version":3,"file":"command.js","sourceRoot":"","sources":["../../../src/commands/task/command.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"command.js","sourceRoot":"","sources":["../../../src/commands/task/command.ts"],"names":[],"mappings":"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"}
@@ -7,8 +7,11 @@ const descriptionOption = { names: ["--description"], description: "Task descrip
7
7
  const dependencyOption = { names: ["--depends-on"], description: "Ordinary prerequisite UUID; repeat for the complete ordinary set", value: { name: "task-id", kind: "text" }, repeatable: true };
8
8
  const externalDependencyOption = { names: ["--external-depends-on"], description: "External prerequisite UUID; repeat for the complete external set", value: { name: "task-id", kind: "text" }, repeatable: true };
9
9
  const dependencyDetails = "Supplying either dependency option replaces every dependency and its classification. --depends-on supplies ordinary prerequisites; --external-depends-on supplies external prerequisites. External-only input keeps only those external prerequisites; ordinary-only input makes every supplied prerequisite ordinary. IDs must be valid UUIDs and occur once across both options. Both kinds block execution until completed.";
10
- const statusOption = { names: ["--status"], description: "Task status", value: { name: "status", kind: "text", choices: ["proposed", "todo", "in_progress", "done"] } };
10
+ const statusOption = { names: ["--status"], description: "Task status", value: { name: "status", kind: "text", choices: ["todo", "in_progress", "done"] } };
11
11
  const allowAgentsOption = { names: ["--allow-agents"], description: "Automatic-execution permission", value: { name: "true|false", kind: "text", choices: ["true", "false"] } };
12
+ const platformChoices = ["windows", "linux", "macos"];
13
+ const requiredPlatformOption = { names: ["--required-platform"], description: "Required execution platform", value: { name: "platform", kind: "text", choices: platformChoices } };
14
+ const compatiblePlatformOption = { names: ["--compatible-platform"], description: "Include unrestricted tasks and tasks requiring this execution platform", value: { name: "platform", kind: "text", choices: platformChoices } };
12
15
  const versionOption = { names: ["--if-version"], description: "Use this expected task version without reading a newer version", value: { name: "version", kind: "text" } };
13
16
  const pullRequestOptions = [
14
17
  { names: ["--pull-request-url"], description: "PR URL text; repeat for the complete list", value: { name: "text", kind: "text", allowEmpty: true }, repeatable: true },
@@ -21,21 +24,21 @@ export const taskDefinition = {
21
24
  commands: [
22
25
  {
23
26
  name: "create",
24
- description: "Create a proposed task with optional dependencies and PR references",
25
- options: [{ ...titleOption, required: true }, descriptionOption, dependencyOption, externalDependencyOption, ...pullRequestOptions, projectOption, helpOption],
26
- details: `New tasks start in proposed with automatic execution disabled and require approval before they can be claimed. Omitting both dependency options creates a task with no prerequisites.\n${dependencyDetails}\nPR URL and title counts must match; the nth URL pairs with the nth title. Empty values are accepted, and all text is stored as supplied.`,
27
+ description: "Create a todo task with optional dependencies and PR references",
28
+ options: [{ ...titleOption, required: true }, descriptionOption, requiredPlatformOption, dependencyOption, externalDependencyOption, ...pullRequestOptions, projectOption, helpOption],
29
+ details: `New tasks start in todo with automatic execution disabled. Creating a task does not start execution. Without --required-platform, execution has no platform restriction. Omitting both dependency options creates a task with no prerequisites.\n${dependencyDetails}\nPR URL and title counts must match; the nth URL pairs with the nth title. Empty values are accepted, and all text is stored as supplied.`,
27
30
  },
28
31
  {
29
32
  name: "list",
30
33
  description: "List unfinished tasks, with in-progress and ready tasks first",
31
- options: [{ names: ["--all"], description: "Include completed tasks; conflicts with --status" }, statusOption, { names: ["--ready"], description: "Include only tasks ready to start" }, allowAgentsOption, projectOption, listJsonOption, helpOption],
32
- details: "By default, exclude done tasks. Use --all for every status or --status for a specific status.\nCombine --ready and --allow-agents with the selected statuses using AND. Read every page before printing.\nOrder in_progress first, then ready todo, blocked todo, proposed, and done tasks; preserve server order within each group.\nText lists omit description, version, and timestamps. --json omits description and preserves every other task field with the same filtering and ordering.",
34
+ options: [{ names: ["--all"], description: "Include completed tasks; conflicts with --status" }, statusOption, { names: ["--ready"], description: "Include only tasks ready to start" }, allowAgentsOption, compatiblePlatformOption, projectOption, listJsonOption, helpOption],
35
+ details: "By default, exclude done tasks. Use --all for every status or --status for a specific status.\nCombine --ready, --allow-agents and --compatible-platform with the selected statuses using AND. Platform compatibility includes unrestricted tasks and exact matches, without changing readiness. All filters apply before pagination; read every page before printing.\nOrder in_progress first, then ready todo, blocked todo, and done tasks; preserve server order within each group.\nText lists omit description, version, and timestamps. --json omits description and preserves every other task field with the same filtering and ordering.",
33
36
  },
34
37
  {
35
38
  name: "ready",
36
39
  description: "Show the first ready tasks in the project",
37
- options: [{ names: ["--limit"], description: "Maximum number of tasks to return, from 1 to 100 (default: 10)", value: { name: "count", kind: "text" } }, allowAgentsOption, projectOption, jsonOption, helpOption],
38
- details: "Read one bounded page ordered by creation time, then task UUID, ascending. A task is ready when it is todo and every dependency is done. --allow-agents filters before the page limit and does not change readiness.",
40
+ options: [{ names: ["--limit"], description: "Maximum number of tasks to return, from 1 to 100 (default: 10)", value: { name: "count", kind: "text" } }, allowAgentsOption, compatiblePlatformOption, projectOption, jsonOption, helpOption],
41
+ details: "Read one bounded page ordered by creation time, then task UUID, ascending. A task is ready when it is todo and every dependency is done. --allow-agents and --compatible-platform combine with ready before the page limit and do not change readiness. Platform compatibility includes unrestricted tasks and exact matches.",
39
42
  },
40
43
  {
41
44
  name: "show",
@@ -47,26 +50,22 @@ export const taskDefinition = {
47
50
  name: "update",
48
51
  description: "Atomically update task fields, dependencies, and PR references",
49
52
  arguments: [taskArgument],
50
- options: [titleOption, descriptionOption, allowAgentsOption, dependencyOption, externalDependencyOption,
53
+ options: [titleOption, descriptionOption, allowAgentsOption, requiredPlatformOption,
54
+ { names: ["--clear-required-platform"], description: "Remove the execution-platform requirement" }, dependencyOption, externalDependencyOption,
51
55
  { names: ["--clear-dependencies"], description: "Clear the complete dependency set" },
52
56
  ...pullRequestOptions,
53
57
  { names: ["--clear-pull-requests"], description: "Clear the complete PR reference list" },
54
58
  versionOption,
55
59
  projectOption, helpOption],
56
- details: `Provide at least one changed field. --allow-agents changes the automatic-execution permission independently of approval; actual changes are locked during in_progress. Use daynight task approve, unapprove, claim, or complete to change status.\n${dependencyDetails}\nOmitting both dependency options preserves all dependencies and classifications. --clear-dependencies clears both sets and conflicts with either dependency option.\nPR URL and title counts must match; the nth URL pairs with the nth title. Pairs replace the complete list; empty values are accepted. --clear-pull-requests conflicts with either PR option. Omitted PR options preserve the current list.\nWithout --if-version, read the current version before submitting the update. Conflicts are not retried.`,
60
+ details: `Provide at least one changed field. --allow-agents changes the automatic-execution permission independently of status. --required-platform sets the execution-platform requirement; --clear-required-platform removes it and conflicts with --required-platform. Omitting both platform options preserves the requirement. Actual permission or platform changes are locked during in_progress; exact-version same-value updates keep version and timestamps. Use daynight task set-status to change status.\n${dependencyDetails}\nOmitting both dependency options preserves all dependencies and classifications. --clear-dependencies clears both sets and conflicts with either dependency option.\nPR URL and title counts must match; the nth URL pairs with the nth title. Pairs replace the complete list; empty values are accepted. --clear-pull-requests conflicts with either PR option. Omitted PR options preserve the current list.\nWithout --if-version, read the current version before submitting the update. Conflicts are not retried.`,
57
61
  },
58
- ...[
59
- { name: "approve", description: "Approve a proposed task, moving it to todo", rule: "Unfinished prerequisites are allowed." },
60
- { name: "unapprove", description: "Withdraw approval from a todo task, moving it to proposed", rule: "Only todo tasks can return to proposed; unfinished prerequisites are allowed." },
61
- { name: "claim", description: "Claim an approved todo task, moving it to in_progress", rule: "Every direct prerequisite must be done." },
62
- { name: "complete", description: "Complete an in_progress task, moving it to done", rule: "Every direct prerequisite must be done." },
63
- ].map(({ name, description, rule }) => ({
64
- name,
65
- description,
66
- arguments: [taskArgument],
62
+ {
63
+ name: "set-status",
64
+ description: "Set a task to todo, in_progress, or done",
65
+ arguments: [taskArgument, { name: "status", description: "Target task status", choices: ["todo", "in_progress", "done"] }],
67
66
  options: [versionOption, projectOption, helpOption],
68
- details: `${rule}\nWithout --if-version, read the current version immediately before submitting the action.\nWith --if-version, submit exactly that version without reading the task. Conflicts and mutations are not retried.`,
69
- })),
67
+ details: "Every direct prerequisite must be done when entering in_progress or done. Reopening done work is refused while a direct successor is in_progress or done.\nA current-version same-status request preserves all stored fields; a stale version still conflicts. Entering in_progress starts a new execution interval; returning to todo clears it; direct todo to done records an unknown duration.\nWithout --if-version, read the current version immediately before submitting. With --if-version, submit exactly that version without reading the task. Conflicts and mutations are not retried.",
68
+ },
70
69
  {
71
70
  name: "graph",
72
71
  description: "Show the complete task graph and summary",