yarlo-cli 0.1.3 → 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.
@@ -1 +1 @@
1
- {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../../source/commands/agent/setup.tsx"],"names":[],"mappings":"AAOA,eAAO,MAAM,WAAW,qCAAqC,CAAC;AAwF9D,MAAM,CAAC,OAAO,UAAU,UAAU,4CA8EjC"}
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../../source/commands/agent/setup.tsx"],"names":[],"mappings":"AAOA,eAAO,MAAM,WAAW,qCAAqC,CAAC;AAyF9D,MAAM,CAAC,OAAO,UAAU,UAAU,4CA8EjC"}
@@ -44,9 +44,10 @@ yarlo show <id> --json
44
44
  # Create a task
45
45
  yarlo add --title "Task title" --status todo --priority high --json
46
46
 
47
- # Update task status
48
- yarlo status <id> <new-status>
49
- yarlo done <id>
47
+ # Set a field value on a task
48
+ yarlo set <id> <field> <value>
49
+ yarlo set <id> status done
50
+ yarlo set <id> priority high
50
51
 
51
52
  # View config
52
53
  yarlo config --json
@@ -87,8 +88,8 @@ Task description and notes here.
87
88
 
88
89
  1. Check existing tasks: \`yarlo list --json\`
89
90
  2. Pick a task or create one: \`yarlo add --title "..." --json\`
90
- 3. Start working: \`yarlo status <id> in_progress\`
91
- 4. Complete: \`yarlo done <id>\`
91
+ 3. Start working: \`yarlo set <id> status in_progress\`
92
+ 4. Complete: \`yarlo set <id> status done\`
92
93
  `;
93
94
  }
94
95
  export default function AgentSetup() {
@@ -1 +1 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../source/commands/agent/setup.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../source/commands/agent/setup.tsx"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import zod from "zod";
2
2
  export declare const description = "Edit a task in your editor";
3
- export declare const args: zod.ZodTuple<[zod.ZodString], null>;
3
+ export declare const args: zod.ZodTuple<[zod.ZodDefault<zod.ZodString>], null>;
4
4
  export declare const options: zod.ZodObject<{
5
5
  editor: zod.ZodOptional<zod.ZodString>;
6
6
  }, "strip", zod.ZodTypeAny, {
@@ -1 +1 @@
1
- {"version":3,"file":"edit.d.ts","sourceRoot":"","sources":["../../source/commands/edit.tsx"],"names":[],"mappings":"AAEA,OAAO,GAAG,MAAM,KAAK,CAAC;AAKtB,eAAO,MAAM,WAAW,+BAA+B,CAAC;AAExD,eAAO,MAAM,IAAI,qCAEf,CAAC;AAEH,eAAO,MAAM,OAAO;;;;;;EAKlB,CAAC;AAEH,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;IAC7B,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;CACpC,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,KAAK,2CAyChE"}
1
+ {"version":3,"file":"edit.d.ts","sourceRoot":"","sources":["../../source/commands/edit.tsx"],"names":[],"mappings":"AAGA,OAAO,GAAG,MAAM,KAAK,CAAC;AAMtB,eAAO,MAAM,WAAW,+BAA+B,CAAC;AAExD,eAAO,MAAM,IAAI,qDAEf,CAAC;AAEH,eAAO,MAAM,OAAO;;;;;;EAKlB,CAAC;AAEH,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;IAC7B,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;CACpC,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,KAAK,2CA0FhE"}
@@ -1,13 +1,14 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import React from "react";
3
- import { Text } from "ink";
3
+ import { Text, Box } from "ink";
4
+ import { Select } from "@inkjs/ui";
4
5
  import zod from "zod";
5
6
  import { argument, option } from "pastel";
6
7
  import { spawn } from "node:child_process";
7
- import { loadConfig, getTask } from "yarlo-core";
8
+ import { loadConfig, getTask, listTasks } from "yarlo-core";
8
9
  export const description = "Edit a task in your editor";
9
10
  export const args = zod.tuple([
10
- zod.string().describe(argument({ name: "id", description: "Task ID or prefix" })),
11
+ zod.string().default("").describe(argument({ name: "id", description: "Task ID or prefix" })),
11
12
  ]);
12
13
  export const options = zod.object({
13
14
  editor: zod
@@ -16,14 +17,44 @@ export const options = zod.object({
16
17
  .describe(option({ description: "Editor to use (defaults to $EDITOR)", alias: "e" })),
17
18
  });
18
19
  export default function Edit({ args: [id], options: opts }) {
19
- const [status, setStatus] = React.useState("loading");
20
+ const [status, setStatus] = React.useState(id ? "loading" : "loading");
21
+ const [tasks, setTasks] = React.useState([]);
22
+ const [selectedId, setSelectedId] = React.useState(id);
20
23
  const [filePath, setFilePath] = React.useState("");
21
24
  const [error, setError] = React.useState("");
25
+ // Load tasks for interactive selection when no id provided
22
26
  React.useEffect(() => {
27
+ if (id)
28
+ return;
23
29
  (async () => {
24
30
  try {
25
31
  const { config, configDir } = await loadConfig();
26
- const task = await getTask(config, configDir, id);
32
+ const allTasks = await listTasks(config, configDir);
33
+ if (allTasks.length === 0) {
34
+ setError("No tasks found. Run `yarlo add` to create one.");
35
+ setStatus("error");
36
+ return;
37
+ }
38
+ setTasks(allTasks);
39
+ setStatus("selecting");
40
+ }
41
+ catch (err) {
42
+ setError(err instanceof Error ? err.message : String(err));
43
+ setStatus("error");
44
+ }
45
+ })();
46
+ }, []);
47
+ // Open editor when id is available
48
+ React.useEffect(() => {
49
+ const taskId = id || selectedId;
50
+ if (!taskId)
51
+ return;
52
+ if (status === "selecting")
53
+ return;
54
+ (async () => {
55
+ try {
56
+ const { config, configDir } = await loadConfig();
57
+ const task = await getTask(config, configDir, taskId);
27
58
  setFilePath(task.file_path);
28
59
  const editor = opts.editor ?? process.env.EDITOR ?? "vi";
29
60
  setStatus("editing");
@@ -45,11 +76,20 @@ export default function Edit({ args: [id], options: opts }) {
45
76
  setStatus("error");
46
77
  }
47
78
  })();
48
- }, []);
79
+ }, [selectedId]);
49
80
  if (status === "error")
50
81
  return _jsx(Text, { color: "red", children: error });
51
82
  if (status === "loading")
52
- return _jsx(Text, { children: "Loading task..." });
83
+ return _jsx(Text, { children: "Loading..." });
84
+ if (status === "selecting") {
85
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { bold: true, children: "Select a task to edit:" }), _jsx(Select, { options: tasks.map((t) => ({
86
+ label: `[${t.id}] ${t.title}`,
87
+ value: t.id,
88
+ })), onChange: (value) => {
89
+ setSelectedId(value);
90
+ setStatus("loading");
91
+ } })] }));
92
+ }
53
93
  if (status === "editing")
