mthds 0.0.6 → 0.0.8
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 +1 -1
- package/README.md +51 -11
- package/dist/agent/commands/build.d.ts +35 -0
- package/dist/agent/commands/build.js +334 -0
- package/dist/agent/commands/build.js.map +1 -0
- package/dist/agent/commands/config.d.ts +6 -0
- package/dist/agent/commands/config.js +50 -0
- package/dist/agent/commands/config.js.map +1 -0
- package/dist/agent/commands/install.d.ts +14 -0
- package/dist/agent/commands/install.js +178 -0
- package/dist/agent/commands/install.js.map +1 -0
- package/dist/agent/commands/pipelex.d.ts +7 -0
- package/dist/agent/commands/pipelex.js +56 -0
- package/dist/agent/commands/pipelex.js.map +1 -0
- package/dist/agent/commands/plxt.d.ts +7 -0
- package/dist/agent/commands/plxt.js +27 -0
- package/dist/agent/commands/plxt.js.map +1 -0
- package/dist/agent/commands/validate.d.ts +15 -0
- package/dist/agent/commands/validate.js +118 -0
- package/dist/agent/commands/validate.js.map +1 -0
- package/dist/agent/output.d.ts +25 -0
- package/dist/agent/output.js +51 -0
- package/dist/agent/output.js.map +1 -0
- package/dist/agent/passthrough.d.ts +5 -0
- package/dist/agent/passthrough.js +19 -0
- package/dist/agent/passthrough.js.map +1 -0
- package/dist/agent-cli.d.ts +8 -0
- package/dist/agent-cli.js +237 -0
- package/dist/agent-cli.js.map +1 -0
- package/dist/cli/commands/build.d.ts +31 -0
- package/dist/cli/commands/build.js +305 -0
- package/dist/cli/commands/build.js.map +1 -0
- package/dist/{commands → cli/commands}/config.js +4 -4
- package/dist/cli/commands/config.js.map +1 -0
- package/dist/{commands → cli/commands}/index.js +20 -18
- package/dist/cli/commands/index.js.map +1 -0
- package/dist/cli/commands/install.js +275 -0
- package/dist/cli/commands/install.js.map +1 -0
- package/dist/cli/commands/package/add.d.ts +6 -0
- package/dist/cli/commands/package/add.js +9 -0
- package/dist/cli/commands/package/add.js.map +1 -0
- package/dist/cli/commands/package/init.d.ts +3 -0
- package/dist/cli/commands/package/init.js +108 -0
- package/dist/cli/commands/package/init.js.map +1 -0
- package/dist/cli/commands/package/install.d.ts +3 -0
- package/dist/cli/commands/package/install.js +97 -0
- package/dist/cli/commands/package/install.js.map +1 -0
- package/dist/cli/commands/package/list.d.ts +3 -0
- package/dist/cli/commands/package/list.js +58 -0
- package/dist/cli/commands/package/list.js.map +1 -0
- package/dist/cli/commands/package/lock.d.ts +3 -0
- package/dist/cli/commands/package/lock.js +37 -0
- package/dist/cli/commands/package/lock.js.map +1 -0
- package/dist/cli/commands/package/update.d.ts +3 -0
- package/dist/cli/commands/package/update.js +35 -0
- package/dist/cli/commands/package/update.js.map +1 -0
- package/dist/cli/commands/package/validate.d.ts +3 -0
- package/dist/cli/commands/package/validate.js +76 -0
- package/dist/cli/commands/package/validate.js.map +1 -0
- package/dist/cli/commands/run.d.ts +12 -0
- package/dist/cli/commands/run.js +95 -0
- package/dist/cli/commands/run.js.map +1 -0
- package/dist/cli/commands/setup.d.ts +3 -0
- package/dist/cli/commands/setup.js +168 -0
- package/dist/cli/commands/setup.js.map +1 -0
- package/dist/cli/commands/utils.d.ts +9 -0
- package/dist/cli/commands/utils.js +34 -0
- package/dist/cli/commands/utils.js.map +1 -0
- package/dist/cli/commands/validate.d.ts +10 -0
- package/dist/cli/commands/validate.js +93 -0
- package/dist/cli/commands/validate.js.map +1 -0
- package/dist/cli.js +276 -99
- package/dist/cli.js.map +1 -1
- package/dist/client/client.js +2 -2
- package/dist/client/client.js.map +1 -1
- package/dist/config/config.d.ts +5 -20
- package/dist/config/config.js +5 -78
- package/dist/config/config.js.map +1 -1
- package/dist/config/credentials.d.ts +25 -0
- package/dist/config/credentials.js +230 -0
- package/dist/config/credentials.js.map +1 -0
- package/dist/installer/agents/registry.d.ts +12 -0
- package/dist/installer/agents/registry.js +78 -0
- package/dist/installer/agents/registry.js.map +1 -0
- package/dist/installer/agents/types.d.ts +16 -0
- package/dist/installer/agents/types.js +6 -0
- package/dist/installer/agents/types.js.map +1 -0
- package/dist/installer/resolver/address.d.ts +2 -0
- package/dist/installer/resolver/address.js.map +1 -0
- package/dist/{resolver → installer/resolver}/github.d.ts +1 -1
- package/dist/{resolver → installer/resolver}/github.js +2 -2
- package/dist/installer/resolver/github.js.map +1 -0
- package/dist/installer/resolver/index.d.ts +6 -0
- package/dist/{resolver → installer/resolver}/index.js +1 -1
- package/dist/installer/resolver/index.js.map +1 -0
- package/dist/{resolver → installer/resolver}/local.d.ts +1 -1
- package/dist/{resolver → installer/resolver}/local.js +2 -2
- package/dist/installer/resolver/local.js.map +1 -0
- package/dist/installer/runtime/check.js.map +1 -0
- package/dist/installer/runtime/installer.js.map +1 -0
- package/dist/installer/runtime/spawn.js.map +1 -0
- package/dist/{telemetry → installer/telemetry}/posthog.d.ts +2 -5
- package/dist/installer/telemetry/posthog.js +55 -0
- package/dist/installer/telemetry/posthog.js.map +1 -0
- package/dist/package/bundle-metadata.d.ts +8 -0
- package/dist/package/bundle-metadata.js +2 -0
- package/dist/package/bundle-metadata.js.map +1 -0
- package/dist/package/bundle-scanner.d.ts +18 -0
- package/dist/package/bundle-scanner.js +77 -0
- package/dist/package/bundle-scanner.js.map +1 -0
- package/dist/package/dependency-resolver.d.ts +32 -0
- package/dist/package/dependency-resolver.js +298 -0
- package/dist/package/dependency-resolver.js.map +1 -0
- package/dist/package/discovery.d.ts +9 -0
- package/dist/package/discovery.js +32 -0
- package/dist/package/discovery.js.map +1 -0
- package/dist/package/exceptions.d.ts +36 -0
- package/dist/package/exceptions.js +73 -0
- package/dist/package/exceptions.js.map +1 -0
- package/dist/package/lock-file.d.ts +27 -0
- package/dist/package/lock-file.js +137 -0
- package/dist/package/lock-file.js.map +1 -0
- package/dist/package/manifest/convert.d.ts +14 -0
- package/dist/package/manifest/convert.js +83 -0
- package/dist/package/manifest/convert.js.map +1 -0
- package/dist/package/manifest/parser.d.ts +9 -0
- package/dist/package/manifest/parser.js +261 -0
- package/dist/package/manifest/parser.js.map +1 -0
- package/dist/package/manifest/schema.d.ts +71 -0
- package/dist/package/manifest/schema.js +73 -0
- package/dist/package/manifest/schema.js.map +1 -0
- package/dist/{resolver → package/manifest}/types.d.ts +2 -5
- package/dist/{resolver → package/manifest}/types.js.map +1 -1
- package/dist/{resolver → package/manifest}/validate.js +25 -20
- package/dist/package/manifest/validate.js.map +1 -0
- package/dist/package/manifest/validation.d.ts +10 -0
- package/dist/package/manifest/validation.js +34 -0
- package/dist/package/manifest/validation.js.map +1 -0
- package/dist/package/package-cache.d.ts +24 -0
- package/dist/package/package-cache.js +92 -0
- package/dist/package/package-cache.js.map +1 -0
- package/dist/package/qualified-ref.d.ts +41 -0
- package/dist/package/qualified-ref.js +105 -0
- package/dist/package/qualified-ref.js.map +1 -0
- package/dist/package/semver.d.ts +33 -0
- package/dist/package/semver.js +77 -0
- package/dist/package/semver.js.map +1 -0
- package/dist/package/vcs-resolver.d.ts +19 -0
- package/dist/package/vcs-resolver.js +115 -0
- package/dist/package/vcs-resolver.js.map +1 -0
- package/dist/package/visibility.d.ts +25 -0
- package/dist/package/visibility.js +132 -0
- package/dist/package/visibility.js.map +1 -0
- package/dist/runners/api-runner.d.ts +3 -0
- package/dist/runners/api-runner.js +9 -1
- package/dist/runners/api-runner.js.map +1 -1
- package/dist/runners/pipelex-runner.d.ts +16 -2
- package/dist/runners/pipelex-runner.js +155 -41
- package/dist/runners/pipelex-runner.js.map +1 -1
- package/dist/runners/registry.d.ts +1 -1
- package/dist/runners/registry.js +5 -4
- package/dist/runners/registry.js.map +1 -1
- package/dist/runners/types.d.ts +17 -10
- package/dist/runners/types.js +6 -1
- package/dist/runners/types.js.map +1 -1
- package/package.json +7 -4
- package/dist/agents/claude-code.d.ts +0 -2
- package/dist/agents/claude-code.js +0 -36
- package/dist/agents/claude-code.js.map +0 -1
- package/dist/agents/cursor.d.ts +0 -2
- package/dist/agents/cursor.js +0 -11
- package/dist/agents/cursor.js.map +0 -1
- package/dist/agents/github-copilot.d.ts +0 -2
- package/dist/agents/github-copilot.js +0 -11
- package/dist/agents/github-copilot.js.map +0 -1
- package/dist/agents/registry.d.ts +0 -4
- package/dist/agents/registry.js +0 -24
- package/dist/agents/registry.js.map +0 -1
- package/dist/agents/types.d.ts +0 -25
- package/dist/agents/types.js +0 -11
- package/dist/agents/types.js.map +0 -1
- package/dist/agents/windsurf.d.ts +0 -2
- package/dist/agents/windsurf.js +0 -11
- package/dist/agents/windsurf.js.map +0 -1
- package/dist/commands/build.d.ts +0 -19
- package/dist/commands/build.js +0 -128
- package/dist/commands/build.js.map +0 -1
- package/dist/commands/config.js.map +0 -1
- package/dist/commands/index.js.map +0 -1
- package/dist/commands/install.js +0 -252
- package/dist/commands/install.js.map +0 -1
- package/dist/commands/run.d.ts +0 -11
- package/dist/commands/run.js +0 -44
- package/dist/commands/run.js.map +0 -1
- package/dist/commands/runner.d.ts +0 -2
- package/dist/commands/runner.js +0 -59
- package/dist/commands/runner.js.map +0 -1
- package/dist/commands/setup.d.ts +0 -1
- package/dist/commands/setup.js +0 -45
- package/dist/commands/setup.js.map +0 -1
- package/dist/commands/telemetry.d.ts +0 -3
- package/dist/commands/telemetry.js +0 -49
- package/dist/commands/telemetry.js.map +0 -1
- package/dist/commands/validate.d.ts +0 -6
- package/dist/commands/validate.js +0 -41
- package/dist/commands/validate.js.map +0 -1
- package/dist/resolver/address.d.ts +0 -2
- package/dist/resolver/address.js.map +0 -1
- package/dist/resolver/github.js.map +0 -1
- package/dist/resolver/index.d.ts +0 -6
- package/dist/resolver/index.js.map +0 -1
- package/dist/resolver/local.js.map +0 -1
- package/dist/resolver/validate.js.map +0 -1
- package/dist/runtime/check.js.map +0 -1
- package/dist/runtime/installer.js.map +0 -1
- package/dist/runtime/spawn.js.map +0 -1
- package/dist/supabase/client.d.ts +0 -4
- package/dist/supabase/client.js +0 -5
- package/dist/supabase/client.js.map +0 -1
- package/dist/supabase/methods.d.ts +0 -2
- package/dist/supabase/methods.js +0 -13
- package/dist/supabase/methods.js.map +0 -1
- package/dist/supabase/types.d.ts +0 -30
- package/dist/supabase/types.js +0 -2
- package/dist/supabase/types.js.map +0 -1
- package/dist/telemetry/posthog.js +0 -117
- package/dist/telemetry/posthog.js.map +0 -1
- /package/dist/{commands → cli/commands}/config.d.ts +0 -0
- /package/dist/{commands → cli/commands}/index.d.ts +0 -0
- /package/dist/{commands → cli/commands}/install.d.ts +0 -0
- /package/dist/{resolver → installer/resolver}/address.js +0 -0
- /package/dist/{runtime → installer/runtime}/check.d.ts +0 -0
- /package/dist/{runtime → installer/runtime}/check.js +0 -0
- /package/dist/{runtime → installer/runtime}/installer.d.ts +0 -0
- /package/dist/{runtime → installer/runtime}/installer.js +0 -0
- /package/dist/{runtime → installer/runtime}/spawn.d.ts +0 -0
- /package/dist/{runtime → installer/runtime}/spawn.js +0 -0
- /package/dist/{resolver → package/manifest}/types.js +0 -0
- /package/dist/{resolver → package/manifest}/validate.d.ts +0 -0
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import semver from "semver";
|
|
2
|
+
export class SemVerError extends Error {
|
|
3
|
+
constructor(message) {
|
|
4
|
+
super(message);
|
|
5
|
+
this.name = "SemVerError";
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Parse a version string into a semver SemVer object.
|
|
10
|
+
* Strips a leading 'v' prefix if present (common in git tags like v1.2.3).
|
|
11
|
+
*/
|
|
12
|
+
export function parseVersion(versionStr) {
|
|
13
|
+
const cleaned = versionStr.startsWith("v") ? versionStr.slice(1) : versionStr;
|
|
14
|
+
const parsed = semver.parse(cleaned);
|
|
15
|
+
if (parsed === null) {
|
|
16
|
+
throw new SemVerError(`Invalid semver version: '${versionStr}'`);
|
|
17
|
+
}
|
|
18
|
+
return parsed;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Parse a constraint string into a semver Range.
|
|
22
|
+
* Supports: "^1.0.0", "~1.0.0", ">=1.0.0 <2.0.0", "*", "1.*", etc.
|
|
23
|
+
*/
|
|
24
|
+
export function parseConstraint(constraintStr) {
|
|
25
|
+
try {
|
|
26
|
+
const range = new semver.Range(constraintStr);
|
|
27
|
+
return range;
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
throw new SemVerError(`Invalid semver constraint: '${constraintStr}'`);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Check whether a version satisfies a constraint.
|
|
35
|
+
*/
|
|
36
|
+
export function versionSatisfies(version, constraint) {
|
|
37
|
+
return semver.satisfies(version, constraint);
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Select the minimum version that satisfies a constraint (MVS).
|
|
41
|
+
* Sorts versions ascending and returns the first match.
|
|
42
|
+
*/
|
|
43
|
+
export function selectMinimumVersion(availableVersions, constraint) {
|
|
44
|
+
const sorted = [...availableVersions].sort(semver.compare);
|
|
45
|
+
for (const version of sorted) {
|
|
46
|
+
if (semver.satisfies(version, constraint)) {
|
|
47
|
+
return version;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Select the minimum version that satisfies ALL constraints simultaneously.
|
|
54
|
+
* Used for diamond dependency resolution.
|
|
55
|
+
*/
|
|
56
|
+
export function selectMinimumVersionForMultipleConstraints(availableVersions, constraints) {
|
|
57
|
+
const sorted = [...availableVersions].sort(semver.compare);
|
|
58
|
+
for (const version of sorted) {
|
|
59
|
+
if (constraints.every((constraint) => semver.satisfies(version, constraint))) {
|
|
60
|
+
return version;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Parse a git tag into a SemVer, returning null if not a valid semver tag.
|
|
67
|
+
* Handles tags like "v1.2.3" and "1.2.3", gracefully ignores non-semver tags.
|
|
68
|
+
*/
|
|
69
|
+
export function parseVersionTag(tag) {
|
|
70
|
+
try {
|
|
71
|
+
return parseVersion(tag);
|
|
72
|
+
}
|
|
73
|
+
catch {
|
|
74
|
+
return null;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=semver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"semver.js","sourceRoot":"","sources":["../../src/package/semver.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,MAAM,OAAO,WAAY,SAAQ,KAAK;IACpC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;IAC5B,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,UAAkB;IAC7C,MAAM,OAAO,GAAG,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;IAC9E,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACrC,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,MAAM,IAAI,WAAW,CAAC,4BAA4B,UAAU,GAAG,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,aAAqB;IACnD,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAC9C,OAAO,KAAK,CAAC;IACf,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,WAAW,CAAC,+BAA+B,aAAa,GAAG,CAAC,CAAC;IACzE,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAsB,EAAE,UAAwB;IAC/E,OAAO,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AAC/C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAClC,iBAAkC,EAClC,UAAwB;IAExB,MAAM,MAAM,GAAG,CAAC,GAAG,iBAAiB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC3D,KAAK,MAAM,OAAO,IAAI,MAAM,EAAE,CAAC;QAC7B,IAAI,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE,CAAC;YAC1C,OAAO,OAAO,CAAC;QACjB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,0CAA0C,CACxD,iBAAkC,EAClC,WAA2B;IAE3B,MAAM,MAAM,GAAG,CAAC,GAAG,iBAAiB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC3D,KAAK,MAAM,OAAO,IAAI,MAAM,EAAE,CAAC;QAC7B,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC;YAC7E,OAAO,OAAO,CAAC;QACjB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,GAAW;IACzC,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { SemVer } from "semver";
|
|
2
|
+
/**
|
|
3
|
+
* Map a package address to a git clone URL.
|
|
4
|
+
* Prepends https:// and appends .git (unless already present).
|
|
5
|
+
*/
|
|
6
|
+
export declare function addressToCloneUrl(address: string): string;
|
|
7
|
+
/**
|
|
8
|
+
* List remote git tags that are valid semver versions.
|
|
9
|
+
* Runs `git ls-remote --tags <url>` and parses the output.
|
|
10
|
+
*/
|
|
11
|
+
export declare function listRemoteVersionTags(cloneUrl: string): Promise<Array<[SemVer, string]>>;
|
|
12
|
+
/**
|
|
13
|
+
* Select the minimum version matching a constraint from a list of tags (MVS).
|
|
14
|
+
*/
|
|
15
|
+
export declare function resolveVersionFromTags(versionTags: Array<[SemVer, string]>, versionConstraint: string): [SemVer, string];
|
|
16
|
+
/**
|
|
17
|
+
* Clone a git repository at a specific tag with depth 1.
|
|
18
|
+
*/
|
|
19
|
+
export declare function cloneAtVersion(cloneUrl: string, versionTag: string, destination: string): Promise<void>;
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { execFile } from "node:child_process";
|
|
2
|
+
import { VCSFetchError, VersionResolutionError } from "./exceptions.js";
|
|
3
|
+
import { parseConstraint, parseVersionTag, selectMinimumVersion, SemVerError } from "./semver.js";
|
|
4
|
+
/**
|
|
5
|
+
* Map a package address to a git clone URL.
|
|
6
|
+
* Prepends https:// and appends .git (unless already present).
|
|
7
|
+
*/
|
|
8
|
+
export function addressToCloneUrl(address) {
|
|
9
|
+
let url = `https://${address}`;
|
|
10
|
+
if (!url.endsWith(".git")) {
|
|
11
|
+
url = `${url}.git`;
|
|
12
|
+
}
|
|
13
|
+
return url;
|
|
14
|
+
}
|
|
15
|
+
function execGit(args, timeoutMs) {
|
|
16
|
+
return new Promise((resolve, reject) => {
|
|
17
|
+
execFile("git", args, { timeout: timeoutMs }, (error, stdout, stderr) => {
|
|
18
|
+
if (error) {
|
|
19
|
+
if (error.code === "ENOENT") {
|
|
20
|
+
reject(new VCSFetchError("git is not installed or not found on PATH"));
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
if (error.killed) {
|
|
24
|
+
reject(new VCSFetchError(`Timed out running: git ${args.join(" ")}`));
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
reject(new VCSFetchError(`git ${args[0]} failed: ${stderr.trim()}`));
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
resolve(stdout);
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* List remote git tags that are valid semver versions.
|
|
36
|
+
* Runs `git ls-remote --tags <url>` and parses the output.
|
|
37
|
+
*/
|
|
38
|
+
export async function listRemoteVersionTags(cloneUrl) {
|
|
39
|
+
let stdout;
|
|
40
|
+
try {
|
|
41
|
+
stdout = await execGit(["ls-remote", "--tags", cloneUrl], 60_000);
|
|
42
|
+
}
|
|
43
|
+
catch (err) {
|
|
44
|
+
if (err instanceof VCSFetchError)
|
|
45
|
+
throw err;
|
|
46
|
+
throw new VCSFetchError(`Failed to list remote tags from '${cloneUrl}': ${err.message}`);
|
|
47
|
+
}
|
|
48
|
+
const versionTags = [];
|
|
49
|
+
for (const line of stdout.trim().split("\n")) {
|
|
50
|
+
if (!line.trim())
|
|
51
|
+
continue;
|
|
52
|
+
const parts = line.split("\t");
|
|
53
|
+
if (parts.length < 2)
|
|
54
|
+
continue;
|
|
55
|
+
const ref = parts[1];
|
|
56
|
+
// Skip dereferenced tags
|
|
57
|
+
if (ref.endsWith("^{}"))
|
|
58
|
+
continue;
|
|
59
|
+
// Extract tag name from refs/tags/...
|
|
60
|
+
const tagName = ref.startsWith("refs/tags/") ? ref.slice("refs/tags/".length) : ref;
|
|
61
|
+
const version = parseVersionTag(tagName);
|
|
62
|
+
if (version !== null) {
|
|
63
|
+
versionTags.push([version, tagName]);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return versionTags;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Select the minimum version matching a constraint from a list of tags (MVS).
|
|
70
|
+
*/
|
|
71
|
+
export function resolveVersionFromTags(versionTags, versionConstraint) {
|
|
72
|
+
if (versionTags.length === 0) {
|
|
73
|
+
throw new VersionResolutionError(`No version tags available to satisfy constraint '${versionConstraint}'`);
|
|
74
|
+
}
|
|
75
|
+
let constraint;
|
|
76
|
+
try {
|
|
77
|
+
constraint = parseConstraint(versionConstraint);
|
|
78
|
+
}
|
|
79
|
+
catch (err) {
|
|
80
|
+
if (err instanceof SemVerError) {
|
|
81
|
+
throw new VersionResolutionError(`Invalid version constraint '${versionConstraint}': ${err.message}`);
|
|
82
|
+
}
|
|
83
|
+
throw err;
|
|
84
|
+
}
|
|
85
|
+
const versions = versionTags.map((entry) => entry[0]);
|
|
86
|
+
const selected = selectMinimumVersion(versions, constraint);
|
|
87
|
+
if (selected === null) {
|
|
88
|
+
const availableStr = versionTags
|
|
89
|
+
.map((entry) => entry[0])
|
|
90
|
+
.sort((a, b) => a.compare(b))
|
|
91
|
+
.map((ver) => ver.version)
|
|
92
|
+
.join(", ");
|
|
93
|
+
throw new VersionResolutionError(`No version satisfying '${versionConstraint}' found among: ${availableStr}`);
|
|
94
|
+
}
|
|
95
|
+
for (const [ver, tagName] of versionTags) {
|
|
96
|
+
if (ver.compare(selected) === 0) {
|
|
97
|
+
return [selected, tagName];
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
throw new VersionResolutionError(`Internal error: selected version ${selected.version} not found in tag list`);
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Clone a git repository at a specific tag with depth 1.
|
|
104
|
+
*/
|
|
105
|
+
export async function cloneAtVersion(cloneUrl, versionTag, destination) {
|
|
106
|
+
try {
|
|
107
|
+
await execGit(["clone", "--depth", "1", "--branch", versionTag, cloneUrl, destination], 120_000);
|
|
108
|
+
}
|
|
109
|
+
catch (err) {
|
|
110
|
+
if (err instanceof VCSFetchError)
|
|
111
|
+
throw err;
|
|
112
|
+
throw new VCSFetchError(`Failed to clone '${cloneUrl}' at tag '${versionTag}': ${err.message}`);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=vcs-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vcs-resolver.js","sourceRoot":"","sources":["../../src/package/vcs-resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { BundleMetadata } from "./bundle-metadata.js";
|
|
2
|
+
import type { ParsedManifest } from "./manifest/schema.js";
|
|
3
|
+
import { parsePipeRef } from "./qualified-ref.js";
|
|
4
|
+
export interface VisibilityError {
|
|
5
|
+
readonly pipeRef: string;
|
|
6
|
+
readonly sourceDomain: string;
|
|
7
|
+
readonly targetDomain: string;
|
|
8
|
+
readonly context: string;
|
|
9
|
+
readonly message: string;
|
|
10
|
+
}
|
|
11
|
+
export declare class PackageVisibilityChecker {
|
|
12
|
+
private readonly manifest;
|
|
13
|
+
private readonly bundleMetadatas;
|
|
14
|
+
private readonly exportedPipes;
|
|
15
|
+
private readonly mainPipes;
|
|
16
|
+
constructor(manifest: ParsedManifest | null, bundleMetadatas: BundleMetadata[]);
|
|
17
|
+
isPipeAccessibleFrom(pipeRef: ReturnType<typeof parsePipeRef>, sourceDomain: string): boolean;
|
|
18
|
+
validateAllPipeReferences(): VisibilityError[];
|
|
19
|
+
validateCrossPackageReferences(): VisibilityError[];
|
|
20
|
+
validateReservedDomains(): VisibilityError[];
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Convenience function: check visibility for a set of bundle metadatas.
|
|
24
|
+
*/
|
|
25
|
+
export declare function checkVisibility(manifest: ParsedManifest | null, bundleMetadatas: BundleMetadata[]): VisibilityError[];
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import { RESERVED_DOMAINS, isReservedDomainPath } from "./manifest/schema.js";
|
|
2
|
+
import { parsePipeRef, hasCrossPackagePrefix, splitCrossPackageRef, isLocalTo } from "./qualified-ref.js";
|
|
3
|
+
import { QualifiedRefError } from "./exceptions.js";
|
|
4
|
+
export class PackageVisibilityChecker {
|
|
5
|
+
manifest;
|
|
6
|
+
bundleMetadatas;
|
|
7
|
+
exportedPipes;
|
|
8
|
+
mainPipes;
|
|
9
|
+
constructor(manifest, bundleMetadatas) {
|
|
10
|
+
this.manifest = manifest;
|
|
11
|
+
this.bundleMetadatas = bundleMetadatas;
|
|
12
|
+
// Build lookup: exported_pipes[domain_path] = set of pipe codes
|
|
13
|
+
this.exportedPipes = new Map();
|
|
14
|
+
if (manifest) {
|
|
15
|
+
for (const [domainPath, domainExport] of Object.entries(manifest.exports)) {
|
|
16
|
+
this.exportedPipes.set(domainPath, new Set(domainExport.pipes));
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
// Build lookup: main_pipes[domain_path] = main_pipe code (auto-exported)
|
|
20
|
+
this.mainPipes = new Map();
|
|
21
|
+
for (const metadata of bundleMetadatas) {
|
|
22
|
+
if (metadata.mainPipe) {
|
|
23
|
+
const existing = this.mainPipes.get(metadata.domain);
|
|
24
|
+
if (!existing || existing === metadata.mainPipe) {
|
|
25
|
+
this.mainPipes.set(metadata.domain, metadata.mainPipe);
|
|
26
|
+
}
|
|
27
|
+
// Conflicting main_pipe: keep first
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
isPipeAccessibleFrom(pipeRef, sourceDomain) {
|
|
32
|
+
// No manifest -> all pipes public
|
|
33
|
+
if (this.manifest === null)
|
|
34
|
+
return true;
|
|
35
|
+
// Bare ref -> always allowed
|
|
36
|
+
if (pipeRef.domainPath === null)
|
|
37
|
+
return true;
|
|
38
|
+
// Same-domain ref -> always allowed
|
|
39
|
+
if (isLocalTo(pipeRef, sourceDomain))
|
|
40
|
+
return true;
|
|
41
|
+
const targetDomain = pipeRef.domainPath;
|
|
42
|
+
const pipeCode = pipeRef.localCode;
|
|
43
|
+
// Check exports
|
|
44
|
+
const exported = this.exportedPipes.get(targetDomain) ?? new Set();
|
|
45
|
+
if (exported.has(pipeCode))
|
|
46
|
+
return true;
|
|
47
|
+
// Check main_pipe (auto-exported)
|
|
48
|
+
const mainPipe = this.mainPipes.get(targetDomain);
|
|
49
|
+
return Boolean(mainPipe && pipeCode === mainPipe);
|
|
50
|
+
}
|
|
51
|
+
validateAllPipeReferences() {
|
|
52
|
+
if (this.manifest === null)
|
|
53
|
+
return [];
|
|
54
|
+
const errors = [];
|
|
55
|
+
for (const metadata of this.bundleMetadatas) {
|
|
56
|
+
for (const [pipeRefStr, context] of metadata.pipeReferences) {
|
|
57
|
+
let ref;
|
|
58
|
+
try {
|
|
59
|
+
ref = parsePipeRef(pipeRefStr);
|
|
60
|
+
}
|
|
61
|
+
catch (err) {
|
|
62
|
+
if (err instanceof QualifiedRefError)
|
|
63
|
+
continue;
|
|
64
|
+
throw err;
|
|
65
|
+
}
|
|
66
|
+
if (!this.isPipeAccessibleFrom(ref, metadata.domain)) {
|
|
67
|
+
const targetDomain = ref.domainPath ?? "";
|
|
68
|
+
errors.push({
|
|
69
|
+
pipeRef: pipeRefStr,
|
|
70
|
+
sourceDomain: metadata.domain,
|
|
71
|
+
targetDomain,
|
|
72
|
+
context,
|
|
73
|
+
message: `Pipe '${pipeRefStr}' referenced in ${context} (domain '${metadata.domain}') ` +
|
|
74
|
+
`is not exported by domain '${targetDomain}'. ` +
|
|
75
|
+
`Add it to [exports.${targetDomain}] pipes in METHODS.toml.`,
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return errors;
|
|
81
|
+
}
|
|
82
|
+
validateCrossPackageReferences() {
|
|
83
|
+
if (this.manifest === null)
|
|
84
|
+
return [];
|
|
85
|
+
const errors = [];
|
|
86
|
+
for (const metadata of this.bundleMetadatas) {
|
|
87
|
+
for (const [pipeRefStr, context] of metadata.pipeReferences) {
|
|
88
|
+
if (!hasCrossPackagePrefix(pipeRefStr))
|
|
89
|
+
continue;
|
|
90
|
+
const [alias] = splitCrossPackageRef(pipeRefStr);
|
|
91
|
+
errors.push({
|
|
92
|
+
pipeRef: pipeRefStr,
|
|
93
|
+
sourceDomain: metadata.domain,
|
|
94
|
+
targetDomain: alias,
|
|
95
|
+
context,
|
|
96
|
+
message: `Cross-package reference '${pipeRefStr}' in ${context} ` +
|
|
97
|
+
`(domain '${metadata.domain}'): dependencies are not supported ` +
|
|
98
|
+
"in this version of the MTHDS standard.",
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
return errors;
|
|
103
|
+
}
|
|
104
|
+
validateReservedDomains() {
|
|
105
|
+
const errors = [];
|
|
106
|
+
for (const metadata of this.bundleMetadatas) {
|
|
107
|
+
if (isReservedDomainPath(metadata.domain)) {
|
|
108
|
+
const firstSegment = metadata.domain.split(".")[0];
|
|
109
|
+
errors.push({
|
|
110
|
+
pipeRef: "",
|
|
111
|
+
sourceDomain: metadata.domain,
|
|
112
|
+
targetDomain: firstSegment,
|
|
113
|
+
context: "bundle domain declaration",
|
|
114
|
+
message: `Bundle domain '${metadata.domain}' uses reserved domain '${firstSegment}'. ` +
|
|
115
|
+
`Reserved domains (${[...RESERVED_DOMAINS].sort().join(", ")}) cannot be used in user packages.`,
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
return errors;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Convenience function: check visibility for a set of bundle metadatas.
|
|
124
|
+
*/
|
|
125
|
+
export function checkVisibility(manifest, bundleMetadatas) {
|
|
126
|
+
const checker = new PackageVisibilityChecker(manifest, bundleMetadatas);
|
|
127
|
+
const errors = checker.validateReservedDomains();
|
|
128
|
+
errors.push(...checker.validateAllPipeReferences());
|
|
129
|
+
errors.push(...checker.validateCrossPackageReferences());
|
|
130
|
+
return errors;
|
|
131
|
+
}
|
|
132
|
+
//# sourceMappingURL=visibility.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"visibility.js","sourceRoot":"","sources":["../../src/package/visibility.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Runner, RunnerType, BuildInputsRequest, BuildOutputRequest, BuildPipeRequest, BuildPipeResponse, BuildRunnerRequest, BuildRunnerResponse, ExecuteRequest, PipelineResponse, ValidateRequest, ValidateResponse } from "./types.js";
|
|
2
|
+
import type { ExecutePipelineOptions, PipelineExecuteResponse, PipelineStartResponse } from "../client/pipeline.js";
|
|
2
3
|
export declare class ApiRunner implements Runner {
|
|
3
4
|
readonly type: RunnerType;
|
|
4
5
|
private readonly baseUrl;
|
|
@@ -15,4 +16,6 @@ export declare class ApiRunner implements Runner {
|
|
|
15
16
|
buildRunner(request: BuildRunnerRequest): Promise<BuildRunnerResponse>;
|
|
16
17
|
execute(request: ExecuteRequest): Promise<PipelineResponse>;
|
|
17
18
|
validate(request: ValidateRequest): Promise<ValidateResponse>;
|
|
19
|
+
executePipeline(options: ExecutePipelineOptions): Promise<PipelineExecuteResponse>;
|
|
20
|
+
startPipeline(options: ExecutePipelineOptions): Promise<PipelineStartResponse>;
|
|
18
21
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { loadConfig } from "../config/config.js";
|
|
2
|
+
import { Runners } from "./types.js";
|
|
2
3
|
export class ApiRunner {
|
|
3
|
-
type =
|
|
4
|
+
type = Runners.API;
|
|
4
5
|
baseUrl;
|
|
5
6
|
apiKey;
|
|
6
7
|
constructor(baseUrl, apiKey) {
|
|
@@ -62,5 +63,12 @@ export class ApiRunner {
|
|
|
62
63
|
async validate(request) {
|
|
63
64
|
return this.post("/api/v1/validate", request);
|
|
64
65
|
}
|
|
66
|
+
// ── RunnerProtocol implementation ─────────────────────────────────
|
|
67
|
+
async executePipeline(options) {
|
|
68
|
+
return this.post("/api/v1/pipeline/execute", options);
|
|
69
|
+
}
|
|
70
|
+
async startPipeline(options) {
|
|
71
|
+
return this.post("/api/v1/pipeline/start", options);
|
|
72
|
+
}
|
|
65
73
|
}
|
|
66
74
|
//# sourceMappingURL=api-runner.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-runner.js","sourceRoot":"","sources":["../../src/runners/api-runner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"api-runner.js","sourceRoot":"","sources":["../../src/runners/api-runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,27 @@
|
|
|
1
1
|
import type { Runner, RunnerType, BuildInputsRequest, BuildOutputRequest, BuildPipeRequest, BuildPipeResponse, BuildRunnerRequest, BuildRunnerResponse, ExecuteRequest, PipelineResponse, ValidateRequest, ValidateResponse } from "./types.js";
|
|
2
|
+
import type { ExecutePipelineOptions, PipelineExecuteResponse, PipelineStartResponse } from "../client/pipeline.js";
|
|
2
3
|
export declare class PipelexRunner implements Runner {
|
|
3
4
|
readonly type: RunnerType;
|
|
5
|
+
private readonly libraryDirs;
|
|
6
|
+
constructor(libraryDirs?: string[]);
|
|
7
|
+
private libraryArgs;
|
|
4
8
|
private exec;
|
|
9
|
+
/**
|
|
10
|
+
* Run pipelex with stdout and stderr inherited (streamed to the terminal).
|
|
11
|
+
* Use this for long-running or interactive commands.
|
|
12
|
+
*/
|
|
13
|
+
private execStreaming;
|
|
14
|
+
buildPassthrough(subcommand: string, rawArgs: string[]): Promise<void>;
|
|
15
|
+
runPassthrough(rawArgs: string[]): Promise<void>;
|
|
16
|
+
validatePassthrough(rawArgs: string[]): Promise<void>;
|
|
5
17
|
health(): Promise<Record<string, unknown>>;
|
|
6
18
|
version(): Promise<Record<string, string>>;
|
|
7
|
-
buildInputs(
|
|
8
|
-
buildOutput(
|
|
19
|
+
buildInputs(request: BuildInputsRequest): Promise<unknown>;
|
|
20
|
+
buildOutput(request: BuildOutputRequest): Promise<unknown>;
|
|
9
21
|
buildPipe(request: BuildPipeRequest): Promise<BuildPipeResponse>;
|
|
10
22
|
buildRunner(request: BuildRunnerRequest): Promise<BuildRunnerResponse>;
|
|
11
23
|
execute(request: ExecuteRequest): Promise<PipelineResponse>;
|
|
12
24
|
validate(request: ValidateRequest): Promise<ValidateResponse>;
|
|
25
|
+
executePipeline(options: ExecutePipelineOptions): Promise<PipelineExecuteResponse>;
|
|
26
|
+
startPipeline(_options: ExecutePipelineOptions): Promise<PipelineStartResponse>;
|
|
13
27
|
}
|