@agi-ventures-canada/hackathon-cli 0.1.6 → 0.1.8

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.
Files changed (65) hide show
  1. package/dist/_chunks/activate-round.mjs +18 -0
  2. package/dist/_chunks/activate-round.mjs.map +1 -0
  3. package/dist/_chunks/activity.mjs +82 -0
  4. package/dist/_chunks/activity.mjs.map +1 -0
  5. package/dist/_chunks/buckets.mjs +56 -0
  6. package/dist/_chunks/buckets.mjs.map +1 -0
  7. package/dist/_chunks/calculate-results.mjs +18 -0
  8. package/dist/_chunks/calculate-results.mjs.map +1 -0
  9. package/dist/_chunks/create.mjs +1 -1
  10. package/dist/_chunks/create.mjs.map +1 -1
  11. package/dist/_chunks/create6.mjs +29 -38
  12. package/dist/_chunks/create6.mjs.map +1 -1
  13. package/dist/_chunks/create7.mjs +63 -0
  14. package/dist/_chunks/create7.mjs.map +1 -0
  15. package/dist/_chunks/criteria-create.mjs +9 -22
  16. package/dist/_chunks/criteria-create.mjs.map +1 -1
  17. package/dist/_chunks/criteria-list.mjs +4 -0
  18. package/dist/_chunks/criteria-list.mjs.map +1 -1
  19. package/dist/_chunks/criteria-update.mjs +13 -5
  20. package/dist/_chunks/criteria-update.mjs.map +1 -1
  21. package/dist/_chunks/delete5.mjs +8 -8
  22. package/dist/_chunks/delete5.mjs.map +1 -1
  23. package/dist/_chunks/delete6.mjs +22 -0
  24. package/dist/_chunks/delete6.mjs.map +1 -0
  25. package/dist/_chunks/get5.mjs +42 -0
  26. package/dist/_chunks/get5.mjs.map +1 -0
  27. package/dist/_chunks/levels-add.mjs +53 -0
  28. package/dist/_chunks/levels-add.mjs.map +1 -0
  29. package/dist/_chunks/levels-delete.mjs +53 -0
  30. package/dist/_chunks/levels-delete.mjs.map +1 -0
  31. package/dist/_chunks/levels-list.mjs +39 -0
  32. package/dist/_chunks/levels-list.mjs.map +1 -0
  33. package/dist/_chunks/levels-update.mjs +61 -0
  34. package/dist/_chunks/levels-update.mjs.map +1 -0
  35. package/dist/_chunks/list6.mjs +22 -19
  36. package/dist/_chunks/list6.mjs.map +1 -1
  37. package/dist/_chunks/list7.mjs +40 -0
  38. package/dist/_chunks/list7.mjs.map +1 -0
  39. package/dist/_chunks/track-assign.mjs +37 -0
  40. package/dist/_chunks/track-assign.mjs.map +1 -0
  41. package/dist/_chunks/track-unassign.mjs +49 -0
  42. package/dist/_chunks/track-unassign.mjs.map +1 -0
  43. package/dist/_chunks/update-round.mjs +49 -0
  44. package/dist/_chunks/update-round.mjs.map +1 -0
  45. package/dist/_chunks/update5.mjs +41 -48
  46. package/dist/_chunks/update5.mjs.map +1 -1
  47. package/dist/_chunks/update6.mjs +56 -0
  48. package/dist/_chunks/update6.mjs.map +1 -0
  49. package/dist/cli.mjs +160 -86
  50. package/dist/cli.mjs.map +1 -1
  51. package/package.json +1 -1
  52. package/dist/_chunks/hackathons-delete.mjs +0 -26
  53. package/dist/_chunks/hackathons-delete.mjs.map +0 -1
  54. package/dist/_chunks/hackathons-get.mjs +0 -34
  55. package/dist/_chunks/hackathons-get.mjs.map +0 -1
  56. package/dist/_chunks/hackathons-list.mjs +0 -64
  57. package/dist/_chunks/hackathons-list.mjs.map +0 -1
  58. package/dist/_chunks/hackathons-update.mjs +0 -73
  59. package/dist/_chunks/hackathons-update.mjs.map +0 -1
  60. package/dist/_chunks/scenarios-list.mjs +0 -24
  61. package/dist/_chunks/scenarios-list.mjs.map +0 -1
  62. package/dist/_chunks/scenarios-run.mjs +0 -23
  63. package/dist/_chunks/scenarios-run.mjs.map +0 -1
  64. package/dist/_chunks/stats.mjs +0 -37
  65. package/dist/_chunks/stats.mjs.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-round.mjs","names":[],"sources":["../../src/commands/tracks/update-round.ts"],"sourcesContent":["import type { OatmealClient } from \"../../client.js\"\nimport { formatJson, formatSuccess } from \"../../output.js\"\n\ninterface RoundUpdateOptions {\n name?: string\n style?: string\n status?: string\n advancement?: string\n json?: boolean\n}\n\nfunction parseOptions(args: string[]): RoundUpdateOptions {\n const options: RoundUpdateOptions = {}\n for (let i = 0; i < args.length; i++) {\n switch (args[i]) {\n case \"--name\":\n options.name = args[++i]\n break\n case \"--style\":\n options.style = args[++i]\n break\n case \"--status\":\n options.status = args[++i]\n break\n case \"--advancement\":\n options.advancement = args[++i]\n break\n case \"--json\":\n options.json = true\n break\n }\n }\n return options\n}\n\nexport async function runTracksUpdateRound(\n client: OatmealClient,\n hackathonId: string,\n trackId: string,\n roundId: string,\n args: string[]\n): Promise<void> {\n if (!trackId || !roundId) {\n console.error(\"Usage: hackathon tracks update-round <hackathon-id> <track-id> <round-id> [--style ...]\")\n process.exit(1)\n }\n\n const options = parseOptions(args)\n const body: Record<string, unknown> = {}\n if (options.name) body.name = options.name\n if (options.style) body.style = options.style\n if (options.status) body.status = options.status\n if (options.advancement) body.advancement = options.advancement\n\n if (Object.keys(body).length === 0) {\n console.error(\"Error: provide at least one field to update\")\n process.exit(1)\n }\n\n const result = await client.patch<{ id: string; status: string; style: string }>(\n `/api/dashboard/hackathons/${hackathonId}/prize-tracks/${trackId}/rounds/${roundId}`,\n body\n )\n\n if (options.json) {\n console.log(formatJson(result))\n return\n }\n\n console.log(formatSuccess(`Updated round ${result.id} [${result.style}, ${result.status}]`))\n}\n"],"mappings":";;AAWA,SAAS,aAAa,MAAoC;CACxD,MAAM,UAA8B,EAAE;AACtC,MAAK,IAAI,IAAI,GAAG,IAAI,KAAK,QAAQ,IAC/B,SAAQ,KAAK,IAAb;EACE,KAAK;AACH,WAAQ,OAAO,KAAK,EAAE;AACtB;EACF,KAAK;AACH,WAAQ,QAAQ,KAAK,EAAE;AACvB;EACF,KAAK;AACH,WAAQ,SAAS,KAAK,EAAE;AACxB;EACF,KAAK;AACH,WAAQ,cAAc,KAAK,EAAE;AAC7B;EACF,KAAK;AACH,WAAQ,OAAO;AACf;;AAGN,QAAO;;AAGT,eAAsB,qBACpB,QACA,aACA,SACA,SACA,MACe;AACf,KAAI,CAAC,WAAW,CAAC,SAAS;AACxB,UAAQ,MAAM,0FAA0F;AACxG,UAAQ,KAAK,EAAE;;CAGjB,MAAM,UAAU,aAAa,KAAK;CAClC,MAAM,OAAgC,EAAE;AACxC,KAAI,QAAQ,KAAM,MAAK,OAAO,QAAQ;AACtC,KAAI,QAAQ,MAAO,MAAK,QAAQ,QAAQ;AACxC,KAAI,QAAQ,OAAQ,MAAK,SAAS,QAAQ;AAC1C,KAAI,QAAQ,YAAa,MAAK,cAAc,QAAQ;AAEpD,KAAI,OAAO,KAAK,KAAK,CAAC,WAAW,GAAG;AAClC,UAAQ,MAAM,8CAA8C;AAC5D,UAAQ,KAAK,EAAE;;CAGjB,MAAM,SAAS,MAAM,OAAO,MAC1B,6BAA6B,YAAY,gBAAgB,QAAQ,UAAU,WAC3E,KACD;AAED,KAAI,QAAQ,MAAM;AAChB,UAAQ,IAAI,WAAW,OAAO,CAAC;AAC/B;;AAGF,SAAQ,IAAI,cAAc,iBAAiB,OAAO,GAAG,IAAI,OAAO,MAAM,IAAI,OAAO,OAAO,GAAG,CAAC"}