54
94
  return _jsxs(Text, { children: ["Editing ", filePath, "..."] });
55
95
  return (_jsxs(Text, { color: "green", children: ["Saved: ", filePath] }));
@@ -1 +1 @@
1
- {"version":3,"file":"edit.js","sourceRoot":"","sources":["../../source/commands/edit.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"edit.js","sourceRoot":"","sources":["../../source/commands/edit.tsx"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import zod from "zod";
2
2
  export declare const description = "Install a yarlo plugin";
3
- export declare const args: zod.ZodTuple<[zod.ZodString], null>;
3
+ export declare const args: zod.ZodTuple<[zod.ZodDefault<zod.ZodString>], null>;
4
4
  type Props = {
5
5
  args: zod.infer<typeof args>;
6
6
  };
@@ -1 +1 @@
1
- {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../source/commands/install.tsx"],"names":[],"mappings":"AAGA,OAAO,GAAG,MAAM,KAAK,CAAC;AAItB,eAAO,MAAM,WAAW,2BAA2B,CAAC;AAEpD,eAAO,MAAM,IAAI,qCAEf,CAAC;AAEH,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;CAC9B,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE,KAAK,2CAgD5D"}
1
+ {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../source/commands/install.tsx"],"names":[],"mappings":"AAIA,OAAO,GAAG,MAAM,KAAK,CAAC;AAItB,eAAO,MAAM,WAAW,2BAA2B,CAAC;AAEpD,eAAO,MAAM,IAAI,qDAEf,CAAC;AAEH,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;CAC9B,CAAC;AAOF,MAAM,CAAC,OAAO,UAAU,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE,KAAK,2CA+G5D"}
@@ -1,36 +1,75 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import React from "react";
3
- import { Text } from "ink";
3
+ import { Text, Box } from "ink";
4
+ import { Select } from "@inkjs/ui";
4
5
  import { execSync } from "node:child_process";
5
6
  import zod from "zod";
6
7
  import { argument } from "pastel";
7
8
  import { loadConfig, saveConfig } from "yarlo-core";
8
9
  export const description = "Install a yarlo plugin";
9
10
  export const args = zod.tuple([
10
- zod.string().describe(argument({ name: "plugin", description: "Plugin name (e.g., board)" })),
11
+ zod.string().default("").describe(argument({ name: "plugin", description: "Plugin name (e.g., board)" })),
11
12
  ]);
12
13
  export default function Install({ args: [pluginName] }) {
13
- const [status, setStatus] = React.useState("installing");
14
+ const [status, setStatus] = React.useState(pluginName ? "installing" : "loading");
15
+ const [packages, setPackages] = React.useState([]);
16
+ const [selected, setSelected] = React.useState(pluginName);
14
17
  const [error, setError] = React.useState("");
18
+ // Search npm for available plugins when no name provided
15
19
  React.useEffect(() => {
20
+ if (pluginName)
21
+ return;
22
+ (async () => {
23
+ try {
24
+ const { config } = await loadConfig();
25
+ const res = await fetch("https://registry.npmjs.org/-/v1/search?text=yarlo-plugin-&size=50");
26
+ if (!res.ok) {
27
+ setError("Failed to search npm registry. Provide the plugin name directly: yarlo install <name>");
28
+ setStatus("error");
29
+ return;
30
+ }
31
+ const data = await res.json();
32
+ const available = data.objects
33
+ .map((o) => o.package)
34
+ .filter((pkg) => pkg.name.startsWith("yarlo-plugin-"))
35
+ .filter((pkg) => {
36
+ const shortName = pkg.name.replace("yarlo-plugin-", "");
37
+ return !config.plugins.includes(shortName);
38
+ });
39
+ if (available.length === 0) {
40
+ setError("No new plugins available to install.");
41
+ setStatus("error");
42
+ return;
43
+ }
44
+ setPackages(available);
45
+ setStatus("selecting");
46
+ }
47
+ catch (err) {
48
+ setError("Failed to search npm registry. Provide the plugin name directly: yarlo install <name>");
49
+ setStatus("error");
50
+ }
51
+ })();
52
+ }, []);
53
+ // Install the selected plugin
54
+ React.useEffect(() => {
55
+ if (!selected || status === "selecting" || status === "loading")
56
+ return;
16
57
  (async () => {
17
58
  try {
18
59
  const { config, configDir, projectDir } = await loadConfig();
19
- const packageName = pluginName.startsWith("yarlo-plugin-")
20
- ? pluginName
21
- : `yarlo-plugin-${pluginName}`;
60
+ const packageName = selected.startsWith("yarlo-plugin-")
61
+ ? selected
62
+ : `yarlo-plugin-${selected}`;
22
63
  const shortName = packageName.replace("yarlo-plugin-", "");
23
64
  if (config.plugins.includes(shortName)) {
24
65
  setError(`Plugin "${shortName}" is already installed`);
25
66
  setStatus("error");
26
67
  return;
27
68
  }
28
- // Install the npm package
29
69
  execSync(`pnpm add ${packageName}`, {
30
70
  cwd: projectDir,
31
71
  stdio: "pipe",
32
72
  });
33
- // Add to config
34
73
  config.plugins.push(shortName);
35
74
  await saveConfig(config, configDir);
36
75
  setStatus("done");
@@ -40,12 +79,24 @@ export default function Install({ args: [pluginName] }) {
40
79
  setStatus("error");
41
80
  }
42
81
  })();
43
- }, []);
82
+ }, [selected]);
44
83
  if (status === "error")
45
84
  return _jsx(Text, { color: "red", children: error });
85
+ if (status === "loading")
86
+ return _jsx(Text, { children: "Searching npm for plugins..." });
87
+ if (status === "selecting") {
88
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { bold: true, children: "Select a plugin to install:" }), _jsx(Select, { options: packages.map((pkg) => ({
89
+ label: `${pkg.name.replace("yarlo-plugin-", "")} — ${pkg.description || "No description"}`,
90
+ value: pkg.name,
91
+ })), onChange: (value) => {
92
+ setSelected(value);
93
+ setStatus("installing");
94
+ } })] }));
95
+ }
46
96
  if (status === "installing") {
47
- return _jsxs(Text, { children: ["Installing yarlo-plugin-", pluginName, "..."] });
97
+ const displayName = selected.startsWith("yarlo-plugin-") ? selected : `yarlo-plugin-${selected}`;
98
+ return _jsxs(Text, { children: ["Installing ", displayName, "..."] });
48
99
  }
