@hasna/todos 0.9.71 → 0.9.72

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/index.js CHANGED
@@ -10560,7 +10560,11 @@ Retry task created: ${formatTask(result.retryTask)}`;
10560
10560
  agent_name: exports_external.string()
10561
10561
  }, async ({ agent_name }) => {
10562
10562
  try {
10563
- const agent = registerAgent({ name: agent_name });
10563
+ const agentResult = registerAgent({ name: agent_name });
10564
+ if (isAgentConflict(agentResult)) {
10565
+ return { content: [{ type: "text", text: `CONFLICT: ${agentResult.message}` }], isError: true };
10566
+ }
10567
+ const agent = agentResult;
10564
10568
  const byName = listTasks({ assigned_to: agent_name });
10565
10569
  const byId = listTasks({ agent_id: agent.id });
10566
10570
  const seen = new Set;
@@ -12068,8 +12072,11 @@ data: ${JSON.stringify({ type: "connected", agent_id: agentId, timestamp: new Da
12068
12072
  const name = url.searchParams.get("name");
12069
12073
  if (!name)
12070
12074
  return json({ error: "Missing name param" }, 400, port);
12071
- const { registerAgent: registerAgent2 } = await Promise.resolve().then(() => (init_agents(), exports_agents));
12072
- const agent = registerAgent2({ name });
12075
+ const { registerAgent: registerAgent2, isAgentConflict: isAgentConflict2 } = await Promise.resolve().then(() => (init_agents(), exports_agents));
12076
+ const agentResult = registerAgent2({ name });
12077
+ if (isAgentConflict2(agentResult))
12078
+ return json({ error: agentResult.message, conflict: true }, 409, port);
12079
+ const agent = agentResult;
12073
12080
  const tasks = listTasks({ assigned_to: name });
12074
12081
  const agentIdTasks = listTasks({ agent_id: agent.id });
12075
12082
  const allTasks = [...tasks, ...agentIdTasks.filter((t) => !tasks.some((tt) => tt.id === t.id))];
@@ -12181,9 +12188,11 @@ data: ${JSON.stringify({ type: "connected", agent_id: agentId, timestamp: new Da
12181
12188
  const body = await req.json();
12182
12189
  if (!body.name)
12183
12190
  return json({ error: "Missing name" }, 400, port);
12184
- const { registerAgent: registerAgent2 } = await Promise.resolve().then(() => (init_agents(), exports_agents));
12185
- const agent = registerAgent2({ name: body.name, description: body.description });
12186
- return json(agent, 201, port);
12191
+ const { registerAgent: registerAgent2, isAgentConflict: isAgentConflict2 } = await Promise.resolve().then(() => (init_agents(), exports_agents));
12192
+ const result = registerAgent2({ name: body.name, description: body.description, session_id: body.session_id, working_dir: body.working_dir });
12193
+ if (isAgentConflict2(result))
12194
+ return json({ error: result.message, conflict: true }, 409, port);
12195
+ return json(result, 201, port);
12187
12196
  } catch (e) {
12188
12197
  return json({ error: e instanceof Error ? e.message : "Failed to register agent" }, 500, port);
12189
12198
  }
@@ -14719,15 +14728,19 @@ function unregisterMcp(agent, global) {
14719
14728
  program2.command("init <name>").description("Register an agent and get a short UUID").option("-d, --description <text>", "Agent description").action((name, opts) => {
14720
14729
  const globalOpts = program2.opts();
14721
14730
  try {
14722
- const agent = registerAgent({ name, description: opts.description });
14731
+ const result = registerAgent({ name, description: opts.description });
14732
+ if (isAgentConflict(result)) {
14733
+ console.error(chalk.red("CONFLICT:"), result.message);
14734
+ process.exit(1);
14735
+ }
14723
14736
  if (globalOpts.json) {
14724
- output(agent, true);
14737
+ output(result, true);
14725
14738
  } else {
14726
14739
  console.log(chalk.green("Agent registered:"));
14727
- console.log(` ${chalk.dim("ID:")} ${agent.id}`);
14728
- console.log(` ${chalk.dim("Name:")} ${agent.name}`);
14740
+ console.log(` ${chalk.dim("ID:")} ${result.id}`);
14741
+ console.log(` ${chalk.dim("Name:")} ${result.name}`);
14729
14742
  console.log(`
