@creezio/tasks 0.22.0

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.
Files changed (106) hide show
  1. package/README.md +279 -0
  2. package/dist/.creezio-src-hash.json +4 -0
  3. package/dist/ai-task-agent.d.ts +47 -0
  4. package/dist/ai-task-agent.d.ts.map +1 -0
  5. package/dist/ai-task-agent.js +558 -0
  6. package/dist/ai-task-agent.js.map +1 -0
  7. package/dist/ai-task-runner.d.ts +78 -0
  8. package/dist/ai-task-runner.d.ts.map +1 -0
  9. package/dist/ai-task-runner.js +645 -0
  10. package/dist/ai-task-runner.js.map +1 -0
  11. package/dist/api-mount.d.ts +4 -0
  12. package/dist/api-mount.d.ts.map +1 -0
  13. package/dist/api-mount.js +91 -0
  14. package/dist/api-mount.js.map +1 -0
  15. package/dist/assistant-adapter.d.ts +7 -0
  16. package/dist/assistant-adapter.d.ts.map +1 -0
  17. package/dist/assistant-adapter.js +96 -0
  18. package/dist/assistant-adapter.js.map +1 -0
  19. package/dist/brand/config.d.ts +165 -0
  20. package/dist/brand/config.d.ts.map +1 -0
  21. package/dist/brand/config.js +39 -0
  22. package/dist/brand/config.js.map +1 -0
  23. package/dist/env-bridge.d.ts +12 -0
  24. package/dist/env-bridge.d.ts.map +1 -0
  25. package/dist/env-bridge.js +33 -0
  26. package/dist/env-bridge.js.map +1 -0
  27. package/dist/hono-routes.d.ts +8 -0
  28. package/dist/hono-routes.d.ts.map +1 -0
  29. package/dist/hono-routes.js +563 -0
  30. package/dist/hono-routes.js.map +1 -0
  31. package/dist/index.d.ts +29 -0
  32. package/dist/index.d.ts.map +1 -0
  33. package/dist/index.js +21 -0
  34. package/dist/index.js.map +1 -0
  35. package/dist/kanban-service.d.ts +136 -0
  36. package/dist/kanban-service.d.ts.map +1 -0
  37. package/dist/kanban-service.js +580 -0
  38. package/dist/kanban-service.js.map +1 -0
  39. package/dist/mcp-host-tools.d.ts +59 -0
  40. package/dist/mcp-host-tools.d.ts.map +1 -0
  41. package/dist/mcp-host-tools.js +326 -0
  42. package/dist/mcp-host-tools.js.map +1 -0
  43. package/dist/mcp-workspace-tools.d.ts +15 -0
  44. package/dist/mcp-workspace-tools.d.ts.map +1 -0
  45. package/dist/mcp-workspace-tools.js +338 -0
  46. package/dist/mcp-workspace-tools.js.map +1 -0
  47. package/dist/memory-store.d.ts +3 -0
  48. package/dist/memory-store.d.ts.map +1 -0
  49. package/dist/memory-store.js +75 -0
  50. package/dist/memory-store.js.map +1 -0
  51. package/dist/sqlite-driver.d.ts +13 -0
  52. package/dist/sqlite-driver.d.ts.map +1 -0
  53. package/dist/sqlite-driver.js +13 -0
  54. package/dist/sqlite-driver.js.map +1 -0
  55. package/dist/sqlite-store.d.ts +15 -0
  56. package/dist/sqlite-store.d.ts.map +1 -0
  57. package/dist/sqlite-store.js +113 -0
  58. package/dist/sqlite-store.js.map +1 -0
  59. package/dist/task-runs.d.ts +108 -0
  60. package/dist/task-runs.d.ts.map +1 -0
  61. package/dist/task-runs.js +427 -0
  62. package/dist/task-runs.js.map +1 -0
  63. package/dist/types.d.ts +35 -0
  64. package/dist/types.d.ts.map +1 -0
  65. package/dist/types.js +15 -0
  66. package/dist/types.js.map +1 -0
  67. package/dist-cjs/ai-task-agent.js +569 -0
  68. package/dist-cjs/ai-task-agent.js.map +1 -0
  69. package/dist-cjs/ai-task-runner.js +660 -0
  70. package/dist-cjs/ai-task-runner.js.map +1 -0
  71. package/dist-cjs/api-mount.js +94 -0
  72. package/dist-cjs/api-mount.js.map +1 -0
  73. package/dist-cjs/assistant-adapter.js +99 -0
  74. package/dist-cjs/assistant-adapter.js.map +1 -0
  75. package/dist-cjs/brand/config.js +47 -0
  76. package/dist-cjs/brand/config.js.map +1 -0
  77. package/dist-cjs/env-bridge.js +36 -0
  78. package/dist-cjs/env-bridge.js.map +1 -0
  79. package/dist-cjs/hono-routes.js +566 -0
  80. package/dist-cjs/hono-routes.js.map +1 -0
  81. package/dist-cjs/index.js +117 -0
  82. package/dist-cjs/index.js.map +1 -0
  83. package/dist-cjs/kanban-service.js +601 -0
  84. package/dist-cjs/kanban-service.js.map +1 -0
  85. package/dist-cjs/mcp-host-tools.js +333 -0
  86. package/dist-cjs/mcp-host-tools.js.map +1 -0
  87. package/dist-cjs/mcp-workspace-tools.js +342 -0
  88. package/dist-cjs/mcp-workspace-tools.js.map +1 -0
  89. package/dist-cjs/memory-store.js +81 -0
  90. package/dist-cjs/memory-store.js.map +1 -0
  91. package/dist-cjs/package.json +3 -0
  92. package/dist-cjs/sqlite-driver.js +16 -0
  93. package/dist-cjs/sqlite-driver.js.map +1 -0
  94. package/dist-cjs/sqlite-store.js +119 -0
  95. package/dist-cjs/sqlite-store.js.map +1 -0
  96. package/dist-cjs/task-runs.js +457 -0
  97. package/dist-cjs/task-runs.js.map +1 -0
  98. package/dist-cjs/types.js +18 -0
  99. package/dist-cjs/types.js.map +1 -0
  100. package/package.json +79 -0
  101. package/scripts/port-from-tempoflow.mjs +405 -0
  102. package/ui/ai-activity-panel.tsx +559 -0
  103. package/ui/index.ts +7 -0
  104. package/ui/task-detail-sheet.tsx +668 -0
  105. package/ui/tasks-kanban-client.tsx +647 -0
  106. package/ui/tasks-types.ts +120 -0
