dexto 1.6.14 → 1.6.16

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.
@@ -1,3 +1,3 @@
1
1
  export declare function isAgentYamlPath(filePath: string): boolean;
2
- export declare function discoverPrimaryWorkspaceAgent(workspaceRoot: string): string | null;
2
+ export declare function discoverPrimaryWorkspaceAgent(workspaceRoot: string): Promise<string | null>;
3
3
  //# sourceMappingURL=entry-agent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"entry-agent.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/deploy/entry-agent.ts"],"names":[],"mappings":"AAWA,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED,wBAAgB,6BAA6B,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAWlF"}
1
+ {"version":3,"file":"entry-agent.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/deploy/entry-agent.ts"],"names":[],"mappings":"AAiFA,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED,wBAAsB,6BAA6B,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAuBjG"}
@@ -1,4 +1,5 @@
1
- import { existsSync } from 'fs';
1
+ import { findProjectRegistryPath, getDefaultProjectRegistryEntry, readProjectRegistry, } from '@dexto/agent-management';
2
+ import { existsSync, promises as fs } from 'fs';
2
3
  import path from 'path';
3
4
  import { normalizeWorkspaceRelativePath } from './config.js';
4
5
  const PRIMARY_WORKSPACE_AGENT_PATHS = [
@@ -7,15 +8,62 @@ const PRIMARY_WORKSPACE_AGENT_PATHS = [
7
8
  path.join('agents', 'coding-agent.yml'),
8
9
  path.join('agents', 'coding-agent.yaml'),
9
10
  ];
11
+ async function loadWorkspaceProjectRegistry(workspaceRoot) {
12
+ const registryPath = await findProjectRegistryPath(workspaceRoot);
13
+ if (!registryPath) {
14
+ return null;
15
+ }
16
+ const registry = await readProjectRegistry(registryPath);
17
+ const defaultEntry = getDefaultProjectRegistryEntry(registry, registryPath);
18
+ if (!defaultEntry) {
19
+ return null;
20
+ }
21
+ return {
22
+ registryPath,
23
+ defaultConfigPath: await resolveWorkspaceRegistryConfigPath(workspaceRoot, registryPath, defaultEntry.configPath, defaultEntry.id),
24
+ };
25
+ }
26
+ async function resolveWorkspaceRegistryConfigPath(workspaceRoot, registryPath, configPath, agentId) {
27
+ const normalizedPath = normalizeWorkspaceRelativePath(configPath);
28
+ const absolutePath = path.resolve(path.dirname(registryPath), normalizedPath);
29
+ const relativeToWorkspace = path.relative(workspaceRoot, absolutePath);
30
+ if (relativeToWorkspace.startsWith('..') ||
31
+ path.isAbsolute(relativeToWorkspace) ||
32
+ relativeToWorkspace === '') {
33
+ throw new Error(`Agent '${agentId}' in ${registryPath} has invalid configPath '${configPath}': path must stay inside the workspace root.`);
34
+ }
35
+ let stat;
36
+ try {
37
+ stat = await fs.stat(absolutePath);
38
+ }
39
+ catch (error) {
40
+ if (error.code === 'ENOENT') {
41
+ throw new Error(`Agent '${agentId}' in ${registryPath} has invalid configPath '${configPath}': file does not exist.`);
42
+ }
43
+ throw error;
44
+ }
45
+ if (!stat.isFile()) {
46
+ throw new Error(`Agent '${agentId}' in ${registryPath} has invalid configPath '${configPath}': path must point to a file.`);
47
+ }
48
+ return absolutePath;
49
+ }
10
50
  export function isAgentYamlPath(filePath) {
11
51
  return /\.(ya?ml)$/i.test(filePath);
12
52
  }
13
- export function discoverPrimaryWorkspaceAgent(workspaceRoot) {
53
+ export async function discoverPrimaryWorkspaceAgent(workspaceRoot) {
54
+ const loadedRegistry = await loadWorkspaceProjectRegistry(workspaceRoot);
55
+ if (loadedRegistry) {
56
+ return normalizeWorkspaceRelativePath(path.relative(workspaceRoot, loadedRegistry.defaultConfigPath).replace(/\\/g, '/'));
57
+ }
14
58
  for (const relativePath of PRIMARY_WORKSPACE_AGENT_PATHS) {
15
59
  const absolutePath = path.join(workspaceRoot, relativePath);
16
60
  if (!existsSync(absolutePath)) {
17
61
  continue;
18
62
  }
63
+ const stat = await fs.stat(absolutePath);
64
+ if (!stat.isFile()) {
65
+ continue;
66
+ }
19
67
  return normalizeWorkspaceRelativePath(relativePath);
20
68
  }
21
69
  return null;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/deploy/index.ts"],"names":[],"mappings":"AA2BA,UAAU,kBAAkB;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;CACzB;AAwGD,wBAAsB,mBAAmB,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2ErF;AAED,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC,CAiD7D;AAED,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC,CAqB7D;AAED,wBAAsB,yBAAyB,IAAI,OAAO,CAAC,IAAI,CAAC,CAkB/D;AAED,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC,CA4B7D;AAED,wBAAsB,yBAAyB,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2C3F"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/deploy/index.ts"],"names":[],"mappings":"AA4BA,UAAU,kBAAkB;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;CACzB;AAyHD,wBAAsB,mBAAmB,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8ErF;AAED,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC,CAiD7D;AAED,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC,CAqB7D;AAED,wBAAsB,yBAAyB,IAAI,OAAO,CAAC,IAAI,CAAC,CAkB/D;AAED,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC,CA4B7D;AAED,wBAAsB,yBAAyB,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2C3F"}
@@ -1,10 +1,11 @@
1
1
  import { existsSync } from 'fs';
2
2
  import path from 'path';
3
3
  import * as p from '@clack/prompts';
4
- import { findDextoProjectRoot } from '@dexto/agent-management';
4
+ import { findDextoProjectRoot, loadAgentConfig } from '@dexto/agent-management';
5
5
  import chalk from 'chalk';
6
6
  import open from 'open';
7
7
  import { confirmOrExit } from '../../utils/prompt-helpers.js';
8
+ import { validateAgentConfig } from '../../utils/config-validation.js';
8
9
  import { createCloudDefaultDeployConfig, createWorkspaceDeployConfig, getDeployConfigPath, isWorkspaceDeployAgent, loadDeployConfig, resolveWorkspaceDeployAgentPath, saveDeployConfig, } from './config.js';
9
10
  import { createDeployClient } from './client.js';
10
11
  import { discoverPrimaryWorkspaceAgent, isAgentYamlPath } from './entry-agent.js';
@@ -86,12 +87,25 @@ function ensureWorkspaceAgentExists(workspaceRoot, config) {
86
87
  }
87
88
  return entryAgentPath;
88
89
  }
