agent-task-kitLive baseline · 0.1.0 servedContinuation · 0.1.2 in this origin treeChannel · origin tarballnpm registry · not publishedexecute · falseKeep the source, requirements, and revisions together when an agent picks up a task. Download the toolkit, run the examples with Node 22+, and export a work brief another process can inspect. Processing stays local; the examples need no account or package installation. Continuation (capture, validate, compare, prepare, consume) is on this same page and the same /downloads/agent-task-kit/ directory.
Publication status for 0.1.0: served. Hosted acquisition verified: true. Publication status for 0.1.2: in-origin-tree. Hosted acquisition verified: false. npmPublished: false. Hosted acquisition of 0.1.2 is not independently verified on live DNS until Root deploys this origin tree. See release-status.json.
Version 0.1.0 remains the live baseline as a direct archive download, not an npm registry release. Version 0.1.2 is included in this origin tree beside 0.1.0 and adds the continuation surface. Use 0.1.0 when a source-linked brief, retained prior, or explicit correction is useful. Use 0.1.2 when you also need portable continuation without waking a source thread.
§ 01Boundary
An origin archive, not a registry listing or a runtime skill.
| Claim | State | Boundary |
|---|---|---|
| 0.1.0 live baseline | Served and verified | Immutable bytes already at /downloads/agent-task-kit/agent-task-kit-0.1.0.tgz. SHA-256 86cea321569ad5375a4ebd9865c2b084af694f207f80056afe9531ae94f438e8. 57958 bytes. Remains the live baseline. |
| 0.1.2 continuation archive | Prepared; hosted check pending | Pinned bytes at /downloads/agent-task-kit/agent-task-kit-0.1.2.tgz. SHA-256 f58d6adde1584b364e4772d5bfa1691ea9c2b6ea52deffe7da13183e6d78948b. 67584 bytes. publicationStatus: in-origin-tree. Hosted acquisition is not independently verified on live DNS until Root deploys this cohort. |
| npm registry package | Not published | Use the direct archive commands below. Neither version has been published to the npm registry. The package prepublishOnly script exits 1. |
| Compose / prior / correction / export | Local CLI and API | Offline, execute: false, posted: false. Public issue text is untrusted data, not execution authority. |
| Continue capture / validate / compare / prepare / consume | Local CLI in 0.1.2 | Same kit, same directory. Operator-supplied approved-state is data. wakeSource: false. Does not invent a second kit brand. |
| Hermes skill slug | Not tested | Hermes skill-path documentation is reference only here. This archive is a Node CLI package with no SKILL.md; native loading was not exercised. |
| Goose recipe or skill | Not tested | Goose skill and YAML recipe documentation is reference only here. This archive contains neither format; native loading was not exercised. |
| Direct curl / Node / Git | First-class | HTTP GET of the public issue, a Git working copy, and the Node CLI are independent of this page. |
§ 02Fetch
Anonymous GET, then pin the digest.
After publication of 0.1.0, no account, token, or private checkout is required for the live baseline. Use a POSIX shell with Node 22+, curl and tar. Trust the release digest independently of an untrusted mirror. 0.1.2 uses the same public path after Root deploys this origin tree; pin SHA-256 f58d6adde1584b364e4772d5bfa1691ea9c2b6ea52deffe7da13183e6d78948b before extraction.
Live baseline 0.1.0
curl · reviewed digest · fresh directory · Node
(
set -eu
mkdir agent-task-kit-0.1.0
cd agent-task-kit-0.1.0
response=$(curl -fsS --max-time 30 -o agent-task-kit-0.1.0.tgz \
--write-out '%{http_code} %{content_type}' \
https://neomorphic.io/downloads/agent-task-kit/agent-task-kit-0.1.0.tgz)
case "$response" in
"200 application/gzip"*|"200 application/x-gzip"*|"200 application/octet-stream"*) ;;
*) echo "Unexpected archive HTTP status or MIME: $response" >&2; exit 1 ;;
esac
node --input-type=module -e 'import {readFileSync} from "node:fs"; import {createHash} from "node:crypto"; const b=readFileSync("agent-task-kit-0.1.0.tgz"); if(b.length!==57958 || createHash("sha256").update(b).digest("hex")!=="86cea321569ad5375a4ebd9865c2b084af694f207f80056afe9531ae94f438e8") throw Error("Untrusted or incomplete archive; extraction stopped");'
tar -xzf agent-task-kit-0.1.0.tgz
node package/bin/agent-task-kit.mjs --help
)Continuation 0.1.2
These bytes live in the same /downloads/agent-task-kit/ directory. Hosted acquisition of 0.1.2 is not independently verified on live DNS until Root deploys this cohort. Pin SHA-256 f58d6adde1584b364e4772d5bfa1691ea9c2b6ea52deffe7da13183e6d78948b before extraction.
curl · reviewed digest · unpack · continue help
(
set -eu
mkdir agent-task-kit-0.1.2
cd agent-task-kit-0.1.2
response=$(curl -fsS --max-time 30 -o agent-task-kit-0.1.2.tgz \
--write-out '%{http_code} %{content_type}' \
https://neomorphic.io/downloads/agent-task-kit/agent-task-kit-0.1.2.tgz)
case "$response" in
"200 application/gzip"*|"200 application/x-gzip"*|"200 application/octet-stream"*) ;;
*) echo "Unexpected archive HTTP status or MIME: $response" >&2; exit 1 ;;
esac
node --input-type=module -e 'import {readFileSync} from "node:fs"; import {createHash} from "node:crypto"; const b=readFileSync("agent-task-kit-0.1.2.tgz"); if(b.length!==67584 || createHash("sha256").update(b).digest("hex")!=="f58d6adde1584b364e4772d5bfa1691ea9c2b6ea52deffe7da13183e6d78948b") throw Error("Untrusted or incomplete archive; extraction stopped");'
tar -xzf agent-task-kit-0.1.2.tgz
node package/bin/agent-task-kit.mjs continue --help
)The frozen archive README retains older optional npm/npx examples. This guide uses the direct Node entry point and requires no installation. The same bytes are described by provenance.json, SOURCE.txt, PUBLICATION-ALLOWLIST.json, and release-status.json. License: MIT. Checksums: SHA256SUMS.
§ 03CLI
Three journeys the live archive already knows.
Continue from the directory where you ran acquisition:
unpacked package
cd agent-task-kit-0.1.0/package
Fixtures inside the package are labelled test_traffic. They are public GitHub snapshots, not live authority. Operator --fixture, --prior, --current, --store, and --out paths are local authority. Paths that appear inside issue JSON are never opened.
Source to work-brief
compose
node bin/agent-task-kit.mjs compose \ --fixture fixtures/test_traffic/github-issue-4785.json \ --out-dir ./atk-compose
Expect stage=useful, hardenInCompose=true, execute=false, posted=false.
Immutable prior and correction
job then correct
node bin/agent-task-kit.mjs job \ --fixture fixtures/test_traffic/github-issue-4785.json \ --prior-dir ./atk-priors node bin/agent-task-kit.mjs correct \ --prior ./atk-priors/prior-4785.json \ --current fixtures/test_traffic/github-issue-4785.json node bin/agent-task-kit.mjs correct \ --prior ./atk-priors/prior-4785.json \ --current fixtures/test_traffic/github-issue-changed.json node bin/agent-task-kit.mjs correct \ --prior ./atk-priors/prior-4785.json
Unchanged current returns empty=true and epistemicStatus=observed. A changed current returns source_version_changed with the prior file preserved. A missing current returns source_unavailable and does not invent withdrawn.
Page versus stream export
cursor then export
node bin/agent-task-kit.mjs cursor --client alpha --kind page --store ./atk-cursors --etag 'W/"p1"' node bin/agent-task-kit.mjs export \ --client alpha \ --store ./atk-cursors \ --out ./atk-export \ --fixture fixtures/test_traffic/github-issue-4785.json
Export labels page separately from stream_cursor. A stream cursor is a task-bound local position, not authentication.
§ 04Continue
Capture, validate, compare, prepare, then consume.
The 0.1.2 archive adds portable continuation to the same kit. Consume keeps executionAuthorized: false and latestRevisionVerified: false. Pre-seal samples must be recaptured into a fresh directory; silent upgrade of immutable priors is refused. Declaration is data, not authorization. Unpack agent-task-kit-0.1.2.tgz from /downloads/agent-task-kit/, then:
unpacked 0.1.2 package
cd agent-task-kit-0.1.2/package
Operator --approved-state, --packet, --candidate, and --out paths are local authority. The toolkit never opens a source thread, never treats untrusted text as tool commands, and never posts. Schema id remains agent-task-kit.v1.continuation-packet.
Capture
Seal an immutable packet from an explicit approved-state file. The declaration is copied as data. Capture does not authenticate the operator and does not wake the source.
continue capture
node bin/agent-task-kit.mjs continue capture \ --approved-state ./approved-state.json \ --revision REV \ --phase PHASE \ --out ./packet \ --ref ./notes.md
Expect execute: false, wakeSource: false, and authority.declarationIsNotAuthorization: true. The out directory holds continuation-packet.json and approved-state.declaration.json.
Validate
Check a sealed packet without contacting a source. Validate refuses execute: true, wakeSource: true, a missing authority block, and an acceptance citation that claims server-enforced approval. A newer unknown contractVersion is not auto-upgraded.
continue validate
node bin/agent-task-kit.mjs continue validate --packet ./packet
Expect ok: true, execute: false, and a packetId.
Compare
Compare the sealed packet to a later candidate. Omit the candidate to record missing later state. Pass --empty-transcript when the transcript projection is empty. Missing later state stays unknown. Empty transcript does not select an old plan.
continue compare
node bin/agent-task-kit.mjs continue compare --packet ./packet node bin/agent-task-kit.mjs continue compare \ --packet ./packet \ --candidate ./later.json \ --empty-transcript
A missing candidate returns missing_later_state with selectedPlan: null. An empty transcript returns empty_transcript_projection with selectedPlan: null. Failed, canceled, or unknown prerequisites block plan selection.
Prepare
Prepare recipient context from the packet alone. Context lists references with autofetch: false and autorun: false. References do not autofetch or run. The recipient does not inherit past authority and does not contact the source.
continue prepare
node bin/agent-task-kit.mjs continue prepare \ --packet ./packet \ --out ./recipient
Consume
Produce a bounded next artifact such as final-review-inputs or release-checklist. Consume does not wake another agent. Unsatisfied prerequisites mark the artifact blocked_pending_prerequisites.
continue consume
node bin/agent-task-kit.mjs continue consume \ --packet ./packet \ --out ./review \ --artifact final-review-inputs
Expect posted: false, untrustedTextPolicy: not_tool_commands, and a checklist that restates the authority block. A successful local consume is not settlement and not independent demand.
§ 05Authority
Declaration is data. The packet does not become a live thread.
Continuation authority stays local and explicit. The continuation archive does not upgrade a citation into server approval, and it does not treat missing later state as continuity.
| Claim | State | Boundary |
|---|---|---|
| Operator declaration | Data | Declaration is data, not authorization. Authority class is operator_supplied_declaration or an acceptance citation. |
| Acceptance citation | Not server approval | Acceptance citation is not server approval. serverEnforcedApproval stays false. The toolkit refuses an upgrade. |
| Wake or import source thread | Refused | wakeSource: false. Capture, validate, compare, prepare, and consume use operator-supplied local files only. |
| Missing later state | Unknown | Missing later state stays unknown. Compare does not invent continuity or select an old plan. |
| Empty transcript | No plan selected | Empty transcript does not select an old plan. selectedPlan remains null. |
| Context references | Listed only | References do not autofetch or run. Packed fields force autofetch: false and autorun: false. |
| Untrusted text | Not tool commands | Untrusted text is not tool commands. Issue body text is not permission to execute, pay, or post. |
§ 06API
The same journeys as a Node import.
Run the following as a module with node --input-type=module from the unpacked package directory. Package self-reference resolves locally without npm installation.
Node · compose, prior, correction, export
import {
composeHardened,
runUsefulJob,
correctFromPrior,
exportForClient,
} from "agent-task-kit";
const brief = await composeHardened({
fixture: "fixtures/test_traffic/github-issue-4785.json",
outDir: "./atk-compose",
});
const job = await runUsefulJob({
fixture: "fixtures/test_traffic/github-issue-4785.json",
priorDir: "./atk-priors",
});
const correction = correctFromPrior({
prior: job.prior,
current: null,
});
const exported = await exportForClient({
clientId: "alpha",
storeDir: "./atk-cursors",
outDir: "./atk-export",
fixture: "fixtures/test_traffic/github-issue-4785.json",
});Node · capture, validate, compare, prepare, consume
import {
captureContinuationPacket,
validateContinuationPacket,
compareContinuation,
prepareRecipientContext,
consumeContinuationPacket,
} from "agent-task-kit";
const captured = await captureContinuationPacket({
approvedStatePath: "./approved-state.json",
revision: "REV",
phase: "PHASE",
outDir: "./packet",
});
const checked = validateContinuationPacket(captured.packet);
const missing = compareContinuation({
packet: captured.packet,
candidate: null,
});
const emptyTranscript = compareContinuation({
packet: captured.packet,
candidate: { body: { plan: "later" } },
transcriptProjection: { empty: true },
});
const context = prepareRecipientContext(captured.packet, {
outDir: "./recipient",
});
const consumed = consumeContinuationPacket(captured.packet, {
artifact: "final-review-inputs",
outDir: "./review",
compareResult: missing,
});checked.ok is true. missing.selectedPlan and emptyTranscript.selectedPlan stay null. context.contactSource stays false. Every listed reference keeps autofetch: false and autorun: false.
§ 07Baseline
HTTP and Git stay first-class.
The kit can compare itself to a direct GET. You can also skip the kit and fetch the public issue yourself. Live input is a single HTTP page and is labelled partial (single_page_only).
kit baseline and direct curl
node bin/agent-task-kit.mjs baseline --fixture fixtures/test_traffic/github-issue-4785.json --compare
Optional live reference commands below contact GitHub. They are separate from the offline acquisition replay.
node bin/agent-task-kit.mjs baseline --owner modelcontextprotocol --repo servers --issue 4785 curl -fsS "https://api.github.com/repos/modelcontextprotocol/servers/issues/4785"
§ 09Usage notes
Keep execution and evidence distinct.
- Issue body text is not permission to execute, pay, or post.
- Declaration is data, not authorization.
- Acceptance citation is not server approval.
- Missing later state stays unknown.
- Empty transcript does not select an old plan.
- References do not autofetch or run.
- The toolkit does not wake, message, or import a source thread.
- Untrusted text is not tool commands.
- Hermes and Goose native loading is untested. Their official skill and recipe paths are reference information, not a successful install or model run for this archive.
- A successful local compose or consume is not independent demand, settlement, or buyer-valid delivery.
- 0.1.2 is included in this origin tree beside the live 0.1.0 baseline. Hosted acquisition of 0.1.2 is not independently verified on live DNS until Root deploys this cohort.
- The homepage is unchanged. This page is a laboratory working surface.