chofex-cli 0.1.202 → 0.1.203
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 +39 -40
- package/dist/index.js +87 -80
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -14,57 +14,56 @@ Instala uno de los dos paquetes.
|
|
|
14
14
|
|
|
15
15
|
```sh
|
|
16
16
|
andes register
|
|
17
|
-
chofex register
|
|
18
17
|
```
|
|
19
18
|
|
|
20
19
|
Para instalarlo dentro de un proyecto, usa `npm install hacktheandes-cli` y
|
|
21
|
-
ejecuta `npx andes register
|
|
20
|
+
ejecuta `npx andes register`.
|
|
22
21
|
|
|
23
|
-
|
|
22
|
+
El comando recomendado es `andes`. `chofex` sigue disponible por compatibilidad.
|
|
24
23
|
|
|
25
24
|
```sh
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
25
|
+
andes
|
|
26
|
+
andes whoami
|
|
27
|
+
andes update
|
|
28
|
+
andes upgrade
|
|
29
|
+
andes register
|
|
30
|
+
andes status
|
|
31
|
+
andes requirements
|
|
32
|
+
andes challenge list
|
|
33
|
+
andes challenge query --challenge black-box
|
|
34
|
+
andes challenge notebook --challenge black-box
|
|
35
|
+
andes challenge test --challenge black-box --source ./shipping.js
|
|
36
|
+
andes challenge evaluate --challenge black-box --source ./shipping.js
|
|
37
|
+
andes challenge ranking --challenge black-box
|
|
38
|
+
andes challenge init --challenge broken-agent
|
|
40
39
|
cd broken-agent && npm test
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
40
|
+
andes challenge test --challenge broken-agent --source ./scheduler.js
|
|
41
|
+
andes challenge evaluate --challenge broken-agent --source ./scheduler.js --review ./review.json
|
|
42
|
+
andes challenge ranking --challenge broken-agent
|
|
43
|
+
andes confirm
|
|
44
|
+
andes badge
|
|
45
|
+
andes badge regenerate
|
|
47
46
|
```
|
|
48
47
|
|
|
49
|
-
`
|
|
48
|
+
`andes update` and `andes upgrade` are interchangeable; both update the CLI
|
|
50
49
|
to the latest published version.
|
|
51
50
|
|
|
52
51
|
Las actualizaciones conservan el paquete instalado: `hacktheandes-cli` o
|
|
53
52
|
`chofex-cli`, independientemente del comando que uses.
|
|
54
53
|
|
|
55
|
-
Las copias instaladas también consultan npm cada vez que se inicia `
|
|
54
|
+
Las copias instaladas también consultan npm cada vez que se inicia `andes` e
|
|
56
55
|
instalan una versión publicada más reciente antes de ejecutar el comando. Si
|
|
57
56
|
npm o la red no están disponibles temporalmente, se continúa con la versión
|
|
58
57
|
actual. Usa `CHOFEX_AUTO_UPDATE=0` para desactivar esta comprobación.
|
|
59
58
|
|
|
60
|
-
`
|
|
59
|
+
`andes register` collects and submits an application with full name, role,
|
|
61
60
|
optional phone number, bio, portfolio URL, shipped project, LinkedIn and GitHub
|
|
62
61
|
URLs, and Terms and Conditions. Use `--input` to submit a completed JSON
|
|
63
62
|
application.
|
|
64
63
|
Acceptance creates a default badge from the Clerk profile visible to reviewers.
|
|
65
|
-
`
|
|
64
|
+
`andes confirm` updates the public name, one-line description, and picture
|
|
66
65
|
while separately collecting the legal full name and venue details required for attendance. After confirmation,
|
|
67
|
-
`
|
|
66
|
+
`andes badge regenerate` can also update those public fields and the QR
|
|
68
67
|
destination without changing the submitted application.
|
|
69
68
|
The technical challenges do not block application submission, but they are
|
|
70
69
|
mandatory for admission. An application does not reserve a seat; organizers
|
|
@@ -75,19 +74,19 @@ version; legacy attempts do not count toward admission.
|
|
|
75
74
|
|
|
76
75
|
The public ranking is read-only at `https://hacktheandes.com/challenges`.
|
|
77
76
|
|
|
78
|
-
Run `
|
|
79
|
-
the main commands. Run `
|
|
77
|
+
Run `andes` for a compact retro welcome screen with a pixel Sacred Valley and
|
|
78
|
+
the main commands. Run `andes --help` for the full command reference. The
|
|
80
79
|
landscape uses colored terminal cells, with readable text that works with your
|
|
81
80
|
terminal's line spacing. It adapts to the terminal width and has a plain ASCII
|
|
82
81
|
fallback when color is disabled with `NO_COLOR`. JSON output and individual
|
|
83
82
|
command results omit the welcome screen.
|
|
84
83
|
|
|
85
|
-
For agent or script input, `
|
|
86
|
-
`
|
|
84
|
+
For agent or script input, `andes schema --stage application` and
|
|
85
|
+
`andes schema --stage acceptance` print complete templates containing every
|
|
87
86
|
accepted JSON key. Validate a completed input file locally before submitting it:
|
|
88
87
|
|
|
89
88
|
```sh
|
|
90
|
-
|
|
89
|
+
andes --output json validate --stage application --input application.json
|
|
91
90
|
```
|
|
92
91
|
|
|
93
92
|
Validation does not contact the API, and a successful result does not echo input
|
|
@@ -95,12 +94,12 @@ values. Local validation errors include `acceptedFields` in JSON mode. The
|
|
|
95
94
|
`status` response already includes both the registration and its requirements;
|
|
96
95
|
use `requirements` only when requirements-only human output is preferred.
|
|
97
96
|
|
|
98
|
-
Run `
|
|
97
|
+
Run `andes login` to authenticate. For automation, provide an OAuth access
|
|
99
98
|
token with `CHOFEX_TOKEN`.
|
|
100
99
|
|
|
101
100
|
### Authentication troubleshooting
|
|
102
101
|
|
|
103
|
-
If `
|
|
102
|
+
If `andes login` succeeds but `whoami` or an authenticated challenge command
|
|
104
103
|
returns `AUTHENTICATION_REQUIRED`, first remove any token or API URL overrides
|
|
105
104
|
from the shell. In Bash or Zsh:
|
|
106
105
|
|
|
@@ -117,7 +116,7 @@ Remove-Item Env:CHOFEX_TOKEN, Env:CHOFEX_API_URL -ErrorAction SilentlyContinue
|
|
|
117
116
|
Update by repeating the installation method you originally used. For npm:
|
|
118
117
|
|
|
119
118
|
```sh
|
|
120
|
-
npm install --global
|
|
119
|
+
npm install --global hacktheandes-cli@latest
|
|
121
120
|
```
|
|
122
121
|
|
|
123
122
|
For the standalone installer:
|
|
@@ -129,10 +128,10 @@ curl -fsSL https://hacktheandes.com/install | bash
|
|
|
129
128
|
Then renew the stored session and verify it:
|
|
130
129
|
|
|
131
130
|
```sh
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
131
|
+
andes --version
|
|
132
|
+
andes logout
|
|
133
|
+
andes login
|
|
134
|
+
andes --output json whoami
|
|
136
135
|
```
|
|
137
136
|
|
|
138
137
|
Versions before `0.1.140` used a retired API origin whose cross-origin redirect
|
package/dist/index.js
CHANGED
|
@@ -59516,7 +59516,7 @@ var jwtExpiry = (token) => {
|
|
|
59516
59516
|
};
|
|
59517
59517
|
var refresh = async (credentials) => {
|
|
59518
59518
|
if (!credentials.refreshToken) {
|
|
59519
|
-
throw new Error("Session expired. Run `
|
|
59519
|
+
throw new Error("Session expired. Run `andes login` again.");
|
|
59520
59520
|
}
|
|
59521
59521
|
const body = await tokenRequest({
|
|
59522
59522
|
grant_type: "refresh_token",
|
|
@@ -59533,7 +59533,7 @@ var authentication = async (forceRefresh = false) => {
|
|
|
59533
59533
|
}
|
|
59534
59534
|
const credentials = await readCredentials();
|
|
59535
59535
|
if (!credentials)
|
|
59536
|
-
throw new Error("Not logged in. Run `
|
|
59536
|
+
throw new Error("Not logged in. Run `andes login`.");
|
|
59537
59537
|
if (forceRefresh || credentials.expiresAt !== undefined && credentials.expiresAt <= Date.now() + 30000) {
|
|
59538
59538
|
return await refresh(credentials);
|
|
59539
59539
|
}
|
|
@@ -59560,7 +59560,7 @@ var openBrowser = (url2) => {
|
|
|
59560
59560
|
};
|
|
59561
59561
|
var assertInteractiveLogin = (interactive = process.stdin.isTTY === true) => {
|
|
59562
59562
|
if (!interactive) {
|
|
59563
|
-
throw new Error("OAuth login requires an interactive terminal. Run `
|
|
59563
|
+
throw new Error("OAuth login requires an interactive terminal. Run `andes login` yourself in a local terminal and leave it open until the browser confirms login.");
|
|
59564
59564
|
}
|
|
59565
59565
|
};
|
|
59566
59566
|
var login = async () => {
|
|
@@ -59715,7 +59715,7 @@ var authenticationRecoveryMessage = (code, message) => {
|
|
|
59715
59715
|
return message;
|
|
59716
59716
|
if (message !== "Authentication failed")
|
|
59717
59717
|
return message;
|
|
59718
|
-
return `${message}. If login just succeeded, update the CLI with \`
|
|
59718
|
+
return `${message}. If login just succeeded, update the CLI with \`andes update\` or \`npm install --global hacktheandes-cli@latest\`, then run \`andes logout\` and \`andes login\`.`;
|
|
59719
59719
|
};
|
|
59720
59720
|
var endpoint = (apiUrl, path4) => `${apiUrl.replace(/\/$/, "")}${path4}`;
|
|
59721
59721
|
var resolveAuthentication = (suppliedToken, campaignAttribution, authenticate, forceRefresh = false) => {
|
|
@@ -59986,7 +59986,7 @@ var challengeListText = (catalog) => {
|
|
|
59986
59986
|
}
|
|
59987
59987
|
const hasOpenChallenge = catalog.challenges.some((challenge) => challenge.open && challenge.playable);
|
|
59988
59988
|
if (hasOpenChallenge) {
|
|
59989
|
-
lines2.push("Empieza el challenge abierto:
|
|
59989
|
+
lines2.push("Empieza el challenge abierto: andes challenge");
|
|
59990
59990
|
} else {
|
|
59991
59991
|
lines2.push("No hay un challenge abierto. Los rankings finales siguen visibles.");
|
|
59992
59992
|
}
|
|
@@ -60023,7 +60023,7 @@ var challengeShowText = (attempt) => {
|
|
|
60023
60023
|
if (progress.shareCode)
|
|
60024
60024
|
lines3.push(`Código #${progress.shareCode}`);
|
|
60025
60025
|
}
|
|
60026
|
-
lines3.push("", "SIGUIENTE PASO", "Lee el contrato. Antes de editar, discute tres trazas de falla y elige cuál investigar primero.", " cd broken-agent && npm test", "
|
|
60026
|
+
lines3.push("", "SIGUIENTE PASO", "Lee el contrato. Antes de editar, discute tres trazas de falla y elige cuál investigar primero.", " cd broken-agent && npm test", " andes challenge test --challenge broken-agent --source ./scheduler.js");
|
|
60027
60027
|
return lines3.join(`
|
|
60028
60028
|
`);
|
|
60029
60029
|
}
|
|
@@ -60063,17 +60063,17 @@ var challengeShowText = (attempt) => {
|
|
|
60063
60063
|
lines2.push(`Share code #${progress.shareCode}`);
|
|
60064
60064
|
}
|
|
60065
60065
|
if (challenge.closed) {
|
|
60066
|
-
lines2.push("", "SIGUIENTE PASO", "Revisa tu historial y el ranking final.", "
|
|
60066
|
+
lines2.push("", "SIGUIENTE PASO", "Revisa tu historial y el ranking final.", " andes challenge notebook", " andes challenge ranking");
|
|
60067
60067
|
return lines2.join(`
|
|
60068
60068
|
`);
|
|
60069
60069
|
}
|
|
60070
60070
|
lines2.push("", "YOUR NEXT MOVE");
|
|
60071
60071
|
if (attempt.observations.length === 0) {
|
|
60072
|
-
lines2.push("Ask the machine to price one ordinary shipment.", "
|
|
60072
|
+
lines2.push("Ask the machine to price one ordinary shipment.", " andes challenge query");
|
|
60073
60073
|
} else if (attempt.latestEvaluation === undefined) {
|
|
60074
|
-
lines2.push("Run controlled experiments, study the notebook, then test your model.", "
|
|
60074
|
+
lines2.push("Run controlled experiments, study the notebook, then test your model.", " andes challenge query", " andes challenge notebook", " andes challenge init", " andes challenge test --source ./shipping.js");
|
|
60075
60075
|
} else {
|
|
60076
|
-
lines2.push("Inspect your rank, then use remaining attempts only after improving your model.", "
|
|
60076
|
+
lines2.push("Inspect your rank, then use remaining attempts only after improving your model.", " andes challenge ranking", " andes challenge test --source ./shipping.js");
|
|
60077
60077
|
}
|
|
60078
60078
|
return lines2.join(`
|
|
60079
60079
|
`);
|
|
@@ -60089,11 +60089,11 @@ var challengeQueryText = (result3) => {
|
|
|
60089
60089
|
""
|
|
60090
60090
|
];
|
|
60091
60091
|
if (result3.queriesRemaining > 0) {
|
|
60092
|
-
lines2.push("Next experiment", "Change one variable at a time. Keep the others fixed so the output difference means something.", "
|
|
60092
|
+
lines2.push("Next experiment", "Change one variable at a time. Keep the others fixed so the output difference means something.", " andes challenge query", "");
|
|
60093
60093
|
} else {
|
|
60094
60094
|
lines2.push("The oracle is now silent. Your notebook contains all the evidence you will get.", "");
|
|
60095
60095
|
}
|
|
60096
|
-
lines2.push("Review your evidence", "
|
|
60096
|
+
lines2.push("Review your evidence", " andes challenge notebook", " andes challenge notebook --format csv > observations.csv");
|
|
60097
60097
|
return lines2.join(`
|
|
60098
60098
|
`);
|
|
60099
60099
|
};
|
|
@@ -60124,7 +60124,7 @@ var notebookTableText = (observations, challengeClosed = false) => {
|
|
|
60124
60124
|
"CASE FILE: no observations",
|
|
60125
60125
|
"El challenge está cerrado. Revisa el ranking final.",
|
|
60126
60126
|
"",
|
|
60127
|
-
"Siguiente:
|
|
60127
|
+
"Siguiente: andes challenge ranking"
|
|
60128
60128
|
].join(`
|
|
60129
60129
|
`);
|
|
60130
60130
|
}
|
|
@@ -60132,7 +60132,7 @@ var notebookTableText = (observations, challengeClosed = false) => {
|
|
|
60132
60132
|
"CASE FILE: no observations yet",
|
|
60133
60133
|
"The machine has not revealed anything. Start with one ordinary shipment.",
|
|
60134
60134
|
"",
|
|
60135
|
-
"Next:
|
|
60135
|
+
"Next: andes challenge query"
|
|
60136
60136
|
].join(`
|
|
60137
60137
|
`);
|
|
60138
60138
|
}
|
|
@@ -60162,16 +60162,16 @@ var notebookTableText = (observations, challengeClosed = false) => {
|
|
|
60162
60162
|
});
|
|
60163
60163
|
const lines2 = [`CASE FILE: ${observationLabel}`, "", header, ...rows, ""];
|
|
60164
60164
|
if (challengeClosed) {
|
|
60165
|
-
lines2.push("El challenge está cerrado. Este cuaderno queda disponible como historial.", "Siguiente:
|
|
60165
|
+
lines2.push("El challenge está cerrado. Este cuaderno queda disponible como historial.", "Siguiente: andes challenge ranking");
|
|
60166
60166
|
return lines2.join(`
|
|
60167
60167
|
`);
|
|
60168
60168
|
}
|
|
60169
60169
|
if (observations.length === 1) {
|
|
60170
|
-
lines2.push("One answer is a clue, not a rule.", "Next: run a controlled experiment. Change one field and keep the other four fixed.", "
|
|
60170
|
+
lines2.push("One answer is a clue, not a rule.", "Next: run a controlled experiment. Change one field and keep the other four fixed.", " andes challenge query", "");
|
|
60171
60171
|
} else {
|
|
60172
|
-
lines2.push("Look for thresholds, fixed surcharges, and interactions between fields.", "Next: test a hypothesis with a controlled query, or encode it in your solution.", "
|
|
60172
|
+
lines2.push("Look for thresholds, fixed surcharges, and interactions between fields.", "Next: test a hypothesis with a controlled query, or encode it in your solution.", " andes challenge query", "");
|
|
60173
60173
|
}
|
|
60174
|
-
lines2.push("Prepare your replacement", "
|
|
60174
|
+
lines2.push("Prepare your replacement", " andes challenge init", " andes challenge test --source ./shipping.js");
|
|
60175
60175
|
return lines2.join(`
|
|
60176
60176
|
`);
|
|
60177
60177
|
};
|
|
@@ -60199,7 +60199,7 @@ var challengeTestText = (result3) => {
|
|
|
60199
60199
|
`${result3.matchedObservations} / ${result3.observationCount} comportamientos visibles pasan`
|
|
60200
60200
|
];
|
|
60201
60201
|
if (result3.accuracy === 1) {
|
|
60202
|
-
lines3.push("", "Todo pasa.", "Eso todavía no significa que el scheduler sea correcto en producción.", "Antes de evaluar, el participante debe revisar la evidencia y tomar la decisión de release.", "", "Siguiente: discutan una traza de falla concreta y creen review.json con las palabras del participante.", "Luego usa una evaluación oficial solo si su decisión lo permite", "
|
|
60202
|
+
lines3.push("", "Todo pasa.", "Eso todavía no significa que el scheduler sea correcto en producción.", "Antes de evaluar, el participante debe revisar la evidencia y tomar la decisión de release.", "", "Siguiente: discutan una traza de falla concreta y creen review.json con las palabras del participante.", "Luego usa una evaluación oficial solo si su decisión lo permite", " andes challenge evaluate --challenge broken-agent --source ./scheduler.js --review ./review.json");
|
|
60203
60203
|
return lines3.join(`
|
|
60204
60204
|
`);
|
|
60205
60205
|
}
|
|
@@ -60231,9 +60231,9 @@ var challengeTestText = (result3) => {
|
|
|
60231
60231
|
}
|
|
60232
60232
|
}
|
|
60233
60233
|
if (result3.accuracy === 1) {
|
|
60234
|
-
lines2.push("", "Your model explains the notebook. That is necessary, but hidden cases may expose missing rules.", "Next: evaluate only when your experiments cover meaningful boundaries", "
|
|
60234
|
+
lines2.push("", "Your model explains the notebook. That is necessary, but hidden cases may expose missing rules.", "Next: evaluate only when your experiments cover meaningful boundaries", " andes challenge evaluate --source ./shipping.js");
|
|
60235
60235
|
} else {
|
|
60236
|
-
lines2.push("", "Next: edit shipping.js, explain the mismatches, and test again for free", "
|
|
60236
|
+
lines2.push("", "Next: edit shipping.js, explain the mismatches, and test again for free", " andes challenge test --source ./shipping.js");
|
|
60237
60237
|
}
|
|
60238
60238
|
return lines2.join(`
|
|
60239
60239
|
`);
|
|
@@ -60247,9 +60247,9 @@ var challengeEvaluateText = (result3) => {
|
|
|
60247
60247
|
if (result3.rank !== undefined) {
|
|
60248
60248
|
lines3.push(`Puesto #${result3.rank}`);
|
|
60249
60249
|
}
|
|
60250
|
-
lines3.push(`Evaluaciones oficiales restantes ${result3.evaluationsRemaining} / ${result3.evaluationsLimit}`, "", result3.shareText, "", "Siguiente: consulta el ranking", "
|
|
60250
|
+
lines3.push(`Evaluaciones oficiales restantes ${result3.evaluationsRemaining} / ${result3.evaluationsLimit}`, "", result3.shareText, "", "Siguiente: consulta el ranking", " andes challenge ranking --challenge broken-agent");
|
|
60251
60251
|
if (result3.evaluationsRemaining > 0) {
|
|
60252
|
-
lines3.push("", "El veredicto es un solo puntaje. No dice qué caso falló. Razona antes de volver a enviar.", "
|
|
60252
|
+
lines3.push("", "El veredicto es un solo puntaje. No dice qué caso falló. Razona antes de volver a enviar.", " andes challenge test --challenge broken-agent --source ./scheduler.js");
|
|
60253
60253
|
}
|
|
60254
60254
|
return lines3.join(`
|
|
60255
60255
|
`);
|
|
@@ -60263,9 +60263,9 @@ var challengeEvaluateText = (result3) => {
|
|
|
60263
60263
|
];
|
|
60264
60264
|
if (result3.rank !== undefined)
|
|
60265
60265
|
lines2.push(`Rank #${result3.rank}`);
|
|
60266
|
-
lines2.push(`Official evaluations remaining ${result3.evaluationsRemaining} / ${result3.evaluationsLimit}`, "", result3.shareText, "", "Next: inspect the leaderboard", "
|
|
60266
|
+
lines2.push(`Official evaluations remaining ${result3.evaluationsRemaining} / ${result3.evaluationsLimit}`, "", result3.shareText, "", "Next: inspect the leaderboard", " andes challenge ranking");
|
|
60267
60267
|
if (result3.evaluationsRemaining > 0) {
|
|
60268
|
-
lines2.push("", "Before spending another evaluation, improve and retest your model against the notebook.", "
|
|
60268
|
+
lines2.push("", "Before spending another evaluation, improve and retest your model against the notebook.", " andes challenge test --source ./shipping.js");
|
|
60269
60269
|
}
|
|
60270
60270
|
return lines2.join(`
|
|
60271
60271
|
`);
|
|
@@ -60324,9 +60324,9 @@ var registrationPartsText = (result3) => {
|
|
|
60324
60324
|
lines2.push(` ${mark} ${part.title}${detail}`);
|
|
60325
60325
|
}
|
|
60326
60326
|
if (result3.requirements.canSubmitApplication) {
|
|
60327
|
-
lines2.push("", "Ready to submit:
|
|
60327
|
+
lines2.push("", "Ready to submit: andes register");
|
|
60328
60328
|
} else if (result3.requirements.stage === "draft") {
|
|
60329
|
-
lines2.push("", "Complete and submit with `
|
|
60329
|
+
lines2.push("", "Complete and submit with `andes register`.");
|
|
60330
60330
|
}
|
|
60331
60331
|
return lines2.join(`
|
|
60332
60332
|
`);
|
|
@@ -60509,8 +60509,8 @@ Repara \`scheduler.js\` sin cambiar la interfaz exportada
|
|
|
60509
60509
|
|
|
60510
60510
|
\`\`\`sh
|
|
60511
60511
|
npm test
|
|
60512
|
-
|
|
60513
|
-
|
|
60512
|
+
andes challenge test --challenge broken-agent --source ./scheduler.js
|
|
60513
|
+
andes challenge evaluate --challenge broken-agent --source ./scheduler.js --review ./review.json
|
|
60514
60514
|
\`\`\`
|
|
60515
60515
|
|
|
60516
60516
|
Los tests locales y públicos son ilimitados. Tienes **5 evaluaciones oficiales**
|
|
@@ -60833,6 +60833,7 @@ var createChallengeScaffold = exports_Effect.fn("createChallengeScaffold")(funct
|
|
|
60833
60833
|
// src/metadata.ts
|
|
60834
60834
|
import { readFileSync } from "node:fs";
|
|
60835
60835
|
import { basename } from "node:path";
|
|
60836
|
+
var isStandaloneBuild = typeof CHOFEX_VERSION !== "undefined";
|
|
60836
60837
|
var readMetadata = () => {
|
|
60837
60838
|
if (typeof CHOFEX_VERSION !== "undefined") {
|
|
60838
60839
|
return { name: "chofex-cli", version: CHOFEX_VERSION };
|
|
@@ -60845,7 +60846,11 @@ var readMetadata = () => {
|
|
|
60845
60846
|
var metadata = readMetadata();
|
|
60846
60847
|
var cliVersion = metadata.version;
|
|
60847
60848
|
var cliPackageName = metadata.name;
|
|
60848
|
-
var
|
|
60849
|
+
var commandPath = process.argv[1] ?? "";
|
|
60850
|
+
if (isStandaloneBuild) {
|
|
60851
|
+
commandPath = process.argv0;
|
|
60852
|
+
}
|
|
60853
|
+
var invokedAsAndes = /^andes(?:\.cmd|\.exe)?$/.test(basename(commandPath));
|
|
60849
60854
|
var cliCommandName = invokedAsAndes ? "andes" : "chofex";
|
|
60850
60855
|
|
|
60851
60856
|
// src/cli-root.ts
|
|
@@ -60925,7 +60930,7 @@ var registrationLookupErrorText = (error2) => {
|
|
|
60925
60930
|
if (error2.code !== "REGISTRATION_NOT_FOUND")
|
|
60926
60931
|
return;
|
|
60927
60932
|
return `No registration found.
|
|
60928
|
-
Next command:
|
|
60933
|
+
Next command: andes register`;
|
|
60929
60934
|
};
|
|
60930
60935
|
var requirementsText = (result3) => {
|
|
60931
60936
|
const { registration, requirements } = result3;
|
|
@@ -60941,7 +60946,7 @@ var requirementsText = (result3) => {
|
|
|
60941
60946
|
return [
|
|
60942
60947
|
"Application received. A seat has not been assigned.",
|
|
60943
60948
|
result3.admission?.notice ?? challengeAdmissionNotice,
|
|
60944
|
-
"Next command:
|
|
60949
|
+
"Next command: andes challenge"
|
|
60945
60950
|
].join(`
|
|
60946
60951
|
`);
|
|
60947
60952
|
}
|
|
@@ -60954,7 +60959,7 @@ Review feedback: ${rejectionReason}`;
|
|
|
60954
60959
|
let nextCommand = "";
|
|
60955
60960
|
if (requirements.stage === "accepted") {
|
|
60956
60961
|
nextCommand = `
|
|
60957
|
-
Next command:
|
|
60962
|
+
Next command: andes confirm`;
|
|
60958
60963
|
}
|
|
60959
60964
|
let missing2 = "";
|
|
60960
60965
|
if (requirements.missing.length > 0) {
|
|
@@ -60989,7 +60994,7 @@ var badgeText = (result3) => {
|
|
|
60989
60994
|
return "Tu carnet se está generando.";
|
|
60990
60995
|
}
|
|
60991
60996
|
if (result3.status === "failed") {
|
|
60992
|
-
return "No se pudo generar tu carnet. Ejecuta `
|
|
60997
|
+
return "No se pudo generar tu carnet. Ejecuta `andes badge regenerate` para intentarlo de nuevo.";
|
|
60993
60998
|
}
|
|
60994
60999
|
return "Todavía no tienes un carnet.";
|
|
60995
61000
|
};
|
|
@@ -61014,13 +61019,13 @@ var challengeQuickstart = {
|
|
|
61014
61019
|
{
|
|
61015
61020
|
step: 1,
|
|
61016
61021
|
action: "Inicia sesión",
|
|
61017
|
-
command: "
|
|
61022
|
+
command: "andes login",
|
|
61018
61023
|
note: "Abre la autenticación de Clerk en tu navegador."
|
|
61019
61024
|
},
|
|
61020
61025
|
{
|
|
61021
61026
|
step: 2,
|
|
61022
61027
|
action: "Crea el repositorio del challenge",
|
|
61023
|
-
command: "
|
|
61028
|
+
command: "andes challenge init --challenge broken-agent",
|
|
61024
61029
|
note: "Crea broken-agent/ con el contrato, el scheduler y siete tests públicos sin sobrescribir trabajo existente."
|
|
61025
61030
|
},
|
|
61026
61031
|
{
|
|
@@ -61032,7 +61037,7 @@ var challengeQuickstart = {
|
|
|
61032
61037
|
{
|
|
61033
61038
|
step: 4,
|
|
61034
61039
|
action: "Revisa tu presupuesto",
|
|
61035
|
-
command: "
|
|
61040
|
+
command: "andes challenge show --challenge broken-agent",
|
|
61036
61041
|
note: "Muestra las evaluaciones oficiales restantes y tu mejor puntaje."
|
|
61037
61042
|
},
|
|
61038
61043
|
{
|
|
@@ -61050,7 +61055,7 @@ var challengeQuickstart = {
|
|
|
61050
61055
|
{
|
|
61051
61056
|
step: 7,
|
|
61052
61057
|
action: "Ejecuta los tests públicos",
|
|
61053
|
-
command: "
|
|
61058
|
+
command: "andes challenge test --challenge broken-agent --source ./scheduler.js",
|
|
61054
61059
|
note: "Es seguro repetirlos y no consumen evaluaciones oficiales."
|
|
61055
61060
|
},
|
|
61056
61061
|
{
|
|
@@ -61062,7 +61067,7 @@ var challengeQuickstart = {
|
|
|
61062
61067
|
{
|
|
61063
61068
|
step: 9,
|
|
61064
61069
|
action: "Crea el handoff de evaluación",
|
|
61065
|
-
command: "
|
|
61070
|
+
command: "andes challenge evaluate --challenge broken-agent --source ./scheduler.js --review ./review.json",
|
|
61066
61071
|
note: "Devuelve un enlace de aprobación sin consumir una evaluación oficial."
|
|
61067
61072
|
},
|
|
61068
61073
|
{
|
|
@@ -61074,17 +61079,17 @@ var challengeQuickstart = {
|
|
|
61074
61079
|
{
|
|
61075
61080
|
step: 11,
|
|
61076
61081
|
action: "Solicita el veredicto oculto",
|
|
61077
|
-
command: "
|
|
61082
|
+
command: "andes challenge evaluate --challenge broken-agent --source ./scheduler.js --review ./review.json",
|
|
61078
61083
|
note: "Repite el mismo comando antes de que venza la aprobación; recién entonces consume una evaluación."
|
|
61079
61084
|
},
|
|
61080
61085
|
{
|
|
61081
61086
|
step: 12,
|
|
61082
61087
|
action: "Consulta el ranking",
|
|
61083
|
-
command: "
|
|
61088
|
+
command: "andes challenge ranking --challenge broken-agent",
|
|
61084
61089
|
note: "Se revela el 1 de octubre a las 15:00, hora de Perú."
|
|
61085
61090
|
}
|
|
61086
61091
|
],
|
|
61087
|
-
helpCommand: "
|
|
61092
|
+
helpCommand: "andes challenge test --help"
|
|
61088
61093
|
};
|
|
61089
61094
|
var launchNoticeFor = (slug) => {
|
|
61090
61095
|
const challenge = challengeBySlug(slug);
|
|
@@ -61108,12 +61113,12 @@ var challengeQuickstartText = (participationState, launchNotice) => {
|
|
|
61108
61113
|
if (launchNotice)
|
|
61109
61114
|
lines2.push("", "LAUNCH NOTICE", launchNotice);
|
|
61110
61115
|
if (participationState === "closed") {
|
|
61111
|
-
lines2.push("", "RANKING FINAL", "
|
|
61116
|
+
lines2.push("", "RANKING FINAL", " andes challenge ranking");
|
|
61112
61117
|
return lines2.join(`
|
|
61113
61118
|
`);
|
|
61114
61119
|
}
|
|
61115
61120
|
if (participationState === "scheduled") {
|
|
61116
|
-
lines2.push("", "PRÓXIMAMENTE", "
|
|
61121
|
+
lines2.push("", "PRÓXIMAMENTE", " andes challenge list");
|
|
61117
61122
|
return lines2.join(`
|
|
61118
61123
|
`);
|
|
61119
61124
|
}
|
|
@@ -61131,7 +61136,7 @@ var optionalString = (name, description) => exports_Flag.string(name).pipe(expor
|
|
|
61131
61136
|
var challengeFlag = exports_Flag.string("challenge").pipe(exports_Flag.withDefault(defaultChallengeSlug), exports_Flag.withDescription("Challenge slug (default: broken-agent)"));
|
|
61132
61137
|
var sourceFlag = optionalString("source", "JavaScript challenge solution file");
|
|
61133
61138
|
var reviewFlag = optionalString("review", "Participant-authored Broken Agent engineering review JSON");
|
|
61134
|
-
var officialEvaluateRetryCommand = "
|
|
61139
|
+
var officialEvaluateRetryCommand = "andes challenge evaluate --challenge broken-agent --source ./scheduler.js --review ./review.json";
|
|
61135
61140
|
var evaluationErrorText = (error2) => {
|
|
61136
61141
|
if (error2.code === "CHALLENGE_ENGINE_UNAVAILABLE") {
|
|
61137
61142
|
return [
|
|
@@ -61193,7 +61198,7 @@ var challengeInitText = (result3) => {
|
|
|
61193
61198
|
"",
|
|
61194
61199
|
"Siguiente: continúa endureciendo el scheduler y ejecuta los tests públicos",
|
|
61195
61200
|
` cd ${result3.path} && npm test`,
|
|
61196
|
-
"
|
|
61201
|
+
" andes challenge test --challenge broken-agent --source ./scheduler.js"
|
|
61197
61202
|
].join(`
|
|
61198
61203
|
`);
|
|
61199
61204
|
}
|
|
@@ -61206,7 +61211,7 @@ var challengeInitText = (result3) => {
|
|
|
61206
61211
|
` cd ${result3.path} && npm test`,
|
|
61207
61212
|
"",
|
|
61208
61213
|
"Luego repara scheduler.js y pruébalo sin consumir evaluaciones:",
|
|
61209
|
-
"
|
|
61214
|
+
" andes challenge test --challenge broken-agent --source ./scheduler.js"
|
|
61210
61215
|
].join(`
|
|
61211
61216
|
`);
|
|
61212
61217
|
}
|
|
@@ -61215,8 +61220,8 @@ var challengeInitText = (result3) => {
|
|
|
61215
61220
|
`${result3.path} already exists. Left it unchanged.`,
|
|
61216
61221
|
"",
|
|
61217
61222
|
"Next: keep investigating, then test your current solution",
|
|
61218
|
-
"
|
|
61219
|
-
`
|
|
61223
|
+
" andes challenge query",
|
|
61224
|
+
` andes challenge test --source ./${result3.path}`
|
|
61220
61225
|
].join(`
|
|
61221
61226
|
`);
|
|
61222
61227
|
}
|
|
@@ -61225,10 +61230,10 @@ var challengeInitText = (result3) => {
|
|
|
61225
61230
|
"A documented baseline is ready for the rules you discover.",
|
|
61226
61231
|
"",
|
|
61227
61232
|
"Next: probe the machine",
|
|
61228
|
-
"
|
|
61233
|
+
" andes challenge query",
|
|
61229
61234
|
"",
|
|
61230
61235
|
`Then edit ${result3.path} and test it safely:`,
|
|
61231
|
-
`
|
|
61236
|
+
` andes challenge test --source ./${result3.path}`
|
|
61232
61237
|
].join(`
|
|
61233
61238
|
`);
|
|
61234
61239
|
};
|
|
@@ -61237,7 +61242,7 @@ var listCommand = exports_Command.make("list", {}, exports_Effect.fn("challengeL
|
|
|
61237
61242
|
yield* execute(options.output, listChallenges({ apiUrl: options.apiUrl }), challengeListText);
|
|
61238
61243
|
})).pipe(exports_Command.withDescription("Discover available challenges, opening dates, and scoring formats. No login required."), exports_Command.withExamples([
|
|
61239
61244
|
{
|
|
61240
|
-
command: "
|
|
61245
|
+
command: "andes challenge list",
|
|
61241
61246
|
description: "See which challenge is currently playable"
|
|
61242
61247
|
}
|
|
61243
61248
|
]));
|
|
@@ -61261,11 +61266,11 @@ var initCommand = exports_Command.make("init", { challenge: challengeFlag }, exp
|
|
|
61261
61266
|
yield* execute(options.output, operation, challengeInitText);
|
|
61262
61267
|
})).pipe(exports_Command.withDescription("Crea el starter de un challenge sin sobrescribir trabajo existente."), exports_Command.withExamples([
|
|
61263
61268
|
{
|
|
61264
|
-
command: "
|
|
61269
|
+
command: "andes challenge init --challenge broken-agent",
|
|
61265
61270
|
description: "Prepara el repositorio de Broken Agent"
|
|
61266
61271
|
},
|
|
61267
61272
|
{
|
|
61268
|
-
command: "
|
|
61273
|
+
command: "andes challenge init --challenge broken-agent",
|
|
61269
61274
|
description: "Usa explícitamente el slug del challenge"
|
|
61270
61275
|
}
|
|
61271
61276
|
]));
|
|
@@ -61275,7 +61280,7 @@ var showCommand = exports_Command.make("show", { challenge: challengeFlag }, exp
|
|
|
61275
61280
|
yield* execute(options.output, getChallengeAttempt({ apiUrl: options.apiUrl, token }, challenge), challengeShowText);
|
|
61276
61281
|
})).pipe(exports_Command.withDescription("Consulta presupuesto, puntaje y progreso del challenge. Requiere iniciar sesión."), exports_Command.withExamples([
|
|
61277
61282
|
{
|
|
61278
|
-
command: "
|
|
61283
|
+
command: "andes challenge show",
|
|
61279
61284
|
description: "Revisa tu progreso antes de consumir intentos limitados"
|
|
61280
61285
|
}
|
|
61281
61286
|
]));
|
|
@@ -61311,11 +61316,11 @@ var queryCommand = exports_Command.make("query", {
|
|
|
61311
61316
|
yield* execute(options.output, operation, challengeQueryText);
|
|
61312
61317
|
})).pipe(exports_Command.withDescription("Send one shipment to the undocumented oracle. A successful query consumes one limited request. Requires sign-in."), exports_Command.withExamples([
|
|
61313
61318
|
{
|
|
61314
|
-
command: "
|
|
61319
|
+
command: "andes challenge query --challenge black-box --distance 10 --weight 3 --hour 14 --fragile false --express false",
|
|
61315
61320
|
description: "Spend one oracle query"
|
|
61316
61321
|
},
|
|
61317
61322
|
{
|
|
61318
|
-
command: "
|
|
61323
|
+
command: "andes challenge query --challenge black-box --input shipment.json",
|
|
61319
61324
|
description: "Read the shipment fields from a JSON file"
|
|
61320
61325
|
}
|
|
61321
61326
|
]));
|
|
@@ -61333,11 +61338,11 @@ var notebookCommand = exports_Command.make("notebook", { challenge: challengeFla
|
|
|
61333
61338
|
});
|
|
61334
61339
|
})).pipe(exports_Command.withDescription("Review every input and price you observed. Export table, JSON, or CSV for analysis. Requires sign-in."), exports_Command.withExamples([
|
|
61335
61340
|
{
|
|
61336
|
-
command: "
|
|
61341
|
+
command: "andes challenge notebook --challenge black-box",
|
|
61337
61342
|
description: "Read observations in a terminal table"
|
|
61338
61343
|
},
|
|
61339
61344
|
{
|
|
61340
|
-
command: "
|
|
61345
|
+
command: "andes challenge notebook --challenge black-box --format csv > observations.csv",
|
|
61341
61346
|
description: "Save observations for a spreadsheet"
|
|
61342
61347
|
}
|
|
61343
61348
|
]));
|
|
@@ -61351,7 +61356,7 @@ var testCommand = exports_Command.make("test", { challenge: challengeFlag, sourc
|
|
|
61351
61356
|
yield* execute(options.output, operation, challengeTestText);
|
|
61352
61357
|
})).pipe(exports_Command.withDescription("Run the challenge's public tests. Safe to repeat; official evaluations are not consumed. Requires sign-in."), exports_Command.withExamples([
|
|
61353
61358
|
{
|
|
61354
|
-
command: "
|
|
61359
|
+
command: "andes challenge test --challenge broken-agent --source ./scheduler.js",
|
|
61355
61360
|
description: "Ejecuta los tests públicos de Broken Agent"
|
|
61356
61361
|
}
|
|
61357
61362
|
]));
|
|
@@ -61369,7 +61374,7 @@ var evaluateCommand = exports_Command.make("evaluate", { challenge: challengeFla
|
|
|
61369
61374
|
yield* execute(options.output, operation, challengeEvaluateText, evaluationErrorText);
|
|
61370
61375
|
})).pipe(exports_Command.withDescription("Score a solution on hidden cases. Broken Agent requires participant browser approval before a limited evaluation is consumed."), exports_Command.withExamples([
|
|
61371
61376
|
{
|
|
61372
|
-
command: "
|
|
61377
|
+
command: "andes challenge evaluate --challenge broken-agent --source ./scheduler.js --review ./review.json",
|
|
61373
61378
|
description: "Consume una evaluación oficial cuando tu solución esté lista"
|
|
61374
61379
|
}
|
|
61375
61380
|
]));
|
|
@@ -61378,7 +61383,7 @@ var rankingCommand = exports_Command.make("ranking", { challenge: challengeFlag
|
|
|
61378
61383
|
yield* execute(options.output, getChallengeRanking({ apiUrl: options.apiUrl }, challenge), challengeRankingText);
|
|
61379
61384
|
})).pipe(exports_Command.withDescription("View the public leaderboard. No login required and no challenge budget consumed."), exports_Command.withExamples([
|
|
61380
61385
|
{
|
|
61381
|
-
command: "
|
|
61386
|
+
command: "andes challenge ranking --challenge broken-agent",
|
|
61382
61387
|
description: "Compara puntajes oficiales"
|
|
61383
61388
|
}
|
|
61384
61389
|
]));
|
|
@@ -61396,13 +61401,13 @@ var challengeCommand = exports_Command.make("challenge", {}, exports_Effect.fn("
|
|
|
61396
61401
|
if (participationState === "closed") {
|
|
61397
61402
|
const rankingStep = challengeQuickstart.workflow.at(-1);
|
|
61398
61403
|
workflow = rankingStep ? [rankingStep] : [];
|
|
61399
|
-
helpCommand = "
|
|
61404
|
+
helpCommand = "andes challenge ranking --help";
|
|
61400
61405
|
story = [];
|
|
61401
61406
|
mission = "El Challenge 2 terminó. El ranking final sigue disponible.";
|
|
61402
61407
|
rules = [];
|
|
61403
61408
|
} else if (participationState === "scheduled") {
|
|
61404
61409
|
workflow = [];
|
|
61405
|
-
helpCommand = "
|
|
61410
|
+
helpCommand = "andes challenge list --help";
|
|
61406
61411
|
story = [];
|
|
61407
61412
|
mission = "El challenge todavía no está disponible.";
|
|
61408
61413
|
rules = [];
|
|
@@ -61430,15 +61435,15 @@ var challengeCommand = exports_Command.make("challenge", {}, exports_Effect.fn("
|
|
|
61430
61435
|
yield* exports_Console.log(challengeQuickstartText(participationState, launchNotice));
|
|
61431
61436
|
})).pipe(exports_Command.withDescription("Compite en challenges técnicos obligatorios por un cupo. Ejecuta el comando sin subcomandos para abrir la guía del challenge actual."), exports_Command.withExamples([
|
|
61432
61437
|
{
|
|
61433
|
-
command: "
|
|
61438
|
+
command: "andes challenge",
|
|
61434
61439
|
description: "Abre la guía de Broken Agent"
|
|
61435
61440
|
},
|
|
61436
61441
|
{
|
|
61437
|
-
command: "
|
|
61442
|
+
command: "andes challenge init --challenge broken-agent",
|
|
61438
61443
|
description: "Crea el repositorio de Broken Agent"
|
|
61439
61444
|
},
|
|
61440
61445
|
{
|
|
61441
|
-
command: "
|
|
61446
|
+
command: "andes challenge test --help",
|
|
61442
61447
|
description: "Revisa cómo ejecutar los tests públicos"
|
|
61443
61448
|
}
|
|
61444
61449
|
]), exports_Command.withSubcommands([
|
|
@@ -63598,7 +63603,7 @@ var runInstaller = async (installDirectory, version) => {
|
|
|
63598
63603
|
}
|
|
63599
63604
|
return runProcess("bash", arguments_, script);
|
|
63600
63605
|
};
|
|
63601
|
-
var isStandaloneExecutable = () =>
|
|
63606
|
+
var isStandaloneExecutable = () => isStandaloneBuild;
|
|
63602
63607
|
var assertSuccessful = (result3, program) => {
|
|
63603
63608
|
if (result3.exitCode === 0)
|
|
63604
63609
|
return;
|
|
@@ -63770,7 +63775,9 @@ var shouldAutoUpdateCli = async ({
|
|
|
63770
63775
|
return pathIsInside(join3(npmRoot, cliPackageName), entryPath);
|
|
63771
63776
|
};
|
|
63772
63777
|
var runUpdatedCli = () => new Promise((resolve4, reject) => {
|
|
63773
|
-
const
|
|
63778
|
+
const arguments_ = process.argv.slice(isStandaloneBuild ? 2 : 1);
|
|
63779
|
+
const child = spawn3(process.execPath, arguments_, {
|
|
63780
|
+
argv0: process.argv0,
|
|
63774
63781
|
env: { ...process.env, CHOFEX_AUTO_UPDATE: "0" },
|
|
63775
63782
|
stdio: "inherit"
|
|
63776
63783
|
});
|
|
@@ -63799,7 +63806,7 @@ var rejectIfApplicationLocked = exports_Effect.fn("rejectIfApplicationLocked")(f
|
|
|
63799
63806
|
if (status === "accepted") {
|
|
63800
63807
|
message = "Already accepted. Your registration is complete.";
|
|
63801
63808
|
if (requirements.stage === "accepted") {
|
|
63802
|
-
message = "Already accepted. Run `
|
|
63809
|
+
message = "Already accepted. Run `andes confirm` to complete your registration.";
|
|
63803
63810
|
}
|
|
63804
63811
|
}
|
|
63805
63812
|
return yield* cliError("ACTIVE_APPLICATION_EXISTS", message, false, {
|
|
@@ -63825,11 +63832,11 @@ var registerCommand = exports_Command.make("register", { input: inputFlag2 }, ex
|
|
|
63825
63832
|
yield* execute(options.output, operation, createdText);
|
|
63826
63833
|
})).pipe(exports_Command.withDescription("Complete and submit an application for review"), exports_Command.withExamples([
|
|
63827
63834
|
{
|
|
63828
|
-
command: "
|
|
63835
|
+
command: "andes register",
|
|
63829
63836
|
description: "Fill or resume the application interactively"
|
|
63830
63837
|
},
|
|
63831
63838
|
{
|
|
63832
|
-
command: "
|
|
63839
|
+
command: "andes --output json register --input application.json",
|
|
63833
63840
|
description: "Submit an application from an agent or script"
|
|
63834
63841
|
}
|
|
63835
63842
|
]));
|
|
@@ -63941,11 +63948,11 @@ var confirmCommand = exports_Command.make("confirm", {
|
|
|
63941
63948
|
yield* execute(options.output, operation, registrationText);
|
|
63942
63949
|
})).pipe(exports_Command.withDescription("Provide private attendance details after acceptance"), exports_Command.withExamples([
|
|
63943
63950
|
{
|
|
63944
|
-
command: "
|
|
63951
|
+
command: "andes confirm",
|
|
63945
63952
|
description: "Complete accepted-participant details interactively"
|
|
63946
63953
|
},
|
|
63947
63954
|
{
|
|
63948
|
-
command: "
|
|
63955
|
+
command: "andes --output json confirm --input attendance.json",
|
|
63949
63956
|
description: "Submit accepted-participant details from JSON"
|
|
63950
63957
|
}
|
|
63951
63958
|
]));
|
|
@@ -64048,7 +64055,7 @@ var validateCommand = exports_Command.make("validate", { input: inputFlag2, stag
|
|
|
64048
64055
|
yield* execute(options.output, operation, (result3) => `${result3.stage} input is valid.`);
|
|
64049
64056
|
})).pipe(exports_Command.withDescription("Validate input without submitting it"), exports_Command.withExamples([
|
|
64050
64057
|
{
|
|
64051
|
-
command: "
|
|
64058
|
+
command: "andes --output json validate --stage application --input application.json",
|
|
64052
64059
|
description: "Validate an application file locally"
|
|
64053
64060
|
}
|
|
64054
64061
|
]));
|
|
@@ -64087,7 +64094,7 @@ var schemaCommand = exports_Command.make("schema", { stage: stageFlag }, exports
|
|
|
64087
64094
|
yield* printJson(templateFor(stage));
|
|
64088
64095
|
})).pipe(exports_Command.withDescription("Print a complete machine-readable input template"), exports_Command.withExamples([
|
|
64089
64096
|
{
|
|
64090
|
-
command: "
|
|
64097
|
+
command: "andes schema --stage acceptance",
|
|
64091
64098
|
description: "Print the post-acceptance input template"
|
|
64092
64099
|
}
|
|
64093
64100
|
]));
|
|
@@ -64249,10 +64256,10 @@ var welcomeFormatter = (options) => {
|
|
|
64249
64256
|
${help}`;
|
|
64250
64257
|
const width = Math.max(1, Math.min(options.columns ?? 80, 72));
|
|
64251
64258
|
const shortcuts = [
|
|
64252
|
-
"
|
|
64253
|
-
"
|
|
64254
|
-
"
|
|
64255
|
-
"
|
|
64259
|
+
"andes login Sign in",
|
|
64260
|
+
"andes register Apply",
|
|
64261
|
+
"andes status Check your application",
|
|
64262
|
+
"andes --help All commands"
|
|
64256
64263
|
];
|
|
64257
64264
|
return `${welcome}
|
|
64258
64265
|
${shortcuts.flatMap((line) => wrap(line, width)).join(`
|