49
- return (_jsxs(Text, { color: "green", bold: true, children: ["Installed plugin: ", pluginName] }));
100
+ return (_jsxs(Text, { color: "green", bold: true, children: ["Installed plugin: ", selected.replace("yarlo-plugin-", "")] }));
50
101
  }
51
102
  //# sourceMappingURL=install.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"install.js","sourceRoot":"","sources":["../../source/commands/install.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,IAAI,EAAO,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEpD,MAAM,CAAC,MAAM,WAAW,GAAG,wBAAwB,CAAC;AAEpD,MAAM,CAAC,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC;IAC5B,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,2BAA2B,EAAE,CAAC,CAAC;CAC9F,CAAC,CAAC;AAMH,MAAM,CAAC,OAAO,UAAU,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC,EAAS;IAC3D,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAkC,YAAY,CAAC,CAAC;IAC1F,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAE7C,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,CAAC,KAAK,IAAI,EAAE;YACV,IAAI,CAAC;gBACH,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,MAAM,UAAU,EAAE,CAAC;gBAC7D,MAAM,WAAW,GAAG,UAAU,CAAC,UAAU,CAAC,eAAe,CAAC;oBACxD,CAAC,CAAC,UAAU;oBACZ,CAAC,CAAC,gBAAgB,UAAU,EAAE,CAAC;gBAEjC,MAAM,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;gBAE3D,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;oBACvC,QAAQ,CAAC,WAAW,SAAS,wBAAwB,CAAC,CAAC;oBACvD,SAAS,CAAC,OAAO,CAAC,CAAC;oBACnB,OAAO;gBACT,CAAC;gBAED,0BAA0B;gBAC1B,QAAQ,CAAC,YAAY,WAAW,EAAE,EAAE;oBAClC,GAAG,EAAE,UAAU;oBACf,KAAK,EAAE,MAAM;iBACd,CAAC,CAAC;gBAEH,gBAAgB;gBAChB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC/B,MAAM,UAAU,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;gBAEpC,SAAS,CAAC,MAAM,CAAC,CAAC;YACpB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,QAAQ,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC3D,SAAS,CAAC,OAAO,CAAC,CAAC;YACrB,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;IACP,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,IAAI,MAAM,KAAK,OAAO;QAAE,OAAO,KAAC,IAAI,IAAC,KAAK,EAAC,KAAK,YAAE,KAAK,GAAQ,CAAC;IAChE,IAAI,MAAM,KAAK,YAAY,EAAE,CAAC;QAC5B,OAAO,MAAC,IAAI,2CAA0B,UAAU,WAAW,CAAC;IAC9D,CAAC;IAED,OAAO,CACL,MAAC,IAAI,IAAC,KAAK,EAAC,OAAO,EAAC,IAAI,yCACH,UAAU,IACxB,CACR,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"install.js","sourceRoot":"","sources":["../../source/commands/install.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import zod from "zod";
