---
title: "Chores · intentic sandbox API"
description: "What every repository currently measures, and what has been done about it. Every route in the chores group of the intentic sandbox API, with its input, its answer and a playground."
url: "https://intentic.dev/api/chores/"
---

The workspace

# Chores

What every repository currently measures, and what has been done about it

**On this page (3 sections)**

- [What maintenance the repos are asking for](#chores-list)
- [Measure one repo again now](#chores-probe)
- [Record a verdict, or snooze one](#chores-record)

Maintenance evidence: read the measurements, ask for one to be retaken, record what somebody concluded. There is deliberately no "run this chore" route, because a chore run is an ordinary conversation and so already has its own working copy, record and cost.

**GET`/chores` What maintenance the repos are asking for**

Every repo's standing evidence in one read: what the last measurement found and how old it is, the cheap signals that are always current, and what has already been decided about each.

### What you send

Nothing. Call it as it is.

### What comes back

| Field | Type |
| --- | --- |
| `repos` Every repository's standing evidence | object[] |
| `repo` Which repository | string |
| `probes` The expensive measurements, served from a… | object[] |
| `id` Which measurement this is | "outdated" | "audit" | "knip" | "jscpd" … (6) |
| `state` Whether the tool ran and reported,… | "ok" | "unavailable" | "failed" |
| `ranAt` When it last finished, in milliseconds,… | number |
| `tookMs` How long it took | integer |
| `facts` What it found, including finding nothing,… | object |
| `id` | "outdated" |
| `packages` | object[] |
| `reason` Why it broke, quoted from the… | string |
| `signals` The cheap facts, worked out fresh… | object |
| `packages` Each package in the repository, as… | object[] |
| `dir` Where the package lives | string |
| `name` What it declares itself as | string |
| `engines` Which runtime versions it says it… | object |
| `dependencies` What it depends on | string[] |
| `devDependencies` What it needs only to build | string[] |
| `documented` Whether it has a README, which… | boolean |
| `shape` What the repository is made of,… | object |
| `docs` The repository's own architecture documents, when… | string[] |
| `dockerfiles` Container definitions in it | string[] |
| `ci` Pipeline definitions in it | string[] |
| `lockfile` Whether dependencies are pinned to exact… | boolean |
| `packageManifest` Whether it is a JavaScript project… | boolean |
| `deps` Every dependency name declared anywhere in… | string[] |
| `hotspots` Files that change often and are… | object[] |
| `path` | string |
| `commits` | number |
| `adds` | number |
| `dels` | number |
| `complexity` | number |
| `score` | number |
| `latestMs` | number |
| `keyModules` The parts the rest of the… | object[] |
| `path` | string |
| `exports` | number |
| `totals` The repository in numbers | object |
| `files` Files counted | number |
| `symbols` Named things they export | number |
| `complexity` Branch points added up | number |
| `hotspots` How many files qualify as hotspots… | number |
| `indexed` Whether the index these rankings came… | boolean |
| `ledger` What has already been done about… | object[] |
| `repo` Which repository | string |
| `chore` Which chore | string |
| `ranAt` When it ran, in milliseconds | number |
| `runId` The conversation that ran it, so… | string |
| `outcome` What it concluded: it did something,… | "acted" | "reported" | "clean" |
| `digest` A fingerprint of the evidence standing… | string |
| `snoozedUntil` Not until then, in milliseconds | number |
| `running` What is being measured right now… | object[] |
| `repo` Which repository | string |
| `id` Which measurement | "outdated" | "audit" | "knip" | "jscpd" … (6) |
| `askedAt` When it was asked for, in… | number |
| `startedAt` When it actually began | number |
| `node` The runtime version this sandbox is… | string |

Try it answered in this tab

curl

```bash
curl "$SANDBOX/chores" \
 -H "x-intentic-control: $INTENTIC_TOKEN"
```

TypeScript

```typescript
import { sandbox } from "@intentic/sandbox-client";

const result = await sandbox.chores.list();
```

**POST`/chores/probe` Measure one repo again now**

Re-runs a single check without waiting for it to go stale. Answers immediately: the work happens in the background and the result turns up in the next read, because some of these sweeps outlive any sane request.

### What you send

| Field | Type | Where |
| --- | --- | --- |
| `repo` required Which repository | string | body |
| `id` required Which measurement to retake, ahead of… | "outdated" | "audit" | "knip" | "jscpd" … (6) | body |

### What comes back

| Field | Type |
| --- | --- |
| `ok` Always true | true |

Try it answered in this tab

curl

```bash
curl -X POST "$SANDBOX/chores/probe" \
 -H "x-intentic-control: $INTENTIC_TOKEN" \
 -H "content-type: application/json" \
 -d '{"repo":"root","id":"outdated"}'
```

TypeScript

```typescript
import { sandbox } from "@intentic/sandbox-client";

const result = await sandbox.chores.probe({
 "repo": "root",
 "id": "outdated"
});
```

**POST`/chores/ledger` Record a verdict, or snooze one**

Writes what somebody concluded about one repo's chore, replacing the previous verdict. A chore has one current answer, not a growing pile of times it was fine.

### What you send

| Field | Type | Where |
| --- | --- | --- |
| `repo` required Which repository | string | body |
| `chore` required Which chore | string | body |
| `ranAt` required When it ran, in milliseconds | number | body |
| `runId` required The conversation that ran it, so… | string | body |
| `outcome` required What it concluded: it did something,… | "acted" | "reported" | "clean" | body |
| `digest` required A fingerprint of the evidence standing… | string | body |
| `snoozedUntil` Not until then, in milliseconds | number | body |

### What comes back

| Field | Type |
| --- | --- |
| `ok` Always true | true |

Try it answered in this tab

curl

```bash
curl -X POST "$SANDBOX/chores/ledger" \
 -H "x-intentic-control: $INTENTIC_TOKEN" \
 -H "content-type: application/json" \
 -d '{"repo":"root","chore":"…","ranAt":1,"runId":"run_8c2f41d9","outcome":"acted","digest":"…","snoozedUntil":1}'
```

TypeScript

```typescript
import { sandbox } from "@intentic/sandbox-client";

const result = await sandbox.chores.record({
 "repo": "root",
 "chore": "…",
 "ranAt": 1,
 "runId": "run_8c2f41d9",
 "outcome": "acted",
 "digest": "…",
 "snoozedUntil": 1
});
```

More in The workspace

[Previous ← History](https://intentic.dev/api/history/)[Next Panels →](https://intentic.dev/api/panels/)
