@hasna/todos 0.15.25 → 0.15.26

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/contracts.js CHANGED
@@ -12658,7 +12658,7 @@ var init_tasks = __esm(() => {
12658
12658
  // package.json
12659
12659
  var package_default = {
12660
12660
  name: "@hasna/todos",
12661
- version: "0.15.25",
12661
+ version: "0.15.26",
12662
12662
  description: "Universal task management for AI coding agents - CLI + MCP server + interactive TUI",
12663
12663
  type: "module",
12664
12664
  main: "dist/index.js",
@@ -12707,7 +12707,8 @@ var package_default = {
12707
12707
  }
12708
12708
  },
12709
12709
  workspaces: [
12710
- "dashboard"
12710
+ "dashboard",
12711
+ "ai"
12711
12712
  ],
12712
12713
  files: [
12713
12714
  "dist",
@@ -12778,6 +12779,7 @@ var package_default = {
12778
12779
  zod: "^3.24.2"
12779
12780
  },
12780
12781
  overrides: {
12782
+ ajv: "8.20.0",
12781
12783
  "fast-uri": "3.1.2"
12782
12784
  },
12783
12785
  devDependencies: {
package/dist/index.js CHANGED
@@ -12771,7 +12771,7 @@ var init_dispatches = __esm(() => {
12771
12771
  // package.json
12772
12772
  var package_default = {
12773
12773
  name: "@hasna/todos",
12774
- version: "0.15.25",
12774
+ version: "0.15.26",
12775
12775
  description: "Universal task management for AI coding agents - CLI + MCP server + interactive TUI",
12776
12776
  type: "module",
12777
12777
  main: "dist/index.js",
@@ -12820,7 +12820,8 @@ var package_default = {
12820
12820
  }
12821
12821
  },
12822
12822
  workspaces: [
12823
- "dashboard"
12823
+ "dashboard",
12824
+ "ai"
12824
12825
  ],
12825
12826
  files: [
12826
12827
  "dist",
@@ -12891,6 +12892,7 @@ var package_default = {
12891
12892
  zod: "^3.24.2"
12892
12893
  },
12893
12894
  overrides: {
12895
+ ajv: "8.20.0",
12894
12896
  "fast-uri": "3.1.2"
12895
12897
  },
12896
12898
  devDependencies: {
@@ -40426,6 +40428,12 @@ function parseTodosTaskManifestBindingLookup(input) {
40426
40428
  return parsed.data;
40427
40429
  }
40428
40430
 
40431
+ // src/task-manifest/plan-slug.ts
40432
+ function taskManifestPlanSlug(manifest, planId) {
40433
+ const base = normalizeSlug(manifest.plan.key) || normalizeSlug(manifest.plan.name) || "plan";
40434
+ return `${base}-${planId}`;
40435
+ }
40436
+
40429
40437
  // src/task-manifest/backend.ts
40430
40438
  var UUID_PATTERN2 = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
40431
40439
  function validateTaskManifestBindingLookupRows(rows, tenantId, planId) {
@@ -40776,7 +40784,7 @@ class SqliteTodosTaskManifestBackend {
40776
40784
  }
40777
40785
  }
40778
40786
  this.db.query(`INSERT INTO plans (id, project_id, name, description, status, task_list_id, slug, created_at, updated_at)
40779
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`).run(input.graph.plan_id, manifest.project_id, manifest.plan.name, manifest.plan.description ?? null, manifest.plan.status ?? "active", manifest.task_list_id ?? null, null, input.now, input.now);
40787
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`).run(input.graph.plan_id, manifest.project_id, manifest.plan.name, manifest.plan.description ?? null, manifest.plan.status ?? "active", manifest.task_list_id ?? null, taskManifestPlanSlug(manifest, input.graph.plan_id), input.now, input.now);
40780
40788
  fault(faults, "after_plan_write");
40781
40789
  for (const task3 of manifest.tasks) {
40782
40790
  const taskId = input.graph.task_ids[task3.key];
@@ -40999,7 +41007,7 @@ class SqliteTodosTaskManifestBackend {
40999
41007
  throw new TodosTaskManifestError("TODOS_TASK_MANIFEST_COMPENSATION_REFUSED", "Compensation refused: graph changed since apply", { actualReadback });
41000
41008
  }
41001
41009
  const plan = this.db.query("SELECT project_id, name, description, status, task_list_id, slug FROM plans WHERE id = ? LIMIT 1").get(applyResult.graph.plan_id);
41002
- if (!plan || plan["project_id"] !== manifest.project_id || plan["name"] !== manifest.plan.name || plan["description"] !== (manifest.plan.description ?? null) || plan["status"] !== (manifest.plan.status ?? "active") || plan["task_list_id"] !== (manifest.task_list_id ?? null) || plan["slug"] !== null) {
41010
+ if (!plan || plan["project_id"] !== manifest.project_id || plan["name"] !== manifest.plan.name || plan["description"] !== (manifest.plan.description ?? null) || plan["status"] !== (manifest.plan.status ?? "active") || plan["task_list_id"] !== (manifest.task_list_id ?? null) || plan["slug"] !== taskManifestPlanSlug(manifest, applyResult.graph.plan_id)) {
41003
41011
  throw new TodosTaskManifestError("TODOS_TASK_MANIFEST_COMPENSATION_REFUSED", "Compensation refused: plan changed since apply");
41004
41012
  }
41005
41013
  for (const task3 of manifest.tasks) {
@@ -41197,7 +41205,7 @@ function taskPayload2(manifest, task3, taskId, planId, now4) {
41197
41205
  function planPayload(input) {
41198
41206
  return {
41199
41207
  id: input.graph.plan_id,
41200
- slug: null,
41208
+ slug: taskManifestPlanSlug(input.manifest, input.graph.plan_id),
41201
41209
  project_id: input.manifest.project_id,
41202
41210
  task_list_id: input.manifest.task_list_id ?? null,
41203
41211
  agent_id: null,
package/dist/mcp/index.js CHANGED
@@ -35803,7 +35803,7 @@ var package_default;
35803
35803
  var init_package = __esm(() => {
35804
35804
  package_default = {
35805
35805
  name: "@hasna/todos",
35806
- version: "0.15.25",
35806
+ version: "0.15.26",
35807
35807
  description: "Universal task management for AI coding agents - CLI + MCP server + interactive TUI",
35808
35808
  type: "module",
35809
35809
  main: "dist/index.js",
@@ -35852,7 +35852,8 @@ var init_package = __esm(() => {
35852
35852
  }
35853
35853
  },
35854
35854
  workspaces: [
35855
- "dashboard"
35855
+ "dashboard",
35856
+ "ai"
35856
35857
  ],
35857
35858
  files: [
35858
35859
  "dist",
@@ -35923,6 +35924,7 @@ var init_package = __esm(() => {
35923
35924
  zod: "^3.24.2"
35924
35925
  },
35925
35926
  overrides: {
35927
+ ajv: "8.20.0",
35926
35928
  "fast-uri": "3.1.2"
35927
35929
  },
35928
35930
  devDependencies: {
@@ -51828,6 +51830,13 @@ var init_schema2 = __esm(() => {
51828
51830
  }).strict();
51829
51831
  });
51830
51832
 
51833
+ // src/task-manifest/plan-slug.ts
51834
+ function taskManifestPlanSlug(manifest, planId) {
51835
+ const base = normalizeSlug(manifest.plan.key) || normalizeSlug(manifest.plan.name) || "plan";
51836
+ return `${base}-${planId}`;
51837
+ }
51838
+ var init_plan_slug = () => {};
51839
+
51831
51840
  // src/task-manifest/backend.ts
51832
51841
  function validateTaskManifestBindingLookupRows(rows, tenantId, planId) {
51833
51842
  if (rows.length === 0) {
@@ -51964,6 +51973,7 @@ function postgresTodosTaskManifestSchemaSql(tenantId = "default") {
51964
51973
  var sqliteTails;
51965
51974
  var init_sqlite2 = __esm(() => {
51966
51975
  init_canonical();
51976
+ init_plan_slug();
51967
51977
  init_backend();
51968
51978
  init_types5();
51969
51979
  sqliteTails = new WeakMap;
@@ -52064,7 +52074,7 @@ function taskPayload2(manifest, task3, taskId, planId, now4) {
52064
52074
  function planPayload(input) {
52065
52075
  return {
52066
52076
  id: input.graph.plan_id,
52067
- slug: null,
52077
+ slug: taskManifestPlanSlug(input.manifest, input.graph.plan_id),
52068
52078
  project_id: input.manifest.project_id,
52069
52079
  task_list_id: input.manifest.task_list_id ?? null,
52070
52080
  agent_id: null,
@@ -52613,6 +52623,7 @@ class PostgresTodosTaskManifestBackend {
52613
52623
  }
52614
52624
  var init_postgres3 = __esm(() => {
52615
52625
  init_canonical();
52626
+ init_plan_slug();
52616
52627
  init_backend();
52617
52628
  init_postgres_sync();
52618
52629
  init_types5();
package/dist/mcp.js CHANGED
@@ -41,7 +41,7 @@ var __require = import.meta.require;
41
41
  // package.json
42
42
  var package_default = {
43
43
  name: "@hasna/todos",
44
- version: "0.15.25",
44
+ version: "0.15.26",
45
45
  description: "Universal task management for AI coding agents - CLI + MCP server + interactive TUI",
46
46
  type: "module",
47
47
  main: "dist/index.js",
@@ -90,7 +90,8 @@ var package_default = {
90
90
  }
91
91
  },
92
92
  workspaces: [
93
- "dashboard"
93
+ "dashboard",
94
+ "ai"
94
95
  ],
95
96
  files: [
96
97
  "dist",
@@ -161,6 +162,7 @@ var package_default = {
161
162
  zod: "^3.24.2"
162
163
  },
163
164
  overrides: {
165
+ ajv: "8.20.0",
164
166
  "fast-uri": "3.1.2"
165
167
  },
166
168
  devDependencies: {
@@ -12661,7 +12661,7 @@ import { createHash as createHash6 } from "crypto";
12661
12661
  // package.json
12662
12662
  var package_default = {
12663
12663
  name: "@hasna/todos",
12664
- version: "0.15.25",
12664
+ version: "0.15.26",
12665
12665
  description: "Universal task management for AI coding agents - CLI + MCP server + interactive TUI",
12666
12666
  type: "module",
12667
12667
  main: "dist/index.js",
@@ -12710,7 +12710,8 @@ var package_default = {
12710
12710
  }
12711
12711
  },
12712
12712
  workspaces: [
12713
- "dashboard"
12713
+ "dashboard",
12714
+ "ai"
12714
12715
  ],
12715
12716
  files: [
12716
12717
  "dist",
@@ -12781,6 +12782,7 @@ var package_default = {
12781
12782
  zod: "^3.24.2"
12782
12783
  },
12783
12784
  overrides: {
12785
+ ajv: "8.20.0",
12784
12786
  "fast-uri": "3.1.2"
12785
12787
  },
12786
12788
  devDependencies: {
package/dist/registry.js CHANGED
@@ -12658,7 +12658,7 @@ var init_tasks = __esm(() => {
12658
12658
  // package.json
12659
12659
  var package_default = {
12660
12660
  name: "@hasna/todos",
12661
- version: "0.15.25",
12661
+ version: "0.15.26",
12662
12662
  description: "Universal task management for AI coding agents - CLI + MCP server + interactive TUI",
12663
12663
  type: "module",
12664
12664
  main: "dist/index.js",
@@ -12707,7 +12707,8 @@ var package_default = {
12707
12707
  }
12708
12708
  },
12709
12709
  workspaces: [
12710
- "dashboard"
12710
+ "dashboard",
12711
+ "ai"
12711
12712
  ],
12712
12713
  files: [
12713
12714
  "dist",
@@ -12778,6 +12779,7 @@ var package_default = {
12778
12779
  zod: "^3.24.2"
12779
12780
  },
12780
12781
  overrides: {
12782
+ ajv: "8.20.0",
12781
12783
  "fast-uri": "3.1.2"
12782
12784
  },
12783
12785
  devDependencies: {
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "packageName": "@hasna/todos",
3
- "packageVersion": "0.15.25",
3
+ "packageVersion": "0.15.26",
4
4
  "repository": "https://github.com/hasna/todos.git",
5
- "gitCommit": "14712a2ca66eabd3dae0ed8eaff7015bb9e6b46b",
6
- "gitTree": "6eec3c330a6fbea8df9567c0a704f19204f7b2e1",
7
- "sourceTreeSha256": "6f94712edfa274776869df5199915568c07ba6d67fddb29791a65d2f82ee7fcc",
8
- "generatedAt": "2026-08-10T19:09:23.000Z"
5
+ "gitCommit": "34751c1061a1947a6744a6258edc3a35e2c44e5f",
6
+ "gitTree": "c475638e8e15e320c77788bb801751180b96360a",
7
+ "sourceTreeSha256": "86687d0033f4f9f66be50d537891bbf47cfeee33518b064df796d1c04b42c987",
8
+ "generatedAt": "2026-08-10T21:23:08.000Z"
9
9
  }