@hasna/todos 0.15.52 → 0.17.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.
Files changed (206) hide show
  1. package/CHANGELOG.md +1993 -0
  2. package/README.md +356 -42
  3. package/dist/ai-tools.d.ts.map +1 -1
  4. package/dist/ai.d.ts.map +1 -1
  5. package/dist/cli/cloud-router.d.ts +162 -72
  6. package/dist/cli/cloud-router.d.ts.map +1 -1
  7. package/dist/cli/commands/agent-commands.d.ts.map +1 -1
  8. package/dist/cli/commands/config-serve-commands.d.ts.map +1 -1
  9. package/dist/cli/commands/delegate.d.ts.map +1 -1
  10. package/dist/cli/commands/environment-snapshots.d.ts.map +1 -1
  11. package/dist/cli/commands/machines-api.d.ts +4 -0
  12. package/dist/cli/commands/machines-api.d.ts.map +1 -0
  13. package/dist/cli/commands/machines.d.ts.map +1 -1
  14. package/dist/cli/commands/mcp-hooks-commands.d.ts.map +1 -1
  15. package/dist/cli/commands/plan-commands.d.ts +3 -0
  16. package/dist/cli/commands/plan-commands.d.ts.map +1 -0
  17. package/dist/cli/commands/plan-template-commands.d.ts.map +1 -1
  18. package/dist/cli/commands/pr-group-commands.d.ts.map +1 -1
  19. package/dist/cli/commands/project-commands.d.ts.map +1 -1
  20. package/dist/cli/commands/query-commands.d.ts.map +1 -1
  21. package/dist/cli/commands/storage-commands.d.ts.map +1 -1
  22. package/dist/cli/commands/task-list-commands.d.ts +3 -0
  23. package/dist/cli/commands/task-list-commands.d.ts.map +1 -0
  24. package/dist/cli/commands/template-commands.d.ts +3 -0
  25. package/dist/cli/commands/template-commands.d.ts.map +1 -0
  26. package/dist/cli/helpers.d.ts.map +1 -1
  27. package/dist/cli/index.js +22072 -15949
  28. package/dist/cli/machine-api.d.ts +7 -0
  29. package/dist/cli/machine-api.d.ts.map +1 -0
  30. package/dist/cli/plan-read-api.d.ts +6 -0
  31. package/dist/cli/plan-read-api.d.ts.map +1 -0
  32. package/dist/cli/project-api.d.ts +119 -0
  33. package/dist/cli/project-api.d.ts.map +1 -0
  34. package/dist/cli/stage-a.d.ts +25 -5
  35. package/dist/cli/stage-a.d.ts.map +1 -1
  36. package/dist/cli/task-query-api.d.ts +21 -0
  37. package/dist/cli/task-query-api.d.ts.map +1 -0
  38. package/dist/cli/template-api.d.ts +7 -0
  39. package/dist/cli/template-api.d.ts.map +1 -0
  40. package/dist/cli/template-remote.d.ts +90 -0
  41. package/dist/cli/template-remote.d.ts.map +1 -0
  42. package/dist/cli-mcp-parity.d.ts.map +1 -1
  43. package/dist/contracts.js +908 -291
  44. package/dist/db/agents.d.ts +8 -0
  45. package/dist/db/agents.d.ts.map +1 -1
  46. package/dist/db/builtin-templates.d.ts +2 -33
  47. package/dist/db/builtin-templates.d.ts.map +1 -1
  48. package/dist/db/database.d.ts +6 -0
  49. package/dist/db/database.d.ts.map +1 -1
  50. package/dist/db/handoffs.d.ts.map +1 -1
  51. package/dist/db/identity-mapping.d.ts +25 -0
  52. package/dist/db/identity-mapping.d.ts.map +1 -1
  53. package/dist/db/machines.d.ts.map +1 -1
  54. package/dist/db/migrations.d.ts.map +1 -1
  55. package/dist/db/plans.d.ts.map +1 -1
  56. package/dist/db/retrospectives.d.ts.map +1 -1
  57. package/dist/db/schema.d.ts.map +1 -1
  58. package/dist/db/task-crud.d.ts.map +1 -1
  59. package/dist/db/task-lists.d.ts.map +1 -1
  60. package/dist/db/task-runs.d.ts +2 -0
  61. package/dist/db/task-runs.d.ts.map +1 -1
  62. package/dist/index.d.ts +2 -2
  63. package/dist/index.d.ts.map +1 -1
  64. package/dist/index.js +4341 -1756
  65. package/dist/lib/assignee-validation.d.ts.map +1 -1
  66. package/dist/lib/builtin-template-library.d.ts +32 -0
  67. package/dist/lib/builtin-template-library.d.ts.map +1 -0
  68. package/dist/lib/cli-reference.d.ts.map +1 -1
  69. package/dist/lib/config.d.ts +10 -13
  70. package/dist/lib/config.d.ts.map +1 -1
  71. package/dist/lib/db-backup.d.ts +1 -1
  72. package/dist/lib/db-backup.d.ts.map +1 -1
  73. package/dist/lib/env.d.ts +18 -0
  74. package/dist/lib/env.d.ts.map +1 -0
  75. package/dist/lib/environment-snapshots.d.ts.map +1 -1
  76. package/dist/lib/feature-manifest.d.ts.map +1 -1
  77. package/dist/lib/gatherer.d.ts.map +1 -1
  78. package/dist/lib/headless-boundaries.d.ts +4 -3
  79. package/dist/lib/headless-boundaries.d.ts.map +1 -1
  80. package/dist/lib/local-encryption.d.ts +12 -0
  81. package/dist/lib/local-encryption.d.ts.map +1 -1
  82. package/dist/lib/local-opt-in.d.ts +104 -0
  83. package/dist/lib/local-opt-in.d.ts.map +1 -0
  84. package/dist/lib/paths.d.ts +20 -1
  85. package/dist/lib/paths.d.ts.map +1 -1
  86. package/dist/lib/plan-artifacts.d.ts +1 -0
  87. package/dist/lib/plan-artifacts.d.ts.map +1 -1
  88. package/dist/lib/plan-client-boundary.d.ts +2 -0
  89. package/dist/lib/plan-client-boundary.d.ts.map +1 -0
  90. package/dist/lib/plan-schedule.d.ts +6 -0
  91. package/dist/lib/plan-schedule.d.ts.map +1 -0
  92. package/dist/lib/project-panel.d.ts +6 -0
  93. package/dist/lib/project-panel.d.ts.map +1 -1
  94. package/dist/lib/project-receipt.d.ts +3 -0
  95. package/dist/lib/project-receipt.d.ts.map +1 -0
  96. package/dist/lib/sandbox-profiles.d.ts.map +1 -1
  97. package/dist/lib/shared-plan-artifacts.d.ts +14 -0
  98. package/dist/lib/shared-plan-artifacts.d.ts.map +1 -0
  99. package/dist/lib/sync.d.ts.map +1 -1
  100. package/dist/lib/task-list-client-boundary.d.ts +3 -0
  101. package/dist/lib/task-list-client-boundary.d.ts.map +1 -0
  102. package/dist/lib/task-routing.d.ts.map +1 -1
  103. package/dist/lib/template-client-boundary.d.ts +2 -0
  104. package/dist/lib/template-client-boundary.d.ts.map +1 -0
  105. package/dist/mcp/index.d.ts +53 -0
  106. package/dist/mcp/index.d.ts.map +1 -1
  107. package/dist/mcp/index.js +50124 -60838
  108. package/dist/mcp/plan-api.d.ts +6 -0
  109. package/dist/mcp/plan-api.d.ts.map +1 -0
  110. package/dist/mcp/remote-authority.d.ts +49 -0
  111. package/dist/mcp/remote-authority.d.ts.map +1 -0
  112. package/dist/mcp/task-coordination-api.d.ts +15 -0
  113. package/dist/mcp/task-coordination-api.d.ts.map +1 -0
  114. package/dist/mcp/task-list-api.d.ts +8 -0
  115. package/dist/mcp/task-list-api.d.ts.map +1 -0
  116. package/dist/mcp/token-utils.d.ts.map +1 -1
  117. package/dist/mcp/tools/agents.d.ts.map +1 -1
  118. package/dist/mcp/tools/environment-snapshots.d.ts.map +1 -1
  119. package/dist/mcp/tools/machines.d.ts.map +1 -1
  120. package/dist/mcp/tools/task-adv-tools.d.ts.map +1 -1
  121. package/dist/mcp/tools/task-auto-tools.d.ts.map +1 -1
  122. package/dist/mcp/tools/task-crud.d.ts.map +1 -1
  123. package/dist/mcp/tools/task-meta-tools.d.ts.map +1 -1
  124. package/dist/mcp/tools/task-project-tools.d.ts.map +1 -1
  125. package/dist/mcp/tools/task-resources.d.ts.map +1 -1
  126. package/dist/mcp/tools/templates.d.ts.map +1 -1
  127. package/dist/mcp.d.ts +2 -2
  128. package/dist/mcp.d.ts.map +1 -1
  129. package/dist/mcp.js +45 -19
  130. package/dist/project-registration.js +3349 -645
  131. package/dist/registry.js +909 -292
  132. package/dist/release-provenance.json +6 -6
  133. package/dist/sdk/client.d.ts +53 -4
  134. package/dist/sdk/client.d.ts.map +1 -1
  135. package/dist/sdk/index.d.ts +2 -0
  136. package/dist/sdk/index.d.ts.map +1 -1
  137. package/dist/sdk/index.js +1253 -1088
  138. package/dist/sdk/resolve.d.ts +101 -0
  139. package/dist/sdk/resolve.d.ts.map +1 -0
  140. package/dist/sdk/types.d.ts +17 -2
  141. package/dist/sdk/types.d.ts.map +1 -1
  142. package/dist/sdk/v1.generated.d.ts +334 -3
  143. package/dist/sdk/v1.generated.d.ts.map +1 -1
  144. package/dist/server/auth-posture.d.ts +66 -7
  145. package/dist/server/auth-posture.d.ts.map +1 -1
  146. package/dist/server/client-ip.d.ts +39 -0
  147. package/dist/server/client-ip.d.ts.map +1 -0
  148. package/dist/server/cloud.d.ts +2 -1
  149. package/dist/server/cloud.d.ts.map +1 -1
  150. package/dist/server/index.d.ts +1 -1
  151. package/dist/server/index.js +24758 -16687
  152. package/dist/server/openapi.d.ts +2514 -469
  153. package/dist/server/openapi.d.ts.map +1 -1
  154. package/dist/server/port.d.ts +2 -2
  155. package/dist/server/port.d.ts.map +1 -1
  156. package/dist/server/rate-limit-config.d.ts +6 -0
  157. package/dist/server/rate-limit-config.d.ts.map +1 -0
  158. package/dist/server/routes.d.ts +3 -6
  159. package/dist/server/routes.d.ts.map +1 -1
  160. package/dist/server/serve.d.ts +2 -6
  161. package/dist/server/serve.d.ts.map +1 -1
  162. package/dist/server/v1.d.ts +3 -1
  163. package/dist/server/v1.d.ts.map +1 -1
  164. package/dist/storage/atomic-project-migration.d.ts +53 -0
  165. package/dist/storage/atomic-project-migration.d.ts.map +1 -0
  166. package/dist/storage/index.d.ts +4 -2
  167. package/dist/storage/index.d.ts.map +1 -1
  168. package/dist/storage/interfaces.d.ts +135 -3
  169. package/dist/storage/interfaces.d.ts.map +1 -1
  170. package/dist/storage/local-sqlite.d.ts.map +1 -1
  171. package/dist/storage/machine-registry.d.ts +36 -0
  172. package/dist/storage/machine-registry.d.ts.map +1 -0
  173. package/dist/storage/postgres-adapter.d.ts.map +1 -1
  174. package/dist/storage/postgres-sync.d.ts +2 -2
  175. package/dist/storage/postgres-sync.d.ts.map +1 -1
  176. package/dist/storage/run-artifact-creation-upload.d.ts +50 -0
  177. package/dist/storage/run-artifact-creation-upload.d.ts.map +1 -0
  178. package/dist/storage/s3-artifact-sync.d.ts +18 -0
  179. package/dist/storage/s3-artifact-sync.d.ts.map +1 -1
  180. package/dist/storage/sqlite-snapshot.d.ts +2 -0
  181. package/dist/storage/sqlite-snapshot.d.ts.map +1 -1
  182. package/dist/storage.d.ts +2 -2
  183. package/dist/storage.d.ts.map +1 -1
  184. package/dist/storage.js +3154 -350
  185. package/dist/task-manifest/postgres.d.ts +1 -1
  186. package/dist/task-manifest/sqlite.d.ts +1 -1
  187. package/dist/task-manifest.js +250 -73
  188. package/dist/task-subtree-transfer.js +198 -4
  189. package/dist/testing.d.ts +90 -29
  190. package/dist/testing.d.ts.map +1 -1
  191. package/dist/testing.js +34 -10
  192. package/dist/types/index.d.ts +43 -4
  193. package/dist/types/index.d.ts.map +1 -1
  194. package/docs/PLAN_API.md +93 -0
  195. package/docs/TASK_LIST_API.md +58 -0
  196. package/docs/TASK_QUERY_API.md +14 -0
  197. package/docs/TEMPLATE_API.md +18 -0
  198. package/docs/native-storage.md +405 -0
  199. package/package.json +18 -15
  200. package/postinstall.js +52 -1
  201. package/dashboard/dist/assets/index-BNQ4gJua.js +0 -342
  202. package/dashboard/dist/assets/index-DjzvHUWt.css +0 -1
  203. package/dashboard/dist/index.html +0 -13
  204. package/dashboard/dist/logo.jpg +0 -0
  205. package/dist/mcp/tools/code-tools.d.ts +0 -15
  206. package/dist/mcp/tools/code-tools.d.ts.map +0 -1
