taskchef 7.27.0 → 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/delegation.js +7 -3
- package/src/mcp.js +4 -2
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.
|
package/src/delegation.js
CHANGED
|
@@ -8,6 +8,7 @@ export const EXECUTOR_LINK_PARAGRAPH = "Before any other work, read this executo
|
|
|
8
8
|
export const EXECUTOR_WORKING_PARAGRAPH = "After a successful initial link, and at the start of every follow-up turn before substantive work, read this exact Codex thread natively to obtain the current turn ID and call TaskChef report_state with the marked task ID, the self-linked thread ID, that current turn ID, status working, summary omitted or null, and a concise requestSummary for this turn. link_task remains the first TaskChef action on the initial turn; do not report working before identity is linked. Never reuse a prior turn ID after a follow-up.";
|
|
9
9
|
/** @deprecated Historical v7 inline-prompt snapshot. New delegations use taskchef-executor. */
|
|
10
10
|
export const EXECUTOR_RESULT_PARAGRAPH = "Before ending, read this exact Codex thread again and call TaskChef report_state for the same current working turn with status completed, needs_input, or failed and a concise summary. Use needs_input only for a semantic decision or information the user must provide; a native approval prompt is live Codex state, not a TaskChef result. Do not include secrets, transcripts, or raw command output.";
|
|
11
|
+
export const EXECUTOR_REPORTING_AUTHORIZATION = "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.";
|
|
11
12
|
export const EXECUTOR_SKILL_INVOCATION = "Use $taskchef-executor to execute and report this delegated TaskChef assignment.";
|
|
12
13
|
const HISTORICAL_RESULT_WITH_TURN_PARAGRAPH = "Before ending, call the TaskChef report_result MCP tool with the marked task ID, this executor's self-linked thread ID, the current turn ID from an exact native read of that same thread, completed, needs_input, or failed, and a concise summary. Never reuse a prior turn ID after a follow-up. Use needs_input only for a semantic decision or information the user must provide; a native approval prompt is live Codex state, not a TaskChef result. Do not include secrets, transcripts, or raw command output.";
|
|
13
14
|
const HISTORICAL_RESULT_PARAGRAPH = "Before ending, call the TaskChef report_result MCP tool with completed, needs_input, or failed and a concise summary. Use needs_input only for a semantic decision or information the user must provide; a native approval prompt is live Codex state, not a TaskChef result. Do not include secrets, transcripts, or raw command output.";
|
|
@@ -28,7 +29,7 @@ const HISTORICAL_INLINE_PROTOCOLS = [
|
|
|
28
29
|
|
|
29
30
|
function hasTaskSpecificContent(lines) {
|
|
30
31
|
return lines.some((line) => (
|
|
31
|
-
line.trim().length > 0 && !HISTORICAL_EXECUTOR_SCAFFOLD_LINES.has(line)
|
|
32
|
+
line.trim().length > 0 && line !== EXECUTOR_REPORTING_AUTHORIZATION && !HISTORICAL_EXECUTOR_SCAFFOLD_LINES.has(line)
|
|
32
33
|
));
|
|
33
34
|
}
|
|
34
35
|
|
|
@@ -134,7 +135,7 @@ export function parseTaskChefMarker(instruction) {
|
|
|
134
135
|
}
|
|
135
136
|
|
|
136
137
|
const containsInlineScaffold = rest.some((line) => HISTORICAL_EXECUTOR_SCAFFOLD_LINES.has(line));
|
|
137
|
-
if (!containsInlineScaffold) return rest
|
|
138
|
+
if (!containsInlineScaffold) return hasTaskSpecificContent(rest);
|
|
138
139
|
return HISTORICAL_INLINE_PROTOCOLS.some((protocol) => {
|
|
139
140
|
const prefix = ["", ...protocol.flatMap((line) => [line, ""])];
|
|
140
141
|
if (!prefix.every((line, index) => rest[index] === line)) return false;
|
|
@@ -216,10 +217,13 @@ export function prepareDelegation(instruction, { taskId = randomUUID() } = {}) {
|
|
|
216
217
|
if (bodyLines.some((line) => HISTORICAL_EXECUTOR_SCAFFOLD_LINES.has(line))) {
|
|
217
218
|
throw new Error("instruction contains reserved historical TaskChef lifecycle scaffolding");
|
|
218
219
|
}
|
|
220
|
+
if (bodyLines.includes(EXECUTOR_REPORTING_AUTHORIZATION)) {
|
|
221
|
+
throw new Error("instruction contains reserved TaskChef reporting authorization");
|
|
222
|
+
}
|
|
219
223
|
const id = requireUuid(taskId);
|
|
220
224
|
return {
|
|
221
225
|
id,
|
|
222
|
-
instruction: `${body}\n\n${EXECUTOR_SKILL_INVOCATION}\n${taskChefMarker(id)}`,
|
|
226
|
+
instruction: `${body}\n\n${EXECUTOR_REPORTING_AUTHORIZATION}\n\n${EXECUTOR_SKILL_INVOCATION}\n${taskChefMarker(id)}`,
|
|
223
227
|
};
|
|
224
228
|
}
|
|
225
229
|
|
package/src/mcp.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import path from "node:path";
|
|
1
2
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
3
|
import { z } from "zod";
|
|
3
4
|
import {
|
|
@@ -169,6 +170,7 @@ export function createTaskChefMcpServer({
|
|
|
169
170
|
logDashboardDiagnostic,
|
|
170
171
|
usageTracker = createUsageTracker({ workspace }),
|
|
171
172
|
} = {}) {
|
|
173
|
+
const reportingDestination = `Store lifecycle state and summaries in the configured local TaskChef dashboard log ${JSON.stringify(path.resolve(workspace, "tasks.jsonl"))}. GitHub URLs are stored as references, not published to GitHub. Also triggers local Codex usage tracking in ${JSON.stringify(path.resolve(workspace, ".taskchef-usage.json"))}. Exclude secrets. `;
|
|
172
174
|
const server = new McpServer(
|
|
173
175
|
{ name: "taskchef", version: TASKCHEF_VERSION },
|
|
174
176
|
{
|
|
@@ -297,7 +299,7 @@ export function createTaskChefMcpServer({
|
|
|
297
299
|
{
|
|
298
300
|
title: "Report TaskChef state",
|
|
299
301
|
description:
|
|
300
|
-
"Report this self-linked executor turn's lifecycle state. Use one stable turnRef for working and its terminal report; pass the native Codex turn ID as both turnRef and turnId when available, otherwise pass a client-generated UUID turnRef and null turnId. Preserve known repository context and delivered links. Exact retries are idempotent; stale or mismatched turnRefs are rejected.",
|
|
302
|
+
reportingDestination + "Report this self-linked executor turn's lifecycle state. Use one stable turnRef for working and its terminal report; pass the native Codex turn ID as both turnRef and turnId when available, otherwise pass a client-generated UUID turnRef and null turnId. Preserve known repository context and delivered links. Exact retries are idempotent; stale or mismatched turnRefs are rejected.",
|
|
301
303
|
inputSchema: {
|
|
302
304
|
taskId: z.string().min(1),
|
|
303
305
|
threadId: z.string().min(1).nullable(),
|
|
@@ -326,7 +328,7 @@ export function createTaskChefMcpServer({
|
|
|
326
328
|
{
|
|
327
329
|
title: "Report TaskChef result (deprecated)",
|
|
328
330
|
description:
|
|
329
|
-
"Deprecated compatibility alias for semantic results. New executors must use report_state working at turn start and report_state again with needs_input, completed, or failed before ending. This alias preserves legacy callers by implicitly starting the supplied newer turn before storing its result.",
|
|
331
|
+
reportingDestination + "Deprecated compatibility alias for semantic results. New executors must use report_state working at turn start and report_state again with needs_input, completed, or failed before ending. This alias preserves legacy callers by implicitly starting the supplied newer turn before storing its result.",
|
|
330
332
|
inputSchema: {
|
|
331
333
|
taskId: z.string().min(1),
|
|
332
334
|
threadId: z.string().min(1).nullable(),
|