@hasna/todos 0.11.8 → 0.11.10

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/index.js CHANGED
@@ -2290,6 +2290,20 @@ function ensureSchema(db) {
2290
2290
  metadata TEXT DEFAULT '{}',
2291
2291
  created_at TEXT NOT NULL DEFAULT (datetime('now'))
2292
2292
  )`);
2293
+ ensureTable("template_tasks", `
2294
+ CREATE TABLE template_tasks (
2295
+ id TEXT PRIMARY KEY DEFAULT (lower(hex(randomblob(16)))),
2296
+ template_id TEXT NOT NULL REFERENCES task_templates(id) ON DELETE CASCADE,
2297
+ position INTEGER NOT NULL,
2298
+ title_pattern TEXT NOT NULL,
2299
+ description TEXT,
2300
+ priority TEXT DEFAULT 'medium',
2301
+ tags TEXT DEFAULT '[]',
2302
+ task_type TEXT,
2303
+ depends_on_positions TEXT DEFAULT '[]',
2304
+ metadata TEXT DEFAULT '{}',
2305
+ created_at TEXT NOT NULL DEFAULT (datetime('now'))
2306
+ )`);
2293
2307
  ensureTable("task_checklists", `
2294
2308
  CREATE TABLE task_checklists (
2295
2309
  id TEXT PRIMARY KEY,
@@ -2400,6 +2414,7 @@ function ensureSchema(db) {
2400
2414
  ensureIndex("CREATE INDEX IF NOT EXISTS idx_task_rel_source ON task_relationships(source_task_id)");
2401
2415
  ensureIndex("CREATE INDEX IF NOT EXISTS idx_task_rel_target ON task_relationships(target_task_id)");
2402
2416
  ensureIndex("CREATE INDEX IF NOT EXISTS idx_task_rel_type ON task_relationships(relationship_type)");
2417
+ ensureIndex("CREATE INDEX IF NOT EXISTS idx_template_tasks_template ON template_tasks(template_id)");
2403
2418
  ensureIndex("CREATE INDEX IF NOT EXISTS idx_kg_source ON kg_edges(source_id, source_type)");
2404
2419
  ensureIndex("CREATE INDEX IF NOT EXISTS idx_kg_target ON kg_edges(target_id, target_type)");
2405
2420
  ensureIndex("CREATE INDEX IF NOT EXISTS idx_kg_relation ON kg_edges(relation_type)");
@@ -3043,6 +3058,24 @@ var init_database = __esm(() => {
3043
3058
  );
3044
3059
 
3045
3060
  INSERT OR IGNORE INTO _migrations (id) VALUES (36);
3061
+ `,
3062
+ `
3063
+ CREATE TABLE IF NOT EXISTS template_tasks (
3064
+ id TEXT PRIMARY KEY DEFAULT (lower(hex(randomblob(16)))),
3065
+ template_id TEXT NOT NULL REFERENCES task_templates(id) ON DELETE CASCADE,
3066
+ position INTEGER NOT NULL,
3067
+ title_pattern TEXT NOT NULL,
3068
+ description TEXT,
3069
+ priority TEXT DEFAULT 'medium',
3070
+ tags TEXT DEFAULT '[]',
3071
+ task_type TEXT,
3072
+ depends_on_positions TEXT DEFAULT '[]',
3073
+ metadata TEXT DEFAULT '{}',
3074
+ created_at TEXT NOT NULL DEFAULT (datetime('now'))
3075
+ );
3076
+ CREATE INDEX IF NOT EXISTS idx_template_tasks_template ON template_tasks(template_id);
3077
+
3078
+ INSERT OR IGNORE INTO _migrations (id) VALUES (37);
3046
3079
  `
3047
3080
  ];
3048
3081
  });
@@ -3731,11 +3764,15 @@ var init_webhooks = __esm(() => {
3731
3764
  var exports_templates = {};
3732
3765
  __export(exports_templates, {
3733
3766
  updateTemplate: () => updateTemplate,
3767
+ tasksFromTemplate: () => tasksFromTemplate,
3734
3768
  taskFromTemplate: () => taskFromTemplate,
3735
3769
  listTemplates: () => listTemplates,
3770
+ getTemplateWithTasks: () => getTemplateWithTasks,
3771
+ getTemplateTasks: () => getTemplateTasks,
3736
3772
  getTemplate: () => getTemplate,
3737
3773
  deleteTemplate: () => deleteTemplate,
3738
- createTemplate: () => createTemplate
3774
+ createTemplate: () => createTemplate,
3775
+ addTemplateTasks: () => addTemplateTasks
3739
3776
  });
3740
3777
  function rowToTemplate(row) {
3741
3778
  return {
@@ -3745,6 +3782,15 @@ function rowToTemplate(row) {
3745
3782
  priority: row.priority || "medium"
3746
3783
  };
3747
3784
  }
3785
+ function rowToTemplateTask(row) {
3786
+ return {
3787
+ ...row,
3788
+ tags: JSON.parse(row.tags || "[]"),
3789
+ depends_on_positions: JSON.parse(row.depends_on_positions || "[]"),
3790
+ metadata: JSON.parse(row.metadata || "{}"),
3791
+ priority: row.priority || "medium"
3792
+ };
3793
+ }
3748
3794
  function resolveTemplateId(id, d) {
3749
3795
  return resolvePartialId(d, "task_templates", id);
3750
3796
  }
@@ -3764,6 +3810,9 @@ function createTemplate(input, db) {
3764
3810
  JSON.stringify(input.metadata || {}),
3765
3811
  now()
3766
3812
  ]);
3813
+ if (input.tasks && input.tasks.length > 0) {
3814
+ addTemplateTasks(id, input.tasks, d);
3815
+ }
3767
3816
  return getTemplate(id, d);
3768
3817
  }
3769
3818
  function getTemplate(id, db) {
@@ -3845,8 +3894,103 @@ function taskFromTemplate(templateId, overrides = {}, db) {
3845
3894
  ...overrides
3846
3895
  };
3847
3896
  }
3897
+ function addTemplateTasks(templateId, tasks, db) {
3898
+ const d = db || getDatabase();
3899
+ const template = getTemplate(templateId, d);
3900
+ if (!template)
3901
+ throw new Error(`Template not found: ${templateId}`);
3902
+ d.run("DELETE FROM template_tasks WHERE template_id = ?", [templateId]);
3903
+ const results = [];
3904
+ for (let i = 0;i < tasks.length; i++) {
3905
+ const task = tasks[i];
3906
+ const id = uuid();
3907
+ d.run(`INSERT INTO template_tasks (id, template_id, position, title_pattern, description, priority, tags, task_type, depends_on_positions, metadata, created_at)
3908
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, [
3909
+ id,
3910
+ templateId,
3911
+ i,
3912
+ task.title_pattern,
3913
+ task.description || null,
3914
+ task.priority || "medium",
3915
+ JSON.stringify(task.tags || []),
3916
+ task.task_type || null,
3917
+ JSON.stringify(task.depends_on || []),
3918
+ JSON.stringify(task.metadata || {}),
3919
+ now()
3920
+ ]);
3921
+ const row = d.query("SELECT * FROM template_tasks WHERE id = ?").get(id);
3922
+ if (row)
3923
+ results.push(rowToTemplateTask(row));
3924
+ }
3925
+ return results;
3926
+ }
3927
+ function getTemplateWithTasks(id, db) {
3928
+ const d = db || getDatabase();
3929
+ const template = getTemplate(id, d);
3930
+ if (!template)
3931
+ return null;
3932
+ const rows = d.query("SELECT * FROM template_tasks WHERE template_id = ? ORDER BY position").all(template.id);
3933
+ const tasks = rows.map(rowToTemplateTask);
3934
+ return { ...template, tasks };
3935
+ }
3936
+ function getTemplateTasks(templateId, db) {
3937
+ const d = db || getDatabase();
3938
+ const resolved = resolveTemplateId(templateId, d);
3939
+ if (!resolved)
3940
+ return [];
3941
+ const rows = d.query("SELECT * FROM template_tasks WHERE template_id = ? ORDER BY position").all(resolved);
3942
+ return rows.map(rowToTemplateTask);
3943
+ }
3944
+ function tasksFromTemplate(templateId, projectId, variables, taskListId, db) {
3945
+ const d = db || getDatabase();
3946
+ const template = getTemplateWithTasks(templateId, d);
3947
+ if (!template)
3948
+ throw new Error(`Template not found: ${templateId}`);
3949
+ if (template.tasks.length === 0) {
3950
+ const input = taskFromTemplate(templateId, { project_id: projectId, task_list_id: taskListId }, d);
3951
+ const task = createTask(input, d);
3952
+ return [task];
3953
+ }
3954
+ const createdTasks = [];
3955
+ const positionToId = new Map;
3956
+ for (const tt of template.tasks) {
3957
+ let title = tt.title_pattern;
3958
+ let desc = tt.description;
3959
+ if (variables) {
3960
+ for (const [key, val] of Object.entries(variables)) {
3961
+ title = title.replace(new RegExp(`\\{${key}\\}`, "g"), val);
3962
+ if (desc)
3963
+ desc = desc.replace(new RegExp(`\\{${key}\\}`, "g"), val);
3964
+ }
3965
+ }
3966
+ const task = createTask({
3967
+ title,
3968
+ description: desc ?? undefined,
3969
+ priority: tt.priority,
3970
+ tags: tt.tags,
3971
+ task_type: tt.task_type ?? undefined,
3972
+ project_id: projectId,
3973
+ task_list_id: taskListId,
3974
+ metadata: tt.metadata
3975
+ }, d);
3976
+ createdTasks.push(task);
3977
+ positionToId.set(tt.position, task.id);
3978
+ }
3979
+ for (const tt of template.tasks) {
3980
+ const deps = tt.depends_on_positions;
3981
+ for (const depPos of deps) {
3982
+ const taskId = positionToId.get(tt.position);
3983
+ const depId = positionToId.get(depPos);
3984
+ if (taskId && depId) {
3985
+ addDependency(taskId, depId, d);
3986
+ }
3987
+ }
3988
+ }
3989
+ return createdTasks;
3990
+ }
3848
3991
  var init_templates = __esm(() => {
3849
3992
  init_database();
3993
+ init_tasks();
3850
3994
  });
