@intelligentelectron/pcb-lens 0.0.4 → 0.0.6
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/CHANGELOG.md +27 -0
- package/README.md +2 -0
- package/dist/cli/commands.d.ts +5 -0
- package/dist/cli/commands.d.ts.map +1 -1
- package/dist/cli/commands.js +19 -3
- package/dist/cli/commands.js.map +1 -1
- package/dist/cli/updater.js +1 -1
- package/dist/cli/updater.js.map +1 -1
- package/dist/cli/version.d.ts.map +1 -0
- package/dist/{version.js → cli/version.js} +1 -1
- package/dist/cli/version.js.map +1 -0
- package/dist/index.js +6 -1
- package/dist/index.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +22 -133
- package/dist/server.js.map +1 -1
- package/dist/telemetry.d.ts +61 -0
- package/dist/telemetry.d.ts.map +1 -0
- package/dist/telemetry.js +184 -0
- package/dist/telemetry.js.map +1 -0
- package/dist/tools/export-cadence-board.d.ts +8 -0
- package/dist/tools/export-cadence-board.d.ts.map +1 -0
- package/dist/tools/export-cadence-board.js +109 -0
- package/dist/tools/export-cadence-board.js.map +1 -0
- package/dist/tools/export-cadence-constraints.d.ts +7 -0
- package/dist/tools/export-cadence-constraints.d.ts.map +1 -0
- package/dist/tools/export-cadence-constraints.js +94 -0
- package/dist/tools/export-cadence-constraints.js.map +1 -0
- package/dist/tools/get-design-overview.d.ts +5 -0
- package/dist/tools/get-design-overview.d.ts.map +1 -0
- package/dist/tools/get-design-overview.js +104 -0
- package/dist/tools/get-design-overview.js.map +1 -0
- package/dist/tools/lib/async-mutex.d.ts.map +1 -0
- package/dist/tools/lib/async-mutex.js.map +1 -0
- package/dist/tools/lib/cadence.d.ts +24 -0
- package/dist/tools/lib/cadence.d.ts.map +1 -0
- package/dist/tools/lib/cadence.js +58 -0
- package/dist/tools/lib/cadence.js.map +1 -0
- package/dist/{types.d.ts → tools/lib/types.d.ts} +64 -0
- package/dist/tools/lib/types.d.ts.map +1 -0
- package/dist/tools/lib/types.js.map +1 -0
- package/dist/tools/lib/wasm-embed.d.ts.map +1 -0
- package/dist/tools/lib/wasm-embed.js.map +1 -0
- package/dist/tools/lib/xml-utils.d.ts.map +1 -0
- package/dist/tools/lib/xml-utils.js.map +1 -0
- package/dist/tools/query-components.d.ts +5 -0
- package/dist/tools/query-components.d.ts.map +1 -0
- package/dist/tools/query-components.js +128 -0
- package/dist/tools/query-components.js.map +1 -0
- package/dist/tools/query-constraints.d.ts +5 -0
- package/dist/tools/query-constraints.d.ts.map +1 -0
- package/dist/tools/query-constraints.js +310 -0
- package/dist/tools/query-constraints.js.map +1 -0
- package/dist/tools/query-net.d.ts +5 -0
- package/dist/tools/query-net.d.ts.map +1 -0
- package/dist/tools/query-net.js +149 -0
- package/dist/tools/query-net.js.map +1 -0
- package/dist/tools/render-net.d.ts +5 -0
- package/dist/tools/render-net.d.ts.map +1 -0
- package/dist/tools/render-net.js +683 -0
- package/dist/tools/render-net.js.map +1 -0
- package/dist/tools/shared.d.ts +20 -0
- package/dist/tools/shared.d.ts.map +1 -0
- package/dist/tools/shared.js +102 -0
- package/dist/tools/shared.js.map +1 -0
- package/package.json +1 -1
- package/dist/async-mutex.d.ts.map +0 -1
- package/dist/async-mutex.js.map +0 -1
- package/dist/service.d.ts +0 -25
- package/dist/service.d.ts.map +0 -1
- package/dist/service.js +0 -1270
- package/dist/service.js.map +0 -1
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js.map +0 -1
- package/dist/version.d.ts.map +0 -1
- package/dist/version.js.map +0 -1
- package/dist/wasm-embed.d.ts.map +0 -1
- package/dist/wasm-embed.js.map +0 -1
- package/dist/xml-utils.d.ts.map +0 -1
- package/dist/xml-utils.js.map +0 -1
- /package/dist/{version.d.ts → cli/version.d.ts} +0 -0
- /package/dist/{async-mutex.d.ts → tools/lib/async-mutex.d.ts} +0 -0
- /package/dist/{async-mutex.js → tools/lib/async-mutex.js} +0 -0
- /package/dist/{types.js → tools/lib/types.js} +0 -0
- /package/dist/{wasm-embed.d.ts → tools/lib/wasm-embed.d.ts} +0 -0
- /package/dist/{wasm-embed.js → tools/lib/wasm-embed.js} +0 -0
- /package/dist/{xml-utils.d.ts → tools/lib/xml-utils.d.ts} +0 -0
- /package/dist/{xml-utils.js → tools/lib/xml-utils.js} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,31 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [0.0.6] - 2026-02-27
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- Local JSONL telemetry for usage analytics (session info and tool invocations, local-only, fire-and-forget)
|
|
13
|
+
- `--export-telemetry` CLI flag to export telemetry data as a zip file
|
|
14
|
+
- API documentation in `docs/` (tool reference, response schemas, guides)
|
|
15
|
+
|
|
16
|
+
## [0.0.5] - 2026-02-27
|
|
17
|
+
|
|
18
|
+
### Added
|
|
19
|
+
|
|
20
|
+
- `export_cadence_constraints` tool for exporting Cadence `.brd` constraint data to `.tcfx` XML (Windows only)
|
|
21
|
+
- `query_constraints` tool for parsing `.tcfx` files: overview mode (section names, object counts) and section query mode (constraint objects with attributes, references, members, cross-section stackup)
|
|
22
|
+
- Shared Cadence utilities module (`src/tools/lib/cadence.ts`) with install detection, license mutex, and platform guard
|
|
23
|
+
|
|
24
|
+
### Changed
|
|
25
|
+
|
|
26
|
+
- Refactored `export_cadence_board` to use shared Cadence utilities, ensuring a single mutex across all Cadence export tools
|
|
27
|
+
- Enforced strict module hierarchy: tool files import only from `./lib/` and `./shared.js`, no peer imports
|
|
28
|
+
|
|
29
|
+
### Removed
|
|
30
|
+
|
|
31
|
+
- Claude Code Review and Claude CI/CD GitHub workflows
|
|
32
|
+
|
|
8
33
|
## [0.0.4] - 2026-02-24
|
|
9
34
|
|
|
10
35
|
### Removed
|
|
@@ -45,6 +70,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
45
70
|
- Release automation with CI workflows and binary compilation
|
|
46
71
|
- Integration tests against IPC-2581 consortium fixtures
|
|
47
72
|
|
|
73
|
+
[0.0.6]: https://github.com/IntelligentElectron/pcb-lens/releases/tag/v0.0.6
|
|
74
|
+
[0.0.5]: https://github.com/IntelligentElectron/pcb-lens/releases/tag/v0.0.5
|
|
48
75
|
[0.0.4]: https://github.com/IntelligentElectron/pcb-lens/releases/tag/v0.0.4
|
|
49
76
|
[0.0.3]: https://github.com/IntelligentElectron/pcb-lens/releases/tag/v0.0.3
|
|
50
77
|
[0.0.2]: https://github.com/IntelligentElectron/pcb-lens/releases/tag/v0.0.2
|
package/README.md
CHANGED
|
@@ -141,6 +141,8 @@ Then enable it in **Configure Tools** (click the tools icon in Copilot chat).
|
|
|
141
141
|
|
|
142
142
|
## Documentation
|
|
143
143
|
|
|
144
|
+
See [docs/](docs/README.md) for API documentation and response schemas.
|
|
145
|
+
|
|
144
146
|
See [CONTRIBUTING.md](CONTRIBUTING.md) for development guidelines.
|
|
145
147
|
|
|
146
148
|
---
|
package/dist/cli/commands.d.ts
CHANGED
|
@@ -20,4 +20,9 @@ export declare const handleUpdateCommand: () => Promise<void>;
|
|
|
20
20
|
* Removes the binary and PATH entries from shell rc files.
|
|
21
21
|
*/
|
|
22
22
|
export declare const handleUninstallCommand: () => Promise<void>;
|
|
23
|
+
/**
|
|
24
|
+
* Handle --export-telemetry command.
|
|
25
|
+
* Exports telemetry data as a zip file in the current working directory.
|
|
26
|
+
*/
|
|
27
|
+
export declare const handleExportTelemetryCommand: () => Promise<void>;
|
|
23
28
|
//# sourceMappingURL=commands.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/cli/commands.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/cli/commands.ts"],"names":[],"mappings":"AAAA;;GAEG;AAeH;;GAEG;AACH,eAAO,MAAM,YAAY,QAAO,IAE/B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,SAAS,QAAO,IAsB5B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,QAAa,OAAO,CAAC,IAAI,CA4CxD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,sBAAsB,QAAa,OAAO,CAAC,IAAI,CAiC3D,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,4BAA4B,QAAa,OAAO,CAAC,IAAI,CAQjE,CAAC"}
|
package/dist/cli/commands.js
CHANGED
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { existsSync, rmSync } from "node:fs";
|
|
5
5
|
import { dirname } from "node:path";
|
|
6
|
-
import { VERSION, GITHUB_REPO, BINARY_NAME } from "
|
|
6
|
+
import { VERSION, GITHUB_REPO, BINARY_NAME } from "./version.js";
|
|
7
|
+
import { exportTelemetry } from "../telemetry.js";
|
|
7
8
|
import { checkForUpdate, performUpdate, isNpmInstall, getCurrentExecutablePath, } from "./updater.js";
|
|
8
9
|
import { confirm } from "./prompts.js";
|
|
9
10
|
import { removeFromPath } from "./shell.js";
|
|
@@ -29,8 +30,9 @@ OPTIONS:
|
|
|
29
30
|
--version, -v Print version and exit
|
|
30
31
|
--help, -h Show this help message
|
|
31
32
|
--update Check for and install updates
|
|
32
|
-
--uninstall
|
|
33
|
-
--
|
|
33
|
+
--uninstall Remove binary and PATH entries
|
|
34
|
+
--export-telemetry Export telemetry data as a zip file
|
|
35
|
+
--no-update Disable auto-update check on startup
|
|
34
36
|
|
|
35
37
|
MORE INFO:
|
|
36
38
|
https://github.com/${GITHUB_REPO}
|
|
@@ -110,4 +112,18 @@ export const handleUninstallCommand = async () => {
|
|
|
110
112
|
console.log("");
|
|
111
113
|
console.log(`${BINARY_NAME} has been uninstalled.`);
|
|
112
114
|
};
|
|
115
|
+
/**
|
|
116
|
+
* Handle --export-telemetry command.
|
|
117
|
+
* Exports telemetry data as a zip file in the current working directory.
|
|
118
|
+
*/
|
|
119
|
+
export const handleExportTelemetryCommand = async () => {
|
|
120
|
+
try {
|
|
121
|
+
const zipPath = await exportTelemetry();
|
|
122
|
+
console.log(zipPath);
|
|
123
|
+
}
|
|
124
|
+
catch (error) {
|
|
125
|
+
console.error(error instanceof Error ? error.message : String(error));
|
|
126
|
+
process.exit(1);
|
|
127
|
+
}
|
|
128
|
+
};
|
|
113
129
|
//# sourceMappingURL=commands.js.map
|
package/dist/cli/commands.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/cli/commands.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/cli/commands.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EACL,cAAc,EACd,aAAa,EACb,YAAY,EACZ,wBAAwB,GACzB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,GAAS,EAAE;IACrC,OAAO,CAAC,GAAG,CAAC,GAAG,WAAW,KAAK,OAAO,EAAE,CAAC,CAAC;AAC5C,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,GAAS,EAAE;IAClC,OAAO,CAAC,GAAG,CACT;EACF,WAAW,KAAK,OAAO;;;;;IAKrB,WAAW;;;;;;;;;;;uBAWQ,WAAW;CACjC,CAAC,IAAI,EAAE,CACL,CAAC;AACJ,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,IAAmB,EAAE;IAC3D,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;IACvC,MAAM,KAAK,GAAG,MAAM,cAAc,EAAE,CAAC;IAErC,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,+BAA+B,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;QAC5D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,8BAA8B,OAAO,GAAG,CAAC,CAAC;QACtD,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,qBAAqB,OAAO,OAAO,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC;IAEtE,IAAI,YAAY,EAAE,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;QAC7D,OAAO;IACT,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QACvB,OAAO,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;QAC7D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACnD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAChC,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;IACrC,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,aAAc,CAAC,CAAC;IAE5E,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,kBAAkB,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,gBAAgB,MAAM,CAAC,eAAe,OAAO,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;IAC9E,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;AACxD,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,KAAK,IAAmB,EAAE;IAC9D,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,oBAAoB,WAAW,8BAA8B,CAAC,CAAC;IAC/F,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QACnC,OAAO;IACT,CAAC;IAED,MAAM,UAAU,GAAG,wBAAwB,EAAE,CAAC;IAC9C,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACnC,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAEnC,0CAA0C;IAC1C,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;IACxC,MAAM,aAAa,GAAG,cAAc,EAAE,CAAC;IACvC,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,aAAa,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,2BAA2B;IAC3B,OAAO,CAAC,GAAG,CAAC,+BAA+B,UAAU,EAAE,CAAC,CAAC;IACzD,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3B,IAAI,CAAC;YACH,MAAM,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CACX,+BAA+B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,CAChF,CAAC;YACF,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,GAAG,WAAW,wBAAwB,CAAC,CAAC;AACtD,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,KAAK,IAAmB,EAAE;IACpE,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,eAAe,EAAE,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACtE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC"}
|
package/dist/cli/updater.js
CHANGED
|
@@ -7,7 +7,7 @@ import { createWriteStream, chmodSync, renameSync, unlinkSync, existsSync, readd
|
|
|
7
7
|
import { tmpdir } from "node:os";
|
|
8
8
|
import { join, dirname, basename } from "node:path";
|
|
9
9
|
import { spawn } from "node:child_process";
|
|
10
|
-
import { VERSION, GITHUB_REPO, BINARY_NAME } from "
|
|
10
|
+
import { VERSION, GITHUB_REPO, BINARY_NAME } from "./version.js";
|
|
11
11
|
/**
|
|
12
12
|
* Detect if running as an npm global install or via npx.
|
|
13
13
|
* npm installs run from node_modules, not as compiled binaries.
|
package/dist/cli/updater.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updater.js","sourceRoot":"","sources":["../../src/cli/updater.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,iBAAiB,EACjB,SAAS,EACT,UAAU,EACV,UAAU,EACV,UAAU,EACV,WAAW,GACZ,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"updater.js","sourceRoot":"","sources":["../../src/cli/updater.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/cli/version.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,qCAAqC;AACrC,eAAO,MAAM,OAAO,QAahB,CAAC;AAEL,8CAA8C;AAC9C,eAAO,MAAM,WAAW,iCAAiC,CAAC;AAE1D,+CAA+C;AAC/C,eAAO,MAAM,WAAW,aAAa,CAAC"}
|
|
@@ -11,7 +11,7 @@ export const VERSION = (() => {
|
|
|
11
11
|
// Node.js/npm: read from package.json
|
|
12
12
|
try {
|
|
13
13
|
const require = createRequire(import.meta.url);
|
|
14
|
-
const pkg = require("
|
|
14
|
+
const pkg = require("../../package.json");
|
|
15
15
|
return pkg.version;
|
|
16
16
|
}
|
|
17
17
|
catch {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/cli/version.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAK5C,qCAAqC;AACrC,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,GAAG,EAAE;IAC3B,4CAA4C;IAC5C,IAAI,OAAO,aAAa,KAAK,WAAW,EAAE,CAAC;QACzC,OAAO,aAAa,CAAC;IACvB,CAAC;IACD,sCAAsC;IACtC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC/C,MAAM,GAAG,GAAG,OAAO,CAAC,oBAAoB,CAAwB,CAAC;QACjE,OAAO,GAAG,CAAC,OAAO,CAAC;IACrB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,WAAW,CAAC;IACrB,CAAC;AACH,CAAC,CAAC,EAAE,CAAC;AAEL,8CAA8C;AAC9C,MAAM,CAAC,MAAM,WAAW,GAAG,8BAA8B,CAAC;AAE1D,+CAA+C;AAC/C,MAAM,CAAC,MAAM,WAAW,GAAG,UAAU,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* --update Check for and install updates
|
|
12
12
|
* --uninstall Remove binary and PATH entries
|
|
13
13
|
*/
|
|
14
|
-
import { printVersion, printHelp, handleUpdateCommand, handleUninstallCommand, } from "./cli/commands.js";
|
|
14
|
+
import { printVersion, printHelp, handleUpdateCommand, handleUninstallCommand, handleExportTelemetryCommand, } from "./cli/commands.js";
|
|
15
15
|
import { autoUpdate, reexec } from "./cli/updater.js";
|
|
16
16
|
import { runServer } from "./server.js";
|
|
17
17
|
const main = async () => {
|
|
@@ -36,6 +36,11 @@ const main = async () => {
|
|
|
36
36
|
await handleUninstallCommand();
|
|
37
37
|
return;
|
|
38
38
|
}
|
|
39
|
+
// Handle --export-telemetry
|
|
40
|
+
if (args.includes("--export-telemetry")) {
|
|
41
|
+
await handleExportTelemetryCommand();
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
39
44
|
// If running in a TTY (interactive terminal), show help instead of starting server
|
|
40
45
|
if (process.stdin.isTTY) {
|
|
41
46
|
console.log("This is an MCP server that communicates via stdio.");
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;GAWG;AAEH,OAAO,EACL,YAAY,EACZ,SAAS,EACT,mBAAmB,EACnB,sBAAsB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;GAWG;AAEH,OAAO,EACL,YAAY,EACZ,SAAS,EACT,mBAAmB,EACnB,sBAAsB,EACtB,4BAA4B,GAC7B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,IAAI,GAAG,KAAK,IAAmB,EAAE;IACrC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEnC,wBAAwB;IACxB,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACtD,YAAY,EAAE,CAAC;QACf,OAAO;IACT,CAAC;IAED,qBAAqB;IACrB,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACnD,SAAS,EAAE,CAAC;QACZ,OAAO;IACT,CAAC;IAED,kBAAkB;IAClB,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9B,MAAM,mBAAmB,EAAE,CAAC;QAC5B,OAAO;IACT,CAAC;IAED,qBAAqB;IACrB,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;QACjC,MAAM,sBAAsB,EAAE,CAAC;QAC/B,OAAO;IACT,CAAC;IAED,4BAA4B;IAC5B,IAAI,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC;QACxC,MAAM,4BAA4B,EAAE,CAAC;QACrC,OAAO;IACT,CAAC;IAED,mFAAmF;IACnF,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;QAClE,OAAO,CAAC,GAAG,CAAC,2EAA2E,CAAC,CAAC;QACzF,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,CACT,mHAAmH,CACpH,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;QACtD,OAAO;IACT,CAAC;IAED,yBAAyB;IACzB,MAAM,OAAO,GAAG,MAAM,UAAU,EAAE,CAAC;IACnC,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,EAAE,CAAC;IACX,CAAC;IAED,MAAM,SAAS,EAAE,CAAC;AACpB,CAAC,CAAC;AAEF,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;IACtC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAkDpE;;GAEG;AACH,eAAO,MAAM,YAAY,QAAO,SAuB/B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,SAAS,QAAa,OAAO,CAAC,IAAI,CAK9C,CAAC"}
|
package/dist/server.js
CHANGED
|
@@ -4,15 +4,17 @@
|
|
|
4
4
|
* Model Context Protocol server for querying IPC-2581 PCB layout files.
|
|
5
5
|
* Supports any EDA tool that exports IPC-2581 XML.
|
|
6
6
|
*/
|
|
7
|
+
import crypto from "node:crypto";
|
|
7
8
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
8
9
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
10
|
+
import { VERSION } from "./cli/version.js";
|
|
11
|
+
import { initTelemetry } from "./telemetry.js";
|
|
12
|
+
import { register as registerGetDesignOverview } from "./tools/get-design-overview.js";
|
|
13
|
+
import { register as registerQueryComponents } from "./tools/query-components.js";
|
|
14
|
+
import { register as registerQueryNet } from "./tools/query-net.js";
|
|
15
|
+
import { register as registerExportCadenceBoard } from "./tools/export-cadence-board.js";
|
|
16
|
+
import { register as registerExportCadenceConstraints } from "./tools/export-cadence-constraints.js";
|
|
17
|
+
import { register as registerQueryConstraints } from "./tools/query-constraints.js";
|
|
16
18
|
// =============================================================================
|
|
17
19
|
// Server Instructions
|
|
18
20
|
// =============================================================================
|
|
@@ -25,10 +27,11 @@ Supports IPC-2581 XML files (RevA, RevB, RevC) exported from any compliant EDA t
|
|
|
25
27
|
## Workflow Guidance
|
|
26
28
|
|
|
27
29
|
1. If starting from a Cadence Allegro .brd file, use \`export_cadence_board\` to generate the IPC-2581 XML first (Windows only)
|
|
28
|
-
2.
|
|
29
|
-
3. Use \`
|
|
30
|
-
4. Use \`
|
|
31
|
-
5. Use \`
|
|
30
|
+
2. To access design constraints (trace width rules, spacing rules, net classes, stackup), use \`export_cadence_constraints\` to generate a .tcfx file, then \`query_constraints\` to read it
|
|
31
|
+
3. Use \`get_design_overview\` first to understand the design structure, layer stackup, and size
|
|
32
|
+
4. Use \`query_components\` to find component placements by refdes pattern (regex)
|
|
33
|
+
5. Use \`query_net\` to trace a net's routing, trace widths, vias, and connected pins
|
|
34
|
+
6. Use \`render_net\` to visualize a net's routing geometry as SVG
|
|
32
35
|
|
|
33
36
|
## Tool Usage Tips
|
|
34
37
|
|
|
@@ -46,51 +49,6 @@ Results with an \`error\` field indicate a problem:
|
|
|
46
49
|
- Invalid regex: Check pattern syntax
|
|
47
50
|
`.trim();
|
|
48
51
|
// =============================================================================
|
|
49
|
-
// Helper Functions
|
|
50
|
-
// =============================================================================
|
|
51
|
-
/**
|
|
52
|
-
* Format a result as MCP tool response content.
|
|
53
|
-
*/
|
|
54
|
-
const formatResult = (result) => ({
|
|
55
|
-
content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
|
|
56
|
-
});
|
|
57
|
-
let wasmInitialized = false;
|
|
58
|
-
const resolveWasmBuffer = async () => {
|
|
59
|
-
if (typeof BUILD_VERSION !== "undefined") {
|
|
60
|
-
const { default: wasmPath } = await import("./wasm-embed.js");
|
|
61
|
-
return readFile(wasmPath);
|
|
62
|
-
}
|
|
63
|
-
const wasmUrl = import.meta.resolve("@resvg/resvg-wasm/index_bg.wasm");
|
|
64
|
-
return readFile(fileURLToPath(wasmUrl));
|
|
65
|
-
};
|
|
66
|
-
const ensureWasmInitialized = async () => {
|
|
67
|
-
if (wasmInitialized)
|
|
68
|
-
return;
|
|
69
|
-
await initWasm(await resolveWasmBuffer());
|
|
70
|
-
wasmInitialized = true;
|
|
71
|
-
};
|
|
72
|
-
/**
|
|
73
|
-
* Render SVG to PNG using resvg-wasm, return as MCP image content + stats text.
|
|
74
|
-
*/
|
|
75
|
-
const formatRenderResult = async (result) => {
|
|
76
|
-
await ensureWasmInitialized();
|
|
77
|
-
const resvg = new Resvg(result.svg, { fitTo: { mode: "width", value: 1200 } });
|
|
78
|
-
const png = resvg.render().asPng();
|
|
79
|
-
return {
|
|
80
|
-
content: [
|
|
81
|
-
{
|
|
82
|
-
type: "image",
|
|
83
|
-
data: Buffer.from(png).toString("base64"),
|
|
84
|
-
mimeType: "image/png",
|
|
85
|
-
},
|
|
86
|
-
{
|
|
87
|
-
type: "text",
|
|
88
|
-
text: JSON.stringify({ netName: result.netName, units: result.units, stats: result.stats }, null, 2),
|
|
89
|
-
},
|
|
90
|
-
],
|
|
91
|
-
};
|
|
92
|
-
};
|
|
93
|
-
// =============================================================================
|
|
94
52
|
// Server Setup
|
|
95
53
|
// =============================================================================
|
|
96
54
|
/**
|
|
@@ -106,89 +64,20 @@ export const createServer = () => {
|
|
|
106
64
|
},
|
|
107
65
|
instructions: SERVER_INSTRUCTIONS,
|
|
108
66
|
});
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
server
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
},
|
|
117
|
-
}, async ({ file }) => {
|
|
118
|
-
const result = await getDesignOverview(file);
|
|
119
|
-
return formatResult(result);
|
|
120
|
-
});
|
|
121
|
-
// -------------------------------------------------------------------------
|
|
122
|
-
// Tool: query_components
|
|
123
|
-
// -------------------------------------------------------------------------
|
|
124
|
-
server.registerTool("query_components", {
|
|
125
|
-
description: "Find components by refdes pattern in an IPC-2581 file. Returns placement coordinates, rotation, layer, package, and BOM data.",
|
|
126
|
-
inputSchema: {
|
|
127
|
-
file: z.string().describe("Path to IPC-2581 XML file"),
|
|
128
|
-
pattern: z
|
|
129
|
-
.string()
|
|
130
|
-
.describe("Regex pattern for component refdes (e.g., '^U1$', '^C\\\\d+', 'R10[0-9]')"),
|
|
131
|
-
},
|
|
132
|
-
}, async ({ file, pattern }) => {
|
|
133
|
-
const result = await queryComponents(file, pattern);
|
|
134
|
-
return formatResult(result);
|
|
135
|
-
});
|
|
136
|
-
// -------------------------------------------------------------------------
|
|
137
|
-
// Tool: query_net
|
|
138
|
-
// -------------------------------------------------------------------------
|
|
139
|
-
server.registerTool("query_net", {
|
|
140
|
-
description: "Query a net by name pattern in an IPC-2581 file. Returns connected pins, routing per layer (trace widths, segment counts), and via information.",
|
|
141
|
-
inputSchema: {
|
|
142
|
-
file: z.string().describe("Path to IPC-2581 XML file"),
|
|
143
|
-
pattern: z
|
|
144
|
-
.string()
|
|
145
|
-
.describe("Regex pattern for net name (e.g., '^DDR_D0$', 'CLK', '^VCC_3V3$')"),
|
|
146
|
-
},
|
|
147
|
-
}, async ({ file, pattern }) => {
|
|
148
|
-
const result = await queryNet(file, pattern);
|
|
149
|
-
return formatResult(result);
|
|
150
|
-
});
|
|
151
|
-
// -------------------------------------------------------------------------
|
|
152
|
-
// Tool: render_net
|
|
153
|
-
// -------------------------------------------------------------------------
|
|
154
|
-
server.registerTool("render_net", {
|
|
155
|
-
description: "Render a net's routing geometry as SVG from an IPC-2581 file. Returns an SVG showing board outline, trace paths by layer, exact SMD pad shapes, via annular rings, and pin labels.",
|
|
156
|
-
inputSchema: {
|
|
157
|
-
file: z.string().describe("Path to IPC-2581 XML file"),
|
|
158
|
-
pattern: z.string().describe("Regex pattern for net name (e.g., '^VDD_3V3B$', 'CLK')"),
|
|
159
|
-
},
|
|
160
|
-
}, async ({ file, pattern }) => {
|
|
161
|
-
const result = await renderNet(file, pattern);
|
|
162
|
-
if (isErrorResult(result))
|
|
163
|
-
return formatResult(result);
|
|
164
|
-
return await formatRenderResult(result);
|
|
165
|
-
});
|
|
166
|
-
// -------------------------------------------------------------------------
|
|
167
|
-
// Tool: export_cadence_board
|
|
168
|
-
// -------------------------------------------------------------------------
|
|
169
|
-
server.registerTool("export_cadence_board", {
|
|
170
|
-
description: "Export a Cadence Allegro .brd file to IPC-2581 XML. Windows only. Requires Cadence SPB installation (auto-detected). Calls are serialized internally to avoid license conflicts.",
|
|
171
|
-
inputSchema: {
|
|
172
|
-
board: z.string().describe("Path to Cadence Allegro .brd file"),
|
|
173
|
-
output: z
|
|
174
|
-
.string()
|
|
175
|
-
.optional()
|
|
176
|
-
.describe("Output path (without .xml extension — Cadence appends it). Defaults to <boardname>_ipc2581.xml next to the .brd"),
|
|
177
|
-
revision: z
|
|
178
|
-
.enum(["B", "C"])
|
|
179
|
-
.optional()
|
|
180
|
-
.describe('IPC-2581 revision: "B" (1.03) or "C" (1.04, default). Rev C is richest.'),
|
|
181
|
-
},
|
|
182
|
-
}, async ({ board, output, revision }) => {
|
|
183
|
-
const result = await exportCadenceBoard(board, { output, revision });
|
|
184
|
-
return formatResult(result);
|
|
185
|
-
});
|
|
67
|
+
registerGetDesignOverview(server);
|
|
68
|
+
registerQueryComponents(server);
|
|
69
|
+
registerQueryNet(server);
|
|
70
|
+
registerExportCadenceBoard(server);
|
|
71
|
+
registerExportCadenceConstraints(server);
|
|
72
|
+
registerQueryConstraints(server);
|
|
73
|
+
// TODO: register render-net once PNG output via resvg-wasm is stable in compiled binaries
|
|
186
74
|
return server;
|
|
187
75
|
};
|
|
188
76
|
/**
|
|
189
77
|
* Run the MCP server with stdio transport.
|
|
190
78
|
*/
|
|
191
79
|
export const runServer = async () => {
|
|
80
|
+
initTelemetry(crypto.randomUUID());
|
|
192
81
|
const server = createServer();
|
|
193
82
|
const transport = new StdioServerTransport();
|
|
194
83
|
await server.connect(transport);
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,QAAQ,IAAI,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AACvF,OAAO,EAAE,QAAQ,IAAI,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAClF,OAAO,EAAE,QAAQ,IAAI,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,QAAQ,IAAI,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AACzF,OAAO,EAAE,QAAQ,IAAI,gCAAgC,EAAE,MAAM,uCAAuC,CAAC;AACrG,OAAO,EAAE,QAAQ,IAAI,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AAEpF,gFAAgF;AAChF,sBAAsB;AACtB,gFAAgF;AAEhF,MAAM,mBAAmB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6B3B,CAAC,IAAI,EAAE,CAAC;AAET,gFAAgF;AAChF,eAAe;AACf,gFAAgF;AAEhF;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,GAAc,EAAE;IAC1C,MAAM,MAAM,GAAG,IAAI,SAAS,CAC1B;QACE,IAAI,EAAE,qBAAqB;QAC3B,OAAO,EAAE,OAAO;KACjB,EACD;QACE,YAAY,EAAE;YACZ,KAAK,EAAE,EAAE;SACV;QACD,YAAY,EAAE,mBAAmB;KAClC,CACF,CAAC;IAEF,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAClC,uBAAuB,CAAC,MAAM,CAAC,CAAC;IAChC,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACzB,0BAA0B,CAAC,MAAM,CAAC,CAAC;IACnC,gCAAgC,CAAC,MAAM,CAAC,CAAC;IACzC,wBAAwB,CAAC,MAAM,CAAC,CAAC;IACjC,0FAA0F;IAE1F,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,IAAmB,EAAE;IACjD,aAAa,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;IACnC,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;IAC9B,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAClC,CAAC,CAAC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Local JSONL telemetry for usage analytics.
|
|
3
|
+
*
|
|
4
|
+
* Writes session and tool-call events to a local telemetry.jsonl file.
|
|
5
|
+
* All writes are fire-and-forget; errors are silently caught.
|
|
6
|
+
*/
|
|
7
|
+
export interface SessionEvent {
|
|
8
|
+
timestamp: string;
|
|
9
|
+
session_id: string;
|
|
10
|
+
version: string;
|
|
11
|
+
username: string;
|
|
12
|
+
machine: {
|
|
13
|
+
platform: string;
|
|
14
|
+
arch: string;
|
|
15
|
+
os_release: string;
|
|
16
|
+
hostname: string;
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
export interface ToolEvent {
|
|
20
|
+
timestamp: string;
|
|
21
|
+
session_id: string;
|
|
22
|
+
tool: string;
|
|
23
|
+
args: Record<string, unknown>;
|
|
24
|
+
duration_ms: number;
|
|
25
|
+
success: boolean;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Get the install directory for telemetry storage.
|
|
29
|
+
*
|
|
30
|
+
* For compiled binaries: parent of the bin/ directory containing the executable.
|
|
31
|
+
* For npm/dev: platform-specific fallback matching install.sh conventions.
|
|
32
|
+
*/
|
|
33
|
+
export declare const getInstallDir: () => string;
|
|
34
|
+
export declare const getTelemetryPath: () => string;
|
|
35
|
+
/**
|
|
36
|
+
* Initialize telemetry for this session.
|
|
37
|
+
* Writes the one-time session event with user/machine info.
|
|
38
|
+
*/
|
|
39
|
+
export declare const initTelemetry: (id: string) => void;
|
|
40
|
+
/**
|
|
41
|
+
* Log a tool invocation event.
|
|
42
|
+
*/
|
|
43
|
+
export declare const logToolEvent: (partial: {
|
|
44
|
+
tool: string;
|
|
45
|
+
args: Record<string, unknown>;
|
|
46
|
+
duration_ms: number;
|
|
47
|
+
success: boolean;
|
|
48
|
+
}) => void;
|
|
49
|
+
type ToolHandler<T, R> = (args: T) => Promise<R>;
|
|
50
|
+
/**
|
|
51
|
+
* Wrap a tool handler to automatically log telemetry.
|
|
52
|
+
* Measures duration, detects errors in results, logs fire-and-forget.
|
|
53
|
+
*/
|
|
54
|
+
export declare const withTelemetry: <T extends Record<string, unknown>, R>(toolName: string, handler: ToolHandler<T, R>) => ToolHandler<T, R>;
|
|
55
|
+
/**
|
|
56
|
+
* Export telemetry file as a zip archive in the current working directory.
|
|
57
|
+
* Returns the path to the created zip file.
|
|
58
|
+
*/
|
|
59
|
+
export declare const exportTelemetry: () => Promise<string>;
|
|
60
|
+
export {};
|
|
61
|
+
//# sourceMappingURL=telemetry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAYH,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE;QACP,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAED,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;CAClB;AASD;;;;;GAKG;AACH,eAAO,MAAM,aAAa,QAAO,MAkBhC,CAAC;AAEF,eAAO,MAAM,gBAAgB,QAAO,MAKnC,CAAC;AAmBF;;;GAGG;AACH,eAAO,MAAM,aAAa,GAAI,IAAI,MAAM,KAAG,IAY1C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,GAAI,SAAS;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;CAClB,KAAG,IAUH,CAAC;AAMF,KAAK,WAAW,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;AAEjD;;;GAGG;AACH,eAAO,MAAM,aAAa,GAAI,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,EAChE,UAAU,MAAM,EAChB,SAAS,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,KACzB,WAAW,CAAC,CAAC,EAAE,CAAC,CAuBlB,CAAC;AAMF;;;GAGG;AACH,eAAO,MAAM,eAAe,QAAa,OAAO,CAAC,MAAM,CAwBtD,CAAC"}
|