@inquir/compute-cli 0.1.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 (110) hide show
  1. package/README.md +240 -0
  2. package/dist/commands/codegen.d.ts +2 -0
  3. package/dist/commands/codegen.d.ts.map +1 -0
  4. package/dist/commands/codegen.js +36 -0
  5. package/dist/commands/codegen.js.map +1 -0
  6. package/dist/commands/debug.d.ts +2 -0
  7. package/dist/commands/debug.d.ts.map +1 -0
  8. package/dist/commands/debug.js +15 -0
  9. package/dist/commands/debug.js.map +1 -0
  10. package/dist/commands/deploy.d.ts +2 -0
  11. package/dist/commands/deploy.d.ts.map +1 -0
  12. package/dist/commands/deploy.js +127 -0
  13. package/dist/commands/deploy.js.map +1 -0
  14. package/dist/commands/deploys.d.ts +2 -0
  15. package/dist/commands/deploys.d.ts.map +1 -0
  16. package/dist/commands/deploys.js +40 -0
  17. package/dist/commands/deploys.js.map +1 -0
  18. package/dist/commands/init.d.ts +2 -0
  19. package/dist/commands/init.d.ts.map +1 -0
  20. package/dist/commands/init.js +157 -0
  21. package/dist/commands/init.js.map +1 -0
  22. package/dist/commands/invoke.d.ts +2 -0
  23. package/dist/commands/invoke.d.ts.map +1 -0
  24. package/dist/commands/invoke.js +33 -0
  25. package/dist/commands/invoke.js.map +1 -0
  26. package/dist/commands/list.d.ts +2 -0
  27. package/dist/commands/list.d.ts.map +1 -0
  28. package/dist/commands/list.js +37 -0
  29. package/dist/commands/list.js.map +1 -0
  30. package/dist/commands/login.d.ts +2 -0
  31. package/dist/commands/login.d.ts.map +1 -0
  32. package/dist/commands/login.js +163 -0
  33. package/dist/commands/login.js.map +1 -0
  34. package/dist/commands/logout.d.ts +2 -0
  35. package/dist/commands/logout.d.ts.map +1 -0
  36. package/dist/commands/logout.js +19 -0
  37. package/dist/commands/logout.js.map +1 -0
  38. package/dist/commands/logs.d.ts +2 -0
  39. package/dist/commands/logs.d.ts.map +1 -0
  40. package/dist/commands/logs.js +47 -0
  41. package/dist/commands/logs.js.map +1 -0
  42. package/dist/commands/rollback.d.ts +2 -0
  43. package/dist/commands/rollback.d.ts.map +1 -0
  44. package/dist/commands/rollback.js +55 -0
  45. package/dist/commands/rollback.js.map +1 -0
  46. package/dist/commands/run.d.ts +2 -0
  47. package/dist/commands/run.d.ts.map +1 -0
  48. package/dist/commands/run.js +62 -0
  49. package/dist/commands/run.js.map +1 -0
  50. package/dist/commands/status.d.ts +2 -0
  51. package/dist/commands/status.d.ts.map +1 -0
  52. package/dist/commands/status.js +55 -0
  53. package/dist/commands/status.js.map +1 -0
  54. package/dist/commands/sync-status.d.ts +2 -0
  55. package/dist/commands/sync-status.d.ts.map +1 -0
  56. package/dist/commands/sync-status.js +56 -0
  57. package/dist/commands/sync-status.js.map +1 -0
  58. package/dist/commands/use.d.ts +2 -0
  59. package/dist/commands/use.d.ts.map +1 -0
  60. package/dist/commands/use.js +30 -0
  61. package/dist/commands/use.js.map +1 -0
  62. package/dist/commands/whoami.d.ts +2 -0
  63. package/dist/commands/whoami.d.ts.map +1 -0
  64. package/dist/commands/whoami.js +36 -0
  65. package/dist/commands/whoami.js.map +1 -0
  66. package/dist/commands/workspaces.d.ts +2 -0
  67. package/dist/commands/workspaces.d.ts.map +1 -0
  68. package/dist/commands/workspaces.js +37 -0
  69. package/dist/commands/workspaces.js.map +1 -0
  70. package/dist/index.d.ts +3 -0
  71. package/dist/index.d.ts.map +1 -0
  72. package/dist/index.js +138 -0
  73. package/dist/index.js.map +1 -0
  74. package/dist/sdk.d.ts +2 -0
  75. package/dist/sdk.d.ts.map +1 -0
  76. package/dist/sdk.js +2 -0
  77. package/dist/sdk.js.map +1 -0
  78. package/dist/utils/api.d.ts +31 -0
  79. package/dist/utils/api.d.ts.map +1 -0
  80. package/dist/utils/api.js +66 -0
  81. package/dist/utils/api.js.map +1 -0
  82. package/dist/utils/args.d.ts +19 -0
  83. package/dist/utils/args.d.ts.map +1 -0
  84. package/dist/utils/args.js +93 -0
  85. package/dist/utils/args.js.map +1 -0
  86. package/dist/utils/assets.d.ts +8 -0
  87. package/dist/utils/assets.d.ts.map +1 -0
  88. package/dist/utils/assets.js +19 -0
  89. package/dist/utils/assets.js.map +1 -0
  90. package/dist/utils/auth.d.ts +41 -0
  91. package/dist/utils/auth.d.ts.map +1 -0
  92. package/dist/utils/auth.js +97 -0
  93. package/dist/utils/auth.js.map +1 -0
  94. package/dist/utils/browser.d.ts +7 -0
  95. package/dist/utils/browser.d.ts.map +1 -0
  96. package/dist/utils/browser.js +34 -0
  97. package/dist/utils/browser.js.map +1 -0
  98. package/dist/utils/deploy-follow.d.ts +23 -0
  99. package/dist/utils/deploy-follow.d.ts.map +1 -0
  100. package/dist/utils/deploy-follow.js +57 -0
  101. package/dist/utils/deploy-follow.js.map +1 -0
  102. package/dist/utils/output.d.ts +19 -0
  103. package/dist/utils/output.d.ts.map +1 -0
  104. package/dist/utils/output.js +71 -0
  105. package/dist/utils/output.js.map +1 -0
  106. package/dist/utils/payload.d.ts +10 -0
  107. package/dist/utils/payload.d.ts.map +1 -0
  108. package/dist/utils/payload.js +42 -0
  109. package/dist/utils/payload.js.map +1 -0
  110. package/package.json +28 -0
