@monban-online/cli 0.1.0 → 0.1.4
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/api/client.js.map +1 -1
- package/dist/commands/create-counter.js +6 -3
- package/dist/commands/create-counter.js.map +1 -1
- package/dist/commands/delete-counter.js +1 -0
- package/dist/commands/delete-counter.js.map +1 -1
- package/dist/commands/doctor.js +273 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/guide.js +81 -0
- package/dist/commands/guide.js.map +1 -0
- package/dist/commands/list-counters.js.map +1 -1
- package/dist/commands/pull-counter.js.map +1 -1
- package/dist/commands/push-counter.js.map +1 -1
- package/dist/commands/sync-inquiries.js.map +1 -1
- package/dist/commands/whoami.js.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/workspace/counter-files.js +68 -1
- package/dist/workspace/counter-files.js.map +1 -1
- package/dist/workspace/inquiry-store.js +22 -6
- package/dist/workspace/inquiry-store.js.map +1 -1
- package/package.json +2 -1
package/dist/api/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAmB,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,18 +1,21 @@
|
|
|
1
1
|
import { apiPost } from "../api/client.js";
|
|
2
|
-
import {
|
|
2
|
+
import { ensureCounterFiles } from "../workspace/counter-files.js";
|
|
3
3
|
export function registerCreateCounterCommand(program) {
|
|
4
4
|
const create = program.command("create").description("Create monban resources.");
|
|
5
5
|
create
|
|
6
6
|
.command("counter")
|
|
7
|
-
.description("Create a counter from local
|
|
7
|
+
.description("Create a counter from local files, creating starter files if none exist.")
|
|
8
8
|
.argument("<counterId>")
|
|
9
9
|
.option("--root <path>", "project root", process.cwd())
|
|
10
10
|
.action(async (counterId, options) => {
|
|
11
|
-
const files = await
|
|
11
|
+
const { files, created } = await ensureCounterFiles(counterId, options.root);
|
|
12
12
|
await apiPost("/api/cli/counters", {
|
|
13
13
|
counterId,
|
|
14
14
|
...files,
|
|
15
15
|
});
|
|
16
|
+
if (created) {
|
|
17
|
+
console.log(`Created starter files in monban/counters/${counterId}`);
|
|
18
|
+
}
|
|
16
19
|
console.log(`Created ${counterId}`);
|
|
17
20
|
});
|
|
18
21
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-counter.js","sourceRoot":"","sources":["../../src/commands/create-counter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"create-counter.js","sourceRoot":"","sources":["../../src/commands/create-counter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAEnE,MAAM,UAAU,4BAA4B,CAAC,OAAgB;IAC3D,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,0BAA0B,CAAC,CAAC;IACjF,MAAM;SACH,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,0EAA0E,CAAC;SACvF,QAAQ,CAAC,aAAa,CAAC;SACvB,MAAM,CAAC,eAAe,EAAE,cAAc,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;SACtD,MAAM,CAAC,KAAK,EAAE,SAAiB,EAAE,OAAyB,EAAE,EAAE;QAC7D,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,kBAAkB,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QAC7E,MAAM,OAAO,CAA2B,mBAAmB,EAAE;YAC3D,SAAS;YACT,GAAG,KAAK;SACT,CAAC,CAAC;QACH,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,GAAG,CAAC,4CAA4C,SAAS,EAAE,CAAC,CAAC;QACvE,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,WAAW,SAAS,EAAE,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -14,6 +14,7 @@ export function registerDeleteCounterCommand(program) {
|
|
|
14
14
|
}
|
|
15
15
|
await apiDelete(`/api/cli/counters/${encodeURIComponent(counterId)}`);
|
|
16
16
|
console.log(`Deleted ${counterId}`);
|
|
17
|
+
console.log(`Local files were not removed. Run \`monban doctor --online\` to find stale local counters.`);
|
|
17
18
|
});
|
|
18
19
|
}
|
|
19
20
|
//# sourceMappingURL=delete-counter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delete-counter.js","sourceRoot":"","sources":["../../src/commands/delete-counter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"delete-counter.js","sourceRoot":"","sources":["../../src/commands/delete-counter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,MAAM,UAAU,4BAA4B,CAAC,OAAgB;IAC3D,MAAM,aAAa,GAAG,OAAO;SAC1B,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,0BAA0B,CAAC,CAAC;IAC3C,aAAa;SACV,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,iEAAiE,CAAC;SAC9E,QAAQ,CAAC,aAAa,CAAC;SACvB,MAAM,CAAC,OAAO,EAAE,kBAAkB,CAAC;SACnC,MAAM,CAAC,KAAK,EAAE,SAAiB,EAAE,OAA0B,EAAE,EAAE;QAC9D,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;QACxD,CAAC;QACD,MAAM,SAAS,CACb,qBAAqB,kBAAkB,CAAC,SAAS,CAAC,EAAE,CACrD,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,WAAW,SAAS,EAAE,CAAC,CAAC;QACpC,OAAO,CAAC,GAAG,CACT,4FAA4F,CAC7F,CAAC;IACJ,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
import { access, readdir, readFile } from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { apiGet } from "../api/client.js";
|
|
4
|
+
import { counterDir, inquiryDir, stateFile, workspaceRoot } from "../workspace/layout.js";
|
|
5
|
+
const COUNTER_FILE_NAMES = [
|
|
6
|
+
"settings.yaml",
|
|
7
|
+
"TRIGGERS.md",
|
|
8
|
+
"SYSTEM_PROMPT.md",
|
|
9
|
+
];
|
|
10
|
+
export function registerDoctorCommand(program) {
|
|
11
|
+
program
|
|
12
|
+
.command("doctor")
|
|
13
|
+
.description("Diagnose the local Monban workspace and show next steps.")
|
|
14
|
+
.option("--root <path>", "project root", process.cwd())
|
|
15
|
+
.option("--online", "also compare local counters with counters on Monban")
|
|
16
|
+
.action(async (options) => {
|
|
17
|
+
const report = await inspectWorkspace(options.root, { online: options.online });
|
|
18
|
+
console.log(formatDoctorReport(report));
|
|
19
|
+
if (report.checks.some((check) => check.status === "fail")) {
|
|
20
|
+
process.exitCode = 1;
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
export async function inspectWorkspace(root = process.cwd(), options = {}) {
|
|
25
|
+
const resolvedRoot = path.resolve(root);
|
|
26
|
+
const checks = [];
|
|
27
|
+
checks.push({
|
|
28
|
+
status: (await pathExists(resolvedRoot)) ? "ok" : "fail",
|
|
29
|
+
title: "project root",
|
|
30
|
+
detail: resolvedRoot,
|
|
31
|
+
});
|
|
32
|
+
const workspace = workspaceRoot(resolvedRoot);
|
|
33
|
+
const hasWorkspace = await pathExists(workspace);
|
|
34
|
+
checks.push({
|
|
35
|
+
status: hasWorkspace ? "ok" : "fail",
|
|
36
|
+
title: "monban workspace",
|
|
37
|
+
detail: workspace,
|
|
38
|
+
next: hasWorkspace ? undefined : "Run: monban init",
|
|
39
|
+
});
|
|
40
|
+
const hasState = await pathExists(stateFile(resolvedRoot));
|
|
41
|
+
checks.push({
|
|
42
|
+
status: hasState ? "ok" : "warn",
|
|
43
|
+
title: "workspace state",
|
|
44
|
+
detail: stateFile(resolvedRoot),
|
|
45
|
+
next: hasState ? undefined : "Run: monban init",
|
|
46
|
+
});
|
|
47
|
+
const counterIds = await listCounterIds(resolvedRoot);
|
|
48
|
+
checks.push(await counterFilesCheck(resolvedRoot, counterIds));
|
|
49
|
+
if (options.online) {
|
|
50
|
+
checks.push(await remoteCountersCheck(counterIds, options.fetchCounters));
|
|
51
|
+
}
|
|
52
|
+
checks.push(await embedCheck(resolvedRoot));
|
|
53
|
+
checks.push(await inquiryCheck(resolvedRoot, counterIds));
|
|
54
|
+
return { root: resolvedRoot, workspace, checks };
|
|
55
|
+
}
|
|
56
|
+
export function formatDoctorReport(report) {
|
|
57
|
+
const lines = [
|
|
58
|
+
"Monban doctor",
|
|
59
|
+
"",
|
|
60
|
+
`Project root: ${report.root}`,
|
|
61
|
+
`Workspace: ${report.workspace}`,
|
|
62
|
+
"",
|
|
63
|
+
"Checks:",
|
|
64
|
+
];
|
|
65
|
+
for (const check of report.checks) {
|
|
66
|
+
lines.push(` [${check.status}] ${check.title}`);
|
|
67
|
+
if (check.detail)
|
|
68
|
+
lines.push(` ${check.detail}`);
|
|
69
|
+
if (check.next)
|
|
70
|
+
lines.push(` Next: ${check.next}`);
|
|
71
|
+
}
|
|
72
|
+
const nextSteps = report.checks
|
|
73
|
+
.map((check) => check.next)
|
|
74
|
+
.filter((next) => Boolean(next));
|
|
75
|
+
if (nextSteps.length > 0) {
|
|
76
|
+
lines.push("", "Suggested next steps:");
|
|
77
|
+
for (const next of [...new Set(nextSteps)]) {
|
|
78
|
+
lines.push(` - ${next}`);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return lines.join("\n");
|
|
82
|
+
}
|
|
83
|
+
async function remoteCountersCheck(localCounterIds, fetchCounters = () => apiGet("/api/cli/counters")) {
|
|
84
|
+
let remote;
|
|
85
|
+
try {
|
|
86
|
+
remote = await fetchCounters();
|
|
87
|
+
}
|
|
88
|
+
catch (error) {
|
|
89
|
+
const message = error instanceof Error ? error.message : "remote counter check failed";
|
|
90
|
+
return {
|
|
91
|
+
status: "warn",
|
|
92
|
+
title: "remote counters",
|
|
93
|
+
detail: `Unable to check counters on Monban: ${message}`,
|
|
94
|
+
next: "Run: monban login, then retry: monban doctor --online",
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
const remoteIds = new Set(remote.counters.map((counter) => counter.id));
|
|
98
|
+
const missingRemote = localCounterIds.filter((counterId) => !remoteIds.has(counterId));
|
|
99
|
+
if (localCounterIds.length === 0) {
|
|
100
|
+
if (remote.counters.length === 0) {
|
|
101
|
+
return {
|
|
102
|
+
status: "ok",
|
|
103
|
+
title: "remote counters",
|
|
104
|
+
detail: "No counters found locally or on Monban.",
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
return {
|
|
108
|
+
status: "warn",
|
|
109
|
+
title: "remote counters",
|
|
110
|
+
detail: `No local counters. Monban account has ${remote.counters.length} counter(s).`,
|
|
111
|
+
next: "Run: monban pull counter <counterId>, or create a new one with: monban create counter <counterId>",
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
if (missingRemote.length === 0) {
|
|
115
|
+
return {
|
|
116
|
+
status: "ok",
|
|
117
|
+
title: "remote counters",
|
|
118
|
+
detail: `Local counters exist on Monban: ${localCounterIds.join(", ")}`,
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
return {
|
|
122
|
+
status: "warn",
|
|
123
|
+
title: "remote counters",
|
|
124
|
+
detail: `Local counters not found on Monban: ${missingRemote.join(", ")}`,
|
|
125
|
+
next: "Remove stale local counter files, or recreate the counter with: monban create counter <counterId>",
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
async function counterFilesCheck(root, counterIds) {
|
|
129
|
+
if (counterIds.length === 0) {
|
|
130
|
+
return {
|
|
131
|
+
status: "warn",
|
|
132
|
+
title: "counter files",
|
|
133
|
+
detail: "No local counters found under monban/counters.",
|
|
134
|
+
next: "Run: monban create counter <counterId>",
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
const incomplete = [];
|
|
138
|
+
for (const counterId of counterIds) {
|
|
139
|
+
const missing = [];
|
|
140
|
+
for (const fileName of COUNTER_FILE_NAMES) {
|
|
141
|
+
if (!(await pathExists(path.join(counterDir(counterId, root), fileName)))) {
|
|
142
|
+
missing.push(fileName);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
if (missing.length > 0) {
|
|
146
|
+
incomplete.push(`${counterId}: missing ${missing.join(", ")}`);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
if (incomplete.length > 0) {
|
|
150
|
+
return {
|
|
151
|
+
status: "fail",
|
|
152
|
+
title: "counter files",
|
|
153
|
+
detail: incomplete.join("; "),
|
|
154
|
+
next: "Complete the three counter files, or run: monban pull counter <counterId>",
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
return {
|
|
158
|
+
status: "ok",
|
|
159
|
+
title: "counter files",
|
|
160
|
+
detail: `Found complete local files for: ${counterIds.join(", ")}`,
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
async function embedCheck(root) {
|
|
164
|
+
const htmlFiles = await findHtmlFiles(root);
|
|
165
|
+
const embedded = [];
|
|
166
|
+
for (const file of htmlFiles) {
|
|
167
|
+
const source = await readFile(file, "utf8");
|
|
168
|
+
if (source.includes("/embed.js") && source.includes("data-counter-id=")) {
|
|
169
|
+
embedded.push(path.relative(root, file));
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
if (embedded.length > 0) {
|
|
173
|
+
return {
|
|
174
|
+
status: "ok",
|
|
175
|
+
title: "embed script",
|
|
176
|
+
detail: `Installed in: ${embedded.join(", ")}`,
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
const snippetFile = path.join(workspaceRoot(root), "embed-snippet.html");
|
|
180
|
+
if (await pathExists(snippetFile)) {
|
|
181
|
+
return {
|
|
182
|
+
status: "warn",
|
|
183
|
+
title: "embed script",
|
|
184
|
+
detail: `Snippet exists at ${snippetFile}, but no checked HTML file contains it.`,
|
|
185
|
+
next: "Run: monban install script <counterId> --file index.html",
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
return {
|
|
189
|
+
status: "warn",
|
|
190
|
+
title: "embed script",
|
|
191
|
+
detail: "No embed script found in local HTML files.",
|
|
192
|
+
next: "Run: monban install script <counterId> --file index.html",
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
async function inquiryCheck(root, counterIds) {
|
|
196
|
+
if (counterIds.length === 0) {
|
|
197
|
+
return {
|
|
198
|
+
status: "warn",
|
|
199
|
+
title: "inquiry sync",
|
|
200
|
+
detail: "No local counter exists yet.",
|
|
201
|
+
next: "Create or pull a counter, then run: monban sync inquiries <counterId>",
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
const synced = [];
|
|
205
|
+
for (const counterId of counterIds) {
|
|
206
|
+
if (await pathExists(path.join(inquiryDir(counterId, root), "status.json"))) {
|
|
207
|
+
synced.push(counterId);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
if (synced.length === 0) {
|
|
211
|
+
return {
|
|
212
|
+
status: "warn",
|
|
213
|
+
title: "inquiry sync",
|
|
214
|
+
detail: "No status.json files found under monban/inquiries.",
|
|
215
|
+
next: "Run: monban sync inquiries <counterId>",
|
|
216
|
+
};
|
|
217
|
+
}
|
|
218
|
+
return {
|
|
219
|
+
status: "ok",
|
|
220
|
+
title: "inquiry sync",
|
|
221
|
+
detail: "Found status.json for: " +
|
|
222
|
+
synced.join(", ") +
|
|
223
|
+
". messages.jsonl appears after the first synced message.",
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
async function listCounterIds(root) {
|
|
227
|
+
const countersRoot = path.join(workspaceRoot(root), "counters");
|
|
228
|
+
const entries = await readdir(countersRoot, { withFileTypes: true }).catch((error) => {
|
|
229
|
+
if (isNotFound(error))
|
|
230
|
+
return [];
|
|
231
|
+
throw error;
|
|
232
|
+
});
|
|
233
|
+
return entries
|
|
234
|
+
.filter((entry) => entry.isDirectory())
|
|
235
|
+
.map((entry) => entry.name)
|
|
236
|
+
.sort();
|
|
237
|
+
}
|
|
238
|
+
async function findHtmlFiles(root) {
|
|
239
|
+
const output = [];
|
|
240
|
+
await collectHtmlFiles(root, output, 0);
|
|
241
|
+
return output.sort();
|
|
242
|
+
}
|
|
243
|
+
async function collectHtmlFiles(dir, output, depth) {
|
|
244
|
+
if (depth > 4)
|
|
245
|
+
return;
|
|
246
|
+
const entries = await readdir(dir, { withFileTypes: true }).catch(() => []);
|
|
247
|
+
for (const entry of entries) {
|
|
248
|
+
if (entry.name === ".git" || entry.name === "node_modules" || entry.name === "monban") {
|
|
249
|
+
continue;
|
|
250
|
+
}
|
|
251
|
+
const file = path.join(dir, entry.name);
|
|
252
|
+
if (entry.isDirectory()) {
|
|
253
|
+
await collectHtmlFiles(file, output, depth + 1);
|
|
254
|
+
continue;
|
|
255
|
+
}
|
|
256
|
+
if (entry.isFile() && entry.name.toLowerCase().endsWith(".html")) {
|
|
257
|
+
output.push(file);
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
async function pathExists(file) {
|
|
262
|
+
try {
|
|
263
|
+
await access(file);
|
|
264
|
+
return true;
|
|
265
|
+
}
|
|
266
|
+
catch {
|
|
267
|
+
return false;
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
function isNotFound(error) {
|
|
271
|
+
return Boolean(error && typeof error === "object" && "code" in error && error.code === "ENOENT");
|
|
272
|
+
}
|
|
273
|
+
//# sourceMappingURL=doctor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
export const guideText = `Monban guide
|
|
2
|
+
|
|
3
|
+
Monban lets you add an AI-assisted contact window to a website with one script
|
|
4
|
+
tag. You manage each window from a local workspace so your coding agent can
|
|
5
|
+
read, edit, sync, and review the files.
|
|
6
|
+
|
|
7
|
+
Core ideas:
|
|
8
|
+
- A counter is one chat window.
|
|
9
|
+
- Bot mode starts first. It does not call an LLM and does not save chat logs.
|
|
10
|
+
- AI mode starts after the visitor signs in. AI-mode messages are saved so you
|
|
11
|
+
can sync inquiries into your local workspace.
|
|
12
|
+
- A counter is managed by three files:
|
|
13
|
+
monban/counters/{counterId}/settings.yaml
|
|
14
|
+
monban/counters/{counterId}/TRIGGERS.md
|
|
15
|
+
monban/counters/{counterId}/SYSTEM_PROMPT.md
|
|
16
|
+
- Inquiry sync writes local files:
|
|
17
|
+
monban/inquiries/{counterId}/messages.jsonl
|
|
18
|
+
monban/inquiries/{counterId}/status.json
|
|
19
|
+
monban/state.json
|
|
20
|
+
|
|
21
|
+
First-run flow:
|
|
22
|
+
If monban is not on PATH, prefix the same commands with:
|
|
23
|
+
npx --yes @monban-online/cli@latest
|
|
24
|
+
|
|
25
|
+
1. Confirm auth:
|
|
26
|
+
monban whoami
|
|
27
|
+
npx --yes @monban-online/cli@latest whoami
|
|
28
|
+
|
|
29
|
+
2. Create the local workspace:
|
|
30
|
+
monban init
|
|
31
|
+
|
|
32
|
+
3. If the counter already exists on Monban, pull its files:
|
|
33
|
+
monban pull counter <counterId>
|
|
34
|
+
|
|
35
|
+
4. If this is a new counter, create the three local counter files first, then
|
|
36
|
+
create it on Monban:
|
|
37
|
+
monban create counter <counterId>
|
|
38
|
+
|
|
39
|
+
If no local files exist yet, create counter writes starter settings.yaml,
|
|
40
|
+
TRIGGERS.md, and SYSTEM_PROMPT.md first. Review and edit those files with
|
|
41
|
+
your coding agent, then run:
|
|
42
|
+
monban push counter <counterId>
|
|
43
|
+
|
|
44
|
+
5. Install the script into a site file:
|
|
45
|
+
monban install script <counterId> --file index.html
|
|
46
|
+
|
|
47
|
+
Without --file, Monban writes a copyable snippet to:
|
|
48
|
+
monban/embed-snippet.html
|
|
49
|
+
|
|
50
|
+
6. Sync new AI-mode inquiry messages:
|
|
51
|
+
monban sync inquiries <counterId>
|
|
52
|
+
|
|
53
|
+
If there are no messages yet, status.json may exist while messages.jsonl
|
|
54
|
+
is still absent. messages.jsonl appears after the first synced message.
|
|
55
|
+
|
|
56
|
+
Useful checks:
|
|
57
|
+
- monban doctor
|
|
58
|
+
- monban doctor --online
|
|
59
|
+
- monban list counters
|
|
60
|
+
- monban status inquiry <inquiryId> resolved --counter <counterId>
|
|
61
|
+
|
|
62
|
+
Cleanup note:
|
|
63
|
+
- monban delete counter <counterId> --yes removes the counter from Monban,
|
|
64
|
+
but it keeps local files so accidental local data loss does not happen.
|
|
65
|
+
Use monban doctor --online to find local counters that no longer exist on
|
|
66
|
+
Monban.
|
|
67
|
+
|
|
68
|
+
Production runtime:
|
|
69
|
+
- Counter page: https://app.monban.online/counters/{counterId}
|
|
70
|
+
- Embed page: https://app.monban.online/embed/{counterId}
|
|
71
|
+
- Script: https://app.monban.online/embed.js
|
|
72
|
+
`;
|
|
73
|
+
export function registerGuideCommand(program) {
|
|
74
|
+
program
|
|
75
|
+
.command("guide")
|
|
76
|
+
.description("Show the Monban onboarding guide for installers and agents.")
|
|
77
|
+
.action(() => {
|
|
78
|
+
console.log(guideText.trimEnd());
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=guide.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guide.js","sourceRoot":"","sources":["../../src/commands/guide.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,SAAS,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuExB,CAAC;AAEF,MAAM,UAAU,oBAAoB,CAAC,OAAgB;IACnD,OAAO;SACJ,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,6DAA6D,CAAC;SAC1E,MAAM,CAAC,GAAG,EAAE;QACX,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-counters.js","sourceRoot":"","sources":["../../src/commands/list-counters.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"list-counters.js","sourceRoot":"","sources":["../../src/commands/list-counters.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,MAAM,UAAU,2BAA2B,CAAC,OAAgB;IAC1D,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,wBAAwB,CAAC,CAAC;IAC3E,IAAI;SACD,OAAO,CAAC,UAAU,CAAC;SACnB,WAAW,CAAC,4CAA4C,CAAC;SACzD,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,MAAM,GAAG,MAAM,MAAM,CAA0B,mBAAmB,CAAC,CAAC;QAC1E,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YAC5B,OAAO;QACT,CAAC;QACD,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACtC,OAAO,CAAC,GAAG,CACT,GAAG,OAAO,CAAC,EAAE,KAAK,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,gBAAgB,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAC7G,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pull-counter.js","sourceRoot":"","sources":["../../src/commands/pull-counter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pull-counter.js","sourceRoot":"","sources":["../../src/commands/pull-counter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAElE,MAAM,UAAU,0BAA0B,CAAC,OAAgB;IACzD,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,wBAAwB,CAAC,CAAC;IAC3E,IAAI;SACD,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,wDAAwD,CAAC;SACrE,QAAQ,CAAC,aAAa,CAAC;SACvB,MAAM,CAAC,eAAe,EAAE,cAAc,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;SACtD,MAAM,CAAC,KAAK,EAAE,SAAiB,EAAE,OAAyB,EAAE,EAAE;QAC7D,MAAM,KAAK,GAAG,MAAM,MAAM,CACxB,qBAAqB,kBAAkB,CAAC,SAAS,CAAC,QAAQ,CAC3D,CAAC;QACF,MAAM,iBAAiB,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QACxD,OAAO,CAAC,GAAG,CAAC,UAAU,SAAS,EAAE,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"push-counter.js","sourceRoot":"","sources":["../../src/commands/push-counter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"push-counter.js","sourceRoot":"","sources":["../../src/commands/push-counter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEjE,MAAM,UAAU,0BAA0B,CAAC,OAAgB;IACzD,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,4BAA4B,CAAC,CAAC;IAC/E,IAAI;SACD,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,+CAA+C,CAAC;SAC5D,QAAQ,CAAC,aAAa,CAAC;SACvB,MAAM,CAAC,eAAe,EAAE,cAAc,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;SACtD,MAAM,CAAC,KAAK,EAAE,SAAiB,EAAE,OAAyB,EAAE,EAAE;QAC7D,MAAM,KAAK,GAAG,MAAM,gBAAgB,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QAC9D,MAAM,MAAM,CACV,qBAAqB,kBAAkB,CAAC,SAAS,CAAC,QAAQ,EAC1D,KAAK,CACN,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,UAAU,SAAS,EAAE,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync-inquiries.js","sourceRoot":"","sources":["../../src/commands/sync-inquiries.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sync-inquiries.js","sourceRoot":"","sources":["../../src/commands/sync-inquiries.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,MAAM,UAAU,4BAA4B,CAAC,OAAgB;IAC3D,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC;IACtE,IAAI;SACD,OAAO,CAAC,WAAW,CAAC;SACpB,WAAW,CAAC,wDAAwD,CAAC;SACrE,QAAQ,CAAC,aAAa,CAAC;SACvB,MAAM,CAAC,eAAe,EAAE,cAAc,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;SACtD,MAAM,CAAC,kBAAkB,EAAE,uBAAuB,EAAE,KAAK,CAAC;SAC1D,MAAM,CACL,KAAK,EACH,SAAiB,EACjB,OAAwC,EACxC,EAAE;QACF,MAAM,KAAK,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACrD,MAAM,cAAc,GAClB,KAAK,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,cAAc,IAAI,SAAS,CAAC;QAC3D,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QAC7D,IAAI,cAAc;YAAE,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC;QAEjE,MAAM,MAAM,GAAG,MAAM,MAAM,CACzB,qBAAqB,kBAAkB,CAAC,SAAS,CAAC,qBAAqB,MAAM,EAAE,CAChF,CAAC;QACF,MAAM,KAAK,GAAG,MAAM,qBAAqB,CAAC;YACxC,SAAS;YACT,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,kBAAkB,EAAE,MAAM,CAAC,kBAAkB;YAC7C,IAAI,EAAE,OAAO,CAAC,IAAI;SACnB,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,UAAU,KAAK,CAAC,QAAQ,qBAAqB,SAAS,EAAE,CAAC,CAAC;IACxE,CAAC,CACF,CAAC;AACN,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"whoami.js","sourceRoot":"","sources":["../../src/commands/whoami.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"whoami.js","sourceRoot":"","sources":["../../src/commands/whoami.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,MAAM,UAAU,qBAAqB,CAAC,OAAgB;IACpD,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,8CAA8C,CAAC;SAC3D,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,MAAM,GAAG,MAAM,MAAM,CAAoB,iBAAiB,CAAC,CAAC;QAClE,OAAO,CAAC,GAAG,CAAC,WAAW,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,SAAS,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,aAAa,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;AACP,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { Command } from "commander";
|
|
3
|
+
import { registerDoctorCommand } from "./commands/doctor.js";
|
|
4
|
+
import { registerGuideCommand } from "./commands/guide.js";
|
|
3
5
|
import { registerInitCommand } from "./commands/init.js";
|
|
4
6
|
import { registerInstallScriptCommand } from "./commands/install-script.js";
|
|
5
7
|
import { registerListCountersCommand } from "./commands/list-counters.js";
|
|
@@ -16,7 +18,9 @@ const program = new Command();
|
|
|
16
18
|
program
|
|
17
19
|
.name("monban")
|
|
18
20
|
.description("Manage monban counters from a local workspace.")
|
|
19
|
-
.version("0.1.
|
|
21
|
+
.version("0.1.4");
|
|
22
|
+
registerGuideCommand(program);
|
|
23
|
+
registerDoctorCommand(program);
|
|
20
24
|
registerLoginCommand(program);
|
|
21
25
|
registerLogoutCommand(program);
|
|
22
26
|
registerWhoamiCommand(program);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,4BAA4B,EAAE,MAAM,8BAA8B,CAAC;AAC5E,OAAO,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAC1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,4BAA4B,EAAE,MAAM,8BAA8B,CAAC;AAC5E,OAAO,EAAE,4BAA4B,EAAE,MAAM,8BAA8B,CAAC;AAC5E,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAE,4BAA4B,EAAE,MAAM,8BAA8B,CAAC;AAC5E,OAAO,EAAE,4BAA4B,EAAE,MAAM,8BAA8B,CAAC;AAC5E,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,QAAQ,CAAC;KACd,WAAW,CAAC,gDAAgD,CAAC;KAC7D,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,2BAA2B,CAAC,OAAO,CAAC,CAAC;AACrC,4BAA4B,CAAC,OAAO,CAAC,CAAC;AACtC,4BAA4B,CAAC,OAAO,CAAC,CAAC;AACtC,0BAA0B,CAAC,OAAO,CAAC,CAAC;AACpC,0BAA0B,CAAC,OAAO,CAAC,CAAC;AACpC,4BAA4B,CAAC,OAAO,CAAC,CAAC;AACtC,4BAA4B,CAAC,OAAO,CAAC,CAAC;AACtC,4BAA4B,CAAC,OAAO,CAAC,CAAC;AAEtC,OAAO,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,CAAU,EAAE,EAAE;IACxC,MAAM,OAAO,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC;IAClE,OAAO,CAAC,KAAK,CAAC,WAAW,OAAO,EAAE,CAAC,CAAC;IACpC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,4BAA4B,EAAE,MAAM,8BAA8B,CAAC;AAC5E,OAAO,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAC1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,4BAA4B,EAAE,MAAM,8BAA8B,CAAC;AAC5E,OAAO,EAAE,4BAA4B,EAAE,MAAM,8BAA8B,CAAC;AAC5E,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAE,4BAA4B,EAAE,MAAM,8BAA8B,CAAC;AAC5E,OAAO,EAAE,4BAA4B,EAAE,MAAM,8BAA8B,CAAC;AAC5E,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,QAAQ,CAAC;KACd,WAAW,CAAC,gDAAgD,CAAC;KAC7D,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,2BAA2B,CAAC,OAAO,CAAC,CAAC;AACrC,4BAA4B,CAAC,OAAO,CAAC,CAAC;AACtC,4BAA4B,CAAC,OAAO,CAAC,CAAC;AACtC,0BAA0B,CAAC,OAAO,CAAC,CAAC;AACpC,0BAA0B,CAAC,OAAO,CAAC,CAAC;AACpC,4BAA4B,CAAC,OAAO,CAAC,CAAC;AACtC,4BAA4B,CAAC,OAAO,CAAC,CAAC;AACtC,4BAA4B,CAAC,OAAO,CAAC,CAAC;AAEtC,OAAO,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,CAAU,EAAE,EAAE;IACxC,MAAM,OAAO,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC;IAClE,OAAO,CAAC,KAAK,CAAC,WAAW,OAAO,EAAE,CAAC,CAAC;IACpC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC,CAAC,CAAC"}
|
|
@@ -1,6 +1,41 @@
|
|
|
1
1
|
import { mkdir, readFile, writeFile } from "node:fs/promises";
|
|
2
2
|
import path from "node:path";
|
|
3
|
-
import { counterDir } from "./layout.js";
|
|
3
|
+
import { counterDir, isNotFound } from "./layout.js";
|
|
4
|
+
const COUNTER_FILE_NAMES = [
|
|
5
|
+
"settings.yaml",
|
|
6
|
+
"TRIGGERS.md",
|
|
7
|
+
"SYSTEM_PROMPT.md",
|
|
8
|
+
];
|
|
9
|
+
export function starterCounterFiles(counterId) {
|
|
10
|
+
const displayName = counterId
|
|
11
|
+
.split("-")
|
|
12
|
+
.filter(Boolean)
|
|
13
|
+
.map((part) => part.charAt(0).toUpperCase() + part.slice(1))
|
|
14
|
+
.join(" ");
|
|
15
|
+
return {
|
|
16
|
+
settingsYaml: `name: ${displayName || counterId}\n` +
|
|
17
|
+
"model: meta-llama/llama-3.3-70b-instruct:free\n" +
|
|
18
|
+
"monthly_token_limit: 100000\n" +
|
|
19
|
+
"per_conversation_token_limit: 8000\n",
|
|
20
|
+
triggersMd: "# start\n" +
|
|
21
|
+
"Thanks for visiting. Choose how you would like to continue.\n\n" +
|
|
22
|
+
"<Choices>\n" +
|
|
23
|
+
' <Choice next="request_ai_chat" label="Ask AI" description="Continue in AI mode after Google OAuth." />\n' +
|
|
24
|
+
' <Choice next="end" label="Close" description="End this chat for now." />\n' +
|
|
25
|
+
"</Choices>\n\n" +
|
|
26
|
+
"# blocklist_match\n" +
|
|
27
|
+
"This contact window is not available right now.\n\n" +
|
|
28
|
+
"# flagged_match\n" +
|
|
29
|
+
"This contact window is temporarily unavailable.\n\n" +
|
|
30
|
+
"# monthly_token_limit_exceeded\n" +
|
|
31
|
+
"This contact window has reached its monthly AI usage limit.\n\n" +
|
|
32
|
+
"# per_conversation_token_limit_exceeded\n" +
|
|
33
|
+
"This conversation has reached its AI usage limit.\n",
|
|
34
|
+
systemPromptMd: "You are a helpful assistant for this website. Answer concisely, " +
|
|
35
|
+
"ask clarifying questions when needed, and avoid making claims that " +
|
|
36
|
+
"are not supported by the site owner.\n",
|
|
37
|
+
};
|
|
38
|
+
}
|
|
4
39
|
export async function writeCounterFiles(counterId, files, root = process.cwd()) {
|
|
5
40
|
const dir = counterDir(counterId, root);
|
|
6
41
|
await mkdir(dir, { recursive: true });
|
|
@@ -10,6 +45,27 @@ export async function writeCounterFiles(counterId, files, root = process.cwd())
|
|
|
10
45
|
writeFile(path.join(dir, "SYSTEM_PROMPT.md"), files.systemPromptMd),
|
|
11
46
|
]);
|
|
12
47
|
}
|
|
48
|
+
export async function ensureCounterFiles(counterId, root = process.cwd()) {
|
|
49
|
+
const dir = counterDir(counterId, root);
|
|
50
|
+
const existing = await Promise.all(COUNTER_FILE_NAMES.map(async (fileName) => ({
|
|
51
|
+
fileName,
|
|
52
|
+
exists: await fileExists(path.join(dir, fileName)),
|
|
53
|
+
})));
|
|
54
|
+
const existingCount = existing.filter((entry) => entry.exists).length;
|
|
55
|
+
if (existingCount === 0) {
|
|
56
|
+
const files = starterCounterFiles(counterId);
|
|
57
|
+
await writeCounterFiles(counterId, files, root);
|
|
58
|
+
return { files, created: true };
|
|
59
|
+
}
|
|
60
|
+
if (existingCount !== COUNTER_FILE_NAMES.length) {
|
|
61
|
+
const missing = existing
|
|
62
|
+
.filter((entry) => !entry.exists)
|
|
63
|
+
.map((entry) => entry.fileName)
|
|
64
|
+
.join(", ");
|
|
65
|
+
throw new Error(`counter files for ${counterId} are incomplete. Missing: ${missing}`);
|
|
66
|
+
}
|
|
67
|
+
return { files: await readCounterFiles(counterId, root), created: false };
|
|
68
|
+
}
|
|
13
69
|
export async function readCounterFiles(counterId, root = process.cwd()) {
|
|
14
70
|
const dir = counterDir(counterId, root);
|
|
15
71
|
const [settingsYaml, triggersMd, systemPromptMd] = await Promise.all([
|
|
@@ -19,4 +75,15 @@ export async function readCounterFiles(counterId, root = process.cwd()) {
|
|
|
19
75
|
]);
|
|
20
76
|
return { settingsYaml, triggersMd, systemPromptMd };
|
|
21
77
|
}
|
|
78
|
+
async function fileExists(file) {
|
|
79
|
+
try {
|
|
80
|
+
await readFile(file, "utf8");
|
|
81
|
+
return true;
|
|
82
|
+
}
|
|
83
|
+
catch (error) {
|
|
84
|
+
if (isNotFound(error))
|
|
85
|
+
return false;
|
|
86
|
+
throw error;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
22
89
|
//# sourceMappingURL=counter-files.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"counter-files.js","sourceRoot":"","sources":["../../src/workspace/counter-files.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"counter-files.js","sourceRoot":"","sources":["../../src/workspace/counter-files.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAQrD,MAAM,kBAAkB,GAAG;IACzB,eAAe;IACf,aAAa;IACb,kBAAkB;CACV,CAAC;AAEX,MAAM,UAAU,mBAAmB,CAAC,SAAiB;IACnD,MAAM,WAAW,GAAG,SAAS;SAC1B,KAAK,CAAC,GAAG,CAAC;SACV,MAAM,CAAC,OAAO,CAAC;SACf,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SAC3D,IAAI,CAAC,GAAG,CAAC,CAAC;IAEb,OAAO;QACL,YAAY,EACV,SAAS,WAAW,IAAI,SAAS,IAAI;YACrC,iDAAiD;YACjD,+BAA+B;YAC/B,sCAAsC;QACxC,UAAU,EACR,WAAW;YACX,iEAAiE;YACjE,aAAa;YACb,4GAA4G;YAC5G,8EAA8E;YAC9E,gBAAgB;YAChB,qBAAqB;YACrB,qDAAqD;YACrD,mBAAmB;YACnB,qDAAqD;YACrD,kCAAkC;YAClC,iEAAiE;YACjE,2CAA2C;YAC3C,qDAAqD;QACvD,cAAc,EACZ,kEAAkE;YAClE,qEAAqE;YACrE,wCAAwC;KAC3C,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,SAAiB,EACjB,KAAmB,EACnB,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE;IAEpB,MAAM,GAAG,GAAG,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACxC,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtC,MAAM,OAAO,CAAC,GAAG,CAAC;QAChB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,eAAe,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC;QAC9D,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC;QAC1D,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,kBAAkB,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC;KACpE,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,SAAiB,EACjB,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE;IAEpB,MAAM,GAAG,GAAG,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACxC,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAChC,kBAAkB,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;QAC1C,QAAQ;QACR,MAAM,EAAE,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;KACnD,CAAC,CAAC,CACJ,CAAC;IACF,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;IAEtE,IAAI,aAAa,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,KAAK,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAC;QAC7C,MAAM,iBAAiB,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QAChD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAClC,CAAC;IAED,IAAI,aAAa,KAAK,kBAAkB,CAAC,MAAM,EAAE,CAAC;QAChD,MAAM,OAAO,GAAG,QAAQ;aACrB,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;aAChC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC;aAC9B,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,MAAM,IAAI,KAAK,CACb,qBAAqB,SAAS,6BAA6B,OAAO,EAAE,CACrE,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AAC5E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,SAAiB,EACjB,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE;IAEpB,MAAM,GAAG,GAAG,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACxC,MAAM,CAAC,YAAY,EAAE,UAAU,EAAE,cAAc,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACnE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,eAAe,CAAC,EAAE,MAAM,CAAC;QACjD,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,EAAE,MAAM,CAAC;QAC/C,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,kBAAkB,CAAC,EAAE,MAAM,CAAC;KACrD,CAAC,CAAC;IACH,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC;AACtD,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,IAAY;IACpC,IAAI,CAAC;QACH,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,UAAU,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QACpC,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { mkdir, readFile, writeFile } from "node:fs/promises";
|
|
1
|
+
import { appendFile, mkdir, open, readFile, writeFile } from "node:fs/promises";
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
import { inquiryDir, isNotFound, readWorkspaceState, writeWorkspaceState, } from "./layout.js";
|
|
4
4
|
export async function appendInquiryMessages(args) {
|
|
@@ -95,13 +95,29 @@ async function writeStatuses(file, statuses) {
|
|
|
95
95
|
await writeFile(file, `${JSON.stringify(statuses, null, 2)}\n`);
|
|
96
96
|
}
|
|
97
97
|
async function appendFileText(file, text) {
|
|
98
|
-
|
|
98
|
+
await mkdir(path.dirname(file), { recursive: true });
|
|
99
|
+
const separator = (await needsLeadingNewline(file)) ? "\n" : "";
|
|
100
|
+
await appendFile(file, `${separator}${text}`);
|
|
101
|
+
}
|
|
102
|
+
async function needsLeadingNewline(file) {
|
|
103
|
+
let handle;
|
|
104
|
+
try {
|
|
105
|
+
handle = await open(file, "r");
|
|
106
|
+
const { size } = await handle.stat();
|
|
107
|
+
if (size === 0)
|
|
108
|
+
return false;
|
|
109
|
+
const lastByte = Buffer.alloc(1);
|
|
110
|
+
await handle.read(lastByte, 0, 1, size - 1);
|
|
111
|
+
return lastByte[0] !== 10;
|
|
112
|
+
}
|
|
113
|
+
catch (e) {
|
|
99
114
|
if (isNotFound(e))
|
|
100
|
-
return
|
|
115
|
+
return false;
|
|
101
116
|
throw e;
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
|
|
117
|
+
}
|
|
118
|
+
finally {
|
|
119
|
+
await handle?.close();
|
|
120
|
+
}
|
|
105
121
|
}
|
|
106
122
|
async function counterIdsWithStatusForInquiry(root, inquiryId) {
|
|
107
123
|
const inquiriesRoot = path.join(root, "monban", "inquiries");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inquiry-store.js","sourceRoot":"","sources":["../../src/workspace/inquiry-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"inquiry-store.js","sourceRoot":"","sources":["../../src/workspace/inquiry-store.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@monban-online/cli",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.4",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"bin": {
|
|
6
6
|
"monban": "dist/index.js"
|
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
"commander": "^14.0.2"
|
|
18
18
|
},
|
|
19
19
|
"devDependencies": {
|
|
20
|
+
"@monban/api-contracts": "workspace:*",
|
|
20
21
|
"@types/node": "^20",
|
|
21
22
|
"tsx": "^4.21.0",
|
|
22
23
|
"typescript": "^5"
|