highwire-mcp 0.9.0 → 0.11.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 +8 -0
- package/dist/cli.js +11 -2
- package/dist/cli.js.map +1 -1
- package/dist/ideas.d.ts +58 -0
- package/dist/ideas.js +166 -0
- package/dist/ideas.js.map +1 -0
- package/dist/launch-cli.d.ts +7 -0
- package/dist/launch-cli.js +43 -1
- package/dist/launch-cli.js.map +1 -1
- package/dist/new-cli.d.ts +14 -0
- package/dist/new-cli.js +105 -0
- package/dist/new-cli.js.map +1 -0
- package/dist/orders-cli.d.ts +1 -1
- package/dist/orders-cli.js +101 -4
- package/dist/orders-cli.js.map +1 -1
- package/dist/server.d.ts +2 -2
- package/dist/server.js +9 -5
- package/dist/server.js.map +1 -1
- package/dist/tools/execute.js +51 -1
- package/dist/tools/execute.js.map +1 -1
- package/dist/tools/fees.js +7 -5
- package/dist/tools/fees.js.map +1 -1
- package/dist/tools/orders.d.ts +61 -5
- package/dist/tools/orders.js +104 -24
- package/dist/tools/orders.js.map +1 -1
- package/dist/tools/shared.d.ts +4 -2
- package/dist/tools/shared.js.map +1 -1
- package/ideas/buyback-coin/PRD.md +118 -0
- package/ideas/buyback-coin/idea.json +115 -0
- package/ideas/buyback-coin/policy.example.json +12 -0
- package/ideas/community-treasury/PRD.md +140 -0
- package/ideas/community-treasury/idea.json +127 -0
- package/ideas/community-treasury/policy.example.json +12 -0
- package/ideas/dip-buyer/PRD.md +134 -0
- package/ideas/dip-buyer/idea.json +120 -0
- package/ideas/dip-buyer/policy.example.json +12 -0
- package/ideas/fee-funded-compute/PRD.md +141 -0
- package/ideas/fee-funded-compute/idea.json +118 -0
- package/ideas/fee-funded-compute/policy.example.json +12 -0
- package/ideas/launch-scout/PRD.md +134 -0
- package/ideas/launch-scout/idea.json +118 -0
- package/ideas/launch-scout/policy.example.json +11 -0
- package/ideas/starter/.mcp.json +12 -0
- package/ideas/starter/AGENTS.md +29 -0
- package/ideas/starter/CLAUDE.md +1 -0
- package/ideas/starter/README.md +61 -0
- package/ideas/starter/assets/README.md +1 -0
- package/ideas/starter/gitignore +7 -0
- package/ideas/starter/package.json +26 -0
- package/ideas/starter/scripts/env.mjs +19 -0
- package/ideas/starter/scripts/highwire.mjs +7 -0
- package/ideas/starter/scripts/setup.mjs +65 -0
- package/ideas/starter/src/agent.ts +21 -0
- package/ideas/starter/src/highwire.ts +40 -0
- package/ideas/starter/src/tools.ts +43 -0
- package/ideas/starter/tsconfig.json +14 -0
- package/package.json +11 -4
- package/skills/highwire/SKILL.md +2 -1
package/README.md
CHANGED
|
@@ -20,6 +20,14 @@ Or in any stdio client's config:
|
|
|
20
20
|
}
|
|
21
21
|
```
|
|
22
22
|
|
|
23
|
+
To start an agent project from one of [highwire.fun's launch ideas](https://highwire.fun/ideas), with its spec, a
|
|
24
|
+
dry-run policy and Highwire wired in:
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
npx -y highwire-mcp new # list them
|
|
28
|
+
npx -y highwire-mcp new dip-buyer # write one into ./dip-buyer
|
|
29
|
+
```
|
|
30
|
+
|
|
23
31
|
As a library, it exports `createServer()` and `createHttpHandler()`, a stateless Streamable HTTP handler with the
|
|
24
32
|
signature `(Request) => Promise<Response>`, for hosting the server yourself.
|
|
25
33
|
|
package/dist/cli.js
CHANGED
|
@@ -3,7 +3,8 @@ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"
|
|
|
3
3
|
import { serverOptionsFromEnv } from "./env.js";
|
|
4
4
|
import { createServer, VERSION } from "./server.js";
|
|
5
5
|
import { localLaunchSecret, signerFromEnv } from "./signer-env.js";
|
|
6
|
-
import { runClaim, runLaunch, runPolicyInit, runWallet } from "./launch-cli.js";
|
|
6
|
+
import { runClaim, runLaunch, runPolicyInit, runPost, runWallet } from "./launch-cli.js";
|
|
7
|
+
import { runNew } from "./new-cli.js";
|
|
7
8
|
import { runOrders } from "./orders-cli.js";
|
|
8
9
|
import { runWatch } from "./watch.js";
|
|
9
10
|
const args = process.argv.slice(2);
|
|
@@ -20,6 +21,10 @@ if (args[0] === "launch")
|
|
|
20
21
|
process.exit(await runLaunch(args.slice(1), io));
|
|
21
22
|
if (args[0] === "claim")
|
|
22
23
|
process.exit(await runClaim(args.slice(1), io));
|
|
24
|
+
if (args[0] === "post")
|
|
25
|
+
process.exit(await runPost(args.slice(1), io));
|
|
26
|
+
if (args[0] === "new")
|
|
27
|
+
process.exit(await runNew(args.slice(1), io));
|
|
23
28
|
if (args[0] === "watch" || args[0] === "orders") {
|
|
24
29
|
const ctl = new AbortController();
|
|
25
30
|
process.once("SIGINT", () => ctl.abort());
|
|
@@ -49,14 +54,18 @@ Local signer (off unless HIGHWIRE_KEYPAIR_PATH is set):
|
|
|
49
54
|
HIGHWIRE_POLICY_PATH default $HIGHWIRE_HOME/policy.json
|
|
50
55
|
|
|
51
56
|
Commands:
|
|
57
|
+
highwire new <idea> start a project from one of highwire.fun's launch ideas (highwire new lists them)
|
|
52
58
|
highwire policy init write a starting policy: devnet, dry run, small limits
|
|
53
59
|
(--launch: mainnet launches and claims; --devnet to try it there first; --live to send)
|
|
54
60
|
highwire wallet new make your own wallet for launching (~/.highwire/wallet.json); wallet address prints it
|
|
55
61
|
highwire launch launch a coin from that wallet, inside your policy (highwire launch --help)
|
|
56
62
|
highwire claim collect the wallet's creator fees
|
|
63
|
+
highwire post post a comment on your coin, or in higher.fun's chat, inside your policy (highwire post --help)
|
|
57
64
|
highwire watch higher.fun's live feed in the terminal: launches, graduations, buys and sells
|
|
58
65
|
(highwire watch --help for the filters)
|
|
59
|
-
highwire orders run fill standing orders (stop-loss, take-profit, recurring buys) until Ctrl-C
|
|
66
|
+
highwire orders run fill standing orders (stop-loss, take-profit, limit buys, recurring buys, fee claims) until Ctrl-C
|
|
67
|
+
highwire orders limit-buy buy a coin once its price falls to a level (--mint, --sol, --price or --drop-pct)
|
|
68
|
+
highwire orders claim claim creator fees on a schedule (--every-hours 24), and optionally buy back with them
|
|
60
69
|
highwire orders list the open orders; highwire orders cancel <id> cancels one
|
|
61
70
|
|
|
62
71
|
Without a local signer Highwire never signs: build tools return unsigned transactions and a sign_url for your own
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/ideas.d.ts
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
export declare const TEMPLATE_OWNER = "HigherMaestro";
|
|
2
|
+
export declare const templateRepo: (slug: string) => string;
|
|
3
|
+
export declare const DIFFICULTIES: readonly ["easy", "medium", "hard"];
|
|
4
|
+
export declare const CALCULATORS: readonly ["buyback", "compute", "trading", "treasury"];
|
|
5
|
+
export interface Idea {
|
|
6
|
+
slug: string;
|
|
7
|
+
title: string;
|
|
8
|
+
oneLiner: string;
|
|
9
|
+
difficulty: (typeof DIFFICULTIES)[number];
|
|
10
|
+
solToStart: string;
|
|
11
|
+
uses: string[];
|
|
12
|
+
outside: string[];
|
|
13
|
+
howItWorks: string[];
|
|
14
|
+
earns: string;
|
|
15
|
+
costs: string[];
|
|
16
|
+
needs: string[];
|
|
17
|
+
risks: string[];
|
|
18
|
+
milestones: {
|
|
19
|
+
title: string;
|
|
20
|
+
summary: string;
|
|
21
|
+
}[];
|
|
22
|
+
/** What to paste into a coding agent in the new repository. */
|
|
23
|
+
prompt: string;
|
|
24
|
+
/** Which calculator the page shows. */
|
|
25
|
+
calculator: (typeof CALCULATORS)[number];
|
|
26
|
+
/** Roughly how long from Deploy to a first dry run, for someone following the steps. */
|
|
27
|
+
minutesToDryRun: number;
|
|
28
|
+
/** A sample of how the agent runs, step by step. */
|
|
29
|
+
day: {
|
|
30
|
+
at: string;
|
|
31
|
+
text: string;
|
|
32
|
+
}[];
|
|
33
|
+
/** One line on each top-level key of policy.example.json. */
|
|
34
|
+
policyNotes: Record<string, string>;
|
|
35
|
+
faq: {
|
|
36
|
+
q: string;
|
|
37
|
+
a: string;
|
|
38
|
+
}[];
|
|
39
|
+
}
|
|
40
|
+
/** The PRD sections every idea has, in this order, so coding agents learn the shape once. */
|
|
41
|
+
export declare const PRD_SECTIONS: string[];
|
|
42
|
+
/** Checks an idea.json, so a bad one fails the build rather than rendering half a page. */
|
|
43
|
+
export declare function validateIdea(raw: unknown, dirName: string): Idea;
|
|
44
|
+
/** Every idea in `dir`, easiest first. The starter isn't one. */
|
|
45
|
+
export declare function listIdeas(dir: string): Idea[];
|
|
46
|
+
export declare function getIdea(slug: string, dir: string): Idea | null;
|
|
47
|
+
export declare function readPrd(slug: string, dir: string): string;
|
|
48
|
+
export declare const ideaUrl: (siteUrl: string, slug: string) => string;
|
|
49
|
+
/**
|
|
50
|
+
* The template repository's files for an idea: the starter, with the idea's own files laid over it (idea.json stays
|
|
51
|
+
* behind), and {{slug}}, {{title}}, {{oneLiner}}, {{prompt}}, {{ideaUrl}} and {{version}} filled in. Paths use /.
|
|
52
|
+
* The starter keeps its .gitignore as `gitignore`, since npm leaves .gitignore files out of packages.
|
|
53
|
+
*/
|
|
54
|
+
export declare function assemble(slug: string, opts: {
|
|
55
|
+
version: string;
|
|
56
|
+
siteUrl: string;
|
|
57
|
+
dir: string;
|
|
58
|
+
}): Map<string, Buffer | string>;
|
package/dist/ideas.js
ADDED
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
import { existsSync, readdirSync, readFileSync, statSync } from "node:fs";
|
|
2
|
+
import { join, relative } from "node:path";
|
|
3
|
+
// Launch ideas: the repo's ideas/ folder, shipped in this package for `highwire new`, and read by the site for
|
|
4
|
+
// /ideas. Each idea is ideas/<slug>/ (idea.json, PRD.md, policy.example.json, anything else the template needs), laid
|
|
5
|
+
// over ideas/starter/, the skeleton every template gets. docs/ideas-prd.md is the spec. Every function takes the
|
|
6
|
+
// folder, since the site and the command line find it in different places.
|
|
7
|
+
export const TEMPLATE_OWNER = "HigherMaestro";
|
|
8
|
+
export const templateRepo = (slug) => `highwire-idea-${slug}`;
|
|
9
|
+
export const DIFFICULTIES = ["easy", "medium", "hard"];
|
|
10
|
+
export const CALCULATORS = ["buyback", "compute", "trading", "treasury"];
|
|
11
|
+
/** The PRD sections every idea has, in this order, so coding agents learn the shape once. */
|
|
12
|
+
export const PRD_SECTIONS = ["Summary", "The loop", "Policy", "Milestones", "Outside services", "Rules", "Out of scope"];
|
|
13
|
+
const SLUG = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;
|
|
14
|
+
const str = (v, what, max = 600) => {
|
|
15
|
+
if (typeof v !== "string" || !v.trim() || v.length > max)
|
|
16
|
+
throw new Error(`${what} must be text of at most ${max} characters`);
|
|
17
|
+
return v;
|
|
18
|
+
};
|
|
19
|
+
const strs = (v, what, min = 0) => {
|
|
20
|
+
if (!Array.isArray(v) || v.length < min)
|
|
21
|
+
throw new Error(`${what} must be a list${min ? ` of at least ${min}` : ""}`);
|
|
22
|
+
return v.map((x, i) => str(x, `${what}[${i}]`));
|
|
23
|
+
};
|
|
24
|
+
/** Checks an idea.json, so a bad one fails the build rather than rendering half a page. */
|
|
25
|
+
export function validateIdea(raw, dirName) {
|
|
26
|
+
if (!raw || typeof raw !== "object")
|
|
27
|
+
throw new Error(`ideas/${dirName}/idea.json isn't an object`);
|
|
28
|
+
const o = raw;
|
|
29
|
+
try {
|
|
30
|
+
const slug = str(o.slug, "slug", 60);
|
|
31
|
+
if (!SLUG.test(slug) || slug !== dirName)
|
|
32
|
+
throw new Error(`slug must be the folder's name, lowercase words joined by -`);
|
|
33
|
+
const difficulty = o.difficulty;
|
|
34
|
+
if (!DIFFICULTIES.includes(difficulty))
|
|
35
|
+
throw new Error(`difficulty must be ${DIFFICULTIES.join(", ")}`);
|
|
36
|
+
if (!Array.isArray(o.milestones) || o.milestones.length < 1)
|
|
37
|
+
throw new Error("milestones must be a list");
|
|
38
|
+
const milestones = o.milestones.map((m, i) => {
|
|
39
|
+
const mm = (m ?? {});
|
|
40
|
+
return { title: str(mm.title, `milestones[${i}].title`, 120), summary: str(mm.summary, `milestones[${i}].summary`) };
|
|
41
|
+
});
|
|
42
|
+
const title = str(o.title, "title", 60);
|
|
43
|
+
const oneLiner = str(o.oneLiner, "oneLiner", 300);
|
|
44
|
+
if (/["\\]/.test(title + oneLiner))
|
|
45
|
+
throw new Error("title and oneLiner can't contain \" or \\ (they go into JSON files)");
|
|
46
|
+
return {
|
|
47
|
+
slug,
|
|
48
|
+
title,
|
|
49
|
+
oneLiner,
|
|
50
|
+
difficulty,
|
|
51
|
+
solToStart: str(o.solToStart, "solToStart", 120),
|
|
52
|
+
uses: strs(o.uses, "uses", 1),
|
|
53
|
+
outside: strs(o.outside, "outside"),
|
|
54
|
+
howItWorks: strs(o.howItWorks, "howItWorks", 1),
|
|
55
|
+
earns: str(o.earns, "earns", 800),
|
|
56
|
+
costs: strs(o.costs, "costs", 1),
|
|
57
|
+
needs: strs(o.needs, "needs", 1),
|
|
58
|
+
risks: strs(o.risks, "risks", 1),
|
|
59
|
+
milestones,
|
|
60
|
+
prompt: str(o.prompt, "prompt", 400),
|
|
61
|
+
calculator: (() => {
|
|
62
|
+
if (!CALCULATORS.includes(o.calculator))
|
|
63
|
+
throw new Error(`calculator must be one of ${CALCULATORS.join(", ")}`);
|
|
64
|
+
return o.calculator;
|
|
65
|
+
})(),
|
|
66
|
+
minutesToDryRun: (() => {
|
|
67
|
+
const n = o.minutesToDryRun;
|
|
68
|
+
if (typeof n !== "number" || !Number.isInteger(n) || n < 1 || n > 240)
|
|
69
|
+
throw new Error("minutesToDryRun must be whole minutes");
|
|
70
|
+
return n;
|
|
71
|
+
})(),
|
|
72
|
+
day: (() => {
|
|
73
|
+
if (!Array.isArray(o.day) || o.day.length < 1)
|
|
74
|
+
throw new Error("day must be a list");
|
|
75
|
+
return o.day.map((d, i) => {
|
|
76
|
+
const dd = (d ?? {});
|
|
77
|
+
return { at: str(dd.at, `day[${i}].at`, 40), text: str(dd.text, `day[${i}].text`) };
|
|
78
|
+
});
|
|
79
|
+
})(),
|
|
80
|
+
policyNotes: (() => {
|
|
81
|
+
const n = o.policyNotes;
|
|
82
|
+
if (!n || typeof n !== "object" || Array.isArray(n))
|
|
83
|
+
throw new Error("policyNotes must be an object");
|
|
84
|
+
return Object.fromEntries(Object.entries(n).map(([k, v]) => [k, str(v, `policyNotes.${k}`, 300)]));
|
|
85
|
+
})(),
|
|
86
|
+
faq: (() => {
|
|
87
|
+
if (!Array.isArray(o.faq) || o.faq.length < 1)
|
|
88
|
+
throw new Error("faq must be a list");
|
|
89
|
+
return o.faq.map((f, i) => {
|
|
90
|
+
const ff = (f ?? {});
|
|
91
|
+
return { q: str(ff.q, `faq[${i}].q`, 200), a: str(ff.a, `faq[${i}].a`) };
|
|
92
|
+
});
|
|
93
|
+
})(),
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
catch (err) {
|
|
97
|
+
throw new Error(`ideas/${dirName}/idea.json: ${err.message}`);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
const ORDER = { easy: 0, medium: 1, hard: 2 };
|
|
101
|
+
/** Every idea in `dir`, easiest first. The starter isn't one. */
|
|
102
|
+
export function listIdeas(dir) {
|
|
103
|
+
return readdirSync(dir)
|
|
104
|
+
.filter((name) => name !== "starter" && existsSync(join(dir, name, "idea.json")))
|
|
105
|
+
.map((name) => validateIdea(JSON.parse(readFileSync(join(dir, name, "idea.json"), "utf8")), name))
|
|
106
|
+
.sort((a, b) => ORDER[a.difficulty] - ORDER[b.difficulty] || a.title.localeCompare(b.title));
|
|
107
|
+
}
|
|
108
|
+
export function getIdea(slug, dir) {
|
|
109
|
+
return listIdeas(dir).find((i) => i.slug === slug) ?? null;
|
|
110
|
+
}
|
|
111
|
+
export function readPrd(slug, dir) {
|
|
112
|
+
return readFileSync(join(dir, slug, "PRD.md"), "utf8");
|
|
113
|
+
}
|
|
114
|
+
export const ideaUrl = (siteUrl, slug) => `${siteUrl}/ideas/${slug}`;
|
|
115
|
+
const BINARY = /\.(png|jpe?g|gif|webp|ico)$/i;
|
|
116
|
+
function walk(root, dir = root) {
|
|
117
|
+
return readdirSync(dir).flatMap((name) => {
|
|
118
|
+
const path = join(dir, name);
|
|
119
|
+
return statSync(path).isDirectory() ? walk(root, path) : [relative(root, path)];
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* The template repository's files for an idea: the starter, with the idea's own files laid over it (idea.json stays
|
|
124
|
+
* behind), and {{slug}}, {{title}}, {{oneLiner}}, {{prompt}}, {{ideaUrl}} and {{version}} filled in. Paths use /.
|
|
125
|
+
* The starter keeps its .gitignore as `gitignore`, since npm leaves .gitignore files out of packages.
|
|
126
|
+
*/
|
|
127
|
+
export function assemble(slug, opts) {
|
|
128
|
+
const { dir } = opts;
|
|
129
|
+
const idea = getIdea(slug, dir);
|
|
130
|
+
if (!idea)
|
|
131
|
+
throw new Error(`No idea ${slug} in ${dir}`);
|
|
132
|
+
const vars = {
|
|
133
|
+
slug: idea.slug,
|
|
134
|
+
title: idea.title,
|
|
135
|
+
oneLiner: idea.oneLiner,
|
|
136
|
+
prompt: idea.prompt,
|
|
137
|
+
ideaUrl: ideaUrl(opts.siteUrl, idea.slug),
|
|
138
|
+
version: opts.version,
|
|
139
|
+
};
|
|
140
|
+
const files = new Map();
|
|
141
|
+
for (const base of [join(dir, "starter"), join(dir, slug)]) {
|
|
142
|
+
for (const rel of walk(base)) {
|
|
143
|
+
const key = rel.split("\\").join("/").replace(/(^|\/)gitignore$/, "$1.gitignore");
|
|
144
|
+
if (base !== join(dir, "starter") && key === "idea.json")
|
|
145
|
+
continue;
|
|
146
|
+
const path = join(base, rel);
|
|
147
|
+
if (BINARY.test(key)) {
|
|
148
|
+
files.set(key, readFileSync(path));
|
|
149
|
+
continue;
|
|
150
|
+
}
|
|
151
|
+
const text = readFileSync(path, "utf8").replace(/\{\{(\w+)\}\}/g, (m, name) => {
|
|
152
|
+
const v = vars[name];
|
|
153
|
+
if (v === undefined)
|
|
154
|
+
throw new Error(`${key}: unknown placeholder ${m}`);
|
|
155
|
+
return v;
|
|
156
|
+
});
|
|
157
|
+
files.set(key, text);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
for (const need of ["PRD.md", "policy.example.json", "package.json", "AGENTS.md", ".gitignore"]) {
|
|
161
|
+
if (!files.has(need))
|
|
162
|
+
throw new Error(`ideas/${slug}: the assembled template has no ${need}`);
|
|
163
|
+
}
|
|
164
|
+
return files;
|
|
165
|
+
}
|
|
166
|
+
//# sourceMappingURL=ideas.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ideas.js","sourceRoot":"","sources":["../src/ideas.ts"],"names":[],"mappings":"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"}
|
package/dist/launch-cli.d.ts
CHANGED
|
@@ -7,6 +7,11 @@ export interface CliIo {
|
|
|
7
7
|
export declare const WALLET_USAGE = "highwire wallet: the agent's own wallet, for launching and claiming\n\n highwire wallet new make ~/.highwire/wallet.json (readable only by you) and print its address to fund\n highwire wallet address print the address\n\nIt never overwrites a wallet and never prints the key. launch and claim use it unless HIGHWIRE_KEYPAIR_PATH names another.";
|
|
8
8
|
export declare const LAUNCH_USAGE = "highwire launch: launch a coin on higher.fun from your own wallet, inside your policy\n\n --name <name> the coin's name, up to 32 characters (required)\n --ticker <ticker> 1-10 letters or digits, without the $ (required)\n --image <file> PNG, JPEG, GIF or WebP, up to 4 MB, uploaded to higher.fun (required, or --metadata-uri)\n --description <text> up to 500 characters\n --mode <mode> rewards (New school, the default) or classic (Old school)\n --buy <sol> a first buy, in the same transaction\n --slippage-bps <bps> for the first buy, default 500\n --lock-pct <pct> New school only: lock this % of supply for the creator\n --website <url> --x <url> --telegram <url>\n --metadata-uri <url> metadata already hosted, instead of --image\n --key <key> idempotency key; by default one from the wallet, name, ticker and mode, so a retry\n finds its coin instead of making a second\n --json print the result as JSON\n\nNeeds a policy that allows launches on mainnet: `highwire policy init --launch` writes one. It costs higher.fun's\nlaunch fee (0.02 SOL) plus the first buy, plus about 0.025 SOL of rent and network fees. The creator fees go to your wallet;\n`highwire claim` collects them.";
|
|
9
9
|
export declare const CLAIM_USAGE = "highwire claim: collect your wallet's creator fees, inside your policy\n\n --json print the result as JSON\n\nNeeds a policy that allows claims (\"claim\" in its actions).";
|
|
10
|
+
/** Calls one execute tool on an in-process server with the CLI's signer. */
|
|
11
|
+
export declare function callTool(env: Env, io: CliIo, name: string, args: Record<string, unknown>): Promise<{
|
|
12
|
+
ok: boolean;
|
|
13
|
+
body: Record<string, unknown>;
|
|
14
|
+
} | null>;
|
|
10
15
|
export declare function parseLaunchArgs(argv: string[]): {
|
|
11
16
|
args: Record<string, unknown>;
|
|
12
17
|
json: boolean;
|
|
@@ -21,4 +26,6 @@ export declare function runClaim(argv: string[], io: CliIo): Promise<number>;
|
|
|
21
26
|
export declare function runWallet(argv: string[], io: CliIo): Promise<number>;
|
|
22
27
|
/** `highwire policy init [--launch [--devnet] [--live]]`. */
|
|
23
28
|
export declare function runPolicyInit(argv: string[], io: CliIo): number;
|
|
29
|
+
/** `highwire post`: post_comment or post_chat with the CLI's signer. */
|
|
30
|
+
export declare function runPost(argv: string[], io: CliIo): Promise<number>;
|
|
24
31
|
export {};
|
package/dist/launch-cli.js
CHANGED
|
@@ -46,7 +46,7 @@ function cliEnv(env) {
|
|
|
46
46
|
return existsSync(wallet) ? { ...env, HIGHWIRE_KEYPAIR_PATH: wallet } : env;
|
|
47
47
|
}
|
|
48
48
|
/** Calls one execute tool on an in-process server with the CLI's signer. */
|
|
49
|
-
async function callTool(env, io, name, args) {
|
|
49
|
+
export async function callTool(env, io, name, args) {
|
|
50
50
|
const e = cliEnv(env);
|
|
51
51
|
const signer = signerFromEnv(e, io.err);
|
|
52
52
|
if (!signer) {
|
|
@@ -280,4 +280,46 @@ export function runPolicyInit(argv, io) {
|
|
|
280
280
|
}
|
|
281
281
|
return 0;
|
|
282
282
|
}
|
|
283
|
+
const POST_USAGE = `highwire post: post on higher.fun as your wallet, inside your policy's "posts" section
|
|
284
|
+
|
|
285
|
+
highwire post --mint <mint> "text" a comment on a coin's page (by default only coins your wallet launched)
|
|
286
|
+
highwire post --chat "text" a message in higher.fun's site chat (needs "chat": true)
|
|
287
|
+
--json print the result as JSON
|
|
288
|
+
|
|
289
|
+
Plain text only: links, web addresses and wallet or mint addresses are refused. Comments are up to 500 characters and
|
|
290
|
+
chat messages up to 280. It's public and signed in as your wallet, and a dry run until the policy is live. Allow it by
|
|
291
|
+
adding a "posts" section to the policy, for example: "posts": {"comments": "own", "chat": true, "max_per_day": 10}`;
|
|
292
|
+
/** `highwire post`: post_comment or post_chat with the CLI's signer. */
|
|
293
|
+
export async function runPost(argv, io) {
|
|
294
|
+
if (argv.includes("--help")) {
|
|
295
|
+
io.out(POST_USAGE);
|
|
296
|
+
return 0;
|
|
297
|
+
}
|
|
298
|
+
let parsed;
|
|
299
|
+
try {
|
|
300
|
+
parsed = parseArgs({ args: argv, options: { mint: { type: "string" }, chat: { type: "boolean" }, json: { type: "boolean" } }, allowPositionals: true, strict: true });
|
|
301
|
+
}
|
|
302
|
+
catch (err) {
|
|
303
|
+
io.err(`highwire post: ${err.message}\n\n${POST_USAGE}`);
|
|
304
|
+
return 2;
|
|
305
|
+
}
|
|
306
|
+
const { values, positionals } = parsed;
|
|
307
|
+
const text = positionals.join(" ").trim();
|
|
308
|
+
if (!text || (values.mint === undefined) === !values.chat) {
|
|
309
|
+
io.err(`highwire post: give --mint <mint> or --chat, and the text\n\n${POST_USAGE}`);
|
|
310
|
+
return 2;
|
|
311
|
+
}
|
|
312
|
+
const r = await callTool(io.env ?? process.env, io, values.chat ? "post_chat" : "post_comment", { ...(values.mint ? { mint: values.mint } : {}), text, confirm_post: true });
|
|
313
|
+
if (!r)
|
|
314
|
+
return 1;
|
|
315
|
+
if (values.json)
|
|
316
|
+
io.out(JSON.stringify(r.body, null, 2));
|
|
317
|
+
else if (!r.ok)
|
|
318
|
+
printFailure(io, "post", r.body);
|
|
319
|
+
else if (r.body.status === "dry_run")
|
|
320
|
+
io.out(`Dry run: the policy isn't live, so nothing was posted. It would post: ${String(r.body.text)}`);
|
|
321
|
+
else
|
|
322
|
+
io.out(`Posted${r.body.page ? ` on ${String(r.body.page)}` : " in higher.fun's chat"}: ${String(r.body.text)} (${String(r.body.postsLeftToday)} more allowed today)`);
|
|
323
|
+
return r.ok ? 0 : 1;
|
|
324
|
+
}
|
|
283
325
|
//# sourceMappingURL=launch-cli.js.map
|
package/dist/launch-cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"launch-cli.js","sourceRoot":"","sources":["../src/launch-cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"launch-cli.js","sourceRoot":"","sources":["../src/launch-cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACvF,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAe/E,MAAM,CAAC,MAAM,YAAY,GAAG;;;;;2HAK+F,CAAC;AAE5H,MAAM,CAAC,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;kCAkBM,CAAC;AAEnC,MAAM,CAAC,MAAM,WAAW,GAAG;;;;4DAIiC,CAAC;AAE7D,mGAAmG;AACnG,SAAS,MAAM,CAAC,GAAQ;IACtB,IAAI,GAAG,CAAC,qBAAqB,EAAE,IAAI,EAAE;QAAE,OAAO,GAAG,CAAC;IAClD,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,qBAAqB,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;AAC9E,CAAC;AAED,4EAA4E;AAC5E,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,GAAQ,EAAE,EAAS,EAAE,IAAY,EAAE,IAA6B;IAC7F,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IACtB,MAAM,MAAM,GAAG,aAAa,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;IACxC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,EAAE,CAAC,GAAG,CAAC,qGAAqG,CAAC,CAAC;QAC9G,OAAO,IAAI,CAAC;IACd,CAAC;IACD,uEAAuE;IACvE,IAAI,CAAC,CAAC,qBAAqB;QAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB,GAAG,CAAC,CAAC,qBAAqB,CAAC;IACzF,MAAM,MAAM,GAAG,YAAY,CAAC,EAAE,GAAG,oBAAoB,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IAC3G,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;IAClE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,iBAAiB,CAAC,gBAAgB,EAAE,CAAC;IACpD,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1D,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7D,MAAM,IAAI,GAAI,GAAG,CAAC,OAAmC,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,IAAI,CAAC;QACvE,OAAO,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAA4B,EAAE,CAAC;IACjF,CAAC;YAAS,CAAC;QACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;AACH,CAAC;AAED,MAAM,SAAS,GAAG,cAAc,CAAC;AAEjC,MAAM,UAAU,eAAe,CAAC,IAAc;IAC5C,IAAI,MAAM,CAAC;IACX,IAAI,CAAC;QACH,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;YACtB,IAAI,EAAE,IAAI;YACV,OAAO,EAAE;gBACP,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACxB,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAC1B,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACzB,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAC/B,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACxB,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACvB,cAAc,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAClC,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAC9B,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAC3B,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACrB,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAC5B,cAAc,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAClC,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACvB,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;aAC1B;YACD,MAAM,EAAE,IAAI;SACb,CAAC,CAAC,CAAC;IACN,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,KAAK,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC;IAC3C,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,IAAI;QAAE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC;IAClD,IAAI,CAAC,MAAM,CAAC,MAAM;QAAE,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC;IACtD,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC;QAAE,OAAO,EAAE,KAAK,EAAE,6DAA6D,EAAE,CAAC;IAC9H,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,SAAS,CAAC;IACtC,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,EAAE,KAAK,EAAE,qCAAqC,IAAI,EAAE,EAAE,CAAC;IAC5G,MAAM,GAAG,GAAG,CAAC,CAAqB,EAAE,GAAG,GAAG,KAAK,EAAE,EAAE;QACjD,IAAI,CAAC,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QACtC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACpB,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IACjF,CAAC,CAAC;IACF,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,CAAC;IAC5G,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC,gBAAgB,EAAE,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,CAAU,EAAE,CAAC;QAClG,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAAE,OAAO,EAAE,KAAK,EAAE,GAAG,IAAI,cAAc,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC;IACpH,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,UAAU,EAAE,cAAc,CAAU,EAAE,CAAC;QACzE,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAE,CAAC;YAAE,OAAO,EAAE,KAAK,EAAE,KAAK,IAAI,0BAA0B,EAAE,CAAC;IAC1H,CAAC;IACD,OAAO;QACL,IAAI,EAAE;YACJ,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;YACxC,QAAQ,EAAE,IAAI;YACd,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9D,GAAG,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3E,GAAG,CAAC,MAAM,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAChF,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACpC,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzD,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzD,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACtD,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACpC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzD,cAAc,EAAE,IAAI;SACrB;QACD,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,KAAK;QAC1B,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC3C,CAAC;AACJ,CAAC;AAED,kIAAkI;AAClI,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,MAAc,EAAE,IAAY,EAAE,MAAc,EAAE,IAAY,EAAE,EAAE,CAC7F,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,mBAAmB,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAIvI,SAAS,YAAY,CAAC,EAAS,EAAE,IAAY,EAAE,IAA6B;IAC1E,EAAE,CAAC,GAAG,CAAC,YAAY,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,QAAQ,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC3G,IAAI,IAAI,CAAC,SAAS;QAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAc,EAAE,EAAS;IACvD,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACrB,OAAO,CAAC,CAAC;IACX,CAAC;IACD,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,OAAO,IAAI,MAAM,EAAE,CAAC;QACtB,EAAE,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,KAAK,OAAO,YAAY,EAAE,CAAC,CAAC;QAC9D,OAAO,CAAC,CAAC;IACX,CAAC;IACD,MAAM,GAAG,GAAG,EAAE,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IAClC,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IACtB,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;IACxB,wDAAwD;IACxD,MAAM,MAAM,GAAG,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;IACxF,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC;IAClJ,MAAM,CAAC,GAAG,MAAM,QAAQ,CAAC,GAAG,EAAE,EAAE,EAAE,gBAAgB,EAAE,EAAE,GAAG,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,CAAC,CAAC;IACvF,IAAI,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC;IACjB,IAAI,MAAM,CAAC,IAAI;QAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACzD,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QACV,IAAI,CAAC,MAAM,CAAC,IAAI;YAAE,YAAY,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QACrD,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,MAAM,CAAC,IAAI;QAAE,OAAO,CAAC,CAAC;IAC1B,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;IACjB,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;IACvD,sFAAsF;IACtF,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,QAAQ,IAAI,CAAC,CAAC,OAAO,KAAK,QAAQ,CAAC;IACxF,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,4BAA4B,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,2BAA2B,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;IAC/H,IAAI,CAAC,CAAC,MAAM,KAAK,kBAAkB,EAAE,CAAC;QACpC,EAAE,CAAC,GAAG,CAAC,GAAG,MAAM,wCAAwC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,qBAAqB,CAAC,CAAC;QACnG,OAAO,CAAC,CAAC;IACX,CAAC;IACD,MAAM,GAAG,GAAI,CAAC,CAAC,SAAiD,EAAE,GAAG,IAAI,CAAC,CAAC;IAC3E,MAAM,IAAI,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,GAAG,GAAG,iBAAiB,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAC9I,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC3B,EAAE,CAAC,GAAG,CAAC,kFAAkF,MAAM,OAAO,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,GAAG,CAAC,CAAC;QACrI,EAAE,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;QAC9D,OAAO,CAAC,CAAC;IACX,CAAC;IACD,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,EAAE,CAAC,CAAC;IAChH,EAAE,CAAC,GAAG,CAAC,QAAQ,IAAI,wCAAwC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,qCAAqC,CAAC,CAAC;IAClH,KAAK,MAAM,CAAC,IAAK,CAAC,CAAC,YAAiC,IAAI,EAAE;QAAE,IAAI,CAAC,CAAC,QAAQ;YAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;IACtG,OAAO,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,IAAc,EAAE,EAAS;IACtD,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACpB,OAAO,CAAC,CAAC;IACX,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC;IACjD,IAAI,OAAO,EAAE,CAAC;QACZ,EAAE,CAAC,GAAG,CAAC,oCAAoC,OAAO,OAAO,WAAW,EAAE,CAAC,CAAC;QACxE,OAAO,CAAC,CAAC;IACX,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACrC,MAAM,CAAC,GAAG,MAAM,QAAQ,CAAC,EAAE,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,EAAE,EAAE,eAAe,EAAE,EAAE,CAAC,CAAC;IACzE,IAAI,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC;IACjB,IAAI,IAAI,EAAE,CAAC;QACT,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACxC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACtB,CAAC;IACD,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QACV,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QAClC,OAAO,CAAC,CAAC;IACX,CAAC;IACD,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;IACjB,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;QACX,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACvB,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS;QAAE,EAAE,CAAC,GAAG,CAAC,kEAAkE,MAAM,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;;QAClI,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;IACxG,KAAK,MAAM,CAAC,IAAK,CAAC,CAAC,YAAiC,IAAI,EAAE;QAAE,IAAI,CAAC,CAAC,QAAQ;YAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;IACtG,OAAO,CAAC,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAc,EAAE,EAAS;IACvD,MAAM,GAAG,GAAG,EAAE,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IAClC,MAAM,IAAI,GAAG,GAAG,CAAC,qBAAqB,EAAE,IAAI,EAAE,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;IACzE,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC;QACtB,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACrD,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,oBAAoB,IAAI,0CAA0C,OAAO,uEAAuE,CAAC,CAAC,CAAC,8BAA8B,IAAI,qCAAqC,OAAO,EAAE,CAAC,CAAC;QACtP,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;QAC1B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACtB,EAAE,CAAC,GAAG,CAAC,gBAAgB,IAAI,gCAAgC,CAAC,CAAC;YAC7D,OAAO,CAAC,CAAC;QACX,CAAC;QACD,MAAM,MAAM,GAAG,aAAa,CAAC,EAAE,GAAG,GAAG,EAAE,qBAAqB,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAChF,EAAE,CAAC,GAAG,CAAC,MAAO,CAAC,MAAM,CAAC,CAAC;QACvB,OAAO,CAAC,CAAC;IACX,CAAC;IACD,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IACrB,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,6DAA6D;AAC7D,MAAM,UAAU,aAAa,CAAC,IAAc,EAAE,EAAS;IACrD,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC7G,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,UAAU,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,UAAU,CAAC,CAAC;IACzF,IAAI,OAAO,EAAE,CAAC;QACZ,EAAE,CAAC,GAAG,CAAC,0CAA0C,OAAO,mCAAmC,CAAC,CAAC;QAC7F,OAAO,CAAC,CAAC;IACX,CAAC;IACD,MAAM,KAAK,GAAG,UAAU,CAAC,EAAE,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC;IAChD,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QAChC,EAAE,CAAC,GAAG,CAAC,wGAAwG,CAAC,CAAC;QACjH,OAAO,CAAC,CAAC;IACX,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,sBAAsB,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,QAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAC7H,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACtD,IAAI,CAAC,OAAO;QAAE,EAAE,CAAC,GAAG,CAAC,8BAA8B,IAAI,uDAAuD,CAAC,CAAC;SAC3G,IAAI,MAAM,EAAE,CAAC;QAChB,EAAE,CAAC,GAAG,CAAC,4BAA4B,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,gDAAgD,CAAC,CAAC,CAAC,SAAS,0BAA0B,sBAAsB,CAAC,cAAc,uCAAuC,sBAAsB,CAAC,eAAe,eAAe,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,qCAAqC,EAAE,CAAC,CAAC;IAClV,CAAC;SAAM,CAAC;QACN,EAAE,CAAC,GAAG,CAAC,8BAA8B,IAAI,4JAA4J,CAAC,CAAC;IACzM,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,UAAU,GAAG;;;;;;;;mHAQgG,CAAC;AAEpH,wEAAwE;AACxE,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,IAAc,EAAE,EAAS;IACrD,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACnB,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,MAAM,CAAC;IACX,IAAI,CAAC;QACH,MAAM,GAAG,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IACxK,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,EAAE,CAAC,GAAG,CAAC,kBAAmB,GAAa,CAAC,OAAO,OAAO,UAAU,EAAE,CAAC,CAAC;QACpE,OAAO,CAAC,CAAC;IACX,CAAC;IACD,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC;IACvC,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAC1C,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QAC1D,EAAE,CAAC,GAAG,CAAC,gEAAgE,UAAU,EAAE,CAAC,CAAC;QACrF,OAAO,CAAC,CAAC;IACX,CAAC;IACD,MAAM,CAAC,GAAG,MAAM,QAAQ,CAAC,EAAE,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,cAAc,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7K,IAAI,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC;IACjB,IAAI,MAAM,CAAC,IAAI;QAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;SACpD,IAAI,CAAC,CAAC,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;SAC5C,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS;QAAE,EAAE,CAAC,GAAG,CAAC,yEAAyE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;;QACxI,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,uBAAuB,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,CAAC;IAC3K,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export declare const NEW_USAGE = "highwire new: start a project from one of highwire.fun's launch ideas (https://highwire.fun/ideas)\n\n highwire new list the ideas\n highwire new <idea> [dir] write the idea's project into dir (default ./<idea>) and run git init\n --json the list, or what was written, as JSON\n\nThen: cd into it, npm install && npm run setup, and ask your coding agent to read PRD.md and build milestone 1.\nEverything is a dry run until you set \"live\": true in the project's policy yourself.";
|
|
2
|
+
/**
|
|
3
|
+
* Where the ideas are: shipped next to dist/ in the package (prepack copies them), or the repository's own ideas/
|
|
4
|
+
* when running from source.
|
|
5
|
+
*/
|
|
6
|
+
export declare function bundledIdeasDir(): string;
|
|
7
|
+
export interface NewIo {
|
|
8
|
+
out: (line: string) => void;
|
|
9
|
+
err: (line: string) => void;
|
|
10
|
+
/** For tests: the ideas folder and the working directory. */
|
|
11
|
+
ideasDir?: string;
|
|
12
|
+
cwd?: string;
|
|
13
|
+
}
|
|
14
|
+
export declare function runNew(argv: string[], io: NewIo): Promise<number>;
|
package/dist/new-cli.js
ADDED
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { spawnSync } from "node:child_process";
|
|
2
|
+
import { existsSync, mkdirSync, readdirSync, statSync, writeFileSync } from "node:fs";
|
|
3
|
+
import { dirname, join, relative, resolve } from "node:path";
|
|
4
|
+
import { fileURLToPath } from "node:url";
|
|
5
|
+
import { parseArgs } from "node:util";
|
|
6
|
+
import { assemble, getIdea, ideaUrl, listIdeas } from "./ideas.js";
|
|
7
|
+
import { VERSION } from "./server.js";
|
|
8
|
+
// `highwire new <idea> [dir]`: one of highwire.fun's launch ideas as a new project, the same files the idea's
|
|
9
|
+
// template repository has, for agents and people who'd rather not use GitHub's form. Writes only into an empty or new
|
|
10
|
+
// folder, runs git init, and never makes a wallet: `npm run setup` in the project does that, outside it.
|
|
11
|
+
const SITE_URL = "https://highwire.fun";
|
|
12
|
+
export const NEW_USAGE = `highwire new: start a project from one of highwire.fun's launch ideas (${SITE_URL}/ideas)
|
|
13
|
+
|
|
14
|
+
highwire new list the ideas
|
|
15
|
+
highwire new <idea> [dir] write the idea's project into dir (default ./<idea>) and run git init
|
|
16
|
+
--json the list, or what was written, as JSON
|
|
17
|
+
|
|
18
|
+
Then: cd into it, npm install && npm run setup, and ask your coding agent to read PRD.md and build milestone 1.
|
|
19
|
+
Everything is a dry run until you set "live": true in the project's policy yourself.`;
|
|
20
|
+
/**
|
|
21
|
+
* Where the ideas are: shipped next to dist/ in the package (prepack copies them), or the repository's own ideas/
|
|
22
|
+
* when running from source.
|
|
23
|
+
*/
|
|
24
|
+
export function bundledIdeasDir() {
|
|
25
|
+
const fromSource = import.meta.url.endsWith(".ts");
|
|
26
|
+
return fileURLToPath(new URL(fromSource ? "../../../ideas" : "../ideas", import.meta.url));
|
|
27
|
+
}
|
|
28
|
+
export async function runNew(argv, io) {
|
|
29
|
+
let parsed;
|
|
30
|
+
try {
|
|
31
|
+
parsed = parseArgs({ args: argv, allowPositionals: true, options: { json: { type: "boolean" }, help: { type: "boolean" } } });
|
|
32
|
+
}
|
|
33
|
+
catch (err) {
|
|
34
|
+
io.err(`highwire new: ${err.message}\n\n${NEW_USAGE}`);
|
|
35
|
+
return 2;
|
|
36
|
+
}
|
|
37
|
+
const { values, positionals } = parsed;
|
|
38
|
+
if (values.help) {
|
|
39
|
+
io.out(NEW_USAGE);
|
|
40
|
+
return 0;
|
|
41
|
+
}
|
|
42
|
+
const dir = io.ideasDir ?? bundledIdeasDir();
|
|
43
|
+
const ideas = listIdeas(dir);
|
|
44
|
+
const [slug, target] = positionals;
|
|
45
|
+
if (positionals.length > 2) {
|
|
46
|
+
io.err(`highwire new: takes an idea and, optionally, a folder\n\n${NEW_USAGE}`);
|
|
47
|
+
return 2;
|
|
48
|
+
}
|
|
49
|
+
if (!slug) {
|
|
50
|
+
if (values.json) {
|
|
51
|
+
io.out(JSON.stringify(ideas.map((i) => ({ slug: i.slug, title: i.title, oneLiner: i.oneLiner, difficulty: i.difficulty, url: ideaUrl(SITE_URL, i.slug) })), null, 2));
|
|
52
|
+
return 0;
|
|
53
|
+
}
|
|
54
|
+
const width = Math.max(...ideas.map((i) => i.slug.length));
|
|
55
|
+
io.out(`Launch ideas (${SITE_URL}/ideas):\n`);
|
|
56
|
+
for (const i of ideas)
|
|
57
|
+
io.out(` ${i.slug.padEnd(width)} ${i.difficulty.padEnd(6)} ${i.oneLiner}`);
|
|
58
|
+
io.out(`\nStart one with: highwire new <idea>`);
|
|
59
|
+
return 0;
|
|
60
|
+
}
|
|
61
|
+
const idea = getIdea(slug, dir);
|
|
62
|
+
if (!idea) {
|
|
63
|
+
io.err(`highwire new: there's no idea called ${slug}. The ideas: ${ideas.map((i) => i.slug).join(", ")}.`);
|
|
64
|
+
return 1;
|
|
65
|
+
}
|
|
66
|
+
const cwd = io.cwd ?? process.cwd();
|
|
67
|
+
const out = resolve(cwd, target ?? idea.slug);
|
|
68
|
+
if (existsSync(out)) {
|
|
69
|
+
if (!statSync(out).isDirectory()) {
|
|
70
|
+
io.err(`highwire new: ${out} is a file. Pick a new folder.`);
|
|
71
|
+
return 1;
|
|
72
|
+
}
|
|
73
|
+
if (readdirSync(out).length) {
|
|
74
|
+
io.err(`highwire new: ${out} isn't empty, so nothing was written. Pick a new or empty folder.`);
|
|
75
|
+
return 1;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
const files = assemble(idea.slug, { version: VERSION, siteUrl: SITE_URL, dir });
|
|
79
|
+
for (const [rel, content] of files) {
|
|
80
|
+
const path = join(out, rel);
|
|
81
|
+
mkdirSync(dirname(path), { recursive: true });
|
|
82
|
+
writeFileSync(path, content);
|
|
83
|
+
}
|
|
84
|
+
const git = spawnSync("git", ["init", "-q"], { cwd: out, encoding: "utf8" });
|
|
85
|
+
const gitOk = git.status === 0;
|
|
86
|
+
const rel = relative(cwd, out);
|
|
87
|
+
const shown = !rel ? "." : rel.startsWith("..") ? out : rel;
|
|
88
|
+
if (values.json) {
|
|
89
|
+
io.out(JSON.stringify({ idea: idea.slug, dir: out, files: [...files.keys()].sort(), git: gitOk, next: [`cd ${shown}`, "npm install", "npm run setup"], prompt: idea.prompt }, null, 2));
|
|
90
|
+
return 0;
|
|
91
|
+
}
|
|
92
|
+
io.out(`Wrote ${idea.title} to ${shown} (${files.size} files)${gitOk ? ", and ran git init" : "; git isn't available, so it isn't a repository yet"}.
|
|
93
|
+
|
|
94
|
+
Next:
|
|
95
|
+
cd ${shown}
|
|
96
|
+
npm install
|
|
97
|
+
npm run setup makes the agent's wallet in ~/.highwire/${idea.slug}/ and a dry-run policy
|
|
98
|
+
|
|
99
|
+
Then open it in your coding agent and say:
|
|
100
|
+
${idea.prompt}
|
|
101
|
+
|
|
102
|
+
The idea, with its costs and risks: ${ideaUrl(SITE_URL, idea.slug)}`);
|
|
103
|
+
return 0;
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=new-cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"new-cli.js","sourceRoot":"","sources":["../src/new-cli.ts"],"names":[],"mappings":"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"}
|
package/dist/orders-cli.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const ORDERS_USAGE = "highwire orders: standing orders for the local signer (stop-loss, take-profit, recurring buys)\n\n highwire orders run fill open orders for HIGHWIRE_KEYPAIR_PATH's wallet until Ctrl-C\n highwire orders list [--all] open orders (or every order) in the book\n highwire orders cancel <id> cancel an open order\n\nAgents place orders with the place_order tool, and only kinds the policy's \"orders\" section allows. Every fill is\nchecked against the whole policy, simulated and written to the audit log, like execute_trade.";
|
|
1
|
+
export declare const ORDERS_USAGE = "highwire orders: standing orders for the local signer (stop-loss, take-profit, limit buys, recurring buys, fee claims)\n\n highwire orders run fill open orders for HIGHWIRE_KEYPAIR_PATH's wallet until Ctrl-C\n highwire orders list [--all] open orders (or every order) in the book\n highwire orders cancel <id> cancel an open order\n highwire orders claim --every-hours <h> [--min-sol <sol>] [--buyback-pct <pct> --mint <mint>] [--slippage-bps <bps>]\n claim the wallet's creator fees every <h> hours (when at least --min-sol is waiting,\n default 0.001), and buy back --mint with that share of each claim\n highwire orders limit-buy --mint <mint> --sol <sol> (--price <sol> | --drop-pct <pct>) [--slippage-bps <bps>] [--expires-days <d>]\n buy --sol of the coin once its price falls to --price SOL a token, or --drop-pct below now\n\nAgents place orders with the place_order tool (or `orders claim`), and only kinds the policy's \"orders\" section allows. Every fill is\nchecked against the whole policy, simulated and written to the audit log, like execute_trade.";
|
|
2
2
|
type Env = Record<string, string | undefined>;
|
|
3
3
|
export interface OrdersIo {
|
|
4
4
|
out: (line: string) => void;
|