@inquir/compute 0.1.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.
- package/README.md +97 -0
- package/dist/codegen.d.ts +6 -0
- package/dist/codegen.d.ts.map +1 -0
- package/dist/codegen.js +209 -0
- package/dist/codegen.js.map +1 -0
- package/dist/config.d.ts +24 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +50 -0
- package/dist/config.js.map +1 -0
- package/dist/define-function.d.ts +22 -0
- package/dist/define-function.d.ts.map +1 -0
- package/dist/define-function.js +30 -0
- package/dist/define-function.js.map +1 -0
- package/dist/define-pipeline.d.ts +8 -0
- package/dist/define-pipeline.d.ts.map +1 -0
- package/dist/define-pipeline.js +56 -0
- package/dist/define-pipeline.js.map +1 -0
- package/dist/discovery-harness.d.ts +2 -0
- package/dist/discovery-harness.d.ts.map +1 -0
- package/dist/discovery-harness.js +67 -0
- package/dist/discovery-harness.js.map +1 -0
- package/dist/discovery.d.ts +4 -0
- package/dist/discovery.d.ts.map +1 -0
- package/dist/discovery.js +136 -0
- package/dist/discovery.js.map +1 -0
- package/dist/hashing.d.ts +2 -0
- package/dist/hashing.d.ts.map +1 -0
- package/dist/hashing.js +51 -0
- package/dist/hashing.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -0
- package/dist/json-schema.d.ts +4 -0
- package/dist/json-schema.d.ts.map +1 -0
- package/dist/json-schema.js +162 -0
- package/dist/json-schema.js.map +1 -0
- package/dist/local-runner-harness.d.ts +2 -0
- package/dist/local-runner-harness.d.ts.map +1 -0
- package/dist/local-runner-harness.js +87 -0
- package/dist/local-runner-harness.js.map +1 -0
- package/dist/local-runner.d.ts +4 -0
- package/dist/local-runner.d.ts.map +1 -0
- package/dist/local-runner.js +92 -0
- package/dist/local-runner.js.map +1 -0
- package/dist/transport.d.ts +257 -0
- package/dist/transport.d.ts.map +1 -0
- package/dist/transport.js +257 -0
- package/dist/transport.js.map +1 -0
- package/dist/types.d.ts +198 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/zip.d.ts +6 -0
- package/dist/zip.d.ts.map +1 -0
- package/dist/zip.js +145 -0
- package/dist/zip.js.map +1 -0
- package/package.json +35 -0
package/README.md
ADDED
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
# @inquir/compute
|
|
2
|
+
|
|
3
|
+
Workspace-first SDK for defining, discovering, generating, and running Inquir Compute assets.
|
|
4
|
+
|
|
5
|
+
## Install
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install @inquir/compute zod
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## What It Includes
|
|
12
|
+
|
|
13
|
+
- `defineFunction()` and `definePipeline()` for code-first assets.
|
|
14
|
+
- `loadConfig()` for `inquir.config.json`.
|
|
15
|
+
- `discoverAssets()` for workspace asset scanning.
|
|
16
|
+
- `generateCodegenArtifacts()` / `generateAndWriteCodegenArtifacts()` for typed client + `registry.json`.
|
|
17
|
+
- `runLocally()` for local function execution/debug harness.
|
|
18
|
+
- HTTP transport helpers (`createClient`, `invokeRemote`, deploy/list helpers).
|
|
19
|
+
|
|
20
|
+
## Concepts
|
|
21
|
+
|
|
22
|
+
- **Function**: a single compute unit with typed input/output (Zod schemas). Created with `defineFunction()`. Discovered by file pattern, run locally via `runLocally()`, deployed and invoked remotely via the transport helpers.
|
|
23
|
+
- **Pipeline**: a declarative DAG of functions created with `definePipeline()`. Included in the codegen registry; orchestration is handled server-side.
|
|
24
|
+
- **Client**: the generated `client.ts` (from `generateAndWriteCodegenArtifacts()`). Provides a type-safe `createClient()` factory that wraps `invokeRemote()` with your asset's I/O types.
|
|
25
|
+
- **Source of truth**: local files on disk. `registry.json` is derived — rebuild it with `generateAndWriteCodegenArtifacts()` whenever sources change.
|
|
26
|
+
- **Local ↔ remote link**: remote functions store `linkedLocalName` (local asset name) and `sourceHash`. Compare hashes to detect drift.
|
|
27
|
+
|
|
28
|
+
## Quick Example
|
|
29
|
+
|
|
30
|
+
```ts
|
|
31
|
+
import { defineFunction } from '@inquir/compute';
|
|
32
|
+
import { z } from 'zod';
|
|
33
|
+
|
|
34
|
+
export const hello = defineFunction(
|
|
35
|
+
{
|
|
36
|
+
name: 'hello',
|
|
37
|
+
input: z.object({ name: z.string().optional() }),
|
|
38
|
+
output: z.object({ message: z.string() }),
|
|
39
|
+
},
|
|
40
|
+
async (input) => ({ message: `Hello, ${input.name ?? 'world'}` })
|
|
41
|
+
);
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Minimal Workspace Config
|
|
45
|
+
|
|
46
|
+
Create `inquir.config.json`:
|
|
47
|
+
|
|
48
|
+
```json
|
|
49
|
+
{
|
|
50
|
+
"functionsDir": "inquir/functions",
|
|
51
|
+
"pipelinesDir": "inquir/pipelines",
|
|
52
|
+
"generatedDir": ".inquir/generated"
|
|
53
|
+
}
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## Discovery + Codegen
|
|
57
|
+
|
|
58
|
+
```ts
|
|
59
|
+
import { discoverAssets, generateAndWriteCodegenArtifacts, loadConfig } from '@inquir/compute';
|
|
60
|
+
|
|
61
|
+
const config = loadConfig(process.cwd());
|
|
62
|
+
const registry = await discoverAssets(config);
|
|
63
|
+
await generateAndWriteCodegenArtifacts(config.absoluteGeneratedDir, registry);
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
This generates:
|
|
67
|
+
|
|
68
|
+
- `.inquir/generated/client.ts`
|
|
69
|
+
- `.inquir/generated/registry.json`
|
|
70
|
+
|
|
71
|
+
`registry.json` includes stable metadata such as `name`, `kind`, `sourceHash`, and `assetRoot`.
|
|
72
|
+
|
|
73
|
+
## Local Run
|
|
74
|
+
|
|
75
|
+
```ts
|
|
76
|
+
import { runLocally } from '@inquir/compute';
|
|
77
|
+
|
|
78
|
+
const result = await runLocally(
|
|
79
|
+
{
|
|
80
|
+
kind: 'function',
|
|
81
|
+
name: 'hello',
|
|
82
|
+
filePath: '/abs/path/inquir/functions/hello/index.ts',
|
|
83
|
+
exportName: 'hello',
|
|
84
|
+
},
|
|
85
|
+
{ name: 'World' }
|
|
86
|
+
);
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
## Remote Invoke (Transport)
|
|
90
|
+
|
|
91
|
+
```ts
|
|
92
|
+
import { createClient, invokeRemote } from '@inquir/compute';
|
|
93
|
+
|
|
94
|
+
const client = createClient({ baseUrl: 'http://localhost:3000', apiKey: process.env.INQUIR_API_KEY });
|
|
95
|
+
const response = await invokeRemote(client, 'hello', { name: 'World' });
|
|
96
|
+
```
|
|
97
|
+
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { AssetRegistry, GenerateCodegenArtifactsResult } from './types.js';
|
|
2
|
+
export declare function generateCodegenArtifacts(registry: AssetRegistry, outputDir?: string): GenerateCodegenArtifactsResult;
|
|
3
|
+
export declare function writeCodegenArtifacts(outputDir: string, artifacts: GenerateCodegenArtifactsResult): Promise<void>;
|
|
4
|
+
export declare function generateAndWriteCodegenArtifacts(outputDir: string, registry: AssetRegistry): Promise<GenerateCodegenArtifactsResult>;
|
|
5
|
+
export declare function createCodegenFingerprint(registry: AssetRegistry): string;
|
|
6
|
+
//# sourceMappingURL=codegen.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codegen.d.ts","sourceRoot":"","sources":["../src/codegen.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAc,aAAa,EAA8E,8BAA8B,EAAE,MAAM,YAAY,CAAC;AAsMxK,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,aAAa,EAAE,SAAS,GAAE,MAAsB,GAAG,8BAA8B,CAYnI;AAED,wBAAsB,qBAAqB,CACzC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,8BAA8B,GACxC,OAAO,CAAC,IAAI,CAAC,CAMf;AAED,wBAAsB,gCAAgC,CACpD,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,aAAa,GACtB,OAAO,CAAC,8BAA8B,CAAC,CAIzC;AAED,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM,CAGxE"}
|
package/dist/codegen.js
ADDED
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
import fs from 'node:fs/promises';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { createHash } from 'node:crypto';
|
|
4
|
+
function normalizeWords(value) {
|
|
5
|
+
return value
|
|
6
|
+
.replace(/([a-z0-9])([A-Z])/g, '$1 $2')
|
|
7
|
+
.replace(/[^A-Za-z0-9]+/g, ' ')
|
|
8
|
+
.trim()
|
|
9
|
+
.split(/\s+/)
|
|
10
|
+
.filter(Boolean);
|
|
11
|
+
}
|
|
12
|
+
function toCamelCase(value) {
|
|
13
|
+
const words = normalizeWords(value);
|
|
14
|
+
if (words.length === 0)
|
|
15
|
+
return 'asset';
|
|
16
|
+
const [head, ...tail] = words;
|
|
17
|
+
const camel = [head.toLowerCase(), ...tail.map((w) => w.charAt(0).toUpperCase() + w.slice(1).toLowerCase())].join('');
|
|
18
|
+
return /^[A-Za-z_$]/.test(camel) ? camel : `asset${camel.charAt(0).toUpperCase()}${camel.slice(1)}`;
|
|
19
|
+
}
|
|
20
|
+
function sortAssets(assets) {
|
|
21
|
+
return [...assets].sort((left, right) => left.kind.localeCompare(right.kind)
|
|
22
|
+
|| left.name.localeCompare(right.name)
|
|
23
|
+
|| left.localPath.localeCompare(right.localPath)
|
|
24
|
+
|| left.exportName.localeCompare(right.exportName));
|
|
25
|
+
}
|
|
26
|
+
function toPascalCase(value) {
|
|
27
|
+
const words = normalizeWords(value);
|
|
28
|
+
if (words.length === 0)
|
|
29
|
+
return 'Asset';
|
|
30
|
+
const pascal = words.map((w) => w.charAt(0).toUpperCase() + w.slice(1).toLowerCase()).join('');
|
|
31
|
+
return /^[A-Za-z_$]/.test(pascal) ? pascal : `Asset${pascal}`;
|
|
32
|
+
}
|
|
33
|
+
function toRuntimeImportExtension(filePath) {
|
|
34
|
+
switch (path.extname(filePath)) {
|
|
35
|
+
case '.mts':
|
|
36
|
+
return '.mjs';
|
|
37
|
+
case '.cts':
|
|
38
|
+
return '.cjs';
|
|
39
|
+
case '.mjs':
|
|
40
|
+
case '.cjs':
|
|
41
|
+
case '.js':
|
|
42
|
+
case '.jsx':
|
|
43
|
+
return path.extname(filePath);
|
|
44
|
+
case '.ts':
|
|
45
|
+
case '.tsx':
|
|
46
|
+
default:
|
|
47
|
+
return '.js';
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
function toRuntimeImportPath(outputDir, filePath) {
|
|
51
|
+
const relativePath = path.relative(path.resolve(outputDir), path.resolve(filePath)).replace(/\\/g, '/');
|
|
52
|
+
const extension = toRuntimeImportExtension(filePath);
|
|
53
|
+
const parsed = relativePath.replace(/\.[^/]+$/, extension);
|
|
54
|
+
return parsed.startsWith('.') ? parsed : `./${parsed}`;
|
|
55
|
+
}
|
|
56
|
+
function assignClientNames(assets) {
|
|
57
|
+
const seenCounts = new Map();
|
|
58
|
+
const collisions = [];
|
|
59
|
+
const entries = sortAssets(assets).map((asset) => {
|
|
60
|
+
const baseName = toCamelCase(asset.name);
|
|
61
|
+
const count = (seenCounts.get(baseName) ?? 0) + 1;
|
|
62
|
+
seenCounts.set(baseName, count);
|
|
63
|
+
const clientName = count === 1 ? baseName : `${baseName}_${count}`;
|
|
64
|
+
if (count >= 2) {
|
|
65
|
+
collisions.push({
|
|
66
|
+
code: 'CLIENT_NAME_COLLISION',
|
|
67
|
+
filePath: asset.filePath,
|
|
68
|
+
message: `Client name "${baseName}" is shared by multiple assets (will be disambiguated as "${clientName}"). Consider renaming.`,
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
return {
|
|
72
|
+
kind: asset.kind,
|
|
73
|
+
name: asset.name,
|
|
74
|
+
runtime: asset.runtime,
|
|
75
|
+
exportName: asset.exportName,
|
|
76
|
+
filePath: asset.filePath,
|
|
77
|
+
assetRoot: asset.assetDir,
|
|
78
|
+
localPath: asset.localPath,
|
|
79
|
+
sourceHash: asset.sourceHash,
|
|
80
|
+
clientName,
|
|
81
|
+
inputSchema: asset.kind === 'function' ? asset.inputSchema : undefined,
|
|
82
|
+
};
|
|
83
|
+
});
|
|
84
|
+
return { entries, collisions };
|
|
85
|
+
}
|
|
86
|
+
function renderClientSource(registry, outputDir) {
|
|
87
|
+
const functionEntries = registry.assets.filter((asset) => asset.kind === 'function');
|
|
88
|
+
const pipelineEntries = registry.assets.filter((asset) => asset.kind === 'pipeline');
|
|
89
|
+
const imports = [
|
|
90
|
+
`import { createClient as createRemoteClient, invokeRemote } from '@inquir/compute';`,
|
|
91
|
+
`import { z } from 'zod';`,
|
|
92
|
+
];
|
|
93
|
+
const assetTypeImports = registry.assets.map((asset) => {
|
|
94
|
+
const importAlias = `${asset.clientName}Asset`;
|
|
95
|
+
return `import type { ${asset.exportName} as ${importAlias} } from ${JSON.stringify(toRuntimeImportPath(outputDir, asset.filePath))};`;
|
|
96
|
+
});
|
|
97
|
+
const functionTypeAliases = functionEntries.flatMap((asset) => {
|
|
98
|
+
const typeBase = toPascalCase(asset.clientName);
|
|
99
|
+
const importAlias = `${asset.clientName}Asset`;
|
|
100
|
+
return [
|
|
101
|
+
`type ${typeBase}Input = z.infer<typeof ${importAlias}['definition']['input']>;`,
|
|
102
|
+
`type ${typeBase}Output = z.infer<typeof ${importAlias}['definition']['output']>;`,
|
|
103
|
+
];
|
|
104
|
+
});
|
|
105
|
+
const entriesToSource = (entries) => entries.map((asset) => {
|
|
106
|
+
const typeBase = toPascalCase(asset.clientName);
|
|
107
|
+
const inputType = asset.kind === 'function' ? `${typeBase}Input` : 'unknown';
|
|
108
|
+
const outputType = asset.kind === 'function' ? `${typeBase}Output` : 'unknown';
|
|
109
|
+
return [
|
|
110
|
+
` ${asset.clientName}: {`,
|
|
111
|
+
` async invoke(input: ${inputType}): Promise<${outputType}> {`,
|
|
112
|
+
` const response = await invokeRemote<${inputType}, ${outputType}>(remoteClient, ${JSON.stringify(asset.name)}, input);`,
|
|
113
|
+
` return response.result as ${outputType};`,
|
|
114
|
+
' },',
|
|
115
|
+
' },',
|
|
116
|
+
].join('\n');
|
|
117
|
+
}).join('\n');
|
|
118
|
+
return [
|
|
119
|
+
...imports,
|
|
120
|
+
...assetTypeImports,
|
|
121
|
+
'',
|
|
122
|
+
'export interface ClientOptions {',
|
|
123
|
+
' baseUrl?: string;',
|
|
124
|
+
' apiKey?: string;',
|
|
125
|
+
'}',
|
|
126
|
+
'',
|
|
127
|
+
'type RuntimeEnv = {',
|
|
128
|
+
' INQUIR_COMPUTE_API_URL?: string;',
|
|
129
|
+
' INQUIR_COMPUTE_API_KEY?: string;',
|
|
130
|
+
'};',
|
|
131
|
+
'',
|
|
132
|
+
'function resolveRuntimeEnv(): RuntimeEnv {',
|
|
133
|
+
' const scope = globalThis as typeof globalThis & { process?: { env?: Record<string, string | undefined> } };',
|
|
134
|
+
' const env = scope.process?.env;',
|
|
135
|
+
' return {',
|
|
136
|
+
' INQUIR_COMPUTE_API_URL: env?.INQUIR_COMPUTE_API_URL,',
|
|
137
|
+
' INQUIR_COMPUTE_API_KEY: env?.INQUIR_COMPUTE_API_KEY,',
|
|
138
|
+
' };',
|
|
139
|
+
'}',
|
|
140
|
+
'',
|
|
141
|
+
...functionTypeAliases,
|
|
142
|
+
'',
|
|
143
|
+
'',
|
|
144
|
+
'export function createClient(options: ClientOptions = {}) {',
|
|
145
|
+
' const runtimeEnv = resolveRuntimeEnv();',
|
|
146
|
+
' const remoteClient = createRemoteClient({',
|
|
147
|
+
' baseUrl: options.baseUrl ?? runtimeEnv.INQUIR_COMPUTE_API_URL ?? "https://api.inquir.org",',
|
|
148
|
+
' apiKey: options.apiKey ?? runtimeEnv.INQUIR_COMPUTE_API_KEY,',
|
|
149
|
+
' });',
|
|
150
|
+
'',
|
|
151
|
+
' return {',
|
|
152
|
+
' functions: {',
|
|
153
|
+
...(functionEntries.length > 0 ? entriesToSource(functionEntries).split('\n') : [' // no functions discovered']),
|
|
154
|
+
' },',
|
|
155
|
+
' pipelines: {',
|
|
156
|
+
...(pipelineEntries.length > 0 ? entriesToSource(pipelineEntries).split('\n') : [' // no pipelines discovered']),
|
|
157
|
+
' },',
|
|
158
|
+
' };',
|
|
159
|
+
'}',
|
|
160
|
+
'',
|
|
161
|
+
'export const client = createClient();',
|
|
162
|
+
].join('\n');
|
|
163
|
+
}
|
|
164
|
+
function stableRegistryJson(registry) {
|
|
165
|
+
const normalized = {
|
|
166
|
+
assets: registry.assets.map((asset) => ({
|
|
167
|
+
kind: asset.kind,
|
|
168
|
+
name: asset.name,
|
|
169
|
+
runtime: asset.runtime,
|
|
170
|
+
exportName: asset.exportName,
|
|
171
|
+
filePath: asset.filePath,
|
|
172
|
+
assetRoot: asset.assetRoot,
|
|
173
|
+
localPath: asset.localPath,
|
|
174
|
+
sourceHash: asset.sourceHash,
|
|
175
|
+
clientName: asset.clientName,
|
|
176
|
+
...(asset.kind === 'function' && asset.inputSchema ? { inputSchema: asset.inputSchema } : {}),
|
|
177
|
+
})),
|
|
178
|
+
};
|
|
179
|
+
return JSON.stringify(normalized, null, 2);
|
|
180
|
+
}
|
|
181
|
+
export function generateCodegenArtifacts(registry, outputDir = process.cwd()) {
|
|
182
|
+
const { entries, collisions } = assignClientNames(registry.assets);
|
|
183
|
+
const generatedRegistry = {
|
|
184
|
+
assets: entries,
|
|
185
|
+
};
|
|
186
|
+
return {
|
|
187
|
+
registry: generatedRegistry,
|
|
188
|
+
clientSource: renderClientSource(generatedRegistry, outputDir),
|
|
189
|
+
registryJson: stableRegistryJson(generatedRegistry),
|
|
190
|
+
collisionDiagnostics: collisions,
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
export async function writeCodegenArtifacts(outputDir, artifacts) {
|
|
194
|
+
await fs.mkdir(outputDir, { recursive: true });
|
|
195
|
+
await Promise.all([
|
|
196
|
+
fs.writeFile(path.join(outputDir, 'client.ts'), artifacts.clientSource, 'utf8'),
|
|
197
|
+
fs.writeFile(path.join(outputDir, 'registry.json'), artifacts.registryJson, 'utf8'),
|
|
198
|
+
]);
|
|
199
|
+
}
|
|
200
|
+
export async function generateAndWriteCodegenArtifacts(outputDir, registry) {
|
|
201
|
+
const artifacts = generateCodegenArtifacts(registry, outputDir);
|
|
202
|
+
await writeCodegenArtifacts(outputDir, artifacts);
|
|
203
|
+
return artifacts;
|
|
204
|
+
}
|
|
205
|
+
export function createCodegenFingerprint(registry) {
|
|
206
|
+
const artifacts = generateCodegenArtifacts(registry);
|
|
207
|
+
return createHash('sha256').update(artifacts.registryJson).digest('hex');
|
|
208
|
+
}
|
|
209
|
+
//# sourceMappingURL=codegen.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codegen.js","sourceRoot":"","sources":["../src/codegen.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const configFileSchema: z.ZodObject<{
|
|
3
|
+
functionsDir: z.ZodDefault<z.ZodString>;
|
|
4
|
+
pipelinesDir: z.ZodDefault<z.ZodString>;
|
|
5
|
+
generatedDir: z.ZodDefault<z.ZodString>;
|
|
6
|
+
}, "strip", z.ZodTypeAny, {
|
|
7
|
+
functionsDir: string;
|
|
8
|
+
pipelinesDir: string;
|
|
9
|
+
generatedDir: string;
|
|
10
|
+
}, {
|
|
11
|
+
functionsDir?: string | undefined;
|
|
12
|
+
pipelinesDir?: string | undefined;
|
|
13
|
+
generatedDir?: string | undefined;
|
|
14
|
+
}>;
|
|
15
|
+
export type InquirConfigFile = z.infer<typeof configFileSchema>;
|
|
16
|
+
export interface LoadedConfig extends InquirConfigFile {
|
|
17
|
+
rootDir: string;
|
|
18
|
+
configPath: string | null;
|
|
19
|
+
absoluteFunctionsDir: string;
|
|
20
|
+
absolutePipelinesDir: string;
|
|
21
|
+
absoluteGeneratedDir: string;
|
|
22
|
+
}
|
|
23
|
+
export declare function loadConfig(configTarget: string): LoadedConfig;
|
|
24
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,gBAAgB;;;;;;;;;;;;EAI3B,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAEhE,MAAM,WAAW,YAAa,SAAQ,gBAAgB;IACpD,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AAgCD,wBAAgB,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,YAAY,CAiB7D"}
|
package/dist/config.js
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
export const configFileSchema = z.object({
|
|
5
|
+
functionsDir: z.string().min(1).default('inquir/functions'),
|
|
6
|
+
pipelinesDir: z.string().min(1).default('inquir/pipelines'),
|
|
7
|
+
generatedDir: z.string().min(1).default('.inquir/generated'),
|
|
8
|
+
});
|
|
9
|
+
function findConfigPath(startDir) {
|
|
10
|
+
let currentDir = path.resolve(startDir);
|
|
11
|
+
while (true) {
|
|
12
|
+
const candidate = path.join(currentDir, 'inquir.config.json');
|
|
13
|
+
if (fs.existsSync(candidate)) {
|
|
14
|
+
return candidate;
|
|
15
|
+
}
|
|
16
|
+
const parentDir = path.dirname(currentDir);
|
|
17
|
+
if (parentDir === currentDir) {
|
|
18
|
+
return null;
|
|
19
|
+
}
|
|
20
|
+
currentDir = parentDir;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
function resolveConfigPath(inputPath) {
|
|
24
|
+
const resolvedInputPath = path.resolve(inputPath);
|
|
25
|
+
if (path.extname(resolvedInputPath) === '.json') {
|
|
26
|
+
return resolvedInputPath;
|
|
27
|
+
}
|
|
28
|
+
if (fs.existsSync(resolvedInputPath) && fs.statSync(resolvedInputPath).isFile()) {
|
|
29
|
+
return resolvedInputPath;
|
|
30
|
+
}
|
|
31
|
+
return findConfigPath(resolvedInputPath);
|
|
32
|
+
}
|
|
33
|
+
export function loadConfig(configTarget) {
|
|
34
|
+
const resolvedTarget = path.resolve(configTarget);
|
|
35
|
+
const configPath = resolveConfigPath(resolvedTarget);
|
|
36
|
+
const configRoot = configPath ? path.dirname(configPath) : resolvedTarget;
|
|
37
|
+
const rawConfig = configPath
|
|
38
|
+
? JSON.parse(fs.readFileSync(configPath, 'utf8'))
|
|
39
|
+
: {};
|
|
40
|
+
const config = configFileSchema.parse(rawConfig);
|
|
41
|
+
return {
|
|
42
|
+
...config,
|
|
43
|
+
rootDir: configRoot,
|
|
44
|
+
configPath,
|
|
45
|
+
absoluteFunctionsDir: path.resolve(configRoot, config.functionsDir),
|
|
46
|
+
absolutePipelinesDir: path.resolve(configRoot, config.pipelinesDir),
|
|
47
|
+
absoluteGeneratedDir: path.resolve(configRoot, config.generatedDir),
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC;IAC3D,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC;IAC3D,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC;CAC7D,CAAC,CAAC;AAYH,SAAS,cAAc,CAAC,QAAgB;IACtC,IAAI,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACxC,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAC;QAC9D,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC3C,IAAI,SAAS,KAAK,UAAU,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,UAAU,GAAG,SAAS,CAAC;IACzB,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,SAAiB;IAC1C,MAAM,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAElD,IAAI,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,KAAK,OAAO,EAAE,CAAC;QAChD,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAED,IAAI,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;QAChF,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAED,OAAO,cAAc,CAAC,iBAAiB,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,YAAoB;IAC7C,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAClD,MAAM,UAAU,GAAG,iBAAiB,CAAC,cAAc,CAAC,CAAC;IACrD,MAAM,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC;IAC1E,MAAM,SAAS,GAAG,UAAU;QAC1B,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAY;QAC5D,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAEjD,OAAO;QACL,GAAG,MAAM;QACT,OAAO,EAAE,UAAU;QACnB,UAAU;QACV,oBAAoB,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,YAAY,CAAC;QACnE,oBAAoB,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,YAAY,CAAC;QACnE,oBAAoB,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,YAAY,CAAC;KACpE,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { z, type ZodTypeAny } from 'zod';
|
|
2
|
+
import { type ManagedFunction, type ManagedFunctionHandler, type ModuleType, type RuntimeFamily } from './types.js';
|
|
3
|
+
export interface DefineFunctionOptions<TInputSchema extends ZodTypeAny, TOutputSchema extends ZodTypeAny> {
|
|
4
|
+
name?: string;
|
|
5
|
+
runtime?: RuntimeFamily;
|
|
6
|
+
entrypoint?: string;
|
|
7
|
+
timeoutMs?: number;
|
|
8
|
+
memoryMB?: number;
|
|
9
|
+
allowNetwork?: boolean;
|
|
10
|
+
environment?: Record<string, string>;
|
|
11
|
+
tags?: string[];
|
|
12
|
+
/**
|
|
13
|
+
* For Node functions only. Set to 'esm' or 'commonjs' to skip content sniffing.
|
|
14
|
+
* Avoids the need for a per-function package.json and prevents the
|
|
15
|
+
* "renamed .js to .mjs and the function broke" class of bugs.
|
|
16
|
+
*/
|
|
17
|
+
moduleType?: ModuleType;
|
|
18
|
+
input?: TInputSchema;
|
|
19
|
+
output?: TOutputSchema;
|
|
20
|
+
}
|
|
21
|
+
export declare function defineFunction<TInputSchema extends ZodTypeAny = ZodTypeAny, TOutputSchema extends ZodTypeAny = ZodTypeAny>(options: DefineFunctionOptions<TInputSchema, TOutputSchema>, handler: ManagedFunctionHandler<z.infer<TInputSchema>, z.infer<TOutputSchema>>): ManagedFunction<TInputSchema, TOutputSchema>;
|
|
22
|
+
//# sourceMappingURL=define-function.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"define-function.d.ts","sourceRoot":"","sources":["../src/define-function.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,KAAK,UAAU,EAAE,MAAM,KAAK,CAAC;AACzC,OAAO,EAGL,KAAK,eAAe,EACpB,KAAK,sBAAsB,EAC3B,KAAK,UAAU,EACf,KAAK,aAAa,EACnB,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,qBAAqB,CAAC,YAAY,SAAS,UAAU,EAAE,aAAa,SAAS,UAAU;IACtG,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB;;;;OAIG;IACH,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,MAAM,CAAC,EAAE,aAAa,CAAC;CACxB;AAED,wBAAgB,cAAc,CAC5B,YAAY,SAAS,UAAU,GAAG,UAAU,EAC5C,aAAa,SAAS,UAAU,GAAG,UAAU,EAE7C,OAAO,EAAE,qBAAqB,CAAC,YAAY,EAAE,aAAa,CAAC,EAC3D,OAAO,EAAE,sBAAsB,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,GAC7E,eAAe,CAAC,YAAY,EAAE,aAAa,CAAC,CA2B9C"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { INQUIR_ASSET_MARKER, } from './types.js';
|
|
3
|
+
export function defineFunction(options, handler) {
|
|
4
|
+
const definition = {
|
|
5
|
+
name: options.name ?? '',
|
|
6
|
+
runtime: options.runtime ?? 'node',
|
|
7
|
+
entrypoint: options.entrypoint,
|
|
8
|
+
timeoutMs: options.timeoutMs,
|
|
9
|
+
memoryMB: options.memoryMB,
|
|
10
|
+
allowNetwork: options.allowNetwork,
|
|
11
|
+
environment: options.environment ? { ...options.environment } : undefined,
|
|
12
|
+
tags: options.tags ? [...options.tags] : undefined,
|
|
13
|
+
moduleType: options.moduleType,
|
|
14
|
+
input: (options.input ?? z.unknown()),
|
|
15
|
+
output: (options.output ?? z.unknown()),
|
|
16
|
+
};
|
|
17
|
+
return {
|
|
18
|
+
kind: 'function',
|
|
19
|
+
name: definition.name,
|
|
20
|
+
runtime: definition.runtime,
|
|
21
|
+
definition,
|
|
22
|
+
handler: handler,
|
|
23
|
+
[INQUIR_ASSET_MARKER]: {
|
|
24
|
+
kind: 'function',
|
|
25
|
+
name: definition.name,
|
|
26
|
+
runtime: definition.runtime,
|
|
27
|
+
},
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=define-function.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"define-function.js","sourceRoot":"","sources":["../src/define-function.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAmB,MAAM,KAAK,CAAC;AACzC,OAAO,EACL,mBAAmB,GAMpB,MAAM,YAAY,CAAC;AAqBpB,MAAM,UAAU,cAAc,CAI5B,OAA2D,EAC3D,OAA8E;IAE9E,MAAM,UAAU,GAAoD;QAClE,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,EAAE;QACxB,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,MAAM;QAClC,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,WAAW,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS;QACzE,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;QAClD,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,KAAK,EAAE,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,OAAO,EAAE,CAAiB;QACrD,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC,OAAO,EAAE,CAAkB;KACzD,CAAC;IAEF,OAAO;QACL,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,UAAU,CAAC,IAAI;QACrB,OAAO,EAAE,UAAU,CAAC,OAAO;QAC3B,UAAU;QACV,OAAO,EAAE,OAAmD;QAC5D,CAAC,mBAAmB,CAAC,EAAE;YACrB,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,UAAU,CAAC,IAAI;YACrB,OAAO,EAAE,UAAU,CAAC,OAAO;SAC5B;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type ManagedPipeline, type RuntimeFamily } from './types.js';
|
|
2
|
+
export interface DefinePipelineOptions {
|
|
3
|
+
name: string;
|
|
4
|
+
runtime?: RuntimeFamily;
|
|
5
|
+
entrypoint?: string;
|
|
6
|
+
}
|
|
7
|
+
export declare function definePipeline(options: DefinePipelineOptions): ManagedPipeline;
|
|
8
|
+
//# sourceMappingURL=define-pipeline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"define-pipeline.d.ts","sourceRoot":"","sources":["../src/define-pipeline.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,eAAe,EAIpB,KAAK,aAAa,EACnB,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAwDD,wBAAgB,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,eAAe,CAE9E"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { INQUIR_ASSET_MARKER, } from './types.js';
|
|
2
|
+
class PipelineBuilder {
|
|
3
|
+
options;
|
|
4
|
+
kind = 'pipeline';
|
|
5
|
+
name;
|
|
6
|
+
runtime;
|
|
7
|
+
steps = [];
|
|
8
|
+
graph = { nodes: [], edges: [] };
|
|
9
|
+
definition;
|
|
10
|
+
[INQUIR_ASSET_MARKER];
|
|
11
|
+
constructor(options) {
|
|
12
|
+
this.options = options;
|
|
13
|
+
this.name = options.name;
|
|
14
|
+
this.runtime = options.runtime ?? 'node';
|
|
15
|
+
this.definition = {
|
|
16
|
+
name: this.name,
|
|
17
|
+
runtime: this.runtime,
|
|
18
|
+
entrypoint: options.entrypoint,
|
|
19
|
+
steps: this.steps,
|
|
20
|
+
graph: this.graph,
|
|
21
|
+
};
|
|
22
|
+
this[INQUIR_ASSET_MARKER] = {
|
|
23
|
+
kind: 'pipeline',
|
|
24
|
+
name: this.name,
|
|
25
|
+
runtime: this.runtime,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
step(name, fn) {
|
|
29
|
+
const stepId = `step_${this.steps.length + 1}`;
|
|
30
|
+
this.steps.push({
|
|
31
|
+
id: stepId,
|
|
32
|
+
name,
|
|
33
|
+
functionName: fn.name,
|
|
34
|
+
});
|
|
35
|
+
this.graph.nodes.push({
|
|
36
|
+
id: stepId,
|
|
37
|
+
type: 'lambda',
|
|
38
|
+
config: {
|
|
39
|
+
functionName: fn.name,
|
|
40
|
+
},
|
|
41
|
+
});
|
|
42
|
+
const previous = this.steps.at(-2);
|
|
43
|
+
if (previous) {
|
|
44
|
+
this.graph.edges.push({
|
|
45
|
+
from: previous.id,
|
|
46
|
+
to: stepId,
|
|
47
|
+
type: 'default',
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
return this;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
export function definePipeline(options) {
|
|
54
|
+
return new PipelineBuilder(options);
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=define-pipeline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"define-pipeline.js","sourceRoot":"","sources":["../src/define-pipeline.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,GAOpB,MAAM,YAAY,CAAC;AAQpB,MAAM,eAAe;IASU;IAR7B,IAAI,GAAG,UAAmB,CAAC;IAC3B,IAAI,CAAS;IACb,OAAO,CAAgB;IACvB,KAAK,GAA6B,EAAE,CAAC;IACrC,KAAK,GAAwB,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IACtD,UAAU,CAAqB;IAC/B,CAAC,mBAAmB,CAAC,CAA6D;IAElF,YAA6B,OAA8B;QAA9B,YAAO,GAAP,OAAO,CAAuB;QACzD,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,MAAM,CAAC;QACzC,IAAI,CAAC,UAAU,GAAG;YAChB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC;QACF,IAAI,CAAC,mBAAmB,CAAC,GAAG;YAC1B,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,IAAY,EAAE,EAAmB;QACpC,MAAM,MAAM,GAAG,QAAQ,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;YACd,EAAE,EAAE,MAAM;YACV,IAAI;YACJ,YAAY,EAAE,EAAE,CAAC,IAAI;SACtB,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;YACpB,EAAE,EAAE,MAAM;YACV,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE;gBACN,YAAY,EAAE,EAAE,CAAC,IAAI;aACtB;SACF,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACnC,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;gBACpB,IAAI,EAAE,QAAQ,CAAC,EAAE;gBACjB,EAAE,EAAE,MAAM;gBACV,IAAI,EAAE,SAAS;aAChB,CAAC,CAAC;QACL,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAED,MAAM,UAAU,cAAc,CAAC,OAA8B;IAC3D,OAAO,IAAI,eAAe,CAAC,OAAO,CAAC,CAAC;AACtC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discovery-harness.d.ts","sourceRoot":"","sources":["../src/discovery-harness.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { pathToFileURL } from 'node:url';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { serializeZodToJsonSchema } from './json-schema.js';
|
|
4
|
+
import { INQUIR_ASSET_MARKER } from './types.js';
|
|
5
|
+
function exportNameToAssetName(exportName) {
|
|
6
|
+
return exportName
|
|
7
|
+
.replace(/([A-Z])/g, (match) => `-${match.toLowerCase()}`)
|
|
8
|
+
.replace(/^-/, '');
|
|
9
|
+
}
|
|
10
|
+
async function main() {
|
|
11
|
+
const assets = [];
|
|
12
|
+
const diagnostics = [];
|
|
13
|
+
const noAssetFiles = [];
|
|
14
|
+
for (const filePath of process.argv.slice(2)) {
|
|
15
|
+
try {
|
|
16
|
+
const moduleExports = await import(pathToFileURL(filePath).href);
|
|
17
|
+
let foundAssets = 0;
|
|
18
|
+
for (const [exportName, exportedValue] of Object.entries(moduleExports)) {
|
|
19
|
+
if (!exportedValue || typeof exportedValue !== 'object') {
|
|
20
|
+
continue;
|
|
21
|
+
}
|
|
22
|
+
const marker = Reflect.get(exportedValue, INQUIR_ASSET_MARKER);
|
|
23
|
+
if (!marker || typeof marker !== 'object') {
|
|
24
|
+
continue;
|
|
25
|
+
}
|
|
26
|
+
const kind = Reflect.get(marker, 'kind');
|
|
27
|
+
const markerName = String(Reflect.get(marker, 'name') ?? '');
|
|
28
|
+
const name = markerName || exportNameToAssetName(exportName);
|
|
29
|
+
const runtime = Reflect.get(marker, 'runtime');
|
|
30
|
+
if ((kind !== 'function' && kind !== 'pipeline') || typeof name !== 'string') {
|
|
31
|
+
diagnostics.push({
|
|
32
|
+
filePath,
|
|
33
|
+
code: 'INVALID_ASSET',
|
|
34
|
+
message: `Export "${exportName}" is marked as an asset but has invalid metadata.`,
|
|
35
|
+
});
|
|
36
|
+
continue;
|
|
37
|
+
}
|
|
38
|
+
assets.push({
|
|
39
|
+
kind,
|
|
40
|
+
name,
|
|
41
|
+
runtime: runtime === 'node' || runtime === 'python' || runtime === 'go' ? runtime : undefined,
|
|
42
|
+
exportName,
|
|
43
|
+
filePath,
|
|
44
|
+
...(kind === 'function'
|
|
45
|
+
? {
|
|
46
|
+
inputSchema: serializeZodToJsonSchema(Reflect.get(exportedValue, 'definition')?.input ?? z.unknown()),
|
|
47
|
+
}
|
|
48
|
+
: {}),
|
|
49
|
+
});
|
|
50
|
+
foundAssets++;
|
|
51
|
+
}
|
|
52
|
+
if (foundAssets === 0) {
|
|
53
|
+
noAssetFiles.push(filePath);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
diagnostics.push({
|
|
58
|
+
filePath,
|
|
59
|
+
code: 'IMPORT_FAILED',
|
|
60
|
+
message: error instanceof Error ? error.message : String(error),
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
process.stdout.write(JSON.stringify({ assets, diagnostics, noAssetFiles }));
|
|
65
|
+
}
|
|
66
|
+
void main();
|
|
67
|
+
//# sourceMappingURL=discovery-harness.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discovery-harness.js","sourceRoot":"","sources":["../src/discovery-harness.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,KAAK,EAAc,aAAa,EAAmC,MAAM,YAAY,CAAC;AAwG7F,wBAAsB,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC,CAgEjF"}
|