toolroll 0.9.41 → 0.9.42

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 (67) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/cli.js +3 -1
  3. package/dist/coding-types.d.ts +2 -24
  4. package/dist/coding-workspace.js +12 -11
  5. package/dist/contracts/cli.d.ts +736 -0
  6. package/dist/contracts/cli.js +223 -0
  7. package/dist/contracts/coding-activity.d.ts +64 -0
  8. package/dist/contracts/coding-activity.js +58 -0
  9. package/dist/contracts/console-api.d.ts +483 -0
  10. package/dist/contracts/console-api.js +273 -0
  11. package/dist/contracts/diff-stat.d.ts +58 -0
  12. package/dist/contracts/diff-stat.js +59 -0
  13. package/dist/contracts/integration-metadata.d.ts +99 -0
  14. package/dist/contracts/integration-metadata.js +101 -0
  15. package/dist/contracts/model-catalog.d.ts +21 -0
  16. package/dist/contracts/model-catalog.js +14 -0
  17. package/dist/contracts/native-census.d.ts +42 -0
  18. package/dist/contracts/native-census.js +36 -0
  19. package/dist/contracts/observation-request.d.ts +37 -0
  20. package/dist/contracts/observation-request.js +25 -0
  21. package/dist/contracts/provider.d.ts +30 -0
  22. package/dist/contracts/provider.js +15 -0
  23. package/dist/contracts/recipes.d.ts +166 -0
  24. package/dist/contracts/recipes.js +52 -0
  25. package/dist/contracts/retention.d.ts +42 -0
  26. package/dist/contracts/retention.js +24 -0
  27. package/dist/contracts/storage.d.ts +23 -0
  28. package/dist/contracts/storage.js +10 -0
  29. package/dist/contracts/store-json.d.ts +315 -0
  30. package/dist/contracts/store-json.js +196 -0
  31. package/dist/contracts/trigger-payloads.d.ts +369 -0
  32. package/dist/contracts/trigger-payloads.js +144 -0
  33. package/dist/contracts/update-journal.d.ts +254 -0
  34. package/dist/contracts/update-journal.js +155 -0
  35. package/dist/contracts/verification-view.d.ts +93 -0
  36. package/dist/contracts/verification-view.js +43 -0
  37. package/dist/control-setup.d.ts +1 -1
  38. package/dist/desktop-update.d.ts +7 -40
  39. package/dist/desktop-update.js +36 -8
  40. package/dist/evidence.d.ts +3 -19
  41. package/dist/flow-triggers.js +61 -60
  42. package/dist/mcp-connect.js +37 -22
  43. package/dist/model-catalog.js +8 -6
  44. package/dist/observations.d.ts +2 -6
  45. package/dist/observations.js +13 -9
  46. package/dist/operate.js +2 -1
  47. package/dist/process-recovery-native.d.ts +2 -13
  48. package/dist/process-recovery-native.js +8 -5
  49. package/dist/project-tools.d.ts +6 -24
  50. package/dist/project-tools.js +22 -18
  51. package/dist/provider.d.ts +3 -8
  52. package/dist/provider.js +15 -11
  53. package/dist/recipes.d.ts +3 -28
  54. package/dist/recipes.js +79 -52
  55. package/dist/retention.d.ts +4 -5
  56. package/dist/retention.js +5 -4
  57. package/dist/serve.js +142 -28
  58. package/dist/storage.d.ts +2 -1
  59. package/dist/storage.js +12 -9
  60. package/dist/store.d.ts +3 -15
  61. package/dist/store.js +80 -158
  62. package/dist/surface.d.ts +6 -54
  63. package/dist/surface.js +6 -1
  64. package/dist/toolroll-update.d.ts +8 -99
  65. package/dist/toolroll-update.js +28 -18
  66. package/dist/verification-evidence.js +27 -12
  67. package/package.json +1 -1
@@ -1,18 +1,18 @@
1
1
  import type { Database, Store } from "./store.js";
2
+ import { type RetentionKind, type RetentionPeriods } from "./contracts/retention.js";
2
3
  export declare const RETENTION_SCHEMA: string;
3
4
  /** A file from before 1-day evidence keeps `days >= 7` in its CHECK: rebuild the table with the wider one, keeping
4
5
  * every row, in one transaction. A file already widened is untouched. */
