veryfront 0.1.129 → 0.1.131
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/esm/cli/auth/login.d.ts.map +1 -1
- package/esm/cli/auth/login.js +11 -0
- package/esm/cli/auth/provider-store.d.ts +20 -0
- package/esm/cli/auth/provider-store.d.ts.map +1 -0
- package/esm/cli/auth/provider-store.js +62 -0
- package/esm/cli/auth/providers/anthropic.d.ts +2 -0
- package/esm/cli/auth/providers/anthropic.d.ts.map +1 -0
- package/esm/cli/auth/providers/anthropic.js +37 -0
- package/esm/cli/auth/providers/openai.d.ts +2 -0
- package/esm/cli/auth/providers/openai.d.ts.map +1 -0
- package/esm/cli/auth/providers/openai.js +35 -0
- package/esm/cli/auth/utils.d.ts +5 -0
- package/esm/cli/auth/utils.d.ts.map +1 -1
- package/esm/cli/auth/utils.js +9 -0
- package/esm/cli/commands/config/command-help.d.ts +3 -0
- package/esm/cli/commands/config/command-help.d.ts.map +1 -0
- package/esm/cli/commands/config/command-help.js +13 -0
- package/esm/cli/commands/config/handler.d.ts +5 -0
- package/esm/cli/commands/config/handler.d.ts.map +1 -0
- package/esm/cli/commands/config/handler.js +70 -0
- package/esm/cli/commands/open/command-help.d.ts +3 -0
- package/esm/cli/commands/open/command-help.d.ts.map +1 -0
- package/esm/cli/commands/open/command-help.js +17 -0
- package/esm/cli/commands/open/command.d.ts +14 -0
- package/esm/cli/commands/open/command.d.ts.map +1 -0
- package/esm/cli/commands/open/command.js +22 -0
- package/esm/cli/commands/open/handler.d.ts +3 -0
- package/esm/cli/commands/open/handler.d.ts.map +1 -0
- package/esm/cli/commands/open/handler.js +29 -0
- package/esm/cli/help/command-definitions.d.ts.map +1 -1
- package/esm/cli/help/command-definitions.js +4 -0
- package/esm/cli/router.d.ts.map +1 -1
- package/esm/cli/router.js +26 -1
- package/esm/deno.js +1 -1
- package/esm/src/channels/control-plane.js +6 -6
- package/esm/src/discovery/handlers/agent-handler.d.ts.map +1 -1
- package/esm/src/discovery/handlers/agent-handler.js +10 -1
- package/esm/src/platform/compat/framework-source-resolver.d.ts +8 -0
- package/esm/src/platform/compat/framework-source-resolver.d.ts.map +1 -1
- package/esm/src/platform/compat/framework-source-resolver.js +77 -1
- package/esm/src/rendering/rsc/client-boot.ts +18 -1
- package/esm/src/server/handlers/preview/markdown-html-generator.d.ts +2 -0
- package/esm/src/server/handlers/preview/markdown-html-generator.d.ts.map +1 -1
- package/esm/src/server/handlers/preview/markdown-html-generator.js +10 -7
- package/esm/src/server/handlers/preview/markdown-preview.handler.d.ts.map +1 -1
- package/esm/src/server/handlers/preview/markdown-preview.handler.js +6 -3
- package/esm/src/server/handlers/request/api/project-discovery.d.ts.map +1 -1
- package/esm/src/server/handlers/request/api/project-discovery.js +16 -5
- package/esm/src/server/handlers/request/api/security-headers.d.ts +1 -0
- package/esm/src/server/handlers/request/api/security-headers.d.ts.map +1 -1
- package/esm/src/server/handlers/request/api/security-headers.js +4 -1
- package/esm/src/server/handlers/request/openapi-docs.handler.d.ts.map +1 -1
- package/esm/src/server/handlers/request/openapi-docs.handler.js +10 -6
- package/esm/src/server/handlers/request/rsc/index.d.ts.map +1 -1
- package/esm/src/server/handlers/request/rsc/index.js +5 -2
- package/esm/src/server/handlers/request/ssr/ssr-response-builder.d.ts.map +1 -1
- package/esm/src/server/handlers/request/ssr/ssr-response-builder.js +12 -2
- package/esm/src/server/handlers/response/not-found.d.ts.map +1 -1
- package/esm/src/server/handlers/response/not-found.js +14 -15
- package/esm/src/server/services/rsc/endpoints/endpoint-router.d.ts +1 -1
- package/esm/src/server/services/rsc/endpoints/endpoint-router.d.ts.map +1 -1
- package/esm/src/server/services/rsc/endpoints/endpoint-router.js +3 -3
- package/esm/src/server/services/rsc/endpoints/rsc-bundles.generated.d.ts.map +1 -1
- package/esm/src/server/services/rsc/endpoints/rsc-bundles.generated.js +1 -1
- package/esm/src/server/services/rsc/endpoints/types.d.ts +1 -0
- package/esm/src/server/services/rsc/endpoints/types.d.ts.map +1 -1
- package/esm/src/server/services/rsc/orchestrators/handler.d.ts +1 -1
- package/esm/src/server/services/rsc/orchestrators/handler.d.ts.map +1 -1
- package/esm/src/server/services/rsc/orchestrators/handler.js +2 -2
- package/esm/src/server/services/rsc/orchestrators/page-handler.d.ts +1 -1
- package/esm/src/server/services/rsc/orchestrators/page-handler.d.ts.map +1 -1
- package/esm/src/server/services/rsc/orchestrators/page-handler.js +7 -5
- package/esm/src/transforms/esm/import-parser.d.ts.map +1 -1
- package/esm/src/transforms/esm/import-parser.js +6 -0
- package/esm/src/transforms/pipeline/stages/ssr-vf-modules/path-resolver.d.ts +1 -1
- package/esm/src/transforms/pipeline/stages/ssr-vf-modules/path-resolver.d.ts.map +1 -1
- package/esm/src/transforms/pipeline/stages/ssr-vf-modules/path-resolver.js +10 -66
- package/esm/src/utils/version-constant.d.ts +1 -1
- package/esm/src/utils/version-constant.js +1 -1
- package/package.json +1 -1
- package/src/cli/auth/login.ts +12 -0
- package/src/cli/auth/provider-store.ts +82 -0
- package/src/cli/auth/providers/anthropic.ts +46 -0
- package/src/cli/auth/providers/openai.ts +45 -0
- package/src/cli/auth/utils.ts +10 -0
- package/src/cli/commands/config/command-help.ts +15 -0
- package/src/cli/commands/config/handler.ts +90 -0
- package/src/cli/commands/open/command-help.ts +19 -0
- package/src/cli/commands/open/command.ts +28 -0
- package/src/cli/commands/open/handler.ts +38 -0
- package/src/cli/help/command-definitions.ts +4 -0
- package/src/cli/router.ts +28 -1
- package/src/deno.js +1 -1
- package/src/src/channels/control-plane.ts +6 -6
- package/src/src/discovery/handlers/agent-handler.ts +10 -1
- package/src/src/platform/compat/framework-source-resolver.ts +101 -1
- package/src/src/server/handlers/preview/markdown-html-generator.ts +12 -6
- package/src/src/server/handlers/preview/markdown-preview.handler.ts +6 -3
- package/src/src/server/handlers/request/api/project-discovery.ts +18 -5
- package/src/src/server/handlers/request/api/security-headers.ts +10 -1
- package/src/src/server/handlers/request/openapi-docs.handler.ts +10 -6
- package/src/src/server/handlers/request/rsc/index.ts +5 -2
- package/src/src/server/handlers/request/ssr/ssr-response-builder.ts +16 -2
- package/src/src/server/handlers/response/not-found.ts +14 -15
- package/src/src/server/services/rsc/endpoints/endpoint-router.ts +3 -3
- package/src/src/server/services/rsc/endpoints/rsc-bundles.generated.ts +1 -1
- package/src/src/server/services/rsc/endpoints/types.ts +1 -0
- package/src/src/server/services/rsc/orchestrators/handler.ts +2 -2
- package/src/src/server/services/rsc/orchestrators/page-handler.ts +8 -5
- package/src/src/transforms/esm/import-parser.ts +12 -0
- package/src/src/transforms/pipeline/stages/ssr-vf-modules/path-resolver.ts +10 -69
- package/src/src/utils/version-constant.ts +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../../src/cli/auth/login.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,iBAAiB,EAAwB,MAAM,2BAA2B,CAAC;AACzF,OAAO,EAAE,WAAW,EAAoB,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAQjG,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,WAAW,GAAG,OAAO,CAAC;AAErE,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AASD,wBAAsB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAgB3E;AA8ID,wBAAsB,KAAK,CAAC,MAAM,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CA8BzE;AAED,wBAAsB,mBAAmB,CACvC,GAAG,GAAE,iBAA0C,GAC9C,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAqB1B;AAED,wBAAsB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAI5C;AAED,wBAAsB,MAAM,CAC1B,GAAG,GAAE,iBAA0C,GAC9C,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../../src/cli/auth/login.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,iBAAiB,EAAwB,MAAM,2BAA2B,CAAC;AACzF,OAAO,EAAE,WAAW,EAAoB,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAQjG,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,WAAW,GAAG,OAAO,CAAC;AAErE,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AASD,wBAAsB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAgB3E;AA8ID,wBAAsB,KAAK,CAAC,MAAM,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CA8BzE;AAED,wBAAsB,mBAAmB,CACvC,GAAG,GAAE,iBAA0C,GAC9C,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAqB1B;AAED,wBAAsB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAI5C;AAED,wBAAsB,MAAM,CAC1B,GAAG,GAAE,iBAA0C,GAC9C,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAmD1B;AAED,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC"}
|
package/esm/cli/auth/login.js
CHANGED
|
@@ -238,6 +238,17 @@ export async function whoami(env = getEnvironmentConfig()) {
|
|
|
238
238
|
console.log();
|
|
239
239
|
console.log(" " + warning("✗") + " Not logged in");
|
|
240
240
|
console.log(" " + dim("Run 'veryfront login' to authenticate"));
|
|
241
|
+
// Show provider tokens
|
|
242
|
+
try {
|
|
243
|
+
const { listProviderTokens } = await import("./provider-store.js");
|
|
244
|
+
const providers = await listProviderTokens();
|
|
245
|
+
for (const p of providers) {
|
|
246
|
+
console.log(" " + success("✓") + ` ${p} API key configured`);
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
catch {
|
|
250
|
+
// Provider store not available
|
|
251
|
+
}
|
|
241
252
|
return null;
|
|
242
253
|
}
|
|
243
254
|
export { deleteToken, hasToken, readToken, saveToken };
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Provider-namespaced token storage for AI provider API keys.
|
|
3
|
+
*
|
|
4
|
+
* Stores API keys as plaintext with 0600 permissions in
|
|
5
|
+
* ~/.config/veryfront/tokens/<provider>. Same security model
|
|
6
|
+
* as the existing platform token in ~/.config/veryfront/token.
|
|
7
|
+
*
|
|
8
|
+
* @module cli/auth/provider-store
|
|
9
|
+
*/
|
|
10
|
+
export type ProviderName = "anthropic" | "openai";
|
|
11
|
+
export interface ProviderCredential {
|
|
12
|
+
apiKey: string;
|
|
13
|
+
validatedAt: string;
|
|
14
|
+
provider: ProviderName;
|
|
15
|
+
}
|
|
16
|
+
export declare function saveProviderToken(provider: ProviderName, credential: ProviderCredential): Promise<void>;
|
|
17
|
+
export declare function readProviderToken(provider: ProviderName): Promise<ProviderCredential | null>;
|
|
18
|
+
export declare function deleteProviderToken(provider: ProviderName): Promise<void>;
|
|
19
|
+
export declare function listProviderTokens(): Promise<ProviderName[]>;
|
|
20
|
+
//# sourceMappingURL=provider-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-store.d.ts","sourceRoot":"","sources":["../../../src/cli/auth/provider-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,MAAM,MAAM,YAAY,GAAG,WAAW,GAAG,QAAQ,CAAC;AAElD,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,YAAY,CAAC;CACxB;AAUD,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,YAAY,EACtB,UAAU,EAAE,kBAAkB,GAC7B,OAAO,CAAC,IAAI,CAAC,CAOf;AAED,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,YAAY,GACrB,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAQpC;AAED,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,YAAY,GACrB,OAAO,CAAC,IAAI,CAAC,CAOf;AAED,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAgBlE"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Provider-namespaced token storage for AI provider API keys.
|
|
3
|
+
*
|
|
4
|
+
* Stores API keys as plaintext with 0600 permissions in
|
|
5
|
+
* ~/.config/veryfront/tokens/<provider>. Same security model
|
|
6
|
+
* as the existing platform token in ~/.config/veryfront/token.
|
|
7
|
+
*
|
|
8
|
+
* @module cli/auth/provider-store
|
|
9
|
+
*/
|
|
10
|
+
import { getEnvironmentConfig } from "../../src/config/index.js";
|
|
11
|
+
import { join } from "../../src/platform/compat/path/index.js";
|
|
12
|
+
import { createFileSystem } from "../../src/platform/index.js";
|
|
13
|
+
function getTokenDir() {
|
|
14
|
+
const env = getEnvironmentConfig();
|
|
15
|
+
const configDir = env.xdgConfigHome
|
|
16
|
+
? join(env.xdgConfigHome, "veryfront")
|
|
17
|
+
: join(env.homeDir, ".config", "veryfront");
|
|
18
|
+
return join(configDir, "tokens");
|
|
19
|
+
}
|
|
20
|
+
export async function saveProviderToken(provider, credential) {
|
|
21
|
+
const fs = createFileSystem();
|
|
22
|
+
const dir = getTokenDir();
|
|
23
|
+
await fs.mkdir(dir, { recursive: true });
|
|
24
|
+
const path = join(dir, provider);
|
|
25
|
+
await fs.writeTextFile(path, JSON.stringify(credential));
|
|
26
|
+
await fs.chmod(path, 0o600);
|
|
27
|
+
}
|
|
28
|
+
export async function readProviderToken(provider) {
|
|
29
|
+
const fs = createFileSystem();
|
|
30
|
+
try {
|
|
31
|
+
const raw = await fs.readTextFile(join(getTokenDir(), provider));
|
|
32
|
+
return JSON.parse(raw);
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
export async function deleteProviderToken(provider) {
|
|
39
|
+
const fs = createFileSystem();
|
|
40
|
+
try {
|
|
41
|
+
await fs.remove(join(getTokenDir(), provider));
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
// Token doesn't exist — fine
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
export async function listProviderTokens() {
|
|
48
|
+
const fs = createFileSystem();
|
|
49
|
+
const providers = [];
|
|
50
|
+
try {
|
|
51
|
+
for await (const entry of fs.readDir(getTokenDir())) {
|
|
52
|
+
if (entry.isFile &&
|
|
53
|
+
(entry.name === "anthropic" || entry.name === "openai")) {
|
|
54
|
+
providers.push(entry.name);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
// Directory doesn't exist
|
|
60
|
+
}
|
|
61
|
+
return providers;
|
|
62
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../../../src/cli/auth/providers/anthropic.ts"],"names":[],"mappings":"AAKA,wBAAsB,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC,CAwCvD"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import * as dntShim from "../../../_dnt.shims.js";
|
|
2
|
+
import { logError, logSuccess, promptPassword } from "../../utils/index.js";
|
|
3
|
+
import { saveProviderToken } from "../provider-store.js";
|
|
4
|
+
import { dim } from "../../ui/colors.js";
|
|
5
|
+
export async function loginAnthropic() {
|
|
6
|
+
console.log(`\n Enter your Anthropic API key.`);
|
|
7
|
+
console.log(` ${dim("Get one at: https://console.anthropic.com/settings/keys")}\n`);
|
|
8
|
+
const apiKey = promptPassword(" API key: ");
|
|
9
|
+
if (!apiKey) {
|
|
10
|
+
logError("No API key provided.");
|
|
11
|
+
return false;
|
|
12
|
+
}
|
|
13
|
+
try {
|
|
14
|
+
const resp = await dntShim.fetch("https://api.anthropic.com/v1/models", {
|
|
15
|
+
headers: {
|
|
16
|
+
"x-api-key": apiKey,
|
|
17
|
+
"anthropic-version": "2023-06-01",
|
|
18
|
+
},
|
|
19
|
+
});
|
|
20
|
+
if (!resp.ok) {
|
|
21
|
+
logError(`Invalid API key (HTTP ${resp.status}). Check your key at console.anthropic.com`);
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
catch (e) {
|
|
26
|
+
logError(`Failed to validate key: ${e instanceof Error ? e.message : String(e)}`);
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
const credential = {
|
|
30
|
+
apiKey,
|
|
31
|
+
validatedAt: new Date().toISOString(),
|
|
32
|
+
provider: "anthropic",
|
|
33
|
+
};
|
|
34
|
+
await saveProviderToken("anthropic", credential);
|
|
35
|
+
logSuccess("Anthropic API key configured");
|
|
36
|
+
return true;
|
|
37
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../../../src/cli/auth/providers/openai.ts"],"names":[],"mappings":"AAKA,wBAAsB,WAAW,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAuCpE"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import * as dntShim from "../../../_dnt.shims.js";
|
|
2
|
+
import { logError, logSuccess, promptPassword } from "../../utils/index.js";
|
|
3
|
+
import { saveProviderToken } from "../provider-store.js";
|
|
4
|
+
import { dim } from "../../ui/colors.js";
|
|
5
|
+
export async function loginOpenAI(baseUrl) {
|
|
6
|
+
console.log(`\n Enter your OpenAI API key.`);
|
|
7
|
+
console.log(` ${dim("Get one at: https://platform.openai.com/api-keys")}\n`);
|
|
8
|
+
const apiKey = promptPassword(" API key: ");
|
|
9
|
+
if (!apiKey) {
|
|
10
|
+
logError("No API key provided.");
|
|
11
|
+
return false;
|
|
12
|
+
}
|
|
13
|
+
const endpoint = baseUrl ?? "https://api.openai.com";
|
|
14
|
+
try {
|
|
15
|
+
const resp = await dntShim.fetch(`${endpoint}/v1/models`, {
|
|
16
|
+
headers: { Authorization: `Bearer ${apiKey}` },
|
|
17
|
+
});
|
|
18
|
+
if (!resp.ok) {
|
|
19
|
+
logError(`Invalid API key (HTTP ${resp.status}). Check your key at platform.openai.com`);
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
catch (e) {
|
|
24
|
+
logError(`Failed to validate key: ${e instanceof Error ? e.message : String(e)}`);
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
const credential = {
|
|
28
|
+
apiKey,
|
|
29
|
+
validatedAt: new Date().toISOString(),
|
|
30
|
+
provider: "openai",
|
|
31
|
+
};
|
|
32
|
+
await saveProviderToken("openai", credential);
|
|
33
|
+
logSuccess("OpenAI API key configured");
|
|
34
|
+
return true;
|
|
35
|
+
}
|
package/esm/cli/auth/utils.d.ts
CHANGED
|
@@ -5,8 +5,13 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import type { AuthMethod } from "./login.js";
|
|
7
7
|
import type { ParsedArgs } from "../shared/types.js";
|
|
8
|
+
import type { ProviderName } from "./provider-store.js";
|
|
8
9
|
/**
|
|
9
10
|
* Parse login method from CLI arguments
|
|
10
11
|
*/
|
|
11
12
|
export declare function parseLoginMethod(args: ParsedArgs): AuthMethod | undefined;
|
|
13
|
+
/**
|
|
14
|
+
* Parse --provider flag from CLI arguments
|
|
15
|
+
*/
|
|
16
|
+
export declare function parseProvider(args: ParsedArgs): ProviderName | undefined;
|
|
12
17
|
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/cli/auth/utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/cli/auth/utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,UAAU,GACf,UAAU,GAAG,SAAS,CAMxB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,UAAU,GAAG,YAAY,GAAG,SAAS,CAIxE"}
|
package/esm/cli/auth/utils.js
CHANGED
|
@@ -17,3 +17,12 @@ export function parseLoginMethod(args) {
|
|
|
17
17
|
return "token";
|
|
18
18
|
return undefined;
|
|
19
19
|
}
|
|
20
|
+
/**
|
|
21
|
+
* Parse --provider flag from CLI arguments
|
|
22
|
+
*/
|
|
23
|
+
export function parseProvider(args) {
|
|
24
|
+
const provider = args.provider;
|
|
25
|
+
if (provider === "anthropic" || provider === "openai")
|
|
26
|
+
return provider;
|
|
27
|
+
return undefined;
|
|
28
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-help.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/config/command-help.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,eAAO,MAAM,UAAU,EAAE,WAYxB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export const configHelp = {
|
|
2
|
+
name: "config",
|
|
3
|
+
category: "project",
|
|
4
|
+
description: "Show effective project configuration",
|
|
5
|
+
usage: "veryfront config [options]",
|
|
6
|
+
options: [
|
|
7
|
+
{ flag: "--json", description: "Output as JSON" },
|
|
8
|
+
],
|
|
9
|
+
examples: [
|
|
10
|
+
"veryfront config",
|
|
11
|
+
"veryfront config --json",
|
|
12
|
+
],
|
|
13
|
+
};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { ParsedArgs } from "../../shared/types.js";
|
|
2
|
+
export declare function detectConfigSource(projectDir: string): Promise<string | null>;
|
|
3
|
+
export declare function getEnvOverrides(): string[];
|
|
4
|
+
export declare function handleConfigCommand(_args: ParsedArgs): Promise<void>;
|
|
5
|
+
//# sourceMappingURL=handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/config/handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAexD,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAexB;AAED,wBAAgB,eAAe,IAAI,MAAM,EAAE,CAM1C;AAED,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CA+C1E"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { cliLogger } from "../../utils/index.js";
|
|
2
|
+
import { getEnv } from "../../../src/platform/index.js";
|
|
3
|
+
import { createSuccessEnvelope, isJsonMode, outputJson } from "../../shared/json-output.js";
|
|
4
|
+
import { bold, dim } from "../../ui/colors.js";
|
|
5
|
+
const ENV_OVERRIDES = {
|
|
6
|
+
projectSlug: "VERYFRONT_PROJECT_SLUG",
|
|
7
|
+
apiBaseUrl: "VERYFRONT_API_BASE_URL",
|
|
8
|
+
apiToken: "VERYFRONT_API_TOKEN",
|
|
9
|
+
nodeEnv: "NODE_ENV",
|
|
10
|
+
veryfrontEnv: "VERYFRONT_ENV",
|
|
11
|
+
debug: "VERYFRONT_DEBUG",
|
|
12
|
+
};
|
|
13
|
+
export async function detectConfigSource(projectDir) {
|
|
14
|
+
const { createFileSystem } = await import("../../../src/platform/index.js");
|
|
15
|
+
const { join } = await import("../../../src/platform/compat/path/index.js");
|
|
16
|
+
const fs = createFileSystem();
|
|
17
|
+
for (const name of [
|
|
18
|
+
"veryfront.config.ts",
|
|
19
|
+
"veryfront.config.js",
|
|
20
|
+
"veryfront.json",
|
|
21
|
+
]) {
|
|
22
|
+
if (await fs.exists(join(projectDir, name)))
|
|
23
|
+
return name;
|
|
24
|
+
}
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
export function getEnvOverrides() {
|
|
28
|
+
const overrides = [];
|
|
29
|
+
for (const [field, envVar] of Object.entries(ENV_OVERRIDES)) {
|
|
30
|
+
if (getEnv(envVar))
|
|
31
|
+
overrides.push(`${field} (${envVar})`);
|
|
32
|
+
}
|
|
33
|
+
return overrides;
|
|
34
|
+
}
|
|
35
|
+
export async function handleConfigCommand(_args) {
|
|
36
|
+
const { getEnvironmentConfig } = await import("../../../src/config/index.js");
|
|
37
|
+
const { cwd } = await import("../../../src/platform/index.js");
|
|
38
|
+
const config = getEnvironmentConfig();
|
|
39
|
+
const projectDir = cwd();
|
|
40
|
+
const configSource = await detectConfigSource(projectDir);
|
|
41
|
+
const envOverrides = getEnvOverrides();
|
|
42
|
+
const configData = {
|
|
43
|
+
projectSlug: config.projectSlug ?? null,
|
|
44
|
+
nodeEnv: config.nodeEnv,
|
|
45
|
+
veryfrontEnv: config.veryfrontEnv || null,
|
|
46
|
+
apiBaseUrl: config.apiBaseUrl,
|
|
47
|
+
debug: config.debug,
|
|
48
|
+
ci: config.ci,
|
|
49
|
+
hasApiToken: !!config.apiToken,
|
|
50
|
+
configSource,
|
|
51
|
+
envOverrides,
|
|
52
|
+
};
|
|
53
|
+
if (isJsonMode()) {
|
|
54
|
+
await outputJson(createSuccessEnvelope("config", configData));
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
cliLogger.info(`\n ${bold("Project Configuration")}\n`);
|
|
58
|
+
cliLogger.info(` ${dim("Project slug:")} ${configData.projectSlug ?? "(not set)"}`);
|
|
59
|
+
cliLogger.info(` ${dim("Environment:")} ${configData.nodeEnv}`);
|
|
60
|
+
cliLogger.info(` ${dim("VF Environment:")} ${configData.veryfrontEnv ?? "(not set)"}`);
|
|
61
|
+
cliLogger.info(` ${dim("API endpoint:")} ${configData.apiBaseUrl}`);
|
|
62
|
+
cliLogger.info(` ${dim("Debug:")} ${configData.debug}`);
|
|
63
|
+
cliLogger.info(` ${dim("CI:")} ${configData.ci}`);
|
|
64
|
+
cliLogger.info(` ${dim("Authenticated:")} ${configData.hasApiToken ? "yes" : "no"}`);
|
|
65
|
+
cliLogger.info(` ${dim("Config file:")} ${configData.configSource ?? "(none)"}`);
|
|
66
|
+
if (envOverrides.length > 0) {
|
|
67
|
+
cliLogger.info(` ${dim("Env overrides:")} ${envOverrides.join(", ")}`);
|
|
68
|
+
}
|
|
69
|
+
cliLogger.info("");
|
|
70
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-help.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/open/command-help.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,eAAO,MAAM,QAAQ,EAAE,WAgBtB,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export const openHelp = {
|
|
2
|
+
name: "open",
|
|
3
|
+
category: "project",
|
|
4
|
+
description: "Open project URLs in the browser",
|
|
5
|
+
usage: "veryfront open [options]",
|
|
6
|
+
options: [
|
|
7
|
+
{ flag: "--env <name>", description: "Open a specific environment URL" },
|
|
8
|
+
{ flag: "--studio", description: "Open Veryfront Studio" },
|
|
9
|
+
{ flag: "--json", description: "Output URL as JSON instead of opening" },
|
|
10
|
+
],
|
|
11
|
+
examples: [
|
|
12
|
+
"veryfront open",
|
|
13
|
+
"veryfront open --env staging",
|
|
14
|
+
"veryfront open --studio",
|
|
15
|
+
"veryfront open --json",
|
|
16
|
+
],
|
|
17
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const OpenArgsSchema: z.ZodObject<{
|
|
3
|
+
env: z.ZodOptional<z.ZodString>;
|
|
4
|
+
studio: z.ZodDefault<z.ZodBoolean>;
|
|
5
|
+
projectSlug: z.ZodOptional<z.ZodString>;
|
|
6
|
+
}, z.core.$strip>;
|
|
7
|
+
export type OpenOptions = z.infer<typeof OpenArgsSchema>;
|
|
8
|
+
export declare const parseOpenArgs: (args: import("../../shared/types.js").ParsedArgs) => import("../../shared/args.js").SafeParseResult<{
|
|
9
|
+
studio: boolean;
|
|
10
|
+
env?: string | undefined;
|
|
11
|
+
projectSlug?: string | undefined;
|
|
12
|
+
}>;
|
|
13
|
+
export declare function buildUrl(projectSlug: string, options: OpenOptions): string;
|
|
14
|
+
//# sourceMappingURL=command.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/open/command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,cAAc;;;;iBAIzB,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAEzD,eAAO,MAAM,aAAa;;;;EAIxB,CAAC;AAIH,wBAAgB,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,MAAM,CAQ1E"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { createArgParser } from "../../shared/args.js";
|
|
3
|
+
export const OpenArgsSchema = z.object({
|
|
4
|
+
env: z.string().optional(),
|
|
5
|
+
studio: z.boolean().default(false),
|
|
6
|
+
projectSlug: z.string().optional(),
|
|
7
|
+
});
|
|
8
|
+
export const parseOpenArgs = createArgParser(OpenArgsSchema, {
|
|
9
|
+
env: { keys: ["env"], type: "string" },
|
|
10
|
+
studio: { keys: ["studio"], type: "boolean" },
|
|
11
|
+
projectSlug: { keys: ["project-slug", "project", "p"], type: "string" },
|
|
12
|
+
});
|
|
13
|
+
const DASHBOARD_BASE = "https://veryfront.com";
|
|
14
|
+
export function buildUrl(projectSlug, options) {
|
|
15
|
+
if (options.studio) {
|
|
16
|
+
return `${DASHBOARD_BASE}/studio/${projectSlug}`;
|
|
17
|
+
}
|
|
18
|
+
if (options.env) {
|
|
19
|
+
return `${DASHBOARD_BASE}/projects/${projectSlug}/environments/${options.env}`;
|
|
20
|
+
}
|
|
21
|
+
return `${DASHBOARD_BASE}/projects/${projectSlug}`;
|
|
22
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/open/handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAMxD,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CA+BvE"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { parseArgsOrThrow } from "../../shared/args.js";
|
|
2
|
+
import { cliLogger, exitProcess } from "../../utils/index.js";
|
|
3
|
+
import { createSuccessEnvelope, isJsonMode, outputJson } from "../../shared/json-output.js";
|
|
4
|
+
import { buildUrl, parseOpenArgs } from "./command.js";
|
|
5
|
+
export async function handleOpenCommand(args) {
|
|
6
|
+
const opts = parseArgsOrThrow(parseOpenArgs, "open", args);
|
|
7
|
+
let projectSlug = opts.projectSlug;
|
|
8
|
+
if (!projectSlug) {
|
|
9
|
+
const { cwd } = await import("../../../src/platform/index.js");
|
|
10
|
+
const { getEnvironmentConfig } = await import("../../../src/config/index.js");
|
|
11
|
+
const { readConfigFile } = await import("../../shared/config.js");
|
|
12
|
+
projectSlug = getEnvironmentConfig().projectSlug ??
|
|
13
|
+
(await readConfigFile(cwd()))?.projectSlug ??
|
|
14
|
+
undefined;
|
|
15
|
+
}
|
|
16
|
+
if (!projectSlug) {
|
|
17
|
+
cliLogger.error("No project found. Run from a project directory or use --project-slug");
|
|
18
|
+
exitProcess(1);
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
const url = buildUrl(projectSlug, opts);
|
|
22
|
+
if (isJsonMode()) {
|
|
23
|
+
await outputJson(createSuccessEnvelope("open", { url }));
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
const { openBrowser } = await import("../../auth/browser.js");
|
|
27
|
+
await openBrowser(url);
|
|
28
|
+
console.log(` Opening ${url}`);
|
|
29
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-definitions.d.ts","sourceRoot":"","sources":["../../../src/cli/help/command-definitions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"command-definitions.d.ts","sourceRoot":"","sources":["../../../src/cli/help/command-definitions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAyClD;;;GAGG;AACH,eAAO,MAAM,QAAQ,EAAE,eAuCtB,CAAC"}
|
|
@@ -39,6 +39,8 @@ import { schemaHelp } from "../commands/schema/command-help.js";
|
|
|
39
39
|
import { testHelp } from "../commands/test/command-help.js";
|
|
40
40
|
import { lintHelp } from "../commands/lint/command-help.js";
|
|
41
41
|
import { skillsHelp } from "../commands/skills/command-help.js";
|
|
42
|
+
import { configHelp } from "../commands/config/command-help.js";
|
|
43
|
+
import { openHelp } from "../commands/open/command-help.js";
|
|
42
44
|
import { completionsHelp } from "../commands/completions/command-help.js";
|
|
43
45
|
/**
|
|
44
46
|
* Central registry of all command help definitions.
|
|
@@ -80,5 +82,7 @@ export const COMMANDS = {
|
|
|
80
82
|
test: testHelp,
|
|
81
83
|
lint: lintHelp,
|
|
82
84
|
skills: skillsHelp,
|
|
85
|
+
config: configHelp,
|
|
86
|
+
open: openHelp,
|
|
83
87
|
completions: completionsHelp,
|
|
84
88
|
};
|
package/esm/cli/router.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/cli/router.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/cli/router.ts"],"names":[],"mappings":"AA0DA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AA0FpD;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CA0FlE"}
|
package/esm/cli/router.js
CHANGED
|
@@ -38,6 +38,8 @@ import { handleSchemaCommand } from "./commands/schema/handler.js";
|
|
|
38
38
|
import { handleTestCommand } from "./commands/test/handler.js";
|
|
39
39
|
import { handleLintCommand } from "./commands/lint/handler.js";
|
|
40
40
|
import { handleSkillsCommand } from "./commands/skills/handler.js";
|
|
41
|
+
import { handleConfigCommand } from "./commands/config/handler.js";
|
|
42
|
+
import { handleOpenCommand } from "./commands/open/handler.js";
|
|
41
43
|
import { handleCompletionsCommand } from "./commands/completions/handler.js";
|
|
42
44
|
import { login, logout, whoami } from "./auth/index.js";
|
|
43
45
|
import { parseLoginMethod } from "./auth/utils.js";
|
|
@@ -74,9 +76,30 @@ const commands = {
|
|
|
74
76
|
"deploy": handleDeployCommand,
|
|
75
77
|
"up": handleUpCommand,
|
|
76
78
|
"login": async (args) => {
|
|
79
|
+
const { parseProvider } = await import("./auth/utils.js");
|
|
80
|
+
const provider = parseProvider(args);
|
|
81
|
+
if (provider === "anthropic") {
|
|
82
|
+
const { loginAnthropic } = await import("./auth/providers/anthropic.js");
|
|
83
|
+
await loginAnthropic();
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
if (provider === "openai") {
|
|
87
|
+
const { loginOpenAI } = await import("./auth/providers/openai.js");
|
|
88
|
+
await loginOpenAI(args["base-url"]);
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
77
91
|
await login(parseLoginMethod(args));
|
|
78
92
|
},
|
|
79
|
-
"logout": async () => {
|
|
93
|
+
"logout": async (args) => {
|
|
94
|
+
const { parseProvider } = await import("./auth/utils.js");
|
|
95
|
+
const provider = parseProvider(args);
|
|
96
|
+
if (provider) {
|
|
97
|
+
const { deleteProviderToken } = await import("./auth/provider-store.js");
|
|
98
|
+
await deleteProviderToken(provider);
|
|
99
|
+
const { logSuccess } = await import("./utils/index.js");
|
|
100
|
+
logSuccess(`${provider} API key removed`);
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
80
103
|
await logout();
|
|
81
104
|
},
|
|
82
105
|
"whoami": async () => {
|
|
@@ -95,6 +118,8 @@ const commands = {
|
|
|
95
118
|
"test": handleTestCommand,
|
|
96
119
|
"lint": handleLintCommand,
|
|
97
120
|
"skills": handleSkillsCommand,
|
|
121
|
+
"config": handleConfigCommand,
|
|
122
|
+
"open": handleOpenCommand,
|
|
98
123
|
"completions": handleCompletionsCommand,
|
|
99
124
|
};
|
|
100
125
|
/**
|
package/esm/deno.js
CHANGED
|
@@ -148,13 +148,13 @@ function resolveAgentSkills(agent) {
|
|
|
148
148
|
}))
|
|
149
149
|
.sort((left, right) => left.name.localeCompare(right.name));
|
|
150
150
|
}
|
|
151
|
-
function getRuntimeAgentMetadata(agent) {
|
|
151
|
+
function getRuntimeAgentMetadata(id, agent) {
|
|
152
152
|
const rawConfig = agent.config;
|
|
153
153
|
return RuntimeAgentSchema.parse({
|
|
154
|
-
id
|
|
154
|
+
id,
|
|
155
155
|
name: typeof rawConfig.name === "string" && rawConfig.name.trim().length > 0
|
|
156
156
|
? rawConfig.name
|
|
157
|
-
:
|
|
157
|
+
: id,
|
|
158
158
|
description: typeof rawConfig.description === "string" ? rawConfig.description : null,
|
|
159
159
|
model: agent.config.model ?? null,
|
|
160
160
|
version: typeof rawConfig.version === "string" ? rawConfig.version : null,
|
|
@@ -164,9 +164,9 @@ function getRuntimeAgentMetadata(agent) {
|
|
|
164
164
|
export async function listRuntimeAgents(ctx, deps) {
|
|
165
165
|
await deps.ensureProjectDiscovery(ctx);
|
|
166
166
|
const agents = deps.getAllAgentIds()
|
|
167
|
-
.map((id) => deps.getAgent(id))
|
|
168
|
-
.filter((
|
|
169
|
-
.map(getRuntimeAgentMetadata)
|
|
167
|
+
.map((id) => ({ id, agent: deps.getAgent(id) }))
|
|
168
|
+
.filter((entry) => Boolean(entry.agent))
|
|
169
|
+
.map(({ id, agent }) => getRuntimeAgentMetadata(id, agent))
|
|
170
170
|
.sort((left, right) => left.name.localeCompare(right.name));
|
|
171
171
|
return RuntimeAgentListResponseSchema.parse({ agents });
|
|
172
172
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-handler.d.ts","sourceRoot":"","sources":["../../../../src/src/discovery/handlers/agent-handler.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"agent-handler.d.ts","sourceRoot":"","sources":["../../../../src/src/discovery/handlers/agent-handler.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAGlD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAGpD,eAAO,MAAM,YAAY,EAAE,gBAAgB,CAAC,KAAK,CAmBhD,CAAC"}
|
|
@@ -2,12 +2,21 @@
|
|
|
2
2
|
* Agent Discovery Handler
|
|
3
3
|
*/
|
|
4
4
|
import { registerAgent } from "../../agent/index.js";
|
|
5
|
+
import { agentRegistry } from "../../agent/composition/index.js";
|
|
5
6
|
import { filenameToId, trackAgentPath } from "../discovery-utils.js";
|
|
6
7
|
export const agentHandler = {
|
|
7
8
|
typeName: "agent",
|
|
8
9
|
validate: (item) => item !== null && typeof item === "object" && typeof item.generate === "function",
|
|
9
|
-
getId: (agent, file) =>
|
|
10
|
+
getId: (agent, file) => {
|
|
11
|
+
const configuredId = agent.config.id;
|
|
12
|
+
return typeof configuredId === "string" && configuredId.trim().length > 0
|
|
13
|
+
? configuredId
|
|
14
|
+
: filenameToId(file);
|
|
15
|
+
},
|
|
10
16
|
register: (id, agent, file) => {
|
|
17
|
+
if (agent.id !== id) {
|
|
18
|
+
agentRegistry.delete(agent.id);
|
|
19
|
+
}
|
|
11
20
|
registerAgent(id, agent);
|
|
12
21
|
trackAgentPath(id, file);
|
|
13
22
|
return agent;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { FileInfo } from "../adapters/base.js";
|
|
2
2
|
export declare const FRAMEWORK_ROOT: string;
|
|
3
|
+
export declare const FRAMEWORK_SRC_DIR: string;
|
|
3
4
|
export declare const FRAMEWORK_EMBEDDED_SRC_DIR: string;
|
|
4
5
|
export declare const DEFAULT_FRAMEWORK_SOURCE_EXTENSIONS: readonly [".tsx.src", ".ts.src", ".jsx.src", ".js.src", ".mdx.src", ".md.src", ".tsx", ".ts", ".jsx", ".js", ".mdx", ".md"];
|
|
5
6
|
export interface FrameworkSourceFileSystem {
|
|
@@ -15,6 +16,13 @@ export interface ResolveFrameworkSourcePathOptions {
|
|
|
15
16
|
extensions?: readonly string[];
|
|
16
17
|
includeIndexFallback?: boolean;
|
|
17
18
|
}
|
|
19
|
+
export interface ResolveRelativeFrameworkSourceImportOptions {
|
|
20
|
+
fileSystem?: FrameworkSourceFileSystem;
|
|
21
|
+
exists?: (path: string) => Promise<boolean>;
|
|
22
|
+
extensions?: readonly string[];
|
|
23
|
+
}
|
|
18
24
|
export declare function getFrameworkSourceLookupDirs(extraLookupDirs?: string[]): string[];
|
|
25
|
+
export declare function isFrameworkSourcePath(path: string): boolean;
|
|
19
26
|
export declare function resolveFrameworkSourcePath(relativePathWithoutExt: string, options?: ResolveFrameworkSourcePathOptions): Promise<FrameworkSourceLookupResult | null>;
|
|
27
|
+
export declare function resolveRelativeFrameworkSourceImport(specifier: string, fromSourcePath: string, options?: ResolveRelativeFrameworkSourceImportOptions): Promise<string | null>;
|
|
20
28
|
//# sourceMappingURL=framework-source-resolver.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"framework-source-resolver.d.ts","sourceRoot":"","sources":["../../../../src/src/platform/compat/framework-source-resolver.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAIpD,eAAO,MAAM,cAAc,QAA4C,CAAC;AACxE,eAAO,MAAM,0BAA0B,QAAgD,CAAC;AAExF,eAAO,MAAM,mCAAmC,6HAatC,CAAC;AAEX,MAAM,WAAW,yBAAyB;IACxC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;CACvC;AAED,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,iCAAiC;IAChD,UAAU,CAAC,EAAE,yBAAyB,CAAC;IACvC,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AAED,wBAAgB,4BAA4B,CAAC,eAAe,GAAE,MAAM,EAAO,GAAG,MAAM,EAAE,CAarF;AAED,wBAAsB,0BAA0B,CAC9C,sBAAsB,EAAE,MAAM,EAC9B,OAAO,GAAE,iCAAsC,GAC9C,OAAO,CAAC,2BAA2B,GAAG,IAAI,CAAC,CA+B7C"}
|
|
1
|
+
{"version":3,"file":"framework-source-resolver.d.ts","sourceRoot":"","sources":["../../../../src/src/platform/compat/framework-source-resolver.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAIpD,eAAO,MAAM,cAAc,QAA4C,CAAC;AACxE,eAAO,MAAM,iBAAiB,QAA8B,CAAC;AAC7D,eAAO,MAAM,0BAA0B,QAAgD,CAAC;AAExF,eAAO,MAAM,mCAAmC,6HAatC,CAAC;AAEX,MAAM,WAAW,yBAAyB;IACxC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;CACvC;AAED,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,iCAAiC;IAChD,UAAU,CAAC,EAAE,yBAAyB,CAAC;IACvC,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AAED,MAAM,WAAW,2CAA2C;IAC1D,UAAU,CAAC,EAAE,yBAAyB,CAAC;IACvC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5C,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAChC;AAED,wBAAgB,4BAA4B,CAAC,eAAe,GAAE,MAAM,EAAO,GAAG,MAAM,EAAE,CAarF;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAG3D;AAuCD,wBAAsB,0BAA0B,CAC9C,sBAAsB,EAAE,MAAM,EAC9B,OAAO,GAAE,iCAAsC,GAC9C,OAAO,CAAC,2BAA2B,GAAG,IAAI,CAAC,CA+B7C;AAED,wBAAsB,oCAAoC,CACxD,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,MAAM,EACtB,OAAO,GAAE,2CAAgD,GACxD,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA6CxB"}
|