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.
- package/.codex-plugin/plugin.json +1 -1
- package/README.md +4 -1
- package/docs/spec.md +14 -1
- package/docs/workflows.md +2 -1
- package/index.js +1 -0
- package/package.json +1 -1
- package/skills/taskchef-delegate/SKILL.md +3 -1
- package/skills/taskchef-executor/SKILL.md +41 -83
- package/skills/taskchef-executor/references/compatibility.md +22 -0
- package/skills/taskchef-executor/references/ending-actions.md +26 -0
- package/src/dashboard/dist/app.js +39 -39
- package/src/dashboard/dist/app.js.map +1 -1
- package/src/dashboard/dist/styles.css +1 -1
- package/src/dashboard/react/components/TaskCard.tsx +14 -1
- package/src/dashboard/react/components/TaskDetail.test.tsx +1 -1
- package/src/dashboard/react/components/TaskUsageSummary.test.tsx +23 -2
- package/src/dashboard/react/components/UsagePanel.tsx +23 -9
- package/src/dashboard/react/presentation.test.tsx +37 -12
- package/src/dashboard/react/presentation.ts +44 -76
- package/src/dashboard/react/styles.css +6 -4
- package/src/dashboard/react/types.ts +7 -0
- package/src/dashboard.js +2 -0
- package/src/delegation.js +7 -3
- package/src/mcp.js +4 -2
- package/src/reported-work.js +61 -0
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,
|
|
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
|
|
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,
|
|
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
package/package.json
CHANGED
|
@@ -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
|
|
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
|
|
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,
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
are lifecycle scaffolding, not part
|
|
19
|
-
|
|
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
|
|
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.
|
|
76
|
-
|
|
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
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
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.
|