@indigoai-us/hq-cli 5.345.191 → 5.345.194

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 (129) hide show
  1. package/CHANGELOG.md +431 -0
  2. package/assets/bot-workers/setup/worker.yaml +91 -34
  3. package/dist/command-catalog.generated.d.ts +145 -19
  4. package/dist/command-catalog.generated.js +184 -21
  5. package/dist/commands/bot-jobs.d.ts +21 -18
  6. package/dist/commands/bot-jobs.js +127 -39
  7. package/dist/commands/bot.d.ts +4 -3
  8. package/dist/commands/bot.js +265 -140
  9. package/dist/commands/core-jobs-schedule.js +10 -0
  10. package/dist/commands/daemon.js +37 -0
  11. package/dist/commands/files.d.ts +41 -6
  12. package/dist/commands/files.js +108 -27
  13. package/dist/commands/pack-start-bot.d.ts +4 -6
  14. package/dist/commands/pack-start-bot.js +4 -8
  15. package/dist/commands/signals-run.d.ts +46 -0
  16. package/dist/commands/signals-run.js +180 -0
  17. package/dist/commands/signals.d.ts +1 -0
  18. package/dist/commands/signals.js +3 -0
  19. package/dist/commands/sources.d.ts +58 -0
  20. package/dist/commands/sources.js +294 -26
  21. package/dist/commands/staff/reset-test-account.d.ts +10 -0
  22. package/dist/commands/staff/reset-test-account.js +18 -2
  23. package/dist/commands/whoami.d.ts +7 -0
  24. package/dist/commands/whoami.js +35 -2
  25. package/dist/hq-cloud-sync-runner/bin/sync-runner.js +31171 -52512
  26. package/dist/hq-cloud-sync-runner/package.json +1 -1
  27. package/dist/lib/bot/api.d.ts +3 -2
  28. package/dist/lib/bot/config.d.ts +2 -0
  29. package/dist/lib/bot/fleet-cron.d.ts +121 -0
  30. package/dist/lib/bot/fleet-cron.js +319 -0
  31. package/dist/lib/bot/fleet-local.d.ts +93 -1
  32. package/dist/lib/bot/fleet-local.js +546 -34
  33. package/dist/lib/bot/fleet-owner-companies.d.ts +12 -0
  34. package/dist/lib/bot/fleet-owner-companies.js +30 -0
  35. package/dist/lib/bot/fleet-watch.d.ts +25 -0
  36. package/dist/lib/bot/fleet-watch.js +51 -0
  37. package/dist/lib/bot/index.d.ts +1 -1
  38. package/dist/lib/bot/index.js +1 -1
  39. package/dist/lib/bot/job-run.d.ts +5 -4
  40. package/dist/lib/bot/job-run.js +5 -4
  41. package/dist/lib/bot/jobs/hot-signal-sync.d.ts +57 -3
  42. package/dist/lib/bot/jobs/hot-signal-sync.js +163 -4
  43. package/dist/lib/bot/local-jobs.d.ts +13 -2
  44. package/dist/lib/bot/local-jobs.js +17 -4
  45. package/dist/lib/bot/progress.d.ts +14 -0
  46. package/dist/lib/bot/progress.js +47 -1
  47. package/dist/lib/bot/run.d.ts +55 -2
  48. package/dist/lib/bot/run.js +192 -10
  49. package/dist/lib/bot/setup-tool-offer.d.ts +1 -0
  50. package/dist/lib/bot/setup-tool-offer.js +16 -0
  51. package/dist/lib/bot/signals-engine-flag.d.ts +18 -0
  52. package/dist/lib/bot/signals-engine-flag.js +30 -0
  53. package/dist/lib/daemon/catalog.d.ts +4 -0
  54. package/dist/lib/daemon/catalog.js +29 -9
  55. package/dist/lib/daemon/legacy.d.ts +6 -0
  56. package/dist/lib/daemon/legacy.js +16 -10
  57. package/dist/lib/daemon/run.d.ts +1 -0
  58. package/dist/lib/daemon/run.js +10 -0
  59. package/dist/lib/flag-registry-worker-source.generated.d.ts +1 -1
  60. package/dist/lib/flag-registry-worker-source.generated.js +1 -1
  61. package/dist/lib/flag-registry.d.ts +13 -1
  62. package/dist/lib/flag-registry.js +46 -0
  63. package/dist/lib/hot-channels/adapters/attio.d.ts +75 -2
  64. package/dist/lib/hot-channels/adapters/attio.js +367 -29
  65. package/dist/lib/hot-channels/adapters/gmail.d.ts +14 -0
  66. package/dist/lib/hot-channels/adapters/gmail.js +59 -2
  67. package/dist/lib/hot-channels/adapters/linear.d.ts +24 -0
  68. package/dist/lib/hot-channels/adapters/linear.js +71 -1
  69. package/dist/lib/hot-channels/adapters/meetings.js +4 -1
  70. package/dist/lib/hot-channels/adapters/slack.js +7 -3
  71. package/dist/lib/hot-channels/alert.js +1 -1
  72. package/dist/lib/hot-channels/contract.d.ts +11 -0
  73. package/dist/lib/hot-channels/contract.js +1 -0
  74. package/dist/lib/hot-channels/cursors.js +1 -1
  75. package/dist/lib/hot-channels/landing.d.ts +6 -2
  76. package/dist/lib/hot-channels/landing.js +13 -6
  77. package/dist/lib/hot-channels/ledger.js +2 -0
  78. package/dist/lib/hot-channels/loop.d.ts +6 -0
  79. package/dist/lib/hot-channels/loop.js +19 -4
  80. package/dist/lib/hot-channels/registry.js +9 -1
  81. package/dist/lib/hot-channels/run.d.ts +18 -0
  82. package/dist/lib/hot-channels/run.js +15 -4
  83. package/dist/lib/hot-channels/signals-pass.d.ts +34 -2
  84. package/dist/lib/hot-channels/signals-pass.js +149 -38
  85. package/dist/lib/hot-channels/signals-redo.d.ts +60 -0
  86. package/dist/lib/hot-channels/signals-redo.js +207 -0
  87. package/dist/lib/hot-channels/sync-lock.js +22 -6
  88. package/dist/lib/mesh/live/daemon/install.d.ts +22 -0
  89. package/dist/lib/mesh/live/daemon/install.js +117 -30
  90. package/dist/lib/signals/adapters-catalog.d.ts +77 -0
  91. package/dist/lib/signals/adapters-catalog.js +194 -0
  92. package/dist/lib/signals/engine.d.ts +202 -0
  93. package/dist/lib/signals/engine.js +504 -0
  94. package/dist/lib/signals/failure-alert.d.ts +89 -0
  95. package/dist/lib/signals/failure-alert.js +175 -0
  96. package/dist/lib/signals/local-date.d.ts +3 -0
  97. package/dist/lib/signals/local-date.js +6 -0
  98. package/dist/lib/signals/projection.d.ts +42 -0
  99. package/dist/lib/signals/projection.js +67 -0
  100. package/dist/lib/signals/reply.d.ts +112 -0
  101. package/dist/lib/signals/reply.js +368 -0
  102. package/dist/lib/signals/run-lock.d.ts +36 -0
  103. package/dist/lib/signals/run-lock.js +148 -0
  104. package/dist/lib/signals/run-record.d.ts +24 -0
  105. package/dist/lib/signals/run-record.js +82 -0
  106. package/dist/lib/signals/sanitize.d.ts +105 -0
  107. package/dist/lib/signals/sanitize.js +439 -0
  108. package/dist/lib/signals/settings.d.ts +10 -0
  109. package/dist/lib/signals/settings.js +48 -0
  110. package/dist/lib/signals/steps/adapters.d.ts +14 -0
  111. package/dist/lib/signals/steps/adapters.js +156 -0
  112. package/dist/lib/signals/steps/entity-similarity.d.ts +10 -0
  113. package/dist/lib/signals/steps/entity-similarity.js +47 -0
  114. package/dist/lib/signals/steps/extract.d.ts +118 -0
  115. package/dist/lib/signals/steps/extract.js +793 -0
  116. package/dist/lib/signals/steps/garden.d.ts +24 -0
  117. package/dist/lib/signals/steps/garden.js +250 -0
  118. package/dist/lib/signals/steps/types.d.ts +117 -0
  119. package/dist/lib/signals/steps/types.js +4 -0
  120. package/dist/lib/signals/steps/upload.d.ts +43 -0
  121. package/dist/lib/signals/steps/upload.js +324 -0
  122. package/dist/lib/signals/write-guard.d.ts +63 -0
  123. package/dist/lib/signals/write-guard.js +287 -0
  124. package/dist/utils/resident-package-preload.js +16 -0
  125. package/dist/utils/vault-api.d.ts +1 -0
  126. package/dist/utils/vault-api.js +1 -1
  127. package/package.json +9 -9
  128. package/dist/lib/bot/fleet-default-flag.d.ts +0 -31
  129. package/dist/lib/bot/fleet-default-flag.js +0 -127
