@inquir/compute-cli 0.1.4 → 0.2.1

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 (55) hide show
  1. package/README.md +79 -5
  2. package/dist/commands/apps.d.ts +21 -0
  3. package/dist/commands/apps.d.ts.map +1 -0
  4. package/dist/commands/apps.js +857 -0
  5. package/dist/commands/apps.js.map +1 -0
  6. package/dist/commands/config.d.ts.map +1 -1
  7. package/dist/commands/config.js +19 -2
  8. package/dist/commands/config.js.map +1 -1
  9. package/dist/commands/deploy.d.ts.map +1 -1
  10. package/dist/commands/deploy.js +207 -93
  11. package/dist/commands/deploy.js.map +1 -1
  12. package/dist/commands/init.d.ts.map +1 -1
  13. package/dist/commands/init.js +4 -2
  14. package/dist/commands/init.js.map +1 -1
  15. package/dist/commands/mcp.d.ts +15 -0
  16. package/dist/commands/mcp.d.ts.map +1 -0
  17. package/dist/commands/mcp.js +269 -0
  18. package/dist/commands/mcp.js.map +1 -0
  19. package/dist/commands/upgrade.d.ts +6 -0
  20. package/dist/commands/upgrade.d.ts.map +1 -0
  21. package/dist/commands/upgrade.js +72 -0
  22. package/dist/commands/upgrade.js.map +1 -0
  23. package/dist/index.js +26 -3
  24. package/dist/index.js.map +1 -1
  25. package/dist/utils/api.d.ts +52 -2
  26. package/dist/utils/api.d.ts.map +1 -1
  27. package/dist/utils/api.js +95 -2
  28. package/dist/utils/api.js.map +1 -1
  29. package/dist/utils/apps-presentation.d.ts +25 -0
  30. package/dist/utils/apps-presentation.d.ts.map +1 -0
  31. package/dist/utils/apps-presentation.js +71 -0
  32. package/dist/utils/apps-presentation.js.map +1 -0
  33. package/dist/utils/args.d.ts.map +1 -1
  34. package/dist/utils/args.js +1 -0
  35. package/dist/utils/args.js.map +1 -1
  36. package/dist/utils/auth.d.ts +2 -0
  37. package/dist/utils/auth.d.ts.map +1 -1
  38. package/dist/utils/auth.js +13 -5
  39. package/dist/utils/auth.js.map +1 -1
  40. package/dist/utils/auto-update.d.ts +84 -0
  41. package/dist/utils/auto-update.d.ts.map +1 -0
  42. package/dist/utils/auto-update.js +232 -0
  43. package/dist/utils/auto-update.js.map +1 -0
  44. package/dist/utils/context.d.ts.map +1 -1
  45. package/dist/utils/context.js +3 -1
  46. package/dist/utils/context.js.map +1 -1
  47. package/dist/utils/detect.d.ts +45 -0
  48. package/dist/utils/detect.d.ts.map +1 -0
  49. package/dist/utils/detect.js +358 -0
  50. package/dist/utils/detect.js.map +1 -0
  51. package/dist/utils/ensure-auth.d.ts.map +1 -1
  52. package/dist/utils/ensure-auth.js +7 -1
  53. package/dist/utils/ensure-auth.js.map +1 -1
  54. package/package.json +5 -4
  55. package/skill/SKILL.md +60 -0