14730
- Use ${chalk.cyan(`--agent ${agent.id}`)} on future commands.`);
14743
+ Use ${chalk.cyan(`--agent ${result.id}`)} on future commands.`);
14731
14744
  }
14732
14745
  } catch (e) {
14733
14746
  handleError(e);
package/dist/mcp/index.js CHANGED
@@ -8311,7 +8311,11 @@ if (shouldRegisterTool("get_my_tasks")) {
8311
8311
  agent_name: exports_external.string()
8312
8312
  }, async ({ agent_name }) => {
8313
8313
  try {
8314
- const agent = registerAgent({ name: agent_name });
8314
+ const agentResult = registerAgent({ name: agent_name });
8315
+ if (isAgentConflict(agentResult)) {
8316
+ return { content: [{ type: "text", text: `CONFLICT: ${agentResult.message}` }], isError: true };
8317
+ }
8318
+ const agent = agentResult;
8315
8319
  const byName = listTasks({ assigned_to: agent_name });
8316
8320
  const byId = listTasks({ agent_id: agent.id });
8317
8321
  const seen = new Set;
@@ -3047,8 +3047,11 @@ data: ${JSON.stringify({ type: "connected", agent_id: agentId, timestamp: new Da
3047
3047
  const name = url.searchParams.get("name");
3048
3048
  if (!name)
3049
3049
  return json({ error: "Missing name param" }, 400, port);
3050
- const { registerAgent: registerAgent2 } = await Promise.resolve().then(() => (init_agents(), exports_agents));
3051
- const agent = registerAgent2({ name });
3050
+ const { registerAgent: registerAgent2, isAgentConflict: isAgentConflict2 } = await Promise.resolve().then(() => (init_agents(), exports_agents));
3051
+ const agentResult = registerAgent2({ name });
3052
+ if (isAgentConflict2(agentResult))
3053
+ return json({ error: agentResult.message, conflict: true }, 409, port);
3054
+ const agent = agentResult;
3052
3055
  const tasks = listTasks({ assigned_to: name });
3053
3056
  const agentIdTasks = listTasks({ agent_id: agent.id });
3054
3057
  const allTasks = [...tasks, ...agentIdTasks.filter((t) => !tasks.some((tt) => tt.id === t.id))];
@@ -3160,9 +3163,11 @@ data: ${JSON.stringify({ type: "connected", agent_id: agentId, timestamp: new Da
3160
3163
  const body = await req.json();
3161
3164
  if (!body.name)
3162
3165
  return json({ error: "Missing name" }, 400, port);
3163
- const { registerAgent: registerAgent2 } = await Promise.resolve().then(() => (init_agents(), exports_agents));
3164
- const agent = registerAgent2({ name: body.name, description: body.description });
3165
- return json(agent, 201, port);
3166
+ const { registerAgent: registerAgent2, isAgentConflict: isAgentConflict2 } = await Promise.resolve().then(() => (init_agents(), exports_agents));
3167
+ const result = registerAgent2({ name: body.name, description: body.description, session_id: body.session_id, working_dir: body.working_dir });
3168
+ if (isAgentConflict2(result))
3169
+ return json({ error: result.message, conflict: true }, 409, port);
3170
+ return json(result, 201, port);
3166
3171
  } catch (e) {
3167
3172
  return json({ error: e instanceof Error ? e.message : "Failed to register agent" }, 500, port);
3168
3173
  }
@@ -1 +1 @@
1
- {"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../../src/server/serve.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAiHH,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAu1B1G"}
1
+ {"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../../src/server/serve.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAiHH,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA01B1G"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hasna/todos",
3
- "version": "0.9.71",
3
+ "version": "0.9.72",
4
4
  "description": "Universal task management for AI coding agents - CLI + MCP server + interactive TUI",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",