package/README.md CHANGED
@@ -11,6 +11,223 @@ 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
+ ## HTTP request budget
85
+
86
+ `todos-serve` defaults to **12,000 requests per minute per network peer**, per
87
+ server process. Set `HASNA_TODOS_RATE_LIMIT_MAX` to an integer from `1` to
88
+ `1000000` to choose a different finite budget. The legacy `TODOS_RATE_LIMIT_MAX`
89
+ variable still works; the canonical variable takes precedence when both are set.
90
+ An absent or blank value uses the default. Invalid values fail startup before
91
+ the database is opened or the server listens.
92
+
93
+ The fixed one-minute window covers all routes, including health checks and
94
+ unauthenticated requests, except CORS `OPTIONS`. Exceeding the budget returns
95
+ HTTP `429` with `Retry-After` in seconds. Authentication requirements stay the
96
+ same. This setting is a request allowance, not a throughput guarantee; size a
97
+ deployment using observed latency, database load, and its gateway limits.
98
+
99
+ Behind a reverse proxy, callers share the proxy's bucket unless the operator
100
+ has explicitly configured trusted forwarding. Keep proxy trust off for direct
101
+ traffic. Only enable `TODOS_TRUST_PROXY=1` when network rules restrict access to
102
+ proxies that overwrite forwarding headers; `TODOS_TRUSTED_PROXIES` helps resolve
103
+ the forwarded chain and does not itself restrict which sockets may connect.
104
+
105
+ ## Credentials and Service Authority
106
+
107
+ The CLI, the MCP server and the `./sdk` client all resolve their credential
108
+ through one resolver — the client chain in `@hasna/contracts` — so there is
109
+ exactly one place to put a key and exactly one precedence to learn. Resolution
110
+ happens **on every call**, never once at process start, so rotating a key heals
111
+ a long-running shell, MCP server or agent without restarting it: a `TodosClient`
112
+ built at startup and held for hours re-reads the Keychain and the credentials
113
+ file on each request and picks up the new key on the next one.
114
+
115
+ Two things are deliberately *not* re-resolved. An explicit `apiKey` argument is
116
+ tier 1 — a pin the caller owns — and the **service authority is fixed for the
117
+ life of a client**, because a credential written for one authority must never be
118
+ sent to another; build a new client to point somewhere else.
119
+
120
+ That second rule binds the credential too. `new TodosClient({ baseUrl })` with
121
+ no `apiKey` pins the authority *and* sends no credential at all: the key in your
122
+ Keychain or `~/.hasna/todos/config/credentials` was written for the fleet, so it
123
+ is never re-resolved onto a URL you named — a local `todos-serve`, a staging
124
+ box, a test double. Pass `apiKey` alongside `baseUrl` when that authority is
125
+ supposed to get a credential. Per-call re-resolution applies to a client that
126
+ resolved its own hosted authority, which is where rotation matters.
127
+
128
+ **Credential, highest to lowest:**
129
+
130
+ | # | Tier | Where |
131
+ | --- | --- | --- |
132
+ | 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) |
133
+ | 2 | deliberate env pointer | `HASNA_TODOS_API_KEY_OVERRIDE`, `HASNA_PROFILE`, `HASNA_TODOS_API_KEY_REF` (a secrets-vault item key, never a value) |
134
+ | 3 | macOS Keychain | generic password `hasna.credentials.todos.api-key`, account `HASNA_STATION` → `hostname -s` → `USER` |
135
+ | 4 | disk | `~/.hasna/todos/config/credentials`, owner-only `0400`/`0600` |
136
+ | 5 | environment | `HASNA_TODOS_API_KEY` |
137
+
138
+ Tier 3 is account-scoped, not host-scoped: the item is looked up under the
139
+ station name, so a key stored for one station is invisible on another. Set
140
+ `HASNA_STATION` explicitly (a wrapper, a launchd plist, a CI job) when the
141
+ account name is not the first of `hostname -s` / `USER`; with none of the three
142
+ matching the item's account, the lookup misses and the run fails closed with
143
+ `REMOTE_API_CONFIG_MISSING` rather than silently resolving something else.
144
+
145
+ Tiers 1 and 2 are *deliberate*: if one is set and cannot be honoured, the run
146
+ fails — it never quietly authenticates as a different principal. Tier 5 is a
147
+ first-class tier, not a deprecated one (a wrapper that injects the key per
148
+ process is correct), and it sits **below** disk so a rotated on-disk key beats a
149
+ stale `export` in an old shell. Nothing is read from `~/.hasna/fleet-env`,
150
+ `~/.hasna/cloud`, `~/.config/hasna`, `$XDG_CONFIG_HOME`, or `~/.todos/config.json`.
151
+
152
+ **Service authority**, same shape:
153
+
154
+ `HASNA_TODOS_API_URL` → the Keychain `hasna.credentials.todos.api-url` item →
155
+ `~/.hasna/todos/config/credentials` → the fleet gateway
156
+ `https://api.hasna.com/todos`. Configure the URL only to point somewhere else;
157
+ the client appends `/v1` itself, and sources that disagree are refused rather
158
+ than silently preferred. `HASNA_HOME` and `HASNA_CONFIG_HOME` move the disk
159
+ root; the older unprefixed spellings of these two variables (without the
160
+ `HASNA_` prefix) still work as a silent fallback for one release, but the
161
+ `HASNA_TODOS_*` names are canonical and are what every diagnostic names.
162
+
163
+ The credentials file is a plain env file, and its permissions are enforced — a
164
+ group- or world-readable one is refused rather than read:
165
+
166
+ ```bash
167
+ install -m 700 -d ~/.hasna/todos/config
168
+ printf 'HASNA_TODOS_API_KEY=%s\n' "$KEY" > ~/.hasna/todos/config/credentials
169
+ chmod 600 ~/.hasna/todos/config/credentials
170
+ ```
171
+
172
+ **Hosted mode fails closed.** With no credential the CLI exits non-zero
173
+ (`REMOTE_API_CONFIG_MISSING`) and names the tiers it consulted; the stdio MCP
174
+ server exits the same way before answering `initialize`. Once a hosted
175
+ authority resolves, each call fails instead of serving local rows — the
176
+ credential-gated tools with the typed `REMOTE_API_CONFIG_MISSING` and the
177
+ on-box tools with the typed `REMOTE_COMMAND_UNSUPPORTED` (or
178
+ `API_DATABASE_FALLBACK_FORBIDDEN` on surfaces without a startup refusal), both
179
+ described under
180
+ [Upgrading From 0.15.52](#upgrading-from-01552). Neither surface falls back to
181
+ the local SQLite store, because serving local rows while authentication is broken
182
+ prints healthy output for a broken system.
183
+
184
+ The `./sdk` surface fails closed the same way: with nothing resolved,
185
+ `new TodosClient()` and `createTodosV1Client()` both throw
186
+ `TODOS_CREDENTIAL_MISSING` naming every tier they consulted. `TodosClient` can
187
+ speak to the on-box `todos-serve` at `http://localhost:19427` — that is a real
188
+ mode for it — but only under the explicit opt-in below, never as a fallback.
189
+ Every other refusal is a throw on all three surfaces too — aliases that
190
+ disagree, an unreadable credential file, a URL with no key — because those are
191
+ misconfigurations, not an absence of configuration.
192
+
193
+ A **declared-but-blank** authority variable is deliberately *not* one of those
194
+ refusals. At the Todos seam a blank has always meant "unset" — helpers in the
195
+ wild blank rather than delete — so every authority variable that is declared
196
+ but empty is removed before the resolver runs. `HASNA_TODOS_API_KEY=` therefore
197
+ resolves the machine's ambient Keychain item exactly as an unset variable does:
198
+ it neither configures a credential nor withholds one. To force the on-box store
199
+ from a wrapper, set `HASNA_TODOS_LOCAL=1` — a blank authority variable counts as
200
+ absent for the opt-in too, so the opt-in is still honoured when
201
+ `HASNA_TODOS_API_KEY` is present but empty — instead of blanking a credential
202
+ variable.
203
+
204
+ On the hosted route the MCP server never opens the local store either: the
205
+ tools and `todos://` resources that only exist for the on-box SQLite file
206
+ (dispatch, templates, handoffs, boards, runs, `todos://projects`, …) answer
207
+ `REMOTE_COMMAND_UNSUPPORTED` naming the opt-in, instead of reading an empty
208
+ local file and reporting it as the fleet. Machine and task tools are
209
+ shared-API routed on that route and refuse under their own `REMOTE_API_*`
210
+ code when the authority cannot serve them.
211
+
212
+ **Local mode is deliberate, and it says so.** `@hasna/todos` is usable entirely
213
+ offline against an on-box SQLite store — set `HASNA_TODOS_LOCAL=1` (alias
214
+ `TODOS_LOCAL=1`). It is honoured only when the environment configures no
215
+ authority and no credential, it is answered *before* the resolver runs (so no
216
+ Keychain item and no credential file is read), and every local run prints one
217
+ line on stderr saying it is local.
218
+
219
+ Three command families are exempt from local mode and are shared-API only:
220
+ `todos plans`, `todos task-lists` (aliases `lists`, `tl`) and the template
221
+ commands (`templates`, `template-init`, `template-preview`, `template-export`,
222
+ `template-import`, `template-history`). They refuse `HASNA_TODOS_DB_PATH`,
223
+ `TODOS_DB_PATH`, `HASNA_TODOS_LOCAL` and `TODOS_LOCAL` before startup and need a
224
+ credential. `todos template-library` is the exception on the other side: it
225
+ renders the library bundled in the package and stays credential-free.
226
+
227
+ ```bash
228
+ todos storage status --json # which tier supplied the key, and which URL applied
229
+ ```
230
+
14
231
  ## CLI Usage
15
232
 
16
233
  ```bash
@@ -25,6 +242,13 @@ todos completions zsh > ~/.zsh/completions/_todos
25
242
  todos completions fish > ~/.config/fish/completions/todos.fish
26
243
  ```
27
244
 
245
+ `--help`, `manual` and the completions all derive from the same tree, and that
246
+ tree is filtered by the resolved route: the default posture advertises the
247
+ commands that can run against the hosted surface, and `HASNA_TODOS_LOCAL=1`
248
+ advertises the full on-box set. See
249
+ [Upgrading From 0.15.52](#upgrading-from-01552) and
250
+ `apps/todos/docs/cli-help.md`.
251
+
28
252
  Print the local CLI manual when you need install/update commands, examples,
29
253
  JSON output contracts, error behavior, and the command catalog:
30
254
 
@@ -282,8 +506,10 @@ todos extract-watch . --dry-run --max-runs 1 --json
282
506
  ```
283
507
 
284
508
  Created tasks are tagged with `extracted` and linked back to the source file.
285
- MCP clients can call `extract_todos` and `watch_source_todos` for the same
286
- offline workflow; no hosted code search, hosted sync, or telemetry is used.
509
+ The source index is CLI-only: the former `extract_todos` / `watch_source_todos`
510
+ MCP tools were removed (a filesystem watcher is not an MCP tool call, and the
511
+ scan runs against the local checkout, not the hosted fleet). No hosted code
512
+ search, hosted sync, or telemetry is used.
287
513
 
288
514
  ## Local Editor Integrations
289
515
 
@@ -464,7 +690,7 @@ OpenLoops updates those pointers after admission or evaluator progress:
464
690
  todos task workflow-pointers <task-id> \
465
691
  --invocation <workflow-invocation-id> \
466
692
  --run <workflow-run-id> \
467
- --manifest /home/hasna/.hasna/loops/runs/<project>/<subject>/<run>/manifest.json \
693
+ --manifest ~/.hasna/loops/runs/<project>/<subject>/<run>/manifest.json \
468
694
  --state working \
469
695
  --json
470
696
  ```
@@ -700,34 +926,60 @@ MCP clients get the same local coordination through `claim_next_task`,
700
926
  `claim_next_task` can opt into stale recovery with `steal_stale` and
701
927
  `stale_minutes`.
702
928
 
703
- ## Local Plan Templates
704
-
705
- Reusable plan templates live in the local SQLite database. The package also
706
- ships a marketplace-free local library for bug fixes, feature implementation,
707
- security review, releases, migrations, incidents, docs refreshes, QA, and open
708
- source package bootstraps. Templates can create one task or a full ordered plan
709
- with dependencies, variables, priorities, tags, and descriptions:
710
-
711
- ```bash
712
- todos template-library --json
713
- todos template-library --write .todos/templates
714
- todos template-init
715
- todos template-preview <template-id> --var name=api
716
- todos templates --use <template-id> --var name=api
717
- todos template-export <template-id> > plan-template.json
718
- todos template-import plan-template.json
719
- ```
929
+ `get_stale_tasks` (and the other MCP tools that read the on-box store) require
930
+ the deliberate local opt-in: start the MCP server with `HASNA_TODOS_LOCAL=1`, or
931
+ the call fails on the default posture with the typed
932
+ `API_DATABASE_FALLBACK_FORBIDDEN` refusal. See
933
+ [Upgrading From 0.15.52](#upgrading-from-01552) for the affected families and
934
+ the one case where the opt-in is ignored.
935
+
936
+ ## Plan Templates
937
+
938
+ The package ships a marketplace-free template library for bug fixes, feature
939
+ implementation, security review, releases, migrations, incidents, docs
940
+ refreshes, QA, and open source package bootstraps. Templates can create one
941
+ task or a full ordered plan with dependencies, variables, priorities, tags, and
942
+ descriptions.
943
+
944
+ Two surfaces are involved, and they are not the same store:
945
+
946
+ - `todos template-library` renders the library bundled in the package. It is
947
+ credential-free and never opens a database, so it works offline:
948
+
949
+ ```bash
950
+ todos template-library --json
951
+ todos template-library --write .todos/templates
952
+ ```
953
+
954
+ - The remaining template commands are served by the authenticated shared API.
955
+ `todos template-init`, `todos template-preview`, `todos templates --use`,
956
+ `todos template-export`, `todos template-import` and `todos template-history`
957
+ require `HASNA_TODOS_API_URL` and `HASNA_TODOS_API_KEY` (or saved account
958
+ credentials) and refuse an on-box database selection before startup:
959
+
960
+ ```bash
961
+ todos template-init
962
+ todos template-preview <template-id> --var name=api
963
+ todos templates --use <template-id> --var name=api
964
+ todos template-export <template-id> > plan-template.json
965
+ todos template-import plan-template.json
966
+ ```
720
967
 
721
968
  `todos template-library --write` writes editable JSON files that use the same
722
969
  shape as `todos template-import`, so teams can fork a built-in workflow without
723
970
  contacting any hosted marketplace. `todos templates --use` creates every task in
724
- a multi-task template and wires its local dependency graph, so agents can
725
- immediately run `todos ready`, `todos blocked`, or
726
- `todos deps <task-id> --graph` against the generated plan. The same local-only
727
- workflow is available to MCP clients through `list_template_library`,
728
- `write_template_library`, `init_templates`, `create_template`, `list_templates`,
971
+ a multi-task template and wires its dependency graph in the shared account, so
972
+ agents can immediately run `todos ready`, `todos blocked`, or
973
+ `todos deps <task-id> --graph` against the generated plan. MCP clients reach the
974
+ bundled library through `list_template_library` and `write_template_library`,
975
+ which are credential-free and open no store. The remaining MCP template tools —
976
+ `init_templates`, `create_template`, `list_templates`,
729
977
  `create_task_from_template`, `preview_template`, `export_template`, and
730
- `import_template`.
978
+ `import_template` — read the on-box SQLite store and are not served on the
979
+ default posture: start the MCP server with `HASNA_TODOS_LOCAL=1` to use them.
980
+ That opt-in is ignored when the environment sets `HASNA_TODOS_API_KEY` or
981
+ `HASNA_TODOS_API_URL`, which leaves these tools unreachable (see
982
+ [Upgrading From 0.15.52](#upgrading-from-01552)).
731
983
 
732
984
  ## Moving Tasks Between Plans
733
985
 
@@ -748,8 +1000,21 @@ todos plans --show <plan-id> # verify the plan's task set
748
1000
 
749
1001
  Plan references accept a UUID, a plan slug, a plan name, or a unique id prefix.
750
1002
  An unknown or ambiguous reference exits non-zero before any task is modified.
751
- All of these run against whichever store the CLI is configured for: the local
752
- SQLite file, or the shared dataset behind a hosted `/v1` authority.
1003
+ `todos add`, `todos update` and `todos bulk` follow whichever store the CLI is
1004
+ configured for — the local SQLite file, or the shared dataset behind a hosted
1005
+ `/v1` authority. `todos plans` does not: it is served by the authenticated
1006
+ shared API only and refuses `HASNA_TODOS_DB_PATH`, `TODOS_DB_PATH`,
1007
+ `HASNA_TODOS_LOCAL` and `TODOS_LOCAL` before startup.
1008
+
1009
+ `todos plans --artifact <id-or-slug>` and `--write-artifacts` compare local
1010
+ Markdown against the shared plan record and therefore require an explicit
1011
+ `--artifact-root <directory>` — a trusted local project directory the caller
1012
+ chooses. Before 0.16.0 both options defaulted to the project path recorded in
1013
+ local SQLite, so the older form `todos plans --artifact <id-or-slug> --json`
1014
+ still appears in notes from that release; it now exits non-zero with
1015
+ `--artifact-root is required`. The files stay under
1016
+ `<artifact-root>/.hasna/todos/plans/<project-id>/`, and a path returned by the
1017
+ API is never used.
753
1018
 
754
1019
  ## Local Git Traceability
755
1020
 
@@ -1471,16 +1736,19 @@ todos-mcp
1471
1736
 
1472
1737
  ## HTTP mode
1473
1738
 
1474
- Shared Streamable HTTP transport for long-lived local MCP (stdio remains the default). MCP is mounted on the existing `todos-serve` HTTP server — no second server:
1739
+ The Streamable HTTP transport is served by `todos-serve`, never by `todos-mcp`
1740
+ (stdio only). `todos-mcp --http`, `todos-mcp --port <n>` and `MCP_HTTP=1` are
1741
+ refused with exit code 2 — the listener and its auth posture are server-only
1742
+ code and do not ship in a client binary that MCP clients spawn without a
1743
+ credential. Start the server instead:
1475
1744
 
1476
1745
  ```bash
1477
- todos-mcp --http # starts todos-serve with MCP mounted; or MCP_HTTP=1
1478
- todos-mcp --port 8881 # explicit HTTP port (default MCP HTTP port is 8881)
1746
+ todos-serve # mounts POST /mcp next to /api/*; see "REST API" for the auth gate
1479
1747
  ```
1480
1748
 
1481
- - Bind: `127.0.0.1` only
1749
+ - Bind: `127.0.0.1` by default
1482
1750
  - Health: `GET /health` → `{"status":"ok","name":"todos"}`
1483
- - MCP: `POST /mcp` on the same server as the dashboard/API (Streamable HTTP, stateless)
1751
+ - MCP: `POST /mcp` on the same server as the REST API (Streamable HTTP, stateless)
1484
1752
 
1485
1753
  The MCP server defaults to the token-saving `TODOS_PROFILE=minimal` profile.
1486
1754
  Use `TODOS_PROFILE=standard` for broader task/project/resource tools, or
@@ -1502,7 +1770,7 @@ refuses to start unless one of the following is true:
1502
1770
 
1503
1771
  | Configuration | Result |
1504
1772
  | --- | --- |
1505
- | `TODOS_API_KEY=<key>` (or `--api-key <key>`) | `/api/*` + `/mcp` require the key |
1773
+ | `HASNA_TODOS_SERVER_API_KEY=<key>` (or `--api-key <key>`) | `/api/*` + `/mcp` require the key |
1506
1774
  | at least one `todos api-keys create` key exists | `/api/*` + `/mcp` require a key |
1507
1775
  | `--allow-anonymous` **and** a loopback bind | anonymous, loopback peers only (local dev) |
1508
1776
  | a cloud `DATABASE_URL` is configured (hosted `/v1` deployment) | `/api/*` + `/mcp` are **not served**; `/v1` stays authenticated |
@@ -1510,24 +1778,68 @@ refuses to start unless one of the following is true:
1510
1778
 
1511
1779
  ```bash
1512
1780
  todos api-keys create "My app" # then send x-api-key / Authorization: Bearer
1513
- TODOS_API_KEY=<key> todos-serve --host 0.0.0.0
1781
+ HASNA_TODOS_SERVER_API_KEY=<key> todos-serve --host 0.0.0.0
1514
1782
  todos serve --allow-anonymous # local dev only; refused for a non-loopback --host
1515
1783
  ```
1516
1784
 
1517
1785
  `--allow-anonymous` (or `TODOS_ALLOW_ANONYMOUS=1`) is refused for any non-loopback
1518
1786
  bind host, and even when enabled it only serves requests whose transport peer is
1519
1787
  itself loopback — so it can never publish an anonymous task read/write plane
1520
- off-box. `todos-mcp --http` sets it implicitly because that transport is pinned to
1521
- `127.0.0.1`; set `TODOS_API_KEY` (and send it from your MCP client) to require a
1788
+ off-box. (`todos-mcp --http` used to set it implicitly; that path is gone — the MCP
1789
+ bin is stdio-only and `todos-serve` is the only process that serves `/mcp`.) Set
1790
+ `HASNA_TODOS_SERVER_API_KEY` (and send it from your MCP client) to require a
1522
1791
  credential there too.
1523
1792
 
1524
- Pass the generated key from your app as `x-api-key` or set `TODOS_API_KEY` for
1525
- the SDK client.
1793
+ Pass the generated key from your app as `x-api-key` or `Authorization: Bearer`.
1794
+
1795
+ `HASNA_TODOS_SERVER_API_KEY` is the **server's** own variable — the credential
1796
+ `todos-serve` demands from its callers. It is deliberately NOT one of the client
1797
+ credential names: `HASNA_TODOS_API_KEY` is how a client finds a key (the resolver
1798
+ documented under [Credentials and Service Authority](#credentials-and-service-authority)),
1799
+ and a fleet client key exported on a workstation must never silently become the
1800
+ local server's accepted key — one name cannot play both roles on opposite sides
1801
+ of the same trust boundary. `todos serve` prints one line at startup naming which
1802
+ variable supplied its accepted key. For one release the client names
1803
+ (`HASNA_TODOS_API_KEY` / `TODOS_API_KEY`) are still accepted as a documented
1804
+ fallback so an env written before 2026-09-05 keeps working; the startup line
1805
+ flags the deprecated spelling so operators can move the value.
1526
1806
 
1527
1807
  Always-on / hosted deployments should use the versioned `/v1` API, which
1528
1808
  authenticates independently against the cloud key store. `/health`, `/ready`,
1529
1809
  `/version` and `/openapi.json` are the only routes that are public by design.
1530
1810
 
1811
+ ### Hosted `/v1` writes need a neutral `User-Agent`
1812
+
1813
+ The hosted `/v1` plane is served through a Cloudflare-protected gateway that
1814
+ rejects automation-library default User-Agents. Python's `urllib` sends
1815
+ `Python-urllib/3.x` and `requests` sends `python-requests/x.y`; the gateway
1816
+ answers those with HTTP 403 (Cloudflare error 1010, browser-signature rule)
1817
+ even though the identical request from `curl` succeeds with the same headers
1818
+ and key. The origin is never reached, so no code change on the API server can
1819
+ help — the caller must present a non-python `User-Agent` on every request
1820
+ through the gateway:
1821
+
1822
+ ```python
1823
+ import json
1824
+ import urllib.request
1825
+
1826
+ req = urllib.request.Request(
1827
+ "https://api.hasna.com/todos/v1/tasks",
1828
+ data=json.dumps({"title": "ship the parser"}).encode(),
1829
+ method="POST",
1830
+ headers={
1831
+ "x-api-key": "<your-key>", # or Authorization: Bearer <your-key>
1832
+ "content-type": "application/json",
1833
+ "user-agent": "hasna-todos/1.0", # never the urllib default
1834
+ },
1835
+ )
1836
+ urllib.request.urlopen(req) # 201, not 403 Cloudflare 1010
1837
+ ```
1838
+
1839
+ The `requests` equivalent sets the same `user-agent` header on the request or
1840
+ session; a fixed neutral product string works for both reads and writes. Do not
1841
+ rely on the library default User-Agent.
1842
+
1531
1843
  Agent callers can trim REST responses with field selectors:
1532
1844
 
1533
1845
  ```bash
@@ -1542,9 +1854,11 @@ Data is stored in `~/.hasna/todos/`.
1542
1854
 
1543
1855
  ## Local-Only Security Boundary
1544
1856
 
1545
- `@hasna/todos` is an open source, local-first package. The CLI, MCP server, SDK,
1546
- and local dashboard read and write local state by default and do not require a
1547
- hosted API, cloud account, billing provider, or remote model provider.
1857
+ `@hasna/todos` is an open source package with a local-first storage boundary.
1858
+ The CLI, MCP server, and SDK read and write on-box state under the explicit
1859
+ local opt-in (`HASNA_TODOS_LOCAL=1`) and otherwise talk only to the Todos `/v1`
1860
+ authority the operator configured. They never require a billing provider, a
1861
+ SaaS account, or a remote model provider.
1548
1862
 
1549
1863
  Release checks enforce that boundary before publishing:
1550
1864
 
@@ -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;AAE1B,eAAO,MAAM,wBAAwB,oEAK3B,CAAC;AAEX,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,wBAAwB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE5E,eAAO,MAAM,2BAA2B,4BAA6B,CAAC;AACtE,eAAO,MAAM,yBAAyB,0BAA2B,CAAC;AAElE,MAAM,MAAM,sBAAsB,GAAG,CAAC,OAAO,2BAA2B,CAAC,CAAC,MAAM,CAAC,CAAC;AAClF,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,yBAAyB,CAAC,CAAC,MAAM,CAAC,CAAC;AAC9E,MAAM,MAAM,eAAe,GACvB,mBAAmB,GACnB,sBAAsB,GACtB,oBAAoB,CAAC;AAEzB,eAAO,MAAM,yBAAyB;;;;;;;;;;;;CAY5B,CAAC;AAEX,eAAO,MAAM,4BAA4B;;;;CAI/B,CAAC;AAEX,KAAK,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;AAC1C,KAAK,cAAc,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAChD,KAAK,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;AAE9C,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,MAAM,EAAE,QAAQ,GAAG,MAAM,CAAC;IACnC,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;IAC/C,SAAS,CAAC,MAAM,EAAE,UAAU,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC;IACpD,YAAY,IAAI,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC;IACxC,SAAS,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC;IACpD,UAAU,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACpE,cAAc,CAAC,CACb,KAAK,EAAE,kCAAkC,GACxC,YAAY,CAAC,2BAA2B,GAAG,IAAI,CAAC,CAAC;CACrD;AAED,MAAM,WAAW,kCAAkC;IACjD,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,aAAa,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,2BAA2B;IAC1C,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,aAAa,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,UAAU,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;IACxD,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,MAAM,WAAW,kCAAkC;IACjD,GAAG,CAAC,EAAE,GAAG,CAAC;IACV,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mBAAmB,CAAC,EAAE,CAAC,UAAU,EAAE,cAAc,EAAE,IAAI,EAAE,eAAe,KAAK,OAAO,CAAC;IACrF,gBAAgB,CAAC,EAAE,CACjB,KAAK,EAAE,kCAAkC,KACtC,YAAY,CAAC,2BAA2B,GAAG,IAAI,CAAC,CAAC;IACtD,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;CAClB;AAmBD,wBAAgB,6BAA6B,CAAC,QAAQ,CAAC,EAAE,QAAQ,GAAG,kBAAkB,CAqBrF;AAiDD,wBAAgB,uBAAuB,CACrC,OAAO,GAAE,kCAAuC,GAC/C,wBAAwB,CAmC1B;AAED,eAAO,MAAM,2BAA2B,gCAA0B,CAAC;AA0OnE,MAAM,WAAW,sCAAsC;IACrD,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC;IACzB,KAAK,EAAE,iBAAiB,CAAC;CAC1B;AAED,MAAM,WAAW,iCAAiC;IAChD,GAAG,EAAE,MAAM,CAAC;IACZ,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,uCAAuC,CACrD,KAAK,EAAE,sCAAsC,GAC5C,iCAAiC,CAiBnC"}
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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"}