90
+ async function validateWorkspaceAgent(entryAgentPath, workspaceAgentPath) {
91
+ const config = await loadAgentConfig(entryAgentPath);
92
+ const validation = await validateAgentConfig(config, false, {
93
+ agentPath: workspaceAgentPath,
94
+ credentialPolicy: 'error',
95
+ });
96
+ if (!validation.success) {
97
+ throw new Error(`Workspace agent validation failed for ${workspaceAgentPath}. Fix the issues above before deploying.`);
98
+ }
99
+ }
89
100
  export async function handleDeployCommand(options) {
90
101
  void options;
91
102
  p.intro(chalk.inverse('Deploy Workspace'));
92
103
  const workspaceRoot = resolveWorkspaceRoot();
93
104
  const deployConfig = await resolveDeployConfig(workspaceRoot);
94
- ensureWorkspaceAgentExists(workspaceRoot, deployConfig);
105
+ const entryAgentPath = ensureWorkspaceAgentExists(workspaceRoot, deployConfig);
106
+ if (entryAgentPath && isWorkspaceDeployAgent(deployConfig.agent)) {
107
+ await validateWorkspaceAgent(entryAgentPath, deployConfig.agent.path);
108
+ }
95
109
  const deployLink = await loadWorkspaceDeployLink(workspaceRoot);
96
110
  const spinner = p.spinner();
97
111
  const client = createDeployClient();
@@ -1,5 +1,6 @@
1
1
  export { createDextoProject, type CreateAppOptions } from './create-app.js';
2
2
  export { createImage } from './create-image.js';
3
+ export { handleInitCommand, handleInitAgentCommand, handleInitPrimaryCommand, handleInitSkillCommand, } from './init.js';
3
4
  export { getUserInputToInitDextoApp, initDexto, postInitDexto } from './init-app.js';
4
5
  export { handleSetupCommand, type CLISetupOptions, type CLISetupOptionsInput } from './setup.js';
5
6
  export { handleInstallCommand, type InstallCommandOptions } from './agents/install.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAE5E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,0BAA0B,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAErF,OAAO,EAAE,kBAAkB,EAAE,KAAK,eAAe,EAAE,KAAK,oBAAoB,EAAE,MAAM,YAAY,CAAC;AACjG,OAAO,EAAE,oBAAoB,EAAE,KAAK,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AACvF,OAAO,EAAE,sBAAsB,EAAE,KAAK,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAC7F,OAAO,EAAE,oBAAoB,EAAE,KAAK,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAChF,OAAO,EAAE,yBAAyB,EAAE,KAAK,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AAC5F,OAAO,EACH,uBAAuB,EACvB,KAAK,wBAAwB,EAC7B,KAAK,6BAA6B,GACrC,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,kBAAkB,EAAE,KAAK,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAC1E,OAAO,EACH,uBAAuB,EACvB,mBAAmB,EACnB,KAAK,wBAAwB,GAChC,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACH,yBAAyB,EACzB,sBAAsB,EACtB,qBAAqB,EACrB,wBAAwB,EACxB,wBAAwB,EACxB,KAAK,0BAA0B,EAC/B,KAAK,+BAA+B,GACvC,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAG/F,OAAO,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAGhE,OAAO,EACH,uBAAuB,EACvB,0BAA0B,EAC1B,4BAA4B,EAC5B,2BAA2B,EAE3B,2BAA2B,EAC3B,8BAA8B,EAC9B,8BAA8B,EAC9B,4BAA4B,EAC5B,+BAA+B,EAC/B,+BAA+B,EAC/B,KAAK,wBAAwB,EAC7B,KAAK,6BAA6B,EAClC,KAAK,2BAA2B,EAChC,KAAK,gCAAgC,EACrC,KAAK,6BAA6B,EAClC,KAAK,kCAAkC,EACvC,KAAK,4BAA4B,EACjC,KAAK,iCAAiC,EAEtC,KAAK,iCAAiC,EACtC,KAAK,oCAAoC,EACzC,KAAK,oCAAoC,EACzC,KAAK,kCAAkC,EACvC,KAAK,qCAAqC,GAC7C,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAE5E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EACH,iBAAiB,EACjB,sBAAsB,EACtB,wBAAwB,EACxB,sBAAsB,GACzB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,0BAA0B,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAErF,OAAO,EAAE,kBAAkB,EAAE,KAAK,eAAe,EAAE,KAAK,oBAAoB,EAAE,MAAM,YAAY,CAAC;AACjG,OAAO,EAAE,oBAAoB,EAAE,KAAK,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AACvF,OAAO,EAAE,sBAAsB,EAAE,KAAK,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAC7F,OAAO,EAAE,oBAAoB,EAAE,KAAK,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAChF,OAAO,EAAE,yBAAyB,EAAE,KAAK,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AAC5F,OAAO,EACH,uBAAuB,EACvB,KAAK,wBAAwB,EAC7B,KAAK,6BAA6B,GACrC,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,kBAAkB,EAAE,KAAK,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAC1E,OAAO,EACH,uBAAuB,EACvB,mBAAmB,EACnB,KAAK,wBAAwB,GAChC,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACH,yBAAyB,EACzB,sBAAsB,EACtB,qBAAqB,EACrB,wBAAwB,EACxB,wBAAwB,EACxB,KAAK,0BAA0B,EAC/B,KAAK,+BAA+B,GACvC,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAG/F,OAAO,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAGhE,OAAO,EACH,uBAAuB,EACvB,0BAA0B,EAC1B,4BAA4B,EAC5B,2BAA2B,EAE3B,2BAA2B,EAC3B,8BAA8B,EAC9B,8BAA8B,EAC9B,4BAA4B,EAC5B,+BAA+B,EAC/B,+BAA+B,EAC/B,KAAK,wBAAwB,EAC7B,KAAK,6BAA6B,EAClC,KAAK,2BAA2B,EAChC,KAAK,gCAAgC,EACrC,KAAK,6BAA6B,EAClC,KAAK,kCAAkC,EACvC,KAAK,4BAA4B,EACjC,KAAK,iCAAiC,EAEtC,KAAK,iCAAiC,EACtC,KAAK,oCAAoC,EACzC,KAAK,oCAAoC,EACzC,KAAK,kCAAkC,EACvC,KAAK,qCAAqC,GAC7C,MAAM,aAAa,CAAC"}
@@ -2,6 +2,7 @@
2
2
  // Project setup commands
3
3
  export { createDextoProject } from './create-app.js';
4
4
  export { createImage } from './create-image.js';
5
+ export { handleInitCommand, handleInitAgentCommand, handleInitPrimaryCommand, handleInitSkillCommand, } from './init.js';
5
6
  export { getUserInputToInitDextoApp, initDexto, postInitDexto } from './init-app.js';
6
7
  export { handleSetupCommand } from './setup.js';
7
8
  export { handleInstallCommand } from './agents/install.js';
@@ -0,0 +1,102 @@
1
+ import type { ToolFactoryEntry } from '@dexto/agent-config';
2
+ import type { Command } from 'commander';
3
+ type ScaffoldEntryStatus = 'created' | 'existing';
4
+ type RegistryUpdateStatus = 'created' | 'existing' | 'updated';
5
+ export interface WorkspaceScaffoldResult {
6
+ root: string;
7
+ agentsFile: {
8
+ path: string;
9
+ status: ScaffoldEntryStatus;
10
+ };
11
+ directories: Array<{
12
+ path: string;
13
+ status: ScaffoldEntryStatus;
14
+ }>;
15
+ }
16
+ export interface WorkspaceAgentScaffoldResult {
17
+ workspace: WorkspaceScaffoldResult;
18
+ registry: {
19
+ path: string;
20
+ status: RegistryUpdateStatus;
21
+ };
22
+ agentConfig: {
23
+ path: string;
24
+ status: ScaffoldEntryStatus;
25
+ };
26
+ primaryAgent: {
27
+ id: string | null;
28
+ status: 'set' | 'unchanged';
29
+ };
30
+ }
31
+ export interface WorkspaceSkillScaffoldResult {
32
+ workspace: WorkspaceScaffoldResult;
33
+ skillFile: {
34
+ path: string;
35
+ status: ScaffoldEntryStatus;
36
+ };
37
+ }
38
+ export interface WorkspacePrimaryAgentResult {
39
+ workspace: WorkspaceScaffoldResult;
40
+ registry: {
41
+ path: string;
42
+ status: Exclude<RegistryUpdateStatus, 'created'>;
43
+ };
44
+ primaryAgent: {
45
+ id: string;
46
+ status: 'set' | 'existing';
47
+ };
48
+ }
49
+ export interface WorkspaceSubagentLinkResult {
50
+ workspace: WorkspaceScaffoldResult;
51
+ registry: {
52
+ path: string;
53
+ status: 'updated' | 'existing';
54
+ };
55
+ subagentId: string;
56
+ parentAgentId: string | null;
57
+ status: 'set' | 'existing' | 'no-primary';
58
+ }
59
+ export interface WorkspaceStatusResult {
60
+ workspaceRoot: string;
61
+ agentsFilePresent: boolean;
62
+ agentsDirectoryPresent: boolean;
63
+ skillsDirectoryPresent: boolean;
64
+ registryPath: string | null;
65
+ primaryAgentId: string | null;
66
+ allowGlobalAgents: boolean | null;
67
+ agents: Array<{
68
+ id: string;
69
+ isPrimary: boolean;
70
+ isSubagent: boolean;
71
+ parentAgentId: string | null;
72
+ }>;
73
+ skills: string[];
74
+ deployConfigPath: string | null;
75
+ effectiveDeploySummary: string;
76
+ }
77
+ export interface InitCommandRegisterContext {
78
+ program: Command;
79
+ }
80
+ type InitAgentCommandOptions = {
81
+ subagent?: boolean;
82
+ primary?: boolean;
83
+ displayName?: string;
84
+ description?: string;
85
+ systemPrompt?: string;
86
+ greeting?: string;
87
+ tools?: ToolFactoryEntry[];
88
+ };
89
+ export declare function createWorkspaceScaffold(workspaceRoot?: string): Promise<WorkspaceScaffoldResult>;
90
+ export declare function createWorkspaceAgentScaffold(agentIdInput: string, options?: InitAgentCommandOptions, workspaceRoot?: string): Promise<WorkspaceAgentScaffoldResult>;
91
+ export declare function createWorkspaceSkillScaffold(skillIdInput: string, workspaceRoot?: string): Promise<WorkspaceSkillScaffoldResult>;
92
+ export declare function setWorkspacePrimaryAgent(agentIdInput: string, workspaceRoot?: string): Promise<WorkspacePrimaryAgentResult>;
93
+ export declare function linkWorkspaceSubagentToPrimaryAgent(subagentIdInput: string, workspaceRoot?: string): Promise<WorkspaceSubagentLinkResult>;
94
+ export declare function inspectWorkspaceStatus(workspaceRoot?: string): Promise<WorkspaceStatusResult>;
95
+ export declare function handleInitCommand(workspaceRoot?: string): Promise<void>;
96
+ export declare function handleInitAgentCommand(agentIdInput: string | undefined, options?: InitAgentCommandOptions, workspaceRoot?: string): Promise<void>;
97
+ export declare function handleInitSkillCommand(skillId: string, workspaceRoot?: string): Promise<void>;
98
+ export declare function handleInitPrimaryCommand(agentIdInput: string | undefined, workspaceRoot?: string): Promise<void>;
99
+ export declare function handleInitStatusCommand(workspaceRoot?: string): Promise<void>;
100
+ export declare function registerInitCommand({ program }: InitCommandRegisterContext): void;
101
+ export {};
102
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"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"}