@hasna/todos 0.11.45 → 0.11.46

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 (57) hide show
  1. package/README.md +125 -3
  2. package/dist/cli/commands/config-serve-commands.d.ts.map +1 -1
  3. package/dist/cli/commands/help-commands.d.ts +3 -0
  4. package/dist/cli/commands/help-commands.d.ts.map +1 -0
  5. package/dist/cli/commands/local-backup-commands.d.ts +3 -0
  6. package/dist/cli/commands/local-backup-commands.d.ts.map +1 -0
  7. package/dist/cli/commands/mcp-hooks-commands.d.ts.map +1 -1
  8. package/dist/cli/commands/query-commands.d.ts.map +1 -1
  9. package/dist/cli/commands/scale-hardening-commands.d.ts +3 -0
  10. package/dist/cli/commands/scale-hardening-commands.d.ts.map +1 -0
  11. package/dist/cli/commands/usage-ledger-commands.d.ts +3 -0
  12. package/dist/cli/commands/usage-ledger-commands.d.ts.map +1 -0
  13. package/dist/cli/components/Dashboard.d.ts.map +1 -1
  14. package/dist/cli/index.js +3822 -547
  15. package/dist/cli-mcp-parity.d.ts +1 -1
  16. package/dist/cli-mcp-parity.d.ts.map +1 -1
  17. package/dist/contracts.d.ts +6 -0
  18. package/dist/contracts.d.ts.map +1 -1
  19. package/dist/contracts.js +1506 -24
  20. package/dist/db/agent-names.d.ts +2 -1
  21. package/dist/db/agent-names.d.ts.map +1 -1
  22. package/dist/db/schema.d.ts.map +1 -1
  23. package/dist/db/task-runs.d.ts +3 -0
  24. package/dist/db/task-runs.d.ts.map +1 -1
  25. package/dist/index.d.ts +16 -2
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +2822 -282
  28. package/dist/json-contracts.d.ts.map +1 -1
  29. package/dist/lib/cli-help.d.ts +38 -0
  30. package/dist/lib/cli-help.d.ts.map +1 -0
  31. package/dist/lib/config.d.ts +38 -0
  32. package/dist/lib/config.d.ts.map +1 -1
  33. package/dist/lib/local-backups.d.ts +129 -0
  34. package/dist/lib/local-backups.d.ts.map +1 -0
  35. package/dist/lib/local-extensions.d.ts +18 -1
  36. package/dist/lib/local-extensions.d.ts.map +1 -1
  37. package/dist/lib/local-reports.d.ts +149 -0
  38. package/dist/lib/local-reports.d.ts.map +1 -0
  39. package/dist/lib/redaction.d.ts.map +1 -1
  40. package/dist/lib/scale-hardening.d.ts +74 -0
  41. package/dist/lib/scale-hardening.d.ts.map +1 -0
  42. package/dist/lib/tui-dashboard.d.ts +49 -0
  43. package/dist/lib/tui-dashboard.d.ts.map +1 -0
  44. package/dist/lib/usage-ledger.d.ts +82 -0
  45. package/dist/lib/usage-ledger.d.ts.map +1 -0
  46. package/dist/lib/workflow-states.d.ts +70 -0
  47. package/dist/lib/workflow-states.d.ts.map +1 -0
  48. package/dist/mcp/index.js +8245 -6445
  49. package/dist/mcp/token-utils.d.ts.map +1 -1
  50. package/dist/mcp/tools/task-project-tools.d.ts.map +1 -1
  51. package/dist/mcp/tools/task-resources.d.ts.map +1 -1
  52. package/dist/mcp.js +12 -0
  53. package/dist/registry.js +1487 -24
  54. package/dist/server/index.js +152 -20
  55. package/dist/storage.js +164 -21
  56. package/package.json +1 -1
  57. package/dist/release-provenance.json +0 -7
package/README.md CHANGED
@@ -17,6 +17,38 @@ bun install -g @hasna/todos
17
17
  todos --help
18
18
  ```
19
19
 
20
+ Generate shell completions directly from the registered CLI command tree:
21
+
22
+ ```bash
23
+ todos completions bash > ~/.local/share/bash-completion/completions/todos
24
+ todos completions zsh > ~/.zsh/completions/_todos
25
+ todos completions fish > ~/.config/fish/completions/todos.fish
26
+ ```
27
+
28
+ Print the local CLI manual when you need install/update commands, examples,
29
+ JSON output contracts, error behavior, and the command catalog:
30
+
31
+ ```bash
32
+ todos manual
33
+ todos manual --json
34
+ ```
35
+
36
+ ## Terminal Dashboard
37
+
38
+ `todos dashboard` launches a local Ink TUI with keyboard tabs for overview,
39
+ projects, tasks, plans, runs, dependencies, inbox, and search. It reads only the
40
+ local SQLite database and can also print deterministic snapshots for scripts or
41
+ tests:
42
+
43
+ ```bash
44
+ todos dashboard
45
+ todos dashboard --snapshot --view tasks --search "release" --json
46
+ ```
47
+
48
+ Keyboard hints are shown in the interface: `h`/left and `l`/right move between
49
+ tabs, `1`-`8` jumps to a tab, `/` opens local search, `r` refreshes, and `q`
50
+ quits.
51
+
20
52
  ## Local Project Bootstrap
21
53
 
22
54
  Bootstrap discovers the current local workspace, registers a project identity,
@@ -138,11 +170,13 @@ and `todos://knowledge/decisions` resources for agent context refreshes.
138
170
  Extensions are installed from local manifests, directories with
