@noclaf/cli 0.4.14 → 0.4.15
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/dist/auth.js +2 -1
- package/dist/auth.js.map +1 -1
- package/dist/brand.js +82 -0
- package/dist/brand.js.map +1 -0
- package/dist/cli/commands/auth.js +91 -58
- package/dist/cli/commands/auth.js.map +1 -1
- package/dist/cli/commands/init/auth-step.js +48 -0
- package/dist/cli/commands/init/auth-step.js.map +1 -0
- package/dist/cli/commands/init/clients-step.js +76 -0
- package/dist/cli/commands/init/clients-step.js.map +1 -0
- package/dist/cli/commands/init/context-step.js +66 -0
- package/dist/cli/commands/init/context-step.js.map +1 -0
- package/dist/cli/commands/init/index.js +67 -0
- package/dist/cli/commands/init/index.js.map +1 -0
- package/dist/cli/commands/init/project-step.js +105 -0
- package/dist/cli/commands/init/project-step.js.map +1 -0
- package/dist/cli/commands/init/provision-step.js +76 -0
- package/dist/cli/commands/init/provision-step.js.map +1 -0
- package/dist/cli/flows/clients.js +27 -17
- package/dist/cli/flows/clients.js.map +1 -1
- package/dist/cli.js +5 -5
- package/dist/cli.js.map +1 -1
- package/dist/config.js +19 -11
- package/dist/config.js.map +1 -1
- package/dist/constants.js +7 -8
- package/dist/constants.js.map +1 -1
- package/dist/lib/autopull.js +13 -0
- package/dist/lib/autopull.js.map +1 -0
- package/dist/lib/client-configs.js +37 -25
- package/dist/lib/client-configs.js.map +1 -1
- package/dist/lib/cowork-extension.js +42 -30
- package/dist/lib/cowork-extension.js.map +1 -1
- package/dist/lib/dependencies.js +83 -247
- package/dist/lib/dependencies.js.map +1 -1
- package/dist/lib/dependency-install.js +163 -0
- package/dist/lib/dependency-install.js.map +1 -0
- package/dist/lib/exec-delegate.js +2 -2
- package/dist/lib/exec-delegate.js.map +1 -1
- package/dist/lib/exec-engines.js +7 -6
- package/dist/lib/exec-engines.js.map +1 -1
- package/dist/lib/provision-apply.js +214 -0
- package/dist/lib/provision-apply.js.map +1 -0
- package/dist/lib/provision-collect.js +47 -0
- package/dist/lib/provision-collect.js.map +1 -0
- package/dist/lib/provision.js +8 -253
- package/dist/lib/provision.js.map +1 -1
- package/dist/lib/require-config.js +3 -2
- package/dist/lib/require-config.js.map +1 -1
- package/dist/lib/skills-cache.js +9 -8
- package/dist/lib/skills-cache.js.map +1 -1
- package/dist/lib/skills.js +30 -16
- package/dist/lib/skills.js.map +1 -1
- package/dist/lib/telemetry.js +2 -1
- package/dist/lib/telemetry.js.map +1 -1
- package/dist/lib/version-check.js +3 -2
- package/dist/lib/version-check.js.map +1 -1
- package/dist/mcp-server.js +107 -79
- package/dist/mcp-server.js.map +1 -1
- package/dist/tools/comment-task.js +32 -32
- package/dist/tools/comment-task.js.map +1 -1
- package/dist/tools/create-task.js +92 -101
- package/dist/tools/create-task.js.map +1 -1
- package/dist/tools/delegate-exec.js +4 -3
- package/dist/tools/delegate-exec.js.map +1 -1
- package/dist/tools/end-allocation.js +19 -32
- package/dist/tools/end-allocation.js.map +1 -1
- package/dist/tools/end-task-allocation.js +17 -26
- package/dist/tools/end-task-allocation.js.map +1 -1
- package/dist/tools/exec-status.js +4 -3
- package/dist/tools/exec-status.js.map +1 -1
- package/dist/tools/get-active-allocation.js +53 -60
- package/dist/tools/get-active-allocation.js.map +1 -1
- package/dist/tools/get-context.js +4 -3
- package/dist/tools/get-context.js.map +1 -1
- package/dist/tools/get-task.js +144 -142
- package/dist/tools/get-task.js.map +1 -1
- package/dist/tools/list-my-allocations.js +35 -43
- package/dist/tools/list-my-allocations.js.map +1 -1
- package/dist/tools/list-projects.js +3 -2
- package/dist/tools/list-projects.js.map +1 -1
- package/dist/tools/list-tasks.js +117 -124
- package/dist/tools/list-tasks.js.map +1 -1
- package/dist/tools/move-task.js +37 -39
- package/dist/tools/move-task.js.map +1 -1
- package/dist/tools/plan.js +3 -2
- package/dist/tools/plan.js.map +1 -1
- package/dist/tools/record-delivery.js +4 -3
- package/dist/tools/record-delivery.js.map +1 -1
- package/dist/tools/set-project.js +9 -4
- package/dist/tools/set-project.js.map +1 -1
- package/dist/tools/start-allocation.js +16 -26
- package/dist/tools/start-allocation.js.map +1 -1
- package/dist/tools/start-task-allocation.js +72 -92
- package/dist/tools/start-task-allocation.js.map +1 -1
- package/dist/tools/update-task.js +149 -168
- package/dist/tools/update-task.js.map +1 -1
- package/dist/tools/validate-plan.js +3 -2
- package/dist/tools/validate-plan.js.map +1 -1
- package/package.json +1 -1
- package/dist/cli/commands/init.js +0 -336
- package/dist/cli/commands/init.js.map +0 -1
- package/dist/logo.js +0 -17
- package/dist/logo.js.map +0 -1
package/dist/lib/provision.js
CHANGED
|
@@ -1,233 +1,14 @@
|
|
|
1
|
-
import { existsSync
|
|
2
|
-
import { createHash } from "node:crypto";
|
|
3
|
-
import { homedir } from "node:os";
|
|
4
|
-
import { dirname, join, relative, resolve, sep } from "node:path";
|
|
5
|
-
import { VERSION } from "../version.js";
|
|
1
|
+
import { existsSync } from "node:fs";
|
|
6
2
|
import { claudeTarget } from "./targets.js";
|
|
7
3
|
import { filterDocsForSurface, skillsDir } from "./skills.js";
|
|
8
|
-
import { filterForSelection, flattenSelection
|
|
4
|
+
import { filterForSelection, flattenSelection } from "./sections.js";
|
|
5
|
+
import { collectSkillFiles } from "./provision-collect.js";
|
|
6
|
+
import { applyProvision } from "./provision-apply.js";
|
|
9
7
|
/**
|
|
10
|
-
* Provisiona
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
* atualiza os arquivos dele, nunca sobrescreve os do worker (a menos que `force`).
|
|
8
|
+
* Provisiona skills/commands/agents do noclaf (o MCP não grava em `~/.claude`; a CLI
|
|
9
|
+
* `sync`/`init` chama `provision()`). Idempotente via manifesto. Coleta em
|
|
10
|
+
* `provision-collect.ts`, motor em `provision-apply.ts` — ambos reexportados daqui.
|
|
14
11
|
*/
|
|
15
|
-
/** Subpastas do pacote `@noclaf/skills` espelhadas em `~/.claude`. */
|
|
16
|
-
const SYNCED_SUBDIRS = ["commands", "skills", "agents"];
|
|
17
|
-
/** Basenames que nunca são copiados pro destino (READMEs são só do repo). */
|
|
18
|
-
const IGNORED_BASENAMES = new Set([".gitkeep", ".DS_Store", "README.md"]);
|
|
19
|
-
export const MANIFEST_NAME = ".noclaf-provision.json";
|
|
20
|
-
function defaultTargetDir() {
|
|
21
|
-
return join(homedir(), ".claude");
|
|
22
|
-
}
|
|
23
|
-
function sha256(buf) {
|
|
24
|
-
return createHash("sha256").update(buf).digest("hex");
|
|
25
|
-
}
|
|
26
|
-
/** Lista arquivos sob `dir` recursivamente, paths relativos a `dir` em estilo POSIX. */
|
|
27
|
-
function listFilesRecursive(dir) {
|
|
28
|
-
const out = [];
|
|
29
|
-
const walk = (abs) => {
|
|
30
|
-
for (const entry of readdirSync(abs, { withFileTypes: true })) {
|
|
31
|
-
if (entry.name === ".DS_Store")
|
|
32
|
-
continue;
|
|
33
|
-
const childAbs = join(abs, entry.name);
|
|
34
|
-
if (entry.isDirectory())
|
|
35
|
-
walk(childAbs);
|
|
36
|
-
else if (entry.isFile())
|
|
37
|
-
out.push(relative(dir, childAbs).split(sep).join("/"));
|
|
38
|
-
}
|
|
39
|
-
};
|
|
40
|
-
walk(dir);
|
|
41
|
-
return out;
|
|
42
|
-
}
|
|
43
|
-
function readManifest(path) {
|
|
44
|
-
if (!existsSync(path))
|
|
45
|
-
return null;
|
|
46
|
-
try {
|
|
47
|
-
const parsed = JSON.parse(readFileSync(path, "utf-8"));
|
|
48
|
-
if (parsed && typeof parsed === "object" && parsed.files)
|
|
49
|
-
return parsed;
|
|
50
|
-
}
|
|
51
|
-
catch {
|
|
52
|
-
// manifesto corrompido → trata como ausente e reconstrói
|
|
53
|
-
}
|
|
54
|
-
return null;
|
|
55
|
-
}
|
|
56
|
-
/** Coleta os arquivos sincronizáveis do pacote (só as subpastas conhecidas). */
|
|
57
|
-
function collectSkillFiles(dir) {
|
|
58
|
-
const files = [];
|
|
59
|
-
for (const sub of SYNCED_SUBDIRS) {
|
|
60
|
-
const subDir = join(dir, sub);
|
|
61
|
-
if (!existsSync(subDir))
|
|
62
|
-
continue;
|
|
63
|
-
for (const rel of listFilesRecursive(subDir)) {
|
|
64
|
-
const base = rel.split("/").pop() ?? rel;
|
|
65
|
-
if (IGNORED_BASENAMES.has(base))
|
|
66
|
-
continue;
|
|
67
|
-
const abs = join(subDir, rel);
|
|
68
|
-
const content = readFileSync(abs);
|
|
69
|
-
files.push({ relPath: `${sub}/${rel}`, content, hash: sha256(content) });
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
return files;
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* Se algum componente de `dir` é um symlink cujo alvo não existe (comum quando o
|
|
76
|
-
* usuário gerencia `~/.claude` via dotfiles com links), materializa o alvo do link
|
|
77
|
-
* em vez de deixar o `mkdir -p` estourar ENOENT. Retorna `true` se materializou
|
|
78
|
-
* algo (aí vale retentar o mkdir). Escrever depois grava *através* do symlink, no
|
|
79
|
-
* destino dos dotfiles — que é a intenção do link.
|
|
80
|
-
*/
|
|
81
|
-
function materializeDanglingLink(dir) {
|
|
82
|
-
let cursor = dir;
|
|
83
|
-
for (;;) {
|
|
84
|
-
let info;
|
|
85
|
-
try {
|
|
86
|
-
info = lstatSync(cursor);
|
|
87
|
-
}
|
|
88
|
-
catch {
|
|
89
|
-
// cursor não existe (parent pendurado) → sobe um nível.
|
|
90
|
-
const parent = dirname(cursor);
|
|
91
|
-
if (parent === cursor)
|
|
92
|
-
return false;
|
|
93
|
-
cursor = parent;
|
|
94
|
-
continue;
|
|
95
|
-
}
|
|
96
|
-
if (info.isSymbolicLink()) {
|
|
97
|
-
const target = resolve(dirname(cursor), readlinkSync(cursor));
|
|
98
|
-
if (existsSync(target))
|
|
99
|
-
return false; // link ok — o ENOENT veio de outro lugar
|
|
100
|
-
mkdirSync(target, { recursive: true });
|
|
101
|
-
return true;
|
|
102
|
-
}
|
|
103
|
-
return false; // cursor existe e é real → não há link pendurado acima
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
/** `mkdir -p` tolerante a symlinks pendurados de dotfiles (ver acima). */
|
|
107
|
-
export function ensureDir(dir) {
|
|
108
|
-
for (let attempt = 0; attempt < 40; attempt++) {
|
|
109
|
-
try {
|
|
110
|
-
mkdirSync(dir, { recursive: true });
|
|
111
|
-
return;
|
|
112
|
-
}
|
|
113
|
-
catch (err) {
|
|
114
|
-
if (err.code !== "ENOENT")
|
|
115
|
-
throw err;
|
|
116
|
-
if (!materializeDanglingLink(dir))
|
|
117
|
-
throw err;
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
mkdirSync(dir, { recursive: true });
|
|
121
|
-
}
|
|
122
|
-
function writeFile(targetAbs, content) {
|
|
123
|
-
ensureDir(dirname(targetAbs));
|
|
124
|
-
writeFileSync(targetAbs, content);
|
|
125
|
-
}
|
|
126
|
-
/**
|
|
127
|
-
* Núcleo do provisionamento: aplica `docs` no destino, idempotente e não-destrutivo
|
|
128
|
-
* via manifesto. Retorna o plano por arquivo.
|
|
129
|
-
*/
|
|
130
|
-
export function applyProvision(docs, options = {}) {
|
|
131
|
-
const dryRun = options.dryRun ?? false;
|
|
132
|
-
const force = options.force ?? false;
|
|
133
|
-
const prune = options.prune ?? true;
|
|
134
|
-
const targetDir = options.targetDir ?? defaultTargetDir();
|
|
135
|
-
const manifestPath = join(targetDir, MANIFEST_NAME);
|
|
136
|
-
const oldFiles = readManifest(manifestPath)?.files ?? {};
|
|
137
|
-
const files = docs.map((d) => ({
|
|
138
|
-
relPath: d.relPath,
|
|
139
|
-
content: d.content,
|
|
140
|
-
hash: sha256(d.content),
|
|
141
|
-
}));
|
|
142
|
-
const incomingSet = new Set(files.map((f) => f.relPath));
|
|
143
|
-
const results = [];
|
|
144
|
-
const newFiles = {};
|
|
145
|
-
for (const f of files) {
|
|
146
|
-
const targetAbs = join(targetDir, f.relPath);
|
|
147
|
-
// Um arquivo problemático (ex.: symlink de dotfiles quebrado) vira um resultado
|
|
148
|
-
// `write-error` e a sincronização segue — nunca aborta o resto por causa de um.
|
|
149
|
-
try {
|
|
150
|
-
if (!existsSync(targetAbs)) {
|
|
151
|
-
if (!dryRun)
|
|
152
|
-
writeFile(targetAbs, f.content);
|
|
153
|
-
results.push({ relPath: f.relPath, action: "create" });
|
|
154
|
-
newFiles[f.relPath] = f.hash;
|
|
155
|
-
continue;
|
|
156
|
-
}
|
|
157
|
-
const existingHash = sha256(readFileSync(targetAbs));
|
|
158
|
-
if (existingHash === f.hash) {
|
|
159
|
-
results.push({ relPath: f.relPath, action: "unchanged" });
|
|
160
|
-
newFiles[f.relPath] = f.hash;
|
|
161
|
-
continue;
|
|
162
|
-
}
|
|
163
|
-
// Divergente. Só atualizamos se o arquivo era nosso e o worker não mexeu,
|
|
164
|
-
// ou se ele pediu --force.
|
|
165
|
-
const wasOursUntouched = oldFiles[f.relPath] === existingHash;
|
|
166
|
-
if (wasOursUntouched || force) {
|
|
167
|
-
if (!dryRun)
|
|
168
|
-
writeFile(targetAbs, f.content);
|
|
169
|
-
results.push({
|
|
170
|
-
relPath: f.relPath,
|
|
171
|
-
action: "update",
|
|
172
|
-
detail: wasOursUntouched
|
|
173
|
-
? undefined
|
|
174
|
-
: "forçado sobre arquivo divergente",
|
|
175
|
-
});
|
|
176
|
-
newFiles[f.relPath] = f.hash;
|
|
177
|
-
}
|
|
178
|
-
else {
|
|
179
|
-
results.push({
|
|
180
|
-
relPath: f.relPath,
|
|
181
|
-
action: "skip-conflict",
|
|
182
|
-
detail: oldFiles[f.relPath] !== undefined
|
|
183
|
-
? "editado localmente"
|
|
184
|
-
: "arquivo de terceiros",
|
|
185
|
-
});
|
|
186
|
-
// Não reivindica propriedade: fica de fora do novo manifesto.
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
catch (err) {
|
|
190
|
-
results.push({
|
|
191
|
-
relPath: f.relPath,
|
|
192
|
-
action: "write-error",
|
|
193
|
-
detail: err.message,
|
|
194
|
-
});
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
// Prune: o que era nosso mas não veio nesta fonte.
|
|
198
|
-
if (prune) {
|
|
199
|
-
for (const [relPath, oldHash] of Object.entries(oldFiles)) {
|
|
200
|
-
if (incomingSet.has(relPath))
|
|
201
|
-
continue;
|
|
202
|
-
const targetAbs = join(targetDir, relPath);
|
|
203
|
-
if (!existsSync(targetAbs))
|
|
204
|
-
continue;
|
|
205
|
-
const existingHash = sha256(readFileSync(targetAbs));
|
|
206
|
-
if (existingHash === oldHash) {
|
|
207
|
-
if (!dryRun)
|
|
208
|
-
rmSync(targetAbs);
|
|
209
|
-
results.push({ relPath, action: "prune" });
|
|
210
|
-
}
|
|
211
|
-
else {
|
|
212
|
-
results.push({
|
|
213
|
-
relPath,
|
|
214
|
-
action: "prune-kept",
|
|
215
|
-
detail: "modificado localmente — mantido",
|
|
216
|
-
});
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
if (!dryRun) {
|
|
221
|
-
const manifest = {
|
|
222
|
-
version: VERSION,
|
|
223
|
-
generator: "@noclaf/cli",
|
|
224
|
-
files: newFiles,
|
|
225
|
-
};
|
|
226
|
-
mkdirSync(targetDir, { recursive: true });
|
|
227
|
-
writeFileSync(manifestPath, JSON.stringify(manifest, null, 2) + "\n", "utf-8");
|
|
228
|
-
}
|
|
229
|
-
return { targetDir, version: VERSION, dryRun, files: results };
|
|
230
|
-
}
|
|
231
12
|
/**
|
|
232
13
|
* Copia/atualiza o conteúdo do pacote `@noclaf/skills` no destino.
|
|
233
14
|
* (`noclaf sync` / `noclaf init`.)
|
|
@@ -251,31 +32,5 @@ export function provision(options = {}) {
|
|
|
251
32
|
targetDir: options.targetDir ?? target.targetDir(),
|
|
252
33
|
});
|
|
253
34
|
}
|
|
254
|
-
|
|
255
|
-
export function uninstallProvision(options = {}) {
|
|
256
|
-
const dryRun = options.dryRun ?? false;
|
|
257
|
-
const targetDir = options.targetDir ?? defaultTargetDir();
|
|
258
|
-
const manifestPath = join(targetDir, MANIFEST_NAME);
|
|
259
|
-
const manifest = readManifest(manifestPath);
|
|
260
|
-
const removed = [];
|
|
261
|
-
const kept = [];
|
|
262
|
-
if (manifest) {
|
|
263
|
-
for (const [relPath, hash] of Object.entries(manifest.files)) {
|
|
264
|
-
const targetAbs = join(targetDir, relPath);
|
|
265
|
-
if (!existsSync(targetAbs))
|
|
266
|
-
continue;
|
|
267
|
-
if (sha256(readFileSync(targetAbs)) === hash) {
|
|
268
|
-
if (!dryRun)
|
|
269
|
-
rmSync(targetAbs);
|
|
270
|
-
removed.push(relPath);
|
|
271
|
-
}
|
|
272
|
-
else {
|
|
273
|
-
kept.push(relPath);
|
|
274
|
-
}
|
|
275
|
-
}
|
|
276
|
-
if (!dryRun && existsSync(manifestPath))
|
|
277
|
-
rmSync(manifestPath);
|
|
278
|
-
}
|
|
279
|
-
return { targetDir, removed, kept, dryRun };
|
|
280
|
-
}
|
|
35
|
+
export { MANIFEST_NAME, applyProvision, ensureDir, uninstallProvision, } from "./provision-apply.js";
|
|
281
36
|
//# sourceMappingURL=provision.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provision.js","sourceRoot":"","sources":["../../src/lib/provision.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"provision.js","sourceRoot":"","sources":["../../src/lib/provision.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,YAAY,EAAwB,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAkB,MAAM,eAAe,CAAC;AACrF,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAA+C,MAAM,sBAAsB,CAAC;AAEnG;;;;GAIG;AAEH;;;GAGG;AACH,MAAM,UAAU,SAAS,CACvB,UAAkF,EAAE;IAEpF,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,YAAY,CAAC;IAC9C,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,IAAI,SAAS,EAAE,CAAC;IAC7C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CACb,sCAAsC,GAAG,oCAAoC,CAC9E,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACjD,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,OAAO,EAAE,CAAC,CAAC,OAAO;KACnB,CAAC,CAAC,CAAC;IACJ,MAAM,MAAM,GAAG,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAC9D,MAAM,IAAI,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IAC3D,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACrC,OAAO,cAAc,CAAC,IAAI,EAAE;QAC1B,GAAG,OAAO;QACV,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,EAAE;KACnD,CAAC,CAAC;AACL,CAAC;AAED,OAAO,EACL,aAAa,EACb,cAAc,EACd,SAAS,EACT,kBAAkB,GAOnB,MAAM,sBAAsB,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { UUID_REGEX } from '../config.js';
|
|
2
2
|
import { errorResult } from './tool-result.js';
|
|
3
3
|
import { loadActiveProjectId } from './active-project.js';
|
|
4
|
+
import { brand } from '../brand.js';
|
|
4
5
|
/**
|
|
5
6
|
* Resolve o projeto efetivo de uma chamada, na ordem:
|
|
6
7
|
* 1. project_id explícito passado na tool (override por chamada)
|
|
@@ -13,8 +14,8 @@ import { loadActiveProjectId } from './active-project.js';
|
|
|
13
14
|
export function resolveProjectConfig(ctx, explicitProjectId) {
|
|
14
15
|
const projectId = explicitProjectId ?? loadActiveProjectId() ?? ctx.config?.project_id;
|
|
15
16
|
if (!projectId) {
|
|
16
|
-
return errorResult(
|
|
17
|
-
|
|
17
|
+
return errorResult(`Nenhum projeto selecionado. Use \`${brand.toolPrefix}list_projects\` para ver os seus e ` +
|
|
18
|
+
`\`${brand.toolPrefix}set_project\` para escolher um (ou passe \`project_id\` direto na chamada).`);
|
|
18
19
|
}
|
|
19
20
|
if (!UUID_REGEX.test(projectId)) {
|
|
20
21
|
return errorResult(`project_id inválido (UUID esperado): ${projectId}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"require-config.js","sourceRoot":"","sources":["../../src/lib/require-config.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAsB,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"require-config.js","sourceRoot":"","sources":["../../src/lib/require-config.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAsB,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC;;;;;;;;GAQG;AACH,MAAM,UAAU,oBAAoB,CAClC,GAAgB,EAChB,iBAA0B;IAE1B,MAAM,SAAS,GAAG,iBAAiB,IAAI,mBAAmB,EAAE,IAAI,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC;IAEvF,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,WAAW,CAChB,qCAAqC,KAAK,CAAC,UAAU,qCAAqC;YACxF,KAAK,KAAK,CAAC,UAAU,6EAA6E,CACrG,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QAChC,OAAO,WAAW,CAAC,wCAAwC,SAAS,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED,MAAM,MAAM,GAAkB,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;IACxD,IAAI,SAAS,KAAK,GAAG,CAAC,MAAM,EAAE,UAAU,IAAI,GAAG,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC;QACtE,MAAM,CAAC,aAAa,GAAG,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC;IAClD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,SAAS,IAAI,KAAK,CAAC;AAC3E,CAAC"}
|
package/dist/lib/skills-cache.js
CHANGED
|
@@ -1,27 +1,28 @@
|
|
|
1
1
|
import { existsSync, mkdirSync, rmSync, cpSync, readdirSync, readFileSync, writeFileSync, } from 'node:fs';
|
|
2
|
-
import {
|
|
2
|
+
import { tmpdir } from 'node:os';
|
|
3
3
|
import { join } from 'node:path';
|
|
4
4
|
import AdmZip from 'adm-zip';
|
|
5
|
+
import { brand, env, homePath } from '../brand.js';
|
|
5
6
|
/**
|
|
6
7
|
* Skills como repo aberto (não pacote npm): o CLI baixa o zipball do GitHub pro
|
|
7
8
|
* cache local (`~/.noclaf/skills`) e lê de lá — `skillsDir()` resolve pra cá sem
|
|
8
9
|
* checkout, e `noclaf sync` atualiza o cache sem republicar o CLI.
|
|
9
10
|
*/
|
|
10
|
-
const DEFAULT_REPO =
|
|
11
|
-
const DEFAULT_REF =
|
|
11
|
+
const DEFAULT_REPO = brand.skillsRepo;
|
|
12
|
+
const DEFAULT_REF = brand.skillsRef;
|
|
12
13
|
/** `owner/repo` do repo de skills. Sobrescrevível via `NOCLAF_SKILLS_REPO`. */
|
|
13
14
|
export function skillsRepo() {
|
|
14
|
-
return
|
|
15
|
+
return env('SKILLS_REPO') || DEFAULT_REPO;
|
|
15
16
|
}
|
|
16
17
|
/** Branch/tag a baixar. Sobrescrevível via `NOCLAF_SKILLS_REF`. */
|
|
17
18
|
export function skillsRef() {
|
|
18
|
-
return
|
|
19
|
+
return env('SKILLS_REF') || DEFAULT_REF;
|
|
19
20
|
}
|
|
20
21
|
/** Raiz do cache local (o conteúdo do repo: `commands/`, `skills/`, `hooks/`, …). */
|
|
21
22
|
export function skillsCacheDir() {
|
|
22
|
-
return
|
|
23
|
+
return homePath('skills');
|
|
23
24
|
}
|
|
24
|
-
const MARKER =
|
|
25
|
+
const MARKER = `${brand.homeDirName}-skills.json`;
|
|
25
26
|
/** Metadados do último fetch (repo/ref/quando). `null` se o cache não existe. */
|
|
26
27
|
export function cacheMeta() {
|
|
27
28
|
const p = join(skillsCacheDir(), MARKER);
|
|
@@ -54,7 +55,7 @@ export async function fetchSkills(opts = {}) {
|
|
|
54
55
|
return { status: 'cached', dir, repo, ref };
|
|
55
56
|
}
|
|
56
57
|
const url = `https://codeload.github.com/${repo}/zip/refs/heads/${ref}`;
|
|
57
|
-
const staging = join(tmpdir(),
|
|
58
|
+
const staging = join(tmpdir(), `${brand.name}-skills-${process.pid}-${Date.now()}`);
|
|
58
59
|
const timeoutMs = opts.timeoutMs ?? DEFAULT_TIMEOUT_MS;
|
|
59
60
|
const ac = new AbortController();
|
|
60
61
|
const timer = setTimeout(() => ac.abort(), timeoutMs);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skills-cache.js","sourceRoot":"","sources":["../../src/lib/skills-cache.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,SAAS,EACT,MAAM,EACN,MAAM,EACN,WAAW,EACX,YAAY,EACZ,aAAa,GACd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"skills-cache.js","sourceRoot":"","sources":["../../src/lib/skills-cache.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/skills.js
CHANGED
|
@@ -3,13 +3,14 @@ import { createRequire } from 'node:module';
|
|
|
3
3
|
import { join, relative, sep, dirname } from 'node:path';
|
|
4
4
|
import { skillsCacheDir, skillsCached } from './skills-cache.js';
|
|
5
5
|
import { includePath } from './sections.js';
|
|
6
|
+
import { env } from '../brand.js';
|
|
6
7
|
/**
|
|
7
8
|
* Diretório do conteúdo das skills. Resolve em ordem: `NOCLAF_SKILLS_DIR`
|
|
8
9
|
* (checkout local), `@noclaf/skills` via require.resolve (dev legado), ou o
|
|
9
10
|
* cache `~/.noclaf/skills` populado por `noclaf sync`/`init` (fluxo padrão).
|
|
10
11
|
*/
|
|
11
12
|
export function skillsDir() {
|
|
12
|
-
const override =
|
|
13
|
+
const override = env('SKILLS_DIR');
|
|
13
14
|
if (override && existsSync(override))
|
|
14
15
|
return override;
|
|
15
16
|
try {
|
|
@@ -42,6 +43,29 @@ function listMarkdown(dir) {
|
|
|
42
43
|
walk(dir);
|
|
43
44
|
return out;
|
|
44
45
|
}
|
|
46
|
+
/**
|
|
47
|
+
* Coleta as linhas indentadas/vazias seguintes (bloco YAML folded `>` ou literal `|`)
|
|
48
|
+
* a partir de `lines[i + 1]`. Retorna o valor já juntado e o novo índice do cursor
|
|
49
|
+
* (última linha consumida) pro chamador continuar o loop dali.
|
|
50
|
+
*/
|
|
51
|
+
function collectBlockValue(lines, i, folded) {
|
|
52
|
+
const collected = [];
|
|
53
|
+
while (i + 1 < lines.length && (lines[i + 1].trim() === '' || /^\s+\S/.test(lines[i + 1]))) {
|
|
54
|
+
collected.push(lines[++i].trim());
|
|
55
|
+
}
|
|
56
|
+
const value = folded
|
|
57
|
+
? collected.join(' ').replace(/\s+/g, ' ').trim()
|
|
58
|
+
: collected.join('\n').trim();
|
|
59
|
+
return { value, nextIndex: i };
|
|
60
|
+
}
|
|
61
|
+
/** Valor entre aspas simples/duplas → sem as aspas. Sem aspas → devolve como veio. */
|
|
62
|
+
function unquote(value) {
|
|
63
|
+
if ((value.startsWith('"') && value.endsWith('"')) ||
|
|
64
|
+
(value.startsWith("'") && value.endsWith("'"))) {
|
|
65
|
+
return value.slice(1, -1);
|
|
66
|
+
}
|
|
67
|
+
return value;
|
|
68
|
+
}
|
|
45
69
|
/**
|
|
46
70
|
* Parser de frontmatter minimalista: `key: value` de uma linha, mais blocos
|
|
47
71
|
* folded (`>`) e literal (`|`). Suficiente pros metadados (não é YAML completo).
|
|
@@ -57,24 +81,14 @@ function parseFrontmatter(raw) {
|
|
|
57
81
|
if (!m)
|
|
58
82
|
continue;
|
|
59
83
|
const key = m[1];
|
|
60
|
-
|
|
84
|
+
const value = m[2].trim();
|
|
61
85
|
if (/^[|>][+-]?$/.test(value)) {
|
|
62
|
-
const
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
collected.push(lines[++i].trim());
|
|
66
|
-
}
|
|
67
|
-
value = folded
|
|
68
|
-
? collected.join(' ').replace(/\s+/g, ' ').trim()
|
|
69
|
-
: collected.join('\n').trim();
|
|
70
|
-
fm[key] = value;
|
|
86
|
+
const block = collectBlockValue(lines, i, value[0] === '>');
|
|
87
|
+
fm[key] = block.value;
|
|
88
|
+
i = block.nextIndex;
|
|
71
89
|
continue;
|
|
72
90
|
}
|
|
73
|
-
|
|
74
|
-
(value.startsWith("'") && value.endsWith("'"))) {
|
|
75
|
-
value = value.slice(1, -1);
|
|
76
|
-
}
|
|
77
|
-
fm[key] = value;
|
|
91
|
+
fm[key] = unquote(value);
|
|
78
92
|
}
|
|
79
93
|
return { frontmatter: fm, body: raw.slice(match[0].length) };
|
|
80
94
|
}
|
package/dist/lib/skills.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skills.js","sourceRoot":"","sources":["../../src/lib/skills.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAAE,WAAW,EAAkB,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"skills.js","sourceRoot":"","sources":["../../src/lib/skills.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAAE,WAAW,EAAkB,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AA0ClC;;;;GAIG;AACH,MAAM,UAAU,SAAS;IACvB,MAAM,QAAQ,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC;IACnC,IAAI,QAAQ,IAAI,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAC;IAEtD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC/C,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC,CAAC;IACjE,CAAC;IAAC,MAAM,CAAC;QACP,+DAA+D;IACjE,CAAC;IAED,IAAI,YAAY,EAAE;QAAE,OAAO,cAAc,EAAE,CAAC;IAE5C,MAAM,IAAI,KAAK,CACb,0EAA0E;QACxE,gEAAgE,CACnE,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,GAAW;IAC/B,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,MAAM,IAAI,GAAG,CAAC,GAAW,EAAQ,EAAE;QACjC,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;YAC9D,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,SAAS;YACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YACvC,IAAI,KAAK,CAAC,WAAW,EAAE;gBAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;iBACnC,IACH,KAAK,CAAC,MAAM,EAAE;gBACd,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;gBACxC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,WAAW;gBAExC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC,CAAC;IACF,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;GAIG;AACH,SAAS,iBAAiB,CACxB,KAAe,EACf,CAAS,EACT,MAAe;IAEf,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3F,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACpC,CAAC;IACD,MAAM,KAAK,GAAG,MAAM;QAClB,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE;QACjD,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;IAChC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;AACjC,CAAC;AAED,sFAAsF;AACtF,SAAS,OAAO,CAAC,KAAa;IAC5B,IACE,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC9C,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAC9C,CAAC;QACD,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,SAAS,gBAAgB,CAAC,GAAW;IACnC,MAAM,EAAE,GAA2B,EAAE,CAAC;IACtC,MAAM,KAAK,GAAG,mCAAmC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5D,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;IAElD,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,CAAC,GAAG,4BAA4B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACtD,IAAI,CAAC,CAAC;YAAE,SAAS;QACjB,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACjB,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAE1B,IAAI,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9B,MAAM,KAAK,GAAG,iBAAiB,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;YAC5D,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;YACtB,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC;YACpB,SAAS;QACX,CAAC;QAED,EAAE,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IACD,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;AAC/D,CAAC;AAED,4DAA4D;AAC5D,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,aAAa,EAAE,OAAO,EAAE,QAAQ,CAAU,CAAC;AACzE,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAS,aAAa,CAAC,CAAC;AAEzD;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,KAAc;IACzC,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,MAAM,IAAI,GAAG,KAAK;SACf,KAAK,CAAC,QAAQ,CAAC;SACf,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;SAClC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACrD,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,aAAa,CAAC,GAAa,EAAE,OAAsB;IACjE,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAC1B,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACvD,CAAC;AAED,yDAAyD;AACzD,MAAM,UAAU,sBAAsB,CAAC,IAAgB,EAAE,OAAsB;IAC7E,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAC1B,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;AACvD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAClC,IAAS,EACT,OAAsB;IAEtB,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAC1B,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACpG,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5F,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACpD,CAAC;AAED,SAAS,WAAW,CAAC,OAAe;IAClC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjC,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACrB,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IACnD,IAAI,GAAG,KAAK,UAAU;QAAE,OAAO,SAAS,CAAC;IACzC,6EAA6E;IAC7E,IAAI,GAAG,KAAK,QAAQ;QAAE,OAAO,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;IACnE,IAAI,GAAG,KAAK,QAAQ;QAAE,OAAO,OAAO,CAAC;IACrC,IAAI,GAAG,KAAK,cAAc;QAAE,OAAO,YAAY,CAAC;IAChD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,uFAAuF;AACvF,SAAS,SAAS,CAAC,OAAe;IAChC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjC,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACrC,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,UAAU,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC3F,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,QAAQ,CAAC,EAAU;IAC1B,OAAO,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AAC3E,CAAC;AAED;;;GAGG;AACH,MAAM,WAAW,GAAG,CAAC,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,CAAU,CAAC;AAE9E,wEAAwE;AACxE,MAAM,UAAU,cAAc,CAAC,MAAc,SAAS,EAAE;IACtD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,sCAAsC,GAAG,oCAAoC,CAAC,CAAC;IACjG,CAAC;IACD,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;YAAE,SAAS;QACnC,KAAK,MAAM,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;YACxC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,IAAI,IAAI,GAAG,EAAE,EAAE,GAAG,EAAE,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;QACxF,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,WAAW,CAAC,KAAe;IACzC,OAAO,KAAK;SACT,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,EAAY,EAAE;QACxC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;QACpD,MAAM,EAAE,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;QAC9B,OAAO;YACL,EAAE;YACF,GAAG,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI;YAC1D,KAAK,EAAE,WAAW,CAAC,KAAK,IAAI,WAAW,CAAC,IAAI,IAAI,QAAQ,CAAC,EAAE,CAAC;YAC5D,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC;YAC1B,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,WAAW,CAAC,WAAW,IAAI,EAAE;YAC1C,WAAW;YACX,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE;YACpB,OAAO,EAAE,YAAY,CAAC,WAAW,CAAC,OAAO,CAAC;SAC3C,CAAC;IACJ,CAAC,CAAC;SACD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,MAAc,SAAS,EAAE;IACrD,OAAO,WAAW,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,SAAqB,EAAE,MAAc,SAAS,EAAE;IAC/E,IAAI,CAAC;QACH,IAAI,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC;QACrE,IAAI,SAAS;YAAE,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;QACzE,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,MAAc,SAAS,EAAE;IAClD,MAAM,GAAG,GAAG,IAAI,GAAG,EAAyB,CAAC;IAC7C,IAAI,CAAC;QACH,KAAK,MAAM,CAAC,IAAI,aAAa,CAAC,GAAG,CAAC;YAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;IAC3D,CAAC;IAAC,MAAM,CAAC;QACP,iDAAiD;IACnD,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
|
package/dist/lib/telemetry.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import { env } from "../brand.js";
|
|
1
2
|
function enabled() {
|
|
2
|
-
return
|
|
3
|
+
return env("TELEMETRY") !== "0" && !env("NO_TELEMETRY");
|
|
3
4
|
}
|
|
4
5
|
/**
|
|
5
6
|
* Items (skills/commands/agents) provisionados a partir do plano do `provision`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../../src/lib/telemetry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../../src/lib/telemetry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAgClC,SAAS,OAAO;IACd,OAAO,GAAG,CAAC,WAAW,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;AAC1D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAC9B,KAA4B,EAC5B,SAAqC;IAErC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,KAAK,GAAW,EAAE,CAAC;IACzB,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,CAAC,GACL,8BAA8B,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;YAC9C,yBAAyB,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;YACzC,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAC1C,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACf,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED,8EAA8E;AAC9E,8EAA8E;AAC9E,MAAM,OAAO,GAAuB,EAAE,CAAC;AAEvC,gEAAgE;AAChE,MAAM,UAAU,KAAK,CAAC,QAAkC,EAAE,KAAiB;IACzE,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO,EAAE;QAAE,OAAO;IACpC,MAAM,CAAC,GAAG,QAAQ,CAAC,SAAS;SACzB,MAAM,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,EAAE,CAAC;SAC3E,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC;SACrB,KAAK,CAAC,GAAG,EAAE;QACV,qCAAqC;IACvC,CAAC,CAAC,CAAC;IACL,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,SAAS,GAAG,IAAI;IACnD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IACjC,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACvD,MAAM,OAAO,CAAC,IAAI,CAAC;QACjB,QAAQ;QACR,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;KAC/D,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -2,6 +2,7 @@ import updateNotifier from 'update-notifier';
|
|
|
2
2
|
import { readFileSync } from 'node:fs';
|
|
3
3
|
import { fileURLToPath } from 'node:url';
|
|
4
4
|
import { dirname, join } from 'node:path';
|
|
5
|
+
import { brand } from '../brand.js';
|
|
5
6
|
function loadPkg() {
|
|
6
7
|
// Este módulo compila pra `dist/lib/version-check.js`, então o package.json fica
|
|
7
8
|
// dois níveis acima (raiz do pacote). Mesmo truque do `packageRoot()` do cowork-extension.
|
|
@@ -77,8 +78,8 @@ export function notifyMcpServerIfUpdate() {
|
|
|
77
78
|
const notifier = startVersionCheck();
|
|
78
79
|
const update = notifier.update;
|
|
79
80
|
if (update && update.latest !== update.current) {
|
|
80
|
-
console.error(`[
|
|
81
|
-
`Atualize com: npm i -g
|
|
81
|
+
console.error(`[${brand.mcpBinName}] nova versão disponível: ${update.current} → ${update.latest}. ` +
|
|
82
|
+
`Atualize com: npm i -g ${brand.packageName}`);
|
|
82
83
|
}
|
|
83
84
|
}
|
|
84
85
|
catch {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version-check.js","sourceRoot":"","sources":["../../src/lib/version-check.ts"],"names":[],"mappings":"AAAA,OAAO,cAAmC,MAAM,iBAAiB,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"version-check.js","sourceRoot":"","sources":["../../src/lib/version-check.ts"],"names":[],"mappings":"AAAA,OAAO,cAAmC,MAAM,iBAAiB,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,SAAS,OAAO;IACd,iFAAiF;IACjF,2FAA2F;IAC3F,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACrD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;IACvD,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAsC,CAAC;AACzF,CAAC;AAED,MAAM,UAAU,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AAEvC;;GAEG;AACH,MAAM,UAAU,iBAAiB;IAC/B,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;IACtB,OAAO,cAAc,CAAC,EAAE,GAAG,EAAE,mBAAmB,EAAE,UAAU,EAAE,CAAC,CAAC;AAClE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB;IAC/B,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,iBAAiB,EAAE,CAAC;QACrC,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IACpD,CAAC;IAAC,MAAM,CAAC;QACP,oEAAoE;IACtE,CAAC;AACH,CAAC;AASD,yEAAyE;AACzE,SAAS,QAAQ,CAAC,CAAS,EAAE,CAAS;IACpC,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IACvE,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IACvE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QAC7C,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;IAChD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,SAAS,GAAG,IAAI;IACnD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;QACtB,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;QAC9D,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,8BAA8B,GAAG,CAAC,IAAI,SAAS,EAAE;YACvE,MAAM,EAAE,UAAU,CAAC,MAAM;YACzB,OAAO,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE;SACxC,CAAC,CAAC;QACH,YAAY,CAAC,KAAK,CAAC,CAAC;QACpB,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC;QACzB,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAyB,CAAC;QACxD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QACzB,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;IACpG,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,uBAAuB;IACrC,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,iBAAiB,EAAE,CAAC;QACrC,MAAM,MAAM,GAA2B,QAAQ,CAAC,MAAM,CAAC;QACvD,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,OAAO,EAAE,CAAC;YAC/C,OAAO,CAAC,KAAK,CACX,IAAI,KAAK,CAAC,UAAU,6BAA6B,MAAM,CAAC,OAAO,MAAM,MAAM,CAAC,MAAM,IAAI;gBACpF,0BAA0B,KAAK,CAAC,WAAW,EAAE,CAChD,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,qBAAqB;IACvB,CAAC;AACH,CAAC"}
|