@noclaf/cli 0.4.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 (120) hide show
  1. package/README.md +221 -0
  2. package/dist/auth.js +66 -0
  3. package/dist/auth.js.map +1 -0
  4. package/dist/cli/commands/auth.js +76 -0
  5. package/dist/cli/commands/auth.js.map +1 -0
  6. package/dist/cli/commands/init.js +291 -0
  7. package/dist/cli/commands/init.js.map +1 -0
  8. package/dist/cli/commands/skills.js +22 -0
  9. package/dist/cli/commands/skills.js.map +1 -0
  10. package/dist/cli/commands/sync.js +170 -0
  11. package/dist/cli/commands/sync.js.map +1 -0
  12. package/dist/cli/copy/auth.json +6 -0
  13. package/dist/cli/copy/flows.json +6 -0
  14. package/dist/cli/copy/init.json +19 -0
  15. package/dist/cli/copy/sync.json +3 -0
  16. package/dist/cli/copy.js +23 -0
  17. package/dist/cli/copy.js.map +1 -0
  18. package/dist/cli/flows/clients.js +108 -0
  19. package/dist/cli/flows/clients.js.map +1 -0
  20. package/dist/cli/flows/dependencies.js +68 -0
  21. package/dist/cli/flows/dependencies.js.map +1 -0
  22. package/dist/cli/flows/sections.js +45 -0
  23. package/dist/cli/flows/sections.js.map +1 -0
  24. package/dist/cli/ui/render.js +167 -0
  25. package/dist/cli/ui/render.js.map +1 -0
  26. package/dist/cli.js +25 -0
  27. package/dist/cli.js.map +1 -0
  28. package/dist/config.js +96 -0
  29. package/dist/config.js.map +1 -0
  30. package/dist/constants.js +10 -0
  31. package/dist/constants.js.map +1 -0
  32. package/dist/database.types.js +11 -0
  33. package/dist/database.types.js.map +1 -0
  34. package/dist/lib/active-project.js +28 -0
  35. package/dist/lib/active-project.js.map +1 -0
  36. package/dist/lib/client-configs.js +179 -0
  37. package/dist/lib/client-configs.js.map +1 -0
  38. package/dist/lib/client-install.js +40 -0
  39. package/dist/lib/client-install.js.map +1 -0
  40. package/dist/lib/colors.js +67 -0
  41. package/dist/lib/colors.js.map +1 -0
  42. package/dist/lib/cowork-extension.js +131 -0
  43. package/dist/lib/cowork-extension.js.map +1 -0
  44. package/dist/lib/dependencies.js +159 -0
  45. package/dist/lib/dependencies.js.map +1 -0
  46. package/dist/lib/duration.js +5 -0
  47. package/dist/lib/duration.js.map +1 -0
  48. package/dist/lib/file-merge.js +33 -0
  49. package/dist/lib/file-merge.js.map +1 -0
  50. package/dist/lib/hooks.js +231 -0
  51. package/dist/lib/hooks.js.map +1 -0
  52. package/dist/lib/project-context.js +105 -0
  53. package/dist/lib/project-context.js.map +1 -0
  54. package/dist/lib/prompts.js +62 -0
  55. package/dist/lib/prompts.js.map +1 -0
  56. package/dist/lib/provision.js +222 -0
  57. package/dist/lib/provision.js.map +1 -0
  58. package/dist/lib/require-config.js +31 -0
  59. package/dist/lib/require-config.js.map +1 -0
  60. package/dist/lib/sections.js +85 -0
  61. package/dist/lib/sections.js.map +1 -0
  62. package/dist/lib/skill-serve.js +71 -0
  63. package/dist/lib/skill-serve.js.map +1 -0
  64. package/dist/lib/skills-cache.js +89 -0
  65. package/dist/lib/skills-cache.js.map +1 -0
  66. package/dist/lib/skills.js +219 -0
  67. package/dist/lib/skills.js.map +1 -0
  68. package/dist/lib/targets.js +150 -0
  69. package/dist/lib/targets.js.map +1 -0
  70. package/dist/lib/task-history.js +14 -0
  71. package/dist/lib/task-history.js.map +1 -0
  72. package/dist/lib/telemetry.js +32 -0
  73. package/dist/lib/telemetry.js.map +1 -0
  74. package/dist/lib/tool-result.js +12 -0
  75. package/dist/lib/tool-result.js.map +1 -0
  76. package/dist/lib/version-check.js +88 -0
  77. package/dist/lib/version-check.js.map +1 -0
  78. package/dist/logo.js +17 -0
  79. package/dist/logo.js.map +1 -0
  80. package/dist/mcp-server.js +162 -0
  81. package/dist/mcp-server.js.map +1 -0
  82. package/dist/spinner.js +12 -0
  83. package/dist/spinner.js.map +1 -0
  84. package/dist/supabase.js +95 -0
  85. package/dist/supabase.js.map +1 -0
  86. package/dist/tools/comment-task.js +80 -0
  87. package/dist/tools/comment-task.js.map +1 -0
  88. package/dist/tools/create-task.js +194 -0
  89. package/dist/tools/create-task.js.map +1 -0
  90. package/dist/tools/end-allocation.js +59 -0
  91. package/dist/tools/end-allocation.js.map +1 -0
  92. package/dist/tools/end-task-allocation.js +51 -0
  93. package/dist/tools/end-task-allocation.js.map +1 -0
  94. package/dist/tools/get-active-allocation.js +106 -0
  95. package/dist/tools/get-active-allocation.js.map +1 -0
  96. package/dist/tools/get-context.js +47 -0
  97. package/dist/tools/get-context.js.map +1 -0
  98. package/dist/tools/get-task.js +223 -0
  99. package/dist/tools/get-task.js.map +1 -0
  100. package/dist/tools/index.js +34 -0
  101. package/dist/tools/index.js.map +1 -0
  102. package/dist/tools/list-my-allocations.js +87 -0
  103. package/dist/tools/list-my-allocations.js.map +1 -0
  104. package/dist/tools/list-projects.js +34 -0
  105. package/dist/tools/list-projects.js.map +1 -0
  106. package/dist/tools/list-tasks.js +213 -0
  107. package/dist/tools/list-tasks.js.map +1 -0
  108. package/dist/tools/move-task.js +98 -0
  109. package/dist/tools/move-task.js.map +1 -0
  110. package/dist/tools/set-project.js +47 -0
  111. package/dist/tools/set-project.js.map +1 -0
  112. package/dist/tools/start-allocation.js +45 -0
  113. package/dist/tools/start-allocation.js.map +1 -0
  114. package/dist/tools/start-task-allocation.js +141 -0
  115. package/dist/tools/start-task-allocation.js.map +1 -0
  116. package/dist/tools/update-task.js +256 -0
  117. package/dist/tools/update-task.js.map +1 -0
  118. package/dist/version.js +16 -0
  119. package/dist/version.js.map +1 -0
  120. package/package.json +62 -0