@@ -0,0 +1,202 @@
1
+ import { localDate } from "./local-date.js";
2
+ import { type LockTakeover } from "./run-lock.js";
3
+ import { type UploadDeps } from "./steps/upload.js";
4
+ import { type SignalsRunAlertSenders } from "./failure-alert.js";
5
+ import type { RaiseSignalsFailureAlertsResult } from "../hot-channels/alert.js";
6
+ import type { ErrorKind, HotChannelSyncFn, SignalsStep, SpawnSyncFn, StepFailure, StepName, StepStatus } from "./steps/types.js";
7
+ import type { AdapterFlagReader } from "./adapters-catalog.js";
8
+ export declare const SIGNALS_TRIGGERS: readonly ["job", "chat", "manual", "brief"];
9
+ export type SignalsTrigger = (typeof SIGNALS_TRIGGERS)[number];
10
+ export declare const SIGNALS_STEP_CHOICES: readonly ["garden", "extract", "adapters", "upload", "all"];
11
+ export type SignalsStepChoice = (typeof SIGNALS_STEP_CHOICES)[number];
12
+ export declare const STEP_ORDER: StepName[];
13
+ export declare const RUN_RECORD_SCHEMA_VERSION: 2;
14
+ /** A failed run with a transient error is due for a retry this long after it finished. */
15
+ export declare const RETRY_DELAY_MS: number;
16
+ export interface StepRecord {
17
+ name: StepName;
18
+ itemsIn: number;
19
+ itemsOut: number;
20
+ durationMs: number;
21
+ status: StepStatus;
22
+ skippedReason?: string;
23
+ error?: string;
24
+ /** The step's own error detail (reconnect, signed-out, ...). The record-level errorKind is the coarse v2 kind. */
25
+ errorKind?: ErrorKind;
26
+ modelTurns?: number;
27
+ estimatedSpendUsd?: number;
28
+ byAdapter?: Record<string, number>;
29
+ itemsInByAdapter?: Record<string, number>;
30
+ tokenLevels?: Record<string, string>;
31
+ adapterSkips?: Record<string, string>;
32
+ uploaded?: {
33
+ count: number;
34
+ bytes: number;
35
+ };
36
+ plan?: string[];
37
+ detail?: Record<string, unknown>;
38
+ skipped?: number;
39
+ review?: number;
40
+ failures?: StepFailure[];
41
+ skippedItems?: {
42
+ file: string;
43
+ reason: string;
44
+ }[];
45
+ rejectedCandidates?: number;
46
+ }
47
+ /** "dry-run" is only ever returned in memory; a dry run writes no record. */
48
+ export type RunStatus = "running" | "complete" | "partial" | "failed" | "skipped" | "dry-run";
49
+ export type RunErrorKind = "transient" | "config" | "auth";
50
+ export interface RunRecord {
51
+ schemaVersion: typeof RUN_RECORD_SCHEMA_VERSION;
52
+ company: string;
53
+ startedAt: string;
54
+ finishedAt: string | null;
55
+ trigger: SignalsTrigger;
56
+ pid: number;
57
+ catchUp: boolean;
58
+ dryRun: boolean;
59
+ status: RunStatus;
60
+ /** prefs-off, late-start, ... on a skipped record; else null. */
61
+ skipReason: string | null;
62
+ /** v1 name of skipReason, kept for older readers. */
63
+ skippedReason?: string;
64
+ currentStep: StepName | null;
65
+ steps: StepRecord[];
66
+ maxBudgetUsd: number;
67
+ maxTurns: number;
68
+ /** Set when a job run finishes complete or partial; carried forward by every later run that day. */
69
+ jobRanAt: string | null;
70
+ /** On failed with errorKind transient: finishedAt + 15 minutes. */
71
+ nextRetryAt: string | null;
72
+ errorKind: RunErrorKind | null;
73
+ /** One plain-language sentence on failed and partial records. */
74
+ failureReason: string | null;
75
+ /** late-start, step-failed:{step}, step-partial:{step}, or null. */
76
+ partialReason: string | null;
77
+ /** v1 name of partialReason, kept for older readers. */
78
+ partial: string | null;
79
+ /** In-memory only: this call found the day's job already ran and did nothing. */
80
+ alreadyRanToday: boolean;
81
+ counts: {
82
+ sourcesIn: number;
83
+ signalsOut: number;
84
+ };
85
+ lockTakeover?: LockTakeover;
86
+ }
87
+ /** A company another run is holding the lock for. Nothing was started for it. */
88
+ export interface LockedCompany {
89
+ company: string;
90
+ status: "running";
91
+ startedAt: string;
92
+ trigger: string;
93
+ }
94
+ export interface RunSummaryEntry {
95
+ company: string;
96
+ status: RunStatus;
97
+ trigger: SignalsTrigger;
98
+ /** The record's catchUp flag, so it always matches the company's record. */
99
+ catchUp: boolean;
100
+ finishedAt: string | null;
101
+ skipReason?: string;
102
+ skippedReason?: string;
103
+ itemsIn: number;
104
+ itemsOut: number;
105
+ estimatedSpendUsd: number;
106
+ }
107
+ export interface RunSummary {
108
+ schemaVersion: typeof RUN_RECORD_SCHEMA_VERSION;
109
+ date: string;
110
+ trigger: SignalsTrigger;
111
+ companies: RunSummaryEntry[];
112
+ totals: {
113
+ itemsIn: number;
114
+ itemsOut: number;
115
+ estimatedSpendUsd: number;
116
+ };
117
+ status: RunStatus;
118
+ finishedAt: string;
119
+ }
120
+ export interface RunSignalsResult {
121
+ date: string;
122
+ records: RunRecord[];
123
+ locked: LockedCompany[];
124
+ /** Summary of this call's companies. summary.json on disk holds every company's latest entry. */
125
+ summary: RunSummary;
126
+ /**
127
+ * The signals-failure alert result per company whose run landed sources and
128
+ * produced no signals (US-018). Omitted when no alert sender was given.
129
+ */
130
+ alerts?: Record<string, RaiseSignalsFailureAlertsResult>;
131
+ }
132
+ export interface RunSignalsOptions {
133
+ hqRoot: string;
134
+ company?: string;
135
+ dryRun?: boolean;
136
+ step?: SignalsStepChoice;
137
+ trigger?: SignalsTrigger;
138
+ force?: boolean;
139
+ catchUp?: boolean;
140
+ maxTurns?: number;
141
+ maxBudgetUsd?: number;
142
+ now?: () => Date;
143
+ spawn?: SpawnSyncFn;
144
+ hotChannelSync?: HotChannelSyncFn;
145
+ /** Adapter ids the adapters step gates and syncs. Defaults to the builtin registry. */
146
+ registeredAdapterIds?: readonly string[];
147
+ uploadDeps?: Partial<UploadDeps>;
148
+ /**
149
+ * Company flag reader for the adapters step's gate. Unset in production:
150
+ * the hot-channel sync then reads the adapter flags through the shared
151
+ * hq-flags evaluator with the signed-in session.
152
+ */
153
+ isFlagOn?: AdapterFlagReader;
154
+ steps?: Partial<Record<StepName, SignalsStep>>;
155
+ /**
156
+ * Where the signals-failure alert goes (US-018): after the run, a company
157
+ * whose extract step read sources and produced nothing (or failed after new
158
+ * landings) alerts the owner through the ledger alert path, deduped hourly.
159
+ * Unset = no alert check.
160
+ */
161
+ signalsAlert?: SignalsRunAlertSenders;
162
+ /** Lock liveness check; defaults to process.kill(pid, 0). */
163
+ isPidAlive?: (pid: number) => boolean;
164
+ /**
165
+ * Source items (`sources/<channel>/<file>.md`) to process again: the extract
166
+ * step re-queues each with the worklist's `--redo` before listing its
167
+ * channel. Needs `company`.
168
+ */
169
+ redo?: readonly string[];
170
+ }
171
+ /** Bad input from the caller (company slug, missing company): exit 2. */
172
+ export declare class SignalsUsageError extends Error {
173
+ constructor(message: string);
174
+ }
175
+ /** Broken local setup (missing or failing knowledge-prefs.sh): errorKind config. */
176
+ export declare class SignalsConfigError extends Error {
177
+ constructor(message: string);
178
+ }
179
+ export declare const defaultSpawn: SpawnSyncFn;
180
+ export { localDate };
181
+ export declare function runRecordRel(date: string, company: string): string;
182
+ export declare function summaryRel(date: string): string;
183
+ /** Companies under companies/ that are also listed in companies/manifest.yaml. */
184
+ export declare function listCompanies(hqRoot: string): string[];
185
+ /** Reads one knowledge preference. Throws SignalsConfigError when the script is missing or fails. */
186
+ export declare function readPref(hqRoot: string, company: string, field: string, spawn: SpawnSyncFn): boolean;
187
+ /** Coarse v2 kind for a step's detailed kind. */
188
+ export declare function toRunErrorKind(kind: ErrorKind | undefined): RunErrorKind;
189
+ /** Fills the v2 outcome fields of a finished record from its steps. */
190
+ export declare function finalizeRecord(record: RunRecord, input: {
191
+ lateStart: boolean;
192
+ lateStartHour: number;
193
+ finishedAt: Date;
194
+ }): void;
195
+ export declare function runSignals(opts: RunSignalsOptions): Promise<RunSignalsResult>;
196
+ /**
197
+ * Exit code for `hq signals run`: 1 when a company failed (a job that already
198
+ * ran today does not count), else 3 when another run held a company's lock,
199
+ * else 0 (complete, partial, skipped, already ran).
200
+ */
201
+ export declare function signalsExitCode(result: RunSignalsResult): 0 | 1 | 3;
202
+ //# sourceMappingURL=engine.d.ts.map