@danypops/tickets 0.16.0 → 0.16.2

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@danypops/tickets",
3
- "version": "0.16.0",
3
+ "version": "0.16.2",
4
4
  "description": "Unified CLI, daemon, and TypeScript library for issue tracking across GitHub, GitLab, and Jira.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -46,9 +46,9 @@
46
46
  }
47
47
  },
48
48
  "dependencies": {
49
- "@danypops/vehicle-core": "^0.15.0",
50
- "@danypops/vehicle-server": "^0.24.1",
51
- "@danypops/vehicle-client": "^0.8.1",
49
+ "@danypops/vehicle-core": "^0.17.1",
50
+ "@danypops/vehicle-server": "^0.25.0",
51
+ "@danypops/vehicle-client": "^0.10.1",
52
52
  "@danypops/enigma-client": "^0.6.1",
53
53
  "@gitbeaker/rest": "^43.8.0",
54
54
  "commander": "^12.1.0",
@@ -8,6 +8,9 @@
8
8
  import type { Database } from "bun:sqlite";
9
9
  import type { StartDaemonOptions } from "@danypops/vehicle-server/daemon";
10
10
  import { createLogger, type Logger } from "@danypops/vehicle-server/logging";
11
+ import { openVehicleMetricsStore, type VehicleMetricsStore } from "@danypops/vehicle-server/metrics";
12
+ import { createVehicleMetricsMiddleware } from "@danypops/vehicle-server/metrics-middleware";
13
+ import { registerVehicleMetricsOperations } from "@danypops/vehicle-server/metrics-operations";
11
14
  import { ensureAuthToken, type PathEnvironment, resolveDaemonPaths } from "@danypops/vehicle-server/paths";
12
15
  import { checkpoint, openSqliteWithPragmas } from "@danypops/vehicle-server/storage";
13
16
  import { createTicketsVehicleRegistry, syncDiscoverAvailability } from "../agent-tools/tickets-vehicle.js";
@@ -66,6 +69,7 @@ export interface BootstrappedDaemon {
66
69
  watches: WatchStore;
67
70
  sessionIdentity: SqliteSessionIdentityStore;
68
71
  service: TicketService;
72
+ metrics: VehicleMetricsStore;
69
73
  options: StartDaemonOptions;
70
74
  }
71
75
 
@@ -118,6 +122,15 @@ export async function bootstrap(opts: BootstrapOptions = {}): Promise<Bootstrapp
118
122
  onShutdownRequested,
119
123
  } as TicketsAppDeps);
120
124
 
125
+ // Records how often each real operation is invoked (server-side, every caller) plus, via
126
+ // metrics.recordClientEvent, client-observed Vehicle Shell meta-tool calls -- see
127
+ // @danypops/vehicle-server's own metrics README section. Wired directly onto the same registry
128
+ // every real ticket operation is already registered on, so it's discoverable through the exact
129
+ // same tools_list/tools_man path as any other operation.
130
+ const metrics = openVehicleMetricsStore(paths.metrics);
131
+ vehicleRegistry.useExecutionMiddleware(createVehicleMetricsMiddleware(metrics, TICKETS_VEHICLE_NAME));
132
+ registerVehicleMetricsOperations(vehicleRegistry, metrics, TICKETS_VEHICLE_NAME);
133
+
121
134
  const options: StartDaemonOptions = {
122
135
  daemonLabel: "Tickets",
123
136
  handlePath: paths.handle,
@@ -186,8 +199,9 @@ export async function bootstrap(opts: BootstrapOptions = {}): Promise<Bootstrapp
186
199
  }),
187
200
  onShutdown: () => {
188
201
  db.close();
202
+ metrics.close();
189
203
  },
190
204
  };
191
205
 
192
- return { db, ledger, focusStore, queries, stageStore, watches, sessionIdentity, service, options };
206
+ return { db, ledger, focusStore, queries, stageStore, watches, sessionIdentity, service, metrics, options };
193
207
  }