@@ -0,0 +1,157 @@
1
+ import { spawn } from 'node:child_process';
2
+ import fs from 'node:fs/promises';
3
+ import path from 'node:path';
4
+ import { configFileSchema } from '../sdk.js';
5
+ import { hasFlag } from '../utils/args.js';
6
+ import { printLine, printSuccess, printWarning } from '../utils/output.js';
7
+ const DEFAULT_CONFIG = {
8
+ functionsDir: 'inquir/functions',
9
+ pipelinesDir: 'inquir/pipelines',
10
+ generatedDir: '.inquir/generated',
11
+ };
12
+ const DEFAULT_PACKAGE_JSON = {
13
+ name: 'inquir-workspace',
14
+ private: true,
15
+ type: 'module',
16
+ scripts: {
17
+ 'inquir:codegen': 'inquir codegen',
18
+ },
19
+ dependencies: {
20
+ '@inquir/compute': '^0.1.0',
21
+ zod: '^3.23.8',
22
+ },
23
+ };
24
+ const SAMPLE_FUNCTION = `import { defineFunction } from '@inquir/compute';
25
+ import { z } from 'zod';
26
+
27
+ export const hello = defineFunction({
28
+ name: 'hello',
29
+ runtime: 'node',
30
+ input: z.object({
31
+ name: z.string().optional(),
32
+ }),
33
+ output: z.object({
34
+ message: z.string(),
35
+ }),
36
+ }, async (input) => ({
37
+ message: \`Hello, \${input.name ?? 'world'}\`,
38
+ }));
39
+ `;
40
+ const GENERATED_GITIGNORE_ENTRY = '.inquir/generated/';
41
+ async function detectPackageManager(rootDir) {
42
+ const [hasPnpm, hasYarn] = await Promise.all([
43
+ fs.access(path.join(rootDir, 'pnpm-lock.yaml')).then(() => true).catch(() => false),
44
+ fs.access(path.join(rootDir, 'yarn.lock')).then(() => true).catch(() => false),
45
+ ]);
46
+ if (hasPnpm)
47
+ return 'pnpm';
48
+ if (hasYarn)
49
+ return 'yarn';
50
+ return 'npm';
51
+ }
52
+ async function runInstall(rootDir) {
53
+ const packageManager = await detectPackageManager(rootDir);
54
+ printLine(`Installing dependencies with ${packageManager}...`);
55
+ await new Promise((resolve) => {
56
+ const child = spawn(packageManager, ['install'], {
57
+ stdio: 'inherit',
58
+ cwd: rootDir,
59
+ shell: process.platform === 'win32',
60
+ });
61
+ child.on('close', (code) => {
62
+ if (code !== 0) {
63
+ printWarning(`Could not auto-install dependencies. Run \`${packageManager} install\` manually.`);
64
+ }
65
+ else {
66
+ printLine('Dependencies installed.');
67
+ }
68
+ resolve();
69
+ });
70
+ child.on('error', () => {
71
+ printWarning(`Could not auto-install dependencies. Run \`npm install\` manually.`);
72
+ resolve();
73
+ });
74
+ });
75
+ }
76
+ function printInitUsage() {
77
+ printLine('Usage: inquir init [--skip-install]');
78
+ printLine('');
79
+ printLine('Options:');
80
+ printLine(' --skip-install Skip automatic dependency installation');
81
+ }
82
+ async function ensureGeneratedGitignore(rootDir) {
83
+ const gitignorePath = path.join(rootDir, '.gitignore');
84
+ const existing = await fs.readFile(gitignorePath, 'utf8').catch((error) => {
85
+ if (error.code === 'ENOENT') {
86
+ return undefined;
87
+ }
88
+ throw error;
89
+ });
90
+ if (existing !== undefined) {
91
+ const lines = existing.split(/\r?\n/);
92
+ if (lines.includes(GENERATED_GITIGNORE_ENTRY)) {
93
+ return;
94
+ }
95
+ const nextContent = `${existing.replace(/\s*$/, '')}\n${GENERATED_GITIGNORE_ENTRY}\n`;
96
+ await fs.writeFile(gitignorePath, nextContent, 'utf8');
97
+ printSuccess(`Updated ${path.relative(rootDir, gitignorePath)}`);
98
+ return;
99
+ }
100
+ await fs.writeFile(gitignorePath, `${GENERATED_GITIGNORE_ENTRY}\n`, 'utf8');
101
+ printSuccess(`Created ${path.relative(rootDir, gitignorePath)}`);
102
+ }
103
+ export async function initCommand(args) {
104
+ if (hasFlag(args, '--help') || hasFlag(args, '-h')) {
105
+ printInitUsage();
106
+ return;
107
+ }
108
+ const skipInstall = hasFlag(args, '--skip-install');
109
+ const rootDir = process.cwd();
110
+ const configPath = path.join(rootDir, 'inquir.config.json');
111
+ const packageJsonPath = path.join(rootDir, 'package.json');
112
+ const configExists = await fs.access(configPath).then(() => true).catch(() => false);
113
+ const packageJsonExists = await fs.access(packageJsonPath).then(() => true).catch(() => false);
114
+ if (!configExists) {
115
+ const config = configFileSchema.parse(DEFAULT_CONFIG);
116
+ await fs.writeFile(configPath, `${JSON.stringify(config, null, 2)}\n`, 'utf8');
117
+ printSuccess(`Created ${path.relative(rootDir, configPath)}`);
118
+ }
119
+ else {
120
+ printWarning(`Skipped existing ${path.relative(rootDir, configPath)}`);
121
+ }
122
+ if (!packageJsonExists) {
123
+ const packageJson = {
124
+ ...DEFAULT_PACKAGE_JSON,
125
+ name: path.basename(rootDir),
126
+ };
127
+ await fs.writeFile(packageJsonPath, `${JSON.stringify(packageJson, null, 2)}\n`, 'utf8');
128
+ printSuccess(`Created ${path.relative(rootDir, packageJsonPath)}`);
129
+ }
130
+ else {
131
+ printWarning(`Skipped existing ${path.relative(rootDir, packageJsonPath)}`);
132
+ }
133
+ for (const folder of [DEFAULT_CONFIG.functionsDir, DEFAULT_CONFIG.pipelinesDir, DEFAULT_CONFIG.generatedDir]) {
134
+ await fs.mkdir(path.join(rootDir, folder), { recursive: true });
135
+ }
136
+ await ensureGeneratedGitignore(rootDir);
137
+ const exampleDir = path.join(rootDir, DEFAULT_CONFIG.functionsDir, 'hello');
138
+ await fs.mkdir(exampleDir, { recursive: true });
139
+ const exampleFile = path.join(exampleDir, 'index.ts');
140
+ const exampleExists = await fs.access(exampleFile).then(() => true).catch(() => false);
141
+ if (!exampleExists) {
142
+ await fs.writeFile(exampleFile, `${SAMPLE_FUNCTION}\n`, 'utf8');
143
+ printSuccess(`Created ${path.relative(rootDir, exampleFile)}`);
144
+ }
145
+ else {
146
+ printWarning(`Skipped existing ${path.relative(rootDir, exampleFile)}`);
147
+ }
148
+ printLine('');
149
+ if (skipInstall) {
150
+ printWarning('Skipped dependency installation. Run `npm install` manually.');
151
+ }
152
+ else {
153
+ await runInstall(rootDir);
154
+ }
155
+ printLine('Workspace initialized.');
156
+ }
157
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function invokeCommand(args: string[]): Promise<void>;
2
+ //# sourceMappingURL=invoke.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invoke.d.ts","sourceRoot":"","sources":["../../src/commands/invoke.ts"],"names":[],"mappings":"AAKA,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA+BjE"}
@@ -0,0 +1,33 @@
1
+ import { hasFlag, readEnvironmentFlag, readJsonFlag, readPositionalArgs, readWorkspaceFlag } from '../utils/args.js';
2
+ import { invokeRemote } from '../utils/api.js';
3
+ import { parsePayloadArgs, readPayload } from '../utils/payload.js';
4
+ import { printCommandHelp, printLine, printSuccess } from '../utils/output.js';
5
+ export async function invokeCommand(args) {
6
+ if (hasFlag(args, '--help') || hasFlag(args, '-h')) {
7
+ printCommandHelp('invoke', 'invoke <asset> [options]', [
8
+ '--payload <json> JSON payload string',
9
+ '--payload-file <path> Path to JSON payload file',
10
+ '--env <name> Named environment',
11
+ '--json Machine-readable JSON output',
12
+ ]);
13
+ return;
14
+ }
15
+ const [assetName] = readPositionalArgs(args, {
16
+ valueFlags: ['--payload', '--payload-file'],
17
+ });
18
+ if (!assetName) {
19
+ throw new Error('Missing asset name');
20
+ }
21
+ const payload = await readPayload(parsePayloadArgs(args));
22
+ const result = await invokeRemote(assetName, payload, {
23
+ environment: readEnvironmentFlag(args),
24
+ workspaceId: readWorkspaceFlag(args),
25
+ });
26
+ if (readJsonFlag(args)) {
27
+ printLine(JSON.stringify(result, null, 2));
28
+ return;
29
+ }
30
+ printSuccess(`Invoked ${assetName}`);
31
+ printLine(JSON.stringify(result, null, 2));
32
+ }
33
+ //# sourceMappingURL=invoke.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invoke.js","sourceRoot":"","sources":["../../src/commands/invoke.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrH,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAE/E,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAc;IAChD,IAAI,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;QACnD,gBAAgB,CAAC,QAAQ,EAAE,0BAA0B,EAAE;YACrD,4CAA4C;YAC5C,kDAAkD;YAClD,0CAA0C;YAC1C,qDAAqD;SACtD,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,GAAG,kBAAkB,CAAC,IAAI,EAAE;QAC3C,UAAU,EAAE,CAAC,WAAW,EAAE,gBAAgB,CAAC;KAC5C,CAAC,CAAC;IACH,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;IACxC,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1D,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,SAAS,EAAE,OAAO,EAAE;QACpD,WAAW,EAAE,mBAAmB,CAAC,IAAI,CAAC;QACtC,WAAW,EAAE,iBAAiB,CAAC,IAAI,CAAC;KACrC,CAAC,CAAC;IAEH,IAAI,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;QACvB,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3C,OAAO;IACT,CAAC;IAED,YAAY,CAAC,WAAW,SAAS,EAAE,CAAC,CAAC;IACrC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC7C,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function listCommand(args: string[]): Promise<void>;
2
+ //# sourceMappingURL=list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAIA,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAwC/D"}
@@ -0,0 +1,37 @@
1
+ import { discoverAssets, loadConfig } from '../sdk.js';
2
+ import { hasFlag, readJsonFlag, readWorkspaceDir } from '../utils/args.js';
3
+ import { formatDiagnostic, formatTable, printCommandHelp, printLine, printSuccess } from '../utils/output.js';
4
+ export async function listCommand(args) {
5
+ if (hasFlag(args, '--help') || hasFlag(args, '-h')) {
6
+ printCommandHelp('list', 'list [options]', [
7
+ '--config <path> Path to workspace or config file',
8
+ '--json Machine-readable JSON output',
9
+ ]);
10
+ return;
11
+ }
12
+ const config = loadConfig(readWorkspaceDir(args));
13
+ const registry = await discoverAssets(config);
14
+ if (readJsonFlag(args)) {
15
+ printLine(JSON.stringify(registry, null, 2));
16
+ return;
17
+ }
18
+ if (registry.assets.length === 0) {
19
+ printSuccess('No assets found.');
20
+ return;
21
+ }
22
+ printLine(formatTable(registry.assets.map((asset) => ({
23
+ kind: asset.kind,
24
+ name: asset.name,
25
+ runtime: asset.runtime ?? '',
26
+ path: asset.localPath,
27
+ hash: asset.sourceHash.slice(0, 12),
28
+ })), ['kind', 'name', 'runtime', 'path', 'hash']));
29
+ if (registry.diagnostics.length > 0) {
30
+ printLine('');
31
+ printLine('Diagnostics:');
32
+ for (const diagnostic of registry.diagnostics) {
33
+ printLine(` ${formatDiagnostic(diagnostic, config.rootDir)}`);
34
+ }
35
+ }
36
+ }
37
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,gBAAgB,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAE9G,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAc;IAC9C,IAAI,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;QACnD,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,EAAE;YACzC,mDAAmD;YACnD,+CAA+C;SAChD,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;IAClD,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,CAAC;IAE9C,IAAI,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;QACvB,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7C,OAAO;IACT,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,YAAY,CAAC,kBAAkB,CAAC,CAAC;QACjC,OAAO;IACT,CAAC;IAED,SAAS,CAAC,WAAW,CACnB,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,EAAE;QAC5B,IAAI,EAAE,KAAK,CAAC,SAAS;QACrB,IAAI,EAAE,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;KACpC,CAAC,CAAC,EACH,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,CAC5C,CAAC,CAAC;IAEH,IAAI,QAAQ,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpC,SAAS,CAAC,EAAE,CAAC,CAAC;QACd,SAAS,CAAC,cAAc,CAAC,CAAC;QAC1B,KAAK,MAAM,UAAU,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;YAC9C,SAAS,CAAC,KAAK,gBAAgB,CAAC,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function loginCommand(args: string[]): Promise<void>;
2
+ //# sourceMappingURL=login.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAoFA,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA2FhE"}
@@ -0,0 +1,163 @@
1
+ import http from 'node:http';
2
+ import { startCliAuth, pollCliAuth } from '../sdk.js';
3
+ import { resolveAuthConfig, updateEnvironmentConfig, } from '../utils/auth.js';
4
+ import { getMe } from '../utils/api.js';
5
+ import { openBrowser } from '../utils/browser.js';
6
+ import { hasFlag, readEnvironmentFlag, readFlagValue, } from '../utils/args.js';
7
+ import { bold, cyan, printCommandHelp, printLine, printSuccess, printWarning } from '../utils/output.js';
8
+ const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
9
+ /** Resolve an absolute verification URL, using the API host as a fallback base. */
10
+ function absoluteVerificationUrl(verificationUrl, apiUrl) {
11
+ try {
12
+ // Already absolute.
13
+ return new URL(verificationUrl).toString();
14
+ }
15
+ catch {
16
+ try {
17
+ return new URL(verificationUrl, apiUrl).toString();
18
+ }
19
+ catch {
20
+ return verificationUrl;
21
+ }
22
+ }
23
+ }
24
+ /** A tiny loopback server so the browser can signal "approved" for faster UX. */
25
+ function startLoopback() {
26
+ return new Promise((resolve) => {
27
+ let resolveDone = () => undefined;
28
+ const done = new Promise((r) => {
29
+ resolveDone = r;
30
+ });
31
+ const server = http.createServer((req, res) => {
32
+ res.setHeader('Access-Control-Allow-Origin', '*');
33
+ res.statusCode = 204;
34
+ res.end();
35
+ if (req.url && req.url.startsWith('/done'))
36
+ resolveDone();
37
+ });
38
+ server.on('error', () => resolve({ port: 0, done, close: () => undefined }));
39
+ server.listen(0, '127.0.0.1', () => {
40
+ const address = server.address();
41
+ const port = address && typeof address === 'object' ? address.port : 0;
42
+ resolve({ port, done, close: () => server.close() });
43
+ });
44
+ });
45
+ }
46
+ async function persistLogin(environment, token, user) {
47
+ await updateEnvironmentConfig(environment, (slice) => {
48
+ slice.token = token;
49
+ if (user)
50
+ slice.user = user;
51
+ });
52
+ }
53
+ /** Fetch identity with the freshly-minted token and store the default workspace. */
54
+ async function finalizeWorkspace(environment) {
55
+ try {
56
+ const me = await getMe({ environment });
57
+ await updateEnvironmentConfig(environment, (slice) => {
58
+ if (!slice.workspaceId && me.activeWorkspace)
59
+ slice.workspaceId = me.activeWorkspace.id;
60
+ if (me.user)
61
+ slice.user = { id: me.user.id, email: me.user.email, name: me.user.name };
62
+ });
63
+ if (me.activeWorkspace) {
64
+ printLine(`Active workspace: ${bold(me.activeWorkspace.name)} (${me.activeWorkspace.slug || me.activeWorkspace.id})`);
65
+ }
66
+ if (me.workspaces.length > 1) {
67
+ printLine(`You belong to ${me.workspaces.length} workspaces. Switch with: ${cyan('inquir use <workspace>')}`);
68
+ }
69
+ }
70
+ catch {
71
+ // Non-fatal: token is stored; workspace can be set later via `inquir use`.
72
+ }
73
+ }
74
+ export async function loginCommand(args) {
75
+ if (hasFlag(args, '--help') || hasFlag(args, '-h')) {
76
+ printCommandHelp('login', 'login [options]', [
77
+ '--token <pat> Log in non-interactively with a Personal Access Token',
78
+ '--browserless Do not open a browser; print the URL and code to visit manually',
79
+ '--name <name> Label for this device/token (shown in the dashboard)',
80
+ '--api-url <url> API base URL (overrides config/env)',
81
+ '--env <name> Store credentials under a named environment',
82
+ ]);
83
+ return;
84
+ }
85
+ const environment = readEnvironmentFlag(args);
86
+ const apiUrlOverride = readFlagValue(args, '--api-url');
87
+ const resolved = await resolveAuthConfig({ environment, apiUrl: apiUrlOverride });
88
+ const apiUrl = resolved.apiUrl;
89
+ // --- Non-interactive: a PAT was supplied directly. ---
90
+ const providedToken = readFlagValue(args, '--token');
91
+ if (providedToken) {
92
+ await persistLogin(environment, providedToken, undefined);
93
+ await finalizeWorkspace(environment);
94
+ printSuccess('Logged in with the provided token.');
95
+ return;
96
+ }
97
+ const deviceName = readFlagValue(args, '--name') ?? defaultDeviceName();
98
+ const browserless = hasFlag(args, '--browserless') || hasFlag(args, '--no-browser');
99
+ const loopback = browserless ? null : await startLoopback();
100
+ const pairing = await startCliAuth(apiUrl, { name: deviceName, port: loopback?.port || undefined });
101
+ const verificationUrl = absoluteVerificationUrl(pairing.verificationUrl, apiUrl);
102
+ printLine('');
103
+ printLine(`To authorize this device, open:`);
104
+ printLine(` ${cyan(verificationUrl)}`);
105
+ printLine('');
106
+ printLine(`Confirm this code matches your browser: ${bold(pairing.userCode)}`);
107
+ printLine('');
108
+ if (!browserless) {
109
+ const opened = openBrowser(verificationUrl);
110
+ if (opened) {
111
+ printLine('Opened your browser. Waiting for approval…');
112
+ }
113
+ else {
114
+ printWarning('Could not open a browser automatically. Open the URL above manually.');
115
+ }
116
+ }
117
+ else {
118
+ printLine('Waiting for approval…');
119
+ }
120
+ const deadline = new Date(pairing.expiresAt).getTime();
121
+ const intervalMs = Math.max(1, pairing.interval) * 1000;
122
+ try {
123
+ for (;;) {
124
+ if (Date.now() > deadline) {
125
+ throw new Error('Login request expired. Run `inquir login` again.');
126
+ }
127
+ // Wait the poll interval, but wake early if the browser pinged us.
128
+ if (loopback) {
129
+ await Promise.race([sleep(intervalMs), loopback.done]);
130
+ }
131
+ else {
132
+ await sleep(intervalMs);
133
+ }
134
+ const result = await pollCliAuth(apiUrl, {
135
+ pairingId: pairing.pairingId,
136
+ deviceSecret: pairing.deviceSecret,
137
+ });
138
+ if (result.status === 'approved') {
139
+ const user = { id: result.user.id, email: result.user.email, name: result.user.name };
140
+ await persistLogin(environment, result.token, user);
141
+ const who = user.name || user.email || user.id;
142
+ printSuccess(`Logged in as ${who}.`);
143
+ await finalizeWorkspace(environment);
144
+ return;
145
+ }
146
+ if (result.status === 'denied') {
147
+ throw new Error('Login request was denied in the browser.');
148
+ }
149
+ if (result.status === 'expired') {
150
+ throw new Error('Login request expired. Run `inquir login` again.');
151
+ }
152
+ // status === 'pending' -> keep polling
153
+ }
154
+ }
155
+ finally {
156
+ loopback?.close();
157
+ }
158
+ }
159
+ function defaultDeviceName() {
160
+ const host = process.env.COMPUTERNAME || process.env.HOSTNAME || 'device';
161
+ return `inquir-cli@${host}`;
162
+ }
163
+ //# sourceMappingURL=login.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function logoutCommand(args: string[]): Promise<void>;
2
+ //# sourceMappingURL=logout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logout.d.ts","sourceRoot":"","sources":["../../src/commands/logout.ts"],"names":[],"mappings":"AAIA,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAejE"}
@@ -0,0 +1,19 @@
1
+ import { readEnvironmentFlag, hasFlag } from '../utils/args.js';
2
+ import { updateEnvironmentConfig } from '../utils/auth.js';
3
+ import { printCommandHelp, printSuccess } from '../utils/output.js';
4
+ export async function logoutCommand(args) {
5
+ if (hasFlag(args, '--help') || hasFlag(args, '-h')) {
6
+ printCommandHelp('logout', 'logout [options]', [
7
+ '--env <name> Clear credentials for a named environment',
8
+ ]);
9
+ return;
10
+ }
11
+ const environment = readEnvironmentFlag(args);
12
+ await updateEnvironmentConfig(environment, (slice) => {
13
+ delete slice.token;
14
+ delete slice.user;
15
+ delete slice.workspaceId;
16
+ });
17
+ printSuccess('Logged out. Stored token and active workspace were cleared.');
18
+ }
19
+ //# sourceMappingURL=logout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logout.js","sourceRoot":"","sources":["../../src/commands/logout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEpE,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAc;IAChD,IAAI,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;QACnD,gBAAgB,CAAC,QAAQ,EAAE,kBAAkB,EAAE;YAC7C,0DAA0D;SAC3D,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,MAAM,WAAW,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAC9C,MAAM,uBAAuB,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE;QACnD,OAAO,KAAK,CAAC,KAAK,CAAC;QACnB,OAAO,KAAK,CAAC,IAAI,CAAC;QAClB,OAAO,KAAK,CAAC,WAAW,CAAC;IAC3B,CAAC,CAAC,CAAC;IACH,YAAY,CAAC,6DAA6D,CAAC,CAAC;AAC9E,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function logsCommand(args: string[]): Promise<void>;
2
+ //# sourceMappingURL=logs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logs.d.ts","sourceRoot":"","sources":["../../src/commands/logs.ts"],"names":[],"mappings":"AAIA,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAmD/D"}
@@ -0,0 +1,47 @@
1
+ import { hasFlag, readEnvironmentFlag, readJsonFlag, readLimitFlag, readPositionalArgs, readWorkspaceFlag } from '../utils/args.js';
2
+ import { listRemoteInvocations, resolveRemoteFunction } from '../utils/api.js';
3
+ import { dim, formatTable, printCommandHelp, printLine, printSuccess } from '../utils/output.js';
4
+ export async function logsCommand(args) {
5
+ if (hasFlag(args, '--help') || hasFlag(args, '-h')) {
6
+ printCommandHelp('logs', 'logs <asset> [options]', [
7
+ '--limit <n> Number of invocations to show (default: 10)',
8
+ '--env <name> Named environment',
9
+ '--json Machine-readable JSON output',
10
+ ]);
11
+ return;
12
+ }
13
+ const [assetName] = readPositionalArgs(args, {
14
+ valueFlags: ['--limit'],
15
+ });
16
+ if (!assetName) {
17
+ throw new Error('Missing asset name');
18
+ }
19
+ const limit = readLimitFlag(args, 10);
20
+ const apiOptions = {
21
+ environment: readEnvironmentFlag(args),
22
+ workspaceId: readWorkspaceFlag(args),
23
+ };
24
+ const remoteFunction = await resolveRemoteFunction(assetName, apiOptions);
25
+ const invocations = await listRemoteInvocations(remoteFunction.id, { limit }, apiOptions);
26
+ if (readJsonFlag(args)) {
27
+ printLine(JSON.stringify(invocations, null, 2));
28
+ return;
29
+ }
30
+ if (invocations.items.length === 0) {
31
+ printSuccess(`No invocations found for ${assetName}`);
32
+ return;
33
+ }
34
+ printLine(formatTable(invocations.items.map((item) => ({
35
+ id: item.id,
36
+ status: item.status,
37
+ durationMs: item.durationMs ?? '',
38
+ createdAt: item.createdAt ?? '',
39
+ })), ['id', 'status', 'durationMs', 'createdAt']));
40
+ const latest = invocations.items[0];
41
+ if (latest.logs) {
42
+ printLine('');
43
+ printLine(dim('Latest logs:'));
44
+ printLine(latest.logs);
45
+ }
46
+ }
47
+ //# sourceMappingURL=logs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logs.js","sourceRoot":"","sources":["../../src/commands/logs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,aAAa,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACpI,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,gBAAgB,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEjG,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAc;IAC9C,IAAI,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;QACnD,gBAAgB,CAAC,MAAM,EAAE,wBAAwB,EAAE;YACjD,2DAA2D;YAC3D,iCAAiC;YACjC,4CAA4C;SAC7C,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,GAAG,kBAAkB,CAAC,IAAI,EAAE;QAC3C,UAAU,EAAE,CAAC,SAAS,CAAC;KACxB,CAAC,CAAC;IACH,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;IACxC,CAAC;IAED,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACtC,MAAM,UAAU,GAAG;QACjB,WAAW,EAAE,mBAAmB,CAAC,IAAI,CAAC;QACtC,WAAW,EAAE,iBAAiB,CAAC,IAAI,CAAC;KACrC,CAAC;IACF,MAAM,cAAc,GAAG,MAAM,qBAAqB,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IAC1E,MAAM,WAAW,GAAG,MAAM,qBAAqB,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,UAAU,CAAC,CAAC;IAE1F,IAAI,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;QACvB,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAChD,OAAO;IACT,CAAC;IAED,IAAI,WAAW,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnC,YAAY,CAAC,4BAA4B,SAAS,EAAE,CAAC,CAAC;QACtD,OAAO;IACT,CAAC;IAED,SAAS,CAAC,WAAW,CACnB,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC/B,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,EAAE;QACjC,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,EAAE;KAChC,CAAC,CAAC,EACH,CAAC,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,CAAC,CAC5C,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACpC,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QAChB,SAAS,CAAC,EAAE,CAAC,CAAC;QACd,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC;QAC/B,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function rollbackCommand(args: string[]): Promise<void>;
2
+ //# sourceMappingURL=rollback.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rollback.d.ts","sourceRoot":"","sources":["../../src/commands/rollback.ts"],"names":[],"mappings":"AAKA,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA+DnE"}
@@ -0,0 +1,55 @@
1
+ import { hasFlag, readEnvironmentFlag, readJsonFlag, readPositionalArgs, readWorkspaceFlag } from '../utils/args.js';
2
+ import { listFunctionDeploys, resolveRemoteFunction, rollbackDeploy } from '../utils/api.js';
3
+ import { collectGitContext, followDeploy } from '../utils/deploy-follow.js';
4
+ import { printCommandHelp, printError, printLine, printSuccess } from '../utils/output.js';
5
+ export async function rollbackCommand(args) {
6
+ if (hasFlag(args, '--help') || hasFlag(args, '-h')) {
7
+ printCommandHelp('rollback', 'rollback <function> [deployId] [options]', [
8
+ 'deployId Target deploy to roll back to (defaults to previous successful)',
9
+ '--env <name> Named CLI environment from ~/.inquir/config.json',
10
+ '--no-logs Do not stream logs; wait for completion',
11
+ '--ci CI mode: plain output, exit non-zero on failure',
12
+ '--json Machine-readable JSON output',
13
+ ]);
14
+ return;
15
+ }
16
+ const [identifier, explicitDeployId] = readPositionalArgs(args);
17
+ if (!identifier) {
18
+ throw new Error('Missing function name or id');
19
+ }
20
+ const json = readJsonFlag(args);
21
+ const ci = hasFlag(args, '--ci');
22
+ const noLogs = hasFlag(args, '--no-logs');
23
+ const apiOptions = { environment: readEnvironmentFlag(args), workspaceId: readWorkspaceFlag(args) };
24
+ const fn = await resolveRemoteFunction(identifier, apiOptions);
25
+ let targetDeployId = explicitDeployId;
26
+ if (!targetDeployId) {
27
+ const history = await listFunctionDeploys(fn.id, { limit: 50 }, apiOptions);
28
+ const successes = history.items.filter((d) => d.status === 'success');
29
+ // Prefer the most recent successful deploy that isn't the active one.
30
+ const target = successes.find((d) => !d.isActive) ?? successes[1];
31
+ if (!target) {
32
+ throw new Error('No previous successful deploy to roll back to. Specify a deployId explicitly.');
33
+ }
34
+ targetDeployId = target.deployId;
35
+ }
36
+ const queued = await rollbackDeploy(fn.id, targetDeployId, { source: ci ? 'github-actions' : 'cli', git: collectGitContext() }, apiOptions);
37
+ if (!json) {
38
+ printLine(`Queued rollback ${queued.deployId} (v${queued.version}) → target ${targetDeployId}`);
39
+ }
40
+ const finalDeploy = await followDeploy(queued.deployId, apiOptions, { json, ci, noLogs });
41
+ if (json) {
42
+ printLine(JSON.stringify(finalDeploy, null, 2));
43
+ }
44
+ else if (finalDeploy.status === 'success') {
45
+ printSuccess(`Rolled back ${fn.name} (deploy ${finalDeploy.deployId}, v${finalDeploy.version})`);
46
+ }
47
+ else {
48
+ printError(`Rollback ${finalDeploy.deployId} ${finalDeploy.status}` +
49
+ (finalDeploy.error ? `: ${finalDeploy.error}` : ''));
50
+ }
51
+ if (finalDeploy.status !== 'success') {
52
+ process.exitCode = 1;
53
+ }
54
+ }
55
+ //# sourceMappingURL=rollback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rollback.js","sourceRoot":"","sources":["../../src/commands/rollback.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function runCommand(args: string[], inspectBrk?: boolean): Promise<void>;
2
+ //# sourceMappingURL=run.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"AAMA,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,UAAU,UAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CA6DlF"}