@hasna/todos 0.15.51 → 0.16.0
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/CHANGELOG.md +1884 -0
- package/README.md +314 -37
- package/dist/ai-tools.d.ts.map +1 -1
- package/dist/ai.d.ts.map +1 -1
- package/dist/cli/cloud-router.d.ts +99 -51
- package/dist/cli/cloud-router.d.ts.map +1 -1
- package/dist/cli/commands/agent-commands.d.ts.map +1 -1
- package/dist/cli/commands/config-serve-commands.d.ts.map +1 -1
- package/dist/cli/commands/delegate.d.ts.map +1 -1
- package/dist/cli/commands/environment-snapshots.d.ts.map +1 -1
- package/dist/cli/commands/machines-api.d.ts +4 -0
- package/dist/cli/commands/machines-api.d.ts.map +1 -0
- package/dist/cli/commands/machines.d.ts.map +1 -1
- package/dist/cli/commands/mcp-hooks-commands.d.ts.map +1 -1
- package/dist/cli/commands/plan-commands.d.ts +3 -0
- package/dist/cli/commands/plan-commands.d.ts.map +1 -0
- package/dist/cli/commands/plan-template-commands.d.ts.map +1 -1
- package/dist/cli/commands/pr-group-commands.d.ts.map +1 -1
- package/dist/cli/commands/project-commands.d.ts +15 -0
- package/dist/cli/commands/project-commands.d.ts.map +1 -1
- package/dist/cli/commands/query-commands.d.ts.map +1 -1
- package/dist/cli/commands/storage-commands.d.ts.map +1 -1
- package/dist/cli/commands/task-list-commands.d.ts +3 -0
- package/dist/cli/commands/task-list-commands.d.ts.map +1 -0
- package/dist/cli/commands/template-commands.d.ts +3 -0
- package/dist/cli/commands/template-commands.d.ts.map +1 -0
- package/dist/cli/helpers.d.ts.map +1 -1
- package/dist/cli/index.js +15156 -11088
- package/dist/cli/machine-api.d.ts +7 -0
- package/dist/cli/machine-api.d.ts.map +1 -0
- package/dist/cli/plan-read-api.d.ts +6 -0
- package/dist/cli/plan-read-api.d.ts.map +1 -0
- package/dist/cli/project-api.d.ts +119 -0
- package/dist/cli/project-api.d.ts.map +1 -0
- package/dist/cli/stage-a.d.ts +34 -4
- package/dist/cli/stage-a.d.ts.map +1 -1
- package/dist/cli/task-query-api.d.ts +21 -0
- package/dist/cli/task-query-api.d.ts.map +1 -0
- package/dist/cli/template-api.d.ts +7 -0
- package/dist/cli/template-api.d.ts.map +1 -0
- package/dist/contracts.js +836 -266
- package/dist/db/builtin-templates.d.ts +2 -33
- package/dist/db/builtin-templates.d.ts.map +1 -1
- package/dist/db/database.d.ts.map +1 -1
- package/dist/db/handoffs.d.ts.map +1 -1
- package/dist/db/machines.d.ts.map +1 -1
- package/dist/db/migrations.d.ts.map +1 -1
- package/dist/db/plans.d.ts.map +1 -1
- package/dist/db/retrospectives.d.ts.map +1 -1
- package/dist/db/schema.d.ts.map +1 -1
- package/dist/db/task-lists.d.ts.map +1 -1
- package/dist/db/task-runs.d.ts +2 -0
- package/dist/db/task-runs.d.ts.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3863 -1708
- package/dist/lib/assignee-validation.d.ts.map +1 -1
- package/dist/lib/builtin-template-library.d.ts +32 -0
- package/dist/lib/builtin-template-library.d.ts.map +1 -0
- package/dist/lib/cli-reference.d.ts.map +1 -1
- package/dist/lib/config.d.ts +10 -13
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/db-backup.d.ts +1 -1
- package/dist/lib/db-backup.d.ts.map +1 -1
- package/dist/lib/env.d.ts +18 -0
- package/dist/lib/env.d.ts.map +1 -0
- package/dist/lib/environment-snapshots.d.ts.map +1 -1
- package/dist/lib/gatherer.d.ts.map +1 -1
- package/dist/lib/headless-boundaries.d.ts +4 -3
- package/dist/lib/headless-boundaries.d.ts.map +1 -1
- package/dist/lib/local-encryption.d.ts +12 -0
- package/dist/lib/local-encryption.d.ts.map +1 -1
- package/dist/lib/local-opt-in.d.ts +90 -0
- package/dist/lib/local-opt-in.d.ts.map +1 -0
- package/dist/lib/paths.d.ts +9 -0
- package/dist/lib/paths.d.ts.map +1 -1
- package/dist/lib/plan-artifacts.d.ts +1 -0
- package/dist/lib/plan-artifacts.d.ts.map +1 -1
- package/dist/lib/plan-client-boundary.d.ts +2 -0
- package/dist/lib/plan-client-boundary.d.ts.map +1 -0
- package/dist/lib/plan-schedule.d.ts +6 -0
- package/dist/lib/plan-schedule.d.ts.map +1 -0
- package/dist/lib/project-panel.d.ts +6 -0
- package/dist/lib/project-panel.d.ts.map +1 -1
- package/dist/lib/project-receipt.d.ts +3 -0
- package/dist/lib/project-receipt.d.ts.map +1 -0
- package/dist/lib/sandbox-profiles.d.ts.map +1 -1
- package/dist/lib/shared-plan-artifacts.d.ts +14 -0
- package/dist/lib/shared-plan-artifacts.d.ts.map +1 -0
- package/dist/lib/sync.d.ts.map +1 -1
- package/dist/lib/task-list-client-boundary.d.ts +3 -0
- package/dist/lib/task-list-client-boundary.d.ts.map +1 -0
- package/dist/lib/task-routing.d.ts.map +1 -1
- package/dist/lib/template-client-boundary.d.ts +2 -0
- package/dist/lib/template-client-boundary.d.ts.map +1 -0
- package/dist/mcp/index.d.ts +1 -0
- package/dist/mcp/index.d.ts.map +1 -1
- package/dist/mcp/index.js +45195 -40368
- package/dist/mcp/plan-api.d.ts +6 -0
- package/dist/mcp/plan-api.d.ts.map +1 -0
- package/dist/mcp/remote-authority.d.ts +49 -0
- package/dist/mcp/remote-authority.d.ts.map +1 -0
- package/dist/mcp/task-coordination-api.d.ts +15 -0
- package/dist/mcp/task-coordination-api.d.ts.map +1 -0
- package/dist/mcp/task-list-api.d.ts +8 -0
- package/dist/mcp/task-list-api.d.ts.map +1 -0
- package/dist/mcp/token-utils.d.ts.map +1 -1
- package/dist/mcp/tools/environment-snapshots.d.ts.map +1 -1
- package/dist/mcp/tools/machines.d.ts.map +1 -1
- package/dist/mcp/tools/task-project-tools.d.ts.map +1 -1
- package/dist/mcp/tools/task-resources.d.ts.map +1 -1
- package/dist/mcp.d.ts +2 -2
- package/dist/mcp.d.ts.map +1 -1
- package/dist/mcp.js +45 -19
- package/dist/project-registration.js +2830 -557
- package/dist/registry.js +837 -267
- package/dist/release-provenance.json +6 -6
- package/dist/sdk/client.d.ts +51 -4
- package/dist/sdk/client.d.ts.map +1 -1
- package/dist/sdk/index.d.ts +2 -0
- package/dist/sdk/index.d.ts.map +1 -1
- package/dist/sdk/index.js +1209 -1080
- package/dist/sdk/resolve.d.ts +91 -0
- package/dist/sdk/resolve.d.ts.map +1 -0
- package/dist/sdk/v1.generated.d.ts +219 -3
- package/dist/sdk/v1.generated.d.ts.map +1 -1
- package/dist/server/auth-posture.d.ts +66 -7
- package/dist/server/auth-posture.d.ts.map +1 -1
- package/dist/server/client-ip.d.ts +39 -0
- package/dist/server/client-ip.d.ts.map +1 -0
- package/dist/server/cloud.d.ts +2 -1
- package/dist/server/cloud.d.ts.map +1 -1
- package/dist/server/index.d.ts +1 -1
- package/dist/server/index.js +20556 -15533
- package/dist/server/openapi.d.ts +1341 -83
- package/dist/server/openapi.d.ts.map +1 -1
- package/dist/server/port.d.ts +2 -2
- package/dist/server/port.d.ts.map +1 -1
- package/dist/server/routes.d.ts +3 -6
- package/dist/server/routes.d.ts.map +1 -1
- package/dist/server/serve.d.ts +2 -6
- package/dist/server/serve.d.ts.map +1 -1
- package/dist/server/v1.d.ts +3 -1
- package/dist/server/v1.d.ts.map +1 -1
- package/dist/storage/atomic-project-migration.d.ts +53 -0
- package/dist/storage/atomic-project-migration.d.ts.map +1 -0
- package/dist/storage/index.d.ts +3 -1
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/interfaces.d.ts +61 -0
- package/dist/storage/interfaces.d.ts.map +1 -1
- package/dist/storage/machine-registry.d.ts +36 -0
- package/dist/storage/machine-registry.d.ts.map +1 -0
- package/dist/storage/postgres-adapter.d.ts.map +1 -1
- package/dist/storage/postgres-sync.d.ts +2 -2
- package/dist/storage/postgres-sync.d.ts.map +1 -1
- package/dist/storage/run-artifact-creation-upload.d.ts +50 -0
- package/dist/storage/run-artifact-creation-upload.d.ts.map +1 -0
- package/dist/storage/s3-artifact-sync.d.ts +18 -0
- package/dist/storage/s3-artifact-sync.d.ts.map +1 -1
- package/dist/storage/sqlite-snapshot.d.ts +2 -0
- package/dist/storage/sqlite-snapshot.d.ts.map +1 -1
- package/dist/storage.d.ts +2 -2
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +2695 -322
- package/dist/task-manifest/postgres.d.ts +1 -1
- package/dist/task-manifest/sqlite.d.ts +1 -1
- package/dist/task-manifest.js +244 -73
- package/dist/task-subtree-transfer.js +198 -4
- package/dist/testing.d.ts +90 -29
- package/dist/testing.d.ts.map +1 -1
- package/dist/testing.js +34 -10
- package/dist/types/index.d.ts +40 -4
- package/dist/types/index.d.ts.map +1 -1
- package/docs/PLAN_API.md +93 -0
- package/docs/TASK_LIST_API.md +58 -0
- package/docs/TASK_QUERY_API.md +14 -0
- package/docs/TEMPLATE_API.md +18 -0
- package/docs/native-storage.md +405 -0
- package/package.json +19 -16
- package/postinstall.js +52 -1
- package/dashboard/dist/assets/index-BNQ4gJua.js +0 -342
- package/dashboard/dist/assets/index-DjzvHUWt.css +0 -1
- package/dashboard/dist/index.html +0 -13
- package/dashboard/dist/logo.jpg +0 -0
package/README.md
CHANGED
|
@@ -11,6 +11,192 @@ Universal task management for AI coding agents - CLI + MCP server + interactive
|
|
|
11
11
|
bun install -g @hasna/todos
|
|
12
12
|
```
|
|
13
13
|
|
|
14
|
+
## Upgrading From 0.15.52
|
|
15
|
+
|
|
16
|
+
0.16.0 puts every surface on one credential resolver and moves three command
|
|
17
|
+
families to the shared API. Upgrading from 0.15.52 needs no data migration, but
|
|
18
|
+
four things change:
|
|
19
|
+
|
|
20
|
+
- **Configure a credential.** The `./sdk` client no longer reads
|
|
21
|
+
`~/.todos/config.json`, and the unprefixed `TODOS_URL` / key spellings are
|
|
22
|
+
legacy. Put the key in the macOS Keychain, in
|
|
23
|
+
`~/.hasna/todos/config/credentials` (owner-only `0400`/`0600`), or in
|
|
24
|
+
`HASNA_TODOS_API_KEY`, then confirm with `todos storage status --json`. With no
|
|
25
|
+
credential the CLI exits non-zero (`REMOTE_API_CONFIG_MISSING`) instead of
|
|
26
|
+
quietly serving local rows, and MCP tool calls fail closed rather than falling
|
|
27
|
+
back to the on-box store (see the third bullet below). The
|
|
28
|
+
retired locations — `~/.hasna/fleet-env`, `~/.hasna/cloud`, `~/.config/hasna`,
|
|
29
|
+
`$XDG_CONFIG_HOME` — are not read.
|
|
30
|
+
- **`todos plans`, `todos task-lists` (`lists`, `tl`) and the template commands
|
|
31
|
+
are shared-API only.** They refuse `HASNA_TODOS_DB_PATH`, `TODOS_DB_PATH`,
|
|
32
|
+
`HASNA_TODOS_LOCAL` and `TODOS_LOCAL` before startup — any one of them set is
|
|
33
|
+
enough to refuse the command, and the refusal names the ones that are set.
|
|
34
|
+
`todos template-library` is unchanged and still credential-free. The MCP plan
|
|
35
|
+
tools (`create_plan`, `list_plans`, `get_plan`, `update_plan`, `delete_plan`)
|
|
36
|
+
and task-list tools (`create_task_list`, `list_task_lists`, `get_task_list`,
|
|
37
|
+
`update_task_list`, `delete_task_list`) are shared-API only as well.
|
|
38
|
+
- **Most MCP tools that read the on-box store need `HASNA_TODOS_LOCAL=1`, and
|
|
39
|
+
every refusal is typed.** The MCP server no longer opens the on-box SQLite
|
|
40
|
+
store implicitly, so tools that still read it directly — the template family,
|
|
41
|
+
tags and labels, stale/blocked work, `doctor`, run ledger,
|
|
42
|
+
handoffs, review queues, retrospectives, risks, knowledge records, backups,
|
|
43
|
+
calendar, boards, focus/time reports and dispatches — fail on the default
|
|
44
|
+
posture with the typed `{"code":"API_DATABASE_FALLBACK_FORBIDDEN"}` payload,
|
|
45
|
+
whose `suggestion` names the opt-in; the server also logs the same code.
|
|
46
|
+
Measured at 0.16.0 with `TODOS_PROFILE=full`, that is 68 of the 125
|
|
47
|
+
zero-required-argument tools. A further 18 return the typed
|
|
48
|
+
`REMOTE_API_CONFIG_MISSING` — the 16 shared-API tools that need a credential
|
|
49
|
+
(`list_tasks`, `list_projects`, `list_agents`, `get_next_task`, `get_status`,
|
|
50
|
+
`bootstrap`, `get_context`, `get_my_tasks`, `get_my_workload`, `get_health`,
|
|
51
|
+
`standup`, `list_my_tasks`, `machines_register`, `machines_list`,
|
|
52
|
+
`machines_heartbeat`, `machines_topology`) plus `list_plans` and
|
|
53
|
+
`list_task_lists`. Five more refuse caller input or local state with the typed
|
|
54
|
+
`INVALID_INPUT` / `ENCRYPTION_KEY_UNAVAILABLE` / `ENCRYPTED_PAYLOAD_INVALID`,
|
|
55
|
+
and five answer a readable text refusal ("Provide agent_id, id, or name.").
|
|
56
|
+
No zero-argument tool returns an opaque `UNKNOWN_ERROR` on either posture —
|
|
57
|
+
the default one measured above, or the `HASNA_TODOS_LOCAL=1` opt-in these
|
|
58
|
+
tools are served under. Run the server with
|
|
59
|
+
`HASNA_TODOS_LOCAL=1` to keep using the on-box tools; that opt-in is ignored
|
|
60
|
+
when `HASNA_TODOS_API_KEY` or `HASNA_TODOS_API_URL` is set, because a
|
|
61
|
+
configured environment outranks it.
|
|
62
|
+
- **The advertised command list is route-dependent.** 0.15.52 listed all 166
|
|
63
|
+
commands to every caller because the local fallback was implicit. 0.16.0
|
|
64
|
+
lists only what the resolved route exposes: 76 root commands on the hosted
|
|
65
|
+
route once a credential resolves, 75 with none configured (the extra verb,
|
|
66
|
+
`stale-lock-handoff`, is advertised only when the shared-API authority is),
|
|
67
|
+
and the full 166 only with `HASNA_TODOS_LOCAL=1` set, because the on-box
|
|
68
|
+
families fail closed on the default posture. No command was removed —
|
|
69
|
+
`todos --help`, `todos manual` and
|
|
70
|
+
the generated completions all honour the same rule, and every verb still
|
|
71
|
+
resolves once its posture is configured. `todos storage status` also reports
|
|
72
|
+
credential-source disagreements as a `warnings` array (`--json`) and a yellow
|
|
73
|
+
stderr line (human mode); the entries name sources and env key names, never a
|
|
74
|
+
value.
|
|
75
|
+
|
|
76
|
+
Everything else still runs offline with `HASNA_TODOS_LOCAL=1` (when the
|
|
77
|
+
environment configures no authority or credential of its own). The per-surface
|
|
78
|
+
detail lives under `apps/todos/docs/` (`PLAN_API.md`,
|
|
79
|
+
`TASK_LIST_API.md`, `TEMPLATE_API.md`, `TASK_QUERY_API.md`,
|
|
80
|
+
`native-storage.md`). The npm tarball ships this README, `CHANGELOG.md` and those
|
|
81
|
+
five documents alongside `dist/`, so they are readable from an installed
|
|
82
|
+
package; `docs/cli-help.md` is repo-only.
|
|
83
|
+
|
|
84
|
+
## Credentials and Service Authority
|
|
85
|
+
|
|
86
|
+
The CLI, the MCP server and the `./sdk` client all resolve their credential
|
|
87
|
+
through one resolver — the client chain in `@hasna/contracts` — so there is
|
|
88
|
+
exactly one place to put a key and exactly one precedence to learn. Resolution
|
|
89
|
+
happens **on every call**, never once at process start, so rotating a key heals
|
|
90
|
+
a long-running shell, MCP server or agent without restarting it: a `TodosClient`
|
|
91
|
+
built at startup and held for hours re-reads the Keychain and the credentials
|
|
92
|
+
file on each request and picks up the new key on the next one.
|
|
93
|
+
|
|
94
|
+
Two things are deliberately *not* re-resolved. An explicit `apiKey` argument is
|
|
95
|
+
tier 1 — a pin the caller owns — and the **service authority is fixed for the
|
|
96
|
+
life of a client**, because a credential written for one authority must never be
|
|
97
|
+
sent to another; build a new client to point somewhere else.
|
|
98
|
+
|
|
99
|
+
That second rule binds the credential too. `new TodosClient({ baseUrl })` with
|
|
100
|
+
no `apiKey` pins the authority *and* sends no credential at all: the key in your
|
|
101
|
+
Keychain or `~/.hasna/todos/config/credentials` was written for the fleet, so it
|
|
102
|
+
is never re-resolved onto a URL you named — a local `todos-serve`, a staging
|
|
103
|
+
box, a test double. Pass `apiKey` alongside `baseUrl` when that authority is
|
|
104
|
+
supposed to get a credential. Per-call re-resolution applies to a client that
|
|
105
|
+
resolved its own hosted authority, which is where rotation matters.
|
|
106
|
+
|
|
107
|
+
**Credential, highest to lowest:**
|
|
108
|
+
|
|
109
|
+
| # | Tier | Where |
|
|
110
|
+
| --- | --- | --- |
|
|
111
|
+
| 1 | explicit argument | `apiKey` on `new TodosClient({...})` — the `todos` CLI exposes no hosted-credential flag of its own (`todos ai --profile` is a runtime profile, not a credential tier) |
|
|
112
|
+
| 2 | deliberate env pointer | `HASNA_TODOS_API_KEY_OVERRIDE`, `HASNA_PROFILE`, `HASNA_TODOS_API_KEY_REF` (a secrets-vault item key, never a value) |
|
|
113
|
+
| 3 | macOS Keychain | generic password `hasna.credentials.todos.api-key`, account `HASNA_STATION` → `hostname -s` → `USER` |
|
|
114
|
+
| 4 | disk | `~/.hasna/todos/config/credentials`, owner-only `0400`/`0600` |
|
|
115
|
+
| 5 | environment | `HASNA_TODOS_API_KEY` |
|
|
116
|
+
|
|
117
|
+
Tier 3 is account-scoped, not host-scoped: the item is looked up under the
|
|
118
|
+
station name, so a key stored for one station is invisible on another. Set
|
|
119
|
+
`HASNA_STATION` explicitly (a wrapper, a launchd plist, a CI job) when the
|
|
120
|
+
account name is not the first of `hostname -s` / `USER`; with none of the three
|
|
121
|
+
matching the item's account, the lookup misses and the run fails closed with
|
|
122
|
+
`REMOTE_API_CONFIG_MISSING` rather than silently resolving something else.
|
|
123
|
+
|
|
124
|
+
Tiers 1 and 2 are *deliberate*: if one is set and cannot be honoured, the run
|
|
125
|
+
fails — it never quietly authenticates as a different principal. Tier 5 is a
|
|
126
|
+
first-class tier, not a deprecated one (a wrapper that injects the key per
|
|
127
|
+
process is correct), and it sits **below** disk so a rotated on-disk key beats a
|
|
128
|
+
stale `export` in an old shell. Nothing is read from `~/.hasna/fleet-env`,
|
|
129
|
+
`~/.hasna/cloud`, `~/.config/hasna`, `$XDG_CONFIG_HOME`, or `~/.todos/config.json`.
|
|
130
|
+
|
|
131
|
+
**Service authority**, same shape:
|
|
132
|
+
|
|
133
|
+
`HASNA_TODOS_API_URL` → the Keychain `hasna.credentials.todos.api-url` item →
|
|
134
|
+
`~/.hasna/todos/config/credentials` → the fleet gateway
|
|
135
|
+
`https://api.hasna.com/todos`. Configure the URL only to point somewhere else;
|
|
136
|
+
the client appends `/v1` itself, and sources that disagree are refused rather
|
|
137
|
+
than silently preferred. `HASNA_HOME` and `HASNA_CONFIG_HOME` move the disk
|
|
138
|
+
root; the older unprefixed spellings of these two variables (without the
|
|
139
|
+
`HASNA_` prefix) still work as a silent fallback for one release, but the
|
|
140
|
+
`HASNA_TODOS_*` names are canonical and are what every diagnostic names.
|
|
141
|
+
|
|
142
|
+
The credentials file is a plain env file, and its permissions are enforced — a
|
|
143
|
+
group- or world-readable one is refused rather than read:
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
install -m 700 -d ~/.hasna/todos/config
|
|
147
|
+
printf 'HASNA_TODOS_API_KEY=%s\n' "$KEY" > ~/.hasna/todos/config/credentials
|
|
148
|
+
chmod 600 ~/.hasna/todos/config/credentials
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
**Hosted mode fails closed.** With no credential the CLI exits non-zero
|
|
152
|
+
(`REMOTE_API_CONFIG_MISSING`) and names the tiers it consulted. The MCP server
|
|
153
|
+
stays up so a client can read the refusal, and each call fails instead of serving
|
|
154
|
+
local rows — the credential-gated tools with the typed
|
|
155
|
+
`REMOTE_API_CONFIG_MISSING` and the on-box tools with the typed
|
|
156
|
+
`API_DATABASE_FALLBACK_FORBIDDEN`, both described under
|
|
157
|
+
[Upgrading From 0.15.52](#upgrading-from-01552). Neither surface falls back to
|
|
158
|
+
the local SQLite store, because serving local rows while authentication is broken
|
|
159
|
+
prints healthy output for a broken system.
|
|
160
|
+
|
|
161
|
+
The `./sdk` surface answers "nothing is configured" differently *on purpose*,
|
|
162
|
+
and only for that one case: `new TodosClient()` targets the on-box
|
|
163
|
+
`todos-serve` at `http://localhost:19427` and prints the local-mode line, since
|
|
164
|
+
that client speaks the same `/api/*` plane a workstation serve exposes and local
|
|
165
|
+
is a real mode for it. `createTodosV1Client()` is hosted-only and throws
|
|
166
|
+
(`TODOS_CREDENTIAL_MISSING`). Every *other* refusal is a throw on all three
|
|
167
|
+
surfaces — aliases that disagree, an unreadable credential file, a URL with no
|
|
168
|
+
key — because those are misconfigurations, not an absence of configuration.
|
|
169
|
+
|
|
170
|
+
A **declared-but-blank** authority variable is deliberately *not* one of those
|
|
171
|
+
refusals. At the Todos seam a blank has always meant "unset" — helpers in the
|
|
172
|
+
wild blank rather than delete — so every authority variable that is declared
|
|
173
|
+
but empty is removed before the resolver runs. `HASNA_TODOS_API_KEY=` therefore
|
|
174
|
+
resolves the machine's ambient Keychain item exactly as an unset variable does:
|
|
175
|
+
it neither configures a credential nor withholds one. To force the on-box store
|
|
176
|
+
from a wrapper, set `HASNA_TODOS_LOCAL=1` — a blank authority variable counts as
|
|
177
|
+
absent for the opt-in too, so the opt-in is still honoured when
|
|
178
|
+
`HASNA_TODOS_API_KEY` is present but empty — instead of blanking a credential
|
|
179
|
+
variable.
|
|
180
|
+
|
|
181
|
+
**Local mode is deliberate, and it says so.** `@hasna/todos` is usable entirely
|
|
182
|
+
offline against an on-box SQLite store — set `HASNA_TODOS_LOCAL=1` (alias
|
|
183
|
+
`TODOS_LOCAL=1`). It is honoured only when the environment configures no
|
|
184
|
+
authority and no credential, it is answered *before* the resolver runs (so no
|
|
185
|
+
Keychain item and no credential file is read), and every local run prints one
|
|
186
|
+
line on stderr saying it is local.
|
|
187
|
+
|
|
188
|
+
Three command families are exempt from local mode and are shared-API only:
|
|
189
|
+
`todos plans`, `todos task-lists` (aliases `lists`, `tl`) and the template
|
|
190
|
+
commands (`templates`, `template-init`, `template-preview`, `template-export`,
|
|
191
|
+
`template-import`, `template-history`). They refuse `HASNA_TODOS_DB_PATH`,
|
|
192
|
+
`TODOS_DB_PATH`, `HASNA_TODOS_LOCAL` and `TODOS_LOCAL` before startup and need a
|
|
193
|
+
credential. `todos template-library` is the exception on the other side: it
|
|
194
|
+
renders the library bundled in the package and stays credential-free.
|
|
195
|
+
|
|
196
|
+
```bash
|
|
197
|
+
todos storage status --json # which tier supplied the key, and which URL applied
|
|
198
|
+
```
|
|
199
|
+
|
|
14
200
|
## CLI Usage
|
|
15
201
|
|
|
16
202
|
```bash
|
|
@@ -25,6 +211,13 @@ todos completions zsh > ~/.zsh/completions/_todos
|
|
|
25
211
|
todos completions fish > ~/.config/fish/completions/todos.fish
|
|
26
212
|
```
|
|
27
213
|
|
|
214
|
+
`--help`, `manual` and the completions all derive from the same tree, and that
|
|
215
|
+
tree is filtered by the resolved route: the default posture advertises the
|
|
216
|
+
commands that can run against the hosted surface, and `HASNA_TODOS_LOCAL=1`
|
|
217
|
+
advertises the full on-box set. See
|
|
218
|
+
[Upgrading From 0.15.52](#upgrading-from-01552) and
|
|
219
|
+
`apps/todos/docs/cli-help.md`.
|
|
220
|
+
|
|
28
221
|
Print the local CLI manual when you need install/update commands, examples,
|
|
29
222
|
JSON output contracts, error behavior, and the command catalog:
|
|
30
223
|
|
|
@@ -464,7 +657,7 @@ OpenLoops updates those pointers after admission or evaluator progress:
|
|
|
464
657
|
todos task workflow-pointers <task-id> \
|
|
465
658
|
--invocation <workflow-invocation-id> \
|
|
466
659
|
--run <workflow-run-id> \
|
|
467
|
-
--manifest
|
|
660
|
+
--manifest ~/.hasna/loops/runs/<project>/<subject>/<run>/manifest.json \
|
|
468
661
|
--state working \
|
|
469
662
|
--json
|
|
470
663
|
```
|
|
@@ -700,34 +893,60 @@ MCP clients get the same local coordination through `claim_next_task`,
|
|
|
700
893
|
`claim_next_task` can opt into stale recovery with `steal_stale` and
|
|
701
894
|
`stale_minutes`.
|
|
702
895
|
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
896
|
+
`get_stale_tasks` (and the other MCP tools that read the on-box store) require
|
|
897
|
+
the deliberate local opt-in: start the MCP server with `HASNA_TODOS_LOCAL=1`, or
|
|
898
|
+
the call fails on the default posture with the typed
|
|
899
|
+
`API_DATABASE_FALLBACK_FORBIDDEN` refusal. See
|
|
900
|
+
[Upgrading From 0.15.52](#upgrading-from-01552) for the affected families and
|
|
901
|
+
the one case where the opt-in is ignored.
|
|
902
|
+
|
|
903
|
+
## Plan Templates
|
|
904
|
+
|
|
905
|
+
The package ships a marketplace-free template library for bug fixes, feature
|
|
906
|
+
implementation, security review, releases, migrations, incidents, docs
|
|
907
|
+
refreshes, QA, and open source package bootstraps. Templates can create one
|
|
908
|
+
task or a full ordered plan with dependencies, variables, priorities, tags, and
|
|
909
|
+
descriptions.
|
|
910
|
+
|
|
911
|
+
Two surfaces are involved, and they are not the same store:
|
|
912
|
+
|
|
913
|
+
- `todos template-library` renders the library bundled in the package. It is
|
|
914
|
+
credential-free and never opens a database, so it works offline:
|
|
915
|
+
|
|
916
|
+
```bash
|
|
917
|
+
todos template-library --json
|
|
918
|
+
todos template-library --write .todos/templates
|
|
919
|
+
```
|
|
920
|
+
|
|
921
|
+
- The remaining template commands are served by the authenticated shared API.
|
|
922
|
+
`todos template-init`, `todos template-preview`, `todos templates --use`,
|
|
923
|
+
`todos template-export`, `todos template-import` and `todos template-history`
|
|
924
|
+
require `HASNA_TODOS_API_URL` and `HASNA_TODOS_API_KEY` (or saved account
|
|
925
|
+
credentials) and refuse an on-box database selection before startup:
|
|
926
|
+
|
|
927
|
+
```bash
|
|
928
|
+
todos template-init
|
|
929
|
+
todos template-preview <template-id> --var name=api
|
|
930
|
+
todos templates --use <template-id> --var name=api
|
|
931
|
+
todos template-export <template-id> > plan-template.json
|
|
932
|
+
todos template-import plan-template.json
|
|
933
|
+
```
|
|
720
934
|
|
|
721
935
|
`todos template-library --write` writes editable JSON files that use the same
|
|
722
936
|
shape as `todos template-import`, so teams can fork a built-in workflow without
|
|
723
937
|
contacting any hosted marketplace. `todos templates --use` creates every task in
|
|
724
|
-
a multi-task template and wires its
|
|
725
|
-
immediately run `todos ready`, `todos blocked`, or
|
|
726
|
-
`todos deps <task-id> --graph` against the generated plan.
|
|
727
|
-
|
|
728
|
-
|
|
938
|
+
a multi-task template and wires its dependency graph in the shared account, so
|
|
939
|
+
agents can immediately run `todos ready`, `todos blocked`, or
|
|
940
|
+
`todos deps <task-id> --graph` against the generated plan. MCP clients reach the
|
|
941
|
+
bundled library through `list_template_library` and `write_template_library`,
|
|
942
|
+
which are credential-free and open no store. The remaining MCP template tools —
|
|
943
|
+
`init_templates`, `create_template`, `list_templates`,
|
|
729
944
|
`create_task_from_template`, `preview_template`, `export_template`, and
|
|
730
|
-
`import_template
|
|
945
|
+
`import_template` — read the on-box SQLite store and are not served on the
|
|
946
|
+
default posture: start the MCP server with `HASNA_TODOS_LOCAL=1` to use them.
|
|
947
|
+
That opt-in is ignored when the environment sets `HASNA_TODOS_API_KEY` or
|
|
948
|
+
`HASNA_TODOS_API_URL`, which leaves these tools unreachable (see
|
|
949
|
+
[Upgrading From 0.15.52](#upgrading-from-01552)).
|
|
731
950
|
|
|
732
951
|
## Moving Tasks Between Plans
|
|
733
952
|
|
|
@@ -748,8 +967,21 @@ todos plans --show <plan-id> # verify the plan's task set
|
|
|
748
967
|
|
|
749
968
|
Plan references accept a UUID, a plan slug, a plan name, or a unique id prefix.
|
|
750
969
|
An unknown or ambiguous reference exits non-zero before any task is modified.
|
|
751
|
-
|
|
752
|
-
SQLite file, or the shared dataset behind a hosted
|
|
970
|
+
`todos add`, `todos update` and `todos bulk` follow whichever store the CLI is
|
|
971
|
+
configured for — the local SQLite file, or the shared dataset behind a hosted
|
|
972
|
+
`/v1` authority. `todos plans` does not: it is served by the authenticated
|
|
973
|
+
shared API only and refuses `HASNA_TODOS_DB_PATH`, `TODOS_DB_PATH`,
|
|
974
|
+
`HASNA_TODOS_LOCAL` and `TODOS_LOCAL` before startup.
|
|
975
|
+
|
|
976
|
+
`todos plans --artifact <id-or-slug>` and `--write-artifacts` compare local
|
|
977
|
+
Markdown against the shared plan record and therefore require an explicit
|
|
978
|
+
`--artifact-root <directory>` — a trusted local project directory the caller
|
|
979
|
+
chooses. Before 0.16.0 both options defaulted to the project path recorded in
|
|
980
|
+
local SQLite, so the older form `todos plans --artifact <id-or-slug> --json`
|
|
981
|
+
still appears in notes from that release; it now exits non-zero with
|
|
982
|
+
`--artifact-root is required`. The files stay under
|
|
983
|
+
`<artifact-root>/.hasna/todos/plans/<project-id>/`, and a path returned by the
|
|
984
|
+
API is never used.
|
|
753
985
|
|
|
754
986
|
## Local Git Traceability
|
|
755
987
|
|
|
@@ -1480,7 +1712,7 @@ todos-mcp --port 8881 # explicit HTTP port (default MCP HTTP port is 888
|
|
|
1480
1712
|
|
|
1481
1713
|
- Bind: `127.0.0.1` only
|
|
1482
1714
|
- Health: `GET /health` → `{"status":"ok","name":"todos"}`
|
|
1483
|
-
- MCP: `POST /mcp` on the same server as the
|
|
1715
|
+
- MCP: `POST /mcp` on the same server as the REST API (Streamable HTTP, stateless)
|
|
1484
1716
|
|
|
1485
1717
|
The MCP server defaults to the token-saving `TODOS_PROFILE=minimal` profile.
|
|
1486
1718
|
Use `TODOS_PROFILE=standard` for broader task/project/resource tools, or
|
|
@@ -1502,7 +1734,7 @@ refuses to start unless one of the following is true:
|
|
|
1502
1734
|
|
|
1503
1735
|
| Configuration | Result |
|
|
1504
1736
|
| --- | --- |
|
|
1505
|
-
| `
|
|
1737
|
+
| `HASNA_TODOS_SERVER_API_KEY=<key>` (or `--api-key <key>`) | `/api/*` + `/mcp` require the key |
|
|
1506
1738
|
| at least one `todos api-keys create` key exists | `/api/*` + `/mcp` require a key |
|
|
1507
1739
|
| `--allow-anonymous` **and** a loopback bind | anonymous, loopback peers only (local dev) |
|
|
1508
1740
|
| a cloud `DATABASE_URL` is configured (hosted `/v1` deployment) | `/api/*` + `/mcp` are **not served**; `/v1` stays authenticated |
|
|
@@ -1510,7 +1742,7 @@ refuses to start unless one of the following is true:
|
|
|
1510
1742
|
|
|
1511
1743
|
```bash
|
|
1512
1744
|
todos api-keys create "My app" # then send x-api-key / Authorization: Bearer
|
|
1513
|
-
|
|
1745
|
+
HASNA_TODOS_SERVER_API_KEY=<key> todos-serve --host 0.0.0.0
|
|
1514
1746
|
todos serve --allow-anonymous # local dev only; refused for a non-loopback --host
|
|
1515
1747
|
```
|
|
1516
1748
|
|
|
@@ -1518,16 +1750,59 @@ todos serve --allow-anonymous # local dev only; refused for a non-loop
|
|
|
1518
1750
|
bind host, and even when enabled it only serves requests whose transport peer is
|
|
1519
1751
|
itself loopback — so it can never publish an anonymous task read/write plane
|
|
1520
1752
|
off-box. `todos-mcp --http` sets it implicitly because that transport is pinned to
|
|
1521
|
-
`127.0.0.1`; set `
|
|
1522
|
-
credential there too.
|
|
1523
|
-
|
|
1524
|
-
Pass the generated key from your app as `x-api-key` or
|
|
1525
|
-
|
|
1753
|
+
`127.0.0.1`; set `HASNA_TODOS_SERVER_API_KEY` (and send it from your MCP client)
|
|
1754
|
+
to require a credential there too.
|
|
1755
|
+
|
|
1756
|
+
Pass the generated key from your app as `x-api-key` or `Authorization: Bearer`.
|
|
1757
|
+
|
|
1758
|
+
`HASNA_TODOS_SERVER_API_KEY` is the **server's** own variable — the credential
|
|
1759
|
+
`todos-serve` demands from its callers. It is deliberately NOT one of the client
|
|
1760
|
+
credential names: `HASNA_TODOS_API_KEY` is how a client finds a key (the resolver
|
|
1761
|
+
documented under [Credentials and Service Authority](#credentials-and-service-authority)),
|
|
1762
|
+
and a fleet client key exported on a workstation must never silently become the
|
|
1763
|
+
local server's accepted key — one name cannot play both roles on opposite sides
|
|
1764
|
+
of the same trust boundary. `todos serve` prints one line at startup naming which
|
|
1765
|
+
variable supplied its accepted key. For one release the client names
|
|
1766
|
+
(`HASNA_TODOS_API_KEY` / `TODOS_API_KEY`) are still accepted as a documented
|
|
1767
|
+
fallback so an env written before 2026-09-05 keeps working; the startup line
|
|
1768
|
+
flags the deprecated spelling so operators can move the value.
|
|
1526
1769
|
|
|
1527
1770
|
Always-on / hosted deployments should use the versioned `/v1` API, which
|
|
1528
1771
|
authenticates independently against the cloud key store. `/health`, `/ready`,
|
|
1529
1772
|
`/version` and `/openapi.json` are the only routes that are public by design.
|
|
1530
1773
|
|
|
1774
|
+
### Hosted `/v1` writes need a neutral `User-Agent`
|
|
1775
|
+
|
|
1776
|
+
The hosted `/v1` plane is served through a Cloudflare-protected gateway that
|
|
1777
|
+
rejects automation-library default User-Agents. Python's `urllib` sends
|
|
1778
|
+
`Python-urllib/3.x` and `requests` sends `python-requests/x.y`; the gateway
|
|
1779
|
+
answers those with HTTP 403 (Cloudflare error 1010, browser-signature rule)
|
|
1780
|
+
even though the identical request from `curl` succeeds with the same headers
|
|
1781
|
+
and key. The origin is never reached, so no code change on the API server can
|
|
1782
|
+
help — the caller must present a non-python `User-Agent` on every request
|
|
1783
|
+
through the gateway:
|
|
1784
|
+
|
|
1785
|
+
```python
|
|
1786
|
+
import json
|
|
1787
|
+
import urllib.request
|
|
1788
|
+
|
|
1789
|
+
req = urllib.request.Request(
|
|
1790
|
+
"https://api.hasna.com/todos/v1/tasks",
|
|
1791
|
+
data=json.dumps({"title": "ship the parser"}).encode(),
|
|
1792
|
+
method="POST",
|
|
1793
|
+
headers={
|
|
1794
|
+
"x-api-key": "<your-key>", # or Authorization: Bearer <your-key>
|
|
1795
|
+
"content-type": "application/json",
|
|
1796
|
+
"user-agent": "hasna-todos/1.0", # never the urllib default
|
|
1797
|
+
},
|
|
1798
|
+
)
|
|
1799
|
+
urllib.request.urlopen(req) # 201, not 403 Cloudflare 1010
|
|
1800
|
+
```
|
|
1801
|
+
|
|
1802
|
+
The `requests` equivalent sets the same `user-agent` header on the request or
|
|
1803
|
+
session; a fixed neutral product string works for both reads and writes. Do not
|
|
1804
|
+
rely on the library default User-Agent.
|
|
1805
|
+
|
|
1531
1806
|
Agent callers can trim REST responses with field selectors:
|
|
1532
1807
|
|
|
1533
1808
|
```bash
|
|
@@ -1542,9 +1817,11 @@ Data is stored in `~/.hasna/todos/`.
|
|
|
1542
1817
|
|
|
1543
1818
|
## Local-Only Security Boundary
|
|
1544
1819
|
|
|
1545
|
-
`@hasna/todos` is an open source
|
|
1546
|
-
and
|
|
1547
|
-
|
|
1820
|
+
`@hasna/todos` is an open source package with a local-first storage boundary.
|
|
1821
|
+
The CLI, MCP server, and SDK read and write on-box state under the explicit
|
|
1822
|
+
local opt-in (`HASNA_TODOS_LOCAL=1`) and otherwise talk only to the Todos `/v1`
|
|
1823
|
+
authority the operator configured. They never require a billing provider, a
|
|
1824
|
+
SaaS account, or a remote model provider.
|
|
1548
1825
|
|
|
1549
1826
|
Release checks enforce that boundary before publishing:
|
|
1550
1827
|
|
package/dist/ai-tools.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-tools.d.ts","sourceRoot":"","sources":["../src/ai-tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,OAAO,KAAK,EACV,iBAAiB,EAIjB,wBAAwB,EACzB,MAAM,SAAS,CAAC;AAWjB,OAAO,EACL,2BAA2B,EAC3B,2BAA2B,GAC5B,MAAM,SAAS,CAAC;AAYjB,OAAO,EAIL,KAAK,aAAa,EACnB,MAAM,0BAA0B,CAAC;AAIlC,OAAO,EAIL,KAAK,IAAI,EACT,KAAK,OAAO,EACZ,KAAK,IAAI,EACT,KAAK,UAAU,EACf,KAAK,eAAe,EACrB,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"ai-tools.d.ts","sourceRoot":"","sources":["../src/ai-tools.ts"],"names":[],"mappings":"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"}
|
package/dist/ai.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai.d.ts","sourceRoot":"","sources":["../src/ai.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ai.d.ts","sourceRoot":"","sources":["../src/ai.ts"],"names":[],"mappings":"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"}
|