taskchef 7.15.3 → 7.15.5

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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "taskchef",
3
- "version": "7.15.3",
3
+ "version": "7.15.5",
4
4
  "description": "Dispatch work from a data-only workspace to visible Codex project tasks.",
5
5
  "author": {
6
6
  "name": "Favo Yang",
@@ -29,7 +29,7 @@
29
29
  ],
30
30
  "websiteURL": "https://github.com/favoyang/taskchef",
31
31
  "defaultPrompt": [
32
- "$taskchef-bootstrap Set up TaskChef in this folder.",
32
+ "$taskchef-bootstrap Set up TaskChef and index my Codex projects.",
33
33
  "$taskchef-delegate Dispatch this request to the right project.",
34
34
  "$taskchef-executor Execute this delegated TaskChef assignment.",
35
35
  "$taskchef-copilot Explain TaskChef outcomes and recommend the next action."
package/README.md CHANGED
@@ -36,7 +36,7 @@ puts the `taskchef` CLI on `PATH`. TaskChef installs no hooks, schedules,
36
36
  daemons, login items, system services, or background identity search and needs
37
37
  no elevated permissions.
38
38
 
39
- ## Bootstrap and configure
39
+ ## Bootstrap and index projects
40
40
 
41
41
  Ask the bootstrap skill to create the per-user dispatcher:
42
42
 
@@ -48,25 +48,33 @@ The canonical workspace is `~/.agents/taskchef`. TaskChef owns only:
48
48
 
49
49
  ```text
50
50
  AGENTS.md managed dispatcher instructions plus user additions
51
- taskchef.json schema-2 configured projects and routing metadata
51
+ taskchef.json schema-2 Codex project index and delegation metadata
52
52
  tasks.jsonl one task snapshot per line (schema 9; schema 4-8 migration supported)
53
53
  ```
54
54
 
55
- List or change routing targets conversationally:
55
+ Index or inspect Codex projects conversationally:
56
56
 
57
57
  ```text
58
- $taskchef-bootstrap List my configured TaskChef projects.
59
- $taskchef-bootstrap Add /workspace/payments as payments. It owns authorization, capture, refunds, and retries.
58
+ $taskchef-bootstrap List my indexed Codex projects.
59
+ $taskchef-bootstrap Index /workspace/payments as payments. It owns authorization, capture, refunds, and retries.
60
+ $taskchef-bootstrap Reindex after the Codex projects I added today.
60
61
  ```
61
62
 
62
- The bootstrap skill has two onboarding paths. For a folder already saved as a
63
- local Codex project, it requires an exact canonical-path match before adding and
64
- verifying the TaskChef project. For a new folder, or an existing folder not yet
65
- saved by Codex, it creates the directory only when explicitly requested, opens
66
- the canonical path with the validated Codex Desktop CLI's `codex app <path>`
67
- mechanism, re-lists native projects, and requires the same exact match before
68
- adding it to TaskChef. An open request without a verified native project is
69
- reported as partial setup, not delegation-ready.
63
+ TaskChef indexes existing Codex projects for delegation. The index stores
64
+ canonical paths and routing metadata; it never indexes repository contents or
65
+ creates another kind of project. For a folder already saved as a local Codex
66
+ project, the bootstrap skill requires an exact canonical-path match before
67
+ writing and verifying its TaskChef index entry. For a new folder, or an existing
68
+ folder not yet saved by Codex, it creates the directory only when explicitly
69
+ requested, opens the canonical path with the validated Codex Desktop CLI's
70
+ `codex app <path>` mechanism, re-lists native projects, and requires the same
71
+ exact match before indexing it. An open request without a verified native
72
+ project is reported as partial setup, not delegation-ready.
73
+
74
+ Reindexing catches TaskChef up with newly saved Codex projects by comparing
75
+ exact canonical paths and indexing missing requested projects. It preserves
76
+ existing curated entries and does not silently remove projects or overwrite
77
+ metadata.
70
78
 
71
79
  Codex CLI resolution follows the same contract as
72
80
  `workspace init --register-codex`: an explicit `--codex-cli` path wins, then
@@ -84,12 +92,17 @@ taskchef project add /workspace/payments --name payments \
84
92
  taskchef project list
85
93
  ```
86
94
 
95
+ The CLI command writes TaskChef metadata only; it does not query Codex. Before
96
+ using it directly, verify that `/workspace/payments` exactly matches the
97
+ canonical path of an existing local Codex project. The bootstrap skill performs
98
+ that native-project check for you.
99
+
87
100
  A project may advertise several GitHub repositories with repeated
88
101
  `--github-repo`. Explicit values replace automatic origin detection and form
89
102
  the complete advertised list, so include the origin when it should remain
90
103
  routable. A managed `*-workspace` should advertise every relevant child or
91
104
  subrepository canonical GitHub URL, plus the workspace repository itself when
92
- applicable, so issue and pull-request links select the correct routing project.
105
+ applicable, so issue and pull-request links select the correct Codex project.
93
106
  TaskChef accepts Git roots and ordinary local folders on the same execution
94
107
  host. Unsupported configuration schemas are rejected and are never rewritten
95
108
  automatically.
package/docs/spec.md CHANGED
@@ -143,6 +143,25 @@ the final link, preserving the delegate skill's immediate-return contract.
143
143
  TaskChef MUST atomically close it as `interrupted` before appending the new
144
144
  working turn; the executor MUST NOT report semantic `failed` for recovery.
145
145
 
146
+ Normal executor completion MUST stop after the terminal callback and return
147
+ normally. It MUST NOT archive, hand off, close, navigate away from, or otherwise
148
+ terminate the Codex task merely because work completed. Archive is authorized
149
+ only by an explicit request in the current assignment or follow-up for that
150
+ exact Codex task; `finish`, `complete`, `done`, `ship`, and ordinary cleanup do
151
+ not imply authorization.
152
+
153
+ For an explicitly authorized archive, the executor MUST finish and verify the
154
+ work, read its exact task identity, submit the current turn's terminal
155
+ `report_state`, verify TaskChef accepted that state, and only then invoke the
156
+ native archive operation as the final state-changing action. It MUST require
157
+ native confirmation before claiming archive succeeded. The same callback-first
158
+ ordering applies to any separately authorized action that can make the executor
159
+ unavailable before reporting, including handoff or terminating or restarting
160
+ the process that owns the TaskChef MCP transport; this rule does not itself
161
+ authorize those actions. A terminal reporting failure MUST prevent the later
162
+ action and leave the executor accessible. Failure of a later action MUST NOT
163
+ change or reopen the already accepted semantic terminal state.
164
+
146
165
  Request and result summaries are the durable source for dashboard related-link
147
166
  projection; TaskChef does not scan full Codex transcripts. When known, an
148
167
  executor MUST preserve the selected repository as a canonical GitHub repository
package/docs/workflows.md CHANGED
@@ -12,7 +12,7 @@ research.
12
12
  | --- | --- |
13
13
  | `skills/taskchef-delegate/SKILL.md` | Split, route, record-before-create, create, return. |
14
14
  | `skills/taskchef-executor/SKILL.md` | Own, self-link, execute, and report every executor turn. |
15
- | `skills/taskchef-bootstrap/SKILL.md` | Initialize current workspace and configure projects. |
15
+ | `skills/taskchef-bootstrap/SKILL.md` | Initialize the workspace and maintain the Codex project index. |
16
16
  | `skills/taskchef-copilot/SKILL.md` | Explain normalized cached briefs and coordinate safe next actions. |
17
17
  | `src/mcp.js` | Dashboard ensure, four primary lifecycle tools, one deprecated alias, shutdown ownership, and MCP annotations. |
18
18
  | `src/delegation.js` | UUID marker, concise executor-skill invocation shape, and creation-failure handling. |
@@ -163,6 +163,16 @@ sequenceDiagram
163
163
  A native approval prompt is not a semantic result. `needs_input` is reserved
164
164
  for a user decision or fact required to proceed.
165
165
 
166
+ Ordinary completion returns after the terminal callback; it does not archive,
167
+ hand off, close, navigate away from, or otherwise terminate the native Codex
168
+ task. An archive requires an explicit request in the current assignment or
169
+ follow-up for that exact task. `finish`, `complete`, `done`, `ship`, and cleanup
170
+ alone do not authorize it. Any explicitly requested action that could make the
171
+ executor unavailable must follow, never precede, an accepted terminal callback.
172
+ If reporting fails, the later action is forbidden and the executor remains
173
+ accessible. If the later action fails, its error does not reopen or replace the
174
+ accepted semantic state.
175
+
166
176
  ## Follow-up turns
167
177
 
168
178
  Turn refs are freshness tokens for semantic callbacks. The workspace rejects a
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "taskchef",
3
- "version": "7.15.3",
3
+ "version": "7.15.5",
4
4
  "description": "A non-blocking interactive dispatcher for visible Codex tasks.",
5
5
  "license": "MIT",
6
6
  "author": "Favo Yang",
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: taskchef-bootstrap
3
- description: "Initialize, diagnose, or refresh TaskChef dispatcher workspaces, project configuration, task history, and managed AGENTS.md instructions. Use when creating a TaskChef workspace, adding, importing, listing, or removing configured projects, running TaskChef doctor, or repairing dispatcher setup. Do not dispatch user work or report on executor threads."
3
+ description: "Initialize, diagnose, or refresh TaskChef dispatcher workspaces, the Codex project index, task history, and managed AGENTS.md instructions. Use when creating a TaskChef workspace, indexing or reindexing Codex projects, importing, listing, or removing indexed projects, running TaskChef doctor, or repairing dispatcher setup. Do not dispatch user work or report on executor threads."
4
4
  ---
5
5
 
6
6
  # TaskChef Bootstrap
@@ -50,12 +50,17 @@ all deterministic workspace operations.
50
50
  End without dispatching unless the user
51
51
  separately requested work.
52
52
 
53
- ## Onboard a routing project
53
+ ## Index Codex projects
54
54
 
55
- Configure only projects local to the TaskChef workspace's execution host.
56
- Remote connection projects are outside the v1 contract. Never configure the
57
- TaskChef dispatcher workspace or a directory containing it as a routing target;
58
- the dispatcher is the inbox, while routing projects own delegated work.
55
+ TaskChef's project index is the local list of Codex projects available for
56
+ delegation. It stores canonical paths and routing metadata such as curated
57
+ names, descriptions, Git status, and GitHub repositories. It does not index
58
+ repository contents or create a second kind of project.
59
+
60
+ Index only Codex projects local to the TaskChef workspace's execution host.
61
+ Remote connection projects are outside the v1 contract. Never index the
62
+ TaskChef dispatcher workspace or a directory containing it; the dispatcher is
63
+ the inbox, while indexed Codex projects own delegated work.
59
64
 
60
65
  ### Existing Codex project
61
66
 
@@ -63,16 +68,18 @@ the dispatcher is the inbox, while routing projects own delegated work.
63
68
  with `realpath` and require an exact canonical-path match in that list. A
64
69
  similar name, a parent or child directory, and a remote connection project
65
70
  are not matches.
66
- 2. Add the exact path with `project add <canonical-path> --name <curated-name>
67
- --description <curated-description> --json`. The CLI detects Git status, the
68
- exact Git root, and a canonical GitHub `origin` when no repository option is
71
+ 2. Index the exact path with the existing `project add <canonical-path> --name
72
+ <curated-name> --description <curated-description> --json` CLI workflow.
73
+ Despite the command's historical `add` name, this writes one TaskChef index
74
+ entry for an existing Codex project. The CLI detects Git status, the exact
75
+ Git root, and a canonical GitHub `origin` when no repository option is
69
76
  supplied. Repeated `--github-repo <canonical-url>` arguments replace that
70
77
  detection and form the complete advertised repository list, so repeat the
71
78
  origin explicitly when it should remain routable. Use `--no-github` when the
72
79
  user intentionally wants an empty list.
73
- 3. Run `project list --json` and require one saved TaskChef project with the
74
- exact canonical path and intended routing metadata. Only then report that it
75
- is ready for delegation.
80
+ 3. Run `project list --json` and require one indexed entry with the exact
81
+ canonical path and intended routing metadata. Only then report that the
82
+ Codex project is ready for delegation through TaskChef.
76
83
 
77
84
  ### New or not-yet-saved Codex folder
78
85
 
@@ -93,30 +100,50 @@ the dispatcher is the inbox, while routing projects own delegated work.
93
100
  3. Re-list native local Codex projects and require an exact canonical-path
94
101
  match. Opening is a request, not proof that Codex saved the project. If the
95
102
  exact match is absent, report that the folder was opened or registration was
96
- requested but Codex registration remains unverified; do not add it to
103
+ requested but Codex registration remains unverified; do not index it in
97
104
  TaskChef or call it delegation-ready.
98
- 4. After Codex verification, add the project as in the existing-project path.
99
- Run `project list --json` and verify the exact saved TaskChef project. Report
105
+ 4. After Codex verification, index the project as in the existing-project path.
106
+ Run `project list --json` and verify the exact TaskChef index entry. Report
100
107
  delegation readiness only after both the native Codex match and TaskChef
101
- registration are verified.
108
+ indexing are verified.
102
109
 
103
- For a managed `*-workspace` routing project, advertise every relevant child or
110
+ For a managed `*-workspace` Codex project, advertise every relevant child or
104
111
  subrepository with repeated `--github-repo <canonical-github-url>` arguments,
105
112
  including the workspace repository itself when it can own issue or pull-request
106
113
  links. These explicit values are the complete list; automatic origin detection
107
114
  does not supplement them. This lets TaskChef route each canonical GitHub URL to
108
115
  the correct workspace rather than guessing from the folder name.
109
116
 
110
- ## Manage configured projects
117
+ ### Reindex after Codex changes
118
+
119
+ When the user asks TaskChef to reindex or catch up after saving more projects in
120
+ Codex, list native local Codex projects once and run `project list --json` once
121
+ before mutation. Compare exact canonical paths, then index each requested
122
+ eligible Codex project that is missing from TaskChef by following the
123
+ appropriate path above, sharing the batch verification instead of relisting
124
+ after each write. After all additions, run `project list --json` once more and
125
+ verify every intended canonical path and its routing metadata before reporting
126
+ the index as current.
127
+
128
+ Do not call `project add` for a path already in the TaskChef index; it rejects
129
+ duplicate paths and must not be presented as a metadata refresh. Preserve
130
+ existing curated entries, and do not remove entries merely because they are
131
+ absent from the current Codex list. Refreshing or removing an existing entry
132
+ requires an explicit user request and the project-management workflows below.
133
+
134
+ ## Manage the project index
111
135
 
112
136
  1. Bulk import with `project import <file|-> --json`. Input is a JSON array of
113
137
  objects containing `path` plus optional `name`, `description`, and
114
- `githubRepos`, which is always a JSON array of GitHub repository URLs. Import
115
- merges by canonical path, preserves an existing name or description when
116
- omitted, and unions existing and imported repository lists without
117
- duplicates. Use `--replace` only when the user explicitly requests
118
- replacement.
119
- 2. Inspect configured projects with `project list --json`. Remove by name with
138
+ `githubRepos`, which is always a JSON array of GitHub repository URLs. Before
139
+ importing, list native local Codex projects once, canonicalize every input
140
+ path, and require an exact local-project match for every entry. Reject or
141
+ report every unmatched path instead of indexing it. Import merges by
142
+ canonical path, preserves an existing name or description when omitted, and
143
+ unions existing and imported repository lists without duplicates. Use
144
+ `--replace` only when the user explicitly requests replacement. Run
145
+ `project list --json` afterward and verify every imported entry.
146
+ 2. Inspect indexed projects with `project list --json`. Remove by name with
120
147
  `project remove`. Existing task entries keep their project snapshots.
121
148
 
122
149
  Example managed-workspace import entry:
@@ -80,6 +80,33 @@ and unnecessary personal data. Identical lifecycle retries are safe; never
80
80
  replace a same-`turnRef` report with different content or let an older turn
81
81
  overwrite newer state.
82
82
 
83
+ ### Keep terminal reporting ahead of executor-ending actions
84
+
85
+ Normal completion ends with the semantic terminal `report_state` callback and
86
+ then returns normally. Never archive, hand off, close, navigate away from, or
87
+ otherwise terminate the Codex task merely because the work or turn completed.
88
+ An archive is authorized only when the current assignment or follow-up
89
+ explicitly requests archiving this exact Codex task. Words such as `finish`,
90
+ `complete`, `done`, `ship`, and ordinary cleanup do not authorize archive.
91
+
92
+ When archive is explicitly authorized, finish and verify the requested work,
93
+ read the exact task identity required by this protocol, submit the terminal
94
+ `report_state` callback for the current `turnRef`, and verify that TaskChef
95
+ accepted the terminal state. Only then call the native Codex archive operation.
96
+ Archive must be the final state-changing action, and native confirmation is
97
+ required before claiming it succeeded.
98
+
99
+ Apply the same terminal-callback-first rule when the user explicitly requests
100
+ another action that can make this executor unavailable before it reports, such
101
+ as handing off the task or terminating or restarting the process that owns the
102
+ TaskChef MCP transport. This ordering rule does not authorize any such action.
103
+ If terminal reporting fails, do not archive or perform the requested
104
+ executor-ending action; leave the executor accessible and report the lifecycle
105
+ failure visibly. If terminal reporting succeeds but the later action fails,
106
+ preserve the accepted `completed`, `failed`, or `needs_input` state, report only
107
+ the later action's failure, and do not reopen the lifecycle or report `working`
108
+ again.
109
+
83
110
  ### Preserve repository and delivery links
84
111
 
85
112
  Treat lifecycle summaries as the durable TaskChef timeline; the dashboard does