@fml-inc/fml 0.0.22
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/.claude-plugin/plugin.json +11 -0
- package/bin/fml +3 -0
- package/bin/mcp-server +3 -0
- package/bin/sync-daemon +3 -0
- package/dist/chunk-4YEAQJPF.js +47 -0
- package/dist/chunk-4YEAQJPF.js.map +1 -0
- package/dist/chunk-DP2ILCME.js +282 -0
- package/dist/chunk-DP2ILCME.js.map +1 -0
- package/dist/chunk-EL2WSQBR.js +88 -0
- package/dist/chunk-EL2WSQBR.js.map +1 -0
- package/dist/chunk-MYCITM37.js +179 -0
- package/dist/chunk-MYCITM37.js.map +1 -0
- package/dist/chunk-PZ5AY32C.js +10 -0
- package/dist/chunk-PZ5AY32C.js.map +1 -0
- package/dist/cli.js +1720 -0
- package/dist/cli.js.map +1 -0
- package/dist/daemon-J4WSZXVY.js +15 -0
- package/dist/daemon-J4WSZXVY.js.map +1 -0
- package/dist/esm-JQB7UAJD.js +14618 -0
- package/dist/esm-JQB7UAJD.js.map +1 -0
- package/dist/mcp/server.js +13033 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/postinstall.js +81 -0
- package/dist/postinstall.js.map +1 -0
- package/dist/token-store-67FJZTYS.js +17 -0
- package/dist/token-store-67FJZTYS.js.map +1 -0
- package/package.json +49 -0
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
// src/postinstall.ts
|
|
4
|
+
import { execFileSync } from "child_process";
|
|
5
|
+
import { dirname, join } from "path";
|
|
6
|
+
import { fileURLToPath } from "url";
|
|
7
|
+
var __dirname = dirname(fileURLToPath(import.meta.url));
|
|
8
|
+
function bootstrapPanopticon() {
|
|
9
|
+
const npmEnv = { ...process.env };
|
|
10
|
+
delete npmEnv.npm_config_registry;
|
|
11
|
+
let globalVersion = null;
|
|
12
|
+
try {
|
|
13
|
+
const json = execFileSync(
|
|
14
|
+
"npm",
|
|
15
|
+
["ls", "-g", "@fml-inc/panopticon", "--json", "--depth=0"],
|
|
16
|
+
{ encoding: "utf-8", timeout: 15e3, stdio: "pipe", env: npmEnv }
|
|
17
|
+
);
|
|
18
|
+
const parsed = JSON.parse(json);
|
|
19
|
+
globalVersion = parsed?.dependencies?.["@fml-inc/panopticon"]?.version ?? null;
|
|
20
|
+
} catch {
|
|
21
|
+
}
|
|
22
|
+
if (!globalVersion) {
|
|
23
|
+
console.log("[postinstall] Installing @fml-inc/panopticon globally...");
|
|
24
|
+
try {
|
|
25
|
+
execFileSync("npm", ["install", "-g", "@fml-inc/panopticon@latest"], {
|
|
26
|
+
encoding: "utf-8",
|
|
27
|
+
timeout: 12e4,
|
|
28
|
+
stdio: "pipe",
|
|
29
|
+
env: npmEnv
|
|
30
|
+
});
|
|
31
|
+
console.log("[postinstall] Installed @fml-inc/panopticon");
|
|
32
|
+
} catch (err) {
|
|
33
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
34
|
+
console.error(`[postinstall] Failed to install panopticon: ${msg}`);
|
|
35
|
+
console.error(
|
|
36
|
+
"[postinstall] Install manually: npm install -g @fml-inc/panopticon@latest"
|
|
37
|
+
);
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
} else {
|
|
41
|
+
let isOutdated = false;
|
|
42
|
+
try {
|
|
43
|
+
execFileSync("npm", ["outdated", "-g", "@fml-inc/panopticon"], {
|
|
44
|
+
encoding: "utf-8",
|
|
45
|
+
timeout: 3e4,
|
|
46
|
+
stdio: "pipe",
|
|
47
|
+
env: npmEnv
|
|
48
|
+
});
|
|
49
|
+
} catch (err) {
|
|
50
|
+
const e = err;
|
|
51
|
+
if (e.status === 1) isOutdated = true;
|
|
52
|
+
}
|
|
53
|
+
if (isOutdated) {
|
|
54
|
+
console.log("[postinstall] Updating @fml-inc/panopticon...");
|
|
55
|
+
try {
|
|
56
|
+
execFileSync("npm", ["install", "-g", "@fml-inc/panopticon@latest"], {
|
|
57
|
+
encoding: "utf-8",
|
|
58
|
+
timeout: 12e4,
|
|
59
|
+
stdio: "pipe",
|
|
60
|
+
env: npmEnv
|
|
61
|
+
});
|
|
62
|
+
console.log("[postinstall] Updated @fml-inc/panopticon");
|
|
63
|
+
} catch {
|
|
64
|
+
}
|
|
65
|
+
} else {
|
|
66
|
+
console.log(
|
|
67
|
+
`[postinstall] @fml-inc/panopticon@${globalVersion} (up to date)`
|
|
68
|
+
);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
bootstrapPanopticon();
|
|
73
|
+
var fmlBin = join(__dirname, "..", "bin", "fml");
|
|
74
|
+
try {
|
|
75
|
+
execFileSync("node", [fmlBin, "install"], {
|
|
76
|
+
stdio: "inherit",
|
|
77
|
+
timeout: 12e4
|
|
78
|
+
});
|
|
79
|
+
} catch {
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=postinstall.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/postinstall.ts"],"sourcesContent":["#!/usr/bin/env node\n/**\n * Lightweight postinstall script — runs BEFORE any @fml-inc/panopticon imports.\n *\n * 1. Bootstrap panopticon globally if missing or outdated\n * 2. Spawn `fml install` (which can now resolve panopticon)\n */\nimport { execFileSync } from \"node:child_process\";\nimport { dirname, join } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\n\nconst __dirname = dirname(fileURLToPath(import.meta.url));\n\nfunction bootstrapPanopticon(): void {\n const npmEnv = { ...process.env };\n delete npmEnv.npm_config_registry; // Let scoped registry from .npmrc take effect\n\n // Check if panopticon is installed globally\n let globalVersion: string | null = null;\n try {\n const json = execFileSync(\n \"npm\",\n [\"ls\", \"-g\", \"@fml-inc/panopticon\", \"--json\", \"--depth=0\"],\n { encoding: \"utf-8\", timeout: 15_000, stdio: \"pipe\", env: npmEnv },\n );\n const parsed = JSON.parse(json);\n globalVersion =\n parsed?.dependencies?.[\"@fml-inc/panopticon\"]?.version ?? null;\n } catch {\n // Not installed globally or npm ls failed\n }\n\n if (!globalVersion) {\n console.log(\"[postinstall] Installing @fml-inc/panopticon globally...\");\n try {\n execFileSync(\"npm\", [\"install\", \"-g\", \"@fml-inc/panopticon@latest\"], {\n encoding: \"utf-8\",\n timeout: 120_000,\n stdio: \"pipe\",\n env: npmEnv,\n });\n console.log(\"[postinstall] Installed @fml-inc/panopticon\");\n } catch (err: unknown) {\n const msg = err instanceof Error ? err.message : String(err);\n console.error(`[postinstall] Failed to install panopticon: ${msg}`);\n console.error(\n \"[postinstall] Install manually: npm install -g @fml-inc/panopticon@latest\",\n );\n return;\n }\n } else {\n // Check if outdated (best effort)\n let isOutdated = false;\n try {\n execFileSync(\"npm\", [\"outdated\", \"-g\", \"@fml-inc/panopticon\"], {\n encoding: \"utf-8\",\n timeout: 30_000,\n stdio: \"pipe\",\n env: npmEnv,\n });\n } catch (err: unknown) {\n const e = err as { status?: number };\n if (e.status === 1) isOutdated = true;\n }\n\n if (isOutdated) {\n console.log(\"[postinstall] Updating @fml-inc/panopticon...\");\n try {\n execFileSync(\"npm\", [\"install\", \"-g\", \"@fml-inc/panopticon@latest\"], {\n encoding: \"utf-8\",\n timeout: 120_000,\n stdio: \"pipe\",\n env: npmEnv,\n });\n console.log(\"[postinstall] Updated @fml-inc/panopticon\");\n } catch {\n // Not fatal — continue with current version\n }\n } else {\n console.log(\n `[postinstall] @fml-inc/panopticon@${globalVersion} (up to date)`,\n );\n }\n }\n}\n\n// Step 1: Bootstrap panopticon\nbootstrapPanopticon();\n\n// Step 2: Run fml install (panopticon is now resolvable)\nconst fmlBin = join(__dirname, \"..\", \"bin\", \"fml\");\ntry {\n execFileSync(\"node\", [fmlBin, \"install\"], {\n stdio: \"inherit\",\n timeout: 120_000,\n });\n} catch {\n // fml install failed — not fatal for postinstall\n}\n"],"mappings":";;;AAOA,SAAS,oBAAoB;AAC7B,SAAS,SAAS,YAAY;AAC9B,SAAS,qBAAqB;AAE9B,IAAM,YAAY,QAAQ,cAAc,YAAY,GAAG,CAAC;AAExD,SAAS,sBAA4B;AACnC,QAAM,SAAS,EAAE,GAAG,QAAQ,IAAI;AAChC,SAAO,OAAO;AAGd,MAAI,gBAA+B;AACnC,MAAI;AACF,UAAM,OAAO;AAAA,MACX;AAAA,MACA,CAAC,MAAM,MAAM,uBAAuB,UAAU,WAAW;AAAA,MACzD,EAAE,UAAU,SAAS,SAAS,MAAQ,OAAO,QAAQ,KAAK,OAAO;AAAA,IACnE;AACA,UAAM,SAAS,KAAK,MAAM,IAAI;AAC9B,oBACE,QAAQ,eAAe,qBAAqB,GAAG,WAAW;AAAA,EAC9D,QAAQ;AAAA,EAER;AAEA,MAAI,CAAC,eAAe;AAClB,YAAQ,IAAI,0DAA0D;AACtE,QAAI;AACF,mBAAa,OAAO,CAAC,WAAW,MAAM,4BAA4B,GAAG;AAAA,QACnE,UAAU;AAAA,QACV,SAAS;AAAA,QACT,OAAO;AAAA,QACP,KAAK;AAAA,MACP,CAAC;AACD,cAAQ,IAAI,6CAA6C;AAAA,IAC3D,SAAS,KAAc;AACrB,YAAM,MAAM,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AAC3D,cAAQ,MAAM,+CAA+C,GAAG,EAAE;AAClE,cAAQ;AAAA,QACN;AAAA,MACF;AACA;AAAA,IACF;AAAA,EACF,OAAO;AAEL,QAAI,aAAa;AACjB,QAAI;AACF,mBAAa,OAAO,CAAC,YAAY,MAAM,qBAAqB,GAAG;AAAA,QAC7D,UAAU;AAAA,QACV,SAAS;AAAA,QACT,OAAO;AAAA,QACP,KAAK;AAAA,MACP,CAAC;AAAA,IACH,SAAS,KAAc;AACrB,YAAM,IAAI;AACV,UAAI,EAAE,WAAW,EAAG,cAAa;AAAA,IACnC;AAEA,QAAI,YAAY;AACd,cAAQ,IAAI,+CAA+C;AAC3D,UAAI;AACF,qBAAa,OAAO,CAAC,WAAW,MAAM,4BAA4B,GAAG;AAAA,UACnE,UAAU;AAAA,UACV,SAAS;AAAA,UACT,OAAO;AAAA,UACP,KAAK;AAAA,QACP,CAAC;AACD,gBAAQ,IAAI,2CAA2C;AAAA,MACzD,QAAQ;AAAA,MAER;AAAA,IACF,OAAO;AACL,cAAQ;AAAA,QACN,qCAAqC,aAAa;AAAA,MACpD;AAAA,IACF;AAAA,EACF;AACF;AAGA,oBAAoB;AAGpB,IAAM,SAAS,KAAK,WAAW,MAAM,OAAO,KAAK;AACjD,IAAI;AACF,eAAa,QAAQ,CAAC,QAAQ,SAAS,GAAG;AAAA,IACxC,OAAO;AAAA,IACP,SAAS;AAAA,EACX,CAAC;AACH,QAAQ;AAER;","names":[]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import {
|
|
2
|
+
getSelectedOrg,
|
|
3
|
+
getValidToken,
|
|
4
|
+
readTokens,
|
|
5
|
+
setSelectedOrg,
|
|
6
|
+
writeTokens
|
|
7
|
+
} from "./chunk-DP2ILCME.js";
|
|
8
|
+
import "./chunk-4YEAQJPF.js";
|
|
9
|
+
import "./chunk-PZ5AY32C.js";
|
|
10
|
+
export {
|
|
11
|
+
getSelectedOrg,
|
|
12
|
+
getValidToken,
|
|
13
|
+
readTokens,
|
|
14
|
+
setSelectedOrg,
|
|
15
|
+
writeTokens
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=token-store-67FJZTYS.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
package/package.json
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@fml-inc/fml",
|
|
3
|
+
"version": "0.0.22",
|
|
4
|
+
"description": "FML agent tools for Claude Code",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"engines": {
|
|
7
|
+
"node": ">=22.0.0"
|
|
8
|
+
},
|
|
9
|
+
"bin": {
|
|
10
|
+
"fml": "./bin/fml"
|
|
11
|
+
},
|
|
12
|
+
"publishConfig": {
|
|
13
|
+
"registry": "https://registry.npmjs.org",
|
|
14
|
+
"access": "public"
|
|
15
|
+
},
|
|
16
|
+
"files": [
|
|
17
|
+
"bin/",
|
|
18
|
+
"dist/",
|
|
19
|
+
".claude-plugin/"
|
|
20
|
+
],
|
|
21
|
+
"scripts": {
|
|
22
|
+
"build": "tsup",
|
|
23
|
+
"dev": "pnpm link ../../panopticon && tsup --watch",
|
|
24
|
+
"pack:local": "pnpm build && pnpm pack",
|
|
25
|
+
"postinstall": "node ./dist/postinstall.js && claude plugin update 2>/dev/null || true",
|
|
26
|
+
"type-check": "tsc --noEmit",
|
|
27
|
+
"test": "vitest run",
|
|
28
|
+
"test:watch": "vitest"
|
|
29
|
+
},
|
|
30
|
+
"dependencies": {
|
|
31
|
+
"@modelcontextprotocol/sdk": "^1.0.0",
|
|
32
|
+
"better-sqlite3": "^11.0.0",
|
|
33
|
+
"commander": "^13.1.0",
|
|
34
|
+
"convex": "^1.21.0",
|
|
35
|
+
"debug": "^4.4.0",
|
|
36
|
+
"open": "^10.1.0",
|
|
37
|
+
"ora": "^8.2.0",
|
|
38
|
+
"picocolors": "^1.1.1",
|
|
39
|
+
"protobufjs": "^7.0.0",
|
|
40
|
+
"smol-toml": "^1.3.0"
|
|
41
|
+
},
|
|
42
|
+
"devDependencies": {
|
|
43
|
+
"@sentry/core": "^10.43.0",
|
|
44
|
+
"@types/better-sqlite3": "^7.6.0",
|
|
45
|
+
"@types/node": "^22.0.0",
|
|
46
|
+
"tsup": "^8.0.0",
|
|
47
|
+
"typescript": "^5"
|
|
48
|
+
}
|
|
49
|
+
}
|