mthds 0.0.5 → 0.0.7
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 +74 -8
- package/dist/agents/claude-code.js +24 -9
- package/dist/agents/claude-code.js.map +1 -1
- package/dist/agents/types.d.ts +1 -2
- package/dist/cli.js +48 -5
- package/dist/cli.js.map +1 -1
- package/dist/commands/index.js +7 -3
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/install.d.ts +5 -1
- package/dist/commands/install.js +123 -24
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/telemetry.d.ts +3 -0
- package/dist/commands/telemetry.js +49 -0
- package/dist/commands/telemetry.js.map +1 -0
- package/dist/resolver/address.d.ts +2 -0
- package/dist/resolver/address.js +27 -0
- package/dist/resolver/address.js.map +1 -0
- package/dist/resolver/github.d.ts +2 -0
- package/dist/resolver/github.js +179 -0
- package/dist/resolver/github.js.map +1 -0
- package/dist/resolver/index.d.ts +6 -0
- package/dist/resolver/index.js +5 -0
- package/dist/resolver/index.js.map +1 -0
- package/dist/resolver/local.d.ts +2 -0
- package/dist/resolver/local.js +123 -0
- package/dist/resolver/local.js.map +1 -0
- package/dist/resolver/types.d.ts +50 -0
- package/dist/resolver/types.js +2 -0
- package/dist/resolver/types.js.map +1 -0
- package/dist/resolver/validate.d.ts +12 -0
- package/dist/resolver/validate.js +177 -0
- package/dist/resolver/validate.js.map +1 -0
- package/dist/supabase/methods.d.ts +2 -2
- package/dist/supabase/methods.js +4 -3
- package/dist/supabase/methods.js.map +1 -1
- package/dist/supabase/types.d.ts +15 -10
- package/dist/telemetry/posthog.d.ts +23 -1
- package/dist/telemetry/posthog.js +86 -4
- package/dist/telemetry/posthog.js.map +1 -1
- package/package.json +6 -3
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
import { parse } from "smol-toml";
|
|
2
|
+
const SEMVER_RE = /^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/;
|
|
3
|
+
const SNAKE_CASE_RE = /^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$/;
|
|
4
|
+
const SLUG_RE = /^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/;
|
|
5
|
+
const RESERVED_PREFIXES = ["native", "mthds", "pipelex"];
|
|
6
|
+
export function validateSlug(name) {
|
|
7
|
+
if (!name) {
|
|
8
|
+
return { valid: false, error: "Slug cannot be empty." };
|
|
9
|
+
}
|
|
10
|
+
if (name.length > 64) {
|
|
11
|
+
return { valid: false, error: `Slug must be at most 64 characters (got ${name.length}).` };
|
|
12
|
+
}
|
|
13
|
+
if (!SLUG_RE.test(name)) {
|
|
14
|
+
return {
|
|
15
|
+
valid: false,
|
|
16
|
+
error: `Slug "${name}" is invalid: must be lowercase alphanumeric with hyphens, starting with a letter.`,
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
return { valid: true };
|
|
20
|
+
}
|
|
21
|
+
function validateExportNode(node, path, errors) {
|
|
22
|
+
if (!node || typeof node !== "object" || Array.isArray(node)) {
|
|
23
|
+
errors.push(`[exports.${path}] must be a table.`);
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
const obj = node;
|
|
27
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
28
|
+
if (key === "pipes") {
|
|
29
|
+
if (!Array.isArray(value)) {
|
|
30
|
+
errors.push(`[exports.${path}.pipes] must be an array of strings.`);
|
|
31
|
+
continue;
|
|
32
|
+
}
|
|
33
|
+
for (const pipe of value) {
|
|
34
|
+
if (typeof pipe !== "string") {
|
|
35
|
+
errors.push(`[exports.${path}.pipes] must contain only strings.`);
|
|
36
|
+
break;
|
|
37
|
+
}
|
|
38
|
+
if (!SNAKE_CASE_RE.test(pipe)) {
|
|
39
|
+
errors.push(`[exports.${path}.pipes] "${pipe}" must be snake_case.`);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
// Nested sub-domain
|
|
45
|
+
validateExportNode(value, `${path}.${key}`, errors);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
export function validateManifest(raw) {
|
|
50
|
+
const errors = [];
|
|
51
|
+
let parsed;
|
|
52
|
+
try {
|
|
53
|
+
parsed = parse(raw);
|
|
54
|
+
}
|
|
55
|
+
catch (err) {
|
|
56
|
+
return {
|
|
57
|
+
valid: false,
|
|
58
|
+
errors: [`TOML parse error: ${err.message}`],
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
// --- [package] section ---
|
|
62
|
+
const pkg = parsed["package"];
|
|
63
|
+
if (!pkg || typeof pkg !== "object") {
|
|
64
|
+
errors.push('[package] section is required.');
|
|
65
|
+
return { valid: false, errors };
|
|
66
|
+
}
|
|
67
|
+
// package.address
|
|
68
|
+
if (typeof pkg["address"] !== "string" || !pkg["address"]) {
|
|
69
|
+
errors.push('[package.address] is required and must be a non-empty string.');
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
const addr = pkg["address"];
|
|
73
|
+
const slashIdx = addr.indexOf("/");
|
|
74
|
+
const hostname = slashIdx > 0 ? addr.slice(0, slashIdx) : addr;
|
|
75
|
+
if (!hostname.includes(".")) {
|
|
76
|
+
errors.push(`[package.address] hostname must contain a dot (got "${hostname}"). Example: github.com/org/repo`);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
// package.version
|
|
80
|
+
if (typeof pkg["version"] !== "string" || !pkg["version"]) {
|
|
81
|
+
errors.push('[package.version] is required and must be a non-empty string.');
|
|
82
|
+
}
|
|
83
|
+
else if (!SEMVER_RE.test(pkg["version"])) {
|
|
84
|
+
errors.push(`[package.version] must be valid semver (got "${pkg["version"]}").`);
|
|
85
|
+
}
|
|
86
|
+
// package.description
|
|
87
|
+
if (typeof pkg["description"] !== "string" || !pkg["description"]) {
|
|
88
|
+
errors.push('[package.description] is required and must be a non-empty string.');
|
|
89
|
+
}
|
|
90
|
+
// package.display_name (optional)
|
|
91
|
+
if (pkg["display_name"] !== undefined) {
|
|
92
|
+
if (typeof pkg["display_name"] !== "string") {
|
|
93
|
+
errors.push('[package.display_name] must be a string.');
|
|
94
|
+
}
|
|
95
|
+
else if (pkg["display_name"].length > 128) {
|
|
96
|
+
errors.push('[package.display_name] must be at most 128 characters.');
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
// package.authors (optional)
|
|
100
|
+
if (pkg["authors"] !== undefined) {
|
|
101
|
+
if (!Array.isArray(pkg["authors"])) {
|
|
102
|
+
errors.push('[package.authors] must be an array of strings.');
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
for (const a of pkg["authors"]) {
|
|
106
|
+
if (typeof a !== "string") {
|
|
107
|
+
errors.push('[package.authors] must contain only strings.');
|
|
108
|
+
break;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
// package.license (optional)
|
|
114
|
+
if (pkg["license"] !== undefined) {
|
|
115
|
+
if (typeof pkg["license"] !== "string") {
|
|
116
|
+
errors.push('[package.license] must be a string.');
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
// package.mthds_version (optional)
|
|
120
|
+
if (pkg["mthds_version"] !== undefined) {
|
|
121
|
+
if (typeof pkg["mthds_version"] !== "string") {
|
|
122
|
+
errors.push('[package.mthds_version] must be a string.');
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
// --- [exports] section (optional, hierarchical) ---
|
|
126
|
+
const exports = parsed["exports"];
|
|
127
|
+
if (exports && typeof exports === "object") {
|
|
128
|
+
for (const [domain, node] of Object.entries(exports)) {
|
|
129
|
+
const domainLower = domain.toLowerCase();
|
|
130
|
+
const matchedPrefix = RESERVED_PREFIXES.find((prefix) => domainLower.startsWith(prefix));
|
|
131
|
+
if (matchedPrefix) {
|
|
132
|
+
errors.push(`[exports."${domain}"] domain cannot start with reserved prefix "${matchedPrefix}".`);
|
|
133
|
+
}
|
|
134
|
+
validateExportNode(node, domain, errors);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
// --- [dependencies] section (optional) ---
|
|
138
|
+
const deps = parsed["dependencies"];
|
|
139
|
+
if (deps && typeof deps === "object") {
|
|
140
|
+
for (const [alias, dep] of Object.entries(deps)) {
|
|
141
|
+
if (!SNAKE_CASE_RE.test(alias)) {
|
|
142
|
+
errors.push(`[dependencies."${alias}"] alias must be snake_case.`);
|
|
143
|
+
}
|
|
144
|
+
const d = dep;
|
|
145
|
+
if (!d || typeof d !== "object") {
|
|
146
|
+
errors.push(`[dependencies."${alias}"] must be a table with address and version.`);
|
|
147
|
+
continue;
|
|
148
|
+
}
|
|
149
|
+
if (typeof d["address"] !== "string" || !d["address"]) {
|
|
150
|
+
errors.push(`[dependencies."${alias}".address] is required.`);
|
|
151
|
+
}
|
|
152
|
+
if (typeof d["version"] !== "string" || !d["version"]) {
|
|
153
|
+
errors.push(`[dependencies."${alias}".version] is required.`);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
if (errors.length > 0) {
|
|
158
|
+
return { valid: false, errors };
|
|
159
|
+
}
|
|
160
|
+
// Build typed manifest
|
|
161
|
+
const manifestPkg = {
|
|
162
|
+
address: pkg["address"],
|
|
163
|
+
version: pkg["version"],
|
|
164
|
+
description: pkg["description"],
|
|
165
|
+
...(pkg["display_name"] !== undefined ? { display_name: pkg["display_name"] } : {}),
|
|
166
|
+
...(pkg["authors"] !== undefined ? { authors: pkg["authors"] } : {}),
|
|
167
|
+
...(pkg["license"] !== undefined ? { license: pkg["license"] } : {}),
|
|
168
|
+
...(pkg["mthds_version"] !== undefined ? { mthds_version: pkg["mthds_version"] } : {}),
|
|
169
|
+
};
|
|
170
|
+
const manifest = {
|
|
171
|
+
package: manifestPkg,
|
|
172
|
+
...(exports ? { exports: exports } : {}),
|
|
173
|
+
...(deps ? { dependencies: deps } : {}),
|
|
174
|
+
};
|
|
175
|
+
return { valid: true, errors: [], manifest };
|
|
176
|
+
}
|
|
177
|
+
//# sourceMappingURL=validate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/resolver/validate.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
export declare function
|
|
1
|
+
import type { Package } from "./types.js";
|
|
2
|
+
export declare function fetchPackageByAddressAndSlug(address: string, slug: string): Promise<Package | null>;
|
package/dist/supabase/methods.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { supabase } from "./client.js";
|
|
2
|
-
export async function
|
|
2
|
+
export async function fetchPackageByAddressAndSlug(address, slug) {
|
|
3
3
|
const { data, error } = await supabase
|
|
4
|
-
.from("
|
|
4
|
+
.from("packages")
|
|
5
5
|
.select("*")
|
|
6
|
-
.eq("
|
|
6
|
+
.eq("address", address)
|
|
7
|
+
.eq("slug", slug)
|
|
7
8
|
.single();
|
|
8
9
|
if (error || !data)
|
|
9
10
|
return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"methods.js","sourceRoot":"","sources":["../../src/supabase/methods.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGvC,MAAM,CAAC,KAAK,UAAU,
|
|
1
|
+
{"version":3,"file":"methods.js","sourceRoot":"","sources":["../../src/supabase/methods.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGvC,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,OAAe,EACf,IAAY;IAEZ,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,QAAQ;SACnC,IAAI,CAAC,UAAU,CAAC;SAChB,MAAM,CAAC,GAAG,CAAC;SACX,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC;SACtB,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC;SAChB,MAAM,EAAE,CAAC;IAEZ,IAAI,KAAK,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAChC,OAAO,IAAI,CAAC;AACd,CAAC"}
|
package/dist/supabase/types.d.ts
CHANGED
|
@@ -1,21 +1,26 @@
|
|
|
1
|
-
export interface
|
|
1
|
+
export interface Package {
|
|
2
2
|
id: string;
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
content: string | null;
|
|
3
|
+
address: string;
|
|
4
|
+
slug: string;
|
|
6
5
|
version: string | null;
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
description: string | null;
|
|
7
|
+
display_name: string | null;
|
|
8
|
+
authors: string[] | null;
|
|
9
|
+
license: string | null;
|
|
10
|
+
mthds_version: string | null;
|
|
11
|
+
exports: Record<string, unknown> | null;
|
|
12
|
+
dependencies: Record<string, unknown> | null;
|
|
13
|
+
manifest_raw: string | null;
|
|
9
14
|
installs: number;
|
|
10
15
|
created_at: string;
|
|
11
16
|
}
|
|
12
17
|
export interface Database {
|
|
13
18
|
public: {
|
|
14
19
|
Tables: {
|
|
15
|
-
|
|
16
|
-
Row:
|
|
17
|
-
Insert: Omit<
|
|
18
|
-
Update: Partial<Omit<
|
|
20
|
+
packages: {
|
|
21
|
+
Row: Package;
|
|
22
|
+
Insert: Omit<Package, "id" | "created_at" | "installs">;
|
|
23
|
+
Update: Partial<Omit<Package, "id">>;
|
|
19
24
|
};
|
|
20
25
|
};
|
|
21
26
|
Views: Record<string, never>;
|
|
@@ -1,2 +1,24 @@
|
|
|
1
|
-
export
|
|
1
|
+
export type TelemetrySource = "env" | "env.local" | "config" | "default";
|
|
2
|
+
export declare function getTelemetryStatus(): {
|
|
3
|
+
enabled: boolean;
|
|
4
|
+
source: TelemetrySource;
|
|
5
|
+
};
|
|
6
|
+
export declare function setTelemetryEnabled(enabled: boolean): void;
|
|
7
|
+
export interface InstallEvent {
|
|
8
|
+
address: string;
|
|
9
|
+
slug: string;
|
|
10
|
+
version: string;
|
|
11
|
+
description: string;
|
|
12
|
+
display_name?: string;
|
|
13
|
+
authors?: string[];
|
|
14
|
+
license?: string;
|
|
15
|
+
mthds_version?: string;
|
|
16
|
+
exports?: Record<string, unknown>;
|
|
17
|
+
dependencies?: Record<string, {
|
|
18
|
+
address: string;
|
|
19
|
+
version: string;
|
|
20
|
+
}>;
|
|
21
|
+
manifest_raw: string;
|
|
22
|
+
}
|
|
23
|
+
export declare function trackInstall(data: InstallEvent): void;
|
|
2
24
|
export declare function shutdown(): Promise<void>;
|
|
@@ -1,9 +1,81 @@
|
|
|
1
1
|
import { PostHog } from "posthog-node";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { homedir } from "node:os";
|
|
4
|
+
import { existsSync, readFileSync, mkdirSync, writeFileSync } from "node:fs";
|
|
2
5
|
const POSTHOG_API_KEY = "phc_ylV9FzMiQDyGgtd5nJn0Cc2OkyHAobfj7xDhYloH5IA";
|
|
3
6
|
const POSTHOG_HOST = "https://eu.i.posthog.com";
|
|
7
|
+
const CONFIG_DIR = join(homedir(), ".mthds");
|
|
8
|
+
const CONFIG_PATH = join(CONFIG_DIR, "config.json");
|
|
9
|
+
const ENV_LOCAL_PATH = join(CONFIG_DIR, ".env.local");
|
|
4
10
|
let client = null;
|
|
11
|
+
function readEnvLocal() {
|
|
12
|
+
if (!existsSync(ENV_LOCAL_PATH))
|
|
13
|
+
return false;
|
|
14
|
+
try {
|
|
15
|
+
const content = readFileSync(ENV_LOCAL_PATH, "utf-8");
|
|
16
|
+
return content.split("\n").some((line) => {
|
|
17
|
+
const trimmed = line.trim();
|
|
18
|
+
if (trimmed.startsWith("#"))
|
|
19
|
+
return false;
|
|
20
|
+
const [key, ...rest] = trimmed.split("=");
|
|
21
|
+
if (key?.trim() !== "DISABLE_TELEMETRY")
|
|
22
|
+
return false;
|
|
23
|
+
const val = rest.join("=").trim().replace(/^["']|["']$/g, "").trim();
|
|
24
|
+
return val === "1";
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
function readConfigTelemetry() {
|
|
32
|
+
if (!existsSync(CONFIG_PATH))
|
|
33
|
+
return undefined;
|
|
34
|
+
try {
|
|
35
|
+
const raw = readFileSync(CONFIG_PATH, "utf-8");
|
|
36
|
+
const config = JSON.parse(raw);
|
|
37
|
+
if ("telemetry" in config && typeof config.telemetry === "boolean") {
|
|
38
|
+
return config.telemetry;
|
|
39
|
+
}
|
|
40
|
+
return undefined;
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
return undefined;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
export function getTelemetryStatus() {
|
|
47
|
+
// 1. Env var (highest priority)
|
|
48
|
+
if (process.env["DISABLE_TELEMETRY"] === "1") {
|
|
49
|
+
return { enabled: false, source: "env" };
|
|
50
|
+
}
|
|
51
|
+
// 2. ~/.mthds/.env.local
|
|
52
|
+
if (readEnvLocal()) {
|
|
53
|
+
return { enabled: false, source: "env.local" };
|
|
54
|
+
}
|
|
55
|
+
// 3. ~/.mthds/config.json
|
|
56
|
+
const configVal = readConfigTelemetry();
|
|
57
|
+
if (configVal !== undefined) {
|
|
58
|
+
return { enabled: configVal, source: "config" };
|
|
59
|
+
}
|
|
60
|
+
// Default: enabled
|
|
61
|
+
return { enabled: true, source: "default" };
|
|
62
|
+
}
|
|
63
|
+
export function setTelemetryEnabled(enabled) {
|
|
64
|
+
mkdirSync(CONFIG_DIR, { recursive: true });
|
|
65
|
+
let config = {};
|
|
66
|
+
if (existsSync(CONFIG_PATH)) {
|
|
67
|
+
try {
|
|
68
|
+
config = JSON.parse(readFileSync(CONFIG_PATH, "utf-8"));
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
// ignore parse errors, overwrite
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
config.telemetry = enabled;
|
|
75
|
+
writeFileSync(CONFIG_PATH, JSON.stringify(config, null, 2) + "\n", "utf-8");
|
|
76
|
+
}
|
|
5
77
|
function isDisabled() {
|
|
6
|
-
return
|
|
78
|
+
return !getTelemetryStatus().enabled;
|
|
7
79
|
}
|
|
8
80
|
function getClient() {
|
|
9
81
|
if (isDisabled())
|
|
@@ -13,15 +85,25 @@ function getClient() {
|
|
|
13
85
|
}
|
|
14
86
|
return client;
|
|
15
87
|
}
|
|
16
|
-
export function
|
|
88
|
+
export function trackInstall(data) {
|
|
17
89
|
const posthog = getClient();
|
|
18
90
|
if (!posthog)
|
|
19
91
|
return;
|
|
20
92
|
posthog.capture({
|
|
21
93
|
distinctId: "anonymous",
|
|
22
|
-
event: "
|
|
94
|
+
event: "install",
|
|
23
95
|
properties: {
|
|
24
|
-
|
|
96
|
+
address: data.address,
|
|
97
|
+
slug: data.slug,
|
|
98
|
+
version: data.version,
|
|
99
|
+
description: data.description,
|
|
100
|
+
display_name: data.display_name,
|
|
101
|
+
authors: data.authors ? JSON.stringify(data.authors) : undefined,
|
|
102
|
+
license: data.license,
|
|
103
|
+
mthds_version: data.mthds_version,
|
|
104
|
+
exports: data.exports ? JSON.stringify(data.exports) : undefined,
|
|
105
|
+
dependencies: data.dependencies ? JSON.stringify(data.dependencies) : undefined,
|
|
106
|
+
manifest_raw: data.manifest_raw,
|
|
25
107
|
timestamp: new Date().toISOString(),
|
|
26
108
|
},
|
|
27
109
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"posthog.js","sourceRoot":"","sources":["../../src/telemetry/posthog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"posthog.js","sourceRoot":"","sources":["../../src/telemetry/posthog.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mthds",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.7",
|
|
4
4
|
"description": "CLI and SDK for MTHDS — the open standard for reusable AI agent methods. Install, execute, and manage methods.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -21,6 +21,7 @@
|
|
|
21
21
|
},
|
|
22
22
|
"scripts": {
|
|
23
23
|
"build": "tsc",
|
|
24
|
+
"test": "vitest run",
|
|
24
25
|
"example": "npx tsx examples/call_api.ts"
|
|
25
26
|
},
|
|
26
27
|
"files": [
|
|
@@ -35,11 +36,13 @@
|
|
|
35
36
|
"chalk": "^5.4.1",
|
|
36
37
|
"commander": "^13.1.0",
|
|
37
38
|
"ora": "^8.2.0",
|
|
38
|
-
"posthog-node": "^4.4.0"
|
|
39
|
+
"posthog-node": "^4.4.0",
|
|
40
|
+
"smol-toml": "^1.6.0"
|
|
39
41
|
},
|
|
40
42
|
"devDependencies": {
|
|
41
43
|
"@types/node": "^22.12.0",
|
|
42
44
|
"tsx": "^4.19.0",
|
|
43
|
-
"typescript": "^5.7.3"
|
|
45
|
+
"typescript": "^5.7.3",
|
|
46
|
+
"vitest": "^4.0.18"
|
|
44
47
|
}
|
|
45
48
|
}
|