2
+ export declare const description = "Set a field value on a task";
3
+ export declare const args: zod.ZodTuple<[zod.ZodString, zod.ZodString, zod.ZodString], null>;
4
+ export declare const options: zod.ZodObject<{
5
+ json: zod.ZodDefault<zod.ZodBoolean>;
6
+ }, "strip", zod.ZodTypeAny, {
7
+ json: boolean;
8
+ }, {
9
+ json?: boolean | undefined;
10
+ }>;
11
+ type Props = {
12
+ args: zod.infer<typeof args>;
13
+ options: zod.infer<typeof options>;
14
+ };
15
+ export default function Set({ args: [id, field, rawValue], options: opts }: Props): import("react/jsx-runtime").JSX.Element;
16
+ export {};
17
+ //# sourceMappingURL=set.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set.d.ts","sourceRoot":"","sources":["../../source/commands/set.tsx"],"names":[],"mappings":"AAEA,OAAO,GAAG,MAAM,KAAK,CAAC;AAOtB,eAAO,MAAM,WAAW,gCAAgC,CAAC;AAEzD,eAAO,MAAM,IAAI,mEAIf,CAAC;AAEH,eAAO,MAAM,OAAO;;;;;;EAKlB,CAAC;AAEH,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;IAC7B,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;CACpC,CAAC;AA4BF,MAAM,CAAC,OAAO,UAAU,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,KAAK,2CAmChF"}
@@ -0,0 +1,77 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import React from "react";
3
+ import { Text } from "ink";
4
+ import zod from "zod";
5
+ import { argument, option } from "pastel";
6
+ import { loadConfig, updateTask } from "yarlo-core";
7
+ import { isJsonMode, jsonOutput } from "../utils/output.js";
8
+ export const description = "Set a field value on a task";
9
+ export const args = zod.tuple([
10
+ zod.string().describe(argument({ name: "id", description: "Task ID or prefix" })),
11
+ zod.string().describe(argument({ name: "field", description: "Field name (e.g., status, priority)" })),
12
+ zod.string().describe(argument({ name: "value", description: "New value" })),
13
+ ]);
14
+ export const options = zod.object({
15
+ json: zod
16
+ .boolean()
17
+ .describe(option({ description: "Output as JSON" }))
18
+ .default(false),
19
+ });
20
+ function parseValue(raw, fieldDef) {
21
+ if (!fieldDef)
22
+ return raw;
23
+ switch (fieldDef.type) {
24
+ case "number": {
25
+ const n = Number(raw);
26
+ if (Number.isNaN(n))
27
+ throw new Error(`Invalid number: "${raw}"`);
28
+ return n;
29
+ }
30
+ case "boolean": {
31
+ const lower = raw.toLowerCase();
32
+ if (["true", "yes", "1"].includes(lower))
33
+ return true;
34
+ if (["false", "no", "0"].includes(lower))
35
+ return false;
36
+ throw new Error(`Invalid boolean: "${raw}" (use true/false, yes/no, or 1/0)`);
37
+ }
38
+ case "multi_select":
39
+ return raw.split(",").map((s) => s.trim()).filter(Boolean);
40
+ case "date":
41
+ case "text":
42
+ case "single_select":
43
+ case "url":
44
+ default:
45
+ return raw;
46
+ }
47
+ }
48
+ export default function Set({ args: [id, field, rawValue], options: opts }) {
49
+ const [task, setTask] = React.useState(null);
50
+ const [error, setError] = React.useState(null);
51
+ React.useEffect(() => {
52
+ (async () => {
53
+ try {
54
+ const { config, configDir } = await loadConfig();
55
+ const fieldDef = config.fields.find((f) => f.name === field);
56
+ const value = parseValue(rawValue, fieldDef);
57
+ const result = await updateTask(config, configDir, id, {
58
+ fields: { [field]: value },
59
+ });
60
+ if (isJsonMode() || opts.json) {
61
+ jsonOutput(result);
62
+ process.exit(0);
63
+ }
64
+ setTask(result);
65
+ }
66
+ catch (err) {
67
+ setError(err instanceof Error ? err.message : String(err));
68
+ }
69
+ })();
70
+ }, []);
71
+ if (error)
72
+ return _jsx(Text, { color: "red", children: error });
73
+ if (!task)
74
+ return _jsx(Text, { children: "Updating..." });
75
+ return (_jsxs(Text, { color: "green", bold: true, children: ["[", task.id, "] ", field, ": ", rawValue] }));
76
+ }
77
+ //# sourceMappingURL=set.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set.js","sourceRoot":"","sources":["../../source/commands/set.tsx"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import zod from "zod";
2
2
  export declare const description = "Uninstall a yarlo plugin";
