@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/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.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.25",
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, null, input.now, input.now);
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"] !== null) {
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: null,
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.25",
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: null,
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.25",
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.25",
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.25",
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.25",
3
+ "packageVersion": "0.15.27",
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": "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">;