@@ -0,0 +1,232 @@
1
+ /**
2
+ * Startup self-update — keeps the CLI in step with Inquir Compute.
3
+ *
4
+ * Two sources of truth, checked at most once per `CHECK_TTL_MS` (cached in
5
+ * ~/.inquir/update-check.json) with a short network timeout, so a normal
6
+ * command pays nothing on the hot path and never fails because of this:
7
+ *
8
+ * - the npm registry's `latest` dist-tag: what is installable;
9
+ * - the API's `GET /v1/cli/version`: the minimum version the platform still
10
+ * supports (a server release that changes the wire contract raises it).
11
+ *
12
+ * When a newer version exists and the CLI is a global npm install running in
13
+ * an interactive terminal, it re-installs itself (`npm i -g`) and re-executes
14
+ * the original command with the new binary — the user asked for one thing and
15
+ * gets it, on the new version. Everything else (CI, --json, no TTY, npx, a
16
+ * dev checkout, opt-out) only prints a one-line notice on stderr, except when
17
+ * the server's *minimum* is not met: then the command refuses to run with the
18
+ * exact fix, because a too-old CLI would fail in confusing ways later.
19
+ *
20
+ * Opt out: `INQUIR_NO_AUTO_UPDATE=1`, `--no-update`, or
21
+ * `inquir config set autoUpdate false`. Manual: `inquir upgrade`.
22
+ */
23
+ import { spawnSync } from 'node:child_process';
24
+ import { promises as fs } from 'node:fs';
25
+ import path from 'node:path';
26
+ import { fileURLToPath } from 'node:url';
27
+ import { getConfigFilePath, loadAuthConfig } from './auth.js';
28
+ import { CliError, ExitCode } from './errors.js';
29
+ import { dim, printInfo } from './output.js';
30
+ import { getVersion } from './version.js';
31
+ export const PACKAGE_NAME = '@inquir/compute-cli';
32
+ export const CHECK_TTL_MS = 12 * 60 * 60 * 1000;
33
+ const NETWORK_TIMEOUT_MS = 2500;
34
+ /** Set on the re-executed child so it never checks again in the same run. */
35
+ const REEXEC_ENV = 'INQUIR_CLI_REEXEC';
36
+ /** semver-ish compare on `major.minor.patch[-pre]`; pre-release sorts below release. */
37
+ export function compareVersions(a, b) {
38
+ const parse = (v) => {
39
+ const [core, pre] = v.trim().replace(/^v/, '').split('-', 2);
40
+ const nums = core.split('.').map((n) => Number.parseInt(n, 10) || 0);
41
+ while (nums.length < 3)
42
+ nums.push(0);
43
+ return { nums, pre: pre ?? '' };
44
+ };
45
+ const x = parse(a);
46
+ const y = parse(b);
47
+ for (let i = 0; i < 3; i++) {
48
+ if (x.nums[i] !== y.nums[i])
49
+ return x.nums[i] < y.nums[i] ? -1 : 1;
50
+ }
51
+ if (x.pre === y.pre)
52
+ return 0;
53
+ if (!x.pre)
54
+ return 1;
55
+ if (!y.pre)
56
+ return -1;
57
+ return x.pre < y.pre ? -1 : 1;
58
+ }
59
+ export function updateCachePath() {
60
+ return path.join(path.dirname(getConfigFilePath()), 'update-check.json');
61
+ }
62
+ async function readCache(file) {
63
+ try {
64
+ const raw = await fs.readFile(file, 'utf8');
65
+ const parsed = JSON.parse(raw);
66
+ return typeof parsed?.checkedAt === 'number' ? parsed : null;
67
+ }
68
+ catch {
69
+ return null;
70
+ }
71
+ }
72
+ async function writeCache(file, cache) {
73
+ try {
74
+ await fs.mkdir(path.dirname(file), { recursive: true });
75
+ await fs.writeFile(file, JSON.stringify(cache), 'utf8');
76
+ }
77
+ catch {
78
+ /* a cache that cannot be written just means we check again next time */
79
+ }
80
+ }
81
+ async function fetchJson(fetchImpl, url) {
82
+ try {
83
+ const res = await fetchImpl(url, {
84
+ headers: { Accept: 'application/json' },
85
+ signal: AbortSignal.timeout(NETWORK_TIMEOUT_MS),
86
+ });
87
+ if (!res.ok)
88
+ return null;
89
+ return (await res.json());
90
+ }
91
+ catch {
92
+ return null;
93
+ }
94
+ }
95
+ /** Where this CLI came from — decides whether we may replace it. */
96
+ export function detectInstallKind(entryPath = process.argv[1] ?? '') {
97
+ const p = entryPath.replace(/\\/g, '/');
98
+ if (!p)
99
+ return 'unknown';
100
+ if (/\/_npx\//.test(p) || /\/\.npm\/_npx\//.test(p))
101
+ return 'npx';
102
+ if (/\/packages\/cli\/(dist|src)\//.test(p))
103
+ return 'dev';
104
+ if (/\/node_modules\/@inquir\/compute-cli\//.test(p))
105
+ return 'global-npm';
106
+ return 'unknown';
107
+ }
108
+ /** Throttled lookup of latest (registry) + minimum (API); never throws. */
109
+ export async function checkForUpdate(options = {}) {
110
+ const current = options.currentVersion ?? getVersion();
111
+ const now = options.now ?? Date.now();
112
+ const cacheFile = options.cacheFile ?? updateCachePath();
113
+ const fetchImpl = options.fetchImpl ?? fetch;
114
+ const cached = await readCache(cacheFile);
115
+ let latest = cached?.latest;
116
+ let minimum = cached?.minimum;
117
+ let fromCache = true;
118
+ if (options.force || !cached || now - cached.checkedAt > CHECK_TTL_MS) {
119
+ fromCache = false;
120
+ const [registry, api] = await Promise.all([
121
+ fetchJson(fetchImpl, `https://registry.npmjs.org/${PACKAGE_NAME}/latest`),
122
+ options.apiUrl
123
+ ? fetchJson(fetchImpl, `${options.apiUrl.replace(/\/+$/, '')}/v1/cli/version`)
124
+ : Promise.resolve(null),
125
+ ]);
126
+ if (typeof registry?.version === 'string')
127
+ latest = registry.version;
128
+ if (typeof api?.minimum === 'string')
129
+ minimum = api.minimum;
130
+ await writeCache(cacheFile, {
131
+ checkedAt: now,
132
+ latest,
133
+ minimum,
134
+ minimumSource: options.apiUrl,
135
+ });
136
+ }
137
+ return {
138
+ current,
139
+ latest,
140
+ minimum,
141
+ outdated: latest ? compareVersions(current, latest) < 0 : false,
142
+ belowMinimum: minimum ? compareVersions(current, minimum) < 0 : false,
143
+ fromCache,
144
+ };
145
+ }
146
+ /** `npm install -g @inquir/compute-cli@<version>` with inherited stdio. */
147
+ export function installGlobally(version, spawn = spawnSync) {
148
+ const npm = process.platform === 'win32' ? 'npm.cmd' : 'npm';
149
+ const result = spawn(npm, ['install', '-g', `${PACKAGE_NAME}@${version}`, '--no-fund', '--no-audit'], {
150
+ stdio: 'inherit',
151
+ shell: process.platform === 'win32',
152
+ });
153
+ if (result.error)
154
+ return { ok: false, message: result.error.message };
155
+ if (result.status !== 0) {
156
+ return { ok: false, message: `npm install exited with code ${result.status ?? 'unknown'}` };
157
+ }
158
+ return { ok: true };
159
+ }
160
+ /** Re-run the original command with the freshly installed binary. */
161
+ function reexec(argv, entryPath) {
162
+ const result = spawnSync(process.execPath, [entryPath, ...argv], {
163
+ stdio: 'inherit',
164
+ env: { ...process.env, [REEXEC_ENV]: '1' },
165
+ });
166
+ process.exit(result.status ?? 1);
167
+ }
168
+ /**
169
+ * Commands that must never trigger an update dance: the update itself, and
170
+ * the ones people run to *see* the version or get help.
171
+ */
172
+ const SKIP_COMMANDS = new Set(['upgrade', 'help', 'mcp']);
173
+ export function shouldSkipAutoUpdate(argv, env = process.env) {
174
+ if (env[REEXEC_ENV])
175
+ return true;
176
+ if (env.INQUIR_NO_AUTO_UPDATE && env.INQUIR_NO_AUTO_UPDATE !== '0')
177
+ return true;
178
+ if (argv.includes('--no-update'))
179
+ return true;
180
+ if (argv.includes('--version') || argv.includes('-v') || argv.includes('--help') || argv.includes('-h'))
181
+ return true;
182
+ const first = argv.find((a) => !a.startsWith('-'));
183
+ if (!first || SKIP_COMMANDS.has(first))
184
+ return true;
185
+ return false;
186
+ }
187
+ /**
188
+ * Called once at startup. Returns normally when the current process should go
189
+ * on and run the command; re-executes (and exits) when it updated itself.
190
+ */
191
+ export async function maybeAutoUpdate(ctx) {
192
+ const env = ctx.env ?? process.env;
193
+ if (shouldSkipAutoUpdate(ctx.argv, env))
194
+ return;
195
+ const config = await loadAuthConfig().catch(() => ({}));
196
+ const optedOut = config.autoUpdate === false;
197
+ const check = ctx.check ?? checkForUpdate;
198
+ const result = await check({ apiUrl: ctx.apiUrl }).catch(() => null);
199
+ if (!result || (!result.outdated && !result.belowMinimum))
200
+ return;
201
+ const target = result.latest ?? result.minimum;
202
+ const kind = ctx.installKind ?? detectInstallKind(ctx.entryPath);
203
+ const interactive = (ctx.isTTY ?? Boolean(process.stdout.isTTY && process.stderr.isTTY)) && !env.CI && !ctx.json;
204
+ const manual = `npm install -g ${PACKAGE_NAME}@latest`;
205
+ const canSelfUpdate = interactive && !optedOut && kind === 'global-npm';
206
+ if (canSelfUpdate) {
207
+ printInfo(dim(`Updating inquir CLI ${result.current} → ${target}…`));
208
+ const outcome = (ctx.install ?? installGlobally)(target);
209
+ if (outcome.ok) {
210
+ printInfo(dim(`Updated to ${target}; re-running your command.`));
211
+ const entry = ctx.entryPath ?? process.argv[1] ?? fileURLToPath(import.meta.url);
212
+ (ctx.reexecImpl ?? reexec)(ctx.argv, entry);
213
+ return;
214
+ }
215
+ process.stderr.write(`inquir: self-update failed (${outcome.message ?? 'unknown error'}); run: ${manual}\n`);
216
+ }
217
+ if (result.belowMinimum) {
218
+ // The platform will not talk to this version correctly — refuse loudly.
219
+ throw new CliError(`This CLI (${result.current}) is older than the minimum the API requires (${result.minimum})`, {
220
+ code: 'CLI_UPDATE_REQUIRED',
221
+ exitCode: ExitCode.ERROR,
222
+ explanation: 'The platform changed its wire contract; an older CLI would fail in confusing ways.',
223
+ fix: `Update it: ${manual}`,
224
+ });
225
+ }
226
+ if (!ctx.json) {
227
+ process.stderr.write(`inquir: a newer CLI is available (${result.current} → ${target}). ` +
228
+ (kind === 'global-npm' ? `Run: ${manual}` : kind === 'npx' ? 'Re-run with npx to pick it up.' : `Update: ${manual}`) +
229
+ '\n');
230
+ }
231
+ }
232
+ //# sourceMappingURL=auto-update.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-update.js","sourceRoot":"","sources":["../../src/utils/auto-update.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/utils/context.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAElD,sEAAsE;AACtE,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;IACf,GAAG,EAAE,OAAO,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAUD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,YAAY,CA4BxD;AAED,wBAAgB,OAAO,IAAI,YAAY,CAEtC;AAED,iBAAiB;AACjB,wBAAgB,YAAY,IAAI,IAAI,CAEnC;AAYD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,iBAAiB,CAWjE"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/utils/context.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAElD,sEAAsE;AACtE,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;IACf,GAAG,EAAE,OAAO,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAUD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,YAAY,CA8BxD;AAED,wBAAgB,OAAO,IAAI,YAAY,CAEtC;AAED,iBAAiB;AACjB,wBAAgB,YAAY,IAAI,IAAI,CAEnC;AAYD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,iBAAiB,CAWjE"}
@@ -29,9 +29,11 @@ export function initRuntime(argv) {
29
29
  };
30
30
  current = flags;
31
31
  // JSON output must be plain; --no-color / NO_COLOR also disable color.
32
+ // JSON also implies quiet: results go through printLine, and any printInfo
33
+ // chatter on stdout would corrupt the machine-readable stream.
32
34
  configureOutput({
33
35
  color: flags.json || flags.noColor ? false : undefined,
34
- quiet: flags.quiet,
36
+ quiet: flags.quiet || flags.json,
35
37
  });
36
38
  registerSecret(flags.token);
37
39
  registerSecret(process.env.INQUIR_TOKEN);
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/utils/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EACL,OAAO,EACP,cAAc,EACd,mBAAmB,EACnB,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAiB7C,IAAI,OAAO,GAAiB;IAC1B,IAAI,EAAE,KAAK;IACX,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,KAAK;IACZ,GAAG,EAAE,KAAK;IACV,OAAO,EAAE,KAAK;CACf,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,IAAc;IACxC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACrC,MAAM,KAAK,GAAiB;QAC1B,IAAI;QACJ,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,KAAK,GAAG;QACnE,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC;QAC/B,GAAG,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC;QAClD,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,YAAY,CAAC;QACpC,GAAG,EAAE,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,aAAa,CAAC,IAAI,EAAE,UAAU,CAAC;QACpE,MAAM,EAAE,cAAc,CAAC,IAAI,CAAC;QAC5B,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC;QAC1B,GAAG,EAAE,mBAAmB,CAAC,IAAI,CAAC;QAC9B,SAAS,EAAE,iBAAiB,CAAC,IAAI,CAAC;KACnC,CAAC;IACF,OAAO,GAAG,KAAK,CAAC;IAEhB,uEAAuE;IACvE,eAAe,CAAC;QACd,KAAK,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;QACtD,KAAK,EAAE,KAAK,CAAC,KAAK;KACnB,CAAC,CAAC;IAEH,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC5B,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IACzC,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAC3C,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAE3C,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,OAAO;IACrB,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,iBAAiB;AACjB,MAAM,UAAU,YAAY;IAC1B,OAAO,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AACpF,CAAC;AAED,qFAAqF;AACrF,SAAS,oBAAoB,CAAC,IAAc;IAC1C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;QAClD,OAAO,MAAM,CAAC,SAAS,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,IAAc;IAC5C,+EAA+E;IAC/E,+EAA+E;IAC/E,gEAAgE;IAChE,OAAO;QACL,MAAM,EAAE,cAAc,CAAC,IAAI,CAAC;QAC5B,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC;QAC1B,WAAW,EAAE,iBAAiB,CAAC,IAAI,CAAC;QACpC,kBAAkB,EAAE,oBAAoB,CAAC,IAAI,CAAC;QAC9C,WAAW,EAAE,mBAAmB,CAAC,IAAI,CAAC;KACvC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/utils/context.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Zero-config app detection (Railway-style).
3
+ *
4
+ * Given a directory, figure out: runtime, entry file, mode (lambda handler vs
5
+ * web server), handler spec or start command, and a deployable name — without
6
+ * requiring an inquir config or the TypeScript SDK contract.
7
+ *
8
+ * Detection is intentionally boring and transparent: every decision appends a
9
+ * human-readable line to `reasons` so `inquir deploy` can print exactly why it
10
+ * chose what it chose (and how to override it).
11
+ */
12
+ export type DetectedRuntime = 'nodejs22' | 'python312' | 'go122';
13
+ export type AppMode = 'handler' | 'web';
14
+ export interface DetectedApp {
15
+ name: string;
16
+ runtime: DetectedRuntime;
17
+ mode: AppMode;
18
+ /** module.export spec for handler mode (e.g. "index.handler", "src/api.handler"). */
19
+ handler?: string;
20
+ /** Entry file relative to the app dir (posix separators). */
21
+ entryFile: string;
22
+ /** Shell command that starts the web server (web mode only). Runs with PORT set. */
23
+ startCommand?: string;
24
+ /** Why each decision was made — printed as the deploy plan. */
25
+ reasons: string[];
26
+ }
27
+ export interface DetectOverrides {
28
+ name?: string;
29
+ runtime?: string;
30
+ handler?: string;
31
+ start?: string;
32
+ mode?: string;
33
+ }
34
+ export declare class DetectionError extends Error {
35
+ readonly hints: string[];
36
+ constructor(message: string, hints?: string[]);
37
+ }
38
+ /** Sanitize an arbitrary string into a deployable function name. */
39
+ export declare function sanitizeName(raw: string): string;
40
+ /**
41
+ * Detect a deployable app in `dir`. Overrides always win over sniffing; every
42
+ * decision is recorded in `reasons` for the deploy plan output.
43
+ */
44
+ export declare function detectApp(dir: string, overrides?: DetectOverrides): DetectedApp;
45
+ //# sourceMappingURL=detect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detect.d.ts","sourceRoot":"","sources":["../../src/utils/detect.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,WAAW,GAAG,OAAO,CAAC;AACjE,MAAM,MAAM,OAAO,GAAG,SAAS,GAAG,KAAK,CAAC;AAExC,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,eAAe,CAAC;IACzB,IAAI,EAAE,OAAO,CAAC;IACd,qFAAqF;IACrF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6DAA6D;IAC7D,SAAS,EAAE,MAAM,CAAC;IAClB,oFAAoF;IACpF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,+DAA+D;IAC/D,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,qBAAa,cAAe,SAAQ,KAAK;IACV,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE;gBAAzC,OAAO,EAAE,MAAM,EAAW,KAAK,GAAE,MAAM,EAAO;CAI3D;AAgFD,oEAAoE;AACpE,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAQhD;AA6ID;;;GAGG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,GAAE,eAAoB,GAAG,WAAW,CAqInF"}