3
- export declare const args: zod.ZodTuple<[zod.ZodString], null>;
3
+ export declare const args: zod.ZodTuple<[zod.ZodDefault<zod.ZodString>], null>;
4
4
  type Props = {
5
5
  args: zod.infer<typeof args>;
6
6
  };
@@ -1 +1 @@
1
- {"version":3,"file":"uninstall.d.ts","sourceRoot":"","sources":["../../source/commands/uninstall.tsx"],"names":[],"mappings":"AAGA,OAAO,GAAG,MAAM,KAAK,CAAC;AAItB,eAAO,MAAM,WAAW,6BAA6B,CAAC;AAEtD,eAAO,MAAM,IAAI,qCAEf,CAAC;AAEH,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;CAC9B,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE,KAAK,2CAyC9D"}
1
+ {"version":3,"file":"uninstall.d.ts","sourceRoot":"","sources":["../../source/commands/uninstall.tsx"],"names":[],"mappings":"AAIA,OAAO,GAAG,MAAM,KAAK,CAAC;AAItB,eAAO,MAAM,WAAW,6BAA6B,CAAC;AAEtD,eAAO,MAAM,IAAI,qDAEf,CAAC;AAEH,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;CAC9B,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE,KAAK,2CAwF9D"}
@@ -1,22 +1,49 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import React from "react";
3
- import { Text } from "ink";
3
+ import { Text, Box } from "ink";
4
+ import { Select } from "@inkjs/ui";
4
5
  import { execSync } from "node:child_process";
5
6
  import zod from "zod";
