@noclaf/cli 0.8.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 -88
- 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/checklist-gateway.js +0 -63
- package/dist/adapters/supabase/checklist-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 -28
- 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/checklist-logic.js +0 -5
- package/dist/lib/checklist-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-item.js +0 -44
- package/dist/tools/add-checklist-item.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 -92
- 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-checklist-item.js +0 -42
- package/dist/tools/remove-checklist-item.js.map +0 -1
- package/dist/tools/remove-checklist.js +0 -42
- package/dist/tools/remove-checklist.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-checklist-item.js +0 -51
- package/dist/tools/update-checklist-item.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
package/dist/auth.js
DELETED
|
@@ -1,141 +0,0 @@
|
|
|
1
|
-
import { mkdir, readFile, writeFile, chmod, rm } from 'node:fs/promises';
|
|
2
|
-
import { dirname } from 'node:path';
|
|
3
|
-
import { CREDENTIALS_FILE, PAT_REGEX, SUPABASE_ANON_KEY, TOKEN_EXCHANGE_URL, } from './constants.js';
|
|
4
|
-
import { env } from './brand.js';
|
|
5
|
-
export async function loadCredentials(file = CREDENTIALS_FILE) {
|
|
6
|
-
const stored = await readCredentialsFile(file);
|
|
7
|
-
// Precedência pro ambiente: usado por Desktop Extensions / Cowork, onde o PAT
|
|
8
|
-
// chega via user_config (NOCLAF_PAT) em vez de `noclaf login`.
|
|
9
|
-
const envPat = env('PAT')?.trim();
|
|
10
|
-
if (envPat) {
|
|
11
|
-
// Cache do arquivo só serve se for do mesmo PAT.
|
|
12
|
-
return stored?.pat === envPat ? stored : { pat: envPat };
|
|
13
|
-
}
|
|
14
|
-
return stored;
|
|
15
|
-
}
|
|
16
|
-
async function readCredentialsFile(file) {
|
|
17
|
-
try {
|
|
18
|
-
const raw = await readFile(file, 'utf8');
|
|
19
|
-
const parsed = JSON.parse(raw);
|
|
20
|
-
if (!parsed || typeof parsed.pat !== 'string') {
|
|
21
|
-
return null;
|
|
22
|
-
}
|
|
23
|
-
return parsed;
|
|
24
|
-
}
|
|
25
|
-
catch (err) {
|
|
26
|
-
if (err.code === 'ENOENT') {
|
|
27
|
-
return null;
|
|
28
|
-
}
|
|
29
|
-
throw err;
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
export async function saveCredentials(creds, file = CREDENTIALS_FILE) {
|
|
33
|
-
await mkdir(dirname(file), { recursive: true });
|
|
34
|
-
await writeFile(file, JSON.stringify(creds, null, 2) + '\n', 'utf8');
|
|
35
|
-
try {
|
|
36
|
-
await chmod(file, 0o600);
|
|
37
|
-
}
|
|
38
|
-
catch {
|
|
39
|
-
// chmod pode falhar em Windows — ignoramos silenciosamente.
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Identidade do cache quando houver; senão uma troca de PAT, populando o cache.
|
|
44
|
-
* 401/403 invalida o cache e propaga o erro (o chamador pede re-login).
|
|
45
|
-
*/
|
|
46
|
-
export async function resolveIdentity(creds, opts = {}) {
|
|
47
|
-
const file = opts.file ?? CREDENTIALS_FILE;
|
|
48
|
-
if (!opts.refresh && creds.user && creds.fetched_at) {
|
|
49
|
-
return { ...creds.user, avatar_url: creds.user.avatar_url ?? null, fetched_at: creds.fetched_at };
|
|
50
|
-
}
|
|
51
|
-
let result;
|
|
52
|
-
try {
|
|
53
|
-
result = await exchangePatForJwt(creds.pat);
|
|
54
|
-
}
|
|
55
|
-
catch (err) {
|
|
56
|
-
const status = err.status;
|
|
57
|
-
if (status === 401 || status === 403) {
|
|
58
|
-
await patchCachedUser(file, null);
|
|
59
|
-
}
|
|
60
|
-
throw err;
|
|
61
|
-
}
|
|
62
|
-
const identity = {
|
|
63
|
-
...result.user,
|
|
64
|
-
avatar_url: result.user.avatar_url ?? null,
|
|
65
|
-
fetched_at: new Date().toISOString(),
|
|
66
|
-
};
|
|
67
|
-
await patchCachedUser(file, identity);
|
|
68
|
-
return identity;
|
|
69
|
-
}
|
|
70
|
-
// Só mexe num arquivo já existente: ambiente com PAT via env e sem credencial
|
|
71
|
-
// gravada responde sem persistir nada.
|
|
72
|
-
async function patchCachedUser(file, identity) {
|
|
73
|
-
const creds = await readCredentialsFile(file).catch(() => null);
|
|
74
|
-
if (!creds)
|
|
75
|
-
return;
|
|
76
|
-
if (identity) {
|
|
77
|
-
const { fetched_at, ...user } = identity;
|
|
78
|
-
creds.user = user;
|
|
79
|
-
creds.fetched_at = fetched_at;
|
|
80
|
-
}
|
|
81
|
-
else {
|
|
82
|
-
delete creds.user;
|
|
83
|
-
delete creds.fetched_at;
|
|
84
|
-
}
|
|
85
|
-
await saveCredentials(creds, file).catch(() => {
|
|
86
|
-
// filesystem read-only — cache é conveniência, segue sem persistir.
|
|
87
|
-
});
|
|
88
|
-
}
|
|
89
|
-
// Espelha `patchCachedUser`: só mexe num arquivo já existente e só se o `pat`
|
|
90
|
-
// gravado for o mesmo sendo persistido — evita gravar sessão de PAT trocado/revogado.
|
|
91
|
-
export async function patchCachedSession(file, pat, session) {
|
|
92
|
-
const creds = await readCredentialsFile(file).catch(() => null);
|
|
93
|
-
if (!creds || creds.pat !== pat)
|
|
94
|
-
return;
|
|
95
|
-
if (session) {
|
|
96
|
-
creds.access_token = session.access_token;
|
|
97
|
-
creds.expires_at = session.expires_at;
|
|
98
|
-
creds.user = session.user;
|
|
99
|
-
}
|
|
100
|
-
else {
|
|
101
|
-
delete creds.access_token;
|
|
102
|
-
delete creds.expires_at;
|
|
103
|
-
}
|
|
104
|
-
await saveCredentials(creds, file).catch(() => {
|
|
105
|
-
// filesystem read-only — cache é conveniência, segue sem persistir.
|
|
106
|
-
});
|
|
107
|
-
}
|
|
108
|
-
export async function clearCredentials() {
|
|
109
|
-
await rm(CREDENTIALS_FILE, { force: true });
|
|
110
|
-
}
|
|
111
|
-
export function validatePatFormat(pat) {
|
|
112
|
-
return PAT_REGEX.test(pat);
|
|
113
|
-
}
|
|
114
|
-
export async function exchangePatForJwt(pat) {
|
|
115
|
-
const response = await fetch(TOKEN_EXCHANGE_URL, {
|
|
116
|
-
method: 'POST',
|
|
117
|
-
headers: {
|
|
118
|
-
apikey: SUPABASE_ANON_KEY,
|
|
119
|
-
Authorization: `Bearer ${SUPABASE_ANON_KEY}`,
|
|
120
|
-
'Content-Type': 'application/json',
|
|
121
|
-
},
|
|
122
|
-
body: JSON.stringify({ token: pat }),
|
|
123
|
-
});
|
|
124
|
-
if (!response.ok) {
|
|
125
|
-
let message = response.statusText;
|
|
126
|
-
try {
|
|
127
|
-
const body = (await response.json());
|
|
128
|
-
if (body && typeof body.error === 'string' && body.error.length > 0) {
|
|
129
|
-
message = body.error;
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
catch {
|
|
133
|
-
// body não era JSON — mantém statusText
|
|
134
|
-
}
|
|
135
|
-
const err = new Error(message);
|
|
136
|
-
err.status = response.status;
|
|
137
|
-
throw err;
|
|
138
|
-
}
|
|
139
|
-
return (await response.json());
|
|
140
|
-
}
|
|
141
|
-
//# sourceMappingURL=auth.js.map
|
package/dist/auth.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,127 +0,0 @@
|
|
|
1
|
-
import { password } from "../../lib/prompts.js";
|
|
2
|
-
import { brand } from "../../brand.js";
|
|
3
|
-
import { startSpinner } from "../../spinner.js";
|
|
4
|
-
import { clearCredentials, exchangePatForJwt, loadCredentials, resolveIdentity, saveCredentials, validatePatFormat, } from "../../auth.js";
|
|
5
|
-
import { authCopy } from "../copy.js";
|
|
6
|
-
/** Obtém o PAT: usa o argumento se veio preenchido, senão pede via prompt mascarado. */
|
|
7
|
-
async function resolvePat(patArg) {
|
|
8
|
-
const trimmed = patArg?.trim();
|
|
9
|
-
if (trimmed)
|
|
10
|
-
return trimmed;
|
|
11
|
-
console.log(`Gere um token pessoal em: ${brand.webUrl}/profile#mcp`);
|
|
12
|
-
const answer = await password({
|
|
13
|
-
message: authCopy.login.patPrompt,
|
|
14
|
-
mask: "*",
|
|
15
|
-
validate: (input) => validatePatFormat(input.trim()) || authCopy.login.patInvalid,
|
|
16
|
-
});
|
|
17
|
-
return answer.trim();
|
|
18
|
-
}
|
|
19
|
-
/** Troca o PAT por sessão e persiste as credenciais localmente. */
|
|
20
|
-
async function performLogin(pat) {
|
|
21
|
-
const result = await exchangePatForJwt(pat);
|
|
22
|
-
await saveCredentials({
|
|
23
|
-
pat,
|
|
24
|
-
user: result.user,
|
|
25
|
-
fetched_at: new Date().toISOString(),
|
|
26
|
-
});
|
|
27
|
-
return result;
|
|
28
|
-
}
|
|
29
|
-
function printLoginSuccess(u) {
|
|
30
|
-
console.log(brand.logo);
|
|
31
|
-
console.log("[ok] Autenticado!");
|
|
32
|
-
console.log(`Nome: ${u.full_name || "(sem nome)"}`);
|
|
33
|
-
console.log(`Usuário: ${u.username ? `@${u.username}` : "(sem username)"}`);
|
|
34
|
-
console.log(`Email: ${u.email}`);
|
|
35
|
-
}
|
|
36
|
-
/** Decide se dá pra pular o spinner de validação: só quando a sessão já está em
|
|
37
|
-
* cache (usuário + data de fetch salvos) e o caller não pediu revalidação forçada. */
|
|
38
|
-
export function shouldSkipWhoamiSpinner(creds, refresh) {
|
|
39
|
-
return !refresh && Boolean(creds.user && creds.fetched_at);
|
|
40
|
-
}
|
|
41
|
-
/** Traduz o erro de `resolveIdentity` pra mensagem exibida ao usuário. */
|
|
42
|
-
export function whoamiErrorMessage(err) {
|
|
43
|
-
const status = err.status;
|
|
44
|
-
return status === 401 || status === 403
|
|
45
|
-
? `Sessão inválida. Rode \`${brand.name} login <PAT>\` novamente.`
|
|
46
|
-
: `Falha ao validar token: ${err.message}`;
|
|
47
|
-
}
|
|
48
|
-
function printWhoamiIdentity(u) {
|
|
49
|
-
console.log(brand.logo);
|
|
50
|
-
console.log(`Nome: ${u.full_name || "(sem nome)"}`);
|
|
51
|
-
console.log(`Email: ${u.email}`);
|
|
52
|
-
console.log(`Usuário: ${u.username ? `@${u.username}` : "(sem username)"}`);
|
|
53
|
-
console.log(`Foto: ${u.avatar_url || "(sem foto)"}`);
|
|
54
|
-
console.log(`ID: ${u.id}`);
|
|
55
|
-
}
|
|
56
|
-
function registerLoginCommand(program) {
|
|
57
|
-
program
|
|
58
|
-
.command("login")
|
|
59
|
-
.description("Salva o token de acesso pessoal (PAT) localmente")
|
|
60
|
-
.argument("[pat]", "Token gerado em /profile#mcp do NOS (opcional — será pedido se omitido)")
|
|
61
|
-
.action(async (patArg) => {
|
|
62
|
-
const pat = await resolvePat(patArg);
|
|
63
|
-
if (!validatePatFormat(pat)) {
|
|
64
|
-
console.error(`Token inválido. Formato esperado: \`${brand.patPrefix}\` + 64 caracteres hexadecimais.`);
|
|
65
|
-
process.exit(1);
|
|
66
|
-
}
|
|
67
|
-
const spinner = startSpinner("Autenticando...");
|
|
68
|
-
try {
|
|
69
|
-
const result = await performLogin(pat);
|
|
70
|
-
spinner.stop();
|
|
71
|
-
printLoginSuccess(result.user);
|
|
72
|
-
}
|
|
73
|
-
catch (err) {
|
|
74
|
-
spinner.fail(`Falha ao autenticar: ${err.message}`);
|
|
75
|
-
process.exit(1);
|
|
76
|
-
}
|
|
77
|
-
});
|
|
78
|
-
}
|
|
79
|
-
function registerLogoutCommand(program) {
|
|
80
|
-
program
|
|
81
|
-
.command("logout")
|
|
82
|
-
.description("Remove credenciais locais")
|
|
83
|
-
.action(async () => {
|
|
84
|
-
await clearCredentials();
|
|
85
|
-
console.log("Sessão removida.");
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
async function runWhoamiAction(opts) {
|
|
89
|
-
const creds = await loadCredentials();
|
|
90
|
-
if (!creds) {
|
|
91
|
-
console.error(`Não autenticado. Rode \`${brand.name} login <PAT>\`.`);
|
|
92
|
-
process.exit(1);
|
|
93
|
-
}
|
|
94
|
-
const cached = shouldSkipWhoamiSpinner(creds, opts.refresh);
|
|
95
|
-
const spinner = cached || opts.json ? null : startSpinner("Validando sessão...");
|
|
96
|
-
try {
|
|
97
|
-
const u = await resolveIdentity(creds, { refresh: opts.refresh });
|
|
98
|
-
spinner?.stop();
|
|
99
|
-
if (opts.json) {
|
|
100
|
-
console.log(JSON.stringify(u, null, 2));
|
|
101
|
-
return;
|
|
102
|
-
}
|
|
103
|
-
printWhoamiIdentity(u);
|
|
104
|
-
}
|
|
105
|
-
catch (err) {
|
|
106
|
-
const message = whoamiErrorMessage(err);
|
|
107
|
-
if (spinner)
|
|
108
|
-
spinner.fail(message);
|
|
109
|
-
else
|
|
110
|
-
console.error(message);
|
|
111
|
-
process.exit(1);
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
function registerWhoamiCommand(program) {
|
|
115
|
-
program
|
|
116
|
-
.command("whoami")
|
|
117
|
-
.description("Mostra o usuário autenticado")
|
|
118
|
-
.option("--json", "Emite a identidade como JSON")
|
|
119
|
-
.option("--refresh", "Ignora o cache e revalida o token")
|
|
120
|
-
.action(runWhoamiAction);
|
|
121
|
-
}
|
|
122
|
-
export function registerAuthCommands(program) {
|
|
123
|
-
registerLoginCommand(program);
|
|
124
|
-
registerLogoutCommand(program);
|
|
125
|
-
registerWhoamiCommand(program);
|
|
126
|
-
}
|
|
127
|
-
//# sourceMappingURL=auth.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/cli/commands/auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
import { rmSync, lstatSync } from "node:fs";
|
|
2
|
-
import { homedir } from "node:os";
|
|
3
|
-
import { join } from "node:path";
|
|
4
|
-
import { confirm } from "../../lib/prompts.js";
|
|
5
|
-
import { readSkillDocs } from "../../lib/skills.js";
|
|
6
|
-
import { c, sym } from "../../lib/colors.js";
|
|
7
|
-
/**
|
|
8
|
-
* Comando de limpeza: remove artefatos **legados** que versões antigas do noclaf
|
|
9
|
-
* instalaram e que hoje foram substituídos — commands que viraram skills, ou
|
|
10
|
-
* commands removidos de vez. Roda em `~/.claude` (Claude Code) e `~/.codex` (Codex).
|
|
11
|
-
*/
|
|
12
|
-
// Removidos de vez (não existem mais em nenhum formato).
|
|
13
|
-
const FULLY_REMOVED = [
|
|
14
|
-
"new-spec",
|
|
15
|
-
"new-bug",
|
|
16
|
-
"new-adr",
|
|
17
|
-
"apply-spec",
|
|
18
|
-
"apply-bug",
|
|
19
|
-
"to-skill",
|
|
20
|
-
];
|
|
21
|
-
// Eram commands e viraram skills — só o **command** legado deve sair (a skill atual fica).
|
|
22
|
-
const COMMAND_TO_SKILL = ["init-sdd", "to-tickets"];
|
|
23
|
-
/** Existe no disco (inclui symlink pendurado, que `existsSync` não pega)? */
|
|
24
|
-
function present(path) {
|
|
25
|
-
try {
|
|
26
|
-
lstatSync(path);
|
|
27
|
-
return true;
|
|
28
|
-
}
|
|
29
|
-
catch {
|
|
30
|
-
return false;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
/** Ids atualmente válidos no bundle — guarda pra nunca remover algo em uso. */
|
|
34
|
-
function currentIds() {
|
|
35
|
-
try {
|
|
36
|
-
const docs = readSkillDocs();
|
|
37
|
-
return {
|
|
38
|
-
skills: new Set(docs.filter((d) => d.type === "skill").map((d) => d.id)),
|
|
39
|
-
commands: new Set(docs.filter((d) => d.type === "command").map((d) => d.id)),
|
|
40
|
-
};
|
|
41
|
-
}
|
|
42
|
-
catch {
|
|
43
|
-
return { skills: new Set(), commands: new Set() };
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
function collectLegacy() {
|
|
47
|
-
const cur = currentIds();
|
|
48
|
-
const out = [];
|
|
49
|
-
const add = (path, kind) => {
|
|
50
|
-
if (present(path))
|
|
51
|
-
out.push({ path, kind });
|
|
52
|
-
};
|
|
53
|
-
const claude = join(homedir(), ".claude");
|
|
54
|
-
const codex = join(homedir(), ".codex");
|
|
55
|
-
// Claude Code — commands legados (nenhum desses é command atual).
|
|
56
|
-
for (const id of [...FULLY_REMOVED, ...COMMAND_TO_SKILL]) {
|
|
57
|
-
if (!cur.commands.has(id))
|
|
58
|
-
add(join(claude, "commands", `${id}.md`), "claude command");
|
|
59
|
-
}
|
|
60
|
-
// Claude Code — skills só dos removidos de vez (init-sdd/to-tickets são skills atuais).
|
|
61
|
-
for (const id of FULLY_REMOVED) {
|
|
62
|
-
if (!cur.skills.has(id))
|
|
63
|
-
add(join(claude, "skills", id), "claude skill");
|
|
64
|
-
}
|
|
65
|
-
// Codex — dual-write dos removidos de vez (prompt + skill traduzida).
|
|
66
|
-
for (const id of FULLY_REMOVED) {
|
|
67
|
-
if (!cur.commands.has(id) && !cur.skills.has(id)) {
|
|
68
|
-
add(join(codex, "prompts", `${id}.md`), "codex prompt");
|
|
69
|
-
add(join(codex, "skills", id), "codex skill");
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
return out;
|
|
73
|
-
}
|
|
74
|
-
export function registerCleanCommand(program) {
|
|
75
|
-
program
|
|
76
|
-
.command("clean-legacy")
|
|
77
|
-
.description("Remove commands/skills legados (substituídos) de ~/.claude e ~/.codex")
|
|
78
|
-
.option("--dry-run", "só lista o que seria removido, sem apagar")
|
|
79
|
-
.option("-y, --yes", "remove sem pedir confirmação")
|
|
80
|
-
.action(async (opts) => {
|
|
81
|
-
const targets = collectLegacy();
|
|
82
|
-
if (targets.length === 0) {
|
|
83
|
-
console.log("");
|
|
84
|
-
console.log(` ${c.green(sym.ok)} nada legado encontrado — já está limpo.`);
|
|
85
|
-
return;
|
|
86
|
-
}
|
|
87
|
-
console.log("");
|
|
88
|
-
console.log(` ${c.bold("Artefatos legados encontrados:")}`);
|
|
89
|
-
for (const t of targets) {
|
|
90
|
-
console.log(` ${c.red("-")} ${t.path} ${c.dim(`(${t.kind})`)}`);
|
|
91
|
-
}
|
|
92
|
-
if (opts.dryRun) {
|
|
93
|
-
console.log("");
|
|
94
|
-
console.log(` ${c.dim("[dry-run] nada removido.")}`);
|
|
95
|
-
return;
|
|
96
|
-
}
|
|
97
|
-
const ok = opts.yes === true ||
|
|
98
|
-
(await confirm({
|
|
99
|
-
message: `Remover ${targets.length} item(ns) legado(s)?`,
|
|
100
|
-
default: false,
|
|
101
|
-
}));
|
|
102
|
-
if (!ok) {
|
|
103
|
-
console.log(` ${c.dim("cancelado.")}`);
|
|
104
|
-
return;
|
|
105
|
-
}
|
|
106
|
-
let removed = 0;
|
|
107
|
-
for (const t of targets) {
|
|
108
|
-
try {
|
|
109
|
-
rmSync(t.path, { recursive: true, force: true });
|
|
110
|
-
removed++;
|
|
111
|
-
}
|
|
112
|
-
catch (err) {
|
|
113
|
-
console.error(` ${c.red(sym.err)} falha ao remover ${t.path}: ${err.message}`);
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
console.log("");
|
|
117
|
-
console.log(` ${c.green(sym.ok)} ${removed} removido(s). Reinicie os clientes pra refletir.`);
|
|
118
|
-
});
|
|
119
|
-
}
|
|
120
|
-
//# sourceMappingURL=clean.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"clean.js","sourceRoot":"","sources":["../../../src/cli/commands/clean.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
import { c, cmd } from "../../lib/colors.js";
|
|
2
|
-
import { brand } from "../../brand.js";
|
|
3
|
-
/** Nome do binário — vai literal nos scripts de completion gerados. */
|
|
4
|
-
const bin = brand.name;
|
|
5
|
-
function optFlags(command) {
|
|
6
|
-
const flags = [];
|
|
7
|
-
const opts = command.options;
|
|
8
|
-
for (const o of opts) {
|
|
9
|
-
if (o.long)
|
|
10
|
-
flags.push(o.long);
|
|
11
|
-
if (o.short)
|
|
12
|
-
flags.push(o.short);
|
|
13
|
-
}
|
|
14
|
-
flags.push("--help");
|
|
15
|
-
return flags;
|
|
16
|
-
}
|
|
17
|
-
function walk(command) {
|
|
18
|
-
return {
|
|
19
|
-
name: command.name(),
|
|
20
|
-
subs: command.commands.map(walk),
|
|
21
|
-
opts: optFlags(command),
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
/** Candidatos no nível 2 de um comando: seus subcomandos + suas flags. */
|
|
25
|
-
function level2(node) {
|
|
26
|
-
return [...node.subs.map((s) => s.name), ...node.opts].join(" ");
|
|
27
|
-
}
|
|
28
|
-
function bashScript(root) {
|
|
29
|
-
const top = root.subs.map((s) => s.name).join(" ");
|
|
30
|
-
const arms = root.subs
|
|
31
|
-
.filter((s) => s.subs.length > 0 || s.opts.length > 1)
|
|
32
|
-
.map((s) => ` ${s.name}) __c="${level2(s)}" ;;`)
|
|
33
|
-
.join("\n");
|
|
34
|
-
return `# ${bin} bash completion — gere com: ${bin} completion bash
|
|
35
|
-
_${bin}() {
|
|
36
|
-
local cur="\${COMP_WORDS[COMP_CWORD]}"
|
|
37
|
-
local __c=""
|
|
38
|
-
if [ "\$COMP_CWORD" -eq 1 ]; then
|
|
39
|
-
__c="${top}"
|
|
40
|
-
else
|
|
41
|
-
case "\${COMP_WORDS[1]}" in
|
|
42
|
-
${arms}
|
|
43
|
-
*) __c="--help" ;;
|
|
44
|
-
esac
|
|
45
|
-
fi
|
|
46
|
-
COMPREPLY=( \$(compgen -W "\$__c" -- "\$cur") )
|
|
47
|
-
}
|
|
48
|
-
complete -F _${bin} ${bin}`;
|
|
49
|
-
}
|
|
50
|
-
function zshScript(root) {
|
|
51
|
-
const top = root.subs.map((s) => s.name).join(" ");
|
|
52
|
-
const arms = root.subs
|
|
53
|
-
.filter((s) => s.subs.length > 0 || s.opts.length > 1)
|
|
54
|
-
.map((s) => ` ${s.name}) __c=(${level2(s)}) ;;`)
|
|
55
|
-
.join("\n");
|
|
56
|
-
return `#compdef ${bin}
|
|
57
|
-
# ${bin} zsh completion — gere com: ${bin} completion zsh
|
|
58
|
-
_${bin}() {
|
|
59
|
-
local -a __c
|
|
60
|
-
if (( CURRENT == 2 )); then
|
|
61
|
-
__c=(${top})
|
|
62
|
-
else
|
|
63
|
-
case $words[2] in
|
|
64
|
-
${arms}
|
|
65
|
-
*) __c=(--help) ;;
|
|
66
|
-
esac
|
|
67
|
-
fi
|
|
68
|
-
compadd -a __c
|
|
69
|
-
}
|
|
70
|
-
compdef _${bin} ${bin}`;
|
|
71
|
-
}
|
|
72
|
-
function fishScript(root) {
|
|
73
|
-
const lines = [
|
|
74
|
-
`# ${bin} fish completion — gere com: ${bin} completion fish`,
|
|
75
|
-
`complete -c ${bin} -f`,
|
|
76
|
-
];
|
|
77
|
-
const top = root.subs.map((s) => s.name).join(" ");
|
|
78
|
-
lines.push(`complete -c ${bin} -n '__fish_use_subcommand' -a '${top}'`);
|
|
79
|
-
for (const s of root.subs) {
|
|
80
|
-
const cands = [...s.subs.map((x) => x.name), ...s.opts].join(" ");
|
|
81
|
-
lines.push(`complete -c ${bin} -n '__fish_seen_subcommand_from ${s.name}' -a '${cands}'`);
|
|
82
|
-
}
|
|
83
|
-
return lines.join("\n");
|
|
84
|
-
}
|
|
85
|
-
function detectShell() {
|
|
86
|
-
const sh = (process.env.SHELL ?? "").split("/").pop();
|
|
87
|
-
if (sh === "bash" || sh === "zsh" || sh === "fish")
|
|
88
|
-
return sh;
|
|
89
|
-
return null;
|
|
90
|
-
}
|
|
91
|
-
export function registerCompletionCommand(program) {
|
|
92
|
-
program
|
|
93
|
-
.command("completion [shell]")
|
|
94
|
-
.description(`Imprime o script de autocomplete (bash|zsh|fish). Ex.: eval "$(${bin} completion zsh)"`)
|
|
95
|
-
.action((shellArg) => {
|
|
96
|
-
const shell = shellArg ?? detectShell();
|
|
97
|
-
if (shell !== "bash" && shell !== "zsh" && shell !== "fish") {
|
|
98
|
-
console.error(`${c.yellow("shell não reconhecido.")} Use: ${cmd(`${bin} completion`)} ` +
|
|
99
|
-
`${c.dim("bash|zsh|fish")}`);
|
|
100
|
-
process.exitCode = 1;
|
|
101
|
-
return;
|
|
102
|
-
}
|
|
103
|
-
const root = walk(program);
|
|
104
|
-
const script = shell === "bash"
|
|
105
|
-
? bashScript(root)
|
|
106
|
-
: shell === "zsh"
|
|
107
|
-
? zshScript(root)
|
|
108
|
-
: fishScript(root);
|
|
109
|
-
// Dica no stderr (o `eval "$(...)"` captura só o stdout, então não polui).
|
|
110
|
-
console.error(`${c.dim("# adicione ao seu rc:")} ${cmd(`eval "$(${bin} completion ${shell})"`)}`);
|
|
111
|
-
console.log(script);
|
|
112
|
-
});
|
|
113
|
-
}
|
|
114
|
-
//# sourceMappingURL=completion.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"completion.js","sourceRoot":"","sources":["../../../src/cli/commands/completion.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
import { brand } from "../../brand.js";
|
|
2
|
-
import { existsSync } from "node:fs";
|
|
3
|
-
import { runExec, getJob } from "../../lib/exec-delegate.js";
|
|
4
|
-
import { ENGINES, DEFAULT_ENGINE, parseEngine, } from "../../lib/exec-engines.js";
|
|
5
|
-
/**
|
|
6
|
-
* Superfície de CLI da delegação headless — o que o noclaf Studio (Tauri) chama.
|
|
7
|
-
* Contrato: **stdout = JSON** (parseável), **stderr = log ao vivo** (streamável).
|
|
8
|
-
* Com `--events`, o stderr passa a ser NDJSON de eventos tipados; o stdout não muda.
|
|
9
|
-
*/
|
|
10
|
-
function emit(payload) {
|
|
11
|
-
process.stdout.write(`${JSON.stringify(payload, null, 2)}\n`);
|
|
12
|
-
}
|
|
13
|
-
async function execAction(opts) {
|
|
14
|
-
const engine = parseEngine(opts.engine);
|
|
15
|
-
if (!engine) {
|
|
16
|
-
emit({
|
|
17
|
-
error: `engine inválido: ${opts.engine} — suportados: ${ENGINES.join(", ")}`,
|
|
18
|
-
});
|
|
19
|
-
process.exitCode = 1;
|
|
20
|
-
return;
|
|
21
|
-
}
|
|
22
|
-
if (!existsSync(opts.worktree)) {
|
|
23
|
-
emit({ error: `worktree não encontrado: ${opts.worktree}` });
|
|
24
|
-
process.exitCode = 1;
|
|
25
|
-
return;
|
|
26
|
-
}
|
|
27
|
-
const job = await runExec({
|
|
28
|
-
worktree: opts.worktree,
|
|
29
|
-
instruction: opts.instruction,
|
|
30
|
-
engine,
|
|
31
|
-
echo: opts.quiet !== true,
|
|
32
|
-
events: opts.events === true,
|
|
33
|
-
});
|
|
34
|
-
emit(job);
|
|
35
|
-
if (job.state !== "done")
|
|
36
|
-
process.exitCode = 1;
|
|
37
|
-
}
|
|
38
|
-
function registerExec(program) {
|
|
39
|
-
program
|
|
40
|
-
.command("exec")
|
|
41
|
-
.description("Delega a implementação a um agente headless num worktree e aguarda. " +
|
|
42
|
-
"stdout = JSON do resultado; stderr = log ao vivo.")
|
|
43
|
-
.requiredOption("--worktree <path>", "worktree onde implementar (criado pelo /implement)")
|
|
44
|
-
.requiredOption("--instruction <texto>", "o que implementar (ticket + critérios)")
|
|
45
|
-
.option("--engine <engine>", `agente de execução (${ENGINES.join(" | ")})`, DEFAULT_ENGINE)
|
|
46
|
-
.option("--quiet", "não streama o log do agente no stderr")
|
|
47
|
-
.option("--events", "stderr vira stream NDJSON de eventos tipados do run (stdout intocado; ignora --quiet)")
|
|
48
|
-
.action(execAction);
|
|
49
|
-
}
|
|
50
|
-
// Comando separado (não subcomando): opções `required` do pai bloqueariam o parse.
|
|
51
|
-
function registerExecStatus(program) {
|
|
52
|
-
program
|
|
53
|
-
.command("exec-status <jobId>")
|
|
54
|
-
.description(`Estado de um job de execução (\`${brand.name} exec\`), em JSON`)
|
|
55
|
-
.action((jobId) => {
|
|
56
|
-
const job = getJob(jobId);
|
|
57
|
-
if (!job) {
|
|
58
|
-
emit({ error: `job não encontrado: ${jobId}` });
|
|
59
|
-
process.exitCode = 1;
|
|
60
|
-
return;
|
|
61
|
-
}
|
|
62
|
-
emit(job);
|
|
63
|
-
});
|
|
64
|
-
}
|
|
65
|
-
export function registerExecCommand(program) {
|
|
66
|
-
registerExec(program);
|
|
67
|
-
registerExecStatus(program);
|
|
68
|
-
}
|
|
69
|
-
//# sourceMappingURL=exec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"exec.js","sourceRoot":"","sources":["../../../src/cli/commands/exec.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EACL,OAAO,EACP,cAAc,EACd,WAAW,GACZ,MAAM,2BAA2B,CAAC;AAEnC;;;;GAIG;AAEH,SAAS,IAAI,CAAC,OAAgB;IAC5B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAChE,CAAC;AAUD,KAAK,UAAU,UAAU,CAAC,IAAiB;IACzC,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACxC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,IAAI,CAAC;YACH,KAAK,EAAE,oBAAoB,IAAI,CAAC,MAAM,kBAAkB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;SAC7E,CAAC,CAAC;QACH,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IACD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC/B,IAAI,CAAC,EAAE,KAAK,EAAE,4BAA4B,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAC7D,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC;QACxB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,MAAM;QACN,IAAI,EAAE,IAAI,CAAC,KAAK,KAAK,IAAI;QACzB,MAAM,EAAE,IAAI,CAAC,MAAM,KAAK,IAAI;KAC7B,CAAC,CAAC;IAEH,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,IAAI,GAAG,CAAC,KAAK,KAAK,MAAM;QAAE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACjD,CAAC;AAED,SAAS,YAAY,CAAC,OAAgB;IACpC,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CACV,sEAAsE;QACpE,mDAAmD,CACtD;SACA,cAAc,CACb,mBAAmB,EACnB,oDAAoD,CACrD;SACA,cAAc,CACb,uBAAuB,EACvB,wCAAwC,CACzC;SACA,MAAM,CACL,mBAAmB,EACnB,uBAAuB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAC7C,cAAc,CACf;SACA,MAAM,CAAC,SAAS,EAAE,uCAAuC,CAAC;SAC1D,MAAM,CACL,UAAU,EACV,uFAAuF,CACxF;SACA,MAAM,CAAC,UAAU,CAAC,CAAC;AACxB,CAAC;AAED,mFAAmF;AACnF,SAAS,kBAAkB,CAAC,OAAgB;IAC1C,OAAO;SACJ,OAAO,CAAC,qBAAqB,CAAC;SAC9B,WAAW,CAAC,mCAAmC,KAAK,CAAC,IAAI,mBAAmB,CAAC;SAC7E,MAAM,CAAC,CAAC,KAAa,EAAE,EAAE;QACxB,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAC1B,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,IAAI,CAAC,EAAE,KAAK,EAAE,uBAAuB,KAAK,EAAE,EAAE,CAAC,CAAC;YAChD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC,CAAC,CAAC;AACP,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAClD,YAAY,CAAC,OAAO,CAAC,CAAC;IACtB,kBAAkB,CAAC,OAAO,CAAC,CAAC;AAC9B,CAAC"}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { brand } from "../../../brand.js";
|
|
2
|
-
import { runSkillAgent, skillPrompt } from "../../../lib/skill-agent.js";
|
|
3
|
-
/**
|
|
4
|
-
* Análise/pré-preenchimento do repo no `--apply`: aciona a skill `init-sdd` num
|
|
5
|
-
* agente headless (mesmo spawn do `patterns.ts`). É **pré-preenchimento** — o init
|
|
6
|
-
* já é utilizável sem ela —, então quem chama trata falha como aviso. A saída do
|
|
7
|
-
* agente vai pro **stderr**: o stdout do apply é JSON puro.
|
|
8
|
-
*/
|
|
9
|
-
const SKILL_ID = "init-sdd";
|
|
10
|
-
const FALLBACK_PROMPT = `Faça o scaffold da estrutura de spec-driven dev no repositório atual (\`docs/specs\`, \`docs/bugs\`, \`docs/decisions\`, \`docs/_templates\` e um \`AGENTS.md\` na raiz) de forma idempotente: arquivo que já existe é PULADO, nunca sobrescrito. Depois analise o repo (somente-leitura no código) pra pré-preencher o \`AGENTS.md\` com a stack e as convenções REAIS e semear specs das áreas inacabadas. Não escreva nada fora de \`docs/\` e do \`AGENTS.md\`. Termine com um resumo de created/skipped e PARE.`;
|
|
11
|
-
// A skill abre perguntando (Fase 0) e aqui ninguém responde — a resposta vai dada no prompt.
|
|
12
|
-
const HEADLESS_ANSWER = `IMPORTANTE — você foi disparado por \`${brand.name} init --apply\`, de forma NÃO INTERATIVA: não pergunte nada e não espere resposta nenhuma. Considere a Fase 0 já respondida com **(b) scaffold + análise**, produzindo **stack**, **overview** e **specs** (sem ADRs). Siga o resto exatamente como está escrito e PARE no fim.`;
|
|
13
|
-
/** Prompt = corpo da skill `init-sdd` + a Fase 0 já respondida (headless). */
|
|
14
|
-
export function initAnalysisPrompt() {
|
|
15
|
-
return `${skillPrompt(SKILL_ID, FALLBACK_PROMPT)}\n\n---\n\n${HEADLESS_ANSWER}`;
|
|
16
|
-
}
|
|
17
|
-
/** Aciona o `init-sdd` no `cwd`, com a saída do agente desviada pro stderr. */
|
|
18
|
-
export function runInitAnalysis(cwd) {
|
|
19
|
-
return runSkillAgent(initAnalysisPrompt(), { cwd, stdoutFd: 2 });
|
|
20
|
-
}
|
|
21
|
-
//# sourceMappingURL=analyze-step.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"analyze-step.js","sourceRoot":"","sources":["../../../../src/cli/commands/init/analyze-step.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,WAAW,EAAqB,MAAM,6BAA6B,CAAC;AAE5F;;;;;GAKG;AAEH,MAAM,QAAQ,GAAG,UAAU,CAAC;AAE5B,MAAM,eAAe,GAAG,sfAAsf,CAAC;AAE/gB,6FAA6F;AAC7F,MAAM,eAAe,GAAG,yCAAyC,KAAK,CAAC,IAAI,iRAAiR,CAAC;AAE7V,8EAA8E;AAC9E,MAAM,UAAU,kBAAkB;IAChC,OAAO,GAAG,WAAW,CAAC,QAAQ,EAAE,eAAe,CAAC,cAAc,eAAe,EAAE,CAAC;AAClF,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,eAAe,CAAC,GAAW;IACzC,OAAO,aAAa,CAAC,kBAAkB,EAAE,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;AACnE,CAAC"}
|