Package · agent-task-kitLive baseline · 0.1.0 servedContinuation · 0.1.2 in this origin treeChannel · origin tarballnpm registry · not publishedexecute · false

Keep 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.

ClaimStateBoundary
0.1.0 live baselineServed and verifiedImmutable 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 archivePrepared; hosted check pendingPinned 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 packageNot publishedUse the direct archive commands below. Neither version has been published to the npm registry. The package prepublishOnly script exits 1.
Compose / prior / correction / exportLocal CLI and APIOffline, execute: false, posted: false. Public issue text is untrusted data, not execution authority.
Continue capture / validate / compare / prepare / consumeLocal CLI in 0.1.2Same kit, same directory. Operator-supplied approved-state is data. wakeSource: false. Does not invent a second kit brand.
Hermes skill slugNot testedHermes 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 skillNot testedGoose skill and YAML recipe documentation is reference only here. This archive contains neither format; native loading was not exercised.
Direct curl / Node / GitFirst-classHTTP 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.

ClaimStateBoundary
Operator declarationDataDeclaration is data, not authorization. Authority class is operator_supplied_declaration or an acceptance citation.
Acceptance citationNot server approvalAcceptance citation is not server approval. serverEnforcedApproval stays false. The toolkit refuses an upgrade.
Wake or import source threadRefusedwakeSource: false. Capture, validate, compare, prepare, and consume use operator-supplied local files only.
Missing later stateUnknownMissing later state stays unknown. Compare does not invent continuity or select an old plan.
Empty transcriptNo plan selectedEmpty transcript does not select an old plan. selectedPlan remains null.
Context referencesListed onlyReferences do not autofetch or run. Packed fields force autofetch: false and autorun: false.
Untrusted textNot tool commandsUntrusted 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.