@todoforai/cli 0.1.29 → 0.1.30
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/todoforai-cli.js +24 -45
- package/package.json +1 -3
package/dist/todoforai-cli.js
CHANGED
|
@@ -44221,7 +44221,7 @@ import { parseArgs } from "util";
|
|
|
44221
44221
|
// package.json
|
|
44222
44222
|
var package_default = {
|
|
44223
44223
|
name: "@todoforai/cli",
|
|
44224
|
-
version: "0.1.
|
|
44224
|
+
version: "0.1.30",
|
|
44225
44225
|
type: "module",
|
|
44226
44226
|
bin: {
|
|
44227
44227
|
"todoforai-cli": "bin/todoforai-cli.js",
|
|
@@ -44239,8 +44239,6 @@ var package_default = {
|
|
|
44239
44239
|
dev: "bun run src/index.ts"
|
|
44240
44240
|
},
|
|
44241
44241
|
dependencies: {
|
|
44242
|
-
"@shared/api": "file:../packages/shared-api",
|
|
44243
|
-
"@shared/credentials": "file:../packages/shared-credentials",
|
|
44244
44242
|
"@todoforai/update-notifier": "^0.1.0",
|
|
44245
44243
|
"cli-highlight": "^2.1.11",
|
|
44246
44244
|
"diff-match-patch": "^1.0.5",
|
|
@@ -44256,7 +44254,7 @@ var package_default = {
|
|
|
44256
44254
|
var DEFAULT_API_URL = "https://api.todofor.ai";
|
|
44257
44255
|
var VERSION = package_default.version;
|
|
44258
44256
|
function getEnv(name) {
|
|
44259
|
-
return
|
|
44257
|
+
return process.env[`TODOFORAI_${name}`] || process.env[`TODO4AI_${name}`] || "";
|
|
44260
44258
|
}
|
|
44261
44259
|
function printUsage() {
|
|
44262
44260
|
process.stderr.write(`
|
|
@@ -44919,29 +44917,20 @@ async function autoCreateAgent(api, resolvedPath) {
|
|
|
44919
44917
|
}
|
|
44920
44918
|
|
|
44921
44919
|
// src/config.ts
|
|
44922
|
-
import { existsSync, mkdirSync as mkdirSync2, readFileSync as readFileSync2,
|
|
44920
|
+
import { existsSync, mkdirSync as mkdirSync2, readFileSync as readFileSync2, writeFileSync as writeFileSync2 } from "fs";
|
|
44923
44921
|
import { dirname as dirname2, join as join2, resolve as resolve2 } from "path";
|
|
44924
44922
|
import { homedir as homedir2, platform as platform2 } from "os";
|
|
44925
|
-
function getConfigBase() {
|
|
44926
|
-
const sys = platform2();
|
|
44927
|
-
if (sys === "win32")
|
|
44928
|
-
return process.env.APPDATA || join2(homedir2(), "AppData", "Roaming");
|
|
44929
|
-
if (sys === "darwin")
|
|
44930
|
-
return join2(homedir2(), "Library", "Application Support");
|
|
44931
|
-
return process.env.XDG_CONFIG_HOME || join2(homedir2(), ".config");
|
|
44932
|
-
}
|
|
44933
44923
|
function getConfigDir() {
|
|
44934
|
-
const
|
|
44935
|
-
|
|
44936
|
-
|
|
44937
|
-
|
|
44938
|
-
try {
|
|
44939
|
-
renameSync(legacy, dir);
|
|
44940
|
-
} catch {
|
|
44941
|
-
return legacy;
|
|
44942
|
-
}
|
|
44924
|
+
const sys = platform2();
|
|
44925
|
+
if (sys === "win32") {
|
|
44926
|
+
const base = process.env.APPDATA || join2(homedir2(), "AppData", "Roaming");
|
|
44927
|
+
return join2(base, "todoai-cli");
|
|
44943
44928
|
}
|
|
44944
|
-
|
|
44929
|
+
if (sys === "darwin") {
|
|
44930
|
+
return join2(homedir2(), "Library", "Application Support", "todoai-cli");
|
|
44931
|
+
}
|
|
44932
|
+
const xdg = process.env.XDG_CONFIG_HOME || join2(homedir2(), ".config");
|
|
44933
|
+
return join2(xdg, "todoai-cli");
|
|
44945
44934
|
}
|
|
44946
44935
|
function defaultScope() {
|
|
44947
44936
|
return {
|
|
@@ -45584,16 +45573,7 @@ function selectProject(projects, defaultId, setDefault) {
|
|
|
45584
45573
|
return Promise.resolve({ id: defaultId, name });
|
|
45585
45574
|
}
|
|
45586
45575
|
}
|
|
45587
|
-
const accountDefault = projects.find((p) => p?.project?.isDefault) || projects[0];
|
|
45588
|
-
if (!process.stdin.isTTY) {
|
|
45589
|
-
const id = getItemId(accountDefault);
|
|
45590
|
-
const name = getDisplayName(accountDefault);
|
|
45591
|
-
process.stderr.write(`Using account default project: ${name}
|
|
45592
|
-
`);
|
|
45593
|
-
return Promise.resolve({ id, name });
|
|
45594
|
-
}
|
|
45595
45576
|
return (async () => {
|
|
45596
|
-
const defIdx = projects.indexOf(accountDefault);
|
|
45597
45577
|
process.stderr.write(`
|
|
45598
45578
|
Please choose a project:
|
|
45599
45579
|
|
|
@@ -45601,7 +45581,7 @@ Please choose a project:
|
|
|
45601
45581
|
for (let i = 0;i < projects.length; i++) {
|
|
45602
45582
|
const name = getDisplayName(projects[i]);
|
|
45603
45583
|
const id = getItemId(projects[i]);
|
|
45604
|
-
process.stderr.write(` [${i + 1}] ${name}
|
|
45584
|
+
process.stderr.write(` [${i + 1}] ${name}
|
|
45605
45585
|
`);
|
|
45606
45586
|
if (id && id !== name)
|
|
45607
45587
|
process.stderr.write(` ${id}
|
|
@@ -45610,8 +45590,8 @@ Please choose a project:
|
|
|
45610
45590
|
process.stderr.write(`
|
|
45611
45591
|
`);
|
|
45612
45592
|
while (true) {
|
|
45613
|
-
const choice = await terminalLine(
|
|
45614
|
-
const idx =
|
|
45593
|
+
const choice = await terminalLine("Please enter your numeric choice: ");
|
|
45594
|
+
const idx = parseInt(choice, 10) - 1;
|
|
45615
45595
|
if (idx >= 0 && idx < projects.length) {
|
|
45616
45596
|
const id = getItemId(projects[idx]);
|
|
45617
45597
|
const name = getDisplayName(projects[idx]);
|
|
@@ -46944,7 +46924,7 @@ Cancelled by user (Ctrl+C)
|
|
|
46944
46924
|
`);
|
|
46945
46925
|
process.exit(2);
|
|
46946
46926
|
}
|
|
46947
|
-
let projectId2 = args.project ||
|
|
46927
|
+
let projectId2 = args.project || cfgScope.data.default_project_id;
|
|
46948
46928
|
if (!projectId2) {
|
|
46949
46929
|
const projects2 = await api.listProjects();
|
|
46950
46930
|
projectId2 = projects2.find((p) => p.project?.isDefault)?.project?.id || projects2[0]?.project?.id;
|
|
@@ -46979,7 +46959,7 @@ Cancelled by user (Ctrl+C)
|
|
|
46979
46959
|
return;
|
|
46980
46960
|
}
|
|
46981
46961
|
if (positionals[0] === "claim" && positionals[1] === "mint") {
|
|
46982
|
-
let seedProjectId = args.seed || args.project ||
|
|
46962
|
+
let seedProjectId = args.seed || args.project || cfgScope.data.default_project_id;
|
|
46983
46963
|
if (!seedProjectId) {
|
|
46984
46964
|
const projects2 = await api.listProjects();
|
|
46985
46965
|
seedProjectId = projects2.find((p) => p.project?.isDefault)?.project?.id || projects2[0]?.project?.id;
|
|
@@ -47021,7 +47001,7 @@ Cancelled by user (Ctrl+C)
|
|
|
47021
47001
|
return;
|
|
47022
47002
|
}
|
|
47023
47003
|
if (positionals[0] === "next") {
|
|
47024
|
-
let projectId2 = args.project ||
|
|
47004
|
+
let projectId2 = args.project || cfgScope.data.default_project_id;
|
|
47025
47005
|
if (!projectId2) {
|
|
47026
47006
|
const projects2 = await api.listProjects();
|
|
47027
47007
|
projectId2 = projects2.find((p) => p.project?.isDefault)?.project?.id || projects2[0]?.project?.id;
|
|
@@ -47071,7 +47051,7 @@ Cancelled by user (Ctrl+C)
|
|
|
47071
47051
|
return;
|
|
47072
47052
|
}
|
|
47073
47053
|
if (positionals[0] === "list" || positionals[0] === "ls") {
|
|
47074
|
-
let defaultProjectId = args.project ||
|
|
47054
|
+
let defaultProjectId = args.project || cfgScope.data.default_project_id;
|
|
47075
47055
|
if (!defaultProjectId) {
|
|
47076
47056
|
const projects2 = await api.listProjects();
|
|
47077
47057
|
defaultProjectId = projects2.find((p) => p.project?.isDefault)?.project?.id || projects2[0]?.project?.id;
|
|
@@ -47126,7 +47106,7 @@ Cancelled by user (Ctrl+C)
|
|
|
47126
47106
|
process.stderr.write(`${DIM}${spec.description}${RESET}
|
|
47127
47107
|
`);
|
|
47128
47108
|
const projects2 = await api.listProjects();
|
|
47129
|
-
let projectId2 = args.project
|
|
47109
|
+
let projectId2 = args.project;
|
|
47130
47110
|
if (!projectId2) {
|
|
47131
47111
|
const cached = cfgScope.data.default_project_id;
|
|
47132
47112
|
projectId2 = (cached && projects2.some((p) => getItemId(p) === cached) ? cached : null) || projects2.find((p) => p.project?.isDefault)?.project?.id || projects2[0]?.project?.id;
|
|
@@ -47286,8 +47266,7 @@ Resumed: ${CYAN}${getFrontendUrl(apiUrl, todoId)}${RESET}
|
|
|
47286
47266
|
} else {
|
|
47287
47267
|
content = await readStdin();
|
|
47288
47268
|
}
|
|
47289
|
-
const
|
|
47290
|
-
const hasProject = args.project || envProjectId || cfgScope.data.default_project_id;
|
|
47269
|
+
const hasProject = args.project || cfgScope.data.default_project_id;
|
|
47291
47270
|
const storedAgent = cfgScope.data.default_agent_settings;
|
|
47292
47271
|
const hasAgent = preMatchedAgent || storedAgent?.id && !args.agent;
|
|
47293
47272
|
let projects = null;
|
|
@@ -47298,8 +47277,8 @@ Resumed: ${CYAN}${getFrontendUrl(apiUrl, todoId)}${RESET}
|
|
|
47298
47277
|
}
|
|
47299
47278
|
let projectId;
|
|
47300
47279
|
let projectName;
|
|
47301
|
-
if (args.project
|
|
47302
|
-
projectId = args.project
|
|
47280
|
+
if (args.project) {
|
|
47281
|
+
projectId = args.project;
|
|
47303
47282
|
projectName = projectId;
|
|
47304
47283
|
if (projects) {
|
|
47305
47284
|
const match = projects.find((p) => getItemId(p) === projectId);
|
|
@@ -47341,7 +47320,7 @@ Resumed: ${CYAN}${getFrontendUrl(apiUrl, todoId)}${RESET}
|
|
|
47341
47320
|
try {
|
|
47342
47321
|
todo = await api.addMessage(projectId, content, agent, undefined, undefined, undefined, groupTag || undefined, groupName);
|
|
47343
47322
|
} catch (e) {
|
|
47344
|
-
if (!args.project &&
|
|
47323
|
+
if (!args.project && cfgScope.data.default_project_id === projectId && /failed: 403/.test(e.message || "")) {
|
|
47345
47324
|
cfgScope.clearDefaultProject();
|
|
47346
47325
|
process.stderr.write(`${RED}Not authorized for cached default project ${projectName} (${projectId}) \u2014 cleared it. Re-run to pick a project.${RESET}
|
|
47347
47326
|
`);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@todoforai/cli",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.30",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"bin": {
|
|
6
6
|
"todoforai-cli": "bin/todoforai-cli.js",
|
|
@@ -18,8 +18,6 @@
|
|
|
18
18
|
"dev": "bun run src/index.ts"
|
|
19
19
|
},
|
|
20
20
|
"dependencies": {
|
|
21
|
-
"@shared/api": "file:../packages/shared-api",
|
|
22
|
-
"@shared/credentials": "file:../packages/shared-credentials",
|
|
23
21
|
"@todoforai/update-notifier": "^0.1.0",
|
|
24
22
|
"cli-highlight": "^2.1.11",
|
|
25
23
|
"diff-match-patch": "^1.0.5",
|