139
171
  `todos.extension.json`, or offline JSON bundles. The registry validates the
140
172
  manifest shape, checks `@hasna/todos` compatibility ranges, records requested
141
- permissions, runs CLI/MCP compatibility checks, dry-runs declared commands
142
- through the local runner sandbox, verifies optional source checksums or detached
143
- signatures, and stores trust state in local config only:
173
+ permissions, supports custom commands, MCP tool declarations, templates, hooks,
174
+ and renderers, runs CLI/MCP compatibility checks, dry-runs declared commands and
175
+ renderer commands through the local runner sandbox, verifies optional source
176
+ checksums or detached signatures, and stores trust state in local config only:
144
177
 
145
178
  ```bash
179
+ todos extensions discover . --json
146
180
  todos extensions inspect ./todos.extension.json --json
147
181
  todos extensions compat ./todos.extension.json --json
148
182
  todos extensions install ./todos.extension.json --checksum sha256:... --trust --json
@@ -494,6 +528,22 @@ MCP clients get the same summaries through `get_agent_reliability_scorecard`,
494
528
  `export_agent_reliability_scorecards`, and the `todos://agents/reliability`
495
529
  resource.
496
530
 
531
+ ## Local Agent Reports
532
+
533
+ Agent reports compose the local planning surfaces into one report for standups,
534
+ handoffs, and agent run planning: ready tasks, blocked tasks, overdue work,
535
+ plan progress, run outcomes, verification evidence, and per-agent summaries.
536
+
537
+ ```bash
538
+ todos reports local --agent codex --format markdown
539
+ todos reports local --project <project-id> --json
540
+ ```
541
+
542
+ MCP clients can list sections with `list_local_report_types` and build the
543
+ same local-only `local_report` contract with `build_local_report`. The report
544
+ uses the local SQLite store only and does not call hosted analytics or external
545
+ services.
546
+
497
547
  ## Local Agent Locking
498
548
 
499
549
  Task claims and locks are local SQLite leases. Agents can claim the next ready
@@ -760,6 +810,37 @@ The report also includes changelog surfaces and rollback commands. MCP clients
760
810
  use `check_release_compatibility` for the same `release_compatibility_report`
761
811
  JSON contract.
762
812
 
813
+ ## Local Usage Ledger
814
+
815
+ Usage reports summarize local tasks, projects, runs, commands, durations,
816
+ agent-provided token and cost metadata, and run artifact storage. Quota flags
817
+ are simulated locally so agents can check free/pro limits or project budgets
818
+ without sending data anywhere:
819
+
820
+ ```bash
821
+ todos usage report --agent codex --max-tasks 1000 --max-projects 10 --json
822
+ todos usage report --project <project-id> --format markdown
823
+ ```
824
+
825
+ The report is aggregate-only: raw command strings and artifact paths are not
826
+ included. MCP clients use `get_usage_ledger` for the same
827
+ `local_usage_ledger` JSON contract.
828
+
829
+ ## Local Scale Hardening
830
+
831
+ Scale reports benchmark common local queries, count archive-ready terminal
832
+ tasks, check expected SQLite indexes, run integrity diagnostics, and preview
833
+ database compaction without network access:
834
+
835
+ ```bash
836
+ todos scale report --older-than-days 30 --json
837
+ todos scale report --format markdown
838
+ todos scale compact --json
839
+ ```
840
+
841
+ `todos scale compact --apply` runs `PRAGMA optimize` and `VACUUM` against the
842
+ local SQLite database. The default is a dry run.
843
+
763
844
  ## Local Activity Timeline
764
845
 
765
846
  The timeline command gives agents one ordered, redacted view of local comments,
@@ -818,6 +899,26 @@ for existing filters, and the metadata is included in local bridge exports.
818
899
  MCP clients use `get_task_fields`, `set_task_fields`, and
819
900
  `query_tasks_by_fields` for the same local-only workflow.
820
901
 
