@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/server/openapi.d.ts
CHANGED
|
@@ -122,6 +122,118 @@ export declare function buildV1OpenApiDocument(version?: string): {
|
|
|
122
122
|
};
|
|
123
123
|
};
|
|
124
124
|
};
|
|
125
|
+
TaskManifestBounds: {
|
|
126
|
+
readonly type: "object";
|
|
127
|
+
readonly additionalProperties: false;
|
|
128
|
+
readonly required: readonly ["tasks", "dependencies", "comments", "verifications", "effects", "metadata_fields", "effect_payload_fields", "request_bytes", "response_bytes"];
|
|
129
|
+
readonly properties: {
|
|
130
|
+
readonly tasks: {
|
|
131
|
+
readonly type: "integer";
|
|
132
|
+
readonly minimum: 1;
|
|
133
|
+
};
|
|
134
|
+
readonly dependencies: {
|
|
135
|
+
readonly type: "integer";
|
|
136
|
+
readonly minimum: 1;
|
|
137
|
+
};
|
|
138
|
+
readonly comments: {
|
|
139
|
+
readonly type: "integer";
|
|
140
|
+
readonly minimum: 1;
|
|
141
|
+
};
|
|
142
|
+
readonly verifications: {
|
|
143
|
+
readonly type: "integer";
|
|
144
|
+
readonly minimum: 1;
|
|
145
|
+
};
|
|
146
|
+
readonly effects: {
|
|
147
|
+
readonly type: "integer";
|
|
148
|
+
readonly minimum: 1;
|
|
149
|
+
};
|
|
150
|
+
readonly metadata_fields: {
|
|
151
|
+
readonly type: "integer";
|
|
152
|
+
readonly minimum: 1;
|
|
153
|
+
};
|
|
154
|
+
readonly effect_payload_fields: {
|
|
155
|
+
readonly type: "integer";
|
|
156
|
+
readonly minimum: 1;
|
|
157
|
+
};
|
|
158
|
+
readonly request_bytes: {
|
|
159
|
+
readonly type: "integer";
|
|
160
|
+
readonly minimum: 1;
|
|
161
|
+
};
|
|
162
|
+
readonly response_bytes: {
|
|
163
|
+
readonly type: "integer";
|
|
164
|
+
readonly minimum: 1;
|
|
165
|
+
};
|
|
166
|
+
};
|
|
167
|
+
};
|
|
168
|
+
TaskManifestCapability: {
|
|
169
|
+
readonly type: "object";
|
|
170
|
+
readonly additionalProperties: false;
|
|
171
|
+
readonly required: readonly ["authority", "route", "schema_version", "tenant_id", "backend", "deterministic_ids", "immutable_receipts", "transactional_outbox", "idempotent_outbox_delivery", "exact_bounded_readback", "conditional_compensation", "transcript_safe", "bounds"];
|
|
172
|
+
readonly properties: {
|
|
173
|
+
readonly authority: {
|
|
174
|
+
readonly type: "string";
|
|
175
|
+
readonly enum: readonly ["todos"];
|
|
176
|
+
};
|
|
177
|
+
readonly route: {
|
|
178
|
+
readonly type: "string";
|
|
179
|
+
readonly enum: readonly ["todos.task-manifest.v1"];
|
|
180
|
+
};
|
|
181
|
+
readonly schema_version: {
|
|
182
|
+
readonly type: "integer";
|
|
183
|
+
readonly enum: readonly [1];
|
|
184
|
+
};
|
|
185
|
+
readonly tenant_id: {
|
|
186
|
+
readonly type: "string";
|
|
187
|
+
readonly minLength: 1;
|
|
188
|
+
readonly maxLength: 200;
|
|
189
|
+
};
|
|
190
|
+
readonly backend: {
|
|
191
|
+
readonly type: "string";
|
|
192
|
+
readonly enum: readonly ["sqlite", "postgresql", "http"];
|
|
193
|
+
};
|
|
194
|
+
readonly deterministic_ids: {
|
|
195
|
+
readonly type: "boolean";
|
|
196
|
+
readonly enum: readonly [true];
|
|
197
|
+
};
|
|
198
|
+
readonly immutable_receipts: {
|
|
199
|
+
readonly type: "boolean";
|
|
200
|
+
readonly enum: readonly [true];
|
|
201
|
+
};
|
|
202
|
+
readonly transactional_outbox: {
|
|
203
|
+
readonly type: "boolean";
|
|
204
|
+
readonly enum: readonly [true];
|
|
205
|
+
};
|
|
206
|
+
readonly idempotent_outbox_delivery: {
|
|
207
|
+
readonly type: "boolean";
|
|
208
|
+
readonly enum: readonly [true];
|
|
209
|
+
};
|
|
210
|
+
readonly exact_bounded_readback: {
|
|
211
|
+
readonly type: "boolean";
|
|
212
|
+
readonly enum: readonly [true];
|
|
213
|
+
};
|
|
214
|
+
readonly conditional_compensation: {
|
|
215
|
+
readonly type: "boolean";
|
|
216
|
+
readonly enum: readonly [true];
|
|
217
|
+
};
|
|
218
|
+
readonly transcript_safe: {
|
|
219
|
+
readonly type: "boolean";
|
|
220
|
+
readonly enum: readonly [false];
|
|
221
|
+
};
|
|
222
|
+
readonly bounds: {
|
|
223
|
+
readonly $ref: "#/components/schemas/TaskManifestBounds";
|
|
224
|
+
};
|
|
225
|
+
};
|
|
226
|
+
};
|
|
227
|
+
TaskManifestCapabilityResponse: {
|
|
228
|
+
readonly type: "object";
|
|
229
|
+
readonly additionalProperties: false;
|
|
230
|
+
readonly required: readonly ["capability"];
|
|
231
|
+
readonly properties: {
|
|
232
|
+
readonly capability: {
|
|
233
|
+
readonly $ref: "#/components/schemas/TaskManifestCapability";
|
|
234
|
+
};
|
|
235
|
+
};
|
|
236
|
+
};
|
|
125
237
|
TaskManifestBindingLookupRequest: {
|
|
126
238
|
readonly type: "object";
|
|
127
239
|
readonly additionalProperties: false;
|
|
@@ -2478,6 +2590,41 @@ export declare function buildV1OpenApiDocument(version?: string): {
|
|
|
2478
2590
|
apiKey: never[];
|
|
2479
2591
|
}[];
|
|
2480
2592
|
paths: {
|
|
2593
|
+
"/v1/task-manifest/capability": {
|
|
2594
|
+
get: {
|
|
2595
|
+
operationId: string;
|
|
2596
|
+
summary: string;
|
|
2597
|
+
responses: {
|
|
2598
|
+
"200": {
|
|
2599
|
+
content: {
|
|
2600
|
+
"application/json": {
|
|
2601
|
+
schema: {
|
|
2602
|
+
$ref: string;
|
|
2603
|
+
};
|
|
2604
|
+
};
|
|
2605
|
+
};
|
|
2606
|
+
};
|
|
2607
|
+
"401": {
|
|
2608
|
+
content: {
|
|
2609
|
+
"application/json": {
|
|
2610
|
+
schema: {
|
|
2611
|
+
$ref: string;
|
|
2612
|
+
};
|
|
2613
|
+
};
|
|
2614
|
+
};
|
|
2615
|
+
};
|
|
2616
|
+
"503": {
|
|
2617
|
+
content: {
|
|
2618
|
+
"application/json": {
|
|
2619
|
+
schema: {
|
|
2620
|
+
$ref: string;
|
|
2621
|
+
};
|
|
2622
|
+
};
|
|
2623
|
+
};
|
|
2624
|
+
};
|
|
2625
|
+
};
|
|
2626
|
+
};
|
|
2627
|
+
};
|
|
2481
2628
|
"/v1/task-manifest/bindings/lookup": {
|
|
2482
2629
|
post: {
|
|
2483
2630
|
operationId: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openapi.d.ts","sourceRoot":"","sources":["../../src/server/openapi.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"openapi.d.ts","sourceRoot":"","sources":["../../src/server/openapi.ts"],"names":[],"mappings":"AA2fA,wBAAgB,sBAAsB,CAAC,OAAO,SAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwpDnE"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { TodosTaskManifest } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Deterministic plan slug for task-manifest graph writes.
|
|
4
|
+
*
|
|
5
|
+
* The full deterministic plan UUID is intentionally part of the slug: plan
|
|
6
|
+
* names and manifest keys can repeat inside a project, but graph ids cannot.
|
|
7
|
+
* SQLite startup also backfills NULL plan slugs, so both backends must write a
|
|
8
|
+
* stable slug up front for exact readback and compensation parity.
|
|
9
|
+
*/
|
|
10
|
+
export declare function taskManifestPlanSlug(manifest: Pick<TodosTaskManifest, "plan">, planId: string): string;
|
|
11
|
+
//# sourceMappingURL=plan-slug.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plan-slug.d.ts","sourceRoot":"","sources":["../../src/task-manifest/plan-slug.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,IAAI,CAAC,iBAAiB,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAGtG"}
|
|
@@ -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.27",
|
|
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",
|
|
@@ -73,7 +74,9 @@
|
|
|
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",
|
|
75
76
|
"verify:attested-container-candidate": "bun run scripts/attested-container-candidate.ts verify",
|
|
76
|
-
"test:attested-container-candidate": "bun test scripts/attested-container-candidate.test.ts",
|
|
77
|
+
"test:attested-container-candidate": "bun test scripts/attested-container-candidate.test.ts scripts/attested-container-compatibility-vector.test.ts",
|
|
78
|
+
"emit:iapp-deployment-compatibility-vector": "bun run scripts/attested-container-compatibility-vector.ts emit",
|
|
79
|
+
"verify:iapp-deployment-compatibility-vector": "bun run scripts/attested-container-compatibility-vector.ts verify",
|
|
77
80
|
"issue:release-review": "bun run scripts/issue-npm-release-agent-review.ts",
|
|
78
81
|
"prepublishOnly": "bun run scripts/verify-public-release.ts --mode=publish",
|
|
79
82
|
"postinstall": "mkdir -p $HOME/.hasna/todos $HOME/.hasna/todos/training 2>/dev/null || true"
|
|
@@ -120,6 +123,7 @@
|
|
|
120
123
|
"zod": "^3.24.2"
|
|
121
124
|
},
|
|
122
125
|
"overrides": {
|
|
126
|
+
"ajv": "8.20.0",
|
|
123
127
|
"fast-uri": "3.1.2"
|
|
124
128
|
},
|
|
125
129
|
"devDependencies": {
|