@goah/cli 0.1.1

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/dist/cli.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
package/dist/cli.js ADDED
@@ -0,0 +1,137 @@
1
+ #!/usr/bin/env node
2
+ import { writeFileSync } from "node:fs";
3
+ import { join } from "node:path";
4
+ import { discardWorkspaceRef, inspectWorkspaceRef, recoverWorkspaceRef } from "goah-supervisor";
5
+ import { createRuntime, diagnoseConfig, loadConfig, statusSnapshot, SupervisorLock, writeDefaultConfig } from "./index.js";
6
+ const args = process.argv.slice(2);
7
+ try {
8
+ await main();
9
+ }
10
+ catch (error) {
11
+ console.error(error instanceof Error ? error.message : String(error));
12
+ process.exitCode = 1;
13
+ }
14
+ async function main() {
15
+ const command = args[0] ?? "help";
16
+ const configPath = option("--config") ?? "goah.config.json";
17
+ if (command === "help") {
18
+ printHelp();
19
+ return;
20
+ }
21
+ if (command === "init") {
22
+ const provider = providerOption(option("--provider") ?? "anthropic");
23
+ writeDefaultConfig(configPath, {
24
+ provider,
25
+ ...(option("--model") ? { model: option("--model") } : {}),
26
+ ...(option("--api-key-env") ? { apiKeyEnv: option("--api-key-env") } : {}),
27
+ ...(option("--agent") ? { agent: option("--agent") } : {}),
28
+ ...(option("--context-window-tokens") ? { contextWindowTokens: numberOption("--context-window-tokens") } : {}),
29
+ ...(option("--max-output-tokens") ? { maxOutputTokensPerTurn: numberOption("--max-output-tokens") } : {}),
30
+ ...(option("--base-url") ? { baseUrl: option("--base-url") } : {}),
31
+ });
32
+ console.log(JSON.stringify({ created: configPath, provider }, null, 2));
33
+ return;
34
+ }
35
+ const config = loadConfig(configPath, { resolveSecrets: command !== "doctor" });
36
+ if (command === "doctor") {
37
+ const result = diagnoseConfig(config);
38
+ console.log(JSON.stringify(result, null, 2));
39
+ if (!result.ok)
40
+ process.exitCode = 1;
41
+ return;
42
+ }
43
+ const lock = mutates(command) ? new SupervisorLock(config.stateDir) : null;
44
+ lock?.acquire();
45
+ let runtime = null;
46
+ try {
47
+ runtime = createRuntime(config);
48
+ const { ledger, supervisor } = runtime;
49
+ if (command === "start") {
50
+ const controller = new AbortController();
51
+ const stop = () => controller.abort();
52
+ process.on("SIGINT", stop);
53
+ process.on("SIGTERM", stop);
54
+ await run(supervisor, controller.signal);
55
+ }
56
+ else if (command === "run-once") {
57
+ await supervisor.recover();
58
+ console.log(JSON.stringify({ wake: await supervisor.tick() }, null, 2));
59
+ }
60
+ else if (command === "wake") {
61
+ const agent = requiredPositional(1, "agent");
62
+ const wake = supervisor.planWake(agent, new Date().toISOString(), option("--reason") ?? "manual wake", "supervisor");
63
+ console.log(JSON.stringify({ wake }, null, 2));
64
+ }
65
+ else if (command === "status") {
66
+ console.log(JSON.stringify(statusSnapshot(ledger), null, 2));
67
+ }
68
+ else if (command === "goal-list")
69
+ console.log(JSON.stringify(ledger.goals(), null, 2));
70
+ else if (command === "goal-create") {
71
+ const id = required("--id");
72
+ const owner = required("--owner");
73
+ const objective = required("--objective");
74
+ const target = Number(option("--target") ?? 1);
75
+ const goal = { id, parentId: option("--parent"), objective, owner, phase: "active", revision: 0, target, budget: null, metric: { source: option("--metric-source") ?? id, window: option("--window") ?? "latest", direction: "at_least", target, freshnessMs: Number(option("--freshness-ms") ?? 86_400_000), onMissing: "wake_owner", onStale: "wake_owner" } };
76
+ supervisor.createGoal(goal, option("--actor") ?? "human");
77
+ const wake = flag("--wake-now") ? supervisor.planWake(owner, new Date().toISOString(), `goal:${id}`, "supervisor") : null;
78
+ console.log(JSON.stringify({ goal, wake }, null, 2));
79
+ }
80
+ else if (command === "action-list")
81
+ console.log(JSON.stringify(ledger.actions(), null, 2));
82
+ else if (command === "approve")
83
+ console.log(JSON.stringify(await supervisor.approveAction(requiredPositional(1, "action id"), option("--actor") ?? "human", required("--reason"), evidence()), null, 2));
84
+ else if (command === "reject")
85
+ console.log(JSON.stringify(supervisor.rejectAction(requiredPositional(1, "action id"), option("--actor") ?? "human", required("--reason"), evidence()), null, 2));
86
+ else if (command === "dashboard") {
87
+ const path = option("--output") ?? join(config.stateDir, "status.html");
88
+ writeFileSync(path, (await import("goah-supervisor")).renderDashboard(ledger));
89
+ console.log(path);
90
+ }
91
+ else if (command === "workspace-inspect")
92
+ console.log(inspectWorkspaceRef(config.workspace, requiredPositional(1, "workspace ref")));
93
+ else if (command === "workspace-recover")
94
+ console.log(recoverWorkspaceRef(config.workspace, requiredPositional(1, "workspace ref"), required("--branch")));
95
+ else if (command === "workspace-discard") {
96
+ if (option("--yes") !== "true")
97
+ throw new Error("workspace-discard requires --yes true");
98
+ discardWorkspaceRef(config.workspace, requiredPositional(1, "workspace ref"));
99
+ console.log("discarded");
100
+ }
101
+ else
102
+ throw new Error(`unknown command: ${command}`);
103
+ }
104
+ finally {
105
+ runtime?.ledger.close();
106
+ lock?.release();
107
+ }
108
+ }
109
+ async function run(supervisor, signal) {
110
+ const { runSupervisorDaemon } = await import("goah-supervisor");
111
+ await runSupervisorDaemon(supervisor, { signal });
112
+ }
113
+ function printHelp() {
114
+ console.log(`goah init [--provider anthropic|openai|ark-coding|faux] [--model ID]
115
+ goah doctor
116
+ goah goal-create --id ID --owner AGENT --objective TEXT [--wake-now]
117
+ goah wake AGENT [--reason TEXT]
118
+ goah run-once
119
+ goah start | status | goal-list | action-list | approve | reject | dashboard
120
+ goah workspace-inspect | workspace-recover | workspace-discard`);
121
+ }
122
+ function option(name) { const index = args.indexOf(name); return index >= 0 ? args[index + 1] ?? null : null; }
123
+ function flag(name) { return args.includes(name); }
124
+ function required(name) { const value = option(name); if (!value)
125
+ throw new Error(`${name} is required`); return value; }
126
+ function numberOption(name) { const value = Number(required(name)); if (!Number.isInteger(value) || value <= 0)
127
+ throw new Error(`${name} must be a positive integer`); return value; }
128
+ function requiredPositional(index, label) { const value = args[index]; if (!value || value.startsWith("--"))
129
+ throw new Error(`${label} is required`); return value; }
130
+ function evidence() { return required("--evidence").split(",").map(Number); }
131
+ function providerOption(value) {
132
+ if (!["anthropic", "openai", "ark-coding", "faux"].includes(value))
133
+ throw new Error(`unsupported provider: ${value}`);
134
+ return value;
135
+ }
136
+ function mutates(command) { return ["start", "run-once", "wake", "goal-create", "approve", "reject", "workspace-recover", "workspace-discard"].includes(command); }
137
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,79 @@
1
+ import { CONTRACT_VERSION, type AgentProfile, type ConnectorManifest, type MetricProcessSpec, type RunLimits } from "goah-ledger-contract";
2
+ import { SqliteLedger } from "goah-ledger-sqlite";
3
+ import { Supervisor } from "goah-supervisor";
4
+ export interface GoahConfig {
5
+ version: 1;
6
+ workspace: string;
7
+ stateDir: string;
8
+ runner: {
9
+ command: string;
10
+ args: string[];
11
+ env?: Record<string, string>;
12
+ inheritEnv?: string[];
13
+ };
14
+ limits?: RunLimits;
15
+ profiles?: AgentProfile[];
16
+ approvers?: string[];
17
+ auditWriters?: string[];
18
+ heartbeatPolicies?: Array<{
19
+ agent: string;
20
+ maxSilentMs: number;
21
+ escalateTo: string;
22
+ since?: string;
23
+ }>;
24
+ retryPolicy?: {
25
+ maxAttempts: number;
26
+ baseDelayMs: number;
27
+ };
28
+ verifyMetricsAfterWake?: boolean;
29
+ connectors?: Array<{
30
+ manifest: ConnectorManifest;
31
+ command: string;
32
+ args: string[];
33
+ env?: Record<string, string>;
34
+ timeoutMs?: number;
35
+ }>;
36
+ metrics?: Array<{
37
+ goalId: string;
38
+ intervalMs: number;
39
+ process: MetricProcessSpec;
40
+ }>;
41
+ }
42
+ export type PiProvider = "anthropic" | "openai" | "ark-coding" | "faux";
43
+ export interface InitOptions {
44
+ provider?: PiProvider;
45
+ model?: string;
46
+ apiKeyEnv?: string;
47
+ agent?: string;
48
+ contextWindowTokens?: number;
49
+ maxOutputTokensPerTurn?: number;
50
+ baseUrl?: string;
51
+ }
52
+ export interface DoctorCheck {
53
+ name: string;
54
+ ok: boolean;
55
+ detail: string;
56
+ }
57
+ export declare function loadConfig(path?: string, options?: {
58
+ resolveSecrets?: boolean;
59
+ }): GoahConfig;
60
+ export declare function createRuntime(config: GoahConfig): {
61
+ ledger: SqliteLedger;
62
+ supervisor: Supervisor;
63
+ };
64
+ export declare function defaultConfig(_directory: string, options?: InitOptions): GoahConfig;
65
+ export declare class SupervisorLock {
66
+ #private;
67
+ readonly path: string;
68
+ constructor(stateDir: string);
69
+ acquire(): void;
70
+ release(): void;
71
+ }
72
+ export declare function writeDefaultConfig(path?: string, options?: InitOptions): void;
73
+ export declare function diagnoseConfig(config: GoahConfig): {
74
+ ok: boolean;
75
+ checks: DoctorCheck[];
76
+ };
77
+ export declare function statusSnapshot(ledger: SqliteLedger, now?: string): object;
78
+ export { CONTRACT_VERSION };
79
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js ADDED
@@ -0,0 +1,231 @@
1
+ import { accessSync, constants, existsSync, mkdirSync, openSync, closeSync, readFileSync, rmSync, writeFileSync } from "node:fs";
2
+ import { spawnSync } from "node:child_process";
3
+ import { dirname, isAbsolute, join, resolve } from "node:path";
4
+ import { DatabaseSync } from "node:sqlite";
5
+ import { CONTRACT_VERSION, assertRunLimits, evaluateMetric } from "goah-ledger-contract";
6
+ import { SQLITE_SCHEMA_VERSION, SqliteLedger } from "goah-ledger-sqlite";
7
+ import { createPiModel, piWorkerPath, ProcessRunner } from "goah-runner-pi";
8
+ import { GitWorkspaceManager, Supervisor } from "goah-supervisor";
9
+ export function loadConfig(path = "goah.config.json", options = {}) {
10
+ const absolute = resolve(path);
11
+ const config = JSON.parse(readFileSync(absolute, "utf8"));
12
+ if (config.version !== 1)
13
+ throw new Error(`unsupported goah config version: ${String(config.version)}`);
14
+ const base = dirname(absolute);
15
+ config.workspace = absolutePath(base, config.workspace);
16
+ config.stateDir = absolutePath(base, config.stateDir);
17
+ config.runner.command = resolveCommand(config.runner.command);
18
+ config.runner.args = config.runner.args.map((arg) => arg === "$GOAH_PI_WORKER" ? piWorkerPath() : arg);
19
+ if (options.resolveSecrets !== false)
20
+ config.runner.env = resolveEnv(config.runner.env);
21
+ for (const connector of config.connectors ?? []) {
22
+ connector.command = resolveCommand(connector.command);
23
+ if (options.resolveSecrets !== false)
24
+ connector.env = resolveEnv(connector.env);
25
+ }
26
+ for (const metric of config.metrics ?? []) {
27
+ metric.process.command = resolveCommand(metric.process.command);
28
+ if (options.resolveSecrets !== false)
29
+ metric.process.env = resolveEnv(metric.process.env);
30
+ }
31
+ return config;
32
+ }
33
+ export function createRuntime(config) {
34
+ if (config.limits)
35
+ assertRunLimits(config.limits);
36
+ mkdirSync(config.stateDir, { recursive: true });
37
+ const ledger = new SqliteLedger(join(config.stateDir, "ledger.sqlite"));
38
+ const runner = new ProcessRunner(config.runner);
39
+ const supervisor = new Supervisor(ledger, runner, new class {
40
+ now() { return new Date(); }
41
+ }(), {
42
+ workspace: new GitWorkspaceManager(config.workspace),
43
+ ...(config.limits ? { limits: config.limits } : {}),
44
+ ...(config.profiles ? { profiles: config.profiles } : {}),
45
+ ...(config.approvers ? { approvers: config.approvers } : {}),
46
+ ...(config.auditWriters ? { auditWriters: config.auditWriters } : {}),
47
+ ...(config.heartbeatPolicies ? { heartbeatPolicies: config.heartbeatPolicies } : {}),
48
+ ...(config.retryPolicy ? { retryPolicy: config.retryPolicy } : {}),
49
+ ...(config.verifyMetricsAfterWake !== undefined ? { verifyMetricsAfterWake: config.verifyMetricsAfterWake } : {}),
50
+ });
51
+ for (const connector of config.connectors ?? [])
52
+ supervisor.registerConnector(connector);
53
+ for (const metric of config.metrics ?? [])
54
+ supervisor.registerMetricCollector(metric.goalId, metric.process, metric.intervalMs);
55
+ return { ledger, supervisor };
56
+ }
57
+ export function defaultConfig(_directory, options = {}) {
58
+ const provider = options.provider ?? "anthropic";
59
+ const model = options.model ?? defaultModel(provider);
60
+ const runnerEnv = providerEnvironment(provider, model, options);
61
+ return {
62
+ version: 1,
63
+ workspace: ".",
64
+ stateDir: ".goah",
65
+ runner: { command: process.execPath, args: ["$GOAH_PI_WORKER"], env: runnerEnv },
66
+ limits: { maxTotalTokens: 2_000_000, maxWallClockMs: 3_600_000, handoffReserveTokens: 96_000, handoffReserveWallClockMs: 120_000 },
67
+ profiles: [{ agent: options.agent ?? "worker", role: "child" }],
68
+ approvers: ["human", "ceo"],
69
+ auditWriters: ["verifier", "audit"],
70
+ retryPolicy: { maxAttempts: 2, baseDelayMs: 5_000 },
71
+ };
72
+ }
73
+ export class SupervisorLock {
74
+ path;
75
+ #owned = false;
76
+ constructor(stateDir) { this.path = join(stateDir, "supervisor.lock"); }
77
+ acquire() {
78
+ mkdirSync(dirname(this.path), { recursive: true });
79
+ if (existsSync(this.path)) {
80
+ const pid = Number(readFileSync(this.path, "utf8"));
81
+ if (Number.isInteger(pid) && alive(pid))
82
+ throw new Error(`supervisor already running with pid ${pid}`);
83
+ rmSync(this.path);
84
+ }
85
+ const fd = openSync(this.path, "wx");
86
+ writeFileSync(fd, String(process.pid));
87
+ closeSync(fd);
88
+ this.#owned = true;
89
+ }
90
+ release() { if (this.#owned) {
91
+ rmSync(this.path, { force: true });
92
+ this.#owned = false;
93
+ } }
94
+ }
95
+ export function writeDefaultConfig(path = "goah.config.json", options = {}) {
96
+ const absolute = resolve(path);
97
+ if (existsSync(absolute))
98
+ throw new Error(`${absolute} already exists`);
99
+ writeFileSync(absolute, `${JSON.stringify(defaultConfig(dirname(absolute), options), null, 2)}\n`);
100
+ }
101
+ export function diagnoseConfig(config) {
102
+ const checks = [];
103
+ const check = (name, fn) => {
104
+ try {
105
+ checks.push({ name, ok: true, detail: fn() });
106
+ }
107
+ catch (error) {
108
+ checks.push({ name, ok: false, detail: error instanceof Error ? error.message : String(error) });
109
+ }
110
+ };
111
+ check("node", () => {
112
+ if (Number(process.versions.node.split(".")[0]) < 24)
113
+ throw new Error(`Node ${process.versions.node} is unsupported; require >=24`);
114
+ return process.versions.node;
115
+ });
116
+ check("workspace", () => {
117
+ const result = spawnSync("git", ["rev-parse", "--is-inside-work-tree"], { cwd: config.workspace, encoding: "utf8" });
118
+ if (result.status !== 0 || result.stdout.trim() !== "true")
119
+ throw new Error(result.stderr.trim() || "workspace is not a Git repository");
120
+ return config.workspace;
121
+ });
122
+ check("state", () => {
123
+ const existing = nearestExisting(config.stateDir);
124
+ accessSync(existing, constants.W_OK);
125
+ const database = join(config.stateDir, "ledger.sqlite");
126
+ if (!existsSync(database))
127
+ return `${config.stateDir} (will create)`;
128
+ const db = new DatabaseSync(database, { readOnly: true });
129
+ try {
130
+ const version = db.prepare("PRAGMA user_version").get().user_version;
131
+ if (version > SQLITE_SCHEMA_VERSION)
132
+ throw new Error(`ledger schema ${version} is newer than supported schema ${SQLITE_SCHEMA_VERSION}`);
133
+ return `${database} (schema ${version}${version < SQLITE_SCHEMA_VERSION ? `, migrates to ${SQLITE_SCHEMA_VERSION}` : ""})`;
134
+ }
135
+ finally {
136
+ db.close();
137
+ }
138
+ });
139
+ check("limits", () => { assertRunLimits(config.limits ?? defaultConfig(config.workspace).limits); return JSON.stringify(config.limits); });
140
+ check("runner", () => {
141
+ accessSync(config.runner.command, constants.X_OK);
142
+ const workerArg = config.runner.args[0];
143
+ if (workerArg && isAbsolute(workerArg))
144
+ accessSync(workerArg, constants.R_OK);
145
+ const env = resolveEnv(config.runner.env);
146
+ const provider = requiredEnv(env, "GOAH_PI_PROVIDER");
147
+ const modelId = requiredEnv(env, "GOAH_PI_MODEL");
148
+ const model = createPiModel(provider, modelId, env).model;
149
+ const key = provider === "anthropic" ? "ANTHROPIC_API_KEY" : provider === "openai" ? "OPENAI_API_KEY" : provider === "ark-coding" ? "ARK_API_KEY" : null;
150
+ if (key && !env[key])
151
+ throw new Error(`${key} is missing`);
152
+ return `${provider}/${modelId} context=${model.contextWindow} output=${model.maxTokens}`;
153
+ });
154
+ return { ok: checks.every((item) => item.ok), checks };
155
+ }
156
+ export function statusSnapshot(ledger, now = new Date().toISOString()) {
157
+ const events = ledger.events();
158
+ const wakes = ledger.wakes().map((wake) => {
159
+ const wakeEvents = events.filter((event) => event.wakeId === wake.id);
160
+ const abnormal = [...wakeEvents].reverse().find((event) => event.kind === "wake.abnormal_reason");
161
+ const tokensUsed = wakeEvents.reduce((total, event) => total + assistantTokens(event.data), 0);
162
+ return { ...wake, tokensUsed, abnormalReason: abnormal ? field(abnormal.data, "reason") : null };
163
+ });
164
+ const goals = ledger.goals().map((goal) => ({ ...goal, evaluation: evaluateMetric(goal.metric, ledger.metricSamples(goal.id), now) }));
165
+ const handoffs = events.filter((event) => event.kind === "handoff.recorded").slice(-20).map((event) => ({ seq: event.seq, ts: event.ts, agent: event.agent, wakeId: event.wakeId, handoff: event.data }));
166
+ const modelCapabilities = [...events].reverse().find((event) => event.kind === "runner.model.capabilities")?.data ?? null;
167
+ return { seq: events.at(-1)?.seq ?? 0, goals, wakes, actions: ledger.actions(), modelCapabilities, recentHandoffs: handoffs };
168
+ }
169
+ function resolveEnv(env = {}) {
170
+ return Object.fromEntries(Object.entries(env).map(([key, value]) => {
171
+ if (!value.startsWith("env:"))
172
+ return [key, value];
173
+ const name = value.slice(4);
174
+ const resolved = process.env[name];
175
+ if (resolved === undefined)
176
+ throw new Error(`required environment variable is missing: ${name}`);
177
+ return [key, resolved];
178
+ }));
179
+ }
180
+ function defaultModel(provider) {
181
+ if (provider === "anthropic")
182
+ return "claude-sonnet-4-6";
183
+ if (provider === "faux")
184
+ return "faux-goah";
185
+ throw new Error(`--model is required for provider ${provider}`);
186
+ }
187
+ function providerEnvironment(provider, model, options) {
188
+ const env = { GOAH_PI_PROVIDER: provider, GOAH_PI_MODEL: model };
189
+ if (provider === "faux") {
190
+ env.GOAH_PI_FAUX_HANDOFF = JSON.stringify({ observations: ["faux runner completed"], results: [], nextSteps: [] });
191
+ return env;
192
+ }
193
+ const destination = provider === "anthropic" ? "ANTHROPIC_API_KEY" : provider === "openai" ? "OPENAI_API_KEY" : "ARK_API_KEY";
194
+ env[destination] = `env:${options.apiKeyEnv ?? destination}`;
195
+ if (options.baseUrl)
196
+ env.GOAH_PI_BASE_URL = options.baseUrl;
197
+ if (provider === "ark-coding") {
198
+ if (!Number.isInteger(options.contextWindowTokens) || !Number.isInteger(options.maxOutputTokensPerTurn))
199
+ throw new Error("ark-coding requires --context-window-tokens and --max-output-tokens");
200
+ env.GOAH_PI_MODEL_CAPABILITIES = JSON.stringify({ contextWindowTokens: options.contextWindowTokens, maxOutputTokensPerTurn: options.maxOutputTokensPerTurn });
201
+ }
202
+ return env;
203
+ }
204
+ function requiredEnv(env, name) { const value = env[name]; if (!value)
205
+ throw new Error(`${name} is missing`); return value; }
206
+ function nearestExisting(path) { let current = resolve(path); while (!existsSync(current)) {
207
+ const parent = dirname(current);
208
+ if (parent === current)
209
+ break;
210
+ current = parent;
211
+ } return current; }
212
+ function field(value, key) { return typeof value === "object" && value !== null && !Array.isArray(value) ? value[key] : undefined; }
213
+ function assistantTokens(value) {
214
+ const message = field(value, "message");
215
+ if (field(message, "role") !== "assistant")
216
+ return 0;
217
+ const usage = field(message, "usage");
218
+ const total = field(usage, "totalTokens");
219
+ return typeof total === "number" ? total : 0;
220
+ }
221
+ function resolveCommand(command) { return command === "$NODE" ? process.execPath : command; }
222
+ function absolutePath(base, value) { return isAbsolute(value) ? value : resolve(base, value); }
223
+ function alive(pid) { try {
224
+ process.kill(pid, 0);
225
+ return true;
226
+ }
227
+ catch {
228
+ return false;
229
+ } }
230
+ export { CONTRACT_VERSION };
231
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,39 @@
1
+ {
2
+ "name": "@goah/cli",
3
+ "version": "0.1.1",
4
+ "license": "Apache-2.0",
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "git+https://github.com/billc8128/goah.git",
8
+ "directory": "packages/cli"
9
+ },
10
+ "engines": {
11
+ "node": ">=24.0.0"
12
+ },
13
+ "files": [
14
+ "dist",
15
+ "!dist/**/*.test.*",
16
+ "!dist/.tsbuildinfo"
17
+ ],
18
+ "publishConfig": {
19
+ "access": "public"
20
+ },
21
+ "type": "module",
22
+ "main": "./dist/index.js",
23
+ "types": "./dist/index.d.ts",
24
+ "exports": {
25
+ ".": "./dist/index.js"
26
+ },
27
+ "bin": {
28
+ "goah": "dist/cli.js"
29
+ },
30
+ "scripts": {
31
+ "prepack": "node -e \"require('node:fs').chmodSync('dist/cli.js', 0o755)\""
32
+ },
33
+ "dependencies": {
34
+ "goah-ledger-contract": "0.1.1",
35
+ "goah-ledger-sqlite": "0.1.1",
36
+ "goah-runner-pi": "0.1.1",
37
+ "goah-supervisor": "0.1.1"
38
+ }
39
+ }