@noodleseed/one 0.6.0 → 0.8.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.
Files changed (66) hide show
  1. package/dist/banner.d.ts +11 -0
  2. package/dist/banner.d.ts.map +1 -0
  3. package/dist/banner.js +183 -0
  4. package/dist/banner.js.map +1 -0
  5. package/dist/cli.d.ts.map +1 -1
  6. package/dist/cli.js +8 -1
  7. package/dist/cli.js.map +1 -1
  8. package/dist/commands/connect-oauth.d.ts +26 -0
  9. package/dist/commands/connect-oauth.d.ts.map +1 -0
  10. package/dist/commands/connect-oauth.js +160 -0
  11. package/dist/commands/connect-oauth.js.map +1 -0
  12. package/dist/commands/connect.d.ts +3 -0
  13. package/dist/commands/connect.d.ts.map +1 -0
  14. package/dist/commands/connect.js +180 -0
  15. package/dist/commands/connect.js.map +1 -0
  16. package/dist/commands/deploy-ops.d.ts.map +1 -1
  17. package/dist/commands/deploy-ops.js +24 -1
  18. package/dist/commands/deploy-ops.js.map +1 -1
  19. package/dist/commands/project-setup.d.ts +1 -3
  20. package/dist/commands/project-setup.d.ts.map +1 -1
  21. package/dist/commands/project-setup.js +7 -109
  22. package/dist/commands/project-setup.js.map +1 -1
  23. package/dist/commands/shared.d.ts.map +1 -1
  24. package/dist/commands/shared.js +4 -1
  25. package/dist/commands/shared.js.map +1 -1
  26. package/dist/dev.d.ts.map +1 -1
  27. package/dist/dev.js +9 -1
  28. package/dist/dev.js.map +1 -1
  29. package/dist/first-run-entry.d.ts +2 -0
  30. package/dist/first-run-entry.d.ts.map +1 -0
  31. package/dist/first-run-entry.js +36 -0
  32. package/dist/first-run-entry.js.map +1 -0
  33. package/dist/first-run.d.ts +26 -0
  34. package/dist/first-run.d.ts.map +1 -0
  35. package/dist/first-run.js +439 -0
  36. package/dist/first-run.js.map +1 -0
  37. package/dist/gradient.d.ts +46 -0
  38. package/dist/gradient.d.ts.map +1 -0
  39. package/dist/gradient.js +87 -0
  40. package/dist/gradient.js.map +1 -0
  41. package/dist/openapi-import.d.ts.map +1 -1
  42. package/dist/openapi-import.js +47 -8
  43. package/dist/openapi-import.js.map +1 -1
  44. package/dist/prompts.d.ts +61 -0
  45. package/dist/prompts.d.ts.map +1 -0
  46. package/dist/prompts.js +209 -0
  47. package/dist/prompts.js.map +1 -0
  48. package/dist/status.d.ts +58 -0
  49. package/dist/status.d.ts.map +1 -0
  50. package/dist/status.js +106 -0
  51. package/dist/status.js.map +1 -0
  52. package/node_modules/@noodle-borg/agent-kit/dist/curated/command-groups.d.ts.map +1 -1
  53. package/node_modules/@noodle-borg/agent-kit/dist/curated/command-groups.js +4 -0
  54. package/node_modules/@noodle-borg/agent-kit/dist/curated/command-groups.js.map +1 -1
  55. package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.d.ts.map +1 -1
  56. package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.js +1 -0
  57. package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.js.map +1 -1
  58. package/node_modules/@noodle-borg/openapi-import/dist/index.d.ts +4 -0
  59. package/node_modules/@noodle-borg/openapi-import/dist/index.d.ts.map +1 -1
  60. package/node_modules/@noodle-borg/openapi-import/dist/index.js +27 -1
  61. package/node_modules/@noodle-borg/openapi-import/dist/index.js.map +1 -1
  62. package/node_modules/@noodle-borg/openapi-import/dist/response-schema.d.ts +50 -0
  63. package/node_modules/@noodle-borg/openapi-import/dist/response-schema.d.ts.map +1 -0
  64. package/node_modules/@noodle-borg/openapi-import/dist/response-schema.js +227 -0
  65. package/node_modules/@noodle-borg/openapi-import/dist/response-schema.js.map +1 -0
  66. package/package.json +2 -2