6
7
  import { argument } from "pastel";
7
8
  import { loadConfig, saveConfig } from "yarlo-core";
8
9
  export const description = "Uninstall a yarlo plugin";
9
10
  export const args = zod.tuple([
10
- zod.string().describe(argument({ name: "plugin", description: "Plugin name" })),
11
+ zod.string().default("").describe(argument({ name: "plugin", description: "Plugin name" })),
11
12
  ]);
12
13
  export default function Uninstall({ args: [pluginName] }) {
13
- const [status, setStatus] = React.useState("removing");
14
+ const [status, setStatus] = React.useState(pluginName ? "removing" : "loading");
15
+ const [plugins, setPlugins] = React.useState([]);
16
+ const [selected, setSelected] = React.useState(pluginName);
14
17
  const [error, setError] = React.useState("");
18
+ // Load installed plugins for selection
15
19
  React.useEffect(() => {
20
+ if (pluginName)
21
+ return;
22
+ (async () => {
23
+ try {
24
+ const { config } = await loadConfig();
25
+ if (config.plugins.length === 0) {
26
+ setError("No plugins installed.");
27
+ setStatus("error");
28
+ return;
29
+ }
30
+ setPlugins(config.plugins);
31
+ setStatus("selecting");
32
+ }
33
+ catch (err) {
34
+ setError(err instanceof Error ? err.message : String(err));
35
+ setStatus("error");
36
+ }
37
+ })();
38
+ }, []);
39
+ // Uninstall the selected plugin
40
+ React.useEffect(() => {
41
+ if (!selected || status === "selecting" || status === "loading")
42
+ return;
16
43
  (async () => {
17
44
  try {
18
45
  const { config, configDir } = await loadConfig();
19
- const shortName = pluginName.replace("yarlo-plugin-", "");
46
+ const shortName = selected.replace("yarlo-plugin-", "");
20
47
  const packageName = `yarlo-plugin-${shortName}`;
21
48
  if (!config.plugins.includes(shortName)) {
22
49
  setError(`Plugin "${shortName}" is not installed`);
@@ -36,11 +63,22 @@ export default function Uninstall({ args: [pluginName] }) {
36
63
  setStatus("error");
37
64
  }
38
65
  })();
39
- }, []);
66
+ }, [selected]);
40
67
  if (status === "error")
41
68
  return _jsx(Text, { color: "red", children: error });
69
+ if (status === "loading")
70
+ return _jsx(Text, { children: "Loading plugins..." });
71
+ if (status === "selecting") {
72
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { bold: true, children: "Select a plugin to uninstall:" }), _jsx(Select, { options: plugins.map((p) => ({
73
+ label: p,
74
+ value: p,
75
+ })), onChange: (value) => {
76
+ setSelected(value);
77
+ setStatus("removing");
78
+ } })] }));
79
+ }
42
80
  if (status === "removing")
43
- return _jsxs(Text, { children: ["Removing ", pluginName, "..."] });
44
- return (_jsxs(Text, { color: "green", bold: true, children: ["Uninstalled plugin: ", pluginName] }));
81
+ return _jsxs(Text, { children: ["Removing ", selected, "..."] });
82
+ return (_jsxs(Text, { color: "green", bold: true, children: ["Uninstalled plugin: ", selected] }));
45
83
  }
46
84
  //# sourceMappingURL=uninstall.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../../source/commands/uninstall.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAC3B,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEpD,MAAM,CAAC,MAAM,WAAW,GAAG,0BAA0B,CAAC;AAEtD,MAAM,CAAC,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC;IAC5B,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC,CAAC;CAChF,CAAC,CAAC;AAMH,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC,EAAS;IAC7D,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAgC,UAAU,CAAC,CAAC;IACtF,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAE7C,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,CAAC,KAAK,IAAI,EAAE;YACV,IAAI,CAAC;gBACH,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,UAAU,EAAE,CAAC;gBACjD,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;gBAC1D,MAAM,WAAW,GAAG,gBAAgB,SAAS,EAAE,CAAC;gBAEhD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;oBACxC,QAAQ,CAAC,WAAW,SAAS,oBAAoB,CAAC,CAAC;oBACnD,SAAS,CAAC,OAAO,CAAC,CAAC;oBACnB,OAAO;gBACT,CAAC;gBAED,QAAQ,CAAC,eAAe,WAAW,EAAE,EAAE;oBACrC,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;oBAClB,KAAK,EAAE,MAAM;iBACd,CAAC,CAAC;gBAEH,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;gBAC/D,MAAM,UAAU,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;gBAEpC,SAAS,CAAC,MAAM,CAAC,CAAC;YACpB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,QAAQ,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC3D,SAAS,CAAC,OAAO,CAAC,CAAC;YACrB,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;IACP,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,IAAI,MAAM,KAAK,OAAO;QAAE,OAAO,KAAC,IAAI,IAAC,KAAK,EAAC,KAAK,YAAE,KAAK,GAAQ,CAAC;IAChE,IAAI,MAAM,KAAK,UAAU;QAAE,OAAO,MAAC,IAAI,4BAAW,UAAU,WAAW,CAAC;IAExE,OAAO,CACL,MAAC,IAAI,IAAC,KAAK,EAAC,OAAO,EAAC,IAAI,2CACD,UAAU,IAC1B,CACR,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../../source/commands/uninstall.tsx"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import zod from "zod";
