@nac3/forge-cli 1.18.0 → 1.19.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/dist/bin/yf.d.ts.map +1 -1
- package/dist/bin/yf.js +4 -0
- package/dist/bin/yf.js.map +1 -1
- package/dist/chat/doctrine_digest.d.ts.map +1 -1
- package/dist/chat/doctrine_digest.js +11 -0
- package/dist/chat/doctrine_digest.js.map +1 -1
- package/dist/chat/panel.d.ts.map +1 -1
- package/dist/chat/panel.js +235 -2
- package/dist/chat/panel.js.map +1 -1
- package/dist/chat/project_slug.d.ts.map +1 -1
- package/dist/chat/project_slug.js +29 -0
- package/dist/chat/project_slug.js.map +1 -1
- package/dist/chat/server.d.ts.map +1 -1
- package/dist/chat/server.js +108 -2
- package/dist/chat/server.js.map +1 -1
- package/dist/chat/tools/evidence.d.ts +30 -0
- package/dist/chat/tools/evidence.d.ts.map +1 -0
- package/dist/chat/tools/evidence.js +74 -0
- package/dist/chat/tools/evidence.js.map +1 -0
- package/dist/chat/tools/pending.d.ts +3 -0
- package/dist/chat/tools/pending.d.ts.map +1 -1
- package/dist/chat/tools/pending.js +71 -1
- package/dist/chat/tools/pending.js.map +1 -1
- package/dist/chat/tools/urazuke.d.ts +22 -0
- package/dist/chat/tools/urazuke.d.ts.map +1 -0
- package/dist/chat/tools/urazuke.js +54 -0
- package/dist/chat/tools/urazuke.js.map +1 -0
- package/dist/chat/tools/workflow.d.ts.map +1 -1
- package/dist/chat/tools/workflow.js +5 -3
- package/dist/chat/tools/workflow.js.map +1 -1
- package/dist/chat/tools.d.ts.map +1 -1
- package/dist/chat/tools.js +22 -0
- package/dist/chat/tools.js.map +1 -1
- package/dist/chat/urazuke_section.d.ts +8 -0
- package/dist/chat/urazuke_section.d.ts.map +1 -0
- package/dist/chat/urazuke_section.js +42 -0
- package/dist/chat/urazuke_section.js.map +1 -0
- package/dist/commands/pending.d.ts +1 -0
- package/dist/commands/pending.d.ts.map +1 -1
- package/dist/commands/pending.js +82 -8
- package/dist/commands/pending.js.map +1 -1
- package/dist/commands/start.d.ts +60 -0
- package/dist/commands/start.d.ts.map +1 -0
- package/dist/commands/start.js +265 -0
- package/dist/commands/start.js.map +1 -0
- package/dist/commands/urazuke.d.ts +17 -0
- package/dist/commands/urazuke.d.ts.map +1 -0
- package/dist/commands/urazuke.js +541 -0
- package/dist/commands/urazuke.js.map +1 -0
- package/dist/commands/workflow.js +4 -4
- package/dist/commands/workflow.js.map +1 -1
- package/dist/core/brain_config.d.ts +4 -0
- package/dist/core/brain_config.d.ts.map +1 -1
- package/dist/core/brain_config.js +2 -0
- package/dist/core/brain_config.js.map +1 -1
- package/dist/core/forge_embed.d.ts.map +1 -1
- package/dist/core/forge_embed.js +10 -0
- package/dist/core/forge_embed.js.map +1 -1
- package/dist/core/native_dialogs.d.ts +13 -0
- package/dist/core/native_dialogs.d.ts.map +1 -0
- package/dist/core/native_dialogs.js +111 -0
- package/dist/core/native_dialogs.js.map +1 -0
- package/dist/core/projects.d.ts +6 -0
- package/dist/core/projects.d.ts.map +1 -1
- package/dist/core/projects.js +1 -1
- package/dist/core/projects.js.map +1 -1
- package/dist/docs/doctrine/urazuke.md +38 -0
- package/dist/nac3/internal_manifest.d.ts.map +1 -1
- package/dist/nac3/internal_manifest.js +96 -2
- package/dist/nac3/internal_manifest.js.map +1 -1
- package/dist/pending/store.d.ts +8 -1
- package/dist/pending/store.d.ts.map +1 -1
- package/dist/pending/store.js +8 -1
- package/dist/pending/store.js.map +1 -1
- package/dist/pending/types.d.ts +41 -1
- package/dist/pending/types.d.ts.map +1 -1
- package/dist/pending/types.js.map +1 -1
- package/dist/urazuke/catalog.d.ts +109 -0
- package/dist/urazuke/catalog.d.ts.map +1 -0
- package/dist/urazuke/catalog.js +459 -0
- package/dist/urazuke/catalog.js.map +1 -0
- package/dist/urazuke/close_gate.d.ts +36 -0
- package/dist/urazuke/close_gate.d.ts.map +1 -0
- package/dist/urazuke/close_gate.js +48 -0
- package/dist/urazuke/close_gate.js.map +1 -0
- package/dist/urazuke/current.d.ts +55 -0
- package/dist/urazuke/current.d.ts.map +1 -0
- package/dist/urazuke/current.js +125 -0
- package/dist/urazuke/current.js.map +1 -0
- package/dist/urazuke/cycle.d.ts +91 -0
- package/dist/urazuke/cycle.d.ts.map +1 -0
- package/dist/urazuke/cycle.js +310 -0
- package/dist/urazuke/cycle.js.map +1 -0
- package/dist/urazuke/enabled.d.ts +31 -0
- package/dist/urazuke/enabled.d.ts.map +1 -0
- package/dist/urazuke/enabled.js +51 -0
- package/dist/urazuke/enabled.js.map +1 -0
- package/dist/urazuke/evidence.d.ts +45 -0
- package/dist/urazuke/evidence.d.ts.map +1 -0
- package/dist/urazuke/evidence.js +264 -0
- package/dist/urazuke/evidence.js.map +1 -0
- package/dist/urazuke/gate.d.ts +68 -0
- package/dist/urazuke/gate.d.ts.map +1 -0
- package/dist/urazuke/gate.js +249 -0
- package/dist/urazuke/gate.js.map +1 -0
- package/dist/urazuke/probes.d.ts +13 -0
- package/dist/urazuke/probes.d.ts.map +1 -0
- package/dist/urazuke/probes.js +87 -0
- package/dist/urazuke/probes.js.map +1 -0
- package/dist/urazuke/prompts.generated.d.ts +12 -0
- package/dist/urazuke/prompts.generated.d.ts.map +1 -0
- package/dist/urazuke/prompts.generated.js +135 -0
- package/dist/urazuke/prompts.generated.js.map +1 -0
- package/dist/urazuke/prompts_client.d.ts +44 -0
- package/dist/urazuke/prompts_client.d.ts.map +1 -0
- package/dist/urazuke/prompts_client.js +151 -0
- package/dist/urazuke/prompts_client.js.map +1 -0
- package/dist/urazuke/quality.d.ts +99 -0
- package/dist/urazuke/quality.d.ts.map +1 -0
- package/dist/urazuke/quality.js +269 -0
- package/dist/urazuke/quality.js.map +1 -0
- package/dist/urazuke/receipts.d.ts +90 -0
- package/dist/urazuke/receipts.d.ts.map +1 -0
- package/dist/urazuke/receipts.js +171 -0
- package/dist/urazuke/receipts.js.map +1 -0
- package/dist/urazuke/report.d.ts +23 -0
- package/dist/urazuke/report.d.ts.map +1 -0
- package/dist/urazuke/report.js +62 -0
- package/dist/urazuke/report.js.map +1 -0
- package/dist/urazuke/retro.d.ts +52 -0
- package/dist/urazuke/retro.d.ts.map +1 -0
- package/dist/urazuke/retro.js +145 -0
- package/dist/urazuke/retro.js.map +1 -0
- package/dist/urazuke/section.d.ts +43 -0
- package/dist/urazuke/section.d.ts.map +1 -0
- package/dist/urazuke/section.js +64 -0
- package/dist/urazuke/section.js.map +1 -0
- package/dist/urazuke/stacks.d.ts +42 -0
- package/dist/urazuke/stacks.d.ts.map +1 -0
- package/dist/urazuke/stacks.js +264 -0
- package/dist/urazuke/stacks.js.map +1 -0
- package/dist/urazuke/workflow.d.ts +23 -0
- package/dist/urazuke/workflow.d.ts.map +1 -0
- package/dist/urazuke/workflow.js +64 -0
- package/dist/urazuke/workflow.js.map +1 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/workflow/config.d.ts +9 -4
- package/dist/workflow/config.d.ts.map +1 -1
- package/dist/workflow/config.js +4 -1
- package/dist/workflow/config.js.map +1 -1
- package/dist/workflow/definitions.d.ts +20 -4
- package/dist/workflow/definitions.d.ts.map +1 -1
- package/dist/workflow/definitions.js +16 -3
- package/dist/workflow/definitions.js.map +1 -1
- package/dist/workflow/instances.d.ts.map +1 -1
- package/dist/workflow/instances.js +6 -0
- package/dist/workflow/instances.js.map +1 -1
- package/dist/workflow/orchestrator.d.ts +10 -1
- package/dist/workflow/orchestrator.d.ts.map +1 -1
- package/dist/workflow/orchestrator.js +54 -7
- package/dist/workflow/orchestrator.js.map +1 -1
- package/dist/workflow/select.d.ts +5 -1
- package/dist/workflow/select.d.ts.map +1 -1
- package/dist/workflow/select.js +16 -5
- package/dist/workflow/select.js.map +1 -1
- package/dist/workflow/state.d.ts +3 -2
- package/dist/workflow/state.d.ts.map +1 -1
- package/dist/workflow/state.js.map +1 -1
- package/docs/doctrine/urazuke.md +38 -0
- package/package.json +18 -20
- package/src/i18n/catalogs/ar.json +550 -542
- package/src/i18n/catalogs/de.json +550 -542
- package/src/i18n/catalogs/en.json +550 -542
- package/src/i18n/catalogs/es.json +550 -542
- package/src/i18n/catalogs/fr.json +550 -542
- package/src/i18n/catalogs/hi.json +550 -542
- package/src/i18n/catalogs/it.json +550 -542
- package/src/i18n/catalogs/ja.json +550 -542
- package/src/i18n/catalogs/pt.json +550 -542
- package/src/i18n/catalogs/zh.json +550 -542
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUzC,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,GAAG,EAAE,OAAO,CAAC;IACb,QAAQ,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC1E;AAED,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG,KAAK,CAAC;AAE3C,iEAAiE;AACjE,wBAAgB,eAAe,CAAC,QAAQ,EAAE,gBAAgB,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAQ/G;AAED,mDAAmD;AACnD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEjD;AAgFD,8EAA8E;AAC9E,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAqB9G;AAED,sEAAsE;AACtE,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAuBlJ;AAaD,gEAAgE;AAChE,wBAAsB,eAAe,CAAC,QAAQ,GAAE,MAAM,CAAC,QAA2B,GAAG,OAAO,CAAC,MAAM,CAAC,CAqBnG;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAqD3D"}
|
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
import { spawn, execFile } from 'node:child_process';
|
|
2
|
+
import { promisify } from 'node:util';
|
|
3
|
+
import fs from 'node:fs/promises';
|
|
4
|
+
import os from 'node:os';
|
|
5
|
+
import path from 'node:path';
|
|
6
|
+
import { c, header } from '../ui/colors.js';
|
|
7
|
+
const execFileP = promisify(execFile);
|
|
8
|
+
/** Pure: the options the chooser shows, newest first, capped. */
|
|
9
|
+
export function existingChoices(registry) {
|
|
10
|
+
const rows = registry
|
|
11
|
+
.filter((p) => p.path && p.slug)
|
|
12
|
+
.sort((a, b) => Date.parse(b.last_active_at ?? '') - Date.parse(a.last_active_at ?? ''))
|
|
13
|
+
.slice(0, 12)
|
|
14
|
+
.map((p) => ({ title: p.slug + ' (' + p.path + ')', value: p.path }));
|
|
15
|
+
rows.push({ title: 'Otra carpeta... (elegir en el navegador de carpetas)', value: '__browse__' });
|
|
16
|
+
return rows;
|
|
17
|
+
}
|
|
18
|
+
/** Pure: a valid project slug from a free name. */
|
|
19
|
+
export function slugFromName(name) {
|
|
20
|
+
return name.trim().toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-+|-+$/g, '').slice(0, 60) || 'proyecto';
|
|
21
|
+
}
|
|
22
|
+
async function isDir(p) {
|
|
23
|
+
try {
|
|
24
|
+
return (await fs.stat(p)).isDirectory();
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
async function askMode(input) {
|
|
31
|
+
if (input.isTTY) {
|
|
32
|
+
const prompts = (await import('prompts')).default;
|
|
33
|
+
const ans = await prompts({
|
|
34
|
+
type: 'select', name: 'mode', message: 'Que vamos a abrir?',
|
|
35
|
+
choices: [
|
|
36
|
+
{ title: 'Un proyecto existente (una carpeta con codigo o un repositorio)', value: 'existing' },
|
|
37
|
+
{ title: 'Un proyecto nuevo (creo la carpeta y arranco Urazuke desde el peldano 0)', value: 'new' },
|
|
38
|
+
],
|
|
39
|
+
});
|
|
40
|
+
return ans.mode;
|
|
41
|
+
}
|
|
42
|
+
if (input.gui) {
|
|
43
|
+
const { askChoice } = await import('../core/native_dialogs.js');
|
|
44
|
+
const v = await askChoice('Yujin Forge', 'Que vamos a abrir?', [
|
|
45
|
+
{ label: 'Proyecto existente (carpeta o repositorio)', value: 'existing' },
|
|
46
|
+
{ label: 'Proyecto nuevo (crear la carpeta)', value: 'new' },
|
|
47
|
+
]);
|
|
48
|
+
return v;
|
|
49
|
+
}
|
|
50
|
+
return undefined;
|
|
51
|
+
}
|
|
52
|
+
async function askExisting(input) {
|
|
53
|
+
const choices = existingChoices(input.registry);
|
|
54
|
+
let picked;
|
|
55
|
+
if (input.isTTY) {
|
|
56
|
+
const prompts = (await import('prompts')).default;
|
|
57
|
+
const ans = await prompts({ type: 'select', name: 'p', message: 'Cual?', choices });
|
|
58
|
+
picked = ans.p;
|
|
59
|
+
if (picked === '__browse__') {
|
|
60
|
+
if (input.gui) {
|
|
61
|
+
const { pickFolder } = await import('../core/native_dialogs.js');
|
|
62
|
+
picked = await pickFolder('Elegi la carpeta del proyecto', os.homedir());
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
const t = await prompts({ type: 'text', name: 'p', message: 'Ruta de la carpeta:' });
|
|
66
|
+
picked = t.p;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
else if (input.gui) {
|
|
71
|
+
const { pickFolder } = await import('../core/native_dialogs.js');
|
|
72
|
+
picked = await pickFolder('Elegi la carpeta del proyecto existente', input.registry[0]?.path ? path.dirname(input.registry[0].path) : os.homedir());
|
|
73
|
+
}
|
|
74
|
+
if (!picked || !picked.trim())
|
|
75
|
+
return undefined;
|
|
76
|
+
const abs = path.resolve(picked.trim());
|
|
77
|
+
if (!(await isDir(abs)))
|
|
78
|
+
throw new Error('no es una carpeta: ' + abs);
|
|
79
|
+
return abs;
|
|
80
|
+
}
|
|
81
|
+
async function askNew(input) {
|
|
82
|
+
let name;
|
|
83
|
+
let parent;
|
|
84
|
+
const defaultParent = path.join(os.homedir(), 'YujinForge');
|
|
85
|
+
if (input.isTTY) {
|
|
86
|
+
const prompts = (await import('prompts')).default;
|
|
87
|
+
const a = await prompts([
|
|
88
|
+
{ type: 'text', name: 'name', message: 'Nombre del proyecto:' },
|
|
89
|
+
{ type: 'text', name: 'parent', message: 'Carpeta donde crearlo:', initial: defaultParent },
|
|
90
|
+
]);
|
|
91
|
+
name = a.name;
|
|
92
|
+
parent = a.parent;
|
|
93
|
+
if (parent === '__browse__' && input.gui) {
|
|
94
|
+
const { pickFolder } = await import('../core/native_dialogs.js');
|
|
95
|
+
parent = await pickFolder('Carpeta donde crear el proyecto', defaultParent);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
else if (input.gui) {
|
|
99
|
+
const { askText, pickFolder } = await import('../core/native_dialogs.js');
|
|
100
|
+
name = await askText('Yujin Forge', 'Nombre del proyecto nuevo:');
|
|
101
|
+
if (!name)
|
|
102
|
+
return undefined;
|
|
103
|
+
parent = await pickFolder('Carpeta donde crear "' + name + '"', defaultParent);
|
|
104
|
+
}
|
|
105
|
+
if (!name || !name.trim() || !parent || !parent.trim())
|
|
106
|
+
return undefined;
|
|
107
|
+
return { name: name.trim(), parent: path.resolve(parent.trim()) };
|
|
108
|
+
}
|
|
109
|
+
/** Create the folder, git init, yujin.forge.json, docs/, src/. Idempotent. */
|
|
110
|
+
export async function scaffoldNewProject(parent, name) {
|
|
111
|
+
const slug = slugFromName(name);
|
|
112
|
+
const root = path.join(parent, slug);
|
|
113
|
+
await fs.mkdir(root, { recursive: true });
|
|
114
|
+
const entries = await fs.readdir(root);
|
|
115
|
+
if (entries.some((e) => e === 'yujin.forge.json'))
|
|
116
|
+
return { root, slug };
|
|
117
|
+
await fs.mkdir(path.join(root, 'docs'), { recursive: true });
|
|
118
|
+
await fs.mkdir(path.join(root, 'src'), { recursive: true });
|
|
119
|
+
await fs.writeFile(path.join(root, 'yujin.forge.json'), JSON.stringify({
|
|
120
|
+
project_slug: slug, project_name: name, forge_version: '0.1.0', nac_version: '2.3.x', created_at: new Date().toISOString(), workflow: {},
|
|
121
|
+
}, null, 2) + '\n', 'utf8');
|
|
122
|
+
await fs.writeFile(path.join(root, 'README.md'), '# ' + name + '\n\nProyecto creado con Yujin Forge. El metodo: Urazuke (yujin.app/urazuke).\n', 'utf8');
|
|
123
|
+
await fs.writeFile(path.join(root, '.gitignore'), 'node_modules/\ndist/\ncoverage/\n.forge/changes/\n.env\n', 'utf8');
|
|
124
|
+
try {
|
|
125
|
+
if (!(await isDir(path.join(root, '.git')))) {
|
|
126
|
+
await execFileP('git', ['init', '-q'], { cwd: root, windowsHide: true });
|
|
127
|
+
await execFileP('git', ['add', '.'], { cwd: root, windowsHide: true });
|
|
128
|
+
await execFileP('git', ['-c', 'user.name=Yujin Forge', '-c', 'user.email=forge@yujin.app', 'commit', '-q', '-m', 'Arranque del proyecto con Yujin Forge (Urazuke, peldano 0)'], { cwd: root, windowsHide: true });
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
catch { /* git not installed: the owner installs it; the folder is still valid */ }
|
|
132
|
+
return { root, slug };
|
|
133
|
+
}
|
|
134
|
+
/** Register the project and make sure its Urazuke workflow exists. */
|
|
135
|
+
export async function registerAndPrepare(root, opts = {}) {
|
|
136
|
+
const { upsertProject, setActive, deriveSlugFromPath } = await import('../core/projects.js');
|
|
137
|
+
const slug = await deriveSlugFromPath(root);
|
|
138
|
+
await upsertProject({ slug, path: root });
|
|
139
|
+
await setActive(slug);
|
|
140
|
+
try {
|
|
141
|
+
const { ensureWorkflowForMappedProject, instantiateWorkflow } = await import('../workflow/orchestrator.js');
|
|
142
|
+
if (opts.fresh) {
|
|
143
|
+
/* A project Forge just created climbs from step 0, whatever the
|
|
144
|
+
* scaffold left on disk (docs/, README, a first commit). */
|
|
145
|
+
const { listInstances } = await import('../workflow/instances.js');
|
|
146
|
+
const open = await listInstances(slug, 'open');
|
|
147
|
+
if (!open.length) {
|
|
148
|
+
const { instance } = await instantiateWorkflow({ slug, projectRoot: root, kind: 'urazuke', name: slug + ' -- urazuke' });
|
|
149
|
+
return { slug, workflow: instance.code, kind: 'urazuke' };
|
|
150
|
+
}
|
|
151
|
+
return { slug, workflow: open[0].code, kind: open[0].kind };
|
|
152
|
+
}
|
|
153
|
+
const r = await ensureWorkflowForMappedProject(slug, root);
|
|
154
|
+
return { slug, ...(r.code ? { workflow: r.code } : {}), ...(r.kind ? { kind: r.kind } : {}) };
|
|
155
|
+
}
|
|
156
|
+
catch {
|
|
157
|
+
return { slug };
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
function launchChat(root, detached) {
|
|
161
|
+
const args = [process.argv[1], 'chat', '--cwd', root];
|
|
162
|
+
if (detached) {
|
|
163
|
+
const child = spawn(process.execPath, args, { cwd: root, detached: true, stdio: 'ignore', windowsHide: true });
|
|
164
|
+
child.unref();
|
|
165
|
+
}
|
|
166
|
+
else {
|
|
167
|
+
const child = spawn(process.execPath, args, { cwd: root, stdio: 'inherit', windowsHide: true });
|
|
168
|
+
child.on('exit', (code) => { process.exitCode = code ?? 0; });
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
/** A desktop shortcut that runs `yf start` with no terminal. */
|
|
172
|
+
export async function installShortcut(platform = process.platform) {
|
|
173
|
+
const desktop = path.join(os.homedir(), 'Desktop');
|
|
174
|
+
await fs.mkdir(desktop, { recursive: true });
|
|
175
|
+
const entry = process.argv[1];
|
|
176
|
+
if (platform === 'win32') {
|
|
177
|
+
const lnk = path.join(desktop, 'Yujin Forge.lnk');
|
|
178
|
+
const script = '$w = New-Object -ComObject WScript.Shell; $s = $w.CreateShortcut(' + "'" + lnk.replace(/'/g, "''") + "'" + '); '
|
|
179
|
+
+ '$s.TargetPath = ' + "'" + process.execPath.replace(/'/g, "''") + "'" + '; '
|
|
180
|
+
+ '$s.Arguments = ' + "'" + ('"' + entry + '" start --detached').replace(/'/g, "''") + "'" + '; '
|
|
181
|
+
+ '$s.WorkingDirectory = ' + "'" + os.homedir().replace(/'/g, "''") + "'" + '; $s.WindowStyle = 7; $s.Description = ' + "'Yujin Forge'" + '; $s.Save()';
|
|
182
|
+
await execFileP('powershell.exe', ['-NoProfile', '-NonInteractive', '-ExecutionPolicy', 'Bypass', '-Command', script], { windowsHide: true });
|
|
183
|
+
return lnk;
|
|
184
|
+
}
|
|
185
|
+
if (platform === 'darwin') {
|
|
186
|
+
const cmd = path.join(desktop, 'Yujin Forge.command');
|
|
187
|
+
await fs.writeFile(cmd, '#!/bin/bash\n"' + process.execPath + '" "' + entry + '" start --detached\n', { encoding: 'utf8', mode: 0o755 });
|
|
188
|
+
return cmd;
|
|
189
|
+
}
|
|
190
|
+
const d = path.join(desktop, 'yujin-forge.desktop');
|
|
191
|
+
await fs.writeFile(d, '[Desktop Entry]\nType=Application\nName=Yujin Forge\nExec="' + process.execPath + '" "' + entry + '" start --detached\nTerminal=false\n', { encoding: 'utf8', mode: 0o755 });
|
|
192
|
+
return d;
|
|
193
|
+
}
|
|
194
|
+
export function registerStartCommand(program) {
|
|
195
|
+
program
|
|
196
|
+
.command('start')
|
|
197
|
+
.description('Arranque en un click: proyecto existente o nuevo, elegir la carpeta (sin cd), registrar y abrir el panel.')
|
|
198
|
+
.option('--existing <path>', 'abrir esta carpeta sin preguntar')
|
|
199
|
+
.option('--new <name>', 'crear este proyecto (con --parent) sin preguntar')
|
|
200
|
+
.option('--parent <path>', 'carpeta donde crear el proyecto nuevo')
|
|
201
|
+
.option('--detached', 'lanzar el panel en segundo plano y salir (lo usa el icono)')
|
|
202
|
+
.option('--no-launch', 'preparar el proyecto pero no abrir el panel')
|
|
203
|
+
.option('--shortcut', 'crear un acceso directo en el escritorio que corre yf start')
|
|
204
|
+
.action(async (opts) => {
|
|
205
|
+
try {
|
|
206
|
+
if (opts.shortcut) {
|
|
207
|
+
const f = await installShortcut();
|
|
208
|
+
process.stdout.write(c.success('acceso directo creado: ') + f + '\n');
|
|
209
|
+
return;
|
|
210
|
+
}
|
|
211
|
+
const { readRegistry } = await import('../core/projects.js');
|
|
212
|
+
const { hasGui } = await import('../core/native_dialogs.js');
|
|
213
|
+
const reg = await readRegistry();
|
|
214
|
+
const input = { isTTY: !!process.stdin.isTTY && !opts.detached, gui: hasGui(), registry: reg.projects };
|
|
215
|
+
let root;
|
|
216
|
+
let fresh = false;
|
|
217
|
+
if (opts.existing) {
|
|
218
|
+
root = path.resolve(opts.existing);
|
|
219
|
+
if (!(await isDir(root)))
|
|
220
|
+
throw new Error('no es una carpeta: ' + root);
|
|
221
|
+
}
|
|
222
|
+
else if (opts.new) {
|
|
223
|
+
root = (await scaffoldNewProject(path.resolve(opts.parent ?? path.join(os.homedir(), 'YujinForge')), opts.new)).root;
|
|
224
|
+
fresh = true;
|
|
225
|
+
}
|
|
226
|
+
else {
|
|
227
|
+
const mode = await askMode(input);
|
|
228
|
+
if (!mode) {
|
|
229
|
+
process.stdout.write('cancelado\n');
|
|
230
|
+
return;
|
|
231
|
+
}
|
|
232
|
+
if (mode === 'existing')
|
|
233
|
+
root = await askExisting(input);
|
|
234
|
+
else {
|
|
235
|
+
const n = await askNew(input);
|
|
236
|
+
if (n) {
|
|
237
|
+
root = (await scaffoldNewProject(n.parent, n.name)).root;
|
|
238
|
+
fresh = true;
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
if (!root) {
|
|
242
|
+
process.stdout.write('cancelado\n');
|
|
243
|
+
return;
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
const { isProtectedDir } = await import('../core/protected_dir.js');
|
|
247
|
+
if (isProtectedDir(root))
|
|
248
|
+
throw new Error('esa carpeta es del sistema, no de un proyecto: ' + root);
|
|
249
|
+
const prep = await registerAndPrepare(root, { fresh });
|
|
250
|
+
header('Yujin Forge -- ' + prep.slug);
|
|
251
|
+
process.stdout.write(' carpeta: ' + root + '\n');
|
|
252
|
+
if (prep.workflow)
|
|
253
|
+
process.stdout.write(' workflow: ' + prep.workflow + ' (' + prep.kind + ')\n');
|
|
254
|
+
if (opts.launch === false)
|
|
255
|
+
return;
|
|
256
|
+
process.stdout.write(' abriendo el panel...\n');
|
|
257
|
+
launchChat(root, !!opts.detached);
|
|
258
|
+
}
|
|
259
|
+
catch (err) {
|
|
260
|
+
process.stderr.write(String(err instanceof Error ? err.message : err) + '\n');
|
|
261
|
+
process.exitCode = 1;
|
|
262
|
+
}
|
|
263
|
+
});
|
|
264
|
+
}
|
|
265
|
+
//# sourceMappingURL=start.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* yf urazuke -- the ladder from the terminal, for the owner.
|
|
3
|
+
*
|
|
4
|
+
* yf urazuke status the 24 steps (or N0..N7 + 5..23) with the
|
|
5
|
+
* mechanical status of each, no code reading
|
|
6
|
+
* yf urazuke step <n> one step in full: prompt, inputs, artifacts,
|
|
7
|
+
* checklist, current evaluation
|
|
8
|
+
* yf urazuke step N<n> a legacy station
|
|
9
|
+
* yf urazuke check evaluate the CURRENT step of the open
|
|
10
|
+
* workflow (exit 1 when red)
|
|
11
|
+
* yf urazuke sync-prompts re-vendor the prompts from the method repo
|
|
12
|
+
*
|
|
13
|
+
* ASCII-only.
|
|
14
|
+
*/
|
|
15
|
+
import type { Command } from 'commander';
|
|
16
|
+
export declare function registerUrazukeCommand(program: Command): void;
|
|
17
|
+
//# sourceMappingURL=urazuke.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"urazuke.d.ts","sourceRoot":"","sources":["../../src/commands/urazuke.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuBzC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA2a7D"}
|