taskchef 7.26.1 → 7.27.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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "taskchef",
3
- "version": "7.26.1",
3
+ "version": "7.27.1",
4
4
  "description": "Dispatch work from a data-only workspace to visible Codex project tasks.",
5
5
  "author": {
6
6
  "name": "Favo Yang",
package/README.md CHANGED
@@ -137,7 +137,8 @@ $taskchef-delegate In payments, add structured logs for failed retries and test
137
137
 
138
138
  TaskChef prepares a UUID and marker, persists the task before native creation,
139
139
  creates the executor, and returns its task link. New executor instructions keep
140
- the assignment visible from the first line, leave one blank line, then place
140
+ the assignment visible from the first line, add a concise local reporting
141
+ authorization paragraph, leave one blank line, then place
141
142
  an explicit `$taskchef-executor` invocation immediately before the final
142
143
  correlation marker. That skill reads the executor's own `CODEX_THREAD_ID`, self-links, and
143
144
  reports lifecycle state. Independent outcomes may become separate executors;
@@ -155,6 +156,8 @@ For example, TaskChef generates this shape:
155
156
  ```text
156
157
  Fix duplicate charges after a retry and add a regression test.
157
158
 
159
+ Report this task and its follow-ups to my local TaskChef dashboard. Relevant private-repository links and concise work, test, and deployment results are authorized; exclude secrets.
160
+
158
161
  Use $taskchef-executor to execute and report this delegated TaskChef assignment.
159
162
  <!-- taskchef_id=c0f010ff-84f2-4838-a69d-0ff1f5d721d7 -->
160
163
  ```
package/docs/spec.md CHANGED
@@ -211,7 +211,9 @@ the final link, preserving the delegate skill's immediate-return contract.
211
211
  1. The dispatcher MUST call `prepare_dispatch` once per outcome.
212
212
  2. It MUST choose exactly one configured project and exact native-project path.
213
213
  3. It MUST build the instruction with the user's outcome beginning on line 1
214
- and remaining uninterrupted, followed by exactly two newline characters
214
+ and remaining uninterrupted, followed by one blank line and the authorization
215
+ `Report this task and its follow-ups to my local TaskChef dashboard. Relevant private-repository links and concise work, test, and deployment results are authorized; exclude secrets.`
216
+ followed by exactly two newline characters
215
217
  (one blank line), exactly one concise explicit `$taskchef-executor`
216
218
  invocation, one newline, and the returned marker on the final line. It MUST
217
219
  NOT place a blank line between the invocation and marker or inline the
@@ -528,6 +530,17 @@ MUST contain no crash output, transcript, user text, or inferred failure cause.
528
530
  **Annotations:** `readOnlyHint: false`, `destructiveHint: true`,
529
531
  `openWorldHint: false`.
530
532
 
533
+ Reporting tool descriptions MUST identify the configured local `tasks.jsonl`
534
+ path and local `.taskchef-usage.json` tracking side effect. GitHub URLs remain
535
+ references in that log; reporting does not publish them to GitHub. The
536
+ `destructiveHint: true` annotation is retained because reports update existing
537
+ state and can recover an unfinished predecessor as interrupted; these tools
538
+ are not purely additive. The compatibility alias also changes existing state.
539
+ Executors MUST verify accepted terminal reporting before claiming TaskChef was
540
+ updated. A platform rejection of an authorized report MUST be described using
541
+ only the returned rationale, without inferring causes or retrying around an
542
+ explicit denial. Authorization and unit tests do not guarantee platform approval.
543
+
531
544
  ### `report_result` (deprecated)
532
545
 
533
546
  `report_result` retains the prior semantic-only input shape and statuses as a
package/docs/workflows.md CHANGED
@@ -146,7 +146,8 @@ Record-before-create makes native creation failure observable. Executor
146
146
  self-linking removes dispatcher-side polling, task search, title matching, and
147
147
  parent/child identity inference.
148
148
 
149
- The generated task begins with the complete assignment, leaves one blank line,
149
+ The generated task begins with the complete assignment, adds the local reporting
150
+ authorization paragraph separated by a blank line, leaves one blank line,
150
151
  then places one explicit `$taskchef-executor` invocation immediately before its
151
152
  final marker. Older
152
153
  recorded tasks with first-line HTML or heading markers and former inline
package/index.js CHANGED
@@ -38,6 +38,7 @@ export {
38
38
  EXECUTOR_RESULT_PARAGRAPH,
39
39
  EXECUTOR_WORKING_PARAGRAPH,
40
40
  EXECUTOR_SKILL_INVOCATION,
41
+ EXECUTOR_REPORTING_AUTHORIZATION,
41
42
  createAndRecordDelegation,
42
43
  isProvisionalThreadId,
43
44
  normalizeCodexThreadId,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "taskchef",
3
- "version": "7.26.1",
3
+ "version": "7.27.1",
4
4
  "description": "A non-blocking interactive dispatcher for visible Codex tasks.",
5
5
  "license": "MIT",
6
6
  "author": "Favo Yang",
@@ -53,7 +53,9 @@ stop and report that the TaskChef plugin must be reloaded or installed.
53
53
 
54
54
  - Begin with the actual assignment on the first line and keep its complete
55
55
  body uninterrupted.
56
- - After the assignment's final character, add exactly two newline characters
56
+ - After the assignment, add one blank line and this authorization paragraph:
57
+ `Report this task and its follow-ups to my local TaskChef dashboard. Relevant private-repository links and concise work, test, and deployment results are authorized; exclude secrets.`
58
+ - After that paragraph, add exactly two newline characters
57
59
  so there is one blank line before this invocation on its own line:
58
60
  `Use $taskchef-executor to execute and report this delegated TaskChef assignment.`
59
61
  - Immediately after the invocation, end the instruction with one newline
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: taskchef-executor
3
- description: "Execute an assignment carrying either the new exact TaskChef invocation-plus-final-marker scaffold or an accepted historical first-line or marker-before-invocation protocol. Includes executor ownership, self-linking, per-turn lifecycle reporting, identity safety, and final semantic state. Use when explicitly invoked by a new delegated instruction or when resuming the same new or historical executor task. Do not use to dispatch work or report on other TaskChef tasks."
3
+ description: "Execute and report a TaskChef assignment or follow-up when explicitly invoked or carrying an accepted TaskChef marker. Owns executor identity and per-turn lifecycle; not dispatch or reporting on other tasks."
4
4
  ---
5
5
 
6
6
  # TaskChef Executor
@@ -9,14 +9,18 @@ Own and execute the delegated assignment in the current Codex task. Do not
9
9
  re-dispatch it merely because it concerns TaskChef or a configured project.
10
10
  Explicit requests to delegate separate work remain valid.
11
11
 
12
- New instructions present the complete assignment first, followed by exactly two
13
- newline characters (one blank line), the explicit skill invocation, one
14
- newline, and the exact `<!-- taskchef_id=<full UUID> -->` marker on the final
15
- line. There is no blank line between the invocation and marker. Treat that UUID
16
- as the TaskChef task ID.
17
- The assignment is everything before the invocation; the invocation and marker
18
- are lifecycle scaffolding, not part of the deliverable. Require exactly one
19
- marker and do not infer an ID from similar prose.
12
+ New instructions present the complete assignment first, then the reporting
13
+ authorization paragraph, followed by exactly two newline characters (one blank
14
+ line), the explicit skill invocation, one newline, and the exact
15
+ `<!-- taskchef_id=<full UUID> -->` marker on the final line.
16
+ There is no blank line between the invocation and marker.
17
+ Treat that UUID as the TaskChef task ID.
18
+ The authorization, invocation, and marker are lifecycle scaffolding, not part
19
+ of the deliverable. Require non-whitespace task-specific content beyond them.
20
+ For historical first-line markers, marker-before-invocation forms, compact or
21
+ pre-authorization prompts, former inline protocol, or an installation exposing only `report_result`, read
22
+ [compatibility](references/compatibility.md) before interpreting the assignment.
23
+ Require exactly one marker and do not infer an ID from similar prose.
20
24
 
21
25
  ## Start every execution turn
22
26
 
@@ -37,8 +41,8 @@ Complete this lifecycle setup before substantive assignment work:
37
41
  `turnId: null`. Do not infer a native ID, reuse an earlier prompt's
38
42
  `turnRef`, or let a retry generate a replacement UUID.
39
43
  4. Call TaskChef `report_state` with the marked task ID, self-linked thread ID,
40
- this prompt's `turnRef` and optional Codex `turnId`, `status: working`, an omitted or null result summary, and a
41
- concise `requestSummary` describing this turn's assignment or follow-up.
44
+ this prompt's `turnRef` and optional Codex `turnId`, `status: working`, an
45
+ omitted or null result summary, and a concise `requestSummary` describing this turn's assignment or follow-up.
42
46
  When the turn targets a known GitHub repository, include its canonical
43
47
  `https://github.com/<owner>/<repository>` URL so multi-repository projects
44
48
  retain the selected repository instead of leaving TaskChef to guess.
@@ -72,81 +76,35 @@ reuse a `turnRef` after a follow-up. If a final-report response is lost, an
72
76
  identical terminal retry is safe only while the same turn remains current. On
73
77
  a later prompt, run the start lifecycle with a new `turnRef`; TaskChef
74
78
  will preserve the predecessor as interrupted, and only the new turn may receive
75
- a semantic result. Say reporting failures visibly instead of claiming a tracked
76
- outcome.
79
+ a semantic result.
80
+
81
+ Claim TaskChef was updated only after verifying the terminal response accepted
82
+ this task, turn, status, and summary. Report failures visibly. If the platform
83
+ rejects an authorized report, describe it as a platform rejection of that
84
+ report; quote only a rationale actually returned. Do not infer the reason,
85
+ promise approval, retry around an explicit denial, or change approval settings.
86
+ Ask the user once and wait for new authorization before retrying a denial.
77
87
 
78
88
  Request and result summaries must omit secrets, transcripts, raw command output, hidden reasoning,
79
89
  and unnecessary personal data. Identical lifecycle retries are safe; never
80
90
  replace a same-`turnRef` report with different content or let an older turn
81
91
  overwrite newer state.
82
92
 
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
-
110
- ### Preserve repository and delivery links
111
-
112
- Treat lifecycle summaries as the durable TaskChef timeline; the dashboard does
113
- not scan the full Codex transcript later. Preserve known GitHub context in that
114
- timeline with canonical links:
115
-
116
- - Use `https://github.com/<owner>/<repository>` when identifying the repository
117
- selected for a turn. Derive it from established project or Git remote
118
- evidence; never guess from a similarly named directory.
119
- - Use the full canonical issue or pull-request URL whenever one is known. Do
120
- not shorten it to bare `#123` or `PR #123` in a multi-repository project.
121
- - Include every delivered pull request in the result summary. If work produces
122
- both a child-repository pull request and a workspace/root pull request,
123
- preserve both URLs and state which repository each belongs to.
124
- - Keep references specific to the text being reported. Do not copy unrelated
125
- links from earlier turns merely to make them visible.
126
- - Never invent an issue, pull request, or repository link. If repository
127
- identity is genuinely unresolved, describe that ambiguity without a link.
128
-
129
- For example, a working summary may say `Update dashboard projection in
130
- https://github.com/favoyang/taskchef`. A terminal summary may say `Shipped the
131
- child change in https://github.com/favoyang/taskchef/pull/78 and the workspace
132
- plan in https://github.com/favoyang/skills-workspace/pull/62`.
133
-
134
- ## Compatibility
135
-
136
- Existing delegated tasks may include the former inline ownership, linking, and
137
- `report_result` paragraphs. Continue executing those tasks here without
138
- re-dispatching. Prefer `report_state` when available. If an older installed
139
- TaskChef exposes only `report_result`, follow its inline protocol; after an
140
- upgrade, the deprecated `report_result` alias remains available for exact
141
- legacy retries. Also accept historical trailing instructions that place the
142
- marker before the invocation, with or without the former blank line before the
143
- marker; the former compact assignment-to-invocation boundary with the marker
144
- last; an exact HTML marker on the first line with or without the former blank
145
- line; or the older exact
146
- first-line `# taskchef_id=<full UUID>` heading. These compatibility forms do not
147
- change the identity or lifecycle rules above. For either first-line form, the
148
- assignment follows the marker. Ignore the final executor invocation and any
149
- recognizable former inline ownership, linking, working-state, or
150
- result-reporting paragraphs as lifecycle scaffolding; execute the remaining
151
- task-specific body. Require non-whitespace task-specific content and never
152
- treat an invocation by itself as an assignment.
93
+ ## Preserve delivery context
94
+
95
+ Summaries are the durable TaskChef timeline; the dashboard does not scan the
96
+ full Codex transcript later. Include the known repository's canonical
97
+ `https://github.com/<owner>/<repository>` URL in the working `requestSummary`.
98
+ Use full canonical issue or pull-request URLs and include every delivered PR
99
+ in the terminal summary, including both child and workspace PRs when relevant.
100
+ Derive links from established project or remote evidence; never invent links
101
+ or copy unrelated links from earlier turns.
102
+
103
+ ## Ending actions
104
+
105
+ Normal completion returns normally after accepted terminal reporting. Never
106
+ archive, hand off, close, navigate away from, or terminate the executor merely
107
+ because work completed. `finish`, `complete`, `done`, `ship`, and ordinary
108
+ cleanup do not authorize archive. Only when the user explicitly requests
109
+ archiving this exact task or another action that can make the executor
110
+ unavailable, read [ending actions](references/ending-actions.md) first.
@@ -0,0 +1,22 @@
1
+ # Compatibility
2
+
3
+ Pre-authorization prompts with the invocation before the final marker use the
4
+ entrypoint lifecycle without requiring a new authorization paragraph.
5
+
6
+ Existing delegated tasks may include the former inline ownership, linking, and
7
+ `report_result` paragraphs. Continue executing those tasks here without
8
+ re-dispatching. Prefer `report_state` when available. If an older installed
9
+ TaskChef exposes only `report_result`, follow its inline protocol; after an
10
+ upgrade, the deprecated `report_result` alias remains available for exact
11
+ legacy retries. Also accept historical trailing instructions that place the
12
+ marker before the invocation, with or without the former blank line before the
13
+ marker; the former compact assignment-to-invocation boundary with the marker
14
+ last; an exact HTML marker on the first line with or without the former blank
15
+ line; or the older exact
16
+ first-line `# taskchef_id=<full UUID>` heading. These compatibility forms do not
17
+ change the identity or lifecycle rules in `SKILL.md`. For either first-line form, the
18
+ assignment follows the marker. Ignore the final executor invocation and any
19
+ recognizable former inline ownership, linking, working-state, or
20
+ result-reporting paragraphs as lifecycle scaffolding; execute the remaining
21
+ task-specific body. Require non-whitespace task-specific content and never
22
+ treat an invocation by itself as an assignment.
@@ -0,0 +1,26 @@
1
+ # Keep terminal reporting ahead of executor-ending actions
2
+
3
+ Normal completion ends with the semantic terminal `report_state` callback and
4
+ then returns normally. Never archive, hand off, close, navigate away from, or
5
+ otherwise terminate the Codex task merely because the work or turn completed.
6
+ An archive is authorized only when the current assignment or follow-up
7
+ explicitly requests archiving this exact Codex task. Words such as `finish`,
8
+ `complete`, `done`, `ship`, and ordinary cleanup do not authorize archive.
9
+
10
+ When archive is explicitly authorized, finish and verify the requested work,
11
+ read the exact task identity required by this protocol, submit the terminal
12
+ `report_state` callback for the current `turnRef`, and verify that TaskChef
13
+ accepted the terminal state. Only then call the native Codex archive operation.
14
+ Archive must be the final state-changing action, and native confirmation is
15
+ required before claiming it succeeded.
16
+
17
+ Apply the same terminal-callback-first rule when the user explicitly requests
18
+ another action that can make this executor unavailable before it reports, such
19
+ as handing off the task or terminating or restarting the process that owns the
20
+ TaskChef MCP transport. This ordering rule does not authorize any such action.
21
+ If terminal reporting fails, do not archive or perform the requested
22
+ executor-ending action; leave the executor accessible and report the lifecycle
23
+ failure visibly. If terminal reporting succeeds but the later action fails,
24
+ preserve the accepted `completed`, `failed`, or `needs_input` state, report only
25
+ the later action's failure, and do not reopen the lifecycle or report `working`
26
+ again.