@wirecat/cli-core 0.308.0 → 0.309.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 (74) hide show
  1. package/dist/cli/meeting-preparation-answer.d.ts +86 -0
  2. package/dist/cli/meeting-preparation-answer.d.ts.map +1 -1
  3. package/dist/cli/meeting-preparation-answer.js +4 -0
  4. package/dist/cli/meeting-preparation-answer.js.map +1 -1
  5. package/dist/cli/meeting-preparation-budget.d.ts.map +1 -1
  6. package/dist/cli/meeting-preparation-budget.js +19 -0
  7. package/dist/cli/meeting-preparation-budget.js.map +1 -1
  8. package/dist/cli/meeting-preparation-command.d.ts.map +1 -1
  9. package/dist/cli/meeting-preparation-command.js +2 -0
  10. package/dist/cli/meeting-preparation-command.js.map +1 -1
  11. package/dist/cli/meeting-preparation-projects.d.ts +88 -0
  12. package/dist/cli/meeting-preparation-projects.d.ts.map +1 -0
  13. package/dist/cli/meeting-preparation-projects.js +24 -0
  14. package/dist/cli/meeting-preparation-projects.js.map +1 -0
  15. package/dist/cli/meeting-preparation-read.d.ts +87 -0
  16. package/dist/cli/meeting-preparation-read.d.ts.map +1 -1
  17. package/dist/cli/meeting-preparation-read.js +4 -1
  18. package/dist/cli/meeting-preparation-read.js.map +1 -1
  19. package/dist/cli/messenger/backfill-command.d.ts.map +1 -1
  20. package/dist/cli/messenger/backfill-command.js +4 -1
  21. package/dist/cli/messenger/backfill-command.js.map +1 -1
  22. package/dist/cli/messenger/store-maintenance-command.d.ts +1 -1
  23. package/dist/cli/messenger/tasks-command.d.ts.map +1 -1
  24. package/dist/cli/messenger/tasks-command.js +34 -0
  25. package/dist/cli/messenger/tasks-command.js.map +1 -1
  26. package/dist/cli/store-settings.d.ts.map +1 -1
  27. package/dist/cli/store-settings.js +30 -0
  28. package/dist/cli/store-settings.js.map +1 -1
  29. package/dist/entities/index.d.ts +86 -0
  30. package/dist/entities/index.d.ts.map +1 -1
  31. package/dist/entities/meeting-preparation.d.ts +86 -0
  32. package/dist/entities/meeting-preparation.d.ts.map +1 -1
  33. package/dist/entities/meeting-preparation.js +15 -0
  34. package/dist/entities/meeting-preparation.js.map +1 -1
  35. package/dist/mcp/meeting-preparation.d.ts +86 -0
  36. package/dist/mcp/meeting-preparation.d.ts.map +1 -1
  37. package/dist/mcp/meeting-preparation.js +1 -1
  38. package/dist/mcp/meeting-preparation.js.map +1 -1
  39. package/dist/mcp/tools/tasks.d.ts.map +1 -1
  40. package/dist/mcp/tools/tasks.js +27 -0
  41. package/dist/mcp/tools/tasks.js.map +1 -1
  42. package/dist/meetings/mcp/index.d.ts +15 -15
  43. package/dist/meetings/mcp/index.d.ts.map +1 -1
  44. package/dist/sends/permissions.d.ts.map +1 -1
  45. package/dist/sends/permissions.js +1 -0
  46. package/dist/sends/permissions.js.map +1 -1
  47. package/dist/services/meeting-preparation-types.d.ts +14 -0
  48. package/dist/services/meeting-preparation-types.d.ts.map +1 -1
  49. package/dist/services/meeting-preparation-validation.d.ts +2 -0
  50. package/dist/services/meeting-preparation-validation.d.ts.map +1 -1
  51. package/dist/services/meeting-preparation-validation.js +7 -0
  52. package/dist/services/meeting-preparation-validation.js.map +1 -1
  53. package/dist/services/meeting-preparation.d.ts.map +1 -1
  54. package/dist/services/meeting-preparation.js +13 -2
  55. package/dist/services/meeting-preparation.js.map +1 -1
  56. package/dist/services/meeting-project-preparation.d.ts +4 -0
  57. package/dist/services/meeting-project-preparation.d.ts.map +1 -0
  58. package/dist/services/meeting-project-preparation.js +52 -0
  59. package/dist/services/meeting-project-preparation.js.map +1 -0
  60. package/dist/services/task-rules.d.ts +37 -5
  61. package/dist/services/task-rules.d.ts.map +1 -1
  62. package/dist/services/task-rules.js +57 -10
  63. package/dist/services/task-rules.js.map +1 -1
  64. package/dist/store/sqlite/task-close-store.d.ts +3 -0
  65. package/dist/store/sqlite/task-close-store.d.ts.map +1 -1
  66. package/dist/store/sqlite/task-close-store.js +3 -0
  67. package/dist/store/sqlite/task-close-store.js.map +1 -1
  68. package/dist/store/sqlite/task-first-pass.d.ts +12 -0
  69. package/dist/store/sqlite/task-first-pass.d.ts.map +1 -0
  70. package/dist/store/sqlite/task-first-pass.js +29 -0
  71. package/dist/store/sqlite/task-first-pass.js.map +1 -0
  72. package/package.json +1 -1
  73. package/parity.json +6 -0
  74. package/skills/follow-ups/SKILL.md +5 -0
