@reticlehq/server 2.2.0 → 2.2.1

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 (66) hide show
  1. package/dist/cli-parse.d.ts +19 -1
  2. package/dist/cli-parse.d.ts.map +1 -1
  3. package/dist/cli-parse.js +40 -2
  4. package/dist/cli-parse.js.map +1 -1
  5. package/dist/cli-verify.d.ts +2 -0
  6. package/dist/cli-verify.d.ts.map +1 -1
  7. package/dist/cli-verify.js +24 -2
  8. package/dist/cli-verify.js.map +1 -1
  9. package/dist/cli.d.ts +2 -3
  10. package/dist/cli.d.ts.map +1 -1
  11. package/dist/cli.js +94 -7
  12. package/dist/cli.js.map +1 -1
  13. package/dist/cloud/cloud-config.d.ts +37 -0
  14. package/dist/cloud/cloud-config.d.ts.map +1 -0
  15. package/dist/cloud/cloud-config.js +87 -0
  16. package/dist/cloud/cloud-config.js.map +1 -0
  17. package/dist/cloud/cloud-sync.d.ts +96 -3
  18. package/dist/cloud/cloud-sync.d.ts.map +1 -1
  19. package/dist/cloud/cloud-sync.js +131 -2
  20. package/dist/cloud/cloud-sync.js.map +1 -1
  21. package/dist/cloud-cli.d.ts +4 -0
  22. package/dist/cloud-cli.d.ts.map +1 -0
  23. package/dist/cloud-cli.js +507 -0
  24. package/dist/cloud-cli.js.map +1 -0
  25. package/dist/daemon.d.ts.map +1 -1
  26. package/dist/daemon.js +52 -7
  27. package/dist/daemon.js.map +1 -1
  28. package/dist/flows/flow-replay-run.d.ts.map +1 -1
  29. package/dist/flows/flow-replay-run.js +22 -5
  30. package/dist/flows/flow-replay-run.js.map +1 -1
  31. package/dist/flows/flow-tools.d.ts.map +1 -1
  32. package/dist/flows/flow-tools.js +24 -8
  33. package/dist/flows/flow-tools.js.map +1 -1
  34. package/dist/flows/server-verify.d.ts +16 -0
  35. package/dist/flows/server-verify.d.ts.map +1 -0
  36. package/dist/flows/server-verify.js +43 -0
  37. package/dist/flows/server-verify.js.map +1 -0
  38. package/dist/pool/playwright-launcher.d.ts +2 -0
  39. package/dist/pool/playwright-launcher.d.ts.map +1 -1
  40. package/dist/pool/playwright-launcher.js +13 -1
  41. package/dist/pool/playwright-launcher.js.map +1 -1
  42. package/dist/project/baselines.d.ts.map +1 -1
  43. package/dist/project/baselines.js +5 -3
  44. package/dist/project/baselines.js.map +1 -1
  45. package/dist/project/project-store.js +20 -8
  46. package/dist/project/project-store.js.map +1 -1
  47. package/dist/project/project-tools.d.ts.map +1 -1
  48. package/dist/project/project-tools.js +29 -6
  49. package/dist/project/project-tools.js.map +1 -1
  50. package/dist/runs/verification-sync.d.ts +24 -0
  51. package/dist/runs/verification-sync.d.ts.map +1 -0
  52. package/dist/runs/verification-sync.js +67 -0
  53. package/dist/runs/verification-sync.js.map +1 -0
  54. package/dist/telemetry/telemetry.d.ts +41 -0
  55. package/dist/telemetry/telemetry.d.ts.map +1 -0
  56. package/dist/telemetry/telemetry.js +220 -0
  57. package/dist/telemetry/telemetry.js.map +1 -0
  58. package/dist/tools/dynamic-tools.js +1 -1
  59. package/dist/tools/dynamic-tools.js.map +1 -1
  60. package/dist/tools/invoke-tool.d.ts.map +1 -1
  61. package/dist/tools/invoke-tool.js +4 -0
  62. package/dist/tools/invoke-tool.js.map +1 -1
  63. package/dist/update/update-checker.d.ts.map +1 -1
  64. package/dist/update/update-checker.js +26 -1
  65. package/dist/update/update-checker.js.map +1 -1
  66. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"project-tools.js","sourceRoot":"","sources":["../../src/project/project-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"project-tools.js","sourceRoot":"","sources":["../../src/project/project-tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Turn an MCP verification (a `reticle_flow_verify` suite run) into a first-class ReticleVerificationRun:
3
+ * assemble the artifact from the already-computed replays, persist it to .reticle/runs/ (so
4
+ * `reticle_run_export` and CI can read it), and — when logged in (cloud creds set) — best-effort push it
5
+ * to the cloud's `POST /v1/runs` so the team's dashboard Runs tab shows what the agent just verified.
6
+ *
7
+ * This is the artifact tier that maps to the dashboard's "Runs" (the OEM/CI-consumable verdict); the
8
+ * lighter per-flow RunRecord that feeds regression memory is synced separately in flow-replay-run.ts.
9
+ * Both are best-effort + opt-in: no creds → the artifact still lands on disk, nothing leaves the machine.
10
+ */
11
+ import { type FlowReplayResult } from '@reticlehq/core';
12
+ import type { ToolDeps } from '../tools/tools.js';
13
+ /** A replay plus the wall-clock time it took — the shape the verify handler already collects. */
14
+ export interface TimedReplay {
15
+ replay: FlowReplayResult;
16
+ durationMs: number;
17
+ }
18
+ /**
19
+ * Persist the suite's run artifact and best-effort mirror it to the cloud. Never throws into the verify
20
+ * tool — a disk or network failure is logged and swallowed so the verdict the agent asked for is
21
+ * unaffected. Returns the runId (for logging/tests); undefined if nothing was produced (empty suite).
22
+ */
23
+ export declare function persistAndSyncVerificationRun(deps: ToolDeps, timed: TimedReplay[], projectId: string | undefined): Promise<string | undefined>;
24
+ //# sourceMappingURL=verification-sync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verification-sync.d.ts","sourceRoot":"","sources":["../../src/runs/verification-sync.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAKL,KAAK,gBAAgB,EAEtB,MAAM,iBAAiB,CAAC;AASzB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAElD,iGAAiG;AACjG,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,gBAAgB,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;CACpB;AAyBD;;;;GAIG;AACH,wBAAsB,6BAA6B,CACjD,IAAI,EAAE,QAAQ,EACd,KAAK,EAAE,WAAW,EAAE,EACpB,SAAS,EAAE,MAAM,GAAG,SAAS,GAC5B,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAoB7B"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Turn an MCP verification (a `reticle_flow_verify` suite run) into a first-class ReticleVerificationRun:
3
+ * assemble the artifact from the already-computed replays, persist it to .reticle/runs/ (so
4
+ * `reticle_run_export` and CI can read it), and — when logged in (cloud creds set) — best-effort push it
5
+ * to the cloud's `POST /v1/runs` so the team's dashboard Runs tab shows what the agent just verified.
6
+ *
7
+ * This is the artifact tier that maps to the dashboard's "Runs" (the OEM/CI-consumable verdict); the
8
+ * lighter per-flow RunRecord that feeds regression memory is synced separately in flow-replay-run.ts.
9
+ * Both are best-effort + opt-in: no creds → the artifact still lands on disk, nothing leaves the machine.
10
+ */
11
+ import { RunAgentKind, RunFramework, RunProfile, RunTrigger, } from '@reticlehq/core';
12
+ import { homedir } from 'node:os';
13
+ import { buildVerificationRun } from './build-verification-run.js';
14
+ import { mapReplayToFlowResult } from './replay-mapping.js';
15
+ import { defaultRunId } from './runner-port.js';
16
+ import { RunStore } from './run-store.js';
17
+ import { syncRunToCloud, SyncOutcome } from '../cloud/cloud-sync.js';
18
+ import { resolveProjectCloud } from '../cloud/cloud-config.js';
19
+ import { log } from '../log.js';
20
+ /** Assemble the ReticleVerificationRun artifact for a verify suite (pure — no IO). */
21
+ function assembleRun(deps, timed, projectId) {
22
+ const flows = timed.map((t) => mapReplayToFlowResult(t.replay, t.durationMs));
23
+ const input = {
24
+ runId: defaultRunId(),
25
+ durationMs: flows.reduce((sum, f) => sum + f.durationMs, 0),
26
+ profile: RunProfile.DEV,
27
+ project: { name: projectId ?? 'reticle', framework: RunFramework.OTHER },
28
+ agent: { id: 'reticle-mcp', kind: RunAgentKind.CODING_AGENT },
29
+ trigger: { kind: RunTrigger.MANUAL },
30
+ changedFiles: [],
31
+ flows,
32
+ checks: [],
33
+ risks: [],
34
+ evidence: { consoleErrors: [], networkAnomalies: [], stateAssertions: [], timeline: [] },
35
+ };
36
+ return buildVerificationRun(input, () => deps.now());
37
+ }
38
+ /**
39
+ * Persist the suite's run artifact and best-effort mirror it to the cloud. Never throws into the verify
40
+ * tool — a disk or network failure is logged and swallowed so the verdict the agent asked for is
41
+ * unaffected. Returns the runId (for logging/tests); undefined if nothing was produced (empty suite).
42
+ */
43
+ export async function persistAndSyncVerificationRun(deps, timed, projectId) {
44
+ if (timed.length === 0)
45
+ return undefined;
46
+ let run;
47
+ try {
48
+ run = assembleRun(deps, timed, projectId);
49
+ await new RunStore(deps.fs, deps.reticleRoot).write(run);
50
+ }
51
+ catch (error) {
52
+ log('verification-run-persist-failed', {
53
+ error: error instanceof Error ? error.message : String(error),
54
+ });
55
+ return undefined;
56
+ }
57
+ // Per-project cloud: only push when THIS project has cloud attached AND its policy allows runs.
58
+ const cloud = await resolveProjectCloud(deps.fs, deps.reticleRoot, homedir(), process.env);
59
+ if (cloud.config === null || !cloud.policy.runs)
60
+ return run.runId; // not attached / runs disabled → local only
61
+ const result = await syncRunToCloud(run, cloud.config, (url, init) => fetch(url, init));
62
+ if (result.outcome !== SyncOutcome.SYNCED) {
63
+ log('cloud-run-sync-failed', { runId: run.runId, status: result.status, error: result.error });
64
+ }
65
+ return run.runId;
66
+ }
67
+ //# sourceMappingURL=verification-sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verification-sync.js","sourceRoot":"","sources":["../../src/runs/verification-sync.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ import { TelemetryEventKind } from '@reticlehq/core';
2
+ /** The current telemetry state and which control set it — what `reticle telemetry status` prints. */
3
+ export declare const describeTelemetry: (env?: NodeJS.ProcessEnv, dir?: string) => {
4
+ enabled: boolean;
5
+ reason: string;
6
+ policyUrl: string;
7
+ };
8
+ /** Persist (or lift) the machine-wide opt-out — `reticle telemetry disable` / `enable`. */
9
+ export declare const setTelemetryEnabled: (enabled: boolean, dir?: string) => void;
10
+ export interface Telemetry {
11
+ /**
12
+ * Fire one event, non-blocking. `detach: true` hands the send to a disowned child so a short-lived
13
+ * CLI process can exit immediately instead of waiting out the POST (use it from command entry
14
+ * points; daemon-side events send in-process).
15
+ */
16
+ emit(kind: TelemetryEventKind, extra?: {
17
+ sessionMs?: number;
18
+ tool?: string;
19
+ detach?: boolean;
20
+ }): Promise<void>;
21
+ readonly enabled: boolean;
22
+ /** True the very first run on this machine — the CLI emits INSTALL alongside the first INVOKE. */
23
+ readonly firstRun: boolean;
24
+ }
25
+ /**
26
+ * Build the telemetry emitter for this process. Resolves identity + opt-out ONCE; each `emit` builds a
27
+ * fully-validated core event, maps it into PostHog capture shape, and fires a best-effort POST.
28
+ * `version` is the running reticle version (for the `version` dimension); `now`/`fetchImpl` are
29
+ * injected so this is testable without a clock or network.
30
+ */
31
+ export declare const createTelemetry: (opts: {
32
+ version: string;
33
+ env?: NodeJS.ProcessEnv;
34
+ cwd?: string;
35
+ now?: () => number;
36
+ fetchImpl?: typeof fetch;
37
+ spawnImpl?: (command: string, args: string[]) => void;
38
+ }) => Telemetry;
39
+ export declare const getTelemetry: () => Telemetry;
40
+ export { TelemetryEventKind };
41
+ //# sourceMappingURL=telemetry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../../src/telemetry/telemetry.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAE,kBAAkB,EAAgD,MAAM,iBAAiB,CAAC;AA4FnG,qGAAqG;AACrG,eAAO,MAAM,iBAAiB,GAC5B,MAAK,MAAM,CAAC,UAAwB,EACpC,MAAK,MAAoB,KACxB;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAgBvD,CAAC;AAEF,2FAA2F;AAC3F,eAAO,MAAM,mBAAmB,GAAI,SAAS,OAAO,EAAE,MAAK,MAAoB,KAAG,IAQjF,CAAC;AAEF,MAAM,WAAW,SAAS;IACxB;;;;OAIG;IACH,IAAI,CACF,IAAI,EAAE,kBAAkB,EACxB,KAAK,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,GAC9D,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,kGAAkG;IAClG,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC5B;AAID;;;;;GAKG;AACH,eAAO,MAAM,eAAe,GAAI,MAAM;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;CACvD,KAAG,SAwEH,CAAC;AAOF,eAAO,MAAM,YAAY,QAAO,SAC8B,CAAC;AAE/D,OAAO,EAAE,kBAAkB,EAAE,CAAC"}
@@ -0,0 +1,220 @@
1
+ /**
2
+ * Anonymous adoption telemetry — the OSS runtime's ONLY phone-home for product metrics (DAU/WAU/MAU,
3
+ * invocations, sessions, installs, tool usage). It answers the "npm downloads don't count, show me
4
+ * platform usage" question without collecting anything personal:
5
+ *
6
+ * - identity is a random UUID minted locally at `~/.reticle/telemetry-id` (never derived from you),
7
+ * - the project is a one-way HASH of the cwd (counts DISTINCT projects, reveals none),
8
+ * - it is strictly opt-OUT: `RETICLE_TELEMETRY=0` or the `DO_NOT_TRACK` convention disables it,
9
+ * - it is best-effort and non-blocking: a send failure NEVER changes what the tool does.
10
+ *
11
+ * Events are `@reticlehq/core`'s `TelemetryEventSchema`, mapped at the wire into PostHog's capture
12
+ * format (https://posthog.com/docs/api/capture) — PostHog is the analytics backend until Reticle Cloud
13
+ * grows its own; a project API key is WRITE-ONLY by design, so embedding it in an OSS client is safe.
14
+ * Everything here is wrapped so a telemetry bug can never surface to a user — a broken metric must not
15
+ * break a verification.
16
+ */
17
+ import { spawn } from 'node:child_process';
18
+ import { randomUUID, createHash } from 'node:crypto';
19
+ import { readFileSync, writeFileSync, mkdirSync, existsSync, rmSync } from 'node:fs';
20
+ import { homedir, platform } from 'node:os';
21
+ import { join } from 'node:path';
22
+ import { TelemetryEventKind, TELEMETRY_EVENT_VERSION } from '@reticlehq/core';
23
+ import { SERVER_VERSION } from '../server-version.js';
24
+ const RETICLE_DIR = join(homedir(), '.reticle');
25
+ const ID_FILE = join(RETICLE_DIR, 'telemetry-id');
26
+ const NOTICE_FILE = join(RETICLE_DIR, 'telemetry-notice-shown');
27
+ /** Presence of this file = a persistent, machine-wide opt-out (`reticle telemetry disable`). */
28
+ const OPT_OUT_FILE = join(RETICLE_DIR, 'telemetry-opt-out');
29
+ /** Where the full disclosure lives — printed in the first-run notice and `reticle telemetry status`. */
30
+ const POLICY_URL = 'https://github.com/reticlehq/reticle/blob/main/docs/telemetry.md';
31
+ /** PostHog batch-capture endpoint (US cloud). `RETICLE_TELEMETRY_URL` overrides the host (EU/self-host). */
32
+ const DEFAULT_URL = 'https://us.i.posthog.com';
33
+ const TELEMETRY_PATH = '/batch/';
34
+ /**
35
+ * The write-only PostHog project key (safe to embed: it can only WRITE events, never read anything —
36
+ * PostHog's own docs ship it in client-side JS). `RETICLE_TELEMETRY_KEY` overrides it; empty disables.
37
+ */
38
+ const POSTHOG_KEY = 'phc_q4yCxKMXHfWQ43VAz4HxJXZFLqFi4nBbg5v3avemggYo';
39
+ /**
40
+ * Skip PostHog person-profile processing: our users are anonymous by construction (never $identify'd),
41
+ * so profiles buy nothing — and personless events are up to 4x cheaper while unique counts/retention
42
+ * still key on distinct_id.
43
+ */
44
+ const POSTHOG_PERSONLESS = { $process_person_profile: false };
45
+ const SEND_TIMEOUT_MS = 2000;
46
+ /**
47
+ * The sender a `detach: true` emit runs in a disowned child (argv: [url, body]) — an in-process fetch
48
+ * keeps Node's event loop alive until the POST finishes, which taxed every short-lived CLI command
49
+ * (`reticle version`/`gate`) ~800ms. Long-lived daemon events still send in-process: a spawn per tool
50
+ * call would be far heavier than a fetch inside an already-running server.
51
+ */
52
+ const DETACHED_SEND_SCRIPT = "fetch(process.argv[1],{method:'POST',headers:{'content-type':'application/json'}," +
53
+ `body:process.argv[2],signal:AbortSignal.timeout(${SEND_TIMEOUT_MS})})` +
54
+ '.catch(()=>{}).finally(()=>process.exit(0))';
55
+ /** Env var names — mirror cloud-sync's `RETICLE_*` convention. */
56
+ const Env = {
57
+ DISABLE: 'RETICLE_TELEMETRY', // "0" / "false" / "off" → disabled
58
+ DO_NOT_TRACK: 'DO_NOT_TRACK', // the cross-tool opt-out convention (any truthy value)
59
+ URL: 'RETICLE_TELEMETRY_URL', // override the PostHog host (EU cloud / self-hosted)
60
+ KEY: 'RETICLE_TELEMETRY_KEY', // override the PostHog project key
61
+ CI: 'CI', // presence marks a CI environment
62
+ VITEST: 'VITEST', // set by vitest — unit tests must never phone home
63
+ };
64
+ const isDisabled = (env) => {
65
+ const off = new Set(['0', 'false', 'off', 'no']);
66
+ if (off.has((env[Env.DISABLE] ?? '').toLowerCase()))
67
+ return true;
68
+ if (env[Env.VITEST] !== undefined)
69
+ return true; // a test run is not a user
70
+ const dnt = env[Env.DO_NOT_TRACK];
71
+ return typeof dnt === 'string' && dnt !== '' && dnt !== '0';
72
+ };
73
+ /** Read (or mint-and-persist) the anonymous machine id. `firstRun` is true the run that created it. */
74
+ const resolveIdentity = () => {
75
+ try {
76
+ if (existsSync(ID_FILE)) {
77
+ const id = readFileSync(ID_FILE, 'utf8').trim();
78
+ if (id.length > 0)
79
+ return { anonymousId: id, firstRun: false };
80
+ }
81
+ const id = randomUUID();
82
+ mkdirSync(RETICLE_DIR, { recursive: true });
83
+ writeFileSync(ID_FILE, id, 'utf8');
84
+ return { anonymousId: id, firstRun: true };
85
+ }
86
+ catch {
87
+ // Can't persist (read-only home, sandbox): still report, just as a fresh ephemeral id each time.
88
+ return { anonymousId: randomUUID(), firstRun: false };
89
+ }
90
+ };
91
+ /** One-way project fingerprint: distinct-count of this = "projects Reticle is used in", reveals nothing. */
92
+ const projectFingerprint = (cwd) => createHash('sha256').update(cwd).digest('hex').slice(0, 32);
93
+ /** Print the opt-out notice exactly once per machine (honest disclosure, the OSS-trust bar). */
94
+ const showNoticeOnce = () => {
95
+ try {
96
+ if (existsSync(NOTICE_FILE))
97
+ return;
98
+ mkdirSync(RETICLE_DIR, { recursive: true });
99
+ writeFileSync(NOTICE_FILE, '1', 'utf8');
100
+ process.stderr.write('reticle: anonymous usage telemetry helps improve reticle — no code, no PII, ' +
101
+ `and your app's data never leaves your machine (${POLICY_URL}). ` +
102
+ 'Opt out any time: reticle telemetry disable\n');
103
+ }
104
+ catch {
105
+ /* notice is a courtesy; never fail on it */
106
+ }
107
+ };
108
+ /** The current telemetry state and which control set it — what `reticle telemetry status` prints. */
109
+ export const describeTelemetry = (env = process.env, dir = RETICLE_DIR) => {
110
+ if (isDisabled(env)) {
111
+ return { enabled: false, reason: 'disabled by environment variable', policyUrl: POLICY_URL };
112
+ }
113
+ if (existsSync(join(dir, 'telemetry-opt-out'))) {
114
+ return {
115
+ enabled: false,
116
+ reason: 'disabled via `reticle telemetry disable`',
117
+ policyUrl: POLICY_URL,
118
+ };
119
+ }
120
+ return {
121
+ enabled: true,
122
+ reason: 'anonymous usage metrics only — no code, no PII',
123
+ policyUrl: POLICY_URL,
124
+ };
125
+ };
126
+ /** Persist (or lift) the machine-wide opt-out — `reticle telemetry disable` / `enable`. */
127
+ export const setTelemetryEnabled = (enabled, dir = RETICLE_DIR) => {
128
+ const optOutFile = join(dir, 'telemetry-opt-out');
129
+ if (enabled) {
130
+ rmSync(optOutFile, { force: true });
131
+ return;
132
+ }
133
+ mkdirSync(dir, { recursive: true });
134
+ writeFileSync(optOutFile, '1', 'utf8');
135
+ };
136
+ const NOOP = { emit: async () => { }, enabled: false, firstRun: false };
137
+ /**
138
+ * Build the telemetry emitter for this process. Resolves identity + opt-out ONCE; each `emit` builds a
139
+ * fully-validated core event, maps it into PostHog capture shape, and fires a best-effort POST.
140
+ * `version` is the running reticle version (for the `version` dimension); `now`/`fetchImpl` are
141
+ * injected so this is testable without a clock or network.
142
+ */
143
+ export const createTelemetry = (opts) => {
144
+ const env = opts.env ?? process.env;
145
+ if (isDisabled(env))
146
+ return NOOP;
147
+ try {
148
+ if (existsSync(OPT_OUT_FILE))
149
+ return NOOP; // the persistent `reticle telemetry disable` opt-out
150
+ }
151
+ catch {
152
+ /* unreadable home dir — fall through; the env-var opt-outs above still apply */
153
+ }
154
+ const apiKey = env[Env.KEY] ?? POSTHOG_KEY;
155
+ if (apiKey === '')
156
+ return NOOP; // no key baked in (dev/test build) — nowhere to send, stay silent
157
+ const now = opts.now ?? (() => Date.now());
158
+ const doFetch = opts.fetchImpl ?? fetch;
159
+ const url = `${(env[Env.URL] ?? DEFAULT_URL).replace(/\/+$/, '')}${TELEMETRY_PATH}`;
160
+ const ci = env[Env.CI] !== undefined && env[Env.CI] !== '';
161
+ const os = platform();
162
+ const { anonymousId, firstRun } = resolveIdentity();
163
+ const projectId = projectFingerprint(opts.cwd ?? process.cwd());
164
+ showNoticeOnce();
165
+ const spawnDetached = opts.spawnImpl ??
166
+ ((command, args) => {
167
+ spawn(command, args, { detached: true, stdio: 'ignore' }).unref();
168
+ });
169
+ const emit = async (kind, extra) => {
170
+ const event = {
171
+ v: TELEMETRY_EVENT_VERSION,
172
+ anonymousId,
173
+ projectId,
174
+ event: kind,
175
+ ts: now(),
176
+ version: opts.version,
177
+ ci,
178
+ os,
179
+ ...(extra?.sessionMs !== undefined ? { sessionMs: extra.sessionMs } : {}),
180
+ ...(extra?.tool !== undefined ? { tool: extra.tool } : {}),
181
+ };
182
+ // Map the core contract onto PostHog's capture shape: id/name/time move up, the rest are properties.
183
+ const { anonymousId: distinctId, event: name, ts, ...properties } = event;
184
+ const body = JSON.stringify({
185
+ api_key: apiKey,
186
+ batch: [
187
+ {
188
+ event: name,
189
+ distinct_id: distinctId,
190
+ timestamp: new Date(ts).toISOString(),
191
+ properties: { ...properties, ...POSTHOG_PERSONLESS },
192
+ },
193
+ ],
194
+ });
195
+ try {
196
+ if (extra?.detach === true && opts.fetchImpl === undefined) {
197
+ spawnDetached(process.execPath, ['-e', DETACHED_SEND_SCRIPT, url, body]);
198
+ return;
199
+ }
200
+ await doFetch(url, {
201
+ method: 'POST',
202
+ headers: { 'content-type': 'application/json' },
203
+ body,
204
+ signal: AbortSignal.timeout(SEND_TIMEOUT_MS),
205
+ });
206
+ }
207
+ catch {
208
+ /* best-effort: a lost metric must never surface to the user */
209
+ }
210
+ };
211
+ return { emit, enabled: true, firstRun };
212
+ };
213
+ /**
214
+ * The process-wide emitter. One identity resolution + one opt-out check per process; both the CLI
215
+ * lifecycle (install/invoke/session) and the per-tool hook in `runTool` share it.
216
+ */
217
+ let singleton;
218
+ export const getTelemetry = () => (singleton ??= createTelemetry({ version: SERVER_VERSION }));
219
+ export { TelemetryEventKind };
220
+ //# sourceMappingURL=telemetry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../../src/telemetry/telemetry.ts"],"names":[],"mappings":"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"}
@@ -43,7 +43,7 @@ export function buildDynamicTools(allTools) {
43
43
  const byName = new Map(allTools.map((t) => [t.name, t]));
44
44
  const reticleTools = {
45
45
  name: ReticleTool.TOOLS,
46
- description: 'Discover Reticle tools on demand. Call with no arguments to list every tool (name + one-line summary); call with names:["reticle_network", …] to load full descriptions and parameters for specific tools. Then invoke them with reticle_run. This avoids paying for every tool definition on every turn.',
46
+ description: 'Discover Reticle tools on demand. Call with no arguments to list every tool (name + one-line summary); call with names:["reticle_network", …] to load full descriptions and parameters for specific tools. Then invoke them with reticle_run. This avoids paying for every tool definition on every turn. To make a verification REUSABLE (record once, replay free forever), the flow workflow lives here: reticle_record_start → act → reticle_flow_save → reticle_flow_verify (and reticle_flow_heal on drift). Load those names when you want to save or re-run a flow.',
47
47
  inputSchema: {
48
48
  names: z
49
49
  .array(z.string())
@@ -1 +1 @@
1
- {"version":3,"file":"dynamic-tools.js","sourceRoot":"","sources":["../../src/tools/dynamic-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C;;;;;;;;;;;;;;;;GAgBG;AAEH,uFAAuF;AACvF,SAAS,aAAa,CAAC,WAAmB;IACxC,MAAM,EAAE,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,IAAI,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;IAC9D,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAChC,MAAM,QAAQ,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1D,OAAO,QAAQ,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC;AACzE,CAAC;AAQD;kFACkF;AAClF,SAAS,SAAS,CAAC,KAAoB;IACrC,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;QACpD,IAAI;QACJ,QAAQ,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE;QAC9B,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,EAAE;KACtC,CAAC,CAAC,CAAC;AACN,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAAmB;IACnD,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAEzD,MAAM,YAAY,GAAY;QAC5B,IAAI,EAAE,WAAW,CAAC,KAAK;QACvB,WAAW,EACT,2SAA2S;QAC7S,WAAW,EAAE;YACX,KAAK,EAAE,CAAC;iBACL,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;iBACjB,QAAQ,EAAE;iBACV,QAAQ,CAAC,4EAA4E,CAAC;SAC1F;QACD,OAAO,EAAE,CAAC,KAAe,EAAE,IAA6B,EAAE,EAAE;YAC1D,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACxC,CAAC,CAAE,IAAI,CAAC,OAAO,CAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC;gBAChF,CAAC,CAAC,SAAS,CAAC;YACd,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC9C,OAAO,OAAO,CAAC,OAAO,CAAC;oBACrB,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;oBACrF,IAAI,EAAE,qFAAqF;iBAC5F,CAAC,CAAC;YACL,CAAC;YACD,OAAO,OAAO,CAAC,OAAO,CAAC;gBACrB,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;oBACrB,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBACxB,OAAO,CAAC,KAAK,SAAS;wBACpB,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE;wBACpC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC;gBAChF,CAAC,CAAC;aACH,CAAC,CAAC;QACL,CAAC;KACF,CAAC;IAEF,MAAM,UAAU,GAAY;QAC1B,IAAI,EAAE,WAAW,CAAC,GAAG;QACrB,WAAW,EACT,0MAA0M;QAC5M,WAAW,EAAE;YACX,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;YACvE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;SACnF;QACD,OAAO,EAAE,KAAK,EAAE,IAAc,EAAE,IAA6B,EAAE,EAAE;YAC/D,MAAM,IAAI,GAAG,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAClE,MAAM,QAAQ,GACZ,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI;gBACvD,CAAC,CAAE,IAAI,CAAC,MAAM,CAA6B;gBAC3C,CAAC,CAAC,EAAE,CAAC;YACT,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAChC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,OAAO,EAAE,KAAK,EAAE,iBAAiB,IAAI,GAAG,EAAE,SAAS,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;YACrF,CAAC;YACD,IAAI,CAAC;gBACH,OAAO,MAAM,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;YAC/C,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO;oBACL,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;oBAC7D,IAAI,EAAE,IAAI;oBACV,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC;oBACrC,IAAI,EAAE,8CAA8C;iBACrD,CAAC;YACJ,CAAC;QACH,CAAC;KACF,CAAC;IAEF,OAAO,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;AACpC,CAAC"}
1
+ {"version":3,"file":"dynamic-tools.js","sourceRoot":"","sources":["../../src/tools/dynamic-tools.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"invoke-tool.d.ts","sourceRoot":"","sources":["../../src/tools/invoke-tool.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEpD;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,EAAE,WAAW,CAAC,MAAM,CAuBlD,CAAC;AAEH;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,EAAE,WAAW,CAAC,MAAM,CAkBnD,CAAC;AAMH;;;;;GAKG;AACH,wBAAsB,OAAO,CAC3B,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,QAAQ,EACd,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC,OAAO,CAAC,CAsClB"}
1
+ {"version":3,"file":"invoke-tool.d.ts","sourceRoot":"","sources":["../../src/tools/invoke-tool.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEpD;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,EAAE,WAAW,CAAC,MAAM,CAuBlD,CAAC;AAEH;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,EAAE,WAAW,CAAC,MAAM,CAkBnD,CAAC;AAMH;;;;;GAKG;AACH,wBAAsB,OAAO,CAC3B,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,QAAQ,EACd,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC,OAAO,CAAC,CAyClB"}
@@ -1,4 +1,5 @@
1
1
  import { healthEnvelope } from '../session/session-health.js';
2
+ import { getTelemetry, TelemetryEventKind } from '../telemetry/telemetry.js';
2
3
  import { asString } from './tools-helpers.js';
3
4
  import { ReticleTool } from './tool-names.js';
4
5
  /**
@@ -66,6 +67,9 @@ function isPlainObject(value) {
66
67
  * (handlers that already add health are left untouched) and never alters non-object results.
67
68
  */
68
69
  export async function runTool(tool, deps, args) {
70
+ // Both dispatch paths (MCP + programmatic) pass through here — the one place "which tool is mostly
71
+ // used" can be counted. Fire-and-forget: telemetry never delays or fails a tool call.
72
+ void getTelemetry().emit(TelemetryEventKind.TOOL, { tool: tool.name });
69
73
  const rawSessionId = asString(args['sessionId']);
70
74
  const bound = SESSION_BOUND_TOOLS.has(tool.name);
71
75
  // Resolve the session identity ONCE, up front, for a live-session tool. The lease heartbeat must
@@ -1 +1 @@
1
- {"version":3,"file":"invoke-tool.js","sourceRoot":"","sources":["../../src/tools/invoke-tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"invoke-tool.js","sourceRoot":"","sources":["../../src/tools/invoke-tool.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"update-checker.d.ts","sourceRoot":"","sources":["../../src/update/update-checker.ts"],"names":[],"mappings":"AAcA,UAAU,cAAc;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,OAAO,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,+EAA+E;IAC/E,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,UAAU,cAAc;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE;QACR,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;KAC5B,CAAC;CACH;AAED,wBAAgB,YAAY,IAAI,cAAc,GAAG,IAAI,CAQpD;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI,CAG3D;AAgCD,sGAAsG;AACtG,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,OAAO,CAAC,cAAc,CAAC,CAAC;IACzC,YAAY,EAAE,MAAM,cAAc,GAAG,IAAI,CAAC;IAC1C,YAAY,EAAE,CAAC,QAAQ,EAAE,cAAc,KAAK,IAAI,CAAC;CAClD;AAID;;;;GAIG;AACH,wBAAsB,cAAc,CAClC,cAAc,EAAE,MAAM,EACtB,GAAG,EAAE,MAAM,MAAM,EACjB,KAAK,GAAE,gBAA+B,GACrC,OAAO,CAAC,cAAc,CAAC,CAiCzB"}
1
+ {"version":3,"file":"update-checker.d.ts","sourceRoot":"","sources":["../../src/update/update-checker.ts"],"names":[],"mappings":"AAcA,UAAU,cAAc;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,OAAO,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,+EAA+E;IAC/E,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,UAAU,cAAc;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE;QACR,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;KAC5B,CAAC;CACH;AA8BD,wBAAgB,YAAY,IAAI,cAAc,GAAG,IAAI,CAQpD;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI,CAG3D;AAgCD,sGAAsG;AACtG,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,OAAO,CAAC,cAAc,CAAC,CAAC;IACzC,YAAY,EAAE,MAAM,cAAc,GAAG,IAAI,CAAC;IAC1C,YAAY,EAAE,CAAC,QAAQ,EAAE,cAAc,KAAK,IAAI,CAAC;CAClD;AAID;;;;GAIG;AACH,wBAAsB,cAAc,CAClC,cAAc,EAAE,MAAM,EACtB,GAAG,EAAE,MAAM,MAAM,EACjB,KAAK,GAAE,gBAA+B,GACrC,OAAO,CAAC,cAAc,CAAC,CAiCzB"}
@@ -10,6 +10,31 @@ const MANIFEST_PATH = join(RETICLE_HOME, 'update-manifest.json');
10
10
  // Poll the package that carries the bin (@reticlehq/server), so the version we compare against and
11
11
  // the version we install are the same package — not @reticlehq/core, which only tracks it by luck.
12
12
  const NPM_REGISTRY = `https://registry.npmjs.org/${RETICLE_NPM_PACKAGE}/latest`;
13
+ // npm's registry is trusted, but this response is persisted to disk AND echoed into the agent's
14
+ // context, so validate its shape before it flows anywhere: a plausible semver, bounded free-text.
15
+ const VERSION_RE = /^[0-9]+\.[0-9]+\.[0-9]+(?:[-+][0-9A-Za-z.-]+)?$/;
16
+ const MAX_MANIFEST_TEXT = 20_000;
17
+ /** Reject an implausible version (throws → caller falls back to cache) and bound the free-text
18
+ * fields, so a malformed or oversized registry response can neither corrupt nor bloat the manifest. */
19
+ function validateNpmInfo(info) {
20
+ if (typeof info.version !== 'string' || !VERSION_RE.test(info.version)) {
21
+ throw new Error('npm registry returned an implausible version');
22
+ }
23
+ const changelog = typeof info.reticle?.changelog === 'string'
24
+ ? info.reticle.changelog.slice(0, MAX_MANIFEST_TEXT)
25
+ : undefined;
26
+ const breakingChanges = Array.isArray(info.reticle?.breakingChanges)
27
+ ? info.reticle.breakingChanges
28
+ .filter((x) => typeof x === 'string')
29
+ .slice(0, 100)
30
+ .map((s) => s.slice(0, MAX_MANIFEST_TEXT))
31
+ : undefined;
32
+ const reticle = {
33
+ ...(changelog !== undefined ? { changelog } : {}),
34
+ ...(breakingChanges !== undefined ? { breakingChanges } : {}),
35
+ };
36
+ return { version: info.version, reticle };
37
+ }
13
38
  export function loadManifest() {
14
39
  if (!fs.existsSync(MANIFEST_PATH))
15
40
  return null;
@@ -66,7 +91,7 @@ export async function checkForUpdate(currentVersion, now, ports = defaultPorts)
66
91
  return cached;
67
92
  }
68
93
  try {
69
- const info = await ports.fetchInfo();
94
+ const info = validateNpmInfo(await ports.fetchInfo());
70
95
  const updateAvailable = info.version !== currentVersion;
71
96
  const manifest = {
72
97
  currentVersion,
@@ -1 +1 @@
1
- {"version":3,"file":"update-checker.js","sourceRoot":"","sources":["../../src/update/update-checker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"update-checker.js","sourceRoot":"","sources":["../../src/update/update-checker.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@reticlehq/server",
3
- "version": "2.2.0",
3
+ "version": "2.2.1",
4
4
  "description": "Reticle bridge + MCP server. Hosts the browser WS endpoint and exposes MCP tools to the coding agent.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -22,7 +22,7 @@
22
22
  "@modelcontextprotocol/sdk": "^1.13.0",
23
23
  "ws": "^8.18.0",
24
24
  "zod": "^3.24.1",
25
- "@reticlehq/core": "2.2.0"
25
+ "@reticlehq/core": "2.2.1"
26
26
  },
27
27
  "devDependencies": {
28
28
  "@types/pngjs": "^6.0.5",