3851
3995
 
3852
3996
  // src/db/checklists.ts
@@ -22940,6 +23084,24 @@ var init_pg_migrations = __esm(() => {
22940
23084
  );
22941
23085
 
22942
23086
  INSERT INTO _migrations (id) VALUES (36) ON CONFLICT DO NOTHING;
23087
+ `,
23088
+ `
23089
+ CREATE TABLE IF NOT EXISTS template_tasks (
23090
+ id TEXT PRIMARY KEY DEFAULT gen_random_uuid()::text,
23091
+ template_id TEXT NOT NULL REFERENCES task_templates(id) ON DELETE CASCADE,
23092
+ position INTEGER NOT NULL,
23093
+ title_pattern TEXT NOT NULL,
23094
+ description TEXT,
23095
+ priority TEXT DEFAULT 'medium',
23096
+ tags TEXT DEFAULT '[]',
23097
+ task_type TEXT,
23098
+ depends_on_positions TEXT DEFAULT '[]',
23099
+ metadata TEXT DEFAULT '{}',
23100
+ created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
23101
+ );
23102
+ CREATE INDEX IF NOT EXISTS idx_template_tasks_template ON template_tasks(template_id);
23103
+
23104
+ INSERT INTO _migrations (id) VALUES (37) ON CONFLICT DO NOTHING;
22943
23105
  `
22944
23106
  ];
22945
23107
  });
@@ -24836,19 +24998,31 @@ ${text}` }] };
24836
24998
  });
24837
24999
  }
