mthds 0.4.1 → 0.6.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/README.md +5 -6
- package/dist/agent/binaries.d.ts +5 -0
- package/dist/agent/binaries.js +26 -27
- package/dist/agent/binaries.js.map +1 -1
- package/dist/agent/commands/codex-config.d.ts +51 -0
- package/dist/agent/commands/codex-config.js +301 -0
- package/dist/agent/commands/codex-config.js.map +1 -0
- package/dist/agent/commands/codex-hook.d.ts +70 -0
- package/dist/agent/commands/codex-hook.js +205 -0
- package/dist/agent/commands/codex-hook.js.map +1 -0
- package/dist/agent/commands/codex.d.ts +17 -10
- package/dist/agent/commands/codex.js +89 -27
- package/dist/agent/commands/codex.js.map +1 -1
- package/dist/agent/commands/doctor.js +42 -2
- package/dist/agent/commands/doctor.js.map +1 -1
- package/dist/agent/commands/install.d.ts +0 -2
- package/dist/agent/commands/install.js +10 -81
- package/dist/agent/commands/install.js.map +1 -1
- package/dist/agent/plugin-version.d.ts +2 -2
- package/dist/agent/plugin-version.js +2 -2
- package/dist/agent/plugin-version.js.map +1 -1
- package/dist/agent-cli.js +20 -4
- package/dist/agent-cli.js.map +1 -1
- package/dist/cli/commands/install.js +34 -119
- package/dist/cli/commands/install.js.map +1 -1
- package/dist/client/client.js +72 -9
- package/dist/client/client.js.map +1 -1
- package/dist/client/exceptions.d.ts +41 -1
- package/dist/client/exceptions.js +50 -2
- package/dist/client/exceptions.js.map +1 -1
- package/dist/client/index.d.ts +1 -1
- package/dist/client/index.js +1 -1
- package/dist/client/index.js.map +1 -1
- package/dist/installer/methods/install-flow.d.ts +25 -0
- package/dist/installer/methods/install-flow.js +51 -0
- package/dist/installer/methods/install-flow.js.map +1 -0
- package/dist/installer/methods/types.d.ts +4 -0
- package/dist/installer/methods/types.js.map +1 -0
- package/dist/installer/methods/writer.d.ts +19 -0
- package/dist/installer/{agents/registry.js → methods/writer.js} +11 -26
- package/dist/installer/methods/writer.js.map +1 -0
- package/package.json +1 -1
- package/dist/installer/agents/registry.d.ts +0 -12
- package/dist/installer/agents/registry.js.map +0 -1
- package/dist/installer/agents/types.d.ts +0 -16
- package/dist/installer/agents/types.js.map +0 -1
- /package/dist/installer/{agents → methods}/types.js +0 -0
package/dist/client/client.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ClientAuthenticationError, PipelineRequestError, } from "./exceptions.js";
|
|
1
|
+
import { ApiResponseError, ApiUnreachableError, ClientAuthenticationError, PipelineRequestError, } from "./exceptions.js";
|
|
2
2
|
export class MthdsApiClient {
|
|
3
3
|
apiToken;
|
|
4
4
|
apiBaseUrl;
|
|
@@ -18,15 +18,26 @@ export class MthdsApiClient {
|
|
|
18
18
|
if (this.apiToken) {
|
|
19
19
|
headers["Authorization"] = `Bearer ${this.apiToken}`;
|
|
20
20
|
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
21
|
+
let response;
|
|
22
|
+
try {
|
|
23
|
+
response = await fetch(url, {
|
|
24
|
+
method: "POST",
|
|
25
|
+
headers,
|
|
26
|
+
body: JSON.stringify(pipelineRequest),
|
|
27
|
+
signal: AbortSignal.timeout(1_200_000),
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
catch (err) {
|
|
31
|
+
// undici (Node fetch) wraps DNS/connect/TLS failures as
|
|
32
|
+
// `TypeError("fetch failed")` with the system error attached as `cause`.
|
|
33
|
+
// `AbortSignal.timeout` rejects with a DOMException named "TimeoutError".
|
|
34
|
+
const code = extractNetworkErrorCode(err);
|
|
35
|
+
throw new ApiUnreachableError(`Could not reach Pipelex API at ${this.apiBaseUrl} (${code ?? "network error"})`, this.apiBaseUrl, code, { cause: err });
|
|
36
|
+
}
|
|
27
37
|
if (!response.ok) {
|
|
28
|
-
const
|
|
29
|
-
|
|
38
|
+
const body = await response.text().catch(() => "");
|
|
39
|
+
const { errorType, serverMessage } = parseErrorBody(body);
|
|
40
|
+
throw new ApiResponseError(`API POST /${endpoint} failed (${response.status}): ${serverMessage ?? (body || response.statusText)}`, this.apiBaseUrl, response.status, response.statusText, body, errorType, serverMessage);
|
|
30
41
|
}
|
|
31
42
|
return response.json();
|
|
32
43
|
}
|
|
@@ -61,4 +72,56 @@ export class MthdsApiClient {
|
|
|
61
72
|
return data;
|
|
62
73
|
}
|
|
63
74
|
}
|
|
75
|
+
function extractNetworkErrorCode(err) {
|
|
76
|
+
if (err instanceof DOMException && err.name === "TimeoutError") {
|
|
77
|
+
return "ABORT_TIMEOUT";
|
|
78
|
+
}
|
|
79
|
+
if (err instanceof Error) {
|
|
80
|
+
const cause = err.cause;
|
|
81
|
+
if (cause && typeof cause === "object" && "code" in cause) {
|
|
82
|
+
const code = cause.code;
|
|
83
|
+
if (typeof code === "string")
|
|
84
|
+
return code;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
return undefined;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Pipelex API serializes errors as `{"detail": {"error_type": ..., "message": ...}}`
|
|
91
|
+
* (HTTPException with dict detail) or `{"detail": "..."}` (auth 401s).
|
|
92
|
+
* Both shapes are extracted here. Falls through silently on non-JSON bodies.
|
|
93
|
+
*/
|
|
94
|
+
function parseErrorBody(body) {
|
|
95
|
+
if (!body)
|
|
96
|
+
return { errorType: undefined, serverMessage: undefined };
|
|
97
|
+
let parsed;
|
|
98
|
+
try {
|
|
99
|
+
parsed = JSON.parse(body);
|
|
100
|
+
}
|
|
101
|
+
catch {
|
|
102
|
+
return { errorType: undefined, serverMessage: undefined };
|
|
103
|
+
}
|
|
104
|
+
if (!parsed || typeof parsed !== "object") {
|
|
105
|
+
return { errorType: undefined, serverMessage: undefined };
|
|
106
|
+
}
|
|
107
|
+
const root = parsed;
|
|
108
|
+
const detail = root.detail;
|
|
109
|
+
let errorType;
|
|
110
|
+
let serverMessage;
|
|
111
|
+
if (detail && typeof detail === "object") {
|
|
112
|
+
const d = detail;
|
|
113
|
+
if (typeof d.error_type === "string")
|
|
114
|
+
errorType = d.error_type;
|
|
115
|
+
if (typeof d.message === "string")
|
|
116
|
+
serverMessage = d.message;
|
|
117
|
+
}
|
|
118
|
+
else if (typeof detail === "string") {
|
|
119
|
+
serverMessage = detail;
|
|
120
|
+
}
|
|
121
|
+
if (errorType === undefined && typeof root.error_type === "string")
|
|
122
|
+
errorType = root.error_type;
|
|
123
|
+
if (serverMessage === undefined && typeof root.message === "string")
|
|
124
|
+
serverMessage = root.message;
|
|
125
|
+
return { errorType, serverMessage };
|
|
126
|
+
}
|
|
64
127
|
//# sourceMappingURL=client.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client/client.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,yBAAyB,EACzB,oBAAoB,GACrB,MAAM,iBAAiB,CAAC;AAOzB,MAAM,OAAO,cAAc;IACR,QAAQ,CAAqB;IAC7B,UAAU,CAAS;IAEpC,YAAY,UAAiC,EAAE;QAC7C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;QAEhE,MAAM,eAAe,GACnB,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;QACpD,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,MAAM,IAAI,yBAAyB,CACjC,4CAA4C,CAC7C,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,UAAU,GAAG,eAAe,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACxD,CAAC;IAEO,KAAK,CAAC,WAAW,CACvB,QAAgB,EAChB,eAAgC;QAEhC,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,UAAU,IAAI,QAAQ,EAAE,CAAC;QAE7C,MAAM,OAAO,GAA2B;YACtC,cAAc,EAAE,kBAAkB;SACnC,CAAC;QACF,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,IAAI,CAAC,QAAQ,EAAE,CAAC;QACvD,CAAC;QAED,
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,5 +2,45 @@ export declare class ClientAuthenticationError extends Error {
|
|
|
2
2
|
constructor(message: string);
|
|
3
3
|
}
|
|
4
4
|
export declare class PipelineRequestError extends Error {
|
|
5
|
-
constructor(message: string
|
|
5
|
+
constructor(message: string, options?: {
|
|
6
|
+
cause?: unknown;
|
|
7
|
+
});
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Thrown when the Pipelex API host cannot be reached at all (DNS failure,
|
|
11
|
+
* connection refused, TLS handshake failure, request timeout). The HTTP
|
|
12
|
+
* exchange never produced a response — distinguish from `ApiResponseError`,
|
|
13
|
+
* which represents a non-2xx response that did come back.
|
|
14
|
+
*
|
|
15
|
+
* `code` is the underlying network error code when available
|
|
16
|
+
* (`ECONNREFUSED`, `ENOTFOUND`, `ETIMEDOUT`, `EAI_AGAIN`, `ABORT_TIMEOUT`).
|
|
17
|
+
*/
|
|
18
|
+
export declare class ApiUnreachableError extends PipelineRequestError {
|
|
19
|
+
readonly apiUrl: string;
|
|
20
|
+
readonly code: string | undefined;
|
|
21
|
+
constructor(message: string, apiUrl: string, code: string | undefined, options?: {
|
|
22
|
+
cause?: unknown;
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Thrown when the API returned a non-2xx HTTP response. Carries structured
|
|
27
|
+
* fields so callers can render meaningful UI without parsing the message:
|
|
28
|
+
* - `status` / `statusText` — HTTP status from the response
|
|
29
|
+
* - `responseBody` — raw response body (always retained)
|
|
30
|
+
* - `errorType` / `serverMessage` — parsed from the JSON body when present
|
|
31
|
+
*
|
|
32
|
+
* Pipelex API serializes errors as `{"detail": {"error_type", "message"}}`
|
|
33
|
+
* (HTTPException with dict detail) or `{"detail": "..."}` (auth 401s).
|
|
34
|
+
* Both shapes are extracted here.
|
|
35
|
+
*/
|
|
36
|
+
export declare class ApiResponseError extends PipelineRequestError {
|
|
37
|
+
readonly apiUrl: string;
|
|
38
|
+
readonly status: number;
|
|
39
|
+
readonly statusText: string;
|
|
40
|
+
readonly responseBody: string;
|
|
41
|
+
readonly errorType: string | undefined;
|
|
42
|
+
readonly serverMessage: string | undefined;
|
|
43
|
+
constructor(message: string, apiUrl: string, status: number, statusText: string, responseBody: string, errorType: string | undefined, serverMessage: string | undefined, options?: {
|
|
44
|
+
cause?: unknown;
|
|
45
|
+
});
|
|
6
46
|
}
|
|
@@ -5,9 +5,57 @@ export class ClientAuthenticationError extends Error {
|
|
|
5
5
|
}
|
|
6
6
|
}
|
|
7
7
|
export class PipelineRequestError extends Error {
|
|
8
|
-
constructor(message) {
|
|
9
|
-
super(message);
|
|
8
|
+
constructor(message, options) {
|
|
9
|
+
super(message, options);
|
|
10
10
|
this.name = "PipelineRequestError";
|
|
11
11
|
}
|
|
12
12
|
}
|
|
13
|
+
/**
|
|
14
|
+
* Thrown when the Pipelex API host cannot be reached at all (DNS failure,
|
|
15
|
+
* connection refused, TLS handshake failure, request timeout). The HTTP
|
|
16
|
+
* exchange never produced a response — distinguish from `ApiResponseError`,
|
|
17
|
+
* which represents a non-2xx response that did come back.
|
|
18
|
+
*
|
|
19
|
+
* `code` is the underlying network error code when available
|
|
20
|
+
* (`ECONNREFUSED`, `ENOTFOUND`, `ETIMEDOUT`, `EAI_AGAIN`, `ABORT_TIMEOUT`).
|
|
21
|
+
*/
|
|
22
|
+
export class ApiUnreachableError extends PipelineRequestError {
|
|
23
|
+
apiUrl;
|
|
24
|
+
code;
|
|
25
|
+
constructor(message, apiUrl, code, options) {
|
|
26
|
+
super(message, options);
|
|
27
|
+
this.name = "ApiUnreachableError";
|
|
28
|
+
this.apiUrl = apiUrl;
|
|
29
|
+
this.code = code;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Thrown when the API returned a non-2xx HTTP response. Carries structured
|
|
34
|
+
* fields so callers can render meaningful UI without parsing the message:
|
|
35
|
+
* - `status` / `statusText` — HTTP status from the response
|
|
36
|
+
* - `responseBody` — raw response body (always retained)
|
|
37
|
+
* - `errorType` / `serverMessage` — parsed from the JSON body when present
|
|
38
|
+
*
|
|
39
|
+
* Pipelex API serializes errors as `{"detail": {"error_type", "message"}}`
|
|
40
|
+
* (HTTPException with dict detail) or `{"detail": "..."}` (auth 401s).
|
|
41
|
+
* Both shapes are extracted here.
|
|
42
|
+
*/
|
|
43
|
+
export class ApiResponseError extends PipelineRequestError {
|
|
44
|
+
apiUrl;
|
|
45
|
+
status;
|
|
46
|
+
statusText;
|
|
47
|
+
responseBody;
|
|
48
|
+
errorType;
|
|
49
|
+
serverMessage;
|
|
50
|
+
constructor(message, apiUrl, status, statusText, responseBody, errorType, serverMessage, options) {
|
|
51
|
+
super(message, options);
|
|
52
|
+
this.name = "ApiResponseError";
|
|
53
|
+
this.apiUrl = apiUrl;
|
|
54
|
+
this.status = status;
|
|
55
|
+
this.statusText = statusText;
|
|
56
|
+
this.responseBody = responseBody;
|
|
57
|
+
this.errorType = errorType;
|
|
58
|
+
this.serverMessage = serverMessage;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
13
61
|
//# sourceMappingURL=exceptions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exceptions.js","sourceRoot":"","sources":["../../src/client/exceptions.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,yBAA0B,SAAQ,KAAK;IAClD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,2BAA2B,CAAC;IAC1C,CAAC;CACF;AAED,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAC7C,YAAY,OAAe;
|
|
1
|
+
{"version":3,"file":"exceptions.js","sourceRoot":"","sources":["../../src/client/exceptions.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,yBAA0B,SAAQ,KAAK;IAClD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,2BAA2B,CAAC;IAC1C,CAAC;CACF;AAED,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAC7C,YAAY,OAAe,EAAE,OAA6B;QACxD,KAAK,CAAC,OAAO,EAAE,OAAmC,CAAC,CAAC;QACpD,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;IACrC,CAAC;CACF;AAED;;;;;;;;GAQG;AACH,MAAM,OAAO,mBAAoB,SAAQ,oBAAoB;IAC3C,MAAM,CAAS;IACf,IAAI,CAAqB;IAEzC,YACE,OAAe,EACf,MAAc,EACd,IAAwB,EACxB,OAA6B;QAE7B,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;QAClC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAED;;;;;;;;;;GAUG;AACH,MAAM,OAAO,gBAAiB,SAAQ,oBAAoB;IACxC,MAAM,CAAS;IACf,MAAM,CAAS;IACf,UAAU,CAAS;IACnB,YAAY,CAAS;IACrB,SAAS,CAAqB;IAC9B,aAAa,CAAqB;IAElD,YACE,OAAe,EACf,MAAc,EACd,MAAc,EACd,UAAkB,EAClB,YAAoB,EACpB,SAA6B,EAC7B,aAAiC,EACjC,OAA6B;QAE7B,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;QAC/B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACrC,CAAC;CACF"}
|
package/dist/client/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { MthdsApiClient } from "./client.js";
|
|
2
2
|
export type { RunnerProtocol } from "./protocol.js";
|
|
3
|
-
export { ClientAuthenticationError, PipelineRequestError, } from "./exceptions.js";
|
|
3
|
+
export { ApiResponseError, ApiUnreachableError, ClientAuthenticationError, PipelineRequestError, } from "./exceptions.js";
|
|
4
4
|
export type { PipelineState, PipelineRequest, PipelineExecuteResponse, PipelineStartResponse, ExecutePipelineOptions, } from "./pipeline.js";
|
|
5
5
|
export type { DictStuff, DictWorkingMemory, DictPipeOutput, VariableMultiplicity, StuffContentOrData, PipelineInputs, } from "./models/index.js";
|
package/dist/client/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export { MthdsApiClient } from "./client.js";
|
|
2
|
-
export { ClientAuthenticationError, PipelineRequestError, } from "./exceptions.js";
|
|
2
|
+
export { ApiResponseError, ApiUnreachableError, ClientAuthenticationError, PipelineRequestError, } from "./exceptions.js";
|
|
3
3
|
//# sourceMappingURL=index.js.map
|
package/dist/client/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,EACL,yBAAyB,EACzB,oBAAoB,GACrB,MAAM,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,yBAAyB,EACzB,oBAAoB,GACrB,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { InstallLocation } from "./types.js";
|
|
2
|
+
import type { ResolvedRepo } from "../../package/manifest/types.js";
|
|
3
|
+
export interface InstallFlowInput {
|
|
4
|
+
readonly resolved: ResolvedRepo;
|
|
5
|
+
readonly location: InstallLocation;
|
|
6
|
+
readonly orgRepo?: string;
|
|
7
|
+
}
|
|
8
|
+
export interface InstallFlowResult {
|
|
9
|
+
readonly targetDir: string;
|
|
10
|
+
readonly installedMethods: string[];
|
|
11
|
+
readonly shimDir: string;
|
|
12
|
+
readonly shimsGenerated: string[];
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Shared install flow used by both `mthds install` (interactive) and
|
|
16
|
+
* `mthds-agent install` (non-interactive JSON). Handles target-dir
|
|
17
|
+
* computation, telemetry, file writes, and shim generation.
|
|
18
|
+
*
|
|
19
|
+
* The on-disk layout is agent-agnostic — methods always go under
|
|
20
|
+
* `.mthds/methods/` (project-local) or `~/.mthds/methods/` (global).
|
|
21
|
+
*
|
|
22
|
+
* Resolution, runner setup, validation, and prompts/output formatting are
|
|
23
|
+
* the caller's responsibility.
|
|
24
|
+
*/
|
|
25
|
+
export declare function runInstallFlow(input: InstallFlowInput): InstallFlowResult;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { join } from "node:path";
|
|
2
|
+
import { homedir } from "node:os";
|
|
3
|
+
import { trackInstall } from "../telemetry/posthog.js";
|
|
4
|
+
import { writeMethodFiles } from "./writer.js";
|
|
5
|
+
import { InstallLocation } from "./types.js";
|
|
6
|
+
/**
|
|
7
|
+
* Shared install flow used by both `mthds install` (interactive) and
|
|
8
|
+
* `mthds-agent install` (non-interactive JSON). Handles target-dir
|
|
9
|
+
* computation, telemetry, file writes, and shim generation.
|
|
10
|
+
*
|
|
11
|
+
* The on-disk layout is agent-agnostic — methods always go under
|
|
12
|
+
* `.mthds/methods/` (project-local) or `~/.mthds/methods/` (global).
|
|
13
|
+
*
|
|
14
|
+
* Resolution, runner setup, validation, and prompts/output formatting are
|
|
15
|
+
* the caller's responsibility.
|
|
16
|
+
*/
|
|
17
|
+
export function runInstallFlow(input) {
|
|
18
|
+
const { resolved, location, orgRepo } = input;
|
|
19
|
+
const localDir = join(process.cwd(), ".mthds", "methods");
|
|
20
|
+
const globalDir = join(homedir(), ".mthds", "methods");
|
|
21
|
+
const targetDir = location === InstallLocation.Global ? globalDir : localDir;
|
|
22
|
+
if (resolved.source === "github" && resolved.isPublic) {
|
|
23
|
+
for (const method of resolved.methods) {
|
|
24
|
+
const pkg = method.manifest.package;
|
|
25
|
+
trackInstall({
|
|
26
|
+
address: orgRepo ?? pkg.address.replace(/^github\.com\//, ""),
|
|
27
|
+
name: pkg.name,
|
|
28
|
+
main_pipe: pkg.main_pipe,
|
|
29
|
+
version: pkg.version,
|
|
30
|
+
description: pkg.description,
|
|
31
|
+
display_name: pkg.display_name,
|
|
32
|
+
authors: pkg.authors,
|
|
33
|
+
license: pkg.license,
|
|
34
|
+
mthds_version: pkg.mthds_version,
|
|
35
|
+
exports: method.manifest.exports,
|
|
36
|
+
manifest_raw: method.rawManifest,
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
writeMethodFiles(resolved, targetDir);
|
|
41
|
+
// writeMethodFiles always generates a shim per method (creating ~/.mthds/bin
|
|
42
|
+
// if needed), so installed methods and generated shims are the same set.
|
|
43
|
+
const installedNames = resolved.methods.map((method) => method.name);
|
|
44
|
+
return {
|
|
45
|
+
targetDir,
|
|
46
|
+
installedMethods: installedNames,
|
|
47
|
+
shimDir: join(homedir(), ".mthds", "bin"),
|
|
48
|
+
shimsGenerated: installedNames,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=install-flow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install-flow.js","sourceRoot":"","sources":["../../../src/installer/methods/install-flow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAgB7C;;;;;;;;;;GAUG;AACH,MAAM,UAAU,cAAc,CAAC,KAAuB;IACpD,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IAE9C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC1D,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;IACvD,MAAM,SAAS,GAAG,QAAQ,KAAK,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC;IAE7E,IAAI,QAAQ,CAAC,MAAM,KAAK,QAAQ,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACtD,KAAK,MAAM,MAAM,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YACtC,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;YACpC,YAAY,CAAC;gBACX,OAAO,EAAE,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC;gBAC7D,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,SAAS,EAAE,GAAG,CAAC,SAAS;gBACxB,OAAO,EAAE,GAAG,CAAC,OAAO;gBACpB,WAAW,EAAE,GAAG,CAAC,WAAW;gBAC5B,YAAY,EAAE,GAAG,CAAC,YAAY;gBAC9B,OAAO,EAAE,GAAG,CAAC,OAAO;gBACpB,OAAO,EAAE,GAAG,CAAC,OAAO;gBACpB,aAAa,EAAE,GAAG,CAAC,aAAa;gBAChC,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO;gBAChC,YAAY,EAAE,MAAM,CAAC,WAAW;aACjC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,gBAAgB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAEtC,6EAA6E;IAC7E,yEAAyE;IACzE,MAAM,cAAc,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAErE,OAAO;QACL,SAAS;QACT,gBAAgB,EAAE,cAAc;QAChC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC;QACzC,cAAc,EAAE,cAAc;KAC/B,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/installer/methods/types.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,eAGX;AAHD,WAAY,eAAe;IACzB,kCAAe,CAAA;IACf,oCAAiB,CAAA;AACnB,CAAC,EAHW,eAAe,KAAf,eAAe,QAG1B"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { ResolvedRepo } from "../../package/manifest/types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Generate an executable CLI shim for a method in ~/.mthds/bin/.
|
|
4
|
+
*
|
|
5
|
+
* The shim allows invoking a method directly by name, e.g.:
|
|
6
|
+
* extract-contract-terms --inputs '{"text": "..."}'
|
|
7
|
+
*
|
|
8
|
+
* On Windows, a .cmd shim is also generated.
|
|
9
|
+
*/
|
|
10
|
+
export declare function generateShim(name: string, installDir: string): void;
|
|
11
|
+
/**
|
|
12
|
+
* Write all method files from a ResolvedRepo into targetDir/<method-name>/,
|
|
13
|
+
* generating a CLI shim for each. Refuses any path that escapes targetDir or
|
|
14
|
+
* the per-method install dir (path traversal protection).
|
|
15
|
+
*
|
|
16
|
+
* Agent-agnostic: the on-disk layout is identical regardless of which AI
|
|
17
|
+
* coding agent triggered the install.
|
|
18
|
+
*/
|
|
19
|
+
export declare function writeMethodFiles(repo: ResolvedRepo, targetDirInput: string): void;
|
|
@@ -20,7 +20,6 @@ export function generateShim(name, installDir) {
|
|
|
20
20
|
"",
|
|
21
21
|
].join("\n");
|
|
22
22
|
writeFileSync(shimPath, shimContent, { mode: 0o755 });
|
|
23
|
-
// On Windows, also generate a .cmd shim
|
|
24
23
|
if (process.platform === "win32") {
|
|
25
24
|
const cmdPath = join(binDir, `${name}.cmd`);
|
|
26
25
|
const cmdEscapedDir = installDir.replace(/%/g, "%%").replace(/"/g, '""');
|
|
@@ -32,9 +31,16 @@ export function generateShim(name, installDir) {
|
|
|
32
31
|
writeFileSync(cmdPath, cmdContent, "utf-8");
|
|
33
32
|
}
|
|
34
33
|
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
34
|
+
/**
|
|
35
|
+
* Write all method files from a ResolvedRepo into targetDir/<method-name>/,
|
|
36
|
+
* generating a CLI shim for each. Refuses any path that escapes targetDir or
|
|
37
|
+
* the per-method install dir (path traversal protection).
|
|
38
|
+
*
|
|
39
|
+
* Agent-agnostic: the on-disk layout is identical regardless of which AI
|
|
40
|
+
* coding agent triggered the install.
|
|
41
|
+
*/
|
|
42
|
+
export function writeMethodFiles(repo, targetDirInput) {
|
|
43
|
+
const targetDir = resolve(targetDirInput);
|
|
38
44
|
mkdirSync(targetDir, { recursive: true });
|
|
39
45
|
for (const method of repo.methods) {
|
|
40
46
|
const installDir = resolve(join(targetDir, method.name));
|
|
@@ -54,25 +60,4 @@ function writeMethodFiles(options) {
|
|
|
54
60
|
generateShim(method.name, installDir);
|
|
55
61
|
}
|
|
56
62
|
}
|
|
57
|
-
|
|
58
|
-
id,
|
|
59
|
-
async installMethod(options) {
|
|
60
|
-
writeMethodFiles(options);
|
|
61
|
-
},
|
|
62
|
-
});
|
|
63
|
-
const handlers = {
|
|
64
|
-
"claude-code": defaultHandler("claude-code"),
|
|
65
|
-
cursor: defaultHandler("cursor"),
|
|
66
|
-
codex: defaultHandler("codex"),
|
|
67
|
-
};
|
|
68
|
-
export function getAllAgents() {
|
|
69
|
-
return Object.values(handlers);
|
|
70
|
-
}
|
|
71
|
-
export function getAgentHandler(agent) {
|
|
72
|
-
const handler = handlers[agent];
|
|
73
|
-
if (!handler) {
|
|
74
|
-
throw new Error(`Unknown agent: ${agent}`);
|
|
75
|
-
}
|
|
76
|
-
return handler;
|
|
77
|
-
}
|
|
78
|
-
//# sourceMappingURL=registry.js.map
|
|
63
|
+
//# sourceMappingURL=writer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"writer.js","sourceRoot":"","sources":["../../../src/installer/methods/writer.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import type { Agent, AgentHandler } from "./types.js";
|
|
2
|
-
/**
|
|
3
|
-
* Generate an executable CLI shim for a method in ~/.mthds/bin/.
|
|
4
|
-
*
|
|
5
|
-
* The shim allows invoking a method directly by name, e.g.:
|
|
6
|
-
* extract-contract-terms --inputs '{"text": "..."}'
|
|
7
|
-
*
|
|
8
|
-
* On Windows, a .cmd shim is also generated.
|
|
9
|
-
*/
|
|
10
|
-
export declare function generateShim(name: string, installDir: string): void;
|
|
11
|
-
export declare function getAllAgents(): AgentHandler[];
|
|
12
|
-
export declare function getAgentHandler(agent: Agent): AgentHandler;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/installer/agents/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAGnD;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,UAAkB;IAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IAChD,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEvC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACpC,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACrD,MAAM,WAAW,GAAG;QAClB,WAAW;QACX,wCAAwC,UAAU,GAAG;QACrD,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEb,aAAa,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAEtD,wCAAwC;IACxC,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,CAAC;QAC5C,MAAM,aAAa,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACzE,MAAM,UAAU,GAAG;YACjB,WAAW;YACX,iCAAiC,aAAa,GAAG;YACjD,EAAE;SACH,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACf,aAAa,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,OAA6B;IACrD,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;IACzB,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAC7C,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE1C,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QAClC,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QACzD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,SAAS,GAAG,GAAG,CAAC,EAAE,CAAC;YAC5C,MAAM,IAAI,KAAK,CAAC,kCAAkC,MAAM,CAAC,IAAI,6BAA6B,CAAC,CAAC;QAC9F,CAAC;QACD,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAE3C,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAE7E,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YAChC,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;YAC9D,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,UAAU,GAAG,GAAG,CAAC,EAAE,CAAC;gBAC3C,MAAM,IAAI,KAAK,CAAC,6BAA6B,IAAI,CAAC,YAAY,8BAA8B,CAAC,CAAC;YAChG,CAAC;YACD,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAClD,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACjD,CAAC;QAED,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACxC,CAAC;AACH,CAAC;AAED,MAAM,cAAc,GAAgC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAC3D,EAAE;IACF,KAAK,CAAC,aAAa,CAAC,OAA6B;QAC/C,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAC5B,CAAC;CACF,CAAC,CAAC;AAEH,MAAM,QAAQ,GAAgC;IAC5C,aAAa,EAAE,cAAc,CAAC,aAAa,CAAC;IAC5C,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC;IAChC,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC;CAC/B,CAAC;AAEF,MAAM,UAAU,YAAY;IAC1B,OAAO,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAY;IAC1C,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAChC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,kBAAkB,KAAK,EAAE,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import type { ResolvedRepo } from "../../package/manifest/types.js";
|
|
2
|
-
export type Agent = "claude-code" | "cursor" | "codex";
|
|
3
|
-
export declare enum InstallLocation {
|
|
4
|
-
Local = "local",
|
|
5
|
-
Global = "global"
|
|
6
|
-
}
|
|
7
|
-
export interface InstallMethodOptions {
|
|
8
|
-
readonly repo: ResolvedRepo;
|
|
9
|
-
readonly agent: Agent;
|
|
10
|
-
readonly location: InstallLocation;
|
|
11
|
-
readonly targetDir: string;
|
|
12
|
-
}
|
|
13
|
-
export interface AgentHandler {
|
|
14
|
-
readonly id: Agent;
|
|
15
|
-
installMethod(options: InstallMethodOptions): Promise<void>;
|
|
16
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/installer/agents/types.ts"],"names":[],"mappings":"AAIA,MAAM,CAAN,IAAY,eAGX;AAHD,WAAY,eAAe;IACzB,kCAAe,CAAA;IACf,oCAAiB,CAAA;AACnB,CAAC,EAHW,eAAe,KAAf,eAAe,QAG1B"}
|
|
File without changes
|