@noclaf/cli 0.7.0 → 0.9.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.
- package/README.md +26 -84
- package/dist/app.js +13 -0
- package/dist/app.js.map +1 -0
- package/dist/brand.js +9 -49
- package/dist/brand.js.map +1 -1
- package/dist/cli.js +3 -37
- package/dist/cli.js.map +1 -1
- package/dist/mcp-server.js +3 -187
- package/dist/mcp-server.js.map +1 -1
- package/package.json +8 -17
- package/dist/adapters/supabase/allocation-gateway.js +0 -291
- package/dist/adapters/supabase/allocation-gateway.js.map +0 -1
- package/dist/adapters/supabase/analytics-gateway.js +0 -18
- package/dist/adapters/supabase/analytics-gateway.js.map +0 -1
- package/dist/adapters/supabase/calendar-gateway.js +0 -48
- package/dist/adapters/supabase/calendar-gateway.js.map +0 -1
- package/dist/adapters/supabase/calendar-write-gateway.js +0 -35
- package/dist/adapters/supabase/calendar-write-gateway.js.map +0 -1
- package/dist/adapters/supabase/client.js +0 -136
- package/dist/adapters/supabase/client.js.map +0 -1
- package/dist/adapters/supabase/context-gateway.js +0 -23
- package/dist/adapters/supabase/context-gateway.js.map +0 -1
- package/dist/adapters/supabase/gateway.js +0 -26
- package/dist/adapters/supabase/gateway.js.map +0 -1
- package/dist/adapters/supabase/release-gateway.js +0 -61
- package/dist/adapters/supabase/release-gateway.js.map +0 -1
- package/dist/adapters/supabase/sprint-gateway.js +0 -59
- package/dist/adapters/supabase/sprint-gateway.js.map +0 -1
- package/dist/adapters/supabase/task-gateway.js +0 -533
- package/dist/adapters/supabase/task-gateway.js.map +0 -1
- package/dist/auth.js +0 -141
- package/dist/auth.js.map +0 -1
- package/dist/cli/commands/auth.js +0 -127
- package/dist/cli/commands/auth.js.map +0 -1
- package/dist/cli/commands/clean.js +0 -120
- package/dist/cli/commands/clean.js.map +0 -1
- package/dist/cli/commands/completion.js +0 -114
- package/dist/cli/commands/completion.js.map +0 -1
- package/dist/cli/commands/exec.js +0 -69
- package/dist/cli/commands/exec.js.map +0 -1
- package/dist/cli/commands/init/analyze-step.js +0 -21
- package/dist/cli/commands/init/analyze-step.js.map +0 -1
- package/dist/cli/commands/init/apply-answers.js +0 -122
- package/dist/cli/commands/init/apply-answers.js.map +0 -1
- package/dist/cli/commands/init/apply-step.js +0 -165
- package/dist/cli/commands/init/apply-step.js.map +0 -1
- package/dist/cli/commands/init/auth-step.js +0 -48
- package/dist/cli/commands/init/auth-step.js.map +0 -1
- package/dist/cli/commands/init/boilerplate-step.js +0 -20
- package/dist/cli/commands/init/boilerplate-step.js.map +0 -1
- package/dist/cli/commands/init/clients-step.js +0 -78
- package/dist/cli/commands/init/clients-step.js.map +0 -1
- package/dist/cli/commands/init/context-step.js +0 -81
- package/dist/cli/commands/init/context-step.js.map +0 -1
- package/dist/cli/commands/init/describe-step.js +0 -68
- package/dist/cli/commands/init/describe-step.js.map +0 -1
- package/dist/cli/commands/init/index.js +0 -98
- package/dist/cli/commands/init/index.js.map +0 -1
- package/dist/cli/commands/init/mode.js +0 -18
- package/dist/cli/commands/init/mode.js.map +0 -1
- package/dist/cli/commands/init/progress.js +0 -60
- package/dist/cli/commands/init/progress.js.map +0 -1
- package/dist/cli/commands/init/project-step.js +0 -133
- package/dist/cli/commands/init/project-step.js.map +0 -1
- package/dist/cli/commands/init/provision-step.js +0 -103
- package/dist/cli/commands/init/provision-step.js.map +0 -1
- package/dist/cli/commands/map.js +0 -18
- package/dist/cli/commands/map.js.map +0 -1
- package/dist/cli/commands/plan.js +0 -45
- package/dist/cli/commands/plan.js.map +0 -1
- package/dist/cli/commands/skills.js +0 -23
- package/dist/cli/commands/skills.js.map +0 -1
- package/dist/cli/commands/sync.js +0 -319
- package/dist/cli/commands/sync.js.map +0 -1
- package/dist/cli/commands/validate-plan.js +0 -42
- package/dist/cli/commands/validate-plan.js.map +0 -1
- package/dist/cli/commands/wave.js +0 -57
- package/dist/cli/commands/wave.js.map +0 -1
- package/dist/cli/copy/auth.json +0 -6
- package/dist/cli/copy/flows.json +0 -6
- package/dist/cli/copy/init.json +0 -20
- package/dist/cli/copy/sync.json +0 -3
- package/dist/cli/copy.js +0 -23
- package/dist/cli/copy.js.map +0 -1
- package/dist/cli/flows/clients.js +0 -130
- package/dist/cli/flows/clients.js.map +0 -1
- package/dist/cli/flows/completion.js +0 -63
- package/dist/cli/flows/completion.js.map +0 -1
- package/dist/cli/flows/dependencies.js +0 -114
- package/dist/cli/flows/dependencies.js.map +0 -1
- package/dist/cli/flows/sections.js +0 -85
- package/dist/cli/flows/sections.js.map +0 -1
- package/dist/cli/flows/user-config.js +0 -37
- package/dist/cli/flows/user-config.js.map +0 -1
- package/dist/cli/ui/render.js +0 -239
- package/dist/cli/ui/render.js.map +0 -1
- package/dist/cli/ui/report.js +0 -130
- package/dist/cli/ui/report.js.map +0 -1
- package/dist/config.js +0 -289
- package/dist/config.js.map +0 -1
- package/dist/constants.js +0 -9
- package/dist/constants.js.map +0 -1
- package/dist/core/ports.js +0 -2
- package/dist/core/ports.js.map +0 -1
- package/dist/core/types.js +0 -5
- package/dist/core/types.js.map +0 -1
- package/dist/database.types.js +0 -11
- package/dist/database.types.js.map +0 -1
- package/dist/lib/active-project.js +0 -28
- package/dist/lib/active-project.js.map +0 -1
- package/dist/lib/autopull.js +0 -13
- package/dist/lib/autopull.js.map +0 -1
- package/dist/lib/boilerplate-scaffold.js +0 -65
- package/dist/lib/boilerplate-scaffold.js.map +0 -1
- package/dist/lib/boilerplates.js +0 -61
- package/dist/lib/boilerplates.js.map +0 -1
- package/dist/lib/calendar-logic.js +0 -59
- package/dist/lib/calendar-logic.js.map +0 -1
- package/dist/lib/calendar-write-logic.js +0 -6
- package/dist/lib/calendar-write-logic.js.map +0 -1
- package/dist/lib/client-configs.js +0 -191
- package/dist/lib/client-configs.js.map +0 -1
- package/dist/lib/client-install.js +0 -40
- package/dist/lib/client-install.js.map +0 -1
- package/dist/lib/colors.js +0 -92
- package/dist/lib/colors.js.map +0 -1
- package/dist/lib/cowork-extension.js +0 -143
- package/dist/lib/cowork-extension.js.map +0 -1
- package/dist/lib/dates.js +0 -21
- package/dist/lib/dates.js.map +0 -1
- package/dist/lib/dependencies.js +0 -145
- package/dist/lib/dependencies.js.map +0 -1
- package/dist/lib/dependency-install.js +0 -163
- package/dist/lib/dependency-install.js.map +0 -1
- package/dist/lib/duration.js +0 -5
- package/dist/lib/duration.js.map +0 -1
- package/dist/lib/exec-delegate.js +0 -218
- package/dist/lib/exec-delegate.js.map +0 -1
- package/dist/lib/exec-engines.js +0 -90
- package/dist/lib/exec-engines.js.map +0 -1
- package/dist/lib/exec-events.js +0 -87
- package/dist/lib/exec-events.js.map +0 -1
- package/dist/lib/exec-translators.js +0 -198
- package/dist/lib/exec-translators.js.map +0 -1
- package/dist/lib/file-merge.js +0 -33
- package/dist/lib/file-merge.js.map +0 -1
- package/dist/lib/git-exposure.js +0 -35
- package/dist/lib/git-exposure.js.map +0 -1
- package/dist/lib/harness.js +0 -127
- package/dist/lib/harness.js.map +0 -1
- package/dist/lib/hooks.js +0 -216
- package/dist/lib/hooks.js.map +0 -1
- package/dist/lib/patterns.js +0 -25
- package/dist/lib/patterns.js.map +0 -1
- package/dist/lib/pg-error.js +0 -53
- package/dist/lib/pg-error.js.map +0 -1
- package/dist/lib/plan-delegate.js +0 -117
- package/dist/lib/plan-delegate.js.map +0 -1
- package/dist/lib/project-context.js +0 -151
- package/dist/lib/project-context.js.map +0 -1
- package/dist/lib/prompts.js +0 -69
- package/dist/lib/prompts.js.map +0 -1
- package/dist/lib/provision-apply.js +0 -220
- package/dist/lib/provision-apply.js.map +0 -1
- package/dist/lib/provision-collect.js +0 -47
- package/dist/lib/provision-collect.js.map +0 -1
- package/dist/lib/provision.js +0 -45
- package/dist/lib/provision.js.map +0 -1
- package/dist/lib/release-logic.js +0 -10
- package/dist/lib/release-logic.js.map +0 -1
- package/dist/lib/repo-map.js +0 -176
- package/dist/lib/repo-map.js.map +0 -1
- package/dist/lib/require-config.js +0 -32
- package/dist/lib/require-config.js.map +0 -1
- package/dist/lib/rules.js +0 -146
- package/dist/lib/rules.js.map +0 -1
- package/dist/lib/sections.js +0 -89
- package/dist/lib/sections.js.map +0 -1
- package/dist/lib/skill-agent.js +0 -44
- package/dist/lib/skill-agent.js.map +0 -1
- package/dist/lib/skill-serve.js +0 -128
- package/dist/lib/skill-serve.js.map +0 -1
- package/dist/lib/skills-cache.js +0 -99
- package/dist/lib/skills-cache.js.map +0 -1
- package/dist/lib/skills.js +0 -237
- package/dist/lib/skills.js.map +0 -1
- package/dist/lib/sprint-deadline.js +0 -28
- package/dist/lib/sprint-deadline.js.map +0 -1
- package/dist/lib/sprint-logic.js +0 -31
- package/dist/lib/sprint-logic.js.map +0 -1
- package/dist/lib/targets.js +0 -150
- package/dist/lib/targets.js.map +0 -1
- package/dist/lib/task-history.js +0 -15
- package/dist/lib/task-history.js.map +0 -1
- package/dist/lib/telemetry.js +0 -51
- package/dist/lib/telemetry.js.map +0 -1
- package/dist/lib/tool-result.js +0 -15
- package/dist/lib/tool-result.js.map +0 -1
- package/dist/lib/validate-plan-delegate.js +0 -106
- package/dist/lib/validate-plan-delegate.js.map +0 -1
- package/dist/lib/version-check.js +0 -89
- package/dist/lib/version-check.js.map +0 -1
- package/dist/lib/wave-scheduler.js +0 -95
- package/dist/lib/wave-scheduler.js.map +0 -1
- package/dist/session-factory.js +0 -19
- package/dist/session-factory.js.map +0 -1
- package/dist/spinner.js +0 -12
- package/dist/spinner.js.map +0 -1
- package/dist/tools/activate-sprint.js +0 -44
- package/dist/tools/activate-sprint.js.map +0 -1
- package/dist/tools/add-checklist.js +0 -63
- package/dist/tools/add-checklist.js.map +0 -1
- package/dist/tools/add-holiday.js +0 -41
- package/dist/tools/add-holiday.js.map +0 -1
- package/dist/tools/add-home-office.js +0 -31
- package/dist/tools/add-home-office.js.map +0 -1
- package/dist/tools/add-vacation.js +0 -39
- package/dist/tools/add-vacation.js.map +0 -1
- package/dist/tools/attach-pr.js +0 -97
- package/dist/tools/attach-pr.js.map +0 -1
- package/dist/tools/comment-task.js +0 -72
- package/dist/tools/comment-task.js.map +0 -1
- package/dist/tools/create-release.js +0 -46
- package/dist/tools/create-release.js.map +0 -1
- package/dist/tools/create-sprint.js +0 -66
- package/dist/tools/create-sprint.js.map +0 -1
- package/dist/tools/create-task.js +0 -174
- package/dist/tools/create-task.js.map +0 -1
- package/dist/tools/delegate-exec.js +0 -63
- package/dist/tools/delegate-exec.js.map +0 -1
- package/dist/tools/end-allocation.js +0 -38
- package/dist/tools/end-allocation.js.map +0 -1
- package/dist/tools/end-sprint.js +0 -37
- package/dist/tools/end-sprint.js.map +0 -1
- package/dist/tools/end-task-allocation.js +0 -60
- package/dist/tools/end-task-allocation.js.map +0 -1
- package/dist/tools/exec-status.js +0 -45
- package/dist/tools/exec-status.js.map +0 -1
- package/dist/tools/finalize-release.js +0 -45
- package/dist/tools/finalize-release.js.map +0 -1
- package/dist/tools/get-active-allocation.js +0 -69
- package/dist/tools/get-active-allocation.js.map +0 -1
- package/dist/tools/get-calendar.js +0 -40
- package/dist/tools/get-calendar.js.map +0 -1
- package/dist/tools/get-context.js +0 -48
- package/dist/tools/get-context.js.map +0 -1
- package/dist/tools/get-sprint.js +0 -38
- package/dist/tools/get-sprint.js.map +0 -1
- package/dist/tools/get-task.js +0 -146
- package/dist/tools/get-task.js.map +0 -1
- package/dist/tools/index.js +0 -84
- package/dist/tools/index.js.map +0 -1
- package/dist/tools/list-my-allocations.js +0 -71
- package/dist/tools/list-my-allocations.js.map +0 -1
- package/dist/tools/list-projects.js +0 -38
- package/dist/tools/list-projects.js.map +0 -1
- package/dist/tools/list-releases.js +0 -32
- package/dist/tools/list-releases.js.map +0 -1
- package/dist/tools/list-sprints.js +0 -30
- package/dist/tools/list-sprints.js.map +0 -1
- package/dist/tools/list-tasks.js +0 -95
- package/dist/tools/list-tasks.js.map +0 -1
- package/dist/tools/move-task.js +0 -82
- package/dist/tools/move-task.js.map +0 -1
- package/dist/tools/plan.js +0 -56
- package/dist/tools/plan.js.map +0 -1
- package/dist/tools/record-delivery.js +0 -100
- package/dist/tools/record-delivery.js.map +0 -1
- package/dist/tools/remove-holiday.js +0 -31
- package/dist/tools/remove-holiday.js.map +0 -1
- package/dist/tools/remove-home-office.js +0 -32
- package/dist/tools/remove-home-office.js.map +0 -1
- package/dist/tools/remove-vacation.js +0 -31
- package/dist/tools/remove-vacation.js.map +0 -1
- package/dist/tools/set-project.js +0 -52
- package/dist/tools/set-project.js.map +0 -1
- package/dist/tools/set-review.js +0 -132
- package/dist/tools/set-review.js.map +0 -1
- package/dist/tools/sprint-common.js +0 -13
- package/dist/tools/sprint-common.js.map +0 -1
- package/dist/tools/start-allocation.js +0 -32
- package/dist/tools/start-allocation.js.map +0 -1
- package/dist/tools/start-task-allocation.js +0 -83
- package/dist/tools/start-task-allocation.js.map +0 -1
- package/dist/tools/update-release.js +0 -58
- package/dist/tools/update-release.js.map +0 -1
- package/dist/tools/update-sprint.js +0 -56
- package/dist/tools/update-sprint.js.map +0 -1
- package/dist/tools/update-task.js +0 -183
- package/dist/tools/update-task.js.map +0 -1
- package/dist/tools/validate-plan.js +0 -58
- package/dist/tools/validate-plan.js.map +0 -1
- package/dist/version.js +0 -16
- package/dist/version.js.map +0 -1
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
import { spawn } from 'node:child_process';
|
|
2
|
-
import { brand } from '../brand.js';
|
|
3
|
-
import { readFileSync } from 'node:fs';
|
|
4
|
-
import { planPath, stripFence } from './plan-delegate.js';
|
|
5
|
-
import { PLAN_ENGINE, engineArgs, engineMissingError, resolveEngineBin, } from './exec-engines.js';
|
|
6
|
-
const SLUG_MAX = 50;
|
|
7
|
-
const SLUG_FALLBACK = 'plan';
|
|
8
|
-
/** Slug git-safe do título do plano p/ o Studio nomear o worktree; degenerado → fallback. Puro. */
|
|
9
|
-
export function suggestSlug(plan) {
|
|
10
|
-
const heading = /^#{1,6}\s+(.+?)\s*$/m.exec(plan)?.[1];
|
|
11
|
-
const title = (heading ?? plan.split('\n').find((l) => l.trim()) ?? '').trim();
|
|
12
|
-
const slug = title
|
|
13
|
-
.normalize('NFD')
|
|
14
|
-
.replace(/\p{Diacritic}/gu, '')
|
|
15
|
-
.toLowerCase()
|
|
16
|
-
.replace(/[^a-z0-9]+/g, '-')
|
|
17
|
-
.replace(/^-+|-+$/g, '')
|
|
18
|
-
.slice(0, SLUG_MAX)
|
|
19
|
-
.replace(/-+$/g, '');
|
|
20
|
-
return slug || SLUG_FALLBACK;
|
|
21
|
-
}
|
|
22
|
-
export function planMissingError(project) {
|
|
23
|
-
return `plan.md não encontrado em ${project} — rode \`${brand.name} plan\` antes de validar`;
|
|
24
|
-
}
|
|
25
|
-
/** Lê o `plan.md` da raiz; ausente/vazio dispara — o caller vira em erro tratado. */
|
|
26
|
-
export function readPlan(project) {
|
|
27
|
-
const content = readFileSync(planPath(project), 'utf8');
|
|
28
|
-
if (!content.trim())
|
|
29
|
-
throw new Error('plan.md vazio');
|
|
30
|
-
return content;
|
|
31
|
-
}
|
|
32
|
-
/** Preâmbulo de triagem: ancora no harness e pede veredito + justificativa parseáveis. */
|
|
33
|
-
export function buildValidatePrompt(plan) {
|
|
34
|
-
return [
|
|
35
|
-
'Você está TRIANDO um plano — não implemente nada, não escreva código, não edite arquivos.',
|
|
36
|
-
'Antes: leia AGENTS.md e docs/_rules/noclaf.md deste projeto e respeite o harness.',
|
|
37
|
-
'Julgue a COMPLEXIDADE do plano frente ao IMPACTO REAL no código deste repositório:',
|
|
38
|
-
'plano amplo/abrangente (muitos módulos, decisões de arquitetura, risco) MERECE uma spec SDD antes;',
|
|
39
|
-
'plano pequeno/localizado pode ir direto para a implementação.',
|
|
40
|
-
'Responda APENAS neste formato, sem cercas de código:',
|
|
41
|
-
'VERDICT: yes|no',
|
|
42
|
-
'REASON: <uma ou duas frases legíveis explicando o porquê>',
|
|
43
|
-
'yes = precisa de spec antes; no = pode implementar direto.',
|
|
44
|
-
'',
|
|
45
|
-
'## Plano (plan.md)',
|
|
46
|
-
plan,
|
|
47
|
-
].join('\n');
|
|
48
|
-
}
|
|
49
|
-
/** Normaliza a resposta do engine em `{ needsSpec, reason }`; ambíguo → dispara. */
|
|
50
|
-
export function parseVerdict(text) {
|
|
51
|
-
const clean = stripFence(text);
|
|
52
|
-
const m = /^[ \t]*VERDICT:[ \t]*(yes|no)\b[ \t]*(.*)$/im.exec(clean);
|
|
53
|
-
if (!m)
|
|
54
|
-
throw new Error('veredito ambíguo: falta a linha `VERDICT: yes|no`');
|
|
55
|
-
const needsSpec = m[1].toLowerCase() === 'yes';
|
|
56
|
-
const rest = clean.replace(m[0], '').trim();
|
|
57
|
-
const reason = (rest || m[2].trim())
|
|
58
|
-
.replace(/^[ \t]*REASON:[ \t]*/i, '')
|
|
59
|
-
.replace(/^[\s—:-]+/, '')
|
|
60
|
-
.trim();
|
|
61
|
-
if (!reason)
|
|
62
|
-
throw new Error('veredito ambíguo: sem justificativa (reason vazio)');
|
|
63
|
-
return { needsSpec, reason };
|
|
64
|
-
}
|
|
65
|
-
function spawnValidate(bin, engine, prompt, project, echo) {
|
|
66
|
-
return new Promise((resolve) => {
|
|
67
|
-
const child = spawn(bin, engineArgs(engine, prompt), {
|
|
68
|
-
cwd: project,
|
|
69
|
-
stdio: ['ignore', 'pipe', 'pipe'],
|
|
70
|
-
});
|
|
71
|
-
let out = '';
|
|
72
|
-
child.stdout.on('data', (d) => (out += d.toString()));
|
|
73
|
-
child.stderr.on('data', (d) => echo && process.stderr.write(d.toString()));
|
|
74
|
-
const fail = (error) => resolve({ ok: false, engine, error });
|
|
75
|
-
child.on('error', (e) => fail(e.message));
|
|
76
|
-
child.on('close', (code) => {
|
|
77
|
-
if (code !== 0)
|
|
78
|
-
return fail(`engine ${engine} falhou (exit ${code})`);
|
|
79
|
-
try {
|
|
80
|
-
resolve({ ok: true, engine, ...parseVerdict(out) });
|
|
81
|
-
}
|
|
82
|
-
catch (e) {
|
|
83
|
-
fail(e.message);
|
|
84
|
-
}
|
|
85
|
-
});
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
/** Bloqueante: lê o plano, roda o engine pensante e devolve o veredito. `echo` streama log. */
|
|
89
|
-
export async function runValidatePlan(opts) {
|
|
90
|
-
const engine = opts.engine ?? PLAN_ENGINE;
|
|
91
|
-
let plan;
|
|
92
|
-
try {
|
|
93
|
-
plan = readPlan(opts.project);
|
|
94
|
-
}
|
|
95
|
-
catch {
|
|
96
|
-
return { ok: false, engine, error: planMissingError(opts.project) };
|
|
97
|
-
}
|
|
98
|
-
const bin = resolveEngineBin(engine);
|
|
99
|
-
if (!bin)
|
|
100
|
-
return { ok: false, engine, error: engineMissingError(engine) };
|
|
101
|
-
const result = await spawnValidate(bin, engine, buildValidatePrompt(plan), opts.project, opts.echo === true);
|
|
102
|
-
if (result.ok && result.needsSpec)
|
|
103
|
-
result.suggestedSlug = suggestSlug(plan);
|
|
104
|
-
return result;
|
|
105
|
-
}
|
|
106
|
-
//# sourceMappingURL=validate-plan-delegate.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validate-plan-delegate.js","sourceRoot":"","sources":["../../src/lib/validate-plan-delegate.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
import updateNotifier from 'update-notifier';
|
|
2
|
-
import { readFileSync } from 'node:fs';
|
|
3
|
-
import { fileURLToPath } from 'node:url';
|
|
4
|
-
import { dirname, join } from 'node:path';
|
|
5
|
-
import { brand } from '../brand.js';
|
|
6
|
-
function loadPkg() {
|
|
7
|
-
// Este módulo compila pra `dist/lib/version-check.js`, então o package.json fica
|
|
8
|
-
// dois níveis acima (raiz do pacote). Mesmo truque do `packageRoot()` do cowork-extension.
|
|
9
|
-
const here = dirname(fileURLToPath(import.meta.url));
|
|
10
|
-
const pkgPath = join(here, '..', '..', 'package.json');
|
|
11
|
-
return JSON.parse(readFileSync(pkgPath, 'utf-8'));
|
|
12
|
-
}
|
|
13
|
-
const ONE_DAY_MS = 1000 * 60 * 60 * 24;
|
|
14
|
-
/**
|
|
15
|
-
* Inicia checagem em background (cacheada). Retorna o objeto pra inspeção.
|
|
16
|
-
*/
|
|
17
|
-
export function startVersionCheck() {
|
|
18
|
-
const pkg = loadPkg();
|
|
19
|
-
return updateNotifier({ pkg, updateCheckInterval: ONE_DAY_MS });
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Pro CLI interativo: chama .notify() com banner padrão no stdout.
|
|
23
|
-
*/
|
|
24
|
-
export function notifyCliIfUpdate() {
|
|
25
|
-
try {
|
|
26
|
-
const notifier = startVersionCheck();
|
|
27
|
-
notifier.notify({ defer: false, isGlobal: true });
|
|
28
|
-
}
|
|
29
|
-
catch {
|
|
30
|
-
// Best-effort. Nunca quebrar o CLI por causa de checagem de versão.
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
/** `a > b` em semver simples (major.minor.patch; ignora pré-release). */
|
|
34
|
-
function semverGt(a, b) {
|
|
35
|
-
const pa = a.split('-')[0].split('.').map((n) => parseInt(n, 10) || 0);
|
|
36
|
-
const pb = b.split('-')[0].split('.').map((n) => parseInt(n, 10) || 0);
|
|
37
|
-
for (let i = 0; i < 3; i++) {
|
|
38
|
-
if ((pa[i] ?? 0) > (pb[i] ?? 0))
|
|
39
|
-
return true;
|
|
40
|
-
if ((pa[i] ?? 0) < (pb[i] ?? 0))
|
|
41
|
-
return false;
|
|
42
|
-
}
|
|
43
|
-
return false;
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Consulta o registro npm pela última versão publicada e compara com a instalada.
|
|
47
|
-
* Retorna `null` em qualquer falha (offline, timeout, registro bloqueado) — nunca
|
|
48
|
-
* quebra o fluxo do CLI. Usado pelo `noclaf sync` pra oferecer atualizar.
|
|
49
|
-
*/
|
|
50
|
-
export async function checkForUpdate(timeoutMs = 3000) {
|
|
51
|
-
try {
|
|
52
|
-
const pkg = loadPkg();
|
|
53
|
-
const controller = new AbortController();
|
|
54
|
-
const timer = setTimeout(() => controller.abort(), timeoutMs);
|
|
55
|
-
const res = await fetch(`https://registry.npmjs.org/${pkg.name}/latest`, {
|
|
56
|
-
signal: controller.signal,
|
|
57
|
-
headers: { accept: 'application/json' },
|
|
58
|
-
});
|
|
59
|
-
clearTimeout(timer);
|
|
60
|
-
if (!res.ok)
|
|
61
|
-
return null;
|
|
62
|
-
const data = (await res.json());
|
|
63
|
-
const latest = data.version;
|
|
64
|
-
if (!latest)
|
|
65
|
-
return null;
|
|
66
|
-
return { name: pkg.name, current: pkg.version, latest, hasUpdate: semverGt(latest, pkg.version) };
|
|
67
|
-
}
|
|
68
|
-
catch {
|
|
69
|
-
return null;
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
* Pro MCP server: SEM banner em stdout (corromperia JSON-RPC).
|
|
74
|
-
* Loga em stderr só se houver update — o Claude Code captura stderr.
|
|
75
|
-
*/
|
|
76
|
-
export function notifyMcpServerIfUpdate() {
|
|
77
|
-
try {
|
|
78
|
-
const notifier = startVersionCheck();
|
|
79
|
-
const update = notifier.update;
|
|
80
|
-
if (update && update.latest !== update.current) {
|
|
81
|
-
console.error(`[${brand.mcpBinName}] nova versão disponível: ${update.current} → ${update.latest}. ` +
|
|
82
|
-
`Atualize com: npm i -g ${brand.packageName}`);
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
catch {
|
|
86
|
-
// idem: best-effort.
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
//# sourceMappingURL=version-check.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"version-check.js","sourceRoot":"","sources":["../../src/lib/version-check.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Scheduler das waves do `/build`: lê o DAG de um doc de tickets e devolve a próxima leva
|
|
3
|
-
* de tickets que podem rodar em paralelo. Puro — sem I/O, sem git, sem agentes.
|
|
4
|
-
*/
|
|
5
|
-
/** Teto de executores concorrentes quando o usuário não configurou nada. */
|
|
6
|
-
export const DEFAULT_MAX_PARALLELISM = 3;
|
|
7
|
-
const HEADING = /^##\s+(T-\d+)\s*[·\-—]\s*(.+)$/gm;
|
|
8
|
-
const BLOCKED_BY = /\*\*Bloqueado por:\*\*\s*(.+)/;
|
|
9
|
-
const TICKET_REF = /T-\d+/g;
|
|
10
|
-
const CHECKBOX = /^\s*[-*]\s*\[([ xX])\]/gm;
|
|
11
|
-
const BACKTICKED = /`([^`\s]+)`/g;
|
|
12
|
-
function parseBlockers(body) {
|
|
13
|
-
const line = body.match(BLOCKED_BY);
|
|
14
|
-
if (!line)
|
|
15
|
-
return [];
|
|
16
|
-
return [...new Set(line[1].match(TICKET_REF) ?? [])];
|
|
17
|
-
}
|
|
18
|
-
function parseDone(body) {
|
|
19
|
-
const boxes = [...body.matchAll(CHECKBOX)];
|
|
20
|
-
return boxes.length > 0 && boxes.every((b) => b[1] !== ' ');
|
|
21
|
-
}
|
|
22
|
-
/** Heurística: token em crase com `/` ou extensão. Erra pro lado de serializar demais. */
|
|
23
|
-
function parseFiles(body) {
|
|
24
|
-
const files = new Set();
|
|
25
|
-
for (const [, token] of body.matchAll(BACKTICKED)) {
|
|
26
|
-
const path = token.replace(/[.,;:]+$/, '');
|
|
27
|
-
if (path.includes('/') || /\.\w{1,5}$/.test(path))
|
|
28
|
-
files.add(path);
|
|
29
|
-
}
|
|
30
|
-
return [...files];
|
|
31
|
-
}
|
|
32
|
-
/** Extrai os tickets do markdown do doc (`## T-N · título`), na ordem de declaração. */
|
|
33
|
-
export function parseTickets(markdown) {
|
|
34
|
-
const heads = [...markdown.matchAll(HEADING)];
|
|
35
|
-
return heads.map((head, i) => {
|
|
36
|
-
const start = (head.index ?? 0) + head[0].length;
|
|
37
|
-
const body = markdown.slice(start, heads[i + 1]?.index ?? markdown.length);
|
|
38
|
-
return {
|
|
39
|
-
id: head[1],
|
|
40
|
-
title: head[2].trim(),
|
|
41
|
-
blockedBy: parseBlockers(body),
|
|
42
|
-
done: parseDone(body),
|
|
43
|
-
files: parseFiles(body),
|
|
44
|
-
};
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
function doneIdsOf(tickets) {
|
|
48
|
-
return new Set(tickets.filter((t) => t.done).map((t) => t.id));
|
|
49
|
-
}
|
|
50
|
-
/** Teto efetivo: inteiro ≥ 1 — nunca zero executores, nunca fração. */
|
|
51
|
-
export function clampParallelism(maxParallelism) {
|
|
52
|
-
return Number.isFinite(maxParallelism) ? Math.max(1, Math.floor(maxParallelism)) : 1;
|
|
53
|
-
}
|
|
54
|
-
/** Um bloqueador só conta como satisfeito se o ticket existe **e** está done. */
|
|
55
|
-
function isReady(ticket, doneIds) {
|
|
56
|
-
return !ticket.done && ticket.blockedBy.every((id) => doneIds.has(id));
|
|
57
|
-
}
|
|
58
|
-
/**
|
|
59
|
-
* Próxima wave: o frontier, na ordem do doc. Dois tickets que toquem o mesmo arquivo não
|
|
60
|
-
* entram juntos — o segundo serializa pra wave seguinte.
|
|
61
|
-
*/
|
|
62
|
-
export function nextWave(tickets, maxParallelism = DEFAULT_MAX_PARALLELISM) {
|
|
63
|
-
const doneIds = doneIdsOf(tickets);
|
|
64
|
-
const limit = clampParallelism(maxParallelism);
|
|
65
|
-
const claimed = new Set();
|
|
66
|
-
const wave = [];
|
|
67
|
-
for (const ticket of tickets) {
|
|
68
|
-
if (wave.length >= limit)
|
|
69
|
-
break;
|
|
70
|
-
if (!isReady(ticket, doneIds))
|
|
71
|
-
continue;
|
|
72
|
-
if (ticket.files.some((file) => claimed.has(file)))
|
|
73
|
-
continue;
|
|
74
|
-
for (const file of ticket.files)
|
|
75
|
-
claimed.add(file);
|
|
76
|
-
wave.push(ticket);
|
|
77
|
-
}
|
|
78
|
-
return wave;
|
|
79
|
-
}
|
|
80
|
-
/** Tickets ainda não entregues que **não** entraram na wave, com o motivo da espera. */
|
|
81
|
-
export function waitingTickets(tickets, wave) {
|
|
82
|
-
const doneIds = doneIdsOf(tickets);
|
|
83
|
-
const scheduled = new Set(wave.map((t) => t.id));
|
|
84
|
-
const claimed = new Set(wave.flatMap((t) => t.files));
|
|
85
|
-
return tickets
|
|
86
|
-
.filter((t) => !t.done && !scheduled.has(t.id))
|
|
87
|
-
.map((t) => {
|
|
88
|
-
const blockedBy = t.blockedBy.filter((id) => !doneIds.has(id));
|
|
89
|
-
if (blockedBy.length > 0)
|
|
90
|
-
return { id: t.id, reason: 'blocked', blockedBy };
|
|
91
|
-
const reason = t.files.some((f) => claimed.has(f)) ? 'conflict' : 'cap';
|
|
92
|
-
return { id: t.id, reason, blockedBy };
|
|
93
|
-
});
|
|
94
|
-
}
|
|
95
|
-
//# sourceMappingURL=wave-scheduler.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"wave-scheduler.js","sourceRoot":"","sources":["../../src/lib/wave-scheduler.ts"],"names":[],"mappings":"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"}
|
package/dist/session-factory.js
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { createAuthenticatedClient } from './adapters/supabase/client.js';
|
|
2
|
-
import { createSupabaseGateway } from './adapters/supabase/gateway.js';
|
|
3
|
-
/**
|
|
4
|
-
* Escolhe o backend e monta a sessão. Este `switch` é o ÚNICO ponto que decide
|
|
5
|
-
* qual adaptador roda — trocar de dependência = adicionar um `case` novo aqui,
|
|
6
|
-
* sem tocar em nenhuma tool nem no `mcp-server`.
|
|
7
|
-
*/
|
|
8
|
-
export async function createSession(backend = 'supabase') {
|
|
9
|
-
switch (backend) {
|
|
10
|
-
case 'supabase': {
|
|
11
|
-
const { supabase, user } = await createAuthenticatedClient();
|
|
12
|
-
return { user, gateway: createSupabaseGateway(supabase) };
|
|
13
|
-
}
|
|
14
|
-
default:
|
|
15
|
-
// ponytail: guard exaustivo — um backend novo sem case vira erro de tipo aqui.
|
|
16
|
-
throw new Error(`Backend desconhecido: ${backend}`);
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
//# sourceMappingURL=session-factory.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"session-factory.js","sourceRoot":"","sources":["../src/session-factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAevE;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,UAAmB,UAAU;IAC/D,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,UAAU,CAAC,CAAC,CAAC;YAChB,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,MAAM,yBAAyB,EAAE,CAAC;YAC7D,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,qBAAqB,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5D,CAAC;QACD;YACE,+EAA+E;YAC/E,MAAM,IAAI,KAAK,CAAC,yBAAyB,OAAuB,EAAE,CAAC,CAAC;IACxE,CAAC;AACH,CAAC"}
|
package/dist/spinner.js
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { spinner as clackSpinner } from '@clack/prompts';
|
|
2
|
-
export function startSpinner(message) {
|
|
3
|
-
const s = clackSpinner();
|
|
4
|
-
s.start(message);
|
|
5
|
-
return {
|
|
6
|
-
succeed: (msg) => s.stop(msg ?? message),
|
|
7
|
-
fail: (msg) => s.error(msg ?? message),
|
|
8
|
-
stop: (msg) => (msg ? s.stop(msg) : s.clear()),
|
|
9
|
-
message: (msg) => s.message(msg),
|
|
10
|
-
};
|
|
11
|
-
}
|
|
12
|
-
//# sourceMappingURL=spinner.js.map
|
package/dist/spinner.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"spinner.js","sourceRoot":"","sources":["../src/spinner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAgBzD,MAAM,UAAU,YAAY,CAAC,OAAe;IAC1C,MAAM,CAAC,GAAG,YAAY,EAAE,CAAC;IACzB,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACjB,OAAO;QACL,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC;QACxC,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,IAAI,OAAO,CAAC;QACtC,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;QAC9C,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;KACjC,CAAC;AACJ,CAAC"}
|
|
@@ -1,44 +0,0 @@
|
|
|
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 { closeSprint } from '../lib/sprint-logic.js';
|
|
5
|
-
import { todayStr } from '../lib/dates.js';
|
|
6
|
-
import { brand } from '../brand.js';
|
|
7
|
-
import { projectIdProp } from './sprint-common.js';
|
|
8
|
-
const ArgsSchema = z.object({ sprint_id: z.uuid(), project_id: z.uuid().optional() }).strict();
|
|
9
|
-
export const definition = {
|
|
10
|
-
name: `${brand.toolPrefix}activate_sprint`,
|
|
11
|
-
description: 'Reativa uma sprint: encerra qualquer outra ativa do projeto (tasks não concluídas voltam pro backlog) ' +
|
|
12
|
-
'e reabre a escolhida com status "ativa", start_date = hoje e end_date = null (como a UI).',
|
|
13
|
-
inputSchema: {
|
|
14
|
-
type: 'object',
|
|
15
|
-
properties: { sprint_id: { type: 'string', format: 'uuid' }, project_id: projectIdProp },
|
|
16
|
-
required: ['sprint_id'],
|
|
17
|
-
additionalProperties: false,
|
|
18
|
-
},
|
|
19
|
-
};
|
|
20
|
-
export async function handler(args, ctx) {
|
|
21
|
-
const parsed = ArgsSchema.safeParse(args);
|
|
22
|
-
if (!parsed.success)
|
|
23
|
-
return errorResult(`Argumento inválido: ${parsed.error.message}`);
|
|
24
|
-
const cfg = resolveProjectConfig(ctx, parsed.data.project_id);
|
|
25
|
-
if (isErrorResult(cfg))
|
|
26
|
-
return cfg;
|
|
27
|
-
try {
|
|
28
|
-
const gw = ctx.gateway;
|
|
29
|
-
const target = await gw.findSprint(cfg.project_id, parsed.data.sprint_id);
|
|
30
|
-
if (!target)
|
|
31
|
-
return errorResult('Sprint não encontrada neste projeto.');
|
|
32
|
-
if (target.status === 'ativa')
|
|
33
|
-
return jsonResult({ ok: true, sprint: target, already_active: true });
|
|
34
|
-
const today = todayStr();
|
|
35
|
-
const active = await gw.findSprint(cfg.project_id, 'active');
|
|
36
|
-
const closed = active && active.id !== target.id ? await closeSprint(gw, active, today) : undefined;
|
|
37
|
-
const sprint = await gw.updateSprint(target.id, { status: 'ativa', start_date: today, end_date: null });
|
|
38
|
-
return jsonResult({ ok: true, sprint, ...(closed && { closed_previous: closed }) });
|
|
39
|
-
}
|
|
40
|
-
catch (err) {
|
|
41
|
-
return errorResult(err.message);
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
//# sourceMappingURL=activate-sprint.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"activate-sprint.js","sourceRoot":"","sources":["../../src/tools/activate-sprint.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,63 +0,0 @@
|
|
|
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 { brand } from '../brand.js';
|
|
5
|
-
const ArgsSchema = z
|
|
6
|
-
.object({
|
|
7
|
-
task_id: z.uuid(),
|
|
8
|
-
title: z.string().trim().min(1).max(100),
|
|
9
|
-
items: z.array(z.string().trim().min(1)).min(1).max(50),
|
|
10
|
-
icon: z.string().trim().min(1).max(40).optional(),
|
|
11
|
-
project_id: z.uuid().optional(),
|
|
12
|
-
})
|
|
13
|
-
.strict();
|
|
14
|
-
export const definition = {
|
|
15
|
-
name: `${brand.toolPrefix}add_checklist`,
|
|
16
|
-
description: 'Cria uma checklist nomeada (com itens) numa tarefa — a checklist nativa que aparece ' +
|
|
17
|
-
'clicável na UI, melhor que enfiar um DoD no texto da descrição. Use pra dividir uma ' +
|
|
18
|
-
'tarefa em passos verificáveis (ex.: "Implementação", "Definition of Done"). ' +
|
|
19
|
-
'Pode ser chamada mais de uma vez pra criar várias checklists na mesma tarefa.',
|
|
20
|
-
inputSchema: {
|
|
21
|
-
type: 'object',
|
|
22
|
-
properties: {
|
|
23
|
-
task_id: { type: 'string', format: 'uuid' },
|
|
24
|
-
title: { type: 'string', description: 'Título da checklist (ex.: "Implementação").' },
|
|
25
|
-
items: {
|
|
26
|
-
type: 'array',
|
|
27
|
-
items: { type: 'string' },
|
|
28
|
-
description: 'Itens da checklist, em ordem. Cada um vira uma caixa desmarcada.',
|
|
29
|
-
},
|
|
30
|
-
icon: { type: 'string', description: 'Ícone opcional da checklist (emoji ou nome).' },
|
|
31
|
-
project_id: {
|
|
32
|
-
type: 'string',
|
|
33
|
-
format: 'uuid',
|
|
34
|
-
description: `Override do projeto. Se omitido, usa o ativo (${brand.toolPrefix}set_project) ou o default.`,
|
|
35
|
-
},
|
|
36
|
-
},
|
|
37
|
-
required: ['task_id', 'title', 'items'],
|
|
38
|
-
additionalProperties: false,
|
|
39
|
-
},
|
|
40
|
-
};
|
|
41
|
-
/** Monta o payload de resposta do add_checklist. Pura. */
|
|
42
|
-
export function buildChecklistResult(taskId, title, checklistId, itemCount) {
|
|
43
|
-
return { ok: true, task_id: taskId, checklist_id: checklistId, title, item_count: itemCount };
|
|
44
|
-
}
|
|
45
|
-
export async function handler(args, ctx) {
|
|
46
|
-
const parsed = ArgsSchema.safeParse(args);
|
|
47
|
-
if (!parsed.success)
|
|
48
|
-
return errorResult(`Argumento inválido: ${parsed.error.message}`);
|
|
49
|
-
const { task_id, title, items, icon } = parsed.data;
|
|
50
|
-
const cfg = resolveProjectConfig(ctx, parsed.data.project_id);
|
|
51
|
-
if (isErrorResult(cfg))
|
|
52
|
-
return cfg;
|
|
53
|
-
try {
|
|
54
|
-
const res = await ctx.gateway.addChecklist(task_id, cfg.project_id, title, icon ?? null, items);
|
|
55
|
-
if (!res)
|
|
56
|
-
return errorResult('Tarefa não encontrada ou fora do projeto atual.');
|
|
57
|
-
return jsonResult(buildChecklistResult(task_id, title, res.checklist_id, res.item_count));
|
|
58
|
-
}
|
|
59
|
-
catch (err) {
|
|
60
|
-
return errorResult(err.message);
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
//# sourceMappingURL=add-checklist.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"add-checklist.js","sourceRoot":"","sources":["../../src/tools/add-checklist.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
import { jsonResult, errorResult } from '../lib/tool-result.js';
|
|
3
|
-
import { brand } from '../brand.js';
|
|
4
|
-
import { isoDate } from '../lib/dates.js';
|
|
5
|
-
const ArgsSchema = z
|
|
6
|
-
.object({
|
|
7
|
-
date: isoDate,
|
|
8
|
-
name: z.string().trim().min(1),
|
|
9
|
-
type: z.enum(['full', 'half']).default('full'),
|
|
10
|
-
scope: z.enum(['national', 'state', 'municipal']).default('national'),
|
|
11
|
-
})
|
|
12
|
-
.strict();
|
|
13
|
-
export const definition = {
|
|
14
|
-
name: `${brand.toolPrefix}add_holiday`,
|
|
15
|
-
description: 'Cria feriado no calendário do time (só admin/gerente).',
|
|
16
|
-
inputSchema: {
|
|
17
|
-
type: 'object',
|
|
18
|
-
properties: {
|
|
19
|
-
date: { type: 'string', description: 'Data (YYYY-MM-DD).' },
|
|
20
|
-
name: { type: 'string', description: 'Nome do feriado.' },
|
|
21
|
-
type: { type: 'string', enum: ['full', 'half'], description: 'Padrão full.' },
|
|
22
|
-
scope: { type: 'string', enum: ['national', 'state', 'municipal'], description: 'Padrão national.' },
|
|
23
|
-
},
|
|
24
|
-
required: ['date', 'name'],
|
|
25
|
-
additionalProperties: false,
|
|
26
|
-
},
|
|
27
|
-
};
|
|
28
|
-
export async function handler(args, ctx) {
|
|
29
|
-
const parsed = ArgsSchema.safeParse(args ?? {});
|
|
30
|
-
if (!parsed.success)
|
|
31
|
-
return errorResult(`Argumento inválido: ${parsed.error.message}`);
|
|
32
|
-
const a = parsed.data;
|
|
33
|
-
try {
|
|
34
|
-
const h = await ctx.gateway.addHoliday(a);
|
|
35
|
-
return jsonResult({ holiday_id: h.id, ...a });
|
|
36
|
-
}
|
|
37
|
-
catch (err) {
|
|
38
|
-
return errorResult(err.message);
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
//# sourceMappingURL=add-holiday.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"add-holiday.js","sourceRoot":"","sources":["../../src/tools/add-holiday.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C,MAAM,UAAU,GAAG,CAAC;KACjB,MAAM,CAAC;IACN,IAAI,EAAE,OAAO;IACb,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;IAC9C,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;CACtE,CAAC;KACD,MAAM,EAAE,CAAC;AAEZ,MAAM,CAAC,MAAM,UAAU,GAAS;IAC9B,IAAI,EAAE,GAAG,KAAK,CAAC,UAAU,aAAa;IACtC,WAAW,EAAE,wDAAwD;IACrE,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,oBAAoB,EAAE;YAC3D,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,kBAAkB,EAAE;YACzD,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,EAAE,cAAc,EAAE;YAC7E,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,UAAU,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,WAAW,EAAE,kBAAkB,EAAE;SACrG;QACD,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;QAC1B,oBAAoB,EAAE,KAAK;KAC5B;CACF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,IAAa,EAAE,GAAgB;IAC3D,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IAChD,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,OAAO,WAAW,CAAC,uBAAuB,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IACvF,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC;IACtB,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAC1C,OAAO,UAAU,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IAChD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,WAAW,CAAE,GAAa,CAAC,OAAO,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC"}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
import { jsonResult, errorResult } from '../lib/tool-result.js';
|
|
3
|
-
import { brand } from '../brand.js';
|
|
4
|
-
import { isoDate } from '../lib/dates.js';
|
|
5
|
-
const ArgsSchema = z.object({ date: isoDate }).strict();
|
|
6
|
-
export const definition = {
|
|
7
|
-
name: `${brand.toolPrefix}add_home_office`,
|
|
8
|
-
description: 'Marca home office do PRÓPRIO usuário num dia (o banco pode recusar por limite mensal).',
|
|
9
|
-
inputSchema: {
|
|
10
|
-
type: 'object',
|
|
11
|
-
properties: {
|
|
12
|
-
date: { type: 'string', description: 'Data (YYYY-MM-DD).' },
|
|
13
|
-
},
|
|
14
|
-
required: ['date'],
|
|
15
|
-
additionalProperties: false,
|
|
16
|
-
},
|
|
17
|
-
};
|
|
18
|
-
export async function handler(args, ctx) {
|
|
19
|
-
const parsed = ArgsSchema.safeParse(args ?? {});
|
|
20
|
-
if (!parsed.success)
|
|
21
|
-
return errorResult(`Argumento inválido: ${parsed.error.message}`);
|
|
22
|
-
const a = parsed.data;
|
|
23
|
-
try {
|
|
24
|
-
const h = await ctx.gateway.addHomeOffice(ctx.user.id, a.date);
|
|
25
|
-
return jsonResult({ home_office_id: h.id, date: a.date });
|
|
26
|
-
}
|
|
27
|
-
catch (err) {
|
|
28
|
-
return errorResult(err.message);
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
//# sourceMappingURL=add-home-office.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"add-home-office.js","sourceRoot":"","sources":["../../src/tools/add-home-office.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;AAExD,MAAM,CAAC,MAAM,UAAU,GAAS;IAC9B,IAAI,EAAE,GAAG,KAAK,CAAC,UAAU,iBAAiB;IAC1C,WAAW,EAAE,wFAAwF;IACrG,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,oBAAoB,EAAE;SAC5D;QACD,QAAQ,EAAE,CAAC,MAAM,CAAC;QAClB,oBAAoB,EAAE,KAAK;KAC5B;CACF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,IAAa,EAAE,GAAgB;IAC3D,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IAChD,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,OAAO,WAAW,CAAC,uBAAuB,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IACvF,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC;IACtB,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QAC/D,OAAO,UAAU,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC5D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,WAAW,CAAE,GAAa,CAAC,OAAO,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC"}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
import { jsonResult, errorResult } from '../lib/tool-result.js';
|
|
3
|
-
import { brand } from '../brand.js';
|
|
4
|
-
import { isoDate, dateRangeError } from '../lib/dates.js';
|
|
5
|
-
const ArgsSchema = z
|
|
6
|
-
.object({ user_id: z.uuid(), start_date: isoDate, end_date: isoDate, notes: z.string().optional() })
|
|
7
|
-
.strict();
|
|
8
|
-
export const definition = {
|
|
9
|
-
name: `${brand.toolPrefix}add_vacation`,
|
|
10
|
-
description: 'Registra férias de um usuário no calendário do time (só admin/gerente).',
|
|
11
|
-
inputSchema: {
|
|
12
|
-
type: 'object',
|
|
13
|
-
properties: {
|
|
14
|
-
user_id: { type: 'string', format: 'uuid', description: 'ID do usuário.' },
|
|
15
|
-
start_date: { type: 'string', description: 'Início (YYYY-MM-DD).' },
|
|
16
|
-
end_date: { type: 'string', description: 'Fim (YYYY-MM-DD), >= start_date.' },
|
|
17
|
-
notes: { type: 'string', description: 'Observações.' },
|
|
18
|
-
},
|
|
19
|
-
required: ['user_id', 'start_date', 'end_date'],
|
|
20
|
-
additionalProperties: false,
|
|
21
|
-
},
|
|
22
|
-
};
|
|
23
|
-
export async function handler(args, ctx) {
|
|
24
|
-
const parsed = ArgsSchema.safeParse(args ?? {});
|
|
25
|
-
if (!parsed.success)
|
|
26
|
-
return errorResult(`Argumento inválido: ${parsed.error.message}`);
|
|
27
|
-
const a = parsed.data;
|
|
28
|
-
const bad = dateRangeError(a.start_date, a.end_date);
|
|
29
|
-
if (bad)
|
|
30
|
-
return errorResult(bad);
|
|
31
|
-
try {
|
|
32
|
-
const v = await ctx.gateway.addVacation({ ...a, notes: a.notes ?? null, created_by: ctx.user.id });
|
|
33
|
-
return jsonResult({ vacation_id: v.id, ...a });
|
|
34
|
-
}
|
|
35
|
-
catch (err) {
|
|
36
|
-
return errorResult(err.message);
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
//# sourceMappingURL=add-vacation.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"add-vacation.js","sourceRoot":"","sources":["../../src/tools/add-vacation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAE1D,MAAM,UAAU,GAAG,CAAC;KACjB,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC;KACnG,MAAM,EAAE,CAAC;AAEZ,MAAM,CAAC,MAAM,UAAU,GAAS;IAC9B,IAAI,EAAE,GAAG,KAAK,CAAC,UAAU,cAAc;IACvC,WAAW,EAAE,yEAAyE;IACtF,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,gBAAgB,EAAE;YAC1E,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,sBAAsB,EAAE;YACnE,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,kCAAkC,EAAE;YAC7E,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE;SACvD;QACD,QAAQ,EAAE,CAAC,SAAS,EAAE,YAAY,EAAE,UAAU,CAAC;QAC/C,oBAAoB,EAAE,KAAK;KAC5B;CACF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,IAAa,EAAE,GAAgB;IAC3D,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IAChD,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,OAAO,WAAW,CAAC,uBAAuB,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IACvF,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC;IACtB,MAAM,GAAG,GAAG,cAAc,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;IACrD,IAAI,GAAG;QAAE,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,EAAE,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QACnG,OAAO,UAAU,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IACjD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,WAAW,CAAE,GAAa,CAAC,OAAO,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC"}
|