@nseng-ai/kernel 0.1.2
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 +130 -0
- package/package.json +37 -0
- package/src/cli/completion.ts +30 -0
- package/src/cli/context.ts +110 -0
- package/src/cli/index.ts +668 -0
- package/src/cli/shell.ts +93 -0
- package/src/extensions/built-in-extension-commands.ts +306 -0
- package/src/extensions/command-registry.ts +342 -0
- package/src/extensions/discovery.ts +744 -0
- package/src/extensions/loader.ts +49 -0
- package/src/extensions/module-reference.ts +54 -0
- package/src/extensions/registry.ts +700 -0
- package/src/extensions/repo-local-catalog.ts +31 -0
- package/src/extensions/zod-issue-path.ts +65 -0
- package/src/project-config/points.ts +920 -0
- package/src/runtime/command-io.ts +149 -0
- package/src/runtime/diagnostics.ts +35 -0
- package/src/runtime/extension-root-discovery.ts +118 -0
- package/src/runtime/module-import.ts +4 -0
- package/src/runtime/module-loader.ts +75 -0
- package/src/runtime/pi-text-generation.ts +162 -0
- package/src/sdk/command-name.ts +2 -0
- package/src/sdk/command.ts +109 -0
- package/src/sdk/execution.ts +67 -0
- package/src/sdk/extension-manifest.ts +38 -0
- package/src/sdk/index.ts +73 -0
- package/src/sdk/progress-phase-state.ts +352 -0
- package/src/sdk/repo-local-ns-extension.ts +41 -0
- package/src/sdk/result.ts +11 -0
- package/src/sdk/schema.ts +3 -0
- package/src/sdk/services.ts +68 -0
- package/src/sdk/text-generation.ts +21 -0
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { formatUnknownError } from "./command-registry.ts";
|
|
2
|
+
import {
|
|
3
|
+
matchNsCommandModuleReference,
|
|
4
|
+
moduleReferenceDisplay,
|
|
5
|
+
type NsCommandModuleReference,
|
|
6
|
+
} from "./module-reference.ts";
|
|
7
|
+
import { importDefaultExport } from "../runtime/module-import.ts";
|
|
8
|
+
import { loadNsUserModuleDefault } from "../runtime/module-loader.ts";
|
|
9
|
+
|
|
10
|
+
export interface ExtensionLoadDiagnostic {
|
|
11
|
+
severity: "error";
|
|
12
|
+
code: string;
|
|
13
|
+
message: string;
|
|
14
|
+
path: string;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export type NsExtensionContributionLoadResult =
|
|
18
|
+
| { ok: true; defaultExport: unknown }
|
|
19
|
+
| { ok: false; diagnostic: ExtensionLoadDiagnostic };
|
|
20
|
+
|
|
21
|
+
export async function loadNsExtensionContribution(
|
|
22
|
+
reference: NsCommandModuleReference,
|
|
23
|
+
): Promise<NsExtensionContributionLoadResult> {
|
|
24
|
+
const displayPath = moduleReferenceDisplay(reference);
|
|
25
|
+
try {
|
|
26
|
+
return { ok: true, defaultExport: await loadDefaultExport(reference) };
|
|
27
|
+
} catch (error) {
|
|
28
|
+
return {
|
|
29
|
+
ok: false,
|
|
30
|
+
diagnostic: diagnostic(
|
|
31
|
+
"ns_extension_contribution_import_failed",
|
|
32
|
+
`Failed to load ns extension contribution ${displayPath}.\n${formatUnknownError(error)}`,
|
|
33
|
+
displayPath,
|
|
34
|
+
),
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
async function loadDefaultExport(reference: NsCommandModuleReference): Promise<unknown> {
|
|
40
|
+
return await matchNsCommandModuleReference(reference, {
|
|
41
|
+
file: async (fileReference) => await loadNsUserModuleDefault(fileReference.path),
|
|
42
|
+
package: async (packageReference) => await importDefaultExport(packageReference.specifier),
|
|
43
|
+
loaded: async (loadedReference) => await loadedReference.load(),
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
function diagnostic(code: string, message: string, path: string): ExtensionLoadDiagnostic {
|
|
48
|
+
return { severity: "error", code, message, path };
|
|
49
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
export type NsCommandModuleLoader = () => unknown | Promise<unknown>;
|
|
2
|
+
|
|
3
|
+
export type NsCommandModuleReference =
|
|
4
|
+
| { type: "file"; path: string }
|
|
5
|
+
| { type: "package"; specifier: string }
|
|
6
|
+
| { type: "loaded"; displayPath: string; load: NsCommandModuleLoader };
|
|
7
|
+
|
|
8
|
+
export interface NsCommandModuleReferenceHandlers<T> {
|
|
9
|
+
file: (reference: Extract<NsCommandModuleReference, { type: "file" }>) => T;
|
|
10
|
+
package: (reference: Extract<NsCommandModuleReference, { type: "package" }>) => T;
|
|
11
|
+
loaded: (reference: Extract<NsCommandModuleReference, { type: "loaded" }>) => T;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export function matchNsCommandModuleReference<T>(
|
|
15
|
+
reference: NsCommandModuleReference,
|
|
16
|
+
handlers: NsCommandModuleReferenceHandlers<T>,
|
|
17
|
+
): T {
|
|
18
|
+
switch (reference.type) {
|
|
19
|
+
case "file":
|
|
20
|
+
return handlers.file(reference);
|
|
21
|
+
case "package":
|
|
22
|
+
return handlers.package(reference);
|
|
23
|
+
case "loaded":
|
|
24
|
+
return handlers.loaded(reference);
|
|
25
|
+
}
|
|
26
|
+
return unsupportedModuleReference(reference);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export function fileModuleReference(path: string): NsCommandModuleReference {
|
|
30
|
+
return { type: "file", path };
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export function packageModuleReference(specifier: string): NsCommandModuleReference {
|
|
34
|
+
return { type: "package", specifier };
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export function loadedModuleReference(
|
|
38
|
+
displayPath: string,
|
|
39
|
+
load: NsCommandModuleLoader,
|
|
40
|
+
): NsCommandModuleReference {
|
|
41
|
+
return { type: "loaded", displayPath, load };
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export function moduleReferenceDisplay(reference: NsCommandModuleReference): string {
|
|
45
|
+
return matchNsCommandModuleReference(reference, {
|
|
46
|
+
file: (fileReference) => fileReference.path,
|
|
47
|
+
package: (packageReference) => packageReference.specifier,
|
|
48
|
+
loaded: (loadedReference) => loadedReference.displayPath,
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
function unsupportedModuleReference(reference: never): never {
|
|
53
|
+
throw new Error(`Unsupported ns command module reference: ${JSON.stringify(reference)}`);
|
|
54
|
+
}
|