@@ -0,0 +1,256 @@
1
+ import { z } from 'zod';
2
+ import { jsonResult, errorResult } from '../lib/tool-result.js';
3
+ import { resolveProjectConfig, isErrorResult } from '../lib/require-config.js';
4
+ import { insertTaskHistory } from '../lib/task-history.js';
5
+ const TASK_STATUS = [
6
+ 'backlog',
7
+ 'todo',
8
+ 'doing',
9
+ 'code_review',
10
+ 'rejected',
11
+ 'qa',
12
+ 'done',
13
+ 'production',
14
+ ];
15
+ const TASK_PRIORITY = ['none', 'lowest', 'low', 'medium', 'high', 'urgent'];
16
+ const TASK_TYPE = ['story', 'bug', 'task', 'epic', 'subtask', 'meeting'];
17
+ const ArgsSchema = z
18
+ .object({
19
+ task_id: z.string().uuid(),
20
+ title: z.string().min(1).max(200).optional(),
21
+ description: z.string().optional(),
22
+ priority: z.enum(TASK_PRIORITY).optional(),
23
+ type: z.enum(TASK_TYPE).optional(),
24
+ status: z.enum(TASK_STATUS).optional(),
25
+ end_date: z.string().regex(/^\d{4}-\d{2}-\d{2}$/).nullable().optional(),
26
+ sprint: z.string().optional(),
27
+ assignee_user_ids: z.array(z.string().uuid()).optional(),
28
+ label_ids: z.array(z.string().uuid()).optional(),
29
+ project_id: z.string().uuid().optional(),
30
+ })
31
+ .strict();
32
+ export const definition = {
33
+ name: 'nos_update_task',
34
+ description: 'Atualiza campos de uma tarefa existente. Só passe os campos que quer mudar. ' +
35
+ 'assignee_user_ids e label_ids são *substituições completas* — passar [] remove todos.',
36
+ inputSchema: {
37
+ type: 'object',
38
+ properties: {
39
+ task_id: { type: 'string', format: 'uuid' },
40
+ title: { type: 'string', minLength: 1, maxLength: 200 },
41
+ description: { type: 'string' },
42
+ priority: { type: 'string', enum: [...TASK_PRIORITY] },
43
+ type: { type: 'string', enum: [...TASK_TYPE] },
44
+ status: { type: 'string', enum: [...TASK_STATUS] },
45
+ end_date: { type: ['string', 'null'], description: 'Data ISO YYYY-MM-DD ou null pra remover.' },
46
+ sprint: { type: 'string', description: '"active", "none" ou UUID.' },
47
+ assignee_user_ids: { type: 'array', items: { type: 'string', format: 'uuid' } },
48
+ label_ids: { type: 'array', items: { type: 'string', format: 'uuid' } },
49
+ project_id: {
50
+ type: 'string',
51
+ format: 'uuid',
52
+ description: 'Override do projeto. Se omitido, usa o projeto ativo (nos_set_project) ou o default.',
53
+ },
54
+ },
55
+ required: ['task_id'],
56
+ additionalProperties: false,
57
+ },
58
+ };
59
+ export async function handler(args, ctx) {
60
+ const parsed = ArgsSchema.safeParse(args);
61
+ if (!parsed.success) {
62
+ return errorResult(`Argumento inválido: ${parsed.error.message}`);
63
+ }
64
+ const input = parsed.data;
65
+ const cfg = resolveProjectConfig(ctx, input.project_id);
66
+ if (isErrorResult(cfg))
67
+ return cfg;
68
+ const { supabase } = ctx;
69
+ // Carrega task atual + valida escopo
70
+ const currentRes = await supabase
71
+ .from('tasks')
72
+ .select('id, title, description, status, priority, type, sprint_id, end_date, project_id')
73
+ .eq('id', input.task_id)
74
+ .eq('project_id', cfg.project_id)
75
+ .maybeSingle();
76
+ if (currentRes.error)
77
+ return errorResult(`Erro ao buscar tarefa: ${currentRes.error.message}`);
78
+ if (!currentRes.data)
79
+ return errorResult('Tarefa não encontrada ou fora do projeto atual.');
80
+ const current = currentRes.data;
81
+ // Resolver sprint_id se passado
82
+ let nextSprintId = undefined;
83
+ if (input.sprint !== undefined) {
84
+ if (input.sprint === 'none') {
85
+ nextSprintId = null;
86
+ }
87
+ else if (input.sprint === 'active') {
88
+ const sprintRes = await supabase
89
+ .from('sprints')
90
+ .select('id')
91
+ .eq('project_id', cfg.project_id)
92
+ .eq('status', 'ativa')
93
+ .maybeSingle();
94
+ if (sprintRes.error)
95
+ return errorResult(`Erro ao buscar sprint ativa: ${sprintRes.error.message}`);
96
+ if (!sprintRes.data)
97
+ return errorResult('Não há sprint ativa no projeto.');
98
+ nextSprintId = sprintRes.data.id;
99
+ }
100
+ else {
101
+ if (!/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(input.sprint)) {
102
+ return errorResult('Argumento "sprint" deve ser "active", "none" ou um UUID válido.');
103
+ }
104
+ const sprintRes = await supabase
105
+ .from('sprints')
106
+ .select('id, project_id')
107
+ .eq('id', input.sprint)
108
+ .maybeSingle();
109
+ if (sprintRes.error)
110
+ return errorResult(`Erro ao validar sprint: ${sprintRes.error.message}`);
111
+ if (!sprintRes.data || sprintRes.data.project_id !== cfg.project_id) {
112
+ return errorResult('Sprint informada não pertence ao projeto atual.');
113
+ }
114
+ nextSprintId = sprintRes.data.id;
115
+ }
116
+ }
117
+ // Monta patch + lista de mudanças pra history
118
+ const patch = {};
119
+ const changes = [];
120
+ const recordChange = (field, oldVal, newVal) => {
121
+ changes.push({
122
+ field,
123
+ old_value: oldVal === null || oldVal === undefined ? null : String(oldVal),
124
+ new_value: newVal === null || newVal === undefined ? null : String(newVal),
125
+ });
126
+ };
127
+ if (input.title !== undefined && input.title !== current.title) {
128
+ patch.title = input.title;
129
+ recordChange('title', current.title, input.title);
130
+ }
131
+ if (input.description !== undefined && input.description !== current.description) {
132
+ patch.description = input.description;
133
+ recordChange('description', current.description, input.description);
134
+ }
135
+ if (input.status !== undefined && input.status !== current.status) {
136
+ patch.status = input.status;
137
+ recordChange('status', current.status, input.status);
138
+ }
139
+ if (input.priority !== undefined && input.priority !== current.priority) {
140
+ patch.priority = input.priority;
141
+ recordChange('priority', current.priority, input.priority);
142
+ }
143
+ if (input.type !== undefined && input.type !== current.type) {
144
+ patch.type = input.type;
145
+ recordChange('type', current.type, input.type);
146
+ }
147
+ if (input.end_date !== undefined && input.end_date !== current.end_date) {
148
+ patch.end_date = input.end_date;
149
+ recordChange('end_date', current.end_date, input.end_date);
150
+ }
151
+ if (nextSprintId !== undefined && nextSprintId !== current.sprint_id) {
152
+ patch.sprint_id = nextSprintId;
153
+ recordChange('sprint_id', current.sprint_id, nextSprintId);
154
+ }
155
+ if (Object.keys(patch).length > 0) {
156
+ const updateRes = await supabase
157
+ .from('tasks')
158
+ .update(patch)
159
+ .eq('id', input.task_id)
160
+ .eq('project_id', cfg.project_id);
161
+ if (updateRes.error)
162
+ return errorResult(`Erro ao atualizar tarefa: ${updateRes.error.message}`);
163
+ }
164
+ // Histórico (best-effort, sequencial pra preservar ordem)
165
+ for (const ch of changes) {
166
+ await insertTaskHistory(supabase, {
167
+ task_id: input.task_id,
168
+ user_id: ctx.user.id,
169
+ action: 'updated',
170
+ field: ch.field,
171
+ old_value: ch.old_value,
172
+ new_value: ch.new_value,
173
+ });
174
+ }
175
+ // Assignees — substituição total
176
+ if (input.assignee_user_ids !== undefined) {
177
+ const currentAssigneesRes = await supabase
178
+ .from('task_assignees')
179
+ .select('user_id')
180
+ .eq('task_id', input.task_id);
181
+ if (currentAssigneesRes.error) {
182
+ return errorResult(`Erro ao buscar assignees atuais: ${currentAssigneesRes.error.message}`);
183
+ }
184
+ const before = (currentAssigneesRes.data ?? []).map((r) => r.user_id).sort();
185
+ const after = [...input.assignee_user_ids].sort();
186
+ const sameSet = before.length === after.length && before.every((v, i) => v === after[i]);
187
+ if (!sameSet) {
188
+ const del = await supabase.from('task_assignees').delete().eq('task_id', input.task_id);
189
+ if (del.error)
190
+ return errorResult(`Erro ao limpar assignees: ${del.error.message}`);
191
+ if (input.assignee_user_ids.length > 0) {
192
+ const ins = await supabase
193
+ .from('task_assignees')
194
+ .insert(input.assignee_user_ids.map((user_id) => ({ task_id: input.task_id, user_id })));
195
+ if (ins.error)
196
+ return errorResult(`Erro ao gravar novos assignees: ${ins.error.message}`);
197
+ }
198
+ await insertTaskHistory(supabase, {
199
+ task_id: input.task_id,
200
+ user_id: ctx.user.id,
201
+ action: 'updated',
202
+ field: 'assignees',
203
+ old_value: JSON.stringify(before),
204
+ new_value: JSON.stringify(after),
205
+ });
206
+ }
207
+ }
208
+ // Labels — substituição total
209
+ if (input.label_ids !== undefined) {
210
+ const currentLabelsRes = await supabase
211
+ .from('task_label_assignments')
212
+ .select('label_id')
213
+ .eq('task_id', input.task_id);
214
+ if (currentLabelsRes.error) {
215
+ return errorResult(`Erro ao buscar labels atuais: ${currentLabelsRes.error.message}`);
216
+ }
217
+ const before = (currentLabelsRes.data ?? []).map((r) => r.label_id).sort();
218
+ const after = [...input.label_ids].sort();
219
+ const sameSet = before.length === after.length && before.every((v, i) => v === after[i]);
220
+ if (!sameSet) {
221
+ const del = await supabase.from('task_label_assignments').delete().eq('task_id', input.task_id);
222
+ if (del.error)
223
+ return errorResult(`Erro ao limpar labels: ${del.error.message}`);
224
+ if (input.label_ids.length > 0) {
225
+ const ins = await supabase
226
+ .from('task_label_assignments')
227
+ .insert(input.label_ids.map((label_id) => ({ task_id: input.task_id, label_id })));
228
+ if (ins.error)
229
+ return errorResult(`Erro ao gravar novas labels: ${ins.error.message}`);
230
+ }
231
+ await insertTaskHistory(supabase, {
232
+ task_id: input.task_id,
233
+ user_id: ctx.user.id,
234
+ action: 'updated',
235
+ field: 'labels',
236
+ old_value: JSON.stringify(before),
237
+ new_value: JSON.stringify(after),
238
+ });
239
+ }
240
+ }
241
+ // Retorna task atualizada
242
+ const finalRes = await supabase
243
+ .from('tasks')
244
+ .select('id, key, title, status, priority, type, sprint_id, end_date, updated_at')
245
+ .eq('id', input.task_id)
246
+ .single();
247
+ if (finalRes.error)
248
+ return errorResult(`Tarefa atualizada, mas falhou ao recarregar: ${finalRes.error.message}`);
249
+ return jsonResult({
250
+ ...finalRes.data,
251
+ changed_fields: changes.map((c) => c.field),
252
+ assignees_changed: input.assignee_user_ids !== undefined,
253
+ labels_changed: input.label_ids !== undefined,
254
+ });
255
+ }
256
+ //# sourceMappingURL=update-task.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-task.js","sourceRoot":"","sources":["../../src/tools/update-task.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { readFileSync } from 'node:fs';
2
+ import { fileURLToPath } from 'node:url';
3
+ import { dirname, join } from 'node:path';
4
+ function loadVersion() {
5
+ try {
6
+ const here = dirname(fileURLToPath(import.meta.url));
7
+ const pkgPath = join(here, '..', 'package.json');
8
+ const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));
9
+ return pkg.version;
10
+ }
11
+ catch {
12
+ return '0.0.0';
13
+ }
14
+ }
15
+ export const VERSION = loadVersion();
16
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE1C,SAAS,WAAW;IAClB,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACrD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;QACjD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAwB,CAAC;QAC9E,OAAO,GAAG,CAAC,OAAO,CAAC;IACrB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,OAAO,GAAG,WAAW,EAAE,CAAC"}
package/package.json ADDED
@@ -0,0 +1,62 @@
1
+ {
2
+ "name": "@noclaf/cli",
3
+ "version": "0.4.0",
4
+ "description": "MCP server e CLI pra controlar o NOS (Noclaf Operation System) a partir de assistentes de IA como Claude Code, Codex CLI e GitHub Copilot.",
5
+ "type": "module",
6
+ "bin": {
7
+ "noclaf": "dist/cli.js",
8
+ "noclaf-cli": "dist/mcp-server.js"
9
+ },
10
+ "files": [
11
+ "dist",
12
+ "README.md"
13
+ ],
14
+ "engines": {
15
+ "node": ">=20"
16
+ },
17
+ "publishConfig": {
18
+ "access": "public"
19
+ },
20
+ "repository": {
21
+ "type": "git",
22
+ "url": "git+https://github.com/Falcao-Tech/noclaf-cli.git"
23
+ },
24
+ "homepage": "https://github.com/Falcao-Tech/noclaf-cli#readme",
25
+ "bugs": {
26
+ "url": "https://github.com/Falcao-Tech/noclaf-cli/issues"
27
+ },
28
+ "keywords": [
29
+ "mcp",
30
+ "model-context-protocol",
31
+ "claude-code",
32
+ "codex",
33
+ "copilot",
34
+ "noclaf",
35
+ "nos"
36
+ ],
37
+ "scripts": {
38
+ "build": "tsc && node --input-type=commonjs -e \"require('fs').cpSync('src/cli/copy','dist/cli/copy',{recursive:true})\" && chmod +x dist/cli.js dist/mcp-server.js",
39
+ "dev:cli": "bun run src/cli.ts",
40
+ "dev:mcp": "bun run src/mcp-server.ts",
41
+ "gen:types": "supabase gen types typescript --project-id wdshvtlsjoegjvmpqobx > src/database.types.ts",
42
+ "prepublishOnly": "bun run build"
43
+ },
44
+ "dependencies": {
45
+ "@clack/prompts": "^1.6.0",
46
+ "@modelcontextprotocol/sdk": "^1.0.4",
47
+ "@supabase/supabase-js": "^2.49.1",
48
+ "adm-zip": "^0.5.17",
49
+ "boxen": "^7.1.1",
50
+ "chalk": "^5.6.2",
51
+ "commander": "^12.1.0",
52
+ "smol-toml": "^1.6.1",
53
+ "update-notifier": "^7.3.1",
54
+ "zod": "^4.4.3"
55
+ },
56
+ "devDependencies": {
57
+ "@types/adm-zip": "^0.5.8",
58
+ "@types/node": "^22.10.5",
59
+ "@types/update-notifier": "^6.0.8",
60
+ "typescript": "^5.4.5"
61
+ }
62
+ }