902
+ ## Local Workflow States
903
+
904
+ Projects can define local workflow states such as review, blocked, verifying,
905
+ failed, or released while keeping storage compatible with the canonical task
906
+ statuses:
907
+
908
+ ```bash
909
+ todos workflow states --json
910
+ todos workflow set <task-id> review --json
911
+ todos workflow tasks review --json
912
+ todos workflow migrate --apply --json
913
+ ```
914
+
915
+ Workflow states live in local config under `workflow_states.states`. Each state
916
+ maps to a canonical `canonical_status`, can declare aliases, and can restrict
917
+ allowed transitions. The selected local state is stored in task metadata and is
918
+ included in local bridge exports. MCP clients use `list_workflow_states`,
919
+ `set_task_workflow_state`, `query_tasks_by_workflow_state`, and
920
+ `migrate_workflow_states`.
921
+
821
922
  ## Local Calendar And ICS
822
923
 
823
924
  Calendar events are derived from local tasks, SLA thresholds, run ledgers, and
@@ -1049,6 +1150,27 @@ unresolved divergent fields in `metadata.sync_conflicts` for manual review.
1049
1150
  Local non-empty title, status, priority, and metadata values win when both sides
1050
1151
  changed.
1051
1152
 
1153
+ ## Local Backups and Integrity
1154
+
1155
+ Create a checksum-protected local backup wrapper around the bridge bundle when
1156
+ you need a restorable snapshot with manifest counts and SQLite integrity
1157
+ metadata:
1158
+
1159
+ ```bash
1160
+ todos backup create --output todos-backup.json
1161
+ todos backup verify todos-backup.json --json
1162
+ todos backup restore todos-backup.json --json
1163
+ todos backup restore todos-backup.json --apply --resolve-conflicts
1164
+ todos backup integrity --json
1165
+ ```
1166
+
1167
+ Backups include the same local projects, task lists, plans, tasks, comments,
1168
+ runs, commands, files, commits, refs, verification records, saved views, boards,
1169
+ calendar items, and stored artifact contents as bridge exports. The backup
1170
+ manifest adds SHA-256 checksums for the full payload, embedded bridge bundle,
1171
+ and each bridge section. Restore defaults to dry-run mode and refuses corrupted
1172
+ or schema-incompatible bundles before importing.
1173
+
1052
1174
  ## todos.md Markdown Import/Export
1053
1175
 
1054
1176
  `todos.md` files are readable Markdown checklists with an embedded local bridge
@@ -1 +1 @@
1
- {"version":3,"file":"config-serve-commands.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/config-serve-commands.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASzC,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,OAAO,QAwxC3D"}
1
+ {"version":3,"file":"config-serve-commands.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/config-serve-commands.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASzC,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,OAAO,QAq0C3D"}
@@ -0,0 +1,3 @@
1
+ import type { Command } from "commander";
2
+ export declare function registerHelpCommands(program: Command): void;
3
+ //# sourceMappingURL=help-commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"help-commands.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/help-commands.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAczC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,QAkCpD"}
@@ -0,0 +1,3 @@
1
+ import type { Command } from "commander";
2
+ export declare function registerLocalBackupCommands(program: Command): void;
3
+ //# sourceMappingURL=local-backup-commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-backup-commands.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/local-backup-commands.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkBzC,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,OAAO,QAoH3D"}
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-hooks-commands.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/mcp-hooks-commands.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAwMzC,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,QA0gCxD"}
1
+ {"version":3,"file":"mcp-hooks-commands.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/mcp-hooks-commands.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAwMzC,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,QAghCxD"}
@@ -1 +1 @@
1
- {"version":3,"file":"query-commands.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/query-commands.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA0MzC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,QAw9ErD"}
1
+ {"version":3,"file":"query-commands.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/query-commands.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkNzC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,QA6lFrD"}
@@ -0,0 +1,3 @@
1
+ import type { Command } from "commander";
2
+ export declare function registerScaleHardeningCommands(program: Command): void;
3
+ //# sourceMappingURL=scale-hardening-commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scale-hardening-commands.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/scale-hardening-commands.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkBzC,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,OAAO,QAwD9D"}
@@ -0,0 +1,3 @@
1
+ import type { Command } from "commander";
2
+ export declare function registerUsageLedgerCommands(program: Command): void;
3
+ //# sourceMappingURL=usage-ledger-commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usage-ledger-commands.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/usage-ledger-commands.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA8BzC,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,OAAO,QAiE3D"}
@@ -1 +1 @@
1
- {"version":3,"file":"Dashboard.d.ts","sourceRoot":"","sources":["../../../src/cli/components/Dashboard.tsx"],"names":[],"mappings":"AAOA,UAAU,cAAc;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAgBD,wBAAgB,SAAS,CAAC,EAAE,SAAS,EAAE,SAAgB,EAAE,EAAE,cAAc,2CAwGxE"}
1
+ {"version":3,"file":"Dashboard.d.ts","sourceRoot":"","sources":["../../../src/cli/components/Dashboard.tsx"],"names":[],"mappings":"AAIA,UAAU,cAAc;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,SAAS,CAAC,EAAE,SAAS,EAAE,SAAgB,EAAE,EAAE,cAAc,2CAqHxE"}