2
2
  export declare const description = "Update an installed yarlo plugin to the latest version allowed by package.json";
3
- export declare const args: zod.ZodTuple<[zod.ZodString], null>;
3
+ export declare const args: zod.ZodTuple<[zod.ZodDefault<zod.ZodString>], null>;
4
4
  type Props = {
5
5
  args: zod.infer<typeof args>;
6
6
  };
@@ -1 +1 @@
1
- {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../source/commands/update.tsx"],"names":[],"mappings":"AAGA,OAAO,GAAG,MAAM,KAAK,CAAC;AAItB,eAAO,MAAM,WAAW,mFAAmF,CAAC;AAE5G,eAAO,MAAM,IAAI,qCAIf,CAAC;AAEH,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;CAC9B,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE,KAAK,2CA+C3D"}
1
+ {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../source/commands/update.tsx"],"names":[],"mappings":"AAIA,OAAO,GAAG,MAAM,KAAK,CAAC;AAItB,eAAO,MAAM,WAAW,mFAAmF,CAAC;AAE5G,eAAO,MAAM,IAAI,qDAIf,CAAC;AAEH,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;CAC9B,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE,KAAK,2CA4F3D"}
@@ -1,24 +1,51 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import React from "react";
3
- import { Text } from "ink";
3
+ import { Text, Box } from "ink";
4
+ import { Select } from "@inkjs/ui";
4
5
  import { execSync } from "node:child_process";
5
6
  import zod from "zod";
6
7
  import { argument } from "pastel";
7
8
  import { loadConfig } from "yarlo-core";
8
9
  export const description = "Update an installed yarlo plugin to the latest version allowed by package.json";
9
10
  export const args = zod.tuple([
10
- zod.string().describe(argument({ name: "plugin", description: "Plugin name (e.g., board)" })),
11
+ zod.string().default("").describe(argument({ name: "plugin", description: "Plugin name (e.g., board)" })),
11
12
  ]);
12
13
  export default function Update({ args: [pluginName] }) {
13
- const packageName = pluginName.startsWith("yarlo-plugin-")
14
- ? pluginName
15
- : `yarlo-plugin-${pluginName}`;
16
- const [status, setStatus] = React.useState("updating");
14
+ const [status, setStatus] = React.useState(pluginName ? "updating" : "loading");
15
+ const [plugins, setPlugins] = React.useState([]);
16
+ const [selected, setSelected] = React.useState(pluginName);
17
17
  const [error, setError] = React.useState("");
18
+ // Load installed plugins for selection
18
19
  React.useEffect(() => {
20
+ if (pluginName)
21
+ return;
22
+ (async () => {
23
+ try {
24
+ const { config } = await loadConfig();
25
+ if (config.plugins.length === 0) {
26
+ setError("No plugins installed.");
27
+ setStatus("error");
28
+ return;
29
+ }
30
+ setPlugins(config.plugins);
31
+ setStatus("selecting");
32
+ }
33
+ catch (err) {
34
+ setError(err instanceof Error ? err.message : String(err));
35
+ setStatus("error");
36
+ }
37
+ })();
38
+ }, []);
39
+ // Update the selected plugin
40
+ React.useEffect(() => {
41
+ if (!selected || status === "selecting" || status === "loading")
42
+ return;
19
43
  (async () => {
20
44
  try {
21
45
  const { config, projectDir } = await loadConfig();
46
+ const packageName = selected.startsWith("yarlo-plugin-")
47
+ ? selected
48
+ : `yarlo-plugin-${selected}`;
22
49
  const shortName = packageName.replace("yarlo-plugin-", "");
23
50
  if (!config.plugins.includes(shortName)) {
24
51
  setError(`Plugin "${shortName}" is not installed. Run \`yarlo install ${shortName}\` first.`);
@@ -36,12 +63,24 @@ export default function Update({ args: [pluginName] }) {
36
63
  setStatus("error");
37
64
  }
38
65
  })();
39
- }, []);
66
+ }, [selected]);
40
67
  if (status === "error")
41
68
  return _jsx(Text, { color: "red", children: error });
69
+ if (status === "loading")
70
+ return _jsx(Text, { children: "Loading plugins..." });
71
+ if (status === "selecting") {
72
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { bold: true, children: "Select a plugin to update:" }), _jsx(Select, { options: plugins.map((p) => ({
73
+ label: p,
74
+ value: p,
75
+ })), onChange: (value) => {
76
+ setSelected(value);
77
+ setStatus("updating");
78
+ } })] }));
79
+ }
42
80
  if (status === "updating") {
43
- return _jsxs(Text, { children: ["Updating ", packageName, "..."] });
81
+ const displayName = selected.startsWith("yarlo-plugin-") ? selected : `yarlo-plugin-${selected}`;
82
+ return _jsxs(Text, { children: ["Updating ", displayName, "..."] });
44
83
  }