@@ -0,0 +1,120 @@
1
+ /** Types + méta UI du kanban unifié « Tâches » (API /api/v1/tasks). */
2
+
3
+ export type TaskAssignee = {
4
+ id: string;
5
+ username: string;
6
+ kind: "human" | "ai";
7
+ };
8
+
9
+ export type TaskCard = {
10
+ id: string;
11
+ title: string;
12
+ body: string;
13
+ status: string;
14
+ position: number;
15
+ executor_kind: "human" | "ai" | "hermes";
16
+ assignee_user_id: string | null;
17
+ assignee?: TaskAssignee | null;
18
+ parent_task_id: string | null;
19
+ created_by: string | null;
20
+ priority: number;
21
+ hermes_task_id: string | null;
22
+ hermes_status: string | null;
23
+ recurring_schedule: string | null;
24
+ source: string;
25
+ result: string | null;
26
+ last_synced_at: string | null;
27
+ created_at: string;
28
+ updated_at: string;
29
+ };
30
+
31
+ export const KANBAN_COLUMNS = [
32
+ { key: "backlog", label: "Backlog" },
33
+ { key: "in_progress", label: "En cours" },
34
+ { key: "blocked", label: "Bloqué" },
35
+ { key: "done", label: "Terminé" },
36
+ ] as const;
37
+
38
+ export type ColumnKey = (typeof KANBAN_COLUMNS)[number]["key"];
39
+
40
+ export const STATUS_META: Record<
41
+ string,
42
+ { label: string; badgeClass: string; barClass: string; colTint: string }
43
+ > = {
44
+ backlog: {
45
+ label: "Backlog",
46
+ badgeClass: "bg-slate-200 text-slate-800",
47
+ barClass: "bg-slate-400",
48
+ colTint: "from-slate-50 to-white",
49
+ },
50
+ in_progress: {
51
+ label: "En cours",
52
+ badgeClass: "bg-amber-100 text-amber-900",
53
+ barClass: "bg-amber-500",
54
+ colTint: "from-amber-50/80 to-white",
55
+ },
56
+ blocked: {
57
+ label: "Bloqué",
58
+ badgeClass: "bg-rose-100 text-rose-900",
59
+ barClass: "bg-rose-500",
60
+ colTint: "from-rose-50/70 to-white",
61
+ },
62
+ done: {
63
+ label: "Terminé",
64
+ badgeClass: "bg-emerald-100 text-emerald-900",
65
+ barClass: "bg-emerald-500",
66
+ colTint: "from-emerald-50/70 to-white",
67
+ },
68
+ cancelled: {
69
+ label: "Annulé",
70
+ badgeClass: "bg-slate-100 text-slate-500",
71
+ barClass: "bg-slate-300",
72
+ colTint: "from-slate-50 to-white",
73
+ },
74
+ };
75
+
76
+ export const EXECUTOR_META: Record<
77
+ TaskCard["executor_kind"],
78
+ { label: string; short: string; badgeClass: string }
79
+ > = {
80
+ human: {
81
+ label: "Humain",
82
+ short: "Humain",
83
+ badgeClass: "bg-slate-100 text-slate-700",
84
+ },
85
+ ai: {
86
+ label: "Collaborateur IA",
87
+ short: "IA",
88
+ badgeClass: "bg-violet-100 text-violet-900",
89
+ },
90
+ hermes: {
91
+ label: "Agent Hermes",
92
+ short: "Hermes",
93
+ badgeClass: "bg-sky-100 text-sky-900",
94
+ },
95
+ };
96
+
97
+ export function sourceLabel(source: string): string {
98
+ const map: Record<string, string> = {
99
+ assistant: "Assistant",
100
+ ui: "Manuel",
101
+ hermes: "Hermes",
102
+ sync: "Sync",
103
+ };
104
+ return map[source] || source;
105
+ }
106
+
107
+ /** Extrait le brief « humain » (sans footer technique CRM). */
108
+ export function previewBrief(body: string, max = 120): string {
109
+ if (!body.trim()) return "";
110
+ const cleaned = body
111
+ .split(/\n—\n|\n---\n/)[0]!
112
+ .replace(/^Source:.*$/gim, "")
113
+ .replace(/^Conversation:.*$/gim, "")
114
+ .replace(/^CRM task:.*$/gim, "")
115
+ .replace(/^CRM todo:.*$/gim, "")
116
+ .replace(/^Récurrence:.*$/gim, "")
117
+ .trim();
118
+ if (!cleaned) return "";
119
+ return cleaned.length > max ? `${cleaned.slice(0, max - 1)}…` : cleaned;
120
+ }