@hasna/todos 0.15.25 → 0.15.27
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/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 +870 -29
- package/dist/contracts.js +7 -3
- package/dist/index.js +16 -6
- package/dist/mcp/index.js +108 -7
- package/dist/mcp.js +7 -3
- package/dist/project-registration.js +7 -3
- package/dist/registry.js +7 -3
- package/dist/release-provenance.json +5 -5
- package/dist/sdk/index.js +7 -0
- package/dist/sdk/v1.generated.d.ts +31 -0
- package/dist/sdk/v1.generated.d.ts.map +1 -1
- package/dist/server/index.js +172 -71
- package/dist/server/openapi.d.ts +147 -0
- package/dist/server/openapi.d.ts.map +1 -1
- 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 -3
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.
|
|
12661
|
+
version: "0.15.27",
|
|
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",
|
|
@@ -12731,7 +12732,9 @@ var package_default = {
|
|
|
12731
12732
|
"verify:release": "bun run scripts/verify-public-release.ts --mode=review",
|
|
12732
12733
|
"verify:release-review": "bun run scripts/verify-npm-release-agent-review.ts",
|
|
12733
12734
|
"verify:attested-container-candidate": "bun run scripts/attested-container-candidate.ts verify",
|
|
12734
|
-
"test:attested-container-candidate": "bun test scripts/attested-container-candidate.test.ts",
|
|
12735
|
+
"test:attested-container-candidate": "bun test scripts/attested-container-candidate.test.ts scripts/attested-container-compatibility-vector.test.ts",
|
|
12736
|
+
"emit:iapp-deployment-compatibility-vector": "bun run scripts/attested-container-compatibility-vector.ts emit",
|
|
12737
|
+
"verify:iapp-deployment-compatibility-vector": "bun run scripts/attested-container-compatibility-vector.ts verify",
|
|
12735
12738
|
"issue:release-review": "bun run scripts/issue-npm-release-agent-review.ts",
|
|
12736
12739
|
prepublishOnly: "bun run scripts/verify-public-release.ts --mode=publish",
|
|
12737
12740
|
postinstall: "mkdir -p $HOME/.hasna/todos $HOME/.hasna/todos/training 2>/dev/null || true"
|
|
@@ -12778,6 +12781,7 @@ var package_default = {
|
|
|
12778
12781
|
zod: "^3.24.2"
|
|
12779
12782
|
},
|
|
12780
12783
|
overrides: {
|
|
12784
|
+
ajv: "8.20.0",
|
|
12781
12785
|
"fast-uri": "3.1.2"
|
|
12782
12786
|
},
|
|
12783
12787
|
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.
|
|
12774
|
+
version: "0.15.27",
|
|
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",
|
|
@@ -12844,7 +12845,9 @@ var package_default = {
|
|
|
12844
12845
|
"verify:release": "bun run scripts/verify-public-release.ts --mode=review",
|
|
12845
12846
|
"verify:release-review": "bun run scripts/verify-npm-release-agent-review.ts",
|
|
12846
12847
|
"verify:attested-container-candidate": "bun run scripts/attested-container-candidate.ts verify",
|
|
12847
|
-
"test:attested-container-candidate": "bun test scripts/attested-container-candidate.test.ts",
|
|
12848
|
+
"test:attested-container-candidate": "bun test scripts/attested-container-candidate.test.ts scripts/attested-container-compatibility-vector.test.ts",
|
|
12849
|
+
"emit:iapp-deployment-compatibility-vector": "bun run scripts/attested-container-compatibility-vector.ts emit",
|
|
12850
|
+
"verify:iapp-deployment-compatibility-vector": "bun run scripts/attested-container-compatibility-vector.ts verify",
|
|
12848
12851
|
"issue:release-review": "bun run scripts/issue-npm-release-agent-review.ts",
|
|
12849
12852
|
prepublishOnly: "bun run scripts/verify-public-release.ts --mode=publish",
|
|
12850
12853
|
postinstall: "mkdir -p $HOME/.hasna/todos $HOME/.hasna/todos/training 2>/dev/null || true"
|
|
@@ -12891,6 +12894,7 @@ var package_default = {
|
|
|
12891
12894
|
zod: "^3.24.2"
|
|
12892
12895
|
},
|
|
12893
12896
|
overrides: {
|
|
12897
|
+
ajv: "8.20.0",
|
|
12894
12898
|
"fast-uri": "3.1.2"
|
|
12895
12899
|
},
|
|
12896
12900
|
devDependencies: {
|
|
@@ -40426,6 +40430,12 @@ function parseTodosTaskManifestBindingLookup(input) {
|
|
|
40426
40430
|
return parsed.data;
|
|
40427
40431
|
}
|
|
40428
40432
|
|
|
40433
|
+
// src/task-manifest/plan-slug.ts
|
|
40434
|
+
function taskManifestPlanSlug(manifest, planId) {
|
|
40435
|
+
const base = normalizeSlug(manifest.plan.key) || normalizeSlug(manifest.plan.name) || "plan";
|
|
40436
|
+
return `${base}-${planId}`;
|
|
40437
|
+
}
|
|
40438
|
+
|
|
40429
40439
|
// src/task-manifest/backend.ts
|
|
40430
40440
|
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
40441
|
function validateTaskManifestBindingLookupRows(rows, tenantId, planId) {
|
|
@@ -40776,7 +40786,7 @@ class SqliteTodosTaskManifestBackend {
|
|
|
40776
40786
|
}
|
|
40777
40787
|
}
|
|
40778
40788
|
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,
|
|
40789
|
+
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
40790
|
fault(faults, "after_plan_write");
|
|
40781
40791
|
for (const task3 of manifest.tasks) {
|
|
40782
40792
|
const taskId = input.graph.task_ids[task3.key];
|
|
@@ -40999,7 +41009,7 @@ class SqliteTodosTaskManifestBackend {
|
|
|
40999
41009
|
throw new TodosTaskManifestError("TODOS_TASK_MANIFEST_COMPENSATION_REFUSED", "Compensation refused: graph changed since apply", { actualReadback });
|
|
41000
41010
|
}
|
|
41001
41011
|
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"] !==
|
|
41012
|
+
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
41013
|
throw new TodosTaskManifestError("TODOS_TASK_MANIFEST_COMPENSATION_REFUSED", "Compensation refused: plan changed since apply");
|
|
41004
41014
|
}
|
|
41005
41015
|
for (const task3 of manifest.tasks) {
|
|
@@ -41197,7 +41207,7 @@ function taskPayload2(manifest, task3, taskId, planId, now4) {
|
|
|
41197
41207
|
function planPayload(input) {
|
|
41198
41208
|
return {
|
|
41199
41209
|
id: input.graph.plan_id,
|
|
41200
|
-
slug:
|
|
41210
|
+
slug: taskManifestPlanSlug(input.manifest, input.graph.plan_id),
|
|
41201
41211
|
project_id: input.manifest.project_id,
|
|
41202
41212
|
task_list_id: input.manifest.task_list_id ?? null,
|
|
41203
41213
|
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.
|
|
35806
|
+
version: "0.15.27",
|
|
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",
|
|
@@ -35876,7 +35877,9 @@ var init_package = __esm(() => {
|
|
|
35876
35877
|
"verify:release": "bun run scripts/verify-public-release.ts --mode=review",
|
|
35877
35878
|
"verify:release-review": "bun run scripts/verify-npm-release-agent-review.ts",
|
|
35878
35879
|
"verify:attested-container-candidate": "bun run scripts/attested-container-candidate.ts verify",
|
|
35879
|
-
"test:attested-container-candidate": "bun test scripts/attested-container-candidate.test.ts",
|
|
35880
|
+
"test:attested-container-candidate": "bun test scripts/attested-container-candidate.test.ts scripts/attested-container-compatibility-vector.test.ts",
|
|
35881
|
+
"emit:iapp-deployment-compatibility-vector": "bun run scripts/attested-container-compatibility-vector.ts emit",
|
|
35882
|
+
"verify:iapp-deployment-compatibility-vector": "bun run scripts/attested-container-compatibility-vector.ts verify",
|
|
35880
35883
|
"issue:release-review": "bun run scripts/issue-npm-release-agent-review.ts",
|
|
35881
35884
|
prepublishOnly: "bun run scripts/verify-public-release.ts --mode=publish",
|
|
35882
35885
|
postinstall: "mkdir -p $HOME/.hasna/todos $HOME/.hasna/todos/training 2>/dev/null || true"
|
|
@@ -35923,6 +35926,7 @@ var init_package = __esm(() => {
|
|
|
35923
35926
|
zod: "^3.24.2"
|
|
35924
35927
|
},
|
|
35925
35928
|
overrides: {
|
|
35929
|
+
ajv: "8.20.0",
|
|
35926
35930
|
"fast-uri": "3.1.2"
|
|
35927
35931
|
},
|
|
35928
35932
|
devDependencies: {
|
|
@@ -51828,6 +51832,13 @@ var init_schema2 = __esm(() => {
|
|
|
51828
51832
|
}).strict();
|
|
51829
51833
|
});
|
|
51830
51834
|
|
|
51835
|
+
// src/task-manifest/plan-slug.ts
|
|
51836
|
+
function taskManifestPlanSlug(manifest, planId) {
|
|
51837
|
+
const base = normalizeSlug(manifest.plan.key) || normalizeSlug(manifest.plan.name) || "plan";
|
|
51838
|
+
return `${base}-${planId}`;
|
|
51839
|
+
}
|
|
51840
|
+
var init_plan_slug = () => {};
|
|
51841
|
+
|
|
51831
51842
|
// src/task-manifest/backend.ts
|
|
51832
51843
|
function validateTaskManifestBindingLookupRows(rows, tenantId, planId) {
|
|
51833
51844
|
if (rows.length === 0) {
|
|
@@ -51964,6 +51975,7 @@ function postgresTodosTaskManifestSchemaSql(tenantId = "default") {
|
|
|
51964
51975
|
var sqliteTails;
|
|
51965
51976
|
var init_sqlite2 = __esm(() => {
|
|
51966
51977
|
init_canonical();
|
|
51978
|
+
init_plan_slug();
|
|
51967
51979
|
init_backend();
|
|
51968
51980
|
init_types5();
|
|
51969
51981
|
sqliteTails = new WeakMap;
|
|
@@ -52064,7 +52076,7 @@ function taskPayload2(manifest, task3, taskId, planId, now4) {
|
|
|
52064
52076
|
function planPayload(input) {
|
|
52065
52077
|
return {
|
|
52066
52078
|
id: input.graph.plan_id,
|
|
52067
|
-
slug:
|
|
52079
|
+
slug: taskManifestPlanSlug(input.manifest, input.graph.plan_id),
|
|
52068
52080
|
project_id: input.manifest.project_id,
|
|
52069
52081
|
task_list_id: input.manifest.task_list_id ?? null,
|
|
52070
52082
|
agent_id: null,
|
|
@@ -52613,6 +52625,7 @@ class PostgresTodosTaskManifestBackend {
|
|
|
52613
52625
|
}
|
|
52614
52626
|
var init_postgres3 = __esm(() => {
|
|
52615
52627
|
init_canonical();
|
|
52628
|
+
init_plan_slug();
|
|
52616
52629
|
init_backend();
|
|
52617
52630
|
init_postgres_sync();
|
|
52618
52631
|
init_types5();
|
|
@@ -54448,7 +54461,7 @@ __export(exports_openapi, {
|
|
|
54448
54461
|
buildV1OpenApiDocument: () => buildV1OpenApiDocument
|
|
54449
54462
|
});
|
|
54450
54463
|
function buildV1OpenApiDocument(version = getPackageVersion()) {
|
|
54451
|
-
return {
|
|
54464
|
+
return structuredClone({
|
|
54452
54465
|
openapi: "3.1.0",
|
|
54453
54466
|
info: {
|
|
54454
54467
|
title: "Todos V1 API",
|
|
@@ -54463,6 +54476,9 @@ function buildV1OpenApiDocument(version = getPackageVersion()) {
|
|
|
54463
54476
|
schemas: {
|
|
54464
54477
|
Task: taskSchema,
|
|
54465
54478
|
Project: projectSchema,
|
|
54479
|
+
TaskManifestBounds: taskManifestBoundsSchema,
|
|
54480
|
+
TaskManifestCapability: taskManifestCapabilitySchema,
|
|
54481
|
+
TaskManifestCapabilityResponse: taskManifestCapabilityResponseSchema,
|
|
54466
54482
|
TaskManifestBindingLookupRequest: taskManifestBindingLookupRequestSchema,
|
|
54467
54483
|
TaskManifestBindingLookupResult: taskManifestBindingLookupResultSchema,
|
|
54468
54484
|
TaskManifestBindingLookupResponse: taskManifestBindingLookupResponseSchema,
|
|
@@ -55462,6 +55478,23 @@ function buildV1OpenApiDocument(version = getPackageVersion()) {
|
|
|
55462
55478
|
},
|
|
55463
55479
|
security: [{ apiKey: [] }],
|
|
55464
55480
|
paths: {
|
|
55481
|
+
"/v1/task-manifest/capability": {
|
|
55482
|
+
get: {
|
|
55483
|
+
operationId: "getTaskManifestCapability",
|
|
55484
|
+
summary: "Read the current task-manifest authority capability and tenant",
|
|
55485
|
+
responses: {
|
|
55486
|
+
"200": {
|
|
55487
|
+
content: {
|
|
55488
|
+
"application/json": {
|
|
55489
|
+
schema: { $ref: "#/components/schemas/TaskManifestCapabilityResponse" }
|
|
55490
|
+
}
|
|
55491
|
+
}
|
|
55492
|
+
},
|
|
55493
|
+
"401": { content: { "application/json": { schema: { $ref: "#/components/schemas/ErrorResponse" } } } },
|
|
55494
|
+
"503": { content: { "application/json": { schema: { $ref: "#/components/schemas/ErrorResponse" } } } }
|
|
55495
|
+
}
|
|
55496
|
+
}
|
|
55497
|
+
},
|
|
55465
55498
|
"/v1/task-manifest/bindings/lookup": {
|
|
55466
55499
|
post: {
|
|
55467
55500
|
operationId: "lookupTaskManifestBinding",
|
|
@@ -56320,9 +56353,9 @@ function buildV1OpenApiDocument(version = getPackageVersion()) {
|
|
|
56320
56353
|
}
|
|
56321
56354
|
}
|
|
56322
56355
|
}
|
|
56323
|
-
};
|
|
56356
|
+
});
|
|
56324
56357
|
}
|
|
56325
|
-
var taskSchema, projectSchema, taskManifestBindingLookupRequestSchema, taskManifestBindingLookupResultSchema, taskManifestBindingLookupResponseSchema, taskListSchema, projectTaskListEnsureReceiptSchema, projectTaskListEnsureResultSchema, projectTaskListRollbackResultSchema, taskCommentSchema, staleLockHandoffInputSchema, staleLockHandoffReceiptSchema, taskGitRefSchema, planSchema, planProjectLinkReceiptSchema, planProjectLinkResultSchema, planProjectLinkRollbackResultSchema, templateTaskSchema, templateSchema, templateVariableSchema, createTemplateTaskInputSchema;
|
|
56358
|
+
var taskSchema, taskManifestBoundsSchema, taskManifestCapabilitySchema, taskManifestCapabilityResponseSchema, projectSchema, taskManifestBindingLookupRequestSchema, taskManifestBindingLookupResultSchema, taskManifestBindingLookupResponseSchema, taskListSchema, projectTaskListEnsureReceiptSchema, projectTaskListEnsureResultSchema, projectTaskListRollbackResultSchema, taskCommentSchema, staleLockHandoffInputSchema, staleLockHandoffReceiptSchema, taskGitRefSchema, planSchema, planProjectLinkReceiptSchema, planProjectLinkResultSchema, planProjectLinkRollbackResultSchema, templateTaskSchema, templateSchema, templateVariableSchema, createTemplateTaskInputSchema;
|
|
56326
56359
|
var init_openapi = __esm(() => {
|
|
56327
56360
|
init_package_version();
|
|
56328
56361
|
init_types();
|
|
@@ -56348,6 +56381,74 @@ var init_openapi = __esm(() => {
|
|
|
56348
56381
|
updated_at: { type: "string" }
|
|
56349
56382
|
}
|
|
56350
56383
|
};
|
|
56384
|
+
taskManifestBoundsSchema = {
|
|
56385
|
+
type: "object",
|
|
56386
|
+
additionalProperties: false,
|
|
56387
|
+
required: [
|
|
56388
|
+
"tasks",
|
|
56389
|
+
"dependencies",
|
|
56390
|
+
"comments",
|
|
56391
|
+
"verifications",
|
|
56392
|
+
"effects",
|
|
56393
|
+
"metadata_fields",
|
|
56394
|
+
"effect_payload_fields",
|
|
56395
|
+
"request_bytes",
|
|
56396
|
+
"response_bytes"
|
|
56397
|
+
],
|
|
56398
|
+
properties: {
|
|
56399
|
+
tasks: { type: "integer", minimum: 1 },
|
|
56400
|
+
dependencies: { type: "integer", minimum: 1 },
|
|
56401
|
+
comments: { type: "integer", minimum: 1 },
|
|
56402
|
+
verifications: { type: "integer", minimum: 1 },
|
|
56403
|
+
effects: { type: "integer", minimum: 1 },
|
|
56404
|
+
metadata_fields: { type: "integer", minimum: 1 },
|
|
56405
|
+
effect_payload_fields: { type: "integer", minimum: 1 },
|
|
56406
|
+
request_bytes: { type: "integer", minimum: 1 },
|
|
56407
|
+
response_bytes: { type: "integer", minimum: 1 }
|
|
56408
|
+
}
|
|
56409
|
+
};
|
|
56410
|
+
taskManifestCapabilitySchema = {
|
|
56411
|
+
type: "object",
|
|
56412
|
+
additionalProperties: false,
|
|
56413
|
+
required: [
|
|
56414
|
+
"authority",
|
|
56415
|
+
"route",
|
|
56416
|
+
"schema_version",
|
|
56417
|
+
"tenant_id",
|
|
56418
|
+
"backend",
|
|
56419
|
+
"deterministic_ids",
|
|
56420
|
+
"immutable_receipts",
|
|
56421
|
+
"transactional_outbox",
|
|
56422
|
+
"idempotent_outbox_delivery",
|
|
56423
|
+
"exact_bounded_readback",
|
|
56424
|
+
"conditional_compensation",
|
|
56425
|
+
"transcript_safe",
|
|
56426
|
+
"bounds"
|
|
56427
|
+
],
|
|
56428
|
+
properties: {
|
|
56429
|
+
authority: { type: "string", enum: ["todos"] },
|
|
56430
|
+
route: { type: "string", enum: ["todos.task-manifest.v1"] },
|
|
56431
|
+
schema_version: { type: "integer", enum: [1] },
|
|
56432
|
+
tenant_id: { type: "string", minLength: 1, maxLength: 200 },
|
|
56433
|
+
backend: { type: "string", enum: ["sqlite", "postgresql", "http"] },
|
|
56434
|
+
deterministic_ids: { type: "boolean", enum: [true] },
|
|
56435
|
+
immutable_receipts: { type: "boolean", enum: [true] },
|
|
56436
|
+
transactional_outbox: { type: "boolean", enum: [true] },
|
|
56437
|
+
idempotent_outbox_delivery: { type: "boolean", enum: [true] },
|
|
56438
|
+
exact_bounded_readback: { type: "boolean", enum: [true] },
|
|
56439
|
+
conditional_compensation: { type: "boolean", enum: [true] },
|
|
56440
|
+
transcript_safe: { type: "boolean", enum: [false] },
|
|
56441
|
+
bounds: { $ref: "#/components/schemas/TaskManifestBounds" }
|
|
56442
|
+
}
|
|
56443
|
+
};
|
|
56444
|
+
taskManifestCapabilityResponseSchema = {
|
|
56445
|
+
type: "object",
|
|
56446
|
+
additionalProperties: false,
|
|
56447
|
+
required: ["capability"],
|
|
56448
|
+
properties: {
|
|
56449
|
+
capability: { $ref: "#/components/schemas/TaskManifestCapability" }
|
|
56450
|
+
}
|
|
56451
|
+
};
|
|
56351
56452
|
projectSchema = {
|
|
56352
56453
|
type: "object",
|
|
56353
56454
|
properties: {
|
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.
|
|
44
|
+
version: "0.15.27",
|
|
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",
|
|
@@ -114,7 +115,9 @@ var package_default = {
|
|
|
114
115
|
"verify:release": "bun run scripts/verify-public-release.ts --mode=review",
|
|
115
116
|
"verify:release-review": "bun run scripts/verify-npm-release-agent-review.ts",
|
|
116
117
|
"verify:attested-container-candidate": "bun run scripts/attested-container-candidate.ts verify",
|
|
117
|
-
"test:attested-container-candidate": "bun test scripts/attested-container-candidate.test.ts",
|
|
118
|
+
"test:attested-container-candidate": "bun test scripts/attested-container-candidate.test.ts scripts/attested-container-compatibility-vector.test.ts",
|
|
119
|
+
"emit:iapp-deployment-compatibility-vector": "bun run scripts/attested-container-compatibility-vector.ts emit",
|
|
120
|
+
"verify:iapp-deployment-compatibility-vector": "bun run scripts/attested-container-compatibility-vector.ts verify",
|
|
118
121
|
"issue:release-review": "bun run scripts/issue-npm-release-agent-review.ts",
|
|
119
122
|
prepublishOnly: "bun run scripts/verify-public-release.ts --mode=publish",
|
|
120
123
|
postinstall: "mkdir -p $HOME/.hasna/todos $HOME/.hasna/todos/training 2>/dev/null || true"
|
|
@@ -161,6 +164,7 @@ var package_default = {
|
|
|
161
164
|
zod: "^3.24.2"
|
|
162
165
|
},
|
|
163
166
|
overrides: {
|
|
167
|
+
ajv: "8.20.0",
|
|
164
168
|
"fast-uri": "3.1.2"
|
|
165
169
|
},
|
|
166
170
|
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.
|
|
12664
|
+
version: "0.15.27",
|
|
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",
|
|
@@ -12734,7 +12735,9 @@ var package_default = {
|
|
|
12734
12735
|
"verify:release": "bun run scripts/verify-public-release.ts --mode=review",
|
|
12735
12736
|
"verify:release-review": "bun run scripts/verify-npm-release-agent-review.ts",
|
|
12736
12737
|
"verify:attested-container-candidate": "bun run scripts/attested-container-candidate.ts verify",
|
|
12737
|
-
"test:attested-container-candidate": "bun test scripts/attested-container-candidate.test.ts",
|
|
12738
|
+
"test:attested-container-candidate": "bun test scripts/attested-container-candidate.test.ts scripts/attested-container-compatibility-vector.test.ts",
|
|
12739
|
+
"emit:iapp-deployment-compatibility-vector": "bun run scripts/attested-container-compatibility-vector.ts emit",
|
|
12740
|
+
"verify:iapp-deployment-compatibility-vector": "bun run scripts/attested-container-compatibility-vector.ts verify",
|
|
12738
12741
|
"issue:release-review": "bun run scripts/issue-npm-release-agent-review.ts",
|
|
12739
12742
|
prepublishOnly: "bun run scripts/verify-public-release.ts --mode=publish",
|
|
12740
12743
|
postinstall: "mkdir -p $HOME/.hasna/todos $HOME/.hasna/todos/training 2>/dev/null || true"
|
|
@@ -12781,6 +12784,7 @@ var package_default = {
|
|
|
12781
12784
|
zod: "^3.24.2"
|
|
12782
12785
|
},
|
|
12783
12786
|
overrides: {
|
|
12787
|
+
ajv: "8.20.0",
|
|
12784
12788
|
"fast-uri": "3.1.2"
|
|
12785
12789
|
},
|
|
12786
12790
|
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.
|
|
12661
|
+
version: "0.15.27",
|
|
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",
|
|
@@ -12731,7 +12732,9 @@ var package_default = {
|
|
|
12731
12732
|
"verify:release": "bun run scripts/verify-public-release.ts --mode=review",
|
|
12732
12733
|
"verify:release-review": "bun run scripts/verify-npm-release-agent-review.ts",
|
|
12733
12734
|
"verify:attested-container-candidate": "bun run scripts/attested-container-candidate.ts verify",
|
|
12734
|
-
"test:attested-container-candidate": "bun test scripts/attested-container-candidate.test.ts",
|
|
12735
|
+
"test:attested-container-candidate": "bun test scripts/attested-container-candidate.test.ts scripts/attested-container-compatibility-vector.test.ts",
|
|
12736
|
+
"emit:iapp-deployment-compatibility-vector": "bun run scripts/attested-container-compatibility-vector.ts emit",
|
|
12737
|
+
"verify:iapp-deployment-compatibility-vector": "bun run scripts/attested-container-compatibility-vector.ts verify",
|
|
12735
12738
|
"issue:release-review": "bun run scripts/issue-npm-release-agent-review.ts",
|
|
12736
12739
|
prepublishOnly: "bun run scripts/verify-public-release.ts --mode=publish",
|
|
12737
12740
|
postinstall: "mkdir -p $HOME/.hasna/todos $HOME/.hasna/todos/training 2>/dev/null || true"
|
|
@@ -12778,6 +12781,7 @@ var package_default = {
|
|
|
12778
12781
|
zod: "^3.24.2"
|
|
12779
12782
|
},
|
|
12780
12783
|
overrides: {
|
|
12784
|
+
ajv: "8.20.0",
|
|
12781
12785
|
"fast-uri": "3.1.2"
|
|
12782
12786
|
},
|
|
12783
12787
|
devDependencies: {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"packageName": "@hasna/todos",
|
|
3
|
-
"packageVersion": "0.15.
|
|
3
|
+
"packageVersion": "0.15.27",
|
|
4
4
|
"repository": "https://github.com/hasna/todos.git",
|
|
5
|
-
"gitCommit": "
|
|
6
|
-
"gitTree": "
|
|
7
|
-
"sourceTreeSha256": "
|
|
8
|
-
"generatedAt": "2026-08-
|
|
5
|
+
"gitCommit": "193fbcfd5e29f70c6d016722014698261b2e3023",
|
|
6
|
+
"gitTree": "fce50654ac59aabc7584bc954b7e273698e19011",
|
|
7
|
+
"sourceTreeSha256": "40fbf9a04996f09ca424f3f42220409d186be9b8c91f07a1960ca93f7bcee464",
|
|
8
|
+
"generatedAt": "2026-08-11T16:15:36.000Z"
|
|
9
9
|
}
|
package/dist/sdk/index.js
CHANGED
|
@@ -924,6 +924,13 @@ class TodosV1Client {
|
|
|
924
924
|
init
|
|
925
925
|
});
|
|
926
926
|
}
|
|
927
|
+
async getTaskManifestCapability(init) {
|
|
928
|
+
return this.request("GET", `/v1/task-manifest/capability`, {
|
|
929
|
+
body: undefined,
|
|
930
|
+
query: undefined,
|
|
931
|
+
init
|
|
932
|
+
});
|
|
933
|
+
}
|
|
927
934
|
async listTasks(query, init) {
|
|
928
935
|
return this.request("GET", `/v1/tasks`, {
|
|
929
936
|
body: undefined,
|
|
@@ -28,6 +28,35 @@ export interface Project {
|
|
|
28
28
|
"created_at"?: string;
|
|
29
29
|
"updated_at"?: string;
|
|
30
30
|
}
|
|
31
|
+
export interface TaskManifestBounds {
|
|
32
|
+
"tasks": number;
|
|
33
|
+
"dependencies": number;
|
|
34
|
+
"comments": number;
|
|
35
|
+
"verifications": number;
|
|
36
|
+
"effects": number;
|
|
37
|
+
"metadata_fields": number;
|
|
38
|
+
"effect_payload_fields": number;
|
|
39
|
+
"request_bytes": number;
|
|
40
|
+
"response_bytes": number;
|
|
41
|
+
}
|
|
42
|
+
export interface TaskManifestCapability {
|
|
43
|
+
"authority": "todos";
|
|
44
|
+
"route": "todos.task-manifest.v1";
|
|
45
|
+
"schema_version": 1;
|
|
46
|
+
"tenant_id": string;
|
|
47
|
+
"backend": "sqlite" | "postgresql" | "http";
|
|
48
|
+
"deterministic_ids": true;
|
|
49
|
+
"immutable_receipts": true;
|
|
50
|
+
"transactional_outbox": true;
|
|
51
|
+
"idempotent_outbox_delivery": true;
|
|
52
|
+
"exact_bounded_readback": true;
|
|
53
|
+
"conditional_compensation": true;
|
|
54
|
+
"transcript_safe": false;
|
|
55
|
+
"bounds": TaskManifestBounds;
|
|
56
|
+
}
|
|
57
|
+
export interface TaskManifestCapabilityResponse {
|
|
58
|
+
"capability": TaskManifestCapability;
|
|
59
|
+
}
|
|
31
60
|
export interface TaskManifestBindingLookupRequest {
|
|
32
61
|
"authority": "todos";
|
|
33
62
|
"route": "todos.task-manifest.v1";
|
|
@@ -814,6 +843,8 @@ export declare class TodosV1Client {
|
|
|
814
843
|
}>;
|
|
815
844
|
/** Recover one exact task-manifest apply receipt from its managed plan id */
|
|
816
845
|
lookupTaskManifestBinding(body: TaskManifestBindingLookupRequest, init?: RequestInit): Promise<TaskManifestBindingLookupResponse>;
|
|
846
|
+
/** Read the current task-manifest authority capability and tenant */
|
|
847
|
+
getTaskManifestCapability(init?: RequestInit): Promise<TaskManifestCapabilityResponse>;
|
|
817
848
|
/** List tasks */
|
|
818
849
|
listTasks(query?: {
|
|
819
850
|
"status"?: "pending" | "in_progress" | "completed" | "failed" | "cancelled" | Array<"pending" | "in_progress" | "completed" | "failed" | "cancelled">;
|