45
- return (_jsxs(Text, { color: "green", bold: true, children: ["Updated plugin: ", packageName.replace("yarlo-plugin-", "")] }));
84
+ return (_jsxs(Text, { color: "green", bold: true, children: ["Updated plugin: ", (selected ?? "").replace("yarlo-plugin-", "")] }));
46
85
  }
47
86
  //# sourceMappingURL=update.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"update.js","sourceRoot":"","sources":["../../source/commands/update.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAC3B,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,MAAM,CAAC,MAAM,WAAW,GAAG,gFAAgF,CAAC;AAE5G,MAAM,CAAC,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC;IAC5B,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CACnB,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,2BAA2B,EAAE,CAAC,CACvE;CACF,CAAC,CAAC;AAMH,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC,EAAS;IAC1D,MAAM,WAAW,GAAG,UAAU,CAAC,UAAU,CAAC,eAAe,CAAC;QACxD,CAAC,CAAC,UAAU;QACZ,CAAC,CAAC,gBAAgB,UAAU,EAAE,CAAC;IAEjC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,QAAQ,CACxC,UAAU,CACX,CAAC;IACF,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAE7C,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,CAAC,KAAK,IAAI,EAAE;YACV,IAAI,CAAC;gBACH,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,UAAU,EAAE,CAAC;gBAClD,MAAM,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;gBAE3D,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;oBACxC,QAAQ,CACN,WAAW,SAAS,2CAA2C,SAAS,WAAW,CACpF,CAAC;oBACF,SAAS,CAAC,OAAO,CAAC,CAAC;oBACnB,OAAO;gBACT,CAAC;gBAED,QAAQ,CAAC,eAAe,WAAW,EAAE,EAAE;oBACrC,GAAG,EAAE,UAAU;oBACf,KAAK,EAAE,MAAM;iBACd,CAAC,CAAC;gBAEH,SAAS,CAAC,MAAM,CAAC,CAAC;YACpB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,QAAQ,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC3D,SAAS,CAAC,OAAO,CAAC,CAAC;YACrB,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;IACP,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,IAAI,MAAM,KAAK,OAAO;QAAE,OAAO,KAAC,IAAI,IAAC,KAAK,EAAC,KAAK,YAAE,KAAK,GAAQ,CAAC;IAChE,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;QAC1B,OAAO,MAAC,IAAI,4BAAW,WAAW,WAAW,CAAC;IAChD,CAAC;IAED,OAAO,CACL,MAAC,IAAI,IAAC,KAAK,EAAC,OAAO,EAAC,IAAI,uCACL,WAAW,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,IACpD,CACR,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../source/commands/update.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "yarlo-cli",
3
- "version": "0.1.3",
3
+ "version": "0.1.4",
4
4
  "description": "Yet Another Repo Local Organizer — Local task management using markdown with YAML frontmatter",
5
5
  "type": "module",
6
6
  "license": "PolyForm-Noncommercial-1.0.0",
@@ -36,8 +36,8 @@
36
36
  "pastel": "^3.0.0",
37
37
  "react": "^18.3.1",
38
38
  "zod": "^3.24.0",
39
- "yarlo-core": "0.1.3",
40
- "yarlo-types": "0.1.3"
39
+ "yarlo-core": "0.1.4",
40
+ "yarlo-types": "0.1.4"
41
41
  },
42
42
  "devDependencies": {
43
43
  "@types/node": "^25.5.2",