@@ -0,0 +1,12 @@
1
+ import type { CacheDatabase } from "../driver.js";
2
+ /**
3
+ * How many tasks the task rules may open per chat on an account's first pass after a sync. 0 by default (owner,
4
+ * 2026-10-17): a first sync reads history, and history is the owner's to dig into with `tasks apply`, not ours.
5
+ */
6
+ export declare const DEFAULT_FIRST_PASS_PER_CHAT = 0;
7
+ export declare const firstPassPerChatOf: (value: string, setting?: string) => number;
8
+ /** What `config set task_first_pass_per_chat` saved; `undefined` where the default applies. */
9
+ export declare const savedFirstPassPerChat: (database: CacheDatabase) => number | undefined;
10
+ /** `null` goes back to the default. */
11
+ export declare const saveFirstPassPerChat: (database: CacheDatabase, value: number | null, now: number) => void;
12
+ //# sourceMappingURL=task-first-pass.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-first-pass.d.ts","sourceRoot":"","sources":["../../../src/store/sqlite/task-first-pass.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAEjD;;;GAGG;AACH,eAAO,MAAM,2BAA2B,IAAI,CAAA;AAI5C,eAAO,MAAM,kBAAkB,UAAW,MAAM,uBAAyC,MAKxF,CAAA;AAED,+FAA+F;AAC/F,eAAO,MAAM,qBAAqB,aAAc,aAAa,KAAG,MAAM,GAAG,SAGxE,CAAA;AAED,uCAAuC;AACvC,eAAO,MAAM,oBAAoB,aAAc,aAAa,SAAS,MAAM,GAAG,IAAI,OAAO,MAAM,KAAG,IASjG,CAAA"}
@@ -0,0 +1,29 @@
1
+ import { CliError } from "@wirecat/cli-base";
2
+ /**
3
+ * How many tasks the task rules may open per chat on an account's first pass after a sync. 0 by default (owner,
4
+ * 2026-10-17): a first sync reads history, and history is the owner's to dig into with `tasks apply`, not ours.
5
+ */
6
+ export const DEFAULT_FIRST_PASS_PER_CHAT = 0;
7
+ const KEY = "taskFirstPassPerChat";
8
+ export const firstPassPerChatOf = (value, setting = "task_first_pass_per_chat") => {
9
+ const n = Number(value.trim());
10
+ if (value.trim() === "" || !Number.isInteger(n) || n < 0 || n > 1000)
11
+ throw new CliError("validation_error", `${setting} takes a whole number from 0 to 1000 — not "${value}"`);
12
+ return n;
13
+ };
14
+ /** What `config set task_first_pass_per_chat` saved; `undefined` where the default applies. */
15
+ export const savedFirstPassPerChat = (database) => {
16
+ const value = database.prepare("SELECT value FROM store_settings WHERE key = ?").get(KEY)?.value;
17
+ return value == null ? undefined : Number(value);
18
+ };
19
+ /** `null` goes back to the default. */
20
+ export const saveFirstPassPerChat = (database, value, now) => {
21
+ if (value === null)
22
+ database.prepare("DELETE FROM store_settings WHERE key = ?").run(KEY);
23
+ else
24
+ database
25
+ .prepare("INSERT INTO store_settings (key, value, at) VALUES (?, ?, ?) " +
26
+ "ON CONFLICT (key) DO UPDATE SET value = excluded.value, at = excluded.at")
27
+ .run(KEY, String(value), now);
28
+ };
29
+ //# sourceMappingURL=task-first-pass.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-first-pass.js","sourceRoot":"","sources":["../../../src/store/sqlite/task-first-pass.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAG5C;;;GAGG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAA;AAE5C,MAAM,GAAG,GAAG,sBAAsB,CAAA;AAElC,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,KAAa,EAAE,OAAO,GAAG,0BAA0B,EAAU,EAAE;IAChG,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAA;IAC9B,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI;QAClE,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,GAAG,OAAO,+CAA+C,KAAK,GAAG,CAAC,CAAA;IAC3G,OAAO,CAAC,CAAA;AACV,CAAC,CAAA;AAED,+FAA+F;AAC/F,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,QAAuB,EAAsB,EAAE;IACnF,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,gDAAgD,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,CAAA;IAChG,OAAO,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AAClD,CAAC,CAAA;AAED,uCAAuC;AACvC,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,QAAuB,EAAE,KAAoB,EAAE,GAAW,EAAQ,EAAE;IACvG,IAAI,KAAK,KAAK,IAAI;QAAE,QAAQ,CAAC,OAAO,CAAC,0CAA0C,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;;QAEvF,QAAQ;aACL,OAAO,CACN,+DAA+D;YAC7D,0EAA0E,CAC7E;aACA,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAA;AACnC,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wirecat/cli-core",
3
- "version": "0.308.0",
3
+ "version": "0.309.0",
4
4
  "description": "The messenger-neutral half of a messaging CLI: domain model, message locators, rendering, name resolution, the SQLite seam, the command skeleton and shared read commands, the send guard, run records and the message store",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Viacheslav Ptsarev",
package/parity.json CHANGED
@@ -3936,6 +3936,12 @@
3936
3936
  "--within": "all"
3937
3937
  }
3938
3938
  },
3939
+ "tasks apply": {
3940
+ "in": "all",
3941
+ "options": {
3942
+ "--last": "all"
3943
+ }
3944
+ },
3939
3945
  "tasks categories": {
3940
3946
  "in": "all"
3941
3947
  },
@@ -36,6 +36,11 @@ no message text — read all of it:
36
36
 
37
37
  Anything not on the agenda waits for its own date. Do not open it.
38
38
 
39
+ **History is not work.** A first sync opens no tasks from old messages (`task_first_pass_per_chat`, 0 by
40
+ default) and says how many it held. Do not read old chats looking for tasks. Ask the owner which chats to build,
41
+ then for each: `{{command}} tasks apply "<chat>" --json` lists what would open, and `--yes` opens it. Dig deeper
42
+ into one chat (`--last 300`) only when the owner asks.
43
+
39
44
  ## 2. Look only where the agenda points
40
45
 
41
46
  For a task: `{{command}} tasks show <key> --json` gives its plan and its links. Read around each