24838
25000
  if (shouldRegisterTool("create_template")) {
24839
- server.tool("create_template", "Create a reusable task template.", {
25001
+ server.tool("create_template", "Create a reusable task template. Optionally include a tasks array to define a multi-task template with dependencies and variable placeholders ({name} syntax).", {
24840
25002
  name: exports_external.string(),
24841
25003
  title_pattern: exports_external.string(),
24842
25004
  description: exports_external.string().optional(),
24843
25005
  priority: exports_external.enum(["low", "medium", "high", "critical"]).optional(),
24844
25006
  tags: exports_external.array(exports_external.string()).optional(),
24845
25007
  project_id: exports_external.string().optional(),
24846
- plan_id: exports_external.string().optional()
25008
+ plan_id: exports_external.string().optional(),
25009
+ tasks: exports_external.array(exports_external.object({
25010
+ title_pattern: exports_external.string().describe("Title pattern with optional {variable} placeholders"),
25011
+ description: exports_external.string().optional(),
25012
+ priority: exports_external.enum(["low", "medium", "high", "critical"]).optional(),
25013
+ tags: exports_external.array(exports_external.string()).optional(),
25014
+ task_type: exports_external.string().optional(),
25015
+ depends_on: exports_external.array(exports_external.number()).optional().describe("Position indices (0-based) of tasks this task depends on"),
25016
+ metadata: exports_external.record(exports_external.unknown()).optional()
25017
+ })).optional().describe("Multi-task template: ordered list of tasks to create together with dependencies")
24847
25018
  }, async (params) => {
24848
25019
  try {
24849
- const { createTemplate: createTemplate2 } = await Promise.resolve().then(() => (init_templates(), exports_templates));
25020
+ const { createTemplate: createTemplate2, getTemplateWithTasks: getTemplateWithTasks2 } = await Promise.resolve().then(() => (init_templates(), exports_templates));
24850
25021
  const t = createTemplate2(params);
24851
- return { content: [{ type: "text", text: `Template created: ${t.id.slice(0, 8)} | ${t.name} | "${t.title_pattern}"` }] };
25022
+ const withTasks = getTemplateWithTasks2(t.id);
25023
+ const taskCount = withTasks?.tasks.length ?? 0;
25024
+ const taskInfo = taskCount > 0 ? ` | ${taskCount} task(s)` : "";
25025
+ return { content: [{ type: "text", text: `Template created: ${t.id.slice(0, 8)} | ${t.name} | "${t.title_pattern}"${taskInfo}` }] };
24852
25026
  } catch (e) {
24853
25027
  return { content: [{ type: "text", text: formatError(e) }], isError: true };
24854
25028
  }
@@ -24871,23 +25045,34 @@ ${text}` }] };
24871
25045
  });
24872
25046
  }
24873
25047
  if (shouldRegisterTool("create_task_from_template")) {
24874
- server.tool("create_task_from_template", "Create a task from a template with optional overrides.", {
25048
+ server.tool("create_task_from_template", "Create task(s) from a template. For multi-task templates, creates all tasks with dependencies wired. Supports {variable} substitution in titles/descriptions.", {
24875
25049
  template_id: exports_external.string(),
24876
- title: exports_external.string().optional(),
24877
- description: exports_external.string().optional(),
25050
+ title: exports_external.string().optional().describe("Override title (single-task templates only)"),
25051
+ description: exports_external.string().optional().describe("Override description (single-task templates only)"),
24878
25052
  priority: exports_external.enum(["low", "medium", "high", "critical"]).optional(),
24879
25053
  assigned_to: exports_external.string().optional(),
24880
- project_id: exports_external.string().optional()
25054
+ project_id: exports_external.string().optional(),
25055
+ task_list_id: exports_external.string().optional(),
25056
+ variables: exports_external.record(exports_external.string()).optional().describe("Variable substitution map for {name} placeholders in multi-task templates")
24881
25057
  }, async (params) => {
24882
25058
  try {
24883
- const { taskFromTemplate: taskFromTemplate2 } = await Promise.resolve().then(() => (init_templates(), exports_templates));
25059
+ const { taskFromTemplate: taskFromTemplate2, getTemplateWithTasks: getTemplateWithTasks2, tasksFromTemplate: tasksFromTemplate2 } = await Promise.resolve().then(() => (init_templates(), exports_templates));
24884
25060
  const resolvedTemplateId = resolveId(params.template_id, "task_templates");
25061
+ const templateWithTasks = getTemplateWithTasks2(resolvedTemplateId);
25062
+ if (templateWithTasks && templateWithTasks.tasks.length > 0) {
25063
+ const tasks = tasksFromTemplate2(resolvedTemplateId, params.project_id || templateWithTasks.project_id || "", params.variables, params.task_list_id);
25064
+ const text = tasks.map((t) => `${t.id.slice(0, 8)} | ${t.priority} | ${t.title}`).join(`
25065
+ `);
25066
+ return { content: [{ type: "text", text: `${tasks.length} task(s) created from template:
25067
+ ${text}` }] };
25068
+ }
24885
25069
  const input = taskFromTemplate2(resolvedTemplateId, {
24886
25070
  title: params.title,
24887
25071
  description: params.description,
24888
25072
  priority: params.priority,
24889
25073
  assigned_to: params.assigned_to,
24890
- project_id: params.project_id
25074
+ project_id: params.project_id,
25075
+ task_list_id: params.task_list_id
24891
25076
  });
24892
25077
  const task = createTask(input);
24893
25078
  return { content: [{ type: "text", text: `Task created from template:
@@ -26275,13 +26460,15 @@ ${stack_trace.slice(0, 1500)}
26275
26460
  delete_webhook: `Delete a webhook by ID.
26276
26461
  Params: id(string, req)
26277
26462
  Example: {id: 'a1b2c3d4'}`,
26278
- create_template: `Create a reusable task template.
26279
- Params: name(string, req), title_pattern(string, req \u2014 e.g. 'Fix: {description}'), description(string), priority(low|medium|high|critical), tags(string[]), project_id(string), plan_id(string)
26280
- Example: {name: 'Bug Report', title_pattern: 'Bug: {description}', priority: 'high', tags: ['bug']}`,
26463
+ create_template: `Create a reusable task template. Supports multi-task templates with dependencies.
26464
+ Params: name(string, req), title_pattern(string, req), description(string), priority(low|medium|high|critical), tags(string[]), project_id(string), plan_id(string), tasks(array of {title_pattern, description, priority, tags, task_type, depends_on(number[]), metadata})
26465
+ Example single: {name: 'Bug Report', title_pattern: 'Bug: {description}', priority: 'high', tags: ['bug']}
26466
+ Example multi: {name: 'Feature', title_pattern: 'Feature: {name}', tasks: [{title_pattern: 'Design {name}'}, {title_pattern: 'Implement {name}', depends_on: [0]}, {title_pattern: 'Test {name}', depends_on: [1]}]}`,
26281
26467
  list_templates: "List all task templates. No params.",
26282
- create_task_from_template: `Create a task from a template with optional overrides.
26283
- Params: template_id(string, req), title(string), description(string), priority(low|medium|high|critical), assigned_to(string), project_id(string)
26284
- Example: {template_id: 'a1b2c3d4', assigned_to: 'maximus'}`,
26468
+ create_task_from_template: `Create task(s) from a template. Multi-task templates create all tasks with dependencies wired. Supports {variable} substitution.
26469
+ Params: template_id(string, req), title(string \u2014 single-task override), description(string), priority(low|medium|high|critical), assigned_to(string), project_id(string), task_list_id(string), variables(Record<string,string> \u2014 {name} substitution)
26470
+ Example single: {template_id: 'a1b2c3d4', assigned_to: 'maximus'}
26471
+ Example multi: {template_id: 'a1b2c3d4', project_id: 'proj1', variables: {name: 'OAuth login'}}`,
26285
26472
  delete_template: `Delete a task template.
26286
26473
  Params: id(string, req)
26287
26474
  Example: {id: 'a1b2c3d4'}`,
@@ -1 +1 @@
1
- {"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/db/database.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAItC,eAAO,MAAM,mBAAmB,KAAK,CAAC;AAqpBtC,wBAAgB,WAAW,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,CAkBrD;AAmSD,wBAAgB,aAAa,IAAI,IAAI,CAKpC;AAED,wBAAgB,aAAa,IAAI,IAAI,CAEpC;AAED,wBAAgB,GAAG,IAAI,MAAM,CAE5B;AAED,wBAAgB,IAAI,IAAI,MAAM,CAE7B;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAK9D;AAED,wBAAgB,gBAAgB,CAAC,KAAK,SAAa,GAAG,MAAM,CAG3D;AAED,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,QAAQ,GAAG,IAAI,CAGpD;AAED,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAsC9F"}
1
+ {"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/db/database.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAItC,eAAO,MAAM,mBAAmB,KAAK,CAAC;AAwqBtC,wBAAgB,WAAW,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,CAkBrD;AAqTD,wBAAgB,aAAa,IAAI,IAAI,CAKpC;AAED,wBAAgB,aAAa,IAAI,IAAI,CAEpC;AAED,wBAAgB,GAAG,IAAI,MAAM,CAE5B;AAED,wBAAgB,IAAI,IAAI,MAAM,CAE7B;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAK9D;AAED,wBAAgB,gBAAgB,CAAC,KAAK,SAAa,GAAG,MAAM,CAG3D;AAED,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,QAAQ,GAAG,IAAI,CAGpD;AAED,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAsC9F"}
@@ -1 +1 @@
1
- {"version":3,"file":"pg-migrations.d.ts","sourceRoot":"","sources":["../../src/db/pg-migrations.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,eAAO,MAAM,aAAa,EAAE,MAAM,EA0jBjC,CAAC"}
1
+ {"version":3,"file":"pg-migrations.d.ts","sourceRoot":"","sources":["../../src/db/pg-migrations.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,eAAO,MAAM,aAAa,EAAE,MAAM,EA6kBjC,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import type { Database } from "bun:sqlite";
2
- import type { TaskTemplate, CreateTemplateInput, CreateTaskInput } from "../types/index.js";
2
+ import type { TaskTemplate, CreateTemplateInput, CreateTaskInput, TemplateTask, TemplateTaskInput, TemplateWithTasks, Task } from "../types/index.js";
3
3
  export interface UpdateTemplateInput {
4
4
  name?: string;
5
5
  title_pattern?: string;
@@ -16,4 +16,17 @@ export declare function listTemplates(db?: Database): TaskTemplate[];
16
16
  export declare function deleteTemplate(id: string, db?: Database): boolean;
17
17
  export declare function updateTemplate(id: string, updates: UpdateTemplateInput, db?: Database): TaskTemplate | null;
18
18
  export declare function taskFromTemplate(templateId: string, overrides?: Partial<CreateTaskInput>, db?: Database): CreateTaskInput;
19
+ /** Add tasks to a template, replacing any existing template tasks */
20
+ export declare function addTemplateTasks(templateId: string, tasks: TemplateTaskInput[], db?: Database): TemplateTask[];
21
+ /** Get a template with all its associated tasks, ordered by position */
22
+ export declare function getTemplateWithTasks(id: string, db?: Database): TemplateWithTasks | null;
23
+ /** Get just the template tasks for a given template ID */
24
+ export declare function getTemplateTasks(templateId: string, db?: Database): TemplateTask[];
25
+ /**
26
+ * Create all tasks from a multi-task template.
27
+ * For single-task templates (no template_tasks rows), falls back to taskFromTemplate.
28
+ * Supports {variable} substitution in title and description.
29
+ * Wires task dependencies based on depends_on_positions.
30
+ */
31
+ export declare function tasksFromTemplate(templateId: string, projectId: string, variables?: Record<string, string>, taskListId?: string, db?: Database): Task[];
19
32
  //# sourceMappingURL=templates.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/db/templates.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAG5F,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;IAClD,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAeD,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,YAAY,CAWtF;AAED,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,YAAY,GAAG,IAAI,CAM1E;AAED,wBAAgB,aAAa,CAAC,EAAE,CAAC,EAAE,QAAQ,GAAG,YAAY,EAAE,CAG3D;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,CAKjE;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,YAAY,GAAG,IAAI,CAsB3G;AAED,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,GAAE,OAAO,CAAC,eAAe,CAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,eAAe,CAa7H"}
1
+ {"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/db/templates.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,eAAe,EAAE,YAAY,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAItJ,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;IAClD,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAyBD,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,YAAY,CAiBtF;AAED,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,YAAY,GAAG,IAAI,CAM1E;AAED,wBAAgB,aAAa,CAAC,EAAE,CAAC,EAAE,QAAQ,GAAG,YAAY,EAAE,CAG3D;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,CAMjE;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,YAAY,GAAG,IAAI,CAsB3G;AAED,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,GAAE,OAAO,CAAC,eAAe,CAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,eAAe,CAa7H;AAID,qEAAqE;AACrE,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,EAAE,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,YAAY,EAAE,CAoC9G;AAED,wEAAwE;AACxE,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,iBAAiB,GAAG,IAAI,CASxF;AAED,0DAA0D;AAC1D,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,YAAY,EAAE,CAMlF;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAClC,UAAU,CAAC,EAAE,MAAM,EACnB,EAAE,CAAC,EAAE,QAAQ,GACZ,IAAI,EAAE,CAuDR"}
package/dist/index.d.ts CHANGED
@@ -15,7 +15,7 @@ export type { RecapSummary } from "./db/audit.js";
15
15
  export { gatherTrainingData } from "./lib/gatherer.js";
16
16
  export { getActiveModel, setActiveModel, clearActiveModel, DEFAULT_MODEL, } from "./lib/model-config.js";
17
17
  export { createWebhook, getWebhook, listWebhooks, deleteWebhook, dispatchWebhook } from "./db/webhooks.js";
18
- export { createTemplate, getTemplate, listTemplates, deleteTemplate, updateTemplate, taskFromTemplate } from "./db/templates.js";
18
+ export { createTemplate, getTemplate, listTemplates, deleteTemplate, updateTemplate, taskFromTemplate, addTemplateTasks, getTemplateWithTasks, getTemplateTasks, tasksFromTemplate } from "./db/templates.js";
19
19
  export { getChecklist, addChecklistItem, checkChecklistItem, updateChecklistItemText, removeChecklistItem, clearChecklist, getChecklistStats, } from "./db/checklists.js";
20
20
  export { createHandoff, listHandoffs, getLatestHandoff } from "./db/handoffs.js";
21
21
  export type { Handoff, CreateHandoffInput } from "./db/handoffs.js";
@@ -56,6 +56,6 @@ export type { TodosConfig, AgentConfig, CompletionGuardConfig } from "./lib/conf
56
56
  export { checkCompletionGuard } from "./lib/completion-guard.js";
57
57
  export { parseRecurrenceRule, isValidRecurrenceRule, nextOccurrence } from "./lib/recurrence.js";
58
58
  export type { ParsedRule } from "./lib/recurrence.js";
59
- export type { Task, TaskWithRelations, CreateTaskInput, UpdateTaskInput, TaskFilter, TaskStatus, TaskPriority, TaskDependency, TaskComment, CreateCommentInput, Project, CreateProjectInput, ProjectSource, ProjectSourceRow, CreateProjectSourceInput, ChecklistItem, ChecklistItemRow, CreateChecklistItemInput, Plan, CreatePlanInput, UpdatePlanInput, PlanStatus, Session, CreateSessionInput, Agent, AgentRow, RegisterAgentInput, TaskList, TaskListRow, CreateTaskListInput, UpdateTaskListInput, LockResult, TaskRow, SessionRow, TaskHistory, Webhook, CreateWebhookInput, TaskTemplate, CreateTemplateInput, Org, CreateOrgInput, } from "./types/index.js";
59
+ export type { Task, TaskWithRelations, CreateTaskInput, UpdateTaskInput, TaskFilter, TaskStatus, TaskPriority, TaskDependency, TaskComment, CreateCommentInput, Project, CreateProjectInput, ProjectSource, ProjectSourceRow, CreateProjectSourceInput, ChecklistItem, ChecklistItemRow, CreateChecklistItemInput, Plan, CreatePlanInput, UpdatePlanInput, PlanStatus, Session, CreateSessionInput, Agent, AgentRow, RegisterAgentInput, TaskList, TaskListRow, CreateTaskListInput, UpdateTaskListInput, LockResult, TaskRow, SessionRow, TaskHistory, Webhook, CreateWebhookInput, TaskTemplate, CreateTemplateInput, TemplateTask, TemplateTaskInput, TemplateWithTasks, Org, CreateOrgInput, } from "./types/index.js";
60
60
  export { TASK_STATUSES, TASK_PRIORITIES, PLAN_STATUSES, VersionConflictError, TaskNotFoundError, ProjectNotFoundError, PlanNotFoundError, LockError, DependencyCycleError, AgentNotFoundError, TaskListNotFoundError, CompletionGuardError, } from "./types/index.js";
61
61
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -828,6 +828,24 @@ var MIGRATIONS = [
828
828
  );
829
829
 
830
830
  INSERT OR IGNORE INTO _migrations (id) VALUES (36);
831
+ `,
832
+ `
833
+ CREATE TABLE IF NOT EXISTS template_tasks (
834
+ id TEXT PRIMARY KEY DEFAULT (lower(hex(randomblob(16)))),
835
+ template_id TEXT NOT NULL REFERENCES task_templates(id) ON DELETE CASCADE,
836
+ position INTEGER NOT NULL,
837
+ title_pattern TEXT NOT NULL,
838
+ description TEXT,
839
+ priority TEXT DEFAULT 'medium',
840
+ tags TEXT DEFAULT '[]',
841
+ task_type TEXT,
842
+ depends_on_positions TEXT DEFAULT '[]',
843
+ metadata TEXT DEFAULT '{}',
844
+ created_at TEXT NOT NULL DEFAULT (datetime('now'))
845
+ );
846
+ CREATE INDEX IF NOT EXISTS idx_template_tasks_template ON template_tasks(template_id);
847
+
848
+ INSERT OR IGNORE INTO _migrations (id) VALUES (37);
831
849
  `
832
850
  ];
833
851
  var _db = null;
@@ -944,6 +962,20 @@ function ensureSchema(db) {
944
962
  metadata TEXT DEFAULT '{}',
945
963
  created_at TEXT NOT NULL DEFAULT (datetime('now'))
946
964
  )`);
965
+ ensureTable("template_tasks", `
966
+ CREATE TABLE template_tasks (
967
+ id TEXT PRIMARY KEY DEFAULT (lower(hex(randomblob(16)))),
968
+ template_id TEXT NOT NULL REFERENCES task_templates(id) ON DELETE CASCADE,
969
+ position INTEGER NOT NULL,
970
+ title_pattern TEXT NOT NULL,
971
+ description TEXT,
972
+ priority TEXT DEFAULT 'medium',
973
+ tags TEXT DEFAULT '[]',
974
+ task_type TEXT,
975
+ depends_on_positions TEXT DEFAULT '[]',
976
+ metadata TEXT DEFAULT '{}',
977
+ created_at TEXT NOT NULL DEFAULT (datetime('now'))
978
+ )`);
947
979
  ensureTable("task_checklists", `
948
980
  CREATE TABLE task_checklists (
949
981
  id TEXT PRIMARY KEY,
@@ -1054,6 +1086,7 @@ function ensureSchema(db) {
1054
1086
  ensureIndex("CREATE INDEX IF NOT EXISTS idx_task_rel_source ON task_relationships(source_task_id)");
1055
1087
  ensureIndex("CREATE INDEX IF NOT EXISTS idx_task_rel_target ON task_relationships(target_task_id)");
1056
1088
  ensureIndex("CREATE INDEX IF NOT EXISTS idx_task_rel_type ON task_relationships(relationship_type)");
1089
+ ensureIndex("CREATE INDEX IF NOT EXISTS idx_template_tasks_template ON template_tasks(template_id)");
1057
1090
  ensureIndex("CREATE INDEX IF NOT EXISTS idx_kg_source ON kg_edges(source_id, source_type)");
1058
1091
  ensureIndex("CREATE INDEX IF NOT EXISTS idx_kg_target ON kg_edges(target_id, target_type)");
1059
1092
  ensureIndex("CREATE INDEX IF NOT EXISTS idx_kg_relation ON kg_edges(relation_type)");
@@ -1765,6 +1798,15 @@ function rowToTemplate(row) {
1765
1798
  priority: row.priority || "medium"
1766
1799
  };
1767
1800
  }
1801
+ function rowToTemplateTask(row) {
1802
+ return {
1803
+ ...row,
1804
+ tags: JSON.parse(row.tags || "[]"),
1805
+ depends_on_positions: JSON.parse(row.depends_on_positions || "[]"),
1806
+ metadata: JSON.parse(row.metadata || "{}"),
1807
+ priority: row.priority || "medium"
1808
+ };
1809
+ }
1768
1810
  function resolveTemplateId(id, d) {
1769
1811
  return resolvePartialId(d, "task_templates", id);
1770
1812
  }
@@ -1784,6 +1826,9 @@ function createTemplate(input, db) {
1784
1826
  JSON.stringify(input.metadata || {}),
1785
1827
  now()
1786
1828
  ]);
1829
+ if (input.tasks && input.tasks.length > 0) {
1830
+ addTemplateTasks(id, input.tasks, d);
1831
+ }
1787
1832
  return getTemplate(id, d);
1788
1833
  }
1789
1834
  function getTemplate(id, db) {
@@ -1865,6 +1910,100 @@ function taskFromTemplate(templateId, overrides = {}, db) {
1865
1910
  ...overrides
1866
1911
  };
1867
1912
  }
1913
+ function addTemplateTasks(templateId, tasks, db) {
1914
+ const d = db || getDatabase();
1915
+ const template = getTemplate(templateId, d);
1916
+ if (!template)
1917
+ throw new Error(`Template not found: ${templateId}`);
1918
+ d.run("DELETE FROM template_tasks WHERE template_id = ?", [templateId]);
1919
+ const results = [];
1920
+ for (let i = 0;i < tasks.length; i++) {
1921
+ const task = tasks[i];
1922
+ const id = uuid();
1923
+ d.run(`INSERT INTO template_tasks (id, template_id, position, title_pattern, description, priority, tags, task_type, depends_on_positions, metadata, created_at)
1924
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, [
1925
+ id,
1926
+ templateId,
1927
+ i,
1928
+ task.title_pattern,
1929
+ task.description || null,
1930
+ task.priority || "medium",
1931
+ JSON.stringify(task.tags || []),
1932
+ task.task_type || null,
1933
+ JSON.stringify(task.depends_on || []),
1934
+ JSON.stringify(task.metadata || {}),
1935
+ now()
1936
+ ]);
1937
+ const row = d.query("SELECT * FROM template_tasks WHERE id = ?").get(id);
1938
+ if (row)
1939
+ results.push(rowToTemplateTask(row));
1940
+ }
1941
+ return results;
1942
+ }
1943
+ function getTemplateWithTasks(id, db) {
1944
+ const d = db || getDatabase();
1945
+ const template = getTemplate(id, d);
1946
+ if (!template)
1947
+ return null;
1948
+ const rows = d.query("SELECT * FROM template_tasks WHERE template_id = ? ORDER BY position").all(template.id);
1949
+ const tasks = rows.map(rowToTemplateTask);
1950
+ return { ...template, tasks };
1951
+ }
1952
+ function getTemplateTasks(templateId, db) {
1953
+ const d = db || getDatabase();
1954
+ const resolved = resolveTemplateId(templateId, d);
1955
+ if (!resolved)
1956
+ return [];
1957
+ const rows = d.query("SELECT * FROM template_tasks WHERE template_id = ? ORDER BY position").all(resolved);
1958
+ return rows.map(rowToTemplateTask);
1959
+ }
1960
+ function tasksFromTemplate(templateId, projectId, variables, taskListId, db) {
1961
+ const d = db || getDatabase();
1962
+ const template = getTemplateWithTasks(templateId, d);
1963
+ if (!template)
1964
+ throw new Error(`Template not found: ${templateId}`);
1965
+ if (template.tasks.length === 0) {
1966
+ const input = taskFromTemplate(templateId, { project_id: projectId, task_list_id: taskListId }, d);
1967
+ const task = createTask(input, d);
1968
+ return [task];
1969
+ }
1970
+ const createdTasks = [];
1971
+ const positionToId = new Map;
1972
+ for (const tt of template.tasks) {
1973
+ let title = tt.title_pattern;
1974
+ let desc = tt.description;
1975
+ if (variables) {
1976
+ for (const [key, val] of Object.entries(variables)) {
1977
+ title = title.replace(new RegExp(`\\{${key}\\}`, "g"), val);
1978
+ if (desc)
1979
+ desc = desc.replace(new RegExp(`\\{${key}\\}`, "g"), val);
1980
+ }
1981
+ }
1982
+ const task = createTask({
1983
+ title,
1984
+ description: desc ?? undefined,
1985
+ priority: tt.priority,
1986
+ tags: tt.tags,
1987
+ task_type: tt.task_type ?? undefined,
1988
+ project_id: projectId,
1989
+ task_list_id: taskListId,
1990
+ metadata: tt.metadata
1991
+ }, d);
1992
+ createdTasks.push(task);
1993
+ positionToId.set(tt.position, task.id);
1994
+ }
1995
+ for (const tt of template.tasks) {
1996
+ const deps = tt.depends_on_positions;
1997
+ for (const depPos of deps) {
1998
+ const taskId = positionToId.get(tt.position);
1999
+ const depId = positionToId.get(depPos);
2000
+ if (taskId && depId) {
2001
+ addDependency(taskId, depId, d);
2002
+ }
2003
+ }
2004
+ }
2005
+ return createdTasks;
2006
+ }
1868
2007
 
1869
2008
  // src/db/checklists.ts
1870
2009
  function rowToItem(row) {
@@ -14594,6 +14733,24 @@ var PG_MIGRATIONS = [
14594
14733
  );
14595
14734
 
14596
14735
  INSERT INTO _migrations (id) VALUES (36) ON CONFLICT DO NOTHING;
14736
+ `,
14737
+ `
14738
+ CREATE TABLE IF NOT EXISTS template_tasks (
14739
+ id TEXT PRIMARY KEY DEFAULT gen_random_uuid()::text,
14740
+ template_id TEXT NOT NULL REFERENCES task_templates(id) ON DELETE CASCADE,
14741
+ position INTEGER NOT NULL,
14742
+ title_pattern TEXT NOT NULL,
14743
+ description TEXT,
14744
+ priority TEXT DEFAULT 'medium',
14745
+ tags TEXT DEFAULT '[]',
14746
+ task_type TEXT,
14747
+ depends_on_positions TEXT DEFAULT '[]',
14748
+ metadata TEXT DEFAULT '{}',
14749
+ created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
14750
+ );
14751
+ CREATE INDEX IF NOT EXISTS idx_template_tasks_template ON template_tasks(template_id);
14752
+
14753
+ INSERT INTO _migrations (id) VALUES (37) ON CONFLICT DO NOTHING;
14597
14754
  `
14598
14755
  ];
14599
14756
 
@@ -15152,6 +15309,7 @@ export {
15152
15309
  updateAgent,
15153
15310
  unlockTask,
15154
15311
  unarchiveAgent,
15312
+ tasksFromTemplate,
15155
15313
  taskFromTemplate,
15156
15314
  tagToPriority,
15157
15315
  syncWithAgents,
@@ -15213,6 +15371,8 @@ export {
15213
15371
  isAgentConflict,
15214
15372
  getWebhook,
15215
15373
  getTraceStats,
15374
+ getTemplateWithTasks,
15375
+ getTemplateTasks,
15216
15376
  getTemplate,
15217
15377
  getTasksChangedSince,
15218
15378
  getTaskWithRelations,
@@ -15317,6 +15477,7 @@ export {
15317
15477
  autoDetectFileRelationships,
15318
15478
  archiveAgent,
15319
15479
  applyPgMigrations,
15480
+ addTemplateTasks,
15320
15481
  addTaskRelationship,
15321
15482
  addTaskFile,
15322
15483
  addProjectSource,
package/dist/mcp/index.js CHANGED
@@ -10856,6 +10856,20 @@ function ensureSchema(db) {
10856
10856
  metadata TEXT DEFAULT '{}',
10857
10857
  created_at TEXT NOT NULL DEFAULT (datetime('now'))
10858
10858
  )`);
10859
+ ensureTable("template_tasks", `
10860
+ CREATE TABLE template_tasks (
10861
+ id TEXT PRIMARY KEY DEFAULT (lower(hex(randomblob(16)))),
10862
+ template_id TEXT NOT NULL REFERENCES task_templates(id) ON DELETE CASCADE,
10863
+ position INTEGER NOT NULL,
10864
+ title_pattern TEXT NOT NULL,
10865
+ description TEXT,
10866
+ priority TEXT DEFAULT 'medium',
10867
+ tags TEXT DEFAULT '[]',
10868
+ task_type TEXT,
10869
+ depends_on_positions TEXT DEFAULT '[]',
10870
+ metadata TEXT DEFAULT '{}',
10871
+ created_at TEXT NOT NULL DEFAULT (datetime('now'))
10872
+ )`);
10859
10873
  ensureTable("task_checklists", `
10860
10874
  CREATE TABLE task_checklists (
10861
10875
  id TEXT PRIMARY KEY,
@@ -10966,6 +10980,7 @@ function ensureSchema(db) {
10966
10980
  ensureIndex("CREATE INDEX IF NOT EXISTS idx_task_rel_source ON task_relationships(source_task_id)");
10967
10981
  ensureIndex("CREATE INDEX IF NOT EXISTS idx_task_rel_target ON task_relationships(target_task_id)");
10968
10982
  ensureIndex("CREATE INDEX IF NOT EXISTS idx_task_rel_type ON task_relationships(relationship_type)");
10983
+ ensureIndex("CREATE INDEX IF NOT EXISTS idx_template_tasks_template ON template_tasks(template_id)");
10969
10984
  ensureIndex("CREATE INDEX IF NOT EXISTS idx_kg_source ON kg_edges(source_id, source_type)");
10970
10985
  ensureIndex("CREATE INDEX IF NOT EXISTS idx_kg_target ON kg_edges(target_id, target_type)");
10971
10986
  ensureIndex("CREATE INDEX IF NOT EXISTS idx_kg_relation ON kg_edges(relation_type)");
@@ -11609,6 +11624,24 @@ var init_database = __esm(() => {
11609
11624
  );
11610
11625
 
11611
11626
  INSERT OR IGNORE INTO _migrations (id) VALUES (36);
11627
+ `,
11628
+ `
11629
+ CREATE TABLE IF NOT EXISTS template_tasks (
11630
+ id TEXT PRIMARY KEY DEFAULT (lower(hex(randomblob(16)))),
11631
+ template_id TEXT NOT NULL REFERENCES task_templates(id) ON DELETE CASCADE,
11632
+ position INTEGER NOT NULL,
11633
+ title_pattern TEXT NOT NULL,
11634
+ description TEXT,
11635
+ priority TEXT DEFAULT 'medium',
11636
+ tags TEXT DEFAULT '[]',
11637
+ task_type TEXT,
11638
+ depends_on_positions TEXT DEFAULT '[]',
11639
+ metadata TEXT DEFAULT '{}',
11640
+ created_at TEXT NOT NULL DEFAULT (datetime('now'))
11641
+ );
11642
+ CREATE INDEX IF NOT EXISTS idx_template_tasks_template ON template_tasks(template_id);
11643
+
11644
+ INSERT OR IGNORE INTO _migrations (id) VALUES (37);
11612
11645
  `
11613
11646
  ];
11614
11647
  });
@@ -12098,11 +12131,15 @@ var init_webhooks = __esm(() => {
12098
12131
  var exports_templates = {};
12099
12132
  __export(exports_templates, {
12100
12133
  updateTemplate: () => updateTemplate,
12134
+ tasksFromTemplate: () => tasksFromTemplate,
12101
12135
  taskFromTemplate: () => taskFromTemplate,
12102
12136
  listTemplates: () => listTemplates,
12137
+ getTemplateWithTasks: () => getTemplateWithTasks,
12138
+ getTemplateTasks: () => getTemplateTasks,
12103
12139
  getTemplate: () => getTemplate,
12104
12140
  deleteTemplate: () => deleteTemplate,
12105
- createTemplate: () => createTemplate
12141
+ createTemplate: () => createTemplate,
12142
+ addTemplateTasks: () => addTemplateTasks
12106
12143
  });
12107
12144
  function rowToTemplate(row) {
12108
12145
  return {
@@ -12112,6 +12149,15 @@ function rowToTemplate(row) {
12112
12149
  priority: row.priority || "medium"
12113
12150
  };
12114
12151
  }
12152
+ function rowToTemplateTask(row) {
12153
+ return {
12154
+ ...row,
12155
+ tags: JSON.parse(row.tags || "[]"),
12156
+ depends_on_positions: JSON.parse(row.depends_on_positions || "[]"),
12157
+ metadata: JSON.parse(row.metadata || "{}"),
12158
+ priority: row.priority || "medium"
12159
+ };
12160
+ }
12115
12161
  function resolveTemplateId(id, d) {
12116
12162
  return resolvePartialId(d, "task_templates", id);
12117
12163
  }
@@ -12131,6 +12177,9 @@ function createTemplate(input, db) {
12131
12177
  JSON.stringify(input.metadata || {}),
12132
12178
  now()
12133
12179
  ]);
12180
+ if (input.tasks && input.tasks.length > 0) {
12181
+ addTemplateTasks(id, input.tasks, d);
12182
+ }
12134
12183
  return getTemplate(id, d);
12135
12184
  }
12136
12185
  function getTemplate(id, db) {
@@ -12212,8 +12261,103 @@ function taskFromTemplate(templateId, overrides = {}, db) {
12212
12261
  ...overrides
12213
12262
  };
12214
12263
  }
12264
+ function addTemplateTasks(templateId, tasks, db) {
12265
+ const d = db || getDatabase();
12266
+ const template = getTemplate(templateId, d);
12267
+ if (!template)
12268
+ throw new Error(`Template not found: ${templateId}`);
12269
+ d.run("DELETE FROM template_tasks WHERE template_id = ?", [templateId]);
12270
+ const results = [];
12271
+ for (let i = 0;i < tasks.length; i++) {
12272
+ const task = tasks[i];
12273
+ const id = uuid();
12274
+ d.run(`INSERT INTO template_tasks (id, template_id, position, title_pattern, description, priority, tags, task_type, depends_on_positions, metadata, created_at)
12275
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, [
12276
+ id,
12277
+ templateId,
12278
+ i,
12279
+ task.title_pattern,
12280
+ task.description || null,
12281
+ task.priority || "medium",
12282
+ JSON.stringify(task.tags || []),
12283
+ task.task_type || null,
12284
+ JSON.stringify(task.depends_on || []),
12285
+ JSON.stringify(task.metadata || {}),
12286
+ now()
12287
+ ]);
12288
+ const row = d.query("SELECT * FROM template_tasks WHERE id = ?").get(id);
12289
+ if (row)
12290
+ results.push(rowToTemplateTask(row));
12291
+ }
12292
+ return results;
12293
+ }
12294
+ function getTemplateWithTasks(id, db) {
12295
+ const d = db || getDatabase();
12296
+ const template = getTemplate(id, d);
12297
+ if (!template)
12298
+ return null;
12299
+ const rows = d.query("SELECT * FROM template_tasks WHERE template_id = ? ORDER BY position").all(template.id);
12300
+ const tasks = rows.map(rowToTemplateTask);
12301
+ return { ...template, tasks };
12302
+ }
12303
+ function getTemplateTasks(templateId, db) {
12304
+ const d = db || getDatabase();
12305
+ const resolved = resolveTemplateId(templateId, d);
12306
+ if (!resolved)
12307
+ return [];
12308
+ const rows = d.query("SELECT * FROM template_tasks WHERE template_id = ? ORDER BY position").all(resolved);
12309
+ return rows.map(rowToTemplateTask);
12310
+ }
12311
+ function tasksFromTemplate(templateId, projectId, variables, taskListId, db) {
12312
+ const d = db || getDatabase();
12313
+ const template = getTemplateWithTasks(templateId, d);
12314
+ if (!template)
12315
+ throw new Error(`Template not found: ${templateId}`);
12316
+ if (template.tasks.length === 0) {
12317
+ const input = taskFromTemplate(templateId, { project_id: projectId, task_list_id: taskListId }, d);
12318
+ const task = createTask(input, d);
12319
+ return [task];
12320
+ }
12321
+ const createdTasks = [];
12322
+ const positionToId = new Map;
12323
+ for (const tt of template.tasks) {
12324
+ let title = tt.title_pattern;
12325
+ let desc = tt.description;
12326
+ if (variables) {
12327
+ for (const [key, val] of Object.entries(variables)) {
12328
+ title = title.replace(new RegExp(`\\{${key}\\}`, "g"), val);
12329
+ if (desc)
12330
+ desc = desc.replace(new RegExp(`\\{${key}\\}`, "g"), val);
12331
+ }
12332
+ }
12333
+ const task = createTask({
12334
+ title,
12335
+ description: desc ?? undefined,
12336
+ priority: tt.priority,
12337
+ tags: tt.tags,
12338
+ task_type: tt.task_type ?? undefined,
12339
+ project_id: projectId,
12340
+ task_list_id: taskListId,
12341
+ metadata: tt.metadata
12342
+ }, d);
12343
+ createdTasks.push(task);
12344
+ positionToId.set(tt.position, task.id);
12345
+ }
12346
+ for (const tt of template.tasks) {
12347
+ const deps = tt.depends_on_positions;
12348
+ for (const depPos of deps) {
12349
+ const taskId = positionToId.get(tt.position);
12350
+ const depId = positionToId.get(depPos);
12351
+ if (taskId && depId) {
12352
+ addDependency(taskId, depId, d);
12353
+ }
12354
+ }
12355
+ }
12356
+ return createdTasks;
12357
+ }
12215
12358
  var init_templates = __esm(() => {
12216
12359
  init_database();
12360
+ init_tasks();
12217
12361
  });
12218
12362
 
12219
12363
  // src/db/checklists.ts
@@ -15984,6 +16128,24 @@ var init_pg_migrations = __esm(() => {
15984
16128
  );
15985
16129
 
15986
16130
  INSERT INTO _migrations (id) VALUES (36) ON CONFLICT DO NOTHING;
16131
+ `,
16132
+ `
16133
+ CREATE TABLE IF NOT EXISTS template_tasks (
16134
+ id TEXT PRIMARY KEY DEFAULT gen_random_uuid()::text,
16135
+ template_id TEXT NOT NULL REFERENCES task_templates(id) ON DELETE CASCADE,
16136
+ position INTEGER NOT NULL,
16137
+ title_pattern TEXT NOT NULL,
16138
+ description TEXT,
16139
+ priority TEXT DEFAULT 'medium',
16140
+ tags TEXT DEFAULT '[]',
16141
+ task_type TEXT,
16142
+ depends_on_positions TEXT DEFAULT '[]',
16143
+ metadata TEXT DEFAULT '{}',
16144
+ created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
16145
+ );
16146
+ CREATE INDEX IF NOT EXISTS idx_template_tasks_template ON template_tasks(template_id);
16147
+
16148
+ INSERT INTO _migrations (id) VALUES (37) ON CONFLICT DO NOTHING;
15987
16149
  `
15988
16150
  ];
15989
16151
  });
@@ -22648,19 +22810,31 @@ if (shouldRegisterTool("delete_webhook")) {
22648
22810
  });
22649
22811
  }
22650
22812
  if (shouldRegisterTool("create_template")) {
22651
- server.tool("create_template", "Create a reusable task template.", {
22813
+ server.tool("create_template", "Create a reusable task template. Optionally include a tasks array to define a multi-task template with dependencies and variable placeholders ({name} syntax).", {
22652
22814
  name: exports_external.string(),
22653
22815
  title_pattern: exports_external.string(),
22654
22816
  description: exports_external.string().optional(),
22655
22817
  priority: exports_external.enum(["low", "medium", "high", "critical"]).optional(),
22656
22818
  tags: exports_external.array(exports_external.string()).optional(),
22657
22819
  project_id: exports_external.string().optional(),
22658
- plan_id: exports_external.string().optional()
22820
+ plan_id: exports_external.string().optional(),
22821
+ tasks: exports_external.array(exports_external.object({
22822
+ title_pattern: exports_external.string().describe("Title pattern with optional {variable} placeholders"),
22823
+ description: exports_external.string().optional(),
22824
+ priority: exports_external.enum(["low", "medium", "high", "critical"]).optional(),
22825
+ tags: exports_external.array(exports_external.string()).optional(),
22826
+ task_type: exports_external.string().optional(),
22827
+ depends_on: exports_external.array(exports_external.number()).optional().describe("Position indices (0-based) of tasks this task depends on"),
22828
+ metadata: exports_external.record(exports_external.unknown()).optional()
22829
+ })).optional().describe("Multi-task template: ordered list of tasks to create together with dependencies")
22659
22830
  }, async (params) => {
22660
22831
  try {
22661
- const { createTemplate: createTemplate2 } = await Promise.resolve().then(() => (init_templates(), exports_templates));
22832
+ const { createTemplate: createTemplate2, getTemplateWithTasks: getTemplateWithTasks2 } = await Promise.resolve().then(() => (init_templates(), exports_templates));
22662
22833
  const t = createTemplate2(params);
22663
- return { content: [{ type: "text", text: `Template created: ${t.id.slice(0, 8)} | ${t.name} | "${t.title_pattern}"` }] };
22834
+ const withTasks = getTemplateWithTasks2(t.id);
22835
+ const taskCount = withTasks?.tasks.length ?? 0;
22836
+ const taskInfo = taskCount > 0 ? ` | ${taskCount} task(s)` : "";
22837
+ return { content: [{ type: "text", text: `Template created: ${t.id.slice(0, 8)} | ${t.name} | "${t.title_pattern}"${taskInfo}` }] };
22664
22838
  } catch (e) {
22665
22839
  return { content: [{ type: "text", text: formatError(e) }], isError: true };
22666
22840
  }
@@ -22683,23 +22857,34 @@ ${text}` }] };
22683
22857
  });
22684
22858
  }
22685
22859
  if (shouldRegisterTool("create_task_from_template")) {
22686
- server.tool("create_task_from_template", "Create a task from a template with optional overrides.", {
22860
+ server.tool("create_task_from_template", "Create task(s) from a template. For multi-task templates, creates all tasks with dependencies wired. Supports {variable} substitution in titles/descriptions.", {
22687
22861
  template_id: exports_external.string(),
22688
- title: exports_external.string().optional(),
22689
- description: exports_external.string().optional(),
22862
+ title: exports_external.string().optional().describe("Override title (single-task templates only)"),
22863
+ description: exports_external.string().optional().describe("Override description (single-task templates only)"),
22690
22864
  priority: exports_external.enum(["low", "medium", "high", "critical"]).optional(),
22691
22865
  assigned_to: exports_external.string().optional(),
22692
- project_id: exports_external.string().optional()
22866
+ project_id: exports_external.string().optional(),
22867
+ task_list_id: exports_external.string().optional(),
22868
+ variables: exports_external.record(exports_external.string()).optional().describe("Variable substitution map for {name} placeholders in multi-task templates")
22693
22869
  }, async (params) => {
22694
22870
  try {
22695
- const { taskFromTemplate: taskFromTemplate2 } = await Promise.resolve().then(() => (init_templates(), exports_templates));
22871
+ const { taskFromTemplate: taskFromTemplate2, getTemplateWithTasks: getTemplateWithTasks2, tasksFromTemplate: tasksFromTemplate2 } = await Promise.resolve().then(() => (init_templates(), exports_templates));
22696
22872
  const resolvedTemplateId = resolveId(params.template_id, "task_templates");
22873
+ const templateWithTasks = getTemplateWithTasks2(resolvedTemplateId);
22874
+ if (templateWithTasks && templateWithTasks.tasks.length > 0) {
22875
+ const tasks = tasksFromTemplate2(resolvedTemplateId, params.project_id || templateWithTasks.project_id || "", params.variables, params.task_list_id);
22876
+ const text = tasks.map((t) => `${t.id.slice(0, 8)} | ${t.priority} | ${t.title}`).join(`
22877
+ `);
22878
+ return { content: [{ type: "text", text: `${tasks.length} task(s) created from template:
22879
+ ${text}` }] };
22880
+ }
22697
22881
  const input = taskFromTemplate2(resolvedTemplateId, {
22698
22882
  title: params.title,
22699
22883
  description: params.description,
22700
22884
  priority: params.priority,
22701
22885
  assigned_to: params.assigned_to,
22702
- project_id: params.project_id
22886
+ project_id: params.project_id,
22887
+ task_list_id: params.task_list_id
22703
22888
  });
22704
22889
  const task = createTask(input);
22705
22890
  return { content: [{ type: "text", text: `Task created from template:
@@ -24087,13 +24272,15 @@ if (shouldRegisterTool("describe_tools")) {
24087
24272
  delete_webhook: `Delete a webhook by ID.
24088
24273
  Params: id(string, req)
24089
24274
  Example: {id: 'a1b2c3d4'}`,
24090
- create_template: `Create a reusable task template.
24091
- Params: name(string, req), title_pattern(string, req \u2014 e.g. 'Fix: {description}'), description(string), priority(low|medium|high|critical), tags(string[]), project_id(string), plan_id(string)
24092
- Example: {name: 'Bug Report', title_pattern: 'Bug: {description}', priority: 'high', tags: ['bug']}`,
24275
+ create_template: `Create a reusable task template. Supports multi-task templates with dependencies.
24276
+ Params: name(string, req), title_pattern(string, req), description(string), priority(low|medium|high|critical), tags(string[]), project_id(string), plan_id(string), tasks(array of {title_pattern, description, priority, tags, task_type, depends_on(number[]), metadata})
24277
+ Example single: {name: 'Bug Report', title_pattern: 'Bug: {description}', priority: 'high', tags: ['bug']}
24278
+ Example multi: {name: 'Feature', title_pattern: 'Feature: {name}', tasks: [{title_pattern: 'Design {name}'}, {title_pattern: 'Implement {name}', depends_on: [0]}, {title_pattern: 'Test {name}', depends_on: [1]}]}`,
24093
24279
  list_templates: "List all task templates. No params.",
24094
- create_task_from_template: `Create a task from a template with optional overrides.
24095
- Params: template_id(string, req), title(string), description(string), priority(low|medium|high|critical), assigned_to(string), project_id(string)
24096
- Example: {template_id: 'a1b2c3d4', assigned_to: 'maximus'}`,
24280
+ create_task_from_template: `Create task(s) from a template. Multi-task templates create all tasks with dependencies wired. Supports {variable} substitution.
24281
+ Params: template_id(string, req), title(string \u2014 single-task override), description(string), priority(low|medium|high|critical), assigned_to(string), project_id(string), task_list_id(string), variables(Record<string,string> \u2014 {name} substitution)
24282
+ Example single: {template_id: 'a1b2c3d4', assigned_to: 'maximus'}
24283
+ Example multi: {template_id: 'a1b2c3d4', project_id: 'proj1', variables: {name: 'OAuth login'}}`,
24097
24284
  delete_template: `Delete a task template.
24098
24285
  Params: id(string, req)
24099
24286
  Example: {id: 'a1b2c3d4'}`,
@@ -280,6 +280,20 @@ function ensureSchema(db) {
280
280
  metadata TEXT DEFAULT '{}',
281
281
  created_at TEXT NOT NULL DEFAULT (datetime('now'))
282
282
  )`);
283
+ ensureTable("template_tasks", `
284
+ CREATE TABLE template_tasks (
285
+ id TEXT PRIMARY KEY DEFAULT (lower(hex(randomblob(16)))),
286
+ template_id TEXT NOT NULL REFERENCES task_templates(id) ON DELETE CASCADE,
287
+ position INTEGER NOT NULL,
288
+ title_pattern TEXT NOT NULL,
289
+ description TEXT,
290
+ priority TEXT DEFAULT 'medium',
291
+ tags TEXT DEFAULT '[]',
292
+ task_type TEXT,
293
+ depends_on_positions TEXT DEFAULT '[]',
294
+ metadata TEXT DEFAULT '{}',
295
+ created_at TEXT NOT NULL DEFAULT (datetime('now'))
296
+ )`);
283
297
  ensureTable("task_checklists", `
284
298
  CREATE TABLE task_checklists (
285
299
  id TEXT PRIMARY KEY,
@@ -390,6 +404,7 @@ function ensureSchema(db) {
390
404
  ensureIndex("CREATE INDEX IF NOT EXISTS idx_task_rel_source ON task_relationships(source_task_id)");
391
405
  ensureIndex("CREATE INDEX IF NOT EXISTS idx_task_rel_target ON task_relationships(target_task_id)");
392
406
  ensureIndex("CREATE INDEX IF NOT EXISTS idx_task_rel_type ON task_relationships(relationship_type)");
407
+ ensureIndex("CREATE INDEX IF NOT EXISTS idx_template_tasks_template ON template_tasks(template_id)");
393
408
  ensureIndex("CREATE INDEX IF NOT EXISTS idx_kg_source ON kg_edges(source_id, source_type)");
394
409
  ensureIndex("CREATE INDEX IF NOT EXISTS idx_kg_target ON kg_edges(target_id, target_type)");
395
410
  ensureIndex("CREATE INDEX IF NOT EXISTS idx_kg_relation ON kg_edges(relation_type)");
@@ -1024,6 +1039,24 @@ var init_database = __esm(() => {
1024
1039
  );
1025
1040
 
1026
1041
  INSERT OR IGNORE INTO _migrations (id) VALUES (36);
1042
+ `,
1043
+ `
1044
+ CREATE TABLE IF NOT EXISTS template_tasks (
1045
+ id TEXT PRIMARY KEY DEFAULT (lower(hex(randomblob(16)))),
1046
+ template_id TEXT NOT NULL REFERENCES task_templates(id) ON DELETE CASCADE,
1047
+ position INTEGER NOT NULL,
1048
+ title_pattern TEXT NOT NULL,
1049
+ description TEXT,
1050
+ priority TEXT DEFAULT 'medium',
1051
+ tags TEXT DEFAULT '[]',
1052
+ task_type TEXT,
1053
+ depends_on_positions TEXT DEFAULT '[]',
1054
+ metadata TEXT DEFAULT '{}',
1055
+ created_at TEXT NOT NULL DEFAULT (datetime('now'))
1056
+ );
1057
+ CREATE INDEX IF NOT EXISTS idx_template_tasks_template ON template_tasks(template_id);
1058
+
1059
+ INSERT OR IGNORE INTO _migrations (id) VALUES (37);
1027
1060
  `
1028
1061
  ];
1029
1062
  });
@@ -1500,11 +1533,15 @@ var init_webhooks = __esm(() => {
1500
1533
  var exports_templates = {};
1501
1534
  __export(exports_templates, {
1502
1535
  updateTemplate: () => updateTemplate,
1536
+ tasksFromTemplate: () => tasksFromTemplate,
1503
1537
  taskFromTemplate: () => taskFromTemplate,
1504
1538
  listTemplates: () => listTemplates,
1539
+ getTemplateWithTasks: () => getTemplateWithTasks,
1540
+ getTemplateTasks: () => getTemplateTasks,
1505
1541
  getTemplate: () => getTemplate,
1506
1542
  deleteTemplate: () => deleteTemplate,
1507
- createTemplate: () => createTemplate
1543
+ createTemplate: () => createTemplate,
1544
+ addTemplateTasks: () => addTemplateTasks
1508
1545
  });
1509
1546
  function rowToTemplate(row) {
1510
1547
  return {
@@ -1514,6 +1551,15 @@ function rowToTemplate(row) {
1514
1551
  priority: row.priority || "medium"
1515
1552
  };
1516
1553
  }
1554
+ function rowToTemplateTask(row) {
1555
+ return {
1556
+ ...row,
1557
+ tags: JSON.parse(row.tags || "[]"),
1558
+ depends_on_positions: JSON.parse(row.depends_on_positions || "[]"),
1559
+ metadata: JSON.parse(row.metadata || "{}"),
1560
+ priority: row.priority || "medium"
1561
+ };
1562
+ }
1517
1563
  function resolveTemplateId(id, d) {
1518
1564
  return resolvePartialId(d, "task_templates", id);
1519
1565
  }
@@ -1533,6 +1579,9 @@ function createTemplate(input, db) {
1533
1579
  JSON.stringify(input.metadata || {}),
1534
1580
  now()
1535
1581
  ]);
1582
+ if (input.tasks && input.tasks.length > 0) {
1583
+ addTemplateTasks(id, input.tasks, d);
1584
+ }
1536
1585
  return getTemplate(id, d);
1537
1586
  }
1538
1587
  function getTemplate(id, db) {
@@ -1614,8 +1663,103 @@ function taskFromTemplate(templateId, overrides = {}, db) {
1614
1663
  ...overrides
1615
1664
  };
1616
1665
  }
1666
+ function addTemplateTasks(templateId, tasks, db) {
1667
+ const d = db || getDatabase();
1668
+ const template = getTemplate(templateId, d);
1669
+ if (!template)
1670
+ throw new Error(`Template not found: ${templateId}`);
1671
+ d.run("DELETE FROM template_tasks WHERE template_id = ?", [templateId]);
1672
+ const results = [];
1673
+ for (let i = 0;i < tasks.length; i++) {
1674
+ const task = tasks[i];
1675
+ const id = uuid();
1676
+ d.run(`INSERT INTO template_tasks (id, template_id, position, title_pattern, description, priority, tags, task_type, depends_on_positions, metadata, created_at)
1677
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, [
1678
+ id,
1679
+ templateId,
1680
+ i,
1681
+ task.title_pattern,
1682
+ task.description || null,
1683
+ task.priority || "medium",
1684
+ JSON.stringify(task.tags || []),
1685
+ task.task_type || null,
1686
+ JSON.stringify(task.depends_on || []),
1687
+ JSON.stringify(task.metadata || {}),
1688
+ now()
1689
+ ]);
1690
+ const row = d.query("SELECT * FROM template_tasks WHERE id = ?").get(id);
1691
+ if (row)
1692
+ results.push(rowToTemplateTask(row));
1693
+ }
1694
+ return results;
1695
+ }
1696
+ function getTemplateWithTasks(id, db) {
1697
+ const d = db || getDatabase();
1698
+ const template = getTemplate(id, d);
1699
+ if (!template)
1700
+ return null;
1701
+ const rows = d.query("SELECT * FROM template_tasks WHERE template_id = ? ORDER BY position").all(template.id);
1702
+ const tasks = rows.map(rowToTemplateTask);
1703
+ return { ...template, tasks };
1704
+ }
1705
+ function getTemplateTasks(templateId, db) {
1706
+ const d = db || getDatabase();
1707
+ const resolved = resolveTemplateId(templateId, d);
1708
+ if (!resolved)
1709
+ return [];
1710
+ const rows = d.query("SELECT * FROM template_tasks WHERE template_id = ? ORDER BY position").all(resolved);
1711
+ return rows.map(rowToTemplateTask);
1712
+ }
1713
+ function tasksFromTemplate(templateId, projectId, variables, taskListId, db) {
1714
+ const d = db || getDatabase();
1715
+ const template = getTemplateWithTasks(templateId, d);
1716
+ if (!template)
1717
+ throw new Error(`Template not found: ${templateId}`);
1718
+ if (template.tasks.length === 0) {
1719
+ const input = taskFromTemplate(templateId, { project_id: projectId, task_list_id: taskListId }, d);
1720
+ const task = createTask(input, d);
1721
+ return [task];
1722
+ }
1723
+ const createdTasks = [];
1724
+ const positionToId = new Map;
1725
+ for (const tt of template.tasks) {
1726
+ let title = tt.title_pattern;
1727
+ let desc = tt.description;
1728
+ if (variables) {
1729
+ for (const [key, val] of Object.entries(variables)) {
1730
+ title = title.replace(new RegExp(`\\{${key}\\}`, "g"), val);
1731
+ if (desc)
1732
+ desc = desc.replace(new RegExp(`\\{${key}\\}`, "g"), val);
1733
+ }
1734
+ }
1735
+ const task = createTask({
1736
+ title,
1737
+ description: desc ?? undefined,
1738
+ priority: tt.priority,
1739
+ tags: tt.tags,
1740
+ task_type: tt.task_type ?? undefined,
1741
+ project_id: projectId,
1742
+ task_list_id: taskListId,
1743
+ metadata: tt.metadata
1744
+ }, d);
1745
+ createdTasks.push(task);
1746
+ positionToId.set(tt.position, task.id);
1747
+ }
1748
+ for (const tt of template.tasks) {
1749
+ const deps = tt.depends_on_positions;
1750
+ for (const depPos of deps) {
1751
+ const taskId = positionToId.get(tt.position);
1752
+ const depId = positionToId.get(depPos);
1753
+ if (taskId && depId) {
1754
+ addDependency(taskId, depId, d);
1755
+ }
1756
+ }
1757
+ }
1758
+ return createdTasks;
1759
+ }
1617
1760
  var init_templates = __esm(() => {
1618
1761
  init_database();
1762
+ init_tasks();
1619
1763
  });
1620
1764
 
1621
1765
  // src/db/checklists.ts
@@ -473,6 +473,32 @@ export interface CreateTemplateInput {
473
473
  project_id?: string;
474
474
  plan_id?: string;
475
475
  metadata?: Record<string, unknown>;
476
+ tasks?: TemplateTaskInput[];
477
+ }
478
+ export interface TemplateTask {
479
+ id: string;
480
+ template_id: string;
481
+ position: number;
482
+ title_pattern: string;
483
+ description: string | null;
484
+ priority: TaskPriority;
485
+ tags: string[];
486
+ task_type: string | null;
487
+ depends_on_positions: number[];
488
+ metadata: Record<string, unknown>;
489
+ created_at: string;
490
+ }
491
+ export interface TemplateTaskInput {
492
+ title_pattern: string;
493
+ description?: string;
494
+ priority?: TaskPriority;
495
+ tags?: string[];
496
+ task_type?: string;
497
+ depends_on?: number[];
498
+ metadata?: Record<string, unknown>;
499
+ }
500
+ export interface TemplateWithTasks extends TaskTemplate {
501
+ tasks: TemplateTask[];
476
502
  }
477
503
  export declare class VersionConflictError extends Error {
478
504
  taskId: string;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hasna/todos",
3
- "version": "0.11.8",
3
+ "version": "0.11.10",
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",