5
6
  export declare function widenRetentionSchema(db: Database): void;
6
- export type RetentionKind = "evidence" | "checkouts" | "chat" | "notifications";
7
- export type RetentionPeriods = Record<RetentionKind, number | null>;
7
+ export type { RetentionKind, RetentionPeriods } from "./contracts/retention.js";
8
8
  export declare const RETENTION_KINDS: readonly {
9
9
  kind: RetentionKind;
10
10
  label: string;
11
11
  detail: string;
12
12
  }[];
13
13
  export declare const PERIOD_CHOICES: Readonly<Record<RetentionKind, readonly (number | null)[]>>;
14
- export declare const MIN_DAYS = 1;
15
- export declare const MAX_DAYS = 3650;
14
+ export declare const MIN_DAYS: 1;
15
+ export declare const MAX_DAYS: 3650;
16
16
  /** A sweep is due once a day. */
17
17
  export declare const SWEEP_EVERY_MS = 86400000;
18
18
  /** At most this many runs, messages, notifications or records go per kind per sweep; the next sweep takes the rest. */
@@ -76,4 +76,3 @@ export declare function lastSweepAt(store: Store): string | null;
76
76
  export declare function countWords(one: Pick<RetentionCount, "kind" | "count">): string;
77
77
  /** "3 runs' evidence, 120 chat messages; about 41 MB freed", or "nothing was due". */
78
78
  export declare function sweepWords(counts: readonly RetentionCount[], freed: number): string;
79
- export {};
package/dist/retention.js CHANGED
@@ -22,6 +22,7 @@ import { join } from "node:path";
22
22
  import { RETENTION_NOTE } from "./evidence.js";
23
23
  import { COMPLETION_ACTION } from "./result-completion.js";
24
24
  import { bytesWords, treeBytes } from "./storage.js";
25
+ import { RETENTION_DAYS, retentionDaysSchema, retentionKindSchema } from "./contracts/retention.js";
25
26
  const RETENTION_TABLE = (name) => `
26
27
  CREATE TABLE IF NOT EXISTS ${name} (
27
28
  kind TEXT PRIMARY KEY CHECK (kind IN ('evidence', 'checkouts', 'chat', 'notifications')),
@@ -62,8 +63,8 @@ const LONG_CHOICES = [30, 90, 180, 365, 730, null];
62
63
  export const PERIOD_CHOICES = {
63
64
  evidence: [1, 7, 14, 28, null], checkouts: LONG_CHOICES, chat: LONG_CHOICES, notifications: LONG_CHOICES,
64
65
  };
65
- export const MIN_DAYS = 1;
66
- export const MAX_DAYS = 3650;
66
+ export const MIN_DAYS = RETENTION_DAYS.min;
67
+ export const MAX_DAYS = RETENTION_DAYS.max;
67
68
  const DAY_MS = 86_400_000;
68
69
  /** A sweep is due once a day. */
69
70
  export const SWEEP_EVERY_MS = DAY_MS;
@@ -73,7 +74,7 @@ const SWEEP_CURSOR = "retention:last-sweep";
73
74
  /** What each kind keeps until someone chooses: evidence 28 days, everything else forever. */
74
75
  export const DEFAULT_PERIODS = { evidence: 28, checkouts: null, chat: null, notifications: null };
75
76
  export function isRetentionKind(value) {
76
- return RETENTION_KINDS.some(one => one.kind === value);
77
+ return retentionKindSchema.safeParse(value).success;
77
78
  }
78
79
  /** "forever", or a number of days ("90", "90d"), weeks ("12w") or years ("1y"); undefined when it's none of those or out of range. */
79
80
  export function parsePeriod(text) {
@@ -85,7 +86,7 @@ export function parsePeriod(text) {
85
86
  return undefined;
86
87
  const unit = match[2]?.[0] ?? "d";
87
88
  const days = Number(match[1]) * (unit === "y" ? 365 : unit === "w" ? 7 : 1);
88
- return days >= MIN_DAYS && days <= MAX_DAYS ? days : undefined;
89
+ return retentionDaysSchema.safeParse(days).success ? days : undefined;
89
90
  }
90
91
  export function periodWords(days) {
91
92
  if (days === null)