@hasna/todos 0.11.71 → 0.11.72
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/commands/query-commands.d.ts.map +1 -1
- package/dist/cli/index.js +444 -53
- package/dist/contracts.js +24 -5
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +765 -422
- package/dist/lib/shared-events.d.ts.map +1 -1
- package/dist/lib/task-route-contract.d.ts +2 -1
- package/dist/lib/task-route-contract.d.ts.map +1 -1
- package/dist/lib/task-route-sources.d.ts +68 -0
- package/dist/lib/task-route-sources.d.ts.map +1 -0
- package/dist/lib/task-routing.d.ts.map +1 -1
- package/dist/mcp/index.js +24 -5
- package/dist/registry.js +24 -5
- package/dist/release-provenance.json +3 -3
- package/dist/server/index.js +26 -7
- package/dist/storage.js +24 -5
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared-events.d.ts","sourceRoot":"","sources":["../../src/lib/shared-events.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAKnD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"shared-events.d.ts","sourceRoot":"","sources":["../../src/lib/shared-events.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAKnD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAe9C,MAAM,MAAM,oBAAoB,GAC5B,cAAc,GACd,cAAc,GACd,gBAAgB,GAChB,aAAa,GACb,cAAc,GACd,eAAe,GACf,qBAAqB,GACrB,gBAAgB,CAAC;AAErB,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA8BtG;AAuFD,wBAAsB,mBAAmB,CAAC,KAAK,EAAE;IAC/C,IAAI,EAAE,oBAAoB,CAAC;IAC3B,IAAI,EAAE,IAAI,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBhB;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAE/F"}
|
|
@@ -27,7 +27,8 @@ export declare function routingAutomationMetadata(task: Pick<Task, "metadata" |
|
|
|
27
27
|
export declare function routeEnabledForTask(task: Pick<Task, "metadata" | "tags">, taskList?: Pick<TaskList, "metadata"> | null): boolean | undefined;
|
|
28
28
|
export declare function workflowPointersFromMetadata(metadata: Record<string, unknown>): TaskWorkflowPointers;
|
|
29
29
|
export declare function compactWorkflowPointers(pointers: TaskWorkflowPointers): TaskWorkflowPointers;
|
|
30
|
-
export declare function
|
|
30
|
+
export declare function projectKindFromMetadata(...records: Array<Record<string, unknown> | undefined | null>): string | null;
|
|
31
|
+
export declare function classifyProjectKind(_path: string, metadata?: Record<string, unknown> | null): string | null;
|
|
31
32
|
export declare function isWorktreePath(path: string): boolean;
|
|
32
33
|
export declare function inferRootProjectId(project: Project): string | null;
|
|
33
34
|
//# sourceMappingURL=task-route-contract.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-route-contract.d.ts","sourceRoot":"","sources":["../../src/lib/task-route-contract.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAEjE,eAAO,MAAM,qCAAqC,8BAA8B,CAAC;AACjF,eAAO,MAAM,oCAAoC,mCAAmC,CAAC;AAErF,MAAM,WAAW,6BAA6B;IAC5C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,oBAAoB;IACnC,8BAA8B,CAAC,EAAE,MAAM,CAAC;IACxC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,wBAAwB;IACvC,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,QAAQ,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;CAC5B;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,CAYhE;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAE/E;AAqBD,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,UAAU,GAAG,mBAAmB,CAAC,EAClD,QAAQ,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,GAAG,IAAI,GAC3C,6BAA6B,GAAG,SAAS,CAsB3C;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAAC,EAAE,QAAQ,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,GAAG,IAAI,GAAG,OAAO,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"task-route-contract.d.ts","sourceRoot":"","sources":["../../src/lib/task-route-contract.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAEjE,eAAO,MAAM,qCAAqC,8BAA8B,CAAC;AACjF,eAAO,MAAM,oCAAoC,mCAAmC,CAAC;AAErF,MAAM,WAAW,6BAA6B;IAC5C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,oBAAoB;IACnC,8BAA8B,CAAC,EAAE,MAAM,CAAC;IACxC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,wBAAwB;IACvC,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,QAAQ,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;CAC5B;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,CAYhE;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAE/E;AAqBD,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,UAAU,GAAG,mBAAmB,CAAC,EAClD,QAAQ,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,GAAG,IAAI,GAC3C,6BAA6B,GAAG,SAAS,CAsB3C;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAAC,EAAE,QAAQ,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,GAAG,IAAI,GAAG,OAAO,GAAG,SAAS,CAM5I;AAMD,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,oBAAoB,CAcpG;AAED,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,oBAAoB,GAAG,oBAAoB,CAI5F;AAWD,wBAAgB,uBAAuB,CAAC,GAAG,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC,GAAG,MAAM,GAAG,IAAI,CAMpH;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAE3G;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEpD;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAElE"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import type { Task } from "../types/index.js";
|
|
2
|
+
import { type TaskRouteState } from "./task-routing.js";
|
|
3
|
+
export declare const TASK_ROUTE_SOURCE_DISCOVERY_SCHEMA_VERSION = "todos.task_route_sources.v1";
|
|
4
|
+
export interface DiscoverTaskRouteSourcesInput {
|
|
5
|
+
sourceRoots?: string[];
|
|
6
|
+
sourceStores?: string[];
|
|
7
|
+
include?: string[];
|
|
8
|
+
exclude?: string[];
|
|
9
|
+
limit?: number;
|
|
10
|
+
}
|
|
11
|
+
export type TaskRouteSourceStoreStatus = "ok" | "missing" | "error";
|
|
12
|
+
export interface TaskRouteSourceError {
|
|
13
|
+
source_store_id: string;
|
|
14
|
+
source_repo_path: string | null;
|
|
15
|
+
source_db_path: string;
|
|
16
|
+
code: "STORE_MISSING" | "STORE_UNREADABLE" | "STORE_INVALID" | "SOURCE_ROOT_MISSING" | "SOURCE_ROOT_UNREADABLE";
|
|
17
|
+
message: string;
|
|
18
|
+
}
|
|
19
|
+
export interface TaskRouteSourceStoreResult {
|
|
20
|
+
source_store_id: string;
|
|
21
|
+
source_repo_path: string | null;
|
|
22
|
+
source_db_path: string;
|
|
23
|
+
status: TaskRouteSourceStoreStatus;
|
|
24
|
+
/** Total ready candidates found in this store before result-level limit truncation. */
|
|
25
|
+
candidate_count: number;
|
|
26
|
+
/** Candidates returned from this store after result-level limit truncation. */
|
|
27
|
+
returned_candidate_count: number;
|
|
28
|
+
errors: TaskRouteSourceError[];
|
|
29
|
+
}
|
|
30
|
+
export interface TaskRouteSourceCandidate {
|
|
31
|
+
source_store_id: string;
|
|
32
|
+
source_repo_path: string | null;
|
|
33
|
+
source_db_path: string;
|
|
34
|
+
source_task_key: string;
|
|
35
|
+
/** True when the store was selected by explicit sourceRoots/sourceStores and include/exclude inputs. Not dispatch authorization. */
|
|
36
|
+
source_selected_by_input: boolean;
|
|
37
|
+
task_id: string;
|
|
38
|
+
task_short_id: string | null;
|
|
39
|
+
title: string;
|
|
40
|
+
status: Task["status"];
|
|
41
|
+
priority: Task["priority"];
|
|
42
|
+
project_path: string | null;
|
|
43
|
+
task_version: number;
|
|
44
|
+
task_updated_at: string;
|
|
45
|
+
task_fingerprint: string | null;
|
|
46
|
+
tags: string[];
|
|
47
|
+
task_intent: {
|
|
48
|
+
auto_route: boolean;
|
|
49
|
+
};
|
|
50
|
+
metadata: Record<string, unknown>;
|
|
51
|
+
route_state: TaskRouteState;
|
|
52
|
+
}
|
|
53
|
+
export interface TaskRouteSourceDiscoveryResult {
|
|
54
|
+
schema_version: typeof TASK_ROUTE_SOURCE_DISCOVERY_SCHEMA_VERSION;
|
|
55
|
+
sourceRoots: string[];
|
|
56
|
+
sourceStores: string[];
|
|
57
|
+
include: string[];
|
|
58
|
+
exclude: string[];
|
|
59
|
+
limit: number | null;
|
|
60
|
+
total_candidate_count: number;
|
|
61
|
+
returned_candidate_count: number;
|
|
62
|
+
truncated: boolean;
|
|
63
|
+
stores: TaskRouteSourceStoreResult[];
|
|
64
|
+
candidates: TaskRouteSourceCandidate[];
|
|
65
|
+
errors: TaskRouteSourceError[];
|
|
66
|
+
}
|
|
67
|
+
export declare function discoverTaskRouteSources(input: DiscoverTaskRouteSourcesInput): TaskRouteSourceDiscoveryResult;
|
|
68
|
+
//# sourceMappingURL=task-route-sources.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-route-sources.d.ts","sourceRoot":"","sources":["../../src/lib/task-route-sources.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,IAAI,EAAW,MAAM,mBAAmB,CAAC;AAKvD,OAAO,EAAqB,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAE3E,eAAO,MAAM,0CAA0C,gCAAgC,CAAC;AAExF,MAAM,WAAW,6BAA6B;IAC5C,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,0BAA0B,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAAC;AAEpE,MAAM,WAAW,oBAAoB;IACnC,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,eAAe,GAAG,kBAAkB,GAAG,eAAe,GAAG,qBAAqB,GAAG,wBAAwB,CAAC;IAChH,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,0BAA0B;IACzC,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,0BAA0B,CAAC;IACnC,uFAAuF;IACvF,eAAe,EAAE,MAAM,CAAC;IACxB,+EAA+E;IAC/E,wBAAwB,EAAE,MAAM,CAAC;IACjC,MAAM,EAAE,oBAAoB,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,wBAAwB;IACvC,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,oIAAoI;IACpI,wBAAwB,EAAE,OAAO,CAAC;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IACvB,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IAC3B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,WAAW,EAAE;QACX,UAAU,EAAE,OAAO,CAAC;KACrB,CAAC;IACF,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,WAAW,EAAE,cAAc,CAAC;CAC7B;AAED,MAAM,WAAW,8BAA8B;IAC7C,cAAc,EAAE,OAAO,0CAA0C,CAAC;IAClE,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,wBAAwB,EAAE,MAAM,CAAC;IACjC,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,0BAA0B,EAAE,CAAC;IACrC,UAAU,EAAE,wBAAwB,EAAE,CAAC;IACvC,MAAM,EAAE,oBAAoB,EAAE,CAAC;CAChC;AAoSD,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,6BAA6B,GAAG,8BAA8B,CA6D7G"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-routing.d.ts","sourceRoot":"","sources":["../../src/lib/task-routing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAM3C,OAAO,KAAK,EAAW,IAAI,EAAY,MAAM,mBAAmB,CAAC;AACjE,OAAO,
|
|
1
|
+
{"version":3,"file":"task-routing.d.ts","sourceRoot":"","sources":["../../src/lib/task-routing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAM3C,OAAO,KAAK,EAAW,IAAI,EAAY,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAML,qCAAqC,EAErC,KAAK,6BAA6B,EAClC,KAAK,oBAAoB,EAC1B,MAAM,0BAA0B,CAAC;AAElC,MAAM,WAAW,cAAc;IAC7B,aAAa,EAAE,OAAO,CAAC;IACvB,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,eAAe,EAAE,OAAO,CAAC;IACzB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,cAAc;IAC7B,cAAc,EAAE,OAAO,qCAAqC,CAAC;IAC7D,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IACvB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAA;KAAE,CAAC,CAAC;IAChG,KAAK,EAAE,cAAc,CAAC;IACtB,UAAU,EAAE,6BAA6B,GAAG,IAAI,CAAC;IACjD,KAAK,EAAE,gBAAgB,CAAC;IACxB,QAAQ,EAAE,oBAAoB,CAAC;CAChC;AAED,MAAM,WAAW,4BAA4B;IAC3C,8BAA8B,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/C,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,sBAAsB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AA0CD,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,IAAI,GAAG,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,cAAc,CAyExF;AAED,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,4BAA4B,EACnC,EAAE,CAAC,EAAE,QAAQ,GACZ,IAAI,CAoCN"}
|
package/dist/mcp/index.js
CHANGED
|
@@ -9706,8 +9706,6 @@ function routeEnabledForTask(task, taskList) {
|
|
|
9706
9706
|
const explicit = booleanField(task.metadata.route_enabled);
|
|
9707
9707
|
if (explicit !== undefined)
|
|
9708
9708
|
return explicit;
|
|
9709
|
-
if (task.tags.includes("auto:route") || task.tags.includes("route:enabled"))
|
|
9710
|
-
return true;
|
|
9711
9709
|
const taskListDefault = taskList ? booleanField(taskList.metadata.route_enabled) : undefined;
|
|
9712
9710
|
if (taskListDefault !== undefined)
|
|
9713
9711
|
return taskListDefault;
|
|
@@ -9726,8 +9724,26 @@ function workflowPointersFromMetadata(metadata) {
|
|
|
9726
9724
|
workflow_state: stringField(metadata.workflow_state) ?? stringField(nested.workflow_state) ?? stringField(nested.state)
|
|
9727
9725
|
};
|
|
9728
9726
|
}
|
|
9729
|
-
function
|
|
9730
|
-
|
|
9727
|
+
function metadataStringField(record, keys) {
|
|
9728
|
+
if (!record)
|
|
9729
|
+
return;
|
|
9730
|
+
for (const key of keys) {
|
|
9731
|
+
const value = record[key];
|
|
9732
|
+
if (typeof value === "string" && value.trim())
|
|
9733
|
+
return value.trim();
|
|
9734
|
+
}
|
|
9735
|
+
return;
|
|
9736
|
+
}
|
|
9737
|
+
function projectKindFromMetadata(...records) {
|
|
9738
|
+
for (const record of records) {
|
|
9739
|
+
const value = metadataStringField(record ?? undefined, ["project_kind", "projectKind", "source_kind", "sourceKind"]);
|
|
9740
|
+
if (value)
|
|
9741
|
+
return value;
|
|
9742
|
+
}
|
|
9743
|
+
return null;
|
|
9744
|
+
}
|
|
9745
|
+
function classifyProjectKind(_path, metadata) {
|
|
9746
|
+
return projectKindFromMetadata(metadata);
|
|
9731
9747
|
}
|
|
9732
9748
|
function isWorktreePath(path) {
|
|
9733
9749
|
return path.includes("/.codewith/worktrees/") || path.includes("/.worktrees/");
|
|
@@ -9800,7 +9816,6 @@ function taskEventMetadata(task) {
|
|
|
9800
9816
|
metadata.project_canonical_path = projectPath;
|
|
9801
9817
|
}
|
|
9802
9818
|
if (projectPath) {
|
|
9803
|
-
metadata.project_kind = classifyProjectKind(projectPath);
|
|
9804
9819
|
metadata.project_is_worktree = isWorktreePath(projectPath);
|
|
9805
9820
|
metadata.working_dir = task.working_dir ?? projectPath;
|
|
9806
9821
|
}
|
|
@@ -9812,6 +9827,10 @@ function taskEventMetadata(task) {
|
|
|
9812
9827
|
metadata.task_list_project_id = taskList.project_id;
|
|
9813
9828
|
metadata.task_list_is_project_default = Boolean(project?.task_list_id && taskList.slug === project.task_list_id);
|
|
9814
9829
|
}
|
|
9830
|
+
const projectKind = projectKindFromMetadata(task.metadata, taskList?.metadata);
|
|
9831
|
+
if (projectKind) {
|
|
9832
|
+
metadata.project_kind = classifyProjectKind(projectPath ?? "", { project_kind: projectKind });
|
|
9833
|
+
}
|
|
9815
9834
|
const routeEnabled = routeEnabledForTask(task, taskList);
|
|
9816
9835
|
if (routeEnabled !== undefined) {
|
|
9817
9836
|
metadata.route_enabled = routeEnabled;
|
package/dist/registry.js
CHANGED
|
@@ -7926,8 +7926,6 @@ function routeEnabledForTask(task, taskList) {
|
|
|
7926
7926
|
const explicit = booleanField(task.metadata.route_enabled);
|
|
7927
7927
|
if (explicit !== undefined)
|
|
7928
7928
|
return explicit;
|
|
7929
|
-
if (task.tags.includes("auto:route") || task.tags.includes("route:enabled"))
|
|
7930
|
-
return true;
|
|
7931
7929
|
const taskListDefault = taskList ? booleanField(taskList.metadata.route_enabled) : undefined;
|
|
7932
7930
|
if (taskListDefault !== undefined)
|
|
7933
7931
|
return taskListDefault;
|
|
@@ -7949,8 +7947,26 @@ function workflowPointersFromMetadata(metadata) {
|
|
|
7949
7947
|
function compactWorkflowPointers(pointers) {
|
|
7950
7948
|
return Object.fromEntries(Object.entries(pointers).filter(([, value]) => typeof value === "string" && value.length > 0));
|
|
7951
7949
|
}
|
|
7952
|
-
function
|
|
7953
|
-
|
|
7950
|
+
function metadataStringField(record, keys) {
|
|
7951
|
+
if (!record)
|
|
7952
|
+
return;
|
|
7953
|
+
for (const key of keys) {
|
|
7954
|
+
const value = record[key];
|
|
7955
|
+
if (typeof value === "string" && value.trim())
|
|
7956
|
+
return value.trim();
|
|
7957
|
+
}
|
|
7958
|
+
return;
|
|
7959
|
+
}
|
|
7960
|
+
function projectKindFromMetadata(...records) {
|
|
7961
|
+
for (const record of records) {
|
|
7962
|
+
const value = metadataStringField(record ?? undefined, ["project_kind", "projectKind", "source_kind", "sourceKind"]);
|
|
7963
|
+
if (value)
|
|
7964
|
+
return value;
|
|
7965
|
+
}
|
|
7966
|
+
return null;
|
|
7967
|
+
}
|
|
7968
|
+
function classifyProjectKind(_path, metadata) {
|
|
7969
|
+
return projectKindFromMetadata(metadata);
|
|
7954
7970
|
}
|
|
7955
7971
|
function isWorktreePath(path) {
|
|
7956
7972
|
return path.includes("/.codewith/worktrees/") || path.includes("/.worktrees/");
|
|
@@ -8023,7 +8039,6 @@ function taskEventMetadata(task) {
|
|
|
8023
8039
|
metadata.project_canonical_path = projectPath;
|
|
8024
8040
|
}
|
|
8025
8041
|
if (projectPath) {
|
|
8026
|
-
metadata.project_kind = classifyProjectKind(projectPath);
|
|
8027
8042
|
metadata.project_is_worktree = isWorktreePath(projectPath);
|
|
8028
8043
|
metadata.working_dir = task.working_dir ?? projectPath;
|
|
8029
8044
|
}
|
|
@@ -8035,6 +8050,10 @@ function taskEventMetadata(task) {
|
|
|
8035
8050
|
metadata.task_list_project_id = taskList.project_id;
|
|
8036
8051
|
metadata.task_list_is_project_default = Boolean(project?.task_list_id && taskList.slug === project.task_list_id);
|
|
8037
8052
|
}
|
|
8053
|
+
const projectKind = projectKindFromMetadata(task.metadata, taskList?.metadata);
|
|
8054
|
+
if (projectKind) {
|
|
8055
|
+
metadata.project_kind = classifyProjectKind(projectPath ?? "", { project_kind: projectKind });
|
|
8056
|
+
}
|
|
8038
8057
|
const routeEnabled = routeEnabledForTask(task, taskList);
|
|
8039
8058
|
if (routeEnabled !== undefined) {
|
|
8040
8059
|
metadata.route_enabled = routeEnabled;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"packageName": "@hasna/todos",
|
|
3
|
-
"packageVersion": "0.11.
|
|
3
|
+
"packageVersion": "0.11.72",
|
|
4
4
|
"repository": "https://github.com/hasna/todos.git",
|
|
5
|
-
"gitCommit": "
|
|
6
|
-
"generatedAt": "2026-07-
|
|
5
|
+
"gitCommit": "6faf721538ddfdcd384e253bee48821966186d85",
|
|
6
|
+
"generatedAt": "2026-07-03T13:05:19.129Z"
|
|
7
7
|
}
|
package/dist/server/index.js
CHANGED
|
@@ -5060,8 +5060,6 @@ function routeEnabledForTask(task, taskList) {
|
|
|
5060
5060
|
const explicit = booleanField(task.metadata.route_enabled);
|
|
5061
5061
|
if (explicit !== undefined)
|
|
5062
5062
|
return explicit;
|
|
5063
|
-
if (task.tags.includes("auto:route") || task.tags.includes("route:enabled"))
|
|
5064
|
-
return true;
|
|
5065
5063
|
const taskListDefault = taskList ? booleanField(taskList.metadata.route_enabled) : undefined;
|
|
5066
5064
|
if (taskListDefault !== undefined)
|
|
5067
5065
|
return taskListDefault;
|
|
@@ -5080,8 +5078,26 @@ function workflowPointersFromMetadata(metadata) {
|
|
|
5080
5078
|
workflow_state: stringField(metadata.workflow_state) ?? stringField(nested.workflow_state) ?? stringField(nested.state)
|
|
5081
5079
|
};
|
|
5082
5080
|
}
|
|
5083
|
-
function
|
|
5084
|
-
|
|
5081
|
+
function metadataStringField(record, keys) {
|
|
5082
|
+
if (!record)
|
|
5083
|
+
return;
|
|
5084
|
+
for (const key of keys) {
|
|
5085
|
+
const value = record[key];
|
|
5086
|
+
if (typeof value === "string" && value.trim())
|
|
5087
|
+
return value.trim();
|
|
5088
|
+
}
|
|
5089
|
+
return;
|
|
5090
|
+
}
|
|
5091
|
+
function projectKindFromMetadata(...records) {
|
|
5092
|
+
for (const record of records) {
|
|
5093
|
+
const value = metadataStringField(record ?? undefined, ["project_kind", "projectKind", "source_kind", "sourceKind"]);
|
|
5094
|
+
if (value)
|
|
5095
|
+
return value;
|
|
5096
|
+
}
|
|
5097
|
+
return null;
|
|
5098
|
+
}
|
|
5099
|
+
function classifyProjectKind(_path, metadata) {
|
|
5100
|
+
return projectKindFromMetadata(metadata);
|
|
5085
5101
|
}
|
|
5086
5102
|
function isWorktreePath(path) {
|
|
5087
5103
|
return path.includes("/.codewith/worktrees/") || path.includes("/.worktrees/");
|
|
@@ -5154,7 +5170,6 @@ function taskEventMetadata(task) {
|
|
|
5154
5170
|
metadata.project_canonical_path = projectPath;
|
|
5155
5171
|
}
|
|
5156
5172
|
if (projectPath) {
|
|
5157
|
-
metadata.project_kind = classifyProjectKind(projectPath);
|
|
5158
5173
|
metadata.project_is_worktree = isWorktreePath(projectPath);
|
|
5159
5174
|
metadata.working_dir = task.working_dir ?? projectPath;
|
|
5160
5175
|
}
|
|
@@ -5166,6 +5181,10 @@ function taskEventMetadata(task) {
|
|
|
5166
5181
|
metadata.task_list_project_id = taskList.project_id;
|
|
5167
5182
|
metadata.task_list_is_project_default = Boolean(project?.task_list_id && taskList.slug === project.task_list_id);
|
|
5168
5183
|
}
|
|
5184
|
+
const projectKind = projectKindFromMetadata(task.metadata, taskList?.metadata);
|
|
5185
|
+
if (projectKind) {
|
|
5186
|
+
metadata.project_kind = classifyProjectKind(projectPath ?? "", { project_kind: projectKind });
|
|
5187
|
+
}
|
|
5169
5188
|
const routeEnabled = routeEnabledForTask(task, taskList);
|
|
5170
5189
|
if (routeEnabled !== undefined) {
|
|
5171
5190
|
metadata.route_enabled = routeEnabled;
|
|
@@ -15665,7 +15684,7 @@ class JSONSchemaGenerator {
|
|
|
15665
15684
|
if (val === undefined) {
|
|
15666
15685
|
if (this.unrepresentable === "throw") {
|
|
15667
15686
|
throw new Error("Literal `undefined` cannot be represented in JSON Schema");
|
|
15668
|
-
}
|
|
15687
|
+
} else {}
|
|
15669
15688
|
} else if (typeof val === "bigint") {
|
|
15670
15689
|
if (this.unrepresentable === "throw") {
|
|
15671
15690
|
throw new Error("BigInt literals cannot be represented in JSON Schema");
|
|
@@ -58753,7 +58772,7 @@ var require_to_json_schema = __commonJS((exports) => {
|
|
|
58753
58772
|
if (val === undefined) {
|
|
58754
58773
|
if (this.unrepresentable === "throw") {
|
|
58755
58774
|
throw new Error("Literal `undefined` cannot be represented in JSON Schema");
|
|
58756
|
-
}
|
|
58775
|
+
} else {}
|
|
58757
58776
|
} else if (typeof val === "bigint") {
|
|
58758
58777
|
if (this.unrepresentable === "throw") {
|
|
58759
58778
|
throw new Error("BigInt literals cannot be represented in JSON Schema");
|
package/dist/storage.js
CHANGED
|
@@ -5474,8 +5474,6 @@ function routeEnabledForTask(task, taskList) {
|
|
|
5474
5474
|
const explicit = booleanField(task.metadata.route_enabled);
|
|
5475
5475
|
if (explicit !== undefined)
|
|
5476
5476
|
return explicit;
|
|
5477
|
-
if (task.tags.includes("auto:route") || task.tags.includes("route:enabled"))
|
|
5478
|
-
return true;
|
|
5479
5477
|
const taskListDefault = taskList ? booleanField(taskList.metadata.route_enabled) : undefined;
|
|
5480
5478
|
if (taskListDefault !== undefined)
|
|
5481
5479
|
return taskListDefault;
|
|
@@ -5497,8 +5495,26 @@ function workflowPointersFromMetadata(metadata) {
|
|
|
5497
5495
|
function compactWorkflowPointers(pointers) {
|
|
5498
5496
|
return Object.fromEntries(Object.entries(pointers).filter(([, value]) => typeof value === "string" && value.length > 0));
|
|
5499
5497
|
}
|
|
5500
|
-
function
|
|
5501
|
-
|
|
5498
|
+
function metadataStringField(record, keys) {
|
|
5499
|
+
if (!record)
|
|
5500
|
+
return;
|
|
5501
|
+
for (const key of keys) {
|
|
5502
|
+
const value = record[key];
|
|
5503
|
+
if (typeof value === "string" && value.trim())
|
|
5504
|
+
return value.trim();
|
|
5505
|
+
}
|
|
5506
|
+
return;
|
|
5507
|
+
}
|
|
5508
|
+
function projectKindFromMetadata(...records) {
|
|
5509
|
+
for (const record of records) {
|
|
5510
|
+
const value = metadataStringField(record ?? undefined, ["project_kind", "projectKind", "source_kind", "sourceKind"]);
|
|
5511
|
+
if (value)
|
|
5512
|
+
return value;
|
|
5513
|
+
}
|
|
5514
|
+
return null;
|
|
5515
|
+
}
|
|
5516
|
+
function classifyProjectKind(_path, metadata) {
|
|
5517
|
+
return projectKindFromMetadata(metadata);
|
|
5502
5518
|
}
|
|
5503
5519
|
function isWorktreePath(path) {
|
|
5504
5520
|
return path.includes("/.codewith/worktrees/") || path.includes("/.worktrees/");
|
|
@@ -5571,7 +5587,6 @@ function taskEventMetadata(task) {
|
|
|
5571
5587
|
metadata.project_canonical_path = projectPath;
|
|
5572
5588
|
}
|
|
5573
5589
|
if (projectPath) {
|
|
5574
|
-
metadata.project_kind = classifyProjectKind(projectPath);
|
|
5575
5590
|
metadata.project_is_worktree = isWorktreePath(projectPath);
|
|
5576
5591
|
metadata.working_dir = task.working_dir ?? projectPath;
|
|
5577
5592
|
}
|
|
@@ -5583,6 +5598,10 @@ function taskEventMetadata(task) {
|
|
|
5583
5598
|
metadata.task_list_project_id = taskList.project_id;
|
|
5584
5599
|
metadata.task_list_is_project_default = Boolean(project?.task_list_id && taskList.slug === project.task_list_id);
|
|
5585
5600
|
}
|
|
5601
|
+
const projectKind = projectKindFromMetadata(task.metadata, taskList?.metadata);
|
|
5602
|
+
if (projectKind) {
|
|
5603
|
+
metadata.project_kind = classifyProjectKind(projectPath ?? "", { project_kind: projectKind });
|
|
5604
|
+
}
|
|
5586
5605
|
const routeEnabled = routeEnabledForTask(task, taskList);
|
|
5587
5606
|
if (routeEnabled !== undefined) {
|
|
5588
5607
|
metadata.route_enabled = routeEnabled;
|