@@ -0,0 +1,11 @@
1
+ import { type ColorMode, type GlyphMode } from './gradient.js';
2
+ /** The settled (non-animated) splash string, with surrounding blank lines. */
3
+ export declare function renderBanner(mode: ColorMode, glyph?: GlyphMode): string;
4
+ /**
5
+ * Print the branded welcome for `noodle init`: animated on a wide, colored, Unicode
6
+ * TTY (truecolor or 256-color); a static frame otherwise; nothing when piped/redirected.
7
+ * Color/animation are suppressed under `NO_COLOR` and `CI` (via `detectColorMode`), so
8
+ * even a CI runner with a TTY never receives ANSI escapes.
9
+ */
10
+ export declare function printBanner(): Promise<void>;
11
+ //# sourceMappingURL=banner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"banner.d.ts","sourceRoot":"","sources":["../src/banner.ts"],"names":[],"mappings":"AAaA,OAAO,EAEL,KAAK,SAAS,EAKd,KAAK,SAAS,EAOf,MAAM,eAAe,CAAC;AAuHvB,8EAA8E;AAC9E,wBAAgB,YAAY,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,GAAE,SAAqB,GAAG,MAAM,CAQlF;AA0CD;;;;;GAKG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAUjD"}
package/dist/banner.js ADDED
@@ -0,0 +1,183 @@
1
+ /**
2
+ * Branded ASCII splash for `noodle init`. The "Noodle Seed" wordmark (ANSI Shadow
3
+ * block font) is baked in as a constant so there is no runtime figlet dependency.
4
+ *
5
+ * On a wide interactive TTY it animates: the warm brand gradient (orange -> amber
6
+ * -> rose) flows through the block faces once, then settles — in truecolor where
7
+ * advertised, else a 256-color fallback so macOS Terminal.app and bare xterm stay
8
+ * warm. On a terminal without safe Unicode it falls back to a plain "NOODLE SEED"
9
+ * wordmark. Suppressed under `--json` (the caller gates), pipes, CI, and `NO_COLOR`.
10
+ */
11
+ import { execFileSync } from 'node:child_process';
12
+ import { readFileSync } from 'node:fs';
13
+ import { userInfo } from 'node:os';
14
+ import { CLEAR_EOL, cursorUp, cyclic, detectColorMode, detectGlyphMode, HIDE_CURSOR, paint, RESET, SHOW_CURSOR, sgr, } from './gradient.js';
15
+ const WORDMARK = [
16
+ '███╗ ██╗ ██████╗ ██████╗ ██████╗ ██╗ ███████╗ ███████╗███████╗███████╗██████╗',
17
+ '████╗ ██║██╔═══██╗██╔═══██╗██╔══██╗██║ ██╔════╝ ██╔════╝██╔════╝██╔════╝██╔══██╗',
18
+ '██╔██╗ ██║██║ ██║██║ ██║██║ ██║██║ █████╗ ███████╗█████╗ █████╗ ██║ ██║',
19
+ '██║╚██╗██║██║ ██║██║ ██║██║ ██║██║ ██╔══╝ ╚════██║██╔══╝ ██╔══╝ ██║ ██║',
20
+ '██║ ╚████║╚██████╔╝╚██████╔╝██████╔╝███████╗███████╗ ███████║███████╗███████╗██████╔╝',
21
+ '╚═╝ ╚═══╝ ╚═════╝ ╚═════╝ ╚═════╝ ╚══════╝╚══════╝ ╚══════╝╚══════╝╚══════╝╚═════╝',
22
+ ];
23
+ const WIDTH = Math.max(...WORDMARK.map((l) => [...l].length));
24
+ const TAGLINE = 'Go headless. Turn your software into an MCP server and plugin.';
25
+ const GREY = [163, 163, 163];
26
+ const DIM_GREY = [115, 115, 115];
27
+ // Half a palette cycle spans the width, so at phase 0 the wordmark reads orange -> rose.
28
+ const SPAN = 0.5;
29
+ // Shadow/edge glyphs (everything but the solid block) are dimmed for depth.
30
+ const EDGE_DIM = 0.45;
31
+ function colorLine(chars, phase, dimEdges, mode) {
32
+ let out = '';
33
+ for (let i = 0; i < chars.length; i++) {
34
+ const ch = chars[i];
35
+ if (ch === ' ') {
36
+ out += ' ';
37
+ continue;
38
+ }
39
+ let c = cyclic((i / (WIDTH - 1)) * SPAN + phase);
40
+ if (dimEdges && ch !== '█')
41
+ c = [Math.round(c[0] * EDGE_DIM), Math.round(c[1] * EDGE_DIM), Math.round(c[2] * EDGE_DIM)];
42
+ out += `${sgr(c, mode)}${ch}`;
43
+ }
44
+ return `${out}${RESET}`;
45
+ }
46
+ /** Wordmark + gradient rule at a flow phase; each line optionally cleared to EOL (for redraws). */
47
+ function block(phase, clear, mode) {
48
+ const suffix = clear ? CLEAR_EOL : '';
49
+ const lines = WORDMARK.map((l) => colorLine([...l], phase, true, mode) + suffix);
50
+ lines.push(colorLine(Array.from({ length: WIDTH }, () => '─'), phase, false, mode) + suffix);
51
+ return `${lines.join('\n')}\n`;
52
+ }
53
+ function plainBlock() {
54
+ return `${[...WORDMARK, '─'.repeat(WIDTH)].join('\n')}\n`;
55
+ }
56
+ /** ASCII-safe fallback wordmark for terminals without trusted Unicode: plain letters, warm gradient. */
57
+ function asciiWordmark(mode) {
58
+ const text = 'NOODLE SEED';
59
+ const chars = [...text];
60
+ const wm = chars
61
+ .map((ch, i) => (ch === ' ' ? ' ' : paint(cyclic((i / (chars.length - 1)) * SPAN), ch, mode)))
62
+ .join('');
63
+ const rule = paint(GREY, '-'.repeat(text.length), mode);
64
+ return `${wm}\n${rule}\n`;
65
+ }
66
+ const titleCase = (s) => s ? s.charAt(0).toUpperCase() + s.slice(1).toLowerCase() : '';
67
+ function gitConfig(key) {
68
+ try {
69
+ return execFileSync('git', ['config', key], {
70
+ encoding: 'utf8',
71
+ stdio: ['ignore', 'pipe', 'ignore'],
72
+ timeout: 500,
73
+ }).trim();
74
+ }
75
+ catch {
76
+ return '';
77
+ }
78
+ }
79
+ /** Best-effort friendly first name: git full name, else the email's first name, else the OS user, else "Noodler". */
80
+ function detectName() {
81
+ const name = gitConfig('user.name');
82
+ if (name.includes(' '))
83
+ return titleCase(name.split(/\s+/)[0] ?? '');
84
+ const email = gitConfig('user.email');
85
+ if (email.includes('@')) {
86
+ const local = (email.split('@')[0] ?? '').split(/[._+-]/)[0];
87
+ if (local)
88
+ return titleCase(local);
89
+ }
90
+ if (name)
91
+ return titleCase(name);
92
+ try {
93
+ const user = userInfo().username;
94
+ if (user)
95
+ return titleCase(user);
96
+ }
97
+ catch {
98
+ // userInfo can throw without a home dir; fall through
99
+ }
100
+ return 'Noodler';
101
+ }
102
+ /** The installed CLI version, read from the package manifest (same file `noodle --version` reads). */
103
+ function cliVersion() {
104
+ try {
105
+ const pkg = JSON.parse(readFileSync(new URL('../package.json', import.meta.url), 'utf8'));
106
+ return typeof pkg.version === 'string' ? pkg.version : '';
107
+ }
108
+ catch {
109
+ return '';
110
+ }
111
+ }
112
+ const tagline = (mode) => paint(GREY, TAGLINE, mode);
113
+ function greeting(mode) {
114
+ const version = cliVersion();
115
+ const ver = version ? ` · v${version}` : '';
116
+ return paint(DIM_GREY, `Welcome ${detectName()}!${ver} · docs.noodleseed.dev`, mode);
117
+ }
118
+ /** The settled (non-animated) splash string, with surrounding blank lines. */
119
+ export function renderBanner(mode, glyph = 'unicode') {
120
+ const wm = glyph === 'ascii'
121
+ ? asciiWordmark(mode)
122
+ : mode === 'none'
123
+ ? plainBlock()
124
+ : block(0, false, mode);
125
+ return `\n${wm}${tagline(mode)}\n${greeting(mode)}\n\n`;
126
+ }
127
+ /** Async frame delay so SIGINT is handled between frames — the splash stays interruptible. */
128
+ function delay(ms) {
129
+ return new Promise((resolve) => {
130
+ setTimeout(resolve, ms);
131
+ });
132
+ }
133
+ const FRAMES = 46;
134
+ const STEP_MS = 62; // ~2.8s, a single slow flow-through then settle
135
+ async function animate(mode) {
136
+ const out = process.stdout;
137
+ const up = cursorUp(WORDMARK.length + 1); // wordmark rows + rule
138
+ // The animation blocks the loop, so a Ctrl+C mid-flight would skip the finally and leave the
139
+ // cursor hidden. Guard every exit path: SIGINT restores + exits, `exit` covers other teardown.
140
+ const restore = () => {
141
+ out.write(SHOW_CURSOR);
142
+ };
143
+ const onSigint = () => {
144
+ restore();
145
+ process.exit(130);
146
+ };
147
+ process.once('exit', restore);
148
+ process.once('SIGINT', onSigint);
149
+ out.write(`\n${HIDE_CURSOR}`);
150
+ try {
151
+ out.write(block(0, true, mode));
152
+ for (let f = 1; f <= FRAMES; f++) {
153
+ await delay(STEP_MS);
154
+ out.write(up + block(f / FRAMES, true, mode)); // phase 0 -> 1 (one cycle), lands at canonical
155
+ }
156
+ out.write(up + block(0, true, mode)); // settle
157
+ }
158
+ finally {
159
+ restore();
160
+ process.off('exit', restore);
161
+ process.off('SIGINT', onSigint);
162
+ }
163
+ out.write(`${tagline(mode)}\n${greeting(mode)}\n\n`);
164
+ }
165
+ /**
166
+ * Print the branded welcome for `noodle init`: animated on a wide, colored, Unicode
167
+ * TTY (truecolor or 256-color); a static frame otherwise; nothing when piped/redirected.
168
+ * Color/animation are suppressed under `NO_COLOR` and `CI` (via `detectColorMode`), so
169
+ * even a CI runner with a TTY never receives ANSI escapes.
170
+ */
171
+ export async function printBanner() {
172
+ const out = process.stdout;
173
+ if (!out.isTTY)
174
+ return;
175
+ const mode = detectColorMode(out);
176
+ const glyph = detectGlyphMode();
177
+ if (mode !== 'none' && glyph === 'unicode' && (out.columns ?? WIDTH) >= WIDTH) {
178
+ await animate(mode);
179
+ return;
180
+ }
181
+ out.write(renderBanner(mode, glyph));
182
+ }
183
+ //# sourceMappingURL=banner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"banner.js","sourceRoot":"","sources":["../src/banner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EACL,SAAS,EAET,QAAQ,EACR,MAAM,EACN,eAAe,EACf,eAAe,EAEf,WAAW,EACX,KAAK,EACL,KAAK,EAEL,WAAW,EACX,GAAG,GACJ,MAAM,eAAe,CAAC;AAEvB,MAAM,QAAQ,GAAG;IACf,yFAAyF;IACzF,0FAA0F;IAC1F,0FAA0F;IAC1F,0FAA0F;IAC1F,0FAA0F;IAC1F,yFAAyF;CAC1F,CAAC;AACF,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAC9D,MAAM,OAAO,GAAG,gEAAgE,CAAC;AACjF,MAAM,IAAI,GAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAClC,MAAM,QAAQ,GAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAEtC,yFAAyF;AACzF,MAAM,IAAI,GAAG,GAAG,CAAC;AACjB,4EAA4E;AAC5E,MAAM,QAAQ,GAAG,IAAI,CAAC;AAEtB,SAAS,SAAS,CAAC,KAAe,EAAE,KAAa,EAAE,QAAiB,EAAE,IAAe;IACnF,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YACf,GAAG,IAAI,GAAG,CAAC;YACX,SAAS;QACX,CAAC;QACD,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC,CAAC;QACjD,IAAI,QAAQ,IAAI,EAAE,KAAK,GAAG;YACxB,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;QAC9F,GAAG,IAAI,GAAG,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;IAChC,CAAC;IACD,OAAO,GAAG,GAAG,GAAG,KAAK,EAAE,CAAC;AAC1B,CAAC;AAED,mGAAmG;AACnG,SAAS,KAAK,CAAC,KAAa,EAAE,KAAc,EAAE,IAAe;IAC3D,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IACtC,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;IACjF,KAAK,CAAC,IAAI,CACR,SAAS,CACP,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EACxC,KAAK,EACL,KAAK,EACL,IAAI,CACL,GAAG,MAAM,CACX,CAAC;IACF,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACjC,CAAC;AAED,SAAS,UAAU;IACjB,OAAO,GAAG,CAAC,GAAG,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AAC5D,CAAC;AAED,wGAAwG;AACxG,SAAS,aAAa,CAAC,IAAe;IACpC,MAAM,IAAI,GAAG,aAAa,CAAC;IAC3B,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;IACxB,MAAM,EAAE,GAAG,KAAK;SACb,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;SAC7F,IAAI,CAAC,EAAE,CAAC,CAAC;IACZ,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC;IACxD,OAAO,GAAG,EAAE,KAAK,IAAI,IAAI,CAAC;AAC5B,CAAC;AAED,MAAM,SAAS,GAAG,CAAC,CAAS,EAAU,EAAE,CACtC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AAEhE,SAAS,SAAS,CAAC,GAAW;IAC5B,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE;YAC1C,QAAQ,EAAE,MAAM;YAChB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC;YACnC,OAAO,EAAE,GAAG;SACb,CAAC,CAAC,IAAI,EAAE,CAAC;IACZ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,qHAAqH;AACrH,SAAS,UAAU;IACjB,MAAM,IAAI,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC;IACpC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACrE,MAAM,KAAK,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC;IACtC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7D,IAAI,KAAK;YAAE,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IACD,IAAI,IAAI;QAAE,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC;IACjC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,QAAQ,EAAE,CAAC,QAAQ,CAAC;QACjC,IAAI,IAAI;YAAE,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,sDAAsD;IACxD,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,sGAAsG;AACtG,SAAS,UAAU;IACjB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAEvF,CAAC;QACF,OAAO,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,OAAO,GAAG,CAAC,IAAe,EAAU,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;AACxE,SAAS,QAAQ,CAAC,IAAe;IAC/B,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5C,OAAO,KAAK,CAAC,QAAQ,EAAE,WAAW,UAAU,EAAE,IAAI,GAAG,wBAAwB,EAAE,IAAI,CAAC,CAAC;AACvF,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,YAAY,CAAC,IAAe,EAAE,QAAmB,SAAS;IACxE,MAAM,EAAE,GACN,KAAK,KAAK,OAAO;QACf,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC;QACrB,CAAC,CAAC,IAAI,KAAK,MAAM;YACf,CAAC,CAAC,UAAU,EAAE;YACd,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IAC9B,OAAO,KAAK,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;AAC1D,CAAC;AAED,8FAA8F;AAC9F,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,MAAM,GAAG,EAAE,CAAC;AAClB,MAAM,OAAO,GAAG,EAAE,CAAC,CAAC,gDAAgD;AAEpE,KAAK,UAAU,OAAO,CAAC,IAAe;IACpC,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;IAC3B,MAAM,EAAE,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,uBAAuB;IACjE,6FAA6F;IAC7F,+FAA+F;IAC/F,MAAM,OAAO,GAAG,GAAS,EAAE;QACzB,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACzB,CAAC,CAAC;IACF,MAAM,QAAQ,GAAG,GAAS,EAAE;QAC1B,OAAO,EAAE,CAAC;QACV,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACpB,CAAC,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACjC,GAAG,CAAC,KAAK,CAAC,KAAK,WAAW,EAAE,CAAC,CAAC;IAC9B,IAAI,CAAC;QACH,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;QAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACjC,MAAM,KAAK,CAAC,OAAO,CAAC,CAAC;YACrB,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,GAAG,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,+CAA+C;QAChG,CAAC;QACD,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;IACjD,CAAC;YAAS,CAAC;QACT,OAAO,EAAE,CAAC;QACV,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAClC,CAAC;IACD,GAAG,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACvD,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;IAC3B,IAAI,CAAC,GAAG,CAAC,KAAK;QAAE,OAAO;IACvB,MAAM,IAAI,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IAClC,MAAM,KAAK,GAAG,eAAe,EAAE,CAAC;IAChC,IAAI,IAAI,KAAK,MAAM,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,EAAE,CAAC;QAC9E,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;QACpB,OAAO;IACT,CAAC;IACD,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AACvC,CAAC"}
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAqDA,wBAAsB,GAAG,CACvB,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,IAAI,GAAE,MAAkB,GACvB,OAAO,CAAC,MAAM,CAAC,CAOjB"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAuDA,wBAAsB,GAAG,CACvB,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,IAAI,GAAE,MAAkB,GACvB,OAAO,CAAC,MAAM,CAAC,CAOjB"}
package/dist/cli.js CHANGED
@@ -18,16 +18,19 @@ import { runAudit } from './commands/audit-ops.js';
18
18
  import { runAuth } from './commands/auth-ops.js';
