@wrongstack/techstack 0.289.0
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/LICENSE +21 -0
- package/dist/adapters/cpp.d.ts +16 -0
- package/dist/adapters/cpp.d.ts.map +1 -0
- package/dist/adapters/dart.d.ts +20 -0
- package/dist/adapters/dart.d.ts.map +1 -0
- package/dist/adapters/dotnet.d.ts +19 -0
- package/dist/adapters/dotnet.d.ts.map +1 -0
- package/dist/adapters/elixir.d.ts +16 -0
- package/dist/adapters/elixir.d.ts.map +1 -0
- package/dist/adapters/go.d.ts +20 -0
- package/dist/adapters/go.d.ts.map +1 -0
- package/dist/adapters/interface.d.ts +104 -0
- package/dist/adapters/interface.d.ts.map +1 -0
- package/dist/adapters/maven.d.ts +17 -0
- package/dist/adapters/maven.d.ts.map +1 -0
- package/dist/adapters/npm.d.ts +21 -0
- package/dist/adapters/npm.d.ts.map +1 -0
- package/dist/adapters/paths.d.ts +37 -0
- package/dist/adapters/paths.d.ts.map +1 -0
- package/dist/adapters/php.d.ts +20 -0
- package/dist/adapters/php.d.ts.map +1 -0
- package/dist/adapters/python.d.ts +26 -0
- package/dist/adapters/python.d.ts.map +1 -0
- package/dist/adapters/ruby.d.ts +16 -0
- package/dist/adapters/ruby.d.ts.map +1 -0
- package/dist/adapters/rust.d.ts +20 -0
- package/dist/adapters/rust.d.ts.map +1 -0
- package/dist/advisory/native-audit.d.ts +61 -0
- package/dist/advisory/native-audit.d.ts.map +1 -0
- package/dist/advisory/osv.d.ts +41 -0
- package/dist/advisory/osv.d.ts.map +1 -0
- package/dist/delivery/coordinator.d.ts +46 -0
- package/dist/delivery/coordinator.d.ts.map +1 -0
- package/dist/discovery/index.d.ts +58 -0
- package/dist/discovery/index.d.ts.map +1 -0
- package/dist/discovery/workspace.d.ts +49 -0
- package/dist/discovery/workspace.d.ts.map +1 -0
- package/dist/index.d.ts +49 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4287 -0
- package/dist/index.js.map +7 -0
- package/dist/policy/status.d.ts +60 -0
- package/dist/policy/status.d.ts.map +1 -0
- package/dist/registry/client.d.ts +61 -0
- package/dist/registry/client.d.ts.map +1 -0
- package/dist/registry/purl.d.ts +106 -0
- package/dist/registry/purl.d.ts.map +1 -0
- package/dist/remediation.d.ts +54 -0
- package/dist/remediation.d.ts.map +1 -0
- package/dist/research/index.d.ts +11 -0
- package/dist/research/index.d.ts.map +1 -0
- package/dist/research/llm.d.ts +37 -0
- package/dist/research/llm.d.ts.map +1 -0
- package/dist/research/researcher.d.ts +31 -0
- package/dist/research/researcher.d.ts.map +1 -0
- package/dist/research/search.d.ts +19 -0
- package/dist/research/search.d.ts.map +1 -0
- package/dist/research/triage.d.ts +33 -0
- package/dist/research/triage.d.ts.map +1 -0
- package/dist/research/types.d.ts +77 -0
- package/dist/research/types.d.ts.map +1 -0
- package/dist/sbom.d.ts +52 -0
- package/dist/sbom.d.ts.map +1 -0
- package/dist/service.d.ts +110 -0
- package/dist/service.d.ts.map +1 -0
- package/dist/snapshot-diff.d.ts +27 -0
- package/dist/snapshot-diff.d.ts.map +1 -0
- package/dist/store/schema.d.ts +20 -0
- package/dist/store/schema.d.ts.map +1 -0
- package/dist/store/sqlite.d.ts +57 -0
- package/dist/store/sqlite.d.ts.map +1 -0
- package/dist/types.d.ts +123 -0
- package/dist/types.d.ts.map +1 -0
- package/package.json +45 -0
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TechStack — Discovery wrapper.
|
|
3
|
+
*
|
|
4
|
+
* Thin wrapper around the existing `detectLanguageWorkspaces()` from
|
|
5
|
+
* `@wrongstack/tools` that converts its output into TechStack Workspace[]
|
|
6
|
+
* objects. This is the single entry point for workspace discovery —
|
|
7
|
+
* all downstream code calls this, never the raw detector directly.
|
|
8
|
+
*
|
|
9
|
+
* @see docs/specs/techstack-sdd.md §3.2, §4.1
|
|
10
|
+
*/
|
|
11
|
+
import type { EcosystemId, Workspace, Coverage } from '../types.js';
|
|
12
|
+
/**
|
|
13
|
+
* Raw workspace shape returned by detectLanguageWorkspaces().
|
|
14
|
+
* This mirrors the existing interface in packages/tools/src/languages/detect.ts
|
|
15
|
+
* and is intentionally minimal — the real detector returns more fields.
|
|
16
|
+
*/
|
|
17
|
+
export interface RawWorkspace {
|
|
18
|
+
readonly language: string;
|
|
19
|
+
readonly root: string;
|
|
20
|
+
readonly packageManager?: string | undefined;
|
|
21
|
+
readonly manifests?: readonly string[] | undefined;
|
|
22
|
+
readonly lockfiles?: readonly string[] | undefined;
|
|
23
|
+
readonly confidence?: number | undefined;
|
|
24
|
+
readonly supportedOperations?: readonly string[] | undefined;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Discover all workspaces in a target project root.
|
|
28
|
+
*
|
|
29
|
+
* Delegates to detectLanguageWorkspaces() and maps each result to a
|
|
30
|
+
* TechStack Workspace, normalizing the ecosystem identifier, computing
|
|
31
|
+
* coverage, and attaching evidence.
|
|
32
|
+
*
|
|
33
|
+
* The caller (the inventory engine) is responsible for:
|
|
34
|
+
* - Calling this with the *target* project root (never WrongStack's own root).
|
|
35
|
+
* - Threading the AbortSignal through.
|
|
36
|
+
*/
|
|
37
|
+
export declare function discoverWorkspaces(_projectRoot: string, _signal?: AbortSignal): Promise<readonly Workspace[]>;
|
|
38
|
+
/**
|
|
39
|
+
* Map a raw language string to our EcosystemId.
|
|
40
|
+
* Falls back to the closest match or 'unknown' (not in EcosystemId —
|
|
41
|
+
* the caller filters those out and marks them as unsupported coverage).
|
|
42
|
+
*/
|
|
43
|
+
export declare function mapEcosystem(language: string): EcosystemId | undefined;
|
|
44
|
+
/**
|
|
45
|
+
* Derive coverage from the raw workspace.
|
|
46
|
+
* If the ecosystem is unsupported or confidence is very low, coverage is partial/unsupported.
|
|
47
|
+
*/
|
|
48
|
+
export declare function deriveCoverage(ecosystem: EcosystemId | undefined, confidence: number): Coverage;
|
|
49
|
+
/**
|
|
50
|
+
* Generate a stable id for a workspace.
|
|
51
|
+
*/
|
|
52
|
+
export declare function workspaceId(relativeRoot: string, ecosystem: string): string;
|
|
53
|
+
/**
|
|
54
|
+
* Compute a fingerprint for a set of manifest+lockfile contents.
|
|
55
|
+
* Used for snapshot deduplication — if nothing changed, no need to re-analyze.
|
|
56
|
+
*/
|
|
57
|
+
export declare function computeFingerprint(fileContents: readonly string[]): string;
|
|
58
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/discovery/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEpE;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7C,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IACnD,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IACnD,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;CAC9D;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,kBAAkB,CACtC,YAAY,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,SAAS,SAAS,EAAE,CAAC,CAQ/B;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CA4BtE;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,WAAW,GAAG,SAAS,EAAE,UAAU,EAAE,MAAM,GAAG,QAAQ,CAK/F;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAM3E;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAO1E"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TechStack — Workspace discovery wrapper.
|
|
3
|
+
*
|
|
4
|
+
* Wraps `detectLanguageWorkspaces()` from `@wrongstack/tools/languages` and
|
|
5
|
+
* maps each `DetectedWorkspace` into a TechStack `Workspace` with:
|
|
6
|
+
* - `EcosystemId` (TechStack's package-manager classification) instead of
|
|
7
|
+
* the tools-package `LanguageProfileId` (which is language-shaped, not
|
|
8
|
+
* package-manager-shaped — e.g. both `typescript` and `javascript` map to
|
|
9
|
+
* `npm`).
|
|
10
|
+
* - `relativeRoot` (project-relative, portable across machines).
|
|
11
|
+
* - `lockfiles` extracted from the detected evidence (manifest/config/lockfile
|
|
12
|
+
* kinds), independent of which evidence manifests were used.
|
|
13
|
+
* - `coverage` classified against the SDD §6 ecosystem support matrix
|
|
14
|
+
* (Tier A → `full`, Tier B → `partial`, Tier C/unsupported → `unsupported`).
|
|
15
|
+
*
|
|
16
|
+
* Languages with no `EcosystemId` mapping (`deno`, `shell`) are dropped from
|
|
17
|
+
* the result — they cannot be inventoried by the TechStack pipeline.
|
|
18
|
+
*
|
|
19
|
+
* @see docs/specs/techstack-sdd.md §3.2, §6
|
|
20
|
+
*/
|
|
21
|
+
import type { DetectLanguageOptions, DetectedWorkspace } from '@wrongstack/tools/languages';
|
|
22
|
+
import type { Coverage, EcosystemId, Workspace } from '../types.js';
|
|
23
|
+
/**
|
|
24
|
+
* Map a single `DetectedWorkspace` to a TechStack `Workspace`.
|
|
25
|
+
* Returns `undefined` when the language has no TechStack ecosystem mapping.
|
|
26
|
+
*/
|
|
27
|
+
export declare function mapDetectedWorkspace(detected: DetectedWorkspace, projectRoot: string): Workspace | undefined;
|
|
28
|
+
/**
|
|
29
|
+
* Discover all TechStack workspaces under `projectRoot` by delegating to
|
|
30
|
+
* `detectLanguageWorkspaces` and mapping each detected workspace.
|
|
31
|
+
*
|
|
32
|
+
* Workspaces whose language does not map to a TechStack ecosystem are
|
|
33
|
+
* silently dropped (e.g. `deno`, `shell`) — they cannot be inventoried and
|
|
34
|
+
* would only inflate coverage counts with `unsupported` entries that add no
|
|
35
|
+
* value at the inventory-engine boundary.
|
|
36
|
+
*
|
|
37
|
+
* Test-fixture directories (`fixtures`, `testdata`, …) are skipped so fake
|
|
38
|
+
* fixture manifests never enter the inventory; the project root itself is
|
|
39
|
+
* never skipped, so scanning a fixture directly (as tests do) still works.
|
|
40
|
+
*
|
|
41
|
+
* Results are sorted by `(ecosystem, relativeRoot, id)` for stable display.
|
|
42
|
+
*/
|
|
43
|
+
export declare function discoverWorkspaces(projectRoot: string, options?: Omit<DetectLanguageOptions, 'projectRoot'>): Promise<Workspace[]>;
|
|
44
|
+
/**
|
|
45
|
+
* Coverage for a workspace's ecosystem — the per-workspace view of the
|
|
46
|
+
* SDD §6 tier matrix.
|
|
47
|
+
*/
|
|
48
|
+
export declare function coverageForEcosystem(ecosystem: EcosystemId): Coverage;
|
|
49
|
+
//# sourceMappingURL=workspace.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../../src/discovery/workspace.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,OAAO,KAAK,EACV,qBAAqB,EACrB,iBAAiB,EAGlB,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAsFpE;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,iBAAiB,EAC3B,WAAW,EAAE,MAAM,GAClB,SAAS,GAAG,SAAS,CAoBvB;AAkBD;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,IAAI,CAAC,qBAAqB,EAAE,aAAa,CAAC,GACnD,OAAO,CAAC,SAAS,EAAE,CAAC,CAmBtB;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,WAAW,GAAG,QAAQ,CAErE"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TechStack — public package barrel.
|
|
3
|
+
*
|
|
4
|
+
* Re-exports the foundation types, the ecosystem adapter contract, the PURL
|
|
5
|
+
* utilities, and the discovery wrapper. Inventory/enrichment/audit engines,
|
|
6
|
+
* registry clients, advisory clients, the policy classifier, the SQLite
|
|
7
|
+
* store, the report generator, and the idle-delivery coordinator are
|
|
8
|
+
* scheduled for later rollout phases per docs/specs/techstack-sdd.md §9.
|
|
9
|
+
*
|
|
10
|
+
* @see docs/specs/techstack-sdd.md
|
|
11
|
+
*/
|
|
12
|
+
export type { Coverage, DependencyObservation, DependencyScope, DependencyStatus, DeliveryOutbox, DeliveryStatus, EcosystemId, Evidence, Finding, Snapshot, SourceType, TechStackJob, TechStackJobKind, TechStackJobProgress, TechStackJobStatus, Workspace, } from './types.js';
|
|
13
|
+
export type { AdvisoryEvidence, EcosystemAdapter, AuditOptions, InventoryOptions, RegistryEvidence, } from './adapters/interface.js';
|
|
14
|
+
export { buildPurl, constructPurl, ecosystemForPurlType, parsePurl, parsePurlEcosystem, purlTypeForEcosystem, type ParsedEcosystemPurl, type PurlParts, } from './registry/purl.js';
|
|
15
|
+
export { coverageForEcosystem, discoverWorkspaces, mapDetectedWorkspace, } from './discovery/workspace.js';
|
|
16
|
+
export { NpmAdapter, npmAdapter } from './adapters/npm.js';
|
|
17
|
+
export { PythonAdapter, pythonAdapter } from './adapters/python.js';
|
|
18
|
+
export { RustAdapter, rustAdapter } from './adapters/rust.js';
|
|
19
|
+
export { GoAdapter, goAdapter } from './adapters/go.js';
|
|
20
|
+
export { DotNetAdapter, dotNetAdapter } from './adapters/dotnet.js';
|
|
21
|
+
export { PhpAdapter, phpAdapter } from './adapters/php.js';
|
|
22
|
+
export { DartAdapter, dartAdapter } from './adapters/dart.js';
|
|
23
|
+
export { MavenAdapter, mavenAdapter } from './adapters/maven.js';
|
|
24
|
+
export { RubyAdapter, rubyAdapter } from './adapters/ruby.js';
|
|
25
|
+
export { ElixirAdapter, elixirAdapter } from './adapters/elixir.js';
|
|
26
|
+
export { CppAdapter, cppAdapter } from './adapters/cpp.js';
|
|
27
|
+
export { diffSnapshots } from './snapshot-diff.js';
|
|
28
|
+
export type { SnapshotDiff } from './snapshot-diff.js';
|
|
29
|
+
export { toSpdx, toCycloneDX } from './sbom.js';
|
|
30
|
+
export type { CycloneDXBom, SpdxDocument } from './sbom.js';
|
|
31
|
+
export { generateUpgradePlan, renderPlanMarkdown } from './remediation.js';
|
|
32
|
+
export type { UpgradePlan, UpgradePlanItem } from './remediation.js';
|
|
33
|
+
export { clearRegistryCache, lookupRegistry, lookupRegistryBatch, supportedRegistryEcosystems, } from './registry/client.js';
|
|
34
|
+
export type { RegistryEntry } from './registry/client.js';
|
|
35
|
+
export { queryOsvBatch, queryOsvSingle } from './advisory/osv.js';
|
|
36
|
+
export type { OsvAdvisory, OsvBatchResult } from './advisory/osv.js';
|
|
37
|
+
export { isNativeAuditAvailable, runNativeAudit, runNpmAudit, } from './advisory/native-audit.js';
|
|
38
|
+
export type { NativeAdvisory, NativeAuditResult } from './advisory/native-audit.js';
|
|
39
|
+
export { classifyStatus, compareVersions, failedLookupStatus, privateOrUnresolvedStatus, } from './policy/status.js';
|
|
40
|
+
export type { AdvisoryStatusData, RegistryStatusData } from './policy/status.js';
|
|
41
|
+
export { TechStackEngine } from './service.js';
|
|
42
|
+
export type { AnalyzeOptions, EnrichOptions } from './service.js';
|
|
43
|
+
export { clusterCandidates, createProviderLlm, createResearcher, createToolSearch, parseResearchJson, triageCandidates, DEFAULT_TRIAGE_LIMIT, } from './research/index.js';
|
|
44
|
+
export type { CreateResearcherOptions, LlmAccessor, ResearchCluster, ResearchLlm, ResearchLlmRequest, ResearchOptions, ResearchSearch, ResearchSearchResult, SearchToolOptions, TechStackResearcher, TriageCandidate, TriageOptions, } from './research/index.js';
|
|
45
|
+
export { TechStackStore } from './store/sqlite.js';
|
|
46
|
+
export { applySchema, DDL } from './store/schema.js';
|
|
47
|
+
export { attemptDelivery, drainPendingDeliveries } from './delivery/coordinator.js';
|
|
48
|
+
export type { DeliveryCoordinatorOptions, DeliveryResult } from './delivery/coordinator.js';
|
|
49
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|