@@ -1,56 +1,49 @@
1
- import { s as VERSION } from "./constants.mjs";
2
- import { checkForUpdate, t as detectInvocationMode } from "./update-check.mjs";
3
- import pc from "picocolors";
4
- import { execSync } from "node:child_process";
5
- //#region src/commands/update.ts
6
- const PKG = "@agi-ventures-canada/hackathon-cli";
7
- function detectPackageManager() {
8
- const execPath = process.env.npm_execpath ?? process.env._ ?? "";
9
- if (/bun/.test(execPath)) return {
10
- cmd: "bun",
11
- install: `bun install -g ${PKG}@latest`
12
- };
13
- if (/pnpm/.test(execPath)) return {
14
- cmd: "pnpm",
15
- install: `pnpm add -g ${PKG}@latest`
16
- };
17
- if (/yarn/.test(execPath)) return {
18
- cmd: "yarn",
19
- install: `yarn global add ${PKG}@latest`
20
- };
21
- return {
22
- cmd: "npm",
23
- install: `npm install -g ${PKG}@latest`
24
- };
25
- }
26
- async function runUpdate() {
27
- console.log(`Current version: ${VERSION}`);
28
- console.log("Checking for updates...");
29
- const update = await checkForUpdate();
30
- if (!update) {
31
- console.log(pc.green("Already up to date."));
32
- return;
1
+ import { n as formatJson, r as formatSuccess } from "../cli.mjs";
2
+ //#region src/commands/tracks/update.ts
3
+ function parseOptions(args) {
4
+ const options = {};
5
+ for (let i = 0; i < args.length; i++) switch (args[i]) {
6
+ case "--name":
7
+ options.name = args[++i];
8
+ break;
9
+ case "--description":
10
+ options.description = args[++i];
11
+ break;
12
+ case "--intent":
13
+ options.intent = args[++i];
14
+ break;
15
+ case "--display-order":
16
+ options.displayOrder = Number(args[++i]);
17
+ break;
18
+ case "--json":
19
+ options.json = true;
20
+ break;
33
21
  }
34
- const pm = detectPackageManager();
35
- const invocationMode = detectInvocationMode();
36
- console.log(`New version available: ${update.latest}`);
37
- if (invocationMode === "local-bun-script") {
38
- console.log(pc.yellow("You are running the repo-local CLI via `bun cli`."));
39
- console.log("Update this repository to use the newer CLI source, or install the published package globally:");
40
- console.log(` ${pm.install}`);
41
- return;
22
+ return options;
23
+ }
24
+ async function runTracksUpdate(client, hackathonId, trackId, args) {
25
+ if (!trackId) {
26
+ console.error("Usage: hackathon tracks update <hackathon-id> <track-id> [--name ...]");
27
+ process.exit(1);
42
28
  }
43
- console.log(`Updating via ${pm.cmd}...`);
44
- try {
45
- execSync(pm.install, { stdio: "inherit" });
46
- console.log(pc.green(`\nUpdated to ${update.latest}`));
47
- } catch {
48
- console.error(pc.red("Update failed. Try manually:"));
49
- console.error(` ${pm.install}`);
29
+ const options = parseOptions(args);
30
+ const body = {};
31
+ if (options.name) body.name = options.name;
32
+ if (options.description) body.description = options.description;
33
+ if (options.intent) body.intent = options.intent;
34
+ if (options.displayOrder !== void 0) body.displayOrder = options.displayOrder;
35
+ if (Object.keys(body).length === 0) {
36
+ console.error("Error: provide at least one field to update");
50
37
  process.exit(1);
51
38
  }
39
+ const result = await client.patch(`/api/dashboard/hackathons/${hackathonId}/prize-tracks/${trackId}`, body);
40
+ if (options.json) {
41
+ console.log(formatJson(result));
42
+ return;
43
+ }
44
+ console.log(formatSuccess(`Updated track ${result.id}`));
52
45
  }
53
46
  //#endregion
54
- export { runUpdate };
47
+ export { runTracksUpdate };
55
48
 
56
49
  //# sourceMappingURL=update5.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"update5.mjs","names":[],"sources":["../../src/commands/update.ts"],"sourcesContent":["import { execSync } from \"node:child_process\"\nimport pc from \"picocolors\"\nimport { VERSION } from \"../constants.js\"\nimport { detectInvocationMode } from \"../invocation.js\"\nimport { checkForUpdate } from \"../update-check.js\"\n\nconst PKG = \"@agi-ventures-canada/hackathon-cli\"\n\nfunction detectPackageManager(): { cmd: string; install: string } {\n const execPath = process.env.npm_execpath ?? process.env._ ?? \"\"\n if (/bun/.test(execPath)) return { cmd: \"bun\", install: `bun install -g ${PKG}@latest` }\n if (/pnpm/.test(execPath)) return { cmd: \"pnpm\", install: `pnpm add -g ${PKG}@latest` }\n if (/yarn/.test(execPath)) return { cmd: \"yarn\", install: `yarn global add ${PKG}@latest` }\n return { cmd: \"npm\", install: `npm install -g ${PKG}@latest` }\n}\n\nexport async function runUpdate(): Promise<void> {\n console.log(`Current version: ${VERSION}`)\n console.log(\"Checking for updates...\")\n\n const update = await checkForUpdate()\n if (!update) {\n console.log(pc.green(\"Already up to date.\"))\n return\n }\n\n const pm = detectPackageManager()\n const invocationMode = detectInvocationMode()\n console.log(`New version available: ${update.latest}`)\n\n if (invocationMode === \"local-bun-script\") {\n console.log(pc.yellow(\"You are running the repo-local CLI via `bun cli`.\"))\n console.log(\"Update this repository to use the newer CLI source, or install the published package globally:\")\n console.log(` ${pm.install}`)\n return\n }\n\n console.log(`Updating via ${pm.cmd}...`)\n\n try {\n execSync(pm.install, { stdio: \"inherit\" })\n console.log(pc.green(`\\nUpdated to ${update.latest}`))\n } catch {\n console.error(pc.red(\"Update failed. Try manually:\"))\n console.error(` ${pm.install}`)\n process.exit(1)\n }\n}\n"],"mappings":";;;;;AAMA,MAAM,MAAM;AAEZ,SAAS,uBAAyD;CAChE,MAAM,WAAW,QAAQ,IAAI,gBAAgB,QAAQ,IAAI,KAAK;AAC9D,KAAI,MAAM,KAAK,SAAS,CAAE,QAAO;EAAE,KAAK;EAAO,SAAS,kBAAkB,IAAI;EAAU;AACxF,KAAI,OAAO,KAAK,SAAS,CAAE,QAAO;EAAE,KAAK;EAAQ,SAAS,eAAe,IAAI;EAAU;AACvF,KAAI,OAAO,KAAK,SAAS,CAAE,QAAO;EAAE,KAAK;EAAQ,SAAS,mBAAmB,IAAI;EAAU;AAC3F,QAAO;EAAE,KAAK;EAAO,SAAS,kBAAkB,IAAI;EAAU;;AAGhE,eAAsB,YAA2B;AAC/C,SAAQ,IAAI,oBAAoB,UAAU;AAC1C,SAAQ,IAAI,0BAA0B;CAEtC,MAAM,SAAS,MAAM,gBAAgB;AACrC,KAAI,CAAC,QAAQ;AACX,UAAQ,IAAI,GAAG,MAAM,sBAAsB,CAAC;AAC5C;;CAGF,MAAM,KAAK,sBAAsB;CACjC,MAAM,iBAAiB,sBAAsB;AAC7C,SAAQ,IAAI,0BAA0B,OAAO,SAAS;AAEtD,KAAI,mBAAmB,oBAAoB;AACzC,UAAQ,IAAI,GAAG,OAAO,oDAAoD,CAAC;AAC3E,UAAQ,IAAI,iGAAiG;AAC7G,UAAQ,IAAI,KAAK,GAAG,UAAU;AAC9B;;AAGF,SAAQ,IAAI,gBAAgB,GAAG,IAAI,KAAK;AAExC,KAAI;AACF,WAAS,GAAG,SAAS,EAAE,OAAO,WAAW,CAAC;AAC1C,UAAQ,IAAI,GAAG,MAAM,gBAAgB,OAAO,SAAS,CAAC;SAChD;AACN,UAAQ,MAAM,GAAG,IAAI,+BAA+B,CAAC;AACrD,UAAQ,MAAM,KAAK,GAAG,UAAU;AAChC,UAAQ,KAAK,EAAE"}
1
+ {"version":3,"file":"update5.mjs","names":[],"sources":["../../src/commands/tracks/update.ts"],"sourcesContent":["import type { OatmealClient } from \"../../client.js\"\nimport { formatJson, formatSuccess } from \"../../output.js\"\n\ninterface TrackUpdateOptions {\n name?: string\n description?: string\n intent?: string\n displayOrder?: number\n json?: boolean\n}\n\nfunction parseOptions(args: string[]): TrackUpdateOptions {\n const options: TrackUpdateOptions = {}\n for (let i = 0; i < args.length; i++) {\n switch (args[i]) {\n case \"--name\":\n options.name = args[++i]\n break\n case \"--description\":\n options.description = args[++i]\n break\n case \"--intent\":\n options.intent = args[++i]\n break\n case \"--display-order\":\n options.displayOrder = Number(args[++i])\n break\n case \"--json\":\n options.json = true\n break\n }\n }\n return options\n}\n\nexport async function runTracksUpdate(\n client: OatmealClient,\n hackathonId: string,\n trackId: string,\n args: string[]\n): Promise<void> {\n if (!trackId) {\n console.error(\"Usage: hackathon tracks update <hackathon-id> <track-id> [--name ...]\")\n process.exit(1)\n }\n\n const options = parseOptions(args)\n const body: Record<string, unknown> = {}\n if (options.name) body.name = options.name\n if (options.description) body.description = options.description\n if (options.intent) body.intent = options.intent\n if (options.displayOrder !== undefined) body.displayOrder = options.displayOrder\n\n if (Object.keys(body).length === 0) {\n console.error(\"Error: provide at least one field to update\")\n process.exit(1)\n }\n\n const result = await client.patch<{ id: string; updatedAt: string }>(\n `/api/dashboard/hackathons/${hackathonId}/prize-tracks/${trackId}`,\n body\n )\n\n if (options.json) {\n console.log(formatJson(result))\n return\n }\n\n console.log(formatSuccess(`Updated track ${result.id}`))\n}\n"],"mappings":";;AAWA,SAAS,aAAa,MAAoC;CACxD,MAAM,UAA8B,EAAE;AACtC,MAAK,IAAI,IAAI,GAAG,IAAI,KAAK,QAAQ,IAC/B,SAAQ,KAAK,IAAb;EACE,KAAK;AACH,WAAQ,OAAO,KAAK,EAAE;AACtB;EACF,KAAK;AACH,WAAQ,cAAc,KAAK,EAAE;AAC7B;EACF,KAAK;AACH,WAAQ,SAAS,KAAK,EAAE;AACxB;EACF,KAAK;AACH,WAAQ,eAAe,OAAO,KAAK,EAAE,GAAG;AACxC;EACF,KAAK;AACH,WAAQ,OAAO;AACf;;AAGN,QAAO;;AAGT,eAAsB,gBACpB,QACA,aACA,SACA,MACe;AACf,KAAI,CAAC,SAAS;AACZ,UAAQ,MAAM,wEAAwE;AACtF,UAAQ,KAAK,EAAE;;CAGjB,MAAM,UAAU,aAAa,KAAK;CAClC,MAAM,OAAgC,EAAE;AACxC,KAAI,QAAQ,KAAM,MAAK,OAAO,QAAQ;AACtC,KAAI,QAAQ,YAAa,MAAK,cAAc,QAAQ;AACpD,KAAI,QAAQ,OAAQ,MAAK,SAAS,QAAQ;AAC1C,KAAI,QAAQ,iBAAiB,KAAA,EAAW,MAAK,eAAe,QAAQ;AAEpE,KAAI,OAAO,KAAK,KAAK,CAAC,WAAW,GAAG;AAClC,UAAQ,MAAM,8CAA8C;AAC5D,UAAQ,KAAK,EAAE;;CAGjB,MAAM,SAAS,MAAM,OAAO,MAC1B,6BAA6B,YAAY,gBAAgB,WACzD,KACD;AAED,KAAI,QAAQ,MAAM;AAChB,UAAQ,IAAI,WAAW,OAAO,CAAC;AAC/B;;AAGF,SAAQ,IAAI,cAAc,iBAAiB,OAAO,KAAK,CAAC"}
@@ -0,0 +1,56 @@
1
+ import { s as VERSION } from "./constants.mjs";
2
+ import { checkForUpdate, t as detectInvocationMode } from "./update-check.mjs";
3
+ import pc from "picocolors";
4
+ import { execSync } from "node:child_process";
5
+ //#region src/commands/update.ts
6
+ const PKG = "@agi-ventures-canada/hackathon-cli";
7
+ function detectPackageManager() {
8
+ const execPath = process.env.npm_execpath ?? process.env._ ?? "";
9
+ if (/bun/.test(execPath)) return {
10
+ cmd: "bun",
11
+ install: `bun install -g ${PKG}@latest`
12
+ };
13
+ if (/pnpm/.test(execPath)) return {
14
+ cmd: "pnpm",
15
+ install: `pnpm add -g ${PKG}@latest`
16
+ };
17
+ if (/yarn/.test(execPath)) return {
18
+ cmd: "yarn",
19
+ install: `yarn global add ${PKG}@latest`
20
+ };
21
+ return {
22
+ cmd: "npm",
23
+ install: `npm install -g ${PKG}@latest`
24
+ };
25
+ }
26
+ async function runUpdate() {
27
+ console.log(`Current version: ${VERSION}`);
28
+ console.log("Checking for updates...");
29
+ const update = await checkForUpdate();
30
+ if (!update) {
31
+ console.log(pc.green("Already up to date."));
32
+ return;
33
+ }
34
+ const pm = detectPackageManager();
35
+ const invocationMode = detectInvocationMode();
36
+ console.log(`New version available: ${update.latest}`);
37
+ if (invocationMode === "local-bun-script") {
38
+ console.log(pc.yellow("You are running the repo-local CLI via `bun cli`."));
39
+ console.log("Update this repository to use the newer CLI source, or install the published package globally:");
40
+ console.log(` ${pm.install}`);
41
+ return;
42
+ }
43
+ console.log(`Updating via ${pm.cmd}...`);
44
+ try {
45
+ execSync(pm.install, { stdio: "inherit" });
46
+ console.log(pc.green(`\nUpdated to ${update.latest}`));
47
+ } catch {
48
+ console.error(pc.red("Update failed. Try manually:"));
49
+ console.error(` ${pm.install}`);
50
+ process.exit(1);
51
+ }
52
+ }
53
+ //#endregion
54
+ export { runUpdate };
55
+
56
+ //# sourceMappingURL=update6.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update6.mjs","names":[],"sources":["../../src/commands/update.ts"],"sourcesContent":["import { execSync } from \"node:child_process\"\nimport pc from \"picocolors\"\nimport { VERSION } from \"../constants.js\"\nimport { detectInvocationMode } from \"../invocation.js\"\nimport { checkForUpdate } from \"../update-check.js\"\n\nconst PKG = \"@agi-ventures-canada/hackathon-cli\"\n\nfunction detectPackageManager(): { cmd: string; install: string } {\n const execPath = process.env.npm_execpath ?? process.env._ ?? \"\"\n if (/bun/.test(execPath)) return { cmd: \"bun\", install: `bun install -g ${PKG}@latest` }\n if (/pnpm/.test(execPath)) return { cmd: \"pnpm\", install: `pnpm add -g ${PKG}@latest` }\n if (/yarn/.test(execPath)) return { cmd: \"yarn\", install: `yarn global add ${PKG}@latest` }\n return { cmd: \"npm\", install: `npm install -g ${PKG}@latest` }\n}\n\nexport async function runUpdate(): Promise<void> {\n console.log(`Current version: ${VERSION}`)\n console.log(\"Checking for updates...\")\n\n const update = await checkForUpdate()\n if (!update) {\n console.log(pc.green(\"Already up to date.\"))\n return\n }\n\n const pm = detectPackageManager()\n const invocationMode = detectInvocationMode()\n console.log(`New version available: ${update.latest}`)\n\n if (invocationMode === \"local-bun-script\") {\n console.log(pc.yellow(\"You are running the repo-local CLI via `bun cli`.\"))\n console.log(\"Update this repository to use the newer CLI source, or install the published package globally:\")\n console.log(` ${pm.install}`)\n return\n }\n\n console.log(`Updating via ${pm.cmd}...`)\n\n try {\n execSync(pm.install, { stdio: \"inherit\" })\n console.log(pc.green(`\\nUpdated to ${update.latest}`))\n } catch {\n console.error(pc.red(\"Update failed. Try manually:\"))\n console.error(` ${pm.install}`)\n process.exit(1)\n }\n}\n"],"mappings":";;;;;AAMA,MAAM,MAAM;AAEZ,SAAS,uBAAyD;CAChE,MAAM,WAAW,QAAQ,IAAI,gBAAgB,QAAQ,IAAI,KAAK;AAC9D,KAAI,MAAM,KAAK,SAAS,CAAE,QAAO;EAAE,KAAK;EAAO,SAAS,kBAAkB,IAAI;EAAU;AACxF,KAAI,OAAO,KAAK,SAAS,CAAE,QAAO;EAAE,KAAK;EAAQ,SAAS,eAAe,IAAI;EAAU;AACvF,KAAI,OAAO,KAAK,SAAS,CAAE,QAAO;EAAE,KAAK;EAAQ,SAAS,mBAAmB,IAAI;EAAU;AAC3F,QAAO;EAAE,KAAK;EAAO,SAAS,kBAAkB,IAAI;EAAU;;AAGhE,eAAsB,YAA2B;AAC/C,SAAQ,IAAI,oBAAoB,UAAU;AAC1C,SAAQ,IAAI,0BAA0B;CAEtC,MAAM,SAAS,MAAM,gBAAgB;AACrC,KAAI,CAAC,QAAQ;AACX,UAAQ,IAAI,GAAG,MAAM,sBAAsB,CAAC;AAC5C;;CAGF,MAAM,KAAK,sBAAsB;CACjC,MAAM,iBAAiB,sBAAsB;AAC7C,SAAQ,IAAI,0BAA0B,OAAO,SAAS;AAEtD,KAAI,mBAAmB,oBAAoB;AACzC,UAAQ,IAAI,GAAG,OAAO,oDAAoD,CAAC;AAC3E,UAAQ,IAAI,iGAAiG;AAC7G,UAAQ,IAAI,KAAK,GAAG,UAAU;AAC9B;;AAGF,SAAQ,IAAI,gBAAgB,GAAG,IAAI,KAAK;AAExC,KAAI;AACF,WAAS,GAAG,SAAS,EAAE,OAAO,WAAW,CAAC;AAC1C,UAAQ,IAAI,GAAG,MAAM,gBAAgB,OAAO,SAAS,CAAC;SAChD;AACN,UAAQ,MAAM,GAAG,IAAI,+BAA+B,CAAC;AACrD,UAAQ,MAAM,KAAK,GAAG,UAAU;AAChC,UAAQ,KAAK,EAAE"}
package/dist/cli.mjs CHANGED
@@ -22,6 +22,13 @@ var OatmealClient = class {
22
22
  body
23
23
  });
24
24
  }
25
+ async put(path, body, options) {
26
+ return this.request(path, {
27
+ ...options,
28
+ method: "PUT",
29
+ body
30
+ });
31
+ }
25
32
  async patch(path, body, options) {
26
33
  return this.request(path, {
27
34
  ...options,
@@ -32,7 +39,8 @@ var OatmealClient = class {
32
39
  async delete(path, options) {
33
40
  return this.request(path, {
34
41
  ...options,
35
- method: "DELETE"
42
+ method: "DELETE",
43
+ body: options?.body
36
44
  });
37
45
  }
38
46
  async request(path, options = {}) {
@@ -222,23 +230,41 @@ const BANNER = `
222
230
  events create Create a hackathon
223
231
  events update <id> Update a hackathon
224
232
  events delete <id> Delete a hackathon
233
+ events activity <id> View activity log for a hackathon
225
234
  ${pc.dim("(alias: hackathons)")}
226
235
 
227
236
  ${pc.dim("JUDGING")}
228
- judging criteria list <id> List criteria
229
- judging criteria create <id> Create criteria
230
- judging criteria update <id> <cid> Update criteria
231
- judging criteria delete <id> <cid> Delete criteria
232
- judging judges list <id> List judges
233
- judging judges add <id> Add a judge
234
- judging judges remove <id> <pid> Remove a judge
235
- judging assignments list <id> List assignments
236
- judging assignments create <id> Create assignment
237
- judging assignments delete <id> <aid> Delete assignment
238
- judging auto-assign <id> Auto-assign judges
239
- judging invitations list <id> List invitations
240
- judging invitations cancel <id> <iid> Cancel invitation
241
- judging pick-results <id> View pick results
237
+ judging criteria list <id> List criteria
238
+ judging criteria create <id> Create criteria
239
+ judging criteria update <id> <cid> Update criteria
240
+ judging criteria delete <id> <cid> Delete criteria
241
+ judging levels list --hackathon-id <id> --criteria-id <cid> List rubric levels
242
+ judging levels add --hackathon-id <id> --criteria-id <cid> Add a rubric level
243
+ judging levels update --hackathon-id <id> --criteria-id <cid> Update a rubric level
244
+ judging levels delete --hackathon-id <id> --criteria-id <cid> Delete a rubric level
245
+ judging judges list <id> List judges
246
+ judging judges add <id> Add a judge
247
+ judging judges remove <id> <pid> Remove a judge
248
+ judging assignments list <id> List assignments
249
+ judging assignments create <id> Create assignment
250
+ judging assignments delete <id> <aid> Delete assignment
251
+ judging auto-assign <id> Auto-assign judges
252
+ judging invitations list <id> List invitations
253
+ judging invitations cancel <id> <iid> Cancel invitation
254
+ judging track-assign <id> Assign judge to track
255
+ judging track-unassign <id> Remove judge from track
256
+ judging pick-results <id> View pick results
257
+
258
+ ${pc.dim("PRIZE TRACKS")}
259
+ tracks list <id> List prize tracks
260
+ tracks get <id> <tid> Get track details
261
+ tracks create <id> Create a track
262
+ tracks update <id> <tid> Update a track
263
+ tracks delete <id> <tid> Delete a track
264
+ tracks buckets <id> <tid> <rid> Replace bucket definitions
265
+ tracks update-round <id> <tid> <rid> Update a round
266
+ tracks activate-round <id> <tid> <rid> Activate a round
267
+ tracks calculate-results <id> <tid> <rid> Calculate round results
242
268
 
243
269
  ${pc.dim("PRIZES")}
244
270
  prizes list <id> List prizes
@@ -281,15 +307,6 @@ const BANNER = `
281
307
  schedules update <id> Update a schedule
282
308
  schedules delete <id> Delete a schedule
283
309
 
284
- ${pc.dim("ADMIN (requires API key with admin:read, admin:write, admin:scenarios scopes)")}
285
- admin stats Platform-wide statistics
286
- admin hackathons list List all hackathons across tenants
287
- admin hackathons get <id> Get hackathon details
288
- admin hackathons update <id> Update any hackathon field
289
- admin hackathons delete <id> Delete a hackathon (--yes auto-confirms name, skips interactive prompt)
290
- admin scenarios list List available test scenarios
291
- admin scenarios run <name> Run a test scenario
292
-
293
310
  ${pc.dim("GLOBAL OPTIONS")}
294
311
  --json Output as JSON
295
312
  --yes, -y Skip confirmation prompts
@@ -333,7 +350,7 @@ async function main() {
333
350
  break;
334
351
  }
335
352
  case "update": {
336
- const { runUpdate } = await import("./_chunks/update5.mjs");
353
+ const { runUpdate } = await import("./_chunks/update6.mjs");
337
354
  await runUpdate();
338
355
  return;
339
356
  }
@@ -395,6 +412,11 @@ async function main() {
395
412
  await runHackathonsDelete(client, rest[2], { yes: flags.yes });
396
413
  break;
397
414
  }
415
+ case "activity": {
416
+ const { runHackathonsActivity } = await import("./_chunks/activity.mjs");
417
+ await runHackathonsActivity(client, rest[2], rest.slice(3).concat(flags.json ? ["--json"] : []));
418
+ break;
419
+ }
398
420
  default:
399
421
  console.error(`Unknown events command: ${sub}. Run "hackathon events --help" for usage.`);
400
422
  process.exit(1);
@@ -432,6 +454,52 @@ async function main() {
432
454
  process.exit(1);
433
455
  }
434
456
  break;
457
+ case "levels": {
458
+ const levelArgs = rest.slice(3).concat(flags.json ? ["--json"] : []).concat(flags.yes ? ["--yes"] : []);
459
+ const parseLevelFlags = (a) => {
460
+ let hackathonId = "";
461
+ let criteriaId = "";
462
+ let levelId = "";
463
+ for (let i = 0; i < a.length; i++) if (a[i] === "--hackathon-id") hackathonId = a[++i];
464
+ else if (a[i] === "--criteria-id") criteriaId = a[++i];
465
+ else if (a[i] === "--level-id") levelId = a[++i];
466
+ return {
467
+ hackathonId,
468
+ criteriaId,
469
+ levelId
470
+ };
471
+ };
472
+ const levelFlags = parseLevelFlags(levelArgs);
473
+ switch (sub2) {
474
+ case "list": {
475
+ const { runLevelsList } = await import("./_chunks/levels-list.mjs");
476
+ await runLevelsList(client, levelFlags.hackathonId, levelFlags.criteriaId, { json: flags.json });
477
+ break;
478
+ }
479
+ case "add": {
480
+ const { runLevelsAdd } = await import("./_chunks/levels-add.mjs");
481
+ await runLevelsAdd(client, levelFlags.hackathonId, levelFlags.criteriaId, levelArgs);
482
+ break;
483
+ }
484
+ case "update": {
485
+ const { runLevelsUpdate } = await import("./_chunks/levels-update.mjs");
486
+ await runLevelsUpdate(client, levelFlags.hackathonId, levelFlags.criteriaId, levelFlags.levelId, levelArgs);
487
+ break;
488
+ }
489
+ case "delete": {
490
+ const { runLevelsDelete } = await import("./_chunks/levels-delete.mjs");
491
+ await runLevelsDelete(client, levelFlags.hackathonId, levelFlags.criteriaId, levelFlags.levelId, {
492
+ yes: flags.yes,
493
+ json: flags.json
494
+ });
495
+ break;
496
+ }
497
+ default:
498
+ console.error(`Unknown judging levels command: ${sub2}`);
499
+ process.exit(1);
500
+ }
501
+ break;
502
+ }
435
503
  case "judges":
436
504
  switch (sub2) {
437
505
  case "list": {
@@ -498,6 +566,16 @@ async function main() {
498
566
  process.exit(1);
499
567
  }
500
568
  break;
569
+ case "track-assign": {
570
+ const { runTrackAssign } = await import("./_chunks/track-assign.mjs");
571
+ await runTrackAssign(client, hackathonId, rest.slice(3).concat(flags.json ? ["--json"] : []));
572
+ break;
573
+ }
574
+ case "track-unassign": {
575
+ const { runTrackUnassign } = await import("./_chunks/track-unassign.mjs");
576
+ await runTrackUnassign(client, hackathonId, rest.slice(3).concat(flags.json ? ["--json"] : []).concat(flags.yes ? ["--yes"] : []));
577
+ break;
578
+ }
501
579
  case "pick-results": {
502
580
  const { runPickResults } = await import("./_chunks/pick-results.mjs");
503
581
  await runPickResults(client, hackathonId, { json: flags.json });
@@ -509,6 +587,60 @@ async function main() {
509
587
  }
510
588
  break;
511
589
  }
590
+ case "tracks": {
591
+ const client = createAuthenticatedClient(flags);
592
+ switch (sub) {
593
+ case "list": {
594
+ const { runTracksList } = await import("./_chunks/list6.mjs");
595
+ await runTracksList(client, rest[2], { json: flags.json });
596
+ break;
597
+ }
598
+ case "get": {
599
+ const { runTracksGet } = await import("./_chunks/get5.mjs");
600
+ await runTracksGet(client, rest[2], rest[3], { json: flags.json });
601
+ break;
602
+ }
603
+ case "create": {
604
+ const { runTracksCreate } = await import("./_chunks/create6.mjs");
605
+ await runTracksCreate(client, rest[2], rest.slice(3).concat(flags.json ? ["--json"] : []));
606
+ break;
607
+ }
608
+ case "update": {
609
+ const { runTracksUpdate } = await import("./_chunks/update5.mjs");
610
+ await runTracksUpdate(client, rest[2], rest[3], rest.slice(4).concat(flags.json ? ["--json"] : []));
611
+ break;
612
+ }
613
+ case "delete": {
614
+ const { runTracksDelete } = await import("./_chunks/delete5.mjs");
615
+ await runTracksDelete(client, rest[2], rest[3], { yes: flags.yes });
616
+ break;
617
+ }
618
+ case "buckets": {
619
+ const { runTracksBuckets } = await import("./_chunks/buckets.mjs");
620
+ await runTracksBuckets(client, rest[2], rest[3], rest[4], rest.slice(5).concat(flags.json ? ["--json"] : []));
621
+ break;
622
+ }
623
+ case "update-round": {
624
+ const { runTracksUpdateRound } = await import("./_chunks/update-round.mjs");
625
+ await runTracksUpdateRound(client, rest[2], rest[3], rest[4], rest.slice(5).concat(flags.json ? ["--json"] : []));
626
+ break;
627
+ }
628
+ case "activate-round": {
629
+ const { runTracksActivateRound } = await import("./_chunks/activate-round.mjs");
630
+ await runTracksActivateRound(client, rest[2], rest[3], rest[4], { json: flags.json });
631
+ break;
632
+ }
633
+ case "calculate-results": {
634
+ const { runTracksCalculateResults } = await import("./_chunks/calculate-results.mjs");
635
+ await runTracksCalculateResults(client, rest[2], rest[3], rest[4], { json: flags.json });
636
+ break;
637
+ }
638
+ default:
639
+ console.error(`Unknown tracks command: ${sub}. Run "hackathon tracks --help" for usage.`);
640
+ process.exit(1);
641
+ }
642
+ break;
643
+ }
512
644
  case "prizes": {
513
645
  const client = createAuthenticatedClient(flags);
514
646
  switch (sub) {
@@ -620,17 +752,17 @@ async function main() {
620
752
  const client = createAuthenticatedClient(flags);
621
753
  switch (sub) {
622
754
  case "list": {
623
- const { runWebhooksList } = await import("./_chunks/list6.mjs");
755
+ const { runWebhooksList } = await import("./_chunks/list7.mjs");
624
756
  await runWebhooksList(client, { json: flags.json });
625
757
  break;
626
758
  }
627
759
  case "create": {
628
- const { runWebhooksCreate } = await import("./_chunks/create6.mjs");
760
+ const { runWebhooksCreate } = await import("./_chunks/create7.mjs");
629
761
  await runWebhooksCreate(client, rest.slice(2).concat(flags.json ? ["--json"] : []));
630
762
  break;
631
763
  }
632
764
  case "delete": {
633
- const { runWebhooksDelete } = await import("./_chunks/delete5.mjs");
765
+ const { runWebhooksDelete } = await import("./_chunks/delete6.mjs");
634
766
  await runWebhooksDelete(client, rest[2], { yes: flags.yes });
635
767
  break;
636
768
  }
@@ -708,64 +840,6 @@ async function main() {
708
840
  }
709
841
  break;
710
842
  }
711
- case "admin": {
712
- const client = createAuthenticatedClient(flags);
713
- switch (sub) {
714
- case "stats": {
715
- const { runAdminStats } = await import("./_chunks/stats.mjs");
716
- await runAdminStats(client, { json: flags.json });
717
- break;
718
- }
719
- case "hackathons":
720
- switch (sub2) {
721
- case "list": {
722
- const { runAdminHackathonsList } = await import("./_chunks/hackathons-list.mjs");
723
- await runAdminHackathonsList(client, rest.slice(3), { json: flags.json });
724
- break;
725
- }
726
- case "get": {
727
- const { runAdminHackathonsGet } = await import("./_chunks/hackathons-get.mjs");
728
- await runAdminHackathonsGet(client, rest[3], { json: flags.json });
729
- break;
730
- }
731
- case "update": {
732
- const { runAdminHackathonsUpdate } = await import("./_chunks/hackathons-update.mjs");
733
- await runAdminHackathonsUpdate(client, rest[3], rest.slice(4), { json: flags.json });
734
- break;
735
- }
736
- case "delete": {
737
- const { runAdminHackathonsDelete } = await import("./_chunks/hackathons-delete.mjs");
738
- await runAdminHackathonsDelete(client, rest[3], { yes: flags.yes });
739
- break;
740
- }
741
- default:
742
- console.error(`Unknown admin hackathons command: ${sub2}`);
743
- process.exit(1);
744
- }
745
- break;
746
- case "scenarios":
747
- switch (sub2) {
748
- case "list": {
749
- const { runAdminScenariosList } = await import("./_chunks/scenarios-list.mjs");
750
- await runAdminScenariosList(client, { json: flags.json });
751
- break;
752
- }
753
- case "run": {
754
- const { runAdminScenariosRun } = await import("./_chunks/scenarios-run.mjs");
755
- await runAdminScenariosRun(client, rest[3], rest.slice(4), { json: flags.json });
756
- break;
757
- }
758
- default:
759
- console.error(`Unknown admin scenarios command: ${sub2}`);
760
- process.exit(1);
761
- }
762
- break;
763
- default:
764
- console.error(`Unknown admin command: ${sub}. Run "hackathon admin --help" for usage.`);
765
- process.exit(1);
766
- }
767
- break;
768
- }
769
843
  default:
770
844
  console.error(`Unknown command: ${command}. Run "hackathon --help" for usage.`);
771
845
  process.exit(1);