19
19
  import { runDev, runSmoke as runLocalSmoke, runLocalTest, runValidate, } from './commands/author-loop.js';
20
20
  import { runConfigValues } from './commands/config-values.js';
21
+ import { runConnect } from './commands/connect.js';
21
22
  import { runAccess, runDeploy, runOpen, runRollback, runStatus } from './commands/deploy-ops.js';
22
23
  import { runHostedSmoke, runInspect } from './commands/diagnostics-ops.js';
23
24
  import { runLogs } from './commands/logs-ops.js';
24
25
  import { runCheck, runDevtools } from './commands/mcp-apps.js';
25
26
  import { runPolicy } from './commands/policy-ops.js';
26
- import { runConnect, runDocs, runExport, runImport, runInit, runLink, runSetup, } from './commands/project-setup.js';
27
+ import { runDocs, runExport, runImport, runInit, runLink, runSetup, } from './commands/project-setup.js';
27
28
  import { runServiceCommand } from './commands/service-ops.js';
28
29
  import { runList, runLogin, runLogout, runMembers, runOrgs, runTarget, runWhoami, } from './commands/session.js';
29
30
  import { usage } from './commands/shared.js';
30
31
  import { runDoctor } from './doctor.js';
32
+ import { runStart } from './first-run.js';
33
+ import { offerFirstRun } from './first-run-entry.js';
31
34
  import { currentCliVersion, maybeCheckForCliUpdate, runUpdateCommand } from './update.js';
