@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,191 +0,0 @@
|
|
|
1
|
-
import { existsSync } from 'node:fs';
|
|
2
|
-
import { homedir } from 'node:os';
|
|
3
|
-
import { join, dirname } from 'node:path';
|
|
4
|
-
import { fileURLToPath } from 'node:url';
|
|
5
|
-
import { backupFile, readJson, writeJson, readToml, writeToml } from './file-merge.js';
|
|
6
|
-
import { brand, envName } from '../brand.js';
|
|
7
|
-
const MCP_COMMAND = brand.mcpBinName;
|
|
8
|
-
/**
|
|
9
|
-
* Lê o JSON do path; se for malformado, lança erro com mensagem clara
|
|
10
|
-
* apontando que o user deve consertar à mão.
|
|
11
|
-
*/
|
|
12
|
-
function readJsonSafe(path) {
|
|
13
|
-
try {
|
|
14
|
-
return readJson(path);
|
|
15
|
-
}
|
|
16
|
-
catch (err) {
|
|
17
|
-
throw new Error(`Arquivo ${path} contém JSON inválido (${err.message}). ` +
|
|
18
|
-
`Conserte ou apague antes de rodar de novo.`);
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
function ensureMcpServersJson(path, rootKey) {
|
|
22
|
-
if (!existsSync(path)) {
|
|
23
|
-
writeJson(path, { [rootKey]: { [brand.mcpServerKey]: { command: MCP_COMMAND } } });
|
|
24
|
-
return { status: 'created', path };
|
|
25
|
-
}
|
|
26
|
-
const existing = (readJsonSafe(path) ?? {});
|
|
27
|
-
const root = (existing[rootKey] ?? {});
|
|
28
|
-
const current = root[brand.mcpServerKey];
|
|
29
|
-
if (current && current.command === MCP_COMMAND) {
|
|
30
|
-
return { status: 'already_configured', path };
|
|
31
|
-
}
|
|
32
|
-
const backup = backupFile(path);
|
|
33
|
-
const next = {
|
|
34
|
-
...existing,
|
|
35
|
-
[rootKey]: {
|
|
36
|
-
...root,
|
|
37
|
-
[brand.mcpServerKey]: { command: MCP_COMMAND },
|
|
38
|
-
},
|
|
39
|
-
};
|
|
40
|
-
writeJson(path, next);
|
|
41
|
-
return { status: 'updated', path, backup };
|
|
42
|
-
}
|
|
43
|
-
export function installClaudeCodeGlobal() {
|
|
44
|
-
const path = join(homedir(), '.claude', 'settings.json');
|
|
45
|
-
return ensureMcpServersJson(path, 'mcpServers');
|
|
46
|
-
}
|
|
47
|
-
export function installClaudeCodeRepo(cwd) {
|
|
48
|
-
const path = join(cwd, '.mcp.json');
|
|
49
|
-
return ensureMcpServersJson(path, 'mcpServers');
|
|
50
|
-
}
|
|
51
|
-
export function installVSCodeRepo(cwd) {
|
|
52
|
-
const path = join(cwd, '.vscode', 'mcp.json');
|
|
53
|
-
return ensureMcpServersJson(path, 'servers');
|
|
54
|
-
}
|
|
55
|
-
// ---------------------------------------------------------------------------
|
|
56
|
-
// Claude Desktop / Cowork — ativa o conector direto no config, sem `.mcpb`.
|
|
57
|
-
// ---------------------------------------------------------------------------
|
|
58
|
-
/** Diretório de config do Claude Desktop por SO (criado pelo app quando instalado). */
|
|
59
|
-
export function coworkConfigDir() {
|
|
60
|
-
if (process.platform === 'darwin') {
|
|
61
|
-
return join(homedir(), 'Library', 'Application Support', 'Claude');
|
|
62
|
-
}
|
|
63
|
-
if (process.platform === 'win32') {
|
|
64
|
-
return join(process.env.APPDATA ?? join(homedir(), 'AppData', 'Roaming'), 'Claude');
|
|
65
|
-
}
|
|
66
|
-
return join(homedir(), '.config', 'Claude');
|
|
67
|
-
}
|
|
68
|
-
export function coworkConfigPath() {
|
|
69
|
-
return join(coworkConfigDir(), 'claude_desktop_config.json');
|
|
70
|
-
}
|
|
71
|
-
/** O app está instalado? Presença do dir de config é o sinal (o app o cria). */
|
|
72
|
-
export function coworkAppInstalled() {
|
|
73
|
-
return existsSync(coworkConfigDir());
|
|
74
|
-
}
|
|
75
|
-
/** O conector noclaf já está no `claude_desktop_config.json`? */
|
|
76
|
-
export function coworkConfigured() {
|
|
77
|
-
const path = coworkConfigPath();
|
|
78
|
-
if (!existsSync(path))
|
|
79
|
-
return false;
|
|
80
|
-
try {
|
|
81
|
-
const json = (readJsonSafe(path) ?? {});
|
|
82
|
-
return Boolean(json.mcpServers?.[brand.mcpServerKey]);
|
|
83
|
-
}
|
|
84
|
-
catch {
|
|
85
|
-
return false;
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
/** Path absoluto do `dist/mcp-server.js` deste pacote (compila pra `dist/lib/`). */
|
|
89
|
-
function mcpServerJsPath() {
|
|
90
|
-
const here = dirname(fileURLToPath(import.meta.url)); // .../dist/lib
|
|
91
|
-
return join(here, '..', 'mcp-server.js'); // .../dist/mcp-server.js
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* Ativa o conector noclaf direto no `claude_desktop_config.json` do Claude Desktop.
|
|
95
|
-
*
|
|
96
|
-
* Usa caminhos ABSOLUTOS (`process.execPath` + `dist/mcp-server.js`) porque o app é
|
|
97
|
-
* GUI e tem PATH mínimo — `noclaf-cli`/`node` via nvm não seriam encontrados. O PAT
|
|
98
|
-
* vem do `~/.noclaf/credentials.json` (via `noclaf login`); `NOCLAF_CLIENT=cowork`
|
|
99
|
-
* faz o server servir as skills por prompts/resources e escolher projeto por sessão.
|
|
100
|
-
* Não-destrutivo: faz merge + backup do config existente.
|
|
101
|
-
*/
|
|
102
|
-
export function installCoworkGlobal() {
|
|
103
|
-
const path = coworkConfigPath();
|
|
104
|
-
const entry = {
|
|
105
|
-
command: process.execPath,
|
|
106
|
-
args: [mcpServerJsPath()],
|
|
107
|
-
env: { [envName('CLIENT')]: 'cowork' },
|
|
108
|
-
};
|
|
109
|
-
if (!existsSync(path)) {
|
|
110
|
-
writeJson(path, { mcpServers: { [brand.mcpServerKey]: entry } });
|
|
111
|
-
return { status: 'created', path };
|
|
112
|
-
}
|
|
113
|
-
const existing = (readJsonSafe(path) ?? {});
|
|
114
|
-
const root = (existing.mcpServers ?? {});
|
|
115
|
-
const current = root[brand.mcpServerKey];
|
|
116
|
-
if (current &&
|
|
117
|
-
current.command === entry.command &&
|
|
118
|
-
current.args?.[0] === entry.args?.[0] &&
|
|
119
|
-
current.env?.[envName('CLIENT')] === 'cowork') {
|
|
120
|
-
return { status: 'already_configured', path };
|
|
121
|
-
}
|
|
122
|
-
const backup = backupFile(path);
|
|
123
|
-
writeJson(path, { ...existing, mcpServers: { ...root, [brand.mcpServerKey]: entry } });
|
|
124
|
-
return { status: 'updated', path, backup };
|
|
125
|
-
}
|
|
126
|
-
function claudeSettingsPath() {
|
|
127
|
-
return join(homedir(), '.claude', 'settings.json');
|
|
128
|
-
}
|
|
129
|
-
export function readCoAuthoredBy(path = claudeSettingsPath()) {
|
|
130
|
-
if (!existsSync(path))
|
|
131
|
-
return { path, value: undefined, enabled: true };
|
|
132
|
-
const json = (readJsonSafe(path) ?? {});
|
|
133
|
-
const value = json.includeCoAuthoredBy;
|
|
134
|
-
return { path, value, enabled: value !== false };
|
|
135
|
-
}
|
|
136
|
-
// ponytail: setamos só includeCoAuthoredBy=false (knob simples, ainda honrado).
|
|
137
|
-
// Se o Claude Code um dia remover em favor do `attribution`, migra aqui.
|
|
138
|
-
export function disableCoAuthoredBy(path = claudeSettingsPath()) {
|
|
139
|
-
const exists = existsSync(path);
|
|
140
|
-
const existing = exists ? (readJsonSafe(path) ?? {}) : {};
|
|
141
|
-
const backup = exists ? backupFile(path) : undefined;
|
|
142
|
-
writeJson(path, { ...existing, includeCoAuthoredBy: false });
|
|
143
|
-
return { status: exists ? 'updated' : 'created', path, backup };
|
|
144
|
-
}
|
|
145
|
-
/**
|
|
146
|
-
* Decide se o `noclaf` já está OK no TOML e monta o próximo objeto se precisar
|
|
147
|
-
* atualizar (pura, sem IO). Já-OK só se command bate E env NOCLAF_CLIENT=codex já
|
|
148
|
-
* existe — senão atualiza (instalações antigas ganham o env no próximo run).
|
|
149
|
-
*/
|
|
150
|
-
export function planCodexUpdate(existing, noclafEntry) {
|
|
151
|
-
const servers = (existing.mcp_servers ?? {});
|
|
152
|
-
const current = servers[brand.mcpServerKey];
|
|
153
|
-
const alreadyConfigured = Boolean(current && current.command === MCP_COMMAND && current.env?.[envName('CLIENT')] === 'codex');
|
|
154
|
-
const next = {
|
|
155
|
-
...existing,
|
|
156
|
-
mcp_servers: {
|
|
157
|
-
...servers,
|
|
158
|
-
[brand.mcpServerKey]: {
|
|
159
|
-
...current,
|
|
160
|
-
...noclafEntry,
|
|
161
|
-
env: { ...current?.env, [envName('CLIENT')]: 'codex' },
|
|
162
|
-
},
|
|
163
|
-
},
|
|
164
|
-
};
|
|
165
|
-
return { alreadyConfigured, next };
|
|
166
|
-
}
|
|
167
|
-
export function installCodexGlobal() {
|
|
168
|
-
const path = join(homedir(), '.codex', 'config.toml');
|
|
169
|
-
// `NOCLAF_CLIENT=codex` avisa o servidor MCP a (1) provisionar/auto-pull pra
|
|
170
|
-
// `~/.codex` (skills + prompts) e (2) filtrar os docs pelo surface `codex`.
|
|
171
|
-
const noclafEntry = { command: MCP_COMMAND, env: { [envName('CLIENT')]: 'codex' } };
|
|
172
|
-
if (!existsSync(path)) {
|
|
173
|
-
writeToml(path, { mcp_servers: { [brand.mcpServerKey]: noclafEntry } });
|
|
174
|
-
return { status: 'created', path };
|
|
175
|
-
}
|
|
176
|
-
let existing;
|
|
177
|
-
try {
|
|
178
|
-
existing = (readToml(path) ?? {});
|
|
179
|
-
}
|
|
180
|
-
catch (err) {
|
|
181
|
-
throw new Error(`Arquivo ${path} contém TOML inválido (${err.message}). ` +
|
|
182
|
-
`Conserte ou apague antes de rodar de novo.`);
|
|
183
|
-
}
|
|
184
|
-
const { alreadyConfigured, next } = planCodexUpdate(existing, noclafEntry);
|
|
185
|
-
if (alreadyConfigured)
|
|
186
|
-
return { status: 'already_configured', path };
|
|
187
|
-
const backup = backupFile(path);
|
|
188
|
-
writeToml(path, next);
|
|
189
|
-
return { status: 'updated', path, backup };
|
|
190
|
-
}
|
|
191
|
-
//# sourceMappingURL=client-configs.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"client-configs.js","sourceRoot":"","sources":["../../src/lib/client-configs.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { spawnSync } from 'node:child_process';
|
|
2
|
-
export const CLIENTS = {
|
|
3
|
-
'claude-code': {
|
|
4
|
-
id: 'claude-code',
|
|
5
|
-
label: 'Claude Code',
|
|
6
|
-
binary: 'claude',
|
|
7
|
-
npm: '@anthropic-ai/claude-code',
|
|
8
|
-
url: 'https://code.claude.com/docs/en/setup',
|
|
9
|
-
},
|
|
10
|
-
codex: {
|
|
11
|
-
id: 'codex',
|
|
12
|
-
label: 'Codex CLI',
|
|
13
|
-
binary: 'codex',
|
|
14
|
-
npm: '@openai/codex',
|
|
15
|
-
url: 'https://developers.openai.com/codex/cli',
|
|
16
|
-
},
|
|
17
|
-
vscode: {
|
|
18
|
-
id: 'vscode',
|
|
19
|
-
label: 'VS Code',
|
|
20
|
-
binary: 'code',
|
|
21
|
-
url: 'https://code.visualstudio.com/download',
|
|
22
|
-
},
|
|
23
|
-
cowork: {
|
|
24
|
-
id: 'cowork',
|
|
25
|
-
label: 'Claude Desktop (Cowork)',
|
|
26
|
-
url: 'https://claude.ai/download',
|
|
27
|
-
},
|
|
28
|
-
};
|
|
29
|
-
/** Detecta se um binário existe no PATH (roda `<bin> --version`). */
|
|
30
|
-
export function isBinaryInstalled(binary) {
|
|
31
|
-
try {
|
|
32
|
-
const res = spawnSync(binary, ['--version'], { stdio: 'ignore', timeout: 5000 });
|
|
33
|
-
// ENOENT → não está no PATH. Qualquer exit code (mesmo != 0) = existe.
|
|
34
|
-
return !res.error;
|
|
35
|
-
}
|
|
36
|
-
catch {
|
|
37
|
-
return false;
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
//# sourceMappingURL=client-install.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"client-install.js","sourceRoot":"","sources":["../../src/lib/client-install.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAiB/C,MAAM,CAAC,MAAM,OAAO,GAA+B;IACjD,aAAa,EAAE;QACb,EAAE,EAAE,aAAa;QACjB,KAAK,EAAE,aAAa;QACpB,MAAM,EAAE,QAAQ;QAChB,GAAG,EAAE,2BAA2B;QAChC,GAAG,EAAE,uCAAuC;KAC7C;IACD,KAAK,EAAE;QACL,EAAE,EAAE,OAAO;QACX,KAAK,EAAE,WAAW;QAClB,MAAM,EAAE,OAAO;QACf,GAAG,EAAE,eAAe;QACpB,GAAG,EAAE,yCAAyC;KAC/C;IACD,MAAM,EAAE;QACN,EAAE,EAAE,QAAQ;QACZ,KAAK,EAAE,SAAS;QAChB,MAAM,EAAE,MAAM;QACd,GAAG,EAAE,wCAAwC;KAC9C;IACD,MAAM,EAAE;QACN,EAAE,EAAE,QAAQ;QACZ,KAAK,EAAE,yBAAyB;QAChC,GAAG,EAAE,4BAA4B;KAClC;CACF,CAAC;AAEF,qEAAqE;AACrE,MAAM,UAAU,iBAAiB,CAAC,MAAc;IAC9C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACjF,uEAAuE;QACvE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;IACpB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
|
package/dist/lib/colors.js
DELETED
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
import chalk from 'chalk';
|
|
2
|
-
import boxen from 'boxen';
|
|
3
|
-
/**
|
|
4
|
-
* Camada de estilo do CLI. `chalk` cuida de cor (respeita TTY / `NO_COLOR` /
|
|
5
|
-
* `FORCE_COLOR` sozinho) e `boxen` desenha caixas. Helpers extras: links
|
|
6
|
-
* clicáveis (OSC 8), régua, símbolos e realce de comandos.
|
|
7
|
-
*/
|
|
8
|
-
/** Paleta — `chalk` já é um objeto com `.bold/.dim/.cyan/...`, reexpomos como `c`. */
|
|
9
|
-
export const c = chalk;
|
|
10
|
-
/** Símbolos usados na saída (unicode). */
|
|
11
|
-
export const sym = {
|
|
12
|
-
ok: '✓',
|
|
13
|
-
err: '✗',
|
|
14
|
-
dot: '●',
|
|
15
|
-
arrow: '→',
|
|
16
|
-
chevron: '›',
|
|
17
|
-
bullet: '·',
|
|
18
|
-
warn: '⚠',
|
|
19
|
-
gear: '↻',
|
|
20
|
-
};
|
|
21
|
-
/** Comando destacado (ciano) — o realce padrão pra qualquer coisa executável. */
|
|
22
|
-
export function cmd(s) {
|
|
23
|
-
return chalk.cyan(s);
|
|
24
|
-
}
|
|
25
|
-
/** Selo com fundo colorido — estado bem visível ao lado de um título. */
|
|
26
|
-
export function badge(label, color = 'gray') {
|
|
27
|
-
const bg = {
|
|
28
|
-
green: chalk.bgGreen,
|
|
29
|
-
yellow: chalk.bgYellow,
|
|
30
|
-
gray: chalk.bgGray,
|
|
31
|
-
cyan: chalk.bgCyan,
|
|
32
|
-
}[color];
|
|
33
|
-
return bg.black(` ${label} `);
|
|
34
|
-
}
|
|
35
|
-
/** Régua horizontal fina. */
|
|
36
|
-
export function rule(width = 58) {
|
|
37
|
-
return chalk.dim('─'.repeat(width));
|
|
38
|
-
}
|
|
39
|
-
/** Realça trechos `entre crases` como comandos (ciano) e remove as crases. */
|
|
40
|
-
export function highlightInlineCode(s) {
|
|
41
|
-
return s.replace(/`([^`]+)`/g, (_m, code) => chalk.cyan(code));
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Link clicável via OSC 8 (terminais modernos). Fora de TTY, cai pra
|
|
45
|
-
* `label (url)` em texto plano. Sublinhado em ciano pra parecer link.
|
|
46
|
-
*/
|
|
47
|
-
export function link(url, label = url) {
|
|
48
|
-
if (!process.stdout.isTTY)
|
|
49
|
-
return label === url ? url : `${label} (${url})`;
|
|
50
|
-
const OSC = ']8;;';
|
|
51
|
-
const BEL = '';
|
|
52
|
-
return `${OSC}${url}${BEL}${chalk.cyan.underline(label)}${OSC}${BEL}`;
|
|
53
|
-
}
|
|
54
|
-
/** Caixa (boxen) com defaults do noclaf; opções sobrescrevíveis. */
|
|
55
|
-
export function box(content, opts = {}) {
|
|
56
|
-
return boxen(content, {
|
|
57
|
-
padding: { top: 0, bottom: 0, left: 1, right: 1 },
|
|
58
|
-
borderStyle: 'round',
|
|
59
|
-
borderColor: 'gray',
|
|
60
|
-
dimBorder: true,
|
|
61
|
-
...opts,
|
|
62
|
-
});
|
|
63
|
-
}
|
|
64
|
-
/** Indenta cada linha de um bloco multi-linha (ex.: pra alinhar uma caixa). */
|
|
65
|
-
export function indent(block, spaces = 2) {
|
|
66
|
-
const pad = ' '.repeat(spaces);
|
|
67
|
-
return block
|
|
68
|
-
.split('\n')
|
|
69
|
-
.map((l) => (l.length ? pad + l : l))
|
|
70
|
-
.join('\n');
|
|
71
|
-
}
|
|
72
|
-
/** Título de seção proeminente: negrito + sublinhado, com subtítulo dim opcional. */
|
|
73
|
-
export function sectionTitle(title, subtitle) {
|
|
74
|
-
const head = chalk.bold.underline(title);
|
|
75
|
-
return subtitle ? `${head} ${chalk.dim(subtitle)}` : head;
|
|
76
|
-
}
|
|
77
|
-
/**
|
|
78
|
-
* Limpa a **tela visível** e volta o cursor pro topo — sem apagar o histórico de
|
|
79
|
-
* rolagem (`\x1b[2J\x1b[H`, não `\x1b[3J`), então dá pra rolar pra cima e revisar.
|
|
80
|
-
* Só em TTY; desliga com `NOCLAF_NO_CLEAR=1`.
|
|
81
|
-
*/
|
|
82
|
-
export function clearScreen() {
|
|
83
|
-
if (!process.stdout.isTTY || process.env.NOCLAF_NO_CLEAR)
|
|
84
|
-
return;
|
|
85
|
-
process.stdout.write("\x1b[2J\x1b[H");
|
|
86
|
-
}
|
|
87
|
-
/** Começa uma seção "em tela nova": limpa (se TTY) e imprime o título. */
|
|
88
|
-
export function section(title, subtitle) {
|
|
89
|
-
clearScreen();
|
|
90
|
-
console.log(sectionTitle(title, subtitle));
|
|
91
|
-
}
|
|
92
|
-
//# sourceMappingURL=colors.js.map
|
package/dist/lib/colors.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"colors.js","sourceRoot":"","sources":["../../src/lib/colors.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,143 +0,0 @@
|
|
|
1
|
-
import AdmZip from "adm-zip";
|
|
2
|
-
import { fileURLToPath } from "node:url";
|
|
3
|
-
import { dirname, join } from "node:path";
|
|
4
|
-
import { existsSync, readdirSync, readFileSync } from "node:fs";
|
|
5
|
-
import { homedir } from "node:os";
|
|
6
|
-
import { spawn } from "node:child_process";
|
|
7
|
-
import { VERSION } from "../version.js";
|
|
8
|
-
import { toolDefinitions } from "../tools/index.js";
|
|
9
|
-
import { brand } from "../brand.js";
|
|
10
|
-
/**
|
|
11
|
-
* Raiz do pacote instalado (onde ficam `dist/` e `node_modules/`).
|
|
12
|
-
* Este módulo compila para dist/lib/cowork-extension.js, então sobe dois níveis.
|
|
13
|
-
*/
|
|
14
|
-
function packageRoot() {
|
|
15
|
-
const here = dirname(fileURLToPath(import.meta.url)); // .../dist/lib
|
|
16
|
-
return join(here, "..", "..");
|
|
17
|
-
}
|
|
18
|
-
/** Nome + descrição normalizada (espaços colapsados, até 160 chars — limite do MCPB). */
|
|
19
|
-
function mapCoworkTools(tools) {
|
|
20
|
-
return tools.map((t) => ({
|
|
21
|
-
name: t.name,
|
|
22
|
-
description: (t.description ?? "")
|
|
23
|
-
.replace(/\s+/g, " ")
|
|
24
|
-
.trim()
|
|
25
|
-
.slice(0, 160),
|
|
26
|
-
}));
|
|
27
|
-
}
|
|
28
|
-
/** Bloco `server` do manifest: como o Claude Desktop sobe o servidor MCP do noclaf. */
|
|
29
|
-
function buildCoworkServerConfig() {
|
|
30
|
-
return {
|
|
31
|
-
type: "node",
|
|
32
|
-
entry_point: "dist/mcp-server.js",
|
|
33
|
-
mcp_config: {
|
|
34
|
-
command: "node",
|
|
35
|
-
args: ["${__dirname}/dist/mcp-server.js"],
|
|
36
|
-
env: {
|
|
37
|
-
NOCLAF_PAT: '${user_config.pat}',
|
|
38
|
-
NOCLAF_PROJECT_ID: '${user_config.project_id}',
|
|
39
|
-
NOCLAF_REPOSITORY_ID: '${user_config.repository_id}',
|
|
40
|
-
// Cowork ignora ~/.claude → o servidor pula o auto-pull e entrega as skills
|
|
41
|
-
// por resources + prompts.
|
|
42
|
-
NOCLAF_CLIENT: 'cowork',
|
|
43
|
-
},
|
|
44
|
-
},
|
|
45
|
-
};
|
|
46
|
-
}
|
|
47
|
-
/** Bloco `user_config` do manifest: campos que o app pede na instalação (o PAT). */
|
|
48
|
-
function buildCoworkUserConfig() {
|
|
49
|
-
return {
|
|
50
|
-
pat: {
|
|
51
|
-
type: "string",
|
|
52
|
-
title: "NOS Personal Access Token (PAT)",
|
|
53
|
-
description: `PAT do ${brand.productName} (formato ${brand.patPrefix}…), gerado em ${brand.webUrl}/profile#mcp. O projeto é escolhido por sessão com as tools ${brand.toolPrefix}list_projects / ${brand.toolPrefix}set_project — não há nada de projeto para configurar aqui.`,
|
|
54
|
-
sensitive: true,
|
|
55
|
-
required: true,
|
|
56
|
-
},
|
|
57
|
-
};
|
|
58
|
-
}
|
|
59
|
-
/** Gera o objeto manifest.json (spec MCPB) para a versão atual. */
|
|
60
|
-
export function buildCoworkManifest() {
|
|
61
|
-
return {
|
|
62
|
-
manifest_version: "0.2",
|
|
63
|
-
name: "noclaf-cli",
|
|
64
|
-
display_name: "Noclaf (NOS)",
|
|
65
|
-
version: VERSION,
|
|
66
|
-
description: "MCP server pra controlar o NOS (Noclaf Operation System) — tarefas, kanban e ponto/cronometragem — a partir do Claude Desktop / Cowork.",
|
|
67
|
-
long_description: "Servidor MCP do NOS (Noclaf Operation System). Permite ao assistente ler o contexto do projeto, listar/criar/atualizar/mover/comentar tarefas e gerenciar alocações (bater ponto e cronometrar tempo por task). A autenticação usa um PAT do NOS, fornecido via configuração da extensão (NOCLAF_PAT).",
|
|
68
|
-
author: { name: "Noclaf Tech", url: "https://github.com/Falcao-Tech" },
|
|
69
|
-
homepage: "https://github.com/Falcao-Tech/noclaf-cli#readme",
|
|
70
|
-
documentation: "https://github.com/Falcao-Tech/noclaf-cli#readme",
|
|
71
|
-
support: "https://github.com/Falcao-Tech/noclaf-cli/issues",
|
|
72
|
-
keywords: ["mcp", "noclaf", "nos", "tasks", "kanban", "time-tracking"],
|
|
73
|
-
server: buildCoworkServerConfig(),
|
|
74
|
-
user_config: buildCoworkUserConfig(),
|
|
75
|
-
tools: mapCoworkTools(toolDefinitions),
|
|
76
|
-
compatibility: {
|
|
77
|
-
platforms: ["darwin", "win32", "linux"],
|
|
78
|
-
runtimes: { node: ">=20.0.0" },
|
|
79
|
-
},
|
|
80
|
-
};
|
|
81
|
-
}
|
|
82
|
-
/**
|
|
83
|
-
* Adiciona recursivamente os arquivos de `localDir` ao zip sob `zipPrefix`,
|
|
84
|
-
* usando separadores POSIX e sem criar entradas de diretório. Pula source maps.
|
|
85
|
-
*/
|
|
86
|
-
function addFilesRecursively(zip, localDir, zipPrefix) {
|
|
87
|
-
for (const entry of readdirSync(localDir, { withFileTypes: true })) {
|
|
88
|
-
const localPath = join(localDir, entry.name);
|
|
89
|
-
const zipPath = `${zipPrefix}/${entry.name}`;
|
|
90
|
-
if (entry.isDirectory()) {
|
|
91
|
-
addFilesRecursively(zip, localPath, zipPath);
|
|
92
|
-
}
|
|
93
|
-
else if (entry.isFile() && !entry.name.endsWith(".map")) {
|
|
94
|
-
zip.addFile(zipPath, readFileSync(localPath));
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
/** Pasta de destino do .mcpb: ~/Downloads se existir, senão o home. */
|
|
99
|
-
function defaultOutputDir() {
|
|
100
|
-
const downloads = join(homedir(), "Downloads");
|
|
101
|
-
return existsSync(downloads) ? downloads : homedir();
|
|
102
|
-
}
|
|
103
|
-
/**
|
|
104
|
-
* Gera o pacote .mcpb (manifest + dist + node_modules) a partir da instalação atual.
|
|
105
|
-
* Source maps são omitidos pra reduzir o tamanho.
|
|
106
|
-
*/
|
|
107
|
-
export function generateCoworkExtension(outputDir = defaultOutputDir()) {
|
|
108
|
-
const root = packageRoot();
|
|
109
|
-
const distDir = join(root, "dist");
|
|
110
|
-
const nodeModulesDir = join(root, "node_modules");
|
|
111
|
-
if (!existsSync(distDir)) {
|
|
112
|
-
throw new Error(`Não encontrei dist/ em ${root}. Reinstale o pacote (npm i -g ${brand.packageName}).`);
|
|
113
|
-
}
|
|
114
|
-
const manifest = buildCoworkManifest();
|
|
115
|
-
const zip = new AdmZip();
|
|
116
|
-
zip.addFile("manifest.json", Buffer.from(JSON.stringify(manifest, null, 2) + "\n", "utf8"));
|
|
117
|
-
// Adiciona só arquivos (sem entradas de diretório), como o `mcpb pack` faz —
|
|
118
|
-
// entradas de pasta quebram o instalador do MCPB. Source maps são omitidos.
|
|
119
|
-
addFilesRecursively(zip, distDir, "dist");
|
|
120
|
-
if (existsSync(nodeModulesDir)) {
|
|
121
|
-
addFilesRecursively(zip, nodeModulesDir, "node_modules");
|
|
122
|
-
}
|
|
123
|
-
const outputPath = join(outputDir, `${brand.mcpBinName}-${VERSION}.mcpb`);
|
|
124
|
-
zip.writeZip(outputPath);
|
|
125
|
-
return { outputPath };
|
|
126
|
-
}
|
|
127
|
-
/** Abre a pasta no explorador de arquivos do SO (best-effort, ignora falhas). */
|
|
128
|
-
export function revealInFileManager(target) {
|
|
129
|
-
const cmd = process.platform === "darwin"
|
|
130
|
-
? "open"
|
|
131
|
-
: process.platform === "win32"
|
|
132
|
-
? "explorer"
|
|
133
|
-
: "xdg-open";
|
|
134
|
-
try {
|
|
135
|
-
const child = spawn(cmd, [target], { stdio: "ignore", detached: true });
|
|
136
|
-
child.on("error", () => { });
|
|
137
|
-
child.unref();
|
|
138
|
-
}
|
|
139
|
-
catch {
|
|
140
|
-
// sem file manager disponível — ignora
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
//# sourceMappingURL=cowork-extension.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cowork-extension.js","sourceRoot":"","sources":["../../src/lib/cowork-extension.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/dates.js
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
/** Hoje em YYYY-MM-DD, fuso local. */
|
|
3
|
-
export function todayStr(now = new Date()) {
|
|
4
|
-
const p = (n) => String(n).padStart(2, '0');
|
|
5
|
-
return `${now.getFullYear()}-${p(now.getMonth() + 1)}-${p(now.getDate())}`;
|
|
6
|
-
}
|
|
7
|
-
const DATE_RE = /^\d{4}-\d{2}-\d{2}$/;
|
|
8
|
-
/** YYYY-MM-DD real (rejeita 2026-02-31 por round-trip). */
|
|
9
|
-
export function isIsoDate(s) {
|
|
10
|
-
if (!DATE_RE.test(s))
|
|
11
|
-
return false;
|
|
12
|
-
const d = new Date(`${s}T00:00:00Z`);
|
|
13
|
-
return !Number.isNaN(d.getTime()) && d.toISOString().slice(0, 10) === s;
|
|
14
|
-
}
|
|
15
|
-
/** Schema zod de data ISO válida, compartilhado pelas tools. */
|
|
16
|
-
export const isoDate = z.string().refine(isIsoDate, 'use uma data real no formato YYYY-MM-DD');
|
|
17
|
-
/** Erro se início > fim (ISO, comparação lexicográfica); null se ok ou se faltar um lado. */
|
|
18
|
-
export function dateRangeError(start, end) {
|
|
19
|
-
return start && end && start > end ? `Intervalo inválido: início (${start}) deve ser <= fim (${end}).` : null;
|
|
20
|
-
}
|
|
21
|
-
//# sourceMappingURL=dates.js.map
|
package/dist/lib/dates.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dates.js","sourceRoot":"","sources":["../../src/lib/dates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,sCAAsC;AACtC,MAAM,UAAU,QAAQ,CAAC,MAAY,IAAI,IAAI,EAAE;IAC7C,MAAM,CAAC,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACpD,OAAO,GAAG,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;AAC7E,CAAC;AAED,MAAM,OAAO,GAAG,qBAAqB,CAAC;AAEtC,2DAA2D;AAC3D,MAAM,UAAU,SAAS,CAAC,CAAS;IACjC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACnC,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IACrC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;AAC1E,CAAC;AAED,gEAAgE;AAChE,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,yCAAyC,CAAC,CAAC;AAE/F,6FAA6F;AAC7F,MAAM,UAAU,cAAc,CAAC,KAAqB,EAAE,GAAmB;IACvE,OAAO,KAAK,IAAI,GAAG,IAAI,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,+BAA+B,KAAK,sBAAsB,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AAChH,CAAC"}
|