@procedures/mark 0.0.0-stage → 0.2.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/CHANGELOG.md +36 -0
- package/LICENSE +21 -0
- package/README.md +799 -2
- package/dist/.tsbuildinfo +1 -0
- package/dist/args.d.ts +77 -0
- package/dist/args.d.ts.map +1 -0
- package/dist/args.js +351 -0
- package/dist/args.js.map +1 -0
- package/dist/ask.d.ts +48 -0
- package/dist/ask.d.ts.map +1 -0
- package/dist/ask.js +91 -0
- package/dist/ask.js.map +1 -0
- package/dist/bin.d.ts +9 -0
- package/dist/bin.d.ts.map +1 -0
- package/dist/bin.js +10 -0
- package/dist/bin.js.map +1 -0
- package/dist/cli.d.ts +61 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +535 -0
- package/dist/cli.js.map +1 -0
- package/dist/client-mode.d.ts +21 -0
- package/dist/client-mode.d.ts.map +1 -0
- package/dist/client-mode.js +75 -0
- package/dist/client-mode.js.map +1 -0
- package/dist/ecosystem.d.ts +67 -0
- package/dist/ecosystem.d.ts.map +1 -0
- package/dist/ecosystem.js +212 -0
- package/dist/ecosystem.js.map +1 -0
- package/dist/failure.d.ts +16 -0
- package/dist/failure.d.ts.map +1 -0
- package/dist/failure.js +47 -0
- package/dist/failure.js.map +1 -0
- package/dist/format.d.ts +30 -0
- package/dist/format.d.ts.map +1 -0
- package/dist/format.js +125 -0
- package/dist/format.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -0
- package/dist/lockfile.d.ts +26 -0
- package/dist/lockfile.d.ts.map +1 -0
- package/dist/lockfile.js +68 -0
- package/dist/lockfile.js.map +1 -0
- package/dist/manifest-build.d.ts +7 -0
- package/dist/manifest-build.d.ts.map +1 -0
- package/dist/manifest-build.js +11 -0
- package/dist/manifest-build.js.map +1 -0
- package/dist/manifest.d.ts +57 -0
- package/dist/manifest.d.ts.map +1 -0
- package/dist/manifest.js +140 -0
- package/dist/manifest.js.map +1 -0
- package/dist/manifest.json +20960 -0
- package/dist/parse.d.ts +143 -0
- package/dist/parse.d.ts.map +1 -0
- package/dist/parse.js +509 -0
- package/dist/parse.js.map +1 -0
- package/dist/print.d.ts +42 -0
- package/dist/print.d.ts.map +1 -0
- package/dist/print.js +80 -0
- package/dist/print.js.map +1 -0
- package/dist/prompts.d.ts +58 -0
- package/dist/prompts.d.ts.map +1 -0
- package/dist/prompts.js +124 -0
- package/dist/prompts.js.map +1 -0
- package/dist/repl.d.ts +34 -0
- package/dist/repl.d.ts.map +1 -0
- package/dist/repl.js +101 -0
- package/dist/repl.js.map +1 -0
- package/dist/server-mode.d.ts +37 -0
- package/dist/server-mode.d.ts.map +1 -0
- package/dist/server-mode.js +167 -0
- package/dist/server-mode.js.map +1 -0
- package/package.json +97 -3
- package/src/args.ts +440 -0
- package/src/ask.ts +119 -0
- package/src/bin.ts +11 -0
- package/src/cli.ts +600 -0
- package/src/client-mode.ts +90 -0
- package/src/ecosystem.ts +260 -0
- package/src/failure.ts +47 -0
- package/src/format.ts +177 -0
- package/src/index.ts +31 -0
- package/src/lockfile.ts +85 -0
- package/src/manifest-build.ts +12 -0
- package/src/manifest.ts +162 -0
- package/src/parse.ts +670 -0
- package/src/print.ts +108 -0
- package/src/prompts.ts +181 -0
- package/src/repl.ts +121 -0
- package/src/server-mode.ts +205 -0
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI Server Mode
|
|
3
|
+
*
|
|
4
|
+
* Runs the CLI as a persistent server, exposing all ecosystem procedures
|
|
5
|
+
* via HTTP. The server has the registry of mark (the module of each package, roadmap 3.1) and
|
|
6
|
+
* the host policy of the core (roadmap 2.3): the token in the lockfile.
|
|
7
|
+
*/
|
|
8
|
+
import { print } from "./print.js";
|
|
9
|
+
import { loadEcosystemRegistry } from "./ecosystem.js";
|
|
10
|
+
import { randomBytes } from "node:crypto";
|
|
11
|
+
import { writeLockfile, removeLockfileForPort, getLockfilePath, currentBuild } from "./lockfile.js";
|
|
12
|
+
/**
|
|
13
|
+
* Build transport configuration array
|
|
14
|
+
*/
|
|
15
|
+
function buildTransports(options) {
|
|
16
|
+
const transports = [];
|
|
17
|
+
// Loopback and no CORS by default: the server holds the whole registry, shell.* included.
|
|
18
|
+
// Before, it listened on 0.0.0.0 with Access-Control-Allow-Origin: * (deep dive CLI-1, TRN-1).
|
|
19
|
+
const { port, host = "127.0.0.1", transport = "http" } = options;
|
|
20
|
+
if (transport === "http" || transport === "both") {
|
|
21
|
+
transports.push({
|
|
22
|
+
type: "http",
|
|
23
|
+
port,
|
|
24
|
+
host,
|
|
25
|
+
basePath: "/api",
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
if (transport === "websocket" || transport === "both") {
|
|
29
|
+
transports.push({
|
|
30
|
+
type: "websocket",
|
|
31
|
+
port: transport === "both" ? port + 1 : port,
|
|
32
|
+
host,
|
|
33
|
+
path: "/ws",
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
return transports;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Start CLI in server mode
|
|
40
|
+
*/
|
|
41
|
+
export async function startServerMode(options) {
|
|
42
|
+
const { port = 3000, verbose = false } = options;
|
|
43
|
+
print.info("Starting CLI server mode...");
|
|
44
|
+
// The registry of mark (roadmap 3.1): the module of each workspace package, with the server
|
|
45
|
+
// procedures (client-server is in the workspace)
|
|
46
|
+
if (verbose) {
|
|
47
|
+
print.info("Loading ecosystem procedures...");
|
|
48
|
+
}
|
|
49
|
+
const { registry } = await loadEcosystemRegistry(verbose);
|
|
50
|
+
// Build transport config
|
|
51
|
+
const transports = buildTransports(options);
|
|
52
|
+
// Every request must send this token. Only the lockfile (readable by this user) holds it.
|
|
53
|
+
const token = randomBytes(32).toString("hex");
|
|
54
|
+
const host = options.host ?? "127.0.0.1";
|
|
55
|
+
if (!["127.0.0.1", "localhost", "::1"].includes(host)) {
|
|
56
|
+
print.warning(`The server listens on ${host}: other computers can reach it. Every request needs its token.`);
|
|
57
|
+
}
|
|
58
|
+
if (options.transport === "websocket") {
|
|
59
|
+
print.warning("A WebSocket-only server takes no `mark` commands: `mark` sends its commands over HTTP.");
|
|
60
|
+
}
|
|
61
|
+
// The host policy of the core (roadmap 2.3): the token of each transport. The server of mark
|
|
62
|
+
// serves every procedure of the workspace to its one user, so it has no expose list.
|
|
63
|
+
const { hostPolicy } = await import("@procedures/client");
|
|
64
|
+
const { createPeer } = await import("@procedures/peer");
|
|
65
|
+
const peer = await createPeer({
|
|
66
|
+
id: `peer-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`,
|
|
67
|
+
transports,
|
|
68
|
+
registry,
|
|
69
|
+
policy: hostPolicy({ token }),
|
|
70
|
+
});
|
|
71
|
+
await peer.start();
|
|
72
|
+
const result = {
|
|
73
|
+
serverId: peer.id,
|
|
74
|
+
endpoints: peer.getEndpoints(),
|
|
75
|
+
procedureCount: peer.getServer().procedureCount,
|
|
76
|
+
};
|
|
77
|
+
// Write lockfile for client discovery. A client uses this server only from the same folder,
|
|
78
|
+
// with the same build of mark, and when the health endpoint answers with this peer id.
|
|
79
|
+
await writeLockfile({
|
|
80
|
+
pid: process.pid,
|
|
81
|
+
port,
|
|
82
|
+
transport: options.transport ?? "http",
|
|
83
|
+
endpoint: result.endpoints[0]?.address ?? `http://127.0.0.1:${port}/api`,
|
|
84
|
+
startedAt: new Date().toISOString(),
|
|
85
|
+
token,
|
|
86
|
+
cwd: process.cwd(),
|
|
87
|
+
build: currentBuild(),
|
|
88
|
+
peerId: result.serverId,
|
|
89
|
+
});
|
|
90
|
+
print.success("\nCLI Server running!");
|
|
91
|
+
print.info(` PID: ${process.pid}`);
|
|
92
|
+
print.info(` Server ID: ${result.serverId}`);
|
|
93
|
+
print.info(` Procedures: ${result.procedureCount}`);
|
|
94
|
+
print.info(` Lockfile: ${getLockfilePath()}`);
|
|
95
|
+
print.info("\nEndpoints:");
|
|
96
|
+
for (const endpoint of result.endpoints) {
|
|
97
|
+
print.info(` [${endpoint.type}] ${endpoint.address}`);
|
|
98
|
+
}
|
|
99
|
+
print.info("\nPress Ctrl+C to stop.");
|
|
100
|
+
// Handle shutdown
|
|
101
|
+
const cleanup = async () => {
|
|
102
|
+
print.info("\nStopping server...");
|
|
103
|
+
removeLockfileForPort(port);
|
|
104
|
+
process.exit(0);
|
|
105
|
+
};
|
|
106
|
+
process.on("SIGINT", cleanup);
|
|
107
|
+
process.on("SIGTERM", cleanup);
|
|
108
|
+
// Keep the process alive
|
|
109
|
+
await new Promise(() => {
|
|
110
|
+
// Never resolves - keeps process running
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* The port number of a `--port` value. An invalid port is an error (before, it became 3000:
|
|
115
|
+
* deep dive CLI-16).
|
|
116
|
+
*/
|
|
117
|
+
export function parsePort(value) {
|
|
118
|
+
const port = /^\d+$/.test(value) ? Number(value) : NaN;
|
|
119
|
+
if (!Number.isInteger(port) || port < 1 || port > 65535) {
|
|
120
|
+
throw new Error(`Invalid port: "${value}". Give a number from 1 to 65535.`);
|
|
121
|
+
}
|
|
122
|
+
return port;
|
|
123
|
+
}
|
|
124
|
+
/** The transports `--transport` accepts */
|
|
125
|
+
export const SERVER_TRANSPORTS = ["http", "websocket", "both"];
|
|
126
|
+
/**
|
|
127
|
+
* The transport of a `--transport` value
|
|
128
|
+
*/
|
|
129
|
+
export function parseTransport(value) {
|
|
130
|
+
const transport = SERVER_TRANSPORTS.find((name) => name === value);
|
|
131
|
+
if (!transport) {
|
|
132
|
+
throw new Error(`Invalid transport: "${value}". Give one of: ${SERVER_TRANSPORTS.join(", ")}.`);
|
|
133
|
+
}
|
|
134
|
+
return transport;
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Extract port from argv
|
|
138
|
+
*/
|
|
139
|
+
export function extractPort(argv) {
|
|
140
|
+
// --port 4000 and --port=4000 (before, the second form was ignored: deep dive CLI-1)
|
|
141
|
+
const inline = argv.find((arg) => arg.startsWith("--port="));
|
|
142
|
+
const portIdx = argv.indexOf("--port");
|
|
143
|
+
if (inline === undefined && portIdx === -1)
|
|
144
|
+
return null;
|
|
145
|
+
const portValue = inline !== undefined ? inline.slice("--port=".length) : argv[portIdx + 1];
|
|
146
|
+
if (portValue === undefined) {
|
|
147
|
+
throw new Error("--port needs a value");
|
|
148
|
+
}
|
|
149
|
+
return parsePort(portValue);
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Extract host from argv
|
|
153
|
+
*/
|
|
154
|
+
export function extractHost(argv) {
|
|
155
|
+
const inline = argv.find((arg) => arg.startsWith("--host="));
|
|
156
|
+
if (inline !== undefined)
|
|
157
|
+
return inline.slice("--host=".length);
|
|
158
|
+
const hostIdx = argv.indexOf("--host");
|
|
159
|
+
if (hostIdx !== -1) {
|
|
160
|
+
const hostValue = argv[hostIdx + 1];
|
|
161
|
+
if (hostValue !== undefined) {
|
|
162
|
+
return hostValue;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
return null;
|
|
166
|
+
}
|
|
167
|
+
//# sourceMappingURL=server-mode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-mode.js","sourceRoot":"","sources":["../src/server-mode.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,100 @@
|
|
|
1
1
|
{
|
|
2
|
+
"$schema": "https://json.schemastore.org/package",
|
|
2
3
|
"name": "@procedures/mark",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
4
|
+
"version": "0.2.0",
|
|
5
|
+
"description": "mark: one CLI for every procedure package. It finds the procedures, parses flags by their Zod types, runs local or through a fast warm server, and asks for missing arguments.",
|
|
6
|
+
"keywords": [
|
|
7
|
+
"cli",
|
|
8
|
+
"command-line",
|
|
9
|
+
"procedures",
|
|
10
|
+
"developer-tools",
|
|
11
|
+
"automation",
|
|
12
|
+
"zod"
|
|
13
|
+
],
|
|
14
|
+
"homepage": "https://mark1russell7.github.io/client/",
|
|
15
|
+
"bugs": {
|
|
16
|
+
"url": "https://github.com/mark1russell7/client/issues"
|
|
17
|
+
},
|
|
18
|
+
"repository": {
|
|
19
|
+
"type": "git",
|
|
20
|
+
"url": "git+https://github.com/mark1russell7/client.git",
|
|
21
|
+
"directory": "packages/mark"
|
|
22
|
+
},
|
|
23
|
+
"license": "MIT",
|
|
24
|
+
"author": "Mark Russell (https://github.com/mark1russell7)",
|
|
25
|
+
"type": "module",
|
|
26
|
+
"main": "./dist/index.js",
|
|
27
|
+
"types": "./dist/index.d.ts",
|
|
28
|
+
"exports": {
|
|
29
|
+
".": {
|
|
30
|
+
"types": "./dist/index.d.ts",
|
|
31
|
+
"import": "./dist/index.js"
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
"bin": {
|
|
35
|
+
"mark": "./dist/bin.js"
|
|
36
|
+
},
|
|
37
|
+
"files": [
|
|
38
|
+
"dist",
|
|
39
|
+
"src",
|
|
40
|
+
"!src/**/*.test.ts",
|
|
41
|
+
"!src/**/*.test.tsx",
|
|
42
|
+
"!src/**/__tests__",
|
|
43
|
+
"CHANGELOG.md"
|
|
44
|
+
],
|
|
45
|
+
"sideEffects": false,
|
|
46
|
+
"engines": {
|
|
47
|
+
"node": ">=22"
|
|
48
|
+
},
|
|
49
|
+
"publishConfig": {
|
|
50
|
+
"access": "public",
|
|
51
|
+
"provenance": true
|
|
52
|
+
},
|
|
53
|
+
"dependencies": {
|
|
54
|
+
"@clack/prompts": "^0.7.0",
|
|
55
|
+
"@procedures/client": "0.2.0",
|
|
56
|
+
"@procedures/cli-run": "0.2.0",
|
|
57
|
+
"@procedures/lib": "0.2.0",
|
|
58
|
+
"@procedures/pnpm": "0.2.0",
|
|
59
|
+
"@procedures/procedure": "0.2.0",
|
|
60
|
+
"@procedures/peer": "0.2.0",
|
|
61
|
+
"@procedures/shell": "0.2.0",
|
|
62
|
+
"@procedures/vitest": "0.2.0",
|
|
63
|
+
"chalk": "^5.3.0",
|
|
64
|
+
"cli-table3": "^0.6.5",
|
|
65
|
+
"ora": "^8.0.0",
|
|
66
|
+
"tslib": "^2.8.1",
|
|
67
|
+
"zod": "^4.6.5",
|
|
68
|
+
"@procedures/server": "0.2.0",
|
|
69
|
+
"@procedures/mcp-dev-tools": "0.2.0"
|
|
70
|
+
},
|
|
71
|
+
"devDependencies": {
|
|
72
|
+
"@procedures/bundle-dev": "0.2.0",
|
|
73
|
+
"@procedures/bundle-mcp": "0.2.0",
|
|
74
|
+
"@procedures/cue": "0.2.0",
|
|
75
|
+
"@procedures/docker": "0.2.0",
|
|
76
|
+
"@procedures/fs": "0.2.0",
|
|
77
|
+
"@procedures/git": "0.2.0",
|
|
78
|
+
"@procedures/mongo": "0.2.0",
|
|
79
|
+
"@procedures/node": "0.2.0",
|
|
80
|
+
"@procedures/s3": "0.2.0",
|
|
81
|
+
"@procedures/snapshot": "0.2.0",
|
|
82
|
+
"@procedures/splay": "0.2.0",
|
|
83
|
+
"@procedures/sqlite": "0.2.0",
|
|
84
|
+
"@procedures/store": "0.2.0",
|
|
85
|
+
"@procedures/vite": "0.2.0",
|
|
86
|
+
"@mark1russell7/cue": "^1.0.0",
|
|
87
|
+
"@types/node": "^22.0.0",
|
|
88
|
+
"typescript": "^7.0.2",
|
|
89
|
+
"vitest": "^5.0.3"
|
|
90
|
+
},
|
|
91
|
+
"scripts": {
|
|
92
|
+
"build": "tsc -b && node dist/manifest-build.js",
|
|
93
|
+
"typecheck": "tsc --noEmit",
|
|
94
|
+
"clean": "rm -rf dist .tsbuildinfo",
|
|
95
|
+
"test": "vitest run",
|
|
96
|
+
"test:watch": "vitest",
|
|
97
|
+
"test:e2e": "vitest run --config vitest.e2e.config.ts",
|
|
98
|
+
"test:e2e:watch": "vitest --config vitest.e2e.config.ts"
|
|
99
|
+
}
|
|
6
100
|
}
|