32
35
  export async function run(argv, env = process.env, home = homedir()) {
33
36
  const [command, ...rest] = argv;
@@ -49,6 +52,10 @@ async function runCommand(command, rest, env, home) {
49
52
  case 'version':
50
53
  console.log(currentCliVersion());
51
54
  return 0;
55
+ case 'start':
56
+ return runStart(rest, env, home);
57
+ case undefined:
58
+ return offerFirstRun(env, home);
52
59
  case 'update':
53
60
  return runUpdateCommand(rest);
54
61
  case 'init':
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Static OAuth client setup helpers for MCP clients whose UI cannot complete MCP
3
+ * OAuth discovery and dynamic client registration by itself.
4
+ */
5
+ export interface GeminiEnterpriseSetup {
6
+ readonly client: 'gemini-enterprise';
7
+ readonly title: 'Gemini Enterprise';
8
+ readonly mcpServerUrl: string;
9
+ readonly authorizationUrl: string;
10
+ readonly authorizationUrlParameters: string;
11
+ readonly tokenUrl: string;
12
+ readonly clientId: string;
13
+ readonly clientSecret: string;
14
+ readonly clientSecretExpiresAt?: number;
15
+ readonly scopes: '';
16
+ readonly pkce: true;
17
+ readonly description: string;
18
+ readonly instructions: string;
19
+ }
20
+ export declare function geminiEnterpriseRegistrationBody(endpointResource: string, displayName: string | undefined): Record<string, unknown>;
21
+ export declare function connectGeminiEnterprise(input: {
22
+ readonly endpoint: string;
23
+ readonly name?: string;
24
+ readonly fetchImpl?: typeof fetch;
25
+ }): Promise<GeminiEnterpriseSetup>;
26
+ //# sourceMappingURL=connect-oauth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connect-oauth.d.ts","sourceRoot":"","sources":["../../src/commands/connect-oauth.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC;IACrC,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC;IACpC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,0BAA0B,EAAE,MAAM,CAAC;IAC5C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IACxC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAoBD,wBAAgB,gCAAgC,CAC9C,gBAAgB,EAAE,MAAM,EACxB,WAAW,EAAE,MAAM,GAAG,SAAS,GAC9B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAUzB;AAED,wBAAsB,uBAAuB,CAAC,KAAK,EAAE;IACnD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CACnC,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAqCjC"}
@@ -0,0 +1,160 @@
1
+ /**
2
+ * Static OAuth client setup helpers for MCP clients whose UI cannot complete MCP
3
+ * OAuth discovery and dynamic client registration by itself.
4
+ */
5
+ const GEMINI_ENTERPRISE_REDIRECT_URIS = [
6
+ 'https://vertexaisearch.cloud.google.com/oauth-redirect',
7
+ 'https://vertexaisearch.cloud.google.com/static/oauth/oauth.html',
8
+ ];
9
+ export function geminiEnterpriseRegistrationBody(endpointResource, displayName) {
10
+ const name = displayName?.trim();
11
+ const namePart = name === undefined || name.length === 0 ? '' : `${name} `;
12
+ return {
13
+ client_name: `Gemini Enterprise MCP ${namePart}${endpointResource}`.trim(),
14
+ redirect_uris: [...GEMINI_ENTERPRISE_REDIRECT_URIS],
15
+ token_endpoint_auth_method: 'client_secret_post',
16
+ grant_types: ['authorization_code', 'refresh_token'],
17
+ response_types: ['code'],
18
+ };
19
+ }
20
+ export async function connectGeminiEnterprise(input) {
21
+ const endpoint = normalizeUrl(input.endpoint);
22
+ const fetchImpl = input.fetchImpl ?? fetch;
23
+ const protectedResource = await fetchProtectedResourceMetadata(fetchImpl, endpoint);
24
+ const authorizationServerIssuer = protectedResource.authorizationServers[0];
25
+ if (authorizationServerIssuer === undefined) {
26
+ throw new Error('protected-resource metadata did not include an authorization server');
27
+ }
28
+ const authorizationServer = await fetchAuthorizationServerMetadata(fetchImpl, authorizationServerIssuer);
29
+ const client = await registerOAuthClient(fetchImpl, authorizationServer.registrationEndpoint, geminiEnterpriseRegistrationBody(protectedResource.resource, input.name));
30
+ return {
31
+ client: 'gemini-enterprise',
32
+ title: 'Gemini Enterprise',
33
+ mcpServerUrl: endpoint,
34
+ authorizationUrl: authorizationServer.authorizationEndpoint,
35
+ authorizationUrlParameters: client.defaultResource === protectedResource.resource
36
+ ? ''
37
+ : `resource=${encodeURIComponent(protectedResource.resource)}`,
38
+ tokenUrl: authorizationServer.tokenEndpoint,
39
+ clientId: client.clientId,
40
+ clientSecret: client.clientSecret,
41
+ ...(client.clientSecretExpiresAt !== undefined
42
+ ? { clientSecretExpiresAt: client.clientSecretExpiresAt }
43
+ : {}),
44
+ scopes: '',
45
+ pkce: true,
46
+ description: defaultGeminiDescription(),
47
+ instructions: defaultGeminiInstructions(),
48
+ };
49
+ }
50
+ function normalizeUrl(value) {
51
+ const url = new URL(value.trim());
52
+ url.hash = '';
53
+ return url.href.replace(/\/+$/, '');
54
+ }
55
+ async function fetchProtectedResourceMetadata(fetchImpl, endpoint) {
56
+ const url = protectedResourceMetadataUrl(endpoint);
57
+ const body = await fetchJson(fetchImpl, url, {
58
+ headers: { accept: 'application/json' },
59
+ });
60
+ const resource = stringField(body, 'resource');
61
+ const authorizationServers = stringArrayField(body, 'authorization_servers');
62
+ if (resource === undefined) {
63
+ throw new Error('protected-resource metadata did not include a resource URL');
64
+ }
65
+ if (authorizationServers.length === 0) {
66
+ throw new Error('protected-resource metadata did not include an authorization server');
67
+ }
68
+ return { resource: normalizeUrl(resource), authorizationServers };
69
+ }
70
+ async function fetchAuthorizationServerMetadata(fetchImpl, issuer) {
71
+ const body = await fetchJson(fetchImpl, authorizationServerMetadataUrl(issuer), {
72
+ headers: { accept: 'application/json' },
73
+ });
74
+ const authorizationEndpoint = stringField(body, 'authorization_endpoint');
75
+ const tokenEndpoint = stringField(body, 'token_endpoint');
76
+ const registrationEndpoint = stringField(body, 'registration_endpoint');
77
+ if (authorizationEndpoint === undefined ||
78
+ tokenEndpoint === undefined ||
79
+ registrationEndpoint === undefined) {
80
+ throw new Error('authorization-server metadata is missing OAuth endpoint URLs');
81
+ }
82
+ return { authorizationEndpoint, tokenEndpoint, registrationEndpoint };
83
+ }
84
+ async function registerOAuthClient(fetchImpl, registrationEndpoint, body) {
85
+ const json = await fetchJson(fetchImpl, registrationEndpoint, {
86
+ method: 'POST',
87
+ headers: { accept: 'application/json', 'content-type': 'application/json' },
88
+ body: JSON.stringify(body),
89
+ });
90
+ const clientId = stringField(json, 'client_id');
91
+ const clientSecret = stringField(json, 'client_secret');
92
+ if (clientId === undefined || clientSecret === undefined) {
93
+ throw new Error('OAuth client registration did not return a client ID and secret');
94
+ }
95
+ const expiresAt = numberField(json, 'client_secret_expires_at');
96
+ const defaultResource = stringField(json, 'default_resource');
97
+ return {
98
+ clientId,
99
+ clientSecret,
100
+ ...(expiresAt !== undefined ? { clientSecretExpiresAt: expiresAt } : {}),
101
+ ...(defaultResource !== undefined ? { defaultResource: normalizeUrl(defaultResource) } : {}),
102
+ };
103
+ }
104
+ async function fetchJson(fetchImpl, url, init) {
105
+ const res = await fetchImpl(url, init);
106
+ let body;
107
+ try {
108
+ body = await res.json();
109
+ }
110
+ catch {
111
+ body = undefined;
112
+ }
113
+ if (!res.ok) {
114
+ const message = isRecord(body) ? stringField(body, 'error') : undefined;
115
+ throw new Error(message ?? `HTTP ${res.status} from ${url}`);
116
+ }
117
+ if (!isRecord(body))
118
+ throw new Error(`expected JSON object from ${url}`);
119
+ return body;
120
+ }
121
+ function protectedResourceMetadataUrl(endpoint) {
122
+ const url = new URL(endpoint);
123
+ const endpointPath = url.pathname === '/' ? '' : url.pathname.replace(/\/+$/, '');
124
+ return `${url.origin}/.well-known/oauth-protected-resource${endpointPath}`;
125
+ }
126
+ function authorizationServerMetadataUrl(issuer) {
127
+ const url = new URL(issuer);
128
+ const issuerPath = url.pathname === '/' ? '' : url.pathname.replace(/\/+$/, '');
129
+ return `${url.origin}/.well-known/oauth-authorization-server${issuerPath}`;
130
+ }
131
+ function isRecord(value) {
132
+ return value !== null && typeof value === 'object' && !Array.isArray(value);
133
+ }
134
+ function stringField(value, key) {
135
+ const raw = value[key];
136
+ return typeof raw === 'string' && raw.length > 0 ? raw : undefined;
137
+ }
138
+ function numberField(value, key) {
139
+ const raw = value[key];
140
+ return typeof raw === 'number' && Number.isFinite(raw) ? raw : undefined;
141
+ }
142
+ function stringArrayField(value, key) {
143
+ const raw = value[key];
144
+ return Array.isArray(raw) ? raw.filter((item) => typeof item === 'string') : [];
145
+ }
146
+ function defaultGeminiDescription() {
147
+ return [
148
+ 'Noodle MCP server hosted on Noodle Seed Cloud.',
149
+ 'It exposes the tools, resources, and prompts declared by the app developer through the Model Context Protocol.',
150
+ 'Authentication is handled with OAuth, and access is constrained by the server access mode and any downstream system permissions.',
151
+ ].join(' ');
152
+ }
153
+ function defaultGeminiInstructions() {
154
+ return [
155
+ 'Use this MCP server when the user request matches the server tools, resources, or prompts.',
156
+ 'Discover available MCP tools from the server, call the most specific tool for the task, and reuse returned IDs in follow-up calls.',
157
+ 'Respect OAuth-authenticated user access and do not assume access to resources not returned by the tools.',
158
+ ].join(' ');
159
+ }
160
+ //# sourceMappingURL=connect-oauth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connect-oauth.js","sourceRoot":"","sources":["../../src/commands/connect-oauth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare function runConnect(rest: readonly string[]): Promise<number>;
2
+ export declare function connectSteps(client: string): string[];
3
+ //# sourceMappingURL=connect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../../src/commands/connect.ts"],"names":[],"mappings":"AAMA,wBAAsB,UAAU,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAmGzE;AAwDD,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAqBrD"}