@hasna/todos 0.15.24 → 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/ai-tools.d.ts.map +1 -1
- package/dist/cli/cloud-router.d.ts +7 -0
- package/dist/cli/cloud-router.d.ts.map +1 -1
- package/dist/cli/commands/task-manifest-commands.d.ts +3 -0
- package/dist/cli/commands/task-manifest-commands.d.ts.map +1 -0
- package/dist/cli/index.js +785 -28
- package/dist/contracts.js +7 -2
- package/dist/index.js +22 -8
- package/dist/mcp/index.js +17 -3
- package/dist/mcp.js +7 -2
- package/dist/project-registration.js +7 -2
- package/dist/registry.js +7 -2
- package/dist/release-provenance.json +5 -5
- package/dist/server/index.js +81 -67
- package/dist/task-manifest/plan-slug.d.ts +11 -0
- package/dist/task-manifest/plan-slug.d.ts.map +1 -0
- package/dist/task-manifest/postgres.d.ts.map +1 -1
- package/dist/task-manifest/sqlite.d.ts.map +1 -1
- package/dist/task-manifest.js +9 -3
- package/package.json +7 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgres.d.ts","sourceRoot":"","sources":["../../src/task-manifest/postgres.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"postgres.d.ts","sourceRoot":"","sources":["../../src/task-manifest/postgres.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,sBAAsB,EAC3B,KAAK,0BAA0B,EAE/B,KAAK,wBAAwB,EAC9B,MAAM,cAAc,CAAC;AAItB,OAAO,EAEL,KAAK,yCAAyC,EAE9C,KAAK,4BAA4B,EACjC,KAAK,kCAAkC,EACvC,KAAK,mCAAmC,EAExC,KAAK,+BAA+B,EACpC,KAAK,wBAAwB,EAE9B,MAAM,YAAY,CAAC;AA4EpB,qBAAa,gCAAiC,YAAW,wBAAwB;IAQ7E,OAAO,CAAC,QAAQ,CAAC,MAAM;IAPzB,QAAQ,CAAC,IAAI,EAAG,YAAY,CAAU;IACtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,WAAW,CAA8B;gBAG9B,MAAM,EAAE,+BAA+B,EACxD,OAAO,GAAE,yCAA8C;YAO3C,YAAY;YAQZ,UAAU;IAclB,KAAK,CAAC,KAAK,EAAE,sBAAsB,EAAE,MAAM,EAAE,0BAA0B,GAAG,OAAO,CAAC,4BAA4B,CAAC;IAgI/G,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,4BAA4B,CAAC;IAUnE,qBAAqB,CAAC,MAAM,EAAE,MAAM;IA4BpC,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA0DzE,UAAU,CACd,KAAK,EAAE,kCAAkC,EACzC,OAAO,EAAE,wBAAwB,EACjC,qBAAqB,EAAE,MAAM,EAC7B,aAAa,EAAE,MAAM,EACrB,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,mCAAmC,CAAC;YAsNjC,QAAQ;CAcvB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../src/task-manifest/sqlite.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../src/task-manifest/sqlite.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAG3C,OAAO,EAEL,KAAK,sBAAsB,EAC3B,KAAK,0BAA0B,EAE/B,KAAK,wBAAwB,EAC9B,MAAM,cAAc,CAAC;AAGtB,OAAO,EAGL,KAAK,4BAA4B,EACjC,KAAK,kCAAkC,EACvC,KAAK,mCAAmC,EAExC,KAAK,wBAAwB,EAC9B,MAAM,YAAY,CAAC;AAYpB,qBAAa,8BAA+B,YAAW,wBAAwB;IAI3E,OAAO,CAAC,QAAQ,CAAC,EAAE;IACnB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAJ3B,QAAQ,CAAC,IAAI,EAAG,QAAQ,CAAU;gBAGf,EAAE,EAAE,QAAQ,EACZ,QAAQ,SAAY;YAKzB,UAAU;IAuBlB,KAAK,CAAC,KAAK,EAAE,sBAAsB,EAAE,MAAM,EAAE,0BAA0B,GAAG,OAAO,CAAC,4BAA4B,CAAC;IAyI/G,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,4BAA4B,CAAC;IAQnE,qBAAqB,CAAC,MAAM,EAAE,MAAM;IA2BpC,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA+BzE,UAAU,CACd,KAAK,EAAE,kCAAkC,EACzC,OAAO,EAAE,wBAAwB,EACjC,qBAAqB,EAAE,MAAM,EAC7B,aAAa,EAAE,MAAM,EACrB,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,mCAAmC,CAAC;IA+K/C,OAAO,CAAC,QAAQ;CAajB"}
|
package/dist/task-manifest.js
CHANGED
|
@@ -5045,6 +5045,12 @@ function parseTodosTaskManifestBindingLookup(input) {
|
|
|
5045
5045
|
return parsed.data;
|
|
5046
5046
|
}
|
|
5047
5047
|
|
|
5048
|
+
// src/task-manifest/plan-slug.ts
|
|
5049
|
+
function taskManifestPlanSlug(manifest, planId) {
|
|
5050
|
+
const base = normalizeSlug(manifest.plan.key) || normalizeSlug(manifest.plan.name) || "plan";
|
|
5051
|
+
return `${base}-${planId}`;
|
|
5052
|
+
}
|
|
5053
|
+
|
|
5048
5054
|
// src/task-manifest/backend.ts
|
|
5049
5055
|
var UUID_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
|
|
5050
5056
|
function validateTaskManifestBindingLookupRows(rows, tenantId, planId) {
|
|
@@ -5395,7 +5401,7 @@ class SqliteTodosTaskManifestBackend {
|
|
|
5395
5401
|
}
|
|
5396
5402
|
}
|
|
5397
5403
|
this.db.query(`INSERT INTO plans (id, project_id, name, description, status, task_list_id, slug, created_at, updated_at)
|
|
5398
|
-
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,
|
|
5404
|
+
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);
|
|
5399
5405
|
fault(faults, "after_plan_write");
|
|
5400
5406
|
for (const task2 of manifest.tasks) {
|
|
5401
5407
|
const taskId = input.graph.task_ids[task2.key];
|
|
@@ -5618,7 +5624,7 @@ class SqliteTodosTaskManifestBackend {
|
|
|
5618
5624
|
throw new TodosTaskManifestError("TODOS_TASK_MANIFEST_COMPENSATION_REFUSED", "Compensation refused: graph changed since apply", { actualReadback });
|
|
5619
5625
|
}
|
|
5620
5626
|
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);
|
|
5621
|
-
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"] !==
|
|
5627
|
+
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)) {
|
|
5622
5628
|
throw new TodosTaskManifestError("TODOS_TASK_MANIFEST_COMPENSATION_REFUSED", "Compensation refused: plan changed since apply");
|
|
5623
5629
|
}
|
|
5624
5630
|
for (const task2 of manifest.tasks) {
|
|
@@ -6220,7 +6226,7 @@ function taskPayload(manifest, task2, taskId, planId, now) {
|
|
|
6220
6226
|
function planPayload(input) {
|
|
6221
6227
|
return {
|
|
6222
6228
|
id: input.graph.plan_id,
|
|
6223
|
-
slug:
|
|
6229
|
+
slug: taskManifestPlanSlug(input.manifest, input.graph.plan_id),
|
|
6224
6230
|
project_id: input.manifest.project_id,
|
|
6225
6231
|
task_list_id: input.manifest.task_list_id ?? null,
|
|
6226
6232
|
agent_id: null,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hasna/todos",
|
|
3
|
-
"version": "0.15.
|
|
3
|
+
"version": "0.15.26",
|
|
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",
|
|
@@ -49,7 +49,8 @@
|
|
|
49
49
|
}
|
|
50
50
|
},
|
|
51
51
|
"workspaces": [
|
|
52
|
-
"dashboard"
|
|
52
|
+
"dashboard",
|
|
53
|
+
"ai"
|
|
53
54
|
],
|
|
54
55
|
"files": [
|
|
55
56
|
"dist",
|
|
@@ -72,6 +73,8 @@
|
|
|
72
73
|
"dev:serve": "bun run src/server/index.ts",
|
|
73
74
|
"verify:release": "bun run scripts/verify-public-release.ts --mode=review",
|
|
74
75
|
"verify:release-review": "bun run scripts/verify-npm-release-agent-review.ts",
|
|
76
|
+
"verify:attested-container-candidate": "bun run scripts/attested-container-candidate.ts verify",
|
|
77
|
+
"test:attested-container-candidate": "bun test scripts/attested-container-candidate.test.ts",
|
|
75
78
|
"issue:release-review": "bun run scripts/issue-npm-release-agent-review.ts",
|
|
76
79
|
"prepublishOnly": "bun run scripts/verify-public-release.ts --mode=publish",
|
|
77
80
|
"postinstall": "mkdir -p $HOME/.hasna/todos $HOME/.hasna/todos/training 2>/dev/null || true"
|
|
@@ -118,12 +121,14 @@
|
|
|
118
121
|
"zod": "^3.24.2"
|
|
119
122
|
},
|
|
120
123
|
"overrides": {
|
|
124
|
+
"ajv": "8.20.0",
|
|
121
125
|
"fast-uri": "3.1.2"
|
|
122
126
|
},
|
|
123
127
|
"devDependencies": {
|
|
124
128
|
"@types/bun": "^1.2.4",
|
|
125
129
|
"@types/react": "^18.3.18",
|
|
126
130
|
"bun-types": "1.3.9",
|
|
131
|
+
"hasna-deployment-contracts": "npm:@hasna/contracts@0.10.4",
|
|
127
132
|
"typescript": "^5.7.3"
|
|
128
133
|
}
|
|
129
134
|
}
|